| APFS | |
|---|---|
| 開発者 | Apple |
| 正式名 | Apple File System |
| 導入 | 2017年3月27日 (iOS 10.3) |
| パーティション識別子 | 7C3457EF-0000-11AA-AA11-00306543ECAC(GPT) |
| 構造 | |
| ディレクトリ | B木(B-tree) |
| 限度 | |
| 最大ファイル サイズ | 8EiB |
| 最大ファイル数 | 263 |
| ファイル名の文字 | UTF-8でエンコードされたUnicode 9.0 |
| 特徴 | |
| タイムスタンプ | 変更、属性変更、アクセス、作成 |
| 日付分解能 | 1ナノ秒 |
| パーミッション | UNIXパーミッション、NFS v4、ACL |
| 透過的圧縮 | あり(AppleFSCompression.framework) |
| 透過的暗号化 | あり |
| 対応OS | macOS、iOS、iPadOS、visionOS、tvOS、watchOS、Linux |
| テンプレートを表示 | |
Apple File System (APFS) は、Appleが開発したmacOS、iOS、iPadOS、visionOS、tvOSおよびwatchOS向け[1]のファイルシステムである[2][3]。これらのOSで使われてきたHFS+ (Mac OS 拡張フォーマット) の問題を根本的に解決し、フラッシュメモリおよびSSDに最適化されており、暗号化に重点を置いている[4][5]。
2014年よりドミニク・ジャンパオロ(英語版)が中心になり、Core Storage(英語版)とは異なる新しいファイルシステムとして開発が始まった[6]。
2016年6月13日に開催されたWorldwide Developers Conference (WWDC) 2016にて、1998年から使用されていた HFS+ 以来約20年ぶりに、2017年の導入を目指した開発が発表された[4][5]。
iOSデバイスには2017年3月27日に iOS 10.3のリリースで導入され、macOSデバイスには2017年9月25日にmacOS High Sierraのリリースで導入された[7][1]。
このファイルシステムはApple WatchからMac Proにまでスケールしている。inodeには64bitの数が採用され、よりセキュアなストレージになっている。APFSのコードでは、HFS+と同様にTRIMコマンド が使われており、空き容量の管理とパフォーマンスの改善に貢献している。これにより、iOS, iPadOSとmacOSでは、読み書きの速度が向上する場合があり[1]、iOSデバイスではAPFSの利用可能データの計算方法の改善により、デバイスの空き容量が増加することがある。
HFS+はシングルスレッドにしか対応していないが、APFSはマルチスレッドに対応しており、ファイルのタイムスタンプはナノ秒単位で管理される[8]。
ファイル共有プロトコルはAFPには対応しないため、SMBを使うよう推奨されている[8]。
クローンを利用することで、オペレーティングシステムは、同じボリュームにあるファイルのコピーを追加のスペースを消費せずに効率よく作成できる。クローンファイルに対しての変更は、差分データとして保存され、ドキュメントの改訂やコピーに必要なストレージ容量が削減できる[3]。
APFSは、ポイントインタイムで読み取り専用のファイルシステムのインスタンスを作成することで、スナップショットをサポートする[3]。
APFSはネイティブにディスク全体の暗号化に対応している。ファイルの暗号化には以下のオプションが選択できる。
APFS はinodeの数が64bitに増加したため、1つのボリュームに 個以上のファイルを作成することが可能になった[9]。
APFSはチェックサムを利用してメタデータの完全性を保証している。ただし、現時点ではユーザ領域のデータには未対応である[10]。
APFSはシステムのクラッシュによるメタデータの破損を回避できるように設計されている。既存のメタデータを置き換えるように上書きするのではなく、初めに完全に新しいレコードとして書き込み、新しいデータにポインタを変更した後に、古いデータを開放するようになっている。この仕組みにより、データの更新中にクラッシュした場合に、同じレコード中に古いデータと新しいデータが部分的に混在するような事態を避けることができるようになった。また、HFS+ジャーナルファイルシステムではファイルをジャーナルに書き込んだ後にカタログファイルにもう一度書き込む必要があり、1回の変更のたびにストレージに2回書き込まなければならないという問題があったが、これも解消した[10]。
APFSは、複数の論理ドライブ (ボリュームと呼ばれる) を同じコンテナ内に作成し、コンテナ間で空き容量を共有できるようになっている[11]。AppleのFusion Drive(英語版)の機能と同様に、1つの物理パーティションからでも2つの異なるドライブ上の2つのパーティションからでも、APFSのコンテナを作ることができる。
初期バージョンのAPFSでは、メタデータに対してはチェックサムを利用して完全性の検証ができるが、ユーザデータに対してはできない[12]。また、バイトアドレス可能な不揮発性メモリの利点を活用できない[13]。透過的圧縮についてはGUIが利用できないが、AppleFSCompression.frameworkを通してCUIから利用できる。
macOS High Sierraでは、フラッシュストレージデバイス上のすべてのファイルシステムを、自動的にAPFSに変換する[14]。FileVaultボリュームも変換されるが、Fusion Driveとハードディスクドライブは変換されない[14]。この変換はオプトアウトすることはできず、High Sierraバージョン以降のAPFSは、前のバージョンのmacOS Sierraからは読み取れない[14]。
MacBook Pro (2018)専用のmacOS High SierraやmacOS Mojaveでは、インストール先がフラッシュストレージデバイスの場合だけではなく、ハードディスクドライブや Fusion Drive の場合も、自動的にAPFSに変換する。
制限付きの実験段階のバージョンの APFS が、古いバージョンの macOS (Sierra) でも、コマンドラインのdiskutil ユーティリティで利用できる。HFS+が行うUnicode 正規化を行わないという制限があるため[15]、英語以外の言語では問題が発生する[16]。macOS SierraのベータバージョンのAPFSでフォーマットされたドライブは、新しいバージョンのmacOS High Sierraと互換性がなく、Time Machine、FileVault volumes、またはFusion Driveを使用できない[17]。
macOS Big SurでAPFSのボリュームがTime Machine のバックアップ先に対応し、より高速でコンパクトとなり、信頼性を増した[18]。
iOS 10.3、tvOS 10.2、およびwatchOS 3.2以降では、互換性のあるデバイスでは、既存のHFSXファイルシステムがAPFSに変換される[7][1][19]。
APFSを標準サポートしている。
各種Linuxにおいては、Paragon Software社が提供するAPFS for Linux by Paragon Softwareをインストールすることによって、APFSでフォーマットされたボリュームの読み書きが可能となる[20]。
| バージョン | |||||||
|---|---|---|---|---|---|---|---|
| アプリケーション |
| ||||||
| ユーティリティ |
| ||||||
| テクノロジーおよび インタフェース |
| ||||||
| 開発ツール | |||||||
| その他 | |||||||
| バージョン | |||||
|---|---|---|---|---|---|
| 派生OS |
| ||||
| アプリケーション |
| ||||
| 機能 |
| ||||
| サービス |
| ||||
| その他 | |||||