So defragmentieren Sie ein BTRFS -Dateisystem

So defragmentieren Sie ein BTRFS -Dateisystem

BTRFS ist ein ausgiebiges KOP-Dateisystem (Cow-auf-Write). Große Dateien werden in mehreren Datenauswertungen gespeichert. und wenn diese großen Dateien geändert werden, werden die zu modifizierten Ausmaßstäbe in neue, leere Ausdehnung an einem anderen Ort des Speichergeräts kopiert und am neuen Ort geändert. Anschließend werden die Ausdehnung der großen Dateien wieder angelegt, um auf den aktualisierten Ausmaß zu verweisen. Die alten Ausdehnungen werden nie sofort entfernt.

Auf diese Weise verursacht die Kopie-auf-Write-Funktion (Cow) des BTRFS-Dateisystems eine Fragmentierung. Die Fragmentierung bedeutet, dass die Datenauswertungen großer Dateien um das gesamte Speichergerät verteilt sind. Sie sind nicht augenblicklich. Die Leistung (Lese-/Schreibgeschwindigkeit) des Dateisystems kann also reduziert werden.

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

Abkürzungen

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

  • Kuh - Kopieren auf dem Schreiben
  • Btrfs - B-Tree-Dateisystem
  • HDD - Festplatte
  • SSD - Festkörperantrieb
  • GB - Gigabyte
  • VM - Virtuelle Maschine

Voraussetzungen

Um die in diesem Artikel enthaltenen Beispiele auszuprobieren:

  • Sie müssen das BTRFS -Dateisystem auf Ihrem Computer installieren lassen.
  • Sie müssen eine Ersatz -HDD/SSD (einer beliebigen Größe) oder mindestens 1 kostenloser HDD/SSD -Partition (einer beliebigen Größe) haben.

Ich habe eine 20 GB HDD SDB Auf meiner Ubuntu -Maschine. Ich werde ein BTRFS -Dateisystem auf der Festplatte erstellen SDB.

$ sudo lsblk -e7

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

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

Um Unterstützung bei der Installation des BTRFS -Dateisystems in Ubuntu zu installieren.04 LTS.

Um Unterstützung bei der Installation des BTRFS -Dateisystems in Fedora zu installieren.

Erstellen eines BTRFS -Dateisystems

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

So erstellen Sie ein BTRFS -Dateisystem auf dem SDB HDD (gesamte Festplatte, keine Partitionen) und geben Sie ihm das Dateisystem -Etikett Daten, Führen Sie den folgenden Befehl aus:

$ sudo mkfs.BTRFS -L -Daten /Dev /SDB

Ein BTRFS -Dateisystem sollte nun auf dem erstellt werden SDB HDD.

Erstellen Sie das Verzeichnis /Daten So montieren Sie das BTRFS -Dateisystem, das Sie gerade mit dem folgenden Befehl erstellt haben:

$ sudo mkdir -v /Daten

So montieren Sie das auf der erstellte BTRFS -Dateisystem SDB HDD auf der /Daten Verzeichnis, führen Sie den folgenden Befehl aus:

$ sudo montage /dev /sdb /Daten

Das BTRFS -Dateisystem sollte jetzt montiert werden, wie Sie im folgenden Screenshot sehen können:

$ df -h /Daten

Defragmentierung eines BTRFS -Dateisystemsystems manuell

Wie Sie im folgenden Screenshot sehen können, habe ich zwei Dateien im BTRFS -Dateisystem kopiert /Daten Verzeichnis, um den Prozess der BTRFS -Dateisystem -Defragmentierung zu demonstrieren:

$ ls -lh /Daten

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

Um die einzelne Datei zu defragmentieren /Daten/Ubuntu-20.04.1-Live-Server-AMD64.ISO, Wir werden den folgenden Befehl ausführen:

$ sudo btrfs Dateisystem Defragment -vf /data /ubuntu -20.04.1-Live-Server-AMD64.ISO

Die Datei /Daten/Ubuntu-20.04.1-Live-Server-AMD64.ISO sollte defragmentiert werden.

Jede Datei oder Verzeichnis des /Daten Führen Sie rekursiv den folgenden Befehl aus:

$ sudo btrfs Dateisystem Defragment -rvf /Daten

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

Auf die gleiche Weise, wenn Sie das Subvolumen hatten /Daten/Ossimages, Dann könnten Sie alle Dateien der Dateien defriert /Daten/Ossimages Subvolume rekursiv mit dem folgenden Befehl:

$ sudo btrfs Dateisystem Defragment -rvf /data /osimages

Komprimierung eines BTRFS -Dateisystems während der Entfaltung

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

Um alle Dateien in der zu defragmentieren /Daten Verzeichnis und komprimieren Sie sie mit dem Zlib Komprimierungsalgorithmus Gleichzeitig führen Sie den Befehl Defragment mit dem aus -Czlib Option wie folgt:

$ sudo btrfs Dateisystem Defragment -rvf -czlib /Daten

Um alle Dateien in der zu defragmentieren /Daten Verzeichnis und komprimieren Sie sie mit dem ZSTD Komprimierungsalgorithmus Gleichzeitig führen Sie den Befehl Defragment mit dem aus -czstd Option wie folgt:

$ sudo btrfs Dateisystem Defragment -rvf -czstd /Daten

Um alle Dateien in der zu defragmentieren /Daten Verzeichnis und komprimieren Sie sie mit dem Lzo Komprimierungsalgorithmus Gleichzeitig führen Sie den Befehl Defragment mit dem aus -Clzo Option wie folgt:

$ sudo btrfs Dateisystem Defragment -rvf -clzo /Daten

Die Dateien in der /Daten Das Verzeichnis sollte gleichzeitig defragmentiert und komprimiert werden.

Auf die gleiche Weise können Sie auch die Dateien eines BTRFS -Subvolume vertreiben und komprimieren.

Defragmentierung eines BTRFS -Dateisystemsystems automatisch

Sie können die automatische Defragmentierung in Ihrem BTRFS -Dateisystem zum Mount Time aktivieren. Diese Funktion des BTRFS -Dateisystems wird alle Dateien Ihres BTRFS -Dateisystems automatisch defremant.

So montieren Sie das auf der erstellte BTRFS -Dateisystem SDB HDD in der /Daten Verzeichnis mit automatischer Defragmentierung zum Zeitpunkt der Startzeit müssen Sie einen Eintrag für das BTRFS -Dateisystem in der Hinzufügung hinzufügen /etc/fstab Datei.

Suchen Sie zunächst die UUID des auf dem erstellten BTRFS -Dateisystemsystems SDB HDD, wie folgt:

$ sudo blkid /dev /sdb

Wie Sie sehen können, wird die UUID des auf der erstellten BTRFS -Dateisystems erstellt SDB HDD ist 60AFC092-E0FA-4B65-81FD-5DFD7DD884DE.

Es wird für Sie anders sein. Achten Sie also darauf, es von nun an durch Ihre zu ersetzen.

Öffne das /etc/fstab Datei mit der Nano Texteditor wie folgt:

$ sudo nano /etc /fstab

Fügen Sie die folgende Zeile zum Ende des /etc/fstab Datei:

UUID = 60AFC092-E0FA-4B65-81FD-5DFD7DDD884DE /DATEN BTRFS AutodeFrag 0 0

Sobald Sie fertig sind, drücken Sie + X gefolgt von Y Und um die zu retten /etc/fstab Datei.

Starten Sie Ihren Computer mit dem folgenden Befehl neu, damit die Änderungen wirksam werden sollen:

$ sudo Neustart

Wie Sie sehen können, wird das auf dem erstellte BTRFS -Dateisystem erstellt SDB HDD ist auf dem montiert /Daten Verzeichnis mit aktivierter automatischer Defragmentierung.

Probleme bei der Befremdung eines BTRFS -Dateisystems

Obwohl es so aussieht, als ob die Defragmentierung die Leistung des Dateisystems verbessert, gibt es einige Probleme bei der Defragmentierung eines BTRFS -Dateisystems.

Als BTRFS ist ein Kopier-auf-Write-Dateisystem (Cow), um die Probleme mit der Defragmentierung von BTRFS-Dateisystemen zu verstehen.

Angenommen, Sie haben eine große Datei (Datei1), das 100 Ausmaß verwendet. Wenn Sie eine andere Kopie dieser großen Datei erstellen (Datei2) Im selben BTRFS -Dateisystem werden Sie feststellen, dass kein zusätzlicher Speicherplatz verwendet wird. Dies liegt daran. Daher verwendet das BTRFS -Dateisystem dieselben Ausmaß für beide Dateien.

Abbildung 1: Datei1 Und Datei2 sind identisch und teilen Sie den gleichen BTRFS -Dateisystem aus, um Speicherplatz zu sparen

Nun, sagen Sie, Sie haben eine der Kopien der großen Datei geändert (Datei2). Die Änderung muss 10 der 100 Ausdehnung ändern. Das BTRFS -Dateisystem kopiert die erforderlichen 10 Ausdehnungen an einem anderen nicht verwendeten Ort (z. B, E101-E110) des Dateisystems und ändern Sie sie dort. Sobald die Änderungen auf die Festplatte geschrieben wurden, verbindet das BTRFS-Dateisystem die Ausdehnung, sodass sich die Änderungen in der großen Datei widerspiegeln. Der Prozess ist in der folgenden Abbildung dargestellt:

Figur 2: 10 Die Ausdehnung werden in geändert Datei2. Die Ausdehnung werden also in das BTRFS-Dateisystem neu verbunden.

Aus den Abbildungen 1 und 2 können Sie verstehen, wie Copy-on-Write (Cow) funktioniert und wie das BTRFS-Dateisystem Kopie auf dem Schreiben (Kuh) verwendet, um Speicherplatz zu speichern.

Nachdem Sie nun wissen, wie die Feature der Kopie-auf-Write (Cow) des BTRFS-Dateisystems funktioniert, werden Sie die Probleme bei der Defragmentierung eines BTRFS-Dateisystems verstehen.

  1. Defragmentierung von Dateien verschieben die BTRFS -Datenaugen und versuchen, sie nacheinander auszurichten. Die Kopie-auf-Schreiben-Links zwischen den Kopien der Dateipausen. Dies erhöht redundante Datenauswertungen sowie die Festplattennutzung eines BTRFS -Dateisystems, das zuvor durch gemeinsame Nutzung von Datenauswerten zwischen identischen (oder nahezu identischen) Kopien der Datei gespeichert wurde.
  2. Wenn ein BTRFS-Subvolume über mehrere Schnappschüsse verfügt. Dadurch wird die Diskussion eines BTRFS -Dateisystems erhöht.
  3. Wenn Sie das BTRFS -Dateisystem für große Datenbanken oder virtuelle Maschinenbilder (zum Speichern von VM -Daten/-disks) verwenden, wirkt sich das Defragmentieren des Dateisystems auch negativ auf die Leistung des Dateisystems aus.

Abschluss

In diesem Artikel haben Sie gelernt. Sie haben auch gelernt, wie man eine automatische Defragmentierung in einem BTRFS -Dateisystem zur Mount -Zeit ermöglicht. Schließlich wurde in dem Artikel einige Probleme bei der Befragung eines BTRFS -Dateisystems erörtert.