2016年4月29日 (金曜日)

09:34:07 # Life FUSEをいじり始めてから。 FUSEは昔2005年ころ紹介記事をかいたけど実際にはあまりいじってなかった。 手元のGitレポジトリを眺めてみると思い出したように2009年にプロトタイプのプロトタイプを少し書いていてそのあとずっと放置していた。

ちょっとかわったのは2015年の9月からで、気合を入れて活発にいじり始めて、 某社内イベントでデモを見せるために頑張って作ったりしていた。 2015年9月末にはGithubにプロジェクトを公開して、gitlstreefs と ninjafs の基本的なものを公開できた。 gitlstreefs の基礎調査のために githubfs と libgit2ベースのgitfsも実装していて動くところまで流行っているんだけどまぁどちらも遅すぎて使う気にならないという結論。 gitlstreefsをssh経由で使えるようにしていたのが2015年10月辺りかな。 でもってふと気づいてPassthrough Filesystemは親のディレクトリと実際に見せるディレクトリは同じディレクトリでもよいんじゃないかとおもってUNKOFSというのを作ってみた。 これは便利かと思っていたんだけど、よく見ないとファイルシステムがマウントされているのかどうかが見分けがつかなくて不便。 でもまぁそのままCowfsを実装して2016年3月くらいにはDebian Chrootが上で動くCowfsを実装していた気がする。 最初はDedupをオフラインでマウント時にしていたのだけど、 4月はファイルディスクリプタがReleaseされるタイミングでOnlineでDedupeができるCowfsを実装していてRace Conditionとたたかってた。 CowfsはLD_PRELOADベースのCowdancerを置き換えようと思って作ってたんだけど なんか高速ではないのだな。 ファイルコピーをread/write とspliceと比較してfallocate+sendfileベースにするのが一番高速であるというベンチマークをとってたりどのSha1の実装が一番高速かとか計測してた。

なんか10年とかたってるんだけど。

Junichi Uekawa