Qual o melhor Sistema de Arquivos?
Certamente vocês já ouviram esta pergunta, ou até mesmo já a fizeram a alguém. Este é um assunto muito discutido, e muitas pessoas têm opiniões diferentes. Agora, um grande detalhe que devemos levar em consideração é o seguinte: você realizou algum tipo de teste antes de responder?
Sabemos que hoje em dia todo mundo gosta de dar um “pitaco” a respeito de qualquer coisa, mesmo sem ter a mínima ideia técnica sobre o assunto, ou apenas achando que o melhor é sempre o mais novo.
Minha idéia é mostrar como podemos chegar a uma conclusão por nós mesmos, ou seja, realizando testes para escolher a opção adequada as nossas necessidades.
O que é um Sistema de arquivo?
Antes de qualquer coisa, devemos ter em mente o que é um sistema de arquivos, pois como vamos testar algo que sequer temos conhecimento do que é. Há algum tempo atrás fiz uma postagem a respeito deste assunto, recomendo a leitura desta postagem antes de prosseguir com a leitura.
Não pretendo falar sobre cada sistema de arquivo, a ideia é analisar o desempenho dos mesmos. Você pode ler um pouco sobre cada filesystem testado nos links de referência logo abaixo.
Motivação para o teste
Eu por um bom tempo tive esta mesma dúvida, e resolvi ir atrás das respostas. Achei muitas opiniões contraditórias e acabei realizando o teste de desempenho. Os seguintes Sistemas de arquivo participaram dos testes:
Hardware utilizado nos testes
Paca Mãe: Asus P5K-SE 1333 MHZ
Processador: Intel Core 2 Duo E6550 – 2.33 GHZ (1333 MHZ)
Memória: 2048 MB DDR2 1066MHZ Dual Channel
VGA: GeForce 8600 GT 256 MB
HD: 250GB Sata II
Parâmetros do teste
O teste foi realizado com a mesma prioridade de execução (nice -19
), executei um Shell Script básico com um laço de repetição “for” para criar 50.000 arquivos de 5 KB em uma partição de 1024 MB, utilizando o comando dd
. Executei o script cinco vezes para obter uma média do tempo de execução do processo.
time for i in $(seq 50000); do nice -19 dd if=/dev/zero of=$i.txt bs=5K count=1 2> /dev/null; done
Os dados que foram analisados ao final da execução do script foram:
- Tamanho do disco antes da formatação
- Tamanho após a formatação
- Espaço utilizado após a formatação
- Espaço disponível após a formatação
- Tempo de criação dos arquivos
- Espaço utilizado após a criação dos arquivos
- Espaço disponível após a criação dos arquivos
Por que arquivos de 5KB?
O tamanho padrão de um bloco (cluster) é de 4 KB, este tamanho segundo os desenvolvedores, serve para partições até 16 TB, ao estabelecer os sistemas de arquivos (formatar a partição), defini o tamanho padrão dos blocos como 4096 Bytes (4 KB).
A ideia dos arquivos de 5 KB é de fragmentar o espaço que sobra, ou seja, o arquivo irá ocupar dois blocos, 4 KB de um bloco e 1 KB do outro, os 3 KB que restam, ele fragmenta com espaço (menos ReiserFS). Com isto, temos as duas informações que conseguimos nas propriedades do arquivo, que são: tamanho do arquivo e tamanho em disco, ou seja, tamanho do arquivo 4 KB, tamanho em disco 8 KB.
Também realizei os testes com arquivos maiores, para poder assim verificar se um determinado sistema de arquivos trabalha melhor com arquivos maiores ou menores. Os dados serão disponibilizados abaixo.
Resultado dos testes
Neste gráfico podemos analisar o desempenho de cada filesystem no processo de criação dos arquivos. Constatamos que o mais rápido foi o Reiserfs, seguido pelo Ext3 e Ext4 respectivamente.
Neste outro gráfico podemos analisar o espaço ocupado por cada filesystem após a criação dos arquivos. Constatamos que a maior economia de disco ficou com o XFS da Silicon Graphics, seguido pelo velho Ext2 e pelo JFS da IBM.
Aqui são os mesmos gráficos, mas com arquivos maiores:
Abaixo é a tela dos dados que foram coletados pelo script e alimentados na tabela de testes.
Qual é o melhor sistema de arquivos?
Esta é a pergunta que não quer calar, mas a resposta é simples. Não existe o melhor sistema de arquivos e sim o mais apropriado a cada ocasião ou serviço a ser utilizado nesta máquina/partição, ou seja, se você quer um proxy, o mais indicado seria o reiserfs na partição onde fará a cache, pois o reiserfs trabalha muito melhor com arquivos pequenos como podemos ver nos testes.
É muito importante conhecermos cada sistema de arquivos e suas peculiaridades, pois o mínimo detalhe poderá fazer toda a diferença no desempenho do sistema e serviços do seu computador ou servidor.
Gostaria de aproveitar e agradecer ao Major Eriberto Mota Filho, pois foi através do conhecimento repassado por ele na 9ª edição do FISL, que consegui idealizar, organizar e executar as baterias de testes.
Espero que gostem, boa leitura.