説明

計算機システムでの部分障害処理方法

【課題】 論理分割可能な計算機では、ハードウェア障害が発生しても、障害の影響を受けないLPARは実行を継続可能な場合がある。この場合、ハードウェア保守で計算機全体を停止しなければならない時に、継続稼働しているLPARを停止してよいのか容易に判断できない。
【解決手段】 計算機で発生したハードウェア障害について、ハイパバイザが、実行継続可能なLPARに実行継続可能なハードウェア障害として障害発生を通知し、それを受けたLPARが障害対応処理を実行したことをハイパバイザに通知し、その通知状況を取得するためのインタフェイスをハイパバイザが提供する。このインタフェイスを通じて、LPARごとの実行継続可能なハードウェア障害への対応状況を登録・取得可能とし、計算機全体での対応状況を判定可能とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、論理分割で複数のLPARが実行している計算機システムでの、部分的な障害の処理方法に関する。
【背景技術】
【0002】
計算機を有効に利用する方法として、仮想化や論理分割がある。これらの技術によれば、一台の物理計算機上に仮想的な計算機を構成できるため、物理計算機の能力を有効に活用できる。計算機性能の向上に伴い、安価な計算機においても仮想化や論理分割が利用可能となり、広く用いられている。
【0003】
計算機は、さまざまなハードウェア障害検出機構を有する。計算機は、その各コンポーネントの異常を検知し、割り込みによってOSやハイパバイザといったソフトウェアに障害を通知する。障害を通知する割り込みは、一般にマシンチェック割り込みと呼ばれる。OSやハイパバイザは、マシンチェックで通知された障害の内容に応じて計算機全体を停止する、あるいは、発生した障害に関係する部分のみを停止できる。
【0004】
論理分割をサポートする計算機は、発生したハードウェア障害の影響を受けるLPARにだけマシンチェックを通知し、マシンチェックを通知されたそのLPARのみ実行を、停止できる。障害を起こしたコンポーネントを利用していないLPARは、継続して実行できる。例えば、特許文献1では、計算機の入出力装置に発生した障害について、実行時に当該の障害に関係するLPARを特定し、そのLPARにのみマシンチェックを送信する方法を開示している。仮想化においても、原理的には、同様の障害処理が可能である。
【0005】
データの消失や処理の中断が許容されない計算機システムを構成する技術として、クラスタ技術がある。クラスタに構成されたシステムでは、計算機が障害で停止してしまうことに備えて、予備の計算機を配備する。データ処理を実行する計算機(主系)と予備の計算機(従系)とが相互に稼働状態を監視し、主系のデータ処理が停止した場合に、従系がこのデータ処理を引き継ぐ。この引継ぎ処理を、フェイルオーバーと呼ぶ。これらの制御は、一般には、主系と従系で実行するクラスタ管理ソフトウェアと呼ばれるソフトウェアが実行する。
【0006】
論理分割でのハードウェア障害処理とクラスタ構成を組み合わせることで、高信頼なシステムを構成できる。この場合、ハードウェア障害に関係するLPARで実行するクラスタ管理ソフトウェアは、フェイルオーバーを実行して、そのLPARで実行していたデータ処理を他の計算機で待機している従系のLPARに継続させる。一方、障害の影響を受けないLPARは、そのまま継続してデータ処理を実行することとなる。このような技術は、特許文献2に開示されている。
【0007】
障害を発生したハードウェアは、いずれ交換が必要である。一般的には、クラスタを構成している場合、故障したハードウェアを搭載している計算機で主系として実行しているアプリケーション、仮想計算機及びLPARを、クラスタ内の従系に構成された計算機へ手動でフェイルオーバーした後、主系の仮想計算機あるいはLPARを実行していた計算機の計算機を停止し、ハードウェアを交換する。保守を実施する作業員は、前と同じ計算機が停止可能か、何らかのデータ処理が実行していないかを何らかの手段で判定し、前と同じ計算機を停止する作業を実施することになる。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2004-342109号公報
【特許文献2】特開2008-140198号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
論理分割を利用している場合、ハードウェア障害時に、その影響を受けるLPARのみを停止し、他のLPARの実行を継続できる。一方で、故障した部品を交換する際に計算機全体を停止しなければならない場合、実行を継続しているLPARを停止してよいのか、その作業時に判断しなければならないという課題がある。一般には、LPARごとに無関係の業務が実行しているため、業務の停止の可否の判断は容易ではない。また、停止してよいとしても、作業員が手動で操作しなければならず、操作ミスの可能性が発生する問題がある。
【0010】
クラスタ構成の場合も同様の問題が発生する。論理分割を利用していない場合のクラスタ構成では、物理計算機の運転モードは主系か従系の何れかであり、目視により簡単に把握させることができた。これにより、保守を実施する作業員は、容易に当該計算機の運転状態を把握することができ、安全に当該計算機を停止することができた。
【0011】
一方、論理分割を採用し、LPARごとにクラスタを構成すると、ハードウェア障害時にLPARごとにフェイルオーバーが実行し、一台の物理計算機内に主系と従系のLPARが混在することとなる。このため、物理計算機の実行状態の把握には、複数のLPARの状態を参照しなければならないため、確認作業が複雑になる問題がある。
【0012】
また、作業員が、保守作業開始までに主系となっているLPARをフェイルオーバーさせる必要がある。複数のLPARの状態の参照や、データ処理を実行している主系のLPARに対する手動の操作が必要となるため、これを実行する操作員には、判断や操作を正しく行うよう常に細心の注意を払わなければならないという大変さがある。
【課題を解決するための手段】
【0013】
上記課題を解決するために、本発明は、クラスタを構成する物理計算機上に、ハイパバイザの制御により複数のLPARが生成された仮想計算機システムに関し、以下のハードウェア障害処理を行うものである。即ち、第一の物理計算機でハードウェア障害が発生すると、第一の物理計算機が有する第一のハイパバイザは、第一の物理計算機上に生成されたLPARについて実行の継続可能なLPARの有無を判定する。実行の継続が可能でないLPARがある場合、第一のハイパザイザは、実行の継続が可能でない第一のLPARを停止し、第一のLPARとクラスタを構成する第二の物理計算機上に生成された第二のLPARが有するクラスタ制御部は、第一のLPARの業務を第二のLPARへフェイルオーバーする第一のフェイルオーバーをする。実行の継続が可能なLPARがある場合、実行の継続が可能な第三のLPARとクラスタを構成する第二の物理計算機上に生成された第四のLPARが有するクラスタ制御部は、第三のLPARの業務を第四のLPARへフェイルオーバーする第二のフェイルオーバーを行う。
【0014】
なお、第三のLPARが有するクラスタ制御部は、第二のフェイルオーバーが完了すると、第一のハイパバイザが有する障害通知情報に対し、第二のフェイルオーバー後における第三のLPARの停止の可否を、可に設定してもよい。
【0015】
また、ハイパバイザの制御により複数のLPARが生成され、クラスタを構成する物理計算機において、ハイパバイザは、障害通知情報を有し、障害通知情報は、LPARの実行に影響しないハードウェア障害について、LPAR毎の障害通知の要求有無及びフェイルオーバー後におけるLPARの停止の可否を管理する。ハードウェア障害が発生すると、ハイパバイザは、障害通知情報を参照し、ハードウェア障害通知の要求があるLPARに対して、障害通知を送信し、複数のLPARについて実行の継続可能なLPARの有無を判定する。実行の継続が可能でないLPARがある場合、ハイパザイザは、実行の継続が可能でないLPAR1を停止し、LPAR1は、クラスタを構成するLPARへフェイルオーバーされる。実行の継続が可能なLPARがある場合、実行の継続が可能なLPAR2は、クラスタを構成するLPARへフェイルオーバーされる。障害通知を受信したLPARが有するクラスタ制御部は、LPARのフェイルオーバーが完了すると、障害通知情報におけるフェイルオーバー後におけるLPARの停止の可否を、可に設定する。
【発明の効果】
【0016】
本発明によれば、フェイルオーバー後におけるLPARの停止の可否が障害通知情報に記録されるので、部分的なハードウェア障害発生後の保守時に、計算機が保守作業を実施可能な状態にあるかを、作業員が容易に判断可能となる。
【0017】
また、実行継続可能なハードウェア障害の通知を受けたLPARがそれに応じた障害対応処理を実行したことを通知するためのインタフェイスをハイパバイザが提供し、LPARの障害対応処理の通知状況をハイパバイザが保持し、その通知状況を取得するためのインタフェイスをハイパバイザが提供するので、これらのインタフェイスを通じて、LPARごとの実行継続可能なハードウェア障害への対応状況を登録・取得可能とし、計算機全体での対応状況を判定可能とする。
【図面の簡単な説明】
【0018】
【図1】本発明の実施の形態での計算機の構成を示す図である。
【図2】本発明の実施の形態での計算機の構成を示す図である。
【図3】本発明の実施の形態での計算機システムの構成を示す図である。
【図4】本発明の実施の形態でのハイパバイザとクラスタ制御部の保持するデータの構造を示す図である。
【図5】本発明の実施の形態でのハイパバイザとOSのハードウェア障害処理手順を示すフローチャートである。
【図6】本発明の実施の形態でのクラスタ管理ミドル内のフェイルオーバー要求の監視手順を示すフローチャートである。
【図7】本発明の実施の形態でのデータ処理プログラムの処理手順を示すフローチャートである。
【図8】本発明の実施の形態でのクラスタ制御部のフェイルオーバー処理手順を示すフローチャートである。
【図9】本発明の実施の形態でのシステム構成を示す図である。
【図10】本発明の実施の形態でのシステム管理画面を示す図である。
【図11】フェイルオーバー要求テーブルの構造を示す図である。
【図12】障害通知テーブルの状態を示す図である。
【発明を実施するための形態】
【0019】
<実施例1>
本発明を適用した計算機システムについて、図面により説明する。
【0020】
図3は、本発明の実施の形態の計算機システムの構成を示す図である。計算機100と計算機200で実行するLPAR210と310、260と360がクラスタを構成している。計算機100は計算機A、計算機200は計算機Bとして区別されているとする。計算機100内では、LPAR210はLPAR名がLPAR1、260がLPAR名がLPAR2として区別されるとする。計算機200内でもLPAR310がLPAR3、LPAR360がLPAR4と名前付けされているとする。また、LPAR210とLPAR260がクラスタの主系で、LPAR310と360がクラスタの従系であるとする。
【0021】
計算機100では、ハイパバイザ250(図3には記載していない)によってLPAR210と260が構成され実行している。ハイパバイザ250は、計算機100内のCPUで実行するソフトウェアか、計算機100内のハードウェアとして実現される。図3では、ハイパバイザ250が、LPAR210に論理的なNIC392と393、LPAR260にNIC394と395を割り当てていることを示している。他のLPARも同様に論理的なNICを割り当てられている。
【0022】
クラスタを構成するLPAR210とLPAR310を例に、ソフトウェア構成を説明する。LPAR210では、OS230、クラスタ制御部220、データ処理プログラム211が実行している。LPAR310も同様である。LPAR210のクラスタ制御部220とLPAR310のクラスタ制御部320は、ネットワーク390を介して相互に稼働状況を監視している。クラスタ制御部220と320の制御下で、主系として実行しているLPARでデータ処理プログラムが実行する。例えば、LPAR210が主系であれば、データ処理プログラム211が実際的な処理を実行する。
【0023】
LPAR210が障害により実行を停止した場合は、LPAR310のクラスタ制御部320がLPAR210の異常を検知し、フェイルオーバー処理を実行して、データ処理プログラム311の実行を開始する(以降、LPAR210は従系となる)。データ処理プログラム211と311は、ネットワーク391を経由して処理要求と結果を送受信する。
【0024】
ここでデータ処理プログラムの実行を開始するとして説明したが、クラスタの構成によっては、従系でもデータ処理が実行しているが、実際的な出力を実施していない場合もある。この場合、クラスタ制御部は、フェイルオーバーでは、データ処理プログラム311が実際的な出力を開始するように制御する。
【0025】
LPAR260とLPAR360も同様なクラスタを構成しているとする。また、図3には記載していないが、主記憶装置、CPU、データ処理プログラムの実行に必要な記憶装置などの資源も論理的分割され、各LPARに割り当てられているものとする。
【0026】
図1は、本発明の実施でのクラスタを構成する計算機100の構造を示している。計算機100の構成として示すが、他の計算機も同様の構成である。計算機100は、CPU101ないし104、主記憶装置120、I/Oバス管理装置130が、バス110を介して接続している。I/Oバス管理装置130が接続するI/Oバス140には、ディスプレイやキーボードなどの入出力装置150、外部記憶装置に接続するためのHBA(Host Bus Adapter)161ないし163、ネットワークに接続するためのNIC(Network Interface Adapter)171ないし173が接続している。この例では、それぞれ3個ずつのアダプタを掲載したが3個に限定するものではなく、システムを構成するのに必要な個数だけアダプタは搭載される。
【0027】
CPU101ないし104は、主記憶装置120にプログラムを読み込み、主記憶装置120に読み込まれたプログラムを実行して、様々の処理を実行する。以降の説明では、これをプログラムや処理が実行すると記載する。
【0028】
計算機100内の各コンポーネントは、異常検知の機能を有しているとする。例えば、CPU101ないし104は、内部キャッシュの一部の故障、内部のコアの故障、内部のレジスタの故障などを検知できるとする。CPU101ないしCPU104は、このような内部の障害を検知するとマシンチェック割り込みを生成して、ソフトウェアに異常を通報する。
【0029】
主記憶装置120、I/Oバス管理装置130、HBA161ないしHBA163、NIC171ないし173も、同様の機能を有しているとする。主記憶装置120の障害の場合、主記憶装置120を管理する装置を経由して、CPU101ないし104の何れか、あるいは、すべてにマシンチェック割り込みを送信する。HBA161ないし163、NIC171ないし173が異常を検知した場合、I/Oバス管理装置130がマシンチェック割り込みを送信する。
【0030】
図2は、本発明の実施の形態の、計算機内のソフトウェアの構成を示す図である。計算機100を例に説明する。計算機100は、ハイパバイザ250を実行している。ハイパバイザ250は、計算機100の資源を論理的に分割し、LPAR210とLPAR260を実行している。分割される資源は、CPU101ないし104、主記憶装置120、HBA161ないし163、NIC171ないし173である。それぞれのLPAR210と260は、ハイパバイザ250が提供する資源を利用して実行している。ハイパバイザ250は、計算機100を構成するコンポーネントからのマシンチェック割り込みを処理するマシンチェック割り込み処理部251、障害通知テーブル252を有している。
【0031】
障害通知テーブル252の構成を図4に示す。テーブル252は、ハイパバイザ250の上で実行する各LPARについて、LPAR番号401、当該LPARに影響しないハードウェア障害の通知を要求しているかを示すフラグ(障害通知要否フラグ402)、過去のハードウェア障害の有無(障害通知フラグ403)、ハードウェア障害の通知後に当該LPARで障害に対応する処理が実行されて、当該LPARを停止してよい状態となっているかを示すフラグ(停止可否フラグ404)を保持する。
【0032】
ハイパバイザ250は、障害通知要否フラグ402、停止可否フラグ404を設定するインタフェイスを、OS230から利用可能なようにLPAR210に提供する。ハイパバイザ250は、LPAR開始時にテーブル252の当該LPAR用のエントリを割り当て、障害通知要否フラグ402に否、障害通知フラグに否、停止可否フラグに否を示す値を設定する。この時のテーブル内容を図4の410に示す。
【0033】
LPAR内の構成について、LPAR210を例に説明する。LPAR210では、OS230が実行している。OS230には、ハイパバイザが送信した論理的なマシンチェック割り込みを処理するマシンチェック割り込み処理部231がある。OS230は、マシンチェック割り込みが発生したことを、OS230で実行するプログラムに通知するインタフェイスを有する。プログラムは、そのインタフェイスを介して、マシンチェック割り込み発生の通知を受信できるものとする。
【0034】
LPAR210は、LPAR310とクラスタを構成している。LPAR210は、OS230を実行している。OS230上では、クラスタ制御部220が実行している。クラスタ制御部220は、主系と従系の間の相互監視や、フェイルオーバー処理を実行する。クラスタ制御部220は、OS230からハードウェア障害が発生している旨の通知を受け付ける障害通知受付部222、フェイルオーバー要求を管理するフェイルオーバー要求テーブル223、フェイルオーバー処理を実施するフェイルオーバー処理部224、フェイルオーバー処理をスケジュールする要求監視部225、クラスタで実行するデータ処理プログラム211にクラスタ状態等の情報提供や、フェイルオーバー操作インタフェイスを提供するクラスタ制御インタフェイス221を有している。
【0035】
クラスタ制御部220は、クラスタ構成を開始する際に、ハイパバイザ250が提供するインタフェイスを通じて、当該LPARにハードウェア障害を通知するように、障害通知要否フラグ402を「要」に、停止可否フラグ404を「否」に設定する。LPAR260のクラスタ制御部270も実行している時点の障害通知テーブル252の状態を図4の420に示す。
【0036】
従系となるLPAR310のクラスタ制御部320は、停止可否フラグ404を「可」に設定する。停止可否フラグの設定は、データ処理プログラムを実行している主系の側は停止させてはいけないが、従系の側は停止してもよいことを示す設定である。LPAR360のクラスタ制御部370も実行している時点の障害通知テーブル252の状態を図4の430に示す。ここでは、LPAR3とLPAR4が従系となっている様子を示している。
【0037】
クラスタ制御部220と320は、その制御下で実行するLPARの運転モードが従系から主系に遷移する際には、障害通知テーブル252の停止可否フラグ404を「可」から「否」に、逆の遷移をする場合には「否」から「可」に設定する。
【0038】
クラスタ制御部220のフェイルオーバー要求テーブル223の構造を図11に示す。テーブル223は、フェイルオーバー実施の要求を受けているか(要求フラグ1110)、未処理のフェイルオーバー要求があるか(未完要求フラグ1111)を示す値を保持している。クラスタ制御インタフェイス221を通じて、データ処理プログラム211や他のプログラムは、これらのフラグを設定可能である。また、フェイルオーバー処理部224、要求監視部225もこれらのフラグを操作する。
【0039】
データ処理プログラム211は、クラスタ上で実行するアプリケーションである。LPAR210が主系である時に障害で実行を停止すると、このプログラム211の処理が計算機200のLPAR310で引き継がれる。この際、処理を引き継いだLPAR310が主系となるように、クラスタ制御部320が制御を行う。
【0040】
もう一方のLPAR260も同様の構成である(図は省略)。データ処理プログラム261は、LPAR210で実行するプログラム211とは、独立に実行するプログラムであってよい。また、計算機200のLPAR310と360の構成も同様である。
【0041】
図3のシステムで、計算機100にハードウェア障害が発生したものとして、本実施の形態でのハードウェア障害処理方法を説明する。ここでは、計算機100で実行するLPAR210と260が主系、計算機200で実行するLPAR310と360が従系であるとして説明する。以下、LPAR210での動作について説明するが、他のLPARでも同様の動作を実行する。
【0042】
まず、クラスタ制御部220の動作について説明する。クラスタ開始時に、クラスタを構成する各LPARのクラスタ制御部は、ハードウェア障害の発生を示すマシンチェック割り込みを通知するよう、OSに登録する。LPAR210であれば、クラスタ制御部220はOS230にマシンチェック割り込みの通知を要求する(フロー省略)。
【0043】
LPAR210の稼働中、クラスタ制御部220は、一般的なクラスタと同様に、サービスを提供するデータ処理プログラム211の実行を制御し、クラスタを構成する計算機を相互に監視している。例の構成であれば、LPAR310で実行するクラスタ制御部320と相互に通信して、稼働状況を監視している。従系側のクラスタ制御部320が主系の異常を検知すると、クラスタ制御部320の制御によりフェイルオーバーが実行されて、LPAR310が主系になる。
【0044】
クラスタ制御部220は、OS230やデータ処理プログラム211からのクラスタ制御要求も待機している。
【0045】
次に、ハードウェア障害発生時の動作について説明する。ここで説明するのは、障害が部分的な障害であり、影響を受けるLPARのみ停止すれば、他のLPARは継続して実行可能である場合についてである。すべてのLPARに影響を及ぼすハードウェア障害の場合は、全LPARの実行を停止し、クラスタを構成している全LPARがフェイルオーバーすることになる。ここでは、LPAR260が実行継続不可となるハードウェア障害が発生したとして説明する。
【0046】
図5に、部分的なハードウェア障害発生時のハイパバイザのマシンチェック割り込み処理部251と、OS230のマシンチェック割り込み処理部231の処理フローを示す。
【0047】
計算機100でハードウェア障害が発生すると、障害を起こしたコンポーネントはCPU101ないしCPU104にマシンチェック割り込みを送信する。割り込みを捕獲したCPUは、ハイパバイザ250のマシンチェック割り込み処理部251を実行する。マシンチェック割り込み処理部251は、割り込みの内容から障害部位を特定し(ステップ501)、そのハードウェア障害の影響で実行が不可能となるLPARを特定する(ステップ502)。
【0048】
マシンチェック割り込み処理部251は、実行が不可能なLPARに、実行継続不可を示すマシンチェック(Uncorrectable Machine Check)を送信し、当該LPARの実行を停止させる(ステップ503)。この時、クラスタ制御部220は、障害通知テーブル252の障害通知フラグを「あり」に、停止可否フラグを「可」に変更する。
【0049】
この例では、ハイパバイザからLPAR260に、実行継続不可マシンチェック割り込みを送信する。LPAR260で実行するOS280のマシンチェック割り込み処理部281が、ハイパバイザのマシンチェック割り込み処理部251から送信された割り込みを捕獲し、OS280の実行を停止する。
【0050】
OS280の実行が停止すると、クラスタを構成する計算機200のLPAR360のクラスタ制御部370が、OS280の実行の停止を検知して、フェイルオーバーを実行する。この結果、LPAR360が主系となり、データ処理プログラム361が実行を開始する。この時、前述したとおり、クラスタ制御部370は、障害通知テーブル252のLPAR360(LPAR4)の停止可否フラグ404を「否」に設定している。この時の計算機200の障害通知テーブル252の様子を、図12の440に示す。
【0051】
次に、マシンチェック割り込み処理部251は、障害通知テーブル252の障害通知要否フラグ402を参照して、障害通知を要求しているLPARについて、障害通知フラグ
403を「あり」に、停止可否フラグ404を「否」に設定し、実行継続可能であるがハードウェア障害が発生している旨を通知するマシンチェック(Correctable Machine Check)を送信する(ステップ504)。
【0052】
図4の420に示す通り、LPAR1に対応するLPAR210が通知を要求しており、マシンチェック割り込み処理部251は、LPAR210に実行継続可能マシンチェックを送信する。また、割り込み処理部251は、マシンチェック送信前に、障害通知テーブル252のLPAR210に対応する障害通知フラグ403を「あり」に、停止可否フラグ404を「否」に設定する。この時、LPAR210(LPAR1)の障害通知テーブル252は、障害通知フラグ403が「あり」、停止可否フラグ403が「否」となっている。この状態は、LPAR210がハードウェア障害通知を受信したが、それに対応してLPAR210を停止するために必要な処理が完了していないことを示している。この時の計算機100の障害通知テーブル252の様子を図12の450に示す。
【0053】
LPAR260の実行はすでに停止しているので、マシンチェックは送信しない。
【0054】
マシンチェック割り込みを受けて、OS230のマシンチェック割り込み処理部231が起動し、以下に示す処理を実行する。
【0055】
割り込み処理部231は、捕獲したマシンチェックが実行継続不可を示すマシンチェックかどうかを判定する(ステップ510)。
【0056】
実行継続不可なマシンチェックである場合は、OS230の実行を停止する(ステップ513)。
【0057】
実行継続可能なマシンチェックである場合は、障害発生を記録し(ステップ511)、障害通知を要求しているプログラムに障害内容を通知する(ステップ512)。
【0058】
この例では、クラスタ制御部220がマシンチェック割り込みの通知を要求しているので、OS230は、クラスタ制御部220の障害通知受付部222を実行するようにスケジュールする。この例では、マシンチェックの通知を割り込み処理部231から通知するとしたが、マシンチェック割り込み処理部231の実行完了後に、通知処理が実行されてもよい。
【0059】
マシンチェック割り込み処理終了後、障害通知受付部222が、OS230によってディスパッチされて実行する。障害通知受付部222は、クラスタ制御部220のフェイルオーバー要求テーブル223の要求フラグ1110を「あり」、未完要求フラグ1111を「あり」を示す値に設定する(処理フローなし)。
【0060】
クラスタ制御部220の要求監視部225は、定期的にフェイルオーバー要求テーブル223をチェックする処理を実行している。図6に処理フローを示す。要求管理部225は、フェイルオーバー要求テーブル223の未完要求フラグ1111を検査し、要求があったがフェイルオーバーが完了していないかどうかを判定する(ステップ601)。
【0061】
そうである場合、テーブル223の要求フラグ1110を「あり」に再設定する(ステップ602)。
【0062】
要求管理部225は、これらの処理ののち、あらかじめ決められた時間待機して(ステップ603)、ステップ601からチェック処理を繰り返す。
【0063】
これによって、一定時間ごとに未完了のフェイルオーバー要求を再発行し、最初のフェイルオーバー要求の時点でフェイルオーバーができない状態であっても、将来のある時点でフェイルオーバー処理が再実行されるようにする。なお、一定時間とは、実行している業務に応じてユーザが設定するものであり、例えば30秒毎としてもよい。
【0064】
次に、データ処理プログラム211の処理内容を説明する。図7に、データ処理プログラム211の処理フローを示す。データ処理プログラム211は、基本的には、ネットワーク経由で送信される処理要求を受け付け、それに対応するデータ処理を実施することを繰り返しているものとする。
【0065】
データ処理プログラム211は、処理要求を待機している(ステップ701)。データ処理プログラム211は、あらかじめ決められた時間でタイムアウトするように待機している。処理要求が到着するかタイムアウトによって、ステップ701は完了する。
【0066】
データ処理プログラム211は、クラスタ制御インタフェイス221を介してクラスタ制御部220にフェイルオーバー要求があるかを問い合わせる(ステップ702)。クラスタ制御部220は、フェイルオーバー要求テーブル223の要求フラグ1110の値を返す。
【0067】
ステップ702でフェイルオーバー要求がないと判定された場合、要求されたデータ処理を実行する(ステップ703)。ただし、タイムアウトでステップ701を完了している場合は、何もしない。
【0068】
処理完了後、データ処理プログラム211は、再び処理要求の到着を待つ(ステップ701)。
【0069】
ステップ702でフェイルオーバー要求があると判定された場合、データ処理プログラム211は、クラスタ制御部220にフェイルオーバーを要求する(ステップ710)。
【0070】
要求後、データ処理プログラム211は、フェイルオーバー処理の完了を待ち、フェイルオーバーの実行状況をクラスタ制御部220から取得し、フェイルオーバーが成功したかどうかを判定する(ステップ711)。
【0071】
フェイルオーバーが成功した場合は、データ処理プログラム211は実行を停止する。失敗した場合は、データ処理プログラム211は、再び処理要求の到着を待機する(ステップ701)。
【0072】
フェイルオーバーが失敗した場合は、要求監視部225の処理によって、将来のある時点でフェイルオーバーが再度要求される。フェイルオーバーが成功した時点でデータ処理プログラム211の処理が強制的に停止する処理であってもよい。この場合、フェイオーバー失敗の場合のみデータ処理プログラム211の処理が継続することになる。
【0073】
図8にクラスタ制御部220のフェイルオーバー処理部224の処理フローを示す。
【0074】
フェイルオーバー処理部224は、データ処理プログラム211の要求を受けてフェイルオーバー処理を実行する(ステップ801)。フェイルオーバーが完了すると、計算機300のLPAR310が主系となり、データ処理プログラム311が要求を受け付け、データ処理を実行する。
【0075】
フェイルオーバー処理部224は、フェイルオーバーが成功したかどうかを判定する(ステップ802)。
【0076】
フェイルオーバーが成功した場合には、フェイルオーバー要求テーブル223の未完要求フラグ1111を「なし」に、要求フラグ1110も「なし」に設定する(ステップ803)。
【0077】
さらに、ハイパバイザ250内の障害通知テーブル252の停止可否フラグ404を「可」に設定する(ステップ804)。これは、ハイパバイザ250が提供するインタフェイスを介して実行する。これにより、障害通知テーブル252のLPAR210のエントリは、障害通知フラグ403が「あり」、停止可否フラグ404が「可」になったことになる。これは、障害が通知されて、それに対応して停止する準備が整ったことを示している。この時の計算機100の障害通知テーブル252の様子を図12の460に示す。これに示される通り、計算機100で実行しているLPAR1とLPAR2は停止可能であることが、障害通知テーブル252を参照することで容易に判別可能となる。また、計算機200の障害通知テーブル252の様子を図12の470に示す。LPAR310が主系になったことに伴い、LPAR3の停止可否フラグ404が「否」となっている様子を示している。
【0078】
なお、フェイルオーバーが失敗した場合には、主系での実行が継続する。後の時点で、フェイルオーバーが再度要求される。
【0079】
以上の実施の形態により、計算機100でハードウェア障害が発生した際に、その障害とは無関係、即ち障害の発生していないハード上のクラスタ構成をとるLPARに自動的にフェイルオーバーし、その結果LPAR210が従系となるため、将来の保守作業に備えて、障害が発生したハードウェアの実行を停止する作業を、作業者が実施可能となる。
【0080】
本発明では、障害通知要求フラグ402と停止可否フラグ404を管理する障害通知テーブル252ハイパバイザ250内に設け、これらを更新するインタフェイスをハイパバイザ250が提供している。これによって、ハイパイザ250は、部分障害発生時に継続実行が可能なLPARに障害発生を通知し、将来の停止に向けた処理を実行させることが可能となっている。また、LPARで実行するプログラム(実施例ではクラスタ制御部220)が、自身の実行とは直接関係のない部分障害の通知を受けて、将来の保守時のシステムの停止に向けた処理を実行することができる(実施例ではフェイルオーバーを実施)。これによって、障害通知を受けたLPARは、将来の保守に備えて実行するための準備を実行し、加えて、準備完了したことをハイパバイザ250に通知できる。通常のシステムでは、LPARを停止可能であるかどうかを確認する方法は実行されている業務に依存するため、個別に確認しなければならない。本発明によれば、ハイパバイザ250は、計算機100全体を停止可能かどうかを判断するための情報を、実行する業務に関係なく保持できるため、保守に関わる作業員は容易に計算機を停止可能かどうか判断可能となる。
【0081】
また、本実施の形態のようにクラスタ制御と組み合わせることにより、ハードウェア障害発生から保守の時点までのいずれかの時点で、安全に系切り替えを実行して、保守作業に備えることが可能である。ハードウェア障害の通知を外部から監視して系切り替えを起動することも可能であるが、ハイパバイザがクラスタ制御に系切り替えの契機を与えることにより、ハードウェア障害の発生を外部から監視するためのシステム構成が不要となる。このような監視のシステムは、ハードウェア障害を見落とさないために二重化するといった構成が必要になるが、これらが不要となり、システム構成が簡便、かつ、高信頼となる。
【0082】
また、系切り替え等の作業を自動で実施することにより、保守の時点で必要となる手動の作業が削減され、
本発明では、クラスタ制御と組み合わせたが、クラスタ制御に限定するものではない。マシンチェック割り込みの通知を受けて、ハイパバイザ250の障害通知テーブル252を更新するプログラムが実行していれば、将来の停止に向けた処理を実行することが可能である。
【0083】
<実施例2>
次に、本発明を適用した第二の計算機システムについて説明する。図9は、本発明の第二の実施の形態のシステム構成図である。
【0084】
第二の実施の形態では、第一の実施の形態でのシステム構成に加えて、計算機100と計算機200の稼働状態を監視する計算機900が追加されている。計算機100と計算機200は、NIC931と932が搭載されており、ネットワーク920を介して計算機900と接続している。このネットワーク920を介して、ハイパバイザ250のインタフェイスを参照可能で、障害通知テーブル252の内容を取得可能であるとする。
【0085】
計算機900は、図1に示したのと同様の構成の計算機である。計算機900では、障害状況表示部910が実行している。障害状況表示部910は、管理対象の計算機から情報を取得して表示する。ここでは、計算機100と計算機200が管理対象として登録されているとする。特に、計算機100と計算機200のハイパバイザから、障害通知テーブル252の状態を取得して表示する。これによって、実行継続可能なハードウェア障害の発生の有無と、それに対応した停止準備処理が実行されたかを容易に判定できる。
【0086】
図10に障害状況の表示の例を示す。これは、第一の実施の形態で、LPAR210のフェイルオーバーが完了した後の状態を示している例である。この表示は、図12に示した計算機100の障害通知テーブル460、計算機200の障害通知テーブル470に基づき構成される。この表示の内容の構成方法を以下に説明する。
【0087】
図10の表示を作成する障害状況表示部910は、計算機Aに対応する計算機100のLPAR名1001、稼働状況1002をハイパバイザ252より取得する。これらの情報は、管理情報としてハイパバイザ252から取得可能であるとする。障害状況表示部910は、稼働中のLPARについて、障害通知テーブル252の内容をハイパバイザより取得する。具体的には、障害状況表示部910は、障害通知1003の内容を障害通知テーブル252の障害通知フラグ403より取得した値を、停止可否1004の内容を障害通知テーブル252の停止可否フラグ404より取得した値を表示する。この例では、LPAR260(LPAR2)は停止しているため、LPAR210(LPAR1)の情報を取得して表示する。停止しているLPARの情報は、LPAR名と稼働状況のみ表示し、他の情報は表示しない。
【0088】
計算機Bに対応する計算機200の情報も同様に取得して表示する。具体的には、LPAR310(LPAR3)、LPAR260(LPAR4)の情報を取得して、LPAR名1011、稼働状況1012、障害通知1013、停止可否1014を表示する。
【0089】
図12の障害管理テーブル460ではLPAR1の障害通知フラグ403は「あり」、停止可否フラグ404は「可」となっているため、障害状況表示部910は、計算機100の障害通知1003は「あり」、停止可否1004は「可」と表示する。計算機200についても同様に、障害通知テーブル470の内容を取得して情報を表示する。
【0090】
この例では、計算機Aが計算機100に、計算機Bが計算機200に対応している。計算機AではLPAR1が実行中であるが、障害通知を受け、停止可能な状態になっていること、LPAR2が実行を停止していることを表示している。また、計算機BではLPAR3,4とも実行中であることを示している。
【0091】
保守作業では、画面表示1000を参照することにより、計算機AではLPAR1が実行しているが停止可能であることが、この画面を通じて判断することができる。
【0092】
以上により、ハードウェアの部分障害で実行を継続するLPARがあっても、保守の時点で停止可能な状態になっているかを容易に判断することが可能となる。これは、LPARで実行するクラスタ制御部220のような管理ソフトウェアが、ハイパバイザが提供するインタフェイスによってハイパバイザ250と連携して、ハイパバイザ250内の障害通知テーブル252にLPARの停止可否状態を設定可能となっていることによる。
【0093】
一般に、LPARに搭載される業務システムは無関係のシステムであり、業務を停止可能かどうかは、その業務システムの管理者でなければ判断できない。本発明によれば、部分障害で継続実行しているLPARに、保守作業に向けた停止準備を実行させ、その準備処理の状況を容易に確認することができる。これにより、故障部品の交換時に、計算機を停止する作業が容易になる。
【0094】
本実施の形態では、データ処理プログラム211とクラスタ制御部220が連携してフェイルオーバーを実行したが、クラスタ制御部220が単独でフェイルオーバーを起動してもよい。
【0095】
これまでの実施の形態では、データ処理プログラム211にクラスタのフェイルオーバーの実行タイミングを判断させていたが、ハイパバイザがLPARの動作状況を監視して、クラスタ制御部220にフェイルオーバーを起動させることでもよい。例えば、LPARのアイドル状態の検知、I/O状態の監視により、処理の切れ目を判定してフェイルオーバーを実行してもよい。
【0096】
以上の実施の形態では、論理分割を前提として説明したが、仮想化機構が部分障害に対応した機能を持っている場合は、それを前提としてもよい。
【符号の説明】
【0097】
100…計算機、101ないし104…CPU、110…バス、120…主記憶装置、130…I/Oバス制御装置、140…I/Oバス、150…入出力装置、161ないし163…HBA、171ないし173NIC、200…計算機、210…LPAR、211…データ処理プログラム、212…クラスタ制御連携部、220…クラスタ制御部、221…クラスタ制御インタフェイス、222…障害通知受付部、223…フェイルオーバー要求テーブル、224…フェイルオーバー処理部、225…要求監視部、230…OS,231…マシンチェック割り込み処理部、250…ハイパバイザ、251…マシンチェック割り込み処理部、252…障害通知テーブル、260…LPAR、261…データ処理プログラム、270…クラスタ制御部、280…OS、310…LPAR、311…データ処理プログラム、320…クラスタ制御部、330…OS、360…LPAR、361…データ処理プログラム、370…クラスタ制御部、380…OS、390ないし391…ネットワーク、392ないし399…NIC、401ないし404…障害通知テーブル252内のデータ、410ないし470…障害通知テーブルの状態例、501ないし513…処理ステップ、601ないし603…処理ステップ、701ないし711…処理ステップ、801ないし804…処理ステップ、900…計算機、910…障害状況処理部、920…ネットワーク、931ないし932…NIC、1000…画面表示例、1001ないし1014…画面表示内容、1110ないし1111…フェイルオーバー要求テーブル223内のデータ

【特許請求の範囲】
【請求項1】
クラスタを構成する第一の物理計算機及び第二の物理計算機上に、ハイパバイザの制御により複数のLPARが生成された仮想計算機システムにおけるハードウェア障害処理方法であって、
前記第一の物理計算機でハードウェア障害が発生すると、
前記第一の物理計算機が有する第一のハイパバイザは、前記第一の物理計算機上に生成されたLPARについて実行の継続可能なLPARの有無を判定し、
実行の継続が可能でないLPARがある場合、
前記第一のハイパザイザは、実行の継続が可能でない第一のLPARを停止し、
前記第一のLPARとクラスタを構成する前記第二の物理計算機上に生成された第二のLPARが有するクラスタ制御部は、前記第一のLPARの業務を前記第二のLPARへフェイルオーバーする第一のフェイルオーバーを行い、
実行の継続が可能なLPARがある場合、
実行の継続が可能な第三のLPARとクラスタを構成する前記第二の物理計算機上に生成された第四のLPARが有するクラスタ制御部は、前記第三のLPARの業務を前記第四のLPARへフェイルオーバーする第二のフェイルオーバーを行うことを特徴とするハードウェア障害処理方法。
【請求項2】
前記ハイパバイザは、障害通知情報を有し、
前記障害通知情報は、前記LPARの実行に影響しないハードウェア障害について、LPAR毎の障害通知の要求有無及びフェイルオーバー後における前記LPARの停止の可否を管理し
前記第一のハイパバイザは、前記第一のハイパザイザが有する障害通知情報を参照し、前記実行の継続が可能な第三のLPARにおけるハードウェア障害通知の要求がある場合、前記第三のLPARに前記障害通知を送信し、
前記障害通知を受信した前記第三のLPARが有するクラスタ制御部は、前記第二のフェイルオーバーの状況を管理するフェイルオーバー要求情報を有し、前記フェイルオーバ要求情報に前記第二のフェイルオーバーの要求ありを設定することを特徴とする請求項1記載のハードウェア障害処理方法。
【請求項3】
前記第三のLPARが有するクラスタ制御部は、
前記フェイルオーバー要求情報を参照し、前記フェイルオーバー要求がある場合、前記第二のフェイルオーバーを行い、
前記第二のフェイルオーバーが完了すると、前記第一のハイパバイザが有する障害通知情報に対し、前記第二のフェイルオーバー後における前記第三のLPARの停止の可否を、可に設定することを特徴とする請求項2記載のハードウェア障害処理方法。
【請求項4】
前記仮想計算機システムは、障害状況表示部を有し、
前記障害状況表示部は、前記システムに存在するLPAR毎に、稼動状況及び停止可否を表示し、
前記障害状況表示部で表示される停止可否は、前記障害通知情報が管理するフェイルオーバー後における前記LPARの停止の可否に基づくことを特徴とする請求項3記載のハードウェア障害処理方法。
【請求項5】
前記第三のLPARのクラスタ制御部は、前記フェイルオーバー要求情報の参照を、所定の時間毎に行うことを特徴とする請求項3記載のハードウェア障害処理方法。
【請求項6】
前記第一の物理計算機及び第二の物理計算機のハイパバイザは、
LPARが実行継続可能なハードウェア障害の通知を要求することを登録するインタフェイスを有し、
前記インタフェイスでの登録状況に合わせて、通知を要求したLPARに実行継続可能なハードウェア障害を通知することを特徴とする請求項1記載のハードウェア障害処理方法。
【請求項7】
前記第一のハイパバイザ及び前記第二の物理計算機が有する第二のハイパバイザは、
前記第三のLPARが第二のフェイルオーバーを実行したことを通知するためのインタフェイスを有し、
LPARの障害対応処理の通知状況を前記第一ハイパバイザ、前記第二のハイパザイザのうち少なくとも一方が保持し、
その通知状況を取得するためのインタフェイスを前記第一ハイパバイザ、前記第二のハイパザイザのうち少なくとも一方が有することを特徴とする請求項1記載のハードウェア障害処理方法。
【請求項8】
前記第一ハイパバイザ、前記第二のハイパザイザのうち少なくとも一方の保持する障害対応状況を取得して表示する手順と装置を備えていることを特徴とする請求項7記載のハードウェア障害処理方法。
【請求項9】
前記第一ハイパバイザ、前記第二のハイパザイザのうち少なくとも一方からの継続実行可能なハードウェア障害通知を受けて系切り替えを実行する手順と、
系切り替え完了後に障害対応処理を実行した旨を、前記第一ハイパバイザ、前記第二のハイパザイザのうち少なくとも一方のインタフェイスで通知する手順とを有し、
系切り替えの完了状況を、前記第一ハイパバイザ、前記第二のハイパザイザのうち少なくとも一方より取得できることを特徴とする請求項7記載のハードウェア障害処理方法。
【請求項10】
クラスタを構成する第一の物理計算機及び第二の物理計算機上に、ハイパバイザの制御により複数のLPARが生成された仮想計算機システムにおいて、
前記第一の物理計算機でハードウェア障害が発生すると、
前記第一の物理計算機が有する第一のハイパバイザは、前記第一の物理計算機上に生成されたLPARについて実行の継続可能なLPARの有無を判定し、
実行の継続が可能でないLPARがある場合、
前記第一のハイパザイザは、実行の継続が可能でない第一のLPARを停止し、
前記第一のLPARとクラスタを構成する前記第二の物理計算機上に生成された第二のLPARが有するクラスタ制御部は、前記第一のLPARの業務を前記第二のLPARへフェイルオーバーする第一のフェイルオーバーを行い、
実行の継続が可能なLPARがある場合、
実行の継続が可能な第三のLPARとクラスタを構成する前記第二の物理計算機上に生成された第四のLPARが有するクラスタ制御部は、前記第三のLPARの業務を前記第四のLPARへフェイルオーバーする第二のフェイルオーバーを行うことを特徴とする仮想計算機システム。
【請求項11】
前記ハイパバイザは、障害通知情報を有し、
前記障害通知情報は、前記LPARの実行に影響しないハードウェア障害について、LPAR毎の障害通知の要求有無及びフェイルオーバー後における前記LPARの停止の可否fを管理し
前記第一のハイパバイザは、前記第一のハイパザイザが有する障害通知情報を参照し、前記実行の継続が可能な第三のLPARにおけるハードウェア障害通知の要求がある場合、前記第三のLPARに前記障害通知を送信し、
前記障害通知を受信した前記第三のLPARが有するクラスタ制御部は、前記第二のフェイルオーバーの状況を管理するフェイルオーバー要求情報を有し、前記フェイルオーバー要求情報に前記第二のフェイルオーバーの要求ありを設定することを特徴とする請求項10記載の仮想計算機システム。
【請求項12】
前記第三のLPARが有するクラスタ制御部は、
前記フェイルオーバー要求情報を参照し、前記フェイルオーバー要求がある場合、前記第二のフェイルオーバーを行い、
前記第二のフェイルオーバーが完了すると、前記第一のハイパバイザが有する障害通知情報に対し、前記第二のフェイルオーバー後における前記第三のLPARの停止の可否を、可に設定することを特徴とする請求項11記載の仮想計算機システム。
【請求項13】
前記仮想計算機システムは、障害状況表示装置を有し、
前記障害状況表示装置は、前記システムに存在するLPAR毎に、稼動状況及び停止可否を表示し、
前記障害状況表示装置で表示される停止可否は、前記障害通知情報が管理するフェイルオーバ後における前記LPARの停止の可否に基づくことを特徴とする請求項12記載の仮想計算機システム。
【請求項14】
前記第三のLPARのクラスタ制御部は、前記フェイルオーバー要求情報の参照を、所定の時間毎に行うことを特徴とする請求項12記載の仮想計算機システム。
【請求項15】
ハイパバイザの制御により複数のLPARが生成され、クラスタを構成する物理計算機において、
前記ハイパバイザは、障害通知情報を有し、
前記障害通知情報は、前記LPARの実行に影響しないハードウェア障害について、LPAR毎の障害通知の要求有無及びフェイルオーバー後における前記LPARの停止の可否を管理し
ハードウェア障害が発生すると、前記ハイパバイザは、
前記障害通知情報を参照し、
ハードウェア障害通知の要求があるLPARに対して、前記障害通知を送信し、
前記複数のLPARについて実行の継続可能なLPARの有無を判定し、
実行の継続が可能でないLPARがある場合、
前記ハイパザイザは、実行の継続が可能でないLPAR1を停止し、
前記LPAR1は、クラスタを構成するLPARへフェイルオーバーされ、
実行の継続が可能なLPARがある場合、
実行の継続が可能なLPAR2は、クラスタを構成するLPARへフェイルオーバーされ、
前記障害通知を受信したLPARが有するクラスタ制御部は、前記LPARのフェイルオーバーが完了すると、前記障害通知情報におけるフェイルオーバー後におけるLPARの停止の可否を、可に設定する)ことを特徴とする計算機。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2012−230444(P2012−230444A)
【公開日】平成24年11月22日(2012.11.22)
【国際特許分類】
【出願番号】特願2011−96689(P2011−96689)
【出願日】平成23年4月25日(2011.4.25)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】