GlusterFSをテストしてみた覚え書き
はじめに
分散処理ファイルシステム(Distributed File System、DFS)の一つ、GlusterFSに関して記述します。
とりあえず、自分で調べた結果をまとめてみたものなので、多々、間違いがあると思います。
これを、参考に、皆さん自身で、試してみる手助けになれば、嬉しいです。
geo-replicaで、slaveとしているノードのディスク以外は、SSDっぽいものを利用しています。
すべてのノード間で、sshのパスワード入力無しで、ログインできる様にしてあります。
GlusterFSとは
GlusterFSは、汎用的な分散ファイルシステムです。InfiniBandのRDMAやTCP/IPインターコネクトなどを使用し、一般的なハードウェア構成で、ペタバイト以上のストレージを扱えるとされています。
Link
wiki
http://ja.wikipedia.org/wiki/GlusterFS
Gluster.org
http://www.gluster.org/
Document
http://gluster.com/community/documentation/index.php/Main_Page
gluster コマンド
http://www.gluster.com/community/documentation/index.php/Gluster_3.2:_gluster_Command
特徴
- クライアント側コンポーネントとサーバ側コンポーネントが存在します。
- 処理は、ユーザ空間で行われ、POSIX仕様のマウントは、FUSE機構を使って実行されます。
- サーバは、glusterdのデーモンが、Clusterを構成し、ローカルのファイルシステムを、VOLUMEとしてExportします。クライアントのglusterプロセスが、それを一つの巨大なボリュームにくみ上げます。
- クライアントとサーバで、動作に必要なプログラムは、同じものです。
- サーバ郡に、マスターが存在する訳ではないので、SPOFは、存在していません。構成としては、非常にシンプルなものになっています。
- GEO-Replicationという、非同期のレプリケーション機能を持っています。
対応するプロトコル
- File System
インストール
サーバとクライアントは、インストールするものは同じです。
違いは、service(/etc/init.d/glusterd)を、動かすかどうかだけとなります。
- GlusterFS 3.2.0
- Cent OS 5.5 (x86_64)
GlusterFSをインストールする前に必要なもの
Require RPM (rpmforge)
以下は、rpmforge から持ってこないと、入手できません。
[root@centos1 rpm]# sudo rpm -ivh glusterfs-geo-replication-3.2.0-1.x86_64.rpm エラー: 依存性の欠如: python-ctypes は glusterfs-geo-replication-3.2.0-1.x86_64 に必要とされています rsync >= 3.0.7 は glusterfs-geo-replication-3.2.0-1.x86_64 に必要とされています
GlusterFSのインストール
必要なrpmをインストール
[root@centos1 yum.repos.d]# sudo yum -y install wget fuse fuse-libs
FWの確認をする、必要なポートをあけるため。
[root@centos1 yum.repos.d]# iptables -L Chain
GlusterFSのrpmを取得
[root@centos1 rpm]# wget http://download.gluster.com/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-core-3.2.0-1.x86_64.rpm [root@centos1 rpm]# wget http://download.gluster.com/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-fuse-3.2.0-1.x86_64.rpm [root@centos1 rpm]# wget http://download.gluster.com/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-geo-replication-3.2.0-1.x86_64.rpm
rpmのインストール
[root@centos1 rpm]# sudo rpm -Uvh glusterfs-core-3.2.0-1.x86_64.rpm [root@centos1 rpm]# sudo rpm -Uvh glusterfs-fuse-3.2.0-1.x86_64.rpm [root@centos1 rpm]# sudo rpm -ivh glusterfs-geo-replication-3.2.0-1.x86_64.rpm
FUSEの組み込み
[root@centos1 ~]# modprobe fuse [root@centos1 ~]#dmsg | grep -i fuse fuse init (API version 7.10)
起動の確認
サーバの起動確認。(クライアントで使う場合は、動かさなくてよいです)
[guutara@centos1 ~]$ sudo /etc/init.d/glusterd status [sudo] password for guutara: glusterd は停止しています [guutara@centos1 ~]$ sudo /etc/init.d/glusterd start Starting glusterd: [ OK ] [guutara@centos1 ~]$ ps -ax | grep glusterd Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ 27571 ? Ssl 0:00 /opt/glusterfs/3.2.0/sbin/glusterd 27618 pts/0 S+ 0:00 grep glusterd [guutara@centos1 ~]$ sudo /etc/init.d/glusterd stop Stopping glusterd: [ OK ] [guutara@centos1 ~]$ ps -ax | grep glusterd Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ 27631 pts/0 S+ 0:00 grep glusterd [guutara@centos1 ~]$ sudo /etc/init.d/glusterd status glusterd は停止しています
使用例
Nodeの作成(Peer)
[root@centos1 ~]# gluster peer probe psdata3b Probe successful [root@centos2 ~]# gluster peer status Number of Peers: 1 Hostname: centos3b Uuid: 344c2329-956e-495e-91f6-442af9edd3b0 State: Peer in Cluster (Connected)
distributed Volume の作成
作成
[root@centos ~]# gluster volume create testvol transport tcp centos2b:/mnt/gluster centos3b:/mnt/gluster Creation of volume testvol has been successful. Please start the volume to access data.
確認
[root@centos ~]# gluster volume info testvol Volume Name: testvol Type: Distribute Status: Created Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: centos2b:/mnt/gluster Brick2: centos3b:/mnt/gluster
Start
[root@centos ~]# gluster volume start testvol Starting volume testvol has been successful
確認
[root@centos2 ~]# gluster volume info testvol Volume Name: testvol Type: Distribute Status: Started Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: centos2b:/mnt/gluster Brick2: centos3b:/mnt/gluster
Native Client(fuse) で、使用
mount する。
[guutara@centos4 ~]$ sudo mount -t glusterfs centos2b:testvol /vol/testvol/ [guutara@centos4 ~]$ mount /dev/mapper/live-rw on / type ext3 (rw,noatime) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sdd1 on /disks/disk2 type ext3 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) glusterfs#centos2b:testvol on /vol/testvol type fuse (rw,allow_other,default_permissions,max_read=131072) [guutara@centos4 ~]$ df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/live-rw 12385456 3256324 9129132 27% / /dev/sdd1 472568500 2128136 446048076 1% /disks/disk2 glusterfs#centos2b:testvol 20158080 307328 19850752 2% /vol/testvol
Benchマーク
- Fioを使って、RandomWrite? IOのBenchマークをとります。設定ファイルが、fio_swです。結果をみると、aggrb=181651KB/sと、ほぼ、NWの限界回線の70%*1まで、でています。
[guutara@centos4 ~]$ cat fio_sw | grep -v ";" fio_sw [sw] rw=randwrite size=200m directory=/vol/testvol iodepth=32 direct=0 blocksize=512k numjobs=12 nrfiles=1 ioengine=sync loops=1 group_reporting create_on_open=1 create_serialize=0 [guutara@centos4 ~]$ sudo fio-1.54/fio fio_sw sw: (g=0): rw=randwrite, bs=512K-512K/512K-512K, ioengine=sync, iodepth=32 ... sw: (g=0): rw=randwrite, bs=512K-512K/512K-512K, ioengine=sync, iodepth=32 fio 1.54 Starting 12 processes Jobs: 8 (f=8): [w_ww_www__ww] [86.7% done] [0K/120.7M /s] [0 /235 iops] [eta 00m:02s]s] sw: (groupid=0, jobs=12): err= 0: pid=26262 write: io=2238.0MB, bw=181651KB/s, iops=354 , runt= 12616msec clat (usec): min=385 , max=77562 , avg=33663.76, stdev=1235.03 lat (usec): min=385 , max=77562 , avg=33664.14, stdev=1235.03 bw (KB/s) : min= 1024, max=52825, per=8.08%, avg=14678.55, stdev=963.06 cpu : usr=0.03%, sys=0.23%, ctx=22440, majf=0, minf=191 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued r/w/d: total=0/4476/0, short=0/0/0 lat (usec): 500=0.04%, 750=0.36%, 1000=0.09% lat (msec): 2=0.04%, 10=4.40%, 20=31.57%, 50=63.03%, 100=0.47% Run status group 0 (all jobs): WRITE: io=2238.0MB, aggrb=181651KB/s, minb=186010KB/s, maxb=186010KB/s, mint=12616msec, maxt=12616msec
ファイルの内容(distributed Volume)
[guutara@centos4 ~]$ ls /vol/testvol/ sw.1.0 sw.10.0 sw.11.0 sw.12.0 sw.2.0 sw.3.0 sw.4.0 sw.5.0 sw.6.0 sw.7.0 sw.8.0 sw.9.0
ファイルの実態
[guutara@centos4 ~]$ !ssh ssh centos2b Last login: Thu May 19 19:47:38 2011 from centos4b.guutara.local [guutara@centos2 ~]$ ls /mnt/gluster sw.1.0 sw.11.0 sw.12.0 sw.3.0 sw.4.0 sw.6.0 sw.7.0 sw.8.0 [guutara@centos2 ~]$ ssh centos3b Warning: Permanently added 'centos3b,10.29.154.3' (RSA) to the list of known hosts. Last login: Wed May 18 16:41:51 2011 from centos4.guutara.local [guutara@centos3 ~]$ ls /mnt/gluster/ sw.10.0 sw.2.0 sw.5.0 sw.9.0
Distributed Replicated Volumes の作成
作成
[root@centos2 ~]# gluster volume create testvol replica 2 transport tcp centos2b:/mnt/gluster centos3b:/mnt/gluster Creation of volume testvol has been successful. Please start the volume to access data.
確認
[root@centos2 ~]# gluster volume info testvol Volume Name: testvol Type: Replicate Status: Stopped Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: centos2b:/mnt/gluster Brick2: centos3b:/mnt/gluster
Start
[root@centos2 ~]# gluster volume start testvol Starting volume testvol has been successful
確認
[root@centos2 ~]# gluster volume info testvol Volume Name: testvol Type: Replicate Status: Started Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: centos2b:/mnt/gluster Brick2: centos3b:/mnt/gluster
Native Client(fuse)で、使用
mount する。
[guutara@centos4 ~]$ sudo mount -t glusterfs centos2b:testvol /vol/testvol/ [guutara@centos4 ~]$ mount /dev/mapper/live-rw on / type ext3 (rw,noatime) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sdd1 on /disks/disk2 type ext3 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) glusterfs#centos2b:testvol on /vol/testvol type fuse ( rw,allow_other,default_permissions,max_read=131072) [guutara@centos4 ~]$ df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/live-rw 12385456 3262888 9122568 27% / /dev/sdd1 472568500 2128136 446048076 1% /disks/disk2 glusterfs#centos2b:testvol 10078976 153600 9925376 2% /vol/testvol
Benchマーク
- Fioを使って、RandomWrite IOのBenchマークをとります。設定ファイルが、fio_swです。結果をみると、aggrb=118251KB/sと、NWの限界回線の上限*2より、かなり下で止まっています。
[guutara@centos4 ~]$ cat fio_sw | grep -v ";" fio_sw [sw] rw=randwrite size=200m directory=/vol/testvol iodepth=32 direct=0 blocksize=512k numjobs=12 nrfiles=1 ioengine=sync loops=1 group_reporting create_on_open=1 create_serialize=0 [guutara@centos4 ~]$ sudo fio-1.54/fio fio_sw sw: (g=0): rw=randwrite, bs=512K-512K/512K-512K, ioengine=sync, iodepth=32 ... sw: (g=0): rw=randwrite, bs=512K-512K/512K-512K, ioengine=sync, iodepth=32 fio 1.54 Starting 12 processes Jobs: 7 (f=7): [w__ww_ww_ww_] [95.2% done] [0K/114.3M /s] [0 /223 iops] [eta 00m:01s]s] sw: (groupid=0, jobs=12): err= 0: pid=29698 write: io=2238.0MB, bw=118251KB/s, iops=230 , runt= 19380msec clat (usec): min=393 , max=101596 , avg=51840.50, stdev=2050.80 lat (usec): min=393 , max=101596 , avg=51840.91, stdev=2050.79 bw (KB/s) : min= 5840, max=19656, per=8.22%, avg=9721.22, stdev=198.64 cpu : usr=0.02%, sys=0.12%, ctx=22442, majf=0, minf=191 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued r/w/d: total=0/4476/0, short=0/0/0 lat (usec): 500=0.13%, 750=0.20%, 1000=0.16% lat (msec): 2=0.04%, 10=0.42%, 20=0.58%, 50=20.67%, 100=77.73% lat (msec): 250=0.07% Run status group 0 (all jobs): WRITE: io=2238.0MB, aggrb=118251KB/s, minb=121089KB/s, maxb=121089KB/s, mint=19380msec, maxt=19380msec
ファイルの内容
[guutara@centos4 ~]$ ls /vol/testvol/ sw.1.0 sw.10.0 sw.11.0 sw.12.0 sw.2.0 sw.3.0 sw.4.0 sw.5.0 sw.6.0 sw.7.0 sw.8.0 sw.9.0
ファイルの実態
Replicaなので、2つのホストに、同一の内容で格納されています。
[guutara@centos2 ~]$ ls /mnt/gluster/ sw.1.0 sw.10.0 sw.11.0 sw.12.0 sw.2.0 sw.3.0 sw.4.0 sw.5.0 sw.6.0 sw.7.0 sw.8.0 sw.9.0 [guutara@centos3 ~]$ ls /mnt/gluster/ sw.1.0 sw.10.0 sw.11.0 sw.12.0 sw.2.0 sw.3.0 sw.4.0 sw.5.0 sw.6.0 sw.7.0 sw.8.0 sw.9.0
Distributed Striped Volumes
作成
[root@centos2 ~]# gluster volume create testvol stripe 2 transport tcp centos2b:/mnt/gluster centos3b:/mnt/gluster Creation of volume testvol has been successful. Please start the volume to access data.
確認
[root@centos2 ~]# gluster volume info testvol Volume Name: testvol Type: Stripe Status: Created Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: centos2b:/mnt/gluster Brick2: centos3b:/mnt/gluster
Start
[root@centos2 ~]# gluster volume start testvol Starting volume testvol has been successful
確認
[root@centos2 ~]# gluster volume info testvol Volume Name: testvol Type: Stripe Status: Started Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: centos2b:/mnt/gluster Brick2: centos3b:/mnt/gluster
Native Client(fuse)で、使用
mount する。
[guutara@centos4 ~]$ sudo mount -t glusterfs centos2b:testvol /vol/testvol/ [guutara@centos4 ~]$ mount /dev/mapper/live-rw on / type ext3 (rw,noatime) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sdd1 on /disks/disk2 type ext3 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) glusterfs#centos2b:testvol on /vol/testvol type fuse (rw,allow_other,default_permissions,max_read=131072) [guutara@centos4 ~]$ df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/live-rw 12385456 3261280 9124176 27% / /dev/sdd1 472568500 2128136 446048076 1% /disks/disk2 glusterfs#centos2b:testvol 20158080 307328 19850752 2% /vol/testvol
Benchマーク
- Fioを使って、RandomWrite IOのBenchマークをとります。設定ファイルが、fio_swです。結果をみると、aggrb=241614KB/sと、NWの限界回線の上限*3の90%まで使い切っています。
[guutara@centos4 ~]$ cat fio_sw | grep -v ";" fio_sw [sw] rw=randwrite size=200m directory=/vol/testvol iodepth=32 direct=0 blocksize=512k numjobs=12 nrfiles=1 ioengine=sync loops=1 group_reporting create_on_open=1 create_serialize=0 [guutara@centos4 ~]$ ls /vol/testvol/ [guutara@centos4 ~]$ sudo fio-1.54/fio fio_sw sw: (g=0): rw=randwrite, bs=512K-512K/512K-512K, ioengine=sync, iodepth=32 ... sw: (g=0): rw=randwrite, bs=512K-512K/512K-512K, ioengine=sync, iodepth=32 fio 1.54 Starting 12 processes Jobs: 10 (f=10): [w__wwwwwwwww] [90.9% done] [0K/239.2M /s] [0 /467 iops] [eta 00m:01s] sw: (groupid=0, jobs=12): err= 0: pid=25095 write: io=2238.0MB, bw=241614KB/s, iops=471 , runt= 9485msec clat (usec): min=402 , max=69128 , avg=25305.34, stdev=939.55 lat (usec): min=403 , max=69128 , avg=25305.74, stdev=939.55 bw (KB/s) : min= 3953, max=44222, per=7.94%, avg=19188.44, stdev=1061.64 cpu : usr=0.03%, sys=0.24%, ctx=22439, majf=0, minf=191 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued r/w/d: total=0/4476/0, short=0/0/0 lat (usec): 500=0.07%, 750=0.27%, 1000=0.13% lat (msec): 2=0.07%, 4=0.74%, 10=2.46%, 20=5.12%, 50=90.88% lat (msec): 100=0.27% Run status group 0 (all jobs): WRITE: io=2238.0MB, aggrb=241614KB/s, minb=247413KB/s, maxb=247413KB/s, mint=9485msec, maxt=9485msec
ファイルの内容
[guutara@centos4 ~]$ ls -al /vol/testvol/ 合計 1148372 drwxr-xr-x 2 root root 4096 5月 24 17:47 . drwxr-xr-x 5 root root 4096 5月 20 11:27 .. -rw------- 1 root root 209715200 5月 24 17:47 sw.1.0 -rw------- 1 root root 209715200 5月 24 17:47 sw.10.0 -rw------- 1 root root 209715200 5月 24 17:47 sw.11.0 -rw------- 1 root root 209715200 5月 24 17:47 sw.12.0 -rw------- 1 root root 209715200 5月 24 17:47 sw.2.0 -rw------- 1 root root 209715200 5月 24 17:47 sw.3.0 -rw------- 1 root root 209715200 5月 24 17:47 sw.4.0 -rw------- 1 root root 209715200 5月 24 17:47 sw.5.0 -rw------- 1 root root 209715200 5月 24 17:47 sw.6.0 -rw------- 1 root root 209715200 5月 24 17:47 sw.7.0 -rw------- 1 root root 209715200 5月 24 17:47 sw.8.0 -rw------- 1 root root 209715200 5月 24 17:47 sw.9.0
ファイルの実態
ls で、みると、各サーバに巨大なファイルがある様に見えるますが、実は中身は入っていません。1つのファイルが、分散してかかれています。スパースファイル(sparse file)を使用していることがわかります。
[root@centos2 gluster]# ls -al /mnt/gluster/ 合計 1148364 drwxr-xr-x 2 root root 4096 5月 24 18:45 . drwxr-xr-x 3 root root 4096 5月 16 17:59 .. -rw------- 1 root root 209584128 5月 24 18:45 sw.1.0 -rw------- 1 root root 209584128 5月 24 18:45 sw.10.0 -rw------- 1 root root 209584128 5月 24 18:45 sw.11.0 -rw------- 1 root root 209584128 5月 24 18:45 sw.12.0 -rw------- 1 root root 209584128 5月 24 18:45 sw.2.0 -rw------- 1 root root 209584128 5月 24 18:45 sw.3.0 -rw------- 1 root root 209584128 5月 24 18:45 sw.4.0 -rw------- 1 root root 209584128 5月 24 18:45 sw.5.0 -rw------- 1 root root 209584128 5月 24 18:45 sw.6.0 -rw------- 1 root root 209584128 5月 24 18:45 sw.7.0 -rw------- 1 root root 209584128 5月 24 18:45 sw.8.0 -rw------- 1 root root 209584128 5月 24 18:45 sw.9.0 [root@centos2 gluster]# du -a /mnt/gluster/ 86480 /mnt/gluster/sw.12.0 99536 /mnt/gluster/sw.1.0 93136 /mnt/gluster/sw.3.0 95696 /mnt/gluster/sw.4.0 93648 /mnt/gluster/sw.6.0 92624 /mnt/gluster/sw.2.0 97232 /mnt/gluster/sw.11.0 98000 /mnt/gluster/sw.8.0 98768 /mnt/gluster/sw.10.0 98768 /mnt/gluster/sw.5.0 91856 /mnt/gluster/sw.9.0 102608 /mnt/gluster/sw.7.0 [guutara@centos3 ~]$ ls -al /mnt/gluster/ 合計 1148364 drwxr-xr-x 2 root root 4096 5月 24 18:45 . drwxr-xr-x 3 root root 4096 5月 16 18:01 .. -rw------- 1 root root 209715200 5月 24 18:45 sw.1.0 -rw------- 1 root root 209715200 5月 24 18:45 sw.10.0 -rw------- 1 root root 209715200 5月 24 18:45 sw.11.0 -rw------- 1 root root 209715200 5月 24 18:45 sw.12.0 -rw------- 1 root root 209715200 5月 24 18:45 sw.2.0 -rw------- 1 root root 209715200 5月 24 18:45 sw.3.0 -rw------- 1 root root 209715200 5月 24 18:45 sw.4.0 -rw------- 1 root root 209715200 5月 24 18:45 sw.5.0 -rw------- 1 root root 209715200 5月 24 18:45 sw.6.0 -rw------- 1 root root 209715200 5月 24 18:45 sw.7.0 -rw------- 1 root root 209715200 5月 24 18:45 sw.8.0 -rw------- 1 root root 209715200 5月 24 18:45 sw.9.0 [guutara@centos3 ~]$ du -a /mnt/gluster/ 86480 /mnt/gluster/sw.12.0 102608 /mnt/gluster/sw.7.0 98768 /mnt/gluster/sw.5.0 93136 /mnt/gluster/sw.3.0 99536 /mnt/gluster/sw.1.0 98000 /mnt/gluster/sw.8.0 97232 /mnt/gluster/sw.11.0 92624 /mnt/gluster/sw.2.0 95696 /mnt/gluster/sw.4.0 93648 /mnt/gluster/sw.6.0 91856 /mnt/gluster/sw.9.0 98768 /mnt/gluster/sw.10.0
Geo-Replicationの設定 -- slaveを、GlusterFS Volume で作成する。
Slaveは、1台のノードです。
peer の確認
3台で、peerしています。
[root@centos2 ~]# gluster peer status Number of Peers: 2 Hostname: centos3b Uuid: 344c2329-956e-495e-91f6-442af9edd3b0 State: Peer in Cluster (Connected) Hostname: centos5b Uuid: 526b9a5c-6da4-475f-a131-c5686fa542eb State: Peer in Cluster (Connected)
Volumeの設定
testvolが、MasterにするVolumeです。mirrorが、slaveにするvolumeです。
testvolume
[root@centos2 ~]# gluster volume info testvol Volume Name: testvol Type: Distribute Status: Started Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: centos2b:/mnt/gluster Brick2: centos3b:/mnt/gluster Options Reconfigured: geo-replication.indexing: on
mirror
[root@centos2 ~]# gluster volume info mirror Volume Name: mirror Type: Distribute Status: Started Number of Bricks: 1 Transport-type: tcp Bricks: Brick1: centos5b:/disks/disk2/mirror
masterの状態の確認
[root@centos4 ~]# df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/live-rw 12385456 3260156 9125300 27% / /dev/sdd1 472568500 2128136 446048076 1% /disks/disk2 glusterfs#centos2b:testvol 20158080 307328 19850752 2% /vol/testvol [root@centos4 ~]# ls -al /vol/testvol/ 合計 8 drwxr-xr-x 2 root root 4096 5月 16 18:03 . drwxr-xr-x 4 root root 4096 5月 20 11:25 .. mirrorの内容の確認 [root@centos5 ~]# mount -t glusterfs centos5:/mirror /vol/mirror/ [root@centos5 ~]# ls -al /vol/mirror/ 合計 12 drwxr-xr-x 2 root root 4096 5月 21 19:19 . drwxr-xr-x 3 root root 4096 5月 21 19:18 ..
geo-replication の開始
[root@centos2 ~]# gluster volume geo-replication testvol centos5b:mirror start Starting geo-replication session between testvol & centos5b:mirror has been successful
geo-replicationの状態の確認
[root@centos2 ~]# gluster volume geo-replication testvol centos5b:mirror status MASTER SLAVE STATUS ---- testvol centos5b:mirror starting... [root@centos2 ~]# gluster volume geo-replication testvol centos5b:mirror status MASTER SLAVE STATUS ---- testvol centos5b:mirror OK
masterへの書き込みテスト
Cliant(cenyos4)で、masterをマウントして書き込みます。
非同期ならば、回線の上限*4の60%=150MBps程度はでるはずです。結果、aggrb=179040KB/sなので、書き込み速度は、予想通りでした。
[guutara@centos4 ~]$ sudo fio-1.54/fio fio_sw sw: (g=0): rw=randwrite, bs=512K-512K/512K-512K, ioengine=sync, iodepth=32 ... sw: (g=0): rw=randwrite, bs=512K-512K/512K-512K, ioengine=sync, iodepth=32 fio 1.54 Starting 12 processes Jobs: 8 (f=8): [w_ww_www__ww] [86.7% done] [0K/119.1M /s] [0 /234 iops] [eta 00m:02s]s] sw: (groupid=0, jobs=12): err= 0: pid=23475 write: io=2238.0MB, bw=179040KB/s, iops=349 , runt= 12800msec clat (usec): min=367 , max=84086 , avg=33741.42, stdev=1072.94 lat (usec): min=367 , max=84086 , avg=33741.81, stdev=1072.93 bw (KB/s) : min= 992, max=50097, per=8.13%, avg=14549.08, stdev=865.20 cpu : usr=0.03%, sys=0.20%, ctx=22437, majf=0, minf=191 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued r/w/d: total=0/4476/0, short=0/0/0 lat (usec): 500=0.16%, 750=0.20%, 1000=0.11% lat (msec): 2=0.07%, 4=0.02%, 10=2.61%, 20=30.97%, 50=65.37% lat (msec): 100=0.49% Run status group 0 (all jobs): WRITE: io=2238.0MB, aggrb=179040KB/s, minb=183336KB/s, maxb=183336KB/s, mint=12800msec, maxt=12800msec
master側の内容
[guutara@centos4 ~]$ ls -al /vol/testvol/ 合計 2294228 drwxr-xr-x 2 root root 8192 5月 21 19:30 . drwxr-xr-x 5 root root 4096 5月 20 11:27 .. -rw------- 1 root root 209715200 5月 21 19:30 sw.1.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.10.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.11.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.12.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.2.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.3.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.4.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.5.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.6.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.7.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.8.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.9.0
slave側の内容
[guutara@centos5 ~]$ ls -al /vol/mirror/ 合計 2294220 drwxr-xr-x 2 root root 4096 5月 21 19:30 . drwxr-xr-x 3 root root 4096 5月 21 19:18 .. -rw------- 1 root root 209715200 5月 21 19:30 sw.1.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.10.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.11.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.12.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.2.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.3.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.4.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.5.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.6.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.7.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.8.0 -rw------- 1 root root 209715200 5月 21 19:30 sw.9.0
結果
書き込みされた後、非同期に、slave側へデータが転送されているのが、観測されました。非同期にレプリケーションされています。
他のVolumeでの結果
replica,stripeのVolumeをMasterにした際の結果を以下に記します。実験の際、Stripeに関して、statusが、「faulty」になる事象が発生しました。現時点では、原因は、不明です。
replica
[root@centos2 ~]# gluster volume geo-replication testvol centos5b:mirror start [root@centos2 ~]# gluster volume info testvol Volume Name: testvol Type: Replicate Status: Started Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: centos2b:/mnt/gluster Brick2: centos3b:/mnt/gluster Options Reconfigured: geo-replication.indexing: on [guutara@centos4 ~]$ sudo fio-1.54/fio fio_sw sw: (g=0): rw=randwrite, bs=512K-512K/512K-512K, ioengine=sync, iodepth=32 ... sw: (g=0): rw=randwrite, bs=512K-512K/512K-512K, ioengine=sync, iodepth=32 fio 1.54 Starting 12 processes Jobs: 7 (f=7): [w__ww_ww_ww_] [95.2% done] [0K/115.2M /s] [0 /224 iops] [eta 00m:01s]s] sw: (groupid=0, jobs=12): err= 0: pid=23729 write: io=2238.0MB, bw=118105KB/s, iops=230 , runt= 19404msec clat (usec): min=385 , max=138767 , avg=50778.30, stdev=2464.12 lat (usec): min=385 , max=138767 , avg=50778.66, stdev=2464.11 bw (KB/s) : min= 5079, max=22093, per=8.52%, avg=10065.18, stdev=366.89 cpu : usr=0.02%, sys=0.11%, ctx=22440, majf=0, minf=191 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued r/w/d: total=0/4476/0, short=0/0/0 lat (usec): 500=0.09%, 750=0.25%, 1000=0.11% lat (msec): 2=0.09%, 10=0.67%, 20=0.83%, 50=23.17%, 100=74.62% lat (msec): 250=0.18% Run status group 0 (all jobs): WRITE: io=2238.0MB, aggrb=118105KB/s, minb=120939KB/s, maxb=120939KB/s, mint=19404msec, maxt=19404msec [guutara@centos4 ~]$ ls -l /vol/testvol/ 合計 2294208 -rw------- 1 root root 209715200 5月 24 17:16 sw.1.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.10.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.11.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.12.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.2.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.3.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.4.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.5.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.6.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.7.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.8.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.9.0 [root@centos5 ~]# ls -al /vol/mirror/ 合計 2294220 drwxr-xr-x 2 root root 4096 5月 24 17:16 . drwxr-xr-x 3 root root 4096 5月 21 19:18 .. -rw------- 1 root root 209715200 5月 24 17:16 sw.1.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.10.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.11.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.12.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.2.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.3.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.4.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.5.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.6.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.7.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.8.0 -rw------- 1 root root 209715200 5月 24 17:16 sw.9.0
Stripe
[root@centos2 gluster]# gluster volume geo-replication testvol centos5b:mirror start Starting geo-replication session between testvol & centos5b:mirror has been successful [root@centos2 gluster]# gluster volume info testvol Volume Name: testvol Type: Stripe Status: Started Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: centos2b:/mnt/gluster Brick2: centos3b:/mnt/gluster Options Reconfigured: geo-replication.indexing: on [guutara@centos4 ~]$ ls -al /vol/testvol/ 合計 20 drwxr-xr-x 2 root root 4096 5月 24 20:32 . drwxr-xr-x 5 root root 4096 5月 20 11:27 .. [guutara@centos4 ~]$ sudo fio-1.54/fio fio_sw sw: (g=0): rw=randwrite, bs=512K-512K/512K-512K, ioengine=sync, iodepth=32 ... sw: (g=0): rw=randwrite, bs=512K-512K/512K-512K, ioengine=sync, iodepth=32 fio 1.54 Starting 12 processes Jobs: 11 (f=11): [wwwwwwwwwww_] [90.9% done] [0K/240.5M /s] [0 /469 iops] [eta 00m:01s] sw: (groupid=0, jobs=12): err= 0: pid=1878 write: io=2238.0MB, bw=242023KB/s, iops=472 , runt= 9469msec clat (usec): min=396 , max=70724 , avg=24253.73, stdev=1352.69 lat (usec): min=397 , max=70725 , avg=24254.11, stdev=1352.68 bw (KB/s) : min= 5069, max=41568, per=8.65%, avg=20929.09, stdev=1140.28 cpu : usr=0.02%, sys=0.23%, ctx=22439, majf=0, minf=191 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued r/w/d: total=0/4476/0, short=0/0/0 lat (usec): 500=0.13%, 750=0.16%, 1000=0.09% lat (msec): 2=0.20%, 4=0.27%, 10=1.85%, 20=7.73%, 50=89.30% lat (msec): 100=0.27% Run status group 0 (all jobs): WRITE: io=2238.0MB, aggrb=242022KB/s, minb=247831KB/s, maxb=247831KB/s, mint=9469msec, maxt=9469msec [guutara@centos4 ~]$ ls -al /vol/testvol 合計 1148372 drwxr-xr-x 2 root root 4096 5月 24 20:38 . drwxr-xr-x 5 root root 4096 5月 20 11:27 .. -rw------- 1 root root 209715200 5月 24 20:38 sw.1.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.10.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.11.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.12.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.2.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.3.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.4.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.5.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.6.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.7.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.8.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.9.0 [root@centos5 ~]# ls -al /vol/mirror/ 合計 2294220 drwxr-xr-x 2 root root 4096 5月 24 20:38 . drwxr-xr-x 3 root root 4096 5月 21 19:18 .. -rw------- 1 root root 209715200 5月 24 20:38 sw.1.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.10.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.11.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.12.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.2.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.3.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.4.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.5.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.6.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.7.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.8.0 -rw------- 1 root root 209715200 5月 24 20:38 sw.9.0
geo-replication の停止
以下の様に、stopコマンドで停止します。Statusで、何も表示されなければ、停止しています。
[root@centos2 ~]# gluster volume geo-replication testvol centos5b:mirror stop Stopping geo-replication session between testvol & centos5b:mirror has been successful [root@centos2 ~]# gluster volume geo-replication testvol centos5b:mirror status MASTER SLAVE STATUS --------------------------------------------------------------------------------
Volumeの停止
[root@centos1 ~]# gluster volume stop testvol Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y Stopping volume testvol has been successful
Volumeの削除
[root@centos1 ~]# gluster volume delete testvol Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y Deleting volume testvol has been successful
peerの削除
[root@centos1 ~]# gluster peer detach cento3b Detach successful [root@centos1 ~]# gluster peer status No peers present
最後に
テストした結果を、ざっと、書いてみました。あくまで、テスト結果なので、間違っている所も、多々、あると思います。
うのみには、しないで、ご利用は、自己責任でおねがいしまっす。
ちなみに、READだと、また、違った特性がでるので、色々、やってみると、面白いとおもいまっす!