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

投稿者 | 2020-01-01

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

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

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

最たる効果として、一つのボリュームに対して割り当てる事が可能なアドレス数が、HFS(16bit)における65,536から、HFS Plus(32bit)では約43億(4,294,967,295)にまで拡張され、大容量ディスクにおけるファイル管理、格納効率の飛躍的な向上等に貢献する事となる。

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

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

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

「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 拡張(大文字と小文字を区別/ジャーナリング))」への拡張にも対応し、ファイル名における英大文字/小文字を別の文字として扱う事(case-sensitive)を可能とした。尚、「HFS」から「HFS Plus」へとファイルシステムを変更するためには、ディスク(ボリューム)の初期化を必要としていた(必ずしも物理フォーマットではなく、論理フォーマットでも可)(最終更新日 2020年5月24日)。