2012年4月10日火曜日

開発版 GlusterFS 3.3 を試してみる

こんにちは、OSSテクノロジーセンターの原です。

つい先日、Red Hat 社から Red Hat Storage 2.0 Beta の案内がありました。

内容はなかなかエキサイティングで、Red Hat 社のこれからのストレージ戦略が見え隠れするものですね。

そんな Red Hat Storage 2.0 ですが、その中核になっているのは皆様御存知 GlusterFS です。

GlusterFS の Stable Release は現在 3.2.6 ですが、来る 3.3.x の目玉として、Hadoop のバックエンドとしての機能や、Amazon S3、Swift との互換 API の提供が予定されており、まさに今をときめくストレージとなっています。

今日はそんな Red Hat Storage 2.0 の GlusterFS 3.3 をフライング気味に試食して、今後の展望に思いを巡らせたいと思います。

もちろん Stable リリース前の代物ですので、試してみる方は、転んでも泣かない気持ちで行きましょう。

このために以下の様な環境を仮想マシンで2台用意しました。

HDD 構成
  • /dev/sda1 マウントポイント:/  OS 用領域
  • /dev/sdb1 マウントポイント:/data0  GlusterFS brick 用領域1
  • /dev/sdc1 マウントポイント:/data1  GlusterFS brick 用領域2

GlusterFS のビルド・導入

GlusterFS の公式サイトから 3.3 beta2 のコードを引っ張ってきても良いですが、ここは Red Hat 社の公開 ftp からダウンロードしました。

# yum groupinstall -y "Development tools"
# yum install -y wget fuse ncurses-devel readline-devel libibverbs-devel
# wget http://ftp.redhat.com/redhat/linux/enterprise/6Server/en/RHS/2.0/SRPMS/glusterfs-3.3.0qa30-1.el6.src.rpm
# rpmbuild --rebuild ./glusterfs-3.3.0qa30-1.el6.src.rpm
# cd ~/rpmbuild/RPMS/x86_64/
# yum localinstall -y ./glusterfs-3.3.0qa30-1.el6.x86_64.rpm ./glusterfs-fuse-3.3.0qa30-1.el6.x86_64.rpm ./glusterfs-geo-replication-3.3.0qa30-1.el6.x86_64.rpm ./glusterfs-server-3.3.0qa30-1.el6.x86_64.rpm

Beta2 より新しい qa30 ですね。

ちなみに両ノードで、ビルドする必要はなく、どちらかでビルドしてもう片方に出来上がった rpm をコピーすると良いでしょう。


GlusterFS の構築

まず GlusterFS brick 用領域の調整を行いましょう。

今回の環境では、/data0 と /data1 は直接 sdb1 と sdc1 のマウントポイントになっていますが、パーティションの直下には lost+found ディレクトリができますので、これを両ノードで共有したくはありません。

したがって、少しややこしくなりますが、パーティション直下ではなく、もう一つディレクトリを brick にしましょう。

brick 用ディレクトリを作成: 両ノード
# mkdir /data0/brick0
# mkdir /data1/brick1

glusterd サービス起動: 両ノード
# /etc/init.d/glusterd start
# chkconfig glusterd on

両ノードの信頼関係を結ぶ: 片側で行えば OK
# gluster peer probe gluster02

確認
# gluster peer status

ボリュームの作成: 片側で行えば OK
# gluster volume create gvol stripe 2 replica 2 gluster01:/data0/brick0/ gluster02:/data0/brick0/ gluster01:/data1/brick1/ gluster02:/data1/brick1/
Creation of volume gvol has been successful. Please start the volume to access data.

今回は GlusterFS 3.3 で新規追加の stripe + replica の構成にしてみました。

この構成にすると、ネットワーク経由の RAID 1+0 の様な状態を作り出すことができます。

本来であれば、2台ではなく 4台で分散したほうが、より良さそうではありますね。


ボリュームの開始: 片側で行えば OK
# gluster volume start gvol
Starting volume gvol has been successful

ボリュームの確認: 片側で行えば OK
# gluster volume status gvol

Status of volume: gvol
Brick                       Port    Online  Pid
--------------------------------------------------
gluster01:/data0/brick0     24009   Y       1970
--------------------------------------------------
gluster02:/data0/brick0     24009   Y       1908
--------------------------------------------------
gluster01:/data1/brick1     24010   Y       1976
--------------------------------------------------
gluster02:/data1/brick1     24010   Y       1914

# gluster volume info

Volume Name: gvol
Type: Striped-Replicate
Volume ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Status: Started
Number of Bricks: 1 x 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: gluster01:/data0/brick0
Brick2: gluster02:/data0/brick0
Brick3: gluster01:/data1/brick1
Brick4: gluster02:/data1/brick1

ボリュームのマウント: 任意のマウントポイントに
# mount.glusterfs gluster01:gvol /mnt/gvol
# df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/mapper/vg_gluster01-lv_root
               ext4     12G  1.7G  9.2G  16% /
tmpfs          tmpfs   499M     0  499M   0% /dev/shm
/dev/sda1      ext4    485M   51M  409M  12% /boot
/dev/sdb1      ext4    7.9G  147M  7.4G   2% /data0
/dev/sdc1      ext4    7.9G  147M  7.4G   2% /data1
gluster01:gvol fuse.glusterfs     16G  292M   15G   2% /mnt/gvol

4ボリュームの RAID 1+0 (stripe 2 x replica 2) 構成なので、大体 7.9G の倍の 16G 強の領域ができました。

このような形で、複数のマシンの領域をひとつに纏めて簡単に扱うことができるのが GlusterFS の魅力です。

すでに virt-manager から直接 GlusterFS の領域はマウントできますし、いずれ RHEV や oVirt のバックエンドでも利用できるようになるでしょう。

また、Hadoop との関わりもありますし、色々な場面で使われるようになってくるのではないでしょうか。

今後が楽しみなプロダクトですね。

0 件のコメント:

コメントを投稿