こんにちは、こくです。
今回は glusterfs
という分散ファイルシステムでcoins-projectの余っているサーバーをストレージ化してみたので、紹介と構築方法を書こうと思います。
間違っている箇所などありましたら、@cocuh_
まで連絡してくださると本人は非常に喜びます。
- とりあえずcoins-projectのブログを読んでいる人
- こういうこと自主的に勉強してる集団だと思っていただければと
- glusterfsを触ろうと思っている人
- linuxのコマンドをある程度知っている
分散ファイルシステム
の一つで、イメージしやすいものを挙げれば自前の Dropbox
です。下の要望から使うことが多いです。
- 複数の計算機のストレージを結合して大きいストレージとして使いたい
- ファイルを分散してアクセスの高速化をしたい
- 常にバックアップのようなことをしていて、どれかの計算機が壊れても復旧できるようにしたい(冗長化)
RAID10
みたいなことを分散ファイルシステム上でする
通常の計算機は、それぞれの計算機がストレージを持っていてそれにデータを保管しています。 // todo 図
ここで 「常にバックアップのようなことをしていて、どれかの計算機が壊れても復旧できるようにしたい」
と思った時に思いつく方法は、 ファイルを作った時に他の計算機にもコピーする(レプリケーション)
方法です。
// todo 図
これをいちいち人間がすると大変なので、プログラムがやってくれると嬉しいです。
// todo 図
1つのファイルが6回コピーされて保存されているので、全体の容量の1/6
しか使えていなくてもったいないです。「コピーの回数を3回まで減らして容量を有効活用したい」と考えます。これが 「複数の計算機のストレージを結合して大きいストレージとして使いたい」
ということです。
// todo 分散ファイルシステムの図
glusterfsは volume
という単位でファイルシステムを分けて管理しています。これがmount元として指定されることになります。
volume
は複数の brick
と呼ばれる単位にわけられ、 brick
ごとにRAID10のような形でレプリケーションが行われます。
brick
は、 peer
と path
からできています。 peer
はIP addrかdomain名で指定していて一つの計算機を示し、 path
はその計算機上のファイルシステムのパスを示します。
// 図
glusterfsは RAID
のようにパーティションを切って構築するのではありません。
既存のファイルシステム上にイメージファイルかファイル現物を置いて保管します。
そのため、 brick
ごとに同一サイズパーティションにする必要はないです。また、brick
ごとの最大サイズも指定できないようです。((最大サイズ指定の件はman glusterを読んだ限りですが))
運用する仕方としてglusterfsとraid1を併用するという方法も考えられて、raid1でマウントしたの上にglusterfsを組んで信頼性を上げるという方法もあります。(raid1の読み込み速度向上は死にそうですが)
https://gist.github.com/cocuh/08eef156298443e2634b