tutorials:dateisysteme:btrfs:btrfs
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
tutorials:dateisysteme:btrfs:btrfs [2025/01/12 13:26] – [Snapshots] yabsnap Link aufs AUR geändert gahsul | tutorials:dateisysteme:btrfs:btrfs [2025/02/25 18:41] (aktuell) – [Siehe auch] So verwendest du BTRFS in der PRAXIS! gahsul | ||
---|---|---|---|
Zeile 9: | Zeile 9: | ||
===== Dateisystem Erstellung ===== | ===== Dateisystem Erstellung ===== | ||
- | Ein BTRFS Dateisystem wird mit [[am> | + | Ein BTRFS Dateisystem wird mit [[am> |
* [[am> | * [[am> | ||
- | * [[am> | + | * [[am> |
- | * [[am> | + | * [[am> |
==== Beispielbefehl ==== | ==== Beispielbefehl ==== | ||
Zeile 26: | Zeile 26: | ||
Ein [[https:// | Ein [[https:// | ||
- | < | + | < |
**Hinweis: | **Hinweis: | ||
</ | </ | ||
Zeile 72: | Zeile 72: | ||
Ein Snapshot ist ebenfalls ein Subvolumen, jedoch mit einem vorgegebenen Anfangsinhalt des ursprünglichen Subvolumen. Ein Subvolumen hat immer die Inode-Nummer 256. Somit kann ein Snapshot wie eine schnelle Art von Referenzierung mit dem Inhalt eines anderen Subvolumen betrachtet werden, das sich nicht mit ändert. | Ein Snapshot ist ebenfalls ein Subvolumen, jedoch mit einem vorgegebenen Anfangsinhalt des ursprünglichen Subvolumen. Ein Subvolumen hat immer die Inode-Nummer 256. Somit kann ein Snapshot wie eine schnelle Art von Referenzierung mit dem Inhalt eines anderen Subvolumen betrachtet werden, das sich nicht mit ändert. | ||
- | < | + | < |
**Hinweis: | **Hinweis: | ||
</ | </ | ||
Zeile 120: | Zeile 120: | ||
Wenn eine Swapdatei verwendet werden soll, gibt es ein paar Dinge zu beachten: | Wenn eine Swapdatei verwendet werden soll, gibt es ein paar Dinge zu beachten: | ||
- | * Das Subvolumen, worin sich eine Swapdatei befindet, kann kein Snapshot für angelegt werden. Daher ist es ratsam die Swapdatei alleine für sich in ein eigenes Subvolumen z.B.'' | + | * <wrap important> |
+ | * <wrap important> | ||
* Für die Swapdatei muss COW deaktiviert sein. COW lässt sich anfänglich nur für leere Dateien abschalten. um den Vorgang zu vereinfachen haben die **btrfs tools** eine Hilfefunktion dafür, die diese schritte mit erledigt, siehe [[# | * Für die Swapdatei muss COW deaktiviert sein. COW lässt sich anfänglich nur für leere Dateien abschalten. um den Vorgang zu vereinfachen haben die **btrfs tools** eine Hilfefunktion dafür, die diese schritte mit erledigt, siehe [[# | ||
- | * Soll die Swapdatei z.B. für den Ruhezustand verwendet werden, so lässt sich das Offset der Swapdatei nicht mit '' | + | * <wrap important> |
==== Swapdatei anlegen ==== | ==== Swapdatei anlegen ==== | ||
Zeile 143: | Zeile 144: | ||
* [[https:// | * [[https:// | ||
+ | ===== NO_COW ===== | ||
+ | |||
+ | <WRAP info> | ||
+ | Verzeichnis und/oder Dateien, deren Inhalt sich schnell und häufig ändert, wirkt sich COW nachteilig auf die Geschwindigkeit des Dateisystems aus. | ||
+ | </ | ||
+ | |||
+ | <WRAP important> | ||
+ | Wichtig: für '' | ||
+ | </ | ||
+ | |||
+ | Beispiele hierfür sind: | ||
+ | |||
+ | * Virtuelle Maschinen Datei Images | ||
+ | * Datenbanken | ||
+ | * Logdateien | ||
+ | * Verzeichnisse, | ||
+ | |||
+ | Für solche Anwendungsfälle lässt sich '' | ||
+ | |||
+ | <WRAP important> | ||
+ | Soll hingegen das '' | ||
+ | </ | ||
+ | |||
+ | <WRAP info> | ||
+ | Ergänzender weise sei noch die '' | ||
+ | </ | ||
+ | |||
+ | ==== Beispiele ==== | ||
+ | |||
+ | === Setzen des C Flags === | ||
+ | |||
+ | <code bash> | ||
+ | chattr +C < | ||
+ | </ | ||
+ | |||
+ | === Nachträgliches setzten des C Flags auf eine Datei mit Inhalt === | ||
+ | |||
+ | <code bash> | ||
+ | $ mv / | ||
+ | $ mkdir / | ||
+ | $ chattr +C / | ||
+ | $ cp -a --reflink=never / | ||
+ | $ rm -rf / | ||
+ | </ | ||
+ | |||
+ | ==== Auswirkungen auf Snapshots ==== | ||
+ | |||
+ | Für einen Snapshot ist COW erfoderlich. Aus diesem Grund wird beim anlegen eines Snapshots bei der ersten Schreibopertation auf eine '' | ||
+ | |||
+ | ==== siehe auch ==== | ||
+ | |||
+ | * [[aw> | ||
+ | * [[aw> | ||
+ | |||
+ | ===== Ermittlung des Speicherplatzes ===== | ||
+ | |||
+ | ==== Einleitung ==== | ||
+ | |||
+ | BTRFS kann sehr Speicherplatz effizient Daten vorhalten, indem die COW Eigenart des Dateisystems genutzt wird. Statt eine Datei ein zweites Mal physikalisch zu kopieren, wird stattdessen auf diese referenziert. Das sorgt dafür, dass nur neue Änderungen tatsächlich gespeichert werden müssen, und der Kopiervorgang ist quasi sofort erledigt. Nach diesem Prinzip arbeiten auch die Snapshots. | ||
+ | |||
+ | Leider kommen übliche Tools wie z.B.'' | ||
+ | Somit kann es vorkommen, dass Daten im Subvolumen **@** gelöscht wurden, '' | ||
+ | |||
+ | ==== BTRFS eigene Speicherplatz Verwaltungstools ==== | ||
+ | |||
+ | Aus diesem Grund haben die '' | ||
+ | |||
+ | === btrfs filesystem df === | ||
+ | |||
+ | [[am> | ||
+ | |||
+ | * Wie groß die eigentlichen Dateiinhalte (**Data, total**) und wie viel sie eigentlich an Speicherplatz unter der Berücksichtigung von Referenzen und Komprimierung einnehmen (**used**). | ||
+ | * Dasselbe noch einmal für die Metadaten (**Metadata**) | ||
+ | * Und noch einmal für den Systembaum (**System**)) der **Data** und **Metadata** verbindet. | ||
+ | * Die GlobalReserve ist Speicherplatz den sich BTRFS für die 3 Baumstrukturen zum Verwalten reserviert, damit das Dateisystem steuerbar bleibt, falls der Speicherplatz zur Neige geht. | ||
+ | |||
+ | == Beispielausgabe == | ||
+ | |||
+ | <code bash> | ||
+ | $ btrfs filesystem df /path | ||
+ | Data, single: total=1.15TiB, | ||
+ | System, single: total=32.00MiB, | ||
+ | Metadata, single: total=12.00GiB, | ||
+ | GlobalReserve, | ||
+ | </ | ||
+ | |||
+ | === btrfs filesystem du === | ||
+ | |||
+ | **'' | ||
+ | |||
+ | == Beispielausgabe == | ||
+ | |||
+ | <code bash> | ||
+ | $ btrfs filesystem du -s / | ||
+ | | ||
+ | 21.55GiB | ||
+ | </ | ||
+ | |||
+ | === btrfs filesystem usage === | ||
+ | |||
+ | **'' | ||
+ | |||
+ | Damit Allokierter Speicherplatz wieder freigeben werden kann, so müssen alle Dateien/ | ||
+ | |||
+ | == Beispielausgabe == | ||
+ | |||
+ | <code bash> | ||
+ | # btrfs filesystem usage / | ||
+ | Overall: | ||
+ | Device size: | ||
+ | Device allocated: | ||
+ | Device unallocated: | ||
+ | Device missing: | ||
+ | Device slack: | ||
+ | Used: | ||
+ | Free (estimated): | ||
+ | Free (statfs, df): | ||
+ | Data ratio: | ||
+ | Metadata ratio: | ||
+ | Global reserve: | ||
+ | Multiple profiles: | ||
+ | |||
+ | Data, | ||
+ | / | ||
+ | |||
+ | Metadata, | ||
+ | / | ||
+ | |||
+ | System,DUP: Size: | ||
+ | / | ||
+ | |||
+ | Unallocated: | ||
+ | / | ||
+ | </ | ||
===== Siehe auch ===== | ===== Siehe auch ===== | ||
Zeile 152: | Zeile 287: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[ytv> | ||
+ | * [[ytv> | ||
+ |
tutorials/dateisysteme/btrfs/btrfs.1736688375.txt.gz · Zuletzt geändert: 2025/01/12 13:26 von gahsul