Déplacement d'un système de fichiers ZFS d'un pool à un autre

18

J'étends un serveur Solaris 10 U8 avec un pool de stockage supplémentaire en plus du pool racine.

Quelle est la manière la plus efficace / simple / fiable de déplacer des systèmes de fichiers ZFS particuliers de rpool vers ce nouveau pool de stockage?

Peut-on le faire en ligne ou dois-je d'abord fermer les services à l'aide de ces pools?

Asgeir S. Nilsen
la source

Réponses:

15

La question de la désactivation des services dépend essentiellement des services eux-mêmes:

  • Écrivent-ils activement dans le système de fichiers que vous prévoyez de déplacer?
  • Stockent-ils des données persistantes que vous souhaitez conserver?

Dans tous les cas, l'envoi d'un système de fichiers ZFS peut prendre du temps. Il est possible de minimiser l'indisponibilité du service en les gardant en ligne la plupart du temps de cette façon:

  • créer un instantané
  • envoyer cet instantané de la manière suggérée précédemment, mais en gardant tous les services actifs
  • lorsque le fs est reçu sur l'autre pool, désactivez les limites des services critiques de ce système de fichiers. Assurez-vous que le nouveau système de fichiers du pool de destination n'est pas modifié car les modifications seront de toute façon annulées ultérieurement.
  • créer un deuxième instantané (par exemple instantané2)
  • envoyer ce deuxième instantané de façon incrémentielle, ce sera beaucoup plus rapide que le transfert précédent. par exemple:

    zfs send -i rpool / filesystem @ snapshot rpool / filesystem @ snapshot2 | zfs recevoir -F destinationpool / système de fichiers

  • une fois terminé, déplacez le point de montage du système de fichiers de l'ancien ensemble de données vers le nouveau. par exemple:

    zfs set mountpoint=/application/directory.old rpool/filesystem
    

    zfs set mountpoint = / application / directory destination / filesystem

Vous devez vous assurer qu'aucun processus n'est lié à /application/filesystem(par exemple: accéder aux fichiers ou l'avoir comme répertoire actuel) pour y parvenir.

  • réactivez le (s) service (s) et vous avez terminé.
jlliagre
la source
10

Je ne pense pas que cela puisse être effectué en ligne, mais mon processus serait de fermer les services nécessaires, de prendre un instantané et d'utiliser zfs send / receive pour effectuer la migration. Quelque chose comme:

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

Éditer:

Si vous installez la commande "pipe view" (pv), vous pouvez surveiller l'état du transfert avec:

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

Je répète une grande partie de ce que jlliagre a dit, mais avec des ajouts pour les systèmes de fichiers descendants. (Surtout si j'ai une référence quand j'oublie.)

Si vous avez des sous-systèmes de fichiers, vous voudrez utiliser l' -rindicateur sur la commande d'instantané zfs et l' indicateur -rou -Rsur la zfs sendcommande. Les majuscules -Rdéplacent toutes les propriétés , instantanés et clones.

Pour déplacer un pool entier:

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

puis pour synchroniser les modifications pour une période de migration plus courte, arrêter les applications, arrêter samba, nfs

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

Si vous créez plusieurs instantanés intermédiaires pour la migration, lisez la page de manuel sur le zfs send -Icommutateur.

Dan Buhler
la source
3
Dans mes expériences, la commande exacte semblait être: zfs send -R Pool0 @ moving | zfs reçoivent -dF Pool1
TinkerTank
4

Vous trouverez également des avantages à utiliser un outil comme "mbuffer" dans le pipeline; apparemment, les performances d'envoi / recv de ZFS s'améliorent considérablement si les deux extrémités peuvent principalement diffuser des données en continu, et sans mbuffer (ou quelque chose de similaire), vous obtenez un effet ping-pong où l'un se bloque continuellement sur l'autre.

Adam Thompson
la source
Veuillez noter qu'il s'agit d'une question très ancienne (plus de 5 ans) et qu'il est peu probable que votre réponse ajoute quoi que ce soit à une question aussi ancienne.
Catherine MacInnes
1
C'est un excellent conseil et je l'utilise également pour les mouvements de piscine.
Dan Buhler