Journaling
Um sistema de arquivos com journaling (em português, diário) é aquele que rastreia as alterações ainda não confirmadas na parte principal do sistema de arquivos, registrando as intenções de tais alterações em uma estrutura de dados conhecida como Log de dados (diário), que geralmente é um log circular. No caso de uma falha do sistema ou falha de energia, esses sistemas de arquivos podem ser colocados online novamente mais rapidamente com uma probabilidade menor de serem corrompidos.[1][2]
Dependendo da implementação real, um sistema de arquivos com journaling pode apenas controlar os metadados armazenados, resultando em melhor desempenho às custas de maior possibilidade de corrupção de dados. Alternativamente, um sistema de arquivos com journaling pode rastrear os dados armazenados e os metadados relacionados, enquanto algumas implementações permitem um comportamento selecionável a este respeito.[3]
Exemplos de sistemas de arquivos que suportam journaling: Ext3, Ext4, JFS, JFFS, JFFS2, LogFS, NTFS, Reiser4, ReiserFS e XFS.
História
Em 1990, o JFS, da IBM, foi um dos primeiros sistemas de arquivos comerciais UNIX rodando nos sistemas operacionais AIX que implementou o journaling. Depois, em 1993, a Microsoft implementou o journaling no sistema de arquivos NTFS e em 2001, foi implementado o journaling no ext3.
Análise
A atualização de sistemas de arquivos para refletir mudanças em arquivos e diretórios geralmente requer muitas operações de escrita separadas. Isso possibilita que uma interrupção (como uma queda do fornecimento de energia ou um crash do sistema) entre as operações de escritas deixem 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: [4]
- Remoção da entrada do diretório;
- Liberação do inode para o pool de inodes disponíveis;
- 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).
Referências
- ↑ Jones, M Tim (4 de junho de 2008), Anatomy of Linux journaling file systems, IBM DeveloperWorks, consultado em 13 de abril de 2009, cópia arquivada em 21 de fevereiro de 2009
- ↑ Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C. (21 de janeiro de 2014), Crash Consistency: FSCK and Journaling (PDF), Arpaci-Dusseau Books, consultado em 22 de janeiro de 2014, cópia arquivada (PDF) em 24 de janeiro de 2014
- ↑ «tune2fs(8) – Linux man page». linux.die.net. Consultado em 20 de fevereiro de 2015. Cópia arquivada em 25 de fevereiro de 2015
- ↑ Sistemas de arquivos de Tanenbaum, A.S. (2008). Sistemas operacionais modernos (3ª ed., Pp. 287). Upper Saddle River, NJ: Prentice Hall.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.