Btrfs

Btrfs
Vollständige BezeichnungB-tree FS
ErstveröffentlichungFür Linux am 12. Juni 2007, als Beta (mit Version 3.10) ab Juni 2013, stabil seit 27. Oktober 2014;
für Windows (mit Version 0.1) am 21. Februar 2016, stabil (ab 1.0) seit 4. September 2017[1] (Linux, Windows)
Technische Umsetzung
VerzeichnisseB+-Baum[2]
Maximalwerte
Größe einer Datei16 EiB
Anzahl aller Dateien264
Länge des Dateinamens255 Byte
Größe des Dateisystems16 EiB
Erlaubte Zeichen im Dateinamenalle Bytes außer NULL und /
Eigenschaften
DateiattributePOSIX
Dateirechte-VerwaltungPOSIX, ACLs
Transparente Komprimierungja
Transparente Verschlüsselunggeplant[3]
Unterstützende BetriebssystemeLinux, ReactOS, Windows

Das Btrfs[4] (B-tree FS; auch ‚butter FS‘ genannt)[5][6] ist ein Copy-On-Write-Dateisystem, das seit 2007[7] als freie Software unter der GNU General Public License (GPL) für das Betriebssystem Linux und seit 2016, mit der Bezeichnung WinBtrfs, plattformübergreifend für Windows[8] (ab Windows 7)[1] sowie ReactOS[1][9] entwickelt wird.

Btrfs wird seit einiger Zeit als Nachfolger des bislang im Linux-Umfeld vorherrschenden extended filesystem gehandelt, seit 2008 in Version 4 als ext4-Dateisystem, da dieses anfänglich nur einen Teil der Beschränkungen früherer Versionen (ext2 und ext3) wie Dateigröße und Gesamtdateisystemgröße aufgehoben hatte. So setzte Andrew Morton,[10][11] einer der prominentesten Linux-Kernel-Entwickler, in 2008 „auf längere Sicht auf Btrfs“. Da jedoch beide Dateisysteme gewisse Vorteile bieten und auch beide aktiv weiterentwickelt werden, hat Btrfs diese Nachfolge bisher nicht angetreten – es bietet stattdessen eine zusätzliche Wahlmöglichkeit für Distributoren und Anwender.

Eigenschaften

Btrfs weist zahlreiche Gemeinsamkeiten mit ZFS auf und wird deswegen als Linux-Analogon zu ZFS beschrieben. ZFS wurde zwar schon sieben Jahre früher vom mittlerweile selben Hersteller (Sun Microsystems, aufgegangen in Oracle) als ultimatives Dateisystem entworfen, war wegen seines Lizenzstatus jedoch für die Verwendung mit Linux ungeeignet. Beide haben integriertes RAID, Volume-Management, prüfsummenbasierten Schutz vor Datenübertragungsfehlern und nutzen Copy-On-Write, ein Verfahren, bei dem eine Kopie erst dann „real“ angefertigt wird, sobald sie von einem der Beteiligten verändert wird. Solange alle Beteiligten ihre Kopie nicht verändert haben, genügt es, das Original ein einziges Mal zu speichern. Die Kopie erfolgt also zunächst „virtuell“ und wird erst bei einer ersten Benutzung verzögert angelegt. Das in das Dateisystem integrierte RAID-Subsystem bietet gegenüber klassischen Hardware- oder Software-RAID-Implementierungen den Vorteil, dass zwischen belegten und freien Datenblöcken unterschieden werden kann und somit bei der Rekonstruktion eines gespiegelten RAID-Volumens nur belegter Plattenplatz gespiegelt werden muss. Hieraus resultiert im Schadensfall, besonders bei wenig gefüllten Dateisystemen, eine enorme Zeitersparnis. Die RAID-Funktionalität wird zudem, im Gegensatz zu klassischen RAID-Verfahren, mit Hilfe von größeren Datenblöcken organisiert. Es erfolgt dann beispielsweise im RAID 1 keine Spiegelung der Datenträger, sondern es wird sichergestellt, dass jeder Datenbereich auf wenigstens zwei Datenträgern abgelegt wird. Sofern der größte Datenträger nicht größer ist als die restlichen zusammengenommen, wird es so möglich, einen RAID 1 aus einer ungeraden Anzahl von Datenträgern unterschiedlicher Kapazität zu bilden – unter voller Ausnutzung ihrer Kapazität.

Weiterhin baut Btrfs mit der B-Baum-Struktur auf einem zentralen Konzept aus XFS auf. Es ist somit auch mit dem nicht mehr weiterentwickelten Reiser4 verwandt, zu dem es als adäquate Alternative gesehen wird.[12]

Zu Btrfs gehört das Dienstprogramm btrfs-convert, mit dem bestehende ext3- und ext4-Dateisysteme in Btrfs-Dateisysteme konvertiert werden können. Die Konvertierung ist reversibel.[13]

Btrfs soll vor allem auch Funktionen bieten, die es vom derzeitigen Linux-Standard ext3/ext4, aber auch von anderen Dateisystemen wie XFS oder JFS abheben, hierunter fallen:

Geschichte

Die Kernstruktur von Btrfs – die Copy-on-write-B-Baum-Struktur – wurde ursprünglich von dem IBM-Forscher Ohad Rodeh im Rahmen einer Präsentation bei der USENIX 2007 vorgeschlagen. Rodeh schlug auch das Hinzufügen von Referenzierungszählern für Speicherblöcke und bestimmte Lockerungen der Balancing-Algorithmen normaler B-Bäume vor, die die B-Bäume für Hochleistungsspeicherlösungen mit Copy-On-Write-Schnappschüssen tauglich machen und dabei gute Nebenläufigkeit bewahren.[16]

Chris Mason, damals ein ReiserFS-Entwickler bei SUSE, wurde noch im selben Jahr von Oracle eingestellt und begann dort seine Arbeit an einem neuen Dateisystem, das fast ausschließlich solche B-Bäume verwendet – nicht nur für Meta- und Nutzdateien, sondern auch rekursiv zur Verfolgung der Speicherzuteilung der Bäume selber. Damit können sämtliche Operationen durch dieselben Routinen abgewickelt werden.[7][17]

Am 9. Januar 2009 wurde Btrfs erstmals in den Linux-Kernel 2.6.29 aufgenommen.[18] In einigen Linux-Distributionen steht das Dateisystem bereits offiziell bei der Installation zur Auswahl.

Linux

Für die meisten Linux-Distributionen ist Btrfs eines der zur Auswahl stehenden Dateisysteme oder es existieren Pakete, um es manuell einzurichten. Für den experimentellen Einsatz wurde das Dateisystem erstmals unter OpenSUSE 11.3 unterstützt[19] sowie unter Oracle Linux Release 2.[20] Beispielsweise können die Distributionen Arch Linux, Debian, Fedora, Gentoo, RHEL und Ubuntu optional auf Btrfs installiert werden bzw. Btrfs-Volumes nutzen.

Als Standard-Dateisystem findet sich Btrfs auf den Distributionen MeeGo[21], SUSE Linux Enterprise Server 12 (SLES 12)[22], Garuda Linux[23] und openSUSE ab Version 13.2.

Auf Fedora sollte nach 2008 Btrfs auch als Standard-Dateisystem verwendet werden,[24] wurde jedoch immer wieder verworfen, weil einige Werkzeuge zum Administrieren des Dateisystems noch nicht ausgereift waren.[25][26][27] Fedora 33, erschienen im Oktober 2020, hat nach über 10 Jahren[28][29] Btrfs als Standard-Dateisystem letztlich doch eingeführt.[30]

2017 gab Red Hat bekannt, Btrfs in RHEL nicht mehr zu unterstützen,[31] woraufhin es in RHEL 8 (2019) nicht mehr enthalten war.[32] Wie sich die Entscheidung von Fedora, der freien Basis von RHEL, auf das kommerzielle Linux von Red Hat auswirkt, bleibt noch abzuwarten.[32] Canonical setzt indes unter Ubuntu auf das mit Btrfs vergleichbare Dateisystem OpenZFS (ZFS on Linux), das seit Version 16.04 immer mehr in die Distribution integriert wird, beinhaltet jedoch Unterstützung für Btrfs.

Windows und ReactOS

Der Dateisystemtreiber WinBtrfs ermöglicht die Verwendung des Dateisystems unter Windows und ReactOS.[33]

Kritik am Design

Red Hat beauftragte im zweiten Quartal 2010 Edward Shishkin, einen der ursprünglichen Reiser4-Entwickler, mit einem Codereview. Shishkins Schluss war, dass das Design fehlerhaft ist, da dem ursprünglichen Algorithmus in Kernpunkten nicht gefolgt wird. Die Designfehler führen dazu, dass in speziellen Fällen der Plattenplatz ausgehen kann, obwohl genügend Platz vorhanden ist.[34][35][36] Die Btrfs-Entwickler widersprachen der Behauptung, dass es sich um einen Designfehler handele. Sie bezeichneten es vielmehr als Implementierungsfehler, der bereits behoben sei.[37] Im August 2017 kündigte Red Hat an, langfristig die Unterstützung von Btrfs in Red Hat Enterprise Linux (RHEL) einzustellen.[38] Anlass dafür seien Probleme des Dateisystems im Zusammenspiel mit Docker, sowie Anwenderbeschwerden, die nach Aussage von Mitentwicklern häufig aufwändige manuelle Korrekturen im Dateisystem erforderten.[39] Die zu dem Zeitpunkt aktuelle Version von RHEL nutzte allerdings den Linux-Kernel 3.10, der den Btrfs-Entwicklungsstand von 2013 widerspiegelt und von den Btrfs-Entwicklern nicht empfohlen wird.[40] Im gleichen Jahr kaufte RedHat die Firma Permabit und deren kommerzielle Daten-Deduplizierung.[41] 2017 kündigte RedHat die Ablöse von Btrfs aus RHEL an, entwickelte aber mit Stratis an einer eigenen Technik mit ähnlichen Fähigkeiten.[42] 2018 wurde in RHEL schließlich sowohl Btrfs als auch ZFS durch Stratis ersetzt.[43]

Siehe auch

Weblinks

Einzelnachweise

  1. a b c WinBtrfs: Readme (englisch) – GitHub, am 4. September 2017; zudem (wohl auch schon ab 2016) u. a. mit „WinBtrfs is a Windows driver for the next-generation Linux filesystem Btrfs. A reimplementation from scratch, it contains no code from the Linux kernel, and should work on any version from Windows 7 onwards.“ und It is also included as part of the free operating system ReactOS. (Übersetzung zum letzten Satz: „Es ist auch als Teil des […] Betriebssystems ReactOS enthalten.“)
  2. Valerie Aurora geb. Henson: A short history of btrfs. btrfs: Pre-history. In: LWN.net. 22. Juni 2009, abgerufen am 4. Oktober 2010 (englisch): „Rodeh’s btrees are different: […], he got rid of the links between leaves of the tree […]. (This is a fairly standard form of btrees in file systems, sometimes called 'B+trees'.)“
  3. A Conversation with Chris Mason on BTRfs: the next generation file system for Linux (Memento vom 25. Juni 2009 im Internet Archive)
  4. Der erste Buchstabe wird großgeschrieben.
  5. Valerie Henson: Chunkfs: Fast file system check and repair. (OGG) 2008, abgerufen am 5. Februar 2008 (106,8 MB, Laufzeit 18 Minuten, 49 Sekunden): „It's called Butter FS or B-tree FS, but all the cool kids say Butter FS“
  6. Jake Edge: CRFS and POHMELFS. In: LWN.net. Eklektix, Inc., 6. Februar 2008, abgerufen am 4. Oktober 2010 (englisch).
  7. a b Chris Mason: [ANNOUNCE] Btrfs: a copy on write, snapshotting FS. In: Linux Kernel Mailing List archive. 12. Juni 2007, abgerufen am 29. Mai 2010 (englisch).
  8. Experimentell: Freier Treiber für Btrfs-Filesystem unter WindowsHeise, am 22. Februar 2016.
  9. ReactOS 0.4.1 Released (englisch) – Reactos Project, am 17. Mai 2016; u. a. mit BTRFS support – Initial read and write support introduced via importing of the WinBtrfs driver.
  10. Andrew Morton: Status and Direction of Kernel Development. (PDF; 58 kB) (Nicht mehr online verfügbar.) 9. Juli 2008, ehemals im Original; abgerufen am 4. Oktober 2010 (englisch): „I am hoping that btrfs will save us. But as far as I know it is not getting as much external development support as it warrants – Merging btrfs into mainline might help here“
  11. Kernel-Log: Keine Unstable-Series, Linux 2008.7, Umgang mit Sicherheitskorrekturen. In: heise open. 16. Juli 2008, abgerufen am 4. Oktober 2010.
  12. Theodore Ts’o: Re: reiser4 for 2.6.27-rc1. (Nicht mehr online verfügbar.) In: Linux Kernel Mailing List archive. KernelTrap, 1. August 2008, archiviert vom Original am 3. September 2008; abgerufen am 16. Oktober 2010 (englisch).
  13. Michael Kofler: btrfs – Linux-Dateisystem der Zukunft – Arbeiten mit btrfs – Pro-Linux. In: pro-linux.de. 26. August 2010, abgerufen am 1. Oktober 2015.
  14. Thorsten Leemhuis: Kernel-Log – Was 3.9 bringt. In: heise.de. Heise Zeitschriften Verlag GmbH & Co. KG, 27. März 2013, abgerufen am 30. März 2013.
  15. Michael Larabel: Btrfs RAID 0/1/5/6/10 Five-Disk Benchmarks On Linux 4.1. phoronix, 29. Mai 2015, abgerufen am 29. Mai 2015.
  16. Ohad Rodeh: B-trees, Shadowing, and Clones. (PDF; 2,5 MB) 2008, abgerufen am 16. Oktober 2010 (englisch).
  17. Valerie Aurora: A short history of btrfs. In: LWN.net. 22. Juli 2009, abgerufen am 22. August 2009 (englisch).
  18. Jonathan Corbet: Btrfs merged for 2.6.29. In: lwn.net. 9. Januar 2009, abgerufen am 4. Oktober 2010 (englisch).
  19. OpenSUSE 11.3: Product highlights. 1.1 Support for the new Btrfs file system. (Nicht mehr online verfügbar.) In: openSUSE Wiki. Archiviert vom Original am 26. Juli 2010; abgerufen am 17. Juli 2010 (englisch): „openSUSE is the first distribution that lets you choose Btrfs in the installer.“
  20. Oliver Diedrich: Oracle Linux mit Btrfs. 14. März 2012, abgerufen am 14. März 2012.
  21. Mirko Dölle: MeeGo-Projekt wählt Btrfs zum Standard-Dateisystem. In: heise open. 12. Mai 2010, abgerufen am 4. Oktober 2010.
  22. SUSE: Release Notes for SUSE Linux Enterprise Server 12. In: suse.com. 16. April 2014, abgerufen am 16. April 2014 (englisch).
  23. Garuda Linux Website. Abgerufen am 29. September 2021 (englisch).
  24. Jörg Thoma: Neuerungen für Fedora 17 stehen fest. In: golem.de. 13. Dezember 2011, abgerufen am 9. Februar 2012.
  25. Thorsten Leemhuis: Fedora 19: MariaDB statt MySQL, aber kein Btrfs. In: heise.de. 31. Januar 2013, abgerufen am 31. Januar 2013.
  26. fedoraproject.org: 9.14.4. Create a Btrfs subvolume (englisch)
  27. Chris Murphy: Re: Btrfs in fedora 25-26. In: spinics.net. 8. September 2016, abgerufen am 23. September 2017.
  28. Ferdinand Thommes: Fedora 33 kommt mit Btrfs als Standard-Dateisystem. In: linuxnews.de. 16. Juli 2020, abgerufen am 21. August 2020.
  29. Btrfs Coming to Fedora 33. 24. August 2020, abgerufen am 8. September 2020 (amerikanisches Englisch).
  30. David Wolski: Linux-Distribution Fedora: Version 33 macht BTRFS zum Standard-Dateisystem. In: Heise online. 27. Oktober 2020. Abgerufen am 27. Oktober 2020.; Zitat: „Fedora 33 erscheint mit einem Paukenschlag: Die Entwickler der Linux-Distribution haben den Wechsel von EXT4 zu BTRFS als Standard-Dateisystem der Linux-Distribution beschlossen.“.
  31. golem.de: Red Hat beendet Unterstützung für Btrfs. In: golem.de. 2. August 2017, abgerufen am 1. August 2018.
  32. a b Martin Gerhard Loschwitz: Linux: Dateisystem Btrfs soll in Fedora 33 zur Vorgabe werden. In: Heise online. 25. August 2020. Abgerufen am 25. August 2020.; Zitat: „Nachdem das Dateisystem in RHEL 6 als "Technology Preview" ausgeliefert wurde, war damit in Version 8 schon wieder Schluss: Btrfs flog aus der Distribution. Aktuelle RHEL-Versionen liefern keinerlei Support mehr für Btrfs. … Wie das Red Hat-Team künftig mit der Fedora-Entscheidung umgeht und wie sich diese auf RHEL auswirkt, bleibt abzuwarten“.
  33. maharmstone: WinBtrfs. Contribute to maharmstone/btrfs development by creating an account on GitHub. 18. Dezember 2018, abgerufen am 18. Dezember 2018 (englisch).
  34. Edward Shishkin: Btrfs: broken file system design (was Unbound(?) internal fragmentation in Btrfs). In: Linux Kernel Mailing List archive. 18. Juni 2010, abgerufen am 31. Dezember 2010 (englisch).
  35. Edward Shishkin: Re: Balancing leaves when walking from top to down (was Btrfs:…). In: linux-btrfs. 30. Juni 2010, abgerufen am 8. Januar 2011 (englisch).
  36. FAQ. (Nicht mehr online verfügbar.) In: btrfs Wiki. 8. Januar 2011, archiviert vom Original am 20. Juli 2011; abgerufen am 8. Januar 2011 (englisch).
  37. FAQ. (Nicht mehr online verfügbar.) In: btrfs Wiki. Archiviert vom Original am 6. Oktober 2015; abgerufen am 17. November 2015 (englisch).
  38. RHEL 7.4: Red Hat beendet Unterstützung für Btrfs – Golem.de. (golem.de [abgerufen am 4. August 2017]).
  39. Red Hat wendet sich von Btrfs ab – Pro-Linux. In: Pro-Linux. (pro-linux.de [abgerufen am 4. August 2017]).
  40. Log in to Red Hat IDP. Abgerufen am 26. Juni 2018.
  41. Red Hat Acquires Permabit Assets, Eases Barriers to Cloud Portability with Data Deduplication Technology. Abgerufen am 26. Juni 2018.
  42. Swapnil Bhartiya: Red Hat to Drop Support for Btrfs. In: Linux Magazin. 8. August 2017, abgerufen am 6. März 2023 (englisch): „The company is building their own storage solution called Stratis.“
  43. Udo Seidel: Zwiebeltechnik – Datenträger mit Stratis einfach verwalten. In: iX. Heise, 2019, S. 56, abgerufen am 6. März 2023 (iX 1/2019, S. 56).