ラベル LVM の投稿を表示しています。 すべての投稿を表示
ラベル LVM の投稿を表示しています。 すべての投稿を表示

2009/04/03

A backup script for Xen DomUs, part 2

A backup script for Xen DomUs, part 1』で紹介したスクリプトxen-backup.shについて解説する。

このスクリプトの大まかな流れは以下の通り:
  1. バックアップ設定ファイルの読み込み: 182行目
  2. バックアップを実行するかどうかの検査: 183行目~215行目
  3. DomU設定の解析: 217行目~228行目
  4. ディスクイメージのマウント@ローカル: 230行目~254行目
  5. ディスクイメージのマウント@リモートDom0: 256行目~263行目
  6. Rsyncによるバックアップ: 265行目~266行目
  7. ディスクイメージのアンマウント@リモートDom0: 268行目~274行目
  8. ディスクイメージのアンマウント@ローカル: 277行目~280行目

バックアップを実行するかどうかの検査
DomUの状態を表示するコマンド
virsh domstate DomU名
を使って、以下の各項目を検査する。
  1. 対象DomUが、ローカルDom0でホストされいるか?
  2. 対象DomUが、ローカルDom0で正常に実行されているか?
  3. 自分自身がDOM0Sに含まれているか?
すべての検査に合格すれば、バックアップを実行する。

DomU設定の解析
コマンド
virsh dumpxml DomU名
で対象となるDomUの設定(XML形式)を得て、ディスクイメージ情報を抽出する。
このとき、関数get_value_from_configを呼び出す。
115: get_value_from_config()
116: {
117:     local xml=$1 num=$2 elem=$3 attr=$4
118:     echo "cat /domain/devices/disk[$num]/$elem/@$attr" | \
119:         xmllint --shell $xml | \
120:         awk -F\" '/^ +'$attr'/{print $2}'
121: }
この中ではxmllintコマンドを使用している。ディスクイメージに対する設定項目/domain/devices/diskは、複数指定される可能性があることに注意。

ディスクイメージのマウント@ローカル
各ディスクイメージをローカルにマウントする。
マウントする前に、ディスクイメージのスナップショットを撮っている(『XenとLVM・その3・スナップショットLVの利用』参照)
238:                 lvcreate --snapshot --name=$snapshot_name --size=$SNAPSHOT_SIZE ${disk_source[$i]}
239:                 add_close_command "lvremove -f /dev/$vgname/$snapshot_name"
240:                 analyze_disk /dev/$vgname/$snapshot_name
マウント時と反対の動作をバックアップ後に実施する必要があるため、add_close_command関数(34行目~38行目)を使って記録する。
実際の解析は、analyze_disk関数(124行目~175行目)を使っている。

analyze_disk関数
マウント時の動作は、リモート側でも実行する必要があるため、add_open_command関数(14行目~19行目)で実行および記録する。
与えられたデバイス$the_diskに対して、
131:     part_type=`parted -s $the_disk print | awk '/^Partition Table:/{print $3}'`
でパーティションの種類を得ている。これがDOSパーティションなら、パーティション毎に分割し、それぞれに対して処理する必要がある。
134:             add_open_command "kpartx -a -p $PSEP $the_disk"
135:             add_close_command "kpartx -d -p $PSEP $the_disk"
ここで、kpartxコマンドに対するオプション「-p 区切文字」を指定していることに注意。例えば、/dev/VolGroup00/LogVolDomUに対して、
kpartx -a /dev/VolGroup00/LogVolDomU1
を実行すると、パーティションごとに
/dev/mapper/LogVolDomU1
/dev/mapper/LogVolDomU1
等のデバイスが作成されるが、元のデバイス名の最後が数字の場合、例えば/dev/VolGroup00/LogVolDomU1の場合は、
/dev/mapper/LogVolDomU1p1
/dev/mapper/LogVolDomU1p1
の様に区切文字「p」が挿入される。オプション「-p 区切文字」を指定すれば、どちらの場合も区切文字が挿入されるので都合が良い。なお、「kpartx -a -p 区切文字」で作成したデバイスは、「-p」を指定して「kpartx -d -p 区切文字」としないと削除できない(この辺りの動作は、kpartxのmanpageにも触れられていない)
136:             while read device[$num] fs_type[$num] mount_point[$num]; do
137:                 ((num++))
138:             done <<EOF
139: $(parted -s $the_disk print | awk '/^ *[0-9]+ /{print $1" "$6" "$7}')
140: EOF
この部分は、一見
parted -s $the_disk print | awk '/^ *[0-9]+ /{print $1" "$6" "$7}' | while read device[$num] fs_type[$num] mount_point[$num]; do
((num++))
done
の様に書き直せそうだが、期待通りの動作とならない。なぜなら、readコマンドをパイプの後で使うと、readコマンドがサブシェルで実行され、サブシェルの変数には代入されるが、元のシェルの変数には反映されないため。
最終的に、mountコマンドでマウントされるデバイスにまで分割できたら、add_fs_table関数(52行目~57行目)で記録しておく。ディレクトリ階層の高い順にマウントする必要があるため、すべてのマウントポイントを解析し終えてからマウントする(252行目~254行目)。

ディスクイメージのマウント@リモートDom0
リモートDom0に対して、SSH経由でマウントを実行する。
258:         ssh -T $remote_dom0 <<EOF
259: ##### COMMANDS FOR TARGET TO OPEN
260: `exec_open_commands | sed 's/-'$$'//'`
261: mkdir -p $target_prefix
262: `mount_fs_all $target_prefix | sed 's/-'$$'//'`
263: EOF
入力がTTYでないことを明示するため、sshコマンドには、「-T」オプションを与えている。

Rsyncによるバックアップ
266:         rsync -avz --delete -e ssh $source_prefix/ $remote_dom0:$target_prefix
引数「$source_prefix/」の最後のスラッシュは必須。省略すると、期待通りに動作しない。


A backup script for Xen DomUs, part 1
A backup script for Xen DomUs, part 2

A backup script for Xen DomUs, part 1

XenのDomUを運用する際、複数のDom0(物理サーバ)を準備しておき、DomUのディスクイメージ(以下、単にイメージ)を共有しておけば、一台のDom0が故障しても、健全なDom0でサービスを継続することが可能だ。
Dom0間でDomUイメージを共有する方法には、iSCSIを使う方法や、DRBDを使う方法があるが、CentOSのiSCSIターゲット(ストレージ側)やDRBDには問題があり、今のところ安心して採用できない(iSCSIターゲットに専用機器を使えば問題無いが、金がかかる)

そこで紹介するのが、今回のバックアップスクリプトxen-backup.shだ。このスクリプトは、rsync(1)を使うため、単純にディスクイメージをネットワークコピーするより圧倒的に早い。また、Xen固有のコマンドを一切使わず、virshコマンドを使っている。このため、libvirtがサポートしている他の仮想環境、kvmなどでも使用できるかもしれない(未確認)。
前提条件は以下の通り:
  1. Dom0間で、rootによるSSHログインが可能であること。
  2. 論理ボリューム(logical volume, LV)上にイメージが保存されていること。
  3. 各DomUに対して、ディスクイメージLV名が一致すること。
  4. Dom0とDomUのボリュームグループ名(volume group, VG)が重複しないこと。
  5. 実行前に別途フルバックアップを実行すること。
  6. 無保証
前提条件1.は、rsyncを安全に使うため必要。完全に自動化したい場合は、このバックアップ用の公開鍵を作成し、秘密鍵のパスフレーズを外した状態で、各Dom0のrootに配布すればよい。
前提条件2.は、動作中のDomUに対してスナップショットを撮ってバックアップするための条件。スナップショットが必要ない場合は、ファイルや物理的なディスクパーティションに対して動作させられるよう改造するのはそう難しくないだろう。
前提条件3.は要するに、DomUの設定ファイルが(ディスクイメージに関して)完全に一致すれば良い、ということだ。これは単に私の手抜きの結果。LV名が異なる場合は、コピー元・コピー先それぞれのDom0上で設定ファイルを解析するよう改造が必要。
前提条件4.については、『パスワードを紛失したDomUをリカバリ』に書いた通りで、具体的には、DomoのVG名を、標準の「VolGroup00」から「VolGroupXX」に変更してインストールする(DomUのVG名を標準のままでよい)。『Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その2・Dom0 fsXのインストール』を参照。
前提条件5.は、使用前に例えば、
[root@dom0a ~]# dd bs=16M if=/dev/VolGroupXX/LogVolDomU1 | ssh dom0b 'dd bs=16M of=/dev/VolGroupXX/LogVolDomU1'
を実行する必要がある。今回のスクリプトでは、パーティション情報やLVM情報はコピーされないためだ。

なお、今回のスクリプトでは、対象DomUが実際に動作しているDom0上から、他のDom0へコピーを行う。これは、誤って古いイメージから新しいイメージへ書き戻すのを防ぐため。

スクリプトを実行する前に、各DomUに対する設定ファイル/root/Works/Xen-Backup/xen-backup.d/*.confを準備する(通常は、DomU名.conf)。設定項目は次の二つのみ:
DOMU
DomU名
DOM0S
このDomUのイメージを保存するDom0。空白で区切って並べる。ネットワーク的に到達可能な名前でなければならない。
例えば、DomU domu1に対する設定ファイル/root/Works/Xen-Backup/xen-backup.d/domu1.confならば、
DOMU=domu1
DOM0S="dom0a dom0b"
となる。この場合、domu1は、dom0a dom0bでホストされている。

xen-backup.shをダウンロード

コードは以下のbase64形式を、xen-backup.sh.b64として保存しておき、以下のコマンド
cat xen-backup.sh.b64 | base64 -di | gunzip > xen-backup.sh
で復元して使用する。

2009/4/5(日)追記:
ログをSYSLOGで出力するように変更した。

2009/4/6(月)追記:
重複実行を排除した。

2009/4/7(火)追記:
エラーもログされるよう変更した。
Cronからでも正常に実行されるよう、PATHを設定するように変更した。

2012/11/30(金)追記:
ファイルをダウンロードできるようにした。

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


A backup script for Xen DomUs, part 1
A backup script for Xen DomUs, part 2

2008/07/25

Xen DomU上でDRBDを使う・その6・ベンチマーク

DRBDデバイス/dev/drbd0に直接書込み、速度を測定する。
[root@dc2 ~]# dd bs=64M if=/dev/zero of=/dev/drbd0
dd: writing `/dev/drbd0': No space left on device
64+0 records in
63+0 records out
4294799360 bytes (4.3 GB) copied, 227.723 seconds, 18.9 MB/s
[root@dc2 ~]#
このとき、もう一方のノードdc3の/var/log/messagesには、次のようなメッセージが記録される。この原因は不明。
Jul 24 22:32:08 dc3 kernel: drbd0: local disk flush failed with status -95


この結果を、『その2・DRBD設定前の確認』のときの結果と比較してみよう。DRBDを経由せず、直接/dev/xvdbに書込んだ場合が39.9Mbyte/秒、DRBD経由で/dev/drbd0に書込んだ場合が18.8Mbyte/秒。
/dev/drbd0に書込む場合、/dev/xvdbに書込む場合に比べて、ディスクへの書込みが二倍以上発生する。なぜなら、/dev/drbd0に書込むということは、dc2上の/dev/xvdbとdc3上の/dev/xvdbの両方にデータ書込んだ上で、メタデータも書込むからだ。これらの書込みは結局、Dom0上の同一ディスクへの書込みとなるため直列化され、倍以上の時間が掛かっていると考えられる。

この結果より、/etc/drbd.confで設定した「rate 5M」は、初期同期の場合には効いているが、通常のディスクアクセス時には効いていない事も解る。


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク

Xen DomU上でDRBDを使う・その5・初期同期

両ノードdc[23]で設定およびDRBDリソースの初期化を行った時点では、ディスクの同期が取れていない不一致(Inconsistent)状態にある。これを解消するため、『The initial device synchronization』に従い、初期同期を行う。
初期同期コマンドは、dc[23]のどちらか一方からのみ実行すればよい。もし、有効なデータがどちらかにのみ入っている場合は、そのノードで実行する。そうでない場合は、どちらで実行してもよい。
[root@dc3 ~]# drbdadm -- --overwrite-data-of-peer primary r0
drbd0: Forced to consider local data as UpToDate!
[root@dc3 ~]#
しばらく待って/proc/drbdを確認する。
[root@dc3 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-bui
ld, 2008-06-26 16:40:54
0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
ns:8976 nr:0 dw:0 dr:8976 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:4185164
[>....................] sync'ed:  0.3% (4185164/4194140)K
finish: 4:04:08 speed: 244 (240) K/sec
[root@dc3 ~]#
同期速度が、直近244Kbyte/秒、平均240Kbyte/秒しか出ていない(しつこいようだが、Mbpsではないことに注意)。「rate 5M」と設定したので、5Mbyte/秒出るはずだが、どうもデフォルト値の250Kbyte/秒(『Appendix A. DRBD system manual pages』参照)が適用されているようだ。
これを回避するために、設定を再読み込みさせる。
[root@dc3 ~]# drbdadm adjust r0
[root@dc3 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-bui
ld, 2008-06-26 16:40:54
0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
ns:86320 nr:0 dw:0 dr:86320 al:0 bm:5 lo:60 pe:68 ua:60 ap:0 oos:4108092
[>....................] sync'ed:  2.2% (4108092/4194140)K
finish: 0:12:43 speed: 5,344 (1,244) K/sec
[root@dc3 ~]#
設定の通り、5Mbyte/秒に近い数字が出ている。これは、dc2側でも実行する。
しばらくすると同期が完了する。ログ/var/log/messagesを確認する。
Jul 24 22:14:33 dc2 kernel: drbd0: peer( Secondary -> Primary ) pdsk( Inconsistent -> UpToDate )
Jul 24 22:14:33 dc2 kernel: drbd0: Writing meta data super block now.
Jul 24 22:14:33 dc2 kernel: drbd0: Becoming sync target due to disk states.
Jul 24 22:14:33 dc2 kernel: drbd0: Writing the whole bitmap, full sync required after drbd_sync_handshake.
Jul 24 22:14:33 dc2 kernel: drbd0: Writing meta data super block now.
Jul 24 22:14:33 dc2 kernel: drbd0: writing of bitmap took 0 jiffies
Jul 24 22:14:33 dc2 kernel: drbd0: 4096 MB (1048535 bits) marked out-of-sync by on disk bit-map.
Jul 24 22:14:33 dc2 kernel: drbd0: Writing meta data super block now.
Jul 24 22:14:33 dc2 kernel: drbd0: conn( Connected -> WFBitMapT )
Jul 24 22:14:33 dc2 kernel: drbd0: conn( WFBitMapT -> WFSyncUUID )
Jul 24 22:14:33 dc2 kernel: drbd0: helper command: /sbin/drbdadm before-resync-target
Jul 24 22:14:33 dc2 kernel: drbd0: conn( WFSyncUUID -> SyncTarget )
Jul 24 22:14:33 dc2 kernel: drbd0: Began resync as SyncTarget (will sync 4194140 KB [1048535 bits set]).
Jul 24 22:14:33 dc2 kernel: drbd0: Writing meta data super block now.
Jul 24 22:16:09 dc2 kernel: drbd0: Writing meta data super block now.
Jul 24 22:29:06 dc2 kernel: drbd0: Resync done (total 872 sec; paused 0 sec; 4808 K/sec)
Jul 24 22:29:06 dc2 kernel: drbd0: conn( SyncTarget -> Connected ) disk( Inconsistent -> UpToDate )
Jul 24 22:29:06 dc2 kernel: drbd0: helper command: /sbin/drbdadm after-resync-target
Jul 24 22:29:06 dc2 kernel: drbd0: Writing meta data super block now.
4,194,140KBの同期に14分33秒掛かっている。およそ4.7Mbyte/秒で、ほぼ設定値の通り。
この時点では、dc3がprimaryとなっているが、dual-primaryモードで設定しているので、dc2もprimaryへ切り替える。
[root@dc2 ~]# drbdadm primary r0
[root@dc2 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-bui
ld, 2008-06-26 16:40:54
0: cs:Connected st:Primary/Primary ds:UpToDate/UpToDate C r---
ns:0 nr:4194140 dw:4194140 dr:0 al:0 bm:256 lo:0 pe:0 ua:0 ap:0 oos:0
[root@dc2 ~]#


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク

Xen DomU上でDRBDを使う・その4・DRBDの初期化

Enabling your resource for the first time』に従ってDRBDリソースr0を初期化する。まず、dc2から作業する。
[root@dc2 ~]# drbdadm create-md r0
v08 Magic number not found
v07 Magic number not found
v07 Magic number not found
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
[root@dc2 ~]# drbdadm attach r0
drbd0: No usable activity log found.
drbd0: Barriers not supported on meta data device - disabling
[root@dc2 ~]# drbdadm connect r0
[root@dc2 ~]# 
この時点では、dc3が初期化されていないため、接続が完了しないことを確認する。
[root@dc2 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-bui
ld, 2008-06-26 16:40:54
0: cs:WFConnection st:Secondary/Unknown ds:Inconsistent/DUnknown C r---
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:4194140
[root@dc2 ~]#
以下のことが判る。
  • 接続状態(cs)が接続待ち(WFConnection)、
  • ロール(st)は、自分自身(dc2)がSecondary、相手(dc3)が不明(Unknown)
  • ディスク状態(ds)は、自分自身(dc2)が不一致、相手(dc3)が不明

続いて、dc3を初期化する。
[root@dc3 ~]# drbdadm create-md r0
v08 Magic number not found
v07 Magic number not found
v07 Magic number not found
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
[root@dc3 ~]# drbdadm attach r0
drbd0: No usable activity log found.
drbd0: Barriers not supported on meta data device - disabling
[root@dc3 ~]# drbdadm connect r0
[root@dc3 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-bui
ld, 2008-06-26 16:40:54
0: cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C r---
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:4194140
[root@dc3 ~]#
この時点では、dc[23]の両方が初期化されているため、通信状態(cs)が確立(Connected)となっている。両ノードともロール(st)がSecondaryで、ディスク状態(ds)が不一致(Inconsistent)となっている。


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク

Xen DomU上でDRBDを使う・その3・drbd.confの設定

各DomU dc[23]上の/etc/drbd.confを以下の通り設定する。
global {
usage-count no;
}
common {
protocol C;
}
resource r0 {
net {
allow-two-primaries;
shared-secret "9wEtE83PFS4xChqY+aT";
}
startup {
become-primary-on both;
}
syncer {
rate 5M;
verify-alg sha1;
}
device    /dev/drbd0;
disk      /dev/xvdb;
meta-disk internal;
on dc2.xencluster {
address   192.168.56.8:7789;
}
on dc3.xencluster {
address   192.168.56.9:7789;
}
}
設定内容は以下の通り。
  • リソースr0を定義。dc[23]からアクセスされる。
  • 両ノードが同時にprimaryになることができる(allow-two-primaries)。
  • ネットワーク接続時の認証のためのパスワードを設定している(shared-secret)。
  • 起動時に、両ノードがprimaryとなる(become-primary-on)。
  • 同期速度は5Mbyte/秒(rate)。単位がMbpsでないことに注意。
  • 両ノードとも、低レベルデバイスは/dev/xvdb(disk)、DRBDデバイスは/dev/drbd0(device)。
  • メタデータ形式はinternal(meta-disk)。つまり、/dev/xvdb内にメタデータを持つ。
  • dc[23]はそれぞれ、192.168.56.[89]の7789/tcpで接続を待つ。

なお、各ノードの設定の共通部分(disk、deviceおよびmeta-disk)をまとめて記述できるのは、DRBD 8.2系から。RPM package drbd82-xenではなくdrbd-xenをインストールしている場合は、これらの設定は、on ノード名節の中でそれぞれ記述する。


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク

Xen DomU上でDRBDを使う・その2・DRBD設定前の確認

各DomU dc[23]上には、OSイメージが格納されている/dev/xvdaの他に、/dev/xvdbが見えている。
[root@dc2 ~]# ls -l /dev/xvd*
brw-r----- 1 root disk 202,  0 Jul 24 21:41 /dev/xvda
brw-r----- 1 root disk 202,  1 Jul 24 21:41 /dev/xvda1
brw-r----- 1 root disk 202,  2 Jul 24 21:41 /dev/xvda2
brw-r----- 1 root disk 202, 16 Jul 24 21:41 /dev/xvdb
[root@dc2 ~]#
OSインストール直後は、DRBDの設定が行われていないため、/proc/drbdにはリソースが何も表示されない。
[root@dc2 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-bui
ld, 2008-06-26 16:40:54
[root@dc2 ~]#
この状態で、/dev/xvdbに対する書き込み速度を計測する。
[root@dc2 ~]# dd bs=64M if=/dev/zero of=/dev/xvdb
dd: writing `/dev/xvdb': No space left on device
65+0 records in
64+0 records out
4294967296 bytes (4.3 GB) copied, 107.757 seconds, 39.9 MB/s
[root@dc2 ~]#
[root@dc3 ~]# dd bs=64M if=/dev/zero of=/dev/xvdb
dd: writing `/dev/xvdb': No space left on device
65+0 records in
64+0 records out
4294967296 bytes (4.3 GB) copied, 107.6 seconds, 39.9 MB/s
[root@dc3 ~]#
ほぼ40Mbyte/秒の速度が出ている。単位がMbpsではないことに注意。


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク

Xen DomU上でDRBDを使う・その1・Xen環境の準備

Xen環境構築の詳細については、『Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる』を参照。ここでは、DomUのKickstart設定ファイルを紹介する。以下の点に注意して欲しい。
  • RPMパッケージdrbd82およびkmod-drbd82-xenをインストールする。
  • ファイアウォール設定で、DRBDの通信、TCPポート7788~7799を許可する。

logging --host=192.168.55.32 --level=debug

install
url --url http://Repository.LocalDomain/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.LocalDomain/centos/5/os/i386/
repo --name=updates --baseurl=http://Repository.LocalDomain/centos/5/updates/i386/
repo --name=addons --baseurl=http://Repository.LocalDomain/centos/5/addons/i386/
repo --name=extras --baseurl=http://Repository.LocalDomain/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
-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
drbd82
kmod-drbd82-xen
-kmod-drbd82

%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.LocalDomain/' < /etc/yum.repos.d/CentOS-Base.repo.dist > /etc/yum.repos.d/CentOS-Base.repo

### For Cluster
##### /etc/cluster/fence_xvm.key
/usr/bin/base64 -di > /etc/cluster/fence_xvm.key <<EOL
Atf+JoYSVwnPqBR8vnbG68EaY/Y4sr570YywcWXUcsZD6BwQAMA0x62YIMSlHArX60JzvNeh95x7
<<略>>
EN00EFaiso4dDtVaX2RYJf30RExW4E312yu+XwoXjrES0uLIK33p0HToOXUX3RjsCqYuM7ulE5iD
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 -p tcp -m tcp --dport 7788:7799 -i eth1 -s 192.168.56.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 7788:7799 -i eth2 -s 192.168.57.0/24 -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', \`SmtpServer.LocalDomain')dnl
EOL
(cd /etc/mail; /usr/bin/make sendmail.cf)

##### /etc/aliases
/usr/bin/patch /etc/aliases <<EOL
96c96
< #root:             marc
---
> root:              root@LocalDomain
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@LocalDomain

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
/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
/bin/cp -p /etc/bashrc /etc/bashrc.dist
/bin/sed 's/xterm\*)/xterm*|vt100*)/' < /etc/bashrc.dist > /etc/bashrc
この設定を元に、Xen DomU dc0を作成する。
# virt-install --name=dc0 --ram=256 --file=/dev/VolGroupXX/LogVolDc0 --mac='00:16:3e:1d:91:00' --bridge=br4000 --nographics --location='http://Repository.LocalDomain/centos/5/os/i386' --extra-args='ks=http://Repository.LocalDomain/centos/conf/DomU-DRBD-ks.cfg'
DomU dc0のインストールが完了したら、LV(logical volume, 論理ボリューム) /dev/VolGroupXX/LogVolDc0を元にDomU dc[23]用のLVをスナップショットLVとして作成する(『XenとLVM・その3・スナップショットLVの利用』参照)
# lvcreate --snapshot --size=1G --name=LogVolDc2 /dev/VolGroupXX/LogVolDc0
Logical volume "LogVolDc2" created
# lvcreate --snapshot --size=1G --name=LogVolDc3 /dev/VolGroupXX/LogVolDc0
Logical volume "LogVolDc3" created
#
続いて、dc[23]に/dev/xvdbとしてエクスポートするためのLVを作成する。
# lvcreate --size=4G --name=LogVolR0-2 /dev/VolGroupXX
Logical volume "LogVolR0-2" created
# lvcreate --size=4G --name=LogVolR0-3 /dev/VolGroupXX
Logical volume "LogVolR0-3" created
#
DomU dc2の設定ファイル/etc/xen/dc2は以下の通り。
name = "dc2"
uuid = "3cc1d59c-b2b1-42a6-b31a-35be18db188d"
maxmem = 512
memory = 256
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [  ]
disk = [ "phy:/dev/VolGroupXX/LogVolDc2,xvda,w",
"phy:/dev/VolGroupXX/LogVolR0-2,xvdb,w" ]
vif = [ "mac=00:16:3e:1d:91:02,bridge=br4000",
"mac=00:16:3e:1d:92:02,bridge=br4001",
"mac=00:16:3e:1d:93:02,bridge=br4002" ]
DomU dc2を起動する。
# xm create -c dc2
<<略>>
INIT: version 2.86 booting
Welcome to  CentOS release 5.2 (Final)
Press 'I' to enter interactive startup.
<<略>>
Starting DRBD resources:    no resources defined!
no resources defined!
[ ]no resources defined!
.
no resources defined!
no resources defined!
[  OK  ]
<<略>>

CentOS release 5.2 (Final)
Kernel 2.6.18-92.1.6.el5xen on an i686

dc2.LocalDomain login:
DRBDの設定を行っていないため、その旨警告メッセージが表示されている。DomU dc3についても同様に作業する。


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク

2008/07/23

Xen DomU上でDRBDを使う・その0・概要

DRBDは、ネットワーク越しにディスクのミラーリング(RAID1)を実現するソフトウェア。Xen DomU上でこの動作検証を行う。以下は今回検証環境の概念図。

今回は、『The DRBD User's Guide』の『Chapter 5. Configuring DRBD』を実行・検証する。
CentOSのRPMパッケージには、drbd 8.0系であるdrbdおよびkmod-drbd-xenと、8.2系であるdrbd82およびkmod-drbd82がある。今回は、8.2系を使用する。
検証内容は以下の通り。
  • Xen Dom0 fs1上にDomU dc[23]を作成する。
  • DomU dc[23]に対して、それぞれDom0 fs1上のLV(logical volume, 論理ボリューム) LogVolR0-[23]を/dev/xvdbとして与える。
  • DomU dc[23]上で、/dev/xvdbを低レベルデバイスとするDRBD /dev/drbd0を作成する。
  • /dev/xvdbおよび/dev/xvdbに対する書き込み速度を比較する。
なお、CentOS5では、DRBDはextra扱いであり、実用システムに適用すべきではないかもしれない。


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク

2008/06/03

パスワードを紛失したDomUをリカバリ

DomUのパスワードを忘れてしまった場合の復旧作業のメモ。
簡単に言うと、当該DomUのイメージファイルなり論理ボリューム(logical volmume, LV)をマウントし、/etc/shadowを編集すればよい。DomUで論理ボリュームを使用している場合、Dom0と同じボリュームグループ(volume group, VG)名だと面倒なことになる(『LVMをXenを使ってサルベージする』参照)ため、Dom0のVG名は、事前にVolGroup00ではなく、例えばVolGroupXX等に変更しておく。以下、Dom0上で作業する。
# kpartx -a /dev/VolGroupXX/LVNAME
# pvscan
PV /dev/mapper/LVNAME VG VolGroup00 lvm2 [3.88 GB / 0 free]
PV /dev/sda2 VG VolGroupXX lvm2 [135.47 GB / 91.53 GB free]
Total: 2 [139.34 GB] / in use: 2 [139.34 GB] / in no VG: 0 [0 ]
# vgchange -ay VolGroup00
2 logical volume(s) in volume group "VolGroup00" now active
# mkdir /mnt/root
# mount /dev/VolGroup00/LogVol00 /mnt/root
#
ここで、/mnt/root/etc/shadow(DomUの/etc/shadow)を適宜編集する。このファイル中のパスワードフィールドは、以下の手順で生成することができる。
$ openssl passwd -1
Password: パスワード
Verifying - Password: パスワード
$1$mvOZS5mn$TbBh6lcKrGn.y5Hvzk/MK.
$
編集後、後始末する。
# umount /mnt/root
# vgchange -an VolGroup00
0 logical volume(s) in volume group "VolGroup00" now active
# kpartx -d /dev/VolGroupXX/LVNAME
#

2008/04/02

RHCS: iSCSI, DM-MP, CLVM and GFS・その9・考察

これまで、iSCSIを用いて二本の経路で共有されたブロックデバイスをCLVMで論理ボリュームとして扱い、その論理ボリュームをGFS2でフォーマットし、マウントする手順について述べた。この構成では、iSCSIターゲット=イニシエータ間のパスが複数存在するので、この間の接続が信頼性の急所(single point of failure)にならない。ここまでは、『その1・概要』および『その5・Device-Mapper Multipathの設定』で述べた通り。

ただし、今回の構成には、問題点がある。
  • クラスタcDomUsのメンバ、dc[123]が仮想マシンフェンス(XVMフェンス)された場合、システム起動されても、iSCSIの接続は復旧しない。この場合、VGcDomUs00やLVGFS00は認識されず、GFS2ファイルシステムはマウントされない。
  • iSCSIターゲット=イニシエータ間のパスが何らかの不具合で一時的に切断された場合、その後障害が復旧しても、当該パスは自動的に復旧しない。
iSCSIターゲット用RPMパッケージscsi-target-utilsの不具合によるものだ。この不具合は、『その4・iSCSIイニシエータの設定』で以下の通り述べた。
ターゲット側で使用するscsi-target-utilsで提供されるサービスtgtdは、同一パス・同一イニシエータ名でのセッションでの多重接続を拒否する。従って、イニシエータ側では、ユニークなイニシエータ名を使用する必要がある。
また、tgtdは、イニシエータが正常なログアウト処理を行わずに停止した場合、そのイニシエータに対するセッションを保持し続ける。このイニシエータが再起動され、ターゲットにログインしようとすると、ターゲット側には同一パス・同一イニシエータ名のセッションが残っているため、ターゲットはこのログインを拒否する。このため、このイニシエータはストレージにアクセスできなくなってしまう。
従って、少なくとも現時点では、CentOS 5をiSCSIターゲットとしたシステムでは、Device-Mapper Multipathの利点を活かしきれない。


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

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・考察