Mac業界の最新動向はもちろん、読者の皆様にいち早くお伝えしたい重要な情報、
日々の取材活動や編集作業を通して感じた雑感などを読みやすいスタイルで提供します。

Mac Fan メールマガジン

掲載日:

新ファイルシステム「APFS」って何?(後編)

著者: 千種菊理

新ファイルシステム「APFS」って何?(後編)

SSDにやさしいAPFS

先月号で掲載した前編では、現在Macで使われているファイルシステム「HFS+」が、新しいファイルシステム「APFS(Apple File System)」へと切り替わること、また、なぜ切り替わらねばならないのかを説明しました。今回は、APFSが主流になったとき、どうMacが変わっていくのかを解説していきます。

まずAPFSでは、SSDをはじめとするフラッシュストレージに対しての最適化が行われると謳われています。HFS+はHDDなどのディスクストレージに対して最適化されていましたが、APFSは高速アクセスやムダな書き込みを減らすことで、フラッシュストレージの寿命を延ばすよう設計されています。

また、ファイルシステムの中で行う処理を減らし、機敏に動作する「低遅延」なデザインなのもポイントです。そのため高速アクセスを減らしても、ストレージの性能にデメリットはなく、逆に処理は速くなるでしょう。

HFS+は、その拡張性の高さから20年もの永きにわたって第一線で活躍できました。APFSも同様に高い拡張性を持っているので、今後のmacOSやiOS、 tvOS、ウォッチOSのすべてで使えるようになっています。

加えて、フォルダサイズの計算が速くなるのもAPFSならでは。HFS+では、フォルダ自身のファイルサイズを記録していませんでした。そのため、ファインダでフォルダのサイズを参照するたびに毎回フォルダ内のファイルサイズを計算する必要があり、時間がかかっていました。

APFSでは、フォルダサイズを一瞬で表示することができます。細かい仕組みは説明されていませんが、おそらくファイルシステムにある程度の計算結果を記録しておき、すぐに表示できるように準備しているものと予想されます。

クローンとスナップショット

APFSのユニークな機能の1つが「クローン」です。これは、ストレージ上の既存のファイルとまったく同じ内容のファイル(クローン)を即座に作り出すという機能です。普通のコピーとの違いは、クローンとオリジナルのファイルは、ストレージ上のデータを共有しているというところ。ファイルをコピーする場合は、ファイルのすべてを読み取って別のスペースに書き出さなくてはならず時間がかかりますが、クローンはただ「共有している」とマークするだけなので、一瞬で作成が完了するのです。

ではオリジナル、もしくはクローンの内容を変更したらどうなるでしょう? そのとき、APFSは「書き換えられるデータのあるブロック」だけを別にコピーして書き換えを行います。書き換えられたファイルはコピーされたブロックを参照し、書き換えられなかったほうのファイルは元々のブロックを参照します。このように、「書き込む瞬間に書き込み部分だけをコピーして書き換えを行う」ことを「コピーオンライト(書き込み時コピー)」と呼びます。

macOSでは、主にメモリでコピーオンライトが多用されています。身近なところだと「カット&ペースト」がそうです。コピー元のソフトウェアとコピー先のソフトウェアでは「コピーオンライト」でカット&ペーストしたデータを交換しています。大きい画像やテキストをカット&ペーストしてもメモリを圧迫しないのはそのおかげです。APFSがファイルに対してコピーオンライトを使ったクローンを用意することで、たとえばソフトウェアのファイル保存時などの処理が高速化されることが期待できます。

また、クローンを利用した「スナップショット」も用意される予定です。スナップショットとは、ある瞬間のファイルシステムの状態を記録しておく機能です。たとえば毎日スナップショットを撮っておけば、ファイルを間違って消したり書き換えてしまったときも、1日前の状態、2日前の状態と遡って取り戻すことができます。

以前の状態を保存して取り戻すこと自体は、「タイムマシン(Time Machine)」で実現されていますが、タイムマシンは一定時間おきにストレージをチェックし、更新されたファイルをバックアップストレージに毎回コピーしていました。スナップショットが実現されればこの手間が省けて、より高速に、より頻繁に、そしてよりディスク容量を節約したタイムマシンが実現可能になります。

HFS+でのファイルコピー

HFS+でのファイルコピーを表した図です。ファイルをコピーしたら、ストレージ上に同じデータが複製されます。ファイル内のすべてのデータを読み取って、新しいフォルダに書き出さなくてはならないので、時間もかかります。

APFSでのファイルコピー(クローン)

APFSでのファイルコピー(クローン)を表した図です。コピーとは違い、クローンはオリジナルのファイルを参照します。もしもクローン、またはオリジナルが編集されたら、編集された部分だけが別途複製されて保存されます。これを「コピーオンライト」といいます。

より強力な暗号化

macOSにはファイルボルト(FileVault)という暗号化の仕組みがあります。Mac OS X 10・3~OS X 10・8までのファイルボルトでは、暗号化されたディスクイメージを作成し、その中にホームフォルダを格納していました。OS X 10.8から始まったファイルボルト2では、コア・ストレージ(Core Storege)という仕組みを使い、ファイルシステムよりHDDやSSDといったハードウェアに近い、「ボリューム」を管理する機能で暗号化しています。

ファイルボルトでもファイルボルト2でも、ホームディレクトリやストレージを丸ごと暗号化するため、1ファイルだけ暗号化する、特定のフォルダだけ暗号化する、といった細やかな暗号化はできませんでした。

APFSではファイル単位での暗号化が可能になります。たとえばマイナンバーや口座の暗証番号、大事な情報の入ったファイルだけを暗号化することができるのです。さらに細かいレベル、ファイルに付随する特定の拡張属性(EA)だけを暗号化したり、ファイル内の一部だけを暗号化する、ということも可能になります。

なお、この暗号化は「all of our plat forms」でサポートするといわれています。つまり、macOSはもちろん、iOSやtvOS、ウォッチOSでも用いられるという意味です。

APFSの現状はいかに

期待溢れるAPFSですが、現在はまだ「開発者向け」で、日常的に利用できるレベルには達していません。ファイルシステムはユーザの大事なデータを預かるものですから、OSの中でも慎重に設計され、より厳しいテストを行ってからリリースされます。

また現状では起動ディスクにAPFSを使うこともできません。タイムマシンによるバックアップ元にもバックアップ先にもできないですし、ファイルボルトでの暗号化もできません。そして、iMacで使われているSSDとHDDを組み合わせた「フュージョンドライブ(Fusion Drive)」もサポートされていません。

加えて「大文字と小文字が区別される」という特徴もあります。HFS+ではファイル名の大文字・小文字を記録していますが、ファイルを読み書きするときや検索するときには無視されていました。つまり「File.txt」と「fILe.TxT」は、HFS+では同じファイルとみなされていたのですが、APFSでは違うファイルになります。しかし、これまで大文字小文字を区別しない仕組みで動いていたソフトウェアが、APFSの下で正しく動作するのかは、確認が必要です。

実際にユーザがAPFSを使えるようになるのは2017年の予定とされています。ともあれ、これからが楽しみなのは間違いありません。

【 ボリュームシャドウコピー(VSS) 】

ウィンドウズのスナップショットの仕組みです。一瞬でボリュームのスナップショットが撮れるうえに、プラグイン形式でソフトウェアと連携を取ることが可能になっています。ソフトウェアやサーバソフトに書き込み前のデータがあれば、書き込ませてからスナップショットを取ることで、より正しい状態を保存することができます。ウィンドウズにはサーバ向けのOSである「ウィンドウズサーバ(WindowsServer)」も存在していることから、エンタープライズ向けの機能についても早期から充実している印象です。

【 APFSの詳細 】

HFS+については、アップルが公開しているmacOSのカーネルのソースコード「xnu」に含まれているため、その仕組みをこと細かに確認できます。たとえば前回の記事で書いた「OS X10.6.5以降ではSSDの場合はHot File Adaptive Clusteringを無効にする 」という事実は、ソースコードを順にチェックして確認できました。 APFSについて、そしてmacOSシエラについては、本稿執筆時点ではソースコードが公開されていません。そのため、アップルの発表資料以上の情報はつかみづらい現状です。2017年のリリース時に公開されたら、より詳しく説明したいと思います。

【OS X】

APFSでフォーマットしたディスクはOS X 10.10ヨセミテ以前のOSでは認識できないとアナウンスされています。おそらくOS X 10.11エルキャピタンに対しては、APFSを読み込むだけか、読み書きできるアップデートが用意されることでしょう。

【API】

APIとは「Application Programming Interface」の略で、ソフトウェアがOSやフレームワークの機能を呼び出すときの手順や命令を指します。APIが同じなら、機能が強化されてもソフトウェアからは同じように使えるというわけです。

文●千種菊理

本職はエンタープライズ系技術職だが、一応アップル系開発者でもあり、二足の草鞋。もっとも、近年は若手の育成や技術支援、調整ごとに追い回されコードを書く暇もなく、一体何が本業やら…。