日本−日本語 |
|
|
HP OpenVMS: Volume Shadowing for OpenVMS 説明書第7章 ミニコピーによるデータのバックアップ (Integrity および Alpha) |
|
目次 この章では,OpenVMS バージョン 7.3 から導入された Volume Shadowing for OpenVMS のミニコピー機能を説明します。 ミニコピーとそれを実現するテクノロジであるビットマップは, OpenVMS Integrity および OpenVMS Alpha システムに完全に実装されています。 OpenVMS VAX ノードでは, この機能を使っているシャドウセットに書き込みはできますが, マスタ・ビットマップを作成したり,DCL コマンドで管理することはできません。 OpenVMS Alpha Cluster システムでミニコピーを使うためには,Alpha システムを 1 台だけ必要とします。 ミニコピーの主な目的は, シャドウセット・メンバをシャドウセットに戻す時間を短縮することです。 通常,シャドウセット・メンバを削除するのはデータのバックアップのためであり, それがすむとシャドウセットのメンバに戻します。 ミニコピー操作は,コピー操作を効率化したものです。 ビットマップはシャドウセットへの書き込みを追跡し, シャドウセット・メンバをシャドウセットに戻す際の ミニコピー操作を指示するために使われます。 デバイスの内容全体をコピーするのではなく, ビットマップにより認識される変更済みブロックのみがコピーされます。 シャドウセット・メンバがシャドウセットに戻されたとき,そのメンバのデータとシャドウセットのデータが同一になることがミニコピーによって保証されます。 シャドウセット・メンバを削除する前は, 図 7-1 「アプリケーションによるシャドウセットへの書き込み」 に示すように,アプリケーションからの書き込みは直接シャドウセット (仮想ユニットとも言う) に送られます。 シャドウセット・メンバをディスマウントするときにミニコピー修飾子 (/POLICY=MINICOPY[=OPTIONAL]) を指定すると, ビットマップが作成されます。 シャドウセットへのその後の書き込みは,ビットマップに記録されます。 ビットマップへの記録は, 対応する書き込みの論理ブロック番号 (LBN) だけで, 内容ではないことに注意してください。 アドレスは,ビットマップに 1 つ以上のビットを設定することで表現されます。 各々のビットは 127 ディスク・ブロックの範囲に対応します。 データが 127 ブロックの範囲のどこかのブロックに書き込まれると, その範囲に対応するビットマップのビットが設定されます。 ビットが設定されると,そのデータが,図 7-2 「アプリケーションによるビットマップへの書き込み」 に示すように,シャドウセットに書き込まれます。 メンバをシャドウセットを戻すとき,ビットマップは, 図 7-3 「シャドウセット (仮想ユニット) に戻されるメンバ」 に示すようにミニコピー操作の指示のために使われます。 ミニコピー操作が行われている間でも, アプリケーションはシャドウセットの読み書きを継続できます。 システム管理者が 7.11 項 「バックアップ用にシャドウセット・メンバを使う際のガイドライン」 のガイドラインに従っている限り,ミニコピー機能を使うと, メンバをシャドウセットに戻す際のフルコピーは不要になります。 この章では,コピーとフルコピーは同じ意味で使っていることに注意してください。 いくつかの DCL コマンドを,ビットマップの管理のために使うことができます。 OpenVMS Cluster システムでのビットマップの更新の管理や,ノードごとのシャドウセットの上限数を設定するためのシステム・パラメータが用意されています。 ミニコピーが導入される前は,コピー操作は 2 つの目的で使われていました。 仮想ユニットにメンバを追加するのと, 削除されたメンバを元のシャドウセットに戻すためです。 メンバを仮想ユニットに戻すためには, そのメンバのデータをシャドウセットのデータに一致させなければなりません。 コピー操作は,複数メンバ・シャドウセットを作成するための代表的な方法です。 (DCL コマンド INITIALIZE/SHADOW を使用して,空の複数メンバ・シャドウセットを作成することもできます。) メンバをシャドウセットに戻す場合は, コピー操作よりもミニコピー操作の方が優れています。 通常,シャドウセット・メンバを削除する目的は, データをテープやディスクにバックアップするためです。 シャドウセット・メンバをバックアップ操作で使うためには, システム管理者は次の手順に従う必要があります。
ミニコピー操作は,システム管理者の意志で, システム管理者が決めた時間に使うことができます。 ミニコピーを使うと,シャドウセットにメンバを戻すために要する時間が著しく短縮されるため,システム管理者が行うシャドウセット・メンバの削除と復元を柔軟に計画することができ,可用性が向上します。 ミニコピーの実行に要する時間は,ディスクを外していた間にシャドウセットに加えられた変更の量に比例します。 コピー時間が短縮されることで,バックアップの管理が容易になります。 表 7-1 「ミニコピーとフルコピーの性能比較」 には一連のテスト結果を示しています。 ここではシャドウセットに多様な書き込みが行われたときのフルコピーとミニコピーに要する時間の比較を行っています。 表 7-1 「ミニコピーとフルコピーの性能比較」 と 表 7-2 「ミニコピーとハードウェア補助付き (DCD) コピーの性能比較」 は,ミニコピーを使ったときに得られる性能向上の目安として参考にしてください。 表 7-1 ミニコピーとフルコピーの性能比較
表 7-2 「ミニコピーとハードウェア補助付き (DCD) コピーの性能比較」 は,別の一連のテストの結果です。 多様な書き込みについて,ハードウェア補助付きコピー (HSJ コントローラで MSCP ディスク・コピー・データ (DCD) コマンドを使用) とミニコピーに要求する時間を比較しています。 表 7-2 ミニコピーとハードウェア補助付き (DCD) コピーの性能比較
ミニコピー操作を使うには,以下の手順に従います。
MOUNT および DISMOUNT コマンドの /POLICY=MINICOPY[=OPTIONAL] 修飾子の使い方の詳細は,7.6 項 「ビットマップの作成」 と 7.7 項 「ミニコピー操作の開始」 を参照してください。 以下は,ミニコピーを使う場合の制限です。
ビットマップの作成には,DCL コマンドの DISMOUNT と MOUNT が使われます。MOUNT コマンドは,ビットマップを使ったミニコピー操作を開始するためにも使われます (7.7 項 「ミニコピー操作の開始」 を参照)。 OpenVMS Version 7.3-2 で導入された DDS を使用すると, 異なるサイズのディスク・デバイスからなるシャドウ・セットを構築できます。 書き込みビットマップは,完全コピーのオーバヘッドなしでメンバを仮想ユニットに戻せるように,シャドウ・セットの仮想ユニットに対して行われたアプリケーションの書き込みを追跡します。 ユーザがシャドウ・セット・メンバに対して DISMOUNT/POLICY=MINICOPY コマンドを実行した場合や,MOUNT/POLICY=MINICOPY コマンドを使用してシャドウ・セットをマウントした場合に,書き込みビットマップが作成されます。 このビットマップが作成されるときのサイズは,ボリュームの現在のサイズに依存します。 シャドウ・セットがマウントされるとき,そのシャドウ・セットの仮想ユニットの論理サイズは,最小のメンバ・ユニットのサイズになります。シャドウ・セットのメンバが削除された場合,仮想ユニットの論理サイズは,セット内に残っているメンバのサイズをもとにして,再計算されます。その結果,仮想ユニットの論理サイズは,大きくなることがあります。 シャドウ・セットに書き込みビットマップが作成されるとき,そのサイズは,シャドウ・セットの仮想ユニットの現在のサイズによって決まります。仮想ユニットのサイズが後で大きくなると,ビットマップは仮想ユニット全体をカバーできなくなります。その後,ビットマップを使用してミニコピー操作でシャドウ・セット・メンバを戻すと,仮想ユニット内でビットマップがカバーしていない部分は,フルコピー操作でコピーされます。 この問題を,次の例で説明します。
小さいシャドウ・セット・メンバの削除を予定している場合は,ミニコピー・ビットマップ付きで大きなシャドウ・セット・メンバを削除する前に小さいメンバを削除すれば,大きなビットマップが作成され,短いビットマップで性能へ悪影響を及ぼすのを避けることができます。 上記の例では,$1$DGA22: を削除する前に $1$DGA20: を削除します。 DISMOUNT コマンドでビットマップを作成するには, /POLICY=MINICOPY[=OPTIONAL] 修飾子を指定します。 /POLICY=MINICOPY=OPTIONAL を指定すると,十分なメモリがあれば, ビットマップが作成されます。ビットマップが作成されたかどうかにかかわらず,ディスクはディスマウントされます。 次の例は, DISMOUNT コマンド の /POLICY=MINICOPY=OPTIONAL 修飾子の使い方を示しています。
このコマンドは,シャドウセットから $4$DUA1 を削除し, 可能ならば,ビットマップへのログの書き込みを開始します。 /POLICY=MINICOPY とだけ (すなわち,=OPTIONAL を省略) 指定して, ノードにビットマップを作成するのに十分なメモリがなかった場合は, ディスマウントは失敗します。 以下の条件のとき,MOUNT コマンドでビットマップを作成できます。
このコマンドで作成されるビットマップは, 後でシャドウセットの以前のメンバをシャドウセットにマウントするときに, ミニコピー操作で使われます。 /POLICY=MINICOPY=OPTIONAL 修飾子を指定したときに, シャドウセットがクラスタ内の別のノードに既にマウントされていた場合, MOUNT コマンドは成功しますが,ビットマップは作成されません。 シャドウセット・メンバにビットマップが存在する場合, シャドウセットにシャドウセット・メンバを戻すために MOUNT コマンドを実行すると,デフォルトでミニコピー操作が開始されます。 これは, MOUNT コマンドに /POLICY=MINICOPY=OPTIONAL 修飾子を指定したのと同じです。 ビットマップが存在しない場合,フルコピーが行われます。 MOUNT コマンドで /POLICY=MINICOPY=OPTIONAL 修飾子を使う例は, 次のとおりです。
シャドウセット (DSA5) が既にマウントされていて, このシャドウセット・メンバ ($4$DUA0) にビットマップが存在している場合,このコマンドでは,ミニコピー操作によって, デバイス $4$DUA0 がシャドウセットに追加されます。 ビットマップが存在していない場合, このコマンドはフルコピーで $4$DUA0 を追加します。 ミニコピー操作が行われるときだけ MOUNT コマンドを成功させたいときは, /POLICY=MINICOPY とだけ (つまり,=OPTIONAL を省略) 指定します。 この場合,ビットマップが使えなければ,マウントは失敗します。 OpenVMS Cluster システムでは, マスタ・ビットマップ は, ビットマップを作成する DISMOUNT や MOUNT のコマンドを発行したノードに作成されます。 マスタ・ビットマップが作成される際に,シャドウセットがマウントされているクラスタ内のすべてのノードでは,ノードにメモリが十分あれば, ローカル・ビットマップ が自動的に作成されます。 マスタ・ビットマップには,シャドウセットをマウントしているクラスタ内のすべてのノードでのシャドウセットへの書き込みがすべて記録されます。ローカル・ビットマップには, ローカル・ノードでのシャドウセットへの書き込みがすべて記録されます。 ローカル・ビットマップを持つノードがシャドウセットの同じ論理ブロック番号 (LBN) へ複数回書き込みを行っても, 最初の書き込みの LBN だけがマスタ・ビットマップに送られることに注意してください。 ミニコピー操作では,LBN がアップデートされた事実だけを使い, その LBN が変更された回数は使いません。 ローカル・ビットマップを作成するための十分なメモリがノードに存在しない場合,そのノードは,書き込みのたびにメッセージを直接マスタ・ビットマップに送ります。 これにより,アプリケーションの書き込み性能が落ちます。 SHOW DEVICE,SHOW CLUSTER,および DELETE のコマンドが, ビットマップを管理するために機能拡張されました。 あるシャドウセットにビットマップが存在するかどうかは, DCL コマンドの SHOW DEVICE/FULL device-name で調べることができます。 シャドウセットがビットマップをサポートしていれば,device supports bitmaps が, bitmaps active と no bitmaps active のいずれかとともに,表示されます。 デバイスがビットマップをサポートしていなければ, ビットマップについてのメッセージは何も表示されません。 以下のコマンド例は, どのビットマップもアクティブでないことを示しています。
DCL コマンドの SHOW DEVICE/BITMAP device-name で, ノード上の各々のビットマップの ID を調べることができます。 SHOW DEVICE の /BITMAP 修飾子は,/FULL 以外の修飾子と組み合わせることはできません。SHOW DEVICE/BITMAP の表示には, 省略形と完全形があります。省略形がデフォルトです。 どのビットマップもアクティブでない場合,ビットマップ ID は表示されません。 no bitmaps active というメッセージが表示されます。 以下の例は,SHOW DEVICE/BITMAP の表示です。
以下の例は,SHOW DEVICE/BITMAP/FULL の表示です。
以下の例に示すように,SHOW CLUSTER 表示の中で ADD BITMAPS コマンドを発行することによって,ビットマップ情報の表示を指定することができます。
この例で,MINICOPY は,ノード CSGF1 と CSGF2 がミニコピー操作をサポートできることを意味します。 クラスタ・ノードがミニコピーをサポートしていない場合,MINICOPY の代わりに UNSUPPORTED が表示され, クラスタ内でミニコピー機能が無効になっています。 ミニコピー操作が完了すると, 対応するビットマップは自動的に削除されます。 1 つ以上のビットマップを削除したい場合があります。 ビットマップを削除したい理由には,以下のものがあります。
ビットマップは,/BITMAP 修飾子を指定して DCL コマンドの DELETE を実行することで削除できます。 ビットマップ修飾子を使って,削除したいビットマップの ID を指定することができます。 たとえば,次のとおりです。
ビットマップが性能に与える影響は,いくつかの要素で決まります。 すなわち,ローカルおよびマスタのビットマップ間のメッセージ・トラフィック,各々のビットマップに必要なメモリ量,SetBit メッセージの非同期処理,およびシーケンシャル I\O に対する SetBit メッセージの低減です。 メッセージ・トラフィックはメッセージ・モードを変更することで調整できます。 デフォルトのモードはシングル・メッセージ・モードです。 バッファード・メッセージ・モードでは,システム全体の性能が改善されますが, 各々のプロセスの書き込みがマスタ・ビットマップに記録されるまでの時間が通常長くなります。 これらのモードについての詳細は, 3.4 項 「ビットマップ・システム・パラメータ」 を参照してください。
1 つのシャドウセットで複数のマスタ・ビットマップ・ノードを持つ場合があります。 OpenVMS Version 8.3 以前では,SetBit メッセージは複数のマスタ・ビットマップ・ノードへ同期的に送信されます。 最初のリモート・マスタ・ビットマップ・ノードから SetBit メッセージに対する応答を受信すると,そのメッセージが次のマスタ・ビットマップ・ノードへ送信されます。 この処理がすべてのリモート・マスタ・ビットマップ・ノードについて完了すると,I/O が再開されます。 OpenVMS Version 8.4 では,SetBit メッセージはすべてのマスタ・ビットマップ・ノードへ非同期に送信されます。 すべてのマスタ・ビットマップ・ノードから応答を受けとると I/O が再開されるため, ビットマップ・コードによる I/O の遅れが低減されます。 以前のバージョンでは,ディスクに対するシーケンシャルな書き込みが発生すると,リモート・ビットマップのシーケンシャルなビットを設定する Setbit メッセージが送信されていました。 OpenVMS Version 8.4 では, 書き込みビットマップ・コードは,ビットマップのどの場所に前のビットが設定されているかを認識するようになりました。 これにより,シーケンシャルな書き込みが続く場合により少ない Setbit メッセージで済むように,追加ビットが設定されます。 シーケンシャルな I/O が続くとの想定により Setbit メッセージが 10 分の 1 ほどに低減され,この結果,シーケンシャル書き込みの I/O レートが改善されます。 Volume Shadowing for OpenVMS は, オンライン・バックアップ・メカニズムとして使うことができます。 アプリケーションの設計や操作手順が正しければ, マウントされているシャドウセットから削除したシャドウセット・メンバは, バックアップに使えます。 Volume Shadowing for OpenVMS を使って,ファイル・システムやアプリケーション・データベースのコピーをバックアップ用に取得する標準的な方法は,仮想ユニットがマージ状態にないことを確認し, 仮想ユニットをディスマウントし,その後仮想ユニットを, メンバを 1 つ減らした状態でマウントし直すことです。 OpenVMS バージョン 7.3 より前では, マウントされていてアクティブに使われている仮想ユニットから, バックアップ用にシャドウセット・メンバを個別にディスマウントするときの, 一般的な制限事項についてのドキュメントがありました。 この制限事項は,メンバを削除する際の,ファイル・システム, アプリケーション・データ, 仮想ユニットに格納されているデータベースのデータ整合性に関するものでした。 しかし,この制限事項はアプリケーションの真の連続運転 (24 時間 x 7日) が必要なときには受け入れ難いため,アプリケーション・ソフトウェアとシステム管理が連携することで,適切なデータ整合性が確保できる場合は, この制限事項は不要と考えられます。 現在サポートされている OpenVMS のリリースでは, 以下の条件が満たされていれば,DISMOUNT を使って, データのバックアップ用にシャドウセットからメンバを削除することができます。
メンバを削除するには,以下の手順に従ってください。
シャドウセット・メンバを削除すると, いわゆる クラッシュ対応コピー ができます。 つまり,削除されたメンバに格納されているデータのコピーは, その時点でシステム障害が発生した場合と同レベルの整合性を持ったものです。 クラッシュ対応コピーからの復旧は,アプリケーションの設計, システムとデータベースの設計,そして操作手順によって保証されます。 復旧を保証する手順は,アプリケーションとシステムの設計に依存するため, サイトごとに異なります。 システム障害が発生したときの状態は,データが書き込まれていない, データを書き込もうとしたがディスクに書き込まれていない,というものから, すべてのデータが書き込まれたというものまで多岐にわたります。 以下の項では,障害が発生したときに処理中の書き込みがあった (すなわち,書き込もうとしたがディスクに書き込まれていない) 場合に, 関係するオペレーティング・システムの要素と動作を説明しています。 使っている環境でデータ整合性を確保する手順を確立する場合に, これらの問題を考慮してください。 データ整合性を達成するためには,アプリケーションの動作が停止され, すべての操作が停止している必要があります。操作が進行していると, バックアップされたアプリケーション・データとの不整合がおきます。 多くの対話型アプリケーションでは,ユーザが操作しなければ, 動作が停止する傾向がありますが,アプリケーションの動作を確実に停止するには, アプリケーション自身に意識させる必要があります。 ジャーナリングやトランザクションの技法が, 進行中の不整合の問題解決に使えますが,使うためには細心の注意が必要です。 また,アプリケーションの他に,バックアップ・データに影響を与える可能性のある, システムの対話型操作も,停止する必要があります。 RMS ファイル・アクセスを使っているアプリケーションでは, 以下の問題を認識しておく必要があります。 アプリケーションのオプションによっては,RMS では, アップデートの完了がアプリケーションに報告された後でも, ディスクへの書き込みが遅延されることがあります。ディスク上のデータは, RMS バッファ・キャッシュに対するその他の要求に対応したり, 共有ファイル環境では協調プロセスが同じデータまたは近くのデータを参照することによって,アップデートされます。 順編成ファイルへの書き込みは,常にメモリにバッファされ, バッファが満杯になるまでディスクへ書き込まれません。 索引編成ファイルで 1 つのレコードをアップデートすると, 複数のインデックスのアップデートが必要になることがあります。 これらのアップデートは,アプリケーションのオプションによっては キャッシュされることがあります。インデックスのアップデートが 不完全なときにシャドウセットを分割すると, インデックスとデータ・レコードの間に,不整合が生ずることがあります。 遅延書き込みが無効になっていれば,RMS は不完全なインデックス・アップデートで, アップデートが失われることはあっても, インデックスが壊れることがないような順序で書き込みを処理します。 しかし,遅延書き込みが有効になっていると, インデックス・アップデートを書き込む順番が予測不可能になります。 種々の言語の入出力ライブラリでは,RMS の種々のバッファリングと遅延書き込みのオプションを使っています。言語によっては, アプリケーションが RMS のオプションを制御できるものがあります。 アプリケーションでは,データ整合性を確保するために,$FLUSH サービスを使うことができます。 $FLUSH サービスは,アプリケーションで完了したすべてのアップデート (順編成ファイルの EOF も含む) が, ディスクに記録されたことを保証します。 OpenVMS では,プロセスおよびグローバル・セクション・サービスを通じて, 仮想メモリのバッキング・ストアとしてのファイルをアクセスすることができます。 このモードのアクセスでは, プロセスの仮想アドレス空間はファイル・データのキャッシュの働きをします。 OpenVMS では,バッキング・ファイルを強制的にアップデートするための $UPDSEC サービスを用意しています。 Oracle® のようなデータベース管理システムは,ジャーナリングやトランザクションによる回復機能が組み込まれているので,シャドウセットの分割によるバックアップに適しています。 シャドウセット・メンバをディスマウントする前に, 次の形式の SQL コマンドを使って, Oracle データベースを " バックアップ・モード " にする必要があります。
このコマンドによって, テーブルスペースの各々のコンポーネント・ファイルの回復ポイントが設定されます。 回復ポイントは,データベースのバックアップ・コピーによって, 後で整合状態に回復できることを保証します。 バックアップ・モードは,次の形式のコマンドを使って終了させます。
データベース・データ・ファイルと同時に, データベース・ログと制御ファイルもバックアップすることが重要です。 基本的な OpenVMS ファイル・システムは,空きスペースをキャッシュします。 ただし,すべてのファイル・メタデータ操作 (たとえば,作成や削除) は, 「注意深いライト・スルー」方式で実行されるため,結果は, アプリケーションに完了が報告される前に,ディスク上で確定しています。 空きスペースの一部は失われる可能性がありますが, 通常のディスク再構築で回復できます。 シャドウセット・メンバをディスマウントするときにファイル操作が進行中だった場合は,ちょっとした不整合が起きることがありますが, これらは ANALYZE/DISK で修復できます。 注意深く書き込みの順番を守れば, ディスクを修復する以前に, データの不整合でディスクの完全性が危うくなることはありません。 OpenVMS は,ファイル・データをキャッシュするために,仮想入出力キャッシュ (VIOC) を使用しています。 ただし,このキャッシュはライト・スルーです。OpenVMS バージョン 7.3 では, 拡張ファイル・キャッシュ (XFC) が導入されましたが, これもライト・スルーです。 $QIO サービスを使ったファイル書き込みでは,呼び出したプログラムに完了が通知される前にディスクへの書き込みが完了しています。 マルチ・シャドウセットの場合,バックアップのためにシャドウセットを分割するのは,大仕事です。 シングル・シャドウセットのメンバを削除するのは簡単ですが,マルチ・シャドウセットから複数のメンバを同時に削除する手段はありません。 整合性を維持してバックアップする必要があるデータがマルチ・シャドウセットにまたがっている場合, すべてのシャドウセット・メンバをディスマウントする間, アプリケーションの動作は停止している必要があります。 そうしないと,データがマルチ・ボリュームでクラッシュ対応でなくなります。 関連するシャドウセットのディスマウントを高速化するために, コマンド・プロシージャその他の自動化技法を使うことをお勧めします。 マルチ・シャドウセットに Oracle データベースが格納されている場合は, データベースの回復性を確保するために, Oracle データベースをバックアップ・モードにしておいてください。 OpenVMS のソフトウェアの RAID ドライバは,マルチ・シャドウセットの特別な場合です。 ソフトウェア RAID セットは,それぞれのシャドウセットが複数のメンバで構成されるマルチ・シャドウセットで構成できます。 ソフトウェア RAID ドライバの管理機能によって, 構成要素のそれぞれのシャドウセットから,不可分な操作でメンバを 1 つディスマウントできます。 RAID ソフトウェアのもとで使われるシャドウセットの管理は,整合性を確保するために, 常に RAID 管理コマンドを使って行う必要があります。 |
|