ETERNUS SF AdvancedCopy Manager 運用手引書 13.1 -Solaris- |
目次
索引
![]() ![]() |
付録A バックアップ/リストアの前後処理 | > A.2 バックアップの前後処理 |
バックアップ実行時の前処理のシェルスクリプト名は、以下のとおりです。
非クラスタ運用の場合
/etc/opt/FJSVswsts/sh/OpcBackup.pre |
クラスタ運用の場合
/etc/opt/FJSVswsts/<論理ノード名>/sh/OpcBackup.pre |
1: #!/bin/sh 2: 3: # AdvancedCopy Manager 4: # All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2007 5: 6: # 7: # Preprocessing of backup processing 8: # 9: # Argument: $1 Device name of transaction disk 10: # $2 Mount point of transaction disk 11: # $3 Device name of backup disk 12: # 13: #Error number 14: # 2: Argument error 15: #10: umount error 16: 17: 18: # Argument check 19: case $# in 20: 1) 21: ;; 22: 2) 23: ;; 24: 3) 25: ;; 26: *) 27: exit 2 28: ;; 29: esac 30: 31: device="`echo $1`" 32: mount_point="`echo $2`" 33: bk_device="`echo $3`" 34: 35: # Determination postprocessing file name 36: 37: if [ "$SWSTGNODE" != "" ] 38: then 39: swstg_node="/`echo $SWSTGNODE`" 40: else 41: swstg_node="" 42: fi 43: 44: err_log_path="/var/opt/FJSVswsts"$swstg_node"/log" 45: 46: if [ "`echo $device | /usr/bin/grep "/dev/dsk/"`" != "" ] 47: then 48: # /dev/dsk/c?t?d?s? -> c?t?d?s? 49: dev="`echo $device | /usr/bin/sed "s/\/dev\/dsk\///"`" 50: elif [ "`echo $device | /usr/bin/grep "/dev/FJSV"`" != "" ] 51: then 52: # /dev/FJSVmphd/dsk/mplb?s? -> /dev/FJSVmphd/dsk/mplb?s? 53: # /dev/FJSVmphd/dsk/mphd?s? -> /dev/FJSVmphd/dsk/mphd?s? 54: dev="`echo $device | /usr/bin/cut -d/ -f5`" 55: elif [ "`echo $device | /usr/bin/grep "/dev/sfdsk/"`" != "" ] 56: then 57: if [ "`echo $device | /usr/bin/grep ":"`" != "" ] 58: then 59: # /dev/sfdsk/class/dsk/volume:c?t?d? -> class_volume_c?t?d? 60: dev="`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`" 61: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`" 62: dev="`echo $dev | /usr/bin/sed "s/:/_/"`" 63: device="`echo $device | /usr/bin/cut -d: -f1`" 64: else 65: # /dev/sfdsk/class/dsk/volume -> _gds_class_volume 66: dev="_gds_`echo $device | /usr/bin/sed "s/\/dev\/sfdsk\///"`" 67: dev="`echo $dev | /usr/bin/sed "s/\/dsk\//_/"`" 68: fi 69: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dsk/"`" != "" ] 70: then 71: # /dev/vx/dsk/volume -> _vx_rootdg_volume 72: # /dev/vx/dsk/disk-group/volume -> _vx_disk-group_volume 73: dev=_vx_"`echo $device | /usr/bin/awk -F\/ '{ if (NF == 6) { print $5"_"$6 } else print "rootdg_"$5 }'`" 74: elif [ "`echo $device | /usr/bin/grep "/dev/vx/dmp/"`" != "" ] 75: then 76: # /dev/vx/dmp/device -> _vx_pv_device 77: dev=_vx_pv_"`echo $device | /usr/bin/cut -d/ -f5`" 78: else 79: exit 0 80: fi 81: post_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".pre" 82: fstype_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".fstype" 83: bd_file="/etc/opt/FJSVswsts"$swstg_node"/data/DEFAULT/"$dev".bd" 84: 85: if [ "$mount_point" != "" ] 86: then 87: 88: # When device cannot be unmounted 89: # 90: #if [ "$device" = "/dev/dsk/cXtXdXsX" -o "$device" = "/dev/dsk/cYtYdYsY" ] 91: #then 92: #/usr/sbin/lockfs -w $mount_point > /dev/null 2>&1 93: #if [ "$bk_device" != "" ] 94: #then 95: #echo $bk_device > $bd_file 96: #fi 97: #df -ln $mount_point | cut -f2 -d: | cut -f2 -d' ' > $fstype_file 98: #sync 99: #sync 100: #echo "fsck" > $post_file 101: # 102: # When device can be unmounted 103: # 104: #else 105: /usr/bin/df -ln $mount_point | /usr/bin/cut -f2 -d: | /usr/bin/cut -f2 -d' ' > $fstype_file 106: /usr/sbin/umount $mount_point 2>/dev/null 107: if [ $? != 0 ] 108: then 109: retry_count=3 110: sleep_time=1 111: result_flag=1 112: 113: while [ $retry_count -gt 0 ] 114: do 115: /usr/sbin/umount $mount_point > $err_log_path/$dev.umount 2>&1 116: if [ $? != 0 ] 117: then 118: retry_count=`expr $retry_count - 1` 119: /usr/bin/sleep $sleep_time 120: else 121: /usr/bin/rm -f $err_log_path/$dev.umount 122: result_flag=0 123: break 124: fi 125: done 126: 127: if [ $result_flag != 0 ] 128: then 129: /usr/sbin/fuser -cu $mount_point> $err_log_path/$dev.fuser 2>&1 130: /usr/bin/ps -ef > $err_log_path/$dev.ps 2>&1 131: 132: exit 10 133: fi 134: fi 135: echo "mount" > $post_file 136: 137: #fi 138: 139: # When device was not mounted 140: # 141: else 142: echo "none" > $post_file 143: fi 144: 145: exit 0 |
マウントされているがアンマウントしたくない業務ボリュームに対しては、90〜100、104、137行目のコメント(“#”)をエディタ等で消去し、90行目のif文で対象となるデバイスを指示してください。
この操作は、ファイルシステムが以下の場合のみ可能です。
ufs
SafeFILE(シングルパーティション構成)
カスタマイズしたスクリプトによる前処理の動作は、以下のようになります。
業務ボリュームの状態 |
前処理 |
---|---|
マウントされている |
業務ボリュームへの更新を抑止します |
カスタマイズしたスクリプトによる後処理の動作は、以下のようになります。
前処理 |
後処理 |
---|---|
業務ボリュームへの更新を抑止した |
業務ボリュームへの更新抑止を解除します バックアップボリュームの整合性を確認します |
標準のスクリプトを使用した運用では、アドバンスト・コピー(EC/OPC)の前にファイルシステムをアンマウントすることにより、ファイルシステムのキャッシュの書き出しと、その後の更新が抑止されるため、ファイルシステム全体のデータの整合性が保証されます。
スクリプトをカスタマイズして、ファイルシステムのアンマウントを行わない場合は、lockfs -wを使用してファイルシステムのキャッシュのフラッシュと、その後の更新を抑止しますが、Write Open中のファイル(オンラインバックアップをサポートしているOracleのデータベーススペースは除きます)については、ファイル内容の保証はされません。
また、メタデータ更新中のプロセスがある場合は、lockfsの仕様上、ファイルシステム自体のデータ整合性も保障されません。
したがって、ファイルシステムのアンマウントを行わない場合のデータ整合性については、運用で考慮・対処する必要があります。
目次
索引
![]() ![]() |