Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Hardware/DispositiviPartizioni/FrammentazioneFileSystem"
Differenze tra le versioni 3 e 4
Versione 3 del 08/09/2007 13.25.45
Dimensione: 2824
Autore: MarcoBelli
Commento: corretti alcuni spazi
Versione 4 del 08/09/2007 13.30.21
Dimensione: 2971
Autore: MarcoBelli
Commento: Aggiunto url sorgente e download dello script
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 88: Linea 88:

== Collegamenti ==
 * Download dello script: attachment:fragck.pl

 * Documento originale: http://forums.gentoo.org/viewtopic-p-3081971.html

Controllare lo stato di frammentazione del File System

Lo script descritto di seguito, che fa un uso iterativo del comando filefrag, permette di verificare lo stato di frammentazione del vostro file system, restituendo i seguenti dati:

  • percentuale di file non contigui
  • numero medio di frammenti per file

E' ovvio che minori sono questi valori, migliori saranno le prestazioni del vostro file system. Lo script è stato testato su file system Ext3 e RaiserFS, ma dovrebbe funzionare su tutti i file system supportati dal comando filefrag.

Lo script, scritto in PERL:

#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 -xdev -type f |");

while (defined (my $file = <FILES>)) {
        #quote some chars in filename
        $file =~ s/!/\\!/g;
        $file =~ s/#/\\#/g;
        $file =~ s/&/\\&/g;
        $file =~ s/>/\\>/g;
        $file =~ s/</\\</g;
        $file =~ s/\$/\\\$/g;
        $file =~ s/\(/\\\(/g;
        $file =~ s/\)/\\\)/g;
        $file =~ s/\|/\\\|/g;
        $file =~ s/'/\\'/g;
        $file =~ s/ /\\ /g;
        #nb of fragment for the file
        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");

nella vostra directory home, o in qualsiasi altra directory del vostro utente, create il file che conterrà lo script con il comando:

gedit fragck.pl

nell'editor di testo copiato lo script, e salvate il file.

A questo punto, è necessario dare i permessi di esecuzione al file appena creato:

chmod u+x fragck.pl

A questo punto, eseguite lo script con i permessi di root tramite sudo:

sudo fragck.pl

E dopo pochi secondi, avrete lo stato del vostro file system:

11.4397649363369% non contiguous files, 1.62370225269344 average fragments

NB: Il filesystemExt3 tiene sotto controllo il problema della frammentazione, quindi normalmente dovreste avere risultati con valori molto bassi. RaiserFS invece tende a frammentare i file, quindi questo script permette di tenere sotto controllo la situazione del file system e le sue prestazioni

Collegamenti