staging.inyokaproject.org

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_logo.png

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 @.

Experten-Info:

Ein so erstelltes Unterlaufwerk (Subvolume) muss als erstes die Zuweisungen für

erhalten, da ansonsten keine Daten bzw. Verzeichnisse darin ohne root-Rechte angelegt werden können.

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 konvertieren

  • GERÄ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ück

    • QUELLE ist das Image, ZIEL das Laufwerk

  • -c WERT = Komprimierung, Wert von 0 = keine, 1 = niedrigste zlib, 9 = höchste zlib

  • -t WERT = Anzahl der parallelen Prozesse, Wert von 1 bis 32, Default = Anzahl CPUs

    • QUELLE = ein gültiges Btrfs-Laufwerk - /dev/sdXY

    • ZIEL = 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).

Informationen

Downloads

Diese Revision wurde am 20. Dezember 2021 18:31 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: System, Dateisystem, Btrfs