Das Dateisystem eines Computers ist der Schlüssel zum Verarbeiten unserer Dateien. Und zwar in der Art und Weise, dass sie vernünftig gelagert und leicht auffindbar sind. Gleichzeitig kann das jeweilige Dateisystem auch der Schlüssel zum Finden verlorengegangener Dateien bei einem Datenverlust sein. In diesem Artikel möchte ich das aktuelle Resilient File System (ReFS) unter Windows Server 2012 und seine Vor- und Nachteile beschreiben sowie aufzeigen, wo dieses System am besten eingesetzt werden sollte.
Das erste Dateisystem
Das erste dokumentierte Dateisystem ist das „Electronic Recording Machine Accounting (ERMA) Mark 1, ein hierarchisches Dateisystem, das auf der Easter Joint Computer Konferenz 1958 von Barnard und Fein vorgestellt wurde. In ihrem Abstract mit dem Titel “Organization and Retrieval of Records Generated in a Large-Scale Engineering Project” beschreiben die beiden, wie sie zu der Idee und der Struktur des Dateisystems kamen. Dabei zeigen sie in diesem Papier, welche Ausgangssituation es zu verbessern galt, die letztendlich zur Entwicklung einer neuartigen Datenstruktur führte. Grundsätzlich versucht dieses Dateisystem die Ineffizienz und die Fehler zu reduzieren, die bei einem Fehlen eines organisierten Systems entstehen.
Die Grundidee des Systems war es, mehr und genauere Informationen in einer schnelleren und effizienteren Art und Weise für den Anwender bereitzustellen. Unnötig zu erwähnen, dass die Anforderungen an ein Dateisystem seit 1958 und im Zeitalter von Big Data deutlich angestiegen sind.
Eine Einführung in das Resilient File System (ReFS)
Das Resilient File System (ReFS) ist ein Dateisystem, das für den Einsatz in Windows Server 2012 entwickelt wurde. Sein Vorgänger, das New Technology File System (NTFS) - Dateisystem, war das Standard-Dateisystem seit den frühen neunziger Jahren (technisch gesehen seit der Einführung in Windows NT 3.51 bei Servern und Windows 2000 bei Desktop-PCs) und ist seitdem immer noch im Einsatz. ReFS ist immer noch ein optional vom Kunden zu wählendes und zu verwendendes Dateisystem, aber Microsoft plant in den kommenden Windows-Versionen NTFS durch ReFS zu ersetzen.
ReFS wurde für den Einsatz in Computersystemen mit großen Datenmengen ausgelegt, wodurch Wert auf eine effizientere Skalierbarkeit und Verfügbarkeit der Daten im Vergleich zu NTFS gelegt wurde. Der Schutz der Datenintegrität war eine der wichtigsten neuen Funktionen, die dem System hinzugefügt wurden, sodass wichtige geschäftskritische Daten bei typischen Hardwarefehlern, die zu Datenverlust führen, besser geschützt sind. Wenn ein Systemfehler auftritt, kann ReFS den Fehler identifizieren und rückgängig machen und das ohne das Risiko eines bleibenden Datenverlusts oder einer Beeinträchtigung des Zugriffs auf das entsprechende Laufwerk. Die Alterung der eingesetzten Speichermedien ist ein weiteres Thema, das auf dieser Ebene ebenfalls angegangen wurde, um Datenverlust zu verhindern, wenn zum Beispiel eine Festplatte verschleißt.
Wesentliche Elemente von ReFS
1. Allocate on Write/ Schreibzuweisung
Der Grund für den Einsatz ReFS kann davon abhängig sein, wie viele Daten in der Firma verwaltet werden. Diese Art von Dateisystem wird aufgrund seiner Unterschiede zu NTFS normalerweise für sehr große Datenmengen verwendet. Beispielsweise kann Datenkorruption durch die Schreibzuweisung/Allocate on Write Technik verhindert werden. Dafür sorgt der Einsatz von Thin Provisioning, bei dem Klone der Quelldatenbank von mehreren Zeitpunkten erzeugt werden – und das ohne zusätzlichen Speicherplatz-Verbrauch. Dadurch wird Daten-Korruption bei sogenannten In-Place-Fehlern – also beim Verändern von Datei-Inhalten durch automatischen Datenabgleich/-veränderung, Updates etc. – vermieden.
Im Vergleich dazu nutzt NTFS ein Transaktions-Journal, dass die Metadaten ständig „in-place“ aktualisiert, um so die Festplatten-Konsistenz zu erhalten. Das Journal kann im Falle eines Datenverlusts dazu verwendet werden, um zu dem Zeitpunkt des Fehlers zurückzukehren und eine Wiederherstellung durchzuführen. Wenn es jedoch beim Aktualisieren der Festplatten-Inhalte zu einem Stromausfall kommt, können die Metadaten korrupt werden – dies bezeichnet man als sogenannten „torn write“, einen „abgerissenen Schreibvorgang“. Einen abgerissenen Schreibvorgang kann man als einen Vorfall beschreiben, wenn nur ein Teil des Blocks geschrieben wurde und deshalb einige Sektoren verloren gingen.
ReFS versucht abgerissene Schreibvorgänge dadurch zu beseitigen, indem es die Allocate Write Methode einsetzt. Dabei werden nicht die Metadaten-Inhalte ständig geändert, sondern Schreibvorgänge basieren auf der sogenannten Atomic Operation. Das bedeutet, dass der Auslese- und der Schreibvorgang in einem einzigen Befehl gebündelt ist. Durch den Einsatz eines Check-Sum-Vergleichsfunktion stellt das System sicher, dass alle Daten, die geschrieben und gespeichert werden, korrekt und zuverlässig sind sowie ob Festplatten-Korruption festzustellen ist. Check-Sum wird in diesem Fall somit dazu verwendet, um festzustellen, ob Daten seit dem letzten Schreibzugriff auf der Festplatte verändert wurden.
2. B+ trees / B+ Bäume
Die ReFS-Kapazität ermöglicht eine große Skalierbarkeit. Wie man aus der untenstehenden Tabelle ersehen kann, gibt es keine Grenze für die Datei- und Ordnergrößen. Das bedeutet einen deutlichen Vorteil bei der Arbeit mit großen Datensätzen.
Attribute |
Vom Datenträgerformat abhängige Grenze |
Maximale Größe einer einzelnen Datei |
2^64-1 bytes |
Maximale Größe eines einzelnen Volumes |
Das Format unterstützt 2^78 bytes mit einer Clustergröße von 16KB (2^64 * 16 * 2^10). Die Stapeladressierung von Windows lässt 2^64 bytes zu |
Maximale Anzahl von Daten in einem Verzeichnis |
2^64 |
Maximale Anzahl von Verzeichnissen in einem Volume |
2^64 |
Maximale Länge des Dateinamens |
32K Unicode-Zeichen |
Maximale Pfadlänge |
32K |
Maximale Größe eines beliebigen Speicherpools |
4 PB |
Maximale Anzahl von Speicherpools in einem System |
Unbegrenzt |
Maximale Anzahl von Spaces in einem Speicherpool |
Unbegrenzt |
Quelle: Microsoft Blog
Dieses Dateisystem verwendet eine Struktur auf dem Datenträger, um die Dateien mit Hilfe eines sogenannten B+ Baumes zu speichern. Ein B+ Baum ist eine Struktur zum Speichern und Abrufen von Daten, wobei die Daten in einer Baumstruktur gespeichert sind. Jeder Knoten (Node) der Bäume enthält eine geordnete Liste von Schlüsseln (Keys) oder Verweisen (Pointer) auf die Knoten der unteren Baum-Ebene. Der Baum bietet dabei eine feste Anzahl von Elementen (Blöcke) in einem Knoten.
Der Vorteil einer Verwendung der B+ Baumstruktur ist die Art, wie Einträge oder sogenannte „Satelliten Informationen“ gespeichert werden. Diese werden auf „leaf level“, der „Blatt-Ebene“ gespeichert. Keys (Schlüssel) und Child Pointer werden in internen oder „Nicht-Blatt“-Knoten gespeichert. Mit dem Speichern von Einträgen auf der Blatt-Ebene der Baumstruktur werden die Verzweigungsmöglichkeiten der inneren Knoten deutlich maximiert. Ein hoher Verzweigungsfaktor erlaubt eine niedrige Baumstruktur, was in der Konsequenz einen geringeren Festplatten I/O und damit einer bessere Leistung ermöglicht.
Was bedeutet das für die Datenrettung?
Die ReFS Struktur funktioniert wie eine Datenbank, sodass eine Datenrettung komplett anders abläuft als bei einem NTFS-Dateisystem, das eine flache Metadaten-Tabelle verwendet. Um Daten zu finden müssen Datenretter das ReFS Datensystem wie eine Datenbank durchforsten und dabei Tabellen öffnen die wiederum andere Tabellen-Sätze enthalten und so weiter. Die Datenbank-Struktur macht das Dateisystem komplizierter als bei NTFS, aber es hat auch einige Vorteile, wie beispielsweise die weiter gefächerte Dateisystemstruktur, die die Wiederherstellung bei einigen Arten von Beschädigung einfacher macht. Da ReFS ein sogenanntes „Copy-on-Write“ Dateisystem ist, gibt es viele Kopien der gespeicherten Daten, die zur Wiederherstellung verwendet werden können, wenn beispielsweise die primäre Kopie auch beschädigt ist. Jedoch ist dabei zu beachten, dass ein Datenrettungsingenieur – da es sich bei ReFS um eine Datenbank handelt – spezielle Werkzeuge und Kenntnisse benötigt, um die Metadaten einer Datei aus diesem Dateisystem zu entschlüsseln.