以下に添付図面を参照して、この発明に係る情報処理装置および情報処理システムの実施例を詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
以下の実施例では、実施例1に係るクライアント・サーバシステムの構成、サーバの構成およびサーバの処理の流れを順に説明し、最後に実施例1による効果を説明する。なお、以下では、会計事務所内にファイアウォール、サーバおよびクライアントPCが設置されており、会計事務所外でユーザがモバイル端末を利用している場合を例として説明する。
[実施例1に係るクライアント・サーバシステムの構成]
まず、図1を用いて、第1の実施形態に係るクライアント・サーバシステムの構成について説明する。図1は、第1の実施形態に係るクライアント・サーバシステムの構成を示すブロック図である。
図1に例示するように、実施例1に係るクライアント・サーバシステム100は、サーバ10と、複数のクライアントPC(Personal Computer)20A〜20Cと、ファイアウォール30とモバイル端末40と、インターネット50とで構成される。また、クライアント・サーバシステム100では、サーバ10とモバイル端末40とは、ファイアウォール30およびインターネット50を介して接続される。なお、クライアントPC20A〜20Cについて、特に区別無く説明する場合には、クライアントPC20と記載する。
サーバ10は、会計事務所内に設置されたサーバ装置であり、同会計事務所内に設置されたクライアントPC20A〜20Cに関する情報を管理している。また、図1の例では、サーバ10上において、クライアントPC20を仮想的に構築した仮想クライアントPC10aを動作させており、この仮想クライアントPC10aをモバイル端末40と接続される接続先端末とする。なお、図1の例では、一つの仮想クライアントPCを動作させている例を示しているが、複数の仮想クライアントPCを動作させてもよい。また、以下では、仮想クライアントPCのことを「仮想PC」と記載する。
各クライアントPC20A〜20Cは、会計事務所内に設置されたPCであり、例えば、デスクトップ型PC等の情報処理装置であって、ユーザが会計事務所内で使用する端末である。また、この各クライアントPC20A〜20Cは、ファイアウォール30が認証したモバイル端末40とリモート接続される端末である。
ファイアウォール30は、会計事務所内のネットワークに対する外部からの不正な侵入を防ぐ機能を有するソフトウェアを搭載した装置である。このファイアウォール30は、認証に成功したモバイル端末10のみリモート接続を許可することで、安全性を確保する。
モバイル端末40は、例えば、携帯電話機、スマートフォン、PDA(Personal Digital Assistant)、タブレット型PC、ノート型PC等の情報処理装置であり、ユーザが会計事務所外に持ち運んで使用する端末である。モバイル端末40は、サーバ10へアクセスするURLを事前に保持しており、該URLを用いてサーバ10にアクセスし、ID、パスワードを入力して、ファイアウォール30に認証要求を行うとともに、クライアントPC20とのリモート接続を要求する。そして、モバイル端末40では、クライアントPC20とのリモート接続が確立した後、リモートアクセスすることによって該クライアントPC20が目の前にある時と同様に直接操作することができる。
[サーバ10の構成]
まず、図2を用いて、図1に示したサーバ10の構成を説明する。図2は、実施例1に係るサーバ10の構成を示すブロック図である。図2に示すように、このサーバ10は、通信部11、制御部12、SSD(Solid State Drive)13およびHDD14を備える。以下にこれらの各部の処理を説明する。なお、図1の例では、通信部11、制御部12、SSD13およびHDD14を一つずつ備える場合を例示しているが、実際は複数備えていてもよい。
通信部11は、インターネット50を介して接続されるモバイル端末40との間でやり取りをする各種情報に関する通信を制御する。例えば、通信部11は、クライアントPC20から各種設定に関する情報を受信したり、ファイアウォール30からユーザIDやパスワードの問い合わせを受信したりする。
SSD13は、HDD14と比較して、記憶容量が小さいが、動作速度が速く、高価な記憶デバイスである。また、SSD13は、仮想マシン環境の記憶領域として割り当てられる記憶部であり、複数の仮想PCシステム格納部13a、13bを有する。各仮想PCシステム格納部13a、13bは、仮想PCの資源情報を示すリソースと、仮想マシンを動作させるための情報とを記憶する。具体的には、各仮想PCシステム格納部13a、13bは、各仮想PCの資源情報を示す「CPU数」、「メモリ量」および「ディスク容量」などのリソースや、仮想マシンのOSを動作させるための様々な情報を記憶する。
ここで、実施例1に係るサーバ10では、仮想PCに対してHDD14よりも高速なSSD13を割り当てるため、仮想PCを高速に動作させることが可能となる。つまり、高速なSSD13を仮想PCの提供サービス向けに最適化することによって、高いパフォーマンスを確保する。
HDD14は、SSD13と比較して、記憶容量が大きいが、動作速度が遅く、安価な記憶デバイスである。また、HDD14は、稼働中の仮想PCのイメージを記憶する記憶部であり、復元ポイント格納部14a、障害ログ格納部14b、障害判定用テーブル格納部14cを有する。
ここで、仮想PCのイメージバックアップには、大容量を必要とするため、高価で容量が小さいSSD13に記憶させた場合には、コスト大となり、効率も悪い。このため、安価で容量が大きいHDD14に仮想PCのイメージバックアップを記憶させることで、HDD14の長所を最大限活かし、効率よく仮想PCを運用することができる。
復元ポイント格納部14aは、仮想PCに関してイメージを定期的に復元ポイントとして記憶する。ここで、復元ポイント格納部14aにイメージが記憶されるタイミングについては、任意に設定することが可能である。例えば、復元ポイントとして、毎日定刻にバックアップするように設定された場合には、一日前、二日前、・・・という復元ポイントが格納される。このため、任意日のイメージを選択し復元することにより所望する状態へ復元することが可能となる。なお、復元ポイントは、一定数になる古いイメージから削除され、常に最新のイメージが格納されることを保障する。また、復元ポイントとして、出荷時のイメージも設けられ、いつでも出荷時の状態に復元することが可能である。
障害ログ格納部14bは、仮想PCの通常動作を示すログである通常ログ、仮想PCが再起動したことを示すログである再起動ログ、仮想PCが正常に動作している信号であるハートビートのログであるハートビートログ、SMART(Self-Monitoring Analysis and Reporting Technology)情報のログであるSSD障害ログ等を記憶する。ここで、障害ログ格納部14bに格納されている各情報について、図3〜図6を用いて説明するが、図3〜図6の例では、動作している仮想PCが仮想PC1、2の2台である場合を例として説明する。
まず、図3の例を用いて、障害ログ格納部14bに記憶される通常ログデータの一例を説明する。図3は、障害ログ格納部に記憶される通常ログデータの一例を示す図である。図4に例示するように、障害ログ格納部14bは、通常ログとして、仮想PC1および仮想PC2の起動した時間の情報と、シャットダウンした時間の情報とを記憶する。具体的な例を挙げて説明すると、例えば、図3の例では、障害ログ格納部14bは、仮想PC1の起動した日時として「20121207 09:12:24」を記憶する。これは、仮想PC1が起動されたのが、2012年12月7日の9時12分24秒であったことを意味する。
次に、図4の例を用いて、障害ログ格納部14bに記憶される再起動ログデータについて説明する。図4は、障害ログ格納部14bに記憶される再起動ログデータの一例を示す図である。図4に例示するように、障害ログ格納部14bは、再起動ログとして、仮想PC1および仮想PC2の再起動した時間の情報を記憶する。具体的な例を挙げて説明すると、例えば、図4の例では、仮想PC1の再起動した日時として「20121215 15:31:29」を記憶する。これは、仮想PC1が再起動されたのが、2012年12月15日の15時31分29秒であったことを意味する。
次に、図5の例を用いて、障害ログ格納部14bに記憶されるハートビートログデータについて説明する。図5は、障害ログ格納部14bに記憶されるハートビートログデータの一例を示す図である。図5に例示するように、障害ログ格納部14bは、1分ごとの「通信時刻」に対応付けて、仮想PCが正常に動作している信号であるハートビートを受信したか否かを示すログ情報を記憶する。
例えば、図5の例では、障害ログ格納部14bは、通信時刻「20121207 09:10:00」に対応付けて、ハートビートを受信したことを示す「○」を記憶する。これは、2012年12月7日の9時10分00秒の時点において、仮想PC1が正常に動作しているハートビートを受信したことを意味する。
次に、図6の例を用いて、障害ログ格納部14bに記憶されるSSD障害ログデータについて説明する。図6は、障害ログ格納部14bに記憶されるSSD障害ログデータの一例を示す図である。図6に例示するように、障害ログ格納部14bは、定期的に行われる検知の時刻である「検知時刻」に対応付けて、SMART情報のうち、「予約領域残量」および「メディア消耗指数」を記憶する。ここで予約領域残量とは、不良セクタがあった場合に、データを移動させる特別に予約した記憶領域の残量を示す値であり、また、メディア消耗指数とは、メディアの消耗度合いを示す値である。
例えば、図6の例では、障害ログ格納部14bは、検知時刻「20121215 17:05:00」に対応付けて、予約領域残量「90%」およびメディア消耗指数「80%」を記憶する。これは、2012年12月15日の17時5分00秒の時点において、SMART情報を取得し、SMART情報に含まれる情報が参照されて、予約残量領域「90%」、メディア消耗指数「80%」が格納されたことを意味する。
障害判定用テーブル格納部14cは、仮想PCに障害が発生したか否かを判定するためのテーブルを記憶する。例えば、図7に例示するように、障害判定用テーブル格納部14cは、「仮想PC起動数」に対応付けて、障害が発生していないと判定されるCPU使用率の最小値(MIN)および最大値(MAX)を示す「CPU使用率」と、障害が発生していないと判定されるメモリ使用量の最小値および最大値を示す「メモリ使用量」とを対応付けて記憶する。図7は、障害判定用テーブル格納部に記憶される障害判定用テーブルの一例を示す図である。
例えば、図7の例では、障害判定用テーブル格納部14cは、仮想PC起動数「1」に対応付けて、CPU使用率の最小値「15%」および最大値「20%」と、メモリ使用量の最小値「1200MB」および最大値「1450MB」とを記憶する。これは、仮想PCの起動数が1台である場合には、CPU使用率が15%〜20%の範囲であって、かつ、メモリ使用量が1200MB〜1450MBの範囲である場合には、仮想PCに障害がないものと判定され、一方、CPU使用率が15%未満または20%を超える場合、もしくは、メモリ使用量が1200MB未満または1450MBを超える場合には、仮想PCに障害が発生したものと判定することを意味する。
制御部12は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては、格納部12a、検出部12b、復元部12cを有する。
格納部12aは、稼働中の仮想PC10aのイメージをHDD14に格納する。具体的には、格納部12aは、ユーザにより設定されたバックアップ設定時刻になると、仮想PCが停止中であるか否かを判定し、仮想PCが停止中であると判定した場合には、仮想PCのイメージとしてバックアップを実行し、イメージを復元ポイントとしてHDD14の復元ポイント格納部14aに格納する。
また、格納部12aは、仮想PCが停止中でないと判定した場合には、仮想PCを強制シャットダウンし、仮想PCのイメージバックアップを実行することで、イメージを復元ポイントとしてHDD14の復元ポイント格納部14aに格納し、仮想PCの再起動を実行する。
検出部12bは、仮想PC10aの稼働状況を取得し、該稼動状況を用いて仮想PC10aの障害を検出する。具体的には、検出部12bは、ホストシステムとのハートビートによる死活監視を行い、仮想PCの障害を検出する。
そして、検出部12bは、ハートビートが無い場合に、仮想化システム上で観測される仮想PCのシステム稼動状況(CPU使用率やメモリ使用量)を取得するとともに、障害判定用テーブル格納部14cに格納された障害判定テーブルを読み出し、障害判定テーブルの範囲を超過したか否かを判定する。例えば、検出部12bは、仮想PCの起動数が2台である場合には、CPU使用率が30%〜40%の範囲であって、かつ、メモリ使用量が2400MB〜2900MBの範囲であるか否かを判定する。この結果、検出部12bは、障害判定テーブルの範囲を超過したと判定した場合には、仮想PCに障害が発生した旨を復元部12cに通知する。
また、検出部12bは、サーバ10内に設けられた電圧センサや温度センサなどの各種センサ(図示せず)により検知された電圧や温度の情報を収集し、収集した情報からハードウェア上の障害(例えば、SSD13の電源異常や温度異常)を検出する。そして、検出部12bは、ハードウェア上の障害がある旨を復元部12cに通知する。
また、検出部12bは、再起動を行ったにもかかわらず、ハートビートがなく、SSDのハードウェア上の障害で無い場合には、SSD13のSMART情報を収集して、SSD13の寿命を算出し、算出したSSD13の寿命が閾値を超えるか判定する。そして、検出部12bは、算出したSSD13の寿命が閾値を超えると判定した場合には、SSD13の寿命が近い旨を復元部12cに通知する。また、検出部12bは、算出したSSD13の寿命が閾値を超えていないと判定した場合には、ファイルシステム異常であり復元が必要である旨を復元部12cに通知する。
このように、サーバ10では、ホストシステムから仮想PCの死活監視及び仮想PCのシステム稼働状況を監視することにより、仮想PCの障害検知することができ、万一の障害発生時においても、仮想PCの復元処理を適切に実施することで稼働し続けることができる。
復元部12cは、検出部12bによって仮想PCの障害が検出された場合には、HDD14に記憶された仮想PC10aのイメージを読み出し、稼働中の仮想PC10aを復元する。例えば、復元部12cは、検出部12bから仮想PCに障害が発生した旨の通知を受信すると、仮想PCを強制的に再起動して仮想PCの復旧を行う。
また、復元部12cは、検出部12bからハードウェア上の障害がある旨の通知を受信すると、仮想PCを強制的に再起動して仮想PCの復旧を試みる。そして、復元部12cは、再起動が出来ない場合には、「ハードウェア障害」である旨のメッセージを通知するとともに、ハードウェアの点検作業または交換作業を促すメッセージをクライアントPC20へ通知する。
また、復元部12cは、検出部12bからSSD13の寿命が近い旨の通知を受信すると、「ハードウェア障害」である旨のメッセージを通知するとともに、SSDの予防交換作業を促すメッセージをクライアントPC20へ通知する。
また、復元部12cは、検出部12bからファイルシステム異常であり復元が必要である旨の通知を受信すると、クライアントPC20へ「ファイルシステム異常」である旨のメッセージを通知するとともに、仮想PCの復元作業の試行を促すメッセージを通知する。そして、サーバ10は、クライアントPC20から復元ポイント(例えば、出荷時、一日前、二日前など)の選択を受け付けて、選択された復元ポイントのイメージを用いて、仮想PCの復元を実行する。
上記したように、実施例1に係るサーバ10のホストシステム上で稼動する仮想化システムにおいて複数の仮想PCを構築・管理する場合には、仮想PCに対してSDD14を割り当てることができる。なお、SSD13が1台に対して複数の仮想PC14を割り当てることも可能である。また、サーバ10では、仮想PCのイメージを定期的に復元ポイントとしてHDD14に格納し、仮想PCの障害発生時には復元ポイントから復元することができる。
ここで、図8を用いて、仮想PCのバックアップ処理及び復元処理の概要について説明する。図8は、仮想PCのバックアップ処理及び復元処理の概要について説明する図である。図8の例では、4台の仮想PC1〜4に対して2台のSSD13A、13Bのリソースを割り当てている場合を説明する。具体的には、仮想PC1、2に対してSSD13Aを割り当て、仮想PC3、4に対してSSD13Bを割り当てる。
図8に示すように、サーバ10では、SSD13A、13Bにおける仮想PCのイメージを定期的に仮想PC復元ポイントとしてHDD14に格納する。このため、HDD14、SSD13A、13Bという構造の異なる記憶装置を同一の物理マシン上に構成して、さらに、複数の仮想PCをSSD13A、13B上で稼動させつつも、復元用のイメージをHDD14に保存することで、少ない容量のSSD13A、13Bで、仮想PCを安定して稼動させることができる。
また、復元ポイントとして毎日定刻にバックアップする場合には、一日前、二日前、・・・という復元ポイントがHDD14に格納されているため、任意日のイメージを選択し復元することにより所望する状態へ復元することが可能である。復元ポイントは、一定数になると古いイメージから削除され、常に最新のイメージが格納されることを保証する。このため、仮想PCのイメージを定期的にバックアップし、複数のイメージをHDDに格納することにより、任意日時のシステム環境へ復元することができる。
また、検出部12bは、上記したように、ハートビートの有無などに応じて、仮想PCの障害を検出する。そして、例えば、SSD13AまたはSSD13Bに障害が発生した場合には、HDD14に記憶された仮想PCの復元ポイントから復元を行う。物理マシンにはSSD13のハードウェア上の障害発生を検知する装置である検出部12bを搭載することによって、ハードウェア障害発生時においても仮想PC復元が可能となる。仮にSSD交換による復元が必要な場合においても、初期状態のSSDを接続するだけで自動的にHDDから復元用の最新イメージにて、仮想PC稼働環境を構成することができる。また、SSD13A、13BとHDD14との容量に違いや、動作速度の違いなど、記憶装置の長所を最大限に活かして、効率よく仮想PCを運用しつつ、障害発生時の復元処理を最適に実施することができる。
また、実施例1に係るサーバ10は、マザーボードを複数搭載し、冗長化させることで、信頼性とパフォーマンスを向上させることができる。ここで、サーバ10は、通常時には、仮想PCを稼働させるSSD13が個々のマザーボードに接続されて高いパフォーマンスを発揮する。この時、バックアップされた復元ポイントは、マザーボード間に構築されたネットワークによって相互に複製される。
仮に、マザーボードに障害が発生した場合においては、対向するマザーボードにSSD13に接続を切り替えることにより、クライアントに対してサービスを継続して提供することができる。SSD13も同時に障害発生している場合においても複製された復元ポイントから仮想PCを復元することができるので、対抗機において単独の復元を実現する。
クライアントPC20は、接続先マザーボードを変更することによって、仮想PCを継続して使用することができる。なお、接続先管理サーバを設置した場合には、自動で接続先の切り換えが可能であり、クライアントPC20は仮想PCの所在を関知する必要がなくなる。
ここで、図9を用いて、複数のサーバサブユニット10A、10Bによる冗長化構成について説明する。図9は、マザーボード15A、15Bを内蔵したサーバサブユニットによる冗長化構成について説明する図である。図9に示すように、サーバ10は、対向する2台のサーバサブユニット10A、10Bとそれぞれ、マザーボード15A、15Bを有する。通常時においては、マザーボード15Aでは、SSD13aおよびSSD13cと接続され、仮想PC1/2および仮想PC5/6を稼動させている。また、マザーボード15Bでは、SSD13aおよびSSD13cと接続され、仮想PC3/4および仮想PC7/8を稼動させている。
そして、いずれかのマザーボードに障害が発生した場合には、障害が発生したマザーボードと接続するSSDの接続を対向するマザーボードに切り替え、複製された復元ポイントから仮想PCを復元し、仮想PCを継続して稼動する。
ここで、図10を用いて、障害が発生した場合に、対向するマザーボードに接続を切り替える処理の概要を説明する。図10は、障害が発生した場合に、対向するマザーボードに接続を切り替える処理の概要を説明する図である。例えば、図10の例では、通常時は、SSD13Aは、マザーボード15Aに接続して仮想PC1、2を稼動し、復元ポイントをHDD14Aへ作成する。
そして、マザーボード15Aが仮想PC1、2の復元ポイントは、ネットワーク経由でHDD14AからHDD14Bへコピーされることで、バックアップされた復元ポイントが複製される。また、マザーボード15Aに障害が発生した時点において、SSD13Aをマザーボード15Bに接続して仮想PC1、2を稼動させる。この例では1つのサーバに複数のマザーボードを冗長化構成した例を述べるが、サーバサブユニット機能を独立させて1台のサーバとして構成した上で複数台構成とすることもでき、さらに各サーバを遠隔地の拠点に配備し拠点間ネットワークにて接続することで1拠点での商用電源障害、災害発生時などに対しても、対応するサーバにて複製された復元ポイントから仮想PCを稼働されることができる。この例で示した複数のマザーボードを冗長化構成したサーバを各拠点の配備することにより冗長性を向上できる。
[クライアントPC20に表示される画面例]
次に、クライアントPC20に表示される画面表示例について図11〜図14を用いて説明する。まず、図11を用いて、仮想PCの動作状況を確認するための画面例について説明する。図11は、動作状況を確認するための画面例を示す図である。クライアントPC20では、ユーザの操作により、仮想PCの動作状況を確認するための画面表示要求を受け付けると、図11に例示するような仮想PCの動作状況が表示される。
図11に例示するように、仮想PCを一意に識別する識別子「VM」と、仮想PCの管理上の名称である「管理名称」と、仮想PCに割り当てられたCPU数を示す「CPU」と、仮想PCに割り当てられたSSD13の記憶容量を示す「メモリ」と、仮想PCの動作状況を示す「動作状況」とを表示する。また、表示された仮想PC(VM)のうち、いずれかの仮想PCが選択された後、起動を指示する「起動」、再起動を指示する「再起動」、シャットダウンを指示する「シャットダウン」または削除を指示する「削除」がユーザの操作により指示されると、指示に従って、選択された仮想PCを起動、再起動、シャットダウンまたは削除する。
次に、図12を用いて、仮想PCの退避状況を示す一覧の画面例について説明する。図12は、退避一覧を確認するための画面例を示す図である。図12に示すように、「ID」と、「管理名称」と、仮想PCのバックアップを行った日時を示す「退避日時」と、バックアップの属性を示す「属性」とを表示する。この属性は、出荷時における復元ポイントである場合には「出荷」、自動設定によりバックアップされたものには「自動」、手動操作によりバックアップされたものには「手動」と表示される。また、表示された仮想PC(VM)のうち、いずれかの仮想PCが選択された後、退避内容の詳細の確認を指示する「確認」、復元を指示する「復元」、「削除」がユーザの操作により指示されると、指示に従って、選択された仮想PCの確認、復元または削除を行う(なお、ここで退避とはバックアップと同義である)。
次に、図13を用いて、仮想PCの自動退避設定を行うための画面例について説明する。図13は、自動退避について設定するための画面例を示す図である。図13に示すように、退避するタイミングを設定する「退避タイミング」と、退避対象の仮想PCを選択する「退避対象」と、退避するスケジュールを設定する「退避スケジュール」とを表示する。例えば、図13の例では、仮想PC「VM1:VWORKAZ」に対して、月曜日、火曜日、水曜日、木曜日および金曜日の2:00に自動でシャットダウン時に退避を実行するように設定されている。設定を行った後「登録」がユーザの操作により指示されることで、登録を完了し、「キャンセル」が指示されると、設定した情報をキャンセルする。
次に、図14を用いて、仮想PCの復元を実行するための画面例について説明する。図14は、復元を実行する際に表示される画面例を示す図である。図14に示すように、復元元の仮想PCのIDを示す「復元元ID」と、復元元の仮想PCの「管理名称」と、「退避日時」と、上書き復元するかコピー復元するかを設定する「復元方法」と、復元先の仮想PCのIDを示す「復元先ID」とを表示する。復元方法について、上書き復元すると、元の仮想PCのデータが上書きされ、コピー復元すると、元の仮想PCのデータを残し、新しく仮想PCのデータを復元する。また、設定を行った後「復元実行」がユーザの操作により指示されることで、復元を実行し、「キャンセル」が指示されると、設定した情報をキャンセルする。
[サーバ10による処理]
次に、図15〜図17を用いて、実施例1に係るサーバ10による処理を説明する。図15は、サーバによる監視処理の流れを示すフローチャートである。図16は、サーバによるバックアップ実行処理の流れを示すフローチャートである。図17は、サーバによる復元処理の流れを示すフローチャートである。
まず、図15を用いてサーバによる監視処理の流れを説明する。図15に示すように、サーバ10では、ハートビートがあったか否かを判定する(ステップS101)。この結果、サーバ10は、ハートビートがあったと判定した場合には(ステップS101肯定)、ハートビートのログを障害ログ格納部14bに格納し、ステップS101の処理に戻る。つまり、サーバ10は、ハートビートの通信記録を定期的にHDD14の障害ログ格納部14bへログとして保存する。
また、サーバ10は、ハートビートがなかったと判定した場合には(ステップS101否定)、ハートビートのログを障害ログ格納部14bに格納し、SSD13のハードウェア障害発生であるか判定する(ステップS102)。例えば、サーバ10は、ハードウェア上の障害として、SSD13の電源異常などの障害が発生しているかを判定する。この結果、サーバ10は、SSD13のハードウェア障害発生であると判定した場合には(ステップS102肯定)、ステップS106の処理に移る。
また、サーバ10は、SSD13のハードウェア障害発生でないと判定した場合には(ステップS102否定)、障害ログ格納部14bを参照し、再起動ログに直前の記録があるかを判定する(ステップS103)。この結果、サーバ10は、再起動ログに直前の記録があると判定した場合(ステップS103肯定)、すなわち、再起動後のハートビートが無い場合には、ステップS109の処理に移る。
また、サーバ10は、再起動ログに直前の記録がないと判定した場合には(ステップS103否定)、障害判定用テーブル格納部14cに格納された障害判定テーブルを読み出し、障害判定テーブルの範囲外か否かを判定する(ステップS104)。例えば、サーバ10は、仮想PCの起動数が1台である場合には、CPU使用率が15%〜20%の範囲であって、かつ、メモリ使用量が1200MB〜1450MBの範囲であるか否かを判定する。
この結果、サーバ10は、障害判定テーブルの範囲外と判定した場合には(ステップS104肯定)、ステップS106の処理に移る。また、サーバ10は、障害判定テーブルの範囲外でないと判定した場合には(ステップS104否定)、タイムアウトとなったか否かを判定する(ステップS105)。そして、サーバ10は、タイムアウトでない場合には(ステップS105否定)、ステップS104に戻って、タイムアウトまで判定処理を繰り返す。また、タイムアウトである場合には(ステップS105肯定)、ステップS106の処理に移る。
ステップS106では、サーバ10は、再起動を行う仮想PCと再起動を行う時間情報とを障害ログ格納部14bの再起動ログに記録した後(ステップS106)、仮想PCを再起動する(ステップS107)。つまり、サーバ10は、仮想PCとのハートビートが無い場合には、仮想PCを強制的に再起動して仮想PCの復旧を試みる。
そして、サーバ10は、仮想PCの再起動が可能であるか判定する(ステップS108)。この結果、サーバ10は、仮想PCの再起動が可能であると判定した場合には(ステップS108肯定)、すなわち再起動ができた場合には、ステップS101に戻る。
また、サーバ10は、仮想PCの再起動が可能でないと判定した場合には(ステップS108否定)、すなわち再起動ができなかった場合には、ステップS110の処理に移る。また、ステップS109では、サーバ10は、SMART情報が予め設定された閾値を超過したか否かを判定する。この結果、サーバ10は、SMART情報が閾値を超過したと判定した場合には(ステップS109肯定)、ステップS110の処理に移る。また、サーバ10は、SMART情報が閾値を超過しなかったと判定した場合には(ステップS109否定)、ステップS111の処理に移る。
ステップS110では、サーバ10は、ハードウェア障害をクライアントPC20へ通知し、処理を終了する。例えば、サーバ10は、クライアントPC20へ「ハードウェア障害」である旨のメッセージを通知するとともに、ハードウェアの点検作業または交換作業を促すメッセージを通知する。
ステップS111では、サーバ10は、ファイルシステム異常による障害をクライアントPC20へ通知する。例えば、サーバ10は、クライアントPC20へ「ファイルシステム異常」である旨のメッセージを通知するとともに、仮想PCの復元作業の試行を促すメッセージを通知する。そして、サーバ10は、クライアントPC20から復元ポイントの選択を受け付けて、選択された復元ポイントのイメージを用いて、仮想PCの復元を実行し(ステップS112)、処理を終了する。
次に、図16を用いて、サーバ10によるバックアップ実行処理の流れ説明する。図16に示すように、サーバ10は、バックアップ設定時刻であると判定すると(ステップS201)、仮想PCが停止中であるか否かを判定する(ステップS202)。
この結果、サーバ10は、仮想PCが停止中でないと判定した場合には(ステップS202否定)、仮想PCを強制シャットダウンし(ステップS203)、仮想PCのイメージバックアップを実行することで(ステップS204)、イメージを復元ポイントとしてHDD14の復元ポイント格納部14aに格納する。続いて、サーバ10は、仮想PCの再起動を実行し(ステップS205)、ステップS201の処理に戻る。
また、サーバ10は、仮想PCが停止中であると判定した場合には(ステップS202肯定)、復元ポイント作成済みであるか否かを判定する(ステップS206)。この結果、サーバ10は、復元ポイント作成済みである場合には(ステップS206肯定)、ステップS201の処理に戻る。
また、サーバ10は、復元ポイント作成済みでない場合には(ステップS206否定)、仮想PCのイメージとしてバックアップを実行し(ステップS207)、イメージを復元ポイントとしてHDD14の復元ポイント格納部14aに格納し、ステップS201の処理に戻る。この例では仮想PCが停止中に復元ポイントを作成する例を述べるが、仮想PCの稼働中、停止中の判定に問わず復元ポイントを作成することもできる。
次に、図17を用いて、サーバ10による復元処理の流れを説明する。ここでは、上述した図15のフローチャートにおけるステップS112で実行される復元処理を詳細に説明する。図17に示すように、サーバ10は、仮想PCが停止中であるかを判定する(ステップS301)。この結果、サーバ10は、仮想PCが停止中であると判定された場合には(ステップS301肯定)、ステップS303の処理に移る。
また、サーバ10は、仮想PCが停止中でないと判定された場合には(ステップS301否定)、仮想PCを強制シャットダウンし(ステップS302)、ステップS303の処理に移る。ステップS303では、サーバ10は、仮想PCの復元ポイントの選択画面をクライアントPC20に表示させる(ステップS303)。例えば、サーバ10は、仮想PCの復元ポイントの選択画面表示として、「出荷時」、「一日前」、「二日前」を選択候補として表示し、ユーザに選択させる。
そして、サーバ10は、ユーザからの復元ポイントの選択を受け付けると、仮想PCの復元を実行し(ステップS304)、サーバ10による復元処理を終了する。
[実施例1の効果]
上述してきたように、実施例1に係るサーバ10は、仮想マシン環境の記憶領域として割り当てられるSSD13と、SSD13よりも容量が大きく、かつ、SSDよりも動作速度が遅い記憶部であって、稼働中の仮想PCのイメージを記憶するHDD14とを有する。また、サーバ10では、所定のタイミングで仮想PCのイメージをHDD14に格納する。そして、サーバ10は、仮想PCの動作に関する情報を取得し、該動作に関する情報を用いて仮想PCの障害を検出する。続いて、サーバ10は、仮想PCの障害が検出された場合には、HDD14に記憶された仮想PCのイメージを読み出し、該仮想PCを復元する。
このため、仮想PCに割り当てる記録媒体をSSD13とし、復旧するための情報を記憶する記録媒体をHDD14として区別し、SSD13およびHDD14の長所を最大限に活かして、ダウンタイムを最小化し、効率よく仮想PCを運用して、障害発生時の復元処理を最適に実施することができる。また、サーバ10では、HDD14、SSD13という構造の異なる記憶装置を同一の物理マシン上に構成して、さらに、複数の仮想PCをSSD13上で稼動させつつも、復元用のイメージをHDD14に保存することで、少ない容量のSSD13で、仮想PCを安定して稼動させることができる。
また、実施例1によれば、サーバ10は、仮想PCのハートビートおよび仮想PCの稼動状況(例えば、CPU使用率、メモリ使用量)を取得し、ハートビートの有無および稼動状況に応じて仮想PCの障害を検出する。このため、仮想PCのハートビートおよび稼動状況を取得し、障害検出を行うことで、障害発生を適切に検知できる。つまり、ホストシステムから仮想PCの死活監視及び仮想PCのシステム稼働状況を監視することにより、仮想PCの障害検知することができ、万一の障害発生時においても、仮想PCの復元処理を適切に実施することで稼働し続けることができる。
また、実施例1によれば、サーバ10は、自装置に設けられたセンサにより検知された情報を収集し、収集した情報を用いてSSD13のハードウェア上の障害を検出する。このため、サーバ10は、SSDのハードウェア上の障害を検出するので、ハードウェア障害発生時も適切に復元が可能である。つまり、物理マシンにはSSD13のハードウェア上の障害発生を検知する装置を搭載することによって、ハードウェア障害発生時においても仮想PC復元が可能となります。また、仮にSSD13交換による復元が必要な場合においても、初期状態のSSD13を接続するだけで自動的にHDD14から復元用の最新イメージにて、仮想PC稼働環境を構成することができる。
また、実施例1によれば、サーバ10のSSD13は、複数のマザーボード15A、15Bのうちのいずれか一つのマザーボード15に接続され、仮想PCの障害が検出された場合には、仮想PCの障害とともに、マザーボード15の障害を検出し、障害が検出されたマザーボード15と接続されているSSD13の切り替え先を、他のマザーボードに切り替えるとともに、該SSD13の記憶領域が割り当てられていた仮想PCを復元する。これにより、物理マシンを冗長化することで、マザーボード15障害発生時にSSD13の接続先を切り替えて、仮想PCを継続して稼動させることができる。つまり、物理マシンを冗長化することにより、マザーボード15等の障害発生時には、仮想PC用SSD13の接続先を対向するマザーボードに切り替えることによって、仮想PC動作を継続して稼働させることができる。
また、実施例1によれば、仮想PCのイメージを格納する日時に関する情報に基づいて、定期的に仮想PCのイメージをHDD14に格納する。このため、仮想PCのイメージを定期的にバックアップし、複数のイメージをHDD14に格納することにより、任意日時のシステム環境へ復元することができる。
なお、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、本実施例で説明した復元方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。