Journaling é um recurso usado pelos sistemas de arquivos que consiste em uma área dedicada para registros, armazenando todas as
ações que serão
feitas nos arquivos, como gravação e/ou alteração de dados, por exemplo. Seja armazenamento somente de metadados, ou de dados de arquivos,
permitindo restaurar o sistema de arquivos, caso aconteça algum erro inesperado.
A principal finalidade do 'journaling' é recuperar o sistema de arquivos de erros (tolerância de falhas), sejam eles causados pelo sistema, aplicações
ou desligamentos
incorretos de forma forçada ou inesperada.
Com isso é possível localizar todas as operações que não haviam sido completadas, restaurando a consistência do sistema de arquivos e permitindo
que o sistema
operacional continue sendo utilizado.
Aí você ainda fica com dúvida e pergunta: Mas como assim?
Com o 'jounaling', o sistema de arquivos passa a registrar em uma área especial chamada
journal, ou
log, as ações que
serão feitas nos
arquivos (gravação ou alteração de dados, por exemplo) antes da gravação no FS em si.
Após a gravação no sistema de arquivos, seja dos blocos de arquivos ou dos metadados, as operações registradas no log são tidas como concluídas e,
portanto,
eliminadas. Note que todo este procedimento acontece de maneira extremamente rápida.
Mas em que exatamente, o 'journaling' mostra-se vantajoso?
Os registros no log são escritos antes que as mudanças efetivamente ocorram no sistema de arquivos. Estes registros somente são eliminados quando
as mudanças
são executadas nos arquivos.
Se, por exemplo, o computador for desligado repentinamente (como ocorre em falta de energia elétrica), o sistema de arquivos verificará os registros
existentes no
'journal' e executará aquilo que estiver marcado como não realizado. Isso faz com que o risco de perda de dados diminua drasticamente, já que o
sistema operacional
saberá 'onde parou'.
Porém temos que ter em mente que este recurso não é anti-falhas e sim, um recurso para tolerar falhas até um certo ponto. Pois esta tolerância não
previne 100% de
erros como os citados anteriormente, toda essa tolerância a falhas pode acabar de uma hora para outra, após várias quedas de energia ou
desligamentos forçados.
Contudo, nem todos os sistemas de arquivos que usam o 'journaling' possuem uma boa implementação do mesmo, fazendo com que este recurso não
seja 100%
confiável.
Se você começar a desligar o sistema incorretamente com frequência, vai perceber que, algumas vezes, o sistema não será capaz de verificar o
'journal', e o sistema
de arquivos terá que ser verificado usando um utilitário para verificação da integridade do sistema de arquivos, tentando localizar todas as operações
que não haviam
sido completadas para tentar recuperar a integridade de alguns arquivos, fazendo com que, quase sempre, alguns arquivos sejam perdidos.
Técnicas de journaling
- Journal Físico: Consiste em registrar uma cópia antecipada de todos os blocos de arquivos que serão posteriormente gravados no
sistema de
arquivo principal. Se houver uma falha quando o sistema de arquivos está gravando, a gravação pode simplesmente ser repetida até a conclusão,
quando o sistema
de arquivo for montado da próxima vez.
Se houver uma falha quando a gravação está sendo registrado no journal, a gravação parcial terá um checksum ausente, ou
incompatível, e pode ser
ignorada na próxima montagem do sistema de arquivos.
- Journal Lógico: Consiste em gravar apenas os metadados que sofrerão ações, tais como leitura/gravação e alteração dos arquivos.
Um sistema de
arquivos, com uma 'journal' lógico, ainda recupera-se rapidamente após um acidente, mas pode permitir que os dados não sejam recuperados devido
a não gravação
antecipada dos blocos do arquivo alterado ou em uso, causando corrupção de dados. Porém, isso aumenta o desempenho, nota-se mais isso na
inicialização do
sistema.
Outras informações
Os sistemas de arquivos para
GNU/Linux: JFS, XFS, ReiserFS, ext3 e ext4, possuem 'journaling'.
O arquivo de log do 'journaling' pode estar no mesmo sistema de arquivos, ou em um sistema de arquivos de outra partição, e/ou outro disco. E seu
tamanho pode
ser aumentado também para melhorar o desempenho.
Então o 'journaling' torna-se indispensável para os sistema de arquivos usados hoje e no futuro, pois é através deste recurso que temos uma certa
tolerância a certos
acontecimentos não planejados.