(57)【要約】データ処理システムは記憶システムと記憶システム及び記憶ネットワークに結合されたキャッシング記憶制御装置とを含む。記憶制御装置は記憶ネットワークからのストレージコマンドに応答して何れかの記憶制御装置から記憶システムのボリュームへのアクセスを提供する。採用される分散キャッシュプロトコルに従ってａ）各ボリュームが隣接ブロックの連続チャンクに分割され、ｂ）チャンク所有権はストレージコマンドに応答して記憶制御装置間で動的に移転されるか、又は非所有制御装置に送られたストレージコマンドが所有制御装置へ転送される。マルチパシングイニシエータは１）各ボリュームに対し各記憶制御装置とのボリュームのチャンクの持続的関連付けを維持し、２）ターゲットチャンクに対して送られた各ストレージ要求に対しターゲットチャンクと関連付けられた記憶制御装置を識別し、対応するストレージコマンドを識別された記憶制御装置へ送る。
2013501272.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムであって、
各々が、それぞれのブロックアドレスを有する隣接するブロックから成る一つ又は複数のボリュームとして構成されたデータストレージを提供するように動作する記憶システムと、
前記記憶システムと、記憶ネットワークとに結合された一組のキャッシング記憶制御装置であって、前記キャッシング記憶制御装置は、アクティブ‐アクティブ方式で協働して、前記記憶ネットワークから受取ったストレージコマンドに応答して前記キャッシング記憶制御装置のいずれかからのボリュームのブロック群のいずれかへのアクセスを提供し、前記キャッシング記憶制御装置は、分散キャッシュプロトコルを実行し、前記分散キャッシュプロトコルに従って、（ａ）各ボリュームが、各々が所定数の隣接するブロックを含む連続するチャンクに分割され、（ｂ）前記チャンクの所有権は、いずれも前記ストレージコマンドに応答して前記キャッシング記憶制御装置間で動的に移転されるか、または、非所有制御装置に送られたストレージコマンドは、処理のために所有制御装置へ転送される、前記一組のキャッシング記憶制御装置と、
前記記憶ネットワークに結合され、およびストレージ要求に応答して前記ストレージコマンドを開始するように動作する少なくとも１つのイニシエータであって、前記イニシエータは、前記ストレージコマンドを前記キャッシング記憶制御装置に送るように動作し、前記ストレージコマンドを前記キャッシング記憶制御装置に送ることは、
前記キャッシング記憶制御装置の各一つとの、各ボリュームのチャンクの持続的関連付けを維持すること、
前記ボリュームのターゲットチャンクに送られた各ストレージ要求のために、
（ａ）前記ターゲットチャンクと関連付けられた前記キャッシング記憶制御装置を識別し、
（ｂ）ストレージコマンドを生成して、そのストレージコマンドを、前記記憶ネットワークを介して、識別されたキャッシング記憶制御装置へ送信すること
を含む、前記少なくとも１つのイニシエータと
を備えるデータ処理システム。
【請求項２】
前記イニシエータは、前記ストレージ要求を生成するように機能する一つ又は複数のアプリケーションと、前記アプリケーションによって生成された各ストレージ要求に応答して、識別ステップおよび生成ステップを実行するように機能するマルチパシングドライバとを含むサーバコンピュータを含む、請求項１に記載のデータ処理システム。
【請求項３】
前記イニシエータは、各ボリュームを、それぞれのセットのインタリーブされたストライプに分けるように機能し、各ストライプは、少なくともチャンクの粒度を有し、前記ボリュームの前記チャンクの各セットを含み、
前記キャッシング記憶制御装置の各一つとの前記チャンクの持続的関連付けは、前記キャッシング記憶制御装置の各一つへの前記ストライプの割り当てを含み、
前記ターゲットチャンクと関連付けられた前記キャッシング記憶制御装置を識別することは、前記ターゲットチャンクを含むストライプを識別することを含む、請求項１または請求項２に記載のデータ処理システム。
【請求項４】
前記ストレージ要求のうちの一つ又は複数は、それぞれのターゲットチャンクを含む複数のチャンクに対して送られた大きなストレージ要求であり、前記複数のチャンクは、前記キャッシング記憶制御装置のそれぞれ異なる一つと関連付けられており、
前記大きなストレージ要求の各々に対して、前記イニシエータはさらに、単一コマンド動作と複数コマンド動作からなる群から選択された大きな要求動作を実行するように動作し、前記単一コマンド動作は、前記ストレージ要求の全てのデータに対する一つのストレージコマンドを、前記ターゲットチャンクと関連付けられたキャッシング記憶制御装置へ送ることを含み、前記複数コマンド動作は、前記ストレージ要求の異なるチャンクに対する個別のストレージコマンドを生成すること、前記ストレージコマンドを、前記ストレージコマンドのチャンクに関連付けられた前記キャッシング記憶制御装置の各一つに送ることを含む、請求項１乃至請求項３のいずれか一項に記載のデータ処理システム。
【請求項５】
前記イニシエータは、前記キャッシング記憶制御装置の各一つとの各ボリュームのチャンクの持続的関連付けを、前記データ処理システムの初期化時に、および前記キャッシング記憶制御装置、または、前記イニシエータが、前記ストレージコマンドを前記キャッシング記憶制御装置へ送るそれぞれの経路のいずれかの可用性を変更する事象に応答した動作中に、生成するように動作する、請求項１乃至請求項４のいずれか一項に記載のデータ処理システム。
【請求項６】
前記データ処理システムは、前記イニシエータと、前記キャッシング記憶制御装置のうちの特定の一つとの間に複数の経路を含み、
前記ストレージコマンドを前記特定のキャッシング記憶制御装置に送ることは、前記ターゲットチャンクの識別以外の判断基準に基づいて、前記複数の経路のうちの一つを選択することを含む、請求項１乃至請求項５のいずれか一項に記載のデータ処理システム。
【請求項７】
前記キャッシング記憶制御装置のそれぞれとの各ボリュームのチャンクの持続的関連付けを維持することは、前記イニシエータを前記キャッシング記憶制御装置に接続する記憶ネットワーク内の一組の経路のうちの各経路との各ボリュームのチャンクの持続的関連付けを維持することを含み、
前記ボリュームのターゲットチャンクに対して送られる各ストレージ要求に対して、（ａ）前記キャッシング記憶制御装置を識別することは、前記ターゲットチャンクと関連付けられた経路を識別することを含み、（ｂ）前記ストレージコマンドを送ることは、前記ストレージコマンドを、識別された経路で送ることを含む、請求項１乃至請求項５のいずれか一項に記載のデータ処理システム。
【請求項８】
記憶システムと、一組のキャッシング記憶制御装置とを含むデータ処理システムに用いられるサーバコンピュータであって、前記記憶システムは、各々が連続するブロックから成る一つ又は複数のボリュームとして構成されたデータストレージを提供するように動作し、前記キャッシング記憶制御装置は、前記記憶システムと、記憶ネットワークとに結合されており、前記サーバコンピュータも前記記憶ネットワークに結合されており、前記キャッシング記憶制御装置は、アクティブ‐アクティブ方式で協働して、前記記憶ネットワークから受取ったストレージコマンドに応答して、前記キャッシング記憶制御装置のいずれかから、前記ボリュームのブロックのいずれかにアクセスを提供し、前記キャッシング記憶制御装置は、分散キャッシュプロトコルを実行し、前記分散キャッシュプロトコルに従って、（ａ）各ボリュームが、各々が所定数の隣接するブロックを含む連続するチャンクに分けられており、（ｂ）前記チャンクの所有権は、いずれも前記ストレージコマンドに応答して、前記キャッシング記憶制御装置間で動的に移転されるか、または、非所有制御装置に送られたストレージコマンドは、処理のために所有制御装置に転送され、前記サーバコンピュータは、
相互接続回路によって共に結合されたプロセッサ、メモリおよび記憶ネットワークインタフェースであって、前記記憶ネットワークインタフェースが前記記憶ネットワークに接続されている、前記プロセッサ、メモリおよび記憶ネットワークインタフェースと、
前記ストレージコマンドを前記キャッシング記憶制御装置に対して送るための、前記プロセッサによって前記メモリから実行可能なソフトウェアであって、前記ストレージコマンドを前記キャッシング記憶制御装置に対して送ることは、
前記キャッシング記憶制御装置の各一つとの各ボリュームのチャンクの持続的関連付けを維持すること、
前記ボリュームのターゲットチャンクに対して送られる各ストレージ要求に対して、
（ａ）前記ターゲットチャンクと関連付けられたキャッシング記憶制御装置を識別し、
（ｂ）ストレージコマンドを生成して、前記ストレージコマンドを前記記憶ネットワークを介して、識別されたキャッシング記憶制御装置へ送ることを含む、前記ソフトウェアと
を備えるサーバコンピュータ。
【請求項９】
前記ストレージコマンドを送ることは、各ボリュームを、それぞれのセットのインタリーブされたストライプに分割することをさらに含み、各ストライプが、少なくともチャンクの粒度を有し、前記ボリュームのチャンクの各セットを含み、
前記キャッシング記憶制御装置の各一つとの前記チャンクの持続的関連付けを維持することは、前記ストライプを、前記キャッシング記憶制御装置の各一つに割り当てることを含み、
前記ターゲットチャンクと関連付けられたキャッシング記憶制御装置を識別することは、前記ターゲットチャンクを含むストライプを識別することを含む、請求項８に記載のサーバコンピュータ。
【請求項１０】
前記キャッシング記憶制御装置の各一つとの各ボリュームのチャンクの持続的関連付けを維持することは、前記サーバコンピュータを前記キャッシング記憶制御装置に接続する前記記憶ネットワーク内の一組の経路のうちの各一つとの各ボリュームのチャンクの持続的関連付けを維持することを含み、
前記ボリュームのターゲットチャンクに対して送られる各ストレージ要求に対して、（ａ）前記キャッシング記憶制御装置を識別することが、前記ターゲットチャンクと関連付けられた経路を識別することを含み、（ｂ）前記ストレージコマンドを送ることが、前記ストレージコマンドを、識別された経路上で送ることを含む、請求項８または請求項９に記載のサーバコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク化したストレージを採用したデータ処理システムの分野に関する。
【背景技術】
【０００２】
データ処理の分野では、データ記憶装置が、ストレージ指向ネットワークによってホストコンピュータシステムに結合されているいわゆるネットワーク記憶システムが知られている。そのストレージ指向ネットワークは、高速スイッチまたはルータ等の専用記憶装置、および独立した記憶システムに収容されているデータストレージリソース（例えば、磁気ディスクまたは他の記憶媒体）にアクセスできるようになっている専用記憶制御装置を含むことができる。データストレージに対するネットワーク化のアプローチは、モジュール性および拡張性の向上を含む多くの恩恵をもたらすことができる。
【０００３】
ネットワーク記憶システムにおいては、より高い可用性のために冗長性を与えることが典型的である。冗長性は、記憶媒体を収容するその記憶システムへの独立した経路を有する複数の独立した記憶制御装置を用いることによって与えることができる。その記憶制御装置は、そのストレージリソースに、いずれかの記憶制御装置を介して常にアクセスでき、同時アクセスによるパフォーマンスの向上、および冗長性による可用性の向上の両方を実現できるように、いわゆるアクティブ‐アクティブ方式で動作することができる。
【０００４】
ストレージコマンドのホストコンピュータまたは他のイニシエータが、それを用いて、ストレージの所定のボリュームにそれによってアクセスできる複数の利用可能な経路または記憶制御装置から選択する方法が用いられてきている。既知の方法は、いわゆるラウンドロビン法で、複数の記憶制御装置間に要求を分散させるためのアルゴリズムを含んでおり、例えば、この場合、連続するストレージコマンドは、記憶制御装置のセットのうちの連続するものに送られる。他の方法は、パフォーマンス評価、例えば、複数の利用可能な経路／制御装置の相対的負荷の尺度に従ってコマンドを分散させることに対処するための追加的な判断基準を含んでいる。
【０００５】
また、記憶制御装置にキャッシングを採用することも知られている。プリフェッチングと共に、比較的高速のキャッシュを用いることにより、多くのストレージコマンドは、比較的遅い記憶装置にアクセスを要求するのではなく、キャッシュによって満足させることができる。キャッシュを採用した場合には、データの全てのユーザの観点から、データシステムに格納されているデータのコヒーレントなビューを維持するためのメカニズムの使用が必要である。キャッシュコヒーレンスプロトコルは、典型的には、複数のキャッシュ間でデータを移動させるために、およびデータへのアクセスを、一貫性を保持する方式で調整するために採用される。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
パフォーマンスおよび可用性の恩恵のために、アクティブ‐アクティブ記憶制御装置のセットを用いてネットワーク記憶システムを展開すること、および追加的には、付与されたパフォーマンスの恩恵のために、記憶制御装置にキャッシングを採用することが望ましい。そのようなシステムにおいては、ストレージコマンドのホストコンピュータまたは他のイニシエータが、異なる記憶制御装置に対してストレージコマンドを選択的に送ることが必要である。しかし、ラウンドロビンまたは負荷ベースの判断基準を採用する既知の経路選択方法は、キャッシュコヒーレンスプロトコルを実行するために、記憶制御装置間で、不必要で好ましくないデータおよびメッセージングトラフィックを生じる可能性がある。ストレージコマンドが、何らかのアドレスの参照局所性に関係なく、キャッシング記憶制御装置間に分散された場合には、所定のアドレス領域内でのデータに対する異なる要求が異なる記憶制御装置へ送られる可能性が高く、そのような場合、データは、両方の要求を処理する過程で、１つの制御装置のキャッシュから別の制御装置のキャッシュへ転送される必要があることになる。また、キャッシュコヒーレンスプロトコルを実行する際に用いられるいわゆるメタデータ、例えば、どの記憶制御装置が、個々のデータブロックの記憶場所およびステータスに関与しているかを記述するディレクトリデータを転送する必要性が不当に高まる可能性がある。
【課題を解決するための手段】
【０００７】
本発明によれば、キャッシング記憶制御装置によるキャッシングの使用を考慮し、および複数の記憶制御装置間でのデータおよびメタデータの転送の必要性を最小限にしようとする経路選択判断基準を採用することにより、複数のキャッシング記憶制御装置を用いたネットワーク記憶システムの良好なパフォーマンスを実現できる方法および装置が開示される。
【０００８】
開示されているデータ処理システムは、各々が隣接するブロックから成る一つ又は複数のボリュームとして構成されたデータストレージを提供する記憶システムを含む。一組のキャッシング記憶制御装置は、その記憶システムおよび記憶ネットワークに結合されている。それらのキャッシング記憶制御装置は、アクティブ‐アクティブ方式で協働され、その記憶ネットワークから受取ったストレージコマンドに応答して、何れかのキャッシング記憶制御装置からのそのボリュームのいずれかのブロックへのアクセスを提供する。それらのキャッシング記憶制御装置は、分散キャッシュプロトコルを実行し、分散キャッシュプロトコルに従って、（ａ）各ボリュームが、各々が所定数の隣接するブロックを含む連続するチャンクに分けられており、（ｂ）それらのチャンクの所有権は、そのストレージコマンドに応答して、キャッシング記憶制御装置間で動的に移されるか、または、非所有制御装置に送られたストレージコマンドが、処理のために所有制御装置に転送される。一つの開示された実施形態において、そのキャッシュプロトコルは、チャンク所有権メタデータを含むキャッシュメタデータからなる複数の階層を有するディレクトリベースのプロトコルである。
【０００９】
サーバコンピュータ等のイニシエータは、その記憶ネットワークに結合されて、ストレージ要求に応答してそのストレージコマンドを開始する。一つの種類の実施形態において、そのイニシエータは、それ自体は、サーバコンピュータ上の一つ又は複数のアプリケーションのために、そのストレージ要求を伝達することができるコアオペレーティングシステムから受取ったストレージ要求に応答して動作するマルチパスドライバを含む。そのイニシエータは、（１）各ボリュームのために、キャッシング記憶制御装置の各々と、そのボリュームのチャンクとの持続的関連を維持すること、（２）そのボリュームのターゲットチャンクに送られた各ストレージ要求のために、（ａ）そのターゲットチャンクに関連するキャッシング記憶制御装置を識別すること、および（ｂ）ストレージコマンドを生成して、そのストレージコマンドをその記憶ネットワークを介して、その識別されたキャッシング記憶制御装置へ送信することを含む、そのキャッシング記憶制御装置に対してそのストレージコマンドを送る方法を実行する。
【００１０】
そのチャンクとそのキャッシング記憶制御装置との持続的関連のため、そのチャンクの所有権は、記憶制御装置から記憶制御装置へ移るのではなく、それぞれの記憶制御装置で安定化する傾向がある。また、そのチャンクのデータは、そのチャンクを所有する記憶制御装置のキャッシュだけに格納されることになる傾向がある。従って、データおよびメタデータの不必要な移動が低減されて、システムパフォーマンスおよび効率が向上する。一つの種類の実施形態において、その持続的関連は、例えば、システム初期化時にそのイニシエータによって実行される、そのチャンクをそのキャッシング記憶制御装置に割り当てるプロセスによって生み出すことができ、および記憶制御装置および経路を使用不能にする、あるいは記憶制御装置または経路を使用不能にする不具合発生時にも実行することができる。別の種類の実施形態においては、その持続的関連は、その記憶制御装置自体によって生み出され、およびそのストレージにアクセスしている複数のイニシエータに伝えられる。そのチャンクは、例えば、あるボリュームが、それらの記憶制御装置の各々に割り当てられている複数のストライプに分割されるストライピング技術を用いて割り当てることができる。
【図面の簡単な説明】
【００１１】
【図１】データ処理システムのブロック図である。
【図２（ａ）】ハードウェアの観点から見たサーバコンピュータのブロック図である。
【図２（ｂ）】ソフトウェアの観点から見たサーバコンピュータのブロック図である。
【図３（ａ）】記憶ボリュームのブロックおよびチャンクへの編成に関する概略図である。
【図３（ｂ）】記憶ボリュームのブロックおよびチャンクへの編成に関する概略図である。
【図４】サーバコンピュータ等のイニシエータによって採用されるマルチパシングアルゴリズムのフロー図である。
【図５（ａ）】サーバコンピュータ等のイニシエータによって採用されるマルチパシングアルゴリズムの概略図である。
【図５（ｂ）】サーバコンピュータ等のイニシエータによって採用されるマルチパシングアルゴリズムの概略図である。
【発明を実施するための形態】
【００１２】
上記およびその他の目的、特徴および効果は、添付図面に図示されているような本発明の具体的な実施形態に関する以下の説明から明らかになるであろうし、および同様の参照符号は、異なる図にわたって同じ部材を指す。それらの図面は、縮尺どおりである必要はなく、その代わりに、本発明の様々な実施形態の原理を説明することに重きが置かれている。
【００１３】
図１は、データ処理システムを示し、この場合、サーバコンピュータ（サーバ）１０および記憶制御装置１２は記憶ネットワーク１４に結合されており、および記憶制御装置１２は、磁気ディスクドライブまたは固体ディスク等の記憶装置１８を含む記憶システム１６にも結合されている。記憶システム１６は、記憶装置１８上でのデータの記憶および検索を実行することができ、それらは、論理ボリューム２０のかたちで構成され、記憶制御装置１２およびサーバ１０に提示することができる。通信リンク（または、「リンク」）２１は、記憶制御装置１２間に伸びており、また通信リンク２２は、各記憶制御装置１２と記憶システム１６との間に伸びている。リンク２１および２２は、典型的には、ファイバチャネルリンク等のストレージ指向のリンクである。リンク２１および２２は、論理的に異なっていてもよいが、物理的に同じにすることもできる。また、それぞれ、記憶ネットワーク１４とサーバ１０との間、および記憶ネットワーク１４と記憶制御装置１２との間の通信リンク２４および２６、ならびにサーバ１０間の通信リンク２５も、ストレージ指向のリンク（ファイバチャネル等）とすることができ、および記憶ネットワーク１４は、ストレージエリアネットワーク（ｓｔｏｒａｇｅ−ａｒｅａ  ｎｅｔｗｏｒｋ：ＳＡＮ）と呼んでもよく、および一つ又は複数のＳＡＮスイッチを含む。別法として、記憶ネットワーク１４、または通信リンク２１、２２および２５は、記憶ネットワーク１４が、適切なイーサネット／インフィニバンドスイッチング／ルーティング装置を用いた場合に、リンク２４および２６のための、あるいはリンク２６または２６のための１／１０ＧｂＥリンク等のインフィニバンドまたはイーサネット技術を用いて実現することができる。図示されているように、可用性を向上させる冗長性を与えるため、および全体のパフォーマンスを向上させるために、各サーバ１０と記憶ネットワーク１４との間には２つ以上のリンク２４を、および同様に、記憶ネットワーク１４と各記憶制御装置１２との間には複数のリンク２６を用いることが好ましい可能性がある。各サーバ１０、記憶制御装置１２および記憶システム１６は、これらが接続される各リンク２１、２２、２４、２５または２６のためのインタフェース回路を含む。リンク固有のインタフェース回路の各セットは、本願明細書においては「ポート」と呼ぶ。従って、図１において、例えば、サーバ１０−１は、記憶ネットワーク１４へのそれぞれ２つのリンク２４のための２つのポートを有する。
【００１４】
記憶制御装置１２は、いわゆる「アクティブ‐アクティブ」方式で機能し、これは、記憶システム１６の所定のセットのボリューム２０には、いずれかの記憶制御装置１２を介して、全てアクセス可能であることを意味する。このことは、所定のボリュームを扱う「一次」またはアクティブ制御装置と、その一次制御装置の故障時にのみ用いられる一つ又は複数の「二次」またはパッシブ制御装置とを備える他の構成とは対照的である。そのアクティブ‐アクティブ動作のため、各サーバ１０は、一般に、データを得るために、記憶システム１６への複数の経路を有する。図１に示す実施例のシステムにおいては、各サーバ１０は、以下のように、記憶システム１６への１２の経路を有する。
【００１５】
（ネットワーク１４への２つのリンク）×（各制御装置１２への２つのリンク）×（３つの制御装置１２）＝１２の経路
従って、各サーバ１０のための、および具体的には、（以下に記載する）各サーバ１０上でのマルチパシング（ｍｕｌｔｉｐａｔｈｉｎｇ）ドライバのためのタスクの１つは、異なる経路間で、そのストレージコマンドを分散させることである。動作のこの観点を以下で詳細に説明する。
【００１６】
また、記憶制御装置１２は、記憶システム１６から読み出したデータ、または、記憶システム１６に書き込んだデータをキャッシングするためのそれぞれのデータキャッシュを含み、およびいずれかのサーバ１０の観点からのボリューム２０上のデータのコヒーレントなビューを維持するための分散キャッシュプロトコルを用いる。分散キャッシュプロトコルおよび動作の関連する詳細を以下で説明する。キャッシュのこの利用により、記憶制御装置１２は、本願明細書において、「キャッシング記憶制御装置」とも呼ぶ。
【００１７】
図５（ａ）および図５（ｂ）について簡単に説明すると、ストレージコマンド５８が、マルチパシングドライバ４４により、リンク２４および２６ならびに記憶ネットワーク１４を介して記憶制御装置１２へ送信されていることが図示されている。ストレージコマンド５８は、アプリケーション４２からのストレージ要求に応答して生成される。アプリケーション４２およびマルチパシングドライバ４４に関するより具体的な情報を以下に記載する。
【００１８】
図１のシステムにおいて、サーバ１０は、記憶制御装置１２および記憶システム１６によって受信されおよび処理されるストレージコマンド５８を生成する。ＳＣＳＩの語法では、サーバ１０は、ストレージコマンド５８の「イニシエータ」として機能する。当然のことながら、代替的な実施形態において、必ずしもサーバではない他の種類の装置が、イニシエータとして機能し、および本願明細書に記載されているようないくつかの関連する機能を実行してもよい。このため、「イニシエータ」という用語は、本願明細書において、記憶制御装置１２および記憶システム１６によって受信されて処理されるストレージコマンド５８のソースを指し、およびそのような機能を実行する何らかの装置を包含することが意図されている。
【００１９】
簡単に言えば、ストレージコマンド５８は、以下のように、図１のシステム内で処理される。ストレージコマンド５８は、サーバ１０によって起動され、各ストレージコマンド５８は、マルチパシングドライバ４４により、所定のリンク２４、記憶ネットワーク１４および所定のリンク２６を介して、そのコマンドを実行するのに関与する記憶制御装置１２へ送られる。そのコマンドのターゲットであるブロックがそのキャッシュに格納されていない場合、記憶制御装置１２は、必要に応じて、別の記憶制御装置１２から、あるいは、記憶システム１６からそのブロックを得る。書込みコマンドの場合には、その記憶制御装置は、そのブロックデータを得る必要はなく、そのブロックの現存するいずれかのコピーを無効にすることだけが必要であり、場合によっては、リンク２１を介して、そのシステム内の一つ又は複数の他の記憶制御装置との通信を要する。そして、記憶制御装置１２は、キャッシュしたブロックに対して、要求された操作を実行し、読出しの場合にはデータを戻し、または、書込みの場合には、書込みデータを受取る。書込みデータを伴う記憶装置１８の最終的な更新は、公知の様々な方法のうちのいずれかで行うことができる。
【００２０】
図２（ａ）および図２（ｂ）はそれぞれ、サーバ１０の関連するハードウェア（ＨＷ）およびソフトウェア（ＳＷ）の態様を示す。ハードウェアの略図の図２（ａ）を参照すると、中央処理装置（ＣＰＵ）２８、メモリ３０、ストレージ３２および記憶ネットワークインタフェース３４は全て、相互接続回路３６によって相互接続されており、その相互接続回路は、公知の一つ又は複数の高速データ転送バスを含むことができる。ストレージ３２は、オペレーティングシステムおよびサーバ１０によって使用される他のファイルの不揮発性ローカルストレージのためのものであり、典型的には、一つ又は複数の磁気ディスクおよびフラッシュメモリ装置、あるいは一つ又は複数の磁気ディスクまたはフラッシュメモリ装置を含む。動作中、プログラムおよびデータは、ストレージ３２からメモリ３０へ転送され、そこからプログラムが実行されて、データがＣＰＵ２８によってアクセスされる。インタフェース３４は、記憶ネットワーク１４（図１）を介したストレージコマンド５８、および記憶システム１６へのデータおよびそのシステムからのデータの転送を提供する。また、サーバ１０は、一般に、他の装置またはポートへの一つ又は複数の追加的な入力／出力（Ｉ／Ｏ）インタフェース３８、例えば、サーバ１０が、それによって互いに、およびストレージデータの最終的なリクエスタであるクライアント装置と通信する独立したクライアントサーバネットワーク（企業ＬＡＮまたはワールドワイドウェブ等）への接続部も含むであろう。
【００２１】
サーバソフトウェア略図の図２（ｂ）について説明すると、（ＣＯＲＥ  Ｏ／Ｓとして示す）オペレーティングシステム４０の「コア」部分は、データベースアプリケーション、ウェブサーバアプリケーション等を含んでもよいアプリケーション４２に対する様々なサポート機能を提供する。コアＯ／Ｓ４０のサポート機能は、図１の記憶システム１６によって実現される基本的な物理的記憶に依存するデータの記憶および検索機能を含む。コアＯ／Ｓ４０は、コアＯ／Ｓ４０に対するデータストレージオブジェクトとしてボリューム２０を提示し、および記憶ネットワーク１４を介して記憶制御装置１２へ送られる具体的なストレージコマンドを生成すること、ならびにストレージコマンド５８に関連する読出しまたは書込みデータを処理することを含むアプリケーション４２によって生成されたストレージ要求５６に応答して、より詳細な動作の実行に関与するドライバ４４を利用する。加えて、ドライバ４４は、上述したような経路選択の機能も実行し、すなわち、ボリューム２０のデータを、それによって得ることのできる複数の使用可能な経路から選択する。具体的には、ドライバ４４は、どの記憶制御装置が各ストレージコマンド５８を送信するか、ならびに利用すべき特定の経路を選択し、この場合、「経路」は、特定のリンク２４と特定のリンク２６の組合せを指す。その機能のこの観点のため、ドライバ４４は、本願明細書において、「マルチパシングドライバ」と呼ばれ、例えば、図２（ｂ）、図５（ａ）および５（ｂ）に図示されている。再び、経路選択の詳細について以下で考察する。図３（ａ）および図３（ｂ）は、ボリューム２０を、データのブロック４６のリニアアレイとして見ることができることを示しており、この場合、各ブロック４６は、動作中に（実際の数は変更可能であってもよいが）概して一定数のデータユニットを、何らかの特定の方式で有する。ブロック４６は、サーバ１０、記憶制御装置１２および記憶システム１６間でのストレージのアドレス可能なユニットである。典型的なブロックサイズは、例えば、５１２Ｂ〜６４ｋＢの範囲にある。これらのブロックは、図３（ａ）および図３（ｂ）の実施例の構成に示されているブロックアドレスによって識別される。ストレージコマンド５８は、典型的には、多くの場合に開始アドレスおよび長さ（ブロックの数）によって識別されるブロックアドレスの範囲内のデータを対象とする。Ｎ個の開始ブロックアドレスと、長さＬとを有するコマンドは、例えば、Ｎ〜Ｎ＋Ｌ−１のブロックアドレスの範囲を対象とする。読出しストレージコマンド５８の場合、これらのブロックアドレスに格納されたデータは、そのイニシエータへ戻される。書込みストレージコマンドの場合には、これらのブロックアドレスに格納されたデータは、書込みストレージコマンド５８に付随するデータと置き換えられる。
【００２２】
図１のシステム内でのキャッシングの利用により、ボリューム２０は、いくつかの実施形態において、そのキャッシュプロトコルをサポートする追加的な構成を有する。図示されているように、これは、ブロック４６の、一実施形態において、隣接するブロック４６からなる一定サイズのグループである「チャンク」４８（４８−１、４８−２等で示す）へのグループ分けを含む。図３（ａ）においては、全てのチャンク４８は、同じサイズを有し、およびＮ個のブロックから成る。図３（ｂ）においては、チャンク４８−１、４８−２等は、潜在的に異なるサイズを有し、およびそれぞれＮ１、Ｎ２、…個のブロックから成り、この場合、Ｎｉは、一般に、異なる値であってもよい。図３（ａ）および図３（ｂ）の両方において、ボリューム２０は、Ｍ個のチャンク４８を有するように図示されている。ブロック４６の場合と同様に、チャンク４８のサイズは、動作中、固定値に保持されるが、変更可能なパラメータであってもよい。チャンク４８は、以下により詳細に説明するように、そのキャッシュプロトコルにおける「所有権」のユニットである。一般的には、チャンク４８を可能な限り大きくすると共に、データアクセスと、キャッシングを管理するという作業の両方が、確実に、記憶制御装置１２間で適切に分散されるような十分な粒度を維持することが好ましい。Ｍの値の実施例は、４０９６である。
【００２３】
一実施形態において、そのキャッシュプロトコルは、対応する機能／属性を備えた以下のコンポーネントを有するディレクトリベースのプロトコルである。
１）Ｄ−サーバ：
ｉ）システムごとに１つ
ｉｉ）ボリューム２０を、それらのボリュームをエクスポートする制御装置１２に対応付け、および制御装置１２を、それらのボリュームに対するメタディレクトリオーナーとして割り当てる（ボリューム２０ごとに１つの制御装置１２）
２）メタディレクトリオーナー
ｉ）ボリュームごとに１つ
ｉｉ）チャンク４８を、チャンクオーナーに対応付ける（チャンク４８当たり１つの制御装置１２）
３）チャンクオーナー
ｉ）チャンク４８ごとに１つ
ｉｉ）チャンクのブロックを、（もしあれば）現在のブロックホルダーに対応付ける
ｉｉｉ）キャッシュコヒーレンスプロトコルを調整する
４）ブロックホルダー
ｉ）ブロック４６のコピーを直ちに格納し、このことは、書込みのために保持する場合、排他的であってもよい
ｉｉ）読出し要求に応答して、データのコピーを生成することができる
ｉｉｉ）別のブロックホルダーでの書込みに応答して、コピーを無効にする。
【００２４】
上記の機能コンポーネントは、記憶制御装置１２によって実現される。例えば、制御装置１２−１は、特定のボリューム２０のためのメタディレクトリオーナーとすることができ、このことは、ボリューム２０のチャンク４８と、そのチャンクオーナーとの対応付けを維持すること、および動作中に必要に応じて、その情報を他の制御装置１２に提供することに関与するということを意味する。チャンク所有権は、データアクセスに基づいて動的である。例えば、これまで所有されていないチャンクのブロックが、初めて特定の制御装置１２を通じてアクセスされると、その制御装置１２は、チャンクオーナーになる。所有権は、所定の条件下で、例えば、制御装置１２がもはやチャンク４８のどのブロック４６も保持しない場合に、１つの制御装置１２から別の制御装置へ移される。動作中、チャンクオーナーは、どの制御装置１２が、チャンク４８のブロック４６のコピーを有しているかを知ること、および必要に応じて、現在のブロックホルダーから、要求している制御装置１２へのデータの転送を調整することに関与する。
【００２５】
分散キャッシュプロトコルは、「プリフェッチ」、すなわち、可能であれば、各ストレージコマンド５８をキャッシュで提供するようにするのに必要な要求のシーケンシャルセットを採用して、その記憶システムの記憶装置１８にアクセスする待ち時間を回避している。キャッシュメタデータ（ブロックホルダー、チャンクオーナー、ディレクトリオーナー等に関する情報）が、記憶制御装置１２間に分散されているならば、要求された記憶動作を完了できる前に、要求がいくつかの記憶制御装置１２に移動しなければならない最悪の状況が生じる。この最悪の状況は、ストレージコマンド５８を受取る記憶制御装置１２が、ターゲットボリュームおよびそのボリュームのデータに対してブロックホルダー、チャンクオーナーまたはメタディレクトリホルダーではない場合に起きる。この場合、次のことが起きる可能性がある。
【００２６】
１．そのメタディレクトリオーナーを識別するために、そのＤ−サーバは連絡を取られる。
２．（もしあれば）そのチャンクオーナーを識別するために、そのメタディレクトリオーナーは連絡を取られる。
【００２７】
３．（もしあれば）そのブロックホルダーを識別するために、そのチャンクオーナーは、連絡を取られる。
４．少なくとも１つのブロックホルダーは、そのブロックを生成するために連絡を取られ、および書込みの場合には、全てのブロックホルダーは、ブロック無効化を実行するために連絡を取られる。
【００２８】
当然のことながら、上記のプロトコルに基づき、記憶制御装置１２の間で、チャンク４８のブロック４６ならびにそのチャンク所有権（または、チャンク所有権の状態に関する何らかのメッセージ）を転送する必要性を避けるためには、いずれかの特定のチャンク４８のデータは、ほとんど独占的に１つのみの記憶制御装置１２を介してアクセスされることが非常に望ましい。記憶制御装置１２間でのチャンク４８の安定した分散を推進するというこの目的は、以下により詳細に説明するイニシエータ／サーバ１０の独特の機能の中心である。
【００２９】
図１に戻って簡単に説明すると、図１に示すのと同じ一般的なタイプの従来のシステムにおいては、特定のサーバ１０からのストレージコマンド５８を複数の記憶制御装置１２間に分散させるための様々なマルチパシングアルゴリズムを用いることが知られている。１つの基本的な方法は、「ラウンドロビン」と呼ばれ、この場合、連続するコマンドは順次、異なる記憶制御装置へ送られ、例えば、コマンド１、２、３、４は、それぞれ記憶制御装置１２−１、１２−２、１２−３および１２−１へ送られる。ラウンドロビンアプローチの変形例は、異なる記憶制御装置１２への経路上で見舞われる相対的な負荷または遅延を、例えば、記憶制御装置１２間で処理負荷を分散させて、それによってパフォーマンスおよび効率を向上させようとして、保留中のストレージコマンド５８を保持する各キューのサイズに基づいて考慮してもよい。
【００３０】
従来のマルチパシングアルゴリズムは、記憶制御装置１２によって使用中である可能性があり、そのため、実際には、システムパフォーマンスを向上させるのではなく低下させる可能性があるキャッシュプロトコルの情報なしで、それらのコマンドのルーティング経路を決めている。具体的には、そのコマンドのルーティング経路の決定は、そのコマンドが対象とするブロックアドレスまたはチャンクを考慮せずに行われる。異なるチャンク４８のブロック４６に対するストレージコマンド５８は、異なる記憶制御装置１２に対して送られることができ、これは、ほとんどの場合、特定の要求を処理する記憶制御装置１２は、ストレージコマンド５８のターゲットブロック４６がその中に存在しているチャンク４８のオーナーではないことを意味している。このような場合、記憶制御装置１２間でのメッセージングおよびデータ転送が必要であり、システム効率およびパフォーマンスを低下させる。
【００３１】
図４は、キャッシュコヒーレンスプロトコルに関する情報を組込みかつ利用することで、キャッシング記憶制御装置１２と共に用いた場合に、より良好なパフォーマンスを実現でき、記憶制御装置１２内でキャッシングをより良く利用でき、その結果、システム効率およびパフォーマンスを増進させることのできる、各サーバ１０のマルチパシングドライバ４４によって採用されるキャッシュアウェア（ｃａｃｈｅ−ａｗａｒｅ）マルチパシングアルゴリズムを示す。図４に図示した方法は、ボリュームごとに実行される。そのキャッシュアウェアマルチパシングアルゴリズムは、ボリューム２０のチャンク４８と特定の記憶制御装置１２とを持続的に関連付け、それに応じて、それらのコマンドのターゲットであるチャンク４８に基づいて、ストレージコマンド５８を記憶制御装置１２に対して送る。所定のチャンク４８に対するほとんどまたは全ての要求は、同じ記憶制御装置１２へ送られるため、チャンク所有権は安定しやすい。チャンク４８のブロック４６に対するストレージコマンド５８を受取る記憶制御装置１２は、チャンク４８のオーナー、およびチャンク４８のブロック４６のホルダーになる高い可能性を有する。従って、ストレージコマンド５８に応じるための、記憶制御装置１２間での何らかのメッセージングおよびデータ転送の必要性は大幅に低減される。
【００３２】
次に、図４について説明すると、第１のステップ５０は、チャンク４８と記憶制御装置１２との持続的な関連付けを形成するのに用いられる。ステップ５０は、初期化の一部として、または、記憶制御装置１２の数の変更およびサーバ１０と記憶制御装置１２との接続性の変更をもたらす故障、あるいは記憶制御装置１２の数の変更またはサーバ１０と記憶制御装置１２との接続性の変更をもたらす故障または再構成に応答して実行される。ステップ５０において、そのボリュームは、そのキャッシュプロトコルによって用いられるチャンク４８に対応する「ストライプ」に分けられ、それらのストライプは、記憶制御装置１２、または記憶制御装置１２への特定の経路のいずれかに割り当てられ、この場合、各経路は、特定のリンク２４と特定のリンク２６との組合せである。それらのストライプは、少なくともチャンク４８のサイズの粒度を備えたボリューム２０のデータからなるサブセットである。例えば、６４ｋＢのブロックサイズおよび２５６ＭＢのチャンクサイズ（これは、４０９６ブロック／チャンクに相当する）を仮定すると、１つのストライピング方法は、以下のようにすることができる。
【００３３】
【表１】
2013501272.tif 000003
すなわち、例えば、ストライプ０は、チャンク０、４、８、…を含み、他のストライプは、チャンク４８のそれぞれのセットを含む。
【００３４】
当然のことながら、上記のスキームにおいては、そのストライプは、そのチャンクアドレスの２つの最下位アドレスビットによって定義されるため、そのストライプ粒度は、そのチャンクサイズに等しい。一般に、そのストライプ粒度は、そのチャンクサイズの整数倍とすることができる。また、上記のスキームにおいては、全体のボリュームアドレス空間は、それらのストライプ間で、バランスのとれたインタリーブ方式で分散されるが、このことは本質的ではない。そして、ストライプの数は、一般に、記憶制御装置１２の数に対応しているため、上記の実施例は、図１に見られるような３つではなく、４つの記憶制御装置１２がそのシステム内にあると仮定している。
【００３５】
ステップ５０の第２の部分において、これらのストライプは、特定の記憶制御装置１２に割り当てられる。３つの記憶制御装置１２を備えた図１に示すようなシステムにおいては、３つのストライプを用いて、各１つのストライプを異なる記憶制御装置に、すなわち、第１のストライプを記憶制御装置１２−１に、第２のストライプを記憶制御装置１２−３に、および第３のストライプを記憶制御装置１２−３に割り当てることが便利である可能性がある。このストライプの記憶制御装置１２への割り当てにより、チャンク４８も、同様に、特定の記憶制御装置１２と暗黙的に関連付けられることになる。すなわち、特定のストライプ内に存在する全てのチャンク４８は、そのストライプが割り当てられているのと同じ記憶制御装置１２と暗黙的に関連付けられることになる。チャンク４８と記憶制御装置１２との関連付けは重要な結果であり、すなわち、ストライピングは、それを実現するための単に一つの方法である。
【００３６】
図４のアルゴリズムのステップ５２およびステップ５４の第２のセットは、マルチパシングドライバ４４によって処理される個々のストレージ要求５６に対して実行される。ここで、「ストレージ要求５６」は、アプリケーション４２によって生成され、および実行するためにコアＯ／Ｓ４０を通ってマルチパシングドライバ４４へ伝えられ、および典型的には、各ストレージコマンド５８のアドレスデータによって識別されるブロックアドレスの範囲内のデータのブロックからなるセットを読出しまたは書込むための、一つ又は複数の対応するストレージコマンド５８の一つ又は複数の記憶制御装置１２への送信を生じる要求を指す。一実施例として、ストレージ要求５６は、ブロックアドレス００００５０Ａ２１６で始まる１００ブロックの長さのデータを読み出すための要求とすることができる。マルチパシングドライバ４４は、その中に要求されたデータが存在するストライプを計算して、そのストライプが割り当てられている記憶制御装置１２へのストレージコマンド５８を発行する。
【００３７】
以下は、ストレージ要求５６のターゲットであるストライプの計算の実施例である。
ＣＯＮＴＲＯＬＬＥＲ−ＩＮＤＥＸ＝ＡＤＤＲＥＳＳ／ＣＨＵＮＫ＿ＳＩＺＥ％ＮＵＭ−ＣＯＮＴＲＯＬＬＥＲＳ
ただし、ＣＯＮＴＲＯＬＬＥＲ−ＩＮＤＥＸは、特定の記憶制御装置１２の数値識別子であり（例えば、記憶制御装置１２−１の場合は０、記憶制御装置１２−２の場合は１）ＡＤＤＲＥＳＳは、ストレージ要求５６におけるアドレスであり、およびＮＵＭ−ＣＯＮＴＲＯＬＬＥＲＳは、そのシステムにおける記憶制御装置１２の数（例えば、図１に示すように３つ）である。％演算子は、モジュロ演算子である。
【００３８】
上記のことは、各ストレージコマンド５８のブロックアドレスに基づいて記憶制御装置１２を選択するのに用いることのできる固有の発見的機能と見なすことができる。これは、用いることのできる多くの異なる種類の発見的機能のうちの単に１つの実施例である。一般的要件は、その機能が、各チャンク４８と、１つのシステムに用いられる記憶制御装置１２のセットのうちのそれぞれの記憶制御装置１２との１：１の対応付けを提供するということ、およびその対応付けは、ストレージの同じブロックにアクセスする複数のサーバのいずれに対しても同じであるということである。また、本願明細書においては、マルチパシングドライバ４４（または、より一般的にはイニシエータ１０）は、使用される機能と共に、何らかの形で予めプログラムされているが、代替的な実施形態においては、その機能は、例えば、記憶システム１６からのメッセージによって、イニシエータ１０に与えることができることが仮定されている。別法として、その機能は、イニシエータ１０にアクセス可能なある中心記憶場所から、例えば、共有ファイルシステム上のファイルからフェッチすることができるであろう。
【００３９】
当然のことながら、いくつかのストレージ要求５６は、２つ以上の別々のストライプの領域を占める十分な大きさであってもよく、また、そのような要求にどのように対処すべきかをある程度考慮することが望ましい。一つのアプローチは、そのような大きな要求を、各々が、図５（ａ）に示すように対応するストライプと関連付けられた記憶制御装置１２に対して送られる複数のストレージコマンド５８に分割することである。より単純にすることができる別のアプローチは、図５（ｂ）に示すように、そのキャッシュプロトコルに依存し、ストレージ要求５６のスタートアドレスと関連付けられた記憶制御装置１２に対して、単一のストレージコマンド５８を発行して、必要に応じて、ブロック４６およびキャッシュメタデータ（メタディレクトリおよびチャンクデータ等）を移動させるか、または、チャンク４８を所有する記憶制御装置１２にそのコマンドを転送することである。そのような要求に対しては、パフォーマンスヒットが生じるであろうが、そのシステム全体は、そのような要求が比較的まれであり、従って、そのシステムの全体のパフォーマンスに著しく影響を及ぼさないように設計すべきである。そのシステムの設計考慮事項は、上述したように、チャンクサイズおよびストライプサイズを含む。
【００４０】
考慮すべき別のシナリオは、利用可能な記憶制御装置１２の数およびサーバ１０と記憶制御装置１２との間の経路、あるいは利用可能な記憶制御装置１２の数またはサーバ１０と記憶制御装置１２との間の経路を変更する再構成である。このような再構成は、例えば、故障の結果である可能性がある。２つの一般的なアプローチをとることが可能である。１つは、新たな構成に基づいて、ステップ５０を再実行することであり、それにより、完全に新しいストライプの制御装置１２への割り当て、および場合によっては、新たなストライピング構成を生じるであろう。別のアプローチは、現存のストライピングと、故障していない制御装置／経路へのストライプ割り当てを利用すると共に、故障したいずれかの経路／制御装置からのストライプを、一つ又は複数の故障していない経路／制御装置に再割り当てすることを続行することである。当然のことながら、このような「フェイルオーバー」アプローチは、少し複雑な計算をステップ５２の後の実行時に行うことを要する可能性がある。例えば、上述したような計算を用い、および特定のストレージ要求５６に対して、その計算が、故障している記憶制御装置１２を識別した場合には、おそらく、代わりに使用すべき故障していない記憶制御装置１２を識別するために、二次的計算が実行される。
【００４１】
当然のことながら、この方法に関するいくつかの可能性のある実施形態においては、その記憶制御装置自体は、所有権領域と、それらの制御装置間での分散とを決定することができ、および結果として生じるそれらの領域の制御装置への対応付けを、初期化時およびいずれかの制御装置の故障後に、そのマルチパシングドライバへ伝えることができる。
【００４２】
当然のことながら、上記の説明は、ストライプの制御装置１２への割り当てに重点を置いている。サーバ１０が、任意の記憶制御装置１２に対して複数の経路を有している、図１に示すような場合には、サーバ１０は、記憶制御装置１２への経路間での二次的選択を実行しなければならない。このことは、従来のアプローチ、例えば、ラウンドロビンのあるバージョン、または、そのキャッシュプロトコルを無視できる他のアルゴリズムを用いて実行することができる（ここでは、各記憶制御装置１２が、その制御装置が受取る全てのストレージコマンド５８に対して用いられる単一のキャッシュを有していると仮定する）。このような２つのレベルの選択アプローチを回避するのが望ましい場合、代替例は、最初の段階で、ストライプを個々の経路に割り当てることである（すなわち、各ストライプは、特定のリンク２４と特定のリンク２６との固有の組合せに割り当てられる）。従って、通常の動作は、若干単純化することができるが、このスキームは、ある経路が故障したが、記憶制御装置１２は、いまだ別の経路で到達可能である場合に、冗長性に対するフェイルオーバーアプローチを妨げる可能性があることに留意すべきである。非対称的なシステム構成の結果として、または、特定の経路故障の結果として、全てのサーバが、同じ数のストレージのための正常な経路を有していない可能性があることが、特に懸念される。経路ベースの選択を用い、およびある経路が故障した場合は、ストライプの割り当てを再初期化する（すなわち、図４のステップ５０を再実行する）ことが望ましい可能性がある。
【００４３】
本発明の様々な実施形態を具体的に示しかつ説明してきたが、添付クレームによって定義される本発明の技術思想および範囲から逸脱することなく、構成および詳細の様々な変更を行うことができることは、当業者には理解されるであろう。
【図１】
2013501272.tif 000004
【図２（ａ）】
2013501272.tif 000005
【図２（ｂ）】
2013501272.tif 000006
【図３（ａ）】
2013501272.tif 000007
【図３（ｂ）】
2013501272.tif 000008
【図４】
2013501272.tif 000009
【図５（ａ）】
2013501272.tif 000010
【図５（ｂ）】
2013501272.tif 000011
【手続補正書】
【提出日】平成24年2月29日(2012.2.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理システムであって、
各々が、それぞれのブロックアドレスを有する隣接するブロックから成る一つ又は複数のボリュームとして構成されたデータストレージを提供するように動作する記憶システムと、
前記記憶システムと、記憶ネットワークとに結合された一組のキャッシング記憶制御装置であって、前記キャッシング記憶制御装置は、アクティブ‐アクティブ方式で協働して、前記記憶ネットワークから受取ったストレージコマンドに応答して前記キャッシング記憶制御装置のいずれかからのボリュームのブロック群のいずれかへのアクセスを提供し、前記キャッシング記憶制御装置は、分散キャッシュプロトコルを実行し、前記分散キャッシュプロトコルに従って、（ａ）各ボリュームが、各々が所定数の隣接するブロックを含む連続するチャンクに分割され、（ｂ）前記チャンクの所有権は、いずれも前記ストレージコマンドに応答して前記キャッシング記憶制御装置間で動的に移転されるか、または、非所有制御装置に送られたストレージコマンドは、処理のために所有制御装置へ転送される、前記一組のキャッシング記憶制御装置と、
前記記憶ネットワークに結合され、およびストレージ要求に応答して前記ストレージコマンドを開始するように動作する少なくとも１つのイニシエータであって、前記イニシエータは、前記ストレージコマンドを前記キャッシング記憶制御装置に送るように動作し、前記ストレージコマンドを前記キャッシング記憶制御装置に送ることは、
前記キャッシング記憶制御装置の各一つとの、各ボリュームのチャンクの持続的関連付けを維持すること、
前記ボリュームのターゲットチャンクに送られた各ストレージ要求のために、
（ａ）前記ターゲットチャンクと関連付けられた前記キャッシング記憶制御装置を識別し、
（ｂ）ストレージコマンドを生成して、そのストレージコマンドを、前記記憶ネットワークを介して、識別されたキャッシング記憶制御装置へ送信すること
を含む、前記少なくとも１つのイニシエータと
を備えるデータ処理システム。
【請求項２】
前記イニシエータは、前記ストレージ要求を生成するように機能する一つ又は複数のアプリケーションと、前記アプリケーションによって生成された各ストレージ要求に応答して、識別ステップおよび生成ステップを実行するように機能するマルチパシングドライバとを含むサーバコンピュータを含む、請求項１に記載のデータ処理システム。
【請求項３】
前記イニシエータは、各ボリュームを、それぞれのセットのインタリーブされたストライプに分けるように機能し、各ストライプは、少なくともチャンクの粒度を有し、前記ボリュームの前記チャンクの各セットを含み、
前記キャッシング記憶制御装置の各一つとの前記チャンクの持続的関連付けは、前記キャッシング記憶制御装置の各一つへの前記ストライプの割り当てを含み、
前記ターゲットチャンクと関連付けられた前記キャッシング記憶制御装置を識別することは、前記ターゲットチャンクを含むストライプを識別することを含む、請求項１に記載のデータ処理システム。
【請求項４】
前記ストレージ要求のうちの一つ又は複数は、それぞれのターゲットチャンクを含む複数のチャンクに対して送られた大きなストレージ要求であり、前記複数のチャンクは、前記キャッシング記憶制御装置のそれぞれ異なる一つと関連付けられており、
前記大きなストレージ要求の各々に対して、前記イニシエータはさらに、単一コマンド動作と複数コマンド動作からなる群から選択された大きな要求動作を実行するように動作し、前記単一コマンド動作は、前記ストレージ要求の全てのデータに対する一つのストレージコマンドを、前記ターゲットチャンクと関連付けられたキャッシング記憶制御装置へ送ることを含み、前記複数コマンド動作は、前記ストレージ要求の異なるチャンクに対する個別のストレージコマンドを生成すること、前記ストレージコマンドを、前記ストレージコマンドのチャンクに関連付けられた前記キャッシング記憶制御装置の各一つに送ることを含む、請求項１に記載のデータ処理システム。
【請求項５】
前記イニシエータは、前記キャッシング記憶制御装置の各一つとの各ボリュームのチャンクの持続的関連付けを、前記データ処理システムの初期化時に、および前記キャッシング記憶制御装置、または、前記イニシエータが、前記ストレージコマンドを前記キャッシング記憶制御装置へ送るそれぞれの経路のいずれかの可用性を変更する事象に応答した動作中に、生成するように動作する、請求項１に記載のデータ処理システム。
【請求項６】
前記データ処理システムは、前記イニシエータと、前記キャッシング記憶制御装置のうちの特定の一つとの間に複数の経路を含み、
前記ストレージコマンドを前記特定のキャッシング記憶制御装置に送ることは、前記ターゲットチャンクの識別以外の判断基準に基づいて、前記複数の経路のうちの一つを選択することを含む、請求項１に記載のデータ処理システム。
【請求項７】
前記キャッシング記憶制御装置のそれぞれとの各ボリュームのチャンクの持続的関連付けを維持することは、前記イニシエータを前記キャッシング記憶制御装置に接続する記憶ネットワーク内の一組の経路のうちの各経路との各ボリュームのチャンクの持続的関連付けを維持することを含み、
前記ボリュームのターゲットチャンクに対して送られる各ストレージ要求に対して、（ａ）前記キャッシング記憶制御装置を識別することは、前記ターゲットチャンクと関連付けられた経路を識別することを含み、（ｂ）前記ストレージコマンドを送ることは、前記ストレージコマンドを、識別された経路で送ることを含む、請求項１に記載のデータ処理システム。
【請求項８】
記憶システムと、一組のキャッシング記憶制御装置とを含むデータ処理システムに用いられるサーバコンピュータであって、前記記憶システムは、各々が連続するブロックから成る一つ又は複数のボリュームとして構成されたデータストレージを提供するように動作し、前記キャッシング記憶制御装置は、前記記憶システムと、記憶ネットワークとに結合されており、前記サーバコンピュータも前記記憶ネットワークに結合されており、前記キャッシング記憶制御装置は、アクティブ‐アクティブ方式で協働して、前記記憶ネットワークから受取ったストレージコマンドに応答して、前記キャッシング記憶制御装置のいずれかから、前記ボリュームのブロックのいずれかにアクセスを提供し、前記キャッシング記憶制御装置は、分散キャッシュプロトコルを実行し、前記分散キャッシュプロトコルに従って、（ａ）各ボリュームが、各々が所定数の隣接するブロックを含む連続するチャンクに分けられており、（ｂ）前記チャンクの所有権は、いずれも前記ストレージコマンドに応答して、前記キャッシング記憶制御装置間で動的に移転されるか、または、非所有制御装置に送られたストレージコマンドは、処理のために所有制御装置に転送され、前記サーバコンピュータは、
相互接続回路によって共に結合されたプロセッサ、メモリおよび記憶ネットワークインタフェースであって、前記記憶ネットワークインタフェースが前記記憶ネットワークに接続されている、前記プロセッサ、メモリおよび記憶ネットワークインタフェースと、
前記ストレージコマンドを前記キャッシング記憶制御装置に対して送るための、前記プロセッサによって前記メモリから実行可能なソフトウェアであって、前記ストレージコマンドを前記キャッシング記憶制御装置に対して送ることは、
前記キャッシング記憶制御装置の各一つとの各ボリュームのチャンクの持続的関連付けを維持すること、
前記ボリュームのターゲットチャンクに対して送られる各ストレージ要求に対して、
（ａ）前記ターゲットチャンクと関連付けられたキャッシング記憶制御装置を識別し、
（ｂ）ストレージコマンドを生成して、前記ストレージコマンドを前記記憶ネットワークを介して、識別されたキャッシング記憶制御装置へ送ることを含む、前記ソフトウェアと
を備えるサーバコンピュータ。
【請求項９】
前記ストレージコマンドを送ることは、各ボリュームを、それぞれのセットのインタリーブされたストライプに分割することをさらに含み、各ストライプが、少なくともチャンクの粒度を有し、前記ボリュームのチャンクの各セットを含み、
前記キャッシング記憶制御装置の各一つとの前記チャンクの持続的関連付けを維持することは、前記ストライプを、前記キャッシング記憶制御装置の各一つに割り当てることを含み、
前記ターゲットチャンクと関連付けられたキャッシング記憶制御装置を識別することは、前記ターゲットチャンクを含むストライプを識別することを含む、請求項８に記載のサーバコンピュータ。
【請求項１０】
前記キャッシング記憶制御装置の各一つとの各ボリュームのチャンクの持続的関連付けを維持することは、前記サーバコンピュータを前記キャッシング記憶制御装置に接続する前記記憶ネットワーク内の一組の経路のうちの各一つとの各ボリュームのチャンクの持続的関連付けを維持することを含み、
前記ボリュームのターゲットチャンクに対して送られる各ストレージ要求に対して、（ａ）前記キャッシング記憶制御装置を識別することが、前記ターゲットチャンクと関連付けられた経路を識別することを含み、（ｂ）前記ストレージコマンドを送ることが、前記ストレージコマンドを、識別された経路上で送ることを含む、請求項８に記載のサーバコンピュータ。
【国際調査報告】
2013501272.tif 000012
2013501272.tif 000013
2013501272.tif 000014