(57)【要約】【課題】ＰＣＩｅＳＷを管理するにあたり、ＰＣＩデバイスの詳細な情報（種別、性能等、管理を行うために必要な機能レベルの情報）を自動的に取得する。【解決手段】複数の計算機をＰＣＩインターフェース経由で接続するＰＣＩスイッチと、ＰＣＩスイッチに接続されたＰＣＩデバイスと計算機の割り当てを制御する管理サーバと、を備え、ＰＣＩスイッチが、ＰＣＩデバイスの追加または変更を管理サーバへ通知し、管理サーバが、通知を受信してからＰＣＩデバイスの基本情報を取得し、当該基本情報からＰＣＩデバイスの割り当て状態を占有または共有の何れか一方に決定し、決定した割り当て状態でＰＣＩデバイスを管理サーバに割り当てるようにＰＣＩスイッチに指令し、管理サーバが、ＰＣＩスイッチを介して接続したＰＣＩデバイスのドライバを読み込み、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報を取得する。【選択図】図１
2011065551.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリとＰＣＩインターフェースとを有する複数の計算機と、
前記複数の計算機を前記ＰＣＩインターフェース経由で接続する１以上のＰＣＩスイッチと、
前記ＰＣＩスイッチに接続する複数のＰＣＩデバイスと、
前記ＰＣＩスイッチに接続された前記ＰＣＩデバイスを管理するＰＣＩデバイステーブルを有して、前記ＰＣＩデバイスと前記計算機の割り当てを制御する管理サーバと、を備えて前記計算機とＰＣＩデバイスとの割り当てを管理する計算機システムの管理方法において、
前記ＰＣＩスイッチが、前記ＰＣＩデバイスの追加または変更、あるいは当該ＰＣＩスイッチの追加を前記管理サーバへ通知するステップと、
前記管理サーバが、前記通知を受信して前記ＰＣＩスイッチに対して前記ＰＣＩデバイスの基本情報の取得を要求するステップと、
前記ＰＣＩスイッチが前記基本情報の取得要求を受信して、前記ＰＣＩデバイスの基本情報を取得し、前記管理サーバに前記基本情報を通知するステップと、
前記管理サーバが、前記基本情報を受信して前記ＰＣＩデバイスの割り当て状態を占有または共有の何れか一方に決定し、前記決定した割り当て状態で前記ＰＣＩデバイスを管理サーバに割り当てるように前記ＰＣＩスイッチに要求するステップと、
前記ＰＣＩスイッチが前記管理サーバからの割り当て要求を受信し、前記管理サーバが決定した割り当て状態で、前記ＰＣＩデバイスと管理サーバを接続するステップと、
前記管理サーバが、前記ＰＣＩスイッチを介して接続したＰＣＩデバイスのドライバを読み込み、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報を取得するステップと、
前記管理サーバが、前記取得したＰＣＩデバイスの詳細な情報を前記ＰＣＩデバイステーブルに格納するステップと、
を含むことを特徴とする計算機システムの管理方法。
【請求項２】
請求項１に記載の計算機システムの管理方法であって、
前記管理サーバは、前記ＰＣＩデバイスの詳細な情報を取得した後に、当該ＰＣＩデバイスと管理サーバの接続を解除する要求を前記ＰＣＩスイッチに指令するステップと、
前記ＰＣＩスイッチは、前記管理サーバから受信した接続解除の指令に基づいて前記ＰＣＩデバイスと管理サーバの接続を解除するステップと、
をさらに含むことを特徴とする計算機システムの管理方法。
【請求項３】
請求項２に記載の計算機システムの管理方法であって、
前記ＰＣＩスイッチが、前記管理サーバから受信した接続解除の指令に基づいて前記ＰＣＩデバイスと管理サーバの接続を解除するステップは、
前記ＰＣＩデバイスの占有または共有の状態を、前記管理サーバに接続する以前の状態に復帰させることを特徴とする計算機システムの管理方法。
【請求項４】
請求項１に記載の計算機システムの管理方法であって、
前記管理サーバは、仮想計算機を有し、
前記管理サーバが、前記ＰＣＩスイッチを介して接続したＰＣＩデバイスのドライバを読み込み、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報を取得するステップは、
前記仮想計算機がドライバを読み込んで、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報を取得することを特徴とする計算機システムの管理方法。
【請求項５】
請求項４に記載の計算機システムの管理方法であって、
前記管理サーバは、複数の仮想計算機を有し、前記仮想計算機毎に異なる種類のＯＳを実行し、
前記管理サーバが、前記ＰＣＩスイッチを介して接続したＰＣＩデバイスのドライバを読み込み、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報を取得するステップは、
前記仮想計算機毎にそれぞれドライバを読み込んで、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報をそれぞれ取得することを特徴とする計算機システムの管理方法。
【請求項６】
請求項１に記載の計算機システムの管理方法であって、
前記管理サーバは、前記ＰＣＩスイッチと前記計算機の接続状態と、前記計算機に割り当てたＰＣＩデバイスを管理する管理テーブルを有し、
前記管理サーバが、前記ＰＣＩデバイスの構成を抽出する抽出元の計算機を受け付けるステップと、
前記管理サーバが、前記抽出したＰＣＩデバイスの構成を適用する適用先の計算機を受け付けるステップと、
前記管理サーバが、管理テーブルと前記ＰＣＩデバイステーブルから前記抽出元の計算機に割り当てたＰＣＩデバイスと同一の構成のＰＣＩデバイスを抽出し、前記適用先の計算機に割り当てるよう前記ＰＣＩスイッチに指令するステップと、
をさらに有することを特徴とする計算機システムの管理方法。
【請求項７】
プロセッサとメモリとＰＣＩインターフェースとを有する複数の計算機と、
前記複数の計算機を前記ＰＣＩインターフェースで接続する１以上のＰＣＩスイッチと、
前記ＰＣＩスイッチに接続する複数のＰＣＩデバイスと、
前記ＰＣＩスイッチに接続された前記ＰＣＩデバイスを管理するＰＣＩデバイステーブルを有して、前記ＰＣＩデバイスと前記計算機の割り当てを制御する管理サーバと、を備えた計算機システムにおいて、
前記ＰＣＩスイッチは、
前記ＰＣＩデバイスの追加または変更、あるいは当該ＰＣＩスイッチの追加を前記管理サーバへ通知し、前記管理サーバからの要求に基づいて前記ＰＣＩデバイスの基本情報を取得して前記管理サーバへ通知し、前記管理サーバからの割り当て要求に基づいて前記ＰＣＩデバイスを前記管理サーバまたは前記計算機に接続する制御部を有し、
前記管理サーバは、
前記ＰＣＩスイッチから前記ＰＣＩデバイスの追加または変更、あるいは当該ＰＣＩスイッチの追加を示す通知を受信したときに、前記ＰＣＩデバイスの詳細な情報を取得するＰＣＩデバイス情報取得部を有し、
前記ＰＣＩデバイス情報取得部は、
前記ＰＣＩスイッチから前記通知を受信したときに前記ＰＣＩデバイスの基本情報を前記ＰＣＩスイッチから取得し、当該基本情報に基づいて前記ＰＣＩデバイスの割り当て状態を占有または共有の何れか一方に決定し、前記決定した割り当て状態で前記ＰＣＩデバイスを管理サーバに割り当てるように前記ＰＣＩスイッチに要求し、前記ＰＣＩスイッチを介して接続したＰＣＩデバイスのドライバを読み込み、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報を取得し、前記取得したＰＣＩデバイスの詳細な情報を前記ＰＣＩデバイステーブルに格納することを特徴とする計算機システム。
【請求項８】
請求項７に記載の計算機システムであって、
前記ＰＣＩデバイス情報取得部は、前記ＰＣＩデバイスの詳細な情報を取得した後に、当該ＰＣＩデバイスと管理サーバの接続を解除する要求を前記ＰＣＩスイッチに指令し、
前記ＰＣＩスイッチは、前記管理サーバから受信した接続解除の指令に基づいて前記ＰＣＩデバイスと管理サーバの接続を解除することを特徴とする計算機システム。
【請求項９】
請求項８に記載の計算機システムであって、
前記ＰＣＩスイッチは、前記管理サーバから受信した接続解除の指令に基づいて前記ＰＣＩデバイスと管理サーバの接続を解除する際に、前記ＰＣＩデバイスの占有または共有の状態を、前記管理サーバに接続する以前の状態に復帰させることを特徴とする計算機システム。
【請求項１０】
請求項７に記載の計算機システムであって、
前記管理サーバは、前記ＰＣＩデバイス情報取得部を含む仮想計算機を有し、
前記仮想計算機がドライバを読み込んで、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報を取得することを特徴とする計算機システム。
【請求項１１】
請求項１０に記載の計算機システムであって、
前記管理サーバは、前記ＰＣＩデバイス情報取得部を含む複数の仮想計算機を有し、前記仮想計算機毎に異なる種類のＯＳを実行し、前記仮想計算機毎にドライバを読み込んで、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報をそれぞれ取得することを特徴とする計算機システム。
【請求項１２】
請求項７に記載の計算機システムであって、
前記管理サーバは、前記ＰＣＩスイッチと前記計算機の接続状態と、前記計算機に割り当てたＰＣＩデバイスを管理する管理テーブルを有し、当該管理テーブルと前記ＰＣＩデバイステーブルの情報に基づいて前記計算機にＰＣＩデバイスを割り当てるＰＣＩデバイス割り当て部を有し、
前記ＰＣＩデバイス割り当て部は、
前記ＰＣＩデバイスの構成を抽出する抽出元の計算機を受け付け、前記抽出したＰＣＩデバイスの構成を適用する適用先の計算機を受け付け、前記管理テーブルと前記ＰＣＩデバイステーブルから前記抽出元の計算機に割り当てたＰＣＩデバイスと同一の構成のＰＣＩデバイスを抽出し、前記適用先の計算機に割り当てるよう前記ＰＣＩスイッチに指令することを特徴とする計算機システム。
【請求項１３】
プロセッサとメモリとＰＣＩインターフェースとを有する複数の計算機と、前記複数の計算機を前記ＰＣＩインターフェース経由で接続する１以上のＰＣＩスイッチと、前記ＰＣＩスイッチに接続する複数のＰＣＩデバイスと、前記ＰＣＩスイッチに接続された前記ＰＣＩデバイスを管理するＰＣＩデバイステーブルを有して、前記ＰＣＩデバイスと前記計算機の割り当てを制御する管理サーバで実行されるプログラムであって、
前記ＰＣＩスイッチから記ＰＣＩデバイスの追加または変更、あるいは当該ＰＣＩスイッチの追加を示す通知を受信したときに、前記ＰＣＩスイッチに対して前記ＰＣＩデバイステーブルの基本情報の取得を要求する手順と、
前記ＰＣＩスイッチから前記ＰＣＩデバイスの基本情報を取得し、当該基本情報から前記ＰＣＩデバイスの割り当て状態を占有または共有の何れか一方に決定し、前記決定した割り当て状態で前記ＰＣＩデバイスを管理サーバに割り当てるように前記ＰＣＩスイッチに要求する手順と、
前記ＰＣＩスイッチを介して接続したＰＣＩデバイスのドライバを読み込み、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報を取得する手順と、
前記取得したＰＣＩデバイスの詳細な情報を前記ＰＣＩデバイステーブルに格納する手順と、
を前記管理サーバに実行させることを特徴とするプログラム。
【請求項１４】
請求項１３に記載のプログラムであって、
前記ＰＣＩデバイスの詳細な情報を取得した後に、当該ＰＣＩデバイスと管理サーバの接続を解除する要求を前記ＰＣＩスイッチに指令し、前記ＰＣＩスイッチに管理サーバと前記ＰＣＩデバイスの接続を解除させる手順をさらに含むことを特徴とするプログラム。
【請求項１５】
請求項１４に記載のプログラムであって、
前記ＰＣＩデバイスの詳細な情報を取得した後に、当該ＰＣＩデバイスと管理サーバの接続を解除する要求を前記ＰＣＩスイッチに指令し、前記ＰＣＩスイッチに管理サーバと前記ＰＣＩデバイスの接続を解除させる手順は、
前記ＰＣＩデバイスの占有または共有の状態を、前記管理サーバに接続する以前の状態に復帰させることを特徴とするプログラム。
【請求項１６】
請求項１３に記載のプログラムであって、
前記管理サーバは、仮想計算機を有し、
前記ＰＣＩスイッチを介して接続したＰＣＩデバイスのドライバを読み込み、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報を取得する手順は、
前記仮想計算機でドライバを読み込んで、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報を取得することを特徴とするプログラム。
【請求項１７】
請求項１６に記載のプログラムであって、
前記管理サーバは、複数の仮想計算機を有し、前記仮想計算機毎に異なる種類のＯＳを実行し、
前記ＰＣＩスイッチを介して接続したＰＣＩデバイスのドライバを読み込み、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報を取得する手順は、
前記仮想計算機でそれぞれドライバを読み込んで、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報をそれぞれ取得することを特徴とするプログラム。
【請求項１８】
請求項１３に記載のプログラムであって、
前記管理サーバは、前記ＰＣＩスイッチと前記計算機の接続状態と、前記計算機に割り当てたＰＣＩデバイスを管理する管理テーブルを有し、
前記ＰＣＩデバイスの構成を抽出する抽出元の計算機を受け付ける手順と、
前記抽出したＰＣＩデバイスの構成を適用する適用先の計算機を受け付ける手順と、
前記管理テーブルと前記ＰＣＩデバイステーブルから前記抽出元の計算機に割り当てたＰＣＩデバイスと同一の構成のＰＣＩデバイスを抽出し、前記適用先の計算機に割り当てるよう前記ＰＣＩスイッチに指令する手順と、
をさらに含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算機と複数のＰＣＩデバイスをＰＣＩスイッチで接続した計算機システムに関し、特にＰＣＩスイッチの管理に関する。
【背景技術】
【０００２】
従来、ＰＣＩデバイスは計算機内のスロットに搭載されているため、ＰＣＩデバイスの搭載数は制限されており、複数の計算機のＰＣＩデバイスを集中して管理する必要はなかった。しかし、近年ではＩ／ＯスイッチとしてＰＣＩ  Ｅｘｐｒｅｓｓ  Ｓｗｉｔｃｈ（以降、ＰＣＩｅＳＷ）が実用化された事により、ＰＣＩｅＳＷを採用した計算機システムでは、複数のサーバ（ブレード）をＰＣＩｅＳＷに接続し、このＰＣＩｅＳＷに多数のＰＣＩデバイスを接続することで、各サーバが必要とするＰＣＩデバイスを柔軟に割り当てることができる。そして、このようなＰＣＩｅＳＷと複数のサーバ（ブレード）を搭載した計算機システムのＰＣＩ（またはＰＣＩ  Ｅｘｐｒｅｓｓ）デバイスの搭載数は従来に比して数１０倍に増加する場合もある。なお、ＰＣＩデバイスは、ＰＣＩまたはＰＣＩ  Ｅｘｐｒｅｓｓの規格に準拠したＩ／Ｏデバイスである。
【０００３】
計算機システムにおいては、各サーバが必要とするＰＣＩデバイスを的確に割り当てるためには、ＰＣＩｅＳＷに搭載された多数のＰＣＩデバイスを管理し、ＰＣＩデバイスの情報や、サーバへの割り当て状態等を把握していなければならない。
【０００４】
Ｉ／Ｏスイッチを備えた計算機システムで、ＰＣＩデバイスの情報を取得する手法としては、新たにＩ／ＯデバイスがＰＣＩｅＳＷに接続された場合やＩ／Ｏデバイスの障害が原因で交換された場合などに管理サーバがＩ／Ｏスイッチの管理インターフェースを介してＩ／Ｏデバイスの情報を取得する技術が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−３１０４８９公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記従来技術において、管理サーバがＰＣＩｅＳＷの管理インターフェースから取得できるＰＣＩデバイスの情報は、ＰＣＩバスプロトコルで規定された基本情報のみであり、管理者が管理を行うための情報としては不十分なため、管理者はより詳細な情報を手動で取得して管理しなければならない。その結果、設定作業時間が増大し、さらに設定ミスを発生するリスクが大幅に増加する、という問題があった。
【０００７】
すなわち、ＰＣＩバスプロトコルで規定されたＰＣＩデバイスの基本情報には、ベンダＩＤやデバイスＩＤ、クラスコードなどが含まれており、ＰＣＩデバイスの種別などを判別することができる。一方、計算機システムの管理者は、複数のサーバで各種のＯＳを稼動させ、複数のＰＣＩデバイスのうちから各ＯＳに割り当てる必要がある。この割り当ての際に、ＯＳの種類やバージョン（カーネルバージョンやサービスパック・バージョン）の違いによっては、割り当てようとするＰＣＩデバイスのドライバがＯＳ標準のドライバに含まれていない場合がある。この場合、管理者は、対象としているサーバのＯＳに対応したＰＣＩデバイスのドライバを探したり、他のＰＣＩデバイスのうち当該ＯＳでサポートしているＰＣＩデバイスを探す必要があった。あるいは、複数の仮想サーバをＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍａｎａｇｅｒ）やハイパバイザといった仮想化技術で提供する場合、ＰＣＩデバイスのファームウェアのリビジョンが古いものでは仮想化技術を適用できない場合がある。
【０００８】
管理者は、稼動させるＯＳの種類やバージョンの違いと、ＰＣＩデバイスの種類やバージョン、ファームウェアのリビジョンの違いに応じて、ＯＳが確実に利用可能なＰＣＩデバイスを割り当てる必要があるが、上記従来技術によるＰＣＩデバイスの基本情報のみでは、対象としているＯＳの標準のドライバで動作するか否かを容易に判定することはできないという問題があった。また、仮想化技術を利用する場合では、ＰＣＩデバイスの基本情報のみでは、ＰＣＩデバイスのファームウェアのリビジョンなどが仮想化技術に対応しているか否かを管理者が容易に把握することができない、という問題があった。
【０００９】
そこで本発明は、上記問題点に鑑みてなされたもので、ＰＣＩｅＳＷを管理するにあたり、ＰＣＩデバイスの詳細な情報（種別、性能等、管理を行うために必要な機能レベルの情報）を自動的に取得して、サーバに割り当てるＰＣＩデバイスを管理者が容易に探索可能な計算機システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、プロセッサとメモリとＰＣＩインターフェースとを有する複数の計算機と、前記複数の計算機を前記ＰＣＩインターフェース経由で接続する１以上のＰＣＩスイッチと、前記ＰＣＩスイッチに接続する複数のＰＣＩデバイスと、前記ＰＣＩスイッチに接続された前記ＰＣＩデバイスを管理するＰＣＩデバイステーブルを有して、前記ＰＣＩデバイスと前記計算機の割り当てを制御する管理サーバと、を備えて前記計算機とＰＣＩデバイスとの割り当てを管理する計算機システムの管理方法において、前記ＰＣＩスイッチが、前記ＰＣＩデバイスの追加または変更、あるいは当該ＰＣＩスイッチの追加を前記管理サーバへ通知するステップと、前記管理サーバが、前記通知を受信して前記ＰＣＩスイッチに対して前記ＰＣＩデバイスの基本情報の取得を要求するステップと、前記ＰＣＩスイッチが前記基本情報の取得要求を受信して、前記ＰＣＩデバイスの基本情報を取得し、前記管理サーバに前記基本情報を通知するステップと、前記管理サーバが、前記基本情報を受信して前記ＰＣＩデバイスの割り当て状態を占有または共有の何れか一方に決定し、前記決定した割り当て状態で前記ＰＣＩデバイスを管理サーバに割り当てるように前記ＰＣＩスイッチに要求するステップと、前記ＰＣＩスイッチが前記管理サーバからの割り当て要求を受信し、前記管理サーバが決定した割り当て状態で、前記ＰＣＩデバイスと管理サーバを接続するステップと、前記管理サーバが、前記ＰＣＩスイッチを介して接続したＰＣＩデバイスのドライバを読み込み、当該ドライバを介して前記ＰＣＩデバイスの詳細な情報を取得するステップと、前記管理サーバが、前記取得したＰＣＩデバイスの詳細な情報を前記ＰＣＩデバイステーブルに格納するステップと、を含む。
【発明の効果】
【００１１】
したがって、本発明は、ＰＣＩｅスイッチを管理するに際に、ＰＣＩデバイスの新規追加や変更が生じる度に、ＰＣＩデバイスの詳細な情報（種別、性能等、管理を行うために必要な機能レベルの情報）を自動的に取得することが可能となって、サーバに割り当てるＰＣＩデバイスを管理者が容易に探索可能な計算機システムを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施形態を示し、計算機システムのブロック図である。
【図２】本発明の第１の実施形態を示し、管理サーバの構成を示すブロック図である。
【図３】本発明の第１の実施形態を示し、サーバ＃０の構成を示すブロック図である。
【図４】本発明の第１の実施形態を示し、ＰＣＩｅスイッチ＃０の構成を示すブロック図である。
【図５】本発明の第１の実施形態を示し、ＰＣＩデバイステーブル２１７の一例を示す説明図である。
【図６】本発明の第１の実施形態を示し、ＰＣＩスイッチテーブル２１６の一例を示し、ＰＣＩｅスイッチ＃０のテーブルに関する説明図である。
【図７】本発明の第１の実施形態を示し、サーバ管理テーブル２１５の一例を示す説明図である。
【図８】本発明の第１の実施形態を示し、ＰＣＩデバイスグループテーブル２１８の一例を示す説明図である。
【図９】本発明の第１の実施形態を示し、ＰＣＩデバイス管理部２００のＰＣＩデバイス情報取得機能２１３の処理の一例を示すシーケンス図である。
【図１０】本発明の第１の実施形態を示し、ＰＣＩデバイス１２０を一時的に管理サーバ１０１へ割り当てた状態を示すブロック図である。
【図１１】本発明の第１の実施形態を示し、ＰＣＩデバイス情報取得機能２１３の詳細な処理の一例を示すフローチャートである。
【図１２】本発明の第１の実施形態を示し、上記図１１のステップ１１０１で行われるグルーピング機能２１４の処理の一例を示すフローチャートである。
【図１３】本発明の第１の実施形態を示し、ＰＣＩデバイス割り当て機能２１２の処理の概要を示すシーケンス図である。
【図１４】本発明の第１の実施形態を示し、管理サーバ１０１のＰＣＩデバイス割り当て機能２１２の処理の詳細を示すフローチャートである。
【図１５】本発明の第１の実施形態を示し、管理サーバ１０１のＰＣＩデバイス割り当て機能２１２の処理の詳細を示すフローチャートである。
【図１６】本発明の第１の実施形態を示し、グループ割り当て画面１５０１の画面イメージである。
【図１７】本発明の第２の実施形態を示し、管理サーバのソフトウェア構成を示すブロック図である。
【図１８】本発明の第２の実施形態を示し、管理サーバで行われるＰＣＩデバイス情報取得機能の処理の一例を示すシーケンス図である。
【図１９】本発明の第３の実施形態を示し、管理サーバ１０１のＰＣＩデバイス割り当て機能２１２の処理の一例を示すフローチャートである。
【図２０】本発明の第３の実施形態を示し、グループ抽出画面の画面イメージである。
【発明を実施するための形態】
【００１３】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１４】
図１は本発明の第１の実施形態による計算機システムのブロック図である。図１において計算機システムは、計算機である１以上のサーバ（ブレード）１０２−１、１０２−２と、Ｉ／ＯデバイスとしてのＰＣＩデバイス１２０〜１２８とサーバ１０２−１、１０２−２の接続状態を変更可能な１以上のＰＣＩｅスイッチ（またはＰＣＩスイッチ）１０３−１、１０３−２と、Ｉ／Ｏデバイスとして、１以上のＰＣＩデバイス１２０〜１２８と、計算機システムのサーバ１０２−１、１０２−２及びＰＣＩｅスイッチ１０３−１、１０３−２の管理を行う管理サーバ１０１を主体に構成されている。
【００１５】
なお、図１においては、物理計算機としてのサーバ１０２−１、１０２−２が２つ、ＰＣＩｅスイッチ１０３−１、１０３−２が２つの構成を示し、２つのサーバ１０２−１、１０２−２は、サーバ＃０、サーバ＃１として識別し、２つのＰＣＩスイッチ１０１１、１０１２は、ＰＣＩｅスイッチ＃０、ＰＣＩｅスイッチ＃１として識別する。
【００１６】
管理サーバ１０１とサーバ＃０、＃１及びＰＣＩｅスイッチ＃０、＃１はネットワークインターフェース（ＮＩＣ）を介してＬＡＮスイッチ１０４に接続される。管理サーバ１０１は、ＬＡＮスイッチ１０４を介してサーバ＃０、＃１へＰＣＩｅスイッチ＃０、＃１に接続されたＰＣＩデバイス１２０〜１２８を割り当てる。
【００１７】
また、サーバ＃０、＃１と管理サーバ１０１は、ＰＣＩｅスイッチインターフェース３０４、２０４を備えており、ＰＣＩｅスイッチインターフェースのポートをＰＣＩｅスイッチ＃０、＃１のポートにピアツーピアで接続して、ＰＣＩデバイス１２０〜１２８を利用する。
【００１８】
サーバ＃０、＃１は、各サーバの初期化や電源の投入、遮断などの稼動に関する制御を行うＢＭＣ（Baseboard Management Controller）１２０を備える。ＢＭＣ１２０はＬＡＮスイッチ１０４を介して管理サーバ１０１に接続され、管理サーバ１０１はサーバ＃０、＃１の障害の検知や、電源の投入または遮断を行うことができる。
【００１９】
ここで、ＰＣＩｅスイッチ＃０、＃１は、マルチルートＩ／Ｏ仮想化技術（Multi Root I/O Virtualization：ＭＲ−ＩＯＶ）またはシングルルートＩ／Ｏ仮想化技術（Single Root I/O Virtualization :ＳＲ−ＩＯＶ）に対応する。上記ＭＲ−Ｉ／ＯＶまたはＳＲ−ＩＯＶはＰＣＩ−Ｓｉｇで標準化されたものを適用すればよい。また、サーバ＃０、＃１、管理サーバ１０１のＰＣＩｅスイッチインターフェース３０４、２０４、ＰＣＩｅスイッチ＃０、＃１及びＰＣＩデバイス１２０〜１２８は、上記ＰＣＩ−ＳＩＧが策定したＰＣＩｅｘｐｒｅｓｓの規格に準拠したものである。
【００２０】
管理サーバ１０１は、後述するように、サーバ＃０、＃１とＰＣＩｅスイッチ＃０、＃１の接続状態と、ＰＣＩｅスイッチ＃０、＃１とＰＣＩデバイス１２０〜１２７の接続状態を管理するＰＣＩデバイス管理部を備え、各サーバ＃０、＃１にＰＣＩデバイス１２０〜１２７を割り当てる。管理サーバ１０１はＬＡＮスイッチ１０４を介してＰＣＩｅスイッチ＃０、＃１の管理テーブルを設定することで、サーバ＃０、＃１とＰＣＩデバイス１２０〜１２７の接続状態を更新する。そして、管理サーバ１０１は、ＬＡＮスイッチ１０４を介してＰＣＩデバイス１２０〜１２７及びＰＣＩｅスイッチ＃０、＃１の状態をサーバ＃０、＃１に通知することができる。ＬＡＮスイッチ１０４は、計算機システムの管理ネットワークとして機能する。なお、サーバ＃０、＃１が外部の計算機と通信を行うためのＬＡＮスイッチを別途設けても良い。
【００２１】
以下に、計算機システムの各部の詳細について説明する。
【００２２】
＜サーバ＞
図３は、サーバ＃０（１０２−１）の構成を示すブロック図である。サーバ＃０、＃１は、同一の構成の計算機であるので、サーバ＃０（１０２−１）についてのみ説明する。
【００２３】
サーバ＃０は、１以上のＣＰＵ（プロセッサ）３０２と、メモリ３０１と、記憶媒体としてのローカルディスク３０３と、ＰＣＩｅスイッチ＃０、＃１と接続するためのＰＣＩｅスイッチインターフェース３０４と、ＬＡＮスイッチ１０４に接続するためのネットワークインターフェース３０５と、サーバ＃０の稼動状態の監視と、電源の制御を行うＢＭＣ１２０と、を主体にして構成される。なお、図３の例では、ＰＣＩｅスイッチインターフェース３０４は、２つのポート＃０、＃１（３０４−１、３０４−２）を備え、ポート＃０をＰＣＩｅスイッチ＃０のポート＃０に接続し、ポート＃１をＰＣＩｅスイッチ＃１のポート＃０に接続した例を示す。
【００２４】
メモリ３０１にはＯＳ３１０がロードされてＣＰＵ３０２により実行される。
【００２５】
＜ＰＣＩｅスイッチ＞
図４は、ＰＣＩｅスイッチ＃０（１０３−１）の構成を示すブロック図である。ＰＣＩｅスイッチ＃０、＃１は、同一の構成のＩ／Ｏスイッチであるので、ＰＣＩｅスイッチ＃０（１０３−１）についてのみ説明する。
【００２６】
ＰＣＩｅスイッチ＃０は、ポート＃０〜＃７（３０−１〜３０−８）をピアツーピアで接続するクロスバスイッチ２００６と、クロスバスイッチ２００６を制御する制御プロセッサ２００２と、メモリ２００１と、ＬＡＮスイッチ１０４に接続するネットワークインターフェース２００３と、を主体に構成される。
【００２７】
本実施形態では、ポート＃０〜７のうち、ポート＃０〜３がサーバ＃０、＃１、管理サーバ１０１等の計算機に接続される上流ポートを構成し、ポート＃４〜＃７がＰＣＩデバイスに接続される下流ポートを構成する。なお、下流ポート＃４〜＃７は、複数のＰＣＩデバイスを収容可能なＩ／Ｏドロワ（図示省略）内のスロットに接続されても良い。
【００２８】
メモリ２００１には、クロスバスイッチ２００６を制御するソフトウェアとしてのクロスバスイッチ制御部２００４がロードされ、制御プロセッサ２００２により実行される。また、メモリ２００１にはクロスバスイッチ制御部２００４が利用するポート管理テーブル２００５が格納される。ポート管理テーブル２００５は、図示はしないが、上流ポートとしてのポート＃０〜＃３と、下流ポートとしてのポート＃４〜＃７の接続状態と、共有または占有の状態を管理する。
【００２９】
クロスバスイッチ制御部２００４は、ネットワークインターフェース２００３を介して管理サーバ１０１からの指令を受け付けて、上流ポートとしてのポート＃０〜＃３と、下流ポートとしてのポート＃４〜＃７の接続関係を決定し、ポート管理テーブル２００５を更新する。クロスバスイッチ制御部２００４は、管理サーバ１０１からの要求に応じてポート管理テーブル２００５の内容を送信する。
【００３０】
また、クロスバスイッチ制御部２００４は、ポート＃０〜＃７の接続状態が変化すると、管理サーバ１０１に変化が発生したことを通知する。接続状態の変化は、例えば、下流ポートに新たなＰＣＩデバイスが接続されたり、既存のＰＣＩデバイスが撤去された場合や、上流ポートに新たなサーバが接続されたり、既存のサーバが撤去された場合を示す。これらの状態が変化したときに、クロスバスイッチ制御部２００４は、管理サーバ１０１に状態の変化の内容（例えば、ポートの識別子とサーバまたはＰＣＩデバイスの識別子）を通知する。なお、クロスバスイッチ制御部２００４は、ＰＣＩｅスイッチ＃０の下流ポートに新たなＰＣＩｅスイッチが接続されたり、既存のＰＣＩｅスイッチが撤去された場合も、ＰＣＩデバイスの変更と同様にして、管理サーバ１０１に接続状態の変化の内容を通知する。このように、ＰＣＩｅスイッチ＃０はポート＃０〜＃７の接続状態を監視して、接続状態に変化が生じたときには管理サーバ１０１に変化の内容を通知する。
【００３１】
＜管理サーバ＞
図２は、管理サーバ１０１の構成を示すブロック図である。管理サーバ１０１は、１以上のＣＰＵ（プロセッサ）２０２と、メモリ２０１と、記憶媒体としてのローカルディスク２０３と、ＰＣＩｅスイッチ＃０、＃１と接続するためのＰＣＩｅスイッチインターフェース２０４と、ＬＡＮスイッチ１０４に接続するためのネットワークインターフェース２０５と、マウスやキーボードで構成されて入力や操作を受け付ける入力装置２３０と、ディスプレイ等で構成されてユーザインタフェースを提供する表示装置２２０と、を主体にして構成される。なお、図１の例では、ＰＣＩｅスイッチインターフェース２０４は、２つのポート＃０、＃１（２０４−１、２０４−２）を備え、ポート＃０をＰＣＩｅスイッチ＃０のポート＃２に接続し、ポート＃１をＰＣＩｅスイッチ＃１のポート＃２に接続した例を示す。
【００３２】
メモリ２０１には、ＯＳ２１０がロードされてＣＰＵ２０２により実行される。ＯＳ２１０上ではＰＣＩデバイス管理部２００が実行される。ＰＣＩデバイス管理部２００はローカルディスク２０３に格納されたプログラムで構成され、ＣＰＵ２０２がローカルディスク２０３からメモリ２０１にＰＣＩデバイス管理部２００をロードし、ＣＰＵ２０２により実行される。
【００３３】
ＯＳ２１０は、ＰＣＩデバイス管理部２００の実行を管理し、後述するように、ＰＣＩデバイスの詳細な情報を取得する際には、予め用意したデバイスドライバ２１１を読み込んで、デバイスドライバ２１１を介してＰＣＩデバイスの詳細な情報を取得する。なお、デバイスドライバ２１１は、ＯＳ２１０に標準で搭載されるもの以外についてはローカルディスク２０３に格納しておき、適宜読み出すことができる。
【００３４】
ＰＣＩデバイス管理部２００は、ＰＣＩｅスイッチ＃０、＃１の設定の変更と、サーバ＃０、＃１へのＰＣＩデバイス１２０〜１２７の割り当てを管理する。このため、ＰＣＩデバイス管理部２００は、後述する各テーブルの情報に基づいてＰＣＩデバイス１２０〜１２７とサーバ＃０、＃１の割り当て状態を管理するＰＣＩデバイス割り当て機能２１２と、ＰＣＩデバイス１２０〜１２７の詳細な情報を取得してＰＣＩデバイステーブル２１７とＰＣＩデバイスグループテーブル２１８を更新するＰＣＩデバイス情報取得機能２１３と、ＰＣＩデバイスグループテーブル２１８の情報から管理サーバ１０１を利用する管理者にＰＣＩデバイス１２０〜１２７を種別毎等に提供するグルーピング機能２１４を備える。
【００３５】
上記ＰＣＩデバイス管理部２００の各機能部については後述する。
【００３６】
次に、ＰＣＩデバイス管理部２００が利用する各テーブルの詳細について以下に説明する。各テーブルはメモリ２０１に格納され、ＰＣＩデバイス管理部２００の各機能部によって設定され、更新される。
【００３７】
図７は、サーバ管理テーブル２１５の一例を示す説明図である。サーバ管理テーブル２１５は、ＰＣＩデバイス割り当て機能２１２がサーバ＃０、＃１（以下、サーバ＃０、＃１の総称を単にサーバとする）とＰＣＩｅスイッチ＃０、＃１（以下、ＰＣＩｅスイッチ＃０、＃１の総称を単にＰＣＩｅスイッチとする）から取得した情報と、管理サーバ１０１を利用する管理者が設定した情報に基づいて設定される。また、管理サーバ１０１の管理者がサーバ管理テーブル２１５を設定するようにしても良い。
【００３８】
サーバ管理テーブル２１５は、サーバの識別子を格納するサーバＩＤ６１１と、サーバのＰＣＩｅスイッチインターフェース３０４のポート３０４−１または３０４−２の識別子を格納するＰＣＩｅポート番号６１２と、サーバのポートに接続されたＰＣＩｅスイッチ＃０、＃１の識別子を格納する接続ＰＣＩスイッチＩＤ６１３と、サーバのポートが接続されているＰＣＩｅスイッチのポートの識別子を格納する接続ＰＣＩスイッチポート番号６１４と、ＰＣＩｅスイッチの下流ポートに接続されたＰＣＩデバイス１２０〜１２７（以下、ＰＣＩデバイス１２０〜１２７の総称を単にＰＣＩデバイスとする）に割り当てられるグループの識別子（グループＩＤ）を格納する適用グループＩＤ６１５からひとつのエントリが構成される。なお、各識別子は、図１において「＃」を付した符号を識別子とし、例えば、サーバ１０２−１は、サーバ＃０であるので、識別子は「０」とする。
【００３９】
適用グループＩＤ６１５は、後述するように、管理者がサーバに割り当てたいＰＣＩデバイスのグループＩＤを指定したものである。ＰＣＩデバイスのグループＩＤは、ＰＣＩデバイスの種類や性能、ベンダ、適合するドライバなどの違いに応じて後述するように指定されたものである。
【００４０】
サーバＩＤ６１１やＰＣＩｅポート番号６１２、接続ＰＣＩスイッチＩＤ６１３、接続ＰＣＩスイッチポート番号６１４は、サーバの起動時やリセットをかけた際に、ＰＣＩｅスイッチインターフェース３０４が取得したＰＣＩバスツリーの情報を、管理サーバ１０１のＰＣＩデバイス割り当て機能２１２が読み込むことでサーバ管理テーブル２１５を更新することができる。
【００４１】
図６は、ＰＣＩスイッチテーブル２１６の一例を示し、ＰＣＩｅスイッチ＃０のテーブルに関する説明図である。ＰＣＩスイッチテーブル２１６は、ＰＣＩデバイス割り当て機能２１２がサーバにＰＣＩデバイスを割り当てるとき等に更新される。また、管理サーバ１０１の管理者がＰＣＩスイッチテーブル２１６を設定するようにしても良い。なお、図示はしないが、ＰＣＩｅスイッチ＃１についても同様のテーブルが構成される。
【００４２】
ＰＣＩスイッチテーブル２１６は、ＰＣＩｅスイッチの識別子を格納するＰＣＩｅスイッチＩＤ５１１と、ＰＣＩｅスイッチの下流ポートの識別子を格納するポート番号５１２と、当該ポート番号５１２に接続されたＰＣＩデバイスの識別子を格納する搭載ＰＣＩデバイスＩＤ５１３と、当該下流ポートに接続されたＰＣＩデバイスが共有または占有の何れであるかを示す割り当て状態５１４と、当該下流ポートに接続されたＰＣＩデバイスを共有することができるか否かを示す共有可否５１６と、当該ＰＣＩデバイスの接続先の装置の情報を格納するトポロジ情報５１５と、からひとつのエントリが構成される。
【００４３】
ＰＣＩｅスイッチＩＤ５１１と、ポート番号５１２と、搭載ＰＣＩデバイスＩＤは、ＰＣＩデバイス割り当て機能２１２がＰＣＩｅスイッチから取得する。割り当て状態５１４と共有可否５１６及びトポロジ情報５１５は、管理サーバ１０１を利用する管理者が設定することができる。割り当て状態５１４が「共有」の場合には、ＰＣＩデバイスが複数のサーバで共有されていることを示し、「占有」または「−」の場合はＰＣＩデバイスがひとつのサーバに割り当てられていることを示す。共有可能５１６が「可」の場合には、搭載ＰＣＩデバイスＩＤでのＰＣＩデバイスが複数のサーバで共有することが可能であることを示す。なお、共有が不能な場合には、ブランクまたは「否」が設定される。トポロジ情報５１５は、ＰＣＩデバイスにはどのような装置が接続されているかを管理者などによって設定することができる。例えば、ＰＣＩデバイスの種類がＮＩＣの場合、ネットワークのセグメントの情報等であり、ＨＢＡ（Host Bus Adaptor）の場合では接続されているストレージ装置の識別子などが格納され、管理者が当該ＰＣＩデバイスを他のサーバに割り当てる際に参考となる情報が格納される。
【００４４】
図５は、ＰＣＩデバイステーブル２１７の一例を示す説明図である。ＰＣＩデバイステーブル２１７は、ＰＣＩデバイス情報取得機能２１３が後述する処理により各ＰＣＩデバイスから取得した情報を設定したものである。また、管理サーバ１０１の管理者が設定してもよい。
【００４５】
ＰＣＩデバイステーブル２１７は、ＰＣＩデバイスの識別子を格納するＰＣＩデバイスＩＤ４１１と、ＰＣＩデバイスの種別を格納するカード種別４１２と、ＰＣＩデバイスのベンダ名を格納するベンダ４１３と、ＰＣＩデバイスの転送速度や対応規格などの性能情報を格納する性能４１４と、ＰＣＩデバイスが備えるポートの数を格納するポート数４１５と、ＰＣＩデバイスを動作させることが可能なデバイスドライバ２１１の情報を格納する適合ドライバ４１６と、ＰＣＩデバイスのファームウェアのバージョンを格納するファームウェアリビジョン４１７と、からひとつのエントリが構成される。
【００４６】
ＰＣＩデバイス情報取得機能２１３は、後述する処理により、ＰＣＩデバイスＩＤ４１１、カード種別４１２、ベンダ４１３、性能４１４、ポート数４１５、ファームウェアリビジョン４１７を取得してＰＣＩデバイステーブル２１７を更新する。適合ドライバ４１６については、管理サーバ１０１を利用する管理者が設定することができる。適合ドライバ４１６の情報としては、ＯＳに標準で添付されているデバイスドライバ２１１で当該ＰＣＩデバイスを認識可能なＯＳの種類やバージョン、カーネルバージョン、サービスパック・バージョン等を設定するのが望ましい。あるいは、デバイスドライバ２１１のバージョン情報をＯＳの種類毎に設定してもよい。
【００４７】
図８は、ＰＣＩデバイスグループテーブル２１８の一例を示す説明図である。ＰＣＩデバイスグループテーブル２１８は、後述するように、グルーピング機能２１４により作成されるものである。
【００４８】
ＰＣＩデバイスグループテーブル２１８は、グループＩＤを格納するグループＩＤ７１１と、ＰＣＩデバイスの種別を示すカード種別７１２と、ＰＣＩデバイスのベンダ名を格納するベンダ７１３と、ＰＣＩデバイスの性能情報を格納する性能７１４と、ＰＣＩデバイスに実装されたポート数７１５と、ＰＣＩデバイスを動作させるのに必要なデバイスドライバ２１１を備えたＯＳの種類やバージョンを格納する適合ドライバ７１６、ＰＣＩデバイスのファームウェアのバージョンを格納するファームウェアリビジョン７１７と、ＰＣＩデバイスに接続された装置の情報を格納するトポロジ情報７１８と、からひとつのエントリが構成される。
【００４９】
例えば、グループＩＤ＝０の例では、ＰＣＩデバイスの種類がネットワークインターフェース（ＮＩＣ）のものを検索することになり、グループＩＤ＝Ｎの場合では、ＰＣＩデバイスの種類がネットワークインターフェースで、かつ、デバイスドライバ２１１がＷｉｎ２ｋ３ｓｐ２に標準で添付されているドライバを利用可能なものを検索する。
【００５０】
＜ＰＣＩデバイス管理部の処理＞
次に、ＰＣＩデバイス管理部２００の各機能で行われる処理の一例について、以下に説明する。
【００５１】
＜ＰＣＩデバイス情報取得機能＞
図９は、ＰＣＩデバイス管理部２００のＰＣＩデバイス情報取得機能２１３の処理の一例を示すシーケンス図である。まず、ステップ８１１では、ＰＣＩｅスイッチがＰＣＩデバイスの追加または変更を検知して、ＬＡＮスイッチ１０４を介して管理サーバ１０１に通知する。変更の検知は、クロスバスイッチ制御部２００４が、クロスバスイッチ２００６の下流ポート＃４〜＃７に接続されたＰＣＩデバイスが、ポート管理テーブル２００５と一致しないときに追加または変更を検知して、接続位置として下流ポートを特定する。そしてクロスバスイッチ制御部２００４は管理サーバ１０１にＰＣＩデバイスの変更が発生したことを通知する。また、クロスバスイッチ制御部２００４は、ポート管理テーブル２００５を更新する。この更新は、変更のあった下流ポートに接続されたＰＣＩデバイスを更新する。
【００５２】
管理サーバ１０１は、ステップ８０１でＰＣＩｅスイッチからＰＣＩデバイスの変更または追加の通知を受信し、ＰＣＩデバイスに変更が生じたことを検知する。なお、ＰＣＩｅスイッチは、当該ＰＣＩｅスイッチが新規に計算機システムへ追加されたときにもステップ８１１と同様の通知を発行する。
【００５３】
ステップ８０２では、管理サーバ１０１は、変更のあったＰＣＩデバイスの基本情報と接続位置をＰＣＩｅスイッチに対して要求する。基本情報としては、ＰＣＩデバイスＩＤ（デバイス番号）、カード種別、ベンダ名などである。接続位置は、下流ポートの識別子である。
【００５４】
ステップ８１２では、ＰＣＩｅスイッチのクロスバスイッチ制御部２００４が、管理サーバ１０１の要求を受信して、クロスバスイッチ２００６を介して変更が生じたＰＣＩデバイスにアクセスし、基本情報を取得する。基本情報の取得はＰＣＩバスプロトコルに基づいて取得する。そして、ＰＣＩｅスイッチは、取得した基本情報を管理サーバ１０１に送信する。
【００５５】
ステップ８０３では、基本情報を受信した管理サーバ１０１が、ＰＣＩｅスイッチに対して追加または変更が生じた下流ポートのＰＣＩデバイスを、管理サーバ１０１に割り当てるように要求する。なお、管理サーバ１０１は、ＰＣＩデバイスＩＤ等からＰＣＩスイッチテーブル２１６を参照して、変更が生じたＰＣＩデバイスが新規（追加）または変更の何れであるかを判定し、新規または追加のＰＣＩデバイスの場合には、当該ＰＣＩデバイスを占有で割り当てるように要求し、ＰＣＩデバイスの変更の場合には共有で割り当てるように要求しても良い。
【００５６】
ステップ８１３では、ＰＣＩｅスイッチが管理サーバ１０１からの割り当て要求を受信し、割り当て対象のＰＣＩデバイスを管理サーバ１０１に割り当てる。すなわち、ＰＣＩｅスイッチは、ポート管理テーブル２００５を更新してクロスバスイッチ２００６の設定を変更し、下流ポートと上流ポートの接続関係を変更する。例えば、図１に示したＰＣＩｅスイッチ＃０のポート＃４に接続されたＰＣＩデバイス１２０に変更があった場合、ＰＣＩｅスイッチ＃０は、ポート＃４をポート＃２（３０−３）に接続し、図１０で示すように管理サーバ１０１のポート＃０とＰＣＩデバイス１２０を通信する。図１０は、ＰＣＩデバイス１２０を一時的に管理サーバ１０１へ割り当てた状態を示すブロック図である。このとき、ＰＣＩデバイス１２０が既に他のサーバに割り当てられている場合には、ＰＣＩｅスイッチ＃０は、ポート管理テーブル２００５を更新してＰＣＩデバイス１２０の割り当て状態を共有に変更する。そして、ＰＣＩｅスイッチ＃０は、ポート管理テーブル２００５を更新する。なお、ＰＣＩデバイス１２０が共有で割り当てることができない場合には、管理サーバ１０１にエラーを通知することができる。
【００５７】
ＰＣＩデバイス１２０を管理サーバ１０１に割り当てたＰＣＩスイッチは、割り当ての完了と、割り当ての内容を管理サーバ１０１に通知する。
【００５８】
次に、ステップ８０４では、管理サーバ１０１は割り当ての完了通知と、割り当て内容を受信し、ＰＣＩデバイスと接続されたので、ステップ８０３で受信した基本情報に基づいてデバイスドライバ２１１をロードする。このとき、管理サーバ１０１は、ＯＳ２１０に該当するデバイスドライバ２１１がない場合には、管理者にデバイスドライバ２１１を要求する。
【００５９】
そして、管理サーバ１０１は、割り当てられたＰＣＩデバイスのデバイスドライバ２１１を介してＰＣＩデバイスの詳細な情報を取得する。詳細な情報は、ＰＣＩデバイステーブル２１７に格納するための情報であり、例えば、性能情報（転送速度や対応する規格）、ポート数、ファームウェアリビジョンなどを取得する。なお、ＰＣＩデバイスに適合するデバイスドライバ２１１については、ＯＳ２１０が保持している複数のデバイスドライバの一覧を表示装置２２０に出力して管理者に選択させるようにしてもよい。また、当該ＰＣＩデバイスの接続先の情報を取得できる場合には、管理サーバ１０１は接続先の情報を読み込んでトポロジ情報としてメモリ２０１に記憶する。
【００６０】
次に、ステップ８０５では、上記ステップ８０４で取得したＰＣＩデバイスの詳細な情報と、上記ステップ８０２で取得した基本情報からＰＣＩデバイステーブル２１７を更新する。管理サーバ１０１は、基本情報からＰＣＩデバイスＩＤ４１１、カード種別４１２、ベンダ４１３を設定し、詳細な情報から性能４１４、ポート数４１５、適合ドライバ４１６、ファームウェアリビジョン４１７を設定する。なお、追加や変更の生じたＰＣＩデバイスと同一のＰＣＩデバイスの情報がＰＣＩデバイステーブル２１７に存在する場合には、新たなエントリーを生成せず、また、更新も行わない。
【００６１】
次に、ステップ８０６では、追加または変更が生じたＰＣＩデバイスの詳細な情報の取得が完了したので、管理サーバ１０１はＰＣＩｅスイッチに対して、現在管理サーバ１０１が接続しているＰＣＩデバイスの割り当てを解除する要求を送信する。
【００６２】
ステップ８１４では、ＰＣＩｅスイッチは管理サーバ１０１の割り当て解除要求を受信し、管理サーバ１０１とＰＣＩデバイスの接続を解除する。このため、ＰＣＩｅスイッチはクロスバスイッチ２００６を制御して管理サーバ１０１に接続された上流ポートと、接続対象のＰＣＩデバイスが接続された下流ポートの通信経路を切断する。そして、管理サーバ１０１と接続していたＰＣＩデバイスが共有の場合には、元の状態（例えば、占有）に戻す。そして、ＰＣＩｅスイッチはポート管理テーブル２００５を更新して、管理サーバ１０１と接続する以前の状態に戻して割り当ての変更（接続解除）を完了する。ＰＣＩｅスイッチは、管理サーバ１０１とＰＣＩデバイスの接続の解除が完了すると、完了の通知を管理サーバ１０１に送信する。こうして、ＰＣＩｅスイッチは、ＰＣＩデバイスの接続状態を、管理サーバ１０１に接続する以前の状態に復帰する。
【００６３】
ステップ８０７では、管理サーバ１０１がＰＣＩｅスイッチから接続解除の完了通知を受信し、ＰＣＩデバイスグループテーブル２１８を必要に応じて更新し、処理を終了する。ＰＣＩデバイスグループテーブル２１８の更新は、上記ステップ８０５でＰＣＩデバイステーブル２１７に新たなエントリを追加した場合は、新たなＰＣＩデバイスがＰＣＩｅスイッチに接続されたので、この新たなＰＣＩデバイスの基本情報と詳細情報を、後述するようにＰＣＩデバイスグループテーブル２１８に加える。
【００６４】
以上の処理により、ＰＣＩｅスイッチにＰＣＩデバイスが加えられたり変更（ＰＣＩデバイス取り外しや、ＰＣＩｅスイッチの追加または削除）が生じると、ＰＣＩｅスイッチからの通知により管理サーバ１０１のＰＣＩデバイス情報取得機能２１３が起動して、管理サーバ１０１と変更が生じたＰＣＩデバイスを一時的に接続する。
【００６５】
管理サーバ１０１のＯＳ２１０は、接続されたＰＣＩデバイスのデバイスドライバ２１１を読み込んで、このデバイスドライバ２１１によってＰＣＩデバイスの詳細な情報を取得することができ、取得した詳細な情報をＰＣＩデバイステーブル２１７に設定する。ＰＣＩデバイステーブル２１７を更新すると、管理サーバ１０１とＰＣＩデバイスの接続を解除して元の状態へ戻すことにより、変更の生じたＰＣＩデバイスをサーバが利用することができる。
【００６６】
図１１は、図９のステップ８０１〜８０７で行われるＰＣＩデバイス情報取得機能２１３の詳細な処理の一例を示すフローチャートである。
【００６７】
ステップ１００１では、ＰＣＩデバイス情報取得機能２１３がＰＣＩｅスイッチから変更があったことを示す通知を受信し、ＰＣＩデバイスまたはＰＣＩｅスイッチの追加、削除などの変更が生じたことを検知する。
【００６８】
ステップ１００２では、上記ステップ８０２、８１２で示したように、管理サーバ１０１は通知を受けたＰＣＩデバイスの基本情報と接続位置をＰＣＩｅスイッチに要求し、ＰＣＩｅスイッチから基本情報（ＰＣＩデバイスＩＤ）と接続位置を取得する。
【００６９】
ステップ１００３では、ＰＣＩデバイス情報取得機能２１３がＰＣＩｅスイッチから取得したＰＣＩデバイスについてＰＣＩデバイステーブル２１７等に登録または更新する必要があるか否かを判定する。この判定は、ステップ１００２で取得したＰＣＩデバイスについて詳細な情報を取得していなければステップ１００４に進み、既に詳細な情報を取得していればステップ１０１１のＰＣＩデバイスグループテーブル２１８の作成へ進む。なお、ステップ１００１で検知した変更がＰＣＩデバイスの削除（取り外し）である場合には、ステップ１００６〜１００８、１００Ａの処理を行わず、ＰＣＩデバイステーブル２１７とＰＣＩスイッチテーブル２１６の更新のみを行えばよい。
【００７０】
ステップ１００４では、ＰＣＩデバイス情報取得機能２１３がＰＣＩデバイステーブル２１７とＰＣＩスイッチテーブル２１６を参照し、ステップ１００５に進んで、ステップ１００２で取得したＰＣＩデバイスＩＤ及び接続位置のＰＣＩデバイスが、新たに加えられたＰＣＩデバイスであるか否かを判定する。すなわち、ＰＣＩデバイス情報取得機能２１３は、ＰＣＩデバイステーブル２１７に上記取得したＰＣＩデバイスＩＤが存在しなければ、新たに加えられたＰＣＩデバイスと判定して、ステップ１００６に進んで、当該ＰＣＩデバイスを管理サーバ１０１が占有するようＰＣＩｅスイッチに割り当てを要求する。
【００７１】
一方、上記取得したＰＣＩデバイスＩＤがＰＣＩスイッチテーブル２１６に存在し、接続位置（下流ポートの識別子）の変更の場合で、共有可否５１６が「可」であれば、ステップ１００７へ進んで、当該ＰＣＩデバイスを管理サーバ１０１と他のサーバで共有するようＰＣＩｅスイッチに割り当てを要求する。なお、共有可否５１６が「可」でない場合には、表示装置２２０へエラーを通知するようにしても良い。
【００７２】
この要求により、上記図８のステップ８１３で述べたようにＰＣＩｅスイッチは、変更の生じたＰＣＩデバイスの割り当て状態を変更し、管理サーバ１０１に占有または共有で割り当てる。
【００７３】
次に、ステップ１００Ｂでは、上記図８のステップ８０４の処理を行い、管理サーバ１０１に接続されたＰＣＩデバイスをＯＳ２１０が認識し、ＯＳ２１０がデバイスドライバ２１１を検索する。ＰＣＩデバイス情報取得機能２１３は、ＯＳ２１０がＰＣＩデバイスのデバイスドライバ２１１を読み込んだか否かを判定する。
【００７４】
ＯＳ２１０がＰＣＩデバイスのデバイスドライバ２１１を読み込めなかった場合には、ステップ１００Ｃへ進んでＰＣＩデバイス情報取得機能２１３が、表示装置２２０へデバイスドライバを要求する通知を送信し、管理者が手動でデバイスドライバ２１１をインストールするように通知する。デバイスドライバ２１１がインストールされた後に、ステップ１００８へ進む。
【００７５】
ステップ１００８では、ＰＣＩデバイス情報取得機能２１３が、デバイスドライバ２１１を介して、ＰＣＩデバイスの詳細な情報を上記ステップ８０４で述べたように取得する。
【００７６】
ステップ１００９では、ＰＣＩデバイス情報取得機能２１３が、ステップ１００８で取得したＰＣＩデバイスの詳細な情報をＰＣＩデバイステーブル２１７に格納する。
【００７７】
ステップ１００Ａでは、ＰＣＩデバイス情報取得機能２１３が、詳細な情報の取得が完了したＰＣＩデバイスの管理サーバ１０１との接続を遮断するため、ＰＣＩｅスイッチに当該ＰＣＩデバイスの管理サーバ１０１への割り当てを解除する要求を送信する。
【００７８】
そして、ステップ１００２の処理に戻って、追加または更新するＰＣＩデバイスがなくなるまで上記ステップ１００２〜１００Ａを繰り返す。
【００７９】
ステップ１００２の処理で、変更が生じた全てのＰＣＩデバイスについて詳細な情報の取得が完了すると、グルーピング機能２１４によるステップ１１０１の処理へ進む。
【００８０】
以上の処理によって、ＰＣＩｅスイッチにＰＣＩデバイスが追加または変更された場合には、この変更のあったＰＣＩデバイスを一時的に管理サーバ１０１に割り当てる。そして、ＯＳ２１０が当該ＰＣＩデバイスのデバイスドライバ２１１を読み込んで、デバイスドライバ２１１を介してＰＣＩデバイス情報取得機能２１３がＰＣＩデバイスの詳細な情報を取得することができる。
【００８１】
＜グルーピング機能機能＞
図１２は、上記図１１のステップ１１０１で行われるグルーピング機能２１４の処理の一例を示すフローチャートである。
【００８２】
ステップ１１０１では、グルーピング機能２１４がＰＣＩデバイステーブル２１７を参照し、ステップ１１０２では、新たにエントリが追加されているか否かを判定する。新たにエントリが追加されている場合には、ＰＣＩデバイスの情報が追加されているのでステップ１１０３の処理へ進み、そうでなければステップ１１０４で終了する。
【００８３】
ステップ１１０３では、グルーピング機能２１４が新たなＰＣＩデバイスの情報からＰＣＩデバイスをサーバに割り当てるときの条件として、所定の項目を抽出して、ＰＣＩデバイスグループテーブル２１８に追加する。所定の項目としては、カード種別＋ベンダ名の検索条件や、カード種別＋性能の検索条件、あるいは、カード種別＋適合ドライバなどをそれぞれＰＣＩデバイステーブル２１７から取得し、ＰＣＩデバイスグループテーブル２１８にグループＩＤを付与して追加する。
【００８４】
＜ＰＣＩデバイス割り当て機能＞
図１３は、ＰＣＩデバイス割り当て機能２１２の処理の概要を示すシーケンス図である。管理者などがサーバにＰＣＩデバイスを割り当てる際に、管理サーバ１０１でＰＣＩデバイス割り当て機能２１２の起動を指令することで開始される。
【００８５】
ＰＣＩデバイス割り当て機能２１２は、起動するとステップ１２２１で図１６に示すような、グループ割り当て画面を表示装置２２０に出力し、管理者などが操作する入力装置２３０からの入力を受け付ける。
【００８６】
ステップ１２１１では、管理者などが入力装置２３０を操作して、表示装置２２０のグループ割り当て画面１５０１上で、ＰＣＩデバイスを割り当てるサーバの選択と、割り当てるＰＣＩデバイスのグループ（検索条件）を指定する。
【００８７】
図１６は、グループ割り当て画面１５０１の画面イメージである。グループ割り当て画面１５０１は、サーバ選択部１５０２とポート選択部１０３と、検索条件指定部１５１０と、ＰＣＩデバイスグループテーブル表示部１５２０から構成される。管理者などが入力装置２３０を操作して、サーバ選択部１５０２でＰＣＩデバイスを割り当てるサーバを指定し、ポート選択部１５０３でＰＣＩデバイスを割り当てるポートを指定する。検索条件指定部１５１０は、複数の検索条件にチェックボックス１５１１と項目選択部１５１２を備え、管理者などが入力装置２３０を操作して適宜選択することができる。ＰＣＩデバイスグループテーブル表示部１５２０は、チェックボックス１５２１を備え、図８に示したＰＣＩデバイスグループテーブル２１８のエントリを検索条件として選択することができる。
【００８８】
図１３のステップ１２１１で、管理者などがサーバ選択部１５０２でサーバを選択し、ポート選択部１５０３でポートを選択し、チェックボックス１５２１を指定すると、ステップ１２２２でＰＣＩデバイス割り当て機能２１２は、入力を受け付けて選択されたサーバに対してチェックボックス１５２１で指定されたＰＣＩデバイスのグループの適用を開始する。
【００８９】
ステップ１２２３では、ＰＣＩデバイス割り当て機能２１２が、選択されたチェックボックス１５２１のエントリに対応するＰＣＩデバイスグループテーブル２１８からグループＩＤ７１１と検索条件を取得する。
【００９０】
ステップ１２２４では、ＰＣＩデバイス割り当て機能２１２が、サーバ管理テーブル２１５を参照し、サーバ選択部１５０２で指定されたサーバと、ポート選択部１５０３で指定されたポートからＰＣＩデバイスを検索するＰＣＩｅスイッチの識別子を接続ＰＣＩスイッチＩＤ６１３から取得する。
【００９１】
ステップ１２２５では、上記ステップ１２２４で取得した接続ＰＣＩスイッチＩＤ６１３のＰＣＩｅスイッチのＰＣＩデバイスから、上記ステップ１２２３で取得した検索条件に適合するＰＣＩデバイスを、ＰＣＩデバイステーブル２１７及びＰＣＩスイッチテーブル２１６から抽出する。
【００９２】
ステップ１２２６では、ＰＣＩデバイス割り当て機能２１２が上記ステップ１２２５で抽出したＰＣＩデバイスを、指定されたサーバに割り当てるように、ステップ１２２４で取得した接続ＰＣＩスイッチＩＤ６１３のＰＣＩｅスイッチに割り当て要求を送信する。
【００９３】
ステップ１２３１では、ＰＣＩｅスイッチが管理サーバ１０１からの割り当て要求を受信して、要求で指定された下流ポートのＰＣＩデバイスを、上流ポートのサーバに接続するようクロスバスイッチ２００６の接続を変更し、ポート管理テーブル２００５を更新する。そして、ＰＣＩｅスイッチは、割り当てが完了したことを管理サーバ１０１に通知する。
【００９４】
ステップ１２２７では、管理サーバ１０１のＰＣＩデバイス割り当て機能２１２がＰＣＩｅスイッチからの割り当て完了通知を受信し、割り当てを行ったＰＣＩデバイスのＩＤ、ポートの識別子、割り当て状態をＰＣＩスイッチテーブル２１６に設定し、サーバ管理テーブル２１５に上記グループ割り当て画面１５０１で指定したチェックボックス１５２１に対応するＰＣＩデバイスグループテーブル２１８のグループＩＤ７１１を設定する。そして、ＰＣＩデバイス割り当て機能２１２は、割り当てが完了したことを表示装置２２０に出力する。
【００９５】
以上の処理により、ＰＣＩデバイスの詳細な情報として、デバイスドライバ２１１に関する情報やファームウェアリビジョンを含めることで、ＰＣＩｅスイッチでＰＣＩデバイスをサーバ＃０、＃１に割り当てる際に、各サーバのＯＳの種類やバージョンに対応する多数のＰＣＩデバイスの中から最適なＰＣＩデバイスを容易に提供することができる。
【００９６】
これにより、ＰＣＩｅスイッチに多数のＰＣＩデバイスを接続している環境において、管理者は所望のＰＣＩデバイスを、ＰＣＩデバイスグループテーブル２１８のグループＩＤ７１１を選択するだけでサーバに割り当てることが可能となる。
【００９７】
図１４、図１５は、管理サーバ１０１のＰＣＩデバイス割り当て機能２１２の処理の詳細を示すフローチャートである。
【００９８】
図１４のステップ１３０１では、ＰＣＩデバイス割り当て機能２１２がＰＣＩデバイスグループテーブル２１８を参照し、ステップ１３０２で図１６に示したグループ割り当て画面１５０１を表示装置２２０に出力する。そして、管理者などの入力装置２３０の操作を受け付けて指定されたサーバ、ポート、検索条件を取得する。
【００９９】
次に、ステップ１３０３では、図１６のグループ割り当て画面１５０１の「ＯＫ」ボタンまたは「キャンセル」ボタンがクリックされるのを待ち、「ＯＫ」ボタンがクリックされればステップ１３０４に進む。「キャンセル」ボタンがクリックされればそのまま終了する。
【０１００】
ステップ１３０４では、ＰＣＩデバイスの割り当て処理を実行し、ステップ１３０５では割り当てに利用したグループＩＤ７１１をサーバ管理テーブル２１５に設定して一連の処理を完了する。
【０１０１】
図１５は、上記図１４のステップ１３０４で行われるＰＣＩデバイス割り当て処理の詳細を示すフローチャートである。
【０１０２】
ステップ１４１１では、ＰＣＩデバイス割り当て機能２１２が、上記ステップ１３０２で指定されたチェックボックス１５２１のエントリに対応するＰＣＩデバイスグループテーブル２１８からグループＩＤ７１１と検索条件を取得する。
【０１０３】
ステップ１４１２では、ＰＣＩデバイス割り当て機能２１２が、サーバ管理テーブル２１５を参照し、サーバ選択部１５０２で指定されたサーバと、ポート選択部１５０３で指定されたポートからＰＣＩデバイスを検索するＰＣＩｅスイッチの識別子を接続ＰＣＩスイッチＩＤ６１３から検索する。
【０１０４】
ステップ１４１３では、上記ステップ１４１２で取得した接続ＰＣＩスイッチＩＤ６１３のＰＣＩｅスイッチのＰＣＩデバイスから、上記ステップ１４１１で取得した検索条件に適合するＰＣＩデバイスを、ＰＣＩデバイステーブル２１７及びＰＣＩスイッチテーブル２１６から検索する。
【０１０５】
ステップ１４１４では、検索条件に一致したＰＣＩデバイスのうち、未割り当てのＰＣＩデバイスがあるか否かを判定する。未割り当てのＰＣＩデバイスが存在する場合には、ステップ１４１５に進む。未割り当てのＰＣＩデバイスが存在しない場合には、ステップ１４１６に進む。
【０１０６】
ステップ１４１６では、ステップ１４１３の検索結果のＰＣＩデバイスのうち、既に他のサーバに割り当て済みであるＰＣＩデバイスについてＰＣＩスイッチテーブル２１６を参照して、共有可否５１６が「可」のＰＣＩデバイスの有無を判定する。共有可否５１６が「可」のＰＣＩデバイスが存在する場合には、ステップ１４１７へ進んで、共有が可能なＰＣＩデバイスで割り当て可能なＰＣＩデバイスがあるか否かを判定する。割り当て可能なＰＣＩデバイスが存在する場合には、ステップ１４１８へ進んで、当該ＰＣＩデバイスを共有で割り当てるよう設定する。一方、共有可能なＰＣＩデバイスがない場合、または、割り当て可能なＰＣＩデバイスがない場合には、ステップ１４１９に進んで、割り当て可能なＰＣＩデバイスがないことを表示装置２２０に通知して処理を終了する。
【０１０７】
ステップ１４１５では、ＰＣＩデバイス割り当て機能２１２が、ステップ１４１４またはステップ１４１５で抽出したＰＣＩデバイスを、指定されたサーバに割り当てるように、接続ＰＣＩスイッチＩＤ６１３のＰＣＩｅスイッチに割り当て要求を送信する。
【０１０８】
その後、ステップ１４１ＢでＰＣＩｅスイッチから割り当て完了の通知を受信してから、ＰＣＩスイッチテーブル２１６を更新する。
【０１０９】
以上のように、本実施形態では、ＰＣＩｅスイッチに新たなＰＣＩデバイスが新たに追加された場合などでは、管理サーバ１０１とＰＣＩデバイスを一時的に接続するようＰＣＩｅスイッチに指令して、管理サーバ１０１に新たなＰＣＩデバイスを割り当てる。そして、管理サーバ１０１のＯＳ２１０が接続されたＰＣＩデバイスのデバイスドライバ２１１を読み込んで、ＰＣＩデバイス情報取得機能がＰＣＩデバイスの詳細な情報を取得して、ＰＣＩデバイステーブル２１７とＰＣＩデバイスグループテーブル２１８を更新しておく。そして、管理サーバ１０１と新たなＰＣＩデバイスの接続を切断し、元の状態に戻しておく。
【０１１０】
サーバにＰＣＩデバイスを割り当てる際には、ＰＣＩデバイス割り当て機能２１２がグループ割り当て画面１５０１を提供し、予めＰＣＩデバイスグループテーブル２１８に設定した検索条件を管理者に選択させることで、極めて容易にサーバが必要とするＰＣＩデバイスを割り当てることができるのである。
【０１１１】
＜第２実施形態＞
図１７は、本発明の第２の実施形態を示し、管理サーバ１０１のソフトウェア構成を示すブロック図である。本実施形態では、前記第１実施形態の管理サーバ１０１で仮想化技術を用いて複数種のゲストＯＳを実行し、各種のゲストＯＳでＰＣＩデバイスの詳細情報をそれぞれ取得するものである。その他の構成については、前記第１実施形態と同様である。
【０１１２】
本実施形態では、計算機システムではサーバ＃０、＃１毎に異なる種類のＯＳを実行でき、同一のＰＣＩデバイスであっても各ＯＳ毎に使用するデバイスドライバは異なる。このため、管理サーバ１０１では、計算機システムで実行予定のＯＳの種類を、ゲストＯＳ２２００、２３００として実行しておき、各ゲストＯＳ２２００、２３００上でＰＣＩデバイス情報取得機能を実行し、各ＯＳの種類毎にデバイスドライバの情報など詳細情報を取得する。そして、各ゲストＯＳ２２００、２３００は、それぞれ取得したＰＣＩデバイスの詳細情報を、ホストＯＳ２１００で実行するＰＣＩデバイス管理部２００のＰＣＩデバイステーブル２１７に格納する。これにより、計算機システムで利用可能なＯＳの種類に応じたＰＣＩデバイスの詳細情報を取得しておくことで、ＰＣＩデバイスの割り当てを効率よく行うことができる。
【０１１３】
図１７において、管理サーバ１０１では、図２に示したメモリ２０１上に仮想化ホストＯＳ２１００をロードしてＣＰＵ２０２が実行する。仮想化ホストＯＳ２１００上では、仮想化ゲストＯＳ２２００と、仮想化ゲストＯＳ２３００が実行される。仮想化ホストＯＳ２１００と、仮想化ゲストＯＳ２２００、仮想化ゲストＯＳ２３００は異なる種類のＯＳである。なお、仮想化技術としては、ＶＭＭ（Virtual Machine Manager）やハイパーバイザを適宜使用することができる。
【０１１４】
仮想化ホストＯＳ２１００では、前記第１実施形態と同様にＰＣＩデバイス管理部２００を実行し、ＰＣＩデバイスを一時的に管理サーバ１０１へ割り当てたときに、デバイスドライバ２１１０によりＰＣＩデバイスの詳細情報を前記第１実施形態と同様に取得する。
【０１１５】
仮想化ゲストＯＳ２２００、２３００では、ＰＣＩデバイス情報取得機能２２１３、２３１３を実行し、ＰＣＩデバイスを一時的に管理サーバ１０１へ割り当てたときに、それぞれのＯＳの種類に応じたデバイスドライバ２２１０、２３１０によってＰＣＩデバイスの詳細情報を前記第１実施形態と同様に取得する。そして、仮想化ゲストＯＳ２２００、２３００上のＰＣＩデバイス情報取得機能２２１３、２３１３は、取得したＰＣＩデバイスの詳細情報をホストＯＳ２１００上のＰＣＩデバイス情報取得機能２１３に通知する。仮想化ホストＯＳ２１００上のＰＣＩデバイス情報取得機能２１３は、ゲストＯＳ２２００、２３００から受け付けたＰＣＩデバイスの詳細情報をＰＣＩデバイステーブル２１７に格納する。
【０１１６】
図１８は、管理サーバ１０１で行われるＰＣＩデバイス情報取得機能の処理の一例を示すシーケンス図である。
【０１１７】
まず、ステップ１６３１では、ＰＣＩｅスイッチが前記第１実施形態と同様にしてＰＣＩデバイスの追加または変更を検知して、ＬＡＮスイッチ１０４を介して管理サーバ１０１に通知する。
【０１１８】
管理サーバ１０１は、ステップ１６２１でＰＣＩｅスイッチからＰＣＩデバイスの変更または追加の通知を受信し、ＰＣＩデバイスに変更が生じたことを検知する。
【０１１９】
ステップ１６２２では、管理サーバ１０１は、変更のあったＰＣＩデバイスの基本情報と接続位置をＰＣＩｅスイッチに対して要求する。基本情報としては、ＰＣＩデバイスＩＤ（デバイス番号）、カード種別、ベンダ名などである。接続位置は、下流ポートの識別子である。
【０１２０】
ステップ１６３２では、ＰＣＩｅスイッチのクロスバスイッチ制御部２００４が、管理サーバ１０１の要求を受信して、クロスバスイッチ２００６を介して変更が生じたＰＣＩデバイスにアクセスし、基本情報を取得する。基本情報の取得はＰＣＩバスプロトコルに基づいて取得する。そして、ＰＣＩｅスイッチは、取得した基本情報を管理サーバ１０１に送信する。
【０１２１】
ステップ１６２３では、基本情報を受信した管理サーバ１０１が、ＰＣＩｅスイッチに対して追加または変更が生じた下流ポートのＰＣＩデバイスを、管理サーバ１０１に割り当てるように要求する。
【０１２２】
ステップ１６３３では、ＰＣＩｅスイッチが管理サーバ１０１からの割り当て要求を受信し、割り当て対象のＰＣＩデバイスを管理サーバ１０１に割り当てる。ＰＣＩデバイス１２０を管理サーバ１０１に割り当てたＰＣＩｅスイッチは、割り当ての完了と、割り当ての内容を管理サーバ１０１に通知する。
【０１２３】
次に、ステップ１６２４では、管理サーバ１０１はＰＣＩデバイスの割り当ての完了通知と、ステップ１６２３で受信した基本情報に基づいて仮想化ホストＯＳ２１００のデバイスドライバ２１１をロードする。このとき、管理サーバ１０１は、ＯＳ２１００に該当するデバイスドライバ２１１０がない場合には、前記第１実施形態と同様にして管理者にデバイスドライバ２１１を要求する。
【０１２４】
次に、ステップ１６２５では、ホストＯＳ２１００上のＰＣＩデバイス情報取得機能２１３が、ゲストＯＳ２２００、２３００上のＰＣＩデバイス情報取得機能２２１３、２３１３に対して、管理サーバ１０１に割り当てられたＰＣＩデバイスの詳細情報の取得を指令する。
【０１２５】
ステップ１６１１では、ホストＯＳ２１００上のＰＣＩデバイス情報取得機能２１３から指令を受けたゲストＯＳ２２００、２３００は、それぞれのデバイスドライバ２２１０、２３１０をロードして、ＰＣＩデバイス情報取得機能２２１３、２３１３が、それぞれＰＣＩデバイスの詳細情報を取得する。
【０１２６】
ゲストＯＳ２２００、２３００上のＰＣＩデバイス情報取得機能２２１３、２３１３は、ＰＣＩデバイスの詳細情報を取得した後に、ホストＯＳ２１００上のＰＣＩデバイス情報取得機能２１３に取得した詳細情報を通知する。
【０１２７】
ステップ１６２６では、ホストＯＳ２１００上のＰＣＩデバイス情報取得機能２１３が、ゲストＯＳ２２００、２３００のＰＣＩデバイス情報取得機能２２１３、２３１３からそれぞれＰＣＩデバイスの詳細情報を受信する。
【０１２８】
ステップ１６２７では、ホストＯＳ２１００上のＰＣＩデバイス情報取得機能２１３が、自ＯＳ２１００のデバイスドライバ２１１０を介して取得したＰＣＩデバイスの詳細情報と、ゲストＯＳ２２００、２３００のＰＣＩデバイス情報取得機能２２１３、２３１３からそれぞれ取得した詳細情報をＰＣＩデバイステーブル２１７に格納する。
【０１２９】
次に、ステップ１６２８では、追加または変更が生じたＰＣＩデバイスの詳細な情報の取得が完了したので、管理サーバ１０１はＰＣＩｅスイッチに対して、現在管理サーバ１０１が接続しているＰＣＩデバイスの割り当てを解除する要求を送信する。
【０１３０】
ステップ１６３４では、ＰＣＩｅスイッチは管理サーバ１０１の割り当て解除要求を受信し、管理サーバ１０１とＰＣＩデバイスの接続を前記第１実施形態と同様にして解除する。ＰＣＩｅスイッチは、管理サーバ１０１とＰＣＩデバイスの接続の解除が完了すると、完了の通知を管理サーバ１０１に送信する。
【０１３１】
ステップ１６２９では、管理サーバ１０１がＰＣＩｅスイッチから接続解除の完了通知を受信し、ＰＣＩデバイスグループテーブル２１８を前記第１実施形態と同様に更新して、一連の処理を終了する。
【０１３２】
以上の処理により、ＰＣＩｅスイッチにＰＣＩデバイスが加えられたり変更（ＰＣＩデバイス取り外しや、ＰＣＩｅスイッチの追加または削除）が生じると、ＰＣＩｅスイッチからの通知により管理サーバ１０１のＰＣＩデバイス情報取得機能２１３が起動して、管理サーバ１０１と変更が生じたＰＣＩデバイスを一時的に接続する。
【０１３３】
管理サーバ１０１では、ホストＯＳ２１００上のＰＣＩデバイス情報取得機能２１３と、ゲストＯＳ２２００、２３００のＰＣＩデバイス情報取得機能２２１３、２３１３がそれぞれＰＣＩデバイスの詳細情報を取得することで、ＯＳの種類に応じた詳細情報を取得することができる。
【０１３４】
＜第３実施形態＞
図１９は、本願発明の第３の実施形態を示し、管理サーバ１０１のＰＣＩデバイス割り当て機能２１２の処理の一例を示すフローチャートである。
【０１３５】
本第３実施形態では、既存のサーバが利用中のＰＣＩデバイスの構成を取得し、これと同じ条件でＰＣＩデバイスのグループを作成するようにしたもので、その他の構成は前記第１実施形態と同様である。
【０１３６】
図１９において、ステップ１８０１では、図２０に示すユーザインターフェース（グループ抽出画面１９０１）を表示装置２２０に出力し、管理サーバ１０１を操作する管理者などから、ＰＣＩデバイスの抽出元のサーバ１９１０と、抽出したＰＣＩデバイスの条件を適用する適用先サーバ１９１１を受け付ける。そして、ＰＣＩデバイス割り当て機能２１２は、サーバ管理テーブル２１５を参照して、抽出元サーバ１９１０に接続されたＰＣＩデバイスの情報（適用グループＩＤ等）を取得する。
【０１３７】
ステップ１８０２では、ＰＣＩデバイス割り当て機能２１２がＰＣＩデバイスグループテーブル２１８を参照し、ステップ１８０１で取得したＰＣＩデバイスの適用グループＩＤに対応する検索条件を取得する。
【０１３８】
ステップ１８０３では、ステップ１８０１で受け付けた抽出元サーバ１９１０と抽出先サーバ１９１１を表示する。そして、抽出元サーバ１９１０と同一の適用グループＩＤ７１１で抽出先サーバ１９１１に割り当て可能なＰＣＩデバイスをＰＣＩスイッチテーブル２１６から抽出する。このとき、抽出元サーバ１９１０のポート数が抽出先サーバ１９１１のポート数を超えない範囲で、ＰＣＩデバイスを抽出する。
【０１３９】
ステップ１８０４では、ステップ１８０３の検索結果を図２０の適用グループ１９２０に表示する。図２０は、グループ抽出画面の画面イメージを示す。
【０１４０】
次に、ステップ１８０５では、図２０のグループ抽出画面１９０１の「ＯＫ」ボタンまたは「キャンセル」ボタンがクリックされるのを待ち、「ＯＫ」ボタンがクリックされればステップ１８０６に進む。「キャンセル」ボタンがクリックされればそのまま終了する。
【０１４１】
ステップ１８０６では、図２０のＰＣＩデバイスのグループのうち選択されたＰＣＩデバイスの割り当て条件（適用グループＩＤ７１１）でサーバ管理テーブル２１５の適用先サーバ１９１１のエントリを更新する。
【０１４２】
ステップ１８０７では、図２０のＰＣＩデバイスのグループで選択されたグループを適用先サーバ１９１１に割り当てる処理を実行する。この処理は、前記第１実施形態との図１５と同様である。
【０１４３】
上記処理によって、既存のサーバで動作しているＰＣＩデバイスと同一のグループ（ＰＣＩデバイスの構成）を、他のサーバにも適用することができる。
【０１４４】
なお、上記各実施形態では、管理サーバ１０１でＰＣＩスイッチ管理部２００を実行した例を示したが、複数のサーバ＃０、＃１のうちのいずれかひとつでＰＣＩスイッチ管理部２００を実行してもよい。
【産業上の利用可能性】
【０１４５】
以上のように、本発明はＰＣＩｅスイッチを備えた計算機システムに適用することができ、特にＰＣＩデバイスの管理システム、管理方法、管理プログラムに適用することができる。
【符号の説明】
【０１４６】
１０１  管理サーバ
１０２−１〜１０２−２  サーバ
１０３−１〜１０３−２  ＰＣＩｅスイッチ
１０４  ＬＡＮスイッチ
２００  ＰＣＩデバイス管理部
２１０  ＯＳ
２１１  デバイスドライバ
２１２  ＰＣＩデバイス割り当て機能
２１３  ＰＣＩデバイス情報取得機能
２１４  グルーピング機能
２１５  サーバ管理テーブル
２１６  ＰＣＩスイッチテーブル
２１７  ＰＣＩデバイステーブル
２１８  ＰＣＩデバイスグループテーブル
【図１】
2011065551.tif 000003
【図２】
2011065551.tif 000004
【図３】
2011065551.tif 000005
【図４】
2011065551.tif 000006
【図５】
2011065551.tif 000007
【図６】
2011065551.tif 000008
【図７】
2011065551.tif 000009
【図８】
2011065551.tif 000010
【図９】
2011065551.tif 000011
【図１０】
2011065551.tif 000012
【図１１】
2011065551.tif 000013
【図１２】
2011065551.tif 000014
【図１３】
2011065551.tif 000015
【図１４】
2011065551.tif 000016
【図１５】
2011065551.tif 000017
【図１７】
2011065551.tif 000018
【図１８】
2011065551.tif 000019
【図１９】
2011065551.tif 000020
【図１６】
2011065551.tif 000021
【図２０】
2011065551.tif 000022