BSD界隈四方山話

第58回 APFS - Appleファイルシステム開発中

この記事を読むのに必要な時間:およそ 2.5 分

APFS - Apple File System

Appleは2016年6月13日から17日にかけて開催されたWWDC16において,新しいファイルシステム「APFS - Apple File System」を開発中であることを発表しました。この新しいファイルシステムはmacOS,tvOS,iOS,watchOSなど同社が開発しているプロダクトで共通的に利用するファイルシステムとされており,現在利用されているHFS+を置き換えるものと考えられています。開発は2014年にはじまり,2018年ごろを目処にプロダクトへの投入が予定されています。

公開された技術文書を読む限りでは,APFSはZFSからいくつかの機能や概念を抜いたものに似ています。ZFSからいくつかの機能を抜いて,基本的にAppleプロダクトで利用するフラッシュストレージを効率よく利用できる機能を追加したもの,といったような内容です。

この新しいファイルシステムに関して,DTraceの開発者であり,そしてZFSの開発者でもあるAdam Leventhal氏が複数のブログに分けてレビューを掲載しました。技術文書のみならず,APFSの開発チームとの会話などからも考察が行われており興味深い内容になっています。ここではそうしたブログから,とくに注目されるポイントをいくつか紹介します。

HFS,HFS+

現在Appleが販売しているプロダクトではHFS+またはこれをベースにしたファイルシステムが使われています。HFS+の前衛となるHFSが公開されたのが1985年,HFS+が公開されたのが1998年です。ストレージの種類も,サイズも,メモリのサイズ,プロセッサの処理速度も現在とは大きく異なる環境の中で設計されたこのファイルシステムは長い時間をかけて逐次改善されながら使われてきました。

ZFSなどのモダンなファイルシステムと比較すると,HFS+が提供している機能はいくつか足りないものがあります。スナップショット機能の不在などは中でも顕著なところです。AppleはTime Machineというバックアップ機能を提供していますが,これはファイルシステムのスナップショット機能を使ったものではなく,基本的にファイルのコピーを使ったバックアップ機能です。

また,HFS+の同一実装がそのまま複数のプロダクトで使われているのではなく,プロダクトごとにHFS+そのものが拡張されて使われているという現状があるようです。Mac OS Xで使われているHFS+とiOSで使われているHFS+は,基本的には同じものですが必要に応じて機能が追加されたり変更されているため,完全に同じものというわけではないようです。

APFSが開発された背景には,現在のコンピューティング環境に合わせた新しいファイルシステムを開発するとともに,プロダクトごとに分断した開発状況をまとめ,APFSのもとに開発を集約するという狙いもあるようです。

目玉は暗号化機能とスナップショット機能

Adam Leventhal氏は記事の中で,APFSの目玉機能として暗号化機能を取り上げています。暗号化機能は非暗号,シングルキー暗号,マルチキー暗号の機能が想定されていて,とくにマルチキー機能がモバイルデバイスやエンタープライズでの用途を想定したもののにように見えます。こうした機能を実現するためにAPFSの開発がはじまったと考えてもよさそうなくらいに,主要な機能だと考えているようです。

もうひとつ,ユーザがこれまで待ちわびてきた機能としてスナップショット機能が導入される点に関しても言及されています。AppleはTime Machineと呼ばれるバックアップ機能を提供しているほか,自動的にバックアップを取っておくためのTime Capsuleといったプロダクトも販売しています。しかし,こうした機能はHFS+の機能を使っているというよりも,ファイルをコピーしているだけです。

現段階ではスナップショット機能とTime Machineの機能は連動していないようですが,スナップショット機能が実用的に利用できるレベルで堅牢だと判断されれば,Time Machineなどのバックアップ機能で活用されることも考えられます。最終的にどの機能がデフォルトで使われるようになるかはこれからですが,このあたりの機能が実装されれば現在ZFSで運用しているようなバックアップの使い方ができるようになるかもしれません。

そのほかだと,ボリューム管理と同じ概念があるあたりもポイントです。どこまでボリューム管理を行うのかはわかりませんが,ZFSで新しくデータセットを作るようにプールからデータセットを作成してHFS+のファイルシステムを作成するといった用途が想定されているようです。従来のアプリケーションやシステムとの互換性を確保する上で必要になってくるものと見られます。

ファイルレベルでCopy on Writeというユニークな機能

ほかのファイルシステムに見られない機能としては,ファイルレベルでのCopy on Writeがあります。通常,ファイルをコピーするとデータがまるごとコピーされます。APFSでは同一ファイルシステム内でファイルのコピーが発生すると,メタデータを書き換えてファイルが増えたように見せかけますが,実際にデータはコピーされません。UFSでいうところのハードリンクのような状態になります。

この状態でファイルへの書き込みが発生すると,その段階でデータのコピーが発生し,実際に書き換えが行われます。Copy on Writeというわけです。機能的には重複排除の機能にも似ていますが,データセットやプール単位で行うのではなく,ファイル単位で行っているというところがユニークです。

ただ,どういった用途を想定しているのかはいまいち明らかになっていないようです。もしかすると,設計を整理していく段階で機能的には簡単に実現できるので機能として追加してみた,といったくらいの機能なのかもしれません。有用なユースケースがあれば今度なんらかの形でユースケースであったりその有用性だったりに関する発表があると思います。

圧縮機能は含まれていない?

モダンなファイルシステムの多くが持っている機能に圧縮機能があります。実装もそれほど難しくなく,ストレージスペース的に得られるものは多いので有益な機能のひとつです。しかし,APFSにはその機能は含まれていないし,今後含まれそうな雰囲気でもないようです。理由はよくわかりませんが,これは技術的な問題というよりもマーケティング的な判断があるようです。

冗長性に関してはそれほど注力していない?

APFSは冗長性に関してもZFSと比較すると結構緩い設計になっています。ZFSではデータの完全性を保証する必要があるとして,データすべてに対してチェックサムを持っています。20~30年前であればマシンリソース的にそんなことをしては重くて使い物にならなかったでしょうが,現在のパワーであれば十分に実用的です。安全性が増すという利点の方が,リソース消費の多さよりも優先される状況です。

しかし,APFSではチェックサムはメタデータのみに適用されるようです。ZFSのようにメタデータもブロックデータも冗長性を保持するといった考え方ではないようです。このあたりはZFSから見ると物足りないというか,大丈夫なのか考えてしまうところでしょうが,Appleは自社で提供するハードウェア込みで設計しているところがあり,そういった点も含めてデータの完全性といったものを考えているようです。

本当に実現できるのか

Appleの発表が本当のことであれば,APFSを搭載したプロダクトは2018年には市場に出ることになります。2014年に開発がはじまったことを考えると,3年から4年で新しいファイルシステムをプロダクトに投入することになります。これだけの機能を持ったファイルシステムの開発期間としてはかなり短めです。

ファイルシステムにはデータの完全性のみならず,高負荷時における安定性や不測の事態が発生した場合でも壊れないといった堅牢性が求められます。こうした機能が実現するには長い間実際に使って検証を続けるとともに,設計上のバグや実装上のバグを潰し,さらにデバイスドライバとも調整をはかるといったことが必要になります。ファイルシステムの安定には10年かかるという見方もあるくらいなので,APFSは短いということになります。

本当に実現できるのかはこれからの取り組み次第ということになると思いますが,APFSの開発チームは同社のテストチームの取り組みを高く評価しています。徹底したテスト環境が構築されているのではないかと思います。こうしたテスト環境はファイルシステムのバグ発見に効果を発揮しますので,それなりに期待できるかもしれません。今後の動向が楽しみです。

FreeBSD勉強会 告知

第54回 7月14日(木) 19:00~ ZFSアドバンスベーシックス

ストレージシステムや仮想化システムのファイルシステムとしてデファクトスタンダードになりつつあるZFS。FreeBSDでネイティブに動作するファイルシステムで,FreeBSDをストレージシステムや仮想化システムのオペレーティングシステムとして採用する強い動機になっています。

今回は前回より先に進んで,よりアドバーンスな機能や使い方を紹介します。第53回に参加していなくても大丈夫です。ZFSに興味がある方はぜひご参加ください。

参加申請はこちらから。

第55回 8月24日(水) 19:00~

内容および会場は調整中です。確定次第お知らせします。

参加申請はこちらから。

現在,2016年9月以降の勉強会の会場を探しています。ご提供いただける場合にはぜひご連絡ください。よろしくお願いいたします。

コメント

コメントの記入