(57)【要約】【課題】複数の仮想計算機にて共有使用されるＩ／Ｏデバイスの障害リカバリ処理を、矛盾なく、且つＩ／Ｏデバイスを共有使用していない仮想計算機に対しても影響が出ないように実施する。【解決手段】ハイパバイザが物理Ｉ／Ｏデバイスの障害監視を行い、障害発生時には障害検出を管理用仮想計算機に通知し、通知を受けた管理用仮想計算機が物理Ｉ／Ｏデバイスの障害リカバリ処理を行う。【選択図】図２
2008186209.tif 000002
【特許請求の範囲】
【請求項１】
物理計算機上でハイパバイザの制御下で複数の仮想計算機が走行し、前記複数の仮想計算機にはユーザに提供される複数のユーザ仮想計算機と管理仮想計算機が含まれ、前記複数のユーザ仮想計算機がハイパバイザの制御下で物理Ｉ／Ｏデバイスを共有使用する仮想計算機システムのＩ／Ｏデバイス障害処理方法において、
前記ハイパバイザは前記物理Ｉ／Ｏデバイスの障害監視を行い、障害発生時には障害検出を前記管理用仮想計算機に通知し、該通知を受けた前記管理用仮想計算機は前記物理Ｉ／Ｏデバイスの障害リカバリ処理を行うことを特徴とする仮想計算機システムのＩ／Ｏデバイス障害処理方法。
【請求項２】
前記ハイパバイザは、前記物理Ｉ／Ｏデバイスの障害発生時には障害検出を前記複数のユーザ仮想計算機に通知し、該通知を受けたユーザ仮想計算機はＩ／Ｏ駆動抑止を行うことを特徴とする請求項１記載の仮想計算機システムのＩ／Ｏデバイス障害処理方法。
【請求項３】
前記物理Ｉ／Ｏデバイスは障害情報を設定する物理レジスタを備え、前記ハイパバイザは前記物理Ｉ／Ｏデバイスを仮想化制御するために前記物理レジスタに対応した論理レジスタを各仮想計算機対応に備え、前記物理Ｉ／Ｏデバイスの障害発生時に、前記ハイパバイザは前記物理レジスタに設定されたステータスに基づいて前記管理仮想計算機用の論理レジスタに実障害を示すステータスを設定して前記管理仮想計算機に通知すると共に、前記ユーザ仮想計算機用の論理レジスタに仮想障害を示すステータスを設定して前記ユーザ仮想計算機に通知することを特徴とする請求項２記載の仮想計算機システムのＩ／Ｏデバイス障害処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機システムのＩ／Ｏデバイス制御方法に係り、特に物理Ｉ／Ｏデバイスを複数の仮想計算機上で論理Ｉ／Ｏデバイスとして共有使用する際における、物理Ｉ／Ｏデバイスの障害処理に関する。
【背景技術】
【０００２】
仮想計算機システムにおける物理Ｉ／Ｏデバイスの共有使用は、ハイパバイザにより物理Ｉ／Ｏデバイスを論理Ｉ／Ｏデバイスとして分割共有し、Ｉ／Ｏデバイスを制御するデバイスドライバを持つ仮想計算機に実行権を割り当て制御する。通常のＩ／Ｏ動作においては、論理Ｉ／Ｏデバイスのレジスタを物理Ｉ／Ｏレジスタに割り当て、Ｉ／Ｏデータ領域はそれぞれ論理Ｉ／Ｏデバイスを使用する仮想計算機上の論理的なメモリ空間を使用することで、論理セパレートできる仕組みを利用できるが、Ｈ／Ｗ障害発生時におけるＩ／Ｏデバイスの障害リカバリ処理においては、そのＩ／Ｏデバイスに対応するデバイスドライバによる制御操作が不可欠となる。この場合、単純に仮想計算機上のＩ／Ｏデバイスドライバ制御による障害リカバリ処理を実施すると、Ｉ／Ｏデバイスを共有使用している全ての仮想計算機が同時に障害リカバリ処理を実施してしまう為に、処理の競合が発生する可能性がある。その為、従来デバイスドライバが行っていた、Ｉ／Ｏデバイスを共有使用している全仮想計算機に対してのＩ／Ｏの停止、Ｉ／Ｏアダプタに対しての障害リカバリ処理、Ｉ／Ｏデバイスを共有使用している全仮想計算機に対してのＩ／Ｏの再開、といった処理をハイパバイザが実施することにより、仮想計算機に対して、矛盾なく共有Ｉ／Ｏデバイスを提供できる。
仮想計算機におけるＩ／Ｏデバイスの共有に関する技術は特開２００６−８５５４３号公報に記載されている。
【０００３】
【特許文献１】特開２００６−８５５４３公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、ハイパバイザ内にデバイス制御シーケンスを持つことは、そのＩ／Ｏデバイスに対応するデバイスドライバの一機能をハイパバイザ内に移植することと等しく、更にＩ／Ｏデバイスのデバイスドライバ、ファームウェア、ハードウェアのバージョンに適応していることも必要であり、これはＩ／Ｏデバイスの開発毎にハイパバイザも常に機能追従することが必要となる。これにより、仮想計算機システムにおける仮想計算機上のデバイスドライバと物理Ｉ／Ｏデバイスの透過性がなくなることとなりハイパバイザ開発の効率を著しく低下することとなる。さらに、障害リカバリ処理を全仮想計算機を制御するハイパバイザが行う為に、Ｉ／Ｏデバイスを共有使用していない仮想計算機に対しての処理性能を著しく低下させる可能性が生じる。
【０００５】
仮想計算機で物理Ｉ／Ｏデバイスを共有利用するとＩ／Ｏデバイス仮想化制御において、物理Ｉ／Ｏデバイスの障害及び復旧処理には複数からの仮想計算機上のデバイスドライバであるアダプタドライバの物理Ｉ／Ｏデバイスを制御するための調停制御を行うため、Ｉ／Ｏデバイス仮想化制御のオーバヘッドが共有利用の弊害となる。
【０００６】
本発明の目的は、仮想計算機システムにおいて共有使用するＩ／Ｏデバイスの障害リカバリ処理を矛盾なく行うことと共に、Ｉ／Ｏデバイスの開発毎でのハイパバイザの機能追従を極力避け、さらに障害リカバリ処理中のＩ／Ｏデバイスを共有使用していない仮想計算機の性能低下を防ぐことにある。
【課題を解決するための手段】
【０００７】
本発明は、ハイパバイザが物理Ｉ／Ｏデバイスの障害監視を行い、障害発生時には障害検出を管理用仮想計算機に通知し、該通知を受けた管理用仮想計算機が物理Ｉ／Ｏデバイスの障害リカバリ処理を行うことを特徴とする仮想計算機システムのＩ／Ｏデバイス障害処理方法である。
【発明の効果】
【０００８】
本発明によれば、Ｉ／Ｏデバイスの障害処理は一つの管理仮想計算機によって行われる為、障害リカバリ処理の競合を無くすことができる。
また、Ｉ／Ｏデバイスに特化した障害処理は、管理仮想計算機上のアダプタドライバが実施する為に、Ｉ／Ｏデバイスを共有していない仮想計算機に対しての影響を抑えることが可能となる。
【０００９】
さらに、Ｉ／Ｏデバイスの開発毎においても、Ｉ／Ｏデバイスに特化した処理シーケンスは対応したデバイスドライバを管理仮想計算機上で使用するのみで十分であり、障害リカバリ処理に係るハイパバイザで行う機能追従は、障害の検出/通知機能のみで対応が可能となる為に、デバイスドライバとＩ／Ｏデバイスの透過性を保ちハイパバイザとＩ／Ｏデバイス（ハードウェア／ファームウェア／アダプタドライバ）のバージョンとの依存性を低くすることが可能であり、ハイパバイザの開発効率を向上させることが可能となる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態を、図面に基づいて説明する。
【００１１】
図１は、本発明に係わる、物理計算機上のハイパバイザ、ハイパバイザが共有デバイスとして制御する物理Ｉ／Ｏデバイスと、仮想計算機、仮想計算機が使用する論理Ｉ／Ｏデバイスの概念図である。
【００１２】
物理計算機１００に搭載されている物理Ｉ／Ｏデバイス１０５は物理レジスタ１０６を有し、ハイパバイザ１０１によって論理Ｉ／Ｏデバイスレジスタ１０８−１を有する論理Ｉ／Ｏデバイス１０７−１と論理Ｉ／Ｏデバイスレジスタ１０８−２を有する論理Ｉ／Ｏデバイス１０７−２と論理Ｉ／Ｏデバイスレジスタ１０８−３を有する論理Ｉ／Ｏデバイス１０７−３に仮想的に分割され資源を提供する。管理仮想計算機１０２のアダプタドライバ１０４−１は論理レジスタ１０８−１を使用し、ユーザ仮想計算機１０３−１のアダプタドライバ１０４−２は論理レジスタ１０８−２を使用し、ユーザ仮想計算機１０３−２のアダプタドライバ１０４−３は論理レジスタ１０８−３を使用する。
【００１３】
図２は、図１の構成の詳細を示し、物理Ｉ／Ｏデバイス１０５に発生した障害をハイパバイザ１０１の制御による管理仮想計算機１０２とユーザ仮想計算機１０３−１と１０３−２への伝達方法を示したものである。
【００１４】
物理Ｉ／Ｏデバイス１０５に障害が発生すると障害情報が物理レジスタ１０６に設定され、ハイパバイザ１０１の障害監視／通知機能１０９は、物理Ｉ／Ｏデバイス１０５からの割り込みを契機に物理レジスタ１０６のステータスを参照し、障害が発生していると物理Ｉ／Ｏデバイス１０５の障害発生として障害を検出する。
【００１５】
ハイパバイザ１０１の障害監視／通知機能１０９の制御は、複数仮想計算機のうち管理仮想計算機１０２に対して論理レジスタ１０８−１に実障害を示すステータスを設定して割り込みを生成する。また、ユーザ仮想計算機１０３−１と１０３−２に対して論理レジスタ１０８−２と１０８−３に仮想障害を示すステータスを設定して割り込みを生成する。
【００１６】
管理仮想計算機１０２およびユーザ仮想計算機１０３上のアダプタドライバは、割り込み受付を契機に論理レジスタ１０８のステータスを参照し、管理仮想計算機１０２のドライバ制御においては実障害ステータスが報告されたことにより障害リカバリ処理を実施、ユーザ仮想計算機１０３のドライバ制御においては仮想障害ステータスが報告されたことによりＩ／Ｏ駆動抑止の措置を行う。
【００１７】
図３は、図２の事後処理で管理仮想計算機１０２による物理Ｉ／Ｏデバイス１０５の障害復旧の通知と制御方法を示したものである。
【００１８】
ハイパバイザ１０１は、管理仮想計算機１０２のアダプタドライバ１０４−１による論理レジスタ１０８−１のステータスがリカバリ完了となったことを検出、あるいは、物理Ｉ／Ｏデバイス１０５からの割り込みを契機とする物理レジスタ１０６を参照し、ステータスがリカバリ完了となっていることを確認すると、管理仮想計算機１０２のアダプタドライバ１０４−１で障害リカバリが完了したことを認識する。
【００１９】
ハイパバイザ１０１は障害リカバリ完了認識の後、ユーザ仮想計算機１０３−１と１０３−２の論理レジスタ１０８−２及び論理レジスタ１０８−３のステータスを障害復旧に設定し割り込みを生成することにより、ユーザ仮想計算機１０３−１と１０３−２のアダプタドライバ１０４−２と１０４−３にＩ／Ｏデバイスが障害復旧したことが認識され、Ｉ／Ｏ駆動抑止を解除しＩ／Ｏ駆動が再開となる。
【００２０】
本発明により、仮想計算機システムにおいて特有のＩ／Ｏデバイス専用デバイスドライバによって保障された障害処理が実現でき、Ｉ／Ｏデバイスを共有使用していない仮想計算機に対するパフォーマンス低下を防止出来、安定した高品質な仮想Ｉ／Ｏデバイスを提供することが可能となる。
【００２１】
また、Ｉ／Ｏデバイスとアダプタドライバの機能追従によるＩ／Ｏデバイスに依存するドライバ制御機構のハイパバイザへの組み込みを不要とするため、仮想計算機のＩ／Ｏデバイス仮想化の開発効率を向上させる。
【図面の簡単な説明】
【００２２】
【図１】本発明による複数の仮想計算機上におけるＩ／Ｏデバイス障害処理を実現するシステム概要構成を示す図である。
【図２】物理Ｉ／Ｏデバイスの障害を仮想計算機まで伝達する方法を示した図である。
【図３】管理仮想計算機における障害リカバリ処理完了後のユーザ仮想計算機に対する復旧通知方法を示した図である。
【符号の説明】
【００２３】
100 物理計算機
101 ハイパバイザ
102 管理仮想計算機
103 ユーザ仮想計算機
104 アダプタドライバ
105 物理Ｉ／Ｏデバイス
106 物理レジスタ
107 論理Ｉ／Ｏデバイス
108 論理レジスタ
109 障害監視/通知機能
【図１】
2008186209.tif 000003
【図２】
2008186209.tif 000004
【図３】
2008186209.tif 000005