HFS Plus - HFS Plus

HFS+
Entwickler Apple Inc.
Vollständiger Name Hierarchisches Dateisystem Plus
Eingeführt 19. Januar 1998 ; Vor 23 Jahren mit Mac OS 8.1 ( 1998-01-19 )
Partitionskennung Apple_HFS( Apple-Partitionskarte )
0xAF( MBR ) HFS und HFS+
Apple_HFSX( Apple Partition Map ) wenn HFSX ( GPT )
48465300-0000-11AA-
AA11-00306543ECAC
Strukturen
Verzeichnisinhalt B-Baum
Dateizuordnung Bitmap
Schlechte Blöcke B-Baum
Grenzen
max. Volumengröße Exabyte
max. Dateigröße EB
max. Anzahl der Dateien 4.294.967.295 (2 32 − 1)
max. Dateinamenlänge 255 Zeichen (255 UTF-16-Codierungseinheiten, normalisiert auf eine von Apple modifizierte Variante des Unicode-Normalisierungsformats D)
Erlaubte Zeichen in Dateinamen Unicode , ein beliebiges Zeichen, einschließlich NUL . Betriebssystem-APIs können einige Zeichen aus Legacy-Gründen einschränken
Merkmale
Daten aufgezeichnet Zugriff, Attribute geändert, gesichert, Inhalt geändert, erstellt
Datumsbereich 1. Januar 1904 – 6. Februar 2040
Datumsauflösung 1 s
Gabeln Jawohl
Attribute Farbe (3 Bit, alle anderen Flags 1 Bit), gesperrt, benutzerdefiniertes Symbol, Bundle, unsichtbar, Alias, System, Briefpapier, initiiert, keine INIT-Ressourcen, freigegeben, Desktop
Dateisystemberechtigungen Unix-Berechtigungen, NFSv4- ACLs ( Mac OS X v10.4 und höher)
Transparente Kompression Teilweise (decmpfs, unter Mac OS X 10.6 und höher)
Transparente Verschlüsselung Ja (unter Mac OS X 10.7 und höher). Die Verschlüsselung pro Home-Verzeichnis ist mit AES unter Verwendung von HFS+-formatierten .dmg- Volumes auf OS X-Versionen vor 10.7, aber höher als Mac OS X 10.3 verfügbar
Sonstiges
Unterstützte Betriebssysteme Mac OS 8.1 , Mac OS 9 , macOS / iOS / tvOS / watchOS / Darwin , Linux , Microsoft Windows (über Boot Camp IFS- Treiber)

HFS Plus oder HFS+ (auch bekannt als Mac OS Extended oder HFS Extended ) ist ein Journaling-Dateisystem, das von Apple Inc. entwickelt wurde . Es ersetzte das Hierarchical File System (HFS) als primäres Dateisystem von Apple-Computern mit der Version 1998 von Mac OS 8.1 . HFS+ blieb das primäre Mac OS X- Dateisystem, bis es selbst durch das Apple File System (APFS) ersetzt wurde, das 2017 mit macOS High Sierra veröffentlicht wurde. HFS+ ist auch eines der Formate, die vom digitalen Musikplayer iPod verwendet werden.

Im Vergleich zu seinem Vorgänger HFS , auch Mac OS Standard oder HFS Standard genannt, unterstützt HFS Plus viel größere Dateien (Blockadressen haben eine Länge von 32 Bit statt 16 Bit) und die Verwendung von Unicode (anstelle von Mac OS Roman oder einem von mehreren anderen Zeichen). Sets) zum Benennen von Elementen. Wie HFS verwendet HFS Plus B-Trees , um die meisten Volume- Metadaten zu speichern , aber im Gegensatz zu den meisten anderen Dateisystemen unterstützt HFS Plus Hardlinks zu Verzeichnissen. HFS Plus erlaubt Dateinamen mit einer Länge von bis zu 255 Zeichen und n-verzweigte Dateien ähnlich wie NTFS , obwohl bis 2005 fast keine Systemsoftware andere Forks als den Data Fork und den Resource Fork nutzte . HFS Plus verwendet auch eine vollständige 32-Bit-Zuordnungs-Zuordnungstabelle anstelle der 16-Bit von HFS, wodurch die Nutzung des Speicherplatzes auf großen Festplatten verbessert wird.

Geschichte

HFS+ mit dem Codenamen Sequoia in der Entwicklung wurde mit der Veröffentlichung von Mac OS 8.1 vom 19. Januar 1998 eingeführt .

Mit der Veröffentlichung des Mac OS X 10.2.2- Updates am 11. November 2002 hat Apple HFS Plus optionale Journaling- Funktionen hinzugefügt, um die Datenzuverlässigkeit zu verbessern. Diese Funktionen waren über die GUI mit dem Festplatten-Dienstprogramm in Mac OS X Server zugänglich, jedoch nur über die Befehlszeile des Standard-Desktop-Clients.

Unter Mac OS X v10.3 wurden alle HFS Plus-Volumes auf allen Macs standardmäßig so eingestellt, dass sie im Journal aufgezeichnet werden. Im System wird ein HFS Plus-Volume mit Journal als HFSJ gekennzeichnet .

Mac OS X 10.3 führte auch eine weitere Version von HFS Plus namens HFSX ein . HFSX-Volumes sind fast identisch mit HFS Plus-Volumes, außer dass sie nie von dem für HFS Plus-Volumes typischen HFS-Wrapper umgeben sind und optional die Groß-/Kleinschreibung für Datei- und Ordnernamen unterstützen. HFSX-Volumes sind an zwei Einträgen im Volume-Header zu erkennen, einem Wert von HX im Signaturfeld und 5 im Versionsfeld.

Mac OS X 10.3 markierte auch die Einführung der Unicode 3.2-Zerlegung durch Apple, die die zuvor verwendete Unicode 2.1-Zerlegung ablöste. Diese Änderung verursachte Probleme für Entwickler, die Software für Mac OS X schreiben.

Mac OS X 10.3 hat eine Reihe von Techniken eingeführt, die das Fragmentieren von Dateien in HFS+ vermeiden sollen.

Mit Mac OS X 10.4 hat Apple die Unterstützung für Inline-Attributdatensätze hinzugefügt, etwas, das seit mindestens 10.0 Teil der Mac OS X-Implementierung von HFS Plus war , aber immer als "für zukünftige Verwendung reserviert" gekennzeichnet war. Bis zur Veröffentlichung von Mac OS X Server 10.4 unterstützte HFS Plus nur die standardmäßigen UNIX- Dateisystemberechtigungen ; Mit 10.4 wurde jedoch die Unterstützung für die auf Zugriffskontrolllisten basierende Dateisicherheit eingeführt , die einen umfassenderen Mechanismus zum Definieren von Dateiberechtigungen bietet und auch vollständig kompatibel mit den Dateiberechtigungsmodellen auf anderen Plattformen wie Microsoft Windows XP und Windows Server 2003 ist .

In Mac OS X Leopard 10.5 wurde die Festverknüpfung von Verzeichnissen als grundlegender Bestandteil von Time Machine hinzugefügt.

In Mac OS X Snow Leopard 10.6 wurde die HFS+-Komprimierung mit Deflate (Zlib) hinzugefügt. In Open Source und einigen anderen Bereichen wird dies als AppleFSCompression oder decmpfs bezeichnet. Komprimierte Daten können entweder in einem erweiterten Attribut oder im Ressourcenzweig gespeichert werden. Bei Verwendung von Nicht-Apple-APIs ist AppleFSCompression nicht immer vollständig transparent. OS X 10.9 führte zwei neue Algorithmen ein: LZVN (libFastCompression) und LZFSE .

In Mac OS X Lion 10.7 wurde dem Betriebssystem die Verschlüsselung logischer Volumes (bekannt als FileVault 2 ) hinzugefügt. Diese Erweiterung des Betriebssystems änderte in keiner Weise die logische Struktur des Dateisystems. Der logische Volume-Manager von Apple ist als Core Storage bekannt und seine Verschlüsselung auf Volume-Ebene kann auf andere Dateisysteme als HFS Plus angewendet werden. Bei entsprechender Hardware sollten sowohl die Verschlüsselung als auch die Entschlüsselung transparent sein.

Design

HFS Plus-Volumes sind in Sektoren (in HFS als logische Blöcke bezeichnet) unterteilt, die normalerweise 512 Byte groß sind. Diese Sektoren werden dann in Zuordnungsblöcke gruppiert, die einen oder mehrere Sektoren enthalten können; die Anzahl der Zuordnungsblöcke hängt von der Gesamtgröße des Volumes ab. HFS Plus verwendet einen größeren Wert zum Adressieren von Zuordnungsblöcken als HFS, 32 Bit statt 16 Bit; dies bedeutet, dass er auf 4.294.967.296 (= 2 32 ) Zuweisungsblöcke zugreifen kann , anstatt auf die 65.536 (= 2 16 ) Zuweisungsblöcke, die für HFS verfügbar sind. Bei kleinen Festplatten war dies von geringer Bedeutung, aber als Laufwerke mit größerer Kapazität verfügbar wurden, bedeutete dies, dass die kleinste Menge an Speicherplatz, die eine Datei belegen konnte (ein einzelner Zuordnungsblock), übermäßig groß wurde, wodurch erhebliche Mengen an Speicherplatz verschwendet wurden. Auf einer 1-GB-Festplatte beträgt die Zuordnungsblockgröße unter HFS beispielsweise 16 KB, sodass selbst eine 1-Byte-Datei 16 KB Festplattenspeicher belegen würde. Dadurch verbessert das System von HFS Plus die Speicherplatznutzung auf größeren Festplatten erheblich.

Datei- und Ordnernamen in HFS Plus werden ebenfalls in UTF-16 codiert und auf eine Form normalisiert, die sehr ähnlich der Unicode Normalization Form D (NFD) ist (was bedeutet, dass vorkomponierte Zeichen wie "å" im HFS+-Dateinamen zerlegt werden und daher zählen als zwei Codeeinheiten und UTF-16 impliziert, dass Zeichen von außerhalb der Basic Multilingual Plane auch als zwei Codeeinheiten in einem HFS+-Dateinamen zählen). HFS Plus erlaubt Dateinamen mit einer Länge von bis zu 255 UTF-16-Codeeinheiten.

Früher wurden HFS Plus-Volumes in ein HFS-Standarddateisystem eingebettet. Dies wurde durch den Übergang von Tiger zu Intel Macs abgeschafft, bei denen das HFS Plus-Dateisystem nicht in einen Wrapper eingebettet war. Der Umschlag war für zwei Zwecke entworfen worden; es ermöglichte Macintosh-Computern ohne HFS Plus-Unterstützung in ihrem ROM, HFS Plus-Volumes zu booten, und es wurde auch entwickelt, um Benutzern beim Übergang zu HFS Plus zu helfen, indem es ein minimales HFS-Volume mit einer schreibgeschützten Datei namens Where_have_all_my_files_gone? , die Benutzern mit Versionen von Mac OS 8.0 und früher ohne HFS Plus erklärt, dass das Volume ein System mit HFS Plus-Unterstützung erfordert. Das ursprüngliche HFS-Volume enthält eine Signatur und einen Offset zum eingebetteten HFS Plus-Volume innerhalb seines Volume-Headers. Alle Zuordnungsblöcke im HFS-Volume, die das eingebettete Volume enthalten, werden aus der HFS-Zuordnungsdatei als fehlerhafte Blöcke abgebildet .

Bemerkenswert unter den Dateisystemen, die für Unix-Systeme verwendet werden, unterstützt HFS Plus keine Dateien mit geringer Dichte .

Es gibt neun Strukturen, aus denen ein typisches HFS Plus-Volume besteht:

  1. Die Sektoren 0 und 1 des Volumes sind HFS- Boot-Blöcke . Diese sind identisch mit den Bootblöcken in einem HFS-Volume. Sie sind Teil des HFS-Wrappers.
  2. Sektor 2 enthält den Volume Header , der dem Master Directory Block in einem HFS-Volume entspricht. Der Volume-Header speichert eine Vielzahl von Daten über das Volume selbst, beispielsweise die Größe von Zuordnungsblöcken, einen Zeitstempel, der angibt, wann das Volume erstellt wurde, oder den Speicherort anderer Volume-Strukturen wie der Katalogdatei oder der Extent Overflow-Datei. Der Volume Header befindet sich immer an derselben Stelle.
  3. Die Zuordnungsdatei, die festhält, welche Zuordnungsblöcke frei sind und welche verwendet werden. Es ähnelt der Volume Bitmap in HFS, bei der jeder Zuordnungsblock durch ein Bit dargestellt wird. Eine Null bedeutet, dass der Block frei ist und eine Eins bedeutet, dass der Block verwendet wird. Der Hauptunterschied zur HFS Volume Bitmap besteht darin, dass die Zuordnungsdatei als normale Datei gespeichert wird – sie belegt keinen speziell reservierten Platz am Anfang des Volumes. Die Zuordnungsdatei kann auch die Größe ändern und muss nicht zusammenhängend innerhalb eines Volumes gespeichert werden.
  4. Die Katalogdatei ist ein B-Baum , der Datensätze für alle auf dem Datenträger gespeicherten Dateien und Verzeichnisse enthält. Die HFS Plus-Katalogdatei ist der HFS-Katalogdatei sehr ähnlich , der Hauptunterschied besteht darin, dass die Datensätze größer sind, um mehr Felder zuzulassen, und diese Felder größer sein können (z. B. um die längeren 255-stelligen Unicode-Dateinamen in HFS Plus zuzulassen ). Ein Datensatz in der HFS-Katalogdatei ist 512 Byte groß; Ein Eintrag in der HFS Plus-Katalogdatei ist 4 KB im klassischen Mac OS und 8 KB in macOS . Felder in HFS haben eine feste Größe, während die Größe in HFS Plus abhängig von der tatsächlichen Größe der gespeicherten Daten variieren kann.
  5. Die Extents Overflow File ist ein weiterer B-Baum, der die Zuordnungsblöcke aufzeichnet, die jeder Datei als Extents zugeordnet sind. Jeder Dateidatensatz in der Katalogdatei kann acht Extents für jeden Zweig einer Datei aufzeichnen; Sobald diese verwendet werden, werden zusätzliche Extents in der Extents Overflow File aufgezeichnet. Fehlerhafte Blöcke werden auch als Extents in der Extents Overflow File aufgezeichnet. Die Standardgröße eines Extent-Datensatzes im klassischen Mac OS beträgt 1 KB und 4 KB in macOS.
  6. Die Attributes File ist ein neuer B-Baum in HFS Plus, der keine entsprechende Struktur in HFS hat. Die Attributdatei kann drei verschiedene Arten von 4-KB-Datensätzen speichern: Inline-Datenattributdatensätze , Fork-Datenattributdatensätze und Erweiterungsattributdatensätze . Inline-Datenattribut-Datensätze speichern kleine Attribute, die in den Datensatz selbst passen. Datensätze mit Fork-Datenattributen enthalten Verweise auf maximal acht Extents, die größere Attribute enthalten können. Erweiterungsattribute werden verwendet, um einen Fork-Datenattribut-Datensatz zu erweitern, wenn seine acht Erweiterungsdatensätze bereits verwendet werden.
  7. Die Startup-Datei wurde für Nicht-Mac OS-Systeme entwickelt, die keine HFS- oder HFS Plus-Unterstützung haben. Es ähnelt den Boot-Blöcken eines HFS-Volumes.
  8. Der vorletzte Sektor enthält den Alternate Volume Header , der dem Alternate Master Directory Block von HFS entspricht. Beachten Sie, dass dies der vorletzte Sektor für die Festplatte ist, nicht das Volume. Wenn die Platte größer als das Volume ist, liegt der AVH außerhalb des Bereichs des Dateisystems.
  9. Der letzte Sektor des Volumes ist für Apple reserviert. Es wird während des Computerherstellungsprozesses verwendet.

Kritikpunkte

HFS Plus fehlen einige Funktionen, die als Grundnahrungsmittel moderner Dateisysteme wie ZFS und NTFS gelten . Daten Prüfsummen sind die routinemäßig zitiert fehlende Funktion.

Zu den Funktionen moderner Dateisysteme, die HFS+ fehlen, gehören neben der Prüfsumme:

  • Nanosekunden-Zeitstempel
  • gleichzeitiger Zugriff (d. h. mehrere Prozesse können gleichzeitig auf das Dateisystem zugreifen)
  • Schnappschüsse
  • Unterstützung für Termine nach dem 6. Februar 2040
  • spärliche Dateiunterstützung
  • eine bessere Implementierung von Hardlinks (in anderen Dateisystemen sind dies normalerweise mehrere Verzeichniseinträge, die auf dieselben Datenblöcke verweisen; Hardlinks werden in macOS als kleine Dateien implementiert, die in einem speziellen versteckten Verzeichnis gespeichert werden)

HFS Plus wurde nicht für Unix-ähnliche Systeme entwickelt, daher mussten Funktionen wie Dateisystemberechtigungen und Hardlinks nachgerüstet werden, als Apple auf Mac OS X umstieg.

Andere Betriebssysteme

Linux

Der Linux-Kernel enthält das Modul hfsplus zum Einhängen von HFS+-Dateisystemen mit Lese-/Schreibzugriff. HFS+ fsck und mkfs wurden auf Linux portiert und sind Teil des hfsprogs-Pakets.

Im Jahr 2009 wurde diagnostiziert, dass diese Treiber HFS+-Laufwerke mit einer Kapazität von mehr als 2 TB beschädigen. Folglich erlaubten Linux-Distributionen wie Debian und Ubuntu das Mounten von HFS+-Laufwerken oder Partitionen mit mehr als 2 TB nicht mehr. Ab Februar 2011 wird daran gearbeitet, diese Beschränkung aufzuheben.

Unter Linuxs aktuellem HFS+-Treiber muss das Journaling deaktiviert werden, um Daten sicher auf eine HFS+-Partition zu schreiben. Vorausgesetzt, die Partition wird nicht von Apples Time Machine- Software verwendet, kann das Journaling unter macOS deaktiviert werden: Mit dem Festplatten-Dienstprogramm in OS X Yosemite kann der Benutzer Alt/Option gedrückt halten und im Dateimenü auf "Journaling deaktivieren" klicken, nachdem er zuerst ausgewählt hat eine gemountete Partition.

Eine HFS+-Partition mit aktiviertem Journaling kann unter Linux mit Schreibzugriff zwangsweise gemountet werden, dies wird jedoch nicht unterstützt und ist unklug.

Ein Google Summer of Code- Projekt zur Implementierung von Schreibunterstützung für HFS+ in Journalen wurde 2011 von der Linux Foundation angenommen, aber zu diesem Zeitpunkt noch nicht abgeschlossen und ist noch in Arbeit. Fortschritte und Verbesserungen des HFS+-Treibers, einschließlich einiger Aktualisierungen der Journaling-Unterstützung, werden von Zeit zu Zeit auf der linux-fsdevel-Mailingliste veröffentlicht.

Ab Juli 2011 stellte die Paragon Software Group Kernel-Treiber bereit, die vollen Lese-/Schreibzugriff auf HFS+-Journal-Volumes ermöglichen. Das Produkt ist eine proprietäre Implementierung von HFS+ basierend auf der proprietären UFSD-Bibliothek von Paragon. Es gibt sowohl kostenlose als auch kostenpflichtige Versionen des Treibers und sie enthalten ein Dienstprogramm zum Überprüfen und Reparieren von HFS+-Volumes. Laut Online-Dokumentation (kostenlose Version oder kostenpflichtige Edition) unterstützen sowohl die kostenlose als auch die kostenpflichtige Edition derzeit Linux-Kernel von 2.6.36 bis 4.12.x. Ubuntu , Debian , Fedora , OpenSUSE und CentOS sind die einzigen offiziell unterstützten Linux-Distributionen.

Fenster

Ab Mai 2012 hat Apple nur schreibgeschützte HFS+-Treiber für Windows XP, Windows Vista und Windows 7 als Teil der Boot Camp- Software in Mac OS X 10.6 veröffentlicht . Das bedeutet, dass Benutzer auf diesen Systemen Daten auf dem HFS+-Laufwerk lesen, aber nicht darauf schreiben können. Microsoft hat einen HFS+-Treiber für die Xbox 360 hauptsächlich zum Lesen von HFS+-formatierten iPods entwickelt.

Eine kostenlose Open-Source-Software – jHFSplus, basierend auf HFSExplorer und jpfm – kann verwendet werden, um hfs/hfs+-Partitionen als schreibgeschützte virtuelle Ordner zu mounten.

Es existiert ein Freeware-Plugin für Total Commander , das unter anderem HFS- und HFS+-Dateisysteme lesen kann.

DiskInternals Linux Reader kann zum Extrahieren/Speichern von Ordnern/Dateien aus HFS- und HFS+-Festplatten/-Partitionen verwendet werden.

Ein kommerzielles Produkt, MacDrive, ist auch zum Mounten von HFS- und HFS+-Laufwerken, optischen Discs und anderen Medien in Windows Explorer erhältlich und ermöglicht sowohl das Lesen und Schreiben auf das Volume als auch das Reparieren und Formatieren von Mac-Disketten.

Als kommerzielles Produkt ermöglicht Paragons HFS+ für Windows die vollständige Lese- und Schreib- und Datenträgerverwaltung von allen Windows-Versionen von Windows XP bis Windows Server 2008.

Plattformübergreifend

Eine kostenlose ( GPL ) Alternative ist HFSExplorer von Erik Larsson. HFSExplorer ist eine Java-Anwendung zum Anzeigen und Extrahieren von Dateien von einem HFS+-Volume (Mac OS Extended) oder einem HFSX-Volume (Mac OS Extended, Groß-/Kleinschreibung beachten). Das Volume kann sich entweder auf einer physischen Festplatte, in verschiedenen Apple-Disk-Image- und Sparse-Disk-Image-Formaten oder in einem Raw-Dateisystem-Dump befinden. HFSExplorer ist jedoch eine schreibgeschützte Lösung; es kann nicht auf HFS-formatierte Volumes schreiben.

Siehe auch

Verweise

Externe Links

  • hfsexplorer – Open Source Explorer für MS-Windows® in Java geschrieben, mit Unterstützung für HFS, HFS+ und HFSX
  • Apple "Legacy" Technote 1150 – HFS Plus Volume-Format
  • Apple "Legacy" Technote 1189 – Der Monster Disk Driver Technote
  • hfsdebug – Ein Debugger für HFS Plus-Volumes von Amit Singh
  • hfsprogs – Userspace-Support-Tools für HFS+-Dateisysteme unter Linux-Systemen (adaptiert von Apples nativen Tools).
  • iBored – Ein Disk-Editor und Viewer, der HFS Plus unterstützt
  • MacDrive – Ein kommerzielles Produkt zum Lesen, Schreiben und Erstellen von HFS- und HFS+-Volumes in Windows
  • HFSleuth – Ein kostenloses Befehlszeilentool zur Überprüfung von HFS+/HFSX-Volumes und Disk Images (DMGs) für macOS und Linux
  • Mac OS X 10.7 Lion: der Ars Technica Test – Eine Kritik an diesem Dateisystem