テープコピー実行時の前処理のシェルスクリプト名は、以下のとおりです。
非クラスタ運用の場合
/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-2006 5: 6: # 7: # Preprocessing of tape copy processing 8: # 9: # Argument: $1 Device 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="`echo $1`" 29: 30: # Determination postprocessing file name 31: 32: if [ "$SWSTGNODE" != "" ] 33: then 34: swstg_node="/`echo $SWSTGNODE`" 35: else 36: swstg_node="" 37: fi 38: 39: err_log_path="/var/opt/FJSVswsts"$swstg_node"/log" 40: 41: if [ "`echo $device | /usr/bin/grep "/dev/dsk/"`" != "" ] 42: then 43: # /dev/dsk/c?t?d?s? -> c?t?d?s? 44: dev="`echo $device | /usr/bin/sed "s/\/dev\/dsk\///"`" 45: elif [ "`echo $device | /usr/bin/grep "/dev/FJSV"`" != "" ] 46: then 47: # /dev/FJSVmphd/dsk/mplb?s? -> /dev/FJSVmphd/dsk/mplb?s? 48: # /dev/FJSVmphd/dsk/mphd?s? -> /dev/FJSVmphd/dsk/mphd?s? 49: dev="`echo $device | /usr/bin/cut -d/ -f5`" 50: elif [ "`echo $device | /usr/bin/grep "/dev/sfdsk/"`" != "" ] 51: then 52: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume 53: dev="_gds_`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`" 54: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`" 55: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dsk/"`" != "" ] 56: then 57: # /dev/vx/dsk/volume -> _vx_rootdg_volume 58: # /dev/vx/dsk/disk-group/volume -> _vx_disk-group_volume 59: dev=_vx_"`echo $device | /usr/bin/awk -F\/ '{ if (NF == 6) { print $5"_"$6 } else print "rootdg_"$5 }'`" 60: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dmp/"`" != "" ] 61: then 62: # /dev/vx/dmp/device -> _vx_pv_device 63: dev=_vx_pv_"`echo $device | /usr/bin/cut -d/ -f5`" 64: else 65: exit 0 66: fi 67: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre" 68: 69: # Device unmount process. 70: # 71: cur_mount_point=`/usr/sbin/mount | grep "$device " | cut -f1 -d' '` 72: if [ "$cur_mount_point" != "" ] 73: then 74: /usr/sbin/umount $cur_mount_point 2>/dev/null 75: if [ $? != 0 ] 76: then 77: retry_count=3 78: sleep_time=1 79: result_flag=1 80: 81: while [ $retry_count -gt 0 ] 82: do 83: /usr/sbin/umount $cur_mount_point > $err_log_path/$dev.umount 2>&1 84: if [ $? != 0 ] 85: then 86: retry_count=`expr $retry_count - 1` 87: /usr/bin/sleep $sleep_time 88: else 89: /usr/bin/rm -f $err_log_path/$dev.umount 90: result_flag=0 91: break 92: fi 93: done 94: 95: if [ $result_flag != 0 ] 96: then 97: /usr/sbin/fuser -cu $cur_mount_point> $err_log_path/$dev.fuser 2>&1 98: /usr/bin/ps -ef > $err_log_path/$dev.ps 2>&1 99: 100: exit 10 101: fi 102: fi 103: echo "mount" > $post_file 104: 105: # When device was not mounted 106: # 107: else 108: echo "none" > $post_file 109: fi 110: exit 0 |