(57)【要約】【課題】複数のＲＡＩＤコントローラ（１０４）が、複数のホスト・コンピュータ（１０２）に共用ストレージ・デバイス（１０８）への読取り／書込みアクセスを提供するＲＡＩＤシステム（１００）でキャッシュ・コヒーレンシを提供する方法を提供すること。【解決手段】各コントローラに、読取りキャッシュ（１１４）、書込みキャッシュ（１１６）、および書込みミラー・キャッシュ（１１８）が含まれ、コントローラおよび共用ストレージ・デバイスが、共通のバックエンド・バス（１１０）を介して互いに結合される。コントローラが、書込みコマンド（３０２）をホストから受け取る時に、必ず、そのコントローラが、データを共用デバイス、その書込みキャッシュ、および他のコントローラの書込みミラー・キャッシュに書き込む。コントローラが、ホストから読取りコマンド（３２０）を受け取る時に、必ず、そのコントローラが、その書込みミラー・キャッシュ、書込みキャッシュ、読取りキャッシュ、およびストレージ・デバイスから、この順番で要求されたデータを返すことを試みる。【選択図】図３
2004538532.tif 000002
【特許請求の範囲】
【請求項１】
複数のＲＡＩＤコントローラとストレージ・デバイスの組とを有するＲＡＩＤシステム内で使用される同期化方法であって、
第１データを上記ストレージ・デバイスに書き込む書込みコマンドに応答して、上記コントローラの第１コントローラが、上記第１データを上記ストレージ・デバイスに書き込み、上記第１データを１つまたは複数の他のコントローラに関連するミラー・キャッシュにコピーすることと、
第２データを上記ストレージ・デバイスから読み取る読取りコマンドに応答して、第２コントローラが、上記ミラー・キャッシュの関連するミラー・キャッシュ内で上記データに関して検査し、上記データが上記関連するミラー・キャッシュにある場合に、上記読取りコマンドを発行したホスト・コンピュータに上記第２データを返すことと
を含む、同期化方法。
【請求項２】
上記ＲＡＩＤコントローラが、関連する読取りキャッシュおよび関連する書込みキャッシュを有し、上記方法が、さらに、
第１データを上記ストレージ・デバイスに書き込む上記書込みコマンドに応答して、上記第１コントローラが、上記第１データをその関連する書込みキャッシュにも書き込むことと、
第２データを上記ストレージ・デバイスから読み取る上記読取りコマンドに応答して、上記第２コントローラが、
上記関連する書込みキャッシュ内で上記第２データに関して検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、
上記読取りキャッシュ内で上記第２データに関して検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、
上記第２データが上記関連するキャッシュにない場合に、上記第２データを上記ストレージ・デバイスから取り出し、上記読取りコマンドを発行した上記ホスト・コンピュータに上記第２データを返すことと
を行うことと
を含む、請求項１に記載の同期化方法。
【請求項３】
上記関連するミラー・キャッシュへの上記第１データの上記コピーが、上記コントローラおよび上記ストレージ・デバイスが結合されるバックエンド・バス上での上記関連するミラー・キャッシュへの上記第１データのブロードキャストを含む、請求項１に記載の同期化方法。
【請求項４】
上記第１データの上記ブロードキャストが、上記ストレージ・デバイスへの上記第１データの上記書込みに最小限を超えないオーバーヘッドを追加する、請求項３に記載の同期化方法。
【請求項５】
上記第１データの上記ブロードキャストおよび上記書込みが、同時に実行される、請求項４に記載の同期化方法。
【請求項６】
上記バックエンド・バスが、
１つまたは複数のＦｉｂｒｅ Ｃｈａｎｎｅｌバスと、
１つまたは複数のＳＣＳＩバスと
の任意の組合せを含む、請求項３に記載の同期化方法。
【請求項７】
上記ストレージ・デバイスが、磁気ディスクを含む、請求項１に記載の同期化方法。
【請求項８】
上記関連するミラー・キャッシュへの上記第１データの上記コピーが、上記コントローラおよび上記ストレージ・デバイスが結合されるバックエンド・バス上での上記関連するミラー・キャッシュへの上記第１データの、ＳＣＳＩベンダ・ユニーク・コマンドを使用する送出を含む、請求項１に記載の同期化方法。
【請求項９】
ストレージ・デバイスの組へのアクセスを提供する複数のＲＡＩＤコントローラを含むＲＡＩＤシステム内で使用されるキャッシュ・システムであって、
上記コントローラからアクセス可能な複数のミラー・キャッシュと、
特定のアドレスにデータを書き込む書込みコマンドを受け取った時に、上記ストレージ・デバイスに上記データを書き込むことのほかに、１つまたは複数の異なるＲＡＩＤコントローラの上記ミラー・キャッシュに上記データをコピーするように構成された第１ＲＡＩＤコントローラと
を含み、
上記ＲＡＩＤコントローラのいずれもが、上記特定のアドレスの上記データを読み取る読取りコマンドを受け取った後に、上記ミラー・キャッシュの関連するミラー・キャッシュから上記データを取り出すことをまず試みるように構成される
キャッシュ・システム。
【請求項１０】
上記複数のコントローラおよび上記ストレージ・デバイスの組が、バックエンド・バスを介して接続される、請求項９に記載のキャッシュ・システム。
【請求項１１】
上記バックエンド・バスが、
１つまたは複数のＦｉｂｒｅ Ｃｈａｎｎｅｌバスと、
１つまたは複数のＳＣＳＩバスと
の任意の組合せを含む、請求項１０に記載のキャッシュ・システム。
【請求項１２】
上記コントローラからアクセス可能な複数の書込みキャッシュと、
上記コントローラからアクセス可能な複数の読取りキャッシュと
をさらに含み、
上記特定のアドレスのデータを読み取る読取りコマンドに応答して、上記第２コントローラが、
そのミラー・キャッシュ内で上記データについて検査し、上記データがある場合に、上記読取りコマンドを発行したホスト・コンピュータに上記データを返し、
その書込みキャッシュ内で上記データについて検査し、上記データがある場合に、上記ホストに上記データを返し、
その読取りキャッシュ内で上記データについて検査し、上記データがある場合に、上記ホストに上記データを返し、
上記データが上記キャッシュのいずれにもない場合に、上記データを上記ストレージ・デバイスから取り出し、上記データを上記ホストに返す
請求項９に記載のキャッシュ・システム。
【請求項１３】
上記第１ＲＡＩＤコントローラが、上記コントローラおよび上記ストレージ・デバイスが結合されるＳＣＳＩバス上で伝送されるＳＣＳＩベンダ・ユニーク・コマンドを使用して、上記第１データを上記ミラー・キャッシュにコピーするように構成される、請求項９に記載のキャッシュ・システム。
【請求項１４】
上記ＳＣＳＩバスが、バックエンド・バスを含む、請求項１３に記載のキャッシュ・システム。
【請求項１５】
少なくとも第１および第２のコントローラと少なくとも１つのストレージ・デバイスとを含むデータ・ストレージ・システム内で使用される同期化方法であって、
第１データを上記ストレージ・デバイスに書き込む書込みコマンドに応答して、上記第１コントローラが、上記第１データを上記ストレージ・デバイスに書き込み、上記第１データを上記第２コントローラに関連するミラー・キャッシュにコピーすることと、
第２データを上記ストレージ・デバイスから読み取る読取りコマンドに応答して、上記第２コントローラが、上記ミラー・キャッシュの関連するミラー・キャッシュ内で上記データについて検査し、上記データが上記関連するミラー・キャッシュにある場合に、上記読取りコマンドを発行したホスト・コンピュータに上記第２データを返すことと
を含む、同期化方法。
【請求項１６】
上記コントローラが、関連する読取りキャッシュおよび関連する書込みキャッシュを有し、
第１データを上記ストレージ・デバイスに書き込む上記書込みコマンドに応答して、上記第１コントローラが、上記第１データをその関連する書込みキャッシュにも書き込むことと、
第２データを上記ストレージ・デバイスから読み取る上記読取りコマンドに応答して、上記第２コントローラが、
上記関連する書込みキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、
上記読取りキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、
上記第２データが上記関連するキャッシュにない場合に、上記第２データを上記ストレージ・デバイスから取り出し、上記読取りコマンドを発行した上記ホスト・コンピュータに上記第２データを返すことと
を行うことと
をさらに含む、請求項１５に記載の同期化方法。
【請求項１７】
上記関連するミラー・キャッシュへの上記第１データの上記コピーが、上記コントローラおよび上記ストレージ・デバイスが結合されるバス上での上記関連するミラー・キャッシュへの上記第１データのブロードキャストを含む、請求項１５に記載の同期化方法。
【請求項１８】
上記第１データの上記ブロードキャストが、上記ストレージ・デバイスへの上記第１データの上記書込みに実質的にオーバーヘッドを追加しない、請求項１７に記載の同期化方法。
【請求項１９】
上記第１データの上記ブロードキャストおよび上記書込みが、実質的に同時に実行される、請求項１８に記載の同期化方法。
【請求項２０】
上記バスが、１つまたは複数のＦｉｂｒｅ Ｃｈａｎｎｅｌバスと、１つまたは複数のＳＣＳＩバスとの任意の組合せを含む、請求項１８に記載の同期化方法。
【請求項２１】
上記ストレージ・デバイスが、磁気ディスク・ドライブを含む、請求項１５に記載の同期化方法。
【請求項２２】
上記関連するミラー・キャッシュへの上記第１データの上記コピーが、上記コントローラおよび上記ストレージ・デバイスが結合されるバス上での上記関連するミラー・キャッシュへの上記第１データの、ＳＣＳＩベンダ・ユニーク・コマンドを使用する送出を含む、請求項１５に記載の同期化方法。
【請求項２３】
上記バスが、上記コントローラと上記ストレージ・デバイスとを結合するバックエンド・バスである、請求項２２に記載の同期化方法。
【請求項２４】
コンピュータ・システムと共に使用されるコンピュータ・プログラムであって、上記コンピュータ・プログラム製品が、コンピュータ可読記憶媒体およびその中で実施されたコンピュータ・プログラム機構を含み、上記コンピュータ・プログラム機構が、
ホスト・コンピュータに接続された複数のコントローラと、データ・ストレージ・システムにグループ化された１つまたは複数のディスク・ストレージ・デバイスとの少なくとも１つに、指定された形で機能するように指示するプログラム・モジュール
を含み、上記プログラム・モジュールが、
第１データを上記ストレージ・デバイスに書き込む書込みコマンドに応答して、上記コントローラの第１コントローラが、上記第１データを上記ストレージ・デバイスに書き込み、１つまたは複数の他のコントローラに関連するミラー・キャッシュに上記第１データをコピーすることと、
第２データを上記ストレージ・デバイスから読み取る読取りコマンドに応答して、第２コントローラが、上記ミラー・キャッシュの関連するミラー・キャッシュ内で上記データについて検査し、上記データが上記関連するミラー・キャッシュにある場合に、上記読取りコマンドを発行したホスト・コンピュータに上記第２データを返すことと
を行う命令を含む、コンピュータ・プログラム。
【請求項２５】
上記コンピュータ・プログラム機構およびコンピュータ機構が、
第１データを上記ストレージ・デバイスに書き込む上記書込みコマンドに応答して、上記第１コントローラが、上記第１データをその関連する書込みキャッシュにも書き込むことと、
第２データを上記ストレージ・デバイスから読み取る上記読取りコマンドに応答して、上記第２コントローラが、
上記関連する書込みキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、
上記読取りキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、
上記第２データが上記関連するキャッシュにない場合に、上記第２データを上記ストレージ・デバイスから取り出し、上記読取りコマンドを発行した上記ホスト・コンピュータに上記第２データを返すことと
を行うことと
の命令を含むプログラム・モジュールをさらに含む、請求項２４に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、全般的にはＲＡＩＤシステムでのディスクの読取りおよび書込みのキャッシングの方法に関し、具体的には、ＲＡＩＤシステムでディスク読取りおよびディスク書込みをキャッシングするのに使用される複数のキャッシュのコヒーレンシを維持する方法に関する。
【０００２】
【従来の技術】
図１に、通常の複数コントローラＲＡＩＤシステム１００（ＲＡＩＤは、「Ｒｅｄｕｎｄａｎｔ Ａｒｒａｙ ｏｆ Ｉｎｄｅｐｅｎｄｅｎｔ Ｄｉｓｋｓ」の頭字語である）のブロック図を示す。各ホスト・コンピュータ１０２は、Ｆｉｂｒｅ ＣｈａｎｎｅｌまたはＳＣＳＩバス１０６のいずれかを介し、ホスト・バス・アダプタ（ＨＢＡ）を介してめいめいのＲＡＩＤコントローラ１０４に接続される。各ＲＡＩＤコントローラ１０４は、ＲＡＩＤコントローラ１０４がバックエンドのＦｉｂｒｅ ＣｈａｎｎｅｌまたはＳＣＳＩディスク・バス１１０を介して接続されたストレージ・デバイス１０８の共用セットに向けられた、めいめいのホスト１０２からの読取り要求および書込み要求を調整する。コントローラ１０４は、同一のストレージ・デバイス１０８を使用し、その結果、各ホスト・コンピュータ１０２が、同一のデータにアクセスできるようになる。図１には、２つのコントローラだけが図示されているが、図示のアーキテクチャは、Ｎ個のコントローラのシステムに拡張可能である（ここで、Ｎは、３以上の整数である）。コントローラ１０４は、キャッシュ・メモリ１１２を有し、このキャッシュ・メモリ１１２に、ホスト１０２によって最も最近に読み書きされたデータが一時的に保管される。これらのキャッシュ・メモリ１１２の動作を、これから図２に関して説明する。
【０００３】
図２は、キャッシュ１１２のブロック図であり、このキャッシュ１１２には、読取りキャッシュ１１４、書込みキャッシュ１１６、および書込みミラー・キャッシュ１１８が含まれる。コントローラ１０４ｉ（ここで、「ｉ」は任意の整数を表す）が、ホスト１０２からの書込みデータ１０３（図１）を、その書込みキャッシュ１１６ｉに置き、ホスト１０２によってコントローラ１０４から読み取られたデータ１０５（図１）を、その読取りキャッシュ１１４ｉに置く。各書込みミラー・キャッシュ１１８ｉでは、別のコントローラの書込みキャッシュ１１６ｊの内容１０７ｊが複製される。書込みミラー・キャッシュ１１８ｉは、コントローラ１０４ｊによって、それが書込み動作を開始する時の付近に書き込まれる。書込みミラー・キャッシュ１１８を用いると、書込みデータ１０７の複製コピーを第２コントローラに保管することができ、その結果、どちらかのコントローラ１０４の障害が、データの消失をもたらさなくなる。
【０００４】
書込みミラー・キャッシュ１１８のデータ１０７は、バックエンドのＳＣＳＩまたはＦｉｂｒｅ Ｃｈａｎｎｅｌディスク・バス１１０を介してコントローラの間で転送される。ミラーリングされたキャッシュ１１８のデータは、書込みに使用されるコントローラ１０４が障害を発生した場合に限って使用され、その場合には、ミラーリングされたデータが、保管のためにディスク１０８に転送される。
【０００５】
【発明が解決しようとする課題】
この方法に関する問題は、キャッシュが同期化されない可能性があることであり、これによって、ホストが、読取り動作の次に一貫性のないデータを受け取ることになる可能性がある。たとえば、ホスト・コントローラ１０４−１が、ディスク・デバイス１０８への書込みを実行し、第２のホスト・システム１０２−１が、同一のデータすなわち、第２のコントローラ１０４−２の読取りキャッシュ１１４−２に既に存在するコピーの読取りを試みる場合に、第２のホストは、読取りキャッシュがコントローラにまたがって更新されないので、状態データを受け取るはずである。さらに、すべての読取りデータをコントローラにまたがってコピーすることは、性能を大きく損なうはずである。この問題は、クラスタリング環境の人気が高まるにつれてますます重要になる。
【０００６】
【課題を解決するための手段】
要約すると、本発明は、複数のＲＡＩＤコントローラにまたがってキャッシュ・コヒーレンシを確実にする方法である。本発明では、書込みキャッシュと読取りキャッシュの両方が同期化されるが、従来技術の実施形態では、書込みキャッシュ・データだけが同期化される。
【０００７】
具体的に言うと、本発明は、コントローラ間で読取りキャッシュデータをコピーする必要なしに、読取りキャッシュを同期化する。その結果、本発明は、コントローラ間データ転送に過度の帯域幅を使用せずに、完全なキャッシュ・コヒーレンシを提供する。
【０００８】
コントローラが、お互いおよびストレージ・デバイスの組に１つまたは複数のバックエンド・チャネルを介して接続される、関連する読取りキャッシュ、書込みキャッシュ、およびミラー・キャッシュを有する複数のＲＡＩＤコントローラと共に使用される本発明の一実施形態には、以下のステップが含まれる。
１．特定のアドレスにデータを書き込むコマンドに応答して、第１コントローラが、書込み動作を開始し、特定のデータを、１つまたは複数のバックエンド・チャネルを介して１つまたは複数の他のコントローラのミラー・キャッシュにコピーするステップ。
２．その後、第１コントローラが、書込み動作が完了したことを確認するステップ。
３．特定のアドレスのデータを読み取るコマンドに応答して、他のコントローラの１つである第２コントローラが、
ａ．そのミラー・キャッシュ内でデータについて検査し、データがそこにある場合に、そのデータをホスト・コンピュータに返し、
ｂ．書込みキャッシュ内でデータについて検査し、データがそこにある場合に、そのデータをホストに返し、
ｃ．読取りキャッシュ内でデータについて検査し、データがそこにある場合に、そのデータをホストに返し、
ｄ．データがどのキャッシュにもない場合に、ストレージ・デバイスからデータを得、そのデータをその読取りキャッシュに置き、そのデータをホストに返す
ステップ。
【０００９】
一実施形態では、バックエンド・チャネルを、ＳＣＳＩバスまたはＦｉｂｒｅ Ｃｈａｎｎｅｌバスの任意の組み合わせとすることができる。もう１つの実施形態では、ストレージ・デバイスがディスクである。どの実施形態でも、コントローラが、その関連する読取りキャッシュ、書込みキャッシュ、および書込みミラー・キャッシュとのまたはそれが読取りコマンドおよび書込みコマンドをそのために実行するホストとの１対１関係を有する必要はない。
【００１０】
本発明には、前の方法を実施するようにプログラムされたＲＡＩＤコントローラを組み込んだＲＡＩＤシステム、ならびに、発明的方法を組み込んだ、有形の記録媒体に記録されたコンピュータ・プログラムおよびコンピュータ・プログラム製品も含まれる。
【００１１】
【発明の実施の形態】
図３に、本発明が実施されるコンピュータ・システム１００のブロック図を示す。コンピュータ・システム１００には、図１に関して図示し、説明したものと同一の多数の構成要素が含まれる。具体的に言うと、コンピュータ・システム１００には、それぞれがＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ Ａｒｒａｙｓ ｏｆ Ｉｎｄｅｐｅｎｄｅｎｔ Ｄｉｓｋｓ）コントローラ１０４ｉおよび１０４ｊに結合される、少なくとも２つのホスト・コンピュータ１０２ｉおよび１０２ｊが含まれる。ＲＡＩＤコントローラ１０４は、ホスト１０２に、共用されるストレージ・デバイス１０８への読取り／書込みアクセスを提供し、共用されるストレージ・デバイス１０８は、１つまたは複数のバックエンド・ディスク・バス（以下ではバックエンド・バスと呼称する）１１０を介してコントローラ１０４に結合される。異なる実施形態では、バックエンド・バス１１０を、Ｆｉｂｒｅ Ｃｈａｎｎｅｌバス、ＳＣＳＩバス、または他のタイプの高速バス（たとえば、イーサネット（Ｒ）、ＩＰＩ、ＨＩＰＰＩ、Ｆｉｒｅ−Ｗｉｒｅ、またはＩＤＥ）とすることができる。異なる実施形態では、共用されるストレージ・デバイス１０８が、磁気ディスク・ドライブ、磁気テープ・ドライブ、光ディスク、または別のタイプの不揮発性ストレージ（たとえばＲＡＭＤＩＳＫドライブ）である。
【００１２】
各ＲＡＩＤコントローラ１０４には、プロセッサ２００およびメモリ２０２が含まれる。メモリ２０２は、半導体ランダム・アクセス・メモリ（ＲＡＭ）などの高速メモリ、読取り専用メモリ（ＲＯＭ）または消去可能読取り専用メモリＥＰＲＯＭなどの高速不揮発性メモリ、およびハード・ディスクなどの低速磁気メモリの任意の組み合わせとすることができる。メモリ２０２には、読取りキャッシュ１１４、書込みキャッシュ１１６、および書込みミラー・キャッシュ１１８（以下では「ミラー・キャッシュ」と呼称する）が含まれる。メモリ２０２には、コントローラ・ルーチン２０４も含まれ、コントローラ・ルーチン２０４は、プロセッサ２００によって実行され、とりわけ、ホスト・コンピュータ１０２によって発行される読取りコマンド１２６および書込みコマンド１２８に応答するコントローラ１０４の動作を決定するプログラムである。一実施形態では、読取りコマンド１２６で、ストレージ・デバイス１０８から読み取られるデータ１４０のアドレス１３２およびサイズ１３４が指定され、書込みコマンド１２８に、ストレージ・デバイス１０８の特定のアドレス１３６に書き込まれるデータ１３８が含まれる。
【００１３】
コントローラ・ルーチン２０４には、読取りプログラム２０８および書込みプログラム２０６が含まれるが、これに制限はされない。一実施形態では、コントローラ・ルーチン２０４が、ファームウェアであり、これは、これらが、不揮発性メモリに保管され、したがって、コントローラ１０４が電源投入されると同時に実行に使用可能になることを意味する。コントローラ・ルーチン２０４は、ハード・ディスク（図示せず）または他の不揮発性メモリに保管され、オペレーティング・システム（図示せず）の制御下でプロセッサ２００による実行のためにＲＡＭまたは他の高速メモリにロードされる、通常のソフトウェアとして実施することもできる。読取りプログラム２０８および書込みプログラム２０６は、本発明の原理を実施するが、これらを、それぞれ図４および図５に関してこれから説明する。
【００１４】
図４に、書込みプログラム２０６の制御下でコントローラ１０４ｉによって実行される選択されたステップの流れ図を示す。通常の形で、ホスト書込みコマンド１２８に応答して（ステップ３０２）、コントローラ１０４ｉが、指定された書込みデータ１３８を共用ストレージ・デバイス１０８およびその書込みキャッシュ１１６ｉに書き込む（３０４）。本発明によれば、コントローラ１０４ｉは、指定されたデータ１３８を、他のコントローラ１０４ｊのそれぞれのミラー・キャッシュ１１８ｊにもコピーする（３０６）。コントローラ１０４ｉは、特殊なミラー・キャッシュ書込みコマンドを使用して、バックエンド・バス１１０を介して書込みデータ１３８をブロードキャストすることによって、この「ミラー・コピー」動作を達成する。最後に、コントローラ１０４ｉは、書込み動作の完了を確認する（３０８）。完了を確認できない場合には、コントローラ１０４ｉは、前に書込みキャッシュ１１６ｉに保管した書込みデータ１３８を使用して、書込み動作をもう一度試みる。ミラー・コピー動作３０６の一実施形態を、図６に関して説明する。
【００１５】
図６に、送出側コントローラ１０４ｉおよび１つまたは複数の受取側コントローラ１０４ｊによって実行することができるミラー・コピー動作３０６の一実施形態のシーケンス図を示す。この図には、特殊なミラー・キャッシュ書込みコマンドが、ＳＣＳＩプロトコル仕様によって定義される「ベンダ・ユニーク」コマンド・フォーマットを使用して実施される、コントローラ１０４によって実行されるアクションおよび交換されるメッセージのシーケンスが示されている。この実施形態では、送出側コントローラ１０４ｉが、キャッシングされるデータ４０２を、キャッシュ・メタデータ４０４（キャッシュ・データのアドレス４０４ａおよびサイズ４０４ｂに関する情報）をバンドルし、このデータをベンダ・ユニーク・コマンド４０６のデータ・フェーズに埋め込む（６．１）。ベンダ・ユニーク・コマンドは、当技術分野で既知であり、一般に、コントローラの独自の特性（たとえば、ＳＣＳＩ仕様またはＦｉｂｒｅ ｃｈａｎｎｅｌ仕様で定義されておらず、したがって、標準のＳＣＳＩまたはＦｉｂｒｅ Ｃｈａｎｎｅｌのコマンドまたはプロトコルを介して使用可能でない特性）を判定でき、設定できるようにし、制御されるデバイスへの他の特殊な動作を可能にするコマンドである（ベンダ・ユニーク・コマンドに関する追加の背景情報は、参照によって本明細書に組み込まれるＳＣＳＩ−ＩＩＩプロトコル仕様書、ＳＣＳＩ−３ Ｐｒｉｍａｒｙ Ｃｏｍｍａｎｄｓ （ＳＰＣ） ｛Ｄａｔｅ： １９９７／０３／２８， Ｒｅｖ． １１ａ， Ｓｔａｔｕｓ： Ｐｕｂｌｉｓｈｅｄ， Ｐｒｏｊｅｃｔ ０９９５−Ｄ｝ Ｘ３．３０１：１９９７に記載されている）。送出側１０４ｉは、キャッシュ・データ４０２およびメタ・データ４０４の受取側コントローラ１０４ｊへの転送を、ベンダ・ユニーク・コマンド４０６を使用して開始する（６．２）。受取側１０４ｊは、ベンダ・ユニーク・コマンド４０６を理解し、データ４０２および４０４の構造の先見的知識を有するように構成されているが、データを受け取り（６．３）、そのデータを、受取側の書込みミラー・キャッシュ１１８内の正しい位置に転送する（６．４）。その後、受取側１０４ｊは、通常のＳＣＳＩ機構を介してコマンド４０６の完了を肯定応答する（６．５）。適当に構成されたコントローラ１０４以外のデバイスへのコマンド４０６の送出は、そのデバイスのエラー状態をもたらす。この方法では、ＳＣＳＩプロトコルで「ブロードキャスト」方法が定義されていないので、コマンド４０６が、単一の受信側に送られる。複数の受信側がある情況では、コマンドが、すべての受信側に独立に送られる。複数のバックエンド（ディスク側）チャネルがコントローラに接続され、コマンドを異なるバック・エンド・チャネル上で各受信側に送ることができるので、これを同時に行うことができる。
【００１６】
この書込み方法の結果として、書込みコマンド１２８の実行の次に、新しい書込みデータ１３８のコピーが、書込みコマンド１２８を実行しなかったすべてのコントローラ１０４ｊのミラー・キャッシュ１１８ｊ内に存在する。ミラーリングされたデータは、コントローラ１０４ｊによって開始される後続の読取り動作によって使用可能であり、新しいデータ１３８について発行される読取りコマンド１２６で、そのデータの最新版１４０が返されることが保証されるが、従来技術の方法ではこうならない。これを可能にする本発明の読取り方法を、図５に関して説明する。
【００１７】
図５に、読取りプログラム２０８の制御下でコントローラ１０４ｊによって実行される選択されたステップの流れ図を示す。本発明によれば、コントローラ１０４ｊは、要求された読取りデータの最新版をホスト１０２ｊに返すことが保証される形でホスト読取りコマンド１２６を実行する。具体的に言うと、読取りコマンド１２６に応答して（３２０）、コントローラ１０４ｊは、まず、指定された読取りデータ１４０（すなわち、アドレス１３２にあるサイズ１３４のデータ）についてそのミラー・キャッシュ１１８ｊを調べる（３２２）。読取りデータ１４０がミラー・キャッシュ１１８ｊにある場合には（３２２−Ｙ）、コントローラは、そのデータをホスト１０２ｊに返す（３２４）。読取りデータ１４０がミラー・キャッシュにない場合には（３２２−Ｎ）、コントローラ１０４ｊは、その書込みキャッシュ１１６ｉを検査する（３２６）。読取りデータ１４０がその書込みキャッシュ１１６ｊにある場合には（３２６−Ｙ）、コントローラ１０４ｊは、そのデータをホスト１０２ｊに返す（３２８）。読取りデータ１４０がミラー・キャッシュにない場合には（３２２−Ｎ）、コントローラは、その読取りキャッシュ１１４ｉを検査する（３３０）。読取りデータ１４０がその読取りキャッシュ１１４ｊにある場合には（３３０−Ｙ）、コントローラ１０４ｊは、そのデータをホスト１０２ｊに返す（３３２）。読取りデータ１４０がミラー・キャッシュにない場合には（３３０−Ｎ）、コントローラは、要求された読取りデータをストレージ・デバイス１０８から返し（３３４）、後続の使用のために同一のデータをその読取りキャッシュ１１６ｉに保管する（３３４）（注：一般に、コントローラ１０４は、ホストに返すデータのすべてを、その読取りキャッシュ１１４に書き込む）。
【００１８】
読取りコマンドに応答して、まず書込みミラー・キャッシュを検査することによって、この実施形態では、要求されたデータの前の版がコントローラの書込みキャッシュまたは読取りキャッシュに既に存在する場合であっても、コントローラ１０４が要求された読取りデータの最新版をホスト１０２に返すことが保証される。同様に、要求されたデータがミラー・キャッシュ１１８にない場合に、その読取りキャッシュ１１４ではなく、要求されたデータをその書込みキャッシュ１１６から優先的に返すことをコントローラ１０４に要求することによって、この実施形態では、コントローラ１０４が、それが更新したデータの最新版を返すことが保証される。最後に、コントローラ１０４が、他の２つの選択肢で失敗した時にその読取りキャッシュ１１４から要求されたデータを供給するようにすることによって、本明細書に記載の実施形態では、コントローラ１０４によって既に読み取られたデータが、最小の遅延でホスト１０２に返されることが保証される。
【００１９】
したがって、本発明では、複数のホストおよびＲＡＩＤコントローラを含むＲＡＩＤシステムでキャッシュ・コヒーレンシが維持される。図３に示した一実施形態では、この長所が、コントローラ１０４の間の追加の高帯域幅データ転送を必要とせずにもたらされる。これが可能であるのは、書込み動作に使用されないコントローラ１０４が、単に、書込みデータ１３８がバックエンド・バスを介して共用ストレージ・デバイス１０８に書き込まれる際に、そのデータを受け取るからである。
【００２０】
要約すると、複数のＲＡＩＤコントローラとストレージ・デバイスの組とを有するＲＡＩＤシステム内で使用される一実施形態で、ホストの読取りおよび書込みの処理に、
（１）第１データ１３８をストレージ・デバイス１０８に書き込む書込みコマンド１２８に応答して、第１コントローラ１０４ｉが、第１データ１３８をストレージ・デバイス１０８に書き込み、第１データを１つまたは複数の他のコントローラ１０４ｊに関連するミラー・キャッシュ１１８ｊにコピーすることと、
（２）第２データ１３４をストレージ・デバイス１０８から読み取る読取りコマンド１２６に応答して、第２コントローラ１０４が、ミラー・キャッシュの関連するミラー・キャッシュ内で第２データ１３４に関して検査し、データ１３４が関連するミラー・キャッシュにある場合に、読取りコマンド１２６を発行したホスト・コンピュータ１０２に第２データを返すことと
が含まれる。
【００２１】
もう１つの代替実施形態では、第１コントローラ１０４ｉが、コントローラ１０４およびストレージ・デバイス１０８が結合されたバックエンド・バス１１０上で関連するミラー・キャッシュに第１データ１３８をブロードキャストすることによって、第１データ１３８を関連するミラー・キャッシュ１１８ｊにコピーする。関連する実施形態では、ブロードキャストのステップが、第１データ１３８をストレージ・デバイス１０８に書き込むステップに最小限を超えないオーバーヘッドが追加されるように実施される。もう１つの関連する実施形態では、この最小限のオーバーヘッドが、ブロードキャストのステップおよび書込みのステップを同時に実行することによってもたらされる。
【００２２】
ＲＡＩＤコントローラ１０４が、関連する読取りキャッシュ１１４および関連する書込みキャッシュ１１６を有する実施形態では、ホストの読取りおよび書込みの処理に、上で概要を示した２つのステップに加えて、以下のステップが含まれる。
（３）第１データ１３８をストレージ・デバイス１０８に書き込む書込みコマンド１２８に応答して、第１コントローラ１０４ｉが、第１データをその関連する書込みキャッシュ１１６ｉにも書き込むステップと、
（４）第２データ１３４をストレージ・デバイス１０８から読み取る読取りコマンド１２６に応答して、第２コントローラ１０４が、
（ａ）関連する書込みキャッシュ１１６内で第２データ１３４に関して検査し、データがある場合に、第２データ１３４をホスト１０２に返し、
（ｂ）読取りキャッシュ１１４内で第２データ１３４に関して検査し、データがある場合に、第２データ１３４をホスト１０２に返し、
（ｃ）第２データ１３４が関連するキャッシュ１１６および１１８にない場合に、第２データをストレージ・デバイス１０８から取り出し、読取りコマンドを発行したホスト・コンピュータ１０２に第２データ１３４を返す
ステップ。
【００２３】
これから、本発明の選択された特定の実施形態を強調することによって、本発明の諸態様を再検討する。本発明の第１の態様では、本発明は、複数のＲＡＩＤコントローラとストレージ・デバイスの組とを有するＲＡＩＤシステム内で使用される同期化方法であって、第１データを上記ストレージ・デバイスに書き込む書込みコマンドに応答して、上記コントローラの第１コントローラが、上記第１データを上記ストレージ・デバイスに書き込み、上記第１データを１つまたは複数の他のコントローラに関連するミラー・キャッシュにコピーするステップと、第２データを上記ストレージ・デバイスから読み取る読取りコマンドに応答して、第２コントローラが、上記ミラー・キャッシュの関連するミラー・キャッシュ内で上記データに関して検査し、上記データが上記関連するミラー・キャッシュにある場合に、上記読取りコマンドを発行したホスト・コンピュータに上記第２データを返すステップとを含む同期化方法を提供する。
【００２４】
第２の態様では、この同期化方法が、さらに、上記ＲＡＩＤコントローラが、関連する読取りキャッシュおよび関連する書込みキャッシュを有することを提供し、上記方法が、さらに、第１データを上記ストレージ・デバイスに書き込む上記書込みコマンドに応答して、上記第１コントローラが、上記第１データをその関連する書込みキャッシュにも書き込むことと、第２データを上記ストレージ・デバイスから読み取る上記読取りコマンドに応答して、上記第２コントローラが、上記関連する書込みキャッシュ内で上記第２データに関して検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、上記読取りキャッシュ内で上記第２データに関して検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、上記第２データが上記関連するキャッシュにない場合に、上記第２データを上記ストレージ・デバイスから取り出し、上記読取りコマンドを発行した上記ホスト・コンピュータに上記第２データを返すこととを行うこととを含む。
【００２５】
第３の態様では、同期化方法が、上記関連するミラー・キャッシュへの上記第１データの上記コピーが、上記コントローラおよび上記ストレージ・デバイスが結合されるバックエンド・バス上での上記関連するミラー・キャッシュへの上記第１データのブロードキャストを含むことを提供する。第４の態様では、同期化方法が、上記第１データの上記ブロードキャストが、上記ストレージ・デバイスへの上記第１データの上記書込みに最小限を超えないオーバーヘッドを追加することを追加的に提供する。第５の態様では、上記第１データの上記ブロードキャストおよび上記書込みが、同時に実行される。第６の態様では、上記バックエンド・バスが、１つまたは複数のＦｉｂｒｅ Ｃｈａｎｎｅｌバスと、１つまたは複数のＳＣＳＩバスとの任意の組合せを含む。第７の態様では、上記ストレージ・デバイスが、磁気ディスクを含む。
【００２６】
第８の態様では、同期化方法が、上記関連するミラー・キャッシュへの上記第１データの上記コピーが、上記コントローラおよび上記ストレージ・デバイスが結合されるバックエンド・バス上での上記関連するミラー・キャッシュへの上記第１データの、ＳＣＳＩベンダ・ユニーク・コマンドを使用する送出を含むことを提供する。
【００２７】
第９の態様では、本発明は、ストレージ・デバイスの組へのアクセスを提供する複数のＲＡＩＤコントローラを含むＲＡＩＤシステム内で使用されるキャッシュ・システムであって、上記コントローラからアクセス可能な複数のミラー・キャッシュと、特定のアドレスにデータを書き込む書込みコマンドを受け取った時に、上記ストレージ・デバイスに上記データを書き込むことのほかに、１つまたは複数の異なるＲＡＩＤコントローラの上記ミラー・キャッシュに上記データをコピーするように構成された第１ＲＡＩＤコントローラとを含み、上記ＲＡＩＤコントローラのいずれもが、上記特定のアドレスの上記データを読み取る読取りコマンドを受け取った後に、上記ミラー・キャッシュの関連するミラー・キャッシュから上記データを取り出すことをまず試みるように構成される、キャッシュ・システムを提供する。
【００２８】
第１０の態様では、上記複数のコントローラおよび上記ストレージ・デバイスの組が、バックエンド・バスを介して接続されるように、キャッシュ・システムがさらに定義される。第１１の態様では、上記バックエンド・バスが、１つまたは複数のＦｉｂｒｅ Ｃｈａｎｎｅｌバスと、１つまたは複数のＳＣＳＩバスとの任意の組合せを含むように、キャッシュ・システムがさらに定義される。
【００２９】
第１２の態様では、キャッシュ・システムが、上記コントローラからアクセス可能な複数の書込みキャッシュと、上記コントローラからアクセス可能な複数の読取りキャッシュとをさらに含み、上記特定のアドレスのデータを読み取る読取りコマンドに応答して、上記第２コントローラが、そのミラー・キャッシュ内で上記データについて検査し、上記データがある場合に、上記読取りコマンドを発行したホスト・コンピュータに上記データを返し、その書込みキャッシュ内で上記データについて検査し、上記データがある場合に、上記ホストに上記データを返し、その読取りキャッシュ内で上記データについて検査し、上記データがある場合に、上記ホストに上記データを返し、上記データが上記キャッシュのいずれにもない場合に、上記データを上記ストレージ・デバイスから取り出し、上記データを上記ホストに返す。
【００３０】
第１３の態様では、上記第１ＲＡＩＤコントローラが、上記コントローラおよび上記ストレージ・デバイスが結合されるＳＣＳＩバス上で伝送されるＳＣＳＩベンダ・ユニーク・コマンドを使用して、上記第１データを上記ミラー・キャッシュにコピーするように構成されるように、キャッシュ・システムがさらに定義される。第１４の態様では、上記ＳＣＳＩバスが、バックエンド・バスを含むように、キャッシュ・システムがさらに定義される。
【００３１】
第１５の態様では、本発明が、さらに、少なくとも第１および第２のコントローラと少なくとも１つのストレージ・デバイスとを含むデータ・ストレージ・システム内で使用される同期化方法であって、第１データを上記ストレージ・デバイスに書き込む書込みコマンドに応答して、上記第１コントローラが、上記第１データを上記ストレージ・デバイスに書き込み、上記第１データを上記第２コントローラに関連するミラー・キャッシュにコピーすることと、第２データを上記ストレージ・デバイスから読み取る読取りコマンドに応答して、上記第２コントローラが、上記ミラー・キャッシュの関連するミラー・キャッシュ内で上記データについて検査し、上記データが上記関連するミラー・キャッシュにある場合に、上記読取りコマンドを発行したホスト・コンピュータに上記第２データを返すこととを含む、同期化方法を提供する。
【００３２】
第１６の態様では、同期化方法が、さらに、上記コントローラが、関連する読取りキャッシュおよび関連する書込みキャッシュを有し、第１データを上記ストレージ・デバイスに書き込む上記書込みコマンドに応答して、上記第１コントローラが、上記第１データをその関連する書込みキャッシュにも書き込むことと、第２データを上記ストレージ・デバイスから読み取る上記読取りコマンドに応答して、上記第２コントローラが、上記関連する書込みキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、上記読取りキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、上記第２データが上記関連するキャッシュにない場合に、上記第２データを上記ストレージ・デバイスから取り出し、上記読取りコマンドを発行した上記ホスト・コンピュータに上記第２データを返すこととを行うこととをさらに含むことを提供する。
【００３３】
第１７の態様では、同期化方法が、上記関連するミラー・キャッシュへの上記第１データの上記コピーが、上記コントローラおよび上記ストレージ・デバイスが結合されるバス上での上記関連するミラー・キャッシュへの上記第１データのブロードキャストを含むことを提供する。第１８の態様では、この同期化方法が、追加的に、上記第１データの上記ブロードキャストが、上記ストレージ・デバイスへの上記第１データの上記書込みに実質的にオーバーヘッドを追加しないことを提供する。第１９の態様では、同期化方法が、さらに、上記第１データの上記ブロードキャストおよび上記書込みが、実質的に同時に実行されることを提供する。第２０の態様では、同期化方法が、１つまたは複数のＦｉｂｒｅ Ｃｈａｎｎｅｌバスと、１つまたは複数のＳＣＳＩバスとの任意の組合せを含むバスを使用する。
【００３４】
第２１の態様では、同期化方法が、磁気ディスク・ドライブ・ストレージ・デバイスと共に使用され、ストレージ・デバイスに、磁気ディスク・ドライブが含まれる。
【００３５】
第２２の態様では、上記関連するミラー・キャッシュへの上記第１データの上記コピーが、上記コントローラおよび上記ストレージ・デバイスが結合されるバス上での上記関連するミラー・キャッシュへの上記第１データの、ＳＣＳＩベンダ・ユニーク・コマンドを使用する送出を含むように、同期化方法がさらに定義される。第２３の態様では、上記バスが、上記コントローラと上記ストレージ・デバイスとを結合するバックエンド・バスであるように、この同期化方法がさらに定義される。
【００３６】
第２４の態様では、本発明が、コンピュータ・システムと共に使用されるコンピュータ・プログラムならびにコンピュータ・プログラム製品であって、上記コンピュータ・プログラム製品が、コンピュータ可読記憶媒体およびその中で実施されたコンピュータ・プログラム機構を含み、上記コンピュータ・プログラム機構が、ホスト・コンピュータに接続された複数のコントローラと、データ・ストレージ・システムにグループ化された１つまたは複数のディスク・ストレージ・デバイスとの少なくとも１つに、指定された形で機能するように指示するプログラム・モジュールを含み、上記プログラム・モジュールが、第１データを上記ストレージ・デバイスに書き込む書込みコマンドに応答して、上記コントローラの第１コントローラが、上記第１データを上記ストレージ・デバイスに書き込み、１つまたは複数の他のコントローラに関連するミラー・キャッシュに上記第１データをコピーすることと、第２データを上記ストレージ・デバイスから読み取る読取りコマンドに応答して、第２コントローラが、上記ミラー・キャッシュの関連するミラー・キャッシュ内で上記データについて検査し、上記データが上記関連するミラー・キャッシュにある場合に、上記読取りコマンドを発行したホスト・コンピュータに上記第２データを返すこととを行う命令を含む、コンピュータ・プログラムならびにコンピュータ・プログラム製品も提供する。
【００３７】
第２５の態様では、上記コンピュータ・プログラム機構およびコンピュータ機構が、第１データを上記ストレージ・デバイスに書き込む上記書込みコマンドに応答して、上記第１コントローラが、上記第１データをその関連する書込みキャッシュにも書き込むことと、第２データを上記ストレージ・デバイスから読み取る上記読取りコマンドに応答して、上記第２コントローラが、上記関連する書込みキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、上記読取りキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、上記第２データが上記関連するキャッシュにない場合に、上記第２データを上記ストレージ・デバイスから取り出し、上記読取りコマンドを発行した上記ホスト・コンピュータに上記第２データを返すこととを行うこととの命令を含むプログラム・モジュールをさらに含むように、上記コンピュータ・プログラムおよびコンピュータ・プログラム製品がさらに定義される。
【００３８】
少数の特定の実施形態に関して本発明を説明してきたが、この説明は、本発明の例証であって、本発明を制限するものと解釈してはならない。請求項によって定義される本発明の真の趣旨および範囲から逸脱しない、さまざまな修正形態を、当業者は思い浮かべることができる。
【００３９】
たとえば、どの実施形態であっても、コントローラ１０４が、関連する読取りキャッシュ１１４、書込みキャッシュ１１６、および書込みミラー・キャッシュ１１８の組とのまたはそれがそのために読取りコマンドおよび書込みコマンドを実行するホスト１０２との１対１関係を有する必要はない。さらに、各コントローラ１０４が、関連する読取りキャッシュ１１４、書込みキャッシュ１１６、および書込みミラー・キャッシュ１１８の全数を有する必要はない。そうではなく、本発明に必要なものは、各コントローラ１０４が、関連する書込みミラー・キャッシュまたは他のすばやくアクセスされるメモリ位置を有し、これに、他のコントローラが、ホスト読取りコマンドに応答する前者のコントローラ１０４による後続のすばやい取出しのためにホスト書込みデータをコピーすることである。
【図面の簡単な説明】
【図１】
通常の複数コントローラＲＡＩＤシステム１００（ＲＡＩＤは、「Ｒｅｄｕｎｄａｎｔ Ａｒｒａｙ ｏｆ Ｉｎｄｅｐｅｎｄｅｎｔ Ｄｉｓｋｓ」の頭字語である）のブロック図である。
【図２】
読取りキャッシュ１１４、書込みキャッシュ１１６、および書込みミラー・キャッシュ１１８を含むキャッシュ１１２のブロック図である。
【図３】
本発明が実施されるＲＡＩＤコントローラのブロック図である。
【図４】
本発明に従って実施されるＲＡＩＤコントローラ書込み方法の流れ図である。
【図５】
本発明に従って実施されるＲＡＩＤコントローラ読取り方法の流れ図である。
【図６】
キャッシュ・ミラーリング・システムの一実施形態で送出側および受取側のＲＡＩＤコントローラによって実行されるアクションおよび交換されるメッセージを示すシーケンス図である。
【図１】
2004538532.tif 000003
【図２】
2004538532.tif 000004
【図３】
2004538532.tif 000005
【図４】
2004538532.tif 000006
【図５】
2004538532.tif 000007
【図６】
2004538532.tif 000008
【国際公開パンフレット】
2004538532.tif 000009
2004538532.tif 000010
2004538532.tif 000011
2004538532.tif 000012
2004538532.tif 000013
2004538532.tif 000014
2004538532.tif 000015
2004538532.tif 000016
2004538532.tif 000017
2004538532.tif 000018
2004538532.tif 000019
2004538532.tif 000020
2004538532.tif 000021
2004538532.tif 000022
2004538532.tif 000023
2004538532.tif 000024
2004538532.tif 000025
2004538532.tif 000026
2004538532.tif 000027
2004538532.tif 000028
2004538532.tif 000029
2004538532.tif 000030
2004538532.tif 000031
2004538532.tif 000032
2004538532.tif 000033
2004538532.tif 000034
2004538532.tif 000035
2004538532.tif 000036
2004538532.tif 000037
【手続補正書】
【提出日】平成12年8月25日(2000.8.25)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のＲＡＩＤコントローラとストレージ・デバイスの組とを含むＲＡＩＤシステム内で使用される同期化方法であって、
第１データを上記ストレージ・デバイスに書き込む書込みコマンドに応答して、上記コントローラの第１コントローラが、上記第１データを上記ストレージ・デバイスに書き込み、上記書込みコマンドを実行しなかった１つまたは複数の他のコントローラに関連するミラー・キャッシュに上記第１データをコピーすることと、
第２データを上記ストレージ・デバイスから読み取る読取りコマンドに応答して、第２コントローラが、それ自体の関連するミラー・キャッシュ内で上記データについて検査し、上記第２データがそれ自体の関連するミラー・キャッシュにある場合に、上記読取りコマンドを発行したホスト・コンピュータに上記第２データを返すことと
を含む、同期化方法。
【請求項２】
上記ＲＡＩＤコントローラのそれぞれが、前記ミラー・キャッシュと異なる、関連する読取りキャッシュおよび関連する書込みキャッシュを有し、
第１データを上記ストレージ・デバイスに書き込む上記書込みコマンドに応答して、上記第１コントローラが、上記第１データをそれ自体の関連する書込みキャッシュにも書き込むことと、
第２データを上記ストレージ・デバイスから読み取る上記読取りコマンドに応答して、上記第２データが上記検査によってその関連するミラー・キャッシュにないとわかった時に、上記第２コントローラが、
その関連する書込みキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、
その関連する読取りキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、
上記第２データがその関連する読取りキャッシュ内にない場合に、上記第２データを上記ストレージ・デバイスから取り出し、上記読取りコマンドを発行した上記ホスト・コンピュータに上記第２データを返すことと
を行うことと
をさらに含む、請求項１に記載の同期化方法。
【請求項３】
上記関連するミラー・キャッシュへの上記第１データの上記コピーが、上記コントローラおよび上記ストレージ・デバイスが結合されるバックエンド・バス上での上記関連するミラー・キャッシュへの上記第１データのブロードキャストを含む、請求項１に記載の同期化方法。
【請求項４】
上記第１データの上記ブロードキャストおよび上記書込みが、上記ストレージ・デバイスへの上記第１データの上記書込みに、上記第１データ・ブロードキャストに関連するオーバーヘッドだけを追加する、請求項３に記載の同期化方法。
【請求項５】
上記第１データの上記ブロードキャストおよび上記書込みが、同時に実行される、請求項４に記載の同期化方法。
【請求項６】
上記バックエンド・バスが、
１つまたは複数のＦｉｂｒｅ Ｃｈａｎｎｅｌバスと、
１つまたは複数のＳＣＳＩバスと
の任意の組合せを含む、請求項３に記載の同期化方法。
【請求項７】
上記ストレージ・デバイスが、磁気ディスクを含む、請求項１に記載の同期化方法。
【請求項８】
上記関連するミラー・キャッシュへの上記第１データの上記コピーが、上記コントローラおよび上記ストレージ・デバイスが結合されるバックエンド・バス上での上記関連するミラー・キャッシュへの上記第１データの、ＳＣＳＩベンダ・ユニーク・コマンドを使用する送出を含む、請求項１に記載の同期化方法。
【請求項９】
ストレージ・デバイスの組へのアクセスを提供する複数のＲＡＩＤコントローラを含むＲＡＩＤシステム内で使用されるキャッシュ・システムであって、
上記コントローラからアクセス可能であり、上記コントローラに関連する、複数のミラー・キャッシュ
を含み、
第１ＲＡＩＤコントローラが、データを特定のアドレスに書き込む書込みコマンドを受け取る時に、上記データを上記ストレージ・デバイスに書き込むことのほかに、上記データを少なくとも１つの異なるＲＡＩＤコントローラの上記ミラー・キャッシュにコピーするように構成され、
上記ＲＡＩＤコントローラのそれぞれが、上記特定のアドレスの上記データを読み取る読取りコマンドを受け取った後に、その関連するミラー・キャッシュ内で上記データの存在についてまず検査し、存在する場合に、上記ストレージ・デバイスの組または他のストレージ手段から上記データを取り出す前に、その関連するミラー・キャッシュから上記データを取り出すように構成される
キャッシュ・システム。
【請求項１０】
上記複数のコントローラおよび上記ストレージ・デバイスの組が、バックエンド・バスを介して接続される、請求項９に記載のキャッシュ・システム。
【請求項１１】
上記バックエンド・バスが、
１つまたは複数のＦｉｂｒｅ Ｃｈａｎｎｅｌバスと、
１つまたは複数のＳＣＳＩバスと
の任意の組合せを含む、請求項１０に記載のキャッシュ・システム。
【請求項１２】
上記ミラー・キャッシュと異なり、上記コントローラからアクセス可能である複数の書込みキャッシュであって、各読取りキャッシュが、上記コントローラの異なる１つに関連する、複数の書込みキャッシュと、
上記ミラー・キャッシュと異なり、上記コントローラからアクセス可能である複数の読取りキャッシュであって、各読取りキャッシュが、上記コントローラの異なる１つに関連する、複数の読取りキャッシュと、
をさらに含み、
上記特定のアドレスのデータを読み取る読取りコマンドに応答して、上記第２コントローラが、
第１に、その関連するミラー・キャッシュ内で上記データについて検査し、上記データがある場合に、上記読取りコマンドを発行したホスト・コンピュータに上記データを返し、
第２に、その関連する書込みキャッシュ内で上記データについて検査し、上記データがある場合に、上記ホストに上記データを返し、
第３に、その関連する読取りキャッシュ内で上記データについて検査し、上記データがある場合に、上記ホストに上記データを返し、
第４に、上記データが上記ミラー・キャッシュ、上記書込みキャッシュ、または上記読取りキャッシュのいずれにもない場合に、上記データを上記ストレージ・デバイスから取り出し、上記取り出されたデータを上記ホストに返す
請求項９に記載のキャッシュ・システム。
【請求項１３】
上記第１ＲＡＩＤコントローラが、上記コントローラおよび上記ストレージ・デバイスが結合されるＳＣＳＩバス上で伝送されるＳＣＳＩベンダ・ユニーク・コマンドを使用して、上記第１データを上記ミラー・キャッシュにコピーするように構成される、請求項９に記載のキャッシュ・システム。
【請求項１４】
上記ＳＣＳＩバスが、ストレージ・デバイス側バックエンド・バスを含む、請求項１３に記載のキャッシュ・システム。
【請求項１５】
少なくとも第１および第２のコントローラと少なくとも１つのストレージ・デバイスとを含むデータ・ストレージ・システム内で使用される同期化方法であって、
第１データを上記ストレージ・デバイスに書き込む書込みコマンドに応答して、上記第１コントローラが、上記第１データを上記ストレージ・デバイスに書き込み、上記第１データを上記第２コントローラに関連するミラー・キャッシュにコピーすることと、
第２データを上記ストレージ・デバイスから読み取る読取りコマンドに応答して、上記第２コントローラが、上記ミラー・キャッシュの関連するミラー・キャッシュ内で上記データについて検査し、上記データが上記関連するミラー・キャッシュにある場合に、上記読取りコマンドを発行したホスト・コンピュータに上記第２データを返すことと
を含む、同期化方法。
【請求項１６】
上記コントローラが、関連する読取りキャッシュおよび関連する書込みキャッシュを有し、
第１データを上記ストレージ・デバイスに書き込む上記書込みコマンドに応答して、上記第１コントローラが、上記第１データをその関連する書込みキャッシュにも書き込むことと、
第２データを上記ストレージ・デバイスから読み取る上記読取りコマンドに応答して、上記第２コントローラが、
上記関連する書込みキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、
上記読取りキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、
上記第２データが上記関連するキャッシュにない場合に、上記第２データを上記ストレージ・デバイスから取り出し、上記読取りコマンドを発行した上記ホスト・コンピュータに上記第２データを返すことと
を行うことと
をさらに含む、請求項１５に記載の同期化方法。
【請求項１７】
上記関連するミラー・キャッシュへの上記第１データの上記コピーが、上記コントローラおよび上記ストレージ・デバイスが結合されるバス上での上記関連するミラー・キャッシュへの上記第１データのブロードキャストを含む、請求項１５に記載の同期化方法。
【請求項１８】
上記第１データの上記ブロードキャストが、上記ストレージ・デバイスへの上記第１データの上記書込みに実質的にオーバーヘッドを追加しない、請求項１７に記載の同期化方法。
【請求項１９】
上記第１データの上記ブロードキャストおよび上記書込みが、実質的に同時に実行される、請求項１８に記載の同期化方法。
【請求項２０】
上記バスが、１つまたは複数のＦｉｂｒｅ Ｃｈａｎｎｅｌバスと；１つまたは複数のＳＣＳＩバスとの任意の組合せを含む、請求項１８に記載の同期化方法。
【請求項２１】
上記ストレージ・デバイスが、磁気ディスク・ドライブを含む、請求項１５に記載の同期化方法。
【請求項２２】
上記関連するミラー・キャッシュへの上記第１データの上記コピーが、上記コントローラおよび上記ストレージ・デバイスが結合されるバス上での上記関連するミラー・キャッシュへの上記第１データの、ＳＣＳＩベンダ・ユニーク・コマンドを使用する送出を含む、請求項１５に記載の同期化方法。
【請求項２３】
上記バスが、上記コントローラと上記ストレージ・デバイスとを結合するバックエンド・バスである、請求項２２に記載の同期化方法。
【請求項２４】
コンピュータ・システムと共に使用されるコンピュータ・プログラム製品であって、上記コンピュータ・プログラム製品が、コンピュータ可読記憶媒体およびその中で実施されたコンピュータ・プログラム機構を含み、上記コンピュータ・プログラム機構が、
ホスト・コンピュータに接続された複数のコントローラと、データ・ストレージ・システムにグループ化された１つまたは複数のディスク・ストレージ・デバイスとの少なくとも１つに、指定された形で機能するように指示するプログラム・モジュール
を含み、上記プログラム・モジュールが、
第１データを上記ストレージ・デバイスに書き込む書込みコマンドに応答して、上記コントローラの第１コントローラが、上記第１データを上記ストレージ・デバイスに書き込み、１つまたは複数の他のコントローラに関連するミラー・キャッシュに上記第１データをコピーすることと、
第２データを上記ストレージ・デバイスから読み取る読取りコマンドに応答して、第２コントローラが、上記ミラー・キャッシュの関連するミラー・キャッシュ内で上記データについて検査し、上記データが上記関連するミラー・キャッシュにある場合に、上記読取りコマンドを発行したホスト・コンピュータに上記第２データを返すことと
を行う命令を含む、コンピュータ・プログラム製品。
【請求項２５】
上記コンピュータ・プログラム機構およびコンピュータ機構が、
上記第１コントローラに、第１データを上記ストレージ・デバイスに書き込む上記書込みコマンドに応答して、上記第１データをその関連する書込みキャッシュにも書き込むように指示することと、
上記第２コントローラに、上記読取りコマンドに応答して、上記ストレージ・デバイスから第２データを読み取るように指示することであって、
上記関連する書込みキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、
上記読取りキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返すことと、
上記第２データがその関連するキャッシュ内にない場合に、上記第２データを上記ストレージ・デバイスから取り出し、上記読取りコマンドを発行した上記ホスト・コンピュータに上記第２データを返すことと
を含む、上記第２コントローラに指示することと
のための命令を含むプログラム・モジュールをさらに含む、請求項２４に記載のコンピュータ・プログラム製品。
【請求項２６】
複数のストレージ・システム・コントローラ間でストレージ・システム・キャッシュ・コヒーレンシを維持する方法であって、前記コントローラが、読取りキャッシュおよび書込みキャッシュの両方を有するタイプであり、前記方法が、前記読取りキャッシュおよび前記書込みキャッシュの両方でデータを同期化させることを特徴とする、方法。
【請求項２７】
さらに、前記読取りキャッシュが、前記ストレージ・システム・コントローラ間で読取りキャッシュ・データをコピーせずに同期化されることを特徴とする、請求項２６に記載の方法。
【請求項２８】
さらに、同期化に関連する通信帯域幅が、コントローラ間データ転送を使用する構成に対して相対的に減らされるように、前記読取りキャッシュおよび前記書込みキャッシュの完全なキャッシュ・コヒーレンシが、コントローラ間データ転送なしで達成されることを特徴とする、請求項２７に記載の方法。
【請求項２９】
前記コントローラが、データ書込みコマンドの受取に応答して、前記データを前記ストレージ・システムおよび前記ストレージ・システムの書込みキャッシュに書き込み、さらに、前記コントローラが、ミラー・キャッシュ書込みコマンドを使用して、バックエンド・バス上で前記コントローラの少なくとも１つの他のコントローラのミラー・キャッシュに上記データをコピーすることを特徴とする、請求項２８に記載の方法。
【請求項３０】
前記コントローラの前記少なくとも１つの他のコントローラが、前記複数のコントローラのすべてを含む、請求項２９に記載の方法。
【請求項３１】
前記コントローラのいずれかが読取り動作を実行する時に、前記コントローラが、前記ストレージ・システムまたは他のキャッシュを検査する前に、要求されたデータのコピーについてその書込みミラー・キャッシュ・バッファを検査し、これによって、読み取るべき上記データの最新版が得られることが保証される、請求項３０に記載の方法。
【請求項３２】
前記ストレージ・システムが、少なくとも１つのＲＡＩＤ（ｒｅｄｕｎｄａｎｔ ａｒｒａｙ ｏｆ ｉｎｄｅｐｅｎｄｅｎｔ ｄｉｓｋｓ）を含み、前記ストレージ・デバイス・コントローラが、ＲＡＩＤコントローラを含む、請求項２９に記載の方法。
【請求項３３】
前記ストレージ・システムが、少なくとも１つのＲＡＩＤ（ｒｅｄｕｎｄａｎｔ ａｒｒａｙ ｏｆ ｉｎｄｅｐｅｎｄｅｎｔ ｄｉｓｋｓ）を含み、前記ストレージ・デバイス・コントローラが、ＲＡＩＤコントローラを含む、請求項２５に記載の方法。
【請求項３４】
前記コントローラが、上記書込みコマンドが向けられたコントローラ以外のコントローラのそれぞれの上記ミラー・キャッシュに上記データをコピーするように構成される、請求項９に記載の方法。
【請求項３５】
前記コントローラが、前記複数のＲＡＩＤコントローラのすべての上記ミラー・キャッシュに上記データをコピーするように構成される、請求項９に記載の方法。
【請求項３６】
複数のコントローラおよび複数のストレージ・デバイスを有する複数コントローラ・ディスク・ドライブ・ベース・ストレージ・システムのコントローラであって、
プロセッサと、
前記プロセッサに結合されたメモリと、
前記複数のコントローラおよび前記複数のストレージ・デバイスとの結合のための少なくとも１つの通信バスと、
前記コントローラ間のデータ・コヒーレンシおよび同期を維持する手段であって、
前記コントローラの第１コントローラによって、第１データを上記ストレージ・デバイスに書き込む書込みコマンドに応答して、上記第１データを上記ストレージ・デバイスに書き込み、上記書込みコマンドを実行しなかった１つまたは複数の他のコントローラに関連するミラー・キャッシュに上記第１データをコピーする手段と、
第２コントローラによって、第２データを上記ストレージ・デバイスから読み取る読取りコマンドに応答して、それ自体の関連するミラー・キャッシュ内で上記データについて検査し、上記第２データがそれ自体の関連するミラー・キャッシュにある場合に、上記読取りコマンドを発行したホスト・コンピュータに上記第２データを返す手段と
を含む手段と
を含む、コントローラ。
【請求項３７】
上記コントローラのそれぞれが、前記ミラー・キャッシュと異なる、関連する読取りキャッシュおよび関連する書き込みキャッシュを有し、
上記第１コントローラによって、第１データを上記ストレージ・デバイスに書き込む上記書込みコマンドに応答して、上記第１データをそれ自体の関連する書き込みキャッシュに書き込む手段と、
前記第２コントローラによって、第２データを上記ストレージ・デバイスから読み取る上記読取りコマンドに応答して、上記第２データが上記検査によってその関連するミラー・キャッシュにないことがわかった時に、その関連する書き込みキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返し、その関連する読取りキャッシュ内で上記第２データについて検査し、上記データがある場合に、上記第２データを上記ホストに返し、上記第２データがその関連する読取りキャッシュにない場合に、上記第２データを上記ストレージ・デバイスから取り出し、上記読取りコマンドを発行した上記ホスト・コンピュータに上記第２データを返す手段と
をさらに含む、請求項３６に記載のコントローラ。
【国際調査報告】
2004538532.tif 000038