(57)【要約】【課題】サーバ間で仮想化されたＩ／Ｏパスを構成し、エンド・ツー・エンドでのＱｏＳを保証する。【解決手段】情報処理システムは、グローバルＱｏＳ管理部と、処理ノードに対応したローカルＱｏＳ管理部および論理Ｉ／Ｏ管理部を備える。グローバルＱｏＳ管理部は、情報処理システムにおいてエンド・ツー・エンドで仮想的なＩ／Ｏパスを構成し、仮想的なＩ／Ｏパスへの帯域を割当、変更、削除するＱｏＳ割当管理部と、スイッチファブリック全体の状態情報と全ての仮想的なＩ／Ｏパスの状態情報を保持するグローバルＱｏＳ管理テーブルと、スイッチファブリック全体の状態情報を監視する帯域監視部とを備える。【選択図】図２
2009075718.tif 000002
【特許請求の範囲】
【請求項１】
物理Ｉ／Ｏポートに仮想Ｉ／Ｏポートを設定可能なＩ／Ｏアダプタを備えたノードを複数有し、前記ノードのＩ／ＯアダプタをＩ／Ｏスイッチのポートに接続し、前記複数のノード間で前記仮想Ｉ／Ｏポートを介してデータの転送を行う情報処理システムにおける仮想Ｉ／Ｏパスの管理方法であって、
前記複数のノードのうちのいずれか一つが、前記Ｉ／Ｏスイッチのポートの情報を収集するステップと、
前記各ノードがそれぞれのノードが備えたＩ／Ｏアダプタの仮想Ｉ／Ｏポート毎に帯域を取得するステップと、
前記複数のノードのうちのいずれか一つが、前記Ｉ／Ｏスイッチのポートの情報と、前記帯域を取得するステップと、
前記Ｉ／Ｏスイッチのポートの情報と、前記帯域を取得した前記ノードが、送信元のノードの情報と送信先のノードの情報と帯域を含む仮想Ｉ／Ｏパスの生成要求を受け付けるステップと、
前記仮想Ｉ／Ｏパスの生成要求を受け付けたノードが、前記Ｉ／Ｏスイッチのポートの情報から前記送信元のノードから送信先のノードまでの仮想Ｉ／Ｏパスの経路を選択するステップと、
前記仮想Ｉ／Ｏパスの生成要求を受け付けたノードが、前記選択した仮想Ｉ／Ｏパスの経路上の仮想Ｉ／Ｏポートを抽出し、抽出した仮想Ｉ／Ｏポートに前記取得した帯域と前記生成要求に含まれる帯域から当該仮想Ｉ／Ｏパスを設定可能か否かを判定するステップと、
前記仮想Ｉ／Ｏパスの生成要求を受け付けたノードが、前記仮想Ｉ／Ｏパスを設定可能と判定しときに、前記仮想Ｉ／Ｏパス上のポートに当該仮想Ｉ／Ｏパスを設定するステップと、
を含むことを特徴とする仮想Ｉ／Ｏパスの管理方法。
【請求項２】
前記仮想Ｉ／Ｏパスを設定するステップは、
前記仮想Ｉ／Ｏパスの生成要求を受け付けたノードが、前記Ｉ／Ｏアダプタの物理ポートに設定した仮想Ｉ／Ｏパスに対応する仮想Ｉ／Ｏポートに仮想Ｉ／Ｏパス識別子を付与し、
前記仮想Ｉ／Ｏパスを設定したＩ／Ｏアダプタの物理ポートに関連する仮想Ｉ／Ｏパス識別子と、該仮想Ｉ／Ｏパス識別子に対応する仮想Ｉ／Ｏポートの状態情報を保持するステップをさらに含むことを特徴とする請求項１に記載の仮想Ｉ／Ｏパスの管理方法。
【請求項３】
前記Ｉ／Ｏスイッチのポートの情報を収集するステップは、
前記Ｉ／Ｏスイッチの情報と、Ｉ／Ｏスイッチのポートの情報と、前記ポートに設定された仮想Ｉ／Ｏパスの情報を収集することを特徴とする請求項１に記載の仮想Ｉ／Ｏパスの管理方法。
【請求項４】
前記仮想Ｉ／Ｏパスを設定するステップは、
前記Ｉ／Ｏアダプタの物理ポートに設定した仮想Ｉ／Ｏパスに対応する仮想Ｉ／Ｏポートに仮想Ｉ／Ｏパス識別子を付与し、
前記仮想Ｉ／Ｏポート毎に帯域を取得するステップは、
前記Ｉ／Ｏアダプタの物理ポートに関連する仮想Ｉ／Ｏパス識別子と、該仮想Ｉ／Ｏパス識別子に対応して構成される仮想Ｉ／Ｏポートで送受信する帯域を取得することを特徴とする請求項１に記載の仮想Ｉ／Ｏパスの管理方法。
【請求項５】
前記複数のノードのうちのいずれか一つが、前記Ｉ／Ｏスイッチのポートの情報を収集するステップは、
前記複数のノードの稼動状態に基づいて一つのノードを選択するステップを含み、
前記仮想Ｉ／Ｏポート毎に帯域を取得するステップは、
前記仮想Ｉ／Ｏパスが設定されたＩ／Ｏスイッチのポートの帯域を取得するステップを含み、
前記仮想Ｉ／Ｏパスを設定可能か否かを判定するステップは、
前記仮想Ｉ／Ｏパスの生成要求を受け付けたノードが、前記選択した仮想Ｉ／Ｏパスの経路上のポートを抽出し、抽出したポートから取得した帯域と、前記仮想Ｉ／Ｏポートの帯域及び前記生成要求に含まれる帯域から当該仮想Ｉ／Ｏパスを設定可能か否かを判定し、
前記選択されたノードは、前記収集したＩ／Ｏスイッチのポートの情報を、前記仮想Ｉ／Ｏパスの生成要求を受け付けるノードへ送信することを特徴とする請求項１に記載の仮想Ｉ／Ｏパスの管理方法。
【請求項６】
物理Ｉ／Ｏポートに仮想Ｉ／Ｏポートを設定可能なＩ／Ｏアダプタを備えたノードを複数有し、前記各ノードのＩ／Ｏアダプタを接続するポートを備えたＩ／Ｏスイッチを備えて、前記複数のノード間で前記仮想Ｉ／Ｏポートを介してデータの転送を行う情報処理システムであって、
前記ノードは、
前記Ｉ／Ｏスイッチのポートの情報を収集するスイッチ情報取得部と、
前記Ｉ／Ｏアダプタの仮想Ｉ／Ｏポート毎に帯域を取得するローカル管理部と、を備え、
前記複数のノードのうちの少なくとも一つは、前記複数のノードのＩ／Ｏアダプタの仮想Ｉ／Ｏポート間を接続する仮想Ｉ／Ｏパスを設定するグローバルＱｏＳ管理部を有し、
前記グローバルＱｏＳ管理部は、
前記スイッチ情報取得部とローカル管理部から前記Ｉ／Ｏスイッチのポートの情報と仮想Ｉ／Ｏポート毎の帯域を各ノードから取得するローカル情報取得部と、
送信元のノードの情報と送信先のノードの情報と帯域を含む仮想Ｉ／Ｏパスの生成要求を受け付けて、前記Ｉ／Ｏスイッチのポートの情報から前記送信元のノードから送信先のノードまでの仮想Ｉ／Ｏパスの経路を選択する仮想Ｉ／Ｏパス選択部と、
前記選択した仮想Ｉ／Ｏパスの経路上の仮想Ｉ／Ｏポートを抽出し、当該抽出した仮想Ｉ／Ｏポートに前記取得した帯域と前記生成要求に含まれる帯域から当該仮想Ｉ／Ｏパスを設定可能か否かを判定し、当該仮想Ｉ／Ｏパスを設定可能なときには、前記仮想Ｉ／Ｏパス上のポートに当該仮想Ｉ／Ｏパスを設定する仮想Ｉ／Ｏパス設定部と、
を有することを特徴とする情報処理システム。
【請求項７】
前記仮想Ｉ／Ｏパス設定部は、
前記Ｉ／Ｏアダプタの物理ポートに設定した仮想Ｉ／Ｏパスに対応する仮想Ｉ／Ｏポートに仮想Ｉ／Ｏパス識別子を付与し、前記仮想Ｉ／Ｏパスを設定したＩ／Ｏアダプタの物理ポートに関連する仮想Ｉ／Ｏパス識別子と、該仮想Ｉ／Ｏパス識別子に対応する仮想Ｉ／Ｏポートの状態情報を保持することを特徴とする請求項６に記載の情報処理システム。
【請求項８】
前記スイッチ情報取得部は、
前記Ｉ／Ｏスイッチの情報と、Ｉ／Ｏスイッチのポートの情報と、前記ポートに設定された仮想Ｉ／Ｏパスの情報を収集することを特徴とする請求項６に記載の情報処理システム。
【請求項９】
前記仮想Ｉ／Ｏパス設定部は、
前記Ｉ／Ｏアダプタの物理ポートに設定した仮想Ｉ／Ｏパスに対応する仮想Ｉ／Ｏポートに仮想Ｉ／Ｏパス識別子を付与し、
前記ローカル管理部は、
前記Ｉ／Ｏアダプタの物理ポートに関連する仮想Ｉ／Ｏパス識別子と、該仮想Ｉ／Ｏパス識別子に対応して構成される仮想Ｉ／Ｏポートで送受信する帯域を取得することを特徴とする請求項６に記載の情報処理システム。
【請求項１０】
前記ローカル管理部は、
前記Ｉ／Ｏアダプタの仮想Ｉ／Ｏポート毎の帯域と、前記Ｉ／Ｏスイッチのポートの帯域を取得し、
前記仮想Ｉ／Ｏパス設定部は、
前記選択した仮想Ｉ／Ｏパスの経路上のポートを関連ポートとして抽出し、抽出した関連ポートから取得し帯域と、前記仮想Ｉ／Ｏポートの帯域及び前記生成要求に含まれる帯域から当該仮想Ｉ／Ｏパスを設定可能か否かを判定し、当該仮想Ｉ／Ｏパスを設定可能なときには、前記仮想Ｉ／Ｏパス上のポートに当該仮想Ｉ／Ｏパスを設定することを特徴とする請求項６に記載の情報処理システム。
【請求項１１】
前記仮想Ｉ／Ｏパス選択部は、
予め設定した仮想Ｉ／Ｏパスの候補の中から、予め設定された条件に従って仮想Ｉ／Ｏパスを選択することを特徴とする請求項６に記載の情報処理システム。
【請求項１２】
前記仮想Ｉ／Ｏパス選択部は、
前記仮想Ｉ／Ｏパスの経路長または仮想Ｉ／Ｏパスを構成する各ポートに設定された帯域あるいは仮想Ｉ／Ｏパスを構成する各ポートの利用帯域のいずれかを選択条件として予め設定した仮想Ｉ／Ｏパスの候補の中から仮想Ｉ／Ｏパスを選択することを特徴とする請求項１１に記載の情報処理システム。
【請求項１３】
前記グローバルＱｏＳ管理部は、
前記設定した仮想Ｉ／Ｏパスを削除する仮想Ｉ／Ｏパス削除部と、
前記設定した仮想Ｉ／Ｏパスを変更するする仮想Ｉ／Ｏパス変更部と、を備えたことを特徴とする請求項６に記載の情報処理システム。
【請求項１４】
前記ノードは、
計算機資源を論理区画に分割する仮想化部と、
前記論理区画を管理する論理区画管理部とを備え、
前記ローカル管理部は、
論理区画管理部により管理される論理区画の識別子との対応を保持するマッピング部を備え、
前記仮想Ｉ／Ｏパス選択部は、
前記論理区画から他のノードへの仮想Ｉ／Ｏパスを選択することを特徴とする請求項６に記載の情報処理システム。
【請求項１５】
前記Ｉ／Ｏスイッチのポートの情報と、前記帯域を取得した前記ノードが、送信元のノードの情報と送信先のノードの情報と帯域を含む仮想Ｉ／Ｏパスの生成要求を受け付けるステップは、
前記仮想Ｉ／Ｏパスの生成要求に、新たに設定する仮想Ｉ／Ｏパスの優先度を含み、
前記仮想Ｉ／Ｏパス上のポートに当該仮想Ｉ／Ｏパスを設定するステップは、
前記帯域と優先度に基づいて前記仮想Ｉ／Ｏパス上のポートに当該仮想Ｉ／Ｏパスを設定することを特徴とする請求項１に記載の仮想Ｉ／Ｏパスの管理方法。
【請求項１６】
物理Ｉ／Ｏポートに仮想Ｉ／Ｏポートを設定可能なＩ／Ｏアダプタを備えたノードを複数有し、前記ノードのＩ／ＯアダプタをＩ／Ｏスイッチのポートに接続し、前記複数のノード間で前記仮想Ｉ／Ｏポートをデータの転送を行う仮想Ｉ／Ｏパスを設定するプログラムであって、
前記Ｉ／Ｏスイッチのポートの情報を取得する手順と、
前記各ノードから前記Ｉ／Ｏアダプタの仮想Ｉ／Ｏポート毎の帯域を取得する手順と、
前記Ｉ／Ｏスイッチのポートの情報と、前記帯域を取得する手順と、
送信元のノードの情報と送信先のノードの情報と帯域を含む仮想Ｉ／Ｏパスの生成要求を受け付ける手順と、
前記Ｉ／Ｏスイッチのポートの情報から前記送信元のノードから送信先のノードまでの仮想Ｉ／Ｏパスの経路を選択する手順と、
前記選択した仮想Ｉ／Ｏパスの経路上の仮想Ｉ／Ｏポートを抽出し、抽出した仮想Ｉ／Ｏポートに前記取得した帯域と前記生成要求に含まれる帯域から当該仮想Ｉ／Ｏパスを設定可能か否かを判定する手順と、
前記仮想Ｉ／Ｏパスを設定可能と判定しときに、前記仮想Ｉ／Ｏパス上のポートに当該仮想Ｉ／Ｏパスを設定するステップと、
を計算機に機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スイッチファブリック等のＩ／Ｏスイッチを介して接続されたサーバ群において、仮想化されたＩ／Ｏの転送経路毎にエンド・ツー・エンドでＩ／Ｏアダプタ間のデータ転送量及び通信帯域を管理する方法とそれを用いた情報処理システムに関する。
【背景技術】
【０００２】
プロセッサ（ＣＰＵ）のマルチコア化および低消費電力化の流れが本格化し、サーバ分野におけるＣＰＵの仮想化の本格導入が進みつつある。ＣＰＵ仮想化とは、従来単一のＯＳしか使用できなかった単一システムのハードウェアリソース（たとえばＣＰＵやメモリ）を、複数のＯＳが使えるように、論理的に複数のハードウェアリソースに分割して使用する技術である。ＣＰＵの仮想化により、ユーザは低コストで消費電力を削減して効率よく複数のサーバを一つまたは少数のサーバに統合できる。
【０００３】
従来のサーバシステムにおけるＣＰＵの仮想化はソフトウェアベースで実現していたためオーバヘッドが大きいという問題があった。しかしながら、近年、ＣＰＵベンダ各社がこのＣＰＵの仮想化を支援するハードウェア機構をＣＰＵ内に搭載し、仮想化に伴うオーバヘッドを削減できるようになってきた。このような状況からもＣＰＵ仮想化機能のコモディティ化が今後一層進むと考えられる。
【０００４】
従来のＣＰＵの仮想化ではＣＰＵやメモリなどのハードウェアリソースを分割して使用していたが、性能やセキュリティ等の問題からそのＩ／Ｏは仮想化対象とはせずに、独立して設けることが一般的であった。しかしながら、低消費電力化のニーズの高まりと継続的なネットワークの高速化により、今後Ｉ／Ｏの仮想化の流れも加速すると考えられる。
【０００５】
Ｉ／Ｏの仮想化に関しては、近年ＣＰＵベンダ各社がＩ／Ｏの仮想化を支援するハードウェア機構を搭載したチップセットを市場投入しつつある。また、ＰＣＩ関連の規格を策定するＰＣＩ−ＳＩＧにおいてもＩ／Ｏインタフェースカード、Ｉ／ＯスイッチにおいてＩ／Ｏを仮想化するための標準化が進められている。
【０００６】
Ｉ／Ｏインタフェースカード部におけるＩ／Ｏ仮想化の具体的な例としては、１つの物理Ｉ／Ｏインタフェースカードを複数のＯＳで共有する方法がある。たとえば、特許文献１では、ＣＰＵの仮想化により論理的に分割された仮想ホストと、物理Ｉ／Ｏインタフェースカード上で異なるＱｏＳ（Quality of Service）を持つ仮想Ｉ／Ｏインタフェースカードをサポートするための技術が開示されている。特許文献１では、ハイパバイザがシステムイメージに対して割当られる処理キューのセット毎にＱｏＳの重み付けを設定することで、仮想Ｉ／Ｏインタフェースカードに対応してＱｏＳを設定できるようにする。
【０００７】
一方、Ｉ／ＯスイッチによるＩ／Ｏ仮想化技術として、PCI−ExpressスイッチやInfiniBandスイッチがある。これらのＩ／Ｏスイッチではスイッチに接続するサーバ群がＩＰやFibre Channel等の複数のＩ／Ｏプロトコルを同じ経路を利用して転送できるため、低コストでＩ／Ｏを統合できる。しかしながら、このようなＩ／Ｏスイッチを導入する場合、Ｉ／Ｏスイッチの各ポートの接続関係を記録する、あるいはポートの状態情報を収集するための管理機能が必要である。
【０００８】
上記のようなＩ／Ｏスイッチを管理する方法として、Ｉ／Ｏスイッチ自体を高機能化する方法と、Ｉ／Ｏスイッチは高機能化せずに管理専用のサーバにより管理する方法がある。
【０００９】
Ｉ／Ｏスイッチ自体を高機能化する方法として、たとえば、特許文献２では、ファイバチャネルスイッチシステムにおけるファブリックの状態情報を収集する方法が開示されている。ファイバチャネルスイッチシステムは複数のスイッチファブリックで構成されるため、各ファブリックの負荷状況をファイバチャネルスイッチシステム内でモニタ可能なファブリック情報収集方法を提供する必要がある。この課題を解決するため、特許文献２では、スイッチファブリックがＣＰＵを装備し、そのＣＰＵが状態の情報の収集要求を受け付けると、スイッチファブリックのＣＰＵが主体的に負荷情報を収集する。
【００１０】
一方、Ｉ／Ｏスイッチの外側でＩ／Ｏスイッチ状態を管理する方法として、たとえば、非特許文献１には、ASI-SIGにおけるファブリック管理マネージャの仕様が開示されている。ファブリック管理マネージャは、ＡＳＩ（Advanced Switch Interconnect）スイッチファブリックの構成管理を行なう。ＡＳＩスイッチファブリックはプロセッサを装備しないため、管理専用サーバのコンフィギュレーション空間にメモリマップされたレジスタにアクセスしてファブリックの情報を収集する。
【００１１】
ここで収集できるファブリックの情報としては、物理ポートに対応するアクティブ情報や送受信パケット数などである。ＡＳＩでは、これらの情報をＡＳＩがサポートするＰＩ（プロトコルインタフェース）−４と呼ぶレジスタアクセスのためのパケットを利用してインバウンドで取得する。
【特許文献１】米国特許出願公開第２００６／０１９３３２７Ａ１
【特許文献２】特開２００１−２７４７９４号公報
【非特許文献１】ASI Core Specification Revision 1.1 Final, ASI-SIG, 2004年
【発明の開示】
【発明が解決しようとする課題】
【００１２】
特許文献１に開示されている方法により、単一の物理Ｉ／Ｏインタフェースカードを共有する仮想Ｉ／Ｏインタフェースカードと、仮想Ｉ／Ｏインターフェースカードに対応する仮想ホスト間のＩ／ＯのＱｏＳを個々に設定することができる。
【００１３】
しかしながら、特許文献１に開示された方法を用いた場合、Ｉ／Ｏスイッチに接続したサーバ群からなる情報処理システムにおけるＩ／Ｏインタフェースカードとサーバ間のＱｏＳしか保証できない。すなわち、従来の手法ではＩ／Ｏスイッチを介してＩ／Ｏインタフェースカードで接続されたサーバ間あるいはサーバとＩ／Ｏデバイス間において仮想的に構成されたＩ／Ｏパスのエンド・ツー・エンドでのＱｏＳを保証できないという問題があった（第１の問題）。
【００１４】
すなわち、マルチプロトコルに対応したＩ／Ｏインターフェースカードでは、Ｉ／Ｏスイッチの物理ポートに異なるプロトコルの仮想化されたＩ／Ｏポートを構成することができ、一つの物理ポートにＴＣＰ／ＩＰの仮想化されたＩ／Ｏポートと、ｉＳＣＳＩの仮想化されたＩ／Ｏポートを構成することができる。そして、Ｉ／ＯインターフェースカードとＩ／Ｏスイッチ及び他の計算機またはＩ／Ｏ装置間で、ＴＣＰ／ＩＰの仮想的なＩ／Ｏパスと、ＳＣＳＩの仮想的なＩ／Ｏパスをそれぞれ構成することができる。しかしながら、上記特許文献１では、ひとつの物理的なＩ／Ｏインターフェースカードに、複数の仮想ホスト（ゲストＯＳ）毎に仮想Ｉ／Ｏインターフェースカードを割り当てて、仮想Ｉ／Ｏインターフェースカード毎にＱｏＳを制御することはできるが、上述のようにＴＣＰ／ＩＰの仮想的なＩ／Ｏパスと、ｉＳＣＳＩの仮想的なＩ／Ｏパスについて、それぞれのＱｏＳを確保することができない、という問題があった。
【００１５】
加えて、情報処理システム全体において仮想的に構成された複数のＩ／ＯパスのＱｏＳを保証するためには、構成されたＩ／Ｏパス毎に仮想Ｉ／Ｏインターフェースカードのポートの利用情報を管理する必要がある。複数のＩ／Ｏパスが構成される場合には、単一の物理ポートにおいて複数のＩ／Ｏパスのそれぞれに対するポートの状態情報を管理する必要がある。特許文献２に開示されている技術では、スイッチファブリックがＣＰＵを装備し、Ｉ／Ｏスイッチ（スイッチファブリック）上のＣＰＵが管理のためにポート毎の負荷情報を収集することが前提であった。そのため、ＣＰＵを持たないＩ／Ｏスイッチにおいてはポート毎の負荷情報を収集できないという問題点があった。
【００１６】
一方、非特許文献１に開示されている技術では、管理専用サーバがＩ／Ｏスイッチのポートの状態情報を取得するためのインタフェースが開示されている。このインタフェースを用いることによりＩ／ＯスイッチがＣＰＵを持たない場合であっても、サーバを構成するＩ／Ｏスイッチのポートの状態情報を収集できる。しかしながら、非特許文献１の方法では、今後ＣＰＵの仮想化とＩ／Ｏ仮想化が本格化するのに伴い、Ｉ／Ｏスイッチに接続されたサーバ群においてサーバ間、あるいはサーバとＩ／Ｏ装置間で複数のプロトコル種に対応する仮想化されたＩ／Ｏパスが構成された場合に、仮想化されたＩ／Ｏパスそれぞれに対応するポートの状態情報を収集することはできないという問題があった（第２の問題）。
【００１７】
さらに、サーバ群を接続するＩ／Ｏスイッチの規模や、物理Ｉ／Ｏポートあたりの仮想化されたＩ／Ｏの数の増加に伴い、管理すべきＩ／Ｏポートの状態情報が増加する。その結果、ポートの状態情報の読み出し回数が増加する。Ｉ／Ｏポートの状態情報の読み出し回数が増加すると、他の処理に対して影響を及ぼし、その結果状態情報の取得のための処理時間が増加したり、その処理時間がばらついたりする問題があった（第３の問題）。
【００１８】
先に述べたように、ＣＰＵの仮想化の本格導入に向け、Ｉ／Ｏスイッチに接続されたサーバ群において、サーバ間、あるいはサーバとＩ／Ｏ装置間で構成された複数の仮想的なＩ／Ｏパスのデータ量及び転送速度の管理方法とそれを用いたシステムが必要である。
【００１９】
Ｉ／Ｏスイッチに接続されたサーバでＣＰＵの仮想化を行う装置において、上記第１の問題を解決するため、複数の仮想化されたＩ／Ｏパスが構成された場合であっても、仮想化されたＩ／Ｏ毎のデータ転送経路（パス）に対してエンド・ツー・エンドでＱｏＳを保証可能な、仮想化されたＩ／Ｏパスのデータ量及び転送速度（帯域幅）の管理方法が必要である。
【００２０】
上記第２の問題を解決するため、ＣＰＵを持たないＩ／Ｏスイッチにおいても、物理ポートへ仮想的に構成したＩ／Ｏポート毎の状態情報を収集することが可能な仮想化されたＩ／Ｏパスのデータ量及び転送速度（帯域幅）の管理方法が必要である。
【００２１】
上記第３の問題を解決するため、大規模なＩ／Ｏスイッチや物理ポートあたりの仮想化されたＩ／Ｏポート数が多い場合であっても、管理すべき仮想化されたＩ／Ｏポート毎の状態情報の読み出し処理を一定の時間で実行可能な仮想化されたＩ／Ｏパスのデータ量及び転送速度（帯域幅）の管理方法が必要である。
【００２２】
本発明の第１の課題は、Ｉ／Ｏスイッチに接続されたサーバ群からなる情報処理システムにおいて、複数の仮想化されたＩ／Ｏパスが構成された場合に、各Ｉ／Ｏパスのエンド・ツー・エンドでＱｏＳを保証可能な、仮想化されたＩ／Ｏパスのデータ量及び転送速度（帯域幅）の管理方法を提供することにある。
【００２３】
本発明の第２の課題は、上記第１の課題に加えて、ＣＰＵを持たないＩ／Ｏスイッチであっても、物理ポートに仮想的に構成したＩ／Ｏポート毎の情報を収集することが可能な仮想化されたＩ／Ｏのデータ量及び転送速度（帯域幅）の管理方法を提供することにある。
【００２４】
本発明の第３の課題は、上記第２の課題に加えて、大規模なＩ／Ｏスイッチや物理ポートあたりの仮想化されたＩ／Ｏポート数が多い場合であっても、管理すべき仮想化されたＩ／Ｏパス毎の状態情報の読み出し処理を一定の時間で実行可能な仮想化されたＩ／Ｏパスのデータ量及び転送速度の（帯域幅）管理方法を提供することにある。
【課題を解決するための手段】
【００２５】
本発明は、物理Ｉ／Ｏポートに仮想Ｉ／Ｏポートを設定可能なＩ／Ｏアダプタを備えたノードを複数有し、前記ノードのＩ／ＯアダプタをＩ／Ｏスイッチのポートに接続し、前記複数のノード間で前記仮想Ｉ／Ｏポートを介してデータの転送を行う情報処理システムにおける仮想Ｉ／Ｏパスの管理方法であって、前記複数のノードのうちのいずれか一つが、前記Ｉ／Ｏスイッチのポートの情報を収集し、前記各ノードがそれぞれのノードが備えたＩ／Ｏアダプタの仮想Ｉ／Ｏポート毎に帯域を取得し、前記複数のノードのうちのいずれか一つが、前記Ｉ／Ｏスイッチのポートの情報と、前記帯域を取得し、前記Ｉ／Ｏスイッチのポートの情報と、前記帯域を取得した前記ノードが、送信元のノードの情報と送信先のノードの情報と帯域を含む仮想Ｉ／Ｏパスの生成要求を受け付けて、前記仮想Ｉ／Ｏパスの生成要求を受け付けたノードが、前記Ｉ／Ｏスイッチのポートの情報から前記送信元のノードから送信先のノードまでの仮想Ｉ／Ｏパスの経路を選択し、前記仮想Ｉ／Ｏパスの生成要求を受け付けたノードが、前記選択した仮想Ｉ／Ｏパスの経路上の仮想Ｉ／Ｏポートを抽出し、抽出した仮想Ｉ／Ｏポートに前記取得した帯域と前記生成要求に含まれる帯域から当該仮想Ｉ／Ｏパスを設定可能か否かを判定し、前記仮想Ｉ／Ｏパスの生成要求を受け付けたノードが、前記仮想Ｉ／Ｏパスを設定可能と判定しときに、前記仮想Ｉ／Ｏパス上のポートに当該仮想Ｉ／Ｏパスを設定する。
【００２６】
また、前記複数のノードのうちのいずれか一つが、前記Ｉ／Ｏスイッチのポートの情報を収集するステップは、前記複数のノードの稼動状態に基づいて一つのノードを選択するステップを含む。
【発明の効果】
【００２７】
本発明により、Ｉ／Ｏスイッチを介して複数の処理ノードを接続する情報処理システムに対して、複数の仮想化されたＩ／Ｏパスを構成し、Ｉ／Ｏパス毎にデータ転送速度（帯域幅）を制御できるため、仮想化されたＩ／Ｏパス毎にエンド・ツー・エンドでのＱｏＳを保証できる。また、ＣＰＵを持たないＩ／Ｏスイッチであっても、Ｉ／Ｏアダプタの物理ポートに仮想的に構成したＩ／Ｏポート毎の状態情報を管理し、それらの情報を収集できる。さらに、大規模なＩ／Ｏスイッチや物理ポートあたりの仮想Ｉ／Ｏポート数が多い場合であっても、高負荷となるＩ／Ｏスイッチの状態情報の読み出し処理を、Ｉ／Ｏスイッチに接続する複数の処理ノードの稼動状態に応じて分担することで、他の通信への影響を最小化して、Ｉ／Ｏスイッチの情報収集を一定の時間で実行できる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００２９】
＜第１実施形態＞
図１は第１の実施形態を示し、本発明を適用する情報処理システムのブロック図である。
【００３０】
情報処理システムは、サービスを提供する複数の処理ノード（サーバ計算機）１０１、１０２と、これら処理ノード１０１、１０２を管理する管理ノード（管理計算機）１０３と、各ノードを接続して仮想的なＩ／Ｏパス（論理Ｉ／Ｏパス）を提供するために複数のスイッチファブリック１７０、１７１を備えたスイッチファブリック群１０５から構成される。なお、管理ノード１０３には管理者に対する入出力が可能なコンソール１０４が接続されている。また、各ノードは図示しないバックプレーンを介して接続され、図示しない筐体に格納されている。
【００３１】
処理ノード１０１、１０２はそれぞれ、複数のＣＰＵ（プロセッサ）コア＃０、＃１を備えたＣＰＵ（所謂、マルチコアプロセッサ）１０を複数備えている。なお、処理ノード１０１、１０２は同一の構成であるので、処理ノード１０１の構成についてのみ以下に説明する。
【００３２】
ＣＰＵ＃０は複数のＣＰＵコア＃０−０、＃０−１を有し、ＣＰＵ＃１は複数のＣＰＵコア＃１−０、＃１−１を有する。ＣＰＵ＃０、＃１は、フロントサイドバス１１を介してチップセット１２に接続される。
【００３３】
チップセット１２はメモリバスを介して主記憶１３に接続され、ＣＰＵ＃０、＃１のメモリアクセス要求に応じて主記憶１３をアクセスする。また、チップセット１２はＩ／Ｏバス１４を介してＩ／ＯインターフェースカードとしてのＩ／Ｏアダプタ１１３に接続され、ＣＰＵ＃０、＃１のＩ／Ｏアクセス要求に応じてスイッチファブリック群１０５にアクセスする。Ｉ／Ｏバス１４は、例えば、ＰＣＩ−ＥＸＰＲＥＳＳで構成することができる。
【００３４】
Ｉ／Ｏアダプタ１１３は、複数のプロトコルを提供し、物理的なＩ／Ｏポート（以下、）に複数の仮想的なＩ／Ｏポート（以下、仮想Ｉ／Ｏポートまたは論理Ｉ／Ｏポート）を構成することができ、各仮想Ｉ／Ｏポートごとにスイッチファブリック群１０５と通信を行う。Ｉ／Ｏアダプタ１１３は、後述するレジスタ１８０を備えたコントローラを備える。
【００３５】
管理ノード１０３のハードウェア構成は、上記処理ノード１０１と同様であり、ＣＰＵ２０、フロントサイドバス２１チップセット２２、メインメモリ２３、Ｉ／Ｏバス２４、Ｉ／Ｏアダプタ１２０を備え、Ｉ／Ｏアダプタ１２０がスイッチファブリック群１０５に接続される。
【００３６】
ＣＰＵ１０は、後述するようにＯＳとアプリケーション及び各管理部を主記憶１３にロードして実行する。
【００３７】
図２に、本発明の第１の実施の形態の情報処理システム１００のブロック図を示す。
【００３８】
情報処理システム１００は、処理ノード１０１、１０２、管理ノード１０３、管理コンソール１０４、スイッチファブリック群１０５で構成される。処理ノード１０１、１０２、管理ノード１０３は、スイッチファブリック群１０５に接続される。スイッチファブリック群１０５と各ノードの接続には、共通の物理インタフェースを使用しているが、その上位のプロトコルはいかなるプロトコルを使用してよい。たとえば、独自の物理インタフェースを持つ独自のプロトコルであってもよいし、ＰＣＩのような標準の物理インタフェースを用いる独自プロトコルであってもよい。あるいはＰＣＩ  Ｅｘｐｒｅｓｓのような標準の物理インタフェースを持つ標準のプロトコルであってもよい。
【００３９】
例えば、スイッチファブリック群１０５とＩ／Ｏアダプタ１１３，１１８，１２０は、物理層としてＰＣＩ  Ｅｘｐｒｅｓｓを採用し、上位層としてＴＣＰ／ＩＰ、ＦＣ（Fibre Channel）あるいはＳＣＳＩなどの複数のプロトコルで通信可能に構成される。
【００４０】
また、スイッチファブリック１７０，１７１は、各スイッチファブリックを構成する複数の物理Ｉ／Ｏポート及び仮想Ｉ／Ｏポートの設定状態を格納するレジスタ１８０、１８１を備える。
【００４１】
処理ノード１０１，１０２は、アプリケーションを搭載するサーバ処理ノードあるいはＩ／Ｏデバイス（例えば、ディスクドライブなど）を搭載し、Ｉ／Ｏ処理を行うＩ／Ｏ処理ノードのいずれかである。本発明の第１の実施の形態では、処理ノード１０１，１０２はアプリケーションを実行するサーバ処理ノードとして機能し、処理ノード１０１、１０２と管理ノード１０３のみがスイッチファブリック群１０５に接続する例を図示しているが、Ｉ／Ｏデバイス等を搭載するＩ／Ｏ処理ノードがスイッチファブリック群１０５に接続していてもよい。その場合、Ｉ／Ｏノードも他ノードと共通の物理インタフェースで接続しており、Ｉ／ＯノードではＩ／Ｏデバイスを制御するＩ／Ｏコントローラと、Ｉ／Ｏデバイスが搭載されている。
【００４２】
処理ノード１０１、１０２はスイッチファブリック群１０５を介してデータの受け渡しを行なう。本発明の第１の実施の形態では、処理ノードを２台図示しているが、何台備えられていてもよい。
【００４３】
管理ノード１０３は、情報処理システム１００の全体構成を管理し、スイッチファブリック群１０５を介して、処理ノード１０１、１０２と状態情報のやりとりをする。本発明の第１の実施の形態では、管理ノードを１台のみ図示しているが、信頼性を向上するため複数台備えられていてもよい。複数台の管理ノードが備えられている場合には、管理ノード間でデータの整合性を取られるように制御される。
【００４４】
管理コンソール１０４は、ＣＰＵとメモリ等を持つ計算機である。管理者からの管理要求、たとえば、スイッチファブリック群１０５に構成する仮想Ｉ／Ｏパス（論理Ｉ／Ｏパス）に対してＱｏＳ（Quality of Service）の割り当てを行なう要求等、を管理ノード１０３に送出する。なお、仮想Ｉ／Ｏパスは、後述するように管理コンソール１０４から管理ノード１０３への指令に基づいて各処理ノード１０１，１０２のＱｏＳ割当管理部１３１，１３４が各Ｉ／Ｏドライバに通知し、各Ｉ／Ｏドライバで設定される。あるいは、各処理ノード１０１，１０２のアプリケーション１１０，１１５がＩ／Ｏドライバに通知して仮想Ｉ／Ｏポートを設定してもよい。
【００４５】
ここで、本実施形態でのＱｏＳは、物理Ｉ／Ｏポート上に設定する複数の仮想Ｉ／Ｏポート（仮想Ｉ／Ｏポート）毎の帯域を保証することを示す。例えば、図５で示すように、Ｉ／Ｏアダプタ１１３の物理Ｉ／Ｏポート「０」に、仮想Ｉ／Ｏポート「１」と「４」を設定した場合、仮想Ｉ／Ｏポート「１」はＴＣＰ／ＩＰを用いて、他の処理ノードと通信を行い、仮想Ｉ／Ｏポート「４」はＦＣのプロトコルでさらに他の処理ノード（例えば、ストレージ装置）と通信を行う。このとき、ＴＣＰ／ＩＰの帯域と、ＦＣの帯域を各仮想Ｉ／Ｏポート（仮想Ｉ／Ｏポート）毎に保証することが、本実施形態におけるＱｏＳとなる。
【００４６】
スイッチファブリック群１０５は、処理ノード１０１、１０２、管理ノード１０３間を接続する。スイッチファブリック群１０５の内部構成はバス、クロスバネットワーク、あるいは多段ネットワークのいずれでもよい。処理ノード間、処理ノードと管理ノード間で情報をやりとりできるのであれば、いかなる構成でもよい。本発明の第１の実施の形態では、スイッチファブリック群１０５は、ノンブロッキングのクロスバネットワークで構成される複数のスイッチファブリック１７０、１７１で構成されている例を示す。
【００４７】
処理ノード１０１は、アプリケーション１１０、ローカルＱｏＳ管理部１１１、論理Ｉ／Ｏ管理部１１２、Ｉ／Ｏアダプタ１１３を備える。処理ノード１０２も処理ノード１０１と同様の構成であり、図２において符号のみが異なる。
【００４８】
アプリケーション１１０は、処理ノード１０１のＣＰＵ１０が実行するユーザプログラムである。ローカルＱｏＳ管理部１１１は、ローカルＱｏＳ管理部１１１を搭載する処理ノード１０１と処理ノード１０１上のＩ／Ｏアダプタ１１３の仮想的なＩ／Ｏポートの設定情報を管理し、これらの情報を定期的に管理ノード１０３上のグローバルＱｏＳ管理部１２２（後述）に通知する。論理Ｉ／Ｏ管理部１１２は、物理Ｉ／Ｏアダプタ１１３と仮想化されたＩ／Ｏアダプタ１１３の状態情報と、データ転送量（あるいはデータ転送速度や帯域幅）の対応を管理する。Ｉ／Ｏアダプタ１１３は、スイッチファブリック群１０５とのインタフェースである。
【００４９】
ここで、ローカルＱｏＳ管理部１１１は、独立したアプリケーションとして実装されてもよいし、システム管理用のアプリケーションの一部として組み込まれてもよい。また、論理Ｉ／Ｏ管理部１１２は、ＯＳ３５０の管理下にあるＩ／Ｏドライバに組み込まれていてもよい。あるいは、Ｉ／Ｏドライバではなく、ハイパバイザなどの仮想化ソフトウェアの一部として組み込まれていてもよい。本発明の第１の実施の形態では、ローカルＱｏＳ管理部１１１はシステム管理用のアプリケーションとして組み込まれ、論理Ｉ／Ｏ管理部１１２は、ＯＳ３５０内のＩ／Ｏドライバに組み込まれている。本発明の第１の実施の形態では、処理ノード１０１、１０２がローカルＱｏＳ管理部１１１、１１６を備えるが、管理ノード１０３内のＩ／Ｏの帯域幅を管理したい場合には、管理ノード１０３にもローカルＱｏＳ管理部を備えればよい。
【００５０】
管理ノード１０３は、Ｉ／Ｏアダプタ１２０と、論理Ｉ／Ｏ管理部１２１と、グローバルＱｏＳ管理部１２２を備える。Ｉ／Ｏアダプタ１２０の構成は前述した処理ノード１０１のＩ／Ｏアダプタ１１３の構成と同じである。
【００５１】
論理Ｉ／Ｏ管理部１２１は、管理ノード１０３上の物理的なＩ／Ｏアダプタ１２０と、仮想化されたＩ／Ｏアダプタ１２０のポートの状態情報と、データ転送量（帯域幅）の対応を管理する。
【００５２】
グローバルＱｏＳ管理部１２２は、情報処理システム１００全体の状態情報と、管理ノード１０３を含む処理ノードの状態情報（ローカルＱｏＳ管理テーブル１３０の情報）、スイッチファブリック群１０５の状態情報（スイッチ情報３０３）、処理ノード１０１、１０２とスイッチファブリック群１０５に構成された仮想Ｉ／Ｏパスの状態情報（パス情報）を管理する。また、グローバルＱｏＳ管理部１２２は、スイッチファブリック群１０５および処理ノード１０１，１０２の状態を監視し、管理コンソール１０４経由で設定された構成情報に従って、仮想Ｉ／Ｏパスを構成する各コンポーネントへ（仮想Ｉ／Ｏポート等）の帯域の割当や変更や削除を行なう。たとえば、仮想Ｉ／Ｏパス毎の利用帯域等の状態情報と仮想Ｉ／Ｏパスの設定時の情報を比較し、利用帯域が設定帯域を満たしていない場合、あるいは設定帯域を超える場合に、仮想Ｉ／Ｏパスを構成する各コンポーネントにおいて設定帯域を変更する。ここで、本発明の第１の実施の形態では、管理ノード１０３がグローバルＱｏＳ管理部１２２を備えるが、管理ノード１０３ではなく、処理ノードの一部にグローバルＱｏＳ管理部１２２を備えてもよい。
【００５３】
処理ノード１０１のローカルＱｏＳ管理部１１１は、ローカルＱｏＳ管理テーブル１３０と、ＱｏＳ割当管理部１３１及び帯域監視部１３２を備える。ローカルＱｏＳ管理テーブル１３０は、処理ノード１０１に搭載するＩ／Ｏアダプタ１１３のポート情報（ポート情報２０４、論理Ｉ／Ｏ情報２０５）を管理する。ローカルＱｏＳ管理テーブル１３０の詳細は後述する（図３参照）。ＱｏＳ割当管理部１３１は、帯域監視部１３２と連携して動作し、ローカルＱｏＳ管理テーブル１３０の内容に従い、仮想化されたＩ／Ｏパス（仮想Ｉ／Ｏパス）に対応するＩ／Ｏアダプタ１１３の仮想Ｉ／Ｏポート（仮想Ｉ／Ｏポート）を生成、削除、変更、表示する。帯域監視部１３２は、ローカルＱｏＳ管理部１１１が管理するＩ／Ｏアダプタ１１３に構成された仮想Ｉ／Ｏポートの状態情報（ポート情報２０４，論理Ｉ／Ｏ情報２０５）を、定期的（所定の周期）にグローバルＱｏＳ管理部１２２に通知する。帯域監視部１３２の詳細は後述する（図８参照）。
【００５４】
管理ノード１０３のグローバルＱｏＳ管理部１２２は、グローバルＱｏＳ管理テーブル１４０、ＱｏＳ割当管理部１４１、帯域監視部１４２を備える。グローバルＱｏＳ管理テーブル１４０は、スイッチファブリック群１０５の状態情報（スイッチ情報３０３）を管理する。グローバルＱｏＳ管理テーブル１４０の詳細は後述する（図４参照）。ＱｏＳ管理割当部１４１は、グローバルＱｏＳ管理テーブル１４０の内容に従い、仮想化されたＩ／Ｏパスを構成する各関連ポート（各処理ノード上のＩ／Ｏアダプタ１１３，１１８とスイッチファブリック群１０５のポート）に対して帯域を割当て、関連するテーブルを変更する。ＱｏＳ割当管理部１４１の詳細は後述する（図５参照）。帯域監視部１４２は、スイッチファブリック群１０５の状態情報（スイッチ情報３０３）を監視する。帯域監視部１４２の詳細は後述する（図６参照）。ここで、関連ポートは、起点となるＩ／Ｏアダプタ１１３から通信先（終点）のＩ／Ｏアダプタまでの装置の情報と仮想Ｉ／Ｏパスが利用するポートの情報で構成される。例えば、処理ノード１０１のＩ／Ｏアダプタ１１３からスイッチファブリック１７０，１７１を経由して処理ノード１０２のＩ／Ｏアダプタ１１８へ通信を行う仮想Ｉ／Ｏパスの場合、処理ノード１０１のＩ／Ｏアダプタ１１３の論理Ｉ／Ｏ情報２０５には、Ｉ／Ｏアダプタ１１３の物理Ｉ／Ｏポートと仮想Ｉ／Ｏポートの識別子と、スイッチファブリック１７０、１７１の識別子と、各スイッチファブリックで使用するポートの識別子と、終点となるＩ／Ｏアダプタ１１８の物理Ｉ／Ｏポートと仮想Ｉ／Ｏポートの識別子が論理Ｉ／Ｏ情報２０５の関連ポート情報に格納される。なお、スイッチファブリック群１０５の関連ポート情報は、入口のスイッチファブリックの識別子とポートの識別子及び出口となるスイッチファブリックの識別子とポートの識別子で表すことができる。
【００５５】
処理ノード１０１の論理Ｉ／Ｏ管理テーブル１５０は、Ｉ／Ｏアダプタ１１３の物理Ｉ／Ｏポートとその物理Ｉ／Ｏポート上に仮想的に構成された仮想Ｉ／Ｏポートの状態情報（ポート情報２０４、論理Ｉ／Ｏ情報２０５）と、仮想Ｉ／Ｏポートにおけるデータ転送量（帯域幅）の対応を保持する。処理ノード１０２及び管理ノード１０３の論理Ｉ／Ｏ管理テーブル１５１、１５２も上記論理Ｉ／Ｏ管理テーブル１５０の構成と同等である。論理Ｉ／Ｏ管理テーブル１５０の詳細は後述する（図５参照）。
【００５６】
Ｉ／Ｏアダプタ１１３のコントローラ１６はレジスタ１６０を備える。このレジスタ１６０は、処理ノード１０１のＩ／Ｏアダプタ１１３のコンフィギュレーション空間にマップされたメモリマップドＩ／Ｏである。レジスタ１６０には、Ｉ／Ｏアダプタ１１３の各種設定を記録する。ここでは、各種設定のほか、Ｉ／Ｏアダプタ１１３の備える物理Ｉ／Ｏポートのアクティブ状態と送受信データ数等を記録する。Ｉ／Ｏアダプタのレジスタは他のノードも同様であり、処理ノード１０２のＩ／Ｏアダプタ１１８のコントローラ１６はレジスタ１６１を備え、管理ノード１０３のＩ／Ｏアダプタ１２０のコントローラ２６はレジスタ１６２を備えて、上述のようなデータを格納する。レジスタ１６１は処理ノード１０２のコンフィギュレーション空間にマップされ、レジスタ１６２は、管理ノード１０３の管理するコンフィギュレーション空間にマップされている。各レジスタは通常マップされたノードからアクセス可能であるが、管理ノード１０３のみ、処理ノード１０１および１０２のアドレス空間にマップされたレジスタ１６０、１６１にアクセス可能である。このとき、管理ノード１０３は、異なるアドレス空間にマップされたレジスタ１６０，１６１にアクセスするためのアドレス変換部（図示省略）を有する。
【００５７】
スイッチファブリック１７０はスイッチファブリック群１０５を構成するＩ／Ｏスイッチである。スイッチファブリック１７１もスイッチファブリック１７０と同様の構成である。スイッチファブリック１７０の設定は、レジスタ１８０を介して行なう。レジスタ１８０は、管理ノード１０３がアクセス可能なアドレス空間（コンフィギュレーション空間）にマップされている。レジスタ１８０には、たとえば、各スイッチファブリックの物理Ｉ／Ｏポートのアクティブ状態や、物理Ｉ／Ｏポート当たりの送受信データ数などが記録されている。
【００５８】
図３は、本発明の第１の実施の形態におけるローカルＱｏＳ管理テーブル１３０（１３３）の構成図である。ローカルＱｏＳ管理テーブル１３０は、ローカルＱｏＳ管理部１１１を搭載する処理ノード１０１と処理ノード１０１上のＩ／Ｏアダプタ１１３のローカルな状態情報を管理する。ここでは、処理ノード１０１にはＩ／Ｏアダプタ１１３のみが搭載される例を示しているが、複数のＩ／Ｏアダプタが搭載されていてもよい。ローカルＱｏＳ管理テーブル１３０は、ファブリック情報２０１、ＱｏＳサービス状態２０２、ノード情報２０３、ポート情報２０４、論理Ｉ／Ｏ情報２０５を保持する。ファブリック情報２０１は、スイッチファブリック群１０５において処理ノード１０１のオーナーとなるスイッチファブリックの識別子である。ここで、オーナーとはスイッチファブリック群１０５の中で処理ノード１０１の起点となるスイッチファブリックを示す。
【００５９】
ＱｏＳサービス状態２０２は、グローバルＱｏＳ管理部１２２の起動状態を示す。すなわち、処理ノード１０１を管理する管理ノード１０３のグローバルＱｏＳ管理部１２２が起動しているか否かを示す値がＱｏＳサービス状態２０２に格納される。
【００６０】
ノード情報２０３は、ローカルＱｏＳ管理部１１１を搭載する処理ノード１０１の識別子と、その処理ノードに搭載したＩ／Ｏアダプタ１１３が有する物理Ｉ／Ｏポートの数を格納する。なお、Ｉ／Ｏアダプタが複数ある場合には、Ｉ／Ｏアダプタの識別子毎に物理Ｉ／Ｏポート数を格納すればよい。
【００６１】
ポート情報２０４は、Ｉ／Ｏアダプタ１１３の物理Ｉ／Ｏポートの状態（使用中）やその最大帯域（転送速度の最大値）と、物理Ｉ／Ｏポートに論理的（仮想的）に生成された仮想Ｉ／Ｏポート数を格納する。処理ノード１０１のＩ／Ｏアダプタ１１３が複数の物理Ｉ／Ｏポートを有する場合には、物理Ｉ／Ｏポート数に対応したポート情報２０４を管理する。
【００６２】
論理Ｉ／Ｏ情報２０５は、ローカルＱｏＳ管理部１１１を搭載する処理ノード１０１上のＩ／Ｏアダプタ１１３の物理Ｉ／Ｏポートに仮想的に生成された仮想Ｉ／Ｏポートごとに、仮想Ｉ／Ｏポートの識別子と、プロトコルの識別子と、送信元ノードの識別子と、転送先のノード識別子と、ルーティング情報と、転送するデータの優先制御情報、関連ポート数、関連ポート情報などを管理する。ここで、関連ポート数は仮想Ｉ／Ｏパスを構成したエンド・ツー・エンドのデータ転送経路で通過する物理Ｉ／Ｏポート数であり、関連ポート情報は、その関連ポートの位置情報と帯域制御情報である。
【００６３】
図４は、本発明の第１の実施の形態におけるグローバルＱｏＳ管理テーブル１４０の構成図である。グローバルＱｏＳ管理テーブル１４０は、スイッチファブリック群１０５の全体の状態情報、情報処理システム１００にエンド・ツー・エンドで構成された仮想化されたＩ／Ｏ（仮想Ｉ／Ｏパス）の状態情報を保持する。なお、エンド・ツー・エンドとは、例えば、処理ノード１０１のＩ／Ｏアダプタ１１３の仮想Ｉ／Ｏポートから処理ノード１０２のＩ／Ｏアダプタ１１８の仮想Ｉ／Ｏポートまでの経路を指す。グローバルＱｏＳ管理テーブル１４０は、ファブリック情報３０１、ノード情報３０２、スイッチ情報３０３、論理Ｉ／Ｏ情報３０４を備え、各情報３０１〜３０４に格納されたポインタがメインメモリ２３上のデータテーブルの格納先を指し示す。
【００６４】
ファブリック情報３０１（３１０）はスイッチファブリックの全体情報であり、本発明の第１の実施の形態では、スイッチファブリック群１０５に存在する処理ノード数と、スイッチファブリック数、ファブリックオーナの識別子、情報処理システム１００に生成された仮想Ｉ／Ｏパス数を含む。本発明の第１の実施の形態では、ファブリック情報３０１は、ファブリック情報テーブル３１０で管理されており、グローバルＱｏＳ管理テーブル１４０はファブリック情報テーブル３１０へのポインタを管理している。
【００６５】
ノード情報３０２は、情報処理システム１００に存在する全ての処理ノードの情報を管理する。本発明の第１の実施の形態では、ノード情報３０２は、ノード情報テーブル３２０で管理されており、グローバルＱｏＳ管理テーブル１４０は、ノード識別子とそれに対応するノード情報テーブル３２０のポインタを管理する。ノード情報テーブル３２０は、ノード識別子ごとに、ローカルＱｏＳ管理部の稼動状態、ノードに搭載されるＩ／Ｏアダプタの物理Ｉ／Ｏポート数、物理Ｉ／Ｏポートごとの状態情報、物理Ｉ／Ｏポートに生成された仮想Ｉ／Ｏポートの状態情報を保持する。ここで、物理Ｉ／Ｏポートの状態情報と仮想Ｉ／Ｏポートの状態情報は、各ポートの識別子と使用状態を示す値が保持される。
【００６６】
スイッチ情報３０３は、スイッチ情報テーブル３３０に保持され、スイッチファブリック群１０５に存在する全てのスイッチファブリックの状態情報を管理する。本発明の第１の実施の形態では、スイッチ情報３０３は、スイッチ情報テーブル３３０で管理されており、グローバルＱｏＳ管理テーブル１４０は、スイッチファブリック１７０，１７１のスイッチ識別子と、この識別子に対応するスイッチ情報テーブル３３０へのポインタを管理する。スイッチ情報テーブル３３０は、スイッチファブリックの識別子毎に管理され、個々のテーブルはスイッチファブリックの持つ物理Ｉ／Ｏポート数、物理Ｉ／Ｏポートの状態情報（使用状態）、物理Ｉ／Ｏポートに生成された仮想Ｉ／Ｏポートの状態情報（使用状態）を保持する。
【００６７】
論理Ｉ／Ｏ情報３０４は、情報処理システム１００に生成された仮想Ｉ／Ｏパス（仮想Ｉ／Ｏパス）の構成情報と状態情報を管理する。これらの情報は仮想Ｉ／Ｏパスごとに論理Ｉ／Ｏ情報テーブル３４０で管理される。論理Ｉ／Ｏ情報テーブル３４０は、各仮想Ｉ／Ｏパスのプロトコル識別子、送信元ノード識別子、送信先ノード識別子、ルーティング情報、優先制御情報、帯域情報、仮想Ｉ／Ｏパスを構成する関連ポート数、関連ポート情報を保持する。
【００６８】
仮想Ｉ／Ｏパスは送信元ノードと送信先ノード間に構成されるエンド・ツー・エンドの仮想Ｉ／Ｏパスであるため、複数のノードと複数のスイッチファブリックの物理Ｉ／Ｏポートを利用する。この仮想Ｉ／Ｏパスを構成するのに利用する複数ノードと複数のスイッチファブリックの物理Ｉ／Ｏポートを関連ポートと呼ぶ。
【００６９】
図５は、本発明の第１の実施の形態における処理ノード１０１の論理Ｉ／Ｏ管理テーブル１５０の構成図である。論理Ｉ／Ｏ管理テーブル１５０は、処理ノード１０１のＩ／Ｏアダプタ１１３に構成された仮想Ｉ／Ｏポートの識別子と、物理Ｉ／Ｏポートの識別子と、仮想Ｉ／Ｏポートにおけるデータ転送量を保持する。論理Ｉ／Ｏ管理テーブル１５０は、仮想Ｉ／Ｏパス識別子４０１、物理Ｉ／Ｏポート識別子４０２、データ転送量４０３を備える。仮想Ｉ／Ｏパス識別子４０１は、情報処理システム１００において仮想的に構成されたＩ／Ｏパスの識別子であり、情報処理システム１００の中で一意である。
【００７０】
図５では、Ｉ／Ｏアダプタ１１３の物理Ｉ／Ｏポート０に構成された仮想化されたＩ／Ｏポートが２つであり、それぞれ、仮想Ｉ／Ｏパス識別子が１と４であることを示している。その他の仮想Ｉ／Ｏパス識別子は、Ｉ／Ｏアダプタ１１３以外に構成されているため、処理ノード１０１上の論理Ｉ／Ｏ管理部１１２では管理していない。
【００７１】
物理Ｉ／Ｏポート識別子４０２は、Ｉ／Ｏアダプタ１１３が有する物理Ｉ／Ｏポートの識別子であり、Ｉ／Ｏアダプタ１１３が物理的に２ポートを持つ場合には、各物理ポートに対して識別子が付与される。図５では、識別子「０」を持つ物理Ｉ／Ｏポートのみ使用されていることを示している。データ転送量４０３は、物理Ｉ／Ｏポート識別子で管理される物理Ｉ／Ｏポートに構成された仮想Ｉ／Ｏポート上に転送されたデータ転送量をパケット数で保持する。図５では、仮想Ｉ／Ｏパス識別子１を持つ仮想Ｉ／Ｏポートにおけるデータ転送量はＸ０パケットであり、仮想Ｉ／Ｏパス識別子４を持つ仮想Ｉ／Ｏポートにおけるデータ転送量はＸ２パケットである。なお、データ転送量４０３は、所定時間内に送受信したデータ及びコマンドのバイト数やビット数を用いることができる。
【００７２】
また、仮想Ｉ／Ｏパス識別子４０１が「１」の仮想Ｉ／Ｏポートに着目した場合、この仮想Ｉ／Ｏポートが設定された物理Ｉ／Ｏポート「０」上の他の仮想Ｉ／Ｏポート「４」が関連ポートとなる。
【００７３】
図６は、本発明の第１の実施の形態における管理ノード１０３のＱｏＳ割当管理部１４１のブロック図である。ＱｏＳ割当管理部１４１は、グローバルＱｏＳ管理部１２２の処理機能の一つであり、管理コンソール１０４からの指令に基づいて仮想Ｉ／Ｏパスの生成、削除、割当、表示を行なう。ＱｏＳ割当管理部１４１は、仮想Ｉ／Ｏパス生成部５０１、仮想Ｉ／Ｏパス削除部５０２、仮想Ｉ／Ｏパス変更部５０３、仮想Ｉ／Ｏパス表示部５０４を備える。
【００７４】
仮想Ｉ／Ｏパス生成部５０１は、仮想Ｉ／Ｏパス選択部５１０と、仮想Ｉ／Ｏパス登録部５１１を備える。仮想Ｉ／Ｏパス生成部５０１は、管理コンソール１０４経由の仮想Ｉ／Ｏパス生成要求を受けると、仮想Ｉ／Ｏパス選択部５１０により、仮想Ｉ／Ｏパスを構成する最短となる経路を選択する。
【００７５】
また、仮想Ｉ／Ｏパス登録部５１１が、グローバルＱｏＳ管理テーブル１４０の情報を参照して、仮想Ｉ／Ｏパス選択部５１０で選択した最短経路の各関連ポートに対し、新規仮想Ｉ／Ｏパスを設定可能かどうかをチェックし、設定可能である場合には、選択した最短経路を構成する関連ポートに対して仮想Ｉ／Ｏパスを設定して、情報処理システム１００に仮想化されたＩ／Ｏパスを生成する。最短となる経路は、たとえば仮想Ｉ／Ｏパスを構成するスイッチファブリックの段数が最も少なくなる経路である。仮想Ｉ／Ｏパス生成要求は、送信元ノードの識別子、送信先ノードの識別子、仮想Ｉ／Ｏパスの設定帯域、優先度を含む。仮想Ｉ／Ｏパス生成処理のフローは後述する（図９）。
【００７６】
仮想Ｉ／Ｏパス削除部５０２は、管理コンソール１０４等の外部からの仮想Ｉ／Ｏパス削除要求を受け付けて、情報処理システム１００に既に構成された仮想Ｉ／Ｏパスを削除する。
【００７７】
仮想Ｉ／Ｏパス変更部５０３は、管理コンソール１０４等の外部からの仮想Ｉ／Ｏパス変更要求を受け付けて、情報処理システム１００に既に構成された仮想Ｉ／Ｏパスの設定帯域や優先度を変更する。
【００７８】
仮想Ｉ／Ｏパス表示部５０４は、情報処理システム１００に構成されている全ての仮想Ｉ／Ｏパスあるいは要求の対象とする仮想Ｉ／Ｏパスの状態情報を管理コンソール１０４等へ表示する。
【００７９】
図７は、本発明の第１の実施の形態における管理ノード１０３の帯域監視部１４２の構成図である。帯域監視部１４２は、グローバルＱｏＳ管理部１２２の処理機能の一つである。帯域監視部１４２は、ローカルＱｏＳ管理情報受信部（ローカル情報取得部）６０１、ローカルＱｏＳ稼動確認部６０２、スイッチ情報取得部６０３、グローバルＱｏＳ情報保持部６０４、グローバルＱｏＳ情報送信部６０５を備える。
【００８０】
ローカルＱｏＳ管理情報受信部６０１は、情報処理システム１００を構成する処理ノード１０１、１０２のうち、ローカルＱｏＳ管理処理が稼動している処理ノードから、ローカルＱｏＳ管理情報を受信する。受信するローカルＱｏＳ管理情報としては、各処理ノードで管理されているローカルＱｏＳ管理テーブル１３０，１３３のうち変更があった更新情報や、処理ノードの稼動率である。なお、処理ノードの稼動率は、ＯＳ３５０、３５１が取得したＣＰＵ１０の使用率（負荷率）を用いることができる。また、稼動率としてはＣＰＵ１０の使用率の他に、仮想Ｉ／Ｏポートの利用率（実際に利用している帯域／設定帯域）などを用いることができ、複数の仮想Ｉ／Ｏポートの利用率の平均値などを処理ノード毎の仮想Ｉ／Ｏポートの利用率としてもよい。
【００８１】
ローカルＱｏＳ稼動確認部６０２は、グローバルＱｏＳ管理テーブル１４０を参照して、各ローカルＱｏＳ管理部１１１，１１６の稼動状況を確認する。具体的には、図４に示すグローバルＱｏＳ管理テーブル１４０のノード情報３０２に記録されているローカルＱｏＳ管理部１１１およびローカルＱｏＳ管理部１１６の稼動状況を確認する。これにより、各処理ノードが正常に動作していることを示すハートビートとして、管理ノード１０３が管理する処理ノードの動作状態を把握することができる。
【００８２】
スイッチ情報取得部６０３は、情報処理システム１００を構成するスイッチファブリック１７０、１７１の上述のスイッチ情報を取得する。なお、このスイッチ情報取得部６０３は、管理ノード１０３からの指令があったときにスイッチファブリック群１０５全体のスイッチ情報を取得する。
【００８３】
グローバルＱｏＳ情報保持部６０４は、グローバルＱｏＳ管理部１２２が管理するグローバルＱｏＳ管理テーブル１４０に、ローカルＱｏＳ稼動確認部６０２とスイッチ情報取得部６０３により取得した情報に変更があればその内容を保持する。
【００８４】
グローバルＱｏＳ情報送信部６０５は、グローバルＱｏＳ管理テーブル１４０で管理されるスイッチファブリック群１０５や処理ノードの構成情報に変更があった場合に、変更内容を全てのローカルＱｏＳ管理部１１１，１１６に通知する。
【００８５】
スイッチ情報取得部６０３は、さらに、ノード選択部６１０、取得要求送付部６１１、取得応答受信部６１２を備える。ノード選択部６１０は、グローバルＱｏＳ管理部１２２がグローバルＱｏＳ管理テーブル１４０に保持された処理ノードの状態情報をチェックし、低稼動率の処理ノードを選択する。ノード選択部６１０が低稼動率の処理ノードを選択することで、スイッチ情報取得処理がそのノードの他の処理、たとえばアプリケーション処理やローカルＱｏＳ管理処理に及ぼす影響を最小化する。なお、処理ノードの選択は、例えば、ＯＳ３５０、３５１が取得したＣＰＵ１０の使用率を読み込んで、この使用率が最も小さいもの、あるいは、使用率が所定の閾値未満のものを選択すればよい。なお、稼動率としては、各処理ノードの仮想Ｉ／Ｏポートの帯域の設定値と、実際に利用した帯域（最大帯域）の比率の平均値を稼動率として用いてもよい。
【００８６】
取得要求送付部６１２は、ノード選択部６１０にて選択した低稼動率の処理ノードに対してスイッチ情報の取得要求を送付する。取得応答受信部６１３は、取得要求を送信した処理ノードから取得要求に対する応答（スイッチ情報）を受け付ける。
【００８７】
以上のように、管理ノード１０３の帯域監視部１４２は、各処理ノード１０１，１０２からローカルＱｏＳ管理部１１１、１１６が管理する処理ノードのローカルＱｏＳ管理テーブル１３０，１３３を受信し、各処理ノード１０１，１０２のＩ／Ｏアダプタに設定されている仮想Ｉ／Ｏポートの帯域などの情報を取得してグローバルＱｏＳ管理テーブル１４０を更新する。また、帯域監視部１４２は、グローバルＱｏＳ管理テーブル１４０が更新されたときに各処理ノード１０１，１０２へ更新された情報を通知し、管理ノード１０３で設定した仮想Ｉ／Ｏパスに対する変更を伝達する。そして、帯域監視部１４２は、複数の処理ノードのうち低稼動率の処理ノードを選択してスイッチ情報の取得要求を発行し、スイッチファブリック群１０５のスイッチ情報を収集させることができる。
【００８８】
図８は、本発明の第１の実施の形態における処理ノード１０１の帯域監視部１３２の構成図である。帯域監視部１３２は、ローカルＱｏＳ管理部１１１の機能の一部である。処理ノード１０２のローカルＱｏＳ管理部１１６の帯域監視部１３５も、処理ノード１０１の帯域監視部１３２と同様な構成である。
【００８９】
帯域監視部１３２は、論理Ｉ／Ｏ帯域算出部７０１、レジスタ情報取得部７０２、ローカルＱｏＳ情報保持部７０３、ローカルＱｏＳ情報送信部７０４、グローバルＱｏＳ稼動確認部７０５、グローバルＱｏＳ情報受信部７０６、スイッチ情報取得部７０７を備える。
【００９０】
論理Ｉ／Ｏ帯域算出部７０１は、Ｉ／Ｏアダプタ１１３の物理Ｉ／Ｏポートに設定された仮想Ｉ／Ｏポート毎の帯域（転送速度）を算出する。レジスタ情報取得部７０２は、Ｉ／Ｏアダプタ１１３にアクセスし、Ｉ／Ｏアダプタ１１３のレジスタ１６０の状態情報（アダプタ情報）を取得する。なお、アダプタ情報は、Ｉ／Ｏアダプタ１１３の物理Ｉ／Ｏポートの識別子と、物理Ｉ／Ｏポートに設定された仮想Ｉ／Ｏポートの識別子と、仮想Ｉ／Ｏポートの利用状態を示す値を含み、ローカルＱｏＳ管理テーブル１３０，１３３のポート情報２０４、論理Ｉ／Ｏ情報２０５に格納される。
【００９１】
ローカルＱｏＳ情報保持部７０３は、論理Ｉ／Ｏ帯域算出部７０１およびレジスタ情報取得部７０２により取得した情報（帯域とアダプタ情報）をローカルＱｏＳ管理テーブル１３０に保持する。
【００９２】
ローカルＱｏＳ情報送信部７０４は、ローカルＱｏＳ情報保持部７０３にて更新したローカルＱｏＳ管理テーブル１３０の情報を管理ノード１０３のグローバルＱｏＳ管理部１２２に送付する。グローバルＱｏＳサービス稼動確認部７０５は、管理ノード１０３のグローバルＱｏＳ管理部１２２の稼動状況を確認する。
【００９３】
グローバルＱｏＳ情報取得部７０６は、管理ノード１０３のグローバルＱｏＳ管理テーブル１４０に保持された情報のうち更新された情報を取得する。すなわち、管理ノード１０３のグローバルＱｏＳ管理テーブル１４０の情報のうち、当該処理ノード１０１に関する情報（設定値）が更新されていれば、グローバルＱｏＳ情報取得部７０６がローカルＱｏＳ管理テーブル１３０を更新する。これにより、管理ノード１０３が設定した仮想Ｉ／Ｏポートの設定などを各処理ノード１０１，１０２に伝達する。
【００９４】
スイッチ情報取得部７０７は、取得判定部７２０と、スイッチ情報取得処理部７２１を備える。取得判定部７２０は、管理ノード１０３のグローバルＱｏＳ管理部１２２の帯域監視部１４２から送付されるスイッチ状態情報取得要求の有無をチェックし、スイッチ状態取得要求が有る場合には、スイッチ情報取得処理部７２１を実行し、スイッチファブリック群１０５の全てのスイッチ情報を取得し、スイッチ情報の取得結果を管理ノード１０３の帯域監視部１４２に返送する。
【００９５】
スイッチ情報取得処理部７２１は、スイッチファブリック群１０５を構成するスイッチファブリック１７０，１７１のレジスタ１６０，１６１にアクセスし、スイッチファブリック群１０５を構成する全てのスイッチファブリック群１０５の全ポートのスイッチ情報として取得する。スイッチ情報は、上述のように物理Ｉ／Ｏポートと仮想Ｉ／Ｏポートの識別子と状態情報（使用状態など）を含む。
【００９６】
論理Ｉ／Ｏ帯域算出部７０１は、さらに、差分時刻算出部７１０と、論理Ｉ／Ｏ情報取得部７１１、論理Ｉ／Ｏ帯域算出部７１２、論理Ｉ／Ｏ情報リセット部７１３、前監視時刻７１４を供える。
【００９７】
差分時刻算出部７１０は、現在の時刻を取得し、前監視時刻７１４に記録された前回監視時の時刻との差分を計算する。論理Ｉ／Ｏ情報取得部７１１は、処理ノード１０１上の論理Ｉ／Ｏ管理部１１２にアクセスし、処理ノード１０１の論理Ｉ／Ｏ管理テーブル１５０に保持された仮想Ｉ／Ｏパス毎のデータ転送量４０３を取得する。
【００９８】
論理Ｉ／Ｏ帯域算出部７１２は、差分時刻算出部７１０で算出した差分時刻と、論理Ｉ／Ｏ情報取得部７１１で取得した仮想Ｉ／Ｏパス毎のデータ転送量を用いて仮想Ｉ／Ｏポートとスイッチファブリック群１０５のポート毎の帯域（転送速度）を算出する。論理Ｉ／Ｏ情報リセット部７１３は、論理Ｉ／Ｏ管理テーブル１５０に記録された仮想Ｉ／Ｏパス毎のデータ転送量をリセットする。この処理により、仮想Ｉ／Ｏポート毎の単位時間当たりの帯域（転送速度）が算出される。なお、仮想Ｉ／Ｏパス毎のデータ転送量のリセット時には、前監視時刻７１４を現在の時刻に更新する。
【００９９】
図９は、本発明の第１の実施の形態における管理ノード１０３のグローバルＱｏＳ管理部１２２の仮想Ｉ／Ｏパス生成部５０１で実行される仮想Ｉ／Ｏパスの生成処理フローを示す図である。仮想Ｉ／Ｏパス生成部５０１は管理コンソール１０４上の管理プログラムあるいは処理ノード上の管理アプリケーションからスイッチファブリック群１０５を介して仮想Ｉ／Ｏパス生成要求を受けると、仮想Ｉ／Ｏパス生成処理を開始する（ステップ８０１）。ここで、仮想Ｉ／Ｏパス生成要求は、新たな仮想Ｉ／Ｏパスの送信元識別子と、新たな仮想Ｉ／Ｏパスの送信先識別子、新たな仮想Ｉ／Ｏパスの設定帯域（転送速度）、新たな仮想Ｉ／Ｏパスの優先度を引数として含む。
【０１００】
ステップ８０２では、仮想Ｉ／Ｏパス生成要求の引数をデコードし、要求に含まれる送信元識別子と送信先識別子から、新たな仮想Ｉ／Ｏパスで利用する処理ノードとスイッチファブリックの関連ポートを決定する（ステップ８０２）。ここで、関連ポートを決定する方法としては、最短経路を構成するように選択する。あるいは複数の経路の候補の中から選択してもよい。すなわち、仮想Ｉ／Ｏパス生成部５０１は受信した仮想Ｉ／Ｏパスの生成要求に含まれる、仮想Ｉ／Ｏパスの起点と終点から最短の経路を選択し、選択した経路上のポートを関連ポートとして抽出する。
【０１０１】
次に、仮想Ｉ／Ｏパス上の関連ポートを決定した後、グローバルＱｏＳ管理テーブル１４０を検索して、それぞれの関連ポートについて、要求された仮想Ｉ／Ｏパスの帯域を新規に割り当てられるかどうかをチェックする（ステップ８０３）。この処理は、例えば、各関連ポートに設定された帯域と、新たに設定する仮想Ｉ／Ｏパスの帯域を加算した値が、仮想Ｉ／Ｏパス上の各ポートの物理的な帯域以内であれば新たな仮想Ｉ／Ｏパスを設定可能と判定することができる。あるいは、各関連ポートが利用している帯域と、新たな仮想Ｉ／Ｏパスの帯域を加算した値が、各ポートの物理的な帯域以内であれば新たな仮想Ｉ／Ｏパスを設定可能と判定してもよい。この場合、関連ポートが使用した最大の帯域と新たな仮想Ｉ／Ｏパスの帯域を加えた値を、仮想Ｉ／Ｏパス上の各ポートの物理的な帯域と比較するのが望ましい。すべての関連ポートについて、割当可能である場合には、ステップ８０５の処理を行い、割当不可能である場合にはステップ８１０の処理を行なう。
【０１０２】
また、仮想Ｉ／Ｏパスの生成要求の引数に含まれる帯域と優先度に基づいて、新規に仮想Ｉ／Ｏパスの帯域を割り当てられるかどうかをチェックする場合は次のような処理を行うことが望ましい。たとえば、新規に高優先度の仮想Ｉ／Ｏパスとして設定する物理帯域が不足し、かつ優先度の低い仮想Ｉ／Ｏパスの帯域がすでに割当られている場合には、優先度の低い帯域を削減し、新規割当を行ってよいかどうかを管理ノードを介して管理者にメッセージ等を利用して通知し、管理者からの承認があった場合にのみ、既存の優先度の低い仮想Ｉ／Ｏパスの物理帯域を削減して、優先度の高い仮想I/Oパスの帯域を確保する。あるいは、新規の仮想Ｉ／Ｏパスの物理帯域が不足している状況で、新規割当対象の仮想Ｉ／Ｏパスと同じ優先度の帯域がすでに設定される場合、管理者に対してメッセージを送信し、新規生成処理を中断するか、あるいは既割当帯域を削減するか、あるいは新規割当帯域を許容される物理帯域で確保するか、などの選択肢を示し、管理者が選択した指示に基づき、帯域の割当制御を行う。ここでは、管理者に新規割当をするか否かを選択させる例を示したが、別の方法として、あらかじめ管理ノードに、新規に構成する仮想Ｉ／Ｏパスの物理帯域が不足する場合の帯域割当てポリシーを設定しておくことで、管理者への問い合わせを行うことなく、仮想Ｉ／Ｏパスの生成処理を自動化する方法も考えられる。たとえば、優先度がより低い帯域を削減して新規仮想Ｉ／Ｏパスの物理帯域を確保するといったポリシーがあらかじめ設定される場合には、仮想Ｉ／Ｏパスの生成処理では、高優先度の仮想Ｉ／ＯOパスを生成時に物理帯域が不足する場合には、低優先度の既存の仮想Ｉ／Ｏパスの物理帯域を削減して、新規の仮想Ｉ／Ｏパスの帯域を確保する。
【０１０３】
ステップ８０５では、全ての関連ポートについて帯域を新規に割当可能であるため、グローバルＱｏＳ管理テーブル１４０に対して、新規に生成した仮想Ｉ／Ｏパス識別子を登録する。次に、関連ポートを持つ処理ノード上の論理Ｉ／Ｏ管理テーブルに新規の仮想Ｉ／Ｏパス識別子を登録する（ステップ８０７）。関連ポートが複数存在する場合には、ステップ８０７の処理を関連ポートの数に応じて繰り返す。
【０１０４】
ステップ８０８では、仮想Ｉ／Ｏパス生成要求に対する応答として仮想Ｉ／Ｏパス識別子を管理コンソール１０４の管理プログラム等に通知し、生成処理を終了する。なお、仮想Ｉ／Ｏパス識別子は、仮想Ｉ／Ｏパス生成部５０１が情報処理システム１００内で一意に付与する値である。
【０１０５】
ステップ８０４で、新規割当が不可と判断した場合には、ステップ８１０において新たな仮想Ｉ／Ｏパスを生成不可である旨をコンソール１０４へ通知し処理を終了する。あるいは、上記ステップ８０１を行なう代わりに、ステップ８０２に戻り、仮想Ｉ／Ｏパスを別の経路を通るように自動あるいは手動で仮想Ｉ／Ｏパスを選択しなおしてもよい。この場合、どのような経路を選択しても仮想Ｉ／Ｏパスを生成できないときのみステップ８１０を行い、生成不可である旨を通知すればよい。以上の処理フローにより新たな仮想Ｉ／Ｏパス生成処理が完了する。この結果、生成された新たな仮想Ｉ／Ｏパスの情報は、グローバルＱｏＳ管理テーブル１４０に設定される。グローバルＱｏＳ管理テーブル１４０に設定された新たな仮想Ｉ／Ｏパスの情報は、処理ノード１０１のグローバルＱｏＳ情報取得部７０６が取得し、処理ノード１０１のＱｏＳ割当管理部１３１がＯＳ３５０に通知して、ＯＳ３５０内のＩ／ＯドライバがＩ／Ｏアダプタ１１３に新たな仮想Ｉ／Ｏパス、すなわち仮想Ｉ／Ｏポートを設定することになる。
【０１０６】
図１０は、本発明の第１の実施の形態における管理ノード１０３のグローバルＱｏＳ管理部１２２における仮想Ｉ／Ｏパス（仮想Ｉ／Ｏパス）の帯域監視処理のフローである。グローバルＱｏＳ管理部１２２が帯域監視処理を起動すると、帯域監視処理が開始される（ステップ９０１）。グローバルＱｏＳ管理部１２２は、帯域監視処理を所定時間毎に実行するため、最初に一定時間、処理をスリープする（ステップ９０２）。スリープ時間は、帯域監視の精度を向上したい場合には短くし、精度を求めない場合には長く設定する。たとえば、帯域監視を一般的なハートビート処理と同等レベルで行なう場合には、スリープ時間を１秒程度に設定する。
【０１０７】
次にローカルＱｏＳ情報受信処理（ローカルＱｏＳ管理情報受信部６０１の上記処理）を行なう（ステップ９０３）。このステップでは、情報処理システム１００を構成する処理ノード１０１、１０２のうち、ローカルＱｏＳ管理処理が稼動している処理ノードから、ローカルＱｏＳ管理情報を取得する。グローバルＱｏＳ管理部１２２は、応答の有無から各処理ノード１０１，１０２が正常に稼動しているか否かを判定することができる。そして、グローバルＱｏＳ管理部１２２は、稼動中の全てのローカルＱｏＳ管理部１１１，１１６からローカルＱｏＳ管理情報（ローカルＱｏＳ管理テーブル１３０，１３３の情報）を受信する。
【０１０８】
続いて、ローカルＱｏＳ稼動確認処理（ローカルＱｏＳ稼動確認部６０２の上記処理）を行なう（ステップ９０４）。ローカルＱｏＳ稼動確認処理では、ステップ９０４で処理ノードから送付されたローカルＱｏＳ管理情報をチェックし、全てのローカルＱｏＳ管理部１１１，１１６が稼動状態にあるかどうかを確認する。あるいは、グローバルＱｏＳ管理テーブル１４０のノード情報テーブル３２０に記録された情報を用いて、各処理ノード１０１，１０２の稼動状態を確認してもよい。
【０１０９】
次に、グローバルＱｏＳ管理部１２２は、ノード選択処理（ノード選択部６１０の処理）を行なう（ステップ９０５）。ノード選択処理では、ローカルＱｏＳ情報に含まれる各処理ノードの稼動状況を確認し、低稼動率の処理ノードを選択する。このとき、低稼動率の処理ノードが複数存在する場合には、ランダムで選択してもよいし、ラウンドロビンで処理ノードを選択した上でその処理ノードが低稼動率かどうかを判断し、稼動率が高い場合には次の処理ノードを選択するようにしてもよい。なお、処理ノードの稼動率は、上述したように、例えば、各処理ノードのＣＰＵ１０の使用率を用い、ＣＰＵ１０の使用率が最も低い処理ノードを低稼動率の処理ノードとして選択すればよい。
【０１１０】
ステップ９０６では、選択した処理ノードが自ノード（管理ノード１０３）であるかどうかを判断する。選択された処理ノードが自ノードである場合には、スイッチ情報取得処理を行なう（ステップ９０７）。ステップ９０７のスイッチ情報取得処理では、スイッチファブリック群１０５を構成する各スイッチファブリック１７０、１７１のレジスタ１８０、１８１にアクセスし、レジスタ１８０、１８１からスイッチファブリック群１０５の全ポートの状態情報（スイッチ情報）を読み出す。取得したスイッチ情報は、グローバルＱｏＳ管理テーブル１４０のスイッチ情報３０３に反映する。
【０１１１】
一方、ステップ９０６において、選択した処理ノードが自ノードでない場合には、他の処理ノードに対してスイッチ情報の取得要求送付処理（取得要求送付部６１１の処理）を行なう（ステップ９０８）。取得要求送付処理では、選択した処理ノードに対して、スイッチファブリック群１０５の状態情報を取得するための取得要求を送信する。次に、取得応答受信処理（取得応答受信部６１２の処理）では、取得要求の送付先の処理ノードからの応答を受信する（ステップ９０９）。
【０１１２】
続いて、グローバルＱｏＳ情報更新処理を行ない、ステップ９０３のローカルＱｏＳ情報受信処理で受信した処理ノード毎のローカルＱｏＳ管理テーブル１３０，１３３と、ステップ９０９の取得応答受信処理において取得したスイッチ情報の更新分をグローバルＱｏＳ管理テーブル１４０に反映する（ステップ９１０）。最後に、グローバルＱｏＳ情報送信処理を行なう（ステップ９１１）。グローバルＱｏＳ情報送信処理では、グローバルＱｏＳ管理部１２２の稼動状況（グローバルＱｏＳ管理テーブル１４０の情報）を全ローカルＱｏＳ管理部１１１，１１６へ送信すると共に、グローバルＱｏＳ管理部１２２が管理するスイッチファブリック群１０５の構成や処理ノードの構成に変更があった場合に、これらの情報を全ローカルＱｏＳ管理部１１１，１１６に送信する。これらの処理は帯域監視処理が中断されるまで継続する（ステップ９１１）。
【０１１３】
本発明の第１の実施の形態では、ローカルＱｏＳ情報受信処理（ステップ９０２）と、グローバルＱｏＳ情報送信処理（ステップ９１１）を分けて示したが、ローカルＱｏＳ情報受信処理が送信元のローカルＱｏＳ管理部に返送する応答の中に、グローバルＱｏＳ情報送信処理で送付する情報を追加してもよい。その場合は、ステップ９１１の処理は必要ない。
【０１１４】
以上の処理により、グローバルＱｏＳ管理部１２２は、各処理ノード１０１，１０２からローカルＱｏＳ管理テーブル１３０，１３３を受信してグローバルＱｏＳ管理テーブル１４０を更新する。そして、グローバルＱｏＳ管理部１２２は、低稼動率と判定した処理ノードに対してスイッチファブリック群１０５のスイッチ情報の収集を指令する。したがって、スイッチファブリック群１０５が大規模な場合や、物理Ｉ／Ｏポートあたりの仮想Ｉ／Ｏポート数が多い場合であっても、高負荷となるスイッチファブリック１７０，１７１の状態情報の読み出し処理を、スイッチファブリック群１０５に接続する複数の処理ノードのうち低稼動率の処理ノードが分担することで、特定の処理ノードに負荷が集中するのを防いで、スイッチファブリック群１０５の情報収集を一定の時間で実行可能となる。
【０１１５】
図１１は、本発明の第１の実施の形態における処理ノード１０１、１０２のローカルＱｏＳ管理部１１１，１１６で実行されるローカル帯域監視処理のフローを示す図である。なお、処理ノード１０２のローカルＱｏＳ管理部１１６も同様の処理を実施するので、以下では処理ノード１０１のみについて説明する。
【０１１６】
ローカルＱｏＳ管理部１１１がローカル帯域監視処理を起動すると、ローカルＱｏＳ管理部１１１においてローカル帯域監視処理が開始される（ステップ１００１）。ローカル帯域監視処理は一定時間毎に実行するため、最初に予め設定した一定時間だけ処理をスリープする（ステップ１００２）。スリープ時間は、Ｉ／Ｏアダプタ１１３のＩ／Ｏポートの帯域監視の精度を向上する場合には短く、精度を求めない場合には長く設定する。たとえば、帯域監視を一般的なハートビート処理と同等レベルで行なう場合には、スリープ時間を１秒程度に設定する。
【０１１７】
次にグローバルＱｏＳ情報受信処理（グローバルＱｏＳ情報取得部７０６の処理）を行なう（ステップ１００３）。このステップ１００３では、管理ノード１０３のグローバルＱｏＳ管理部１２２からグローバルＱｏＳ管理テーブル１４０の情報を受信する。この情報は、グローバルＱｏＳ管理テーブル１４０が保持する情報のうち、スイッチファブリック群１０５の構成や処理ノード数が変更になった場合は、その情報を受信する。
【０１１８】
続いて、グローバルＱｏＳサービス稼動確認処理（グローバルＱｏＳサービス稼動確認部７０５の処理）を行なう（ステップ１００４）。グローバルＱｏＳサービス稼動確認処理では、ステップ１００３で管理ノード１０３から送付されたグローバルＱｏＳ管理テーブル１４０の情報をチェックし、管理ノード１０３のグローバルＱｏＳ管理部１２２が稼動状態にあるかどうかを確認する。これにより、管理ノード１０３が正常に動作していることを確認できる。
【０１１９】
次に、スイッチ情報取得処理（スイッチ情報取得部７０７の処理）を行なう（ステップ１００５）。スイッチ情報取得処理は、取得判定処理（ステップ１００６）とスイッチ情報取得処理（ステップ１００７）からなる。ステップ１００６では、上記取得判定部７２０の処理であり、管理ノード１０３からのスイッチ情報取得要求の有無をチェックする。スイッチ情報の取得要求がない場合にはステップ１００７は行なわず、次のステップを行なう。
【０１２０】
一方、ステップ１００６において、スイッチ情報の取得要求有りの場合、ステップ１００７において、スイッチ情報取得処理を行なう。スイッチ情報取得処理（スイッチ情報取得処理部７２１の処理）では、スイッチファブリック群１０５を構成するスイッチファブリック１７０，１７１の各レジスタ１８０，１８１にアクセスし、スイッチファブリック群１０５を構成する全ポートの状態情報を取得する。これらのポートの状態情報を取得した後、スイッチ情報取得要求に対する応答を送信元のグローバルＱｏＳ管理部１２２に対して送付する。
【０１２１】
ステップ１００８では、レジスタ情報取得処理を行なう。レジスタ情報取得処理では、自処理ノードのＩ／Ｏアダプタ１１３のレジスタ１６０にアクセスして、レジスタ１６０に設定されている物理Ｉ／Ｏポートの状態情報（アダプタ情報）を取得する。具体的には、物理Ｉ／Ｏポートの稼動状況とデータ転送量を取得する。
【０１２２】
ステップ１００９では、論理Ｉ／Ｏ帯域算出処理（論理Ｉ／Ｏ帯域算出部７１２の処理）を行なう。論理Ｉ／Ｏ帯域算出処理では、現在の時刻と、論理Ｉ／Ｏ管理テーブル１５０に記録された仮想Ｉ／Ｏパスに対応するデータ転送量から、仮想Ｉ／Ｏパス毎の帯域（転送速度）を算出する。詳細は後述する（図１２）。
【０１２３】
続いて、ローカルＱｏＳ情報送信処理（ローカルＱｏＳ情報送信部７０４の処理）を行ない、ローカルＱｏＳ管理テーブル１３０で管理される情報に更新が有った場合には、その情報を全てのローカルＱｏＳ管理部１５１に送付する（ステップ１０１０）。そして、ローカルＱｏＳ情報更新処理では、ローカルＱｏＳ管理テーブル１３０に更新情報を反映する（ステップ１０１１）。
【０１２４】
ローカル帯域監視処理は、中断されるまでステップ１００２からステップ１０１１の上記処理を継続する（ステップ１０１２）。なお、本発明の第１の実施の形態では、グローバルＱｏＳ情報受信処理（ステップ１００３）と、ローカルＱｏＳ情報送信処理（ステップ１０１０）を分けて記載しているが、グローバルＱｏＳ情報受信処理の応答に、ローカルＱｏＳ情報送信処理で送付するローカルＱｏＳ管理テーブルの更新情報を含めてもよい。この場合、ステップ１０１０のローカルＱｏＳ情報送信処理を省略できる。
【０１２５】
以上の処理により、処理ノード１０１のローカルＱｏＳ管理部１１１は所定時間毎にグローバルＱｏＳ管理テーブル１４０の情報を管理ノード１０３から取得し、また、自処理ノードのアダプタ情報を取得して、これら取得した情報のうち自処理ノードに関する情報をローカルＱｏＳ管理テーブル１３０へ反映する。また、ローカルＱｏＳ管理部１１１では、当該処理ノード１０１のローカルＱｏＳ管理テーブル１３０に更新があったときには、他の処理ノードへの更新された情報を通知する。
【０１２６】
また、処理ノード１０１のローカルＱｏＳ管理部１１１は、管理ノード１０３からの要求があったときにはスイッチファブリック群１０５のスイッチ情報を取得して、管理ノード１０３に送信する。
【０１２７】
図１２は、上記図１１のステップ１００９で行われる論理Ｉ／Ｏ帯域算出処理のフローを示す図である。処理ノード１０１の帯域監視部１３２が実行する論理Ｉ／Ｏ帯域算出処理では、まず現時の時刻を取得し、前回の帯域算出処理を実行した時刻との差分を計算し、現在の時刻を前監視時刻７１４に反映する（ステップ１１０１）。
【０１２８】
次に、論理Ｉ／Ｏ管理テーブル１５０にアクセスし、登録された仮想Ｉ／Ｏパス識別子それぞれに対するデータ転送量を取得する（ステップ１１０２）。続いて、ステップ１１０１で算出した時刻の差分と、ステップ１１０２で取得したデータ転送量から各仮想Ｉ／Ｏパス識別子に対する単位時間当たりの帯域（転送速度）を算出する（ステップ１１０３）。算出した各仮想Ｉ／Ｏポートの帯域と、ローカルＱｏＳ管理テーブル１３０のポート情報２０４に格納された最大帯域とを比較して、算出した帯域の値が大きい場合には、ポート情報２０４を更新する。そして、論理Ｉ／Ｏ管理テーブル１５０に登録された仮想Ｉ／Ｏパス識別子に対するデータ転送量をリセットする（ステップ１１０４）。以上のステップにより、仮想Ｉ／Ｏパス（仮想Ｉ／Ｏポート）毎の帯域（転送速度）を算出する。
【０１２９】
以上のように、本発明によればスイッチファブリック群１０５（Ｉ／Ｏスイッチ）を介して複数の処理ノード１０１，１０２を接続する情報処理システム１００に対して、複数の仮想化されたＩ／Ｏパス（仮想Ｉ／Ｏパス）を構成し、仮想Ｉ／Ｏパス毎に転送速度（帯域）を制御できるため、仮想化されたＩ／Ｏパス毎にエンド・ツー・エンドでのＱｏＳを保証できる。また、ＣＰＵを持たないスイッチファブリック群１０５のようなＩ／Ｏスイッチであっても、物理Ｉ／Ｏポートに仮想的に構成したＩ／Ｏポート毎の状態情報（スイッチ情報）を管理し、それらの情報を収集できる。さらに、大規模なスイッチファブリック群１０５や物理Ｉ／Ｏポートあたりの仮想Ｉ／Ｏポート数が多い場合であっても、高負荷となるスイッチファブリックの状態情報の読み出し処理を、スイッチファブリック群１０５に接続する複数の処理ノードのうち稼動率の低い処理ノードに分担させることで、他の通信の影響を最小化して、スイッチファブリック群１０５の情報収集を一定の時間で実行できる。
【０１３０】
＜変形例１＞
本発明の第１の実施の形態では、仮想Ｉ／Ｏパス生成部５１０が、仮想Ｉ／Ｏパス選択部５１０により仮想Ｉ／Ｏパスが最短となるような経路を選択していた。しかしながら、仮想Ｉ／Ｏパスに最短経路を選択した場合に、その仮想Ｉ／Ｏパスの一部に障害が発生した場合や、特定のポートに多くの仮想Ｉ／Ｏパスが設定された場合は、仮想Ｉ／Ｏパスをより柔軟に選択可能にすれば、障害時や経路混雑時にも安定した通信を提供することができる。
【０１３１】
そこで、本発明の変形例１では、仮想Ｉ／Ｏパスの生成時に、最短経路ではなく、仮想Ｉ／Ｏパスに設定する帯域の合計値や、仮想Ｉ／Ｏパスの実際の利用帯域に基づき複数の候補の中から選択できるようにする。仮想Ｉ／Ｏパスの一部に障害が発生した場合にも、仮想Ｉ／Ｏパス生成部５１０において、迂回可能な経路を構成できるようにする。
【０１３２】
図１３は、管理ノード１０３で実行されるグローバルＱｏＳ管理部１２２のＱｏＳ割当管理部１４１の仮想Ｉ／Ｏパス生成部５１０のブロック図である。
【０１３３】
仮想Ｉ／Ｏパス生成部５１０は、仮想Ｉ／Ｏパスリスト作成部１２０１、仮想Ｉ／Ｏパス利用率算出部１２０２、仮想Ｉ／Ｏパス選択部１２０３、仮想Ｉ／Ｏパス登録部１２０４、仮想Ｉ／Ｏパス候補リスト１２０５、条件フラグ１２０６を備える。
【０１３４】
仮想Ｉ／Ｏパスリスト作成部１２０１は、管理コンソール１０４から仮想Ｉ／Ｏパスの生成要求を受け付けると、仮想Ｉ／Ｏパスの送信元ノードと、宛先ノードから仮想Ｉ／Ｏパスを構成可能な経路のリストを作成する。仮想Ｉ／Ｏパスリスト作成部１２０１は、グローバルＱｏＳ管理テーブル１４０を参照し、予め設定した有限数の経路を探索し、仮想Ｉ／Ｏパス候補リスト１２０５に探索した経路を登録する。
【０１３５】
仮想Ｉ／Ｏパス利用率算出部１２０２は、仮想Ｉ／Ｏパス候補リスト１２０５が探索したそれぞれの経路について、グローバルＱｏＳ管理テーブル１４０を参照して、設定帯域の合計値の最大値と利用帯域の合計値の最大値を算出し、仮想Ｉ／Ｏパス候補リスト１２０５に反映する。
【０１３６】
仮想Ｉ／Ｏパス選択部１２０３は、仮想Ｉ／Ｏパス候補リスト１２０５から、条件フラグ１２０６に設定された値に応じて、仮想Ｉ／Ｏパスを選択する。
【０１３７】
仮想Ｉ／Ｏパス候補リスト１２０５は、論理Ｉ／Ｏ識別子に対応して作成するリストである。仮想Ｉ／Ｏパス候補リスト１２０５は、候補番号１２１０、経路長１２１１、最大設定帯域１２１２、最大利用帯域１２１３を備える。経路長１２１１は、仮想Ｉ／Ｏパスを構成する送信元ノードと送信先ノード間のスイッチファブリック１７０，１７１の段数である。最大設定帯域１２１２は、仮想Ｉ／Ｏパスを構成する各関連ポートに設定済の帯域の合計値のうち、最大の設定帯域を示す。設定済の帯域の合計値は、グローバルＱｏＳ管理テーブル１４０を参照することにより求められる。最大利用帯域１２１３は、仮想Ｉ／Ｏパスを構成する各関連ポートの利用帯域の合計値のうち、最大の利用帯域を示す。利用帯域の合計値も、グローバルＱｏＳ管理テーブル１４０を参照することにより求められる。
【０１３８】
条件フラグ１２０６は、仮想Ｉ／Ｏパスの経路を選定する条件を保持する。条件フラグ１２０６で利用する選択条件は、仮想Ｉ／Ｏパス生成要求の選択条件パラメータに含まれる。たとえば、選択条件パラメータには、経路長が最短の経路を選択する場合には「１」、設定帯域が最小の経路を選択する場合には「２」、利用帯域が最小の経路を選択する場合には「３」が設定される。仮想Ｉ／Ｏパス生成要求の選択条件パラメータに「１」が設定されている場合、仮想Ｉ／Ｏパス選択部１２０３は、仮想Ｉ／Ｏパス候補リスト１２０５の中から、利用帯域が最小の候補番号を持つ仮想Ｉ／Ｏパスを選択する。変形例１では、３通りの条件を示したが、これ以外の条件により仮想Ｉ／Ｏパスの経路を選択してもよい。また、変形例１では、条件フラグ１２０６が仮想Ｉ／Ｏパス生成要求のパラメータとして含まれていたが、パラメータに含むのではなく、あらかじめ管理プログラム等により条件フラグ１２０６に条件値が一意に設定されてもよい。
【０１３９】
以上のように変形例１では、仮想Ｉ／Ｏパスの経路の選択を、選択条件パラメータに応じて変更することができ、障害発生時や経路の混雑時にも仮想Ｉ／Ｏパスをより柔軟に設定可能となって、仮想Ｉ／Ｏパスを用いて安定した通信を提供することができる。
【０１４０】
＜変形例２＞
本発明の第１の実施の形態では、論理Ｉ／Ｏ管理部１１２がＯＳ３５０のＩ／Ｏドライバに組みこまれ、各仮想Ｉ／Ｏパスの状態情報をＩ／Ｏドライバが管理していた。本発明の変形例２では、論理Ｉ／Ｏ管理部１１２は、ハイパバイザ等の仮想化マシンモニタに組み込まれている点が第１の実施の形態とは異なる。論理Ｉ／Ｏ管理部１１２をハイパバイザに組み込むことにより、ＯＳ内のＩ／Ｏドライバを変更することなく、仮想Ｉ／Ｏパスの状態情報を管理できる。また、本発明の変形例２では、ローカルＱｏＳ管理部もハイパバイザに組み込む。そのため、論理パーティション（ＬＰＡＲ）に搭載したアプリケーションの性能を低下させることなく、仮想ホスト（ＬＰＡＲ上のゲストＯＳ）間あるいは仮想ホストと他の処理ノード（Ｉ／Ｏデバイス）間においてエンド・ツー・エンドの仮想的なＩ／Ｏパスを構成し、管理できる。以下、本発明の第１の実施の形態と異なる部分について説明する。
【０１４１】
図１４は、本発明の変形例２における情報処理システム１００のブロック図である。情報処理システム１００は、処理ノード１３０１、１３０２と管理ノード１３０３、管理コンソール１３０４、スイッチファブリック群１３０９を含む。変形例２では、管理者からのＱｏＳのための管理要求、たとえば、構成する仮想Ｉ／Ｏパスに対してＱｏＳ割り当てを行なう要求等を管理コンソール３１０４から管理ノード１３０３に送出するだけではなく、ＬＰＡＲの管理要求を管理コンソール３１０４からハイパバイザ１３１０、１３１１に対して送出する。変形例２では、管理コンソール１３０４が直接ハイパバイザ１３１０、１３１１に対して管理要求を送付する例を示すが、管理ノード１３０３、スイッチファブリック群１３０９経由でハイパバイザ１３１０、１３１１に管理要求を送付してもよい。
【０１４２】
処理ノード１３０１は、ハイパバイザ１３１０、Ｉ／Ｏアダプタ１３１２、ＬＰＡＲ１３２０〜１３２１を含む。ハイパバイザ１３１０は、処理ノード１３０１のハードウェアリソースを論理的に分割して管理するための仮想化ソフトウェアであり、ＬＰＡＲ管理部１３３０はハイパバイザ１３１０上に生成する論理パーティションを管理する公知の技術である。
【０１４３】
変形例２では、ＬＰＡＲ管理部１３３０に加えて、ローカルＱｏＳ管理部１３３２と、論理Ｉ／Ｏ管理部１３３４を有する。ここで、変形例２では、ハイパバイザ１３１０がローカルＱｏＳ管理部１３３２と論理Ｉ／Ｏ管理部１３３４を含む点が第１の実施の形態とは異なる部分である。一方、ローカルＱｏＳ管理部１３３２と論理Ｉ／Ｏ管理部１３３４の機能は第１の実施の形態で説明した機能と同等である。但し、第１の実施の形態では、処理ノードの状態情報と論理Ｉ／Ｏ情報を対応付けていたのに加えて、変形例２では、ＬＰＡＲ−仮想Ｉ／Ｏパス情報対応表１３３６とマッピング部１３３７を更に有する点が異なる。
【０１４４】
ＬＰＡＲ−仮想Ｉ／Ｏパス情報対応表１３３６は、ＬＰＡＲ管理部１３３０が管理するＬＰＡＲの状態情報と仮想Ｉ／Ｏパス情報の対応を保持する。マッピング部１３３７は、ＬＰＡＲ管理部１３３０にアクセスするためのインタフェースを有する。マッピング部１３３７は、ＬＰＡＲ管理部１３３０にアクセスして、ＬＰＡＲ管理部１３３０が管理するＬＰＡＲ識別子とリソースの対応表であるＬＰＡＲ管理テーブル（図示省略）を参照し、ＬＰＡＲ識別子と仮想Ｉ／Ｏパス情報を対応付ける。
【０１４５】
また、変形例２では、管理コンソール３１０４からの仮想Ｉ／Ｏパスの構成要求（生成要求、削除要求、変更要求）に含まれる送信元ノード識別子および転送先ノード識別子の構造が第１の実施例と異なる。変形例２では、仮想ホスト間あるいは仮想ホストと処理ノード（またはＩ／Ｏノード）間に仮想Ｉ／Ｏパスを構成することになるため、仮想ホストを特定するために、送信元ノード識別子にＬＰＡＲ識別子を含む。あるいはハイパバイザ１３１０が識別子を有する場合には、ハイパバイザ識別子とＬＰＡＲ識別子の組み合わせたものをノード識別子として扱い、仮想ホストを特定できるようにする。
グローバルＱｏＳ管理部１３２２の機能も第１の実施の形態と同等であるが、ハイパバイザに搭載したローカルＱｏＳ管理部１３３２と情報をやり取りするための通信インタフェースをハイパバイザ１３１０が備える点が異なる。
【０１４６】
以上のように、処理ノード１３０１，１３０２で計算機資源の仮想化を行う場合には、ハイパバイザなどの仮想化システムにローカルＱｏＳ管理部１３３２、１３３３と、論理Ｉ／Ｏ管理部１３３４，１３３５を組み込むことで、仮想ホスト（ゲストＯＳ）間や仮想ホストと他の処理ノード間で仮想Ｉ／Ｏパスを設定し、前記実施形態と同様に管理することができる。
【０１４７】
＜変形例３＞
上記変形例２では、ハイパバイザ１３１０がローカルＱｏＳ管理部１３３２と論理Ｉ／Ｏ管理部１３３４を備える例を示した。変形例３では、ハイパバイザ１３１０がローカルＱｏＳ管理部１３３２を備えるのではなく、ＬＰＡＲ１３２１がローカルＱｏＳ管理部１３３２を備える点が異なる。ＬＰＡＲ１３２１にローカルＱｏＳ管理部１３３２を備えることにより、ローカルＱｏＳ管理部１３３２が帯域監視に使用するＣＰＵやメモリ等のハードウェアリソースを一定の利用率に制限できる。
【０１４８】
なお、上記変形例２、３では、ハイパバイザ１３１０により計算機資源の仮想化を行う例を示したが、仮想マシンモニタ（Virtual Machine Monitor）を用いて仮想化を行う処理ノードにも適用することができる。
【０１４９】
＜変形例４＞
本発明の第１の実施例では、グローバルＱｏＳ管理部１２２のみが、情報処理システム１００全体の状態情報、管理ノード１０３を含む処理ノードの状態情報、スイッチファブリック群の状態情報、処理ノードとスイッチファブリック群に構成された仮想Ｉ／Ｏパスの状態情報を管理していた。そのため、グローバルＱｏＳ管理部１２２に障害が発生した場合に、グローバルＱｏＳ管理テーブルの内容が消失してしまう可能性があった。そこで、変形例４では、グローバルＱｏＳ管理部を搭載する管理ノードを複数箇所に設け、信頼性を向上できるようにする。
【０１５０】
図１５は、本発明の変形例４における情報処理システム１００のブロック図である。情報処理システム１００は、処理ノード１０１、１０２、マスタ管理ノード１４０１、サブ管理ノード１４０２、管理コンソール１４０５、スイッチファブリック群１４０９を含む。
【０１５１】
変形例４では、第１の実施の形態とは異なり、グローバルＱｏＳ管理部を搭載した管理ノード１４０１，１４０２を複数台備え、そのうちの一つがマスタ管理ノード１４０１、それ以外がサブ管理ノード１４０２として機能する。また、各処理ノードおよび各管理ノードに搭載するローカルＱｏＳ管理部１１１、１１６およびグローバルＱｏＳ管理部１４１４，１４１５の機能の一部が第１の実施の形態とは異なる。以下、第１の実施の形態との差異部分に特化して説明する。
【０１５２】
変形例４では、処理ノード１０１のローカルＱｏＳ管理部１１１は、新たに管理ノード情報１４５２を有する。管理ノード情報１４５２は、マスタ管理ノード１４０１とサブ管理ノード１４０２のノードの識別情報をそれぞれ保持する。管理ノード情報１４５０、１４５１、１４５３も上記管理ノード情報１４５２と同じ構成である。
【０１５３】
次に、処理ノード１０１の帯域監視部１４６０の基本的な構成は第１の実施の形態に示した帯域監視部１３２と同じであるが、ローカルＱｏＳ管理情報（ローカルＱｏＳ管理テーブル１３０）の送信先ノードと、グローバルＱｏＳ稼動状況確認の対象ノードが第１の実施の形態とは異なる。具体的には、処理ノード１０１の帯域監視部１４２は、ローカルＱｏＳ管理情報をマスタ管理ノード１４０１のグローバルＱｏＳ管理部１４１４に送信し、サブ管理ノード１４０２のグローバルＱｏＳ管理部１４１５の稼動状況を確認する。
【０１５４】
マスタ管理ノード１４０１のグローバルＱｏＳ管理部１４１４の帯域監視部１４４５は、管理ノード情報１４５０を参照し、処理ノード１０１、１０２のローカルＱｏＳ情報（ローカルＱｏＳ管理テーブル１３０，１３３の情報）を収集してローカルＱｏＳ管理部１１１，１１６の稼動状況を確認する。そして、帯域監視部１４４５は収集したローカルＱｏＳ情報でグローバルＱｏＳ管理テーブル１４４３を更新してから、グローバルＱｏＳ管理テーブル１４４３のコピーをサブ管理ノード１４０２のグローバルＱｏＳ管理部１４１５に送付する。
【０１５５】
サブ管理ノード１４０２のグローバルＱｏＳ管理部１４１５の帯域監視部１４４６は、管理ノード情報１４５１を参照し、マスタ管理ノード１４０１のグローバルＱｏＳ管理テーブル１４４３の更新情報を収集してマスタ側のグローバルＱｏＳ管理部１４１４の稼動状況を確認し、グローバルＱｏＳ管理テーブル１４４８に更新情報を反映する。そして帯域監視部１４４６は、更新したグローバルＱｏＳ管理テーブル１４４８の内容を処理ノード１０１，１０２のローカルＱｏＳ管理部１１１、１１６に送付する。
【０１５６】
図１６は、本発明の変形例４におけるグローバルＱｏＳ管理部１４１４および１４１５の帯域監視処理のフローを示す図である。自ノードがマスタ管理ノード１４０１であり、ローカルＱｏＳ管理部１１１，１１６すべてが正常に稼動している場合のフローは図１０と同じであるため、変形例４では、図１０と異なるフローに絞って説明する。
【０１５７】
ステップ１５０３では、自ノードがマスタ管理ノード１４０１かサブ管理ノード１４０２かを管理ノード情報１４５０を参照して判定する。自ノードがサブ管理ノード１４０２の場合、マスタ管理ノード１４０１からグローバルＱｏＳ管理テーブル１４４３の更新情報を受信する（ステップ１５２０）。
【０１５８】
そして、マスタ管理ノード１４０１のグローバルＱｏＳ管理部１４１４の稼動状況を確認する（ステップ１５２１）。マスタ管理ノード１４０１が正常稼動中であれば、サブ管理ノード１４０２のグローバルＱｏＳ管理テーブル１４４８の内容を更新する（ステップ１５０８）。稼動の確認が出来ない場合には、マスタ管理ノード１４０１に障害が発生したと判定して、マスタ管理ノード１４０１の変更処理を行なう（ステップ１５２３）。マスタ管理ノード１４０１の変更処理では、サブ管理ノード１４０２の管理ノード情報１４５１のマスタ管理ノードにサブ管理ノード１４０２の識別情報を保持する。
【０１５９】
続いて、サブ管理ノード１４０２を選択し、グローバルＱｏＳ管理テーブル１４４８の初期化と、グローバルＱｏＳ管理部１４１５の初期化を行い、各処理ノードにサブ管理ノード１４０２がマスタ管理ノード１４０１を引き継いだことを通知して、各処理ノード１０１，１０２の管理ノード情報１４５２、１４５３を更新させる（ステップ１５２４）。
【０１６０】
自ノードがマスタ管理ノード１４０１である場合に、ローカルＱｏＳ稼動状況確認を行なった結果（ステップ１５０５）、ローカルＱｏＳ管理部１１１、１１６の一部の稼動確認が出来ない場合には、あらかじめ設定した障害処理（たとえば、ローカルＱｏＳ管理部１１１，１１６の再起動など）を行う（ステップ１５３０）。
【０１６１】
ローカルＱｏＳ管理部１１１の帯域監視部１４６０の処理フローは図１１と同様であるが、ステップ１００３ではサブ管理ノード１４０２からグローバルＱｏＳ情報を受信し、ステップ１００４では、サブ管理ノード１４０２の稼動状況を確認する点が前記第１の実施例とは異なる。
【０１６２】
以上のように、情報処理システム１００全体の状態情報を管理する管理ノードを複数設けて、マスタ管理ノード１４０１に障害が発生するとサブ管理ノード１４０２がマスタ管理ノード１４０１を引き継ぐことにより、マスタ管理ノード１４０１のグローバルＱｏＳ管理テーブル１４４３の内容が消失するのを防いで、仮想Ｉ／Ｏパスを利用する情報処理システムの信頼性を向上することができる。
【産業上の利用可能性】
【０１６３】
本発明は、複数のサーバやＩ／Ｏ装置をスイッチファブリックなどのＩ／Ｏスイッチで接続して仮想Ｉ／Ｏパスを利用する計算機システムに利用することができ、複数のサーバ間，あるいはサーバと処理ノード間に生成された仮想的なＩ／Ｏパス毎にエンド・ツー・エンドの性能を保証することができる。
【図面の簡単な説明】
【０１６４】
【図１】本発明の第１の実施の形態における情報処理システムのハードウェアの一例を示すブロック図である。
【図２】本発明の第１の実施の形態における情報処理システムの機能要素の一例を示すブロック図である。
【図３】本発明の第１の実施の形態におけるローカルＱｏＳ管理テーブルの一例を示す構成図である。
【図４】本発明の第１の実施の形態におけるグローバルＱｏＳ管理テーブルの一例を示す構成図である。
【図５】本発明の第１の実施の形態における論理Ｉ／Ｏ管理テーブルの一例を示す構成図である。
【図６】本発明の第１の実施の形態におけるＱｏＳ割当管理部の一例を示すブロック図である。
【図７】本発明の第１の実施の形態におけるグローバルＱｏＳ管理部の帯域監視部の一例を示すブロック図である。
【図８】本発明の第１の実施の形態におけるローカルＱｏＳ管理部の帯域監視部の一例を示すブロック図である。
【図９】本発明の第１の実施の形態における仮想Ｉ／Ｏパス生成処理の一例を示すフローチャートである。
【図１０】本発明の第１の実施の形態におけるグローバルＱｏＳ管理部におけるグローバル帯域監視処理の一例を示すフローチャートである。
【図１１】本発明の第１の実施の形態におけるローカルＱｏＳ管理部におけるローカル帯域監視処理の一例を示すフローチャートである。
【図１２】本発明の第１の実施の形態におけるローカル帯域監視処理の中の論理Ｉ／Ｏ帯域算出処理の一例を示すフローチャートである。
【図１３】本発明の変形例１におけるＱｏＳ割当管理部の仮想Ｉ／Ｏパス生成部の一例を示すブロック図である。
【図１４】本発明の変形例２における情報処理システムの一例を示すブロック図である。
【図１５】本発明の変形例４における情報処理システムの一例を示すブロック図である。
【図１６】本発明の変形例４におけるグローバルＱｏＳ管理部におけるグローバル帯域監視処理の一例を示すフローチャートである。
【符号の説明】
【０１６５】
１００  情報処理システム
１０１、１０２  処理ノード
１０３  管理ノード
１０４  管理コンソール
１０５  スイッチファブリック群
１１１、１１６  ローカルＱｏＳ管理部
１１２、１１７  論理Ｉ／Ｏ管理部
１２２  グローバルＱｏＳ管理部
１３０、１３３ローカルＱｏＳ管理テーブル
１３１、１３４  ＱｏＳ割当管理部
１３２、１３５、１４２帯域監視部
１４０  グローバルＱｏＳ管理テーブル
１５０、１５１、１５２  論理Ｉ／Ｏ管理テーブル
７０１  論理Ｉ／Ｏ帯域算出部
７０７  スイッチ情報取得部
【図１】
2009075718.tif 000003
【図２】
2009075718.tif 000004
【図３】
2009075718.tif 000005
【図４】
2009075718.tif 000006
【図５】
2009075718.tif 000007
【図６】
2009075718.tif 000008
【図７】
2009075718.tif 000009
【図８】
2009075718.tif 000010
【図９】
2009075718.tif 000011
【図１０】
2009075718.tif 000012
【図１１】
2009075718.tif 000013
【図１２】
2009075718.tif 000014
【図１３】
2009075718.tif 000015
【図１４】
2009075718.tif 000016
【図１５】
2009075718.tif 000017
【図１６】
2009075718.tif 000018