Fehler beim senden eines zfs snapshorts

bsd4me

Well-Known Member
Hallo Leute,

ich habe mir vor Jahren ein Script geschrieben, das snapshots anlegt und diese dann per netcat übertrage. Das lief reibunslos. Leider gab es ein Problem. Da hatte ich den neuesten, lokalen snapshot gelöscht/destroyed in der Hoffnung, dass dann alles wieder okay ist, weil dann zfs list -t snapshot auf beiden Rechnern wieder gleich ist. Es läuft kein anderer zfs replikations prozess. Aber ich bekomme wieder foldende Ausgabe. Ich hoffe sie ist einigermassen "selbsterklärend"...

[2021-03-21-00-03] === Start a new run ===
[2021-03-21-00-03] ==> Mirror zroot/bioinf to 192.168.2.3:zroot/bioinf
[2021-03-21-00-03] Local timestamps 20210319000304 20210319120304
[2021-03-21-00-03] Remote timestamps 20210319000304 20210319120304
[2021-03-21-00-03] --> Create snapshot zroot/bioinf@20210321000301
[2021-03-21-00-03] --> Incremental sync zroot/bioinf@20210321000301
receiving incremental stream of zroot/bioinf@20210321000301 into zroot/bioinf@20210321000301
warning: cannot send 'zroot/bioinf@20210321000301': signal received
[2021-03-21-03-07] Local timestamps 20210319000304 20210319120304 20210321000301
[2021-03-21-03-07] Remote timestamps 20210319000304 20210319120304
[2021-03-21-03-07] [E] Mirror was not ok - invalid snapshots!
[2021-03-21-03-07] ==> DONE
cannot receive incremental stream: checksum mismatch or incomplete stream

Hat jemand eine Idee, was ich tun muss, damit das wieder geht? Das wäre ganz klasse!

Viele Grüße, Norbert
 
Vielen Dank - ich teste es gerade - und es läuft nun seit ein paar Minuten. Auf diese geniale und einfache Idee bin ich leider nicht gekommen :)
VG Norbert
 
Leider ist es nach 3 Stunden doch wieder abgebrochen... und ein zfs revc -F habe ich auch drin...
 
Vielelicht hilft es ja, den zentralen Teil des Scriptes zu schicken:

send () {
local RHOST=$1
local PORT=$2
local RDATASET=$3
local NEWSNAP=$4
local LASTSNAP=$5

# Create new snapshot
log "--> Create snapshot $NEWSNAP"
zfs snapshot $NEWSNAP
[ $? != 0 ] && log "[E] Cannot create $NEWSNAP!" && return

# Get different send paramters for full or incremental mirror
local PARAMS=""
if [ "$LASTSNAP" = "" ]; then
log "--> Full sync $NEWSNAP"
PARAMS="$NEWSNAP"
else
log "--> Incremental sync $NEWSNAP"
PARAMS="-i $LASTSNAP $NEWSNAP"
fi

# Get timestamp from the new snapshot
local TIMESTAMP=echo $NEWSNAP | cut -d"@" -f2

# Start receiving process
ssh -p $PORT $RHOST "$NETCAT -l -w 30 $NETCAT_PORT | zfs recv -vF $RDATASET@$TIMESTAMP" 2>&1 &
[ $? != 0 ] && log "[E] Cannot receive new snapshot!" && zfs destroy $NEWSNAP && return

sleep 1

# Send data
zfs send $PARAMS | $NETCAT -w 30 $RHOST $NETCAT_PORT
[ $? != 0 ] && log "[E] Cannot send new snapshot!" && zfs destroy $NEWSNAP && return
}

das funktioniert seit vielen Monaten einwandfrei... aber evtl. habe ich ja auch Toamten auf den Augen...

Danke Euch!!! VG Norbert
 
Danke Dir! Ich weiss, es ist Sonntag, und man sollte sich ja einmal Pause gönnen... Aber auf dem "Source"-Sever liegen etwa 50TB an Projektdaten. Und gerade jetzt sollen für eine Publikation Daten kreiert werden. Diese hätte ich gerne auch als Backup :) Das gesammt "Datenvolumen" pro Server besteht aus 8 x 16TB Disks. Es ist ja (noch) nichts kritisch - aber ich bin bei sowas immer nervös... Was die Rechner angeht: keine Auffälligkeiten. Z.B. zpool ist ohne Fehler (bei beiden)...
 
Deswegen der Vorschlag, den gesamten Vorgang manuell durchzuführen, um die Komplexität/etwaiger Bug vom Script zu umgehen. ;)
 
Ich hatte gestern noch einen "Wartezeitparameter" für netcat erhöht - von 30 auf 120 sekunden. Das scheint es gewesen zu sein, der Backuplauf lief nun durch! Danke an alle mit den Anmerkugen :) VG Norbert
 
Zurück
Oben