GNU/Linux >> Linux Esercitazione >  >> Linux

In Linux, come si controlla se un disco è frammentato?

Puoi tranquillamente eseguire fsck.ext2 su un filesystem ext2 ext3 o ext4 anche se è montato in questo modo

sudo fsck.ext2 -fn /dev/sdXY

Se l'unità è montata, genererà molti errori, ma l'argomento -n gli dice di non toccare l'unità.

$ 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 moderna famiglia di filesystem ext prende in considerazione il bilanciamento e la contiguità durante l'allocazione dei file. In ext3 ed ext4 il bilanciamento viene generalmente curato applicando voci di giornale in ordine, e in ext4 in particolare, pre-allocando le estensioni del file system per aumentare i blocchi contigui. Inseguire livelli di frammentazione inferiori al 20% potrebbe non valere la pena, soprattutto se il tuo sistema accede ripetutamente ad alcuni file. Suggerisco di perseguire queste tattiche per aumentare la velocità di lettura per un sistema a disco singolo:

  • aumenta la ram:aumenta la cache del filesystem

  • aumenta la dimensione del blocco:passando da 1k a 4k dimensioni del blocco, ottieni prestazioni migliori nelle letture per file vicini o più grandi della dimensione del tuo blocco

  • se sei pedante, puoi organizzare file grandi e piccoli in partizioni in base alla dimensione del blocco, potresti volerlo fare solo se hai archiviato foto, video e codice sorgente in directory separate

  • aumentare l'impostazione read-ahead utilizzando hdparm e/o l'utility in modalità laptop

  • eseguire il backup e il ripristino del filesystem in modo lineare, ad esempio con tar

Se hai più dischi e stai usando raid striping e/o LVM, devi considerare altri fattori, come la dimensione dello stripe.


Sì, c'è un fsck specifico invocazione (come root o sudo):

$ fsck /dev/sdXY

Sostituisci X e Y con i parametri corretti per il tuo caso (ad es. /dev/sda1 ).

NON ESEGUIRE QUESTO SU UNA PARTIZIONE MONTATA! Può danneggiare seriamente il tuo filesystem.

Per ulteriori informazioni su Linux e la deframmentazione, vedere la mia risposta qui.

Se non hai bisogno di eseguire specificamente fsck, ma vuoi solo controllare la frammentazione del tuo disco, il seguente script (preso da qui) dovrebbe fare al caso tuo:

#!/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"); 

Puoi quindi eseguirlo sulla directory (o punto di montaggio) in questione:

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

Linux
  1. Come partizionare un disco in Linux

  2. Come trovare file in Linux

  3. Come controllare la versione di Redhat

  4. Come controllare il fuso orario in Linux

  5. Come rinominare i file in Linux

Come controllare l'utilizzo dello spazio su disco in Linux utilizzando Ncdu

Come verificare se sei nella sessione dello schermo o meno in Linux

Come elencare le partizioni del disco in Linux

Come controllare i blocchi danneggiati o i settori danneggiati sul disco rigido in Linux

Come controllare lo spazio libero su disco su Linux

Come controllare la dimensione di file e directory su Linux