Befehle Btrfs-Dateisystem
Ausbaufähige Anleitung
Dieser Anleitung fehlen noch einige Informationen. Wenn Du etwas verbessern kannst, dann editiere den Beitrag, um die Qualität des Wikis noch weiter zu verbessern.
Anmerkung: Ausgehend von der Fortschreibung der btrfs-tools auf Version 2.x rc sind einige, weitergehende Befehle noch nicht enthalten.
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Hinweis:
Die nachfolgende Beschreibung basiert auf den btrfs-tools der Version 0.19 von 2010. Um den aktuellen Befehlsumfang zu btrfs
zu erhalten (Optionen, Ergänzungen), sollte man den jeweiligen Befehl im Terminal[1] ohne Option (entspricht der Option --help
) abfragen - die Manpages sind teilweise fehlerhaft bzw. Hinweise fehlen ganz!
- Btrfs Allgemein
- Befehle mit Optionen
- btrfs balance
- btrfs device add
- btrfs check
- btrfs device delete
- btrfs device scan
- btrfs filesystem defragment
- btrfs filesystem df
- btrfs filesystem resize
- btrfs filesystem show
- btrfs filesystem sync
- btrfs property list
- btrfs property get
- btrfs property set
- btrfs subvolume create
- btrfs subvolume delete
- btrfs subvolume find-new
- btrfs subvolume list
- btrfs subvolume set-default
- btrfs subvolume snapshot
- Direkte Befehle
- Kompakte Befehle
- Obsolete Befehle
- Links
Btrfs Allgemein¶
Sachstand btrfs-tools¶
Hinweis:
Das Paket btrfs-tools wurde in btrfs-progs umbenannt. Je nach Ubuntuversion muss das entsprechende Paket installiert werden.
Das Tool btrfs-convert ist in der Version 4.20.x des Paketes nicht enthalten, dies betrifft mindestens Ubunutu 19.04 Disco. Ab Paket 5.2.x ist btrfs-convert wieder enthalten (Ubuntu 19.10).
In diesem Artikel zum Btrfs-Dateisystem ist eine Übersicht der Befehle mit Kurzbeschreibungen aufgeführt. Manche Befehle sind mit anderer Syntax mehrfach vorhanden - welche man endgültig anwenden kann, wird die Entwicklung der Btrfs-Tools in Zukunft zeigen.
btrfs-tools
Befehl zum Installieren der Pakete:
sudo apt-get install btrfs-tools
Oder mit apturl installieren, Link: apt://btrfs-tools
bzw.
btrfs-progs
Befehl zum Installieren der Pakete:
sudo apt-get install btrfs-progs
Oder mit apturl installieren, Link: apt://btrfs-progs
Dieses Paket ist in der Regel schon nach der Installation vorhanden.
Befehle zum Btrfs-Dateisystem¶
Der Aufbau der Syntax unterscheidet sich zur Zeit in
Der nachfolgende Aufbau der Beschreibung wurde danach gegliedert - über das Inhaltsverzeichnis kann man sich vorab informieren und die jeweilige Beschreibung dieser Befehle auch direkt aufrufen.
Ausgelagerte Beschreibungen¶
Diese Teilbeschreibung behandelt die Befehle für das normale Arbeiten mit dem Btrfs-Dateisystem.
Für folgende Teilaspekte wurden, um die Übersicht zu behalten, separate Beschreibungen erstellt. Die Btrfs-Befehle enthalten dann nachfolgend nur eine kurze Beschreibung der Syntax und einen Link in das relevante WIKI.
Installieren auf Btrfs-Dateisystem]
Installation auf Btrfs-Dateisystem
Formatierung mit
mkfs.btrfs
Normales System
Btrfs-RAID-Verbund
Formatierung überprüfen mit
btrfs filesystem show
Zusatzmaßnahmen
Probleme und Abhilfe
Hinweis:
Die in den nachfolgenden Beispielen angeführten Laufwerke, Geräte bzw. Bezeichnungen sind dem jeweils eigenen System anzupassen.
Befehle mit Optionen¶
Die Eingabe in das Terminal[1] von:
btrfs
ohne weitere Ergänzung ergibt eine Liste der Befehle mit den Optionen und Ergänzungen. Diese werden hier nachfolgend alphabetisch sortiert beschrieben.
Hinweis:
Alle Befehle, bis auf das einleitende btrfs
, können abgekürzt werden, soweit das zu einer eindeutigen Zuordnung führt. Solange man sich nicht sicher ist, sollte man die nachfolgend beschriebenen Langformen der Befehle verwenden! Zum Beispiel bewirken:
sudo btrfs filesystem balance
sudo btrfs fi ba
das Gleiche.
btrfs balance¶
Mit der Zeit sind bei einem Btrfs-RAID-Verbund, nach dem Hinzufügen bzw. Entfernen von externen Speicherplatz, die Metadaten und Filedaten nicht mehr gleichmäßig auf den Laufwerken bzw. dem Laufwerk verteilt. Um diese wieder ins Lot zu bringen, sollte man die Verteilung neu anordnen lassen. Dazu gibt man folgendes im laufenden System oder nach dem Einhängen eines externen Laufwerkes (siehe Fallbeispiele) in ein Terminal[1] ein:
für das Wurzelverzeichnis:
sudo btrfs balance start /
für ein selektives Verzeichnis:
sudo btrfs balance start /var/cache
Nachdem man diesen Befehl gestartet hat, kann man die folgenden Optionen anwenden:
sudo btrfs balance pause <Pfad> - Hält die Reorganisation an.
sudo btrfs balance cancel <Pfad> - Bricht die Reorganisation ab.
sudo btrfs balance resume <Pfad> - Nimmt eine angehaltene Reorganisation wieder auf.
sudo btrfs balance status <Pfad> - Zeigt den aktuellen Stand der Reorganisation an.
Hinweis:
Die obige Eingabe von sudo btrfs balance start /
sperrt das Terminal bis der Vorgang abgeschlossen ist. Will man einen der obigen Folgebefehle anwenden, muss man eine weitere Instanz vom Terminal öffnen und dort dann z.B. sudo btrfs balance status /
eingeben.
Je nach Datenmenge und Zustand des Btrfs-Dateisystemes kann diese Maßnahme eine längere Zeit in Anspruch nehmen. Man kann aber während des Abgleiches eingeschränkt weiter arbeiten, ohne das es dabei zu Konflikten (mit den Daten) kommt.
Auch ist es durch diesen Befehl möglich, das Dateisystem in eine andere Form zu konvertieren (Zum Beispiel von Raid1 zu Raid0) Dazu gibt man in ein Terminal folgendes ein:
sudo btrfs balance start -dconvert=raid0 -mconvert=raid0 /
Achtung!
Bei "-mconvert=raid0" wird die Sicherheit der Metadaten reduziert! Deshalb muss bei dieser Aktion die Option "-f" hinzugefügt werden.
btrfs device add¶
Falls es zu Speicherplatzproblemen kommt und mit dem Befehl btrfs filesystem resize
keine Abhilfe mehr möglich ist, so kann man einem laufenden System weiteren Speicherplatz hinzufügen. Dies funktioniert sowohl pauschal, indem man das Wurzelverzeichnis erweitert bzw. selektiv, indem man einen beliebigen Ast (Pfad) in der Verzeichnisstruktur ausbaut.
Das Laufwerk, das hinzugefügt werden soll, darf nicht schon an anderer Stelle eingebunden sein und sollte mit dem Btrfs-Dateisystem formatiert sein. Siehe auch folgende Fallbeispiele:
Dem Wurzelverzeichnis einen Speicherbereich hinzufügen:
Dazu gibt man im Terminal[1] ein:
sudo btrfs device add /dev/sda6 /
Der gesamte Wurzelbereich wird hierdurch um den Speicherplatz von /dev/sda6 vergrößert.
Einem Bereich einen Speicherbereich hinzufügen:
Dazu gibt man im Terminal[1] ein:
sudo btrfs device add /dev/loop0 /var/cache
Das Verzeichnis /var/cache wird um den Speicherplatz von /dev/loop0 erweitert.
Das bestehende Dateisystem passt den Speicherplatz auf dem hinzugefügten Laufwerk automatisch an. Es muss kein zusätzlicher Eintrag in der /etc/fstab vorgenommen werden. Beim nächsten Booten, wird dieses Laufwerk automatisch mit dem Basislaufwerk richtig eingebunden. Damit der Speicherplatz auch optimal und richtig benutzt werden kann, sollte man im Anschluss den Befehl btrfs device scan
ausführen, damit das Dateisystem alle Komponenten korrekt zuordnet.
Danach sollte noch btrfs balance
ausgeführt werden, damit die Daten wieder gleichmäßig verteilt sind.
Achtung!
Der Inhalt des zusätzlichen Laufwerkes wird beim Hinzufügen gelöscht bzw. überschrieben. Das zusätzliche Laufwerk muss, solange es nicht mit dem Befehl btrfs device delete
entfernt wurde, schon beim Booten vom System erreichbar sein. Das gilt insbesondere bei externen Laufwerken!
btrfs check¶
Wenn das btrfs-System mal nicht funktionieren sollte, oder balance nicht seinen Dienst verrichtet, hilft der Befehl "btrfs check". Dafür darf das Volumen aber nicht eingehängt sein!
btrfs check --repair /dev/sdX
btrfs device delete¶
Hinweis:
Dieser Befehl wird zur Zeit nicht (richtig) ausgeführt. Ein korrektes Aushängen ist nicht in allen Fällen möglich!
Hat man seinen Speicherplatz aus einzelnen Laufwerken zusammengestellt - siehe btrfs device add, so kann man diesen Speicherplatz bedarfsweise wieder freigeben und ggf. an anderer Stelle verwenden. Dazu gibt man in ein Terminal[1] ein:
sudo btrfs device delete /dev/sda6 /
Damit wird der Speicherplatz an dieser Stelle um die Größe des genannten Laufwerkes verkleinert.
Damit der Speicherplatz wieder optimal benutzt werden kann, sollte man im Anschluss den Befehl btrfs filesystem balance
ausführen.
btrfs device scan¶
Nachdem man in ein Terminal[1]
sudo btrfs device scan
eingibt. Ergibt dieser Befehl nur die Ausgabe von:
failed to read /dev/sdh failed to read /dev/sdg failed to read /dev/sdf failed to read /dev/sde failed to read /dev/sdd failed to read /dev/sr0
und damit nur Laufwerke, welche kein Btrfs-Dateisystem besitzen (Negativliste).
Mit der Ergänzung eines Laufwerkpfades
sudo btrfs device scan /dev/sdXY
erhält man bei
einem Btrfs-Dateisystem
Scanning for Btrfs filesystems in '/dev/sdb1'
Ohne ein Btrfs-Dateisystem
Scanning for Btrfs filesystems in '/dev/sda1' ERROR: unable to scan the device '/dev/sda1'
Um weitergehende Informationen zu erhalten, sollte man den Befehl btrfs filesystem show
anwenden.
btrfs filesystem defragment¶
Experten-Info:
Copy On Write Dateisysteme (COW) haben viele Vorteile, aber auch Nachteile - z.B. Defragmentierung. Btrfs legt die Daten beim ersten Schreiben einer Datei sequentiell ab, aber COW erfordert, das geänderte Daten nicht einfach überschrieben werden, sondern in freie Speicherbereiche abgelegt werden. Damit sind dann die Dateien nicht mehr zusammenhängend - also fragmentiert. Das hat dann ggf. auch noch Einfluss auf das Speichern anderer Dateien.
Es wird empfohlen bei normalen Festplatten - nicht jedoch bei SSD-Laufwerken - die Struktur und die der Metadaten in einem Btrfs-Dateisystem ab und an zu reorganisieren. Dies ist jedoch nicht zwingend erforderlich.
Das wird unter dem Btrfs-Dateisystem als Defragmentierung bezeichnet und kann in einem laufenden System durchgeführt werden bzw. wenn ein Laufwerk oder Unterlaufwerk (Subvolume) dazu eingebunden wurde.
Hinweis:
Diese Defragmentierung ist vergleichbar mit der vom Windows-Betriebssystem - es wird eine Reorganisation der eigentlichen Daten durchgeführt! Je nach Datenmenge und Zustand des Btrfs-Dateisystemes kann diese Maßnahme eine längere Zeit in Anspruch nehmen. Man kann aber während einer Defragmentierung eingeschränkt weiter arbeiten, ohne dass es dabei zu Konflikten (mit den Daten) kommt.
Um den Zeitaufwand zu reduzieren, sollte man Schnappschüsse, die man nicht mehr benötigt, entfernen bzw. diese extern auslagern. Siehe auch die Hinweise bei den Befehlen btrfs subvolume snapshot
bzw. btrfs-image
.
Eine Defragmentierung erreicht man durch die (hier beispielhafte) Eingabe im Terminal[1] von:
sudo btrfs filesystem defragment /home
Dabei muss der angegebene Pfad, hier im Beispiel /home, nicht zwingend mit den Unterlaufwerken (Subvolumes) korrespondieren!
btrfs filesystem df¶
Mit dem Befehl:
sudo btrfs filesystem df PFAD
erhält man eine grobe Aussage zur Belegung des abgefragten Speichermedium. Mit der Option PFAD
wird der Bereich festgelegt. Die beispielhafte Ausgabe für ein Btrfs-RAID-Verbund ist:
Data, RAID0: total=4.00GB, used=2.37GB System, RAID1: total=8.00MB, used=4.00KB System: total=4.00MB, used=0.00 Metadata, RAID1: total=768.00MB, used=181.83MB
bzw. für ein einzelnes Laufwerk / Partition z.B.:
Data, single: total=55.01GiB, used=51.68GiB System, DUP: total=8.00MiB, used=16.00KiB Metadata, DUP: total=1.00GiB, used=55.27MiB GlobalReserve, single: total=55.11MiB, used=0.00B
oder auch für ein bestimmtes Verzeichnis z.B. bei:
sudo btrfs filesystem df /boot
Data, single: total=55.01GiB, used=51.68GiB System, DUP: total=8.00MiB, used=16.00KiB Metadata, DUP: total=1.00GiB, used=55.27MiB GlobalReserve, single: total=55.11MiB, used=0.00B
btrfs filesystem resize¶
Um die Größe eines Speicherbereiches festzulegen bzw. zu verändern, kann man im Terminal[1]
sudo btrfs filesystem resize [Option] /PFAD
eingeben. Die Optionen sind wie folgt zu setzen (Fallbeispiele), /mnt: ist der Pfad eines eingehängtes Laufwerk oder Unterlaufwerk (Subvolume):
Laufwerk vergrößern:
mit Vorzeichen: + = vergrößern um
Wert = 4
Faktor: g = GiB, m = MiB, k = KiB
sudo btrfs filesystem resize +4g /mnt
Laufwerk verkleinern:
mit Vorzeichen: - = verkleinern um
Wert = 4
Faktor: g = GiB, m = MiB, k = KiB
sudo btrfs filesystem resize -4g /mnt
Laufwerk eine definierte Größe zuweisen:
Wert = 4
Faktor: g = GiB, m = MiB, k = KiB
sudo btrfs filesystem resize 16g /mnt
einem Laufwerk bzw. Unterlaufwerk (Subvolume) den gesamten noch zur Verfügung stehenden Speicherplatz zuweisen
sudo btrfs filesystem resize max /mnt
In allen Fällen wird bei erfolgreicher Veränderung eine Anzeige ausgegeben, die beispielhaft so aussieht:
resize '/mnt' of '+4g'
btrfs filesystem show¶
Will man eine Übersicht zu vorhandenen Btrfs-Dateisystemen erhalten, kann man im Terminal[1]
sudo btrfs filesystem show
eingeben. Dann werden entsprechende Informationen zu allen Laufwerken angezeigt, unabhängig vom Mount-Status, ob ein Btrfs-Dateisystem vorhanden ist oder auch nicht.
btrfs filesystem sync¶
Dieser Befehl ist nur wirksam, wenn beim Formatieren eines Btrfs_RAID-Verbundes die Optionen
-d
= Datenprofil mit raid0 bis raid10-m
= Metadatenprofil mit raid0 bis raid10
eingesetzt wurden. Die Eingabe erfolgt in ein Terminal[1] mit:
sudo btrfs filesystem sync PFAD
Die Angabe PFAD
kann dabei ein beliebiger Pfad im laufendem System sein.
btrfs property list¶
Dieser Befehl zeigt veränderbare Eigenschaften eines Btrfs-Objektes an.
btrfs property list PFAD
btrfs property get¶
Dieser Befehl liest eine Eigenschaft eines Btrfs-Objektes aus. Man kann z.B. mit diesem Kommando prüfen, ob ein Subvolume schreibgeschützt ist:
btrfs property get -ts PFAD ro
btrfs property set¶
Dieser Befehl ändert eine Eigenschaft eines Btrfs-Objektes. Auf diese Weise kann man ein Subvolume schreibbar machen:
sudo btrfs property set -ts PFAD ro false
Das ist nützlich, wenn man einen Snapshot nur lesbar erzeugt hat und ihn später als schreibbar mounten will (z.B., weil man zu dem Stand zurückkehren will).
btrfs subvolume create¶
Will man eigene Unterlaufwerke (Subvolumes) anlegen, so kann man dies auf einer mit Btrfs formatierten Partition erreichen, indem man diese Partition, sofern erforderlich,
in das laufende System einbindet
alternativ zum Einbindepunkt wechselt.
Dazu gibt man in ein Terminal[1] nacheinander
sudo mount /dev/sda1 /media
sudo btrfs subvolume create /media/BEZEICHNUNG
sudo umount /dev/sda1
ein. Als BEZEICHNUNG
kann man eine beliebige Information wählen, z.B.: daten
- also auch eine Bezeichnung ohne das führende @
.
btrfs subvolume delete¶
Um ein bestehendes Unter-Laufwerk (Subvolume) wieder zu löschen, kann man dieses (ggf. nach dem Einbinden in das eigene System) mit der Eingabe in ein Terminal[1] von:
sudo btrfs subvolume delete /media/BEZEICHNUNG
Um einen Snapshot zu löschen, geht man folgendermaßen vor:
-sudo btrfs subvolume list / ID 257 gen 968515 top level 5 path @ ID 544 gen 968508 top level 5 path @apt-snapshot-2017-03-21_08:53:57 -mount /dev/sda9 /mnt/temp => die 9 ersetzen durch die aktuelle Platte, /mnt/temp vorher anlegen -ls /mnt/temp total 16K drwxr-xr-x 1 root root 76 Feb 3 18:13 .. drwxr-xr-x 1 root root 266 Feb 20 12:08 @apt-snapshot-2017-03-21_08:53:57 drwxr-xr-x 1 root root 68 Apr 22 08:53 . drwxr-xr-x 1 root root 272 Apr 22 09:01 @ -sudo btrfs subvolume delete /mnt/temp/@apt-snapshot-2017-03-21_08:53:57 Delete subvolume (no-commit): '/mnt/temp/@apt-snapshot-2017-03-21_08:53:57' -sudo umount /mnt/temp
Experten-Info:
Die normale Bash-Routine/Befehlsequenz
sudo rm -rf /mnt/BEZEICHNUNG
ist für ein Subvolume unwirksam. Es wird dabei nur der Inhalt des Unterlaufwerkes (Subvolume) gelöscht und das kann zu unkontrolliertem Verhalten bzw. auch Datenverlust führen. Man sollte daher vorab mit dem Befehl btrfs subvolume list
den Status eines Verzeichnisses überprüfen!
btrfs subvolume find-new¶
Will man Informationen über den Zustand einzelner Dateien angezeigt bekommen, so kann man diese im Terminal[1] abfragen mit:
sudo btrfs subvolume find-new /home 20725 > liste.txt
Dabei bedeuten
/home
ein gültiges Unterlaufwerk (Subvolume) und
20725
die laufende Nummer der Metadaten-Information, ab der ein Suchvorgang erfolgen soll (jünger als Parameter). Man sollte erst einmal mit einer zu hohen Zahl (z.B. 1 000 000) anfangen, dann erhält man als Ausgabe die letzte lfd. Zählnummer - z.B.:
transid marker was 20741
mit der man dann (⇐) eine erneute Suche einleiten kann und erhält u.a.:
inode 9690 file offset 0 len 20 disk start 0 offset 0 gen 20728 flags INLINE ~/.local/share/zeitgeist/bb.fts.index/postlist.baseB
> liste.txt
Damit wird die Ausgabe in eine Datei umgeleitet. Dieses ist immer vorzuziehen - ein Abbrechen der Ausgabe ist jederzeit möglich mit Strg + C .
btrfs subvolume list¶
Um die Unter-Laufwerke (Subvolumes) ID in einem aktiven System abzufragen, gibt man in ein Terminal[1] ein:
btrfs subvolume list /
und erhält (die beispielhafte) Ausgabe für das aktuelle Wurzelverzeichnis:
ID 260 top level 5 path @ ID 258 top level 5 path @home ID 261 top level 5 path @data
Diese Daten sind für das Einbinden von Partitionen mit Subvolumes von Interesse, sowohl für das aktuelle einmalige Einbinden als auch für die /etc/fstab. Unterlaufwerke (Subvolumes), welche nicht zum Wurzelverzeichnis gehören, kann man dann anstelle mit … -o subvol=@data …
z.B. sicherer einbinden mit:
sudo mount -o subvolid=261 /dev/sda3 /media/daten
bzw. in der /etc/fstab:
UUID=2f613613-85b4-46cf-bbbe-90a1748f7753 /media/daten btrfs defaults,subvolid=261 0 0
btrfs subvolume set-default¶
Legt ein Subvolume als Standard fest, welches beim Mounten ohne weitere Mount-Optionen in den Zielordner gemountet wird. Standardmäßing ist dies das beim Anlegen des Dateisystems erstellte Top-Level-Subvolume mit der internen subvolid=5.
sudo btrfs subvolume set-default SUB_ID FS-PATH
SUB_ID
ist die ID des neu zu spezifizierenden Subvolumes. FS-PATH ist der Ordner, in den das zu ändernde BTRFS-Dateisystem gemountet ist.
Um das Top-Level-Subvolume als Standard wiederherzustellen, gibt man also z.B. ein:
sudo mount /dev/sda1 /mnt
sudo btrfs subvolume set-default 5 /mnt
sudo umount /dev/sda1
btrfs subvolume snapshot¶
Um einen aktuellen Zustand des Dateisystemes bzw. Teilen davon zu erhalten (Snapshot), kann man über ein Terminal[1] diesen erstellen lassen (quasi Backup). Dieses kann in einem laufenden System oder auch aus einem Live-System erfolgen. Als Quelle wird von einer Partition mit Subvolumes ausgegangen. Als Beispiel wird hier vom Laufwerk /dev/sda1 mit dem Unterlaufwerk (Subvolume) @home ausgegangen. Man gibt dann nacheinander in ein Terminal[1] ein:
sudo mount /dev/sda1 /mnt
cd /mnt
Der Schnappschuss wird erstellt mit:
sudo btrfs subvolume snapshot @home home-2012-04-28
Als Ziel muss ein Verzeichnis auf dem gleichen Laufwerk gewählt werden, als Bezeichnung sollte eine mit aussagefähigem Text (z.B.: home-datum
) genommen werden. Es wird dabei nur geringfügig mehr Speicherplatz in Anspruch genommen, da der Snapshot nur ein zusätzliches Unterlaufwerk (Subvolume) darstellt, intern werden die Verzeichnisse und Dateien nur mit den Metadaten verlinkt. Einen älteren Schnappschuss sollte man mit dem Befehl btrfs subvolume delete
löschen. Danach kann/sollte man den Einhängepunkt wieder lösen mit:
cd ..
sudo umount /dev/sda1
Hinweis:
Nach dem Löschen eines Schnappschusses werden in dem automatisch startenden Hintergrundprozess (btrfs-cleaner
) alle überflüssigen Dateien und Metadaten überprüft und gelöscht. Dass kann je nach Datenmenge und Zugriffszeit auf die Festplatte(n) erhebliche Zeit in Anspruch nehmen. Ein Weiterarbeiten ist dabei grundsätzlich möglich.
Experten-Info:
Nach einem Schnappschuss bleiben die realen Dateien auf der Festplatte solange erhalten, bis dieser Schnappschuss wieder gelöscht wird. Deshalb sollte man vor dem Anlegen eines Schnappschusses alle überflüssigen Daten / Dateien löschen.
Beispiel 1
Vorhanden seien Kernel A und Kernel B, als man den Schnappschuss angelegt hat. Nach einiger Zeit wird der Kernel C hinzugefügt und der Kernel A gelöscht. Dann bleiben trotzdem alle Daten für Kernel A auf der Festplatte bestehen, denn diese werden (bis zum Löschen) vom Schnappschuss gehalten.
Beispiel 2
Im Verzeichnis /var/cache/apt/archives werden die Pakete für die Installation, das Update bzw. ein Upgrade solange aufbewahrt, bis diese gelöscht werden (was nicht immer automatisch erfolgt). So sammeln sich so ggf. größere Datenmengen an!
Direkte Befehle¶
btrfs-convert¶
Die Konvertierung von ext2 - ext4 nach Btrfs erfolgt bei einer Eingabe in das Terminal[1] von:
btrfs-convert [-d] [-i] [-n] [-r] GERÄT
Die zugehörigen Optionen und Parameter sind:
-d
= deaktiviere Prüfsummen der Daten-i
= ignoriere xattrs and ACLs-n
= verzichte auf Verdichtung kleiner Files (< Seitegröße)-r
= mit der Sicherungsdatei zurück konvertierenGERÄT
= relevantes Laufwerk / Partition
btrfs-debug-tree¶
Achtung!
Der Befehl
sudo btrfs-debug-tree
darf nicht auf einem eingehängten (mounted) Dateisystem angewendet werden!
Um den gesamten Metadatenbaum (BTree) eines Laufwerkes mit den einzelnen Einträgen (Äste und Blätter) zu überprüfen, gibt man für ein nicht eingebundenes Laufwerk im Terminal[1] ein:
sudo btrfs-debug-tree [-e] GERÄT > Ausgabe.txt
Die bedarfsweise Option
-e
beschränkt die Ausgabe auf fehlerhafte Einträge.
Das zu prüfende Laufwerk ist mit /dev/sda1 bzw. der relevanten Laufwerksbezeichnung vorzugeben. Um die Ausgabe in Ruhe auswerten zu könnnen, sollte man die Ausgabe mit > Ausgabe.txt
in eine Datei umleiten.
btrfs-image¶
Mit diesem Befehl wird eine Image-Datei erstellt, die von der angegebenen Quelle ein Image unter dem angebenen Ziel erstellt.
Hinweis:
Das Ergebnis ist nicht vergleichbar mit dem, was mit dem Befehl btrfs subvolume snapshot
erreicht wird. Hier werden nur die Metadaten des Btrfs-Dateisystemes in eine Datei kopiert - die eigentlichen Daten werden jeweils als Null-Datei übernommen!
Dazu gibt man in das Terminal[1] ein:
btrfs-image [Option(en)] QUELLE ZIEL
Die Optionen haben folgende Bedeutung:
-r
= Schreibe ein älteres Image zurückQUELLE
ist das Image,ZIEL
das Laufwerk
-c WERT
= Komprimierung, Wert von 0 = keine, 1 = niedrigstezlib
, 9 = höchstezlib
-t WERT
= Anzahl der parallelen Prozesse, Wert von 1 bis 32, Default = Anzahl CPUsQUELLE
= ein gültiges Btrfs-Laufwerk - /dev/sdXYZIEL
= eine aussagefähige Bezeichnung (inkl. Pfadangabe)
Dieses Image belegt zusätzlichen Speicherplatz und sollte nach dem Fertigstellen auf ein anderes oder externes Laufwerk gesichert werden.
Ausbaufähige Anleitung
Dieser Anleitung fehlen noch einige Informationen. Wenn Du etwas verbessern kannst, dann editiere den Beitrag, um die Qualität des Wikis noch weiter zu verbessern.
Kompakte Befehle¶
btrfsck¶
Um eine manuelle Prüfung am Dateisystem für ein nicht eingebundenes Laufwerk auszuführen, gibt man in das Terminal[1] ein:
btrfsck /dev/sda1
und erhält bei einem fehlerfreien Durchlauf (beispielhaft):
found 2662187008 bytes used err is 0 total csum bytes: 2410436 total tree bytes: 192860160 total fs tree bytes: 179916800 btree space waste bytes: 46454099 file data blocks allocated: 13467791360 referenced 2771017728 Btrfs Btrfs v0.19
Da diese Dateiprüfung zur Zeit mit dem Standardtool keine Korrekturen ausführt, kann man sich selbst helfen, indem man eine solche Prüfung manuell ausführt. Dazu legt man sich das folgende Skript z.B. als dateick-btrfs ausführbar ab nach:
/usr/local/sbin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/bin/bash E_BADARGS=65 function FEHLERSUCHE { find $1 -mount -type f -exec cat '{}' > /dev/null \; } if [ $# -ne 1 ] then echo "Bitte geben Sie den Pfad zu"; echo "dem eingehängten Laufwerk an"; exit $E_BADARGS fi echo "Skript \"dateick-btrfs\" wurde gestartet."; echo "Überprüfe $1, das wird eine Weile dauern!"; FEHLERSUCHE "$1" echo "Fehlersuche beendet! Bitte prüfen Sie 'dmesg' auf mögliche Fehler"; exit 0 |
Das Skript wird im Terminal z.B. mit:
sudo dateick-btrfs /etc
gestartet und überprüft den angegebenen Pfad rekursiv dahingehend, ob die Prüfsummen der Dateien mit den redundanten Prüfsummen übereinstimmen. Wenn eine falsche Prüfsumme gefunden wird, sendet die Kernelroutine einen entsprechenden Hinweis, der im Terminal mit
dmesg
ausgelesen werden kann.
Hinweis:
Das Skript arbeitet nicht auf einem mit single
formatierten Btrfs-Dateisystem, siehe auch den Expertenhinweis beim Befehl mkfs.btrfs
.
btrfstune¶
Will man ein reales Backup von einer Partition insgesamt oder einem Unterlaufwerk (Subvolume) extern anlegen, so muss diese Option vorab gesetzt (enabled) werden. Alternativ kann man die Partition auch mit der Option ro
einbinden!
Will man mit einem Dateisystem (experimentell) arbeiten, so empfiehlt es sich, auch hierbei dieses auf den Status
nur lesbar (readonly)
einzustellen.
Dazu gibt man in ein Terminal[1] ein:
sudo btrfstune 0 /dev/sda1
Die Optionen sind
0
= normale Einstellung, les- und beschreibbar (disabled)1
= Seeding-Flag setzen, nur lesbar (enabled)
Bei erfolgreicher Umstellung wird beim Setzen des Seeding-Flags keine Rück-/Fehlermeldung ausgegeben - hingegen erfolgt im Fehlerfall bzw. beim Entfernen des Seeding-Flags folgende Ausgabe:
seeding flag is not set on /dev/sda1
Obsolete Befehle¶
btrfsctl¶
Dieser alternative Befehl sollte nicht mehr verwendet werden (unsichere Befehlsausführung, wird nicht mehr gepflegt).
Der btrfsctl
-Befehl stellt eine Zusammenfassung der einzelnen btrfs
-Befehle dar. Die Eingabe in das Terminal [1] erfolgt mit:
sudo btrfsctl [Option(en)]
btrfs-show¶
Dieses ist ein alternativer Befehl zu btrfs filesystem show
und sollte nicht mehr verwendet werden (unsichere Befehlsausführung, wird nicht mehr gepflegt).
btrfs-vol¶
Dieses ist ein alternativer Befehl, je nach Option -a
= btrfs device add
, -b
= btrfs filesystem balance
sowie -r
= btrfs device delete
und sollte nicht mehr verwendet werden (unsichere Befehlsausführung, wird nicht mehr gepflegt).
btrfs filesystem balance¶
Dieses ist ein alternativer Befehl zu btrfs balance
und sollte nicht mehr verwendet werden (unsichere Befehlsausführung, wird nicht mehr gepflegt).
Links¶
Informationen¶
Downloads¶
PartedMagic 🇬🇧 ⮷