分散FS 比較 cephfs vs glusterfs (2) glusterfs編

前回その不安定さからcephfsの利用を見送ったので、今回はglusterfsを評価してみる。glusterfsの特徴は他の分散ファイルシステムに比してシンプルである事。管理ノードみたいなものは存在せず、メンバー全員が公平にファイルを管理してくれる。全く同じノードを幾つも作って、それが一体的に動いてくれるので、運用管理効率は高いと言える。自宅環境のような多くても数台程度のクラスター管理であれば、cephよりglusterfsの方が合っているように思う。

cephはブロック単位の分散だったが、glusterfsは幾つか選択肢がある。

  1. distributeと呼ばれるファイル単位の分散
  2. stripeと呼ばれるraid0のような分散(ブロック単位)
  3. disperseと呼ばれるraid5のような分散(ブロック単位)
  4. これらと組み合わせる事が可能なreplicate構成

1〜3と4を組み合わせる形で冗長化を担保する。例えば、1と4ならreplicated-distribute、1と3ならreplicated-disperseのような構成になる。

それぞれの構成について検証してみたところ、stripeは更新が刺さって動かなくなってしまう事があり見合わせ。disperseは3ノード構成で検証したところ、通常ファイルシステム時の1〜2割程度にまで性能が落ちてしまった。構成変更も硬直的で一旦3ノードで組むと、そこに4ノード目を追加する事は出来ない。distributed-disperse構成のような形で、3台構成に更に3台を追加して拡張する事は可能だ。disperseは有効容量を上げるのに最適な構成である一方で、水平拡張に難ありと言わざるを得ない。

という訳で、標準的なreplicated-distribute構成での運用を目指してみる。この構成でも性能は通常ファイルシステム時の半分以下には落ちてしまう。運用上の利便性と性能がトレードオフの関係だ。今回はcentos7のサーバを2台、gfs1/gfs2として準備し、2台共に以下のインストール作業を行う。

wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.5/CentOS/glusterfs-epel.repo
yum install --enablerepo=epel glusterfs-server
systemctl start glusterd

続いて、volumeを作成してマウントする。glusterfsはbrick呼ばれる単位でvolumeを構成する。

gluster volume create gfs 2 gfs1:/data1/brick gfs1:/data2/brick
gluster volume info gfs
gluster volume start gfs
gluster volume status gfs

mkdir /gfs
mount -t glusterfs gfs1:/gfs /gfs

これだけでvolumeの構築は完了、非常に簡単。察しのよい方はお気付きかもしれないが、実はこの状態では、まだただのdisributed構成で冗長化がなされていない。この構成にgfs2を追加してreplicated-distribute構成を完成させる。このコマンドはvolumeがオンラインのままでも発行可能なようだ。

ssh root@gfs1
gluster peer probe gfs2
gluster peer status

gluster volume add-brick gfs replica 2 gfs2:/data1/brick gfs2:/data2/brick
gluster volume info gfs

peerしたサーバであれば、どのサーバでもglusterfsサーバになれるので、linuxサーバたちを全てpeerさせて、各サーバはローカルのglusterdに対してマウントを行う構成にしようと思っている。volumeに対するIO性能はlocalityを意識してくれるようで、ローカルに実volumeがあるサーバは通常ファイルシステムの半分程度の性能で処理できる。ローカルに実volumeがないサーバは1〜2割程度まで性能が落ちてしまうので注意が必要。それらしきパラメータをいじりつつ性能改善を目指してはいるものの、現時点ではあまり効果的なパラメータを見つけるに至っていない。問題は性能面のみで安定性はありそうなので、しばらく使ってみようと思う。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)