分散ファイルシステム とりあえずの実装

特に締め切りがあるわけでもなく、それに分散ファイルシステムという大がかりな話なので、じっくり作っていきたいと思っているのだけど、やっぱり動くと嬉しいので、とりあえず動くような実装を作ってみたい。

ノードが落ちるたときにデータの整合性を保証をしなければ、実装は一気に簡単になる。まずはここから。



第一段階として、ネットワークの構築。ノードの追加や離脱。データは保持しない。作りかけのコネクションプールを作って、それからNodeID <-> IPアドレスのテーブルを実装、ハッシュテーブル、管理FileIDの移譲、それに必要なプロトコルを作る。ここまでで夏休みまでかかるかな。

第二段階は、ファイルの読み込み。分散read。第一段階の実装がしっかりしていれば、これは難しくない。下層のファイルシステムとのインターフェースと、持っているFileのIDの通知とread用のプロトコルを作ればいい。問題は読み込むためには書き込みが必要で、書き込みはこの段階ではまだできないと言うこと。

第三段階で、ファイルの作成と書き換え。書き換えは書き込み連鎖に回していくだけ。耐障害性が無ければ簡単。ファイルの作成は、書き込み連鎖を構築しないといけない。これは結構難しそう。

第四段階で、FUSEインターフェースかな。FUSEでなくても、デバッグ用に何かインターフェースが必要。

第五段階で、ファイルに属性を付ける。パーミッションとかタイムスタンプとか、シンボリックリンクとか。これはなかなかやっかい。

第六段階で、耐障害性か。ここまでくるころには単一ファイルの分散方法も思いついているかな。



どう考えても年単位でかかりますね。そのつもりではありますが。その間にSANが価格崩壊したらどうしよう。


第一段階の時点でかなり重い。