バックアップ実行時の後処理のシェルスクリプト名は、以下のとおりです。
クラスタ運用でない場合
/etc/opt/FJSVswsts/sh/OpcBackup.post |
クラスタ運用の場合
/etc/opt/FJSVswsts/<論理ノード名>/sh/OpcBackup.post |
シェルスクリプトの内容は、以下のとおりです。
1: #!/bin/sh 2: 3: # AdvancedCopy Manager 4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2008 5: 6: # 7: # Post-processing of backup processing 8: # 9: # Argument: $1 Device or VG name of transaction disk 10: # $2 Mount point of transaction disk 11: # 12: # Error number 13: # 2: Argument error 14: # 11: mount error 15: # 31: vgcfgrestore error 16: # 12: fsck error 17: 18: # Argument check 19: case $# in 20: 1) 21: ;; 22: 2) 23: ;; 24: *) 25: exit 2 26: ;; 27: esac 28: 29: device=$1 30: mount_point=$2 31: 32: # Determination of postprocessing file name 33: 34: if [ "$SWSTGNODE" != "" ] 35: then 36: swstg_node="/`echo $SWSTGNODE`" 37: else 38: swstg_node="" 39: fi 40: 41: err_log_path="/var/opt/FJSVswsts"$swstg_node"/log" 42: 43: # Device type check 44: trans="`echo $device | /usr/bin/grep -e "/dev/dsk/" -e "/dev/disk/"`" 45: lvmtrans="`echo $device | /usr/bin/grep "/dev/"`" 46: vxpvtrans="`echo $device | /usr/bin/grep "/dev/vx/dmp/"`" 47: if [ "$trans" != "" ] 48: then 49: dev_type="physical" 50: dev="`echo $device | /usr/bin/sed -e "s/\/dev\/dsk\///" -e "s/\/dev\/disk\//_hppv_/"`" 51: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre" 52: fstype_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".fstype" 53: bd_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".bd" 54: elif [ "$vxpvtrans" != "" ] 55: then 56: dev_type="vxvm_pv" 57: # /dev/vx/dmp/XXXX -> XXXX 58: dev="`echo $device | /usr/bin/awk -F\/ '{ print $5 }'`" 59: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre" 60: fstype_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".fstype" 61: bd_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".bd" 62: elif [ "$lvmtrans" != "" ] 63: then 64: dev_type="logical" 65: # /dev/vgXX -> vgXX 66: dev="`echo $device | /usr/bin/awk -F\/ '{ print $3 }'`" 67: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre" 68: fstype_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".fstype" 69: bd_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".bd" 70: else 71: exit 0 72: fi 73: 74: # Confirmation of postprocessing 75: if [ ! -r $post_file ] 76: then 77: exit 0 78: fi 79: post="`/usr/bin/cat $post_file`" 80: 81: # Confirmation of FStype 82: if [ ! -r $fstype_file ] 83: then 84: fs="" 85: else 86: fs="`/usr/bin/cat $fstype_file`" 87: fi 88: 89: # Restore VG Configuration 90: if [ -r $bd_file ] 91: then 92: bk_device="`/usr/bin/cat $bd_file`" 93: bk_trans="`echo $bk_device | /usr/bin/grep -e "/dev/dsk/" -e "/dev/disk/"`" 94: bk_lvmtrans="`echo $bk_device | /usr/bin/grep "/dev/"`" 95: bk_vxpvtrans="`echo $bk_device | /usr/bin/grep "/dev/vx/dmp/"`" 96: if [ "$bk_trans" = "" -a "$bk_lvmtrans" != "" -a "$bk_vxpvtrans" = "" ] 97: then 98: bk_vg_name="`echo $bk_device |/usr/bin/awk -F\/ '{ print $3 }'`" 99: cfg_file="/etc/lvmconf/"$bk_vg_name".conf" 100: if [ ! -r $cfg_file ] 101: then 102: exit 31 103: fi 104: bk_pv_rname="`/usr/sbin/vgcfgrestore -n $bk_device -l 2> /dev/null |/usr/bin/awk '{print $1}' | /usr/bin/grep -e \"/dev/rdsk\" -e \"/dev/rdisk\"`" 105: if [ "$bk_pv_rname" = "" ] 106: then 107: echo "NULL: /usr/sbin/vgcfgrestore -n $bk_device -l 2> /dev/null |/usr/bin/awk '{print $1}' | /usr/bin/grep -e \"/dev/rdsk\" -e \"/dev/rdisk\"" > $err_log_path/$dev.vgcfgrestore 108: exit 31 109: fi 110: /usr/sbin/vgchange -a n $bk_device > /dev/null 2>&1 111: reststatus=0 112: for bk_pv_rname1 in $bk_pv_rname 113: do 114: /usr/sbin/vgcfgrestore -n $bk_device $bk_pv_rname1 > /dev/null 2>&1 115: if [ $? != 0 ] 116: then 117: /usr/sbin/vgcfgrestore -n $bk_device $bk_pv_rname1 >> $err_log_path/$dev.vgcfgrestore 2>&1 118: fi 119: if [ $? = 0 ] 120: then 121: /usr/bin/rm -f $err_log_path/$dev.vgcfgrestore 122: reststatus=1 123: break 124: fi 125: done 126: if [ "$SWSTGNODE" != "" ] 127: then 128: /usr/sbin/vgchange -c y $bk_device > /dev/null 2>&1 129: /usr/sbin/vgchange -a e $bk_device > /dev/null 2>&1 130: else 131: /usr/sbin/vgchange -a y $bk_device > /dev/null 2>&1 132: fi 133: if [ $reststatus = 0 ] 134: then 135: exit 31 136: fi 137: fi 138: fi 139: 140: # No processing 141: # When device was not mounted --- 3 142: # When devices of volume group was not mounted --- 6 143: # When the transaction disk is a VxVM physical volume --- 7 144: if [ "$post" = "none" ] 145: then 146: /usr/bin/rm -rf $post_file 2> /dev/null 147: /usr/bin/rm -rf $fstype_file 2> /dev/null 148: /usr/bin/rm -rf $bd_file 2> /dev/null 149: exit 0 150: fi 151: 152: # mount processing 153: if [ "$post" = "mount" ] 154: then 155: 156: # When device can be unmounted --- 2 157: if [ "$dev_type" = "physical" ] 158: then 159: /usr/bin/df -l $device > /dev/null 2>&1 160: if [ $? != 0 ] 161: then 162: if [ ! -r $fstype_file ] 163: then 164: /usr/sbin/mount $device $mount_point 2> /dev/null 165: else 166: if [ "$fs" = "" ] 167: then 168: /usr/sbin/mount $device $mount_point 2> /dev/null 169: else 170: /usr/sbin/mount -F $fs $device $mount_point 2> /dev/null 171: fi 172: fi 173: if [ $? != 0 ] 174: then 175: retry_count=3 176: sleep_time=1 177: result_flag=1 178: 179: while [ $retry_count -gt 0 ] 180: do 181: if [ ! -r $fstype_file ] 182: then 183: /usr/sbin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1 184: else 185: if [ "$fs" = "" ] 186: then 187: /usr/sbin/mount $device $mount_point > $err_log_path/$dev.mount 2>&1 188: else 189: /usr/sbin/mount -F $fs $device $mount_point > $err_log_path/$dev.mount 2>&1 190: fi 191: fi 192: if [ $? != 0 ] 193: then 194: retry_count=`expr $retry_count - 1` 195: /usr/bin/sleep $sleep_time 196: else 197: /usr/bin/rm -f $err_log_path/$dev.mount 198: result_flag=0 199: break 200: fi 201: done 202: 203: if [ $result_flag != 0 ] 204: then 205: exit 11 206: fi 207: fi 208: fi 209: # elif [ "$dev_type" = "logical" ] 210: # then 211: # 212: # When devices of volume group can be unmounted --- 5 213: # # Specify the name of volume group to mount 214: # if [ "$device" = "/dev/vgXX" ] 215: # then 216: # # Mount all logical volumes of the volume group 217: # fs="hfs" 218: # lvname="/dev/vgXX/XXXXX" 219: # lv_mount_point="/XX" 220: # 221: # /usr/bin/df -l $lvname > /dev/null 2>&1 222: # if [ $? != 0 ] 223: # then 224: # /usr/sbin/mount -F $fs $lvname $lv_mount_point 2> /dev/null 225: # if [ $? != 0 ] 226: # then 227: # retry_count=3 228: # sleep_time=1 229: # result_flag=1 230: 231: # while [ $retry_count -gt 0 ] 232: # do 233: # /usr/sbin/mount -F $fs $lvname $lv_mount_point > $err_log_path/$dev.mount 2>&1 234: # if [ $? != 0 ] 235: # then 236: # retry_count=`expr $retry_count - 1` 237: # /usr/bin/sleep $sleep_time 238: # else 239: # rm -f $err_log_path/$dev.mount 240: # result_flag=0 241: # break 242: # fi 243: # done 244: # 245: # if [ $result_flag != 0 ] 246: # then 247: # exit 11 248: # fi 249: # fi 250: # fi 251: # fi 252: 253: fi 254: /usr/bin/rm -rf $post_file 2> /dev/null 255: /usr/bin/rm -rf $fstype_file 2> /dev/null 256: /usr/bin/rm -rf $bd_file 2> /dev/null 257: exit 0 258: fi 259: 260: # fsck processing 261: # When device cannot be unmounted --- 1 262: # When devices of volume group cannot be unmounted --- 4 263: if [ "$post" = "fsck" ] 264: then 265: if [ -r $bd_file ] 266: then 267: bk_device="`/usr/bin/cat $bd_file`" 268: bk_trans="`echo $bk_device | /usr/bin/grep -e "/dev/dsk/" -e "/dev/disk/"`" 269: if [ "$bk_trans" != "" ] 270: then 271: if [ ! -r $fstype_file ] 272: then 273: /usr/sbin/fsck -y $bk_device > /dev/null 2>&1 274: else 275: if [ "$fs" = "" ] 276: then 277: /usr/sbin/fsck -y $bk_device > /dev/null 2>&1 278: else 279: /usr/sbin/fsck -y -F $fs $bk_device > /dev/null 2>&1 280: fi 281: fi 282: if [ $? != 0 ] 283: then 284: if [ "$fs" = "" ] 285: then 286: /usr/sbin/fsck -y $bk_device > $err_log_path/$dev.fsck 2>&1 287: else 288: /usr/sbin/fsck -y -F $fs $bk_device > $err_log_path/$dev.fsck 2>&1 289: fi 290: if [ $? != 0 ] 291: then 292: exit 12 293: else 294: /usr/bin/rm -f $err_log_path/$dev.fsck 295: fi 296: fi 297: # else 298: # # Specify the name of volume group to fsck 299: # if [ "$bk_device" = "/dev/vgXX" ] 300: # then 301: # fs="hfs" 302: # lvname="/dev/vgXX/rXXXXX" 303: # 304: # fsck -F $fs -y $lvname > /dev/null 2>&1 305: # if [ $? != 0 ] 306: # then 307: # if [ "$fs" = "" ] 308: # then 309: # fsck -y $lvname > $err_log_path/$dev.fsck 2>&1 310: # else 311: # fsck -y -F $fs $lvname > $err_log_path/$dev.fsck 2>&1 312: # fi 313: # if [ $? != 0 ] 314: # then 315: # exit 12 316: # else 317: # rm -f $err_log_path/$dev.fsck 318: # fi 319: # fi 320: # fi 321: fi 322: fi 323: /usr/bin/rm -rf $post_file 2> /dev/null 324: /usr/bin/rm -rf $fstype_file 2> /dev/null 325: /usr/bin/rm -rf $bd_file 2> /dev/null 326: exit 0 327: fi 328: 329: exit 0 |