Como desfragmentar um sistema de arquivos ext4

66

Não quero resposta dizendo que não há necessidade, por favor!

Fabby
fonte

Respostas:

67

Use e4defrag para desfragmentar seus arquivos

Se o seu sistema de arquivos ext4 for criado com a extentopção (é padrão nas distribuições recentes), você pode usar o e4defragutilitário para verificar e desfragmentar on-line, ou seja, sem desmontar.

Basta verificar o nível de fragmentação com algo assim (você precisa ser root para ver detalhes):

sudo e4defrag -c /path/to/myfiles

Aqui está um exemplo da saída que você pode obter:

$ sudo e4defrag -c iso/
<Fragmented files>                             now/best       size/ext
1. /home/gerlos/iso/debian-live-7.5.0-i386-rescue.iso
                                                 7/1         111177 KB
2. /home/gerlos/iso/systemrescuecd-x86-4.4.1.iso
                                                 4/1         100897 KB
3. /home/gerlos/iso/debian-live-7.5.0-amd64-rescue.iso
                                                 6/1         116053 KB
4. /home/gerlos/iso/ubuntu-14.04.2-server-amd64.iso
                                                 8/1          76160 KB
5. /home/gerlos/iso/ubuntu-14.10-desktop-amd64.iso
                                                15/1          75712 KB

 Total/best extents             40/5
 Average size per extent            90577 KB
 Fragmentation score                0
 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
 This directory (iso/) does not need defragmentation.
 Done.

Como neste exemplo, na maioria das vezes ele diz que não é necessária desfragmentação, mas se você quiser fazê-lo de qualquer maneira, poderá usá-lo (não é necessário usar o sudo para desfragmentar seus próprios arquivos):

e4defrag /path/to/myfiles

Seus usuários podem até executá-lo em seus próprios arquivos; não é necessário ser root, a menos que você queira trabalhar com os arquivos de outros usuários ou do sistema.

e4defragestá no e2fsprogspacote e acho que já está instalado no seu sistema Ubuntu.

gerlos
fonte
2
e4defrag -c não retorna nada além disso done. Isso significa apenas que não há fragmentação?
Hrzhu
3
Desculpe, esqueci de mencionar que você precisa executar e4defrag -ccom sudoou como root para obter informações detalhadas sobre a fragmentação dos arquivos. Mas não precisa ser root para desfragmentá-los.
gerlos
@gerlos E se eu tentar desfragmentar o sistema de arquivos raiz /?
Pavel Sayekat 13/11/16
2
@PavelSayekat, você só precisa ser root (ou seja, usar sudo) para executar e4defrag /e não precisa fazer nada de especial. e4defragirá verificar todos os arquivos, por isso, esteja pronto para aguardar que sua unidade leia tudo. Lembre-se de que pode ser uma grande perda de tempo. Na maioria das vezes, se você tiver espaço livre suficiente no sistema de arquivos, terá apenas alguns arquivos fragmentados e, frequentemente, eles estarão em seu diretório pessoal, relacionados à atividade do navegador da web. Por exemplo, no meu PC de mesa que uso todos os dias, e4defraginforma que existem apenas 5 arquivos fragmentados, todos na configuração do Chromium e no diretório de cache.
22416 Gerlos #
Isso desfragmenta apenas as extensões dentro dos próprios arquivos, mas não os arquivos entre si. Ou seja, se eu tiver um diretório contendo três arquivos em locais físicos muito diferentes no disco, ainda será lento o uso desses arquivos simultaneamente após a execução desta ferramenta. Existe alguma maneira de reorganizar os arquivos no disco ou "desfragmentar o espaço livre", como às vezes é chamado?
fuzzyTew
29

Dê uma olhada no e2fsprogs . Isso também está disponível nos pacotes Ubuntu. Ele fornece o programa e4defrag.

TIIUNDER
fonte
5
Isso é realmente útil apenas em sistemas de arquivos ext4 que foram criados com a extensão -O, que não é o padrão.
Dobey
O cara responde sobre a desfragmentação, pode ser possível com o e4defrag, a questão não especifica um diário externo ou não, ele não merece um -1.
Felipe Alcacibar
8
@dobey Ubuntu 12.04 (.3) O LTS contém extenta ext4estrofe da [fs_types]seção em /etc/mke2fs.conf- portanto, é um "padrão". Embora, independentemente da configuração no momento da criação da máquina à qual o sistema de arquivos está conectado, é melhor inspecionar o próprio sistema de arquivos: tune2fs -l </dev/with/ext4> | grep extent(ou consulte a linha "Recursos do sistema de arquivos" na saída completa do tune2fs). Veja bem, eu acabei de rodar e4defrag -c ...em um sistema de arquivos 100% completo de 1 TB com extent, e existem apenas 5 arquivos fragmentados e "pontuação de fragmentação" 0. YMMV.
Richard Michael
@ RichardMichael FYI: e2defrag -c /pathimprime apenas os 5 primeiros arquivos fragmentados encontrados (nem mesmo os mais fragmentados). Corra e2defrag -v /pathpara ver como isso reduz as contagens de extensão.
Tino
17

Use Gparted para desfragmentar seu sistema de arquivos

Se você tiver espaço suficiente no disco rígido, poderá usar o Gparted para desfragmentar seu sistema de arquivos ( ext2, ext 4, nfts etc. ). É necessário inicializar a partir de um CD / DVD / USB, porque a unidade em que você está trabalhando precisa ser desmontada. Você também precisa ter mais espaço não utilizado disponível do que o espaço usado para que isso funcione, e pode demorar um pouco.

  • Inicialize a partir de um disco de inicialização.
  • Execute gparted e reduza a partição que contém os dados que você deseja desfragmentar para pouco mais que a quantidade de dados.
  • Verifique se a partição que você deseja desfragmentar é a última partição na unidade movendo-a para o final (talvez seja necessário criar outra partição em branco na frente dela, se houver apenas uma partição na unidade).

Com a partição que você deseja desfragmentar como a última partição na unidade:

  • aumente a partição à esquerda para o tamanho máximo. Isso moverá os dados das suas partições para o final da unidade.
  • Quando terminar, reduza a partição para o tamanho anterior.
  • Se você criou uma partição em branco para ter mais de uma no disco, agora pode excluí-la.
  • Mova suas partições de volta à ordem original e regrote a partição que você queria desfragmentar de volta ao tamanho original.

Agora está desfragmentado.

E eu sei que você não está interessado em por que / por que não desfragmentar o ubuntu, mas postarei o link para por que a desfragmentação é desnecessário .

James
fonte
Depois de encolher e mover-se para a direita, por que você cresce para a esquerda e depois encolhe novamente em vez de apenas se mover para a esquerda?
Jason C
Também notei que, após a etapa crescer para a esquerda, os dados em si foram realmente movidos para a esquerda novamente (evidenciados pelos dados em movimento divididos por partes, verificados posteriormente por um exame direto do dispositivo de bloco), portanto, a menos que esse seja um comportamento dependente da versão / sistema de arquivos, o final encolher + regredir pode ser pulado. Ele parece ser suficiente apenas para fazer: 1) encolher e mover para a direita, 2) aplicar-se, 3) crescer esquerda.
Jason C
O simples movimento da partição que você deseja desfragmentar para durar não necessariamente a move para o final real do HD. Aumentar a partição para a esquerda até o tamanho máximo garante que a partição final seja realmente "movida" até o final do disco rígido.
James
Movê-lo para a direita faz movê-lo para o fim do disco rígido. A barra de partição na parte superior da GUI do gparted é na verdade uma representação precisa do layout dos dados (bem, pelo menos tão visível para o SO, os dispositivos flash, por exemplo, mapeiam localizações lógicas para físicas do outro lado do controlador, mas por um HDD típico, é preciso). Isso pode ser verificado observando o novo local de início na tabela de partições. :)
Jason C
Ah, estamos nos comunicando mal. Você quis dizer reordenar a partição para que ela seja a última. Eu quis dizer mover a partição para o final da unidade, e foi o que pensei que você quis dizer também (você pode mover partições pela unidade com gparted independentemente de reordená-las). :)
Jason C
3

Desfragmentando o sistema de arquivos ext4 no linux Estou adicionando esta resposta para mostrar também como podemos encontrar várias ferramentas internas do Linux para executar algumas operações comuns. você

Além disso, observe que você precisa fazer como superusuário apenas se quiser desfragmentar sem desmontar.

Usando o comando apropos

e4defrag -vc /path #verbose output with count
Sudip Bhandari
fonte
2

O Ubuntu 14.04 LTS coloca (pelo menos a unidade principal) na partição EXT4 quando instalado em uma instalação limpa (não residindo no topo do Win-Junk).

Nesse caso, se você acabou de configurar um novo sistema ou formatou novamente em um sistema antigo e fez uma instalação limpa, por padrão com 14.04 LTS, você tem uma Partição EXT4 em /dev/sda1.

Agora, basta abrir um terminal ( CTRL- ALT- T) e digite:

sudo e4defrag -c /dev/sda1

e seja paciente até que a 'verificação' seja concluída e você receba o relatório de fragmentação de volta.

Se você não tem certeza de ter uma partição EXT4 na unidade do sistema operacional, basta ir para casa e digitar df -T. Veja como suas partições sda * estão definidas (tente isso em 14.04LTS e você verá EXT4, a menos que tenha escolhido outro tipo de partição na configuração do disco rígido).

lança
fonte
Ficou um pouco fora do tópico e quase não agregou nenhum valor à pergunta, especialmente no discurso final.
Fernando Silveira
Você pode desfragmentar mais de uma partição com o mesmo comando: sudo e4defrag / dev / sda1 / dev / sda2
ProgAndPlay
1

e2fsck -D /dev/sda1 otimiza os diretórios classificando e reindexando-os, o que geralmente acelera as coisas. Pode não ser considerado um desfragmentador completo do sistema de arquivos, mas nem todos os sistemas possuem o e4defrag.

rjt
fonte