2008/03/31

RHCS: iSCSI, DM-MP, CLVM and GFS・その8・Congaでの設定

今までの設定を、できるだけConga (Luci & Ricci)を使って行う方法を紹介する。
Congaは、Device-Mapper Multipath (DM-MP)を理解しないことに注意。これは、GNBDを理解しないのと似ている(『Red Hat Cluster: GNBD, CLVM and GFS・その8・Congaからの設定』参照)。つまり、CongaからDM-MPを設定できないし、Congaは/etc/mapper/mpath0等のDM-MPデバイスをディスクとして認識しない。従って、CongaでDM-MPデバイスをGFS2としてフォーマットするのに先立って、論理ボリュームマネージャ(logical volume manager, LVM)で物理ボリューム(physical volume, PV)およびボリュームグループ(volume group, VG)を設定しなければならない。
実際、『その6・CLVMの設定』の『PVの作成』までを実行した状態で、Luciの設定画面から[strage]タブ→ [System List]からcDomUsのメンバ(この場合はdc1.xencluster)を選ぶと、
の様に、iSCSIで作成されたデバイス/dev/sd[ab]はディスクとして認識されるが、DM-MPデバイス/dev/mapper/mpath0やPVは認識されない。
この状態から、『その6・CLVMの設定』の『VGの作成』を実行し、再び上の画面の[Reprobe Storage]ボタンを押すか、他のノードの画面を表示させると、
の様に、VG VGcDomUsが認識される。
ここで、[VGcDomUs00] → [Volume Group Properties:]と展開していくと、次の画面が表示される。
[New Logical Volume]ボタンを押下する。
スクロールダウンする。
ここで、以下の通り入力する。
  • [Logical Volume Name]: LVGFS00
  • [Content]: GFS2 - Global FS v.2
  • [Unique GFS Name]: GFS00
  • [Mountpoint]: /mnt/gfs00
  • [Mount]: true
  • [List in /etc/fstab]: true
入力後、[Create]ボタンを押下する。
確認を求めるダイアログが表示される。[OK]ボタンを押下する。
新しい論理ボリューム(logical volume, LV)、LVGFS00が作成され、GFS2でフォーマットされ、/mnt/gfs00にマウントされている。
このとき、設定を行ったノードのコンソール画面には、以下のようなエラーが表示される。
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/setroubleshoot/analyze.py", line 370, in auto_save_callback
self.save()
File "/usr/lib/python2.4/site-packages/setroubleshoot/analyze.py", line 351, in save
self.sigs.write_xml('sigs', self.filepath)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 570, in write_xml
f.write(self.get_xml_text_doc(obj_name))
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 529, in get_xml_text_doc
doc = self.get_xml_doc(obj_name)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 524, in get_xml_doc
root = self.get_xml_nodes(doc, obj_name)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 599, in get_xml_nodes
list.addChild(item.get_xml_nodes(doc, item_name))
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 625, in get_xml_nodes
root.newChild(None, name, value)
File "/usr/lib/python2.4/site-packages/libxml2.py", line 3217, in newChild
ret = libxml2mod.xmlNewChild(self._o, ns__o, name, content)
TypeError: xmlNewChild() argument 4 must be string without null bytes or None, not str
これは、『Red Hat Cluster: GNBD, CLVM and GFS・その8・Congaからの設定』と同じ。以下の通り、設定自体は正しく行われているので、無視する。
[root@dc1 lvm]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/mapper/VGcDomUs00-LVGFS00 on /mnt/gfs00 type gfs2 (rw,hostdata=jid=0:id=65539:first=1)
[root@dc1 lvm]# cat /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
/dev/VGcDomUs00/LVGFS00 /mnt/gfs00 gfs2 defaults 0 0
[root@dc1 lvm]# 
他のノードでも同様に設定する。ただし、LVの生成とGFS2のフォーマットは終わっているので、設定するのは、マウントポイントのみ。[System List] → [dc2.xencluster] → [VGcDomUs00] → [Logical Volumes:] → [LVGFS00 3.98 GB]と選択する。
ここで、
  • [Mountpoint]: /mnt/gfs00
  • [/etc/fstab Mountpoint]: /mnt/gfs00
と入力し、[Apply]ボタンを押下する。
確認を求めるダイアログが表示される。[OK]ボタンを押下する。
このとき、設定対象ノード(上の場合はdc2.xencluster)のコンソール上には、やはり以下のようなエラーが表示される。
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/setroubleshoot/analyze.py", line 370, in auto_save_callback
self.save()
File "/usr/lib/python2.4/site-packages/setroubleshoot/analyze.py", line 351, in save
self.sigs.write_xml('sigs', self.filepath)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 570, in write_xml
f.write(self.get_xml_text_doc(obj_name))
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 529, in get_xml_text_doc
doc = self.get_xml_doc(obj_name)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 524, in get_xml_doc
root = self.get_xml_nodes(doc, obj_name)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 599, in get_xml_nodes
list.addChild(item.get_xml_nodes(doc, item_name))
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 625, in get_xml_nodes
root.newChild(None, name, value)
File "/usr/lib/python2.4/site-packages/libxml2.py", line 3217, in newChild
ret = libxml2mod.xmlNewChild(self._o, ns__o, name, content)
TypeError: xmlNewChild() argument 4 must be string without null bytes or None, not str
ただし、以下の通り設定自体は行われているので無視する。
[root@dc2 lvm]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/mapper/VGcDomUs00-LVGFS00 on /mnt/gfs00 type gfs2 (rw,hostdata=jid=1:id=65539:first=0)
[root@dc2 lvm]# cat /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
/dev/VGcDomUs00/LVGFS00 /mnt/gfs00 gfs2 defaults 0 0
[root@dc2 lvm]# 
残りのノードに対しても、同様に設定する。


その1・概要
その2・インストールとクラスタの構成
その3・iSCSIターゲットの設定
その4・iSCSIイニシエータの設定
その5・Device-Mapper Multipathの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaでの設定
その9・考察

2008/03/28

RHCS: iSCSI, DM-MP, CLVM and GFS・その7・GFS2の設定

前回『その6・CLVMの設定』で作成した論理ボリューム(logical volume, LV) /dev/VGcDomUs00/LVGFS00をGFS2でフォーマットし、マウントする。手順は、『Red Hat Cluster: GNBD, CLVM and GFS・その7・GFS2の設定』と同様。以下の通り作業する。

フォーマット
以下の作業をdc[123]の内の一台で行う(すべてのノードで実行する必要はない)。実行には若干時間がかかるかもしれない。
[root@dc1 lvm]# mkfs -t gfs2 -j 4 -p lock_dlm -t cDomUs:GFS00 /dev/VGcDomUs00/LVGFS00
This will destroy any data on /dev/VGcDomUs00/LVGFS00.

Are you sure you want to proceed? [y/n] y

Device:                    /dev/VGcDomUs00/LVGFS00
Blocksize:                 4096
Device Size                4.00 GB (1047552 blocks)
Filesystem Size:           4.00 GB (1047551 blocks)
Journals:                  4
Resource Groups:           16
Locking Protocol:          "lock_dlm"
Lock Table:                "cDomUs:GFS00"

[root@dc1 lvm]#

マウント
LVGFS00を、dc[123]それぞれでマウントする。
[root@dc1 lvm]# mkdir /mnt/gfs00
[root@dc1 lvm]# mount /dev/VGcDomUs00/LVGFS00 /mnt/gfs00
[root@dc1 lvm]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/mapper/VGcDomUs00-LVGFS00 on /mnt/gfs00 type gfs2 (rw,hostdata=jid=0:id=196611:first=1)
[root@dc1 lvm]#

[root@dc2 lvm]# mkdir /mnt/gfs00
[root@dc2 lvm]# mount /dev/VGcDomUs00/LVGFS00 /mnt/gfs00
[root@dc2 lvm]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/mapper/VGcDomUs00-LVGFS00 on /mnt/gfs00 type gfs2 (rw,hostdata=jid=1:id=196611:first=0)
[root@dc2 lvm]#

[root@dc3 lvm]# mkdir /mnt/gfs00
[root@dc3 lvm]# mount /dev/VGcDomUs00/LVGFS00 /mnt/gfs00
[root@dc3 lvm]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/mapper/VGcDomUs00-LVGFS00 on /mnt/gfs00 type gfs2 (rw,hostdata=jid=2:id=196611:first=0)
[root@dc3 lvm]#

システム起動時の設定
システム起動時からマウントされるよう、/etc/fstabに設定を追加する。各ノードdc[123]それぞれで以下を実行する。
[root@dc1 ~]# echo '/dev/VGcDomUs00/LVGFS00 /mnt/gfs00              gfs2    rw              1 2' >> /etc/fstab
[root@dc1 ~]# shutdown -r now
<<略>>
[root@dc1 ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/mapper/VGcDomUs00-LVGFS00 on /mnt/gfs00 type gfs2 (rw,hostdata=jid=0:id=196611:first=0)
[root@dc1 ~]#


[root@dc2 ~]# echo '/dev/VGcDomUs00/LVGFS00 /mnt/gfs00              gfs2    rw            1 2' >> /etc/fstab
[root@dc2 ~]# shutdown -r now
<<略>>
[root@dc2 ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/mapper/VGcDomUs00-LVGFS00 on /mnt/gfs00 type gfs2 (rw,hostdata=jid=1:id=196611:first=0)
[root@dc2 ~]#

[root@dc3 ~]# echo '/dev/VGcDomUs00/LVGFS00 /mnt/gfs00              gfs2    rw            1 2' >> /etc/fstab
[root@dc3 ~]# shutdown -r now
<<略>>
[root@dc3 ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/mapper/VGcDomUs00-LVGFS00 on /mnt/gfs00 type gfs2 (rw,hostdata=jid=2:id=196611:first=0)
[root@dc3 ~]#


その1・概要
その2・インストールとクラスタの構成
その3・iSCSIターゲットの設定
その4・iSCSIイニシエータの設定
その5・Device-Mapper Multipathの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaでの設定
その9・考察

RHCS: iSCSI, DM-MP, CLVM and GFS・その6・CLVMの設定

DM-MPによって作成されたデバイス/dev/mapper/mpath0上にクラスタ対応の論理ボリューム(logical volume, LV)を作成する。手順は、『Red Hat Cluster: GNBD, CLVM and GFS・その6・CLVMの設定』と同様だ。

『Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる』で紹介したようにConga (Luci & Ricci)を用いてクラスタを構成していれば、クラスタメンバ上ではclvmdが起動されている。
[root@dc3 ~]# chkconfig --list clvmd
clvmd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@dc3 ~]# service clvmd status
clvmd (pid 2023) is running...
active volumes: LogVol00 LogVol01
[root@dc3 ~]#
初期状態では、論理ボリュームマネージャ(logical volume manager, LVM)には、ローカルのもののみが認識されている。
[root@dc3 ~]# pvs
PV         VG         Fmt  Attr PSize PFree
/dev/xvda2 VolGroup00 lvm2 a-   3.88G    0
[root@dc3 ~]# vgs
VG         #PV #LV #SN Attr   VSize VFree
VolGroup00   1   2   0 wz--n- 3.88G    0
[root@dc3 ~]# lvs
LV       VG         Attr   LSize   Origin Snap%  Move Log Copy%
LogVol00 VolGroup00 -wi-ao   3.34G
LogVol01 VolGroup00 -wi-ao 544.00M
[root@dc3 ~]#
以下の通り作業する。

設定ファイルの修正
初期状態では、LVMは、すべてのデバイスを走査する。この状態では、DM-MPによって作成されたデバイス/dev/mapper/mpath0とその背後のデバイス/dev/sd[ab]が走査されるため、同一物理ボリューム(physical volume, PV)、同一ボリュームグループ(volume group, VG)、同一LVが複数回検出されてしまい、都合が悪い。
これを回避するため、/dev/sd[ab]を走査しない様設定する。
以下の作業をdc[123]それぞれで実施する。
[root@dc3 ~]# cd /etc/lvm
[root@dc3 lvm]# cp -p lvm.conf lvm.conf.orig
[root@dc3 lvm]# sed 's/^\( *filter =\).*$/\1 [ "r\/sd.*\/","a\/.*\/" ]/' < lvm.conf.orig > lvm.conf
[root@dc3 lvm]# diff lvm.conf.orig lvm.conf
52c52
<     filter = [ "a/.*/" ]
---
>     filter = [ "r/sd.*/","a/.*/" ]
[root@dc3 lvm]# 
この状態では、まだ新しいPV、VGおよびLVは設定されていないので、強制的にLVMに走査させても、変化はない。
[root@dc3 lvm]# pvscan
PV /dev/xvda2   VG VolGroup00   lvm2 [3.88 GB / 0    free]
Total: 1 [3.88 GB] / in use: 1 [3.88 GB] / in no VG: 0 [0   ]
[root@dc3 lvm]# vgscan
Reading all physical volumes.  This may take a while...
Found volume group "VolGroup00" using metadata type lvm2
[root@dc3 lvm]# lvscan
ACTIVE            '/dev/VolGroup00/LogVol00' [3.34 GB] inherit
ACTIVE            '/dev/VolGroup00/LogVol01' [544.00 MB] inherit
[root@dc3 lvm]#

PVの作成
DM-MPによって生成されたデバイス/dev/mapper/mpath0をPVとして設定する。以下の作業をdc[123]の内の一台で行う(すべてのノードで実行する必要はない)
[root@dc2 lvm]# pvcreate /dev/mapper/mpath0
Physical volume "/dev/mapper/mpath0" successfully created
[root@dc2 lvm]# pvdisplay /dev/mapper/mpath0
--- NEW Physical volume ---
PV Name               /dev/dm-2
VG Name
PV Size               4.00 GB
Allocatable           NO
PE Size (KByte)       0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               mVdkgs-gUtS-Rz1f-SZhm-NoIr-6kkJ-hQwle1

[root@dc2 lvm]#
他のノードでpvscanを実行すると、このPVが認識される。
[root@dc3 lvm]# pvscan
PV /dev/xvda2   VG VolGroup00   lvm2 [3.88 GB / 0    free]
PV /dev/dm-2                    lvm2 [4.00 GB]
Total: 2 [7.88 GB] / in use: 1 [3.88 GB] / in no VG: 1 [4.00 GB]
[root@dc3 lvm]#

[root@dc1 lvm]# pvscan
PV /dev/xvda2   VG VolGroup00   lvm2 [3.88 GB / 0    free]
PV /dev/dm-2                    lvm2 [4.00 GB]
Total: 2 [7.88 GB] / in use: 1 [3.88 GB] / in no VG: 1 [4.00 GB]
[root@dc1 lvm]#

VGの作成
作成したPVを利用して、新しいVG・VGcDomUs00を作成する。作成時にクラスタ対応の指定(--clustered yオプション)が必要。以下の作業をdc[123]の内の一台で行う(すべてのノードで実行する必要はない)
[root@dc1 lvm]# vgcreate --clustered y VGcDomUs00 /dev/mapper/mpath0
Volume group "VGcDomUs00" successfully created
[root@dc1 lvm]# vgdisplay VGcDomUs00
--- Volume group ---
VG Name               VGcDomUs00
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  1
VG Access             read/write
VG Status             resizable
Clustered             yes
Shared                no
MAX LV                0
Cur LV                0
Open LV               0
Max PV                0
Cur PV                1
Act PV                1
VG Size               4.00 GB
PE Size               4.00 MB
Total PE              1023
Alloc PE / Size       0 / 0
Free  PE / Size       1023 / 4.00 GB
VG UUID               njS90y-VYyX-KUEc-NoH5-sCrn-anXv-4Lgudt

[root@dc1 lvm]#
このVGをclvmdに認識させるため、dc[123]それぞれで、サービスclvmdを再起動する(システムごと再起動してもよい)。
[root@dc3 lvm]# service clvmd restart
Deactivating VG VGcDomUs00:   0 logical volume(s) in volume group "VGcDomUs00" now active
[  OK  ]
Stopping clvm:[  OK  ]
Starting clvmd: [  OK  ]
Activating VGs:   2 logical volume(s) in volume group "VolGroup00" now active
0 logical volume(s) in volume group "VGcDomUs00" now active
[  OK  ]
[root@dc3 lvm]#

LVの作成
VGcDomUs00上にLV・LVGFS00を作成する。以下の作業をdc[123]の内の一台で行う(すべてのノードで実行する必要はない)
[root@dc2 lvm]# lvcreate --extents=1023 --name=LVGFS00 VGcDomUs00
Logical volume "LVGFS00" created
[root@dc2 lvm]# lvs
LV       VG         Attr   LSize   Origin Snap%  Move Log Copy%
LVGFS00  VGcDomUs00 -wi-a-   4.00G
LogVol00 VolGroup00 -wi-ao   3.34G
LogVol01 VolGroup00 -wi-ao 544.00M
[root@dc2 lvm]# lvdisplay /dev/VGcDomUs00/LVGFS00
--- Logical volume ---
LV Name                /dev/VGcDomUs00/LVGFS00
VG Name                VGcDomUs00
LV UUID                6M8L4n-x03W-ydk3-iKFF-79U0-Dt8y-rI5SVL
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                4.00 GB
Current LE             1023
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:3

[root@dc2 lvm]#
他のノードでもこのLVが認識されていることを確認する。
[root@dc3 lvm]# lvs
LV       VG         Attr   LSize   Origin Snap%  Move Log Copy%
LVGFS00  VGcDomUs00 -wi-a-   4.00G
LogVol00 VolGroup00 -wi-ao   3.34G
LogVol01 VolGroup00 -wi-ao 544.00M
[root@dc3 lvm]#

[root@dc1 lvm]# lvs
LV       VG         Attr   LSize   Origin Snap%  Move Log Copy%
LVGFS00  VGcDomUs00 -wi-a-   4.00G
LogVol00 VolGroup00 -wi-ao   3.34G
LogVol01 VolGroup00 -wi-ao 544.00M
[root@dc1 lvm]# 


その1・概要
その2・インストールとクラスタの構成
その3・iSCSIターゲットの設定
その4・iSCSIイニシエータの設定
その5・Device-Mapper Multipathの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaでの設定
その9・考察

RHCS: iSCSI, DM-MP, CLVM and GFS・その5・Device-Mapper Multipathの設定

前回『その4・iSCSIイニシエータの設定』で認識されたデバイスsdaおよびsdbは、異なる経路で共有されている一つのストレージだ。つまり、sdaへのアクセスとsdbへのアクセスは等価だ。
だたし、経路(ネットワーク)が違うため、経路が信頼性の急所(single point of failure)とならない。つまり、どちらかの経路が生きていれば、このストレージへのアクセスが確保される。
以上のことを利用して、障害経路を使用せず、正常経路のみを自動的に選択する仕組みがDevice-Mapper Multipath(DM-MP)だ。

インストール直後は、DM-MPは起動されていない。
[root@dc1 ~]# chkconfig --list multipathd
multipathd      0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@dc1 ~]# service multipathd status
multipathd is stopped
[root@dc1 ~]# ls -l /dev/mapper/mpath0
ls: /dev/mapper/mpath0: No such file or directory
[root@dc1 ~]#
dc[123]それぞれについて以下を実行する。

設定ファイルの修正
DM-MPの設定ファイルは、/etc/multipath.conf。インストール直後の状態では、すべてのデバイスを無視するよう設定されている。これを修正する。
[root@dc1 ~]# cd /etc
[root@dc1 etc]# cp -p multipath.conf multipath.conf.orig
[root@dc1 etc]# sed 's/^\( *devnode\)/#\1/' < multipath.conf.orig > multipath.conf
[root@dc1 etc]# diff multipath.conf.orig multipath.conf
11c11
<         devnode "*"
---
> #        devnode "*"
[root@dc1 etc]#

サービスmultipathdの起動
DM-MPのサービス、multipathdを起動すると、デバイスが走査され、自動的に/dev/sd[ab]がグループ化され、デバイス/dev/mapper/mpath0が作成される。
[root@dc1 etc]# service multipathd start
Starting multipathd daemon: [  OK  ]
[root@dc1 etc]# multipath -l
mpath0 (16465616462656166313a3100000000000000000000000000) dm-2 IET,VIRTUAL-DISK
[size=4.0G][features=0][hwhandler=0]
\_ round-robin 0 [prio=0][active]
\_ 0:0:0:1 sda 8:0   [active][undef]
\_ round-robin 0 [prio=0][enabled]
\_ 1:0:0:1 sdb 8:16  [active][undef]
[root@dc1 etc]# ls -l /dev/mapper/mpath0
brw-rw---- 1 root disk 253, 2 Mar 28 21:27 /dev/mapper/mpath0
[root@dc1 etc]#

サービス自動起動の設定と確認
以下の通り設定し、再起動後も正しく動作することを確認する。
[root@dc1 etc]# chkconfig multipathd on
[root@dc1 etc]# shutdown -r now
<<略>>
[root@dc1 ~]# multipath -l
mpath0 (16465616462656166313a3100000000000000000000000000) dm-2 IET,VIRTUAL-DISK
[size=4.0G][features=0][hwhandler=0]
\_ round-robin 0 [prio=0][active]
\_ 1:0:0:1 sdb 8:16  [active][undef]
\_ round-robin 0 [prio=0][enabled]
\_ 0:0:0:1 sda 8:0   [active][undef]
[root@dc1 ~]# ls -l /dev/mapper/mpath0
brw-rw---- 1 root disk 253, 2 Mar 28 21:30 /dev/mapper/mpath0
[root@dc1 ~]#


その1・概要
その2・インストールとクラスタの構成
その3・iSCSIターゲットの設定
その4・iSCSIイニシエータの設定
その5・Device-Mapper Multipathの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaでの設定
その9・考察

RHCS: iSCSI, DM-MP, CLVM and GFS・その4・iSCSIイニシエータの設定

Xen DomU dc[123]をiSCSIイニシエータ(initiator/クライアント)として構成し、『その3・iSCSIターゲットの設定』で構成したiSCSIターゲット(target/サーバ)fs1上のストレージにアクセスできるようにする。以下の点に注意する必要がある。
  1. 各イニシエータに対して、他と重複しないイニシエータ名を設定する(/etc/iscsi/initiatorname.iscsi)。
  2. 標準では、サービスiscsiおよびiscsidがシステム停止時に正常に停止されないが、これを正常に停止するよう設定する。
ターゲット側で使用するscsi-target-utilsで提供されるサービスtgtdは、同一パス・同一イニシエータ名でのセッションでの多重接続を拒否する。従って、イニシエータ側では、ユニークなイニシエータ名を使用する必要がある。
また、tgtdは、イニシエータが正常なログアウト処理を行わずに停止した場合、そのイニシエータに対するセッションを保持し続ける。このイニシエータが再起動され、ターゲットにログインしようとすると、ターゲット側には同一パス・同一イニシエータ名のセッションが残っているため、ターゲットはこのログインを拒否する。このため、このイニシエータはストレージにアクセスできなくなってしまう。これを避けるため、2.の対応が必要となる。

以下の作業をdc[123]それぞれで実行する。

イニシエータ名の設定
イニシエータ名は、/etc/iscsi/initiatorname.iscsiに設定する。
[root@dc3 ~]# cd /etc/iscsi
[root@dc3 iscsi]# cp -p initiatorname.iscsi initiatorname.iscsi.orig
[root@dc3 iscsi]# echo "InitiatorName=iqn.2008-02.xencluster:client.$HOSTNAME" > initiatorname.iscsi
[root@dc3 iscsi]# cat initiatorname.iscsi
InitiatorName=iqn.2008-02.xencluster:client.dc3.xencluster
[root@dc3 iscsi]#

ユーザ名・パスワードの設定
デーモンiscsidの基本設定ファイルは、/etc/iscsi/iscsid.conf。ここでは、
  • 認証手法: CHAP
  • ユーザ名: ken-estu-tech
  • パスワード: KtrK0Ye1dwV
を設定する。これは、『その3・iSCSIターゲットの設定』で設定したものと同じでなければならない。
[root@dc3 iscsi]# cp -p iscsid.conf iscsid.conf.orig
[root@dc3 iscsi]# sed 's/^#\(node\.session\.auth\.authmethod =\).*/\1 CHAP/
> s/^#\(node\.session\.auth\.username =\).*/\1 ken-estu-tech/
> s/^#\(node\.session\.auth\.password =\).*/\1 KtrK0Ye1dwV/' < iscsid.conf.orig > iscsid.conf
[root@dc3 iscsi]# diff iscsid.conf.orig iscsid.conf
32c32
< #node.session.auth.authmethod = CHAP
---
> node.session.auth.authmethod = CHAP
36,37c36,37
< #node.session.auth.username = username
< #node.session.auth.password = password
---
> node.session.auth.username = ken-estu-tech
> node.session.auth.password = KtrK0Ye1dwV
[root@dc3 iscsi]#

接続設定と確認
接続設定は、/var/lib/iscsi以下に格納されるが、普通はここを直接編集しない。代わりに、iscsiadmコマンドを使う。このコマンドは、実際に接続を行いつつ、対応する設定を/var/lib/iscsiに書き込む。
その1・概要』で説明した通り、イニシエータからターゲットへは、
  • fs1.san01.xencluster: 192.168.56.191
  • fs1.san02.xencluster: 192.168.57.191
の二つのパスが用意されているので、それぞれについて接続設定を行う。
[root@dc3 iscsi]# iscsiadm --mode=discovery --type=sendtargets --portal=fs1.san01.xencluster
192.168.56.191:3260,1 iqn.2008-02.xencluster:storage.fs1.iSCSI00
[root@dc3 iscsi]# iscsiadm --mode=discovery --type=sendtargets --portal=fs1.san02.xencluster
192.168.57.191:3260,1 iqn.2008-02.xencluster:storage.fs1.iSCSI00
[root@dc3 iscsi]# iscsiadm --mode=node --login
Login session [iface: default, target: iqn.2008-02.xencluster:storage.fs1.iSCSI00, portal: 192.168.57.191,3260]
Vendor: IET       Model: Controler         Rev: 0001
Type:   RAID                               ANSI SCSI revision: 05
Vendor: IET       Model: VIRTUAL-DISK      Rev: 0001
Type:   Direct-Access                      ANSI SCSI revision: 05
Login session [iface: default, target: iqn.2008-02.xencluster:storage.fs1.iSCSI00, portal: 192.168.56.191,3260]
scsi 0:0:0:0: Attached scsi generic sg0 type 12
scsi 0:0:0:1: Attached scsi generic sg1 type 0
SCSI device sda: 8388608 512-byte hdwr sectors (4295 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
SCSI device sda: 8388608 512-byte hdwr sectors (4295 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
sd 0:0:0:1: Attached scsi disk sda
Vendor: IET       Model: Controler         Rev: 0001
Type:   RAID                               ANSI SCSI revision: 05
scsi 1:0:0:0: Attached scsi generic sg2 type 12
Vendor: IET       Model: VIRTUAL-DISK      Rev: 0001
Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sdb: 8388608 512-byte hdwr sectors (4295 MB)
sdb: Write Protect is off
SCSI device sdb: drive cache: write back
SCSI device sdb: 8388608 512-byte hdwr sectors (4295 MB)
sdb: Write Protect is off
SCSI device sdb: drive cache: write back
sd 1:0:0:1: Attached scsi disk sdb
sd 1:0:0:1: Attached scsi generic sg3 type 0
[root@dc3 iscsi]# 
正常に接続できれば、デバイスsdaおよびsdbを確認できる。
[root@dc3 iscsi]# ls -l /dev/sd*
brw-r----- 1 root disk 8,  0 Mar 27 21:38 /dev/sda
brw-r----- 1 root disk 8, 16 Mar 27 21:38 /dev/sdb
[root@dc3 iscsi]#

起動スクリプトの修正
サービスiscsiおよびiscsidの起動スクリプト(initscript)/etc/init.d/{iscsi,iscsid}を最初に述べた通り修正する。これらのスクリプト中、再起動・停止(RUNLEVEL 6および0)のときに以降の処理を行わない部分があるので、これをコメントアウトする。
[root@dc3 iscsi]# cd /etc/init.d
[root@dc3 init.d]# cp -p iscsi iscsi.orig
[root@dc3 init.d]# vi iscsi
<<略>>
[root@dc3 init.d]# diff iscsi.orig iscsi
38,41c38,41
<       if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
<               success
<               return
<       fi
---
>       #if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
>       #       success
>       #       return
>       #fi
[root@dc3 init.d]# cp -p iscsid iscsid.orig
[root@dc3 init.d]# vi iscsid
<<略>>
[root@dc3 init.d]# diff iscsid.orig iscsid
48,51c48,51
<         if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
<                 success
<                 return
<         fi
---
>         #if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
>         #        success
>         #        return
>         #fi
[root@dc3 init.d]#

確認
再起動後、正常に接続が行われることを確認する。
[root@dc3 init.d]# shutdown -r now
<<略>>
[root@dc3 ~]# iscsiadm --mode=node -l
Login session [iface: default, target: iqn.2008-02.xencluster:storage.fs1.iSCSI00, portal: 192.168.57.191,3260]
Login session [iface: default, target: iqn.2008-02.xencluster:storage.fs1.iSCSI00, portal: 192.168.56.191,3260]
[root@dc3 ~]# ls -l /dev/sd*
brw-r----- 1 root disk 8,  0 Mar 27 21:42 /dev/sda
brw-r----- 1 root disk 8, 16 Mar 27 21:42 /dev/sdb
[root@dc3 ~]#


その1・概要
その2・インストールとクラスタの構成
その3・iSCSIターゲットの設定
その4・iSCSIイニシエータの設定
その5・Device-Mapper Multipathの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaでの設定
その9・考察

2008/03/26

RHCS: iSCSI, DM-MP, CLVM and GFS・その3・iSCSIターゲットの設定

Xen Dom0 fs1iSCSIターゲットとして設定する。『その2・インストール』でも述べたとおり、CentOSでは、RPMパッケージscsi-target-utilsを利用することで、iSCSIターゲットとして動作させることができる。
iSCSIターゲットとして動作させる場合には、サービスtgtdを起動しておく必要がある。システム起動時にtgtdが起動されるよう設定し、システムを再起動する。以下の通り作業する。
[root@fs1 ~]# chkconfig --list tgtd
tgtd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@fs1 ~]# chkconfig tgtd on
[root@fs1 ~]# chkconfig --list tgtd
tgtd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@fs1 ~]# shutdown -r now

<<略>>

[root@fs1 ~]# service tgtd status
tgtd (pid 7337 7336) is running...
[root@fs1 ~]# 
サービスtdtdの設定は、tdtadmコマンドで行う。しかし、設定を保存したり、保存した設定をサービス起動時に読込む、という機能は、scsi-target-utilsにはない。なので、一連のtdtadmコマンドをシェルスクリプトとして保存しておき、システム起動後に手動で実行する。
まずは、そのシェルスクリプトstart-targets.shを準備する。
[root@fs1 ~]# cat > start-targets.sh
tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2008-02.xencluster:storage.fs1.iSCSI00
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/VolGroupXX/LogVoliSCSI00
tgtadm --lld iscsi --op new --mode account --user ken-estu-tech --password KtrK0Ye1dwV
tgtadm --lld iscsi --op bind --mode account --tid 1 --user ken-estu-tech
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
[root@fs1 ~]# chmod a+x start-targets.sh
[root@fs1 ~]# ./start-targets.sh
[root@fs1 ~]# 
このシェルスクリプトは、tdtdを以下の通り設定する。
  • ターゲットID(tid) 1、ターゲット名 iqn.2008-02.xencluster:storage.fs1.iSCSI00のiSCSIターゲットを作成する。
  • ターゲットID 1の論理ユニット番号(LUN) 1の論理ユニットのバッキングストア(backing store)は、/dev/VolGroupXX/LogVoliSCSI00とする。
  • アカウントken-estu-techを作成、パスワードを設定する
  • ターゲットID 1に、アカウントken-estu-techを関連付ける。
  • ターゲットID 1は、どのイニシエータからもアクセス可能とする。
このスクリプトを実行し、状態を確認する。
[root@fs1 ~]# tgtadm --mode=target --op=show
Target 1: iqn.2008-02.xencluster:storage.fs1.iSCSI00
System information:
Driver: iscsi
Status: running
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: deadbeaf1:0
SCSI SN: beaf10
Size: 0
Backing store: No backing store
LUN: 1
Type: disk
SCSI ID: deadbeaf1:1
SCSI SN: beaf11
Size: 4G
Backing store: /dev/VolGroupXX/LogVoliSCSI00
Account information:
ken-estu-tech
ACL information:
ALL
[root@fs1 ~]#


その1・概要
その2・インストールとクラスタの構成
その3・iSCSIターゲットの設定
その4・iSCSIイニシエータの設定
その5・Device-Mapper Multipathの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaでの設定
その9・考察

2008/03/25

RHCS: iSCSI, DM-MP, CLVM and GFS・その2・インストールとクラスタの構成

今回の環境(『その1・概要』参照)でのXen Dom0かつiSCSIターゲット(target/サーバ)fs1およびXen DomUかつiSCSIイニシエータ(initiator/クライアント)dc[123]のインストールし、クラスタを構成する。ここでは、Kickstartファイルを掲載する。詳しい手順は、『Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる』を参照。

fs1のKickstartファイル
Xen DomU fs1は、iSCSIのターゲットとして動作する必要がある。CentOS/RHEL 5.1では、iSCSIターゲット機能は、RPMパッケージscsi-target-utilsでサポートされる。
logging --host=192.168.55.192

text
install
url --url http://repository.xencluster/centos/5/os/i386
lang en_US.UTF-8
keyboard jp106
monitor --monitor="LCD Panel 1024x768"
xconfig --startxonboot --driver ati --resolution 1024x768 --depth 24
network --device eth0 --bootproto static --ip 192.168.55.191 --netmask 255.255.255.0 --gateway 192.168.55.195 --nameserver 192.168.55.193,192.168.55.194 --hostname fs1.xencluster
network --device eth1 --onboot yes --bootproto static --hostname fs1.xencluster
rootpw --iscrypted $1$zthPniQJ$u8VAa0oCtLcKrpfk/WIjs0
user --name USERNAME --homedir /home/USERNAME --iscrypted --password=$1$DCVowOrU$N86i3KrFg2yftOqtXMB3w/ --shell=/bin/bash --groups=USERNAME,wheel
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --permissive
timezone --utc Asia/Tokyo
bootloader --location=mbr --driveorder=sda --append="xencons=tty"

clearpart --all --drives=sda
part /boot --fstype ext3 --size=100 --ondisk=sda
part pv.6 --size=0 --grow --ondisk=sda
volgroup VolGroupXX --pesize=32768 pv.6
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroupXX --size=1984
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroupXX --size=10240

repo --name=base --baseurl=http://repository.xencluster/centos/5/os/i386/
repo --name=updates --baseurl=http://repository.xencluster/centos/5/updates/i386/
repo --name=addons --baseurl=http://repository.xencluster/centos/5/addons/i386/
repo --name=extras --baseurl=http://repository.xencluster/centos/5/extras/i386/

services --enabled=oddjobd,ntpd --disabled=apmd,avahi-daemon,cpuspeed,cups,nfslock,pcscd,smartd,snmpd,yum-updatesd

reboot

%packages
@admin-tools
@base
@base-x
@cluster-storage
@clustering
@core
@dns-server
@editors
@emacs
@ftp-server
@gnome-desktop
@graphical-internet
@japanese-support
@legacy-network-server
@mail-server
@network-server
@ruby
@server-cfg
@system-tools
@text-internet
@virtualization
@web-server
lynx
tftp
-kernel
kernel-xen
-kmod-gfs
kmod-gfs-xen
-kmod-gfs
kmod-gnbd-xen
-NetworkManager
-bluez-utils
device-mapper-multipath
-irda-utils
-pcmciautils
net-snmp-utils
net-snmp-libs
net-snmp
OpenIPMI
OpenIPMI-libs
openhpi
-squid
scsi-target-utils
iscsi-initiator-utils
-apmd


%post --log=/mnt/sysimage/root/anaconda-post.log --erroronfail
/bin/cp /tmp/ks-script-* /root

### network
/bin/cat <<EOL >> /etc/sysconfig/network
NOZEROCONF=yes
VLAN=yes
VLAN_NAME_TYPE=DEV_PLUS_VID
EOL

/bin/cat <<EOL > /etc/sysconfig/network-scripts/ifcfg-eth1.4000
DEVICE=eth1.4000
BOOTPROTO=none
ONBOOT=yes
EOL
/sbin/restorecon /etc/sysconfig/network-scripts/ifcfg-eth1.4000

/bin/cat <<EOL > /etc/sysconfig/network-scripts/ifcfg-eth1.4001
DEVICE=eth1.4001
BOOTPROTO=static
DHCPCLASS=
IPADDR=192.168.56.191
NETMASK=255.255.255.0
ONBOOT=yes
EOL
/sbin/restorecon /etc/sysconfig/network-scripts/ifcfg-eth1.4001

/bin/cat <<EOL > /etc/sysconfig/network-scripts/ifcfg-eth1.4002
DEVICE=eth1.4002
BOOTPROTO=static
DHCPCLASS=
IPADDR=192.168.57.191
NETMASK=255.255.255.0
ONBOOT=yes
EOL
/sbin/restorecon /etc/sysconfig/network-scripts/ifcfg-eth1.4002

/bin/cat <<EOL > /etc/sysconfig/network-scripts/ifcfg-eth1.1000
DEVICE=eth1.1000
BOOTPROTO=none
ONBOOT=yes
EOL
/sbin/restorecon /etc/sysconfig/network-scripts/ifcfg-eth1.1000

### logrotate
/bin/cat > /etc/logrotate.d/00local.conf <<EOL
rotate 20
compress
start 100
EOL
/sbin/restorecon /etc/logrotate.d/00local.conf

### local yum repository
/bin/cp -p /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.dist
/bin/sed 's/mirrorlist=/#mirrorlist=/
s/#baseurl=/baseurl=/
s/mirror.centos.org/repository.xencluster/' < /etc/yum.repos.d/CentOS-Base.repo.dist > /etc/yum.repos.d/CentOS-Base.repo

yum -y remove kernel

### sshd
/usr/bin/patch /etc/ssh/sshd_config <<EOL
39a40
> PermitRootLogin no
60c61
< PasswordAuthentication yes
---
> PasswordAuthentication no
EOL
/sbin/restorecon /etc/ssh/sshd_config

##### for User USERNAME
/bin/mkdir ~USERNAME/.ssh
/bin/chmod 700 ~USERNAME/.ssh
/bin/cat > ~USERNAME/.ssh/authorized_keys2 <<EOL
ssh-dss AAAA<<略>>
EOL
/bin/chmod 644 ~USERNAME/.ssh/authorized_keys2
/bin/chown -R USERNAME.USERNAME ~USERNAME/.ssh

### DELL OpenManage
/usr/bin/wget -q -O - http://linux.dell.com/repo/hardware/bootstrap.cgi | bash
/usr/bin/wget -q -O - http://linux.dell.com/repo/software/bootstrap.cgi | bash
/usr/bin/wget -q -O - http://linux.dell.com/repo/firmware/bootstrap.cgi | bash
/usr/bin/yum install -y srvadmin-all
/usr/bin/yum install -y $(/usr/sbin/inventory_firmware -b)
/usr/bin/update_firmware

### Mail
##### /etc/mail/sendmail.cf
/usr/bin/patch /etc/mail/sendmail.mc <<EOL
26c26
< dnl define(\`SMART_HOST', \`smtp.your.provider')dnl
---
> define(\`SMART_HOST', \`fs2.xencluster')dnl
EOL
(cd /etc/mail; /usr/bin/make sendmail.cf)
/sbin/restorecon /etc/mail/sendmail.cf

##### /etc/aliases
/usr/bin/patch /etc/aliases <<EOL
96c96
< #root:  marc
---
> root:  root@xencluster
EOL
/usr/bin/newaliases
/sbin/restorecon /etc/aliases

### SNMP
/bin/cat > /etc/snmp/snmpd.conf <<EOL
com2sec localhost localhost           COMMUNITY_STRING
com2sec localnet  192.168.55.0/24    COMMUNITY_STRING

group   gOpLocalhost   v1            localhost
group   gOpLocalhost   v2c           localhost
group   gOpLocalnet    v1            localnet
group   gOpLocalnet    v2c           localnet

view    all           included   .1
view    vDell         included   .1.3.6.1.4.1.674.10892.1
view    systemview    included   REDHAT-CLUSTER-MIB:RedHatCluster

access  gOpLocalhost   ""      any       noauth    exact  all    vDell   all
access  gOpLocalnet    ""      any       noauth    exact  all    none    all

syslocation Unknown
syscontact root@xencluster

disk /     100000

load 10

# for DELL
smuxpeer .1.3.6.1.4.1.674.10892.1

# for cluster
dlmod RedHatCluster     /usr/lib/cluster-snmp/libClusterMonitorSnmp.so
EOL
/sbin/restorecon /etc/snmp/snmpd.conf

/bin/cat > /etc/snmp/snmp.conf <<EOL
mibdirs +/opt/dell/srvadmin/omsa/mibs:/opt/dell/srvadmin/rac5/mibs:/opt/dell/srvadmin/rac3/mibs:/opt/dell/srvadmin/sm/mibs:/opt/dell/srvadmin/rac4/mibs
mibs +MIB-Dell-10892:DCS3FRU-MIB:DCS3RMT-MIB:DCS3RMT-MIB:StorageManagement-MIB:DCS3RMT-MIB:REDHAT-MIB:REDHAT-CLUSTER-MIB
EOL
/sbin/restorecon /etc/snmp/snmp.conf

##### iptables
/bin/cat > /etc/sysconfig/iptables <<EOL
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.55.0/24 -i eth0 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.56.0/24 -i eth1.4001 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.57.0/24 -i eth1.4002 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOL

### For Xen
/usr/bin/base64 -di <<EOL | /bin/zcat > /etc/xen/scripts/network-vlan-bridge
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
f9k91baOyaixMWFoeDSA4yqMvH8D4vHg6zogAAA=
EOL
/bin/chmod 755 /etc/xen/scripts/network-vlan-bridge
/sbin/restorecon /etc/xen/scripts/network-vlan-bridge

/bin/cat <<EOL > /etc/xen/scripts/network-vlan-bridge-wrapper
#!/bin/sh
BRIDGE_SCRIPT=/etc/xen/scripts/network-vlan-bridge
\$BRIDGE_SCRIPT "\$@" vifnum=0 netdev=eth1.1000 bridge=xenbr1000
\$BRIDGE_SCRIPT "\$@" vifnum=1 netdev=eth1.4000 bridge=xenbr4000
\$BRIDGE_SCRIPT "\$@" vifnum=2 netdev=eth1.4001 bridge=xenbr4001
\$BRIDGE_SCRIPT "\$@" vifnum=3 netdev=eth1.4002 bridge=xenbr4002
EOL
/bin/chmod 755 /etc/xen/scripts/network-vlan-bridge-wrapper
/sbin/restorecon /etc/xen/scripts/network-vlan-bridge-wrapper

/bin/cp -p /etc/xen/xend-config.sxp /etc/xen/xend-config.sxp.dist
/bin/sed 's/^(network-script network-bridge)/(network-script network-vlan-bridge-wrapper)/' < /etc/xen/xend-config.sxp.dist > /etc/xen/xend-config.sxp

/bin/cat <<EOL > /etc/modprobe.d/xen-vlan
options netloop nloopbacks=32
EOL
/sbin/restorecon /etc/modprobe.d/xen-vlan

### For Cluster
##### /etc/cluster/fence_xvm.key
/usr/bin/base64 -di > /etc/cluster/fence_xvm.key <<EOL
B0K3fFCQVQZdPydoMs29eSmd4vKwEbNC+G58HjSeSGzK5x0+uS8VB8B+/gnHVKLt3sqtzZeEpsKs
<<略>>
gDfGZSWpdWxwjz//h5x/zP2JIv6PgZt++qoSDd/1NxP5zdy0wO6/wHLNghjKDEwjtP/7Lt79ntqB
EOL
/bin/chmod 600 /etc/cluster/fence_xvm.key
/sbin/restorecon /etc/cluster/fence_xvm.key

### CMAN init script
/usr/bin/base64 -di <<EOL | /usr/bin/patch /etc/init.d/cman
MTU2YzE1Ngo8ICAgICBlZ3JlcCAiXltbOmJsYW5rOl1dKlwoW1s6Ymxhbms6XV0qbmV0d29yay1z
Y3JpcHRbWzpibGFuazpdXStuZXR3b3JrLWJyaWRnZShbWzpibGFuazpdXSpcKXxbWzpibGFuazpd
XSspIiAvZXRjL3hlbi94ZW5kLWNvbmZpZy5zeHAgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbAotLS0K
PiAgICAgZWdyZXAgIl5bWzpibGFuazpdXSpcKFtbOmJsYW5rOl1dKm5ldHdvcmstc2NyaXB0W1s6
Ymxhbms6XV0rbmV0d29yay0ofHZsYW4tKWJyaWRnZSh8LXdyYXBwZXIpKFtbOmJsYW5rOl1dKlwp
fFtbOmJsYW5rOl1dKykiIC9ldGMveGVuL3hlbmQtY29uZmlnLnN4cCA+L2Rldi9udWxsIDI+L2Rl
di9udWxsCjE2NSwxNjZjMTY1LDE2Nwo8ICAgICBpZiBbICEgLXggL2V0Yy94ZW4vc2NyaXB0cy9u
ZXR3b3JrLWJyaWRnZSBdOyB0aGVuCjwgICAgICAgICBpZiBbIC1mIC9ldGMveGVuL3NjcmlwdHMv
bmV0d29yay1icmlkZ2UgXTsgdGhlbgotLS0KPiAgICAgeGVuX2JyaWRnZV9zY3JpcHQ9YGVncmVw
ICJeW1s6Ymxhbms6XV0qXChbWzpibGFuazpdXSpuZXR3b3JrLXNjcmlwdFtbOmJsYW5rOl1dK25l
dHdvcmstKHx2bGFuLSlicmlkZ2UofC13cmFwcGVyKShbWzpibGFuazpdXSpcKXxbWzpibGFuazpd
XSspIiAvZXRjL3hlbi94ZW5kLWNvbmZpZy5zeHAgfCBzZWQgJ3MvXltbOmJsYW5rOl1dKihbWzpi
bGFuazpdXSpuZXR3b3JrLXNjcmlwdFtbOmJsYW5rOl1dXCtcfFtbOmJsYW5rOl1dKilbWzpibGFu
azpdXSovL2cnYAo+ICAgICBpZiBbICEgLXggL2V0Yy94ZW4vc2NyaXB0cy8keGVuX2JyaWRnZV9z
Y3JpcHQgXTsgdGhlbgo+ICAgICAgICAgaWYgWyAtZiAvZXRjL3hlbi9zY3JpcHRzLyR4ZW5fYnJp
ZGdlX3NjcmlwdCBdOyB0aGVuCjE3NmMxNzcKPCAgICAgZXJybXNnPSQoL2V0Yy94ZW4vc2NyaXB0
cy9uZXR3b3JrLWJyaWRnZSBzdGFydCAyPiYxKSB8fCByZXR1cm4gMQotLS0KPiAgICAgZXJybXNn
PSQoL2V0Yy94ZW4vc2NyaXB0cy8keGVuX2JyaWRnZV9zY3JpcHQgc3RhcnQgMj4mMSkgfHwgcmV0
dXJuIDEKMTkyYzE5MywxOTUKPCAgICAgeG0gbGlzdCAtLWxvbmcgMj4gL2Rldi9udWxsIHwgZ3Jl
cCAtcSAiRG9tYWluLTAiIHx8IHJldHVybiAxCi0tLQo+ICAgICAjIFRoZSBmb2xsb3dpbmcgbGlu
ZSBpcyBjb21tZW50ZWQgb3V0IGJlY2F1c2UgdGhpcyBjaGVjayBkb2VzIG5vdAo+ICAgICAjIHdv
cmsgcHJvcGVybHkgYmVmb3JlIHhlbmQgaXMgc3RhcnRlZC4KPiAgICAgI3htIGxpc3QgLS1sb25n
IDI+IC9kZXYvbnVsbCB8IGdyZXAgLXEgIkRvbWFpbi0wIiB8fCByZXR1cm4gMQo=
EOL
/sbin/restorecon /etc/init.d/cman

### X fonts FOR racvnc
/bin/mkdir /usr/X11R6/lib
/bin/ln -s /usr/share/X11 /usr/X11R6/lib

### /etc/inittab
/usr/bin/patch /etc/inittab <<EOL
32c32,33
< ca::ctrlaltdel:/sbin/shutdown -t3 -r now
---
> #ca::ctrlaltdel:/sbin/shutdown -t3 -r now
> ca::ctrlaltdel:ca::ctrlaltdel:/usr/bin/logger 'CTRL-ALT-DELETE trap is disabled'
EOL
/sbin/restorecon /etc/inittab

### GDM
/usr/bin/patch /etc/gdm/custom.conf <<EOL
50a51
> SystemMenu=false
EOL
/sbin/restorecon /etc/gdm/custom.conf

### grub
/bin/cp -p /boot/grub/grub.conf /boot/grub/grub.conf.orig
/bin/sed 's/ rhgb quiet//' < /boot/grub/grub.conf.orig > /boot/grub/grub.conf

### /etc/bashrc
/bin/cp -p /etc/bashrc /etc/bashrc.dist
/bin/sed 's/xterm\*)/xterm*|vt100*)/' < /etc/bashrc.dist > /etc/bashrc


dc[123]のKickstartファイル
Xen DomU dc[123]は、iSCSIイニシエータとして動作させるため、RPMパッケージiscsi-initiator-utilsをインストールする必要がある。
logging --host=192.168.55.192 --level=debug

install
url --url http://repository.xencluster/centos/5/os/i386
lang en_US.UTF-8
keyboard jp106
network --device eth0 --bootproto dhcp --hostname=localhost.localdomain
rootpw --iscrypted $1$NG4SU1bL$I8FOJo.81cUrO6Xj4dau41
firewall --enabled --ssh --port=snmp:udp
authconfig --enableshadow --enablemd5
selinux --permissive
timezone Asia/Tokyo
bootloader --location=mbr --driveorder=xvda --append="console=xvc0"

services --enabled=ntpd,oddjobd,snmpd --disabled=acpid,apmd,avahi-daemon,bluetooth,cpuspeed,cups,gpm,hidd,lm_sensors,mdmonitor,microcode_ctl,nfslock,pcscd,smartd,xfs,yum-updatesd

clearpart --all --drives=xvda --initlabel
part /boot --fstype ext3 --size=100 --ondisk=xvda
part pv.2 --size=0 --grow --ondisk=xvda
volgroup VolGroup00 --pesize=32768 pv.2
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=272 --grow --maxsize=544
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
repo --name=base --baseurl=http://repository.xencluster/centos/5/os/i386/
repo --name=updates --baseurl=http://repository.xencluster/centos/5/updates/i386/
repo --name=addons --baseurl=http://repository.xencluster/centos/5/addons/i386/
repo --name=extras --baseurl=http://repository.xencluster/centos/5/extras/i386/

reboot

%packages
@admin-tools
@base
@cluster-storage
@clustering
@core
@emacs
@mail-server
@network-server
@ruby
@server-cfg
@system-tools
@text-internet
@web-server
-smartmontools
-OpenIPMI*
-squid
-samba-*
-system-config-samba
lynx
tftp
kernel-xen
kmod-gfs-xen
kmod-gnbd-xen
-kernel
-kmod-gfs
-kmod-gnbd
-NetworkManager
-bluez-utils
device-mapper-multipath
-irda-utils
-pcmciautils
net-snmp-utils
net-snmp-libs
net-snmp
iscsi-initiator-utils
-apmd
-acpid

%post --log=/mnt/sysimage/root/install-post.log
### network
echo 'NOZEROCONF=yes' >> /etc/sysconfig/network

/bin/cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/ifcfg-eth0
/bin/sed 's/^HWADDR=/#HWADDR=/' < /tmp/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth0

/bin/egrep -v '^#' /etc/sysconfig/network-scripts/ifcfg-eth0 | /bin/sed 's/eth0/eth1/' > /etc/sysconfig/network-scripts/ifcfg-eth1
/bin/egrep -v '^#' /etc/sysconfig/network-scripts/ifcfg-eth0 | /bin/sed 's/eth0/eth2/' > /etc/sysconfig/network-scripts/ifcfg-eth2
/sbin/restorecon /etc/sysconfig/network-scripts/ifcfg-eth[12]

### logrotate
/bin/cat > /etc/logrotate.d/00local.conf <<EOL
rotate 20
compress
start 100
EOL
/sbin/restorecon /etc/logrotate.d/00local.conf

### yum update from the local repository
/bin/cp -p /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.dist
/bin/sed 's/mirrorlist=/#mirrorlist=/
s/#baseurl=/baseurl=/
s/mirror.centos.org/repository.xencluster/' < /etc/yum.repos.d/CentOS-Base.repo.dist > /etc/yum.repos.d/CentOS-Base.repo

yum -y remove kernel

### For Cluster
##### /etc/cluster/fence_xvm.key
/usr/bin/base64 -di > /etc/cluster/fence_xvm.key <<EOL
B0K3fFCQVQZdPydoMs29eSmd4vKwEbNC+G58HjSeSGzK5x0+uS8VB8B+/gnHVKLt3sqtzZeEpsKs
<<略>>
gDfGZSWpdWxwjz//h5x/zP2JIv6PgZt++qoSDd/1NxP5zdy0wO6/wHLNghjKDEwjtP/7Lt79ntqB
EOL
/bin/chmod 600 /etc/cluster/fence_xvm.key

##### iptables
/bin/cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.dist
/bin/cat > /etc/sysconfig/iptables <<EOL
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.55.0/24 -i eth0 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOL

### sshd
/bin/cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.dist
/bin/sed 's/^PasswordAuthentication yes/PasswordAuthentication no/' < /etc/ssh/sshd_config.dist > /etc/ssh/sshd_config

/bin/mkdir ~root/.ssh
/bin/chmod 600 ~root/.ssh
/bin/cat > ~root/.ssh/authorized_keys2 <<EOL
ssh-dss AAAA<<略>>
EOL
/bin/chmod 644 ~root/.ssh/authorized_keys2

### Mail
##### /etc/mail/sendmail.cf
/usr/bin/patch /etc/mail/sendmail.mc <<EOL
26c26
< dnl define(\`SMART_HOST', \`smtp.your.provider')dnl
---
> define(\`SMART_HOST', \`fs2.xencluster')dnl
EOL
(cd /etc/mail; /usr/bin/make sendmail.cf)

##### /etc/aliases
/usr/bin/patch /etc/aliases <<EOL
96c96
< #root:  marc
---
> root:  root@xencluster
EOL
/usr/bin/newaliases

### SNMP
/bin/cat > /etc/snmp/snmpd.conf <<EOL
com2sec localhost localhost           COMMUNITY_STRING
com2sec localnet  192.168.55.0/24    COMMUNITY_STRING

group   gOpLocalhost   v1            localhost
group   gOpLocalhost   v2c           localhost
group   gOpLocalnet    v1            localnet
group   gOpLocalnet    v2c           localnet

view    all           included   .1
view    systemview    included   REDHAT-CLUSTER-MIB:RedHatCluster

access  gOpLocalhost   ""      any       noauth    exact  all    none    all
access  gOpLocalnet    ""      any       noauth    exact  all    none    all

syslocation Unknown
syscontact root@xencluster

disk /     100000

load 10

# for cluster
dlmod RedHatCluster     /usr/lib/cluster-snmp/libClusterMonitorSnmp.so
EOL

/bin/cat > /etc/snmp/snmp.conf <<EOL
mibs +REDHAT-MIB:REDHAT-CLUSTER-MIB
EOL

### NTP on Xen DomU
/bin/cat >> /etc/sysctl.conf <<EOL

# For ntpd on Xen DomU.
xen.independent_wallclock = 1
EOL

### cron
/bin/cp -p /etc/crontab /etc/crontab.dist
/bin/sed 's/^\(..\) 4 /\1 5 /' < /etc/crontab.dist > /etc/crontab

### grub
log_mesg "grub"
/bin/cp -p /boot/grub/grub.conf /boot/grub/grub.conf.dist
/bin/sed 's/ rhgb quiet//' < /boot/grub/grub.conf.dist > /boot/grub/grub.conf

### /etc/bashrc
log_mesg "bashrc"
/bin/cp -p /etc/bashrc /etc/bashrc.dist
/bin/sed 's/xterm\*)/xterm*|vt100*)/' < /etc/bashrc.dist > /etc/bashrc


その1・概要
その2・インストールとクラスタの構成
その3・iSCSIターゲットの設定
その4・iSCSIイニシエータの設定
その5・Device-Mapper Multipathの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaでの設定
その9・考察

RHCS: iSCSI, DM-MP, CLVM and GFS・その1・概要

Red Hat Cluster: GNBD, CLVM and GFS・その10・考察と予告』で予告した通り、
  1. iSCSIを用いて複数経路で共有されたストレージを
  2. Device-Mapper Multipath (DM-MP)で束ね、
  3. クラスタ対応の論理ボリューム(Logical Volume, LV)を構築し、
  4. その上でGFS2によるファイル共有
することを検証する。使用するOSは、例のごとくCentOS 5.1。従って、その上流ディストリビューションであるRed Hat Enterprise Linux (RHEL) 5.1でも同様に作業できるはずだ。使用機材の制限と、スナップショットLVとの組合わせによるロールバックのし易さから(『XenとLVM・その3・スナップショットLVの利用』参照)、クラスタメンバは、Xen DomUで構成する。

今回の検証環境は、二台のサーバ(実質的には一台)とL2SWで以下の通り構築する。
論理的には、次の環境と同等だ。
Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その1・概要』で解説した環境を基本としているので、そちらも併せて参照して欲しい。
ノード構成
FQDNIP addressClusterMemo
fs1.xenclustereth0: 192.168.55.191
eth1.4001: 192.168.56.191
eth1.4002: 192.168.57.191
cDom0sa cluster node Dom0 and hosts Cluster Nodes dc1, dc2 and dc3.
fs2.xenclustereth0.4000: 192.168.55.195
eth0.4001: 192.168.56.195
eth0.4002: 192.168.57.195
N/Aa Dom0 and hosts Luci Server bs1
dc1.xenclustereth0: 192.168.55.7
eth1: 192.168.56.7
eth2: 192.168.57.7
cDomUsa cluster node DomU hosted by fs1
dc2.xenclustereth0: 192.168.55.8
eth1: 192.168.56.8
eth2: 192.168.57.8
cDomUsa cluster node DomU hosted by fs1
dc3.xenclustereth0: 192.168.55.9
eth1: 192.168.56.9
eth2: 192.168.57.9
cDomUsa cluster node DomU hosted by fs1
bs1.xenclustereth0: 192.168.55.12N/Aa Luci server DomU hosted by fs2

クラスタ構成
  • クラスタcDom0sは、ノードfs1一台で構成される。
  • クラスタcDomUsは、ノードdc1dc2およびdc3は、の三台からなる。
  • 以上二つのクラスタは、Luciサーバbs1から構成・管理される。

ストレージ構成
クラスタcDomUsのメンバdc[123]は、iSCSIでfs1のストレージにアクセスする。このアクセスには、
  • 192.168.56.0/24 san01.xenclusterネットワーク経由
  • 192.168.57.0/24 san02.xenclusterネットワーク経由
の二経路が準備されている。


その1・概要
その2・インストールとクラスタの構成
その3・iSCSIターゲットの設定
その4・iSCSIイニシエータの設定
その5・Device-Mapper Multipathの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaでの設定
その9・考察

2008/03/20

xenbr0が消える? - Bugzilla Bug 364581

fujiwara さんから以下のような報告があった。
以前のkernel-xen-2.6.18-53.el5.x86_64からkernel-xen-2.6.18-53.1.14.el5.x86_64 へアップデートすると、その後ドメインUの作成時に共有物理デバイス(xenbr0)が消えてしまいブリッジモードでの接続ができなくなります
64bit環境がうらやましいではなくて、困った問題だ。手元の環境では、デフォルトのxenbr0を使わずに、自前でブリッジを構築しているので、再現はできていないのだが、Red Hat Bugzilla Bug 364581で報告されているものと同じ現象のようだ。

2008/03/17

Red Hat Cluster: GNBD, CLVM and GFS・その10・考察と予告

今まで調査・実証してきた『GNBD, CLVM and GFS』について軽く考察してみたい。

今回の調査で、CentOS 5.1およびConga(Red Hat Cluster, Luci & Ricci)を用いて、GNBDをバックエンドとするクラスタ論理ボリューム(logical volume, LV)上でGFSを利用したファイル共有を実現できることが判った。ただし以下の点に注意する必要があった。
  1. GNBDには、起動スクリプト(init script)が準備されていない(『5・GNBDの設定』)。
  2. CongaはGNBDによるブロックデバイスを認識しない(『その8・Congaからの設定』)。
また、カーネルのバージョンによっては、うまく動かない場合もあったことを付け加えたい。

その後の検証で、次のことも判った。
  1. GNBDをバックエンドとすると、device-mapper multipath (DM-MP)を構成できない。
GNBDクライアントは、同一GNBD名のブロックデバイスを複数インポートできない。GNBDサーバは、どのネットワークインターフェースに対しても、同一GNBD名でブロックデバイスをエクスポートする。つまり、GNBDクライアント・サーバが複数のネットワークインターフェースを持っていてもこれを有効に活用することができない(汚い技を使えば可能かもしれないが)
ただし、一つのストレージに複数のホストバスアダプタを付け、複数のGNBDサーバから同一のブロックデバイスを異なる名前でエクスポートすれば、GNBDをバックエンドとするDM-MPを構成することは可能。この場合は、それなりのハードウェアが必要だし、設定も複雑になる。

そこで次は、iSCSI、DM-MP、CLVMおよびGFSを使ったファイル共有について検証したい。バックエンドにiSCSIを使う場合、サーバ側で同一デバイスを複数のネットワークインターフェースからエクスポートし、クライアント側でそれらを複数のインターフェースから別々にインポートすることが可能。また、これをDM-MPで扱うことも容易。
乞うご期待。

解説: その1その2その3
kernel-xenにバグか?
その4・CentOS 5.1での注意点
その5・GNBDの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaからの設定
その9・ベンチマーク
その10・考察と予告

2008/03/11

Red Hat Cluster: GNBD, CLVM and GFS・その4・CentOS 5.1での注意点・補足

Red Hat Cluster: GNBD, CLVM and GFS・その4・CentOS 5.1での注意点』で、
現時点(2008/2/28)の最新版kernel-xen-2.6.18-53.1.13.el5およびkmod-gnbd-xen-0.1.4-12.el5をXen DomUで使うと、CPU負荷が異常に高くなるバグがある。
と書いたが、新しくリリースされたkernel-xen-2.6.18-53.1.14.el5ではこの問題が発生しない。
このカーネルに対するErrata、RHSA-2008:0154-15にはそれらしい記述がなく、原因は不明。

2008/03/10

LVM上のext3 filesystemをonlineで拡張

使用中のext3ファイルシステム(例えば「/」)の空き容量が足りなくなって困ることがある。このとき、当該ext3ファイルシステムが論理ボリューム(logical volume, LV)上に構築されていて、ディスクに空きがあれば、そのファイルシステムを拡張して空き容量を増やすことができる。以下の通り作業する。
例の如く、Xen DomUで検証すべく、Xen Dom0側で検証用DomU dc4を準備する。「/」が含まれるディスク/dev/xvda(Dom0上ではLogVolDc4)の他に、拡張用のディスク/dev/xvdb(Dom0上ではLogVolGNBD02)を追加する。
[root@fs1 ~]# lvcreate --snapshot --size=1G --name=LogVolDc4 /dev/VolGroupXX/LogVolDc0
Logical volume "LogVolDc4" created
[root@fs1 ~]# lvcreate --size=4G --name=LogVolGNBD02 VolGroupXX
Logical volume "LogVolGNBD02" created
[root@fs1 ~]# cat /etc/xen/dc4
name = "dc4"
uuid = "6d49dba0-ea90-4802-bd88-66ba9d552dd5"
maxmem = 256
memory = 64
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [ ]
disk = [ "phy:/dev/VolGroupXX/LogVolDc4,xvda,w","phy:/dev/VolGroupXX/LogVolGNBD02,xvdb,w" ]
vif = [ "mac=00:16:3e:1d:89:04,bridge=xenbr4000" ]
[root@fs1 ~]# xm create -c dc4
Using config file "/etc/xen/dc4".

<<略>>

起動したら、ログインし、ディスクの状態を確認する。
[root@dc4 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
3396284 1404812 1816164 44% /
/dev/xvda1 101086 12887 82980 14% /boot
tmpfs 32852 0 32852 0% /dev/shm
[root@dc4 ~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy%
LogVol00 VolGroup00 -wi-ao 3.34G
LogVol01 VolGroup00 -wi-ao 544.00M
[root@dc4 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup00 1 2 0 wz--n- 3.88G 0
[root@dc4 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/xvda2 VolGroup00 lvm2 a- 3.88G 0
[root@dc4 ~]# vgdisplay VolGroup00
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 3.88 GB
PE Size 32.00 MB
Total PE 124
Alloc PE / Size 124 / 3.88 GB
Free PE / Size 0 / 0
VG UUID LJvuML-OhmL-LbIT-mLGW-Y5ty-XW8J-MC9uV0

[root@dc4 ~]# lvdisplay /dev/VolGroup00/LogVol00
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID v3kYE9-IV4A-f97k-FONI-mxOk-oQxE-SrKz03
LV Write Access read/write
LV Status available
# open 1
LV Size 3.34 GB
Current LE 107
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0

[root@dc4 ~]#

追加したディスク/dev/xvdbを物理ボリューム(physical volume, PV)として設定する。
[root@dc4 ~]# pvcreate /dev/xvdb
Physical volume "/dev/xvdb" successfully created
[root@dc4 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/xvda2 VolGroup00 lvm2 a- 3.88G 0
/dev/xvdb lvm2 -- 4.00G 4.00G
[root@dc4 ~]#
PVが追加されたことに注意。
このPVをボリュームグループ(volume group, VG) VolGroup00に追加する。
[root@dc4 ~]# vgextend VolGroup00 /dev/xvdb
Volume group "VolGroup00" successfully extended
[root@dc4 ~]# vgdisplay VolGroup00
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 7.84 GB
PE Size 32.00 MB
Total PE 251
Alloc PE / Size 124 / 3.88 GB
Free PE / Size 127 / 3.97 GB
VG UUID LJvuML-OhmL-LbIT-mLGW-Y5ty-XW8J-MC9uV0

[root@dc4 ~]#
「Free PE」が増えていることに注意。
/」ファイルシステムが置かれているLV LogVol00を拡張する。
[root@dc4 ~]# lvextend --extents=+127 /dev/VolGroup00/LogVol00
Extending logical volume LogVol00 to 7.31 GB
Logical volume LogVol00 successfully resized
[root@dc4 ~]# lvdisplay /dev/VolGroup00/LogVol00
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID v3kYE9-IV4A-f97k-FONI-mxOk-oQxE-SrKz03
LV Write Access read/write
LV Status available
# open 1
LV Size 7.31 GB
Current LE 234
Segments 2
Allocation inherit
Read ahead sectors 0
Block device 253:0

[root@dc4 ~]#
「LV Size」が増えていることに注意。
ファイルシステムを拡張する。
[root@dc4 ~]# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 1916928 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 1916928 blocks long.

[root@dc4 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
7427628 1406560 5639372 20% /
/dev/xvda1 101086 12887 82980 14% /boot
tmpfs 32852 0 32852 0% /dev/shm
[root@dc4 ~]#
ディスクの空き容量が増えていることに注意。

2008/03/07

Red Hat Cluster: GNBD, CLVM and GFS・その9・ベンチマーク

GNBD, CLVM and GFS・その8・Congaからの設定』までに構築した環境で、ファイルシステムの性能を測定する。測定に用いたのは、『CentOS用bonnie++のRPMを準備する』で作ったbonnie++のRPM。これをdc2およびfs1にインストール、測定した。
なお、今回の環境は、Xen Dom0がGNBDサーバで、Xen DomUがGNBDクライアントという特殊な環境のため、これをもってGFS・CLVM・GNBDの一般的な性能を推し量るのは不適切だ。あくまでも一つの参考として欲しい。何故なら、一般には、GNBDのサーバ=クライアント間や、GFS・CLVMを共有しているクラスタメンバ間の通信は、GbEなどの普通のネットワークだからだ。GNBDのサーバ=クライアントが同一CPU上で実行されるのも特殊なケースだ。


Sequential Output
Per Char Block Rewrite
K/sec %CPU K/sec %CPU K/sec %CPU
dc2 GFS/DomU 149 97 10,951 7 5,209 2
Latency msec 89.556 7,177.000 2,478.000
dc2 ext3/DomU 382 97 36,096 10 16,275 1
Latency msec 49.878 309.000 164.000
fs1 ext3/Dom0 96 98 40,998 23 22,036 5
Latency msec 176.000 1,788.000 812.000



Sequential Input
Per Char Block
K/sec %CPU K/sec %CPU
dc2 GFS/DomU 866 96 9,921 1
Latency msec 36.535 240.000
dc2 ext3/DomU 871 98 32,478 0
Latency msec 25.578 55.655
fs1 ext3/Dom0 169 97 62,977 4
Latency msec 159.000 22.596




Random Seeks
files/sec % CPU
dc2 GFS/DomU 233 15
Latency msec 690.000
dc2 ext3/DomU 729 1
Latency msec 49.561
fs1 ext3/Dom0 674 8
Latency msec 125.000



Sequential Create
Create Read Delete
files/sec %CPU files/sec %CPU files/sec %CPU
dc2 GFS/DomU 421 8 330 1 202 1
Latency msec 1,028.000 81.737 216.000
dc2 ext3/DomU 20,319 81 105,155 74 39,305 83
Latency msec 10.467 30.169 0.422
fs1 ext3/Dom0 16,480 76 169,230 90 25,541 82
Latency msec 8.949 0.777 0.710




Random Create
Create Read Delete
files/sec %CPU files/sec %CPU files/sec %CPU
dc2 GFS/DomU 401 9 441 1 286 2
Latency msec 1,262.000 167.000 189.000
dc2 ext3/DomU 22,212 88 223,847 92 39,049 81
Latency msec 0.648 0.403 0.479
fs1 ext3/Dom0 16,482 73 155,919 98 26,283 84
Latency msec 6.643 0.805 0.387


解説: その1その2その3
kernel-xenにバグか?
その4・CentOS 5.1での注意点
その5・GNBDの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaからの設定
その9・ベンチマーク
その10・考察と予告

2008/03/06

CentOS用bonnie++のRPMを準備する

Bonnie++は、ファイルシステムの性能を測定するベンチマークプログラム。最新版は、SourceForge内のBonnie++プロジェクトのページから入手できる。Bonnie++のRPMはCentOS公式のものはないので、自前でRPMを作成する。

RPMをビルドするためには、RPMをビルドする場所(環境)が必要だが、それに関しては、『RHL9用のbind-9.2.8.*.rpmを作る』を参照して欲しい。

材料を準備する。材料は、最新版のtarボールとspecファイルだ。Tarボールは、SourceForgeのプロジェクトページからダウンロードして%{_topdir}/RPM/SOURCESに置く。現時点での最新版は、1.93c。
Specファイル%{_topdir}/RPM/SPECS/bonnie++.specは以下の通り。
Summary: A program for benchmarking hard drives and filesystems
Name: bonnie++
Version: 1.93c
Release: 2
License: GPL
Group: Utilities/Benchmarking
URL: http://www.coker.com.au/bonnie++
Source: http://www.coker.com.au/bonnie++/experimental/bonnie++-%{version}.tgz
BuildRoot: /tmp/%{name}-buildroot
Prefixes: %{_prefix} %{_datadir}
Requires: glibc >= 2.1
Requires: perl >= 5.0
BuildRequires: glibc-devel >= 2.1

%description
Bonnie++ is a benchmark suite that is aimed at performing a number of simple
tests of hard drive and file system performance.

%prep
%setup -n %{name}-%{version}

%{__perl} -pi.orig -e '
s/^#define MinTime \(.*\)/#define MinTime (0.01)/;
' bonnie.h.in

%{__perl} -pi.orig -e '
s|\$\(eprefix\)/sbin|\$(sbindir)|;
s|\$\(eprefix\)/bin|\$(bindir)|;
s|\@mandir\@|\$(mandir)|;
' Makefile.in

%build
%configure \
--disable-schemas-install
%{__make} %{?_smp_mflags}

%install
%{__rm} -rf %{buildroot}
%{__install} -d -m0755 %{buildroot}%{_mandir}/man8/
%makeinstall

%clean
%{__rm} -rf %{buildroot}

%files
%defattr(-, root, root, 0755)
%doc changelog.txt readme.html
%doc %{_mandir}/man?/*
%{_bindir}/*
%{_sbindir}/*

%changelog
* Wed Sep 06 2000 Rob Latham <rlatham@plogic.com>
- first packaging

ここまで準備できたら、%{_topdir}/RPM/SPECSから以下の通りコマンドを実行する。
$ rpmbuild -bb bonnie++.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.97594
+ umask 022
+ LANG=C
<<略>>
+ cd bonnie++-1.93c
+ /bin/rm -rf /tmp/bonnie++-buildroot
+ exit 0
$
RPMができているかを確認する。
$ ls ../RPMS/i386
bonnie++-1.93c-2.i386.rpm bonnie++-debuginfo-1.93c-2.i386.rpm
$

2008/03/05

Red Hat Cluster: GNBD, CLVM and GFS・その8・Congaからの設定

前回『Red Hat Cluster: GNBD, CLVM and GFS・その7・GFS2の設定』までで、一通りの手順を説明したが、これはコマンドラインからの設定だった。これをConga (Luci & Ricci)から設定する。

まず、CongaはGNBDを理解しないことに注意しよう。例えば、あるマシンをGNBDサーバ・クライアントを設定できない。従って、GNBDサーバ・クライアントの設定は、『Red Hat Cluster: GNBD, CLVM and GFS・その5・GNBDの設定』の通り行う必要がある。
また、GNBDクライアントにインポートされているGNBDデバイスをディスクとして認識しない(少なくともCentOS 5.1の現バージョンでは)。従って、CongaからGNBDによりインポートしたブロックデバイスを物理ボリューム(physical volume, PV)として設定できない。Conga上での作業を始める前に、『Red Hat Cluster: GNBD, CLVM and GFS・その6・CLVMの設定』に従って、当該ブロックデバイスをPVとして設定する必要がある。

では、実際に作業してみよう。既に、fs1をGNBDサーバ、dc[123]をGNBDクライアントとして設定済みとする。『Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その6・クラスタcDom0sの生成』に従い、Luci管理画面にログインした後、[storage」タブを選択する。
GNBDクライアントdc1.xenclusterを選択する。
GNBDでインポートされたデバイス、/dev/gnbd0が認識されていないことに注意。念のため、[Reprobe Storage]を押下し、再確認させる。「Probing Storage」画面が表示された後、元の画面に戻る。
再確認させても/dev/gnbd0が認識されていない。
ここで、/dev/gnbd0をコマンドラインからPVとして設定する。この作業は、dc[123]の内のいずれから行う。
[root@dc1 ~]# pvcreate /dev/gnbd0
Physical volume "/dev/gnbd0" successfully created
[root@dc1 ~]#
再びLicciの画面に戻り、[storage]タブ→[dc1.xencluster]→[Volume Groups]→[New Volume Group]を選択する。[Select 1 Physical Volume]の欄に、/dev/gnbd0が現れているのが解る。
この画面に対して、[Volume Group Name]にVGcDomUs00を入力、[Extent Size]に32MB、[Clustered]にtrueを選択し、[Select 1 Physical Volume]の欄で/dev/gnbd0をチェックした後、[Create]ボタンを押下する。確認のダイアログが表示される。[OK]ボタンを押下する。進行状況を表示する画面の後、VGcDomUs00の画面が表示される。この画面の下の[New Volume Group]ボタンを押下し、新規ボリュームグループLVGFS00を作成する。この画面に対して、[Logical Volume Name]にLVGFS00を入力、[Conent]にGlobal FS v.2を選択、[Unique GFS Name]にGFS00、[Mountpoint]に/mnt/gfs00を入力、[Mount]および[List in /etc/fstab]を共にtrueを選択、[Number Of Journals]に3を入力後、[Create]ボタンを押下する。確認のダイアログが表示される。[OK]ボタンを押下すると、進行状況表示に続き、元の画面が表示される。この途中で、dc1のコンソールには、次のようなエラーが表示される。
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/setroubleshoot/analyze.py", line 370, in auto_save_callback
self.save()
File "/usr/lib/python2.4/site-packages/setroubleshoot/analyze.py", line 351, in save
self.sigs.write_xml('sigs', self.filepath)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 570, in write_xml
f.write(self.get_xml_text_doc(obj_name))
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 529, in get_xml_text_doc
doc = self.get_xml_doc(obj_name)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 524, in get_xml_doc
root = self.get_xml_nodes(doc, obj_name)
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 599, in get_xml_nodes
list.addChild(item.get_xml_nodes(doc, item_name))
File "/usr/lib/python2.4/site-packages/setroubleshoot/signature.py", line 625, in get_xml_nodes
root.newChild(None, name, value)
File "/usr/lib/python2.4/site-packages/libxml2.py", line 3217, in newChild
ret = libxml2mod.xmlNewChild(self._o, ns__o, name, content)
TypeError: xmlNewChild() argument 4 must be string without null bytes or None, not str
設定は正しく行われているようだ。
[root@dc1 ~]# lvs
LV       VG         Attr   LSize   Origin Snap%  Move Log Copy%
LVGFS00  VGcDomUs00 -wi-ao   3.94G             
LogVol00 VolGroup00 -wi-ao   3.34G             
LogVol01 VolGroup00 -wi-ao 544.00M             
[root@dc1 ~]# vgs
VG         #PV #LV #SN Attr   VSize VFree
VGcDomUs00   1   1   0 wz--nc 3.97G 32.00M
VolGroup00   1   2   0 wz--n- 3.88G     0
[root@dc1 ~]# pvs
PV         VG         Fmt  Attr PSize PFree
/dev/gnbd0 VGcDomUs00 lvm2 a-   3.97G 32.00M
/dev/xvda2 VolGroup00 lvm2 a-   3.88G     0
[root@dc1 ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/mapper/VGcDomUs00-LVGFS00 on /mnt/gfs00 type gfs2 (rw,hostdata=jid=0:id=196611:first=1)
[root@dc1 ~]# cat /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
/dev/VGcDomUs00/LVGFS00 /mnt/gfs00 gfs2 defaults 0 0
[root@dc1 ~]#
このとき、他のノード上からも、LVGFS00やVGcDomUs00を確認できる。
[root@dc2 ~]# lvs
LV       VG         Attr   LSize   Origin Snap%  Move Log Copy%
LVGFS00  VGcDomUs00 -wi-a-   3.94G              
LogVol00 VolGroup00 -wi-ao   3.34G              
LogVol01 VolGroup00 -wi-ao 544.00M              
[root@dc2 ~]# vgs
VG         #PV #LV #SN Attr   VSize VFree
VGcDomUs00   1   1   0 wz--nc 3.97G 32.00M
VolGroup00   1   2   0 wz--n- 3.88G     0
[root@dc2 ~]# pvs
PV         VG         Fmt  Attr PSize PFree
/dev/gnbd0 VGcDomUs00 lvm2 a-   3.97G 32.00M
/dev/xvda2 VolGroup00 lvm2 a-   3.88G     0
[root@dc2 ~]# 
ただし、マウントされていないので、LVGFS00のoフラグが立っていないことに注意。
続いて、残りのノードdc[23]に対して、LVGFS00をマウントするよう設定する。Luci管理画面から、[storage]タブを選び、残りのノードを選択する。このとき、上の様にVGcDomUs00が表示されない場合があるかもしれない。その場合は、[Reprobe Storage]ボタンを押下して、認識させる。
[VGcDomUs00]→[Logical Volumes]→[LVGFS00]を選択する。
[Mountpoint]および[/etcfstab Mountpoint]に共に/mnt/gfs00を入力し、[Apply]ボタンを押下する。確認のダイアログが表示される。[OK]ボタンを押下すると、進行状況が表示された後、VGcDomUs00の画面が表示される。このときも、dc1のときと同様の「Tracebak…」というメッセージが表示されるが、正しく設定されているようだ。
[root@dc2 ~]# lvs
LV       VG         Attr   LSize   Origin Snap%  Move Log Copy%
LVGFS00  VGcDomUs00 -wi-ao   3.94G                     
LogVol00 VolGroup00 -wi-ao   3.34G                     
LogVol01 VolGroup00 -wi-ao 544.00M                     
[root@dc2 ~]# vgs
VG         #PV #LV #SN Attr   VSize VFree
VGcDomUs00   1   1   0 wz--nc 3.97G 32.00M
VolGroup00   1   2   0 wz--n- 3.88G     0
[root@dc2 ~]# pvs
PV         VG         Fmt  Attr PSize PFree
/dev/gnbd0 VGcDomUs00 lvm2 a-   3.97G 32.00M
/dev/xvda2 VolGroup00 lvm2 a-   3.88G     0
[root@dc2 ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/xvda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /sys/kernel/config type configfs (rw)
/dev/mapper/VGcDomUs00-LVGFS00 on /mnt/gfs00 type gfs2 (rw,hostdata=jid=1:id=196611:first=0)
[root@dc2 ~]# 
マウントされたため、LVGFS00のoフラグが立ったことに注意。

解説: その1その2その3
kernel-xenにバグか?
その4・CentOS 5.1での注意点
その5・GNBDの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaからの設定
その9・ベンチマーク
その10・考察と予告