Como tornar o ext3 convertido em ext4 support e4defrag?

4

Eu tenho dois sistemas de arquivos ext3 que são muito antigos e estão 99% cheios há muito tempo, levando à fragmentação. Além disso, eles foram usados para executar VMs com imagens de disco dinâmicas e outras cargas de trabalho que causam fragmentação.

Eu recentemente converti os sistemas de arquivos para ext4 usando as instruções aqui , especificamente executando:

# tune2fs -O extents,uninit_bg,dir_index /dev/DEV
# e2fsck -fDC0 /dev/DEV

No entanto, os sistemas de arquivos ainda não suportam e4defrag :

Failed to defrag with EXT4_IOC_MOVE_EXT ioctl:Operation not supported   [ NG ]

Eu estou supondo que o comando tune2fs não tem alguma opção, mas googling não me ajudou a descobrir o que isso poderia ser.

    
por otus 22.06.2012 / 08:19

1 resposta

4

Eu tive o mesmo problema. Eu encontrei isso que tinha a resposta:

link

Migrando arquivos para extensões

Atenção: NÃO use o seguinte método com o repositório do Mercurial que foi clonado localmente, pois isso corromperá o repositório. Pode também corromper outro link físico no sistema de arquivos.

Embora o sistema de arquivos seja agora convertido para ext4, todos os arquivos que foram gravados antes da conversão ainda não tiram proveito das novas extensões do ext4, o que melhorará o desempenho de arquivos e reduzirá a fragmentação e o tempo de verificação do sistema de arquivos. Para aproveitar totalmente o ext4, todos os arquivos teriam que ser reescritos no disco. Um utilitário chamado e4defrag está sendo desenvolvido e cuidará dessa tarefa; no entanto, ainda não está pronto para produção.

Felizmente, é possível usar o programa chattr , que fará com que o kernel reescreva o arquivo usando extensões. É possível executar este comando em todos os arquivos e diretórios de uma partição (por exemplo, se /home estiver em uma partição dedicada): (Deve ser executado como root)

find /home -xdev -type f -print0 | xargs -0 chattr +e
find /home -xdev -type d -print0 | xargs -0 chattr +e

Recomenda-se testar primeiro este comando em um pequeno número de arquivos e verificar se tudo está indo bem. Também pode ser útil verificar o sistema de arquivos após a conversão.

Usando o comando lsattr , é possível verificar se os arquivos estão usando extensões. A letra 'e' deve aparecer na lista de atributos dos arquivos listados.

-

Nota: Eu supus que o e4defrag poderia converter os arquivos para usar extensões. O ioctl fracassado é aquele que faz isso afaik, então estou um pouco confuso sobre o porquê dele não funcionar, mas chattr +e funcionou para mim. Depois que você tiver chattr +e dos arquivos, poderá usar e4defrag neles. Obviamente, verifique se você tem um backup etc apenas no caso (eu teria pensado que isso é seguro, mas você nunca sabe - há um aviso aqui sobre hardlinks, mas não encontro nenhuma outra referência a problemas conhecidos com hardlinks).

    
por Jools 02.12.2012 / 12:36