(57)【特許請求の範囲】
【請求項１】
ホスト計算機と、前記ホスト計算機に接続され、複数の論理記憶領域を構成する複数のディスク装置を含む第１の記憶装置と、前記第１の記憶装置に接続され、前記第１の記憶装置の複数の論理記憶領域とは異なる複数の論理記憶領域を構成する複数のディスク装置、を含む第２の記憶装置と、を備える計算機システムであって、
前記第１の記憶装置の複数の論理記憶領域のうちの２つ以上が、前記ホスト計算機から送信されたデータを格納する、複数のデータ格納領域を構成し、前記第１の記憶装置の複数の論理記憶領域のうちの、他の少なくとも１つが、前記データ格納領域に格納されているデータの複製データを構成する転送データを格納する転送データ格納領域を構成し、
前記転送データ格納領域は、前記転送データとともに、データの更新順序を示す情報と、前記転送データを格納した転送データ格納領域の論理アドレス情報とを含む更新情報を格納し、
前記第１の記憶装置は、前記転送データ格納領域に格納された前記転送データを、前記更新情報とともに、前記第２の記憶装置に転送し、
前記第２の記憶装置の複数の論理記憶領域のうちの２つ以上が、前記第１の記憶領域の前記データ格納領域に格納されたデータの複製データを格納する、複数の複製データ格納領域を構成し、前記第２の記憶装置の複数の論理記憶領域のうちの、他の少なくとも１つが、前記第１の記憶装置から送信された前記転送データを格納する転送データ格納領域を構成し、
前記第２の記憶装置は、前記転送データの更新順序に基づいて前記複数の複製データ格納領域を更新し、
前記ホスト計算機は、前記論理記憶領域及び前記転送データ格納領域のそれぞれに対応するディスク装置を識別する情報を含む、ボリューム管理情報を備え、
前記第１の記憶装置の転送データ格納領域の使用容量が、予め定められた所定量になった場合に、前記ホスト計算機は、前記ボリューム管理情報に基づいて、前記第１の記憶装置の複数の論理記憶領域から、前記転送データ格納領域に対応するディスク装置とは異なるディスク装置に対応する記憶領域を抽出し、前記抽出した記憶領域を、前記転送データ格納領域に追加で割当てるよう要求する割当て要求を送信し、
前記割当て要求を受信した前記第１の記憶装置は、前記第２の記憶装置に前記転送データを転送するための、前記転送データ格納領域に対応するディスク装置の操作とともに、前記転送データ格納領域に追加で割り当てるための、前記抽出された記憶領域に対応するディスク装置の操作を行うことを特徴とする計算機システム。
【請求項２】
ホスト計算機に接続され、複数の論理記憶領域を構成する複数のディスク装置を含む第１の記憶装置と、前記第１の記憶装置に接続され、前記第１の記憶装置の複数の論理記憶領域とは異なる複数の論理記憶領域を構成する複数のディスク装置を含む、第２の記憶装置と、を備えるストレージシステムであって、
前記第１の記憶装置の複数の論理記憶領域のうちの２つ以上が、前記ホスト計算機から送信されたデータを格納する、複数のデータ格納領域を構成し、前記第１の記憶装置の複数の論理記憶領域のうちの、他の少なくとも１つが、前記データ格納領域に格納されているデータの複製データを構成する転送データを格納する転送データ格納領域を構成し、
前記転送データ格納領域は、前記転送データとともに、データの更新順序を示す情報と、前記転送データを格納した転送データ格納領域の論理アドレス情報とを含む更新情報を格納し、
前記第１の記憶装置は、前記転送データ格納領域に格納された前記転送データを、前記更新情報とともに、前記第２の記憶装置に転送し、
前記第２の記憶装置の複数の論理記憶領域のうちの２つ以上が、前記第１の記憶領域の前記データ格納領域に格納されたデータの複製データを格納する、複数の複製データ格納領域を構成し、前記第２の記憶装置の複数の論理記憶領域のうちの、他の少なくとも１つが、前記第１の記憶装置から送信された前記転送データを格納する転送データ格納領域を構成し、
前記第２の記憶装置は、前記転送データの更新順序に基づいて前記複数の複製データ格納領域を更新し、
前記第１の記憶装置の転送データ格納領域の使用容量が、予め定められた所定量になった場合に、前記第１の記憶装置は、前記第１の記憶装置の複数の論理記憶領域から、前記転送データ格納領域に対応するディスク装置とは異なるディスク装置に対応する記憶領域を、前記転送データ格納領域に追加で割り当てるよう要求する割当て要求を、前記ホスト計算機より受信し、
前記割当て要求を受信した前記第１の記憶装置は、前記第２の記憶装置に前記転送データを転送するための、前記転送データ格納領域に対応するディスク装置の操作とともに、前記転送データ格納領域に追加で割り当てるための、前記抽出された記憶領域に対応するディスク装置の操作を行うことを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機と記憶装置とから構成される計算機システムに関し、さらに詳細には計算機システムにおける複製データの転送技術に関する。
【背景技術】
【０００２】
従来の計算機システムでは、第１の計算機が接続されている第１の記憶装置から第２の計算機が接続されている第２の記憶装置に対して複製データを転送する場合、第１の計算機と第２の計算機とを接続する通信線を介して複製データの転送が実行されている（例えば、特許文献１）。
【０００３】
【特許文献１】米国特許５１７０４８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の計算機システムにおける第１の計算機に要求される主たる処理は、入力に対する演算処理並びに第１の記憶装置に対する演算処理結果（データ）の書き込み処理にある。一方、上述のように、第１の計算機は第１の記憶装置に格納されているデータの複製データを第２の計算機を介して第２の記憶装置に書き込むことによって、第１の記憶装置に格納されているデータの信頼性を確保しなければならない。したがって、第１の計算機における処理負荷が増大し、その処理能力が飽和した場合には、計算機システム全体がダウンしてしまうおそれがある。
【０００５】
また、第１の計算機から第１の記憶装置に対するデータの書き込みは、第１の計算機と第１の記憶装置とを接続する通信線を介して実行され、一方、第１の記憶装置に格納されているデータの複製データの読み出しもまた前記通信線を介して実行される。したがって、データの書き込みに伴うデータ転送と複製データの読み出しに伴うデータ転送とが衝突し、第１の記憶装置に対する第１の計算機からのデータ参照、データ更新に要する時間が長くなるおそれがある。
【０００６】
本発明は、上記課題を解決するためになされたものであり、記憶システムに接続されている計算機に負荷を掛けることなく複数の記憶装置間でデータの転送、データの複製を実行することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題の少なくとも一つを解決するために、本発明の第１の態様に係る記憶システムは、データを格納するデータ格納領域と、前記第２の記憶装置へ転送すべきデータを格納する転送データ格納領域と、前記第２の記憶装置との間で通信線を介してデータを送受信する第１の送受信部とを備える第１の記憶装置と、データを格納するデータ格納領域と、前記第１の記憶装置から転送されたデータを格納する転送データ格納領域と、前記転送データ格納領域として割当て可能な予約領域とを備える第２の記憶部と、前記転送データ格納領域に対する前記予約領域の割当ておよび割当ての解除の実行指示を外部装置から受け取る第２の実行指示受信部と、前記転送データ格納領域に対する前記予約領域の割当ておよび割当ての解除を実行する第２の予約領域管理部と、前記第１の記憶装置との間で通信線を介してデータを送受信する第２の送受信部とを備える第２の記憶装置と、を備えることを特徴とする。
【０００８】
本発明の第１の態様に係る記憶システムによれば、第２の記憶装置は、転送データ格納領域に対する予約領域の割当ておよび割当ての解除の実行指示に従って転送データ格納領域に対する予約領域の割当ておよび割当ての解除を実行する第２の予約領域管理部を備えるので、複数の記憶装置間でデータの転送、データの複製を実行することができる。また、転送データ格納領域の容量不足による複数の記憶装置間におけるデータの転送、データの複製の停止を抑制または防止することができる。また、記憶システムに接続されている計算機に負荷を掛けることなく第１および第２の記憶装置間でデータの転送、データの複製を実行することができる。また、第１の記憶装置に格納されるデータの複製が第２の記憶装置４０に転送されるので、第１の記憶装置で障害が発生し、データが消失した場合でも、第２の記憶装置４０の転送ボリュームに既に転送されているデータを用いてリストア処理を行うことにより障害復旧を実現することができる。
【０００９】
本発明の第１の態様に記憶システムは、この他にも、方法、プログラム、およびプログラムを記録したコンピュータが読み取り可能な記録媒体としても実現され得る。また、本発明の他の態様は、後述する実施例を用いて明らかにする。
【発明を実施するための最良の形態】
【００１０】
以下、本発明に係る計算機システムおよび計算機システムにおける予約領域の割当制御方法について図面を参照しつつ、実施例に基づいて説明する。
【００１１】
図１〜図４を参照して本実施例に係る計算機システム、計算機システムを構成する記憶装置、ホストコンピュータのハードウェア構成について説明する。図１は本実施例に係る計算機システムの概略構成を示す説明図である。図２は本実施例における第１のホストコンピュータの内部構成を示すブロック図である。図３は本実施例における第１の記憶装置の内部構成を示すブロック図である。図４は本実施例における第１の記憶装置を構成する第１ホストアダプタの内部構成を示すブロック図である。
【００１２】
計算機システム１００は、第１のホストコンピュータ１０と第１の記憶装置２０とを備
える第１の計算機システム１０１と、第２のホストコンピュータ３０と第２の記憶装置４０とを備える第２の計算機システム１０２とを備えている。また、第１の記憶装置２０と第２の記憶装置４０とは記憶装置間回線５０を介して接続されており、記憶システムを形成する。すなわち、本実施例においては、複数の記憶装置から構成されるシステムを記憶システムという。さらに、第１の記憶装置２０および第２の記憶装置４０には各記憶装置２０、４０を動作の制御、状態の管理を行うための第１のコンソール５１、第２のコンソール５２がそれぞれ接続されていても良い。一般的には、第１の計算機システム１０１には、第１のホストコンピュータ１０において実行された演算結果としてのデータが格納され、第２の計算機システム１０２には、第１の計算機システム１０１に格納されているデータの複製データ（転送フレーム）が格納される。したがって、第１の計算機システム１０１は、正計算機システム１０１（正ホストコンピュータ、正記憶装置）と呼ばれることがあり、第２の計算機システム１０２は副計算機システム１０２（副ホストコンピュータ、副記憶装置）と呼ばれることがある。
【００１３】
第１のホストコンピュータ１０は、第１の記憶装置２０と第１の信号線１４を介して接続されている。第１のホストコンピュータ１０において実行された演算処理結果としてのデータは、第１の信号線１４を介して第１の記憶装置２０に送信され、格納される。第１のホストコンピュータ１０は、図２に示すように、各種演算処理を実行するプロセッサとしての中央演算装置（ＣＰＵ）１１、メモリ１２、第１の記憶装置２０との間でデータ、コマンドの送受信を実行するためのＩ／Ｏポート１３を備えている。メモリ１２は、ＣＰＵ１１において実行される各種アプリケーションプログラム、予約領域管理情報１２１、グループ情報１２２、第１の記憶装置２０におけるデータの格納、転送を制御するストレージ制御プログラム１２３を格納している。ストレージ制御プログラム１２３は、第１の記憶装置２０を制御するためのプログラムであり、例えば、第１の記憶装置２０における転送領域（転送ボリューム）の使用状況を監視する転送領域監視モジュール１２４、記憶装置２０における予約領域（予約ボリューム）の割当、割当の解除を決定する予約領域管理モジュール１２５を含んでいる。
【００１４】
第２のホストコンピュータ３０は、第１のホストコンピュータ１０と同様の構成を備えており、図１に符号を付すことでその説明を省略する。
【００１５】
第１の記憶装置２０が備える記憶領域について図１および図３を参照して説明する。第１の記憶装置２０は、図３に示すように、物理的に複数のＨＤＤ２６を備えているが、これらは全体として１つの論理的な記憶領域を形成し、さらに、複数の論理ボリュームに分割されて用いられる。各論理ボリュームは、例えば、図１に示すように、データ格納ボリュームＤ１、Ｄ２、Ｄ３、転送データ格納ボリュームＴ１１、Ｔ１２を形成している。また、データ格納ボリュームＤ１、Ｄ２と転送データ格納ボリュームＴ１１とは第１の転送グループＴＧ１１を形成し、データ格納ボリュームＤ３と転送データ格納ボリュームＴ１２とは第２の転送グループＴＧ１２を形成している。
【００１６】
本実施例における第１の記憶装置２０はさらに、論理ボリュームの一部を予約ボリュームＲ１１、Ｒ１２として利用する。予約ボリュームＲ１１、Ｒ１２は、予約グループＲＧ１１を形成する。予約ボリュームＲ１１、Ｒ１２は、転送データ格納ボリュームＴ１１、Ｔ１２の使用状況に応じて、一時的な転送データ格納ボリュームとして各転送グループＴＧ１１、ＴＧ１２に割当可能な論理ボリュームである。より具体的には、予約ボリュームＲ１１、Ｒ１２は、その使用率が所定値以上になった転送データ格納ボリュームに対して割り当てられる。本実施例では、複数の転送データ格納ボリューム、あるいは、１または複数の転送データ格納ボリュームと予約ボリュームとからなる論理ボリュームを仮想転送ボリュームと呼ぶ。また、割り当てられた予約ボリュームは、転送データ格納ボリュームの使用率が所定値未満となると、その割当が解除される。なお、図１では、説明を容易にするため、各論理ボリュームを概念的に記述している。
【００１７】
同様にして第２の記憶装置４０もまた、複数の論理ボリュームから形成される記憶領域を備えている。各論理ボリュームは、例えば、図１に示すように、複製データ格納ボリュームＣ１、Ｃ２、Ｃ３、転送データ格納ボリュームＴ２１、Ｔ２２を形成している。また、複製データ格納ボリュームＣ１、Ｃ２と転送データ格納ボリュームＴ２１とは第１の転送グループＴＧ２１を形成し、複製データ格納ボリュームＣ３と転送データ格納ボリュームＴ２２とは第２の転送グループＴＧ２２を形成している。
【００１８】
本実施例における第２の記憶装置４０はまた、論理ボリュームの一部を予約ボリュームＲ２１、Ｒ２２として利用する。予約ボリュームＲ２１、Ｒ２２は、予約グループＲＧ２１を形成する。予約ボリュームＲ２１、Ｒ２２は、転送データ格納ボリュームＴ２１、Ｔ２２の使用状況に応じて、一時的な転送データ格納ボリュームとして各転送グループＴＧ２１、ＴＧ２２に割当可能な論理ボリュームである。予約ボリュームＲ２１、２２もまた、予約ボリュームＲ１１、Ｒ１２と同様にして、転送データ格納ボリュームＴ２１、Ｔ２２に対して割り当てられ、あるいは、割当が解除される。
【００１９】
各論理ボリュームの容量および記憶装置２０内における物理的な格納位置（物理アドレス）は、記憶装置２０内のＨＤＤ２６を識別する番号（ＨＤＤ番号）と、ＨＤＤ２６内の記憶領域を一意に示す数値、例えば、ＨＤＤの記憶領域の先頭からの位置によって指定することができる。また、第１のホストコンピュータ１０が、第１の記憶装置２０に格納されているデータを参照、更新する際に用いる論理アドレスは、論理ボリュームを識別する番号（論理ボリューム番号）と、論理ボリュームにおける記憶領域を一意に示す数値、例えば、論理ボリュームの先頭からの位置によって定義される。したがって、第１のホストコンピュータ１０によって指定された論理アドレスを物理アドレスに変換することによって、ＨＤＤ２６の物理アドレスに対する書き込み並びに読み出しが実行される。なお、各論理ボリュームの物理アドレスは、後に詳述するボリューム情報として保存されている。
【００２０】
ここで、１または複数の論理ボリュームから構成されるグループという管理単位は、各論理ボリューム間におけるデータの更新順序を保持するために用いられる。すなわち、第１の記憶装置２０におけるデータ格納ボリュームＤ１とＤ２の様に、第１のホストコンピュータ１０から送信されたライトデータが書き込まれるデータ格納ボリュームが複数存在する場合、第１の記憶装置２０における各データ格納ボリュームＤ１、Ｄ２への更新（書き込み）順序と、第２の記憶装置４０における各複製データ格納ボリュームＣ１、Ｃ２への更新順序とは整合していることが要求される。そこで、データの更新順序を守る必要のある論理ボリュームを同一のグループに登録し、データの更新毎にグループ情報の更新番号を割り当てて、更新番号順に、第２の記憶装置４０に対する複製データの書き込み処理を行う。
【００２１】
図１および図３を参照して、第１の記憶装置２０の構成について説明する。第１の記憶装置２０は、第１のホストアダプタ２１、第２のホストアダプタ２２、キャッシュ２３、共有メモリ２４、複数のディスクアダプタ２５、複数のハードディスクドライブ（ＨＤＤ）２６、クロスバスイッチ２７を備えている。各構成要素２１〜２５は、クロスバスイッチ２７によって選択的に接続される。
【００２２】
第１のホストアダプタは、第１のホストコンピュータ１０とキャッシュメモリとの間のデータ転送制御、第１の記憶装置２０全体の動作制御を実行する。第１のホストアダプタ２１は、図４に示すように、各種演算処理を実行するＣＰＵ２１１、メモリ２１２、第１のホストコンピュータ１０との間でデータおよびコマンドの送受信を実行するためのＩ／Ｏポート２１７を備えている。メモリ２１２には、ＨＤＤ２６に対する読み出し、書き込み処理を実行するためのリード・ライト処理モジュール２１３、ホストコンピュータ１０からの命令に従って転送ボリュームに対する予約ボリュームの割当、割当の解除を実行するための予約領域割当解除実行モジュール２１４を備えている。第１のホストコンピュータ１０によって実行される転送領域監視機能、予約領域管理機能を第１の記憶装置２０が備える場合には、メモリ２１２は、さらに、記憶装置２０における転送領域（転送ボリューム）の使用状況を監視する転送領域監視モジュール２１５および記憶装置２０における予約領域（予約ボリューム）の割当、割当の解除を決定する予約領域管理モジュール２１６を備えても良い。
【００２３】
第２のホストアダプタ２２は、第２の記憶装置４０との間のデータ、コマンドの送受信制御を実行する。第２のホストアダプタ２２も、第１のホストアダプタ２１と同様にしてＣＰＵ、メモリ、Ｉ／Ｏポートを備えている。
【００２４】
キャッシュ２３は、第１のホストコンピュータ１０から送られてきたライトデータ、ＨＤＤ２６から読み出したデータを一時的に格納すると共に、ライトデータを管理するための更新情報を格納する。
【００２５】
共有メモリ２４は、第１および第２のホストアダプタ２１、２２、ディスクアダプタ２５が共有するメモリであり、後述するボリューム情報２４１、ペア情報２４２、グループ情報２４３、仮想論理アドレス変換テーブル２４４、ポインタ情報２４５といった各種情報を格納している。
【００２６】
ディスクアダプタ２５は、各ＨＤＤ２６にそれぞれ備えられており、ＨＤＤ２６に対するデータの書き込み、ＨＤＤ２６からのデータの読み出しを制御する。ディスクアダプタ２５もまた、第１のホストアダプタ２１と同様にしてＣＰＵ、メモリ、Ｉ／Ｏポートを備えている。
【００２７】
第２の記憶装置４０は、第２の記憶装置４０と同様の構成を備えており、図３および図４に符号を付すことでその説明を省略する。
【００２８】
第２の計算機システム１０２について簡単に説明する。第２のホストコンピュータ３０と第２の記憶装置４０とは信号線２４を介して接続されている。第２の記憶装置４０には、第２のコンソール５２が接続されている。既述のように、第２のホストコンピュータ３０は、第１のホストコンピュータ１０と同様の構成を、第２の記憶装置４０は、記憶領域の論理ボリュームの構成を除いて、第１の記憶装置２０と同様の構成を備えている。
【００２９】
図５〜図１１を参照して、第１の記憶装置２０の共有メモリ２４に格納される各種情報について説明する。図５は共有メモリ２４に格納されるボリューム情報２４１の一例を示す説明図である。図６は共有メモリ２４に格納されるペア情報２４２の一例を示す説明図である。図７は共有メモリ２４に格納されるグループ情報２４３の一例を示す説明図である。図８は仮想転送ボリュームの構成を概念的に示す説明図である。図９は仮想転送ボリュームの更新情報領域に格納される更新情報の一例を示す説明図である。図１０は共有メモリ２４に格納されるポインタ情報２４４の一例を示す説明図である。図１１は仮想転送ボリュームにおける各アドレス位置を概念的に示す説明図である。
【００３０】
ボリューム情報２４１は、論理ボリュームを管理するための情報であり、各論理ボリューム毎に、ボリューム状態、フォーマット形式、容量、ペア番号、物理アドレスを含んでいる。ボリューム状態は、正常、正、副、異常、未使用のいずれかの値を取る。ボリューム状態が正常または正の場合には、その論理ボリュームに対してホストコンピュータ１０が正常にアクセス可能であることを意味する。また、ボリューム状態が正の場合には、データの複製が行われている論理ボリュームであることを意味する。ボリューム状態が副の場合には、その論理ボリュームに対する、ホストコンピュータ１０のアクセスを許可しても良いことを意味すると共に、複製に使用されている論理ボリュームであることを意味する。ボリューム状態が異常の場合には、その論理ボリュームに対してホストコンピュータ１０が正常にアクセスできないことを意味する。たとえば、論理ボリュームを有するＨＤＤ２６の故障による障害が該当する。ボリューム状態が未使用の場合には、その論理ボリュームは使用されていないことを意味する。ペア番号は、ボリューム状態が正または副の論理ボリュームに対して有効である、ペア情報２４２を特定するためのペア番号を含む。図５において、たとえば、論理ボリューム１は、フォーマット形式がＯＰＥＮ３、容量が３ＧＢ、ＨＤＤ２６の先頭からデータが格納され、ホストコンピュータ１０によるアクセス可能であり、データの複製対象である。
【００３１】
ペア情報２４２は、ペアとなる論理ボリュームを管理するための情報であり、図９に示すように、ペア状態、第１の（正）記憶装置番号、第１の（正）論理ボリューム番号、第２の（副）記憶装置番号、第２の（副）論理ボリューム番号、グループ番号、コピー済みアドレスを含む。ペア状態は、正常、異常、未使用、コピー未、コピー中のいずれかの値を取る。ペア状態が正常の場合には、第１の論理ボリュームの複製が正常に行われていることを意味する。ペア状態が異常の場合には、たとえば、記憶装置間回線５０の断線による障害によって、第１の論理ボリュームの複製を行うことができないことを意味する。ペア状態が未使用の場合には、そのペア番号の情報は有効でないことを意味する。ペア状態がコピー中の場合には、後述する初期コピー処理中であることを意味する。ペア状態がコピー未の場合には、初期コピー処理が未だ実行されていないことを意味する。
【００３２】
第１の記憶装置番号は、第１の論理ボリュームを有する第１の記憶装置２０を特定する番号を示す。第２の記憶装置番号は、第２の論理ボリュームを有する第２の記憶装置４０を特定する番号を示す。グループ番号は、第１の記憶装置２０の場合には、第１の論理ボリュームが属するグループ番号を示す、第２の記憶装置４０の場合には、第２の論理ボリュームが属するグループ番号を示す。コピー済みアドレスは、作成された転送用の複製データの容量を示し、初期値は０である。図９において、たとえば、ペア情報におけるペア１は、データ複製対象となる論理ボリュームが、第１の記憶装置１の第１の論理ボリューム１であり、データの複製先（複製データ、転送フレームの転送先）が第２の記憶装置２の第２論理ボリューム１であり、正常にデータ複製処理が行われているこを示す。
【００３３】
グループ情報２４３は、グループを管理するための情報であり、図７に示すように、グループ状態、ペア情報、仮想転送ボリューム番号、更新番号を含む。グループ状態は、正常、異常、未使用のいずれかの値を取る。グループ状態が正常の場合には、ペア集合の少なくとも１つのペア状態が正常であることを意味する。グループ状態が異常の場合には、ペア集合の全てのペアが異常であることを意味する。グループ状態が未使用の場合には、そのグループ番号は有効でないことを意味する。ペア集合は、第１の記憶装置２０の場合には、グループ番号が示すグループに属する全ての第１の論理ボリュームのペア番号を
全て示す。第２の記憶装置４０の場合には、グループ番号が示すグループに属する全ての第２の論理ボリュームのペア番号を全て示す。仮想転送論理ボリューム番号は、そのグループ番号のグループに属する仮想転送論理ボリュームの番号を示す。ここで、仮想転送論理ボリュームは、各転送グループにおける複数の転送ボリュームを１つのボリュームとして取り扱うために形成される仮想的な転送ボリュームを意味する。更新番号は、初期値として１を取り、グループ内の第１の論理ボリュームに対してデータの書き込みが行われると、１つインクリメントされる。図１０において、たとえば、グループ１は、ペア１、２のペア情報から第１の論理ボリューム１、２と、仮想転送ボリューム４とから構成されており、正常にデータ複製処理が行われていることを示す。
【００３４】
仮想転送ボリュームの構成および論理ボリューム（データ格納ボリューム）との関係について図８および図９を参照して説明する。仮想転送ボリュームは、更新情報を格納する更新情報格納領域とライトデータを格納するライトデータ格納領域とから構成されている。更新情報は、図９に示すように、ライトデータを管理するための情報でありライト命令の受信時刻、グループ番号、グループ情報２４３の更新番号、ライト命令の論理アドレス、ライトデータのデータサイズ、ライトデータを格納した仮想転送ボリュームの論理アドレスを含む。図９の例では、更新情報は１９９３年３月１７日の２２時２０分１０秒に受信したライト命令によって作成されている。受信されたライト命令は、データサイズ３００のライトデータを論理ボリューム番号１の論理ボリュームが有する記憶領域の先頭から７００の位置に格納することを指示している。仮想転送ボリュームにおけるライトデータの格納位置は、仮想転送ボリュームの記憶領域の先頭位置から１５００〜１８００の位置なる。また、更新情報は、この論理ボリュームはグループ１に属し、グループ１のデータ複製開始から４番目のデータ更新であることを示している。
【００３５】
ポインタ情報２４５は、グループ毎に保持され、そのグループの転送ボリュームを管理する情報であり、図１０に示すように、更新情報領域先頭アドレス、ライトデータ領域先頭アドレス、更新情報最新アドレス、更新情報最古アドレス、ライトデータ最新アドレス、ライトデータ最古アドレス、リード開始アドレス、リトライ開始アドレス、ライトデータ領域終端アドレスを含む。これら各アドレスは、１または複数の論理ボリュームから形成される仮想転送ボリュームにおいて記憶位置を指定する仮想アドレスであり、後述する仮想論理アドレス変換情報２４４を用いて各論理ボリュームにおける論理アドレスへと変換される。仮想アドレスは、仮想転送ボリュームの番号と、仮想転送ボリュームにおける記憶領域先頭位置からの位置情報とによって指定される。
【００３６】
図１１に示すように、更新情報は、更新情報領域先頭アドレス（０）からライトデータ領域先頭アドレスＡＤs（７００）までの領域に記憶される。更新情報領域はさらに、もっとも古い更新情報の先頭位置を示す更新情報最古アドレス、最新の更新情報の記憶開始位置を示す更新情報最新アドレス、リトライ開始アドレス、リード開始アドレスを備えている。
【００３７】
ライトデータは、ライトデータ領域先頭アドレスＡＤs（７００）〜ライトデータ領域終端アドレスＡＤe（２７００）までの領域に記憶される。ライトデータ最古アドレスＡＤoは、最も古いライトデータの格納開始位置を示し、ライトデータ最新アドレスＡＤnは、最新のライトデータの格納開始位置を示す。図１１の例では、更新情報は仮想アドレス２００〜５００の範囲に記憶されており、ライトデータは仮想アドレス１３００〜２２００の範囲に記憶されている。
【００３８】
ここで、本実施例において用いられる仮想転送ボリュームは、転送ボリュームの使用状況に応じて予約ボリュームが割当、あるいは、予約ボリュームの割当が解除される、容量可変の仮想ボリュームである。したがって、元の転送論理ボリュームが０〜２７００の記憶容量を有している場合に、容量Ｖの予約論理ボリュームが割り当てられると、仮想転送ボリュームの容量は追加された容量Ｖだけ増加する。この場合には、ライトデータ領域終端アドレスＡＤeは、容量Ｖに相当する位置だけ加算された位置を示す。
【００３９】
一方、仮想転送ボリュームとして、既に予約論理ボリュームが割り当てられており、予約論理ボリュームの割当が解除されると、仮想転送ボリュームの容量は解除された容量Ｖだけ減少する。この場合には、ライトデータ領域終端アドレスＡＤeは、容量Ｖに相当する位置だけ減算された位置を示す。
【００４０】
図１２および図１３を参照して仮想転送ボリュームの登録処理について説明する。図１２は本実施例において実行される仮想転送ボリュームの登録処理の処理ルーチンを示すフローチャートである。図１３は本実施例において用いられる仮想論理アドレス変換情報および論理ボリューム情報の一例を示す説明図である。
【００４１】
仮想転送ボリュームの登録処理に先立って、グループ作成処理、ペア登録処理がそれぞれ実行される。これら各処理は、ユーザによって第１のホストコンピュータ１０または第１のコンソール５１を介して実行される処理である。以下に簡単に説明する。
【００４２】
グループ作成処理では、第１の記憶装置２０における、ユーザによって指定された未使用のグループの状態が、第１のホストアダプタ２１によって正常に変更される。また、第１のホストアダプタ２１からグループ作成指示を受けた、第２のホストアダプタ４１によって、第２の記憶装置４０における、ユーザによって指定された未使用のグループの状態が正常に変更される。
【００４３】
ペア登録処理もまた、第１のホストコンピュータ１０または第１のコンソール５１を介してユーザの指示によって開始される。第１のホストコンピュータ１０は、データ複製対象を示す情報とデータ複製先を示す情報を指定し、ペア登録指示を第１の記憶装置２０に行う。データ複製対象を示す情報は、データ複製対象の転送グループ番号と第１の論理ボリューム番号である。データ複製先を示す情報は、複製データを保持する第２の記憶装置４０と転送グループ番号、第２の論理ボリューム番号である。
【００４４】
第１の記憶装置２０は、ペア情報２４２からペア情報が“未使用”のペア番号を取得し、ペア状態を“コピー未”に、第１の記憶装置番号に第１の記憶装置２０を示す第１の記憶装置番号を、第１の論理ボリューム番号に指示された第１の論理ボリューム番号を設定する。第１の記憶装置２０はまた、第２の記憶装置番号に指示された第２の記憶装置番号を、第２の論理ボリューム番号に指示された第２の論理ボリューム番号を、グループ番号に指示されたグループ番号を設定する。第１の記憶装置２０は、指示されたグループ番号のグループ情報のペア集合に取得したペア番号を追加し、第１の論理ボリューム番号のボ
リューム状態を“正”に変更する。
【００４５】
第１の記憶装置２０は、第１の記憶装置２０を示す第１の記憶装置番号、ユーザから指定されたグループ番号、第１の論理ボリューム番号、および第２の論理ボリューム番号を第２の記憶装置４０に送信する。第２の記憶装置４０は、ペア情報から未使用のペア番号を取得し、ペア状態を“コピー未”に、第１の記憶装置番号に、第１の記憶装置２０を示す第１の記憶装置番号を、第１の論理ボリューム番号に指示された第１の論理ボリューム番号を設定する。第２の記憶装置４０は、第２の記憶装置番号に第２の記憶装置４０を示す第２の記憶装置番号を、第２の論理ボリューム番号に指示された第２の論理ボリューム
番号を、グループ番号に指示されたグループ番号を設定する。
【００４６】
第２の記憶装置４０は、指示されたグループ番号のグループ情報のペア集合に取得したペア番号を追加し、第２の論理ボリューム番号のボリューム状態を“副”に変更する。以上の処理を全てのデータ複製対象のペアに対して行う。なお、論理ボリュームのグループへの登録と、論理ボリュームのペアの設定はそれぞれ個別に行ってもよい。
【００４７】
仮想転送ボリューム登録処理は、ホストコンピュータ１０またはコンソール５１を介してユーザによって実行開始が指示される、転送データ（転送フレーム）の保存に用いられる仮想転送ボリュームを転送グループＴＧに登録するための処理である。また、仮想転送ボリュームを構成する全ての転送ボリュームに対して実行される処理である。
【００４８】
ユーザによって仮想転送ボリューム登録処理が要求されると、ホストコンピュータ１０は、仮想転送ボリューム登録指示を第１の記憶装置２０に送り、第１の記憶装置２０において仮想転送ボリュームの登録処理が実行される。仮想転送ボリューム登録指示は、登録先の転送グループの番号と登録すべき仮想転送ボリュームの番号とを含んでいる。
【００４９】
仮想転送ボリューム登録指示を受け取ると、ホストアダプタ２１（ＣＰＵ２１１）は、仮想転送ボリュームを構成する転送ボリュームのうち、今回、対象となる転送ボリュームの容量Ｖltが所定容量Ｖent以上であるか否かを判定する（ステップＳ１００）。ホストアダプタ２１は、Ｖlt≧Ｖentであると判定すると（ステップＳ１００：Ｙｅｓ）、仮想論理変換情報２４４１を作成する（ステップＳ１０１）。ここで、仮想論理変換情報２４４１の各エントリには一定の容量が割り当てられており、所定の容量Ｖentは各エントリに割り当てられている容量に一致する。
【００５０】
一方、ホストアダプタ２１は、Ｖlt＜Ｖentであると判定すると（ステップＳ１００：Ｎｏ）、エラー処理を実行して（ステップＳ１０９）本処理ルーチンを終了する。かかる場合には、対象となる転送ボリュームには仮想アドレスを割り当てる領域が存在しないからである。
【００５１】
仮想論理変換情報２４４１は、図１３に示すように、仮想アドレス、有効ビット、オフセット、ディスクポインタとを含む情報である。仮想アドレスは、例えば、００００から００ＦＦの値を取り、有効ビットは仮想アドレスが有効であるか否かを示し、１の場合には有効、０の場合には無効を意味する。オフセットは、同一の転送ボリュームに対して複数の仮想アドレス（エントリ）が割り当てられた時に付与される他のエントリに対する差分情報であり、ディスクポインタは各エントリに対応する論理ボリューム情報を指し示す情報である。
【００５２】
ホストアダプタ２１は、転送ボリューム情報２４４２を作成する（ステップＳ１０２）。転送ボリューム情報２４４２は、図１３に示すように、転送ボリュームの論理ボリューム番号、開始アドレス、ボリュームサイズを含んでいる。ホストアダプタ２１は、仮想論理変換情報２４４１におけるエントリ＃Ｎのディスクポインタに対象転送ボリューム情報を割り当てる（ステップＳ１０３）。ディスクポインタに対する転送ボリューム情報の割当ては、仮想転送ボリューム登録指示によって指定された仮想転送ボリューム番号と同値の番号の転送ボリュームが割り当てられるように実行される。
【００５３】
ホストアダプタ２１は、対象転送ボリュームへのエントリの割当は初めてであるか否かを判定し（ステップＳ１０４）、初めてであると判定した場合には（ステップＳ１０４：Ｙｅｓ）、仮想論理変換情報２４４１における対象エントリのオフセットＯff_#Nを０に設定する（ステップＳ１０５）。一方、ホストアダプタ２１は、対象転送ボリュームへのエントリの割当が初めてでないと判定した場合には（ステップＳ１０４：Ｎｏ）、仮想論理変換情報２４４１における対象エントリのオフセットＯff_#NをＯff_#N-1＋Ｖentに設定する（ステップＳ１０６）。すなわち、エントリ容量分だけ先のエントリに対してオフセットが与えられる。
【００５４】
ホストアダプタ２１は、仮想論理変換情報２４４１中のエントリ＃ＮのオフセットＯff_#Nにエントリ容量Ｖentを加えた値が転送ボリュームの容量Ｖltを超えるか否か判定し（ステップＳ１０７）する。ホストアダプタ２１は、Ｏff_#N＋Ｖent＞Ｖltの場合には（ステップＳ１０７：Ｙｅｓ）、グループ情報２４３における指示されたグループ番号の仮想転送ボリューム番号に指示された仮想転送ボリューム番号を登録し、対応する論理ボリュームのボリューム情報のボリューム情報を正常に変更して、本処理ルーチンを終了する。一方、ホストアダプタ２１は、Ｏff_#N＋Ｖent≦Ｖltの場合には（ステップＳ１０７：Ｎ
ｏ）、ステップＳ１０３に移行して上記処理を繰り返して実行する。
【００５５】
第２の記憶装置４０についても同様の仮想転送ボリューム登録処理が実行される。簡単に説明すると、第１の記憶装置２０のホストアダプタ２１は、ホストコンピュータ１０から第２の記憶装置４０に対する仮想転送ボリューム登録指示を受け取ると、第２の記憶装置４０の第１のホストアダプタ４１に転送する。第１のホストアダプタ４１は、上記フローチャートを同様に実行する。
【００５６】
この処理ルーチンを終了すると、仮想論理変換情報２４４１と論理ボリューム情報２４４２とが関連付けられた仮想論理アドレス変換テーブル２４４が形成される。この仮想論理アドレス変換テーブル２４４を用いれば、仮想アドレスを指定することによって各論理ボリューム（転送ボリューム、予約ボリューム）における論理アドレスを指定することができる。
【００５７】
例えば、仮想アドレス（000201F2）が指定されると、上位２バイト（0002）と仮想論理アドレス変換テーブル２４４の仮想アドレスとが比較され、一致するエントリが特定される。図１３の例では、仮想アドレス（0002）のエントリが該当する。したがって、転送ボリューム番号５の転送ボリューム情報がポインタによって指し示され、論理アドレスとしては、０（開始アドレス）＋（0000）オフセット＋（01F2）指定された仮想アドレスの下位２バイトとなる。
【００５８】
仮想転送ボリュームを構成する全ての転送ボリュームに対して仮想転送ボリューム登録処理が終了すると、初期化コピー処理が実行される。具体的には、第１のホストコンピュータ１０または第１のコンソール５１を介してユーザによって初期化コピー処理が指示される。初期化コピー指示には、データの複製処理を開始すべき転送グループ番号が含まれており、ホストアダプタ２１は、指示されたグループに属する全てのペアについて、ペア情報におけるコピー済みアドレスを０にする。ホストアダプタ２１は、ホストアダプタ４１に対して後述する転送フレームリード処理、およびリストア処理の開始を指示する。
【００５９】
ホストコンピュータ１０において実行される転送グループ監視処理について図１４〜図１７を参照して説明する。図１４は本実施例においてホストコンピュータ１０によって実行される転送グループ監視処理の処理ルーチンを示すフローチャートである。この処理は、各転送グループに対して実行されると共に、所定時間間隔で繰り返し実行される監視処理である。図１５は転送グループの使用率および使用率の差分を含む使用率情報の一例を示す説明図である。図１６は予約ボリュームの管理情報の一例を示す説明図である。図１７は回線使用率情報の一例を示す説明図である。
【００６０】
第１のホストコンピュータ１００（ＣＰＵ１１）は、図１４または図１５に示すように、第１の記憶装置２０における転送グループＴＧの使用率Ｕr、使用率差分Ｕrdを求める（ステップＳ２００）。具体的には、使用率Ｕr、使用率差分Ｕrdは、各転送グループにおける仮想転送ボリュームの使用率、使用率差分であり、それぞれ以下の式１〜式３を用いて算出される。
【００６１】
【数１】
0004715286.tif 000002
【００６２】
第１のホストコンピュータ１０は、Ｕr＞所定値Ｕr_refかつＵrd＞０であるか否かを判定し（ステップＳ２０１）、Ｕr＞Ｕr_refかつＵrd＞０であると判定した場合には（ステップＳ２０１：Ｙｅｓ）、対象転送グループに対する予約ボリュームの割当て要求を第１の記憶装置２０に対して発行する（ステップＳ２０２）。すなわち、対象転送グループにおける仮想転送ボリュームの使用率Ｕrが所定値Ｕr_refより大きく、使用率Ｕrの差分（変動量）が正の場合には、第１のホストコンピュータ１０は、仮想転送ボリュームが飽和状態にあると判定して、予約ボリュームの割当てを要求する。
【００６３】
第１のホストコンピュータ１０は、予約ボリューム管理情報１２１における、割当て予約ボリュームの帰属先を対象転送グループに変更して（ステップＳ２０３）、ステップＳ２００に移行する。予約ボリューム管理情報１２１は、図１６に示すように予約ボリュームの番号、予約グループの割当先となる帰属先グループ、登録順序を含んでいる。図１６の例では、予約ボリューム１と予約ボリューム２はともに転送グループ１に属しており、予約ボリューム１が予約ボリューム２よりも先に登録されている。
【００６４】
第１のホストコンピュータ１０は、Ｕr＞Ｕr_refかつＵrd＞０であると判定した場合には（ステップＳ２０１：Ｙｅｓ）、Ｕr≦Ｕr_refかつＵrd≦０であるか否かを判定する（ステップＳ２０４）。第１のホストコンピュータ１０は、Ｕr≦Ｕr_refかつＵrd≦０であると判定した場合には（ステップＳ２０４：Ｙｅｓ）、対象転送グループに予約ボリュームが存在するか否かを判定する（ステップＳ２０５）。すなわち、対象転送グループにおける仮想転送ボリュームの使用率Ｕrが所定値Ｕr_ref以下であり、使用率Ｕrの差分（変動量）が０または負の場合には、第１のホストコンピュータ１０は、仮想転送ボリュームが飽和状態にないと判定する。そして、既に割り当てられている予約ボリュームが存在するか否かを判定する。
【００６５】
第１のホストコンピュータ１０は、対象転送グループに予約ボリュームが存在すると判定した場合には（ステップＳ２０５：Ｙｅｓ）、対象転送ボリューム、具体的には仮想転送ボリュームから、既に割り当てられている予約ボリュームの割り当て解除を要求する、割り当て解除要求を第１の記憶装置２０に対して発行する（ステップＳ２０６）。第１のホストコンピュータ１０は、予約ボリューム管理情報１２１における、割当て解除された予約ボリュームの帰属先をフリーに変更して（ステップＳ２０７）、ステップＳ２００に移行する。
【００６６】
第１のホストコンピュータ１０は、Ｕr≦Ｕr_refかつＵrd≦０でないと判定した場合（ステップＳ２０４：Ｎｏ）、対象転送グループに予約ボリュームが存在しないと判定した場合（ステップＳ２０５：Ｎｏ）には、全ての転送グループについて使用率Ｕr、使用率差分Ｕrdを求めたか否かを判定し（ステップＳ２０８）、終えていない場合には（ステップＳ２０８：Ｎｏ）、ステップＳ２００に移行し、既述の処理を繰り返す。
【００６７】
第１のホストコンピュータ１０は、全ての転送グループについて使用率Ｕr、使用率差分Ｕrdを求めたと判定した場合には（ステップＳ２０８：Ｙｅｓ）、記憶装置間回線５０の回線使用率Ｕlrを求める（ステップＳ２０９）。記憶装置間回線５０の回線使用率は公知の方法によって算出される。回線使用率Ｕlrは、例えば、図１７に示すように、その回線を使用している転送グループの番号と共に回線使用率情報として保持され得る。図１７の例では、記憶装置間回線５０は２重化されており、２つのパスを備えている。パス２は２つの転送グループ２、３によって共有されている。
【００６８】
第１のホストコンピュータ１０は、回線使用率Ｕlrが判定値Ｕlr_refよりも大きいか否かを判定し（ステップＳ２１０）、Ｕlr＞Ｕlr_refであると判定した場合には（ステップＳ２１０：Ｙｅｓ）、ステップＳ２０２、２０３を実行する。回線使用率Ｕlrは必ずしも現時点における転送グループの飽和状態を示すものではないが、転送グループが今後飽和するか否かを予測する判断材料の一つとして用いることができる。すなわち、回線使用率Ｕlrが大きければ、第１の記憶装置２０から第２の記憶装置４０への複製データ（転送フレーム）の転送が円滑に進行せず、第１の記憶装置２０における転送ボリュームには転送フレームが蓄積することが予想される。
【００６９】
第１のホストコンピュータ１０は、Ｕlr≦Ｕlr_refであると判定した場合には（ステップＳ２１０：Ｎｏ）、所定時間待機し（ステップＳ２１１）、全ての回線について回線使用率Ｕrlを求めたか否か判定する（ステップＳ２１２）。第１のホストコンピュータ１０は、全ての回線について回線使用率Ｕrlを求めた場合には（ステップＳ２１２：Ｙｅｓ）、ステップＳ２００に移行する。第１のホストコンピュータ１０は、全ての回線について回線使用率Ｕrlを求めていない場合には（ステップＳ２１２：Ｎｏ）、ステップＳ２０９に移行して、他の回線について回線使用率Ｕlrを求める。
【００７０】
図１８を参照して、第１のホストコンピュータ１０からの要求に応じて第１の記憶装置２０において実行される、予約ボリュームの割当て、および割当て解除処理について説明する。なお、予約ボリュームの割当て・割当て解除処理は、第１のホストコンピュータ１０からのアクセス命令受信処理の一部として実行される。図１８は本実施例における第１の記憶装置２０において実行されるアクセス命令受信処理における処理ルーチンを示すフローチャートである。
【００７１】
第１のホストアダプタ２１は、第１のホストコンピュータ１０から受信したアクセス命令が予約ボリューム割当要求であるか否かを判定する（ステップＳ３００）。アクセス命令は、リード、ライト、予約ボリュームの割当要求・割当解除要求の命令、命令対象の論理アドレス、論理ボリューム番号、仮想アドレス、データ量を含んでいる。第１のホストアダプタ２１は、受信したアクセス命令が予約ボリューム割当要求であると判定した場合には（ステップＳ３００：Ｙｅｓ）、予約グループに空いてる予約ボリュームが存在するか否かを判定する（ステップＳ３０１）。第１のホストアダプタ２１は、予約グループに空き予約ボリュームが存在すると判定した場合には（ステップＳ３０１：Ｙｅｓ）、対象となる転送グループＴＧに対して、予め登録されている予約ボリュームの割当を開始する（ステップＳ３０２）。
【００７２】
第１のホストアダプタ２１は、図１１に示すように、仮想転送ボリュームにおけるライトデータ領域終端アドレスＡＤeに追加される予約ボリュームの容量を加算して新たなライトデータ領域終端アドレスＡＤeとし、仮想転送ボリュームの容量を増加させる（ステップＳ３０３）。続いて、第１のホストアダプタ２１は、仮想論理アドレス変換テーブル２４４に割り当てられた予約ボリューム情報を転送ボリューム情報として追加して、有効ビットを１にして（ステップＳ３０４）、本処理ルーチンを終了する。
【００７３】
予約ボリュームの割当について図１９を参照して模式的に説明する。図１９は転送グループに対する予約ボリュームの割当を模式的に示す説明図である。割当前は、転送グループＴＧ１には、転送ボリュームＴ１１が１つ存在している。また、予約グループＲＧには２つの予約ボリュームＲ１１、Ｒ１２が存在する。予約ボリュームの割当処理によって、予約ボリュームＲ１１が転送グループＴＧ１に割り当てられると、転送ボリュームＴ１１と割り当てられた予約ボリュームＲ１１（Ｔ１３）とによって仮想転送ボリュームが形成される。この結果、仮想転送ボリュームの容量は、予約ボリュームＲ１１（Ｔ１３）の容量分だけ増大し、より多くの転送フレームを格納することができる。
【００７４】
第１のホストアダプタ２１は、アクセス命令が予約ボリューム割当要求でないと判定した場合には（ステップＳ３００：Ｎｏ）、アクセス命令は予約ボリューム割当解除要求であるか否かを判定する（ステップＳ３０５）。第１のホストアダプタ２１は、アクセス命令が予約ボリューム割当解除要求であると判定した場合には（ステップＳ３０５：Ｙｅｓ）、対応する転送グループに予約ボリュームが存在するか否かを判定する（ステップＳ３０６）。第１のホストアダプタ２１は、対応転送グループに予約ボリュームが存在すると判定した場合には（ステップＳ３０６：Ｙｅｓ）、仮想論理アドレス変換テーブル２４４における、割当解除の対象である予約ボリュームについて有効ビットを０に設定する。すなわち、割当解除の対象である予約ボリュームを転送ボリュームとして無効にする。対応転送グループに複数の予約ボリュームが存在する場合には、最も新しい時期に登録された予約ボリュームが対象となる。
【００７５】
第１のホストアダプタ２１は、対象予約ボリューム情報が使用中であるか否かを判定し（ステップＳ３０８）、使用中の場合には待機する（ステップＳ３０８：Ｙｅｓ）。すなわち、対象予約ボリュームが転送ボリュームとして使用されているか否かを判定する。第１のホストアダプタ２１は、対象予約ボリューム情報が使用中でなくなると（ステップＳ３０８：Ｎｏ）、対象予約ボリュームのオフセットが０であるか否かを判定する（ステップＳ３０９）。対象予約ボリュームは複数の仮想アドレスに対応する複数のディスクポインタによって指し示されている場合がある。そこで、オフセット０のディスクポインタによって指し示されている対象予約ボリューム情報の使用が終了するまで、すなわち、全ての対象予約ボリューム情報の使用が終了するまで待機する。
【００７６】
第１のホストアダプタ２１は、オフセット＝０であると判定した場合には（ステップＳ３０９：Ｙｅｓ）、対象予約ボリュームの割当を解除し（ステップＳ３１０）、本処理ルーチンを終了する。具体的には、図１１に示すように、仮想転送ボリュームにおけるライトデータ領域終端アドレスＡＤeから追加されていた予約ボリュームの容量を減算して、新たなライトデータ領域終端アドレスＡＤeとする。
【００７７】
予約ボリュームの割当解除について図２０を参照して模式的に説明する。図２０は転送グループに割り当てられている予約ボリュームの割当解除を模式的に示す説明図である。解除前（割当中）は、転送グループＴＧ１には、転送ボリュームＴ１１と割り当てられた予約ボリュームＴ１３（Ｒ１１）とによって形成された仮想転送ボリュームが存在する。予約ボリュームの割当解除処理によって、転送グループＴＧ１に対する予約ボリュームＲ１１の割当が解除され、転送グループＴＧ１には転送ボリュームＴ１１のみが残る。この結果、仮想転送ボリュームの容量は、予約ボリュームＲ１１（Ｔ１３）の容量分だけ減少する。
【００７８】
第１のホストアダプタ２１は、予約グループに予約ボリュームが存在しない場合（ステップＳ３０１：Ｎｏ）、および対応転送グループに割当済みの予約ボリュームが存在しない場合（ステップＳ３０６：Ｎｏ）には、予約ボリュームの割当、割当の解除を実行することができないので、エラー処理を実行して（ステップＳ３１２）、本処理ルーチンを終了する。エラー処理としては、たとえば、第１のコンソール５１、第１のホストコンピュータ１０に対する、予約ボリュームの割当・割当解除の実行不可能の通知が該当する。
【００７９】
ホストアダプタ２１は、アクセス命令が予約ボリューム割当要求および予約ボリューム割当解除要求のいずれでもない場合には（ステップＳ３０５：Ｎｏ）、制御命令受信処理（ステップＳ３２０）を実行して本処理ルーチンを終了する。
【００８０】
制御命令受信処理について図２１を参照して説明する。図２１は本実施例において実行される制御命令受信処理の処理ルーチンを示すフローチャートである。以下、これらを用いて、第１の記憶装置２０が、第１のホストコンピュータ１０からデータ複製対象の論理ボリュームにライト命令を受信した場合の処理手順について説明する。
【００８１】
第１の記憶装置２０の第１のホストアダプタ２１は、受信したアクセス命令がライト命令であるか否かを判定し（ステップＳ４００）、ライト命令の場合には（ステップＳ４００：Ｙｅｓ）、アクセス命令によって指定されたデータ格納ボリュームのボリューム情報を参照する。第１のホストアダプタ２１は、指定されたデータ格納ボリュームのボリューム状態が「正常」もしくは「正」以外の場合には（ステップＳ４０１：Ｎｏ）、指定されたデータ格納ボリュームへのアクセスは不可能なため、第１のホストコンピュータ１０に異常終了を報知して（ステップ４０２）、本処理ルーチンを終了する。
【００８２】
第１のホストアダプタ２１は、指定されたデータ格納ボリュームのボリューム状態が「正常」もしくは「正」の場合には（ステップＳ４０１：Ｙｅｓ）、キャッシュメモリ２３を確保して第１のホストコンピュータ１０からライトデータを受信する（ステップＳ４０３）。
【００８３】
第１のホストアダプタ２１は、アクセス命令によって指定されたデータ格納ボリュームがデータ複製対象論理ボリュームであるか否か、すなわち、ボリューム状態が「正」であるか否か、を判定する（ステップＳ４０４。第１のホストアダプタ２１は、指定されたデータ格納ボリュームがデータ複製対象論理ボリュームであると判定した場合には（ステップＳ４０４：Ｙｅｓ）、後述する転送フレーム作成処理を実行して（ステップＳ４０５）、ディスクアダプタ２５に対してライト命令を送る（ステップＳ４０６）。
【００８４】
第１のホストアダプタ２１は、指定されたデータ格納ボリュームがデータ複製対象論理ボリュームでないと判定した場合には（ステップＳ４０４：Ｎｏ）、ディスクアダプタ２５に対してライト命令を送る（ステップＳ４０６）。
【００８５】
第１のホストアダプタ２０は、第１のホストコンピュータ１０に完了通知を送り（ステップＳ４０７）、本処理ルーチンを終了する。この後、ディスクアダプタ２５は、リードライト処理により、ＨＤＤ２６にライトデータを書き込む。
【００８６】
ステップＳ４００において、第１のホストアダプタ２１は、アクセス命令がライト命令でないと判定した場合には（ステップＳ４００：Ｎｏ）、アクセス命令が転送フレームリード命令であるか否かを判定する（ステップＳ４０８）。第１のホストアダプタ２１は、アクセス命令が転送フレームリード命令であると判定した場合には（ステップＳ４０８：Ｙｅｓ）、後述する転送フレームリード処理を実行して（ステップＳ４０９）、本処理ルーチンを終了する。
【００８７】
一方、第１のホストアダプタ２１は、アクセス命令が転送フレームリード命令でないと判定した場合には（ステップＳ４０８：Ｎｏ）、リード処理を実行して（ステップＳ４１０）、本処理ルーチンを終了する。
【００８８】
転送フレーム作成処理について図２２を参照して説明する。図２２は本実施例において実行される転送フレーム作成処理の処理ルーチンを示すフローチャートである。以下、これらを用いて、第１の記憶装置２０が、第１のホストコンピュータ１０からデータ複製対象の論理ボリュームにライト命令を受信した場合の処理手順について説明する。
【００８９】
第１のホストアダプタ２１は、仮想転送ボリュームのボリューム状態が「正常」であるか否かを判定し（ステップＳ５００）、正常である場合には（ステップＳ５００：Ｙｅｓ）、アクセス命令に起因する転送フレーム作成処理であるか否かを判定する（ステップＳ５０１）。第１のホストアダプタ２１は、仮想転送ボリュームのボリューム状態が「正常」でない場合には（ステップＳ５００：Ｎｏ）、仮想転送ボリュームに転送フレームを格納することができないので、グループ状態を「異常」に変更し、処理を終了する。この場合、仮想転送ボリューム（を構成する転送ボリューム）を正常な論理ボリュームに変更す
ることが望ましい。
【００９０】
第１のホストアダプタ２１は、今回の転送フレーム作成処理がアクセス命令に起因するものであると判定した場合には（ステップＳ５０１：Ｙｅｓ）、ライト命令に含まれる論理アドレスが初期コピー処理の対象であるか否かを判定する（ステップＳ５０２）。ライト命令によって指定されたデータ格納ボリュームのペア状態が「コピー未」または「コピー中」の場合には、後に初期コピー処理にて転送フレーム作成処理が実行される。したがって、ライト命令に含まれる論理アドレスが初期コピー処理の対象である場合には（ステップＳ５０２：Ｙｅｓ）、この時点では転送フレームを作成しない。第１のホストアダプタ２１は、ライト命令に含まれる論理アドレスが初期コピー処理の対象でないと判定した場合、すなわち、ライト命令によって指定されたデータ格納ボリュームのペア状態が「正常」の場合には（ステップＳ５０２：Ｎｏ）、仮想転送ボリュームの更新情報領域に未使用領域が存在するか否かを判定する（ステップＳ５０３）。具体的には、第１のホストアダプタ２１は、ポインタ情報２４５を参照して、更新情報最古アドレスと更新情報最新アドレスとが一致する場合には仮想転送ボリュームの更新情報領域には未使用領域が存在しないと判断する。
【００９１】
第１のホストアダプタ２１は、仮想転送ボリュームの更新情報領域に未使用領域が存在すると判定した場合には（ステップＳ５０３：Ｙｅｓ）、仮想転送ボリュームのライトデータ領域にライトデータを格納可能であるか否かを判定する（ステップＳ５０４）。具体的には、第１のホストアダプタ２１は、ポインタ情報２４５を参照して、ライトデータ最新アドレスＡＤnとライトデータ容量との和が、ライトデータ領域終端アドレスＡＤe以上となる場合には仮想転送ボリュームのライトデータ領域に対するライトデータの書き込みはできないと判断する。
【００９２】
第１のホストアダプタ２１は、仮想転送ボリュームのライトデータ領域にライトデータを格納可能であると判定した場合には（ステップＳ５０４：Ｙｅｓ）、更新情報を格納する論理アドレスおよびライトデータを格納する論理アドレスを取得し、更新情報を作成する（ステップＳ５０５）。具体的には、対象転送グループのグループ情報２４３から現在の更新番号を取得し、１を加算した値をグループ情報２４３における更新番号に設定する。また、現在の更新情報最新アドレスに更新情報の容量を加算した値をポインタ情報２４５の更新情報最新アドレスに設定する。さらに、現在のライトデータ最新アドレスＡＤnにライトデータの容量を加算した値をポインタ情報２４５のライトデータ最新アドレスＡＤnに設定する。第１のホストアダプタ２１は、これら数値とグループ番号等を用いて更新情報を作成する。
【００９３】
第１のホストアダプタ２１は、ディスクアダプタ２５に対して、更新情報およびライトデータを含むライト命令を送り（ステップＳ５０６）、本処理ルーチンを終了する。
【００９４】
第１のホストアダプタ２１は、今回の転送フレーム作成処理がアクセス命令に起因するものでない、すなわち、初期コピー処理に起因すると判定した場合には（ステップＳ５０１：Ｎｏ）、仮想転送ボリュームの更新情報領域に未使用領域が存在するか否かを判定する（ステップＳ５０９）。
【００９５】
第１のホストアダプタ２１は、仮想転送ボリュームの更新情報領域に未使用領域が存在すると判定した場合には（ステップＳ５０７：Ｙｅｓ）、更新情報を格納する論理アドレスを取得し、更新情報を作成する（ステップＳ５０９）。第１のホストアダプタ２１は、ディスクアダプタ２５に対して、更新情報を含むライト命令を送り（ステップＳ５１０）、本処理ルーチンを終了する。
【００９６】
第１のホストアダプタ２１は、仮想転送ボリュームの更新情報領域に未使用領域が存在しないと判定した場合には（ステップＳ５０７：Ｎｏ）、転送フレーム作成失敗として（ステップＳ５０８）、本処理ルーチンを終了する。
【００９７】
転送フレームリード処理について図２３を参照して説明する。図２３は本実施例において実行される転送フレームリード処理の処理ルーチンを示すフローチャートである。以下、これらを用いて、第１の記憶装置２０が、第２の記憶装置４０から転送フレームリード命令を受信した場合の処理手順について説明する。転送フレームリード命令は、転送フレームリード命令であることを示す識別子、命令対象の転送グループ番号、リトライ指示の有無を含んでいる。
【００９８】
第１のホストアダプタ２１は、第２の記憶装置４０から転送フレームリード命令を受信すると、転送グループの状態は正常であるか否かを判定する（ステップＳ６００）。第１のホストアダプタ２１は、対象となる転送グループの状態が「正常」でない、すなわち、「障害」を示す場合には（ステップＳ６００：Ｎｏ）、第２の記憶装置４０に対象となる転送グループの状態を通知して（ステップＳ６１０）、本処理ルーチンを終了する。第２の記憶装置４０は、受信したグループ状態に応じて処理を実行する。例えば、グループ状態が「障害」を示す場合には転送フレームリード処理を終了する。
【００９９】
第１のホストアダプタ２１は、転送グループの状態が正常であると判定すると（ステップＳ６００：Ｙｅｓ）、仮想転送ボリュームのボリューム状態が「正常」であるか否かを判定する（ステップＳ６０１）。第１のホストアダプタ２１は、正常である場合には（ステップＳ６０１：Ｙｅｓ）、転送フレームリード命令がリトライ指示であるか否かを判定する（ステップＳ６０２）。
【０１００】
第１のホストアダプタ２１は、仮想転送ボリュームのボリューム状態が「正常」でない場合には（ステップＳ６０１：Ｎｏ）、グループ状態を「異常」に変更し、第２の記憶装置４０に仮想転送ボリュームの状態を通知して（ステップＳ６１０）、本処理ルーチンを終了する。第２の記憶装置４０は、受信したボリューム状態に応じて処理を実行する。例えば、ボリューム状態が「異常」を示す場合には転送フレームリード処理を終了する。
【０１０１】
第１のホストアダプタ２１は、転送フレームリード命令がリトライ指示である場合には（ステップＳ６０２：Ｙｅｓ）、前回送信した転送フレームを第２の記憶装置４０に対して再度送信する。第１のホストアダプタ２１は、ディスクアダプタ２５を介してリトライ開始アドレスの更新情報およびライトデータを読み取り（ステップＳ６０３）、読み取った更新情報およびライトデータを含む転送フレームを第２の記憶装置に送信して（ステップＳ６０４）、本処理ルーチンを終了する。
【０１０２】
第１のホストアダプタ２１は、転送フレームリード命令がリトライ指示でない場合には（ステップＳ６０２：Ｎｏ）、未送信転送フレームが存在するか否かを判定する（ステップＳ６０５）。具体的には、第１のホストアダプタ２１は、ポインタ情報２４５におけるリード開始アドレスと更新情報最新アドレスとを比較し、両アドレスが等しい場合には全ての転送フレームを第２の記憶装置４０に転送済みとなる。
【０１０３】
第１のホストアダプタ２１は、未送信転送フレームが存在する場合には（ステップＳ６０５：Ｙｅｓ）、ディスクアダプタ２５を介してリード開始アドレスの更新情報、ライトデータを読み取り（ステップＳ６０６）、読み取った更新情報およびライトデータを含む転送フレームを第２の記憶装置に送信する（ステップＳ６０７）。第１のホストアダプタ２１は、ポインタ情報２４５のリトライ開始アドレスにリード開始アドレスを設定し、リード開始アドレスには送信した更新情報の容量を加算した値を設定する。
【０１０４】
第１のホストアダプタ２１は、前回の転送フレームリード命令の処理時に、第２の記憶装置４０に対して送信した転送フレームを格納していた仮想転送ボリュームの記憶領域を開放して（ステップＳ６０８）、本処理ルーチンを終了する。仮想転送ボリュームの記憶領域の開放処理は以下の通り実行される。先ず、ポインタ情報２４５における更新情報最古アドレスがリトライ開始アドレスに設定される。更新情報最古アドレスがライトデータ領域先頭アドレスＡＤsと一致する場合には、更新情報最古アドレスは０とされる。ライトデータ最古アドレスＡＤoは、前回の転送フレームリード命令に応じて送信したライトデータのデータ容量を加算した値に変更される。本実施例では、仮想転送ボリュームの使用状況に応じて、仮想転送ボリュームの容量を増減することができるので、ライトデータ最古アドレスＡＤoが、仮想転送ボリュームの容量以上の論理アドレスとなることは原則としてない。
【０１０５】
第１のホストアダプタ２１は、未送信転送フレームが存在しない場合には（ステップＳ６０５：Ｎｏ）、全ての転送フレームを第２の記憶装置４０に送信済みであるから、第２の記憶装置４０に対して「転送フレーム無し」を通知する（ステップＳ６０９）。第１のホストアダプタ２１は、転送フレームの記憶領域を開放して（ステップＳ６０８）、本処理ルーチンを終了する。
【０１０６】
ディスクアダプタ２５を介してリード開始アドレスの更新情報、ライトデータを読み取り（ステップＳ６０６）、読み取った更新情報およびライトデータを含む転送フレームを第２の記憶装置に送信する（ステップＳ６０７）。第１のホストアダプタ２１は、ポインタ情報２４５のリトライ開始アドレスにリード開始アドレスを設定し、リード開始アドレスには送信した更新情報の容量を加算した値を設定する。
【０１０７】
第１のホストアダプタ２１は、前回の転送フレームリード命令の処理時に、第２の記憶装置４０に対して送信した転送フレームを格納していた仮想転送ボリュームの記憶領域を開放して（ステップＳ６０８）、本処理ルーチンを終了する。
【０１０８】
第１の記憶装置２０に対する転送フレームリード命令送信処理について図２４を参照して説明する。図２４は本実施例において実行される転送フレームリード命令送信処理の処理ルーチンを示すフローチャートである。以下、これらを用いて、第２の記憶装置４０が、第１の記憶装置２０から転送フレームを読み出し、仮想転送ボリュームに格納する処理手順について説明する。
【０１０９】
第２の記憶装置４０における第１のホストアダプタ４１は、第１の記憶装置２０に対して送信した転送フレームリード命令に対する応答を受信する（ステップＳ７００）。第１のホストアダプタ４１は、応答が「転送フレーム無し」の場合には（ステップＳ７０１：
Ｙｅｓ）、所定時間後に第１の記憶装置２０に対して転送フレームリード命令を再送信して（ステップＳ７０２）、ステップＳ７００に移行する。指定した転送グループには、現在、転送フレームが存在しないので、待機するのである。
【０１１０】
第１のホストアダプタ４１は、応答が「転送フレーム無し」でない場合には（ステップ７０１：Ｎｏ）、応答が「指定した転送グループの状態が障害または未使用」であるか否かを判定する（ステップＳ７０３）。第１のホストアダプタ４１は、応答が「指定した転送グループの状態が障害または未使用」である場合には（ステップＳ７０３：Ｙｅｓ）、転送フレームを受け取ることができないので、本処理ルーチンを終了する。
【０１１１】
第１のホストアダプタ４１は、応答が「指定した転送グループの状態が障害または未使用」でない場合には（ステップＳ７０３：Ｎｏ）、応答から、仮想転送ボリュームの状態が正常であるか否かを判定する（ステップＳ７０４）。第１のホストアダプタ４１は、仮想転送ボリュームの状態が正常であるか否かを判定する（ステップＳ７０４）。
【０１１２】
第１のホストアダプタ４１は、仮想転送ボリュームの状態が正常でない、すなわち、異常の場合には（ステップＳ７０４：Ｎｏ）、仮想論理ボリュームに対して転送フレームを格納することができないので本処理ルーチンを終了する。この場合、仮想転送ボリューム（を構成する転送ボリューム）を正常な論理ボリュームに変更することが望ましい。
【０１１３】
第１のホストアダプタ４１は、仮想転送ボリュームの状態が正常である場合には（ステップＳ７０４：Ｙｅｓ）、後述する転送フレーム格納処理を実行する（ステップＳ７０５）。第１のホストアダプタ４１は、転送フレーム格納処理が正常に終了した場合には（ステップＳ７０６：Ｙｅｓ）、第１の記憶装置２０に対して転送フレームリード命令を送信して（ステップＳ７０７）、ステップＳ７００に移行する。
【０１１４】
第１のホストアダプタ４１は、転送フレーム格納処理が正常に終了しなかった場合には（ステップＳ７０６：Ｎｏ）、第１の記憶装置２０に対して、所定時間後にリトライ指示の転送フレームリード命令を送信して（ステップＳ７０８）、ステップＳ７００に移行する。
【０１１５】
転送フレーム格納処理について図２５を参照して説明する。図２５は本実施例において実行される転送フレーム格納処理の処理ルーチンを示すフローチャートである。
【０１１６】
第１のホストアダプタ４１は、ポインタ情報を参照して、仮想転送ボリュームの更新情報領域に未使用領域が存在するか否かを判定し（ステップＳ８００）、仮想転送ボリュームの更新情報領域に未使用領域が存在しない場合には（ステップＳ８００：Ｎｏ）、転送フレーム格納失敗として（ステップＳ８０１）、本処理ルーチンを終了する。
【０１１７】
第１のホストアダプタ４１は、仮想転送ボリュームの更新情報領域に未使用領域が存在する場合には（ステップＳ８００：Ｎｏ）、ポインタ情報を参照してライトデータ領域にライトデータを格納可能であるか否かを判定する（ステップＳ８０２）。第１のホストアダプタ４１は、ライトデータ領域にライトデータを格納可能でない場合には（ステップＳ８０２：Ｎｏ）、転送フレーム格納失敗として（ステップＳ８０１）、本処理ルーチンを終了する。
【０１１８】
第１のホストアダプタ４１は、ライトデータ領域にライトデータを格納可能できる場合には（ステップＳ８０２：Ｙｅｓ）、更新情報の修正、ポインタ情報の更新を実行する（ステップＳ８０３）。具体的には、第１のホストアダプタ４１は、受信した更新情報におけるグループ番号を第２の記憶装置４０におけるグループ番号に変更し、仮想転送ボリュームの論理アドレスは、ポインタ情報におけるライトデータ最新アドレスＡＤnに変更する。また、第１のホストアダプタ４１は、ポインタ情報における更新情報最新アドレスを現在の更新情報最新アドレスに更新情報の容量を加算した値に変更し、ライトデータ最新アドレスＡＤnを現在のライトデータ最新アドレスＡＤnにライトデータ容量を加算した値に変更する。
【０１１９】
第１のホストアダプタ４１は、ディスクアダプタ２５に対して、更新情報およびライトデータの書き込みを命令し（ステップＳ８０４）、本処理ルーチンを終了する。
【０１２０】
リストア処理について図２６を参照して説明する。図２６は本実施例において実行されるリストア処理の処理ルーチンを示すフローチャートである。
【０１２１】
第１のホストアダプタ４１は、対象となる転送グループのグループ状態が「正常」であるか否かを判定し（ステップＳ９００）、グループ状態が「正常」でない場合、例えば、障害を示す場合には（ステップＳ９００：Ｎｏ）、本処理ルーチンを終了する。
【０１２２】
第１のホストアダプタ４１は、対象となる転送グループのグループ状態が「正常」である場合には（ステップＳ９００：Ｙｅｓ）、仮想転送ボリュームの状態は「正常」であるか否かを判定する（ステップＳ９０１）。第１のホストアダプタ４１は、仮想転送ボリュームの状態が「正常」でない、例えば、異常を示す場合には（ステップＳ９０１：Ｎｏ）、グループ状態を「異常」として、本処理ルーチンを終了する。
【０１２３】
第１のホストアダプタ４１は、仮想転送ボリュームの状態が「正常」である場合には（ステップＳ９０１：Ｙｅｓ）、リストア対象の転送フレームが存在するか否かを判定する（ステップＳ９０２）。第１のホストアダプタ４１は、リストア対象の転送フレームが存在しない場合には（ステップＳ９０２：Ｎｏ）、ステップＳ９００に移行する。
【０１２４】
第１のホストアダプタ４１は、リストア対象の転送フレームが存在すると判定した場合には（ステップＳ９０２：Ｙｅｓ）、ディスクアダプタ２５を介して更新情報、ライトデータを読み取る（ステップＳ９０３）。第１のホストアダプタ４１は、ディスクアダプタ２５に対して第２の論理ボリュームのデータの更新を命令し（ステップＳ９０４）、転送フレームの記憶領域を開放して（ステップＳ９０５）、ステップＳ９００に移行する。すなわち、リストア処理は継続される。
【０１２５】
以上説明したように、本実施例に係る計算機システム１００によれば、第１および第２の記憶装置における転送グループ（転送ボリューム）の使用状況および第１の記憶装置２０と第２の記憶装置４０とを接続する記憶装置間回線５０の回線使用率を監視するので、転送ボリュームの飽和を第１および第２のコンソール５１、５２を介してユーザに対して事前に報知することができる。したがって、転送ボリュームの飽和に対する対策を施すことにより、転送フレームの転送の停止といった計算機システムにおける障害発生を回避することができる。
【０１２６】
また、本実施例に係る計算機システム１００では、転送ボリュームの使用状況、記憶装置間回線５０の回線使用率に応じて、転送ボリュームが飽和する前に、転送ボリュームに対して予約ボリュームを割り当てることができる。すなわち、転送ボリュームを複数の論理ボリュームから構成される可変容量の仮想転送ボリュームとすることができる。したがって、転送ボリュームの容量不足を抑制または防止することができる。この結果、転送ボリュームの容量不足に起因する転送フレームの転送の停止の防止または抑制が可能となり、計算機システムの停止、計算機システムに発生する障害を防止または抑制することがで
きる。
【０１２７】
さらに、上記実施例では、記憶装置間回線５０を介して第１および第２の記憶装置２０、４０巻における転送フレーム（複製データ）の転送が実行されるので、第１のホストコンピュータと第１の記憶装置２０間におけるデータの送受信に影響を与えることなく、データの複製処理を実行することができる。
【０１２８】
また、予約グループに属する予約ボリュームを複数の転送ボリュームに対して動的に割当し、または割当を解除することができるので、記憶装置における最小限のボリュームリソースにて効率的な転送フレームの転送を実現することができる。
・その他の実施例：
上記実施例では、第１のホストコンピュータ１０が仮想転送ボリュームの監視処理を実行しているが、第１の記憶装置２０によって実行されても良い。かかる場合には、第１のホストコンピュータ１０を仮想転送ボリュームの監視処理から解放することが可能となり、第１のホストコンピュータ１０に要求されるアプリケーション実行処理の効率を向上させることができる。
【０１２９】
上記実施例では、第１の記憶装置２０における予約ボリュームの割当・割当解除処理を中心に説明したが、第２の記憶装置４０においても同様にして転送グループに対する予約ボリュームの割当・割当解除処理が実行され得ることはいうまでもない。第２の記憶装置４０では、第１の記憶装置２０から転送された転送フレームは先ず、転送ボリュームに格納されるので、転送ボリュームが不足する場合には、転送フレームの転送が停止してしまう。したがって、かかる場合に容量が不足する転送ボリュームに対して予約ボリュームを割り当てることによって、転送フレームの転送の停止を抑制または防止することができる。
【０１３０】
また、第１の記憶装置に格納されるデータの複製が第２の記憶装置４０に転送されるので、第１の記憶装置で障害発生、データが消失した場合でも、第２の記憶装置４０の転送ボリュームに既に転送されているデータに対してリストア処理を行うことにより障害復旧を実現することができる。
【０１３１】
上記実施例では、第１のホストアダプタ２１によって予約ボリュームの割当・割当解除処理が実行されているが、この処理をディスクアダプタ２５が実行しても良い。
【０１３２】
上記実施例において、第１のコンソール５１は、図２７に示すように、第１の記憶装置１０における転送ボリューム（転送グループＴＧ）の使用率、使用率差分、記憶装置間回線使用率、予約ボリュームの割当状況を表示しても良い。この構成を備えることによって、ユーザ（管理者）は、計算機システムの動的な作動状態を知ることが可能となり、その結果を踏まえて、記憶システム（記憶装置）の管理（ＨＤＤの増設、回線の見直し）を容易に行うことができる。
【０１３３】
第２の記憶装置に加えて、第３、第４の記憶装置を備えても良い。かかる場合には、第２の記憶装置４０は、第１の記憶装置２０が備える転送フレームリード処理、転送フレーム作成処理、アクセス命令受信処理といった機能モジュールを備えればよい。
【０１３４】
上記実施例では、第１の記憶装置２０における予約ボリュームの割当、割当解除処理を中心に説明しているが、第２の記憶装置４０においても同様にして予約ボリュームの割当・割当解除処理が実行されることはいうまでもない。すなわち、第２のホストコンピュータ３０によって、第２の記憶装置４０における転送グループＴＧの使用率、回線使用率が監視され、使用率、回線使用率が所定値を超えると転送グループＴＧに対する予約ボリュームの割当が要求され、使用率、回線使用率が所定値を下回ると転送グループＴＧに対する予約ボリュームの割当解除が要求される。第２の記憶装置４０の第１のホストアダプタ４１は、これら予約ボリュームの割当要求および割当解除要求に応じて、転送グループＴＧに対する予約ボリュームの割当、割当解除を実行する。なお、第２の記憶装置４０によって転送グループＴＧの使用率、回線使用率が監視されても良い。
【０１３５】
さらに、第１のホストコンピュータから第１の記憶装置を介して第２の記憶装置に予約ボリュームの割当要求および割当解除要求を行ってもよい。この場合、第１の記憶装置は、第２の記憶装置に対する要求であるか否か判断し、第２の記憶装置に対する要求であると判断した場合、第２の記憶装置にその要求を送る。
【０１３６】
また、上記実施例で、S２０２で予約ボリュームを割り当てる場合、割当先の転送グループ内で使用されている転送ボリュームの物理構成（ＨＤＤなど）を考慮して、予約ボリュームを割り当ててもよい。
【０１３７】
メモリ１２は、図２８に示す予約ボリューム管理情報１２１Aを保持する。図２８の１２１Ａは、図１６の予約ボリューム管理情報に、論理ボリューム番号とHDD番号を追加したものである。論理ボリューム番号は、データ格納ボリューム、転送ボリューム、複製データ格納ボリュームや未割り当てボリュームを含む論理ボリュームそれぞれに付された識別子である。HDD番号は、その論理ボリュームがどのHDDで構成されているかを示す。
【０１３８】
第１のホストコンピュータ１０のＣＰＵ１１は、転送グループ３に対して、予約ボリュームを割り当てる場合、第１のホストコンピュータ１０のＣＰＵ１１は、図２８に示す予約ボリューム管理情報１２１Ａの帰属先グループ番号が３である予約ボリュームを抽出し、そのHDD番号を取得する。図２８では、転送グループ３に既に割り当てられている、予約ボリュームの予約ボリューム番号３で、ＨＤＤ番号である１、２である。そして、ＣＰＵ11は、帰属先ボリューム番号が、「Ｆｒｅｅ」である予約ボリュームのうち、転送グループに既に割り当てられている予約ボリュームのＨＤＤ番号と重複しないＨＤＤから構成される予約ボリュームを予約ボリューム管理情報１２１Ａから抽出する。
【０１３９】
ＣＰＵ１１は、抽出された予約ボリュームを転送グループ３に割り当てるよう割り当て要求を作成し、第１の記憶装置２０にその要求を送信する。したがって、転送グループに登録済みの予約ボリューム０００３はＨＤＤ１、２を使用しているため、同じHDDで構成される予約ボリューム０００４は競合するため割り当てず、予約ボリューム０００５はＨＤＤ番号が３であり、登録済みの予約ボリュームのＨＤＤ番号と異なる、予約ボリューム００５を指定し、割り当てる割当て要求を、CPU１１は、生成する。帰属先グループに属する複数の転送ボリューム間の物理構成を異なるものにすることで、ＨＤＤの並列動作が可能になり、転送ボリューム全体のＩＯ性能を向上させることができる。
【０１４０】
予約ボリュームの割当てに割当優先制御を追加してもよい。これは、予約グループ内の予約ボリュームの数を管理し、予約ボリュームの残数が指定した数よりも下回った場合、優先度の高い転送グループへの予約ボリュームの割当を優先する制御に移行する。上記の予約ボリュームの割当てに優先順位を設定し、優先制御を行うために、ホストコンピュータ１０のメモリ１２は、図２９のような転送グループの優先制御情報１２６を保持する。図２９は、転送グループの優先制御情報１２６は転送グループの番号、割当済み予約ボリューム数、優先順位で構成される。優先順位は、値が大きければ、予約ボリュームからの割り当てをより優先させることを示す。
【０１４１】
ＣＰＵ１１は、上記優先制御情報１２６を参照し、指定した転送グループのうち、優先順位の値が一番大きい転送グループに予約ボリュームを割り当てる割当要求を作成する。その次に、優先順位の値が２番目に大きい転送グループに予約ボリュームを割り当てる割当要求を作成し、予約ボリュームの未割り当てボリュームがなくなるまで、優先順位の値が大きい転送グループから順に予約ボリュームを割り当てても良い。また、ＣＰＵ１１は、指定された複数の転送グループの優先順位の値の割合に応じて、割り当てる予約ボリュームの数や容量を決定してもよい。
【０１４２】
また、ＣＰＵ１１は、上記優先制御情報１２６を参照し、転送グループの優先順位の値があらかじめ指定されている値より低い場合は、予約ボリュームを当該転送グループに対し割り当てない。優先順位の値が同じのものがある場合は割当予約ボリューム数が少ないものを優先して、予約ボリュームを割り当てるよう割当要求を作成してもよい。予約ボリュームの割当を優先する制御は、優先順位が特定の値よりも低い場合は割当を行わない等の処理がある。
【０１４３】
このように、予約グループに予約ボリュームが不足する場合を考慮した割当制御を行うことで、ホストコンピュータ上で動作する主業務アプリケーションプログラムへの影響を軽減することが可能になる。
【０１４４】
たとえば、主業務アプリケーションやミッションクリティカルに関する-データを格納するボリュームの優先順位の値が、大きい値で設定されることにより、記憶システムが、第２の記憶装置への転送を停止することを防止でき、障害発生した場合に、主業務アプリケーションやミッションクリティカルに関する-データの復旧を実現することができる。
【０１４５】
第２の記憶装置４０において、予約ボリュームの割当・割当解除処理が効果的に働く好適な例を図３０に示す。図３０は複数の第1の記憶装置２０が複数の第２の記憶装置４０と記憶装置間回線５０で接続される構成で、特に複数の第1の記憶装置２０Ａと２０Ｂが１の第２の記憶装置４０に記憶装置間回線５０Ａ、５０Ｂで接続される場合である。
【０１４６】
図１と同様に第１の記憶装置２０Ａには転送ボリュームＴ１１、データボリュームＤ１、Ｄ２、予約ボリュームＲ１１、Ｒ１２、転送グループＴＧ１３、予約グループＲＧ１３があり、第１の記憶装置２０Ｂには転送ボリュームＴ１２、データボリュームＤ３、予約ボリュームＲ１３、Ｒ１４、転送グループＴＧ１４、予約グループＲＧ１４があり、第２の記憶装置４０には転送データ格納ボリュームＴ２１、Ｔ２２があり、複製データ格納ボリュームＣ１、Ｃ２、Ｃ３、転送グループＴＧ２３、ＴＧ２４、予約グループＲＧ２３がある。
【０１４７】
図３０の構成で、たとえば記憶装置間回線５０Ａの回線速度が低下した場合を考える。この場合、転送グループＴＧ２４へのデータの転送量と、ＴＧ２３へのデータの転送量に差が生じる。結果、第２の記憶装置４０では、第１の記憶装置２０Ａから転送されるデータの受信が遅れる一方で、第１の記憶装置２０Ｂから転送されるデータの受信は通常通り実施されるため、転送データ格納ボリュームＴ２２には受信したデータが蓄積されていく。特に、ホストコンピュータ１０からの書き込み順序を第２の記憶装置４０で保証する場合、転送データ格納ボリュームＴ２２に蓄積されたデータを第１の記憶装置２０から転送されるデータの受信に依存することなく、複製データ格納ボリュームＣ３に格納することができないため、転送グループＴＧ２４にはデータが蓄積され続けることになり、予約ボリュームＲ２１、Ｒ２２を割り当てが必要になる。転送データ格納ボリュームＴ２２から複製データ格納ボリュームＣ３に格納することができない理由は、第１のホストコンピュータ１０が発行したデータの書き込み順序の関係が、Ｃ１、Ｃ２、Ｃ３のデータ間で崩れさせないためである。
【０１４８】
図３０の例とは異なる、第２の記憶装置４０において予約ボリュームの割当・割当解除処理が効果的に働く好適な例として、データボリュームをコピー対象に新たに追加する場合がある。図１において、データボリュームＤ４を転送グループＴＧ１１に、複製データ格納ボリュームＣ４をＴＧ２１に追加する場合を考える。この場合、初期コピーがデータボリュームＤ４と複製データ格納ボリュームＣ４間で実施されるため、第２記憶装置４０の転送データ格納ボリュームに大量のデータが第１の記憶装置２０から転送される。この場合、記憶装置４０は、転送グループ２２に予約ボリュームの追加し、初期コピーを実行し、する。また、初期コピー終了後は第１記憶装置２０からのデータ転送量が大幅に減ることが多いので、記憶装置４０は、割り当てた予約ボリュームの解除を行う。
【０１４９】
上記実施例では、予め予約グループとしてグループ分けされた予約ボリュームを用いて仮想転送ボリュームを形成しているが、予約ボリュームが不足する場合には、通常のボリュームを予約ボリュームに移行させても良い。かかる場合には、予約ボリュームが不足しても、転送ボリュームの不足を防止することができる。
【０１５０】
上記実施例では、予約ボリュームの割当・割当解除処理がソフトウェア的に、すなわちコンピュータプログラムの態様にて実行されているが、上記各処理（ステップ）を実行する論理回路を備えたハードウェア回路を用いて実行されてもよい。かかる場合には、ＣＰＵの負荷を軽減することができると共に、より高速に各処理を実現することができる。
【０１５１】
以上、実施例に基づき本発明に係る計算機システム、計算機システムの制御方法を説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれることはもちろんである。
【図面の簡単な説明】
【０１５２】
【図１】本実施例に係る計算機システムの概略構成を示す説明図である。
【図２】本実施例における第１のホストコンピュータの内部構成を示すブロック図である。
【図３】本実施例における第１の記憶装置の内部構成を示すブロック図である。
【図４】本実施例における第１の記憶装置を構成する第１ホストアダプタの内部構成を示すブロック図である。
【図５】共有メモリに格納されるボリューム情報の一例を示す説明図である。
【図６】共有メモリに格納されるペア情報の一例を示す説明図である。
【図７】共有メモリに格納されるグループ情報の一例を示す説明図である。
【図８】仮想転送ボリュームの構成を概念的に示す説明図である。
【図９】仮想転送ボリュームの更新情報領域に格納される更新情報の一例を示す説明図である。
【図１０】共有メモリに格納されるポインタ情報の一例を示す説明図である。
【図１１】仮想転送ボリュームにおける各アドレス位置を概念的に示す説明図である。
【図１２】本実施例において実行される仮想転送ボリュームの登録処理の処理ルーチンを示すフローチャートである。
【図１３】本実施例において用いられる仮想論理アドレス変換情報および論理ボリューム情報の一例を示す説明図である。
【図１４】本実施例においてホストコンピュータによって実行される転送グループ監視処理の処理ルーチンを示すフローチャートである。
【図１５】転送グループの使用率および使用率の差分を含む使用率情報の一例を示す説明図である。
【図１６】予約ボリュームの管理情報の一例を示す説明図である。
【図１７】回線使用率情報の一例を示す説明図である。
【図１８】本実施例における第１の記憶装置において実行されるアクセス命令受信処理における処理ルーチンを示すフローチャートである。
【図１９】転送グループに対する予約ボリュームの割当を模式的に示す説明図である。
【図２０】転送グループに割り当てられている予約ボリュームの割当解除を模式的に示す説明図である。
【図２１】本実施例において実行される制御命令受信処理の処理ルーチンを示すフローチャートである
【図２２】本実施例において実行される転送フレーム作成処理の処理ルーチンを示すフローチャートである。
【図２３】本実施例において実行される転送フレームリード処理の処理ルーチンを示すフローチャートである。
【図２４】本実施例において実行される転送フレームリード命令送信処理の処理ルーチンを示すフローチャートである。
【図２５】本実施例において実行される転送フレーム格納処理の処理ルーチンを示すフローチャートである。
【図２６】本実施例において実行されるリストア処理の処理ルーチンを示すフローチャートである。
【図２７】コンソールに表示される使用率、回線使用率の一例を示す説明図である。
【図２８】ボリュームの物理構成を意識した予約ボリューム管理情報
【図２９】転送グループの優先制御情報
【図３０】複数の第1の記憶装置が複数の第２の記憶装置と接続される構成で、特に複数の第1の記憶装置が１の第２の記憶装置に接続される場合を示す図である。
【符号の説明】
【０１５３】
１０…第１のホストコンピュータ、１２１…予約領域管理情報、１２１Ａ…ボリュームの物理構成を意識した予約ボリューム管理情報、１２２…グループ情報、１２３…ストレージ制御プログラム、１２４…転送領域監視モジュール、１２５…予約領域管理モジュール、１２６…転送グループの優先制御情報、２０、２０Ａ、２０Ｂ…第１の記憶装置、２１３…リードライト処理モジュール、２１４…予約領域割当解除実行モジュール、２１５…転送領域監視モジュール、２１６…予約領域管理モジュール、２４１…ボリューム情報、２４２…ペア情報、２４３…グループ情報、２４４…仮想論理アドレス変換テーブル、２４５…ポインタ情報、２５…ディスクアダプタ、２６…ハードディスクドライブ（ＨＤＤ）、３０…第２のホストコンピュータ、３２１…予約領域管理情報、３２２…グループ情報、３２３…ストレージ制御プログラム、３２４…転送領域監視モジュール、３２５…予約領域管理モジュール、４０…第２の記憶装置
４１３…リードライト処理モジュール、４１４…予約領域割当解除実行モジュール、４１５…転送領域監視モジュール、４１６…予約領域管理モジュール、４４１…ボリューム情報、４４２…ペア情報、４４３…グループ情報、４４４…仮想論理アドレス変換テーブル、４４５…ポインタ情報、４６…ハードディスクドライブ（ＨＤＤ）、１００…計算機システム、Ｄ１、Ｄ２、Ｄ３…データ格納ボリューム、Ｔ１１、Ｔ１２、Ｔ２１、Ｔ２２…転送ボリューム、Ｃ１、Ｃ２、Ｃ３…複製データ格納ボリューム、Ｒ１１、Ｒ１２、Ｒ１３、Ｒ１４、Ｒ２１、Ｒ２２…予約ボリューム、ＴＧ１１、ＴＧ１２、ＴＧ１３、ＴＧ１４、ＴＧ２１、ＴＧ２２、ＴＧ２４…転送グループ、ＲＧ１１、ＲＧ２１、ＲＧ１３、ＲＧ２４…予約グループ
【図１】
0004715286.tif 000003
【図２】
0004715286.tif 000004
【図３】
0004715286.tif 000005
【図４】
0004715286.tif 000006
【図５】
0004715286.tif 000007
【図６】
0004715286.tif 000008
【図７】
0004715286.tif 000009
【図８】
0004715286.tif 000010
【図９】
0004715286.tif 000011
【図１０】
0004715286.tif 000012
【図１１】
0004715286.tif 000013
【図１２】
0004715286.tif 000014
【図１３】
0004715286.tif 000015
【図１４】
0004715286.tif 000016
【図１５】
0004715286.tif 000017
【図１６】
0004715286.tif 000018
【図１７】
0004715286.tif 000019
【図１８】
0004715286.tif 000020
【図１９】
0004715286.tif 000021
【図２０】
0004715286.tif 000022
【図２１】
0004715286.tif 000023
【図２２】
0004715286.tif 000024
【図２３】
0004715286.tif 000025
【図２４】
0004715286.tif 000026
【図２５】
0004715286.tif 000027
【図２６】
0004715286.tif 000028
【図２７】
0004715286.tif 000029
【図２８】
0004715286.tif 000030
【図２９】
0004715286.tif 000031
【図３０】
0004715286.tif 000032