macOS High Sierra (バージョン10.13)のリリースよりAPFS (Apple File System)が導入されました。
iPhone や iPad の iOS では、バージョン10.3 から導入されています。
Apple File System (APFS)とは
APFS は、HFS+ (Mac OS拡張)の根本的な問題を解決することを目的として導入され、「クローン・スナップショット・暗号化・クラッシュ保護・データの完全性・空き領域の共有・ファイル数の最大値の増加」という特徴があり、ディレクトリの容量計算が速く、これまでの技術である HFS+ より優れたパフォーマンスが提供される次世代のファイルシステムです。
Mac の内蔵ストレージとしての SDD (ソリッドステートドライブ)やその他オールフラッシュ構成のストレージデバイス、iOS デバイスのフラッシュストレージに最適化されています。
ユーザーが実感できる変化としては「クローン・スナップショット」でしょう。
ヘビーユーザーには「空き領域の共有・ファイル数の最大値の増加」も大きなメリットですね。
その他にも「暗号化・クラッシュ保護」も見逃せない改善点です。
クローン
同じボリューム内でのファイルコピーには、クローンを利用することで追加のスペースを消費せずに効率よく作成します。
コピーファイルに対しては、差分データとして保存されるため、ドキュメントの改訂やコピーに必要なストレージ容量が削減できます。
これにより、ファイルコピーが高速化されると同時に、無駄な重複ファイルを発生させることなくストレージの空き容量も圧迫しません。
スナップショット
Mac には Time Machine という自動バックアップ機能が備わっており、これまでその機能は OS が提供してきました。
APFS では、ポイントインタイムで読み取り専用のファイルシステムのインスタンスを作成し、スナップショットをサポート。
これにより、Time Machine でのバックアップ処理が高速化されます。
空き領域の共有
APFS では、物理ドライブの直下に「コンテナ」が作られ、その中に論理ドライブ(パーティション)が作られます。
複数の論理ドライブを作成した場合、コンテナ間で空き容量の共有ができるようになりました。
従来の HFS+ では、物理ドライブの中に論理ドライブを複数作る場合、作成時にサイズを決めておく必要がありましたが、APFS では、コンテナ内に「ボリュームの追加」で作成する場合、パーティションのサイズは作成時に決める必要はなく、「コンテナ」のサイズを超えない限りは最大サイズが使用できるようになります。
※ Mac では、「ドライブ」を「ボリューム」と呼ぶ。
「論理ドライブ = 論理ボリューム」
ファイル数の最大値の増加
APFS は inode の数が 64bit に増加したため、1つのドライブに今までよりも多くのファイルを作成することが可能になりました。
大容量の HDD に、小サイズのファイルを多数保存していて、空き容量がまだ残っている場合でも、ファイル保存ができなくなるのは保存ファイル数最大値に達しているからです。
暗号化
APFS では、ネイティブサポートにより、ファイルシステム(ディスク全体)での暗号化に対応。
従来の HFS+ (Mac OS拡張)より強固なセキュリティとなります。
クラッシュ保護
APFS では、システムクラッシュによるメタデータの破損を回避できるようにも設計されているようです。
メタデータを上書きするのではなく、「新しいレコードとして書き込み > 新しいデータにポインタを変更 > 古いデータを解放する」という方式で、この仕組みによりデータの更新中にクラッシュした場合でも、レコード中に古いデータと新しいデータが部分的に混在するような事態が回避できる。
HFS+ では、ファイルを書き込んだ後にカタログファイルに再度書き込む必要があり、1回の変更の度に2回ストレージに書き込まなければならない問題もあったがこれも解消されています。
Apple File System (APFS)のサポート
Mac が、オールフラッシュ構成のストレージデバイスで macOS High Sierra をインストールされている場合、APFS (Apple File System)がデフォルトのファイルシステムとなります。
オールフラッシュ構成の Mac では、macOS High Sierra にアップグレードすると自動的に HFS+ (Mac OS拡張)から APFS に変換されます。
SSD と HDD のハイブリッドストレージである Fusion Drive では APFS に変換されませんし、「ディスクユーティリティ」でも今のところ変更できないようです。
また、外付け HDD については「ディスクユーティリティ」を使うことでデータを消去せずに APFS に変換可能です。