Hi seller,
Das sind ja recht beeindruckende Ergebnisse.
Ja, der erheblich schnellere Scrub-Lauf dürfte sowohl von der lz4-Komprimierung, als auch von der Defragmentierung her kommen. Durch die Komprimierung müssen ja weniger Daten durch den Controller geschleust werden, und die Dekomprimierung und Überprüfung erledigt der Prozessor mit links.
Richtig brauchbar werden die Ergebnisse aber erst, wenn du die Daten jetzt vom neuen wieder auf das alte NAS spielen würdest, und dann dort den Scrub-Lauf machst.
Aber da stellen sich gleich die nächsten Fragen: Wie wirst du mit dem alten NAS weiter verfahren?
Soll das alte NAS auf der alten N4F-Revision bleiben?
Soll das alte NAS durch das neue NAS getauscht werden?
Soll das alte NAS durch einen weiteren Gen8-Server ausgewechselt werden? (Meine Empfehlung)
Welches der beiden NAS hat jetzt den aktuelleren Datenbestand? Also mit welchem NAS hast du in der Zwischenzeit weiter gearbeitet?
In welchen Abständen soll später ein Backup vom Haupt-NAS auf das Backup-NAS gemacht werden (z.B. täglich oder wöchentlich)?
Soll das Backup automatisch stattfinden (wovon ich eher abraten würde)?
Möchtest du zukünftig Auto-Snapshots nutzen? (Meine Empfehlung)
Bonus-Frage: Ist geplant, daß sich das Backup-NAS an einem völlig anderen Ort befinden soll (Arbeit/zu Hause)?
Diese komischen Fragen stelle ich auch, weil ich davon ausgehe, daß wir die Daten nochmal komplett transferieren werden, um den Defragmentierungseffekt mitzunehmen.
Je nachdem, wie deine Antworten ausfallen, gäbe es nämlich ein paar zusätzliche Möglichkeiten.
Hier erst mal die Vorgehensweise nach einem erfolgreichen Erstabgleich, unter der Voraussetzung, daß beide NAS mit einer gleichen N4F-Version ausgestattet sind (du erkennst das Problem?):
Nach dem Erstabgleich hast du auf beiden NAS (ich nenne sie ab jetzt Haupt- und Backup-NAS) jeweils einen Pool mit einem rekursiven Snapshot (z.B. NAS@2016-12-27).
Das kannst du dir mit dem Befehl
jeweils anzeigen lassen.
Dann erstellst du auf dem Haupt-NAS einen weiteren rekursiven Snapshot, und läßt dir die Snapshots anzeigen:
Code: Select all
zfs snapshot -r NAS@2017-01-03
zfs list -t snapshot -d 1
Jetzt kannst du die Übertragung starten:
Code: Select all
zfs send -RI NAS@2016-12-27 NAS@2017-01-03 | ssh $IP-Backup "zfs receive -vF NAS"
Für $IP-Backup mußt du natürlich die IP-Adresse deines Backup-NAS einsetzen.
Das System fragt dich dann, ob du dich wirklich mit dem Backup-NAS verbinden möchtest (yes eingeben), und danach nach dem Paßwort.
Danach startet die Übertragung.
In diesem Fall benutzen wir für die Übertragung nicht netcat (nc), welches für den Erstabgleich zum Einsatz kam, sondern das ssh -Protokoll.
Der Befehl ähnelt dem, was der Andreas vor einigen Postings genannt hatte, der Unterschied ist jedoch, daß hier der ganze Pool rekursiv mit allen Datasets abgeglichen wird.
Warum nehmen wir jetzt ssh, und nicht netcat?
Weil es jetzt nicht mehr so sehr auf die Geschwindigkeit ankommt, da hier vergleichsweise wenige Daten übertragen werden. ssh ist durch die Verschlüsselung zwar sehr viel langsamer, aber bei den inkrementellen Abgleichen kommt es nicht so sehr darauf an, ob der Vorgang nun z.B. in drei (nc) oder in sieben (ssh) Minuten durchgeführt wird.
Der Vorteil von ssh wäre: etwas weniger Tipperei, kein zweites Terminal-Fenster nötig, und es ließe sich automatisieren (wovor ich allerdings abrate).
Und wenn es doch mit netcat gemacht werden soll?
Rekursiven Snapshot erstellen.
Dann auf dem Backup-NAS:
Dann auf dem Haupt-NAS:
Code: Select all
zfs send -RI NAS@2016-12-27 NAS@2017-01-03 | nc -w 10 $IP-Backup-NAS 9000
Bringt das gleiche Ergebnis.
Wenn der inkrementelle Abgleich erfolgreich durchgeführt wurde, befinden sich auf beiden NAS
jeweils diese rekursiven Snapshots:
NAS@2016-12-27
NAS@2017-01-03
Rekursiv bedeutet, daß sich auch die entsprechenden Snapshots für die einzelnen Datasets dort befinden (verkürzte Darstellung):
Code: Select all
zfs list -t snapshot
NAS@2016-12-27
NAS@2017-01-03
NAS/Big-Disk@2016-12-27
NAS/Big-Disk@2017-01-03
NAS/N4F-PLATZ-CHAYA@2016-12-27
NAS/N4F-PLATZ-CHAYA@2017-01-03
NAS/N4F-PLATZ-SIGGI@2016-12-27
NAS/N4F-PLATZ-SIGGI@2017-01-03
NAS/N4F_Platz_KLAUSI@2016-12-27
NAS/N4F_Platz_KLAUSI@2017-01-03
Jetzt
könnte man auf dem Haupt-NAS den alten rekursiven Snapshot löschen (muß man aber nicht):
Damit sind die beiden Pools auf dem Haupt-und den Backup-NAS über den gemeinsamen rekursiven Snapshot NAS@2017-01-03 quasi miteinander "verbunden".
Diese Verbindung ist wichtig. Die beiden NAS können durchaus über mehrere gemeinsame Snapshots "verbunden" sein (wenn man die alten nicht löscht), aber wenn man z.B. auf dem Haupt-NAS alle gemeinsamen Snapshots von NAS/N4F_Platz_KLAUSI löscht, dann klappt der inkrementelle Abgleich nicht mehr, und man muß einen erneuten Komplettabgleich des ganzen NAS machen.
Auf dem Backup-NAS brauchst du dich übrigens nicht um die Snapshots kümmern, denn das wird bereits durch den Abgleich erledigt.
So, jetzt hol dir mal eine schöne Tasse Kaffee, denn es geht weiter im Text
Warum empfehle ich, das Backup nicht automatisiert laufen zu lassen?:
Weil das Backup so wichtig ist.
Was ist, wenn du dir z.B. versehentlich ein Dataset auf dem Haupt-NAS löschst? Während du dann gerade dabei bist, dieses Dataset vom Backup-NAS zurück zu holen, springt auf einmal die automatische Backup-Routine an (weil du im Streß vergessen hast die Routine abzuschalten), und löscht dir dieses Dataset auch auf dem Backup-NAS. Das wäre dann maximal doof.
Ein anderer Grund: permanentes Training.
Wenn du genau aufgepasst hast (was bleibt dir auch anderes übrig

) wirst du bemerkt haben, daß die ganze Choose immer so funktioniert:
zfs snapshot -r Snapshot-Name
zfs send -R Snapshot-Name #für den Erstabgleich (zzgl. der Übertragungsparameter (ssh/nc))
zfs send -RI Snapshot1 Snapshot2 #für die inkrementellen Abgleiche (zzgl. der Übertragungsparameter (ssh/nc))
Und wenn du noch genauer hinschaust, wirst du erkennen, daß du dabei nicht nur permanent ein Backup (vom Haupt-NAS), sondern gleichzeitig ein Restore auf das Backup-NAS durchführst.
Das sind eigentlich keine getrennten Vorgänge. Du wirst immer die gleichen Tools benutzen. Sollten dir also unglücklicherweise mal das Haupt-NAS abrauchen, dann brauchst du nicht lange herumraten, wie du die Daten wieder vom Backup-NAS auf das Haupt-NAS bekommst. Es werden die gleichen Befehle sein, die du ständig benutzt (nur vom anderen Rechner aus, und mit anderen IP-Adressen).
Glaub mir, das ist ein riesiger Vorteil, und in einer Produktivumgebung senkt das extrem den Stresslevel.
Was es zu beachten gilt:
Die beschriebenen Schritte ermöglichen es dir, sehr schnell Backups durchzuführen. Sehr viel schneller und komfortabler, als es z.B. mit rsync möglich wäre.
Es gibt aber eine Sache, bei der du aufpassen mußt: Wenn du auf dem Haupt-NAS ein zusätzliches Dataset anlegst.
In diesem Fall
mußt du direkt nach an dem Anlegen, und bevor du Daten dort drauf spielst, einen rekursiven Snapshot auf dem Haupt-NAS erzeugen.
Das ist sehr wichtig! Sonst klappt das mit dem inkrementellen Abgleich später nicht so richtig. Das Blöde daran: es gibt keine Fehlermeldung, welche dich darauf hinweist.
Generell gilt: Wenn du dir unsicher bist: mach einen kompletten Neuabgleich vom Haupt-NAS auf das Backup-NAS (Pool löschen, neu einrichten , Datenerstabgleich)
Noch ein Goodie oben drauf: Du kannst auf dem Haupt-NAS tägliche Auto-Snapshots einrichten. Die Voraussetzung dafür ist, daß das Haupt-NAS zu bestimmten Zeiten in Betrieb ist (i.d.R. um 20 Uhr).
Du hättest dann tägliche Snapshots, auf die du zugreifen könntest, falls du mal Daten wieder herstellen möchtest (ich praktiziere das so).
Den Abgleich auf mein Backup-NAS muß ich dann nicht täglich machen, sondern nur alle paar Wochen, oder nach Bedarf. Dabei kann ich auch steuern, ob ich die ganzen Zwischenstände mit übertragen möchte, oder nicht:
zfs send -RI # mit Zwischenständen
zfs send -Ri # ohne Zwischenstände
Welches für dich die bessere Methode ist, mußt du natürlich selbst entscheiden.
Auf ein weiteres Killer-Feature möchte ich an dieser Stelle noch ergänzend hinweisen:
Man kann den Datenabgleich zwischen den beiden NAS nicht nur über das Netz (per netcat oder ssh) durchführen, sondern auch mit einer Transport-Festplatte.
Dazu müßte man allerdings eine weitere Festplatte per SATA/eSATA anschließen können, was du beim Gen8 und deiner Ausbaustufe nur mit einer zusätzlichen PCI-Karte durchführen könntest. Der Vorteil dabei wäre, daß du auch große Datenmengen zwischen zwei örtlich getrennten NAS transportieren könntest, ohne eine schnelle Internet-Verbindung zu haben.
Eine weitere Alternative wäre der Betrieb als HAST, wobei Haupt-NAS und Backup-NAS direkt im Failover-Betrieb miteinander gekoppelt sind, aber das würde dem Prinzip eines Backup-NAS widersprechen, und sei deshalb nur am Rande erwähnt.
Grüße
Princo