Guia de administração do ZFS Oracle Solaris

Reparando um dispositivo faltando

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

Reanexando fisicamente um dispositivo

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.

Notificando o ZFS da disponibilidade de um dispositivo

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.