(57)【要約】【課題】  １つの計算機で複数のＯＳが稼動するシステムにおいて、システム障害の根本的な原因を特定することの可能な技術を提供する。【解決手段】  複数のオペレーティングシステムの各々が１つの計算機のハードウェアを時分割して処理を行なうシステムにおいて、関連する複数のＯＳを対応付けて記憶手段に記憶しておき、ＯＳでの障害を検知し、その障害の発生したＯＳと関連するＯＳが記憶手段に格納されている場合、そのＯＳと、そのＯＳと関連するＯＳとのメモリダンプを実施する。【選択図】  図１
2007226413.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムの各々の処理を並列して実行する計算機システムによるメモリダンプ方法であって、
前記複数のオペレーティングシステムのうち、関連して動作する２つ以上のオペレーティングシステムを対応付けて記憶するダンプ実施ＯＳ記憶手段と、
前記複数のオペレーティングシステムの各々の処理を実行するためのデータを格納する第１の記憶手段と、
第２の記憶手段と、を有する前記計算機システムが、
前記オペレーティングシステムに発生した障害を検知する検知ステップと、
前記障害を検知した場合に、前記ダンプ実施ＯＳ記憶手段から、前記障害の発生したオペレーティングシステム（以下、障害ＯＳ）と対応するオペレーティングシステムを読み出し、前記障害ＯＳの処理実行と、前記読み出したオペレーティングシステム（以下、ダンプ実施ＯＳ）の処理実行とを停止させる停止ステップと、
前記第１の記憶手段から、前記障害ＯＳの処理を実行するためのデータと、前記ダンプ実施ＯＳの処理を実行するためのデータとを読み出し、該読み出したデータを、前記第２の記憶手段に記憶させるデータ取得ステップと、
前記第２の記憶手段から読み出したデータを出力する出力ステップと、を有すること
を特徴とするメモリダンプ方法。
【請求項２】
請求項１記載のメモリダンプ方法であって、
前記計算機システムは、前記ダンプ実施ＯＳ記憶手段から読み出したオペレーティングシステムの処理を実行するためのデータを前記第１の記憶手段から読み出すか否かを示す情報を記憶するダンプ実施ポリシ記憶手段と、
入力手段と、をさらに有し、
前記停止ステップで、前記ダンプ実施ポリシ記憶手段から読み出した情報が、前記ダンプ実施ＯＳ記憶手段から読み出したオペレーティングシステムの処理を実行するためのデータを前記第１の記憶手段から読み出さないことを示している場合、前記入力手段により入力されたオペレーティングシステムをダンプ実施ＯＳとし、前記障害ＯＳの処理実行と、前記ダンプ実施ＯＳの処理実行とを停止させ、
前記データ取得ステップで、前記第１の記憶手段から、前記障害ＯＳの処理を実行するためのデータと、処理実行の停止された前記ダンプ実施ＯＳの処理を実行するためのデータとを読み出し、該読み出したデータを、前記第２の記憶手段に記憶させること
を特徴とするメモリダンプ方法。
【請求項３】
請求項１又２は記載のメモリダンプ方法であって、
前記停止ステップで、前記第１の記憶手段から読み出したデータを前記第２の記憶手段に記憶させると、前記ダンプ実施ＯＳの処理実行を再開する再開ステップと、をさらに有することを特徴とするメモリダンプ方法。
【請求項４】
複数のオペレーティングシステムの各々の処理を並列して実行する計算機システムに実行させるメモリダンププログラムであって、
前記複数のオペレーティングシステムのうち、関連して動作する２つ以上のオペレーティングシステムを対応付けて記憶するダンプ実施ＯＳ記憶手段と、
前記複数のオペレーティングシステムの各々の処理を実行するためのデータを格納する第１の記憶手段と、
第２の記憶手段と、を有する前記計算機システムが、
前記オペレーティングシステムに発生した障害を検知する検知ステップと、
前記障害を検知した場合に、前記ダンプ実施ＯＳ記憶手段から、前記障害の発生したオペレーティングシステム（以下、障害ＯＳ）と対応するオペレーティングシステムを読み出し、前記障害ＯＳの処理実行と、前記読み出したオペレーティングシステム（以下、ダンプ実施ＯＳ）の処理実行とを停止させる停止ステップと、
前記第１の記憶手段から、前記障害ＯＳの処理を実行するためのデータと、前記ダンプ実施ＯＳの処理を実行するためのデータとを読み出し、該読み出したデータを、前記第２の記憶手段に記憶させるデータ取得ステップと、
前記第２の記憶手段から読み出したデータを出力する出力ステップと、を実行させること
を特徴とするメモリダンププログラム。
【請求項５】
複数のオペレーティングシステムの各々の処理を並列して実行する計算機システムであって、
演算装置と、
メモリと、
前記複数のオペレーティングシステムのうち、関連して動作する２つ以上のオペレーティングシステムを対応付けて記憶するダンプ実施ＯＳ記憶手段と、
記憶手段と、
前記オペレーティングシステムに発生した障害を検知する検知手段と、
前記障害を検知した場合に、前記ダンプ実施ＯＳ記憶手段から、前記障害の発生したオペレーティングシステム（以下、障害ＯＳ）と対応するオペレーティングシステムを読み出し、前記障害ＯＳの処理実行と、前記読み出したオペレーティングシステム（以下、ダンプ実施ＯＳ）の処理実行とを停止させる停止手段と、
前記演算装置及び前記メモリのうち少なくとも一方から、前記障害ＯＳの処理を実行するためのデータと、前記ダンプ実施ＯＳの処理を実行するためのデータとを読み出し、該読み出したデータを、前記記憶手段に記憶させるデータ取得手段と、
前記記憶手段から読み出したデータを出力する出力手段と、を有すること
を特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリダンプの実施に関するものである。
【背景技術】
【０００２】
一般の計算機システムでは、ＯＳ（Operating System）の実行により、例えば、演算装置（Central Processing Unit；ＣＰＵ、Micro Processing Unit；ＭＰＵ、等）、主記憶装置（以下、メモリという）、二次記憶装置、入出力装置、ファイル装置、通信装置等のハードウェアの管理、及び、ハードウェアの使用スケジュールの制御を行なう。また、ＯＳは、ユーザが計算機を容易に利用するためのソフトウエアインタフェースを提供する。例えば、表計算ソフトやワープロソフト等のアプリケーションプログラムは、ＯＳの制御を介して計算機の有するハードウェアを使用する。
【０００３】
このＯＳは、ハードウェアの故障やＯＳ自身を含めたプログラムの不具合によって発生する障害により、ハングアップや、誤動作が発生する場合がある。しかし、例えば、基幹系で使用される計算機システム等、信頼性や可用性が高く求められる計算機システムでは、ＯＳのハングアップや誤動作の原因となる障害をすばやく解決、もしくは回避することが求められている。
【０００４】
この要求に応える機能として、計算機システムにおける障害によりＯＳの実行継続が困難になった場合に、メモリダンプを実施する技術がある。ここでメモリダンプとは、計算機システムにおいて障害が発生した時点の、計算機システムが有する演算装置やメモリ等に格納された情報を障害情報として二次記憶装置に退避したものを指す。管理者等は、そのメモリダンプの内容を解析することにより、障害原因の特定と修正を行い、計算機システムを再起動する。
【０００５】
一方、１つの計算機システム上で、複数のＯＳの処理を実行する場合がある。このように、１つの計算機システムで複数のＯＳの処理を実行する技術として、例えば、仮想計算機システムや、ＬＰＡＲ（Logical Partitioning、論理分割）等がある。これらの技術は、演算装置を時分割して複数のＯＳの処理を並列して処理することにより、１つの計算機で複数のＯＳの処理を実行する。
【０００６】
このような、１つの計算機で複数のＯＳの処理を実行するシステムにおいても障害が発生した場合に、障害ＯＳのメモリダンプを実施する技術が特許文献１に記載されている。この技術は、ＬＰＡＲにおいて、ハイパーバイザ（システム分割機能において計算機の論理分割機能を提供する機能）が使用しているデータエリアの情報を取得し、障害発生時にその情報を取得して、障害解析に利用することが記載されている。
【０００７】
また、特許文献２では、仮想計算機上のＯＳで障害発生した場合、その障害ＯＳのメモリダンプを、別のダンプ機能を有するＯＳなどを利用して実施し、システムアドミニストレータや他のデバッガが解析可能な形式で二次記憶装置に保存することが記載されている。
【０００８】
【特許文献１】米国特許６８９２３８３号公報
【特許文献２】特開２００５−１２２３３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
特許文献１、特許文献２に開示された技術は、障害が発生したＯＳのみのメモリダンプを実施するものである。ところが、複数のＯＳによる共有ファイルシステムやクラスタシステムなどを提供する形のシステムにおける障害は、システム障害の根本的な原因が、障害発生ＯＳにあるとは限らない。
【００１０】
本発明はこのような事情に鑑みてなされたもので、複数のＯＳの処理を実行する計算機システムにおいて、システム障害の根本的な原因を特定することの可能な技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は上記の目的を達成するためになされたもので、複数のオペレーティングシステムの各々の処理を並列して実行するシステムにおいて、関連動作する複数のＯＳを対応付けて記憶手段に記憶しておき、ＯＳでの障害発生を検知すると、記憶手段から、その障害の発生したＯＳと対応するＯＳを読み出し、障害の発生したＯＳと、読み出したＯＳとのメモリダンプを実施することを特徴とする。
【００１２】
また、本発明は、複数のオペレーティングシステムの各々の処理を並列して実行する計算機システムによるメモリダンプ方法であって、前記複数のオペレーティングシステムのうち、関連して動作する２つ以上のオペレーティングシステムを対応付けて記憶するダンプ実施ＯＳ記憶手段と、前記複数のオペレーティングシステムの各々の処理を実行するためのデータを格納する第１の記憶手段と、第２の記憶手段と、を有する前記計算機システムが、前記オペレーティングシステムに発生した障害を検知する検知ステップと、前記障害を検知した場合に、前記ダンプ実施ＯＳ記憶手段から、前記障害の発生したオペレーティングシステム（以下、障害ＯＳ）と対応するオペレーティングシステムを読み出し、前記障害ＯＳの処理実行と、前記読み出したオペレーティングシステム（以下、ダンプ実施ＯＳ）の処理実行とを停止させる停止ステップと、前記第１の記憶手段から、前記障害ＯＳの処理を実行するためのデータと、前記ダンプ実施ＯＳの処理を実行するためのデータとを読み出し、該読み出したデータを、前記第２の記憶手段に記憶させるデータ取得ステップと、前記第２の記憶手段から読み出したデータを出力する出力ステップと、を有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、障害の発生したＯＳだけでなく、他のＯＳのメモリダンプを実施することが可能となるので、システム障害の根本的な原因を特定することが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の一実施形態を、図面を参照して詳細に説明する。
＜第１の実施形態＞
第１の実施形態では、本実施形態のダンプ実施システムを、仮想計算機システムに適用する場合の例を説明する。
【００１５】
図１は第１の実施形態の計算機システムのハードウェア構成例を示す図である。
【００１６】
図１において、計算機システムは、計算機システム１００、通信ネットワーク１１０、情報処理装置１２０等を有する。計算機システム１００と情報処理装置１２０とは、通信ネットワーク１１０を介して接続される。
【００１７】
なお、図１の例では、計算機システム１００、通信ネットワーク１１０、情報処理装置１２０等の数を１つとして示しているが、これらの数は任意であり、１つに限られるわけではない。
【００１８】
計算機システム１００、情報処理装置１２０は、例えば、サーバ等の情報処理装置である。通信ネットワーク１１０は、例えば、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）、公衆網、専用線、インターネット等である。
【００１９】
計算機システム１００は、ＣＰＵ１１１、メモリ１１２、記憶装置１１３、入力装置１１４、出力装置１１５、通信インタフェース１１６等を有する。ＣＰＵ１１１、メモリ１１２、記憶装置１１３、入力装置１１４、出力装置１１５、通信インタフェース１１６等は、バス１１７等を介して接続されている。
【００２０】
なお、ＣＰＵ１１１、メモリ１１２、記憶装置１１３、入力装置１１４、出力装置１１５、通信インタフェース１１６等の数は、図１に示すものに限られるわけではなく、これらの各構成の数は任意である。
【００２１】
メモリ１１２は、メモリ管理テーブル１４１、ＣＰＵレジスタテーブル１４２等を有する。これらの各テーブルの詳細については後述する。
【００２２】
記憶装置１１３は、例えば、ＣＤ-Ｒ（Compact Disc-Recordable）やＤＶＤ-ＲＡＭ（Digital Versatile Disk-Random Access Memory）等の記憶メディア及び当該記憶メディアの駆動装置、ＨＤＤ（Hard Disk Drive）等である。記憶装置１１３は、仮想計算機モニタプログラム１５１、オペレーティングシステムプログラムａ１５２、オペレーティングシステムプログラムｂ１５３、オペレーティングシステムプログラムｃ１５４、関連ＯＳテーブル１５５、ダンプ実施ＯＳテーブル１５６、ダンプ実施ポリシテーブル１５７等を有する。これらの各プログラム及び各テーブルの詳細については後述する。
【００２３】
入力装置１１４は、例えば、キーボード、マウス、マイク等である。出力装置１１５は、例えば、ディスプレイ、プリンタ、スピーカ等である。計算機システム１００は、通信インタフェース１１６を介して、通信ネットワーク１１０と接続する。
【００２４】
情報処理装置１２０は、上述の計算機システム１００と同様の、ＣＰＵ、メモリ、記憶装置、入力装置、出力装置、通信インタフェース等を有する一般的な情報処理装置であるので、詳細な説明は省略する。
【００２５】
次に、図２を参照し、計算機システム１００の機能構成例を説明する。
【００２６】
計算機システム１００のＣＰＵ１１１は、記憶装置１１３から読み出した仮想計算機モニタプログラム１５１をメモリ１１２にロードして実行することにより、ＶＭＭ（Virtual Machine Monitor）２０１、仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４等を実現する。仮想計算機ａ２０２は、仮想ＣＰＵ２２１、仮想メモリ２２２等を実現する。この仮想ＣＰＵ２２１は、後述するＶＭＭ２０１の機能により、ＣＰＵ１１１を時分割して使用することにより実現する。また、仮想メモリ２２２は、後述するＶＭＭ２０１の機能により、メモリ１１２の所定領域を使用することにより実現する。仮想ＣＰＵ２２１は、仮想メモリ２２２にロードしたオペレーティングシステムプログラムａ１５２を実行することにより、ＯＳ２２３の機能を実現する。仮想計算機ｂ２０３は、仮想ＣＰＵ２３１、仮想メモリ２３２等を実現する。この仮想ＣＰＵ２３１は、後述するＶＭＭ２０１の機能により、ＣＰＵ１１１を時分割して使用することにより実現する。また、仮想メモリ２３２は、後述するＶＭＭ２０１の機能により、メモリ１１２の所定領域を使用することにより実現する。仮想ＣＰＵ２３１は、仮想メモリ２３２にロードしたオペレーティングシステムプログラムｂ１５３を実行することにより、ＯＳ２３３の機能を実現する。仮想計算機ｃ２０４は、仮想ＣＰＵ２４１、仮想メモリ２４２等を実現する。この仮想ＣＰＵ２４１は、後述するＶＭＭ２０１の機能により、ＣＰＵ１１１を時分割して使用することにより実現する。また、仮想メモリ２４２は、後述するＶＭＭ２０１の機能により、メモリ１１２の所定領域を使用することにより実現する。仮想ＣＰＵ２４１は、仮想メモリ２４２にロードしたオペレーティングシステムプログラムｃ１５４を実行することにより、ＯＳ２４３の機能を実現する。
【００２７】
ＯＳ２２３、ＯＳ２３３、ＯＳ２４３上の各々では、任意のアプリケーションプログラムが独立して実行されていてもよい。また、ＯＳ２２３、ＯＳ２３３、ＯＳ２４３間で、共有ファイルシステムやクラスタシステムを構成してもよい。
【００２８】
ＶＭＭ２０１は、仮想計算機制御部２１１、変更部２１２、障害検知部２１３、ダンプ実施部２１４を有する。仮想計算機制御部２１１は、従来技術の仮想計算機を実現する機能である。即ち、仮想計算機制御部２１１は、例えば、仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４の各々に、ＣＰＵ１１１を時分割で割り当て、ＯＳ２２３、ＯＳ２３３、ＯＳ２４３の各々の処理を並列して実行する。また、仮想計算機制御部２１１は、仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４の各々に、メモリ１１２の領域を割り当てる。仮想計算機制御部２１１は、ＯＳ２２３、ＯＳ２３３、ＯＳ２４３が利用する外部デバイスのＩ／Ｏ資源を予約する。変更部２１２は、関連ＯＳテーブル１５５が更新されると、ダンプ実施ＯＳテーブル１５６を更新する。また、変更部２１２は、関連ＯＳテーブル１５５、ダンプ実施ＯＳテーブル１５６およびダンプ実施ポリシテーブル１５７等に含まれる情報を、入力装置１１４又は通信インタフェース１１６を介して入力された情報に従い設定、更新等し、さらに、入力装置１１４又は通信インタフェース１１６から入力されたメモリダンプ実施の指示を受け付ける。障害検知部２１３は、ＯＳ２２３、ＯＳ２３３、ＯＳ２４３上で発生した障害を検知し、ＣＰＵ１１１のレジスタの退避や、仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４等に対するＣＰＵ１１１の時分割割り当ての休止等を行う。ダンプ実施部２１４は、メモリダンプ実施の対象となるＯＳ（以下、ダンプ実施ＯＳと言う）のメモリ内容を退避する。
【００２９】
なお、図１、図２の例では、仮想計算機、及び、計算機システム１００で実行するオペレテーリングシステムの数は３つとして示しているが、これらの数は任意であり、３つに限られるわけではない。また、各仮想計算機の仮想ＣＰＵの数は２つとして示しているが、この数は任意であり、２つに限られるわけではない。
【００３０】
次に、各テーブルについて図面を参照して説明する。
【００３１】
まず、図３を参照し、メモリ管理テーブル１４１の一例を説明する。このメモリ管理テーブル１４１は、従来の仮想計算機の技術と同じである。
【００３２】
図３（ａ）は、メモリ１１２に、仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４の各々に対し割り当てた領域の一例を示す。
【００３３】
メモリ１１２は、仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４の各々が用いる領域として、メモリ領域３０１、メモリ領域３０２、メモリ領域３０３等を有する。メモリ領域３０１は、仮想計算機ａ２０２の用いる領域である。メモリ領域３０２は、仮想計算機ｂ２０３の用いる領域である。メモリ領域３０３は、仮想計算機ｃ２０４の用いる領域である。これらのメモリ領域３０１、メモリ領域３０２、メモリ領域３０３は、仮想計算機制御部２１１が、仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４に対し割り当てるものである。この処理は従来技術である。また、メモリ１１２は、ＶＭＭ２０１の用いるメモリ領域３０４を有する。
【００３４】
ここで、メモリ１１２のメモリアドレスは、実ページアドレスと、仮想ページアドレスとで示す。ここで、実ページアドレスとは、実際のメモリ１１２に対応するアドレスであり、メモリ１１２全体を、ＣＰＵアーキテクチャによって決定される固定サイズに区切って管理するものである。仮想ページアドレスとは、仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４の各々がＯＳ２２３、ＯＳ２３３、ＯＳ２４３の各々に対して仮想的に物理メモリとして見せる仮想のアドレスである。
【００３５】
図３（ｂ）は、メモリ管理テーブル１４１の一例である。図３（ｂ）において、メモリ管理テーブル１４１は、仮想計算機３１１、仮想ページアドレス３１２、実ページアドレス３１３等を有する。仮想計算機３１１、仮想ページアドレス３１２、実ページアドレス３１３等は互いに対応付けられている。仮想計算機３１１は、仮想計算機制御部２１１の制御する仮想計算機を示す。仮想ページアドレス３１２は、対応する仮想計算機３１１の実行するＯＳに物理メモリとして見せる仮想のアドレスである。実ページアドレス３１３は、対応する仮想ページアドレス３１２の、メモリ１１２における実際のアドレスである。
【００３６】
なお、メモリ管理テーブル１４１は、仮想計算機制御部２１１が、仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４を起動する際に、メモリ１１２上に作成する。この仮想計算機制御部２１１がメモリ管理テーブル１４１を作成する動作は従来技術と同じであるので省略する。ＯＳ２２３、ＯＳ２３３、ＯＳ２４３に対して仮想的に物理メモリとして見せる仮想ページアドレス３１２は、通常、開始アドレスは０から始まり、終端アドレスはＯＳが使用するメモリサイズ分だけ加えたアドレスを割り当てる。その仮想ページアドレス３１２に対応する実ページアドレス３１３は、その仮想ページアドレス３１２の、実際のメモリ１１２におけるアドレスを格納する。図３（ａ）のように仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４ごとにアドレスが連続した一ブロックとして割り当ててもよく、また、ページ単位で物理メモリを割り当ててもよい。
【００３７】
また、図３に一例を示すメモリ管理テーブル１４１は、１つのテーブルに、全ての仮想計算機の仮想ページアドレスと実ページアドレスとを有しているが、これに限られるわけではなく、１つのテーブルに、１つの仮想計算機の仮想ページアドレスと実ページアドレスとを有し、仮想計算機の数だけメモリ管理テーブル１４１を有しても良い。
【００３８】
次に、図４を参照し、ＣＰＵレジスタテーブル１４２の一例を説明する。このＣＰＵレジスタテーブル１４２は、従来の仮想計算機の技術と同じである。
【００３９】
図４において、ＣＰＵレジスタテーブル１４２の構成例を示す図である。ＣＰＵレジスタテーブル１４２は、仮想計算機４０１、仮想ＣＰＵ４０２、退避レジスタ４０３等を有する。仮想計算機４０１、仮想ＣＰＵ４０２、退避レジスタ４０３等は互いに対応付けられている。仮想計算機４０１は、仮想計算機制御部２１１の制御する仮想計算機を示す。仮想ＣＰＵ４０２は、対応する仮想計算機４０１の実行するＯＳに物理ＣＰＵとして見せる仮想のＣＰＵである。退避レジスタ４０３は、ＣＰＵ１１１のレジスタ（図示略）から読み出したデータそのものであり、仮想計算機制御部２１１が、対応する仮想計算機４０１以外の仮想計算機にＣＰＵ１１１を時分割割り当てする場合に、対応する仮想計算機４０１が処理に用いていたデータを退避したものである。以下、ＣＰＵ１１１のレジスタに格納されているデータをレジスタ情報ともいう。具体的には、例えば、仮想計算機制御部２１１が、ＣＰＵ１１１を、仮想計算機ａ２０２に割り当て、仮想計算機ａ２０２が仮想ＣＰＵ「ＣＰＵａａ」で処理を実行した後に、仮想計算機ｂ２０３に割り当てた場合、図４に一例を示すＣＰＵレジスタテーブル１４２の場合、仮想計算機ａ２０２がそれまでに用いていたレジスタ情報を、仮想計算機４０１「仮想計算機ａ」、仮想ＣＰＵ４０２「ＣＰＵａａ」と対応付けられた退避レジスタ４０３に格納する。仮想計算機ｂ２０３にＣＰＵ１１１を割り当てた後に、再度、仮想計算機ａ２０２にＣＰＵ１１１を割り当て、仮想計算機ａ２０２が仮想ＣＰＵ「ＣＰＵａａ」で処理を実行する場合、仮想計算機制御部２１１は、仮想計算機４０１「仮想計算機ａ」、仮想ＣＰＵ４０２「ＣＰＵａａ」と対応付けられた退避レジスタ４０３に格納されているデータを読み出して、仮想計算機ａ２０２に処理を続行させる。
【００４０】
なお、ＣＰＵレジスタテーブル１４２は、仮想計算機制御部２１１が、仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４を起動する際に、メモリ１１２上に作成する。この仮想計算機制御部２１１がＣＰＵレジスタテーブル１４２を作成する動作は従来技術と同じであるので省略する。
【００４１】
また、図４に一例を示すＣＰＵレジスタテーブル１４２は、１つのテーブルに、全ての仮想計算機の仮想ＣＰＵと退避レジスタとを有しているが、これに限られるわけではなく、１つのテーブルに、１つの仮想計算機の仮想ＣＰＵと退避レジスタとを有し、仮想計算機の数だけＣＰＵレジスタテーブル１４２を有しても良い。
【００４２】
図５を参照し、関連ＯＳテーブル１５５の一例を説明する。
【００４３】
図５において、関連ＯＳテーブル１５５は、稼動ＯＳ５０１、関連ＯＳ５０２等を含む。稼動ＯＳ５０１、関連ＯＳ５０２等は互いに対応付けられている。稼動ＯＳ５０１は、計算機システム１００上で実行されるオペレーティングシステムを示す。関連ＯＳ５０２は、対応する稼動ＯＳ５０１と連携動作してサービスを提供しているオペレーティングシステムを示す。
【００４４】
なお、関連ＯＳテーブル１５５の情報は、あらかじめ設定されているものとするが、入力装置１１４又は通信インタフェース１１６を介して入力された情報に従い、設定、削除、変更等してもよい。また、仮想計算機制御部２１１が、ＯＳ２２３、ＯＳ２３３、ＯＳ２４３等の起動後、自動的にＯＳ２２３、ＯＳ２３３、ＯＳ２４３上の設定ファイル（図示略）を介して変更してもよい。
【００４５】
図６を参照し、ダンプ実施ＯＳテーブル１５６の一例を説明する。
【００４６】
図６において、ダンプ実施ＯＳテーブル１５６は、縦軸の障害ＯＳ６０１、横軸のダンプ実施ＯＳ６０２、自動設定フラグ６０３等を有する。障害ＯＳ６０１と、自動設定フラグ６０３とは対応付けられている。障害ＯＳ６０１、ダンプ実施ＯＳ６０２の各々は、計算機システム１００の実現する仮想計算機の各々で独立して実行するオペレーティングシステムである。障害ＯＳ６０１と、ダンプ実施ＯＳ６０２とで定まるマトリクス部６０４は、障害ＯＳ６０１で示されるオペレーティングシステムに障害が発生した場合、ダンプ実施ＯＳ６０２で示されるオペレーティングシステムのメモリダンプを実施するか否かを示す。図６の例では、マトリクス部６０４「Ｙｅｓ」は、ダンプ実施ＯＳ６０２で示されるオペレーティングシステムのメモリダンプを実施することを示す。また、マトリクス部６０４「Ｎｏ」は、ダンプ実施ＯＳ６０２で示されるオペレーティングシステムのメモリダンプを実施しないことを示す。自動設定フラグ６０３は、対応する障害ＯＳ６０１の関連ＯＳが変更された場合に、その障害ＯＳ６０１と、ダンプ実施ＯＳ６０２とで定まるマトリクス部６０４を自動的に変更するか否かを示す。図６の例の場合、自動設定フラグ６０３「ＯＮ」は、マトリクス部６０４を自動的に変更することを示す。また、自動設定フラグ６０３「ＯＦＦ」は、マトリクス部６０４を自動的に変更しないことを示す。
【００４７】
なお、ダンプ実施ＯＳテーブル１５６の情報は、あらかじめ設定されているものとするが、入力装置１１４又は通信インタフェース１１６を介して入力された情報に従い、設定、削除、変更等してもよい。また、ダンプ実施ＯＳテーブル１５６の自動設定フラグ６０３が「ＯＮ」の場合、関連ＯＳテーブル１５５の作成・更新のたびに自動的に作成・更新される。この動作例は後述する。
【００４８】
図７を参照し、ダンプ実施ポリシテーブル１５７の一例を説明する。
【００４９】
図７において、ダンプ実施ＯＳ指示７０１、有効フラグ７０２等を有する。ダンプ実施ＯＳ指示７０１、有効フラグ７０２等は互いに対応付けられている。ダンプ実施ＯＳ指示７０１は、ダンプ実施ＯＳを指示する方法を示す。本実施形態では、ダンプ実施ＯＳを指示する方法として、ダンプ実施ＯＳテーブル１５６から読み出す方法と、手動指示する方法とがあるものとする。有効フラグ７０２は、対応するダンプ実施ＯＳ指示７０１に示される方法が有効であるか否かを示す。図７の例では、有効フラグ７０２「Ｙｅｓ」は、対応するダンプ実施ＯＳ指示７０１に示される方法が有効であることを示す。また、有効フラグ７０２「Ｎｏ」は、対応するダンプ実施ＯＳ指示７０１に示される方法が無効であることを示す。
【００５０】
なお、ダンプ実施ポリシテーブル１５７の情報は、あらかじめ設定されているものとするが、入力装置１１４又は通信インタフェース１１６を介して入力された情報に従い、設定、削除、変更等してもよい。
【００５１】
次に、動作例を説明する。
【００５２】
まず、ダンプ実施ＯＳテーブル１５６を更新する動作例を、図８を参照して説明する。
【００５３】
図８において、変更部２１２は、稼動ＯＳと、その稼動ＯＳに対する関連ＯＳとの組み合わせが変更されると（Ｓ８０１）、その組み合わせのうち１つを選択する（Ｓ８０２）。具体的には、例えば、稼動ＯＳと、その稼動ＯＳに対する関連ＯＳとの組み合わせが変更される場合の例として、例えば、ＯＳ２２３、ＯＳ２３３、ＯＳ２４３等が自身の設定ファイル（図示略）を変更する場合、入力装置１１４又は通信インタフェース１１６を介して設定、変更、削除等を指示する情報が入力された場合等がある。変更部２１２は、これらの情報に従い、関連ＯＳテーブル１５５を変更する。さらに、変更部２１２は、その関連ＯＳテーブル１５５において、互いに対応付けられた稼動ＯＳ５０１及び関連ＯＳ５０２のうち、変更されたものを１つ選択する。
【００５４】
次に、変更部２１２は、Ｓ８０２で選択した組み合わせの稼動ＯＳに対し、ダンプ実施ＯＳテーブルを自動変更するように設定されているか否か判定する（Ｓ８０３）。そのために、変更部２１２は、ダンプ実施ＯＳテーブル１５６から、Ｓ８０２で選択した組み合わせの稼動ＯＳと一致する障害ＯＳ６０１と対応付けられた自動設定フラグ６０３を参照し、「ＯＮ」であるか否か判定する。この判定の結果、自動設定フラグ６０３が「ＯＮ」である場合、変更部２１２は、Ｓ８０２で選択した組み合わせの稼動ＯＳに対し、ダンプ実施ＯＳテーブルを自動変更するように設定されていると判定する。
【００５５】
Ｓ８０３の判定の結果、Ｓ８０２で選択した組み合わせの稼動ＯＳに対し、ダンプ実施ＯＳテーブルを自動変更するように設定されている場合、変更部２１２は、Ｓ８０２で選択した組み合わせの稼動ＯＳと関連して動作しているＯＳを取得し、ダンプ実施ＯＳテーブル１５６のマトリクス部６０４等を更新する（Ｓ８０４）。そのために、例えば、変更部２１２は、関連ＯＳテーブル１５５から、Ｓ８０２で選択した稼動ＯＳと一致する稼動ＯＳ５０１と対応付けられた関連ＯＳ５０２を読み出す。次に、変更部２１２は、ダンプ実施ＯＳテーブル１５６の、Ｓ８０２で選択した組み合わせの稼動ＯＳと一致する障害ＯＳ６０１と、Ｓ８０２で選択した組み合わせの稼動ＯＳと一致する関連ＯＳ６０２とで定まるマトリクス部６０４を「Ｙｅｓ」に変更する。さらに、変更部２１２は、ダンプ実施ＯＳテーブル１５６の、Ｓ８０２で選択した組み合わせの稼動ＯＳと一致する障害ＯＳ６０１と、読み出した関連ＯＳと一致する関連ＯＳ６０２とで定まるマトリクス部６０４を「Ｙｅｓ」に変更する。関連ＯＳテーブル１５５から、Ｓ８０２で選択した組み合わせの稼動ＯＳと一致する稼動ＯＳ５０１と対応付けられた関連ＯＳ５０２を複数読み出している場合、変更部２１２は、この処理を各関連ＯＳ５０２に対し行なう。
【００５６】
具体的には、例えば、Ｓ８０２の処理で、図５に一例を示す関連ＯＳテーブル１５５から、稼動ＯＳ「ＯＳａ」、関連ＯＳ「ＯＳｂ」、「ＯＳｃ」の組み合わせを選択した場合の例を説明する。この場合、図６に一例を示すダンプ実施ＯＳテーブル１５６を参照し、障害ＯＳ６０１「ＯＳａ」と対応付けられた自動設定フラグ６０３が「ＯＮ」であるので、変更部２１２は、ダンプ実施ＯＳテーブルを自動変更するように設定されていると判定する。変更部２１２は、図６に一例を示すダンプ実施ＯＳテーブル１５６から、稼動ＯＳ５０１「ＯＳａ」と対応付けられている関連ＯＳ５０２「ＯＳｂ」、「ＯＳｃ」を読み出す。次に、変更部２１２は、ダンプ実施ＯＳテーブル１５６の、ＯＳ６０１「ＯＳａ」と、関連ＯＳ６０２「ＯＳａ」とで定まるマトリクス部６０４を「Ｙｅｓ」に変更する。また、変更部２１２は、ダンプ実施ＯＳテーブル１５６の、ＯＳ６０１「ＯＳａ」と、関連ＯＳ６０２「ＯＳｂ」とで定まるマトリクス部６０４を「Ｙｅｓ」に変更する。変更部２１２は、ダンプ実施ＯＳテーブル１５６の、ＯＳ６０１「ＯＳａ」と、関連ＯＳ６０２「ＯＳｃ」とで定まるマトリクス部６０４を「Ｙｅｓ」に変更する。これにより、図８に一例を示すようなダンプ実施ＯＳテーブル１５６となる。
【００５７】
Ｓ８０３の判定の結果、Ｓ８０２で選択した稼動ＯＳに対し、ダンプ実施ＯＳテーブルを自動変更するように設定されていない場合、変更部２１２は、稼動ＯＳと、その稼動ＯＳに対する関連ＯＳとの組み合わせが変更されたことを通知する情報を、出力装置１１５、又は、通信インタフェース１１６を介して出力する（Ｓ８０５）。この処理により、ディスプレイ等の出力装置１１５、又は、情報処理装置１２０のディスプレイ（図示略）等に表示される画面の例を図９に示す。図９において、画面９０１は、変更部２１２が、所定のフォーマット等を用いて表示する例である。変更部２１２は、関連ＯＳテーブル１５５等から読み出した、互いに対応付けられた稼動ＯＳ５０１及び関連ＯＳ５０２等を所定フォーマットに合成する等して、画面９０１のデータを作成し、出力装置１１５、又は、通信インタフェース１１６等から出力する。この画面９０１上等で、管理者が、入力装置１１４又は情報処理装置１２０の入力装置等を用いて、ダンプ実施ＯＳテーブルの自動変更指示を入力した場合、変更部２１２は、上述のＳ８０４の動作によりダンプ実施ＯＳテーブル１５６を変更してもよい。また、この画面９０１上等で、管理者が、入力装置１１４又は情報処理装置１２０の入力装置等を用いて、ダンプ実施ＯＳテーブルの手動変更指示を入力した場合、変更部２１２は、所定フォーマットを用いる等して手動変更するための画面データ等を出力してもよい。また、変更部２１２は、このとき、ダンプ実施ＯＳテーブル１５６の自動設定フラグ６０３を変更するための画面データ等を出力してもよい。
【００５８】
なお、ここで、計算機システム１００に、仮想計算機上で実行する新たなＯＳが追加され、関連ＯＳテーブル１５５に、新たなＯＳが追加された場合、ダンプ実施ＯＳテーブル１５６には、Ｓ８０２で選択した組み合わせの稼動ＯＳと一致する障害ＯＳ６０１が含まれていない。この場合、変更部２１２は、上述と同じ動作によりダンプ実施ＯＳテーブル１５６を自動設定してもよい。また、変更部２１２は、上述と同様に、新たなＯＳが追加されたことを通知し、さらに、ダンプ実施ＯＳテーブル１５６を自動設定するか、或いは、管理者自身により設定するかを指示させるための画面等を出力しても良い。
【００５９】
次に、障害が発生した場合の動作例を説明する。以下、計算機システム１００で実行するオペレーティングシステムのうち、障害の発生したものを、障害ＯＳという。
【００６０】
まず、障害検知部２１３が、障害を検知した時の動作例を、図１０を参照して説明する。
【００６１】
図１０において、仮想計算機制御部２１１は、通常動作を行い、仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４の各々を制御する。仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４上で実行されるＯＳ２２３、ＯＳ２３３、ＯＳ２４３は通常運用処理を実行している（Ｓ１００１）。この動作は、従来技術の仮想計算機と同じである。
【００６２】
所定の事象が発生すると、障害検知部２１３が起動され（Ｓ１００１）、以下で説明する処理を行なう。ここで、障害検知部２１３が起動されるトリガーとなる事象の例として、次の３つがある。
【００６３】
１）仮想計算機上で実行されるＯＳが自身の論理矛盾やバグを認知し、パニックと呼ばれるシステム障害発生イベントを発行した場合。
【００６４】
２）演算装置が緊急の措置を必要とするハードウェア・エラーを検出した場合。
【００６５】
３）ＯＳがハングアップした場合。
【００６６】
上記１）の場合、仮想計算機上で実行されるＯＳの各々は、自身がパニックイベントを発行した時に実行する関数を、ＯＳパニックのフックへあらかじめ登録しておく。フックとは、ＯＳの処理命令列の変更を要求する他のモジュールに対するインタフェースである。フックへの登録は例えば次の方法がある。ＯＳがパニック関数を呼んだ事を契機として別の関数を実行させる処理（以下、コールバックという）をＯＳが実行できる場合、そのコールバックの関数としてフックに登録しておくとよい。また、ＯＳがパニックイベントを発行した時、ＯＳ内のいくつかの決まった関数がコールされることを利用して、それらの関数の命令列を置き換えてもよい。
【００６７】
上記２）の場合、ＣＰＵ１１１が緊急の措置を必要とするハードウェア・エラーを検出した場合、マシン・チェック・アボート（Machine Check Abort；ＭＣＡ）が発生する。仮想計算機制御部２１１等が、ＣＰＵ１１１からのＭＣＡ割り込み発生を認知（トラップ）した場合、障害検知部２１３へ制御を移行する。
【００６８】
上記３）の場合、仮想計算機制御部２１１が、ＯＳがハングアップした場合等に発生されるダンプ実施契機割り込みを認知した場合、障害検知部２１３へ制御を移行する。このダンプ実施契機割り込みとして、例えば、マスク不可割り込み（ＮＭＩ：Non-Maskable Interrupt）やＩＮＩＴ割り込み等がある。
【００６９】
障害検知部２１３は、まず、障害ＯＳが動作していた仮想計算機に対するＣＰＵ１１１の時分割割り当てを休止する（Ｓ１００３）。次に、障害ＯＳを実行中であった仮想ＣＰＵのレジスタ情報を、その仮想ＣＰＵに対応するＣＰＵレジスタテーブル１４２へ退避する（Ｓ１００４）。そのために、例えば、障害検知部２１３は、まず、障害ＯＳを実行していた仮想計算機を取得する。障害ＯＳを実行していた仮想計算機を取得するために、例えば、予め、仮想計算機、その仮想計算機で実行するＯＳ等を対応付けたテーブル等を記憶装置１１３等に格納しておき、障害検知部２１３は、このテーブルを参照して、障害ＯＳを実行していた仮想計算機を取得してもよい。次に、障害検知部２１３は、ＣＰＵレジスタテーブル１４２から、障害ＯＳを実行していた仮想計算機と一致する仮想計算機４０１と対応付けられた仮想ＣＰＵ４０２を読み出す。障害検知部２１３は、ＣＰＵ１１１のレジスタから、読み出した仮想ＣＰＵ４０２のレジスタ情報を読み出し、その読み出したレジスタ情報を、読み出した仮想ＣＰＵ４０２に対応する退避レジスタ４０３に格納する。
【００７０】
なお、ＣＰＵ１１１が複数である場合、仮想ＣＰＵ４０２に示されるＣＰＵがどのＣＰＵを示しているか判定するためには、例えば、仮想ＣＰＵ４０２と、その仮想ＣＰＵの実ＣＰＵとを対応付けたＣＰＵ対応テーブルをメモリ１１２又は記憶装置１１３に格納しておき、障害検知部２１３は、このテーブルを参照することにより、仮想ＣＰＵ４０２に示されるＣＰＵを特定するとよい。
【００７１】
具体的には、例えば、「ＯＳｂ」が、仮想ＣＰＵ「ＣＰＵｂｂ」による処理実行時に障害が発生した場合の動作例を説明する。この場合、「ＯＳｂ」を実行する仮想計算機は仮想計算機ｂ２０３であるので、障害検知部２１３は、ＣＰＵ１１１のレジスタから、仮想ＣＰＵ「ＣＰＵｂｂ」による処理を実行するためのレジスタ情報を読み出し、この読み出したレジスタ情報を、図４に一例を示すＣＰＵレジスタテーブル１４２の、仮想計算機４０１「仮想計算機ｂ」、仮想ＣＰＵ４０２「ＣＰＵｂｂ」に対応付けられた退避レジスタ４０３に格納する。
【００７２】
次に、障害検知部２１３は、障害ＯＳ以外のＯＳを実行している他の仮想計算機上のＯＳでの障害発生によって、後述するＳ１００６以降の処理が同時実行されるのを防ぐために排他制御する（Ｓ１００５）。
【００７３】
次に、障害検知部２１３は、仮想計算機制御部２１１に処理を指示する等して、障害が発生した仮想計算機以外の他の全仮想計算機に対するＣＰＵ１１１の時分割割り当てを一時休止する（Ｓ１００６）。次に、障害検知部２１３は、障害が発生した仮想計算機以外の他の仮想計算機の処理を実行中であったＣＰＵ１１１のレジスタ情報を、ＣＰＵレジスタテーブル１４２へ退避する（Ｓ１００７）。この動作例は上述のＳ１００４と同じであるので省略する。
【００７４】
上述の障害検知部２１３の処理の後、後述するダンプ実施部２１４による制御に移行する。ダンプ実施部２１４の動作例を、図１１を参照して説明する。
【００７５】
図１１において、まず、ダンプ実施部２１４は、ダンプ実施ポリシテーブル１５７における手動指示が有効かどうか判定する（Ｓ１１０１）。そのために、ダンプ実施部２１４は、例えば、ダンプ実施ポリシテーブル１５７を参照し、ダンプ実施指示７０１「手動指示」に対応する有効フラグ７０２が「Ｙｅｓ」であるか否か判定する。該当する有効フラグ７０２が「Ｙｅｓ」である場合、ダンプ実施部２１４は、ダンプ実施ポリシテーブル１５７における手動指示が有効であると判定する。
【００７６】
Ｓ１１０１の判定の結果、ダンプ実施ポリシテーブル１５７における手動指示が有効である場合、ダンプ実施部２１４は、変更部２１２に、ダンプ実施ＯＳの受付を指示する。変更部２１２は、入力装置１１４又は通信インタフェース１１６を介して入力されたダンプ実施ＯＳを受け付ける（Ｓ１１０２）。そのために、変更部２１２は、メモリ１１２又は記憶装置１１３等から読み出した所定の画面データを出力する等して、図１２に一例を示す画面１２０１を、ディスプレイ等の出力装置１１５、又は、情報処理装置１２０のディスプレイ等に表示させてもよい。管理者等は、入力装置１１４、又は、情報処理装置１２０の入力装置等を用いる等して、計算機システム１００上で動作する仮想計算機ａ２０２、仮想計算機ｂ２０３、仮想計算機ｃ２０４の各々で動作させるＯＳ２２３、ＯＳ２３３、ＯＳ２４３のうち少なくとも１つをダンプ実施ＯＳとして指定して入力する。変更部２１２は、入力されたＯＳを、ダンプ実施ＯＳとしてダンプ実施部２１４に渡す。ここで、変更部２１２又はダンプ実施部２１４は、メモリ１１２又は記憶装置１１３に記憶されているＯＳ以外のＯＳが入力された場合、再度の入力を要求する情報を、出力装置１１５、又は、情報処理装置１２０の出力装置等に出力しても良い。
【００７７】
次に、ダンプ実施部２１４は、Ｓ１１０２で受け付けたダンプ実施ＯＳ以外であり、かつ、ダンプ実施ＯＳテーブル１５６において障害ＯＳに対するダンプ実施ＯＳとしても指定されていないＯＳの仮想計算機に対するＣＰＵ１１１の時分割割り当てを再開し、そのＯＳの処理の実行を再開する（Ｓ１１０３）。そのために、例えば、ダンプ実施部２１４は、計算機システム１００上で実現する仮想計算機のうち１つを選択し、この仮想計算機により実行されるＯＳが、Ｓ１１０２で受け付けたダンプ実施ＯＳのうち少なくとも１つと一致するか否か判定する。この判定の結果、一致する場合、ダンプ実施部２１４は、計算機システム１００上で実現する仮想計算機のうち他の１つを選択し、同じ判定を行なう。また、この判定の結果、一致しない場合、ダンプ実施部２１４は、ダンプ実施ＯＳテーブル１５６を参照し、障害ＯＳと一致する障害ＯＳ６０１と、選択した仮想計算機により実行されるＯＳと一致するダンプ実施ＯＳ６０２とで定まるマトリクス部６０４が「Ｎｏ」となっているか否か判定する。この判定の結果、該当するマトリクス部６０４が「Ｎｏ」である場合、ダンプ実施部２１４は、仮想計算機制御部２１１に、選択した仮想計算機に対し、ＣＰＵ１１１の時分割割り当ての再開を指示する。仮想計算機制御部２１１は、その指示に従い、ＣＰＵ１１１の時分割割り当てを再開する。この動作は、従来技術の仮想計算機と同じであるので省略する。また、上述の判定の結果、該当するマトリクス部６０４が「Ｙｅｓ」である場合、ダンプ実施部２１４は、計算機システム１００上で実現する仮想計算機のうち他の１つを選択し、同じ判定を行なう。ダンプ実施部２１４は、この処理を、計算機システム１００上で実現する全ての仮想計算機に対し行なう。
【００７８】
この処理により、ダンプ実施ＯＳでないＯＳは直ちに通常処理を再開し、サービス運用を再開することが可能となる。
【００７９】
具体的には、例えば、障害ＯＳが「ＯＳｂ」であり、Ｓ１１０２で「ＯＳａ」を受け付けた場合の動作例を説明する。ダンプ実施部２１４は、まず、仮想計算機ａ２０２を選択する。仮想計算機ａ２０２により実行されるＯＳは「ＯＳａ」であるので、Ｓ１１０２で受け付けたダンプ実施ＯＳ「ＯＳａ」と一致する。従って、ダンプ実施部２１４は、仮想計算機ｂ２０３を選択する。仮想計算機ｂ２０３により実行されるＯＳは「ＯＳｂ」であるので、Ｓ１１０２で受け付けたダンプ実施ＯＳ「ＯＳａ」と一致しない。図６に一例を示すダンプ実施ＯＳテーブル１５６は、障害ＯＳ６０１「ＯＳｂ」とダンプ実施ＯＳ６０２「ＯＳｂ」とで定まるマトリクス部６０４「Ｙｅｓ」であるので、ダンプ実施部２１４は、選択した仮想計算機ｂ２０３に対し、ＣＰＵ１１１の時分割割り当ての再開を指示しない。次に、ダンプ実施部２１４は、仮想計算機ｃ２０４を選択する。仮想計算機ｃ２０４により実行されるＯＳは「ＯＳｃ」であるので、Ｓ１１０２で受け付けたダンプ実施ＯＳ「ＯＳａ」と一致しない。図６に一例を示すダンプ実施ＯＳテーブル１５６は、障害ＯＳ６０１「ＯＳｂ」とダンプ実施ＯＳ６０２「ＯＳｃ」とで定まるマトリクス部６０４「Ｎｏ」であるので、ダンプ実施部２１４は、選択した仮想計算機ｃ２０４に対するＣＰＵ１１１の時分割割り当ての再開を指示する。
【００８０】
ダンプ実施部２１４は、Ｓ１１０２で受け付けたダンプ実施ＯＳのうち１つを選択する（Ｓ１１０４）。
【００８１】
次に、ダンプ実施部２１４は、Ｓ１１０４で選択したダンプ実施ＯＳのメモリダンプを実施する（Ｓ１００５）。そのために、ダンプ実施部２１４は、メモリ管理テーブル１４１から、Ｓ１１０４で選択したダンプ実施ＯＳの仮想計算機と一致する仮想計算機３１１と対応付けられた仮想ページアドレス３１２を参照し、仮想ページアドレス３１２値が小さい（低位アドレス）順に、その仮想ページアドレス３１２と対応する実ページアドレス３１３を読み出す。ここで、選択したダンプ実施ＯＳの仮想計算機を取得するために、ダンプ実施部２１４は、上述のような、仮想計算機と、その仮想計算機で実行するＯＳとを対応付けたテーブルを参照する等してもよい。次に、ダンプ実施部２１４は、メモリ１１２から、読み出した実ページアドレス３１３に示される領域のデータを読み出し、Ｓ１１０４で選択したダンプ実施ＯＳを示す情報と共に、記憶装置１１３の所定領域へ格納する。ダンプ実施部２１４は、読み出した実ページアドレス３１３が複数である場合、それらの各実ページアドレス３１３に示される領域の各々に対し、上述の処理を行なう。なお、Ｓ１１０４で選択したダンプ実施ＯＳに対応する仮想計算機のレジスタ情報は、上述の障害検知部２１３による処理により退避済みである。ダンプ実施部２１４は、ＣＰＵレジスタテーブル１４２から、Ｓ１１０４で選択したダンプ実施ＯＳの仮想計算機と一致する仮想計算機４０１と対応付けられた退避レジスタ４０３を読み出し、読み出した退避レジスタ４０３に示されるＣＰＵ１１１のレジスタ領域内のレジスタ情報を、上述の処理で記憶装置１１３内に格納したデータに対応付けて、記憶装置１１３に格納する。
【００８２】
具体的には、例えば、障害ＯＳが「ＯＳｂ」であり、Ｓ１１０４で「ＯＳｂ」を選択した場合の動作例を説明する。「ＯＳｂ」を実行する仮想計算機は、仮想計算機ｂ２０３である。ダンプ実施部２１４は、図３（ｂ）に一例を示すメモリ管理テーブル１４１から、仮想計算機３１１「仮想計算機ｂ」と対応付けられた仮想ページアドレス３１２「ｂｂｂ」及び実ページアドレス３１３「ＢＢＢ」、仮想ページアドレス３１２「ｂｂｂｂｂｂ」及び実ページアドレス３１３「ＢＢＢＢＢＢ」を読み出す。次に、ダンプ実施部２１４は、メモリ１１２から、実ページアドレス３１３「ＢＢＢ」に示される領域のデータを読み出し、「ＯＳｂ」を示す情報と対応付けて記憶装置１１３の所定領域へ格納する。さらに、ダンプ実施部２１４は、メモリ１１２から、実ページアドレス３１３「ＢＢＢＢＢＢ」に示される領域のデータを読み出し、「ＯＳｂ」を示す情報と対応付けて記憶装置１１３の所定領域へ格納する。また、ダンプ実施部２１４は、図４に一例を示すＣＰＵレジスタテーブル１４２から、仮想計算機４０１「仮想計算機ｂ」と対応付けられた退避レジスタ４０３に格納されているデータを読み出し、読み出したデータと、「ＯＳｂ」を示す情報等とを対応付ける等して記憶装置１１３に格納する。
【００８３】
次に、ダンプ実施部２１４は、Ｓ１１０４で選択したダンプ実施ＯＳが、障害ＯＳであるか否か判定する（Ｓ１１０６）。
【００８４】
Ｓ１１０６の判定の結果、Ｓ１１０４で選択したダンプ実施ＯＳが、障害ＯＳでない場合、ダンプ実施部２１４は、Ｓ１１０４で選択したダンプ実施ＯＳに対し、ＣＰＵ１１１の時分割割り当てを再開し、そのＯＳの処理の実行を再開する（Ｓ１１０７）。そのための動作例は上述と同じであるので省略する。
【００８５】
Ｓ１１０６の判定の結果、Ｓ１１０４で選択したダンプ実施ＯＳが、障害ＯＳである場合、又は、Ｓ１１０７の処理の後、ダンプ実施部２１４は、Ｓ１１０２で受け付けたダンプ実施ＯＳのうち、未選択のものがあるか否か判定する（Ｓ１１０８）。
【００８６】
Ｓ１１０８の判定の結果、未選択のものがある場合、ダンプ実施部２１４は、Ｓ１１０５の処理を再度行ない、Ｓ１１０２で受け付けたダンプ実施ＯＳのうち、未選択のものを１つ選択する。
【００８７】
Ｓ１１０８の判定の結果、未選択のものがない場合、ダンプ実施部２１４は、ダンプ実施処理終了指示を受け付けたか否か判定する（Ｓ１１０９）。この指示は、例えば、Ｓ１１０２で受け付けるダンプ実施ＯＳと共に受け付けてもよく、又、任意のタイミングで、入力装置１１４、又は、通信インタフェース１１６を介して入力されてもよい。Ｓ１１０２でダンプ実施ＯＳと共に受け付ける場合、上述の図１２の画面１２０１に一例を示すように、指示したＯＳのみに対しダンプを実施するか、又は、指示したＯＳ以外のＯＳにもダンプを実施するか否かの指示を、ラジオボタン等により受け付けてもよい。この場合、「指示したＯＳのみに対しダンプを実施する」が選択された場合、ダンプ実施部２１４は、ダンプ実施処理終了指示を受け付けたものと判定する。また、「指示したＯＳ以外のＯＳにもダンプを実施する」が選択された場合、ダンプ実施部２１４は、ダンプ実施処理終了指示を受け付けていないと判定する。また、管理者等は、ダンプ実施ＯＳを指示した後等の任意のタイミングで、入力装置１１４、又は、情報処理装置１２０の入力装置を用いてダンプ実施処理終了を指示してもよい。計算機システム１００又は情報処理装置１２０は、その指示に従い、割り込みコマンド等の所定コマンドを発行等する。ダンプ実施部２１４は、所定コマンドが発行等されている場合、ダンプ実施処理終了指示を受け付けたと判定する。
【００８８】
Ｓ１１０９の判定の結果、ダンプ実施処理終了指示を受け付けている場合、ダンプ実施部２１４は、後述するＳ１１１８の処理を実行する。
【００８９】
Ｓ１１０１の判定の結果、ダンプ実施ポリシテーブル１５７における手動指示が有効でない場合、又は、Ｓ１１０９の判定の結果、ダンプ実施処理終了指示を受け付けていない場合、ダンプ実施部２１４は、ダンプ実施ＯＳ以外のＯＳに対し、ＣＰＵ１１１の時分割割り当てを再開し、そのＯＳの処理の実行を再開する（Ｓ１１１０）。そのために、例えば、ダンプ実施部２１４は、まず、計算機システム１００上で実現する仮想計算機のうち１つを選択する。次に、ダンプ実施部２１４は、ダンプ実施ＯＳテーブル１５６を参照し、障害ＯＳと一致する障害ＯＳ６０１と、選択した仮想計算機により実行されるＯＳと一致するダンプ実施ＯＳ６０２とで定まるマトリクス部６０４が「Ｎｏ」であるか否か判定する。この判定の結果、該当するマトリクス部６０４が「Ｎｏ」である場合、ダンプ実施部２１４は、仮想計算機制御部２１１に、選択した仮想計算機に対し、ＣＰＵ１１１の時分割割り当ての再開を指示する。仮想計算機制御部２１１は、その指示に従い、ＣＰＵ１１１の時分割割り当てを再開する。この動作は、従来技術の仮想計算機と同じであるので省略する。また、上述の判定の結果、該当するマトリクス部６０４が「Ｙｅｓ」である場合、ダンプ実施部２１４は、計算機システム１００上で実現する仮想計算機のうち他の１つを選択し、同じ判定を行なう。ダンプ実施部２１４は、この処理を、計算機システム１００上で実現する全ての仮想計算機に対し行なう。
【００９０】
具体的には、例えば、障害ＯＳが「ＯＳｂ」である場合の動作例を説明する。ダンプ実施部２１４は、まず、仮想計算機ａ２０２を選択する。仮想計算機ａ２０２により実行されるＯＳは「ＯＳａ」である。図６に一例を示すダンプ実施ＯＳテーブル１５６は、障害ＯＳ６０１「ＯＳｂ」とダンプ実施ＯＳ６０２「ＯＳａ」とで定まるマトリクス部６０４「Ｙｅｓ」であるので、ダンプ実施部２１４は、選択した仮想計算機ａ２０２に対し、ＣＰＵ１１１の時分割割り当ての再開を指示しない。次に、ダンプ実施部２１４は、仮想計算機ｂ２０３を選択する。仮想計算機ｂ２０３により実行されるＯＳは「ＯＳｂ」である。図６に一例を示すダンプ実施ＯＳテーブル１５６は、障害ＯＳ６０１「ＯＳｂ」とダンプ実施ＯＳ６０２「ＯＳｂ」とで定まるマトリクス部６０４「Ｙｅｓ」であるので、ダンプ実施部２１４は、選択した仮想計算機ｂ２０３に対し、ＣＰＵ１１１の時分割割り当ての再開を指示しない。次に、ダンプ実施部２１４は、仮想計算機ｃ２０４を選択する。仮想計算機ｃ２０４により実行されるＯＳは「ＯＳｃ」である。図６に一例を示すダンプ実施ＯＳテーブル１５６は、障害ＯＳ６０１「ＯＳｂ」とダンプ実施ＯＳ６０２「ＯＳｃ」とで定まるマトリクス部６０４「Ｎｏ」であるので、ダンプ実施部２１４は、選択した仮想計算機ｃ２０４に対するＣＰＵ１１１の時分割割り当ての再開を指示する。
【００９１】
次に、ダンプ実施部２１４は、ダンプ実施ポリシテーブル１５７における自動取得が有効かどうか判定する（Ｓ１１１１）。そのために、ダンプ実施部２１４は、例えば、ダンプ実施ポリシテーブル１５７を参照し、ダンプ実施指示７０１「ダンプ実施ＯＳテーブル」に対応する有効フラグ７０２が「Ｙｅｓ」であるか否か判定する。該当する有効フラグ７０２が「Ｙｅｓ」である場合、ダンプ実施部２１４は、ダンプ実施ポリシテーブル１５７における自動取得が有効であると判定する。
【００９２】
Ｓ１１１１の判定の結果、ダンプ実施ポリシテーブル１５７における自動取得が有効でない場合、ダンプ実施部２１４は、後述するＳ１１１８の処理を行なう。
【００９３】
Ｓ１１１１の判定の結果、ダンプ実施ポリシテーブル１５７における自動取得が有効である場合、ダンプ実施部２１４は、ダンプ実施ＯＳのうち１つを選択する（Ｓ１１１２）。そのために、ダンプ実施部２１４は、例えば、Ｓ１１１０の処理で、ＣＰＵ１１１の時分割割り当てを再開しないＯＳのうち１つを選択する。
【００９４】
次に、ダンプ実施部２１４は、Ｓ１１１２で選択したダンプ実施ＯＳが、上述の手動指示によるメモリダンプ実施済みであるか否か判定する（Ｓ１１１３）。そのために、例えば、ダンプ実施部２１４は、記憶装置１１３の所定領域を参照し、Ｓ１１１２で選択したダンプ実施ＯＳと一致するＯＳを示す情報が格納されているか否か判定する。
【００９５】
Ｓ１１１３の判定の結果、Ｓ１１１２で選択したダンプ実施ＯＳが、上述の手動指示によるメモリダンプ実施済みでない場合、ダンプ実施部２１４は、Ｓ１１１２で選択したダンプ実施ＯＳのメモリダンプを実施する（Ｓ１１１４）。そのための動作例は、上述のＳ１１０５と同じであるので省略する。
【００９６】
Ｓ１１１３の判定の結果、Ｓ１１１２で選択したダンプ実施ＯＳが、上述の手動指示によるメモリダンプ実施済みである場合、又は、Ｓ１１１４の処理の後に、ダンプ実施部２１４は、Ｓ１１１２で選択したダンプ実施ＯＳが、障害ＯＳであるか否か判定する（Ｓ１１１５）。
【００９７】
Ｓ１１１５の判定の結果、Ｓ１１１２で選択したダンプ実施ＯＳが、障害ＯＳでない場合、ダンプ実施部２１４は、Ｓ１１１２で選択したダンプ実施ＯＳに対し、ＣＰＵ１１１の時分割割り当てを再開し、そのＯＳの処理の実行を再開する（Ｓ１１１６）。そのための動作例は上述と同じであるので省略する。
【００９８】
Ｓ１１１５の判定の結果、Ｓ１１１２で選択したダンプ実施ＯＳが、障害ＯＳである場合、又は、Ｓ１１１６の処理の後、ダンプ実施部２１４は、ダンプ実施ＯＳのうち、未選択のものがあるか否か判定する（Ｓ１１１７）。
【００９９】
Ｓ１１１７の判定の結果、未選択のものがある場合、ダンプ実施部２１４は、Ｓ１１１２の処理を再度行ない、ダンプ実施ＯＳのうち、未選択のものを１つ選択する。
【０１００】
Ｓ１１１７の判定の結果、未選択のものがない場合、ダンプ実施部２１４は、障害検知部２１３が上述のＳ１００５で設定した排他制御を解除する（Ｓ１１１８）。ダンプ実施部２１４は、障害ＯＳ、ダンプ実施ＯＳ、上述の処理で取得したレジスタ情報、メモリ情報等の一部又は全てを、出力装置１１５又は通信インタフェース１１６に出力する（Ｓ１１１９）。計算機システム１００及び情報処理装置１２０のディスプレイに障害ＯＳ、ダンプ実施ＯＳ等を表示した画面の例を、図１３の画面１３０１に示す。図１３において、画面１３０１に含まれる障害ＯＳ、ダンプ実施ＯＳは、障害ＯＳ、及び、上述のＳ１１０５、Ｓ１１１４の処理でメモリダンプを実施したＯＳである。また、ダンプ実施部２１４は、計算機システム１００又は情報処理装置１２０の有する、障害発生の原因等を追求するソフトウェア（図示略）を起動し、上述の処理で取得したレジスタ情報、メモリ情報等により、原因追求の処理を実行させてもよい。このソフトウェアは従来技術であり、例えばデバッガ等である。
【０１０１】
上述のように、ダンプ実施部２１４による処理の終了後、仮想計算機制御部２１１等が、障害ＯＳを実行する仮想計算機に指示する等して、仮想計算機が障害ＯＳを再起動する。このとき、仮想計算機は、関連ＯＳテーブル１５５及びダンプ実施ＯＳテーブル１５６における障害ＯＳに関する情報をクリアし、再起動後、関連ＯＳテーブル１５５及びダンプ実施ＯＳテーブル１５６内の、障害ＯＳに関する情報を再設定してもよい。
【０１０２】
上述したように、本実施形態の計算機システム１００は、ＯＳサービス処理中における障害発生時、障害ＯＳのみならず障害ＯＳと連携して動作していた関連ＯＳに関しても複数同時に、レジスタ情報を含めてメモリダンプを実施することができる。又、専用ダンプ実施ＯＳあるいはサービス運用ＯＳ上でメモリダンプ処理を行わせることなく、仮想計算機モニタ内のプログラムでメモリダンプ処理を可能とする。これにより、仮想計算機上にダンプ専用ＯＳを配置する計算機リソースを削減し、また、サービス運用ＯＳ上でオーバーヘッドやクリティカルなダンプ処理をしないので、サービス運用ＯＳへ直接的に性能や信頼面で影響を及ぼすことなくメモリダンプを実施することが可能となる。さらに、ＯＳ間連携によるサービス提供しているシステム障害に対して、原因特定および対策を完全かつ迅速に行うことが可能となる。
【０１０３】
また、上述のように、手動でのダンプ実施ＯＳの指示を可能としているので、例えば、開発時やテスト時、障害が発生しても停止させたくないＯＳがある場合等にも対応することが容易となる。
＜第２の実施形態＞
次に、第２の実施形態について説明する。
【０１０４】
上述の第１の実施形態は、本実施形態のダンプ実施システムを、仮想計算機システムに適用する場合の例を説明した。第２の実施形態は、本実施形態のダンプ実施システムを、従来技術のＬＰＡＲ技術に適用する場合の例である。
【０１０５】
ＬＰＡＲを実現するために、ハイパーバイザ、ハイパーバイザメモリ領域、ＬＰＡＲメモリ領域等が必要である。ここで、ハイパーバイザは、上述のように、計算機システムの論理分割機能を提供する機能を実現するファームウェアである。ハイパーバイザメモリ領域は、ハイパーバイザが用いるメモリ領域である。ＬＰＡＲメモリ領域は、各ＬＰＡＲが用いるメモリ領域である。
【０１０６】
本実施形態のダンプ実施システムを、従来技術のＬＰＡＲ技術に適用するために、例えば、複数の各ＬＰＡＲに上述の仮想計算機２０２〜２０４、ＬＰＡＲハイパーバイザに上述のＶＭＭ２０１、ハイパーバイザメモリ領域に上述のメモリ領域３０４、各ＬＰＡＲメモリ領域に上述のメモリ領域３０１〜３０３等を当てはめることにより、上述の第１の実施形態と同じ構成例及び動作例で実現することが可能である。
【０１０７】
第２の実施形態と、上述の第１の実施形態とは、この点のみが異なり、そのほかの点は上述の第１の実施形態と同じであるので、詳細については省略する。
【０１０８】
このように、第２の実施の形態を利用することによっても、ＬＰＡＲ上にダンプ専用ＯＳを配置するコストおよびリソースを削減し、また、サービス運用ＯＳへ直接的に性能や信頼面で影響を及ぼすことなくメモリダンプを実施することが可能である。
【０１０９】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【０１１０】
例えば、本実施形態のダンプ実施システムは、上述した第１の実施形態、第２の実施形態に限られるわけではなく、１つの情報処理装置で、複数のＯＳによる処理を、ＣＰＵを時分割で割り当てて実行する場合に有効である。
【０１１１】
また、例えば、上述の実施形態では、関連して動作するオペレーティングシステムを関連ＯＳテーブルに格納しておき、障害が発生した場合にメモリダンプを実施するオペレーティングシステムをダンプ実施ＯＳテーブルに格納しておくものとしたが、これに限られるわけではない。障害が発生した場合、関連ＯＳテーブルを参照し、障害の発生したオペレーティングシステムと関連して動作するオペレーティングシステムに対し、上述のようなメモリダンプを実施しても良い。
【図面の簡単な説明】
【０１１２】
【図１】本発明の、一実施形態の計算機のハードウェア構成例を示す図である。
【図２】同実施形態において、計算機の機能構成例を示す図である。
【図３】同実施形態において、メモリ管理テーブルの一例を説明する図である。
【図４】同実施形態において、ＣＰＵレジスタテーブルの一例を示す図である。
【図５】同実施形態において、関連ＯＳテーブルの一例を示す図である。
【図６】同実施形態において、ダンプ実施ＯＳテーブルの一例を示す図である。
【図７】同実施形態において、ダンプ実施ポリシテーブルの一例を示す図である。
【図８】同実施形態において、関連ＯＳテーブルを変更する場合の動作例を示す図である。
【図９】同実施形態において、画面例を示す図である。
【図１０】同実施形態において、障害を検出した場合の動作例を示す図である。
【図１１】同実施形態において、メモリダンプを実施する場合の動作例を示す図である。
【図１２】同実施形態において、画面例を示す図である。
【図１３】同実施形態において、画面例を示す図である。
【符号の説明】
【０１１３】
１００：計算機システム、１１０：通信ネットワーク、１２０：情報処理装置、１１１：ＣＰＵ、１１２：メモリ、１１３：記憶装置、１１４：入力装置、１１５：出力装置、１１６：通信インタフェース、１４１：メモリ管理テーブル、１４２：ＣＰＵレジスタテーブル、１５１：仮想計算機モニタプログラム、１５２：オペレーティングシステムプログラムａ、１５３：オペレーティングシステムプログラムｂ、１５４：オペレーティングシステムプログラムｃ、１５５：関連ＯＳテーブル、１５６：ダンプ実施テーブル、１５７：ダンプ実施ポリシテーブル、２０１：ＶＭＭ、２１１：仮想計算機制御部、２１２：変更部、２１３：障害検知部、２１４：ダンプ実施部、２０２：仮想計算機ａ、２２１：仮想ＣＰＵ、２２２：仮想メモリ、２２３：ＯＳａ、２０３：仮想計算機ｂ、２３１：仮想ＣＰＵ、２３２：仮想メモリ、２３３：ＯＳｂ、２０４：仮想計算機ｃ、２４１：仮想ＣＰＵ、２４２：仮想メモリ、２４３：ＯＳｃ
【図１】
2007226413.tif 000003
【図２】
2007226413.tif 000004
【図３】
2007226413.tif 000005
【図４】
2007226413.tif 000006
【図５】
2007226413.tif 000007
【図６】
2007226413.tif 000008
【図７】
2007226413.tif 000009
【図８】
2007226413.tif 000010
【図９】
2007226413.tif 000011
【図１０】
2007226413.tif 000012
【図１１】
2007226413.tif 000013
【図１２】
2007226413.tif 000014
【図１３】
2007226413.tif 000015