Btrfs

So defragmentieren Sie ein Btrfs-Dateisystem

So defragmentieren Sie ein Btrfs-Dateisystem

Btrfs ist ein Extent-basiertes Copy-on-Write (CoW) Dateisystem. Große Dateien werden in mehreren Datenbereichen gespeichert; und wenn diese großen Dateien geändert werden, werden die zu ändernden Extents in neue, leere Extents an einem anderen Ort des Speichergeräts kopiert und am neuen Ort geändert. Dann werden die Extents der großen Dateien neu verknüpft, um auf die aktualisierten Extents zu verweisen. Die alten Extents werden nie sofort entfernt.

So verursacht die Copy-on-Write (CoW)-Funktion des Btrfs-Dateisystems eine Fragmentierung. Fragmentierung bedeutet, dass die Datenmengen großer Dateien über das gesamte Speichergerät verstreut sind. Sie sind nicht sofort. Dadurch kann die Leistung (Lese-/Schreibgeschwindigkeit) des Dateisystems reduziert werden.

Um dieses Problem zu lösen, ist es notwendig, das Btrfs-Dateisystem von Zeit zu Zeit zu defragmentieren. Dieser Artikel zeigt Ihnen, wie Sie das Btrfs-Dateisystem defragmentieren.

Abkürzungen

Die in diesem Artikel verwendeten Abkürzungen (Kurzformen) lauten wie folgt:

Voraussetzungen

Um die in diesem Artikel enthaltenen Beispiele auszuprobieren:

Ich habe eine 20 GB HDD sdb auf meinem Ubuntu-Rechner. Ich werde ein Btrfs-Dateisystem auf der Festplatte erstellen sdb.

$ sudo lsblk -e7

Hinweis: Ihre HDD/SSD wird wahrscheinlich einen anderen Namen haben als meine, ebenso wie die Partitionen. Ersetzen Sie sie also von nun an durch Ihre.

Sie können ein Btrfs-Dateisystem auf Ihrer HDD/SSD erstellen (ohne Partitionierung), wenn Sie eine freie HDD/SSD haben. Sie können auch eine Partition auf Ihrer HDD/SSD erstellen und dort ein Btrfs-Dateisystem erstellen.

Um Hilfe bei der Installation des Btrfs-Dateisystems in Ubuntu zu erhalten, lesen Sie den Artikel Install and Use Btrfs on Ubuntu 20.04 LTS.

Hilfe bei der Installation des Btrfs-Dateisystems in Fedora finden Sie im Artikel Install and Use Btrfs on Fedora 33.

Erstellen eines Btrfs-Dateisystems

Sie können ein Btrfs-Dateisystem auf Ihrer HDD/SSD (unpartitioniert) oder auf Ihrer HDD/SSD-Partition erstellen.

So erstellen Sie ein Btrfs-Dateisystem auf dem sdb HDD (gesamte HDD, keine Partitionen) und geben Sie ihr das Dateisystem-Label Daten, führen Sie den folgenden Befehl aus:

$ sudo mkfs.btrfs -L Daten /dev/sdb

Ein Btrfs-Dateisystem sollte nun auf dem sdb HDD.

Erstellen Sie das Verzeichnis /Daten um das soeben erstellte Btrfs-Dateisystem mit dem folgenden Befehl zu mounten:

$ sudo mkdir -v /data

So mounten Sie das Btrfs-Dateisystem, das auf dem erstellt wurde sdb HDD auf der /Daten Verzeichnis, führen Sie den folgenden Befehl aus:

$ sudo mount /dev/sdb /data

Das Btrfs-Dateisystem sollte nun gemountet sein, wie Sie im Screenshot unten sehen können:

$ df -h /data

Manuelles Defragmentieren eines Btrfs-Dateisystems

Wie Sie im Screenshot unten sehen können, habe ich zwei Dateien auf das Btrfs-Dateisystem kopiert, das auf dem eingehängt ist /Daten Verzeichnis, um den Prozess der Defragmentierung des Btrfs-Dateisystems zu demonstrieren:

$ ls -lh /data

Sie können eine einzelne Datei oder ein ganzes Subvolume/Verzeichnis rekursiv defragmentieren.

So defragmentieren Sie die einzelne Datei /data/ubuntu-20.04.1-live-server-amd64.iso, Wir führen den folgenden Befehl aus:

$ sudo btrfs Dateisystem-Defragmentierung -vf /data/ubuntu-20.04.1-live-server-amd64.iso

Die Datei /data/ubuntu-20.04.1-live-server-amd64.iso sollte defragmentiert werden.

So defragmentieren Sie jede Datei oder jedes Verzeichnis der /Daten Verzeichnis rekursiv, führen Sie den folgenden Befehl aus:

$ sudo btrfs Dateisystemdefragmentierung -rvf /data

Wie Sie sehen können, sind alle Dateien der /Daten Verzeichnis sind defragmentiert.

Auf die gleiche Weise, wenn Sie das Untervolumen hätten /data/osimages, dann könnten Sie alle Dateien des defragmentieren /data/osimages subvolume rekursiv mit folgendem Befehl:

$ sudo btrfs Dateisystem-Defragmentierung -rvf /data/osimages

Komprimieren eines Btrfs-Dateisystems während der Defragmentierung

Mit dem Btrfs-Dateisystem können Sie Dateien komprimieren, während Sie sie defragmentieren.

Um alle Dateien im . zu defragmentieren /Daten Verzeichnis und komprimieren Sie sie mit dem ZLIB Komprimierungsalgorithmus führen Sie den Defragmentierungsbefehl mit dem -czlib Möglichkeit wie folgt:

$ sudo btrfs Dateisystemdefragmentierung -rvf -czlib /data

Um alle Dateien im . zu defragmentieren /Daten Verzeichnis und komprimieren Sie sie mit dem ZSTD Komprimierungsalgorithmus gleichzeitig den Defragmentierungsbefehl mit dem -czstd Möglichkeit wie folgt:

$ sudo btrfs Dateisystemdefragmentierung -rvf -czstd /data

Um alle Dateien im . zu defragmentieren /Daten Verzeichnis und komprimieren Sie diese mit dem LZO Komprimierungsalgorithmus ausführen, führen Sie den Defragmentierungsbefehl mit dem -clzo Möglichkeit wie folgt:

$ sudo btrfs Dateisystem-Defragmentierung -rvf -clzo /data

Die Dateien im /Daten Verzeichnis sollte gleichzeitig defragmentiert und komprimiert werden.

Auf die gleiche Weise können Sie auch die Dateien eines Btrfs-Subvolumes defragmentieren und komprimieren.

Ein Btrfs-Dateisystem automatisch defragmentierensystem

Sie können die automatische Defragmentierung Ihres Btrfs-Dateisystems beim Mounten aktivieren. Diese Funktion des Btrfs-Dateisystems defragmentiert alle Dateien Ihres Btrfs-Dateisystems automatisch.

So mounten Sie das Btrfs-Dateisystem, das auf dem erstellt wurde sdb HDD im /Daten Verzeichnis mit aktivierter automatischer Defragmentierung beim Booten, müssen Sie einen Eintrag für das Btrfs-Dateisystem im /etc/fstab Datei.

Suchen Sie zuerst die UUID des Btrfs-Dateisystems, das auf dem erstellt wurde sdb Festplatte wie folgt:

$ sudo blkid /dev/sdb

Wie Sie sehen können, ist die UUID des Btrfs-Dateisystems, das auf dem sdb Festplatte ist 60afc092-e0fa-4b65-81fd-5dfd7dd884de.

Bei dir wird es anders sein. Ersetzen Sie es also von nun an durch Ihres.

Öffne das /etc/fstab Datei mit dem nano Texteditor wie folgt:

$ sudo nano /etc/fstab

Fügen Sie die folgende Zeile am Ende des . hinzu /etc/fstab Datei:

UUID=60afc092-e0fa-4b65-81fd-5dfd7dd884de /data     btrfs      autodefrag         0              0

Wenn Sie fertig sind, drücken Sie + X gefolgt von Ja und um die zu retten /etc/fstab Datei.

Damit die Änderungen wirksam werden, starten Sie Ihren Computer mit dem folgenden Befehl neu:

$ sudo Neustart

Wie Sie sehen können, ist das Btrfs-Dateisystem, das auf dem sdb HDD ist auf dem montiert /Daten Verzeichnis mit aktivierter automatischer Defragmentierung.

Probleme beim Defragmentieren eines Btrfs-Dateisystems

Obwohl es den Anschein hat, dass die Defragmentierung die Leistung des Dateisystems verbessert, gibt es einige Probleme bei der Defragmentierung eines Btrfs-Dateisystems.

Da Btrfs ein Copy-on-Write (CoW)-Dateisystem ist, müssen Sie die Copy-on-Write-Funktion des Btrfs-Dateisystems verstehen, um die Probleme mit der Defragmentierung des Btrfs-Dateisystems zu verstehen.

Angenommen, Sie haben eine große Datei (Datei1), das 100 Extents (Sie können sich Extents als Dateiblöcke vorstellen) eines Btrfs-Dateisystems verwendet. Wenn Sie eine weitere Kopie dieser großen Datei erstellen (Datei2) im selben Btrfs-Dateisystem, sehen Sie, dass kein zusätzlicher Speicherplatz verwendet wird. Das liegt daran, dass die Dateien identisch sind und die 100 Extents jeder Datei gleich sind. Das Btrfs-Dateisystem verwendet also die gleichen Extents für beide Dateien.

Abbildung 1: Datei1 und Datei2 sind identisch und teilen sich die gleichen Btrfs-Dateisystem-Extents, um Speicherplatz zu sparen

Nehmen wir an, Sie haben jetzt eine der Kopien der großen Datei (Datei2). Die Modifikation muss 10 der 100 Extents ändern. Das Btrfs-Dateisystem kopiert die erforderlichen 10 Extents an einen anderen ungenutzten Ort (z, e101-e110) des Dateisystems und ändern Sie sie dort. Sobald die Änderungen auf die Festplatte geschrieben wurden, verknüpft das Btrfs-Dateisystem die Extents erneut, sodass die Änderungen in der großen Datei widergespiegelt werden. Der Vorgang ist in der folgenden Abbildung dargestellt:

Figur 2: 10 Ausmaße werden geändert in Datei2. Die Extents werden also im Btrfs-Dateisystem neu verknüpft.

Aus den Abbildungen 1 und 2 können Sie verstehen, wie Copy-on-Write (CoW) funktioniert und wie das Btrfs-Dateisystem Copy-on-Write (CoW) verwendet, um Speicherplatz zu sparen.

Nachdem Sie nun wissen, wie die Copy-on-Write (CoW)-Funktion des Btrfs-Dateisystems funktioniert, werden Sie die Probleme beim Defragmentieren eines Btrfs-Dateisystems verstehen.

  1. Defragmentierungsdateien verschieben Btrfs-Datenbereiche und versuchen, sie nacheinander auszurichten. Das Copy-on-Write verknüpft also die Kopien der Dateiumbrüche. Dies erhöht redundante Datenbereiche sowie die Festplattennutzung eines Btrfs-Dateisystems, das zuvor durch die gemeinsame Nutzung von Datenbereichen zwischen identischen (oder nahezu identischen) Kopien der Datei gespeichert wurde.
  2. Wenn ein Btrfs-Subvolume über mehrere Snapshots verfügt, werden beim Defragmentieren des Subvolumes die Copy-on-Write-Links zwischen dem Subvolume und den Snapshots unterbrochen. Dies erhöht die Festplattennutzung eines Btrfs-Dateisystems.
  3. Wenn Sie das Btrfs-Dateisystem für große Datenbanken oder VM-Images (zum Speichern von VM-Daten/-Festplatten) verwenden, wirkt sich die Defragmentierung des Dateisystems ebenfalls negativ auf die Leistung des Dateisystems aus.

Fazit

In diesem Artikel haben Sie gelernt, wie man eine einzelne Datei und die Dateien in einem Verzeichnis/Subvolume rekursiv eines Btrfs-Dateisystems defragmentiert. Sie haben auch gelernt, wie Sie die automatische Defragmentierung auf einem Btrfs-Dateisystem beim Mounten aktivieren. Schließlich behandelte der Artikel einige der Probleme beim Defragmentieren eines Btrfs-Dateisystems.

Weisen Sie Ihre Maustasten mit der X-Mouse Button Control für verschiedene Software unterschiedlich zu
Vielleicht benötigen Sie ein Tool, mit dem sich die Steuerung Ihrer Maus bei jeder von Ihnen verwendeten Anwendung ändern kann. In diesem Fall können ...
Microsoft Sculpt Touch Wireless-Maus Bewertung
Ich habe vor kurzem gelesen, dass Microsoft Sculpt Touch kabellose Maus und beschloss, sie zu kaufen. Nachdem ich es eine Weile benutzt hatte, beschlo...
AppyMouse On-Screen Trackpad und Mauszeiger für Windows Tablets
Tablet-Benutzer vermissen oft den Mauszeiger, insbesondere wenn sie die Laptops gewohnt sind. Die Touchscreen-Smartphones und -Tablets bieten viele Vo...