2388408

Linux-Dateisysteme für Fortgeschrittene

14.11.2018 | 15:06 Uhr |

Linux bietet von Haus aus etliche Dateisysteme für unterschiedliche Einsatzzwecke an. Während Ext4 den Anspruch erhebt, ein universelles Dateisystem zu sein, gibt es mit ZFS, F2FS und BTRFS interessante Alternativen für Spezialaufgaben.

Nicht nur ein, zwei, drei Dateisysteme sind zur Formatierung von Datenträgern unter Linux vorgesehen. Es gibt ein ganzes Arsenal an bewährten und über Jahrzehnte beständig weiterentwickelten Dateisystemen. Für Einsteiger und Anwender ohne speziellen Anspruch ist Ext 4 als universeller Alleskönner für die Partitionen eines Linux-Systems empfehlenswert, egal ob SSD oder mechanische Festplatte. Es liefert auch auf Systemen mit schwacher CPU eine gute Leistung. Mit seinem Journal erledigt Ext4 Dateisystem-Checks flott und ist damit ein guter Allrounder für Desktop-PCs, Notebooks und Server. Daneben gibt es aber Alternativen, die je nach angepeiltem Einsatzzweck eines Linux-Systems und der erwarteten Last die Leistung deutlich verbessern können oder die Administration großer Speichersysteme erheblich vereinfachen.

ZFS: Für Server- und Storageaufgaben

Ursprünglich hat Sun Microsystems das Dateisystem ZFS als „Zettabyte Filesystem“ von 2001 bis 2006 für das hauseigene Unix-System Solaris entwickelt. Die Entwicklung beachtete nicht nur alle damals zeitgemäßen Anforderungen an Dateisysteme für Server und Großrechner, sondern plante gleich weit voraus: Tatsächlich könnte ZFS mit seiner 128-Bit-Adressierung sage und schreibe 256 Billiarden Zettabyte speichern – eine theoretische Datenmenge, zu deren Verarbeitung die Energiereserven der Erde nicht ausreichen würden. Die Entwickler von Sun Microsystems stellten ZFS deshalb unter das Motto „das letzte Wort in Sachen Dateisystemen“ und auch der Buchstabe „Z“ ist als letzter Buchstabe im Alphabet eine Anspielung auf diesen Anspruch.

Superlative sind dabei noch nicht alles: ZFS kombiniert das Speichersystem mit einem eigenen Volumenmanager zur Verwaltung der physischen Speichereinheiten in einem Pool mit einem integrierten Software-Raid und kann sogar selbst SMB- und NFS-Shares bereitstellen. Schreiboperationen erfolgen stets nach dem Copy-on-Write-Verfahren, das nur geänderte Blöcke an einen freien Platz auf die Datenträger schreibt.

Nach der Installation des ZFS-Pakets lädt Ubuntu ab Version 16.04 beim Systemstart automatisch das benötigte Modul zum Zugriff auf ZFS-Dateisysteme.
Vergrößern Nach der Installation des ZFS-Pakets lädt Ubuntu ab Version 16.04 beim Systemstart automatisch das benötigte Modul zum Zugriff auf ZFS-Dateisysteme.

Daraus ergeben sich zwei weitere Vorteile: Deduplizierung speichert identische Daten nur einmal und Snapshots erstellen auf Wunsch Abbilder lokaler Backups zur Versionsverwaltung. Zudem gibt es zur Fehlerüberprüfung eine Checksummenüberprüfung gelesener Daten und die Möglichkeit, mehrere Festplatten zu einem Raid 5 zusammenzufassen, das bei ZFS jedoch wegen Detailunterschieden Raid Z heißt.

Nachdem der Konzern Oracle vor sechs Jahren SUN Microsystems übernahm, wäre ZFS beinahe dem Schicksal vieler Geniestreiche der IT anheimgefallen – seiner Zeit zwar weit voraus, aber mangels Verbreitung zum Schattendasein verdammt. Dazu kam es aber nicht, denn Sun Microsystems veröffentlichte ZFS unter einer Open-Source-Lizenz, der CDDL. Die ist zwar wegen enthaltener Patentklauseln nicht kompatibel zur GNU Public License (GPL) von Linux, jedoch zur BSD-Lizenz. Das Open-Source-Betriebssystem Free BSD konnte deshalb ZFS bereits einpflegen, ohne dass Oracle dies hätte verhindern können, denn der CDDL lässt sich nicht rückwirkend für bereits veröffentlichten Programmcode zurückziehen. Linux stand dagegen lange abseits, denn der ZFS-Code darf nicht einfach in den Kernel-Quellcode aufgenommen werden, da dieser streng unter der GPL steht. Allerdings entwickelte das renommierte Lawrence Livermore National Laboratory auf eigene Faust das native Linux-Kernelmodul „ZFS on Linux“ ( http://zfsonlinux.org ).

Blick auf den ZFS-Pool: Hier haben wir eine kleine ZFS-Partition auf „/dev/sdb“ erstellt und ihr die Bezeichnung „dateien“ gegeben. Sie wird automatisch ins Verzeichnis „/dateien“ eingehängt.
Vergrößern Blick auf den ZFS-Pool: Hier haben wir eine kleine ZFS-Partition auf „/dev/sdb“ erstellt und ihr die Bezeichnung „dateien“ gegeben. Sie wird automatisch ins Verzeichnis „/dateien“ eingehängt.

Einrichtung und Verwendung: Das externe Kernel-Modul von „ZFS on Linux“ muss mit jeder Kernel-Version neu kompiliert werden oder in binärer Form gleich passend zum neuen Kernel vorliegen. Gerade bei Dateisystemen ist das Ändern der Kernel-Version nicht ganz ohne Risiko. Denn falls die Kompilierung einmal fehlschlägt, startet das System ohne Zugriff auf diese Datenträger. Canonical hat deshalb ab Ubuntu 16.04 damit begonnen, ein stets aktuelles ZFS-Modul in binärer Form mit auszuliefern. Ubuntu ist deshalb das empfehlenswerte und bisher auch einzige Linux-System, das die Verwendung von ZFS einfach macht. Installiert werden die Dateisystemtools dort mit diesem Kommando:

sudo apt-get install zfsutils-linux

Jetzt kann man damit beginnen, ZFS-Speicherpools anzulegen. Dies ist mit dem folgenden Befehl

sudo zpool create -f dateien /dev/sdb

möglich, der in diesem Beispiel den Pool „dateien“ auf dem Laufwerk „/dev/sdb“ anlegt. Alle Pools listet das Kommando

sudo zpool list

auf. Das System wird den Pool automatisch in das Verzeichnis „/dateien“ einhängen. Das ist aber auf Wunsch schnell geändert, denn der Befehl

sudo zfs set mountpoint=/mnt/dateien files

ändert den Einhängepunkt nach „/mnt/ dateien“.

Steckbrief: ZFS

Webseite: http://zfsonlinux.org
Entwickler: ursprünglich Sun Microsystems, heute Oracle
Einsatzzweck: Server, NAS-Systeme, Storagesysteme
Besonderheiten: hohe Ansprüche an die Hardware, acht GB Speicher und mehr sind empfehlenswert

F2FS: Ideal für Flashspeicher

F2FS – „Flash-Friendly File System“ – ist speziell auf die Eigenheiten von Flash-NAND-Speicher wie SD-Karten, SSDs und eMMC-Speicherchips von mobilen Geräten optimiert. Es orientiert sich an logstrukturierten Dateisystemen, die sich von Haus aus gut für Flashspeicher mit NAND-Chips eignen. Die Entwicklung des Dateisystems findet bei Samsung statt und der Elektronikkonzern hat es von Anfang an als Open-Source-Projekt aufgestellt. Der Code wird in Abstimmung mit den Linux-Kernel-Entwicklern gepflegt, damit die Fortschritte zügig in den Hauptzweig des Kernels kommen und damit auch zu Android.

Die heute üblichen Flash-NAND-Speicher SSDs arbeiten mit Feldeffektransistoren (Speicherzellen), die in Zeilen und Spalten angeordnet sind. Für Massenspeicher bietet sich eine Schaltung nach NAND (von „NOT AND“) als Logikgatter an, da dieser logische Aufbau mit wenig Datenleitungen auskommt. MLC-Speicherzellen, die über verschiedene Spannungen mehr als ein Bit pro Zelle speichern können, haben eine deutlich begrenzte Lebensdauer von rund 10 000 Schreibzyklen. Das macht eine gleichmäßige Verteilung (Wear-Leveling) der Schreibvorgänge über den gesamten Flashspeicher nötig. Spezielle Flash-Dateisysteme wie JFFS, YAFFS und Log FS ziehen diese Eigenschaften in Betracht und arbeiten als logstrukturiertes Dateisystem. Daten schreiben sie ähnlich eines zyklischen Logbuchs sequentiell auf den Flashspeicher und stellen damit eine gleichmäßige Nutzung aller Zellen sicher.

F2FS-Partitionen mit Gparted erstellen: Der Partitionierer kann nach der Installation mit den F2FS-Tools ganz komfortabel USB-Sticks und Speicherkarten mit F2FS formatieren.
Vergrößern F2FS-Partitionen mit Gparted erstellen: Der Partitionierer kann nach der Installation mit den F2FS-Tools ganz komfortabel USB-Sticks und Speicherkarten mit F2FS formatieren.

Diese Dateisysteme sind Exoten, da sie einen ungünstigen Nebeneffekt haben: Daten und Metadaten landen sequentiell in mehreren Versionen auf dem Speichermedium und es ist die Aufgabe einer aufwendigen, langsamen Garbage Collection, veraltete und gelöschte Daten aus dem Log zu entfernen. Zudem sollen Flashmedien ja auch mit konventionellen Dateisystemen wie FAT, NTFS und Ext3/4 funktionieren, ohne dabei schnell kaputtzugehen. Deshalb bekommen Flash-Massenspeicher von ihrem Controller eine Abstraktionsschicht, den Flash Translation Layer (FTL). Diese Schicht erlaubt keinen direkten Zugriff auf Flashzellen, sondern übersetzt alle Schreib- und Leseaktionen, damit das Medium nach außen einer mechanischen Festplatte gleicht.

F2FS ist ein Mittelweg und Kompromiss: Es strukturiert Daten für Schreibvorgänge wie ein logstrukturiertes Dateisystem in möglichst lange, sequentielle Serien, überlässt aber dem FTL die weitere Arbeit. Da der Controller von Flashlaufwerken mehrere Schreiboperationen gleichzeitig verarbeiten kann, erzeugt F2FS bis zu sechs simultane Datenströme. Und schließlich gruppiert F2FS Daten mit kurzer Lebensdauer (Dateien) und langer Vorhaltezeit (Superblock, Index, Dateisystem-Informationen). Diese Gruppierung entlastet die interne Garbage Collection des Controllers. Der Bereich für Metadaten ist bei F2FS nicht als logstrukturiertes Dateisystem angelegt, da hier nur kleine, zufällig verteilte Änderungen erfolgen, die der FTL besser managen kann. Wenn das Speichermedium voll wird, verzichtet F2FS außerdem auf eine Gruppierung der Datenströme und geht zu zufälligen Schreiboperationen über (Random Writes), da auch in dieser Situation der FTL schneller freie Bereiche findet. F2FS unterstützt Partitionsgrößen bis 16 TB.

Einrichtung und Verwendung: Seit dem Kernel 3.8 ist F2FS eine Option in den meisten Linux-Distributionen. In Ubuntu und Debian (Debian ab Version 8) installiert das Kommando

sudo apt-get install f2fs-tools

die benötigten F2FS-Tools. Anschließend kann man in der Shell mit dem Tool mkfs. f2fs eine neue F2FS-Partition in einem freien Bereich auf einem Flashdatenträger anlegen. So beispielsweise auf /dev/sdb4 mit dem Partitionslabel „[Name]“.

sudo mkfs.f2fs -l [Name] /dev/sdb4

Über den Dateimanager oder mit dem Mount-Befehl kann man die neue Partition wie gewohnt in ein Zielverzeichnis einhängen und verwenden:

sudo mount /dev/sdb4 [Zielverzeichnis]

Für Partitionen auf SSDs, die beim Booten des Systems eingehängt werden sollen, ist dagegen ein Eintrag in der Konfigurationsdatei „/etc/fstab“ nach dem Schema nötig:

/dev/sdb4 /mnt/ziel f2fs defaults,noatime,discard 0 0

Beim Beschreiben des F2FS-Datenträgers ist immer auf Zugriffsberechtigungen zu achten. Denn F2FS verhält sich auch auf externen USB-Datenträgern wie ein Unix-Dateisystem und nicht wie ein DOS-Dateisystem wie FAT/FAT32.

Steckbrief: F2FS

Webseite: https://f2fs.wiki.kernel.org
Entwickler: Samsung
Einsatzzweck: Flashspeicher aller Art (SSDs, USB-Sticks, SD-Karten)
Besonderheiten: Auf Flashspeichern deutlich schneller als Dateisysteme, die ursprünglich für magnetische Speicher entwickelt wurden

BTRFS: Der verhinderte Standard

Rund zehn Jahre dauert es in der Kernel-Entwicklung üblicherweise, bis ein Dateisystem von den ersten Konzepten die Reife für den produktiven Betrieb erreicht. BTRFS war sogar noch länger in der Entwicklungsphase und ging mit dem Anspruch an den Start, Ext3/4 als neues Standarddateisystem für Linux-Distributionen abzulösen. Daraus wurde aufgrund der überdurchschnittlich zahlreichen anfänglichen Bugs und der zähen Entwicklung erst mal nichts. Vom Thron konnte BTRFS das bewährte Ext3/4 daher noch nicht stoßen.

BTRFS-Datenträger erstellen: Distributionen wie Fedora und Open Suse Leap bringen die Werkzeuge für BTRFS bereits mit, in Ubuntu und Co. müssen sie nachinstalliert werden.
Vergrößern BTRFS-Datenträger erstellen: Distributionen wie Fedora und Open Suse Leap bringen die Werkzeuge für BTRFS bereits mit, in Ubuntu und Co. müssen sie nachinstalliert werden.

BTRFS – auch „Better FS“ – ist eigentlich die Abkürzung für B-Tree-Filesystem und bezieht sich auf die Organisation der Daten in sogenannte B-Trees, die übrigens auch bei Ext4 zum Einsatz kommen. BTRFS arbeitet nach dem Prinzip „Copy on Write“ (COW) und schreibt alle neuen Blöcke zunächst in den freien Speicherbereich, ohne dabei die ursprünglichen Daten zu verändern. Das bietet Geschwindigkeitsvorteile und ermöglicht zudem das Anlegen von Snapshots. Diese sichern den Zustand des Dateisystems und dienen dazu, zu einer vorherigen Version einer Datei zurückzukehren. Diese Fähigkeiten macht sich Open Suse Leap bereits seit einigen Versionen zunutze und hat zur Verwaltung von Snapshots auf Dateisystemebene das Tool Snapper mit an Bord. Ein zentraler Punkt bei der Partitionierung mit BTRFS sind Subvolumes – dies sind dynamische Partitionen innerhalb einer Partition und dienen zur logischen Aufteilung eines Datenträgers.

BTRFS sollte eigentlich direkt die Zusammenfassung mehrerer Datenträger zu einem Raid-Verbund unterstützen und kann Raid 0, 1, 5 und 6. Ausgerechnet mit dieser Funktion gab es aber erhebliche Probleme, die zu Datenverlust führen können. Das war es auch der unglückliche Umstand, der BTRFS vorerst den Status als zukünftiger Standard gekostet hat.

Zentrales Tool für BTRFS: Nahezu alle Aktionen zur Verwaltung von BTRFS-Laufwerken lassen sich mit dem Programm btrfs ausführen, hier beispielsweise ein Datenträger-Check.
Vergrößern Zentrales Tool für BTRFS: Nahezu alle Aktionen zur Verwaltung von BTRFS-Laufwerken lassen sich mit dem Programm btrfs ausführen, hier beispielsweise ein Datenträger-Check.

BTRFS gilt dennoch stabil genug für den produktiven Einsatz, befindet sich aber noch in der Entwicklung und einige Funktionen wie Autodefragmentierung, Raid 5 und 6 sowie interne Kompression gelten weiterhin als experimentell. Diese Funktionen sind in Distributionen deshalb vorerst deaktiviert und werden wohl erst in den nächsten Jahren Schritt für Schritt zum Dateisystem hinzukommen, wenn die letzten Bugs ausgeräumt sind.

Einrichtung und Verwendung: Im Kernel ist BTRFS schon seit fast zehn Jahren vertreten, allerdings weiterhin mit einem reduzierten Funktionsumfang. Um ein sorgfältig eingerichtetes Linux-System mit BTRFS als primäres Dateisystem in Aktion zu sehen, ist Open Suse Leap 15 empfehlenswert ( https://www.opensuse.org ). Als einzige große Linux-Distribution haben sich die Macher des Systems für BTRFS als Standard entschieden und der Installer richtet ein Partitionsschema mit diversen BTRFS-Subvolumes ein.

Fortgeschrittene BTRFS-Fähigkeiten: Open Suse Leap zeigt eindrucksvoll die Snapshotfunktion von BTRFS, das hier als Standarddateisystem dient. Die Funktion ist bereits in Yast integriert.
Vergrößern Fortgeschrittene BTRFS-Fähigkeiten: Open Suse Leap zeigt eindrucksvoll die Snapshotfunktion von BTRFS, das hier als Standarddateisystem dient. Die Funktion ist bereits in Yast integriert.

Unter Ubuntu/Debian sind die BTRFS-Werkzeuge nachträglich mit

sudo apt install btrfs-tools

zu installieren. Der Befehl zum Anlegen eines BTRFS-Dateisystems auf einem Datenträger, in diesem Beispiel auf „/dev/sdb“, lautet dann so:

sudo mkfs.btrfs -f /dev/sdb

„/dev/sdb“ und eventuelle Partitionen müssen dazu ausgehängt sein. Die weitere Administration erfolgt über das Kommandozeilentool btrfs, das seine Optionen nach sudo btrfs anzeigt. Der Befehl

sudo btrfs check -p [Dateisystem]

führt beispielsweise einen Dateisystem-Check aus.

Steckbrief: BTRFS

Webseite: https://btrfs.wiki.kernel.org
Entwickler: Linux Foundation und Mitglieder
Einsatzzweck: Linux-Desktop
Besonderheiten: Die interne Snapshot-Funktion kann mehrere Zustände einer Partition sichern.

Lesetipp Pannen & Lösungen für typische Linux-Probleme

Fragmentierung: Kaum ein Problem unter Linux

Wer von Windows auf Linux umgestiegen ist, wird sich noch an die Defragmentierung erinnern, die für viele Windows-Anwender immer noch den Charakter einer zeremoniellen Entspannungsübung hat. Die Fragmentierung von Dateien ist bei Linux-Dateisystemen ein weit geringeres Problem als bei FAT32 und NTFS. Die unter Linux gebräuchlichen Dateisysteme Ext4 und das neue BTRFS verfügen selbst über Mechanismen, die Dateifragmentierung gering zu halten.

So schreibt Ext4 Dateien nicht einfach in den nächsten freien Block, sondern arbeitet mit größeren zusammenhängenden Blockgruppen (Extends), die es einer Datei erlauben, in mehreren getrennten Schreibvorgängen ohne Fragmentierung anzuwachsen. BTRFS ist wegen seiner Copy-on-Write-Arbeitsweise anfälliger für Fragmentierung und begegnet dem Problem mit einer automatischen Defragmentierung, die sich derzeit noch in der Erprobung befindet.

PC-WELT Marktplatz

0 Kommentare zu diesem Artikel
2388408