Go to Top

Unix und Linux: Datenrettung erklärt – Teil 1

Linux / Unix

Unix und Linux: Die Dateisysteme

Zunächst einmal, was ist UNIX?

UNIX ist ein Multi-Anwender multitasking Betriebssystem, das zunächst von AT&T Bell Lab in den sechziger Jahren des letzten Jahrhunderts entwickelt wurde. Die Mehrheit der UNIX-Betriebssysteme sind in der C-Programmiersprache geschrieben und sind deshalb in der Lage auf einer Vielzahl von Computer-Architekturen ausgeführt zu werden. Hardware-Anbieter wie SCO, SGI, IBM, Hewlett Packard und Sun stellen jeweils ihre eigenen UNIX-Versionen bereit, die auf ihren High-End-Systemen laufen.

Linux erklärt

Linux, manchmal auch GNU / Linux genannt, ist ein kostenloses Open-Source-Unix-ähnliches Betriebssystem. Das GNU-Projekt begann im Jahr 1984 mit dem Ziel, eine freie Version von Unix zu erschaffen. Dem Projekt fehlte jedoch bis zum Jahr 1991 ein voll funktionsfähiger Kernel, als ein Drittanbieter-Kernel namens Linux von Linus Torvalds veröffentlicht wurde. Der Linux-Kernel wird in der Regel in Kombination mit verschiedenen Paketen aus dem GNU-Projekt und anderen Quellen veröffentlicht.

Ihre Dateisysteme kennen lernen

Das Fast File-System, EXT 2 & 3

Das EXT2-Dateisystem (manchmal auch als das zweite erweiterte Dateisystem bekannt) wurde ursprünglich für die Linux-Plattform entwickelt und 1993 veröffentlicht. Es wurde von dem EXT3-Dateisystem abgelöst, das ein paar Funktionen hinzugefügt hat das bemerkenswerteste darunter das Journal. EXT3 ist derzeit das Standard-Dateisystem für die meisten populären Linux-Distributionen.

Wie bei vielen anderen UNIX-Dateisystemen ist die grundlegende Struktur sehr ähnlich zu der des ursprünglichen UNIX Fast File-Systems (FFS). Die Partition ist aufgeteilt in Cylinder Groups und ursprünglich enthält jede dieser Gruppen einen Superblock, eine Gruppe Tabelle, Daten Bitmap, Inode Bitmap, Inodes und schließlich die Daten. Allerdings haben die neueren EXT2 und EXT3 Dateisysteme sogenannte Sparse Cylinder Groups die nur noch Inodes und Daten enthalten.
UNIX-Dateisystem 

Die EXT2 & 3-Dateisysteme haben eine feste Anzahl von Inodes und diese werden auf der Partition durch die Superblocks und Gruppentabellen abgebildet. Diese Inodes werden verwendet, um sowohl Dateien und Verzeichnisse zu repräsentieren als auch zu enthalten:

  • Dateityp
    • Zugangsrechte
    • Eigentümer
    • Zeitstempel
    • Größe
    • Datenblockzeiger/Data Block Pointers

UNIX-Dateisystem

Wie Sie im obigen Bild sehen können, sind die Datenblockzeiger der Teil der Inodes, der Dateidaten auf dem Laufwerk adressieren.

Die ersten zwölf zeigen auf die physikalischen Blöcke, die Daten enthalten, die letzten drei jedoch weisen indirekt auf die Datenblöcke hin (Einzel-, Doppel- und Dreier-Indirekte). Der einzelne indirekte Pointer enthält die Adresse eines Blocks von direkten Zeigern – wie im obrigen Diagramm dargestellt – während der Doppelte indirekte Zeiger auf einen Block mit einzelnen indirekten Zeigern zeigt und logischerweise der Dreifache (Triple) indirekte Pointer auf Blöcke mit doppelten indirekten Pointern zeigt. Es ist schwierig, das visuell zu veranschaulichen, aber im Grunde bedeutet es, dass jeder indirekte Pointer-Schritt dazu führt, dass die Datenmenge sich exponentiell erhöht. Es ist außerdem erwähnenswert, dass die Wiederherstellung von EXT3 sehr schwierig ist und die Ergebnisse in der Regel nicht so gut sind wie bei anderen Dateisystemen.

Bei EXT4 bleibt die Datenstruktur sehr ähnlich zu der von EXT3. Der wesentliche Unterschied besteht darin, dass die sogenannten Extents, die direkten und indirekten Datenblockanzeiger ersetzt haben und damit die Leistung bei großen Dateien signifikant erhöhen. Wenn Daten in EXT4 gelöscht werden, wird die Wiederherstellung oftmals erfolgreicher, da die Extents selber nicht gelöscht werden und dadurch die Möglichkeit besteht die verlorengegangene Datei wiederherstellen zu können.

XFS

XFS wurde ursprünglich von SGI im Jahre 1993 entwickelt, um die Leistungs- und Skalierungseinschränkung von FFS zu überwinden. Es wurde erstmals im Jahr 1994 mit IRIX v5.3 veröffentlicht, im Jahr 2000 hatte SGI den Code als Open Source freigegeben und wurde dann in den Linux-Kernel ab 2003 offiziell aufgenommen. Die XFS Struktur ist auf dem ersten Blick sehr ähnlich zu dem von FFS.

XFS hält das Zylindergruppen-System mit dem Aufteilen der Partitionen bei, aber benennt diese Allocation Groups (Zuordnungsgruppen). Zudem besitzt es ebenfalls die Superblöcke und nutzt Inodes, um die Metadaten-Informationen zu speichern. Hier allerdings enden die Gemeinsamkeiten.

Im Gegensatz zu FFS hat das Dateisystem keine feste Anzahl von Inodes, die dem Laufwerk zugeordnet sind. Stattdessen ist es die Aufgabe jeder Allocation Group (Zuordnungsgruppe) freien Speicherpatz zu überwachen und Inodes so dynamisch zuzuweisen, wie es vom Dateisystem benötigt wird. Diese Inodes werden in einer ausgewogenen B+ Baumstruktur organisiert, die die Verzeichnisstruktur wesentlich schneller macht, als das traditionelle Listensystem, wie es in FFS implementiert wurde. XFS Inodes verwenden auch Extents (sogenannte „Lauflisten“/Run lists), um Daten zu adressieren, statt individuelle Datenblöcke wie bei FFS anzusprechen, da das in der Regel zu einer besseren Skalierung bei großen Daten führt.

XFS enthält auch ein Journal, um im Falle eines Systemcrashs oder Stromausfalls eine Wiederherstellung des Systems zu bieten. Allerdings zeichnet das XFS Journal nur die Metadaten des Dateisystems auf, was dazu führt, dass nur das Volumen repariert und gemountet werden kann und es trotzdem zu Datenverlust kommt.

Ein weiteres Merkmal von XFS ist eine zeitverzögerte Zuweisung, eine Methode bei der die Blöcke für die Daten zugewiesen werden, während die Daten im Cache gespeichert werden. Diese Daten werden nur dann tatsächlich in das Dateisystem geschrieben, wenn der Cache-Speicher durch das Betriebssystem geleert wird. Der wichtigste Vorteil dieses Ansatzes ist, dass es oft dramatisch die Fragmentierung reduziert. Das ist besonders bei Dateien von Vorteil, die nur langsam größer werden und reduziert oftmals zusätzlich auch die Auslastung des CPU.

Im nächsten Teil dieses Artikels werden wir noch weiter die Linux / Unix-Dateisystem beleuchten, erklären die Unterschiede zwischen Datenrettung von diesen Systemen und den mehr gängigen wie Windows und MAC. Wir sehen uns nächste Woche

Titelbildquelle: eckwe/pixelio.de