ユーザランドでファイルシステムを実装する場合の最大の問題は、カーネルランドで実装する場合と比較してパフォーマンスが発揮できないところにある。Antti Kantee氏は適切なショートカットパスを実装することで、ある程度の実行速度の向上は可能だと説明する。
その具体例がGoogle Summer of Code 2008の一環として実施されたFile system access utilities (fs-utils)だ。Antti Kantee氏をメンターとしArnaud Ysmal氏が開発に取り組んだプロジェクトで、カーネルを経由しないで直接ユーザランドで動作しているファイルシステムにアクセスするユーティリティが開発されている。
同プロジェクトではcat、chflags、chmod、chown、cp、diff、du、ln、ls、mkdir、mkfifo、mknod、mv、rm、rmdir、touchなどのユーティリティが開発され、直接ファイルシステムイメージにアクセスして操作できる。マウントする必要がないため、ユーザランドでのファイルシステム開発ももっと容易になるというわけだ。
PUFFSの特徴は柔軟性にあり
質疑応答ではPUFFSの取り組みはマイクロカーネルの取り組みとどこが違うのかといった質問や、GEOMと比較してどういった違いがあるのかといった質問があった。PUFFSの取り組みはユーザランドで動作させたりカーネルランドで動作させたりという高い柔軟性があり、そのあたりがマイクロカーネルとは違うといえるかもしれないといった回答や、GEOMとは違うものであるため比較はできないといった回答があった。
FreeBSDではCAMレイヤ/ATAレイヤとページキャッシュの間にGEOMレイヤを実装してブロックデバイスレベルでの機能追加を実現した。DragonFly BSDではHAMMERファイルシステムを実装し、NetBSDはWAPBLマージによるジャーナルFSSの実現やPUFFSの開発だ。次世代の機能実現へ向け各OSで特徴的な開発が続けられている。なかでもPUFFSの発想と実装は興味深く、今後も注目しておきたい。