(57)【特許請求の範囲】
【請求項１】
１つの物理計算機中に１つ以上の論理区画を設け、論理区画のそれぞれでオペレーティングシステムを稼動させる論理区画式計算機システムにおいて、
それぞれが主記憶装置内に設けた同じ論理区画にアクセスでき、論理区画を制御するプログラムであるハイパバイザを１つの物理計算機の中に２つ以上備え、
前記２つ以上のハイパバイザ間で論理区画の制御情報及び物理計算機資源を受け渡すことにより、論理区画の制御を行うハイパバイザを、オペレーティングシステムの動作を中断させることなく交代するハイパバイザ交代手段を備え、
前記ハイパバイザ交代手段をハイパバイザ障害検出時点で動作させるハイパバイザ障害交代指示手段、あるいは、前記ハイパバイザ交代手段をハイパバイザ操作コマンドの投入時点で動作させるハイパバイザ交代指示手段の少なくとも一方を備えることを特徴とする論理区画式計算機システム。
【請求項２】
前記２つ以上のハイパバイザ間で、論理区画の制御に関わるハイパバイザ内の制御テーブルの内容をハイパバイザ間の通信により一致させておくハイパバイザ間状態一致手段をさらに備えることを特徴とする請求項１記載の論理区画式計算機システム。
【請求項３】
前記２つ以上のハイパバイザの同一あるいは異なるプログラムを同一のファイルまたは各々別ファイルより主記憶装置にロードして起動するハイパバイザ起動手段をさらに備えることを特徴とする請求項１記載の論理区画式計算機システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、論理区画式計算機システムに係り、特に、ハイパバイザと呼ばれる制御プログラムにより複数の論理区画を設けそれぞれの論理区画でゲストＯＳを稼動させる論理区画式計算機システムに関する。
【０００２】
【従来の技術】
１つの物理計算機上で複数のオペレーティングシステム（ゲストＯＳ）を稼動させる技術として、仮想計算機モニタにより仮想計算機を生成して制御する仮想計算機システム、及び、ハイパバイザにより論理区画を作成して制御する論理区画式計算機システムが知られている。仮想計算機モニタ及びハイパバイザは、仮想計算機または論理区画の制御をする核となる制御プログラムであり、命令プロセッサ等の計算機資源の割り当て制御を行う。
【０００３】
ここで、仮想計算機システムと論理区画式計算機システムとの相違を簡単に説明する。
【０００４】
仮想計算機システムは、仮想計算機を生成する一種のＯＳにより構成され、このＯＳは、ＯＳとして必要な機能の全てを備えており、この仮想計算機制御プログラムは、通常、ＶＭＣＰと呼ばれている。
【０００５】
一方、論理区画式計算機システムは、ハイパバイザと呼ばれる論理区画の制御をする制御プログラムにより構成される。ハイパバイザは、論理区画を設けるために、論理計算機資源を分け、論理区画間の壁を作るだけの制御プログラムであり、ハイパバイザの役割は、ハードウェアへの「壁」の設定が主である。論理区画の利点は、仮想計算機よりも運用が楽なことと、性能の向上が得やすいことである。
【０００６】
仮想計算機システムは、同時に使用するそれぞれの仮想計算機の合計主記憶容量が、物理計算機に実装されている主記憶容量以上であってもよい。これは、ＶＭＣＰがページング、つまり、あまり使われない主記憶ページを、ディスク装置に退避することにより実現することができるもので、要するに一般的なＯＳと同じ制御をしていることを意味する。
【０００７】
一方、論理区画式計算機システムは、実装されている主記憶装置を論理区画に分け与えるだけであり、論理区画の合計主記憶容量は、実装主記憶容量と同一となる。
【０００８】
仮想計算機システムは、仮想装置を作成することができる。例えば、仮想コンソール装置、仮想プリンタ、仮想リーダ装置、仮想チャネル間通信装置などをいくつでも作ることができる。このような複数の仮想装置の作成は、仮想計算機システムが、ゲストＯＳの入出力命令をトラップ（正式にはインタセプションという）し、入出力命令で使用するチャネルコマンド語（ＣＣＷ）を解析することで実現している。このため、仮想計算機システムでは、仮想装置を管理するためのテーブル類、チャネルコマンド語（入出力コマンド及びデータの所在を示すアドレスを格納）のアドレス変換などが必要となる。
【０００９】
一方、論理区画式計算機システムは、ハイパバイザが、ゲストＯＳの入出力命令には一切介入せず、ゲストＯＳが入出力命令を発行しても、ハイパバイザを経由せずに直接ハードウェアが受けるように構成される。
【００１０】
仮想計算機システムは、ＶＭＣＰ単体でゲストＯＳ固有のフォーマットを持つデータセット（ファイル）への直接アクセスが可能であり、例えば、ゲストＯＳ用の各種パラメータを、ゲストＯＳを移動させなくても編集・作成することができる。これは、ＶＭＣＰがチャネル以下に接続される入出力装置に対してアクセスすることにより実現することができる。
【００１１】
一方、論理区画式計算機システムは、ハイパバイザが、チャネル以下に接続される入出力装置へアクセスするということは一切ない。
【００１２】
前述したように、仮想計算機システムと論理区画式計算機システムとは、その基本的な考え方、構成が相違するが、何れにしても、仮想計算機システムまたは論理区画式計算機システムは、仮想計算機モニタまたはハイパバイザが停止した場合、その制御下にある全ゲストＯＳも停止することになる。このような全ゲストＯＳの停止を回避し、仮想計算機モニタまたはハイパバイザの障害時に、ゲストＯＳの動作を継続させることのできる従来技術として、例えば、特開平５−１２０４５号公報等に記載された技術が知られている。この従来技術は、仮想計算機モニタまたはハイパバイザに障害が発生した場合にも、１つのゲストＯＳだけの動作を継続させるようにしたものである。また、他の従来技術として、例えば、特開平８−２８７０２１号公報等に記載された技術が知られている。この従来技術は、複数の物理計算機を構成し、それぞれの物理計算機上で仮想計算機モニタを１つ稼動させ、ホットスタンバイ構成とするというものである。
【００１３】
【発明が解決しようとする課題】
近年、運用コストの削減及び命令プロセッサをはじめとする計算機資源の有効利用を目的として、論理区画などの仮想計算機関連技術を用いて１つの物理計算機上に複数のオペレーティングシステムを載せる運用形態が増えている。そして、これらの計算機システムには、社会的に重要かつ大規模なシステムが搭載されるケースも多く、システムダウンによる影響が甚大である。
【００１４】
計算機システムを構成するハードウェアは、多重化により年々可用性を向上させているが、全ての論理区画を制御するハイパバイザについては、ハイパバイザの１つのプログラム不良のために全ゲストＯＳが停止してしまう状況となっており、ハイパバイザが信頼性面でのネックとなっている。このため、前述で説明した従来の技術に示されるような救済方法が提案されている。
【００１５】
しかし、前述した前者の従来の技術は、高々１つのゲストＯＳだけが救済可能なものであるため、その効果が薄いという問題点を有している。また、後者の従来技術は、仮想計算機モニタのダウンに備え、同一のハードウェア構成を持つ物理計算機、仮想計算機モニタ及びゲストＯＳ下のシステムを二重化するものであり、これらを２セット用意しておかなければならず、コスト面、運用面の負担が非常に大きいという問題点を有している。
【００１６】
システムダウン時の業務の引き継ぎを目的としたシステム二重化の代表的な例として、ホットスタンバイシステムが知られている。このシステムは、短時間でＯＳ相互間（計算機間）での業務の引き継ぎを行うことができるシステムであり、ＯＳ、各種サブシステム等を全て起動した状態で待機させておくものである。このシステムは、引き継ぎ（交代）後のスループットを保証するために、待機系システム側にも計算機資源（命令プロセッサ、主記憶装置、入出力チャネル等）を現用系と同数用意しておく必要がある。また、磁気ディスク装置など外部記憶装置も、現用系、待機系両方の計算機からアクセスできるようにしておかなければならない等、大掛かりなものである。
【００１７】
前述のホットスタンバイシステムは、迅速な業務の引き継ぎ（交代）を実現するために、主記憶装置内のＯＳ、各種サブシステムの持つ膨大な制御テーブルも、待機系システム側でスタンバイ状態に準備しておく必要がある。例えば、大規模オンラインシステムの場合、入出力装置が数千台接続される場合もあるが、これらの入出力装置を制御するための制御テーブルを、全て使用可能な状態として作成しておかなければならない。
【００１８】
このようなシステムを低コストで実現するために、論理区画式計算機システムを適用し、論理区画間で計算機資源を共用させる方法もあるが、この方法は、前述のように論理区画間での共通部であるハイパバイザが信頼性面のネックとなってしまい、結局、コストと信頼性とを両立させることができない。
【００１９】
なお、論理区画間での計算機資源共用については、命令プロセッサ、入出力チャネルで共用化が実現されている。この共用化は、現用系から待機系への交代時に論理区画間で資源の割り当て量を迅速に変更可能とするもので、命令プロセッサ、入出力チャネルが、記憶部を持たないためこのような資源の共用を行うことができる。一方、主記憶装置は、ＯＳ及び各種サブシステムの各種制御テーブルが数ギガバイト分格納されることもあり、短時間に制御テーブル間の整合を保ったままＯＳ間でその内容を引き継ぐことができないため、論理区画間の割り当て量変更を前提とした共用を行うことができず、現用系、待機系でそれぞれ同じだけの主記憶容量を持つことが必要となる。
【００２０】
近年、銀行業務を始めとする計算機システムを使用して実現する各種サービスのサービス時間拡大に伴い、計算機システムを何日にもわたり停止させないように稼動させる運用形態も増えており、論理区画式計算機システムのゲストＯＳを停止することなくハイパバイザプログラムを新しいバージョンのものに入れ替えるニーズが高まっている。しかし、従来技術による論理区画式計算機システムは、ハイパバイザプログラムの稼働中の入れ替えについて配慮されていないという問題点を有している。
【００２１】
本発明の目的は、前記論理区画式計算機システムの従来技術の問題点を解決し、論理区画式計算機システムのハイパバイザの障害に対して、安価に、効果的に対応することを可能にしてシステムの可用性を向上させると共に、ゲストＯＳを停止させることなくハイパバイザプログラムを入れ替えることを可能にしてシステムの動作を継続させることのできる論理区画式計算機システムを提供することにある。
【００２２】
【課題を解決するための手段】
本発明によれば前記目的は、１つの物理計算機中に１つ以上の論理区画を設け、論理区画のそれぞれでオペレーティングシステムを稼動させる論理区画式計算機システムにおいて、それぞれが主記憶装置内に設けた同じ論理区画にアクセスでき、論理区画を制御するプログラムであるハイパバイザを１つの物理計算機の中に２つ以上備え、前記２つ以上のハイパバイザ間で論理区画の制御情報及び物理計算機資源を受け渡すことにより、論理区画の制御を行うハイパバイザを、オペレーティングシステムの動作を中断させることなく交代するハイパバイザ交代手段を備え、前記ハイパバイザ交代手段を、ハイパバイザ障害検出時点で動作させるハイパバイザ障害交代指示事段、あるいは、前記ハイパバイザ交代手段を、ハイパバイザ操作コマンドの投入時点で動作させるハイパバイザ交代指示手段の少なくとも一方を備えることにより達成される。
【００２４】
さらに、前記目的は、前記２つ以上のハイパバイザ間で、論理区画の制御に関わるハイパバイザ内の制御テーブルの内容をハイパバイザ間の通信により一致させておくハイパバイザ間状態一致手段を備えることにより、また、前記２つ以上のハイパバイザの同一あるいは異なるプログラムを同一のファイルまたは各々別ファイルより主記憶装置にロードして起動するハイパバイザ起動手段を備えることにより達成される。
【００２５】
【発明の実施の形態】
以下、本発明による論理区画式計算機システムの一実施形態を図面により詳細に説明する。
【００２６】
図１は本発明の一実施形態による論理区画式計算機システムの構成を示すブロック図であり、まず、図１を参照して、本発明によるハイパバイザ二重化構成の論理区画式計算機システムについて説明する。図１において、１、２はハイパバイザ、１１は論理区画、１２はオペレーティングシステム（ゲストＯＳ）、１３は物理命令プロセッサ、１４は論理命令プロセッサ、１５は主記憶装置、１６は入出力チャネル、１７はハイパバイザ障害交代指示手段、１８はハイパバイザ交代指示手段、２０はハイパバイザ領域、３０はハイパバイザインタフェース領域、４０はハイパバイザ起動手段である。
【００２７】
論理区画式計算機システムは、物理計算機の計算機資源である、命令プロセッサ（物理命令プロセッサ）１３、主記憶装置１５、入出力チャネル１６等を分割し、複数の論理区画１１を生成して構成される。それぞれの論理区画は、ゲストＯＳ１２を動作させることができる。論理区画１１は、ゲストＯＳ１２から見るとあたかも独立した１つの物理計算機のように見える。物理命令プロセッサ１３は、ハイパバイザ１が論理区画間の割り当てを動的に制御すること、すなわち、時分割等の方法で論理命令プロセッサ（ゲストＯＳから見える命令プロセッサ）１４にディスパッチすることにより複数の論理区画間で共用することができる。主記憶装置１５は、ハイパバイザが論理区画毎に主記憶装置開始位置とサイズとをハードウェアに通知することにより分割され、ハードウェアにおいて主記憶装置中の論理区画のオフセットを絶対アドレスに加算することにより、論理区画内での論理的なアドレスで動作するゲストＯＳの命令を実行することができる。入出力チャネル１６についても同様にハイパバイザが入出力チャネルと論理区画の対応関係とを設定することにより区画化を実現する。
【００２８】
前述した論理区画式計算機システムの基本構造については、よく知られており、日立製作所が発行しているマニュアル「ＨＩＴＡＣ  プロセッサ資源分割管理機構（ＰＲＭＦ）」（８０８０−２−１４８）にも記述されている。
【００２９】
図２は主記憶装置の中に設けられたハイパバイザ領域の構成を説明する図であり、以下、これについて説明する。
【００３０】
論理区画式計算機システムは、図２に示すように、主記憶装置上に数メガバイトの領域を確保し、ハイパバイザのプログラム２０２及び論理命令プロセッサ制御用のテーブルであるＳＤ(Ｓtate Ｄescription）２０３、論理区画管理テーブル２０４、計算機資源割り当て管理テーブル２０５を常駐させている。そして、ハイパバイザのプログラム及びゲストＯＳのプログラムは、物理命令プロセッサ１３で実行される。
【００３１】
物理命令プロセッサでハイパバイザのプログラムを動作させるモードをホストモード、ゲストＯＳを動作させるモードをゲストモードと呼び、ハイパバイザがホストモードでＳＩＥ(Ｓtart Ｉnterpretive Ｅxecution）命令と呼ぶ命令を実行することによりゲストモードに入る。ＳＩＥ命令は、ゲストＯＳから見える論理的な命令プロセッサ（論理命令プロセッサ）１４を実現するために、命令のオペランドとして、ＳＤ２０３という制御テーブルを指定する。ＳＤ２０３は、主記憶装置中のハイパバイザ領域２０に、論理命令プロセッサ単位に設けられ、論理命令プロセッサ用の各種レジスタ値を保持するものである。ＳＩＥ命令が実行されることにより、ＳＤ２０３の中に格納されている各種レジスタ値が物理命令プロセッサに設定され、ゲストＯＳのプログラムが実行される。そして、論理命令プロセッサが予め定められた時間（タイムスライス値）走行したか、または、割り込み待ち状態でウェイトしたりすると、ハイパバイザは、ゲストモードから抜け、ＳＤ２０３にレジスタ値などを退避した後、ホストモードに制御が戻る。ハイパバイザは、他の論理命令プロセッサに物理命令プロセッサを割り当てるなど、スケジューリング及びディスパッチの処理を実行する。
【００３２】
本発明の実施形態は、１つの物理計算機上に２つのハイパバイザを保持し、一方のハイパバイザ１を現用系、他方のハイパバイザ２を待機系とすることとする。そして、通常の稼働中、現用系であるハイパバイザ１は、全ての論理区画の制御を担い、ハイパバイザ１に障害が発生した場合またはハイパバイザ操作コマンドが投入された場合、論理区画の制御及び物理計算機資源を待機しているハイパバイザ２に引き継ぐ。これにより、本発明の実施形態は、ゲストＯＳを停止させることなく論理区画を制御するハイパバイザを交代させることができる。
【００３３】
障害を契機にハイパバイザを交代させる場合、前提とするハイパバイザの障害は、ハイパバイザのプログラム不良によるハイパバイザの停止、すなわち、全論理区画の全ゲストＯＳがシステム停止に至る障害である。ハイパバイザの障害検出方法としては、実行結果の自己チェックによる自己矛盾の検出、不正な主記憶領域のアクセス等のプログラム割り込みによる例外条件の検出、ウォッチドッグタイマによるタイムアウトのハードウェアによる異常の検出等を使用することができる。
【００３４】
なお、この場合、ハイパバイザ１、ハイパバイザ２のプログラムは同一のものであっても、異なるものであってもよい。同一プログラムの場合、同一の障害に至る可能性もあるが、障害は、制御テーブルの初期化不良、処理順序の誤り、境界値処理不良等、主記憶装置へのデータの格納パターン、動作のタイミングや負荷状態により顕在化するのが通常であり、同じように停止する確率は低い。
【００３５】
図１に示す本発明の実施形態は、本発明を実現するため、ハイパバイザ起動手段４０、ハイパバイザ間状態一致手段７０、ハイパバイザ交代手段１００、ハイパバイザ障害交代指示手段１７、ハイパバイザ交代指示手段１８が設けられる。また、主記憶装置１５上に、新たにハイパバイザ２用の領域及びハイパバイザ１とハイパバイザ２の共用領域であるハイパバイザインタフェース領域３０が設けられる。ハイパバイザ２の処理用として、物理命令プロセッサをハイパバイザ２に１つ割り当てておく。
【００３６】
次に、本発明の実施形態の動作を、ハイパバイザ起動方法、ハイパバイザ間の状態一致方法、ハイパバイザ交代方法、ハイパバイザ交代の起動方法、及び、これらの処理で共通に使用するハイパバイザ間の通信方法の順に説明する。
【００３７】
図３はハイパバイザインタフェース領域３０の詳細を示す図、図４はハイパバイザを２つ起動するためのハイパバイザ起動手段４０をサービスプロセッサ（ＳＶＰ）に設けて、ハイパバイザを起動する方法を説明する図、図５はハイパバイザ起動手段４０の処理動作を説明するフローチャートであり、以下、これらの図を参照してハイパバイザを起動する方法を説明する。
【００３８】
ハイパバイザのプログラムは、図４に示すように、計算機ハードウェアの起動、停止、ＯＳのＩＰＬ操作などを行うサービスプロセッサ内の磁気ディスク装置上に設けたファイルに格納されている。磁気ディスク装置上には、２つのハイパバイザプログラム格納用のファイル（ハイパバイザコードファイル）が設けられ、ハイパバイザコードファイル４１にはハイパバイザ１のプログラムが、ハイパバイザコードファイル４２にはハイパバイザ２のプログラムが、それぞれ格納されている。また、磁気ディスク装置上には、ハイパバイザ構成定義ファイル４３が設けられており、ファイル種別４３１毎の領域にそれぞれのハイパバイザに最初に割り当てる物理命令プロセッサのマップ４３２及びそれぞれのハイパバイザを現用系とするか待機系とするかの実行種別４３３が格納されている。
【００３９】
ＳＶＰは、物理計算機の電源投入、ハードウェアの初期設定を行った後、ハイパバイザインタフェース領域３０の初期設定と、ハイパバイザ起動処理とを実行する。図３にハイパバイザインタフェース領域３０の詳細を示すように、ハイパバイザインタフェース領域３０は、共通部３１、ハイパバイザ１用領域３２、ハイパバイザ２用領域３３、要求ブロック確保用領域３４から構成される。ハイパバイザ起動処理は、ハイパバイザ起動手段４０を使用して、ハイパバイザインタフェース領域３０の初期設定、ハイパバイザ１、ハイパバイザ２の起動を行うものであり、以下、図５に示すフローにより、ハイパバイザの起動処理の動作を説明する。
【００４０】
（１）まず、ハイパバイザ構成定義ファイル４３の内容を読み出す。読み出す内容は、ファイル種別４３１、割り当て物理命令プロセッサマップ４３２、実行種別４３３であり、これらの読み出し内容は、以降のステップで参照される（ステップ５０１）。
【００４１】
（２）次に、起動するハイパバイザを選択する。説明している例では、ハイパバイザ１、２のように、各ハイパバイザに付与された番号の上昇順に選択するものとする。従って、最初に選択されるのは、ハイパバイザ１である（ステップ５０２）。
【００４２】
（３）次に、起動対象のハイパバイザの実行種別４３３を参照し、起動対象のハイパバイザが現用系か否かを判別し、現用系であった場合、ハイパバイザインタフェース領域共通部３１にある現用系ハイパバイザ番号領域３１２にハイパバイザ番号を格納する。ハイパバイザ番号は、ハイパバイザコードファイル１のハイパバイザを現用系とするのであれば１を、ハイパバイザコードファイル２のハイパバイザを現用系とするのであれば２を格納する。説明している例では、１が格納される（ステップ５０３、５０４）。
【００４３】
（４）ステップ５０４の処理後また、ステップ５０３で、起動対象のハイパバイザが現用系でない、すなわち、待機系であった場合、起動対象のハイパバイザについて、ハイパバイザ領域の主記憶装置上の開始アドレス及びサイズを格納する。説明している例では、ハイパバイザ１の領域２０の主記憶装置上の開始アドレス及びサイズが共通部の３１５に格納される。ここで格納した値は、起動されたハイパバイザ側の処理で、自ハイパバイザが、ハイパバイザ１なのか、ハイパバイザ２なのかという判別に使用される（ステップ５０５）。
【００４４】
（５）割り当て物理命令プロセッサマップ４３２の内容をハイパバイザ領域中の割り当て物理命令プロセッサマップ３２２に格納する。割り当て物理命令プロセッサマップは、割り当てる物理命令プロセッサの番号をビットマップ形式で表現したもので、ビット位置左から、物理命令プロセッサ番号０、物理命令プロセッサ番号１を意味する。図４に示す例におけるマップ「１１００００００（２）」の場合、物理命令プロセッサ番号が０番のものと、１番のものをそのハイパバイザに割り当てることを意味する。この割り当て物理命令プロセッサ番号は、起動されたハイパバイザ側の処理で使用すべき物理命令プロセッサを認識するのに使用される（ステップ５０６）。
【００４５】
（６）ハイパバイザ１の領域２０の先頭にあるハイパバイザインタフェース領域先頭アドレス２０１に、ハイパバイザインタフェース領域３０の主記憶装置上のアドレスを格納する。このアドレスは、起動されたハイパバイザ側の処理において、ハイパバイザインタフェース領域のアドレスを取得するのに使用される（ステップ５０７）。
【００４６】
（７）次に、ハイパバイザプログラムを主記憶装置にロードする。ロードとは、ハイパバイザコードファイル４１からハイパバイザプログラムを読み出し、ハイパバイザ領域２０にあるハイパバイザプログラム領域２０２に書き込むことである（ステップ５０８）。
【００４７】
（８）物理命令プロセッサの実行開始アドレスとしてハイパバイザ１のプログラム開始アドレスを設定する。設定するアドレスは、ステップ５０８で主記憶装置にロードしたハイパバイザプログラムの先頭アドレスである（ステップ５０９）。
【００４８】
（９）次に、物理命令プロセッサを起動する。物理命令プロセッサの起動とは、停止状態にある命令プロセッサの実行を開始させることであり、ステップ５０９で設定したアドレスからハイパバイザのプログラムの実行が開始される（ステップ５１０）。
【００４９】
（10）ハイパバイザ構成定義ファイル４３で定義された全てのハイパバイザの起動が終了したか否かを判定し、まだ全てのハイパバイザが起動されていない場合、ステップ５０２に戻って、以降の処理を繰返し実行する。説明している例では、ハイパバイザ２（待機系）が起動される（ステップ５１１）。
【００５０】
なお、待機系ハイパバイザの起動の処理において、ステップ５０４だけは実行されない。起動されたハイパバイザは、ハイパバイザインタフェース領域先頭アドレス２０１を参照し、ハイパバイザインタフェース領域３０にアクセスする。ハイパバイザインタフェース領域３０に格納された現用系ハイパバイザ番号３１２、ハイパバイザ領域開始アドレス、同サイズ３１５及び自プログラムが実行している処理のアドレスから、自ハイパバイザが現用系なのか、待機系なのかを認識する。「現用系」と認識したハイパバイザは、通常の論理区画の制御を行う。また、「待機系」と認識したハイパバイザは、論理区画への計算機資源割り当て設定などハードウェアの状態を変化させる処理は実行しない。また、割り当て物理命令プロセッサマップ３２２を参照し、そのハイパバイザにおいて使用可能な物理命令プロセッサが２つ以上あると認識した場合、その物理命令プロセッサを起動する。以上の処理によりステップで２つのハイパバイザが起動され稼動を開始する。
【００５１】
図６はハイパバイザ間状態一致手段について説明する図、図７はハイパバイザ１側のハイパバイザ間状態一致手段の処理動作を説明するフローチャート、図８はハイパバイザ２側のハイパバイザ間状態一致手段の処理動作を説明するフローチャートであり、以下、これらの図を参照して、ハイパバイザ状態一致方法について説明する。
【００５２】
ハイパバイザのプログラムは、論理区画への計算機資源の割り当て管理を始めとした処理が必要である。これらの処理を実現するために、図６に示すように、ハイパバイザ用主記憶領域に、制御テーブルとして論理区画の状態を保持する論理区画管理テーブル７１及び８１、計算機資源の割り当て状態を管理する計算機資源割り当て管理テーブル７２及び８２を構成する必要がある。また、現用系のハイパバイザの停止時に迅速かつ確実に現用系から待機系へハイパバイザを交代するためには、待機系ハイパバイザの制御テーブルを現用系と同等の状態に保っておき、いつでも交代可能な状態にスタンバイしておく必要がある。このため、ハイパバイザ間の状態一致即ちハイパバイザ内の制御テーブルの状態を一致させておく必要がある。
【００５３】
本発明の実施形態では、論理区画管理テーブル７１と８１の一致、計算機資源割り当て管理テーブル７２と８２の一致が必要である。ハイパバイザ間の状態を一致させるために、システム稼働中、ハイパバイザ間状態一致手段を使用して、ハイパバイザ１が論理区画の状態変化をハイパバイザインタフェース領域を介してハイパバイザ２へ常に通知している。論理区画の状態変化には、論理区画の生成及び消滅、計算機資源（命令プロセッサ、主記憶装置、入出力チャネル等）の論理区画間の割り当て変更、論理命令プロセッサの動作状態変化（動作及び停止）等がある。
【００５４】
次に、図７に示すフローを参照して、送信側となるハイパバイザ１側のハイパバイザ間状態一致手段の処理動作を説明する。この例では、一致させるべき状態の変化として、論理区画の生成処理を例としている。
【００５５】
まず、ステップ７０１で論理区画を生成する処理を実行する。論理区画の生成処理が完了した後、次にステップ７０２で自ハイパバイザが現用系か、待機系かの判定を行い、現用系であった場合、ステップ７０３を実行し、状態変化「論理区画生成」を要求ブロックに格納して、ハイパバイザ２に通知する。要求ブロックを使用したハイパバイザ間のインタフェース方法については後述する。
【００５６】
次に、図８に示すフローを参照して、受信側となるハイパバイザ２側のハイパバイザ間状態一致手段の処理動作を説明する。ハイパバイザ１側からの通知は、要求ブロックに通知内容が格納されている。
【００５７】
ハイパバイザ２側では、まず、ステップ８０１で要求ブロックを取得する。そして、ステップ８０２で要求の内容を判定する。要求内容が、状態変化「論理区画生成」の通知であった場合、ステップ８０３を実行し、自ハイパバイザ内で論理区画を生成するのと同等の処理を行い、ハイパバイザ内の制御テーブルを更新する。但し、論理区画への計算機資源割り当て設定などハードウェアへの設定状態を変化させる処理は実行しない。
【００５８】
図７、図８に示す処理を２つのハイパバイザが実行することにより、ハイパバイザ間の状態を一致させておくことができる。
【００５９】
図９はハイパバイザ交代の概要を説明する図、図１０はハイパバイザ交代の処理動作を説明するフローチャートであり、以下、図９、図１０を参照して、ハイパバイザ交代方法について説明する。
【００６０】
ハイパバイザの交代は、現用系のハイパバイザが正常に動作している初期状態９１から、論理区画の制御情報をハイパバイザ１から待機系のハイパバイザ２ヘ受け渡すステップ９２、物理計算機資源（物理命令プロセッサ）をハイパバイザ１からハイパバイザ２へ受け渡すステップ９３を順に実行することにより行われる。この処理の詳細を図１０により説明する。
【００６１】
（１）まず、ハイパバイザ１側のハイパバイザ交代手段Ａ１００は、現用系ハイパバイザの登録を削除する。現用系ハイパバイザの登録削除は、ハイパバイザインタフェース領域３０にある現用系ハイパバイザ番号３１２に“０”を格納することにより行われる（ステップ１００１）。
【００６２】
（２）ハイパバイザ１は、自ハイパバイザの停止の発生をハイパバイザ２に通知する（ステップ１００２）。
【００６３】
（３）ハイパバイザ２は、ハイパバイザ１からの停止発生通知を受けて、ハイパバイザ交代手段Ｂ１０１の処理を開始し、ハイパバイザ２側を現用系ハイパバイザとするため、ハイパバイザインタフェース領域３０にある現用系ハイパバイザ番号３１２に“２”を格納して処理を終了する。現用系ハイパバイザ番号３１２に自ハイパバイザ番号を格納することで、以降、ハイパバイザ２側にある処理は、論理区画制御のためのハードウェアへの各種設定処理なども実行する「現用系」として動作する（ステップ１０１１）。
【００６４】
（４）ハイパバイザ１は、ステップ１００２の処理後、全論理区画動作停止を実行する。この処理は、ハイパバイザ１側にある物理命令プロセッサ割り当て中の論理区画をゲストモードから強制的に抜けさせるものである。このような処理が必要な理由は、同一ハイパバイザ内で停止を検出した物理命令プロセッサ以外の物理命令プロセッサが、ゲストモードにある状態がありうるためである。この場合、論理命令プロセッサへの物理命令プロセッサの割り当てを速やかに停止し、ハイパバイザに制御を戻し、交代処理に入る必要がある。論理区画への物理命令プロセッサの割り当てを停止し、物理命令プロセッサをハイパバイザに戻す処理は、ゲストモードで動作している命令プロセッサに対して、障害を検出した命令プロセッサが、ＳＩＧＰ（Ｓignal Ｐrocessor）命令の「外部要求」を発行することにより、外部割り込みを発生させ、ハイパバイザに制御を戻ことにより行われる。ハイパバイザの外部割り込みの処理は、現用系ハイパバイザ番号３１２と自ハイパバイザ番号が一致しているか否かをチェックし、一致していない場合、論理区画への物理命令プロセッサの割り当てを停止して交代処理に入る処理である（ステップ１００３）。
【００６５】
（５）ハイパバイザ１は、論理区画制御情報渡しを実行する。これは、ハイパバイザ２側でゲストＯＳの動作を継続実行させるため、論理区画に関する制御情報をハイパバイザ２側に転送するものである。論理区画上のゲストＯＳの動作を継続させるために、ハイパバイザ１側で制御していた論理区画の論理命令プロセッサの実行状態を引き継ぐ必要がある。論理命令プロセッサの実行状態は、ＳＤ２０３に保持されているため、ＳＤ２０３の情報を渡せば良い。ハイパバイザ１側で障害を検出した物理命令プロセッサが、全ての論理区画のＳＤの情報をハイパバイザ２側に渡す。論理区画のＳＤの情報を渡すため、ハイパバイザ１は、「論理区画制御情報受け渡し」の要求をハイパバイザ２に対して発行する（ステップ１００４）。
【００６６】
（６）ハイパバイザ２は、ハイパバイザ交代手段Ｃ１０２を実行し、ハイパバイザ１からＳＤの情報を受け取り、受け取ったＳＤを使用してＳＤが保持するハイパバイザ１での中断点からハイパバイザ２側で論理区画の実行を開始する。論理区画の実行開始とは、そのＳＤを使用して論理区画の論理命令プロセッサへの物理命令プロセッサの割り当て（ディスパッチ）を開始し、ゲストＯＳの動作を開始させることである。論理区画及び論理命令プロセッサが複数個ある場合、ステップ１００４、ステップ１０２１、ステップ１０２２の処理を繰り返し実行し、次々とＳＤの情報を受け渡し、論理区画の実行をハイパバイザ１からハイパバイザ２側に移していく。以上のステップの実行により、「論理区画（ゲストＯＳ）実行」のハイパバイザ間の引き継ぎが完了する。ハイパバイザ間で受け渡す論理区画の制御情報は、高々、数キロ〜数１０キロバイトであり、引き継ぎが完了するまでに要する時間は、数ミリ秒である。ゲストＯＳから見て、この程度の動作の中断は、何ら影響を及ぼさない（ステップ１０２１、１０２２）。
【００６７】
（７）ハイパバイザ１は、ステップ１００４の処理での論理区画制御情報渡しの終了後、物理命令プロセッサの受け渡しを実行する。すなわち、ハイパバイザ１は、ハイパバイザ１で使用していた物理命令プロセッサを１つだけ残して、他の物理命令プロセッサの全てをハイパバイザ２側に渡す。渡す際、ハイパバイザインタフェース領域にある割り当て物理命令プロセッサマップ３２２の該当するビットを“０”にすると共に、未割り当て物理命令プロセッサマップ３１３の該当するビットを“１”にする。そして、ハイパバイザ２側に「物理命令プロセッサ受け渡し」を通知した後、当該物理命令プロセッサをウェイト状態とする（ステップ１００５）。
【００６８】
（８）ハイパバイザ２は、「物理命令プロセッサ受け渡し」の通知を受け取ったとき、ハイパバイザ交代手段Ｄ１０３を実行し、物理命令プロセッサを受け取る。物理命令プロセッサの受け取りに際し、未割り当て物理命令プロセッサマップ３１３を参照し、ビットが“１”に該当するものを求める（ステップ１０３１）。
【００６９】
（９）ステップ１０３１の処理で、受け取る物理命令プロセッサが求められたら、ハイパバイザ２は、物理命令プロセッサの使用を開始する。この処理は、対象となる物理命令プロセッサに対してＳＩＧＰ命令の「イニシャルＣＰＵリセット」及び「リスタート」を実行することにより実現する。「イニシャルＣＰＵリセット」は、命令プロセッサ毎に保持しているレジスタ類を初期化するものである。「イニシャルＣＰＵリセット」が終了した後に、「リスタート」を実行することにより、対象物理命令プロセッサにリスタート割り込みが報告され、リスタート割り込み処理が実行される。リスタート割り込み処理は、物理命令プロセッサ対応に設定が必要なレジスタ類の初期設定を行った後、ハイパバイザ２に構成されている物理命令プロセッサとして論理区画への割り当てに使用される（ステップ１０３２）。
【００７０】
（10）ハイパバイザ１は、ステップ１００５の処理で、自ハイパバイザ１の割り当て物理命令プロセッサが１台になるまで、物理命令プロセッサのハイパバイザ２への受け渡しの処理を実行する。そして、ハイパバイザ１側に１つだけ残した物理命令プロセッサは、待機系のハイパバイザとして動作するようにリスタートを実行する。リスタートは、ハイパバイザプログラムを再起動させることであり、図５により説明したステップ５０７からステップ５１０を実行することにより行われる。これらのステップの処理は、サービスプロセッサに対して実行要求を出すことで動作させる。起動されたハイパバイザ１プログラムは、初期設定処理が完了した後、ハイパバイザ２から論理区画の状態及び計算機資源の割り当て状態を取得し、自ハイパバイザ領域内の制御テーブルを設定する。論理区画の状態及び計算機資源の割り当て状態は、ハイパバイザ１がハイパバイザ２に対して「状態一括取得」の要求を発行して取得する。現用系となったハイパバイザ２は、「状態一括取得」を受けた場合、論理区画の状態及び計算機資源の割り当て情報をハイパバイザ１に応答する（ステップ１００６）。
【００７１】
前述で説明した処理を行うハイパバイザ交代手段は、ハイパバイザ障害交代指示手段１７及びハイパバイザ交代指示手段１８から起動される。ハイパバイザ障害交代指示手段１７は、ハイパバイザの停止障害を検出した時点で、システムを停止させることなくハイパバイザ交代手段１００を起動する。また、ハイパバイザ交代指示手段１８は、ハイパバイザ交代用のコマンドと、そのコマンドが投入されたときにハイパバイザ交代手段１００を起動する手段とからなる。ここでいう起動とは、ハイパバイザ交代手段の処理に分岐するだけであり、ハイパバイザ交代手段の処理に分岐することにより、前述したステップの処理によるハイパバイザの交代の処理が動作する。
【００７２】
次に、ハイパバイザ間の情報の受け渡し方法について説明する。ハイパバイザ間での情報の受け渡しは、すでに説明したハイパバイザ間状態一致手段７０及び８０での処理、ハイパバイザ交代手段１００〜１０３の処理で使用される。
【００７３】
図３に示すように、本発明の実施形態は、ハイパバイザ間の情報受け渡しのために、主記憶装置中に現用系、待機系それぞれのハイパバイザ間でアクセスするハイパバイザインタフェース領域３０が設けられており、このハイパバイザインタフェース領域３０を介して情報の受け渡しが行われる。ハイパバイザ間の情報受け渡しは、物理命令プロセッサ間の情報の受け渡しと等価であり、密結合マルチプロセッサ（ＴＣＭＰ）で一般的に用いられている命令プロセッサ間通信の手法を使用する。この通信に際し、命令プロセッサ間でアクセスする共用領域（説明している実施形態の場合、ハイパバイザインタフェース領域である）の排他制御が必要となる。
【００７４】
排他制御の具体的手順は、まず、ＴＳ（Ｔest and Ｓet）命令、ＣＳ（Ｃompare and Ｓwap）命令等のインタロック機能付きの命令を使用して、命令プロセッサ間で有効となるロックをロックワード領域３１１に確保し、ロックを確保した後、共用領域をアクセスし、その後、ロックを解放するという手順である。もし、ロックがすでに他の命令プロセッサにより確保されていた場合、ロックが解放されるまでループして待ち続ける。ここで言うロック確保とは、主記憶装置の特定の領域に“１”を格納した状態であり、ロック解放とはその領域を“０”クリアすることである。
【００７５】
図１１はハイパバイザ間の情報の受け渡しを行うためのハイパバイザ間通信の送信側の処理動作を説明するフローチャート、図１２はハイパバイザ間の情報の受け渡しを行うためのハイパバイザ間通信の受信側の処理動作を説明するフローチャート、図１３はハイパバイザ間通信に使用する要求ブロックの形式を説明する図、図１４はハイパバイザ間通信に使用する要求ブロックに格納される情報の内容を説明する図である。以下、これらの図を参照して、ハイパバイザ間通信の具体的な方法について説明する。
【００７６】
まず、図１１に示すフローにより送信側の処理動作を説明する。
【００７７】
（１）まず、ロックを確保し、ロックが確保できたら、空き要求ブロックキュー先頭アドレス３１４からキュー先頭の空き要求ブロックのアドレスを取り出し、その空き要求ブロックを１つデキューして要求ブロックを１つ確保する（ステップ１１１、１１２）。
【００７８】
（２）次に、送信したい要求に従って要求ブロックの内容を設定する。要求ブロックの内容として、要求種別コード１４３、要求内容１４４を設定する（ステップ１１３）。
【００７９】
（３）要求ブロックに内容を設定した後、その要求ブロックを送信相手先ハイパバイザの要求ブロックキュー３２１にキューイングする。キューイングとは、要求ブロックキューの終端に要求ブロックを接続することであり、図１４に格納内容１４１として示すように、要求ブロックキュー終端にすでにある要求ブロックの次要求ブロックアドレスに、対象となる要求ブロックアドレスを設定することである（ステップ１１４）。
【００８０】
（４）次に、ＳＩＧＰ命令を使用して、「外部要求」を指示し、相手先物理命令プロセッサに対して要求がある旨を通知し、その後にロックを解放する。ＳＩＧＰ命令の「外部要求」の発行によって、相手先命令プロセッサに対してＳＩＧＰ命令「外部要求」が要因となる外部割り込みが報告され、相手先物理命令プロセッサは、要求が共用領域に格納された契機を知ることができる（ステップ１１５）。
【００８１】
（５）ステップ１１５の処理終了後、ロックを解放して送信側としての処理を終了する（ステップ１１６）。
【００８２】
次に、図１２に示すフローにより相手先命令プロセッサの外部割り込み処理での受信の処理動作を説明する。
【００８３】
（１）まず、ステップ１２１でロックを確保し、次に、ハイパバイザインタフェース領域にある自ハイパバイザ用の要求キュー３３１を参照して、要求があれば先頭から要求ブロックを１つデキューして取り出す（ステップ１２１、１２２）。
【００８４】
（２）要求ブロックのデキューの後ロックを解放し、要求ブロックに格納された要求に応じた処理を実行する。この処理の実行の終了後、再度ロックを確保し、要求ブロックを再利用可能とするため、空き要求ブロックキューに使用済みの要求ブロックを戻す。なお、空き要求ブロックは、要求ブロック確保領域３４から固定サイズで確保し、空き要求ブロックキュー先頭アドレスを先頭とするキュー構造でプールしておくものである（ステップ１２３〜１２６）。
【００８５】
（３）ステップ１２６の処理終了後、ロックを解放して受信側としての処理を終了する（ステップ１２７）。
【００８６】
なお、前述した本発明の実施形態の説明における計算機の各種命令及び割り込みは、汎用計算機と呼ばれる計算機で一般的なものであり、その、仕様の詳細は、例えば、日立製作所発行のマニュアル「ＨＩＴＡＣ  Ｍシリーズ処理装置」（８０８０−２−１４６）等に記載されている。
【００８７】
前述した本発明の実施形態によれば、ハイパバイザの停止障害時にも論理区画で稼動している全てのゲストＯＳの運転を継続実行することができるので、システムの可用性を大幅に向上することができる。また、ハイパバイザの停止障害について、二重化によるホットスタンバイ構成により備える従来のシステムの場合、物理計算機が最低２台分必要であったが、前述した本発明の実施形態によれば、物理計算機１台を使用するだけで、同等のシステムを実現することができる。さらに、前述した本発明の実施形態によれば、ハイパバイザのプログラムの入れ替えを、ゲストＯＳの運転を継続したまま実施することができる。
【００８８】
前述した本発明の実施形態は、本発明を論理区画式計算機システムに適用したとして説明したが、本発明は、従来技術のなかで説明した仮想計算機システムに対して適用することができない。以下、その理由を説明しておく。
【００８９】
仮想計算機システムは、仮想計算機の状態及び制御状態を管理するためのテーブル類をＶＭＣＰ内に多量に存在し、これらの多種・多様なテーブル類が複雑にチェインされている。また、ゲストＯＳ用の主記憶内容の一部をＶＭＣＰ内の主記憶領域に持つ。本発明を仮想計算機システムに適用しようとすると、現用側、待機側のＶＭＣＰ間で、前述したようなテーブル類を、瞬時に引き継ぐ、または、状態を合わせなければならないことになる。
【００９０】
テーブル類の引き継ぎは、テーブル自体がＶＭＣＰの処理不良により破壊されている場合、行うことができない。また、テーブルの状態を常時合わせておくことは、ゲストＯＳ用の主記憶内容までも待機側に保持させおくかなければ実現することができず、現用側の入出力制御に介入する必要が生じ、性能劣化、現用側の処理不良に引きずられる可能性が大となる。
【００９１】
要するに、仮想計算機システムでは、現用、待機間で状態を合わせることが、量的、性能的な問題でできないために、本発明を実施することができない。
【００９２】
【発明の効果】
以上説明したように本発明によれば、論理区画式計算機システムのハイパバイザの障害に対して、安価、効果的に全ゲストＯＳの動作を継続可能としてシステムの可用性を向上させことができ、かつ、ゲストＯＳを停止させることなくハイパバイザプログラムを入れ替えることができる。これにより、本発明は、可用性の高い論理区画式計算機システムを提供することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態による論理区画式計算機システムの構成を示すブロック図である。
【図２】主記憶装置の中に設けられたハイパバイザ領域の構成を説明する図である。
【図３】ハイパバイザインタフェース領域の詳細を示す図である。
【図４】ハイパバイザを２つ起動するためのハイパバイザ起動手段をサービスプロセッサ（ＳＶＰ）に設けて、ハイパバイザを起動する方法を説明する図である。
【図５】ハイパバイザ起動手段の処理動作を説明するフローチャートである。
【図６】ハイパバイザ間状態一致手段について説明する図である。
【図７】ハイパバイザ１側のハイパバイザ間状態一致手段の処理動作を説明するフローチャートである。
【図８】ハイパバイザ２側のハイパバイザ間状態一致手段の処理動作を説明するフローチャートである。
【図９】ハイパバイザ交代の概要を説明する図である。
【図１０】ハイパバイザ交代の処理動作を説明するフローチャートである。
【図１１】ハイパバイザ間の情報の受け渡しを行うためのハイパバイザ間通信の送信側の処理動作を説明するフローチャートである。
【図１２】ハイパバイザ間の情報の受け渡しを行うためのハイパバイザ間通信の受信側の処理動作を説明するフローチャートである。
【図１３】ハイパバイザ間通信に使用する要求ブロックの形式を説明する図である。
【図１４】ハイパバイザ間通信に使用する要求ブロックに格納される情報の内容を説明する図である。
【符号の説明】
１、２  ハイパバイザ
１１  論理区画
１２  オペレーティングシステム（ゲストＯＳ）
１３  物理命令プロセッサ
１４  論理命令プロセッサ
１５  主記憶装置
１６  入出力チャネル
１７  ハイパバイザ障害交代指示手段
１８  ハイパバイザ交代指示手段
２０  ハイパバイザ領域
３０  ハイパバイザインタフェース領域
４０  ハイパバイザ起動手段
【図１】
0003655484.tif 000002
【図２】
0003655484.tif 000003
【図３】
0003655484.tif 000004
【図４】
0003655484.tif 000005
【図５】
0003655484.tif 000006
【図６】
0003655484.tif 000007
【図７】
0003655484.tif 000008
【図８】
0003655484.tif 000009
【図９】
0003655484.tif 000010
【図１０】
0003655484.tif 000011
【図１１】
0003655484.tif 000012
【図１２】
0003655484.tif 000013
【図１３】
0003655484.tif 000014
【図１４】
0003655484.tif 000015