立て直せ、人生。

人生行き当たりばったりなアラサーが、無事にアラフィフになれるように頑張らないブログ

WWDC2016 で発表された新ファイルシステム「APFS」所感と解説

スポンサーリンク

WWDCで発表された技術の中で、個人的に気になったものがApple File Systemこと「APFS」。これまでのHFS+を置き換えるファイルシステム。MacからiPhone、Apple Watchまで、様々な製品に適用されるべく開発されたとのことだ。

f:id:cho-zu:20160615022609p:plain:w200

developer.apple.com

個人的に気になるものについて、簡単にまとめてみた。専門GUYではなく専門外なので、間違っていたら是非指摘してほしい。特にCopy On Write周りの理解が怪しいと自負している。

スナップショット

「ある時点でのファイルシステムの状態を保存する」機能、スナップショット。これがAPFSでサポートされる。Linuxなどだと、ファイルシステムではなく、その下のボリューム(LVM)でスナップショットを作成するのが通例だ。

なお、他にスナップショットをサポートしているファイルシステムには、ZFSやbtrfs, UFSなどがある。完全バックアップなどに用いられるのだろうと予想される。

ちなみに、GigazineでTimeMachine機能を置き換えるもの、と書かれているけれど、TimeMachine機能を実装するのに使われる(かもしれない)機能の間違いなのでは……と思う。

ファイルとディレクトリのクローン

「瞬間的にコピーが作成され、追加の容量は使用しない」「変更のあったブロックのみ、ストレージの新しい部分に書き込まれる」とのこと。どこかCopy On Write的な発想。

ローカルの少ない容量でファイルの世代管理をするのに利用できるんだろうか。と、すると利用目的はiPhoneやMacのTimeMachineの差分バックアップだろうか。

SSD最適化

SSDとHDDとでは、その実装上特性が違う。ランダムアクセスに強いSSDとシーケンシャルアクセスに強いHDDという点だけ取り上げても、その書き込みアルゴリズムは違う。

どうやら、APFSはSSD側に最適化されるようだ(HDDでも使えるよ、とは書いてある)。

少し引っかかる点としては、「独特なCopy On Write処理によってデータの信頼性を保証しながらパフォーマンスを最大化する」という点だ。Copy On WriteはZFSとは違い、メタデータのみに適用されるように読める。それがどうしてそのような効果を与えるのだろうか……?

無論、TRIMなどもサポートしているそうだ。

クラッシュ保護

これまでのHFS+ではジャーナリングと呼ばれる仕組みによりファイルシステムの保護が行われていた。これを、メタデータのCopy On Writeにより代替するようだ。

正直、利点がよく理解できていないのだが、SSDでの最適化ではジャーナリングよりもCopy On Writeによる保護が良いのだろう。

なお、Gigazineの記事では「保護が追加された」と書かれていたが、ミスリード。これまでも保護する機構は存在していたが、その仕組みが変わったということ。

ネットワークファイル共有はSMB、AFPは廃止

APFSでファイル共有を行う場合、SMBプロトコルを使うようになる、とのこと。なので、ファイルサーバーにしたいMacがAPFSであった場合、SMBを使ってファイル共有を行う。

SMBは、Windowsでも使われているファイル共有プロトコルだ。なので、恐らくWindowsとの共存環境が作りやすくなる……といいな。SMBにも様々バージョンがあり、SMBプロトコルだからといって容易に相互運用できるわけではない。

なお、これまで、OS X で主に使われていたファイル共有プロトコルはAFP(Apple Filing Protocol)であった。しかし、ここ最近のバージョンアップにより、ファイル共有サーバーに接続する際にはSMBを優先的に使うようになった。SMBで接続できなかった場合に、AFPにて接続する流れだ。

APFSになっても、これまで通りローカルのファイルシステムではHFS+を使っていればAFPでファイル共有を行えるかもしれない。しかし、AFPそのものがサポートされなくなり、AFPでファイル共有をすることも、AFPでファイル共有サーバーに接続することも出来なくなることが考えられる。今後の運用などについても注意を払う必要がある。

なお、AFPはMacの拡張機能や制限に対応しているなど、Mac相性が良く、SMBはWindowsの拡張機能や制限に対応しているなどWindowsと相性が良い。WindowsはAFPをサポートしていないし、MacからMac以外へSMBで接続すると不具合が起こる。これは、Mac以外のSMBサーバーがOS X独自拡張をサポートしていないためだ。

Netatalk(オープンソースのAFPサーバー)とSamba(オープンソースのSMBサーバー)は、統合が進んでいる。しかし、まだまだ絶賛開発作業中である。こちらの動向にも注意を払いたい。

そのほか気になる点

ディレクトリの容量計算が瞬時にできたり、名前変更がatomic行えるようになったりしているよう。

HFS+において名前変更がatomicに行われていなかった……というのはつまり、HFS+は、名前を変更する前と後とで処理の途中という中間状態があったということ。電源が名前変更処理中に落ちたりしたら……という危険がなくなった。めでたい。

最後に

ファイルシステムのすげ替えって、なかなか勇気の要ることだと思う。今Linuxで広く使われているext4だって1993年に開発されたextの拡張を重ねたものだし、RHEL7から標準になったxfsについても、SGI社の商用Unix OS の IRIX*1で使われていた古いものだ(1994)。

OSXに搭載されているHFS+は1998年にリリースされたものである。しかし、HFS+は1985年から使われているHFSを基本としたファイルシステムだ。Appleではこれを置き換えるために様々模索していたようで、その一つがZFSであり、OS Xのサーバー版にも搭載されるなど有力候補だった。

しかし、ZFSの開発元のSun Microsystems社がOracle社に買収されたためか*2、ZFS on OS X プロジェクトはAppleからの支援が打ち切られてしまった。

osdn.jp

2009年のことであるので、そこから開発を開始したのか、はたまた同時並行していたのか。OSの足回りと言えるファイルシステムは、信頼性が求められる上に複雑である。また、その性質上、人柱も少なく安定するまでに時間がかかる。そんなシステムを新たに一から独自開発し、入れ替える決断をしたことに、拍手をしたい。

APFSによってどんな風にApple製のOS、製品が変わってゆくのか。ぼくは一個人として非常に興味を持っている。

*1:CGなどで有名だったコンピュータメーカー。1990年代のCG技術力は群を抜いていた。ジュラシックパークの制作でも用いられ、作中で出てきた台詞「Unixならわかるわ!」はあまりにも有名

*2:Appleは理由を明らかにしていない