Guia de administração do ZFS Oracle Solaris

Resolvendo problemas com o ZFS

As seções a seguir descrevem como identificar e resolver problemas nos sistemas de arquivos ou nos conjuntos de armazenamento ZFS:

Você pode usar os seguintes recursos para identificar problemas na configuração do seu ZFS:

A maioria das soluções de problemas do ZFS envolvem o comando zpool status. Esse comando analisa as diferentes falhas no sistema e identifica o problema mais grave, apresentando-lhe ações sugeridas e um link a um artigo com mais informações. Observe que o comando identifica somente um único problema com o conjunto, embora existam vários problemas. Por exemplo, erros de dados corrompidos geralmente implicam que um dos dispositivos falhou, mas substituir os dispositivos falhos não deve resolver todos os problemas de corrupção de dados.

Além disso, um diagnóstico do ZFS gera diagnósticos e relata falhas de conjuntos e de dispositivos. Soma de verificação, E/S, dispositivo, e erros de conjuntos associados com essas falhas também são reportadas. As falhas do ZFS, conforme relatadas por fmd, são exibidas no console, bem como no arquivo de mensagens do sistema. Na maioria dos casos, a mensagem fmd leva você ao comando zpool status para obter instruções de recuperação adicionais.

O processo básico de recuperação realiza-se da seguinte forma:

Essa seção descreve como interpretar a saída de zpool status a fim de diagnosticar os tipos de falhas que podem ocorrer. Embora a maioria do trabalho seja efetuado automaticamente pelo comando, é importante entender exatamente que problemas estão sendo identificados a fim de diagnosticar o tipo da falha. Seções subsequentes descrevem como reparar vários problemas que você pode encontrar.

Determinando se há problemas em um conjunto de armazenamento do ZFS

A forma mais fácil de determinar se há problemas conhecidos no sistema é utilizar o comando zpool status -x. . Esse comando descreve somente os conjuntos que apresentam problemas. Se não há nenhum conjunto defeituoso no sistema, então o comando exibe o seguinte:


# zpool status -x
all pools are healthy

Sem o sinalizador -x, o comando exibe o status completo de todos os pools (ou do pool solicitado, se especificado na linha de comando), mesmo que os pools não apresentem falhas.

Para obter mais informações sobre opções de linha de comando para o comando zpool status, consulte Consultando status de pool de armazenamento do ZFS.

Revisando a saída de zpool status

A saída de zpool status completa se assemelha ao ilustrado abaixo:


# zpool status tank
# zpool status tank
  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: none requested
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

Essa saída é descrita a seguir:

Informações gerais sobre o status do pool

Essa seção na saída de zpool status contém os campos a seguir, alguns dos quais são exibidos somente para os conjuntos que apresentam problemas:

pool

Identifique o nome do conjunto.

state

Indique a integridade atual do conjunto. Esta informação se refere somente a capacidade que o pool apresenta de oferecer o nível de replicação necessário.

status

Descreva o que há de errado com o conjunto. Esse campo é omitido se nenhum erro for encontrado.

action

Uma ação recomendada para a reparação de erros. Esse campo é omitido se nenhum erro for encontrado.

see

Referência a um artigo conhecido com informações sobre a reparação. Os artigos on-line são atualizados com mais frequência do que guias podem ser atualizados. Então, sempre os referencie para o mais atualizado procedimento de reparação. Esse campo é omitido se nenhum erro for encontrado.

scrub

Identifique o status atual da operação de scrub, que deve incluir a data e a hora de conclusão do último scrub realizado, um scrub em andamento ou se nenhum scrub foi solicitado.

errors

Identifica erros de dados ou ausência de erros de dados conhecidos.

Informações sobre a configuração do pool

O campo config na saída zpool status descreve a configuração dos dispositivos no conjunto, bem como seu estado e quaisquer erros gerados a partir dos dispositivos. O estado pode ser um dos seguintes: ONLINE, FAULTED, DEGRADED, UNAVAIL ou OFFLINE. Se for exibido somente ONLINE, a tolerância a falhas do pool foi comprometida.

A segunda seção da saída de configuração exibe os erros de estatísticas. Estes erros estão divididos em três categorias:

Estes erros podem ser usados para determinar se o dano é permanente. Uma pequena quantidade de erros de E/S pode indicar uma interrupção temporária, enquanto que uma grande quantidade pode indicar um problema permanente com o dispositivo. Estes erros não correspondem necessariamente à corrupção de dados conforme interpretado pelos aplicativos. Se o dispositivo estiver em uma configuração redundante, os dispositivos podem exibir erros incorrigíveis, enquanto nenhum erro aparece no espelho ou no nível do dispositivo RAID-Z. Em tais casos, o ZFS recupera com sucesso os dados bons e tenta reabilitar dados danificados a partir das réplicas existentes.

Para mais informações sobre a interpretação desses erros, consulte Determinando o tipo de falha do dispositivo.

Finalmente, na última coluna da saída de zpool status se encontram informações adicionais auxiliares. Essas informações abrangem o campo estado, auxiliando em diagnósticos de falhas. Se um dispositivo apresenta o estado FAULTED, este campo indica se o dispositivo encontra-se inacessível ou se os dados do dispositivo estão corrompidos. Se o dispositivo estiver sendo submetido a um resilvering, este campo exibe o progresso atual.

Para mais informações sobre a monitoração do progresso de resilvering, consulte Exibindo o status do resilvering.

Status do scrubbing

A terceira seção de scrub da saída zpool status descreve o status atual de quaisquer operações de scrubbing explícitas. Se qualquer tipo de erro for detectado no sistema, estas informações serão diferentes, embora possam ser usadas para determinar a precisão do relatório de erro de corrupção de dados. Se o último scrubbing acabou de ser concluído, provavelmente nenhuma corrupção de dados conhecida foi encontrada.

Mensagens de finalização de scrub persistem através da reinicialização do sistema.

Para mais informações sobre o scrubbing de dados e como interpretar essas informações, consulte Verificando a integridade do sistema de arquivos ZFS.

Erros de corrupção de dados

O comando zpool status mostra também se os erros conhecidos estão associados ao pool. Esses erros podem ter sido encontrados durante o scrubbing de dados ou durante uma operação normal. O ZFS mantém um log persistente de todos os erros de dados associados ao conjunto. Este registro é alternado sempre que um scrubbing completo do sistema for concluído.

Os erros de corrupção de dados são sempre fatais. A presença de tais erros indica que como mínimo um aplicativo sofreu um erro de E/S devido a dados corrompidos dentro do pool. Os erros de dispositivo dentro de um pool redundante não têm como resultado a corrupção de dados e não são registrados como parte deste registro. Por padrão, somente o número de erros encontrado é exibido. Uma lista completa de erros e de suas condições específicas pode ser encontrada usando a opção -v do zpool status. Por exemplo:


# zpool status -v
  pool: tank
 state: UNAVAIL
status: One or more devices are faulted in response to IO failures.
action: Make sure the affected devices are connected, then run 'zpool clear'.
   see: http://www.sun.com/msg/ZFS-8000-HC
 scrub: scrub completed after 0h0m with 0 errors on Tue Feb  2 13:08:42 2010
config:

        NAME        STATE     READ WRITE CKSUM
        tank        UNAVAIL      0     0     0  insufficient replicas
          c1t0d0    ONLINE       0     0     0
          c1t1d0    UNAVAIL      4     1     0  cannot open

errors: Permanent errors have been detected in the following files: 

/tank/data/aaa
/tank/data/bbb
/tank/data/ccc

Uma mensagem semelhante também é exibida pelo fmd no console do sistema e no arquivo /var/adm/messages. Estas mensagens também podem ser rastreadas através do comando fmdump.

Para obter mais informações sobre a interpretação dos erros de corrupção de dados, consulte Identificando o tipo de corrupção de dados.

Relatório de mensagens de erros do ZFS do sistema

Além de manter um rastreio persistente de erros dentro do conjunto, o ZFS exibe também mensagens syslog quando ocorrem eventos de interesse. As situações abaixo geram eventos para notificar o administrador:

Se o ZFS detectar um erro de dispositivo e se recuperar automaticamente, não ocorre nenhuma notificação. Tais erros não representam uma falha na integridade dos dados ou de redundância do conjunto. São normalmente o resultado de um problema do driver acompanhado por seu próprio conjunto de mensagens de erro.