Eu tenho uma ext4
partição de 900 GB em um disco rígido (magnético) que não possui defeitos nem setores defeituosos. A partição está completamente vazia, exceto por um lost+found
diretório vazio . A partição foi formatada usando parâmetros padrão, exceto que eu defina o número de blocos reservados do sistema de arquivos como 1%.
Eu baixei o arquivo ~ 900MB xubuntu-15.04-desktop-amd64.iso
para o diretório do ponto de montagem da partição usando wget
. Quando o download foi concluído, descobri que o arquivo estava dividido em quatro fragmentos:
filefrag -v /media/emma/red/xubuntu-15.04-desktop-amd64.iso
Filesystem type is: ef53
File size of /media/emma/red/xubuntu-15.04-desktop-amd64.iso is 1009778688 (246528 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
2: 63488.. 96255: 100352.. 133119: 32768: 98304:
3: 96256.. 126975: 133120.. 163839: 30720:
4: 126976.. 159743: 165888.. 198655: 32768: 163840:
5: 159744.. 190463: 198656.. 229375: 30720:
6: 190464.. 223231: 231424.. 264191: 32768: 229376:
7: 223232.. 246527: 264192.. 287487: 23296: eof
/media/emma/red/xubuntu-15.04-desktop-amd64.iso: 4 extents found
Achando que isso poderia ser revertido wget
, removi o arquivo ISO da partição, deixando-o vazio novamente e copiei o arquivo ~ 700MB v1.mp4
para a partição usando cp
. Este arquivo também foi fragmentado. Foi dividido em três fragmentos:
filefrag -v /media/emma/red/v1.mp4
Filesystem type is: ef53
File size of /media/emma/red/v1.mp4 is 737904458 (180153 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
2: 63488.. 96255: 100352.. 133119: 32768: 98304:
3: 96256.. 126975: 133120.. 163839: 30720:
4: 126976.. 159743: 165888.. 198655: 32768: 163840:
5: 159744.. 180152: 198656.. 219064: 20409: eof
/media/emma/red/v1.mp4: 3 extents found
Por que isso está acontecendo? E existe uma maneira de impedir que isso aconteça? Eu pensei que ext4
era para ser resistente à fragmentação. Em vez disso, acho que ele fragmenta imediatamente um arquivo solitário quando todo o restante do volume não é utilizado. Isso parece ser pior que ambos FAT32
e NTFS
.
fonte
Respostas:
3 ou 4 fragmentos em um arquivo de 900mb são muito bons. A fragmentação se torna um problema quando um arquivo desse tamanho tem mais de 100 fragmentos. Não é incomum que o fat ou o ntfs fragmentem esse arquivo em várias centenas de pedaços.
Geralmente, você não verá melhor do que isso, pelo menos nos sistemas de arquivos ext4 mais antigos, porque o tamanho máximo de um grupo de blocos é de 128 MB e, portanto, a cada 128 MB, o espaço contíguo é quebrado por alguns blocos para os bitmaps de alocação e as tabelas de inode para o próximo grupo de blocos. Um recurso ext4 mais recente chamado flex_bg permite agrupar (normalmente 16) grupos de blocos dessas tabelas, deixando execuções mais longas de blocos alocáveis, mas dependendo da sua distribuição e de qual versão do e2fsprogs foi usada para formatá-lo, essa opção pode não foi usado.
Você pode usar
tune2fs -l
para verificar os recursos ativados quando o sistema de arquivos foi formatado.fonte
Não consigo responder de verdade, mas acho que isso pode ajudar:
Observe como cada fragmento tem, no máximo, 32768 blocos de tamanho (uma potência de 2, que deve elevar a sinalização de que algo está acontecendo e também fornecer uma dica para algo a procurar).
Também digno de nota, essas compensações físicas entre extensões são muito próximas umas das outras.
De: Layout do disco Ext4
E mais abaixo:
Então, eu diria que o alocador se preocupa apenas com a localidade dos dados dentro do grupo de blocos (aqueles blocos de 32K), mas não com os grupos de blocos contíguos um ao outro.
fonte