Sie sind auf Seite 1von 11

Michael Koflers Blog | kofler.info http://kofler.info/blog/134/126/btrfs---Linux-Dateisystem-der-Zuk...

Skip to navigation
Skip to content

kofler.info
Search: Enter Search... Submit

Navigation
Start
Bücher
Excel 2000 bis 2003
Excel 2007
Linux 2010
Linux-Kommandoreferenz
PHP 5.3 und MySQL 5.4
Ubuntu 9.10
Ubuntu 10.04 Handbuch
Ubuntu Server
Visual Basic 2008

ebooks
Das Konzept
Mac OS X für Profis
openSUSE 11.3

Blog
Mein Mac-Tagebuch
Über
Michael Kofler
Bibliografie
10 Jahre kofler.info
Copyright-Hinweis
Sitemap
Google-Suche
Diese Website

Impressum
AGB
English pages
Michael Kofler
Translations
mssql2mysql

News
(27. Aug 2010)

1 of 11 9.9.10 16:45
Michael Koflers Blog | kofler.info http://kofler.info/blog/134/126/btrfs---Linux-Dateisystem-der-Zuk...

Kommentarfunktion ist repariert


Während der letzten Wochen war es auf der gesamten Website unmöglich, Kommentare zu verfassen.
Dieser Fehler ist nun behoben. Sorry!
(22. Jul 2010)
openSUSE 11.3
Das neue ebook zu openSUSE 11.3 beschreibt auf 150 Seiten die Installation, Konfiguration und
Nutzung dieser populären Distribution.
(29. Jun 2010)
Linux-Kommandoreferenz

Sie haben es satt, sich durch 50 Seiten man-Text zu quälen, nur weil Sie eine grep-Option nicht mehr
im Kopf haben? Abhilfe schafft die Linux-Kommandoreferenz mit einer kompakten
Syntaxzusammenfassung von über 300 Linux-Kommandos!
(10. Jun 2010)
Ubuntu-Handbuch
Das Ubuntu-Handbuch mit nunmehr über 700 Seiten ist erschienen! Die Themenpalette reicht vom
Einstieg über die Desktop-Anwendung, die Nutzung des Terminals bis hin zu den ersten Schritten bei
der Server-Konfiguration.

Page 1 of 2 > >>

Michael Koflers Blog


16. Aug 2010 |Linux

btrfs - Linux-Dateisystem der Zukunft

Während der Arbeit für die nächste Auflage meines Linux-Buchs habe ich mir das neue
Dateisystem btrfs genauer angesehen. In diesem Artikel erfahren Sie, wie gut btrfs bereits
funktioniert und wo es noch Mängel gibt. Noch mehr Details wird das Buch Linux 2011
enthalten, das voraussichtlich im November 2010 bei Addison-Wesley erscheint.

Vorweg gleich eine Warnung: btrfs ist definitiv noch nicht stabil! Ich habe während meiner
Experimente mit btrfs zwar keine Daten verloren, aber mehrere Kernelabstürze ausgelöst
(zugegebenermaßen oft aus Unverständnis über btrfs-Konzepte). In der btrfs-Mailingliste berichten
nahezu jede Woche btrfs-Tester und -Entwickler über Dateisysteme, die sich plötzlich nicht mehr
nutzen lassen (mount funktioniert nicht mehr), Kernelmeldungen mit Prüfsummenfehlern etc.
Vertrauen Sie btrfs keine Daten an, zu denen Sie nicht aktuelle Backups besitzen!

Insbesondere warnt die btrfs-Website, dass ein plötzlicher Stromausfall oder Absturz zur
unwiderruflichen Zerstörung des Dateisystems führen kann. Ein Teil des Problems besteht darin, dass
es für btrfs noch kein funktionierendes fsck-Kommando gibt. btrfsck führt zwar einen recht simplen
Integritätstest durch, kann ein kaputtes Dateisystem aber nicht reparieren.

Features
btrfs gilt damit als Linux-Gegenstück zu Suns (Oracles) Dateisystem ZFS. Nahezu alle namhaften
Linux-Kernelentwickler sind sich einig: Wenn btrfs einmal ausgereift ist, wird es ext4 als Linux-

2 of 11 9.9.10 16:45
Michael Koflers Blog | kofler.info http://kofler.info/blog/134/126/btrfs---Linux-Dateisystem-der-Zuk...

Standarddateisystem ablösen. Dieser Meinung ist sogar Theodore Ts'o, der Hauptentwickler aller
ext-Versionen.

Die folgende Liste fasst die wichtigsten Eigenschaften von btrfs zusammen.

Copy on Write (Geänderte Dateiblöcke werden nicht überschrieben, sondern an einer anderen
Stelle gespeichert. Das ermöglicht im Zusammenspiel mit Journaling besonders sichere
Dateiänderungen.)
Automatische Berechnung von Prüfsummen, um Bitfehler zu entdecken
Direkte Unterstützung von RAID-0, RAID-1 und RAID-10
Snapshots und Subvolumes
Komprimierung der Dateien (mount-Option compress)
SSD-Optimierung (mount-Option ssd)
Defragmentierung im laufenden Betrieb

Geplant, aber noch nicht implementiert sind RAID-5- und RAID-6-Unterstützung, eine
Dateisystemüberprüfung im laufenden Betrieb sowie eine Deduplizierungsfunktion, um redundante
Daten (z. B. zwei gleiche Dateien) nur einmal zu speichern.

Mit Subvolumes, Snapshots und RAID bietet btrfs ähnliche Funktionen wie die im Kernel schon
enthaltenen Multi Device und Logical Volume Manager. An sich sind solche Doppelgleisigkeiten im
Kernel unerwünscht, im Falle von btrfs wurden sie aber akzeptiert. Der Grund: einerseits ermöglicht
die direkte Integration von RAID-Funktionen in den Dateisystemtreiber aufgrund der Prüfsummen
eine noch höhere Datensicherheit, andererseits haben die btrfs-Entwickler glaubhaft nachweisen
können, dass die btrfs-Snapshots wesentlich effizienter sind als die von LVM.

root-Installation
btrfs kann bereits als root-Dateisystem verwendet werden, sofern es eine Bootpartition mit einem
anderen Dateisystemtyp (in der Regel ext3) gibt. GRUB ist nämlich noch nicht btrfs-kompatibel,
weder die alte Version 1 (also 0.97) noch die neue Version 2 (sprich 1.98). Fedora, openSUSE und
Ubuntu unterstützen btrfs bereits während der Installation. Bei Fedora muss allerdings die
boot-Option btrfs verwendet werden, damit dieser Dateisystemtyp bei der Festplattenpartitionierung
zur Auswahl steht. Bei Ubuntu müssen Sie eine Textmodus-Installation durchführen (Alternative CD).

Empfehlenswert für eigene Experimente mit btrfs sind Fedora 13 oder Ubuntu 10.10 Alpha/Beta.
Nicht so optimal sind openSUSE 11.3 und Ubuntu 10.04: Beide kennen das neue
Administrationskommando btrfs noch nicht. Dort müssen Sie mit btrfsctl und anderen eigentlich
obsoleten Tools arbeiten.

Generell ist es eine gute Idee, bei btrfs etwas mehr ungenutzten Platz vorzusehen als bei ext3/ext4:
Einerseits beanspruchen die Verwaltungsdaten (Metadaten) von btrfs deutlich mehr Platz als die von
ext3/ext4, andererseits ist es nicht immer ganz einfach, den noch freien Speicherplatz zu ermitteln.
Zuden reagiert btrfs mitunter allergisch (sprich mit Absturz) auf Platzmangel. Platzreserven sind also
ein Sicherheitsgewinn.

Administration
Die zur btrfs-Administration erforderlichen Kommandos mkfs.brtfs, brtfs, brtfsck etc. befinden sich je
nach Distribution im Paket btrfs-tools, btrfs-progrs oder btrfsprogs. Wenn Sie nicht schon während der
Installation ein btrfs-Dateisystem eingerichtet haben, müssen Sie dieses Paket in der Regel extra
installieren.

3 of 11 9.9.10 16:45
Michael Koflers Blog | kofler.info http://kofler.info/blog/134/126/btrfs---Linux-Dateisystem-der-Zuk...

Auch wenn sich die btrfs-Dokumentation und diverse Artikel zu btrfs zumeist auf die veralteten
Kommandos btrfsctl, btrfs-vol etc. beziehen, wird die btrfs-Administration in Zukunft durch das neue
Kommando btrfs erfolgen, das im Mittelpunkt dieses Artikels steht.

Um ein neues btrfs-Dateisystem in einer leeren Partition bzw. einem leeren Logical Volume
einzurichten, führen Sie das folgende Kommando aus (wobei Sie natürlich /dev/sdb1 durch Ihren
eigenen Device-Namen ersetzen müssen):

mkfs.btrfs /dev/sdb1

Anschließend binden Sie das Dateisystem in den Verzeichnisbaum ein:

mkdir /media/btrfs
mount /dev/sdb1 /media/btrfs

Wenn sich ein btrfs-Dateisystem als zu klein herausstellt, ist es am einfachsten, ein weiteres Device
(also eine Festplattenpartition oder ein Logical Device) hinzuzufügen – siehe etwas weiter unten. Es
ist aber auch möglich, die Größe eines vorhandenen btrfs-Dateisystems im laufenden Betrieb zu
ändern (auch verkleinern!). In der Praxis funktioniert das am besten, wenn sich das Dateisystem in
einem Logical Volume befindet. Um ein btrfs-Dateisystem so zu vergrößern, dass es ein zuvor mit
lvextend vergrößertes Logical Volume komplett nutzt, führen Sie das folgende Kommando aus:

btrfs filesystem resize max /media/btrfs

Statt max können Sie auch die neue absolute Größe des Dateisystems angeben, oder mit + oder - die
relative Änderung. Dabei sind die Kürzel k, m und g für kByte, MByte und GByte erlaubt. Das
folgende Kommando verkleinert das Dateisystem um 2 GByte.

btrfs filesystem resize -2g /media/btrfs

Konversion von ext3/ext4 zu btrfs


Es ist möglich, ein vorhandenes ext3- oder ext4-Dateisystem mit btrfs-convert in ein btrfs-
Dateisystem umzuwandeln. Die Konversion erfolgt überraschend schnell, weil dabei nur die btrfs-
Metadaten neu angelegt werden, die eigentlichen Datenblöcke aber unverändert bleiben. Das folgende
Beispiel geht davon aus, dass sich das ursprüngliche ext4-Dateisystem in /dev/sdb1 befindet.

fsck.ext4 -f /dev/sdb1
btrfs-convert /dev/sdb1
creating btrfs metadata.
creating ext2fs image file.
cleaning up system chunk.
conversion complete.
mount /dev/sdb1 /media/btrfs

btrfs-convert legt bei der Konversion den Snapshot ext2_saved an, der den Zustand des bisherigen
ext-Dateisystems archiviert. Solange es diesen Snapshot gibt, können Sie das btrfs-System sogar
zurück in ein ext-Dateisystem verwandeln! (Veränderungen, die Sie in der Zwischenzeit im btrfs-
Dateisystem durchgeführt haben, gehen dabei aber verloren.)

umount /dev/sdb1
btrfs-convert -r /dev/sdb1

4 of 11 9.9.10 16:45
Michael Koflers Blog | kofler.info http://kofler.info/blog/134/126/btrfs---Linux-Dateisystem-der-Zuk...

Wenn Sie nach der Konversion bei btrfs bleiben möchten, sollten Sie den Snapshot ext2_saved
löschen. Je mehr Änderungen Sie im btrfs-Dateisystem durchführen, desto mehr Platz erfordert der
Snapshot.

btrfs subvolume delete /media/btrfs/ext2_saved

Dateien komprimieren
btrfs untertützt die automatische und transparente Komprimierung von Dateien. Dazu muss das
Dateisystem mit der mount-Option compress in den Verzeichnisbaum eingebunden werden. Die
Option compress gilt nur für neue bzw. geänderte Dateien. Vorhandene Dateien bleiben unverändert,
solange sie nur gelesen werden. Die Option gilt für das gesamte Dateisystem, kann also nicht nur für
einzelne Verzeichnisse aktiviert werden.

mount -o compress /dev/sdb1 /media/btrfs

compress beschleunigt in vielen Fällen Dateioperationen! Das mag auf den ersten Blick verwundern,
weil die Kompression bzw. Dekompression ja zusätzlichen Aufwand verursacht. Bei einer schnellen
CPU ist dieser Aufwand aber gering im Vergleich zur Ersparnis, die sich dadurch ergibt, dass weniger
Datenblöcke der Festplatte oder der SSD gelesen bzw. verändert werden müssen. Als Zusatznutzen
kommt natürlich die Platzersparnis hinzu.

Sie können das komprimierte Dateisystem später auch ohne die Option compress nutzen. Neue bzw.
veränderte Dateien sind dann nicht mehr komprimiert, bereits vorhandene Dateien bleiben aber
komprimiert, solange die Dateien nur gelesen werden.

Die compress-Option eignet sich besonders gut für Verzeichnisse, die viele Textdateien enthalten (z.
B. /usr/, die Platzersparnis beträgt hier fast 50 Prozent!). Nicht empfehlenswert ist die Option
hingegen für Ihr Benutzerverzeichnis, wenn sich dort überwiegend bereits komprimierte Dateien
befinden (z. B. Audio-, Video-, PDF- und OpenOffice-Dateien). Eine weitere Komprimierung gelingt
dann nicht. Das erkennt auch der btrfs-Treiber und verzichtet bei der betreffenden Datei auf die
Komprimierung. Dennoch kostet dieser Test etwas Zeit.

In der Praxis ist es bei Desktopsystemen häufig zweckmäßig, für die Systempartition compress zu
verwenden, für die Home-Partition aber nicht. Leider können Sie nicht bei jeder Distribution die
mount-Optionen bereits bei der Installation einstellen. Bei openSUSE 11.3 ist das möglich, und eine
Testinstallation ergab, dass der Platzbedarf für die Systempartition bei einer Standardinstallation von
3,5 auf 1,8 GByte sank!

Längerfristig gibt es Pläne, in btrfs einen noch schnelleren, aber nicht ganz so platzsparenden
Komprimieralgorithmus einzusetzen (LZO) und die compress-Option dann standardmäßig zu
aktivieren.

Subvolumes
Von herkömmlichen Dateisystemen kennen Sie die Regel: eine Partition (oder ein Logical Volume) –
ein Dateisystem. Bei btrfs ist das anders: Subvolumes ermöglichen es, innerhalb eines btrfs-
Dateisystem gewissermaßen mehrere virtuelle Dateisysteme einzurichten und in einem eigenen
mount-Verzeichnis zu nutzen.

Am einfachsten ist das anhand eines Beispiels zu verstehen. Dabei gehe ich davon aus, dass sich das
btrfs-Dateisystem in der Partition /dev/sdb1 befindet und im Verzeichnis /media/btrfs eingebunden ist.

5 of 11 9.9.10 16:45
Michael Koflers Blog | kofler.info http://kofler.info/blog/134/126/btrfs---Linux-Dateisystem-der-Zuk...

btrfs subvolume create erzeugt nun zwei neue Subvolumes sub1 und data/sub2. mount mit der Option
subvol=name bindet die Subvolumes in den Verzeichnisbaum ein.

btrfs subvolume create /media/btrfs/sub1


btrfs subvolume create /media/btrfs/data/sub2
mkdir /media/sub1 /media/sub2
mount -o subvol=sub1 /dev/sdb1 /media/sub1

mount -o subvol=name funktioniert allerdings nur für Subvolumes, die sich direkt im
Wurzelverzeichnis des btrfs-Dateisystems befinden. Ist das nicht der Fall, müssen Sie mit btrfs
subvolume list die Volume-ID-Nummer des Subvolumes ermitteln und diese Nummer mit der mount-
Option subvolid angeben:

btrfs subvolume list


ID 256 top level 5 path sub1
ID 257 top level 5 path data/sub2
mount -o subvolid=257 /dev/sdb1 /media/sub2

Nun können Sie /media/sub1 und /media/sub2 wie zwei eigene Dateisysteme verwenden. Alle dort
gespeicherten Dateien finden Sie aber auch direkt im btrfs-Dateisystem in den Verzeichnissen sub1
und data/sub2, die bei der Ausführung von btrfs subvolume create automatisch erstellt wurden.

touch /media/sub1/tst1
ls /media/btrfs/sub1
tst1
touch /media/sub2/tst2
ls /media/btrfs/data/sub2
tst2

Mit anderen Worten: Die Subvolumes sind zwar als eigenständige Dateisysteme verwendbar, sie sind
aber auch über Verzeichnisse des btrfs-Dateisystems les- und veränderbar.

Mit btrfs subvolume delete name löschen Sie ein Subvolume inklusive aller darin enthaltenen Dateien.
Das Subvolume muss vorher natürlich aus dem Verzeichnisbaum gelöst werden.

umount /media/sub2
btrfs subvolume delete /media/btrfs/data/sub2

Beachten Sie, dass der von Subvolumes beanspruchte Speicher mit der Ausführung von btrfs
subvolume delete nicht sofort freigegeben werden, sondern erst nach und nach. Ein Kernelprozess
kümmert sich im Hintergrund um die erforderlichen Aufräumarbeiten.

Snapshots
Snapshots ermöglichen es, das btrfs-Dateisystem bzw. ein Subvolume des Dateisystems auf zwei
Zweige aufzuteilen. Neue Snapshots können vom Dateisystem selbst, von einem Subvolume oder von
einem anderen Snapshot erstellt werden.

Anfänglich enthalten das Ausgangs-Volume und der Snapshot dieselben Daten. Anschließend können
beide Dateisysteme losgelöst voneinander geändert werden, wobei btrfs nur die Änderungen speichert.
(Beim Erstellen des Snapshots wird also nicht der gesamte Datenbestand kopiert. Beachten Sie auch,
dass btrfs-Snapshots vollkommen anders funktionieren als LVM-Snapshots und ganz andere
Eigenschaften haben!)

6 of 11 9.9.10 16:45
Michael Koflers Blog | kofler.info http://kofler.info/blog/134/126/btrfs---Linux-Dateisystem-der-Zuk...

Snapshots können z. B. für Backups verwendet werden. Sie erstellen zuerst den Snapshot und führen
dann ein Backup des Snapshots aus. Das stellt sicher, dass sich während des Backups keine Dateien
ändern. Gleichzeitig können Sie während des Backups ganz normal weiterarbeiten. Sobald das
Backup abgeschlossen ist, löschen Sie den Snapshot.

btrfs-intern werden Snapshots wie Subvolumes behandelt. Deswegen gelten die meisten subvolume-
Befehle des btrfs-Kommandos gleichermaßen für Subvolumes und Snapshots. Der wesentliche
Unterschied zwischen Subvolumes und Snapshots besteht darin, dass Subvolumes anfänglich leer
sind, Snapshots dagegen eine virtuelle Kopie des Ausgangsverzeichnisses enthalten. (Wie gesagt:
Vorerst werden keine Daten kopiert. Vielmehr werden nur die Veränderungen gegenüber dem
ursprünglichen Zustand gespeichert.)

Als Ausgangspunkt für das folgende Beispiel dient ein btrfs-Dateisystem in der Partition /dev/sdb1.
Das Dateisystem ist an der Stelle /media/btrfs in den Verzeichnisbaum integriert. btrfs subvolume snap
erzeugt nun einen Snapshot vom gesamten Dateisystem. Dabei wird zugleich das Verzeichnis /media
/btrfs/snap1 erzeugt. Der Snapshot kann über dieses Verzeichnis verwendet werden oder mit mount
wie ein eigenes Dateisystem in den Verzeichnisbaum eingebunden werden. Dabei muss die vom
vorigen Abschnitt schon bekannte mount-Option subvol=name verwendet werden.

btrfs subvolume snapshot /media/btrfs/ /media/btrfs/snap1


mkdir /media/snap1
mount -o subvol=snap1 /dev/sdb1 /media/snap1/

Sie können nun sowohl im ursprünglichen Dateisystem als auch im Snapshot unabhängig voneinander
(also ohne gegenseitige Beeinflussung) Dateien anlegen, verändern und löschen.

Snapshots und yum-plugin-fs-snapshot (Fedora 13)


Wenn Sie Fedora 13 in einer btrfs-Root-Partition ausführen und zusätzlich das Paket yum-plugin-
fs-snapshot installieren, erstellt YUM bei jeder Paketinstallation bzw. bei jedem Update Snapshots
aller btrfs-Dateisysteme. Die Snapshots bekommen den Namen yum_datum_uhrzeit.

Prinzipiell bieten diese Snapshots die Möglichkeit, nach einem missglückten Update das
ursprüngliche System wiederherzustellen. In der Praxis bestehen allerdings einige Stolperfallen. So
beanspruchen die automatisch erzeugten Snapshots zunehmend mehr Festplattenkapazität.

Das btrfs-Kommando bietet leider keine Möglichkeit, um den Speicherbedarf exakt zu quantifizieren.
Auf jeden Fall sollten Sie daran denken, hin und wieder alle nicht mehr benötigten Snapshots zu
entfernen. Da Sie an btrfs subvolume delete immer nur einen Snapshot übergeben können,
formulieren Sie am einfachsten eine kleine Schleife:

for i in /yum*; do btrfs subvolume delete $i; done

Falls Sie mehrere btrfs-Dateisysteme im Einsatz haben (z. B. /home), führen Sie die obige Schleife
auch für diese Dateisysteme aus.

Wenn sich wirklich irgendwann die Notwendigkeit ergibt, dass Sie Ihr gesamtes System in einen alten
Zustand zurückversetzen möchten, müssen Sie die erforderlichen Schritte selbst durchführen. In der
Regel werden Sie mit dem folgenden Kommando einen Snapshot als neues Default-Volume für btrfs
festsetzen und den Rechner neu starten:

btrfs subvolume set-default /yum_20101231235959


reboot

7 of 11 9.9.10 16:45
Michael Koflers Blog | kofler.info http://kofler.info/blog/134/126/btrfs---Linux-Dateisystem-der-Zuk...

Beachten Sie, dass damit nicht nur die Paketinstallation rückgängig gemacht wird, sondern jede
Änderung, die Sie seither durchgeführt haben. Das gilt auch für Ihr Heimatverzeichnis (es sei denn,
Sie verwenden eine eigene Home-Partition)!
Der zum Zeitpunkt x durchgeführte Snapshot gilt jetzt als neue Systempartition. Leider besteht
momentan keine Möglichkeit, das ursprüngliche Default-Volume des btrfs-Dateisystems zu löschen.
Der von diesem Volume beanspruchte Speicherplatz ist somit verloren.

btrfs-Dateisysteme über mehrere Devices verteilen, RAID


Der btrfs-Treiber kann Dateisysteme über mehrere Festplatten bzw. Devices verteilen und unterstützt
dabei die RAID-Level 0, 1 und 10, ohne auf den sonst üblichen Linux-RAID-Treiber mdadm
zurückzugreifen. In Zukunft soll btrfs auch RAID-5 und RAID-6 unterstützen.

Der einfachste Fall von Multi-Device-Dateisystemen entsteht zumeist dann, wenn ein btrfs-
Dateisystem zu klein wird: Sie können nun ganz einfach ein weiteres Device hinzufügen (also eine
leere Festplattenpartition oder ein ungenutztes Logical Volume). Damit wird das Dateisystem
entsprechend vergrößert. Sie müssen weder eine Partition neu formatieren noch die Größe des
Dateisystem explizit ändern – btrfs erledigt all diese Aufgaben selbstständig.

btrfs device add /dev/sdb2 /media/btrfs

Anfänglich befinden sich nun alle Daten auf dem ersten Device, während das zweite Device erst nach
und nach genutzt wird. Falls sich die Devices auf unterschiedlichen physikalischen Festplatten
befinden (und nur dann!), erzielen Sie einen Geschwindigkeitsgewinn, wenn Sie die vorhandenen
Dateien mit btrfs filesystem balance über alle Devices verteilen. Beachten Sie aber, dass btrfs
filesystem balance sehr lange dauert und nur selten der Mühe wert ist.

Es ist auch möglich, ein Device wieder zu entfernen. Die auf dem Device enthaltenen Daten werden
dann zuerst auf die anderen Devices übertragen, weswegen die Ausführung des folgenden Kommando
sehr lange dauern kann.

btrfs device del /dev/sdb1 /media/btrfs/

Sie können ein btrfs-Dateisystem auch von vorne herein mit mehreren Devices einrichten, in dem Sie
an mkfs.btrfs mehrere Devices übergeben:

mkfs.btrfs /dev/sdb1 /dev/sdc1

Standardmäßig werden dann die Metadaten des Dateisystem dupliziert (entspricht RAID-1), die
eigentlichen Daten aber über alle Devices verteilt. Die Metadaten enthalten die
Verwaltungsinformationen des Dateisystems, also z. B. Inode-Listen sowie Bäume zum Suchen nach
Dateien.

Bei der Ausführung von mount geben Sie ein beliebiges Device des Dateisystems an. (Nach einem
Rechnerneustart muss das Kommando btrfs device scan bzw. btrfsctl -a ausgeführt werden, damit btrfs
weiß, welche Devices mit btrfs-Dateisystemen es gibt und wie sie zusammengehören.)

mount -t /dev/sdb1 /media/btrfs

Wenn Sie ein »richtiges« RAID-System anlegen möchten, bei dem Daten und Metadaten einheitlich
behandelt werden, übergeben Sie an mkfs.btrfs mit -d (für die Daten) und -m (für die Metadaten) den
gewünschten RAID-Level an. Außerdem übergeben Sie an mkfs.btrfs die gewünschte Anzahl von
Devices. Das folgende Kommando erstellt ein RAID-0-System (Striping):

8 of 11 9.9.10 16:45
Michael Koflers Blog | kofler.info http://kofler.info/blog/134/126/btrfs---Linux-Dateisystem-der-Zuk...

mkfs.btrfs -d raid0 -m raid0 /dev/sdb1 /dev/sdc1

Ein RAID-1-Dateisystem wird analog mit diesem Kommando eingerichtet:

mkfs.btrfs -d raid1 -m raid1 /dev/sdb1 /dev/sdc1

Interessant wird es, wenn bei einem RAID-1-Verbund ein Device ausfällt. Um diesen Fall zu testen,
habe ich die Festplatte /dev/sdc entfernt. Damit das Dateisystem verwendet werden kann, muss nun
die zusätzliche mount-Option degraded verwendet werden:

mount -o degraded /dev/sdb1 /media/btrfs

Um den RAID-Verbund wiederherzustellen, fügen Sie dem Dateisystem eine neues, möglichst gleich
großes Device wieder hinzu. Im folgenden Beispiel ist das wieder /dev/sdc1, wobei diese Partition nun
aber von einer neuen Festplatte stammt. Um das Dateisystem wieder über beide Devices zu verteilen
und somit die RAID-1-Redundanz wiederherzustellen, müssen Sie außerdem btrfs filesystem balance
ausführen. Bei großen Dateisystemen dauert die Ausführung dieses Kommandos naturgemäß sehr
lange. Immerhin kann das Dateisystem in dieser Zeit genutzt werden (wenn auch mit stark
verminderter Geschwindigkeit).

btrfs device add /dev/sdc1 /media/btrfs


btrfs filesystem balance /media/btrfs

Erst jetzt kann das defekte Device aus dem Dateisystem entfernt werden. Dabei verwenden Sie zur
Device-Angabe das Schlüsselwort missing:

btrfs device delete missing /media/btrfs

Beim nächsten mount-Kommando können Sie nun auf die Option degraded verzichten.

Wieviel Platz ist noch frei?


Bei anderen Dateisystemen kann ganz einfach mit df -h festgestellt werden, wieviel Speicherplatz
vorhanden ist, wieviel davon belegt ist und wieviel noch frei ist. Bei btrfs-Dateisystemen liefert df
aber oft vollkommen falsche Ergebnisse, insbesondere im Zusammenhang mit RAID. Leider sind
auch die btrfs-Kommandos filesystem show und filesystem df nicht in der Lage, wirklich konkrete
Zahlen zu ermitteln, wieviel Speicherplatz noch frei ist.

Das folgende Beispiel soll Ihnen dabei helfen, zumindest die Daten korrekt zu interpretieren, die btrfs
liefert. Als Ausgangspunkt dient ein kleines btrfs-RAID-1-System aus zwei je acht GByte großen
Partitionen. In dieses Dateisystem wurde das gesamte /usr-Verzeichnis des Testsystems kopiert
(Platzbedarf ca. 1,8 GByte).

mkfs.btrfs -d raid1 -m raid1 /dev/sdb1 /dev/sdc1


mount /dev/sdb1 /media/btrfs
cp -r /usr /media/btrfs

btrfs filesystem show verrät, dass das Dateisystem aus zwei jeweils acht GByte großen Devices
zusammengesetzt ist. Insgesamt enthält das Dateisysten 1,9 GByte System-, Metadaten und
Nutzdaten. Außerdem wissen wir jetzt, dass auf jedem Device jeweils 3,6 GByte GByte Daten
reserviert wurden. filesystem show liefert allerdings keine Informationen, wie die Devices miteinander
verbunden sind (also welcher RAID-Level aktiv ist). Daher ist es auch unmöglich zu sagen, wie groß
die gesamte Kapazität des Dateisystems ist. (Bei RAID-0 würde sie 16 GByte betragen, bei RAID-1
aber nur acht.)

9 of 11 9.9.10 16:45
Michael Koflers Blog | kofler.info http://kofler.info/blog/134/126/btrfs---Linux-Dateisystem-der-Zuk...

btrfs filesystem show /dev/sdb1 /dev/sdc1


Label: none uuid: dc691a5d-187e-4cb4-a94a-d12dabdffde4
Total devices 2 FS bytes used 1,89GB
devid 1 size 8.00GB used 3,63GB path /dev/sdb1
devid 2 size 8.00GB used 3,61GB path /dev/sdc1

btrfs filesystem df gibt Auskunft darüber, wie die reservierten Daten verwendet werden. btrfs hat
bisher 2,6 GByte für die eigentlichen Daten reserviert und davon ca. 1,7 GByte tatsächlich genutzt.
Weiters hat btrfs ein GByte für Metadaten reserviert und davon knapp 200 MByte genutzt. (Das ist
rund ein Achtel der eigentlichen Daten, also verhältnismäßig viel.) Schließlich hat btrfs 12 MByte für
Systemdaten reserviert und gerade einmal 4 KByte davon tatsächlich genutzt. 2,61 +1,01 + 0,01 ergibt
die 3,63 GByte, die filesystem show angezeigt hat.

btrfs filesystem df /media/btrfs/


Data: total=2.61GB, used=1.70GB
Metadata: total=1.01GB, used=198.82MB
System: total=12.00MB, used=4.00KB

Wieviel Daten sind nun noch frei? Wir wissen, dass insgesamt 16 GByte Speicherplatz zur Verfügung
stehen. Wegen der mit RAID-1 verbunden Redundanz sinkt der nutzbare Speicherplatz auf die Hälfte,
also auf acht GByte. Davon sind bereits 3,63 GByte reserviert. Der für die eigentlichen Daten
reservierte Bereich kann somit noch maximal um 4,37 GByte vergrößert werden und würde dann
knapp 7 GByte betragen. Davon sind 1,7 GByte bereits genutzt. Das ergibt einen freien Speicherplatz
für Dateien von ca. 5,3 GByte. Allerdings geht diese Rechnung nur auf, wenn btrfs nicht
zwischenzeitlich nochmals Platz für Metadaten reservieren muss.

Ein elementares Problem für btrfs-Administratoren besteht momentan darin, dass sie den RAID-Level
des Dateisystems nicht herausfinden können. Das macht die Administration von Dateisystemen, die
sie nicht selbst eingerichtet haben, sehr schwierig. Es ist anzunehmen, dass die btrfs-Werkzeuge
diesbezüglich noch verbessert werden.

Fazit
Das Arbeiten mit btrfs ist spannend. btrfs bietet beinahe soviele Funktionen wie ext4 plus LVM plus
Software-RAID zusammen und ist insofern am ehesten mit Suns (nunmehr Oracles) ZFS zu
vergleichen. In diesem Zusammenhang ist auch interessant, dass auch der btrfs-Hauptentwickler Chris
Mason ein Orcale-Mitarbeiter ist! Bis jetzt hat Oracles Sun-Übernahme zum Glück keine negativen
Auswirkungen auf den Arbeitseifer von Chris Mason gezeigt, eher im Gegenteil. Lizenzprobleme sind
nicht zu befürchten, der btrfs-Treiber untersteht so wie der restliche Kernelcode der GPL.

In Benchmarktests schneidet btrfs noch uneinheitlich ab, manchmal ein wenig besser als ext,
manchmal ein wenig schlechter. Die besten Benchmark-Ergebnisse erzielt btrfs in der Regel
zusammen mit der compress-Option - ein durchaus verblüffendes Resultat.

Die Fülle an Funktionen macht aber auch skeptisch. Gerade bei Dateisystemen steht die Stabilität an
erster Stelle, und hier hapert es noch. Angesichts der Komplexität von btrfs werden wohl eher Jahre
(und nicht Monate) vergehen, bevor ich wirklich kritische Daten btrfs anvertraue - auch wenn die
btrfs-Entwickler gerade überlegen, ob btrfs in Kernel 2.6.36 als 'stabil' gekennzeichnet werden soll.

Links
https://btrfs.wiki.kernel.org/

10 of 11 9.9.10 16:45
Michael Koflers Blog | kofler.info http://kofler.info/blog/134/126/btrfs---Linux-Dateisystem-der-Zuk...

https://btrfs.wiki.kernel.org/index.php/FAQ
https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3
https://btrfs.wiki.kernel.org/index.php/Gotchas
https://btrfs.wiki.kernel.org/index.php/Project_ideas
http://dir.gmane.org/gmane.comp.file-systems.btrfs
http://fedoraproject.org/wiki/Btrfs_in_Fedora_13
https://help.ubuntu.com/community/btrfs

Benchmark-Tests
http://www.linux-mag.com/id/7308/
http://www.phoronix.com/ (suchen Sie auf dieser Website nach btrfs)

Kommentar verfassen

11 of 11 9.9.10 16:45