Respostas:
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
sudo tune2fs -C 16000 /dev/sda1
e reinicie.
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.
Sim, há uma fsck
chamada 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.
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.
e4defrag -c
, mas não funcionou.
-c
opção como o último argumento. E ... "não funcionou"? Qual é o erro que você recebe?