Btrfs Defragmentierung von Dateien / Ordnern

9

Ich habe gerade Ubuntu 11.10 auf dem Btrfs-Dateisystem installiert und möchte eine Frage zur Defragmentierung von Dateien stellen.

Muss ich wirklich Dateien oder das gesamte System defragmentieren?

Defragmentierung # btrfs Dateisystem defragmentieren / pool1 Defragmentieren

Btrfs Defragmentierung

Eine Null
quelle
Nein, btrs, ext4,3,2, ETC ... Sie müssen die Laufwerke nicht defragmentieren, sie leiden darunter wie jedes andere Dateisystem.
Uri Herrera
Aber bei weitem nicht das gleiche wie bei NTFS.
Uri Herrera

Antworten:

13

Sie müssen Btrfs-Dateisysteme nicht wirklich manuell defragmentieren.

Ja, Btrfs ist COW (Copy-on-Write), was bedeuten würde, dass Dateien viel mehr fragmentiert werden als Ext. Dies wird jedoch in verschiedenen Aspekten des Designs behandelt, einschließlich der Möglichkeit, das Dateisystem einfach zu defragmentieren, während es online ist. Dieser Auszug enthält weitere Einzelheiten (Hervorhebung von mir):

Automatische Defragmentierung

COW-Dateisysteme (Copy-on-Write) haben viele Vorteile, aber auch einige Nachteile, beispielsweise die Fragmentierung. Btrfs legt die Daten nacheinander an, wenn Dateien zum ersten Mal auf die Festplatte geschrieben werden. Ein COW-Design impliziert jedoch, dass nachfolgende Änderungen an der Datei nicht über die alten Daten geschrieben werden dürfen, sondern in einem freien Block abgelegt werden müssen Fragmentierung verursachen (RPM-Datenbanken sind ein häufiger Fall dieses Problems). Darüber hinaus treten die Fragmentierungsprobleme auf, die allen Dateisystemen gemeinsam sind.

Btrfs bietet bereits Alternativen zur Bekämpfung dieses Problems an: Erstens unterstützt es die Online-Defragmentierung mit dem Befehl btrfs filesystem defragment. Zweitens hat es eine Mount-Option, -o nodatacowdie COW für Daten deaktiviert. Jetzt fügt btrfs eine dritte Option hinzu, die -o autodefragMount-Option. Dieser Mechanismus erkennt kleine zufällige Schreibvorgänge in Dateien und stellt sie für einen automatischen Defragmentierungsprozess in die Warteschlange, sodass sich das Dateisystem während der Verwendung selbst defragmentiert. Es ist noch nicht für Virtualisierung oder große Datenbank-Workloads geeignet, eignet sich jedoch gut für kleinere Dateien wie RPM-, SQLite- oder BDB-Datenbanken.

Solange Sie nicht vorhaben, E / A-intensive Software wie eine Datenbank unter erheblicher Last auszuführen, sollten Sie alle in Ordnung sein, solange Sie Ihre Dateisysteme mit der autodefragOption mounten .

Um die Fragmentierung von Dateien zu überprüfen, können Sie das Dienstprogramm filefrag verwenden :

$ find /path -type f -exec filefrag {} + >frag.list
# Now you can use your favourite tools to sort the data

Auf Systemd-Systemen /var/log/journal/wird wahrscheinlich am stärksten fragmentiert sein. Sie können auch ~/.mozillaDatenbanken anderer Browser anzeigen.

Verwenden Sie zum Defragmentieren:

$ sudo btrfs fi defrag -r /path
Félix Saparelli
quelle
Woher weiß ich, dass es defragmentiert ist ... oder nicht ... Befehl zum Überprüfen des Defragmentierungsstatus
One Zero
2
Diese Antwort ist laut BTRFS-Wiki falsch: btrfs gotchas . Das Problem der Dateifragmentierung kann leicht reproduziert werden, indem systemd-journald auf einem btrfs-Volume ausgeführt wird. Obwohl ich inhowfar noch nicht getestet habe, löst die Autodefrag-Option dieses Problem.
Jonas Schäfer
Ich benutze btrfs jetzt seit mindestens 18 Monaten in Vollzeit, mit systemd, Firefox usw. Eine schnelle Überprüfung mit filefragzeigt, dass Journaldateien tatsächlich stark fragmentiert sind (durchschnittlich jeweils 10.000 Extents), aber ich habe weder CPU-Spitzen noch CPU-Spitzen beobachtet Auswirkungen auf die Leistung. Ich habe nicht autodefragan, werde es aktivieren und beim nächsten Neustart zurückmelden.
Félix Saparelli
Also: Dateifragmentierung tritt auf, autodefraghilft, die Auswirkungen auf die Leistung sind auf alltäglichen Systemen bestenfalls gering. Natürlich müssen Server mit hoher Last möglicherweise die Dinge messen und optimieren, aber andererseits ist dies eine Alpha-Software, sodass Sie sie dort möglicherweise trotzdem vermeiden möchten.
Félix Saparelli
find /path -type f -exec filefrag {} + >frag.listvermeidet alle FIBMAP unsupportedFehler aus Verzeichnissen und anderen nicht regulären Dateien und bricht nicht bei seltsamen Dateinamen.
Peter Cordes
0

Für dieses Thema halte ich es für besser, Folgendes zu klären:

Beliebiges Dateisystem! = Wiederherstellungs- / Verwaltungsdienstprogramme

Denken Sie daran, dass es im Dateisystem darum geht, wie Daten auf einer physischen Hardware organisiert werden. Jede andere Aktivität wird mit zusätzlicher Software und Dienstprogrammen ausgeführt, die insbesondere in GNU / Linux von Personen ausgeführt werden, die wahrscheinlich nicht eng mit demjenigen verwandt sind, der sie erstellt hat das Dateisystem.

Dies ist bei den Btrfs wahrscheinlich nicht der Fall, aber manchmal sind wir dem nahe, da Desktop- und Unternehmensumgebungen unterschiedliche Lösungen mit unterschiedlichen Realisierbarkeitsgraden bereitstellen können.

Die Antwort auf Ihre Frage lautet "Nein", ist jedoch ein "Nein", das sich auf das normale Verhalten eines generischen Dateisystems bezieht, und jedes Dienstprogramm, das Sie dazu finden, ist einfach ein anderes Projekt.

Wenn Sie Ihr Dateisystem defragmentieren müssen, denken Sie daran, dass Sie externe Software verwenden, die nicht wirklich mit der Lebensdauer des Dateisystems selbst zusammenhängt, mit allen Vor- und Nachteilen.

Mikro
quelle
0

Der Befehl zum Defragmentieren eines btrfs-Dateisystems lautet

btrfs filesystem defragment sync -r -v -f [-czlib] / /home
user615852
quelle
0

Basierend auf dieser Antwort kam ich auf:

sudo find / -xdev -type f -exec filefrag {} + | sed -En 's/(.+): (\w+) extent.*/\2 \1/p' | sort -nr

Hier werden zuerst die am stärksten fragmentierten Dateien mit dem folgenden Format aufgelistet:

<num-fragments> <pathname>
Tom Hale
quelle