(57)【要約】【課題】シングルポートのディスクを現用系サーバに接続し、フェールオーバ時には、待機系サーバにこのディスクを接続する。【解決手段】クラスタリングソフト１０４から発行したａｄｄ＿ｐｃｉコマンドにより、制御プログラム１０７がＰＣＩスロットの割当を変更し、かつ割り込み信号をＬＡＰＲ１（１０２）に発行することで、ＬＡＰＲ１（１０２）のゲストＯＳ上でＡＣＰＩ処理ルーチンがディスク装置１１２を含めたＰＣＩカード１１１をホット・アッドする。【選択図】    図２
2004252591.tif 000002
【特許請求の範囲】
【請求項１】
計算機の制御プログラム上で構築された複数の仮想計算機と、
前記計算機のＰＣＩバスに接続されるとともに、前記複数の仮想計算機で共有されるＩ／Ｏデバイスと、を備えた計算機システムにおいて、
前記Ｉ／Ｏデバイスに配設されてＰＣＩバスに接続された単一のポートと、
前記複数の仮想計算機のうちの一つと、前記ポートとの論理的な接続状態を設定するＰＣＩ接続割り当て手段と、
前記仮想計算機からの制御信号に基づいて、前記ＰＣＩ接続割り当て手段に設定された接続状態を更新するＩ／Ｏデバイス切り換え手段とを備え、
前記仮想計算機は、ＰＣＩ接続割り当て手段の設定に基づいてＩ／Ｏデバイスの変更を行うことを特徴とする計算機システム。
【請求項２】
前記Ｉ／Ｏデバイス切り換え手段は、前記ＰＣＩ接続割り当て手段の設定を更新するとともに、仮想計算機にＩ／Ｏデバイスの変更を通知する割り込みをかける割り込み手段と、を有し、
前記割り込みを受けた仮想計算機は、前記ＰＣＩ接続割り当て手段の設定に基づいてＩ／Ｏデバイスの変更を行うことを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記仮想計算機は、他の仮想計算機に障害が発生したことを検知する障害検知手段を有し、障害を検知したときには前記Ｉ／Ｏデバイス切り換え手段に予め設定した制御信号を送出することを特徴とする請求項１または請求項２に記載の計算機システム。
【請求項４】
前記仮想計算機は、第１の仮想計算機と第２の仮想計算機を含み、
前記第２の仮想計算機は、第１の仮想計算機に障害を検知したときには前記Ｉ／Ｏデバイス切り換え手段に予め設定した制御信号を送出し、Ｉ／Ｏデバイスのポートを第２の仮想計算機へ接続するとともに、前記制御プログラムは、第２の仮想計算機を稼動させる一方、第１の仮想計算機を待機させることを特徴とする請求項２または請求項３に記載の計算機システム。
【請求項５】
計算機を物理的に分割した複数の物理分割計算機と、
前記計算機のＰＣＩバスに接続されるとともに、前記複数の物理分割計算機で共有されるＩ／Ｏデバイスと、を備えた計算機システムにおいて、
前記Ｉ／Ｏデバイスに配設されてＰＣＩバスに接続された単一のポートと、
前記複数の物理分割計算機のうちの一つと、前記ポートとの論理的な接続状態を設定するＰＣＩ接続割り当て手段と、
前記物理分割計算機からの制御信号に基づいて、前記ＰＣＩ接続割り当て手段に設定された接続状態を更新するＩ／Ｏデバイス切り換え手段とを備え、
前記物理分割計算機は、ＰＣＩ接続割り当て手段の設定に基づいてＩ／Ｏデバイスの変更を行うことを特徴とする計算機システム。
【請求項６】
前記Ｉ／Ｏデバイス切り換え手段は、前記ＰＣＩ接続割り当て手段の設定を更新するとともに、物理分割計算機にＩ／Ｏデバイスの変更を通知する割り込みをかける割り込み手段と、を有し、
前記割り込みを受けた物理分割計算機は、前記ＰＣＩ接続割り当て手段の設定に基づいてＩ／Ｏデバイスの変更を行うことを特徴とする請求項５に記載の計算機システム。
【請求項７】
前記計算機は、複数の物理分割計算機に障害が発生したことを検知する障害検知手段を有し、障害を検知したときには前記Ｉ／Ｏデバイス切り換え手段に予め設定した制御信号を送出することを特徴とする請求項５または請求項６に記載の計算機システム。
【請求項８】
前記物理分割計算機は、第１の物理分割計算機と第２の物理分割計算機を含み、
前記障害検知手段は、第１の物理分割計算機に障害を検知したときには前記Ｉ／Ｏデバイス切り換え手段に予め設定した制御信号を送出し、Ｉ／Ｏデバイスのポートを第２の物理分割計算機へ接続するとともに、前記計算機は、第２の仮想計算機を稼動させる一方、第１の仮想計算機を待機させることを特徴とする請求項６または請求項７に記載の計算機システム。
【請求項９】
計算機のＰＣＩバスに接続されるＩ／Ｏデバイスにおいて、
前記Ｉ／ＯデバイスはＰＣＩバスに接続される単一のポートと、
計算機からの制御信号に応じて、前記ポートの論理的な接続状態を変更する割り込み信号を発生する信号発生手段とを備え、
前記計算機は、この割り込み信号があったときに前記ポートの論理的な接続状態を変更することを特徴とするＩ／Ｏデバイス。
【請求項１０】
前記計算機は、第１の計算機と第２の計算機を含み、
前記信号発生手段は、第１の計算機からの制御信号に基づいて、第２の計算機へ割り込み信号を送り、前記ポートの論理的な接続を前記第１の計算機に切り換えることを特徴とする請求項１０に記載のＩ／Ｏデバイス。
【請求項１１】
前記信号発生手段は、割り込み信号を発生するとともに、前記ポートの論理的な接続状態を設定する割り当て手段を更新することを特徴とする請求項９または請求項１０に記載のＩ／Ｏデバイス。
【請求項１２】
計算機のＰＣＩバスに接続されたＩ／Ｏデバイスを、計算機の制御プログラム上で構築された複数の仮想計算機で共有するＩ／Ｏデバイスの仮想共有方法において、
前記Ｉ／Ｏデバイスは、単一のポートを介してＰＣＩバスに接続されて、前記複数の仮想計算機のうちの一つと、前記ポートとの論理的な接続状態を設定する手順と、
前記仮想計算機からの制御信号に基づいて、前記ポートと仮想計算機との論理的な接続状態を切り換える手順と、を含むことを特徴とするＩ／Ｏデバイスの仮想共有方法。
【請求項１３】
前記接続状態を切り換える手順は、前記ポートと仮想計算機との論理的な接続状態の設定を変更するとともに、前記仮想計算機にＩ／Ｏデバイスの変更を通知する割り込みをかける手順と、
前記割り込みを受けた仮想計算機が、前記論理的な接続状態の設定に基づいてＩ／Ｏデバイスの変更を行うことを特徴とする請求項１２に記載のＩ／Ｏデバイスの仮想共有方法。
【請求項１４】
前記接続状態を切り換える手順は、前記複数の仮想計算機のいずれかに障害が発生したことを検知したときに、前記ポートと仮想計算機の論理的な接続状態を設定する割り当て表を更新するとともに、障害が生じた仮想計算機を待機させるとともに、他の仮想計算機を稼動させることを特徴とする請求項１２または請求項１３に記載のＩ／Ｏデバイスの仮想共有方法。
【請求項１５】
計算機のＰＣＩバスに接続されたＩ／Ｏデバイスを、計算機を物理的に分割した複数の物理分割計算機で共有するＩ／Ｏデバイスの仮想共有方法において、
前記Ｉ／Ｏデバイスは、単一のポートを介してＰＣＩバスに接続されて、前記複数の物理分割計算機のうちの一つと、前記ポートとの論理的な接続状態を設定する手順と、
前記物理分割計算機からの制御信号に基づいて、前記ポートとの論理的な接続状態を切り換える手順と、を含むことを特徴とするＩ／Ｏデバイスの仮想共有方法。
【請求項１６】
前記接続状態を切り換える手順は、前記複数の物理分割計算機のいずれかに障害が発生したことを検知したときに、前記ポートと物理分割計算機の論理的な接続状態を設定する割り当て表を更新するとともに、障害が生じた物理分割計算機を待機させるとともに、他の物理分割計算機を稼動させることを特徴とする請求項１５に記載のＩ／Ｏデバイスの仮想共有方法。
【請求項１７】
前記接続状態を切り換える手順は、前記複数の物理分割計算機のいずれかに障害が発生したことを検知したときに、前記ポートと物理分割計算機の論理的な接続状態を設定する割り当て表を更新するとともに、障害が生じた物理分割計算機を待機させるとともに、他の物理分割計算機を稼動させることを特徴とする請求項１５または請求項１６に記載のＩ／Ｏデバイスの仮想共有方法。
【請求項１８】
計算機のＰＣＩバスに接続したＩ／Ｏデバイスを複数の計算機で共有するＩ／Ｏデバイスの仮想共有方法において、
前記Ｉ／Ｏデバイスは単一のポートを介してＰＣＩバスに接続され、複数の計算機のいずれかひとつからの制御信号に応じて、前記ポートの論理的な接続状態を変更する割り込み信号を発生する手順と、
この割り込み信号に基づいて、前記ポートと計算機の論理的な接続状態を変更する手順と、を含むことを特徴とするＩ／Ｏデバイスの仮想共有方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＰＣＩデバイスのホットプラグが可能なＯＳが動作する計算機システムに係り、特に、制御プログラムによってＰＣＩデバイスを論理的に挿入、除去操作してホットプラグ操作をする計算機システムに関する。
【０００２】
【従来の技術】
計算機システムで２４時間３６５日サービスといった無停止長時間運用を実現する上で、いかに耐障害性を高めるかが問題となっている。ＪＩＭ・ＧＲＡＹ著「トランザクション処理  概念と技法」によれば、近年はソフトウェア障害の割合が増大している。このことから、ソフトウェア障害に対処することが特に必要となっているといえる。
【０００３】
ソフトウェア障害の原因として、ＯＳやアプリケーションソフトが処理のために占有したメモリ領域を開放しないまま放置してしまうために起きるメモリリークやアプリケーションソフトのバグなどがある。このような障害に対処するために、計算機システムの管理ソフトウェアで定期的にサービスやＯＳの再起動を実行する方法がある。しかし、この方法では再起動の期間中、サービスが停止することが問題となる。
【０００４】
そこで、クラスタリング・ソフトウェアを使って物理的に複数のサーバでクラスタを構築し、ＷｅｂサーバやＤＢＭＳ（Ｄａｔａｂａｓｅ  ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）といったサービスのフェールオーバをする方法がある。
【０００５】
これは、サービスを提供している現用系サーバとサービスを提供しない待機系サーバでクラスタを構成し、クラスタ内のサーバ間でハートビートと呼ばれるメッセージを相互に通信し合ったり、共有ディスクに定期的にタイムスタンプを書き込んだりして互いに障害が発生していないかチェックする。ハートビートが途切れたり、共有ディスクのタイムスタンプが適切に更新されていない場合は障害が発生したと検出し、障害があった現用系サーバで実行していたサービスを障害の起きていない待機系サーバで起動する（フェールオーバ）という動作をする。
【０００６】
この物理サーバでクラスタを構築する方法では、（１）物理的に計算機を複数用意する必要があること、（２）ハートビート専用のネットワークを構築するために、ハートビートのためのルータ装置やネットワークインタフェースカードを追加する必要があること、（３）複数のサーバで同一のサービスを実行するために共通のデータディスクを持つ必要がある。
【０００７】
対処する障害をソフトウェアに限定している場合、仮想計算機を用いることでこれらの課題を解決することができ、上記（１）に対しては、特開平９−２８８５９０号公報に示されているように、仮想計算機だけでクラスタを構成することで対処するものが知られている。これは、一つの物理計算機上で仮想計算機を複数稼動することで、ＯＳやアプリケーション・ソフトウェアの多重化が可能となり、ソフトウェア障害に対して対処可能となる。
【０００８】
上記（２）に対しては、特開平１１−８５５４７号公報に示されているように、仮想計算機間の通信を主記憶を使用したプロセス間通信で実現するものが知られており、仮想計算機間の通信用にルータやネットワークカード等のハードウェアを使用せずに仮想計算機のクラスタを構成することができる。
【０００９】
上記（３）に対しては、クラスタ化した計算機間でデータディスクの共有化をするため、各サーバとディスクを接続するためにＳＣＳＩ等のインタフェースを複数持ったディスク装置（マルチポートディスク、マルチポートＲＡＩＤなど）を使用するものが知られている。
【００１０】
【特許文献１】
特開平９−２８８５９０号公報
【特許文献２】
特開平１１−８５５４７号公報
【非特許文献１】
ジム・グレイ、アンドレアス・ロイター  著／喜連川  優  監訳著、「トランザクション処理  概念と技法」、日経ＢＰ社発行  、２００１年１０月２９日発行、第１２２頁〜第１２３頁
【００１１】
【発明が解決しようとする課題】
しかしながら、上記従来例のように、複数の仮想計算機でマルチポートのディスク装置を共有する場合では、マルチポートのディスク装置（またはＩ／Ｏデバイス）が高価であるため、システムの製造コストが増大するという問題がある。
【００１２】
また、上記従来例では、仮想計算機の現用系と待機系が共にマルチポートのディスク装置に対してアクセス可能となっているため、待機系のソフトウェアに障害が生じた場合でもディスク装置へアクセスが可能であるため、障害生じた待機系の不要なアクセスにより、現用系のディスクアクセスに悪影響を与えてしまう、という問題があった。
【００１３】
そこで、本発明の課題は、安価なシングルポートのＩ／Ｏデバイスを採用しながらもフェールオーバ動作を可能にして、信頼性の向上と製造コストの低減を両立させることを目的とする。
【００１４】
【課題を解決するための手段】
本発明は、計算機の制御プログラム上で構築された複数の仮想計算機と、前記計算機のＰＣＩバスに接続されるとともに、前記複数の仮想計算機で共有されるＩ／Ｏデバイスと、を備えた計算機システムにおいて、
前記Ｉ／Ｏデバイスに配設されてＰＣＩバスに接続された単一のポートと、前記複数の仮想計算機のうちの一つと、前記ポートとの論理的な接続状態を設定するＰＣＩ接続割り当て手段と、前記仮想計算機からの制御信号に基づいて、前記ＰＣＩ接続割り当て手段に設定された接続状態を更新するＩ／Ｏデバイス切り換え手段とを備え、前記仮想計算機は、ＰＣＩ接続割り当て手段の設定に基づいてＩ／Ｏデバイスの変更を行う。
【００１５】
特に、前記Ｉ／Ｏデバイス切り換え手段は、前記ＰＣＩ接続割り当て手段の設定を更新するとともに、仮想計算機にＩ／Ｏデバイスの変更を通知する割り込みをかける割り込み手段と、を有し、前記割り込みを受けた仮想計算機は、前記ＰＣＩ接続割り当て手段の設定に基づいてＩ／Ｏデバイスの変更を行う。
【００１６】
【発明の効果】
したがって、仮想計算機から所定の制御信号が送られると、ＰＣＩ接続されたＩ／Ｏデバイスの論理的（仮想的）な接続を変更するとともに、仮想計算機には割り込みが通知されるので、この割り込みを受けた仮想計算機は、単一のポートのＩ／Ｏデバイスをホットプラグすることで接続状態を切り換えることが可能となり、特に、現用系と待機系からなる複数の仮想計算機でこのＩ／Ｏデバイスを共有する場合では、現用系に障害が生じると、Ｉ／Ｏデバイスの単一のポートを待機系に切り換えるとともに、割り込み信号に基づいて待機系を現用系として起動させることができ、安価な単一のポートのＩ／Ｏデバイスによって製造コストを抑制しながら信頼性を確保することが可能となる。
【００１７】
【発明の実施の形態】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１８】
図１は、本発明の一実施形態を適用する計算機システムの構成図である。
【００１９】
本実施形態の計算機システム２００は、ＣＰＵ２０１−０、２０１−１、２０１−２、２０１−３とＣＰＵバス２０２とメモリコントローラ２０３とメモリバス２０４と主記憶２０５とＩ／Ｏバス２１６とＩ／Ｏブリッジ２０９とＰＣＩバス２１０とＰＣＩスロット２１２−０、２１２−１とＰＣＩカード（ＰＣＩデバイス）１１１に接続されたディスク装置１１２から構成される。ただし、本発明を適用できる計算機システムは、図１で示されているＣＰＵやＩＯブリッジ、ＰＣＩバス、ＰＣＩスロット、ディスク装置の数に限定されない。また、ＰＣＩカード１１１は、ＰＣＩスロット２１２−１に接続され、単一のポート（シングルポート）を有するものである。
【００２０】
なお、ＰＣＩバス２１０、ＰＣＩカード１１１は、ＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）２．０に準拠しホットプラグに対応したものである。ＡＣＰＩ２．０の詳細については、ｈｔｔｐ：／／ｗｗｗ．ａｃｐｉ．ｉｎｆｏ／ＤＯＷＮＬＯＡＤＳ／ＡＣＰＩｓｐｅｃ−２−０ｂ．ｐｄｆに記載されるものである。
【００２１】
複数の仮想計算機（以下、ＬＰＡＲとする）を構築するための制御プログラム１０７と、この制御プログラム１０７によって構築されたＬＰＡＲ上で動作するゲストＯＳ２０６−０、…、２０６−ｎは主記憶上に置かれている。ＬＰＡＲ構築時に管理者によって各ＬＰＡＲごとにＰＣＩスロットは割り当てられる。そのＬＰＡＲとＰＣＩスロットの割り当てを記述したＰＣＩスロット割当表は制御プログラム１０７が保持している。なお、ゲストＯＳ２０６−０、…、２０６−ｎは、ＡＣＰＩのホットプラグ（以下、ホット・アッド）に対応しているものである。
【００２２】
また、メモリコントローラ上には、ＰＣＩバス２１０に接続したＰＣＩデバイス（Ｉ／Ｏデバイス）から主記憶２０５へのデータの読み書きをする要求（インバウンドアクセス）のアドレス変換を行うためのゲートキーパ１１０がある。
【００２３】
本発明を適用した計算機システムの具体的な動作を図２を用いて説明する。
【００２４】
図２の計算機１００は、図１の計算機システムの動作を示すための概念的な構成図である。計算機１００は、計算機のハードウェア１０９上で制御プログラム１０７が動作している。制御プログラム１０７が仮想計算機１０１（ＬＰＡＲ０）と仮想計算機１０２（ＬＰＡＲ１）を構築し、これらの複数の仮想計算機上でゲストＯＳが稼動している。各ゲストＯＳ上では、クラスタリングソフト１０３、１０４が稼動し、ハートビート・ネットワーク１０７を使用して定期的にお互いに信号（ハートビート）を送り、相互に正常に稼動していることを確認しあっている。
【００２５】
各ＬＰＡＲにどのＰＣＩスロットが割り当てられているかは、制御プログラム１０７上のＰＣＩスロット割当表１０８に記述されている。図４にＰＣＩスロット割当表１０８の例４００を示す。図４では、ＰＣＩスロット０と１がＬＰＡＲ０に割り当てられている。また、ＰＣＩスロット割当表には、イネーブルフラグが各ＰＣＩスロットに割り当てられている。このイネーブルフラグが１のときは該当するＰＣＩスロットに接続しているＰＣＩデバイス（図２のＰＣＩカード１１１）へのアクセスは許可されるが、イネーブルフラグが０のときは該当するＰＣＩスロットに接続しているＰＣＩデバイスへのアクセスは許可されない。つまり、図４の４００の割り当て表では仮想計算機ＬＰＡＲ０のアクセスが許可され、割り当て表が図中４０１の状態では、仮想計算機ＬＰＡＲ０のアクセスは拒否され、また、割り当て表が図中４０２の状態では、ＬＰＡＲ１のみがアクセス可能となる。
【００２６】
制御プログラム１０７は、ＰＣＩスロット割当表１０８を参照し、アクセスの許可判定１１８をし、ゲストＯＳからディスク装置１１２へのアクセス（アウトバウンドアクセス）１１５または１１６をセレクタ１１７で選択する。アクセスを許可しないＬＰＡＲからのアクセスは一般保護例外をアクセス要求元のＯＳへ発行する（図示なし）。
【００２７】
ディスク装置１１２からのＤＭＡアクセスのようなインバウンドアクセスは、ゲートキーパ１１０でアドレス変換され、各ＬＰＡＲに割り当てられたメモリ空間にアクセスする。ゲートキーパへのデータの書き込みは制御プログラム１０７が実行する。
【００２８】
ここでは、ＬＰＡＲ０の仮想アドレス空間７００とＬＰＡＲ１の仮想アドレス空間７０１は、物理アドレス空間７０２に図７のようにマッピングされていると仮定する。ＰＣＩバス０に接続しているディスク装置１１２は、ＬＰＡＲ０に割り当てられているとすると、ゲートキーパ１１０には、図８の（ａ）のデータがセットされている。同様にディスク装置１１２がＬＰＡＲ１に割り当てられているとすると、ゲートキーパ１１０は、図８の（ｂ）のデータがセットされる。
【００２９】
ゲストＯＳ上のクラスタリングソフト１０３、１０４のようなユーザアプリケーションは、制御プログラム１０７に対して制御コマンド（図３）を発行することができる（１１３）。制御プログラム１０７は、コマンド制御ルーチン１２４でコマンドの解釈、実行をする。ゲストＯＳ上の図３にこの制御コマンドの一例を示す。制御コマンドは、例えば、図３に示すようにコマンド部分と仮想計算機の番号を指定する。
【００３０】
図３（ａ）にｄｅａｃｔコマンドは、指定された仮想計算機ＬＰＡＲ（この図では、ＬＰＡＲ０）をディアクティベートするコマンドである。このコマンドを実行するとＬＰＡＲ０は非活性化、つまり、物理的な計算機でいう電源オフの状態になる。
【００３１】
同じく図３（ｂ）のａｃｔコマンドは、指定された仮想計算機ＬＰＡＲ（この図では、ＬＰＡＲ０）０をアクティベートするコマンドである。このコマンドを実行するとＬＰＡＲ０は、活性化、つまり物理的な計算機でいう電源オンの状態になる。
【００３２】
ａｄｄ＿ｐｃｉコマンド（図３（ｃ））は指定された仮想計算機ＬＰＡＲ（ここでは、ＬＰＡＲ０）に割り当てられたＰＣＩスロット（このＰＣＩスロットにインストールしてあるＰＣＩデバイスも含めて）をコマンド発行元のＬＰＡＲに論理的に接続する。このコマンドの発行元ＬＰＡＲがアクティブ状態であれば図５に示すＨｏｔ  Ａｄｄ動作が実行される  ａｄｄ＿ｐｃｉコマンドの動作を図５を用いて説明する。
【００３３】
図５は、あるゲストＯＳｍの稼動するＬＰＡＲｍに割り当てられているＰＣＩスロットｓをゲストＯＳｎの稼動するＬＰＡＲｎに論理的にホット・アッドする処理の一例を示すフローチャートで、制御プログラム１０７で行われるものである。図中、ｍ、ｎ、ｓは整数でｍ≠ｎである。
【００３４】
ステップ５００では、ゲストＯＳｎがａｄｄ＿ｐｃｉコマンドを発行し、ＰＣＩスロットｓを論理ホット・アッドを開始する。
【００３５】
ステップ５０１では、ＰＣＩスロットｓの状態を判定して、ＰＣＩスロットｓにＰＣＩデバイスが挿されていない場合、ステップ５０２に進み、制御プログラムはＰＣＩデバイスを挿すようにコマンド発生元に指示する。一方、ＰＣＩスロットｓにＰＣＩデバイスが挿入されていればステップ５０３に進む。
【００３６】
ステップ５０２は、ＰＣＩデバイスがＰＣＩスロットｓに挿されていない場合であり、管理者がＰＣＩデバイスをＰＣＩスロットｓに挿入するよう指示を行い、ＰＣＩデバイスが挿入されればステップ５０３に進む。
【００３７】
ステップ５０３では、ＰＣＩデバイスがＰＣＩスロットｓに挿されている場合、制御プログラム１０７はＯＳｎからＰＣＩスロットｓへのアクセスを許可する処理をする。具体的には、ＰＣＩスロット割当表１０８でＰＣＩスロットｓの接続先をＬＰＡＲｎとし、イネーブルフラグを１に設定する。例えば、ＬＰＡＲ０に割り当てられているＰＣＩスロット０の割当をＬＰＡＲ１へ切り換えるには、図４の４００の状態から４０２の状態にする更新を行う。
【００３８】
また、ゲートキーパに登録されている仮想メモリ空間の物理メモリ空間のマッピング情報をＬＰＡＲｎ（ゲストＯＳｎ）に対応するデータに書き換える。例えば、ＬＰＡＲ０とＬＰＡＲ１のアドレス空間を図７のように設定していて、ＬＰＡＲ０に割り当てられているゲートキーパの設定を、図８の（ａ）の状態から（ｂ）の状態にする更新を行う。
【００３９】
ステップ５０４では、制御プログラム１０７は、論理的なＳＣＩ（Ｓｙｓｔｅｍ  Ｃａｌｌ  Ｉｎｔｅｒｒｕｐｔ）割り込みをゲストＯＳｎに対して発行する。なお、ＳＣＩ割り込みは、ＡＣＰＩで定義されているものである。
【００４０】
ステップ５０５で、ゲストＯＳｎは、ＧＰＥ（Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ  Ｅｖｅｎｔ）レジスタの内容を読みに行く。なお、上記ＳＣＩ割り込み、ＧＰＥレジスタについては、ＡＣＰＩ２．０で規定されるものである。
【００４１】
ステップ５０６では、制御プログラム１０７は、ゲストＯＳｎからのＧＰＥレジスタアクセスをトラップし、自身にハードコーディングされているＧＰＥレジスタの内容（ｉｎｓｅｒｔｉｏｎ  ｅｖｅｎｔ）をゲストＯＳｎへ返す。
【００４２】
ステップ５０７では、ゲストＯＳｎのＡＣＰＩ処理ルーチンでＰＣＩスロットｓのＰＣＩデバイスの設定を開始する。
【００４３】
ステップ５０８では、ゲストＯＳｎまたはゲストＯＳｎ上のアプリケーションは、追加したＰＣＩデバイスを使用できるように処理をする。具体的には、ＰＣＩデバイスに接続されているディスク装置をマウント等をする。
【００４４】
以上の処理により、ＰＣＩデバイスは、ＯＳｍからＯＳｎに割り当てられ、再起動などを要することなくＯＳｎからこのＰＣＩデバイスを制御することが可能となるのである。
【００４５】
次に、図３（ｄ）に示した、ｒｅｍ＿ｐｃｉコマンド（図３（ｄ））は指定された仮想計算機ＬＰＡＲに割り当てられたＰＣＩスロット（このＰＣＩスロットにインストールしてあるＰＣＩデバイスも含めて）を論理的に取り外すＨｏｔ  Ｒｅｍｏｖｅ動作（図６参照）が実行される。
【００４６】
図６は、あるゲストＯＳｍの稼動するＬＰＡＲｍからｒｅｍ＿ｐｃｉコマンドが発行され、ゲストＯＳｎの稼動するＬＰＡＲｎに割り当てられているＰＣＩスロットｓをホット・リムーブする処理の一例を示すフローチャートで、制御プログラム１０７で行われるものである。なお、図中ｍ、ｎ、ｓは整数で、ｍ≠ｎである。
【００４７】
ステップ６００では、ゲストＯＳｍから、ｒｅｍ＿ｐｃｉコマンドが発行され、ゲストＯＳｎの稼動するＬＰＡＲｎのＰＣＩスロットｓを論理ホット・リムーブを開始する。
【００４８】
ステップ６０１では、制御プログラム１０７は、ＬＰＡＲｎからＰＣＩスロットｓへのアクセスを不許可に変更する。具体的には、制御プログラム内のＰＣＩスロット割当表１０８のＰＣＩスロットｓのイネーブルフラグを０にする。例えば、ＬＰＡＲ０に割り当てられているＰＣＩスロット０の割当を、図４の４００の状態から４０１の状態にする更新を行う。
【００４９】
ステップ６０２では、制御プログラム１０７は、ＰＣＩスロットｓに接続していたＬＰＡＲｎがアクティブであるかどうか判定し、アクティブであればステップ６０３へ進む一方、アクティブでなければそのまま処理を終了する。
【００５０】
ステップ６０３では、ステップ６０２でＬＡＰＲｎがアクティブの場合、制御プログラムが論理ＳＣＩ割り込みをゲストＯＳｎに発行する。
【００５１】
ステップ６０４では、ゲストＯＳｎは、ＧＰＥレジスタの内容を読みに行く。
【００５２】
ステップ６０５では、制御プログラム１０７は、ゲストＯＳｎからのＧＰＥレジスタアクセスをトラップし、自身にハードコーディングされているＧＰＥレジスタの内容（ｅｊｅｃｔ  ｒｅｑｕｅｓｔ）をゲストＯＳｎへ返す。
【００５３】
ステップ６０６では、ステップ６０２でＬＡＰＲｎがアクティブで無い場合、またはステップ６０５実行後、ゲストＯＳｎでＰＣＩスロットｓのＰＣＩデバイスの使用を停止する。具体的には、ＰＣＩスロットｓのＰＣＩデバイスに接続しているディスク装置をアンマウントする。
【００５４】
以上の処理により、ＰＣＩデバイスは、ＯＳｎに対する割り当てが無くなって、再起動などを要することなくＯＳｎからこのＰＣＩデバイスをアンマウントすることが可能となるのである。
【００５５】
次に、本発明を適用した計算機システムがサービスのフェールオーバする過程を図２と図９を用いて説明する。
【００５６】
フェールオーバをする際、障害が起きている仮想計算機ＬＰＡＲで、ゲストＯＳそのものが障害を起こしているケースと、ＯＳに異常は無いがフェールオーバ対象のサービスのみが障害を起こしているケースが考えられる。
【００５７】
図９では、前者の障害に対処するケース、つまり障害側ＬＰＡＲのＯＳをシャットダウンせずにＬＰＡＲのデアクティベートするケース（ａ）と、後者の障害に対処するケース、つまり障害側ＬＰＡＲのＯＳのシャットダウンをしてからＬＰＡＲのデアクティベートをするケース（ｂ）がある。まず、（ａ）のケースについて説明した後、（ｂ）については（ａ）との差分のみ説明する。（ａ）、（ｂ）どちらの動作をするかは、クラスタリングソフトの仕様、あるいは設定で決まる。
【００５８】
この実施形態では説明のため以下の動作状態になっていると仮定する。
【００５９】
図２のＬＰＡＲ０がサービスを提供する現用系でＬＡＰＲ１が待機系となっている。また、ディスク装置１１２は、現用系ＬＰＡＲで運用するサービスが使用しているとする。例えば、ディスク装置１１２にはデータベースのテーブルが格納されているとする。また、ディスク装置１１２はＰＣＩスロット０に接続されているＰＣＩカード（ＰＣＩデバイス）１１１に接続し（１２３）ている。
【００６０】
制御プログラム１０７のＰＣＩスロット割当表１０８は、図４の４００の状態になっている。また、ゲートキーパ１１０は、図８の状態になっているものとする。
【００６１】
＜図９のケース（ａ）＞
まず、ステップ１１００では、ＬＰＡＲ１のクラスタリングソフト１０４がＬＰＡＲ０で障害を発生していることを検出する。
【００６２】
ステップ１１０１では、クラスタリングソフト１０４から制御プログラム１０７に対して障害発生側のＬＰＡＲ０をデアクティベートするｄｅａｃｔコマンド（図３の（ａ））を発行する（１１３）。制御プログラム１０７は、このｄｅａｃｔコマンドをコマンド制御ルーチン１２４で解読し、ＬＰＡＲ０をデアクティベートする（１１４）。
【００６３】
ステップ１１０２では、クラスタリングソフト１０４から制御プログラム１０７に対して、障害発生側ＬＰＡＲ０のＰＣＩデバイスをＬＰＡＲ１にホット・リムーブするためにｒｅｍ＿ｐｃｉコマンド（図３の（ｄ））を発行する（１１３）。ｒｅｍ＿ｐｃｉコマンドの動作は、上述の図５のホット・リムーブルーチンの動作説明で、ｍ＝０、ｎ＝１と読み替えた動作をする。
【００６４】
ステップ１１０３では、クラスタリングソフト１０４から制御プログラム１０７に対して、障害発生側ＬＰＡＲ０のＰＣＩデバイスをＬＰＡＲ１にホット・アッドするためにａｄｄ＿ｐｃｉコマンド（図３の（ｃ））を発行する（１１３）。ａｄｄ＿ｐｃｉコマンドの動作は上述の図５のホット・アッドルーチンの動作説明で、ｍ＝１、ｎ＝０と読み替えた動作をする。
【００６５】
ステップ１１０４では、クラスタリングソフト１０４が、ａｄｄ＿ｐｃｉコマンドで接続したディスク１１２へアクセスできることを確認した後、障害側であるＬＰＡＲ０で実行していたサービスをＬＰＡＲ１のゲストＯＳ１上で起動する。
【００６６】
ステップ１１０５では、クラスタリングソフト１０４から制御プログラム１０７に対して障害発生側のＬＰＡＲ０をアクティベートするａｃｔコマンドを発行（１１３）し、待機系として再起動する。制御プログラム１０７は、このａｃｔコマンドをコマンド制御ルーチン１２４で解読し、ＬＰＡＲ０をアクティベートする（１１４）。
【００６７】
以上の処理は、図１０に示すように、障害が発生したＬＰＡＲ０は、デアクティベートされた後に、ＰＣＩデバイスはＬＰＡＲ０からホット・リムーブされ、その後、ＬＰＡＲ１へホット・アッドされて、ＰＣＩスロットの割り当て表１０８が更新される。この後、ＬＰＡＲ１ではＬＰＡＲ０で行われていたサービスが開始されて現用系（図中、稼動系）としてクライアントの要求を受けると共に、障害が発生したＬＰＡＲ０は待機系として再起動され、ＬＰＡＲ０、１は現用系と待機系が切り替わる。
【００６８】
これにより、単一のポートを備えたＰＣＩデバイスは、現用系のＬＰＡＲからホット・リムーブされた後に、待機系へホット・アッドされてＰＣＩデバイスの論理的な接続が変更されるので、必ず単一のＯＳの制御下に置かれながらも仮想的（論理的）にリムーブ（接続終了）とアッド（接続開始）が行うことができるので、再起動などの必要がなくなって、信頼性の高い仮想計算機システムをシングルポートのＰＣＩデバイスを用いることで安価にて提供することが可能となり、信頼性の向上と製造コストの低減を両立させることが可能となるのである。
【００６９】
＜図９のケース（ｂ）＞
ステップ１１０６は、上記ステップ１１００と同一の動作。
【００７０】
ステップ１１０７は、ステップ１１０２と同一の動作。
【００７１】
ステップ１１０８は、クラスタリングソフト１０４からＬＰＡＲ０のゲストＯＳ０に対して稼動中のサービスの停止とＯＳのシャットダウンを指示する（１０７）。クラスタリングソフト１０３は稼動中のサービスの停止とＯＳのシャットダウンを実行する。
【００７２】
ステップ１１０９は、ステップ１１０１と同一の動作。
【００７３】
後の動作は、上記で既に説明済みである。
【００７４】
この場合では、図１１で示すように、障害が生じたＬＰＡＲ０からＰＣＩデバイスがホット・リムーブされた後に、ＬＰＡＲ０のデアクティベートが行われ、その後は、上記ステップ１１０３以降と同様にＬＰＡＲ１にＰＣＩデバイスがホット・アッドされてＰＣＩスロットの割り当て表１０８が更新され、さらにＬＰＡＲ１でサービスが開始されて現用系と待機系が切り替わってから、障害の生じたＬＰＡＲ０が待機系として再起動されるのであり、単一のポートを備えたＰＣＩデバイスによって現用系と待機系を切り換えることが可能となる。
【００７５】
従来の物理計算機におけるＰＣＩデバイスのホットプラグは、ＰＣＩデバイスを抜き差ししたことでハードウェアがＧＰＥ（Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ  Ｅｖｅｎｔ）を起こすためのＳＣＩ（Ｓｙｓｔｅｍ  Ｃｏｎｔｒｏｌ  Ｉｎｔｅｒｒｕｐｔ）割り込みをＯＳに送ることでホットプラグ処理が始まる。ＳＣＩ割り込みを受けたＯＳはＧＰＥレジスタの内容を読みに行ってＰＣＩデバイスのホットプラグがあったことを知り、後はＡＣＰＩの規約に記載されたとおりのホットプラグ処理を開始する。
【００７６】
一方、本発明の特徴は、このＳＣＩ割り込み発生部分とＧＰＥレジスタを仮想計算機の制御プログラム１０７でエミュレートすることで論理的なＰＣＩデバイスのホット・プラグを実現することにある。
【００７７】
すなわち、制御プログラム１０７の管理下で複数の仮想計算機ＬＰＡＲが動作する仮想計算機システムで、現用系仮想計算機ＬＰＡＲ０と待機系仮想計算機ＬＰＡＲ１がある場合、待機系仮想計算機ＬＰＡＲ１が現用系仮想計算機ＬＰＡＲ０の障害を検出し、制御プラグラム１０７に報告すると、制御プログラム１０７が、待機系計算機ＬＰＡＲ１にＳＣＩ割り込みを仮想的に発行する。そして、ＯＳからのＧＰＥレジスタの参照リクエストに対して制御プログラム１０７がホットプラグ・イベントが起きたことを知らせるデータをハードウェアの代わりに返送する。このとき、制御プログラム１０７は、ＰＣＩデバイスを接続する仮想計算機ＬＰＡＲ１に対してアクセスを許可するように各仮想計算機をアクセスを許可するアドレスの設定を変更する。
【００７８】
こうして、ＳＣＩ割り込みを受けた仮想計算機ＬＰＡＲ１のＯＳのＡＣＰＩ処理ルーチンがＰＣＩデバイスのホットプラグ処理を行うことで論理的なＰＣＩデバイスのホットプラグが可能となるのであり、上記仮想計算機ＬＰＡＲ１にＰＣＩデバイスが新たに追加されることになる。
【００７９】
また、ＳＣＩ割り込みを受けた仮想計算機ＬＰＡＲ０のＯＳのＡＣＰＩ処理ルーチンがＰＣＩデバイスのホットリムーブ処理を行うことで論理的なＰＣＩデバイスのホットリムーブが可能となる。
【００８０】
これらの論理的（仮想的）なホット・プラグ。ホット・リムーブにより、単一のポートを備えたＰＣＩデバイス（ＰＣＩカード１１１）は、仮想計算機ＬＰＡＲ０から切り離される一方、仮想計算機ＬＰＡＲ１に接続され、現用系と待機系の仮想計算機で共有される。また、ＰＣＩデバイスは、現用系に常に接続されるので、待機系はＰＣＩデバイスにアクセスすることができず、このため、待機系に障害が発生しても、ＰＣＩデバイスのアクセスを防ぐことができ、より信頼性の高い計算機システムを構築することが可能となる。
【００８１】
なお、上記第一の実施形態ではＰＣＩカードに接続する装置をディスク装置の場合のみ説明したが、ネットワークカード等のディスク以外の装置に対して適用することができる。
【００８２】
また、現用系と待機系の仮想計算機を切り換えたときには、現用系のＣＰＵの割当比率が高くなるようにしても良く、例えば、現用系には９０％、待機系には１０％のＣＰＵの割当比率（割当時間）に設定することにより、多重化に伴う性能低下を抑制できる。このＣＰＵの割当比率の変更は、制御プログラム１０７において行えばよい。
【００８３】
次に、図１２は、本発明の第２実施形態を適用する計算機システムの構成図である。
【００８４】
上記第１実施形態の仮想計算機に変わって、計算機ハードウェアを物理的に分割し、一台の計算機を複数の計算機にする物理分割計算機（ＰＰＡＲ）に本発明を適用した実施形態を示す。
【００８５】
本実施形態の計算機システム９００は、ＣＰＵ９０３−０、９０３−１、９０３−２、９０３−３、９０６−０、９０６−１、９０６−２、９０６−３とＣＰＵバス９０７、９０８とメモリコントローラ９０９、９１０とスイッチ９０４、９０５とメモリコントローラ間ネットワーク９１１とメモリバス９１２、９１３と主記憶９１６、９１７とＩ／Ｏバス９１４、９１５とＩ／Ｏブリッジ９３０、９３１とＰＣＩバス９２２、９２３とＰＣＩスロット９２４−０、９２４−１、９２５−０、９２５−１とＰＣＩカード９２６、９２７とディスク装置９２９，９３６、ＳＶＰ（Ｓｅｒｖｉｃｅ  Ｐｒｏｃｅｓｏｒ）９４１、コントロールバス９４０、コンソール９４２から構成される。
【００８６】
ただし、本発明を適用できる計算機システムは、図１２で示されているＣＰＵやＩＯブリッジ、ＰＣＩバス、ＰＣＩスロット、ディスク装置の数に限定されない。
【００８７】
計算機システム９００は、物理分割計算機９０１（以下、ＰＰＡＲ０）と物理分割計算機９０２（以下、ＰＰＡＲ１）に物理的に分割できる。この分割は、管理者がコンソール９４２から設定し、ＳＶＰ９４１がメモリコントローラ内９０９、９１０内のスイッチ９０４、９０５を切り替えてメモリコントローラ間ネットワークを無効にすることで実現される。
【００８８】
管理者はコンソール９４２からＳＶＰ９４１上のＰＣＩスロット割り当て表９５０を設定することができる。ＰＣＩスロット割り当て表９５０の内容は、ＳＶＰ９４１がコントロールバス９４０、メモリコントローラ９０９、９１０、メモリバス９１２、９１３を通して、主記憶９１６、９１７上の制御プログラム９２０、９２１に反映される。ＯＳ９１８、９１９からは制御プログラム９２０、９２１で指定されたＰＣＩスロットが割り当てられることになる。
【００８９】
ＯＳ９１８、９１９からは主記憶９１６、９１７にある制御プログラム９２０、９２１が指定したＰＣＩスロット９２４−０、１、９２５−０、１に接続されているＰＣＩデバイス９２６または９２７しか接続されていないように見える。このため、メモリコントローラ９０９とＩ／Ｏブリッジ９３１の間には、内部バス１９４３が設けられ、メモリコントローラ９１０とＩ／Ｏブリッジ９３０の間には、内部バス１９４２が設けられる。なお、この制御プログラム９２０、９２１は一般にＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）と同一の機能を有するファームウェアである。
【００９０】
この第２の実施形態では、図１２のＰＰＡＲ０とＰＰＡＲ１でクラスタを構成し、例えば、ＰＰＡＲ０が現用系、ＰＰＡＲ１が待機系に割り当てられている。以下では、本発明をＰＰＡＲでクラスタを構成した場合のフェールオーバ動作をするにあたり、第１の実施形態と異なる点のみ説明することにする。
【００９１】
上記第１実施形態の図３、図４でＬＰＡＲと記述されている箇所がすべてＰＰＡＲとなり、図２のＰＣＩスロットの割り当て表１０８と図１２のＰＣＩスロットの割り当て表９５０は等価となる。
【００９２】
同じく、図３で示されているコマンドは主記憶上の制御プログラムからコントロールバス９４０を介してＳＶＰへ送られる。各ＰＰＡＲのデアクティベートやアクティベートはＳＶＰ９４１で実行される。つまり、ＳＶＰ９４１によりコマンドが対象としているＰＰＡＲの起動やシャットダウンの制御が実行される。
【００９３】
図５のホット・アッド処理では、第一の実施形態と異なる箇所を列挙する。
【００９４】
上記図５の全ステップについて、ＬＰＡＲをＰＰＡＲに置き換える。
【００９５】
同じく図５のステップ５０３は、ゲートキーパの設定変更がなくなり、ＯＳ上の制御プログラムからＳＶＰ９４１に対してＰＣＩスロット割り当て表９５０の変更をする要求をコントロールバス９４０経由で送る。ＳＶＰ９４１は、ＰＣＩスロット割り当て表８５０を更新し、ＰＣＩスロット割り当てをＰＰＡＲｎに変更する。
【００９６】
図６のホット・リムーブ処理で、第一の実施形態と異なる箇所を列挙する。
【００９７】
全ステップについて、ＬＰＡＲをＰＰＡＲに置き換える。
ステップ６０１で、制御プログラムは、ＯＳｎから対象ＰＣＩスロットへのアクセスを不許可に変更するためにＳＶＰ９４１に対して、ＰＣＩスロット割り当て変更の要求をコントロールバス９４０経由で送る。ＳＶＰ９４１はＰＣＩスロット割り当て表９５０でＰＣＩスロットｓのイネーブルフラグを０に設定する。
【００９８】
図９のフェールオーバ処理において、第一の実施形態と異なる箇所を列挙する。
【００９９】
全ステップについて、ＬＰＡＲと記述された部分がすべてＰＰＡＲに置き換わる。
【０１００】
以上の変更により第２の実施形態では、ＳＶＰ９４１のＰＣＩスロットの割り当て表９５０を更新することにより、ＰＰＡＲ０とＰＰＡＲ１で共有するシングルポートのＰＣＩデバイス（カード）９２６、９２７を仮想的にホット・リムーブ、ホット・アッドを行って、フェールオーバ処理においてＰＣＩデバイスをＰＰＡＲ間で論理的に付け替えが実現できるのである。
【０１０１】
なお、図１２において、データディスクとしてディスク装置９２９のみを使用している場合で、現用系をＰＰＡＲ０からＰＰＡＲ１へ切り換える際には、ＰＣＩカード９２６についてＰＣＩスロット割り当て表９５０を更新し、現用系に切り替わったＰＰＡＲ１はメモリコントローラ９０５、内部バス１９４２を介してディスク装置９２９にアクセスすることができる。
【０１０２】
図１３〜図１７は、第３の実施形態を示す。
【０１０３】
第３の実施形態では、図１３で示すように、ＰＣＩカード１００２に搭載されているＲＯＭ１００３上にホット・プラグ処理を起動するための割り込み信号を論理的に発行する制御プログラムが搭載されているケースである。
【０１０４】
図１３では、ＰＣＩバス１０００にＰＣＩスロット１００１があり、このＰＣＩスロット１００１にＰＣＩカード１００２が接続されている。ＰＣＩカード１００２は、信号線１００４を介してディスク装置１００５と接続されている。ＰＣＩカード１００２には、制御プログラムを格納しているＲＯＭ１００３が搭載されている。
【０１０５】
本実施形態は第一の実施形態の変形例であり、上記図２で示された仮想計算機システムでのＰＣＩカード１１１が、図１３のＰＣＩカード１００２と等価であると考えてよい。
【０１０６】
第一の実施形態と異なる点は、上記図５のホット・アッド処理において、ステップ５０４で第一の実施形態ではＳＣＩ割り込み信号を主記憶上の制御プログラム１０７が発行しているが、本実施形態ではＲＯＭ１００３上に格納されている制御プログラムから発行することが異なり、その他の点は上記図５と同様である。
【０１０７】
具体的には、図１４のタイムチャートで示すように、図２の主記憶上の制御プログラム１０７がＬＰＡＲ（図中ゲストＯＳ）から受け取ったａｄｄ＿ｐｃｉコマンドをコマンド制御ルーチン１２４が解読し、ハードウェア１０９上のＰＣＩカード１１１にＳＣＩ割り込み信号を送るように要求する。ＳＣＩ割り込み要求を受けたＰＣＩカード１００２は、図１３のＲＯＭ１００３上の制御プログラムがＳＣＩ割り込みを発行する。この割り込み信号を制御プログラム１０７は、ａｄｄ＿ｐｃｉコマンド発行元のＬＰＡＲへ送ることである。これにより、ＬＰＡＲはＧＰＥレジスタを参照した後、ＡＣＰＩ処理ルーチンを実行して、ＰＣＩカード１００２のマウントを行う。
【０１０８】
同様に図６のホット・リムーブ処理で第一の実施形態と異なる点は、ステップ６０３で制御プログラム１０７がＳＣＩ割り込みを発行していたことを、図１３のＲＯＭ１００３上に格納されている制御プログラムから発行することであり、その他は上記第１実施形態と同様である。
【０１０９】
具体的には、図１５のタイムチャートで示すように、図２の制御プログラム１０７がＬＰＡＲｍから受け取ったｒｅｍ＿ｐｃｉコマンドをコマンド制御ルーチン１２４が解読し、ハードウェア１０９上のＰＣＩカード１００２にＳＣＩ割り込み信号を送るように要求する。ＳＣＩ割り込み要求を受けたＰＣＩカード１００２は、図１３のＲＯＭ１００３上の制御プログラムがＳＣＩ割り込みを発行する。この割り込み信号を主記憶上の制御プログラム１０７は、ｒｅｍ＿ｐｃｉコマンドで指定したＬＰＡＲｎへ送る。この後、ＬＰＡＲｎは、ＧＰＥレジスタを参照してからＡＣＰＩ処理ルーチンを実行する。
【０１１０】
以上により、ＰＣＩカード１００２のＲＯＭ１００３に、ホット・プラグ処理を起動するための割り込み信号を論理的に発行する制御プログラムを格納することで、前記第１実施形態と同様に、ＰＣＩカード１００２の仮想的なホット・アッド及びホット・リムーブを実現することができる。これにより、単一のポートを備えたＰＣＩデバイスを、複数の仮想計算機の間で仮想的に切り換えて、システムの信頼性を向上できるのである。
【０１１１】
次に、図１６は図１３の構成を上記第２実施形態に示したように、物理的な計算機へ適用した場合のホット・アッドまたはホット・リムーブのタイムチャートの一例を示し、図１２のＰＣＩカード９２６、９２８及びディスク装置９２９、９３６を図１３に置き換えたものである。
【０１１２】
ホット・アッドの処理は上記図１４と同様であり、割り込み信号の送り先が物理計算機（図１２のＰＰＡＲ０、１及びＯＳ）である点が異なるだけである。
【０１１３】
上記図５のホット・アッド処理と同様に、ステップ５０４で第一の実施形態ではＳＣＩ割り込み信号を主記憶上の制御プログラム１０７が発行しているが、本実施形態ではＲＯＭ１００３上に格納されている制御プログラムから物理計算機のＯＳに発行する点が異なり、その他は前記第１実施形態と同様である。
【０１１４】
図１６のタイムチャートで示すように、図１２の主記憶上の制御プログラム９２０または９２１がＯＳから受け取ったａｄｄ＿ｐｃｉコマンドをコマンド制御ルーチンが解読し、ＰＣＩカード１００２にＳＣＩ割り込み信号を送るように要求する。ＳＣＩ割り込み要求を受けたＰＣＩカード１００２は、図１３のＲＯＭ１００３上の制御プログラムがＳＣＩ割り込みを発行する。制御プログラム９２０、９２１は、ａｄｄ＿ｐｃｉコマンド発行元のＯＳへ送る。これにより、ＯＳはＧＰＥレジスタを参照した後、ＡＣＰＩ処理ルーチンを実行して、ＰＣＩカード１００２のマウントを行う。
【０１１５】
同様に図６のホット・リムーブ処理で第一の実施形態と異なる点は、ステップ６０３で制御プログラム１０７がＳＣＩ割り込みを発行していたことを、図１３のＲＯＭ１００３上に格納されている制御プログラムから発行することである。
【０１１６】
すなわち、図１６のタイムチャートで示すように、図１２主記憶上の制御プログラム９２０または９２１がＯＳから受け取ったｒｅｍ＿ｐｃｉコマンドをコマンド制御ルーチンが解読し、ＰＣＩカード１００２にＳＣＩ割り込み信号を送るように要求する。ＳＣＩ割り込み要求を受けたＰＣＩカード１００２は、図１３のＲＯＭ１００３上の制御プログラムがＳＣＩ割り込みを発行する。この割り込み信号を主記憶上の制御プログラム９２０または９２１は、ｒｅｍ＿ｐｃｉコマンドで指定したＯＳへ送る。この後、ＯＳは、ＧＰＥレジスタを参照してからＡＣＰＩ処理ルーチンを実行する。
【０１１７】
以上により、ＰＣＩカード１００２のＲＯＭ１００３に、ホット・プラグ処理を起動するための割り込み信号を論理的に発行する制御プログラムを格納することで、図１４、図１５に示した仮想計算機の場合と同様に、物理計算機においても、ＰＣＩカード１００２の仮想的なホット・アッド及びホット・リムーブを実現することができる。
【０１１８】
次に、図１７は、図１３に示したディスク装置１００５に障害が発生した場合のタイムチャートを示し、計算機側は、図１６と同様の物理計算機とする。
【０１１９】
ＳＣＳＩ等のインターフェースを備えたＰＣＩカード１００２は、ＲＯＭ１００３上の制御プログラムによってディスク装置１００５に回復不能な障害が発生したことを検知すると、物理計算機のＧＰＥレジスタを設定するとともに、ＯＳに対してＳＣＩ割り込みを発生する。
【０１２０】
この割り込み信号を受信したＯＳは、ＧＰＥレジスタを参照してからＡＣＰＩ処理ルーチンを実行し、障害の発生したＰＣＩカード１００２をホット・リムーブする。
【０１２１】
こうして、ＰＣＩカード１００２に接続されたデバイスに障害が生じた場合にも、ＧＰＥレジスタを設定してＯＳへ割り込みをかけることにより、ＰＣＩデバイスのホット・リムーブを行うことができるのである。
【図面の簡単な説明】
【図１】本発明の仮想計算機システムの一実施形態を示すブロック図である。
【図２】同じく、仮想計算機システムの一例で、各構成要素間のインタラクションを示すブロック図である。
【図３】仮想計算機、あるいは物理分割計算機の制御プログラムで実行するコマンドの形式を示す図である。
【図４】ＰＣＩスロットの割り当てや有効／無効状態を管理するためのＰＣＩスロット割当表である。
【図５】ホット・アッド処理のフローチャートである。
【図６】ホット・リムーブ処理のフローチャートである。
【図７】仮想計算機システムにおける仮想計算機ごとに割り当てられた仮想アドレス空間と物理メモリの配置関係を示す図である。
【図８】ゲートキーパが所有するＰＣＩバスと、そのＰＣＩバスからアクセスする物理アドレスを割り出す表を示す図である。
【図９】フェールオーバ動作のフローチャートで、（ａ）は、障害側ＬＰＡＲのＯＳをシャットダウンせずにＬＰＡＲのデアクティベートするケースで、（ｂ）は障害側ＬＰＡＲのＯＳのシャットダウンをしてからＬＰＡＲのデアクティベートをするケースを示す。
【図１０】図９の（ａ）のケースに対応するタイムチャート。
【図１１】図９の（ｂ）のケースに対応するタイムチャート。
【図１２】第２の実施形態を示し、物理分割計算機の一例を示すブロック図である。
【図１３】第３の実施形態を示し、ＰＣＩカードの一例を示すブロック図である。
【図１４】仮想計算機でホット・アッド処理を行う場合の一例を示すタイムチャート。
【図１５】仮想計算機でホット・リムーブ処理を行う場合の一例を示すタイムチャート。
【図１６】物理計算機でホット・アッド（またはホット・リムーブ）処理を行う場合の一例を示すタイムチャート。
【図１７】同じく、ＰＣＩデバイス側の障害発生によるホット・リムーブの一例を示すタイムチャート。
【符号の説明】
１００  物理計算機
１０１  ＬＰＡＲ０
１０２  ＬＰＡＲ１
１０３、１０４  クラスタリングソフト
１０５、１０６  ＡＣＰＩ処理ルーチン
１０７  制御プログラム
１２４  コマンド制御ルーチン
１０８  ＰＣＩスロット割当表
１１０  ゲートキーパ
１１１  ＰＣＩカード
１１２  ディスク装置
２０３  メモリコントローラ
２０５  主記憶
２０６、２０６−ｎ  ゲストＯＳ
２０９  Ｉ／Ｏブリッジ
２１２−０  ＰＣＩスロット０
２１２−１  ＰＣＩスロット１
２２０  コンソール装置
４００、４０１、４０２  ＰＣＩスロット割当表
７００  ＬＡＰＲ０の仮想アドレス空間
７０１  ＬＡＰＲ１の仮想アドレス空間
７０２  物理アドレス空間
９０４、９０５  スイッチ
９２０、９２１  制御プログラム
９４０  コントロールバス
９４１  ＳＶＰ
９４２  コンソール
９５０  ＰＣＩスロット割当表
１０００  ＰＣＩバス
１００１  ＰＣＩスロット
１００２  ＰＣＩカード
１００３  ＲＯＭ
１００５  ディスク装置
【図１】
2004252591.tif 000003
【図２】
2004252591.tif 000004
【図３】
2004252591.tif 000005
【図４】
2004252591.tif 000006
【図５】
2004252591.tif 000007
【図６】
2004252591.tif 000008
【図７】
2004252591.tif 000009
【図８】
2004252591.tif 000010
【図９】
2004252591.tif 000011
【図１０】
2004252591.tif 000012
【図１１】
2004252591.tif 000013
【図１２】
2004252591.tif 000014
【図１３】
2004252591.tif 000015
【図１４】
2004252591.tif 000016
【図１５】
2004252591.tif 000017
【図１６】
2004252591.tif 000018
【図１７】
2004252591.tif 000019