テープコピー実行時の前処理のシェルスクリプト名は、以下のとおりです。
非クラスタ運用の場合
/etc/opt/FJSVswsts/sh/TapeCopy.pre |
クラスタ運用の場合
/etc/opt/FJSVswsts/<論理ノード名>/sh/TapeCopy.pre |
シェルスクリプトの内容は、以下のとおりです。
1: #!/bin/sh 2: 3: # AdvancedCopy Manager 4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2005-2008 5: 6: # 7: # Preprocessing of tape copy processing 8: # 9: # Argument: $1 Device or VG name of backup disk 10: # $2 Reserve 11: # 12: # Error number 13: # 2: Argument error 14: # 10: umount error 15: 16: 17: # Argument check 18: case $# in 19: 1) 20: ;; 21: 2) 22: ;; 23: *) 24: exit 2 25: ;; 26: esac 27: 28: device=$1 29: 30: # Determination postprocessing file name 31: if [ "$SWSTGNODE" != "" ] 32: then 33: swstg_node="/`echo $SWSTGNODE`" 34: else 35: swstg_node="" 36: fi 37: 38: err_log_path="/var/opt/FJSVswsts"$swstg_node"/log" 39: 40: # Device type check 41: trans="`echo $device | /usr/bin/grep -e "/dev/dsk/" -e "/dev/disk/"`" 42: lvmtrans="`echo $device | /usr/bin/grep "/dev/"`" 43: vxpvtrans="`echo $device | /usr/bin/grep "/dev/vx/dmp/"`" 44: if [ "$trans" != "" ] 45: then 46: dev="`echo $device | /usr/bin/sed -e "s/\/dev\/dsk\///" -e "s/\/dev\/disk\//_hppv_/"`" 47: elif [ "$vxpvtrans" != "" ] 48: then 49: dev_type="vxvm_pv" 50: # /dev/vx/dmp/XXXX -> XXXX 51: dev="`echo $device | /usr/bin/awk -F\/ '{ print $5 }'`" 52: elif [ "$lvmtrans" != "" ] 53: then 54: # /dev/XXXX -> XXXX 55: dev="`echo $device | /usr/bin/awk -F\/ '{ print $3 }'`" 56: else 57: exit 0 58: fi 59: 60: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre" 61: 62: if [ "$trans" != "" ] 63: then 64: # Physical volume 65: cur_mount_list=`/usr/sbin/mount | grep " $device" | cut -f1 -d' '` 66: elif [ "$vxpvtrans" != "" ] 67: then 68: # VxVM PV 69: cur_mount_list="" 70: else 71: # Logical volume 72: cur_mount_list=`/usr/sbin/mount | grep " $device/" | cut -f1 -d' '` 73: fi 74: # Device unmount process. 75: # 76: if [ "$cur_mount_list" != "" ] 77: then 78: for cur_mount in $cur_mount_list 79: do 80: /usr/sbin/umount $cur_mount 2>/dev/null 81: if [ $? != 0 ] 82: then 83: retry_count=3 84: sleep_time=1 85: result_flag=1 86: 87: while [ $retry_count -gt 0 ] 88: do 89: /usr/sbin/umount $cur_mount > $err_log_path/$dev.umount 2>&1 90: if [ $? != 0 ] 91: then 92: retry_count=`expr $retry_count - 1` 93: /usr/bin/sleep $sleep_time 94: else 95: /usr/bin/rm -f $err_log_path/$dev.umount 96: result_flag=0 97: break 98: fi 99: done 100: 101: if [ $result_flag != 0 ] 102: then 103: /usr/sbin/fuser -cu $cur_mount> $err_log_path/$dev.fuser 2>&1 104: /usr/bin/ps -ef > $err_log_path/$dev.ps 2>&1 105: exit 10 106: fi 107: fi 108: done 109: echo "mount" > $post_file 110: 111: # When device was not mounted 112: # 113: else 114: echo "none" > $post_file 115: fi 116: 117: exit 0 |