J'utilise Ubuntu Server 13.04 64 bits en utilisant ZFS natif. J'ai un zpool composé de 4 disques durs dont l'un est mort hier et n'est plus reconnu par l'OS ou le BIOS.
Malheureusement, je n'ai vu le problème qu'après le prochain redémarrage alors maintenant l'étiquette du lecteur est manquante et je ne peux pas remplacer le disque en utilisant les instructions officielles ici et ici .
zpool status hermes -x
impressions
root@zeus:~# zpool status hermes -x
pool: hermes
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: scrub repaired 0 in 2h4m with 0 errors on Sun Jun 9 00:28:24 2013
config:
NAME STATE READ WRITE CKSUM
hermes DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ata-ST3300620A_5QF0MJFP ONLINE 0 0 0
ata-ST3300831A_5NF0552X UNAVAIL 0 0 0
ata-ST3200822A_5LJ1CHMS ONLINE 0 0 0
ata-ST3200822A_3LJ0189C ONLINE 0 0 0
errors: No known data errors
J'ai déjà remplacé le lecteur par un nouveau (qui a obtenu l'étiquette /dev/disk/by-id/ata-ST3500320AS_9QM03ATQ
)
N'importe laquelle des commandes
zpool replace hermes /dev/disk/by-id/ata-ST3300831A_5NF0552X /dev/disk/by-id/ata-ST3500320AS_9QM03ATQ
zpool offline hermes /dev/disk/by-id/ata-ST3300831A_5NF0552X
zpool detatch hermes /dev/disk/by-id/ata-ST3300831A_5NF0552X
échoue avec
root@zeus:~# zpool offline hermes /dev/disk/by-id/ata-ST3300831A_5NF0552X
cannot offline /dev/disk/by-id/ata-ST3300831A_5NF0552X: no such device in pool
car l'étiquette du lecteur mort n'existe plus dans le système. J'ai également essayé les commandes ci-dessus en omettant le chemin vers l'étiquette du lecteur en vain.
Comment remplacer le disque "fantôme"?
-n
commutateur, mais le-g
commutateur saisira également l'uuid de cette façon.zpool status
(noms comme sdab) n'étaient PAS les mêmes que les chemins d'accès/dev/disk/by-id
(noms d'ID longs et fous). Maisls -la /dev/disk/by-id
révèle qu'ils sont tous des liens vers/dev/...
, j'ai donc trouvé celui pointant vers mon disque UNAVAIL (et par la suite OFFLINE), et j'ai pu terminer ces étapes avec succès. Il est en train de resilver. Merci!zpool status -g
l'état à l'aide des GUID pour chaque périphérique. En outre, pour @Matt,zpool status -L
affichera l'état en utilisant les noms de base des appareils au lieu des/dev/disk/by-id
noms longs .Le problème est que les disques sont référencés par des ID et non par des périphériques.
Voici une solution de contournement qui devrait fonctionner:
Edit: j'avais 30 secondes de retard ...
la source
no such device in pool
.zpool status
offline
etreplace
étapes). J'ai importé le pool une deuxième fois après avoir supprimé le lien nul. Peut-être que c'était juste un problème avec l'étiquette du lecteur? En fait, le nom du lecteur est resté le même. J'ai ensuite fait un gommage complet et aucune erreur n'a été trouvée.@Marcus: Merci d'avoir posté cette excellente réponse à votre propre question, cela m'a beaucoup aidé.
L'autre jour, j'ai trouvé une torsion qui pourrait vous intéresser (et toute autre personne qui viendra ici googler à l'avenir): j'ai eu un périphérique de cache qui a été supprimé du pool (et marqué comme "NON DISPONIBLE") en raison de cette même erreur (ZFS-8000-4J, "l'étiquette est manquante ou non valide"), et la tentative de connexion / suppression / remplacement hors ligne a échoué avec exactement le même message "aucun périphérique de ce type dans le pool".
MAIS, lorsque j'ai essayé d'appliquer votre solution, le simple "zdb" (sans argument) n'a pas répertorié le périphérique, encore moins son GUID.
Après quelques recherches, j'ai trouvé que "zdb -l / dev / DEVICENAME" répertoriait le GUID (en le prenant directement à partir du périphérique, et non à partir des enregistrements du pool), et l'utilisation de ce GUID m'a permis de faire le remplacement (en fait, j'ai fait un "zpool offline" suivi d'un "zpool remove" puis d'un "zpool add", qui a parfaitement fonctionné).
la source
zdb -l /dev/...
toujours montré "échoué à déballer l'étiquette".J'ai eu un problème similaire:
Le lecteur a échoué de telle manière qu'il ne s'est plus enregistré dans le BIOS (totalement mort). Ils ont
zpool status
indiqué que c'était le casUNAVAILABLE
.J'ai mis un disque de capacité similaire, et j'ai réussi à l'allouer comme un nouveau
spare
qui étaitINUSE
et à refaire le disque. Mais, il ne faisait pas réellement partie du zpool, plutôt que le pool avait une mémoire du lecteur manquant, pensant qu'il réapparaîtrait un jour.La solution consistait d'abord à supprimer le lecteur manquant du zpool:
Ensuite, déposez le lecteur marqué
spare-1 INUSE
également:Une fois que j'ai fait cela, il semble que FreeNAS l'a compris sans que je doive exécuter une
replace
commande, mais si votre système ne le comprend pas lui-même, la commande suivante devrait remplacer un périphérique par l'autre:Par exemple:
zpool status
commandement.la source