テープコピー実行時の前処理のシェルスクリプト名は、以下のとおりです。
非クラスタ運用の場合
/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