(57)【要約】【課題】本発明は、ネットワークに付属する物理的なポートの仮想インスタンスを管理するための方法、コンピュータ・プログラム製品、およびシステムに関する。【解決手段】本発明の好ましい一実施形態において、本方法は、物理的なファイバ・チャンネルＮポートのためのファイバ・チャンネルＮポート仮想化に基づく。複数の仮想ファイバ・チャンネル・アダプタは、単一の物理的なＮポートを複数のオペレーティング・システム・インスタンスで共有する。本発明は、Ｎポート仮想化に必要な固有のワールドワイド・ポート・ネームを自動的かつ持続的に生成および管理するための手段を開示する。【選択図】図１
2009500702.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク（１６）に付属する物理的なポート（１７）の仮想インスタンスを管理するための方法であり、各インスタンス（３２）には、ワールドワイド・ポート・ネーム（ＷＷＰＮ）が割り当てられ、前記ネットワークは、各インスタンス（３２）に対してポート識別子を割り当て、それによって、前記ネットワークは、前記ネットワークにログイン（４３）される新ポート識別子に対して個別の論理的接続を提供し、前記新ポート識別子が前記ネットワークからログオフされる（５３）と、前記新ポート識別子の前記個別の論理的接続の経路を除去する方法であって、
前記方法は、
‐ＷＷＰＮのプール（３４）から前記ＷＷＰＮを割り当て、前記ＷＷＰＮをＷＷＰＮの前記プールから除去するステップと、
‐前記新ポート識別子が前記ネットワークにログインされると（４３）、前記ネットワークを使用してアクセスされない持続性のある記憶装置（１４）上のＷＷＰＮのテーブル（３５）内に前記ＷＷＰＮを記憶するステップ（４６）と、
‐前記新ポート識別子が前記ネットワークからログオフされると（５３）、前記ＷＷＰＮを前記テーブルから削除して（５６）、前記ＷＷＰＮをＷＷＰＮの前記プールへ返すステップと
を有することを特徴とする方法。
【請求項２】
ＷＷＰＮの前記プールは、固有番号を生成するための方法を使用して生成される、請求項１に記載の方法。
【請求項３】
固有番号を生成するための前記方法は、ＷＷＰＮの前記生成のためのワールドワイドな固有数値を使用する、請求項２に記載の方法。
【請求項４】
前記物理的なネットワーク・ポートの前記ＷＷＰＮは、ＷＷＰＮの前記プール内にある、請求項１から３のいずれか１項に記載の方法。
【請求項５】
‐特徴のセットを定義するステップと、
‐特徴の前記セットから特徴を選択して、それを前記ＷＷＰＮに割り当てるステップと、
‐前記選択された特徴に基づいて、リソースのセットを選択するステップと、
‐リソースの前記セットを前記ＷＷＰＮに割り当てるステップと
をさらに含む、請求項１から４のいずれか１項に記載の方法。
【請求項６】
ＷＷＰＮの前記プールにおいて、前記ＷＷＰＮは「ロック解除」または「ロック」のいずれかとしてマーク付けされることができ、「ロック」としてマーク付けされたＷＷＰＮは、前記方法には使用されないことになり、前記方法は、
‐前記新ポート識別子がシステム構成から除去されると（５０）、前記ＷＷＰＮを「ロック」としてマーク付けするステップをさらに含む、請求項１から５のいずれか１項に記載の方法。
【請求項７】
‐前記新ポート識別子が前記ネットワークによって割り当てられた場合に、物理的なポートの仮想インスタンス（３２）を起動するステップ（４６）と、
‐前記新ポート識別子が前記ネットワークによって除去されると、前記仮想インスタンスを停止して（５６）、前記新識別子の前記ＷＷＰＮを、前記仮想インスタンスの固有の識別子と共に、前記メモリ（１１）内の最長時間未使用（ＬＲＵ）リスト（３６）内に記憶するステップと、
‐前記仮想インスタンスを再び起動するように要求されると（５０）、前記ＬＲＵリスト内の前記仮想インスタンスの前記固有識別子を検索するステップと、
‐前記仮想インスタンスの前記固有識別子が前記リスト内で見つかる場合には、前記ＷＷＰＮを、ＷＷＰＮの前記プールからのＷＷＰＮの代わりに使用するステップと
をさらに含む、請求項６に記載の方法。
【請求項８】
‐ネットワーク・エラーの場合に、前記仮想インスタンスが停止されると、前記仮想インスタンスの前記固有識別子を優先リストに加えるステップと、
‐仮想インスタンスを起動するように要求されると、前記優先リスト内を検索するステップと、
‐仮想インスタンスの前記固有識別子が前記優先リスト内で見つからない場合には、任意の時間の間、待機するステップと
をさらに含む、請求項７に記載の方法。
【請求項９】
プログラムがコンピュータ上で実行される場合に先の請求項１から８のいずれか１項に記載の方法を実施するためのソフトウェア・コード部分を備える、デジタル・コンピュータ・システム（１０）の前記内部メモリ（１１）に直接ロード可能なコンピュータ・プログラム。
【請求項１０】
コンピュータ（１０）によって実行可能なプログラム命令を具体化する、コンピュータが使用可能な媒体を備え、前記具体化されたプログラム命令が、先の請求項１から８のいずれか１項に記載の方法を実施するための手段を備える、コンピュータ・プログラム製品。
【請求項１１】
前記コンピュータ・プログラムは、ハイパーバイザ（２０）である、先の請求項９および１０のいずれかに記載のコンピュータ・プログラム。
【請求項１２】
サーバ・コンピュータを備えるコンピュータ・システム（１０）であって、前記サーバ・コンピュータは、ネットワーク・アダプタ（１５）を備え、数多くのオペレーティング・システム・インスタンス（２１）を提供するハイパーバイザ（２０）コンポーネントを実行し、前記システムは、先の請求項１から８のいずれか１項に記載の方法を実施するように適合された手段を備える、コンピュータ・システム。
【請求項１３】
前記オペレーティング・システム・インスタンスは、コンピュータ・システム・インターフェース（２２）に対して前記ハイパーバイザ（２０）を通じてアクセスし、前記ハイパーバイザは、アダプタ仮想化エンジン（３０）を備え、前記アダプタ仮想化エンジンは、先の請求項１から８のいずれか１項に記載の方法を実施するための手段を備え、ＷＷＰＮの前記プールおよび前記テーブルの前記管理は、前記ハイパーバイザの仮想アダプタ・ネーム・コントローラ（３３）コンポーネントによって制御される、請求項１２に記載のコンピュータ・システム。
【請求項１４】
ＷＷＰＮの前記プールおよびＷＷＰＮの前記テーブルは、前記オペレーティング・システム・インスタンスのいずれかによってクエリ可能である、請求項１３に記載のコンピュータ・システム。
【請求項１５】
ＷＷＰＮ（３４）の前記プール内の前記ＷＷＰＮは、「ロック」されていた後に、手動または自動的手段によって「ロック解除」としてマーク付け可能である、請求項１４に記載のコンピュータ・システム。
【請求項１６】
ＷＷＰＮの前記プールにおける前記ＷＷＰＮは、前記オペレーティング・システム・インスタンスによって割り当てることができない、請求項１３から１５のいずれか１項に記載のコンピュータ・システム。
【請求項１７】
前記記憶装置は、前記オペレーティング・システム・インスタンスによってアクセスすることができない、請求項１３から１６のいずれか１項に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに付属する物理的なポートの仮想インスタンスを管理するための方法、コンピュータ・プログラム製品、およびシステムに関する。
【０００２】
より特定的には、本発明は、接続されたコンピュータまたは装置それぞれが固有の識別子を有するネットワークに関する。一例として、ファイバ・チャンネル接続を伴うネットワークを説明する。
【背景技術】
【０００３】
機能的には、ファイバ・チャンネル（ＦＣ）は、高性能データ通信のために構成された双方向全二重式２地点間シリアル・データ・チャンネルである。ＦＣは、自身または固有の入出力コマンド・セットを有しないが「ＳＣＳＩ（小型コンピュータ・システム・インターフェース）用のファイバ・チャンネル・プロトコル」であるＦＣＰ、およびインターネット・プロトコルであるＩＰなどの任意の既存の上位プロトコル（ＵＬＰ）を転送することができる、一般化されたトランスポート機構を提供する。
【０００４】
ＦＣによって使用される最小の分割不可能な情報転送の単位は、フレームと称される。フレームは、データを転送するために使用される。フレームのサイズは、ハードウェアの実施によって左右され、ＵＬＰまたはアプリケーション・ソフトウェアには左右されない。このようなフレームは統合されて、シーケンスと称されるメッセージを形成する。あるシーケンスのフレームは、間違った順序で受信されることがある。１つ以上のシーケンスで、基本のトランザクションである交換が成り立つ。フレームは、フロー制御に使用される、データ・ペイロードを有しないリンク制御フレームと、カプセル化されたＵＬＰデータなどの、データ・ペイロードを有するデータ・フレームという２つのカテゴリに分類される。
【０００５】
例えば以下の参考文献などの、様々なＦＣ規格が存在する。
１．Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ―Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｐｒｏｔｏｃｏｌ  ｆｏｒ  ＳＣＳＩ，２ｎｄ  Ｖｅｒｓｉｏｎ（ＦＣＰ‐２），ＡＮＳＩ／ＩＮＣＩＴＳ  ３５０
２．Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ―Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｆｒａｍｉｎｇ  ａｎｄ  Ｓｉｇｎａｌｌｉｎｇ  Ｉｎｔｅｒｆａｃｅ（ＦＣ‐ＦＳ），ＡＮＳＩ／ＩＮＣＩＴＳ  ３７３。
【０００６】
ＦＣについてのさらなる詳細は、例えば、ロバート・Ｗ・ケンベル（Ｒｏｂｅｒｔ  Ｗ．Ｋｅｍｂｅｌ）の「Ｔｈｅ  Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｃｏｎｓｕｌｔａｎｔ‐‐‐Ａ  Ｃｏｍｐｒｅｈｅｎｓｉｖｅ  Ｉｎｔｒｏｄｕｃｔｉｏｎ」、１９９８年に見受けられる。
【０００７】
コンピュータまたは他の装置をＦＣに接続するには、特定のハードウェアが必要である。ＦＣハードウェアは、通常、コンピュータ・システムのＰＣＩ／ＰＣＩ‐Ｘ／ＰＣＩ‐Ｅｘｐｒｅｓｓスロットなどの既存の入出力（Ｉ／Ｏ）ハードウェアにプラグインされるＦＣアダプタ・カードの形式で提供される。各ＦＣアダプタは、実際のデータ通信をＦＣリンク上で行うＦＣハードウェア・エンティティである、少なくとも１つのＮポートを含む。
【０００８】
Ｎポートは、６４ビット値として実施される固有のワールドワイド・ポート・ネーム（ＷＷＰＮ）によって識別される。このＷＷＰＮは、通常、ＦＣハードウェアの製造時に割り当てられるが、ポート名が世界中で固有であることが保証できる場合には、他の手段によっても割り当てられることがある。Ｎポートは、発信元または応答側としての役割を果たすことが可能である。
【０００９】
ＦＣ接続は、２地点間リンク、または調停されたループ、またはファブリックと称される切り換えネットワークとして実施されてもよい。
【００１０】
ＦＣファブリックは、複数のＮポートが相互通信することができる相互接続ネットワークである。ファブリック上の入場／退場ポートは、Ｆポートと称され、各Ｎポートは、１つのＦポートに接続しなければならない、ファブリックは、接続された各Ｎポートが、ファブリックに付属する任意の他のＮポートと通信することを許可している。
【００１１】
ＦＣファブリックは、各付属のＮポートに対して、ファブリックにとってＮポートが固有に知られることになるアドレスである識別子を割り当てる。Ｎポート識別子は２４ビット値であるので、ＦＣファブリックは、１億６７００万個のＮポートまでをサポートできる。Ｎポート識別子は、ドメイン（最上位のバイト）と、領域と、ポートとからなり、それぞれは１バイトの長さである。Ｎポート識別子は、ＦＣフレームのヘッダのソース識別子（Ｓ＿ＩＤ）および宛先識別子（Ｄ＿ＩＤ）フィールドにおいて使用される。
【００１２】
ファブリックにおいて通信を開始するには、最初にファブリック内のＮポートとＦポートとの間で通信を確立して、その後に宛先Ｎポートとの通信を確立するという、複数の段階のログイン処理が必要である。第１のステップにおいて、Ｎポートのファブリック・ログインによって、ファブリック内で使用されるサービスのクラスと、フロー制御情報を含む他の通信パラメータとが設定される。Ｎポートのファブリック・ログインが完了すると、ネットワークにおける開始側Ｎポートおよび受信側Ｎポートは、ノード・ログインと称される第２のログイン処理を通して互いに通信を確立する。いくつかの通信パラメータがやり取りされて、送信が開始する。ＦＣは複数の種類の内部リソースおよび内部処理にシステムを接続するために使用することができるので、処理ログインと称されるさらなるログインが使用される。例えば、処理ログインは、２つの通信Ｎポート内の処理によってサポートされるＵＬＰに関連するパラメータを選択するのに使用される。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
今日のＦＣアダプタのほとんどは、１つのＮポートだけを提供する。複数のオペレーティング・システム（ＯＳ）インスタンスを実行するコンピュータにおいて、そのようなＮポートをこれらのインスタンスでどのように共有するかについて問題が生じる。そのような共有は、特に大規模な仮想化環境にとっては、ＦＣアダプタの数を極力抑え、コストを削減し、アダプタを最大限に利用するのに有利であろう。複数のＮポートを提供するＦＣアダプタを使用する場合でも、この問題は存在する。なぜならば、サポートされる必要がある処理の数は、ＦＣアダプタによって提供されるＮポートの数を上回ることが多いからである。
【００１４】
通常、複数のＯＳインスタンスを実行する機能は、（実行）ハイパーバイザと称されるソフトウェア層によって提供される。ハイパーバイザは、基本となるハードウェアをカプセル化して、基本となるハードウェアまたは互いに異なるハードウェア・アーキテクチャのいずれかのための仮想ハードウェア・インターフェースを提供する。例えば、ハイパーバイザは、コンピュータ・システムのファームウェアの一部であってもよく、オペレーティング・システムの一部であってもよく、またはＯＳインスタンス内の処理として実行する通常のプログラムであってもよい。ハイパーバイザの作業は、さらなるハードウェア機能によってサポートされることが多く、例えば特別のプロセッサ命令またはファームウェア層によってサポートされる。
【００１５】
ハイパーバイザの中には、コンピュータ・システムの複数の仮想画像を効果的に作成することができ、そのような仮想コンピュータ・システムにおいて実行するＯＳインスタンスに対して、まるで専ら実際のサーバ上で実行しているような錯覚を与えるほどであるものがある。これらのＯＳインスタンスは、（アダプタなどの）実際のＩ／Ｏエンティティに対してＩ／Ｏポートを介してアクセスし、構築ステップにおける仮想コンピュータ・システムに対して定義かつ割り当て可能である。ＯＳインスタンスは、それが実行中の場所である特定の仮想サーバに対して割り当てられたＩ／Ｏポートを使用して、Ｉ／Ｏ動作のみを行う場合がある。
【００１６】
米国特許出願第２００３／０２００２４７号および第２００４／００２５１６６号は、コンピュータ・システムにおいて、ＦＣアダプタを複数のＯＳインスタンスで並列的に共有するための方法を記載している。しかしながら、この共有機能は、特定のＦＣアダプタから送られるか、またはそこに宛てられたすべてのＦＣに対して同一のＮポート識別子が使用されるということによって生じる様々な欠陥を有する。その結果、このＮポート識別子は、複数のＯＳインスタンスを区別するために使用することができず、すべてのフレームが同一の開始側から来るように見え、したがって、応答は、同一のアドレスに送られてしまう。上記特許出願において提案されている解決策は、複数のＯＳインスタンスと物理的なＮポートとの間のＦＣフレーム・トラフィックを遮断、分析、および修正するというものである。
【００１７】
主な欠点の１つは、この解決策はホスト・ベースである点であり、この取り組みは、ＦＣファブリックに付属するホスト・コンピュータ・システム上で行われる必要があることを意味する。ＦＣはストレージ・エリア・ネットワーク（ＳＡＮ）のために主に使用される技術であり、ＳＡＮにおけるアクセス制御のための通常の方法およびそれに付属する記憶装置は、（ファブリックに記憶されたデータベースを使用して）ＳＡＮ自体によって管理されるので、これにより、ＳＡＮ管理運営がさらに複雑なものとなる。
【００１８】
他の欠点は、複数のＯＳインスタンスを実行するコンピュータ・システムの外側から特定のＯＳインスタンスに対してＦＣトランザクションを開始することができないという点である。この制約は、遮断される場合にフレーム・ヘッダに加えられる明白な応答識別子を必要とすることによって生じる。特定のＯＳインスタンスに送られることになるフレームに使用されるべき応答識別子は１つしかない。特定のＯＳインスタンスを識別できないので、どの入力フレームも、すべてのＯＳインスタンスに対して転送されなければならない。その後、ＯＳインスタンスは、フレームを受け入れて処理するかどうかを決定する必要がある。
【００１９】
そのような共有アダプタ環境に存在する他の欠陥は、ＦＣＰなどのＵＬＰに関連する。例えば、ＳＣＳＩ予約が適切に働かず、正確なＳＣＳＩステータスおよび検知データ処理が保証できず、ＳＣＳＩタスク管理機能が適切に働かず、ベンダー固有のＳＣＳＩコマンドが全く働かない場合もある。
【００２０】
ファブリックの接続されたストレージ・コントローラに対するＳＡＮアクセス制御は、典型的には、ゾーニングおよびＳＣＳＩ論理ユニット（ＬＵＮ）マスキングなどの方法によって実施される。ゾーニングおよびＬＵＮマスキングは、制御されたアセットのユーザを識別するために、ＷＷＰＮに依存する。ＬＵＮおよびＦＣＰをＵＬＰとして使用して、ＦＣホストは、共通のコントローラを共有するであろう複数の周辺装置をアドレス指定することができる。ゾーニングによって、ファブリックのＮポートをゾーンと称されるＮポート・グループに分割することができる。あるゾーン内のＮポートは、同一ゾーン内の他のＮポートと通信できるだけである。
【００２１】
ＦＣアダプタの共有問題を解決する１つのやり方が、米国特許出願第２００３／０１０３５０４号に開示されており、これは、後にＩＮＣＩＴＳ／ＡＮＳＩ  ＦＣ  フレーミングおよびシグナリング（ＦＣ−ＦＳ）規則１．６に組み込まれたものであり、ファブリックがどのようにＮポート識別子の仮想化を扱う必要があるかについて述べている。この出願は、単一の物理的なＮポートについて複数のＮポート識別子（ＮポートＩＤ）を取得するための方法を説明する。
【００２２】
Ｎポート識別子を取得するためには、Ｎポートは、最初に、「ファブリック・ログイン（Ｆａｂｒｉｃ  Ｌｏｇｉｎ）」（ＦＬＯＧＩ）拡張リンクサービス（ＥＬＳ）コマンドを付属のＦポートへ送ることによって、ファブリックにログインする。このステップにおいて、さらなるサービス・パラメータが転送されることになり、第１のＮポート識別子が割り当てられる。ＦＬＯＧＩが完了した後に、ファブリックは、さらなるＮポート識別子を割り当てるための準備を行う。他のＮポート識別子を取得するために、Ｎポートは、ゼロのＳ＿ＩＤを使用して、「ファブリック発見（Ｆａｂｒｉｃ  Ｄｉｓｃｏｖｅｒ）」（ＦＤＩＳＣ）ＥＬＳコマンドを送る。オペレーティング環境の崩壊を避けるために、さらなるＦＬＯＧＩコマンドの代わりにＦＤＩＳＣ  ＥＬＳを使用する。ＮポートがＦＤＩＳＣ  ＥＬＳをファブリックへ送ると、以下の機能を提供する。
１．ＷＷＰＮをファブリックへ転送するための物理的なＮポートのための手段を提供する。
２．物理的なＮポートのためのさらなるＮポート識別子を有効化および割り当てるために、信号をファブリックに提供し、ファブリックと物理的なＮポートとの両方が新しいＮポート識別子を使用して通常のフレーム受信および送信を開始できるようにする。
３．ファブリック内に保持されたデータベースをファブリックに更新させる信号を提供する。
【００２３】
新しいＮポートＩＤが割り当てられた場合、物理的なＮポートは、新しいＮポートＩＤを仮想アダプタと関連付けることができる。仮想アダプタは、ＯＳインスタンスのために新しいＮポートＩＤを使用して、フレームを生成および受信する物理的なＮポートの背後のエンティティである。したがって、複数の仮想アダプタを物理的なアダプタおよびそのＮポートに関連付けることができ、各仮想アダプタは、固有のＮポートＩＤを使用する。
【００２４】
新しいＮポートＩＤの割り当てには、固有のＷＷＰＮが利用可能であることと、これらのＷＷＰＮを仮想アダプタに対して自動的かつ持続的に割り当てることとが必要である。持続的（ｐｅｒｓｉｓｔｅｎｔ）とは、存続する（ｓｕｒｖｉｖｉｎｇ）という意味であってもよく、例えば、ＯＳインスタンスのリブート、コンピュータ・システムの電源オフ／電源オンの周期、またはＦＣアダプタのリブートであってもよい。したがって、複雑なＳＡＮを実装した大規模なコンピュータ・センターにおいては、使用中のすべてのＷＷＰＮが本当に固有であることを確実にするための非常に複雑なタスクとなりうる。
【課題を解決するための手段】
【００２５】
したがって、本発明の目的は、従来技術よりも改良されたネットワークに付属する物理的なポートの仮想インスタンスを管理するための方法、対応するコンピュータ・システム、およびコンピュータ・プログラム製品を提供することである。
【００２６】
本目的は、添付の請求項１，９，１０，および１２に記載されるような本発明によって達成される。
【００２７】
本発明は、単一の物理的なＦＣアダプタに対して、複数のＯＳインスタンスでこのＦＣアダプタを共有するための手段として、複数の仮想ＦＣアダプタを提供するために使用できるＦＣアダプタ仮想化エンティティを提案するものである。各仮想アダプタは、単一のＮポートＩＤを有する。物理的なＦＣアダプタが複数の物理的なＮポートを有する場合には、仮想アダプタの独立したセットをその物理的なアダプタの各Ｎポートに関連付けることができる。
【００２８】
ＦＣアダプタ仮想化エンティティは、ＦＣ仮想アダプタ・ネーム・コントローラ・エンティティから、ハイパーバイザ・システム構成において定義される各Ｉ／ＯポートのためのＷＷＰＮを取得する。このエンティティは、ある手法を使用してＷＷＰＮを作成してもよいし、またはＷＷＰＮのプールから取り出してもよい。物理的なＦＣアダプタの物理的なＮポートのＷＷＰＮを、仮想ＦＣアダプタのために使用することが可能である。ＦＣ仮想アダプタ・ネーム・コントローラは、提供するＷＷＰＮについてワールドワイドな固有性を保証する。
【００２９】
仮想ＦＣアダプタは、ＯＳインスタンスがＩ／Ｏポートを起動する場合に作成されてもよいし、その開始のための時間を節約するために、事前に作成されて、Ｉ／Ｏポートが起動されるとＩ／Ｏポートに関連付けられてもよい。いずれの場合にも、仮想アダプタは、Ｉ／Ｏポートに関連付けられると、ＦＤＩＳＣ  ＥＬＳコマンドを使用してファブリック・ログインを行って対応するＦＣのＮポートＩＤを取得するために、当該Ｉ／ＯポートのＷＷＰＴを使用する。ＷＷＰＮは、仮想アダプタが当該特定のＩ／Ｏポートに結びつけられている限り、仮想アダプタに関連付けられたままである。
【００３０】
Ｉ／ＯポートとそのＷＷＰＮとの関連付けは、コンピュータ・システムに結合された記憶装置上に関連テーブルを記憶することによって、持続的にすることができる。このように、コンピュータ・システムの電源オフ／電源オン周期またはハイパーバイザの再開は、ＷＷＰＮのＩ／Ｏポートに対するマッピングに対して影響を及ぼさない。ＷＷＰＮは、ＦＤＩＳＣの発行と、ＷＷＰＮに対するＮポートＩＤの割り当てとを通して、適切に認証された仮想サーバおよびオペレーティング・システム・インスタンスのみが割り当てられたリソースに到達することができることを保証する。
【００３１】
本発明は、単一の物理的なＦＣアダプタを複数のＯＳインスタンスでトランスペアレントに共有することを可能にする。アダプタは、ＯＳインスタンスによって必要とされる任意の特殊なコマンドなしで、自動的に共有される。
【００３２】
本発明のさらなる重要な局面は、ゾーニングおよびＬＵＮマスキングなどの通常のＳＡＮ管理運営モデルをサポートすることである。これによって、ホスト・ベースのＳＡＮ管理運営ステップおよびそれに伴う上述の問題を回避する。また、これによって、ＳＡＮ管理運営の複雑性を大幅に削減する。これにより、ＦＣＰなどのＵＬＰに対する制約を解消する。
【００３３】
本発明の他の局面は、仮想アダプタを使用するＦＣトランザクションは、コンピュータ・システムの外部から開始されて、特定のＯＳインスタンスへ向けられることができるということである。
【００３４】
本発明は、例えばアダプタの帯域幅などの性能特徴といった、仮想アダプタの特徴を規定することができる。これにより、各仮想アダプタの性能上の必要性に基づいて、同一の物理的なＮポートを共有する仮想アダプタ間でバランスを取ることができる。
【００３５】
本発明およびその利点に関して、添付の図面と共に以下の説明が参照される。
【発明を実施するための最良の形態】
【００３６】
図１は、本発明を使用できるコンピュータ・システム１０を示す。共有メモリ１１は、１つ以上の中央処理装置（ＣＰＵ）１２に結合される。また、これらのＣＰＵ１２は、Ｉ／Ｏサブシステム１３に結合される。別個の記憶装置１４が、ＣＰＵ１２によってアクセスできる。記憶装置１４の内容は、持続的であり、電源オフ／電源オンの周期でも存続する。ＦＣアダプタ１５は、Ｉ／Ｏサブシステム１３を介してＣＰＵ１２に対してアクセス可能であり、このＦＣアダプタ１５は、ＦＣファブリック１６に結合される。ＦＣアダプタ１５は、ファブリック１６のＦポート１８に接続される物理的なＮポート１７を有する。
【００３７】
図２に示すように、コンピュータ・システムは、ＣＰＵ１２上のハイパーバイザ２０を実行中であり、ＣＰＵ１２は、同時に実行さる複数のＯＳインスタンス２１を制御する。ハイパーバイザ２０は、ＦＣアダプタ１５をエミュレートする。ＯＳインスタンス２１は、通常のＦＣアダプタ・インターフェースを認識するが、実際には、ＦＣアダプタ１５にアクセスするために、Ｉ／Ｏ要求をハイパーバイザ２０を通して処理させる。ＯＳインスタンス２１に対するインターフェースを担うハイパーバイザの要素は、仮想機構インターフェース（ＶＭＩ）２２と称される。ＶＭＩ２２は、ソフトウェアによって使用可能な任意の種類のコンピュータ・インターフェースであってもよい。本発明の好ましい実施形態において、記憶装置１４は、ハイパーバイザ２０の内部データを記憶するために使用され、ＯＳインスタンス２１によって直接アクセス可能ではない。
【００３８】
ＦＣアダプタ仮想化エンティティ（ＡＶＥ）３０は、図３に示すハイパーバイザ２０の要素として実施されている。その目的は、ＦＣアダプタ１５をアクセスするＯＳインスタンス２１からのＩ／Ｏ要求を遮断することである。典型的には、ＯＳインスタンス２１ａは、Ｉ／Ｏ要求を通信部３１において作成する。そのような通信部３１は、例えば、デバイス・ドライバとして実施されてもよい。
【００３９】
通信部３１は、Ｉ／Ｏポート３２を使用して、ＦＣアダプタ１５と通信する。本発明の目的のためには、Ｉ／Ｏポート３２は、要求キューと、応答キューとを備えれば十分である。これらのキューは、ＡＶＥ３０および通信部３１によって使用されることになる。通信部は、ＦＣアダプタ１５に対する要求を要求キューに置く。要求には、そのような要求に関連付けが可能な、メモリ内に記憶されたデータをＡＶＥ３０がアクセスすることができるようにするメモリ１１のアドレスを含む。このデータは、ＡＶＥ３０によってＦＣアダプタ１５へ転送されることになるＦＣフレームを備える。ハイパーバイザ２０は、ＦＣアダプタ１５からの応答を応答キューに置く。応答は、ハイパーバイザ２０によってメモリ１１に記憶されるデータを通信部がアクセスすることができるようにするメモリ１１のアドレスを含む。また、メモリ１１内のデータは、ＦＣアダプタ１５によって受信されているＦＣフレームを備える。
【００４０】
Ｉ／Ｏポート３２を使用するためには、本発明がなくてもそうであるように、通信部３１によって開始される必要がある。起動されたＩ／Ｏポート３２毎に、ＡＶＥ３０は、特別のデータ構造をメモリ１１に作成する。これらのデータ構造は、仮想ＦＣアダプタと称される。ハイパーバイザ２０の関連インターフェースには、ＯＳインスタンス２１ａがＦＣフレームを送受信することができるようにするインターフェースがある。特殊なデータ構造は、これらのインターフェースの実施のために使用される。
【００４１】
Ｉ／Ｏポートの起動中に、ＡＶＥ３０は、新しいＮポート識別子を、Ｉ／Ｏポート３２に関連付けられ対応する仮想アダプタに記憶された（上述のような）ファブリック１６から取得する。Ｉ／Ｏポート３２を使用する通信部３１から送られた各フレームについて、ＡＶＥ３０は、このＩ／Ｏポート３２に関連付けられたＮポートＩＤを、ＦＣフレーム・ヘッダのＳ＿ＩＦフィールド内に置く。したがって、ＡＶＥ３０によってファブリック１６から受信され、フレーム・ヘッダのＤ＿ＩＤフィールド内にこのＮ＿ポートＩＤを有するすべてのＦＣフレームは、Ｉ／Ｏポート３２を介して、対応するＯＳインスタンス２１ａへ転送される。
【００４２】
Ｉ／Ｏポート３２が、特殊なシステム構築ステップにおいて、ハイパーバイザ２０によって生成される。このステップにおいて、ＡＶＥ３０は、仮想アダプタ・ネーム・コントローラ（ＶＡ‐ＮＣ）３３エンティティを使用して、ＷＷＰＮをＩ／Ｏポート３２に割り当てる。ＶＡ‐ＮＣ３３は、ＷＷＰＮのプール３４を保持し、そこから、Ｉ／Ｏポート３２に対して割り当てられかつプール３４から除去される１つのＷＷＰＮを取る。Ｉ／Ｏポート３２に割り当てられていたＷＷＰＮは、仮想アダプタ・ネーム割り当てテーブル（ＶＡ‐ＮＡＴ）と称されるテーブル３５内のＶＡ‐ＮＣ３３によって保持される。ＶＡ‐ＮＡＴは、持続的な記憶装置１４に記憶される。システム構築ステップにおいて、Ｉ／Ｏポート３２のＯＳインスタンス２１ａに対する関連付けも規定される。通信部３１が１つのＩ／Ｏポートのみを使用することができることに対する制約はない。
【００４３】
Ｉ／Ｏポート３２の起動のためのステップを図４に示す。通信部３１は、Ｉ／Ｏポート３２の起動をトリガする（ステップ４０）。（ステップ４１）Ｉ／Ｏポート３２が既に起動されていれば（ステップ４２）、ＡＶＥ３０は、エラーを通信部３１に提示する。そうでなければ、ＦＤＩＳＣ  ＥＬＳコマンドを使用してファブリックにログインするために、Ｉ／Ｏポート３２のＷＷＰＮが使用されることになる（ステップ４３）。（ステップ４４）ログインが成功しなかった場合には、（ステップ４５）ＡＶＥ３０は、エラーを通信部に提示する。そうでなければ、ＡＶＥ３０は、Ｉ／Ｏポート３２を起動されているとマーク付けし、ファブリック１６によって提供されたＮポートＩＤを仮想アダプタに記憶して（ステップ４６）、通信部３１に返す（ステップ４７）。
【００４４】
図５は、Ｉ／Ｏポート３２の起動停止のためのステップを示す。通信部３１は、Ｉ／Ｏポート３２の起動停止をトリガする（ステップ５０）。（ステップ５１）Ｉ／Ｏポート３２が起動されていなければ、ＡＶＥはエラーを通信部３１に提示する（ステップ５２）。そうでなければ、Ｉ／Ｏポート３２に関連付けられたＮポートＩＤは、参照２で説明した周知の方法を使用して、ファブリック１６からログアウトされることになる（ステップ５３）。（ステップ５４）ログアウトが成功しなれば、ＡＶＥ３０は、エラーを通信部３１に提示する（ステップ５５）。そうでなければ、（ステップ５６）Ｉ／Ｏポート３２は起動停止されているとマーク付けされることになり、ＷＷＰＮについての関連するＮポートＩＤ入力は、仮想アダプタから削除されることになる。その後、ＡＶＥ３０は、起動停止の完了に成功する（ステップ５７）。
【００４５】
ハイパーバイザ２０の構築ステップにおいて生成されているＩ／Ｏポートは、システム構成から除去されてもよい。Ｉ／Ｏポートがシステム構成から除去される場合には、対応するＷＷＰＮがＷＷＰＮのプール３４に再び追加され、「ロック」とマーク付けされる。ＶＡ‐ＮＣ３３は、「ロック」とマーク付けされたをＷＷＰＮを、新しく作成されたＩ／Ｏポート３２、すなわち、システム構成に後で追加されるＩ／Ｏポートに対する割り当てのためには使用しないことになる。
【００４６】
関連Ｉ／Ｏポート３２がハイパーバイザ２０のシステム構成から除去される場合のＷＷＰＮのロックは、このＷＷＰＮがハイパーバイザ２０のシステム構成に追加される他のＩ／Ｏポート３２に対して再び割り当てられることを回避するために行われなければならない。例えば、このＷＷＰＮアクセスをある装置（ＬＵＮ）に与えるＬＵＮマスク設定など、アクセス規則がこのＷＷＰＮについてＳＡＮにいまだ確立されている場合がそうであろう。しかしながら、そのようにＷＷＰＮを新しいＩ／Ｏポートと共に再使用することが意図されていることはほとんどなく、所定のＯＳインスタンスのみがＳＡＮ内の所定のリソースを使用することになっている。
【００４７】
したがって、これらのロックされたＷＷＰＮを回復するため、およびすべての使用可能なＷＷＰＮがロックされているかまたは使用中であるためにＩ／Ｏポートに割り当てることができるＷＷＰＮがないという状況を防止するために、ＶＡ‐ＮＣ３３は、インターフェースを、ＷＷＰＮをロック解除することができるハイパーバイザ２０に追加する。よって、例えば、システム管理者は、意図しないアクセス権がないことが検証されたＷＷＰＮをロック解除することができ、したがって、このＷＷＰＮを、任意のオペレーティング・システム・インスタンス２１ａに割り当てることが可能なＩ／Ｏポート３２に安全に再割り当てすることができる。
【００４８】
本発明の一実施形態において、ハイパーバイザ２０のシステム構成から除去されているＩ／Ｏポートに関連付けられたＷＷＰＮは、メモリ１１内に（または持続的な記憶装置１４上に）記憶された最長時間未使用リスト３６に追加される。
【００４９】
この最長時間未使用リスト３６は、先入れ先出しリストとして実施される。このリスト３６の入力は、ＷＷＰＮを、当該ＷＷＰＮに対して割り当てられたＩ／Ｏポート３２の識別子と共に含む。対応のＷＷＰＮがまだ最長時間未使用リスト３６にあるのに（識別子によって示されるように）同一のＩ／Ｏポート３２が再び再定義される場合には、同一のＷＷＰＮが当該Ｉ／Ｏポートに再び割り当てられることになる。このように、Ｉ／Ｏポート３２をハイパーバイザ２０のシステム構成から一時的に除去して、Ｉ／Ｏポート３２をハイパーバイザ２０のシステム構成に再び追加する際に他のＷＷＰＮをＩ／Ｏポート３２に割り当てるという場合のように、ＳＡＮを再構築する必要はない。
【００５０】
最長時間未使用リスト３６の長さは、制限されていてもよく、ＡＶ‐ＮＡＴ３５の範囲に入る全ての可能なＷＷＰＮがこのテーブルに保持することができるわけではない。ＷＷＰＮが最長時間未使用リストから外れる場合には、ＷＷＰＮのプール３４に再び追加されて、「ロック」としてまだマーク付けされたままであることになる。最長時間未使用リスト３６を先入れ先出しリストとして保持する代わりに、リスト３６から入力を除去するための判断には、様々な他の方策が可能である。
【００５１】
最長時間未使用リスト３６を使用すれば、ハイパーバイザ２０の大規模で動的に変化するシステム構成には、かなり大量のメモリ１１の節約となる場合があるが、それは、ロックされたＷＷＰＮに関連した仮想アダプタの特別なデータ構成に割り当てられるすべてのメモリが開放可能だからである。そうでなければ、ＳＡＮの再構築を回避するためには、Ｉ／Ｏポートとその関連仮想アダプタを維持する必要があるだろう。
【００５２】
プール３４に記憶されたＷＷＰＮは、コンピュータ・システム１０に割り当てられ、プール３４は、持続的な記憶装置１４上に記憶される。ＷＷＰＮが、すべての他のＳＡＮから完全に隔離された構成で使用されるのでワールドワイドに固有である必要がない場合には、ＶＡ‐ＮＣ３３は、ＷＷＰＮのプールから取り出す代わりに、新しいＩ／Ｏポート定義のためにＷＷＰＮを生成するための手法を使用することもできる。可能な手法の１つは、Ｉ／Ｏポート３２の識別子を組み合わせることになる共通の接頭語を使用することである。
【００５３】
実際にワールドワイドで固有のＷＷＰＮを生成するための一手法を使用することもできる。この手法に関して、世界中で固有の接頭語がコンピュータ・システム１０に割り当てられ、この接頭語が、例えばＩ／Ｏポート３２の識別子と組み合わせられることになる。さらに他の実施形態において、物理的なＮポートとその関連するＷＷＰＮとは、米国特許出願第２００４／００２５１６６号に記載されたようなアクセス制御機構を使用して、米国特許出願第２００３／０２００２４７号に記載されたような共有モードで使用される。これは、並列的に物理的なＮポートを共有する必要のあるＯＳインスタンス２１の数が物理的なＮポート上でサポートできる仮想アダプタの数より多い場合には活用できる。他の実施形態において、関連して構成されたＷＷＰＮを伴う１つ以上の仮想アダプタは、同様の共有仮想アダプタとして使用できる。
【００５４】
本発明の一実施形態において、ＶＡ‐ＮＣ３３は、ＷＷＰＮおよびＩ／Ｏポートに現在割り当てられているＮポートＩＤをクエリすることができるハイパーバイザ２０に対してインターフェースを付加する。これは、ＳＡＮ管理運営目的で、ＯＳインスタンス２１ａによって使用できる。
【００５５】
物理的なＮポート１７からファブリック１６への最初のログインは、常にＦＬＯＧＩ  ＥＬＳコマンドを使用して行われなければならない。一実施形態において、物理的なＮポート１７に割り当てられたＷＷＰＮが、このＦＬＯＧＩ型のログインに使用される。ＦＣ‐ＦＳ規格（参照１を参照）は、ファブリック１６からのＦＬＯＧＩログインを、Ｎポート１７に関連した仮想アダプタからの他のファブリック１６のログインがまだ有効である間に行ったＮポート１７のログアウトを許可することになるが、Ｎポート１７が再びファブリック１６にログインされる場合に問題が生じる場合がある。その理由は、ＦＬＯＧＩで特定されたＷＷＰＮは、物理的なＮポートの持続的なポート名として使用され、この物理的なＮポートのどのログインもまだ有効である限り、このＮポートに関連付けられ、かつ、ファブリック１６によって保持されたままとなるからである。特定的には、ＦＬＯＧＩログインが、ＦＤＩＳＣログインがまだ有効である間に、対応するログアウトによって生じて、ＦＬＯＧＩログインのために以前に使用されたＷＷＰＮがファブリック１６への他のログインのために使用される場合には、ファブリック１６は、同一のＷＷＰＮを２回見る場合があるので、ＳＡＮ管理アプリケーションに対する妨害を引き起こすことになる場合がある。
【００５６】
したがって、本発明の一実施形態において、ＦＬＯＧＩ型のログイン用に使用されるＮポート１７のＷＷＰＮのためにファブリック１６によって割り当てられたＮポートＩＤは、この物理的なＮポートについての追加のＮポートＩＤがまだファブリック１６にログインされている場合、すなわち、これらのＮポートＩＤに関連したＩ／Ｏポート３２がまだ有効である場合には、このＮポートＩＤに関連したＩ／Ｏポート３２の起動停止中にはログアウトされない（ステップ５４参照）。
【００５７】
あるＮポートがファブリック１６から接続解除となる場合がある。これが生じる場合には、Ｎポートを使用する不完全な交換についてのすべてのＦＣフレームは無効化されて、すべてのＮポートＩＤは、ファブリック１６から自動的にログアウトされる。その種類によっては、応答不要のステータスを示すＦＣフレームをＡＶＥ３０に送るか、またはＡＶＥ３０にとってアクセス可能なＦＣアダプタ１５のレジスタに特別な値を記憶させることによって、接続解除がＦＣアダプタ１５によって示される。ＡＶＥ３０は、影響を受けたＯＳインスタンス２１ｂに対して、その仮想アダプタがログアウトされたことを通知する。接続解除の結果ログアウトされた各ＮポートＩＤについては、影響を受けた通信部３１は、影響を受けたＩ／Ｏポート３２を起動解除して、再び起動する必要がある。
【００５８】
Ｎポートの接続解除の影響が、当該接続解除の影響を受けたＯＳインスタンス２１ｂにおけるアプリケーション・プログラムに対して及ぶことを最小限にするために、Ｉ／Ｏポート３２は、再起動を優先させることができる。簡易な優先化による解決策の１つは、メモリ１１内にある、以前に有効だったＩ／Ｏポートの優先リストを使用する。Ｉ／Ｏポート３２の起動毎に、ＡＶＥ３０は、この優先リストを検索して、優先リスト内に当該Ｉ／Ｏポートを見つけた場合（すなわち、起動が接続解除されたＩ／Ｏポートの再起動である場合）、起動は即座に継続する。そうでなければ、ＡＶＥ３０は、以前に有効だったＩ／Ｏポートが再起動可能になる前にＮポートＩＤを使ってしまわないように、起動を継続する前に一定時間待機する。優先リスト内のエントリは、Ｉ／Ｏポートの起動中に見つかると削除され、ある有効期限の経過後に除去される。
【００５９】
さらに、仮想アダプタについての特徴を定義することができる。例えば、仮想アダプタを使用して、各ＯＳインスタンス２１ａの性能要件に基づいて、同一の物理的なＮポート１７を共有する仮想アダプタ間のバランスを取るために、ある性能特徴を定義することができる。例えば、仮想アダプタについての帯域幅を増加させるために、「高帯域幅」によって、ＡＶＥ３０によるより大きなメモリ・バッファの使用を定義できるだろう。仮想アダプタについての帯域幅を減少させるために、「低帯域幅」によって、ＡＶＥ３０による小さなメモリ・バッファの使用を定義できるだろう。
【００６０】
別個の記憶装置１４は、コンピュータ・システム１０に直接付属している必要はない。この記憶装置１４に対する、例えばネットワーク・サービスを介した間接的なアクセスを提供する他のコンピュータ・システムに付属することもできる。
【００６１】
本発明は、好ましくは、ソフトウェア、機械が読み取り可能な命令のシーケンスとして実施され、特に、１つ以上のハードウェア・マシン上で実行するいわゆるファームウェアであって、これらハードウェア・マシンを制御監視して、ハードウェアに対する好適に定義されたインターフェースを実施するのに使用されることが多い、他のプログラム（特にオペレーティング・システム）が使用できるファームウェアとして実施される。特定の実施形態を図示および説明してきたが、本発明の様々な修正が当業者にとっては明らかだろう。
【図面の簡単な説明】
【００６２】
【図１】本発明を実施可能なコンピュータ・システムのブロック図である。
【図２】複数のＯＳインスタンスを制御するハイパーバイザによるＦＣアダプタのカプセル化のブロック図である。
【図３】本発明に係るハイパーバイザの実施形態のブロック図である。
【図４】本発明に係る方法の一実施形態の例示的なフローチャートである。
【図５】本発明に係る方法の一実施形態の例示的なフローチャートである。
【図１】
2009500702.tif 000003
【図２】
2009500702.tif 000004
【図３】
2009500702.tif 000005
【図４】
2009500702.tif 000006
【図５】
2009500702.tif 000007
【国際調査報告】
2009500702.tif 000008
2009500702.tif 000009