close

Hierarchisches Dateisystem

Zur Navigation gehen Zur Suche gehen
HFS
Entwickler Apple Computer
Vollständiger Name Hierarchisches Dateisystem
Unterstützte Betriebssysteme MacOS , MacOS X
Einführung 17. September 1985 ( System 2.1 )
Partitionskennung Apple_HFS (Apple Partition Map)
0xAF ( MBR )
Strukturen
Inhalt des Verzeichnisses B-Baum*
Speicherort Bitmap
schlechte Blöcke B-Baum*
Grenzen
Maximale DateigrößeGB ( 2 × 1024 3 Bytes )
Maximale Anzahl von Dateien 65535
Maximale Dateinamengröße 31 Zeichen
Maximale Volumengröße 2 TB  ( 2 × 1024 4 Bytes )
In Dateinamen erlaubte Zeichen Alle 8-Bit-Zeichen außer dem Doppelpunkt ":". Von der Verwendung des Nullzeichens und nicht druckbarer Zeichen wird abgeraten.
Charakteristisch
aufgezeichnete Daten Erstellung, Änderung, Sicherung
Datumsbereich 1. Januar 1904 - 6. Februar 2040
Datum Auflösung 1s
Gabeln 2 (Daten und Ressourcen)
Attribute Farbe (3 Bit, Rest der Attribute 1 Bit), Schloss, benutzerdefiniertes Symbol, Bündel, unsichtbar, Alias, System, Briefpapier, initiiert, keine INIT-Ressourcen, gemeinsam genutzt, Desktop
Dateizugriffsberechtigungen AppleShare
transparente Komprimierung Ja (Drittanbieter), Stacker
transparente Verschlüsselung

Hierarchisches Dateisystem oder Hierarchisches Dateisystem (HFS) ist ein Dateisystem, das von Apple Inc. für die Verwendung auf Computern mit Mac OS entwickelt wurde . Ursprünglich für die Verwendung auf Disketten und Festplatten konzipiert , ist es auch auf schreibgeschützten Geräten wie CD-ROMs zu finden . HFS ist der Name, der von Entwicklern verwendet wird, aber in der Benutzerdokumentation wird das Format als Mac Os Standard bezeichnet, um es von seinem Nachfolger HFS+ zu unterscheiden, der als Mac Os Extended bezeichnet wird.

Geschichte

HFS wurde von Apple im September 1985 eingeführt , um das Macintosh-Dateisystem ( MFS ) zu ersetzen, das ursprüngliche Dateisystem, das ein Jahr vor Macintosh -Computern eingeführt wurde . HFS wurde von Patrick Dirks und Bill Bruffey entwickelt und teilte eine Reihe von Designfunktionen mit MFS, die in anderen Dateisystemen der damaligen Zeit (wie z . B. FAT von DOS ) nicht verfügbar waren . Dateien können mehrere Verzweigungen haben (normalerweise Daten und eine Ressourcenverzweigung ), wodurch Programmcode getrennt von Ressourcen wie Symbolen gespeichert werden kann, die möglicherweise lokalisiert werden müssen. Auf Dateien wurde mit eindeutigen IDs verwiesen, und Dateinamen konnten 255 Zeichen lang sein (obwohl Finder nur maximal 63 Zeichen unterstützte).

Während MFS für die Verwendung auf kleinen, langsamen Speichermedien wie Disketten optimiert wurde, wurde HFS eingeführt, um einige der Leistungsprobleme zu überwinden, die mit der Einführung großer Speichermedien wie Festplatten einhergingen. Das Hauptanliegen war die Zeit, die benötigt wird, um den Inhalt eines Verzeichnisses anzuzeigen. Unter MFS wurde die gesamte Liste der Datei- und Verzeichnisinformationen in einer einzigen Datei gespeichert, die das System nachschlagen musste, um eine Liste der in einem bestimmten Verzeichnis gespeicherten Dateien zu erstellen. Bei einem System mit ein paar hundert Kilobyte Speicherplatz und vielleicht hundert Dateien funktionierte das gut, aber als die Systeme um Megabytes und Tausende von Dateien wuchsen, sank die Leistung rapide.

Die Lösung bestand darin, die MFS -Verzeichnisstruktur durch eine für größere Dateisysteme geeignetere zu ersetzen . HFS ersetzte die flache Tabellenstruktur durch die Katalogdatei, die eine B*-Baumstruktur verwendet, die unabhängig von ihrer Größe sehr schnell durchsucht werden kann.

Obwohl HFS ein proprietäres Ben-Dateisystemformat ist, ist es gut dokumentiert, sodass es Lösungen für den Zugriff auf HFS-formatierte Festplatten von den meisten modernen Betriebssystemen gibt. 1998 führte Apple HFS + ein, um die Ineffizienz der Speicherplatzzuweisung in HFS zu beheben und weitere Verbesserungen hinzuzufügen. HFS wird noch von aktuellen Versionen von Mac OS unterstützt , aber ab Mac OS X kann ein HFS-Volume nicht mehr zum Booten verwendet werden.

Entwurf

Organisation eines HFS-Dateisystems.

Das hierarchische Dateisystem unterteilt einen Datenträger in logische Blöcke von 512 Bytes. Diese logischen Blöcke werden in Zuordnungsblöcken zusammengefasst, die je nach Gesamtgröße des Datenträgers einen oder mehrere logische Blöcke enthalten können. HFS verwendet einen 16-Bit-Adresswert für Zuordnungsblöcke, wodurch die Anzahl der Zuordnungsblöcke auf 65.536 begrenzt wird.

Ein HFS-Volume besteht aus fünf Strukturen:

  1. Die logischen Blöcke 0 und 1 des Volumes sind die Boot-Blöcke, die die System-Boot-Informationen enthalten. Beispielsweise der Name des Systems und der Shell-Datei (normalerweise der Finder), die beim Start geladen werden.
  2. Der logische Block 2 enthält das MDB-Verzeichnis (Master Directory Block). Dies definiert eine Vielzahl von Daten über das Volume selbst, z. B. das Datum und den Zeitstempel der Erstellung des Volumes, den Ort anderer Volume-Strukturen, wie z. B. das Bitmap-Volume, oder die Größe logischer Strukturen, wie z. B. Zuordnungsblöcke. Es gibt auch ein Duplikat der MDB, das als alternative MDB bezeichnet wird und sich am gegenüberliegenden Ende des Datenträgers im vorletzten logischen Block befindet. Dies ist hauptsächlich für die Verwendung des Festplattendienstprogramms gedacht und wird nur aktualisiert, wenn die Katalogdatei oder die Extents-Überlaufdatei größer wird.
  3. Der logische Block 3 ist der Startblock des Bitmap-Datenträgers (Volume Bitmap), der verfolgt, welche Zuordnungsblöcke verwendet werden und welche frei sind. Jeder Zuordnungsblock auf dem Datenträger wird durch ein Bit in der Abbildung dargestellt: Wenn das Bit eingeschaltet ist, wird der Block verwendet; wenn er deaktiviert ist, kann der Block frei verwendet werden. Da die Datenträger-Bitmap ein Bit haben muss, um jeden Zuordnungsblock darzustellen, wird ihre Größe durch die Größe des Datenträgers bestimmt.
  4. Die Extent-Overflow-Datei ist ein B*-Baum, der Erweiterungen enthält, die aufzeichnen, welche Zuordnungsblöcke welchen Dateien zugewiesen werden, sobald die ersten drei Erweiterungen der Katalogdatei verwendet werden. Spätere Versionen fügen Extent Overflow File auch die Möglichkeit hinzu, fehlerhafte Blöcke zu protokollieren, um zu verhindern, dass das Dateisystem versucht, einen fehlerhaften Block einer Datei zuzuweisen.
  5. Die Katalogdatei ist ein weiterer B*-Baum, der Datensätze für alle Dateien und Verzeichnisse enthält, die auf dem Datenträger gespeichert sind. Speichert vier Arten von Aufzeichnungen. Jede Datei besteht aus einem File Thread Record und einem File Record, während jedes Verzeichnis aus einem Directory Thread Record und einem Directory Record besteht. Die Dateien und Verzeichnisse in der Katalogdatei werden durch eine eindeutige CNID (Katalogknoten-ID) identifiziert.
    • Ein File Thread Record speichert nur den Namen der Datei und die CNID ihres übergeordneten Verzeichnisses.
    • Ein Dateidatensatz speichert eine Vielzahl von Metadaten über die Datei, darunter ihre CNID, die Größe der Datei, drei Zeitstempel (wann die Datei erstellt, zuletzt geändert und wann sie zuletzt gesichert wurde), die erste erweiterte Datei der Daten, und die Ressourcen und Zeiger auf die ersten Daten der Datei und erweiterte Ressourcenaufzeichnungen in der Bereichsüberlaufdatei. Der Dateidatensatz speichert auch zwei 16-Byte-Felder, die vom Finder verwendet werden, um Attribute über die Datei zu speichern, einschließlich Dinge wie den Erstellungscode, die Art des Codes, ob das Dateifenster erscheinen soll und seine Position ohne das Fenster.
    • Ein Verzeichnis-Thread-Datensatz speichert nur den Verzeichnisnamen und die CNID seines übergeordneten Verzeichnisses.
    • Ein Verzeichniseintrag speichert Daten wie die Anzahl der im Verzeichnis gespeicherten Dateien, die CNID des Verzeichnisses, drei Zeitstempel (Zeitpunkt der Erstellung, letzte Änderung und letzte Sicherung). Wie der Dateidatensatz speichert er auch zwei 16-Byte-Felder zur Verwendung durch den Finder. Diese Elemente werden als Breite und Höhe und die x- und y-Koordinaten für das Fenster gespeichert, das verwendet wird, um den Inhalt des Verzeichnisses anzuzeigen, den Anzeigemodus (Symbolansicht, Listenansicht usw.) des Fensters und die Position der Bildlaufleiste des Fensters .

Probleme

Die Katalogdatei, die alle Datei- und Verzeichnisdatensätze in einer einzigen Datenstruktur speichert, ist ein Leistungsproblem, wenn das System Multitasking zulässt, nur ein Programm gleichzeitig in diese Struktur schreiben kann, was bedeutet, dass viele Programme in der Warteschlange warten müssen bis das erste Programm gibt das System frei. Es ist auch ein ernsthaftes Zuverlässigkeitsproblem, diese Datei zu beschädigen, da es das gesamte Dateisystem zerstören kann. Dies steht im Gegensatz zu anderen Dateisystemen, die Datei- und Verzeichnisdatensätze in separaten Strukturen speichern (z. B. das FAT-Dateisystem von Microsoft oder das Unix-Dateisystem UFS), bei denen über die Festplatte verteilte Strukturen bedeuten, dass ein Verzeichnis nicht beschädigt wird es ist im Allgemeinen fatal und möglicherweise können die Daten mit den Daten der unbeschädigten Teile rekonstruiert werden.

Außerdem führt das Limit von 65.535 Zuordnungsblöcken dazu, dass Dateien eine „minimale“ Größe haben, die 1/65.535 der Festplattengröße entspricht. Daher kann jedes Volume, unabhängig von seiner Größe, nur maximal 65.535 Dateien speichern. Allerdings könnte jeder Datei bis zur Größe des Zuordnungsblocks mehr Speicherplatz zugewiesen werden, als sie tatsächlich benötigt. Als die Festplatten klein waren, spielte dies keine große Rolle, da die Größe der einzelnen Zuordnungsblöcke sehr klein war, aber als die Festplatten die 1-GB-Marke überschritten, war dies der kleinste Speicherplatz, den eine Datei (ein einzelner Block) einnehmen kann. Zuweisung) wurde übermäßig groß, wodurch erhebliche Mengen an Speicherplatz verschwendet wurden. Auf einer 1-GB-Festplatte beträgt die Zuweisungsblockgröße unter HFS beispielsweise 16 KB, sodass eine 1-Byte-Datei 16 KB Speicherplatz beanspruchen würde. Dieses Problem war weniger ein Problem für Benutzer, die große Dateien auf einem kleineren Volume hatten, da sie viel weniger Speicherplatz beanspruchen, als wenn sie sich auf einer großen Partition befinden würden. Das gleiche Problem besteht im FAT16-Dateisystem.

Externe Links