web-dev-qa-db-fra.com

Sous Linux, comment vérifier si un disque est fragmenté?

Au démarrage, fsck rapporte parfois la segmentation d'un disque: "5,3% non contigu".

Comment puis-je obtenir cette information moi-même? Existe-t-il une invocation fsck spécifique?

28
Peltier

Vous pouvez exécuter en toute sécurité fsck.ext2 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
26
Rucent88

La famille de systèmes de fichiers ext moderne prend en compte l'équilibrage et la contiguïté lors de l'allocation de fichiers. Dans ext3 et ext4, l'équilibrage est généralement effectué en appliquant les écritures de journal dans l'ordre, et plus précisément dans ext4, en pré-allouant des étendues de système de fichiers pour augmenter le nombre de blocs contigus. Chasser des niveaux de fragmentation inférieurs à 20% peut ne pas valoir votre temps, 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

  • augmentation de la taille de bloc: en passant de 1 ko à 4 ko, vous obtiendrez de meilleures performances en lecture pour les fichiers de taille égale ou supérieure à celle de votre bloc

  • si vous êtes pédant, vous pouvez organiser des fichiers volumineux et de petits fichiers en partitions en fonction de la taille de leur bloc. Ne le faites que si vous avez stocké des photos, des vidéos et du code source dans des répertoires distincts.

  • augmentez votre paramètre de lecture à l’avance à l’aide de hdparm et/ou de l’utilitaire en mode portable

  • sauvegardez et restaurez votre système de fichiers de manière linéaire, comme avec tar

Si vous disposez de plusieurs disques et utilisez le striping RAID et/ou LVM, vous devez tenir compte d'autres facteurs, tels que la taille du stripe.

8
memnoch_proxy

Oui, il existe une invocation fsck 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 FAITES PAS FONCTIONNER CETTE PARTITION MONTÉE! Cela pourrait 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 voulez juste vérifier la fragmentation de votre disque, le script suivant (tiré de 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 le point de montage) en question:

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

Vous pouvez utiliser un outil tel que e2defrag pour obtenir ces informations.

Attention, en raison de la nature des systèmes de fichiers Linux, la défragmentation est normalement inutile.

0
Lucas Kauffman