Zfs: remplacement d'un disque dans un Raidz2
Bonjour à tous,
Un petit billet qui va porter sur ZFS (plus précisément Zfs On Linux) et le remplacement d'un disque défectueux.
Situation de départ: un raidz2 (soit l'équivalent d'un raid6, donc 2 disques de parités) avec 6x2To. Un disque vieillissant avec une grosse réallocation de secteur:
5 Reallocated_Sector_Ct 0x0033 138 138 140 Pre-fail Always FAILING_NOW 1178
9 Power_On_Hours 0x0032 051 051 000 Old_age Always - 36037
Ces données ont été obtenues via smartmontools avec la commande:
smartctl -a /dev/sdc
Comme on peut le voir, le nombre de secteurs réalloués (première ligne) est important ainsi que le nombre d'heures (seconde ligne) de vie du disque.
Il est donc temps de remplacer ce disque.
Tout d'abord niveau zfs, il faut passer le disque en offline:
zpool offline tank sdc
L'avantage de cette manoeuvre est que si le remplacement se fait mal, il est toujours possible de rebrancher le disque mourant et de le repasser online afin de retrouver un raidz2 "utilisable".
Nous pouvons donc arrêter le serveur afin de faire le remplacement physique. Une fois terminé, nous pouvons relancer le serveur.
Il nous reste à faire le remplacement du disque au niveau zfs:
zpool replace tank sdc sdc
Nous remplaçons donc l'ancien disque en sdc, par le nouveau en sdc également. Il faut vérifier que la lettre assignée au disque (fdisk est utile dans ce cas). afin d'être sur d'assigner le bon disque.
Si votre disque est neuf, il ne contient pas de partition ou en tout cas pas une utilisable par zfs, il faudra donc utiliser l'option force:
zpool replace tank sdc sdc -f
Il ne reste plus maintenant qu'à attendre la fin du resilvering:
pool: tank
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 Sun Dec 6 11:14:25 2015
50,4G scanned out of 7,85T at 275M/s, 8h16m to go
8,39G resilvered, 0,63% done
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
sda ONLINE 0 0 0
sdd ONLINE 0 0 0
replacing-2 OFFLINE 0 0 0
old OFFLINE 0 0 0
sdc ONLINE 0 0 0 (resilvering)
sdb ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
errors: No known data error
~9H Plus tard, nous avons un raidz2 à nouveau pleinement opérationnel.
J'ai également complété avec un scrub afin d'être sur de l'intégrité des fichiers:
zpool scrub tank
Have a nice day