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?
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:
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é.
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:
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.
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.
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.
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.
la source