HFS PlusまたはHFS+ ( Mac OS ExtendedまたはHFS Extended [ 5 ]とも呼ばれる) は、Apple Inc.が開発したジャーナリングファイルシステムです。1998 年にMac OS 8.1がリリースされ、Hierarchical File System (HFS) に 代わってApple コンピュータのプライマリファイルシステムとなりました。HFS+ は、2017 年にmacOS High SierraでリリースされたApple File System (APFS)に置き換えられるまで、 Mac OS X のプライマリファイルシステムとして使用され続けました。HFS + は、 iPodデジタルミュージックプレーヤーでサポートされているフォーマットの 1 つでもあります。2026 年に、macOS Golden Gate は暗号化された HFS+ を正式に非推奨とし、暗号化されたAPFSを推奨しました。[ 6 ]
前身のHFS ( Mac OS StandardまたはHFS Standardとも呼ばれる)と比較して、 HFS Plusははるかに大きなファイル(ブロックアドレスが16ビットではなく32ビット長)をサポートし、アイテムの名前付けにUnicode ( Mac OS Romanや他のいくつかの文字セットの代わりに)を使用します。HFSと同様に、HFS PlusはBツリーを使用してボリュームメタデータの大部分を保存しますが、ハードリンクをサポートするほとんどのファイルシステムとは異なり、HFS Plusはディレクトリへのハードリンクをサポートします。HFS Plusは、最大255文字の長さのファイル名と、NTFSと同様のnフォークファイルを許可しますが、2005年までは、データフォークとリソースフォーク以外のフォークを利用するシステムソフトウェアはほとんどありませんでした。HFS Plusはまた、HFSの16ビットではなく完全な32ビットの割り当てマッピングテーブルを使用するため、大容量ディスクのスペースの使用効率が向上します。
開発中はコードネームSequoiaと呼ばれていた HFS+ は、 1998 年 1 月 19 日にMac OS 8.1のリリースとともに導入されました。[ 2 ]
2002年11月11日にMac OS X 10.2.2アップデートがリリースされた際、Appleはデータ信頼性を向上させるためにHFS Plusにオプションのジャーナリング機能を追加しました。これらの機能はMac OS X Serverのディスクユーティリティアプリケーションを使用してGUIからアクセスできましたが、標準のデスクトップクライアントではコマンドラインからのみアクセスできました。[ 8 ]
Mac OS X v10.3以降では、すべてのMac上のすべてのHFS Plusボリュームがデフォルトでジャーナリングされるように設定されました。システム内では、ジャーナルを持つHFS PlusボリュームはHFSJとして識別されます。
Mac OS X 10.3 では、HFSXと呼ばれる HFS Plus の別のバージョンも導入されました。HFSX ボリュームは、HFS Plus ボリュームとほぼ同じですが、HFS Plus ボリュームに典型的なHFS Wrapperで囲まれておらず、ファイル名とフォルダ名の大文字小文字の区別をオプションでサポートしています。HFSX ボリュームは、ボリューム ヘッダーの 2 つのエントリ、署名フィールドの値が HX、バージョン フィールドの値が 5 であることで識別できます。[ 2 ]
Mac OS X 10.3では、AppleがUnicode 3.2分解を採用し、それまで使用されていたUnicode 2.1分解に取って代わりました。この変更は、Mac OS X向けソフトウェアを開発する開発者に問題を引き起こしました。[ 9 ]
Mac OS X 10.3では、HFS+におけるファイルの断片化を回避することを目的とした多くの技術が導入されました。[ 10 ]
Mac OS X 10.4 では、Apple はインライン属性データレコードのサポートを追加しました。これは少なくとも10.0以降、HFS Plus の Mac OS X 実装の一部でしたが、常に「将来の使用のために予約済み」とマークされていました。[ 11 ] Mac OS X Server 10.4がリリースされるまで、HFS Plus は標準の UNIXファイルシステムのアクセス許可のみをサポートしていました。しかし、10.4 ではアクセス制御リストベースのファイルセキュリティのサポートが導入され、ファイルアクセス許可を定義するためのより豊富なメカニズムが提供され、 Microsoft Windows XPやWindows Server 2003などの他のプラットフォームのファイルアクセス許可モデルと完全に互換性があるように設計されています。[ 12 ]
Mac OS X Leopard 10.5では、ディレクトリのハードリンクがTime Machineの基本機能として追加されました。
Mac OS X Snow Leopard 10.6 では、Deflate (Zlib) を使用して HFS+ 圧縮が追加されました。オープンソースやその他の分野では、これは AppleFSCompression または decmpfs と呼ばれています。圧縮データは、拡張属性またはリソース フォークのいずれかに格納できます。Apple 以外の API を使用する場合、AppleFSCompression は必ずしも完全に透過的ではありません。[ 13 ] OS X 10.9 では、LZVN (libFastCompression) とLZFSE という2 つの新しいアルゴリズムが導入されました。
Mac OS X Lion 10.7では、論理ボリューム暗号化(FileVault 2として知られる)がオペレーティングシステムに追加されました。このオペレーティングシステムへの追加は、ファイルシステムの論理構造を一切変更するものではありません。Appleの論理ボリュームマネージャはCore Storageと呼ばれ、ボリュームレベルでの暗号化はHFS Plus以外のファイルシステムにも適用できます。適切なハードウェアを使用すれば、暗号化と復号化は透過的に行われます。
2027年にリリース予定のmacOS 28では、暗号化されたHFS+ドライブのサポートが削除されます。[ 14 ]
HFS Plus ボリュームは、通常 512 バイトのサイズのセクタ (HFS では論理ブロックと呼ばれます) に分割されます。これらのセクタは、1 つ以上のセクタを含むことができる割り当てブロックにグループ化されます。割り当てブロックの数は、ボリュームの合計サイズによって異なります。HFS Plus は、割り当てブロックのアドレス指定に HFS よりも大きな値、つまり 16 ビットではなく 32 ビットを使用します。これは、HFS で使用可能な 65,536 (= 2 16 ) 個の割り当てブロックではなく、4,294,967,296 (= 2 32 ) 個の割り当てブロックにアクセスできることを意味します。 [ 2 ]ディスクが小さかったときは、これはほとんど問題になりませんでしたが、大容量のドライブが利用可能になると、どのファイルも占有できる最小のスペース (単一の割り当てブロック) が過度に大きくなり、かなりのスペースが無駄になることを意味しました。例えば、1GBのディスクでは、HFSにおける割り当てブロックサイズは16KBなので、1バイトのファイルでも16KBのディスク容量を消費します。HFS Plusのシステムは、その結果として、大容量ディスクにおける容量利用効率を大幅に向上させます。
HFS Plus のファイル名とフォルダ名もUTF-16 [ 15 ]でエンコードされ、 Unicode Normalization Form D (NFD) [ 16 ]とほぼ同じ形式に正規化されます(つまり、「å」のような合成文字は HFS+ ファイル名で分解され、2 つのコード ユニットとしてカウントされます[ 17 ]。また、UTF-16 では、基本多言語面以外の文字も HFS+ ファイル名で 2 つのコード ユニットとしてカウントされます)。HFS Plus では、最大 255 UTF-16 コード ユニットの長さのファイル名を使用できます。
以前は、HFS Plus ボリュームは HFS 標準ファイルシステム内に埋め込まれていました。これは Tiger から Intel Mac への移行に伴い段階的に廃止され、HFS Plus ファイルシステムはラッパー内に埋め込まれなくなりました。ラッパーは 2 つの目的で設計されていました。1 つは HFS Plus を ROM でサポートしていない Macintosh コンピュータで HFS Plus ボリュームを起動できるようにするため、もう 1 つは、HFS Plus をサポートしていない Mac OS 8.0 以前のバージョンを使用しているユーザーにボリュームには HFS Plus をサポートするシステムが必要であることを説明する読み取り専用ファイルWhere_have_all_my_files_gone?を含む最小限のHFS ボリュームを含めることで、ユーザーが HFS Plus に移行できるようにするためのものでした。元の HFS ボリュームには、ボリューム ヘッダー内に埋め込まれた HFS Plus ボリュームへの署名とオフセットが含まれています。埋め込まれたボリュームを含む HFS ボリューム内のすべての割り当てブロックは、HFS 割り当てファイルから不良ブロックとしてマッピングされます。[ 2 ]
Unixシステムで使用されるファイルシステムの中でも特筆すべきは、HFS Plusがスパースファイルをサポートしていない点である。
典型的な HFS Plus ボリュームは 9 つの構造で構成されています。[ 2 ]
HFS Plusには、 ZFSやNTFSなどの最新のファイルシステムの必須機能とされるいくつかの機能が欠けている。[ 19 ]データチェックサムは、最もよく指摘される欠落機能である。[ 20 ]
チェックサム機能に加えて、HFS+にはない最新のファイルシステムの機能には以下のようなものがある。
HFS PlusはUnix系システム向けに設計されていなかったため、 AppleがMac OS Xに移行した際に、ファイルシステムのパーミッションやハードリンクなどの機能を後付けする必要があった。[ 20 ]
ある情報源は、HFS Plus はSSD上でTRIM をサポートしていないと明確に主張しており、[ 22 ]パフォーマンスが制限され、摩耗が増加します[ 23 ]。しかし、別の情報源は、外部ストレージの場合、SSD に NVMe インターフェイスがあるかどうか、および/または機能が明示的に有効になっているかどうかにのみ依存すると述べています。[ 24 ]
Linuxカーネルには、HFS+ファイルシステムを読み書きマウントするためのhfsplusモジュール[ 25 ]が含まれています。HFS+のfsckとmkfsはLinuxに移植され、hfsprogsパッケージの一部となっています[ 26 ] 。
2009年、これらのドライバは2TBを超える容量のHFS+ドライブを破損させることが判明した 。[ 27 ]その結果、DebianやUbuntuなどのLinuxディストリビューションは、2TBを超えるHFS+ドライブまたはパーティションのマウントを許可しなくなった 。[ 28 ] 2011年2月現在 この制限を解除するための作業が進行中です。[ 29 ]
Linux の現在の HFS+ ドライバでは、HFS+ パーティションにデータを安全に書き込むには、ジャーナリングを無効にする必要があります。パーティションが Apple のTime Machineソフトウェアで使用されていない限り、macOS ではジャーナリングを無効にすることができます。[ 30 ] OS X Yosemite のディスクユーティリティを使用する場合、マウントされたパーティションを最初に選択した後、Alt/Option キーを押しながらファイル メニューの「ジャーナリングを無効にする」をクリックします。
ジャーナリングが有効になっている HFS+ パーティションは、Linux では書き込みアクセスで強制的にマウントできますが、これはサポートされておらず、賢明ではありません。[ 30 ] [ 31 ]
ジャーナリング HFS+ [ 32 ]への書き込みサポートを実装する Google Summer of Code プロジェクトは、2011年に Linux Foundation に採択されましたが、その時点では完了しておらず、現在も開発中です。ジャーナリング サポートの更新を含む HFS+ ドライバの進捗状況と改善は、linux-fsdevel メーリングリスト[ 33 ]に随時投稿されます。
2011年7月現在 Paragon Software Group は、HFS+ ジャーナル ボリュームへの完全な読み書きアクセスを可能にするカーネル ドライバを提供しました。[ 34 ]この製品は、Paragon 独自の UFSD ライブラリに基づく HFS+ の独自実装です。ドライバには無料版と有料版があり、HFS+ ボリュームのチェックと修復を行うユーティリティが含まれています。オンライン ドキュメント (無料版[ 35 ]または有料版[ 36 ] ) によると、無料版と有料版の両方が、現在 2.6.36 から 4.12.x までの Linux カーネルをサポートしています。Ubuntu 、Debian、Fedora Linux、Rocky Linux、Red Hat Enterprise Linux、OpenSUSE、CentOS は、公式にサポートされている唯一の Linux ディストリビューションです。[ 37 ]
2012年5月現在、AppleはMac OS X 10.6のBoot Campソフトウェアの一部として、Windows XP、Windows Vista、Windows 7用の読み取り専用HFS+ドライバのみをリリースしています。[ 38 ]これは、これらのシステムのユーザーがHFS+ドライブ上のデータを読み取ることはできますが、書き込むことはできないことを意味します。Microsoftは、主にHFS+フォーマットのiPodを読み取る目的で、Xbox 360用のHFS+ドライバを作成しました。
HFSExplorerとjpfmをベースにした無料のオープンソースソフトウェアであるjHFSplusを使用すると、hfs/hfs+パーティションを読み取り専用の仮想フォルダとしてマウントできます。[ 39 ]
Total Commander用のフリーウェア プラグインが存在し、HFS や HFS+ ファイルシステムなどを読み込むことができます。[ 40 ]
DiskInternals Linux Reader を使用すると、HFS および HFS+ ハードドライブ/パーティションからフォルダ/ファイルを抽出/保存できます。[ 41 ]
市販製品であるMacDriveは、WindowsエクスプローラーでHFS+およびAPFSドライブ、光ディスク、その他のメディアをマウントするためにも利用でき、ボリュームへの読み書きだけでなく、Macディスクの修復やフォーマットも可能です。[ 42 ]
Paragon社のHFS+ for Windowsは商用製品であり、Windows XPからWindows Server 2008までのすべてのバージョンのWindowsで完全な読み書きとディスク管理を可能にします。[ 43 ]
無料の( GPL )代替手段として、Erik Larsson 氏が作成した HFSExplorer があります。[ 44 ] HFSExplorer は、HFS+ ボリューム (Mac OS 拡張) または HFSX ボリューム (Mac OS 拡張、大文字小文字を区別) からファイルを表示および抽出するための Java アプリケーションです。ボリュームは、物理ディスク、さまざまなApple ディスク イメージおよびスパース ディスク イメージ フォーマット、または生のファイルシステム ダンプのいずれかに配置できます。ただし、HFSExplorer は読み取り専用のソリューションであり、HFS フォーマットのボリュームに書き込むことはできません。
は SSD に最適化されていません。HFS+ には、SSD のパフォーマンスを最大限に維持できるトリム サポートなどの機能がありません。
これらはすべて蓄積され、SSD内部にあるフラッシュメモリチップの急速な摩耗を引き起こします。
通常、APFSとHFS+はNVMeインターフェースを備えたSSDのみTrimします。
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク){{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク){{citation}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)