| HFS+ | |
|---|---|
| Hersteller | Apple |
| Vollständige Bezeichnung | Hierarchical File System Plus |
| Erstveröffentlichung | 19. Januar 1998 (Mac OS 8.1) |
| Partitionskennung | Apple_HFS (APM)0xAF (MBR)Apple_HFSX (APM) bei VarianteHFSX48465300-0000-11AA- (GPT) |
| Technische Umsetzung | |
| Verzeichnisse | B*-Baum |
| Dateien | B*-Baum |
| Defektblockliste | B*-Baum |
| Maximalwerte | |
| Größe einer Datei | 8 EiB[1] |
| Anzahl aller Dateien | 232-1 (4.294.967.295) |
| Länge desDateinamens | 255 Zeichen |
| Größe des Dateisystems | 8 EiB[1] |
| Erlaubte Zeichen im Dateinamen | HFS+: erzwungeneCase-insensitivity durchNFD-Unicode. HFSX: jedesUnicode-Zeichen, einschließlich NUL. |
| Eigenschaften | |
| Datumsangaben einer Datei | Erzeugt, verändert, gesichert, letzter Zugriff, geändert |
| Datumsbereich | 1. Januar 1904 bis 6. Februar 2040 |
| Forks | unterstützt |
| Dateiattribute | Farbe (3 Bits, alle anderen 1 Bit), locked, custom icon, bundle, invisible, alias, system, stationery, inited, no INIT resources, shared, desktop, extended attributes (abMac OS X Leopard) |
| Dateirechte-Verwaltung | Unix-Rechte,ACLs (abMac OS X Tiger) |
| TransparenteKomprimierung | Ja, abMac OS X Snow Leopard |
| TransparenteVerschlüsselung | mit Hilfe desLogical Volume ManagersCore Storage; sieheFileVault |
| UnterstützendeBetriebssysteme | Mac OS 8,Mac OS 9,Mac OS X, teilweiseLinux,Windows NT (nur mit zusätzlichen Treibern) |
DasDateisystemHFS Plus oder – gängiger –HFS+ ist eine Weiterentwicklung vonHFS. Die Abkürzung steht fürHierarchicalFileSystem,hierarchisches Dateisystem. Es wurde am 19. Januar 1998 mitMac OS 8.1 eingeführt und war lange Zeit das Standard-Dateisystem fürMacintosh-Rechner mitMac OS X, das seit 2012 OS X und seit 2016 macOS heißt, undiOS-Geräte (iPhone,iPad, iPod, Apple TV undApple Watch) und kann für alle internen und externen Speichermedien verwendet werden. In Mac OS X selbst wurde es alsMac OS Extended und sein Vorgänger HFS alsMac OS Standard bezeichnet.[2]
Im Vergleich mit FAT16/32 sind die Zuordnungseinheiten von HFS+ kleiner – dadurch kann sich bei derPartition bzw. bei der Partitionsverwaltung und Zugriffsgeschwindigkeit eine höhere Effizienz ergeben.
Der Nachfolger von HFS Plus ist das 2016 vorgestellteApple File System (APFS).
Es gibt mehrere, teils kombinierbare Varianten von HFS Plus. Der Vollständigkeit halber wird auch das ältere HFS hier aufgelistet, wie es unter Mac OS X im Festplatten-Dienstprogramm zur Auswahl steht oder stand. In neueren Versionen von OS X/macOS sind die älteren Varianten teilweise nicht mehr verfügbar.
.journal und.journal_info_block realisiert, sodass das Dateisystem selbst wahlweise mit oder ohne Journal eingebunden werden kann.[5] Auch ältere Versionen von Mac OS/Mac OS X können somit dasselbe Dateisystem verwenden, jedoch ohne das Journal.Außer in der HFSX-Variante macht bei HFS Plus standardmäßig das Dateisystem (dessen Treiber) keine Unterscheidung zwischen Groß- und Kleinbuchstaben imDateinamen, sodass z. B.Dateiname.ext (großer Anfangsbuchstabe) dieselbe Datei repräsentiert wiedateiname.ext (alles in Kleinbuchstaben). DieNormalisierung (Umwandlung von Groß- und Kleinbuchstaben,NFD-Normalisierung beiUnicode) findet dabei im Dateisystem-Treiber statt.
HFS Plus wurde nach der Umstellung von derPowerPC- auf dieIntel-Architektur 2006 nur noch in derJournaling-Variante genutzt. Wie etwa diefreien Dateisystemeext3/ext4,XFS undReiserFS oder das kommerzielleNTFS der FirmaMicrosoft, weist es damit eine höhere Stabilität gegenüber Dateisystemen auf, die keinJournaling verwenden (FAT16 undFAT32,ext2,HFS u. a.).
Unterklassischem Mac OS und auf denPowerPC-Versionen vonMac OS X verwendet HFS und HFS Plus dieselbe PartitionskennungApple_HFS in derApple Partition Map (APM). In der Variante HFSX wird aus Kompatibilitätsgründen hingegen die KennungApple_HFSX genutzt, damit ältere Betriebssysteme nicht versehentlich eine modernere (inkompatible) Variante von HFS Plus einbinden, was eventuell zu Systeminstabilität und Datenverlust führen könnte. Dies ist u. a. für diecase-sensitive Variante von HFSX der Fall, nicht aber bei derJournaling-Variante.
Seit der Umstellung auf die Intel-ProzessorarchitekturIA-32 2006 wirdGUID Partition Table (GPT) alsPartitionstabelle verwendet. Die alte HFS-Partition ist darin nicht mehr abgebildet – HFSX mitGUID48465300-0000-11AA-AA11-00306543ECAC ist die Standard-GPT-Kennung für das HFS-Plus-Dateisystem.
FürRAID- undFileVault-Partitionen gibt es abweichende Partitions-GUIDs innerhalb einer GUID-Partitionstabelle (GPT), wie auch für RAID-Partitionen innerhalb einerApple Partition Map (APM). Diese Partitionstypen können ebenfalls ein HFS-Plus-Dateisystem enthalten, müssen aber nicht.
Unter den Linux-Distributionen ist das Lesen und Schreiben von HFS/HFS+ oft schon durch einfachesmounten möglich, wenn der Kernel dashfsplus-Dateisystem unterstützt; ansonsten sind noch die Softwarepaketehfsutils (nur HFS) sowiehfsplus zum Nachinstallieren verfügbar. Für Schreibunterstützung kann es notwendig sein,hfsprogs zu installieren[8] oder das Dateisystem-Journal zu deaktivieren.[9] Auch fürBSD-Systeme gibt es entsprechende Software-Pakete. Das heißt, dass die Daten auf dem Datenträger vonUnix/Linux-Systemen gelesen werden können, wenn die entsprechendeKernel-Unterstützung installiert wurde.
HFS+ kann vonNT-basierendenWindows-Betriebssystemen nur mit Hilfe von zusätzlicher Software genutzt werden.Boot Camp 3.0, welches mitMac OS X Snow Leopard (10.6, 2009) mitgeliefert wird, bietet die Möglichkeit, lesend auf HFS+-Dateisysteme zuzugreifen.[10]
DieClassic-Umgebung unter Mac OS X erfordert eine mit HFS+ formatierteSystempartition, das DateisystemUFS wird nicht unterstützt.
HFS und HFS+ sind so ausgelegt, dass sie den größten freien Speicherblock auf der Festplatte suchen, in dem eine Datei gespeichert werden soll. Erst wenn eine Datei nicht in den größten freien Speicherblock passt, wird die Datei aufgeteilt (fragmentiert), und der noch nicht geschriebene Teil wird in einem weiteren Block gespeichert.
Eine solche Vorgehensweise setzt voraus, dass beim Schreiben einer Datei deren Größe bereits vorher bekannt ist. Dies ist unterMac OS X oft gegeben, da dieSystembibliotheken zur Verarbeitung von Dokumenten so ausgelegt sind, dass sie Dateien in der Regelatomar aktualisieren: Beim Speichern einer Änderung wird die aktuelle Version des Dokumentes in einem Rutsch in eine neue Datei geschrieben, danach die frühere Version gelöscht und der Dateiname auf die neue Datei übertragen.
Zusätzlich vermeidet es Mac OS X, frei gewordene Speicherblöcke gelöschter Dateien wiederzuverwenden, falls möglich. AbMac OS X 10.2 („Jaguar“, 2002) wird außerdem die Abbuchung freier Blöcke verzögert, um die Reservierung mehrerer kleiner Blöcke in eine einzelne Abbuchung eines großen zusammenhängenden Blockes zusammenzufassen.
Diese Fragmentvermeidung ist wirkungslos, wenn Dateien langsam wachsen, also nach dem ersten Erstellen einer Datei später weitere Blöcke angehängt werden. AbMac OS X Panther (10.3, 2003) kann das Betriebssystem deshalb auch zur Laufzeit defragmentieren(on the fly defragmentation). Beim Öffnen einer Datei wird geprüft, ob diese in mehr als acht Teile fragmentiert ist. Ist dies der Fall und alle der nachfolgenden Bedingungen treffen zusätzlich zu, wird die Datei in einen genügend großen freien Speicherbereich verschoben und hierdurch defragmentiert:
Ein weiteres Verfahren, das ab Version 10.3 von Mac OS X (Panther, 2003) zum Einsatz kommt, ist die automatische Gruppierung intensiv genutzter Dateien(adaptive hot file clustering): Durch kontinuierliches Führen einer Statistik über die Häufigkeit der Lesezugriffe auf jede Datei identifiziert Mac OS X die am intensivsten genutzten Dateien und verschiebt diese in einen Bereich des Dateisystems, der sich direkt hinter den zentralenMetadaten befindet. Bei dieser Verschiebung werden die Dateien defragmentiert und kommen in direkter Nachbarschaft der am häufigsten benutzten Elemente des HFS-Dateisystems zu liegen, so dass Kopfbewegungen derFestplatte minimiert werden. Die Nutzungsintensität einer Datei wird ermittelt, indem die Anzahl der innerhalb eines Beobachtungsfensters der letzten 60 Stunden gelesenenBytes durch die Gesamtgröße der Datei geteilt wird. Als Speicherbereich für diese Dateien wird 0,5 % der Gesamtkapazität des Dateisystems verwendet. Die Anzahl der Dateien in diesem Bereich wird auf maximal 5.000 beschränkt, und nur Dateien, die höchstens 10 MiB groß sind, nehmen an dem Verfahren teil.
Weitere Defragmentierungsverfahren sind nicht Bestandteil von Mac OS X. Apple rät davon ab, Programme zur nachträglichen Defragmentierung zu verwenden, da sich der Einsatz in der Regel nicht lohnt.
Ein bekanntes Problem bei der Verwendung von HFS Plus ist die Voreinstellung aufcase-insensitivity, die auf Dateisystemebene erzwungen wird. Durch diese Eigenschaft entstehen ungewollte Inkompatibilitäten im Datenaustausch mit anderen Computersystemen. Anders als z. B. beiNTFS, wo die case-insensitivity vonWindows nicht im Dateisystem selbst integriert ist, werden bei HFS Plus die Dateinamen durch den Dateisystemtreiber von Apple direkt umgewandelt.[13]
Obwohl von HFS Plus auch eine strikteCase-sensitive-Variante existiert – sie wurde als „HFSX“ mit Mac OS X Panther (10.3, 2003) eingeführt – wird diese nur sehr selten genutzt, ist daher auch weniger gut getestet und teilweise sogar mit weit verbreiteterAnwendungssoftware inkompatibel.[14][15] Dies ist jedoch keine Einschränkung von HFS Plus, sondern vielmehr ein Problem desBetriebssystems, dacase sensitivity untermacOS (bis 2012 „Mac OS X“, bis 2016 „OS X“) in gleicher Weise auf anderen Dateisystemen (z. B.NTFS mittelsNTFS-3G) zu Inkompatibilitäten führt.