(57)【要約】【課題】仮想計算機に障害が発生してメモリダンプを採取する場合に、仮想計算機の業務再開までの停止時間を短縮させる。【解決手段】物理計算機上に動作する一の仮想計算機に割り当てられるメモリ領域内に格納する障害情報を他の仮想計算機が補助記憶装置にダンプできるように、障害情報を格納するメモリ領域のダンプ対象領域のアドレスを他の仮想計算機に割り当てられたメモリ領域内のダンプ処理領域のアドレスに上書きすることによって、他の仮想計算機に割り当てられたメモリ領域と物理メモリとのマッピング情報を管理するページテーブルの内容を変更する。【選択図】図１
2005122334.tif 000002
【特許請求の範囲】
【請求項１】
第１のＯＳを実行する第１の仮想計算機と第２のＯＳを実行する第２の仮想計算機を動作させる少なくとも１つプロセッサと、
前記第１と第２の仮想計算機に割り当てられる第１と第２のメモリ領域を有するメモリと、
補助記憶装置を備える仮想計算機システムにおいて、
前記第１と第２のメモリ領域から前記メモリへのマッピングを管理するアドレス変換手段と、
前記第１の仮想計算機に発生する障害を検出する障害検出手段と、
前記障害が検出されると前記第１の仮想計算機を再起動するメモリ退避手段と、
前記アドレス変換手段を制御する制御手段と、
前記第１のメモリ領域に格納する情報を前記補助記憶装置にダンプするダンプ手段を備えることを特徴とする仮想計算機システム。
【請求項２】
前記第２のＯＳが前記ダンプ手段を用いて前記第１のメモリ領域に格納する情報を前記補助記憶装置にダンプすることを特徴とする請求項１に記載の仮想計算機システム。
【請求項３】
前記アドレス変換手段は、前記第１と第２のメモリ領域とから前記メモリへのマッピングを管理する第１と第２のページテーブルを有することを特徴とする請求項１に記載の仮想計算機システム。
【請求項４】
前記アドレス変換手段を制御する制御手段は、前記メモリに格納されるハイパバイザであることを特徴とする請求項１に記載の仮想計算機システム。
【請求項５】
前記第１のメモリ領域に格納される内容を前記メモリの空き領域に保存し、前記第１の仮想計算機を再起動する前記メモリ退避手段を備えることを特徴とする請求項１に記載の仮想計算機システム。
【請求項６】
第１と第２のＯＳを実行する第１と第２の仮想計算機を動作させる少なくとも１つのプロセッサと、
前記第１と第２の仮想計算機の各々に割り当てられる第１と第２のメモリ領域を有するメモリであって、前記第１と第２のメモリ領域からのマッピングを管理するアドレス変換手段を格納するメモリと、
補助記憶装置を備える仮想計算機システムにおいて、
前記第１の仮想計算機に発生する障害を検出する障害検出手段と、
前記障害検出手段により障害が検出されると前記第１の仮想計算機を再起動するメモリ退避手段と、
前記第１のメモリ領域のダンプ対象領域にマッピングされる第１のアドレスを取得し、前記第２のメモリ領域のダンプ処理用領域にマッピングされる第２のアドレスを取得し、前記第２のアドレスを前記第１のアドレスに変換する制御手段と、
前記第１のメモリ領域に格納する情報を前記補助記憶装置にダンプするダンプ手段を備えることを特徴とする仮想計算機システム。
【請求項７】
前記第２のＯＳが前記ダンプ手段を用いて前記第１のメモリ領域に格納する情報を前記補助記憶装置にダンプすることを特徴とする請求項６に記載の仮想計算機システム。
【請求項８】
前記アドレス変換手段は、前記第１と第２のメモリ領域とから前記メモリへのマッピングを管理する第１と第２のページテーブルを有することを特徴とする請求項６に記載の仮想計算機システム。
【請求項９】
前記アドレス変換手段を制御する制御手段は、前記メモリに格納されるハイパバイザであることを特徴とする請求項６に記載の仮想計算機システム。
【請求項１０】
前記第１のメモリ領域に格納される内容を前記メモリの空き領域に保存し、前記第１の仮想計算機を再起動する前記メモリ退避手段を備えることを特徴とする請求項６に記載の仮想計算機システム。
【請求項１１】
少なくとも１つ以上の仮想計算機を動作させるプロセッサと、前記仮想計算機に割り当てられたメモリ領域を有するメモリと、補助記憶装置を有する計算機システムが行うメモリダンプ方法であって、
前記仮想計算機の障害を検出し、
前記メモリ領域に格納される内容を保存し、
前記仮想計算機を再起動し、
前記メモリ領域の内容を前記補助記憶装置に出力することを特徴とするメモリダンプ方法。
【請求項１２】
第１のＯＳを実行する第１の仮想計算機と、第２のＯＳを実行する第２の仮想計算機を動作させる少なくとも１つプロセッサと、
前記第１と第２の仮想計算機に割り当てられる第１と第２のメモリ領域と、前記第１と第２のメモリ領域からのマッピングを管理するアドレス変換手段を格納するメモリと、
補助記憶装置を備える仮想計算機システムが実行するメモリダンプ方法であって、
前記第１の仮想計算機に発生する障害を検出し、
前記第1のメモリ領域に格納される内容を保存し、
前記第１の仮想計算機を再起動し、
前記第１のメモリ領域に格納する情報を前記第２のＯＳがアクセスできるように前記アドレス変換手段を制御し、
前記第１のメモリに格納する情報を前記補助記憶装置に出力することを特徴とするメモリダンプ方法。
【請求項１３】
第１と第２の仮想計算機を動作させるプロセッサと、
前記第１と第２の仮想計算機に割り当てられた第１と第２のメモリ領域を有するメモリと、
補助記憶装置を備える仮想計算機システムが実行する、前記第１の仮想計算機に発生する障害に関する情報を前記第１のメモリ領域から前記補助記憶装置にダンプするためのアドレス変換プログラムであって、
前記第１の仮想計算機に障害が検出されると前記第１のメモリ領域に格納する情報を保存し、前記第１の仮想計算機を再起動するステップと、
前記第１のメモリ領域のダンプ対象領域にマッピングされる第１のアドレスを取得するステップと、
前記第２のメモリ領域のダンプ処理用領域にマッピングされる第２のアドレスを取得するステップと、
前記第２のアドレスを前記第１のアドレスに変換するステップを実行することを特徴とするアドレス変換プログラム。
【請求項１４】
前記アドレス変換プログラムは、前記メモリに格納されるハイパバイザが実行することを特徴とする請求項１３に記載のアドレス変換プログラム。
【請求項１５】
第１のＯＳを実行する第１の仮想計算機と第２のＯＳを実行する第２の仮想計算機を動作させる少なくとも１つのプロセッサと、前記第１の仮想計算機と前記第２の仮想計算機の各々に割り当てられる第１のメモリ領域と第２のメモリ領域を有するメモリであって、前記第１のメモリ領域からのマッピングを管理する第１のページテーブルと前記第２のメモリ領域からのマッピングを管理する第２のページテーブルと前記第１のページテーブルと前記第２のページテーブルを管理するハイパバイザを格納するメモリと、補助記憶装置を有する仮想計算機システムにおいて、
前記第２のＯＳは、前記第２のメモリ領域においてダンプ処理領域を設定し、前記ダンプ処理用領域の仮想アドレスを前記ハイパバイザに通知する通信手段と、前記第２のメモリ領域に格納する情報を前記補助記憶装置にダンプするダンプ手段を備え、
前記ハイパバイザは、前記第１のＯＳに発生する障害を検出する障害検出用手段と、前記メモリに第３のメモリ領域を設定し、前記第３のメモリ領域と前記メモリとのマッピング情報を管理する第３のページテーブルを生成し、前記第１のＯＳを再起動するメモリ退避手段を備え、
前記ハイパバイザは、前記第１のメモリ領域において前記第１のページテーブルに基づいて前記ダンプ対象領域の実アドレスを取得し、前記ダンプ処理用領域の仮想アドレスを前記通信手段より取得し、前記第２のページテーブルに基づいて前記ダンプ処理用領域の実アドレスを取得し、該取得した前記ダンプ処理用領域の実アドレスを前記取得したダンプ対象領域の実アドレスに変換し、
前記第２のＯＳは、前記変換されたダンプ対象領域の実アドレスに基づいて前記ダンプ手段を用いて前記ダンプ対象領域に格納する情報を前記補助記憶装置にダンプすることを特徴とする仮想計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリダンプ方法、メモリダンプ用プログラム及びそれらを実行する仮想計算機システム関する。
【背景技術】
【０００２】
計算機に障害が発生した場合、障害の原因を解析するためにメモリダンプを採取する手法が用いられる。メモリダンプ中は、ダンプ対象のメモリ内容を上書きすることができないことから、通常メモリダンプ処理が完了してから計算機の再起動を行っていた。そのため、メモリダンプ処理が計算機の停止時間を増大させるという問題があった。一方、計算機上に複数の仮想計算機を構築して運用する仮想計算機システムにおいても、メモリダンプの処理時間に関する問題は同様に存在する。
【０００３】
このような問題を考慮し、ダンプ処理による計算機の再起動の遅延を回避する技術として、特開２００１−２９０６７７号公報に開示されている技術がある。
【０００４】
【特許文献１】特開２００１−２９０６７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特開２００１−２９０６７７号公報に開示されている技術は、計算機システムを通常業務系と待機系に分割し、ダンプ対象のメモリを待機系のメモリに退避する。しかしながら、メモリコピーの所要時間による計算機システム再起動の遅延の問題が依然として存在する。
【０００６】
本発明は、障害が発生した仮想計算機が迅速に業務を再開できるメモリダンプを実現することを目的とする。
【課題を解決するための手段】
【０００７】
物理計算機上に動作する一の仮想計算機に割り当てられるメモリ領域内に格納する障害情報を他の仮想計算機が補助記憶装置にダンプできるように、障害情報を格納するメモリ領域のダンプ対象領域のアドレスが他の仮想計算機に割り当てられたメモリ領域内のダンプ処理領域のアドレスに上書きされることによって、他の仮想計算機に割り当てられたメモリ領域と物理メモリとのマッピング情報を管理するページテーブルの内容を変更する。
【発明の効果】
【０００８】
仮想計算機に障害が発生してメモリダンプを採取する場合、当該仮想計算機の再起動を即座に開始することができ、障害発生による仮想計算機の業務停止時間を短く抑えることができる。
【発明を実施するための最良の形態】
【０００９】
図１は、メモリダンプを実行する仮想計算機システムの一構成例を示す。
【００１０】
物理計算機１００は、プロセッサ１０４とホストメモリ１０５（物理メモリ）を備えている。物理計算機１００上でハイパバイザ１０１と呼ばれる制御プログラム（以下、ハイパバイザという）が動作する。ハイパバイザ１０１により構築される仮想計算機１０２ａと１０２ｂ（以下、仮想計算機１０２という）が物理計算機１００上で動作する。ホストメモリ１０５の領域がハイパバイザ１０１により分割され、仮想計算機１０２に対してゲストメモリ１０６ａと１０６ｂ（以下、ゲストメモリ１０６という）として割り当てられる。仮想計算機１０２ａと１０２ｂ上でオペレーティングシステム１０３ａ、１０３ｂ（以下、ＯＳ１０３という）がそれぞれ動作する。
【００１１】
このように、物理計算機のプロセッサ１０４やホストメモリ１０５などの物理的資源がハイパバイザ１０１により排他的または時間的に分割され、仮想計算機１０２ａと１０２ｂに対して提供され、仮想計算機システムが構築される。
【００１２】
図１に示される障害検出手段１１００が仮想計算機１０２ａに発生する障害を検出すると、メモリ退避手段１１０１が仮想計算機１０２ａに割り当てられたメモリ領域（ゲストメモリ１０６ａ）に格納される情報を保存し、仮想計算機１０３ａを再起動する。ＯＳ１０３ｂは、ゲストメモリ１０６ｂ上にダンプ処理用領域を設定し、ダンプ処理領域のアドレスを通信手段１１０４によりハイパバイザ１０４に通知する。ハイパバイザ１１０１は、ゲストメモリ１０６ａ上にダンプ処理対象領域のアドレスを取得し、ダンプ処理領域のアドレスに上書きすることによってアドレス変換を行い、通信手段１１０１によりＯＳ１０３ｂに通知する。ＯＳ１０３ｂは、ハイパバイザ１０１が行ったアドレス変換によってダンプ処理対象領域にアクセスでき、ダンプ処理対象領域に格納する情報をダンプし、補助記憶装置に出力することができる。
【００１３】
このように、仮想計算機１０２ａに障害が発生した場合においてゲストメモリ１０６ａに格納される障害情報を仮想計算機１０２ｂがダンプ手段を用いて行うことを説明した。
【００１４】
一方、仮想計算機１０３ｂに障害が発生し場合又は仮想計算機１０３ａと１０３ｂの両方に障害が発生した場合、上述と同様の方法によりにゲストメモリ１０３ａに格納される障害情報のダンプ処理を行う。この場合、ゲストメモリ１０３ｂに格納される障害情報を再起動された仮想計算機１０３ｂがダンプを行うために、上述のハイパバイザ１０１によるアドレス変換を行うまでもない。
【００１５】
図１に示される障害検出手段１１００、メモリ退避手段１１０１、通信手段１１０４、ダンプ手段１１０３及びそれらを有する計算機システムが実行するメモリダンプの処理についての詳細な説明は後述する。
【００１６】
図２に、仮想計算機システムのプロセッサ１０４とホストメモリ１０５の一構成例を示す。
【００１７】
図２(ａ)に、仮想計算機システムプロセッサ１０４の構成を示す。
【００１８】
プロセッサ１０４には、ＰＳＲ２００、ＩＨＢ２０１及びＴＬＢ３０１という３つの制御レジスタを有する。
【００１９】
ＰＳＲ２００は、プロセッサの動作モードを示すレジスタである。
【００２０】
ＰＳＲ２００の特権ビット（以下、Ｐビットという）２０２は、プロセッサ１０４の動作モードを示す。Ｐビット２０２が「１」の場合、プロセッサ１０４は特権モードで動作する。一方、Ｐビット２０２が「０」の場合、プロセッサ１０４は非特権モードで動作する。なお、ハイパバイザ１０１は特権モードで動作する。
【００２１】
ＰＳＲ２００のアドレス変換ビット（以下、Ｔビットという）３００は、プロセッサ１０４のアドレス変換を制御する。Ｔビット３００が「１」の場合、プロセッサ１０４は、後述のＴＬＢ３０１を用いてアドレス変換を行う。Ｔビット３００の値が「０」の場合、アドレス変換を行わない。ハイパバイザ１０１が仮想計算機１０２を起動する場合、Ｔビット３００を「１」に設定する。
【００２２】
ＩＨＢ２０１は、後述の割り込みハンドラ２０４のアドレスを格納するレジスタである。プロセッサ１０４に対して割り込みが発生すると実行中の処理が中断され、割り込みハンドラへ分岐する。
【００２３】
ＴＬＢ３０１は、ホストメモリ１０５とゲストメモリ１０６とのマッピングを管理する後述のページテーブル３０２の内容を記憶するレジスタである。
【００２４】
図２(ｃ)に、ＴＬＢ３０１の構成を示す。
【００２５】
ＴＬＢ３０１は、有効ビット（以下、Ｖビットという）４００、アクセス制御ビット（以下、Ｃビットという）４０１、仮想ページアドレス４０２及び実ページアドレス４０３の各フィールドを有する。
【００２６】
Ｖビット４００は、エントリの有効／無効を表すフラグである。例えば、Ｖビット４００が「１」の場合、エントリが有効であり、「０」の場合、エントリは無効である。
【００２７】
Ｃビット４０１は、エントリにより変換されたメモリ領域に対するアクセスを制御するフラグである。Ｃビットは、ＰＳＲ２００のＰビットとの組み合わせで、ＯＳ１０３によるメモリ領域のアクセスができるか否かが決まる。Ｃビットが「０」であり、かつＰビットが「１」の場合、ＯＳ１０３によるアクセスができる。一方、Ｃビットが「１」の場合であり、かつＰビットが「０」の場合、アクセス違反例外による割り込みが発生する。
【００２８】
仮想ページアドレス４０２は、ＯＳ１０３が管理する仮想空間上のページアドレスを格納するフィールドである。但し、仮想計算機システムではＯＳ１０３のアドレス変換モードで動作する場合、ゲスト仮想ページアドレスを格納する。一方、ＯＳ１０３が非アドレス変換モードで動作する場合、ゲスト実ページアドレスを格納する。
【００２９】
実ページアドレス４０３は、ホストメモリ１０５（物理メモリ）上のページアドレスを格納するフィールドである。仮想計算機システムにおいては、実ページアドレス４０３は、ホスト実ページアドレス４０６を格納する。
【００３０】
なお、ＰＳＲ２００、ＩＨＢ２０１及びＴＬＢ３０１は特権レジスタである。プロセッサ１０４が非特権モードで動作するときにＰＳＲ２００、ＩＨＢ２０１及びＴＬＢ３０１にアクセスすると割り込みが発生する。
【００３１】
図２(ｂ)に、ホストメモリ１０５の構成を示す。
【００３２】
ホストメモリ１０５は、仮想計算機１０２ａと１０２ｂが使用するゲストメモリ１０６ａと１０６ｂに対してハイパバイザ１０１によって割り当てられたゲストメモリ領域を有する。また、ホストメモリ１０５は、割り込みハンドラ２０４と制御テーブル２０３を格納する領域を有する。さらに、ホストメモリ１０５は、図示していない他の空き領域を有する。
【００３３】
ゲストメモリ１０６は、ゲスト割り込みハンドラ２０５とゲストページテーブル３０７を格納する領域を有する。
【００３４】
ゲスト割り込みハンドラ２０５は、ＯＳ１０３自身が作成した割り込みハンドラをいう。
【００３５】
ゲストページテーブル３０７は、仮想計算機１０２が作り出した仮想空間上のアドレス（以下、ゲスト仮想ページアドレス）をゲストメモリ上のアドレス（以下、ゲスト実ページアドレス）へのマッピングをページ単位で管理するテーブルである。
【００３６】
割り込みハンドラ２０４は、ハイパバイザ１０１自らが作成し、実行する割り込みハンドラをいう。
【００３７】
制御テーブル２０３は、仮想計算機１０２の状態を管理するための管理情報を格納する領域である。
【００３８】
制御テーブル２０３は、ページテーブル３０２ａと３０２ｂ（以下、ページテーブル３０２という）、ゲストＰＳＲ３０３ａと３０３ｂ（以下、ゲストＰＳＲ３０３という）、ゲストＩＨＢ２０６ａと２０６ｂ（以下、ゲスト２０６という）及びゲストＴＬＢテーブル３０４ａと３０４ｂ（以下、ゲストＴＬＢテーブル３０４という）を格納する領域を有する。
【００３９】
ページテーブル３０２は、ゲストメモリ１０６上のアドレス（以下、ゲスト実アドレスという）がホストメモリ１０５上のアドレス（以下、ホスト実アドレスという）へのマッピングをページ単位で管理するテーブルである。
【００４０】
図２(ｄ)に、ページテーブル３０２の構成を示す。
【００４１】
ページテーブル３０２は、ホストＣビット４０４、ゲスト実ページアドレス４０５及びホスト実ページアドレス４０６の各フィールドを有する。ハイパバイザ１０１は、仮想計算機１０２を起動する際にゲストメモリ１０６の全ページに対するエントリをページテーブル３０２に登録する。
【００４２】
ホストＣビット４０４は、ホストアクセス制御ビットをいう。ハイパバイザ１０１は、ＯＳ１０３によるアクセスをインタセプトしたいページに対してホストＣビットを「１」に設定し、インタセプトしないページに対してホストＣビットを「０」に設定する。
【００４３】
ゲスト実ページアドレス４０５は、ゲスト実メモリのベースアドレスを格納するフィールドである。ゲスト実メモリは、仮想計算機１０２上のＯＳ１０３から見える仮想的な物理メモリである。
【００４４】
ホスト実ページアドレス４０６は、ホスト実メモリ（ホストメモリ１０５）のベースアドレスを格納するフィールドである。
【００４５】
ゲストＰＳＲ３０３は、ＯＳ１０３から見た論理的なＰＳＲ２００の内容を格納する領域をいう。
【００４６】
ゲストＰＳＲ３０３のゲスト特権ビット（以下、ゲストＰビットという）３０５は、仮想計算機１０２の動作モードを管理する。
【００４７】
ゲストＰＳＲ３０３のゲストアドレス変換ビット（以下、ゲストＴビットという）３０６は、仮想計算機１０２のアドレス変換を管理する。ゲストＴビット３０６が「１」の場合、仮想計算機１０２上のプログラム（例えば、ＯＳ１０３やアプリケーション）は、ゲスト仮想アドレスからゲスト実アドレスへのアドレス変換を行う。ゲストＴビット３０６が「０」の場合、アドレス変換を行わない。なお、ＯＳ１０３は、ゲスト仮想アドレスからゲスト実アドレスへのアドレス変換を管理するゲストページテーブル３０７をゲストメモリ１０６上に作成する。
【００４８】
ゲストＩＨＢ２０６は、ゲスト割り込みハンドラ２０４のアドレスを格納する領域である。
【００４９】
ゲストＴＬＢテーブル３０４は、ＯＳ１０３から見た論理的なＴＬＢ３０１の内容を格納するための領域である。
【００５０】
図２(ｅ)に、ゲストＴＬＢテーブル３０４の構成を示す。
【００５１】
ゲストＴＬＢテーブル３０４は、ゲスト有効ビット（以下、ゲストＶビットという）４０７、ゲストアクセス制御ビット（以下、ゲストＣビットという）４０８、ゲスト仮想ページアドレス４０９及びゲスト実ページアドレス４１０の各フィールドを有する。
【００５２】
ゲスト仮想ページアドレス４０９は、仮想計算機１０２が作り出した仮想空間をページ単位で示すアドレスである。
【００５３】
ゲスト実ページアドレス４１０は、前述ページテーブル３０２上のゲスト実ページアドレス４０５に対応する。
【００５４】
ゲストＶビット４０７は、前述のＴＬＢ３０１のＶビットと同様の働きを有するが、ゲストＶビットはゲストＴＬＢに対する有効又は無効の状態を表す。
【００５５】
ゲストＣビット４０８は、ＴＬＢのＣビットと同じである。ただし、アクセス違反例外（割り込み）の発生はあくまでＴＬＢ３０１のＣビットとＰＳＲ２００のＰビットとの関係で制御される。ゲストＣビットとゲストＰビットは、メモリ上に置かれた仮想的なレジスタ（ゲストＴＬＢおよびゲストＰＳＲ）であるため、例外の発生には関与しない。ハイパバイザ１０１は、ゲストＣビットとゲストＰビットとの関係が矛盾しないように、ＯＳ１０３に対してアクセス違反例外をエミュレートする。
【００５６】
以下、図１に示される障害検出手段１１００、メモリ退避手段１１０１、通信手段１１０４及びダンプ手段１１０３を説明する。
【００５７】
障害検出手段１１００は、ハイパバイザ１０１が割り込みをインタセプトすることによって実現する。
【００５８】
例えば、仮想計算機１０２ａに障害が発生した場合、マシンチェック割り込みや予期しないＮＭＩ（Ｎｏｎ−Ｍａｓｋａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ）が発生する場合がある。ハイパバイザ１０１は、これらの割り込みをインタセプトすることによって、仮想計算機１０２ａに障害が発生したことを検出することができる。
【００５９】
また、ＯＳ１０３ａは障害発生時にファームウェアのサービス関数を呼び出してシステムのリセットを実行する場合がある。この場合は、ＯＳ１０３ａがサービス関数を呼び出すときに、障害が発生したことを表すフラグを引数として渡させるようにする。ハイパバイザ１０１は、ＯＳ１０３によるサービス関数の呼び出しをインタセプトし、引数の値から障害が発生したか否かを検出することができる。ハイパバイザ１０１は、仮想計算機１０２を起動する際に、ファームウェアコードが含まれるゲスト実ページアドレスに対してページテーブル３０２の対応するエントリのホストＣビットを１に設定する。よって、ＯＳ１０３がファームウェアのサービス関数を呼び出すと割り込みが発生するため、ハイパバイザ１０１はサービス関数の呼び出しをインタセプトすることができる。
【００６０】
メモリ退避手段１１０１は、障害検出手段１１００が仮想計算機１０２の障害を検出した際に、ゲストメモリ１０６の内容を退避してから当該仮想計算機１０２の再起動を行うことによって実現する。メモリ退避手段１１０１は、ホストメモリ１０５上に空き領域を退避領域として設定し、ページテーブル３０２が操作されることによって実現する。メモリ退避の処理の説明は後述する。
【００６１】
ダンプ手段１１０３は、通常のＯＳが持つデバイスドライバを利用することができる。
【００６２】
通信手段１１０４は、ＯＳ１０３ｂからハイパバイザ１０１へメッセージを通知する場合と、ハイパバイザ１０１からＯＳ１０３へメッセージを通知する場合とで実現方法が異なる。
【００６３】
ＯＳ１０３からハイパバイザ１０１へメッセージを通知する場合では、ハイパバイザ１０１は、ゲストメモリ１０６上に後述の通信用ページを予約する。仮想計算機１０２を起動する際に、通信用ページのゲスト実ページアドレスに対応するページテーブル３０２のホストＣビット４０４の値を「１」に設定する。このホストＣビット４０４の設定によって、ＯＳ１０３がこの領域にアクセスすると割り込みが発生する。ハイパバイザ１０１は、この割り込みをインタセプトし、ＯＳ１０３がアクセスしたアドレスからメッセージ内容を解析できる。
【００６４】
一方、ハイパバイザ１０１からＯＳ１０３へメッセージを通知する場合では、ハイパバイザ１０１は、割り込みをエミュレートすることによりハイパバイザ１０１による処理が終了したことをＯＳ１０３に通知する。割り込みのエミュレーションは、ゲスト割り込みハンドラ２０５に分岐してＯＳ１０３に制御を移すことによって実現する。このとき、ハイパバイザ１０１は、割り込み制御レジスタにＯＳ１０３が指定したベクタ番号を書き込むことによって、ハイパバイザ１０１からの割り込みであることを指定できる。この割り込み制御レジスタは、例えばＩｔａｎｉｕｍ（Ｉｔａｎｉｕｍは登録商標です）アーキテクチャにおけるＩＶＲ（Ｅｘｔｅｒｎａｌ  Ｉｎｔｅｒｒｕｐｔ  Ｖｅｃｔｏｒ  Ｒｅｇｉｓｔｅｒ）などである。
【００６５】
図３は、ハイパバイザ１０１とＯＳ１０３とのゲストメモリ１０６ｂ上の通信用ページの構成を示す。
【００６６】
ＯＳ１０３は、ハイパバイザ１０１との通信に用いる割り込みベクタ番号をＶＥＣＴＯＲ１３００に書き込む。この処理は、ＯＳ１０３のブート時に行う。ハイパバイザ１０１は、この書き込み操作をインタセプトし、ベクタ番号を取得する。メモリダンプ処理中にハイパバイザ１０１からＯＳ１０３に対して割り込みをエミュレーションする際は、このベクタ番号を使用する。ＤＵＭＰＢＡＳＥ１３０１とＲＥＡＤＲＥＱ１３０２の使用方法は後述する。
【００６７】
図４は、障害検出手段１１００が仮想計算機１０２に発生する障害を検出してから当該仮想計算機１０２を再起動するまでの処理を示す。
【００６８】
ステップ１２００では、ＰＵＲＧＥＴＬＢ命令を実行することによりＴＬＢ３０１の全エントリをパージする。ＰＵＲＧＥＴＬＢ命令とは、ＩＮＤＥＸで指定されたＴＬＢ３０１のエントリのＶビット４００を「０」にする処理をいう。
【００６９】
ステップ１２０１では、ゲストＴＬＢテーブル３０４の全エントリのゲストＶビット４０７を「０」に設定する。
【００７０】
ステップ１２０２では、あらかじめ用意されたホストメモリ１０５上の空き領域にゲストメモリ１０６がマッピングされるように新たなページテーブル３０２を作成する。このとき、障害発生時に使用していたもとのページテーブル３０２（以下、ページテーブル３０２'という）は、後述のメモリダンプ処理に利用するために保存する。
【００７１】
ステップ１２０３では、ゲストＰＳＲ３０６のゲストＰビットの値を「１」に設定し、ゲストＴビットの値を「０」に設定する。
【００７２】
ステップ１２０４では、ステップ１２０２で作成したページテーブル３０２を用いて仮想計算機１０２を再起動する。
【００７３】
図５は、図１に示される計算機システムが実行するメモリダンプの処理を示す。
【００７４】
ステップ１４００では、ハイパバイザ１０１は、通信手段１１０４を介してＯＳ１０３ｂに対してメモリダンプ処理の開始を指示する。ＯＳ１０３ｂは、この指示を受けてメモリダンプの処理を開始する。なお、ＯＳ１０３ｂによるメモリダンプ処理は、ゲストＴビットの値が「１」であるアドレス変換モードで実行する。既述のように、ゲストＴビットの値が「１」のとき、仮想計算機１０２上のＯＳ１０３は、ゲスト仮想アドレスからゲスト実アドレスへのアドレス変換を行う。
【００７５】
ステップ１４０１では、ＯＳ１０３ｂは、ダンプ処理のための１ページ分のメモリ領域（以下、ダンプ処理用領域という）をゲストメモリ１０６ｂ上に設定する。このダンプ処理用領域は、ゲスト仮想ページアドレスが示すゲスト仮想空間の領域である。
【００７６】
ステップ１４０２では、ＯＳ１０３ｂは、ステップ１４０１で設定したダンプ処理用領域のベースアドレス（ゲスト仮想ページアドレス）を図１３に示す通信用ページ上のＤＵＭＰＢＡＳＥ１３０１に書き込む。この操作により割り込みが発生し、ハイパバイザ１０１に処理が移される。本ステップによって、ＯＳ１０３ｂはダンプ処理用領域のゲスト仮想ページアドレスをＤＵＭＰＢＡＳＥに書き込むことによりハイパバイザに通知することになる。
【００７７】
ステップ１４０３では、ハイパバイザ１０１は、ＤＵＭＰＢＡＳＥから取得したダンプ処理用領域のベースアドレスからゲストＴＬＢテーブル３０４ｂを引き、ゲスト実ページアドレスを取得する。さらに、ハイパバイザ１０１は、取得したゲスト実ページアドレスからページテーブル３０２ｂを引き、エントリ（以下、ワークエントリという）を取得する。そして、取得したエントリからホスト実アドレスを取り出し、退避させる。既述のように、ハイパバイザ１０１は、ゲストテーブルＴＬＢ３０４ｂとページテーブル３０２ｂを管理しているため、取得したゲスト仮想ページアドレスに対応するゲスト実ページアドレスとホスト実ページアドレスを取得することができる。
【００７８】
ステップ１４０４では、ハイパバイザ１０１は、ＯＳ１０３ｂに処理を戻す（ステップ１４０２で発生した割り込みからの復帰）。本ステップによって、ハイパバイザ１０１がダンプ処理の準備ができたことをＯＳ１０３ｂに通知することになる。
【００７９】
ステップ１４０５では、ＯＳ１０３ｂは、図３の通信用ページにあるＲＥＡＤＲＥＱ１３０２の内容を読み込む。この操作により割り込みが発生し、ハイパバイザ１０１に処理が移される。本ステップによって、ハイパバイザ１０１は、ＯＳ１０３ｂがダンプ処理を行う準備ができたことを検出したことになる。
【００８０】
なお、通信用ページにあるＲＥＡＤＲＥＱのビット値が「１」の場合はＯＳ１０３ｂがダンプ処理を継続し、「０」の場合はダンプ処理を終了することになる。ＲＥＡＤＲＥＯのビット値は、後述のようにハイパバイザ１０１によって設定される。
【００８１】
ステップ１４０６では、ハイパバイザ１０１は、図４のステップ１２０２で保存した障害発生時のページテーブル３０２ａ'の中に、ダンプ処理が未実施のエントリが残されているか否かを判別する。未ダンプのエントリが存在する場合はステップ１４０７に処理が移される。存在しない場合はステップ１４１１に処理が移される。
【００８２】
ステップ１４０７〜ステップ１４０９は、ダンプ処理用領域のマッピング変更の処理を示す。
【００８３】
ステップ１４０７では、ハイパバイザ１０１は、ページテーブル３０２ａ'から未ダンプのエントリを１つ取り出し、ホスト実ページアドレス４０６ａ'を取得する。そして、取得したホスト実ページアドレス４０６ａ'をステップ１４０３で取得したページテーブル３０２ｂのワークエントリのホスト実ページアドレス４０６ｂに上書きする。
【００８４】
既述のように、ワークエントリのホスト実ページアドレスは、ステップ１４０３で取得したＯＳ１０３ｂに対して割り当てられたホスト実ページアドレスである。したがって、ステップ１４０３で取得したページテーブル３０２ｂのワークエントリのホスト実ページアドレスがダンプ対象領域のページテーブル３０２ａ'上のホスト実ページアドレスに書き換えられたことになる。
【００８５】
また、ワークエントリには、既に実行された本ステップによって既にダンプ処理が完了した過去のダンプ対象領域のホスト実ページアドレスが記述されている場合がある。この場合は、ハイパバイザ１０１は、ページテーブル３０２ａ'から次のダンプすべきダンプ対象領域のホスト実ページアドレスを取得し、ワークエントリのホスト実ページアドレス上に上書きする処理を行う。
【００８６】
本ステップによって、ワークエントリのホスト実ページアドレスをダンプ対象領域のホスト実ページアドレスに書き換える処理がハイパバイザ１０１によって行われる。
【００８７】
ステップ１４０８では、ハイパバイザ１０１は、ワークエントリのゲスト実ページアドレス４０５ｂに対する変換を記述したエントリがゲストＴＬＢ３０４ｂに存在するか否かを判別する。ステップ１４０７では、ページテーブル３０２ｂのホスト実ページアドレスの書き換え処理を行ったが、ＴＬＢ３０１にも反映させる必要がある。ＴＬＢ３０１は、ゲスト仮想ページアドレスからホスト実ページアドレスへの変換が記述される。エントリがゲストＴＬＢ３０４ｂに存在する場合はステップ１４０９に処理が移される。ゲストＴＬＢ３０４ｂにエントリが存在する場合はＴＬＢ３０１にもエントリが存在するため、ＴＬＢ３０１の書き換えを行う必要がある。エントリがゲストＴＬＢ３０４ｂに存在しない場合、ステップ１４１０に処理が移される。ダンプ処理用領域に対するゲスト仮想ページアドレスからゲスト実ページアドレスへの変換がゲストＴＬＢにエントリとして存在しない場合、ＴＬＢ３０１にも対応するエントリがないため、ＴＬＢ３０１の書き換えを行う必要がない。
【００８８】
ステップ１４０９では、ハイパバイザ１０１は、ステップ１４０７で書き換え処理が行われたワークエントリのホスト実ページアドレス、ホストＣビット、ステップ１４０２でＯＳ１０３ｂから通知を受けたダンプ処理用領域のゲスト仮想アドレス、およびステップ１４０８でエントリが見つかったＩＮＤＥＸをオペランドとしてＩＮＳＥＲＴＴＬＢ命令を実行する。
【００８９】
ＩＮＳＥＲＴＴＬＢ命令とは、ＩＮＳＥＲＴＴＬＢ命令の実行とは、オペランドに指定された値をＴＬＢ３０１のエントリに格納する処理である。ＴＬＢ３０１のエントリはＩＮＤＥＸで指定され、Ｖビット４００の値は「１」が設定される。
【００９０】
ステップ１４１０では、ハイパバイザ１０１は、ステップ１４０５でＯＳ１０３ｂが実行したＲＥＡＤＲＥＱ１３０２の読み込み命令をデコードし、命令オペランドから書き込み対象のレジスタを割り出す。ハイパバイザ１０１は、このレジスタに「１」を設定してＯＳ１０３ｂに処理を戻す（ステップ１４０５で発生した割り込みからの復帰）。本ステップよって、ハイパバイザ１０１は、ダンプ対象領域に対するマッピングの変更（ホスト実ページアドレスの書き換え処理）を完了し、ＯＳ１０３ｂに対してダンプ処理の準備ができたことを通知することになる。
【００９１】
ステップ１４１１〜ステップ１４１４は、ダンプ処理により書き換えられたワークエントリとＴＬＢ３０１の内容をダンプ処理開始前に戻す処理を示す。
【００９２】
ステップ１４１１では、ハイパバイザ１０１は、ステップ１４０３で退避したホスト実ページアドレスをページテーブル３０２ｂのワークエントリに書き戻す処理を行う。
【００９３】
ステップ１４１２では、ハイパバイザ１０１は、ワークエントリのゲスト実ページアドレス４０５ｂに対する変換を記述したエントリがゲストＴＬＢ３０４ｂに存在するか否かを判別する。エントリが存在する場合は、ステップ１４１３に処理が移される。エントリが存在しない場合は、ステップ１４１４に処理が移される。
【００９４】
ステップ１４１３では、ハイパバイザ１０１は、ステップ１４１１で書き戻されたワークエントリのホスト実ページアドレス、ホストＣビット、ステップ１４０２でＯＳ１０３ｂから通知を受けたダンプ処理用領域のゲスト仮想ページアドレス、およびステップ１４１２でエントリが見つかったＩＮＤＥＸをオペランドとしてＩＮＳＥＲＴＴＬＢ命令を実行する。
【００９５】
ステップ１４１４では、ハイパバイザ１０１は、ステップ１４０５でＯＳ３０２ｂが実行したＲＥＡＤＲＥＱ１３０２の読み込み命令をデコードし、命令オペランドから書き込み対象のレジスタを割り出す。ハイパバイザ１０１は、このレジスタに「０」を設定してＯＳ１０３ｂに処理を戻す（ステップ１４０５で発生した割り込みからの復帰）。
【００９６】
ステップ１４１５では、ＯＳ１０３ｂは、ステップ１４０５で実行したＲＥＡＤＲＥＱ１３０２の読み込み命令によって得られた値（ステップ１４１０又はステップ１４１４でハイパバイザ１０１が設定した値）を読み込んで、ダンプ処理を継続するか否か判別する。値が「１」の場合は、ステップ１４１６に処理が移される。値が「０」の場合は、ダンプ処理は終了する。
【００９７】
ステップ１４１６では、ＯＳ１０３ｂは、ステップ１４０１で確保したダンプ処理用領域の内容をダンプ手段１１０３により補助記憶装置１１０２に書き込む処理を行う。その後、再び１４０５へ戻る。
【００９８】
なお、図１４に示すメモリダンプの処理では、ＯＳ１０３ｂが確保するダンプ処理用領域を１ページ分としたが複数ページ分を用いてもよい。
【００９９】
このように、仮想計算機１０２に障害が発生して障害内容を含むメモリ領域の内容をダンプする場合は、メモリダンプを実行してから仮想計算機１０２を再起動する従来の手法は不要となる。その代わりに、障害が発生した仮想計算機１０２を再起動してから、ページテーブル３０２を変更することによってゲストメモリ１０６とホストメモリ１０５のマッピングの変更を行う。よって、障害発生から仮想計算機が再起動されるまでの時間を短縮することができ、迅速に仮想計算機が行う業務を再開させることができる。
【０１００】
図６は、メモリダンプの処理を実行する仮想計算機システムの他の構成を示す。
【０１０１】
図６の計算機システムでは、ハイパバイザ１０１がダンプ手段１１０３を備え、メモリダンプ処理を実行する。したがって、通信手段１１０４は不要となる。
【０１０２】
ダンプ手段１１０３は、図１の計算機システムと同様に通常のＯＳが持つデバイスドライバを利用することができる。
【０１０３】
障害検出手段１１００、メモリ退避手段１１０１等は、図１１の仮想計算機システムと同じ構成である。また、障害検出手段１１００が仮想計算機１０２に発生する障害を検出してから当該仮想計算機１０２を再起動するまでの処理は、図４に示す処理と同じである。
【０１０４】
図７は、図６の仮想計算機システムが実行するメモリダンプ処理の手順を示す。
【０１０５】
ステップ１６００では、ハイパバイザ１０１は、図４に示すステップ１２０２で保存したページテーブル３０２ａ'からダンプ処理が未実施のエントリを一つ取り出し、ホスト実ページアドレス４０６ａ'を取得する。
【０１０６】
ステップ１６０１では、ハイパバイザ１０１は、ステップ１６００で取得したホスト実ページアドレスから１ページ分のホストメモリ領域をダンプ手段１１０４により補助記憶装置１１１０５に書き込む。
【０１０７】
ステップ１６０２では、ハイパバイザ１０１は、ページテーブル３０２ａ'に未ダンプのエントリが存在するか否かを判別する。エントリが存在する場合は、ステップ１６００へ戻る。未ダンプのエントリが存在しない場合は、ダンプ処理を終了する。
【０１０８】
このように、図６の計算機システムによるメモリダンプ処理の実行によって、仮想計算機の障害発生から再起動されるまでの時間を短縮することができ、迅速に業務を再開することができる。
【０１０９】
また、図６の計算機システムにおいては、図１の計算機システムのようにＯＳ１０３ｂ側にダンプ手段や通信手段、すなわちＯＳ１０３ｂの専用プログラムを設ける必要はない。ＯＳ１０３ｂ側に設けるダンプ手段や通信手段のような専用プログラムは通常、ある程度再利用可能であるが、ＯＳ１０３ｂの種類ごとに個別に用意する必要がある。図７の計算機システムでは、ダンプ手段はハイパバイザ側が持つことによってメモリダンプ処理を実行することによる稼動中のＯＳ１０３ｂにかかる負荷を低減させることができる。
【０１１０】
また、障害が発生した仮想計算機１０３は何らかの原因によって再起動できない場合においてもハイパバイザ１０１がダンプ手段１１０３を用いて障害情報を格納するゲストメモリ１０６の内容を補助記憶装置にダンプすることができる。
【０１１１】
さらに、図６の計算機システムでは、ハイパバイザがダンプ手段を用いて障害情報を補助記憶装置に出力できるため、ＯＳ１０３ａ又はＯＳ１０３ｂのいずれまたは両方に発生する障害に関する障害情報を補助記憶装置１１０２に出力することができる。
【図面の簡単な説明】
【０１１２】
【図１】メモリダンプを実行する仮想計算機システムの一構成例を示す。
【図２】図１の仮想計算機システムのプロセッサとホストメモリの構成の一例を示す。
【図３】ゲストメモリ１０６ｂ上のハイパバイザ１０１とＯＳ１０３ｂと通信用ページの構成を示す。
【図４】障害検出手段が仮想計算機に発生する障害を検出してから当該仮想計算機を再起動するまでの処理を示す。
【図５】図１の計算機システムが実行するメモリダンプの処理を示す。
【図６】メモリダンプを実行する仮想計算機システムの他の構成例を示す。
【図７】図６の仮想計算機システムが実行するメモリダンプ処理を示す。
【符号の説明】
【０１１３】
１００  物理計算機
１０１  ハイパバイザ
１０２  仮想計算機
１０３  ＯＳ
１１００  障害検出手段
１１０１  メモリ待避手段
１１０２  補助記憶装置
１１０３  ダンプ手段
１１０４  通信手段
【図１】
2005122334.tif 000003
【図２】
2005122334.tif 000004
【図３】
2005122334.tif 000005
【図４】
2005122334.tif 000006
【図５】
2005122334.tif 000007
【図６】
2005122334.tif 000008
【図７】
2005122334.tif 000009