Entendendo o ReiserFS
Esse artigo envolve as principais características desse sistema de arquivos que é padrão em algumas importantes distribuições Linux. O texto foi feito com o objetivo de demonstrar porque a performance do Reiser é tão boa e os motivos pelos quais esse filesystem tem bastante reputação no mundo Linux.
Parte 2: Segurança e integridade dos dados
Conceito de journaling
Trata-se de um log ou registro onde são gravados todas as alterações em arquivos a serem feitas em um disco. Antes do filesystem efetuar qualquer gravação no HD, primeiramente é gravado no journaling a alteração a ser feita. Por exemplo, ao criar um arquivo novo, antes do mesmo ser devidamente gravado e alocado no disco, primeiramente o Reiser informa ao JOURNAL que uma operação de inserção será feita.
Quando você tentar fazer qualquer alteração, no momento que você salvar o arquivo o Reiser inicialmente passará as instruções a serem gravadas para o Journal, e logo após essa tarefa é que o arquivo será finalmente alocado na partição. Ou seja, primeiro o sistema informa ao journal o que será feito e só então ele realiza a tarefa de modo permanente no disco.
Em caso de desligamento inadequado ou algum crash no sistema, o Reiser pergunta ao serviço de journaling se houve operações a serem feitas no disco que não foram completadas e em caso de positivo é executado o fsck do Reiser, que simplesmente grava essas operações não completadas de maneira definitiva no HD.
Após efetuado a gravação, as operações que ficam registradas no journal são descartadas e o recurso fica sempre esperando por novas operações para gravar no log antes de gravar completamente no disco.
O journaling é uma tecnologia implementada na maioria dos sistemas de arquivos modernos, não se aplica somente ao ReiserFS. A mesma idéia, embora com pequenas diferenciações, funciona também no EXT3, patrocinado pela Red Hat, XFS da Sillicon Graphics e o JFS da IBM.
Sistemas de arquivos mais antigos como EXT2 e Fat16/32 não possuem essa característica e por isso é altamente suscetível à falhas de segurança dos dados, perdendo a sua integridade a todo o momento que ocorre panes ou desligamento inadequeados. Embora o sistema operacional informe que a partição não foi devidamente desmontada e é necessário realizar uma verificação para checar a integridade física e lógica do disco(s).
Quando o sistema operacional obriga uma verificação forçada em partições com EXT2 ou Fat, por exemplo, o tempo de verificação é extremamente lento, piorando de acordo com a maior capacidade do HD. Isso acontece porque como esses sistemas de arquivos não possuem JOURNAL, os mesmo não sabem em que ponto as coisas pararam na ultima vez que o sistema estava estável. Então é feita uma verificação em cada arquivo, em cada bloco do disco por inteiro até se encontrar o problema e repara-lo. É por isso que o fsck do Linux e o scandisk do Windows demoram tanto para serem feitos. Em sistemas de servidor, o fator disponibilidade é critico e ter um servidor com HDs de mais de 200 GB por exemplo esperando minutos e até horas por um scan é algo inadmissível em uma empresa.