10月18、19日の2日間、フランスのストラスブールにおいて「EuroBSDCon 2008」が開催された。本誌では、同カンファレンスの中から特に興味深いセッションをピックアップしてお伝えしていこう。

EuroBSDCon 2008はフランスのストラスブールで開催

ファイルシステムをユーザランドサービスへ

File Systems As ServicesとしてAntti Kantee氏からPUFFS(Pass to Userspace Framework File System)が発表された。Antti Kantee氏はNetBSDのファイルシステムまわりでアクティブに開発を行っているデベロッパだ。

ちなみにNetBSDは2008年7月から8月にかけてFFS(Fast File System)に対するメタデータジャーナリング機能(WAPBL - Write Ahead Physical Block Logging)を開発ブランチへコミットした。WAPBLはもともとWasabi Systems向けにDarrin B. Jewell氏によって開発されたものだが、NetBSDの開発ブランチへはAntti Kantee氏を含めた4名が作業を行っている。

典型的なファイルシステム

抽象化レイヤを通してその先は区別しない

ファイルシステムはシステムパフォーマンスの要となる部分であるため、カーネルの一部として実装されることが多い。ただし抽象化されているためNFSのようにネットワークを経由したファイルシステムも実装できる。Antti Kantee氏が開発を進めているPUFFSのアイディアはこういった仕組みをベースとして、さらに分離を推し進めてファイルシステムの機能をユーザランドのサービスとして実装できるようにしようというものだ。

PUFFS - カーネルファイルシステムをそのままユーザランドへ

ファイルシステムをユーザランドで実装しようという取り組みはほかにもある。最近の開発でもっとも有名なものはLinuxで開発されたFUSE(Filesystem in Userspace)だ。カーネルにFUSEのレイヤを追加し、ユーザランドではlibfuseを使ってファイルシステムを実装する。FUSEを使ったユーザランドファイルシステムはすでにいくつも存在しており、性能を必要としない用途では多種多様な機能をファイルシステムとして提供できるため便利に活用できる。

ファイルシステムの実装をユーザランドで行うにはいくつもの利点がある。カーネルランドで実装する場合よりも手軽というところが最大のポイントだ。サードパーティのソフトウェアやツールが使いやすいという利点もある。カーネルでファイルシステムを実装する場合、セキュリティを常に気にしなければならないが、ユーザランドで実装すればもっと緩くてもいい。問題が発生した場合はサービスを停止するだけで対処できる。

PUFFSの概念図 - ファイルシステム実装をユーザランドに持ってきている

FUSEはユーザランドでファイルシステムを実現するための代表例だが、FUSEで開発されたファイルシステムはそのままカーネルには移植できない。PUFFSの発想はここにある。カーネルランドで実装するファイルシステムをそのままユーザランドで動作できるようにしよう、というわけだ。カーネルでファイルシステムを実装するのと同じAPIを使えるため、PUFFSで開発したファイルシステムはそのままカーネルにバックマージすることが簡単にできるというわけだ。