JP5335150B2 - 計算機装置及びプログラム - Google Patents

計算機装置及びプログラム Download PDF

Info

Publication number
JP5335150B2
JP5335150B2 JP2012545548A JP2012545548A JP5335150B2 JP 5335150 B2 JP5335150 B2 JP 5335150B2 JP 2012545548 A JP2012545548 A JP 2012545548A JP 2012545548 A JP2012545548 A JP 2012545548A JP 5335150 B2 JP5335150 B2 JP 5335150B2
Authority
JP
Japan
Prior art keywords
guest
hardware
request
failure
response
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012545548A
Other languages
English (en)
Other versions
JPWO2012070102A1 (ja
Inventor
俊介 國分
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP5335150B2 publication Critical patent/JP5335150B2/ja
Publication of JPWO2012070102A1 publication Critical patent/JPWO2012070102A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Description

本発明は、冗長構成をとる仮想計算機システムを管理する技術に関する。
仮想化技術を応用し、例えば、二つの仮想マシンを二つのサーバ装置(物理計算機装置)上で構築し、二つの仮想マシンを同期させて、仮想マシンを二重化し、ソフトウェア的にFT(Fault Tolerant:耐障害性)を実現する技術(以下、ソフトウェアFTと呼ぶ)がある(例えば、非特許文献1、非特許文献2)。
このソフトウェアFTの環境では、運用系のサーバ装置で動作するゲストOS(Operating System)の状態(メモリ、ディスク等)を動作ごと、または、ある一定周期ごとに待機系のサーバ装置上へ同期(コピー)しておく。
そして、運用系のサーバ装置で障害が発生した場合に、待機系のサーバ装置上にコピーしておいたゲストOSの状態から、ゲストOSの動作を待機系のサーバ装置において再開させることで、すばやい動作の再開が可能となる。
しかし、従来のソフトウェアFT環境では、運用系のサーバ装置で発生したハードウェア故障に起因するディスクやネットワークなどのI/O(Input/Output)エラーに関する内部処理まで同期対象になりうる。
つまり、ハードウェア故障に起因するディスクやネットワークなどのI/Oエラーに関する内部処理までが、待機系のサーバ装置にコピーされることになる。
そして、運用系のサーバ装置にハードウェア故障が発生した場合に、ハードウェア故障に起因するI/Oエラーに関する内部処理が待機系のサーバ装置にコピーされ、また、待機系のゲストOSが運用系のゲストOSの動作を引き継ぐ。
このとき、待機系のゲストOSでも、同様の状態(例えば、I/Oリトライ処理中の状態や、I/Oエラーが返された状態)で動作が異常になり、結果として、両系で異常になる可能性がある。
これに対し、特許文献1に記載の技術では、ゲストOSの稼動状態と、定期的に取得するゲストOS状態(特許文献1ではスナップショットデータとしているが、本明細書では、以降は同期データと称する)を関連付けて保存する。
更に、特許文献1の技術では、運用系のサーバ装置で故障が発生した場合には、該当故障が発生していないゲストOS稼動状態までさかのぼって同期データを選択し、選択した同期データを用いて待機系のサーバ装置においてゲストOSの動作を再開させる。
このようにして、特許文献1の技術では、故障による処理異常を継承させることなくゲストOSを切り替えることを可能としている。
特開2007−183701号公報
Remus: High Availability via Asynchronous Virtual Machine Replication、http://nss.cs.ubc.ca/remus/ Kemari: 仮想マシン間の同期による耐故障クラスタリング、情報処理学会論文誌 コンピューティングシステム、Vol.3、No.1(Mar.2010)
しかし、特許文献1では故障を検知する機構をゲストOS上に配置しているため、故障検知にタイムラグがあり、結局はゲストOSへハードウェア故障状態が伝播した状態を待機系のサーバ装置に通知することになる。
このため、前述したように、待機系のゲストOSが動作を開始しても、待機系のサーバ装置においてハードウェア障害が発生したのと同様の状態になってしまう。
また、特許文献1の方法では、複数の同期データを管理しておく必要があり、データ量が増大する。
さらに、故障検知のタイミングによっては、相当量の時間をさかのぼった同期データから待機系のゲストOSが動作を再開させなければならない場合がある。
この発明は、上記のような課題を解決することを主な目的の一つとしており、ハードウェア障害の影響を受けることなく、待機系においてゲストOSの動作を正常に引き継げるようにすることを主な目的とする。
本発明に係る計算機装置は、
ハードウェアと、前記ハードウェアを用いて実現される仮想マシン上で動作し、前記ハードウェアへのリクエストを発行する第1のゲストOS(Operating System)とを有し、
前記第1のゲストOSと同じ動作を行う第2のゲストOSを有する外部装置に接続されている計算機装置であって、
前記第1のゲストOSにより発行されたリクエストのコピーを所定の記憶領域に格納するリクエスト管理部と、
前記リクエストに対する前記ハードウェアからのレスポンスが前記第1のゲストOSに届く前に前記ハードウェアに障害が発生しているか否かを判断し、前記ハードウェアに障害が発生している場合に前記レスポンスが前記第1のゲストOSに届かないように制御する障害検知部と、
前記障害検知部により前記ハードウェアの障害が検知された場合に、前記記憶領域に格納されている前記リクエストのコピーと前記ハードウェアの障害が検知された時点での前記第1のゲストOSの状態を示す情報を前記外部装置に出力し、前記第1のゲストOSが行っていた動作を前記第2のゲストOSにて引き継ぐよう指示する指示メッセージを前記外部装置に出力する引き継ぎ制御部とを有することを特徴とする。
本発明によれば、ハードウェアからのレスポンスが第1のゲストOSに届く前にハードウェアに障害が発生しているか否かを判断し、ハードウェアに障害が発生している場合にレスポンスが第1のゲストOSに届かないように制御し、ハードウェアの障害が検知された時点での第1のゲストOSの状態を示す情報及びリクエストのコピーを外部装置に出力するため、ハードウェア障害を検知する直前の状態から第2のゲストOSを動作させることができる。
これにより、ハードウェア障害の影響を受けることなく、第2のゲストOSに第1のゲストOSで行われてきた動作を正常に引き継がせることができる。
実施の形態1に係るシステム構成例を示す図。 仮想化環境での一般的なI/O処理の流れを示す図。 実施の形態1に係るI/O処理の流れを示す図。 実施の形態1に係るI/Oリクエストの転送処理の例を示すフローチャート図。 実施の形態1に係るI/O制御部の動作例を示すフローチャート図。 実施の形態1に係るI/Oレスポンスの転送処理の例を示すフローチャート図。 実施の形態1に係るI/O制御部、障害検知部及び同期部の動作例を示すフローチャート図。 実施の形態1〜3に係るサーバ装置のハードウェア構成例を示す図。
実施の形態1.
本実施の形態では、運用系のサーバ装置と待機系のサーバ装置が配置されている構成において、運用系のゲストOS上に故障を検知する機構を加えることなく、運用系のホストOSや仮想マシンモニタでハードウェアの障害を検知し、当該ハードウェア障害に関する障害情報を破棄し、運用系のゲストOSへハードウェアの障害情報が伝播しないようにする。
このようにして、運用系のゲストOSにハードウェア障害を認識させないようにする。
また、本実施の形態では、その後、運用系のサーバ装置から、運用系のゲストOSの状態を通知する同期データ及び運用系のゲストOSの動作を待機系のゲストOSで引き継ぐよう指示する指示データを待機系のサーバ装置に出力する。
そして、待機系のサーバ装置は、同期データを用いて、待機系のゲストOSの状態を運用系のゲストOSの状態と同じにし、運用系のサーバ装置におけるハードウェア障害の影響を受けることなく、待機系のゲストOSが運用系のゲストOSの動作を正常に引き継ぐ。
図1は、本実施の形態に係るシステム構成を示す。
図1に示すように、LAN(Local Area Network)300によりサーバ装置100とサーバ装置200が接続されている。
サーバ装置100とサーバ装置200は、それぞれ異なる物理計算機装置である。
本実施の形態では、サーバ装置100が運用系のサーバ装置であり、サーバ装置200が待機系のサーバ装置である例にて説明を進める。
このため、サーバ装置100が計算機装置の例であり、また、サーバ装置200が外部装置の例である。
図1では、サーバ装置100が計算機装置の例であることを運用系サーバ装置(計算機装置)と表現し、また、サーバ装置200が外部装置の例であることを待機系サーバ装置(外部装置)と表現している。
ハードウェア101(物理ハードウェア)には、例えば、CPU(Central Processing Unit)1011、メモリ1012、ディスク1013及びNIC(Network Interface Card)1014が含まれている。
なお、ハードウェア101には、これら以外のハードウェア要素が含まれていてもよい。
ハードウェア101上では仮想マシンモニタ102が動作し、更に、仮想マシンモニタ102上ではホストOS103とゲストOS104が動作している。
ゲストOS104は、仮想マシンモニタ102及びホストOS103により実現される仮想マシンにより提供される仮想ハードウェア(仮想CPU、仮想メモリ、仮想ディスク、仮想NIC等)を利用して動作する。
なお、ゲストOSは、第1のゲストOSの例である。
図1では、ゲストOS104が第1のゲストOSの例であることを括弧書きで示している。
運用系のサーバ装置100が正常に動作している場合(ハードウェア障害が発生していない場合)には、運用系のゲストOS104の状態(ゲストOS104のコンテキスト)が、I/O(Input/Output)処理ごと、または、一定周期で、同期部109によって待機系のサーバ装置200に通知され、ゲストOS204がゲストOS104と同期している(ゲストOS104の状態とゲストOS204の状態が一致している)。
ゲストOS204は、ゲストOS104と同じ動作を行うゲストOSであり、第2のゲストOSの例である。
図1では、ゲストOS204が第2のゲストOSの例であることを括弧書きで示している。
ゲストOS104の最新状態を通知するデータを同期データという。
同期データは、1つ前の同期データに示されていた状態との差分が示される。
また、ゲストOS204では、新たな同期データが入力される度に、以前の同期データが新たな同期データで上書きされる。すなわち、同期データは1つしかない。
なお、同期部109は、仮想マシンモニタ102とホストOS103に跨って動作する。
ゲストOS104では通常プロセス105が動作しており、その処理内容によっては、ハードウェア101へI/Oリクエストを出すことになる。
I/Oリクエストの例としては、ディスク1013からのデータの読み出し、ディスク1013へのデータの書き込み、NIC1014を介してのネットワークへのデータ送信、NIC1014を介してのネットワークからのデータの受信がある。
なお、I/Oリクエストは、ゲストOS104からハードウェア101へのリクエストである。
また、後述するハードウェア101からゲストOS104へのI/Oレスポンスは、リクエストに対するハードウェア101からのレスポンスである。
仮想化環境でのI/O処理の流れは図2のようになっており、プロセス105からのI/Oリクエストは、ゲストOS104上のフロントエンドドライバ106へ渡され、仮想マシンモニタ102を経由して、ホストOS103上のバックエンドドライバ107へ渡される。
ホストOS103上のバックエンドドライバ107はI/Oリクエストを実デバイスドライバ108へ渡し、実デバイスドライバ108は実際のハードウェア101へI/Oリクエストを実行する。
ハードウェアで処理されたI/Oレスポンスは、実デバイスドライバ108へ返され、実デバイスドライバ108からホストOS103上のバックエンドドライバ107、仮想マシンモニタ102を経由して、ゲストOS104上のフロントエンドドライバ106へ転送され、I/Oリクエストを出したプロセス105へ返される。
本実施の形態では、フロントエンドドライバ106とバックエンドドライバ107間のI/Oリクエスト及びI/Oレスポンスを制御するI/O制御部110をホストOS103上に配置する。
また、I/O制御部110で検知したI/Oレスポンスに関して、障害が無いかどうかを検査する障害検知部111を配置する。
さらに、ゲストOS104からのI/Oリクエストのコピーを一時的に保管しておく保存部112を仮想マシンモニタ102上に配置する。
より詳しくは、図3に示すように、I/O制御部110は、フロントエンドドライバ106からのI/Oリクエストを入力し、入力したI/Oリクエストをコピーし、I/Oリクエストのコピーを保存部112に格納し、I/Oリクエストをバックエンドドライバ107に出力する。
なお、仮想マシンモニタ102では、I/O制御部110からのI/Oリクエストのコピーを保存部112と関連付けられている物理記憶領域に記憶させる。
仮想マシンモニタ102は、例えば、メモリ1012の所定のアドレス又はCPU1011のレジスタにI/Oリクエストのコピーを記憶させる。
以降は、図2の場合と同様に、I/Oリクエストがバックエンドドライバ107から実デバイスドライバ108を経由してハードウェア101に到達する。
次に、ハードウェア101は、I/Oリクエストに対するレスポンスであるI/Oレスポンスを実デバイスドライバ108に出力し、I/O制御部110はバックエンドドライバ107からI/Oレスポンスを入力する。
そして、I/O制御部110は入力したI/Oレスポンスを障害検知部111に出力する。
障害検知部111は、I/O制御部110からI/Oレスポンスを入力し、入力したI/Oレスポンスを検査し、I/Oレスポンスにエラーメッセージが存在している場合に、ハードウェア101に障害が発生していると判断し、当該I/Oレスポンスを破棄し、I/Oレスポンスにエラーメッセージが存在していない場合に、当該I/OレスポンスをI/O制御部110を介してフロントエンドドライバ106に出力する。
なお、I/Oレスポンスのエラーメッセージはハードウェア101における障害を通知するメッセージであるため、障害検知部111は、I/Oレスポンスからエラーメッセージを検出した場合には、ハードウェア101に障害が発生していると判断できる。
また、障害検知部111は、I/Oレスポンスのエラーメッセージの検出により、ハードウェア101の障害を検知した場合に、同期部109に同期指示を行う。
同期部109では、障害検知部111からの同期指示に従い、保存部112からI/Oリクエストのコピーを取得するとともに、障害検知部111によりハードウェア101の障害が検知された時点でのゲストOS104の状態を示す情報を生成する。
ゲストOS104の状態を示す情報は、プロセス105のプロセス名、CPU1011のプログラマブルカウンタの値、ゲストOS104に割り当てられているメモリ1012の記憶領域の値等である。
同期部109は、I/Oリクエストのコピーと、ハードウェア101の障害が検知された時点でのゲストOS104の状態を示す情報を同期データとしてサーバ装置200に出力する。
また、同期部109は、ゲストOS104が行っていた動作をゲストOS204にて引き継ぐよう指示する指示メッセージをサーバ装置200に出力する。
以降、サーバ装置200では、ゲストOS204が運用系となり、ゲストOS104の動作を引き継ぐ。
このように、障害検知部111がI/OレスポンスがゲストOS104に届く前にI/Oレスポンスを検査し、ハードウェア101に障害が発生しているか否かを判断し、ハードウェア101に障害が発生している場合にI/OレスポンスがゲストOS104に届かないように制御している。
このため、ゲストOS204に通知するゲストOS104の状態は、ハードウェア101障害の検知前の状態であり、ゲストOS204はハードウェア101障害の検知前の状態からゲストOS104の動作を引き継ぐことができる。
本実施の形態では、同期部109は引き継ぎ制御部の例であり、I/O制御部110はリクエスト管理部の例である。
図1では、同期部109が引き継ぎ制御部の例であることを同期部(引き継ぎ制御部)と表現し、I/O制御部110がリクエスト管理部の例であることをI/O制御部(リクエスト管理部)と表現している。
また、上述したように、同期部109、I/O制御部110、障害検知部111は、仮想マシンモニタ102又はホストOS103で動作するプログラムである。
同期部109、I/O制御部110、障害検知部111のプログラムは、例えば、実行前はディスク1013に格納されており、実行に際して、ディスク1013からメモリ1012にロードされ、CPU1011により実行されて、上述の動作が行われる。
なお、図示は省略しているが、サーバ装置200においても、サーバ装置100と同様のモジュール構成例となっている。
次に、本実施の形態に係る動作(ハードウェアに関する故障をゲストOSへ通知しないようにして、待機系へ切り替える動作)を説明する。
具体的には、図4〜図7を用いて、ゲストOS104上のプロセス105からのI/Oリクエスト発生から、I/Oレスポンスの検査、I/Oレスポンスの検査後の処置までの一連の流れを説明する。
なお、図4及び図5は、ゲストOS104上のプロセス105からハードウェア101へのI/Oリクエストの転送処理の流れを示し、図6及び図7は、ハードウェア101からゲストOS104上のプロセス105へのI/Oレスポンスの転送処理の流れを示す。
まず、図4及び図5について説明する。
最初に、ゲストOS104上のプロセス105は、フロントエンドドライバ106に対してI/Oリクエストを出力する(S101)。
フロントエンドドライバ106は、受け取ったI/Oリクエストを仮想マシンモニタ102を経由してホストOS103上のバックエンドドライバ107へ転送する(S102)。
このとき、ホストOS103上のI/O制御部110がI/Oリクエストを検知し、図5に示す処理を行う(S103)。
まず、I/O制御部110はフロントエンドドライバ106からのI/Oリクエストを取得し、取得したI/Oリクエストをコピーし、I/Oリクエストのコピーを保存部112に出力し、保存部112にI/Oリクエストのコピーを格納する(S1031)。
次に、I/O制御部110は、I/OリクエストをホストOS103のバックエンドドライバ107へ転送する(S1032)。
バックエンドドライバ107は、I/O制御部110からI/Oリクエストを入力し、入力したI/Oリクエストを実デバイスドライバ108へ転送する(S104)。
実デバイスドライバ108はI/Oリクエストを元に、ハードウェア101の制御を実行する(S105)。
以上が、プロセスからハードウェアへのI/Oリクエストまでの流れである。
次に、I/Oリクエストに対するI/Oレスポンスがハードウェアから返されたときの流れを図6及び図7を参照して説明する。
まず、ハードウェア101はホストOS103上の実デバイスドライバ108へI/Oレスポンスを返す(S201)。
実デバイスドライバ108は、受け取ったI/Oレスポンスをバックエンドドライバ107へ転送する(S202)。
バックエンドドライバ107はゲストOS104上のフロントエンドドライバ106へI/Oレスポンスを転送する(S203)。
このとき、ホストOS103上のI/O制御部110がI/Oレスポンスを検知し、図7に示す処理を行う(S204)。
まず、I/O制御部110はバックエンドドライバ107からのI/Oレスポンスを取得し、取得したI/Oレスポンスを障害検知部111へ転送する(S2041)。
障害検知部111は、I/O制御部110からI/Oレスポンスを入力し、入力したI/Oレスポンスにエラーメッセージが無いかチェックする(S2042)。
I/Oレスポンスにエラーメッセージが含まれておらず、このため、ハードウェア101に障害が発生していない場合(S2043でNO)は、障害検知部111はI/OレスポンスをそのままI/O制御部110に転送し、I/O制御部110がI/OレスポンスをゲストOS104上のフロントエンドドライバ106へ転送する(S2044)。
また、I/O制御部110は保存部112で保存しておいたI/Oリクエストを削除し、処理を終了する(S2045)。
そして、ゲストOS104上のフロントエンドドライバ106はプロセス105に対してI/Oレスポンスを返す(S205)。
一方、I/Oレスポンスにエラーメッセージが含まれており、このため、ハードウェア101に障害が発生している場合(S2043でYES)は、障害検知部111はエラーメッセージを検出したI/Oレスポンスを破棄し、同期部109へ同期指示を出力する(S2046)。
同期部109は図5のS1031において保存部112で保存しておいたI/Oリクエストを保存部112から取得し、また、運用系のゲストOS104の状態を通知する情報を生成する。
これらI/OリクエストとゲストOS104の状態を通知する情報が同期データとなり、同期部109は、同期データをサーバ装置200に送信するとともに、ゲストOS204においてゲストOS104の動作を引き継ぐよう指示する指示メッセージをサーバ装置200に送信する(S2047)。
このように、ゲストOS104へハードウェア101の障害が伝播される直前のゲストOS104の状態がサーバ装置200に通知され、ゲストOS204は、ゲストOS104へハードウェア101の障害が伝播される直前のゲストOS104の状態に同期することができる。
次に、同期部109は同期完了後(同期データ及び指示メッセージの送信後)、運用系サーバ装置100のゲストOS104を強制停止させ、待機系サーバ装置200上のゲストOS204にゲストOS104の動作を引き継がせる(S2048)。
この時点で、同期先の待機系サーバ装置200上のゲストOS204でゲストOS104の動作が再開し、システム全体としてはハードウェアの故障を継承することなく処理が継続される。
このように、本実施の形態によれば、運用系のハードウェアで故障が発生した場合に、運用系のゲストOSへハードウェア障害が伝播する直前の状態に待機系のゲストOSを同期させることができる。
これにより、運用系のハードウェア障害の影響を受けることなく、待機系のゲストOSに運用系のゲストOSで行われてきた動作を正常に引き継がせることができ、処理を円滑に待機系へ切り替えることができる。
また、本実施の形態によれば、管理する同期データは1つでよいという利点がある。
更に、本実施の形態によれば、ゲストOS上にハードウェア故障を検知する機構が不要であるという利点がある。
なお、以上の説明では、I/O制御部110及び障害検知部111は、ホストOSに含まれている、I/O制御部110及び障害検知部111が仮想マシンモニタ102に含まれていてもよい。
また、I/O制御部110がホストOS103に含まれ、障害検知部111が仮想マシンモニタ102に含まれている構成でもよい。
また、I/O制御部110が仮想マシンモニタ102に含まれ、障害検知部111がホストOS103に含まれていている構成でもよい。
以上、本実施の形態では、
ハードウェア異常が発生した場合の二重系システム切替に関し、仮想化環境を用いて運用系ゲストOSの動作状態を待機系サーバ装置と同期しておき、運用系サーバ装置にハードウェア故障が生じた場合に、待機系サーバ装置上にて同期しておいたゲストOSのデータを用いて、動作を再開させる仮想化環境同期システムにおいて、
仮想化環境では、ゲストOS上のハードウェアの処理が仮想マシンモニタを経由して行われることを利用し、ホストOS、または、仮想マシンモニタでハードウェア故障を検知し、そのハードウェア故障情報が該当ゲストOSに通知される前に、ホストOS、または、仮想マシンモニタでハードウェア故障情報通知を止め、
該当ゲストOSがハードウェア故障を検知する前の動作状態を待機系へ同期させ、その同期データを用いて待機系サーバ装置上でゲストOS動作を再開させることで、
該当ゲストOSが継続して動作が可能な仮想化環境同期システムを説明した。
実施の形態2.
実施の形態1の障害検知部111は、I/Oレスポンスに関してエラーメッセージが無いかどうかをチェックしてハードウェア101の障害を検知していた。
これに対し、障害検知部111は、I/Oレスポンスから独立して定期的にハードウェアに故障が無いか、ハードウェアが正常に稼働しているかを検査するようにしてもよい。
また、障害検知部111は、フロントエンドドライバ106からのI/OリクエストがI/O制御部110に到着した段階でハードウェアに故障が無いか、ハードウェアが正常に稼働しているかを検査するようにしてもよい。
そして、ハードウェア故障が検知された場合には、実施の形態1で説明した図7のS2046以降の動作を行うようにする。
ここで、障害検知部111によるハードウェア故障の検査/稼動確認方法としては、ネットワークに関してはping等で疎通確認を実施したり、NICのup/downを検査する方法がある。
また、ディスクに関しては、例えば、S.M.A.R.T.(Self−Monitoring, Analysis and Reporting Technology)情報からディスクの状態を取得して検査する方法がある。
さらに、サーバ装置本体の状態としては、IPMI(Intelligent Platform Management Interface)を用いて、電源、ファン、プロセッサ、メモリ等の故障を検知することも可能である。
なお、障害検知部111が定期的にハードウェア101の故障を検査する場合は、ハードウェア101の障害を検知した時点では保存部112にI/Oリクエストのコピーが格納されていない場合もある。
保存部112にI/Oリクエストのコピーが格納されていない場合は、同期部109は、図7のS2047において、ハードウェア101の障害が検知された時点でのゲストOS104の状態を示す情報を同期データとしてサーバ装置200に出力する。
一方、保存部112にI/Oリクエストのコピーが格納されている場合は、同期部109は、図7のS2047において、ハードウェア101の障害が検知された時点でのゲストOS104の状態を示す情報とともに、I/Oリクエストのコピーを同期データとしてサーバ装置200に出力する。
フロントエンドドライバ106からのI/OリクエストがI/O制御部110に到着した段階で障害検知部111がハードウェア101の故障を検査する場合は、保存部112にI/Oリクエストのコピーが格納されているので、同期部109は、図7のS2047において、ハードウェア101の障害が検知された時点でのゲストOS104の状態を示す情報とともに、I/Oリクエストのコピーを同期データとしてサーバ装置200に出力する。
なお、本実施の形態に係るシステム構成も図1に示す通りである。
このように、本実施の形態によれば、I/Oレスポンスのエラーメッセージ以外によるハードウェア故障検知によっても、運用系のゲストOSへハードウェア障害が伝播する直前の状態に待機系のゲストOSを同期させることができる。
これにより、運用系のハードウェア障害の影響を受けることなく、待機系のゲストOSに運用系のゲストOSで行われてきた動作を正常に引き継がせることができ、処理を円滑に待機系へ切り替えることができる。
また、本実施の形態によれば、I/Oリクエストのあった段階でのハードウェア故障検知が可能であり、実施の形態1に比べて早期にハードウェア故障を検知することができる。
以上、本実施の形態では、
仮想化環境では、ゲストOS上のハードウェアのI/O処理が仮想マシンモニタやホストOSを経由して行われることを利用し、ホストOS、または、仮想マシンモニタでゲストOSからのI/Oリクエストを一時的に保管しておき、
ホストOS、または、仮想マシンモニタでハードウェアのI/Oに関わる障害を検知し、そのハードウェアのI/Oに関わる障害情報が該当ゲストOSに通知される前に、ホストOS、または、仮想マシンモニタでハードウェアのI/Oに関わる障害情報の通知を破棄し、
該当ゲストOSがハードウェアの障害を検知する前の、該当ゲストOSがI/Oリクエストを出した状態の動作状態を待機系へ同期させ、その同期データを用いて待機系サーバ装置上で、故障が発生する直前のゲストOSの動作を再開させることで、該当ゲストOSが継続して動作が可能な仮想化環境同期システムを説明した。
また、本実施の形態では、
ホストOS、または、仮想マシンモニタで検知するハードウェアの障害情報において、
ホストOS、または、仮想マシンモニタでハードウェアの稼動確認を定期的に実施し、それと同時にゲストOSの動作状態を待機系へ同期させ、
ハードウェアが停止している等のハードウェア故障が検知された場合には、直前の同期データを用いて待機系サーバ装置上でゲストOSの動作を再開させることで、該当ゲストOSが継続して動作が可能な仮想化環境同期システムを説明した。
実施の形態3.
実施の形態1では、各サーバ装置に1つのゲストOSが配置されているシステムにおけるハードウェア故障発生から系切替までの流れを示したが、ソフトウェアFTによる同期対象となるゲストOSは複数であってもよい。
つまり、本実施の形態では、運用系のサーバ装置に2以上のゲストOSが配置され、待機系のサーバ装置に運用系の各ゲストOSに対応するゲストOSが配置されているシステムを対象とする。
そして、運用系のサーバ装置のハードウェアに障害が発生した場合に、運用系のサーバ装置の同期部が、ゲストOSごとに、同期データを待機系のサーバ装置に出力する。
待機系のサーバ装置は、同期データに基づき、各ゲストOSを、運用系のハードウェアに障害が発生する直前の運用系のゲストOSの状態に同期させて、運用系のゲストOSの動作を引き継がせる。
本実施の形態では、実施の形態1で示した保存部112をゲストOSごとに用意し、I/Oレスポンスにエラーメッセージが検出された場合に、同期部109がゲストOSごとの保存部112から各ゲストOSのI/Oリクエストを取得し、ゲストOSごとに同期データ及び指示データを出力する。
また、実施の形態2に示したように、定期的な検査により障害検知部111がハードウェア101の障害を検知した場合、または、I/O制御部110にI/Oリクエストが到達した段階で障害検知部111が検査を実施してハードウェア101の障害を検知した場合にも、同期部109がゲストOSごとの保存部112から各ゲストOSのI/Oリクエストを取得し、ゲストOSごとに同期データ及び指示データを出力する。
その他の動作は、実施の形態1及び実施の形態2に示した通りであり、説明を省略する。
このように、本実施の形態によれば、複数のゲストOSを同期対象とした環境でも、運用系のゲストOSへハードウェア障害が伝播する直前の状態に待機系のゲストOSを同期させることができる。
これにより、複数のゲストOSを同期対象とした環境でも、運用系のハードウェア障害の影響を受けることなく、待機系のゲストOSに運用系のゲストOSで行われてきた動作を正常に引き継がせることができ、処理を円滑に待機系へ切り替えることができる。
最後に、実施の形態1〜3に示したサーバ装置100、200のハードウェア構成例について説明する。
図8は、実施の形態1〜3に示すサーバ装置100、200のハードウェア資源の一例を示す図である。
なお、図8の構成は、あくまでもサーバ装置100、200のハードウェア構成の一例を示すものであり、サーバ装置100、200のハードウェア構成は図8に記載の構成に限らず、他の構成であってもよい。
図8において、サーバ装置100、200は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920、スキャナ装置907と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード915、キーボード902、マウス903、FDD904、スキャナ装置907などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
通信ボード915は、図1に示すように、LAN300に接続される。通信ボード915は、LAN以外にも、例えば、インターネット、WAN(ワイドエリアネットワーク)などに接続することが可能である。
磁気ディスク装置920には、仮想マシンモニタ921、ホストOS922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911、仮想マシンモニタ921、ホストOS922により実行される。
また、仮想マシンモニタ921自身がホストOS922の機能を含む場合や、ホストOS922内に仮想マシンモニタ921が存在する場合もある。
ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
サーバ装置100、200の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムにより仮想マシンモニタ921、ホストOS922が起動される。
プログラム群923には、実施の形態1〜3に示される同期部109、I/O制御部110及び障害検知部111を実現するプログラムが含まれる。
更に、ファイル群924には、実施の形態1〜3の説明において、「〜の判断」、「〜の検査」、「〜の検出」、「〜の同期」、「〜のチェック」、「〜の制御」、「〜の設定」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜3で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態1〜3の説明において「〜部」として説明しているものは「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1〜3の「〜部」としてコンピュータを機能させるものである。
あるいは、実施の形態1〜3の「〜部」の手順や方法をコンピュータに実行させるものである。
また、実施の形態1〜3で説明したサーバ装置100、200の動作を例えばデータ処理方法として把握することも可能である。
このように、実施の形態1〜3に示すサーバ装置100、200は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
100 サーバ装置、101 ハードウェア、102 仮想マシンモニタ、103 ホストOS、104 ゲストOS、105 プロセス、106 フロントエンドドライバ、107 バックエンドドライバ、108 実デバイスドライバ、109 同期部、110 I/O制御部、111 障害検知部、112 保存部、200 サーバ装置、201 ハードウェア、202 仮想マシンモニタ、203 ホストOS、204 ゲストOS、300 LAN、1011 CPU、1012 メモリ、1013 ディスク、1014 NIC。

Claims (8)

  1. ハードウェアと、前記ハードウェアを用いて実現される仮想マシン上で動作し、前記ハードウェアへのリクエストを発行する第1のゲストOS(Operating System)とを有し、
    前記第1のゲストOSと同じ動作を行う第2のゲストOSを有する外部装置に接続されている計算機装置であって、
    前記第1のゲストOSにより発行されたリクエストのコピーを所定の記憶領域に格納するリクエスト管理部と、
    前記リクエストに対する前記ハードウェアからのレスポンスが前記第1のゲストOSに届く前に前記ハードウェアに障害が発生しているか否かを判断し、前記ハードウェアに障害が発生している場合に前記レスポンスが前記第1のゲストOSに届かないように制御する障害検知部と、
    前記障害検知部により前記ハードウェアの障害が検知された場合に、前記記憶領域に格納されている前記リクエストのコピーと前記ハードウェアの障害が検知された時点での前記第1のゲストOSの状態を示す情報を前記外部装置に出力し、前記第1のゲストOSが行っていた動作を前記第2のゲストOSにて引き継ぐよう指示する指示メッセージを前記外部装置に出力する引き継ぎ制御部とを有することを特徴とする計算機装置。
  2. 前記計算機装置は、更に、
    前記ハードウェアを用いて仮想マシンを実現するホストOSと仮想マシンモニタとを有し、
    前記リクエスト管理部と、前記障害検知部と、前記引き継ぎ制御部は、それぞれ、
    前記ホストOS及び前記仮想マシンモニタの少なくともいずれかにおいて動作することを特徴とする請求項1に記載の計算機装置。
  3. 前記障害検知部は、
    前記リクエストに対する前記ハードウェアからのレスポンスが前記第1のゲストOSに届く前に前記レスポンスを入力し、入力した前記レスポンスを検査し、前記レスポンスにおいてエラーメッセージが存在する場合に、前記ハードウェアに障害が発生していると判断し、前記レスポンスが前記第1のゲストOSに届かないように制御することを特徴とする請求項1又は2に記載の計算機装置。
  4. 前記計算機装置は、更に、
    前記ハードウェアを用いて仮想マシンを実現するホストOSを有し、
    前記ホストOSは、
    前記第1のゲストOSに含まれるフロントエンドドライバから出力された前記ハードウェアへのリクエストを入力し、前記ハードウェアからのレスポンスを前記フロントエンドドライバに対して出力するバックエンドドライバを有し、
    前記リクエスト管理部は、
    前記フロントエンドドライバから前記リクエストを入力し、入力した前記リクエストのコピーを前記記憶領域に格納し、前記リクエストを前記バックエンドドライバに出力し、
    前記障害検知部は、
    前記バックエンドドライバから出力された前記レスポンスを入力し、入力した前記レスポンスを検査し、前記レスポンスにエラーメッセージが存在している場合に、前記レスポンスを破棄し、前記レスポンスにエラーメッセージが存在していない場合に、前記レスポンスを前記フロントエンドドライバに対して出力することを特徴とする請求項3に記載の計算機装置。
  5. 前記障害検知部は、
    前記リクエストに対する前記ハードウェアからのレスポンスが前記第1のゲストOSに届く前に前記ハードウェアを検査し、前記ハードウェアに障害が発生しているか否かを判断し、前記ハードウェアに障害が発生している場合に前記レスポンスが前記第1のゲストOSに届かないように制御することを特徴とする請求項1〜4のいずれかに記載の計算機装置。
  6. 前記障害検知部は、
    一定周期にて、前記ハードウェアを検査し、前記ハードウェアに障害が発生しているか否かを判断し、
    前記引き継ぎ制御部は、
    前記障害検知部により前記ハードウェアの障害が検知された際に前記記憶領域に前記リクエストのコピーが格納されている場合は、前記記憶領域に格納されている前記リクエストのコピーと前記ハードウェアの障害が検知された時点での前記第1のゲストOSの状態を示す情報を前記外部装置に出力し、
    前記障害検知部により前記ハードウェアの障害が検知された際に前記記憶領域に前記リクエストのコピーが格納されていない場合は、前記ハードウェアの障害が検知された時点での前記第1のゲストOSの状態を示す情報を前記外部装置に出力することを特徴とする請求項1〜5のいずれかに記載の計算機装置。
  7. 前記計算機装置は、
    前記仮想マシン上で動作する複数の第1のゲストOSを有し、
    前記複数の第1のゲストOSに対応させて複数の第2のゲストOSを有する外部装置に接続され、
    前記リクエスト管理部は、
    各々の第1のゲストOSにより発行されたリクエストのコピーを各々の第1のゲストOSに割り当てられている記憶領域に格納し、
    前記引き継ぎ制御部は、
    前記障害検知部により前記ハードウェアの障害が検知された場合に、第1のゲストOSごとに、記憶領域に格納されているリクエストのコピーと前記ハードウェアの障害が検知された時点での第1のゲストOSの状態を示す情報を前記外部装置に出力し、第1のゲストOSが行っていた動作を対応する第2のゲストOSにて引き継ぐよう指示する指示メッセージを前記外部装置に出力することを特徴とする請求項1〜6のいずれかに記載の計算機装置。
  8. ハードウェアと、前記ハードウェアを用いて実現される仮想マシン上で動作し、前記ハードウェアへのリクエストを発行する第1のゲストOS(Operating System)とを有し、
    前記第1のゲストOSと同じ動作を行う第2のゲストOSを有する外部装置に接続されている計算機装置に、
    前記第1のゲストOSにより発行されたリクエストのコピーを所定の記憶領域に格納させ、
    前記リクエストに対する前記ハードウェアからのレスポンスが前記第1のゲストOSに届く前に前記ハードウェアに障害が発生しているか否かを判断させ、前記ハードウェアに障害が発生している場合に前記レスポンスが前記第1のゲストOSに届かないように制御させ、
    前記ハードウェアの障害が検知された場合に、前記記憶領域に格納されている前記リクエストのコピーと前記ハードウェアの障害が検知された時点での前記第1のゲストOSの状態を示す情報を前記外部装置に対して出力させ、前記第1のゲストOSが行っていた動作を前記第2のゲストOSにて引き継ぐよう指示する指示メッセージを前記外部装置に対して出力させることを特徴とするプログラム。
JP2012545548A 2010-11-22 2010-11-22 計算機装置及びプログラム Expired - Fee Related JP5335150B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/070812 WO2012070102A1 (ja) 2010-11-22 2010-11-22 計算機装置及びプログラム

Publications (2)

Publication Number Publication Date
JP5335150B2 true JP5335150B2 (ja) 2013-11-06
JPWO2012070102A1 JPWO2012070102A1 (ja) 2014-05-19

Family

ID=46145479

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012545548A Expired - Fee Related JP5335150B2 (ja) 2010-11-22 2010-11-22 計算機装置及びプログラム

Country Status (2)

Country Link
JP (1) JP5335150B2 (ja)
WO (1) WO2012070102A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200233702A1 (en) * 2017-03-21 2020-07-23 Mitsubishi Electric Corporation Control apparatus and computer readable medium
JP7056460B2 (ja) * 2018-08-10 2022-04-19 横河電機株式会社 制御システム及び制御装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007148839A (ja) * 2005-11-29 2007-06-14 Hitachi Ltd 障害回復方法
JP2008107896A (ja) * 2006-10-23 2008-05-08 Nec Corp 物理資源制御管理システム、物理資源制御管理方法および物理資源制御管理用プログラム
JP2009080692A (ja) * 2007-09-26 2009-04-16 Toshiba Corp 仮想計算機システム及び同システムにおけるサービス引き継ぎ制御方法
JP2009245216A (ja) * 2008-03-31 2009-10-22 Toshiba Corp 情報処理装置および障害回復方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007148839A (ja) * 2005-11-29 2007-06-14 Hitachi Ltd 障害回復方法
JP2008107896A (ja) * 2006-10-23 2008-05-08 Nec Corp 物理資源制御管理システム、物理資源制御管理方法および物理資源制御管理用プログラム
JP2009080692A (ja) * 2007-09-26 2009-04-16 Toshiba Corp 仮想計算機システム及び同システムにおけるサービス引き継ぎ制御方法
JP2009245216A (ja) * 2008-03-31 2009-10-22 Toshiba Corp 情報処理装置および障害回復方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNG201000450001; 田村芳明、外3名: '「Kemari:仮想マシン間の同期による耐故障クラスタリング」' 情報処理学会論文誌 コンピューティングシステム Vol.3 No.1, 20100415, p.13-24, 社団法人情報処理学会 *
JPN6013031090; 田村芳明、外3名: '「Kemari:仮想マシン間の同期による耐故障クラスタリング」' 情報処理学会論文誌 コンピューティングシステム Vol.3 No.1, 20100415, p.13-24, 社団法人情報処理学会 *

Also Published As

Publication number Publication date
JPWO2012070102A1 (ja) 2014-05-19
WO2012070102A1 (ja) 2012-05-31

Similar Documents

Publication Publication Date Title
US9582373B2 (en) Methods and systems to hot-swap a virtual machine
JP5851503B2 (ja) 高可用性仮想機械環境におけるアプリケーションの高可用性の提供
US7496786B2 (en) Systems and methods for maintaining lock step operation
US8984330B2 (en) Fault-tolerant replication architecture
US20060259815A1 (en) Systems and methods for ensuring high availability
JP2012221321A (ja) フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラム
US10929234B2 (en) Application fault tolerance via battery-backed replication of volatile state
US7530000B2 (en) Early detection of storage device degradation
US20160342490A1 (en) Method and apparatus to virtualize remote copy pair in three data center configuration
US10402264B2 (en) Packet-aware fault-tolerance method and system of virtual machines applied to cloud service, computer readable record medium and computer program product
US9063854B1 (en) Systems and methods for cluster raid data consistency
US9798615B2 (en) System and method for providing a RAID plus copy model for a storage network
US9195528B1 (en) Systems and methods for managing failover clusters
JP5440073B2 (ja) 情報処理装置,情報処理装置の制御方法および制御プログラム
JP5335150B2 (ja) 計算機装置及びプログラム
US11960366B2 (en) Live migrating virtual machines to a target host upon fatal memory errors
JP5880608B2 (ja) フォールトトレラントサーバ
JP2011100300A (ja) 計算機装置及び情報処理方法及びプログラム
JP5832408B2 (ja) 仮想計算機システム及びその制御方法
JP2017151511A (ja) 情報処理装置、動作ログ取得方法および動作ログ取得プログラム
US20230297454A1 (en) Memory Error Prevention By Proactive Memory Poison Recovery
JP2016076152A (ja) エラー検出システム、エラー検出方法およびエラー検出プログラム
KR20150049349A (ko) 펌웨어 관리 장치 및 방법
JP2009211620A (ja) 仮想環境複製方法とシステムおよびプログラム
WO2014076765A1 (ja) データ処理装置及びデータ処理方法及びプログラム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130702

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130730

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees