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:
O conjunto de armazenamento do ZFS detalhado pode ser exibido através da utilização do comando zpool status.
As falhas do conjunto e do dispositivo são relatadas através de mensagens de diagnóstico ZFS/FMA.
Os comandos do ZFS anteriores que modificaram as informações de estado do conjunto podem ser exibidos através da utilização do comando zpool history.
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:
Se for apropriado, utilize o comando zpool history para identificar os comandos do ZFS que precedem cenário do erro. Por exemplo:
# zpool history tank History for 'tank': 2010-07-15.12:06:50 zpool create tank mirror c0t1d0 c0t2d0 c0t3d0 2010-07-15.12:06:58 zfs create tank/erick 2010-07-15.12:07:01 zfs set checksum=off tank/erick |
Nessa saída, note que as somas de verificação estão desativadas no sistema de arquivos tank/erick . Esta configuração não é recomendável.
Identifique os erros através das mensagens fmd exibidas no console do sistema ou nos arquivos /var/adm/messages.
Localize as instruções de reparação adicionais através da utilização do comando zpool status -x.
Reparar falhas envolve as etapas a seguir:
Substitua o dispositivo defeituoso ou ausente e o coloque on-line.
Restaure a configuração defeituosa ou os dados corrompidos a partir de um backup.
Verifique a recuperação utilizando o comando zpool status - x.
Efetue backup da configuração restaurada, se aplicável.
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.
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.
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:
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:
Identifique o nome do conjunto.
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.
Descreva o que há de errado com o conjunto. Esse campo é omitido se nenhum erro for encontrado.
Uma ação recomendada para a reparação de erros. Esse campo é omitido se nenhum erro for encontrado.
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.
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.
Identifica erros de dados ou ausência de erros de dados conhecidos.
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:
READ: erros de E/S ocorridos durante uma solicitação de leitura
WRITE: erros de E/S ocorridos durante uma solicitação de gravação
CKSUM: erros de soma de verificação, significam que o dispositivo retornou dados corrompidos como resultado de uma requisição de leitura
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.
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.
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.
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:
Transição de estado do dispositivo – Se um dispositivo passa a ser FAULTED, o ZFS registra uma mensagem indicando que a tolerância a falhas do pool pode estar em risco. Uma mensagem semelhante é enviada se o dispositivo passar a ser on-line, restaurando a normalidade do pool.
Corrupção de dados – Se for detectado qualquer tipo de corrupção de dados, o ZFS registra uma mensagem descrevendo quando e onde a corrupção foi detectada. Esta mensagem é registrada somente na primeira vez que a corrupção é detectada. Os acessos subseqüentes não geram mensagens.
Falhas de conjunto e de dispositivos: se ocorrer uma falha de conjunto ou de dispositivo, o daemon do gerenciador de falhas relata esses erros através de mensagens syslog bem como o fmdump.
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.