Btrfs ist noch immer als "experimentell" im Linux-Kernel eingestuft und noch keine der Endkunden-Distributionen verwendet es als bevorzugtes Dateisystem. Dabei lockt das designierte Standard-Dateisystem für Linux mit Enterprise-Funktionen, die man in dieser Art unter Linux bis dato nicht aus einer Hand bekommen konnte. Lange Zeit blieb nur ein neiderfüllter Blick in Richtung ZFS, das allerdings mit seiner Sun Common Development and Distribution License (CDDL) so ganz und gar nicht kompatibel mit der GNU General Public License (GPL) des Linux-Kernels ist.
Dieser Artikel beginnt mit einer kurzen Beschreibung der wichtigsten Eigenschaften und Funktionen von Btrfs, gefolgt von einer Installationsanleitung am Beispiel einer virtuellen Instanz unter Ubuntu 12.04. Diesem Ubuntu-System stehen auch mehrere virtuelle Festplatten zur Verfügung, auf denen dann erste Schritte mit Btrfs und dem wichtigsten Administrationswerkzeug demonstriert werden.
Im Anschluss wird das Root-Dateisystem des Testsystems von Ext4 nach Btrfs konvertiert und in ein RAID 1 umgewandelt. Damit kann dann die praktische Anwendung von Filesystem-Snapshots im Zuge von Software-Updates mit anschließendem Rollback der Änderungen vorgeführt werden.
Btrfs ist ein Copy-on-Write-Filesystem (CoW). Während ein Filesystem wie Ext3 Blockänderungen in einem Journal protokolliert, schreibt Btrfs Änderungen an einem Block immer an eine neue Stelle auf dem Datenträger und referenziert bei Erfolg in den Metadaten auf den neuen Datenblock. Erst danach werden die alten Daten zum Überschreiben freigegeben, sofern auf sie nicht mehr anderweitig verwiesen wird, zum Beispiel durch einen Snapshot.
Btrfs hat sich auf die Fahnen geschrieben, nicht nur fortgeschrittene Zusatzfunktionen zu bieten, sondern in erster Linie fehlertolerant, leicht administrierbar und im Falle des Falles auch schnell reparierbar zu sein. Es verwendet für die Verwaltung von Metadaten und Nutzdaten ausschließlich CoW-optimierte binäre Bäume (B-Trees), mit Ausnahme des Superblocks. Btrfs speichert auch Prüfsummen (CRC32C-Hashes) für Daten und Metadaten, um stille Datenkorruption zu erkennen. Darüber hinaus bietet es Funktionen, die auf hohe Skalierbarkeit in modernen Datenzentren ausgerichtet sind. Vor Btrfs waren dafür zusätzliche Werkzeuge zur Verwaltung von Speicherplatz (Logical Volume Management) oder der Erhöhung der Ausfallsicherheit (RAID) nötig.
Die wichtigsten Eigenschaften von Btrfs (Stand: Kernel Version 3.4) [1] sind:
Quasi selbstverständlich sind eine dynamische Anzahl von Inodes, effizientes Speichern von kleinen Dateien, die Verwendung von Extends, Access Control Lists (ACLs) und erweiterte Attribute. Ein Must-have sind auch die Unterstützung des TRIM-Kommandos und spezielle Optimierungen für SSD-Speicher. Die maximale Dateisystem- und Datei-Größe ist mit 264 Bytes oder 16 Exbi-Bytes (EiB) großzügig bemessen, und mit maximal 264 Files pro Filesystem sollte für die nächsten paar Jahre ausreichend vorgesorgt sein.