(57)【特許請求の範囲】
【請求項１】
データ処理システムにおいて、ネットワークへのアクセスを変更する方法であって、
特定された通信アダプタがアテンションを必要とするというインジケーションを、前記データ処理システムの仮想Ｉ／Ｏサーバ・オペレーティング・システム内の仮想Ｉ／Ｏサーバ・コントローラによって受信するステップと、
前記仮想Ｉ／Ｏサーバ・コントローラによって、一連のコールを、前記特定された通信アダプタに結合されている一連のＮ＿ｐｏｒｔ識別仮想化（ＮＰＩＶ）サーバ・アダプタへ発行するステップであって、前記一連のコールはそれぞれ、一連のクライアントを、前記特定された通信アダプタ上の割り当てられているポートからフェイルオーバ通信アダプタ上の利用可能なポートへ移すリクエストを、前記一連のサーバ・アダプタそれぞれに対して示す、前記ステップと、
前記一連のＮＰＩＶサーバ・アダプタによって、前記一連のクライアントを、前記特定された通信アダプタから前記フェイルオーバ通信アダプタへ移すステップと、
を含み、
前記一連のクライアントのうちの各クライアントを、前記特定された通信アダプタから前記フェイルオーバ通信アダプタへ移すステップは、
接続性が一時的に失われたことを示す第１のイベント信号を、前記一連のサーバ・アダプタのうちの関連するＮＰＩＶサーバ・アダプタによって前記クライアントに送信するステップと、
前記特定された通信アダプタが前記クライアントの既存の接続を切断することをリクエストするコマンドを、前記特定された通信アダプタに、前記関連するＮＰＩＶサーバ・アダプタによって送信するステップと、
前記特定された通信アダプタが前記既存の接続を切断したという確認応答を、前記関連するＮＰＩＶサーバ・アダプタによって受信するステップと、
前記クライアントの新たな接続をリクエストする接続コマンドを、前記フェイルオーバ通信アダプタに、前記関連するＮＰＩＶサーバ・アダプタによって送信するステップと、
前記フェイルオーバ通信アダプタが前記新たな接続を確立したという確認応答を、前記関連するＮＰＩＶサーバ・アダプタによって受信するステップと、
接続性が再確立されたことを示す第２のイベント信号を、前記関連するＮＰＩＶサーバ・アダプタによって前記クライアントに送信するステップと、
をさらに含む、前記方法。
【請求項２】
特定された通信アダプタが回復したというインジケーションを、前記仮想Ｉ／Ｏサーバ・コントローラによって受信するステップと、
前記仮想Ｉ／Ｏサーバ・コントローラによって、後続の一連のコールを、前記一連のＮＰＩＶサーバ・アダプタへ発行するステップであって、前記後続の一連のコールはそれぞれ、一連のクライアントを、前記フェイルオーバ通信アダプタ上の割り当てられているポートから、前記特定された通信アダプタ上の利用可能なポートへ移すリクエストを、前記一連のＮＰＩＶアダプタそれぞれに対して示す、前記ステップと、
前記一連のＮＰＩＶサーバ・アダプタによって、前記一連のクライアントを、前記フェイルオーバ通信アダプタから、前記特定された通信アダプタへ移すステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記特定された通信アダプタがアテンションを必要とするという前記インジケーションは、前記特定された通信アダプタがワークロード・バランシングを必要とするということを特定し、前記通信アダプタの前記ワークロードのバランシングは、
前記特定された通信アダプタとのワークロード・バランシングを実行する、１つ以上のさらなる通信アダプタを、前記仮想Ｉ／Ｏサーバ・コントローラによって決定するステップと、
前記特定された通信アダプタに接続されている前記一連のクライアントのうち、前記特定された通信アダプタから前記１つ以上のさらなる通信アダプタへ移すサブセットを、前記仮想Ｉ／Ｏサーバ・コントローラによって特定するステップと、
前記仮想Ｉ／Ｏサーバ・コントローラによって、一連のワークロード・バランシング・コールを、前記特定された通信アダプタおよび前記１つ以上のさらなる通信アダプタに結合された一連のＮＰＩＶサーバ・アダプタへ発行するステップであって、前記一連のワークロード・バランシング・コールは、前記一連のクライアントのうちの前記サブセットを、前記特定された通信アダプタ上の割り当てられているポートから前記１つ以上のさらなる通信アダプタへ移すリクエストを、前記一連のＮＰＩＶサーバ・アダプタに対して示す、前記ステップと、
前記一連のＮＰＩＶサーバ・アダプタによって、前記一連のクライアントのうちの前記サブセットを、前記特定された通信アダプタから前記１つ以上のさらなる通信アダプタへ移すステップと、
を含む、請求項１または２に記載の方法。
【請求項４】
コンピュータ可読プログラムが記録されているコンピュータ記録可能媒体であって、前記コンピュータ可読プログラムは、コンピューティング・デバイス上で実行されると、前記コンピューティング・デバイスに、請求項１〜３のいずれか１つに記載の方法の各ステップを実行させる、コンピュータ記録可能媒体。
【請求項５】
コンピューティング・デバイス上で実行されると、前記コンピューティング・デバイスに、請求項１〜３のいずれか１つに記載の方法の各ステップを実行させる、コンピュータ可読プログラム。
【請求項６】
プロセッサと、
前記プロセッサに結合されたメモリと、
を含む装置であって、
前記メモリは、命令を含み、前記命令は、前記プロセッサによって実行されると、前記プロセッサに、
特定された通信アダプタがアテンションを必要とするというインジケーションを受信すること、
前記特定された通信アダプタに結合されている一連のＮ＿ｐｏｒｔ識別仮想化（ＮＰＩＶ）サーバ・アダプタへ、一連のコールを発行することであって、前記一連のコールはそれぞれ、一連のクライアントを、前記特定された通信アダプタ上の割り当てられているポートからフェイルオーバ通信アダプタ上の利用可能なポートへ移すリクエストを、前記一連のＮＰＩＶサーバ・アダプタそれぞれに対して示す、前記発行すること、および
前記一連のクライアントを、前記特定された通信アダプタから前記フェイルオーバ通信アダプタへ移すこと
を行わせ、
前記一連のクライアントのうちの各クライアントを、前記特定された通信アダプタから前記フェイルオーバ通信アダプタへ移すための前記命令は、前記プロセッサにさらに、
接続性が一時的に失われたことを示す第１のイベント信号を前記クライアントに送信すること、
前記特定された通信アダプタが前記クライアントの既存の接続を切断することをリクエストするコマンドを、前記特定された通信アダプタに送信すること、
前記特定された通信アダプタが前記既存の接続を切断したという確認応答を受信すること、
前記クライアントの新たな接続をリクエストする接続コマンドを、前記フェイルオーバ通信アダプタに送信すること、
前記フェイルオーバ通信アダプタが前記新たな接続を確立したという確認応答を受信すること、および
接続性が再確立されたことを示す第２のイベント信号を、前記クライアントに送信すること
を行わせる、装置。
【請求項７】
前記命令は、前記プロセッサにさらに、
特定された通信アダプタが回復したというインジケーションを受信すること、
後続の一連のコールを、前記一連のＮＰＩＶサーバ・アダプタへ発行することであって、前記後続の一連のコールはそれぞれ、一連のクライアントを、前記フェイルオーバ通信アダプタ上の割り当てられているポートから、前記特定された通信アダプタ上の利用可能なポートへ移すリクエストを、前記一連のＮＰＩＶサーバ・アダプタそれぞれに対して示す、前記発行すること、および
前記一連のクライアントを、前記フェイルオーバ通信アダプタから、前記特定された通信アダプタへ移すこと
を行わせる、請求項６に記載の装置。
【請求項８】
前記特定された通信アダプタがアテンションを必要とするという前記インジケーションは、前記特定された通信アダプタがワークロード・バランシングを必要とするということを特定し、前記通信アダプタの前記ワークロードのバランシングを行うための前記命令は、前記プロセッサにさらに、
前記特定された通信アダプタとのワークロード・バランシングを実行する、１つ以上のさらなる通信アダプタを決定すること、
前記特定された通信アダプタに接続されている前記一連のクライアントのうち、前記特定された通信アダプタから前記１つ以上のさらなる通信アダプタへ移すサブセットを特定すること、
一連のワークロード・バランシング・コールを、前記特定された通信アダプタおよび前記１つ以上のさらなる通信アダプタに結合された一連のＮＰＩＶサーバ・アダプタへ発行することであって、前記一連のワークロード・バランシング・コールは、前記一連のクライアントのうちの前記サブセットを、前記特定された通信アダプタ上の割り当てられているポートから前記１つ以上のさらなる通信アダプタへ移すリクエストを、前記一連のＮＰＩＶサーバ・アダプタに対して示す、前記発行すること、および
前記一連のクライアントのうちの前記サブセットを、前記特定された通信アダプタから前記１つ以上のさらなる通信アダプタへ移すこと、
を行わせる、請求項６または７に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的に、改善されたデータ処理装置および方法に関し、特に、ファイバ・チャネル・ファブリックへのアクセスを管理する装置および方法に関する。
【背景技術】
【０００２】
Ｎ＿Ｐｏｒｔ  ＩＤ仮想化（ＮＰＩＶ：Ｎ＿Ｐｏｒｔ  ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  ｖｉｒｔｕａｌｉｚａｔｉｏｎ）は、単一のファイバ・チャネル・ホスト・バス・アダプタ（ＨＢＡ：ｈｏｓｔ  ｂｕｓ  ａｄａｐｔｅｒ）が、複数のワールドワイド・ポート・ネーム（ＷＷＰＮ：ｗｏｒｌｄｗｉｄｅ  ｐｏｒｔ  ｎａｍｅ）をファブリック・ネーム・サーバに登録できるようにする。ワールドワイド・ポート・ネームは、ファイバ・チャネル・ネットワークにおける固有ネームである。ワールドワイド・ポート・ネームがファブリックに接続するとき、登録される各ワールドワイド・ポート・ネームには、ノード・ポート（Ｎ＿Ｐｏｒｔ）ＩＤなどの固有識別子が割り当てられる。Ｎ＿Ｐｏｒｔ  ＩＤ仮想化では、ファイバ・チャネル・ファブリックにおいて、単一のファイバ・チャネルＨＢＡが複数のワールドワイド・ポート・ネームとして見えることもある。ＮＰＩＶを提供する各ＮＰＩＶサーバ・アダプタは、１つ以上のファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ：Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  ｈｏｓｔ  ｂｕｓ  ａｄａｐｔｅｒ）を介してファイバ・チャネル・ネットワークに接続する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ＦＣ  ＨＢＡは、ファイバ・チャネル・ファブリックを介して、ホスト・システムの、他のネットワークおよびストレージ・デバイスへの接続を提供する。
【課題を解決するための手段】
【０００４】
本発明の様々な側面が、添付の特許請求の範囲において定義される。以下、それが参照されるべきである。
【０００５】
例示の一実施形態では、データ処理システムにおいて、ネットワークへのアクセスを変更する方法が提供される。例示の実施形態は、特定された通信アダプタがアテンション（ａｔｔｅｎｔｉｏｎ）を必要とするというインジケーション（ｉｎｄｉｃａｔｉｏｎ）を受信する。例示の実施形態は、一連のコールを、特定された通信アダプタに結合されている一連のＮ＿ｐｏｒｔ識別仮想化（ＮＰＩＶ）サーバ・アダプタへ発行する。例示の実施形態では、一連のコールはそれぞれ、一連のクライアントを、特定された通信アダプタ上の割り当てられているポートからフェイルオーバ通信アダプタ上の利用可能なポートへ移すリクエストを、一連のＮＰＩＶサーバ・アダプタそれぞれに対して示す。例示の実施形態は、一連のクライアントを、特定された通信アダプタからフェイルオーバ通信アダプタへ移す。
【０００６】
他の例示の実施形態では、コンピュータ可読プログラムを有するコンピュータ使用可能または可読媒体を含むコンピュータ・プログラム製品が提供される。コンピュータ可読プログラムは、コンピューティング・デバイス上で実行されると、コンピューティング・デバイスに、本方法の例示の実施形態に関して上記に要点を記載した動作のうちの様々な動作、またはその組み合わせを実行させる。
【０００７】
さらに別の例示の実施形態では、システム／装置が提供される。システム／装置は、１つ以上のプロセッサと、この１つ以上のプロセッサに結合されたメモリとを含むとよい。メモリは、この１つ以上のプロセッサにより実行されると、この１つ以上のプロセッサに、本方法の例示の実施形態に関して上記に要点を記載した動作のうちの様々な動作、およびその組み合わせを実行させる命令を含むとよい。
【０００８】
本発明のこれらの特徴および利点、ならびに他の特徴および利点が、以下の本発明の例示実施形態の詳細な説明に記載されるか、またはそれを考慮することで当業者には明らかとなる。
【０００９】
例示の実施形態の以下の詳細な説明を、添付の図面と併せて読み、参照することで、本発明、ならびにその好適な使用方法、ならびにさらなる目的および利点が最もよく理解される。
【図面の簡単な説明】
【００１０】
【図１】例示の実施形態の側面が実装され得る例示分散型データ処理システムの図的表現を示す。
【図２】例示の実施形態の側面が実装され得る例示データ処理システムのブロック図を示す。
【図３】例示の実施形態による、仮想化された環境を備えるデータ処理システムを示す、例示的なブロック図を示す。
【図４】例示の実施形態による仮想化された環境を備える、図３のデータ処理システム３００などのデータ処理システムを示す、簡略化された例示的なブロック図を示す。
【図５】例示の実施形態による、ＦＣ  ＨＢＡの例示的な障害またはメンテナンスを示す。
【図６】例示の実施形態による、ＦＣ  ＨＢＡの例示的な障害からの回復またはメンテナンスの成功を示す。
【図７】例示の実施形態による、一連のファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）間での例示的なワークロード・バランシング（ｗｏｒｋｌｏａｄ  ｂａｌａｎｃｉｎｇ）を示す。
【図８】例示の実施形態による、ファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）の障害またはメンテナンス中に、データ処理システムの仮想入出力サーバ（ＶＩＯＳ：ｖｉｒｔｕａｌ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｅｒｖｅｒ）オペレーティング・システムにより実行される動作の、例示的なフローチャートを示す。
【図９】例示の実施形態による、ファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）の障害からの回復またはメンテナンス中に、データ処理システムの仮想入出力サーバ（ＶＩＯＳ）オペレーティング・システムにより実行される動作の、例示的なフローチャートを示す。
【図１０】例示の実施形態による、一連のファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）間のワークロード・バランシングのために、データ処理システムの仮想入出力サーバ（ＶＩＯＳ）オペレーティング・システムにより実行される動作の、例示的なフローチャートを示す。
【発明を実施するための形態】
【００１１】
ファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）のハードウェアのメンテナンスまたは交換を行うとき、ワークロードを１つのＦＣ  ＨＢＡから別のＦＣ  ＨＢＡへ移すとき、またはワークロードをＦＣ  ＨＢＡ上の１つのポートから同じＦＣ  ＨＢＡ上の別のポートへ移すときには、多数の問題が生じる。こうした動作を実行するための既知のソリューションは、通常、冗長ハードウェアまたは管理者からの手動介入、あるいはその両方を必要とする。さらに、ＦＣ  ＨＢＡのメンテナンスまたは交換を行うために、管理者は、関係するＦＣ  ＨＢＡのターゲットそれぞれへのアクセスを必要とする。すなわち、ＦＣ  ＨＢＡ上のポートのワールドワイド・ポート・ネーム（ＷＷＰＮ）を、クライアントがアクセス可能なターゲット・ポートにマップするために、管理者の関与が必要とされる。
【００１２】
例示の実施形態は、同じ問題を、最小限のハードウェアまたは管理者の関与、あるいはその両方により解決するために、Ｎ＿ｐｏｒｔ識別仮想化（ＮＰＩＶ）を使用するメカニズムを提供する。ＮＰＩＶは、複数のクライアントが１つの物理的なファイバ・チャネル・ポートを使用できるようにし、各クライアントに固有ワールドワイド・ポート・ネーム（ＷＷＰＮ）が割り当てられる。例示の実施形態は、仮想Ｉ／Ｏ（ｉｎｐｕｔ／ｏｕｔｐｕｔ：入出力）サーバ（ＶＩＯＳ）をコントローラとして使用する。しかし、他の種類の手段、またはＶＭｗａｒｅ（Ｒ）およびＸｅｎ（ＴＭ）など、仮想マシン・マネージャ（ＶＭＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍａｎａｇｅｒ）も使用され得る。ＶＩＯＳは、仮想化レイヤを介して複数の物理的なファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）と通信し、仮想化レイヤは、複数のワールドワイド・ポート・ネームを使用して仮想ＦＣ  ＨＢＡを提示する。各クライアントのオペレーティング・システムは、仮想ＮＰＩＶアダプタを利用して、ＶＩＯＳ内のＮＰＩＶサーバ・アダプタを介し仮想ＦＣ  ＨＢＡ上の１つ以上のポートに接続する。ＶＩＯＳは、物理的なＦＣ  ＨＢＡポートから受信された適切なファブリック・イベントを、各クライアントへ、その仮想ＮＰＩＶアダプタを介して転送すること、または各クライアントに関してファイバ・チャネル・トランザクションをキューに入れること、あるいはその両方を行うこともできる。例示の実施形態は、ＦＣ  ＨＢＡ障害、ＦＣ  ＨＢＡのメンテナンス、２つ以上のＦＣ  ＨＢＡ間のワークロード・バランシング、または同様の場合に、割り当てられたＦＣ  ＨＢＡポートから別のＦＣ  ＨＢＡポートにクライアントＮＰＩＶアダプタをマップするために、ＶＩＯＳを使用する。
【００１３】
当業者であれば当然のことであるが、本発明は、システム、方法またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または本願明細書においてすべて一般に「回路」、「モジュール」または「システム」と呼ばれ得る、ソフトウェアおよびハードウェアの側面を兼ね備えた実施形態の形態をとり得る。さらに、本発明は、任意の有形の表現媒体に具現化されたコンピュータ使用可能プログラム・コードを有する該媒体において具現化されたコンピュータ・プログラム製品の形態をとり得る。
【００１４】
１つ以上のコンピュータ使用可能またはコンピュータ可読媒体（単数または複数）の任意の組み合わせが利用され得る。コンピュータ使用可能またはコンピュータ可読媒体は、例えば、次に限定はされないが、電子、磁気、光学、電磁気、赤外線、または半導体システム、装置、デバイス、または伝播媒体とすることもできる。コンピュータ可読媒体のより具体的な例（包括的でないリスト）は、１つ以上のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）もしくはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光学式ストレージ・デバイス、インターネットもしくはイントラネットをサポートする伝送媒体などの伝送媒体、または磁気ストレージ・デバイスを含むであろう。なお、プログラムは、例えば紙または他の媒体の光学式走査により電子的に獲得され、続いて必要に応じコンパイル、解釈、または適切な方法により別の形で処理され、続いてコンピュータ・メモリに記憶されることが可能なため、コンピュータ使用可能またはコンピュータ可読媒体は、プログラムが印刷される紙または別の適切な媒体とすることさえもできる。この文書の文脈では、コンピュータ使用可能またはコンピュータ可読媒体は、命令実行システム、装置またはデバイスによって、またはそれに関連して使用されるプログラムを含むこと、記憶すること、伝達すること、伝播させること、または搬送することができる任意の媒体とするとよい。コンピュータ使用可能媒体は、ベースバンドに、または搬送波の一部として伝播データ信号により具現化されたコンピュータ使用可能プログラム・コードを備える伝播データ信号を含み得る。コンピュータ使用可能プログラム・コードは、次に限定はされないが、無線、有線、光ファイバ・ケーブル、無線周波数（ＲＦ：ｒａｄｉｏ  ｆｒｅｑｕｅｎｃｙ）などを含め、任意の適切な媒体を使用して伝送されるとよい。
【００１５】
本発明の動作を実行するコンピュータ・プログラム・コードは、Ｊａｖａ（ＴＭ）、Ｓｍａｌｌｔａｌｋ（ＴＭ）、Ｃ＋＋または同様のものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは同様のプログラミング言語などの従来の手続きプログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで書かれることができる。プログラム・コードは、スタンド・アロン・ソフトウェア・パッケージとして、完全にユーザのコンピュータ上で実行されること、部分的にユーザのコンピュータ上で実行されること、または部分的にユーザのコンピュータ上で、かつ部分的にリモート・コンピュータ上で実行されること、または完全にリモート・コンピュータもしくはサーバ上で実行されることもできる。後者のシナリオでは、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）もしくは広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介してリモート・コンピュータがユーザのコンピュータに接続されても、または、外部コンピュータに接続されてもよい（例えば、インターネット・サービス・プロバイダを使用しインターネットを介して）。さらに、プログラム・コードは、サーバまたはリモート・コンピュータ上のコンピュータ可読ストレージ媒体上で具現化され、ネットワークによってリモート・コンピュータのコンピュータ可読ストレージ媒体またはユーザのコンピュータに、記憶または実行、あるいはその両方のためにダウンロードされることもできる。さらに、コンピューティング・システムまたはデータ処理システムのいずれかは、リモート・コンピューティング・システムまたはデータ処理システムからネットワークによってプログラム・コードをダウンロードした後に、コンピュータ可読ストレージ媒体にプログラム・コードを記憶することもできる。
【００１６】
例示の実施形態は、本発明の例示の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して、以下に記載される。当然のことながら、フローチャート図またはブロック図、あるいはその両方の各ブロック、およびフローチャート図またはブロック図、あるいはその両方の複数ブロックの組み合わせは、コンピュータ・プログラム命令により実装されることが可能である。当該コンピュータ・プログラム命令が、マシンを生じるよう、汎用コンピュータ、専用コンピュータ、またはその他のプログラム可能データ処理装置のプロセッサに提供されて、この命令が、コンピュータまたはその他のプログラム可能データ処理装置のプロセッサにより実行されて、フローチャートまたはブロック図あるいはその両方のブロックまたは複数ブロックにおいて指定された機能／動作を実装する手段を作り出すようにすることもできる。
【００１７】
特定の形で機能するようコンピュータまたはその他のプログラム可能データ処理装置に指示することができる当該コンピュータ・プログラム命令はさらに、コンピュータ可読媒体に記憶されて、コンピュータ可読媒体に記憶されたこの命令が、フローチャートまたはブロック図あるいはその両方のブロックもしくは複数ブロックにおいて指定された機能／動作を実装する命令手段を含む製品を生じるようにすることもできる。
【００１８】
コンピュータ・プログラム命令はさらに、コンピュータまたはその他のプログラム可能データ処理装置にロードされて、コンピュータまたはその他のプログラム可能装置上で一連の動作ステップが実行されるようにし、コンピュータに実装されるプロセスを生じさせ、コンピュータまたはその他のプログラム可能装置上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックもしくは複数ブロックにおいて指定された機能／動作を実装するためのプロセスを提供するようにすることもできる。
【００１９】
各図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の考えられる実装のアーキテクチャ、機能性および動作を示す。この関連で、フローチャートまたはブロック図内の各ブロックは、指定の論理機能（単数または複数）を実装する１つ以上の実行可能命令を含むモジュール、セグメント、またはコードの一部を表すこともできる。なお、さらに、いくつかの代わりの実装では、ブロック内に示されている機能が、図面に示されているのとは異なる順序で生じてもよい。例えば、関連する機能性次第で、連続して示されている２つのブロックが実際には事実上同時に実行されてもよく、または、各ブロックが時々逆順で実行されてもよい。なお、さらに、ブロック図またはフローチャート図、あるいはその両方の各ブロック、およびブロック図またはフローチャート図、あるいはその両方の複数ブロックの組み合わせは、規定の機能または動作を実行する専用ハードウェア・ベース・システム、または専用ハードウェアおよびコンピュータ命令の組み合わせにより実装することができる。
【００２０】
したがって、例示の実施形態は、分散型データ処理環境、単一のデータ処理デバイス、または同様のものを含む、多数の異なるタイプのデータ処理環境において利用され得る。例示の実施形態の具体的な構成要素および機能性を説明するための文脈を提供するために、以下、例示の実施形態の側面が実装されるとよい例示環境として、図１および２が提供される。図１および２に続く説明は、主として、ファイバ・チャネル・ファブリックへのアクセスを変更する単一のデータ処理デバイスの実装に焦点を当てるが、これは例でしかなく、本発明の特徴に関していかなる制限を提示することも、暗示することも目的としていない。反対に、例示の実施形態は、ファイバ・チャネル・ファブリックへのアクセスが変更され得る分散型データ処理環境および実施形態を含むものとする。
【００２１】
以下、図面、特に図１〜２を参照する。本発明の例示の実施形態が実装されるとよいデータ処理環境の例示図が提供されている。当然のことながら、図１〜２は例でしかなく、本発明の側面または実施形態が実装され得る環境に関していかなる制限を主張することも暗示することも目的としていない。示される環境に対する多数の変更が、本発明の意図および範囲から逸脱することなく加えられ得る。
【００２２】
以下、図面を参照する。図１は、例示の実施形態の側面が実装され得る例示分散型データ処理システムの図的表現を示す。分散型データ処理システム１００は、例示の実施形態の側面が実装され得るコンピュータのネットワークを含むとよい。分散型データ処理システム１００は、少なくとも１つのネットワーク１０２を含み、ネットワーク１０２は、分散型データ処理システム１００内で接続されている様々なデバイスおよびコンピュータ間の通信リンクを提供するために使用される媒体である。ネットワーク１０２は、有線、無線、通信リンク、または光ファイバ・ケーブルなどの接続を含むとよい。
【００２３】
示されている例では、ストレージ・ユニット１０８に加えて、サーバ１０４およびサーバ１０６がネットワーク１０２に接続されている。さらに、クライアント１１０、１１２および１１４もネットワーク１０２に接続されている。これらのクライアント１１０、１１２および１１４は、例えばパーソナル・コンピュータ、ネットワーク・コンピュータ、または同様のものであればよい。示されている例では、サーバ１０４が、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータをクライアント１１０、１１２および１１４に提供する。クライアント１１０、１１２および１１４は、示されている例において、サーバ１０４のクライアントである。分散型データ処理システム１００は、示されていない追加のサーバ、クライアント、およびその他のデバイスを含んでもよい。
【００２４】
示されている例では、分散型データ処理システム１００は、ネットワーク１０２を備えるインターネットであり、ネットワーク１０２は、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ：Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）プロトコル・スイートを使用して相互に通信するネットワークおよびゲートウェイの世界的な集合を表す。インターネットの中心には、データおよびメッセージをルーティングする数千の商用、政府機関用、教育用、およびその他のコンピュータ・システムから成る主要ノードまたはホスト・コンピュータ間の、高速データ通信回線のバックボーンがある。当然、分散型データ処理システム１００は、例えばイントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、または同様のものなど、いくつかの異なるタイプのネットワークを含むよう実装されることもできる。上記のように、図１は、本発明の種々の実施形態のアーキテクチャ上の制限としてではなく、例として意図されたものである。したがって、図１に示されている特定の構成要素は、本発明の例示の実施形態が実装され得る環境に関しての制限と見なされてはならない。
【００２５】
以下、図２を参照する。例示の実施形態の側面が実装され得る例示データ処理システムのブロック図が示されている。データ処理システム２００は、本発明の例示の実施形態のプロセスを実装するコンピュータ使用可能コードまたは命令が位置するとよい、図１のクライアント１１０などのコンピュータの例である。
【００２６】
示されている例では、データ処理システム２００が、ノース・ブリッジおよびメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ：ｎｏｒｔｈ  ｂｒｉｄｇｅ  ａｎｄ  ｍｅｍｏｒｙ  ｃｏｎｔｒｏｌｌｅｒ  ｈｕｂ）２０２ならびにサウス・ブリッジおよび入出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ：ｓｏｕｔｈ  ｂｒｉｄｇｅ  ａｎｄ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｃｏｎｔｒｏｌｌｅｒ  ｈｕｂ）２０４を含むハブ・アーキテクチャを採用している。処理ユニット２０６、メイン・メモリ２０８、およびグラフィックス・プロセッサ２１０が、ＮＢ／ＭＣＨ２０２に接続されている。グラフィックス・プロセッサ２１０は、アクセラレーテッド・グラフィックス・ポート（ＡＧＰ：ａｃｃｅｌｅｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｏｒｔ）を介してＮＢ／ＭＣＨ２０２に接続されてもよい。
【００２７】
示されている例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１２が、ＳＢ／ＩＣＨ２０４に接続している。オーディオ・アダプタ２１６、キーボードおよびマウス・アダプタ２２０、モデム２２２、読み出し専用メモリ（ＲＯＭ）２２４、ハード・ディスク・ドライブ（ＨＤＤ：ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ）２２６、ＣＤ−ＲＯＭドライブ２３０、ユニバーサル・シリアル・バス（ＵＳＢ：ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）ポートおよびその他の通信ポート２３２、ならびにＰＣＩ／ＰＣＩｅデバイス２３４が、バス２３８およびバス２４０を介してＳＢ／ＩＣＨ２０４に接続している。ＰＣＩ／ＰＣＩｅデバイスは、例えば、イーサネット（Ｒ）アダプタ、アドイン・カード、およびノートブック・コンピュータ用のＰＣカードを含んでもよい。ＰＣＩはカード・バス・コントローラを使用し、ＰＣＩｅはカード・バス・コントローラを使用しない。ＲＯＭ２２４は、例えばフラッシュ・ベーシック入出力システム（ＢＩＯＳ：ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）であってもよい。
【００２８】
ＨＤＤ２２６およびＣＤ−ＲＯＭドライブ２３０は、バス２４０を介してＳＢ／ＩＣＨ２０４に接続する。ＨＤＤ２２６およびＣＤ−ＲＯＭドライブ２３０は、例えば、統合ドライブ・エレクトロニクス（ＩＤＥ：ｉｎｔｅｇｒａｔｅｄ  ｄｒｉｖｅ  ｅｌｅｃｔｒｏｎｉｃｓ）またはシリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ：ｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ）インターフェースを使用してもよい。スーパーＩ／Ｏ（ＳＩＯ：ｓｕｐｅｒ  Ｉ／Ｏ）デバイス２３６が、ＳＢ／ＩＣＨ２０４に接続されてもよい。
【００２９】
オペレーティング・システムが処理ユニット２０６上で実行される。オペレーティング・システムは、図２のデータ処理システム２００内の様々なコンポーネントを連携させ、その制御を提供する。クライアントとしてのオペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（Ｒ）Ｗｉｎｄｏｗｓ（Ｒ）ＸＰ（ＭｉｃｒｏｓｏｆｔおよびＷｉｎｄｏｗｓは、米国、その他の国々、または両方におけるＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標）などの市販のオペレーティング・システムとすればよい。Ｊａｖａ（ＴＭ）プログラミング・システムなどのオブジェクト指向プログラミング・システムが、オペレーティング・システムとともに実行されてもよく、データ処理システム２００上で実行されているＪａｖａ（ＴＭ）プログラムまたはアプリケーションからオペレーティング・システムへのコールを提供する（Ｊａｖａは、米国、その他の国々、または両方におけるＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．の商標）。
【００３０】
サーバとしてのデータ処理システム２００は、例えば、ＡＩＸ（Ｒ）オペレーティング・システムまたはＬＩＮＵＸ（Ｒ）オペレーティング・システムを実行する、ＩＢＭ（Ｒ）ｅＳｅｒｖｅｒ（ＴＭ）Ｓｙｓｔｅｍ  ｐ（Ｒ）コンピュータ・システムとするとよい（ｅＳｅｒｖｅｒ、Ｓｙｓｔｅｍ  ｐ、およびＡＩＸは、インターナショナル・ビジネス・マシーンズ・コーポレーションの、米国、その他の国々、または両方における商標であり、ＬＩＮＵＸは、米国、その他の国々、または両方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの商標である）。データ処理システム２００は、処理ユニット２０６内に複数のプロセッサを含む対称型マルチプロセッサ（ＳＭＰ：ｓｙｍｍｅｔｒｉｃ  ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ）システムとしてもよい。あるいは、単一プロセッサ・システムが採用されてもよい。
【００３１】
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションの命令、すなわちプログラムは、ＨＤＤ２２６などのストレージ・デバイスに位置し、処理ユニット２０６によって実行されるようメイン・メモリ２０８にロードされるとよい。本発明の例示の実施形態のプロセスは、コンピュータ使用可能プログラム・コードを使用して処理ユニット２０６により実行されるとよく、コンピュータ使用可能プログラム・コードは、例えばメイン・メモリ２０８、ＲＯＭ２２４、または例えば１つ以上の周辺デバイス２２６および２３０などのメモリに位置すればよい。
【００３２】
図２に示されているバス２３８またはバス２４０などのバス・システムは、１つ以上のバスから成るとよい。当然、バス・システムは、ファブリックまたはアーキテクチャに連結された種々のコンポーネントまたはデバイス間のデータの転送を提供する、任意のタイプの通信ファブリックまたはアーキテクチャを使用して実装されるとよい。図２のモデム２２２またはネットワーク・アダプタ２１２などの通信ユニットは、データを送受信するために使用される１つ以上のデバイスを含むとよい。メモリは、例えばメイン・メモリ２０８、ＲＯＭ２２４、または図２のＮＢ／ＭＣＨ２０２にあるキャッシュなどのキャッシュとするとよい。
【００３３】
当業者には当然のことながら、図１〜２のハードウェアは、実装に応じて異なってもよい。フラッシュ・メモリ、等価な不揮発性メモリ、もしくは光ディスク・ドライブおよび同様のものなど、他の内部ハードウェアまたは周辺デバイスが、図１〜２に示されているハードウェアに加えて、またはその代わりに使用されてもよい。さらに、例示の実施形態のプロセスは、本発明の意図および範囲から逸脱することなく、前述のＳＭＰシステム以外のマルチプロセッサ・データ処理システムに適用され得る。
【００３４】
さらに、データ処理システム２００は、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話またはその他の通信デバイス、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、または同様のものを含めいくつかの異なるデータ処理システムのいずれかの形態をとるとよい。いくつかの実例では、データ処理システム２００は、例えばオペレーティング・システム・ファイルまたはユーザ生成データ、あるいはその両方を記憶する不揮発性メモリを提供するフラッシュ・メモリを用いて構成された携帯用コンピューティング・デバイスとすることもできる。基本的に、データ処理システム２００は、任意の既知のデータ処理システム、または後で開発されるデータ処理システムとするとよく、アーキテクチャ上の制限はない。
【００３５】
繰り返しになるが、例示の実施形態は、同じ問題を、最小限のハードウェアまたはＳＡＮ管理、あるいはその両方により解決する、Ｎ＿ｐｏｒｔ識別仮想化（ＮＰＩＶ）を使用するメカニズムを提供する。例示の実施形態は、複数の物理的なファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）に結合する仮想Ｉ／Ｏサーバ（ＶＩＯＳ）を使用し、仮想化レイヤを使用することによって、専用のワールドワイド・ポート・ネームを有する仮想ＦＣ  ＨＢＡを提示する。ＶＩＯＳは、仮想ＦＣ  ＨＢＡポートから受信された適切なファブリック・イベントを、各クライアントへ、その仮想ＮＰＩＶアダプタを介して転送すること、または各クライアントもしくはイニシエータに関してファイバ・チャネル・トランザクションをキューに入れること、あるいはその両方によって、１つのＦＣ  ＨＢＡを共有するよう複数のイニシエータを規定し、２つのＦＣ  ＨＢＡが２つ以上のイニシエータに対し冗長性を提供できるようにし、その結果ハードウェアを節約する。例示の実施形態は、ワールドワイド・ポート・ネームが、物理的なＦＣ  ＨＢＡではなくＶＩＯＳ制御されたＮＰＩＶアダプタの属性であることから、ＦＣ  ＨＢＡワールドワイド・ポート・ネームと、イニシエータのＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ：小型コンピュータ・システム・インターフェース）ターゲットへのアクセスとの間の依存関係をなくす。ＶＩＯＳは、クライアントが接続されているＦＣ  ＨＢＡがファイバ・チャネル・ファブリックへの接続性を失ったこと、もしくは失うこと、または予期されたメンテナンス・イベントが発生することで、ＮＰＩＶアダプタの仮想ポートを別のＦＣ  ＨＢＡ上の新たな物理的ポートに再マッピングすることが必要なときに、影響を受ける各クライアントへのＬＩＮＫ  ｄｏｗｎの通知の送信を提供する。ＶＩＯＳは、別のＦＣ  ＨＢＡへの新たなマッピングが確立されると、ＬＩＮＫ  ｕｐを送信する。
【００３６】
図３は、例示の実施形態による仮想化された環境を備えるデータ処理システムを示す、例示的なブロック図を示す。データ処理システム３００は、複数の論理区画（ＬＰＡＲ：ｌｏｇｉｃａｌ  ｐａｒｔｉｔｉｏｎ）３１０、３３０、３５０を有し、これはクライアントまたはイニシエータとも呼ぶことができる。ＬＰＡＲ３１０では、一連のアプリケーション・プログラミング・インターフェース（ＡＰＩ：ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）３１４を伴うオペレーティング・システム３１２のインスタンス、および１つ以上のアプリケーション３１６が実行されている。ＬＰＡＲ３３０は、ＡＰＩ３３４を伴うオペレーティング・システム３３２、および１つ以上のアプリケーション３３６を有する。ＬＰＡＲ３５０は、仮想入出力サーバ（ＶＩＯＳ）区画であり、ＡＰＩ３５４を伴うＶＩＯＳオペレーティング・システム３５２、および１つ以上のアプリケーション３５６が実行されている。ＬＰＡＲ３５０は、ＶＩＯＳソフトウェアを含むアプリケーション３５６によるＶＩＯＳ区画であるとよい。データ処理システム３００は、ＬＰＡＲ３１０および３３０、ならびにＶＩＯＳ区画３５０のみを示すが、例示の実施形態はそれに限定されない。それどころか、本発明の意図および範囲から逸脱することなく、例示の実施形態のメカニズムとともに任意の数のＬＰＡＲが利用され得る。
【００３７】
ＬＰＡＲ３１０および３３０、ならびにＶＩＯＳ区画３５０は、仮想化レイヤ３７０を介して互いに通信するとよい。仮想化レイヤ３７０は、通信およびリソース管理を実行して、オペレーティング・システム３１２および３３２、ならびにＶＩＯＳオペレーティング・システム３５２の複数のインスタンスが、同時にデータ処理システム３００上で実行することを可能にするソフトウェアである。仮想化レイヤ３７０は、プロセッサ・タイム・スライス・シェアリング、メモリ割り当て、または同様のものなどのタスクを実行する。仮想化レイヤ３７０は、例えばハイパーバイザとしてもよい。
【００３８】
アプリケーション３１６および３３６は、ファイバ・チャネル・ネットワーク３８２上のデバイスと通信するネットワーク・アプリケーションを含むとよい。ファイバ・チャネル・ネットワーク３８２と通信するとき、アプリケーション３１６および３３６は、ＡＰＩ３１４および３３４、ならびにオペレーティング・システム３１２および３３２をコールし、オペレーティング・システム３１２および３３２は、それぞれ割り当てられたワールドワイド・ポート・ネーム（ＷＷＰＮ）を使用して、Ｎ＿ｐｏｒｔ識別仮想化（ＮＰＩＶ）アダプタ３２０および３４０をそれぞれ介して、それぞれＶＩＯＳ区画３５０内のＮ＿ｐｏｒｔ識別仮想化（ＮＰＩＶ）サーバ・アダプタ３６０および３６２と通信する。例示の実施形態では、ＮＰＩＶサーバ・アダプタ３６０および３６２はそれぞれ、２つの関係を築く。ＮＰＩＶサーバ・アダプタ３６０および３６２はそれぞれ、ＮＰＩＶアダプタ３２０およびＮＰＩＶアダプタ３４０と、個別の第１の関係を築く。さらに、ＮＰＩＶサーバ・アダプタ３６０および３６２はそれぞれ、仮想化レイヤ３７０内のファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）３７２または３７４上のポートと、第２の関係を築く。ＦＣ  ＨＢＡ３７２および３７４上の各ポートは、多数のＮＰＩＶサーバ・アダプタに同時にサービスを提供するとよい。現在、ＦＣ  ＨＢＡ上の単一ポートの制限として、６４のＮＰＩＶサーバ・アダプタに制限されている。しかし、これは現在既知のＦＣ  ＨＢＡの制限であり、例示の実施形態は、そのような現在既知の制限に制限されない。
【００３９】
ＮＰＩＶサーバ・アダプタ３６０および３６２は、仮想化レイヤ３７０内の仮想化されたファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）３７２または３７４のＷＷＰＮに直接マップする、仮想ＷＷＰＮを提供する。すなわち、仮想化レイヤ３７０は、複数のワールドワイド・ポート・ネームを使用して、物理的なＦＣ  ＨＢＡにマップする仮想ＦＣ  ＨＢＡ３７２および３７４を提示する。データ処理システム３００は、ＦＣ  ＨＢＡ３７２および３７４を示しているが、例示の実施形態はそれに限定されない。それどころか、本発明の意図および範囲から逸脱することなく、例示の実施形態のメカニズムとともに任意の数のＦＣ  ＨＢＡまたはその他の通信アダプタが利用され得る。続いて、ＮＰＩＶサーバ・アダプタ３６０は、アプリケーション３１６および３３６からのコールを、仮想化レイヤ３７０内の仮想化されたＦＣ  ＨＢＡ３７２または３７４、ならびにネットワーク・レイヤ３８０を介して、ネットワーク３８２に伝達するか、または渡す。ネットワーク・レイヤ３８０は、ネットワーク通信のタスクを実行するソフトウェアである。ネットワーク・レイヤ３８０は、エンド・ツー・エンド・パケット配信、サービス品質のメンテナンス、エラー制御、および同様のものなどのタスクを実行するとよい。
【００４０】
ネットワーク３８２は、ストレージ・エリア・ネットワーク（ＳＡＮ：ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）３８４を含むネットワークであるとよく、示されている例では、ストレージ・エリア・ネットワーク（ＳＡＮ）３８４はファイバ・チャネル準拠のＳＡＮである。ファイバ・チャネルは、インターネット・プロトコル（ＩＰ：Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）および小型コンピュータ・システム・インターフェース（ＳＣＳＩ）を含むいくつかの一般的なトランスポート・プロトコルをマップして、高速Ｉ／Ｏと、ネットワーキング機能性とを単一の接続性技術の中で組み合わせることを可能にする、スケーラブルな技術のデータ転送インターフェース技術である。ファイバ・チャネルは、米国規格協会（ＡＮＳＩ：Ａｍｅｒｉｃａｎ  Ｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄｓ  Ｉｎｓｔｉｔｕｔｅ）および国際標準化機構（ＩＳＯ：Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｏｒｇａｎｉｚａｔｉｏｎ  ｆｏｒ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ）により定義された一連のオープン標準である。様々なファイバ・チャネル標準に関する詳細情報は、主としてファイバ・チャネル・プロジェクトを担当すするＡＮＳＩ公認標準委員会（ＡＳＣ：Ａｃｃｒｅｄｉｔｅｄ  Ｓｔａｎｄａｒｄｓ  Ｃｏｍｍｉｔｔｅｅ）Ｘ３Ｔ１１から入手可能である。これらの標準は、本明細書では、集合的にファイバ・チャネル標準またはファイバ・チャネル規格と呼ばれる。ファイバ・チャネルは、１０キロメートルまでの距離の銅および光ファイバ配線両方により動作し、ポイント・ツー・ポイント、調停ループ、およびスイッチング（ならびにその組み合わせ）を含む複数の相互運用可能なトポロジをサポートする。
【００４１】
当然のことながら、例示の実施形態は、ファイバ・チャネルおよびファイバ・チャネル・ファブリックの使用に関して記載されるが、例示の実施形態はそれに限定されない。それどころか、本発明の意図および範囲から逸脱することなく、例示の実施形態のメカニズムとともに任意のインターフェース技術、通信スイート、または通信プロトコルが利用され得る。ファイバ・チャネルは、例としてのみ使用されており、例示の実施形態のメカニズムとともに使用され得る通信接続またはプロトコルのタイプに関していかなる制限を提示することも、暗示することも意図されてはいない。
【００４２】
ＳＡＮ３８４の示されている実施形態は、ファイバ・チャネル・ファブリック・ネットワーク３８８を介して相互接続されている一連のノード３８６を含む。ネットワーク３８２のノード３８６は、データ処理システム３００、データ処理システム３９８（コンピュータ）、テープ・サブシステム３９０、ＲＡＩＤデバイス３９２、ディスク・サブシステム３９４、ファイバ・チャネル調停ループ（ＦＣＡＬ：Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  ａｒｂｉｔｒａｔｅｄ  ｌｏｏｐ）３９６、またはその他の適切なデータ・ストレージおよびデータ処理デバイスを含む、様々なデバイスまたはシステムのいずれかを含むとよい。ネットワーク３８２のノード３８６の１つ以上は、参照数字３９９により示されている外部ネットワークに接続されてもよい。外部ネットワーク３９９は、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、または同様のものとするとよい。例えば、外部ネットワーク３９９は、インターネットなど、インターネット・プロトコル（ＩＰ）にサポートされたネットワークとしてもよい。
【００４３】
図４は、例示の実施形態による仮想化された環境を備える、図３のデータ処理システム３００などのデータ処理システムを示す、簡略化された例示的なブロック図を示す。データ処理システム４００では、クライアント４０２が、Ｎ＿ｐｏｒｔ識別仮想化（ＮＰＩＶ）アダプタ４０４を使用して、仮想入出力サーバ（ＶＩＯＳ）４０８内のＮＰＩＶサーバ・アダプタ４０６に、仮想化レイヤ４１０を介して接続する。同様に、データ処理システム４００では、クライアント４１２が、ＮＰＩＶアダプタ４１４を使用して、ＶＩＯＳ４０８内のＮＰＩＶサーバ・アダプタ４１６に、仮想化レイヤ４１０を介して接続する。ＮＰＩＶサーバ・アダプタ４０６および４１６は、それぞれファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）４１８および４２０上のポートの論理分割（ｌｏｇｉｃａｌ  ｐｏｒｔｉｏｎｉｎｇ）を提供し、クライアント４０２および４１２をファイバ・チャネル（ＦＣ）ファブリックに接続する。ＦＣ  ＨＢＡ４１８および４２０上のポートを論理的に分割することによって、ＦＣ  ＨＢＡ４１８および４２０は、それぞれ固有のＮ＿Ｐｏｒｔ  ＩＤを備える複数のクライアントをサポートできる。
【００４４】
ＶＩＯＳ４０８は、ＶＩＯＳコントローラ４２２を使用して、ＦＣ  ＨＢＡ４１８および４２０と通信する。ＦＣ  ＨＢＡ４１８または４２０に、差し迫る障害を示すエラーが起こり始めると、ＦＣ  ＨＢＡ４１８または４２０は、エラーを、ファブリック・イベントとしてＶＩＯＳコントローラ４２２を介しＶＩＯＳ４０８に送信する。ＶＩＯＳコントローラ４２２は、１つ以上の所定のエラー閾値を使用して、ＦＣ  ＨＢＡ４１８または４２０、あるいは両方が障害を起こし始めていることを、受信されたエラーが示すかどうかを決定するとよい。続いて、ＶＩＯＳ４０８は、ＶＩＯＳコントローラ４２２を使用して、ＦＣ  ＨＢＡ４１８または４２０、あるいはその両方から受信された適切なファブリック・イベントを、クライアント４０２または４１２のうちの適切なクライアント（単数または複数）に伝達するとよい。ＶＩＯＳコントローラ４２２は、機能停止、クライアントがオフラインであること、または同様の理由でクライアント４０２および４１２との通信が可能でなければ、ファブリック・イベントをキューに入れることもできる。ＶＩＯＳコントローラ４２２は、各ＮＰＩＶアダプタ４０４または４１４の、ＦＣ  ＨＢＡ４１８または４２０上の割り当てられているポートへのマッピングを提供する。さらに、ＶＩＯＳコントローラ４２２は、ＦＣ  ＨＢＡ４１８および４２０、または仮想化レイヤ４１０、あるいはその両方により提供される情報を記憶し、この情報が、ＦＣ  ＨＢＡ４１８および４２０の各ポートにより一連のターゲットに提供される接続性を特定する。ターゲットがＦＣ  ＨＢＡ上の特定のポートに追加されるとき、続いてＦＣ  ＨＢＡ、またはそのＦＣ  ＨＢＡが属する仮想化レイヤ、あるいはその両方が、ＶＩＯＳコントローラ４２２に更新を提供する。したがって、ＶＩＯＳコントローラ４２２はさらに、ＦＣ  ＨＢＡ４１８または４２０の差し迫る障害、ＦＣ  ＨＢＡ４１８または４２０のメンテナンス、ＦＣ  ＨＢＡ４１８と、４２０との間のワークロード・バランシング、または同様の場合など、アテンションが必要な場合に、１つのＦＣ  ＨＢＡポートから別のＦＣ  ＨＢＡポートへのＮＰＩＶアダプタ４０４または４１４のマッピングを提供する。
【００４５】
図５は、例示の実施形態による、ＦＣ  ＨＢＡの例示的な障害またはメンテナンスを示す。例えば、ＦＣ  ＨＢＡ４１８の障害が差し迫っているが、完全な障害またはメンテナンスではない場合、ＶＩＯＳコントローラ４２２が、ＮＰＩＶサーバ・アダプタ４０６をコールする。このコールは、ＮＰＩＶサーバ・アダプタ４０６が、ＦＣ  ＨＢＡ４１８上の割り当てられているポートからＦＣ  ＨＢＡ４２０上の利用可能なポートへ、クライアント４０２を移すべきであることを示す。その結果、ＮＰＩＶサーバ・アダプタ４０６は、接続性が一時的に失われたことを示す、ＬＩＮＫ  ｄｏｗｎ信号などのイベント信号を、クライアント４０２に送信する。次に、ＮＰＩＶサーバ・アダプタ４０６は、クライアント４０２の既存の接続４２４を切断せよというコマンドをＦＣ  ＨＢＡ４１８に送信する。ＦＣ  ＨＢＡ４１８は、コマンドを受信すると、リクエストされた接続を切断し、確認応答をＮＰＩＶサーバ・アダプタ４０６に返す。この例では、続いてＮＰＩＶサーバ・アダプタ４０６が、ＦＣ  ＨＢＡ４２０に対するクライアント４０２の新たな接続４２６を確立するために、接続コマンドをＦＣ  ＨＢＡ４２０に送信する。コマンドを受信すると、ＦＣ  ＨＢＡ４２０は、リクエストされた接続を確立し、確認応答をＮＰＩＶサーバ・アダプタ４０６に返す。続いて、ＮＰＩＶサーバ・アダプタ４０６は、接続性が再確立されたという、ＬＩＮＫ  ｕｐ信号などのイベント信号を、クライアント４０２に送信する。接続性が再確立されたことで、その結果クライアント４０２は、通常であればＦＣ  ＨＢＡ４１８が完全に障害を起こした場合に受けたであろうサービスの大きな損失なしに、ＦＣ  ＨＢＡ４２０を介してＦＣファブリックとの通信を実行できる。
【００４６】
図６は、例示の実施形態による、ＦＣ  ＨＢＡの例示的な障害からの回復またはメンテナンスの成功を示す。例えば、ＦＣ  ＨＢＡ４１８の障害からの回復またはメンテナンスの成功が生じると、ＶＩＯＳコントローラ４２２は、回復メッセージまたは初期化メッセージをＦＣ  ＨＢＡ４１８から受信する。ＦＣ  ＨＢＡ４１８からの回復メッセージまたは初期化メッセージに応答して、ＶＩＯＳコントローラ４２２は、ＮＰＩＶサーバ・アダプタ４０６をコールする。このコールは、ＮＰＩＶサーバ・アダプタ４０６が、クライアント４０２を、ＦＣ  ＨＢＡ４２０上の割り当てられているポートからＦＣ  ＨＢＡ４１８上の利用可能なポートへ移すべきであることを示す。次に、ＮＰＩＶサーバ・アダプタ４０６は、接続性が一時的に失われたことを示すイベント信号を、クライアント４０２に送信する。次に、ＮＰＩＶサーバ・アダプタ４０６は、クライアント４０２の接続４２６を切断せよというコマンドをＦＣ  ＨＢＡ４２０に送信する。ＦＣ  ＨＢＡ４２０は、コマンドを受信すると、リクエストされた接続を切断し、確認応答をＮＰＩＶサーバ・アダプタ４０６に返す。この例では、続いてＮＰＩＶサーバ・アダプタ４０６が、ＦＣ  ＨＢＡ４１８に対するクライアント４０２の接続４２４を確立するために、接続コマンドをＦＣ  ＨＢＡ４１８に送信する。コマンドを受信すると、ＦＣ  ＨＢＡ４１８は、リクエストされた接続を確立し、確認応答をＮＰＩＶサーバ・アダプタ４０６に返す。ＮＰＩＶサーバ・アダプタ４０６は、次に、接続性が再確立されたというイベント信号をクライアント４０２に送信する。接続性が再確立されたことで、続いてクライアント４０２は、ＦＣ  ＨＢＡ４１８を介してＦＣファブリックとの通信を実行できる。
【００４７】
図７は、例示の実施形態による、一連のファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）間での例示的なワークロード・バランシングを示す。ＶＩＯＳコントローラ４２２は、ＦＣ  ＨＢＡ４１８および４２０それぞれからワークロード情報を受信する。この場合もやはり、例示の図７は、ＦＣ  ＨＢＡ４１８および４２０のみを示すが、例示の実施形態はそれに限定されない。それどころか、本発明の意図および範囲から逸脱することなく、例示の実施形態のメカニズムとともに任意の数のＦＣ  ＨＢＡが利用され得る。所定のワークロード・バランス閾値に基づき、ＦＣ  ＨＢＡ４１８および４２０からのワークロード情報がワークロード・バランシングの実行が必要であると示すと、その結果ＶＩＯＳコントローラは、ＦＣ  ＨＢＡ４１８と、４２０との間のワークロード・バランシングを開始する。この例では、クライアント４１２、４３２、４３４、および４３６をサポートしているＦＣ  ＨＢＡ４２０が、クライアント４０２および４３０をサポートしているＦＣ  ＨＢＡ４１８により実行されている作業よりも５０パーセント多い作業を実行していると、ＶＩＯＳコントローラ４２２が特定する。次にＶＩＯＳコントローラ４２２は、ＦＣ  ＨＢＡ４２０に接続されているクライアント４１２、４３２、４３４、または４３６のうち、どれがＦＣ  ＨＢＡ４２０からＦＣ  ＨＢＡ４１８へ移されるとよいかを特定する。ＶＩＯＳコントローラ４２２は、ＦＣ  ＨＢＡ４２０と通信しているクライアントそれぞれのワークロードに基づき、ＦＣ  ＨＢＡ４２０と、ＦＣ  ＨＢＡ４１８との間のワークロードのバランスを大幅によくすると考えられる１〜Ｎ個のクライアントを特定するとよい。
【００４８】
ＶＩＯＳコントローラ４２２が、ＦＣ  ＨＢＡ４２０からＦＣ  ＨＢＡ４１８へ移すべき一連のクライアント、この例ではクライアント４３２および４３４を特定すると、続いてＶＩＯＳコントローラ４２２は、ＮＰＩＶサーバ・アダプタ４０６およびＮＰＩＶサーバ・アダプタ４１６をコールする。ＮＰＩＶサーバ・アダプタ４０６に対するこのコールは、ＮＰＩＶサーバ・アダプタ４０６が、クライアント４３２を、ＦＣ  ＨＢＡ４２０上の割り当てられているポートからＦＣ  ＨＢＡ４１８上の利用可能なポートへ移すべきであることを示す。その結果、ＮＰＩＶサーバ・アダプタ４０６は、接続性が一時的に失われたことを示すイベント信号をクライアント４３２に送信する。次に、ＮＰＩＶサーバ・アダプタ４０６は、クライアント４３２の接続を切断せよというコマンドをＦＣ  ＨＢＡ４２０に送信する。ＦＣ  ＨＢＡ４２０は、コマンドを受信すると、リクエストされた接続を切断し、確認応答をＮＰＩＶサーバ・アダプタ４０６に返す。この例では、続いてＮＰＩＶサーバ・アダプタ４０６が、ＦＣ  ＨＢＡ４１８に対するクライアント４３２の接続性を確立するために、接続コマンドをＦＣ  ＨＢＡ４１８に送信する。コマンドを受信すると、ＦＣ  ＨＢＡ４１８は、リクエストされた接続を確立し、確認応答をＮＰＩＶサーバ・アダプタ４０６に返す。ＮＰＩＶサーバ・アダプタ４０６は、次に、接続性が再確立されたというイベント信号をクライアント４３２に送信する。接続性が再確立されたことで、続いてクライアント４３２は、ＦＣ  ＨＢＡ４１８を介してＦＣファブリックとの通信を実行できる。
【００４９】
ＮＰＩＶサーバ・アダプタ４１６に対するこのコールは、ＮＰＩＶサーバ・アダプタ４１６が、クライアント４３４を、ＦＣ  ＨＢＡ４２０上の割り当てられているポートからＦＣ  ＨＢＡ４１８上の利用可能なポートへ移すべきであることを示す。ＮＰＩＶサーバ・アダプタ４１６は、接続性が一時的に失われたことを示すイベント信号をクライアント４３４に送信する。次に、ＮＰＩＶサーバ・アダプタ４１６は、クライアント４３４の接続を切断せよというコマンドをＦＣ  ＨＢＡ４２０に送信する。ＦＣ  ＨＢＡ４２０は、コマンドを受信すると、リクエストされた接続を切断し、確認応答をＮＰＩＶサーバ・アダプタ４１６に返す。この例では、続いてＮＰＩＶサーバ・アダプタ４１６が、ＦＣ  ＨＢＡ４１８に対するクライアント４３４の接続性を確立するために、接続コマンドをＦＣ  ＨＢＡ４１８に送信する。コマンドを受信すると、ＦＣ  ＨＢＡ４１８は、リクエストされた接続を確立し、確認応答をＮＰＩＶサーバ・アダプタ４１６に返す。ＮＰＩＶサーバ・アダプタ４１６は、次に、接続性が再確立されたというイベント信号をクライアント４３４に送信する。接続性が再確立されたことで、続いてクライアント４３４は、ＦＣ  ＨＢＡ４１８を介してＦＣファブリックとの通信を実行できる。
【００５０】
したがって、例示の実施形態は、同じ問題を、最小限のハードウェアまたは管理者の関与、あるいはその両方により解決する、Ｎ＿ｐｏｒｔ識別仮想化（ＮＰＩＶ）を使用するメカニズムを提供する。ＮＰＩＶは、複数のクライアントが１つのファイバ・チャネル・ポートを使用できるようにし、各クライアントに固有ワールドワイド・ポート・ネーム（ＷＷＰＮ）が割り当てられる。例示の実施形態は、ＦＣ  ＨＢＡ障害、ＦＣ  ＨＢＡのメンテナンス、２つ以上のＦＣ  ＨＢＡ間のワークロード・バランシング、または同様の場合に、割り当てられたＦＣ  ＨＢＡポートから別のＦＣ  ＨＢＡポートにクライアントＮＰＩＶアダプタをマップするために、ＶＩＯＳを使用する。
【００５１】
図８は、例示の実施形態による、ファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）の障害またはメンテナンス中に、データ処理システムの仮想入出力サーバ（ＶＩＯＳ）オペレーティング・システムにより実行される動作の、例示的なフローチャートを示す。動作の開始時、ＶＩＯＳデータ処理システム内のＶＩＯＳコントローラは、特定されたＦＣ  ＨＢＡがアテンションを必要とするというインジケーションを受信する（ステップ５０２）。当該のインジケーションに応答して、ＶＩＯＳコントローラ・システムは、特定されたＦＣ  ＨＢＡに結合された一連のＮＰＩＶサーバ・アダプタそれぞれをコールする（ステップ５０４）。各コールは、１つ以上のクライアントを、特定されたＦＣ  ＨＢＡ上の割り当てられているポートからフェイルオーバＦＣ  ＨＢＡ上の利用可能なポートへ移すことを、それぞれのＮＰＩＶサーバ・アダプタに示す。各ＮＰＩＶサーバ・アダプタによりサービスを提供されているクライアントそれぞれに関して、ＮＰＩＶサーバ・アダプタは、接続性が一時的に失われたことを示すイベント信号をクライアントに送信する（ステップ５０６）。続いてＮＰＩＶサーバ・アダプタは、特定されたＦＣ  ＨＢＡにコマンドを送信し、特定されたＦＣ  ＨＢＡが当該クライアントの接続を切断することを要求する（ステップ５０８）。特定されたＦＣ  ＨＢＡは、コマンドを受信すると、リクエストされた接続を切断し、確認応答をＮＰＩＶサーバ・アダプタに返す（ステップ５１０）。続いてＮＰＩＶサーバ・アダプタは、フェイルオーバＦＣ  ＨＢＡに対するクライアントの接続を確立するために、接続コマンドをフェイルオーバＦＣ  ＨＢＡに送信する（ステップ５１２）。フェイルオーバＦＣ  ＨＢＡは、コマンドを受信すると、リクエストされた接続を確立し、確認応答をＮＰＩＶサーバ・アダプタに返す（ステップ５１４）。続いてＮＰＩＶサーバ・アダプタは、接続性が再確立されたというイベント信号をクライアントに送信し（ステップ５１６）、その後動作が終了する。接続性が再確立されたことで、続いてクライアントは、フェイルオーバＦＣ  ＨＢＡを介してＦＣファブリックとの通信を実行できる。
【００５２】
図９は、例示の実施形態による、ファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）の障害からの回復またはメンテナンス中に、データ処理システムの仮想入出力サーバ（ＶＩＯＳ）オペレーティング・システムにより実行される動作の、例示的なフローチャートを示す。動作の開始時、回復したＦＣ  ＨＢＡの障害からの回復またはメンテナンスの成功が生じると、ＶＩＯＳデータ処理システム内のＶＩＯＳコントローラが、回復したＦＣ  ＨＢＡから回復メッセージまたは初期化メッセージを受信する（ステップ６０２）。回復したＦＣ  ＨＢＡからの回復メッセージまたは初期化メッセージに応答して、ＶＩＯＳコントローラは、フェイルオーバＦＣ  ＨＢＡに結合された一連のＮＰＩＶサーバ・アダプタそれぞれをコールする（ステップ６０４）。このコールは、ＮＰＩＶサーバ・アダプタが、クライアントを、フェイルオーバＦＣ  ＨＢＡ上の割り当てられているポートから回復したＦＣ  ＨＢＡ上の利用可能なポートへ移すべきであることを示す。その結果、ＮＰＩＶサーバ・アダプタは、接続性が一時的に失われたことを示すイベント信号をクライアントに送信する（ステップ６０６）。続いてＮＰＩＶサーバ・アダプタは、クライアントの接続を切断せよというコマンドをフェイルオーバＦＣ  ＨＢＡに送信する（ステップ６０８）。フェイルオーバＦＣ  ＨＢＡは、コマンドを受信すると、リクエストされた接続を切断し、確認応答をＮＰＩＶサーバ・アダプタに返す（ステップ６１０）。続いてＮＰＩＶサーバ・アダプタは、回復したＦＣ  ＨＢＡに対するクライアントの接続を確立するために、接続コマンドを回復したＦＣ  ＨＢＡに送信する（ステップ６１２）。回復したＦＣ  ＨＢＡは、コマンドを受信すると、リクエストされた接続を確立し、確認応答をＮＰＩＶサーバ・アダプタに返す（ステップ６１４）。続いてＮＰＩＶサーバ・アダプタは、接続性が再確立されたというイベント信号をクライアントに送信し（ステップ６１６）、その後動作が終了する。接続性が再確立されたことで、続いてクライアントは、回復したＦＣ  ＨＢＡを介してＦＣファブリックとの通信を実行できる。
【００５３】
図１０は、例示の実施形態による、一連のファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）間のワークロード・バランシングのために、データ処理システムの仮想入出力サーバ（ＶＩＯＳ）オペレーティング・システムにより実行される動作の、例示的なフローチャートを示す。動作の開始時、ＶＩＯＳデータ処理システム内のＶＩＯＳコントローラは、一連のＦＣ  ＨＢＡそれぞれからワークロード情報を受信する（ステップ７０２）。ＶＩＯＳコントローラは、所定のワークロード・バランス閾値に基づき、ワークロード情報が、ワークロード・バランスの実行が必要であると示すかどうかを決定する（ステップ７０４）。ステップ７０４にて、ＶＩＯＳコントローラが、ワークロード・バランスの実行は必要ないと決定すると、その結果、動作はステップ７０２に戻る。ステップ７０４にて、ＶＩＯＳコントローラが、ワークロード・バランスの実行が必要であると決定すると、その結果ＶＩＯＳコントローラは、一連のＦＣ  ＨＢＡ間のワークロード・バランシングを開始する（ステップ７０６）。この例では、ＶＩＯＳコントローラは、所定のワークロード・バランス閾値超の実行をしている一連のＦＣ  ＨＢＡのうちの１つ以上と、所定のワークロード・バランス閾値未満の実行をしている一連のＦＣ  ＨＢＡのうちの１つ以上を特定し、これらはそれぞれ、これにより一連のオーバーワーク（ｏｖｅｒｗｏｒｋｅｄ）ＦＣ  ＨＢＡおよび一連のアンダーワーク（ｕｎｄｅｒｗｏｒｋｅｄ）ＦＣ  ＨＢＡと呼ばれる（ステップ７０８）。続いてＶＩＯＳコントローラは、一連のオーバーワークＦＣ  ＨＢＡに接続されていて、一連のオーバーワークＦＣ  ＨＢＡから一連のアンダーワークＦＣ  ＨＢＡに移されるとよい一連のクライアントを、１つ以上のクライアントにより実行されるワークロードに基づき特定する（ステップ７１０）。
【００５４】
ＶＩＯＳコントローラが一連のクライアントを特定すると、続いてＶＩＯＳコントローラは、一連のクライアントに関連する一連のＮＰＩＶサーバ・アダプタをコールする（ステップ７１２）。一連のＮＰＩＶサーバ・アダプタに対するコール（単数または複数）は、一連のＮＰＩＶサーバ・アダプタが、一連のクライアントを、一連のオーバーワークＦＣ  ＨＢＡ上の割り当てられているポートから一連のアンダーワークＦＣ  ＨＢＡ上の利用可能なポートに移すべきであることを示す。一連のクライアントのうちの各クライアントに関して、一連のＮＰＩＶサーバ・アダプタのうちの関連するＮＰＩＶサーバ・アダプタが、接続性が一時的に失われたことを示すイベント信号をクライアントに送信する（ステップ７１４）。続いて関連するＮＰＩＶサーバ・アダプタは、当該クライアントの接続を切断せよというコマンドを、一連のオーバーワークＦＣ  ＨＢＡのうちの関連するオーバーワークＦＣ  ＨＢＡに送信する（ステップ７１６）。関連するオーバーワークＦＣ  ＨＢＡは、コマンドを受信すると、リクエストされた接続を切断し、確認応答をＮＰＩＶサーバ・アダプタに返す（ステップ７１８）。続いてＮＰＩＶサーバ・アダプタは、アンダーワークＦＣ  ＨＢＡに対するクライアントの接続性を確立するために、接続コマンドを一連のアンダーワークＦＣ  ＨＢＡのうちのアンダーワークＦＣ  ＨＢＡに送信する（ステップ７２０）。アンダーワークＦＣ  ＨＢＡは、コマンドを受信すると、リクエストされた接続を確立し、確認応答をＮＰＩＶサーバ・アダプタに返す（ステップ７２２）。続いてＮＰＩＶサーバ・アダプタは、接続性が再確立されたというイベント信号をクライアントに送信し（ステップ７２４）、その後動作が終了する。接続性が再確立されたことで、続いてクライアントは、アンダーワークＦＣ  ＨＢＡを介してＦＣファブリックとの通信を実行できる。
【００５５】
このようにして、例示の実施形態は、同じ問題を、最小限のハードウェアまたはＳＡＮ管理、あるいはその両方により解決する、Ｎ＿ｐｏｒｔ識別仮想化（ＮＰＩＶ）を使用するメカニズムを提供する。例示の実施形態は、複数のファイバ・チャネル・ホスト・バス・アダプタ（ＦＣ  ＨＢＡ）に結合する仮想Ｉ／Ｏサーバ（ＶＩＯＳ）を使用し、仮想化レイヤを使用することによって、専用のワールドワイド・ポート・ネームを有する仮想ＦＣ  ＨＢＡを提示する。ＶＩＯＳは、仮想ＦＣ  ＨＢＡポートから受信された適切なファブリック・イベントを、各クライアントへ、その仮想ＮＰＩＶアダプタを介して転送すること、または各クライアントもしくはイニシエータに関してファイバ・チャネル・トランザクションをキューに入れること、あるいはその両方によって、１つのＦＣ  ＨＢＡを共有するよう複数のイニシエータを規定し、２つのＦＣ  ＨＢＡが２つ以上のイニシエータに対し冗長性を提供できるようにし、その結果ハードウェアを節約する。したがって、例示の実施形態は、ワールドワイド・ポート・ネームが、物理的なＦＣ  ＨＢＡではなくＶＩＯＳ制御されたＮＰＩＶアダプタの属性であることから、ＦＣ  ＨＢＡワールドワイド・ポート・ネームと、イニシエータのＳＣＳＩターゲットへのアクセスとの間の依存関係をなくす。ＶＩＯＳは、クライアントが接続されているＦＣ  ＨＢＡがファイバ・チャネル・ファブリックへの接続性を失ったこと、もしくは失うこと、または予期されたメンテナンス・イベントが発生することで、ＮＰＩＶアダプタの仮想ポートを別のＦＣ  ＨＢＡ上の新たなポートに再マッピングすることが必要なときに、影響を受ける各クライアントに、ＬＩＮＫ  ｄｏｗｎの通知を送信することを提供する。ＶＩＯＳは、別のＦＣ  ＨＢＡへの新たなマッピングが確立されると、ＬＩＮＫ  ｕｐを送信する。
【００５６】
上述の通り、当然のことながら、例示の実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェアと、ソフトウェア構成要素との両方を含む実施形態の形態をとり得る。１つの例示実施形態では、例示の実施形態のメカニズムはソフトウェアまたはプログラム・コードにおいて実装され、これは、限定はされないが、ファームウェア、常駐ソフトウェア、マイクロコードなどを含む。
【００５７】
プログラム・コードの記憶または実行、あるいはその両方に適したデータ処理システムは、システム・バスを介してメモリ要素に直接または間接的に結合された少なくとも１つのプロセッサを含む。メモリ要素は、プログラム・コードを実際に実行する間に用いられるローカル・メモリ、大容量ストレージ、および、実行中にコードが大容量ストレージから読み出されなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的なストレージとなるキャッシュ・メモリを含むことができる。
【００５８】
入出力、すなわちＩ／Ｏデバイス（限定はされないが、キーボード、ディスプレイ、ポインティング・デバイスなどを含む）は、直接、または介在するＩ／Ｏコントローラを介してシステムに結合されることが可能である。ネットワーク・アダプタもシステムに結合されて、データ処理システムが、他のデータ処理システムまたはリモート・プリンタもしくはストレージ・デバイスに、介在するプライベートまたはパブリック・ネットワークを介して結合された状態となることを可能にしてもよい。モデム、ケーブル・モデム、およびイーサネット・カードが、現在利用可能なタイプのネットワーク・アダプタのごく一部である。
【００５９】
本発明の記載は、例証および説明のために提示されたものであり、包括的であることも、開示された形態の発明に限定することも目的としていない。当業者には、多数の変更および変形が明らかであろう。実施形態は、本発明の原理、実際の応用を最もよく説明して、他の当業者が、意図される特定の用途に適する様々な変更を用いた様々な実施形態を得るために本発明を理解できるように選ばれ、記載された。
【００６０】
本発明は、上記の例示実施形態に関して記載されたが、本発明はそれに限定されず、本発明の範囲内に入る多数の可能な変形および変更があるということが、当業者には分かるであろう。
【００６１】
本開示の範囲は、本願明細書で開示された任意の新規な特徴または特徴の組み合わせを含む。出願人は、本出願もしくはそこから派生する任意のさらなる当該出願の審査中に、このような特徴または特徴の組み合わせに対して新たな特許請求の範囲が策定されることもあるということをここに予告する。特に、添付の特許請求の範囲に関しては、従属請求項の特徴が独立請求項の特徴と組み合わされてもよく、各独立請求項の特徴が特許請求の範囲で列挙されている特定の組み合わせのみではなく任意の適切な方法で組み合わされてもよい。
【００６２】
疑いを回避する目的で、本願明細書中で説明および特許請求の範囲全体で使用されている「含む」という用語は、「のみから成る」という意味として解釈されてはならない。
【図１】
0005536878.tif 000002
【図２】
0005536878.tif 000003
【図３】
0005536878.tif 000004
【図４】
0005536878.tif 000005
【図５】
0005536878.tif 000006
【図６】
0005536878.tif 000007
【図７】
0005536878.tif 000008
【図８】
0005536878.tif 000009
【図９】
0005536878.tif 000010
【図１０】
0005536878.tif 000011