Ceci est une ancienne révision du document !
Table des matières
ZFS
Création d'un pool
Identifier les disques durs
SATA :
camcontrol devlist
PATA :
atacontrol list
ou le grep qui va bien :
egrep 'ad[0-9]|cd[0-9]' /var/run/dmesg.boot
Définition d'un pool
Pour créer un pool de 3 disques dur en raidz du nom de “mon_pool” :
zpool create mon_pool raidz ada0 ada1 ada3
Réparer un pool dégradé
On identifie le disque dur défaillant :
zpool status
ce qui donne :
pool: mon_pool state: DEGRADED status: One or more devices has been removed by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. scan: resilvered 1.37G in 0h0m with 0 errors on Thu Jul 12 16:01:38 2012 config: NAME STATE READ WRITE CKSUM mon_pool DEGRADED 0 0 0 raidz1-0 DEGRADED 0 0 0 4426481649996282313 REMOVED 0 0 0 was /dev/ada1 ada2 ONLINE 0 0 0 ada3 ONLINE 0 0 0 errors: No known data errors
C'est donc “ada1” qui a été enlevé (dans l'exemple ci dessus, il est marqué “REMOVED” car le l'ai débranché volontairement)
On éteint la machine, on remplace le disque défaillant, puis on rallume.
On indique donc qu'on a remplacé le disque avec cette commande :
zpool replace mon_pool /dev/ada1
Si vous remplacer le disque défaillant par un ayant déja été utilisé dans un autre pool, la commande le signalera en donnant le nom du pool dont fait parti le disque, si vous êtes sur de vouloir l'intégrer au pool il faut forcer la commande :
zpool replace -f mon_pool /dev/ada1
la commande peut prendre quelque seconde pour rendre le prompt.
Une fois fait on peut vérifier de nouveau avec “zpool status” ce qui se passe, pendant qu'il reconstruit le pool la sortie peut ressembler à ça :
pool: mon_pool state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Thu Jul 12 16:22:34 2012 3.17G scanned out of 4.11G at 217M/s, 0h0m to go 1.06G resilvered, 77.16% done config: NAME STATE READ WRITE CKSUM mon_pool DEGRADED 0 0 0 raidz1-0 DEGRADED 0 0 0 ada1 ONLINE 0 0 0 ada2 ONLINE 0 0 0 replacing-2 REMOVED 0 0 0 5739093499366978272 REMOVED 0 0 0 was /dev/ada3/old ada3 ONLINE 0 0 0 (resilvering) errors: No known data errors
Redimensionner un pool
Imaginons un pool de 3 disques de 250Go (ada1, ada2, ada3), que l'on souhaite remplacer par 3 disques de 1To, si le pool ne contient pas le système, il paraît judicieux de tous transférer sur un autre support, puis refaire un pool avec les 3 nouveaux disques.
Si le système est dessus et/ou le pool est plein et qu'on a pas de moyen de transférer les données provisoirement ailleurs, il y a une solution, qui peut être longue mais qui fonctionne.
On éteint la machine et on remplace un 250GO par un modèle d'un 1To, et on déclare le remplacement comme indiqué dans le chapitre précédent.
Une fois que le status confirme que le pool est “ONLINE” est sans erreur, on recommence l'opération, jusqu'a avoir remplacé les 3 disques, en s'assurant toujours d'attendre la fin de la reconstruction !
Ensuite tape :
zpool list
qui confirmera que le pool fait environ 750Go, qui est donc la taille additionné des 3 anciens disques.
ensuite on fais un :
zpool set autoexpand=on mon_pool
Ce qui active la possibilité d'auto redimensionnement du pool, il faut ensuite déconnecté un disque, puis le reconnecté en lui indiquant d'étendre sa taille (ce qui implique cette option pour les autres disques) :
zpool offline mon_pool ada1
puis
zpool online -e mon_pool ada1
Et voila, un :
zpool list
devrait vous montrer cette fois environ 3To.
on peut ensuite désactivé l'option d'auto redimensionnement :
zpool set autoexpand=off mon_pool