説明

仮想I/Oパスの管理方法、情報処理システム及びプログラム

【課題】サーバ間で仮想化されたI/Oパスを構成し、エンド・ツー・エンドでのQoSを保証する。
【解決手段】情報処理システムは、グローバルQoS管理部と、処理ノードに対応したローカルQoS管理部および論理I/O管理部を備える。グローバルQoS管理部は、情報処理システムにおいてエンド・ツー・エンドで仮想的なI/Oパスを構成し、仮想的なI/Oパスへの帯域を割当、変更、削除するQoS割当管理部と、スイッチファブリック全体の状態情報と全ての仮想的なI/Oパスの状態情報を保持するグローバルQoS管理テーブルと、スイッチファブリック全体の状態情報を監視する帯域監視部とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スイッチファブリック等のI/Oスイッチを介して接続されたサーバ群において、仮想化されたI/Oの転送経路毎にエンド・ツー・エンドでI/Oアダプタ間のデータ転送量及び通信帯域を管理する方法とそれを用いた情報処理システムに関する。
【背景技術】
【0002】
プロセッサ(CPU)のマルチコア化および低消費電力化の流れが本格化し、サーバ分野におけるCPUの仮想化の本格導入が進みつつある。CPU仮想化とは、従来単一のOSしか使用できなかった単一システムのハードウェアリソース(たとえばCPUやメモリ)を、複数のOSが使えるように、論理的に複数のハードウェアリソースに分割して使用する技術である。CPUの仮想化により、ユーザは低コストで消費電力を削減して効率よく複数のサーバを一つまたは少数のサーバに統合できる。
【0003】
従来のサーバシステムにおけるCPUの仮想化はソフトウェアベースで実現していたためオーバヘッドが大きいという問題があった。しかしながら、近年、CPUベンダ各社がこのCPUの仮想化を支援するハードウェア機構をCPU内に搭載し、仮想化に伴うオーバヘッドを削減できるようになってきた。このような状況からもCPU仮想化機能のコモディティ化が今後一層進むと考えられる。
【0004】
従来のCPUの仮想化ではCPUやメモリなどのハードウェアリソースを分割して使用していたが、性能やセキュリティ等の問題からそのI/Oは仮想化対象とはせずに、独立して設けることが一般的であった。しかしながら、低消費電力化のニーズの高まりと継続的なネットワークの高速化により、今後I/Oの仮想化の流れも加速すると考えられる。
【0005】
I/Oの仮想化に関しては、近年CPUベンダ各社がI/Oの仮想化を支援するハードウェア機構を搭載したチップセットを市場投入しつつある。また、PCI関連の規格を策定するPCI−SIGにおいてもI/Oインタフェースカード、I/OスイッチにおいてI/Oを仮想化するための標準化が進められている。
【0006】
I/Oインタフェースカード部におけるI/O仮想化の具体的な例としては、1つの物理I/Oインタフェースカードを複数のOSで共有する方法がある。たとえば、特許文献1では、CPUの仮想化により論理的に分割された仮想ホストと、物理I/Oインタフェースカード上で異なるQoS(Quality of Service)を持つ仮想I/Oインタフェースカードをサポートするための技術が開示されている。特許文献1では、ハイパバイザがシステムイメージに対して割当られる処理キューのセット毎にQoSの重み付けを設定することで、仮想I/Oインタフェースカードに対応してQoSを設定できるようにする。
【0007】
一方、I/OスイッチによるI/O仮想化技術として、PCI−ExpressスイッチやInfiniBandスイッチがある。これらのI/Oスイッチではスイッチに接続するサーバ群がIPやFibre Channel等の複数のI/Oプロトコルを同じ経路を利用して転送できるため、低コストでI/Oを統合できる。しかしながら、このようなI/Oスイッチを導入する場合、I/Oスイッチの各ポートの接続関係を記録する、あるいはポートの状態情報を収集するための管理機能が必要である。
【0008】
上記のようなI/Oスイッチを管理する方法として、I/Oスイッチ自体を高機能化する方法と、I/Oスイッチは高機能化せずに管理専用のサーバにより管理する方法がある。
【0009】
I/Oスイッチ自体を高機能化する方法として、たとえば、特許文献2では、ファイバチャネルスイッチシステムにおけるファブリックの状態情報を収集する方法が開示されている。ファイバチャネルスイッチシステムは複数のスイッチファブリックで構成されるため、各ファブリックの負荷状況をファイバチャネルスイッチシステム内でモニタ可能なファブリック情報収集方法を提供する必要がある。この課題を解決するため、特許文献2では、スイッチファブリックがCPUを装備し、そのCPUが状態の情報の収集要求を受け付けると、スイッチファブリックのCPUが主体的に負荷情報を収集する。
【0010】
一方、I/Oスイッチの外側でI/Oスイッチ状態を管理する方法として、たとえば、非特許文献1には、ASI-SIGにおけるファブリック管理マネージャの仕様が開示されている。ファブリック管理マネージャは、ASI(Advanced Switch Interconnect)スイッチファブリックの構成管理を行なう。ASIスイッチファブリックはプロセッサを装備しないため、管理専用サーバのコンフィギュレーション空間にメモリマップされたレジスタにアクセスしてファブリックの情報を収集する。
【0011】
ここで収集できるファブリックの情報としては、物理ポートに対応するアクティブ情報や送受信パケット数などである。ASIでは、これらの情報をASIがサポートするPI(プロトコルインタフェース)−4と呼ぶレジスタアクセスのためのパケットを利用してインバウンドで取得する。
【特許文献1】米国特許出願公開第2006/0193327A1
【特許文献2】特開2001−274794号公報
【非特許文献1】ASI Core Specification Revision 1.1 Final, ASI-SIG, 2004年
【発明の開示】
【発明が解決しようとする課題】
【0012】
特許文献1に開示されている方法により、単一の物理I/Oインタフェースカードを共有する仮想I/Oインタフェースカードと、仮想I/Oインターフェースカードに対応する仮想ホスト間のI/OのQoSを個々に設定することができる。
【0013】
しかしながら、特許文献1に開示された方法を用いた場合、I/Oスイッチに接続したサーバ群からなる情報処理システムにおけるI/Oインタフェースカードとサーバ間のQoSしか保証できない。すなわち、従来の手法ではI/Oスイッチを介してI/Oインタフェースカードで接続されたサーバ間あるいはサーバとI/Oデバイス間において仮想的に構成されたI/Oパスのエンド・ツー・エンドでのQoSを保証できないという問題があった(第1の問題)。
【0014】
すなわち、マルチプロトコルに対応したI/Oインターフェースカードでは、I/Oスイッチの物理ポートに異なるプロトコルの仮想化されたI/Oポートを構成することができ、一つの物理ポートにTCP/IPの仮想化されたI/Oポートと、iSCSIの仮想化されたI/Oポートを構成することができる。そして、I/OインターフェースカードとI/Oスイッチ及び他の計算機またはI/O装置間で、TCP/IPの仮想的なI/Oパスと、SCSIの仮想的なI/Oパスをそれぞれ構成することができる。しかしながら、上記特許文献1では、ひとつの物理的なI/Oインターフェースカードに、複数の仮想ホスト(ゲストOS)毎に仮想I/Oインターフェースカードを割り当てて、仮想I/Oインターフェースカード毎にQoSを制御することはできるが、上述のようにTCP/IPの仮想的なI/Oパスと、iSCSIの仮想的なI/Oパスについて、それぞれのQoSを確保することができない、という問題があった。
【0015】
加えて、情報処理システム全体において仮想的に構成された複数のI/OパスのQoSを保証するためには、構成されたI/Oパス毎に仮想I/Oインターフェースカードのポートの利用情報を管理する必要がある。複数のI/Oパスが構成される場合には、単一の物理ポートにおいて複数のI/Oパスのそれぞれに対するポートの状態情報を管理する必要がある。特許文献2に開示されている技術では、スイッチファブリックがCPUを装備し、I/Oスイッチ(スイッチファブリック)上のCPUが管理のためにポート毎の負荷情報を収集することが前提であった。そのため、CPUを持たないI/Oスイッチにおいてはポート毎の負荷情報を収集できないという問題点があった。
【0016】
一方、非特許文献1に開示されている技術では、管理専用サーバがI/Oスイッチのポートの状態情報を取得するためのインタフェースが開示されている。このインタフェースを用いることによりI/OスイッチがCPUを持たない場合であっても、サーバを構成するI/Oスイッチのポートの状態情報を収集できる。しかしながら、非特許文献1の方法では、今後CPUの仮想化とI/O仮想化が本格化するのに伴い、I/Oスイッチに接続されたサーバ群においてサーバ間、あるいはサーバとI/O装置間で複数のプロトコル種に対応する仮想化されたI/Oパスが構成された場合に、仮想化されたI/Oパスそれぞれに対応するポートの状態情報を収集することはできないという問題があった(第2の問題)。
【0017】
さらに、サーバ群を接続するI/Oスイッチの規模や、物理I/Oポートあたりの仮想化されたI/Oの数の増加に伴い、管理すべきI/Oポートの状態情報が増加する。その結果、ポートの状態情報の読み出し回数が増加する。I/Oポートの状態情報の読み出し回数が増加すると、他の処理に対して影響を及ぼし、その結果状態情報の取得のための処理時間が増加したり、その処理時間がばらついたりする問題があった(第3の問題)。
【0018】
先に述べたように、CPUの仮想化の本格導入に向け、I/Oスイッチに接続されたサーバ群において、サーバ間、あるいはサーバとI/O装置間で構成された複数の仮想的なI/Oパスのデータ量及び転送速度の管理方法とそれを用いたシステムが必要である。
【0019】
I/Oスイッチに接続されたサーバでCPUの仮想化を行う装置において、上記第1の問題を解決するため、複数の仮想化されたI/Oパスが構成された場合であっても、仮想化されたI/O毎のデータ転送経路(パス)に対してエンド・ツー・エンドでQoSを保証可能な、仮想化されたI/Oパスのデータ量及び転送速度(帯域幅)の管理方法が必要である。
【0020】
上記第2の問題を解決するため、CPUを持たないI/Oスイッチにおいても、物理ポートへ仮想的に構成したI/Oポート毎の状態情報を収集することが可能な仮想化されたI/Oパスのデータ量及び転送速度(帯域幅)の管理方法が必要である。
【0021】
上記第3の問題を解決するため、大規模なI/Oスイッチや物理ポートあたりの仮想化されたI/Oポート数が多い場合であっても、管理すべき仮想化されたI/Oポート毎の状態情報の読み出し処理を一定の時間で実行可能な仮想化されたI/Oパスのデータ量及び転送速度(帯域幅)の管理方法が必要である。
【0022】
本発明の第1の課題は、I/Oスイッチに接続されたサーバ群からなる情報処理システムにおいて、複数の仮想化されたI/Oパスが構成された場合に、各I/Oパスのエンド・ツー・エンドでQoSを保証可能な、仮想化されたI/Oパスのデータ量及び転送速度(帯域幅)の管理方法を提供することにある。
【0023】
本発明の第2の課題は、上記第1の課題に加えて、CPUを持たないI/Oスイッチであっても、物理ポートに仮想的に構成したI/Oポート毎の情報を収集することが可能な仮想化されたI/Oのデータ量及び転送速度(帯域幅)の管理方法を提供することにある。
【0024】
本発明の第3の課題は、上記第2の課題に加えて、大規模なI/Oスイッチや物理ポートあたりの仮想化されたI/Oポート数が多い場合であっても、管理すべき仮想化されたI/Oパス毎の状態情報の読み出し処理を一定の時間で実行可能な仮想化されたI/Oパスのデータ量及び転送速度の(帯域幅)管理方法を提供することにある。
【課題を解決するための手段】
【0025】
本発明は、物理I/Oポートに仮想I/Oポートを設定可能なI/Oアダプタを備えたノードを複数有し、前記ノードのI/OアダプタをI/Oスイッチのポートに接続し、前記複数のノード間で前記仮想I/Oポートを介してデータの転送を行う情報処理システムにおける仮想I/Oパスの管理方法であって、前記複数のノードのうちのいずれか一つが、前記I/Oスイッチのポートの情報を収集し、前記各ノードがそれぞれのノードが備えたI/Oアダプタの仮想I/Oポート毎に帯域を取得し、前記複数のノードのうちのいずれか一つが、前記I/Oスイッチのポートの情報と、前記帯域を取得し、前記I/Oスイッチのポートの情報と、前記帯域を取得した前記ノードが、送信元のノードの情報と送信先のノードの情報と帯域を含む仮想I/Oパスの生成要求を受け付けて、前記仮想I/Oパスの生成要求を受け付けたノードが、前記I/Oスイッチのポートの情報から前記送信元のノードから送信先のノードまでの仮想I/Oパスの経路を選択し、前記仮想I/Oパスの生成要求を受け付けたノードが、前記選択した仮想I/Oパスの経路上の仮想I/Oポートを抽出し、抽出した仮想I/Oポートに前記取得した帯域と前記生成要求に含まれる帯域から当該仮想I/Oパスを設定可能か否かを判定し、前記仮想I/Oパスの生成要求を受け付けたノードが、前記仮想I/Oパスを設定可能と判定しときに、前記仮想I/Oパス上のポートに当該仮想I/Oパスを設定する。
【0026】
また、前記複数のノードのうちのいずれか一つが、前記I/Oスイッチのポートの情報を収集するステップは、前記複数のノードの稼動状態に基づいて一つのノードを選択するステップを含む。
【発明の効果】
【0027】
本発明により、I/Oスイッチを介して複数の処理ノードを接続する情報処理システムに対して、複数の仮想化されたI/Oパスを構成し、I/Oパス毎にデータ転送速度(帯域幅)を制御できるため、仮想化されたI/Oパス毎にエンド・ツー・エンドでのQoSを保証できる。また、CPUを持たないI/Oスイッチであっても、I/Oアダプタの物理ポートに仮想的に構成したI/Oポート毎の状態情報を管理し、それらの情報を収集できる。さらに、大規模なI/Oスイッチや物理ポートあたりの仮想I/Oポート数が多い場合であっても、高負荷となるI/Oスイッチの状態情報の読み出し処理を、I/Oスイッチに接続する複数の処理ノードの稼動状態に応じて分担することで、他の通信への影響を最小化して、I/Oスイッチの情報収集を一定の時間で実行できる。
【発明を実施するための最良の形態】
【0028】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【0029】
<第1実施形態>
図1は第1の実施形態を示し、本発明を適用する情報処理システムのブロック図である。
【0030】
情報処理システムは、サービスを提供する複数の処理ノード(サーバ計算機)101、102と、これら処理ノード101、102を管理する管理ノード(管理計算機)103と、各ノードを接続して仮想的なI/Oパス(論理I/Oパス)を提供するために複数のスイッチファブリック170、171を備えたスイッチファブリック群105から構成される。なお、管理ノード103には管理者に対する入出力が可能なコンソール104が接続されている。また、各ノードは図示しないバックプレーンを介して接続され、図示しない筐体に格納されている。
【0031】
処理ノード101、102はそれぞれ、複数のCPU(プロセッサ)コア#0、#1を備えたCPU(所謂、マルチコアプロセッサ)10を複数備えている。なお、処理ノード101、102は同一の構成であるので、処理ノード101の構成についてのみ以下に説明する。
【0032】
CPU#0は複数のCPUコア#0−0、#0−1を有し、CPU#1は複数のCPUコア#1−0、#1−1を有する。CPU#0、#1は、フロントサイドバス11を介してチップセット12に接続される。
【0033】
チップセット12はメモリバスを介して主記憶13に接続され、CPU#0、#1のメモリアクセス要求に応じて主記憶13をアクセスする。また、チップセット12はI/Oバス14を介してI/OインターフェースカードとしてのI/Oアダプタ113に接続され、CPU#0、#1のI/Oアクセス要求に応じてスイッチファブリック群105にアクセスする。I/Oバス14は、例えば、PCI−EXPRESSで構成することができる。
【0034】
I/Oアダプタ113は、複数のプロトコルを提供し、物理的なI/Oポート(以下、)に複数の仮想的なI/Oポート(以下、仮想I/Oポートまたは論理I/Oポート)を構成することができ、各仮想I/Oポートごとにスイッチファブリック群105と通信を行う。I/Oアダプタ113は、後述するレジスタ180を備えたコントローラを備える。
【0035】
管理ノード103のハードウェア構成は、上記処理ノード101と同様であり、CPU20、フロントサイドバス21チップセット22、メインメモリ23、I/Oバス24、I/Oアダプタ120を備え、I/Oアダプタ120がスイッチファブリック群105に接続される。
【0036】
CPU10は、後述するようにOSとアプリケーション及び各管理部を主記憶13にロードして実行する。
【0037】
図2に、本発明の第1の実施の形態の情報処理システム100のブロック図を示す。
【0038】
情報処理システム100は、処理ノード101、102、管理ノード103、管理コンソール104、スイッチファブリック群105で構成される。処理ノード101、102、管理ノード103は、スイッチファブリック群105に接続される。スイッチファブリック群105と各ノードの接続には、共通の物理インタフェースを使用しているが、その上位のプロトコルはいかなるプロトコルを使用してよい。たとえば、独自の物理インタフェースを持つ独自のプロトコルであってもよいし、PCIのような標準の物理インタフェースを用いる独自プロトコルであってもよい。あるいはPCI Expressのような標準の物理インタフェースを持つ標準のプロトコルであってもよい。
【0039】
例えば、スイッチファブリック群105とI/Oアダプタ113,118,120は、物理層としてPCI Expressを採用し、上位層としてTCP/IP、FC(Fibre Channel)あるいはSCSIなどの複数のプロトコルで通信可能に構成される。
【0040】
また、スイッチファブリック170,171は、各スイッチファブリックを構成する複数の物理I/Oポート及び仮想I/Oポートの設定状態を格納するレジスタ180、181を備える。
【0041】
処理ノード101,102は、アプリケーションを搭載するサーバ処理ノードあるいはI/Oデバイス(例えば、ディスクドライブなど)を搭載し、I/O処理を行うI/O処理ノードのいずれかである。本発明の第1の実施の形態では、処理ノード101,102はアプリケーションを実行するサーバ処理ノードとして機能し、処理ノード101、102と管理ノード103のみがスイッチファブリック群105に接続する例を図示しているが、I/Oデバイス等を搭載するI/O処理ノードがスイッチファブリック群105に接続していてもよい。その場合、I/Oノードも他ノードと共通の物理インタフェースで接続しており、I/OノードではI/Oデバイスを制御するI/Oコントローラと、I/Oデバイスが搭載されている。
【0042】
処理ノード101、102はスイッチファブリック群105を介してデータの受け渡しを行なう。本発明の第1の実施の形態では、処理ノードを2台図示しているが、何台備えられていてもよい。
【0043】
管理ノード103は、情報処理システム100の全体構成を管理し、スイッチファブリック群105を介して、処理ノード101、102と状態情報のやりとりをする。本発明の第1の実施の形態では、管理ノードを1台のみ図示しているが、信頼性を向上するため複数台備えられていてもよい。複数台の管理ノードが備えられている場合には、管理ノード間でデータの整合性を取られるように制御される。
【0044】
管理コンソール104は、CPUとメモリ等を持つ計算機である。管理者からの管理要求、たとえば、スイッチファブリック群105に構成する仮想I/Oパス(論理I/Oパス)に対してQoS(Quality of Service)の割り当てを行なう要求等、を管理ノード103に送出する。なお、仮想I/Oパスは、後述するように管理コンソール104から管理ノード103への指令に基づいて各処理ノード101,102のQoS割当管理部131,134が各I/Oドライバに通知し、各I/Oドライバで設定される。あるいは、各処理ノード101,102のアプリケーション110,115がI/Oドライバに通知して仮想I/Oポートを設定してもよい。
【0045】
ここで、本実施形態でのQoSは、物理I/Oポート上に設定する複数の仮想I/Oポート(仮想I/Oポート)毎の帯域を保証することを示す。例えば、図5で示すように、I/Oアダプタ113の物理I/Oポート「0」に、仮想I/Oポート「1」と「4」を設定した場合、仮想I/Oポート「1」はTCP/IPを用いて、他の処理ノードと通信を行い、仮想I/Oポート「4」はFCのプロトコルでさらに他の処理ノード(例えば、ストレージ装置)と通信を行う。このとき、TCP/IPの帯域と、FCの帯域を各仮想I/Oポート(仮想I/Oポート)毎に保証することが、本実施形態におけるQoSとなる。
【0046】
スイッチファブリック群105は、処理ノード101、102、管理ノード103間を接続する。スイッチファブリック群105の内部構成はバス、クロスバネットワーク、あるいは多段ネットワークのいずれでもよい。処理ノード間、処理ノードと管理ノード間で情報をやりとりできるのであれば、いかなる構成でもよい。本発明の第1の実施の形態では、スイッチファブリック群105は、ノンブロッキングのクロスバネットワークで構成される複数のスイッチファブリック170、171で構成されている例を示す。
【0047】
処理ノード101は、アプリケーション110、ローカルQoS管理部111、論理I/O管理部112、I/Oアダプタ113を備える。処理ノード102も処理ノード101と同様の構成であり、図2において符号のみが異なる。
【0048】
アプリケーション110は、処理ノード101のCPU10が実行するユーザプログラムである。ローカルQoS管理部111は、ローカルQoS管理部111を搭載する処理ノード101と処理ノード101上のI/Oアダプタ113の仮想的なI/Oポートの設定情報を管理し、これらの情報を定期的に管理ノード103上のグローバルQoS管理部122(後述)に通知する。論理I/O管理部112は、物理I/Oアダプタ113と仮想化されたI/Oアダプタ113の状態情報と、データ転送量(あるいはデータ転送速度や帯域幅)の対応を管理する。I/Oアダプタ113は、スイッチファブリック群105とのインタフェースである。
【0049】
ここで、ローカルQoS管理部111は、独立したアプリケーションとして実装されてもよいし、システム管理用のアプリケーションの一部として組み込まれてもよい。また、論理I/O管理部112は、OS350の管理下にあるI/Oドライバに組み込まれていてもよい。あるいは、I/Oドライバではなく、ハイパバイザなどの仮想化ソフトウェアの一部として組み込まれていてもよい。本発明の第1の実施の形態では、ローカルQoS管理部111はシステム管理用のアプリケーションとして組み込まれ、論理I/O管理部112は、OS350内のI/Oドライバに組み込まれている。本発明の第1の実施の形態では、処理ノード101、102がローカルQoS管理部111、116を備えるが、管理ノード103内のI/Oの帯域幅を管理したい場合には、管理ノード103にもローカルQoS管理部を備えればよい。
【0050】
管理ノード103は、I/Oアダプタ120と、論理I/O管理部121と、グローバルQoS管理部122を備える。I/Oアダプタ120の構成は前述した処理ノード101のI/Oアダプタ113の構成と同じである。
【0051】
論理I/O管理部121は、管理ノード103上の物理的なI/Oアダプタ120と、仮想化されたI/Oアダプタ120のポートの状態情報と、データ転送量(帯域幅)の対応を管理する。
【0052】
グローバルQoS管理部122は、情報処理システム100全体の状態情報と、管理ノード103を含む処理ノードの状態情報(ローカルQoS管理テーブル130の情報)、スイッチファブリック群105の状態情報(スイッチ情報303)、処理ノード101、102とスイッチファブリック群105に構成された仮想I/Oパスの状態情報(パス情報)を管理する。また、グローバルQoS管理部122は、スイッチファブリック群105および処理ノード101,102の状態を監視し、管理コンソール104経由で設定された構成情報に従って、仮想I/Oパスを構成する各コンポーネントへ(仮想I/Oポート等)の帯域の割当や変更や削除を行なう。たとえば、仮想I/Oパス毎の利用帯域等の状態情報と仮想I/Oパスの設定時の情報を比較し、利用帯域が設定帯域を満たしていない場合、あるいは設定帯域を超える場合に、仮想I/Oパスを構成する各コンポーネントにおいて設定帯域を変更する。ここで、本発明の第1の実施の形態では、管理ノード103がグローバルQoS管理部122を備えるが、管理ノード103ではなく、処理ノードの一部にグローバルQoS管理部122を備えてもよい。
【0053】
処理ノード101のローカルQoS管理部111は、ローカルQoS管理テーブル130と、QoS割当管理部131及び帯域監視部132を備える。ローカルQoS管理テーブル130は、処理ノード101に搭載するI/Oアダプタ113のポート情報(ポート情報204、論理I/O情報205)を管理する。ローカルQoS管理テーブル130の詳細は後述する(図3参照)。QoS割当管理部131は、帯域監視部132と連携して動作し、ローカルQoS管理テーブル130の内容に従い、仮想化されたI/Oパス(仮想I/Oパス)に対応するI/Oアダプタ113の仮想I/Oポート(仮想I/Oポート)を生成、削除、変更、表示する。帯域監視部132は、ローカルQoS管理部111が管理するI/Oアダプタ113に構成された仮想I/Oポートの状態情報(ポート情報204,論理I/O情報205)を、定期的(所定の周期)にグローバルQoS管理部122に通知する。帯域監視部132の詳細は後述する(図8参照)。
【0054】
管理ノード103のグローバルQoS管理部122は、グローバルQoS管理テーブル140、QoS割当管理部141、帯域監視部142を備える。グローバルQoS管理テーブル140は、スイッチファブリック群105の状態情報(スイッチ情報303)を管理する。グローバルQoS管理テーブル140の詳細は後述する(図4参照)。QoS管理割当部141は、グローバルQoS管理テーブル140の内容に従い、仮想化されたI/Oパスを構成する各関連ポート(各処理ノード上のI/Oアダプタ113,118とスイッチファブリック群105のポート)に対して帯域を割当て、関連するテーブルを変更する。QoS割当管理部141の詳細は後述する(図5参照)。帯域監視部142は、スイッチファブリック群105の状態情報(スイッチ情報303)を監視する。帯域監視部142の詳細は後述する(図6参照)。ここで、関連ポートは、起点となるI/Oアダプタ113から通信先(終点)のI/Oアダプタまでの装置の情報と仮想I/Oパスが利用するポートの情報で構成される。例えば、処理ノード101のI/Oアダプタ113からスイッチファブリック170,171を経由して処理ノード102のI/Oアダプタ118へ通信を行う仮想I/Oパスの場合、処理ノード101のI/Oアダプタ113の論理I/O情報205には、I/Oアダプタ113の物理I/Oポートと仮想I/Oポートの識別子と、スイッチファブリック170、171の識別子と、各スイッチファブリックで使用するポートの識別子と、終点となるI/Oアダプタ118の物理I/Oポートと仮想I/Oポートの識別子が論理I/O情報205の関連ポート情報に格納される。なお、スイッチファブリック群105の関連ポート情報は、入口のスイッチファブリックの識別子とポートの識別子及び出口となるスイッチファブリックの識別子とポートの識別子で表すことができる。
【0055】
処理ノード101の論理I/O管理テーブル150は、I/Oアダプタ113の物理I/Oポートとその物理I/Oポート上に仮想的に構成された仮想I/Oポートの状態情報(ポート情報204、論理I/O情報205)と、仮想I/Oポートにおけるデータ転送量(帯域幅)の対応を保持する。処理ノード102及び管理ノード103の論理I/O管理テーブル151、152も上記論理I/O管理テーブル150の構成と同等である。論理I/O管理テーブル150の詳細は後述する(図5参照)。
【0056】
I/Oアダプタ113のコントローラ16はレジスタ160を備える。このレジスタ160は、処理ノード101のI/Oアダプタ113のコンフィギュレーション空間にマップされたメモリマップドI/Oである。レジスタ160には、I/Oアダプタ113の各種設定を記録する。ここでは、各種設定のほか、I/Oアダプタ113の備える物理I/Oポートのアクティブ状態と送受信データ数等を記録する。I/Oアダプタのレジスタは他のノードも同様であり、処理ノード102のI/Oアダプタ118のコントローラ16はレジスタ161を備え、管理ノード103のI/Oアダプタ120のコントローラ26はレジスタ162を備えて、上述のようなデータを格納する。レジスタ161は処理ノード102のコンフィギュレーション空間にマップされ、レジスタ162は、管理ノード103の管理するコンフィギュレーション空間にマップされている。各レジスタは通常マップされたノードからアクセス可能であるが、管理ノード103のみ、処理ノード101および102のアドレス空間にマップされたレジスタ160、161にアクセス可能である。このとき、管理ノード103は、異なるアドレス空間にマップされたレジスタ160,161にアクセスするためのアドレス変換部(図示省略)を有する。
【0057】
スイッチファブリック170はスイッチファブリック群105を構成するI/Oスイッチである。スイッチファブリック171もスイッチファブリック170と同様の構成である。スイッチファブリック170の設定は、レジスタ180を介して行なう。レジスタ180は、管理ノード103がアクセス可能なアドレス空間(コンフィギュレーション空間)にマップされている。レジスタ180には、たとえば、各スイッチファブリックの物理I/Oポートのアクティブ状態や、物理I/Oポート当たりの送受信データ数などが記録されている。
【0058】
図3は、本発明の第1の実施の形態におけるローカルQoS管理テーブル130(133)の構成図である。ローカルQoS管理テーブル130は、ローカルQoS管理部111を搭載する処理ノード101と処理ノード101上のI/Oアダプタ113のローカルな状態情報を管理する。ここでは、処理ノード101にはI/Oアダプタ113のみが搭載される例を示しているが、複数のI/Oアダプタが搭載されていてもよい。ローカルQoS管理テーブル130は、ファブリック情報201、QoSサービス状態202、ノード情報203、ポート情報204、論理I/O情報205を保持する。ファブリック情報201は、スイッチファブリック群105において処理ノード101のオーナーとなるスイッチファブリックの識別子である。ここで、オーナーとはスイッチファブリック群105の中で処理ノード101の起点となるスイッチファブリックを示す。
【0059】
QoSサービス状態202は、グローバルQoS管理部122の起動状態を示す。すなわち、処理ノード101を管理する管理ノード103のグローバルQoS管理部122が起動しているか否かを示す値がQoSサービス状態202に格納される。
【0060】
ノード情報203は、ローカルQoS管理部111を搭載する処理ノード101の識別子と、その処理ノードに搭載したI/Oアダプタ113が有する物理I/Oポートの数を格納する。なお、I/Oアダプタが複数ある場合には、I/Oアダプタの識別子毎に物理I/Oポート数を格納すればよい。
【0061】
ポート情報204は、I/Oアダプタ113の物理I/Oポートの状態(使用中)やその最大帯域(転送速度の最大値)と、物理I/Oポートに論理的(仮想的)に生成された仮想I/Oポート数を格納する。処理ノード101のI/Oアダプタ113が複数の物理I/Oポートを有する場合には、物理I/Oポート数に対応したポート情報204を管理する。
【0062】
論理I/O情報205は、ローカルQoS管理部111を搭載する処理ノード101上のI/Oアダプタ113の物理I/Oポートに仮想的に生成された仮想I/Oポートごとに、仮想I/Oポートの識別子と、プロトコルの識別子と、送信元ノードの識別子と、転送先のノード識別子と、ルーティング情報と、転送するデータの優先制御情報、関連ポート数、関連ポート情報などを管理する。ここで、関連ポート数は仮想I/Oパスを構成したエンド・ツー・エンドのデータ転送経路で通過する物理I/Oポート数であり、関連ポート情報は、その関連ポートの位置情報と帯域制御情報である。
【0063】
図4は、本発明の第1の実施の形態におけるグローバルQoS管理テーブル140の構成図である。グローバルQoS管理テーブル140は、スイッチファブリック群105の全体の状態情報、情報処理システム100にエンド・ツー・エンドで構成された仮想化されたI/O(仮想I/Oパス)の状態情報を保持する。なお、エンド・ツー・エンドとは、例えば、処理ノード101のI/Oアダプタ113の仮想I/Oポートから処理ノード102のI/Oアダプタ118の仮想I/Oポートまでの経路を指す。グローバルQoS管理テーブル140は、ファブリック情報301、ノード情報302、スイッチ情報303、論理I/O情報304を備え、各情報301〜304に格納されたポインタがメインメモリ23上のデータテーブルの格納先を指し示す。
【0064】
ファブリック情報301(310)はスイッチファブリックの全体情報であり、本発明の第1の実施の形態では、スイッチファブリック群105に存在する処理ノード数と、スイッチファブリック数、ファブリックオーナの識別子、情報処理システム100に生成された仮想I/Oパス数を含む。本発明の第1の実施の形態では、ファブリック情報301は、ファブリック情報テーブル310で管理されており、グローバルQoS管理テーブル140はファブリック情報テーブル310へのポインタを管理している。
【0065】
ノード情報302は、情報処理システム100に存在する全ての処理ノードの情報を管理する。本発明の第1の実施の形態では、ノード情報302は、ノード情報テーブル320で管理されており、グローバルQoS管理テーブル140は、ノード識別子とそれに対応するノード情報テーブル320のポインタを管理する。ノード情報テーブル320は、ノード識別子ごとに、ローカルQoS管理部の稼動状態、ノードに搭載されるI/Oアダプタの物理I/Oポート数、物理I/Oポートごとの状態情報、物理I/Oポートに生成された仮想I/Oポートの状態情報を保持する。ここで、物理I/Oポートの状態情報と仮想I/Oポートの状態情報は、各ポートの識別子と使用状態を示す値が保持される。
【0066】
スイッチ情報303は、スイッチ情報テーブル330に保持され、スイッチファブリック群105に存在する全てのスイッチファブリックの状態情報を管理する。本発明の第1の実施の形態では、スイッチ情報303は、スイッチ情報テーブル330で管理されており、グローバルQoS管理テーブル140は、スイッチファブリック170,171のスイッチ識別子と、この識別子に対応するスイッチ情報テーブル330へのポインタを管理する。スイッチ情報テーブル330は、スイッチファブリックの識別子毎に管理され、個々のテーブルはスイッチファブリックの持つ物理I/Oポート数、物理I/Oポートの状態情報(使用状態)、物理I/Oポートに生成された仮想I/Oポートの状態情報(使用状態)を保持する。
【0067】
論理I/O情報304は、情報処理システム100に生成された仮想I/Oパス(仮想I/Oパス)の構成情報と状態情報を管理する。これらの情報は仮想I/Oパスごとに論理I/O情報テーブル340で管理される。論理I/O情報テーブル340は、各仮想I/Oパスのプロトコル識別子、送信元ノード識別子、送信先ノード識別子、ルーティング情報、優先制御情報、帯域情報、仮想I/Oパスを構成する関連ポート数、関連ポート情報を保持する。
【0068】
仮想I/Oパスは送信元ノードと送信先ノード間に構成されるエンド・ツー・エンドの仮想I/Oパスであるため、複数のノードと複数のスイッチファブリックの物理I/Oポートを利用する。この仮想I/Oパスを構成するのに利用する複数ノードと複数のスイッチファブリックの物理I/Oポートを関連ポートと呼ぶ。
【0069】
図5は、本発明の第1の実施の形態における処理ノード101の論理I/O管理テーブル150の構成図である。論理I/O管理テーブル150は、処理ノード101のI/Oアダプタ113に構成された仮想I/Oポートの識別子と、物理I/Oポートの識別子と、仮想I/Oポートにおけるデータ転送量を保持する。論理I/O管理テーブル150は、仮想I/Oパス識別子401、物理I/Oポート識別子402、データ転送量403を備える。仮想I/Oパス識別子401は、情報処理システム100において仮想的に構成されたI/Oパスの識別子であり、情報処理システム100の中で一意である。
【0070】
図5では、I/Oアダプタ113の物理I/Oポート0に構成された仮想化されたI/Oポートが2つであり、それぞれ、仮想I/Oパス識別子が1と4であることを示している。その他の仮想I/Oパス識別子は、I/Oアダプタ113以外に構成されているため、処理ノード101上の論理I/O管理部112では管理していない。
【0071】
物理I/Oポート識別子402は、I/Oアダプタ113が有する物理I/Oポートの識別子であり、I/Oアダプタ113が物理的に2ポートを持つ場合には、各物理ポートに対して識別子が付与される。図5では、識別子「0」を持つ物理I/Oポートのみ使用されていることを示している。データ転送量403は、物理I/Oポート識別子で管理される物理I/Oポートに構成された仮想I/Oポート上に転送されたデータ転送量をパケット数で保持する。図5では、仮想I/Oパス識別子1を持つ仮想I/Oポートにおけるデータ転送量はX0パケットであり、仮想I/Oパス識別子4を持つ仮想I/Oポートにおけるデータ転送量はX2パケットである。なお、データ転送量403は、所定時間内に送受信したデータ及びコマンドのバイト数やビット数を用いることができる。
【0072】
また、仮想I/Oパス識別子401が「1」の仮想I/Oポートに着目した場合、この仮想I/Oポートが設定された物理I/Oポート「0」上の他の仮想I/Oポート「4」が関連ポートとなる。
【0073】
図6は、本発明の第1の実施の形態における管理ノード103のQoS割当管理部141のブロック図である。QoS割当管理部141は、グローバルQoS管理部122の処理機能の一つであり、管理コンソール104からの指令に基づいて仮想I/Oパスの生成、削除、割当、表示を行なう。QoS割当管理部141は、仮想I/Oパス生成部501、仮想I/Oパス削除部502、仮想I/Oパス変更部503、仮想I/Oパス表示部504を備える。
【0074】
仮想I/Oパス生成部501は、仮想I/Oパス選択部510と、仮想I/Oパス登録部511を備える。仮想I/Oパス生成部501は、管理コンソール104経由の仮想I/Oパス生成要求を受けると、仮想I/Oパス選択部510により、仮想I/Oパスを構成する最短となる経路を選択する。
【0075】
また、仮想I/Oパス登録部511が、グローバルQoS管理テーブル140の情報を参照して、仮想I/Oパス選択部510で選択した最短経路の各関連ポートに対し、新規仮想I/Oパスを設定可能かどうかをチェックし、設定可能である場合には、選択した最短経路を構成する関連ポートに対して仮想I/Oパスを設定して、情報処理システム100に仮想化されたI/Oパスを生成する。最短となる経路は、たとえば仮想I/Oパスを構成するスイッチファブリックの段数が最も少なくなる経路である。仮想I/Oパス生成要求は、送信元ノードの識別子、送信先ノードの識別子、仮想I/Oパスの設定帯域、優先度を含む。仮想I/Oパス生成処理のフローは後述する(図9)。
【0076】
仮想I/Oパス削除部502は、管理コンソール104等の外部からの仮想I/Oパス削除要求を受け付けて、情報処理システム100に既に構成された仮想I/Oパスを削除する。
【0077】
仮想I/Oパス変更部503は、管理コンソール104等の外部からの仮想I/Oパス変更要求を受け付けて、情報処理システム100に既に構成された仮想I/Oパスの設定帯域や優先度を変更する。
【0078】
仮想I/Oパス表示部504は、情報処理システム100に構成されている全ての仮想I/Oパスあるいは要求の対象とする仮想I/Oパスの状態情報を管理コンソール104等へ表示する。
【0079】
図7は、本発明の第1の実施の形態における管理ノード103の帯域監視部142の構成図である。帯域監視部142は、グローバルQoS管理部122の処理機能の一つである。帯域監視部142は、ローカルQoS管理情報受信部(ローカル情報取得部)601、ローカルQoS稼動確認部602、スイッチ情報取得部603、グローバルQoS情報保持部604、グローバルQoS情報送信部605を備える。
【0080】
ローカルQoS管理情報受信部601は、情報処理システム100を構成する処理ノード101、102のうち、ローカルQoS管理処理が稼動している処理ノードから、ローカルQoS管理情報を受信する。受信するローカルQoS管理情報としては、各処理ノードで管理されているローカルQoS管理テーブル130,133のうち変更があった更新情報や、処理ノードの稼動率である。なお、処理ノードの稼動率は、OS350、351が取得したCPU10の使用率(負荷率)を用いることができる。また、稼動率としてはCPU10の使用率の他に、仮想I/Oポートの利用率(実際に利用している帯域/設定帯域)などを用いることができ、複数の仮想I/Oポートの利用率の平均値などを処理ノード毎の仮想I/Oポートの利用率としてもよい。
【0081】
ローカルQoS稼動確認部602は、グローバルQoS管理テーブル140を参照して、各ローカルQoS管理部111,116の稼動状況を確認する。具体的には、図4に示すグローバルQoS管理テーブル140のノード情報302に記録されているローカルQoS管理部111およびローカルQoS管理部116の稼動状況を確認する。これにより、各処理ノードが正常に動作していることを示すハートビートとして、管理ノード103が管理する処理ノードの動作状態を把握することができる。
【0082】
スイッチ情報取得部603は、情報処理システム100を構成するスイッチファブリック170、171の上述のスイッチ情報を取得する。なお、このスイッチ情報取得部603は、管理ノード103からの指令があったときにスイッチファブリック群105全体のスイッチ情報を取得する。
【0083】
グローバルQoS情報保持部604は、グローバルQoS管理部122が管理するグローバルQoS管理テーブル140に、ローカルQoS稼動確認部602とスイッチ情報取得部603により取得した情報に変更があればその内容を保持する。
【0084】
グローバルQoS情報送信部605は、グローバルQoS管理テーブル140で管理されるスイッチファブリック群105や処理ノードの構成情報に変更があった場合に、変更内容を全てのローカルQoS管理部111,116に通知する。
【0085】
スイッチ情報取得部603は、さらに、ノード選択部610、取得要求送付部611、取得応答受信部612を備える。ノード選択部610は、グローバルQoS管理部122がグローバルQoS管理テーブル140に保持された処理ノードの状態情報をチェックし、低稼動率の処理ノードを選択する。ノード選択部610が低稼動率の処理ノードを選択することで、スイッチ情報取得処理がそのノードの他の処理、たとえばアプリケーション処理やローカルQoS管理処理に及ぼす影響を最小化する。なお、処理ノードの選択は、例えば、OS350、351が取得したCPU10の使用率を読み込んで、この使用率が最も小さいもの、あるいは、使用率が所定の閾値未満のものを選択すればよい。なお、稼動率としては、各処理ノードの仮想I/Oポートの帯域の設定値と、実際に利用した帯域(最大帯域)の比率の平均値を稼動率として用いてもよい。
【0086】
取得要求送付部612は、ノード選択部610にて選択した低稼動率の処理ノードに対してスイッチ情報の取得要求を送付する。取得応答受信部613は、取得要求を送信した処理ノードから取得要求に対する応答(スイッチ情報)を受け付ける。
【0087】
以上のように、管理ノード103の帯域監視部142は、各処理ノード101,102からローカルQoS管理部111、116が管理する処理ノードのローカルQoS管理テーブル130,133を受信し、各処理ノード101,102のI/Oアダプタに設定されている仮想I/Oポートの帯域などの情報を取得してグローバルQoS管理テーブル140を更新する。また、帯域監視部142は、グローバルQoS管理テーブル140が更新されたときに各処理ノード101,102へ更新された情報を通知し、管理ノード103で設定した仮想I/Oパスに対する変更を伝達する。そして、帯域監視部142は、複数の処理ノードのうち低稼動率の処理ノードを選択してスイッチ情報の取得要求を発行し、スイッチファブリック群105のスイッチ情報を収集させることができる。
【0088】
図8は、本発明の第1の実施の形態における処理ノード101の帯域監視部132の構成図である。帯域監視部132は、ローカルQoS管理部111の機能の一部である。処理ノード102のローカルQoS管理部116の帯域監視部135も、処理ノード101の帯域監視部132と同様な構成である。
【0089】
帯域監視部132は、論理I/O帯域算出部701、レジスタ情報取得部702、ローカルQoS情報保持部703、ローカルQoS情報送信部704、グローバルQoS稼動確認部705、グローバルQoS情報受信部706、スイッチ情報取得部707を備える。
【0090】
論理I/O帯域算出部701は、I/Oアダプタ113の物理I/Oポートに設定された仮想I/Oポート毎の帯域(転送速度)を算出する。レジスタ情報取得部702は、I/Oアダプタ113にアクセスし、I/Oアダプタ113のレジスタ160の状態情報(アダプタ情報)を取得する。なお、アダプタ情報は、I/Oアダプタ113の物理I/Oポートの識別子と、物理I/Oポートに設定された仮想I/Oポートの識別子と、仮想I/Oポートの利用状態を示す値を含み、ローカルQoS管理テーブル130,133のポート情報204、論理I/O情報205に格納される。
【0091】
ローカルQoS情報保持部703は、論理I/O帯域算出部701およびレジスタ情報取得部702により取得した情報(帯域とアダプタ情報)をローカルQoS管理テーブル130に保持する。
【0092】
ローカルQoS情報送信部704は、ローカルQoS情報保持部703にて更新したローカルQoS管理テーブル130の情報を管理ノード103のグローバルQoS管理部122に送付する。グローバルQoSサービス稼動確認部705は、管理ノード103のグローバルQoS管理部122の稼動状況を確認する。
【0093】
グローバルQoS情報取得部706は、管理ノード103のグローバルQoS管理テーブル140に保持された情報のうち更新された情報を取得する。すなわち、管理ノード103のグローバルQoS管理テーブル140の情報のうち、当該処理ノード101に関する情報(設定値)が更新されていれば、グローバルQoS情報取得部706がローカルQoS管理テーブル130を更新する。これにより、管理ノード103が設定した仮想I/Oポートの設定などを各処理ノード101,102に伝達する。
【0094】
スイッチ情報取得部707は、取得判定部720と、スイッチ情報取得処理部721を備える。取得判定部720は、管理ノード103のグローバルQoS管理部122の帯域監視部142から送付されるスイッチ状態情報取得要求の有無をチェックし、スイッチ状態取得要求が有る場合には、スイッチ情報取得処理部721を実行し、スイッチファブリック群105の全てのスイッチ情報を取得し、スイッチ情報の取得結果を管理ノード103の帯域監視部142に返送する。
【0095】
スイッチ情報取得処理部721は、スイッチファブリック群105を構成するスイッチファブリック170,171のレジスタ160,161にアクセスし、スイッチファブリック群105を構成する全てのスイッチファブリック群105の全ポートのスイッチ情報として取得する。スイッチ情報は、上述のように物理I/Oポートと仮想I/Oポートの識別子と状態情報(使用状態など)を含む。
【0096】
論理I/O帯域算出部701は、さらに、差分時刻算出部710と、論理I/O情報取得部711、論理I/O帯域算出部712、論理I/O情報リセット部713、前監視時刻714を供える。
【0097】
差分時刻算出部710は、現在の時刻を取得し、前監視時刻714に記録された前回監視時の時刻との差分を計算する。論理I/O情報取得部711は、処理ノード101上の論理I/O管理部112にアクセスし、処理ノード101の論理I/O管理テーブル150に保持された仮想I/Oパス毎のデータ転送量403を取得する。
【0098】
論理I/O帯域算出部712は、差分時刻算出部710で算出した差分時刻と、論理I/O情報取得部711で取得した仮想I/Oパス毎のデータ転送量を用いて仮想I/Oポートとスイッチファブリック群105のポート毎の帯域(転送速度)を算出する。論理I/O情報リセット部713は、論理I/O管理テーブル150に記録された仮想I/Oパス毎のデータ転送量をリセットする。この処理により、仮想I/Oポート毎の単位時間当たりの帯域(転送速度)が算出される。なお、仮想I/Oパス毎のデータ転送量のリセット時には、前監視時刻714を現在の時刻に更新する。
【0099】
図9は、本発明の第1の実施の形態における管理ノード103のグローバルQoS管理部122の仮想I/Oパス生成部501で実行される仮想I/Oパスの生成処理フローを示す図である。仮想I/Oパス生成部501は管理コンソール104上の管理プログラムあるいは処理ノード上の管理アプリケーションからスイッチファブリック群105を介して仮想I/Oパス生成要求を受けると、仮想I/Oパス生成処理を開始する(ステップ801)。ここで、仮想I/Oパス生成要求は、新たな仮想I/Oパスの送信元識別子と、新たな仮想I/Oパスの送信先識別子、新たな仮想I/Oパスの設定帯域(転送速度)、新たな仮想I/Oパスの優先度を引数として含む。
【0100】
ステップ802では、仮想I/Oパス生成要求の引数をデコードし、要求に含まれる送信元識別子と送信先識別子から、新たな仮想I/Oパスで利用する処理ノードとスイッチファブリックの関連ポートを決定する(ステップ802)。ここで、関連ポートを決定する方法としては、最短経路を構成するように選択する。あるいは複数の経路の候補の中から選択してもよい。すなわち、仮想I/Oパス生成部501は受信した仮想I/Oパスの生成要求に含まれる、仮想I/Oパスの起点と終点から最短の経路を選択し、選択した経路上のポートを関連ポートとして抽出する。
【0101】
次に、仮想I/Oパス上の関連ポートを決定した後、グローバルQoS管理テーブル140を検索して、それぞれの関連ポートについて、要求された仮想I/Oパスの帯域を新規に割り当てられるかどうかをチェックする(ステップ803)。この処理は、例えば、各関連ポートに設定された帯域と、新たに設定する仮想I/Oパスの帯域を加算した値が、仮想I/Oパス上の各ポートの物理的な帯域以内であれば新たな仮想I/Oパスを設定可能と判定することができる。あるいは、各関連ポートが利用している帯域と、新たな仮想I/Oパスの帯域を加算した値が、各ポートの物理的な帯域以内であれば新たな仮想I/Oパスを設定可能と判定してもよい。この場合、関連ポートが使用した最大の帯域と新たな仮想I/Oパスの帯域を加えた値を、仮想I/Oパス上の各ポートの物理的な帯域と比較するのが望ましい。すべての関連ポートについて、割当可能である場合には、ステップ805の処理を行い、割当不可能である場合にはステップ810の処理を行なう。
【0102】
また、仮想I/Oパスの生成要求の引数に含まれる帯域と優先度に基づいて、新規に仮想I/Oパスの帯域を割り当てられるかどうかをチェックする場合は次のような処理を行うことが望ましい。たとえば、新規に高優先度の仮想I/Oパスとして設定する物理帯域が不足し、かつ優先度の低い仮想I/Oパスの帯域がすでに割当られている場合には、優先度の低い帯域を削減し、新規割当を行ってよいかどうかを管理ノードを介して管理者にメッセージ等を利用して通知し、管理者からの承認があった場合にのみ、既存の優先度の低い仮想I/Oパスの物理帯域を削減して、優先度の高い仮想I/Oパスの帯域を確保する。あるいは、新規の仮想I/Oパスの物理帯域が不足している状況で、新規割当対象の仮想I/Oパスと同じ優先度の帯域がすでに設定される場合、管理者に対してメッセージを送信し、新規生成処理を中断するか、あるいは既割当帯域を削減するか、あるいは新規割当帯域を許容される物理帯域で確保するか、などの選択肢を示し、管理者が選択した指示に基づき、帯域の割当制御を行う。ここでは、管理者に新規割当をするか否かを選択させる例を示したが、別の方法として、あらかじめ管理ノードに、新規に構成する仮想I/Oパスの物理帯域が不足する場合の帯域割当てポリシーを設定しておくことで、管理者への問い合わせを行うことなく、仮想I/Oパスの生成処理を自動化する方法も考えられる。たとえば、優先度がより低い帯域を削減して新規仮想I/Oパスの物理帯域を確保するといったポリシーがあらかじめ設定される場合には、仮想I/Oパスの生成処理では、高優先度の仮想I/OOパスを生成時に物理帯域が不足する場合には、低優先度の既存の仮想I/Oパスの物理帯域を削減して、新規の仮想I/Oパスの帯域を確保する。
【0103】
ステップ805では、全ての関連ポートについて帯域を新規に割当可能であるため、グローバルQoS管理テーブル140に対して、新規に生成した仮想I/Oパス識別子を登録する。次に、関連ポートを持つ処理ノード上の論理I/O管理テーブルに新規の仮想I/Oパス識別子を登録する(ステップ807)。関連ポートが複数存在する場合には、ステップ807の処理を関連ポートの数に応じて繰り返す。
【0104】
ステップ808では、仮想I/Oパス生成要求に対する応答として仮想I/Oパス識別子を管理コンソール104の管理プログラム等に通知し、生成処理を終了する。なお、仮想I/Oパス識別子は、仮想I/Oパス生成部501が情報処理システム100内で一意に付与する値である。
【0105】
ステップ804で、新規割当が不可と判断した場合には、ステップ810において新たな仮想I/Oパスを生成不可である旨をコンソール104へ通知し処理を終了する。あるいは、上記ステップ801を行なう代わりに、ステップ802に戻り、仮想I/Oパスを別の経路を通るように自動あるいは手動で仮想I/Oパスを選択しなおしてもよい。この場合、どのような経路を選択しても仮想I/Oパスを生成できないときのみステップ810を行い、生成不可である旨を通知すればよい。以上の処理フローにより新たな仮想I/Oパス生成処理が完了する。この結果、生成された新たな仮想I/Oパスの情報は、グローバルQoS管理テーブル140に設定される。グローバルQoS管理テーブル140に設定された新たな仮想I/Oパスの情報は、処理ノード101のグローバルQoS情報取得部706が取得し、処理ノード101のQoS割当管理部131がOS350に通知して、OS350内のI/OドライバがI/Oアダプタ113に新たな仮想I/Oパス、すなわち仮想I/Oポートを設定することになる。
【0106】
図10は、本発明の第1の実施の形態における管理ノード103のグローバルQoS管理部122における仮想I/Oパス(仮想I/Oパス)の帯域監視処理のフローである。グローバルQoS管理部122が帯域監視処理を起動すると、帯域監視処理が開始される(ステップ901)。グローバルQoS管理部122は、帯域監視処理を所定時間毎に実行するため、最初に一定時間、処理をスリープする(ステップ902)。スリープ時間は、帯域監視の精度を向上したい場合には短くし、精度を求めない場合には長く設定する。たとえば、帯域監視を一般的なハートビート処理と同等レベルで行なう場合には、スリープ時間を1秒程度に設定する。
【0107】
次にローカルQoS情報受信処理(ローカルQoS管理情報受信部601の上記処理)を行なう(ステップ903)。このステップでは、情報処理システム100を構成する処理ノード101、102のうち、ローカルQoS管理処理が稼動している処理ノードから、ローカルQoS管理情報を取得する。グローバルQoS管理部122は、応答の有無から各処理ノード101,102が正常に稼動しているか否かを判定することができる。そして、グローバルQoS管理部122は、稼動中の全てのローカルQoS管理部111,116からローカルQoS管理情報(ローカルQoS管理テーブル130,133の情報)を受信する。
【0108】
続いて、ローカルQoS稼動確認処理(ローカルQoS稼動確認部602の上記処理)を行なう(ステップ904)。ローカルQoS稼動確認処理では、ステップ904で処理ノードから送付されたローカルQoS管理情報をチェックし、全てのローカルQoS管理部111,116が稼動状態にあるかどうかを確認する。あるいは、グローバルQoS管理テーブル140のノード情報テーブル320に記録された情報を用いて、各処理ノード101,102の稼動状態を確認してもよい。
【0109】
次に、グローバルQoS管理部122は、ノード選択処理(ノード選択部610の処理)を行なう(ステップ905)。ノード選択処理では、ローカルQoS情報に含まれる各処理ノードの稼動状況を確認し、低稼動率の処理ノードを選択する。このとき、低稼動率の処理ノードが複数存在する場合には、ランダムで選択してもよいし、ラウンドロビンで処理ノードを選択した上でその処理ノードが低稼動率かどうかを判断し、稼動率が高い場合には次の処理ノードを選択するようにしてもよい。なお、処理ノードの稼動率は、上述したように、例えば、各処理ノードのCPU10の使用率を用い、CPU10の使用率が最も低い処理ノードを低稼動率の処理ノードとして選択すればよい。
【0110】
ステップ906では、選択した処理ノードが自ノード(管理ノード103)であるかどうかを判断する。選択された処理ノードが自ノードである場合には、スイッチ情報取得処理を行なう(ステップ907)。ステップ907のスイッチ情報取得処理では、スイッチファブリック群105を構成する各スイッチファブリック170、171のレジスタ180、181にアクセスし、レジスタ180、181からスイッチファブリック群105の全ポートの状態情報(スイッチ情報)を読み出す。取得したスイッチ情報は、グローバルQoS管理テーブル140のスイッチ情報303に反映する。
【0111】
一方、ステップ906において、選択した処理ノードが自ノードでない場合には、他の処理ノードに対してスイッチ情報の取得要求送付処理(取得要求送付部611の処理)を行なう(ステップ908)。取得要求送付処理では、選択した処理ノードに対して、スイッチファブリック群105の状態情報を取得するための取得要求を送信する。次に、取得応答受信処理(取得応答受信部612の処理)では、取得要求の送付先の処理ノードからの応答を受信する(ステップ909)。
【0112】
続いて、グローバルQoS情報更新処理を行ない、ステップ903のローカルQoS情報受信処理で受信した処理ノード毎のローカルQoS管理テーブル130,133と、ステップ909の取得応答受信処理において取得したスイッチ情報の更新分をグローバルQoS管理テーブル140に反映する(ステップ910)。最後に、グローバルQoS情報送信処理を行なう(ステップ911)。グローバルQoS情報送信処理では、グローバルQoS管理部122の稼動状況(グローバルQoS管理テーブル140の情報)を全ローカルQoS管理部111,116へ送信すると共に、グローバルQoS管理部122が管理するスイッチファブリック群105の構成や処理ノードの構成に変更があった場合に、これらの情報を全ローカルQoS管理部111,116に送信する。これらの処理は帯域監視処理が中断されるまで継続する(ステップ911)。
【0113】
本発明の第1の実施の形態では、ローカルQoS情報受信処理(ステップ902)と、グローバルQoS情報送信処理(ステップ911)を分けて示したが、ローカルQoS情報受信処理が送信元のローカルQoS管理部に返送する応答の中に、グローバルQoS情報送信処理で送付する情報を追加してもよい。その場合は、ステップ911の処理は必要ない。
【0114】
以上の処理により、グローバルQoS管理部122は、各処理ノード101,102からローカルQoS管理テーブル130,133を受信してグローバルQoS管理テーブル140を更新する。そして、グローバルQoS管理部122は、低稼動率と判定した処理ノードに対してスイッチファブリック群105のスイッチ情報の収集を指令する。したがって、スイッチファブリック群105が大規模な場合や、物理I/Oポートあたりの仮想I/Oポート数が多い場合であっても、高負荷となるスイッチファブリック170,171の状態情報の読み出し処理を、スイッチファブリック群105に接続する複数の処理ノードのうち低稼動率の処理ノードが分担することで、特定の処理ノードに負荷が集中するのを防いで、スイッチファブリック群105の情報収集を一定の時間で実行可能となる。
【0115】
図11は、本発明の第1の実施の形態における処理ノード101、102のローカルQoS管理部111,116で実行されるローカル帯域監視処理のフローを示す図である。なお、処理ノード102のローカルQoS管理部116も同様の処理を実施するので、以下では処理ノード101のみについて説明する。
【0116】
ローカルQoS管理部111がローカル帯域監視処理を起動すると、ローカルQoS管理部111においてローカル帯域監視処理が開始される(ステップ1001)。ローカル帯域監視処理は一定時間毎に実行するため、最初に予め設定した一定時間だけ処理をスリープする(ステップ1002)。スリープ時間は、I/Oアダプタ113のI/Oポートの帯域監視の精度を向上する場合には短く、精度を求めない場合には長く設定する。たとえば、帯域監視を一般的なハートビート処理と同等レベルで行なう場合には、スリープ時間を1秒程度に設定する。
【0117】
次にグローバルQoS情報受信処理(グローバルQoS情報取得部706の処理)を行なう(ステップ1003)。このステップ1003では、管理ノード103のグローバルQoS管理部122からグローバルQoS管理テーブル140の情報を受信する。この情報は、グローバルQoS管理テーブル140が保持する情報のうち、スイッチファブリック群105の構成や処理ノード数が変更になった場合は、その情報を受信する。
【0118】
続いて、グローバルQoSサービス稼動確認処理(グローバルQoSサービス稼動確認部705の処理)を行なう(ステップ1004)。グローバルQoSサービス稼動確認処理では、ステップ1003で管理ノード103から送付されたグローバルQoS管理テーブル140の情報をチェックし、管理ノード103のグローバルQoS管理部122が稼動状態にあるかどうかを確認する。これにより、管理ノード103が正常に動作していることを確認できる。
【0119】
次に、スイッチ情報取得処理(スイッチ情報取得部707の処理)を行なう(ステップ1005)。スイッチ情報取得処理は、取得判定処理(ステップ1006)とスイッチ情報取得処理(ステップ1007)からなる。ステップ1006では、上記取得判定部720の処理であり、管理ノード103からのスイッチ情報取得要求の有無をチェックする。スイッチ情報の取得要求がない場合にはステップ1007は行なわず、次のステップを行なう。
【0120】
一方、ステップ1006において、スイッチ情報の取得要求有りの場合、ステップ1007において、スイッチ情報取得処理を行なう。スイッチ情報取得処理(スイッチ情報取得処理部721の処理)では、スイッチファブリック群105を構成するスイッチファブリック170,171の各レジスタ180,181にアクセスし、スイッチファブリック群105を構成する全ポートの状態情報を取得する。これらのポートの状態情報を取得した後、スイッチ情報取得要求に対する応答を送信元のグローバルQoS管理部122に対して送付する。
【0121】
ステップ1008では、レジスタ情報取得処理を行なう。レジスタ情報取得処理では、自処理ノードのI/Oアダプタ113のレジスタ160にアクセスして、レジスタ160に設定されている物理I/Oポートの状態情報(アダプタ情報)を取得する。具体的には、物理I/Oポートの稼動状況とデータ転送量を取得する。
【0122】
ステップ1009では、論理I/O帯域算出処理(論理I/O帯域算出部712の処理)を行なう。論理I/O帯域算出処理では、現在の時刻と、論理I/O管理テーブル150に記録された仮想I/Oパスに対応するデータ転送量から、仮想I/Oパス毎の帯域(転送速度)を算出する。詳細は後述する(図12)。
【0123】
続いて、ローカルQoS情報送信処理(ローカルQoS情報送信部704の処理)を行ない、ローカルQoS管理テーブル130で管理される情報に更新が有った場合には、その情報を全てのローカルQoS管理部151に送付する(ステップ1010)。そして、ローカルQoS情報更新処理では、ローカルQoS管理テーブル130に更新情報を反映する(ステップ1011)。
【0124】
ローカル帯域監視処理は、中断されるまでステップ1002からステップ1011の上記処理を継続する(ステップ1012)。なお、本発明の第1の実施の形態では、グローバルQoS情報受信処理(ステップ1003)と、ローカルQoS情報送信処理(ステップ1010)を分けて記載しているが、グローバルQoS情報受信処理の応答に、ローカルQoS情報送信処理で送付するローカルQoS管理テーブルの更新情報を含めてもよい。この場合、ステップ1010のローカルQoS情報送信処理を省略できる。
【0125】
以上の処理により、処理ノード101のローカルQoS管理部111は所定時間毎にグローバルQoS管理テーブル140の情報を管理ノード103から取得し、また、自処理ノードのアダプタ情報を取得して、これら取得した情報のうち自処理ノードに関する情報をローカルQoS管理テーブル130へ反映する。また、ローカルQoS管理部111では、当該処理ノード101のローカルQoS管理テーブル130に更新があったときには、他の処理ノードへの更新された情報を通知する。
【0126】
また、処理ノード101のローカルQoS管理部111は、管理ノード103からの要求があったときにはスイッチファブリック群105のスイッチ情報を取得して、管理ノード103に送信する。
【0127】
図12は、上記図11のステップ1009で行われる論理I/O帯域算出処理のフローを示す図である。処理ノード101の帯域監視部132が実行する論理I/O帯域算出処理では、まず現時の時刻を取得し、前回の帯域算出処理を実行した時刻との差分を計算し、現在の時刻を前監視時刻714に反映する(ステップ1101)。
【0128】
次に、論理I/O管理テーブル150にアクセスし、登録された仮想I/Oパス識別子それぞれに対するデータ転送量を取得する(ステップ1102)。続いて、ステップ1101で算出した時刻の差分と、ステップ1102で取得したデータ転送量から各仮想I/Oパス識別子に対する単位時間当たりの帯域(転送速度)を算出する(ステップ1103)。算出した各仮想I/Oポートの帯域と、ローカルQoS管理テーブル130のポート情報204に格納された最大帯域とを比較して、算出した帯域の値が大きい場合には、ポート情報204を更新する。そして、論理I/O管理テーブル150に登録された仮想I/Oパス識別子に対するデータ転送量をリセットする(ステップ1104)。以上のステップにより、仮想I/Oパス(仮想I/Oポート)毎の帯域(転送速度)を算出する。
【0129】
以上のように、本発明によればスイッチファブリック群105(I/Oスイッチ)を介して複数の処理ノード101,102を接続する情報処理システム100に対して、複数の仮想化されたI/Oパス(仮想I/Oパス)を構成し、仮想I/Oパス毎に転送速度(帯域)を制御できるため、仮想化されたI/Oパス毎にエンド・ツー・エンドでのQoSを保証できる。また、CPUを持たないスイッチファブリック群105のようなI/Oスイッチであっても、物理I/Oポートに仮想的に構成したI/Oポート毎の状態情報(スイッチ情報)を管理し、それらの情報を収集できる。さらに、大規模なスイッチファブリック群105や物理I/Oポートあたりの仮想I/Oポート数が多い場合であっても、高負荷となるスイッチファブリックの状態情報の読み出し処理を、スイッチファブリック群105に接続する複数の処理ノードのうち稼動率の低い処理ノードに分担させることで、他の通信の影響を最小化して、スイッチファブリック群105の情報収集を一定の時間で実行できる。
【0130】
<変形例1>
本発明の第1の実施の形態では、仮想I/Oパス生成部510が、仮想I/Oパス選択部510により仮想I/Oパスが最短となるような経路を選択していた。しかしながら、仮想I/Oパスに最短経路を選択した場合に、その仮想I/Oパスの一部に障害が発生した場合や、特定のポートに多くの仮想I/Oパスが設定された場合は、仮想I/Oパスをより柔軟に選択可能にすれば、障害時や経路混雑時にも安定した通信を提供することができる。
【0131】
そこで、本発明の変形例1では、仮想I/Oパスの生成時に、最短経路ではなく、仮想I/Oパスに設定する帯域の合計値や、仮想I/Oパスの実際の利用帯域に基づき複数の候補の中から選択できるようにする。仮想I/Oパスの一部に障害が発生した場合にも、仮想I/Oパス生成部510において、迂回可能な経路を構成できるようにする。
【0132】
図13は、管理ノード103で実行されるグローバルQoS管理部122のQoS割当管理部141の仮想I/Oパス生成部510のブロック図である。
【0133】
仮想I/Oパス生成部510は、仮想I/Oパスリスト作成部1201、仮想I/Oパス利用率算出部1202、仮想I/Oパス選択部1203、仮想I/Oパス登録部1204、仮想I/Oパス候補リスト1205、条件フラグ1206を備える。
【0134】
仮想I/Oパスリスト作成部1201は、管理コンソール104から仮想I/Oパスの生成要求を受け付けると、仮想I/Oパスの送信元ノードと、宛先ノードから仮想I/Oパスを構成可能な経路のリストを作成する。仮想I/Oパスリスト作成部1201は、グローバルQoS管理テーブル140を参照し、予め設定した有限数の経路を探索し、仮想I/Oパス候補リスト1205に探索した経路を登録する。
【0135】
仮想I/Oパス利用率算出部1202は、仮想I/Oパス候補リスト1205が探索したそれぞれの経路について、グローバルQoS管理テーブル140を参照して、設定帯域の合計値の最大値と利用帯域の合計値の最大値を算出し、仮想I/Oパス候補リスト1205に反映する。
【0136】
仮想I/Oパス選択部1203は、仮想I/Oパス候補リスト1205から、条件フラグ1206に設定された値に応じて、仮想I/Oパスを選択する。
【0137】
仮想I/Oパス候補リスト1205は、論理I/O識別子に対応して作成するリストである。仮想I/Oパス候補リスト1205は、候補番号1210、経路長1211、最大設定帯域1212、最大利用帯域1213を備える。経路長1211は、仮想I/Oパスを構成する送信元ノードと送信先ノード間のスイッチファブリック170,171の段数である。最大設定帯域1212は、仮想I/Oパスを構成する各関連ポートに設定済の帯域の合計値のうち、最大の設定帯域を示す。設定済の帯域の合計値は、グローバルQoS管理テーブル140を参照することにより求められる。最大利用帯域1213は、仮想I/Oパスを構成する各関連ポートの利用帯域の合計値のうち、最大の利用帯域を示す。利用帯域の合計値も、グローバルQoS管理テーブル140を参照することにより求められる。
【0138】
条件フラグ1206は、仮想I/Oパスの経路を選定する条件を保持する。条件フラグ1206で利用する選択条件は、仮想I/Oパス生成要求の選択条件パラメータに含まれる。たとえば、選択条件パラメータには、経路長が最短の経路を選択する場合には「1」、設定帯域が最小の経路を選択する場合には「2」、利用帯域が最小の経路を選択する場合には「3」が設定される。仮想I/Oパス生成要求の選択条件パラメータに「1」が設定されている場合、仮想I/Oパス選択部1203は、仮想I/Oパス候補リスト1205の中から、利用帯域が最小の候補番号を持つ仮想I/Oパスを選択する。変形例1では、3通りの条件を示したが、これ以外の条件により仮想I/Oパスの経路を選択してもよい。また、変形例1では、条件フラグ1206が仮想I/Oパス生成要求のパラメータとして含まれていたが、パラメータに含むのではなく、あらかじめ管理プログラム等により条件フラグ1206に条件値が一意に設定されてもよい。
【0139】
以上のように変形例1では、仮想I/Oパスの経路の選択を、選択条件パラメータに応じて変更することができ、障害発生時や経路の混雑時にも仮想I/Oパスをより柔軟に設定可能となって、仮想I/Oパスを用いて安定した通信を提供することができる。
【0140】
<変形例2>
本発明の第1の実施の形態では、論理I/O管理部112がOS350のI/Oドライバに組みこまれ、各仮想I/Oパスの状態情報をI/Oドライバが管理していた。本発明の変形例2では、論理I/O管理部112は、ハイパバイザ等の仮想化マシンモニタに組み込まれている点が第1の実施の形態とは異なる。論理I/O管理部112をハイパバイザに組み込むことにより、OS内のI/Oドライバを変更することなく、仮想I/Oパスの状態情報を管理できる。また、本発明の変形例2では、ローカルQoS管理部もハイパバイザに組み込む。そのため、論理パーティション(LPAR)に搭載したアプリケーションの性能を低下させることなく、仮想ホスト(LPAR上のゲストOS)間あるいは仮想ホストと他の処理ノード(I/Oデバイス)間においてエンド・ツー・エンドの仮想的なI/Oパスを構成し、管理できる。以下、本発明の第1の実施の形態と異なる部分について説明する。
【0141】
図14は、本発明の変形例2における情報処理システム100のブロック図である。情報処理システム100は、処理ノード1301、1302と管理ノード1303、管理コンソール1304、スイッチファブリック群1309を含む。変形例2では、管理者からのQoSのための管理要求、たとえば、構成する仮想I/Oパスに対してQoS割り当てを行なう要求等を管理コンソール3104から管理ノード1303に送出するだけではなく、LPARの管理要求を管理コンソール3104からハイパバイザ1310、1311に対して送出する。変形例2では、管理コンソール1304が直接ハイパバイザ1310、1311に対して管理要求を送付する例を示すが、管理ノード1303、スイッチファブリック群1309経由でハイパバイザ1310、1311に管理要求を送付してもよい。
【0142】
処理ノード1301は、ハイパバイザ1310、I/Oアダプタ1312、LPAR1320〜1321を含む。ハイパバイザ1310は、処理ノード1301のハードウェアリソースを論理的に分割して管理するための仮想化ソフトウェアであり、LPAR管理部1330はハイパバイザ1310上に生成する論理パーティションを管理する公知の技術である。
【0143】
変形例2では、LPAR管理部1330に加えて、ローカルQoS管理部1332と、論理I/O管理部1334を有する。ここで、変形例2では、ハイパバイザ1310がローカルQoS管理部1332と論理I/O管理部1334を含む点が第1の実施の形態とは異なる部分である。一方、ローカルQoS管理部1332と論理I/O管理部1334の機能は第1の実施の形態で説明した機能と同等である。但し、第1の実施の形態では、処理ノードの状態情報と論理I/O情報を対応付けていたのに加えて、変形例2では、LPAR−仮想I/Oパス情報対応表1336とマッピング部1337を更に有する点が異なる。
【0144】
LPAR−仮想I/Oパス情報対応表1336は、LPAR管理部1330が管理するLPARの状態情報と仮想I/Oパス情報の対応を保持する。マッピング部1337は、LPAR管理部1330にアクセスするためのインタフェースを有する。マッピング部1337は、LPAR管理部1330にアクセスして、LPAR管理部1330が管理するLPAR識別子とリソースの対応表であるLPAR管理テーブル(図示省略)を参照し、LPAR識別子と仮想I/Oパス情報を対応付ける。
【0145】
また、変形例2では、管理コンソール3104からの仮想I/Oパスの構成要求(生成要求、削除要求、変更要求)に含まれる送信元ノード識別子および転送先ノード識別子の構造が第1の実施例と異なる。変形例2では、仮想ホスト間あるいは仮想ホストと処理ノード(またはI/Oノード)間に仮想I/Oパスを構成することになるため、仮想ホストを特定するために、送信元ノード識別子にLPAR識別子を含む。あるいはハイパバイザ1310が識別子を有する場合には、ハイパバイザ識別子とLPAR識別子の組み合わせたものをノード識別子として扱い、仮想ホストを特定できるようにする。
グローバルQoS管理部1322の機能も第1の実施の形態と同等であるが、ハイパバイザに搭載したローカルQoS管理部1332と情報をやり取りするための通信インタフェースをハイパバイザ1310が備える点が異なる。
【0146】
以上のように、処理ノード1301,1302で計算機資源の仮想化を行う場合には、ハイパバイザなどの仮想化システムにローカルQoS管理部1332、1333と、論理I/O管理部1334,1335を組み込むことで、仮想ホスト(ゲストOS)間や仮想ホストと他の処理ノード間で仮想I/Oパスを設定し、前記実施形態と同様に管理することができる。
【0147】
<変形例3>
上記変形例2では、ハイパバイザ1310がローカルQoS管理部1332と論理I/O管理部1334を備える例を示した。変形例3では、ハイパバイザ1310がローカルQoS管理部1332を備えるのではなく、LPAR1321がローカルQoS管理部1332を備える点が異なる。LPAR1321にローカルQoS管理部1332を備えることにより、ローカルQoS管理部1332が帯域監視に使用するCPUやメモリ等のハードウェアリソースを一定の利用率に制限できる。
【0148】
なお、上記変形例2、3では、ハイパバイザ1310により計算機資源の仮想化を行う例を示したが、仮想マシンモニタ(Virtual Machine Monitor)を用いて仮想化を行う処理ノードにも適用することができる。
【0149】
<変形例4>
本発明の第1の実施例では、グローバルQoS管理部122のみが、情報処理システム100全体の状態情報、管理ノード103を含む処理ノードの状態情報、スイッチファブリック群の状態情報、処理ノードとスイッチファブリック群に構成された仮想I/Oパスの状態情報を管理していた。そのため、グローバルQoS管理部122に障害が発生した場合に、グローバルQoS管理テーブルの内容が消失してしまう可能性があった。そこで、変形例4では、グローバルQoS管理部を搭載する管理ノードを複数箇所に設け、信頼性を向上できるようにする。
【0150】
図15は、本発明の変形例4における情報処理システム100のブロック図である。情報処理システム100は、処理ノード101、102、マスタ管理ノード1401、サブ管理ノード1402、管理コンソール1405、スイッチファブリック群1409を含む。
【0151】
変形例4では、第1の実施の形態とは異なり、グローバルQoS管理部を搭載した管理ノード1401,1402を複数台備え、そのうちの一つがマスタ管理ノード1401、それ以外がサブ管理ノード1402として機能する。また、各処理ノードおよび各管理ノードに搭載するローカルQoS管理部111、116およびグローバルQoS管理部1414,1415の機能の一部が第1の実施の形態とは異なる。以下、第1の実施の形態との差異部分に特化して説明する。
【0152】
変形例4では、処理ノード101のローカルQoS管理部111は、新たに管理ノード情報1452を有する。管理ノード情報1452は、マスタ管理ノード1401とサブ管理ノード1402のノードの識別情報をそれぞれ保持する。管理ノード情報1450、1451、1453も上記管理ノード情報1452と同じ構成である。
【0153】
次に、処理ノード101の帯域監視部1460の基本的な構成は第1の実施の形態に示した帯域監視部132と同じであるが、ローカルQoS管理情報(ローカルQoS管理テーブル130)の送信先ノードと、グローバルQoS稼動状況確認の対象ノードが第1の実施の形態とは異なる。具体的には、処理ノード101の帯域監視部142は、ローカルQoS管理情報をマスタ管理ノード1401のグローバルQoS管理部1414に送信し、サブ管理ノード1402のグローバルQoS管理部1415の稼動状況を確認する。
【0154】
マスタ管理ノード1401のグローバルQoS管理部1414の帯域監視部1445は、管理ノード情報1450を参照し、処理ノード101、102のローカルQoS情報(ローカルQoS管理テーブル130,133の情報)を収集してローカルQoS管理部111,116の稼動状況を確認する。そして、帯域監視部1445は収集したローカルQoS情報でグローバルQoS管理テーブル1443を更新してから、グローバルQoS管理テーブル1443のコピーをサブ管理ノード1402のグローバルQoS管理部1415に送付する。
【0155】
サブ管理ノード1402のグローバルQoS管理部1415の帯域監視部1446は、管理ノード情報1451を参照し、マスタ管理ノード1401のグローバルQoS管理テーブル1443の更新情報を収集してマスタ側のグローバルQoS管理部1414の稼動状況を確認し、グローバルQoS管理テーブル1448に更新情報を反映する。そして帯域監視部1446は、更新したグローバルQoS管理テーブル1448の内容を処理ノード101,102のローカルQoS管理部111、116に送付する。
【0156】
図16は、本発明の変形例4におけるグローバルQoS管理部1414および1415の帯域監視処理のフローを示す図である。自ノードがマスタ管理ノード1401であり、ローカルQoS管理部111,116すべてが正常に稼動している場合のフローは図10と同じであるため、変形例4では、図10と異なるフローに絞って説明する。
【0157】
ステップ1503では、自ノードがマスタ管理ノード1401かサブ管理ノード1402かを管理ノード情報1450を参照して判定する。自ノードがサブ管理ノード1402の場合、マスタ管理ノード1401からグローバルQoS管理テーブル1443の更新情報を受信する(ステップ1520)。
【0158】
そして、マスタ管理ノード1401のグローバルQoS管理部1414の稼動状況を確認する(ステップ1521)。マスタ管理ノード1401が正常稼動中であれば、サブ管理ノード1402のグローバルQoS管理テーブル1448の内容を更新する(ステップ1508)。稼動の確認が出来ない場合には、マスタ管理ノード1401に障害が発生したと判定して、マスタ管理ノード1401の変更処理を行なう(ステップ1523)。マスタ管理ノード1401の変更処理では、サブ管理ノード1402の管理ノード情報1451のマスタ管理ノードにサブ管理ノード1402の識別情報を保持する。
【0159】
続いて、サブ管理ノード1402を選択し、グローバルQoS管理テーブル1448の初期化と、グローバルQoS管理部1415の初期化を行い、各処理ノードにサブ管理ノード1402がマスタ管理ノード1401を引き継いだことを通知して、各処理ノード101,102の管理ノード情報1452、1453を更新させる(ステップ1524)。
【0160】
自ノードがマスタ管理ノード1401である場合に、ローカルQoS稼動状況確認を行なった結果(ステップ1505)、ローカルQoS管理部111、116の一部の稼動確認が出来ない場合には、あらかじめ設定した障害処理(たとえば、ローカルQoS管理部111,116の再起動など)を行う(ステップ1530)。
【0161】
ローカルQoS管理部111の帯域監視部1460の処理フローは図11と同様であるが、ステップ1003ではサブ管理ノード1402からグローバルQoS情報を受信し、ステップ1004では、サブ管理ノード1402の稼動状況を確認する点が前記第1の実施例とは異なる。
【0162】
以上のように、情報処理システム100全体の状態情報を管理する管理ノードを複数設けて、マスタ管理ノード1401に障害が発生するとサブ管理ノード1402がマスタ管理ノード1401を引き継ぐことにより、マスタ管理ノード1401のグローバルQoS管理テーブル1443の内容が消失するのを防いで、仮想I/Oパスを利用する情報処理システムの信頼性を向上することができる。
【産業上の利用可能性】
【0163】
本発明は、複数のサーバやI/O装置をスイッチファブリックなどのI/Oスイッチで接続して仮想I/Oパスを利用する計算機システムに利用することができ、複数のサーバ間,あるいはサーバと処理ノード間に生成された仮想的なI/Oパス毎にエンド・ツー・エンドの性能を保証することができる。
【図面の簡単な説明】
【0164】
【図1】本発明の第1の実施の形態における情報処理システムのハードウェアの一例を示すブロック図である。
【図2】本発明の第1の実施の形態における情報処理システムの機能要素の一例を示すブロック図である。
【図3】本発明の第1の実施の形態におけるローカルQoS管理テーブルの一例を示す構成図である。
【図4】本発明の第1の実施の形態におけるグローバルQoS管理テーブルの一例を示す構成図である。
【図5】本発明の第1の実施の形態における論理I/O管理テーブルの一例を示す構成図である。
【図6】本発明の第1の実施の形態におけるQoS割当管理部の一例を示すブロック図である。
【図7】本発明の第1の実施の形態におけるグローバルQoS管理部の帯域監視部の一例を示すブロック図である。
【図8】本発明の第1の実施の形態におけるローカルQoS管理部の帯域監視部の一例を示すブロック図である。
【図9】本発明の第1の実施の形態における仮想I/Oパス生成処理の一例を示すフローチャートである。
【図10】本発明の第1の実施の形態におけるグローバルQoS管理部におけるグローバル帯域監視処理の一例を示すフローチャートである。
【図11】本発明の第1の実施の形態におけるローカルQoS管理部におけるローカル帯域監視処理の一例を示すフローチャートである。
【図12】本発明の第1の実施の形態におけるローカル帯域監視処理の中の論理I/O帯域算出処理の一例を示すフローチャートである。
【図13】本発明の変形例1におけるQoS割当管理部の仮想I/Oパス生成部の一例を示すブロック図である。
【図14】本発明の変形例2における情報処理システムの一例を示すブロック図である。
【図15】本発明の変形例4における情報処理システムの一例を示すブロック図である。
【図16】本発明の変形例4におけるグローバルQoS管理部におけるグローバル帯域監視処理の一例を示すフローチャートである。
【符号の説明】
【0165】
100 情報処理システム
101、102 処理ノード
103 管理ノード
104 管理コンソール
105 スイッチファブリック群
111、116 ローカルQoS管理部
112、117 論理I/O管理部
122 グローバルQoS管理部
130、133ローカルQoS管理テーブル
131、134 QoS割当管理部
132、135、142帯域監視部
140 グローバルQoS管理テーブル
150、151、152 論理I/O管理テーブル
701 論理I/O帯域算出部
707 スイッチ情報取得部

【特許請求の範囲】
【請求項1】
物理I/Oポートに仮想I/Oポートを設定可能なI/Oアダプタを備えたノードを複数有し、前記ノードのI/OアダプタをI/Oスイッチのポートに接続し、前記複数のノード間で前記仮想I/Oポートを介してデータの転送を行う情報処理システムにおける仮想I/Oパスの管理方法であって、
前記複数のノードのうちのいずれか一つが、前記I/Oスイッチのポートの情報を収集するステップと、
前記各ノードがそれぞれのノードが備えたI/Oアダプタの仮想I/Oポート毎に帯域を取得するステップと、
前記複数のノードのうちのいずれか一つが、前記I/Oスイッチのポートの情報と、前記帯域を取得するステップと、
前記I/Oスイッチのポートの情報と、前記帯域を取得した前記ノードが、送信元のノードの情報と送信先のノードの情報と帯域を含む仮想I/Oパスの生成要求を受け付けるステップと、
前記仮想I/Oパスの生成要求を受け付けたノードが、前記I/Oスイッチのポートの情報から前記送信元のノードから送信先のノードまでの仮想I/Oパスの経路を選択するステップと、
前記仮想I/Oパスの生成要求を受け付けたノードが、前記選択した仮想I/Oパスの経路上の仮想I/Oポートを抽出し、抽出した仮想I/Oポートに前記取得した帯域と前記生成要求に含まれる帯域から当該仮想I/Oパスを設定可能か否かを判定するステップと、
前記仮想I/Oパスの生成要求を受け付けたノードが、前記仮想I/Oパスを設定可能と判定しときに、前記仮想I/Oパス上のポートに当該仮想I/Oパスを設定するステップと、
を含むことを特徴とする仮想I/Oパスの管理方法。
【請求項2】
前記仮想I/Oパスを設定するステップは、
前記仮想I/Oパスの生成要求を受け付けたノードが、前記I/Oアダプタの物理ポートに設定した仮想I/Oパスに対応する仮想I/Oポートに仮想I/Oパス識別子を付与し、
前記仮想I/Oパスを設定したI/Oアダプタの物理ポートに関連する仮想I/Oパス識別子と、該仮想I/Oパス識別子に対応する仮想I/Oポートの状態情報を保持するステップをさらに含むことを特徴とする請求項1に記載の仮想I/Oパスの管理方法。
【請求項3】
前記I/Oスイッチのポートの情報を収集するステップは、
前記I/Oスイッチの情報と、I/Oスイッチのポートの情報と、前記ポートに設定された仮想I/Oパスの情報を収集することを特徴とする請求項1に記載の仮想I/Oパスの管理方法。
【請求項4】
前記仮想I/Oパスを設定するステップは、
前記I/Oアダプタの物理ポートに設定した仮想I/Oパスに対応する仮想I/Oポートに仮想I/Oパス識別子を付与し、
前記仮想I/Oポート毎に帯域を取得するステップは、
前記I/Oアダプタの物理ポートに関連する仮想I/Oパス識別子と、該仮想I/Oパス識別子に対応して構成される仮想I/Oポートで送受信する帯域を取得することを特徴とする請求項1に記載の仮想I/Oパスの管理方法。
【請求項5】
前記複数のノードのうちのいずれか一つが、前記I/Oスイッチのポートの情報を収集するステップは、
前記複数のノードの稼動状態に基づいて一つのノードを選択するステップを含み、
前記仮想I/Oポート毎に帯域を取得するステップは、
前記仮想I/Oパスが設定されたI/Oスイッチのポートの帯域を取得するステップを含み、
前記仮想I/Oパスを設定可能か否かを判定するステップは、
前記仮想I/Oパスの生成要求を受け付けたノードが、前記選択した仮想I/Oパスの経路上のポートを抽出し、抽出したポートから取得した帯域と、前記仮想I/Oポートの帯域及び前記生成要求に含まれる帯域から当該仮想I/Oパスを設定可能か否かを判定し、
前記選択されたノードは、前記収集したI/Oスイッチのポートの情報を、前記仮想I/Oパスの生成要求を受け付けるノードへ送信することを特徴とする請求項1に記載の仮想I/Oパスの管理方法。
【請求項6】
物理I/Oポートに仮想I/Oポートを設定可能なI/Oアダプタを備えたノードを複数有し、前記各ノードのI/Oアダプタを接続するポートを備えたI/Oスイッチを備えて、前記複数のノード間で前記仮想I/Oポートを介してデータの転送を行う情報処理システムであって、
前記ノードは、
前記I/Oスイッチのポートの情報を収集するスイッチ情報取得部と、
前記I/Oアダプタの仮想I/Oポート毎に帯域を取得するローカル管理部と、を備え、
前記複数のノードのうちの少なくとも一つは、前記複数のノードのI/Oアダプタの仮想I/Oポート間を接続する仮想I/Oパスを設定するグローバルQoS管理部を有し、
前記グローバルQoS管理部は、
前記スイッチ情報取得部とローカル管理部から前記I/Oスイッチのポートの情報と仮想I/Oポート毎の帯域を各ノードから取得するローカル情報取得部と、
送信元のノードの情報と送信先のノードの情報と帯域を含む仮想I/Oパスの生成要求を受け付けて、前記I/Oスイッチのポートの情報から前記送信元のノードから送信先のノードまでの仮想I/Oパスの経路を選択する仮想I/Oパス選択部と、
前記選択した仮想I/Oパスの経路上の仮想I/Oポートを抽出し、当該抽出した仮想I/Oポートに前記取得した帯域と前記生成要求に含まれる帯域から当該仮想I/Oパスを設定可能か否かを判定し、当該仮想I/Oパスを設定可能なときには、前記仮想I/Oパス上のポートに当該仮想I/Oパスを設定する仮想I/Oパス設定部と、
を有することを特徴とする情報処理システム。
【請求項7】
前記仮想I/Oパス設定部は、
前記I/Oアダプタの物理ポートに設定した仮想I/Oパスに対応する仮想I/Oポートに仮想I/Oパス識別子を付与し、前記仮想I/Oパスを設定したI/Oアダプタの物理ポートに関連する仮想I/Oパス識別子と、該仮想I/Oパス識別子に対応する仮想I/Oポートの状態情報を保持することを特徴とする請求項6に記載の情報処理システム。
【請求項8】
前記スイッチ情報取得部は、
前記I/Oスイッチの情報と、I/Oスイッチのポートの情報と、前記ポートに設定された仮想I/Oパスの情報を収集することを特徴とする請求項6に記載の情報処理システム。
【請求項9】
前記仮想I/Oパス設定部は、
前記I/Oアダプタの物理ポートに設定した仮想I/Oパスに対応する仮想I/Oポートに仮想I/Oパス識別子を付与し、
前記ローカル管理部は、
前記I/Oアダプタの物理ポートに関連する仮想I/Oパス識別子と、該仮想I/Oパス識別子に対応して構成される仮想I/Oポートで送受信する帯域を取得することを特徴とする請求項6に記載の情報処理システム。
【請求項10】
前記ローカル管理部は、
前記I/Oアダプタの仮想I/Oポート毎の帯域と、前記I/Oスイッチのポートの帯域を取得し、
前記仮想I/Oパス設定部は、
前記選択した仮想I/Oパスの経路上のポートを関連ポートとして抽出し、抽出した関連ポートから取得し帯域と、前記仮想I/Oポートの帯域及び前記生成要求に含まれる帯域から当該仮想I/Oパスを設定可能か否かを判定し、当該仮想I/Oパスを設定可能なときには、前記仮想I/Oパス上のポートに当該仮想I/Oパスを設定することを特徴とする請求項6に記載の情報処理システム。
【請求項11】
前記仮想I/Oパス選択部は、
予め設定した仮想I/Oパスの候補の中から、予め設定された条件に従って仮想I/Oパスを選択することを特徴とする請求項6に記載の情報処理システム。
【請求項12】
前記仮想I/Oパス選択部は、
前記仮想I/Oパスの経路長または仮想I/Oパスを構成する各ポートに設定された帯域あるいは仮想I/Oパスを構成する各ポートの利用帯域のいずれかを選択条件として予め設定した仮想I/Oパスの候補の中から仮想I/Oパスを選択することを特徴とする請求項11に記載の情報処理システム。
【請求項13】
前記グローバルQoS管理部は、
前記設定した仮想I/Oパスを削除する仮想I/Oパス削除部と、
前記設定した仮想I/Oパスを変更するする仮想I/Oパス変更部と、を備えたことを特徴とする請求項6に記載の情報処理システム。
【請求項14】
前記ノードは、
計算機資源を論理区画に分割する仮想化部と、
前記論理区画を管理する論理区画管理部とを備え、
前記ローカル管理部は、
論理区画管理部により管理される論理区画の識別子との対応を保持するマッピング部を備え、
前記仮想I/Oパス選択部は、
前記論理区画から他のノードへの仮想I/Oパスを選択することを特徴とする請求項6に記載の情報処理システム。
【請求項15】
前記I/Oスイッチのポートの情報と、前記帯域を取得した前記ノードが、送信元のノードの情報と送信先のノードの情報と帯域を含む仮想I/Oパスの生成要求を受け付けるステップは、
前記仮想I/Oパスの生成要求に、新たに設定する仮想I/Oパスの優先度を含み、
前記仮想I/Oパス上のポートに当該仮想I/Oパスを設定するステップは、
前記帯域と優先度に基づいて前記仮想I/Oパス上のポートに当該仮想I/Oパスを設定することを特徴とする請求項1に記載の仮想I/Oパスの管理方法。
【請求項16】
物理I/Oポートに仮想I/Oポートを設定可能なI/Oアダプタを備えたノードを複数有し、前記ノードのI/OアダプタをI/Oスイッチのポートに接続し、前記複数のノード間で前記仮想I/Oポートをデータの転送を行う仮想I/Oパスを設定するプログラムであって、
前記I/Oスイッチのポートの情報を取得する手順と、
前記各ノードから前記I/Oアダプタの仮想I/Oポート毎の帯域を取得する手順と、
前記I/Oスイッチのポートの情報と、前記帯域を取得する手順と、
送信元のノードの情報と送信先のノードの情報と帯域を含む仮想I/Oパスの生成要求を受け付ける手順と、
前記I/Oスイッチのポートの情報から前記送信元のノードから送信先のノードまでの仮想I/Oパスの経路を選択する手順と、
前記選択した仮想I/Oパスの経路上の仮想I/Oポートを抽出し、抽出した仮想I/Oポートに前記取得した帯域と前記生成要求に含まれる帯域から当該仮想I/Oパスを設定可能か否かを判定する手順と、
前記仮想I/Oパスを設定可能と判定しときに、前記仮想I/Oパス上のポートに当該仮想I/Oパスを設定するステップと、
を計算機に機能させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2009−75718(P2009−75718A)
【公開日】平成21年4月9日(2009.4.9)
【国際特許分類】
【出願番号】特願2007−242216(P2007−242216)
【出願日】平成19年9月19日(2007.9.19)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】