(57)【要約】ホストコンピュータと、安価なディスクを用いた冗長アレイ（ＲＡＩＤ：Redundant Array of Inexpensive Disks）等の記憶装置との間でデータを転送するためのネットワーク記憶制御装置（１００）が開示される。ネットワーク記憶制御装置（１００）は、ホストコンピュータと記憶装置とに接続されるように適用される少なくとも１つのチャネルインタフェースモジュール（１３６、１４０）を有する。チャネルインタフェースモジュール（１３６、１４０）は受動バックプレーン（１１６）に接続され、ホストコンピュータ及び記憶装置と、受動バックプレーン（１１６）との間でデータを選択的に転送する。ネットワーク記憶制御装置（１００）は、受動バックプレーン（１１６）に取り付けられる少なくとも１つの制御装置管理モジュール（１０４、１０８）をも有する。制御装置管理モジュール（１０４、１０８）は、受動バックプレーン（１１６）を介してチャネルインタフェースモジュール（１３６、１４０）と通信し、ホストコンピュータ又は記憶装置から受け取ったデータを処理し、一時的に記憶する。冗長性が必要とされるアプリケーションにおいて、少なくとも２つの制御装置管理モジュール（１０４、１０８）と少なくとも２つのチャネルインタフェースモジュール（１３６、１４０）が使用されても良い。制御装置管理モジュール（１０４、１０８）は、受動バックプレーン（１１６）とチャネルインタフェースモジュール（１３６、１４０）上の共有通信経路を用いて相互間でデータをミラー化しても良く、それにより、データをミラー化するためのホストチャネル又はディスクチャネルの使用を実質的に回避する。チャネルインタフェースモジュール（１３６、１４０）は、ホストコンピュータ又は記憶装置を１つ以上の制御装置メモリモジュール（１０４、１０８）に選択的に接続するように動作可能である。制御装置管理モジュール（１０４、１０８）は、ミラー化されたデータの転送を促進するためにＤＭＡエンジンを含んでも良い。
2005508551.tif 000002
【特許請求の範囲】
【請求項１】
記憶アレイを含む記憶システムにおいてデータをミラー化するための方法であって、
第１のダイレクトメモリアクセスエンジンを含む第１の制御装置管理モジュールであって、前記記憶アレイに関する読み出し／書き込み動作を制御するための前記第１の制御装置管理モジュールを提供するステップ、
第２のダイレクトメモリアクセスエンジンを含む第２の制御装置管理モジュールであって、前記記憶アレイに関する読み出し／書き込み動作を制御し、前記第１のダイレクトメモリアクセスエンジンが前記第２の制御装置管理モジュールにデータをミラー化するのに用いられ、及び前記第２のダイレクトメモリアクセスエンジンが前記第１の制御装置管理モジュールにデータをミラー化するのに用いられる前記第２の制御装置管理モジュールを提供するステップ、及び
前記第１のダイレクトメモリアクセスエンジンを用いて、前記第１の制御装置管理モジュールから前記第２の制御装置管理モジュールへ第１のデータをミラー化するステップ、
を含む方法。
【請求項２】
前記第１の制御装置管理モジュールが第１のプロセッサを含み、前記ミラー化するステップが、前記第１のプロセッサを用いて前記ミラー化するステップが行われるかどうかを判定するステップを含む請求項１に記載の方法。
【請求項３】
前記第２の制御装置管理モジュールが第２のプロセッサを含み、前記ミラー化するステップが、前記第２のプロセッサから独立して前記第１のデータをミラー化するステップを含む請求項１に記載の方法。
【請求項４】
前記第２の制御装置管理モジュールが第２のプロセッサを含み、前記第２のプロセッサが、前記記憶アレイに関する前記読み出し／書き込み動作の前記制御するステップに用いられ、前記第２のプロセッサの割り込みを回避しながら前記ミラー化するステップが行われる請求項１に記載の方法。
【請求項５】
前記第２の制御装置管理モジュールが第２のプロセッサを含み、前記ミラー化するステップの間、前記第２のプロセッサが、第１の読み出し動作及び第１の書き込み動作のうち少なくとも１つを制御するのに用いられるように動作可能である請求項１に記載の方法。
【請求項６】
前記第２の制御装置管理モジュールが第２のプロセッサを含み、前記第２のダイレクトメモリアクセスエンジン及び前記第２のプロセッサを用いない間、前記ミラー化するステップが、前記第１のダイレクトメモリアクセスエンジンを用いて実行される請求項１に記載の方法。
【請求項７】
前記第２の制御装置管理モジュールが第２のプロセッサを含み、前記ミラー化するステップが、前記第２のプロセッサを用いることなく前記第２の制御装置管理モジュールの不揮発性メモリに前記第１のデータを記憶するステップを含む請求項１に記載の方法。
【請求項８】
前記第２の制御装置管理モジュールが不揮発性メモリを含み、前記ミラー化するステップが、
第１に、前記第１のデータを受信する前記不揮発性メモリの内容の部分を無効として記録し、第１のＤＭＡトランザクションにおいて前記不揮発性メモリに前記第１のデータを転送するステップ、及び
第２に、第２のＤＭＡトランザクションにおいて前記不揮発性メモリの内容の前記部分を有効として記録するステップと、を含む請求項１に記載の方法。
【請求項９】
前記第２の制御装置管理モジュールが不揮発性メモリを含み、前記ミラー化するステップが、
第１の文字列を前記不揮発性メモリの第１の記憶領域に記憶し、前記第１のデータを前記不揮発性メモリに転送し、前記不揮発性メモリの第２の領域に前記第１の文字列を記憶するステップを含む請求項１に記載の方法。
【請求項１０】
前記ミラー化するステップが単一のＤＭＡトランザクションを用いて実行される請求項９に記載の方法。
【請求項１１】
前記第１の制御装置管理モジュールが、第１のプロセッサを含み、更に、前記第１のプロセッサを用い、かつ、パリティを判定するためにＸＯＲエンジンを用いて、前記記憶アレイに情報を記憶するステップを含む、請求項１に記載の方法。
【請求項１２】
記憶アレイを含む記憶システムにおいてデータをミラー化するための装置であって、
第１の制御装置管理モジュールは第１のプロセッサ及び第１のダイレクトメモリアクセスエンジンを含み、前記第１のプロセッサは記憶アレイに関する読み出し動作及び書き込み動作を制御するのに使用され、前記第１のダイレクトメモリアクセスエンジンは前記第１の制御装置管理モジュールによって受信されるデータを記憶するのに使用され、
第２の制御装置管理モジュールが第２のプロセッサ及び第２のダイレクトメモリアクセスエンジンを含み、前記第２のプロセッサは記憶アレイに関わる読み出し動作及び書き込み動作を制御するのに使用され、前記第２のダイレクトメモリアクセスエンジンは前記第２の制御装置管理モジュールによって受信されるデータを記憶するのに使用され、
第１のデータは前記第１の制御装置管理モジュールによってホストから受信され、前記第１のデータは前記第２のプロセッサの割り込みを回避しながら、前記第１のダイレクトメモリアクセスエンジンを用いて、前記第１の制御装置管理モジュールから前記第２の制御装置管理モジュールへミラー化される装置。
【請求項１３】
前記第１の制御装置管理モジュールが不揮発性メモリを含み、前記第１のデータが前記不揮発性メモリに記憶される請求項１２に記載の装置。
【請求項１４】
前記第１のダイレクトメモリアクセスエンジンが前記第１のプロセッサから分離しているが通信し、前記第１のプロセッサは前記第１のダイレクトメモリアクセスエンジンを用いて前記第１のデータのミラー化を開始する請求項１２に記載の装置。
【請求項１５】
前記第１の制御装置管理モジュールがフィールドプログラマブルゲートアレイを有し、前記第１のダイレクトメモリアクセスエンジンが少なくともその部分と通信する請求項１２に記載の装置
【請求項１６】
前記装置が、更に、
第１の共有経路を有する第１のチャネルインタフェースモジュールを有し、前記第１のチャネルインタフェースモジュールは前記第１の制御装置管理モジュールと通信し、前記第１の共有経路が前記第１の制御装置管理モジュールと前記第２の制御装置管理モジュールとの間で前記第１のデータを転送するのに用いられる請求項１２に記載の装置。
【請求項１７】
前記装置が、更に、
前記第１のチャネルインタフェースモジュール及び前記第１の制御装置管理モジュールを相互接続する受動パックプレーンを有する請求項１６に記載の装置。
【請求項１８】
前記第２のプロセッサが、前記第１のデータが前記第２の制御装置管理モジュールにミラー化されている間、前記第２の制御装置管理モジュールに関連する動作を制御する請求項１２に記載の装置。
【請求項１９】
前記第１のデータが、前記第２のダイレクトメモリアクセスエンジンから独立して前記第２の制御装置管理モジュールにミラー化される請求項１２に記載の装置。
【請求項２０】
前記第２の制御装置管理モジュールが不揮発性メモリを有し、前記第１のデータが前記第２のプロセッサから独立して前記不揮発性メモリに記憶される請求項１２に記載の装置。
【請求項２１】
前記第２の制御装置管理モジュールが不揮発性メモリを有し、前記第１のダイレクトメモリアクセスエンジンは、前記第１のデータを受信するべき前記不揮発性メモリの少なくとも部分に対して、前記部分が無効であるという指示を提供するのに用いられ、前記第１のデータが不揮発性メモリによって受信された後、前記第１のダイレクトメモリアクセスエンジンが前記部分を有効として記録するのに用いられる請求項１２に記載の装置。
【請求項２２】
前記第２の制御装置管理モジュールが少なくとも第１の記憶領域及び第２の記憶領域を有する不揮発性メモリを有し、
前記第１のダイレクトメモリアクセスエンジンは、前記第１のデータが前記不揮発性メモリによって受信される前に、前記第１の記憶領域での記憶のために第１の文字列を提供すること、及び、前記第１のデータが前記不揮発性メモリによって受信された後に、前記第２の記憶領域での記憶のために前記第１の文字列を提供することに用いられる請求項１２に記載の装置。
【請求項２３】
前記第１のダイレクトメモリアクセスエンジンが、単一のダイレクトメモリアクセストランザクションにおいて、前記第１の文字列を提供し、前記第１のデータを転送し、及び、前記第２の文字列を提供するよう、動作可能である請求項２１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の制御装置構成においてデータを記憶する、特に、ダイレクトメモリアクセスエンジンを用いてデータをミラー化することに関する。
【背景技術】
【０００２】
ネットワーク記憶制御装置は、典型的には、ホストコンピュータシステムをディスクドライブやテープドライブ等の周辺記憶装置と接続するために使用される。ネットワーク記憶制御装置は、ホストコンピュータと周辺記憶装置との間のインタフェースの役割を果たす。多くのアプリケーションにおいて、ネットワーク記憶制御装置は、ホストコンピュータと周辺装置との間で転送されるデータに関わる処理機能を実行する。このようなシステムの一般的なアプリケーションの１つが、安価なディスクを用いた冗長アレイ（ＲＡＩＤ：redundant array of inexpensive disks）である。ＲＡＩＤシステムは、ディスクドライブの故障からデータを保護するため、複数のディスクドライブにデータを記憶する。１つのディスクドライブが故障した場合、通常ＲＡＩＤシステムはアレイ内の残りのドライブから、故障したドライブに記憶されていたデータを復元できる。ＲＡＩＤシステムは、多くの場合、ホストコンピュータとディスクドライブアレイとの間のインタフェースである、ＲＡＩＤ制御装置を含むネットワーク記憶制御装置を使用する。
【０００３】
多くのアプリケーションは、非常に高い可用性を備える記憶システムを必要とする。ユーザはＲＡＩＤシステムに記憶されたデータに大きく依存するため、金融機関や航空予約システム等の多くのアプリケーションにおいて、この高い可用性は重要である。これらの種類のアプリケーションでは、ＲＡＩＤシステムに記憶されるデータの非可用性が、結果として収益及び／又は顧客満足度の大幅な低下を生む可能性がある。このようなアプリケーションでＲＡＩＤシステムを採用することは、１つのディスクドライブが故障してもなおデータが記憶されシステムから回復できるため、記憶データの可用性を向上させる。ＲＡＩＤシステムの使用に加えて、記憶システムの可用性を更に向上させるために、冗長ＲＡＩＤ制御装置を使用することが一般的である。こうした状況では、２つ以上の制御装置がＲＡＩＤシステムで使用され、各制御装置は、制御装置の１つが故障した場合、他の残りの制御装置が、故障した制御装置の作業を引き受けるというフェイルオーバー機能を有する。このようなプラットフォームはＲＡＩＤシステムの可用性を高めるが、下記に述べるようないくつかの不利点を引き起こす可能性がある。
【０００４】
図１は、ＲＡＩＤネットワーク記憶制御装置１０を構成するデュアル制御装置のブロック図であり、ファイバチャネル・ツー・ファイバチャネル接続を示す。すなわち、この例では、ホストコンピュータとディスクドライブアレイの両方が、ファイバチャネル接続を用いてネットワーク記憶制御装置と通信する。ファイバチャネルはこのようなシステムにおいて一般的なチャネル媒体であるが、例えば、小型コンピュータシステムインタフェース（ＳＣＳＩ：Small Computer System Interface）やイーサネット（登録商標）等の他のチャネルも用いられても良いことは理解されるべきである。図１に示されるＲＡＩＤシステムは、ホストポート−１  １４及びホストポート−２  １８の２つのホストポートと、ディスクポート−１  ２２及びディスクポート−２  ２６の２つのディスクポートとを含む。ＲＡＩＤシステムにおいて一般的で、当該技術において良く知られているように、各ホストポート１４、１８は異なるホストコンピュータに区分され、各ディスクポート２２、２６は異なるディスクアレイに区分されていても良い。ネットワーク記憶制御装置１０は、制御装置−Ａ３０と制御装置−Ｂ３４のデュアルＲＡＩＤ制御装置を含む。制御装置の区分(zoning)を採用するシステムにおいて、制御装置−Ａ３０がホストポート−１  １４及びディスクポート−１  ２２に区分され、制御装置−Ｂ３４がホストポート−２  １８及びディスクポート−２  ２６に区分され得る。
【０００５】
当該技術において理解されるように、デュアル制御装置を採用するシステムは、キャッシュの一貫性（cache coherency）を維持するため制御装置間のデータのミラー化を必要とする。各制御装置３０、３４は、制御装置間の冗長性を維持し、それによって１つの制御装置が故障した場合にＲＡＩＤシステムの動作を維持するため、他の制御装置のデータ及び状態のコピーを備えていなければならない。制御装置間のデータのミラー化は、後に詳述するように、制御装置間でのデータの転送が制御装置の処理リソースだけでなくチャネル帯域幅をも使用するため、ＲＡＩＤシステムのパフォーマンスを低下させる可能性がある。
【０００６】
制御装置３０、３４は、入出力モジュール−１  ４２と入出力モジュール−２  ４６の２つの入出力モジュールに接続されるファイバチャネルバス３８に接続される。各制御装置３０、３４は、ＣＰＵサブシステム５０、２倍のデータ転送速度の（ＤＤＲ：Double Data Rate）メモリ５４、制御論理５８、２つのホストポート６２ａ、６２ｂのデュアル(dual)ポートファイバチャネル接続、及び２つのディスクポート６６ａ、６６ｂのデュアルポートファイバチャネル接続を含む。ＣＰＵサブシステム５８は、データの分散化と、読み取り及び書き込みコマンドの開始及び実行とを含む、ディスクアレイへのデータの記憶に必要なタスクを実行する。ＤＤＲメモリ５４は、データ及びその他の情報のための不揮発性記憶領域である。制御論理５８は、ＣＰＵサブシステム５０と、ＤＤＲメモリ５４と、ホストポート６２ａ、６２ｂ及びディスクポート６６ａ、６６ｂとの仲介等のいくつかの機能を実行する。制御論理５８は、排他的論理和（ＸＯＲ：Exclusive OR）エンジン等のパリティ生成機能を含むその他の機能をも有していても良い。ホストポート６２ａ、６２ｂ及びディスクポート６６ａ、６６ｂは、ファイバチャネルバックプレーン３８との通信を提供する。入出力モジュール４２、４６は、ポートバイパス回路(port bypass circuit)としても良く知られている、各ホストポート１４、１８及び各ディスクポート２２、２６を各制御装置３０、３４に接続するために機能するリンク復元回路（ＬＲＣ：Link Resiliency Circuit）７０を含む。これによって、両制御装置３０、３４は、両ホストポート１４、１８及び両ディスクポート２２、２６にアクセス可能となる。
【０００７】
完全な冗長性を提供するため、各制御装置は各ホストポート１４、１８及び各ディスクポート２２、２６との接続を有していなければならない。このようにすることで、制御装置のうち１つが故障した場合には、他の制御装置が動作を継続できる。しかしながら、ＲＡＩＤシステムのパフォーマンスを高めるために区分の技法を用いる場合、これらのポートの半分が受動的（passive）である。例えば、制御装置−Ａ３０がホストポート−１  １４及びディスクポート−１  ２２に区分される場合、制御装置−Ａ３０はホストポート−１  １４からの全ての通信を受信し、ディスクポート−１  ２２上のディスクアレイを制御する。同様に、制御装置−Ｂ３４は、ホストポート−２  １８及びディスクポート−２  ２６に区分されるであろう。これらの区分の技法は当該技術において良く知られており、ＲＡＩＤシステムのパフォーマンスを高めるだけでなく、２つの制御装置３０、３４の制御及び通信を簡易化することもできる。図１の例において、制御装置−Ａ３０上で、ホストポート接続６２ａとディスクポート接続６６ａは、入出力モジュール−１  ４２のＬＲＣ７０を通じてホストポート−１  １４及びディスクポート−１  ２２にそれぞれ接続される。制御装置−Ａ３０はホストポート−１  １４及びディスクポート−１  ２２に区分されるため、ホストポート接続６２ａ及びディスクポート接続６６ａはホストポート−１  １４及びディスクポート−１  ２２と能動的に通信する。残りのホストポート接続６２ｂ及びディスクポート接続６６ｂは、入出力モジュール−２  ４６のＬＲＣ７０を通じてホストポート−１  １８及びディスクポート−２  ２６にそれぞれ接続される。制御装置−Ｂ３４が故障しない限り、制御装置−Ａ３０はホストポート−２  １８及びディスクポート−２  ２６と能動的に通信しないため、これらの接続は典型的には受動接続である。同様に、制御装置−Ｂ３４はホストポート−２  １８及びディスクポート−２  ２６に区分されるであろう。よって、制御装置−Ｂ３４上では、ホストポート接続６２ｂ及びディスクポート接続６６ｂは、入出力モジュール−２  ４６のＬＲＣ７０を通じてホストポート−２  １８及びディスクポート−２  ２６と通信するであろう。残りのホストポート接続６２ａ及びディスクポート接続６６ａは、入出力モジュール−１  ４２のＬＲＣ７０を通じてホストポート−１  １４及びディスクポート−１  ２２に接続されるであろう。
【０００８】
上記のように、典型的な冗長制御装置の動作において、データが制御装置間でミラー化される。制御装置−Ａ３０と制御装置−Ｂ３４との間でデータをミラー化する時、共有ディスクポート接続、すなわち、制御装置Ａ３０のディスクポート接続６６ｂ及び制御装置Ｂのディスクポート接続６６ａ上で、ミラー化されたデータを転送するのが一般的である。例えば、制御装置−Ｂ３４は、ディスクポート−２越しにドライブアレイに書き込まれるデータを、ホストポート−２  １８越しに受信しても良い。制御装置−Ｂ３４は、このデータを受信し、メモリ５４に格納する。キャッシュの一貫性を維持するため、制御装置−Ｂ３４はこのデータを制御装置−Ａ３０にも伝達しなければならず、従って、両方の制御装置がそのデータを有し、一方の制御装置が故障しても、他方の制御装置がなおそのデータを書き込むことができる。
【０００９】
従来のシステムにおいて、このミラー化は幾つかのステップを経て成される。図１２は、両方がアクティブな（active/active）制御装置の組において２つの制御装置間でデータをミラー化するために必要とされるステップを示すフローチャートである。最初に、制御装置−Ｂ３４は、ブロック８０に示されるように、ディスクアレイに書き込まれるデータを受信する。ブロック８２によって記載されるように、制御装置−Ｂ３４は、データをミラー化するために、メッセージが送信されることを制御装置−Ａ３０に通知する第１の割り込みを制御装置−Ａ３０に引き起こす第１のミラー化コマンドを発する。割り込みは、本例の制御装置−Ｂにおいてメッセージが受信された時に、制御装置上のハードウェアによって自動的に、本例の制御装置−Ａ上のハードウェアにおけるプロセッサに生成される信号であり、プロセッサに作業を停止させ、割り込みを使用可能にする。制御装置−Ａは、第１の割り込みを受信すると、いかなる処理活動をも中止して第１のミラー化コマンドを処理する。制御装置−Ｂ３４は次に、ブロック８４に示されるように、第２の割り込みを引き起こす、メタデータ(metadata)を含む第２のミラー化コマンドを発する。メタデータは、実際のメッセージ本体と、制御装置−Ａ３０にユーザデータを記憶するメモリの位置を示す情報とを含む。次に、制御装置−Ａ３０は、ブロック８６に示されるように、その不揮発性メモリ(ＮＶＲＡＭ)の内容を、メタデータ内で指定されるデータブロックに対して無効として記録する。次に、ブロック８８によれば、制御装置−Ｂ３４は、第３の割り込みを引き起こす、ユーザデータを含む第３のミラー化コマンドを発する。制御装置−Ａは、ブロック９０によって記載されるように、ユーザデータを受信し、そのＮＶＲＡＭの指定された位置にユーザデータを記憶し、ＮＶＲＡＭの内容を、指定されたデータブロックに対して有効として記録する。一旦制御装置−Ｂ３４が適切な書き込み動作を完了すると、ブロック９２によって記載されるように、制御装置−Ｂ３４は次に第４の割り込みを引き起こす第４のミラー化コマンドと書き込みが完了したという通知とを発する。次に制御装置−Ａは、ブロック９４に示されるように、書き込み完了を記録する。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
理解されうるように、このミラー化技法は、制御装置間でデータをコピーすることには成功である一方、かなりの処理リソースを使用する可能性がある。各書き込み動作は４つの割り込みを必要とし、受信するプロセッサに処理中のいかなるタスクをも中断させ、割り込みを使用可能にする。従って、データをミラー化するのに少ない処理リソースしか消費しないネットワーク記憶制御装置を備えることが有利であろう。
【００１１】
加えて、このミラー化は、典型的にはディスクチャネルを用いて成される。上記のミラー化コマンドのそれぞれにおいて、制御装置−Ｂ３４は、ディスクポート−１  ２２に接続するＬＲＣ７０に接続するディスクポート接続６６ａ上でデータを送信する。データはＬＲＣ７０を通じて転送され、制御装置−Ａ上のディスクポート接続６６ａで受信される。次に、制御装置−Ａはそのデータを受信し、適切な処理及び記憶ステップを実行する。同様に、制御装置−Ａ３０がディスクポート−１  ２２上のディスクアレイに書き込まれるデータを受信した場合、同じミラー化技法を用いて、制御装置−Ａ３０は制御装置−Ｂ３４にそのデータを送信する。この技法は、専用のディスクポートを必要とせず、１つ以上のディスクポートが使用され得ることを留意されたい。
【００１２】
これは各制御装置上の残りのディスクポートを使用するが、各制御装置上の第２のホストポートは未使用のままであり、従って、システムの通常動作時は受動的である。各制御装置上の受動ポートは、制御装置に相当量のハードウェアを追加し、ネットワーク記憶制御装置１０の大幅なコスト増を招く可能性がある。したがって、制御装置上に設けられる受動ポートに関連するコストとハードウェアを低減しつつ、高可用性を維持する冗長ネットワーク記憶制御装置を提供することが有利であろう。
【００１３】
加えて、こうしたシステムにおいてデータをミラー化すると、結果的に、ミラー化されたデータを受信する、あるいはディスクにデータを転送するために用いられる制御装置にとっては、ミラー化されたデータと記憶データとが、同じポート上で送信されることになる。ディスクアレイへの帯域幅は、ミラー化されたデータによって消費され、ネットワーク記憶制御装置のパフォーマンスを低減させる可能性がある。したがって、制御装置間でデータをミラー化する時にディスクチャネル帯域幅を全くかほとんど消費しないネットワーク記憶制御装置を備えることが有利であろう。
【００１４】
更に、継続的に高まりつつあるデータ記憶の需要と共に、ＲＡＩＤ制御装置は、追加のディスクドライブやより高速なバスインタフェースを伴うアップグレードを必要とする。しかしながら、ＲＡＩＤ制御装置は追加のバスインタフェース能力を追加する、あるいは新しい種類のバスインタフェースをサポートするように構成されていないかもしれない。こうした制御装置は一般的に、アップグレードが実行される時に取り替えられなければならない。この制御装置の交換によって、ＲＡＩＤシステムをアップグレードするコストが増す可能性がある。動作可能なＲＡＩＤ制御装置の交換は、ＲＡＩＤシステムをアップグレードする決定を阻むかもしれない価値の減損を表す。したがって、簡易かつ低コストに、能力のアップグレードをサポートするだけでなく新しい種類のインタフェースをもサポートすることが可能なシステムを備えることが有利であろう。
【００１５】
したがって、（１）受動的な構成要素のためのコストを軽減しつつ冗長性を提供し、（２）ディスクポート又はホストポート上で送信されるミラー化されたデータの量を低減し、（３）データのミラー化に関連する処理のオーバーヘッドを減らし、（４）容易に交換可能かつアップグレード可能な構成要素を提供する、ネットワーク記憶制御装置内で使用される装置及び方法を開発する必要がある。
【課題を解決するための手段】
【００１６】
本発明によれば、記憶アレイを有する記憶システムにおいてデータをミラー化するための方法及び装置が提供される。前記装置は、第１のプロセッサ及び第１のダイレクトメモリアクセスエンジンを含む第１の制御装置管理モジュールを含む。前記第１のプロセッサは、記憶アレイに関わる読み出し動作及び書き込み動作を制御するのに用いられる。前記第１のダイレクトメモリアクセスエンジンは、前記第１の制御装置メモリモジュールによって受信されるデータを記憶するのに用いられる。前記装置はまた、第２のプロセッサ及び第２のダイレクトメモリアクセスエンジンを含む第２の制御装置管理モジュールを有する。前記第２のプロセッサは、記憶アレイに関する読み出し動作及び書き込み動作を制御するのに用いられる。前記第２のダイレクト管理アクセスエンジンは、前記第２の制御装置管理モジュールから前記第１の制御装置メモリモジュールにデータを転送するのに用いられることもできる。前記データは、前記第２のプロセッサの割り込みを回避しつつ、前記第１のダイレクトメモリアクセスエンジンを用いて前記第１の制御装置管理モジュールから前記第２の制御装置管理モジュールへミラー化される。前記第１のダイレクトメモリアクセスエンジンは前記第１のプロセッサから分離しているが通信し、前記第１のプロセッサは前記第１のダイレクトメモリアクセスエンジンを用いて前記データのミラー化を制御する。ある実施の形態において、前記第１の制御装置管理モジュールは、フィールドプログラマブルゲートアレイ(field programmable gate array)を有する。前記第１のダイレクトメモリアクセスエンジンは、フィールドプログラマブルゲートアレイの少なくとも一部と通信し、前記第１のダイレクトメモリアクセスエンジンは、フィールドプログラマブルゲートアレイの１部であることもできる。
【００１７】
ある実施の形態において、前記装置は、第１の共有経路を有する第１のチャネルインタフェースモジュールを含む。前記第１のチャネルインタフェースモジュールは前記第１の制御装置メモリモジュールと通信し、前記第１の共有経路は、前記第１の制御装置管理モジュールと前記第２の制御装置管理モジュールとの間でデータを転送するのに用いられる。受動バックプレーンは、前記第１のチャネルインタフェースモジュール及び前記第１の制御装置管理モジュールを相互接続する。前記第２のプロセッサは、前記データが前記第２の制御装置メモリモジュールにミラー化されている間、前記第２の制御装置管理モジュールに関わる動作を制御する。前記データは、前記第２のダイレクトメモリアクセスエンジンから独立して前記第２の制御装置管理モジュールにミラー化される。前記第２の制御装置管理モジュール内には不揮発性メモリがあり、前記データは前記第２のプロセッサから独立して前記不揮発性メモリ内に記憶され得る。前記第１のダイレクトメモリアクセスエンジンは、前記データが記憶される前記不揮発性メモリの部分を無効として記録し、前記不揮発性メモリに前記データを転送する。前記データが記憶された前記不揮発性メモリの前記部分は、次に有効として記録される。
【００１８】
前記方法は、前記第１のダイレクトメモリアクセスエンジンを用いて前記第１の制御装置管理モジュールから前記第２の制御装置管理モジュールへデータをミラー化するステップを含む。前記第１の制御装置管理モジュール内の前記第１のプロセッサはデータのミラー化を行うかを判定する。前記第２の制御装置管理モジュール内の前記第２のプロセッサは、記憶アレイに関わる読み出し及び書き込み動作を制御し、前記第２のプロセッサの割り込みを回避しながら前記データのミラー化を行う。従って、前記第２のプロセッサは、前記データがミラー化されている時間の間、それ自身の動作を実行し続けることができる。前記データのミラー化は、前記第２のダイレクトメモリアクセスエンジンを必要とすることなく前記第１のダイレクトメモリアクセスエンジンを用いて行われる。ミラー化の間、前記データは前記第２の制御装置管理モジュール内の不揮発性メモリに記憶される。ミラー化が行われている時、前記第１のダイレクトメモリアクセスエンジンは、前記データが受信される前記不揮発性メモリの内容を無効として記録するために用いられ、前記不揮発性メモリに前記データを転送する。前記第１のダイレクトメモリアクセスエンジンは次に、データが受信された前記不揮発性メモリの内容を有効として記録する。ある実施の形態において、前記第１のダイレクトメモリアクセスエンジンはまた、前記第１の制御装置管理モジュールを用いて前記記憶アレイに記憶する情報に対するパリティを判定するのに用いられる。
【発明を実施するための最良の形態】
【００１９】
《実施の形態１》
図２を参照して、本発明のネットワーク記憶装置１００のブロック図を示す。ネットワーク記憶装置１００は、１つ以上の制御装置管理モジュール（ＣＭＭ：Controller Management Module）を含む。図２に示される実施の形態において、ＣＭＭ−Ａ１０４とＣＭＭ−Ｂ１０８の２つのＣＭＭがあるが、冗長性が必要とされないアプリケーションでは単一のＣＭＭが使用されても良く、追加の冗長性又はより高いパフォーマンスを要求するアプリケーションにおいて追加のＣＭＭが使用されても良い。各ＣＭＭ１０４、１０８は、２つのバックプレーンインタフェース１１２を有する。システムは、各ＣＭＭにつき２つのバスを有する受動バスバックプレーン１１６を備える。示される実施の形態において、受動バスバックプレーン１１６は、次世代の周辺構成要素相互接続（ＰＣＩＸ：Peripheral Component Interconnect）バスを使用するが、インフィニバンド(Infiniband)やラピッドＩＯ(RapidIO)等の交換アーキテクチャだけでなく、ＰＣＩローカルバス等の従来のバスアーキテクチャをも含むいかなるバス技術が用いられても良いことは理解されるであろう。受動バスバックプレーン１１６は第１のデータバス１２０、第２のデータバス１２４、第３のデータバス１２８、第４のデータバス１３２を有することができる。第１のデータバス１２０及び第２のデータバス１２４は、ＣＭＭバス接続１３４を介してＣＭＭ−Ａ１０４上のバックプレーンインタフェース１１２に接続し、第３のデータバス１２８及び第４のデータバス１３２は、ＣＭＭバス接続１３４を介してＣＭＭ−Ｂ１０８上のバックプレーンインタフェース１１２に接続する。
【００２０】
図２に示される実施の形態において、ＰＣＩＸバスは受動バスバックプレーン１１６において使用される。ＰＣＩＸバスを使用することによって、良く理解され比較的単純なバスプロトコルを有する受動バスバックプレーン１１６に接続される比較的高パフォーマンスのバス相互接続構成要素が可能となる。ＰＣＩＸ技術は、従来のＰＣＩバスを活用する次世代の技術である。
【００２１】
ネットワーク記憶装置１００は、１つ以上のチャネルインタフェースモジュール（ＣＩＭ：Channel Interface Module）を有する。図２に示される実施の形態において、ＣＩＭ−１  １３６とＣＩＭ−２  １４０の、２つのＣＩＭがあるが、この数はネットワーク記憶装置１００が使用される構成及びアプリケーションに応じて変化しても良いことは理解されるであろう。各ＣＩＭ１３６、１４０は、２つのＣＩＭバスインタフェースポート１４４ａ、１４４ｂを有する。各ＣＩＭ１３６、１４０上では、１つのＣＩＭバスインタフェースポート１４４ａがＣＩＭバス接続１４６を介してＣＭＭ−Ａ１０４に接続される１つのバスと接続し、１つのＣＩＭバスインタフェースポート１４４ｂがＣＩＭバス接続１４６を介してＣＭＭ−Ｂ１０８に接続される１つのバスと接続する。図２に示される実施の形態において、ＣＩＭ−１  １３６が第１のデータバス１２０及び第３のデータバス１２８に接続し、ＣＩＭ−２  １０８が第２のデータバス１２４及び第４のデータバス１３２に接続する。各ＣＩＭ１３６、１４０は、ホストコンピュータ（図示せず）に接続されるホストチャネル１５２に接続する２つのホストポート１４８を有する。また、各ＣＩＭ１３６、１４０は、１つ以上の記憶装置（図示せず）に接続されるディスクチャネル１５８に接続する２つのディスクポート１５６をも有する。記憶装置は、ＲＡＩＤアレイ等の記憶アレイであっても良い。下記に詳述するように、別の実施の形態において、ＣＩＭは、要求されるアプリケーション及びチャネルインタフェースに応じて、複数のホストポート或いは複数のディスクポートを含んでも良い。
【００２２】
ホストコンピュータがデータを送信する時、データはホストチャネル１５２上で送信され、ＣＩＭ１３６、１４０上のホストポート１４８で受信される。このデータは、受動バックプレーン１１６を介してＣＭＭ１０４、１０８に送られる。ＣＭＭ１０４、１０８は、下記により詳細に述べられるように、メモリと、記憶装置に記憶するため適切なフォームにデータを配列する処理ユニットとを含む。例えば、システムがＲＡＩＤ５ディスクアレイシステムで使用される場合、ＣＭＭ１０４、１０８は、ディスクに書き込まれるのに適切なデータのストライプ(stripe)にデータを配列し、データのストライプに対するパリティブロックを計算する。よって、ＣＭＭ１０４、１０８は、データを処理し、記憶のためにそれをフォーマット化する。一旦これが完了すれば、ＣＭＭ１０４、１０８は記憶準備ができた状態で、受動バックプレーン１１６を介してＣＩＭ１３６、１４０にデータを転送する。次に、ＣＩＭ１３６、１４０は、ディスクポート１５６に接続された記憶装置にデータを送信する。下記に詳述するように、データは、ＣＩＭ１３６、１４０及び受動バックプレーン１１６を用いてＣＭＭ１０４、１０８間を転送され得る。加えて、後述されるように、ＣＭＭ１０４、１０８及びＣＩＭ１３６、１４０は、特定のドライブ又はホストと対応付けられても良い。
【００２３】
この構成は、ホストチャネル１５２及びディスクチャネル１５８が必ずしも同じチャネル媒体であるとは限らないモジュラー及び冗長アーキテクチャを提供する。ＣＭＭ１０４、１０８及びＣＩＭ１３６、１４０のモジュール性は、比較的低コストのアップグレードと故障ユニットの簡単な交換をも可能にする。下記で詳述するように、ＣＭＭ１０４、１０８間のデータのやり取りに受動バックプレーン１１６を使用することによって、従来の冗長制御装置環境におけるデータのミラー化で要求される、ディスクチャネル１５８又はホストチャネル１５２のチャネル帯域幅の使用をも回避できる。
【００２４】
図３を参照して、ＣＭＭ１０４のブロック図を示す。ＣＭＭ１０４は、ＣＰＵサブシステム１６０、メモリ１６４、及びインタフェースＦＰＧＡ１６８を含むいくつかの構成要素を有する。ＣＰＵサブシステム１６０は、広範に使用されるマイクロプロセッサ等の標準型ＣＰＵであっても良いし、あるいはアプリケーション特有のプロセッサであっても良い。ある実施の形態において、ＣＰＵサブシステム１６０は、Intel Pentium（登録商標）クラスのマイクロプロセッサである。ＣＰＵサブシステム１６０は、ＰＣＩバス等の標準バスを用いて、インタフェースＦＰＧＡ１６８と通信する。メモリ１６４は、ＣＭＭ１０４内でのデータの一時記憶を可能にする。この記憶は、ディスクアレイに書き込まれるのを待っている待ち行列に入れられたデータの記憶等のいくつかの目的で、通常の読み取り及び書き込み動作の間、使用される。ある実施の形態においては、バスインタフェースを用いてインタフェースＦＰＧＡ１６８と通信する、ＤＤＲメモリＤＩＭＭが使用される。
【００２５】
インタフェースＦＰＧＡ１６８は、多数の構成要素を含む。これらの構成要素は単一のＦＰＧＡに結合されても良く、あるいはＣＭＭ１０４内のいくつかの構成要素に存在しても良いことは理解されるべきである。図３に示される実施の形態において、インタフェースＦＰＧＡ１６８は、ＰＣＩインタフェース１７２、メモリインタフェース１７６、ＸＯＲエンジン１８０、ブリッジコア１８４、ＤＭＡエンジン１８８、複数のデータＦＩＦＯ１９２、及び２つのバックプレーンインタフェース１１２を含む。ＰＣＩインタフェース１７２は、ＣＰＵサブシステム１６０とインタフェースＦＰＧＡ１６８の他の部分との間のインタフェースとしての役割を果たす。図示される実施の形態において、このインタフェースは、標準ＰＣＩバス接続を用いる。ＰＣＩインタフェース１７２はブリッジコア１８４に接続し、順次、受動バックプレーン１１６上に配置された第１のデータバス１２０及び第２のデータバス１２４とインタフェースを取るバックプレーンインタフェース１１２に接続する。
【００２６】
メモリインタフェース１７６は、メモリ１６４とインタフェースＦＰＧＡ１６８間のインタフェースとしての役割を果たす。ＸＯＲエンジン１８０は、書き込まれるデータに関するパリティ情報を得るために、記憶されるデータに関するＸＯＲ動作を実行するように働く。ＸＯＲエンジン１８０は、ディスクアレイ内の故障ドライブからデータを復元するためにパリティ情報の使用が必要とされる状況においても使用される。ＸＯＲエンジン１８０は、ＰＣＩインタフェース１７２を通じてＣＰＵサブシステム１６０に接続する。複数のデータＦＩＦＯ１９２はメモリインタフェース１７６及びブリッジコア１８４に接続し、順次ＰＣＩＸインタフェース１９６に接続する。複数のデータＦＩＦＯは、読み取り及び書き込み動作を処理するためにＣＭＭ１０４によって使用される待ち行列として働く。下記に詳述されるように、ＤＭＡエンジン１８８は、ＣＭＭが冗長性を提供するように動作している時、別のＣＭＭにＤＭＡデータを提供するように働く。ある実施の形態において、ＤＭＡエンジン１８８はまた、ＸＯＲ動作を実行するために、ＸＯＲエンジン１８０と関連して用いられ、メモリ１６４内の２つの領域からデータを読み出し、ＸＯＲエンジン１８０にデータを提供し、メモリ１６４内の第３の領域にＸＯＲエンジンの出力を書き込む。
【００２７】
図４を参照して、ＣＩＭ１３６のブロック図を示す。ＣＩＭ１３６は、ＰＣＩＸブリッジ２００と２つのチャネルインタフェース２０４とを含む。ＰＣＩＸブリッジ２００は、第１の交換経路２０８及び第２の交換経路２１２を接続するように動作可能である。各交換経路２０８、２１２は、バスインタフェースポート１４４に接続し、順次ＣＩＭバス接続１４６を介して受動バックプレーン１１６上でＰＣＩＸバスに接続する。ＰＣＩＸブリッジ２００は、交換ＰＣＩＸ経路２０８、２１２上で送信されるデータを監視し、そのデータが交換ＰＣＩＸ経路２０８、２１２間で経路付けされるかどうかを判定するように動作可能である。この、交換ＰＣＩＸ経路２０８、２１２間のデータの監視及び経路付けは、主にＣＭＭ間のミラー化動作を可能にするために用いられ、下記に詳述されるであろう。
【００２８】
チャネルインタフェース２０４は、交換ＰＣＩＸ経路２０８、２１２をホストポート１４８及びディスクポート１５６に接続する。チャネルインタフェース２０４は、交換ＰＣＩＸ経路２０８、２１２上で送信されるデータを監視し、データがホストポート１４８或いはディスクポート１５６のどちらに経路付けされるかを判定するように動作可能である。この監視及び経路付けは、データを適切なディスク又はホスト位置に通過させ、ミラー化データをホスト又はディスクポート１４８、１５６にまで通過させない。チャネルインタフェース２０４は、アプリケーションにとって最適なチャネル媒体上での通信を可能にする。例えば、ホストチャネル１５２及びディスクチャネル１５６がファイバチャネルを使用する場合、チャネルインタフェース２０４は交換ＰＣＩＸ経路２０８、２１２とファイバチャネルとの間のインタフェースの役割を果たすであろう。同様に、ホストチャネル１５２及びディスクチャネル１５８がＳＣＳＩチャネルを使用する場合、チャネルインタフェース２０４は交換ＰＣＩＸ経路２０８、２１２とＳＣＳＩチャネルとの間のインタフェースの役割を果たすであろう。ホストチャネル１５２及びディスクチャネル１５８の両方が同じチャネル媒体を使用する場合、ＣＩＭ１３６は、ホストポート１４８及びディスクポート１５６を使用してホストチャネル１５２及びディスクチャネル１５８の両方との通信のため用いられることができる。
【００２９】
ある実施の形態において、ディスクチャネル１５８及びホストチャネル１５２は、同じチャネル媒体を使用しない。この実施の形態において、異なるチャネル媒体毎に異なるＣＩＭが使用される。例えば、ホストコンピュータがファイバチャネルを使用し、ディスクアレイがＳＣＳＩチャネルを使用する場合、ホストコンピュータはファイバチャネルインタフェースを用いて一方のＣＩＭに接続し、ディスクアレイはＳＣＳＩチャネルインタフェースを用いて他方のＣＩＭに接続するであろう。冗長性が必要とされる場合は、２つ以上のＣＩＭが各チャネル媒体に接続されることがある。
【００３０】
図４に示される実施の形態において、バスインタフェースポート１４４及びＣＩＭバス接続１４６を通じて、第１の交換ＰＣＩＸ経路２０８が第１のデータバス１２０と通信し、第２の交換ＰＣＩＸ経路２１２が第３のデータバス１２８と通信する。下記に詳述するように、ＰＣＩＸブリッジ２００は、一方のＣＭＭが他方のＣＭＭと通信するための通信経路として使用されても良い。ネットワーク制御装置上に存在する残りのＣＩＭに対しても、同様の構成が使用されると理解されるであろう。例えば、図２に示される実施の形態において、ＣＩＭ−２  １４０は第３のデータバス１２８及び第４のデータバス１３２に接続され、従って、ＣＩＭ−２  １４０は、第２のデータバス１２４及び第４のデータバス１３２とそれぞれ通信する交換ＰＣＩＸ経路２０８、２１２を有するであろう。同様に、２つを超えるＣＩＭが存在する場合、アプリケーションによる要求に応じて受動バックプレーン１１６上の適切なバスと通信するよう構成されるであろう。
【００３１】
再び図２〜４を参照すると、ある実施の形態において、ＣＭＭ−Ａ１０４及びＣＭＭ−Ｂ１０８は各ＣＩＭ１３６、１４０の一部分とそれぞれ対応付けられる。このような場合、ＣＭＭ１０４又は１０８は、ＰＣＩＸ経路２０８又は２１２が接続されるバスセグメントからそのＰＣＩＸ経路２０８又は２１２へアクセスできるようにすることによって、１つのＰＣＩＸ経路２０８又は２１２の排他的所有権を有する。例えば、ある実施の形態において、ＣＭＭ−Ａ１０４は、ホストチャネル１５２及びディスクチャネル１５８と通信するために、各ＣＩＭ１３６、１４０においてＰＣＩＸ経路２０８を採用する。この組み合わせは、ＣＩＭ−１  １３６内で第１の交換ＰＣＩＸ経路２０８と対応付けられるバスインタフェースポート１４４をバックプレーン１１６上の第１のデータバス１２０と接続することによって達成される。同様に、ＣＩＭ−２  １４０内の第１の交換ＰＣＩＸ経路２０８に関連するバスインタフェースポート１４４は、受動バックプレーン１１６上の第２のデータバス１２４に接続される。ＣＭＭ−Ａ１０４は、従って、各ＣＩＭ１３６、１４０上の第１の交換ＰＣＩＸ経路を通じてホスト及びディスクチャネル１５２、１５８と通信する。同様に、各ＣＩＭ１３６、１４０内の第２の交換ＰＣＩＸ経路２１２に関連するバスインタフェースポート１４４は、第３及び第４のデータバス１２８、１３２にそれぞれ接続される。ＣＭＭ−Ｂ１０８は、従って、各ＣＩＭ１３６、１４０上の第２の交換ＰＣＩＸ経路２１２を通じてホスト及びディスクチャネル１５２、１５８と通信する。
【００３２】
《実施の形態２》
図５を参照して、冗長構成要素を含むネットワーク記憶装置１００ａのブロック図を示す。本実施の形態において、ＣＭＭ−Ａ１０４とＣＭＭ−Ｂ１０８の２つのＣＭＭが使用される。また、ＣＩＭ−１  １３６とＣＩＭ−２  １４０の２つのＣＩＭが使用される。ＣＭＭ−Ａ１０４及びＣＩＭ−１  １３６は共に受動バックプレーン１１６で第１のデータバス１２０に接続される。ＣＭＭ−Ａ１０４及びＣＩＭ−２  １４０は共に受動バックプレーン１１６で第２のデータバス１２４に接続される。ＣＭＭ−Ｂ１０８及びＣＩＭ−１  １３６は共に受動バックプレーン１１６で第３のデータバス１２８に接続される。ＣＭＭ−Ｂ１０８及びＣＩＭ−２  １４０は共に受動バックプレーン１１６で第４のデータバス１３２に接続される。
【００３３】
当業者によって理解されるように、冗長制御装置は、記憶サブシステムに取り付けられた２つの制御装置間のデータのミラー化を必要とする。これは、制御装置がホストコンピュータからデータを受信し、データをキャッシュし、データが書き込まれたというメッセージをホストコンピュータに送信する、書き戻しキャッシュ(write back cache)の使用による。従って、データが実際に制御装置に格納され、ディスクアレイ内のドライブに書き込まれるためにそこで待機している時、ホストコンピュータは、データが書き込まれたと判定する。故障の際に、このデータが失われないよう確保するのを助けるため、冗長制御装置はこのデータを他の制御装置にミラー化し、従って、他の制御装置にデータの別のコピーができる。このことは、キャッシュの一貫性として既知である。ある実施の形態において、ＣＭＭ１０４、１０８は、ネットワーク記憶装置１００ａにキャッシュの一貫性を提供するためにデータをミラー化する。これは、ＣＭＭ−Ａ１０４とＣＭＭ−Ｂ１０８との間にＤＭＡ経路を設けることによって実現できる。これは、図３に関して上述したように、インタフェースＦＰＧＡ１６８内のＤＭＡエンジン１８８を提供することによって達成されることが出来、共有経路２１６は、図４に関して上述したように、ＰＣＩＸブリッジ２００を利用する。各ＣＭＭ１０４、１０８は、他のＣＭＭにデータを送信するためにこのＤＭＡ経路を用いる。ＤＭＡ経路を利用することによって、２つのＣＭＭ１０４、１０８は、ホストチャネル１５２又はディスクチャネル１５８を使用する必要なくデータをミラー化でき、従って、ディスクチャネル１５８又はホストチャネル１５２のチャネル帯域幅はデータをミラー化しているＣＭＭ１０４、１０８によって消費されない。
【００３４】
従来のミラー化の構成において使用されるよりも少ないチャネル帯域幅しか消費しないことに加えて、ネットワーク記憶装置１００ａは、従来の技法よりも少ない処理リソースしか使用しないように構成されることもできる。図１３は、本発明のある実施の形態において用いられるＤＭＡミラー化方法を示すフローチャートを示す。当業者に理解されるであろうように、ＤＭＡは、コンピュータの処理リソースを消費することなく、取り付けられた装置からコンピュータのメモリにデータを送信することを可能にするいくつかのコンピュータバスアーキテクチャによって提供される能力(capability)である。ある実施の形態において、ＣＭＭ−Ａ及びＣＭＭ−Ｂは、別のＣＭＭによってダイレクトメモリアクセスのために用いられる領域として設計されたＤＤＲ不揮発性ランダムアクセスメモリ(ＮＶＲＡＭ：Non-Volatile Random Access Memory)の指定された部分を有する。ＣＭＭ−Ａ１０４がＣＭＭ−Ｂ１０８にミラー化される必要のあるデータを有する場合、ＣＭＭ−Ａ１０４は、ブロック５００によって示されるように、ＣＭＭ−ＢのＤＤＲメモリ１６４の内容の一部分を書き込み動作に関連するデータブロックに対して無効と記録するために、最初に第１のＤＭＡトランザクションを開始する。ブロック５００によって示されるように、第１のＤＭＡトランザクションに含まれるものには、指定されたデータブロックに記憶されたミラー化されるユーザデータがある。
【００３５】
図１４を参照して、ＤＭＡトランザクションに関連するハードウェアを詳細に記述する。ＤＭＡトランザクションを行う時、ＣＭＭ−Ａ１０４のＣＰＵサブシステム１６０は、ＣＭＭ−Ａ１０４上のＤＭＡエンジン１８８の動作を制御する。ＣＭＭ−Ａ１０４上のＤＭＡエンジン１８８は、ＣＩＭ−１  １３６のＰＣＩＸブリッジ２００を通じてＣＭＭ−Ｂ１０８のＤＤＲメモリ１６４及びＣＭＭ−Ｂ１０８にアクセスする。従って、ＣＭＭ−Ａ１０４上のＤＭＡエンジン１８８は、ＣＭＭ−Ｂ１０８のＤＤＲメモリ１６４の内容を無効として記録するコマンドを与えられた時、ＣＭＭ−ＡのインタフェースＦＰＧＡ１６８の複数のデータＦＩＦＯ１９２及びバックプレーンインタフェース１１２を通じてＤＭＡ経路にアクセスし、ＤＭＡ経路を通じてそのコマンドをＣＭＭ−Ｂ１０８のインタフェースＦＰＧＡ１６８に転送する。コマンドは、バックプレーンインタフェース１１２及び複数のデータＦＩＦＯ１９２を通じて、ＣＭＭ−Ｂ１０８のインタフェースＦＰＧＡ１６８を通じてメモリインターフェース１７６に経路付けされ、次にＤＤＲメモリ１６４に経路付けされる。このＤＭＡ経路は、図１４の破線によって示される。従って、ＣＭＭ−ＢのＣＰＵサブシステム１６０及びＣＭＭ−Ｂ１０８のＤＭＡエンジン１８８は、ＣＭＭ−Ａ１０４によって開始されるＤＭＡトランザクションに関与しない。ユーザデータを転送している時、ＣＭＭ−Ａ１０４のＣＰＵサブシステム１６０は、第１のＤＭＡコマンドを続行する。ＤＭＡコマンドは、ＣＭＭ−Ａ１０４のＤＤＲメモリ１６４内のソースアドレス、ＣＭＭ−Ｂ１０８のＮＶＲＡＭ１６４内の宛先アドレス、及び転送されるデータブロック長を示す。ＣＭＭ−Ａ１０４のＤＭＡエンジン１８８は、ＤＭＡコマンドを受信し、複数のデータＦＩＦＯ１９２及びメモリインターフェース１７６を通じてＣＭＭ−Ａ１０４のＤＤＲメモリ１６４にアクセスする。ＣＭＭ−Ａ１０４のＤＭＡエンジン１８８は、次に、ＤＭＡ経路上で、ＣＭＭ−Ａ１０４のインタフェースＦＰＧＡ１６８を通じてＣＭＭ−Ａ１０４のＮＶＲＡＭ１６４から、ＣＭＭ−Ｂ１０８のインタフェースＦＰＧＡ１６８を通じてＣＭＭ−Ｂ１０８のＤＤＲメモリ１６４の適切な位置に、適切なデータを転送する。ブロック５０４を参照すると、ＣＭＭ−Ａ１０４は、次に、ＣＭＭ−Ｂ１０８のＤＤＲメモリ１６４の内容の一部分を指定されたデータブロックに対して有効として記録するために第２のＤＭＡトランザクションを開始する。トランザクションはＤＭＡ転送であるので、それらはＣＭＭ−Ｂ１０８からの処理リソースを必要としたりＣＭＭ−Ｂ１０８を中断したりせず、ＣＭＭ−Ｂはミラー化動作から独立して他の処理機能を実行できるので、システムのパフォーマンスを高める。
【００３６】
他の実施の形態において、図１３に示された２つのＤＭＡトランザクションは、単一の順序付けられたＤＭＡトランザクションに組み合わせられる。この実施の形態において、各ＣＭＭ１０８、１０８内のＤＤＲメモリ１６４は、ユーザデータに関連するメタデータを記憶するための２つの記憶領域を有する。ＤＭＡ転送を開始する場合、第１のユニークな文字列が第１の記憶領域に記憶され、その後に転送されるデータが続く。ＤＭＡ転送の最後に、第１のユニークな文字列は第２の記憶領域に記憶される。ＣＭＭ１０４、１０８が故障から回復されなければならない際には、第１の及び第２の記憶領域内に記憶された文字列が比較される。比較はＣＭＭの故障が起こった際にのみ実行され、従って、通常の動作の間、パフォーマンスを低下させない。文字列が一致した場合、ミラー化されたデータが有効であるということを示す。
【００３７】
図５を参照すると、ＣＭＭ−Ａ１０４とＣＭＭ−Ｂ１０８との間にはまたフェイルオーバーリセットリンク２４０がある。フェイルオーバーリセットリンク２４０は、ＣＭＭ１０４、１０８のうち１つの故障を伝達するために使用される。ある実施の形態において、フェイルオーバーリセットリンク２４０は、ＣＭＭ−Ａ１０４とＣＭＭ−Ｂ１０８間のシリアル接続である。この実施の形態において、各ＣＭＭ１０４、１０８は、フェイルオーバーリセットリンク２４０上で伝達され他のＣＭＭによって監視される心拍(heartbeat)信号を維持する。心拍信号に問題が検知された場合、ＣＭＭ１０４、１０８は、他のＣＭＭの動作を終了させるためにフェイルオーバーリセットリンク２４０上で信号を送信できる。例えば、ＣＭＭ−Ｂ１０８に故障がある場合、或いはＣＭＭ−Ｂ１０８が正しく動作していない場合、ＣＭＭ−Ａ１０４は、ＣＭＭ−Ｂ１０８からの心拍信号がもはや活性(active)でないことを検知するであろう。心拍信号が受信されない所定期間の経過後、ＣＭＭ−Ａ１０４はＣＭＭ−Ｂ１０８に終了信号を送信する。ＣＭＭ−Ｂ１０８は終了信号を受信すると、動作を停止する。次に、ＣＭＭ−Ａが、全ての読み取り及び書き込み動作の制御を引き受ける。これは、ＣＭＭ−Ｂが異常な動作をしているかもしれないため必要である。同様に、ＣＭＭ−Ａ１０４が故障した場合、ＣＭＭ−Ｂ１０８がフェイルオーバーリセットリンク２４０上で指示を受信し、全ての読み取り及び書き込み動作の制御を引き受けるであろう。したがって、システムは冗長であり、ＣＭＭ１０４又は１０８が故障した時でも動作を継続する。
【００３８】
図６を参照して、１つのＣＭＭが故障した時のシステムの動作を説明する。図６に示されるように、ネットワーク記憶装置１００ａは、ＣＭＭ−Ａ１０４とＣＭＭ−Ｂ１０８、受動ＰＣＩＸバックプレーン１１６、及びＣＩＭ−１  １３６とＣＩＭ−２  １４０を備える。ＣＭＭ−Ｂ１０８が故障した時、ＣＭＭ−Ａ１０４が上記のとおり、フェイルオーバーリセットリンク２４０越しに故障を検知し、ＣＭＭ−Ｂ１０８での動作を終了させる。次に、ＣＭＭ−Ａ１０４は、それまでＣＭＭ−Ｂ１０８によって実行されていた全ての記憶及び制御動作の制御を担う。これが発生すると、ＣＭＭ−Ａ１０４は、ＣＭＭ−Ｂ１０８との通信を無効にするためにＣＩＭ−１  １３６及びＣＩＭ−２  １４０にコマンドを送信する。この場合、ＣＩＭ−１  １３６は、このコマンドを受信し、第４のデータバス１３２に接続する第１の交換経路２０８を無効にし、ＣＭＭ−Ｂ１０８に関連するＰＣＩＸブリッジ２００及びチャネルインタフェース２０４をリセットする。ＣＩＭ−２  １４０はまた、ＣＭＭ−Ａ１０４からのコマンドを受信し、第３のデータバス１２８に接続する第２の交換経路２１２を無効にし、ＣＭＭ−Ｂ１０８に関連するＰＣＩＸブリッジ２００及びチャネルインタフェース２０４をリセットするために、同じ動作を実行する。ある実施の形態において、受動バックプレーン１１６は、ＣＩＭ１３６、１４０上のバスインタフェースポート１４４に接続し、ＣＭＭ１０４、１０８に接続される制御論理線を含む。ＣＭＭ１０４、１０８は、ＣＩＭ１３６、１４０上のバスインタフェースポート１４４を有効にし、かつ無効にするためにこれらの制御論理線を使用できる。これに代えて、例えば、受動バックプレーン１１６上のＰＣＩＸバスを介してコマンド情報を受信するＣＩＭ内の制御論理等の他の実施の形態が、交換経路２０８、２１２を有効にし、かつ無効にするために用いられても良い。
【００３９】
図７を参照して、１つのＣＩＭが故障した時のシステムの動作を説明する。ＣＭＭ１０４、１０８はＣＩＭ１３６、１４０を監視し、エラーや故障の際には、故障を有するＣＩＭ１３６又は１４０の動作を終了させるために制御論理線上でコマンドを伝達する。図７に示されるように、ＣＩＭ−１  １３６は故障を有する。ＣＭＭ−Ａ１０４は、ＣＩＭ−１  １３６に故障があると判定し、ＣＩＭ−１  １３６を無効にする。次に、ＣＭＭ−Ａ１０４は、ＣＩＭ−２  １４０上のＰＣＩＸブリッジ２００を介してＣＭＭ−Ｂ１０８にこの情報を伝達する。
【００４０】
《実施の形態３》
図８を参照して、４つのＣＩＭモジュールが存在するネットワーク記憶装置１００ｂのブロック図を示す。本実施の形態において、ＣＭＭ−Ａ１０４及びＣＭＭ−Ｂ１０８の２つのＣＭＭは、ＣＩＭ−１  １３６、ＣＩＭ−２  １４０、ＣＩＭ−３  ３００、及びＣＩＭ−４  ３０４の４つのＣＩＭと通信する。この実施の形態において、ＣＭＭ−Ａ１０４は、受動バックプレーン１１６内の第１の及び第２のデータバス１２０、１２４に接続される。同様に、ＣＭＭ−Ｂは、受動バックプレーン１１６内の第３の及び第４のデータバス１２８、１３２に接続される。ＣＩＭ−１は第２の及び第４のデータバス１２４、１３２に接続され、従って各ＣＭＭ１０４、１０８にＣＩＭ−１  １３６へのアクセスを与える。ＣＩＭ−２  １４０は第１の及び第３のデータバス１２０、１２８に接続され、ＣＩＭ-３  ３００は第２の及び第４のデータバス１２４、１３２に接続され、ＣＩＭ−４は第１の及び第３のデータバス１２０、１２８に接続される。従って、各ＣＭＭ１０４、１０８は、各ＣＩＭと通信可能である。本実施の形態のネットワーク記憶装置は、例えば、複数のホストが存在する時等を含むいくつかの場合に有用である。本実施の形態において、ＣＩＭ−１  １３６及びＣＩＭ−２  １４０が第１のホストへの通信を提供しても良く、ＣＩＭ−３  ３００及びＣＩＭ−４  ３０４が第２のホストへの通信を提供しても良い。２つの別個のＲＡＩＤアレイ等の複数のディスクノードに対しても、同じ配列が実行できる。理解されるように、この構成は冗長動作を提供する一方で、１つ以上のホストノードと１つ以上のディスクノードとの間の通信を提供することができる拡張性のあるシステムを提供する。加えて、こうした実施の形態は、異なるチャネル媒体を用いるホスト及び／又はディスクアレイを接続するのに有用であるかもしれない。例えば、現行のシステムは２つのＣＩＭを備え、ホスト及びディスクチャネルの両方にファイバチャネル接続を使用するかもしれない。ユーザがシステムをアップグレードしてＳＣＳＩ接続を用いる別のディスクアレイを追加したいと考える場合、ＳＣＳＩチャネルとの通信を可能にする追加ＣＩＭを付け加えることができるため、既存のハードウェアを交換する必要なく、現行のシステムのアップグレードが可能になる。
【００４１】
図９〜１１を参照して、ＣＩＭが採っても良い異なる構成、及びＣＩＭが接続しても良い異なるチャネル媒体を提供するためにいくつかのＣＩＭの別の実施の形態を示す。図９は、ＣＩＭ１３６ａを構成するＰＣＩＸ・ツー・ギガビットインターコネクト（ＧＢＩＣ：Gigabit Interconnect）のブロック図を示す。ＣＩＭ１３６ａ内では、ＰＣＩＸブリッジ２００ａは、デュアルポートＧＢＩＣインタフェース４００に接続する。デュアルポートＧＢＩＣインタフェース４００の各ポートは、シリアライザ／デシリアライザ（ＳＥＲＤＥＳ：Serializer/Deserializer）４０４ａ、４０４ｂに接続する。各ＳＥＲＤＥＳ４０４ａ、４０４ｂは、チャネル接続を用いてチャネル媒体に接続する。図９に示される実施の形態において、一方のＳＥＲＤＥＳ４０４ａがＧＢＩＣホストチャネル１５２ａに接続し、他方のＳＥＲＤＥＳ４０４ｂがＧＢＩＣディスクチャネル１５８ａに接続する。
【００４２】
図１０は、ＰＣＩＸ・ツー・ＳＣＳＩ ＣＩＭ１３６ｂのブロック図を示す。ＣＩＭ１３６ｂ内では、ＰＣＩＸブリッジ２００ｂが、デュアルポートＵｌｔｒａ３２０ＳＣＳＩインタフェース４０８に接続する。デュアルポートＵｌｔｒａ３２０ＳＣＳＩインタフェース４０８の各ポートは、ホストチャネル又はディスクチャネルに接続し、ＳＣＳＩシステムの必要に応じて、終端４１２接続をも有する。図１０に示される実施の形態において、デュアルポートＵｌｔｒａ３２０ＳＣＳＩインタフェース４０８の１つのポートが超高密度相互接続（ＶＨＤＩＣ：Very High Density Interconnect）ホストチャネル１５２ｂに接続し、デュアルポートＵｌｔｒａ３２０ＳＣＳＩインタフェース４０８の１つのポートがＶＨＤＩＣディスクチャネル１５８ｂに接続する。
【００４３】
図１１は、交換経路内で使用する高速スイッチ接続４１６ａ、４１６ｂを採用するＰＣＩＸ・ツー・イーサネット（登録商標）ＣＩＭ１３６ｃのブロック図を示す。高速スイッチ接続４１６ａ、４１６ｂは、高速スイッチ接続４１６ａ、４１６ｂを有効及び無効にする役割を果たすイネーブル入力を含むバス継電部である。各高速スイッチ接続４１６ａ、４１６ｂは、加速ＦＰＧＡとデータＦＩＦＯとを含むインタフェース接続４２０に接続する。インタフェース接続４２０は、データをイーサネット（登録商標）接続上で伝達するためのデータへの適切な機能を実行するギガビットイーサネット（登録商標）ＡＳＩＣ４２４に接続する。ギガビットイーサネット（登録商標）ＡＳＩＣ４２４は、信号を物理信号に変換するＭＡＣ／物理コンバータ４２８に接続し、次に適切な電圧で信号を出力するために変圧器４３２に経路付けされる。ある実施の形態において、変圧器４３２は、ディスクチャネルへのＧＢＩＣ接続部１５８ｃに接続する。図１１の実施の形態において、冗長システムが必要とされる場合、共有経路が他のＣＩＭに提供されるであろう。図９〜１１に示されるような異なるインタフェースモジュールの組合せを用いた単一のシステムにおいて、異なるチャネル媒体が使用されても良いことは評価されるであろう。例えば、ホストコンピュータはファイバチャネル媒体を用いてネットワーク記憶制御装置に接続し、ネットワーク記憶制御装置はＳＣＳＩチャネル媒体を用いてディスクアレイに接続しても良い。
【００４４】
本発明の上記の説明は、例証と解説を目的として提示された。更に、説明は、本発明を本明細書に開示された形式に限定することを意図していない。それ故に、関連技術の技能と知識の範囲内での変形や変異は上記の教示に相応し、本発明の範囲内である。上記に記載される実施の形態は、更に、発明を実行する現在既知の最良の様態を説明することと、上記実施の形態又は別の実施の形態で、本発明の特別な用途又は用法によって要求される各種変形と共に、他の当業者に本発明を利用可能とさせることを意図する。添付された請求項は、先行技術が許す程度にまで別の実施の形態を含むように解釈されることを意図する。
【図面の簡単な説明】
【００４５】
【図１】従来例のデュアル制御装置ネットワーク記憶制御装置を示すブロック図
【図２】本発明のネットワーク記憶装置を示すブロック図
【図３】本発明の制御装置管理モジュルを示すブロック図である
【図４】本発明のチャネルインタフェースモジュールを示すブロック図である
【図５】本発明の冗長ネットワーク記憶装置を示すブロック図である
【図６】故障した制御装置管理モジュールを表す冗長ネットワーク記憶装置を示すブロック図
【図７】故障したチャネルインタフェースモジュールを表す冗長ネットワーク記憶装置を示すブロック図
【図８】４つのチャネルインタフェースモジュールを現す冗長ネットワーク記憶装置を示すブロック図
【図９】ギガビット相互接続チャネルを利用したネットワーク記憶装置を示すブロック図
【図１０】Ｕｌｔｒａ３２０ＳＣＳＩチャネルを利用したネットワーク記憶装置を示すブロック図
【図１１】イーサネット（登録商標）チャネルを利用したネットワーク記憶装置を示すブロック図
【図１２】共有ディスクチャネル上でプロセッサ割り込みを用いて、両方がアクティブな(active/active)制御装置の組においてデータをミラー化する際に利用されるステップを示すフローチャート
【図１３】共有バス及びダイレクトメモリアクセスを用いる制御装置管理モジュール間でのデータのミラー化を利用するステップを示すフローチャート
【図１４】ＣＭＭ−ＡとＣＭＭ−Ｂとの間のＤＭＡ経路を強調した、本発明のネットワーク記憶装置を示すブロック図
【符号の説明】
【００４６】
１００、１００ａ、１００ｂ  ネットワーク記憶装置
１０４、１０８  制御装置管理モジュール（ＣＭＭ）
１１２  バックプレーンインタフェース
１１６  受動バスバックプレーン
１２０、１２４、１２８、１３２  データバス
１３４  ＣＭＭバス接続
１３６、１４０、３００、３０４  チャネルインタフェースモジュール（ＣＩＭ）
１４４  ＣＩＭバスインタフェースポート
１４６  ＣＩＭバス接続
１４８  ホストポート
１５６  ディスクポート
１５２  ホストチャネル
１５８  ディスクチャネル
１６０  ＣＰＵサブシステム
１６４  メモリ
１６８  インタフェースＦＰＧＡ
１７２  ＰＣＩインタフェース
１７６  メモリインタフェース
１８０  ＸＯＲエンジン
１８４  ブリッジコア
１８８  ＤＭＡエンジン
１９２  データＦＩＦＯ
２００  ＰＣＩＸブリッジ
２０４  チャネルインタフェース
２０８、２１２  交換経路
２４０  フェイルオーバーリセットリンク
【図１】
2005508551.tif 000003
【図２】
2005508551.tif 000004
【図３】
2005508551.tif 000005
【図４】
2005508551.tif 000006
【図５】
2005508551.tif 000007
【図６】
2005508551.tif 000008
【図７】
2005508551.tif 000009
【図８】
2005508551.tif 000010
【図９】
2005508551.tif 000011
【図１０】
2005508551.tif 000012
【図１１】
2005508551.tif 000013
【図１２】
2005508551.tif 000014
【図１３】
2005508551.tif 000015
【図１４】
2005508551.tif 000016
【国際公開パンフレット】
2005508551.tif 000017
2005508551.tif 000018
2005508551.tif 000019
2005508551.tif 000020
2005508551.tif 000021
2005508551.tif 000022
2005508551.tif 000023
2005508551.tif 000024
2005508551.tif 000025
2005508551.tif 000026
2005508551.tif 000027
2005508551.tif 000028
2005508551.tif 000029
2005508551.tif 000030
2005508551.tif 000031
2005508551.tif 000032
2005508551.tif 000033
2005508551.tif 000034
2005508551.tif 000035
2005508551.tif 000036
2005508551.tif 000037
2005508551.tif 000038
2005508551.tif 000039
2005508551.tif 000040
2005508551.tif 000041
2005508551.tif 000042
2005508551.tif 000043
2005508551.tif 000044
2005508551.tif 000045
2005508551.tif 000046
2005508551.tif 000047
2005508551.tif 000048
2005508551.tif 000049
2005508551.tif 000050
2005508551.tif 000051
2005508551.tif 000052
2005508551.tif 000053
【国際調査報告】
2005508551.tif 000054