(Parte 1 de 2)

Muitos usuários aceitam apenas as opções padrão e nem consideram os diferentes sistemas de arquivos durante a instalação. Se o seu objetivo é desempenho, saber o que cada um oferece é fundamental. por Marcel Hilzinger

Comparativo de sistemas de arquivos Estrutura certa

Nas distribuições Linux atuais, é possível selecionar um sistema de arquivos com apenas alguns cliques. Em alguns casos, nem há possibilidade de fazer essa escolha durante a instalação. A maioria dos usuários simplesmente adere ao padrão de sua distribuição.

Para quem está de olho no desempenho, vale a pena considerar as opções de sistemas de arquivos antes da instalação. Levando em conta os resultados gerais dos testes realizados pela Linux Magazine, o XFS (com kernel 2.6) é tão rápido quanto o ReiserFS e o Ext3. Já a próxima versão do Reiser trará ganhos de velocidade enormes. Os desenvolvedores do Reiser4 estão procurando garantir a maior fatia possível do bolo dos sistemas de arquivos Linux, com um novo design interno e recordes de velocidade. No entanto, ainda há falhas básicas a serem eliminadas. Ou seja, ele não está pronto para uso em sistemas produtivos.

Padrões A maioria absoluta dos computadores Linux de hoje usa ou o Ext3 [1] ou ReiserFS [2] como os sistemas de arquivos principais, já que eles são as opçõespadrão na maioria das distribuições. O ReiserFS e o Ext3 não são particularmente rápidos nem possuem um conjunto impressionante de recursos. Mas os responsáveis pelas distribuições costumam turbinar seus sistemas de arquivos com patches de otimização. Isso faz muita diferença, em termos de desempenho. Sob esse ângulo, acaba sendo bastante difícil tirar conclusões universais sobre esses sistemas de arquivos. O quadro 1 (“Tudo começou com o Ext2”) ajuda a entender porque as distribuições usam sempre Ext2 ou ReiserFS.

Eles são dois membros da família de sistemas de arquivos com journaling. Basicamente, journaling é uma técnica de prevenção de perda de dados, em que eles são gravados duas vezes: primeiro na área de journal, depois em seu destino final. Assim é fácil ver porque um sistema de arquivos com journaling perde velocidade.

Por padrão, o Ext3 e o ReiserFS usam um modo especial, em que o sistema apenas grava os metadados (informações sobre mudanças no sistema de arquivos) na área de journal, em vez dos dados de fato. Para montar uma partição Ext3 ou ReiserFS desse modo, é preciso usar a opção data=ordered. Ela é ativada por padrão na maioria das distribuições. A tabela 1 mostra mais informações sobre outras opções de montagem.

Opções de montagem Se a integridade dos dados é a preocupação principal e velocidade for um item secundário, a opção de montagem data=journal é recomendada. Ela diminui o desempenho de gravação do Ext3 em 50%. No caso de arquivos grandes, a taxa de redução da velocidade fica em 20 % (veja a figura 1). Mas essa opção não é recomendada para o diretório root, w.linuxmagazine.com.br maio 2006 edição 1939

CapaSistema de Arquivos apenas para partições de dados separadas. Por exemplo, o diretório /home – situação em que essa recomendação por ser feita sem ressalvas.

Já a opção data=writeback permite a gravação na área de journal antes dos dados chegarem ao destino final, o que traz um ganho de performance de 10%. Essa opção é útil para a partição root, em que ocorrem muitas operações de escrita e a perda de dados pode ser aceitável. Obviamente, uma partição /home ou de dados é recomendada nesse caso.

O Ext2 ainda possui excelente desempenho para sua longa idade. Em muitos testes, o veterano é mais rápido que o Ext3 ou o ReiserFS. De novo, isso mostra que os recursos de journaling do Ext3 reduzem a performance, em relação ao Ext2.

Para partições sem dados críticos (como um /tmp), o Ext2 é preferível ao Ext3, se o tamanho for inferior a 1 GB. Em todos os outros casos, o Ext2 não é recomendado, já que a checagem no sistema de arquivos pode demorar mais que a restauração de um becape. O Ext2 ainda é o sistema padrão de partições de boot separadas, já que ocupa menos espaço (apenas o journal do ReiserFS, por exemplo, precisa de 33MB).

Reiser4 e XFS Se o desempenho está no topo da lista de requerimentos, a melhor escolha é o Reiser4. Os benchmarks da Linux Magazine confirmam a afirmação na página da Namesys (empresa responsável pelo sistema) de que o Reiser4 é duas vezes mais rápido que o ReiserFS. Esse sistema de arquivos venceu mais avaliações que qualquer outro no quesito velocidade. Ele é três vezes mais rápido que o segundo colocado, o XFS [3], na tarefa de criar 50 mil arquivos. Isso é uma evidência clara de quanto trabalho seus desenvolvedores colocaram na otimização do desempenho de gravação. E o Reiser4 é, pelo menos, de 10 a 20 vezes mais rápido que o rival mais próximo em todas as outras operações de gravação. É o sistema de arquivos Linux mais rápido.

Já quanto ao uso dos recursos de processamento, as coisas não são tão boas.

Por exemplo, na criação seqüencial de 50 mil arquivos, o sistema causou uma carga na CPU de 26%. Todos os outros ficaram entre 1% e 4%. Na média, o Reiser4 causa cerca de 10% mais processamento que os outros. Em alguns casos, esse aumento passa de 50%. De fato, o ReiserFS foi o único sistema a exigir mais ciclos de CPU que o Reiser4, em algumas categorias testadas. Se o seu computador tem uma CPU lenta, é melhor ficar com o Ext3 ou XFS. O Reiser4 também não possui alguns recursos básicos como cotas ou listas de controle de acesso (ACL – Access Control List).

Já o XFS tem tudo o que é necessário para ser o sistema de arquivos número 1. É usado em uma boa fatia dos sistemas produtivos e suporta cotas, ACLs e atributos estensíveis. O XFS é o sistema mais rápido depois do Reiser4, chegando a bater o primeiro colocado em algumas categorias. Ele é bom particularmente ao lidar com grandes volumes de dados. O desempenho foi excelente com arquivos de 4 GB. Para quem pretende editar vídeos, o XFS é a melhor opção.

Quadro 1:Tudo começou com o Ext2

Quem usa Linux há bastante tempo vai lembrar da época em que, praticamente, todas as distribuições usavam o Ext2 como sistema de arquivos padrão. Ele foi o sistema de arquivos Linux mais popular por 8 anos.

A primeira versão do Linux usava o sistema de arquivos do Minix. Um grupo de programadores começou a trabalhar em um novo sistema de arquivos em 1992: o Extended Filesystem, ou ExtFS. Infelizmente, ele estava infestado de bugs e, um ano depois, Rémy Card lançou o Second Extended Filesystem (Ext2).

O Ext2 se desenvolveu como um sistema estável e estensível, embora tivesse uma desvantagem: como ele não tinha journaling, verificações intermináveis tinham que ser realizadas no caso de corrupção de arquivos e também em intervalos regulares, como precaução. Dependendo do tamanho do disco rígido, uma simples checagem levava muitas horas. Além disso, eram necessárias ferramentas proprietárias para aumentar ou encolher o sistema de arquivos “on the fly”, ou seja, sem precisar desmontá-los. Na virada do milênio, os discos rígidos estavam muito grandes e as checagens, muito lentas para o Ext2.

Prevendo esse problema, desenvolvedores do kernel já tinham lançado dois projetos para tentar resolver isso. Um era o Ext3 como um extensão journaling do Ext2. A outra era um novo sistema de arquivos, do zero, com journaling nativo: o ReiserFS v3. Esse último venceu a corrida e se tornou o primeiro sistema de arquivos com journaling para Linux, em 1999.

A distribuição Suse, o principal patrocinador dessas iniciativas, estava extremamente interessada em redimensionamento “on the fly”. Ela foi a primeira a incluir o ReiserFS, como padrão, no Suse 6.4, lançado no início de 2000 (na verdade, o ReiserFS já estava disponível como um update da versão 6.3). Mas o ReiserFS ainda tinha alguns problemas. Por exemplo, não trabalhava tão bem com o sistema NFS.

Já o Ext3 foi lançado primeiro como o sistema de arquivos oficial do Red Hat 7.2, em 2001. A Red Hat optou pelo Ext3, já que ele se mostrava pronto para ser incluído oficialmente no kernel Linux (isso aconteceu na versão 2.2.15 do kernel, na série que antecedeu o ramo 2.4). O ReiserFS teve que esperar até o kernel 2.4.1 para a inclusão oficial. Mas a maioria das distribuições já usava esses dois sistemas como opção padrão, já que ambos tinham a reputação de serem bastante estáveis.

No mesmo ano (2001), dois sistemas de arquivos Unix foram portados para o Linux. O XFS, da Silicon Graphics, é um dos melhores sistemas para arquivos de 1 MB ou mais. Já o JFS, da IBM, falhou em se estabelecer e nem é mais parte oficial de muitas distribuições.

Capa

Sistemas de Arquivos w.linuxmagazine.com.br maio 2006 edição 19

Quem ganha? Na maioria dos casos, você não vai se arrepender ao optar pelo Ext3 ou ReiserFS. Mas há algumas situações em que um é melhor que o outro. O ReiserFS demora para montar partições. A diferença, em comparação com o Ext3 ou XFS, é mínima para partições de 5 GB ou 10 GB. Já com uma de 80 GB, o Ext3 dará vários segundos de vantagem no tempo de boot. É por isso que o ReiserFS não é recomendado para discos rígidos externos. Ao espetar um HD de 200 GB com um sistema de arquivos Reiser- FS, por exemplo, será preciso esperar mais de 10 segundos para o disco ser montado. Com o Ext3, isso é feito em três segundos.

Mas arquivos pequenos e processos de formatação são grandes desafios para o Ext3. Por exemplo, ele leva cerca de cinco minutos para criar uma partição de 200 GB. Quem costuma reformatar partições sempre, deve optar pelo ReiserFS ou XFS, que fazem a mesma tarefa em poucos segundos.

Já para quem trabalha com muitos arquivos, de aproximadamente 100 KB cada, o ReiserFS novamente é a melhor opção, independente do que a distribuição em questão sugerir. O sistema de arquivos da Namesys é muito mais rápido que o Ext3 ou XFS com arquivos desse tamanho.

Evite também o Ext3 para diretórios com muitos arquivos, já que esse sistema de arquivos especifica o número de inodes (estruturas de dados) durante a formatação. Isso restringe o número de arquivos que podem ser armazenados na partição. O ReiserFS e o XFS trabalham com alocação dinâmica de inodes. Isso elimina completamente o risco de ter espaço em disco, mas nenhum inode livre.

O Ext3 e o XFS são preferíveis se você usar o PC para gerenciar grandes coleções de áudio ou vídeo. O XFS é bem mais rápido para arquivos com mais de um GigaByte em relação ao Ext3 e o ReiserFS. O gerenciamento do espaço requerido é outro fator importante. Devido a seu formato eficiente, o ReiserFS armazena arquivos menores em menos espaço que o Ext3 ou XFS. Por exemplo, os arquivos fonte do kernel ocupam 250 MB no ReiserFS, 252 MB no XFS e 260 MB no Ext3. Como recomendação final, não esqueça de otimizar o uso de seu disco. A maioria dos HDs acessam mais rapidamente os últimos cilindros do que o começo do disco. Se esse for o caso, é melhor colocar as partições root e de dados no final do disco. ➟

Tabela 1: Opções de montagem

Opção Função data=journalEssa opção, que primeiro copia toda informação para a área de journal antes de armazená-la no destino final, garante segurança máxima dos dados. Contudo, a velocidade cai cerca de 50% tanto no Ext3 quanto no ReiserFS: operações de escrita levam o dobro do tempo.

data=orderedEssa é a opção padrão da maioria das distribuições. O sistema de arquivos primeiro grava os dados em seu destino final. Depois, cria a entrada journal para a operação realizada.

data=writebackIsso leva a um ganho de velocidade de 10% no Ext3 e cerca de 30% no ReiserFS, em relação à opção padrão. Permite que entradas journal sejam criadas antes da finalização da operação de escrita. No caso de falhas, os arquivos podem ser recuperados. Essa opção só está disponível para o Reiser no kernel 2.6.

data=notailApenas para ReiserFS. Por padrão, o ReiserFS usa o espaço não usado em blocos para armazenar o excesso de dados de outros blocos. Isso permite um ganho de 10% a 20% no armazenamento, em comparação com uma partição de Ext3 de mesmo tamanho. Como isso diminui ligeiramente o desempenho, o recurso pode ser desabilitado com a opção data=notail. Mas o aumento do desempenho não chega a 5%.

Figura 1: Desempenho de escrita usando a ferramenta de benchmark IOzone. Em modo journaling, o Ext3 e o ReiserFS têm velocidades (baixas) semelhantes. Já os modos Writeback e Ordered aumentam o desempenho do Ext3 e do ReiserFS em 40% e 120%, respectivamente.

w.linuxmagazine.com.br maio 2006 edição 1941

Sistema de ArquivosCapa

Otimização Primeiro as boas notícias: a maioria das distribuições implementam diversas otimizações por padrão. Contudo, há muitos parâmetros do ReiserFS e do Ext3 que podem aumentar ligeiramente o desempenho. Sistemas de arquivos Linux armazenam a data e hora do último acesso a cada arquivo. É possível desativar isso com o parâmetro de montagem noatime. Essa opção existe para o Ext3, ReiserFS e XFS. Não há desvantagens em especificar o noatime em computadores pessoais. Outra opção é o nodiratime, que desativa o registro de data e hora para diretórios.

Para testar essa opção na partição /dev/hda6, que será montada em / teste, use o seguinte comando:

mount -o noatime,nodiratime /dev/hda6 U /teste

Para acrescentar essa opção de modo permanente, edite seu arquivo /etc/fstab, acrescentando as entradas noatime,nodiratime às opções existentes na quarta coluna.

Em nossos testes, essa opção deu um ganho ligeiro no desempenho de gravação para o ReiserFS, embora os resultados do teste tenham variado bastante. Com o Suse Linux 10.0 OSS, sem essas opções, a cópia dos fontes do kernel de uma partição para outra levou 110 segundos. Com noatime,nodiratime, o processo levou 100 segundos.

De maneira interessante, o Ext3 foi bem mais rápido nesse teste. Levou apenas 70 segundos, com ou sem a opção noatime. O XFS levou 80 segundos para copiar esses 20 mil arquivos, também independente dessas opções. Repetimos esses testes com o Ubuntu

5.10, descobrindo que o Ext3 e o ReiserFS são ligeiramente mais rápidos em comparação com o Suse.

Usar ReiserFS no diretório root no Suse 10 faz o sistema todo ficar mais lento. Após uma reinstalação usando Ext3 no diretório root, cópias para a partição ReiserFS foram mais rápidas, atingindo as mesmas velocidades do Ubuntu.

Já a opção data=writeback é outro assunto (veja a tabela 1). As diferenças são facilmente mensuráveis, e o ganho é de 10% com o Ext3 e mais de 30% com o ReiserFS. Contudo, essa não é uma opção fácil de configurar com Ext3 no diretório root (pelo menos no Suse). Para otimizar o /dev/ hda7, por exemplo, é preciso rodar o comando tune2fs /dev/hda7 -o journal_data_writeback.

O recurso dir_index pode melhorar a velocidade de grandes partições Ext3. Essa opção ativa uma técnica especial que acelera a busca em grandes diretórios. Para otimizar uma partição Ext3 dessa maneira, é preciso digitar os comandos:

tune2fs -O dir_index /dev/hda7 fsck.ext3 -fD /dev/hda7

(Parte 1 de 2)

Comentários