7.5.8 共有ディスクの障害に対処する
共有リソースの設定や操作を誤ると,ゴーストディスクが作成されてvaryonvgコマンドが失敗します。この場合,ゴーストディスクを削除し,元のディスクを再構成します。ゴーストディスクを見つけるには,検索するためのシェルを作成しておく方法や,OSのコマンドを使用してディスクの一覧を表示する方法があります。
ここでは,ゴーストディスクが作成された場合の対処方法,およびゴーストディスクの判別方法について説明します。
(1) ゴーストディスクが作成された場合の対処方法
ゴーストディスクが見つかった系を自系,それ以外の系を他系とし,作成された場合の対処方法を説明します。
なお,共有リソースを操作するときの注意については,「7.2.3 共有リソースをメンテナンスするときの注意事項」を参照してください。これらの注意に従わないと,共有リソースが破壊されたり,系切り替えができなかったりするおそれがあります。
-
オンライン状態のボリュームグループを,他系でオフライン化する。
varyoffvgコマンドを使用してオフライン化します。
-
自系でゴーストディスクを削除する。
ゴーストディスクは,シェルなどで検索して判別し,削除してください。
ゴーストディスクを判別する方法については「(2) ゴーストディスクの判別方法」を参照してください。
-
自系で元のディスクの再構成をする。
以前使用していたディスクを使用できるようにします。
(2) ゴーストディスクの判別方法
検索したゴーストディスクの判別方法は,対応するSCSI規格によって異なります。対応する規格がSCSI-3およびSCSI-2の場合の,ゴーストディスクの判別方法を次に示します。
SCSI規格 |
判別方法 |
---|---|
SCSI-3 |
次の項目が同じデバイスがゴーストディスクとなります。
|
SCSI-2 |
次の項目が同じデバイスがゴーストディスクとなります。
|
SCSI-3規格対応の場合のゴーストディスクを検索するシェルの例を次に示します。
######################################################################## # # # P-1M2C-1111 AIX HAmonitor # # This is a sample of Retrieval of ghost disk # # All Rights Reserved. Copyright (C) 2007, Hitachi, Ltd. # # # # Usage:find_ghost.sh PV_name # # PV_name:Disk for ghost disk retrieval # # # # function:Retrieval of ghost disk for SCSI-3 # # # ######################################################################## #!/usr/bin/ksh IFS=' ' disk=$1 # Disk for ghost disk retrieval status=`lsdev -C -l $disk -F status` # status location=`lsdev -C -l $disk -F location` # location code parent=`lsdev -C -l $disk -F parent` # parent device lun_id=`lsattr -F value -l $disk -a lun_id` # LUN ID scsi_id=`lsattr -F value -l $disk -a scsi_id` # SCSI ID ww_name=`lsattr -F value -l $disk -a ww_name` # WW name pvid=`getlvodm -p $disk` # get PVID if [ "$pvid" = "00000000000000000000000000000000" ]; then #PVID=0? pvid="None" # Doubt of ghost disk fi echo $disk echo "status = $status" echo "PVID = $pvid" echo "location = $location" echo "parent = $parent" echo "scsi_id = $scsi_id" echo "lun_id = $lun_id" echo "ww_name = $ww_name" echo "" # Variable for ghost disk retrieval g_disk= g_status= g_location= g_parent= g_lun_id= g_scsi_id= g_ww_name= g_pvid= find_ghost=0 #Ghost disk retrieval flag ##################### Retrieval of ghost disk ##################### # Retrieval from the one with the same location code for g_disk in `lsdev -C -c disk | grep $location | awk '{print $1}'` do if [ "$disk" = "$g_disk" ]; then continue fi # It checks whether LUN ID is corresponding. g_lun_id=`lsattr -F value -l $g_disk -a lun_id` if [ "$lun_id" = "$g_lun_id" ]; then # It checks whether other parameters are corresponding # when LUN ID is corresponding everything. g_parent=`lsdev -C -l $g_disk -F parent` # get parent device g_scsi_id=`lsattr -F value -l $g_disk -a scsi_id` # get SCSI ID g_ww_name=`lsattr -F value -l $g_disk -a ww_name` # get WW name # Each value of the disk where the disk for the retrieval # and LUN ID are the same is compared. # For SCSI-3 If all the following are the same, either is ghost disks. if [ "$parent" = "$g_parent" ] && \ # Parents device agreement [ "$scsi_id" = "$g_scsi_id" ] && \ # SCSI ID agreement [ "$ww_name" = "$g_ww_name" ]; then # WW name agreement ###### Find the ghost disk ###### find_ghost=1 g_location=`lsdev -C -l $g_disk -F location` g_status=`lsdev -C -l $g_disk -F status` g_pvid=`getlvodm -p $g_disk` if [ "$g_pvid" = "00000000000000000000000000000000" ]; then g_pvid="None" # ghost disk fi # if pvid!=0 then # the retrieval object is a ghost disk. echo $g_disk echo "status = $g_status" echo "PVID = $g_pvid" echo "location = $g_location" echo "parent = $g_parent" echo "scsi_id = $g_scsi_id" echo "lun_id = $g_lun_id" echo "ww_name = $g_ww_name" echo "" fi fi done if [ $find_ghost -eq 0 ]; then echo "The ghost to $disk was not found." fi