Wie man Btrfs-Subvolumes verwendet: Ein vollständiger und praktischer Leitfaden

Letzte Aktualisierung: 17/12/2025
Autor: Holger
  • Btrfs kombiniert Dateisystem, RAID und Volumenmanager mit COW, Snapshots, Komprimierung und nativen Prüfsummen.
  • Subvolumes sind logische Systeme innerhalb von Btrfs, die es ermöglichen, /, /home, /var zu trennen und Snapshots nach Zonen zu verwalten.
  • Die Unterstützung mehrerer Geräte ermöglicht es Ihnen, Festplatten hinzuzufügen/zu entfernen, RAID-Profile zu ändern und Daten online auszugleichen.
  • Tools wie Snapper oder Btrbk nutzen Btrfs-Snapshots, aber für echte Backups sind weiterhin externe Kopien erforderlich.

So überprüfen Sie den Zustand Ihrer Festplatte mit CrystalDiskInfo

Wenn Sie aus ext4 oder XFS und Sie schauen sich Btrfs an Verwunderung ist völlig normal: Es handelt sich nicht einfach um ein weiteres Dateisystem, sondern um eine Kombination aus Dateisystem, RAID und Volume-Manager. Wenn Sie Begriffe wie Subvolumes, Snapshots, Load Balancing oder Scrubbing sehen, wirkt alles kompliziert, aber tatsächlich sind es perfekt ineinandergreifende Komponenten.

In diesem Artikel werden wir sehen Wie man Btrfs-Subvolumes verwendet und welchen Zweck sie erfüllen Bei typischen Installationen (z. B. Arch, Debian, openSUSE oder NAS mit Synology/QNAP) sehen Sie, wie diese Funktionen mit Snapshots, RAID und Komprimierung zusammenhängen und was dies für den Speicherplatz bedeutet. Sie sehen auch Beispiele für Befehle Anwendungsbeispiele aus der Praxis für die Erstellung von Dateisystemen, Subvolumes, Snapshots und die Verwaltung mehrerer Festplatten sowie einige typische Probleme (das bekannte ENOSPC mit "freiem" Speicherplatz).

Was ist Btrfs und wodurch unterscheidet es sich?

Btrfs ist ein Dateisystem der nächsten Generation. für GNU/Linux, entwickelt, um von einem einfachen SSD Es unterstützt Multi-Disk-Pools mit Redundanz, Snapshots und Komprimierung. Seit Version 2.6.29 ist es in den Kernel integriert, und obwohl die Entwicklung noch aktiv ist, ist das Festplattenformat stabilisiert, sodass ein heute erstelltes Btrfs-System auch von zukünftigen Kerneln lesbar bleibt.

Im Gegensatz zu traditionelleren Systemen wie beispielsweise ext4 oder XFS, Btrfs integriert Funktionen Diese Funktionen waren zuvor auf das Dateisystem, Software-RAID (mdadm) und den Logical Volume Manager (LVM) aufgeteilt. Mit einem einzigen Stack lassen sich nun mehrere Geräte, RAID-Profile, Snapshots, Subvolumes, Integritätsprüfungen und vieles mehr verwalten.

Wichtige Btrfs-Prinzipien: COW, Snapshots, RAID und Prüfsummen

Das Herzstück von Btrfs ist das Copy-on-Write (COW)-ModellWenn Sie Daten ändern, überschreibt das System diese nicht am selben Speicherort; stattdessen werden die neuen Blöcke an anderer Stelle gespeichert und die Verweise aktualisiert. Dies ermöglicht das nahezu sofortige Klonen von Dateien und Subvolumes sowie die Erstellung von Snapshots, die sowohl zeit- als auch speichereffizient sind.

Dieses Design beruht auf der Tatsache, dass jeder Daten- und Metadatenblock seine eigenen Informationen enthält. Prüfsumme (üblicherweise CRC32C)Beim Lesen eines Blocks prüft Btrfs die Prüfsumme. Stimmt diese nicht überein und existiert eine weitere Kopie (z. B. in RAID 1 oder RAID 10), liest es die intakte Kopie und behebt den Fehler direkt. Dies schützt vor unbemerkten Datenbeschädigungen, die ext4 allein nicht erkennen kann.

Darüber hinaus umfasst Btrfs als Standardausrüstung Unterstützung für mehrere Geräte Mit RAID0-, RAID1-, RAID10-, RAID5- und RAID6-Profilen, die separat für Daten (-d) und Metadaten (-m) konfiguriert werden können. Intern handelt es sich nicht um ein klassisches Block-RAID wie mdadm, sondern um Replikation und Striping auf Chunk-Ebene, die vom Dateisystem selbst verwaltet werden.

Schließlich kann Btrfs angewendet werden transparente Komprimierung in Echtzeit (zlib, lzo, zstd): Daten werden vor dem Schreiben komprimiert und beim Lesen dekomprimiert, völlig transparent für Anwendungen. Dadurch wird der Speicherplatzbedarf reduziert und in vielen Fällen sogar die Lesegeschwindigkeit auf langsamen oder mechanischen Festplatten erhöht.

Erstellen eines Btrfs-Dateisystems

Um mit Untervolumes zu experimentieren, benötigen Sie zunächst Folgendes: ein Btrfs-Dateisystem auf einem GerätDer grundlegende Erstellungsprozess ist dem jeder anderen MKFS-Datei sehr ähnlich:

mkfs.btrfs /dev/sdb

Dieser Befehl initialisiert /dev/sdb mit BtrfsKein RAID oder Ähnliches erforderlich. Sie können eine ganze Festplatte oder eine Partition verwenden. Anschließend binden Sie diese an einem Mountpunkt ein, zum Beispiel:

mount /dev/sdb /mnt/btrfs

Wenn Sie von Anfang an ein MehrgerätesystemSie fügen dem Erstellungsbefehl einfach mehrere Geräte hinzu:

mkfs.btrfs /dev/sdc /dev/sdd

In diesem Fall erstellt Btrfs ein logischer Pool mit aggregierter Kapazität Die Daten der Geräte werden standardmäßig in einem einzigen RAID-Verzeichnis gespeichert, die Metadaten werden als RAID1 dupliziert, sofern nichts anderes angegeben ist. Beim Mounten müssen Sie nur eines der Geräte angeben, z. B. /dev/sdc.

Native RAID-Profile und dynamische Poolverwaltung

Beim Erstellen des Dateisystems können Sie bereits die folgenden Angaben machen: Redundanzprofil für Daten und Metadaten Mit den Optionen -dy -m: Werte wie raid0, raid1, raid10, raid5, raid6 oder single. Ein typisches Beispiel für RAID1 in Btrfs wäre:

mkfs.btrfs -d raid1 -m raid1 /dev/sdc /dev/sdd

Im Gegensatz zu einem klassischen RAID1 ist in Btrfs Es gibt keine identischen Spiegelbilder Block für Block.Garantiert wird, dass jeder Daten- oder Metadatenblock mindestens zwei Kopien auf verschiedenen Geräten besitzt, es gibt jedoch keine „Zwillings“-Festplatten im eigentlichen Sinne, und auch unterschiedliche Festplattengrößen sind zulässig.

  Beheben Sie den Fehler, dass das iPhone nicht aufgeladen wird

Sobald das System zusammengebaut ist, können Sie Festplatten im laufenden Betrieb zum Pool hinzufügen und daraus entfernen. mit Befehlen wie:

btrfs device add /dev/sdb /mnt/btrfs
btrfs device delete /dev/sdc /mnt/btrfs

Nach dem Hinzufügen von Geräten ist es in der Regel sinnvoll, einen Testlauf zu starten. Datenausgleich um bestehende Datenblöcke auf alle Festplatten neu zu verteilen:

btrfs filesystem balance /mnt/btrfs

Dieser Ausgleichsvorgang verschiebt Blöcke gemäß dem gewählten RAID-Profil, sodass Alle Festplatten arbeiten zusammen und der Speicherplatz wird gleichmäßiger genutzt.Es handelt sich um einen Online-Vorgang: Das Dateisystem bleibt während der Ausführung zugänglich.

Wie man von einem Einzel- auf ein RAID1-Verbundsystem umstellt, ohne es neu zu installieren

Einer der großen Vorteile von Btrfs ist, dass man ein bereits verwendetes System in ein anderes RAID-Profil umwandeln Ohne Aushängen oder Neuinstallieren. Stellen Sie sich vor, Ihr Root-Verzeichnis befindet sich in Btrfs auf einer einzelnen Festplatte /dev/sda1 und Sie möchten auf RAID1 umstellen, indem Sie /dev/sdb1 hinzufügen.

Die Schritte wären, das neue Gerät hinzuzufügen und einen Lastausgleich mit Profilkonvertierung durchzuführen:

btrfs device add /dev/sdb1 /
btrfs balance start -dconvert=raid1 -mconvert=raid1 /

Während dieses Prozesses wird Btrfs die Datenblöcke so verschieben, dass alle Daten und Metadaten dupliziert werden auf beiden Festplatten. Nach Abschluss der Konfiguration zeigt „btrfs filesystem show /“ zwei Geräte mit ähnlicher Nutzung an, und „btrfs filesystem df /“ gibt die RAID1-Profile für Daten, Metadaten und System wieder.

RAID-Verschlechterung und -Reparatur mit Btrfs

Wenn in einer Konfiguration mit Natives RAID1 – eine der Festplatten fällt ausDas System wechselt in den eingeschränkten Modus. Um diesen Modus in Btrfs einzurichten, benötigen Sie die folgende Option:

mount -o degraded /dev/sdb /mnt/btrfs

Solange sich das System in diesem Zustand befindet, wird Btrfs weiterhin Daten von den intakten Kopien bereitstellen, aber Es wird keine vollständige Redundanz geben.Die korrekte Vorgehensweise besteht darin, eine neue Festplatte hinzuzufügen, das "fehlende" Gerät aus dem Pool zu entfernen und einen Lastausgleich durchzuführen, um die Blöcke neu zu replizieren.

Bei gelegentlichen Datenbeschädigungen oder problematischen Datenträgern haben Sie außerdem die Möglichkeit, Starten Sie einen Scrub, das alle Blöcke scannt, Prüfsummen überprüft und, wenn möglich, Reparaturen anhand der intakten Kopie durchführt:

btrfs scrub start /mnt/btrfs
btrfs scrub status /mnt/btrfs

Dieser Scrub-Prozess läuft im Hintergrund, während das System installiert ist, daher ist es ratsam Planen Sie es für die Nebenzeiten ein.insbesondere auf Servern oder NAS-Systemen.

Transparente Komprimierung: zlib, lzo, zstd

Zusammenbau des Systems mit der Option komprimieren oder komprimieren= Sie aktivieren die automatische Komprimierung der ab diesem Zeitpunkt geschriebenen Daten. Zum Beispiel:

mount -o compress=zstd /dev/sdb /mnt/btrfs

Das System speichert die komprimierten Blöcke auf der Festplatte, aber wenn Sie einen ls- oder einen stat-Befehl ausführen, sehen Sie trotzdem die unkomprimierte logische GrößeDer Gewinn ist bei Tools wie df (geringerer Speicherplatzbedarf) oder bei „btrfs filesystem df“ oder bei der Verwendung von Dienstprogrammen wie compsize spürbar.

Die verfügbaren Algorithmen bieten ein anderes Gleichgewicht zwischen Kompressionsverhältnis und CPU-Verbrauch:

  • zlib: Komprimiert stark, ist aber langsamer; nützlich für sehr statische Daten.
  • lzoSehr schnell, aber die Komprimierung ist geringer; eine gute Option für Systeme mit viel Schreibaufkommen.
  • nstd: eine sehr interessante Balance mit mehreren konfigurierbaren Stufen.

Sie können auch die Komprimierungsstufe In den Mount-Einstellungen priorisiert beispielsweise `zstd:1` die Geschwindigkeit, während `zstd:15` maximale Leistung auf Kosten der CPU-Auslastung priorisiert. Diese Parameter spiegeln sich in `/proc/mounts` und in den `dmesg`-Meldungen wider, wenn das System gemountet wird.

Copy-on-Write auf Dateien: Sofortige Klone mit Reflinks

Der COW-Mechanismus auf Dateiebene wird beispielsweise durch die –reflink=always cp optionBeim Kopieren einer großen Datei in Btrfs mittels Reflink werden die Daten nicht auf der Festplatte dupliziert; es werden lediglich zusätzliche Verweise auf dieselben Blöcke erstellt.

cp --reflink=always imagen.iso copia1.iso

Die Kopie erscheint sofort und belegt kein zusätzlicher Platz am AnfangNur wenn eine der Dateien geändert wird, werden die betroffenen Blöcke physisch kopiert (echtes Copy-on-Write). Dies ist für Vorlagen äußerst nützlich. virtuelle Maschinen, Basisbilder usw.

  Vollständige Einführung in Rust: Ein praktischer Leitfaden für Anfänger mit Beispielen

Sie folgen derselben Logik. Subvolume-SnapshotsHierbei handelt es sich lediglich um COW-Klone eines gesamten Subvolumes. Bei ihrer Erstellung belegen sie kaum Metadaten; die tatsächliche Nutzung erfolgt später, je nachdem, wie stark sich die Inhalte des Originals und des Snapshots unterscheiden.

Btrfs-Subvolumes: Was sie sind und wofür sie verwendet werden

Ein Subvolume in Btrfs ist in der Praxis ein „Mini-Dateisystem“ innerhalb des HauptsystemsDas vollständige Btrfs-System verfügt immer über mindestens ein Subvolume (die oberste Ebene), und darauf können weitere Subvolumes erstellt werden, die von außen wie einfache Verzeichnisse aussehen.

Das Schöne daran ist, dass jedes Teilvolumen sein kann sich selbstständig zusammenbaueneigene Snapshots, Kontingente (sofern das Kontingentsystem aktiviert ist) und Richtlinien zu haben SicherungskopieAll dies durch die gemeinsame Nutzung desselben Pools Lagerung und die gleiche RAID-Konfiguration wie das übergeordnete Volume.

Um mehrere Subvolumes auf einem bereits in /mnt/btrfs gemounteten Btrfs-Volume zu erstellen, würden Sie etwa Folgendes tun:

btrfs subvolume create /mnt/btrfs/subvolumen1
btrfs subvolume create /mnt/btrfs/subvolumen2
btrfs subvolume create /mnt/btrfs/subvolumen3

Diese Subvolumes werden als Verzeichnisse in /mnt/btrfs angezeigt, aber wenn Sie sie mit btrfs auflisten, sehen Sie ihre IDs und interne Routen:

btrfs subvolume list /mnt/btrfs

Sobald Sie die ID haben (z. B. 256 für Subvolume1), können Sie Stelle nur dieses Teilvolumen zusammen auf einer anderen Route:

mount -o subvolid=256 /dev/sdb /mnt/subvol1

Auf diese Weise kann auf die Daten in diesem Teilvolumen zugegriffen werden als /mnt/btrfs/subvolume1 und /mnt/subvol1 Gleichzeitig, aber es ist derselbe Inhalt. Dies ist sehr nützlich, um /, /home, /var oder bestimmte Datensätze zu trennen, ohne auf herkömmliche Partitionen zurückgreifen zu müssen.

Subvolume-Design: Praktische Beispiele (Arch, Debian, NAS)

Eine sehr typische Struktur Auf einem Desktop-Rechner kann es so aussehen:

  • @ für das Stammverzeichnis (/) ohne /home oder /var/lib/docker.
  • @Zuhause zu /home mit Ihren persönlichen Daten.
  • @var oder bestimmte Subvolumes wie @var-log, @var-cache usw.
  • @Schnappschüsse um nach Datum geordnete Schnappschüsse zu speichern.

Dies ermöglicht ein Werkzeug wie Snapper für System-SnapshotsTimeshift oder btrbk können Snapshots nur des Systems (Subvolume @) erstellen, um Aktualisierungen rückgängig zu machen, während Benutzerdokumente (in @home) mit einer anderen Logik geschützt oder synchronisiert werden.

Auf einem NAS von Synology oder QNAP wird im Wesentlichen Folgendes erstellt: Freigegebene Ordner auf Btrfs-SubvolumesDie Snapshot-Replikation kann also Snapshots dieser Ordner erstellen, sie klonen oder auf ein anderes NAS replizieren. Das gleiche Prinzip, nur in einer grafischen Benutzeroberfläche.

Subvolume-Snapshots: Rollback und Kopien in Sekundenschnelle

Die Snapshots in Btrfs sind einfach Teilvolumes, die als Snapshot eines anderen erstellt wurdenUm einen Snapshot von /mnt/btrfs/subvolume1 in einem anderen Subvolume zu erstellen, verwenden Sie snapshot_sub1:

btrfs subvolume snapshot \
  /mnt/btrfs/subvolumen1 \
  /mnt/btrfs/subvolumen1_snapshot

Wenn Sie anschließend `btrfs subvolume list` ausführen, sehen Sie eine neue ID und einen neuen Pfad für diesen Snapshot. Ab diesem Zeitpunkt gilt Folgendes: Sie sind beide logisch unabhängigÄnderungen an dem einen System wirken sich nicht auf das andere aus, obwohl sie intern Blöcke gemeinsam nutzen, bis sie geändert werden.

Dies wird für beides verwendet schnelle Datensicherungen (z. B. vor einem System-Upgrade) wie etwa für Labore, Testumgebungen, Entwicklungsumgebungen usw. Die Wiederherstellung eines Snapshots reduziert sich in der Regel darauf, den Snapshot einzubinden und ihn als neues Standard-Subvolume zu verwenden oder die Daten zurückzukopieren.

Verwendung von Btrfs auf mehreren Festplatten mit RAID

Mit Btrfs erfolgt die Verwaltung mehrerer Datenträger direkt über das Dateisystem. Beim Erstellen eines Volumes können Sie beispielsweise separate Profile für Daten und Metadaten definieren. Daten in RAID 5 und Metadaten in RAID 1 Wenn Sie drei oder mehr Geräte besitzen:

mkfs.btrfs -d raid5 -m raid1 /dev/sdb /dev/sdc /dev/sdd

Diese Art von Profil bietet Stripping und Parität für Daten (Bessere Lesegeschwindigkeit und höhere Fehlertoleranz) sowie starke Redundanz für Metadaten, allerdings auf Kosten eines etwas höheren Speicherplatzbedarfs. RAID 5/6 in Btrfs wies jedoch in der Vergangenheit erhebliche Fehler auf; in kritischen Umgebungen bevorzugen viele Administratoren daher weiterhin RAID 1/10.

Wenn Sie ursprünglich einen RAID1-Pool erstellt haben und später den Speicherplatz besser nutzen möchten, können Sie jederzeit Profile im laufenden Betrieb konvertieren mit Ausgewogenheit:

btrfs balance start -dconvert=raid5 -mconvert=raid1 /srv

Das Hinzufügen oder Entfernen von Geräten erfolgt analog dazu. btrfs-Gerät hinzufügen/entfernen und ein anschließender Ausgleich, um Datenblöcke neu zu verteilen. Der Befehl „btrfs filesystem show“ liefert eine Übersicht über Status, Größe und Auslastung jeder Festplatte im Pool.

  Automatisieren Sie die Windows-Verwaltung mit Desired State Configuration (DSC)

Raumverwaltung: Warum du und df in Btrfs „liegen“

Einer der verwirrendsten Aspekte von Btrfs ist, dass Die klassischen df- und du-Werkzeuge bilden die Realität nicht genau ab.Die Kombination aus RAID auf Chunk-Ebene, COW, Snapshots und Komprimierung führt dazu, dass die Annahme „1 MiB geschrieben = 1 MiB belegt“ nicht mehr zutrifft.

Bei Btrfs ist viel Platz reserviert. „Scheiben“ (Stücke)Typischerweise werden 1 GiB für Daten und 256 MiB für Metadaten verwendet. Jedem Datenblock wird ein entsprechendes Profil zugewiesen: Einzeldaten, RAID 1, RAID 10 usw. Innerhalb eines Datenblocks entspricht 1 geschriebene MiB tatsächlich 1 belegten MiB. Die Art und Weise, wie mehrere Datenblöcke und Blockkopien kombiniert werden, erschwert diese einfache Berechnung jedoch.

Darüber hinaus ist bei COW und Snapshots das Löschen einer Datei möglich. Es garantiert nicht, dass seine Blöcke freigegeben werden.Werden diese Blöcke mit einem anderen Snapshot oder Reflink-Klon geteilt, belegen sie weiterhin Speicherplatz, bis kein Verweis mehr auf sie existiert. Daher das Gefühl: „Ich lösche Dinge, und der Speicherplatz ist weg.“

Aus diesem Grund bietet Btrfs spezifische Befehle wie zum Beispiel „btrfs-Dateisystem df „welche eine Aufschlüsselung der Daten-, Metadaten- und Systemnutzung nach Profil und „btrfs-Dateisystem anzeigen“ anzeigen “, das anzeigt, welcher Teil jeder Disc reserviert und in seiner Rohform verwendet wird.

Bewährte Vorgehensweisen für Subvolumes und Snapshots im täglichen Gebrauch

Wenn Sie beispielsweise reiten, Bogen Linux mit Btrfs auf einer einzelnen SSDEine sehr empfehlenswerte Strategie ist:

  • Erstelle ein eindeutiges Btrfs-Verzeichnis auf der Root-Partition.
  • Definiere separate Subvolumes für / (System), /home, /var/log, vielleicht /var/lib/libvirt oder /var/lib/docker.
  • Mounten Sie jedes Subvolume mit den entsprechenden Komprimierungsoptionen (zstd oder lzo) und führen Sie bei Bedarf eine automatische Defragmentierung für Ladungen mit vielen kleinen Dateien durch.
  • Verwenden Sie Snapper, Timeshift oder btrbk, um Automatisierte Snapshots des System-Subvolumes Vor und nach den Aktualisierungen.

Auf einem physischen Rechner mit mehreren SSDs können Sie Folgendes auswählen: ein einzelnes Btrfs-Multi-Gerät Mit RAID 1/10 und logischen Subvolumes oder mit mehreren separaten Btrfs-Volumes. Bei Subvolumes ändert sich nicht viel: Sie bleiben logische Einheiten innerhalb des Btrfs-Volumes, in dem sie sich befinden; wichtig ist, von Anfang an festzulegen, welche Daten Sie unabhängig voneinander sichern und wiederherstellen möchten.

Was vollständige Backups betrifft, sollten Sie Folgendes beachten: Snapshots sind keine externen Backups.Snapper oder Timeshift werden üblicherweise für lokale Snapshots (hauptsächlich des Systems) verwendet. Für echte Backups von allem (einschließlich /home) empfiehlt es sich, auf Tools wie borg, restic, rsync, remote btrbk oder die Snapshot-/Replikationslösungen des NAS zurückzugreifen.

Grundlegende Administration und nützliche Befehle von Btrfs

Die Btrfs-Befehlszeilenschnittstelle mag etwas ausführlich erscheinen, aber sie ermöglicht Folgendes: Unterbefehle mit eindeutigen Präfixen abkürzenZum Beispiel kann man anstelle von „btrfs filesystem defragment /“ „btrfs fi de /“ verwenden, sofern keine Mehrdeutigkeit besteht.

Einige wichtige Befehle Folgende werden Sie häufig verwenden:

  • mkfs.btrfs: Dateisysteme mit RAID-Optionen und Bezeichnungen erstellen.
  • btrfs filesystem show/dfGeräte, Nutzung und Profile anzeigen.
  • btrfs-Gerät hinzufügen/löschen: Hinzufügen oder Entfernen von Festplatten aus dem Pool.
  • btrfs Balance Start: Daten neu ausbalancieren und RAID-Profile konvertieren.
  • btrfs scrub start/status: Blöcke mithilfe von Prüfsummen überprüfen und reparieren.
  • btrfs-Subvolume erstellen/auflisten/löschen/Snapshot: Verwaltung von Subvolumes und Snapshots.
  • btrfs-Prüfung: Überprüfen Sie das Dateisystem offline (mit Vorsicht).

Es ist auch wichtig, sich daran zu erinnern Das traditionelle fsck sollte nicht verwendet werden. zu einem Btrfs in jedem StartenIn der fstab muss das letzte Feld der Btrfs-Einträge 0 sein, um fehlerhafte automatische Prüfungen zu vermeiden.

Mit diesen Konzepten und Befehlen hört Btrfs auf, diese „seltsame Blackbox“ zu sein, und wird zu einem sehr flexibles Werkzeug Damit können Sie Ihr System logisch mit Subvolumes organisieren, wirklich nützliche Snapshots erstellen und all dies mit Redundanz und Komprimierung kombinieren, sowohl auf einem einfachen Laptop als auch auf einem Pool mehrerer Festplatten.

btrfs
Verwandte Artikel:
Btrfs-Snapshots mit Snapper: Stellen Sie Ihr System und Ihre Daten unter Linux wieder her