レプリケーションの前後処理シェルスクリプトのカスタマイズ方法を、以下に説明します。
レプリケーション対象ボリュームをアンマウントしたくない場合
マウントされているがアンマウントしたくない複写元ボリュームに対しては、複写元ボリューム用の前処理シェルスクリプト(RepSrc.pre)の68~72、75、107行目(物理ボリュームの場合)または123~128行目(ボリュームグループの場合)のコメント(“#”)をエディタなどで消去し、68行目または123行目のif文で対象となる複写元ボリュームを指示してください。なお、70行目または125行目のsyncコマンドを実施してから複写元ボリュームの後処理を実施するまでの間は、複写元ボリュームのファイルシステムを更新しないようにしてください。ファイルシステムが更新されると、ファイルシステムが不完全な状態で複写されるか、複写先ボリューム用の後処理シェルスクリプト(RepDst.post)で実施するfsckコマンドがエラーとなる可能性があります。
マウントされている複写先ボリュームに対しては、必ず、アンマウントする必要があります。
レプリケーション対象がボリュームグループの場合
ファイルシステムが構築された論理ボリュームを含むボリュームグループがレプリケーション対象の場合は、前後処理シェルスクリプトの修正が必要です。
複写元ボリューム用の前処理シェルスクリプト(RepSrc.pre)の133~166行目、および複写元ボリューム用の後処理シェルスクリプト(RepSrc.post)の144~184行目のコメント(“#”)をエディタなどで消去し、ファイルシステムが構築されたすべての論理ボリュームがアンマウント/マウントされるように、適宜修正してください。
“X”で示す箇所は、実際の環境に合わせて変更してください。また、複写元ボリューム用の前処理シェルスクリプト(RepSrc.pre)の136~164行目、および複写元ボリューム用の後処理シェルスクリプト(RepSrc.post)の151~183行目の処理を、ボリューム数分記述してください。
複写先ボリューム用の前処理シェルスクリプト(RepDst.pre)の117~150行目、および複写先ボリューム用の後処理シェルスクリプト(RepDst.post)の210、211、214~251行目のコメント(“#”)をエディタなどで消去し、ファイルシステムが構築されたすべての論理ボリュームがアンマウント/マウントされるように、適宜修正してください。
“X”で示す箇所は、実際の環境に合わせて変更してください。また、複写先ボリューム用の前処理シェルスクリプト(RepDst.pre)の120~149行目、および複写先ボリューム用の後処理シェルスクリプト(RepDst.post)の218~250行目の処理をボリューム数分記述してください。
複写元ボリュームをアンマウントしない場合は、複写先ボリューム用の後処理シェルスクリプト(RepDst.post)で、複写先ボリューム内のファイルシステムが構築されたすべての論理ボリュームに対してfsckを行う必要があります。
シェルスクリプトに対して必要な修正を実施後、複写元ボリューム用の前処理シェルスクリプト(RepSrc.pre)の118行目、および複写先ボリューム用の前処理シェルスクリプト(RepDst.pre)の112行目のexit文をコメント(“#”)化してください。
注意
カスタマイズしていない状態では、ボリュームグループに対する前処理がエラーになります。
複写先ボリュームがボリュームグループの場合は、後処理シェルスクリプトにおいて、複写先ボリュームをLVMとして使用可能にするためにvgcfgrestoreコマンドによってボリュームグループ構成情報のリストアを実施しています。記載のシェルスクリプトでは、標準のバックアップファイル「/etc/lvmconf/“ボリュームグループ名”.conf」からボリューム構成情報のリストアを行っています。ボリュームグループ構成情報が別ファイルにバックアップされている場合は、シェルスクリプトをカスタマイズしてください。
クラスタ運用している場合は、クラスタを構成する各ノードにボリュームグループ構成情報が存在している必要があります。
mountコマンドやfsckコマンドなどのOSコマンドのパラメーターやオプションは、運用に合わせて適宜修正してください。
共有モードのボリュームグループの場合
複写先ボリューム用の後処理シェルスクリプト(RepDst.post)の78~118、121、122、および152行目をコメント化して、複写先ボリューム用の後処理シェルスクリプトでは共有モードのボリュームグループを再構成しないようにしてください。
レプリケーション実行後に以下の作業を手動で実施して、ボリュームグループを再構成してください。
ボリュームグループの停止(業務を構成している全ノードで実行します)
# /usr/sbin/vgchange -a n <vg_name> # |
ボリュームグループ構成情報のリストア(ボリュームグループを作成したノードで実行します)
# /usr/sbin/vgcfgrestore -n <vg_name> <pv_path> # |
共有可能なボリュームグループのマーク(ボリュームグループを作成したノードで実行します)
# /usr/sbin/vgchange -S y -c y <vg_name> # |
ボリュームグループの起動(業務を構成している全ノードで実行します)
# /usr/sbin/vgchange -a s <vg_name> # |
ファイルシステム名
複写元ボリューム用の後処理シェルスクリプト(RepSrc.post)の150行目、複写先ボリューム用の後処理シェルスクリプト(RepDst.post)の127、139、217行目のファイルシステム名は、運用に合わせて適宜修正してください。
VERITAS Cluster Serverでクラスタ運用する場合
VERITAS Cluster Serverでクラスタ運用する場合で、複写先/複写元のボリュームのマウントポイントがクラスタ業務に登録されているときは、前後処理シェルスクリプトのカスタマイズが必要です。
前後処理シェルスクリプト内のアンマウント/マウント処理を、マウントポイントリソースのオフライン/オンライン処理に変更してください。
また、マウントポイントリソースのオフライン/オンラインを行ってから実際にボリュームがアンマウント/マウントされるまでに時間差があります。そのため、実際にアンマウント/マウントされるまで待ち合わせる処理(sleepやdfコマンドの結果を監視するなど)をオフライン/オンラインの成否を判定する個所の後に追加してください。
以下に、前後処理シェルスクリプトのカスタマイズ例を示します。
[例] 複写元ボリューム用の前処理シェルスクリプト(RepSrc.pre)の、アンマウント処理変更
[77、87、137、146行目]
(変更前) | /usr/sbin/umount $mount_point |
(変更後) | /opt/VRTSvcs/bin/hares -offline リソース名 -sys システム名 |
[例] 複写元ボリューム用の前処理シェルスクリプト(RepSrc.pre)の、アンマウント待ち処理の追加
[106、165行目]
(追加) | while /usr/bin/df -l "$device">/dev/null 2>&1; do :; done |
[例] 複写先ボリューム用の前処理シェルスクリプト(RepDst.pre)の、アンマウント処理変更
[71、81、121、130行目]
(変更前) | /usr/sbin/umount $mount_point |
(変更後) | /opt/VRTSvcs/bin/hares -offline リソース名 -sys システム名 |
[例] 複写先ボリューム用の前処理シェルスクリプト(RepDst.pre)の、アンマウント待ち処理追加
[100、149行目]
(追加) | while /usr/bin/df -l "$device">/dev/null 2>&1; do :; done |
[例] 複写元ボリューム用の後処理シェルスクリプト(RepSrc.post)の、マウント処理変更
[98、102、104、117、121、123、157、166行目]
(変更前) | /usr/sbin/mount $device $mount_point |
(変更後) | /opt/VRTSvcs/bin/hares -online リソース名 -sys システム名 |
[例] 複写元ボリューム用の後処理シェルスクリプト(RepSrc.post)の、マウント待ち処理追加
[143、185行目]
(追加) | while ! /usr/bin/df -l "$device">/dev/null 2>&1; do :; done |
[例] 複写先ボリューム用の後処理シェルスクリプト(RepDst.post)の、マウント処理変更
[165、169、171、188、190、224、233行目]
(変更前) | /usr/sbin/mount $device $mount_point |
(変更後) | /opt/VRTSvcs/bin/hares -online リソース名 -sys システム名 |
[例] 複写先ボリューム用の後処理シェルスクリプト(RepDst.post)の、マウント待ち処理追加
[210、252行目]
(追加) | while ! /usr/bin/df -l "$device">/dev/null 2>&1; do :; done |