「呑めば呑むほど強くなる」な感じを率直に思えた「分散ファイルシステム」の一つ「GlusterFS
本家様 http://www.gluster.org/
複数のマシンで分散してデータを保持する。データ保持の方法はstripereplicaなどの方法である。
Lustreのような中央監視なマシンは不要。
2015y01m24d_215554084.png
ここでは4台(n1、n2、n3、n4)のノードを使って各種検証を行ってみた。使用OSはCentOS 7
*速度調査、パフォーマンステストはしません

Brickの作成

参照先 http://www.gluster.org/community/documentation/index.php/QuickStart

OS領域な部分と、GlusterFS構成員として拠出するBrick部分を作る。
拠出するBrick部分はGlusterFSをどのように構成するかに応じるが、冗長なしの単体HDDやHW-RAID構成でOK。
もちろん1台のノードに複数のBrickがあっても構わない。
ここでは、

デバイス領域サイズ備考
/dev/sdaOS領域8GB最小インストールでntp導入
/dev/sdbGlusterFS16GBBrick部分
パーティションを切らなくても可

と簡単に1ノードに1Brickの構成とした。

[root@n1 ~]# cat /proc/partitions
major minor  #blocks  name
 
   2        0          4 fd0
   8       16   16777216 sdb
   8        0    8388608 sda
   8        1     524288 sda1
   8        2     524288 sda2
   8        3    2097152 sda3
   8        4    5240832 sda4
  11        0     470528 sr0
[root@n1 ~]#
[root@n1 ~]# mkfs.xfs -i size=512 /dev/sdb        *「-i size=512」はinodeサイズを512バイトに
[root@n1 ~]# mkdir /brick
[root@n1 ~]# echo "/dev/sdb /brick xfs defaults 1 2" >> /etc/fstab
[root@n1 ~]# mount -a
[root@n1 ~]# df -lTh /brick
ファイルシス   タイプ サイズ  使用  残り 使用% マウント位置
/dev/sdb       xfs       16G   33M   16G    1% /brick
[root@n1 ~]#

n2、n3、n4でも同じように構築する

GlusterFSのインストール

CentOS 7の標準リポジトリで一応 glusterfsとして提供されているだが、glusterfs-serverは見当たらない。
なので、glusterのサイトでRed Hat/CentOS向けのパッケージを取得した。
http://www.gluster.org/community/documentation/index.php/Getting_started_install
開発元がRed Hat/CentOS向けの最新版を提供している。すばらしい。

[root@n1 ~]# mkdir glusterfs && cd glusterfs
[root@n1 glusterfs]# wget -l1 -nd -nc -r -A rpm \
      http://download.gluster.org/pub/gluster/glusterfs/LATEST/RHEL/epel-7/x86_64/
[root@n1 glusterfs]# ls -l
合計 14324
-rw-r--r-- 1 root root   458032  4月 18 22:50 glusterfs-3.7.11-1.el7.x86_64.rpm
-rw-r--r-- 1 root root    83380  4月 18 22:50 glusterfs-api-3.7.11-1.el7.x86_64.rpm
-rw-r--r-- 1 root root    38336  4月 18 22:50 glusterfs-api-devel-3.7.11-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   181952  4月 18 22:50 glusterfs-cli-3.7.11-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   805172  4月 18 22:50 glusterfs-client-xlators-3.7.11-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 10625972  4月 18 22:50 glusterfs-debuginfo-3.7.11-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   168412  4月 18 22:50 glusterfs-devel-3.7.11-1.el7.x86_64.rpm
-rw-r--r-- 1 root root    92620  4月 18 22:50 glusterfs-extra-xlators-3.7.11-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   131764  4月 18 22:50 glusterfs-fuse-3.7.11-1.el7.x86_64.rpm
-rw-r--r-- 1 root root    42956  4月 18 22:50 glusterfs-ganesha-3.7.11-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   206952  4月 18 22:50 glusterfs-geo-replication-3.7.11-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   348936  4月 18 22:50 glusterfs-libs-3.7.11-1.el7.x86_64.rpm
-rw-r--r-- 1 root root    60896  4月 18 22:50 glusterfs-rdma-3.7.11-1.el7.x86_64.rpm
-rw-r--r-- 1 root root  1392340  4月 18 22:50 glusterfs-server-3.7.11-1.el7.x86_64.rpm
[root@n1 glusterfs]#

取得したパッケージをn2、n3、n4にコピーします。

[root@n1 glusterfs]# ssh -l root n2 mkdir glusterfs && scp ./*.rpm root@n2:glusterfs/
[root@n1 glusterfs]# ssh -l root n3 mkdir glusterfs && scp ./*.rpm root@n3:glusterfs/
[root@n1 glusterfs]# ssh -l root n4 mkdir glusterfs && scp ./*.rpm root@n4:glusterfs/

インストールするパッケージは glusterfs-server パッケージとその依存パッケージで、

[root@n1 glusterfs]# yum localinstall ./glusterfs-server-3.7.11-1.el7.x86_64.rpm \
./glusterfs-3.7.11-1.el7.x86_64.rpm \
./glusterfs-api-3.7.11-1.el7.x86_64.rpm \
./glusterfs-cli-3.7.11-1.el7.x86_64.rpm \
./glusterfs-client-xlators-3.7.11-1.el7.x86_64.rpm \
./glusterfs-fuse-3.7.11-1.el7.x86_64.rpm \
./glusterfs-libs-3.7.11-1.el7.x86_64.rpm
[root@n1 glusterfs]#

とします。インストールが完了すると下記の様にサービスが定義され、glusterd.service を有効にします。

[root@n1 glusterfs]# systemctl list-unit-files |grep gluster
glusterd.service                            disabled
glusterfsd.service                          disabled
[root@n1 glusterfs]#
[root@n1 glusterfs]# systemctl enable glusterd

留意 glusterd と glusterfsd があるが、glusterdだけでいいみたい。

信頼されたストレージプールを作る

本家では「Configure the trusted pool」と称されている。まあーお仲間作りって言ったところか。
ここではn1ノードでのみ操作を行います。
留意 n1ノードで操作をしたからといって、n1ノードに特別な機能が与えられる訳ではない

[root@n1 ~]# gluster peer status         *状況確認
Number of Peers: 0                       *仲間はおりません
 
[root@n1 ~]# gluster pool list
UUID                                    Hostname        State
3175c53c-aeff-49ae-bce9-af8a0314aedf    localhost       Connected     *UUIDは/var/lib/glusterd/glusterd.infoと同じ
 
[root@n1 ~]#
[root@n1 ~]# gluster peer probe n2       *n2ノードを追加
peer probe: success.
[root@n1 ~]#
[root@n1 ~]# gluster peer status
Number of Peers: 1
 
Hostname: n2                             *n2ノード追加成功
Uuid: 80f808eb-8afc-424b-a40d-e0370c609cd8
State: Peer in Cluster (Connected)
[root@n1 ~]#
[root@n1 ~]# gluster pool list
UUID                                    Hostname        State
80f808eb-8afc-424b-a40d-e0370c609cd8    n2              Connected
3175c53c-aeff-49ae-bce9-af8a0314aedf    localhost       Connected
[root@n1 ~]#

このn1ノードでの作業後、n2ノード側は何もしなくても

[root@n2 ~]# gluster peer status
Number of Peers: 1
 
Hostname: 192.168.0.52
Uuid: 3175c53c-aeff-49ae-bce9-af8a0314aedf
State: Peer in Cluster (Connected)
[root@n2 ~]#
[root@n2 ~]# gluster pool list
UUID                                    Hostname        State
3175c53c-aeff-49ae-bce9-af8a0314aedf    192.168.0.52    Connected
80f808eb-8afc-424b-a40d-e0370c609cd8    localhost       Connected
[root@n2 ~]#

と自動的に連携される。
上記の様に操作して、n3ノードとn4ノードも追加します。

ちなみにノードを削除するには、下記のようにします。

[root@n1 ~]# gluster peer detach n2
peer detach: success
[root@n1 ~]# gluster peer status
Number of Peers: 0
[root@n1 ~]# gluster pool list
UUID                                    Hostname        State
3175c53c-aeff-49ae-bce9-af8a0314aedf    localhost       Connected
[root@n1 ~]#

この時のn2ノードでも自動的に削除されます。

GlusterFSのボリュームを作成する

ここが胆なのかな。コマンド様式は

[root@n1 ~]# gluster volume create ボリューム名 \
    [stripe <COUNT>]  \
    [replica <COUNT>] \
    [disperse [<COUNT>]] \
    [redundancy <COUNT>] \
    [transport <tcp|rdma|tcp,rdma>] \
 n1:/brick/gv0  n2:/brick/gv0  n3:/brick/gv0  n4:/brick/gv0 \
    [force]

となる。
stripe(分割)  複数のノードに分割したファイルの断片を分散させる
replica(複製)  複数のノードに同じファイルの複製を作る
disperse(分散) RAID5っぽくファイルを分散する(version3.6から)

mount操作

GlusterFS/client

初期化

コマンドでなかったことにもできるが、簡単には

[root@n1 ~]# /etc/init.d/glusterd stop
[root@n1 ~]# rm -rf /var/lib/glusterd/*
[root@n1 ~]# /etc/init.d/glusterd start

でいいみたい。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2016-05-31 (火) 01:26:39 (445d)