Sie können fsck.ext2 sicher auf einem ext2-, ext3- oder ext4-Dateisystem ausführen, selbst wenn es so gemountet ist
sudo fsck.ext2 -fn /dev/sdXY
Wenn das Laufwerk gemountet ist, wird es viele Fehler ausgeben, 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
Die moderne ext-Familie von Dateisystemen berücksichtigt Ausgleich und Kontiguität bei der Zuweisung von Dateien. In ext3 und ext4 wird im Allgemeinen für den Ausgleich gesorgt, indem Journaleinträge der Reihe nach angewendet werden, und in ext4 speziell durch Vorabzuweisung von Dateisystem-Extents, um zusammenhängende Blöcke zu erhöhen. Das Streben nach Fragmentierungsgraden unter 20 % ist möglicherweise nicht Ihre Zeit wert, insbesondere wenn Ihr System wiederholt auf einige Dateien zugreift. Ich schlage vor, diese Taktiken zur Erhöhung der Lesegeschwindigkeit für ein Einzelplattensystem zu verfolgen:
-
RAM erhöhen:Dies erhöht den Dateisystem-Cache
-
Erhöhen Sie die Blockgröße:Wenn Sie von 1 KB auf 4 KB Blockgröße wechseln, erhalten Sie eine bessere Leistung beim Lesen von Dateien, die nahe oder größer als Ihre Blockgröße sind
-
Wenn Sie pedantisch sind, können Sie große Dateien und kleine Dateien nach ihrer Blockgröße in Partitionen organisieren. Möglicherweise möchten Sie dies nur tun, wenn Sie Fotos, Videos und Quellcode in separaten Verzeichnissen gespeichert haben
-
Erhöhen Sie Ihre Read-Ahead-Einstellung mit hdparm und/oder dem Dienstprogramm für den Laptop-Modus
-
sichern und wiederherstellen Sie Ihr Dateisystem auf lineare Weise wie 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.
Ja, es gibt einen bestimmten fsck
Aufruf (als root oder sudo):
$ fsck /dev/sdXY
Ersetzen Sie X und Y durch die richtigen Parameter für Ihren Fall (z. B. /dev/sda1
).
LAUFEN SIE DAS NICHT AUF EINER EINGEBAUTEN PARTITION AUS! Es kann Ihr Dateisystem ernsthaft beschädigen.
Weitere Informationen zu Linux und Defragmentierung finden Sie in meiner Antwort hier.
Wenn Sie fsck nicht ausdrücklich ausführen müssen, sondern nur die Fragmentierung Ihres Laufwerks überprüfen möchten, sollte das folgende Skript (von hier) ausreichen:
#!/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 auf dem betreffenden Verzeichnis (oder Einhängepunkt) ausführen:
$ frag_check.pl $HOME/
1.32410691664555% non contiguous files, 1.05380668862427 average fragments.