Ich habe einen gespiegelten ZFS-Pool mit insgesamt vier Laufwerken. Zwei der Laufwerke sind zum Rotieren von Offsite-Backups vorgesehen. Meine Erwartung war, dass ich nach dem ersten Resilvering detach
und später attach
eine Festplatte nur einen inkrementellen Resilver ausführen lassen konnte - beim Testen scheint es jedoch einen vollständigen Resilver auszuführen, unabhängig davon, ob die angeschlossene Festplatte bereits fast den gesamten Pool enthält oder nicht Inhalt.
Würde die Verwendung eines offline
/ online
-Ansatzes zu dem gewünschten Ergebnis führen, dass nur die Festplatte aktualisiert wird, anstatt sie vollständig neu zu erstellen? Oder damit diese Arbeit wie erwartet funktioniert, muss ich etwas völlig anderes tun - beispielsweise jede Sicherungsdiskette als 1-Disk-Pool verwenden und send
die neuesten Snapshots darauf erstellen, wann immer sie auf den neuesten Stand gebracht werden muss?
zfs send
Befehl vollständige oder inkrementelle Sicherungsströme verwenden, die auf den Sicherungsdatenträgern gespeichert sind, oderzfs recv
eine doppelte Festplatte erstellen. Ich würde wärmstens empfehlen, eine Art Software zu verwenden, um diesen Prozess zu verwalten.Antworten:
Gehen Sie nicht den Weg, das ZFS-Array zu beschädigen, um Festplatten außerhalb des Standorts zu "drehen". Wie Sie gesehen haben, ist die Wiederherstellungszeit hoch und der Resilvering-Prozess liest / überprüft die verwendete Größe des Datasets.
Wenn Sie die Möglichkeit haben, sind Schnappschüsse und das Senden von Daten an ein Remote-System ein sauberer, nicht aufdringlicher Ansatz. Ich nehme an, Sie könnten den Prozess durchlaufen, einen dedizierten Single-Disk-Pool zu haben, darauf zu kopieren und Zpool zu exportieren / importieren ... aber es ist nicht sehr elegant.
quelle
Nach weiteren Experimenten habe ich eine faire Lösung gefunden, die jedoch einen erheblichen Kompromiss mit sich bringt. Festplatten, die entfernt
offline
, aber nicht getrennt wurden, können später nur mit einer inkrementellen Auslöseoperation wieder online geschaltet werden (" Wenn ein Gerät online geschaltet wird, werden alle Daten, die in den Pool geschrieben wurden, mit dem neu verfügbaren Gerät neu synchronisiert. "). In meinen Tests verkürzt sich die Auslösezeit für einen 3-Platten-Spiegel von 28 Stunden auf etwas mehr als 30 Minuten mit etwa 40 GB Datendelta.Der Nachteil ist, dass jeder Pool mit einer Offline-Festplatte als beeinträchtigt gekennzeichnet wird. Vorausgesetzt, es gibt noch mindestens zwei Online-Festplatten (in einem gespiegelten Pool), ist dies effektiv eine Warnung - Integrität und Redundanz bleiben erhalten.
Wie andere bereits erwähnt haben, ist dieser Gesamtansatz alles andere als ideal - das Senden von Snapshots an einen Remote-Pool wäre weitaus geeigneter, in meinem Fall jedoch nicht möglich.
Zusammenfassend lässt sich sagen, dass Sie Folgendes empfehlen würden, wenn Sie eine Festplatte aus einem Pool entfernen und später wieder hinzufügen müssen, ohne dass eine vollständige Ausfallsicherung erforderlich ist:
zpool offline pool disk
hdparm -Y /dev/thedisk
zpool online pool disk
Und da dies noch nicht getestet wurde, besteht das Risiko, dass der Delta-Resilvering-Vorgang nicht genau ist. Im "Live" -Pool und / oder auf den Offline-Festplatten können Probleme auftreten. Ich werde aktualisieren, wenn mir das passiert, aber vorerst mit diesem Ansatz experimentieren.
quelle
Update am 15. Oktober 2015: Heute habe ich den
zpool split
Befehl entdeckt, der einen neuen Pool (mit einem neuen Namen) von einem vorhandenen Pool trennt.split
ist viel sauberer alsoffline
unddetach
, da beide Pools dann auf demselben System existieren (und separat gesäubert werden können). Der neue Pool kann auch sauber (und ordnungsgemäß) sein,export[ed]
bevor er vom System getrennt wird.(Mein ursprünglicher Beitrag folgt unten.)
Warnung! Verschiedene Kommentare auf dieser Seite deuten darauf hin, dass
zpool detach
ein Laufwerk möglich ist (oder sein könnte) , und schließen Sie das Laufwerk dann wieder an und greifen Sie auf die darin enthaltenen Daten zu.Gemäß diesem Thread (und meinem eigenen Experiment) werden jedoch
zpool detach
die "Pool-Informationen" vom getrennten Laufwerk entfernt. Mit anderen Worten, adetach
ist wie eine schnelle Neuformatierung des Laufwerks . Nachdem sichdetach
möglicherweise noch viele Daten auf dem Laufwerk befinden, ist es praktisch unmöglich , das Laufwerk erneut bereitzustellen und die Daten als verwendbares Dateisystem anzuzeigen.Folglich scheint es mir
detach
destruktiver alsdestroy
, da ich glaubezpool import
, zerstörte Pools wiederherstellen zu können!A
detach
ist nicht eineumount
, noch einezpool export
, noch einezpool offline
.Wenn ich in meinen Experimenten zuerst
zpool offline
ein Gerät und dannzpool detach
dasselbe Gerät verwende, vergisst der Rest des Pools, dass das Gerät jemals existiert hat. Da das Gerät selbst jedochoffline[d]
zuvor wardetach[ed]
, wird das Gerät selbst niemals über das Gerät informiertdetach
. Daher verfügt das Gerät selbst weiterhin über seine Poolinformationen und kann auf ein anderes System und dannimport[ed]
(in einem herabgesetzten Zustand) verschoben werden .Zum zusätzlichen Schutz
detach
können Sie das Gerät sogar nach demoffline
Befehl, jedoch noch vor der Ausgabe desdetach
Befehls, physisch vom Stromnetz trennen .Ich hoffe, dass ich dies
offline
dann verwendendetach
und dannimport
verarbeiten kann, um meinen Pool zu sichern. Wie beim Originalplakat plane ich die Verwendung von vier Laufwerken, zwei in einem konstanten Spiegel und zwei für monatliche, rotierende Offsite- (und Offline-) Backups. Ich werde jedes Backup überprüfen, indem ich es auf einem separaten System importiere und bereinige, bevor ich es außerhalb des Standorts transportiere. Im Gegensatz zum Originalposter macht es mir nichts aus, das gesamte Sicherungslaufwerk jeden Monat neu zu schreiben. Tatsächlich bevorzuge ich komplette Umschreibungen, um frische Teile zu erhalten.quelle
Haben Sie auf demselben Computer versucht, einen neuen Pool mit den beiden Laufwerken in einem Spiegel zu erstellen? Erstellen Sie als Nächstes einen Snapshot in Ihrem Arbeitspool und senden Sie diesen Snapshot an den neuen Pool. Wiederholen Sie diesen Vorgang. Der nächste Snapshot-Sendevorgang erfolgt inkrementell. Dies ist nicht dasselbe wie beim "Senden von Daten an ein Remote-System", da dies ein Pool innerhalb desselben Systems / Servers / Computers ist. Mit diesem Setup können Sie weiterhin Zpool Split / Offline / Trennen / Anhängen anwenden, dies jedoch nur im zweiten (Kopier-) Pool und nicht im Quellpool.
quelle