Journaling

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

Um sistema de arquivos com journaling é aquele que mantém um log (journal), normalmente circular, de todas as mudanças no sistema de arquivos antes de escrever os dados no disco.

Este tipo de sistema de arquivos oferece uma melhor probabilidade de não sofrer corrupção de dados no caso de o sistema travar ou faltar energia, e uma recuperação mais rápida, porque não há necessidade de verificar todo o disco, somente aqueles que pertenciam a um log que não foi devidamente fechado.

Exemplos de sistemas de arquivos que suportam journaling: Ext3, Ext4, JFS, JFFS, JFFS2, LogFS, NTFS, Reiser4, ReiserFS e XFS.

Ícone de esboço Este artigo sobre Informática é um esboço. Você pode ajudar a Wikipédia expandindo-o.


Análise[editar | editar código-fonte]

A atualização de sistemas de arquivos para refletir mudanças em arquivos e diretórios geralmente requer muitas operações de escrita. Isso possibilita que uma interrupção (como uma queda do fornecimento de energia ou um crash do sistema entre as operações de escritas deixar as estruturas de dados em um estado intermediário inválido.

Por exemplo, a exclusão de um arquivo em um sistema de arquivos Unix envolve três etapas: [1]

  1. Remoção da entrada do diretório;
  2. Liberação do inode para o pool de inodes disponíveis;
  3. Retorno de todos os blocos usados ​​para o pool de blocos disponíveis do disco.

Se ocorrer uma falha entre os passos 1 e 2, haverá um inode órfão e, portanto, um vazamento de armazenamento (storage leak em inglês). Por outro lado, se o crash ocorrer entre os passos 2 e 3, o arquivo ainda não excluído será marcado como disponível e possivelmente será substituído por outro dado.

Detectar e recuperar essas inconsistências normalmente requer uma completa checagem das suas estruturas de dados, por exemplo, por uma ferramenta como fsck (o verificador do sistema de arquivos). Isso geralmente deve ser feito antes que o sistema de arquivos seja novamente montado para acesso de leitura-escrita (read-write). Se o sistema de arquivos for grande e se houver relativamente pequena largura de banda de E/S, isso pode demorar muito tempo e resultar em tempos de parada mais longos se ele bloquear o resto do sistema de voltar à ativa.

Para evitar essa demora, um sistema de arquivo com journaling aloca uma área especial -- o journal -- no qual registra com antecedência as mudanças que fará. Após um acidente, a recuperação simplesmente envolve a leitura do journal do sistema de arquivos e a repetição das mudanças deste journal até o sistema de arquivos voltar a ser consistente. Essas mudanças são, portanto, atômicas (indivisíveis) na medida em que todas as mudanças são realizadas (repetidos completamente durante a recuperação), ou não são reproduzidos de forma alguma (são ignorados porque ainda não tinham completamente escrito no jornal antes da ocorrência do crash).

  1. Sistemas de arquivos de Tanenbaum, A.S. (2008). Sistemas operacionais modernos (3ª ed., Pp. 287). Upper Saddle River, NJ: Prentice Hall.