Vous pouvez exécuter fsck.ext2 en toute sécurité sur un système de fichiers ext2 ext3 ou ext4 même s'il est monté comme ceci
sudo fsck.ext2 -fn /dev/sdXY
Si le lecteur est monté, il générera de nombreuses erreurs, mais l'argument -n lui indique de ne pas toucher le lecteur.
$ 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
La famille de systèmes de fichiers ext moderne prend en compte l'équilibrage et la contiguïté lors de l'allocation des fichiers. Dans ext3 et ext4, l'équilibrage est généralement pris en charge en appliquant les entrées de journal dans l'ordre, et dans ext4 en particulier, en pré-allouant des extensions de système de fichiers pour augmenter les blocs contigus. Rechercher des niveaux de fragmentation inférieurs à 20 % ne vaut peut-être pas la peine, surtout si votre système accède à quelques fichiers de manière répétée. Je suggère de poursuivre ces tactiques pour augmenter la vitesse de lecture d'un système à disque unique :
-
augmenter la ram :cela augmente le cache du système de fichiers
-
augmenter la taille des blocs :en passant de 1 k à 4 k, vous obtenez de meilleures performances en lecture pour les fichiers proches ou supérieurs à la taille de votre bloc
-
si vous êtes pédant, vous pouvez organiser les fichiers volumineux et les petits fichiers en partitions en fonction de leur taille de bloc, vous ne voudrez peut-être le faire que si vous avez stocké des photos, des vidéos et du code source dans des répertoires séparés
-
augmentez votre paramètre de lecture anticipée à l'aide de hdparm et/ou de l'utilitaire en mode ordinateur portable
-
sauvegardez et restaurez votre système de fichiers de manière linéaire, comme avec tar
Si vous avez plusieurs disques et que vous utilisez la segmentation RAID et/ou LVM, vous devez prendre en compte d'autres facteurs, tels que la taille de la bande.
Oui, il existe un fsck
spécifique invocation (en tant que root ou sudo) :
$ fsck /dev/sdXY
Remplacez X et Y par les paramètres corrects pour votre cas (par exemple, /dev/sda1
).
NE PAS EXÉCUTER CECI SUR UNE PARTITION MONTÉE ! Cela peut sérieusement endommager votre système de fichiers.
Pour plus d'informations sur Linux et la défragmentation, voir ma réponse ici.
Si vous n'avez pas besoin d'exécuter spécifiquement fsck, mais que vous souhaitez simplement vérifier la fragmentation de votre lecteur, le script suivant (tiré d'ici) devrait faire l'affaire :
#!/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");
Vous pouvez ensuite l'exécuter sur le répertoire (ou point de montage) en question :
$ frag_check.pl $HOME/
1.32410691664555% non contiguous files, 1.05380668862427 average fragments.