The replication source volume script (RepSrc.pre) and the replication destination volume script (RepDst.pre) are prepared for a pre-processing script, and it is stored in the following directory. Customize these scripts according to the processing requirements.
For non-clustered systems
/etc/opt/FJSVswsrp/sh
For clustered systems
/etc/opt/FJSVswsrp/logicalNodeName/sh
Replication Source Volume Pre-processing Sample Script (RepSrc.pre)
1: #!/bin/sh 2: 3: # AdvancedCopy Manager 4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2021 5: 6: # 7: # Pre-processing of Replication(Source) processing 8: # 9: # Argument: $1 Device name of Source disk 10: # $2 Mount point of Source disk 11: # 12: # Error number 13: # 2: Argument error 14: # 10: umount error 15: 16: # Argument check 17: case $# in 18: 2) 19: ;; 20: *) 21: exit 2 22: ;; 23: esac 24: 25: device=$1 26: mount_point=$2 27: cyclemax=3 28: unmount_cyclenumfile="unmount.cyclenum" 29: 30: # Determination postprocessing file name 31: if [ "`echo $device | /usr/bin/grep "/dev/dsk/"`" != "" ] 32: then 33: # /dev/dsk/c?t?d?s? -> c?t?d?s? 34: dev="`echo $device | /usr/bin/sed "s/\/dev\/dsk\///"`" 35: elif [ "`echo $device | /usr/bin/grep "/dev/FJSV"`" != "" ] 36: then 37: # /dev/FJSVmphd/dsk/mplb?s? -> mplb?s? 38: # /dev/FJSVmphd/dsk/mphd?s? -> mphd?s? 39: dev="`echo $device | /usr/bin/cut -d/ -f5`" 40: elif [ "`echo $device | /usr/bin/grep "/dev/sfdsk/"`" != "" ] 41: then 42: if [ "`echo $device | /usr/bin/grep ":"`" != "" ] 43: then 44: # /dev/sfdsk/class/dsk/volume:c?t?d? -> class_volume_c?t?d? 45: dev="`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`" 46: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`" 47: dev="`echo $dev | /usr/bin/sed "s/:/_/"`" 48: device="`echo $device | /usr/bin/cut -d: -f1`" 49: else 50: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume 51: dev="_gds_`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`" 52: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`" 53: fi 54: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dsk/"`" != "" ] 55: then 56: # /dev/vx/dsk/volume -> _vx_rootdg_volume 57: # /dev/vx/dsk/disk-group/volume -> _vx_disk-group_volume 58: dev=_vx_"`echo $device | /usr/bin/awk -F\/ '{ if (NF == 6) { print $5"_"$6 } else print "rootdg_"$5 }'`" 59: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dmp/"`" != "" ] 60: then 61: # /dev/vx/dmp/device -> _vx_pv_device 62: dev=_vx_pv_"`echo $device | /usr/bin/cut -d/ -f5`" 63: else 64: exit 0 65: fi 66: post_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".spre" 67: fstype_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".sfstype" 68: 69: err_log_path="/var/opt/FJSVswsrp/"$SWSTGNODE"/log" 70: 71: if [ "$mount_point" != "" ] 72: # When device was mounted 73: # 74: then 75: 76: # When device cannot be unmounted 77: # 78: # if [ "$device" = "/dev/dsk/cXtXdXsX" -o "$device" = "/dev/dsk/cYtYdYsY" ] 79: # then 80: # /usr/sbin/lockfs -w $mount_point > /dev/null 2>&1 81: # echo "lockfs,$mount_point" > $post_file 82: # 83: # When device can be unmounted 84: # 85: # else 86: # 87: /usr/bin/df -ln $mount_point | /usr/bin/cut -f2 -d: | /usr/bin/cut -f2 -d' ' > $fstype_file 88: 89: /usr/sbin/umount $mount_point 2>/dev/null 90: 91: if [ $? != 0 ] 92: then 93: retry_count=3 94: retry_def=$retry_count 95: sleep_time=1 96: result_flag=1 97: 98: while [ $retry_count -gt 0 ] 99: do 100: /usr/sbin/umount $mount_point > $err_log_path/$dev.umount 2>&1 101: if [ $? != 0 ] 102: then 103: if [ $retry_count -eq $retry_def ] 104: then 105: if [ -f $err_log_path/$unmount_cyclenumfile ] 106: then 107: cyclenum=`/usr/bin/cut -c 1 $err_log_path/$unmount_cyclenumfile` 108: cyclenum=`expr $cyclenum + 1 2>/dev/null` 109: if [ $? != 0 ]; then 110: cyclenum='1' 111: fi 112: if [ $cyclenum -gt $cyclemax ]; then 113: cyclenum='1' 114: fi 115: else 116: cyclenum='1' 117: fi 118: echo $cyclenum > $err_log_path/$unmount_cyclenumfile 119: : > $err_log_path/"$dev"_$cyclenum.umount 120: : > $err_log_path/"$dev"_$cyclenum.fuser 121: : > $err_log_path/"$dev"_$cyclenum.ps 122: fi 123: 124: echo `date '+%Y-%m-%d %T'` >> $err_log_path/"$dev"_$cyclenum.umount 125: echo `date '+%Y-%m-%d %T'` >> $err_log_path/"$dev"_$cyclenum.fuser 126: echo `date '+%Y-%m-%d %T'` >> $err_log_path/"$dev"_$cyclenum.ps 127: /usr/bin/cat $err_log_path/$dev.umount >> $err_log_path/"$dev"_$cyclenum.umount 2>&1 128: /usr/sbin/fuser -cu $mount_point >> $err_log_path/"$dev"_$cyclenum.fuser 2>&1 129: /usr/bin/ps -ef >> $err_log_path/"$dev"_$cyclenum.ps 2>&1 130: echo "" >> $err_log_path/"$dev"_$cyclenum.umount 131: echo "" >> $err_log_path/"$dev"_$cyclenum.fuser 132: echo "" >> $err_log_path/"$dev"_$cyclenum.ps 133: 134: retry_count=`expr $retry_count - 1` 135: /usr/bin/sleep $sleep_time 136: else 137: /usr/bin/rm -f $err_log_path/$dev.umount 138: result_flag=0 139: break 140: fi 141: done 142: 143: if [ $result_flag != 0 ] 144: then 145: exit 10 146: fi 147: fi 148: 149: echo "mount,$mount_point" > $post_file 150: 151: # fi 152: 153: # When device was not mounted 154: # 155: else 156: echo "none" > $post_file 157: fi 158: 159: exit 0
Replication Destination Volume Pre-processing Sample Script (RepDst.pre)
1: #!/bin/sh 2: 3: # AdvancedCopy Manager 4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2021 5: 6: # 7: # Pre-processing of Replication(Destination) processing 8: # 9: # Argument: $1 Device name of Destination disk 10: # $2 Mount point of Destination disk 11: # 12: # Error number 13: # 2: Argument error(system error) 14: # 10: umount error 15: 16: # Argument check 17: case $# in 18: 2) 19: ;; 20: *) 21: exit 2 22: ;; 23: esac 24: 25: device=$1 26: mount_point=$2 27: cyclemax=3 28: unmount_cyclenumfile="unmount.cyclenum" 29: 30: # Determination postprocessing file name 31: if [ "`echo $device | /usr/bin/grep "/dev/dsk/"`" != "" ] 32: then 33: # /dev/dsk/c?t?d?s? -> c?t?d?s? 34: dev="`echo $device | /usr/bin/sed "s/\/dev\/dsk\///"`" 35: elif [ "`echo $device | /usr/bin/grep "/dev/FJSV"`" != "" ] 36: then 37: # /dev/FJSVmphd/dsk/mplb?s? -> mplb?s? 38: # /dev/FJSVmphd/dsk/mphd?s? -> mphd?s? 39: dev="`echo $device | /usr/bin/cut -d/ -f5`" 40: elif [ "`echo $device | /usr/bin/grep "/dev/sfdsk/"`" != "" ] 41: then 42: if [ "`echo $device | /usr/bin/grep ":"`" != "" ] 43: then 44: # /dev/sfdsk/class/dsk/volume:c?t?d? -> class_volume_c?t?d? 45: dev="`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`" 46: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`" 47: dev="`echo $dev | /usr/bin/sed "s/:/_/"`" 48: device="`echo $device | /usr/bin/cut -d: -f1`" 49: else 50: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume 51: dev="_gds_`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`" 52: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`" 53: post_file="/etc/opt/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".dpre" 54: fi 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/FJSVswsrp/"$SWSTGNODE"/data/DEFAULT/"$dev".dpre" 68: 69: err_log_path="/var/opt/FJSVswsrp/"$SWSTGNODE"/log" 70: 71: if [ "$mount_point" != "" ] 72: # When device was mounted 73: # 74: then 75: 76: /usr/sbin/umount $mount_point 2>/dev/null 77: 78: if [ $? != 0 ] 79: then 80: retry_count=3 81: retry_def=$retry_count 82: sleep_time=1 83: result_flag=1 84: 85: while [ $retry_count -gt 0 ] 86: do 87: /usr/sbin/umount $mount_point > $err_log_path/$dev.umount 2>&1 88: if [ $? != 0 ] 89: then 90: if [ $retry_count -eq $retry_def ] 91: then 92: if [ -f $err_log_path/$unmount_cyclenumfile ] 93: then 94: cyclenum=`/usr/bin/cut -c 1 $err_log_path/$unmount_cyclenumfile` 95: cyclenum=`expr $cyclenum + 1 2>/dev/null` 96: if [ $? != 0 ]; then 97: cyclenum='1' 98: fi 99: if [ $cyclenum -gt $cyclemax ]; then 100: cyclenum='1' 101: fi 102: else 103: cyclenum='1' 104: fi 105: echo $cyclenum > $err_log_path/$unmount_cyclenumfile 106: : > $err_log_path/"$dev"_$cyclenum.umount 107: : > $err_log_path/"$dev"_$cyclenum.fuser 108: : > $err_log_path/"$dev"_$cyclenum.ps 109: fi 110: 111: echo `date '+%Y-%m-%d %T'` >> $err_log_path/"$dev"_$cyclenum.umount 112: echo `date '+%Y-%m-%d %T'` >> $err_log_path/"$dev"_$cyclenum.fuser 113: echo `date '+%Y-%m-%d %T'` >> $err_log_path/"$dev"_$cyclenum.ps 114: /usr/bin/cat $err_log_path/$dev.umount >> $err_log_path/"$dev"_$cyclenum.umount 2>&1 115: /usr/sbin/fuser -cu $mount_point >> $err_log_path/"$dev"_$cyclenum.fuser 2>&1 116: /usr/bin/ps -ef >> $err_log_path/"$dev"_$cyclenum.ps 2>&1 117: echo "" >> $err_log_path/"$dev"_$cyclenum.umount 118: echo "" >> $err_log_path/"$dev"_$cyclenum.fuser 119: echo "" >> $err_log_path/"$dev"_$cyclenum.ps 120: 121: retry_count=`expr $retry_count - 1` 122: /usr/bin/sleep $sleep_time 123: else 124: /usr/bin/rm -f $err_log_path/$dev.umount 125: result_flag=0 126: break 127: fi 128: done 129: 130: if [ $result_flag != 0 ] 131: then 132: exit 10 133: fi 134: fi 135: 136: echo "mount,$mount_point" > $post_file 137: 138: # When device was not mounted 139: # 140: else 141: echo "none" > $post_file 142: fi 143: 144: exit 0