So defragmentieren Sie ein ext4-Dateisystem

66

Ich möchte keine Antwort, die besagt, dass es keinen Grund gibt, bitte!

Fabby
quelle

Antworten:

67

Verwenden Sie e4defrag, um Ihre Dateien zu defragmentieren

Wenn Ihr ext4-Dateisystem mit der extentOption erstellt wurde (in den letzten Distributionen ist dies die Standardeinstellung), können Sie das e4defragDienstprogramm verwenden, um es online zu überprüfen und zu defragmentieren, dh ohne es umzubuchen.

Überprüfe einfach die Fragmentierungsstufe mit so etwas (du musst root sein, um Details zu sehen):

sudo e4defrag -c /path/to/myfiles

Hier ist ein Beispiel für die Ausgabe, die Sie erhalten können:

$ sudo e4defrag -c iso/
<Fragmented files>                             now/best       size/ext
1. /home/gerlos/iso/debian-live-7.5.0-i386-rescue.iso
                                                 7/1         111177 KB
2. /home/gerlos/iso/systemrescuecd-x86-4.4.1.iso
                                                 4/1         100897 KB
3. /home/gerlos/iso/debian-live-7.5.0-amd64-rescue.iso
                                                 6/1         116053 KB
4. /home/gerlos/iso/ubuntu-14.04.2-server-amd64.iso
                                                 8/1          76160 KB
5. /home/gerlos/iso/ubuntu-14.10-desktop-amd64.iso
                                                15/1          75712 KB

 Total/best extents             40/5
 Average size per extent            90577 KB
 Fragmentation score                0
 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
 This directory (iso/) does not need defragmentation.
 Done.

Wie in diesem Beispiel wird Ihnen in der Regel mitgeteilt, dass keine Defragmentierung erforderlich ist. Wenn Sie dies jedoch trotzdem tun möchten, können Sie Folgendes verwenden (Sie müssen sudo nicht verwenden, um Ihre eigenen Dateien zu defragmentieren):

e4defrag /path/to/myfiles

Ihre Benutzer können es sogar für ihre eigenen Dateien ausführen. Sie müssen nicht als Root angemeldet sein, es sei denn, Sie möchten an den Dateien anderer Benutzer oder des Systems arbeiten.

e4defragist im e2fsprogsPaket enthalten, und ich vermute, es ist bereits auf Ihrem Ubuntu-System installiert.

gerlos
quelle
2
e4defrag -c liefert nichts als done. Bedeutet das nur, dass es keine Fragmentierung gibt?
hrzhu
3
Entschuldigung, ich habe vergessen zu erwähnen, dass Sie e4defrag -cmit sudooder als root ausgeführt werden müssen, um detaillierte Informationen über die Fragmentierung Ihrer Dateien zu erhalten. Aber Sie müssen nicht root sein, um sie zu defragmentieren.
gerlos
@gerlos Was ist, wenn ich versuche, das Root-Dateisystem zu defragmentieren /?
Pavel Sayekat
2
@PavelSayekat Sie müssen nur root sein (dh verwenden sudo), um zu laufen e4defrag /, und müssen nichts Besonderes tun. e4defragDort wird jede Datei überprüft. Warten Sie also, bis Ihr Laufwerk alles gelesen hat. Denken Sie daran, dass es eine große Zeitverschwendung sein kann. Wenn Sie im Dateisystem über genügend freien Speicherplatz verfügen, befinden sich in den meisten Fällen nur wenige fragmentierte Dateien in Ihrem Ausgangsverzeichnis. Dies hängt mit der Aktivität Ihres Webbrowsers zusammen. Beispiel: Auf meinem Desktop-PC, den ich jeden Tag verwende e4defrag, werden nur 5 fragmentierte Dateien in der Chromium-Konfiguration und im Cache-Verzeichnis gemeldet.
Gerlos
Dadurch werden nur die Bereiche in den Dateien selbst defragmentiert, nicht jedoch die Dateien untereinander. Das heißt, wenn ich ein Verzeichnis habe, das drei Dateien an völlig unterschiedlichen physischen Orten auf der Festplatte enthält, ist es nach dem Ausführen dieses Tools immer noch langsam, diese Dateien gleichzeitig zu verwenden. Gibt es eine Möglichkeit, die Dateien auf der Festplatte neu zu ordnen oder den "freien Speicherplatz zu defragmentieren", wie es manchmal genannt wird?
FuzzyTew
29

Schauen Sie sich e2fsprogs an . Dies ist auch in den Ubuntu-Paketen verfügbar. Es bietet das Programm e4defrag.

TIIUNDER
quelle
5
Dies ist wirklich nur für ext4-Dateisysteme nützlich, die mit -O Extent erstellt wurden, was nicht die Standardeinstellung ist.
Dobey
Der Typ antwortet über Defragmentierung, es könnte mit e4defrag möglich sein, der Kunde kann kein externes Journaling spezifizieren oder nicht, er verdient kein -1.
Felipe Alcacibar
8
@dobey Ubuntu 12.04 (.3) LTS enthält extentin der Zeilengruppe ext4des [fs_types]Abschnitts in /etc/mke2fs.conf- es ist also ein "Standard". Unabhängig von der Erstellungszeitkonfiguration des Computers, mit dem das Dateisystem verbunden ist, sollten Sie das Dateisystem selbst überprüfen: tune2fs -l </dev/with/ext4> | grep extent(oder die Zeile "Dateisystemfunktionen" in der vollständigen Ausgabe von tune2fs lesen). Wohlgemerkt, ich habe gerade e4defrag -c ...ein 100% volles 1TB-Dateisystem mit extent, und es gibt nur 5 fragmentierte Dateien und "Fragmentation Score" 0. YMMV.
Richard Michael
@RichardMichael FYI: e2defrag -c /pathdruckt nur die ersten 5 gefundenen fragmentierten Dateien (nicht einmal die am meisten fragmentierten). Führen e2defrag -v /pathSie den Befehl aus, um zu sehen, wie die Anzahl der Ausmaße verringert wird.
Tino
17

Verwenden Sie Gparted, um Ihr Dateisystem zu defragmentieren

Wenn Sie genügend Speicherplatz auf Ihrer Festplatte haben, können Sie mit Gparted Ihr Dateisystem defragmentieren ( ext2, ext4, nfts usw. ). Sie müssen von einer CD / DVD / USB-Boot-Disk booten, da das Laufwerk, an dem Sie arbeiten, nicht gemountet sein muss. Damit dies funktioniert, muss mehr ungenutzter Speicherplatz verfügbar sein als belegt. Dies kann eine Weile dauern.

  • Booten Sie von einer Bootdiskette.
  • Führen Sie gparted aus und verkleinern Sie die Partition, die die zu defragmentierenden Daten enthält, auf etwas mehr als die Menge Ihrer Daten.
  • Stellen Sie sicher, dass die Partition, die Sie defragmentieren möchten, die letzte Partition auf dem Laufwerk ist, indem Sie sie an das Ende verschieben (möglicherweise müssen Sie eine weitere leere Partition davor erstellen, wenn sich nur eine Partition auf dem Laufwerk befindet).

Mit der Partition, die Sie als letzte Partition auf dem Laufwerk defragmentieren möchten:

  • Vergrößern Sie die Partition links davon auf die maximale Größe. Dadurch werden Ihre Partitionsdaten an das Ende des Laufwerks verschoben.
  • Wenn dies erledigt ist, verkleinern Sie diese Partition wieder auf die vorherige Größe.
  • Wenn Sie eine leere Partition erstellt haben, auf der sich mehrere befinden, können Sie sie jetzt löschen.
  • Verschieben Sie Ihre Partitionen wieder in die ursprüngliche Reihenfolge und stellen Sie die Größe der Partition wieder her, die Sie defragmentieren möchten.

Es ist jetzt defragmentiert.

Und ich weiß, dass Sie nicht daran interessiert sind, warum / warum man Ubuntu nicht defragmentiert, aber ich werde den Link zu Warum-ist-Defragmentierung- sowieso unnötig veröffentlichen .

James
quelle
Warum wachsen Sie nach dem Schrumpfen nach links und schrumpfen dann wieder, anstatt sich nur nach links zu bewegen?
Jason C
Ich bemerkte auch, dass die Daten nach dem Schritt mit dem Links-Wachsen tatsächlich wieder nach links verschoben wurden (belegt durch gparted moving data, verifiziert durch eine direkte Prüfung des Block-Geräts im Anschluss), sofern dies nicht versions- / dateisystemabhängig ist schrumpfen + nachwachsen kann übersprungen werden. Es scheint ausreichend zu sein, nur: 1) zu schrumpfen und nach rechts zu bewegen, 2) anzuwenden, 3) nach links zu wachsen.
Jason C
Durch einfaches Verschieben der Partition, auf die Sie zuletzt defragmentieren möchten, wird sie nicht unbedingt an das tatsächliche Ende der Festplatte verschoben. Wenn Sie die Partition nach links auf die maximale Größe vergrößern, wird sichergestellt, dass die Endpartition tatsächlich bis zum Ende der Festplatte verschoben wird.
James
Bewegen des Knopfes nach rechts tut es bis zum Ende der Festplatte bewegen. Die Partitionsleiste am oberen Rand der grafischen Benutzeroberfläche ist eigentlich eine genaue Darstellung des Datenlayouts (zumindest für das Betriebssystem gut sichtbar, Flash-Geräte ordnen sich beispielsweise logisch physischen Positionen auf der anderen Seite des Controllers zu, aber für eine typisches HDD, es ist genau). Dies kann überprüft werden, indem der neue Startort in der Partitionstabelle beobachtet wird. :)
Jason C
Ah, wir kommunizieren falsch. Sie wollten die Partition neu anordnen, damit sie die letzte ist. Ich meinte , bewegen Sie die Partition bis zum Ende des Antriebs, und das ist , was ich dachte , dass Sie gut gemeint (Sie können Partitionen bewegen auf dem Laufwerk mit gparted unabhängig sie von Nachbestellung). :)
Jason C
3

Defragmentierung des ext4-Dateisystems unter Linux Ich füge diese Antwort hinzu, um zu zeigen, wie wir verschiedene integrierte Linux-Tools finden können, um einige häufig durchgeführte Vorgänge auszuführen. Sie

Beachten Sie außerdem, dass Sie als Superuser nur dann vorgehen müssen, wenn Sie defragmentieren möchten, ohne die Bereitstellung aufzuheben.

Befehl apropos verwenden

e4defrag -vc /path #verbose output with count
Sudip Bhandari
quelle
2

Ubuntu 14.04 LTS legt (zumindest das primäre Laufwerk) in der EXT4-Partition ab, wenn es bei einer Neuinstallation installiert wird (nicht auf Win-Junk).

In diesem Fall haben Sie, wenn Sie gerade ein neues System eingerichtet oder auf einem alten System neu formatiert und dann eine Neuinstallation durchgeführt haben, standardmäßig mit 14.04 LTS eine EXT4-Partition unter /dev/sda1.

Öffnen Sie jetzt einfach ein Terminal ( CTRL- ALT- T) und geben Sie Folgendes ein:

sudo e4defrag -c /dev/sda1

und seien Sie geduldig, bis die Überprüfung abgeschlossen ist und Sie den Fragmentierungsbericht zurückerhalten.

Wenn Sie sich nicht sicher sind, ob eine EXT4-Partition auf Ihrem Betriebssystemlaufwerk vorhanden ist, gehen Sie einfach zu HOME und geben Sie Folgendes ein df -T. Überprüfen Sie, auf welche Werte Ihre sda ​​* -Partitionen eingestellt sind (versuchen Sie dies in 14.04LTS, und es wird EXT4 angezeigt, es sei denn, Sie haben beim Einrichten der Festplatte einen anderen Partitionstyp ausgewählt).

Lanze
quelle
Ich bin ein wenig vom Thema abgekommen und habe der Frage fast keinen Wert beigemessen, besonders beim letzten Schimpfen.
Fernando Silveira
Sie können mehr als eine Partition mit demselben Befehl defragmentieren: sudo e4defrag / dev / sda1 / dev / sda2
ProgAndPlay
1

e2fsck -D /dev/sda1 optimiert Verzeichnisse, indem sie sortiert und neu indiziert werden, was normalerweise die Dinge beschleunigt. Wird möglicherweise nicht als vollständige Defragmentierung des Dateisystems angesehen, aber nicht alle Systeme verfügen über e4defrag.

rjt
quelle