J'ai un pool en miroir ZFS avec quatre disques au total. Deux des disques sont destinés à être utilisés pour effectuer des rotations de sauvegardes hors site. Je m'attendais à ce qu'après la réargenture initiale, je puisse detach
et plus tard attach
un disque et que je ne le fasse que par un réargenteur incrémentiel - cependant, lors des tests, il semble effectuer une réargenture complète, que le disque attaché contienne déjà presque tout le pool ou non. Contenu.
Est-ce que l'utilisation d'une approche offline
/ online
me donnerait le résultat souhaité de seulement mettre à jour le disque - plutôt que de le reconstruire complètement? Ou pour que ce travail se déroule comme prévu, devrai-je faire quelque chose de complètement différent - comme utiliser chaque disque de sauvegarde en tant que pool à 1 disque et y send
ajouter les snapshots les plus récents chaque fois qu'il doit être mis à jour?
zfs send
commande pour prendre des flux de sauvegarde complets ou incrémentiels enregistrés sur les disques de sauvegarde, ou utiliserzfs recv
pour créer un disque en double. Je recommande fortement d'utiliser une sorte de logiciel pour gérer ce processus.Réponses:
Ne vous engagez pas à casser la baie ZFS pour «faire tourner» les disques hors site. Comme vous l'avez vu, le temps de reconstruction est élevé et le processus de réargenture lira / vérifiera la taille utilisée de l'ensemble de données.
Si vous en avez la possibilité, des instantanés et l'envoi de données à un système distant sont une approche propre et non intrusive. Je suppose que vous pourriez passer par le processus d'avoir un pool dédié à un seul disque, y copier et exporter / importer zpool ... mais ce n'est pas très élégant.
la source
Après de nouvelles expérimentations, j'ai trouvé une solution équitable, mais elle s'accompagne d'un important compromis. Les disques qui ont été
offline
'd mais non détachés peuvent ensuite être remis en ligne avec seulement une opération de réargenture incrémentielle (" Lorsqu'un périphérique est mis en ligne, toutes les données qui ont été écrites dans le pool sont resynchronisées avec le nouveau périphérique disponible. "). Dans mes tests, cela réduit le temps de réargenture d'un miroir à 3 disques de 28 heures à un peu plus de 30 minutes, avec environ 40 Go de données-delta.Le compromis est que tout pool avec un disque hors ligne sera marqué comme dégradé. À condition qu'il y ait encore au moins deux disques en ligne (dans un pool en miroir), il s'agit effectivement d'un avertissement - l'intégrité et la redondance restent intactes.
Comme d'autres l'ont mentionné, cette approche globale est loin d'être idéale - l'envoi d'instantanés à un pool distant serait beaucoup plus approprié, mais dans mon cas, ce n'est pas faisable.
Pour résumer, si vous devez supprimer un disque d'un pool et l'ajouter ultérieurement sans nécessiter une réargenture complète, l'approche que je recommanderais est la suivante:
zpool offline pool disk
hdparm -Y /dev/thedisk
zpool online pool disk
Et, comme cela n'a pas encore été testé, il existe un risque que l'opération de réargenture delta ne soit pas précise. Le pool "en direct" et / ou les disques hors ligne peuvent rencontrer des problèmes. Je mettrai à jour si cela m'arrive, mais pour l'instant j'expérimenterai cette approche.
la source
Mise à jour du 15 octobre 2015: Aujourd'hui, j'ai découvert la
zpool split
commande, qui sépare un nouveau pool (avec un nouveau nom) d'un pool existant.split
est beaucoup plus propre queoffline
etdetach
, car les deux piscines peuvent alors exister (et être nettoyées séparément) sur le même système. Le nouveau pool peut également être proprement (et correctement)export[ed]
avant d'être débranché du système.(Mon message d'origine suit ci-dessous.)
Avertissement! Divers commentaires sur cette page impliquent qu'il est (ou peut être) possible de
zpool detach
connecter un lecteur, puis de rattacher le lecteur et d'accéder aux données qu'il contient.Cependant, selon ce fil (et ma propre expérimentation)
zpool detach
supprime les "informations de pool" du lecteur détaché. En d'autres termes, adetach
est comme un reformatage rapide du lecteur . Après quedetach
beaucoup de données peuvent encore être sur le lecteur, mais il sera pratiquement impossible de remonter le lecteur et d'afficher les données comme un système de fichiers utilisable.Par conséquent, il me semble que
detach
c'est plus destructeur quedestroy
, car je croiszpool import
pouvoir récupérer des bassins détruits!A
detach
n'est ni aumount
, ni azpool export
, ni azpool offline
.Dans mon expérimentation, si j'utilise d'abord
zpool offline
un appareil, puiszpool detach
le même appareil, le reste du pool oublie que l'appareil a jamais existé. Cependant, étant donné que le périphérique lui-même étaitoffline[d]
antérieur à ce qu'il étaitdetach[ed]
, le périphérique lui-même n'est jamais informé de ladetach
. Par conséquent, le périphérique lui-même a toujours ses informations de pool et peut être déplacé vers un autre système, puisimport[ed]
(dans un état dégradé).Pour une protection supplémentaire contre
detach
vous pouvez même débrancher physiquement l'appareil après laoffline
commande, mais avant d'émettre ladetach
commande.Je souhaite utiliser ce
offline
, puisdetach
, puisimport
traiter pour sauvegarder ma piscine. Comme l'affiche originale, je prévois d'utiliser quatre disques, deux dans un miroir constant et deux pour des sauvegardes mensuelles, rotatives, hors site (et hors ligne). Je vérifierai chaque sauvegarde en l'important et en la nettoyant sur un système séparé, avant de la transporter hors site. Contrairement à l'affiche originale, cela ne me dérange pas de réécrire l'intégralité du lecteur de sauvegarde chaque mois. En fait, je préfère des réécritures complètes afin d'avoir de nouveaux morceaux.la source
Dans la même machine, avez-vous essayé de créer un nouveau pool avec les 2 lecteurs dans un miroir? Ensuite, créez un instantané sur votre pool de travail, puis envoyez cet instantané au nouveau pool, répétez, puis l'envoi de l'instantané suivant sera incrémentiel. Ce n'est pas la même chose avec "l'envoi de données à un système distant" car il s'agit d'un pool au sein du même système / serveur / machine. Avec cette configuration, vous pouvez toujours appliquer zpool split / offline / detach / attach mais vous ne le faites que dans le deuxième pool (copie) et non sur le pool source.
la source