fossil/venti

ちょっと前に飲んでいて,ツリー型のファイルシステムは限界だとか,履歴管理ファイルシステムが欲しいという話題で盛り上がっていた.

Plan9では,ずっとWORMベースのファイルサーバ(fs)と簡易ファイルサーバ(kfs)が使われてきたが,4th editionからfossil,ventiと呼ばれる新しいファイルサーバ,ブロックストレージサーバが追加された.fossilはfsとkfsを代替するというふれこみだった.fossilは「化石」って意味で,スナップショットが取れるファイルサーバ.ventiだけど,スタバではgrandeより大きいサイズをventiと呼ぶ(日本のスタバにはないと思うけど).
ventiはUNIXのブロックデバイスドライバに相当すると考えればいいと思うが,特徴的なのはブロック番号がブロックの内容のハッシュ値(SHA-1)になっている点だ.つまり,ハッシュ値が同じブロックは,(ディスク上の)同じブロックを指すことになる.例えば,すべて0で埋まったファイルは(ブロックのハッシュ値が同じになるので)ディスク上では1ブロックになる(はず).なんとなく格好よさげだが,すぐ思いつく問題点として,たとえシーケンシャルに書き込んだとしても,ディスク上に連続して配置されるとは限らないので遅くなるという点だ.
とは言え,高価なWORMジュークボックスを安価なATAに置き換えることが目的だから,いいのか.そして,fossilがローカルキャッシュを持っているわけだし.また,fossilはventiがなくても単体のファイルサーバとして動くので,スタンドアローンで動かすときにもfossilが使える.