説明

装置特性の変化を識別する階層的な方法及び装置

【課題】RDF(リモートデータ機構)の構成の変更プロセスを自動化して、ホストがRDFの構成を修正できるようにする。
【解決手段】第1の記憶装置上の第1のボリュームと第2の記憶装置上のミラーリングされた第2のボリュームとの間の通信路を反転した後に、ミラーリングされたデータにアクセスする方法は、ミラーリングされたデータの同期化に先立ってそのデータへのアクセスを許すことと、ミラーリングされたデータの初期バージョンが第1のボリューム上にある場合に、第1のボリューム上のそのデータにアクセスすることと、初期バージョンが第2のボリューム上にあり、その初期バージョンが第2のボリュームから第1のボリュームにコピーされている場合に、第1のボリューム上のミラーリングされたデータにアクセスすることと、第2のボリューム上のミラーリングされたデータにアクセスすることと、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ記憶(ストレージ)装置に関し、特に記憶装置間の通信に関する。
【背景技術】
【0002】
ホストプロセッサシステムは、複数のホストインターフェースユニット(ホストアダプタ)、ディスクドライブおよびディスクインタフェースユニット(ディスクアダプタ)を含む記憶装置を使用して、データを格納し保存して取り出すことができる。このような記憶装置は、例えば、米国マサチューセッツ州ホプキントン(Hopkinton)のEMC社(EMC Corporation)によって提供されており、Yanaiらの米国特許第5,206,939号明細書(特許文献1)、Galtzurらの米国特許第5,778,394号明細書(特許文献2)、Vishlitzkyらの米国特許第5,845,147号明細書(特許文献3)、およびOfekの米国特許第5,857,208号明細書(特許文献4)に開示されている。
【0003】
ホストシステムは、ホストシステム上に設けられた複数のチャネルを介して、記憶装置にアクセスする。ホストシステムは、チャネルを通して記憶装置にデータおよびアクセス制御情報を与え、記憶装置もまた、チャネルを通してホストシステムにデータを提供する。ホストシステムは、記憶装置のディスクドライブを、直接、アドレス指定するのではなく、むしろホストシステムにとって複数の論理ディスクユニットとして見えるものに対して、アクセスする。論理ディスクユニットは、実際のディスクドライブに対応しても対応していなくてもよい。多数のホストシステムが1個の記憶装置ユニットにアクセスすることを可能にすることで、これらのホストシステムは、その記憶装置ユニットに格納されたデータを共有できる。
【0004】
ある状況では、1個の記憶装置から別の記憶装置にデータをコピーすることが望ましい場合がある。例えば、ホストが第1の記憶装置にデータを書き込む場合に、第1の記憶装置が動作不能になるような災害が発生した場合に、そのホスト(あるいは別のホスト)が第2の記憶装置のデータを使用して動作を再開できるように、異なる場所に設けられた第2の記憶装置にそのデータをコピーすることが望ましい。このような能力は、例えば、米国マサチューセッツ州ホプキントンのEMC社によって提供されるリモートデータ機構(remote data facility:RDF、以下RDFと呼ぶ)製品によって実現できる。RDFでは、ユーザは、第1の記憶装置をマスタ記憶装置とし、第2の記憶装置をスレーブ記憶装置として示してもよい。RDFの他の実現例は、ローカル記憶装置とリモート記憶装置との間のピア・ツー・ピア関係を備えていてもよい。ホストは、ローカル記憶装置に、直接、作用するが、ローカル記憶装置に対してなされたデータ変更のすべては、RDFを使用してリモート記憶装置へ自動的に出力される。ローカル記憶装置とリモート記憶装置とは、エスコンリンク(ESCON link)あるいはファイバチャネルリンク(Fiber Channel link)のようなデータリンクによって接続することができる。このRDF機能は、それぞれの記憶装置に備えられたRDFアダプタ(RA)でさらに有効に活用ができる。
【特許文献1】米国特許第5,206,939号明細書
【特許文献2】米国特許第5,778,394号明細書
【特許文献3】米国特許第5,845,147号明細書
【特許文献4】米国特許第5,857,208号明細書
【発明の開示】
【発明が解決しようとする課題】
【0005】
ある状況では、RDFの構成システムに修正を加えた方が好ましい場合がある。しかし多くの場合、このような修正には、特殊なソフトウェアを取り扱える熟練した専門家やローカル記憶装置への標準でない接続を必要とする。RDF構成の変更プロセスを自動化して、ホストがRDFの構成を修正できるようにすることが望ましい。さらに、RDF構成中の個々の装置が動的な構成情報にアクセスする必要がある場合に、RDF構成を動的に変更することが記憶装置の動作に影響を与えないことが望ましい。
【課題を解決するための手段】
【0006】
この発明によれば、第1の記憶装置上の第1のボリュームと第2の記憶装置上のミラーリングされた第2のボリュームとの間の通信路を反転した後に、ミラーリングされたデータにアクセスする方法は、であって、第1のボリュームと第2のボリュームの間でミラーリングされたデータを同期化することに先立ってミラーリングされたデータへのアクセスを許すことと、ミラーリングされたデータの初期バージョンが第1のボリューム上に用意されている場合に、第1のボリューム上のミラーリングされたデータにアクセスすることと、ミラーリングされたデータの初期バージョンが第2のボリューム上に用意され、かつミラーリングされたデータの初期バージョンが第2のボリュームから第1のボリュームにコピーされている場合に、第1のボリューム上のミラーリングされたデータにアクセスすることと、ミラーリングされたデータの初期バージョンが第2のボリューム上に用意され、かつミラーリングされたデータの初期バージョンが第2のボリュームから第1のボリュームにコピーされている場合に、第2のボリューム上のミラーリングされたデータにアクセスすることと、を有する。
【0007】
この発明によれば、コンピュータ記憶媒体内に格納され、第1の記憶装置上の第1のボリュームと第2の記憶装置上のミラーリングされた第2のボリュームとの間の通信路を反転した後に、ミラーリングされたデータにアクセスするコンピュータソフトウェアは、第1のボリュームと第2のボリュームの間でミラーリングされたデータを同期化することに先立ってミラーリングされたデータへのアクセスを許す実行可能なコードと、ミラーリングされたデータの初期バージョンが第1のボリューム上に用意されている場合に、第1のボリューム上のミラーリングされたデータにアクセスする実行可能なコードと、ミラーリングされたデータの初期バージョンが第2のボリューム上に用意され、かつミラーリングされたデータの初期バージョンが第2のボリュームから第1のボリュームにコピーされている場合に、第1のボリューム上のミラーリングされたデータにアクセスする実行可能なコードと、ミラーリングされたデータの初期バージョンが第2のボリューム上に用意され、かつミラーリングされたデータの初期バージョンが第2のボリュームから第1のボリュームにコピーされている場合に、第2のボリューム上のミラーリングされたデータにアクセスする実行可能なコードと、を有する。
【0008】
この発明によれば、記憶装置は、グローバルメモリと、グローバルメモリに接続された複数のホストインタフェースユニットと、グローバルメモリに接続された複数のディスクインタフェースユニットと、複数のディスクインタフェースユニットに接続された複数のディスクドライブと、グローバルメモリに接続された少なくとも1つのリモートアダプタユニットと、記憶装置内で実行されるコンピュータプログラムであって、記憶装置の第1のボリューム上のミラーリングされたデータへの、第1のボリュームと記憶装置に接続された別体の他の記憶装置の第2のボリュームとの間でミラーリングされたデータを同期化することに先立つアクセスを許可する実行可能なコードと、ミラーリングされたデータの初期バージョンが第1のボリューム上に用意されている場合に、第1のボリューム上のミラーリングされたデータにアクセスする実行可能なコードと、ミラーリングされたデータの初期バージョンが第2のボリューム上に用意され、かつミラーリングされたデータの初期バージョンが第2のボリュームから第1のボリュームにコピーされている場合に、第1のボリューム上のミラーリングされたデータにアクセスする実行可能なコードと、ミラーリングされたデータの初期バージョンが第2のボリューム上に用意され、かつミラーリングされたデータの初期バージョンが第2のボリュームから第1のボリュームにコピーされている場合に、第2のボリューム上のミラーリングされたデータにアクセスする実行可能なコードと、を有するコンピュータプログラムと、を備える。
【0009】
この発明によれば、第1および第2の記憶装置の間の通信路を動的に確立することは、第1の記憶装置上のソースボリュームヘの接続を確立し、ソース(送り手)ボリュームは通信路上にデータを送信する準備がまだできていないこと(ノットレディ状態)を示すことと、ソースボリュームへの接続の確立の成功後に、第2の記憶装置上のデスティネーション(受け手)ボリュームへの接続を確立し、デスティネーションボリュームがソースボリュームからのデータを受け入れて、デスティネーションボリュームとソースボリュームのうちの一方のどの部分も有効なデータのコピーを含んでいないことを最初に示すことと、ソースボリュームおよびデスティネーションボリュームへの接続の確立の成功後、ソースボリュームは通信路上でデータを送信する準備ができていること(レディ状態)を示すことと、を含む。第1および第2の記憶装置の間の通信路を動的に確立することは、また、ソースボリュームおよびデスティネーションボリュームの少なくとも1個を生成することを含んでもよい。ソースボリュームヘの接続の確立は、第1の記憶装置に関する構成情報を含んでいるテーブルを修正することを含んでいてもよい。デスティネーションボリュームヘの接続の確立は、第2の記憶装置に関する構成情報を含んでいるテーブルを修正することを含んでいてもよい。第1および第2の記憶装置の間の通信路を動的に確立することは、デスティネーションボリュームヘの接続の確立が失敗した後に、ソースボリュームヘの接続を無効化(destroy)することをさらに含んでいてもよく、その場合には、エラーが返されてもよい。デスティネーションボリュームの部分は有効なデータを含んでいないことが最初に示されてもよく、その場合は、第1および第2の記憶装置の間の通信路を動的に確立することは、ソースボリュームが通信路上にデータを送信する準備ができたことを示した後、ソースボリュームからデスティネーションボリュームにデータをコピーするバックグラウンドコピー操作を開始することをさらに含んでもよい。ソースボリュームの部分は有効なデータを含んでいないことが最初に示されてもよく、その場合、第1および第2の記憶装置の間の通信路を動的に確立することは、ソースボリュームが通信路上でデータを送信する準備ができたことを示した後に、デスティネーションボリュームからソースボリュームにデータをコピーするバックグラウンドコピー操作を開始することをさらに含んでもよい。ホストは、ソースボリュームの特定の部分に対してI/O操作を実行してもよく、その場合、第1および第2の記憶装置の間の通信路を動的に確立することは、無効データ(invalid data)を含むと示された特定の部分に応答して、I/O操作を完了する前に、その特定の部分に対応するデータをデスティネーションボリュームからソースボリュームにコピーすることをさらに含んでもよい。
【0010】
さらに、この発明によれば、第1および第2の記憶装置の間の通信路を動的に確立することは、第1の記憶装置上のデスティネーションボリュームヘの接続を確立することと、デスティネーションボリュームへの接続の確立の成功後に、第2の記憶装置上のソースボリュームへの接続を確立し、ソースボリュームは通信路上にデータを送信する準備がまだできていないことを示し、デスティネーションボリュームがソースボリュームからのデータを受け入れて、デスティネーションボリュームとソースボリュームのうちの一方のどの部分も有効なデータのコピーを含んでいないことを最初に示すことと、ソースボリュームおよびデスティネーションボリュームへの接続の確立の成功後、ソースボリュームは通信路上でデータを送信する準備ができていることを示すことと、を含む。第1および第2の記憶装置の間の通信路を動的に確立することは、ソースボリュームおよびデスティネーションボリュームの少なくとも1個を生成することをさらに含んでもよい。デスティネーションボリュームヘの接続の確立は、第1の記憶装置に関する構成情報を含んでいるテーブルを修正することを含んでもよい。ソースボリュームヘの接続の確立は、第2の記憶装置に関する構成情報を含んでいるテーブルを修正することを含んでもよい。第1および第2の記憶装置の間の通信路を動的に確立することは、ソースボリュームヘの接続の確立が失敗した後に、デスティネーションボリュームヘの接続を無効化することをさらに含んでもよく、その場合には、エラー表示が返されてもよい。デスティネーションボリュームの部分は有効なデータを含んでいないことが最初に示されてもよい。第1および第2の記憶装置の間の通信路を動的に確立することは、ソースボリュームが通信路上でデータを送信する準備ができたことを示した後、ソースボリュームからデスティネーションボリュームにデータをコピーするバックグラウンドコピー操作を開始することをさらに含んでいてもよい。ソースボリュームの部分は有効なデータを含んでいないことが最初に示されてもよい。第1および第2の記憶装置の間の通信路を動的に確立することは、ソースボリュームが通信路上でデータを送信する準備ができたことを示した後に、デスティネーションボリュームからソースボリュームにデータをコピーするバックグラウンドコピー操作を開始することをさらに含んでいてもよい。第1および第2の記憶装置の間の通信路を動的に確立することは、ソースボリュームの特定の部分に対してI/O操作を実行するホストをさらに含んでいてもよい。第1および第2の記憶装置の間の通信路を動的に確立することは、無効データを含むと示された特定の部分に応答して、I/O操作を完了する前に、その特定の部分に対応するデータをデスティネーションボリュームからソースボリュームにコピーすることをさらに含んでいてもよい。
【0011】
さらに、この発明によれば、第1および第2の記憶装置の間の通信路を確立するコンピュータプログラム製品は、第1の記憶装置上のソースボリュームヘの接続を確立し、ソースボリュームは通信路上でデータを送信する準備がまだできていないことを示す、実行可能なコードと、ソースボリュームヘの接続の確立の成功後に、第2の記憶装置上のデスティネーションボリュームへの接続を確立し、デスティネーションボリュームがソースボリュームからのデータを受け入れて、デスティネーションボリュームとソースボリュームのうちの一方のどの部分も有効なデータのコピーを含んでいないことを最初に示す、実行可能なコードと、ソースボリュームおよびデスティネーションボリュームへの接続の確立の成功後、ソースボリュームは通信路上でデータを送信する準備ができたことを示す、実行可能なコードと、を含む。コンピュータプログラム製品は、ソースボリュームおよびデスティネーションボリュームの少なくとも1個を生成する実行可能なコードをさらに含んでいてもよい。ソースボリュームヘの接続を確立する実行可能なコードは、ソースボリュームヘの接続を確立する実行可能なコードは、第1の記憶装置に関する構成情報を含んでいるテーブルを修正してもよい。デスティネーションボリュームへの接続を確立する実行可能なコードは、第2の記憶装置に関する構成情報を含んでいるテーブルを修正してもよい。コンピュータプログラム製品は、デスティネーションボリュームヘの接続の確立が失敗した後にソースボリュームヘの接続を無効化する実行可能なコードをさらに含んでいてもよく、その場合、エラー表示が返されてもよい。コンピュータプログラム製品は、有効なデータを含んでいないものとしてソースボリュームの部分が最初に示されるようにする実行可能なコードをさらに含んでいてもよい。コンピュータプログラム製品は、ソースボリュームが通信路上でデータを送信する準備ができたことを示した後に、デスティネーションボリュームからソースボリュームにデータをコピーするバックグラウンドコピー操作を開始する実行可能なコードをさらに含んでいてもよい。コンピュータプログラム製品は、無効データを含むと表示された要求部分に応答してI/O操作を完了する前に、要求部分に対応するデータをデスティネーションボリュームからソースボリュームにコピーする実行可能なコードをさらに含んでいてもよい。
【0012】
さらに、この発明によれば、第1および第2の記憶装置の間の通信路を動的に確立するコンピュータプログラム製品は、第1の記憶装置上のデスティネーションボリュームヘの接続を確立する実行可能なコードと、デスティネーションボリュームへの接続の確立の成功後に、第2の記憶装置上のソースボリュームヘの接続を確立し、ソースボリュームが通信路上でデータを送信する準備がまだできていないことを示し、デスティネーションボリュームがソースボリュームからのデータを受け入れて、デスティネーションボリュームとソースボリュームのうちの一方のどの部分も有効なデータのコピーを含んでいないことを最初に示する実行可能なコードと、ソースボリュームおよびデスティネーションボリュームへの接続の確立の成功後、ソースボリュームは通信路上でデータを送信する準備ができたことを表示する実行可能なコードと、を含む。コンピュータプログラム製品は、ソースボリュームおよびデスティネーションボリュームの少なくとも1個を生成する実行可能なコードをさらに含んでもよい。ソースボリュームヘの接続を確立する実行可能なコードは、第1の記憶装置に関する構成情報を含んでいるテーブルを修正してもよい。デスティネーションボリュームヘの接続を確立する実行可能なコードは、第2の記憶装置に関する構成情報を含んでいるテーブルを修正してもよい。コンピュータプログラム製品は、ソースボリュームヘの接続の確立が失敗した後に、デスティネーションボリュームヘの接続を無効化する実行可能なコードをさらに含んでいてもよく、その場合は、エラー表示が返されてもよい。
【0013】
この発明によれば、第1の記億装置上の第1のボリュームと第2の記憶装置上の第2のボリュームとの間の通信路を反転することは、記憶装置の他のボリュームの動作を維持しつつ第1および第2のボリュームの間の通信を保留(サスペンド)にすることと、第1のボリュームを無効化することなく第1のボリュームをソースボリュームからデスティネーションボリュームに変更することと、第2のボリュームを無効化することなく第2のボリュームをデスティネーションボリュームからソースボリュームに変更することと、第1および第2のボリュームの間の通信を再開することと、を含む。第1のボリュームをソースボリュームからデスティネーションボリュームへ変更することは、第1の記憶装置に関するテーブルを修正することを含んでいてもよい。第2のボリュームをソースボリュームからデスティネーションボリュームへ変更することは、第2の記憶装置に関するテーブルを修正することを含んでいてもよい。通信を保留にすることは、第1のボリュームを準備できていない状態に設定することを含んでいてもよい。通信を再開することは、第2のボリュームを準備できた状態に設定することを含んでいてもよい。第1の記億装置上の第1のボリュームと第2の記憶装置上の第2のボリュームとの間の通信路を反転することは、通信路の反転の成功を示す結果を返すことをさらに含んでもよい。
【0014】
さらに、この発明によれば、記憶装置上のボリュームを管理することは、第1の記憶装置上の第1のボリュームと第2の記憶装置上の第2のボリュームとの間の通信路の反転を要求するコマンドを受信することと、記憶装置の他のボリュームの動作を維持しつつ第1および第2のボリュームの間の通信を保留にすることと、第1のボリュームを無効化することなく第1のボリュームをソースボリュームからデスティネーションボリュームに変更することと、第2のボリュームを無効化することなく第2のボリュームをデスティネーションボリュームからソースボリュームに変更することと、第1および第2のボリュームの間の通信を再開することと、を含む。コマンドは、第1および第2の記憶装置上で動作が実行される単一のマルチホップ多重実行コマンドであってもよい。第1のボリュームをソースボリュームからデスティネーションボリュームへ変更することは、第1の記憶装置に関するテーブルを修正することを含んでもよい。第2のボリュームをソースボリュームからデスティネーションボリュームへ変更することは、第2の記憶装置に関するテーブルを修正することを含んでもよい。通信を保留にすることは、第1のボリュームを準備できていない状態に設定することを含んでもよい。通信を再開することは、第2のボリュームを準備できた状態に設定することを含んでもよい。記憶装置上のボリュームを管理することは、通信路の反転の成功を示す結果を返すことをさらに含んでもよい。
【0015】
さらに、本発明によれば、第1の記億装置上の第1のボリュームと第2の記憶装置上の第2のボリュームとの間の通信路を反転させるコンピュータプログラム製品は、記憶装置の他のボリュームの動作を維持しながら第1および第2のボリュームの間の通信を保留にする実行可能なコードと、第1のボリュームを無効化することなく第1のボリュームをソースボリュームからデスティネーションボリュームに変更する実行可能なコードと、第2のボリュームを無効化することなく第2のボリュームをデスティネーションボリュームからソースボリュームに変更する実行可能なコードと、第1および第2のボリュームの間の通信を再開する実行可能なコードと、を含む。ソースボリュームからデスティネーションボリュームへ第1のボリュームを変更する実行可能なコードは、第1の記憶装置に関するテーブルを修正してもよい。ソースボリュームからデスティネーションボリュームへ第2のボリュームを変更する実行可能なコードは、第2の記憶装置に関するテーブルを修正してもよい。通信を保留にする実行可能なコードは、第1のボリュームを準備できていない状態に設定してもよい。通信を再開する実行可能なコードは、第2のボリュームを準備できた状態に設定してもよい。第1の記億装置上の第1のボリュームと第2の記憶装置上の第2のボリュームとの間の通信路を反転させるコンピュータプログラム製品は、また、通信路の反転の成功を示す結果を返す実行可能なコードを含んでもよい。第1の記憶装置上の第1のボリュームと第2の記憶装置上の第2のボリュームとの間の通信路を反転させるコンピュータプログラム製品は、また、通信路の反転の成功を示す結果を返す実行可能なコードを含んでよい。
【0016】
この発明によれば、装置特性の決定は、第1のグローバルアクセス可能な値を得ることと、第1のグローバルアクセス可能な値が保存された第1の値に対応する場合に、比較的高速なメモリから装置特性データを得ることと、第1のグローバルアクセス可能な値が保存された第1の値に対応しない場合に、第2のグローバルアクセス可能な値を得ることと、第2のグローバルアクセス可能な値が保存された第2の値に対応する場合に、比較的高速なメモリから装置特性データを得ることと、第2のグローバルアクセス可能な値が保存された第2の値に対応しない場合に、比較的低速なメモリから装置特性データを得て、比較的高速なメモリ、保存された第1の値、および保存された第2の値を更新することと、を含む。第1のグローバルアクセス可能な値は装置のI/O情報を含んでいてもよい。グローバルアクセス可能な値は、複数のプロセッサにとってアクセス可能なグローバルメモリに保存されていてもよい。比較的低速なメモリは、複数のプロセッサにとってアクセス可能なグローバルメモリであってもよい。比較的高速なメモリは、第1および第2の保存された値にアクセスするプロセッサに対してローカルであってもよい。第2の保存された値は、リモートデータ通信リンク中で装置がデータに対してソースであるかデスティネーションであるかを示してもよい。
【0017】
さらに、この発明によれば、装置へのアクセスは、装置にどのようにアクセスするかを示すステータス情報を得ることと、装置の構成が変化していたかどうかを判定するために、ステータス情報の少なくとも一部分を検査することと、装置の構成が変化していなかった場合に、比較的高速なメモリにアクセスし保存された構成データ(コンフィギュレーションデータ)を参照することと、装置の構成が変化していた場合に、比較的低速なメモリにアクセスし新規な構成情報を参照し、新規な構成情報によって保存された構成データを更新することと、を含む。比較的低速なメモリは、複数のプロセッサにとってアクセス可能なグローバルメモリであってもよい。比較的高速なメモリは、その高速なメモリにアクセスするプロセッサに対してローカルであってもよい。保存された構成データは、リモートデータ通信リンク中で装置がデータに対してソースであるかデスティネーションであるかを示してもよい。ステータス情報の少なくとも一部分を検査することは、ステータス情報のその部分が第1の保存された値に等しいかどうかを判定することを含んでよい。装置へのアクセスは、また、ステータス情報のその部分が第1の保存された値に等しくない場合に、付加的なステータス情報を得て、付加的なステータス情報の部分が第2の保存された値に等しいかどうかを判定することをさらに含んでもよい。装置へのアクセスは、また、保存された構成データを更新した後、第1および第2の保存された値を更新することを含んでもよい。
【0018】
さらに、この発明によれば、装置特性を決定するコンピュータプログラム製品は、第1のグローバルアクセス可能な値を得る実行可能なコードと、第1のグローバルアクセス可能な値が保存された第1の値に対応する場合に、比較的高速なメモリから装置特性データを得る実行可能なコードと、第1のグローバルアクセス可能な値が保存された第1の値に対応しない場合に、第2のグローバルアクセス可能な値を得る実行可能なコードと、第2のグローバルアクセス可能な値が保存された第2の値に対応する場合に、比較的高速なメモリから装置特性データを得る実行可能なコードと、第2のグローバルアクセス可能な値が保存された第2の値に対応しない場合に、比較的低速なメモリから装置特性データを得て、比較的高速なメモリ、保存された第1の値、および保存された第2の値を更新する実行可能なコードと、を含む。第1のグローバルアクセス可能な値は、装置のI/O情報を含んでいてもよい。第2の保存された値は、リモートデータ通信リンク中で装置がデータに対してソースであるかデスティネーションであるかを示してもよい。
【0019】
さらに、この発明によれば、装置にアクセスするコンピュータプログラム製品は、装置にどのようにアクセスするかを示すステータス情報を得る実行可能なコードと、装置の構成が変化していたかどうかを判定するために、ステータス情報の少なくとも一部分を検査する実行可能なコードと、装置の構成が変化していなかった場合に、比較的高速なメモリにアクセスし保存された構成データを参照する実行可能なコードと、装置の構成が変化していた場合に、比較的低速なメモリにアクセスし新規な構成情報を参照し、新規な構成情報によって保存された構成データを更新する実行可能なコードと、を含む。保存された構成データは、リモートデータ通信リンク中で装置がデータに対してソースであるかデスティネーションであるかを示してもよい。ステータス情報の少なくとも一部分を検査する実行可能なコードは、ステータス情報のその部分が第1の保存された値に等しいかどうかを判定する実行可能なコードを含んでもよい。装置にアクセスするコンピュータプログラム製品は、また、ステータス情報のその部分が第1の保存された値に等しくない場合に、付加的なステータス情報を得て、付加的なステータス情報の部分が第2の保存された値に等しいかどうか判定する実行可能なコードを含んでいてもよい。装置にアクセスするコンピュータプログラム製品は、また、保存された構成データを更新した後、第1および第2の保存された値を更新する実行可能なコードを含んでいてもよい。
【0020】
さらに、この発明によれば、装置特性を決定する機構は、第1のグローバルアクセス可能な値を得る手段と、第1のグローバルアクセス可能な値が保存された第1の値に対応する場合に、比較的高速なメモリから装置特性データを得る手段と、第1のグローバルアクセス可能な値が保存された第1の値に対応しない場合に、第2のグローバルアクセス可能な値を得る手段と、第2のグローバルアクセス可能な値が保存された第2の値に対応する場合に、比較的高速なメモリから装置特性データを得る手段と、第2のグローバルアクセス可能な値が保存された第2の値に対応しない場合に、比較的低速なメモリから装置特性データを得て、比較的高速なメモリ、保存された第1の値、および保存された第2の値を更新する手段と、を含む。第1のグローバルアクセス可能な値は装置のI/O情報を含んでもよい。グローバルアクセス可能な値は、複数のプロセッサにとってアクセス可能なグローバルメモリに保存されてもよい。比較的低速なメモリは、複数のプロセッサにとってアクセス可能なグローバルメモリであってもよい。比較的高速なメモリは、第1および第2の保存された値にアクセスするプロセッサに対してローカルであってもよい。第2の保存された値は、リモートデータ通信リンク中で装置がデータに対してソースであるかデスティネーションであるかを示してもよい。
【0021】
さらに、この発明によれば、装置にアクセスする機構は、装置にどのようにアクセスするかを示すステータス情報を得る手段と、装置の構成が変化していたかどうかを判定するために、ステータス情報の少なくとも一部分を検査する手段と、装置の構成が変化していなかった場合に、比較的高速なメモリにアクセスし保存された構成データを参照する手段と、装置の構成が変化していた場合に、比較的低速なメモリにアクセスし新規な構成情報を参照し、新規な構成情報によって保存された構成データを更新する手段と、含む。比較的低速なメモリは、複数のプロセッサにとってアクセス可能なグローバルメモリであってもよい。比較的高速なメモリは、高速なメモリにアクセスするプロセッサに対してローカルであってもよい。保存された構成データは、リモートデータ通信リンク中で装置がデータに対してソースであるかデスティネーションであるかを示してもよい。ステータス情報の少なくとも一部分を検査する手段は、ステータス情報のその部分が第1の保存された値に等しいかどうかを判定する手段を含んでいてもよい。機構は、ステータス情報のその部分が第1の保存された値に等しくない場合に、付加的なステータス情報を得て、付加的なステータス情報の部分が第2の保存された値に等しいかどうかを決定する手段をさらに含んでいてもよい。機構は、保存された構成データを更新した後、第1および第2の保存された値を更新する手段をさらに含んでいてもよい。
【発明を実施するための最良の形態】
【0022】
次に、図面を参照して本発明の実施の形態を説明する。
【0023】
図1を参照すると、ブロック図20は、ホスト22とローカル記憶装置24とリモート記憶装置26との関係を示す。ホスト22は、ホスト22とローカル記憶装置24の間のインタフェース機能を提供するホストアダプタ(HA)28によって、ローカル記憶装置24からのデータの読出し及びローカル記憶装置24へのデータの書込みを行う。リモート記憶装置26上のデータをローカル記憶装置24上のデータと同一にするために、ローカル記憶装置24からのデータは、RDFリンク29を介してリモート記憶装置26にコピーされる。ローカル記憶装置24からリモート記憶装置26へのデータの転送に時間遅延があり得るので、リモート記憶装置26は、ある時点では、ローカル記憶装置24上のデータと同一でないデータを含むことがあることは注意を要する。データ記憶装置間、あるいはEMC杜のSymmetrixTM(シンメトリックス(商標名))データ記憶システムのようなシステムの間の通信は、例えば、EMC社から提供されるRDF製品を使用して容易に実現できる。
【0024】
ローカル記憶装置24は、RDFアダプタユニット(RA)30を含み、また、リモート記憶装置26はRA32を含む。RA30、32は、RDFリンク29に接続されており、ホストアダプタ28に類似しているが、記憶装置24、26の間でデータを転送するために使用される。RA30、32に関して使用されるソフトウェアについては、以下に詳細に述べる。
【0025】
記憶装置24、26は、それぞれ1あるいはそれ以上のディスクを含んでおり、おのおののディスクは、記憶装置24,26のそれぞれに格納されたデータの異なる部分を含んでいる。図1は、記憶装置24が複数のディスク33a、33b、33cを含み、記憶装置26が複数のディスク34a、34c、34bを含んでいることを示している。。ここで説明したRDF機能を適用して、ローカル記憶装置24のディスク33a〜33cの少なくとも一部分のデータが、RDFを使用して、リモート記憶装置26のディスク34a〜34cの少なくとも一部分にコピーされる。記憶装置24、26の他のデータは、記憶装置24、26の間ではコピーしないようにすることが可能で、その場合には、それらのデータは同一にはならない。
【0026】
それぞれのディスク33a〜33cは、ディスク33a〜33cの対応する1つにデータを出力し、ディスク33a〜33cの対応する1つからデータを受信するディスクアダプタユニット(DA)35a、35b、35cに接続している。同様に、リモート記憶装置26の複数のDA36a、36b、36cは、ディスク34a〜34cの対応する1つにデータを供給するために使用され、ディスク34a〜34cの対応する1つからデータを受信する。データ伝送路は、ローカル記憶装置24のDA35a〜35c、HA28およびRA30の間に存在する。同様に、データ伝送路は、リモート記憶装置のDA36a〜36cおよびRA32の間に存在する。
【0027】
ローカル記憶装置24は、また、DA35a〜35c、HA28およびRA30の間でデータが転送されるのを促進するグローバル(大域)メモリ37を含む。メモリ37は、システムコールからのパラメータと、DA35a〜35c、HA28およびRA30うちの1または2以上のもので実行されるべきタスクと、ディスク33a〜33cの1または2個以上からフェッチされたデータのためのキャッシュとを含んでもよい。同様に、リモート記憶装置26は、システムコールからのパラメータと、DA36a〜36cおよびRA32のうちの1または2個以上で実行されるべきタスクと、ディスク34a〜34cのうちの1または2個以上からフェッチされたデータのためのキャッシュとを含んでもよいグローバルメモリ38を有する。メモリ37、38の使用については、以下により詳細に説明する。
【0028】
ディスク33a〜33cに対応するローカル記憶装置24中の記憶空間は、複数のボリュームや論理装置へ細分化される。論理装置は、ディスク33a〜33cの物理記憶空間に一致していても一致していなくてもよい。これにより、例えば、ディスク33aが複数の論理装置を含んでいてもよいし、あるいは、単一の論理装置がディスク33a、33bの両方にまたがっていてもよい。同様に、ディスク34a〜34cを備えるリモート記憶装置26の記憶空間は、複数のボリュームまたは論理装置へ細分化されてもよく、それぞれの論理装置は、ディスク34a〜34cの1または2個以上に対応していても対応していなくてもよい。
【0029】
ローカル記憶装置24の部分とリモート記憶装置26の部分との間のRDFマッピングを設定することは、ローカル記憶装置24上の論理装置に対するリモートミラーであるリモート記憶装置26上の論理装置をセットアップすることを含む。ホスト22は、ローカル記憶装置24上の論理装置に対してデータの読出しと書込みを行う。RDFマッピングにより、RA30、32およびRDFリンク29を使用して、ローカル記憶装置24からリモート記憶装置26へ修正されたデータが転送される。定常状態の動作では、リモート記憶装置26上の論理装置は、ローカル記憶装置24上の論理装置のデータと同一のデータを含む。ホスト22によってアクセスされるローカル記憶装置24上の論理装置は、「R1ボリューム」(あるいは単に「R1」)と呼ばれ、一方、R1ボリューム上のデータのコピーを含むリモート記憶装置26上の論理装置は、「R2ボリューム」(あるいは単に「R2」)と呼ばれる。このようにして、ホストは、R1ボリュームに対してデータの読出しおよび書込みを行い、RDFは、R1ボリュームからR2ボリュームへのデータの自動コピーと更新とを処理する。
【0030】
ある状況では、ホスト22がシステムの動作中にRDFボリュームの生成(create)と無効化(destroy)とを実行できるようにすることが、有益である。RDFボリュームは、R1/R2の対が無効化されまたはR1/R2の対が生成されるように、対で生成されてあるいは無効化されてもよいことには、注意が必要である。R1/R2対の生成または無効化は、ホスト22によって起動される。ホストは、データ記憶装置に、マルチホップ(multihop)/多重実行(multiexecute)システムコマンドを送信する。マルチホップ/多重実行システムコマンドは、多数の記憶装置に送られそれらの多数の記憶装置が実行すべき動作を示す、単一のシステムコマンドである。このコマンドは、ホストコンピュータが、他のデータ記憶装置のレイヤを通して、間接的に1または2個以上のデータ記憶装置にリモートシステムコールを発行することを可能にする。このコマンドは、1または2個以上のいずれかのデータ記憶装置にそのコマンドを実行することを示してもよい。例えば、R1ボリュームがローカル記憶装置24上にあり、R2ボリュームがリモート記憶装置26上にあるときに、ホスト22は、RDFボリュームの設定と管理とを支配するためにそれぞれの記憶装置24、26によって内部で使用されているテーブル(下記に詳述する)をそれぞれの記憶装置24、26にローカルに修正させることによって、特定のR1/R2対を無効化することを要求するマルチホップ/多重実行システムコマンドを送信することができる。R1/R2対の生成は、1つの記憶装置上にR1ボリュームを生成し、他の記憶装置上にR2ボリュームの生成することを含む。
【0031】
さらに、ある状況では、1または2個以上の既存のボリュームにRDF接続を確立することが有効であろう。このようにして、例えば、既存のソース(送り手)ボリュームを、RDFを使用して新規に生成されたデスティネーション(受け手)ボリュームに接続してもよい。したがって、これからの議論においては、ボリュームの生成との言及には、既存のボリュームヘの接続の生成も含まれる、と理解できる。同様に、ボリュームの無効化への言及には、RDF接続を単に無効化することが含まれる、と適切に理解できる。新しいボリュームを生成するかあるいは無効化する場合と、単に既存のボリュームヘの接続を生成または無効化する場合のいずれの場合も、RDF接続データを含んだ同じテーブル(以下に述べる)が修正されることは注意を要する。
【0032】
図2について説明すると、フローチャート50は、R1/R2対の生成または無効化に関して実行されるステップを示している。処理は、無効化コマンドが発行されているかどうか判断する第1のステップ52で開始する。ある実施形態では、生成コマンドか無効化コマンドかいずれかのみが発行される。したがって、コマンドが無効化コマンドでない場合、そのコマンドは生成コマンドである。ステップ52において無効化コマンドが発行されたと判断される場合、制御は、ステップ52から、バックグラウンドコピーのようなバックグラウンドI/O(入出力)動作が保留(サスペンド)されるステップ54へ移行する。R1/R2対を無効化にする前に、最初に、すべてのバックグラウンドI/Oを保留にすることが有効である。他の実施形態では、ボリュームの無効化はバックグラウンドI/O(そしてR1/R2対に関連する他の動作)を自動的に終了させるので、ステップ54は不要となり実行されない。
【0033】
ステップ54に続くのは、R1ボリュームに対応する記憶装置上のアロケーション(割付け)テーブルを修正するステップ56である。アロケーションテーブルは、記憶装置のRDF構成に関する動的情報を含む。アロケーションテーブルは、論理装置識別子(例えば数字)および論理装置のそれぞれのミラー番号によって索引付けられた2次元の配列を含んでいてもよい。ある実施形態では、それぞれの装置が最大4個のミラーを持つこともある。他の実施形態では、4個を越えるミラーを採用する。アロケーションテーブルヘのエントリは、装置のためのミラーがローカルミラー、R1ボリューム、R2ボリューム、あるいはBCV(ビジネスコンティニュアンスボリューム)やRAID(Redundant Array of Independant Disks)ミラーのような他のタイプのミラーかどうかを示す。
【0034】
ステップ56で、R1ボリュームを含んでいる記憶装置上のアロケーションテーブルは、R1ボリュームを削除するよう修正される。ステップ56に続くステップ58では、R2ボリュームを含む記憶装置上のアロケーションテーブルは、R2ボリュームを削除するよう修正される。ステップ58に続くステップ60では、以前に実行された操作の結果(例えば成功または失敗)が返される。ステップ60が終わると処理は完了する。
【0035】
ステップ52で、無効化コマンドが発行されてない(したがって、生成コマンドが発行されている)と判断される場合、制御は、ステップ52から、R1ボリュームまたはR2ボリュームが第1のサイトで生成されるステップ62まで移行する。ある実施形態では、ホストは、ローカル記憶装置24のような第1の記憶装置へマルチホップ/多重実行コマンドを発行するが、その場合、第1のサイトは、ローカル記憶装置24(すなわちコマンドを受け取る第1のサイト)であろう。ここに示された実施形態では、R1/R2対の生成が試行される第1のサイトは、ホスト22に直接接続したローカル記憶装置24である。第1サイトでの生成は、適切なアロケーションテーブルを修正することを含む。ステップ62に続くテストステップ64では、ステップ62でのR1ボリュームまたはR2ボリュームの生成が成功したかどうかが判断される。成功でない場合、制御は、ステップ64から、エラー通知をホスト22に返すステップ66まで移行する。ステップ66が終わると処理は、完了する。
【0036】
テストステップ64で、ステップ62でのR1ボリュームまたはR2ボリュームの生成が成功したと判断された場合は、ステップ64から、制御は、場合に応じて、第2のサイトでR1ボリュームまたはR2ボリュームを生成するステップ68へ移行する。第2のサイトでの生成は、適切なアロケーションテーブルを修正することを含む。第2のサイトは、コマンドを受け取る第2の記憶装置でもよい。ここに示された実施形態では、第2のサイトは、ローカル記憶装置24を通してホスト22からコマンドを受け取るリモート記憶装置26である。
【0037】
ステップ68に続くテストステップ70では、ステップ68での生成が成功かどうかが判断される。テストステップ70で、第2のサイトでの生成が成功しなかったと判断された場合には、ステップ70から、制御は、生成された第1のサイトを無効化するステップ72に移行する。RlボリュームとR2ボリュームとは、第2のサイトでいずれか1個のボリュームの生成に失敗すると、第1のサイトで生成に成功したボリュームはステップ72で無効化にされるように、対をなして生成されることに注意が必要である。ステップ72の次のステップ74では、上述のようにステップ66でエラーを返したのと同様に、エラーがホスト22に返される。ステップ74が終わると、処理は完了する。
【0038】
テストステップ70で、ステップ68での第2のサイトでのR1ボリュームまたはR2ボリュームの生成が成功したと判断された場合には、制御は、ステップ70から、記憶装置24と26のそれぞれの無効トラック(invalid track)がセットされるステップ75まで移行する。無効トラックは、R1ボリュームとR2ボリュームの間の相違を示すために使用される。R1ボリュームが初期データを含んでいる場合には、R1ボリュームのすべてのトラックは、R1データのすべてがR2データと一致しないことを示す無効(invalid)に設定され、この結果、R1ボリュームのすべてのトラックは、R1からR2へのコピーが必要となる。R2ボリュームが、使用されるべき初期データを含んでいる場合、R2ボリュームのトラックはすべて無効にされ(invalidated)、また、シンク(Sync)コマンドが、R1ボリュームを含んでいる記憶装置に送られて、R1ボリュームに対応するローカルミラーのトラックを無効にし、それによりR2からR1へのデータのバックグラウンドコピーを開始させる。ステップ75に続きステップ78では、R1ボリュームに対するノットレディ(not ready)インジケータがクリアされ、R1とR2との間のRDF動作を開始できることを示す。ノットレディインジケータは、R1/R2リンクを指すのであって、必ずしもR1および/またはR2のホストからデータを受信する能力を指すものではないということは、注意を要する。データは、トラック以外のユニット内で構成でき、この場合、ここで開示された操作は、使用するトラック以外のいかなるユニット上でも実行されるであろうということに、注意を要する。
【0039】
ステップ78に続きステップ79では、操作が成功したことを示す信号がホスト22に返される。ステップ79が終わると、処理は完了する。上述した無効トラックの設定と、デバイスノットレディ状態の設定および解除とは、設定が生成動作中およびそれ以降には適切な状態で維持されるという条件の下で、図2や上記の説明に示された順番と異なった順番でも実行できることに注意を要する。
【0040】
ある実施形態においては、ボリュームの生成(create)と無効化(destroy)とを特別の順序で行うことが有効である。例えば、まずR2ボリュームを生成し、続いてR1ボリュームを生成することは有効である。同様に、まずR1ボリュームを無効化し、次にR2ボリュームを無効化することも有効である。代わりに、前記ボリュームはどんな順番でも生成、無効化してもよいが、一方、動作は、R1ボリュームに対するノットレディインジケータをセットすることで制御され、そしてR1ボリュームに対するノットレディインジケータは、操作を実行するかどうかを制御する。このように、R1ボリュームおよびR2のボリュームはどんな順番で生成してもよいが、R1ボリュームに対するノットレディインジケータは、R1とR2の両方が生成されない限りそして生成されるまで、レディを表示するように設定されない。同様に、第1のステップとしてR1に対するノットレディ指標を設定することは、R1とR2を無効化する後続のステップがどのような順番にでも実行できるようにする。
【0041】
ある実施形態においては、R1/R2対を生成するコマンドが、R1ボリュームとR2ボリュームの両方に使用される特別のボリュームを示すようにすることが有効である。すなわち、ホスト22は、Rlボリュームとしてローカル記憶装置24から既存の論理装置を選択し、さらに、R2ボリュームとしてリモート記憶装置26から既存の論理装置を選択することができる。代わりの実施形態では、R2ボリュームとして未使用のいかなる論理装置もリモート記憶装置26に選択させることも可能である。また一方、システムコマンドがR2ボリュームのために特定のボリューム識別を望む場合には、記憶装置24、26および/またはホスト22の1つにアプリケーションプログラムインタフェース(Application Program Interface:API)を重ねて、R2ボリュームを選択することも可能である。
【0042】
さらに、新しく生成されたR1/R2対のための初期データがR2ボリューム上で見つかる場合があることに、注意を要する。例えば、リモート記憶装置26がそこに接続されたホスト(不図示)が機能しない場合、ローカル記憶装置24に接続しているホスト22からシステムを再起動することが有効である。しかしながら、その場合、起動するための初期データは、R2ボリューム上(つまりリモート記憶装置26上)にあってもよい。このようにして、起動時、初期データは、R2装置からR1装置にコピーされ、そののちホスト22は、ローカル記憶装置24にあるR1装置およびリモート記憶装置26にあるR2装置について、通常のRDF動作を継続する。R2装置からR1装置への(あるいはR1装置からR2装置への)コピーは、バックグラウンドコピーにより行われてもよい。
【0043】
図3を参照すると、フローチャート80は、R1/R2対が初期化された後ではあるがバックグラウンドコピーの完了前のシステムの動作を示している。ホスト22は、バックグラウンドコピーが完了していなくても、R1ボリュームに対する読出しおよび書込みを行うことに注意を要する。
【0044】
処理は、R2ボリュームが初期データを含んでいるかどうかが判断される初期テストステップ82から始まる。初期データを含んでいない場合には、次に、制御は、テストステップ82から、R1がホスト22によって要求された読出しおよび書込みに使用されるステップ84まで進む。
【0045】
テストステップ82においてR2ボリュームが初期データを含むと判断された場合は、制御は、テストステップ82から、書込まれたか読出されたトラックが無効かどうかの判断が行われるテストステップ86に進む。無効トラックは、R2ボリュームにある初期データがR1ボリュームにまだコピーされていないことを示す。無効トラックの設定に関しては、図1に基づいてすでに上述した。このようにして、テストステップ86において、ホスト22によって書込みあるいは読出しが実行されたトラックが無効であると判断された場合、制御は、ステップ86から、R2ボリュームがRDFにより読出しあるいは書込み操作のために使用されるステップ88まで進む。ある状況では、全体ではなく一部のトラックのみがホストによって書込まれる場合があることに注意を要する。このようにして、R2が初期データを含む場合における無効トラックにとって、ホスト22からのデータをR2ボリュームに送信することは有効である。ステップ88の後、処理は完了する。一方、ステップ86において、読出されあるいは書込まれたトラックが無効ではないと判断された場合には、制御は、テストステップ86から、R1ボリュームが従来の方法で使用されるステップ84まで進む。ステップ84の後、処理は完了する。
【0046】
図4を参照すると、このブロック図は、ローカル記憶装置24のメモリ37あるいはリモート記憶装置26のメモリ38を表わすグローバルメモリを示している。グローバルメモリは、上述したように、静的(static)構成(configuration)データ92のためのメモリ位置と、アロケーションテーブル(DAT)のような動的(dynamic)構成データ94のためのメモリ位置とを含む。静的構成データ92は、工場あるいは技術者によってセットアップされる記憶装置用の構成情報を含む。静的構成データ92は、グローバル半導体メモリに読み込まれるファイルで提供されるか、または半導体メモリの不揮発性部分として提供される。
【0047】
動的構成データ94は、静的構成データ92から修正された対応するシステムの構成を表わす。したがって、例えば、静的構成データ92は、R1/R2のRDF対を形成する特定のボリュームを示してもよく、一方、動的構成データ94は、その特定のRl/R2 RDF対が引き続いて無効化されたことを示すことで、静的構成データ92をオーバーライドする。動的構成データ94は、ディスク上に格納されてさらに電子メモリに読み込まれてもよいし、および/または、不揮発性である電子メモリに格納されてもよい。ある実施形態では、動的構成データ94は、静的構成データ92をオーバーライドしてもよい。他の実施形態では、動的構成データ94は、単に付加的なものであり、あるアイテムに対応した静的構成データ92に何らエントリがない場合に使用されてもよい。
【0048】
図5を参照すると、フローチャート100は、特定の論理装置の構成の判定法を示している。論理装置に対するそれぞれの読出しあるいは書込みアクセスは、装置の構成についての知見を利用して、装置がR1/R2対の一部であるかどうかを判断することに、注意を要する。
【0049】
処理は、動的構成データ94に論理装置に対するエントリ入力があるかどうかが判断されるステップ102から始まる。エントリがない場合、制御は、ステップ102から、静的構成データ92を調べて装置の構成を判断するステップ104に移行する。定義により静的構成データ92は変化しないので、個々の論理装置は、静的構成データ92の容易にアクセス可能であるローカルコピーを持つことができることに注意を要する。ステップ104の後、処理は完了する。
【0050】
テストステップ102において、動的構成データ94に論理装置に対するエントリがあると判断された場合、制御は、テストステップ102から、動的構成データ94を用いて論理装置の構成を決定するステップ106に移行する。あるいは、最初に静的構成データ92をチェックし、次に、オーバーライドするエントリが動的構成データ94に存在するかどうかをチェックすることも可能であることに、注意を要する。
【0051】
図6を参照すると、このブロック図は記憶装置110をより詳細に示している。記憶装置110は、複数のホストアダプタ(HA)112〜114、および複数のディスクアダプタ(DA)116〜118を含む。ディスクアダプタ116〜118のそれぞれは、複数のディスク120〜122のうちに関連する1個に接続される。記憶装置110は、さらにグローバルメモリ124と、RDFアダプタ(RA)126と、RA126に対する外部接続部128とを含む。バス130は、HA112〜114、DA116〜118、グローバルメモリ124およびRA126を接続する。HA112〜114のそれぞれは、ホスト(不図示)に接続される接続部を含む。
【0052】
HA112〜114のうちの1個に接続された、ホストのうちの1個が実行するすべての読出しおよび書き込み操作に対し、HA112〜114のうちの対応する1個が、データの配置場所を決定する。例えば、記憶装置110がR1/R2対のローカルボリュームを含む場合、ホストからデータを受け取るHA112〜114の特定の1個は、R1ボリュームにデータを送るためにディスクアダプタ116〜118の適切な1個にデータを送ることができ、別の記憶装置(不図示)上のR2ボリュームにデータを送信するRA126へ適切にデータを送ることができる必要がある。さらに、バックグラウンドコピー操作に関して、DA116〜118は、データの送り手及び受け手を示す情報にアクセスする。したがって、例えば、R1/R2対が記憶装置110と別のリモート記憶装置(不図示)との間でセットアップされる場合、DA116〜118は、初期データを含むボリューム(R1またはR2)から他方のボリュームへのデータのバックグラウンドコピーに参加するだろう。そのような場合、DA116〜118は、どこにデータが行きべきか(つまり、どのボリュームが、R1/R2対のボリュームの1個に対応するか)を示す情報にアクセスする。同様に、例えば、RA126が、入力データを処理するためにボリュームの構成情報にアクセスすることは、有効である。
【0053】
したがって、HA112〜114、DA116〜118およびRA126が、記憶装置110上のボリュームのセットアップ構成を示す正確な情報にアクセスすることができることは、有効である。情報を得る1つの方法は、それぞれの読出しまたは書込み操作に対して、グローバルメモリ124から動的構成データ94を読出すことであり、その時、もし照会された装置が動的構成データ94の中に見つからない場合には、静的構成データ92にアクセスすることである。しかしながら、すべてのI/O操作に対してグローバルメモリヘアクセスすることは、逆に記憶装置110の性能に悪い影響を与える。したがって、記憶装置110の装置構成を決定するより効率的なメカニズムが準備されている。
【0054】
図7を説明すると、説明図150は、構成データを判断するために使用するグローバルメモリヘのアクセス回数を減少させるメカニズムを示している。レディバッファ152は、入出力(I/O)が実行されるごとにアクセスされるデータに相当する。レディバッファ152は、装置の状態および/またはシステムの状態のような、I/Oに関連する有効な情報を表示する。このようにして、レディバッファ152は、それぞれのI/O操作のためにアクセスされる。
【0055】
レディバッファ152は、ある実施形態では、装置構成が変更されるごとにインクリメントされる1バイトデータのリビジョン(改訂)数フィールド154を含む。かくして、I/Oを実行する装置は、リビジョン数フィールド154を調べ、さらなる照会が必要かどうか決定することができる。
【0056】
バイトの集合156は、リビジョン数フィールド154の変更に応じてアクセスされてもよい。バイトの集合156の特定のバイト158は、記憶装置に対する動的RDF構成における変更を示すために使用できるだろう。このようにして、レディバッファ152およびバイトの集合156の組合せを、I/Oが実行されるごとにグローバルメモリ124へのアクセスを最小限にするために、使用することができる。
【0057】
図8について説明すると、フローチャート170は、レディバッファ152およびバイトの集合156の使用に関して実行されるステップを示している。処理は、I/Oを実行する装置が、レディバッファのフィールド154が変化した(例えば、インクリメントされた)かどうかを判断する、ステップ172で始まる。ステップ172においてレディバッファのフィールドが変化しなかったと判断された場合、制御は、ステップ172からステップ174に移行し、ステップ174では、HA112〜114の1個、DA116〜118の1個、および/またはRA126のような装置が、ローカルに保存されたデータを使用して、構成情報を判断する。つまり、以前に観測されたバージョンのリビジョン数フィールド154と等しいリビジョン数フィールド154は、RDF構成にはなんらの変更がなかったことを示す。このようにして、制御は、ステップ172からステップ174に移行し、ステップ174では、I/Oを実行する装置は、特定のデータをどのように処理するかを決定するために、ローカルに保存された構成データのコピーを使用できる。ステップ174の後で、処理は完了する。
【0058】
テストステップ172においてリビジョン数フィールド154が変化したと判断された場合は、制御は、ステップ172から、バイトの集合156がフェッチされるステップ176まで移行する。バイトの集合156は、例えばグローバルメモリ124の仲に、あるいは、不揮発性の電子メモリやディスクなどの他のメモリの中に、格納できる。
【0059】
ステップ176に続くのはステップ178であり、テストステップ178では、バイトの集合156中のRDF構成変化に対応するバイト158が修正された(例えば、インクリメントされた)かどうかの判断がなされる。修正されていない場合には、前述のごとく、制御は、ステップ178から、構成データのローカルに保存されたコピーがRDF構成を判断するために使用されるステップ174に移行する。ステップ174の後で、処理は完了する。
【0060】
テストステップ178においてRDF構成が変更されたと判断された場合、制御は、ステップ178から、グローバルメモリ124中の動的構成データ94がアクセスされるステップ180まで移行する。ステップ180に続くステップ182では、構成データのローカルに保存されたコピーが、グローバルメモリ124からの新バージョンのデータにより更新される。ステップ182に続き、ステップ174では、構成データのローカルに保存されたバージョン(更新されたばかりのもの)が、RDF構成を決定する装置により使用される。ステップ174の後で、処理は完了する。
【0061】
ある実施形態では、アロケーションテーブルから定期的に動的構成データにアクセスし、各装置に対する記憶装置中の構成データのローカルコピーを更新するバックグラウンドメカニズムを含むことも可能である。かくして、各装置は、最初にI/Oを実行せずにこのバックグラウンドタスクで更新されてもよい。
【0062】
システムのRDF構成を決定する場合、グローバルメモリヘのアクセスを制御するためにリビジョン番号を使用するためのここで述べたメカニズムは、BCV(ビジネス・コンティニュアンス・ボリューム;Business Continuance Volume)構成のような他のシステムパラメータにも同様に適用できることに注意を要する。BCVは、例えば、ホストアプリケーションとともに使用するよう構成された別の装置からのデータの一貫し同期したコピーを含むことができる。データのBCVコピーは、他の装置に対して継続的なデータ操作をホストに実行させつつ、データコピーに作用する別のアプリケーションで独立して使用されてもよい。
【0063】
図9について説明すると、フローチャート50’は、図2のフローチャート50に関して述べた実施形態の代替実施形態を示す。図2のフローチャート50は、「生成」と「無効化」の2個のコマンドがあるシステムを示す。図9のフローチャート50’に図示されたシステムは、上述の「生成」と「無効化」のコマンドに加え、R1とR2をスワップ(交換)する3番目のコマンドを備える。R1とR2の入替えは、R1ボリュームをR2ボリュームにし、R2ボリュームをR1ボリュームにする単一のコマンドを使用して実行できる。これは、例えば、ローカル記憶装置に接続したホストを、対応するリモート記憶装置に接続された別のホストと交換する場合において有効である。コマンドはホストに備えられるようにしてもよい。さらに、別記するように、ホストは、マルチホップ/多重実行システムコマンドを出力してもよい。処理は、無効化コマンドが発行されたかどうかが判断されるステップ52’で始まる。無効化コマンドが発行された場合は、制御は、ステップ52’から、図2のフローチャート50に関して上述したステップ54に移行する。一方、ステップ52’において無効化コマンドが発行されていないと判断された場合は、制御は、ステップ52’から、生成コマンドが発行されたかどうかを判断するステップ53に移行する。生成コマンドが発行されていた場合は、制御は、ステップ53から、図2のフローチャート50に関して上述したステップ62に移行する。
【0064】
テストステップ53において生成コマンドが発行されていないと判断した場合、R1/R2のスワップコマンドが発行される。すなわち、3個のコマンドを有するシステムにおいて、消去のプロセスは、無効化するコマンドが発行されてないとステップ52’において判断した場合、かつ、生成コマンドが発行されていないとステップ53において判断した場合に、R1/R2のスワップコマンドが発行されたと規定する。あるいは、コードの特定の部分は、R1/R2のスワップコマンドかもしれない受信したコマンドに基づいて実行されてもよい。R1/R2のスワップコマンドに関し、制御は、ステップ53から、R1に対してデバイスノットレディフラグ(device not ready flag)をセットするステップ192まで移行する。R1に対してデバイスノットレディフラグを設定することは、R1/R2対に対するRDF操作を停止させる。ステップ192に続くのはステップ194であり、ステップ194では、R1ボリュームを含む記憶装置に対応するアロケーションテーブルヘのエントリ、および、R2ボリュームを含む記憶装置に対応するアロケーションテーブルヘのエントリが両方とも修正され、R1ボリュームがR2ボリュームになり、またその逆も起こる。ステップ194に続くのはステップ196であり、ここでは、デバイスノットレディビットは新しいR1装置のためにクリアされる。ステップ196においてR1ボリューム用のデバイスノットレディビットをクリアすることにより、RDF操作は再開できる。しかしながら、RDF操作が再開したとき、以前のR2ボリュームは今やR1ボリュームであり、また、以前のR1ボリュームはR2ボリュームである。ステップ196に続くステップ198では、R1とR2をスワップするコマンドに対応する操作の結果(例えば、成功または失敗)が、ホストに返される。ステップ198の後で、処理は完了する。
【0065】
ここに開示された前記システムについては、ホスト22は、スタンドアロンのコンピュータ装置、ネットワークの一部、別の記憶装置、ある程度の記憶能力を有するコンピュータ、および/または、ここに開示された機能性を備えるいかなる装置でもよいということに注意を要する。同様に、ここに開示されたシステムは、ローカル記憶装置24をエミュレートするか、そうでなければ、ここに開示された機能を備えるよう構成された、別のコンピュータ装置、ネットワーク接続などを含む、ローカル記憶装置24として使用されるすべての適切な装置で実施できる。
【図面の簡単な説明】
【0066】
【図1】ここで説明するシステムに関連して使用されるホスト、ローカル記憶装置およびリモートデータ記憶装置の概念図である。
【図2】ここで説明するシステムの動作を示すフローチャートである。
【図3】ここで説明するシステムの読出しおよび書込み操作にのどのボリュームが使用されるかを決定する処理を示すフローチャートである。
【図4】ここで説明するシステムにおける記憶装置に対するグローバルメモリを示す図である。
【図5】ここで説明するシステムにおける装置のRDF構成の評価に関連して、静的構成データまたは動的構成データを使用するかどうか判定する階層を示すフローチャートである。
【図6】ここで説明するシステムに関連して使用される記憶装置とそのコンポーネントとを詳細に示す概念図である。
【図7】ここで説明するシステムに関連して使用されるレディバッファとバイトの集合とを示す図である。
【図8】図7に示したレディバッファとバイトの集合へのアクセスに関連して実行される工程を示すフローチャートである。
【図9】ここで説明するシステムの別の実施形態を示すフローチャートである。
【符号の説明】
【0067】
22 ホスト
24 ローカル記憶装置
26 リモート記憶装置
28、112〜114 ホストアダプタ
30、32、126 RDFアダプタユニット
33a〜33c、34a〜34c、120〜122 ディスク
35a〜35c、36a〜36c、116〜118 ディスクアダプタユニット
92 静的構成データ
94 動的構成データ
110 記憶装置
124 グローバルメモリ

【特許請求の範囲】
【請求項1】
第1の記憶装置上の第1のボリュームと第2の記憶装置上のミラーリングされた第2のボリュームとの間の通信路を反転した後に、ミラーリングされたデータにアクセスする方法であって、
前記第1のボリュームと前記第2のボリュームの間で前記ミラーリングされたデータを同期化することに先立って前記ミラーリングされたデータへのアクセスを許すことと、
前記ミラーリングされたデータの初期バージョンが前記第1のボリューム上に用意されている場合に、前記第1のボリューム上の前記ミラーリングされたデータにアクセスすることと、
前記ミラーリングされたデータの初期バージョンが前記第2のボリューム上に用意され、かつ前記ミラーリングされたデータの前記初期バージョンが前記第2のボリュームから前記第1のボリュームにコピーされている場合に、前記第1のボリューム上の前記ミラーリングされたデータにアクセスすることと、
前記ミラーリングされたデータの初期バージョンが前記第2のボリューム上に用意され、かつ前記ミラーリングされたデータの前記初期バージョンが前記第2のボリュームから前記第1のボリュームにコピーされている場合に、前記第2のボリューム上の前記ミラーリングされたデータにアクセスすることと、
を有する方法。
【請求項2】
前記ミラーリングされたデータが前記第2のボリュームから前記第1のボリュームにコピーされたかどうかの判定は、前記第1のボリューム上の前記ミラーリングされたデータが無効であるかどうかを示すインジケータにアクセスすることを含む、請求項1に記載の方法。
【請求項3】
前記インジケータは、トラック内のミラーリングされたデータがまだ同期化されていないかどうかを示す無効トラックインジケータである、請求項2に記載の方法。
【請求項4】
前記第1の記憶装置のメモリ内に、どのデータが同期化されているかを示すテーブルを備えることをさらに含む、請求項1に記載の方法。
【請求項5】
前記テーブルは、前記第1のボリュームのトラック識別子にしたがって索引つけられたトラックテーブルである、請求項4に記載の方法。
【請求項6】
前記第1のボリュームと前記第2のボリュームとが同期化された後に、前記ミラーリングされたデータの初期バージョンを前記第1のボリュームと前記第2のボリュームのいずれが含んでいるかに関わらず、前記第1のボリューム上のデータにアクセスすることをさらに有する、請求項1に記載の方法。
【請求項7】
コンピュータ記憶媒体内に格納され、第1の記憶装置上の第1のボリュームと第2の記憶装置上のミラーリングされた第2のボリュームとの間の通信路を反転した後に、ミラーリングされたデータにアクセスするコンピュータソフトウェアであって、
前記第1のボリュームと前記第2のボリュームの間で前記ミラーリングされたデータを同期化することに先立って前記ミラーリングされたデータへのアクセスを許す実行可能なコードと、
前記ミラーリングされたデータの初期バージョンが前記第1のボリューム上に用意されている場合に、前記第1のボリューム上の前記ミラーリングされたデータにアクセスする実行可能なコードと、
前記ミラーリングされたデータの初期バージョンが前記第2のボリューム上に用意され、かつ前記ミラーリングされたデータの前記初期バージョンが前記第2のボリュームから前記第1のボリュームにコピーされている場合に、前記第1のボリューム上の前記ミラーリングされたデータにアクセスする実行可能なコードと、
前記ミラーリングされたデータの初期バージョンが前記第2のボリューム上に用意され、かつ前記ミラーリングされたデータの前記初期バージョンが前記第2のボリュームから前記第1のボリュームにコピーされている場合に、前記第2のボリューム上の前記ミラーリングされたデータにアクセスする実行可能なコードと、
を有するコンピュータソフトウェア。
【請求項8】
前記ミラーリングされたデータが前記第2のボリュームから前記第1のボリュームにコピーされたかどうかの判定する実行可能なコードは、前記第1のボリューム上の前記ミラーリングされたデータが無効であるかどうかを示すインジケータにアクセスする、請求項7に記載のコンピュータソフトウェア。
【請求項9】
前記インジケータは、トラック内のミラーリングされたデータがまだ同期化されていないかどうかを示す無効トラックインジケータである、請求項8に記載のコンピュータソフトウェア。
【請求項10】
どのデータが同期化されているかを示すテーブルを有する、前記第1の記憶装置のメモリをさらに備える、請求項7に記載のコンピュータソフトウェア。
【請求項11】
前記テーブルは、前記第1のボリュームのトラック識別子にしたがって索引つけられたトラックテーブルである、請求項10に記載のコンピュータソフトウェア。
【請求項12】
前記第1のボリュームと前記第2のボリュームとが同期化された後に、前記ミラーリングされたデータの初期バージョンを前記第1のボリュームと前記第2のボリュームのいずれが含んでいるかに関わらず、前記第1のボリューム上のデータにアクセスする実行可能なコードをさらに有する、請求項7に記載のコンピュータソフトウェア。
【請求項13】
記憶装置であって、
グローバルメモリと、
前記グローバルメモリに接続された複数のホストインタフェースユニットと、
前記グローバルメモリに接続された複数のディスクインタフェースユニットと、
前記複数のディスクインタフェースユニットに接続された複数のディスクドライブと、
前記グローバルメモリに接続された少なくとも1つのリモートアダプタユニットと、
前記記憶装置内で実行されるコンピュータプログラムであって、前記記憶装置の第1のボリューム上のミラーリングされたデータへの、前記第1のボリュームと前記記憶装置に接続された別体の他の記憶装置の第2のボリュームとの間で前記ミラーリングされたデータを同期化することに先立つアクセスを許可する実行可能なコードと、前記ミラーリングされたデータの初期バージョンが前記第1のボリューム上に用意されている場合に、前記第1のボリューム上の前記ミラーリングされたデータにアクセスする実行可能なコードと、前記ミラーリングされたデータの初期バージョンが前記第2のボリューム上に用意され、かつ前記ミラーリングされたデータの前記初期バージョンが前記第2のボリュームから前記第1のボリュームにコピーされている場合に、前記第1のボリューム上の前記ミラーリングされたデータにアクセスする実行可能なコードと、前記ミラーリングされたデータの初期バージョンが前記第2のボリューム上に用意され、かつ前記ミラーリングされたデータの前記初期バージョンが前記第2のボリュームから前記第1のボリュームにコピーされている場合に、前記第2のボリューム上の前記ミラーリングされたデータにアクセスする実行可能なコードと、を有するコンピュータプログラムと、
を備える記憶装置。
【請求項14】
前記ミラーリングされたデータが前記第2のボリュームから前記第1のボリュームにコピーされたかどうかの判定する実行可能なコードは、前記第1のボリューム上の前記ミラーリングされたデータが無効であるかどうかを示すインジケータにアクセスする、請求項13に記載の記憶装置。
【請求項15】
前記インジケータは、トラック内のミラーリングされたデータがまだ同期化されていないかどうかを示す無効トラックインジケータである、請求項14に記載の記憶装置。
【請求項16】
前記グローバルメモリは、どのデータが同期化されているかを示すテーブルを含む、請求項13に記載の記憶装置。
【請求項17】
前記テーブルは、前記第1のボリュームのトラック識別子にしたがって索引つけられたトラックテーブルである、請求項16に記載の記憶装置。
【請求項18】
前記コンピュータプログラムは、前記第1のボリュームと前記第2のボリュームとが同期化された後に、前記ミラーリングされたデータの初期バージョンを前記第1のボリュームと前記第2のボリュームのいずれが含んでいるかに関わらず、前記第1のボリューム上のデータにアクセスする実行可能なコードをさらに有する、請求項13に記載の記憶装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2006−155662(P2006−155662A)
【公開日】平成18年6月15日(2006.6.15)
【国際特許分類】
【出願番号】特願2006−52397(P2006−52397)
【出願日】平成18年2月28日(2006.2.28)
【分割の表示】特願2002−330916(P2002−330916)の分割
【原出願日】平成14年11月14日(2002.11.14)
【出願人】(503093224)イーエムシー コーポレイション (63)
【氏名又は名称原語表記】EMC CORPORATION
【Fターム(参考)】