Sim, arquivos em sistemas Linux podem se fragmentar. Se vale a pena agir depende do sistema de arquivos e da carga de trabalho. No ext4, e4defrag -c avalia um alvo sem desfragmentá-lo.

Fragmentação é quando partes de um arquivo ficam em áreas não contíguas do armazenamento. Em um HD mecânico, acessar essas partes pode exigir mais deslocamento da cabeça de leitura; por isso, a fragmentação pode importar mais em algumas situações do que em outras.

Neste artigo

Por que sistemas Linux podem fragmentar

O sistema de arquivos Ext original podia se fragmentar quando suas listas de blocos livres e inodes ficavam desordenadas. No estudo que apresentou o ext2, Rémy Card, Theodore Ts’o e Stephen Tweedie descrevem grupos que aproximavam dados relacionados e a pré-alocação de até oito blocos adjacentes. O estudo relata uma taxa de acerto da pré-alocação em torno de 75%, inclusive em sistemas de arquivos muito cheios. Esses números descrevem o projeto histórico do ext2, não uma medição do desempenho atual do ext4.

Como avaliar a fragmentação no ext4

O screencast de gotbletu mostra comandos do e4defrag para avaliar e desfragmentar diretórios ext4 em um terminal Linux.

Execute e4defrag -c no arquivo, diretório ou ponto de montagem ext4 que deseja avaliar. O modo -c informa contagens de fragmentação atual e ideal e calcula uma pontuação, sem desfragmentar o alvo.

A classificação do próprio e4defrag considera pontuações de 0 a 30 como “sem problema”, de 31 a 55 como “um pouco fragmentado” e a partir de 56 como “precisa desfragmentar”. São faixas da ferramenta, não porcentagens nem limites universais de desempenho. Uma pontuação alta, por si só, não prevê um ganho ao executar a desfragmentação.

O utilitário atua em arquivos ext4 compatíveis com extents. Não dá suporte a arquivos de swap, arquivos em lost+found nem arquivos alocados em blocos indiretos. Pouco espaço livre, ou espaço livre fragmentado, pode impedir que a operação melhore a fragmentação. Enquanto o e4defrag trabalha, também pode disputar memória e largura de banda do disco com aplicativos em uso.

O vídeo de gotbletu, publicado em 17 de agosto de 2015, mostra uma sessão de terminal com sudo e4defrag -c / para avaliar o ext4 e comandos para desfragmentar diretórios. A demonstração ilustra o uso da ferramenta; a avaliação com -c não altera o alvo.

O que muda entre ext4, Btrfs e exFAT

A ferramenta e as condições de uso variam conforme o sistema de arquivos. No exFAT, por exemplo, a avaliação não modifica o volume, mas a desfragmentação exige que ele esteja desmontado.

Sistema de arquivosFerramenta ou funçãoCondição importante
ext4e4defrag -c avalia; e4defrag desfragmenta arquivos compatíveis.Pouco espaço livre ou espaço livre fragmentado pode limitar a melhora; a operação pode disputar recursos com aplicativos ativos.
Btrfsautodefrag enfileira pequenas gravações aleatórias, na faixa de 64 KiB.Pode aumentar a latência de leitura e talvez não seja adequado a grandes cargas de banco de dados.
exFATdefrag.exfat -a avalia sem modificar o volume; o comando padrão desfragmenta.O dispositivo precisa estar desmontado. Antes da operação, o manual recomenda verificar a integridade com fsck.exfat e fazer backup dos dados importantes.

HDD, SSD e TRIM

A justificativa tradicional para desfragmentar um HD mecânico é reduzir o deslocamento necessário para acessar blocos espalhados. Um SSD não tem busca rotacional, então essa motivação mecânica não se aplica da mesma forma. TRIM ou descarte é uma operação diferente da reorganização dos arquivos no sistema de arquivos.