(57)【要約】      （修正有）【課題】ストレージデバイス／論理ユニットを必要に応じて仮想デバイスに割り当て、同じホストコンピュータ上で多数の仮想マシンを実行可能にするためのシステムと方法を提供する。【解決手段】複数の仮想マシンを有し、コンピュータ化された情報システムと方法は、システムストレージリソースなどの共通リソースを共有する。システムは複数の仮想マシンを実行するホストコンピュータ、複数のリソースグループに編成されたシステムリソースおよびリソースグループとホストコンピュータ上で動作する仮想マシンを関連付けるリソースコントローラを含む。仮想マシンの状態が変化すると、リソースコントローラはそれ以前に割り当てられていたリソースグループを開放し、他の仮想マシンの実行の要求が受信されるとホストコンピュータに対して新しいリソースグループが割り当てられる。【選択図】図１
2007133854.tif 000002
【特許請求の範囲】
【請求項１】
仮想実行環境でリソースを割り当てするシステムにおいて、
複数の仮想マシンを実行可能なホストコンピュータと、
複数のリソースグループからなるシステムリソース、および
前記の複数のリソースグループのリソースグループを前記のホストコンピュータ上で動作中の仮想マシンに関連付けすることができるリソースコントローラを備え、
前記の仮想マシンの状態が変化したときに、前記のリソースコントローラが前記の割り当てられたリソースグループを開放することを特徴とするシステム。
【請求項２】
前記の仮想マシンの前記の状態は非アクティブ状態に変わり、また前記の仮想マシンが動作中でないときあるいは待機状態にあるとき前記の仮想マシンは非アクティブ状態にあることを特徴とする請求項１に記載のシステム。
【請求項３】
前記の複数の仮想マシンの各々は前記のホストコンピュータ上で時分割方式で動作することを特徴とする請求項１に記載のシステム。
【請求項４】
前記のシステムリソースが少なくとも１つのストレージデバイスを備えることを特徴とする請求項１に記載のシステム。
【請求項５】
少なくとも１つの物理ストレージユニットから少なくとも１つの論理リソースユニットの割り当てを行う論理デバイスマネジャをさらに備えることを特徴とする請求項４に記載のシステム。
【請求項６】
前記の複数のリソースグループの各々が少なくとも１つの論理リソースユニットを備えることを特徴とする請求項１に記載のシステム。
【請求項７】
前記のホストコンピュータが少なくとも１つの中央処理ユニットとメモリを備え、
前記の少なくとも１つの中央処理ユニットの各々が対応する仮想マシンを実行することを特徴とする請求項１に記載のシステム。
【請求項８】
前記の関連付けられたリソースグループがＲＡＩＤディスクグループまたはＪＢＯＤ（単なるディスクの束）を備えることを特徴とする請求項１に記載のシステム。
【請求項９】
仮想環境でリソースを割り当てるシステムにおいて、
複数の仮想マシンを時分割方式で実行するホストコンピュータと、
ストレージデバイス、および
前記のストレージデバイスを複数の論理ストレージエリアに分割し、仮想マシンがアクティブ状態へ切り替わると、前記の複数の論理ストレージエリアの少なくとも１つを前記の仮想マシンに割り当てるように構成されたコントローラを備え、
前記の仮想マシンの状態が非アクティブになると、前記のコントローラが前記の仮想マシンに割り当てられた前記の論理ストレージエリアを開放することを特徴とするシステム。
【請求項１０】
前記のホストコンピュータが第二の仮想マシンを実行するとき、前記のコントローラが前記の第二の仮想マシンに第二の論理ストレージエリアを割り当てることを特徴とする請求項９に記載のシステム。
【請求項１１】
前記の第二の論理ストレージエリアの少なくとも一部が、前記の仮想マシンに割り当てられ開放された前記の論理ストレージエリアの一部を含むことを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記の複数の仮想マシンの１つがアクティブ状態にあるとき、前記のホストコンピュータに実行される他の仮想マシンは非アクティブ状態にあることを特徴とする請求項９に記載のシステム。
【請求項１３】
前記のホストコンピュータが前記の複数の仮想マシンを実行するオペレーティングシステムを備え、前記のオペレーティングシステムがアクティブの仮想マシンから第二の仮想マシンへ実行を切り替えるとき、前記のホストコンピュータは切り替えを前記のコントローラに通知し、前記のコントローラは前記のアクティブの仮想マシンに割り当てられた前記の論理ストレージエリアを開放し、前記の第二の仮想マシンに第二の論理ストレージエリアを割り当てることを特徴とする請求項９に記載のシステム。
【請求項１４】
前記の開放することが、前記のアクティブの仮想マシンに割り当てられた前記の論理ストレージエリアのマッピングを論理的に解消することと、前記のホストコンピュータが前記の論理ストレージエリアにアクセスできなくすることを含むことを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記のホストコンピュータが前記の論理ストレージエリアにアクセス不可になったとき、前記の論理ストレージエリアは前記のホストコンピュータからは見えなくなることを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記のコントローラは、ホストコンピュータの識別子、複数の仮想マシンの各々の仮想マシン識別子および状態識別子、および前記の複数の仮想マシンの各々に対応する少なくとも１つの論理ストレージエリアの識別子を含むマッピングテーブルを用いて前記の複数の論理ストレージエリアの割り当てを管理し、前記の切り替えが実行されたとき前記の非アクティブ仮想マシンの前記の状態識別子と前記のアクティブの仮想マシンの前記の状態識別子が入れ替わることを特徴とする請求項１４に記載のシステム。
【請求項１７】
前記のコントローラのメモリ内のマッピングテーブルに保存されたフラグの値を操作することにより前記の切り替えが実行されることを特徴とする請求項１４に記載のシステム。
【請求項１８】
前記のマッピングテーブルは前記のホストコンピュータに割り当てられた仮想マシンのアクティブ状態を示すフラグ、前記のホストコンピュータに対応するポート識別子、前記の複数の仮想マシンの各々の仮想マシン識別番号、論理ユニット番号および論理デバイス番号を含むことを特徴とする請求項１７に記載のシステム。
【請求項１９】
複数のホストコンピュータ、複数のストレージデバイス、および前記の複数のホストコンピュータを前記の複数のストレージデバイスに接続する複数のコントローラをさらに含むことを特徴とする請求項９に記載のシステム。
【請求項２０】
前記の複数のホストコンピュータは互いに通信して最小プロセス負荷のホストを判定し、次に実行される仮想マシンは前記の最小負荷のホストにより実行され、各々の仮想マシンは固有の識別子を有していることを特徴とする請求項１９に記載のシステム。
【請求項２１】
前記の仮想マシンを実行する前に、前記のコントローラが、前記のホストのそれぞれとそれぞれのホストに対応するそれぞれの仮想マシンを、前記の論理ストレージエリアを割り当てるのに使われるマッピングテーブルに登録し、各々の仮想マシンは前記のそれぞれのホストに対して固有の識別子を有することを特徴とする請求項９に記載のシステム。
【請求項２２】
仮想環境でリソースを割り当てするシステムにおいて、
複数の仮想マシンを実行可能で、その各々が前記の複数の仮想マシンを時分割方式で実行する複数のホストコンピュータと、
複数の論理ストレージエリアに分割されているストレージデバイス、および
前記のホストコンピュータが実行中の仮想マシンに論理ストレージエリアを割り当てることができ、前記の割り当てをマッピングテーブルを介して管理することができるコントローラを備え、
仮想マシンが非アクティブになったとき、前記のコントローラは前記の仮想マシンに割り当てられた前記の論理ストレージエリアを開放することを特徴とするシステム。
【請求項２３】
前記のホストコンピュータの内少なくとも２つが前記の複数の仮想マシンの内の同じ１つを実行するように構成されていることを特徴とする請求項２２に記載のシステム。
【請求項２４】
前記のコントローラが前記の仮想マシンに割り当てられた前記の論理ストレージエリアを開放するとき、前記の開放されたストレージエリアは前記の対応するホストコンピュータには見えなくなることを特徴とする請求項２２に記載のシステム。
【請求項２５】
前記の論理ストレージエリアを前記のホストコンピュータが実行中の前記の仮想マシンに割り当てることができる第二のコントローラをさらに備え、
前記の複数のホストの内の１つのホスト上で実行される仮想マシンが、前記の第二のコントローラにより管理されるマッピングテーブルに発見されないとき、前記の第二のコントローラは前記の仮想マシンを前記の仮想マシンと前記のホストを関連付ける前記のマッピングテーブルに追加することを特徴とする請求項２２に記載のシステム。
【請求項２６】
仮想実行環境でリソースを割り当てる方法において、
ホストコンピュータにより第一の仮想マシンを実行するステップと、
第二の仮想マシンの実行に切り替えるよう前記のホストコンピュータから要求するステップと、
前記の第一の仮想マシンに割り当てられたリソースグループをリソースコントローラにより開放するステップと、および
第二のリソースグループを前記のリソースコントローラにより前記の第二の仮想マシンに割り当てるステップと
から成ることを特徴とする方法。
【請求項２７】
前記のリソースコントローラが前記のホストコンピュータ、前記の第一と第二の仮想マシンおよびそれぞれのリソースグループを、マッピングテーブルに登録することを特徴とする請求項２６に記載の方法。
【請求項２８】
１つ以上の仮想マシンへのリソースグループの前記の割り当てがユーザの指定によるものであることを特徴とする請求項２６に記載の方法。
【請求項２９】
前記のホストコンピュータによる前記の要求が、前記のホストコンピュータの識別子、ポート番号識別子、および前記の仮想マシンの識別子を含み、前記のコントローラにより前記のマッピングテーブル内に前記のホストコンピュータ識別子は発見できたが前記のポート番号識別子は発見できなかったとき、前記のコントローラは前記のポート番号識別子を前記のホストコンピュータ識別子に対応させて登録することを特徴とする請求項２６に記載の方法。
【請求項３０】
前記のリソースグループがストレージシステムのハードウエアリソースを含むことを特徴とする請求項２６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
０００１    本発明はコンピュータシステムにおけるリソース割り当て全般に関わり、さらに具体的には仮想実行環境における様々なコンピュータリソースの割り当てに関わる。
【背景技術】
【０００２】
０００２    現代のコンピュータシステムは“仮想マシン”とも呼ばれる仮想実行環境を大規模に使用する。一般用語では、仮想マシンとはエンドユーザがソフトウェアを操作できる環境をコンピュータプラットフォームとエンドユーザの間に生成するソフトウェアのことである。
【０００３】
０００３    例えば、仮想マシンの概念は、一台のコンピュータに各々がホストコンピュータを正確にエミュレートする同一の実行環境を別々に多数生成するのに使用される。これは各ユーザにコンピュータ全体を所有しているような錯覚を与えるが、それは全て１台の物理マシン上にある他のユーザから切り離された“プライベート”マシンである。他の例では、仮想マシンはユーザが使用しているアプリケーションをコンピュータから分離するのに使用される。仮想マシンのバージョンは様々なコンピュータプラットフォーム用に書かれているので、仮想マシン用に書かれたいかなるアプリケーションも、あらゆるプラットフォーム上で、それぞれのコンピュータとオペレーティングシステム用にアプリケーションの別々のバージョンを作成することなく動作することができる。さらに、仮想実行環境はオペレーティングシステムあるいは他の仮想実行環境とは接点を持たないので、一つの環境で実行するアプリケーションが他のファイルやアプリケーションを破壊する可能性は殆どない。
【０００４】
０００４    上記の異なる仮想実行環境を論理的に分離することを維持するため、各仮想マシンは自身の論理ストレージリソースを持つ必要がある。もし、例えば１０，０００の仮想マシンがホストコンピュータで実行されその各々がストレージデバイス（論理ストレージユニット）を必要とすれば、１０，０００の論理ストレージデバイスが用意されねばならない。すなわち、各仮想マシンに1台のストレージデバイス（論理ユニット）である。
【０００５】
【特許文献１】米国特許第６，７７９，０８３号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
０００５    幅広く展開されているファイバチャネルストレージ接続インタフェースでは、理論的には１００万台を超えるストレージユニットを１台のホストコンピュータに接続することが可能である。しかしながら、実際には多くのファイバチャネルホストバスアダプタ（ＨＢＡ）と関連デバイスドライバソフトウエアの実施例では、１００から２００の論理ストレージユニットに対応できるだけである。その結果、実際には１００から２００の論理ストレージユニットがホストコンピュータに接続できるだけである。従って、膨大な数の仮想マシンが同じコンピュータハードウェア上で実行されるように構成できたとしても、各実行中の仮想マシンに対して必要な個別のストレージデバイスが利用可能でない。各仮想マシンが個別のストレージエリア（論理ユニット）を必要とするので、このことは次に1台のコンピュータ上で実行できる仮想マシンの数を制限する。
【０００７】
０００６    Ｉｔｏｕ他に与えられた米国特許第６，７７９，０８３号は指定されたホストコンピュータのグループから論理ストレージデバイス（ユニット）へのアクセスを許す方法を記載している。本特許は参照によりここに組み込まれる。記載された方法により各ホストコンピュータにはＷＷＮ（ＷｏｒｌｄＷｉｄｅＮａｍｅ）などのファイバチャネルＨＢＡの固有の識別子が割り当てられる。この識別子に基づいて、記載されたシステムは各論理ユニットに対してどのホストがアクセスするかを判定することができる。しかしながら、この方法は１台のコンピュータが複数の仮想マシンを実行しているアーキテクチャには適用することはできない。具体的には、１台のコンピュータを仮想環境で使用する状況では、すべての仮想マシンからストレージシステムへのデータアクセス要求が同じＷＷＮ情報、すなわちホストコンピュータのＷＷＮで来るので、この方法を使うことはできない。
【０００８】
０００７    ファイバチャネルならびに付帯するデバイスドライバソフトウエアなどのシステム構成要素の設計上の制約を受けることなく、１台のホストコンピュータに所望の数の仮想マシンを実行可能にする環境が求められている。
【課題を解決するための手段】
【０００９】
０００８    本発明の特徴の１つは、ストレージデバイス／論理ユニットを必要に応じて仮想デバイスに割り当て、同じホストコンピュータ上で多数の仮想マシンを実行可能にするためのシステムと方法である。
【００１０】
０００９    本発明の限定のためでなく説明のための実施例により上記の不都合、および上で説明されていない他の不都合を克服することができる。本発明は必ずしも上に記載された不都合のいずれかを克服することを求められてはおらず、本発明の限定のためでなく説明のための実施例が上に記載された不都合のいずれも克服しない場合もある。添付の請求項を調べて本発明の真の範囲を決定するべきである。
【００１１】
００１０    本発明の限定的でなく例示的な記述内容により、仮想実行環境においてリソースを割り当てるためのシステムが提供される。システムは、複数の仮想マシンを実行可能なホストコンピュータ、複数のリソースグループを含むシステムリソース、およびホストコンピュータ上で実行する仮想マシンに複数のリソースグループ内の一つのリソースグループを割り当てる働きをするリソースコントローラを含んでいる。仮想マシンの状態が変化すると、リソースコントローラは割り当てられた仮想マシンを開放する。
【００１２】
００１１    さらに本発明の他の限定的でなく例示的な記述内容により、仮想環境でリソースを割り当てるシステムが提供される。システムは時分割法で複数の仮想マシンを実行するホストコンピュータ、ストレージデバイス、およびコントローラを含む。コントローラはストレージデバイスを複数の論理ストレージエリアに分割し、仮想マシンがアクティブ状態に切り替わると複数の論理ストレージエリアの少なくとも１つを仮想マシンに割り当てるように構成されている。仮想マシンの状態が非アクティブになると、コントローラは仮想マシンに割り当てられていた論理ストレージエリアを開放する。
【００１３】
００１２    さらに本発明の他の限定的でなく例示的な記述内容により、仮想環境でリソースを割り当てるシステムが提供される。システムは複数の仮想マシンを実行可能な複数のホストコンピュータを含む。ホストコンピュータの各々は時分割方式で複数の仮想マシンを実行する。システムはさらに複数の論理ストレージエリアに分割されたストレージデバイス、およびコントローラを含む。コントローラは論理ストレージエリアをホストコンピュータで実行中の仮想マシンに割り当てる働きをし、マッピングテーブルを介して割り当てを制御する働きをする。仮想マシンが非アクティブになると、コントローラは仮想マシンに割り当てられた論理ストレージエリアを開放する。
【００１４】
００１３    さらに本発明の他の限定的でなく例示的な記述内容により、仮想実行環境でリソースを割り当てる方法が提供される。この方法は第一の仮想マシンを実行し、第二の仮想マシンを実行するよう切り替えを要求するホストコンピュータを含む。この方法はさらに、第一の仮想マシンに割り当てられたリソースグループを開放し、第二のリソースグループを第二の仮想マシンに割り当てるリソースコントローラを含む。
【００１５】
００１４    本発明に関係して追加される特徴は、以下の記述で一部示され、一部は説明から明らかとなり、あるいは本発明を実施することにより学習することができる。本発明の特徴は、特に以下の詳細な説明と添付の請求項で指摘される、要素と様々な要素と特徴の組み合わせによって理解され実現される。
【００１６】
００１５    上記および以下に述べる記述は例として説明のためのみのものであり、権利請求された発明あるいはその適用を制限することをどんな方法でも意図したものではないことが理解されるべきである。
【発明を実施するための最良の形態】
【００１７】
００３４    以下の詳細な説明に於いて、付随する（複数の）図面が参照され、同じ機能要素は同じ番号で指定されている。上記の付随する図面は限定のためでなく説明のために示され、特定の実施例と具体化は本発明の原理と合致するものである。これらの具体化は、本技術に通じた人であれば本発明を実施するのに十分な詳細さで記述されており、本発明の範囲と精神から外れること無しに他の具体化の使用、構造の変更及び／または様々な要素の置き換えが可能であることは理解されるところである。従って、以下の詳細な記述は限定される意味で解釈されるべきものではない。さらに、記載された発明の様々な実施例が、汎用コンピュータ上で動作するソフトウェアの形で、専用ハードウェアの形で、あるいはソフトウェアとハードウェアの組み合わせで具体化可能である。
【００１８】
００３５    本発明のシステムの例示的な実施例はストレージシステムとホストコンピュータハードウェアを備えている。ホストコンピュータは複数の仮想マシンを時分割方式で実行する。ストレージシステムは一組のストレージデバイス（論理ユニット）と接続するストレージコントローラを備えている。ストレージコントローラは接続された論理ストレージユニットをいくつかのデバイスグループにグループ化する。各々のこれらデバイスグループは複数の仮想マシンの１つに割り当てられ、この仮想マシンはストレージシステムに接続されたホストコンピュータで動作する。
【００１９】
００３６    ＣＰＵ１台の環境では、各時点で仮想マシンは１つのみがホストコンピュータハードウェアで動作する。これは、仮想マシンモニターソフトウェアの制御の下で、ＣＰＵ時間のその分を受け取るそれぞれの仮想マシンで、複数の仮想マシンの中で、プロセッサ時間を分け合うことにより実現される。従って、ＣＰＵ１台のホストコンピュータでは、各仮想マシンは時分割方式で動作する。一方、２台以上のＣＰＵを有するホストコンピュータの実施例では、複数の仮想マシンを同時に実行することが可能である。
【００２０】
００３７    ＣＰＵ共有と同様に、本発明のシステムで動作する仮想マシンはまたシステムストレージリソースを共有することができる。具体的には、第一の仮想マシンの実行時、ストレージシステムは論理ユニットの第一のグループをホストコンピュータに割り当てる。これらの割り当てられたユニットは、ストレージユニットが割り当てられた時にホストコンピュータ上で動作中の第一の仮想マシンによって使用される。
【００２１】
００３８    第一の仮想マシンの動作が停止し、第二の仮想マシンの動作サイクルが開始すると、本発明のストレージ管理システムの実施例は論理ユニットの第一のグループの割り当てを開放し論理ユニットの第二のグループをホストコンピュータに割り当てる。
【００２２】
００３９    図１は発明の概念の例示的実施例によるコンピュータ化された情報システムを示す例示的ブロック図を示す。図１に示した例示的情報システムは１つ以上のホストコンピュータ１Ａ、１Ｂ・・・１Ｎと接続するストレージシステム２を含み、これらのホストコンピュータは以後“ホスト”と呼ばれる。ホスト１Ａ・・・１Ｎは様々な手段を用いてストレージシステム２に接続することができる。例えば、ホスト１Ａ・・・１Ｎの内１つ以上がファイバチャネルインタフェースケーブルを用いてストレージシステム２に直接接続し（例えば、ホスト１Ｎが直接ストレージシステム２に接続する）、ホスト１Ａ・・・１Ｎの内１つ以上がファイバチャネルインタフェーススイッチ（ＦＣ−ＳＷ）４を介してストレージシステム２へ接続することができる（例えば、ホスト１Ａと１ＢがＦＣ−ＳＷ４経由で接続する）。
【００２３】
００４０    さらに図１に示すシステムの実施例では、システム管理者によるストレージシステムの管理を可能とするためコンソール５が用意されている。図１に示した例示的コンソール５は公知の適切な接続手段のいずれかを用いてストレージシステム２に接続され、本発明のストレージシステムの管理を容易とする。
【００２４】
００４１    ストレージシステム２は一組の物理ディスク３０と結合するディスクコントローラ２０を含む。ディスクコントローラ２０は、例えば、図１に示す物理ディスク３０などの接続された物理デバイスを管理するように、適切なソフトウェア及び／またはハードウェアで構成される。上記の物理ディスク３０を管理するのに加えて、ディスクコントローラ２０はまた、物理ディスク３０上の使用可能な領域から論理ストレージデバイスを割り当てて管理する。図２は本発明の概念の例示的実施例による論理デバイスを示すブロック図である。図２に示した例示的論理デバイスは４つの物理ストレージデバイス（ディスク）３０、具体的にはディスク３０−１、３０−２、３０−３および３０−４から構成されている。これらの各ディスクはストライプと呼ばれる領域に論理的に分割されている。ストライプとはディスクブロックの所定の直線的領域であり、図３のＲＡＩＤ構成テーブルに保存された対応する長さを有し、これについて以下に詳細に記述する。例えば、図２に示した論理デバイスでは、各ディスク（３０−１・・・３０−４）は複数のストライプに分割されており、ディスク３０−１はストライプ１−１、１−２、１−３、Ｐ４、１−５などを有し；ディスク３０−２はストライプ２-１、２−２、Ｐ３、２−４、２−５などを有し；ディスク３０−３はストライプ３-１、Ｐ２、３−３、３−４、３−５などを有し；ディスク３０−４はストライプＰ１、４−２、４−３、４−４、Ｐ５などを有している。Ｐ１、Ｐ２・・・Ｐ５と指定されたストライプはパリティストライプで、対応するストライプのエラー検出／訂正パリティデータを保存するのに使用される。ディスクコントローラ２０は、物理ディスク３０の各種のストライプへの分割を含めてディスク３０を管理する。
【００２５】
００４２    図１に示すディスクコントローラ２０は中央処理装置（ＣＰＵ）２１、１つ以上のバックエンドインタフェース２２、メモリ２３、１つ以上のファイバチャネルインタフェース（ＦＣ  Ｉ／Ｆ）２４、キャッシュメモリ２５、および不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）２６を含んでいる。ここに示す例示的実施例では、ＮＶＲＡＭ２６はバッテリー電源の不揮発性メモリである。バックエンドインタフェース２２はコントローラ２０を物理ディスク３０に接続し、ＦＣ  Ｉ／Ｆ２４はコントローラをホスト１Ａ・・・１Ｎに接続する。図１に示すように、ディスクコントローラ２０のＦＣ  Ｉ／Ｆ２４はホスト１Ａ、１Ｂに間接的に、具体的にはＦＣ−ＳＷ４を介して接続している。
【００２６】
００４３    図１にさらに示したように、ディスクコントローラ２０のメモリ２３は、入／出力ソフトウェアモジュール（Ｉ／Ｏプロセス）２３３などの各種のソフトウェアモジュールを保存している。この入／出力ソフトウェアモジュール（Ｉ／Ｏプロセス）２３３は、ホスト１Ａ、・・・１Ｎ、論理デバイスマネジャソフトウェア２３１、およびデバイスマッパソフトウェア２３２からストレージシステム２への要求を受け、このデバイスマッパソフトウェア２３２は各ホストが各論理デバイスにアクセス可能となるように論理ユニット番号（ＬＵＮ）を各論理デバイスに割り当てる。論理デバイスマネジャ２３１は物理ディスク３０上の使用可能なストレージ領域から１つ以上の論理デバイスを生成し、ＲＡＩＤ構成テーブルを使用して論理デバイスと物理ディスク３０との間のマッピングを管理する。
【００２７】
００４４    図３は例示的ＲＡＩＤ構成テーブル４００を示す。このテーブルは論理デバイスマネジャ２３１に管理される。ＲＡＩＤ構成テーブル４００の各行は対応する各論理デバイスの情報を含む。例えば、図３に示すように列４０１は論理デバイス番号（ＬＤＥＶ）を保存する。各論理デバイスはそれ自身の固有の識別番号が割り当てられており、単に言葉を簡単にするためにここでは論理デバイス番号（ＬＤＥＶ番号）と呼ぶ。図３に示す例示的ＲＡＩＤテーブルはＬＤＥＶ  ０、１、・・・ｋに対応する記録内容を含む。列４０２は各物理ディスク３０の固有の識別子を保存しており、この物理ディスクは他の同様なディスクと共に対応する論理デバイスを形成する。このため、各ディスク３０は固有の識別番号（例えば、ディスク番号）を備え、これは列４０２に保存されている。図３に示す例ではＬＤＥＶ  ０の論理デバイスはディスク１、２、３および４から、ＬＤＥＶ  １の論理デバイスはディスク５、６、７および８から、そして最後にＬＤＥＶ  ｋの論理デバイスはディスクｍとｍ＋１から構成されている。
【００２８】
００４５    図３に示すように、ＲＡＩＤ構成テーブル４００はさらにＲＡＩＤレベル情報を保存する列４０３を含んでいる。具体的にはディスクコントローラ２０はディスク３０から冗長アレイ（ＲＡＩＤ）を構築する。これらの各アレイに対応するＲＡＩＤレベル情報は、図３に示すＲＡＩＤ構成テーブル４００の列４０３に保存されている。例えば、ＬＤＥＶ値０、１及びｋのデバイスのＲＡＩＤレベル値は５である。図３に示すＲＡＩＤ構成テーブル４００はまた各論理デバイスのストライプサイズ情報を含むことができる。例えば、図３はＬＤＥＶ値０、１及びｋの論理デバイスのストライプサイズは３２ｋＢであることを示す。図３に示す例ではＲＡＩＤレベル、ＲＡＩＤグループを形成するディスクの数およびストライプサイズはすべて予め決められた固定値である。他の、代替的な実施例では、ＲＡＩＤ構成テーブルに保存された上記のパラメータは適宜変更することができる。従って、ＲＡＩＤ構成テーブル４００の実施例の説明は、単に例として記載されたものであり、限定するためのものではない。
【００２９】
００４６    ストレージシステム２を使用する前に、ユーザまたは管理者がＲＡＩＤ構成テーブル４００に保存される各種のパラメータの値を設定することができる。具体的には、ユーザがＬＤＥＶ番号、各ＲＡＩＤグループのディスクの数、ＲＡＩＤレベル、およびストライプサイズを含むこれらの各値を設定及び／または適切に修正することができる。さらに、本発明のシステムのオペレーション中にこれらの値はユーザまたはシステム自体によって動的に調整される場合がある。上記の値が適切に設定された後、１台以上の物理ディスク３０が設置されると論理デバイスが自動的に生成される。
【００３０】
００４７    図４は本発明の概念の例示的実施例によるホストコンピュータ１のブロック図である。各ホスト１はＣＰＵ１１、ファイバチャネルインタフェース（ＦＣ  Ｉ／Ｆ）１２、メモリ１３およびインタフェース１４を含む。インタフェース１４は相互接続インタフェースの例であり、キーボード、マウス、陰極線管（ＣＲＴ）、ＬＣＤあるいはプラズマディスプレイ、およびその他類似の装置を含んで備えられる各種の入／出力周辺装置とホスト１を接続する。例えば、インタフェース１４はネットワークインタフェースカード（ＮＩＣ）とすることができる。
【００３１】
００４８    ホスト１のメモリ１３はＣＰＵ１１により実行される各種のソフトウェアモジュールを保存する。図４に示す例では、メモリ１３はオペレーティングシステムソフトウェア１３１を始めとして仮想マシン１３２を実現するソフトウェア、およびデバイスドライバ１３３を保存している。オペレーティングシステム１３１は多数のソフトウェアモジュールを実行し、１つ以上の仮想マシンを生成する。これは具体的には仮想マシン１（１３２−１）、仮想マシン２（１３２−２）などであり、以後ともに“仮想マシン１３２”と呼ばれる。本発明の概念の実施例ではオペレーティングシステム１３１は、本分野における通常の技術を有する者には既知の技術あるいは将来開発されるであろう技術のいずれかを用いて、極めて多数の仮想マシン１３２を生成することが可能である。
【００３２】
００４９    各時点で、仮想マシン１３２の１つのみがホスト１上で動作している。実行中の仮想マシンの状態は“アクティブ”状態と呼ばれる。ホスト１のオペレーティングシステム１３１は仮想マシンを、各時点で１つの仮想マシンのみがアクティブとなる時分割方式で実行する。オペレーティングシステムが特定の仮想マシンを実行していないとき、その仮想マシンは“非アクティブ”状態であり、これは実行されていないことを意味する。上記の非アクティブの仮想マシンは“待機中”状態とも呼ばれる。
【００３３】
００５０    各仮想マシン１３２は固有の識別子が割り当てられる。本発明のシステムの実施例では、この識別子の範囲をこの仮想マシンを実行するホスト１に限定することができる。以後この識別子を仮想マシンＩＤ（ＶＭＩＤ）と呼ぶ。例示的実施例において、ＶＭＩＤ識別子はゼロから始まる固有の整数である。一例として、ホスト１Ａでは、仮想マシン１（１３２−１）に対応するＶＭＩＤ値は０であり、仮想マシン２（１３２−１）のＶＭＩＤ値は１であるのに対して、ホスト１Ｂに対してはＶＭＩＤの割り当ては違っていても良い。本技術に通常程度の知識を持つ者にとっては容易に明白となるところであるが、ＶＭＩＤは整数に限定されることはなく、ＡＳＣＩＩ文字列または既知のあるいは将来開発される他の適切な識別方式を用いて定義することが可能である。
【００３４】
００５１    本発明のシステムの実施例では、図４に示すデバイスドライバ１３３はオペレーティングシステム１３１の一部であっても良い。具体的には、デバイスドライバ１３３はユーザ及びストレージシステム２からの入／出力要求を処理する。ホスト１がファイバチャネルを介してストレージシステム２と通信を確立できるように、ポートログイン手順（ＰＬＯＧＩ）を実行することができる。具体的には、ファイバチャネルプロトコルに順じて要求側（ホスト１）はＰＬＯＧＩフレームを受信側（ストレージシステム２）に送る。ＰＬＯＧＩフレームは要求側のＷＷＮとソース識別子（Ｓ＿ＩＤ）を含んでいる。フレームを受信すると、受信側は確認メッセージを送り、通信リンクが確立する。
【００３５】
００５２    図５は例示的ＰＬＯＧＩのオペレーションを示すフローチャートである。最初に、ホスト１がＰＬＯＧＩ要求をストレージシステム２へ送る。コントローラ２０のＩ／Ｏプロセスモジュール２３３がホスト１から要求を受信し、以下のプロセスを実行するためにデバイスマッパ２３２を呼び出す。上記で説明したように送付されたＰＬＯＧＩ要求はホスト１のＷＷＮとソース識別子（Ｓ＿ＩＤ）を含むことに留意すべきである。上記のプロセスのオペレーション１００１で、デバイスマッパ２３２は受信したＷＷＮを用いてマッピングテーブルを検索しホスト１に対応する記録内容を探す。マッピングテーブルの詳細を以下に記述する。オペレーション１００２で適切なホストが見つけられているかがチェックされる。ホストが見つけられなければ（受信したＷＷＮがマッピングテーブルにみつからない）、図５に示すプロセスはエラーで終了する。一方、ＷＷＮが見つかった場合、プロセスはオペレーション１００３へ進む。
【００３６】
００５３    オペレーション１００３では、デバイスマッパ２３２が受信したＳ＿ＩＤに対応する記録内容に対してマッピングテーブルをチェックする。マッピングテーブルがオペレーション１００２で見つけたＷＷＮ６５１に対応するＳ＿ＩＤを含んでいたら（例えば、図６に示したマッピングテーブルの実施例を参照）、プロセスは終了する。そうでない場合にはプロセスはオペレーション１００４へ進む。オペレーション１００４ではデバイスマッパ２３２がポートＩＤ情報（Ｓ＿ＩＤ）とホスト識別子（ＷＷＮ）との組み合わせをマッピングテーブルに追加する。
【００３７】
００５４    例示的マッピングテーブル６５０が図６に示されている。マッピングテーブル６５０は論理ストレージデバイスをホスト上で動作する仮想マシンにマッピングする。具体的には、マッピングテーブル６５０は列６５１乃至６５７を含む。列６５１はホストのＷＷＮ値を、列６５２は対応するＳ＿ＩＤ値を保存している。上記で説明したように、各ホスト１はファイバチャネルＨＢＡを有し、これはポートの識別子として固有のＷＷＮ（ワールドワイドネーム）とソース識別子値を有する。例えば、図６に示すテーブルは２つのホストの記録内容を含み、１つのホストは“３１：０２：ｃ２：６０：３５：０１”のＷＷＮ値と“ｘｘｘｘｘｘ”のＳ＿ＩＤ値を有し、他方のホストは“３１：０２:ｃ２:２６:４４:０４”のＷＷＮ値と“ｙｙｙｙｙｙ”のＳ＿ＩＤ値を有する。
【００３８】
００５５    図６に示すマッピングテーブル６５０は、仮想マシン（ＶＭＩＤ）６５３の識別情報をさらに含んでいる。この情報によりマッピングテーブルが仮想マシンとそれぞれのホストを対応づけることが可能になる。例えば、図６において、３１：０２：ｃ２：６０：３５：０１のＷＷＮ値を有するホストはＶＭＩＤ値０と１の仮想マシンと関連付けられている。さらに、３１：０２:ｃ２:２６:４４:０４のＷＷＮ値を有するホストはＶＭＩＤ値０の仮想マシンを実行する。各仮想マシンに対してマッピングテーブル６５０はさらに仮想マシンが動作中であるかどうかを特定する。具体的には、列６５４はどの仮想ボリュームがアクティブであるかを示す仮想マシンの状態を保存する。前述のように、各ホスト１に対して、特定の時点でただ１つの仮想マシンがアクティブになる。従って、本発明のシステムの実施例において、アクティブ列６５４に保存された値は０（非アクティブ）と１（アクティブ）で表わされる。
【００３９】
００５６    マッピングテーブル６５０はさらに各仮想マシンに割り当てられたストレージエリアの情報を含んでいる。具体的には、マッピングテーブル６５０は論理ユニット番号列６５６と論理デバイス列６５７を含む。具体的には、図６において、ＶＭＩＤ値０で３１：０２：ｃ２：６０：３５：０１のＷＷＮ値を有するホスト上で動作する仮想マシンは、論理ユニット番号０、１・・・ｋ−１と論理デバイス１、２・・・ｍと関連付けられている。
【００４０】
００５７    マッピングテーブル６５０を使用してアクティブの仮想マシンへ割り当てられたストレージデバイスへのアクセスをホストに提供することができる。一例として、３１：０２：ｃ２：６０：３５：０１のＷＷＮ値を有するホストが、ＶＭＩＤ値が０で“アクティブ”（該当するアクティブ列６５４の行が値１を含む）に設定された仮想マシンの状態を有するとき、ホスト１はＬＵＮ６５６が０・・・ｋ−１である論理ユニットとしてＬＤＥＶ６５７の１・・・ｍにアクセス可能である。マッピングテーブル６５０ではＶＭＩＤ値０の仮想マシンに対応する論理デバイス６５７と論理ユニット番号６５６は６６０と表示された行のグループのメンバーであり、一方ＶＭＩＤ値１の仮想マシンに対応するＬＵＮとＬＤＥＶの値は６６１と表示されたグループの中にある。
【００４１】
００５８    例えば、ＬＵＮ６５６が１でＶＭＩＤ値が０の仮想マシンがアクティブに設定（アクティブ６５４が１）されているとき、ホスト１はＬＤＥＶ値６５７が‘２’の論理デバイス（エレメント６６０の２行目）にＬＵＮ値が１の論理ユニットとしてアクセスすることができる。一方、ＶＭＩＤ値が０の仮想マシンが非アクティブに設定されていてＶＭＩＤ値が１の仮想マシンがアクティブに設定されているとき、ホスト１はＬＤＥＶ値が８の論理デバイスにＬＵＮ１としてアクセスすることができる。
【００４２】
００５９    本発明の実施例において、ホスト１Ａ・・・１Ｎで仮想マシンが動作可能となる前に、ユーザはマッピングテーブル６５０の列、具体的にはホストＷＷＮ列６５１、ＶＭＩＤ列６５３、ＬＵＮ列６５６およびＬＤＥＶ列６５７に適切な値を挿入することが必要な場合がある。適切な認証／ログイン手順の後に、小型コンピュータシステムインタフェース（ＳＣＳＩ）プロトコル、具体的にはファイバチャネルプロトコル−小型コンピュータシステムインタフェース（ＦＣＰ−ＳＣＳＩ）プロトコルで規定されるコマンドを用いて入出力オペレーションが実行される。例えば、コマンドにはＷＲＩＴＥ、ＲＥＡＤ、ＩＮＱＵＩＲＹなどがある。
【００４３】
００６０    ホスト１がＩ／Ｏ要求（ＲＥＡＤ、ＷＲＩＴＥなど）を仮想マシンに発行する時、これらの各Ｉ／Ｏ要求は対象となる仮想デバイスを特定する識別情報を含んでいる。本発明の概念の例示的実施例ではホスト１とストレージシステム２の間のデータ伝送はファイバチャネルプロトコルに従って行われるので、コマンドに２種類の識別情報が含まれる。この識別情報にはＤ＿ＩＤ番号（宛先ＩＤと対象デバイスのポートＩＤを表す）と論理ユニット番号（ＬＵＮ）が含まれる。Ｄ＿ＩＤ番号は対象ＦＣ  Ｉ／Ｆ２４の１つを特定するパラメータであり、  ストレージシステム２と対応するホストがかかわるＦａｂｒｉｃ  Ｌｏｇｉｎ（ＦＬＯＧＩ）オペレーションの間にＦａｂｒｉｃ（ファイバチャネルスイッチ）により決定される。ＬＵＮはＤ＿ＩＤで特定される対象ＦＣ  Ｉ／Ｆ２４からアクセス可能なデバイスの１つを特定する識別番号である。
【００４４】
００６１    最初は、全ての仮想マシンは非アクティブである、すなわちマッピングテーブル６５０のアクティブ列６５４の全ての行は値‘０’を含んでいる。各ホスト１が仮想マシンの１つを（ＰＬＯＧＩオペレーションの後に）実行し始めると、それぞれのホスト１は仮想マシンの１つを論理デバイスにアクセス可能とするようにストレージシステム２に指示を出す。ストレージシステム２がこの指示を受信すると、テーブル６５０のアクティブ列の中の対応する値を“１”に変えて、対応する仮想マシンの状態を“アクティブ”に変える。
【００４５】
００６２    次に特定のホスト１が別の仮想マシンの実行に切り替えが必要となった時、ホストは切り替え処理を実行する。この例示的実施例が図７に示されている。図７では、図６に示されたオペレーティングシステム１３１のようなオペレーティングシステムがアクティブの仮想マシンを別の仮想マシンに切り替える。一例としてオペレーティングシステムは仮想マシン１３２−１の実行から仮想マシン１３２−２の実行に切り替える。従って、図７に示すように、オペレーション２００１において、オペレーティングシステムは第一の仮想マシンのオペレーションを停止する。オペレーション２００２でオペレーティングシステムの対応するホスト１は仮想マシン１を仮想マシン２へ切り替えることを指示する指令をストレージシステム２に送る。指令は仮想マシン２のＶＭＩＤを含む。オペレーション２００３で仮想マシン２の実行が開始する。
【００４６】
００６３    図８はホスト１から指示されたときにストレージシステム２が仮想マシンと対応する論理ストレージユニットを切り替えるプロセスのフローを示す。具体的には、オペレーション１１０１でデバイスマッパ２３２（図１に示されている）がホスト１から切り替え要求を受信する。要求はストレージシステム２に切り替えを通知する独自仕様のコマンドであってもよい。要求は少なくともホスト１のポートＩＤ(Ｓ_ＩＤ)とホスト１上で実行される仮想マシンのＶＭＩＤ情報を含む。デバイスマッパ２３２はＳ＿ＩＤをチェックし受信したＳ＿ＩＤがＬＵマッピングテーブル６５０（図６に示されている）にすでに登録されているかを判定する。受信したＳ＿ＩＤが登録されていたらプロセスはオペレーション１１０２へ進む。受信したＳ＿ＩＤが登録されていなければ、プロセスは異常終了、すなわち図８に示すようにエラーで終了する。
【００４７】
００６４    オペレーション１１０２でデバイスマッパ２３２はＶＭＩＤ情報をチェックする。具体的にはデバイスマッパ２３２は指定されたＶＭＩＤがＳ＿ＩＤに対してマッピングテーブル６５０内に存在するかをチェックする。すなわち、デバイスマッパ２３２は指定されたＶＭＩＤの仮想マシンが指定されたＳ＿ＩＤを有するホスト１に対して登録されているかをチェックする。指定されたＶＭＩＤの仮想マシンが指定されたＳ＿ＩＤを有するホスト１に対して存在するとデバイスマッパ２３２が判定した場合、プロセスはオペレーション１１０３へ進む。そうでなければ、プロセスは異常終了、すなわち図８に示すようにエラーで終了する。
【００４８】
００６５    オペレーション１１０３でデバイスマッパ２３２は現在ホスト１がアクセス可能な論理デバイスを“オフ”する。すなわちデバイスマッパ２３２は現在ホスト１により実行中の仮想マシンに対応する論理デバイスを開放する。従って、ホスト１は現在動作中の仮想マシンの論理デバイスにはもうアクセスできない。すなわち、現在動作中の仮想マシンの論理デバイスはホスト１にとって見えなくなる。デバイスマッパ２３２はまた、指定されたＶＭＩＤとＳ＿ＩＤ（ホスト１からの要求に含まれる）の組み合わせに関連付けられた論理デバイスを“オン”する。すなわち、デバイスマッパ２３２は要求で指定されたＶＭＩＤと関連付けられた論理ストレージデバイスを割り当てる、すなわち割り付けする。従って、ホスト１は今度は実行される仮想マシンの論理ストレージデバイスにアクセス可能となる。
【００４９】
００６６    論理ストレージデバイスは図６に示すマッピングテーブル６５０のアクティブ列６５４の値を操作することにより、“オン”、“オフ”される。例えば、図６において、Ｓ＿ＩＤが‘ｘｘｘｘｘｘ’のホストコンピュータは、ＶＭＩＤ値０（第一行６６０）であるアクティブの仮想マシン、すなわちＶＭＩＤ６５３が‘０’でそのアクティブ列６５４はアクティブ（‘１’）と表示されている仮想マシンと、ＶＭＩＤ６５３値１（第二行６６１）である非アクティブの仮想マシン、すなわちＶＭＩＤ６５３が‘１’でそのアクティブ列６５４は非アクティブ（‘０’）と表示されている仮想マシンを有している。ホスト１がＶＭＩＤ値が‘１’の仮想マシンをアクティブにするように要求を出す時、ホスト１からストレージシステム２への要求はＳ＿ＩＤ‘ｘｘｘｘｘｘ’とＶＭＩＤ‘１’を含んでいる。ストレージシステム２がこの要求を受信すると、デバイスマッパ２３２はアクティブ列６５４を操作する。具体的にはＳ＿ＩＤ６５２ｘｘｘｘｘｘでＶＭＩＤ‘０’の仮想マシンはアクティブ列６５４に‘０’と表示され、Ｓ＿ＩＤ６５２ｘｘｘｘｘｘでＶＭＩＤ‘１’の仮想マシンは‘１’と表示される。
【００５０】
００６７    その結果、図９を参照しながら説明したように、ホスト１は現在実行中の仮想マシンに割り当てられたストレージデバイスにアクセス可能となり、ホスト１は各時点で１つの仮想マシンの論理デバイスに接続していることを必要とするだけである。従って、極めて多数の仮想マシンを１つのホスト１によって実行することができる。
【００５１】
００６８    図９はＩ／Ｏ要求（ＲＥＡＤ、ＷＲＩＴＥコマンドなど）を受信したときのＩ／Ｏプロセス２３３のプロセスフローを示す。プロセスはストレージシステム２（図１に示すような）のＩ／Ｏプロセス２３３がＩ／Ｏ要求をホスト１から受信することで開始する。オペレーション１２０１でプロセス２３３はＩ／Ｏ要求に含まれるポートＩＤ（Ｓ＿ＩＤ）をチェックし、マッピングテーブル６５０から指定されたポートＩＤ（Ｓ＿ＩＤ）を検索する。ポートＩＤが見つからなければ、プロセスはエラーで終了する。次にポートＩＤ（Ｓ＿ＩＤ）がマッピングテーブル６５０にあった場合、プロセス２３３はアクティブの仮想マシンをチェックして見つける。具体的にはプロセス２３３は発見されたポートＩＤ（Ｓ＿ＩＤ）と関連付けられたアクティブ列６５４の中に‘１’を発見しようとする。アクティブ列６５４の中に‘１’が、すなわちＶＭＩＤ６５３の仮想マシンでアクティブステイタスが‘１’であるものが発見されたら、プロセスはオペレーション１２０２へ進む。そうでなければ、図９に示すようにプロセスはエラーで異常終了する。
【００５２】
００６９    オペレーション１２０２で、プロセスはＩ／Ｏ要求で指定された論理ユニット番号（ＬＵＮ）がアクティブの仮想マシンのデバイスの論理ユニットに存在するかを判定する。もしＬＵＮが存在したら、プロセスはオペレーション１２０３へ進む。そうでなければ、図９に示すようにプロセスはエラーで異常終了する。オペレーション１２０３でＬＵＮ情報は論理デバイスＬＤＥＶに変換される。一例として、もしＩ／Ｏ要求のＬＵＮが１であると、図６に示す例示的マッピングテーブル６５０に基づいて論理デバイス番号は２と決定される。図９のオペレーション１２０４でＩ／Ｏ要求が処理される、すなわち読み出し、書き込みまたは他のコマンドが処理される。
【００５３】
００７０    多くの変形が可能であり、上記の実施例は例として提供されたまでであり、限定するためではない。例えば、各仮想マシンは論理的に個別のマシンであるので、特定の仮想マシンに割り当てられた全ての論理デバイス（ＬＤＥＶ）は他の仮想マシンが使用することはできない。しかしながら、変形として、ユーザが論理デバイスのあるものを仮想マシンで共有することを望む場合がある。従って、一例として多数の論理ユニット番号（ＬＵＮ）を同じ論理デバイスに割り当てることが可能である。例えば、図６に示すマッピングテーブル６５０でＬＤＥＶ６５７が‘１’の論理デバイスが論理ユニット番号０（ＬＵＮ６５６が‘０’）としてホスト１（Ｓ＿ＩＤがｘｘｘｘｘｘ）の両方の仮想マシンからアクセス可能である、すなわちＶＭＩＤ６５３が‘０’の仮想マシンとＶＭＩＤ６５３が‘１’の仮想マシンがともにＬＵＮ６５６‘０’を有するとしてＬＤＥＶ６５７‘１’にアクセス可能である。
【００５４】
００７１    他の例示的な変形として、２つ以上のストレージシステムと複数のコントローラを備えることができる。複数のコントローラとストレージシステムを有する例示的な情報システムを本発明の概念の他の例示的実施例を参照して以下に説明する。
【００５５】
００７２    図１０は本発明の概念の他の例示的実施例による情報システムの例示的構造を示すブロック図である。図１０には複数のホストコンピュータ１が示されている。これらのホスト１は図１を参照して上記で説明したホストと類似している。本例示的情報システムでは、ホスト１は例えばＬＡＮ（イーサネット６）を用いて相互接続している。さらにこれらのホスト１は１つ以上のストレージシステム３（図１０に単に説明を簡単にするためにストレージシステム３として示されている）と相互接続している。一例としてこれらのストレージシステム３はＪＢＯＤ（Ｊｕｓｔ  ａ  Ｂｕｎｃｈ  of  Ｄｉｓｋ、単なるディスクの束）及び／またはＲＡＩＤ機能を有するディスクアレイとすることができる。ストレージシステム３の各々はそれぞれのストレージシステムをそれぞれのコントローラ２’に接続するファイバチャネルインタフェース（ＦＣ  Ｉ／Ｆ）３５’を含む。図１０に示すように多くのＳＡＮコントローラ２’Ａ、 ２’Ｂ・・・ ２’Ｎ（単に言葉を簡単にするため全体としてコントローラ２’と呼ぶ）が備えられている。コントローラ２’はホスト１とストレージシステム３を相互接続する。各コントローラ２’はコントローラをそれぞれのストレージシステム３に接続するバックエンドインタフェース２２’を有している。ホスト１、コントローラ２’およびストレージシステム３はファイバチャネルケーブル及び／またはイーサネット（登録商標）を用いて相互接続される。
【００５６】
００７３    図１１は本発明の概念の例示的実施例によるＳＡＮコントローラ２’の例示的構造を示す。ＳＡＮコントローラ２’は図１に示すディスクコントローラ２０と類似の機能モジュールを含む。図１１に示すように、ＳＡＮコントローラ２’はＣＰＵ２１、少なくとも１つのバックエンドインタフェース２２、メモリ２３、キャッシュメモリ２５、ＮＶＲＡＭ２６、少なくとも１つのファイバチャネルインタフェース（ＦＣ  Ｉ／Ｆ）２４、および少なくとも１つの相互接続インタフェース２７を含む。相互接続インタフェース２７は他のＳＡＮコントローラ２’と通信するために使用することができる。一例として、相互接続インタフェース２７はイーサネット（登録商標）ネットワークインタフェースカード（ＮＩＣ）とすることができる。代わりとして、あるいは追加としてＳＡＮコントローラ２’のあるものあるいは全部がＦＣ  Ｉ／Ｆ２４またはバックエンドインタフェース２２を用いて互いに接続することができる。
【００５７】
００７４    図１１に示すように、例示的ＳＡＮコントローラ２’のメモリ２３は論理デバイスマネジャ２３１’、相互接続モジュール２３４’（極めて詳細に以下に説明する）、Ｉ／Ｏプロセス２３３’、およびデバイスマッパ２３２’を有する。しかしながら、本例示的実施例では論理デバイスマネジャ２３１’はＲＡＩＤディスクグループを生成しない。かわりに、各ストレージシステム３がそれぞれのストレージシステム３の中にＲＡＩＤグループ生成することができる。各ストレージシステム３は図６に示すマッピングテーブル６５０のようなマッピングテーブルを保持する。
【００５８】
００７５    ＳＡＮコントローラの論理デバイスマネジャ２３１’は、各ストレージシステム３が論理デバイスとして示すデバイスのみを管理する。具体的には、各ＳＡＮコントローラ２’の論理デバイスマネジャ２３１’は図１２に示す論理デバイス（ＬＤＥＶ）構成テーブル４００’を保持する。
【００５９】
００７６    図１２に示すように、ＬＤＥＶ構成テーブル４００’はストレージシステム３のデバイスの割り当てられたＬＤＥＶ番号を示すＬＤＥＶ列４０１’を含む。具体的には、ＳＡＮコントローラ２’はストレージシステム３の中のデバイスを発見し、各発見されたデバイスにＬＤＥＶ番号を割り当てる。ＬＤＥＶ構成テーブル４００’はさらにストレージシステム３のＦＣ  Ｉ／Ｆ３５’を特定するワールドワイドネーム（ＷＷＮ）列４０２’とＬＤＥＶ４０１’内で定義されたデバイスのＬＵＮを特定する論理ユニット番号（ＬＵＮ）列４０３’を含む。すなわち、各デバイスはＬＤＥＶ列ならびにＷＷＮとＬＵＮの列にエントリを割り当てられ、これらを合わせてストレージシステム３内の対応するデバイスを特定する。従って、図１２に示す例示的ＬＤＥＶ構成テーブル４００’において、ＬＤＥＶ（１）のストレージデバイスはＷＷＮ４０２’（１０：０４：ｅ２：０４：４８：３９）およびＬＵＮ４０３’（０）の割り当て情報に対応する。ＬＤＥＶ構成テーブル４００’を使用してＳＡＮコントローラ２’はストレージシステム３の論理デバイスを管理する。変形として、ストレージシステム３のある構成ではデバイスは多くのアクセスパスからアクセスすることができ、従ってＳＡＮコントローラはＷＷＮ４０２’とＬＵＮ４０３’の複数の組み合わせを記録している。
【００６０】
００７７    ＳＡＮコントローラ２’はストレージシステム３に対してはホストコンピュータとして働く。ＳＡＮコントローラ２’はストレージシステム３のポートＩＤ（ＷＷＮの代替え）とＬＵＮを指定して、ストレージシステム３のデバイスの各々にＩ／Ｏ要求を発行する。
【００６１】
００７８    ＳＡＮコントローラ２’がストレージシステム３にＩ／Ｏ要求を発行するとき、例えば図９に示すオペレーションを実行するとき図１２に示すＬＤＥＶ構成テーブル４００’が使用される。ＬＤＥＶ構成テーブル４００’のＷＷＮ列４０２’とＬＵＮ列４０３’は、ストレージシステム３の論理デバイスの識別情報を含み、ストレージシステム３内の論理デバイスの各々はこれらの識別情報により固有に識別される。図９に示すオペレーション１２０３において、ＬＵＮはテーブル４００’に基づいてＬＤＥＶ番号に変換される。オペレーション１２０４にてプロセスはＬＤＥＶ番号を列４０２’のＷＷＮ番号と列４０３’のＬＵＮ番号の組み合わせに変換して、この情報を用いてストレージシステム３にＩ／Ｏ要求を発行する。
【００６２】
００７９    ＳＡＮコントローラ２’の相互接続モジュール２３４’同士で互いに通信を行う。具体的には相互接続モジュール２３４’の１つがマスター相互接続モジュールとされる。マスター相互接続モジュールはまたＬＤＥＶ構成テーブル４００’とグローバルＬＵマッピングテーブル６００’を保持する。図１３に例示的グローバルマッピングテーブル６００’を示す。図１３で、各仮想マシンはＶＭＩＤ０、１、あるいは２などのグローバルＶＭＩＤ６０１’を有する。すなわち、本発明の概念の例示的実施例による情報システムではいかに多数のホスト１が存在したとしても、各仮想マシンはただ１つの固有ＶＭＩＤを有することになる。図１３に示すように各仮想マシンは固有のＶＭＩＤ６０１’と対応するＬＵＮ６０２’とＬＤＥＶ６０３’を有する。例えば、ＶＭＩＤ６０１’が０の仮想マシンはＬＵＮ６０２’に０、１・・・ｋ−１を、ＬＤＥＶ６０３’に１、２・・・ｍを有する。マスター相互接続モジュールは他の相互接続モジュール２３４’からの要求に従ってこれらのテーブルを使用して情報の一部を他の相互接続モジュール２３４’へ送る。他の相互接続モジュールは必要に応じてこの情報をキャッシングして使用することができる。例示的システムのユーザまたはホスト１はマスターＳＡＮコントローラ２’に、仮想マシンが使用しなければならないＶＭＩＤ、ＬＵＮおよびＬＤＥＶのセットを登録するように指示する。
【００６３】
００８０    図１４に本発明の概念の例示的実施例の例示的ホスト１を示す。例示的ホスト１はＣＰＵ１１、ＦＣ  Ｉ／Ｆ１２、メモリ１３、およびインタフェース１４を有する。メモリ１３はオペレーティングシステム１３１’、仮想マシン１  １３２−１’、仮想マシン２  １３２−２’、およびデバイスドライバ１３３’を含む。メモリ１３のこれらの例示的特徴は、図４を参照して説明したホスト１の例示的特徴と多少類似している。しかしながら、メモリ１３はまた負荷モニタ１３４’とグローバル仮想マシンマネジャ１３５’を含んでいる。
【００６４】
００８１    上記で説明したように、この例示的実施例では、各仮想マシンが固有の識別番号（ＶＭＩＤ）をホスト１内ではなく、システム内に有している。従って、各仮想マシンは任意のホスト１上で動作可能である。したがって、ホスト１はそのホストの負荷をモニタする負荷モニタ１３４’と、他のホスト１の他のグローバルＶＭマネジャ１３５’と通信を行うグローバルＶＭマネジャ１３５’を有し、要求された仮想マシン１３２をどのホスト１で実行するべきかを決定する。グローバルＶＭマネジャ１３５’は、もっとも低い負荷を有しているホスト１上で仮想マシンを実行すべきと決定する。グローバルＶＭマネジャ１３５’はまたグローバルＬＵマッピングテーブル６００を保持し、これはＳＡＮコントローラ２’に論理デバイスを切り替えるよう指示するときに使用される。
【００６５】
００８２    ＰＬＯＧＩ登録プロセスならびにホスト１からの要求を取り扱うプロセスの例示的オペレーションシーケンスを以下に図１６を参照して説明する。最初に各ＳＡＮコントローラ２’は、図１５に示すテーブル６５０’のようなＬＵマッピングテーブルを保持している。図１５に示すテーブル６５０’はホストＷＷＮ列６５１’、Ｓ＿ＩＤ列６５２’、ＶＭＩＤ列６５３’、仮想マシンのステータス（アクティブ／非アクティブ）列６５４’、ＬＵＮ列６５６’およびＬＤＥＶ列６５７’を含む。図６に関してこれらのデータ欄が詳細に説明されている。したがって、ここではこの記述は省略する。
【００６６】
００８３    本発明の概念の例示的実施例では、各ＳＡＮコントローラは自身のＬＵマッピングテーブル６５０’を保持している。マスターＳＡＮコントローラは全てのＬＵマッピングテーブル６５０’を全てのＳＡＮコントローラから集める。
【００６７】
００８４    最初はＬＵマッピングテーブル６５０’には情報は保存されていない。オペレーション１００１’でＰＬＯＧＩプロセスが開始すると、直ちにＳＡＮコントローラのＬＵマッピングテーブル６５０’からＷＷＮとＳ＿ＩＤの必要な値の記録内容が検索される。オペレーション１００２でＬＵマッピングテーブル６５０’に必要なＷＷＮとＳ＿ＩＤが存在すれば、プロセスは終了する。必要な記録内容が存在しなければ、プロセスはオペレーション１００３’に進み、直ちにデバイスマッパ２３２’（図１１に示されている）が、ＰＬＯＧＩ要求とともに来るＷＷＮとポートＩＤ情報の組み合わせを、ＬＵマッピングテーブル６５０’のホストＷＷＮ６５１’とＳ＿ＩＤ６５２’に登録する。しかしながら、ＶＭＩＤ、ＬＵＮおよびＬＤＥＶの関係はこのオペレーションでは登録されない。オペレーション１００４’ではＷＷＮとＳ＿ＩＤ情報がマスターＳＡＮコントローラ２’へ送られる。
【００６８】
００８５    別の仮想マシンを実行するために論理デバイスを切り替えるプロセスフローを図１７を参照して以下に説明する。ホストコンピュータ１が仮想マシンを実行する前に、ホストは実行する仮想マシンの論理デバイスをアクティブにするかまたは切り替える要求を発行する。要求はポートＩＤ（Ｓ＿ＩＤ）とＶＭＩＤ情報を含んで良い。オペレーション３１０１でＳＡＮコントローラ２’のデバイスマッパ２３２’がホスト１から要求を受信する。デバイスマッパ２３２’はＳ＿ＩＤをチェックして受信したＳ＿ＩＤがマッピングテーブルに登録されているかを判定する。登録されていたらプロセスはオペレーション３１０２へ進む。そうでなければ、図１７に示すようにプロセスはエラーで異常終了する。
【００６９】
００８６    オペレーション３１０２で、デバイスマッパ２３２’はＶＭＩＤ情報をチェックして、指定されたＶＭＩＤとＳ＿ＩＤ（ステップ３１０１でチェックされている）の組み合わせがマッピングテーブルに存在するかを判断する。存在したら、プロセスはオペレーション３１０３へ進む。そうでなければプロセスはオペレーション３１０５へ進む。
【００７０】
００８７    すなわち、オペレーション３１０２で、指定されたＶＭＩＤとＳ＿ＩＤの組み合わせが見つからなければ（指定されたＶＭＩＤがマッピングテーブルに存在しない）、デバイスマッパ２３２’はオペレーション３１０５で、仮想マシン（ＶＭＩＤで指定される）が使用する論理デバイスの情報取得の要求をマスターＳＡＮコントローラ２’に送る。論理デバイスの情報を受信した後、プロセスはオペレーション３１０６へ進む。オペレーション３１０６でデバイスマッパ２３２’は取得した情報をマッピングテーブルの対応する行に登録し、オペレーション３１０３へ進んで切り替えを実行する。
【００７１】
００８８    オペレーション３１０３で、デバイスマッパ２３２’は現在ホスト１がアクセスしている論理デバイスを非マッピング状態に変えて（これらの論理デバイスを開放する）、指定されたＶＭＩＤとＳ＿ＩＤ（ホスト１からの要求に含まれている）の組み合わせと関連付けられた論理デバイスを、これらの論理デバイスにホストがアクセスできるように、マッピング状態に割り当てる（これらの論理デバイスをホスト１に割り当てる）。次いで、デバイスマッパ２３２’が現在のＬＵマッピングテーブル５５０’をマスターＳＡＮコントローラ２’に送付する。
【００７２】
００８９    図１６に示すＰＬＯＧＩプロセスが完了すると、本発明のシステムは図１７のプロセスを適切なＳＡＮコントローラで実行する。本プロセスのオペレーション３１０５と３１０６で、マスターＳＡＮコントローラはグローバルＬＵマッピングテーブル６５０’に登録されているＶＭＩＤ、ＬＵＮおよびＬＤＥＶ間の関係を示す情報を、図１７のプロセスが実行されるＳＡＮコントローラに送付する。
【００７３】
００９０    様々な新しいオペレーションと様々な構成部分、要素を含む本発明の概念の上記のおよび他の特徴が、付帯する図面を参照して具体的に記述され、請求項で指し示されている。本発明の概念を具現化した具体的なプロセスと構成部分の構造は単に説明のために示されたもので、本発明の概念を限定するためのものではないことは理解されるところである。本発明概念の原理と特徴は単独で使用することもできるし、付随する請求項で定義される本発明概念の精神と範囲から外れることなくいかなる組み合わせ、変形された数多くの実施例で使用することもできる。
【図面の簡単な説明】
【００７４】
００１６    付随している図面は、ここに組み込まれ明細書の一部を構成し、本発明の実施例を例示し、記述とともに発明の技術の原理を説明し図示するために役立つ。詳細には、
【図１】００１７    図１は本発明の例示的な実施例による情報システムの構造を示すブロック図である。
【図２】００１８    図２は本発明の例示的な実施例による論理デバイスを示すブロック図である。
【図３】００１９    図３は本発明の例示的な実施例によるＲＡＩＤ構成レベルテーブルの構造を示す。
【図４】００２０    図４は本発明の例示的な実施例によるホストコンピュータのブロック図である。
【図５】００２１    図５は本発明の例示的な実施例によるポートログインプロセスの動作を示すフローチャートである。
【図６】００２２    図６は本発明の例示的な実施例による様々なコンピュータホストの仮想マシンにストレージデバイスをマッピングするマッピングテーブルの構造を示す。
【図７】００２３    図７は本発明の例示的な実施例によるホストコンピュータが１つの仮想マシンの実行から他の仮想マシンの実行へ切り替えるプロセスのフローを示すフローチャートである。
【図８】００２４    図８は本発明の例示的な実施例によるホストコンピュータから指示を受けたときに仮想マシンを切り替えるストレージシステムのプロセスフローを示すフローチャートである。
【図９】００２５    図９は本発明の例示的な実施例による入／出力プロセスのプロセスフローを示すフローチャートである。
【図１０】００２６    図１０は本発明のもう１つの例示的な実施例による情報システムの例示的な構造を示すブロック図である。
【図１１】００２７    図１１は本発明のもう１つの例示的な実施例によるＳＡＮコントローラの例示的な構造を示すブロック図である。
【図１２】００２８    図１２は本発明のもう１つの例示的な実施例による論理デバイス（ＬＤＥＶ）構成テーブルの構造を示す。
【図１３】００２９    図１３は本発明のもう１つの例示的な実施例による論理ユニット（ＬＵ）マッピングテーブルの構造を示す。
【図１４】００３０    図１４は本発明のもう１つの例示的な実施例によるホストコンピュータのブロック図である。
【図１５】００３１    図１５は本発明の例示的な実施例による初期ＰＬＯＧＩプロセス実行後の論理ユニット（ＬＵ）マッピングテーブルの構造を示す。
【図１６】００３２    図１６は本発明の例示的な実施例によるＰＬＯＧＩプロセスのオペレーションシーケンスを示すフローチャートを示す。
【図１７】００３３    図１７は本発明のもう１つの例示的な実施例による１つの仮想マシンから他の仮想マシンへ切り替えるプロセスフローを示すフローチャートである。
【図１】
2007133854.tif 000003
【図２】
2007133854.tif 000004
【図３】
2007133854.tif 000005
【図４】
2007133854.tif 000006
【図５】
2007133854.tif 000007
【図６】
2007133854.tif 000008
【図７】
2007133854.tif 000009
【図８】
2007133854.tif 000010
【図９】
2007133854.tif 000011
【図１０】
2007133854.tif 000012
【図１１】
2007133854.tif 000013
【図１２】
2007133854.tif 000014
【図１３】
2007133854.tif 000015
【図１４】
2007133854.tif 000016
【図１５】
2007133854.tif 000017
【図１６】
2007133854.tif 000018
【図１７】
2007133854.tif 000019
【外国語明細書】
2007133854000001.pdf