(57)【要約】【課題】論理区画の再配置において、論理区画に割り当てられたＩＯ構成の引継ぎを可能とし、ＩＯアクセスを正常に稼動させる。【解決手段】計算機システムは、ＩＯブリッジを有するサーバと、サーバのＩＯブリッジとバスを介して接続する第一のＩＯブリッジ及び複数のＩＯデバイスとバスを介して接続する複数の第二のＩＯブリッジを有するスイッチと、複数の第二のＩＯブリッジに互いに異なるＰＣＩバス番号を固定的に割り当てるためのバス割当管理手段とを有する。【選択図】図１
2010039760.tif 000002
【特許請求の範囲】
【請求項１】
ＩＯブリッジを有するサーバと、
該サーバの該ＩＯブリッジとバスを介して接続する第一のＩＯブリッジ及び複数のＩＯデバイスとバスを介して接続する複数の第二のＩＯブリッジを有するスイッチと、
該複数の第二のＩＯブリッジに互いに異なるＰＣＩバス番号を固定的に割り当てるためのバス割当管理手段とを有することを特徴とする計算機システム。
【請求項２】
該バス割当管理手段は、該第二のＩＯブリッジに該ＰＣＩバス番号を固定的に割り当てるための情報を登録するバス割当管理テーブルであることを特徴とする請求項１記載の計算機システム。
【請求項３】
該バス割当管理テーブルを参照して、該スイッチに仮想スイッチを形成することを特徴とする請求項１記載の計算機システム。
【請求項４】
該仮想スイッチは、バスを介して接続された該第一のＩＯブリッジと該第二のＩＯブリッジとに基づき設定された仮想ブリッジにより、該サーバと該ＩＯデバイスとを接続することを特徴とする請求項３記載の計算機システム。
【請求項５】
該仮想スイッチに設定される仮想ブリッジを管理する仮想ブリッジ管理テーブルを有することを特徴とする請求項４記載の計算機システム。
【請求項６】
該バス割当管理テーブル及び仮想ブリッジ管理テーブルの内容を設定するためのＰＣＩマネージャと、
該バス割当管理テーブル及び仮想ブリッジ管理テーブルを格納するレジスタとを有することを特徴とする請求項５記載の計算機システム。
【請求項７】
該レジスタは、該スイッチ内に形成されることを特徴とする請求項６記載の計算機システム。
【請求項８】
前記サーバは物理サーバであり、
該物理サーバは、１又は複数の論理区画と、該論理区画を設定して管理するハイパバイザと有することを特徴とする請求項１記載の計算機システム。
【請求項９】
該スイッチ及び該複数の物理サーバに接続される管理装置を有し、
該管理装置は、該ＰＣＩマネージャを有することを特徴とする請求項６記載の計算機システム。
【請求項１０】
該物理サーバが複数あり、ある物理サーバの該論理区画を他の物理サーバに動的再配置する場合、前記バス割当管理テーブルを更新せず、前記仮想ブリッジ管理テーブルを更新し、
該他の物理サーバに再配置された前記論理区間は、再配置前に使用していた前記ＰＣＩバス番号を引き継いでＩＯデバイスを使用することを特徴とする請求項８記載の計算機システム。
【請求項１１】
該スイッチにおける該ＩＯブリッジが接続されるポートを管理するポート管理テーブルと、
該スイッチ内の該仮想スイッチを管理するために、対象となるスイッチを識別するスイッチ番号と、該スイッチ内に形成される仮想スイッチの番号を示す仮想スイッチ番号と、該仮想スイッチが有効であるかを示す情報と、仮想スイッチが有効の場合、該仮想スイッチを形成する仮想ブリッジの開始番号と、該仮想ブリッジのエントリ数を示すエントリ数の各情報を登録する仮想スイッチ管理テーブルと、
対象のスイッチを識別するスイッチ番号と、該スイッチ内の仮想ブリッジ番号の仮想ブリッジが有効であるかを示す情報と、該仮想ブリッジが有効の場合、その方向を示す方向情報と、ポート番号のＩＯブリッジにマップされているかを示すマップ情報と、ポートを識別するポート番号、の各情報を登録する該仮想ブリッジ管理テーブルと、
該スイッチを識別するスイッチ番号ごとに、該スイッチ内の仮想ブリッジに割り当てられる、上流のＰＣＩバス番号と、下流のＰＣＩバス番号と、該ＩＯブリッジから接続されている最下流のＰＣＩバス番号に関する情報を登録する該バス割当管理テーブルとを有し、
該動的再配置が行われる時に、該仮想スイッチ管理テーブルの内容、該仮想ブリッジ管理テーブルの内容を更新し、
かつ、ＩＯデバイスが追加又は削除された時に、該ポート管理テーブルの内容を更新することを特徴とする請求項１０記載の計算機システム。
【請求項１２】
ＭＭＩＯアドレスは、該物理サーバのメモリにマップされるＭＭＩＯ領域のうち、該ＩＯデバイスに割り当てられた範囲を示すものであり、
該複数のＩＯデバイスに対して固定的に割り当てられることを特徴とする請求項２記載の計算機システム。
【請求項１３】
ＩＯブリッジを有するサーバと、該サーバの該ＩＯブリッジとバスを介して接続する第一のＩＯブリッジ及び複数のＩＯデバイスとバスを介して接続する複数の第二のＩＯブリッジを有するスイッチとを含む計算機システムにおけるＩＯリソースＩＤ割当方法であって、
該ＩＯリソースＩＤとしてＰＣＩバス番号を割り当てるとき、
該第二のＩＯブリッジにＰＣＩバス番号を固定的に割り当てるバス割当管理ステップと、
前記バス割当管理ステップで割り当てたＰＣＩバス番号と第二のＩＯブリッジとの関係を参照して、該サーバと該ＩＯデバイスとを接続する仮想スイッチを形成するステップとを有することを特徴とするＩＯリソースＩＤ割当方法。
【請求項１４】
該バス割当管理ステップでは、前記ＰＣＩバス番号を固定的に割り当てるための情報を、バス割当管理テーブルに登録して管理することを特徴とする請求項１３のバス割当方法。
【請求項１５】
前記バス割当管理テーブルの内容を、ＰＣＩマネージャから設定することを特徴とする請求項１３のＩＯリソースＩＤ割当方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバを統合した計算機システム及び計算機システムにおけるバス割当方法に係り、特に、物理サーバ間での論理サーバの移動においてＩＯデバイスへのアクセスを正常に稼動させるためのバス割当てに関する。
【背景技術】
【０００２】
計算機システムの性能向上に伴い、複数のサーバに分散させていた処理を、一つのサーバに集約してコストを削減する手法が実用化している。サーバの集約としてはサーバ分割方式が知られている。これは、分割した区画の一つに対して一つのオペレーティングシステムを割り当てることで、一台のサーバ上で複数のオペレーティングシステムを稼動させるものである。
【０００３】
サーバ分割方式には、プロセッサやメモリを含むノード単位の物理的な計算機資源に対してオペレーティングシステムを割り当てる物理分割方式と、ハイパバイザと呼ばれるファームウェアによって、物理的なプロセッサやメモリを仮想化して計算機中に任意の数の論理的な区画（論理プロセッサ）を生成する論理分割方式がある。
【０００４】
物理分割方式は、オペレーティングシステムが物理的な計算機資源を専有できるため高い性能を出すことができる。しかし、物理区画を増やすには物理的な計算機資源も増やす必要があり、物理区画の数には物理的な制限がある。
【０００５】
論理分割方式は、ハイパバイザが提供する論理プロセッサ上で各オペレーティングシステム（ゲストＯＳ）が実行される。また、ハイパバイザによって物理プロセッサに複数の論理プロセッサをマッピングすることで、ノードよりも細かい単位に区画を分割できる。これは、複数の論理区画が一つの物理プロセッサを時分割で切り替えながら実行することができ、物理プロセッサの数よりも多くの論理区画を生成して同時に実行することが可能である。
【０００６】
この物理分割方式と論理分割方式を組み合わせた計算機システムにおいて更に物理的な計算機資源を有効に活用する方法として、論理区画間で使用するＩＯスロットを時分割で切り替えることでパフォーマンスの低下を引き起こさずにＩＯスロットを論理区画間で共有する方法（特許文献１）や、ユーザのポリシーに応じてある物理区画上に配置された論理区画を異なる物理区画へと再配置する方法（特許文献２）、複数のサーバが複数の計算機資源をスイッチを介して共有する方法（非特許文献１）などが知られている。
【０００７】
また、ハイパバイザを用いた論理分割方式には仮想化ソフトウェアのみを用いた方法と、一部の処理に対してハードウェアを用いる方法とがある。仮想化ソフトウェアを用いた方法は、ＩＯアクセス時に必要な論理的なＩＯリソースＩＤ（ＩＯデバイスにアクセスするために必要な、ＰＣＩバス番号、ＭＭＩＯアドレス、ＩＯアドレス、Configurationアドレスのことを指す）から物理的なＩＯリソースＩＤへの変換を仮想化ソフトウェアが行うため、ＩＯ仮想化に対して柔軟性は高いが、ソフトウェア処理によるオーバーヘッドのため性能が低下してしまう。
【０００８】
一方、ハードウェアを用いた方法は、ＩＯアクセス時に必要な論理的なＩＯリソースＩＤから物理的なＩＯリソースＩＤへの変換をハードウェアで行うことで、ＩＯデバイスへのアクセスを透過的に行えるため、仮想化ソフトウェアのみを用いた方法と比べて性能は高いが、ＩＯ仮想化に対しての柔軟性は低くなる。
【０００９】
【特許文献１】特開２００５−１２２６４０公報
【特許文献２】特開２００６−２４４４８１公報
【非特許文献１】ＰＣＩ−ＳＩＧ、“Multi-Root I/O Virtualization and Sharing Specification Revision 0.9”、[online]、２００７年１１月、インターネット＜ＵＲＬ：http://www.pcisig.com/specifications/iov/multi-root/＞
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述したように、ハードウェアを用いた仮想化方法では、ＩＯデバイスを透過的にゲストＯＳに提供するため、仮想化ソフトウェアを用いた方法と比べて性能は高いが、ＩＯ仮想化に対する柔軟性は低くなる。これは、特許文献２に記載の論理区画の再配置などを行った際に、ゲストＯＳが使用するＩＯデバイスの論理的なＩＯリソースＩＤと物理的なＩＯリソースＩＤとの間に不一致を起こしてしまうことによる。
【００１１】
例えば、ハードウェアによる仮想化方法を用いた計算機システムにおいてホットプラグ（Ｈｏｔ Ｐｌｕｇ）を行った場合は、新たなＩＯデバイスをホットプラグすることで各ＩＯデバイスのＩＯリソースＩＤの再割当が行われ、既に使用されているＩＯデバイスのＩＯリソースＩＤが変化する可能性がある。この場合、ゲストＯＳは元々使用していたＩＯデバイスへのアクセスのつもりで変更前のＩＯリソースＩＤを使用し、異なるＩＯデバイスへアクセスしてしまう可能性がある。最悪の場合、リブート時にブートデバイスのＩＯリソースＩＤが変化してしまうので、起動できなくなるといった恐れが生じる。
【００１２】
また、同様の計算機システムにおいて論理区画の動的再配置を行った場合は、再配置前と再配置後においてゲストＯＳから見た計算機システムのＩＯ構成が異なる可能性がある。この場合は、ゲストＯＳが再配置前に使用していたＩＯリソースＩＤと、再配置先で使用されている他のデバイスのＩＯリソースＩＤとで競合が発生する。
【００１３】
本発明の目的は、仮想計算機システムにおいてゲストＯＳが使用するＩＯデバイスの論理的なＩＯリソースＩＤと物理的なＩＯリソースＩＤとの間に不一致を起こさずにＩＯ構成の引継ぎを実現し、論理区画の再配置を行った場合のＩＯアクセスを正常に稼動させることにある。
【課題を解決するための手段】
【００１４】
上述の問題を解決するために、本発明に係る計算機システムは、ＩＯブリッジを有するサーバと、該サーバの該ＩＯブリッジとバスを介して接続する第一のＩＯブリッジ及び複数のＩＯデバイスとバスを介して接続する複数の第二のＩＯブリッジを有するスイッチと、該複数の第二のＩＯブリッジに互いに異なるＰＣＩバス番号を固定的に割り当てるためのバス割当管理手段とを有することを特徴とする。
【００１５】
また、本発明に係るＩＯリソースＩＤ割当方法では、ＩＯブリッジを有するサーバと、該サーバの該ＩＯブリッジとバスを介して接続する第一のＩＯブリッジ及び複数のＩＯデバイスとバスを介して接続する複数の第二のＩＯブリッジを有するスイッチとを含む計算機システムにおけるＩＯリソースＩＤ割当方法であって、該ＩＯリソースＩＤとしてＰＣＩバス番号を割り当てるとき、該第二のＩＯブリッジにＰＣＩバス番号を固定的に割り当てるバス割当管理ステップと、前記バス割当管理ステップで割り当てたＰＣＩバス番号と第二のＩＯブリッジとの関係を参照して、該サーバと該ＩＯデバイスとを接続する仮想スイッチを形成するステップとを有することを特徴とする。
【００１６】
好ましい例では、前記バス割当管理手段は、前記スイッチ内のＩＯブリッジに、前記ＰＣＩバス番号を固定的に割り当てるための情報を登録するバス割当管理テーブルとして構成される。
【００１７】
前記バス割当管理テーブルは、好ましくは、前記スイッチを識別するスイッチ番号ごとに、該スイッチ内の仮想ブリッジに割り当てられる、上流のＰＣＩバス番号と、下流のＰＣＩバス番号と、該ＩＯブリッジから接続されている最下流のＰＣＩバス番号に関する情報を登録する。
【００１８】
好ましい例では、計算機システムは、前記バス割当管理テーブルの内容を設定するためのＰＣＩマネージャと、前記バス割当管理テーブルを格納する、前記スイッチに用意されたレジスタと、を有する。
【発明の効果】
【００１９】
特に、本発明に係る計算機システムは、上述の構成に加え、該物理サーバが複数あり、ある物理サーバの該論理区画を他の物理サーバに動的再配置する場合、前記バス割当管理テーブルを更新せず、前記仮想ブリッジ管理テーブルを更新し、該他の物理サーバに再配置された前記論理区間は、再配置前に使用していた前記ＰＣＩバス番号を引き継いでＩＯデバイスを使用することが望ましい。
【００２０】
以上の構成により、本発明によれば、ＩＯデバイスへの透過的アクセスによる性能や信頼性の向上、及び動的再配置による柔軟性を実現することできる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して本発明の実施例について説明する。
[実施例１]
図1は、一実施例による計算機システム構成を示す。
この計算機システムは、複数の物理サーバ１０１〜１０３と、複数のＩＯデバイス５０１‐１、５０１‐３〜５０１‐６、５０２‐１〜５０２‐５とが複数のスイッチ３０１、３０２に接続して構成される。更に、サービスプロセッサ（ＳＶＰ）４００が物理サーバ１０１〜１０３とスイッチ３０１，３０２に通信可能に接続される。ＳＶＰ４００には、仮想スイッチ機構３１１，３１２の設定や変更等を管理するためのＰＣＩマネージャ４１０が実装され、スイッチ３０１、３０２に通信可能に接続される。
【００２２】
なお、この例では、スイッチは一段構成であるが、多段構成とすることも可能である。また、ＰＣＩマネージャ４１０は必ずしもＳＶＰ４００内にある必要はなく、ＳＶＰ４００外に配置して、ＳＶＰ４００と通信可能に接続することもできる。
【００２３】
複数の物理サーバに関して、物理サーバ１０１は、ハイパバイザ１２１によって複数（この例では２つ）の論理区画に分割され、それぞれゲストＯＳ１１１Ａ、１１１Ｂを有する。ノースブリッジ１３１は複数のＩＯブリッジ１４１Ａ、１４１Ｂから構成され、バス２０１Ａ、２０１Ｂによって、スイッチ３０１、３０２に接続される。また、物理サーバ１０２と１０３は同様の構成を成し、それぞれ１つのゲストＯＳ１１２Ａ，１１３Ａと、複数のブリッジ１４２Ａ，１４２Ｂ，１４３Ａ，１４３Ｂを介してスイッチ３０１，３０２に接続されるノースブリッジ１３２，１３３と、を有して構成される。
【００２４】
スイッチ３０１は、バス２０１Ａ等を介して物理サーバ１０１〜１０３に接続される複数の第一のＩＯブリッジ３２１Ａ‐１〜３２１Ａ‐３と、バス２１１を介してＩＯデバイス５０１に接続される第二のＩＯブリッジ３２１Ｂ‐１〜３２１Ｂ‐６と、ＳＶＰ４００のＰＣＩマネージャ４１０に接続される管理ポート３３１Ａ、スイッチ３０２の管理ポート３３２Ａに接続される管理ポート３３１Ｂと、レジスタ３４１と、仮想スイッチ機構３１１と、を有する。
【００２５】
なお、計算機システムにおいて、複数のＩＯデバイス５０１−１〜５０１−６は、スイッチ３０１のスロット(図示せず）を介して第二のＩＯブリッジ３２１Ｂ‐１〜３２１Ｂ‐６に接続されている。本発明における第二のＩＯブリッジ３２１Ｂ‐１〜３２１Ｂ‐６は、いわゆるスロット位置に対応する。
【００２６】
仮想スイッチ機構３１１は、ＰＣＩマネージャ４１０から管理ポート３３１Ａを介して設定或いは変更されて、仮想スイッチを形成する。レジスタ３４１は、ポート管理テーブル６００（後述する）を格納する。
【００２７】
スイッチ３０２は、ＳＶＰ４００に直接接続されないで、管理ポート３３２Ａを介してスイッチ３０１に接続される以外は、基本的にスイッチ３０１と同様の構成を成している。なお、スイッチ３０１と３０２は、それらに接続されるＩＯデバイスの数や種類が異なることがある。
【００２８】
図２はポート管理テーブルの構成例を示す。ポート管理テーブル６００はスイッチのポートを管理するためのテーブルであり、各スイッチ３０１，３０２のレジスタ３４１，３４２に格納される。ポート管理テーブル６００は、スイッチ６０１内のポート番号６０２、及びそのポート番号の第一のＩＯブリッジ及び第二のＩＯブリッジが接続されている方向６０３、接続先の種別６０４、リンク先６０５の情報を登録する。なお、この管理テーブルの内容はＰＣＩマネージャ４１０から設定される。
【００２９】
例えば、スイッチ３０２のポート番号：ブリッジ３２２Ａ−１は、その接続がＵＰ（上流方向）であり、接続先の種別はホストとしての物理サーバ１０１、リンク先は物理サーバ１０１のブリッジ１４１Ｂであることを示している。
【００３０】
次に、図３を参照して、仮想スイッチ機構３１１等によって形成される仮想スイッチについて説明する。
図示の例では、仮想スイッチ機構３１１及び３１２によって、それぞれ３つの仮想スイッチが形成される。スイッチ３０１には、仮想スイッチ３５１−１、３５１−２，３５１−３が形成され、スイッチ３０２には、仮想スイッチ３５２−１、３５２−２，３５２−３が形成される。
【００３１】
例えば、仮想スイッチ３５１−１では、ホストを接続したブリッジ３２１Ａ−１に、ＩＯデバイス５０１−１、５０１−３を接続したブリッジ３２１Ｂ−１，３２１Ｂ−３を使用して構成される。ブリッジ３２１Ｂ−２は使用されていない。
【００３２】
この仮想スイッチは、管理者がＳＶＰ４００を操作することでＰＣＩマネージャ４１０が実行され、仮想スイッチ管理テーブル６１０（図４）及び仮想ブリッジ管理テーブル６２０（図５）の内容を設定することで形成される。
【００３３】
図４は仮想スイッチ管理テーブル６１０の構成例を示す。仮想スイッチ管理テーブル６１０は、スイッチ内の仮想スイッチを管理するためのテーブルであり、各スイッチ内のレジスタ３４１，３４２に格納される。
【００３４】
この仮想スイッチ管理テーブル６１０は、対象となるスイッチを識別するスイッチ番号６１１と、スイッチ６１１内に形成される仮想スイッチの番号を示す仮想スイッチ番号６１２と、当該仮想スイッチが有効であるかを示す有効フィールド６１３と、仮想スイッチが有効の場合（Yes）、当該仮想スイッチを形成する仮想ブリッジの開始番号６１４と、仮想ブリッジのエントリ数を示すエントリ数６１５、の各情報を登録する。
【００３５】
例えば、スイッチ３０１には３つの仮想スイッチ（ＶＳ＃１〜３）が設定され、全てが有効（Yes）、各仮想スイッチＶＳ＃１〜３の仮想ブリッジ開始番号はＶＢ＃１，８，１５である。各仮想スイッチＶＳ＃１〜３の各エントリは、３，３，２個である。
【００３６】
図５は、仮想ブリッジ管理テーブル６２０の構成例を示す。仮想ブリッジ管理テーブル６２０は、仮想スイッチを形成する仮想ブリッジを管理するためのテーブルであり、各スイッチ内のレジスタ３４１，３４２に格納される。
【００３７】
この仮想ブリッジ管理テーブル６２０は、対象のスイッチを識別するスイッチ番号６２１と、当該スイッチ内の仮想ブリッジ番号６２２の仮想ブリッジが有効であるかを示す有効フィールド６２３と、仮想ブリッジが有効（Yes）の場合、その方向を示す方向６２４と、ポート番号６２６のＩＯブリッジにマップされているかを示すマップフィールド６２５と、ポートを識別するポート番号６２６と、マップされている場合、その仮想階層の番号を示す仮想階層番号６２７、の各情報を登録する。
【００３８】
例えばスイッチ３０１には、ＶＢ＃１〜２１までの合計２１個の仮想ブリッジ番号が付与され、全て有効（Yes）状態である。２１個の仮想ブリッジは３つの仮想スイッチ（ＶＳ＃１〜３）に対応して、それぞれ７個ずつに分けられている。仮想スイッチＶＳ＃１に対応して開始ＶＢ＃は「１」、仮想スイッチＶＳ＃２に対応して開始ＶＢ＃は「８」、仮想スイッチＶＳ＃３に対応して開始ＶＢ＃は「１５」の如きである。例えば、仮想スイッチＶＳ＃１において、ＶＢ＃１がＵＰ方向にポート＃３２１Ａ−１にマッピングされ、ＶＢ＃２がＤＯＷＮ方向にポート＃３２１Ｂ−１にマッピングされ、ＶＢ＃４がＤＯＷＮ方向にポート＃３２１Ｂ−３にマッピングされている。他のマップは「Ｎｏ」である。
【００３９】
よって、仮想スイッチＶＳ＃１では有効エントリが３つとなる。同様にして、仮想スイッチＶＳ＃２では、有効エントリがＶＢ＃８，ＶＢ＃１２，ＶＢ＃１３の３つであり、仮想スイッチＶＳ＃３では有効エントリがＶＢ＃１５，ＶＢ＃２１の２つであることが分かる。
【００４０】
図６はバスの割当管理テーブル６３０の構成例を示す。バスの割当管理テーブル６３０は、ＩＯリソースＩＤを固定的に割り当てるために必要な情報を登録するものであり、各スイッチ３０１、３０２内のレジスタ３４１、３４２に格納される。割当管理テーブル６３０の内容は、ＳＶＰ４００のＰＣＩマネージャ４１０によって設定される。例えば、このバス割当管理テーブル６３０は、実際にＩＯリソースＩＤを割り当てるＥＦＩ／ＢＩＯＳにスイッチ３０１、３０２内のレジスタ３４１、３４２を介して直接伝える方法で実現される。
【００４１】
バス割当管理テーブル６３０は、スイッチを識別するスイッチ番号６３１ごとに、当該スイッチ内の仮想ブリッジ番号６３２の仮想ブリッジに割り当てられる、上流のＰＣＩバス番号（Primary Bus Number）６３３と、下流のＰＣＩバス番号（Secondary Bus Number）６３４と、そのＩＯブリッジから接続されている最下流のＰＣＩバス番号（Subordinate Bus Number）６３５の各情報を登録する。
【００４２】
図７はバスの割当管理テーブル６３０を基にＰＣＩバス番号を固定的に割り当てた例を示す。ＩＯブリッジ６４１はノースブリッジを構成するＩＯブリッジを示し、Ｂｕｓ＃６４２はＩＯブリッジ６４１とＩＯブリッジ６４３との間のバスのＰＣＩバス番号を示す。ＩＯブリッジ６４３はスイッチ内の第一のＩＯブリッジを、ＶＢ＃６４４はＩＯブリッジ６４３の取りうる仮想ブリッジ番号を示す。Ｂｕｓ＃６４５はＩＯブリッジ６４３とＩＯブリッジ６４６との間のバスのＰＣＩバス番号を示し、ＩＯブリッジ６４６はスイッチ内の第二のＩＯブリッジを、ＶＢ＃６４７はＩＯブリッジ６４６の取りうる仮想ブリッジ番号を示す。Ｂｕｓ＃６４８はＩＯブリッジ６４６＃とＩＯデバイス６４９との間のバスのＰＣＩバス番号を示し、ＩＯデバイス６４９はスイッチに接続されるＩＯデバイスを示す。
【００４３】
図７より、ＩＯブリッジとＩＯブリッジ、ＩＯブリッジとＩＯデバイスを接続するバスのＰＣＩバス番号が分かり、各バスに重複なく固定的にＰＣＩバス番号が割り当てられていることが分かる。
【００４４】
次に、実施例１の動作として、ＩＯデバイスのＨｏｔ Ｐｌｕｇ動作について説明する。図１に示す計算機システムの初期構成とし、初期構成における各管理テーブルは図２、図４、図５で示したものを用いる。図３の仮想スイッチ３５１‐１は、図４の仮想スイッチ番号６１２の１番にあたり、図５の仮想ブリッジ番号６２２の１番、２番、４番の仮想ブリッジから成る。そのため、仮想ブリッジは図３のスイッチ３０１内の第一のＩＯブリッジ３２１Ａ‐１、３２１Ｂ‐１、３２１Ｂ‐３に割り当てられ、物理サーバ１０１のゲストＯＳ１１１Ａ、１１１ＢはＩＯデバイス５０１‐１、５０１‐３を透過的に使用可能である。なお、スイッチ３０２内の仮想スイッチ３５２‐１についても図４，図５を基に形成され、図３の物理サーバ１０２、１０３についても同様にそれぞれの仮想スイッチが形成される。
【００４５】
まず、本発明を適用しない場合のＨｏｔ Ｐｌｕｇ動作の問題点について説明する。本実施例の計算機システムの初期構成では、ＥＦＩ／ＢＩＯＳは図３のノースブリッジ１３１内のＩＯブリッジ１４１Ａから接続されている第一のＩＯブリッジ３２１Ａ‐１、３２１Ｂ‐１、３２１Ｂ‐３に対してＩＯリソースＩＤを順番に割り当てていく。そのため、物理サーバ１０１からのＰＣＩバス番号の割り当てを例に取った場合、バス２０１ＡをＰＣＩバス番号１番、仮想スイッチ３５１‐１をＰＣＩバス番号２番、バス２１１‐１をＰＣＩバス番号３番、バス２１１‐３をＰＣＩバス番号４番と割り当てる。
【００４６】
この状態で、図８に示すように、計算機システムにおいてＩＯデバイス５０１‐２をＨｏｔ Ｐｌｕｇする。ここで、ＩＯデバイス５０１‐２は物理サーバ１０１内のノースブリッジ１３１のＩＯブリッジ１４１Ａに追加するものとする。
【００４７】
これにより、ポート管理テーブル６００、仮想スイッチ管理テーブル６１０、及び仮想ブリッジ管理テーブル６２０は、図９〜図１１のように更新される。即ち、ポート管理テーブル６００のポート＃３２１Ｂ−２には、リンク先５０１−２のデバイスがＤＯＷＮ方向に接続される。また、仮想スイッチ管理テーブル６１０は、ＶＳ＃１のエントリ数が１つ増えて、４つになる。仮想ブリッジ管理テーブル６２０はＶＢ＃３のＤＯＷＮ方向が有効となり、ポート＃３２１Ｂ−２が追加される。
【００４８】
その結果、仮想スイッチは、図１２に示すように、仮想スイッチ３５１‐１に追加された構成となる。
【００４９】
図１２の仮想スイッチにおいて、新しいＩＯデバイス５０１‐２がＨｏｔ Ｐｌｕｇされたことにより、ＩＯリソースＩＤの再割り当てが行われ、バス２０１ＡをＰＣＩバス番号１番、仮想スイッチ３５１‐１をＰＣＩバス番号２番、バス２１１‐１をＰＣＩバス番号３番、バス２１１‐２をＰＣＩバス番号４番、バス２１１‐３をＰＣＩバス番号５番と順番に割り当てる。この時、Ｈｏｔ ＰｌｕｇされたＩＯデバイス５０１‐２に接続されるバス２１１‐２が新たにＰＣＩバス番号４番と割り当てられたため、ＰＣＩバス番号４番であったバス２１１‐３が新たにＰＣＩバス番号５番と割り当てられてしまう。
【００５０】
そのため、物理サーバ１０１内のゲストＯＳ１１１Ａ，１１１ＢがＩＯデバイス５０１‐３にアクセスするためにＨｏｔ Ｐｌｕｇ以前のＩＯリソースＩＤを使用した場合、ＩＯデバイス５０１‐２にアクセスすることになってしまう。ＩＯデバイスの用途によっては、アクセスできなくなった場合でもＯＳのサポートにより動き続けられる可能性がある。しかし、Ｒｅｂｏｏｔ時にブートデバイスにアクセスできなくなるようなことがあれば、起動することができなくなり、致命的な問題点となる。
【００５１】
これに対して、本発明を適用した場合のＨｏｔ Ｐｌｕｇ動作について説明する。
まず本実施例では、ＥＦＩ／ＢＩＯＳがＩＯリソースＩＤを割り当てる前に、図３のＰＣＩマネージャ４１０が図６に示すバス割当管理テーブル６３０を設定する。図３のＰＣＩマネージャ４１０は計算機システム構成からスイッチ／ＩＯブリッジの構成を一意に定め、各ＩＯブリッジ／仮想ブリッジに割り当てるＩＯリソースＩＤを固定するために必要な情報である、図６の上流のＰＣＩバス番号６３３、下流のＰＣＩバス番号６３４、最下流のＰＣＩバス番号６３５をバス割当管理テーブルとして図３のスイッチ３０１内のレジスタ３４１に設定する。
【００５２】
設定された図６のバス割当管理テーブル６３０の情報は図３のスイッチ３０１内のレジスタ３４１を介してＥＦＩ／ＢＩＯＳ側に反映され、その情報を基にＥＦＩ／ＢＩＯＳが固定のＩＯリソースＩＤを各ＩＯブリッジ／仮想ブリッジに割り当てる。そのため、物理サーバ１０１からのＰＣＩバス番号の割り当てを例に取った場合、バス２０１ＡをＰＣＩバス番号１番、仮想スイッチ３５１‐１をＰＣＩバス番号２番、バス２１１‐１をＰＣＩバス番号３番、バス２１１‐３をＰＣＩバス番号５番と割り当てる。なお、ＩＯデバイスのない第二のＩＯブリッジ３２１Ｂ‐２やＩＯデバイスが使用されない第二のＩＯブリッジ３２１Ｂ‐４〜３２１Ｂ‐６に対しては、割り当てられるべきＩＯリソースＩＤは決まっているが、実際には使用されず仮想スイッチ３５１‐１を形成しないため、ＩＯリソースＩＤは割り当てられない。
【００５３】
次に、図８の計算機システム構成に示す様にＩＯデバイス５０１‐２をＨｏｔ Ｐｌｕｇする。なお、ＩＯデバイス５０１‐２は物理サーバ１０１内のノースブリッジ１３１のＩＯブリッジ１４１Ａに追加するものとし、図９に示すポート管理テーブル６００、図１０に示す仮想スイッチ管理テーブル６１０、図１１に示す仮想ブリッジ管理テーブル６２０が更新され、図１２で示す様に仮想スイッチ３５１‐１に追加される。
【００５４】
図１２の新しいＩＯデバイス５０１‐２がＨｏｔ Ｐｌｕｇされたことにより、ＩＯリソースＩＤの再割り当てが行われ、バス２０１ＡをＰＣＩバス番号１番、仮想スイッチ３５１‐１をＰＣＩバス番号２番、バス２１１‐１をＰＣＩバス番号３番、バス２１１‐２をＰＣＩバス番号４番、バス２１１‐３をＰＣＩバス番号５番と割り当てる。この場合、第二のＩＯブリッジ３２１Ｂ‐２に割り当てられるべきＩＯリソースＩＤは予め決まっていたため、Ｈｏｔ ＰｌｕｇされたＩＯデバイス５０１‐２に接続されるバス２１１‐２は予め確保されていたＰＣＩバス番号４番を割り当てられる。
【００５５】
割り当てられたＩＯリソースＩＤは他のＩＯブリッジ／仮想ブリッジと重ならないように一意に定められていたため、Ｈｏｔ Ｐｌｕｇ以前に使用されていたＩＯデバイス５０１‐１、５０１‐３が接続される第２のＩＯブリッジ３２１Ｂ‐１、３２１Ｂ‐３のＩＯリソースＩＤが変わることはなく、ＩＯデバイス５０１‐１、５０１‐３にアクセスできなくなることはない。
【００５６】
このように、本実施例によれば、ＩＯリソースＩＤを固定割当てすることにより、システム稼動中でのＩＯデバイスのＨｏｔ Ｐｌｕｇを行っても、他のＩＯデバイスへのアクセスに対して影響を及ぼさず、計算機システムを柔軟に構成することができる。
【００５７】
[実施例２]
実施例２は論理区画の動的再配置に伴うＩＯデバイスに対するバスの割り当てに関するものである。実施例２における計算機システムも、実施例１と同様に、図１に示したものと同様の初期構成を成す。
まず、本発明を適用しない場合の、論理区画の動的再配置上の問題点について説明する。
【００５８】
本実施例の計算機システムの初期構成では、ＥＦＩ／ＢＩＯＳは図３のノースブリッジ１３１内のＩＯブリッジ１４１Ａから接続されている第一のＩＯブリッジ３２１Ａ‐１、３２１Ｂ‐１、３２１Ｂ‐３と、ノースブリッジ１３２内のＩＯブリッジ１４２Ａから接続されている第一のＩＯブリッジ３２１Ａ‐２、３２１Ｂ‐４、３２１Ｂ‐５とに対してＩＯリソースＩＤを順番に割り当てていく。そのため、例えば、物理サーバ１０１からのＰＣＩバス番号を割り当てる場合、バス２０１ＡをＰＣＩバス番号１番、仮想スイッチ３５１‐１をＰＣＩバス番号２番、バス２１１‐１をＰＣＩバス番号３番、バス２１１‐３をＰＣＩバス番号４番と割り当てる。
【００５９】
同様に、ＩＯデバイスに対してＭＭＩＯ領域を順番に割り当てていく場合、図１３の物理サーバ１０１のＭＭＩＯ領域７０１から、ＩＯデバイス５０１−１用にＭＭＩＯアドレス７１１−０、ＩＯデバイス５０１−３用にＭＭＩＯアドレス７１１−１を割り当てる。このとき、ＭＭＩＯ領域は物理サーバ１０１〜１０３内のメモリ１５１〜１５３にマップされており、図１３のようにＩＯデバイスごとに一定の領域が割り当てられる。また、ＩＯデバイスが自分に割り当てられた領域がどの範囲であるかを知るために、ＩＯデバイス内のレジスタ５１１、５１２にＭＭＩＯアドレスが格納される。
【００６０】
更に、物理サーバ１０２からのＰＣＩバス番号を割り当てる場合、バス２０２ＡをＰＣＩバス番号１番、仮想スイッチ３５１‐２をＰＣＩバス番号２番、バス２１１‐４をＰＣＩバス番号３番、バス２１１‐５をＰＣＩバス番号４番と割り当てる。同様に、ＩＯデバイスに対してＭＭＩＯ領域を順番に割り当てていく場合、図１３の物理サーバ１０２のＭＭＩＯ領域７０２から、ＩＯデバイス５０１−４用にＭＭＩＯアドレス７１２−０、ＩＯデバイス５０１−５用にＭＭＩＯアドレス７１２−１を割り当てる。
【００６１】
この状態で、図１４の計算機システムに示すように、物理サーバ１０１内のゲストＯＳ１１１Ｂを、物理サーバ１０２内のゲストＯＳ１１２Ｂへと動的再配置すると仮定する。なお、ゲストＯＳ１１１Ｂが使用するＩＯデバイスは５０１‐３であり、物理サーバ１０２内のノースブリッジ１３２のＩＯブリッジ１４２Ａに追加するものとし、仮想スイッチ管理テーブル６１０（図１５）および仮想ブリッジ管理テーブル６２０（図１６）が更新され、図１７に示すように、仮想スイッチ３５１‐２に追加される。また、ＩＯデバイスの追加／削減及び物理的位置の変更がないため、図２のポート管理テーブル６００は変更されない。
【００６２】
その結果、図１７の物理サーバ１０１から物理サーバ１０２へと動的再配置が行われたゲストＯＳ１１２Ｂは、ノースブリッジ１４２Ａから接続される仮想スイッチ３５１‐２に接続されていることを意識せず、ＩＯデバイス５０１‐３へアクセスするために、再配置前に使用していたＩＯリソースＩＤを引き続き使用する。そのため、ゲストＯＳが再配置前に使用していたＩＯデバイス５０１‐３が接続されるバス２１１‐３のＰＣＩバス番号４番とＭＭＩＯアドレス７１１−６、再配置先で使用しているＩＯデバイス５０１‐５が接続されるバス２１１‐５のＰＣＩバス番号４番とＭＭＩＯアドレス７１１−６との間で競合が生じてしまい、致命的な問題が生じる。
【００６３】
これに対して、実施例２によれば、上記問題点を解消することができる。まず、本実施例では、ＥＦＩ／ＢＩＯＳがＩＯリソースＩＤを割り当てる前に、ＰＣＩマネージャ４１０（図３）によってバス割当管理テーブル６３０（図６）を設定する。ＰＣＩマネージャ４１０は計算機システム構成からスイッチ／ＩＯブリッジの構成を一意に定め、各ＩＯブリッジ／仮想ブリッジに割り当てるＩＯリソースＩＤを固定するために必要な情報である、上流のＰＣＩバス番号６３３、下流のＰＣＩバス番号６３４、最下流のＰＣＩバス番号６３５を、バス割当管理テーブル６３０に設定する。
【００６４】
設定されたバス割当管理テーブル６３０の情報は、図３のスイッチ３０１、３０２内のレジスタ３４１、３４２を介してＥＦＩ／ＢＩＯＳ側に反映され、その情報を基にＥＦＩ／ＢＩＯＳが固定のＩＯリソースＩＤを各ＩＯブリッジ／仮想ブリッジに割り当てる。そのため、例えば、物理サーバ１０１からのＰＣＩバス番号を割り当てる場合、バス２０１ＡをＰＣＩバス番号１番、仮想スイッチ３５１‐１をＰＣＩバス番号２番、バス２１１‐１をＰＣＩバス番号３番、バス２１１‐３をＰＣＩバス番号５番と割り当てる。
【００６５】
次に、固定に割り当てたＰＣＩバス番号を使い、ＩＯデバイスに対して固定のＭＭＩＯ領域を割り当てる。図１８はＩＯデバイスに対して固定のＭＭＩＯアドレスを割り当てる手順を示したフローチャートである。ステップ１０１０では、ＩＯデバイスに割り当てられるＭＭＩＯ領域のオフセットとレンジ（一つのＩＯデバイスに割り当てられる領域）を設定し、ステップ１０２０でＰＣＩバス番号に沿ってＩＯデバイスを探索していく。ステップ１０３０では、ＭＭＩＯアドレスを設定していない新しいＩＯデバイスがあるかの判定を行う。ＩＯデバイスがあった場合はステップ１０４０に進み、ＭＭＩＯアドレスとして、オフセット＋固定に割り当てられたＰＣＩバス番号×レンジを求め、ステップ１０５０で求められたＭＭＩＯアドレスをＩＯデバイスのレジスタに格納する。ステップ１０２０〜１０５０を繰り返し、全てのＩＯデバイスに固定のＭＭＩＯアドレスを割り当てる。
【００６６】
図１８のフローチャートを基に、ＩＯデバイスに対して固定のＭＭＩＯ領域を割り当てていく場合、図１９のように物理サーバ１０１のＭＭＩＯ領域７０１から、ＩＯデバイス５０１−１用にＭＭＩＯアドレス７１１−３（ＰＣＩバス番号３番）、ＩＯデバイス５０１−３用にＭＭＩＯアドレス７１１−５（ＰＣＩバス番号５番）が割り当てられる。
更に、物理サーバ１０２からのＰＣＩバス番号を割り当てる場合、バス２０２ＡをＰＣＩバス番号１番、仮想スイッチ３５１‐２をＰＣＩバス番号２番、バス２１１‐４をＰＣＩバス番号６番、バス２１１‐５をＰＣＩバス番号７番と割り当てる。同様に、ＩＯデバイスに対して固定のＭＭＩＯ領域を順番に割り当てていく場合、図１９の物理サーバ１０２のＭＭＩＯ領域７０２から、ＩＯデバイス５０１−４用にＭＭＩＯアドレス７１２−６（ＰＣＩバス番号６番）、ＩＯデバイス５０１−５用にＭＭＩＯアドレス７１２−７（ＰＣＩバス番号７番）が割り当てられる。
【００６７】
次に、図１４に示すように、物理サーバ１０１内のゲストＯＳ１１１Ｂを物理サーバ１０２内のゲストＯＳ１１２Ｂへと動的再配置する。なお、ゲストＯＳ１１１Ｂが使用するＩＯデバイスは５０１‐３であり、物理サーバ１０２内のノースブリッジ１３２のＩＯブリッジ１４２Ａに追加するものとし、仮想スイッチ管理テーブル６１０（図１５）及び仮想ブリッジ管理テーブル６２０（図１６）が更新され、図１７に示すように、仮想スイッチ３５１‐２に追加される。また、ＩＯデバイスの追加／削減及び物理的位置の変更がないため、図２のポート管理テーブル６００は変更されない。
【００６８】
このようにして、図１７の物理サーバ１０１から物理サーバ１０２へと動的再配置が行われたゲストＯＳ１１２Ｂは、ノースブリッジ１４２Ａから接続される仮想スイッチ３５１‐２に接続されていることを意識せず、ＩＯデバイス５０１‐３へアクセスするために、再配置前に使用していたＩＯリソースＩＤを引き続き使用することができる。この時、各第二のＩＯブリッジ３２１Ｂ‐３〜３２１Ｂ‐５のＩＯリソースＩＤは予め固定されているため、バス２１１‐３〜２１１‐５のＰＣＩバス番号やＩＯデバイス５０１−３〜５０１−５のＭＭＩＯアドレスが競合することは無い。よって、動的再配置を行われるゲストＯＳは再配置以前のＩＯリソースＩＤを引き継いでＩＯデバイスを使用することができる。
【００６９】
以上説明した本実施例のように、ＩＯリソースＩＤを固定的に割り当てることにより、ＩＯデバイスを透過的にゲストＯＳに提供する場合でも、システム稼動中での論理区画の動的再配置を行うことができ、透過的アクセスによる性能や信頼性と、動的再配置による柔軟性を達成することができる。
【図面の簡単な説明】
【００７０】
【図１】一実施例による計算機システムの構成例を示す図。
【図２】スイッチにおけるポート管理テーブル６００の一例を示す図。
【図３】計算機システムにおける仮想スイッチの一例を示す図。
【図４】仮想スイッチ管理テーブル６１０の一例を示す図。
【図５】仮想ブリッジ管理テーブル６２０の一例を示す図。
【図６】バスの割当管理テーブル６３０の一例を示す図。
【図７】ＰＣＩバス番号を固定に割り当てた一例を示す図
【図８】計算機システムの構成例を示す図。
【図９】ポート管理テーブル６００の一例を示す図。
【図１０】仮想スイッチ管理テーブル６１０の一例を示す図。
【図１１】仮想ブリッジ管理テーブル６２０の一例を示す図。
【図１２】計算機システムにおける仮想スイッチの構成例を示す図。
【図１３】一実施例によるＭＭＩＯ領域の割当例を示す図。
【図１４】一実施例による計算機システムの構成例を示す図（実施例２）。
【図１５】仮想スイッチ管理テーブル６１０の一例を示す図（実施例２）。
【図１６】仮想ブリッジ管理テーブル６２０の一例を示す図（実施例２）。
【図１７】仮想スイッチの構成例を示す図（実施例２）。
【図１８】ＭＭＩＯアドレスの割当方法を示すフローチャート
【図１９】一実施例によるＭＭＩＯ領域の割当例を示す図。
【符号の説明】
【００７１】
１０１〜１０３：物理サーバ        １１１〜１１３：ゲストＯＳ  
１２１〜１２３：ハイパバイザ      １３１〜１３３：ノースブリッジ  
１４１〜１４３：ＩＯブリッジ      １５１〜１５３：メモリ
２０１〜２０３、２１１〜２１２：バス  
３０１，３０２：スイッチ          ３１１，３１２：仮想スイッチ機構  
３２１        ：スイッチ内の第一のＩＯブリッジ
３２２        ：スイッチ内の第二のＩＯブリッジ
３３１，３３２：管理ポート        ３４１，３４２：レジスタ  
３５１：仮想スイッチ、  
４００：サービスプロセッサ        ４１０：ＰＣＩマネージャ  
５０１，５０２：ＩＯデバイス      ５１１、５１２：レジスタ
６００：ポート管理テーブル  
６１０：仮想スイッチ管理テーブル  
６２０：仮想ブリッジ管理テーブル  
６３０：バス固定割当管理テーブル  
７０１，７０２：ＭＭＩＯ領域      ７１１，７１２：ＭＭＩＯアドレス。
【図１】
2010039760.tif 000003
【図２】
2010039760.tif 000004
【図３】
2010039760.tif 000005
【図４】
2010039760.tif 000006
【図５】
2010039760.tif 000007
【図６】
2010039760.tif 000008
【図７】
2010039760.tif 000009
【図８】
2010039760.tif 000010
【図９】
2010039760.tif 000011
【図１０】
2010039760.tif 000012
【図１１】
2010039760.tif 000013
【図１２】
2010039760.tif 000014
【図１３】
2010039760.tif 000015
【図１４】
2010039760.tif 000016
【図１５】
2010039760.tif 000017
【図１６】
2010039760.tif 000018
【図１７】
2010039760.tif 000019
【図１８】
2010039760.tif 000020
【図１９】
2010039760.tif 000021
【手続補正書】
【提出日】平成21年5月25日(2009.5.25)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
【特許文献１】特開２００５−１２２６４０公報
【特許文献２】特開２００６−２４４４８１公報
【非特許文献１】Multi-Root I/O Virtualization and Sharing Specification Revision 1.0, 1.2.3. MR-IOV Topology pp.21-23 (May 12, 2008)