it-swarm.com.de

Wie können Sie unter Linux überprüfen, ob eine Festplatte fragmentiert ist?

Beim Booten meldet fsck manchmal die Fragmentierung für eine Festplatte: "5,3% nicht zusammenhängend".

Wie kann ich diese Informationen selbst erhalten? Gibt es einen bestimmten fsck-Aufruf?

28
Peltier

Sie können fsck.ext2 sicher auf einem ext2 ext3- oder ext4-Dateisystem ausführen, auch wenn es so eingehängt ist

Sudo fsck.ext2 -fn /dev/sdXY

Wenn das Laufwerk gemountet ist, werden viele Fehler ausgegeben, aber das Argument -n weist es an, das Laufwerk nicht zu berühren.

$ 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

Die moderne ext-Familie von Dateisystemen berücksichtigt bei der Zuweisung von Dateien das Gleichgewicht und die Kontinuität. In ext3 und ext4 wird der Ausgleich im Allgemeinen durch Anwenden von Journaleinträgen in der angegebenen Reihenfolge und in ext4 durch Vorbelegung von Dateisystem-Extents zur Erhöhung zusammenhängender Blöcke sichergestellt. Das Verfolgen von Fragmentierungsstufen unter 20% ist Ihre Zeit möglicherweise nicht wert, insbesondere wenn Ihr System wiederholt auf einige Dateien zugreift. Ich schlage vor, diese Taktiken zu befolgen, um die Lesegeschwindigkeit für ein einzelnes Plattensystem zu erhöhen:

  • rAM vergrößern: Dies vergrößert den Cache des Dateisystems

  • erhöhen Sie die Blockgröße: Durch Verschieben von 1 KB auf 4 KB erhalten Sie eine bessere Leseleistung für Dateien, die sich Ihrer Blockgröße nähern oder größer sind

  • wenn Sie pedantisch sind, können Sie große und kleine Dateien nach ihrer Blockgröße in Partitionen unterteilen. Dies ist möglicherweise nur dann sinnvoll, wenn Sie Fotos, Videos und Quellcode in separaten Verzeichnissen gespeichert haben

  • erhöhen Sie die Vorausleseeinstellung mit dem Dienstprogramm hdparm und/oder im Laptop-Modus

  • sichern und Wiederherstellen Ihres Dateisystems auf lineare Weise, z. B. mit tar

Wenn Sie über mehrere Festplatten verfügen und RAID-Striping und/oder LVM verwenden, müssen Sie andere Faktoren berücksichtigen, z. B. die Stripe-Größe.

8
memnoch_proxy

Ja, es gibt einen bestimmten Aufruf von fsck (als root oder Sudo):

$ fsck /dev/sdXY

Ersetzen Sie X und Y durch die richtigen Parameter für Ihren Fall (z. B. /dev/sda1).

NICHT AUF EINER EINBAUPARTITION LAUFEN! Dies kann Ihr Dateisystem ernsthaft beschädigen.

Weitere Informationen zu Linux und zur Defragmentierung finden Sie in meiner Antwort hier .


Wenn Sie fsck nicht speziell ausführen müssen, sondern nur die Fragmentierung Ihres Laufwerks überprüfen möchten, sollte das folgende Skript (von hier ) den Trick ausführen:

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

Sie können es dann in dem betreffenden Verzeichnis (oder Mount-Punkt) ausführen:

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

Sie können ein Tool wie e2defrag verwenden, um diese Informationen abzurufen.

Beachten Sie, dass aufgrund der Beschaffenheit von Linux-Dateisystemen ein Defragmentieren normalerweise nicht erforderlich ist.

0
Lucas Kauffman