(57)【特許請求の範囲】
【請求項１】
コンピュータシステムの複数の仮想Ｉ／Ｏデバイスを制御するためのＩ／Ｏ制御システムであって、
制御プログラムを実行する少なくとも１つのＣＰＵ（１０４（＊））を含むＩＯＰセル（２０２（＊））を備えるＩＯＰパーティション（２０１（＊））と、
複数のエンロールされたパーティション（２０３（＊））であって、各エンロールされたパーティションは、制御プログラムを実行する少なくとも１つのＣＰＵ（１０４（＊））を含むセル（１０２（＊））を含み、前記エンロールされたパーティション（２０３（＊））のそれぞれは、前記ＩＯＰセル（２０２（＊））に通信結合されている、複数のエンロールされたパーティション（２０３（＊））と
を備え、
前記エンロールされたパーティション（２０３（＊））のそれぞれは、前記ＩＯＰセル（２０２（＊））へのエンロールを要求する前は、初期的に、対応する標準パーティション（２０１（＊））であり、
Ｉ／Ｏ要求が非仮想デバイスのためのものである場合、Ｉ／Ｏ要求は前記エンロールされたパーティション（２０３（＊））において上位ドライバ（２１０）から下位ドライバ（２１１）へ行われ、
Ｉ／Ｏ要求が仮想デバイスのためのものである場合、前記エンロールされたパーティション（２０３（＊））からのＩ／Ｏ要求に応答して、前記ＩＯＰセル（２０２（＊））は、前記Ｉ／Ｏ要求を前記コンピュータシステムの前記複数の仮想Ｉ／Ｏデバイスに分配する
Ｉ／Ｏ制御システム。
【請求項２】
前記Ｉ／Ｏ要求は、前記エンロールされたパーティション（２０３（＊））から前記ＩＯＰセル（２０２（＊））へ共有メモリ（３０１）を介して通信される
請求項１に記載のＩ／Ｏ制御システム。
【請求項３】
前記エンロールされたパーティション（２０３（＊））及び前記ＩＯＰパーティション（２０１（＊））にアクセス可能なメールボックス（４０２（＊））であって、前記エンロールされたパーティションから前記ＩＯＰセル（２０２（＊））へ前記仮想Ｉ／Ｏデバイスの要求を通信するための、メールボックス（４０２（＊））を
共有メモリ（３０１）に含む
請求項１に記載のＩ／Ｏ制御システム。
【請求項４】
前記仮想Ｉ／Ｏデバイスのそれぞれは、
Ｉ／Ｏオペレーションに関するエンティティ
を備える
請求項１に記載のＩ／Ｏ制御システム。
【請求項５】
前記ＩＯＰセル（２０２（＊））によって提供されるＩ／Ｏドライバサブシステム（２１０／２１２）であって、前記仮想Ｉ／Ｏデバイスのオペレーションを制御し、前記エンロールされたパーティション（２０３（＊））間で共有される前記コンピュータシステムの複数のＩ／Ｏデバイスに前記Ｉ／Ｏ要求を分配するＩ／Ｏドライバサブシステム（２１０／２１２）
を含む請求項１に記載のＩ／Ｏ制御システム。
【請求項６】
前記ＩＯＰセル（２０２（＊））に結合される自律管理プロセス（９０１）であって、前記仮想Ｉ／Ｏデバイスを作成して管理するための前記自律管理プロセス（９０１）
を含む請求項１に記載のＩ／Ｏ制御システム。
【請求項７】
複数のＩＯＰパーティション（２０１（＊））
を含み、
前記自律管理プロセス（９０１）は、前記複数のＩＯＰパーティションのオペレーションを調整する
請求項６に記載のＩ／Ｏ制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチパーティションコンピュータシステムのＩ／Ｏデバイスを制御するためのシステムに関する。
【背景技術】
【０００２】
大きな対称型マルチプロセッサ（ＳＭＰ）システムは、多くのパーティションを有することができる。
各パーティションは、オペレーティングシステム（Ｏ／Ｓ）イメージ又はハイパーバイザイメージのいずれかを実行する。
これらのパーティションのそれぞれは、Ｉ／Ｏ（入力／出力）サービスを必要とする。
パーティションのサイズに応じて、ストレージ資源、ネットワーキング資源、又は他のＩ／Ｏ資源にアクセスするための関連するＩ／Ｏデバイスインターフェースは、効率的に利用されない場合がある。
さらに、これらのシステムをパーティショニングする際の柔軟性は、必要とされるＩ／Ｏ接続性を新しく作成されたパーティションに提供する追加制約条件によって低減される。
いくつかのオペレーティングシステムの場合、各パーティションは、いくつかの異なるタイプのＩ／Ｏデバイスインターフェースを必要とする場合がある。
これらのＩ／Ｏデバイスインターフェースのいくつかは、使用されるとしても、わずかにしか使用されない場合がある。
【０００３】
ハイパーバイザ技術は、上記事項に或る程度対処するが、大きなユーティリティサーバでは、同じハイパーバイザにおいて異なるワークロードを実行するシステムの有効性は、大幅に減少するおそれがある。
各ハイパーバイザイメージは、大きな潜在的単一障害点となる。
この大きな潜在的単一障害点は、特定のハイパーバイザが故障するか、又は正しく機能しない時に、一時に複数のサーバを停止させる可能性がある。
最後に、ＣＰＵ密度の増加によって、ますます多くのスレッド及びコアをシングルチップ内に詰め込むことが可能になるにつれて、多数のゲストイメージを単一のハイパーバイザで実行することは、信頼性の観点から実行可能でない場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、マルチパーティションコンピュータシステムのＩ／Ｏデバイスを制御するための改良されたシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
マルチパーティションコンピュータシステムのＩ／Ｏ資源をハンドリングするためのシステム及び方法が提供される。
本明細書では、マルチパーティションコンピュータシステムの仮想化されたＩ／Ｏデバイスを制御するＩ／Ｏ制御システムが開示される。
このＩ／Ｏ制御システムは、制御プログラムを実行する少なくとも１つのＣＰＵを有するＩ／Ｏプロセッサセルを含むＩＯＰパーティションと、複数の標準パーティションとを備える。
各標準パーティションは、制御プログラムを実行する少なくとも１つのＣＰＵを備えるセルを含み、共有メモリを介して、Ｉ／Ｏプロセッサセルに結合されている。
標準パーティションの１つ又は複数は、ＩＯＰセルへの接続の要求に応答して、Ｉ／Ｏプロセッサセルと通信する、エンロールされたパーティションになる。
パーティションがＩ／Ｏプロセッサセルにエンロールされた後、エンロールされたパーティションからＩ／Ｏデバイスに向けられたＩ／Ｏ要求は、Ｉ／Ｏプロセッサセルによって制御される共有Ｉ／Ｏ資源にわたって分配される。
【発明を実施するための最良の形態】
【０００６】
本システムは、それぞれが１つのＯＳインスタンスをホスティングする多数のパーティション、又は、複数のハイパーバイザパーティション（場合によってはそれぞれが対称型マルチプロセッサ（ＳＭＰ）システムにおいて数個までのＯＳインスタンスをホスティングする）が、フォールトトレランスを維持しつつデバイスのプールを共有することを可能にする。
本システムのパーティションのそれぞれは、他のパーティションからの或る形態の分離がハードウェアによって課せられており、その結果、或るパーティションの故障は、別のパーティションに直接影響を与えることはできないものと仮定される。
パーティションのそれぞれのＩ／Ｏデマンドは、比較的少数の共有Ｉ／Ｏデバイスにわたって分配される。
各共有Ｉ／Ｏデバイスは、Ｉ／Ｏファブリックリンクに接続している。
これらのＩ／Ｏファブリックリンクは、ファイバチャネル等のＳＡＮ（ストレージエリアネットワーク）リンク、又は、イーサネット（登録商標）等のＬＡＮ（ローカルエリアネットワーク）リンクとすることができる。
本システムは、このように、比較的少数のＩ／Ｏデバイスを必要するが、比較的多数の個々のＩ／Ｏサブシステムを非効率的に使用するシステムと比較して、大きなピーク負荷をハンドリングすることができる。
【０００７】
図１は、ハードパーティション１０１（１）、１０１（２）、及び１０１（３）を有するシステム１１０と、ハイパーバイザを使用して、対応するハイパーバイザ又はオペレーティングシステム（Ｏ／Ｓ）により認識されるパーティション１０１（＊）のＩ／Ｏ要求（等）を管理するシングルイメージＳＭＰシステム１２０との２つの従来技術のシステムを示している。
本明細書では、参照符号に続く括弧内のアスタリスク「（＊）」は、その参照符号によって表されるエンティティが１つ又は複数存在することを表している。
ここで、このように指定されるタイプの複数のエンティティは、少なくとも１つの実施の形態に存在し得る。
システム１１０等のハードパーティショニングされたシステムでは、パーティションからのＩ／Ｏ要求は、Ｉ／Ｏボックス１０７（＊）のＩ／Ｏカード１０８（＊）を介してターゲットＩ／Ｏデバイス１１１に向けられる。
これらのＩ／Ｏカード１０８（＊）のそれぞれは、特定のパーティション１０１（＊）のＩ／Ｏオペレーションに関する専用デバイスである。
したがって、Ｉ／Ｏボックス１０７（１）、１０７（２）、及び１０７（３）のＩ／Ｏカード１０８（＊）は、パーティション１０１（１）、１０１（２）、及び１０１（３）の間で共有されないことが分かる。
【０００８】
システム１２０等のハイパーバイザを使用するシステムでは、ハイパーバイザは、仮想パーティション内で仮想コンピュータ（「ゲスト」と呼ばれる）を実行する。
仮想パーティションのそれぞれは、対応するハイパーバイザ又はＯ／Ｓにはスタンドアロンパーティションとして見える。
たとえば、図１に示すシステムでは、或るハイパーバイザをパーティション１０１（１）で実行することができ、追加のハイパーバイザを、パーティション１０１（２）等の追加のパーティションで実行することができる。
システム１２０では、これらのパーティションの双方は、ハードパーティションではなく仮想パーティションである。
システム１１０／１２０のいずれのタイプでも、各パーティション１０１（＊）は、１つ又は複数のセル１０２（＊）を備える。
これらのセルのそれぞれは、通常はシングルカード上に、１つ又は複数のＣＰＵ１０４（＊）、セルメモリ１０５、及びメモリコントローラを備える。
パーティション１０１（＊）の各セル１０２（＊）は、通常はシステムバックプレーンを通じて、又は、バス若しくはクロスバー等の他の相互接続手段を通じて、相互接続１０６を介しシステムＩ／Ｏデバイス１１１とインターフェースされる。
【０００９】
ハイパーバイザイメージ又はＯ／Ｓイメージをホスティングする１つ又は複数のパーティションを使用するシステムでは、一定数のＩ／Ｏデバイス１１１が、特定のハイパーバイザイメージ又はＯ／Ｓイメージが実行されている各パーティション１０１（＊）に専用とされる。
特定のシステム内に２つ以上のパーティションが存在する場合、各パーティションは、１つのハイパーバイザを使用することができるが、それらのハイパーバイザは、パーティション間でシステムＩ／Ｏ資源の共有を調整しない。
ハイパーバイザのそれぞれは、自身のゲストＯ／ＳイメージのＩ／Ｏオペレーションを仮想化することができるが、それらのハイパーバイザは、別個のハイパーバイザインスタンス間でＩ／Ｏを共有するような調整を行わない。
現在、いくつかの異なるハイパーバイザが存在し得る。
各ハイパーバイザは、異なるベンダが提供しており、同じシステムで同時に実行される。
たとえば、Ｍｉｃｒｏｓｏｆｔアプリケーションは、Ｍｉｃｒｏｓｏｆｔが供給したハイパーバイザの下で実行することができ、ＬｉｎｕｘイメージはＺｅｎ  Ｏ／Ｓの下で実行することができ、ＨＰ−ＵＸイメージは、ＨＰ−ＶＭの下で実行することができる。
加えて、ライセンスコスト等の産業界の経済力によって、ライセンスを購入しなければならないＣＰＵの個数を最小するために、システム上に数個のハイパーバイザイメージが存在することが必要とされる場合がある。
【００１０】
図２は、２つのＩ／Ｏプロセッサ（ＩＯＰ）セル２０２（１）及び２０２（２）を示す、本システムの例示的な一実施の形態２００のブロック図である。
ＩＯＰセルは、以下では、単に「ＩＯＰ」と呼ばれる。
ＩＯＰ２０２（＊）は、仮想Ｉ／Ｏデバイスを備えるシステム共有Ｉ／Ｏ資源のオペレーションを管理するために設けられている。
仮想Ｉ／Ｏデバイス（又は、単に「仮想デバイス」）は、Ｉ／Ｏオペレーションが向けられるか又はチャネルで運ばれる論理エンティティであり、任意の物理デバイス１１１に対応するＩ／Ｏデバイスの論理表現を含む。
このように、仮想デバイスは、ファイル若しくは通信チャネル等の擬似論理エンティティ、一群の類似の物理デバイスの任意の１つ、又は、ディスクドライブ上のパーティション等の物理デバイスのサブセットとすることができる。
【００１１】
ＩＯＰ２０２（＊）は、Ｉ／Ｏ帯域幅の使用量を考慮して、エンドユーザのサービスレベルを管理し、したがって、Ｉ／Ｏスロット及びバス可用性とは独立に新たなパーティションの割り当てが可能になる。
ストレージ及びネットワークの管理に加えて、ＩＯＰ２０２（＊）は、ディスクキャッシュ及びセキュリティサービスも提供することができる。
図２に示すように、ＩＯＰ２０２（１）は、ＩＯＰパーティション２０１（１）で実行されており、「標準パーティション」２０１（Ａ）及び２０１（Ｂ）では、別個のＯ／Ｓイメージ及び／又はハイパーバイザが実行されている。
「標準パーティション」という用語は、以下では、ハイパーバイザを実行しているパーティション又はＯ／Ｓのスタンドアロンコピーを実行しているパーティションのいずれかを指すのに使用される。
これらのハイパーバイザ及びＯ／Ｓのスタンドアロンコピーのいずれも、本明細書では、制御プログラムと呼ばれる。
制御プログラムは、仮想マシンゲストとして実行されるイメージもハイパーバイザの制御下で実行されるイメージのいずれも含まない。
パーティション２０１（Ａ）は、単一のセル１０２（Ｘ）を含み、パーティション２０１（Ｂ）は、２つのセル１０２（Ｙ）及び１０２（Ｚ）を含む。
ただし、どの所与のパーティションにおけるセルの個数も、これらの特定の値に限定されるものではない。
【００１２】
本システムは、１つ又は複数の「エンロールされた」標準パーティションに共有仮想Ｉ／Ｏデバイスを提供する。
これらの共有仮想デバイスを使用することによって、ユーティリティサーバ又は他のタイプのシステムにおける資源の割り当ての制約をより少なくすることが可能になり、したがって、システムＩ／Ｏオペレーションの効率性を増大させることが可能になる。
標準パーティション２０１（＊）は、ＩＯＰによって提供される仮想デバイスを使用するために、最初に、ＩＯＰ２０２（＊）にエンロールされなければならない。
このエンロールプロセスは、標準パーティション２０１（＊）とＩＯＰセル２０２（＊）との間の接続を確立するプロセスを含み、図７に関して後述する。
【００１３】
本システムでは、各ＩＯＰ２０２（＊）は、Ｉ／Ｏドライバサブシステムを含み、パーティション２０１（＊）の各セル１０２（＊）も、Ｉ／Ｏドライバサブシステムを含むことができる。
双方の場合において、Ｉ／Ｏドライバサブシステムは、「上位ドライバ」２１０（標準パーティションのセル用）又は２１２（ＩＯＰセル用）と、「下位ドライバ」２１１（標準パーティションのセル用）又は２１３（ＩＯＰセル用）との２つの部分を備える。
上位ドライバ２１０／２１２は、アプリケーションによって見えるような、デバイスの抽象ビューを扱い、たとえば、そのタイプのすべてのデバイスに共通の特徴（たとえば、読み出し、書き込み、位置、同期等）を扱う。
下位ドライバ２１１／２１３は、基本的に、「物理デバイスドライバ」であり、特定のデバイスにインターフェースするためのデバイス及びチャネルに特有のインターフェース（たとえば、ＳＡＴＡ、ＳＣＳＩ、ｉＳＣＳＩ等）並びに特定のタイプのドライブのドライブ仕様を提供する。
エンロールされたパーティション２０３からＩ／ＯドライバへのＩ／Ｏ要求は、後述する共有メモリを介してＩＯＰ２０２（＊）に向けられる。
【００１４】
例示的な一実施の形態では、各ＩＯＰセル２０２（＊）は、１つ又は複数のＣＰＵ１０４及びメモリ１０５（＊）を含む。
下位ドライバ２１３及び上位ドライバ２１２は、各ＩＯＰセル２０２（＊）のメモリ１０５（＊）に存在する。
各パーティション２０１（＊）は、１つ又は複数のセル１０２（＊）を含み、それらのセル１０２（＊）のそれぞれは、１つ又は複数のＣＰＵ１０４及びメモリ１０５（＊）を含む。
下位ドライバ２１１及び上位ドライバ２１０も、各パーティション２０１（＊）のセル１０２（＊）の少なくとも１つにおけるメモリ１０５（＊）に存在する。
【００１５】
ＩＯＰパーティション２０１（１）は、Ｉ／Ｏボックス１０７（１）〜１０７（３）及びそれらに関連するＩ／Ｏカード１０８を含む。
図２に示す実施の形態では、ＩＯＰ２０２（１）は、（任意の個数の）追加のパーティション、たとえばパーティション２０１（Ａ）及び２０１（Ｂ）、のＩ／Ｏプロセッサとして機能することができ、したがって、Ｉ／Ｏボックス１０７（１）〜１０７（３）を介して接続されたＩ／Ｏサブシステム２０９の共有Ｉ／Ｏデバイス１１１のそれぞれについてＩ／Ｏを効率的に制御することができる。
【００１６】
特定のパーティション２０１（＊）が（図７に関して後述するように）ＩＯＰセル２０２（＊）に「エンロール」されると、そのパーティション２０１（＊）は、「エンロールされた」パーティション２０３（＊）になる。
したがって、標準パーティション２０１（Ａ）及び２０１（Ｂ）は、ＩＯＰパーティション２０１（１）のＩＯＰ２０２（１）等のＩＯＰ２０２（＊）にエンロールされた後、「エンロールされたパーティション」２０３（Ａ）及び２０３（Ｂ）になる。
本システムは、パーティション２０３（＊）で実行されている個々のハイパーバイザ及び／又はＯ／Ｓイメージの汎用のストレージドライバ及び通信ドライバを提供する。
パーティション２０３（＊）には、ハイパーバイザ／イメージが常駐する。
これらのハイパーバイザ及びＯ／Ｓイメージは、ＩＯＰ２０２（＊）と通信して、ＩＯＰ２０２（＊）と共にＩ／Ｏサービスを提供する。
ＩＯＰ２０２（＊）を含むパーティション２０１（＊）は、システムバックプレーン又は他の相互接続１０６を介してハイパーバイザ／イメージを含むパーティション２０３（＊）と通信することができる。
【００１７】
ＩＯＰ２０２（＊）は、各Ｏ／Ｓ又は各ハイパーバイザの仮想化されたＩ／Ｏ資源をパーティション２０１（＊）に提供する。
ハイパーバイザ／Ｏ／Ｓイメージを含むパーティション２０１（＊）がエンロールされたパーティション２０３（＊）になると、仮想化されたストレージ及び通信ネットワークインターフェースを含む仮想Ｉ／Ｏサブシステムが、各ハイパーバイザ又は各Ｏ／Ｓイメージに提供される。
各仮想Ｉ／Ｏサブシステムは、要求側のエンロールされたパーティションに仮想デバイスを提供し、特定の仮想デバイスに向けられたＩ／Ｏオペレーションをハンドリングする。
【００１８】
図２に示す実施の形態は、第２のＩＯＰセル２０２（２）も含む。
この第２のＩＯＰセル２０２（２）は、ＩＯＰ２０２（１）のバックアップＩＯＰとして使用することもできるし、追加のパーティションのＩ／Ｏプロセッサとして使用することもできる。
他のシステム構成では、図２に示す２つのＩＯＰ２０２（１）／２０２（２）に加えて、補助ＩＯＰ２０２（＊）も存在する場合がある。
各ＩＯＰ２０２（＊）は、コードセットを実行する。
このコードセットは、Ｉ／Ｏ要求を受け取って、仮想デバイス要求を物理アドレスに変換し、これらの要求を、イーサネット（登録商標）又はファイバチャネル等の共有Ｉ／Ｏファブリックリンク２１４の１つ又は複数に統合し、要求者（すなわち、要求側のエンロールされたパーティション２０３（＊））に適切な応答を送信すると同時に、エラーをハンドリングするものである。
外部システム２１５に接続されたリンク２１４は、このような共有Ｉ／Ｏファブリックリンクの一例である。
【００１９】
ＩＯＰ２０２（＊）は、メモリファブリック又は他のファブリックを介してハイパーバイザ並びに／又はパーティション２０１（＊）及び２０３（＊）と通信する。
このファブリックは、ＲＤＭＡ（リモートダイレクトメモリアクセス）又は他のメモリ対メモリ通信のいずれかを使用するホスティングＳＭＰの共有メモリファブリック（たとえば、グローバル共有メモリ３０１）を含むことができる（グローバル共有メモリ３０１は、図３に関して後述する）。
いくつかのＩＯＰは、同じ一組のＩ／Ｏ要求をスキャンすることができ、他の既知の技法を使用して、要求された各Ｉ／Ｏオペレーションが或るＩＯＰ２０２（＊）によって確実に実行されるようにすることができる。
特定のＩＯＰ２０２（＊）（又はそのリンク）が故障している場合、別のＩＯＰが、要求されたＩ／Ｏオペレーション（複数可）を提供する。
【００２０】
本システムにおける各パーティション２０１（＊）の完全性は、ハードウェアの「ファイアウォール」又は類似のメカニズムを介して守られる。
このメカニズムは、エンロールされたパーティションが互いに上書きすることを防止する保護を提供し、或るパーティションのエラーが別のパーティションを故障させることができないことを保証しようと試みる。
この保護の一態様は、或るパーティションが、グローバル共有メモリ３０１（後述）を介する場合を除いて、別のパーティション内に書き込みを行うことができないというものである。
グローバル共有メモリ３０１のすべては、すべてのパーティションにとってアクセス可能にされるとは限らない。
【００２１】
図３及び図４は、本システムの例示的な一実施の形態におけるメモリマッピングの物理ビュー及び論理ビューをそれぞれ示している。
図３に示すように、物理メモリマップ３００は、本システムのセル１０２（＊）及び２０２（＊）のそれぞれのセルメモリ１０５（１）〜１０５（Ｎ）の少なくとも一部が、グローバル共有メモリ３０１を通じて他のセルのそれぞれにとってアクセス可能であることを示している。
【００２２】
本システムのグローバル共有メモリ３０１は、物理的に別個のメモリではなく、むしろ、２つ以上のパーティション２０１（＊）及び２０３（＊）の物理アドレス空間において可視的なメモリ領域である。
グローバル共有メモリ３０１は、認可されていないパーティションアクセス及び変更から保護される（又は保護を受けることができる）。
したがって、グローバル共有メモリ３０１は、実際には、２つ以上のセル１０２（＊）又はパーティション２０１（＊）／２０３（＊）に存在するメモリの一部として存在する場合があるが、実際上は、別個のエンティティとして機能する。
この意味で、グローバル共有メモリ３０１は、たとえば、ＵＮＩＸ（登録商標）プロセス間で共有されるメモリと類似している。
ＵＮＩＸ（登録商標）プロセスでは、プロセスは単一のＯ／Ｓパーティション内で共有メモリページへのアクセス許可を受けることができる。
【００２３】
図４に示すように、本システムの例示的な一実施の形態におけるメモリマッピングの論理ビュー４００は、グローバル共有メモリ３０１が、システムの各パーティション間で共有されているものとみなすことができ、したがって、各パーティションにとってアクセス可能であるとみなすことができることを示している。
各ＩＯＰ２０２（＊）は、このように、「メールボックス」を使用して、グローバル共有メモリ３０１を通じ各パーティション２０１（＊）／２０３（＊）と通信することができ、その逆の通信も可能である。
図４に示すように、グローバル共有メモリ３０１は、エンロールされたパーティション（「ＥＰ」）のメールボックス４０２（＊）をセルローカルメモリに含み、ＩＯＰメールボックス４０４をＩＯＰローカルメモリに含む。
ＩＯＰローカルメモリは、複数のエンロールされたパーティションのメールボックス４０５（＊）を含む。
ＩＯＰ２０２（＊）は、エンロールされたパーティション２０３（＊）のメールボックスをチェックし、Ｉ／Ｏ要求を、他のパーティション２０３（＊）からのＩ／Ｏ要求と結合して、ストレージ又はネットワーキングへの比較的少数の高帯域幅接続を効率的に利用する。
【００２４】
図５は、本システムの例示的な一実施の形態におけるＩＯＰ、たとえばＩＯＰ２０２（１）、に関する（によって実行される）情報フロー５００を示す一組の高レベルステップを示すフローチャートである。
図５に示すように、ステップ５０５において、ローカルスタック及びローカルデバイスキュー等のローカルＩＯＰデータ構造体が初期化される。
ステップ５１０において、共有メモリ３０１を介して、他のいずれかのＩＯＰがアクティブであるか否かを判断するチェックが行われる。
他のいずれかのＩＯＰがアクティブである場合、ステップ５１５において、ＩＯＰ２０２（１）は、ステップ５１０で特定された他のＩＯＰを調整して同期させる。
【００２５】
ステップ５２０において、Ｉ／Ｏサブシステムの発見が開始され、Ｉ／Ｏカード１０８（及び付属デバイス）のＩ／Ｏサブシステム２０９における存在が判断される。
ステップ５２５において、必要に応じて、さまざまなシステムプロセスの状態が最新であることを確実にし、且つ、Ｉ／Ｏサブシステム２０９がシステムの残りの部分と適切に通信し同期していることを確実にするために、システム回復が実行される。
次に、ステップ５３０においてＩ／Ｏ処理スレッドが開始されて、ハンドリングされる。
ステップ５３０は、図６に関してすぐ後に説明する。
ステップ５３５（図７に関して後述）において、ＩＯＰと標準パーティション２０１（＊）との間で接続が確立される。
最後に、ステップ５４０において、自己チェックが各ＩＯＰ２０２（＊）によって行われて、ＩＯＰの再起動が必要であるか否かが判断され、必要である場合、ステップ５４５において、適切なＩＯＰが再起動される。
【００２６】
図６は、ＩＯＰ２０２（＊）により実行される、Ｉ／Ｏ処理スレッドを開始してハンドリングする例示の一組のステップを示すフローチャートである。
図６に示すように、ステップ６００において、本システムのＩＯＰは、２つの基本タイプのＩ／Ｏ処理スレッドを開始することができる。
これらの２つの基本タイプのＩ／Ｏ処理スレッドは、デバイス特有／専用のＩ／Ｏ処理スレッド６０１、及び、共有デバイスＩ／Ｏ処理スレッド６０２である。
これらのスレッドは、必要に応じて、仮想Ｉ／Ｏデバイスのスレッドとすることができる。
【００２７】
デバイス特有のＩ／Ｏ処理スレッド６０１が起動された後、そのスレッドは、次に、ステップ６０５において、エンロールされたパーティション２０３（＊）からＩ／Ｏ要求を待つ。
エンロールされたパーティション２０３（＊）からのＩ／Ｏ要求が、たとえば、割り込み又はグローバル共有メモリ３０１にセットされたフラグを介して検出されると、ステップ６１０において、適切な物理デバイスが決定され、そのデバイスのＩ／Ｏパラメータが（インメモリデータベース６０３を介して）セットアップされ、Ｉ／Ｏオペレーションが、グローバル共有メモリ３０１を介して「進行中」としてマーキングされる。
【００２８】
次に、ステップ６１５において、Ｉ／Ｏ要求が、要求されたＩ／Ｏオペレーションが向けられる特定のデバイスに適した下位ドライバ物理デバイスキューに入れられる。
ステップ６２０において、スレッド６０１は、下位ドライバ２１３から、要求されたＩ／Ｏオペレーションが完了したことを示すメッセージを待つ。
このメッセージは、ポーリング、又は、割り込み又はフラグ等のメカニズムを介して検出される。
次に、ステップ６２５において、「Ｉ／Ｏ完了」応答が、要求側のエンロールされたパーティション２０３へ送信され、ステップ６３０において、Ｉ／Ｏ要求が、グローバル共有メモリ３０１を介して、完了としてマーキングされる。
次に、ステップ６３５において、デバイスシャットダウンがＩ／Ｏ要求で指示されている場合、Ｉ／Ｏデバイスは、ステップ６４０においてシャットダウンされる。
そうでない場合、スレッド６０１は、ステップ６０５において、エンロールされたパーティション２０３（＊）から次のＩ／Ｏ要求を待つ。
【００２９】
共有Ｉ／Ｏ処理スレッド６０２が起動された後、次に、ステップ６４５において、スレッドは、上位ドライバ２１２からＩ／Ｏ要求を待つ。
ステップ６５０において、Ｉ／Ｏオペレーションは、「進行中」としてマーキングされる。
次に、ステップ６５５において、物理Ｉ／Ｏが、下位ドライバ２１３を介して、要求されたドライバ上で実行される。
ステップ６６０において、「Ｉ／Ｏ完了」メッセージが上位ドライバ２１２へ送信され、保留中のＩ／Ｏ要求が、グローバル共有メモリ３０１を介してスレッド６０２によりキューから取り出される。
最後に、スレッド６６５において、デバイスシャットダウンがＩ／Ｏ要求で指示されている場合、Ｉ／Ｏデバイスは、スレッド６４０においてシャットダウンされる。
そうでない場合、スレッド６０２は、ステップ６４５において、エンロールされたパーティション２０３（＊）から次のＩ／Ｏ要求を待つ。
【００３０】
図７は、パーティションからの要求の処理においてＩＯＰ２０２（１）により実行される例示の一組のステップを示すフローチャートである。
この一組のステップは、標準パーティション２０１（＊）との接続を確立すること、確立された接続を解体すること、及びエンロールされたパーティション２０３（＊）からの仮想デバイス要求をハンドリングすることを含む。
図７の説明は、特にＩＯＰ２０２（１）に関して提供されているが、どのＩＯＰ２０２（＊）も、本明細書で説明するオペレーションを実行できることに留意すべきである。
図７に示すように、ステップ７０５において、現在エンロールされているパーティション２０３（＊）が、ＩＯＰ２０２（１）にエンロールされたパーティション用のインメモリデータベース６０３をチェックすることによって発見される。
後述するステップ７３５に関して示すように、パーティションのエンロールは、接続要求が標準パーティション２０１（＊）によって行われて、その接続の確立が成功した時に行われる。
【００３１】
例示的な一実施の形態では、インメモリデータベース６０３は、ＩＯＰに関係したデータを記憶するための抽象データ構造体であり、論理デバイス及び論理ネットワーク、リアルデバイス、エンロールされたパーティション及びそれらの対応する特権、仮想デバイス、物理デバイス、仕掛品（work in process：進行中の作業）、許可、資源等のリストを含む。
インメモリデータベース６０３のコピーも、ディスク又は不揮発性メモリストレージ９０３（図９に示す）に保持することができる。
【００３２】
ステップ７１０において、ＩＯＰ２０２（１）は、エンロールされたパーティション又はエンロールを要求するパーティション、たとえばパーティション２０１（Ａ）から、接続要求若しくは接続解除要求又は仮想デバイス要求を待つ。
ステップ７１５において、接続解除の要求が存在するか否かを判断するチェックが行われる。
存在する場合、接続は、ステップ７２０において、インメモリデータベース６０３を介して終了され、「接続解除」確認応答が、ステップ７２５において要求者へ送信され、次に、ステップ７１０において、ＩＯＰ２０２（１）はエンロールを要求するパーティションから次の接続要求を待つ。
【００３３】
ステップ７３０において、要求側パーティションがすでにエンロールされている場合（たとえば、パーティション２０３（Ａ））、処理は、後述するステップ７４０に進む。
【００３４】
ステップ７３０において、要求が接続要求であると判断された場合、ステップ７３５において、ＩＯＰ２０２（１）は、要求側パーティション２０１（Ａ）との接続を確立しようと試みる。
この接続の試みが成功した場合、要求側パーティション２０１（Ａ）は、ＩＯＰ２０２（１）によってエンロールされて、エンロールされたパーティション（この場合はパーティション２０３（Ａ））になり、そのパーティションのエンロールされたステータスの対応する表示が、インメモリデータベース６０３に記憶される。
【００３５】
ステップ７４５において、接続の試みが失敗した場合、ステップ７５０においてエラーメッセージが要求者へ送信され、次に、ステップ７１０において、ＩＯＰ２０２（１）はエンロールされたパーティション又はエンロールを要求するパーティションから次の要求を待つ。
接続の試みが成功した場合（又は、パーティションがすでにエンロールされており、処理がステップ７３０から続いてきている場合）、ステップ７４０において、要求がチェックされて、要求が仮想デバイスに向けられたＩ／Ｏ要求を含むか否かが判断される。
要求が仮想デバイス要求を含む場合、処理は、後述するステップ７６０において継続する。
要求が仮想デバイス要求を含まない場合、ＩＯＰ２０２（１）は、ステップ７１０において、エンロールを要求するパーティションから次の接続要求を待つ。
たとえ接続要求が受信されても、その接続要求は仮想デバイスの要求も同時に又は組み込みで含む場合があるので、要求は、ステップ７４０において、仮想デバイス要求について確認するためにチェックされることに留意されたい。
【００３６】
ステップ７６０において、要求されている資源（要求されているＩ／Ｏデバイス）が、要求に含まれる情報から決定され、要求されている仮想デバイスの存在及び可用性が、インメモリデータベース６０３に含まれる情報から判断される。
ステップ７６５において、仮想デバイス要求が有効でない場合、又は、要求された資源が利用可能でない場合、ステップ７５０においてエラーメッセージが要求者へ送信され、次に、ステップ７１０において、ＩＯＰ２０２（１）はエンロールを要求するパーティションから次の接続要求を待つ。
【００３７】
資源（Ｉ／Ｏデバイス）の要求が有効である場合、ステップ７７０において、要求された資源が新しい仮想デバイスであるとき（すなわち、現在存在しない論理デバイスの仮想デバイス）、要求された仮想デバイスが作成される。
新しく作成された仮想デバイスは、インメモリデータベース６０３内に表示される。
ステップ７７５において、要求側パーティション２０３（Ａ）と要求された仮想デバイスとの間の接続を確立しようとする試みが行われる。
ステップ７８０において、この接続の試みが失敗した場合、ステップ７５０において、エラーメッセージが要求者へ送信され、次に、ステップ７１０において、ＩＯＰ２０２（１）はエンロールを要求するパーティションから次の接続要求を待つ。
【００３８】
図８は、例示的な一実施の形態における、ＩＯＰ２０２（＊）とエンロールされたパーティション２０３（＊）との間のＩ／Ｏドライバデータフローを示すフローチャートである。
図８に示すように、ステップ８０５において、エンロールされたパーティション、たとえばパーティション２０３（Ａ）の上位ドライバ２１０が、仮想デバイス又は他の（「非仮想」）デバイスのいずれかであるデバイスに向けられたＩ／Ｏ要求を送信する準備を行う。
非仮想デバイスは、基本的には「ローカルデバイス」、すなわち特定のパーティション２０３（＊）にローカルなデバイスであり、ＩＯＰの介入なしに、そのパーティションにおけるドライバ（たとえば、下位ドライバ２１１）から直接駆動することができる。
【００３９】
ステップ８１０において、Ｉ／Ｏ要求が仮想デバイス又は非仮想デバイスのどちらに向けられているかについての判断が行われる。
要求が非仮想デバイスのためのものである場合、ステップ８１５において、Ｉ／Ｏコールが要求側のエンロールされたパーティション２０３（Ａ）で上位ドライバ２１０から下位ドライバ２１１へ行われる。
或いは、ステップ８４５において、Ｉ／Ｏ要求が仮想デバイスのためのものである場合、Ｉ／Ｏ要求はＩＯＰ２０２（＊）へ送信される。
【００４０】
Ｉ／Ｏ要求が非仮想デバイスのためのものである場合、ステップ８２０において、下位ドライバ２１１は、対応するＩ／Ｏカード１０８を介して、適切なＩ／Ｏデバイス１１１でデータ転送を行う。
次に、ステップ８２５において、Ｉ／Ｏデバイス１１１はＩ／Ｏステータスを下位ドライバ２１１へ返信する。
下位ドライバ２１１は、ステップ８３０においてＩ／Ｏオペレーションを完了する。
最後に、ステップ８４０において、「Ｉ／Ｏ完了」表示及びステータス情報が、Ｏ／Ｓ及び開始プロセスへ返信される。
このように、非仮想デバイスからのＩ／Ｏ要求は、「通常の」Ｉ／Ｏオペレーションとして取り扱われる。
【００４１】
要求されたデバイスが仮想デバイスである場合、ステップ８４５において、上位ドライバ２１０は、グローバル共有メモリ３０１のＩＯＰメールボックス４０５（Ａ）を介して、Ｉ／Ｏ要求をＩＯＰ、たとえばＩＯＰ２０２（１）へ送信する。
このＩＯＰメールボックス４０５（Ａ）は、接続確立中にセットアップされる。
次に、ステップ８５０において、ＩＯＰ２０２（１）は、物理カードアドレス及び物理デバイスアドレスの適切なマッピングを決定する。
ステップ８５５において、ＩＯＰは、ステップ８５０で行われたコールからのマッピングを使用して自身の下位ドライバ２１３をコールする。
ステップ８６０において、下位ドライバは、グローバル共有メモリ３０１を介してデバイスへデータを送信し、デバイスからデータを受信する。
ステップ８６５において、要求されたＩ／Ｏデバイスは、下位ドライバ２１３へＩ／Ｏステータスを返信し、下位ドライバは、Ｉ／Ｏオペレーションを完了する。
ステップ８７０において、ＩＯＰ２０２（１）は、グローバル共有メモリ３０１を介して「Ｉ／Ｏ完了」ステータスをＥＰメールボックス４０２（１）へ送信する。
最後に、ステップ８４０において、「Ｉ／Ｏ完了」表示及びステータス情報が、要求側パーティション２０３（Ａ）のＯ／Ｓ及び開始プロセスへ返信される。
【００４２】
図９は、ＩＯＰ管理サブシステム９００を示す、本システムの一部の例示的な一実施の形態のブロック図である。
ＩＯＰ管理サブシステム９００は、ＩＯＰ２０２（＊）とＩ／Ｏ管理ソフトウェアとの間の通信の管理インターフェースとして機能する。
ＩＯＰ管理サブシステム９００によって、新しい仮想Ｉ／Ｏサブシステムの仕様、並びに、ハイパーバイザ又はパーティション２０３（＊）のＩＯＰ２０２（＊）へのエンロール及びＩＯＰ２０２（＊）との接続が可能になる。
たとえばＩＯＰ２０２（１）及び２０２（２）によって示された冗長なＩＯＰは、システムの信頼性を増大させるのに使用することができる。
例示的な一実施の形態では、信頼性は、インメモリデータベース６０３に含まれる重要なデータのコピーをディスク又は不揮発性メモリストレージ９０３に保持することによってさらに強化される。
【００４３】
管理インターフェースは、たとえば、ＩＯＰ２０２（＊）のＣＰＵ１０４又は外部ワークステーションで実行されるプログラムとすることができる。
外部ワークステーションは、ＩＯＰ仮想化管理コンソール９０２等であり、このＩＯＰ仮想化管理コンソール９０２は、ネットワーク又は他の接続を介して１つ又は複数のＩＯＰ（たとえば、図９のＩＯＰ２０２（１）及び２０２（２））に接続されている。
例示的な一実施の形態では、自律管理プロセス９０１が、ＩＯＰ仮想化管理コンソール９０２に結合されていると共に、本システムの各ＩＯＰ２０２（＊）にも結合されている。
自律管理プロセス９０１は、仮想デバイスの作成及び管理を可能にし、ＩＯＰ仮想化管理コンソール９０２からの入力を使用して、すべてのシステムＩＯＰ２０２（＊）間の調整を提供する。
また、ＩＯＰ管理サブシステム９００は、エンロールされたパーティション２０３（＊）によるＩ／Ｏ要求の追跡及び計算も可能にすると共に、全体的なＩＯＰステータス並びにＩ／Ｏリンク及びデバイスの利用情報も提供する。
使用量課金（usage billing）ソフトウェアは、たとえば、この管理及び会計の情報を利用することができる。
【００４４】
本システムの範囲から逸脱することなく、上記方法及び上記システムに特定の変更を行うことができる。
上記説明に含まれるすべての事項又は添付図面に示されたすべての事項は、限定ではなく例示の意味として解釈されるべきであることに留意すべきである。
たとえば、図２、図３、図４、及び図９に示すシステムは、そこに示した構成要素以外の構成要素を含むように構成することができ、それらの構成要素は、他の構成で配置することができる。
図５〜図８に示す要素及びステップも、本明細書で説明した方法に従って変更することができ、そこに示したステップは、このように説明した本システムの精神から逸脱することなく他の構成で配列することができる。
【図面の簡単な説明】
【００４５】
【図１】ハードパーティションを有するシステム及びハイパーバイザ／Ｏ／Ｓが管理するシステムの２つの従来技術のシステムを示す図である。
【図２】２つのＩＯＰセルを示す、本システムの例示的な一実施の形態のブロック図である。
【図３】例示的な一実施の形態におけるメモリマッピングの物理ビューを示す図である。
【図４】例示的な一実施の形態におけるメモリマッピングの論理ビューを示す図である。
【図５】例示的な一実施の形態におけるＩＯＰに関する情報フローを示す例示の一組の高レベルステップを示すフローチャートである。
【図６】ＩＯＰにより実行される、Ｉ／Ｏ処理スレッドを開始してハンドリングする例示の一組のステップを示すフローチャートである。
【図７】エンロールされたパーティションからの要求の処理においてＩＯＰにより実行される例示の一組のステップを示すフローチャートである。
【図８】例示的な一実施の形態における、ＩＯＰとエンロールされたパーティションとの間のＩ／Ｏドライバデータフローを示すフローチャートである。
【図９】ＩＯＰ管理サブシステムを示す、本システムの一部の例示的な一実施の形態のブロック図である。
【符号の説明】
【００４６】
１０２・・・セル，
２０１・・・標準パーティション，
２０２・・・ＩＯＰ，
２１０，２１２・・・上位ドライバ，
２１１，２１３・・・下位ドライバ，
３００・・・物理メモリマップ，
３０１・・・グローバル共有メモリ，
６０３・・・インメモリデータベース，
９００・・・ＩＯＰ管理サブシステム，
９０３・・・不揮発性メモリストレージ，
９０１・・・自律管理プロセス，
９０２・・・ＩＯＰ仮想化管理コンソール，
【図１】
0004576398.tif 000002
【図２】
0004576398.tif 000003
【図３】
0004576398.tif 000004
【図４】
0004576398.tif 000005
【図５】
0004576398.tif 000006
【図６】
0004576398.tif 000007
【図７】
0004576398.tif 000008
【図８】
0004576398.tif 000009
【図９】
0004576398.tif 000010