HFS Plus(エイチエフエスプラス)

米Appleより開発、提供等が行われていた、32bitファイルシステム テクノロジー。Classic Mac OS、macOS(Mac OS X)を対象プラットフォームとし、「Hierarchical File System Plus」の略称で「Mac OS拡張フォーマット」とも称されている(開発コードネーム「Sequoia」)。米国時間1998年1月19日付にてリリースされた「Mac OS 8.1(Bride of Buster)」において、中核機能の一つとして新たに実装され、米国時間2017年9月26日付にて「APFS(Apple File System)」がリリースされるまでの約19年に渡り、macOSの土台を支え続けてきた。

約20年に渡り、Mac OSを支え続けた 32bitファイルシステム

「System 3.x」が稼働していた1985年に、従来までのフラットなファイルシステム「MFS(Macintosh File System)」を拡張した形にてリリースされた「HFS(Hierarchical File System、Mac OS標準フォーマット)」が ディスク上のリソースを16bitで管理していたのに対して、HFS Plusでは この制限を32bitにまで拡張した。

2進数で32桁までの数値を扱う事が可能な32bitアーキテクチャーに対応した最たる効果として、単一のボリュームに対して割り当てる事が可能なアドレス数が「HFS(16bit)」における65,536(0~65,535)から「HFS Plus(32bit)」では約43億(0~4,294,967,295)にまで拡張された(負数は2の補数として扱われる。尚、64bitでは約1800京(0~18,446,744,073,709,600,000)の数値(常識的にほぼ無限)を扱う事が可能となっている)。この拡張によって、大容量ディスク(ボリューム)におけるファイル管理、格納効率の飛躍的な向上等に貢献する事となる。

※アロケーションブロック(単一、或いは複数の論理ブロックで構成されたボリューム上の記憶容量の単位)の理論的な最大数は、ファイルシステムでサポートされているbitが扱える数と等価になり、ボリュームサイズに比例して、単一のアロケーションブロックに割り当てられる論理ブロックの数も増える事となる。尚、32bitアーキテクチャーに対応するHFS Plusでは、1ボリュームを最大で約43億分割する事が可能(この数値は理論上の最大値であるため、ボリュームサイズによっては これ以下となる事もあり得る)。

リリース当初は、Classic Mac OSにおける「Finder」の制限に起因して、幾つかのメリット、持ち得るポテンシャルがスポイルされる形となっていたが、Mac OS Xの時代を迎えると共に それらの制限からもリリースされ、状況は一変した。

尚、「HFS」から「HFS Plus」へとファイルシステムを変更するためには、ディスク(ボリューム)の初期化を必要としていた(必ずしも物理フォーマットではなく、論理フォーマットにて対応可能)。

BSD UNIXベースの「Darwin」を基盤とするMac OS Xは、UNIXに由来した多数の不可視ファイルを含めて、基本的なシステム構成だけで数万単位のファイルの数を必要としていたため、16bitスケールのHFS標準では システムの土台を支える事が困難となっていた。この状況を改善するためにも、32bitアーキテクチャーのHFS Plus(32bit)への完全移行が 必然的に実現される事となった(持ち得るポテンシャルをフルに活用する事が可能な土台が整った形となった)。

「Mac OS 8.1(Bride of Buster)」から更に上位互換

「Mac OS 8.0(Tempo)」以前のシステムでは、HFS Plusでフォーマットされたボリュームを認識する事ができないが、「Mac OS 8.1(Bride of Buster)」以降が、ネットワーク上に共有リソースとして提供したHFS Plusボリューム(ファイル共有にて、共有ポイントとして設定したボリューム)は、「Mac OS 8.0(Tempo)」以前のシステムからでもアクセスする事が可能となっている。

つまり、HFS Plusボリュームを提供する「Mac OS 8.1(Bride of Buster)」以降のサーバー(Mac OS X含む)に対して、HFSボリュームから起動している旧版のクライアントが自らを接続し、サービスを受ける事ができる。

対応可能なボリューム数、ファイル数、及びケースの扱い

「HFS Plus」に対応する macOSの最終版(macOS 10.12.6)とClassic Mac OSの最終版(Mac OS 9.2.2)の、ボリュームやファイルに対する制限事項は、以下の通りとなる。

最大ボリューム数

  • Mac OS X 10.12.6 – 制限なし
  • Mac OS 9.2.2 – 21

最大ボリュームサイズ

  • Mac OS X 10.12.5 – 16TB(1テラバイト=1兆バイト)
  • Mac OS 9.2.2 – 2TB

1フォルダーに格納可能なファイル、フォルダー数

  • Mac OS X 10.12.5 – 約21億(2の31乗=2,147,483,648。但し、ボリューム容量によっては、この数をフルにサポートできる訳ではない)
  • Mac OS 9.2.2 – 32,767

ファイル、フォルダーに付する事のできる名称(ファイル名、フォルダー名)の長さ

  • Mac OS X 10.4.5 – 255byte(半角255文字)
  • Mac OS 9.2.2 – 31byte(半角31文字)

ファイル名のハンドリングに関しては「case-insensitive」を採用し、英大文字/小文字の違いを識別しつつ、ファイルシステムにおいてはそれらの違いを吸収し、同一の文字として扱う仕様となっている。

また、米国時間2001年3月24日付にてリリースされた「Mac OS X 10.0 Cheetah」以降では、FinderレベルでUnicodeにも正式に対応した。

ジャーナリングファイルシステム、HFSX

米国時間2002年11月11日付にてリリースされた「Mac OS X 10.2.2」より、トランザクション単位でメタデータを管理し、可用性(Availability)の向上等に貢献する ジャーナリングファイルシステムにも対応する事となる。

また、米国時間2003年10月24日付にてリリースされた「Mac OS X 10.3 Panther(Mac OS X 10.3.0)」以降では、「HFSX(Mac OS 拡張(大文字と小文字を区別/ジャーナリング))」への拡張にも対応し、Mac OS Xが嘗てサポートしていた「UFS(UNIX File System)」と同様に、ファイル名における英大文字/小文字を別の文字として扱う仕様(case-sensitive)に対応した。

これにより、「MacOSX」というファイルと「macosx」というファイルは「HFS Plus」では同一ファイルとして認識されるが、「UFS」「HFSX」では別ファイルとして認識される事となる(最終更新日 2023年10月14日)。