Die Frage zum Deaktivieren von Diensten hängt im Wesentlichen von den Diensten selbst ab:
Schreiben sie aktiv in das Dateisystem, das Sie verschieben möchten?
Speichern sie persistente Daten, die Sie behalten möchten?
In jedem Fall kann das Senden eines ZFS-Dateisystems sehr lange dauern. Es ist möglich, die Nichtverfügbarkeit von Diensten zu minimieren, indem diese die meiste Zeit auf diese Weise online gehalten werden:
Erstellen Sie einen Schnappschuss
Senden Sie diesen Schnappschuss auf die zuvor vorgeschlagene Weise, während Sie alle Dienste aktiv halten
Deaktivieren Sie die kritischen Dienstebindungen für dieses Dateisystem, wenn die fs im anderen Pool empfangen werden. Stellen Sie sicher, dass das neue Dateisystem im Zielpool nicht geändert wird, da Änderungen später ohnehin verworfen werden.
erstelle einen zweiten Schnappschuss (zB snapshot2)
Senden Sie diesen zweiten Schnappschuss schrittweise, das ist viel schneller als die vorherige Übertragung. z.B:
Wenn Sie fertig sind, verschieben Sie den Mount-Punkt des Dateisystems vom alten Dataset auf das neue. z.B:
zfs set mountpoint=/application/directory.old rpool/filesystem
zfs set mountpoint = / application / verzeichnis ziel / dateisystem
Sie müssen sicherstellen, dass kein Prozess gebunden ist /application/filesystem(z. B. Zugriff auf Dateien oder das aktuelle Verzeichnis), um dies zu erreichen.
Aktivieren Sie die Dienste erneut und Sie sind fertig.
Ich glaube nicht, dass dies online durchgeführt werden kann, aber mein Prozess wäre, die erforderlichen Dienste herunterzufahren, einen Schnappschuss zu machen und zfs send / receive zu verwenden, um die Migration durchzuführen. Etwas wie:
Ich wiederhole viel von dem, was jlliagre gesagt hat, aber mit Ergänzungen für untergeordnete Dateisysteme. (Meistens habe ich einen Hinweis, wenn ich es vergesse.)
Wenn Sie über Sub-Dateisysteme verfügen, möchten Sie das -rFlag für den Befehl zfs snapshot und das Flag -roder -Rfür den zfs sendBefehl verwenden. In Großbuchstaben werden -Ralle Eigenschaften , Snapshots und Klone verschoben.
In meinen Experimenten schien der genaue Befehl zu lauten: zfs send -R Pool0 @ moving | zfs erhalten -dF Pool1
TinkerTank
4
Sie werden auch einige Vorteile finden, wenn Sie ein Tool wie "mbuffer" in der Pipeline verwenden. Anscheinend verbessert sich die Sende- / Empfangsleistung von ZFS dramatisch, wenn beide Seiten zumeist kontinuierlich Daten streamen können und wenn kein Puffer (oder ähnliches) vorhanden ist, wird ein Ping-Pong-Effekt erzielt, bei dem einer den anderen kontinuierlich blockiert.
Sie werden auch einige Vorteile finden, wenn Sie ein Tool wie "mbuffer" in der Pipeline verwenden. Anscheinend verbessert sich die Sende- / Empfangsleistung von ZFS dramatisch, wenn beide Seiten zumeist kontinuierlich Daten streamen können und wenn kein Puffer (oder ähnliches) vorhanden ist, wird ein Ping-Pong-Effekt erzielt, bei dem einer den anderen kontinuierlich blockiert.
quelle