Page 1 of 1

Frage zu Umzug auf neuen Server

Posted: 22 Sep 2016 15:11
by devil77
Hallo, demnächst steht der Umzug auf einen neuen Server an. Bin mir nur etwas unsicher wie es am besten ablaufen sollte.
Meine Idee / Reihenfolge wäre folgende

1. Snapshot erstellen auf altem Systen

Code: Select all

zfs snapshot pool_alt/dataset@now
2.Snapshot auf neues System übertragen

Code: Select all

zfs send pool_alt/dataset@now | ssh xxx.xxx.xxx.xxx zfs recv pool_neu/dataset
3. Snapshot einspielen

Code: Select all

zfs rollback pool_neu/dataset@now
Damit hätte ich ein Dataset vom alten Server auf den neuen kopiert und hätte quasi ein Initialbackup.
Das könnte ich am Wochenende laufen lassen und würde keinen stören.
Jetzt bin ich nur etwas unsicher wie der letzte Schritt ist zum endgültigen Datenabgleich.
Nochmal ein Snapshot, rüber schieben und rollback wie oben beschrieben?

Re: Frage zu Umzug auf neuen Server

Posted: 26 Sep 2016 21:43
by Princo
Hallo devil77,

Wenn du deinen ganzen Pool insgesamt umziehen lassen möchtest, dann gibt es eine bessere Methode:

Du hast dein bisheriges System (Quelle) mit dem Pool "pool_alt".
Auf dem neuen System (Ziel) legst du einen Pool "pool_neu" an.
Ergänzung vom 20.11.2016: Je nach der später eingesetzten Update-Methode, kann "pool_neu" den gleichen Namen wie "pool_alt" erhalten.

Auf dem Zielsystem gibst du diesen Befehl ein:

Code: Select all

nc -l 9000 | zfs receive -vF pool_neu
Das Zielsystem wartet jetzt auf eingehende Übertragungen.

Auf dem Quellsystem gibst du diese Befehle ein

Code: Select all

zfs snapshot -r pool_alt@now
zfs send -vR pool_alt@now | nc -w 6 $IP-ADRESSE-ZIEL 9000
Für $IP-ADRESSE-ZIEL mußt du natürlich die IP-Adresse des Zielrechners einsetzen.

Ein Rollback auf dem Zielsystem ist nicht nötig, dafür sorgt bereits der Parameter -F.

Mit dieser Methode werde sämtliche Datasets des Pools pool_alt zum anderen System auf den pool_neu übertragen.
Dabei werden auch sämtliche Eigenschaften der Datasets mit übertragen (z.B. Compression).
Es werden auch sämtliche Snapshots von pool_alt mit übertragen.
Die Übertragung erfolgt unverschlüsselt mittels netcat (nc), daher ist sie wesentlich schneller als die Übertragung per ssh.
Während der Übertragung werden auf dem Quell- und dem Zielsystem Logging-Ausgaben angezeigt.
Während der Übertragung sollten auf dem Quell-System keine Snapshots gelöscht werden (Vorsicht bei Auto-Snapshots!).
Der pool_neu sollte frisch angelegt sein, und darf keine Snapshots enthalten. Vorhandene Daten werden auf dem Zielpool gelöscht.

Die Befehle können auf dem Quell- und dem Zielsystem jeweils in einer tmux-Session ablaufen, aber das führt evtl. etwas zu weit :mrgreen:

Auf Basis der obigen Befehle läßt sich mit einem einzigen zusätzlichen Parameter später auch ein inkrementelles Backup zwischen den beiden Systemen realisieren...

Grüße
Princo