高信頼化システム監視機能 HAモニタ Linux(R)編
共有ディスクの設定は,共有ディスクをLVMで切り替えるか,HA Boosterで切り替えるかによって異なります。次に,設定の概要を示します。
表6-5 共有ディスクの設定の概要
| 必要な設定 | 共有ディスクの切り替え方法 | 備考 | ||
|---|---|---|---|---|
| LVMまたはLVM2 | HA Booster | |||
| ボリュームグループの設定 | ボリュームグループの作成 | 切り替えるボリュームグループを作成します。 | 制御グループを構成するボリュームグループを作成します。※ | 「(1) ボリュームグループの設定」を参照してください。 |
| /etc/rc.sysinitファイルの編集 | システム起動時に自動的に参照+更新接続しないように設定します。 | システム起動時に自動的に参照+更新接続するように設定します。※ | ||
| HA Boosterの制御グループの設定 | 設定は不要です。 | 設定します。 | 「(2) HA Boosterの制御グループの設定」を参照してください。 | |
| ファイルシステムの設定 | 設定します。 | 設定します。 | ファイルシステムを切り替える場合に必要です。 「(3) ファイルシステムの設定」を参照してください。 |
|
| キャラクタ型スペシャルファイルの設定 |
|
システム起動時にバインドするように設定します。 | キャラクタ型スペシャルファイルを切り替える場合に必要です。 「(4) キャラクタ型スペシャルファイルの設定」を参照してください。 |
|
注※ LVMまたはLVM2と併用する場合に該当します。
共有ディスクの切り替えは,ボリュームグループ単位で実行されるため,システム管理者はOSのコマンドでボリュームグループを作成する必要があります。
ボリュームグループを作成するときは,次の事項に従ってください。
HA Boosterを使用する場合,制御グループ単位で共有ディスクを切り替えます。LVMまたはLVM2と併用する場合,この制御グループを構成するボリュームグループを作成します。HA Boosterが管理するボリュームグループについては,システム起動時,自動的に参照+更新接続する設定にする必要があります。/etc/rc.sysinitファイルを編集してください。
/etc/rc.sysinitファイルの編集について,それぞれ次に示します。
以降に,/etc/rc.sysinitファイルの編集例を示します。
LVMを使用する場合の/etc/rc.sysinitファイルの編集例を示します。
OSがRed Hat Enterprise Linux AS 3.5の場合の例を次に示します。
・
・
if [ -e /proc/lvm -a -x /sbin/vgchange ]; then
action $"Setting up Logical Volume Management:" /sbin/vgscan && /sbin/vgchange -a y
fi
・
・
if [ -e /proc/lvm -a -x /sbin/vgchange -a -f /etc/lvmtab ]; then
action $"Setting up Logical Volume Management:" /sbin/vgscan && /sbin/vgchange -a y
fi
・
・
|
・
・
if [ -e /proc/lvm -a -x /sbin/vgchange ]; then
# action $"Setting up Logical Volume Management:" /sbin/vgscan && /sbin/vgchange -a y
action $"Setting up Logical Volume Management:" /sbin/vgscan
fi
・
・
if [ -e /proc/lvm -a -x /sbin/vgchange -a -f /etc/lvmtab ]; then
# action $"Setting up Logical Volume Management:" /sbin/vgscan && /sbin/vgchange -a y
action $"Setting up Logical Volume Management:" /sbin/vgscan
fi
・
・
|
・
・
if [ -e /proc/lvm -a -x /sbin/vgchange ]; then
# action $"Setting up Logical Volume Management:" /sbin/vgscan && /sbin/vgchange -a y
action $"Setting up Logical Volume Management:" /sbin/vgscan
/sbin/vgchange -a y vg01
/sbin/vgchange -a y vg02
fi
・
・
if [ -e /proc/lvm -a -x /sbin/vgchange -a -f /etc/lvmtab ]; then
# action $"Setting up Logical Volume Management:" /sbin/vgscan && /sbin/vgchange -a y
action $"Setting up Logical Volume Management:" /sbin/vgscan
/sbin/vgchange -a y vg01
/sbin/vgchange -a y vg02
fi
・
・
|
LVM2を使用する場合の/etc/rc.sysinitファイルの編集例を示します。
OSがRed Hat Enterprise Linux AS 4.7の場合の例を次に示します。
・
・
if [ -x /sbin/lvm.static ]; then
action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailure
fi
・
・
if [ -x /sbin/lvm.static ]; then
action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailure
fi
・
・
if [ -x /sbin/lvm.static ]; then
action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailure
fi
・
・
|
・
・
if [ -x /sbin/lvm.static ]; then
# action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailure
:
fi
・
・
if [ -x /sbin/lvm.static ]; then
# action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailure
:
fi
・
・
if [ -x /sbin/lvm.static ]; then
# action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailure
:
fi
・
・
|
・
・
if [ -x /sbin/lvm.static ]; then
# action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailure
/sbin/lvm.static vgchange -a y vg01 --ignorelockingfailure
/sbin/lvm.static vgchange -a y vg02 --ignorelockingfailure
fi
・
・
if [ -x /sbin/lvm.static ]; then
# action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailure
/sbin/lvm.static vgchange -a y vg01 --ignorelockingfailure
/sbin/lvm.static vgchange -a y vg02 --ignorelockingfailure
fi
・
・
if [ -x /sbin/lvm.static ]; then
# action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailure
/sbin/lvm.static vgchange -a y vg01 --ignorelockingfailure
/sbin/lvm.static vgchange -a y vg02 --ignorelockingfailure
fi
・
・
|
OSがRed Hat Enterprise Linux 5.3の場合の例を次に示します。
・
・
if [ -x /sbin/lvm.static ]; then
action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailure
fi
・
・
|
・
・
if [ -x /sbin/lvm.static ]; then
# action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailure
:
fi
・
・
|
・
・
if [ -x /sbin/lvm.static ]; then
# action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailure
/sbin/lvm.static vgchange -a y vg01 --ignorelockingfailure
/sbin/lvm.static vgchange -a y vg02 --ignorelockingfailure
fi
・
・
|
OSがRed Hat Enterprise Linux 6.1の場合の例を次に示します。
・
・
if [ -x /sbin/lvm ]; then
action $"Setting up Logical Volume Management:" /sbin/lvm vgchange -a y --sysinit
:
fi
・
・
|
・
・
if [ -x /sbin/lvm ]; then
# action $"Setting up Logical Volume Management:" /sbin/lvm vgchange -a y --sysinit
:
fi
・
・
|
・
・
if [ -x /sbin/lvm ]; then
# action $"Setting up Logical Volume Management:" /sbin/lvm vgchange -a y --sysinit
/sbin/lvm vgchange -a y vg01 --sysinit
/sbin/lvm vgchange -a y vg02 --sysinit
:
fi
・
・
|
HA Boosterを使用する場合,制御グループ単位で共有ディスクを切り替えます。HAモニタは,制御グループのアクセス権限をサーバ単位で変更することで,共有ディスクを制御します。
HA Boosterの制御グループには,ディスクデバイスを登録します。サーバごとに,制御グループを独立させてください。制御グループへの登録方法については,HA Booster関連のドキュメントを参照してください。
なお,LVMまたはLVM2による切り替えだけを使用し,HA Boosterによる切り替えを使用しない場合は,この設定は不要です。
共有ディスク上のファイルシステムを使用する場合,OSに対してファイルシステムの設定をする必要があります。
ファイルシステムの切り替え制御では,HAモニタがマウント・アンマウントします。したがって,システム起動時に自動的にマウントしないように設定してください。設定方法は,OSのマニュアルを参照してください。
HAモニタが制御するファイルシステムを/etc/fstabファイルに指定する場合,第3フィールド(ファイルシステムタイプ)には,"ignore"を指定しないでください。"ignore"を指定した場合,HAモニタが実行するfsckコマンドが失敗し,ファイルシステムを使用できないことがあります。
キャラクタ型スペシャルファイルは,使用する条件によってバインド・アンバインドの要否やタイミングが異なります。
キャラクタ型スペシャルファイルを使用する条件と,バインド・アンバインドの要否を,次の表に示します。
表6-6 キャラクタ型スペシャルファイルを使用する条件と,バインドまたはアンバインドの要否
| キャラクタ型スペシャルファイルを 使用する条件 |
バインド・アンバインドの要否 | |
|---|---|---|
| HA Boosterが管理する制御グループにない共有ディスク上 | LVM | システム起動時にキャラクタ型スペシャルファイルをバインドします。アンバインドは不要です。 |
| LVM2 | システム起動時ではなく,ボリュームグループに参照+更新接続をした時点でバインドし,ボリューブムグループの切り離しをした時点でアンバインドします。HAモニタのユーザコマンドで設定します。 また,ボリュームグループを切り離す前にアンバインドする必要があるため,HAモニタの環境設定,およびサーバ対応の環境設定のdeviceoff_orderオペランド※にreverseを設定する必要があります。 キャラクタ型スペシャルファイルを使用するすべてのサーバに対して設定してください。 |
|
| HA Boosterが管理する制御グループにある共有ディスク上 | システム起動時に,次のファイルなどを用いてキャラクタ型スペシャルファイルをバインドします。アンバインドは不要です。
|
|
以降に,キャラクタ型スペシャルファイルの設定に関するユーザコマンドについて説明します。ユーザコマンドの作成方法についての詳細は,「6.16 ユーザコマンドの作成」を参照してください。
次のタイミングでOSのrawコマンドが発行されるよう,ユーザコマンドを設定します。
サーバ(LinuxTP1)に対して,共有ディスク上(/dev/vg10)でキャラクタ型スペシャルファイル(/dev/raw/raw1)を論理ボリューム(lvol0)にバインドする場合の,ユーザコマンドのコーディング例を次に示します。
このコーディング例は,サンプルファイルとしてHAモニタのサンプルファイル用ディレクトリの下に,usrcommand_raw_bindのファイル名で格納されています。
# サーバ識別名の定義
SERV="LinuxTP1" # サーバ識別名:LinuxTP1
# デバイス名称の定義
RAW_NAME="/dev/raw/raw1" # rawデバイス名称
DEV_NAME="/dev/vg10/lvol0" # 共有ディスク上の論理ボリューム名称
# rawデバイスをアンバインドする
func_unbind(){
# デバイスが存在しなくなるまで待つ
COUNT=0
while [ \( ${COUNT} -lt 10 \) -a \( -e "$1" \)]
do
# rawデバイスを使用中のプロセスを強制終了する
fuser -k "$1" >/dev/null 2>&1
# コマンドの処理が完了するのを1秒待つ
sleep 1
# デバイスのアンバインド
raw "$1" 0 0
COUNT=`expr ${COUNT} + 1`
done
}
# rawデバイスをバインドする
func_bind(){
# デバイスのバインド
raw "$1" "$2"
# デバイスが使用可能になるまで待つ
COUNT=0
while [ ${COUNT} -lt 10 ]
do
# デバイスへのアクセスを試行し,アクセスできればバインド完了
dd of=/dev/null if="$1" bs=1 count=0 >/dev/null 2>&1
if [ "$?" = 0 ]
then
break
fi
# 1秒sleepしリトライする
sleep 1
COUNT=`expr ${COUNT} + 1`
done
}
# Main
# 実行サーバの起動開始時,または待機サーバの系切り替え開始時に
# rawデバイスをバインドする
# 実行サーバの終了開始時,待機サーバの起動開始時,または待機サーバの
# 系切り替え失敗時にrawデバイスをアンバインドする
PATH=/bin:/usr/bin:/sbin
export PATH
if [ "$2" = "${SERV}" ]
then
if [ "$4" = "online" ]
then
case "$5" in
"-s" ) # 実行サーバの起動
if [ "$6" = "start" ] # 状態変化の開始
then
func_bind ${RAW_NAME} ${DEV_NAME}
fi
;;
"-a" | "-w" | "-o" | "-e" | "-p" ) # 実行サーバの終了
# (サーバ障害,計画系切り替え,
# サーバ障害(系切り替え不可能),
# 正常終了,計画終了)
if [ "$6" = "start" ] # 状態変化の開始
then
func_unbind ${RAW_NAME} ${DEV_NAME}
fi
;;
esac
else
case "$5" in
"-a" | "-h" | "-w" ) # 待機サーバ系切り替え
# (サーバ障害,系障害,計画切り替え)
if [ "$6" = "start" ] # 状態変化の開始
then
func_bind ${RAW_NAME} ${DEV_NAME}
fi
;;
"-s" | "-f" ) # 待機サーバ起動,または系切り替え失敗
if [ "$6" = "start" ] # 状態変化の開始
then
func_unbind ${RAW_NAME} ${DEV_NAME}
fi
;;
esac
fi
fi
|
このコーディング例では,実行サーバ起動時の実行系,または系切り替え時の系切り替え先の系でfunc_bindを実行し,キャラクタ型スペシャルファイルのバインドをしています。また,実行サーバ終了時の実行系,待機サーバ起動時の待機系,または系切り替え失敗時の系切り替えに失敗した待機系でfunc_unbindを実行し,キャラクタ型スペシャルファイルのアンバインドをしています。
func_bindでは,rawコマンドでキャラクタ型スペシャルファイルのバインドを実行します。そのあとに,キャラクタ型スペシャルファイルがアクセス可能になるまで,次の処理を1秒間隔で10回リトライしています。
func_unbindでは,キャラクタ型スペシャルファイルがアンバインドするまで,次の処理を1秒間隔で10回リトライしています。
All Rights Reserved. Copyright (C) 2005, 2012, Hitachi, Ltd.