(57)【要約】【課題】  物理及び仮想マルチパスＩ／Ｏを動的に管理する方法及び装置を提供する。【解決手段】  実施例は、少なくとも２つのＨＢＡを有する１つ又はそれ以上のサーバのような１つ又はそれ以上のコンピューティング装置を含む。少なくとも１つのＨＢＡが、複数の仮想クライアントとストレージ・エリア・ネットワークの１つ又はそれ以上の記憶装置との間でデータを転送するためにそのＨＢＡを使用する仮想Ｉ／Ｏサーバに関連付けられる。実施例は、ＨＢＡの故障又はＨＢＡに結合された装置の故障に関してＨＢＡを監視するというようなＨＢＡの使用可能性を監視する。ＨＢＡの１つが使用不可であることを検出すると、実施例は、使用不可のＨＢＡに関連したＩ／Ｏパスから代替のＨＢＡに動的に切り替わる。【選択図】  図５
2010113707.tif 000002
【特許請求の範囲】
【請求項１】
仮想クライアントが第１の物理ホスト・バス・アダプタ（ＨＢＡ）を介してストレージ・ネットワーク及び前記仮想クライアントの間でデータを転送することを可能にするステップと、
仮想Ｉ／Ｏサーバが第２の物理ＨＢＡを介して前記ストレージ・ネットワーク及び前記仮想Ｉ／Ｏサーバの間でデータを転送することを可能にするステップと、
前記仮想クライアントが前記仮想Ｉ／Ｏサーバ及び前記第２の物理ＨＢＡを介して前記ストレージ・ネットワーク及び前記仮想クライアントの間でデータを転送することを動的に可能にするステップと
を含む方法。
【請求項２】
前記仮想Ｉ／Ｏサーバが前記第２の物理ＨＢＡを介して前記ストレージ・ネットワーク及び第２の仮想クライアントの間でデータを転送することを可能にするステップを更に含む、請求項１に記載の方法。
【請求項３】
複数の仮想クライアントに対する、前記第２の物理ＨＢＡのための複数の仮想識別子アドレスを得るステップを更に含む、請求項２に記載の方法。
【請求項４】
前記仮想クライアントが前記第２の物理ＨＢＡを介してデータを転送することを可能にするために、前記第１のＨＢＡに関連した故障を検出するステップを更に含む、請求項３に記載の方法。
【請求項５】
前記第１のＨＢＡが前記仮想クライアントにとって使用不可になることに応答して、前記仮想Ｉ／Ｏサーバ及び前記第２の物理ＨＢＡを介して前記ストレージ・ネットワーク及び前記仮想クライアントの間でデータを転送することをマルチパスＩ／Ｏモジュールを介して決定するステップを更に含む、請求項１に記載の方法。
【請求項６】
前記第２の物理ＨＢＡが前記仮想クライアントにとって使用不可になることに応答して、前記仮想クライアントが前記仮想Ｉ／Ｏサーバ及び第３の物理ＨＢＡを介して前記ストレージ・ネットワーク及び前記仮想クライアントの間でデータを転送することを動的に可能にするステップを更に含み、
前記第１の物理ＨＢＡ、前記第２の物理ＨＢＡ、及び第３の物理ＨＢＡのうちの第１の１つがファイバ・チャネルＨＢＡを含み、前記第１の物理ＨＢＡ、前記第２の物理ＨＢＡ、及び第３の物理ＨＢＡのうちの第２の１つがｉＳＣＳＩ  ＨＢＡを含む、前記請求項１に記載の方法。
【請求項７】
第１の物理ホスト・バス・アダプタ（ＨＢＡ）を介してネットワークにデータを転送するための仮想クライアント・モジュールと、
第２の物理ＨＢＡを介して前記ネットワークにデータを転送するための仮想Ｉ／Ｏサーバ・モジュールと、
前記仮想クライアント・モジュールを前記仮想Ｉ／Ｏサーバ・モジュールに結合するための仮想マシン・モニタと
を含み、
前記仮想Ｉ／Ｏサーバ・モジュールは、前記仮想クライアント・モジュールが前記第２の物理ＨＢＡを仮想ＨＢＡとしてアクセスすることを可能にするように構成され、前記仮想クライアント・モジュール、前記仮想Ｉ／Ｏサーバ・モジュール、及び前記仮想マシン・モニタの少なくとも１つは、前記仮想クライアント・モジュールが前記第２の物理ＨＢＡを介して前記ネットワークにデータを転送することを動的に可能にするように構成される、装置。
【請求項８】
前記第１の物理ＨＢＡ及び前記第２の物理ＨＢＡの使用不可を検出するように構成されたマルチパスＩ／Ｏモジュールを更に含む、請求項７に記載の装置。
【請求項９】
前記仮想クライアント・モジュールは前記マルチパスＩ／Ｏモジュールを含み、前記マルチパスＩ／Ｏモジュールは前記検出された使用可に基づいて前記第１の物理ＨＢＡ及び前記第２の物理ＨＢＡの間で選択するように構成される、請求項８に記載の装置。
【請求項１０】
前記マルチパスＩ／Ｏモジュールは、前記第１の物理ＨＢＡ及び前記第２の物理ＨＢＡの間で前記仮想クライアント・モジュールのＩ／Ｏワークロードを分散するように構成され、更に、前記仮想マシン・モニタはホスト化された仮想マシン・モニタを含む、請求項８に記載の装置。
【請求項１１】
第３の物理ＨＢＡを介して前記ネットワークにデータを転送するための第２の仮想Ｉ／Ｏサーバ・モジュールを更に含み、
前記仮想クライアント・モジュールは、前記第１の物理ＨＢＡ及び前記第２の物理ＨＢＡが使用不可であるとき、前記第２の仮想Ｉ／Ｏサーバ・モジュール及び前記第３の物理ＨＢＡを介して前記ネットワークにデータを動的に転送するように構成される、請求項７に記載の装置。
【請求項１２】
前記第２の仮想Ｉ／Ｏサーバ・モジュールは、第４の物理ＨＢＡを介して前記ネットワークにデータを転送するようにマルチパスＩ／Ｏモジュールを構成し、更に、前記第２の仮想Ｉ／Ｏサーバ・モジュールは、前記第３の物理ＨＢＡが使用不可であるとき、前記第４の物理ＨＢＡを介して前記ネットワークにデータを動的に転送するように構成される、請求項１１に記載の装置。
【請求項１３】
前記仮想マシン・モニタは、前記第１の物理ＨＢＡに関連した故障の検出に応答して、前記仮想クライアント・モジュールが前記第２の物理ＨＢＡを介して前記ネットワークにデータを転送することを動的に可能にするように構成される、請求項７に記載の装置。
【請求項１４】
前記第２の物理ＨＢＡは、ＮポートＩＤ仮想化（ＮＰＩＶ）を支援することができるファイバ・チャネルＨＢＡを含む、請求項７に記載の装置。
【請求項１５】
第１のファイバ・チャネル・ホスト・バス・アダプタ（ＨＢＡ）を介してストレージ・エリア・ネットワーク（ＳＡＮ）にデータを転送するように構成された仮想クライアント・モジュールと、
第２のファイバ・チャネルＨＢＡを介して前記ＳＡＮにデータを転送するように構成された仮想Ｉ／Ｏサーバ・モジュールと、
前記仮想クライアント・モジュールを前記仮想Ｉ／Ｏサーバ・モジュールに結合するための仮想マシン・モニタと、
を含み、
前記仮想Ｉ／Ｏサーバ・モジュールは、前記仮想クライアント・モジュールが前記第２のファイバ・チャネルＨＢＡを仮想ファイバ・チャネルＨＢＡとしてアクセスすることを可能にするように構成され、更に、前記仮想クライアント・モジュール・モジュールは、前記第２のファイバ・チャネルＨＢＡの故障のとき、前記仮想クライアント・モジュールが前記第１のファイバ・チャネルＨＢＡを介して前記ＳＡＮにデータを転送することを動的に可能にするためのマルチパスＩ／Ｏモジュールを含む、システム。
【請求項１６】
前記仮想Ｉ／Ｏサーバ・モジュールは、前記仮想クライアント・モジュール及び他のクライアント・モジュールの間で物理Ｉ／Ｏ資源を動的に割り振るように構成され、更に、前記仮想マシン・モニタはネイティブ仮想マシン・モニタを含む、請求項１５に記載のシステム。
【請求項１７】
前記仮想マシン・モニタは、前記仮想クライアント・モジュール及び他のクライアント・モジュールのワークロードに基づいて前記仮想クライアント・モジュール及び前記他のクライアント・モジュールの間で複数のプロセッサの処理機能を動的に割り振るように構成される、請求項１５に記載のシステム。
【請求項１８】
少なくとも１つのプロセッサによって実行される命令を含むコンピュータ・プログラムであって
記憶装置のネットワークにデータを転送する命令であって、前記転送が第１の物理ホスト・バス・アダプタ（ＨＢＡ）を介した転送である、命令と、
第２の物理ＨＢＡを介して前記ネットワークにデータを転送する命令であって、複数の仮想クライアントに対して仮想ＨＢＡが前記第２の物理ＨＢＡを介して前記ネットワークにデータを転送するように構成される、命令と、
前記複数の仮想クライアントの１つが、前記第１の物理ＨＢＡ及び前記第２の物理ＨＢＡの１つの故障のとき、前記第１の物理ＨＢＡ及び前記第２の物理ＨＢＡの前記１つを介して前記ネットワークをアクセスすることを動的に可能にする命令と
を前記プロセッサに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、コンピューティング装置及び情報記憶装置に関し、更に詳しく言えば、コンピューティング装置及び情報記憶装置の動的な物理及び仮想マルチパス入出力（Ｉ／Ｏ）に関する。
【背景技術】
【０００２】
通常のタイプのコンピューティング装置は、デスクトップ・コンピュータ及びサーバ装置である。情報記憶に関して、益々一般的な技術はストレージ・エリア・ネットワーキング、又は、単にストレージ・エリア・ネットワーク（ＳＡＮ）と呼ばれている。ＳＡＮ技術は、ディスク・アレイおよび光学的記憶装置アレイのような遠隔のコンピュータ記憶装置を、その記憶装置を共用するコンピューティング装置及びオペレーティング・システムにとってその記憶装置がローカル接続された装置のように見えるような方法で、サーバ及び他のコンピューティング装置に接続することを含む。
【０００３】
多くの場合、ファイバ・チャネル・スイッチは、サーバ及び他のコンピューティング装置をＳＡＮに接続する。一般的なファイバ・チャネルＳＡＮでは、入出力コントローラ（ＩＯＣ）又はホスト・バス・アダプタ（ＨＢＡ）が、ファイバ・チャネル・リンクを介してファイバ・チャネル・スイッチ又はジャスト・ア・バンチ・オブ・ディスク（Just a Bench Of Disk - ＪＢＯＤ）に接続されたＮポートを含む。初期化時に、ホスト・オペレーティング・システム（ＯＳ）のドライバはファイバ・チャネル・シーケンスを初期化し、Ｎポートに対するワールド・ワイド・ポート・ネーム（World-Wide Port Name - ＷＷＰＮ）を含むファブリック・ログイン・コマンド（FabricLogin command - ＦＬＯＧＩ）をファイバ・チャネル・スイッチへＨＢＡに送らせる。ファイバ・チャネル・スイッチは、Ｎポートに対するＷＷＰＮに関連したファイバ・チャネル・アドレス又は仮想識別子（仮想ＩＤ）を含むＦＬＯＧＩ応答をＮポートに返送する。
【０００４】
ドライバは、それがＨＢＡを介してファイバ・チャネル・スイッチとコミュニケートし、そのファブリックにおけるすべての装置のアドレスのリストを得るディスカバリ機能も遂行する。その場合、ディスカバリ機能は、すべてのアドレスにゴー・アウト（goout）すること、そのアドレスに関連した装置にログインすること、及びその装置がファイバ・チャネル／スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）ターゲットであるかどうか決定することを含む。その装置がファイバ・チャネル／ＳＣＳＩターゲットである場合、ディスカバリ機能はそのターゲットとＨＢＡとの間の接続を確立する。さらに、物理ファイバ・チャネル・リンクがＳＣＳＩバスとしてＯＳにエクスポートされ、その後、ディスカバされたＦＣ／ＳＣＳＩ装置に関連した遠隔のポートが、一般的なＳＣＳＩ態様でＳＣＳＩバス上にターゲットとして現われる。
【０００５】
一般的なファイバ・チャネルＳＡＮは、単一のファイバ・チャネル・リンク上のＮポートに１つのＷＷＰＮ及びファイバ・チャネル・アドレスしか割り当てることができないので、制限される。言い換えれば、通常のコンピューティング・モデルは、ＯＳが明示的にファイバ・チャネル・ポートを所有するよう、１つのコンピューティング装置当たり単一のＯＳを意図している。従って、ファイバ・チャネル・ポートに基づいて、ゾーニング及び選択的記憶装置表示／論理ユニット番号（ＬＵＮ）マスキングようなシステム管理ツールが定義された。
【０００６】
しかし、ファイバ・チャネルＳＡＮ技術は、ＮポートＩＤ仮想化（ＮＰＩＶ）を含むように拡張された。ＮＰＩＶは、物理ファイバ・チャネル・ポートを仮想化するための標準化された方法である。ＮＰＩＶは、ファイバ接続されたＮポートが多数のファイバ・チャネル・アドレスを要求することを可能にする。各アドレスがファイバ・チャネル・ファブリック上に一意的エンティティとして現われる。ＮＰＩＶを利用すると、ファイバ・チャネル・スイッチによって認識し得る多数のＷＷＰＮ及びファイバ・チャネル・アドレスを、単一の物理ファイバ・チャネル・リンク及びＮポートに割り当てることが可能である。従って、物理ファイバ・チャネル・ポートがファブリックに対する多数のエンティティとして現われるのを可能にすることは、通常のコンピューティング・モデルを拡張又は拡大する。
【０００７】
技術者は、コンピューティング装置の物理プロセッサとＳＡＮとの間に多数の物理パスを作成することによってＳＡＮの耐障害性及び性能を改善した。多数の物理パスは、一般に、多数のバス、多数のコントローラ、多数のスイッチ、及び多数のブリッジ装置のような装置を介してＩ／Ｏパスを作成することに関与する。多数のパスを作成する技術は、一般に、マルチパスＩ／Ｏと呼ばれる。マルチパスＩ／Ｏの既存の具現化方法は、専用のファイバ・チャネル・ホスト・バス・アダプタ、スイッチ・ポート、ケーブル、及び他の物理資源要素のような専用の物理資源を使用する。
【０００８】
以下は、添付の図面に示された実施例の詳細な説明である。その説明は、実施例の種々の側面を明瞭に伝える程度に詳細なものである。しかし、提示された詳細の趣旨は、実施例の予想される変更を制限することを意図していない。一方、その真意は、「特許請求に範囲」によって定義されるような種々の実施例に関するすべての修正案、均等物、及び代替案をカバーすることである。下記の詳細な説明は、そのような実施例を当業者にとって明瞭にすることを目的とする。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、物理及び仮想マルチパスＩ／Ｏを動的に管理する方法、装置、システム、及びコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
種々の実施例は、少なくとも２つのＨＢＡを有する１つ又はそれ以上のサーバのような１つ又はそれ以上のコンピューティング装置を含む。ＨＢＡの少なくとも１つは、そのＨＢＡを使って複数の仮想クライアントとストレージ・エリア・ネットワークの１つ又はそれ以上の記憶装置との間でデータを転送するという仮想Ｉ／Ｏサーバに関連する。実施例は、ＨＢＡ又はそのＨＢＡに結合された装置の故障に関してＨＢＡを監視するというような、ＨＢＡの可用性を監視し得る。ＨＢＡの１つの使用不可を検出するとき、実施例は、その使用不可のＨＢＡに関連したＩ／Ｏパスから代替のＨＢＡに動的に切り替わり得る。
【００１１】
或る実施例は、第１の物理ＨＢＡを介して仮想クライアントがストレージ・ネットワークにおける１つの記憶装置とその仮想クライアントとの間でデータを転送することを可能にすること、仮想Ｉ／Ｏサーバが第２の物理ＨＢＡを介してその記憶装置とその仮想Ｉ／Ｏサーバとの間でのデータを転送することを可能にすること、及び仮想Ｉ／Ｏサーバおよび第２の物理なＨＢＡを介して仮想クライアントがその記憶装置とその仮想クライアントとの間でデータを転送することを動的に可能にすることを含む方法を含む。
【００１２】
更なる実施例は、仮想クライアント・モジュールに、第１の物理ＨＢＡ及び仮想Ｉ／Ｏサーバ・モジュールを介してネットワークへデータを転送させて、第２の物理ＨＢＡを介してそのネットワークへデータを転送させる、装置を含む。その実施例は、更に、仮想クライアント・モジュールを仮想Ｉ／Ｏサーバ・モジュールに結合するための仮想マシン・モニタを有する。これらの実施例の仮想Ｉ／Ｏサーバは、仮想クライアントが第２の物理ＨＢＡを仮想ＨＢＡとしてアクセスすることを可能にするように構成され得る。更に、仮想クライアント・モジュール、仮想Ｉ／Ｏサーバ、又は仮想マシン・モニタは、仮想クライアント・モジュールが第２の物理ＨＢＡを介してネットワークへデータを転送することを動的に可能にするように構成され得る。
【００１３】
更なる実施例は、第１のファイバ・チャネルＨＢＡを介してＳＡＮへデータを転送する仮想クライアント・モジュールと、第２のファイバ・チャネルＨＢＡを介してＳＡＮにデータを転送する仮想Ｉ／Ｏサーバ・モジュールと、仮想Ｉ／Ｏサーバ・モジュールに仮想クライアント・モジュールを結合する仮想マシン・モニタとを有するシステムを含む。そのシステムの実施例の仮想Ｉ／Ｏサーバは、仮想クライアント・モジュールが第２のファイバ・チャネルＨＢＡを仮想ファイバ・チャネルＨＢＡとしてアクセスすることを可能にする。そのシステムの実施例は、仮想クライアント・モジュールが、第２のファイバ・チャネルＨＢＡの故障時に、第１のファイバ・チャネルＨＢＡを介してＳＡＮへデータを転送することを動的に可能にするために、その仮想クライアント・モジュールのマルチパスＩ／Ｏモジュールを更に含む。
【００１４】
更なる実施例は、命令を含むコンピュータ可読記憶媒体を備えたコンピュータ使用可能媒体を含むコンピュータ・プログラム製品を更に含み、その命令は、それが少なくとも１つのプロセッサによって実行されるとき、第１の物理ＨＢＡを介して記憶装置のネットワークへデータを転送し、第２の物理ＨＢＡを介してそのネットワークへデータを転送する。命令は、仮想ＨＢＡとして構成された第２の物理ＨＢＡと共に、複数の仮想クライアントのための第２の物理ＨＢＡを介してネットワークへデータを転送し得る。命令は、更に、複数の仮想クライアントの１つが、第１の物理ＨＢＡ及び第２の物理ＨＢＡの１つの故障時に、第１の物理ＨＢＡ及び第２の物理ＨＢＡの１つを介してネットワークをアクセスすることを動的に可能にし得る。
【００１５】
種々の実施例の諸側面は、下記の詳細な説明を読めば、及び同じ参照番号が同様の素子を指す添付図面を参照すれば、明らかになるであろう。
【図面の簡単な説明】
【００１６】
【図１】２つのプロセッサ、仮想マシン・モニタ、ディスプレイ、及び種々の入出力装置を含み、物理及び仮想マルチパスＩ／Ｏの動的管理を遂行し得るシステムの実施例を示すブロック図である。
【００１７】
【図２】仮想クライアントに直接接続された物理ファイバ・チャネル・カードと仮想Ｉ／Ｏサーバを介して接続された１個以上のファイバ・チャネル・カードとの間のマルチパスＩ／Ｏを動的に管理し得る方法を示すブロック図である。
【００１８】
【図３】仮想Ｉ／Ｏパスと物理Ｉ／Ｏパスの間のマルチパスＩ／Ｏを動的に管理し得る装置の一実施例を示すブロック図である。
【００１９】
【図４】１つの実施例が仮想クライアント、仮想Ｉ／Ｏサーバ、仮想マシン・モニタをロードする方法及び使用不可のＨＢＡから使用可能なＨＢＡに切り替わる方法を示すフローチャートである。
【００２０】
【図５】物理及び仮想マルチパスＩ／Ｏを動的に管理する方法を示すフローチャートである。
【発明を実施するための形態】
【００２１】
以下は、添付図面に示された新規な実施例の詳細な説明である。実施例は主題を明瞭に伝えるように詳細なものである。しかし、提示された詳細の程度は、記載された実施例の予期される変更を制限することを意図するものではない。むしろ、「特許請求の範囲」及び「発明を実施するための形態」の項は、「特許請求の範囲」によって定義されるような教示事項の主旨及び範囲内にあるすべての修正案、均等物、及び代替案をカバーするためのものである。以下の詳細な説明は、そのような実施例を当業者にとって理解可能にすることを目的とする。
【００２２】
以下の記載の多くにおいて、用語「サーバ」を使用して多数の実施例が考察される。用語「コンピューティング装置」も使用される。それでも、これらの用語の使用は、当業者に対する説明を目的とするものである。本明細書における教示は、一般に、ＳＡＮを含むネットワークに結合された多数のタイプのコンピューティング装置と共に使用され得る。
【００２３】
次に図面に説明を転じると、図１は、２つのプロセッサ１４０及び１５０、メモリ・コントローラ・ハブ（ＭＣＨ）１１６、メモリ１０４、及びＩ／Ｏコントローラ・ハブ（ＩＣＨ）１２０を備えたシステム１００を示す。多くの実施例において、システム１００はサーバを含み得る。他の実施例では、システム１００は、メインフレーム・コンピュータもしくはメインフレーム・コンピュータ・システムの一部、デスクトップ・コンピュータ、又はノートブック型コンピュータのような種々のタイプのコンピューティング装置を含み得る。
【００２４】
プロセッサ１４０及び１５０は、コア１４２、１４３、１５２、及び１５３のような多くのコアを有し、それらのコアは、プロセッサ１４０及び１５０のキャッシュ・メモリ素子と結合されてもよい。例えば、プロセッサ１５０は、内部プロセッサ・キャッシュ・メモリと結合されたコア１５２及び１５３を有する。プロセッサの数及びコアの数は実施例によって変わり得る。例えば、システム１００は２つのプロセッサ１４０及び１５０を持ち得るが、別の実施例では、１個、４個、８個、又は他の幾つかの数のような他の数のプロセッサを持ち得る。プロセッサのコアの数も、１個のコア、４個のコア、５個のコア、又は他の数のコアように種々の実施例において変わり得る。
【００２５】
図１に示されるように、システム１００は、仮想クライアント（Ｖ．Ｃ．）１１０のようなメモリ１０４の１つ又はそれ以上の仮想クライアントにおいて、アプリケーション（ＡＰＰＳ）１１１のような多くのアプリケーションを実行し得る。例えば、システム１００は、コンピューティング・ボードのような大型のサーバ・システムの一部又はラックマウント・サーバにおけるブレード・サーバを含み得る。プロセッサ１４０及び１５０は、システム１００のユーザによって実行されるプログラム及びアプリケーション１１１のための動作命令を実行し得る。アプリケーション１１１は、例えば、ネットワーク・メール・プログラム、並びに、ワード処理アプリケーション及びコンピュータ支援設計（ＣＡＤ）アプリケーションのようないくつかの生産性向上アプリケーションを含み得る。
【００２６】
プロセッサ１４０及び１５０は、ＭＣＨ１１６と対話することによってメモリ１０４における命令を実行し得る。メモリ１０４を含むタイプのメモリ装置は、種々の実施例において変わり得る。或る実施例では、メモリ１０４は、４個の４ギガバイト（ＧＢ）のダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）スティックのような揮発性メモリ素子を含み得る。或る実施例は、少量または多量のメモリを含み得る。例えば、或る実施例は１２８ＧＢのＲＡＭを含み得るが、他の実施例は、５１２ＧＢのようなもっと多くのメモリを含み得る。別の実施例では、メモリ１０４は不揮発性メモリを含み得る。例えば、或る実施例では、メモリ１０４は、６４ＧＢのフラッシュ・メモリ・モジュールのようなフラッシュ・メモリ・モジュールを含み得る。
【００２７】
更に図１に示されるように、システム１００は、仮想クライアント１１０及び仮想Ｉ／Ｏサーバ（ＶＩＯＳ）１０８のような１つ又はそれ以上の仮想マシンを管理するハイパーバイザのような仮想マシン・モニタ（ＶＭＭ）１１４を備え得る。言い換えれば、仮想マシン・モニタ１１４は、多数のオペレーティング・システムがシステム１００において同時に稼動することを可能にし得る。図１の実施例では、仮想マシン・モニタ１１４は、いずれのオペレーティング・システムからも独立した、メモリ１０４にロードされたアプリケーションを含み得る。
【００２８】
種々の実施例において、仮想マシン・モニタ１１４は種々の形式で存在し得る。例えば、１つの実施例では、仮想マシン・モニタ１１４は、プロセッサ１４０又はプロセッサ１５０に結合されたファームウェアを含み得る。他の実施例では、仮想マシン・モニタ１１４は、オペレーティング・システムの一部としてロードされた、又はオペレーティング・システムの後にロードされたソフトウェア・アプリケーションを含み得る。即ち、仮想マシン・モニタ１１４は、オペレーティング・システムによって実行されるアプリケーションを含み得る。或る実施例は独立した仮想マシン・モニタを持たないことがある。その場合、オペレーティング・システムは、仮想マシン・モニタ又はハイパーバイザの機能を遂行し得る。仮想マシンの数は、実施例によっても変わり得る。
【００２９】
仮想クライアント１１０及び仮想Ｉ／Ｏサーバ１０８は、それぞれ、自立型動作環境を形成するソフトウェア・プログラムの集合体を含み得る。仮想クライアント１１０及び仮想Ｉ／Ｏサーバ１０８は仮想マシン・モニタ１１４から独立して、しかしそれと関連して動作し得る。例えば、仮想Ｉ／Ｏサーバ１０８は、仮想クライアント１１０及び他の仮想クライアントが種々の物理Ｉ／Ｏハードウェア素子と対話することを可能にするように仮想マシン・モニタ１１４と関連して作動し得る。
【００３０】
ＩＣＨ１２０は、プロセッサ１４０及び１５０がキーボード、スキャナ及びデータ記憶装置のような外部周辺装置と対話することを可能にし得る。プロセッサ１４０及び１５０によって実行されているプログラム及びアプリケーションは外部周辺装置と対話し得る。例えば、プロセッサ１４０及び１５０は、例えば、アドバンスト・グラフィックス・ポート（ＡＧＰ）ビデオ・カードに結合されたディスプレイ１６０を介してユーザに情報を提示し得る。そのタイプのコンソール又はディスプレイ装置は、例えば、陰極線管（ＣＲＴ）モニタ、液晶ディスプレイ（ＬＣＤ）スクリーン、又は薄膜トランジスタ・フラット・パネル・モニタであってもよい。
【００３１】
ディスプレイ１６０は、ユーザが画面を見てアプリケーション１１１と対話することを可能にし得る。例えば、ディスプレイ１６０は、ユーザがアプリケーション１１１のＣＡＤプログラムを実行すること、及びファイバ・チャネル・アダプタ１７０を介してシステム１００に結合されたストレージ・エリア・ネットワークへの図面情報を格納することを可能にし得る。システム１００の別の実施例は、多数のファイバ・チャネル・アダプタ１７０を含み得る。更に、或る実施例では、ユーザまたはシステム管理者は、ディスプレイ１６０を使って仮想マシン・モニタ１１４、仮想Ｉ／Ｏサーバ１０８、及び仮想クライアント１１０の構成情報を見て変更し得る。例えば、システム管理者は、仮想マシン・モニタ１１４が多数の仮想マシンを管理するために必要なパーティション情報を設定し得る。
【００３２】
種々の実施例において、ＩＣＨ１２０は、プロセッサ１４０及び１５０が１つ又はそれ以上のファイバ・チャネル装置を介してストレージ・エリア・ネットワークの記憶装置にデータを格納すること、及びその記憶装置からデータを検索することを可能にし得る。例えば、システム１００は、ファイバ・チャネル・アダプタ１７０に結合されたＳＡＮスイッチを介してアプリケーション１１１がＳＡＮにデータを格納することを可能にし得る。仮想クライアント１１０は、専用の記憶装置がファイバ・チャネル・アダプタ１７０に取り付けられるように構成されてもよい。ＳＡＮスイッチのようなファイバ・チャネル・アダプタ１７０に結合された素子の故障の場合、それにもかかわらず、仮想クライアント１１０は、仮想Ｉ／Ｏサーバ１０８、仮想マシン・モニタ１１４、及び、ＩＣＨ１２０を介して別のファイバ・チャネル・アダプタに結合された別のＳＡＮスイッチのような代替の記憶装置、を介して情報を格納及び／又は検索し得る。
【００３３】
別の実施例では、ＩＣＨ１２０は、プロセッサに１４０及び１５０が、１つ又はそれ以上のユニバーサル・シリアル・バス（ＵＳＢ）から、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）コントローラ１６２及びＵＳＢアダプタ１６４に結合されたＵＳＢ装置を介して、データを格納及び検索することを可能にし得る。１つの実施例では、仮想クライアント１１０は、仮想Ｉ／Ｏサーバ１０８、仮想マシン・モニタ１１４、及びＵＳＢアダプタ１６４に結合された一次ＵＳＢハード・ドライブを介して情報を格納及び／又は検索するように構成され得る。一次ＵＳＢハード・ドライブの素子の故障の場合、それにもかかわらず、仮想クライアント１１０は、ＵＳＢアダプタ１６４又は二次ＵＳＢアダプタに結合された専用の二次ＵＳＢハード・ドライブを介して情報を格納及び／又は検索し得る。
【００３４】
プロセッサ１４０及び１５０は、更に、ＰＣＩコントローラ１６２及び通信アダプタ１６６を介してデータを送り及び受け取り得る。通信アダプタ１６６は、例えば、ネットワーク・インターフェース・カード（ＮＩＣ）を含み得る。システム１００は、１つ又はそれ以上の実行アプリケーション１１１が仮想クライアント１１０とインターネット・スモール・コンピュータ・システムス・インターフェース（ｉＳＣＳＩ）ＳＡＮのハード・ディスクとの間でデータを転送することを可能にし得る。例えば、システム１００は、いくつかの仮想クライアントが１つ又はそれ以上の論理パーティション（ＬＰＡＲ）に置かれるようにし得る。仮想クライアント１１０は１つの論理パーティションに存在し得るし、仮想Ｉ／Ｏサーバ１０８は別の論理パーティションに存在し得る。システム１００は、仮想クライアント１１０が、通信アダプタ１６６を使用して、関連するＮＩＣを介して一次ｉＳＣＳＩハード・ディスクとコミュニケートすること、並びにその一次ｉＳＣＳＩハード・ディスクへ／一次ｉＳＣＳＩハード・ディスクから情報を転送することを可能にし得る。システム１００の実施例は、一次ｉＳＣＳＩハード・ディスクの故障又はメンテナンスの場合、又はｉＳＣＳＩハード・ディスク及び通信アダプタ１６６の間の相互接続ネットワーク装置の故障又はメンテナンスの場合、仮想クライアント１１０が、仮想Ｉ／Ｏサーバ１０８に結合された二次通信アダプタ及び二次ＮＩＣとを使って二次ｉＳＣＳＩハード・ディスクへ／二次ｉＳＣＳＩハード・ディスクから情報を転送することを可能にし得る。
【００３５】
別の実施例は、通信アダプタ１６６のために種々の技術を様々に使用し得る。例えば、１つの実施例は仮想光ファイバ・バスを利用し得るし、一方、別の実施例は通信アダプタ１６６のための高速リンク（ＨＳＬ）光学的接続を使用し得る。
【００３６】
ＵＳＢアダプタ１６４及び通信アダプタ１６６に加えて、ＩＣＨ１２０は、システム１００のアプリケーション１１１が、アドバンスト・テクノロジ・アタッチメント（ＡＴＡ）ハード・ドライブのようなＡＴＡ装置、ディジタル・バーサタイル・ディスク（ＤＶＤ）ドライブ、及びＣＤリード・オンリ・メモリ（ＲＯＭ）ドライブ１２８のようコンパクト・ディスク（ＣＤ）ドライブと対話することも可能にし得る。図１に示されるように、システム１００はＳＡＴＡハード・ドライブ１３０のようなシリアルＡＴＡ（ＳＡＴＡ）ドライブも持ち得る。ＳＡＴＡハード・ドライブ１３０は、例えば、種々のパーティションに対する多数のオペレーティング・システム、装置ドライバ、及びシステム１００の仮想クライアントのためのアプリケーション・ソフトウェアを格納するために使用されてもよい。例えば、ＳＡＴＡハード・ドライブ１３０は、ＡＩＸ（商標）、Ｌｉｎｕｘ（商標）、Ｍａｃｉｎｔｏｓｈ（商標）ＯＳ  Ｘ、Windows（商標）、又はシステム１００が１つ又はそれ以上のＬＰＡＲにロードする他のオペレーティング・システムを格納し得る。
【００３７】
種々の実施例において、ＩＣＨ１２０は、仮想マシン・モニタ１１４によって管理されたパーティションにおけるアプリケーションが不揮発性メモリ１１８に情報を格納及び検索すること、並びにアプリケーション特有の集積回路（ＡＳＩＣ）１２４と対話することを可能にし得る。例えば、不揮発性メモリ１１８は、或る実施例ではフラッシュ・メモリを含み得るが、他の実施例ではプログラマブル・リード・オンリ・メモリ（ＰＲＯＭ）又は他のタイプのメモリを含み得る。不揮発性メモリは、例えば、仮想クライアントが使用のために構成される特定の物理及び仮想ファイバ・チャネル・アダプタのような一次及び二次仮想／物理Ｉ／Ｏパスを格納するために使用されてもよい。ＩＣＨ１２０は、仮想マシン・モニタ１１４によって管理されたパーティションにおけるアプリケーションが、ＳＣＳＩアダプタ１３２に結合されたＳＣＳＩ装置を使用してデータを格納及び検索することも可能にし得る。
【００３８】
別の実施例は、例えば、サウンド・カード、スキャナ、及びプリンタのような図１に示されてない種々のタイプのハードウェアを有するシステム１００において物理及び仮想マルチパスＩ／Ｏを管理し得る。例えば、システム１００は、スキャナからデータを転送して、ファイバ・チャネル・アダプタ１７０に結合されたＳＡＮスイッチを介して接続しているＳＡＮネットワークにそのデータを格納し、ＳＡＮスイッチに関する問題に遭遇し、仮想Ｉ／Ｏサーバ１０８を介して、ＳＡＮネットワークに結合された別のＳＡＮスイッチにフェイルオーバすることを可能にするというプロセスにあることがある。逆に、別の実施例では、システム１００は、図１に示された実施例に関して説明したすべての要素を含むとは限らないことがある。例えば、システム１００の或る実施例は、ＳＣＳＩアダプタ１３２、ＰＣＩコントローラ１６２、ＵＳＢアダプタ１６４、ＣＤ-ＲＯＭドライブ１２８、及びＡＳＩＣ１２４の１つ又はそれ以上を含まないことがある。
【００３９】
次に図２に説明を転じて、システム又は装置２００が物理及び仮想マルチパスＩ／Ｏを動的に管理する方法に関して更に詳しい説明を行う。図２は、実施例が、ＳＡＮ２７０に接続された物理及び仮想ファイバ・チャネルに対するＩ／Ｏを動的に管理する方法を示す。例えば、仮想マシン・モニタ２５０及びプロセッサ２６２は、それぞれ、図１における仮想マシン・モニタ１１４、プロセッサ１４０及び１５０のような装置又はシステムの要素を構成し得る。
【００４０】
仮想マシン・モニタ２５０は、ハードウェア層２６６の１つ又はそれ以上の要素が多数の論理パーティションに分けられ且つパーティション間の分離を保証することを可能にし得る。例えば、仮想マシン・モニタ２５０は、装置２００が動作しているときにはいつも動作し、プロセッサ２６２の共用の物理プロセッサに仮想マシン・クライアント及び仮想Ｉ／Ｏサーバの論理パーティション・ワークロードをディスパッチし得る。図２は、２つの仮想クライアント、即ち、Ｌｉｎｕｘクライアント２３０、及びＡＩＸクライアント２３５を示す。なお、各クライアントは独立した論理パーティションにある。仮想マシン・モニタ２５０は、パーティション・セキュリティを強化し得るし、仮想Ｉ／Ｏサーバ（ＶＩＯＳ）２１０のための仮想ＳＣＳＩ及び仮想イーサネット機能を可能にするパーティション間のコミュニケーションを行い得る。
【００４１】
仮想マシン・モニタ２５０は、物理ハードウェア資源を使用してハードウェア層２６６の物理ハードウェア資源と論理パーティションとの間に抽象層を提供し得る。仮想マシン・モニタ２５０は、物理プロセッサ２６２への仮想プロセッサのディスパッチを制御し、仮想プロセッサ・コンテキストの切り替え時にプロセッサ状態情報を保存／復元し、ハードウェアＩ／Ｏ割り込み及びパーティションに対する管理機構を制御し得る。更に、仮想マシン・モニタ２５０は、装置２００の論理パーティションに対するリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）サービスを提供し得る。例えば、仮想マシン・モニタ２５０は、パーティションのアプリケーション・メモリ間のデータをパーティションに対するオペレーティング・システムのデータ・バッファにコピーすることを必要とせずに、メモリ・モジュール２６４におけるメモリのセクションを含み得る仮想層２０５のクライアントからＩ／Ｏスロット２５２及び２５６並びにファイバ・チャネル・カード２５４及び２５８へ、データが直接に移動することを可能にし得る。
【００４２】
装置２００は仮想層２０５に示された２つの仮想マシン・クライアント、即ち、Ｌｉｎｕｘクライアント２３０及びＡＩＸクライアント２３５を含む。例えば、Ｌｉｎｕｘクライアント２３０は１つのＬＰＡＲに存在し得るし、一方、ＡＩＸＲクライアント２３５は別のＬＰＡＲに存在し得る。装置２００のＬＰＡＲは、マイクロプロセッサ資源、メモリ資源、及びＩ／Ｏ資源の論理的なグループ化又はパーティション化とも呼び得る。
【００４３】
資源の量は種々の実施例において変わり得るし、装置内の資源必要度及び資源利用度に従って、単一の実施例においてさえ変わり得る。例えば、装置２００がプロセッサ資源を物理プロセッサの単一のプールからＬＰＡＲに割り付けるように、１つ又はそれ以上のＬＰＡＲが、マイクロ・パーティションと代替的に呼ばれる共用のプロセッサ・パーティションを含み得る。実施例によっては、装置２００がマイクロ・パーティションを割り付けるプロセッサ容量の大きさは、例えば、物理プロセッサの１０パーセント（１０％）から物理共用プロセッサ・プールの全容量までの範囲で変わり得る。多くの実施例では、仮想Ｉ／Ｏサーバ２１０又はＡＩＸクライアント２３５のような各仮想マシンは、専用プロセッサ・パーティション又はマイクロ・パーティションのいずれかにおいて実行され得る。
【００４４】
図２が示すように、装置は、Ｉ／Ｏスロット２５２、２５６、及び２８０のような多数のＩ／Ｏスロットを持ち得る。１つ以上のＩ／Ｏスロット２５２、２５６、及び２８０は、例えば、８ＧｂのＰＣＩeホスト・バス・アダプタＩ／Ｏスロットを含み得る。図２は、３つのＩ／Ｏスロットしか持たない装置２００だけを示すが、別の実施例は、もっと少ない又はもっと多いＩ／Ｏスロットを持ち得る。例えば、或る実施例は８個、１６個、３２個、又はもっと多くのＩ／Ｏスロットを含み得る。装置２００の各Ｉ／Ｏスロットはファイバ・チャネル・インターフェース・カードを有する。Ｉ／Ｏスロット２５２はファイバ・チャネル・カード２５４に結合され、一方、Ｉ／Ｏスロット２５６及び２８０は、それぞれ、ファイバ・チャネル・カード２５８及び２８２に接続される。
【００４５】
実施例によっては、仮想Ｉ／Ｏサーバは、装置又はホスト・システムを他のネットワーク及び記憶装置に接続するために、１つまたはそれ以上のファイバ・チャネル・カード、ホスト・コントローラ、ホスト・アダプタ、及びホスト・バス・アダプタ（ＨＢＡ）を使用し得る。上記の説明で使用されたカード及びアダプタという用語は、ＳＣＳＩ、ファイバ・チャネル、及びeＳＡＴＡ装置を接続するための装置を指し得る。更に、ホスト・システムをＩＤＥ、イーサネット、FireWire、ＵＳＢ、及び他のシステムに接続する装置を指すために、当業者は、多くの場合、そのような用語を「ホスト・アダプタ」として使用し得る。更に、或る実施例は、イーサネットＨＢＡがハードウェアのiＳＣＳＩ専用ＴＣＰ  Ｏｆｆｌｏａｄ  Ｅｎｇｉｎｅを含み得るという点でイーサネットＮＩＣとは異なるイーサネットＨＢＡのような要素を、iＳＣＳＩの導入に伴って使用し得る。別の実施例は、物理及び仮想マルチパスＩ／Ｏを動的に管理するとき、ネットワーク及び記憶装置の接続のために１つ又はそれ以上の種々のタイプの各装置を使用し得る。
【００４６】
装置２００の管理者は、Ｉ／Ｏスロット２８０及びファイバ・チャネル（ＦＣ）・カード２８２をＡＩＸクライアント２３５に対して専用にし、ＡＩＸクライアント２３５及び／または仮想マシン・モニタ２５０を構成し得る。例えば、仮想マシン・モニタは、ＡＩＸクライアント２３５だけがＩ／Ｏスロット２８０及びファイバ・チャネル・カード２８２を介してＳＡＮスイッチ２９０とコミュニケートすることを可能にするように構成され、Ｌｉｎｕｘクライアント２３０のような他の仮想クライアントがＩ／Ｏスロット２８０及びファイバ・チャネル・カード２８２をアクセスしないように又はそれらを使用しないようにし得る。
【００４７】
多くの実施例において、仮想Ｉ／Ｏサーバ２１０のような仮想Ｉ／Ｏサーバは、仮想ＳＣＳＩターゲット及び共用のイーサネット機能をＬｉｎｕｘクライアント２３０及びＡＩＸクライアント２３５に与えて、Ｌｉｎｕｘクライアント２３０及びＡＩＸクライアント２３５がＳＣＳＩ装置及びイーサネット・アダプタを共用することを可能にする。例えば、装置２００の管理者は、ファイバ・チャネル・カード２５４を備えたＩ／Ｏスロット２５２及びファイバ・チャネル・カード２５８を備えたＩ／Ｏスロット２５６を仮想Ｉ／Ｏサーバ２１０の専用にするように仮想Ｉ／Ｏサーバ２１０及び／または仮想マシン・モニタ２５０を構成し得る。図２に示された態様で構成された仮想Ｉ／Ｏサーバ２１０は、ＳＡＮ２７０の物理記憶資源の仮想化を可能にし得る。装置２００のクライアント・パーティションは、仮想Ｉ／Ｏサーバ２１０によってクライアント・パーティションに仮想化記憶装置として表わされたＳＡＮ２７０の物理記憶装置をアクセスし得る。言い換えれば、装置２００は、Ｌｉｎｕｘクライアント２３０及びＡＩＸクライアント２３５のようなクライアント・パーティションが標準ＳＣＳＩ準拠の論理装置（ＬＵＮ）として仮想ＳＣＳＩ装置をアクセスすることを可能にし得る。
【００４８】
ＮＰＩＶを仮想Ｉ／Ｏサーバ２１０のアダプタ共用機能と結合すると、装置２００は、ファイバ・チャネル・カード２５４及び２５８のような物理ファイバ・チャネル・ホスト・バス・アダプタが、Ｌｉｎｕｘクライアント２３０及びＡＩＸクライアント２３５のようなシステムを操作する多数のゲスト又はクライアントの間で共用されることを可能にする。言い換えれば、装置２００は、ファイバ・チャネル・カード２５４及び２５８のためのＮＰＩＶを実装して、各ＬＰＡＲが専用のＷＷＰＮを備えた仮想ファイバ・チャネルＨＢＡを持つことを可能にする。各仮想ファイバ・チャネルＨＢＡは、専用の物理ＨＢＡのＳＡＮアイデンティティに匹敵し得る一意的なＳＡＮアイデンティティを持ち得る。
【００４９】
装置２００は、物理及び仮想マルチパスＩ／Ｏを動的に管理するためにＮＰＩＶを使用して、共用資源の余剰化を可能にし得る。装置２００は、動的な物理及び仮想マルチパスＩ／Ｏを使用して、ＬＰＡＲから記憶装置への多数のパスを設けることによりデータ使用可能度を改善し得る。例えば、図２に示された装置２００の実施例は、仮想Ｉ／Ｏサーバ２１０からＳＡＮ２７０への２つの異なるパスを提供する。例えば、ファイバ・チャネル・カード２５４が故障した場合、仮想Ｉ／Ｏサーバ２１０は、それにもかかわらず、Ｉ／Ｏスロット２５６、ファイバ・チャネル・カード２５８、及びＳＡＮスイッチ２６０を介してＳＡＮ２７０にデータを送り続け得る。
【００５０】
更に、仮想Ｉ／Ｏサーバ２１０は、Ｉ／Ｏスロット２５２及び２５６の両方のパスにＩ／Ｏワークロードを分散又は平衡化するようにそれらのパスを活性化して、装置２００の性能を改善し得る。例えば、仮想Ｉ／Ｏサーバ２１０からＳＡＮ２７０へのデータ転送は、Ｉ／Ｏスロット２５６及びファイバ・チャネル・カード２５８だけを使用すると、平均７.５Gb/sに制限される。しかし、仮想クライアント・アクセスＩ／Ｏスロット２５２がある場合、仮想Ｉ／Ｏサーバ２１０は、Ｉ／Ｏスロット２５２及び２５６を操作することによって、平均１５のGb/sに転送速度を増加させ得る。
【００５１】
装置２００は、ＡＩＸクライアント２３５及びＬｉｎｕｘクライアント２３０が物理Ｉ／Ｏ及び仮想Ｉ／Ｏの両方をサポートすることを可能にし、一方、物理及び仮想Ｉ／Ｏは、装置２００が動的な物理及び仮想マルチパスＩ／Ｏを実装することを可能にする。言い換えれば、物理及び仮想マルチパスＩ／Ｏを動的に管理することによって、装置２００はＬＰＡＲから記憶装置に物理パス及び仮想パスの両方を作成し得る。例えば、物理パスは専用のファイバ・チャネル・アダプタを含み得る。図２において、ＡＩＸクライアント２３５からの物理パスは、物理ファイバ・チャネルＨＢＡドライバ２４４から仮想マシン・モニタ２５０を介してＩ／Ｏスロット２８０及びファイバ・チャネル・カード２８２、ＳＡＮスイッチ２９０、及びＳＡＮ２７０へのパスを含み得る。ＡＩＸクライアント２３５からの仮想パスは、ＮＰＩＶアダプタ・ドライバ２４２から仮想マシン・モニタ２５０を通ってＮＰＩＶアダプタ・ドライバ２２５へのパス、物理ファイバ・チャネルＨＢＡドライバ２１５へのパス、仮想マシン・モニタ２５０を通ってＩ／Ｏスロット２５２及びファイバ・チャネル・カード２５４へのパス、ＳＡＮスイッチ２６０及びＳＡＮ２７０へのパスを含み得る。
【００５２】
物理及び仮想マルチパスＩ／Ｏの動的管理のため、初期化中に、物理ファイバ・チャネルＨＢＡドライバ２１５はファイバ・チャネル初期化シーケンスを開始し、ファイバ・チャネル・カード２５４に、ファイバ・チャネル・カードのＮポートに対するワールド・ワイド・ポート名（ＷＷＰＮ）を含むファブリック・ログイン・コマンド（ＦＬＯＧＩ）をＳＡＮスイッチ２６０へ送らせる。ＳＡＮスイッチ２６０は、Ｎポートに対するＷＷＰＮに関連したＦＣアドレスを含むＦＬＯＧＩ応答をファイバ・チャネル・カード２５４のＮポートに戻し得る。
【００５３】
物理ファイバ・チャネルＨＢＡドライバ２１５は、その物理ファイバ・チャネルＨＢＡドライバ２１５がファイバ・チャネル・カード２５４を介してＳＡＮスイッチ２６０と交信し、ＳＡＮスイッチ２６０に関連したファブリックにおけるすべての装置のアドレスのリストを得るというディスカバリ機能も遂行し得る。そこで、物理ファイバ・チャネルＨＢＡドライバ２１５は、すべてのアドレスを照会し、アドレスの各々に関連した装置の各々にログインし、その装置がファイバ・チャネル／ＳＣＳＩターゲットであるかどうかを決定し得る。その装置がファイバ・チャネル／ＳＣＳＩターゲットである場合、物理ファイバ・チャネルＨＢＡドライバ２１５はそのターゲットとファイバ・チャネル・カード２５４との間の接続を確立し得る。更に、物理ファイバ・チャネルＨＢＡドライバ２１５は、ファイバ・チャネル・カード２５４とＳＡＮスイッチ２６０との間の各関連した物理ファイバ・チャネル・リンクを仮想層２０５の仮想クライアントへのＳＣＳＩバスとして表わし、その後、ディスカバされたファイバ・チャネル／ＳＣＳＩ装置に関連した遠隔のポートがＳＣＳＩバス上にターゲットとして現われ得る。
【００５４】
装置２００は、ファイバ・チャネル・カード２５４のＮポートが多数のファイバ・チャネル・アドレスを要求することを可能にするためにＮＰＩＶを使用し得る。例えば、物理ファイバ・チャネルＨＢＡドライバ２１５は、ＡＩＸクライアント２３５に対するファイバ・チャネル・アドレス及びＬｉｎｕｘクライアント２３０に対する第２のファイバ・チャネル・アドレスを要求し得る。各アドレスは、ファイバ・チャネル・ファブリックのための一意的なエンティティのように見えるかもしれない。言い換えれば、ＮＰＩＶを利用することによって、ＳＡＮスイッチ２６０によって認識可能な多数のＷＷＰＮ及びファイバ・チャネル・アドレスが、単一の物理ＦＣリンク及びＮポートに割り当てられ得る。更に、仮想Ｉ／Ｏサーバ２１０及びＡＩＸクライアント２３５は、それぞれ、ＮＰＩＶアダプタ・ドライバ２２５及びＮＰＩＶアダプタ・ドライバ２４２のような仮想装置ドライバを含み得る。なお、仮想装置ドライバはＮＰＩＶをサポートすることができる。
【００５５】
多数のＷＷＰＮ及びファイバ・チャネル・アドレスを単一の物理Ｎポートに割り当てることは、装置２００が、独立したオペレーティング・システムを用いて多数の仮想クライアントを実行することを可能にし得る。ファイバ・チャネル・カード２５４のポートを単一の仮想クライアントに対して専用化する代わりに、各仮想クライアントの各オペレーティング・システムは、１つ又はそれ以上の一意的且つ専用のファイバ・チャネル・アドレスを、各ファイバ・チャネル・アドレスに対する関連した固有のＷＷＰＮと共に固有に有することが可能である。ＮＰＩＶを使用して、装置２００は、ファイバ・チャネル・カード２５８のような他のファイバ・チャネル・カードのＮポートが多数のファイバ・チャネル・アドレスを要求することも可能にし得る。
【００５６】
装置２００は、少ない物理資源を利用することによって動的な物理及び仮想マルチパスＩ／Ｏを、Ｉ／Ｏ余剰度を増加させるために使用し得る。例えば、ＡＩＸクライアント２３５が余剰のＩ／Ｏに対する２つの専用物理Ｉ／Ｏスロットを要求する代わりに、ＡＩＸクライアント２３５は１つの物理Ｉ／Ｏスロット及び関連のＨＢＡを使用し得るが、ＶＩＯＳ２１０に関連した仮想ＨＢＡにフェイルオーバ・パスを提供する。更に詳細な例が、動的な物理及び仮想マルチパスＩ／Ｏのこの概念を説明する助けになるであろう。
【００５７】
図２に示されるように、装置２００は、物理ファイバ・チャネルＨＢＡドライバ２４４と結合されたファイバ・チャネル・カード２８２を含む単一の専用物理ファイバ・チャネルＨＢＡと共に構成されたＡＩＸクライアント２３５を有し得る。ファイバ・チャネル・カード２８２及び物理ファイバ・チャネルＨＢＡドライバ２４４は、ＡＩＸクライアント２３５がＳＡＮ２７０にデータを格納するために及びＳＡＮ２７０からデータを検索するために使用する一次Ｉ／Ｏチャネルを構成し得る。
【００５８】
ＡＩＸクライアント２３５は、ＮＰＩＶアダプタ・ドライバ２４２及びＮＰＩＶアダプタ・ドライバ２４３を含む２つの仮想ファイバ・チャネルＨＢＡによっても構成される。例えば、ＡＩＸクライアント２３５と仮想Ｉ／Ｏサーバ２１０との間の１つの仮想ファイバ・チャネルＩ／Ｏパスは、ＮＰＩＶアダプタ・ドライバ２４２とＮＰＩＶアダプタ・ドライバ２２５との間の仮想マシン・モニタ２５０によって提供される仮想パスを含み得る。第２の仮想ファイバ・チャネルＩ／Ｏパスは、ＮＰＩＶアダプタ・ドライバ２４３とＮＰＩＶアダプタ・ドライバ２２３との間の仮想マシン・モニタ２５０によって提供される仮想パスを含み得る。
【００５９】
ＮＰＩＶアダプタ・ドライバ２２５は、物理ファイバ・チャネルＨＢＡドライバ２１５と結合して、仮想Ｉ／Ｏサーバ２１０がＩ／Ｏスロット２５２、ファイバ・チャネル・カード２５４、及びＳＡＮスイッチ２６０を介して装置２００とＳＡＮ２７０との間でデータを転送することを可能にする。ＮＰＩＶアダプタ・ドライバ２２３は、物理ファイバ・チャネルＨＢＡドライバ２２０と結合して、Ｉ／Ｏスロット２５６、ファイバ・チャネル・カード２５８及びＳＡＮスイッチ２６０を介して装置２００とＳＡＮ２７０との間でデータを転送することを可能にする。ＮＰＩＶアダプタ・ドライバ２２５及び２２３、物理ファイバ・チャネルＨＢＡドライバ２１５及び２２０、並びにファイバ・チャネル・カード２５４及び２５８は、ＡＩＸクライアント２３５がＳＡＮ２７０にデータを格納するために及びＳＡＮ２７０からデータを検索するために使用する二次及び三次のＩ／Ｏチャネルを含み得る。
【００６０】
マルチパスＩ／Ｏモジュール２４０は、種々の物理ファイバ・チャネルＨＢＡと、ＡＩＸクライアント２３５が使用するように構成される仮想ファイバ・チャネルＨＢＡ  Ｉ／Ｏデータ・パスとを識別し得る。更に、マルチパスＩ／Ｏ（ＭＰＩＯ）モジュール２４０は、個々の物理及び仮想Ｉ／Ｏデータ・パスの故障を動的に検出し、ＡＩＸクライアント２３５が代替のＩ／Ｏデータ・パスに対して動的にフェイルオーバすることを可能にし得る。例えば、或る動作モード中、ＡＩＸクライアント２３５は、物理ファイバ・チャネルＨＢＡドライバ２４４によって表わされた一次Ｉ／Ｏチャネルを使用してＡＩＸクライアント２３５とＳＡＮ２７０との間でデータを転送し得る。
【００６１】
ハードウェア問題に遭遇したＳＡＮスイッチ２９０のような故障又はメンテナンスの場合、マルチパスＩ／Ｏモジュール２４０は、物理ファイバ・チャネルＨＢＡドライバ２４４に関連した故障を検出し、ＡＩＸクライアント２３５のための一次Ｉ／Ｏチャネルを、物理ファイバ・チャネルＨＢＡドライバ２４４からＮＰＩＶアダプタ・ドライバ２４２に関連した二次Ｉ／Ｏチャネルに、切り替え得る。更に、二次Ｉ／Ｏチャネルの故障の場合、マルチパスＩ／Ｏモジュール２４０はその障害を検出し、ＡＩＸクライアント２３５のための現在アクティブなＩ／Ｏチャネルを、ＮＰＩＶアダプタ・ドライバ２４２からＮＰＩＶアダプタ・ドライバ２４４に関連した三次Ｉ／Ｏチャネルに切り替え得る。
【００６２】
単一の専用物理ファイバ・チャネルＨＢＡを一次Ｉ／Ｏチャネルとして有し、２つの仮想ファイバ・チャネルＨＢＡを二次及び三次フェイルオーバＩ／Ｏチャネル又はパスとして有する実施例を説明したが、別の実施例は、異なるタイプの一次ＨＢＡ及び変化する数のフェイルオーバＨＢＡによって構成されてもよい。例えば、別の実施例は、単一の仮想ファイバ・チャネルＨＢＡを一次Ｉ／Ｏチャネル及び関連のデータ・パスとして有し、iＳＣＳＩ記憶装置に結合された単一の物理イーサネットＨＢＡを二次Ｉ／Ｏチャネル及び関連のデータ・パスとして有し得る。
【００６３】
動的な物理及び仮想マルチパスＩ／Ｏの援助で、装置２００は、クライアントに関連したＩ／Ｏを混乱させることなく、ＡＩＸクライアント２３５又はＬｉｎｕｘクライアント２３０を１つの物理サーバから別の物理サーバに動的に移動させ得る。パーティションの移動は、クライアント・パーティションが実行しているすべてのもの、即ち、すべてのホスティングされたアプリケーションを含み得る。種々のサーバ間で論理パーティションを移動させることは、仮想クライアントによって提供されるサービスに対して混乱なく、サーバ・ハードウェアに関する計画されたメンテナンスを可能にし得る。例えば、システム管理者は、パーティションによって提供されるサービスへの割り込みを行うことなく、使用頻度の高い論理パーティションをより大型のマシンへ移動させ得る。それとは別に、システム管理者は、ワークロード要求に依存して、より多くの利用可能な処理能力を有するサーバにパーティションを移動させ得るし、或いはユーザに対する特殊なレベルのサービスを維持するためにサーバ・ハードウェアの利用を調節し得る。
【００６４】
更に特殊な例は、動的な物理及び仮想マルチパスＩ／Ｏが論理パーティションの再配置を可能にし得る方法を更に詳しく説明する。仮想マシン・モニタ２５０は、ＡＩＸクライアント２３５及びＬｉｎｕｘクライアント２３０のような種々の論理パーティションの間で処理能力を分散するように構成され得る。例えば、ＡＩＸクライアント２３５は、２個の処理装置及び２個の仮想プロセッサを割り当てられ、一方、Ｌｉｎｕｘクライアント２３０も２個の処理装置及び２個の仮想プロセッサを割り当てられ得る。更にこの例では、ＡＩＸクライアント２３５及びＬｉｎｕｘクライアント２３０は共に同じサーバ上に存在し得るし、その場合、サーバは合計４個の物理プロセッサを有する。
【００６５】
ＡＩＸクライアント２３５に対するの需要又は総合負荷は時間の経過と共に増加し得る。例えば、ＡＩＸクライアント２３５に関連した１つのプロセッサは極度に負荷を課せられ、そのプロセッサの実行能力に関して多大の命令を実行することになる。システム管理者が現サーバ上のＡＩＸクライアント２３５にとって利用可能なコンピューティング能力の量を増加させることができない場合、例えば、Ｌｉｎｕｘクライアント２３０が分け与えるべき如何なる余分な処理能力も持たない場合、システム管理者は、ＡＩＸクライアント２３５の論理パーティションを、多くの利用可能な処理能力を有する別のサーバに移動又は移行することを必要とすることがある。
【００６６】
ＡＩＸクライアント２３５を別のサーバに移行する場合、システム管理者は、装置２００に、宛先サーバ又はターゲット・サーバにおいて既存のＡＩＸクライアント２３５のコピーを作らせ得る。一旦コピーが作成されると、装置２００はソース・イメージを非活性化し、宛先イメージ又はターゲット・イメージを活性化し、ソース・サーバのメモリからその非活性化されたイメージを除去し得る。ＡＩＸクライアント２３５の移行に際して、専用の物理ＨＢＡは、その再配置中、利用不可能になり得る。例えば、Ｉ／Ｏスロット２８０及びファイバ・チャネル・カード２８２はソース・サーバ内にあるので、ターゲット・サーバの新たに作成された論理パーティションにおけるＡＩＸクライアント２３５は、Ｉ／Ｏスロット２８０及びファイバ・チャネル・カード２８２から物理的に分離され得る。
【００６７】
マルチパスＩ／Ｏモジュール２４０は、物理ファイバ・チャネルＨＢＡドライバ２４４を介してファイバ・チャネル・カード２８２の使用不可を検出し得る。その検出の際、マルチパスＩ／Ｏモジュール２４０は、ＮＰＩＶアダプタ・ドライバ２４４又はＮＰＩＶアダプタ・ドライバ２４３によって提供される仮想Ｉ／Ｏパスの１つにＡＩＸクライアント２３５を動的に切り替わらせ又はフェイルオーバさせ得る。その後、フェイルオーバ・パスを利用している間、システム管理者は、ターゲット・サーバに対するハードウェア管理コンソール（ＨＭＣ）にログインしてＡＩＸクライアント２３５を再構成し、専用のＩ／Ｏスロット２８０及びファイバ・チャネル・カード２８２をターゲット・サーバの別のＩ／Ｏスロット及びＨＢＡと置換し得る。
【００６８】
図３は、物理及び仮想マルチパスＩ／Ｏの動的な管理を行ない得る装置３００の一実施例を示す。装置３００の１つ又はそれ以上の要素が、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの両方の組み合わせの形であってもよい。例えば、図３に示された実施例では、装置３００のメモリ３１０におけるモジュールは、１つ又はそれ以上のプロセッサによって実行されるアプリケーションのソフトウェア命令を含み得る。言い換えれば、装置３００は、ネットワーク３７０に結合されたコンピューティング装置の要素を含み得る。
【００６９】
別の実施例では、装置３００の１つ又はそれ以上のモジュールがハードウェアのみのモジュールを含み得る。例えば、仮想Ｉ／Ｏサーバ３３０は、図３に示されたものとは異なる配列でコンピューティング装置のプロセッサと結合された集積回路チップの一部を含み得る。そのような実施例では、仮想Ｉ／Ｏサーバ３３０は、仮想マシン・モニタ３４０と関連して作動して、メモリ３１０における仮想クライアントが物理ＨＢＡ３５０及び物理ＨＢＡ３６０のようなＩ／Ｏ装置をアクセスすることを可能にし得る。
【００７０】
更に別の実施例では、装置３００の１つ又はそれ以上のモジュールがハードウェア・モジュール及びソフトウェア・モジュールの組み合わせを含み得る。例えば、仮想マシン・モニタ３４０は、仮想クライアント及びメモリ内の論理パーティションの監視及び管理を行うファームウェア及び独立型の処理回路を含み、クライアント及びパーティションがＩ／Ｏハードウェアをアクセスすることを可能にし得る。
【００７１】
１つ又はそれ以上の実施例において、仮想マシン・モニタ３４０は、動的な資源共用を可能にするソフトウェア又はファームウェアにおけるコードの薄膜層を含み得る。図３に示された実施例では、仮想マシン・モニタ３４０は仮想化を可能にし、仮想資源と呼ばれる実資源の代用物を作成し得る。例えば、仮想マシン・モニタ３４０は、単一の物理システム内に多数の仮想システムを作成することを可能にし得る。２つの仮想システムが、例えば、仮想クライアント３２０及び仮想Ｉ／Ｏサーバ３３０を含み得る。仮想マシン・モニタ３４０は、物理ＨＢＡ３５０及び物理ＨＢＡ３６０の仮想代用物を作成し、仮想クライアント３２０及び仮想Ｉ／Ｏサーバ３３０が独立態様で仮想代用物と対話することを可能にして、実物理資源に対して行われる同時アクセスの競合を防止し得る。
【００７２】
仮想クライアント３２０は、メモリ３１０の論理パーティションに格納された、仮想デスクトップとも呼ばれるデスクトップ・コンピュータのイメージを含み得る。例えば、仮想クライアント３２０は、オペレーティング・システムのイメージ及びそのオペレーティング・システムと互換性のある多くのアプリケーションのイメージを含み得る。更に特殊な例として、仮想クライアント３２０は、ＡＩＸ、Windows、Ｕｎｉｘ、又は、ＣＡＤプログラム、メール・サーバ・プログラム、及びデータベース・プログラムを実行する他のいくつかのオペレーティング・システム、を含み得る。
【００７３】
仮想Ｉ／Ｏサーバ３３０は、論理パーティション内にも設置されるソフトウェアを含み得る。仮想Ｉ／Ｏサーバ３３０は仮想マシン・モニタ３４０に関連して作動し、物理ＨＢＡ３５０及び物理ＨＢＡ３６０のような物理Ｉ／Ｏ資源を、仮想クライアント３２０のようなメモリ３１０における種々の仮想クライアントの間で共用すること可能にし得る。例えば、多くの実施例において、仮想Ｉ／Ｏサーバ３３０は、仮想ＳＣＳＩターゲット及び共用のイーサネット・アダプタ機能を装置３００内のクライアント論理パーティションに提供して、クライアント論理パーティションがＳＣＳＩ装置及びイーサネット・アダプタを共用することを可能にし得る。
【００７４】
物理ＨＢＡ３５０及び物理ＨＢＡ３６０は、１つ又はそれ以上の種々の異なるアダプタを含み得る。多くの実施例において、それらのＨＢＡは、ファイバ・チャネル・ネットワークを介してＳＣＳＩコマンドを搬送するためにファイバ・チャネル・プロトコル（ＦＣＰ）を使って交信するファイバ・チャネルＨＢＡを含み得る。或る実施例では、ＨＢＡは、インターネットＳＣＳＩ互換性（iＳＣＳＩ）ＨＢＡを含み得る。そのiＳＣＳＩ  ＨＢＡは、ＩＰネットワークを介してＳＣＳＩコマンドの交換を可能にするためにＴＣＰ／ＩＰを使用し得る。言い換えれば、iＳＣＳＩ  ＨＢＡは、ＳＡＮを作成するために広域ネットワーク上にローカル記憶装置バスをエミュレートし得る。ファイバ・チャネル及びiＳＣＳＩ  ＨＢＡはまさにひと組の例である。別の実施例は、１つまたはそれ以上の他のタイプのＨＢＡも使用し得る。
【００７５】
ネットワーク３７０は、多数のネットワーク装置及び１つまたはそれ以上の記憶装置を含み得る。例えば、ネットワーク３７０は、ほんのわずかな例として、多くのiＳＣＳＩディスク、iＳＣＳＩテープ・ドライブ、iＳＣＳＩ光学的記憶装置、ファイバ・チャネルＲＡＩＤ、ファイバ・チャネル・ディスク、ファイバ・チャネル・テープ・ドライブ、ファイバ・チャネル光学的ドライブ、及び／又はiＳＣＳＩ  ＲＡＩＤ記憶装置を相互接続する、ルータ、ハブ、スイッチ、ケーブルの配列を含み得る。ネットワーク３７０は、記憶装置をローカルに接続されたものとして見せるようにその記憶装置を接続及び表示し得る。ネットワーク３７０は、サーバとネットワーク３７０の記憶装置との間のコミュニケーションのために１つ又はそれ以上の低レベルのプロトコルを使用し得る。例えば、別の実施例は、イーサネット上のＡＴＡ、ファイバ・チャネル上のＦＩＣＯＮマッピング、イーサネット上のファイバ・チャネル、ハイパＳＣＳＩ、ＲＤＭＡのためのｉＳＣＳＩ拡張（iSCSI Extensions for RDMA - ｉＳＥＲ）、ｉＦＣＰ、及び／又はiＳＣＳＩのようなプロトコルを使用し得る。
【００７６】
装置３００が仮想クライアント３２０のオペレーティング・システム及びアプリケーションを実行している間、仮想マシン・モニタ３４０は、仮想クライアント３２０が専用の物理ＨＢＡ３５０を介してネットワーク３７０の１つ又はそれ以上の記憶装置に情報を送ること及びその記憶装置から情報を受け取ることを可能にし得る。即ち、仮想マシン・モニタ３４０は、他のすべての仮想クライアントが物理ＨＢＡ３５０を利用しないようにし得る。
【００７７】
仮想マシン・モニタ３４０は、仮想Ｉ／Ｏサーバ３３０が、物理ＨＢＡ３６０を介してネットワーク３７０の１つ又はそれ以上の記憶装置に情報を送ること及びその記憶装置から情報を受け取ることも可能にし得る。仮想Ｉ／Ｏサーバ３３０は、装置３００の多くの仮想クライアントがネットワーク３７０に及びネットワーク３７０からデータを転送することを可能にし得る。
【００７８】
操作中、物理ＨＢＡ３５０は、ハードウェア問題に遭遇して仮想クライアント３２０からネットワーク３７０への専用物理パスを使用不可にすることがある。しかし、仮想クライアント３２０は、故障又は使用不可を検出して一次物理パスから１つ又はそれ以上の仮想パスに切り替わるように構成され得る。装置３００の実施例では、仮想クライアント３２０は、動的にフェイルオーバし得る、即ち、仮想Ｉ／Ｏサーバ３３０及び物理ＨＢＡ３６０によって提供されるネットワーク３７０のための仮想パスに切り替わり得る。利用不可能なパスから代替の利用可能なパスへの動的な切り替えは、装置３００のサービスの実働時間及び信頼性を増加させ得る。
【００７９】
別の配置又は構成では、仮想クライアント３２０は、仮想Ｉ／Ｏサーバ３３０及び物理ＨＢＡ３６０を介した仮想パスを一次パスとして使用し得る。装置３００の他の仮想クライアントからの搬送渋滞の結果のように仮想パスが使用不可になるときには常に、仮想クライアント３２０は物理ＨＢＡ３５０にフェイルオーバし、データをネットワーク３７０の記憶装置と交換し続け得る。
【００８０】
上記の実施例では、仮想クライアント３２０が、一次Ｉ／Ｏパスの使用不可を決定して二次Ｉ／Ｏパスに切り替わった。多くの実施例では、そのような決定及び切り替えは、マルチＩ／Ｏパス・モジュールのような仮想クライアント３２０のモジュールによって行なわれ得る。別の実施例では、使用不可の決定及び／又は切り替えは、装置３００の別の要素によって行なわれ得る。例えば、少なくとも１つの別の実施例では、仮想マシン・モニタ３４０が、ネットワーク３７０への一次、二次、及び代替Ｉ／Ｏパスに関係する情報によって構成されてもよい。言い換えれば、仮想マシン・モニタ３４０は、通常、物理ＨＢＡ３５０を介した仮想クライアント３２０のためのＩ／Ｏトランザクションを経路指定し得る。仮想マシン・モニタ３４０が物理ＨＢＡ３５０に関連したエラーを検出すべきものである場合、仮想マシン・モニタ３４０は、仮想Ｉ／Ｏサーバ３３０及び物理ＨＢＡ３６０を介したＩ／Ｏトランザクションを自動的に再経路指定することができるであろう。
【００８１】
装置３００の実施例におけるモジュールの数は変わり得る。或る実施例は、図３に示されたモジュールよりも少ないモジュールを持ち得る。例えば、１つの実施例は、開示された機能及び／又は仮想Ｉ／Ｏサーバ３３０によって遂行された機能を、仮想マシン・モニタ３４０の機能と単一のモジュール内に統合し得る。即ち、別の実施例は、種々の仮想クライアントからＩ／Ｏ要求を受け取ってその要求を適切なＩ／Ｏハードウェア資源へ経路指定することができる仮想マシン・モニタを持ち得る。
【００８２】
更なる実施例は、図３に示されたものよりも多くのモジュール又は要素を含み得る。例えば、別の実施例は、１つまたはそれ以上のマルチＩ／Ｏパス・モジュール、２つまたはそれ以上の仮想Ｉ／Ｏサーバ、及び更なる物理ＨＢＡを含み得る。更に、多くの別の実施例では、メモリ３１０は多数のメモリ・モジュールを含み得る。例えば、メモリ３１０は、サーバ・システムにおける多数のサーバに分散され得る。そのシステムのいくつかのサーバは、１つ又はそれ以上の仮想クライアント及び／または仮想Ｉ／Ｏサーバを含み得る。仮想マシン・モニタ３４０は、単一のサーバ又は多数のサーバに存在し得る。
【００８３】
図４は、システムが物理及び仮想マルチパスＩ／Ｏの動的な管理を遂行する方法を示すプロセスのフローチャート４００である。例えば、１つまたはそれ以上の実施例は、Ｉ／Ｏ要求を仮想クライアントから物理ＨＢＡに直接に経路指定するか又は、仮想Ｉ／Ｏサーバを介して物理ＨＢＡに間接的に経路指定する命令を含むコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品として具現化され得る。それとは別に、フローチャート４００のプロセスは、図１に示されたＡＳＩＣ１２４のようなＡＳＩＣの状態マシンのようなハードウェアにおいても具現化され得る。例えば、ＡＳＩＣ１２４は、物理及び仮想マルチパスＩ／Ｏ資源の多数のパスを動的に管理するために、システム１００の他のハードウェアと関連して作動する動的な物理及び仮想マルチパスＩ／Ｏモジュールを含み得る。
【００８４】
図４に示されるように、プロセスは、仮想マシン・モニタを初期化すること、１つまたはそれ以上の仮想Ｉ／Ｏサーバをロードすること、及びＨＢＡに対する識別番号を要求することを含み得る（要素４１０）。例えば、装置２００は、仮想マシン・モニタ２５０をメモリ・モジュール２６４にロードし、仮想マシン・モニタ２５０を初期化し、仮想Ｉ／Ｏサーバ２１０をメモリ・モジュール２６４にロードし、ＳＡＮスイッチ２６０および２９０からのファイバ・チャネル・カード２５４、２５８、及び２８２に対するＮＰＩＶ及びＷＷＰＮ番号を要求し得る。
【００８５】
次に装置２００は、１つまたはそれ以上の仮想クライアントをロードし、専用のＨＢＡを関連付けるか又は割り当て、そして、ロードされたモジュールの構成に基づいて仮想ＨＢＡを割り当て得る（要素４２０）。例えば、装置２００は、Ｌｉｎｕｘクライアント２３０及びＡＩＸクライアント２３５をメモリ・モジュール２６４の論理パーティションにロードし、ファイバ・チャネル・カード２８２を物理ファイバ・チャネルＨＢＡドライバ２４４に対して専用化し、ファイバ・チャネル・カード２５４及び２５８を、それぞれ、ＮＰＩＶアダプタ・ドライバ２２５及び２２３を介してＡＩＸクライアント２３５に割り当て得る。しかる後、装置２００は、Ｌｉｎｕｘクライアント２３０及びＡＩＸクライアント２３５のオペレーティング・システムの実行並びにそれぞれの論理パーティションにロードされた種々のアプリケーションの実行を開始し得る（要素４３０）。
【００８６】
装置２００がＡＩＸクライアント２３５を実行するとき、マルチパスのＩ／Ｏモジュール２４０は、物理ファイバ・チャネルＨＢＡドライバ２４４とＮＰＩＶアダプタ・ドライバ２４３との間でＩ／Ｏ負荷を分散させるように構成され得る（要素４４０）。操作中、マルチパスＩ／Ｏモジュール２４０は、ファイバ・チャネル・カード２５８、物理ファイバ・チャネルＨＢＡドライバ２２０、ＮＰＩＶアダプタ・ドライバ２２３、及びＮＰＩＶアダプタ・ドライバ２４４に影響を与えるＳＡＮスイッチ２６０の故障を検出し（要素４５０）、ＮＰＩＶアダプタ・ドライバ２４２、ＮＰＩＶアダプタ・ドライバ２２５、物理ファイバ・チャネルＨＢＡドライバ２１５、及びファイバ・チャネル・カード２５４によって定義された仮想Ｉ／Ｏパス、に切り替わり得る（要素４７０）。
【００８７】
技術者が、ファイバ・チャネル・カード２５８に関連したＳＡＮスイッチ２６０の問題を改善した後、マルチパスＩ／Ｏモジュール２４０は、ファイバ・チャネル・カード２５８の仮想パスがオンラインに戻るか又は開始するということを検出し（要素４６０）、新たに使用可能であるファイバ・チャネル・カード２５８がＡＩＸクライアント２３５に対する二次パスになるように構成されるということを検出し（要素４８０）、ＮＰＩＶアダプタ・ドライバ２４３、ＮＰＩＶアダプタ・ドライバ２２３、物理ファイバ・チャネルＨＢＡドライバ２２０及びファイバ・チャネル・カード２５８によって定義された仮想Ｉ／Ｏパスに戻るように切り替わり得る（要素４９０）。
【００８８】
図４のフローチャート４００は１つのプロセスだけを示す。別の実施例は、フローチャート４００の無数の変更を具現化し得る。例えば、ファイバ・チャネル・カード２５８に関連した単一故障を検出することに加えて、マルチパスＩ／Ｏモジュール２４０は、ＳＡＮスイッチ２６０の故障が、ファイバ・チャネル・カード２５４に関連する故障を生じさせたということを検出し、ＮＰＩＶアダプタ・ドライバ２４２に関連したフェイルオーバ仮想Ｉ／Ｏパスを使用不可にし得る（要素４５０）。従って、マルチパスＩ／Ｏモジュール２４０は、仮想Ｉ／Ｏサーバ２１０の別の仮想ポートのためのものであった次の使用可能な仮想Ｉ／Ｏパスに、又は別の仮想Ｉ／Ｏサーバに関連した異なる物理ファイバ・チャネル・カードのための異なる仮想ポートに、切り替わるように構成されてもよい（要素４７０）。
【００８９】
図５は、物理及び仮想マルチパスＩ／Ｏを動的に管理するための方法のフローチャート５００を示す。例えば、図２に示された装置２００の別の実施例は、仮想Ｉ／Ｏサーバ２１０に結合されたファイバ・チャネル・カード又はＨＢＡに関連した１つの仮想Ｉ／Ｏパス、及び異なる仮想Ｉ／Ｏサーバに結合されたiＳＣＳＩＨＢＡに関連した別の仮想Ｉ／Ｏパスを持ち得る。言い換えれば、装置２００の別の実施例は、２つの仮想Ｉ／Ｏサーバ、即ち、ファイバ・チャネルＨＢＡと連結されたもの及びＳＣＳＩ  ＨＢＡと連結されたものを持ち得る。
【００９０】
装置２００の別の実施例が作動するとき、仮想マシン・モニタ２５０は、ＡＩＸクライアント２３５がＳＡＮ２７０の１つ又はそれ以上の記憶装置の間で、iＳＣＳＩ  ＨＢＡによって定義された仮想Ｉ／Ｏパスを介してデータを転送することを可能にし得る（要素５１０）。更に装置２００が作動するとき、仮想マシン・モニタ２５０は、装置２００のＬｉｎｕｘクライアント２３０及び他の仮想クライアントが仮想Ｉ／Ｏサーバ２１０を介してＳＡＮ２７０へ及びＳＡＮ２７０からデータを転送することを可能にし得る（要素５２０）。
【００９１】
装置２００の操作中、マルチパスＩ／Ｏモジュール２４０は、ＨＢＡ、ネットワーク・スイッチ、又はファイバ・チャネル・カード２８２に結合されたストレージ・エリア・ネットワークの記憶装置によって報告されたすべてのエラーの監視ようなＡＩＸクライアント２３５に関連した物理及び仮想Ｉ／Ｏデータ・パスのステータス、仮想Ｉ／Ｏサーバ２１０に結合されたファイバ・チャネルＨＢＡのステータス、及び別の仮想Ｉ／Ｏサーバに結合されたiＳＣＳＩＨＢＡのステータスを監視し得る（要素５３０）。例えば、iＳＣＳＩカード又はＨＢＡに結合された記憶装置は、ＡＩＸクライアント２３５の試みられたＩ／Ｏトランザクションに関連したＩ／Ｏエラーを返送することがある。エラー又は故障の検出に応答して（要素５４０）、マルチパスＩ／Ｏモジュール２４０は、故障したiＳＣＳＩＨＢＡ及び仮想Ｉ／Ｏサーバに関連した仮想データ・パスを二次仮想Ｉ／Ｏサーバ及びファイバ・チャネルＨＢＡに切り替え得る（要素５５０）。
【００９２】
フローチャート５００の実施例は、マルチパスＩ／Ｏモジュール２４０をファイバ・チャネルＨＢＡに関連した仮想データ・パスから、代替のＨＢＡとして構成された専用の物理ＨＢＡに切り替えさせることによって継続し得る（要素５６０）。マルチパスＩ／Ｏモジュール２４０は、iＳＣＳＩ  ＨＢＡ及びファイバ・チャネルＨＢＡのようなＡＩＸクライアント２３５のために構成された物理及び仮想Ｉ／Ｏデータ・パスのステータスをモニタし続け得る。以前に故障した装置がオンラインに戻る場合及び／又は戻るとき、マルチパスＩ／Ｏモジュール２４０は使用可能性の変化を検出し、ＡＩＸクライアント２３５のための関連したＩ／Ｏデータ・パスを新たに利用可能になったＨＢＡに切り替え得る。例えば、以前にＩ／Ｏエラーを返送されたiＳＣＳＩ  ＨＢＡに結合された記憶装置は、その装置が通常の動作を再開したという信号を送り得るし、その際、マルチパスＩ／Ｏモジュール２４０は、代替の専用の物理ＨＢＡから、iＳＣＳＩ  ＨＢＡに関連した仮想Ｉ／Ｏパスに切り替わり得る（要素５７０）。
【００９３】
別の実施例は、図１〜図５に関連して説明したシステム、方法、及び装置を具現化するためのコンピュータ・プログラムとして実施される。実施例は、ハードウェア要素及びソフトウェア要素の両方を含み得る。１つの実施例は、ソフトウェアにおいて具現化され得るし、ファームウェア、駐在のソフトウェア、マイクロコード等を含み得るがそれらに限定されない。
【００９４】
更に、実施例は、コンピュータ又は任意の命令実行システムによって、又はそれらに関連して使用するためのプログラム・コードを提供するコンピュータ使用可能媒体又はコンピュータ可読媒体からアクセスし得るコンピュータ・プログラムの形式を取り得る。種々の実施例を説明するために、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、装置、又はデバイスによって、又はそれらに関連して使用するためのプログラムを内蔵し、格納し、伝達し、伝播し、又は搬送し得る任意の装置であってもよい。
【００９５】
その媒体は、電子的、磁気的、光学的、電磁気的、赤外線、又は半導体システム（もしくは装置もしくはデバイス）媒体であってもよい。コンピュータ可読媒体の例は、半導体メモリもしくはソリッド・ステート・メモリ、磁気テープ、取り外し可能なフロッピ・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、固定磁気ディスク、及び光ディスクを含む。光ディスクの現用の例は、コンパクト・ディスク−リード・オンリ・メモリ（ＣＤ-ＲＯＭ）、コンパクト・ディスク読取り/書込み（ＣＤ−Ｒ／Ｗ）、またはＤＶＤを含む。
【００９６】
プログラム・コードを格納及び／又は実行するに適したデータ処理システムは、システムバスを介してメモリ素子に直接又は間接的に結合された少なくとも１つのプロセッサを含み得る。メモリ素子は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、及び、実行中にプログラム・コードが大容量記憶装置から検索される回数を減らすために少なくとも幾つかのプログラム・コードの一時的記憶装置を提供するキャッシュ・メモリを含み得る。入出力装置、即ち、Ｉ／Ｏ装置（キーボード、ディスプレイ、ポインティング装置等を含むが、それらに限定されない）は、直接に又は介在するＩ／Ｏコントローラを介してシステムに結合され得る。
【００９７】
この開示の利益を受ける当業者は、この開示が物理及び仮想マルチパスＩ／Ｏの動的な管理を意図するということを実感するであろう。詳細な説明及び図面において示された実施例の形式は、単に例として解されるべきである。「特許請求の範囲」は、開示された実施例の変形をすべて包含するように広く解釈されることを意図している。
【００９８】
本発明及びその利点の幾つかを幾つかの実施例に関して詳細に説明したが、「特許請求の範囲」によって定義される本発明の主旨及び範囲から逸脱することなく、様々な変形、代用及び変更を行い得るということは当業者には明らかであろう。特定の実施例は多くの目的を達成し得るが、「特許請求の範囲」の記載の範囲内にあるすべての実施例がすべての目的を達成するとは限らない。更に、本発明の範囲は、本明細書に記載されたプロセス、マシン、製造物、合成物、手段、方法、及びステップの特定の実施例に限定されるようには意図されない。本発明の開示から当業者には容易に明らかであるように、本明細書に開示された対応する実施例と実質的に同じ機能を遂行し、或いは実質的に同じ結果を達成する現存の又は今後開発されるべきプロセス、マシン、製造物、合成物、手段、方法、又はステップが利用され得る。従って、「特許請求の範囲に」の記載は、そのようなプロセス、マシン、製造物、合成物、手段、方法、又はステップをそれらの範囲内に含むことを意図する。
【図１】
2010113707.tif 000003
【図２】
2010113707.tif 000004
【図３】
2010113707.tif 000005
【図４】
2010113707.tif 000006
【図５】
2010113707.tif 000007