HFS+
HFS+, or Hierarchical File System Plus, is the file system designed by Apple Computer[1] to supersede HFS. First introduced with Mac OS 8.1, one of the biggest differences was the lower allocation block size of 4kb, which increased performance and lowered fragmentation [2]. It also implemented Unicode (rather than Mac proprietary formats) for naming files.
There are structurally many differences between HFS and HFS+, which are listed below[3]:
|
Feature |
HFS |
HFS Plus |
Benefit/Comment |
|
User visible name |
Mac OS Standard |
Mac OS Extended | |
|
Number of allocation blocks |
16 bits worth |
32 bits worth |
Radical decrease in disk space used on large volumes, and a larger number of files per volume. |
|
Long file names |
31 characters |
255 characters |
Obvious user benefit; also improves cross-platform compatibility |
|
File name encoding |
MacRoman |
Unicode |
Allows for international-friendly file names, including mixed script names |
|
File/folder attributes |
Support for fixed size attributes (FileInfo and ExtendedFileInfo) |
Allows for future meta-data extensions |
Future systems may use metadata for a richer Finder experience |
|
OS startup support |
System Folder ID |
Also supports a dedicated startup file |
May help non-Mac OS systems to boot from HFS Plus volumes |
|
catalog node size |
512 bytes |
4 KB |
Maintains efficiency in the face of the other changes. (This larger catalog node size is due to the much longer file names [512 bytes as opposed to 32 bytes], and larger catalog records (because of more/larger fields)). |
|
Maximum file size |
231 bytes |
263 bytes |
Obvious user benefit, especially for multimedia content creators. |
An HFS+ volume contains five special files:
- Catalog file - Describes the folder and file hierarchy of the volume. It is organized as a "balanced tree" for fast and efficient searches
- Extents overflow file - Additional extents (contiguous allocation blocks allocated to forks) are stored in a b-tree in this file
- Allocation file - Specifies whether an allocation block is free (similar to $Bitmap in NTFS). This is stored in a bitmap, specifying a free allocation block with a "clear bit"
- Attributes file - Contains attribute information regarding files or folders
- Startup file - Allows computers to boot that do have built in support for HFS+ file systems
HFS+ also implements journaling, which allows fast recovery in the case of a crash or power outage. According to Apple, "The purpose of the journal is to ensure that when a group of related changes are being made, that either all of those changes are actually made, or none of them are made."[4]
Apple technical notes are available for the HFS+ file system from their website.