HFS+ ist das Standard-Dateisystem von Mac OS X. Es kann für Festplatten, Disketten, CDs und USB-Speicher-Sticks verwendet werden.
HFS+ ist ein Journaling-Dateisystem, und weist daher eine höhere Stabilität gegenüber Dateisystemen auf, die kein Journaling verwenden (FAT16 und FAT32, ext2, HFS etc.)
HFS+ kann seit Mac OS X 10.2.2 um eine Journaling-Option (HFSJ) erweitert werden, welche seit 10.3 auch standardmäßig aktiviert ist. Ebenfalls neu in 10.3 ist HFSX; eine Erweiterung, die bei Dateinamen zwischen Groß- und Kleinschreibung unterscheidet (case-sensitive).
Die maximale Größe einer Datei oder eines Datenträgers beträgt unter Mac OS X 10.3 16 Terabyte und unter allen früheren Versionen von Mac OS X 2 Terabyte.
HFS+ kann bis zu 4 Milliarden Blöcke verwalten, welche entweder Dateien und Ordner beinhalten können. Dies ist Abhängig von der Größe des Datenträgers, der Dateien und der Blöcke an sich. Auf einen 160 GB großen Datenträger mit einer Blockgröße von 4 KB passen z.B. 40 Millionen Dateien mit einer Größe bis 4 KB, 20 Millionen mit einer Größe bis 8 KB, usw. Die bevorzugte Blockgröße beträgt 4 KB.
HFS+ nutzt den Speicherplatz möglichst effizient aus, und versucht Fragmentierungen zu verhindern.
HFS+ besteht aus folgenden Strukturen:
– dem Volume Header
– dem Catalog File
– dem Extents Overflow File
– dem Attribut File
– dem Allocation File
– und dem Startup File

Notes
Fragmentierung Longneck, 30 May 2006
Wenn man eine Datei auf der Festplatte speichert, sucht das Dateisystem nach freiem Speicherplatz um die Daten zu schreiben. Wenn es keinen ausreichend großen Speicherplatz gibt, verteilt es die Datei auf mehrere kleinere Speicherbereiche. Wenn eine Datei in mehreren Teilen gespeichert wird, nennen wir das Fragmentierung. Jedes Teil wird Fragment genannt.
Eine Datei kann in zwei, 20 oder 200 Fragmente geteilt sein. Für das Dateisystem spielt das keine Rolle; es kann jede Anzahl von Fragmenten gleich gut behandeln. Allerdings: es dauert länger, eine fragmentierte Datei zu lesen, als eine unfragmentierte. Je mehr Fragmente eine Datei hat, desto länger dauert der Lesevorgang. Das liegt daran, dass der Schreib-Lesekopf sich zu jedem Fragment bewegen muss um es gesondert zu lesen. Ein Datenpaket am Stück zu lesen geht schnell, auch wenn das Paket recht groß ist. Aber von Spur zu Spur zu wandern um jedes Fragment einzeln zu lesen, ist vergleichsweise langsam (und ich meine “vergleichsweise” – wir sprechen hier von zusätzlichen Millisekunden).
Woher stammt nun dieser “Defragmentierungskult”? In den Anfangstagen von Windows und davor MS-DOS benutzten PCs das FAT (File Allocation Table) Dateisystem. Es ist uns überliefert, das das FAT Dateisystem ziemlich übel war, was Fragmentierung betraf. Daher wurden die Festplatten rasch und stark fragmentiert. Damals waren Festplatten und Computer überhaupt extrem langsam, besonders, wenn man sie mit heutigen Standards vergleicht. Bei diesen ätzend langsamen Festplatten und Computern konnte Defragmentierung eine spürbare Verbesserung der Performance bewirken. Moderne Computer und Festplatten sind natürlich viel schneller und verfügen über größere und ausgeklügelte Festplattencaches, was das Problem der Fragmentierung insgesamt deutlich reduziert.
Als Apple das HFS (Hierarchical File System) Dateisystem für den Mac entwarf und als sie es später durch HFS+ ersetzten, achteten sie besonders darauf, die Fragmentierung zu minimieren. Alle Festplatten speichern Daten in Blöcken zu 512 byte, die man Sektoren nennt. FAT, HFS und HFS+ benutzen größere Blöcke, die bei FAT Clusters und bei HFS Allocation Blocks genannt werden. Ein Zweck von Clusters und Allocation Blocks besteht darin, Dateien in größeren Stücken zu speichern, um dadurch die Fragmentierung zu verringern. Aber HFS geht einen Schritt weiter: Wenn eine Datei auf die Festplatte gespeichert wird, dann benutzt das Mac Dateisystem noch größere Einheiten, die Clumps genannt werden, um die Fragmentierung weiter zu reduzieren.
Wenn das Mac Dateisystem eine Datei speichert, dann sucht es nach einem Speicherplatz, der groß genug ist, um die ganze Datei aufzunehmen. Steht so ein Platz nicht zur Verfügung, dann findet es den größten verfügbaren Platz, dann den nächsten und so weiter, um die Fragmentierung so weit wie möglich einzuschränken. HFS wird niemals eine Datei fragmentieren, wenn es sich vermeiden lässt.
Es gibt zwei Ursachen, die bei den meisten Computern zu Fragmentierung führen: volle Festplatten und eMail. Grundsätzlich sorgt das HFS+ Dateisystem des Mac zuverlässig dafür, dass die Fragmentierung in Grenzen gehalten wird, wenn genügend freier Speicherplatz bereit steht, um Dateien in zusammenhängenden Blöcken abzulegen. Wie groß sollte dieser freie Speicherplatz sein? Da gibt es keine feste Antwort, aber 20 bis 25 Prozent der Festplattenkapazität kann man als Fausregel nehmen.
Hotfiles Longneck, 30 May 2006
Dateien, die oft benutzt werden, werden in die Nähe der Metadaten des Dateisystems verschoben, damit schneller Zugriff gewährleistet ist.
B-Tree Longneck, 30 May 2006

Ein B-Tree ist in der Informatik eine Daten- oder Indexstruktur, die häufig in Datenbanken und Dateisystemen eingesetzt wird. Ein B-Tree ist ein möglichst weitgehend – aber nicht immer vollständig – balancierter Baum, der Daten sortiert nach Schlüsseln speichert. Das Einfügen, Suchen und Löschen von Daten in B-Trees ist in amortisiert logarithmischer Zeit möglich. B-Trees wachsen – und schrumpfen – anders als die meisten Suchbäume von den Blättern hin zur Wurzel.
Journaling Longneck, 30 May 2006

HFS+ nutzt Journaling, d.h. das Dateisystem kann nach einem Crash schnell wiederhergestellt werden.