Skip to content

Instantly share code, notes, and snippets.

@cocuh
Last active September 23, 2015 14:10
Show Gist options
  • Save cocuh/b236355a2953ab690fb1 to your computer and use it in GitHub Desktop.
Save cocuh/b236355a2953ab690fb1 to your computer and use it in GitHub Desktop.
[WIP]coins-projectのblogに載せるよう

glusterfsで始める分散ファイルシステム

こんにちは、こくです。 今回は glusterfsという分散ファイルシステムでcoins-projectの余っているサーバーをストレージ化してみたので、紹介と構築方法を書こうと思います。

間違っている箇所などありましたら、@cocuh_まで連絡してくださると本人は非常に喜びます。

対象読者

  • とりあえずcoins-projectのブログを読んでいる人
    • こういうこと自主的に勉強してる集団だと思っていただければと
  • glusterfsを触ろうと思っている人
    • linuxのコマンドをある程度知っている

glusterfsとは

分散ファイルシステムの一つで、イメージしやすいものを挙げれば自前の Dropboxです。下の要望から使うことが多いです。

  • 複数の計算機のストレージを結合して大きいストレージとして使いたい
  • ファイルを分散してアクセスの高速化をしたい
  • 常にバックアップのようなことをしていて、どれかの計算機が壊れても復旧できるようにしたい(冗長化)
    • RAID10みたいなことを分散ファイルシステム上でする

分散ファイルシステムとは何

通常の計算機は、それぞれの計算機がストレージを持っていてそれにデータを保管しています。 // todo 図

ここで 「常にバックアップのようなことをしていて、どれかの計算機が壊れても復旧できるようにしたい」と思った時に思いつく方法は、 ファイルを作った時に他の計算機にもコピーする(レプリケーション)方法です。

// todo 図

これをいちいち人間がすると大変なので、プログラムがやってくれると嬉しいです。

// todo 図

1つのファイルが6回コピーされて保存されているので、全体の容量の1/6しか使えていなくてもったいないです。「コピーの回数を3回まで減らして容量を有効活用したい」と考えます。これが 「複数の計算機のストレージを結合して大きいストレージとして使いたい」ということです。

// todo 分散ファイルシステムの図

glusterfsのアーキテクチャ

glusterfsは volumeという単位でファイルシステムを分けて管理しています。これがmount元として指定されることになります。 volumeは複数の brickと呼ばれる単位にわけられ、 brickごとにRAID10のような形でレプリケーションが行われます。

brickは、 peerpathからできています。 peerはIP addrかdomain名で指定していて一つの計算機を示し、 pathはその計算機上のファイルシステムのパスを示します。

// 図

glusterfsは RAIDのようにパーティションを切って構築するのではありません。 既存のファイルシステム上にイメージファイルかファイル現物を置いて保管します。

そのため、 brickごとに同一サイズパーティションにする必要はないです。また、brickごとの最大サイズも指定できないようです。((最大サイズ指定の件はman glusterを読んだ限りですが))

運用する仕方としてglusterfsとraid1を併用するという方法も考えられて、raid1でマウントしたの上にglusterfsを組んで信頼性を上げるという方法もあります。(raid1の読み込み速度向上は死にそうですが)

@cocuh
Copy link
Author

cocuh commented Sep 23, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment