Upnetix Labs · protocolo de experimento
Protocolo: Qual o impacto do uso de diferentes sistemas de arquivos no desempenho de leitura e escrita em disco no Ubuntu Server?
Este protocolo avalia como sistemas de arquivos diferentes afetam o desempenho de leitura e escrita em discos em servidores Ubuntu. O participante irá medir a taxa de transferência e a latência usando a ferramenta fio.

Como o desempenho de leitura e escrita em disco varia entre ext4, xfs e btrfs no Ubuntu Server sob carga sequencial e aleatória?
Hipótese
Sistemas de arquivos diferentes apresentam variações significativas no desempenho de leitura e escrita sob as mesmas condições de hardware.
Variáveis
| Independentes (o que varia) | tipo de sistema de arquivos (ext4, xfs, btrfs) |
|---|---|
| Dependentes (o que se mede) | taxa de transferência de leitura (MB/s); taxa de transferência de escrita (MB/s); latência média de leitura (ms); latência média de escrita (ms) |
| Controladas (o que fica fixo) | hardware do servidor; tamanho do arquivo de teste (por exemplo, 4GB); tamanho do bloco (por exemplo, 4kB); quantidade de threads (por exemplo, 4); versão do Ubuntu Server; fio na mesma versão; sem outros processos intensivos rodando |
Ambiente
Servidor físico ou VM dedicada rodando Ubuntu Server (consulte a documentação para versão suportada). Disco dedicado para testes. Ferramenta fio instalada para geração de carga e medição.
Procedimento
- Preparar disco
Particione o disco de teste e formate com o sistema de arquivos desejado (ext4, xfs ou btrfs).
mkfs.ext4 /dev/sdX1 (substitua pelo comando adequado para cada FS) - Montar o sistema de arquivos
Monte a partição formatada em um ponto de montagem limpo.
mount /dev/sdX1 /mnt/teste - Executar teste de leitura sequencial
Utilize fio para medir leitura sequencial.
fio --name=readseq --filename=/mnt/teste/testfile --size=4G --bs=4k --rw=read --iodepth=4 --numjobs=4 --direct=1 --runtime=60 --group_reporting - Executar teste de escrita sequencial
Utilize fio para medir escrita sequencial.
fio --name=writeseq --filename=/mnt/teste/testfile --size=4G --bs=4k --rw=write --iodepth=4 --numjobs=4 --direct=1 --runtime=60 --group_reporting - Executar teste de leitura aleatória
Utilize fio para medir leitura aleatória.
fio --name=readrand --filename=/mnt/teste/testfile --size=4G --bs=4k --rw=randread --iodepth=4 --numjobs=4 --direct=1 --runtime=60 --group_reporting - Executar teste de escrita aleatória
Utilize fio para medir escrita aleatória.
fio --name=writerand --filename=/mnt/teste/testfile --size=4G --bs=4k --rw=randwrite --iodepth=4 --numjobs=4 --direct=1 --runtime=60 --group_reporting - Repetir para cada sistema de arquivos
Repita os passos acima para ext4, xfs e btrfs, sempre reformatando e montando novamente.
Planilha de coleta
| sistema_arquivos (texto) | tipo_teste (texto) | taxa_leitura_MBps (MB/s) | taxa_escrita_MBps (MB/s) | latencia_leitura_ms (ms) | latencia_escrita_ms (ms) |
|---|---|---|---|---|---|
| ext4, leitura_sequencial, 210 (EXEMPLO), 0 (EXEMPLO), 0.8 (EXEMPLO), 0 (EXEMPLO) | |||||
Repetições recomendadas: 5. Baixe a planilha vazia em CSV: colunas prontas.
Análise
Calcule a média, mediana e desvio padrão dos resultados de cada sistema de arquivos para cada tipo de teste. Compare os valores entre sistemas de arquivos para identificar diferenças relevantes. Analise variações superiores a 10% como potencialmente significativas.
Critérios de decisão
- Resultados consistentes entre repetições (variação inferior a 5% entre execuções).
- Desempenho superior ou igual ao sistema de arquivos padrão do Ubuntu Server (ext4) é considerado adequado.
- Latências muito acima dos demais sistemas (>20%) devem ser analisadas.
Fontes de erro e mitigação
- Cache do sistema operacional pode influenciar resultados; use a opção --direct=1 no fio.
- Outros processos no servidor podem afetar o desempenho; execute em ambiente dedicado.
- Diferenças de firmware ou drivers do disco podem afetar resultados; mantenha o ambiente controlado.
