Volume Structure
An HFS+ volume consists of 9 main structures:
-
Boot Blocks are found in sectors 0 and 1 and are identical to the boot blocks found in HFS.
-
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.
-
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.
-
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.
-
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.
-
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.
-
Startup File is designed for non-Mac OS systems without HFS or HFS+ support; comparable to the HFS volume Boot Blocks.
-
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.
-
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 |
MBR | 0xAF |
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 |