No linux, como você verifica se um disco está fragmentado?


28

Na inicialização, o fsck às vezes relata o friccionamento de um disco: "5,3% não contíguo".

Como posso obter essas informações pessoalmente? Existe uma chamada fsck específica?

Respostas:


27

Você pode executar o fsck.ext2 com segurança em um sistema de arquivos ext2 ext3 ou ext4, mesmo que esteja montado assim

sudo fsck.ext2 -fn /dev/sdXY

Se a unidade estiver montada, ocorrerá muitos erros, mas o argumento -n diz para não tocar na unidade.

$ sudo fsck.ext2 -fn /dev/sda1
e2fsck 1.42 (29-Nov-2011)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Ubuntu_Rescue: 291595/1222992 files (0.2% non-contiguous), 1927790/4882432 blocks

Obrigado! O fsck.ext2 encontrou vários erros na minha partição pessoal. Agora eu gostaria de consertá-lo. Isso levanta a questão: como faço para reparar minha partição pessoal, que eu preciso manter montada para fazer login?
Michael

3
@ Michael Se a sua unidade estiver montada, uma verificação nela sempre reportará erros. De qualquer forma, se você quiser verificar o sistema de arquivos na próxima reinicialização, execute isso sudo tune2fs -C 16000 /dev/sda1e reinicie.
Rucent88

11
O fsck verifica o que está no disco / armazenamento, mas se montado, haverá coisas em andamento (semi-escritas). É por isso que você verá erros, eles não são erros reais, são erros falsos. Ignore-os.
ctrl-alt-Delor

8

A moderna família ext de sistemas de arquivos leva em consideração o balanceamento e a contiguidade ao alocar arquivos. No balanceamento ext3 e ext4, geralmente é resolvido aplicando entradas de diário em ordem e ext4 especificamente, pré-alocando extensões do sistema de arquivos para aumentar blocos contíguos. Perseguir níveis de fragmentação inferiores a 20% pode não valer o seu tempo, especialmente se o seu sistema estiver acessando alguns arquivos repetidamente. Sugiro seguir essas táticas para aumentar a velocidade de leitura de um sistema de disco único:

  • aumentar ram: isso aumenta o cache do sistema de arquivos

  • aumentar o tamanho do bloco: passando de 1k para os tamanhos de bloco de 4k, você obtém melhor desempenho nas leituras de arquivos próximos ou maiores que o tamanho do bloco

  • se você é pedante, pode organizar arquivos grandes e arquivos pequenos em partições pelo tamanho de bloco; só poderá fazer isso se tiver armazenado fotos, vídeos e código-fonte em diretórios separados

  • aumente sua configuração de leitura antecipada usando o utilitário hdparm e / ou modo laptop

  • faça backup e restaure seu sistema de arquivos de maneira linear, como com tar

Se você possui vários discos e está usando faixas de ataque e / ou LVM, outros fatores a serem considerados, como tamanho da faixa.


4

Sim, há uma fsckchamada específica (como root ou sudo):

$ fsck /dev/sdXY

Substitua X e Y pelos parâmetros corretos para o seu caso (por exemplo /dev/sda1).

NÃO EXECUTE ISTO EM UMA PARTIÇÃO MONTADA! Isso pode danificar seriamente o seu sistema de arquivos.

Para mais informações sobre Linux e desfragmentação, veja minha resposta aqui .


Se você não precisa executar o fsck especificamente, mas apenas deseja verificar a fragmentação da sua unidade, o seguinte script (extraído daqui ) deve executar o truque:

#!/usr/bin/perl -w

#this script search for frag on a fs
use strict;

#number of files
my $files = 0;
#number of fragment
my $fragments = 0;
#number of fragmented files
my $fragfiles = 0;

#search fs for all file
open (FILES, '-|', "find '$ARGV[0]' -xdev -type f -print0");

$/ = "\0";

while (defined (my $file = <FILES>)) {
        open (FRAG, "-|", "filefrag", $file);
        my $res = <FRAG>;
        if ($res =~ m/.*:\s+(\d+) extents? found/) {
                my $fragment = $1;
                $fragments += $fragment;
                if ($fragment > 1) {
                        $fragfiles++;
                }
                $files++;
        } else {
                print ("$res : not understand for $file.\n");
        }
        close (FRAG);
}
close (FILES);

print ( $fragfiles / $files * 100 . "% non contiguous files, " . $fragments / $files . " average fragments.\n"); 

Você pode executá-lo no diretório (ou ponto de montagem) em questão:

$ frag_check.pl $HOME/
  1.32410691664555% non contiguous files, 1.05380668862427 average fragments.

Isso é apenas chamar fsck na partição e, como sabemos, isso destruirá uma partição montada. Existe alguma maneira de usar o fsck de uma maneira somente leitura, diga-me-como-fragmentado-meu-disco-é?
precisa

Não tanto quanto eu sei, @Peltier. Eu estava pensando que você pode inicializar em um nível de execução inferior, desmontar o disco relevante e executar o fsck. De qualquer forma, sério, você quase certamente pode ignorar a fragmentação na maioria dos sistemas Linux.
terdon

@ Peltier, veja minha resposta atualizada.
terdon

11
Sim, é lento. Lembre-se de que demorou cerca de 2-3 minutos na minha partição de 500 GB / casa /. Mais uma vez, enfatizo, a fragmentação da unidade não é mais um problema. Especialmente se você estiver usando um sistema de arquivos EXT3-4.
terdon 15/09/12

11
@KentFredric Ah! Sim, de fato. Entendo o que você quer dizer agora. Eu editei de acordo, obrigado. Vamos excluir os comentários para remover a desordem.
terdon

0

Você pode usar uma ferramenta como e2defrag para obter essas informações.

Lembre-se de que, devido à natureza dos sistemas de arquivos Linux, a desfragmentação é normalmente desnecessária.


Importa-se de detalhar sua resposta? Tentei obter essas informações e4defrag -c, mas não funcionou.
Peltier

@Peltier Aponte para um ponto intermediário Ext3 ou Ext4 após a -copção como o último argumento. E ... "não funcionou"? Qual é o erro que você recebe?
gertvdijk

Diz "Concluído". No entanto, não o apontei diretamente para o dispositivo, mas para o ponto de montagem. Estou tentando novamente com o dispositivo.
precisa

Note que leva muito tempo, enquanto o fsck é muito rápido.
precisa

Apenas tentei novamente com o dispositivo, apenas diz "Concluído".
precisa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.