Je suis assez nouveau dans zfsonlinux . Je viens de réussir à mettre en place un tout nouveau serveur, avec une ROOT Debian sur ZFS. Tout fonctionne bien, mais j'ai un problème avec les disques de rechange à chaud et le remplacement des disques.
Voici ma piscine :
NAME STATE READ WRITE CKSUM
mpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-ST1XXXXXXXXXXA-part1 ONLINE 0 0 0
ata-ST1XXXXXXXXXXB-part1 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
ata-ST1XXXXXXXXXXC-part1 ONLINE 0 0 0
ata-ST1XXXXXXXXXXD-part1 ONLINE 0 0 0
spares
ata-ST1XXXXXXXXXXE-part1 AVAIL
ata-ST1XXXXXXXXXXF-part1 AVAIL
Maintenant, je peux commencer à m'amuser. Le débranchement des disques ! Je suis en train de débrancher le disque C. J'ai obtenu un pool fonctionnel, mais DÉGRAVÉ (comme prévu) :
NAME STATE READ WRITE CKSUM
mpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-ST1XXXXXXXXXXA-part1 ONLINE 0 0 0
ata-ST1XXXXXXXXXXB-part1 ONLINE 0 0 0
mirror-1 DEGRADED 0 0 0
ata-ST1XXXXXXXXXXC-part1 UNAVAIL 0 0 0
ata-ST1XXXXXXXXXXD-part1 ONLINE 0 0 0
spares
ata-ST1XXXXXXXXXXE-part1 AVAIL
ata-ST1XXXXXXXXXXF-part1 AVAIL
Jusqu'à présent, tout va bien. Mais, lorsque j'essaie de remplacer le disque C par, disons, le disque E, je me retrouve de toute façon avec un pool DÉGRAVÉ.
# zpool replace mpool ata-ST1XXXXXXXXXXC-part1 ata-ST1XXXXXXXXXXE-part1
cannot open '/dev/disk/by-id/ata-ST1XXXXXXXXXXE-part1': Device or ressource busy
(and after a few sec)
Make sure to wait until resilver is done before rebooting.
Donc j'attends quelques secondes pour que le resilvering se fasse (avec 0 erreurs), puis j'ai :
NAME STATE READ WRITE CKSUM
mpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-ST1XXXXXXXXXXA-part1 ONLINE 0 0 0
ata-ST1XXXXXXXXXXB-part1 ONLINE 0 0 0
mirror-1 DEGRADED 0 0 0
spare-0 UNAVAIL
ata-ST1XXXXXXXXXXC-part1 UNAVAIL 0 0 0
ata-ST1XXXXXXXXXXE-part1 ONLINE 0 0 0
ata-ST1XXXXXXXXXXD-part1 ONLINE 0 0 0
spares
ata-ST1XXXXXXXXXXE-part1 INUSE currently in use
ata-ST1XXXXXXXXXXF-part1 AVAIL
Alors si je zpool detach
le disque C (comme expliqué aquí ), mon pool est à nouveau en ligne et tout fonctionne bien (avec un pool de seulement 5 disques durs).
Voici donc mes questions :
- Pourquoi le remplacement du disque C n'est pas suffisant pour reconstruire un pool complet ? Comme expliqué sur le blog d'oracle y ici aussi Je m'attendais à ce que no doivent détacher le disque pour que zfs puisse reconstruire le pool correctement (et il est de loin préférable de garder dans le statut de zpool les traces du disque débranché, pour la commodité de maintenance)
- Pourquoi zpool continue à me dire que les disques de secours sont "occupés" (ils ne le sont pas) ? vraiment pas) ?
- Voir ci-dessous : comment puis-je récupérer automatiquement mon disque de rechange ?
EDIT : Encore pire pour la question1 => Quand je rebranche le disque C, zfs ne gère pas mon disque de secours ! Je me retrouve donc avec un disque en moins
NAME STATE READ WRITE CKSUM
mpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-ST1XXXXXXXXXXA-part1 ONLINE 0 0 0
ata-ST1XXXXXXXXXXB-part1 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
ata-ST1XXXXXXXXXXE-part1 ONLINE 0 0 0
ata-ST1XXXXXXXXXXD-part1 ONLINE 0 0 0
spares
ata-ST1XXXXXXXXXXF-part1 AVAIL