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.
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.
[1] Comentário enviado por angeloshimabuko em 07/06/2006 - 20:06h
O Reiserfs versão 3 não garante a integridade dos dados, apenas dos metadados (informações referentes aos arquivos: permissões, donos, datas, etc.). O único dos principais sistemas de arquivos para Linux que preserva a integridade dos dados é o Ext3 (opção data=journal). O XFS e o JFS também fazem o journaling apenas de metadados. A otimização do uso de espaço em disco no Reiserfs v3 acarreta perda de desempenho; os principais testes de benchmark realizados utilizam a opção notail; além disso, sem a opção notail o consumo de CPU é muito grande. Mesmo com a opção notail o desempenho do Reiserfs v3 é muito bom com arquivos pequenos (o termo pequeno é muito vago na literatura atual: alguns dizem até 10 KB, outros 20 KB); tem sido superior aos outros 3 sistematicamente com arquivos menores que 10 KB, e o XFS tem vencido os testes com arquivos maiores que 100 KB; não encontrei dados para compará-los com arquivos na faixa intermediária. O grande problema do Reiserfs v3 é o índice de fragmentação e a ausência de ferramenta para desfragmentação (o Hans prometeu uma para o Reiser4). O XFS possui uma (xfs_fsr) e o JFS aparentemente também tem. Para desfragmentar volumes com o Ext3 e o Reiserfs v3 deve-se fazer um backup (ou dump), apagar (ou reformatar) e restaurar tudo. Finalmente, o Reiserfs não utiliza a estrutura de árvore para armazenar os arquivos, exceto quando são menores que 4 KB; para arquivos maiores são utilizados ponteiros para alocação de blocos não-formatados (indirect items), de forma análoga ao Ext3 (ambos são ditos usar alocação por blocos). O XFS e o JFS usam alocação por extensão (extents), i.e., utilizam uma estrutura, também em árvore, para ordenar (decrescentemente) e alocar conjuntos de blocos contíguos para diminuir a fragmentação de arquivos.
[4] Comentário enviado por DooM em 08/06/2006 - 08:45h
Obrigado pelos esclarecimentos Angelo, você poderia citar algum link ou outra fonte que eu pudesse dar uma olhada? Como dito no inicio, esse artigo foi feito com base nos links relacionados na referencia bibliografica o que inclui o próprio site da Namesys.
Obviamente não encontrei os defeitos que você citou sobre a performance do disco, a não segurança a integridade dos dados e os locais que pesquisei todos citam a utilização de arvore.
Onde poderia checar mais informações como as prestadas por você?
Obrigado pela ajuda e possível esclarecimento.
[6] Comentário enviado por angeloshimabuko em 08/06/2006 - 12:27h
Um excelente artigo que li sobre o Reiserfs foi do Florian Buchholz em: <http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php>. Veja o benchmark feito por Hans Ivers em 2006 (<http://www.debian-administration.org/articles/388>), que cita outros 2 testes. Um bom artigo de referência sobre os principais sistemas de arquivos e sua escalabilidade, embora desatualizado, foi escrito por Bryant, Forester e Hawkes: "Filesystem performance and scalability in Linux 2.4.17"; para a Usenix de 2002.
[7] Comentário enviado por agk em 08/06/2006 - 14:24h
Eu utilizo reiserfs há bastante tempo e nunca tive problemas.
Quanto a utilizar reiserfs e nfs há vários relatos de que o sistema fica instável, mas não é o meu caso.
Sem contar que o reiserfs tem suporte a partições criptografadas (os outros tipos de sistemas de arquivos também devem ter, mas eu desconheço) e isso aumenta bastante a segurança local do sistema.
[8] Comentário enviado por removido em 09/06/2006 - 08:28h
Ótimo artigo.
eu passei para ReiserFS, e gostei das definições aqui encontradas. Veio a reforçar o que eu havia ouvido sobre este filesystem.
muito bom.
[9] Comentário enviado por coffnix em 09/06/2006 - 22:59h
Perfect!!!
Gostei do artigo. Realmente, discutir sobre o melhor sistema de arquivos é como discutir qual a melhor distro a se usar: "depende da utilização e necessidade de cada um"
Para o que eu uso, que é meu pc doméstico, realmente, ganhei mais desempenho, velocidade e segurança de dados armazenados.
Agora, na empresa onde trabalho, os vários servidores usam EXT3 e reiserFS. Pergunta, pra que os 2? NECESSIDADE!
Então é isso. Parabéns DooM e continue contribuindo com a nossa comunidade.
[12] Comentário enviado por juniormardoque em 17/05/2007 - 23:43h
Estava procurando por algum artigo sobre filesystem e encontrei este seu, muito interessante. e me deixou com vontate de pesquizar mais a fundo tudo isso. Valeu DooM continue contribuindo com a comunidade.
[17] Comentário enviado por mauriciotaveira em 20/10/2009 - 12:41h
Olá gostaria de contribuir com o assunto, outra desvantagem do reiserfs que não foi abordada é em relação ao consumo de CPU...
Gostaria se possivel de abrir esse parentese, para comentários e experiencias... Atualmente estou fazendo estudos do uso do reiserfs em cache para o squid3, o que tenho lido é que realmente o desempenho é muito bom...