Ich habe die folgenden Geräte mit Linux Mint 18.1 auf Laptops und GNU / Linux Debian 9 auf dem Server.

(Alle sind 64-Bit und mit Cinnamon-Desktop.)

Alle Laufwerksgeräte sind mit dem Dateisystem ext4 formatiert. RAID 1 wird unter Verwendung von mdadm durchgeführt.

  1. Laptop mit 1 SSHD (nicht zu verwechseln mit HDD).

  2. Laptop mit 3 Laufwerken: 2 x Consumer-Festplatten in RAID 1 und 1 x SSD.

  3. Server mit 5 Laufwerken: 4 x Unternehmensfestplatten in zwei RAID 1 und 1 x SSD.

Ich habe das System auf diesen SSDs und würde niemals eine SSD defragmentieren.

Die Frage bezieht sich auf HHDs und eine SSHD.

Ich habe ein altes PDF mit einigen weiteren Funktionen für e4defrag .

  1. Warum muss das Dateisystem gemäß dieser Fehlermeldung bereitgestellt werden, wenn versucht wird, ein nicht bereitgestelltes Dateisystem zu defragmentieren? Ich möchte verstehen, warum das so ist:

    Filesystem is not mounted 
  2. Ich hätte gerne eine Defragmentierung des freien Speicherplatzes implementiert. AFAIK wird derzeit überprüft. Ist es mir möglich, z.B. e4defrag aus der Quelle mit diesen verfügbaren Optionen kompilieren oder sowieso?

    e4defrag -f /deviceOrDirectory 
  3. würde ich Ich verwende auch gerne relevante Datenfunktionen:

    e4defrag -r /deviceOrDirectory 

Ich habe viele relevante Gründe zu der Annahme, dass sich die Fragmentierung auf diesen Computern verlangsamt Beispiel für die Lesegeschwindigkeit:

  1. Vom Server mit RAID 1 Festplatten:

    [2556/30987]/raid1a/bitcoind/blocks/rev00820.dat: 100% extents: 16 -> 1 [ OK ] 
  2. Mit RAID 1 Festplatten:

    [29405/50810]/raid1/movies/SGA-HEVC/S04E01 - Adrift.mp4: 100% extents: 31 -> 6 [ OK ] 

Wie Sie sehen, konnte die Defragmentierung die 31-Blöcke-Datei nicht einmal in ein Stück zerlegen. Natürlich könnte man argumentieren, dass es sich um eine Filmdatei handelt, also spielt es keine Rolle. Richtig, aber nur in diesem Fall.

Der Befehl, mit dem ich die Defragmentierung starte:

  1. Auf dem Server:

    sudo e4defrag -v /dev/md1 
  2. Auf dem Laptop:

    sudo e4defrag -v /raid1/ 

Es scheint keine Rolle zu spielen, ob ich den Befehl mit dem Gerätenamen oder einem Verzeichnis aufrufe.

Können Sie mich in die richtige Richtung weisen?

Kommentare

  • Sie haben Messergebnisse, die auf eine Defragmentierung als Quelle für langsamen Zugriff hinweisen? Wenn ja, welche? In den meisten Fällen müssen Sie ‚ keine manuelle Defragmentierung auf ext4-Dateisystemen durchführen, solange ‚ genügend freier Speicherplatz vorhanden ist Damit der Zuordnungsalgorithmus ihn während des normalen Betriebs automatisch defragmentiert.
  • @dirkt Bisher wurden keine Messungen durchgeführt. Ich diskutiere nicht ‚, ob das Defragmentieren des ext4 -Dateisystems effektiv ist oder nicht. Die Fragen sind klar: Vorgehensweise e4defrag -r und e4defrag -f.

Antwort

e4defrag muss das Dateisystem bereitgestellt werden, da der Dateisystemtreiber des Kernels aufgefordert wird, die Defragmentierung durchzuführen. Machen Sie es nicht selbst.

Bei der Defragmentierung des freien Speicherplatzes und der relevanten Defragmentierung von Dateien wurden die Patches nie abgeschlossen. Die letzte Erwähnung auf der entsprechenden Mailingliste stammt aus dem Jahr 2014 :

Die e4defrag befindet sich in e2fsprogs, und der Code wird immer noch gepflegt und verbessert. Insbesondere Dmitry Monakhov hat viele „Foltertests“ hinzugefügt und im zugrunde liegenden Kernel-Code eine Reihe von Rennbedingungen gefunden. Kürzlich schickte er auch einen Code-Refactor des Kernel-Codes, der ihn erheblich verbesserte und (die Größe von ext4 um 550 Codezeilen verkleinerte).

Allerdings gab es für keine echte Feature-Entwicklung e4defrag seit geraumer Zeit. Es gab einige Diskussionen darüber, welche Kernel-APIs diese Funktion unterstützen könnten, aber es gab noch nie einen endgültigen API-Vorschlag, geschweige denn eine Implementierung.

Ich bezweifle also, dass es derzeit etwas gibt, das es wert ist, getestet zu werden.

Kommentare

  • Gibt es Informationen zur aktuellen (2020) besten Defragmentierungspraxis für ext4 – oder eine Empfehlung, aufgrund der Unzuverlässigkeit kein vorhandenes Tool zu verwenden? Mein e4defrag --version sagt e4defrag 1.45.5 (07-Jan-2020).
  • Die Situation hat sich nicht wesentlich geändert.Kurz nachdem ich die obige Antwort geschrieben hatte, gab es einen Thread, der eine Zusammenfassung der Relevanz von e4defrag bei enthält die Zeit. Es ist immer noch ein vollständig unterstützter Teil von Ext4, aber es kann nicht in allen Fällen verwendet werden (Dateisysteme mit Bigalloc können nicht defragmentiert werden, Datenjournal ist nicht mit Defragmentierung kompatibel und DAX-Inodes und verschlüsselte Dateien können nicht verschoben werden).
  • Danke, Stephen. Bedeutet dies, dass der Befehl in dem Sinne sicher ist, dass er vor einer möglicherweise schädlichen Aktion ausfällt, sodass ich ihn ohne Risiko für meine Daten verwenden kann? (Grundsätzlich habe ich gerade 750000 Dateien entfernt und mich gefragt, ob die Festplatte jetzt fragmentiert werden kann (ich nehme an, dass dies der Fall ist) und ob sie bereinigt oder belassen werden soll.)
  • Wie bei jedem Dateisystemvorgang ist dies möglicherweise gefährlich. Verwenden Sie es daher nur, wenn Sie Backups haben (oder die Daten verfügbar sind). Der Befehl ist jedoch sicher, soweit die Entwickler wissen. Wenn es auf Situationen stößt, die es nicht bewältigen kann, stoppt es sicher.
  • Prost. Es befinden sich noch 3 TB Daten auf der Festplatte, keine Sicherung. Ich werde warten, bis ich einen Tag habe, an dem ich mich traue, es zu versuchen 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.