Como testar a correção do sistema de arquivos feita pelo fsck

3

Como se certificar de que o fsck está corrigindo corrupções enquanto mantém a integridade do sistema de arquivos?

Suponha que os clientes estão escrevendo muitos arquivos através do NFS para o servidor, e acontece algo que causou corrupção (shutdown sujo / outro kernel panic). Portanto, o estado atual do sistema de arquivos não é conhecido (gravação parcial, etc). Então, se executarmos o fsck, ele corrigirá corrupções (por exemplo, blocos inválidos), e o sistema de arquivos agora está supostamente em dia. Como posso ter certeza de que meu sistema de arquivos * i * está atualizado?

Em comum, eu usaria o diff ou o dt para verificar novamente a origem da qual os arquivos estavam sendo gravados. Mas neste caso, digamos que a fonte não esteja mais presente depois de gravar os arquivos.

    
por user4858 05.03.2011 / 11:15

2 respostas

2

O fsck retorna seu sistema de arquivos para um estado consistente . Isso não é necessariamente o estado "mais recente" do sistema de arquivos, porque esse estado pode ter sido perdido no travamento. Na verdade, se houvesse arquivos gravados pela metade no momento da falha, o sistema de arquivos não seria deixado em um estado consistente, e é precisamente isso que o fsck foi projetado para reparar. Em outras palavras, depois de executar o fsck, seu sistema de arquivos é o mais atualizado possível.

Se o seu aplicativo precisar de feedback sobre o que está armazenado no disco em caso de falha, você precisará fazer mais trabalho do que apenas gravar em um arquivo. Você precisa ligar para sync ou melhor fsync , após uma operação de gravação para garantir que aquela gravação em particular tenha sido confirmada no disco (mas se você acabar fazendo isso muito, seu o desempenho será suspenso e você desejará alternar para um mecanismo de banco de dados). Você precisará de um sistema de arquivos com registro no diário configurado para a sobrevivência máxima de falhas (em oposição à velocidade máxima).

A propriedade que uma operação (como uma gravação em disco) que foi executada não pode ser desfeita (mesmo em caso de falha do sistema) é chamada durabilidade . É uma das quatro propriedades fundamentais dos bancos de dados (ACID) . Se você precisar dessa propriedade, leia as transações .

Embora os sistemas de arquivos sejam um tipo de banco de dados, eles geralmente não são projetados para se dar bem com relação às propriedades do ACID: eles têm mais ênfase na flexibilidade. Você obterá melhor durabilidade de um mecanismo de banco de dados dedicado. Em seguida, considere o que acontece no caso do seu disco, e não o seu sistema trava: para alta durabilidade, você também precisa de replicação.

    
por 05.03.2011 / 13:55
2

-N Não execute, apenas mostre o que seria feito.

Mais uma vez, você faria apenas algo como: shell> fsck -N /dev/sda1

    
por 05.03.2011 / 12:29