The name of a script file for pre-processing of a restoration is as follows.
For non-clustered systems
/etc/opt/FJSVswsts/sh/OpcRestore.pre
For clustered systems
/etc/opt/FJSVswsts/logicalNodeName/sh/OpcRestore.pre
Pre-processing Script for Restoration (OpcRestore.pre)
1: #!/bin/sh 2: 3: # AdvancedCopy Manager 4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2021 5: 6: # 7: # Pre-processing of restoration processing 8: # 9: # Argument: $1 Device name of transaction disk 10: # $2 Mount point of transaction disk 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: mount_point="`echo $2`" 30: cyclemax=3 31: unmount_cyclenumfile="unmount.cyclenum" 32: 33: # Determination of postprocessing file name 34: 35: if [ "$SWSTGNODE" != "" ] 36: then 37: swstg_node="/`echo $SWSTGNODE`" 38: else 39: swstg_node="" 40: fi 41: 42: err_log_path="/var/opt/FJSVswsts"$swstg_node"/log" 43: 44: if [ "`echo $device | /usr/bin/grep "/dev/dsk/"`" != "" ] 45: then 46: # /dev/dsk/c?t?d?s? -> c?t?d?s? 47: dev="`echo $device | /usr/bin/sed "s/\/dev\/dsk\///"`" 48: elif [ "`echo $device | /usr/bin/grep "/dev/FJSV"`" != "" ] 49: then 50: # /dev/FJSVmphd/dsk/mplb?s? -> /dev/FJSVmphd/dsk/mplb?s? 51: # /dev/FJSVmphd/dsk/mphd?s? -> /dev/FJSVmphd/dsk/mphd?s? 52: dev="`echo $device | /usr/bin/cut -d/ -f5`" 53: elif [ "`echo $device | /usr/bin/grep "/dev/sfdsk/"`" != "" ] 54: then 55: if [ "`echo $device | /usr/bin/grep ":"`" != "" ] 56: then 57: # /dev/sfdsk/class/dsk/volume:c?t?d? -> class_volume_c?t?d? 58: dev="`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`" 59: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`" 60: dev="`echo $dev | /usr/bin/sed "s/:/_/"`" 61: device="`echo $device | /usr/bin/cut -d: -f1`" 62: else 63: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume 64: dev="_gds_`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`" 65: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`" 66: fi 67: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dsk/"`" != "" ] 68: then 69: # /dev/vx/dsk/volume -> _vx_rootdg_volume 70: # /dev/vx/dsk/disk-group/volume -> _vx_disk-group_volume 71: dev=_vx_"`echo $device | /usr/bin/awk -F\/ '{ if (NF == 6) { print $5"_"$6 } else print "rootdg_"$5 }'`" 72: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dmp/"`" != "" ] 73: then 74: # /dev/vx/dmp/device -> _vx_pv_device 75: dev=_vx_pv_"`echo $device | /usr/bin/cut -d/ -f5`" 76: else 77: exit 0 78: fi 79: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre" 80: fstype_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".fstype" 81: bd_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".bd" 82: 83: if [ "$mount_point" != "" ] 84: then 85: 86: # When device can be unmounted 87: # 88: /usr/bin/df -ln $mount_point | /usr/bin/cut -f2 -d: | /usr/bin/cut -f2 -d' ' > $fstype_file 89: /usr/sbin/umount $mount_point 2> /dev/null 90: if [ $? != 0 ] 91: then 92: retry_count=3 93: retry_def=$retry_count 94: sleep_time=1 95: result_flag=1 96: 97: while [ $retry_count -gt 0 ] 98: do 99: /usr/sbin/umount $mount_point > $err_log_path/$dev.umount 2>&1 100: if [ $? != 0 ] 101: then 102: if [ $retry_count -eq $retry_def ] 103: then 104: if [ -f $err_log_path/$unmount_cyclenumfile ] 105: then 106: cyclenum=`/usr/bin/cut -c 1 $err_log_path/$unmount_cyclenumfile` 107: cyclenum=`expr $cyclenum + 1 2>/dev/null` 108: if [ $? != 0 ]; then 109: cyclenum='1' 110: fi 111: if [ $cyclenum -gt $cyclemax ]; then 112: cyclenum='1' 113: fi 114: else 115: cyclenum='1' 116: fi 117: echo $cyclenum > $err_log_path/$unmount_cyclenumfile 118: : > $err_log_path/"$dev"_$cyclenum.umount 119: : > $err_log_path/"$dev"_$cyclenum.fuser 120: : > $err_log_path/"$dev"_$cyclenum.ps 121: fi 122: 123: echo `date '+%Y-%m-%d %T'` >> $err_log_path/"$dev"_$cyclenum.umount 124: echo `date '+%Y-%m-%d %T'` >> $err_log_path/"$dev"_$cyclenum.fuser 125: echo `date '+%Y-%m-%d %T'` >> $err_log_path/"$dev"_$cyclenum.ps 126: /usr/bin/cat $err_log_path/$dev.umount >> $err_log_path/"$dev"_$cyclenum.umount 2>&1 127: /usr/sbin/fuser -cu $mount_point >> $err_log_path/"$dev"_$cyclenum.fuser 2>&1 128: /usr/bin/ps -ef >> $err_log_path/"$dev"_$cyclenum.ps 2>&1 129: echo "" >> $err_log_path/"$dev"_$cyclenum.umount 130: echo "" >> $err_log_path/"$dev"_$cyclenum.fuser 131: echo "" >> $err_log_path/"$dev"_$cyclenum.ps 132: 133: retry_count=`expr $retry_count - 1` 134: /usr/bin/sleep $sleep_time 135: else 136: /usr/bin/rm -f $err_log_path/$dev.umount 137: result_flag=0 138: break 139: fi 140: done 141: 142: if [ $result_flag != 0 ] 143: then 144: exit 10 145: fi 146: fi 147: echo "mount" > $post_file 148: 149: # When device was not mounted 150: # 151: else 152: echo "none" > $post_file 153: fi 154: 155: exit 0
Restore processing is not possible on a mounted transaction volume that cannot be unmounted. Specify a device at the restore destination.