Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Entendendo o ReiserFS

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Artigo 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.
    Por: Fernando Calheiros

    Objetivo
    O objetivo desse artigo é proporcionar ao leitor um fácil entendimento de como funciona o ReiserFS, suas vantagens e porque adota-lo como filesystem padrão em detrimento ao mais difundido EXT3.

    Esse artigo não tem finalidade de defender um ou outro filesystem, mas apenas explicar porque a performance de um é superior a de outro. A intenção também é "explicar o porque das coisas", pois como iniciante e profundo curioso que sou, não me contentei com as diversas opiniões sugerindo ou que o Reiser é melhor, ou que o EXT3 seja. Com bases nas pesquisas que fiz resolvi enviar esse simples artigo pra comunidade afim de ajudar aqueles que como eu tem curiosidade de entender um pouco mais a forma com que o Reiser trabalha.

    Introdução

    O REISERFS foi criado por Hans Reiser há cerca de 10 anos atrás que também fundou uma equipe chamada NAMESYS (Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...) com o objetivo de desenvolver um sistema de arquivos rápido, robusto, seguro e de fácil recuperação em caso de problemas. A partir do Kernel 2.4 o Reiser passou a ser um dos filesystems suportado pelo sistema operacional.

    Com o tempo, o Reiser passou a ser incluído como filesystem padrão de algumas distribuições respeitadas, citando: SuSE, Slackware 8.1 e Gentoo. Isso trouxe popularidade a esse sistema de arquivos e hoje o mesmo faz parte da lista de ótimas escolhas para os linuxistas o que implica em muitos debates sobre o desempenho do Reiser em relação a outros sistemas de arquivos, principalmente o EXT3.

    Ao observar superficialmente esse file system é inevitável a comparação com as estruturas de banco de dados. Na verdade, o ReiserFS trata uma partição do disco como se fosse uma tabela de uma base de dados onde diretórios, arquivos e metadados são armazenados em uma eficiente estrutura chamada de "árvore balanceada", a B* Tree, o qual é, junto com o recurso de journaling, as duas engrenagens responsáveis pela popularidade do ReiserFS.

    Vamos verificar as vantagens e desvantagens do Reiser em torno da questão de segurança e integridade dos dados e velocidade na manipulação de arquivos pelo filesystem.

    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.

    Por que o Reiser FS é mais rápido e otimiza melhor o espaço em disco?
    Velocidade e otimização do espaço em disco: Por que o Reiser FS é mais rápido e otimiza melhor o espaço em disco?

    Como já explicado, um fator que melhora o desempenho do Reiser em relação ao EXT3 por exemplo é a opção de apenas utilizar os metadados no journal.

    Porém outro fato importantíssimo é a facilidade na manipulação de pequenos arquivos. Isso acontece devido a utilização das arvores balanceadas B*, que organiza todos os dados no sistema de arquivo. É graças a essa estrutura que é possível termos quantos milhares de diretórios quisermos em um único diretório sem ter degradação na performance. Além disso existem outros recursos no Reiser que melhoram ainda mais a performance com a manipulação de arquivos de tamanho reduzido.

    Uma característica importante é que o Reiser não aloca espaço em disco de acordo com os blocos disponíveis no HD, mas sim aloca o tamanho exato que é necessário para aquele arquivo. Se você grava n arquivos que no total de 100 bytes, esses são todos agrupados em único bloco, ao invés de por cada arquivo em seu próprio bloco, como acontece no EXT3.

    Isso significa que além de mais rápido devido ao journal e a forma de organização dos arquivos, o Reiser também consegue armazenar mais em um HD do que conseguiria com o seu concorrente principal, o EXT3.

    Um exemplo prático é instalar a distribuição Goblinx. Instalado em EXT3 o tamanho ocupado em disco é de 1 GB enquanto no Reiser a mesma instalação tem em uma partição Reiser 800 MB de espaço utilizado.

    Por último, outro recurso que garante maior performance ao Reiser é que os arquivos em si e seus metadados são gravados muito próximos um do outro. Ou seja os arquivos podem ser lidos em uma única movimentação do cabeçote de leitura do HD, evitando assim, com que o mecanismo tenha que se deslocar diversas vezes.

    Abaixo segue uma tabela sobre o tamanho máximo de um arquivo no ReiserFS, de uma partição, quantos diretórios ele pode ter.

    Máximo de arquivos


    232 - 3 => 4 Gi - 3


    232 - 3 => 4 Gi - 3

    Maximo de arquivos que um diretório pode ter


    518701895,
    mas na pratica esse valor é limitado pela função de hash. r5 hash permite em torno de 1 200 000 nomes de arquivos sem dar problema


    232 - 4 => 4 Gi - 4
    mas na pratica esse valor é limitado pela função de hash. r5 hash permite em torno de 1 200 000 nomes de arquivos sem dar problema

    Tamanho máximo de um arquivo


    231 - 1 => 2 Gi - 1




    260 - bytes => 1 Ei

    Maximo de links para um arquivo


    216 => 64 Ki


    232 => 4 Gi

    Tamanho máximo para uma partição


    232 (4K) blocos => 16 Ti


    232 (4K) blocos => 16 Ti

    Retirado do site:

    * Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...


    Observe que até a versão 3.5, o Reiser suportava um arquivo com no máximo 2 GB. A partir da versão 3.6 essa limitação foi corrigida.

    Benchmark

    Há vários testes de benchmark interessantíssimos comparando o Reiser com diversos outros sistemas de arquivos. Para quem tiver curiosidade dêem uma olhada no seguinte endereço:

    * Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar..., item do menu BENCHMARKS

    Conclusão
    O ReiserFS possui um rápido recurso de Journaling garantindo disponibilidade ao seu desktop ou servidor. Isso significa que você não perderá tempo com verificações do FSCK e que em caso de acontecer algo inesperado o sistema será recuperado em poucos segundos.

    Esse sistema de arquivos também é baseado em um sofisticado conceito algorítmico de árvores balanceadas, garantindo maior performance principalmente na manipulação de arquivos pequenos.

    Para o que ou quem utiliza arquivos pequenos?

    Há diversos exemplos a serem dados. Os ganhos de performances serão substanciais em casos como:

    * compilação de código fonte, no qual diversos arquivos são necessários durante o processo;
    * utilização do comando find em diretórios muito grandes que possuem arquivos e N diretórios dentro é visivelmente mais rápido;
    * servidores Web que armazenem centenas de documentos HTML e arquivos de imagens;
    * servidor cachê, como o exemplo já dado utilizando-se Squid em ReiserFS;
    * uma partição de disco que armazena apenas imagens de CD-ROM.

    Existem diversas aplicações como as citadas acima que há maior produtividade utilizando-se ReiserFS. Algo importante de informar é que o fato de o ReiserFS ser muito bom em gerenciar arquivos pequenos não significa que o seu tratamento com arquivos grandes seja ruim. Na verdade, em muitos casos não haverá diferença de performance quando se trata de arquivos enormes tanto ReiserFS como em outros filesystems.

    Por último, o armazenamento do espaço em disco é mais eficiente. O ReiserFS armazena em um único bloco quantos arquivos couberem, não tendo que especificar um bloco pra cada arquivo. A proximidade entre os metadados e os dados do arquivo em si no disco físico garante maior performance pois qualquer operação de I/O é feito uma única vez.

    Uma desvantagem do Reiser que encontrei que pode ser decisiva dependendo do objetivo da aplicação é o mal funcionamento do ReiserFS com NFS. Embora exista alguns patches que aparentemente corrigem os bugs, encontrei algumas informações que sugerem que utilizar ReiserFS e NFS apresenta bastante instabilidade.

    Outro ponto negativo também é que o ReiserFS não funciona muito bem com softwares de RAID.

    Concluindo, aí esta uma analise geral desse eficiente sistema de arquivos. Espero que as informações aqui tenham contribuindo com o conhecimento e ajudem a tomar uma decisão convicta sobre que tipo de file system usar.

    Referências bibliográficas
    NAMESYS, site oficial dos desenvolvedores do ReiserFS,Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    Fonte: vivaoLinux
    Postado Por: RedDeviL
X
Working...
X