日本−日本語 |
|
|
HP OpenVMS: Volume Shadowing for OpenVMS 説明書第6章 シャドウセットの整合性の保証 |
|
目次 ボリューム・シャドウイングは,4 つの基本機能を実行します。 どのディスク入出力サブシステムでも同じですが,最も重要な 2 つの機能は, 読み取り書き込みの要求を満たすことです。残りの 2 つの機能は, コピーとマージであり,これらの機能はシャドウセットの管理に必要です。 コピー操作とマージ操作は,データの高可用性を実現するための基盤です。 ある種の状況のもとでは,Volume Shadowing for OpenVMS は, すべてのシャドウセット・メンバの対応する LBN が同じ情報を持つことを保証するために,コピー操作やマージ操作を行う必要があります。 ボリューム・シャドウイングではこれらの操作は自動的に実行されますが, この章ではこれらの操作の概要を説明します。 コピー操作とマージ操作は,アプリケーションやユーザ・プロセスがアクティブな シャドウセット・メンバに対して読み書きを実行している最中に行われます。 このため,現在のアプリケーションの処理には最小の影響しか与えません。 シャドウセットの存続期間に,あるシャドウセット・メンバと他のシャドウセット・メンバとの関係が,変化することがあります。 シャドウセットは,すべてのメンバが同じデータを持っていると考えられるときは,安定状態だと見なされます。 シャドウセットの構成が変化するのは,以下の理由で避けられません。
たとえば,オペレータがシャドウセットのメンバをディスマウントし, シャドウセットにそのメンバ・ディスクをマウントし直す場合を考えます。 メンバが欠けている間に,シャドウセットの残りのメンバに, 書き込み操作が行われたかもしれません。したがって, シャドウセットにマウントし直すメンバの中の情報は, シャドウセットの残りのメンバとは異なっている可能性があります。 このような場合に,コピー操作 (あるいは,ミニコピー操作) が必要になります。 別の例として,OpenVMS Cluster 構成のいくつかのシステムにシャドウセットが マウントされている状況を考えます。システムの 1 つが障害を起こすと, シャドウセットのメンバのデータは, 障害を起こしたシステムが実行していた未完了の書き込み操作のために, 不一致が発生しているかもしれません。 シャドウイング・ソフトウェアは,マージ操作を実行してこの状況を解消します。 ボリューム・シャドウイングでは,どのような状況でも, コピー操作やマージ操作によって,シャドウセットに書き込まれたデータの整合性が保証されます。 シャドウセットは,いくつかのメンバでコピー操作やマージ操作が行われているときは,遷移状態 であると見なされます。 また,ボリューム・シャドウイングでは, 以下の方法によってもシャドウセットの整合性を維持します。
ボリューム・シャドウイングでは,シャドウセットの整合性を維持するために,2 つの内部メカニズムを使います。
表 6-1 「ストレージ制御ブロック (SCB) 内の情報」 は,SCB に含まれる情報の一部です。 表 6-1 ストレージ制御ブロック (SCB) 内の情報
ボリューム・シャドウイング・ソフトウェアは,シャドウセットをマウントするコマンドを受け取ると,即座にコピー操作やマージ操作が必要かどうかを判断します。 いずれかが必要な場合,このソフトウェアはデータの不一致を無くすために操作を実行します。 どちらのディスクがコピー操作のターゲットになるか不明の場合は, MOUNT コマンドを使うときに,/CONFIRM または /NOCOPY の修飾子を指定します。 すべてのコピー操作を禁止する場合は,/NOCOPY 修飾子を使います。 シャドウセットを対話型でマウントするときは, /CONFIRM 修飾子を指定して MOUNT がコピー操作のターゲットを表示し, 操作を開始する前に許可を得るようにします。 シャドウセット・メンバを個別にディスマウントする際, ハード・ディスク障害のときと似た状況になります。 仮想ユニット上のファイルがオープンされたままなので,削除された物理ユニットは不正にディスマウントされたとマークされます。 シャドウセットから 1 つのデバイスを削除すると, 残りのシャドウセット・メンバの世代番号がカウントアップされ, 以前のシャドウセット・メンバより新しくなったことがわかるようにされます。 この世代番号によって,メンバをシャドウセットに再びマウントするときに, 正しいコピー操作が行えるようになります。 コピー操作の目的は,ソース・ディスクのデータをターゲット・ディスクに複製することです。 コピー操作が終われば,両方のディスクの内容は同じになり, ターゲット・ディスクもシャドウセットの完全なメンバになります。 シャドウセットに対する読み取り書き込みのアクセスは, ディスクのコピー操作が行われている間も中断されません。 DCL コマンドの MOUNT は,ディスクが既存のシャドウセットにマウントされる際に, コピー操作を開始します。コピー操作は本質的には単純です。 ソース・ディスクから読み取りが行われ,データがターゲット・ディスクに書き込まれるだけです。 この操作は通常,LBN レンジと呼ばれる複数ブロックの単位で実行されます。 OpenVMS Cluster 環境では, シャドウセットをマウントしているすべてのシステムは, ターゲット・ディスクを認識しており,それをシャドウセットの一部として持っています。 ただし,実際には ただ 1 つの OpenVMS システムだけが, コピー操作を管理しています。 コピー操作には,次の 2 つの複雑な問題があります。
Volume Shadowing for OpenVMS では,オペレーティング・システムのバージョン番号やハードウェア構成に従ってこれらの状況を処理します。 OpenVMS バージョン 5.5–2 より前のソフトウェアを実行しているシステムでは, コピー操作は OpenVMS ノードで 補助なし コピー操作として実行されます (6.2.1 項 参照)。 バージョン 5.5–2 以降では,新しいコピー機能が実装されたコントローラ上に構成されたシャドウセット・メンバへのコピー操作が機能強化されています。 この機能強化によって,コントローラがコピー操作を実行できるようになりました。 この操作は,補助付きコピーと呼ばれます (6.2.2 項 参照)。 OpenVMS バージョン 7.3 で,ホストベースのミニコピー操作が導入されました。 ミニコピーとその実現技術 (書き込みビットマップ) は,OpenVMS Alpha システム上で完全に実装されています。 OpenVMS VAX システムでは,この機能を使用したシャドウセットに書き込みを行うことができます。 ミニコピー操作についての詳細は,第7章 「ミニコピーによるデータのバックアップ (Integrity および Alpha)」を参照してください。 Volume Shadowing for OpenVMS は,同じクラスタで,補助付きシャドウセットと補助なしシャドウセットの両方をサポートします。シャドウセットを作成したり, 既存のシャドウセットにメンバを追加したり,システムをブートするときは, いつでもシャドウイング・ソフトウェアが,変化した構成に含まれるデバイスを調べ, デバイスが補助付きコピーをサポート可能かどうかを判断します。 補助なしコピー操作は,OpenVMS システムによって実行されます。 ソース・メンバからターゲットへの実際のデータ転送は, ホスト・ノードのメモリを経由して行われます。 補助なしコピー操作は CPU をそれほど使用しませんが,入出力を多用し, コピーを管理しているノードの CPU リソースを少し消費します。 補助なしコピー操作は,インターコネクトの転送能力も消費します。 コピー操作を管理するシステムでは,ユーザとコピー入出力処理が, 利用可能な入出力転送能力を平等に取り合います。 クラスタ内の別のノードでは,ユーザの入出力処理が通常どおりに実行され, 他のすべてのノードとの間でコントローラのリソースを取り合います。 コピー操作はユーザの入出力処理の負荷が増えるにつれ, 時間がかかるようになることに注意してください。 ボリューム・シャドウイング・ソフトウェアは, 補助付きコピー操作機能 (6.2.2 項 参照) を使うことができない場合,補助なしコピー操作を実行します。 補助なしコピー操作になる場合の多くの理由は,ソース・ディスクとターゲット・ディスクが同じコントローラ・サブシステムに接続されていないことです。 補助なしコピー操作では,2 つのメンバを 1 つコマンド行で指定してシャドウセットに追加した場合,2 つのディスクを同時に補助なしコピー操作のターゲットにすることができます。 補助なしコピー操作の対象となるディスクは, クラスタ内のどのコントローラに接続されていても構いません。 コピー操作の際には,ディスク全体を移動する, コピー済み LBN レンジと未コピーの LBN 領域を区切る論理的な垣根が作成されます。 この垣根を コピー・フェンス と呼びます。コピー操作を管理しているノードはコピー・フェンスの正確な位置を認識しており, クラスタ内の別のノードに定期的にコピー・フェンスの位置を通知します。 それにより,コピー操作を実行しているノードがシャットダウンしても, 他のノードが,コピー操作を最初からやり直すのではなく途中から引き継ぐことができます。 コピー操作の際,I/O 要求は次のように処理されます。
補助なしコピー操作を完了するために必要な入出力処理の時間と量は, ソース・ディスクとターゲット・ディスクのデータがどれだけ似ているかに大きく依存します。 データが類似していないメンバをコピーする場合は,データが類似しているメンバをコピーする場合と比べて, 少なくとも 2.5 倍の時間がかかります。 補助付きコピー操作は,ホスト・ノードのメモリを経由するデータ転送は行いません。 実際のデータ転送はコントローラ内で, 直接,ディスク間のデータ転送として行われ, データがホスト・ノードのメモリを通過することはありません。 したがって,補助付きコピー操作では,システムへのインパクト, 入出力転送能力の消費,コピー操作に要する時間が少なくなります。 補助付きコピー操作の利点を得るためには,シャドウセット・メンバは同じコントローラからアクセスできる必要があります。 シャドウイング・ソフトウェアは,DCD (ディスク・コピー・データ) コマンドという特別な MSCP コピー・コマンドを使って, コントローラに特定の LBN レンジをコピーすることを指示することで, コピー操作を制御します。補助付きコピーの場合, コピーのアクティブ・ターゲットになるのは,一時期に 1 つのディスクだけです。 OpenVMS Cluster 構成では,コピー操作を管理しているノードが, LBN レンジごとに,コントローラに MSCP DCD コマンドを発行します。 そうするとコントローラがディスク間コピーを実行するので, インターコネクトの転送能力を消費することはありません。 デフォルトでは,Volume Shadowing for OpenVMS ソフトウェア (OpenVMS バージョン 5.5–2 以降) とコントローラは, ソース・ディスクとターゲット・ディスクが同じ HSC または HSJ のコントローラを通してアクセスできる場合, 自動的に補助付きコピーを有効にします。 以下の場合には,シャドウイングは補助付きコピーを自動的に無効にします。
補助付きコピー機能を無効にしたり,再び有効にする方法については, 6.4 項 を参照してください。 フルマージ操作やミニマージ操作の目的は,シャドウセット・メンバのデータを比較し,すべてのメンバが各論理ブロック (各ブロックは,その論理ブロック番号 [LBN] によって識別されます) に同じデータを持つようにすることです。 フルマージ操作やミニマージ操作は,次のイベントのいずれかが発生したときに開始されます。
マージ操作は,シャドウセットをマウントしている OpenVMS システムの 1 つで 管理されます。シャドウセットのメンバは, 同じデータを持っているか確認するために,互いに物理的に比較されます。 これはボリューム全体にわたるブロックごとの比較で行われます。 マージが進むにつれ,内容が異なるブロックはコピー操作によって (古いまたは新しいデータで) 同じ内容にされます。 シャドウイング・ソフトウェアには,どのメンバが新しいデータを持っているかわからないので, 完全なメンバであればどれでもマージ操作の ソース・メンバになります。 フルマージ操作は,非常に時間のかかる処理です。 操作中も,アプリケーションの I/O は続行されますが,速度は遅くなります。 ミニマージ操作では,速度が大幅に速くなります。 揮発性のコントローラ・ストレージに記録されている書き込み操作の情報を使用して,ミニマージは,書き込み操作が行われたと分かっているシャドウセット・エリアだけをマージすることができます。 これにより,フルマージ操作で必要とされるボリューム全体の走査が不要となり,システム I/O リソースの消費を減らすことができます。 シャドウイング・ソフトウェアは, 常に 1 つのメンバを (OpenVMS Cluster にまたがる) マージ操作の論理マスタとして選択します。 データの違いは,マージ・マスタから すべての ほかのメンバへ 情報を伝えることで解消されます。 あるシャドウセットでマージ操作に責任を持つシステムは,LBN レンジの整合を取った後,このシャドウセットの マージ・フェンス をアップデートします。このフェンスはディスク全体にわたって「移動」し, シャドウセットのマージが終わった部分と終わっていない部分を区切ります。 フェンスのマージ済みの側へのアプリケーションからの読み取り入出力要求は, シャドウセットのどのソース・メンバによっても対応が行えます。 フェンスの未マージの側へのアプリケーションからの読み取り入出力要求も, シャドウセットのどのソース・メンバによっても対応が行えますが, データが異なっている (データを比較して検出される) 場合は, 要求したユーザまたはアプリケーションにデータが返される 前に, シャドウセットのすべてのメンバで訂正されます。 このように読み取り要求のときにデータの非整合を動的に訂正する方式によって, マージ操作のどの時点でシャドウセット・メンバが障害を起こしても, データ可用性に影響を与えないようになっています。 Volume Shadowing for OpenVMS は,同じクラスタ内で補助付きマージ操作と補助なしマージ操作の両方をサポートします。 シャドウセットの作成, 既存シャドウセットへのメンバの追加,またはシステムのブートのとき, シャドウイング・ソフトウェアは,変更された構成の各々のデバイスがマージ補助機能をサポートしているかどうかを調べます。 OpenVMS バージョン 5.5–2 より前のソフトウェアを実行しているシステムでは, マージ操作はシステムによって行われます。 これは,補助なしマージ操作と呼ばれます。 ユーザの入出力要求へ与える影響を最小にするために, ボリューム・シャドウイングでは,ユーザやアプリケーションの入出力要求がマージ操作より優先されるようなメカニズムを採用しています。 シャドウ・サーバ・プロセスはマージ操作をバックグラウンド・プロセスとして実行し,障害が発生した場合のユーザ入出力処理への影響を少なくしています。 このため,ユーザの入出力要求が多い場合は,補助なしマージ操作は完了までの時間が長くなります。 また,マージ操作が完了する前に別のノードで障害が発生すると,進行中のマージは中断され,新しいマージが最初から行われます。 このような遅れがありますが,マージ操作中のデータ可用性と整合性は完全に保たれることに注意してください。 すべてのシャドウセット・メンバは同程度に正しいデータを保持しています。 OpenVMS バージョン 5.5–2 から,補助付き マージ機能を備えたコントローラ上に構成されたシャドウセット・メンバでのマージ操作が機能強化されています。 補助付きマージ操作は,ミニマージ とも呼ばれます。 ミニマージ機能は,マージ操作に必要な時間を著しく短縮します。 通常,ミニマージは数分で完了します。 HSC コントローラと HSJ コントローラはミニマージをサポートしています。 ホストベース・ミニマージは,OpenVMS Alpha Version 7.3-2 以降および OpenVMS Integrity Version 8.2 以降でサポートされます。 詳細については 第8章を参照してください。 ミニマージは,コントローラのメモリに記録されている書き込み操作の情報を使うことで,シャドウセットで書き込み動作が実際に行われていた領域だけを,マージします。 これにより,補助なしマージでは必要になる全体の読み取りと比較スキャンが不要になり,システムの入出力リソースの消費が減少します。 コントローラ・ベースの書き込みログには,シャドウセットのどの LBN に (故障したノードからの) 未完了の書き込み入出力要求があるかについて, 正確な情報が記録されています。 補助付きマージ操作を実行するノードは, シャドウセットの中で整合が取れていない可能性のある LBN をマージするために, この書き込みログを使います。1 メンバのシャドウセットでは, コントローラ・ベースの書き込みログは行われません。 1 つの OpenVMS システムでシャドウセットをマウントしているだけなら, コントローラ・ベースの書き込みログは行われません。
ミニマージ操作は,OpenVMS バージョン 5.5–2 以降が稼働しているノードで使えます。ボリューム・シャドウイングは, シャドウセットの物理メンバへのアクセスを行うコントローラがミニマージをサポートしていれば,自動的にミニマージを有効にします。 サポートしているコントローラのリストについては,『『HP Volume Shadowing for OpenVMS Software Product Description (SPD 27.29.xx)』』を参照してください。 ミニマージ操作はシャドウセット・メンバが異なるコントローラに接続されていても行えることに注意してください。 これは,書き込みログのエントリが,コントローラ単位でシャドウセット・メンバごとに管理されているからです。 Volume Shadowing for OpenVMS は, 以下の状況で,自動的にミニマージを無効にします。
以下の遷移状態の場合も,ミニマージ操作が無効になります。
この節では,HSC コントローラで補助付きコピーとミニマージの操作を制御する方法を説明します。 HSJ コントローラではこれらの操作を制御することはできません。 HSC コントローラのマージとコピーの性能補助機能を無効にするには, 補助機能を無効にしたい各々の HSC コントローラで,以下の手順を実行します。
これらのコマンドを入力し終わると,HSC コントローラは自動的にリブートします。
補助機能を再び有効にするには,HSC コントローラで同様の手順を実行しますが, SET SERVER DISK コマンドには,/HOST_BASED_SHADOWING 修飾子を指定します。 補助機能が有効か無効かを調べるには,HSC コマンドの SHOW ALL を使います。 以下の例は,シャドウイング補助ステータスを示す,SHOW ALL 表示の一部です。
システム,コントローラ,あるいはディスクに障害が発生した場合, シャドウイング・ソフトウェアは,適切なコピー,マージ, あるいはミニマージの操作を行ってデータ可用性を維持します。 以下の節では,障害が発生したときに実行される一連の動作を説明します。 この動作は,障害の種類と, シャドウセットが安定状態にあったか遷移状態にあったかによって異なります。 安定状態からの遷移
遷移が完了すると,ディスクは同じ情報を持つようになり, シャドウセットは安定状態に戻ります。 コピーおよびミニコピー操作中の遷移 以下のリストは,コピーおよびミニコピー操作が行われているシャドウセットに起きる遷移を説明しています。 特に明記されない限り,遷移は両方のコピー操作に適用されます。
シャドウセットのコピー操作の最中にノード障害が発生すると, マージの動作は,シャドウイング性能補助機能が有効か無効かで異なります。
ミニマージ操作中の遷移 シャドウセットがミニマージの操作中だった場合,以下の遷移がおきます。
マージ操作中の遷移 以下のリストでは,性能補助機能が使えない場合に, マージ操作を実行しているシャドウセットにおきる遷移を説明しています。
例 6-1 「新しいシャドウセットを作成する際のコピー操作」 は, シャドウセットのメンバではなかった 2 つのディスク・ボリュームをマウントしてシャドウセットを作成したときに,何が起きるかを示しています。 いずれのディスク・ボリュームもシャドウセットに属していなかったので, マウント・ユーティリティ (MOUNT) は,MOUNT コマンドに指定された最初のディスクがソース・メンバであると見なします。 マウント・ユーティリティがディスクのボリューム・ラベルをチェックしたとき, それらのディスクが互いに異なっていることを検出し, このユーティリティは自動的にコピー操作を実行します。 この例で,DSA0 は仮想ユニット名,$1$DUA8 と $1$DUA89 はディスク・ボリューム名,そして SHADOWDISK はボリューム・ラベルです。 例 6-1 新しいシャドウセットを作成する際のコピー操作
例 6-1 「新しいシャドウセットを作成する際のコピー操作」 の SHOW DEVICE の表示は, コピー操作中 (遷移状態) のシャドウセットを示しています。 $1$DUA8 と $1$DUA89 の SCB 情報は,これらのデバイスがシャドウセットに属していなかったことを示しているので,シャドウイング・ソフトウェアはコマンド行に指定された最初のデバイス ($1$DUA8) をコピー操作のソースとして使います。 デバイス・ステータスの「ShadowSetMember」は,$1$DUA8 デバイスがソース・シャドウセット・メンバであることを示し,「ShadowCopying」は物理デバイス $11$DUA89 がコピー操作のターゲットであることを示しています。 新しいメンバを既存のシャドウセットにマウントするときに,その追加するデバイスが以前は同じシャドウセットのメンバであった場合を考えます。 この場合は,新しいメンバのボリューム・ラベルは, 現在のシャドウセット・メンバのボリューム・ラベルに一致していますが, 新しいメンバの MOUNT 世代番号が,現在のメンバの世代番号に比べると, 古くなっています。したがって,マウント・ユーティリティはこのメンバに対し, 自動的にコピー操作を実行します。 例 6-2 「既存のシャドウセットへメンバを追加する際のコピー操作」 は MOUNT コマンドの形式と, DSA9999 仮想ユニットで表わされるシャドウセットへ $3$DIA12 デバイスを追加するときに返される MOUNT ステータス・メッセージを示しています。 MOUNT コマンド行では現在シャドウセットにあるメンバ・ユニットをリストする必要がないことに注意してください。 例 6-2 既存のシャドウセットへメンバを追加する際のコピー操作
例 6-3 「シャドウセットの再構築でコピー操作を行わない場合」 は,あるノードで 3 メンバのシャドウセットを解除し, その後すぐに別のノードにマウントし直すときに,何が起きるかを示しています。 マウント・ユーティリティが各々のメンバのボリューム情報を調べると, ボリューム情報がシャドウセット内で統一されていることがわかります。 したがって,シャドウセットをマウントする際に,コピー操作は不要です。 例 6-3 「シャドウセットの再構築でコピー操作を行わない場合」 では,DSA10 が仮想ユニットで,$3$DUA10,$3$DUA11, $3$DUA12 がメンバ・ボリュームです。例の最初の部分には, SHOW DEVICE コマンドの出力が表示されていますが, これはシャドウセットがマウントされ,安定状態にあることを示しています。 その後,ユーザは,DSA10 シャドウセットをディスマウントし, すぐにマウントし直しています。 例 6-3 シャドウセットの再構築でコピー操作を行わない場合
例 6-4 「シャドウセットの再構築の際のマージ操作」 は, マージ操作の際の SHOW DEVICE コマンドの出力を示しています。 システム障害が発生すると,ボリューム情報は各々のシャドウセット・メンバが正常にディスマウントされなかったことを示す状態になります。 ノードをリブートした後で再び MOUNT コマンドを発行すると, シャドウイング・ソフトウェアはそのシャドウセットで自動的にマージ操作を実行します。 |
|