GREEのnanofs

GREE Engineer's Blogの「第23回 InfoTalk 分散ストレージの資料を公開いたしました 」を読みました。
Greeの大規模分散ストレージ戦略と題して行った講演の資料が公開されています。

内容は、画像サーバをスケールアウトさせるためにGREEがやっていることです。
サービスを停止しない、ユーザのデータは失わない、などの条件があるなかでの設計。
しかも安く。
というわけで、nanofsというものを開発されたそうです。

スライドを見る限り、nanofsというのはハードウェアも含めた実装そのものを指す模様。
nanofsというような名前を与えなければ、社内ではなんとなく画像サーバとか呼ばれるであろうシステム。GREEが決断すればnanofsのソフトウェアが配布されて、我々がただちにAmazon EC2で試すことができる、という性質のものではないようです。

  1. DBにファイルのメタデータを格納する。
  2. ファイルの格納場所はメタデータに格納する。
  3. ファイルの冗長化、削除はタスクキューに積んで、ワーカーで処理する。

といった仕組みを、MySQLApacheといった実績のあるパーツをRubyスクリプトでつないで作ったというお話。
Cassandraの類を採用するのに比べて振る舞いが予想しやすいので、堅実な選択だと思います。

nanofsnのうち一台が壊れたときに、どのように冗長性を回復するのかとか、
新しいnanofsnを追加したらそこに書き込みが集中したりしないのか、
というようなお話はスライドを見る限りよくわかりませんでしたが、企業秘密なのでしょう。