Réponses:
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 dit 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
sudo tune2fs -C 16000 /dev/sda1
et redémarrez.
La famille ext moderne de systèmes de fichiers prend en compte l'équilibrage et la contiguïté lors de l'allocation des fichiers. En ext3 et ext4, l'équilibrage est généralement pris en charge en appliquant les entrées de journal dans l'ordre, et en ext4 en particulier, en pré-allouant les extensions du système de fichiers pour augmenter les blocs contigus. La poursuite des niveaux de fragmentation inférieurs à 20% pourrait ne pas valoir la peine, surtout si votre système accède à plusieurs fichiers à plusieurs reprises. Je suggère de poursuivre ces tactiques pour augmenter la vitesse de lecture pour 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 1k à 4k, vous obtenez de meilleures performances sur les lectures de fichiers proches ou supérieurs à la taille de votre bloc
si vous êtes pédant, vous pouvez organiser les gros fichiers et les petits fichiers en partitions selon 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 l'utilitaire hdparm et / ou du mode ordinateur portable
sauvegarder et restaurer votre système de fichiers de manière linéaire, comme avec tar
Si vous disposez de plusieurs disques et que vous utilisez le striping raid et / ou LVM, vous devez prendre en compte d'autres facteurs, tels que la taille du stripe.
Oui, il existe une fsck
invocation spécifique (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 CELA SUR UNE CLOISON 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.
Vous pouvez utiliser un outil comme e2defrag pour obtenir ces informations.
N'oubliez pas qu'en raison de la nature des systèmes de fichiers Linux, la défragmentation n'est normalement pas nécessaire.
e4defrag -c
, mais cela n'a pas fonctionné.
-c
option comme dernier argument. Et ... "n'a pas fonctionné"? Quelle est l'erreur que vous obtenez?