以下に、本発明の実施形態を図面を参照して説明する。なお、本発明は以下に示す実施形態によって限定されるものではない。
<第1実施形態>
図1は、本発明の第1の実施の形態の計算機システムの構成ブロック図である。
この計算機システムは、メインサイト1とリモートサイト2とがネットワーク15によって接続されている。
メインサイト1は、ホスト計算機10A、ディスク制御装置20A及びディスク装置30Aを含む。また、リモートサイト2は、ホスト計算機10B、ディスク制御装置20B及びディスク装置30Bを含む。
ホスト計算機10Aは、ディスク装置30Aに格納されるデータの入出力を、ディスク制御装置20Aに要求する。ディスク制御装置20Aは、ホスト計算機10Aからの要求に基づいて、ディスク装置30Aに格納されているデータの読み出し/書き込みを制御する。
また、同様に、ホスト計算機10Bは、ディスク装置30Bに格納されるデータの入出力を、ディスク制御装置20Bに要求する。ディスク制御装置20Bは、ホスト計算機10Bからの要求に基づいて、ディスク装置30Bに格納されているデータの読み出し/書き込みを制御する。
また、ディスク制御装置20Aは、ディスク装置30Aに格納されているデータを、ディスク制御装置20Bを介して、ディスク装置30Bにコピーする処理を実行する。
ホスト計算機10Aは、CPU11、メモリ12及びインターフェース13を備える。
CPU11は、メモリ12に格納されているプログラム等を実行し、そのプログラムに規定された処理を実行する。メモリ12は、ホスト計算機10Aで稼働するプログラムやデータ等を格納する。インターフェース13は、ディスク制御装置20Aとでデータを送受信する。
ディスク制御装置20Aは、インターフェース21、CPU22、メモリ23及びディスクインターフェース24を備える。
インターフェース21は、ホスト計算機10A又はディスク制御装置20Bとでデータを送受信する。CPU22は、メモリ23に格納されているプログラム等を実行し、そのプログラムに規定された処理を実行する。メモリ23は、ディスク制御装置20Aで稼働するプログラムやデータ等を格納する。ディスクインターフェース24は、ディスク装置30Aとでデータを送受信する。また、インターフェース21は、ディスク制御装置20Bに接続されたネットワーク150が接続されている。このネットワーク150は、LAN(Local Area Network)やSAN(Storage Area Network)等によって構成される。
ディスク装置30Aは、複数の磁気ディスク31を備える。この磁気ディスク31によって、論理ボリュームが構成されている。
リモートサイト2に含まれるホスト計算機10B、ディスク制御装置20B及びディスク装置30Bの構成は、ホスト計算機10A、ディスク制御装置20A及びディスク装置30Aの構成とほぼ同一である。なお、ホスト計算機10Bは、ディスク装置30Bに格納されるデータの入出力を、ディスク制御装置20Bに要求するよう構成されている。なお、これらは、特に区別する場合を除き、ホスト計算機10、ディスク制御装置20又はディスク装置30とも記載する。
図2は、前述のように構成された計算機システムの機能ブロック図である。
ホスト計算機10Aは、アプリケーションプログラム101とOS102とが稼働している。これらは、前述のように、メモリ12に格納されているプログラムをCPU11が読み出して実行することによって、それぞれの機能が実現されている。
アプリケーションプログラム101は、ディスク装置30Aに設定されている論理ボリュームに格納されるファイルやデータの入出力を要求する。OS102は、アプリケーションプログラム101からの入出力要求を受け取り、これをディスク制御装置20Aへの入出力要求に変換して、ディスク制御装置20Aに送信する。
ポート105は、ホスト計算機10Aのインターフェース13とディスク制御装置20Aのインターフェース21との間に設定された論理的な接続経路である。
OS102は、入出力データ管理プログラム103及び入出力実行管理プログラム104を含む。これらのプログラムは、アプリケーションプログラム101からの入出力要求に基づいて、ディスク制御装置20Aに対して、論理ボリュームの状態の通知や設定、排他要求等を設定する。
ディスク制御装置20Aは、入出力受付部112Aと入出力制御コンポーネント113Aとデータコピー制御コンポーネント114Aとが稼働している。これらは、前述のように、メモリ23に格納されているプログラムをCPU22が読み出して実行することによって、それぞれの機能が実現されている。
入出力受付部112Aは、ホスト計算機10Aから送信された入出力要求を受け取ると、その内容を判定して、入出力制御コンポーネント113A又はデータコピー制御コンポーネント114Aに処理を渡す。入出力制御コンポーネント113Aは、受け取った入出力要求に基づいて、ディスク装置30Aへのデータの入出力を実行する。データコピー制御コンポーネント114Aは、受け取った入出力要求に基づいて、ディスク制御装置30Bとの間でデータコピーに関する制御を実行する。
ポート111Aは、ディスク制御装置20Aのインターフェース21と、ホスト計算機10Aのインターフェース13との間に設定された論理的な接続経路である。ポート115Aは、ディスク制御装置20Aのインターフェース21と、ディスク制御装置20Bのインターフェース21との間に設定された論理的な接続経路である。
ディスク装置30Aには、複数の論理ボリュームが設定されている。なお、メインサイト1のディスク装置30Aに設定された論理ボリュームを、以降は正ボリューム121と呼び、リモートサイト2のディスク装置30Bに設定された論理ボリュームを以降は副ボリューム181と呼ぶ。ディスク制御装置20A及び20Bは、ホスト計算機10Aからのデータ書き込み要求を受け取ると、その書き込みデータを、正ボリューム121に書き込むと共に、副ボリューム181にも書き込むための処理をする。なお、この処理を、以降はリモートコピーと呼ぶ。
なお、ホスト計算機10B及びディスク制御装置20Bの構成は、ホスト計算機10A及びディスク制御装置20Bとほぼ同一である。
図3は、ホスト計算機10のOS102に含まれる入出力データ管理プログラム103と入出力実行管理プログラム104との説明図である。
入出力データ管理プログラム103は、データ構造管理部201、データアクセス制御部202及び要求部205を含む。また、要求部205は、排他要求部203及び更新データグループ要求部204を含む。
データ構造管理部201は、ホスト計算機10が論理ボリュームに格納するデータの構造に関するデータ構造情報206を管理する。
ボリューム情報管理部252は、ホスト計算機10が管理する論理ボリュームの状態に関するボリューム状態情報258を管理する。このボリューム状態情報258は、論理ボリュームごとに別々の情報として管理されるのが一般的であるが、複数の論理ボリュームの情報を一つのボリューム状態情報258として、まとめて管理してもよい。
更新データグループ管理部253は、アプリケーションプログラム101からの入出力要求に付与するための更新データグループを判別する更新データグループID259を管理する。なお、更新データグループID259は計算機システム内でユニークな情報でなければならない。
データアクセス制御部202は、OS102自身やアプリケーションプログラム101からの入出力要求を受け取ると、入出力対象データのデータ構造情報206からその入出力要求を実現する一連の入出力コマンド群を生成する。また、論理ボリュームの排他/排他解除が必要と判定した場合には排他要求部203に論理ボリュームの排他要求指示/排他解除要求を指示する。また、アプリケーションプログラム101から入出力要求を更新データグループとして扱うように指示された場合や、生成した入出力コマンド群を更新データグループとして扱う必要があると判定した場合に、更新データグループ要求部204に更新データグループ登録指示/登録解除を指示する。
要求部205は、データアクセス制御部202からの要求に応じて、状態制御部257の排他制御部254と更新データグループ制御部255にボリュームの排他/排他解除を要求する。また、更新データグループ制御部255への更新データグループ登録指示/登録解除を指示する。
入出力実行管理プログラム104は、入出力実行制御部251、ボリューム状態管理部252、更新データグループ管理部253及び状態制御部257を含む。状態制御部257は、排他制御部254、更新データグループ制御部255及びボリューム状態制御部256を含む。
入出力実行制御部251は、ボリューム状態情報258に設定された情報に従って、データアクセス制御部202によって生成された入出力コマンド群に排他コマンドを付与する。排他コマンドの付与は、排他制御部254よって排他コマンドの作成指示がある場合に実行される。また、入出力コマンド群に更新データグループIDを付与する。更新データグループIDの付与は、更新データグループ制御部255よって更新データグループID付与の指示がある場合に実行される。また、入出力コマンド群にその他ボリュームの制御に必要なコマンド群(制御用コマンド群)を付与する。そして、この入出力コマンド群をディスク制御装置20に送信することによって入出力を実行する。
また、入出力実行制御部251は、排他制御部254からの排他解除コマンドの実行要求や更新データグループ制御部255からの更新データグループ解除指示コマンドの実行要求があった場合には、これらの要求をディスク制御装置20に送信する。
排他制御部254は、排他要求部203からの論理ボリュームの排他要求/排他解除要求をボリューム状態情報258に反映する。また、論理ボリュームを排他する必要が生じた場合には、ボリューム状態情報258を介して入出力実行制御部251に排他コマンドの作成を指示すると共に、更新データグループ制御部255に対して更新データグループの登録を指示する。また、論理ボリュームの排他を解除する必要が生じた場合には、排他解除コマンドを作成する。そして、入出力実行制御部251に排他解除コマンドの実行を指示すると共に、更新データグループ制御部255に更新データグループの登録解除を指示する。
更新データグループ制御部255は、更新データグループ要求部204又は排他制御部254からの更新データグループ登録指示/登録解除指示をボリューム状態情報258に反映する。また、更新データグループ登録指示によってボリューム状態情報258に更新データグループIDの登録が必要となった場合には、更新データグループIDテーブル259から未使用の更新データグループID259を取得して、これをボリューム状態情報258に設定する。また、更新データグループ登録解除指示によって不要な更新データグループIDが生じた場合には、更新データグループIDテーブル259に更新データグループIDを返却する。また、更新データグループIDを付与した入出力要求の副ボリュームへの反映が必要と判定した場合には、更新データグループの反映を指示するためのコマンドを作成して、入出力実行制御部251に反映を指示するコマンドの実行を指示する。
ボリューム状態制御部256は、入出力実行制御部251から入出力実行可否の判定要求があった場合に、入出力対象ボリュームのボリューム状態情報258から入出力実行可否を判定する。また、入出力実行制御部251からボリューム状態情報の取得要求があった場合は、入出力対象ボリュームのボリューム状態情報258を入出力実行制御部251に渡す。
図4Aは、データ構造情報206の説明図である。
データ構造情報206は、ホスト計算機10のアプリケーション101が管理するデータ単位ごとに生成され、データ構造管理部201によって管理される。
データ構造情報206は、データID301、データ構造形式情報302及び固有情報303を含む。
データID301は、対象のデータの識別子である。データ構造形式情報302は、対象のデータがどのような形式で管理されているかを示す情報である。固有情報303は、対象のデータが格納されている領域の情報である。
図4Bは、実際にデータ構造情報206に格納される情報の一例の説明図である。
データID301には、対象のデータの識別子が格納される。
データ構造形式情報302には、対象のデータの形式が格納される。図4Bの例では「データ形式1」が格納されている。
固有情報303には、対象のデータが格納されている領域の情報がそれぞれ格納される。一般的に、データはセクタサイズに分割されて論理ボリュームに格納される。図4Bの例では、対象のデータが二つの領域に分割されており、それぞれ領域A、領域Bであることを示す。各領域には、領域の先頭アドレス351及び領域長352が格納される。また、固有情報303には、対象のデータにさらに領域が追加される場合に備え、予備領域が確保されている。このデータは必要に応じて領域の追加/削除が行われる。データ量の増加によりこのデータに新たなデータが追加された場合には、領域Cを予備領域から確保して、領域の先頭アドレス351及び領域長352を設定する。
図4Cは、ユーザから見たデータ360と論理ボリューム上の実際のデータの格納位置とを示す説明図である。
図4Bに示す例のデータは、いくつかの領域に分割され、それぞれが論理ボリュームに格納される論理ボリュームでは、これらをボリューム管理情報371として管理している。一方、アプリケーションプログラム101等、ユーザ側からは、このデータは、領域A361、領域B362は連続領域に見える。また、前述のように領域C363を追加した場合には、データ構造情報350及びボリューム管理情報371に領域C情報を追加する。
図5は、ボリューム状態情報258の説明図である。
ボリューム状態情報258は、論理ボリュームの構成を示す情報を格納するものであり、ボリューム状態管理部252によって論理ボリュームごとに管理される。
ボリューム状態情報258は、ボリュームID413、更新データグループ登録関連情報400、ボリューム排他関連情報410及びその他ボリューム状態情報420を含む。
ボリュームID413は、論理ボリュームの識別子である。
更新データグループ登録関連情報400は、更新データグループ登録カウンタ401、更新データグループID402及び更新データグループ登録状態情報403を含む。
更新データグループ登録カウンタ401は、データアクセス制御部202への更新データグループ登録指示/登録解除指示の回数をカウントするためのカウンタが格納される。更新データグループID402は、更新データグループ制御部255によって更新データグループIDが取得された場合に、そのボリュームに関連付けられた更新データグループIDを格納する。更新データグループ登録状態情報403は、入出力実行制御部251に対して更新データグループIDの付与要否を通知するための情報である。
更新データグループ制御部255は、入出力実行制御部251に対して更新データグループIDの付与を指示する場合は、更新データグループ登録状態情報403を登録中状態に設定する。また、更新データグループIDの付与が不要な場合は、更新データグループ登録状態情報403を、登録解除中状態に設定する。
ボリューム排他関連情報410は、ボリューム排他要求カウンタ411及びボリューム排他状態情報412を含む。
ボリューム排他要求カウンタ411は、排他要求部203から排他制御部254へのボリュームの排他要求指示/排他解除要求指示の回数をカウントするためのカウンタである。ボリューム排他状態情報412は、ボリュームの排他状態が格納される。
排他制御部254は、論理ボリュームが排他されておらず、かつ、排他要求がない場合は、ボリューム排他状態情報411を排他解除状態に設定する。また、論理ボリュームが排他されていないが排他要求がある場合、すなわちボリュームの排他処理中は、ボリューム排他状態情報412を排他要求中状態に設定する。また、論理ボリュームが排他状態であり、かつ、排他解除要求がある場合、すなわちボリュームの排他解除処理中には、ボリューム排他状態情報412を排他解除要求中状態に設定する。
その他ボリューム状態情報420は、ボリュームの状態を管理するための様々な情報を含む。例えば、ボリュームの空き容量やボリュームの障害情報等が格納される。
図6は更新データグループIDテーブル259の説明図である。
更新データグループID259テーブルは、更新データグループ管理部253によって、未使用の更新データグループIDが管理される。
更新データグループ管理部253は、更新データグループ登録指示によってボリューム状態情報258に更新データグループIDの登録が必要となった場合には、更新データグループIDテーブル259から未使用の更新データグループID259を取得する。取得された更新データグループIDは、更新データグループIDテーブル259から削除される。また、更新データグループ登録解除指示によって不要な更新データグループIDが生じた場合には、更新データグループIDテーブル259に更新データグループIDを返却する。返却された更新データグループIDは、未使用の更新データグループIDとする。
なお、更新データグループIDは、リスト形式で空きIDを管理する方式や、ボリュームごとにユニークな情報、例えばボリュームに付けられたシリアル番号やボリューム状態情報258のアドレス等をIDとして使用する方式等によって管理される。また、更新データグループとして扱う更新単位は、単一のフォルダやファイルに関する更新入出力要求に限定されるものではなく、複数のフォルダやメインフレームで一般的に呼ばれるデータセット、複数ファイルやメインフレームで一般的に呼ばれるメンバを、一つの単位とした更新データグループIDとして管理してもよい。
図7は、ディスク制御装置20の入出力受付部112、入出力制御コンポーネント113及びデータコピー制御コンポーネント114の説明図である。
入出力制御コンポーネント113は、入出力制御部1311及びボリューム状態管理部1312を含む。
データコピー制御コンポーネント114は、データコピー制御部1301及びデータバッファ部1302を含む。
データバッファ部1302は、リモートコピーのリモートサイト2側のディスク制御装置20Bにおいて、更新データグループIDが付与されたデータ更新要求を更新データ情報1303に変換して蓄積する部分である。
ボリューム状態管理部1312は、ディスク制御装置20が管理しているボリュームの情報であるボリューム情報1313を管理する。
データコピー制御部1301は、ディスク制御装置20間のリモートコピーを制御する。より具体的には、メインサイト1のディスク制御装置20Aにおいては、データ更新要求や更新データグループ解除指示コマンドをリモートサイト2のディスク制御装置20Bに送信する。一方、リモートサイト2のディスク制御装置20Bにおいては、データバッファ部1302に更新データ情報1303を蓄積する。また、更新データグループ解除指示コマンドの要求に従って、データバッファ部1302の情報を副ボリューム181に反映する。
入出力制御部1311は、入出力受付部112を介して受信したコマンドを実行する。メインサイト1のディスク制御装置20Aにおいては、データ更新要求や更新データグループ解除指示コマンドをデータコピー制御部1301に送信する。一方、リモートサイト2のディスク制御装置20Bにおいては、入出力受付部172からのデータ更新要求や更新データグループ解除指示コマンドをデータコピー転送部1301に送信する。また、データコピー制御部1301からのデータ更新要求を副ボリューム181に対して実行する。
また、入出力制御部1311は、排他コマンドを実行してボリューム情報1313に排他状態を設定したり、排他解除コマンドを実行してボリューム情報1313に排他解除状態を設定する。
図8は、更新データ情報1303の説明図である。
リモートサイト2のディスク制御装置20Bにおいて、データコピー制御コンポーネント114のデータコピー0制御部1301が、受信した更新データグループIDが付与されたデータ更新要求を、更新データ情報1303として格納する。
更新データ情報1303は、更新データシーケンス番号1401、タイムスタンプ1402、更新データグループID1403及びデータ更新除法1404を含む。
更新データシーケンス番号1401は、メインサイトのディスク制御装置がリモートサイトにおけるデータ更新順序を保証するために付与する通し番号である。タイムスタンプ1402は、ホスト計算機10が入出力コマンド群に付与した時刻(タイムスタンプ)を反映した情報である。なお、このタイムスタンプ1402をそのまま更新データシーケンス番号1401として使用してもよい。更新データグループID1403は、更新データ情報1303がどの更新データグループに属するかを示す情報である。データ更新情報1404は、更新対象データと更新内容とを含む情報である。
図9は、ボリューム情報1313の説明図である。
ボリューム情報1313は、入出力制御コンポーネント113の入出力制御部1311によって管理され、ディスク制御装置20のディスク装置30に設定された各論理ボリュームの情報が格納される。
ボリューム情報1313は、ボリュームID1504、ボリューム排他情報1501、リモートボリューム情報1502及びその他ボリューム情報1503とを含む。
ボリュームID1504は、その論理ボリュームの識別子である。ボリューム排他情報1501は、その論理ボリュームが排他に設定されているか否かを示す識別子である。リモートボリューム情報1502は、メインサイトの正ボリュームに対して設定されているリモートサイトの副ボリュームの情報である。その他ボリューム情報1503は、ボリュームを管理するための様々な情報、例えば、ボリュームの空き容量やボリュームの障害情報等を含む。
次に、前述のように構成された計算機システムの処理を説明する。
前述のように構成された計算機システムでは、メインサイト1において、ホスト計算機10Aがディスク制御装置20Aに対して、ディスク装置30Aの正ボリューム131に格納されるデータの入出力を要求する。この入出力要求がデータの更新要求である場合は、ディスク制御装置20Aは、更新要求に係る更新データを、正ボリューム131に格納すると共に、リモートサイト2のディスク制御装置20Bに要求して、副ボリューム181にも格納する。このように、メインサイト1のデータをリモートサイト2に格納する処理をリモートコピーと呼ぶ。
ここで、メインサイト1からリモートサイト2へのデータの更新の途中で、災害の発生等によってリモートコピーが中断した場合には、ホスト計算機10Aにとって有効なデータのグループ(例えばファイルなど)のうちの一部データの更新が滞ってしまい、データの破壊やボリューム破壊となる。これを防ぐために、本発明では、ホスト計算機10Aにとって有効なデータのグループを更新データグループとして設定し、この更新データグループに属するすべてのデータを一つの単位として副ボリューム181に反映させる処理を実行する。以降、この処理について具体的に説明する。
図10は、計算機システムの処理の概略のフローチャートである。
ホスト計算機10において、ホスト計算機10上で動作するアプリケーションプログラム101又はOS102が入出力要求を作成する(ステップS2301)。
OS102は、この入出力要求に対して、複数の更新入出力要求を1つの更新データグループとして扱う必要があるかを判定する(ステップS2302)。複数の更新入出力要求を更新データグループとして扱う必要がある場合には、入出力要求に更新データグループを識別するための情報を付与する(ステップS2303)。そして、ポート105を経由して、ディスク制御装置20Aに入出力要求を送信する(ステップS2304)。
なお、入出力要求を更新データグループとして扱う必要がない場合には、更新データグループを識別する情報を付与することなく、ポート105を経由して、入出力要求をディスク制御装置20Aに送信する(ステップS2304)。
ディスク制御装置20Aにおいて、ポート111を経由して入出力受付部112が入出力要求を受け取る。この入出力要求は、入出力制御部1311が正ボリューム121に対して実行する(ステップS2311)。
次に、入出力制御部1311は、入出力要求の種別を判定する(ステップS2312)。入出力要求が更新要求である場合は、入出力制御部1311は、この更新要求を、入出力受付部112、ポート115及びネットワーク150を介してリモートサイト2のディスク制御装置20Bに送信する(ステップS2313)。
ディスク制御装置20Bにおいて、ポート115を経由して入出力受付部112が更新要求を受け取る。入出力制御部1311は、メインサイト1からの更新要求に更新データグループ情報が付与されているかを判定する(ステップS2321)。情報が付与されている場合は、更新要求をデータバッファ部1302に蓄積する(ステップS2322)。情報が付与されていない場合には、更新データを入出力制御コンポーネント113を介して副ボリューム181に対して入出力要求を実行する(ステップS2323)。すなわち、更新データグループを判別するための情報が付与されていない場合には、通常のリモートコピーとなる。更新データグループの更新入出力実行がすべて完了したら、ホスト計算機10に通知する(ステップS2331)
次に、ホスト計算機10Aは、リモートサイト2のディスク制御装置20Bに蓄積された更新データグループの更新要求を副ボリューム181に反映する指示を作成する(ステップS2341)そしてこれをディスク制御装置20Aに送信する(ステップS2342)。
ディスク制御装置20Aは、更新データグループの反映指示をディスク制御装置20Bに送信する(ステップS2351)。
この反映指示を受けたディスク制御装置20Bは、データバッファ部1302に蓄積した更新情報の中から反映指示によって指示された更新データグループの更新要求を検索して、副ボリューム181に対して入出力要求を実行する(ステップS2361)。
以上のような処理によって、ホスト計算機10Aからの入出力要求がディスク制御装置20Aを介してディスク装置30の正ボリューム121に実行される。また、この入出要求は、リモートサイト2においても、ディスク制御装置20Bを介してディスク装置30Bの副ボリューム181に実行される。このとき、更新データは、ディスク制御装置20Bのデータバッファ部1302に蓄積しておき、ホスト計算機10Aから反映指示があったときに、この更新データをまとめて副ボリューム181に対して入出力する。
なお、この計算機システムにおいて、災害が発生したときは、メインサイト1のホスト計算機10A、ディスク制御装置20A及びディスク装置30Aによって実行して業務を、リモートサイト2のホスト計算機10B、ディスク制御装置20B及びディスク装置30Bに切り替えて業務を再開する。
図11は、ホスト計算機10の処理のフローチャートである。
このフローチャートは、ホスト計算機10のOS102の入出力データ管理プログラム103と入出力実行管理プログラム104とで実行される処理の概略である。
入出力管理プログラム103のデータアクセス制御部202は、OS102又はアプリケーションプログラム101からの入出力要求を受け取ると、その入出力要求を分析して、入出力対象データのデータ構造情報206をデータ構造管理部201から取得する(ステップS2410)。
次に、データアクセス制御部202は、入出力要求の分析結果とデータ構造情報206からボリュームの排他要否と更新データグループの登録要否を判定して、要求部205を介して状態制御部255にボリュームの排他や更新データグループIDの登録を指示する(ステップS2420)。
要求部205の指示を受けた状態制御部257は、ボリューム状態管理部258に更新データグループID及びボリューム排他情報を設定する(ステップS2430)。次に、データアクセス制御部202は、入出力要求に対応した入出力コマンド群を生成して、入出力実行制御部251に送信する(ステップS2440)。
入出力実行制御部251は、データアクセス制御部202からの入出力要求を受け取ると、まず、状態制御部257に入出力要求の実行可否を判定させる。この結果、入出力が実行可能であると判定した場合は、入出力実行制御部251は、ボリューム状態管理部252に設定された情報から更新データグループIDの付与要否を判定する。この結果、付与が必要と判定した場合は、入出力要求に更新データグループIDを付与する(ステップS2450)。そして、入出力実行制御部251は、入出力要求をディスク制御装置20Aに送信する(ステップS2460)。
ホスト計算機10は、このステップS2410乃至S2460の処理によって、ディスク制御装置20Aを介して、論理ボリュームにデータの入出力を処理する。なお、更新データグループIDは、入出力要求に係る一連の更新データ(更新データグループ)のすべての入出力要求が完了するまでの間、又は、入出力要求に係る論理ボリュームを排他に設定している間、のいずれかの場合に、付与が必要を判定する。
その後、更新データグループに属するすべての入出力要求をディスク制御装置20Aに送信した場合は、データアクセス制御部202は、要求部205を介して状態制御部257に、更新データグループの解除を指示する。状態制御部257は更新データグループの解除指示を受けると、解除指示用のコマンドを作成して、入出力実行制御部251に解除指示用のコマンドの実行を指示する。入出力実行制御部251は解除指示用のコマンドをディスク制御装置20Aに送信する(ステップS2470)。
図12は、メインサイト1のディスク制御装置20Aの処理のフローチャートである。
ディスク制御装置20Aにおいて、入出力制御コンポーネント113及びデータコピー制御コンポーネント114は、入出力受付部112を介してホスト計算機10Aからの入出力要求を受けたときに、本フローチャートの処理を実行する。
ディスク制御装置20Aにおいて、入出力コンポーネント113の入出力制御部1311は、ポート111及び入出力受付部112を介して受けた入出力要求を分析する(ステップS2510)そして、分析の結果、入出力要求の種別を判定する(ステップS2520)。
入出力要求が参照入出力要求であると判定した場合は、入出力制御部1311は、正ボリューム121からデータを読み出して、入出力受付部112及びポート111を介して、要求元のホスト計算機10Aに読み出したデータを送信する(ステップS2540)。
入出力要求が参照要求でないと判定した場合は、さらに更新要求又は更新データグループの反映指示要求であるかを判定する(ステップS2530)。
入出力要求が更新入出力要求であると判定した場合は、入出力制御部1311は、正ボリューム121に対してデータを書き込む(ステップS2550)。そして、データコピー制御部1301に、この入出力要求を渡す(ステップS2560)。データコピー制御部1301は、受け取った更新入出力要求を、入出力受付部112及びポート115を介してディスク制御装置20Bに送信する(ステップS2570)。
入出力要求が更新データグループの反映指示要求であると判定した場合は、入出力制御部1311は、ステップS2550の処理することなく、データコピー制御部1301に、この入出力要求を渡す(ステップS2560)。データコピー制御部1301は、受け取った更新入出力要求を、入出力受付部112及びポート115を介してディスク制御装置20Bに送信する(ステップS2570)。
以上の処理によって、ホスト計算機10Aから送信された入出力要求が処理される。
図13は、リモートサイト2のディスク制御装置20Bの処理のフローチャートである。
ディスク制御装置20Bにおいて、入出力制御コンポーネント113及びデータコピー制御コンポーネント114は、入出力受付部112を介してディスク制御装置20Aからの入出力要求を受けたときに、本フローチャートの処理を実行する。
入出力制御部1311は、ポート115及び入出力受付部112Bを介して受け取った更新入出力要求又は更新データグループの反映指示をデータコピー制御部1301に渡す(ステップS2610)。データコピー制御部1301は渡されたのが更新入出力要求かを判定し(ステップS2620)、更新入出力要求の場合には要求に更新データグループIDが付与されているかを判定する(ステップS2630)。情報が付与されている場合にはデータバッファ部1302に更新入出力要求を蓄積し(ステップS2640)、付与されていない場合には入出力制御部1311に更新入出力要求を送信し、副ボリューム181に反映する(ステップS2650)。更新入出力要求でない場合(更新データグループの反映指示の場合)には、データバッファ部1302から反映を指示された更新データグループの更新入出力要求を検索し、入出力制御部1311に反映を指示された更新データグループの更新入出力要求を送信し、副ボリューム181への反映する(ステップS2660)。
図14はデータアクセス制御部202の制御の流れを示したフローチャートである。
データアクセス制御部202は、入出力要求を受け取ると、その要求の内容を分析する。すなわち、受け取った入出力要求が、OS102からの入出力要求であるかアプリケーションプログラム101からの入出力要求、更新要求又は参照要求であるか、ボリュームの排他要求であるか、更新データグループの登録/登録解除指示であるかを分析する(ステップS601)。
まず、分析の結果、OS102からの入出力要求であるか、アプリケーションプログラム101からの入出力要求であるかを判定する(ステップS602)。
OS102からの入出力要求の場合には、データアクセス制御部202は、データ構造管理部201から入出力対象データのデータ構造情報206を取得する(ステップS603)。そして、ステップS601の分析結果と取得したデータ構造情報206とからボリュームを排他とするかの要否を判定する(ステップS604)。
ボリュームの排他が必要であると判定した場合には、データアクセス制御部202は、排他要求部203にボリュームの排他を指示する(ステップS605)。そして、ステップS608に移行する
一方、ボリュームの排他が不要と判定した場合には、ステップS601の分析結果と取得したデータ構造情報206とから更新データグループ登録の指示の要否を判定する(ステップS606)。更新データグループ登録指示が必要な場合は、データアクセス制御部202は、更新データグループ要求部204に更新データグループ登録を指示する(ステップS607)。
ステップS608では、入出力コマンド群の生成及び入出力実行制御部251への入出力要求処理を実行する。なおこの処理の詳細は図15で説明する。
データアクセス制御部202は、この入出力要求処理を、入出力要求を実現するすべての入出力コマンド群の実行処理が完了するまで繰り返す(ステップS609)。
すべての入出力コマンド群の実行処理が完了したら、データアクセス制御部202は、ステップS604においてボリュームの排他を指示したか否かを判定する(ステップS610)。ボリュームの排他を指示した場合は、データアクセス制御部202は、排他要求部203にボリュームの排他解除を指示する(ステップS611)。一方、ボリュームの排他を指示していない場合には、データアクセス制御部202は、更新データグループ登録解除指示の要否を判定する(ステップS612)。更新データグループ登録解除指示が必要な場合は、データアクセス制御部202は、更新データグループ要求部204に更新データグループ登録解除を指示する(ステップS613)。
ステップS602において、OS102からの入出力要求でない場合、すなわち、アプリケーションプログラム101からの入出力要求の場合には、データアクセス制御部202は、要求がボリュームの排他/排他解除指示ではあるか否かを判定する(ステップS614)。入出力要求がボリュームの排他/排他解除指示でない場合は、データアクセス制御部202は、入出力要求が更新データグループ登録/登録解除指示であるか否かを判定する(ステップS618)。
入出力要求が更新データグループ登録/登録解除指示でない場合には、データアクセス制御部202は、その入出力要求に対応する入出力コマンド群の生成と入出力実行制御部251への入出力要求処理を実行する(ステップS622)。なお、このステップS622に処理の詳細は図15で説明する。
ステップS614において排他/排他解除指示であると判定した場合には、データアクセス制御部202は、指示種別を判別する(ステップS615)。指示種別がボリュームの排他指示の場合は、データアクセス制御部202は、排他要求部へボリュームの排他を指示する(ステップS616)。指示種別がボリュームの排他解除指示の場合は、データアクセス制御部202は、排他要求部へボリュームの排他解除を指示する(ステップS617)。
ステップS618において、更新データグループ登録/登録解除指示であると判定した場合は、データアクセス制御部202は、指示種別を判別する(ステップS619)。指示種別が更新データグループ登録指示の場合は、データアクセス制御部202は、更新データグループ要求部204に更新データグループ登録を指示する(ステップS620)。更新データグループ登録解除指示の場合は、データアクセス制御部202は、更新データグループ要求部204に更新データグループ登録解除を指示する(ステップS621)。
そして最後に、データアクセス制御部202は、入出力要求元であるアプリケーションプログラム101に、実行完了を通知して、実行結果を報告する(ステップS623)。
図15はデータアクセス制御部202における入出力コマンド群の生成と入出力実行制御部251への入出力要求処理のフローチャートである。
データアクセス制御部202は、データ構造管理部201から入出力対象データのデータ構造情報206を取得すると(ステップS701)、ステップS601で分析した入出力要求の分析結果とデータ構造情報206とに対応する入出力コマンド群を生成する(ステップS702)。
そして、データアクセス制御部202は、入出力実行制御部251に生成した入出力コマンド群の実行を指示して(ステップS703)、入出力実行制御部251からの入出力完了報告を待つ(ステップS704)。
図16Aは、要求部205の排他要求部203の処理のフローチャートである。
排他要求部203は、データアクセス制御部202からの指示を受け取ると(ステップS801)、その指示が排他指示であるか排他解除指示であるか否かを判定する(ステップS802)。指示が排他指示の場合には、排他要求部203は、排他制御部254へボリュームの排他を指示する(ステップS803)。一方、排他解除指示の場合には、排他要求部203は、排他制御部254へボリュームの排他解除を指示する(ステップS804)。
図16Bは要求部205の更新データグループ要求部204の処理のフローチャートである。
更新データグループ要求部204は、データアクセス制御部202からの指示を受け取ると(ステップS851)、その指示が更新データグループ登録指示であるか更新データグループ登録解除指示であるか否かを判定する(ステップS852)。
指示が更新データグループ登録指示の場合は、更新データグループ要求部204は、更新データグループ制御部255に更新データグループ登録を指示する(ステップS853)。
指示が更新データグループ登録解除指示の場合には、更新データグループ要求部204は、更新データグループ制御部255へ更新データグループ登録解除を指示する(ステップS854)。
図17は、ボリューム状態制御部256の処理のフローチャートである。
ボリューム状態制御部256は、入出力実行制御部251からの要求の受け取ると、要求種別を分析する(ステップS901)。そして、ボリューム状態管理部252から要求対象のボリューム状態情報258を取得する(ステップS902)。
次に、ボリューム状態制御部256は、要求種別を判定し(ステップS903)、要求種別がボリューム状態情報の取得要求の場合にはボリューム状態管理部から取得したボリューム状態情報258を入出力実行制御部に渡す(ステップS904)。入出力実行可否の判定要求の場合には、ボリューム状態情報258から入出力の実行可否を判定し(ステップS905)、入出力が実行可能な場合には入出力実行制御部251へ入出力が実行可であることを報告する(ステップS906)。入出力が実行不可能な場合、例えば、他の入出力要求の実行完了待ちやボリュームに障害がある場合などは、入出力実行制御部251に入出力が実行不可であることを報告する。
図18は、排他制御部254の処理のフローチャートである。
排他制御部254は、排他要求部203からの要求を受け取ると、その要求がボリューム排他指示であるか否かを判定する(ステップS1001)。ボリューム排他指示の場合は、排他制御部254は、ボリューム状態情報258のボリューム排他要求カウンタ411が0であるか否かを判定する(ステップS1002)。このとき、ボリューム排他要求カウンタ411が0の場合は、排他制御部254は、ボリューム排他状態情報412を排他要求中状態、すなわち、ボリューム排他処理中であること示す状態に設定する(ステップS1003)。そして、排他制御部254は、更新データグループ制御部へ更新データグループの登録を指示する(ステップS1004)。
次に、排他制御部254は、ボリューム排他要求カウンタ411に1を加算する(ステップS1005)。ボリューム排他要求カウンタ411が0より大きい場合は、排他制御部254は、ボリューム排他状態情報412を変更せずにボリューム排他要求カウンタ411に1を加算する(ステップS1005)。
一方、ボリューム排他指示でない場合、すなわち、ボリュームの排他解除指示の場合は、排他制御部254は、ボリューム排他状態情報412が排他状態であるか否かを判定する(ステップS1006)。ボリューム排他状態情報412が排他状態である場合は、ボリューム排他要求カウンタ411から1を減算する(ステップS1007)。そして、排他制御部254は、1を減算した結果、ボリューム排他要求カウンタ411が0になったか否かを判定する(ステップS1008)。
ボリューム排他要求カウンタ411が0の場合は、排他制御部254は、ボリューム排他状態情報412を排他解除要求中状態に設定する(ステップS1009)。そして、更新データグループ制御部へ更新データグループの登録解除を指示する(ステップS1010)。そして、排他制御部254は、排他解除コマンドを作成して入出力実行制御部251に排他解除コマンドの実行を指示する(ステップS1011)。
なお、ステップS1006において、排他状態ではない場合、すなわち排他されていないのに排他解除要求された場合は、排他制御部254は処理をせずに終了する。
図19は、更新データグループ制御部255の処理のフローチャートである。
更新データグループ制御部255は、更新データグループ要求部204又は排他制御部254からの指示種別を判定する(ステップS1101)。
指示種別が更新データグループ登録指示の場合は、更新データグループ制御部255は、更新データグループ登録要求カウンタ401が0であるか否かを判定する(ステップS1102)。更新データグループ登録カウンタ401が0の場合は、更新データグループ管理部253から未使用の更新データグループID259を取得し(ステップS1103)、取得した更新データグループIDをボリューム状態情報258に設定する(ステップS1104)。そして、更新データグループ登録状態情報403を更新データグループ登録中状態に設定(ステップS1105)して、更新データグループ登録要求カウンタ401に1を加算する(ステップS1106)。
一方、ステップS1102で更新データグループ登録要求カウンタ401が0より大きい場合は、更新データグループ制御部255は、更新データグループ登録カウンタ401に1を加算する(ステップS1106)。
ステップS1101において、更新データグループ登録解除指示の場合は、更新データグループ制御部255は、ボリューム状態情報258の更新データグループ登録状態情報403が更新データグループ登録中状態であるか否かを判定する(ステップS1107)。また、更新データグループ登録中状態の場合は、更新データグループ制御部255は、更新データグループ登録要求カウンタ401から1を減算する(ステップS1108)。1を減算した結果、更新データグループ登録要求カウンタ401が0であるか否かを判定する(ステップS1109)。
更新データグループ登録カウンタ401が0の場合は、更新データグループ制御部255は、更新データグループ登録状態情報403を更新データグループ登録解除中状態に設定する(ステップS1110)。そして、ボリューム状態情報258の更新データグループIDを更新データグループ管理部253に返却する(ステップS1111)。
次に、更新データグループ制御部255は、更新データグループ解除指示コマンドを作成して、入出力実行制御部251に更新データグループ解除指示コマンドの実行を指示する(ステップS1112)。なお、ステップS1107で更新データグループ登録状態情報403が更新データグループ登録中状態でない場合、すなわち、更新データグループが登録されていないのに登録解除要求された場合は、更新データグループ制御部255は、処理をせずに終了する。
図20は、前述のカウンタの説明図である。
図20の例は、三つのアプリケーションプログラムA、B、CとOSの入出力要求及び更新データグループの登録/登録解除指示のタイミングを示す。
どのタイミングで更新データグループの登録/登録解除が指示されたかによって、更新データグループ登録要求カウンタの値を設定する。このカウンタの値によって、入出力要求を1つの更新データグループとして扱う範囲が決定される。
前述の図19の処理によって、更新データグループ登録要求カウンタの値が更新データグループ登録指示によって0から1に変わったときから、更新データグループ登録解除指示によって1から0に変わるまでの区間の入出力要求は、1つの更新データグループとして扱う。具体的には、図において四角記号で示す入出力要求は、すべて1つの更新データグループとして扱われる。
例えばアプリケーションプログラムAによって入出力要求があったとき、タイミングT1の時点で更新データグループの登録要求があった場合は、カウンタが1加算される。その後、他のアプリケーションプログラムB又はCから更新データグループ登録要求があった場合は、その要求毎にカウンタが1加算される。その後、アプリケーションプログラムB又はCからの更新データグループ登録解除要求があった場合は、カウンタがそれぞれ1ずつ減算される。そして、最終的に、T2のタイミングで指示された更新データグループ登録解除指示によって、カウンタが0となる。これによって、更新データグループに属するデータをすべてリモートサイト2の副ボリューム181に一括反映するための指示をディスク制御装置20Bに送信する。
図21は入出力実行制御部251の処理のフローチャートである。
入出力実行制御部251は、入出力の実行に先立ちボリューム状態制御部256に入出力実行可否の判定を要求して(ステップS1201)、ボリューム状態制御部256の判定結果から入出力実行可能な状態であるか否かを判定する(ステップS1202)。
判定結果が入出力実行不可であった場合には、入出力実行制御部251は、入出力要求を実行せずに待ち状態又はエラーとする(ステップS1203)。
判定結果が入出力実行可能であった場合には、入出力実行制御部251は、ボリューム状態制御部256にボリューム状態情報258を取得するよう要求する(ステップS1204)。そして、取得したボリューム排他状態情報413が排他要求中状態であるか否かを判定し(ステップS1205)、排他要求中状態の場合には、入出力実行制御部251は、データアクセス制御部から渡された入出力コマンド群にボリュームの排他コマンドを付与する(ステップS1206)。
次に、入出力実行制御部251は、更新データグループ登録状態情報403が更新データグループ登録中状態であるか否かを判定する(ステップS1207)。更新データグループ登録中状態でない場合には、入出力実行制御部251は、ボリューム状態情報258に設定された更新データグループID402を取得して(ステップS1208)、入出力コマンド群に更新データグループIDを付与する(ステップS1209)。
次に、入出力実行制御部251は、入出力コマンド群にボリュームの制御に必要な制御用コマンド群とタイムスタンプを付与して(ステップS1210)、入出力コマンド群をディスク制御装置に送信する(ステップS1211)。
入出力コマンド群をディスク制御装置に送信した後は、入出力実行制御部251は、ディスク制御装置から入出力完了の報告があるまで待つ(ステップS1212)。入出力完了報告を受け取ったときは、ボリューム状態が排他要求中状態又は排他解除要求中状態であるか否かを判定し(ステップS1213、ステップS1214)、排他要求中状態の場合は、入出力実行制御部251は、ボリューム排他状態情報412を排他状態とする(ステップS1215)。一方、排他解除要求中状態の場合は、入出力実行制御部251は、ボリューム排他状態情報412を排他解除状態とする(ステップS1216)。そして最後に、入出力要求元へ入出力完了を報告する(ステップS1217)。
図22は、メインサイト1のディスク制御装置20Aのデータコピー制御部1301の処理のフローチャートである。
データコピー制御部1301は、入出力制御部1311からコマンドを受け取った場合は(ステップS1601)、受け取ったコマンドに更新データグループIDが付与されているか否かを判定する(ステップS1602)。
更新データグループIDが付与されている場合には、データコピー制御部1301は、更新データグループ解除指示コマンドでないかを判定する(ステップS1603)。更新データグループ解除指示コマンドでない場合は、データコピー制御部1301は、入出力制御部1311から受け取った更新入出力コマンド群を更新データ情報1303に変換する(ステップS1604)。そして、データコピー制御部1301は、ディスク制御装置で管理している更新データシーケンス番号1401を付与して(1605)、ボリューム情報管理部1312からリモートボリューム情報1502を取得して(ステップS1606)、入出力受付部112を介してリモートサイトのディスク制御装置(ディスク制御装置20B)に送信する(ステップS1607)。
図23はリモートサイト2のディスク制御装置20Bのデータコピー制御部1301の処理のフローチャートである。
データコピー制御部1301は、入出力制御部1311からコマンドを受け取った場合は(ステップS1701)、受け取ったコマンドに更新データグループIDが付与されているか否かを判定する(ステップS1702)。
更新データグループIDが付与されている場合は、データコピー制御部1301は、更新データグループ解除指示コマンドであるか否かを判定する(ステップS1703)。更新データグループ解除指示コマンドでない場合には、データバッファ部1302に更新データ情報1303を蓄積する(ステップS1704)。
更新データグループ解除指示コマンドの場合は、データコピー制御部1301は、データバッファ部1302に蓄積された更新データ情報1303を更新データシーケンス番号順に並び替える(ソートする)(ステップS1705)。
次に、データコピー制御部1301は、データバッファ部1302から更新データグループ解除指示コマンドと同じ更新データグループIDを持ち、かつ更新データシーケンス番号が更新データグループ解除指示コマンドに付与されたものより小さい更新データ情報を検索する(ステップS1706)。検索の結果、データコピー制御部1301は、条件に一致する更新データ情報1303を入出力制御部1311に送信して、データ更新を実行する(ステップS1707)。
ステップS1702において、更新データグループIDが付与されていない場合には、データコピー制御部1301は、更新データ情報を入出力制御部に送信して、データ更新を実行する(ステップS1708)。
なお、更新データグループIDが付与されていない場合には、通常のリモートコピーを実行する。
図24は、メインサイトのディスク制御装置20Aの入出力制御部1311の処理のフローチャートである。
入出力制御部1311は、コマンドを受け取ると、そのコマンドを分析する(ステップS1801)。そして、受け取ったコマンドが更新データグループ解除指示コマンドであるか否かを判定する(ステップS1802)。
更新データグループ解除指示コマンドの場合は、入出力制御部1311は、データコピー制御部1301へ更新データコピー解除指示コマンドを送信する(ステップS1803)。
更新データグループ解除指示コマンドでない場合は、入出力制御部1311は、ボリューム情報1313から入出力対象ボリュームへの入出力実行可否を判定する(ステップS1804)。そして、入出力実行可否を判定する(ステップS1805)。
判定の結果、入出力が実行不可だった場合は、入出力制御部1311は、入出力の実行をエラーとし計算機にエラー終了を報告する(ステップS1806)。
判定の結果、入出力が実行可能である場合は、入出力制御部1311は、入出力対象ボリュームへ入出力を実行する(ステップS1807)。そして、入出力の実行が完了するまで待ち、入出力が正常終了したか否かを判定する(ステップS1808)。
入出力が異常終了した場合は、入出力制御部1311は、入出力の実行をエラーとし計算機へエラー終了を報告する(ステップS1806)。
入出力が正常終了した場合には、入出力制御部1311は、ホスト計算機10Aに入出力の正常終了を報告する(ステップS1809)。そして、入出力制御部1311は、正常終了した要求がデータ更新要求か否かを判定する(ステップS1810)。データ更新要求の場合にはデータコピー制御部1301へデータ更新要求を送信する(ステップS1811)。
図25はリモートサイト2のディスク制御装置20Bの入出力制御部1311の処理のフローチャートである。
入出力制御部1311は、入出力受付部112又はデータコピー制御部1301から更新データ情報・更新データグループ解除指示コマンドを受け取ると、そのコマンドを分析する(ステップS1901)。そして、要求・コマンドがデータコピー制御部1301からのデータ更新要求か否かを判定する(ステップS1902)
データコピー制御部1301からの要求でない場合は、入出力制御部1311は、コマンド/更新データ情報をデータコピー制御部1301に送信する(ステップS1904)。
データコピー制御部1301からのデータ更新要求の場合は、入出力制御部1311は、ボリューム情報1313からデータ更新対象ボリュームの入出力実行可否を判定して(ステップS1904)データの更新が可能か否かを判定する(ステップS1905)。
データ更新が可能な場合は、入出力制御部1311は、対象ボリュームへのデータ更新を実行する(ステップS1906)。一方、データ更新が不可能な場合は、入出力制御部1311は、データ更新要求をエラーとする(ステップS1907)。
図26は、更新入出力要求を受け取ったときの、ホスト計算機10Aからディスク制御装置20Aに送信するコマンド群の一例である。
このコマンド群は、制御用コマンド群と複数のデータ書き込みコマンド2005とを含む。制御用コマンド群は、ディスク制御装置20の指示する1つ又は複数の制御用コマンド2001、その制御用コマンド2001に対応するタイムスタンプ2002、及び、必要な場合は更新データグループID2003及び排他コマンド2004を含む。
以上のように本発明の第1の実施の形態では、メインサイト1において、ホスト計算機10Aがディスク制御装置20Aに対して、ディスク装置30Aの正ボリューム131に格納されるデータの入出力を要求する。この入出力要求に、更新データがどのグループに属するかの情報(更新データグループID)を付与することによって、ホスト計算機10Aから見て有効なデータの範囲を設定する。リモートサイト2のディスク制御装置20Bにおいては、この更新データグループIDが同一の要求データを一時的に蓄積して、反映要求があったときに、更新データグループIDが同一の要求データを一括して副ボリューム181に格納する。このようにすることによって、ホスト計算機10Aから見て有効なデータの単位で副ボリュームに反映されるため、メインサイト1に障害が発生した場合にも、リモートサイトの副ボリューム181に格納されたデータによって業務を迅速に普及することが可能となり、かつ、障害によるデータ障害やボリューム障害を最小限にとどめることが可能となる。
<第2実施形態>
次に、第2の実施の形態について説明する。
第2の実施形態の計算機システムは、前述の第1の実施形態においてホスト計算機10Aの入出力実行管理プログラム104が持っていた更新データグループ制御部255と更新データグループ管理部253との機能を、メインサイト1のディスク制御装置20Aの入出力制御コンポーネントに持たせた。
すなわち、第1の実施形態の計算機システムでは、ホスト計算機10Aのソフトウェアの指示によって更新データグループを取り扱う。これに対して第2の実施形態では、ディスク制御装置20の判断によって、更新データグループを取り扱う。
なお、第1の実施の形態と同一の構成には同一の符号を付し、その説明は省略する。
図27は、第2の実施の形態の計算機システムの機能ブロック図である。
入出力制御コンポーネント113は、前述した更新データグループ制御部255に相当する機能を実行する更新データグループ制御コンポーネント2101と更新データグループ管理部253を含む。
更新データグループ制御コンポーネント2101は、入出力受付部112を介して受け取ったコマンドを受信する更新データグループ制御コンポーネント2101は、受け取ったコマンドがボリュームの排他/排他解除コマンドであるか否かを判定する。コマンドが排他/排他解除コマンドである場合は、必要に応じて更新データグループ管理部253に対して更新データグループID259の取得及び返却を要求する。
また、更新データグループ制御コンポーネント2101は、ボリューム情報管理部1312のボリューム情報1313に、更新データグループIDの設定及び設定の解除をする。
また、更新データグループ制御コンポーネント2101は、コマンドが排他解除コマンドである場合は、必要に応じて更新データグループ解除指示コマンドを作成して、入出力制御部1311に送信する。
また、更新データグループ制御コンポーネント2101は、コマンドがボリュームの排他/排他解除以外の場合には、当該コマンドの入出力対象ボリュームに対応するボリューム情報1313を取得して、更新データグループIDの付与の要否を判断する。更新データグループIDの付与が必要な場合は、当該コマンドに更新データグループIDを付与する。
図28は更新データグループ制御コンポーネント2101の処理のフローチャートである。
更新データグループ制御コンポーネント2101は、入出力受付部112からのコマンドを受け取ると、そのコマンドの内容を分析する(ステップS2201)。そして、コマンド種別がボリューム排他/排他解除コマンドであるか否かを判定する(ステップS2202)。
コマンドがボリュームの排他/排他解除コマンドである場合は、更新データグループ制御コンポーネント2101は、ボリューム情報管理部1312から要求対象のボリュームのボリューム情報1313を取得して(ステップS2203)、コマンド種別を判別する(ステップS2204)。コマンドが排他コマンドの場合は、更新データグループ制御コンポーネント2101は、ボリューム情報1313の排他情報が排他解除状態であること、すなわち、要求対象ボリュームが排他中であるか否かを判定する(ステップS2205)。
対象ボリュームが排他中でない場合は、更新データグループ制御コンポーネント2101は、更新データグループ管理部253から未使用の更新データグループID259を取得して(ステップS2206)、取得した更新データグループIDをボリューム情報1313に設定する(ステップS2207)。
一方、ステップS2204において、コマンドの種別が排他解除コマンドの場合は、更新データグループ制御コンポーネント2101は、ボリューム情報1313の排他情報が排他状態である、すなわち、要求対象ボリュームが排他中であるか否かを判定する(ステップS2208)。
対象ボリュームが排他中の場合は、更新データグループ制御コンポーネント2101は、ボリューム情報1313に設定した更新データグループIDを解除して(ステップS2209)、不要になった更新データグループID259を更新データグループ管理部253に返却する。そして、更新データグループ解除指示コマンドを作成して、入出力制御部1311に渡す(ステップS2211)。
一方、ステップS2202において、コマンド種別がボリュームの排他/排他解除コマンドでない場合は、更新データグループ制御コンポーネント2101は、ボリューム情報管理部1312からボリューム情報1313を取得して(ステップS2212)、コマンドの要求対象ボリュームのボリューム情報1313に更新データグループIDが設定されているか否かを判定する(ステップS2213)。更新データグループIDが設定されている場合は、更新データグループ制御コンポーネント2101は、コマンドに対してボリューム情報1313に設定された更新データグループIDを付与する(ステップS2214)。
なお、以降の処理は前述した第1の実施の形態と同一である。
以上のような処理によって、ホスト計算機10Aからの入出力要求があったときに、ディスク制御装置20Aは、要求データグループIDを当該コマンドに付与するか否かを決定する。より具体的には、入出力要求がボリュームの排他要求コマンドである場合に、要求対象ボリュームへの入出力コマンドに更新データグループIDを付与する。これはホスト計算機10Aによってボリュームが排他に設定されている間は、当該ボリュームへの入出力データは一つの意味のあるデータのグループであると見なせるからである。
このようにすることによって、ホスト計算機10Aは、入出力要求を送信する従来のホスト計算機に何ら手を加えることなく、ディスク制御装置20側の機能によって、前述した第1の実施の形態を同様に、ホスト計算機10Aから見て有効なデータの単位で副ボリュームに反映されるため、メインサイト1に障害が発生した場合にも、リモートサイトの副ボリューム181に格納されたデータによって業務を迅速に普及することが可能となり、かつ、障害によるデータ障害やボリューム障害を最小限にとどめることが可能となる。
<第3実施形態>
次に、第3の実施の形態について説明する。
第3の実施の形態の計算機システムは、前述の第1の実施の形態とは異なり、ディスク装置30A及び30Bが、ディスク制御装置20を制御するための情報を格納するためのボリューム(リモート制御用ボリューム122及び182)備える。
すなわち、ディスク制御装置20が受け取るコマンドは、リモート制御用ボリュームにデータとして書き込まれる。ディスク制御装置20は、リモート制御用ボリュームに書き込まれたデータを参照して、コマンドに対応する処理を実行する。
なお、第1の実施の形態と同一の構成には同一の符号を付し、その説明は省略する。
以下に、第3の実施の形態の計算機システムの処理を説明する。
ホスト計算機19Aのアプリケーションプログラム101又はOS102が、入出力要求を作成する。
このとき、ホスト計算機10Aは、作成した入出力要求を更新データグループとして扱う必要があるか否かを判断する。更新データグループとして扱う必要がある場合には、この入出力要求に更新データグループIDを付与する。
そして、ホスト計算機10Aは作成した入出力要求をメインサイト1のディスク制御装置20Aに送信する。
ディスク制御装置20Aは、送信された入出力要求を、まず正ボリューム121に対して実行する。具体的には、例えば入出力要求がデータ更新要求であれば、対象ボリュームの対象データを更新する。
次に、ディスク制御装置20Aは、入出力要求の種別を判定する。種別が更新要求の場合は、ディスク制御装置20Aは、リモートサイト2のディスク制御装置20Bにこの更新要求の入出力要求を送信する。
ディスク制御装置20Bは、送信された更新要求に更新データグループIDが付与されているかを判断する。更新データグループIDが付与されている場合は、この更新要求を、ディスク制御装置20Bのデータバッファ部1302に、蓄積する。一方、更新要求に更新データグループIDが付与されていない場合は、副ボリューム181に対して更新要求を実行する。
そして、ディスク制御装置20Bは、更新データグループの入出力実行がすべて完了するまでこの処理を繰り返す。
ディスク制御装置20Aは、更新データグループの入出力実行がすべて完了したら、更新データグループの反映指示情報をリモート制御用ボリューム122にデータとして書き込む。なお、更新データグループの入出力実行の完了は、前述の第1又は第2の実施の形態で説明したように、ホスト計算機10Aからの指示でもよいし、ボリュームの排他解除要求によって、ディスク制御装置20Aが判断してもよい。
このリモート制御用ボリューム122に書き込まれたデータは、リモートコピー機能によって、リモートサイト2のリモート制御用ボリューム182にコピーされる。
ディスク制御装置20Bのデータコピー制御コンポーネント114Bは、定期的に、リモート制御用ボリューム182を参照している。そして、このリモート制御用ボリューム182に、更新データグループの反映指示情報が格納されていることを確認する。
なお、データコピー制御コンポーネント114Bがリモート制御用ボリューム182に実行された更新要求を監視して、更新要求があった場合に反映指示情報の確認をしてもよい。
データコピー制御コンポーネント114Bは、リモート制御用ボリューム182に更新データグループの反映指示が格納されていた場合は、データバッファ部1302に蓄積された情報のうち、反映指示に対応する更新データグループを取得して、これを副ボリュームに反映する。
このように、本発明の第3の実施の形態では、ディスク制御装置20にコマンドを送信する代わりに、制御のための論理ボリュームを設け、この論理ボリュームにコマンドに相当するデータを書き込むことによって、対象のディスク制御装置20に指示することができる。