(57)【要約】【課題】ＲＤＦ（リモートデータ機構）の構成の変更プロセスを自動化して、ホストがＲＤＦの構成を修正できるようにする。【解決手段】第１の記憶装置上の第１のボリュームと第２の記憶装置上のミラーリングされた第２のボリュームとの間の通信路を反転した後に、ミラーリングされたデータにアクセスする方法は、ミラーリングされたデータの同期化に先立ってそのデータへのアクセスを許すことと、ミラーリングされたデータの初期バージョンが第１のボリューム上にある場合に、第１のボリューム上のそのデータにアクセスすることと、初期バージョンが第２のボリューム上にあり、その初期バージョンが第２のボリュームから第１のボリュームにコピーされている場合に、第１のボリューム上のミラーリングされたデータにアクセスすることと、第２のボリューム上のミラーリングされたデータにアクセスすることと、を有する。【選択図】        図１
2007172643.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶装置と第２の記憶装置の間の通信路を動的に確立する方法であって、
前記第１の記憶装置上のソースボリュームヘの接続を確立し、前記ソースボリュームは前記通信路上にデータを送信する準備がまだできていないことを示す段階と、
前記ソースボリュームとデスティネーションボリュームのどちらに、前記ソースボリュームと前記デスティネーションボリュームの両方に格納されるべき初期データを含んでいるかを決定する段階と、
前記ソースボリュームへの接続の確立の成功後に、前記第２の記憶装置上の前記デスティネーションボリュームへの接続を確立し、前記ソースボリュームと前記デスティネーションボリュームのどちらが前記初期データを含んでいるかに応じて、前記デスティネーションボリュームと前記ソースボリュームのうちの一方のどの部分も有効なデータのコピーを含んでいないことを最初に示す段階と、
前記ソースボリュームおよび前記デスティネーションボリュームへの接続の確立の成功後、前記ソースボリュームは前記通信路上でデータを送信する準備ができていることを示す段階と、
前記ソースボリューム及び前記デスティネーションボリュームの一方から前記ソースボリューム及び前記デスティネーションボリュームの他方に前記初期データを前記通信路を介して転送しながら、前記ソースボリュームに書き込まれたデータを前記ソースボリュームから前記デスティネーションボリュームに前記通信路を介して転送する段階と、
を備える方法。
【請求項２】
前記ソースボリュームおよび前記デスティネーションボリュームの少なくとも１個を生成することをさらに備える請求項１に記載の方法。
【請求項３】
前記ソースボリュームヘの接続の確立は、前記第１の記憶装置に関する構成情報を含んでいるテーブルを修正することを含む、請求項１に記載の方法。
【請求項４】
前記デスティネーションボリュームヘの接続の確立は、前記第２の記憶装置に関する構成情報を含んでいるテーブルを修正することを含む、請求項３に記載の方法。
【請求項５】
前記デスティネーションボリュームヘの接続の確立が失敗した後に、前記ソースボリュームヘの接続を無効化することをさらに備える、請求項１に記載の方法。
【請求項６】
エラー表示を返すことをさらに備える請求項５に記載の方法。
【請求項７】
前記デスティネーションボリュームの部分は有効なデータを含んでいないことが最初に示される、請求項１に記載の方法。
【請求項８】
前記ソースボリュームが前記通信路上にデータを送信する準備ができたことを示した後、前記ソースボリュームから前記デスティネーションボリュームにデータをコピーするバックグラウンドコピー操作を開始することをさらに備える、請求項７に記載の方法。
【請求項９】
前記ソースボリュームの部分は有効なデータを含んでいないことが最初に示される、請求項１に記載の方法。
【請求項１０】
前記ソースボリュームが前記通信路上でデータを送信する準備ができたことを示した後に、前記デスティネーションボリュームから前記ソースボリュームにデータをコピーするバックグラウンドコピー操作を開始することをさらに備える、請求項９記載の方法。
【請求項１１】
前記ソースボリュームの特定の部分に対してＩ／Ｏ操作を実行するホストをさらに備える請求項１０に記載の方法。
【請求項１２】
無効データを含むと示された前記特定の部分に応答して、前記Ｉ／Ｏ操作を完了する前に、前記特定の部分に対応するデータを前記デスティネーションボリュームから前記ソースボリュームにコピーすることをさらに備える請求項１１に記載の方法。
【請求項１３】
第１の記憶装置と第２の記憶装置の間の通信路を動的に確立する方法であって、
前記第１の記憶装置上のデスティネーションボリュームヘの接続を確立する段階と、
前記デスティネーションボリュームとソースボリュームのどちらに、前記ソースボリュームと前記デスティネーションボリュームの両方に格納されるべき初期データを含んでいるかを決定する段階と、
前記デスティネーションボリュームへの接続の確立の成功後に、前記第２の記憶装置上の前記ソースボリュームへの接続を確立し、前記ソースボリュームは前記通信路上にデータを送信する準備がまだできていないことを示し、前記デスティネーションボリュームと前記ソースボリュームのどちらが前記初期データを含んでいるかに応じて、前記デスティネーションボリュームと前記ソースボリュームのうちの一方のどの部分も有効なデータのコピーを含んでいないことを最初に示す段階と、
前記ソースボリュームおよび前記デスティネーションボリュームへの接続の確立の成功後、前記ソースボリュームは前記通信路上でデータを送信する準備ができていることを示す段階と、
前記ソースボリューム及び前記デスティネーションボリュームの一方から前記ソースボリューム及び前記デスティネーションボリュームの他方に前記初期データを前記通信路を介して転送しながら、前記ソースボリュームに書き込まれたデータを前記ソースボリュームから前記デスティネーションボリュームに前記通信路を介して転送する段階と、
を備える方法。
【請求項１４】
前記ソースボリュームおよび前記デスティネーションボリュームの少なくとも１個を生成することをさらに備える請求項１３に記載の方法。
【請求項１５】
前記デスティネーションボリュームヘの接続の確立は、前記第１の記憶装置に関する構成情報を含んでいるテーブルを修正することを含む、請求項１３に記載の方法。
【請求項１６】
前記ソースボリュームヘの接続の確立は、前記第２の記憶装置に関する構成情報を含んでいるテーブルを修正することを含む、請求項１５に記載の方法。
【請求項１７】
前記ソースボリュームヘの接続の確立が失敗した後に、前記デスティネーションボリュームヘの接続を無効化することをさらに備える、請求項１３に記載の方法。
【請求項１８】
エラー表示を返すことをさらに備える請求項１７に記載の方法。
【請求項１９】
前記デスティネーションボリュームの部分は有効なデータを含んでいないことが最初に示される、請求項１３記載の方法。
【請求項２０】
前記ソースボリュームが前記通信路上でデータを送信する準備ができたことを示した後、前記ソースボリュームから前記デスティネーションボリュームにデータをコピーするバックグラウンドコピー操作を開始することをさらに備える、請求項１９記載の方法。
【請求項２１】
前記ソースボリュームの部分は有効なデータを含んでいないことが最初に示される、請求項１３に記載の方法。
【請求項２２】
前記ソースボリュームが前記通信路上でデータを送信する準備ができたことを示した後に、前記デスティネーションボリュームから前記ソースボリュームにデータをコピーするバックグラウンドコピー操作を開始することをさらに備える、請求項２１記載の方法。
【請求項２３】
前記ソースボリュームの特定の部分に対してＩ／Ｏ操作を実行するホストをさらに備える請求項２２に記載の方法。
【請求項２４】
無効データを含むと示された前記特定の部分に応答して、前記Ｉ／Ｏ操作を完了する前に、前記特定の部分に対応するデータを前記デスティネーションボリュームから前記ソースボリュームにコピーすることをさらに備える請求項２３に記載の方法。
【請求項２５】
第１の記憶装置と第２の記憶装置の間の通信路を確立するためのコンピュータプログラムであって、
前記第１の記憶装置上のソースボリュームヘの接続を確立し、前記ソースボリュームは前記通信路上でデータを送信する準備がまだできていないことを示す、実行可能なコードと、
前記ソースボリュームとデスティネーションボリュームのどちらに、前記ソースボリュームと前記デスティネーションボリュームの両方に格納されるべき初期データを含んでいるかを決定する実行可能なコードと、
前記ソースボリュームヘの接続の確立の成功後に、前記第２の記憶装置上の前記デスティネーションボリュームへの接続を確立し、前記ソースボリュームと前記デスティネーションボリュームのどちらが前記初期データを含んでいるかに応じて、前記デスティネーションボリュームと前記ソースボリュームのうちの一方のどの部分も有効なデータのコピーを含んでいないことを最初に示す、実行可能なコードと、
前記ソースボリュームおよび前記デスティネーションボリュームへの接続の確立の成功後、前記ソースボリュームは前記通信路上でデータを送信する準備ができたことを示す、実行可能なコードと、
前記ソースボリューム及び前記デスティネーションボリュームの一方から前記ソースボリューム及び前記デスティネーションボリュームの他方に前記初期データを前記通信路を介して転送しながら、前記ソースボリュームに書き込まれたデータを前記ソースボリュームから前記デスティネーションボリュームに前記通信路を介して転送する、実行可能なコードと、
を備えるコンピュータプログラム。
【請求項２６】
前記ソースボリュームおよび前記デスティネーションボリュームの少なくとも１個を生成する実行可能なコードをさらに備える請求項２５に記載のコンピュータプログラム。
【請求項２７】
前記ソースボリュームヘの接続を確立する実行可能なコードは、前記第１の記憶装置に関する構成情報を含んでいるテーブルを修正するコードである、請求項２５に記載のコンピュータプログラム。
【請求項２８】
前記デスティネーションボリュームへの接続を確立する実行可能なコードは、前記第２の記憶装置に関する構成情報を含んでいるテーブルを修正するコードである、請求項２７に記載のコンピュータプログラム。
【請求項２９】
前記デスティネーションボリュームヘの接続の確立が失敗した後に前記ソースボリュームヘの接続を無効化する実行可能なコードをさらに備える、請求項２５に記載のコンピュータプログラム。
【請求項３０】
エラー表示を返す実行可能なコードをさらに備える請求項２５に記載のコンピュータプログラム。
【請求項３１】
有効なデータを含んでいないものとして前記ソースボリュームの部分が最初に示されるようにする実行可能なコードをさらに備える、請求項２５に記載のコンピュータプログラム。
【請求項３２】
前記ソースボリュームが前記通信路上でデータを送信する準備ができたことを示した後に、前記デスティネーションボリュームから前記ソースボリュームにデータをコピーするバックグラウンドコピー操作を開始する実行可能なコードをさらに含む、請求項３１に記載のコンピュータプログラム。
【請求項３３】
無効データを含むと表示された要求部分に応答してＩ／Ｏ操作を完了する前に、前記要求部分に対応するデータを前記デスティネーションボリュームから前記ソースボリュームにコピーする実行可能なコードをさらに備える、請求項３２に記載のコンピュータプログラム。
【請求項３４】
第１の記憶装置と第２の記憶装置の間の通信路を動的に確立するためのコンピュータプログラムであって、
前記第１の記憶装置上のデスティネーションボリュームヘの接続を確立する実行可能なコードと、
前記デスティネーションボリュームとソースボリュームのどちらに、前記ソースボリュームと前記デスティネーションボリュームの両方に格納されるべき初期データを含んでいるかを決定する実行可能なコードと、
前記デスティネーションボリュームへの接続の確立の成功後に、前記第２の記憶装置上の前記ソースボリュームヘの接続を確立し、前記ソースボリュームが前記通信路上でデータを送信する準備がまだできていないことを示し、前記デスティネーションボリュームと前記ソースボリュームのどちらが前記初期データを含んでいるかに応じて、前記デスティネーションボリュームと前記ソースボリュームのうちの一方のどの部分も有効なデータのコピーを含んでいないことを最初に示する実行可能なコードと、
前記ソースボリュームおよび前記デスティネーションボリュームへの接続の確立の成功後、前記ソースボリュームは前記通信路上でデータを送信する準備ができたことを表示する実行可能なコードと、
前記ソースボリューム及び前記デスティネーションボリュームの一方から前記ソースボリューム及び前記デスティネーションボリュームの他方に前記初期データを前記通信路を介して転送しながら、前記ソースボリュームに書き込まれたデータを前記ソースボリュームから前記デスティネーションボリュームに前記通信路を介して転送する、実行可能なコードと、
を含むコンピュータプログラム。
【請求項３５】
前記ソースボリュームおよび前記デスティネーションボリュームの少なくとも１個を生成する実行可能なコードをさらに備える、請求項３４に記載のコンピュータプログラム。
【請求項３６】
前記ソースボリュームヘの接続を確立する実行可能なコードは、前記第１の記憶装置に関する構成情報を含んでいるテーブルを修正するコードである、請求項３４に記載のコンピュータプログラム。
【請求項３７】
前記デスティネーションボリュームヘの接続を確立する実行可能なコードは、前記第２の記憶装置に関する構成情報を含んでいるテーブルを修正するコードである、請求項３４に記載のコンピュータプログラム。
【請求項３８】
前記ソースボリュームヘの接続の確立が失敗した後に、前記デスティネーションボリュームヘの接続を無効化する実行可能なコードをさらに備える、請求項３４に記載のコンピュータプログラム。
【請求項３９】
エラー表示を返す実行可能なコードをさらに備える請求項３８に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ記憶（ストレージ）装置に関し、特に記憶装置間の通信に関する。
【背景技術】
【０００２】
ホストプロセッサシステムは、複数のホストインターフェースユニット（ホストアダプタ）、ディスクドライブおよびディスクインタフェースユニット（ディスクアダプタ）を含む記憶装置を使用して、データを格納し保存して取り出すことができる。このような記憶装置は、例えば、米国マサチューセッツ州ホプキントン(Hopkinton)のＥＭＣ社(EMC Corporation)によって提供されており、Yanaiらの米国特許第5,206,939号明細書（特許文献１）、Galtzurらの米国特許第5,778,394号明細書（特許文献２）、Vishlitzkyらの米国特許第5,845,147号明細書（特許文献３）、およびOfekの米国特許第5,857,208号明細書（特許文献４）に開示されている。
【０００３】
ホストシステムは、ホストシステム上に設けられた複数のチャネルを介して、記憶装置にアクセスする。ホストシステムは、チャネルを通して記憶装置にデータおよびアクセス制御情報を与え、記憶装置もまた、チャネルを通してホストシステムにデータを提供する。ホストシステムは、記憶装置のディスクドライブを、直接、アドレス指定するのではなく、むしろホストシステムにとって複数の論理ディスクユニットとして見えるものに対して、アクセスする。論理ディスクユニットは、実際のディスクドライブに対応しても対応していなくてもよい。多数のホストシステムが１個の記憶装置ユニットにアクセスすることを可能にすることで、これらのホストシステムは、その記憶装置ユニットに格納されたデータを共有できる。
【０００４】
ある状況では、１個の記憶装置から別の記憶装置にデータをコピーすることが望ましい場合がある。例えば、ホストが第１の記憶装置にデータを書き込む場合に、第１の記憶装置が動作不能になるような災害が発生した場合に、そのホスト（あるいは別のホスト）が第２の記憶装置のデータを使用して動作を再開できるように、異なる場所に設けられた第２の記憶装置にそのデータをコピーすることが望ましい。このような能力は、例えば、米国マサチューセッツ州ホプキントンのＥＭＣ社によって提供されるリモートデータ機構（remote data facility：ＲＤＦ、以下ＲＤＦと呼ぶ）製品によって実現できる。ＲＤＦでは、ユーザは、第１の記憶装置をマスタ記憶装置とし、第２の記憶装置をスレーブ記憶装置として示してもよい。ＲＤＦの他の実現例は、ローカル記憶装置とリモート記憶装置との間のピア・ツー・ピア関係を備えていてもよい。ホストは、ローカル記憶装置に、直接、作用するが、ローカル記憶装置に対してなされたデータ変更のすべては、ＲＤＦを使用してリモート記憶装置へ自動的に出力される。ローカル記憶装置とリモート記憶装置とは、エスコンリンク(ESCON link)あるいはファイバチャネルリンク(Fiber Channel link)のようなデータリンクによって接続することができる。このＲＤＦ機能は、それぞれの記憶装置に備えられたＲＤＦアダプタ（ＲＡ）でさらに有効に活用ができる。
【特許文献１】米国特許第５，２０６，９３９号明細書
【特許文献２】米国特許第５，７７８，３９４号明細書
【特許文献３】米国特許第５，８４５，１４７号明細書
【特許文献４】米国特許第５，８５７，２０８号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ある状況では、ＲＤＦの構成システムに修正を加えた方が好ましい場合がある。しかし
多くの場合、このような修正には、特殊なソフトウェアを取り扱える熟練した専門家やローカル記憶装置への標準でない接続を必要とする。ＲＤＦ構成の変更プロセスを自動化して、ホストがＲＤＦの構成を修正できるようにすることが望ましい。さらに、ＲＤＦ構成中の個々の装置が動的な構成情報にアクセスする必要がある場合に、ＲＤＦ構成を動的に変更することが記憶装置の動作に影響を与えないことが望ましい。
【課題を解決するための手段】
【０００６】
この発明によれば、第１の記憶装置上の第１のボリュームと第２の記憶装置上のミラーリングされた第２のボリュームとの間の通信路を反転した後に、ミラーリングされたデータにアクセスする方法は、であって、第１のボリュームと第２のボリュームの間でミラーリングされたデータを同期化することに先立ってミラーリングされたデータへのアクセスを許すことと、ミラーリングされたデータの初期バージョンが第１のボリューム上に用意されている場合に、第１のボリューム上のミラーリングされたデータにアクセスすることと、ミラーリングされたデータの初期バージョンが第２のボリューム上に用意され、かつミラーリングされたデータの初期バージョンが第２のボリュームから第１のボリュームにコピーされている場合に、第１のボリューム上のミラーリングされたデータにアクセスすることと、ミラーリングされたデータの初期バージョンが第２のボリューム上に用意され、かつミラーリングされたデータの初期バージョンが第２のボリュームから第１のボリュームにコピーされている場合に、第２のボリューム上のミラーリングされたデータにアクセスすることと、を有する。
【０００７】
この発明によれば、コンピュータ記憶媒体内に格納され、第１の記憶装置上の第１のボリュームと第２の記憶装置上のミラーリングされた第２のボリュームとの間の通信路を反転した後に、ミラーリングされたデータにアクセスするコンピュータソフトウェアは、第１のボリュームと第２のボリュームの間でミラーリングされたデータを同期化することに先立ってミラーリングされたデータへのアクセスを許す実行可能なコードと、ミラーリングされたデータの初期バージョンが第１のボリューム上に用意されている場合に、第１のボリューム上のミラーリングされたデータにアクセスする実行可能なコードと、ミラーリングされたデータの初期バージョンが第２のボリューム上に用意され、かつミラーリングされたデータの初期バージョンが第２のボリュームから第１のボリュームにコピーされている場合に、第１のボリューム上のミラーリングされたデータにアクセスする実行可能なコードと、ミラーリングされたデータの初期バージョンが第２のボリューム上に用意され、かつミラーリングされたデータの初期バージョンが第２のボリュームから第１のボリュームにコピーされている場合に、第２のボリューム上のミラーリングされたデータにアクセスする実行可能なコードと、を有する。
【０００８】
この発明によれば、記憶装置は、グローバルメモリと、グローバルメモリに接続された複数のホストインタフェースユニットと、グローバルメモリに接続された複数のディスクインタフェースユニットと、複数のディスクインタフェースユニットに接続された複数のディスクドライブと、グローバルメモリに接続された少なくとも１つのリモートアダプタユニットと、記憶装置内で実行されるコンピュータプログラムであって、記憶装置の第１のボリューム上のミラーリングされたデータへの、第１のボリュームと記憶装置に接続された別体の他の記憶装置の第２のボリュームとの間でミラーリングされたデータを同期化することに先立つアクセスを許可する実行可能なコードと、ミラーリングされたデータの初期バージョンが第１のボリューム上に用意されている場合に、第１のボリューム上のミラーリングされたデータにアクセスする実行可能なコードと、ミラーリングされたデータの初期バージョンが第２のボリューム上に用意され、かつミラーリングされたデータの初期バージョンが第２のボリュームから第１のボリュームにコピーされている場合に、第１のボリューム上のミラーリングされたデータにアクセスする実行可能なコードと、ミラーリングされたデータの初期バージョンが第２のボリューム上に用意され、かつミラーリン
グされたデータの初期バージョンが第２のボリュームから第１のボリュームにコピーされている場合に、第２のボリューム上のミラーリングされたデータにアクセスする実行可能なコードと、を有するコンピュータプログラムと、を備える。
【０００９】
この発明によれば、第１および第２の記憶装置の間の通信路を動的に確立することは、第１の記憶装置上のソースボリュームヘの接続を確立し、ソース（送り手）ボリュームは通信路上にデータを送信する準備がまだできていないこと（ノットレディ状態）を示すことと、ソースボリュームへの接続の確立の成功後に、第２の記憶装置上のデスティネーション（受け手）ボリュームへの接続を確立し、デスティネーションボリュームがソースボリュームからのデータを受け入れて、デスティネーションボリュームとソースボリュームのうちの一方のどの部分も有効なデータのコピーを含んでいないことを最初に示すことと、ソースボリュームおよびデスティネーションボリュームへの接続の確立の成功後、ソースボリュームは通信路上でデータを送信する準備ができていること（レディ状態）を示すことと、を含む。第１および第２の記憶装置の間の通信路を動的に確立することは、また、ソースボリュームおよびデスティネーションボリュームの少なくとも１個を生成することを含んでもよい。ソースボリュームヘの接続の確立は、第１の記憶装置に関する構成情報を含んでいるテーブルを修正することを含んでいてもよい。デスティネーションボリュームヘの接続の確立は、第２の記憶装置に関する構成情報を含んでいるテーブルを修正することを含んでいてもよい。第１および第２の記憶装置の間の通信路を動的に確立することは、デスティネーションボリュームヘの接続の確立が失敗した後に、ソースボリュームヘの接続を無効化(destroy)することをさらに含んでいてもよく、その場合には、エラー
が返されてもよい。デスティネーションボリュームの部分は有効なデータを含んでいないことが最初に示されてもよく、その場合は、第１および第２の記憶装置の間の通信路を動的に確立することは、ソースボリュームが通信路上にデータを送信する準備ができたことを示した後、ソースボリュームからデスティネーションボリュームにデータをコピーするバックグラウンドコピー操作を開始することをさらに含んでもよい。ソースボリュームの部分は有効なデータを含んでいないことが最初に示されてもよく、その場合、第１および第２の記憶装置の間の通信路を動的に確立することは、ソースボリュームが通信路上でデータを送信する準備ができたことを示した後に、デスティネーションボリュームからソースボリュームにデータをコピーするバックグラウンドコピー操作を開始することをさらに含んでもよい。ホストは、ソースボリュームの特定の部分に対してＩ／Ｏ操作を実行してもよく、その場合、第１および第２の記憶装置の間の通信路を動的に確立することは、無効データ(invalid data)を含むと示された特定の部分に応答して、Ｉ／Ｏ操作を完了する前に、その特定の部分に対応するデータをデスティネーションボリュームからソースボリュームにコピーすることをさらに含んでもよい。
【００１０】
さらに、この発明によれば、第１および第２の記憶装置の間の通信路を動的に確立することは、第１の記憶装置上のデスティネーションボリュームヘの接続を確立することと、デスティネーションボリュームへの接続の確立の成功後に、第２の記憶装置上のソースボリュームへの接続を確立し、ソースボリュームは通信路上にデータを送信する準備がまだできていないことを示し、デスティネーションボリュームがソースボリュームからのデータを受け入れて、デスティネーションボリュームとソースボリュームのうちの一方のどの部分も有効なデータのコピーを含んでいないことを最初に示すことと、ソースボリュームおよびデスティネーションボリュームへの接続の確立の成功後、ソースボリュームは通信路上でデータを送信する準備ができていることを示すことと、を含む。第１および第２の記憶装置の間の通信路を動的に確立することは、ソースボリュームおよびデスティネーションボリュームの少なくとも１個を生成することをさらに含んでもよい。デスティネーションボリュームヘの接続の確立は、第１の記憶装置に関する構成情報を含んでいるテーブルを修正することを含んでもよい。ソースボリュームヘの接続の確立は、第２の記憶装置に関する構成情報を含んでいるテーブルを修正することを含んでもよい。第１および第２
の記憶装置の間の通信路を動的に確立することは、ソースボリュームヘの接続の確立が失敗した後に、デスティネーションボリュームヘの接続を無効化することをさらに含んでもよく、その場合には、エラー表示が返されてもよい。デスティネーションボリュームの部分は有効なデータを含んでいないことが最初に示されてもよい。第１および第２の記憶装置の間の通信路を動的に確立することは、ソースボリュームが通信路上でデータを送信する準備ができたことを示した後、ソースボリュームからデスティネーションボリュームにデータをコピーするバックグラウンドコピー操作を開始することをさらに含んでいてもよい。ソースボリュームの部分は有効なデータを含んでいないことが最初に示されてもよい。第１および第２の記憶装置の間の通信路を動的に確立することは、ソースボリュームが通信路上でデータを送信する準備ができたことを示した後に、デスティネーションボリュームからソースボリュームにデータをコピーするバックグラウンドコピー操作を開始することをさらに含んでいてもよい。第１および第２の記憶装置の間の通信路を動的に確立することは、ソースボリュームの特定の部分に対してＩ／Ｏ操作を実行するホストをさらに含んでいてもよい。第１および第２の記憶装置の間の通信路を動的に確立することは、無効データを含むと示された特定の部分に応答して、Ｉ／Ｏ操作を完了する前に、その特定の部分に対応するデータをデスティネーションボリュームからソースボリュームにコピーすることをさらに含んでいてもよい。
【００１１】
さらに、この発明によれば、第１および第２の記憶装置の間の通信路を確立するコンピュータプログラム製品は、第１の記憶装置上のソースボリュームヘの接続を確立し、ソースボリュームは通信路上でデータを送信する準備がまだできていないことを示す、実行可能なコードと、ソースボリュームヘの接続の確立の成功後に、第２の記憶装置上のデスティネーションボリュームへの接続を確立し、デスティネーションボリュームがソースボリュームからのデータを受け入れて、デスティネーションボリュームとソースボリュームのうちの一方のどの部分も有効なデータのコピーを含んでいないことを最初に示す、実行可能なコードと、ソースボリュームおよびデスティネーションボリュームへの接続の確立の成功後、ソースボリュームは通信路上でデータを送信する準備ができたことを示す、実行可能なコードと、を含む。コンピュータプログラム製品は、ソースボリュームおよびデスティネーションボリュームの少なくとも１個を生成する実行可能なコードをさらに含んでいてもよい。ソースボリュームヘの接続を確立する実行可能なコードは、ソースボリュームヘの接続を確立する実行可能なコードは、第１の記憶装置に関する構成情報を含んでいるテーブルを修正してもよい。デスティネーションボリュームへの接続を確立する実行可能なコードは、第２の記憶装置に関する構成情報を含んでいるテーブルを修正してもよい。コンピュータプログラム製品は、デスティネーションボリュームヘの接続の確立が失敗した後にソースボリュームヘの接続を無効化する実行可能なコードをさらに含んでいてもよく、その場合、エラー表示が返されてもよい。コンピュータプログラム製品は、有効なデータを含んでいないものとしてソースボリュームの部分が最初に示されるようにする実行可能なコードをさらに含んでいてもよい。コンピュータプログラム製品は、ソースボリュームが通信路上でデータを送信する準備ができたことを示した後に、デスティネーションボリュームからソースボリュームにデータをコピーするバックグラウンドコピー操作を開始する実行可能なコードをさらに含んでいてもよい。コンピュータプログラム製品は、無効データを含むと表示された要求部分に応答してＩ／Ｏ操作を完了する前に、要求部分に対応するデータをデスティネーションボリュームからソースボリュームにコピーする実行可能なコードをさらに含んでいてもよい。
【００１２】
さらに、この発明によれば、第１および第２の記憶装置の間の通信路を動的に確立するコンピュータプログラム製品は、第１の記憶装置上のデスティネーションボリュームヘの接続を確立する実行可能なコードと、デスティネーションボリュームへの接続の確立の成功後に、第２の記憶装置上のソースボリュームヘの接続を確立し、ソースボリュームが通信路上でデータを送信する準備がまだできていないことを示し、デスティネーションボリ
ュームがソースボリュームからのデータを受け入れて、デスティネーションボリュームとソースボリュームのうちの一方のどの部分も有効なデータのコピーを含んでいないことを最初に示する実行可能なコードと、ソースボリュームおよびデスティネーションボリュームへの接続の確立の成功後、ソースボリュームは通信路上でデータを送信する準備ができたことを表示する実行可能なコードと、を含む。コンピュータプログラム製品は、ソースボリュームおよびデスティネーションボリュームの少なくとも１個を生成する実行可能なコードをさらに含んでもよい。ソースボリュームヘの接続を確立する実行可能なコードは、第１の記憶装置に関する構成情報を含んでいるテーブルを修正してもよい。デスティネーションボリュームヘの接続を確立する実行可能なコードは、第２の記憶装置に関する構成情報を含んでいるテーブルを修正してもよい。コンピュータプログラム製品は、ソースボリュームヘの接続の確立が失敗した後に、デスティネーションボリュームヘの接続を無効化する実行可能なコードをさらに含んでいてもよく、その場合は、エラー表示が返されてもよい。
【００１３】
この発明によれば、第１の記億装置上の第１のボリュームと第２の記憶装置上の第２のボリュームとの間の通信路を反転することは、記憶装置の他のボリュームの動作を維持しつつ第１および第２のボリュームの間の通信を保留（サスペンド）にすることと、第１のボリュームを無効化することなく第１のボリュームをソースボリュームからデスティネーションボリュームに変更することと、第２のボリュームを無効化することなく第２のボリュームをデスティネーションボリュームからソースボリュームに変更することと、第１および第２のボリュームの間の通信を再開することと、を含む。第１のボリュームをソースボリュームからデスティネーションボリュームへ変更することは、第１の記憶装置に関するテーブルを修正することを含んでいてもよい。第２のボリュームをソースボリュームからデスティネーションボリュームへ変更することは、第２の記憶装置に関するテーブルを修正することを含んでいてもよい。通信を保留にすることは、第１のボリュームを準備できていない状態に設定することを含んでいてもよい。通信を再開することは、第２のボリュームを準備できた状態に設定することを含んでいてもよい。第１の記億装置上の第１のボリュームと第２の記憶装置上の第２のボリュームとの間の通信路を反転することは、通信路の反転の成功を示す結果を返すことをさらに含んでもよい。
【００１４】
さらに、この発明によれば、記憶装置上のボリュームを管理することは、第１の記憶装置上の第１のボリュームと第２の記憶装置上の第２のボリュームとの間の通信路の反転を要求するコマンドを受信することと、記憶装置の他のボリュームの動作を維持しつつ第１および第２のボリュームの間の通信を保留にすることと、第１のボリュームを無効化することなく第１のボリュームをソースボリュームからデスティネーションボリュームに変更することと、第２のボリュームを無効化することなく第２のボリュームをデスティネーションボリュームからソースボリュームに変更することと、第１および第２のボリュームの間の通信を再開することと、を含む。コマンドは、第１および第２の記憶装置上で動作が実行される単一のマルチホップ多重実行コマンドであってもよい。第１のボリュームをソースボリュームからデスティネーションボリュームへ変更することは、第１の記憶装置に関するテーブルを修正することを含んでもよい。第２のボリュームをソースボリュームからデスティネーションボリュームへ変更することは、第２の記憶装置に関するテーブルを修正することを含んでもよい。通信を保留にすることは、第１のボリュームを準備できていない状態に設定することを含んでもよい。通信を再開することは、第２のボリュームを準備できた状態に設定することを含んでもよい。記憶装置上のボリュームを管理することは、通信路の反転の成功を示す結果を返すことをさらに含んでもよい。
【００１５】
さらに、本発明によれば、第１の記億装置上の第１のボリュームと第２の記憶装置上の第２のボリュームとの間の通信路を反転させるコンピュータプログラム製品は、記憶装置の他のボリュームの動作を維持しながら第１および第２のボリュームの間の通信を保留に
する実行可能なコードと、第１のボリュームを無効化することなく第１のボリュームをソースボリュームからデスティネーションボリュームに変更する実行可能なコードと、第２のボリュームを無効化することなく第２のボリュームをデスティネーションボリュームからソースボリュームに変更する実行可能なコードと、第１および第２のボリュームの間の通信を再開する実行可能なコードと、を含む。ソースボリュームからデスティネーションボリュームへ第１のボリュームを変更する実行可能なコードは、第１の記憶装置に関するテーブルを修正してもよい。ソースボリュームからデスティネーションボリュームへ第２のボリュームを変更する実行可能なコードは、第２の記憶装置に関するテーブルを修正してもよい。通信を保留にする実行可能なコードは、第１のボリュームを準備できていない状態に設定してもよい。通信を再開する実行可能なコードは、第２のボリュームを準備できた状態に設定してもよい。第１の記億装置上の第１のボリュームと第２の記憶装置上の第２のボリュームとの間の通信路を反転させるコンピュータプログラム製品は、また、通信路の反転の成功を示す結果を返す実行可能なコードを含んでもよい。第１の記憶装置上の第１のボリュームと第２の記憶装置上の第２のボリュームとの間の通信路を反転させるコンピュータプログラム製品は、また、通信路の反転の成功を示す結果を返す実行可能なコードを含んでよい。
【００１６】
この発明によれば、装置特性の決定は、第１のグローバルアクセス可能な値を得ることと、第１のグローバルアクセス可能な値が保存された第１の値に対応する場合に、比較的高速なメモリから装置特性データを得ることと、第１のグローバルアクセス可能な値が保存された第１の値に対応しない場合に、第２のグローバルアクセス可能な値を得ることと、第２のグローバルアクセス可能な値が保存された第２の値に対応する場合に、比較的高速なメモリから装置特性データを得ることと、第２のグローバルアクセス可能な値が保存された第２の値に対応しない場合に、比較的低速なメモリから装置特性データを得て、比較的高速なメモリ、保存された第１の値、および保存された第２の値を更新することと、を含む。第１のグローバルアクセス可能な値は装置のＩ／Ｏ情報を含んでいてもよい。グローバルアクセス可能な値は、複数のプロセッサにとってアクセス可能なグローバルメモリに保存されていてもよい。比較的低速なメモリは、複数のプロセッサにとってアクセス可能なグローバルメモリであってもよい。比較的高速なメモリは、第１および第２の保存された値にアクセスするプロセッサに対してローカルであってもよい。第２の保存された値は、リモートデータ通信リンク中で装置がデータに対してソースであるかデスティネーションであるかを示してもよい。
【００１７】
さらに、この発明によれば、装置へのアクセスは、装置にどのようにアクセスするかを示すステータス情報を得ることと、装置の構成が変化していたかどうかを判定するために、ステータス情報の少なくとも一部分を検査することと、装置の構成が変化していなかった場合に、比較的高速なメモリにアクセスし保存された構成データ（コンフィギュレーションデータ）を参照することと、装置の構成が変化していた場合に、比較的低速なメモリにアクセスし新規な構成情報を参照し、新規な構成情報によって保存された構成データを更新することと、を含む。比較的低速なメモリは、複数のプロセッサにとってアクセス可能なグローバルメモリであってもよい。比較的高速なメモリは、その高速なメモリにアクセスするプロセッサに対してローカルであってもよい。保存された構成データは、リモートデータ通信リンク中で装置がデータに対してソースであるかデスティネーションであるかを示してもよい。ステータス情報の少なくとも一部分を検査することは、ステータス情報のその部分が第１の保存された値に等しいかどうかを判定することを含んでよい。装置へのアクセスは、また、ステータス情報のその部分が第１の保存された値に等しくない場合に、付加的なステータス情報を得て、付加的なステータス情報の部分が第２の保存された値に等しいかどうかを判定することをさらに含んでもよい。装置へのアクセスは、また、保存された構成データを更新した後、第１および第２の保存された値を更新することを含んでもよい。
【００１８】
さらに、この発明によれば、装置特性を決定するコンピュータプログラム製品は、第１のグローバルアクセス可能な値を得る実行可能なコードと、第１のグローバルアクセス可能な値が保存された第１の値に対応する場合に、比較的高速なメモリから装置特性データを得る実行可能なコードと、第１のグローバルアクセス可能な値が保存された第１の値に対応しない場合に、第２のグローバルアクセス可能な値を得る実行可能なコードと、第２のグローバルアクセス可能な値が保存された第２の値に対応する場合に、比較的高速なメモリから装置特性データを得る実行可能なコードと、第２のグローバルアクセス可能な値が保存された第２の値に対応しない場合に、比較的低速なメモリから装置特性データを得て、比較的高速なメモリ、保存された第１の値、および保存された第２の値を更新する実行可能なコードと、を含む。第１のグローバルアクセス可能な値は、装置のＩ／Ｏ情報を含んでいてもよい。第２の保存された値は、リモートデータ通信リンク中で装置がデータに対してソースであるかデスティネーションであるかを示してもよい。
【００１９】
さらに、この発明によれば、装置にアクセスするコンピュータプログラム製品は、装置にどのようにアクセスするかを示すステータス情報を得る実行可能なコードと、装置の構成が変化していたかどうかを判定するために、ステータス情報の少なくとも一部分を検査する実行可能なコードと、装置の構成が変化していなかった場合に、比較的高速なメモリにアクセスし保存された構成データを参照する実行可能なコードと、装置の構成が変化していた場合に、比較的低速なメモリにアクセスし新規な構成情報を参照し、新規な構成情報によって保存された構成データを更新する実行可能なコードと、を含む。保存された構成データは、リモートデータ通信リンク中で装置がデータに対してソースであるかデスティネーションであるかを示してもよい。ステータス情報の少なくとも一部分を検査する実行可能なコードは、ステータス情報のその部分が第１の保存された値に等しいかどうかを判定する実行可能なコードを含んでもよい。装置にアクセスするコンピュータプログラム製品は、また、ステータス情報のその部分が第１の保存された値に等しくない場合に、付加的なステータス情報を得て、付加的なステータス情報の部分が第２の保存された値に等しいかどうか判定する実行可能なコードを含んでいてもよい。装置にアクセスするコンピュータプログラム製品は、また、保存された構成データを更新した後、第１および第２の保存された値を更新する実行可能なコードを含んでいてもよい。
【００２０】
さらに、この発明によれば、装置特性を決定する機構は、第１のグローバルアクセス可能な値を得る手段と、第１のグローバルアクセス可能な値が保存された第１の値に対応する場合に、比較的高速なメモリから装置特性データを得る手段と、第１のグローバルアクセス可能な値が保存された第１の値に対応しない場合に、第２のグローバルアクセス可能な値を得る手段と、第２のグローバルアクセス可能な値が保存された第２の値に対応する場合に、比較的高速なメモリから装置特性データを得る手段と、第２のグローバルアクセス可能な値が保存された第２の値に対応しない場合に、比較的低速なメモリから装置特性データを得て、比較的高速なメモリ、保存された第１の値、および保存された第２の値を更新する手段と、を含む。第１のグローバルアクセス可能な値は装置のＩ／Ｏ情報を含んでもよい。グローバルアクセス可能な値は、複数のプロセッサにとってアクセス可能なグローバルメモリに保存されてもよい。比較的低速なメモリは、複数のプロセッサにとってアクセス可能なグローバルメモリであってもよい。比較的高速なメモリは、第１および第２の保存された値にアクセスするプロセッサに対してローカルであってもよい。第２の保存された値は、リモートデータ通信リンク中で装置がデータに対してソースであるかデスティネーションであるかを示してもよい。
【００２１】
さらに、この発明によれば、装置にアクセスする機構は、装置にどのようにアクセスするかを示すステータス情報を得る手段と、装置の構成が変化していたかどうかを判定するために、ステータス情報の少なくとも一部分を検査する手段と、装置の構成が変化してい
なかった場合に、比較的高速なメモリにアクセスし保存された構成データを参照する手段と、装置の構成が変化していた場合に、比較的低速なメモリにアクセスし新規な構成情報を参照し、新規な構成情報によって保存された構成データを更新する手段と、含む。比較的低速なメモリは、複数のプロセッサにとってアクセス可能なグローバルメモリであってもよい。比較的高速なメモリは、高速なメモリにアクセスするプロセッサに対してローカルであってもよい。保存された構成データは、リモートデータ通信リンク中で装置がデータに対してソースであるかデスティネーションであるかを示してもよい。ステータス情報の少なくとも一部分を検査する手段は、ステータス情報のその部分が第１の保存された値に等しいかどうかを判定する手段を含んでいてもよい。機構は、ステータス情報のその部分が第１の保存された値に等しくない場合に、付加的なステータス情報を得て、付加的なステータス情報の部分が第２の保存された値に等しいかどうかを決定する手段をさらに含んでいてもよい。機構は、保存された構成データを更新した後、第１および第２の保存された値を更新する手段をさらに含んでいてもよい。
【発明を実施するための最良の形態】
【００２２】
次に、図面を参照して本発明の実施の形態を説明する。
【００２３】
図１を参照すると、ブロック図２０は、ホスト２２とローカル記憶装置２４とリモート記憶装置２６との関係を示す。ホスト２２は、ホスト２２とローカル記憶装置２４の間のインタフェース機能を提供するホストアダプタ（ＨＡ）２８によって、ローカル記憶装置２４からのデータの読出し及びローカル記憶装置２４へのデータの書込みを行う。リモート記憶装置２６上のデータをローカル記憶装置２４上のデータと同一にするために、ローカル記憶装置２４からのデータは、ＲＤＦリンク２９を介してリモート記憶装置２６にコピーされる。ローカル記憶装置２４からリモート記憶装置２６へのデータの転送に時間遅延があり得るので、リモート記憶装置２６は、ある時点では、ローカル記憶装置２４上のデータと同一でないデータを含むことがあることは注意を要する。データ記憶装置間、あるいはＥＭＣ杜のＳｙｍｍｅｔｒｉｘTM（シンメトリックス（商標名））データ記憶システムのようなシステムの間の通信は、例えば、ＥＭＣ社から提供されるＲＤＦ製品を使用して容易に実現できる。
【００２４】
ローカル記憶装置２４は、ＲＤＦアダプタユニット（ＲＡ）３０を含み、また、リモート記憶装置２６はＲＡ３２を含む。ＲＡ３０、３２は、ＲＤＦリンク２９に接続されており、ホストアダプタ２８に類似しているが、記憶装置２４、２６の間でデータを転送するために使用される。ＲＡ３０、３２に関して使用されるソフトウェアについては、以下に詳細に述べる。
【００２５】
記憶装置２４、２６は、それぞれ１あるいはそれ以上のディスクを含んでおり、おのおののディスクは、記憶装置２４，２６のそれぞれに格納されたデータの異なる部分を含んでいる。図１は、記憶装置２４が複数のディスク３３ａ、３３ｂ、３３ｃを含み、記憶装置２６が複数のディスク３４ａ、３４ｃ、３４ｂを含んでいることを示している。。ここで説明したＲＤＦ機能を適用して、ローカル記憶装置２４のディスク３３ａ〜３３ｃの少なくとも一部分のデータが、ＲＤＦを使用して、リモート記憶装置２６のディスク３４ａ〜３４ｃの少なくとも一部分にコピーされる。記憶装置２４、２６の他のデータは、記憶装置２４、２６の間ではコピーしないようにすることが可能で、その場合には、それらのデータは同一にはならない。
【００２６】
それぞれのディスク３３ａ〜３３ｃは、ディスク３３ａ〜３３ｃの対応する１つにデータを出力し、ディスク３３ａ〜３３ｃの対応する１つからデータを受信するディスクアダプタユニット（ＤＡ）３５ａ、３５ｂ、３５ｃに接続している。同様に、リモート記憶装置２６の複数のＤＡ３６ａ、３６ｂ、３６ｃは、ディスク３４ａ〜３４ｃの対応する１つ
にデータを供給するために使用され、ディスク３４ａ〜３４ｃの対応する１つからデータを受信する。データ伝送路は、ローカル記憶装置２４のＤＡ３５ａ〜３５ｃ、ＨＡ２８およびＲＡ３０の間に存在する。同様に、データ伝送路は、リモート記憶装置のＤＡ３６ａ〜３６ｃおよびＲＡ３２の間に存在する。
【００２７】
ローカル記憶装置２４は、また、ＤＡ３５ａ〜３５ｃ、ＨＡ２８およびＲＡ３０の間でデータが転送されるのを促進するグローバル（大域）メモリ３７を含む。メモリ３７は、システムコールからのパラメータと、ＤＡ３５ａ〜３５ｃ、ＨＡ２８およびＲＡ３０うちの１または２以上のもので実行されるべきタスクと、ディスク３３ａ〜３３ｃの１または２個以上からフェッチされたデータのためのキャッシュとを含んでもよい。同様に、リモート記憶装置２６は、システムコールからのパラメータと、ＤＡ３６ａ〜３６ｃおよびＲＡ３２のうちの１または２個以上で実行されるべきタスクと、ディスク３４ａ〜３４ｃのうちの１または２個以上からフェッチされたデータのためのキャッシュとを含んでもよいグローバルメモリ３８を有する。メモリ３７、３８の使用については、以下により詳細に説明する。
【００２８】
ディスク３３ａ〜３３ｃに対応するローカル記憶装置２４中の記憶空間は、複数のボリュームや論理装置へ細分化される。論理装置は、ディスク３３ａ〜３３ｃの物理記憶空間に一致していても一致していなくてもよい。これにより、例えば、ディスク３３ａが複数の論理装置を含んでいてもよいし、あるいは、単一の論理装置がディスク３３ａ、３３ｂの両方にまたがっていてもよい。同様に、ディスク３４ａ〜３４ｃを備えるリモート記憶装置２６の記憶空間は、複数のボリュームまたは論理装置へ細分化されてもよく、それぞれの論理装置は、ディスク３４ａ〜３４ｃの１または２個以上に対応していても対応していなくてもよい。
【００２９】
ローカル記憶装置２４の部分とリモート記憶装置２６の部分との間のＲＤＦマッピングを設定することは、ローカル記憶装置２４上の論理装置に対するリモートミラーであるリモート記憶装置２６上の論理装置をセットアップすることを含む。ホスト２２は、ローカル記憶装置２４上の論理装置に対してデータの読出しと書込みを行う。ＲＤＦマッピングにより、ＲＡ３０、３２およびＲＤＦリンク２９を使用して、ローカル記憶装置２４からリモート記憶装置２６へ修正されたデータが転送される。定常状態の動作では、リモート記憶装置２６上の論理装置は、ローカル記憶装置２４上の論理装置のデータと同一のデータを含む。ホスト２２によってアクセスされるローカル記憶装置２４上の論理装置は、「Ｒ１ボリューム」（あるいは単に「Ｒ１」）と呼ばれ、一方、Ｒ１ボリューム上のデータのコピーを含むリモート記憶装置２６上の論理装置は、「Ｒ２ボリューム」（あるいは単に「Ｒ２」）と呼ばれる。このようにして、ホストは、Ｒ１ボリュームに対してデータの読出しおよび書込みを行い、ＲＤＦは、Ｒ１ボリュームからＲ２ボリュームへのデータの自動コピーと更新とを処理する。
【００３０】
ある状況では、ホスト２２がシステムの動作中にＲＤＦボリュームの生成(create)と無効化(destroy)とを実行できるようにすることが、有益である。ＲＤＦボリュームは、Ｒ
１／Ｒ２の対が無効化されまたはＲ１／Ｒ２の対が生成されるように、対で生成されてあるいは無効化されてもよいことには、注意が必要である。Ｒ１／Ｒ２対の生成または無効化は、ホスト２２によって起動される。ホストは、データ記憶装置に、マルチホップ(multihop)／多重実行(multiexecute)システムコマンドを送信する。マルチホップ／多重実行システムコマンドは、多数の記憶装置に送られそれらの多数の記憶装置が実行すべき動作を示す、単一のシステムコマンドである。このコマンドは、ホストコンピュータが、他のデータ記憶装置のレイヤを通して、間接的に１または２個以上のデータ記憶装置にリモートシステムコールを発行することを可能にする。このコマンドは、１または２個以上のいずれかのデータ記憶装置にそのコマンドを実行することを示してもよい。例えば、Ｒ１ボ
リュームがローカル記憶装置２４上にあり、Ｒ２ボリュームがリモート記憶装置２６上にあるときに、ホスト２２は、ＲＤＦボリュームの設定と管理とを支配するためにそれぞれの記憶装置２４、２６によって内部で使用されているテーブル（下記に詳述する）をそれぞれの記憶装置２４、２６にローカルに修正させることによって、特定のＲ１／Ｒ２対を無効化することを要求するマルチホップ／多重実行システムコマンドを送信することができる。Ｒ１／Ｒ２対の生成は、１つの記憶装置上にＲ１ボリュームを生成し、他の記憶装置上にＲ２ボリュームの生成することを含む。
【００３１】
さらに、ある状況では、１または２個以上の既存のボリュームにＲＤＦ接続を確立することが有効であろう。このようにして、例えば、既存のソース（送り手）ボリュームを、ＲＤＦを使用して新規に生成されたデスティネーション（受け手）ボリュームに接続してもよい。したがって、これからの議論においては、ボリュームの生成との言及には、既存のボリュームヘの接続の生成も含まれる、と理解できる。同様に、ボリュームの無効化への言及には、ＲＤＦ接続を単に無効化することが含まれる、と適切に理解できる。新しいボリュームを生成するかあるいは無効化する場合と、単に既存のボリュームヘの接続を生成または無効化する場合のいずれの場合も、ＲＤＦ接続データを含んだ同じテーブル（以下に述べる）が修正されることは注意を要する。
【００３２】
図２について説明すると、フローチャート５０は、Ｒ１／Ｒ２対の生成または無効化に関して実行されるステップを示している。処理は、無効化コマンドが発行されているかどうか判断する第１のステップ５２で開始する。ある実施形態では、生成コマンドか無効化コマンドかいずれかのみが発行される。したがって、コマンドが無効化コマンドでない場合、そのコマンドは生成コマンドである。ステップ５２において無効化コマンドが発行されたと判断される場合、制御は、ステップ５２から、バックグラウンドコピーのようなバックグラウンドＩ／Ｏ（入出力）動作が保留（サスペンド）されるステップ５４へ移行する。Ｒ１／Ｒ２対を無効化にする前に、最初に、すべてのバックグラウンドＩ／Ｏを保留にすることが有効である。他の実施形態では、ボリュームの無効化はバックグラウンドＩ／Ｏ（そしてＲ１／Ｒ２対に関連する他の動作）を自動的に終了させるので、ステップ５４は不要となり実行されない。
【００３３】
ステップ５４に続くのは、Ｒ１ボリュームに対応する記憶装置上のアロケーション（割付け）テーブルを修正するステップ５６である。アロケーションテーブルは、記憶装置のＲＤＦ構成に関する動的情報を含む。アロケーションテーブルは、論理装置識別子（例えば数字）および論理装置のそれぞれのミラー番号によって索引付けられた２次元の配列を含んでいてもよい。ある実施形態では、それぞれの装置が最大４個のミラーを持つこともある。他の実施形態では、４個を越えるミラーを採用する。アロケーションテーブルヘのエントリは、装置のためのミラーがローカルミラー、Ｒ１ボリューム、Ｒ２ボリューム、あるいはＢＣＶ（ビジネスコンティニュアンスボリューム）やＲＡＩＤ(Redundant Array
of Independant Disks)ミラーのような他のタイプのミラーかどうかを示す。
【００３４】
ステップ５６で、Ｒ１ボリュームを含んでいる記憶装置上のアロケーションテーブルは、Ｒ１ボリュームを削除するよう修正される。ステップ５６に続くステップ５８では、Ｒ２ボリュームを含む記憶装置上のアロケーションテーブルは、Ｒ２ボリュームを削除するよう修正される。ステップ５８に続くステップ６０では、以前に実行された操作の結果（例えば成功または失敗）が返される。ステップ６０が終わると処理は完了する。
【００３５】
ステップ５２で、無効化コマンドが発行されてない（したがって、生成コマンドが発行されている）と判断される場合、制御は、ステップ５２から、Ｒ１ボリュームまたはＲ２ボリュームが第１のサイトで生成されるステップ６２まで移行する。ある実施形態では、ホストは、ローカル記憶装置２４のような第１の記憶装置へマルチホップ／多重実行コマ
ンドを発行するが、その場合、第１のサイトは、ローカル記憶装置２４（すなわちコマンドを受け取る第１のサイト）であろう。ここに示された実施形態では、Ｒ１／Ｒ２対の生成が試行される第１のサイトは、ホスト２２に直接接続したローカル記憶装置２４である。第１サイトでの生成は、適切なアロケーションテーブルを修正することを含む。ステップ６２に続くテストステップ６４では、ステップ６２でのＲ１ボリュームまたはＲ２ボリュームの生成が成功したかどうかが判断される。成功でない場合、制御は、ステップ６４から、エラー通知をホスト２２に返すステップ６６まで移行する。ステップ６６が終わると処理は、完了する。
【００３６】
テストステップ６４で、ステップ６２でのＲ１ボリュームまたはＲ２ボリュームの生成が成功したと判断された場合は、ステップ６４から、制御は、場合に応じて、第２のサイトでＲ１ボリュームまたはＲ２ボリュームを生成するステップ６８へ移行する。第２のサイトでの生成は、適切なアロケーションテーブルを修正することを含む。第２のサイトは、コマンドを受け取る第２の記憶装置でもよい。ここに示された実施形態では、第２のサイトは、ローカル記憶装置２４を通してホスト２２からコマンドを受け取るリモート記憶装置２６である。
【００３７】
ステップ６８に続くテストステップ７０では、ステップ６８での生成が成功かどうかが判断される。テストステップ７０で、第２のサイトでの生成が成功しなかったと判断された場合には、ステップ７０から、制御は、生成された第１のサイトを無効化するステップ７２に移行する。ＲｌボリュームとＲ２ボリュームとは、第２のサイトでいずれか１個のボリュームの生成に失敗すると、第１のサイトで生成に成功したボリュームはステップ７２で無効化にされるように、対をなして生成されることに注意が必要である。ステップ７２の次のステップ７４では、上述のようにステップ６６でエラーを返したのと同様に、エラーがホスト２２に返される。ステップ７４が終わると、処理は完了する。
【００３８】
テストステップ７０で、ステップ６８での第２のサイトでのＲ１ボリュームまたはＲ２ボリュームの生成が成功したと判断された場合には、制御は、ステップ７０から、記憶装置２４と２６のそれぞれの無効トラック(invalid track)がセットされるステップ７５ま
で移行する。無効トラックは、Ｒ１ボリュームとＲ２ボリュームの間の相違を示すために使用される。Ｒ１ボリュームが初期データを含んでいる場合には、Ｒ１ボリュームのすべてのトラックは、Ｒ１データのすべてがＲ２データと一致しないことを示す無効(invalid)に設定され、この結果、Ｒ１ボリュームのすべてのトラックは、Ｒ１からＲ２へのコピ
ーが必要となる。Ｒ２ボリュームが、使用されるべき初期データを含んでいる場合、Ｒ２ボリュームのトラックはすべて無効にされ(invalidated)、また、シンク(Sync)コマンド
が、Ｒ１ボリュームを含んでいる記憶装置に送られて、Ｒ１ボリュームに対応するローカルミラーのトラックを無効にし、それによりＲ２からＲ１へのデータのバックグラウンドコピーを開始させる。ステップ７５に続きステップ７８では、Ｒ１ボリュームに対するノットレディ(not ready)インジケータがクリアされ、Ｒ１とＲ２との間のＲＤＦ動作を開
始できることを示す。ノットレディインジケータは、Ｒ１／Ｒ２リンクを指すのであって、必ずしもＲ１および／またはＲ２のホストからデータを受信する能力を指すものではないということは、注意を要する。データは、トラック以外のユニット内で構成でき、この場合、ここで開示された操作は、使用するトラック以外のいかなるユニット上でも実行されるであろうということに、注意を要する。
【００３９】
ステップ７８に続きステップ７９では、操作が成功したことを示す信号がホスト２２に返される。ステップ７９が終わると、処理は完了する。上述した無効トラックの設定と、デバイスノットレディ状態の設定および解除とは、設定が生成動作中およびそれ以降には適切な状態で維持されるという条件の下で、図２や上記の説明に示された順番と異なった順番でも実行できることに注意を要する。
【００４０】
ある実施形態においては、ボリュームの生成(create)と無効化(destroy)とを特別の順
序で行うことが有効である。例えば、まずＲ２ボリュームを生成し、続いてＲ１ボリュームを生成することは有効である。同様に、まずＲ１ボリュームを無効化し、次にＲ２ボリュームを無効化することも有効である。代わりに、前記ボリュームはどんな順番でも生成、無効化してもよいが、一方、動作は、Ｒ１ボリュームに対するノットレディインジケータをセットすることで制御され、そしてＲ１ボリュームに対するノットレディインジケータは、操作を実行するかどうかを制御する。このように、Ｒ１ボリュームおよびＲ２のボリュームはどんな順番で生成してもよいが、Ｒ１ボリュームに対するノットレディインジケータは、Ｒ１とＲ２の両方が生成されない限りそして生成されるまで、レディを表示するように設定されない。同様に、第１のステップとしてＲ１に対するノットレディ指標を設定することは、Ｒ１とＲ２を無効化する後続のステップがどのような順番にでも実行できるようにする。
【００４１】
ある実施形態においては、Ｒ１／Ｒ２対を生成するコマンドが、Ｒ１ボリュームとＲ２ボリュームの両方に使用される特別のボリュームを示すようにすることが有効である。すなわち、ホスト２２は、Ｒｌボリュームとしてローカル記憶装置２４から既存の論理装置を選択し、さらに、Ｒ２ボリュームとしてリモート記憶装置２６から既存の論理装置を選択することができる。代わりの実施形態では、Ｒ２ボリュームとして未使用のいかなる論理装置もリモート記憶装置２６に選択させることも可能である。また一方、システムコマンドがＲ２ボリュームのために特定のボリューム識別を望む場合には、記憶装置２４、２６および／またはホスト２２の１つにアプリケーションプログラムインタフェース（Application Program Interface：ＡＰＩ）を重ねて、Ｒ２ボリュームを選択することも可能
である。
【００４２】
さらに、新しく生成されたＲ１／Ｒ２対のための初期データがＲ２ボリューム上で見つかる場合があることに、注意を要する。例えば、リモート記憶装置２６がそこに接続されたホスト（不図示）が機能しない場合、ローカル記憶装置２４に接続しているホスト２２からシステムを再起動することが有効である。しかしながら、その場合、起動するための初期データは、Ｒ２ボリューム上（つまりリモート記憶装置２６上）にあってもよい。このようにして、起動時、初期データは、Ｒ２装置からＲ１装置にコピーされ、そののちホスト２２は、ローカル記憶装置２４にあるＲ１装置およびリモート記憶装置２６にあるＲ２装置について、通常のＲＤＦ動作を継続する。Ｒ２装置からＲ１装置への（あるいはＲ１装置からＲ２装置への）コピーは、バックグラウンドコピーにより行われてもよい。
【００４３】
図３を参照すると、フローチャート８０は、Ｒ１／Ｒ２対が初期化された後ではあるがバックグラウンドコピーの完了前のシステムの動作を示している。ホスト２２は、バックグラウンドコピーが完了していなくても、Ｒ１ボリュームに対する読出しおよび書込みを行うことに注意を要する。
【００４４】
処理は、Ｒ２ボリュームが初期データを含んでいるかどうかが判断される初期テストステップ８２から始まる。初期データを含んでいない場合には、次に、制御は、テストステップ８２から、Ｒ１がホスト２２によって要求された読出しおよび書込みに使用されるステップ８４まで進む。
【００４５】
テストステップ８２においてＲ２ボリュームが初期データを含むと判断された場合は、制御は、テストステップ８２から、書込まれたか読出されたトラックが無効かどうかの判断が行われるテストステップ８６に進む。無効トラックは、Ｒ２ボリュームにある初期データがＲ１ボリュームにまだコピーされていないことを示す。無効トラックの設定に関しては、図１に基づいてすでに上述した。このようにして、テストステップ８６において、
ホスト２２によって書込みあるいは読出しが実行されたトラックが無効であると判断された場合、制御は、ステップ８６から、Ｒ２ボリュームがＲＤＦにより読出しあるいは書込み操作のために使用されるステップ８８まで進む。ある状況では、全体ではなく一部のトラックのみがホストによって書込まれる場合があることに注意を要する。このようにして、Ｒ２が初期データを含む場合における無効トラックにとって、ホスト２２からのデータをＲ２ボリュームに送信することは有効である。ステップ８８の後、処理は完了する。一方、ステップ８６において、読出されあるいは書込まれたトラックが無効ではないと判断された場合には、制御は、テストステップ８６から、Ｒ１ボリュームが従来の方法で使用されるステップ８４まで進む。ステップ８４の後、処理は完了する。
【００４６】
図４を参照すると、このブロック図は、ローカル記憶装置２４のメモリ３７あるいはリモート記憶装置２６のメモリ３８を表わすグローバルメモリを示している。グローバルメモリは、上述したように、静的(static)構成(configuration)データ９２のためのメモリ
位置と、アロケーションテーブル（ＤＡＴ）のような動的(dynamic)構成データ９４のた
めのメモリ位置とを含む。静的構成データ９２は、工場あるいは技術者によってセットアップされる記憶装置用の構成情報を含む。静的構成データ９２は、グローバル半導体メモリに読み込まれるファイルで提供されるか、または半導体メモリの不揮発性部分として提供される。
【００４７】
動的構成データ９４は、静的構成データ９２から修正された対応するシステムの構成を表わす。したがって、例えば、静的構成データ９２は、Ｒ１／Ｒ２のＲＤＦ対を形成する特定のボリュームを示してもよく、一方、動的構成データ９４は、その特定のＲｌ／Ｒ２
ＲＤＦ対が引き続いて無効化されたことを示すことで、静的構成データ９２をオーバーライドする。動的構成データ９４は、ディスク上に格納されてさらに電子メモリに読み込まれてもよいし、および／または、不揮発性である電子メモリに格納されてもよい。ある実施形態では、動的構成データ９４は、静的構成データ９２をオーバーライドしてもよい。他の実施形態では、動的構成データ９４は、単に付加的なものであり、あるアイテムに対応した静的構成データ９２に何らエントリがない場合に使用されてもよい。
【００４８】
図５を参照すると、フローチャート１００は、特定の論理装置の構成の判定法を示している。論理装置に対するそれぞれの読出しあるいは書込みアクセスは、装置の構成についての知見を利用して、装置がＲ１／Ｒ２対の一部であるかどうかを判断することに、注意を要する。
【００４９】
処理は、動的構成データ９４に論理装置に対するエントリ入力があるかどうかが判断されるステップ１０２から始まる。エントリがない場合、制御は、ステップ１０２から、静的構成データ９２を調べて装置の構成を判断するステップ１０４に移行する。定義により静的構成データ９２は変化しないので、個々の論理装置は、静的構成データ９２の容易にアクセス可能であるローカルコピーを持つことができることに注意を要する。ステップ１０４の後、処理は完了する。
【００５０】
テストステップ１０２において、動的構成データ９４に論理装置に対するエントリがあると判断された場合、制御は、テストステップ１０２から、動的構成データ９４を用いて論理装置の構成を決定するステップ１０６に移行する。あるいは、最初に静的構成データ９２をチェックし、次に、オーバーライドするエントリが動的構成データ９４に存在するかどうかをチェックすることも可能であることに、注意を要する。
【００５１】
図６を参照すると、このブロック図は記憶装置１１０をより詳細に示している。記憶装置１１０は、複数のホストアダプタ（ＨＡ）１１２〜１１４、および複数のディスクアダプタ（ＤＡ）１１６〜１１８を含む。ディスクアダプタ１１６〜１１８のそれぞれは、複
数のディスク１２０〜１２２のうちに関連する１個に接続される。記憶装置１１０は、さらにグローバルメモリ１２４と、ＲＤＦアダプタ（ＲＡ）１２６と、ＲＡ１２６に対する外部接続部１２８とを含む。バス１３０は、ＨＡ１１２〜１１４、ＤＡ１１６〜１１８、グローバルメモリ１２４およびＲＡ１２６を接続する。ＨＡ１１２〜１１４のそれぞれは、ホスト（不図示）に接続される接続部を含む。
【００５２】
ＨＡ１１２〜１１４のうちの１個に接続された、ホストのうちの１個が実行するすべての読出しおよび書き込み操作に対し、ＨＡ１１２〜１１４のうちの対応する１個が、データの配置場所を決定する。例えば、記憶装置１１０がＲ１／Ｒ２対のローカルボリュームを含む場合、ホストからデータを受け取るＨＡ１１２〜１１４の特定の１個は、Ｒ１ボリュームにデータを送るためにディスクアダプタ１１６〜１１８の適切な１個にデータを送ることができ、別の記憶装置（不図示）上のＲ２ボリュームにデータを送信するＲＡ１２６へ適切にデータを送ることができる必要がある。さらに、バックグラウンドコピー操作に関して、ＤＡ１１６〜１１８は、データの送り手及び受け手を示す情報にアクセスする。したがって、例えば、Ｒ１／Ｒ２対が記憶装置１１０と別のリモート記憶装置（不図示）との間でセットアップされる場合、ＤＡ１１６〜１１８は、初期データを含むボリューム（Ｒ１またはＲ２）から他方のボリュームへのデータのバックグラウンドコピーに参加するだろう。そのような場合、ＤＡ１１６〜１１８は、どこにデータが行きべきか（つまり、どのボリュームが、Ｒ１／Ｒ２対のボリュームの１個に対応するか）を示す情報にアクセスする。同様に、例えば、ＲＡ１２６が、入力データを処理するためにボリュームの構成情報にアクセスすることは、有効である。
【００５３】
したがって、ＨＡ１１２〜１１４、ＤＡ１１６〜１１８およびＲＡ１２６が、記憶装置１１０上のボリュームのセットアップ構成を示す正確な情報にアクセスすることができることは、有効である。情報を得る１つの方法は、それぞれの読出しまたは書込み操作に対して、グローバルメモリ１２４から動的構成データ９４を読出すことであり、その時、もし照会された装置が動的構成データ９４の中に見つからない場合には、静的構成データ９２にアクセスすることである。しかしながら、すべてのＩ／Ｏ操作に対してグローバルメモリヘアクセスすることは、逆に記憶装置１１０の性能に悪い影響を与える。したがって、記憶装置１１０の装置構成を決定するより効率的なメカニズムが準備されている。
【００５４】
図７を説明すると、説明図１５０は、構成データを判断するために使用するグローバルメモリヘのアクセス回数を減少させるメカニズムを示している。レディバッファ１５２は、入出力（Ｉ／Ｏ）が実行されるごとにアクセスされるデータに相当する。レディバッファ１５２は、装置の状態および／またはシステムの状態のような、Ｉ／Ｏに関連する有効な情報を表示する。このようにして、レディバッファ１５２は、それぞれのＩ／Ｏ操作のためにアクセスされる。
【００５５】
レディバッファ１５２は、ある実施形態では、装置構成が変更されるごとにインクリメントされる１バイトデータのリビジョン（改訂）数フィールド１５４を含む。かくして、Ｉ／Ｏを実行する装置は、リビジョン数フィールド１５４を調べ、さらなる照会が必要かどうか決定することができる。
【００５６】
バイトの集合１５６は、リビジョン数フィールド１５４の変更に応じてアクセスされてもよい。バイトの集合１５６の特定のバイト１５８は、記憶装置に対する動的ＲＤＦ構成における変更を示すために使用できるだろう。このようにして、レディバッファ１５２およびバイトの集合１５６の組合せを、Ｉ／Ｏが実行されるごとにグローバルメモリ１２４へのアクセスを最小限にするために、使用することができる。
【００５７】
図８について説明すると、フローチャート１７０は、レディバッファ１５２およびバイ
トの集合１５６の使用に関して実行されるステップを示している。処理は、Ｉ／Ｏを実行する装置が、レディバッファのフィールド１５４が変化した（例えば、インクリメントされた）かどうかを判断する、ステップ１７２で始まる。ステップ１７２においてレディバッファのフィールドが変化しなかったと判断された場合、制御は、ステップ１７２からステップ１７４に移行し、ステップ１７４では、ＨＡ１１２〜１１４の１個、ＤＡ１１６〜１１８の１個、および／またはＲＡ１２６のような装置が、ローカルに保存されたデータを使用して、構成情報を判断する。つまり、以前に観測されたバージョンのリビジョン数フィールド１５４と等しいリビジョン数フィールド１５４は、ＲＤＦ構成にはなんらの変更がなかったことを示す。このようにして、制御は、ステップ１７２からステップ１７４に移行し、ステップ１７４では、Ｉ／Ｏを実行する装置は、特定のデータをどのように処理するかを決定するために、ローカルに保存された構成データのコピーを使用できる。ステップ１７４の後で、処理は完了する。
【００５８】
テストステップ１７２においてリビジョン数フィールド１５４が変化したと判断された場合は、制御は、ステップ１７２から、バイトの集合１５６がフェッチされるステップ１７６まで移行する。バイトの集合１５６は、例えばグローバルメモリ１２４の仲に、あるいは、不揮発性の電子メモリやディスクなどの他のメモリの中に、格納できる。
【００５９】
ステップ１７６に続くのはステップ１７８であり、テストステップ１７８では、バイトの集合１５６中のＲＤＦ構成変化に対応するバイト１５８が修正された（例えば、インクリメントされた）かどうかの判断がなされる。修正されていない場合には、前述のごとく、制御は、ステップ１７８から、構成データのローカルに保存されたコピーがＲＤＦ構成を判断するために使用されるステップ１７４に移行する。ステップ１７４の後で、処理は完了する。
【００６０】
テストステップ１７８においてＲＤＦ構成が変更されたと判断された場合、制御は、ステップ１７８から、グローバルメモリ１２４中の動的構成データ９４がアクセスされるステップ１８０まで移行する。ステップ１８０に続くステップ１８２では、構成データのローカルに保存されたコピーが、グローバルメモリ１２４からの新バージョンのデータにより更新される。ステップ１８２に続き、ステップ１７４では、構成データのローカルに保存されたバージョン（更新されたばかりのもの）が、ＲＤＦ構成を決定する装置により使用される。ステップ１７４の後で、処理は完了する。
【００６１】
ある実施形態では、アロケーションテーブルから定期的に動的構成データにアクセスし、各装置に対する記憶装置中の構成データのローカルコピーを更新するバックグラウンドメカニズムを含むことも可能である。かくして、各装置は、最初にＩ／Ｏを実行せずにこのバックグラウンドタスクで更新されてもよい。
【００６２】
システムのＲＤＦ構成を決定する場合、グローバルメモリヘのアクセスを制御するためにリビジョン番号を使用するためのここで述べたメカニズムは、ＢＣＶ（ビジネス・コンティニュアンス・ボリューム；Business Continuance Volume）構成のような他のシステ
ムパラメータにも同様に適用できることに注意を要する。ＢＣＶは、例えば、ホストアプリケーションとともに使用するよう構成された別の装置からのデータの一貫し同期したコピーを含むことができる。データのＢＣＶコピーは、他の装置に対して継続的なデータ操作をホストに実行させつつ、データコピーに作用する別のアプリケーションで独立して使用されてもよい。
【００６３】
図９について説明すると、フローチャート５０’は、図２のフローチャート５０に関して述べた実施形態の代替実施形態を示す。図２のフローチャート５０は、「生成」と「無効化」の２個のコマンドがあるシステムを示す。図９のフローチャート５０’に図示され
たシステムは、上述の「生成」と「無効化」のコマンドに加え、Ｒ１とＲ２をスワップ（交換）する３番目のコマンドを備える。Ｒ１とＲ２の入替えは、Ｒ１ボリュームをＲ２ボリュームにし、Ｒ２ボリュームをＲ１ボリュームにする単一のコマンドを使用して実行できる。これは、例えば、ローカル記憶装置に接続したホストを、対応するリモート記憶装置に接続された別のホストと交換する場合において有効である。コマンドはホストに備えられるようにしてもよい。さらに、別記するように、ホストは、マルチホップ／多重実行システムコマンドを出力してもよい。処理は、無効化コマンドが発行されたかどうかが判断されるステップ５２’で始まる。無効化コマンドが発行された場合は、制御は、ステップ５２’から、図２のフローチャート５０に関して上述したステップ５４に移行する。一方、ステップ５２’において無効化コマンドが発行されていないと判断された場合は、制御は、ステップ５２’から、生成コマンドが発行されたかどうかを判断するステップ５３に移行する。生成コマンドが発行されていた場合は、制御は、ステップ５３から、図２のフローチャート５０に関して上述したステップ６２に移行する。
【００６４】
テストステップ５３において生成コマンドが発行されていないと判断した場合、Ｒ１／Ｒ２のスワップコマンドが発行される。すなわち、３個のコマンドを有するシステムにおいて、消去のプロセスは、無効化するコマンドが発行されてないとステップ５２’において判断した場合、かつ、生成コマンドが発行されていないとステップ５３において判断した場合に、Ｒ１／Ｒ２のスワップコマンドが発行されたと規定する。あるいは、コードの特定の部分は、Ｒ１／Ｒ２のスワップコマンドかもしれない受信したコマンドに基づいて実行されてもよい。Ｒ１／Ｒ２のスワップコマンドに関し、制御は、ステップ５３から、Ｒ１に対してデバイスノットレディフラグ(device not ready flag)をセットするステッ
プ１９２まで移行する。Ｒ１に対してデバイスノットレディフラグを設定することは、Ｒ１／Ｒ２対に対するＲＤＦ操作を停止させる。ステップ１９２に続くのはステップ１９４であり、ステップ１９４では、Ｒ１ボリュームを含む記憶装置に対応するアロケーションテーブルヘのエントリ、および、Ｒ２ボリュームを含む記憶装置に対応するアロケーションテーブルヘのエントリが両方とも修正され、Ｒ１ボリュームがＲ２ボリュームになり、またその逆も起こる。ステップ１９４に続くのはステップ１９６であり、ここでは、デバイスノットレディビットは新しいＲ１装置のためにクリアされる。ステップ１９６においてＲ１ボリューム用のデバイスノットレディビットをクリアすることにより、ＲＤＦ操作は再開できる。しかしながら、ＲＤＦ操作が再開したとき、以前のＲ２ボリュームは今やＲ１ボリュームであり、また、以前のＲ１ボリュームはＲ２ボリュームである。ステップ１９６に続くステップ１９８では、Ｒ１とＲ２をスワップするコマンドに対応する操作の結果（例えば、成功または失敗）が、ホストに返される。ステップ１９８の後で、処理は完了する。
【００６５】
ここに開示された前記システムについては、ホスト２２は、スタンドアロンのコンピュータ装置、ネットワークの一部、別の記憶装置、ある程度の記憶能力を有するコンピュータ、および／または、ここに開示された機能性を備えるいかなる装置でもよいということに注意を要する。同様に、ここに開示されたシステムは、ローカル記憶装置２４をエミュレートするか、そうでなければ、ここに開示された機能を備えるよう構成された、別のコンピュータ装置、ネットワーク接続などを含む、ローカル記憶装置２４として使用されるすべての適切な装置で実施できる。
【図面の簡単な説明】
【００６６】
【図１】ここで説明するシステムに関連して使用されるホスト、ローカル記憶装置およびリモートデータ記憶装置の概念図である。
【図２】ここで説明するシステムの動作を示すフローチャートである。
【図３】ここで説明するシステムの読出しおよび書込み操作にのどのボリュームが使用されるかを決定する処理を示すフローチャートである。
【図４】ここで説明するシステムにおける記憶装置に対するグローバルメモリを示す図である。
【図５】ここで説明するシステムにおける装置のＲＤＦ構成の評価に関連して、静的構成データまたは動的構成データを使用するかどうか判定する階層を示すフローチャートである。
【図６】ここで説明するシステムに関連して使用される記憶装置とそのコンポーネントとを詳細に示す概念図である。
【図７】ここで説明するシステムに関連して使用されるレディバッファとバイトの集合とを示す図である。
【図８】図７に示したレディバッファとバイトの集合へのアクセスに関連して実行される工程を示すフローチャートである。
【図９】ここで説明するシステムの別の実施形態を示すフローチャートである。
【符号の説明】
【００６７】
２２    ホスト
２４    ローカル記憶装置
２６    リモート記憶装置
２８、１１２〜１１４    ホストアダプタ
３０、３２、１２６    ＲＤＦアダプタユニット
３３ａ〜３３ｃ、３４ａ〜３４ｃ、１２０〜１２２    ディスク
３５ａ〜３５ｃ、３６ａ〜３６ｃ、１１６〜１１８    ディスクアダプタユニット
９２    静的構成データ
９４    動的構成データ
１１０    記憶装置
１２４    グローバルメモリ
【図１】
2007172643.tif 000003
【図２】
2007172643.tif 000004
【図３】
2007172643.tif 000005
【図４】
2007172643.tif 000006
【図５】
2007172643.tif 000007
【図６】
2007172643.tif 000008
【図７】
2007172643.tif 000009
【図８】
2007172643.tif 000010
【図９】
2007172643.tif 000011