Desfragmentando uma partição ext?

10

Por que o ext2 / 3/4 não precisa ser desfragmentado? Não existe fragmentação?

uray
fonte

Respostas:

10

Os sistemas de arquivos modernos, especialmente aqueles projetados para serem eficientes em casos de uso de multiusuários e / ou multitarefas, fazem um bom trabalho de não fragmentar dados até que os sistemas de arquivos fiquem quase cheios (não há um número exato de onde o "quase cheio" "é porque depende do tamanho do sistema de arquivos, da distribuição dos tamanhos dos arquivos e de quais são seus padrões de acesso - números entre 85% e 95% são geralmente citados) ou o padrão de criação e gravação de arquivos é incomum ou o sistema de arquivos é muito velho, tem visto muita "ação". Isso inclui ext2 / 3/4, reiser, btrfs, NTFS, ZFS e outros.

Atualmente, não existe uma maneira de desfragmentar o ext3 ou 4 no nível do kernel / sistema de arquivos no momento (consulte http://en.wikipedia.org/wiki/Ext3#Defragmentation para obter um pouco mais de informações), embora o ext4 esteja planejado para ganhar em breve online desfragmentação.

Existem ferramentas do usuário (como http://vleu.net/shake/e outros listados nesse artigo da wikipedia) que tentam desfragmentar arquivos individuais ou conjuntos de arquivos, copiando / reescrevendo-os - se houver um bloco grande o suficiente de espaço livre, isso geralmente resulta no bloco contíguo do arquivo. Isso de forma alguma garante que os arquivos estejam próximos um do outro; portanto, se você executar o shake em um par de arquivos grandes, poderá encontrar resultados nos dois arquivos sendo desfragmentados, mas não próximos do disco. Em um sistema de arquivos para vários usuários, a localidade dos arquivos entre si não costuma ser importante (certamente é menos importante do que a fragmentação dos arquivos), pois os cabeçotes das unidades estão girando por todo o lugar para atender diferentes usuários '

Se você tiver um sistema de arquivos que se tornou muito fragmentado ao longo do tempo e atualmente possui uma quantidade razoável de espaço livre, a execução de algo como shaketodos os seus arquivos pode ter o efeito que você está procurando. Outro método seria copiar todos os dados para um novo sistema de arquivos, remover o original e copiá-lo novamente. Isso ajuda da mesma maneira shake, mas pode ser mais rápido para grandes quantidades de dados.

Para pequenas quantidades de fragmentação, apenas não se preocupe. Conheço pessoas que passam mais tempo sentadas assistindo barras de progresso de desfragmentação do que jamais salvarão (devido ao acesso mais eficiente ao disco) em várias vidas úteis da operação normal!

David Spillett
fonte
existe algum mecanismo como: arquivos que costumam ser usados ​​durante a inicialização são colocados próximos uns dos outros para obter benefícios da localidade? inicialização tão mais rápida?
uray
1
Não que eu saiba. Você pode usar ureadahead, como compilações recentes do Ubuntu, por padrão (consulte ubuntuforums.org/showthread.php?t=1434502 para obter mais informações), para obter um efeito semelhante. Parte do atraso na sequência de inicialização do Linux pode ser reduzida, solicitando que ele inicie os serviços de maneira mais simultânea, sempre que possível, se a configuração de inicialização do disro suportar isso (configure CONCURRENCY = shell em / etc / defaults / rc no Debian) e ajustes semelhantes. Para verificar se você está fazendo alguma diferença com as alterações que usa, use o bootchart.org para mostrar o que acontece antes de você ajustar as coisas depois.
David Spillett
@uray, revivi o há muito abandonado e2defrage experimentei com ele para obter essa embalagem. Você pode encontrá-lo em launchpad.net/e2defrag .
Psr #
@ David: Eu não tenho, /etc/defaults/rcmas tenho /etc/default/rcSno debian 6
ctrl-alt-delor
@psusi - Isso e2defragagora suporta melhor o Ext3, melhor que shake?
Alex S
0

Não há muita fragmentação, desde que o disco não esteja cheio demais (portanto, não encha demais o disco, se você puder evitá-lo).

JanC
fonte
2
portanto, se o disco estiver cheio, precisamos desfragmentá-lo?
Uray