Dateisysteme von BSD, Solaris, Unix
Wie im Artikel über die Grundlagen von Dateisystemen ausgeführt, ist das Dateisystem ein unverzichtbarer Bestandteil jedes Betriebssystems. Und die meisten Betriebssysteme neigen dazu, ihre eigenen nativen Dateisystemformate zu verwenden, deren Unterstützung in anderen Umgebungen möglicherweise eingeschränkt oder nicht verfügbar ist. Apropos Unix-Familie: Dieses Betriebssystem und seine Varianten wie BSD und Solaris haben sich traditionell auf UFS verlassen, das später auf UFS2 aktualisiert wurde. Nach einer Weile entstand aus Solaris ein Dateisystem der nächsten Generation namens ZFS. Letzteres hat auch eine immense Popularität erlangt und auf andere Plattformen übertragen wurde. Hier finden Sie einen kurzen Überblick über diese beiden häufigsten Dateisystemtypen sowie ihre wichtigsten Besonderheiten und die damit verbundenen Speichertechnologien.
Beachten Sie bitte: Einige dieser Betriebssysteme bieten möglicherweise Lese-/Schreibunterstützung für andere Formate, z. B. FAT/FAT32 von Microsoft Windows und Ex2/Ext3/Ext3 von Linux, die in den entsprechenden Artikeln beschrieben werden.
UFS/UFS2
UFS (UNIX File System) stammt vom Berkeley Fast File System (FFS) ab, das von der Computer Science Research Group (CSRG) der University of California, Berkeley, entwickelt und 1983 zusammen mit der 4.2 BSD UNIX-Distribution veröffentlicht wurde. Die Arbeit an UFS ging weiter, und schließlich wurde es zum primären Format für Maschinen, auf denen BSD und andere Unix-Derivate laufen. Obwohl es in Bezug auf die Features eher altmodisch ist, bleibt UFS angesichts seiner hochstabilen Leistung derzeit das Dateisystem der Wahl.
Der Speicherplatz in UFS wird in Zylindergruppen unterteilt. Deren Standorte und weitere wichtige Serviceinformationen sind im Superblock verfügbar. Eine Datei in UFS wird durch einen einzelnen Deskriptor dargestellt, der als Inode bezeichnet wird, zusammen mit Datenblöcken, aus denen ihr Inhalt besteht. Jede Zylindergruppe verfolgt ihre freien Blöcke und Inodes unter Verwendung dedizierter Bitmaps.
Ein Inode enthält alle Attribute der Datei, mit Ausnahme ihres Namens. Er speichert auch die direkten Adressen ihrer ersten 12 Datenblöcke. Wenn es mehr Blöcke gibt, verweisen die nachfolgenden Adressen auf indirekte Blöcke, die direkte Blockadressen speichern. Ein Verzeichnis besteht hingegen aus Einträgen, die die Inode-Nummern den Namen der Dateien, die sich in dem gegebenen Verzeichnis befinden, zuordnen.
Obwohl UFS für jede Datei einen einzigen Inode erstellt, ermöglicht es das Speichern derselben Datei in mehreren Verzeichnissen und unter verschiedenen Namen. Solche Dateien teilen sich denselben Inode und werden als harte Links oder Hardlinks bezeichnet. In diesem Fall gibt der Inode die genaue Anzahl der Verweise darauf an.
Im Laufe der Jahre hat UFS viele Veränderungen durchlaufen. Im Jahr 2003 wurde UFS2 als Ersatz für das ursprüngliche UFS eingeführt und für den Einsatz auf Multiterabyte-Speichergeräten erweitert. Darüber hinaus haben viele Unix-Anbieter ihre eigenen Anpassungen von UFS erstellt. Beispielsweise hat Sun Microsystems Journaling zu seiner Version von UFS in Solaris 7 hinzugefügt. Dieses Dateisystem zeichnet alle Metadatenaktualisierungen in einem Protokoll auf, bevor es sie auf tatsächliche Strukturen anwendet, und gewährleistet so seinen Schutz vor Abstürzen, die während des Prozesses auftreten können.
Infolgedessen können erhebliche Unterschiede zwischen einzelnen UFS-Implementierungen bestehen. Aus diesem Grund ist die gesamte Dateisystemfamilie als UFS bekannt, aber viele ihrer Instanzen können an bestimmte Verwendungszwecke angepasst sein oder proprietäre Erweiterungen haben, die mit den Gegenstück-Varianten von Unix nicht kompatibel sind.
ZFS
ZFS (Zettabyte File System) wurde 2001 von Sun Microsystems als Teil des Solaris-Betriebssystems entwickelt. Im Jahr 2005 wurde es Open Source freigegeben und in andere Plattformen, einschließlich BSD, integriert. Nach der Übernahme von Sun durch die Oracle Corporation im Jahr 2010 wurde die Weiterentwicklung von ZFS proprietär. Aus diesem Grund wurde ein separates Projekt namens OpenZFS ins Leben gerufen, das die Open-Source-ZFS-Codebasis pflegt und diese der Öffentlichkeit außerhalb des Oracle-Ökosystems zur Verfügung stellt. Aufgrund eines Lizenzkonflikts konnte ZFS jedoch nicht direkt in den Linux-Kernel integriert werden, und die Initiative ZFSonLinux (ZoL) wurde gestartet, um dieses Problem anzugehen. All dies führte zur Existenz mehrerer unterschiedlicher "Zweige" von ZFS.
Insgesamt hat ZFS das Konzept dessen, was ein Dateisystem sein kann, radikal verändert. Es bietet native Volume-Management-Funktionen, ähnlich denen von RAID-basierten Technologien, zusammen mit vielen anderen einzigartigen Features.
ZFS kann mehrere Speichermedien integrieren. Ihre Ressourcen werden in einem einzigen gemeinsam genutzten Speicherpool kombiniert. Der Pool kann ein oder mehrere virtuelle Geräte enthalten, die als Vdevs bezeichnet werden. Jedes Vdev wird durch ein individuelles Label beschrieben, das auch seinen Uberblock enthält. Letzterer hat ähnliche Funktionen wie der Superblock in anderen Dateisystemen.
Die Speicherzuweisung erfolgt in Blöcken variabler Größe. Diese Blöcke werden als Objekte verschiedener Typen organisiert, wie Dateiobjekte und Verzeichnisobjekte. Eine spezielle Struktur namens Dnode zeichnet den Objekttyp und die Größe auf und zeigt auf Blöcke, die seinen Dateninhalt speichern. In einem Dnode können bis zu drei Blockzeiger vorhanden sein. Ein solcher Zeiger kann sich entweder auf einen Blattblock verweisen, der tatsächliche Daten speichert, oder auf einen indirekten Block, der wiederum auf einen anderen Block verweist.
Ähnliche Objekte werden zusammen gruppiert und bilden Objektsätze. Jedes Objekt in einem solchen Satz kann durch seine Nummer identifiziert werden. Die Sammlung von Dnodes, die sie beschreiben, wird auch als ein Objekt gespeichert, auf das durch einen speziellen Dnode – den Metadnode – verwiesen wird. Ein dedizierter Objektsatz namens Meta-Objektsatz speichert die Metadaten, die den gesamten Speicherpool charakterisieren.
ZFS verwendet außerdem den Copy-on-Write-Mechanismus. Es erstellt immer eine Kopie des zu ändernden Blocks, anstatt ihn direkt zu ersetzen. Nach Abschluss der Operation wird der Blockzeiger aktualisiert, um die Adresse des neu geschriebenen Blocks anzuzeigen, während die ursprüngliche Version unverändert bleibt.
Derzeit wird ZFS von Unternehmen und technisch versierten Einzelpersonen umfassend genutzt. Obwohl es einige Diskussionen über seine derzeitige Stabilität gibt, hat dieses Format ein enormes Potenzial, zur bevorzugten Wahl zu werden.
Hinweis: Informationen zur Wahrscheinlichkeit eines erfolgreichen Ergebnisses bei der Datenrettung von diesen Dateisystemen finden Sie in den Artikeln über betriebssystemspezifische Besonderheiten der Datenwiederherstellung und Chancen für die Datenrettung. Der Prozess selbst wird in der Anweisung zur Datenwiederherstellung auf Unix, Solaris und BSD beschrieben.
Andere Speichertechnologien der Unix-Betriebssystemfamilie
UFS/UFS2 ist ein traditionelles Dateisystem, das eher für einfachere Anwendungsfälle geeignet ist. Obwohl es hinsichtlich der grundlegenden Dateisystemfunktionalität eigenständig ist, verfügt es über keine erweiterten Speicherverwaltungsfunktionen und muss sich auf Frameworks auf Kernelebene oder externe Dienstprogramme verlassen, um kompliziertere Aufgaben wie RAID oder Verschlüsselung zu bewältigen. Im Gegensatz dazu ist ZFS ein Format der nächsten Generation, das ein Dateisystem und verschiedene Volume-Verwaltungsmechanismen in einem einzigen Paket kombiniert und dadurch externe Tools überflüssig macht.
Nachfolgend sind einige gängige Speichertechnologien aufgeführt, die diese Dateisysteme ergänzen können:
-
GEOM Framework – ein modulares Speicherframework, das in Verbindung mit UFS/UFS2 im FreeBSD-Betriebssystem verwendet werden kann und erweiterte Konfigurationen mit den Speichergeräten ermöglicht, auf denen sich dieses Dateisystem befindet. GEOM abstrahiert die Speichergeräte in virtuelle "Anbieter", die vom Dateisystem genutzt werden können. Ein solcher Anbieter kann durch ein einzelnes Laufwerk, mehrere in RAID 0 (Striping) oder RAID 1 (Spiegelung) organisierte Laufwerke oder ein verschlüsseltes Volume dargestellt werden.
-
zPool – eine zentrale Speicherkonstruktion in ZFS, die mehrere Geräte zu einer einzigen logischen Speichereinheit zusammenfasst und dabei die nativen Pooling-Funktionen dieses Dateisystems nutzt. In einem solchen Pool können die Daten ohne Redundanz auf die Laufwerke verteilt (ähnlich wie bei RAID 0), auf zwei oder mehr Laufwerke gespiegelt (ähnlich wie bei RAID 1) oder als RAID-Z, ein weiter unten beschriebenes fortgeschritteneres Setup, organisiert werden.
Hinweis: Verlassen Sie sich bitte auf die Anleitung, wenn Sie Daten von einem einfachen ZFS-Volume (striped oder gespiegelt) retten müssen.
-
RAID-Z – RAID-ähnliche Funktionalität, die in das ZFS-Dateisystem integriert ist, um die Speichereffizienz zu verbessern und Fehlertoleranz bereitzustellen. Die Daten im Pool werden in Chunks aufgeteilt und auf mehrere Festplatten geschrieben, wobei ein oder mehrere Paritätsblöcke für die Daten in diesen Chunks berechnet werden. Abhängig von der gewählten Konfiguration kann das Array einen einzelnen Paritätsblock zum Schutz vor dem Ausfall eines Laufwerks (RAID-Z1), zwei Paritätsblöcke zum Schutz vor dem Ausfall von zwei Laufwerken (RAID-Z2) oder drei Paritätsblöcke zum Schutz vor dem Ausfall von drei Laufwerken (RAID-Z3) verwenden.
Hinweis: Folgen Sie bitte dieser Anleitung, wenn Sie Daten auf ZFS RAID-Z wiederherstellen müssen.
-
ZFS-Verschlüsselung – eine in das ZFS-Dateisystem integrierte Verschlüsselungsfunktion. Sie ermöglicht die unabhängige Verschlüsselung jedes Datensatzes innerhalb eines ZFS-Pools und gewährleistet so die Sicherheit bestimmter Teile der gespeicherten Daten.
Wenn Sie mehr über die für andere Umgebungen typischen Dateisysteme erfahren möchten, lesen Sie bitte die folgenden Artikel:
-
Die Dateisysteme von Windows: FAT/FAT32, exFAT, NTFS, ReFS, HPFS
-
Die Dateisysteme von Linux: Ext2, Ext3, Ext4, XFS, Btrfs, F2FS, JFS, ReiserFS
Letzte Aktualisierung: 14. November 2024