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 12:40] – [Dateisystem Erstellung] fix typo 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 34: | Zeile 34: | ||
* [[https:// | * [[https:// | ||
- | * [[https:// | + | * [[https:// |
==== Subvolumen Erstellung ==== | ==== Subvolumen Erstellung ==== | ||
Zeile 48: | Zeile 48: | ||
Für spätere forensische Untersuchungen der Logs, könnte man das Verzeichnis ''/ | Für spätere forensische Untersuchungen der Logs, könnte man das Verzeichnis ''/ | ||
- | < | + | < |
Die Auslagerung des ''/ | Die Auslagerung des ''/ | ||
</ | </ | ||
- | ==== Subvolumes | + | ==== Subvolumen |
Es folgt ein Beispiel Mount Befehl, um ein angelegtes Subvolumen direkt zu mounten. Die wichtige Mount Option ist hierbei **'' | Es folgt ein Beispiel Mount Befehl, um ein angelegtes Subvolumen direkt zu mounten. Die wichtige Mount Option ist hierbei **'' | ||
Zeile 70: | Zeile 70: | ||
==== Snapshots ==== | ==== Snapshots ==== | ||
- | 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 Snapshot wie eine Schnelle | + | 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 |
- | < | + | < |
**Hinweis: | **Hinweis: | ||
</ | </ | ||
Zeile 81: | Zeile 81: | ||
Ein Snapshot wird so angelegt: | Ein Snapshot wird so angelegt: | ||
- | * [[am> | + | * [[am> |
<code bash> | <code bash> | ||
Zeile 93: | Zeile 93: | ||
=== Snapshot Automation === | === Snapshot Automation === | ||
- | Das Anlegen von eines Snapshots lässt sich mithilfe | + | Das Anlegen von eines Snapshots lässt sich mithilfe |
* [[https:// | * [[https:// | ||
Zeile 118: | Zeile 118: | ||
===== Swapdatei ===== | ===== Swapdatei ===== | ||
- | 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 Subvolume | + | * <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 | + | * <wrap important> |
- | * Soll die Swapdatei z.B. für den Ruhezustand verwendet werden, so lässt sich das offset | + | * 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 |
+ | * <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.1736685616.txt.gz · Zuletzt geändert: 2025/01/12 12:40 von gahsul