Verschieben eines ZFS-Dateisystems von einem Pool in einen anderen

18

Ich erweitere einen Solaris 10 U8-Server mit einem zusätzlichen Speicherpool zusätzlich zum Root-Rpool.

Was ist die effektivste / einfachste / zuverlässigste Methode, um bestimmte ZFS-Dateisysteme von rpool in diesen neuen Speicherpool zu verschieben?

Kann dies online erfolgen oder muss ich zuerst die Dienste mit diesen Pools beenden?

Asgeir S. Nilsen
quelle

Antworten:

15

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:

    zfs send -i rpool / dateisystem @ snapshot rpool / dateisystem @ snapshot2 | ZFS empfangen -F Zielpool / Dateisystem

  • 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.
jlliagre
quelle
10

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:

zfs send rpool/filesystem@snapshot | zfs receive destinationpool/filesystem

Bearbeiten:

Wenn Sie den Befehl "pipe view" (pv) installieren, können Sie den Status der Übertragung überwachen mit:

zfs send rpool/filesystem@snapshot | pv | zfs receive destinationpool/filesystem
ewwhite
quelle
10

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.

So verschieben Sie einen gesamten Pool:

zfs snapshot -r sourcepool@moving
zfs send -R sourcepool@moving | zfs receive -F destpool

Um die Änderungen für einen kürzeren Migrationszeitraum zu synchronisieren, fahren Sie die Anwendungen herunter, und fahren Sie Samba und NFS herunter

zfs snapshot -r sourcepool@moving2
zfs send -Ri sourcepool@moving sourcepool@moving2 | zfs receive -F destpool

Wenn Sie mehrere Snapshots für die Migration erstellen, lesen Sie die Manpage zum zfs send -ISwitch.

Dan Bühler
quelle
3
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.

Adam Thompson
quelle
Bitte beachten Sie, dass dies eine sehr alte Frage ist (über 5 Jahre) und Ihre Antwort wahrscheinlich nichts zu einer so alten Frage hinzufügt.
Catherine MacInnes
1
Dies ist ein großartiger Rat und ich benutze ihn auch für Poolbewegungen.
Dan Bühler