(57)【特許請求の範囲】
【請求項１】
ネットワークを通じてホストを１以上の記憶装置にリンクする仮想記憶システムであって、
前記ホストに接続されたエージェントであって、該エージェントに接続された仮想ディスクの位置を前記記憶装置の記憶箇所にマッピングするエントリを有するテーブルの第１コピーを記憶する揮発性メモリを有するエージェントと、
前記エージェントに接続され、かつ、前記テーブルの第２コピーを記憶する不揮発性メモリを有し、前記テーブルの前記第１コピーの内容を、前記テーブルの前記第２コピーの内容で間欠的に置換するコントローラと
からなり、入出力（Ｉ／Ｏ）動作の間、前記ホストは、前記エージェント上に記憶されている前記テーブル内のエントリの１つにアクセスして、前記記憶装置の記憶箇所の１つを決定することを特徴とする仮想記憶システム。
【請求項２】
請求項１記載の仮想記憶システムにおいて、前記テーブルの前記エントリは更に、無効状態がアクティブ化されているか否かに関する指示を含み、前記テーブルの前記エントリが使用可能なマッピング情報を収容していないとき、前記テーブルの該エントリに対する無効状態がアクティブ化されれるよう構成されていることを特徴とする仮想記憶システム。
【請求項３】
請求項２記載の仮想記憶システムにおいて、前記エージェントは、前記エントリの１つに対する無効状態がアクティブ化されている場合、前記ホストに該エントリを用いたＩ／Ｏ動作を完了させないように構成されていることを特徴とする仮想記憶システム。
【請求項４】
請求項１記載の仮想記憶システムにおいて、前記テーブルの前記エントリは更に、非書込状態がアクティブ化されているか否かに関する指示を含み、前記エントリの１つに含まれる記憶箇所にデータを書き込むことができない場合、該エントリに対する非書込状態がアクティブ化されるよう構成されていることを特徴とする仮想記憶システム。
【請求項５】
請求項４記載の仮想記憶システムにおいて、前記エージェントは、前記エントリの１つに対する非書込状態がアクティブ化されている場合、前記ホストに該エントリにおける記憶箇所にデータを書き込ませないよう構成されていることを特徴とする仮想記憶システム。
【請求項６】
請求項１記載の仮想記憶システムにおいて、該システムは更に、前記エージェント及び前記コントローラに結合された通信チャネルを備えていることを特徴とする仮想記憶システム。
【請求項７】
請求項６記載の仮想記憶システムにおいて、前記通信チャネルは、データ転送プロトコルを用いて該通信チャネル上でメッセージをトランスポートするよう構成されていることを特徴とする仮想記憶システム。
【請求項８】
請求項１記載の仮想記憶システムにおいて、前記エントリはオフセットを含むことを特徴とする仮想記憶システム。
【請求項９】
請求項８記載の仮想記憶システムにおいて、前記オフセットは論理ユニット番号識別子を含むことを特徴とする仮想記憶システム。
【請求項１０】
請求項８記載の仮想記憶システムにおいて、前記オフセットはブロック識別子を含むことを特徴とする仮想記憶システム。
【請求項１１】
請求項１０記載の仮想記憶システムにおいて、エントリは更に仮想ディスク位置のセグメントを含むことを特徴とする仮想記憶システム。
【発明の詳細な説明】
【０００１】
【関連出願】
本出願は、２０００年６月２日に出願された米国仮出願第６０／２０９，１０９号及び第６０／２０９，３２６号からの優先権を主張する。その開示内容は、この言及により全て本願にも含まれるものとする。
【０００２】
【発明の属する技術分野】
本発明は、入出力マッピングによる分散型テーブルを用いた、仮想化データ記憶システムに関する。
【０００３】
【従来の技術】
単体コンピュータは、通常、図１（Ａ）に概略的に示すように、固定通信チャネル又はバスを通じて、ハード・ディスク、フロッピ・ディスク、テープ、及び光ドライブのようなデータ記憶装置に接続する。このような通信チャネルは高速データ転送を可能にするが、記憶装置に対するアクセスは、単体コンピュータに限定される。
【０００４】
年々、多数のデバイスを記憶装置に接続し、多数のユーザによるデータ共有化を可能にすることが必要となってきた。その結果、開発者は、図１（Ｂ）に概略的に示すように、多数の相互接続され近接配置されたデバイスからなるストレージ・エリア・ネットワーク（ＳＡＮ）を作成した。ＳＡＮは、通常、１つ以上のネットワーク・アクセス・サーバを備え、ＳＡＮにおける他のデバイスによるアクセスが可能なデータ記憶装置を含むデバイスの相互接続やネットワークの動作を管理する。これらデバイスは、小型コンピュータ・システム・インターフェース（ＳＣＳＩ）バスを通じて接続すれば、デバイス間に並列通信チャネルを確立することができる。ＳＣＳＩシステムでは、一意の論理ユニット番号（ＬＵＮ）を用いてデータ記憶箇所を指定する。各記憶箇所は、別個の記憶装置、又は１つの記憶装置の１区分である。各ＬＵＮは更に、小さく容易に管理可能なデータ・サイズのブロックに分割される。ＬＵＮゾーニング（ｚｏｎｉｎｇ）をポート・ゾーニングと組み合わせることによって、ＳＡＮは、集中、分散データ記憶リソースを有することができる。このＳＡＮを介したデータ記憶リソースの共有は、全体のデータ及び記憶管理費用を大幅に削減する。何故なら、記憶装置のコストを多数のデバイス全体で償却することができるからである。また、集中、分散データ・ストレージの使用により、価値あるセキュリティ機能も得られる。これは、ＳＡＮはデバイスのデータ・アクセス能力を特定のゾーンに制限することができるからである。ＳＡＮ内では、ＬＵＮ及び他のネットワーク・デバイス間にファイバ・チャネル接続を用いることによって、高速データ入出力（Ｉ／Ｏ）動作が達成されるので、統合データ記憶構成を用いる場合の性能コストは、大幅に低減する。実際のところ、ＳＡＮは、ホスト及びストレージ・コンテナ間の延長及び共有バスとして動作し、とりわけ、記憶管理、スケーラビリティ、柔軟性、可用性、アクセス、移動、及びバックアップの改善がもたらされる。しかしながら、データ・ストレージの集中化によって、データ共有、ストレージ共有、性能最適化、要求に応じた記憶、及びデータ保護を含む新たな問題が生ずる。
【０００５】
これらの問題のために、最近になって、開発者はＳＡＮ階層に仮想化レイヤを追加した。仮想化レイヤとは、実際の記憶装置の物理層又はトポロジには関係なく、使用可能な記憶空間を仮想ディスク又はボリュームに分割するソフトウエア及びハードウエア・コンポーネントのことである。一般に、仮想ボリュームは、物理ディスクのアブストラクション（ａｂｓｔｒａｃｔｉｏｎ）としてサーバのオペレーティング・システムに提示され、仮想ボリュームが物理ディスクであるかのように、サーバによって用いられる。仮想ボリュームは、ストレージ・アレイ上のＬＵＮではない。逆に、仮想ボリュームは、記憶サブシステムとは独立して、作成され、拡張され、削除され、移動され、そして、選択的に提示される。各々は、異なる特性を有し、したがって、使用可能なストレージが拡張するにしたがって、拡張される。ＳＡＮ仮想化は、オペレーティング・プラットフォームの広い範囲に常駐するアプリケーションに対して、ＳＡＮリソースの単一プール及び標準的な１組のＳＡＮサービスを提示する。
【０００６】
しかしながら、従来のディスク及び記憶サブシステムを用いるＳＡＮは、コンピュータ・システム及び記憶装置（ストレージ）間が緊密に結合されているために、かなりのシステム及び記憶管理費用がかかる。これら及びその他の理由のために、既存のＳＡＮ技術は、スケーラビリティも限定される。更に、ＳＡＮ仮想化に残されている主要な問題として、ＳＡＮの種々のデバイス間におけるストレージ・リソースの分散がある。
【０００７】
したがって、ＳＡＮにおけるこれら及びその他の要望に対処する、改良されたデータ記憶システムが求められている。提案された記憶システムの１種に、サブシステムを用いて、制御及びアクセス機能をその他の記憶機能から分離することによって、ＳＡＮの性能を更に向上させようとしたものがある。この種のシステムでは、アクセス機能は、ＳＡＮ上のデータの使用及び操作能力を管理し、制御機能は、デバイス監視、データ保護、及び記憶容量の利用というようなＳＡＮの運用に関係する。制御及びアクセス機能を他の記憶機能から分離することによって、仮想化機能がサーバから除外されＳＡＮに編入される。従来のサーバ設定実施態様によって設けられるストレージの仮想化に加えて、ＳＡＮ上の仮想化層によって、仮想ボリュームの作成及び拡張によるデータのコピー、移動及び記憶を含む、重要なデータ移動機能の自動化が可能となる。
【０００８】
【発明が解決しようとする課題】
制御及びアクセス機能をその他の記憶機能から分離するというこの目的に向かって、現在提案されている仮想化記憶システムは、図２（Ａ）〜図２（Ｃ）にそれぞれ示すように、ホスト、ストレージ・コントローラ、又はＳＡＮ内の特殊な仮想化コンポーネント内というように、集中化した場所に制御及びマッピング機能を統合している。制御及びマッピング機能を集中化することにより、分散マッピングに伴う問題を回避する。しかしながら、１つのコンポーネントに集中させた記憶仮想化方式には、様々なスケーリングの制限が生ずる。これには、多数のコンピュータ・システム、多数の記憶システム、及び適宜の性能を有する大型ストレージ・ネットワークへのスケーリングができないことが含まれる。
【０００９】
スケーラビリティの改善は、分散仮想化記憶システムによって得ることができる。しかしながら、アレイ・コントローラのような公知の技術を用いて分散仮想化記憶システムを形成し、仮想記憶において用いられるマッピングを分散する試みは、単純なアルゴリズム分散機構を用いており、データ管理の柔軟性、例えば、独立ディスクの冗長アレイ（ＲＡＩＤ）が制限される。更に、公知の技術は、ストレージ共有、データ共有、性能最適化、記憶システムの遅延、及びデータ損失の危険性の問題を含む、スケーラブルな仮想記憶システムの課題に取り組んでいない。
【００１０】
【課題を解決するための手段】
これらの要望に応じて、本発明は、分散テーブル駆動入出力マッピングを用いたストレージ・エリア・ネットワークにおいて仮想化ストレージを形成するシステム及び方法を提供する。本発明は、コントローラとは別個の多数の並列マッピング・エージェントにおいて、仮想化マッピングを分散する。この構成によって、性能に敏感なマッピング・プロセスを並列化し、性能を最適化するように分散することができ、しかもマッピングの制御は、最適なコスト、管理、及びその他の実施態様の実用性を求めて選択されたコントローラに配置することができる。マッピング・エージェントは、揮発性メモリ内に仮想マッピング・テーブルを記憶することにより、マッピング・エージェントを実現する際のコスト及び複雑性を低減する。コントローラは、マッピング・テーブルの永続的記憶を担うことによって、単一コンポーネント内におけるマッピング・テーブルの永続的記憶に対するコスト及び管理を統合する。また、分散仮想化によって、コントローラは、多数のホスト・システムが用いる多数の仮想ディスクを管理することも可能となり、単一の仮想ディスクを多数のホスト・システムが共有することさえ可能となる。マッピング・エージェントは、他のマッピング・エージェントとは相互作用しないようにすることにより、仮想記憶システムのスケーラビリティ、及び仮想記憶システムのコンポーネント障害に対する耐性を高めることが好ましい。
【００１１】
【発明の実施の形態】
図３〜図６に示すように、本発明は、ホスト１４０及びストレージ・コンテナ１６０間の入出力（Ｉ／Ｏ）動作のために１つ以上の仮想ディスク１５０を形成するために必要な、１以上の分散マッピング・テーブル２００を用いた、仮想ストレージ・エリア・ネットワーク（ＳＡＮ）を提供する。即ち、テーブル２００は、仮想ディスク１５０内の位置をストレージ・コンテナ１６０上の実際の記憶箇所と関係付けるマッピングを収容する。テーブル２００の具体的な内容については、以下で更に詳しく説明する。
【００１２】
本発明は、ストレージ・エリア・ネットワーク（ＳＡＮ）の改良を対象とする。したがって、本発明は、あらゆる既知のストレージ・ネットワーク１３０に適用可能である。ＳＡＮ内では、ストレージ・コンテナ１６０は、既知のものであって、ディスク及びテープ・デバイス、書込可能な光ドライブ等を含むがこれらに限定されない、任意の種類の現行及び未来のプログラム可能ディジタル記憶媒体に言及してもよい。同様に、ホスト１４０は、コンピュータ、プリンタ等、ネットワークに接続しストレージ・コンテナ１６０からのデータにアクセスする任意のデバイスとすることができる。
【００１３】
同様に、ストレージ・ネットワーク１３０は、小型コンピュータ・システム・インターフェース（ＳＣＳＩ）又はファイバ・チャネルの種々の実施態様のように、現在既知の又は今後開発される、あらゆる通信技術も含むことを想定している。この分散仮想化は、大容量ストレージが使用可能であり、何らかの種類の「ストレージ・ネットワーク」インフラストラクチャを用いて接続される環境において最も有用となる。好適な実施態様の１つでは、ストレージ・ネットワーク１３０は、切換型ファイバ・チャネル接続ストレージを基本とする。しかしながら、システム１００の設計は、未だ発明されていないストレージ・ネットワークを含む他の種類のストレージ・ネットワーク１３０上における使用も除外するものではない。
【００１４】
ホスト１４０は、Ｉ／Ｏ動作コマンドを仮想ディスク１５０に発行し、これに応答して、マッピング・エージェント１１０はテーブル２００にアクセスする。エージェント１１０は一般にはこのようにしてホスト１４０に関連付けられるが、エージェント１１０はテーブル２００をホスト１４０のアクセスから隔離させる。好ましくは、ホスト１４０の各々は別個のエージェント１１０を有し、各ホストが別個のマッピング・テーブル２００を有するようにする。あるいは、システム１００は、複数のホストがエージェント１１０に接続するように構成することも可能である。多数のホスト１４０が同じエージェント１１０に接続する場合、ホスト１４０は、特定のテーブル２００に対するアクセスを共有する。
【００１５】
エージェント１１０は、典型的にはＤＲＡＭである揮発性メモリ１１１にマッピング・テーブル２００を記憶する。その結果、エージェント１１０の１つがショットダウンすなわち停電した場合、そのエージェント１１０は自分のテーブル２００のコピーを失う。例えば、マッピング・エージェント１１０がホスト・システム１４０内に埋め込まれ、その電力を当該ホスト・システムから受ける場合、マッピング・エージェントとして機能するバックプレーン・カードの場合のように、ホスト１４０は、エージェント１１０への電力を遮断することによって、マッピング・エージェント１１０を停止することができる。しかしながら、テーブル２００を揮発性メモリに記憶することによって、テーブル２００は、エージェント１１０上で容易にアクセス及び変更が可能となる。更に、マッピング・テーブル２００を揮発性メモリに記憶することによって、エージェント１１０をマッピング・コンポーネントとして実現するコスト及び複雑性を大幅に低減するという別の利点も得られる。全体的に、エージェント１１０は、性能に敏感なマッピング・プロセスを並列化し、最適な性能が得られるように分散することができる。
【００１６】
更に、システム１００は、コントローラ１２０を備え、エージェント１１０とは別個であるが、マッピング・テーブル２００を管理しかつ該テーブルをエージェント１１０に分散する。マッピングの制御は、コスト、管理、及びその他の実施上の実用性の最適化のために、コントローラ１２０に集中化されている。更に、コントローラ１２０は、テーブル２００を半永続（半永久）メモリ１２１にも記憶し、シャットダウンの後にもコントローラ１２０がテーブル２００を保持するようにする。半永続メモリ１２１は、その高記憶容量及び高速かつ頻繁な書き込み能力のため、磁気ディスクが好ましい。あるいは、コントローラ１２０は、書込可能な光媒体や電子的プログラム可能なメモリのような、その他の形態のプログラム可能記憶媒体を用いて、テーブルを記憶してもよい。このように、コントローラ１２０は、コントローラ１２０がシャットダウン又は停電しても、テーブル２００を記憶し続ける。
【００１７】
このように、マッピング・テーブル２００の永続的記憶は、コントローラ１２０の役割であり、コスト及び複雑性の双方を統合する。一方、コントローラ１２０の実際のデザインがこの開示の首題ではなく、この開示では、システム全体の構造、ならびにマッピング・エージェント１１０及びコントローラ１２０間のインターフェースが中心である。したがって、ディジタル情報記憶の技術分野では既知の任意のコントローラを、本発明を実施する必要性に応じて用いればよい。この枠組みの中で、各エージェント１１０は、コントローラ１２０のみと相互作用を行い、他のエージェント１１０とは行なわないことが好ましい。その結果、システム１００は、非常にスケーラブルで、コンポーネントの障害に対する耐性が高くなる。
【００１８】
以下で説明するように、コントローラ１２０及びエージェント１１０の相互作用は、機能及びリターン値で定義される。図３に示す仮想マッピング・システムの一実施形態では、通信は、通信チャネル１３２のような、ある種のネットワーク・トランスポート上におけるメッセージによって実現される。図４に示すシステム１００の別の実施態様では、通信チャネル１３２は、ストレージ・ネットワーク１３０自体である。コマンド、障害、及び応答をネットワーク・メッセージに変換するには、適宜の技法であれば任意のものを用いることができる。通信チャネル１３０は、ＴＣＰ／ＩＰのような既知のデータ転送プロトコルであれば、任意の形式でも使用可能である。コントローラ１２０の機能及びアクティビティ間の個々の相互作用については、以下で更に詳しく説明する。
【００１９】
図５及び図６は、テーブル２００の内容を概略的に示している。前述のように、テーブル２００は、１つ以上の仮想ディスク・セグメント２２０とストレージ・コンテナ１６０上の記憶箇所２３０との間のマッピングを含むエントリ２１０（行）を含む。記憶箇所２３０は、個々のストレージ・コンテナ１６０、及び仮想ディスク・インデックス２２０に対応するストレージ・コンテナ１６０の部分を特定する。記憶箇所２３０の形態は、用いるストレージ・ネットワークに対して適切でなければならない。ＳＣＳＩネットワークでは、記憶箇所２３０の各々は、ＬＵＮ識別子２３３と、オフセットとも呼ぶブロック識別子２３５とを含む。マッピング・テーブル・エントリ２１０内の他のフィールド全ては、単純な整数又は二進的な状態値である。
【００２０】
図５に示すように、マッピング・テーブル２００は、仮想ディスク２２０の各「ディスク・ブロック」毎に１つのエントリ２１０を有することができる。これは構築可能ではあるが、マッピング・テーブルが巨大となり、非常に断片化したマッピングとなし、望ましくない能力低下を招く。別の実施形態では、各マッピング・テーブル・エントリ２１０は、物理ストレージ・コンテナ１６０の１つにおける隣接ブロックにマッピングする、可変サイズの隣接仮想ディスク・ブロック・グループを表す。このテーブル２００の構成は、マッピング柔軟性の向上及び高密度のマッピング構造をもたらすが、可変サイズ範囲を管理する上でのアルゴリズムの複雑性、及びマッピング・エントリ検索の際の高コスト化を招く。
【００２１】
一方、好適な実施形態のテーブル２００は、マッピング・テーブル・エントリ２１０を用いており、各々、図６に示すように、１つのストレージ・コンテナ１６０にマッピングする仮想ディスク１５０上に固定サイズ数の隣接ブロック（「セグメント」）を有する。この実施形態では、エントリ２１０の各々は、仮想ディスク・ブロックの代わりに、仮想ディスク・セグメント２２０を収容する。ブロック識別子２３５は、同様に、実際の記憶ブロックの対応するセグメントを識別する。図６は、マッピング・テーブル・エントリ２２０及びブロック識別子２３５に対する値の全範囲を特定するテーブル２００を示すが、テーブル２００は同様に先頭又は末尾ブロックのみを特定することも可能である。この場合、実際の記憶セグメント及び仮想記憶セグメントのサイズは、他の方法で定義する。図６のテーブル２００に対する構成は、恐らく可変サイズ範囲マッピング程密度が高くないが、この構成は、最も単純で最も高い性能のマッピング・アクセス及び空間管理をもたらす。テーブル２００の具体的詳細には無関係に、該テーブル２００は、仮想ディスク・セグメント２２０を、Ｉ／Ｏ動作に関与する各物理記憶ブロックにマッピングしなければならない。
【００２２】
好適な実施形態では、システム１００は、多数のテーブル２００を有し、その各々は、仮想ディスク１５０及びストレージ・コンテナ１６０間で異なるマッピングを行なう。このように、異なるホスト１４０は、同じストレージ・コンテナ１６０に対して異なるアクセスを行なうことができる。テーブル２００が記憶箇所２３０の１つを含まない場合、このテーブルを用いるホスト１４０（即ち、このテーブルを記憶するエージェント１１０に接続するホスト１４０）は、その記憶箇所に記憶されている情報にアクセスすることはできない。実際のところ、ホスト１４０は、この記憶箇所２３０が存在することを認識することがない。
【００２３】
動作中、ホスト１４０はＩ／Ｏ動作（例えば、リード又はライト）を、仮想ディスク１５０上のいずれかのブロック又は複数のブロックに発生させる。各仮想メモリ・ブロックは、マッピング・テーブル２００において、個々のエントリとして又は仮想ディスク・セグメント２２０の一部として表される。Ｉ／Ｏ動作に含まれる各ブロックは、ストレージ・コンテナ１６０上の適切な記憶箇所にマッピングされる。マッピング・エージェント１１０は、ストレージ・コンテナ１６０に対して、対応するＩ／Ｏ動作を発生する。次に、Ｉ／Ｏ動作の結果が、収集されかつ仮想ディスク１５０上において完了した動作として提示される。
【００２４】
記憶箇所を指定するマッピング情報に加えて、各マッピング・テーブルのエントリ２１０は、いくつかの状態も含む。これらの状態は、仮想ディスク・セグメントの現在ステータスに関する情報を与える、ブール変数である。これらの状態は、エージェント１１０内に記憶されているテーブル２００を遠方にロードしたり、コントローラ１２０から操作することを可能にするので、重要である。これらの状態及びインターフェースは、マッピング・テーブルを分散し、マッピング・テーブルのエントリを揮発性にすることを可能にする。本明細書では、最初に、状態について説明し、次いで状態に対する関数の一部について説明する。テーブル２００は、何らかのＩ／Ｏ動作が仮想ディスク・セグメント２２０上で生じたか否かを示す少なくとも１つの無効状態２４０、及びその対応する物理的箇所（位置）２３０を含む。無効状態は、第１のＩ／Ｏ動作の間にアクティブ化化）され、この第１のＩ／Ｏ動作の完了まで別のＩ／Ｏ動作を禁止することができる。好適な実施形態では、テーブル２００は更に、非書込（Ｎｗ）状態２５０を含む。これは、対応する物理的位置２３０に収容されているデータを現在変更してもよいか否かについて示す。Ｎｗ状態２５０によって、記憶システムの性能向上が可能となる。何故なら、これは他のＩ／Ｏ動作中にデータを読み取ることを可能にするからである。無効状態２４０及びＮｗ状態２５０は、マッピング・テーブルのエントリの動的ローディング、動的マッピング変更、マッピング・テーブルのエントリの揮発性、及び同様の仮想ディスク１５０間のデータ共有の間、機能する。
【００２５】
無効状態２４０は、アクティブ化された場合は通常、マッピング・テーブルのエントリ２１０が使用可能なマッピング情報を収容しておらず、Ｉ／Ｏ動作に対応できないことを示す。このテーブルのエントリ２１０によってＩ／Ｏ動作を実行しようとすると、そのいずれの場合でも、マッピング・エージェント１１０は障害メッセージをコントローラ２１０に送る。エージェント１１０は、コントローラ１２０が障害応答を返送するまで、Ｉ／Ｏ動作を開始しない。一つの実施形態では、システム１００は、テーブル２００が新たに作成されたとき、最初にテーブル２００内のエントリ２１０全てに対して無効状態２４０をアクティブ化する。このように、テーブル２００は、以前に記憶されていたテーブルからの、メモリ内のあらゆる残留エントリを無視し、現在のエントリがアクティブであり信頼性があることを保証する。同様に、エントリ２１０が「忘れられ」、マッピング・エージェント１１０の揮発性メモリによって失われたときに、無効状態２４０をアクティブ化することもできる。無効状態２４０がエントリ２１０においてアクティブ化された場合、エントリ２１０内にある他の値及び状態の全ては、有効な情報を収容していないと想定され、無視される。
【００２６】
マッピング・エージェント１１０内に位置するテーブル２００が揮発性であるので、マッピング・エージェント１１０に障害が発生したり、再起動する場合は常に、エントリ２１０の全てがアクティブな無効状態２４０を有することになる。コントローラ１２０及びマッピング・エージェント１１０間の通信喪失が継続すると、マッピング・テーブルのエントリ全てをアクティブな無効状態２４０に戻すことによって、あるいはコントローラ１２０においてＩ／Ｏ動作を再開するように指示されるまでＩ／Ｏ動作を保留にしておく追加の機構を付加することによって、Ｉ／Ｏ動作が停止する。この構成により、コントローラ１２０は、異常なマッピング・エージェント１１０、又は到達不可能なマッピング・エージェント１１０が既知の状態に置かれたことを知ることによって、他のマッピング・エージェント１１０を調整し続けることができ、残存するマッピング・エージェント１１０に対するデータ・アクセスの高い可用性を、コントローラ１２０に提供する。
【００２７】
先に提示したように、Ｎｗ状態２５０は、アクティブ化されると、エントリ２１０によって示される仮想ディスク・セグメント２２０に対するあらゆる書込動作によって、コントローラ１２０はエージェント１１０に障害メッセージを送ることを示す。エージェント１１０は、コントローラ１２０が障害応答を返送してＮｗ状態２５０を非アクティブ化するまで、又はシステム１００がその他の方法で、Ｎｗ状態２５０がアクティブであることにも拘らず、セグメントに書き込むための何らかの処置を講ずるまで、ホスト１４０に記憶箇所２３０に書き込むことを許さない。無効状態２４０とは異なり、アクティブ化されたＮｗ状態２５０は、動作が障害を発生するのを防止する。一方、エージェント１１０は、通常、ホスト１４０が処理を先に進めて記憶箇所２３０のデータにアクセスすることができるようにする。したがって、Ｎｗ状態のみがアクティブ化されている場合、テーブル・エントリ２１０は、使用可能な記憶箇所２３０を含んでいなければならない。
【００２８】
別の実施形態では、テーブル２００は、更に、ゼロ（Ｚ）状態２６０を含む。アクティブの場合、Ｚ状態２６０は、エントリ２１０が示す仮想ディスク・セグメント２２０が全て０のバイトを含んでいることを示す。この機能によって、仮想ディスク１５０が形成され、非仮想ストレージの割り当てや調整を全く必要とせずに、初期化したように見せることができる。エントリ２１０がアクティブなＺ状態２６０を収容している場合、エージェント１１０は、その記憶アドレス２３０を無視する。ホスト１４０が記憶アドレス２３０に記憶されている情報を読み出そうとすると、エージェント１１０は、記憶アドレス２３０の実際の内容には関係なく、０で満たされたブロックのみを返送する。一方、Ｚ状態２６０がアクティブなときに記憶アドレス２３０にデータを書き込もうとしたときはいつでも、エージェント１１０は障害メッセージをコントローラ１２０に送る。エージェント１１０は、コントローラ１２０が障害応答を返送してＺ状態２６０を非アクティブ化するまで、又はシステム１００がその他の方法で、Ｚ状態２６０がアクティブであることにも拘らず、セグメントに書き込む何らかの処置を構ずるまで、ホスト１４０に記憶箇所２３０に書き込むことを許さない。
【００２９】
別の構成では、マッピング・テーブル２００は、更に、エラー（Ｅ）状態２７０も含む。Ｅ状態２７０は、アクティブの場合にエラー状態の存在を示し、以前の状態を全く破壊することなくエージェントにエラーを返送するように指示するために必要な情報を与える。Ｅ状態２７０は、既存の障害がわかった場合に用いられ、このような障害により、Ｉ／Ｏアクセスのあらゆる試行は失敗に終わる。しかしながら、Ｅ状態２７０は、マッピング障害からエラー状態を発生する手段としても使用可能であることを注記しておく。エントリ２１０がアクティブなＥ状態２７０を含む場合、エージェント１１０は記憶アドレス２３０を無視する。ホスト１４０が記憶アドレス２３０に対して読出又は書込を行なおうとした場合、エージェント１１０は、エラーをホスト１４０に返送する。
エージェント１１０及びコントローラ１２０の相互作用について、これより詳細に説明する。相互作用の一分類、障害／応答動作では、エージェント１１０はメッセージをコントローラ１２０に送り、テーブル２００に対するＩ／Ｏ動作中に障害が発生したことを示す。典型的に、障害は、エージェントによるＩ／Ｏ動作の実行を妨げるアクティブ化された状態の結果として発生する（前述の通り）。エージェント１１０は、障害メッセージをコントローラ１２０に送る。次いで、コントローラは、適切な処置を決定し、それに応じてエージェント１１０に指令する。
【００３０】
障害／応答動作の一形態、マッピング障害では、マッピング・エージェント１１０は、マッピング・テーブルのエントリ２１０がアクティブ状態を有して要求されたＩ／Ｏ動作の完了を妨げるので、ホスト１４０によって要求されたＩ／Ｏ動作を完了できないことを、コントローラ１２０に警告する。例えば、マッピング・エージェント１１０は、アクティブな無効フラグ２４０を有するテーブル・エントリ２１０に対するあらゆるＩ／Ｏ動作の要求に応答して、又はアクティブな対応するＮｗフラグ２５０を有する記憶アドレス２３０への書き込み試行に応答して、コントローラ１２０への障害メッセージを生成する。エージェント１１０からのマッピング障害メッセージは、通常、要求されたＩ／Ｏ動作、関与する仮想ディスク・セグメント２２０、及びＩ／Ｏ動作を妨げるテーブルの状態を特定する。障害が発生すると、エージェントはＩ／Ｏ動作を実行しようとしない。一方、コントローラ１２０は、障害メッセージを用いて、異常Ｉ／Ｏ動作（例えば、マッピング・エントリのローディング、マッピング・エントリの変更、他の何らかの動作が完了するまでの遅延）に応答する。コントローラ１２０の応答は、マッピング・エージェント１１０に、どのようにして障害の原因を克服するかについて通知する。
【００３１】
コントローラ１２０は、通常、問題を解決するか、又は要求元のホストにエラー・メッセージを送るように、エージェント１１０に命令する。問題を解決する場合、コントローラ１２０は、テーブルの置換すべきエントリ２１０を送る。次いで、エージェント１１０は新たなエントリ２１０をテーブルに（以前の異常エントリの代わりに）挿入し、次いでＩ／Ｏ動作を再度試行する。コントローラ１２０が問題を解決できない場合、エラー・メッセージをホストに発生するように、エージェント１１０に命令する。エージェント１１０にエラー・メッセージを発生させるために、コントローラは、エージェントに、障害の原因となったテーブルのエントリ２１０に対するエラー状態２６０をアクティブ化するように指令する。すると、前述のように、テーブルのエントリ２１０の他の内容には無関係に、エージェント１１０は、エラー・メッセージをホスト１４０に対して発生する。
【００３２】
コントローラ１２０によって発せられるエージェント１１０に対するコマンドは、第２のカテゴリの相互作用、コマンド／応答動作からなる。これらコントローラ１２０によって発せられるコマンドは、新たなマッピング・テーブル２００の作成を含み、全てのエントリは、アクティブな無効フラグを有するようにセットされるか、又は既存のテーブル２００を削除する。コントローラ１２０は、エージェント１１０から、エントリ２１０の１つの内容、又はこのエントリ２１０における状態の１つのステータスを取得することができる。更に、コントローラ１２０は、エントリ２１０の１つに対する内容の全て、又はエントリ２１０に対する状態の１つのステータスをセットするように、エージェント１１０に指令する。なお、無効状態２４０、エラー状態２６０、及びゼロ状態２７０がアクティブとなったなら、前述のように、これらの状態の初期アクティブ化が記憶アドレス２３０を無効にするので、コントローラ１２０はその状態を非アクティブ化する。これらの状態を非アクティブ化するために、コントローラ１２０は、既存のエントリ２１０を全く新しいエントリと置換するように、エージェント１１０に指令しなければならない。これらのコマンドの各々に対して、エージェントは、指令されたタスクを完了した後に、コントローラ１２０に応答を返送する。
【００３３】
コントローラがテーブル２００に情報をセットするか又はテーブル２００から情報を取得するようにエージェントに命令したとき、システムは、コントローラ１２０に単一コマンドにおいて多数の隣接するマッピング・テーブル・エントリ２１０を指定させることが最適である。この構成によって、エージェント１１０及びコントローラ１２０が一層効率的に、しかもより少ない命令で、相互作用することが可能となる。
【００３４】
コントローラ１２０がエントリ・テーブル２１０内の値及び状態の１つ又は全てをセットするようにエージェント１１０に指令するとき、コントローラ１２０は、ブロッキング・フラグを最適に含むようにエージェント１１０に命令する。ブロッキング・フラグは、コマンドの前に開始されたあらゆるＩ／Ｏ動作の完了後までコントローラ１２０のコマンドに応答するのを延期するように、エージェント１１０に指示する。ブロッキング・フラグは、それが常駐するコマンドに対してのみ適用される。通常、他の同時のコマンド及び後続のコマンドは、１つのコマンドのブロッキング・フラグの影響を受けない。即ち、エージェント１１０は、コマンドで指令されるように、直ちにテーブル２００を変更するが、以前から存在するＩ／Ｏ動作全てが完了するまで、この変更をコントローラ１２０に通知しない。このように、エージェント１１０は、コマンド内に指定されたテーブルに対する変更を反映しない以前のテーブル２００を用いて、全てのＩ／Ｏ動作の完了を、コントローラ１２０に連絡する。
【００３５】
動作の大部分において、マッピング・エージェント１１０は障害なく動作する。無障害の場合、即ち、マッピング・テーブル・エントリ２１０が有効であり、要求されたＩ／Ｏ動作を妨げるアクティブ状態が全くない場合、仮想ディスクＩ／Ｏは、マッピング・エージェント１１０を通じて完全に動作する。したがって、全てのＩ／Ｏ動作は、マッピング・テーブル２００を介して、物理ストレージ・コンテナ１６０まで進み、コントローラ１２０の関与は全くない。その結果、コントローラ１２０は、種々の管理動作を行なわなければならないときにのみ、それ自体をＩ／Ｏストリームに挿入し、通常は無障害の場合には関与せず、システム１００は高性能及び高スケーラビリティを有することができる。
【００３６】
本発明の好適な実施形態に関するこれまでの記載は、例示及び説明のために提示したのである。本発明がこれで全てであるという訳ではなく、即ち開示した正確な形態に本発明を限定することを意図する訳ではない。前述の教示にしたがって多くの変更や変形が可能である。本発明の範囲は、この詳細な説明によって限定されるのではなく、ここに添付した特許請求の範囲によって限定されることとする。前述の明細書、例及びデータは、本発明の構成体の製造及び使用について完全な説明を提供するものである。本発明の多くの実施形態が本発明の精神及び範囲から逸脱することなく行なうことができるので、本発明は以下に添付する特許請求の範囲に帰することとする。
【図面の簡単な説明】
【図１】ホストを記憶装置に接続する既知のシステムを示す図である。
【図２】既知の公知の仮想化ストレージ・エリア・ネットワークを示す図である。
【図３】本発明の一実施形態による分散仮想ストレージ・エリア・ネットワークの概略図である。
【図４】本発明の別の実施形態による分散仮想ストレージ・エリア・ネットワークの概略図である。
【図５】本発明の実施形態に係る図３の分散仮想ストレージ・エリア・ネットワークにおいて使用するためのマッピング・テーブルの概略図である。
【図６】本発明の実施形態に係る図４の分散仮想ストレージ・エリア・ネットワークにおいて使用するためのマッピング・テーブルの概略図である。
【図１】
0004771615.tif 000002
【図２】
0004771615.tif 000003
【図３】
0004771615.tif 000004
【図４】
0004771615.tif 000005
【図５】
0004771615.tif 000006
【図６】
0004771615.tif 000007