Estou executando o Ubuntu Server 13.04 de 64 bits usando o ZFS nativo. Eu tenho um zpool composto por 4 discos rígidos, dos quais um morreu ontem e agora não está mais sendo reconhecido pelo sistema operacional ou pelo BIOS.
Infelizmente, vi o problema somente após a próxima reinicialização. Agora, o rótulo da unidade está ausente e não posso substituir o disco usando as instruções oficiais aqui e aqui .
zpool status hermes -x
impressões
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
Eu já substituí a unidade por uma nova (com a etiqueta /dev/disk/by-id/ata-ST3500320AS_9QM03ATQ
)
Qualquer um dos comandos
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
falha com
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
porque o rótulo da unidade que morreu não existe mais no sistema. Também tentei os comandos acima, omitindo o caminho para o rótulo da unidade sem sucesso.
Como posso substituir o disco "fantasma"?
-n
switch, mas o-g
switch também agarra o uuid dessa maneira.zpool status
(nomes como sdab) NÃO eram os mesmos que os caminhos/dev/disk/by-id
(nomes de ID longos e malucos). Masls -la /dev/disk/by-id
revela que todos eles são links para,/dev/...
então encontrei aquele que aponta para o meu disco UNAVAIL (e posteriormente OFFLINE) e pude concluir essas etapas com êxito. Agora é resistente. Obrigado!zpool status -g
mostrar o status usando GUIDs para cada dispositivo. Além disso, para @Matt,zpool status -L
mostrará o status usando os nomes básicos do dispositivo em vez dos/dev/disk/by-id
nomes longos .O problema é que os discos são referenciados por IDs e não por dispositivo.
Aqui está uma solução alternativa que deve funcionar:
Edit: Eu estava 30 segundos atrasado ...
fonte
no such device in pool
.zpool status
offline
ereplace
passos). Importei o pool uma segunda vez após remover o link nulo. Talvez tenha sido apenas um problema com a etiqueta da unidade? De fato, o nome da unidade permaneceu o mesmo. Fiz uma limpeza completa depois e nenhum erro foi encontrado.@ Marcus: Obrigado por postar esta excelente resposta à sua própria pergunta, isso me ajudou muito.
No outro dia, encontrei uma reviravolta que poderia interessar a você (e a qualquer outra pessoa que aparecer aqui pesquisando no futuro): eu tinha um dispositivo de cache que foi retirado da piscina (e marcado como "UNAVAIL") devido a esse mesmo erro (ZFS-8000-4J, "a etiqueta está ausente ou é inválida") e a tentativa de desconectá-la / removê-la / substituí-la offline falhou exatamente com a mesma mensagem "não existe esse dispositivo no pool".
MAS, quando tentei aplicar sua solução, o "zdb" simples (sem argumentos) não listou o dispositivo, muito menos seu GUID.
Após algumas pesquisas, descobri que "zdb -l / dev / DEVICENAME" listava o GUID (retirando-o diretamente do dispositivo, e não dos registros do pool), e o uso desse GUID me permitiu fazer a substituição (na verdade, fiz um "zpool offline" seguido de "zpool remove" e, em seguida, um "zpool add", que funcionou perfeitamente).
fonte
zdb -l /dev/...
sempre mostrou "falha ao descompactar etiqueta".Eu tive uma questão semelhante:
O drive falhou de tal maneira que não se registrou mais no BIOS (totalmente morto). O
zpool status
indicou que eraUNAVAILABLE
.Coloquei uma unidade de capacidade semelhante e consegui alocá-la como uma nova
spare
que foiINUSE
e resilvei a unidade. Mas, na verdade, não fazia parte do zpool, mas a piscina tinha uma memória da unidade que faltava, pensando que algum dia apareceria novamente.A solução foi primeiro eliminar a unidade ausente do zpool:
Em seguida, solte a unidade marcada
spare-1 INUSE
também:Depois que fiz isso, parece que o FreeNAS descobriu sem que eu precisasse executar um
replace
comando; no entanto, se o seu sistema não descobrir por si mesmo, o comando a seguir deve substituir um dispositivo pelo outro:Por exemplo:
zpool status
comando.fonte