WWDCで発表された新しいApple File Systemは、Appleの将来計画を如実に表しています。Mac、iOS、Apple Watch、Apple TVでHFS+に代わるファイルシステムとして採用される予定の仕組みを、その内部構造とともにご紹介します。
Appleの既存のHFS+
過去30年間のMacの歴史において、Appleのファイルシステムは、データが最初は80万枚のフロッピーディスクに保存されていた時代から、その後は40MBのストレージ容量が大容量とみなされる磁気式ハードドライブへと進化してきました。今日では、ハードドライブの容量はテラバイト単位となり、Appleが現在販売しているデバイスのほとんどはフラッシュメモリまたはSSDストレージを採用しています。
HFS+は、1990年代後半に「プラス」リフレッシュされて以来、何度か改良されてきました(主に大容量ドライブに対応するため)。Appleはファイルシステムジャーナリング機能を追加しました。これはファイルへの変更を継続的に記録する機能で、停電などの問題が発生した場合でも、ファイルシステムがディスクを正常な状態に復元できるようにします。
Apple 社は、同じディレクトリ内に大文字と小文字のみが異なる複数のファイル (たとえば、file1h と file1H) を作成できることを想定しているサーバー ソフトウェアで使用するために、大文字と小文字を区別する (ほとんどの Unix システムと同様に) HFS+ の HFSX バージョンも作成しました。
そして、Apple は iOS を発表した際に、モバイル デバイス上のデータ保護に使用される個別のファイル暗号化をサポートする、Mac の HFSX に基づく特殊なファイル システムを作成しました。
Appleは、HFS+の下位層に存在するストレージ技術も開発しています。EFIストレージパーティション(Intel版OpenFirmwareに相当するもので、Appleは10年前にIntelチップへの移行時に先駆的に導入しました)から、フルディスク暗号化やFusion Driveなどの機能をサポートするためにAppleが開発した論理ボリュームフォーマットであるCoreStorageまで、多岐にわたります。論理ボリュームはディスクパーティション上に作成され、ファイルシステムで初期化されます。
しかし、HFS+ 自体にはまだ重大な欠点がいくつかあり、ファイルシステムでは、下位互換性のないボリューム形式の変更を必要とせずに効果的に拡張できないいくつかの固定データ構造が使用されているため、新しい機能を追加し続けると、最終的には過去との互換性が失われます。
HFS+ では、主にシングルスレッドのデータ構造も使用されており、カタログ ファイル ロックが必要なため、複数のプロセスが同時に同じデータにアクセスすることが困難になります。
Appleファイルシステムが2017年にデフォルトになる
Appleは現在、HFS+の代替となるAPFSをmacOS Sierraの開発者プレビューと呼んでいるが、来年にはプラットフォーム全体でのサポートを完了し、すべてのApple製品のデフォルトのファイルシステムにする予定だ。
WWDCにおいて、同社はAPFSがAppleのすべてのプラットフォームを念頭に設計されており、watchOSからiOS、tvOSからmacOSまで拡張可能であり、現在Apple製品のほとんどがフラッシュまたはSSDストレージを使用しているという現状をうまく活用していることを強調しました。また、暗号化を主要機能として念頭に置いて設計されています。完成すれば、ユーザーはHFS+からAPFSへのアップグレードが可能になります。
完了すると、MicrosoftがPCユーザーをFATからNTFSに移行した方法と同様に、ユーザーはHFS+からAPFSへのアップグレードをその場で実行できるようになります。ユーザーデータはそのまま残り、APFSはHFS+ボリュームの空き領域に新しいメタデータを作成してから、APFSボリュームに変換します。
将来に向けた新しいAppleファイルシステムの開発
新しいAPFSは、今後数十年にわたって登場するテクノロジーをサポートするための様々な新機能を提供します。Appleは既存のファイルシステムではなく、独自の新しいAPFSを開発しました。これは、既存のファイルシステムの多くがAppleとは異なるユースケース向けに調整されているためです。
例えば、多くの高性能な最新ファイルシステムは、複数のディスクを搭載したサーバーのニーズに合わせて調整されており、レイテンシよりもスループットを優先して最適化されていることが多いです。モバイルデバイスでは、レイテンシはより重要です。ユーザーは、巨大なファイルを高速に移動するよりも、タップした瞬間に結果を確認したいと考えているからです。また、ほとんどのAppleデバイスはディスクを1つしか搭載していません。
Xsan
Apple はすでに、macOS 上のストレージ エリア ネットワーク用の高性能共有ファイル システムである Xsan をサポートしています。Xsan は、専用のメタデータ コントローラを使用して、複数のプラットフォーム ユーザーがファイバーチャネル経由で同じボリュームにアクセスするのをサポートします。
既存の HFS+ ユーザーのより一般的なニーズに対応するため、Apple は、現在世界中で 10 億台を超える消費者向けデバイスのインストールベースの一般的な使用シナリオに合わせて特別に調整された、高度な代替ファイルシステムを開発しました。
APFSの高度な新構造
APFSは新機能を導入するだけでなく、将来の拡張性も考慮して設計されています。これには、64ビットのinode番号(各ファイルの追跡に使用。HFS+の32ビットカタログレコードと比較)への移行が含まれます。これにより、APFSでは、ディスク上に9京(100万兆)を超えるファイルを保存できます。
APFS の拡張された新しい inode 構造は、ファイルとディレクトリの情報が単一のカタログ ファイルに保存されることに関連する HFS+ の中心的な問題にも対処しているようです。この問題により、アクセスがシリアル化され、複数のスレッドがすべてファイル システムにアクセスしようとすると、ログジャムが発生します。
APFSは、HFS+の1秒単位のタイムスタンプをナノ秒単位のタイムスタンプに改良し、並列書き込み可能なファイルの順序を識別できるようになりました。また、APFSには拡張ブロックアロケータが搭載されており、ユーザーは新しい非常に大きなディスクまたはRAIDアレイをセットアップし、システムがディスク全体をゆっくりと初期化し終える前に(HFS+の要件に従って)使用を開始できます。
APFSはスパースファイルのサポートも追加し(HFS+は仮想ファイルのみをサポート)、HFS+ジャーナリングに必要なオーバーヘッドを回避してパフォーマンスを最大化するために、新しいコピーオンライトメタデータスキームを実装しています。また、HSF+ではBツリー属性ファイルとして追加されていた拡張ファイル属性(HFS+ではアクセス制御リストのパーミッション属性などを保存するために使用)のサポートも組み込まれています。
APFS は、たとえデバイスが第三者によって物理的に取得された場合でもデータアクセスを保護するように設計されたユーザーデータとメタデータ用の複数のキーを使用して、Apple のすべてのプラットフォームにわたってディスク全体と個々のファイルの暗号化のサポートを統合します。
APFS は、既存の Apple RAID ボリュームと組み合わせて使用することで、ソフトウェアベースのストライピング (パフォーマンス向上) とミラーリング (データ保護) または単純なディスク スパニング (コスト削減) を実現できます。また、ハードウェア RAID デバイスでも使用できます。
現在の開発者プレビューでは、AppleのFusionドライブ(SSDと従来の回転式ハードドライブをRAIDのようなハイブリッドデバイスに組み合わせたもの)はまだサポートされていませんが、今後サポートされる予定です。Appleはまた、新しいファイルシステムは、回転式磁気ディスクストレージとは異なる特性を持つ、現代のフラッシュストレージやSSDストレージの現実に合わせて設計されていると強調しました。
Apple File Systemに設計された新機能
APFS は、HFS+ の基本設計を大幅に進歩させ、改良しただけでなく、さまざまなまったく新しい機能も導入しています。
これには、複数のボリュームがディスク上の空き領域を利用できるスペース共有機能が含まれます。つまり、4TBのディスクに4つの4TBボリュームを作成でき、各ボリュームを必要に応じて拡張できます。ボリュームのパーティションを再設定して、いずれかのボリュームに空き領域を割り当てるといった手間は発生しません。これは、仮想マシン(またはBoot Camp Windows)のユーザーにとって特に有益です。仮想マシンのユーザーにとって、ディスク上の特定のディスクボリュームで非常に大きなファイルを作成する必要があるからです。
もう一つの新機能「クローン」は、ファイルやディレクトリ全体を、ストレージ容量を消費することなく瞬時に「コピー」することを可能にします。これは、ドキュメントやワークフロー全体を「複製」し、それぞれのコピーに複数の独立した変更を加えるというアイデアをサポートします。変更は個別に保存されるため、並行して実行されているプロジェクトの大部分を1つの完全なコピーとして保存でき、無駄になるディスク容量を大幅に節約できます。
APFSはスナップショットもサポートしています。これはファイルシステム全体のクローンのような機能で、特定の時点におけるファイルシステム全体の状態を保存し、新しい変更を個別に記録することで、システムが効率的にバックアップし、クリーンな状態のスナップショットにロールバックできるようにします。これは教育機関やその他の共有システムでの応用が可能で、ハードリンクを使用してバックアップポイントを保存するAppleの既存のTime Machineと比較して、より効率的でシンプルなデバイスバックアップ方法となります。
もう1つの新機能は「Fast Directory Sizing」です。これにより、ファイルシステムはフォルダとそのすべてのコンテンツが使用している容量を計算し、その数値を常に最新の状態に保つことができます。HFS+は、フォルダの「情報を取得」を実行するたびにこの情報を定期的に再計算する必要があります。これは、このデータをフォルダディレクトリ自体に保存したり、ファイルシステム階層の上位に情報をパーコレーションしたりできないためです(子項目は親項目をロックできないため)。
Appleプラットフォーム上の多くのファイルやアプリは、実際にはコンテンツのディレクトリ(「バンドル」)であり、単純化のために単一のアイテムとして見せかけられているだけなので、APFSではAtomic Safe-Saveと呼ばれる機能を導入しています。この機能により、更新の保存中にプロセスが中断されることがなくなり、部分的に保存された(場合によっては破損した)アイテムが保存されることがなくなります。このプロセスが「アトミック」なのは、正常に完了するか完了しないかのどちらかであり、不確定な状態の分割状態に陥らないためです。
Appleファイルシステムの起源と進化
Appleが長年にわたりHFS+を拡張してきたことは注目に値します。Appleがファイルシステムの第一人者、Dominic Giampaolo氏を雇用したのは2002年のことです。当時、Appleはまだ本格的なモバイルデバイス事業を展開しておらず、MacはクラシックなMac OS 9から新しいOS Xへの移行期にあり、その後4年間はPowerPCベースのままでした。
BeOSファイルタイプでは、ユーザーはMIMEタイプ、アイコン、アプリケーションバインディング、ファイル名拡張子、属性を設定できます。
ジャンパオロ氏は、1996年にBeOS(上記)向けに設計された当時としては先進的なファイルシステムであるBeFSを開発したことで最もよく知られています。BeFSは、システムがインデックスを作成できる拡張ファイル属性メタデータに大きく依存しており、ユーザーはリレーショナルデータベースのようにデータを迅速に検索できました。今日では、iTunesや写真アプリも同様に、アイテムのコレクションを整理や検索がしやすい形式で表示しています。
ジャンパオロは、ファイルシステム設計に関する著書を執筆しました。Apple入社後、HFS+(Mac OS X 10.3でデフォルトで有効化)にファイルシステムジャーナリング機能を追加する取り組みに携わり、その後、BeFSスタイルのインデックス付きメタデータ検索をMacに導入するSpotlightプロジェクトを立ち上げました(この機能は2005年にデビューしました)。
Giampaolo 氏は、Time Machine とバックアップ用のワイヤレス Time Capsule 製品にも取り組み、2011 年に iCloud の初期の Documents and Data 実装の開発に貢献しました。
同氏はまた、「出荷されることのなかったファイルシステム」に関する作業についても言及しており、Apple は別途、Mac に ZFS のサポートを追加する作業を行っていたが、2009 年にその作業を中止した (ライセンスの問題に関連していたようだが、iPhone の急激な普及も Apple の戦略を変えた可能性が高い)。
Giampaolo は現在、ストレージおよびファイル システムのシニア ソフトウェア エンジニアとして APFS に取り組んでおり、数十年にわたるファイル システム関連機能の開発経験を活かしています。
来年導入されると、APFS は新しい機能を有効にし、最新のストレージ システムのパフォーマンスと利用を最適化するだけでなく、将来的に新しいファイル システムの進歩を導入するための拡張可能なプラットフォームとしても機能します。