Se um dispositivo não puder ser aberto, será exibido como UNAVAILABLE na saída zpool status. Esse status significa que o ZFS não pode abrir o dispositivo quando o conjunto foi acessado pela primeira vez ou que o dispositivo se tornou indisponível a partir desse momento. Se o dispositivo fizer com que o dispositivo virtual de nível superior não esteja disponível, então não será possível acessar nada no pool. Do contrário, a tolerância a falhas do pool pode ser comprometida. Em ambos os casos, o dispositivo precisa simplesmente ser reanexado ao sistema para recuperar a operação normal.
Por exemplo, uma mensagem do fmd semelhante à ilustrada abaixo deve ser vista depois de uma falha no dispositivo:
SUNW-MSG-ID: ZFS-8000-FD, TYPE: Fault, VER: 1, SEVERITY: Major EVENT-TIME: Thu Jun 24 10:42:36 PDT 2010 PLATFORM: SUNW,Sun-Fire-T200, CSN: -, HOSTNAME: neo2 SOURCE: zfs-diagnosis, REV: 1.0 EVENT-ID: a1fb66d0-cc51-cd14-a835-961c15696fcb DESC: The number of I/O errors associated with a ZFS device exceeded acceptable levels. Refer to http://sun.com/msg/ZFS-8000-FD for more information. AUTO-RESPONSE: The device has been offlined and marked as faulted. An attempt will be made to activate a hot spare if available. IMPACT: Fault tolerance of the pool may be compromised. REC-ACTION: Run 'zpool status -x' and replace the bad device. |
Para visualizar mais informações detalhadas sobre problemas e resoluções de dispositivos, utilize o comando zpool status -x. Por exemplo:
# zpool status -x pool: tank state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scrub: scrub completed after 0h0m with 0 errors on Tue Feb 2 13:15:20 2010 config: NAME STATE READ WRITE CKSUM tank DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t0d0 ONLINE 0 0 0 c1t1d0 UNAVAIL 0 0 0 cannot open errors: No known data errors |
É possível observar nessa saída que o dispositivo c1t1d0 ausente não está funcionando. Se você determinar que o dispositivo é falho, substitua-o.
Depois, utilize o comando zpool online para colocar o dispositivo substituído on-line. Por exemplo:
# zpool online tank c1t1d0 |
Como uma última etapa, confirme que o conjunto com o dispositivo substituído está íntegro. Por exemplo:
# zpool status -x tank pool 'tank' is healthy |
A forma como é realizada a reanexação de um dispositivo ausente depende do dispositivo em questão. Se o dispositivo for um drive anexado à rede, a conectividade deve ser restaurada. Se o dispositivo for um dispositivo USB ou outro tipo de mídia removível, deve ser reanexado ao sistema. Se o dispositivo for um disco local, um controlador pode ter falhado, de forma que tal dispositivo não está mais visível no sistema. Nesse caso, o controlador deve ser substituído no momento em que os discos estarão novamente disponíveis. Podem existir outros problemas que dependem do tipo de hardware e de sua configuração. Se uma unidade falhar e não estiver mais visível no sistema, o dispositivo deve ser tratado como um dispositivo danificado. Siga os procedimentos em Substituindo ou reparando um dispositivo modificado.
Depois que um dispositivo é reanexado ao sistema, o ZFS pode ou não detectar automaticamente sua disponibilidade. Se o conjunto já apresentava defeito anteriormente ou se o sistema tiver sido reinicializado como parte do procedimento anexar, então o ZFS reexamina todos os dispositivos ao tentar abrir o conjunto. Se o conjunto estava danificado e o dispositivo foi substituído enquanto o sistema estava em execução, é necessário notificar ao ZFS que o dispositivo está disponível e pronto para ser reaberto utilizando o comando zpool online. Por exemplo:
# zpool online tank c0t1d0 |
Para obter mais informações sobre como colocar dispositivos on-line, consulte Colocando um dispositivo on-line.