&color(red){CentOS7にて内容編集中}; GlobalFileSystem2 どうやら[[前回>GlobalFileSystem141103]]のは間違ったようだ。fencing機構を考慮せずに作ったのが原因みたい。 なので下記の様にクラスタを管理するノードを追加して一から構築します。 &color(lightseagreen){''CentOS 7''};にて gfs2 を構築してみる。 |BGCOLOR(YELLOW):マシン名|BGCOLOR(YELLOW):役割|BGCOLOR(YELLOW):ip|BGCOLOR(YELLOW):備考| |gfs|クラスタ管理ノード|192.168.0.51|luciを使う| |n1|クラスタメンバ|192.168.0.52|| |n2|~|192.168.0.53|| |n3|~|192.168.0.54|| |w|iSCSI-Target|192.168.0.9|QNAP4.2| |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| &ref(2014y11m03d_162657910.png,nolink,noborder); 参考先 http://blog.secaserver.com/2011/11/mount-same-partition-different-servers/ ストーレジデバイスを共有する各クライアントノード、それを管理する管理ノードはすべて[[最小構成>CentOS6]]で構築されているとします。 ***クライアントノードへのパッケージインストール [#d38e9e97] iscsiなストレージデバイスを共有するので、iSCSIイニシエータと、クラスタ関係、GFS2のパッケージをインストールします #code(nonumber){{ [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 }} ***クラスタ管理ノードへのパッケージインストール [#r9c27bd6] ricciを管理するluciをインストールします。 #code(nonumber){{ [root@gfs ~]# yum -y install luci }} ***ストレージデバイスの追加 [#b76c6d1a] QNAPのiSCSI-Targetは既に構築済みで、パスワード認証なしで使える状態にしている。 各クライアントノードは、iSCSIイニシエータを使ってこのストレージデバイスを加える。 #code(nonumber){{ [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 ~]# }} もし追加したストレージデバイスを削除するには #code(nonumber){{ [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 ~]# }} とします。 ***GFS2フォーマット [#p6dd453e] これまでで、QNAPのストレージデバイスをシステムに認めさせ、/proc/partitions にも記載された。 次に、このストレージデバイスをGFS2でフォーマットします。 フォーマット操作は共有するノードのどれでも構いません。特定の1台で操作します。他のノードで再度フォーマットする必要はないです。 コマンドmake.gfs2の引数 &color(red){''-t''}; は、LockTableNameを意図して、clustername:fsname として定義されます。 引数 &color(red){''-j''}; は、このデバイスを利用するクライアントの数だけ指定します。ここでは3台で共有するので3としてます。 &color(red){*};あとでクラスタ管理ノードの設定で、この &color(magenta){''clustername''}; は使用されます。 ここではn1.chaperone.jpで作業してます #code(nonumber){{ [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ユーザにパスワードを定義 [#ybc4544e] 全クライアントノードにricciユーザのパスワードを付与して、一度マシンを再起動します。 ricciの起動だけでも構わないのだが、GFS2フォーマットさせた/dev/sdbのUUIDを全マシンで共有するために再起動します。 #code(nonumber){{ [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 [#idc8d852] クラスタ管理ノードで luci を稼働させます。 #code(nonumber){{ 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 とそのパスワードを入力します。 &ref(2014y11m03d_173457675.png,nolink); 初回ログイン直後にWarningが表示されるが、気にせず閉じます。 そして、左縦項目に「Homebase」と「Manage Clusters」があります。この「Manage Clusters」をクリックして右側上部の「Create」をクリックします。 &ref(2014y11m03d_174041407.png,nolink); 表れた「Create New Cluster」画面で、Cluster Nameは先ほど mkfs.gfs2 でフォーマット操作を行った際に使用した &color(magenta){''clustername''}; を指定します。そして、クラスターに参加する全ノードを記入します。Password欄は、ricciのパスワードを記入します。もし全ノード同じパスワードなら、上部の「Use the Same Passowrd for All Nodes」を有効にします。そして''Enable Shared Storage Support''を有効にして、「Create Cluster」ボタンをクリックします。 &ref(2014y11m03d_174316523.png,nolink); すると処理が始まり、その途中経過が表示される。 &ref(2014y11m03d_174803268.png,nolink); &color(red){*};&size(10){なんか、ricciによって、cman,rgmanager,lvm2-cluster,sg3_utilsがインストールされる..}: 暫くすると完了して、左縦メニューの「Homebase」をクリックすると下記の様にクラスタ「chaperone」が追加された。 &ref(2014y11m03d_175742713.png,nolink); このクラスタ「chaperone」をクリックすると、参加しているノードと状況が見える。 &ref(2014y11m03d_175906667.png,nolink); ***ストレージデバイスをマウント [#i84fa493] 各クライアントノードでストレージデバイスをマウントします。 -n1.chaperone.jp #code(nonumber){{ [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 ~]# }} -n2.chaperone.jp #code(nonumber){{ [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 ~]# }} -n3.chaperone.jp #code(nonumber){{ [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 ~]# }} &color(white,blue){留意}; ストレージデバイス経由の/dev/sdbがすべてUUIDが同じです。 ***テストその1 [#s941f3f6] #code(nonumber){{ [root@n1 ~]# touch /gfs/sample [root@n1 ~]# flock /gfs/sample watch -n 1 ls を実行中 [root@n2 ~]# flock /gfs/sample watch -n 1 ls は実行されない }} ***テストその2 [#m6948da1] 3ノードの内、一つのLANケーブルを抜く。もしくは電源ボタン長押しで停止させると、、他のノードの/gfsは使い物にならない。 だが、 正常な手続きでshutdownが行われるなら、引き続き他のノードも問題なく利用できる。