kikumotoのメモ帳

インフラ・ミドル周りを中心に、興味をもったことを適当な感じで。twitter : @takakiku

分散ファイルシステムを調べたい - GlusterFS

GlusterFS について調べてみた。使ってみたわけではない。

1. ファイルを分割して保存するかどうか

Stripe の設定をすれば分割する。ただし、GlusterFS FAQ からすると、勧めてはいない感じ。

2. サーバーやディスクが落ちても問題なくアクセスを受け付けられるか

分散ファイルシステム/ブロックデバイスをまとめる - Blog by Sadayuki Furuhashi だと×になっているけど、その後状況が変わったのか

Replicate provides high-availability, i.e., in case one of the subvolumes go down (e. g. server crash, network disconnection) replicate will still service the requests using the redundant copies.

http://www.gluster.org/docs/index.php/User_Guide#Replicate

とあるので、問題なさそうだ。

3. サーバーやディスクが落ちたときにデータが失われないか

Replicate の設定をすれば、データは複製される。複製数は制御できるが、ファイルの種類で複製数を変えることはできない。

4. サーバーやディスクが落ちたとき、もしくはそれらが復帰したときに自動的にデータが修復されるか

落ちただけではなにも修復されない。復帰すれば、アクセスのタイミングで必要な修復が行われる。

5. データ量の偏りがないように自動的にデータを再配置することができるか

ファイルを作成するときにはデータの偏りがないようにすることは可能だけど、新しいサーバを追加後に再配置するような機能はないみたい。

6. メタデータサーバの冗長化機能はあるか

メタデータサーバみたいなものはない。

クライアント設定で、必要なサーバの情報を記述することになるみたいなので、メタデータサーバがいらないということ?それでも、目的のファイルが存在する実サーバをどうやって見つけているのだろう?

7. 読み込みの負荷分散

できていない。Replicate 設定時には、読み込みは設定記述にある最初のノードに対して行われる。

今後のバージョンで round-robin 的なものを計画している。

8. 書き込みの負荷分散

Stripe であれば1ファイルでも分散される。Unify であれば複数ファイルでみれば分散される。

9. 動的なサイズの拡張

できない。今後のリリースで対応する計画はある。

10. 動的なサイズの縮小

縮小について言及されていないみたいだけど、拡張が無理なので同じくできないと思う。

11. 実装形態(言語とか、カーネルパッチの必要性とか、利用する側の言語とか)

C。カーネルパッチは不要。

12. mount できるか

できる。FUSE を使う。

13. random access 可能か

とくに記述もないので、できる感じ。

14. 実績はどんなものか

http://www.gluster.org/docs/index.php/Who%27s_using_GlusterFS にいろいろ書かれている。テストしているって人が多い?

15. ライセンス

GPLv3


現在のバージョン(2.0)では、システムを止めないとサーバ追加をしてサイズの拡張ができないので、これは困る。やはり、システムは止めたくないので。次期バージョンに期待しておく。