Guia de administração do ZFS Oracle Solaris

Verificando a integridade do sistema de arquivos ZFS

Não existe o utilitário fsck equivalente para o ZFS. Esse utilitário tem tradicionalmente servido a dois propósitos, ao reparo e à validação do sistema de arquivos.

Reparo de sistema de arquivos

Com os sistemas de arquivos tradicionais, a forma como os dados são gravados está inerentemente vulnerável a falhas inesperadas, provocando inconsistências de dados. Como um sistema de arquivos tradicional não é transacional, blocos não referenciados, contagens ruins de link ou outras estruturas de sistema de arquivos inconsistentes são possíveis. A adição de registros de ações resolve alguns destes problemas, porém pode trazer outros problemas quando o registro não puder ser revertido. A única forma para dados inconsistentes existirem no disco em uma configuração ZFS é através de falha do hardware (nesse caso o conjunto deve possuir redundância) ou quando um erro existir no software ZFS.

O utilitário fsck repara problemas conhecidos específicos para sistemas de arquivos UFS. A maioria dos problemas do conjunto de armazenamento do ZFS são relacionados com falhas de hardware ou falhas de energia. Muitos problemas podem ser evitados através da utilização de conjuntos redundantes. Se o conjunto for danificado por falhas de hardware ou queda de energia, consulte Reparando o dano de todo o pool de armazenamento do ZFS.

Se o conjunto não for redundante, haverá sempre a possibilidade de que a corrupção do sistema de arquivos torne alguns ou todos os dados inacessíveis.

Validação do sistema de arquivos

Além de efetuar a reparação do sistemas de arquivos, o utilitário fsck valida que os dados em disco não apresentam problemas. Tradicionalmente, essa tarefa requer a desmontagem do sistema de arquivos e a execução do utilitário fsck, levando o sistema possivelmente para o modo de usuário único no processo. Este quadro tem como resultado um tempo de inatividade proporcional ao tamanho do sistema de arquivos que está sendo verificado. Em vez de exigir um utilitário explícito para efetuar a verificação necessária, o ZFS fornece um mecanismo para efetuar verificações rotineiras de todos as inconsistências. Esse recurso, conhecido como scrubbing, é utilizado, geralmente, na memória e em outros sistemas como um método de detecção e prevenção de erros, antes que estes provoquem falha de hardware ou de software.

Controlando o scrubbing de dados do ZFS

Sempre que o ZFS encontrar um erro através de scrubbing ou ao acessar um arquivo por demanda, o erro é registrado internamente para que você possa ter uma visão geral rápida de todos os erros conhecidos no conjunto.

Scrubbing explícito de dados do ZFS

A forma mais simples de verificar a integridade dos dados é iniciar um scrubbing explícito de todos os dados do conjunto. Esta operação percorre todos os dados do pool uma vez e comprova que todos os blocos possam ser lidos. O scrubbing se desenvolve tão rápido quanto os dispositivos permitam, sem bem que a prioridade de qualquer E/S é menor que a prioridade dada às operações normais. Essa operação pode impactar negativamente o desempenho, embora os dados do conjunto devam permanecer utilizáveis e um pouco receptivos enquanto o scrubbing ocorrer. Para iniciar um scrubbing explícito, use o comando zpool scrub. Por exemplo:


# zpool scrub tank

O status da operação de scrubbing atual pode ser exibido utilizando o comando zpool status. Por exemplo:


# zpool status -v tank
  pool: tank
 state: ONLINE
 scrub: scrub completed after 0h7m with 0 errors on Tue Tue Feb  2 12:54:00 2010
config:
        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0

errors: No known data errors

Somente uma operação de scrubbing ativa por conjunto pode ocorrer por vez.

É possível parar uma operação de scrubbing em andamento com a opção -s. Por exemplo:


# zpool scrub -s tank

Na maioria dos casos, as operações de scrubbing devem chegar até o final para garantir a integridade dos dados. Interrompa uma operação de scrubbing de acordo com os seus próprios critérios se a performance do sistema é impactada pela operação.

Efetuar scrubbing de rotina garante E/S contínua para todos os discos do sistema. Scrubbing rotineiros apresentam a desvantagem de não permitir que o gerenciamento de energia coloque os discos inativos no modo de energia baixa. Se o sistema estiver geralmente realizando E/S sem parar ou se o consumo de energia não for uma preocupação, então esta questão pode ser ignorada sem perigo.

Para obter mais informações sobre a interpretação da saída zpool status, consulte Consultando status de pool de armazenamento do ZFS.

Scrubbing e resilvering de dados do ZFS

Quando um dispositivo é substituído, inicia-se uma operação de resilvering para mover os dados provenientes de cópias boas para o novo dispositivo. Esta ação é uma forma de scrubbing de disco. Portanto, somente uma dessas ações pode ocorrer em um dado momento no conjunto. Se uma operação de scrubbing estiver em andamento, a operação de resilvering suspende o scrubbing atual e o reinicia depois que o resilvering for concluído.

Para obter mais informações sobre o resilvering, consulte Exibindo o status do resilvering.