CentOS7にて内容編集中
GlobalFileSystem2
CentOS 7にて gfs2 を構築してみる。
マシン名 | 役割 | ip | 備考 |
gfs | クラスタ管理ノード | 192.168.0.19 | luciを使う |
n1 | クラスタメンバ | 192.168.0.14 | |
n2 | 192.168.0.15 | ||
n3 | 192.168.0.16 | ||
q | iSCSI-Target | 192.168.0.9 | QNAP4.2 |
参考先 http://blog.secaserver.com/2011/11/mount-same-partition-different-servers/
ストーレジデバイスを共有する各クライアントノード、それを管理する管理ノードはすべて最小構成で構築されているとします。
iscsiなストレージデバイスを共有するので、iSCSIイニシエータと、クラスタ関係、GFS2のパッケージをインストールします
[root@n1 ~]# yum -y install iscsi-initiator-utils ricci gfs2-utils
[root@n2 ~]# yum -y install iscsi-initiator-utils ricci gfs2-utils
[root@n3 ~]# yum -y install iscsi-initiator-utils ricci gfs2-utils
ricciを管理するluciをインストールします。
[root@gfs ~]# yum -y install luci
QNAPのiSCSI-Targetは既に構築済みで、パスワード認証なしで使える状態にしている。
各クライアントノードは、iSCSIイニシエータを使ってこのストレージデバイスを加える。
[root@n1 ~]# iscsiadm --mode=discovery --type=sendtargets --portal w.chaperone.jp --login
[root@n2 ~]# iscsiadm --mode=discovery --type=sendtargets --portal w.chaperone.jp --login
[root@n3 ~]# iscsiadm --mode=discovery --type=sendtargets --portal w.chaperone.jp --login
[root@n3 ~]# cat /proc/partitions
major minor #blocks name
8 0 8388608 sda
8 1 512000 sda1
8 2 1048576 sda2
8 3 6827008 sda3
8 16 52428800 sdb
[root@n3 ~]#
もし追加したストレージデバイスを削除するには
[root@n3 ~]# iscsiadm --mode node --logout
*もしくは target を求めて、削除する
[root@n3 ~]# iscsiadm -m node
192.168.0.9:3260,1 iqn.2004-04.com.qnap:ts-251:iscsi.share.e5d9aa
[root@n3 ~]# iscsiadm --mode node --targetname iqn.2004-04.com.qnap:ts-251:iscsi.share.e5d9aa --logout
[root@n3 ~]# cat /proc/partitions
major minor #blocks name
8 0 8388608 sda
8 1 512000 sda1
8 2 1048576 sda2
8 3 6827008 sda3
[root@n3 ~]#
とします。
これまでで、QNAPのストレージデバイスをシステムに認めさせ、/proc/partitions にも記載された。
次に、このストレージデバイスをGFS2でフォーマットします。
フォーマット操作は共有するノードのどれでも構いません。特定の1台で操作します。他のノードで再度フォーマットする必要はないです。
コマンドmake.gfs2の引数 -t は、LockTableNameを意図して、clustername:fsname として定義されます。
引数 -j は、このデバイスを利用するクライアントの数だけ指定します。ここでは3台で共有するので3としてます。
*あとでクラスタ管理ノードの設定で、この clustername は使用されます。
ここではn1.chaperone.jpで作業してます
[root@n1 ~]# mkfs.gfs2 -p lock_dlm -t chaperone:gfs -j 3 /dev/sdb
This will destroy any data on /dev/sdb.
It appears to contain: Linux GFS2 Filesystem (blocksize 4096, lockproto lock_dlm)
Are you sure you want to proceed? [y/n] y
Device: /dev/sdb
Blocksize: 4096
Device Size 50.00 GB (13107200 blocks)
Filesystem Size: 50.00 GB (13107198 blocks)
Journals: 3
Resource Groups: 200
Locking Protocol: "lock_dlm"
Lock Table: "chaperone:gfs"
UUID: dff2810f-5d4f-cbc5-5b9a-5aa96cac2e8e
[root@n1 ~]#
全クライアントノードにricciユーザのパスワードを付与して、一度マシンを再起動します。
ricciの起動だけでも構わないのだが、GFS2フォーマットさせた/dev/sdbのUUIDを全マシンで共有するために再起動します。
[root@n1 ~]# passwd ricci
[root@n1 ~]# chkconfig ricci on && reboot
[root@n2 ~]# passwd ricci
[root@n2 ~]# chkconfig ricci on && reboot
[root@n3 ~]# passwd ricci
[root@n3 ~]# chkconfig ricci on && reboot
クラスタ管理ノードで luci を稼働させます。
chkconfig luci on && /etc/init.d/luci start
Adding following auto-detected host IDs (IP addresses/domain names), corresponding to `gfs.chaperone.jp' (略
Generating a 2048 bit RSA private key
writing new private key to '/var/lib/luci/certs/host.pem'
saslauthd を起動中: [ OK ]
Start luci... [ OK ]
Point your web browser to https://gfs.chaperone.jp:8084 (or equivalent) to access luci
[root@gfs ~]#
ブラウザを立ち上げて、指定のURLに行くとLoginするためのUsernameとPasswordが聞かれます。
この値はクラスタ管理ノードの root とそのパスワードを入力します。
初回ログイン直後にWarningが表示されるが、気にせず閉じます。
そして、左縦項目に「Homebase」と「Manage Clusters」があります。この「Manage Clusters」をクリックして右側上部の「Create」をクリックします。
表れた「Create New Cluster」画面で、Cluster Nameは先ほど mkfs.gfs2 でフォーマット操作を行った際に使用した clustername を指定します。そして、クラスターに参加する全ノードを記入します。Password欄は、ricciのパスワードを記入します。もし全ノード同じパスワードなら、上部の「Use the Same Passowrd for All Nodes」を有効にします。そしてEnable Shared Storage Supportを有効にして、「Create Cluster」ボタンをクリックします。
すると処理が始まり、その途中経過が表示される。
*&size(10){なんか、ricciによって、cman,rgmanager,lvm2-cluster,sg3_utilsがインストールされる..}:
暫くすると完了して、左縦メニューの「Homebase」をクリックすると下記の様にクラスタ「chaperone」が追加された。
このクラスタ「chaperone」をクリックすると、参加しているノードと状況が見える。
各クライアントノードでストレージデバイスをマウントします。
[root@n1 ~]# ls -l /dev/disk/by-uuid/
合計 0
lrwxrwxrwx 1 root root 10 11月 3 18:15 2014 61edaf05-323c-4ea3-b5fa-ad35505f8909 -> ../../sda2
lrwxrwxrwx 1 root root 10 11月 3 18:15 2014 895f29c3-d08b-477c-b499-12be12a976be -> ../../sda1
lrwxrwxrwx 1 root root 10 11月 3 18:15 2014 b206c0eb-ac76-498c-9d24-70fc0729289a -> ../../sda3
lrwxrwxrwx 1 root root 9 11月 3 18:16 2014 dff2810f-5d4f-cbc5-5b9a-5aa96cac2e8e -> ../../sdb
[root@n1 ~]#
[root@n1 ~]# mkdir /gfs
[root@n1 ~]# echo "UUID=dff2810f-5d4f-cbc5-5b9a-5aa96cac2e8e /gfs gfs2 noatime,nodiratime 0 0" >> /etc/fstab
[root@n1 ~]# chkconfig gfs2 on && /etc/init.d/gfs2 start
Mounting GFS2 filesystem (/gfs): [ OK ]
[root@n1 ~]#
[root@n2 ~]# ls -l /dev/disk/by-uuid/ |grep sdb
lrwxrwxrwx 1 root root 9 11月 3 18:22 2014 dff2810f-5d4f-cbc5-5b9a-5aa96cac2e8e -> ../../sdb
[root@n2 ~]#
[root@n2 ~]# mkdir /gfs
[root@n2 ~]# echo "UUID=dff2810f-5d4f-cbc5-5b9a-5aa96cac2e8e /gfs gfs2 noatime,nodiratime 0 0" >> /etc/fstab
[root@n2 ~]# chkconfig gfs2 on && /etc/init.d/gfs2 start
Mounting GFS2 filesystem (/gfs): [ OK ]
[root@n2 ~]#
[root@n3 ~]# ls -l /dev/disk/by-uuid/ |grep sdb
lrwxrwxrwx 1 root root 9 11月 3 18:17 2014 dff2810f-5d4f-cbc5-5b9a-5aa96cac2e8e -> ../../sdb
[root@n3 ~]# mkdir /gfs
[root@n3 ~]# echo "UUID=dff2810f-5d4f-cbc5-5b9a-5aa96cac2e8e /gfs gfs2 noatime,nodiratime 0 0" >> /etc/fstab
[root@n3 ~]# chkconfig gfs2 on && /etc/init.d/gfs2 start
Mounting GFS2 filesystem (/gfs): [ OK ]
[root@n3 ~]#
留意 ストレージデバイス経由の/dev/sdbがすべてUUIDが同じです。
[root@n1 ~]# touch /gfs/sample
[root@n1 ~]# flock /gfs/sample watch -n 1 ls
を実行中
[root@n2 ~]# flock /gfs/sample watch -n 1 ls
は実行されない
3ノードの内、一つのLANケーブルを抜く。もしくは電源ボタン長押しで停止させると、、他のノードの/gfsは使い物にならない。
だが、
正常な手続きでshutdownが行われるなら、引き続き他のノードも問題なく利用できる。