(57)【要約】【課題】ストレージ・コントローラと複製エンジンとの間で書き込みを分割する方法、システムおよびプログラムが提供される。【解決手段】ストレージ・コントローラ内で実行されているスプリッタが、プライマリ・ボリュームに対するアクセスを管理する。複製エンジンと通信するための初期化コマンドが受信される。１つのプライマリ・ボリュームの複製コマンドが受信され、そのプライマリ・ボリュームが、複製対象として標示される。複製対象として標示されているプライマリ・ボリュームのうちのターゲット・プライマリ・ボリュームにデータを書き込むための書き込み要求が受信される。書き込み要求内のデータがターゲット・プライマリ・ボリュームに書き込まれる。書き込み要求内のデータが複製エンジンへ送信される。このデータを複製エンジン・ボリュームに書き込むために、複製エンジンがターゲット・プライマリ・ボリュームに関連するコピー・サービス機能を実行する。【選択図】図１
2010537267.tif 000002
【特許請求の範囲】
【請求項１】
複数のプライマリ・ボリュームに対するアクセスを管理するストレージ・コントローラにおいて実行されているスプリッタによって実行される、データ複製方法であって、
複製エンジンと通信するための初期化コマンドを受信するステップと、
１つのプライマリ・ボリュームの複製コマンドを受信するステップと、
前記プライマリ・ボリュームを、複製対象として標示するステップと、
前記複製対象として標示されている前記プライマリ・ボリュームのうちのターゲット・プライマリ・ボリュームにデータを書き込むための書き込み要求を受信するステップと、
前記書き込み要求内の前記データを、前記ターゲット・プライマリ・ボリュームに書き込むステップと、
前記書き込み要求内の前記データを、前記複製エンジンへ送信するステップであって、前記複製エンジンは、前記データを複製エンジン・ボリュームに書き込むために、前記ターゲット・プライマリ・ボリュームに関連するコピー・サービス機能を実行する、前記ステップと、
を含む方法。
【請求項２】
種々のベンダからの異種のコピー機能をそれぞれ実装する複数の複製エンジンがあり、前記スプリッタは、種々の前記複製エンジンとの通信に同じセットのコマンドと、標準ストレージ通信プロトコルとを使用して、前記異種のコピー機能を呼び出すことができる、請求項１に記載の方法。
【請求項３】
前記複製エンジンとの通信における障害を検出するステップと、
前記検出された障害の後に生じる前記プライマリ・ボリュームに対する書き込みの標示を、記録変更データ構造内に記録するステップと、
前記複製エンジンから、前記記録変更データ構造の要求を受信するステップと、
変更されたデータについての情報を、前記記録変更データ構造内で前記複製エンジンへ送信するステップと、
前記記録変更データ構造を前記複製エンジンへ送信するステップに応答して、前記記録変更データ構造を消去するステップと、
をさらに含む、請求項１または２に記載の方法。
【請求項４】
前記記録変更データ構造内に標示されている前記プライマリ・ボリューム内の更新済みデータの要求を、前記複製エンジンから受信するステップと、
前記記録変更データ構造内に標示されている、前記要求された更新済みデータを、前記複製エンジンへ送信するステップと、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記複製エンジンから前記プライマリ・ボリュームにコピーする領域の標示を受信するステップと、
前記複製エンジンの、前記領域内に標示されているデータを要求するステップと、
前記領域内に標示されているデータを、複製エンジンから受信するステップと、
前記領域内に標示されている、前記受信されたデータを、前記プライマリ・ボリュームに書き込むステップと、
前記領域内の前記データが前記プライマリに書き込まれたことを、前記複製エンジンから受信された前記データを前記プライマリ・ボリュームに書き込むのに応答して標示するステップと、
をさらに含む、先行するいずれかの請求項に記載の方法。
【請求項６】
領域のリストを受信した後に、前記プライマリ・ボリューム内のデータに対する読み取り要求を受信するステップと、
前記読み取り要求されたデータが、前記リスト内に標示されているかどうかを判断するステップと、
前記読み取り要求されたデータが前記リスト内に標示されていると判断するのに応答して、前記読み取り要求を前記複製エンジンへリダイレクトするステップと、
前記読み取り要求されたデータは前記リスト内に標示されていないと判断するのに応答して、前記読み取り要求されたデータを前記プライマリ・ボリュームから返すステップと、
をさらに含む、請求項５に記載の方法。
【請求項７】
前記領域を受信した後に、前記プライマリ・ボリュームに対してデータを書き込むための書き込み要求を受信するステップと、
書き込むべき前記データが、前記領域内に標示されているかどうかを判断するステップと、
前記領域内の、前記書き込み要求からの前記データが、前記プライマリ・ボリュームに書き込まれたことを、前記プライマリ・ボリュームに前記データを書き込むのに応答して標示するステップと、
をさらに含む、請求項５に記載の方法。
【請求項８】
前記プライマリ・ボリュームから前記複製エンジンにコピーする領域の標示を受信するステップと、
前記標示された領域からのデータを前記複製エンジンへ送信するステップと、
前記領域内の前記データが前記複製エンジンへ送信されたことを、前記領域内に標示されている前記データを前記複製エンジンへ送信するのに応答して標示するステップと、
をさらに含む、先行するいずれかの請求項に記載の方法。
【請求項９】
複製エンジン・ボリュームに関連する仮想プライマリ・ボリュームを作成するためのコマンドを受信するステップと、
ホストがアクセス可能な仮想プライマリ・ボリュームを作成するステップと、
前記仮想プライマリ・ボリュームに宛てられた入出力（Ｉ／Ｏ）要求を受信するステップと、
前記仮想プライマリ・ボリュームに宛てられた前記Ｉ／Ｏ要求を、前記複製エンジンに宛てるステップと、
をさらに含む、先行するいずれかの請求項に記載の方法。
【請求項１０】
複数のプライマリ・ボリュームに対するアクセスを管理し、複製エンジンと通信しているシステムであって、
プライマリ・ボリューム・メタデータを有するコンピュータ可読媒体と、
複数の動作を生じさせことができるスプリッタと、
を含むシステムであって、前記動作は、
前記複製エンジンと通信するための初期化コマンドを受信することと、
１つのプライマリ・ボリュームの複製コマンドを受信することと、
前記プライマリ・ボリューム・メタデータにおいて、前記プライマリ・ボリュームが複製対象であることを標示することと、
前記複製対象として標示されている前記プライマリ・ボリュームのうちのターゲット・プライマリ・ボリュームにデータを書き込むための書き込み要求を受信することと、
前記書き込み要求内の前記データを、前記ターゲット・プライマリ・ボリュームに書き込むことと、
前記書き込み要求内の前記データを、前記複製エンジンへ送信することと、
を含み、
前記複製エンジンは、前記データを複製エンジン・ボリュームに書き込むために、前記ターゲット・プライマリ・ボリュームに関連するコピー・サービス機能を実行する、
システム。
【請求項１１】
種々のベンダからの異種のコピー機能をそれぞれ実装する複数の複製エンジンがあり、前記スプリッタは、種々の前記複製エンジンとの通信に同じセットのコマンドと、標準ストレージ通信プロトコルとを使用して、前記異種のコピー機能を呼び出すことができる、請求項１０に記載のシステム。
【請求項１２】
前記スプリッタはさらに、
前記複製エンジンとの通信における障害を検出することと、
前記検出された障害の後に生じる前記プライマリ・ボリュームに対する書き込みの標示を、記録変更データ構造内に記録することと、
前記複製エンジンから、前記記録変更データ構造の要求を受信することと、
変更されたデータについての情報を、前記記録変更データ構造内で前記複製エンジンへ送信することと、
前記記録変更データ構造を前記複製エンジンへ送信するのに応答して、前記記録変更データ構造を消去することと、
を含む動作を生じさせる、請求項１１に記載のシステム。
【請求項１３】
前記スプリッタはさらに、
前記複製エンジンから前記プライマリ・ボリュームにコピーする領域の標示を受信することと、
前記複製エンジンの、前記領域内に標示されているデータを要求することと、
前記領域内に標示されているデータを、複製エンジンから受信することと、
前記領域内に標示されている、前記受信されたデータを、前記プライマリ・ボリュームに書き込むことと、
前記領域内の前記データが前記プライマリに書き込まれたことを、前記複製エンジンから受信された前記データを前記プライマリ・ボリュームに書き込むのに応答して標示することと、
を含む動作を生じさせる、請求項１１に記載のシステム。
【請求項１４】
前記スプリッタはさらに、
領域のリストを受信した後に、前記プライマリ・ボリューム内のデータに対する読み取り要求を受信することと、
前記読み取り要求されたデータが、前記リスト内に標示されているかどうかを判断することと、
前記読み取り要求されたデータが前記リスト内に標示されていると判断するのに応答して、前記読み取り要求を前記複製エンジンへリダイレクトすることと、
前記読み取り要求されたデータは前記リスト内に標示されていないと判断するのに応答して、前記読み取り要求されたデータを前記プライマリ・ボリュームから返すことと、
を含む動作を生じさせる、請求項１１に記載のシステム。
【請求項１５】
コンピュータ・プログラム・コードを含むコンピュータ・プログラムであって、前記コンピュータ・プログラム・コードは、コンピュータ・システムにロードされ前記コンピュータ・システム上で実行されると、前記コンピュータ・システムに請求項１〜９のいずれか１項に記載の方法のステップすべてを実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ・コントローラと複製エンジン（ｒｅｐｌｉｃａｔｉｏｎ  ｅｎｇｉｎｅ）との間で書き込みを分割する方法、システムおよびプログラムに関する。
【背景技術】
【０００２】
現在のネットワーク・ストレージ・システムでは、ストレージ・コントローラ（ｓｔｏｒａｇｅ  ｃｏｎｔｒｏｌｌｅｒ）により管理されているボリュームに宛てられた書き込みを別のストレージ・デバイスに分割するスプリッタ（ｓｐｌｉｔｔｅｒ）を、ホストまたはスイッチに実装可能である。スプリッタは、データのコピーをストレージ・コントローラへ送信し、もう１つのコピーを、ストレージにデータをコピーするコピー・サービスを実装する複製エンジンへ送信する。複製エンジンは、別個のネットワーク・デバイスまたは機器を含むこともある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一実装では、スプリッタは、デバイス・ドライバまたは論理ボリューム・マネージャなどの、ホスト・ソフトウェア・スタックにおいて実装される。別の実装では、スプリッタは、スイッチにおいてなど、構造内に実装されることもある。ピア・ツー・ピア・コピー（「ＰＰＲＣ：Ｐｅｅｒ−ｔｏ−Ｐｅｅｒ−Ｃｏｐｙ」）の場合など、さらに別の実装では、スプリッタおよび複製機能はストレージ・コントローラ内に実装され、プライマリ・ストレージ・コントローラが、連続的にデータをリモートのセカンダリ・サイトにミラーリングまたは複製する。
【課題を解決するための手段】
【０００４】
第１の態様では、本発明は、プライマリ・ボリュームに対するアクセスを管理するストレージ・コントローラにおいて実行されているスプリッタによって実行される、データ複製方法を提供する。本方法は、複製エンジンと通信するための初期化コマンド（ｉｎｉｔｉａｌｉｚａｔｉｏｎ  ｃｏｍｍａｎｄ）を受信することと、１つのプライマリ・ボリュームの複製コマンドを受信することと、プライマリ・ボリュームを複製対象として標示する（ｉｎｄｉｃａｔｅ）ことと、複製対象として標示されているプライマリ・ボリュームのうちのターゲット・プライマリ・ボリュームにデータを書き込むための書き込み要求を受信することと、書き込み要求内のデータをターゲット・プライマリ・ボリュームに書き込むことと、書き込み要求内のデータを複製エンジンへ送信することとを含み、複製エンジンは、データを複製エンジン・ボリュームに書き込むために、ターゲット・プライマリ・ボリュームに関連するコピー・サービス機能を実行する。
【０００５】
複製エンジンおよびスプリッタは、伝送される標準ストレージ通信プロトコル（ｓｔａｎｄａｒｄ  ｓｔｏｒａｇｅ  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｐｒｏｔｏｃｏｌ）パッケージに複数のコマンドおよびデータをパッケージ化することによって通信することが好ましい。
【０００６】
種々のベンダからの異種のコピー機能をそれぞれ実装する複数の複製エンジンがあり、スプリッタは、種々の複製エンジンとの通信に同じセットのコマンドと、標準ストレージ通信プロトコルとを使用して、この異種のコピー機能を呼び出すことができることが好ましい。
【０００７】
本方法はさらに、プライマリ・ボリュームと、複製エンジン・ボリュームとの両方において書き込みが完了したという確認応答を受信するのに応答して、書き込み要求に対する完了を返すことをさらに含むとよい。
【０００８】
本方法はさらに、複製エンジンとの通信における障害を検出することと、検出された障害の後に生じるプライマリ・ボリュームに対する書き込みの標示（ｉｎｄｉｃａｔｉｏｎ）を記録変更データ構造（ｒｅｃｏｒｄ  ｃｈａｎｇｅ  ｄａｔａ  ｓｔｒｕｃｔｕｒｅ）内に記録することと、複製エンジンから、記録変更データ構造の要求を受信することと、変更されたデータについての情報を、記録変更データ構造内で複製エンジンへ送信することと、記録変更データ構造を複製エンジンへ送信するのに応答して、記録変更データ構造を消去することとを含むとよい。
【０００９】
本方法はさらに、記録変更データ構造内に標示されている、プライマリ・ボリューム内の更新済みデータの要求を、複製エンジンから受信することと、記録変更データ構造内に標示されている、要求された更新済みデータを、複製エンジンへ送信することとを含むとよい。
【００１０】
本方法はさらに、複製エンジンからプライマリ・ボリュームにコピーする領域の標示を受信することと、複製エンジンの、該領域内に標示されているデータを要求することと、該領域内に標示されているデータを複製エンジンから受信することと、該領域内に標示されている、受信されたデータを、プライマリ・ボリュームに書き込むことと、該領域内のデータがプライマリに書き込まれたことを、複製エンジンから受信されたデータをプライマリ・ボリュームに書き込むのに応答して標示することとを含むとよい。
【００１１】
本方法はさらに、領域のリストを受信した後に、プライマリ・ボリューム内のデータに対する読み取り要求を受信することと、読み取り要求されたデータが、リスト内に標示されているかどうかを判断することと、読み取り要求されたデータがリスト内に標示されていると判断するのに応答して、読み取り要求を複製エンジンへリダイレクトすることと、読み取り要求されたデータはリスト内に標示されていないと判断するのに応答して、読み取り要求されたデータをプライマリ・ボリュームから返すこととを含むとよい。
【００１２】
本方法はさらに、領域を受信した後に、プライマリ・ボリュームにデータを書き込むための書き込み要求を受信することと、書き込むべきデータが、該領域内に標示されているかどうかを判断することと、該領域内の、書き込み要求からのデータが、プライマリ・ボリュームに書き込まれたことを、プライマリ・ボリュームにデータを書き込むのに応答して標示することとを含むとよい。
【００１３】
本方法はさらに、プライマリ・ボリュームから複製エンジンにコピーする領域の標示を受信することと、標示された領域からのデータを複製エンジンへ送信することと、該領域内のデータが複製エンジンへ送信されたことを、該領域内に標示されているデータを複製エンジンへ送信するのに応答して標示することとを含む。
【００１４】
本方法はさらに、複製エンジン・ボリュームに関連する仮想プライマリ・ボリュームを作成するためのコマンドを受信することと、ホストがアクセス可能な仮想プライマリ・ボリュームを作成することと、仮想プライマリ・ボリュームに宛てられた入出力（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求を受信することと、仮想プライマリ・ボリュームに宛てられたＩ／Ｏ要求を、複製エンジンに宛てることとを含むとよい。
【００１５】
複製エンジンは、ターゲット・プライマリ・ボリュームに関連するさらなる機能を実行することが好ましい。
【００１６】
第２の態様では、プライマリ・ボリュームに対するアクセスを管理し、複製エンジンと通信しているシステムが提供される。このシステムは、プライマリ・ボリューム・メタデータを有するコンピュータ可読媒体と、複数の動作を生じさせることができるスプリッタとを含む。この動作は、複製エンジンと通信するための初期化コマンドを受信することと、１つのプライマリ・ボリュームの複製コマンドを受信することと、プライマリ・ボリューム・メタデータにおいて、プライマリ・ボリュームが複製対象であることを標示することと、複製対象として標示されているプライマリ・ボリュームのうちのターゲット・プライマリ・ボリュームにデータを書き込むための書き込み要求を受信することと、書き込み要求内のデータをターゲット・プライマリ・ボリュームに書き込むことと、書き込み要求内のデータを複製エンジンへ送信することとを含み、複製エンジンは、複製エンジン・ボリュームにデータを書き込むために、ターゲット・プライマリ・ボリュームに関連するコピー・サービス機能を実行する。
【００１７】
種々のベンダからの異種のコピー機能をそれぞれ実装する複数の複製エンジンがあり、スプリッタは、種々の複製エンジンとの通信に同じセットのコマンドと、標準ストレージ通信プロトコルとを使用して、この異種のコピー機能を呼び出すことができることが好ましい。
【００１８】
このスプリッタはさらに、複製エンジンとの通信における障害を検出することと、検出された障害の後に生じるプライマリ・ボリュームに対する書き込みの標示を記録変更データ構造内に記録することと、複製エンジンから、記録変更データ構造の要求を受信することと、変更されたデータについての情報を、記録変更データ構造内で複製エンジンへ送信することと、記録変更データ構造を複製エンジンへ送信するのに応答して、記録変更データ構造を消去することとを含む動作を生じさせることが好ましい。
【００１９】
このスプリッタはさらに、複製エンジンからプライマリ・ボリュームにコピーする領域の標示を受信することと、複製エンジンの、該領域内に標示されているデータを要求することと、該領域内に標示されているデータを複製エンジンから受信することと、該領域内に標示されている、受信されたデータを、プライマリ・ボリュームに書き込むことと、複製エンジンから受信されたデータをプライマリ・ボリュームに書き込むのに応答して、該領域内のデータがプライマリに書き込まれたことを標示することとを含む動作を生じさせることが好ましい。
【００２０】
このスプリッタはさらに、領域のリストを受信した後に、プライマリ・ボリューム内のデータに対する読み取り要求を受信することと、読み取り要求されたデータが、リスト内に標示されているかどうかを判断することと、読み取り要求されたデータがリスト内に標示されていると判断するのに応答して、読み取り要求を複製エンジンへリダイレクトすることと、読み取り要求されたデータはリスト内に標示されていないと判断するのに応答して、読み取り要求されたデータをプライマリ・ボリュームから返すこととを含む動作を生じさせることが好ましい。
【００２１】
このスプリッタはさらに、複製エンジン・ボリュームに関連する仮想プライマリ・ボリュームを作成するためのコマンドを受信することと、ホストがアクセス可能な仮想プライマリ・ボリュームを作成することと、仮想プライマリ・ボリュームに宛てられた入出力（Ｉ／Ｏ）要求を受信することと、仮想プライマリ・ボリュームに宛てられたＩ／Ｏ要求を、複製エンジンに宛てることとを含む動作を生じさせることが好ましい。
【００２２】
第３の態様では、コンピュータ・プログラム・コードを含むコンピュータ・プログラムが提供される。このコンピュータ・プログラム・コードは、コンピュータ・システムにロードされコンピュータ・システム上で実行されると、コンピュータ・システムに第１の態様による方法のステップすべてを実行させる。
【００２３】
第３の態様のコンピュータ・プログラムは、コードを含んでいるプログラムに具現化されてもよい。このコードは、複製エンジンと通信し、プライマリ・ボリュームに対するアクセスを管理し、複数の動作を実行させるためのものである。この動作は、複製エンジンと通信するための初期化コマンドを受信することと、１つのプライマリ・ボリュームの複製コマンドを受信することと、このプライマリ・ボリュームを複製対象として標示することと、複製対象として標示されているプライマリ・ボリュームのうちのターゲット・プライマリ・ボリュームにデータを書き込むための書き込み要求を受信することと、書き込み要求内のデータをターゲット・プライマリ・ボリュームに書き込むことと、書き込み要求内のデータを複製エンジンへ送信することとを含み、複製エンジンは、データを複製エンジン・ボリュームに書き込むために、ターゲット・プライマリ・ボリュームに関連するコピー・サービス機能を実行する。
【００２４】
複製エンジンおよびスプリッタは、伝送される標準ストレージ通信プロトコル・パッケージに複数のコマンドおよびデータをパッケージ化することによって通信することが好ましい。
【００２５】
種々のベンダからの異種のコピー機能をそれぞれ実装する複数の複製エンジンがあり、スプリッタは、種々の複製エンジンとの通信に同じセットのコマンドと、標準ストレージ通信プロトコルとを使用して、この異種のコピー機能を呼び出すことができることが好ましい。
【００２６】
動作はさらに、プライマリ・ボリュームと、複製エンジン・ボリュームとの両方において書き込みが完了したという確認応答を受信するのに応答して、書き込み要求に対する完了を返すことを含むことが好ましい。
【００２７】
動作はさらに、複製エンジンとの通信における障害を検出することと、検出された障害の後に生じるプライマリ・ボリュームに対する書き込みの標示を記録変更データ構造内に記録することと、複製エンジンから、記録変更データ構造の要求を受信することと、変更されたデータについての情報を、記録変更データ構造内で複製エンジンへ送信することと、記録変更データ構造を複製エンジンへ送信するのに応答して、記録変更データ構造を消去することとを含むことが好ましい。
【００２８】
動作はさらに、記録変更データ構造内に標示されている、プライマリ・ボリューム内の更新済みデータの要求を、複製エンジンから受信することと、記録変更データ構造内に標示されている、要求された更新済みデータを、複製エンジンへ送信することとを含むことが好ましい。
【００２９】
動作はさらに、複製エンジンからプライマリ・ボリュームにコピーする領域の標示を受信することと、複製エンジンの、該領域内に標示されているデータを要求することと、該領域内に標示されているデータを、複製エンジンから受信することと、該領域内に標示されている、受信されたデータを、プライマリ・ボリュームに書き込むことと、該領域内のデータがプライマリに書き込まれたことを、複製エンジンから受信されたデータをプライマリ・ボリュームに書き込むのに応答して標示することとを含むことが好ましい。
【００３０】
動作はさらに、領域のリストを受信した後に、プライマリ・ボリューム内のデータに対する読み取り要求を受信することと、読み取り要求されたデータが、リスト内に標示されているかどうかを判断することと、読み取り要求されたデータがリスト内に標示されていると判断するのに応答して、読み取り要求を複製エンジンへリダイレクトすることと、読み取り要求されたデータはリスト内に標示されていないと判断するのに応答して、読み取り要求されたデータをプライマリ・ボリュームから返すこととを含むことが好ましい。
【００３１】
動作はさらに、領域を受信した後に、プライマリ・ボリュームにデータを書き込むための書き込み要求を受信することと、書き込むべきデータが、該領域内に標示されているかどうかを判断することと、該領域内の、書き込み要求からのデータが、プライマリ・ボリュームに書き込まれたことを、プライマリ・ボリュームにデータを書き込むのに応答して標示することとを含むことが好ましい。
【００３２】
動作はさらに、プライマリ・ボリュームから複製エンジンにコピーする領域の標示を受信することと、標示された領域からのデータを複製エンジンへ送信することと、該領域内のデータが複製エンジンへ送信されたことを、該領域内に標示されているデータを複製エンジンへ送信するのに応答して標示することとを含むことが好ましい。
【００３３】
動作はさらに、複製エンジン・ボリュームに関連する仮想プライマリ・ボリュームを作成するコマンドを受信することと、ホストがアクセス可能な仮想プライマリ・ボリュームを作成することと、仮想プライマリ・ボリュームに宛てられた入出力（Ｉ／Ｏ）要求を受信することと、仮想プライマリ・ボリュームに宛てられたＩ／Ｏ要求を、複製エンジンに宛てることとを含むことが好ましい。
【００３４】
複製エンジンは、ターゲット・プライマリ・ボリュームに関連するさらなる機能を実行することが好ましい。
【００３５】
このように、ストレージ・コントローラと複製エンジンとの間で書き込みを分割する方法、システムおよびコンピュータ・プログラムが提供される。ストレージ・コントローラ内で実行されているスプリッタが、複数のプライマリ・ボリュームに対するアクセスを管理する。複製エンジンと通信するための初期化コマンドが受信される。１つのプライマリ・ボリュームの複製コマンドが受信され、そのプライマリ・ボリュームが、複製対象として標示される。複製対象として標示されているプライマリ・ボリュームのうちのターゲット・プライマリ・ボリュームにデータを書き込むための書き込み要求が受信される。書き込み要求内のデータがターゲット・プライマリ・ボリュームに書き込まれる。書き込み要求内のデータが複製エンジンへ送信される。このデータを複製エンジン・ボリュームに書き込むために、複製エンジンがターゲット・プライマリ・ボリュームに関連するコピー・サービス機能を実行する。
【００３６】
さらなる実施形態では、複製エンジンおよびスプリッタは、伝送される標準ストレージ通信プロトコル・パッケージに複数のコマンドおよびデータをパッケージ化することによって通信する。
【００３７】
さらなる実施形態では、種々のベンダからの異種のコピー機能をそれぞれ実装する複数の複製エンジンがある。スプリッタは、種々の複製エンジンとの通信に同じセットのコマンドと、標準ストレージ通信プロトコルとを使用して、この異種のコピー機能を呼び出すことができる。
【００３８】
さらなる実施形態では、プライマリ・ボリュームと、複製エンジン・ボリュームとの両方において書き込みが完了したという確認応答を受信するのに応答して、書き込み要求に対する完了が返される。
【００３９】
さらなる実施形態では、複製エンジンとの通信における障害が検出される。検出された障害の後に生じるプライマリ・ボリュームに対する書き込みの標示が、記録変更データ構造内に記録される。記録変更データ構造の要求が複製エンジンから受信される。変更されたデータについての情報が、記録変更データ構造内で複製エンジンへ送信される。記録変更データ構造は、記録変更データ構造を複製エンジンへ送信するのに応答して消去される。
【００４０】
さらなる実施形態では、記録変更データ構造内に標示されている、プライマリ・ボリューム内の更新済みデータの要求が、複製エンジンから受信される。記録変更データ構造内に標示されている、要求された更新済みデータが、複製エンジンへ送信される。
【００４１】
さらなる実施形態では、複製エンジンからプライマリ・ボリュームにコピーする領域の標示が受信される。複製エンジンの、該領域内に標示されているデータが要求される。その領域内に標示されている複製エンジンからのデータが受信され、該領域内に標示されている受信されたデータが、プライマリ・ボリュームに書き込まれる。複製エンジンから受信されたデータをプライマリ・ボリュームに書き込むのに応答して、該領域内のデータがプライマリに書き込まれたことが標示される。
【００４２】
さらなる実施形態では、プライマリ・ボリューム内のデータに対する読み取り要求が、複数領域のリストを受信した後に受信される。読み取り要求されたデータがリスト内に標示されているかどうかについて判断される。読み取り要求されたデータがリスト内に標示されていると判断するのに応答して、読み取り要求は複製エンジンにリダイレクトされる。読み取り要求されたデータはリスト内に標示されていないと判断するのに応答して、読み取り要求されたデータはプライマリ・ボリュームから返される。
【００４３】
さらなる実施形態では、プライマリ・ボリュームにデータを書き込むための書き込み要求が、領域を受信した後に受信される。書き込むべきデータが、該領域内に標示されているかどうかについて判断される。該領域内の、書き込み要求からのデータが、プライマリ・ボリュームに書き込まれたことが、データをプライマリ・ボリュームに書き込むのに応答して標示される。
【００４４】
さらなる実施形態では、プライマリ・ボリュームから複製エンジンにコピーする領域の標示が受信される。標示された領域から複製エンジンへデータが送信され、該領域内のデータが複製エンジンへ送信されたことが、該領域内に標示されているデータを複製エンジンへ送信するのに応答して標示される。
【００４５】
さらなる実施形態では、複製エンジン・ボリュームに関連する仮想プライマリ・ボリュームを作成するためのコマンドが受信される。ホストがアクセス可能な仮想プライマリ・ボリュームが作成される。仮想プライマリ・ボリュームに宛てられた入出力（Ｉ／Ｏ）要求が受信され、そのＩ／Ｏ要求が、複製エンジンへリダイレクトされる。
【００４６】
さらなる実施形態では、複製エンジンは、ターゲット・プライマリ・ボリュームに関連するさらなる機能を実行する。
【００４７】
以下、本発明の好適な実施形態を、単なる一例として添付の図面を参照して説明する。
【図面の簡単な説明】
【００４８】
【図１】ネットワーク・コンピューティング環境の実施形態である。
【図２】スプリッタにより保持されるプライマリ・ボリューム・メタデータの実施形態である。
【図３】複製エンジンにより保持されるプライマリ・ボリューム・メタデータの実施形態である。
【図４】通信プロトコルにおいて複製コマンドがどのようにパッケージ化されるかの実施形態である。
【図５】スプリッタと複製エンジンとの間の通信を開始する動作の実施形態である。
【図６】書き込みを複製エンジンに分割するようスプリッタを設定する動作の実施形態である。
【図７】プライマリ・ボリュームに対する書き込み要求を、複製エンジンに分割するよう処理する動作の実施形態である。
【図８】スプリッタと複製エンジンとの間の通信障害に対処する動作の実施形態である。
【図９】データを複製エンジン・ボリュームからプライマリ・ボリュームにコピーする動作の実施形態である。
【図１０】複製エンジン・ボリュームからのデータで更新されるべき、プライマリ・ボリュームの領域に対する読み取り要求を処理する動作の実施形態である。
【図１１】複製エンジン・ボリュームからのデータで更新されるべき、プライマリ・ボリュームの領域に対する書き込み要求を処理する動作の実施形態である。
【図１２】複製エンジン・ボリュームに関連する仮想プライマリ・ボリュームを作成する動作の実施形態である。
【図１３】複数の実施形態の、記載されている特定の態様が実装されるコンピュータ・アーキテクチャのブロック図である。
【発明を実施するための形態】
【００４９】
図１は、ネットワーク・コンピューティング環境の実施形態を示す。１つ以上のホスト２が、１つ以上のプライマリ・ストレージ６内のプライマリ・ボリューム４の読み取り／書き込み要求を送信する。１つ以上のストレージ・コントローラ８が、プライマリ・ボリューム４に対するホスト２からの入出力（Ｉ／Ｏ）アクセスを管理する。ストレージ・コントローラ８は、プライマリ・ボリューム４に対する書き込みデータを、複製デバイス１４に実装された１つ以上の複製エンジン１２にコピーする、スプリッタ・プログラム１０を含むとよい。各複製エンジン１２は、コピー・サービス１６を呼び出し、スプリッタ１０から受信されるデータを、ストレージ２０内で複製エンジン１２によって保持されている複製エンジン・ボリューム１８にコピーするとよい。さらなる複数の実施形態では、複製エンジン１２は、ログを作成してそのログに書き込みデータを記録することなどによって、コピーを必要としない形でコピー・サービス機能を実装してもよい。
【００５０】
ホスト２、ストレージ・コントローラ８、および複製デバイス１４は、ネットワーク２２を介して通信するとよい。ネットワーク２２は、ストレージ・エリア・ネットワーク（ＳＡＮ：Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ローカル・エリア・ネットワーク（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、イントラネット、インターネット、広域ネットワーク（ＷＡＮ：Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ピア・ツー・ピア・ネットワーク、無線ネットワーク、アービトレート型ループ・ネットワークなどを含めばよい。ストレージ６および２０は、ハード・ディスク・ドライブ、フラッシュ・メモリなどの単一のストレージ・デバイスを含んでもよく、または、単純ディスク束（ＪＢＯＤ：Ｊｕｓｔ  ａ  Ｂｕｎｃｈ  ｏｆ  Ｄｉｓｋｓ）、ネットワーク・アタッチト・ストレージ（ＮＡＳ：Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ハード・ディスク・ドライブ、直接アクセス・ストレージ・デバイス（ＤＡＳＤ：Ｄｉｒｅｃｔ  Ａｃｃｅｓｓ  Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅ）、独立ディスク冗長アレイ（ＲＡＩＤ：Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）アレイ、仮想化デバイス、テープ・ストレージ、フラッシュ・メモリなどの一連のストレージ・デバイスを含んでもよい。
【００５１】
図１の実施形態では、複製エンジン１２が、ストレージ・コントローラ８とは別のデバイスにおいて実装されるように示されている。別の実施形態では、複製エンジン１２は、ストレージ・コントローラ８と同じシステム内に実装されてもよい。例えば、複製デバイス１４およびストレージ・コントローラ８は、同じボックスまたはシステム内の別々の論理パーティション（ＬＰＡＲ：Ｌｏｇｉｃａｌ  Ｐａｒｔｉｔｉｏｎｓ）を含んでもよい。あるいは、複製エンジン１４およびストレージ・コントローラ８は、同じマザーボードの別々のスロットに挿入される拡張カードを含んでもよい。そのような実装では、複製デバイス１４およびストレージ・コントローラ８は、例えば周辺コンポーネント相互接続（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）プロトコルおよびアーキテクチャなどのバス通信プロトコルなど、ネットワーク・プロトコル以外の標準プロトコルを使用して通信するとよい。
【００５２】
図２は、ストレージ・コントローラ８が１つのプライマリ・ボリュームに対して保持するプライマリ・ボリューム・メタデータ２６の実施形態を示す。プライマリ・ボリューム・メタデータ２６は、プライマリ・ボリューム５２を標示する情報と、特定されている複製エンジン５６にプライマリ・ボリューム５２が複製されるべきかどうかを標示する複製フラグ（ｒｅｐｌｉｃａｔｉｏｎ  ｆｌａｇ）５４と、ストレージ・コントローラ８と複製デバイス１４との間の通信が無効化されている間の、複製されるプライマリ・ボリュームに対する変更を記録するのに使用される記録変更データ構造（ｒｅｃｏｒｄ  ｃｈａｎｇｅ  ｄａｔａ  ｓｔｒｕｃｔｕｒｅ）５８と、複製エンジン１２からのデータで更新されるべき、プライマリ・ボリューム５２内の領域を特定するリバート・データ構造（ｒｅｖｅｒｔ  ｄａｔａ  ｓｔｒｕｃｔｕｒｅ）６０と、プライマリ・ボリューム５２が、そのデータを関連の複製エンジン・ボリューム１８内に保持される、プライマリ・ストレージ６内の仮想ボリュームであるかどうかを標示する仮想モード情報６２とを含むとよい。仮想プライマリ・ボリュームは、複製エンジン・ボリューム１８を、ストレージ・コントローラ８によって管理されているプライマリ・ボリュームとしてホスト２に公開するように作成される。
【００５３】
図３は、複製エンジン１２が１つのプライマリ・ボリューム４に関して保持するプライマリ・ボリューム・メタデータ２８の実施形態を示す。プライマリ・ボリューム・メタデータ２８は、１つのプライマリ・ボリューム４を特定するプライマリ・ボリューム７２情報と、対応するプライマリ・ボリューム７２のデータの格納に使用される複製エンジン・ボリューム７４と、プライマリ・ボリューム７２のデータを複製エンジン・ボリューム７４に格納するために複製エンジンが呼び出すコピー・サービス７６と、プライマリ・ボリューム７２がプライマリ・ストレージ６内の仮想ボリュームであるかどうかを標示する仮想モード７８情報とを含む。
【００５４】
図４は、ストレージ・コントローラ８と、１つの複製エンジン１２との間でどのようにコマンドが伝達されるかの実施形態を示す。スプリッタ１０および複製エンジン１２は、ファイバー・チャネル、Ｅｔｈｅｒｎｅｔ（Ｒ）、シリアル接続ＳＣＳＩ（ＳＡＳ：Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）などの、標準ネットワーク通信プロトコルに従ったネットワーク・プロトコル・ヘッダ９２を有する標準ネットワーク通信パッケージ９０を構成させるとよい。標準ストレージ通信パッケージ９４は、小型コンピュータ・システム・インターフェース（ＳＣＳＩ：Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）などの標準ストレージ通信プロトコルを使用するストレージ・プロトコル・ヘッダ９６と共にネットワーク通信パッケージ９０内にカプセル化されるとよい。複製コマンド／メッセージ９８が、複製に関係した動作、メッセージ、および通信、さらに任意選択でデータ１００を実装するよう標準ストレージ通信パッケージ９４に含まれるとよい。
【００５５】
一実施形態では、異種であり、かつ恐らくは互換性のないプログラムを含む、種々のベンダからのスプリッタ１０および複製エンジン１２が、同じセットの複製コマンドを実装して、種々のベンダからの異種のスプリッタと複製エンジンとの間の通信および複製動作を可能にするとよい。このように、スプリッタまたは複製エンジンのベンダは、そのプログラムに複製コマンド・セットを組み込み、同じくこのコマンド・セットを実装する種々のベンダからの異種のスプリッタおよび複製エンジンとの通信を可能にするとよい。さらに、種々の複製エンジン１２が、種々のベンダとは異なるコピー・サービス１６を実装して、異種のスプリッタ１２が、種々のベンダからの異種のコピー・サービス１６を、そのコピー・サービス１６をサポートする複製エンジン１２を通じて呼び出すことができるようにしてもよい。
【００５６】
図５は、通信を初期化するためにスプリッタ１０および複製エンジン１２によって実行される動作の実施形態を示す。スプリッタ１０は、複製エンジン１２との通信を開始するためのコマンド９８を（ブロック１２０で）受信するが、このコマンド９８は、パッケージ９０および９４（図４）に含まれているとよい。スプリッタ１０は、ストレージ・コントローラ８のユーザ・インターフェースまたはコマンド・ラインを介してこのコマンドを受信してもよい。それに応答して、スプリッタ１０は標準ストレージ通信パッケージ９４を（ブロック１２２で）生成して送信する。この標準ストレージ通信パッケージ９４は、複製コマンド９８および複製エンジン１２との通信を開始するためのメッセージと共にネットワーク通信パッケージ９０内にカプセル化されるとよい。複製エンジン１２は、スプリッタ１０との通信を開始するための複製通信を（ブロック１２４で）受信すると、さらなるメッセージ９８をスプリッタ１０へ（ブロック１２６で）送信することによって、スプリッタ１０との通信を確立するための動作を実行する。
【００５７】
図６は、プライマリ・ボリューム４を複製関係に入れるためにスプリッタ１０および複製エンジン１２によって実行される動作の実施形態を示す。一実施形態では、ユーザが複製デバイス１４のユーザ・インターフェースで、特定のプライマリ・ボリューム４を複製するために複製エンジン１２を呼び出し、複製コマンド９８を（ブロック１５０で）生成してスプリッタ１０へ送信する。スプリッタ１０は、複製コマンド９８を（ブロック１５２で）受信すると、この特定のプライマリ・ボリューム５２に関して複製フラグ５４を（ブロック１５４で）設定し、プライマリ・ボリューム５２のデータを特定された複製エンジン５６へ分割することを標示する。この特定された複製エンジン５６は、複製コマンドを送信した複製エンジン１２、または別の特定の複製エンジンを含めばよい。
【００５８】
図７は、プライマリ・ボリューム４に対する書き込み要求を処理するためにスプリッタ１０および複製エンジン１２によって実行される動作の実施形態を示す。プライマリ・ボリューム４に対する書き込み要求をホスト２から（ブロック１７０で）受信すると、スプリッタ１０が、ターゲット・プライマリ・ボリューム５２の複製フラグ５４（図２）が複製を標示しているかどうかを（ブロック１７２で）判断する。複製が設定されていれば、スプリッタ１０は、ストレージ通信プロトコル・パッケージ９４を（ブロック１７４で）生成および送信するが、これは、標準ネットワーク通信パッケージ９０にさらに含まれるとよい。このストレージ通信プロトコル・パッケージ９４は、複製エンジン１２に対するコピー複製コマンド９８および書き込みデータ１００を含んでおり、この複製エンジン１２は、このターゲット・プライマリ・ボリューム用に特定されている複製エンジン５６を含むとよい。ブロック１７２のいいえの分岐またはブロック１７４の後、スプリッタ１０はデータをプライマリ・ボリューム４に（ブロック１７６で）書き込む。
【００５９】
複製エンジン１２が、複製するべきデータ１００と共にコピー複製コマンド９８をスプリッタ１０から（ブロック１７８で）受信すると、複製エンジン１２は、受信されたデータのコピーに使用するコピー・サービス１６機能を（ブロック１８０で）判断する。一実施形態では、コピー・サービス１６は、複製エンジン１２がプライマリ・ボリューム用に保持するプライマリ・ボリューム・メタデータ２８から判断されてもよく、またはスプリッタ１０から送信される複製コマンド内で標示されてもよい。複製エンジン１２は、受信データを対応する複製エンジン・ボリューム１８へ転送するために、判断されたコピー・サービス１６機能を（ブロック１８２で）実行するとよい。この対応する複製エンジン・ボリューム１８は、複製エンジン１２によって保持されるプライマリ・ボリューム・メタデータ２８（図３）のフィールド７４で標示されるとよい。コピーを完了すると、複製エンジン１２は、１つの複製コマンド９８を含む、データの書き込みが完了したというメッセージを、スプリッタ１０へ（ブロック１８４で）送信する。スプリッタ１０は、転送したデータに関する完了を複製エンジン１２から（ブロック１８６で）受信すると、データの書き込みが完了したというメッセージを、書き込み要求の開始元のホスト２へ（ブロック１８８で）送信する。
【００６０】
図８は、スプリッタ１０および複製エンジン１２によって、ネットワーク２２の障害など、スプリッタ１０と複製エンジン１２との間の通信障害に対処するために実行される動作の実施形態を示す。スプリッタ１０は、複製エンジン１２との通信能力の障害を（ブロック２００で）検出すると、検出された障害の後の、複製対象のプライマリ・ボリューム４に対する変更を記録するよう、設定される複製フラグ５４によって示される複製関係にある各プライマリ・ボリュームの記録変更データ構造５８を（ブロック２０２で）生成する。さらなる実施形態では、スプリッタ１０は、複数ボリュームのセットに関してグローバル・データ構造を保持するとよい。複製エンジン１２は、通信障害の後にスプリッタ１０との通信を（ブロック２０４で）再確立すると、記録変更データ構造５８からの情報（記録変更データ構造５８のコピーまたはデータ構造５８から抽出された情報を含むとよい）を要求する複製コマンド９８を（ブロック２０６で）生成して標準ストレージ通信プロトコル・パッケージ９４内でスプリッタ１０へ送信する。スプリッタ１０は、記録変更データ構造５８の複製コマンド要求を（ブロック２０８で）受信するのに応答して、記録変更データ構造５８からの情報を、要求している複製エンジン１２へ、標準ストレージ通信プロトコル９４を使用して（ブロック２１０で）送信する。送信された情報は、通信障害の間に更新されていた、複製対象のプライマリ・ボリュームの領域を標示するとよい。複製エンジン１２に記録変更データ構造５８についての情報を送信すると、スプリッタ１０はさらに、記録変更データ構造５８を（ブロック２１２で）消去するとよい。複製エンジン１２が記録変更データ構造５８からの情報を（ブロック２１６で）受信すると、複製エンジン１２は、通信障害の間にプライマリ・ボリューム４において更新されたデータを要求するコマンドの１つ以上のパッケージ９４をスプリッタ１０に（ブロック２１８で）送信する。
【００６１】
スプリッタ１０は、記録変更データ構造５８内でデータを特定されたプライマリ・ボリューム４内のデータを要求する複製コマンド９８を複製エンジン１２から（ブロック２２０で）受信するのに応答して、標準ストレージ通信プロトコル・パッケージ９４内の１つ以上のメッセージにおいて、要求されたデータを複製エンジン１２へ（ブロック２２２で）転送する。複製エンジン１２は、要求したデータをスプリッタ１０から（ブロック２２４で）受信すると、受信データを対応する複製エンジン・ボリューム１８へ転送するために、スプリッタ１０のコピー・サービス７６機能を（ブロック２２６で）呼び出す。プライマリ・ボリューム４に対応する複製エンジン・ボリューム１８は、複製エンジン１２によって保持されるプライマリ・ボリューム・メタデータ２８内のフィールド７２および７４から判断されるとよい。さらなる実施形態では、他の領域の再同期が実行されるとき、複製エンジン１２は、リカバリ手順に必要な特定の機能を実行するとよい。
【００６２】
図９は、複製エンジン・ボリューム１８からプライマリ・ボリューム４に複数の領域をコピーするためにスプリッタ１０および複製エンジン１２によって実行される動作の実施形態を示す。複製エンジン１２は、標準ストレージ・プロトコル・パッケージ９４内で、プライマリ・ボリューム４にコピーする複製エンジン・ボリューム１８の領域のリストと共にコマンドを（ブロック２５０で）送信する。スプリッタ１０は、領域のリストと共にコピー・コマンドを（ブロック２５２で）受信するのに応答して、プライマリ・ボリューム内の、複製エンジン１２からのデータで更新する領域のリストを標示する、ターゲット・プライマリ・ボリューム４のリバート・データ構造６０（図２）を（ブロック２５４で）生成する。スプリッタ１０は（ブロック２５６で）、ストレージ通信プロトコル・パッケージ９４およびネットワーク・パッケージ９０において、リバート・データ構造６０内に標示されている領域のリスト内のデータを要求する複製コマンド９８を、複製エンジン１２へ送信する。
【００６３】
複製エンジン１２は、領域のリストを要求する複製コマンドをスプリッタ１０から（ブロック２５８で）受信すると、（ブロック２６０で）標準ストレージ通信プロトコル・パッケージ９４およびネットワーク・パッケージ９０を使用して、１つ以上のメッセージを生成しスプリッタ１０へ送信する。スプリッタ１０は、データを（ブロック２６２で）受信すると、そのデータをターゲット・プライマリ・ボリューム４に（ブロック２６４で）書き込む。スプリッタ１０は、リバート・データ構造６０内に、複製エンジン・ボリューム１８からのデータで更新されたプライマリ・ボリューム位置を（ブロック２６６で）標示する。リバート・データ構造６０が（ブロック２６８で）、標示されているすべてのデータがコピーされたこと、すなわち、領域のリストすべてが複製エンジン・ボリューム１８からプライマリ・ボリューム４へコピーされたことを標示すれば、スプリッタ１０は領域のリストが複製エンジン・ボリューム１８からターゲット・プライマリ・ボリューム４にコピーされたことを標示する終了ステータスを複製エンジン１２へ（ブロック２７０で）送信する。そうでなく、リバート・データ構造６０が（ブロック２６８で）、コピーすべきさらなる領域があることを標示すると、制御が終了する。
【００６４】
図１０は、複製エンジン・ボリューム１８からのデータで更新されるべきであるとリバート・データ構造６０内で標示された領域を有するプライマリ・ボリューム４に対する読み取り要求に対処するよう、スプリッタ１０および複製エンジン１２によって実行される動作の実施形態を示す。スプリッタ１０が、リバート・データ構造６０内で標示され、更新されていない、または更新待ちと標示されているプライマリ・ボリューム４位置に対する読み取り要求をホスト２から（ブロック３００で）受信すると、スプリッタ１０は（ブロック３０２で）読み取り要求されたデータの複製コマンド９８を複製エンジン１２へ送信する。複製エンジン１２は、読み取り要求されたデータの要求を（ブロック３０４で）受信すると、（ブロック３０６で）ネットワーク・パッケージ９０内の標準ストレージ通信パッケージ９４のデータ・フィールド１００内などに要求されたデータを含んでいる１つ以上のメッセージを生成して、要求しているスプリッタ１０へ送信する。
【００６５】
スプリッタ１０は、要求したデータを（ブロック３０８で）受信すると、受信データを読み取り要求の開始元のホスト２へ（ブロック３１０で）返し、受信データでプライマリ・ボリューム４を（ブロック３１２で）更新する。スプリッタ１０はさらに、リバート・データ構造６０内に、プライマリ・ボリューム４内の領域が更新されたことを（ブロック３１４で）標示する。
【００６６】
図１１は、リバート・データ構造６０内で複製エンジン・ボリューム１８からのデータ待ちであると標示されている領域に対するホスト２からの書き込み要求に対処するようスプリッタ１０によって実行される動作の実施形態を示す。スプリッタ１０が、リバート・データ構造６０内で更新されていないと標示されているプライマリ・ボリューム位置に対する書き込み要求を（ブロック３３０で）受信すると、スプリッタ１０は、図９のブロック２６４〜２７０での動作を（ブロック３３２で）実行して新たな書き込みデータでデータを更新する。スプリッタ１０はさらに、更新されたデータが複製エンジン１２へコピーされるよう標示されていれば、そのデータと共に複製メッセージを複製エンジン１２へ送信する。
【００６７】
図１２は、複製エンジン・ボリューム１８をホスト２に対して公開している仮想プライマリ・ボリューム４を管理するためにスプリッタ１０および複製エンジン１２によって実行される動作の実施形態を示す。複製エンジン１２（またはその他何らかのコンポーネント）は、スプリッタ１０が複製エンジン・ボリューム１８の仮想プライマリ・ボリュームを作成することを要求する複製コマンド９８を（ブロック３５０で）生成し、スプリッタ１０へ送信する。複製エンジンのプライマリ・ボリューム・メタデータ２８は、仮想プライマリ・ボリューム７２、仮想プライマリ・ボリューム７２を介して公開されている対応する複製エンジン・ボリューム７４、および仮想モード７８を標示するとよい。仮想プライマリ・ボリュームを作成するためのコマンドを（ブロック３５２で）受信すると、スプリッタ１０は、プライマリ・ボリューム５２が仮想であることを標示するよう仮想モード６２が設定されている新たな仮想プライマリ・ボリューム５２を標示するプライマリ・ボリューム・メタデータ２６を作成することによって、仮想プライマリ・ボリュームを（ブロック３５４で）作成する。スプリッタ１０は（ブロック３５６で）、要求された仮想プライマリ・ボリュームが作成されたことを標示する複製メッセージ９８を返す。
【００６８】
スプリッタ１０が仮想モード６２で標示されているプライマリ・ボリュームに宛てられた読み取り／書き込み要求を（ブロック３５８で）受信すると、スプリッタ１０は（ブロック３６０で）仮想プライマリ・ボリュームの読み取り／書き込み要求を備えたコマンド９８を生成して、複製エンジン１２へ送信する。複製エンジン１２は（ブロック３６２で）コマンドを受信して、プライマリ・ボリューム７２に関連するとメタデータ２８において標示されている対応する複製エンジン・ボリューム１８に対して（ブロック３６４で）読み取り／書き込み要求を実行する。複製エンジン１２は、複製エンジン・ボリューム１８に対して読み取り／書き込み要求を実行するのに応答して、返送データおよび完了あるいはそのいずれかを含んでいるコマンド９８を（ブロック３６６で）生成してスプリッタ１０へ送信する。スプリッタ１０は返送データまたは完了を、要求しているホスト２に（ブロック３６８で）転送する。
【００６９】
記載されている複数の実施形態は、プライマリ・ボリュームへのアクセスを管理するストレージ・コントローラ内のスプリッタと、複製エンジン・ボリュームへのアクセスを管理する複製エンジンとの間のデータ転送動作を可能にする技術を提供する。記載された複数の実施形態は、スプリッタが、複製コマンド・セットを実装する種々の複製エンジンと通信するための技術を提供する。複製エンジン１０は、プライマリ・ボリュームへの書き込みを複製エンジン・ボリュームに分割する、ストレージ・コントローラ内のスプリッタのコピー・サービスを呼び出すことができる。
【００７０】
実施形態のさらなる詳細
記載された動作は、ソフトウェア、ファームウェア、ハードウェアまたはその任意の組み合わせを作り出す標準のプログラミング技術およびエンジニアリング技術あるいはそのいずれかを使用して、方法、装置またはプログラムとして実装されるとよい。記載された動作は、「コンピュータ可読媒体」内に保持されるコードとして実装されてもよく、その場合、プロセッサがこのコンピュータ可読媒体からコードを読み取り実行するとよい。コンピュータ可読媒体は、磁気ストレージ媒体（例えばハード・ディスク・ドライブ、フレキシブル・ディスク、テープなど）、光学ストレージ（ＣＤ‐ＲＯＭ、ＤＶＤ、光ディスクなど）、揮発性および不揮発性メモリ・デバイス（例えばＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、フラッシュ・メモリ、ファームウェア、プログラマブル論理など）などの媒体を含み得る。記載されている動作を実装するコードはさらに、ハードウェア論理（例えば、集積回路チップ、プログラマブル・ゲート・アレイ（ＰＧＡ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、特定用途向け集積回路（ＡＳＩＣ：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）など）において実装され得る。さらに、記載されている動作を実装するコードは、「伝送信号」において実装されてもよく、その場合、伝送信号は、空間または光ファイバ、銅線などの伝送媒体中を伝播するとよい。コードまたは論理が符号化される伝送信号はさらに、無線信号、衛星伝送、電波、赤外線信号、Ｂｌｕｅｔｏｏｔｈ（Ｒ）などを含み得る。コードまたは論理が符号化される伝送信号は、送信局により伝送され、受信局により受信されることが可能であり、伝送信号に符号化されたコードまたは論理は、復号されて、受信局および送信局または受信デバイスおよび送信デバイスにおいてハードウェアまたはコンピュータ可読媒体に格納されるとよい。「プログラム」は、コードを実装することができるコンピュータ可読媒体、ハードウェア論理および伝送信号あるいはそのいずれかを含む。動作の、記載されている複数の実施形態を実装するコードが符号化されるデバイスは、コンピュータ可読媒体またはハードウェア論理を含み得る。言うまでもなく、当業者には当然のことながら、本発明の範囲から逸脱することなくこの構成に多数の変更が加えられてよく、プログラムは、当技術分野で既知の適切な情報保持媒体を含めばよい。
【００７１】
「実施形態（ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」、「実施形態（ｅｍｂｏｄｉｍｅｎｔ）」、「複数の実施形態（ｅｍｂｏｄｉｍｅｎｔｓ）」、「実施形態（ｔｈｅ  ｅｍｂｏｄｉｍｅｎｔ）」、「複数の実施形態（ｔｈｅ  ｅｍｂｏｄｉｍｅｎｔｓ）」、「１つ以上の実施形態（ｏｎｅ  ｏｒ  ｍｏｒｅ  ｅｍｂｏｄｉｍｅｎｔｓ）」、「いくつかの実施形態（ｓｏｍｅ  ｅｍｂｏｄｉｍｅｎｔｓ）」および「一実施形態（ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」という言葉は、明確な他の規定がない限り、「本発明（単数または複数）の１つ以上の（しかしすべてではない）実施形態」を指す。
【００７２】
「含んでいる（ｉｎｃｌｕｄｉｎｇ）」、「含む（ｃｏｍｐｒｉｓｉｎｇ）」、「有する（ｈａｖｉｎｇ）」という言葉およびその変形は、明確な他の規定がない限り、「含むがこれに限定されるものではない」という意味である。
【００７３】
列挙された項目のリストは、明確な他の規定がない限り、その項目のいずれかまたはすべてが相互排他的であることを示唆するものではない。
【００７４】
「ａ」、「ａｎ」および「ｔｈｅ」という言葉は、明確な他の規定がない限り、「１つ以上」を意味する。
【００７５】
相互通信しているデバイスは、明確な他の規定がない限り、連続的に相互通信している必要はない。さらに、相互通信しているデバイスは、直接通信しても、１つ以上の中間物を介して間接的に通信してもよい。
【００７６】
相互通信するいくつかのコンポーネントを用いる実施形態の記載は、当該のコンポーネントすべてが必須であることを示唆するものではない。逆に、本発明の、考えられる幅広い種類の実施形態を示すために、様々な任意選択のコンポーネントが記載されている。
【００７７】
さらに、工程ステップ、方法ステップ、アルゴリズムまたは同様のものは、連続した順序で記載されていることもあるが、そのような工程、方法およびアルゴリズムは、他の順序で動作するよう構成されてもよい。言い換えれば、記載され得る各ステップのいかなる順番も順序も、必ずしもそのステップがその順序で実行されるという要件を表すわけではない。本願明細書に記載されている工程のステップは、実用的な任意の順序で実行されればよい。さらに、いくつかのステップが同時に実行されてもよい。
【００７８】
当然のことながら、本願明細書で単一のデバイスまたは物が記載されている場合、単一のデバイス／物の代わりに２つ以上のデバイス／物が（協働するか否かを問わず）使用されてもよい。同様に、当然のことながら、本願明細書で２つ以上のデバイスまたは物が記載されている場合（協働するか否かを問わず）、２つ以上のデバイスまたは物の代わりに単一のデバイス／物が使用されてもよく、示されている数のデバイスまたはプログラムの代わりに異なる数のデバイス／物が使用されてもよい。デバイスの機能性および特徴あるいはそのいずれかは、当該の機能性／特徴を有するように明確に記載されていない１つ以上の他のデバイスによって代わりに具現化されてもよい。したがって、本発明の他の実施形態が、そのデバイスそのものを含んでいる必要はない。
【００７９】
図５〜１２の、示されている動作は、特定の順序で生じる特定のイベントを示す。別の実施形態では、特定の動作が、異なる順序で実行されても、変更されても、または除かれてもよい。さらに、上記の論理に複数のステップが追加されてもよく、それでも記載の実施形態に適合する。さらに、本願明細書に記載されている動作は、連続して生じても、特定の動作が並行して処理されてもよい。さらに、各動作が単一の処理ユニットによって実行されても、分散型の処理ユニットにより実行されてもよい。
【００８０】
図１３は、全体的または部分的にデバイス２、８、および１４（図１）において実装されるとよいコンピューティング・システム・アーキテクチャ４００の実施形態を示す。アーキテクチャ４００は、１つ以上のプロセッサ４０２（例えばマイクロプロセッサ）、メモリ４０４（例えば揮発性メモリ・デバイス）、およびストレージ４０６（例えば磁気ディスク・ドライブ、光ディスク・ドライブ、テープ・ドライブなどの不揮発性ストレージ）を含んでいればよい。ストレージ４０６は、内部ストレージ・デバイス、または接続されたストレージもしくはネットワーク・アクセス可能なストレージを含むとよい。ストレージ４０６内のプログラムは、当技術分野で既知の方法で、メモリ４０４にロードされてプロセッサ（単数または複数）４０２によって実行される。このアーキテクチャはさらに、ネットワークを介した通信を可能にする１つ以上のアダプタ４０８を含んでいる。入力デバイス４１０は、プロセッサ４０２にユーザ入力を提供するために使用されるとよく、キーボード、マウス、ペン・スタイラス、マイクロホン、タッチ・センシティブ・ディスプレイ画面、またはその他、当技術分野で既知の任意の起動または入力メカニズムを含んでいればよい。出力デバイス４１２は、プロセッサ４０２、またはディスプレイ・モニタ、プリンタ、ストレージなどの他のコンポーネントから伝送される情報をレンダリングすることができる。
【図１】
2010537267.tif 000003
【図２】
2010537267.tif 000004
【図３】
2010537267.tif 000005
【図４】
2010537267.tif 000006
【図５】
2010537267.tif 000007
【図６】
2010537267.tif 000008
【図７】
2010537267.tif 000009
【図８】
2010537267.tif 000010
【図９】
2010537267.tif 000011
【図１０】
2010537267.tif 000012
【図１１】
2010537267.tif 000013
【図１２】
2010537267.tif 000014
【図１３】
2010537267.tif 000015
【手続補正書】
【提出日】平成22年4月26日(2010.4.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプライマリ・ボリュームに対するアクセスを管理するストレージ・コントローラにおいて実行されているスプリッタによって実行される、データ複製方法であって、
複製エンジンと通信するための初期化コマンドを受信するステップと、
１つのプライマリ・ボリュームの複製コマンドを受信するステップと、
前記プライマリ・ボリュームを、複製対象として標示するステップと、
前記複製対象として標示されている前記プライマリ・ボリュームのうちのターゲット・プライマリ・ボリュームにデータを書き込むための書き込み要求を受信するステップと、
前記書き込み要求内の前記データを、前記ターゲット・プライマリ・ボリュームに書き込むステップと、
前記書き込み要求内の前記データを、前記複製エンジンへ送信するステップであって、前記複製エンジンは、前記データを複製エンジン・ボリュームに書き込むために、前記ターゲット・プライマリ・ボリュームに関連するコピー・サービス機能を実行する、前記ステップと、
を含む方法。
【請求項２】
種々のベンダからの異種のコピー機能をそれぞれ実装する複数の複製エンジンがあり、前記スプリッタは、種々の前記複製エンジンとの通信に同じセットのコマンドと、標準ストレージ通信プロトコルとを使用して、前記異種のコピー機能を呼び出すことができる、請求項１に記載の方法。
【請求項３】
前記複製エンジンとの通信における障害を検出するステップと、
前記検出された障害の後に生じる前記プライマリ・ボリュームに対する書き込みの標示を、記録変更データ構造内に記録するステップと、
前記複製エンジンから、前記記録変更データ構造の要求を受信するステップと、
変更されたデータについての情報を、前記記録変更データ構造内で前記複製エンジンへ送信するステップと、
前記記録変更データ構造を前記複製エンジンへ送信するステップに応答して、前記記録変更データ構造を消去するステップと、
をさらに含む、請求項１または２に記載の方法。
【請求項４】
前記記録変更データ構造内に標示されている前記プライマリ・ボリューム内の更新済みデータの要求を、前記複製エンジンから受信するステップと、
前記記録変更データ構造内に標示されている、前記要求された更新済みデータを、前記複製エンジンへ送信するステップと、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記複製エンジンから前記プライマリ・ボリュームにコピーする領域の標示を受信するステップと、
前記複製エンジンの、前記領域内に標示されているデータを要求するステップと、
前記領域内に標示されているデータを、複製エンジンから受信するステップと、
前記領域内に標示されている、前記受信されたデータを、前記プライマリ・ボリュームに書き込むステップと、
前記領域内の前記データが前記プライマリに書き込まれたことを、前記複製エンジンから受信された前記データを前記プライマリ・ボリュームに書き込むのに応答して標示するステップと、
をさらに含む、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
領域のリストを受信した後に、前記プライマリ・ボリューム内のデータに対する読み取り要求を受信するステップと、
前記読み取り要求されたデータが、前記リスト内に標示されているかどうかを判断するステップと、
前記読み取り要求されたデータが前記リスト内に標示されていると判断するのに応答して、前記読み取り要求を前記複製エンジンへリダイレクトするステップと、
前記読み取り要求されたデータは前記リスト内に標示されていないと判断するのに応答して、前記読み取り要求されたデータを前記プライマリ・ボリュームから返すステップと、
をさらに含む、請求項５に記載の方法。
【請求項７】
前記領域を受信した後に、前記プライマリ・ボリュームに対してデータを書き込むための書き込み要求を受信するステップと、
書き込むべき前記データが、前記領域内に標示されているかどうかを判断するステップと、
前記領域内の、前記書き込み要求からの前記データが、前記プライマリ・ボリュームに書き込まれたことを、前記プライマリ・ボリュームに前記データを書き込むのに応答して標示するステップと、
をさらに含む、請求項５に記載の方法。
【請求項８】
前記プライマリ・ボリュームから前記複製エンジンにコピーする領域の標示を受信するステップと、
前記標示された領域からのデータを前記複製エンジンへ送信するステップと、
前記領域内の前記データが前記複製エンジンへ送信されたことを、前記領域内に標示されている前記データを前記複製エンジンへ送信するのに応答して標示するステップと、
をさらに含む、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
複製エンジン・ボリュームに関連する仮想プライマリ・ボリュームを作成するためのコマンドを受信するステップと、
ホストがアクセス可能な仮想プライマリ・ボリュームを作成するステップと、
前記仮想プライマリ・ボリュームに宛てられた入出力（Ｉ／Ｏ）要求を受信するステップと、
前記仮想プライマリ・ボリュームに宛てられた前記Ｉ／Ｏ要求を、前記複製エンジンに宛てるステップと、
をさらに含む、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
複数のプライマリ・ボリュームに対するアクセスを管理し、複製エンジンと通信しているシステムであって、
プライマリ・ボリューム・メタデータを有するコンピュータ可読媒体と、
複数の動作を生じさせことができるスプリッタと、
を含むシステムであって、前記動作は、
前記複製エンジンと通信するための初期化コマンドを受信することと、
１つのプライマリ・ボリュームの複製コマンドを受信することと、
前記プライマリ・ボリューム・メタデータにおいて、前記プライマリ・ボリュームが複製対象であることを標示することと、
前記複製対象として標示されている前記プライマリ・ボリュームのうちのターゲット・プライマリ・ボリュームにデータを書き込むための書き込み要求を受信することと、
前記書き込み要求内の前記データを、前記ターゲット・プライマリ・ボリュームに書き込むことと、
前記書き込み要求内の前記データを、前記複製エンジンへ送信することと、
を含み、
前記複製エンジンは、前記データを複製エンジン・ボリュームに書き込むために、前記ターゲット・プライマリ・ボリュームに関連するコピー・サービス機能を実行する、
システム。
【請求項１１】
種々のベンダからの異種のコピー機能をそれぞれ実装する複数の複製エンジンがあり、前記スプリッタは、種々の前記複製エンジンとの通信に同じセットのコマンドと、標準ストレージ通信プロトコルとを使用して、前記異種のコピー機能を呼び出すことができる、請求項１０に記載のシステム。
【請求項１２】
前記スプリッタはさらに、
前記複製エンジンとの通信における障害を検出することと、
前記検出された障害の後に生じる前記プライマリ・ボリュームに対する書き込みの標示を、記録変更データ構造内に記録することと、
前記複製エンジンから、前記記録変更データ構造の要求を受信することと、
変更されたデータについての情報を、前記記録変更データ構造内で前記複製エンジンへ送信することと、
前記記録変更データ構造を前記複製エンジンへ送信するのに応答して、前記記録変更データ構造を消去することと、
を含む動作を生じさせる、請求項１１に記載のシステム。
【請求項１３】
コンピュータに請求項１〜９のいずれか１項に記載のステップを実行させるプログラム。
【国際調査報告】
2010537267.tif 000016
2010537267.tif 000017
2010537267.tif 000018
2010537267.tif 000019
2010537267.tif 000020