GlusterFSとは分散ファイルシステムを実現するサーバソフトウェア。Gluster Inc. によって開発され、2011年9月Redhat社が買収し現在はOSS版と商用版が存在する。GlusterFSを利用することで、複数のサーバのファイルシステムを集約して1つのファイルシステムとして利用できる。VIP,マスターやスレーブといった概念はない。基本的にすべてのノードは同格として扱われる。
用語 | 説明 | ||||||
ストレージプール(Storage Pool) | GlusterFSクラスタに参加するサーバグループのことを指します。 | ||||||
ブリック(Brick) |
個々のサーバのファイルシステムを指します。ノード、GlusterFSに利用される。GlusterFSは各ノードの1つのブリックにつき1つのポートが使用されます。
|
||||||
ボリューム |
ブリックを論理的に束ねたものです。GlusterFSストレージをクライアントから利用する場合には、このボリュームをマウントして利用します。
|
||||||
ボリュームタイプ |
ボリュームにデータを作成する時の方式です。ボリューム作成時に選択できます。
|
今回はサーバ二台&クライアント一台構成でやってみました。
・gluster01.tagutagu.com 10.24.96.141
・gluster02.tagutagu.com 10.24.96.142
CentOSから提供されているリポジトリを使用します。
[root@gluster01 ~]# yum install centos-release-gluster
[root@gluster01 ~]# yum install glusterfs-server
[root@gluster01 ~]# chkconfig glusterd on
[root@gluster01 ~]# /etc/init.d/glusterd start
Starting glusterd:
Glusterクラスタ(ストレージプール) にサーバ追加を追加します。
[root@gluster01 ~]# yum install centos-release-gluster
[root@gluster01 ~]# yum install glusterfs-server
[root@gluster01 ~]# chkconfig glusterd on
ストレージプールに参加しているサーバを確認します。
[root@gluster01 ~]# gluster peer status
Number of Peers: 1
Hostname: 10.24.96.142
Uuid: d38b2abf-c6eb-45d0-a07e-5a72a4a2c72f
State: Peer in Cluster (Disconnected)
接続できないホストが存在する場合はdisconnectとなります。
[root@gluster01 ~]# gluster peer status
Number of Peers: 1
Hostname: 10.24.96.142
Uuid: d38b2abf-c6eb-45d0-a07e-5a72a4a2c72f
State: Peer in Cluster (Disconnected)
各サーバでブリック用ディレクトリを作成します。
[root@gluster01 ~]# ls /gluster_fs/
gs01
[root@gluster02 ~]# ls /gluster_fs/
gs01
各サーバで名前解決用にhostsファイルを編集します。
[root@gluster01 ~]# echo "10.24.96.141 gluster01.tagutagu.com" >> /etc/hosts
[root@gluster01 ~]# echo "10.24.96.142 gluster02.tagutagu.com" >> /etc/hosts
[root@gluster02 ~]# echo "10.24.96.141 gluster01.tagutagu.com" >> /etc/hosts
[root@gluster02 ~]# echo "10.24.96.142 gluster02.tagutagu.com" >> /etc/hosts
いずれかのサーバでGluster volumeを作成し、ボリュームを起動。
書式 | Gluster volume create <NEW-VOLNAME> [stripe <COUNT>] [replica <COUNT> [arbiter <COUNT>]] [disperse [<COUNT>]] [disperse-data <COUNT>] [redundancy <COUNT>] [transport <tcp|rdma|tcp,rdma>] <NEW-BRICK>?<vg_name>... [force] |
基本はルートパーティションと同じデバイス上にはボリュームのブリックは作成できないみたい。今回は強制実行(force)で実行してしまいました。
※ルートパーティションをブリックにした構成でやると怒られる
[root@gluster01 ~]# gluster volume create gs01 replica 2 gluster01.tagutagu.com:/gluster_fs/gs01 gluster02.t
agutagu.com:/gluster_fs/gs01
volume create: gs01: failed: The brick gluster01.tagutagu.com:/gluster_fs/gs01 is being created in the root partition. It is recommended that you don't use the system's root partition for storage backend. Or use 'force' at the end of the command if you want to override this behavior.
|
[root@gluster01 ~]# gluster volume create gs01 replica 2 gluster01.tagutagu.com:/gluster_fs/gs01 gluster02.tagutagu.com:/gluster_fs/gs01 force
volume create: gs01: success: please start the volume to access data
[root@gluster01 ~]# gluster volume start gs01
volume start: gs01: success
[root@gluster01 ~]# gluster volume info
Volume Name: gs01
Type: Replicate
Volume ID: e25ba5a0-4310-4929-919c-9150f3b91dc5
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: gluster01.tagutagu.com:/gluster_fs/gs01
Brick2: gluster02.tagutagu.com:/gluster_fs/gs01
Options Reconfigured:
transport.address-family: inet
performance.readdir-ahead: on
nfs.disable: on
またボリュームを作り直す場合などキャッシュが完全に消えない場合がある、以下のメッセージで怒られたらキャッシュを消してみると吉。 https://qiita.com/kawaz/items/afc5659f14b586190f23
# gluster volume create test-volume01 replica 2 server01:/data/test01 server02:/data/test01
volume create: test-volume01: failed: /data/test01 is already part of a volume
初期状態ではクライアントからNFSマウントすることができなかったため、必要箇所を修正します。GlusterFSには、CentOS標準とは異なるNFSサーバ機能がふくまれています。デフォルトでは無効化されているので各サーバで有効化しておきます。
[root@gluster01 ~]# gluster volume set gs01 nfs.disable off
[root@gluster02 ~]# gluster volume set gs01 nfs.disable off
NFSに必要なrpcbindの起動、rpcbind起動に伴いGlusterFSを再起動します。
[root@gluster01 ~]# /etc/init.d/rpcbind start
[root@gluster01 ~]# /etc/init.d/glusterd restart
[root@gluster02 ~]# /etc/init.d/rpcbind start
[root@gluster02 ~]# /etc/init.d/glusterd restart
クライアント側も各GlusterFSサーバを名前解決可能な状態にしておく必要があります。(直接接続しないサーバについても)hostsを編集しておきます。
■マウントできない
[root@mms ~]# mount -t glusterfs 10.24.96.141:/gs01 /data
Mount failed. Please check the log file for more details.
[root@mms ~]# echo "10.24.96.141 gluster01.tagutagu.com" >> /etc/hosts
[root@mms ~]# echo "10.24.96.142 gluster02.tagutagu.com" >> /etc/hosts
クライアントからGlusterFileSystemをマウントするには、2つの方法があります。
必要なパッケージをインストールし、マウントタイプをglusterfsを指定します。
[root@mms ~]# yum install centos-release-gluster
[root@mms ~]# yum install glusterfs-fuse
[root@mms ~]# mount -t glusterfs 10.24.96.141:/gs01 /data
NFSクライアントとしてマウント
[root@mms ~]# mount -t nfs gluster01.tagutagu.com:/gs01 /data
また、一回こんなエラーに遭遇。ClientのGluster logに、なにやらGluster Volume側のキャッシュサイズがでかすぎるよ、とのこと。
[2018-01-25 10:26:39.786792] E [MSGID: 127002]
[quick-read.c:838:check_cache_size_ok] 0-test-volume01-quick-read: Cache size 8246611968 is greater than the max size of 8238444544
Gluster Server側で言われたとおりにオプションを変えたら解決した。
gluster volume set test-volume01 performance.cache-size 8238444544
以上です。
Copyright © 2021 たぐたぐ.com. All rights reserved.