Fazer o journaling filesystem garantir contra corrupção após uma falha de energia?

25

Estou fazendo essa pergunta em nome de outro usuário que levantou o problema no Ubuntu sala de chat.

O journaling filesystem garante que não ocorra corrupção se ocorrer uma falha de energia?

Se essa resposta depender do sistema de arquivos, indique quais protegem contra a corrupção e quais não.

    
por Nathan Osman 06.05.2011 / 03:50

5 respostas

20

Não há garantias. Um Journaling File System é mais resiliente e menos propenso a corrupção, mas não está imune.

Tudo o que um jornal é é uma lista de operações que foram feitas recentemente no sistema de arquivos. A parte crucial é que a entrada no diário é feita antes que as operações ocorram. A maioria das operações tem várias etapas. A exclusão de um arquivo, por exemplo, pode implicar a exclusão da entrada do arquivo no índice do sistema de arquivos e a marcação dos setores na unidade como livres. Se algo acontecer entre as duas etapas, um sistema de arquivos com registro em diário poderá informar imediatamente e executar a limpeza necessária para manter tudo consistente. Esse não é o caso de um sistema de arquivos não com diário, que precisa examinar todo o conteúdo do volume para encontrar erros.

Embora esse registro no diário seja muito menos propenso a corrupção do que não o registro no diário, a corrupção ainda pode ocorrer. Por exemplo, se o disco rígido estiver com defeito mecânico ou se as gravações no diário estiverem falhando ou sendo interrompidas.

A premissa básica do journaling é que escrever uma entrada no diário é muito mais rápido, geralmente, do que a transação real que ela descreve. Assim, o período entre o sistema operacional que ordena uma gravação (de diário) e o disco rígido que a preenche é muito menor do que para uma gravação normal: uma janela mais estreita para que as coisas corram mal, mas ainda há uma janela.

Outras leituras

    
por 06.05.2011 / 04:51
15

Não.

O tipo mais comum de registro no diário, chamado de diário de metadados, protege apenas a integridade do sistema de arquivos, não dos dados. Isso inclui xfs e ext3 / ext4 no modo data=ordered padrão.

Se um sistema de arquivos sem registro no diário sofrer uma falha, ele será verificado usando fsck na próxima inicialização. fsck verifica cada inode no sistema de arquivos, procurando blocos marcados como usados, mas que não podem ser acessados (por exemplo, nenhum nome de arquivo) e marca esses blocos como não utilizados. Fazer isso leva muito tempo.

Com um sistema de arquivos de diário de metadados, em vez de fazer um fsck , ele sabe quais blocos estava no meio da mudança, portanto, pode marcá-los como livres sem pesquisar toda a partição por eles.

Existe um tipo menos comum de registro no diário, chamado diário de dados, que é o que o ext3 faz se você montá-lo com a opção data=journal .

Ele tenta proteger todos os seus dados escrevendo não apenas uma lista de operações lógicas, mas também todo o conteúdo de cada gravação no diário. Mas como está gravando seus dados duas vezes, pode ser muito mais lento.

Como outros apontaram, mesmo isso não é uma garantia, porque o disco rígido pode ter dito ao sistema operacional que armazenou os dados, quando ainda estava no cache do disco rígido.

Para obter mais informações, consulte o artigo do Sistema de arquivos de registro no diário da Wikipédia e a seção Modo de dados do documentação do ext4 .

    
por 06.05.2011 / 08:03
7

Um sistema de arquivos não pode garantir a consistência de seu sistema de arquivos se ocorrer uma falha de energia, porque ele não sabe o que o hardware fará.

Se um disco rígido armazena dados em buffer para gravar, mas informa ao sistema operacional que os dados foram gravados e não suporta as barreiras de gravação apropriadas, as gravações fora de ordem podem ocorrer quando uma gravação anterior não atingiu o disco, mas um posterior tem. Consulte esta resposta do servidor para mais detalhes.

Além disso, a posição da cabeça em um HDD magnético é controlada com eletroímãs. Se a energia falhar no meio de uma gravação, é possível que alguns dados continuem sendo gravados enquanto as cabeças se movem, corrompendo os dados em blocos que o sistema de arquivos nunca pretendeu ser escrito.

    
por 06.05.2011 / 05:26
2

O ZFS, que está próximo, mas não é exatamente um sistema de arquivos de registro no diário, está garantindo, por projeto, contra a corrupção após uma falha de energia.

Não importa se uma gravação em andamento for interrompida no meio, como nesse caso, sua soma de verificação estará certamente incorreta, então o bloco será ignorado. Como o sistema de arquivos é copy on write, os dados corretos anteriores (ou meta-dados) ainda estão no disco e serão usados em seu lugar.

    
por 06.05.2011 / 10:35
2

A resposta é na maioria dos casos não:

  • Como já mikel disse, a maioria dos sistemas de arquivos de registro no diário pode proteger apenas os metadados de arquivos (informações como o nome de um arquivo, seu tamanho, suas permissões, etc.), não os dados do arquivo (o conteúdo do arquivo). Isso está acontecendo porque proteger os dados do arquivo resulta em um sistema de arquivos muito lento (na prática, inútil).
  • Como o diário também é um tipo especial de arquivo armazenado no disco rígido, ele pode ser danificado após uma falha de energia. Assim, se o diário estiver corrompido, o sistema de arquivos não poderá concluir nenhuma transação incompleta que estava ocorrendo quando a falha de energia ocorreu.
por 06.05.2011 / 12:13