Sistemas de arquivos EXT3 e ReiserFS no GNU/Linux

Dentre os mais de vinte sistemas de arquivos suportados pelo GNU/Linux, se destacam o EXT3 e o ReiserFS. Este artigo apresenta uma descrição das características funcionais e estruturais de cada sistema, bem como um comparativo dessas propriedades.

[ Hits: 233.226 ]

Por: Perfil removido em 17/02/2005


O sistema de arquivos ReiserFS



Um modo de se organizar os dados é no formato de árvores. Quando organizamos a informação em um computador, a classificamos tipicamente em pilhas (chamadas de nós ou nodes), e há um nome (ponteiro) para cada pilha. Esse ponteiro é usado para encontrar a pilha. Alguns dos nós podem conter ponteiros através dos quais podemos localizar outros ponteiros para outros nós.

Uma árvore é uma estrutura organizada que tem algumas propriedades úteis para essa finalidade conforme Figura 3.

Assim define-se, segundo Namesys (2004), uma árvore como:

1. Um conjunto de nós organizados em um nó raiz (Root node), e zero ou mais conjuntos adicionais de nós chamados sub-árvores.

2. Cada sub-árvore é uma árvore.

3. Nenhum nó na árvore aponta ao nó raiz, e há exatamente um ponteiro de nó na árvore que aponta para cada nó da árvore que não seja o nó raiz.

4. O nó raiz tem um ponteiro para cada uma das sub-árvores, isto é, um ponteiro para o nó raiz da sub-árvore.


Fonte: Disponível em http://www.namesys.com

As árvores balanceadas ("balanced tree") (B*) usadas pelo ReiserFS para organizar o sistema de arquivos são uma versão melhorada de árvores B+, onde não existe uma árvore diferente para cada diretório e sim, cada qual possui uma sub-árvore da principal.

O ReiserFS é um sistema de arquivos com suporte a "journaling" concebido por Hans Reiser e mantido pela empresa The Naming System Venture . São seus patrocinadores as empresas SuSE e Linspire. O ReiserFS já é o sistema de arquivos padrão nas distribuições GNU/Linux da SuSE, Gentoo e Linspire.

O ReiserFS é uma camada semântica com métodos e funções que são referenciados para executar tarefas no sistema de arquivos fazendo o uso de plug-ins que evocam chamadas de sistema para esses métodos e funções.

Esse método de acesso trata toda a partição como se fosse uma única tabela de banco de dados contendo diretórios, arquivos e metadados dentro de uma mesma árvore. A implantação dessa característica exigiu que técnicas mais complexas de indexação fossem implementadas no ReiserFS, tornando mais eficientes seus tempos de resposta comparados aos de outros sistemas. ReiserFS usa uma árvore finita (o número de nós é limitado).

Outro termo importante para a definição de árvores é o termo Edge. Diferentemente de um ponteiro que é unidirecional, o Edge é bidirecional, ou seja, pode ser seguido de um nó a outro e desse para seu antecessor. Então se pode dizer que Edge não é ponteiro.

Atribuímos a tudo que está armazenado na árvore uma chave. A pesquisa de localização se dá por meio das chaves. O uso das chaves nos dá uma flexibilidade adicional para classificação da informação, se essas chaves forem pequenas elas nos dão um modo compacto de especificar como encontrar as informações. Isto também limita o tipo de informação que podemos usar como uma chave.

Este limite restringe sua utilidade, e assim tem-se uma camada de armazenamento, que encontra dados por chaves, e uma camada semântica, que tem um sistema de nomes rico.

A busca por chaves, então, agiliza a pesquisa em árvores, mas limita o tipo de chaves que podemos trabalhar.

O ReiserFS possui suporte a arquivos maiores que 2GB.

ReiserFS usa árvores balanceadas para tornar o processo de busca de arquivos, informações sobre segurança e outros metadados mais eficientes. Para arquivos muito pequenos, seus dados podem ser armazenados próximos aos metadados, então, ambos podem ser recuperados com um pequeno movimento do mecanismo da "cabeça" de leitura do disco. Essa propriedade vai contribuir para um melhor desempenho caso uma aplicação necessite abrir muitos arquivos pequenos rapidamente.

Outra grande vantagem do ReiserFS é a alocação dinâmica de inodes, já que esse sistema de arquivos não os aloca em espaços fixos ou blocos e sim, aloca o tamanho exato que o arquivo precisa. Em sistemas baseados em inodes fixos, como o EXT3, o espaço no disco é alocado em blocos que variam de 512 a 4096 bytes ou até maior, caso o arquivo exceda um múltiplo exato do tamanho do bloco.

A leitura e escrita de arquivos grandes são limitadas pela velocidade do dispositivo de armazenamento e pelo canal de entrada e saída da controladora de discos. Já o acesso a arquivos pequenos, como scripts do Shell, é limitado pela eficiência do projeto do sistema de arquivos. A razão disso é que a abertura de um arquivo requer a leitura dos metadados sobre ele que estão armazenados no inode do diretório em uma área distinta dos dados. Após localizar a entrada referente ao arquivo no diretório é que o sistema realiza a leitura dos setores que contêm os dados.

Além disso, o sistema precisa examinar os metadados relativos à segurança para verificar se o usuário tem permissão de acesso ao arquivo, isso significa leituras adicionais. O sistema pode gastar mais tempo decidindo entre permitir o acesso e localizar as entradas de dados do que se as buscasse dentro do próprio arquivo. Entre o EXT3 e o ReiserFS, a principal diferença é que o EXT3 tenta guardar informações tanto sobre o metadados, ou seja, as informações sobre o espaço ocupado pelos arquivos e suas permissões quanto sobre os dados em si, enquanto o ReiserFS guarda apenas informações sobre os metadados.

Para completar, o ReiserFS é rápido. Seu ganho de velocidade em relação a outros sistemas de arquivos varia de acordo com cada operação em disco. Em quase todas as operações ele é mais rápido, e em algumas não. Não é incomum alguém utilizar o ReiserFS com milhares de arquivos no mesmo diretório, uma tarefa para a qual o ReiserFS é especialmente adaptado.

Seu uso de funções hash e árvores balanceadas, ao invés de seqüências infindáveis de inodes tornam a procura de um arquivo em uma dezena ou em uma grande quantidade uma operação bem rápida.

No caso de um desligamento incorreto do sistema, o ReiserFS é capaz de recuperar a consistência do sistema de arquivos em frações de segundo e a possibilidade de perda de pastas ou partições é nula. Em compensação, os arquivos que eventualmente estiverem sendo gravados no exato momento em que acabou a energia ficarão com seus dados alterados. Você continuará tendo acesso aos arquivos normalmente, mas o conteúdo estará truncado ou incompleto.

Já o EXT3 tenta sempre preservar não só o metadados, mas também os dados dos arquivos em si. Isto se revela ao mesmo tempo uma força e uma fraqueza. A vantagem é que existe uma possibilidade maior de recuperar os arquivos que estiverem sendo gravados no exato momento em que acabar a energia. Por outro lado o journal guarda mais informações e é acessado mais freqüentemente, o que causa degradação no desempenho (é justamente por isso que o ReiserFS costuma se sair melhor nos benchmarks) e ao mesmo tempo faz com que exista a possibilidade do próprio journal se corromper durante o desligamento.

Apesar de ser muito difícil a corrupção do sistema ReiserFS, também pode acontecer. Porém o gerenciamento de setores defeituosos do sistema de arquivos ReiserFS é simples de ser realizado já que as ferramentas para essa operação estão disponíveis. Segundo Morimoto (2004), pode-se usar o comando badblocks para fazer um exame de superfície e mostrar uma lista com os setores defeituosos. Para usar em conjunto com o ReiserFS, é necessário especificar o tamanho dos blocos (em bytes). Se você não usou nenhuma opção especial ao formatar a partição, os blocos terão 4096 bytes. O comando para verificar a partição /dev/hda1, por exemplo, fica:

# badblocks -b 4096 /dev/hda1

Ainda segundo Morimoto (2004), o ReiserFS é capaz de marcar, via software, setores defeituosos que for encontrando. Isso é feito automaticamente, assim como no NTFS do Windows XP. Só é preciso marcar setores defeituosos manualmente em sistemas de arquivos antigos, como o FAT32 e o EXT2.

Para ver se existem setores defeituosos na partição, marcados via software, execute o comando:

# debugreiserfs /dev/hda1

Caso exista algum erro no sistema de arquivos, causados por desligamentos incorretos, por exemplo, você pode corrigir com o comando:

# reiserfsck /dev/hda1

O ReiserFS é um sistema de arquivos relativamente novo, mas que conta com o patrocínio de grandes empresas. Apesar de ainda estar em desenvolvimento, seu uso em servidores de produção já é uma realidade. Dadas as características do sistema tem se mostrado como uma solução a mais para os usuários do sistema GNU/Linux.

Página anterior     Próxima página

Páginas do artigo
   1. Resumo
   2. Introdução
   3. Formatação lógica de dispositivos
   4. Partições
   5. Sistemas de arquivos
   6. O sistema de arquivos EXT3
   7. O sistema de arquivos ReiserFS
   8. Conclusões
   9. Referências bibliográficas
Outros artigos deste autor

Slitaz Linux, uma distro pequena mas...

A internet é inocente

Introdução ao Conceito de Hardening

Pesquisa com slocate, locate e updatedb

Como instalar Postgres 8 no Linux em 10 passos rápidos

Leitura recomendada

Verificando e marcando badblocks

Arquivos duplicados? fdupes neles!

Dm-crypt - Criptografia no filesystem - Kernel 2.6

Restaurar arquivo ou diretório apagado em file system ext3

GmailFS - sua conta de e-mail como um sistema de arquivos no Slackware 10.2

  
Comentários
[1] Comentário enviado por fabio em 17/02/2005 - 04:13h

Sempre tive vontade de aprender detalhadamente quais eram, de fato, as reais diferenças entre EXT3 e ReiserFS, porém toda a documentação que encontrava me deixava desencorajado. A maioria delas possui informações desorganizadas ou muito extensas.

Esse artigo definitivamente é o melhor documento que li sobre o assunto até hoje. Meus parabéns, já foi pra minha pasta de favoritos :)

[]'s

[2] Comentário enviado por reimassupilami em 17/02/2005 - 09:55h

cara, muito bom o artigo... dá uma geral bem legal sobre como funcionam os sistemas de arquivos... tb ficou muito boa a explicação sobre o ext3 e o reiserfs... toda vez que vou fazer uma nova instalação ficou na dúvida em qual usar, mas agora tenho mais base para me decidir...

falow...

[3] Comentário enviado por josir em 17/02/2005 - 16:56h

MUITO bom! Sem dúvida, foi o melhor artigo que eu já sobre FS. A referência bibliográfica está muito boa também.

Josir

[4] Comentário enviado por removido em 17/02/2005 - 20:50h

Otimo artigo..;-)

abraços..
flw

[5] Comentário enviado por fabrizmat em 18/02/2005 - 10:10h

Show de bola!!!

é muito bom saber os detalhes técnicos que envolvem as tecnologias, do que simplesmente escolher uma delas.

Fabio Rizzo
www.fabiorizzo.com

[6] Comentário enviado por removido em 18/02/2005 - 12:09h

RAPAAAAAAAAAZZZZZZZZZZZZZ!!!
Este keynes pode não ser um papa da economia mundial mas com certeza é o da informática.
Segundo tuto nota 1000 com qualidade excepcional!
E olha que ainda estou digerindo o anterior sobre updatedb etc. ;-))
Tb´ foi pro meu favoritos!


[7] Comentário enviado por Grobsch em 18/02/2005 - 14:50h

Parabéns pelo artigo...
Outro dia instalei o GoblinX em um partição ext3 e ele ocupou aproximadamente 1GB, contra os 800MB que ocupava em uma partição reiserfs.. Sempre usei reiserfs...

[8] Comentário enviado por Sl0ck em 18/02/2005 - 17:09h

Parabéns, Muito bom o artigo!!!!

[9] Comentário enviado por talegall em 19/02/2005 - 21:13h

Excelente! O artigo esta bem completo , as explicacoes claras e objetivas. Agora quando for fazer uma nova instalacao vou ver com olhos diferentes aquelas opcoes de sistema de arquivo e nao simplesmente ouvir os outros dizerem" escolha ESTA ". Pode ate aparentar nao ter diferencas significativas para o usuario comum, mas e muito importante saber o que se esta fazendo. Agradeco pelo esclarecimento.

[10] Comentário enviado por freakcode em 23/10/2005 - 16:31h

Excepcional artigo... bem pesquisado, bem explicado e com todas as informações técnicas detalhadas. Parabéns.

[11] Comentário enviado por widget em 15/11/2005 - 14:48h

O artigo é bom pra iniciantes que querem ter uma vizão bem geral mesmo. Pois nao ha nada tecnico, todos os pontos chaves sao dados superficialmente e muitos nem sao citados. O artigo é uma adaptaçao do artigo do morimoto sobre reiserfs, e mesmo o do morimoto nao tem nada de tecnico. Se alguem quiser conhecer como o reiserfs funciona visite http://www.namesys.com/.

[12] Comentário enviado por casterman em 08/01/2006 - 23:11h

ta legal seu artigo é bastante informante!!!

[13] Comentário enviado por DooM em 22/03/2006 - 15:57h

Muito bom o artigo, a pesquisa do autor e o empenho em compartilhar seus conhecimentos em torno das caracteristicas do EXT3 e do Reisers me levaram inclusive a me aderir a comunidade do vivaOLinux. Estava pesquisando sobre ext3 e reisers quando encontrei esse excelente artigo.
Faltou apenas fornecer alguns exemplos práticos de em quais circunstâncias poderiamos usar Reiser ou EXT3, mas nada grave.
Muito bom o artigo.

[14] Comentário enviado por maykonhammer em 09/04/2007 - 17:00h

parabéns pelo artigo cara!

[15] Comentário enviado por nuvem_negra em 01/09/2008 - 11:26h

Excelente artigo quem não sabia nada sobre sistemas de arquivos agora possui uma ótima referência.

[16] Comentário enviado por akiles5000 em 08/12/2008 - 20:16h

Nossa muito obrigado pelo artigp...
Esclareceu minhas duvidas xD

[17] Comentário enviado por evandro souza em 06/02/2009 - 21:12h

Prabéns pelo arquivo.
Muito bom

[18] Comentário enviado por MGinity em 17/05/2010 - 16:14h

Muito bom o artigo para quem não conhecia bem alguns detalhes dos sistemas de arquivos EXT3 e ReiserFS no GNU/Linux... serve como referência!
Parabéns! Continue escrevendo assim...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts