unvollständige rekursive Snapshots auf zfs

7

Ich habe eine Reihe neuer Festplatten auf einem unserer Systeme installiert und wollte einen vorhandenen Pool auf diese übertragen. Ich habe also Folgendes getan:

zfs snapshot -r old-pool@replicaton
zfs send -R old-pool@replication | mbuffer -m 1G  | zfs receive -F -d  new-pool

Aber nach der Hälfte der Operation erhielt ich eine Warnung von zfs sendund beschwerte mich , dass der Schnappschuss old-pool/some/fileset@replicationnicht existieren würde ...

Als ich nachforschte, stellte ich fest, dass zfs snapshot -res versäumt hatte, einen Schnappschuss zu erstellen old-pool/some/fileset. Also rannte ich

zfs list -r -o name old-pool | \
xargs -n1 perl -e 'system "zfs","list",$ARGV[0]."\@replication"'

und fand heraus, dass es ungefähr 10% der Dateigruppen gab, denen dieser Schnappschuss fehlte ...

Ich habe dann den fehlenden Schnappschuss einzeln erstellt und es hat gut funktioniert.

Ich habe das Experiment seitdem wiederholt und das gleiche Problem wiedergefunden ...

Irgendeine Idee, wie das sein kann?

Dies geschieht auf omnios r151010

Tobi Oetiker
quelle

Antworten:

7

OH MEIN! Wie peinlich ... ich fand den Grund ...

Der Pool (alter Pool), den ich zu replizieren versuche, ist selbst ein Sicherungsspeicher, über den regelmäßige Updates empfangen werden zfs receive -F

Während mein rekursiver Snapshot anfangs vollständig war, wurde er "bereinigt", da neue Snapshots in einzelne Dateigruppen integriert wurden.

Nachdem ich das Sicherungsskript gestoppt hatte, an das Snapshots gesendet wurden old-pool, funktionierte die Welt wieder wie erwartet.

Tobi Oetiker
quelle