2008/02/25

CMANとXENを組合わせて使う

Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その2・Dom0 fsXのインストール』でさらっと、
サービスcmanの起動スクリプト/etc/init.d/cmanを修正する。これは、xend-config.sxpを変更したこと、および、サービスcmanがサービスxendよりも先に起動されることへの対応。
と書いた。これの解説。

XenとVLAN、CMAN(クラスタ)を併せて使うと、CMANが正常に起動しない、という問題にぶち当たる。これはなぜかというと、CMANのinitスクリプト/etc/init.d/cmanの中で、以下の処理を行っているためだ。
  • Xenネットワーク用スクリプトを検出し、そのスクリプトを用いてXenネットワークをCMAN起動と同時に起動している。しかし、『VLANとXenを組合わせて使う・その3・Xenネットワーク』の修正を適用していると、Xenネットワーク用スクリプトの名前が変わるため、検出に失敗する。
  • コマンドxm listを使って、Xen Dom0かどうかを検査しようとしている。しかし、サービスcman(/etc/rc3.d/S21cman)は、サービスxend(/etc/rc3.d/S98xend)より先に実行されるため、この検査は常に失敗する。
従って、これを修正すべく、以下のパッチを適用している。
156c156
< egrep "^[[:blank:]]*\([[:blank:]]*network-script[[:blank:]]+network-bridge([[:blank:]]*\)|[[:blank:]]+)" /etc/xen/xend-config.sxp >/dev/null 2>/dev/null
---
> egrep "^[[:blank:]]*\([[:blank:]]*network-script[[:blank:]]+network-(|vlan-)bridge(|-wrapper)([[:blank:]]*\)|[[:blank:]]+)" /etc/xen/xend-config.sxp >/dev/null 2>/dev/null
165,166c165,167
< if [ ! -x /etc/xen/scripts/network-bridge ]; then
< if [ -f /etc/xen/scripts/network-bridge ]; then
---
> xen_bridge_script=`egrep "^[[:blank:]]*\([[:blank:]]*network-script[[:blank:]]+network-(|vlan-)bridge(|-wrapper)([[:blank:]]*\)|[[:blank:]]+)" /etc/xen/xend-config.sxp | sed 's/^[[:blank:]]*([[:blank:]]*network-script[[:blank:]]\+\|[[:blank:]]*)[[:blank:]]*//g'`
> if [ ! -x /etc/xen/scripts/$xen_bridge_script ]; then
> if [ -f /etc/xen/scripts/$xen_bridge_script ]; then
176c177
< errmsg=$(/etc/xen/scripts/network-bridge start 2>&1) || return 1
---
> errmsg=$(/etc/xen/scripts/$xen_bridge_script start 2>&1) || return 1
192c193,195
< xm list --long 2> /dev/null | grep -q "Domain-0" || return 1
---
> # The following line is commented out because this check does not
> # work properly before xend is started.
> #xm list --long 2> /dev/null | grep -q "Domain-0" || return 1

0 件のコメント: