Como atomicamente desfragmentar diretórios ext4

0

A fragmentação parece criar muitas buscas desnecessárias ao percorrer uma árvore de diretórios em um disco rígido:

# stat -c %F 00 01 02
directory
directory
directory

# filefrag -v 00 01 02
Filesystem type is: ef53
File size of 00 is 12288 (3 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       0:  428351942.. 428351942:      1:            
   1:        1..       2:  428352760.. 428352761:      2:  428351943: last,eof
00: 2 extents found
File size of 01 is 12288 (3 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       0:  428351771.. 428351771:      1:            
   1:        1..       2:  428891667.. 428891668:      2:  428351772: last,eof
01: 2 extents found
File size of 02 is 12288 (3 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       0:  428351795.. 428351795:      1:            
   1:        1..       2:  428352705.. 428352706:      2:  428351796: last,eof
02: 2 extents found

O e4defrag não consegue desfragmentá-los

# e4defrag -v 00
ext4 defragmentation for directory(00)
[1/116] "00"
    File is not regular file        [ NG ]

Então, como faço para desfragmentar um diretório? Não é o seu conteúdo, mas o próprio diretório. Os diretórios estão em uso, então deve ser feito atomicamente, assim como a desfragmentação de arquivos regulares não interfere no seu uso.

    
por the8472 11.03.2017 / 11:35

1 resposta

0

Como não parece haver nenhuma ferramenta de desfragmentação online para índices de diretório e até mesmo os desfragmentadores offline não parecem ajudar, tive que recorrer à reconstrução da árvore de diretórios recursivamente.

Eu escrevi uma pequena ferramenta ( defrag-dirs ) para essa finalidade. Infelizmente, essa abordagem exige que o aplicativo usando a árvore de diretórios seja removido durante a desfragmentação, o que pode levar um tempo considerável ao lidar com milhões de arquivos.

    
por 07.05.2017 / 22:47