Volume Structure

An HFS+ volume consists of 9 main structures:

  1. Boot Blocks are found in sectors 0 and 1 and are identical to the boot blocks found in HFS.

  2. Volume Header is found in sector 2 and is the equivalent to the Master Directory Block in an HFS volume. It stores data about the volume, including the size of allocation blocks, timestamps and the locations of other volume structures such as the Catalog File or Extent Overflow File. It is always found in the same place.

  3. Allocation File keeps track of which bocks are free and which blocks are in use. Like in the Volume Bitmap in HFS, each allocation block is represented by one bit. A zero bit means the block is free, while a one bit indicates towards a block in use. The Allocation File differs from the HFS Volume Bitmap by being stored as a regular file, not occupying a special reserved space at the beginning of the volume. It can also change in size and does not have to be stored contiguously within a volume.

  4. Catalog File is a B-tree containing records for all the files and directories stored in the volume, comparable to the HFS Catalog file. Their main difference is that records with HFS+ are larger to allow more fields and allow these fields to be larger. This is seen in the size of the HFS+ Catalog File being 4 KB in Mac OS and 8 KB in Mac OS X, as opposed to the HFS Catalog File, being only 512 bytes in size. Fields in HFS+ also vary depending on the data they store, unlike HFS where the fields are fixed.

  5. Extents Overflow File is a B-tree that records the allocation blocks that are allocated to each file as extents. Each file in the Catalog File record can record up to eight extents for each fork of a file; additional extents are recorded in the Extents Overflow File. Bad blocks are also recorded as extents here. The default sizes for this file are 1 KB in Mac OS and 4 KB in Mac OS X.

  6. Attributes File is a B-tree only found in HFS+. It can store three types of 4 KB records: Inline Data Attribute records, Fork Data Attribute records and Extension Attribute records. Their purposes are listed in the table below.

  7. Startup File is designed for non-Mac OS systems without HFS or HFS+ support; comparable to the HFS volume Boot Blocks.

  8. Alternate Volume Header is found in the second last sector of an HFS+ volume and is the equivalent of the HFS Alternate Master Directory Block.

  9. Last sector is reserved for use by Apple during the computer manufacturing process.

The following is a table of each of the Attribute File records:

Type of record Purpose
Inline Data Attribute records contain small attributes that can fit within the record itself
Fork Data Attribute records contain references to a maximum of eight extents that can hold larger attributes
Extension Attribute records used to extend a Fork Data Attribute record when its eight extent records are already used

HFS+ with Mac OS 8.0 and earlier

If a Mac OS Extended format volume is connected to a computer running Mac OS 8.0 or earlier, the files will not be visible or accessible, but will still exist. There will be a single document accessible, explaining that the files on the disk are present but inaccessible. Mac OS Extended format volume format volumes can, however, be seen on a computer running Mac OS 8.0 or earlier if the HFS+ file is shared on a network by a computer running Mac OS 8.1 or later.

Overview of HFS+

Developer Apple Inc.
Full Name Hierarchical File System Plus
Alternative Names Mac OS Extended File System, HFS Plus, HFS+
Introduced January 19, 1998
Partition Identifiers:
Apple Partition Map Apple_HFS
Apple Partition Map with HFS X Apple_HFSX
GPT 48465300-0000-11AA-AA11-00306543ECAC
Directory Contents B-tree
File Allocation Bitmap
Bad Blocks B-tree
Maximum File Size 8 exabyte
Maximum Number of Files 4 294 967 295
Maximum Filename Length 255 characters
Maximum Volume Size 8 exabyte
Allowed characters in file names Unicode
Dates Recorded Access, attributes modified, backed up, contents modified, created
Date Range January 1, 1904 – February 6, 2040
Date Resolution 1 s
Forks Yes
Attributes Colour (3 bits, all other flags 1 bit), locked, custom icon, bundle, invisible, alias, system, stationery, inited, no INIT resources, shared, desktop
Transparent Compression Yes (OS X 10.6 and higher)
Transparent Encryption Yes (OS X 10.7 and higher)
Supported Operating Systems Mac OS 8.1, Mac OS 9, OS X, & Darwin, Linux, Microsoft Windows