Btrfs

Einführung in das Btrfs-Dateisystem

Einführung in das Btrfs-Dateisystem
Btrfs (B-Tree Filesystem) ist ein modernes Copy-on-Write (CoW) Dateisystem für Linux. Btrfs zielt darauf ab, viele erweiterte Dateisystemfunktionen zu implementieren und sich dabei auf Fehlertoleranz, Reparatur und einfache Verwaltung zu konzentrieren. Das btrfs-Dateisystem wurde entwickelt, um die Anforderungen von Hochleistungs- und großen Speicherservern zu unterstützen. Es ist sowohl für Rechenzentren im Petabyte-Bereich als auch für Mobilfunk-Smartphones geeignet.In diesem Artikel werde ich das Btrfs-Dateisystem und seine Funktionen diskutieren. Also lasst uns anfangen.

Beim Schreiben kopieren - CoW-Dateisystem:

Btrfs ist ein Copy-on-Write (CoW) Dateisystem. Wenn Sie in einem CoW-Dateisystem versuchen, Daten im Dateisystem zu ändern, kopiert das Dateisystem die Daten, modifiziert die Daten und schreibt die geänderten Daten dann zurück an einen anderen freien Speicherort des Dateisystems.

Der Hauptvorteil des Copy-on-Write-Dateisystems (CoW) besteht darin, dass der zu ändernde Datenbereich an einen anderen Ort kopiert, geändert und in einem anderen Bereich des Dateisystems gespeichert wird. Der ursprüngliche Datenumfang wird nicht verändert. So kann das btrfs-Dateisystem das Risiko einer Datenbeschädigung oder Teilaktualisierung im Falle eines Stromausfalls während der Datenänderung eliminieren, da die Originaldaten unverändert bleiben.

Der Hauptnachteil des Copy-on-Write (CoW)-Dateisystems besteht darin, dass große Dateien beim Ändern dazu neigen, fragmentiert zu werden. Daher ist ab und zu eine Defragmentierung erforderlich. Glücklicherweise unterstützt das btrfs-Dateisystem die Online-Defragmentierung. Sie müssen das Dateisystem also nicht aushängen, um ein btrfs-Dateisystem zu defragmentieren.

Hauptmerkmale des Btrfs-Dateisystems:

Die Hauptmerkmale des Btrfs-Dateisystems sind:

i) Umfangsbasierte Dateispeicherung: In einem Extent-basierten Dateisystem wird die Speichereinheit Extent genannt. Ein Extent ist ein zusammenhängender Speicherbereich, der für eine Datei reserviert ist. Eine Datei erfordert eine Erweiterung, egal wie klein die Datei ist file. Für größere Dateien (Dateigröße größer als die Extent-Größe) sind mehrere Extents erforderlich. Bei größeren Dateien werden Metadaten verwendet, um die Extents zu verfolgen, die die Datei verwendet. Im Btrfs-Dateisystem sind die Metadaten deutlich kleiner. Kleinere Metadaten verbessern die Speichereffizienz und die Leistung des Dateisystems.

ii) Unterstützung großer Dateigrößen: In einem Btrfs-Dateisystem kann eine einzelne Datei etwa 2 . groß sein64 Byte oder 16 EiB (Exbibyte) groß. Egal wie groß Ihre Datei wird, Btrfs kann sie unterstützen.

iii) Platzsparende Verpackung kleiner Dateien: Normalerweise, egal wie klein eine Datei ist, wird ein Block oder ein Extent benötigt, um die Datei zu speichern. Dadurch wird viel Speicherplatz verschwendet. Um dieses Problem zu lösen, bettet das Btrfs-Dateisystem kleinere Dateien in die Metadaten ein, um kleinere Dateien effizient zu speichern.

iv) Platzsparende indizierte Verzeichnisse: Die Verzeichnisse des btrfs-Dateisystems werden auf zwei verschiedene Arten indiziert. Für die Dateinamensuche wird die schlüsselbasierte Indizierung verwendet. Um Daten zu referenzieren, wird eine Inode-basierte Schlüsselindizierung verwendet. Die zweistufige Indizierung verbessert die Leistung der Verzeichnis-/Dateisuche und reduziert den Speicherbedarf für die Indizes.

v) Dynamische Inode-Zuordnung: Sie benötigen 1 Inode, um auf 1 Datei zu verweisen. Viele Dateisysteme (i.e., Ext4) haben eine feste Anzahl von Inodes. Wenn Sie also zu viele kleine Dateien erstellen, haben Sie möglicherweise noch viel Speicherplatz auf Ihrer Festplatte, können jedoch keine neuen Dateien erstellen. Sie können die maximale Anzahl von Inodes auch nicht erhöhen, nachdem das Dateisystem erstellt wurde.

Btrfs löst dieses Problem, indem es Inodes dynamisch nach Bedarf zuordnet. Sie können also so viele Dateien erstellen, wie Sie möchten, solange Sie freien Speicherplatz haben.

vi) Beschreibbare Snapshots und schreibgeschützte Snapshots: Das Btrfs-Dateisystem unterstützt Snapshots. Sie können einen Snapshot des aktuellen Dateisystems erstellen, mit dem Sie Ihre Daten wiederherstellen können, wenn Sie versehentlich einige Dateien entfernt oder einige Daten beschädigt haben.

Standardmäßig sind die btrfs-Snapshots schreibgeschützt. Nachdem Sie einen schreibgeschützten Snapshot erstellt haben, können Sie keine Dateien/Verzeichnisse in diesem Snapshot ändern. In jedem Fall, wenn Sie Dateien/Verzeichnisse ändern möchten, nachdem Sie einen Snapshot Ihres bestehenden Btrfs-Dateisystems erstellt haben, können Sie den schreibgeschützten Snapshot in einen beschreibbaren Snapshot ändern und alle Dateien/Verzeichnisse in diesem Snapshot ändern.

vii) Teilbände: Ein Btrfs-Dateisystem kann viele Subvolumes haben. Ein Subvolume ist ein benannter Binärbaum (B-Baum) (oder interne/logische Dateisystem-Root) des bestehenden Dateisystem-Root-Trees (Main) des btrfs-Dateisystems. Ein Subvolume ist kein eigenes Blockgerät. Sie können Btrfs-Subvolumes jedoch einzeln mounten. Sie können sich Subvolumes als Namensräume vorstellen.

viii) Subvolume-bewusste Quotenunterstützung: Sie können auch Kontingente für Subvolumes zuweisen. Sobald das Kontingent überschritten ist, können Sie dem Subvolume keine neuen Daten hinzufügen. Sie benötigen keine separaten Programme, um Btrfs-Subvolume-Quoten zu erstellen.

ix) Prüfsummen zu Daten und Metadaten: Um Datenbeschädigungen zu vermeiden, verwendet Btrfs standardmäßig crc32c-Prüfsummenalgorithmen für die Daten und die Metadaten des Dateisystems. Die Prüfsummen werden im Dateisystem gespeichert, um im Hintergrund automatisch auf Dateisystemfehler und Datenbeschädigungen zu prüfen.

Btrfs unterstützt viele andere Prüfsummenalgorithmen: xxhash, sha256 und blake2b.

x) Kompression: Btrfs-Dateisystem unterstützt transparente Dateikomprimierung. Die Komprimierung und Dekomprimierung der Dateien in einem btrfs-Dateisystem erfolgt automatisch im Hintergrund.

Btrfs unterstützt 3 Komprimierungsalgorithmen: ZLIB, LZO und ZSTD.

ZLIB ist die Standardkomprimierungsmethode des btrfs-Dateisystems file.

xi) Integrierte Unterstützung mehrerer Geräte: Btrfs-Dateisysteme verfügen über eine integrierte Unterstützung für den Logical Volume Manager (LVM). Sie können mehrere Speichergeräte in einem einzigen btrfs-Dateisystem hinzufügen. Sie können auch RAID-Arrays auf dem btrfs-Dateisystem konfigurieren, ohne zusätzliche Software zu benötigen.

Das Btrfs-Dateisystem unterstützt Daten-Striping, Datenspiegelung, Daten-Striping+Mirroring sowie Single- und Dual-Parity-Implementierungen.

Datenstriping: Wenn Sie mehrere Speichergeräte im selben btrfs-Dateisystem hinzugefügt haben, kann btrfs dieselbe Datei auf verschiedenen physischen Geräten/Partitionen speichern. Dies wird als Daten-Striping bezeichnet. Data Striping verbessert die Lese-/Schreibleistung des Dateisystems. RAID-0 nutzt die Data-Striping-Funktion umfassend.

Datenspiegelung: Wenn Sie mehrere Speichergeräte im selben btrfs-Dateisystem hinzugefügt haben, werden alle auf ein Speichergerät geschriebenen Daten auf alle anderen Speichergeräte geschrieben. Dies wird als Datenspiegelung bezeichnet. RAID-1 nutzt die Datenspiegelungsfunktion umfassend.

Daten-Striping+einzelne Parität: RAID-5 verwendet Daten-Striping und einzelne verteilte Parität. Wenn Sie mehrere Speichergeräte in einem btrfs-Dateisystem hinzugefügt haben, entfernt RAID-5 die Daten auf mehreren Speichergeräten und berechnet und speichert Paritätsblöcke auf den Speichergeräten. RAID-5 kann den Ausfall eines einzelnen Laufwerks überstehen.

Datenstriping+doppelte Parität: RAID-6 verwendet Daten-Striping und doppelte verteilte Parität. Wenn Sie mehrere Speichergeräte in einem btrfs-Dateisystem hinzugefügt haben, entfernt RAID-6 die Daten auf mehreren Speichergeräten und berechnet und speichert doppelte Paritätsblöcke auf den Speichergeräten. RAID-6 kann zwei Laufwerksausfälle überstehen. Ansonsten ist es identisch mit RAID-5 (Daten-Striping+Single Parity).

Daten-Striping+Spiegelung: RAID-10 verwendet gleichzeitig Daten-Striping und Datenspiegelung. RAID-10 erfordert das Hinzufügen einer geraden Anzahl von Speichergeräten derselben Größe zu einem einzelnen btrfs-Dateisystem. Die Mindestanzahl von Speichergeräten, die Sie zu einem RAID-10-btrfs-Dateisystem hinzufügen können, beträgt 4. Die Hälfte des Speichergeräts wird für das Daten-Striping verwendet und die andere Hälfte wird für die Spiegelung der Daten der ersten Hälfte der Speichergeräte (bei denen Daten gestript werden) verwendet.

xii) SSD-Bewusstsein und -Optimierungen: Das btrfs-Dateisystem ist SSD-fähig und verfügt über einige SSD-Optimierungsfunktionen. Das btrfs-Dateisystem bietet auch TRIM/Discard-Unterstützung für SSD-Speichergeräte.

Die TRIM-Funktion kann nicht mehr verwendete Datenbereiche erkennen und markieren. Sobald die Erweiterungen markiert sind, kann das btrfs-Dateisystem sie automatisch löschen, damit die anderen Dateien diese Datenerweiterungen verwenden können.

Die Discard-Funktion entfernt alle Datenerweiterungen der SSD. Wenn Sie Ihre SSD verkaufen möchten, kann diese Funktion nützlich sein.

xiii) Effizientes inkrementelles Backup: Btrfs unterstützt inkrementelles Backup. Wenn Sie ein btrfs-Dateisystem zum ersten Mal sichern, wird ein Snapshot des aktuellen Dateisystems erstellt. Anschließend werden alle nachfolgenden Backups mit dem ersten Snapshot verglichen und nur die Änderungen werden auf der Festplatte gespeichert. Alle nachfolgenden Backups beanspruchen also weniger Speicherplatz und Backups sind schneller.

xiv) Hintergrund-Peeling: Es ist ein Btrfs-Dateisystemprozess, der verwendet wird, um Fehler in den Dateien zu finden und zu beheben, die redundante Kopien (mehrere Kopien) im Btrfs-Dateisystem gespeichert haben.

xv) Online-Dateisystem-Defragmentierung: Ich habe zuvor erklärt, wie das Btrfs Copy-on-Write-Dateisystem funktioniert. Große Dateien werden in mehreren Extents des Btrfs-Dateisystems gespeichert. Beim Ändern großer Dateien werden die zu ändernden Extents in verschiedene freie Extents des Dateisystems kopiert und dort modifiziert. Daher werden die unveränderten Datenbereiche auch für den Fall aufbewahrt, dass dies für die Wiederherstellung des Dateisystems erforderlich ist. Dies führt zu einer Fragmentierung (die Datenbereiche einer großen Datei sind nicht kontinuierlich und werden über das gesamte Speichergerät verstreut) im Dateisystem, wenn große Dateien geändert werden. Zu viel Fragmentierung wirkt sich negativ auf das Dateisystem aus (verlangsamt den Lese-/Schreibvorgang des Dateisystems).

Um dieses Problem zu lösen, unterstützt das btrfs-Dateisystem die Online-Dateisystem-Defragmentierung. Bei der Online-Defragmentierung müssen Sie das Dateisystem nicht aushängen, um das Dateisystem zu defragmentieren. Sie können das Dateisystem am Laufen halten und trotzdem defragmentieren. Bei der Defragmentierung werden Dateierweiterungen im Dateisystem verschoben, um die Erweiterungen derselben großen Datei so kontinuierlich wie möglich zu halten. Defragmentierung verbessert die Leistung des Dateisystems.

xvi) Offline-Dateisystemprüfung: Das Btrfs-Dateisystem verfügt über viele integrierte Tools, mit denen Sie nach Dateisystemfehlern suchen und diese beheben können. Sie können auch ein defektes Btrfs-Dateisystem (das nicht gemountet werden kann) mit diesen Tools reparieren.

xvii) In-Place-Konvertierung bestehender Ext2/3/4- und ReiserFS-Dateisysteme: Das Btrfs-Dateisystem verfügt über ein eingebautes Dienstprogramm btrfs-convert, mit dem Sie ein vorhandenes Ext2/3/4- und ReiserFS-Dateisystem in ein Btrfs-Dateisystem konvertieren können.

Das Btrfs-Dateisystem-Konvertierungsprogramm liest die Metadaten eines vorhandenen Ext2/3/4- (oder ReiserFS-)Dateisystems, erstellt Btrfs-Metadaten und speichert sie im Dateisystem. Das Dateisystem behält sowohl die Btrfs- als auch die Ext2/3/4 (oder ReiserFS)-Metadaten bei. Das Btrfs-Dateisystem verweist auf die gleichen Dateiblöcke, die von den Ext2/3/4 (oder ReiserFS)-Dateisystemdateien verwendet werden. Das vorhandene Dateisystem und die Datenblöcke bleiben unberührt, da Btrfs ein Copy-on-Write (CoW) Dateisystem ist. Wenn eine Datei geändert wird, kopiert das Btrfs-Dateisystem die ursprünglichen Datenblöcke in neue freie Extents und modifiziert sie dort.

xviii) Saatgeräte: Das Btrfs-Dateisystem unterstützt Seed-Geräte. Sie können ein schreibgeschütztes Dateisystem erstellen und es als Vorlage (Seed-Gerät) verwenden, um andere Btrfs-Dateisysteme zu erstellen. Dies hat den Vorteil, dass nur die geänderten Daten in das neue Dateisystem geschrieben werden. Die Originaldaten (auf den Seed-Geräten) bleiben unverändert. Diese Funktion kann verwendet werden, um viel Speicherplatz und Datenredundanz zu sparen.

xix) Subvolume-Änderungen senden/empfangen: Das btrfs-Dateisystem kann Subvolume-Änderungen senden/empfangen. Das Btrfs-Dateisystem kann die inkrementellen Änderungen eines Subvolumes an ein anderes Btrfs-Dateisystem senden (kann sich auch auf einem anderen Computer befinden), das die Subvolume-Änderungen empfangen kann. Diese Funktion wird verwendet, um inkrementelle Backups des Btrfs-Dateisystems entweder lokal oder remote zu erstellen. Diese Methode ist schneller und effizienter als rsync.

xx) Batch-/Out-of-Band-Deduplizierung: Das Btrfs-Dateisystem unterstützt Batch- oder Out-of-Band-Deduplizierung. Die Duplizierung erfolgt, nachdem eine Datei in das Dateisystem geschrieben wurde. Das Btrfs-Dateisystem scannt aktiv das gesamte Dateisystem auf identische Extents und behält nur eine Kopie jedes Extents (entfernt redundante/duplizierte Extents). Für diese Aufgabe wird das gleiche Copy-on-Write (CoW)-Prinzip verwendet. Deduplizierung spart viel Speicherplatz.

xxi) Swapfile-Unterstützung: Wenn Sie Linux Kernel 5 verwenden.0 oder neuer können Sie Auslagerungsdateien im Btrfs-Dateisystem erstellen create.

Es gibt einige Einschränkungen von Swapfile in einem Btrfs-Dateisystem:

- Die Auslagerungsdatei muss als NoCoW zugewiesen werden (nicht copy-on-write)

- In der Auslagerungsdatei darf keine Komprimierung aktiviert sein.

Stabilität des Btrfs-Dateisystems:

Das Btrfs-Dateisystem wird vom Btrfs-Team aktiv weiterentwickelt. Die meisten Funktionen des Dateisystems sind zum Zeitpunkt dieses Schreibens stabil. Einige der erweiterten Funktionen sind für eine Produktionsumgebung noch nicht stabil genug. Das Btrfs-Team arbeitet hart daran, diese Stabilitätsprobleme zu lösen.

Wenn Sie das Btrfs-Dateisystem auf Ihrem Produktionsserver verwenden möchten, überprüfen Sie die offizielle Status - btrfs-Wiki-Seite, um herauszufinden, ob die von Ihnen benötigten Dateisystemfunktionen stabil genug für Sie sind oder nicht or. Stellen Sie außerdem sicher, dass Sie vor der endgültigen Bereitstellung Ihres Btrfs-Dateisystems einige Tests durchführen, und denken Sie daran, Sicherungskopien Ihrer wichtigen Daten zu erstellen. Das Aufbewahren von Backups ist für Produktionsumgebungen immer wichtig.

Zukünftiger Ersatz des Ext4-Dateisystems:

Das Btrfs-Dateisystem wird schnell entwickelt. Das Btrfs-Entwicklungsteam kümmert sich auch um die Stabilität des Dateisystems. Also versuchen sie ihr Bestes, um es so stabil wie möglich zu machen, während sie das btrfs-Dateisystem entwickeln. Sobald das btrfs-Dateisystem vollständig entwickelt ist und alle Funktionen stabil genug sind, kann es das Ext4-Dateisystem ersetzen.

Verweise:

[1] btrfs-Wiki - https://btrfs.Wiki.Kernel.Organisation/Index.php/Main_Page
[2] BTRFS - Die Kernelbaum-Dokumentation - https://www.Kernel.org/doc/html/latest/filesystems/btrfs.html
[3] BTRFS - Glossar - https://btrfs.Wiki.Kernel.Organisation/Index.php/Glossar
[4] Funktionen des „Btrfs“-Dateisystems - https://www.thegeekdiary.com/features-of-the-btrfs-filesystem/
[5] Vergleich von Dateisystemen - https://de.Wikipedia.org/wiki/Comparison_of_file_systems
[6] Btrfs-Design - Btrfs-Wiki - https://btrfs.Wiki.Kernel.Organisation/Index.php/Btrfs_design
[7] vielleicht könnte das Ausgehen der Inodes „ernsthafter“ genommen werden? - https://lwn.netto/Artikel/724522/
[8] Schreibgeschützte Btrfs-Snapshots beschreibbar machen - https://markandruth.co.uk/2016/12/29/making-a-btrfs-read-only-snapshot-writable
[9] Daten-Striping - https://de.Wikipedia.org/wiki/Data_striping
[10] FAQ - btrfs-Wiki - https://btrfs.Wiki.Kernel.Organisation/Index.php/FAQ
[11] Standard-RAID-Level - https://de.Wikipedia.org/wiki/Standard_RAID_levels
[12] Trimmen (Computer) - https://de.Wikipedia.org/wiki/Trim_(Computing)
[13] Solid-State-Laufwerk – ArchWiki – https://wiki.archlinux.Organisation/Index.php/Solid_state_drive#TRIM
[14] Btrfsck - btrfs-Wiki - https://btrfs.Wiki.Kernel.Organisation/Index.php/Btrfsck
[15] Konvertierung von Ext3/4 und ReiserFS - btrfs Wiki - https://btrfs.Wiki.Kernel.Organisation/Index.php/Conversion_from_Ext3
[16] Inkrementelles Backup – btrfs Wiki – https://btrfs.Wiki.Kernel.Organisation/Index.php/Incremental_Backup
[17] Deduplizierung - btrfs Wiki - https://btrfs.Wiki.Kernel.Organisation/Index.PHP/Deduplizierung
[18] Status - btrfs Wiki - https://btrfs.Wiki.Kernel.Organisation/Index.php/Status

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...
Mittlere Maustaste funktioniert nicht unter Windows 10
Das mittlere Maustaste hilft Ihnen beim Scrollen durch lange Webseiten und Bildschirme mit vielen Daten. Wenn das aufhört, werden Sie am Ende die Tast...
So ändern Sie die linke und rechte Maustaste auf einem Windows 10-PC
Es ist ganz normal, dass alle Computer-Maus-Geräte ergonomisch für Rechtshänder gestaltet sind. Es gibt aber auch Mausgeräte, die speziell für Linkshä...