図面 (/)

技術 仮想機器管理装置、仮想機器管理方法及び仮想機器管理プログラム

出願人 日本電信電話株式会社
発明者 山登庸次長尾伸二佐藤賢一
出願日 2014年9月16日 (6年3ヶ月経過) 出願番号 2014-187489
公開日 2016年4月25日 (4年7ヶ月経過) 公開番号 2016-062140
状態 特許登録済
技術分野 マルチプログラミング エラー時の再試行 ハードウェアの冗長性
主要キーワード 物理機器 クリーンアップ処理 多数決原理 孤立状態 配置情報テーブル 仮想機器 予備機 データ保持領域
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2016年4月25日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (17)

課題

仮想マシンを安全に復旧すること。

解決手段

仮想機器管理装置は、判定部と、削除部と、再作成部とを有する。判定部は、仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する。削除部は、前記実施中の復旧処理が存在しない場合に、第1の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する。再作成部は、前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第2の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる。

概要

背景

IaaS(Infrastructure as a Service)型クラウドサービスの実施例として、Amazon Elastic Compute Cloud(web site, http://aws.amazon.com/ec2)、Rackspace Cloud Server(web site, http://www.rackspacecloud.com/cloud-hosting-products/servers/)がある。

IaaS型クラウドサービスの基盤として、Amazonはプロプライエタリプラットフォームを用いているが、RackspaceはOpen SourceのOpenStack(web site, http://www.openstack.org/)を用いている。

しかし、OpenStack等のIaaS基盤は、仮想機器の管理を行うプリミティブAPI(Application Programming Interface)提供がターゲットの中心であり、物理機器の管理はスコープ外であるため、サービス事業者がクラウドサービスを提供する際は考慮が必要である。

具体的には、仮想機器が動作する物理機器が故障した際の復旧は、OpenStackは特にサポートしていなく、サービス事業者にて対策が必要である。市中で採用されている方法として、High AvailabilityクラスタソフトウェアのPacemaker等を用いてHA構成を構築し、物理機器故障時はフェールオーバーする方法がある。

また、仮想マシン稼働させる物理機器では、Pingを用いたりLibvirt等の仮想マシン制御ライブラリ監視したりすることで、仮想マシンのダウンを検知する方法がある。このような物理機器は、仮想マシンのダウンを検出した場合に、仮想マシンを再作成する復旧処理を実行する。

概要

仮想マシンを安全に復旧すること。仮想機器管理装置は、判定部と、削除部と、再作成部とを有する。判定部は、仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する。削除部は、前記実施中の復旧処理が存在しない場合に、第1の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する。再作成部は、前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第2の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる。

目的

しかし、OpenStack等のIaaS基盤は、仮想機器の管理を行うプリミティブなAPI(Application Programming Interface)提供がターゲットの中心であり、物理機器の管理はスコープ外であるため、サービス事業者がクラウドサービスを提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

仮想マシン障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する判定部と、前記実施中の復旧処理が存在しない場合に、第1の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する削除部と、前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第2の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる再作成部とを備えたことを特徴とする仮想機器管理装置

請求項2

前記判定部は、前記仮想マシンの障害に起因する実施中の復旧処理が存在するときに前記仮想マシンを稼働させる物理機器の障害が新たに検出された場合、前記実施中の復旧処理を中止させ、新たに検出された障害に起因する前記第1の復旧処理を前記削除部に実行させ、新たに検出された障害に起因する前記第2の復旧処理を前記再作成部に実行させることを特徴とする請求項1に記載の仮想機器管理装置。

請求項3

前記判定部は、前記仮想マシンを稼働させる物理機器の障害に起因する前記第2の復旧処理が実施中であるときに前記物理機器の障害が新たに検出された場合、実施中の前記第2の復旧処理を中止させ、新たに検出された障害に起因する前記第1の復旧処理を前記削除部に実行させ、新たに検出された障害に起因する前記第2の復旧処理を前記再作成部に実行させることを特徴とする請求項1に記載の仮想機器管理装置。

請求項4

前記判定部は、前記仮想マシンを稼働させる物理機器の障害に起因する前記第1の復旧処理が実施中であるときに前記物理機器の障害が新たに検出された場合、新たに検出された障害に起因する前記第1の復旧処理を前記削除部に実行させず、新たに検出された障害に起因する前記第2の復旧処理を前記再作成部に実行させないことを特徴とする請求項1に記載の仮想機器管理装置。

請求項5

前記判定部は、前記第2の復旧処理が実施中であるときに前記仮想マシンの障害が新たに検出された場合、実施中である前記第2の復旧処理を中止させ、新たに検出された障害に起因する前記第1の復旧処理を前記削除部に実行させ、新たに検出された障害に起因する前記第2の復旧処理を前記再作成部に実行させ、前記削除部は、前記第1の復旧処理として、前記対応付けを削除することに加えて、前記仮想マシンのインスタンスを削除し、前記再作成部は、前記対応付けと前記仮想マシンインタンスとを削除後に、前記第2の復旧処理として、選択した物理機器に前記仮想マシンを再作成させることを特徴とする請求項1に記載の仮想機器管理装置。

請求項6

前記判定部は、前記第1の復旧処理が実施中であるときに前記仮想マシンの障害が新たに検出された場合、新たに検出された障害に起因する前記第1の復旧処理を前記削除部に実行させず、新たに検出された障害に起因する前記第2の復旧処理を前記再作成部に実行させないことを特徴とする請求項1に記載の仮想機器管理装置。

請求項7

仮想機器管理装置で実行する仮想機器管理方法であって、前記仮想機器管理装置が、仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する判定工程と、前記実施中の復旧処理が存在しない場合に、第1の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する削除工程と、前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第2の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる再作成工程とを含んだことを特徴とする仮想機器管理方法。

請求項8

仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する判定手順と、前記実施中の復旧処理が存在しない場合に、第1の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する削除手順と、前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第2の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる再作成手順とをコンピュータに実行させることを特徴とする仮想機器管理プログラム

技術分野

0001

本発明は、仮想機器管理装置、仮想機器管理方法及び仮想機器管理プログラムに関する。

背景技術

0002

IaaS(Infrastructure as a Service)型クラウドサービスの実施例として、Amazon Elastic Compute Cloud(web site, http://aws.amazon.com/ec2)、Rackspace Cloud Server(web site, http://www.rackspacecloud.com/cloud-hosting-products/servers/)がある。

0003

IaaS型クラウドサービスの基盤として、Amazonはプロプライエタリプラットフォームを用いているが、RackspaceはOpen SourceのOpenStack(web site, http://www.openstack.org/)を用いている。

0004

しかし、OpenStack等のIaaS基盤は、仮想機器の管理を行うプリミティブAPI(Application Programming Interface)提供がターゲットの中心であり、物理機器の管理はスコープ外であるため、サービス事業者がクラウドサービスを提供する際は考慮が必要である。

0005

具体的には、仮想機器が動作する物理機器が故障した際の復旧は、OpenStackは特にサポートしていなく、サービス事業者にて対策が必要である。市中で採用されている方法として、High AvailabilityクラスタソフトウェアのPacemaker等を用いてHA構成を構築し、物理機器故障時はフェールオーバーする方法がある。

0006

また、仮想マシン稼働させる物理機器では、Pingを用いたりLibvirt等の仮想マシン制御ライブラリ監視したりすることで、仮想マシンのダウンを検知する方法がある。このような物理機器は、仮想マシンのダウンを検出した場合に、仮想マシンを再作成する復旧処理を実行する。

先行技術

0007

Pacemaker web site、[平成26年8月27日検索]、インターネット(URL:http://www.linux-ha.org/wiki/Pacemaker/)
Libvirt web site、[平成26年8月27日検索]、インターネット(URL:http://libvirt.org/)
D. Mane, "Building A High Availability - Openstack," International Journal of Engineering Research and Applications, Vol.3, Issue 4, pp.269-277, July 2013.

発明が解決しようとする課題

0008

しかしながら、上記の従来技術では、仮想マシンを安全に復旧できない場合があるという問題がある。

0009

具体的には、物理機器故障時の復旧と、仮想マシンダウン時の復旧とは独立である。また、物理機器の故障と仮想マシンの故障とが重複した際の復旧手段が統一的でない。このため、例えば、仮想マシンダウンによる仮想マシン復旧が、物理機器故障によるフェールオーバー時の故障ノード強制終了前に行われた場合には、仮想マシンが2重に起動し、ボリューム破壊する可能性がある。

0010

開示の技術は、上述に鑑みてなされたものであって、仮想マシンを安全に復旧することを目的とする。

課題を解決するための手段

0011

本願の開示する仮想機器管理装置は、判定部と、削除部と、再作成部とを有する。判定部は、仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する。削除部は、前記実施中の復旧処理が存在しない場合に、第1の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する。再作成部は、前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第2の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる。

0012

また、本願の開示する仮想機器管理方法は、仮想機器管理装置が、判定工程と、削除工程と、再作成工程とを含む。判定工程は、仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する。削除工程は、前記実施中の復旧処理が存在しない場合に、第1の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する。再作成工程は、前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第2の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる。

0013

また、本願の開示する仮想機器管理プログラムは、判定手順と、削除手順と、再作成手順とをコンピュータに実行させる。判定手順は、仮想マシンの障害又は前記仮想マシンを稼働させる物理機器の障害が検出された場合に、前記仮想マシンに対して実施中の復旧処理が存在するか否かを判定する。削除手順は、前記実施中の復旧処理が存在しない場合に、第1の復旧処理として、前記仮想マシンと前記仮想マシンにより使用される記憶領域との対応付けを削除する、又は、前記対応付けと前記仮想マシンの仮想マシンインスタンスとを削除する。再作成手順は、前記仮想マシンを稼働させる物理機器を選択し、前記対応付けを削除後、又は、前記対応付けと前記仮想マシンインスタンスとを削除後に、第2の復旧処理として、選択した物理機器に前記仮想マシンを再作成させる。

発明の効果

0014

開示する仮想機器管理装置の一つの態様によれば、仮想マシンを安全に復旧することができるという効果を奏する。

図面の簡単な説明

0015

図1は、第1の実施形態に係る仮想機器管理システムの構成の一例を示す図である。
図2は、仮想機器配置スケジューラ機能部による仮想機器の作成処理を説明するための図である。
図3は、仮想機器配置スケジューラ機能部による仮想機器の再配置処理を説明するための図である。
図4は、仮想機器配置スケジューラ機能部による仮想機器の再配置処理を説明するための図である。
図5は、仮想機器管理システムにおける仮想機器を作成する処理動作を説明するための図である。
図6は、仮想機器管理システムにおける仮想機器を再配置する処理動作を説明するための図である。
図7は、仮想機器管理システムにおける仮想機器を再配置する処理動作を説明するための図である。
図8は、仮想機器管理装置が実現する仮想機器配置スケジューラDB及び仮想機器配置スケジューラ機能部を説明するための図である。
図9は、仮想機器配置情報テーブルデータ構造の一例を示す図である。
図10は、物理資源情報テーブルのデータ構造の一例を示す図である。
図11は、配置先選択部による処理動作を説明するための図である。
図12は、障害判定部による物理機器の障害を検出する処理動作を説明するための図である。
図13は、再作成部による処理動作を説明するための図である。
図14は、物理機器障害通知を受信した場合の仮想機器配置スケジューラ機能部による処理手順を示すフローチャートである。
図15は、仮想マシンダウン通知を受信した場合の仮想機器配置スケジューラ機能部による処理手順を示すフローチャートである。
図16は、仮想機器管理プログラムを実行するコンピュータを示す図である。

実施例

0016

以下に、開示する仮想機器管理装置、仮想機器管理方法及び仮想機器管理プログラムの実施形態について、図面に基づいて詳細に説明する。なお、本実施形態により開示する発明が限定されるものではない。

0017

(第1の実施形態)
図1は、第1の実施形態に係る仮想機器管理システムの構成の一例を示す図である。図1に示すように、仮想機器管理システムは、ユーザ端末101、物理機器103a、物理機器103b、物理機器103c、クラウドコントローラ108、及び仮想機器管理装置109を有する。なお、物理機器103a、物理機器103b及び物理機器103cを区別しない場合には、物理機器103と記載する。また、ここで言う「物理機器」とは、仮想機器を作成可能な物理サーバストレージ装置、及びネットワーク機器等であるが、以下では説明の便宜上、物理機器103が仮想マシンを稼働可能な物理サーバである場合について説明する。また、仮想機器管理システムが有する物理機器103の数は図1に示す数に限定されるものではなく、任意に変更可能である。

0018

ユーザ端末101は、ユーザが利用する端末であり、ユーザの指示に応じて仮想機器の作成を仮想機器管理装置109に要求する。

0019

物理機器103は、クラウドコントローラ108から仮想機器の作成や削除依頼を受け、実際の仮想機器を作成したり削除したりする。例えば、物理機器103は、仮想機器を作成する指示をクラウドコントローラ108から受付け、仮想機器を作成する。

0020

例えば、物理機器103aは、図示しない仮想マシン制御部を有し、仮想マシン104aと、仮想マシン105aとを作成する。また、例えば、物理機器103bは、図示しない仮想マシン制御部を有し、仮想マシン104bと、仮想マシン105bとを作成する。同様に、物理機器103cは、図示しない仮想マシン制御部を有し、仮想マシン104cと、仮想マシン105cとを作成する。なお、物理機器103a〜物理機器103cにおいて、仮想マシン制御部は、例えば、OpenStackであれば、「Nova」機能によって実現される。

0021

なお、物理機器103がストレージ装置である場合、例えば、物理機器103は、仮想ボリューム制御部を有し、仮想ボリュームを作成する。また、物理機器103がネットワーク機器である場合、物理機器103は、仮想ネットワーク制御部を有し、仮想L2ネットワーク仮想ルータ、及び仮想ロードバランサなどを作成する。なお、仮想ネットワーク制御部は、例えば、OpenStackであれば、「Neutron」機能によって実現される。

0022

このような、物理機器103の稼働状態には、「稼働中」、「予備」、「故障中メンテナンス中)」及び「故障中(復旧処理中)」4つの状態がある。「稼働中」は、物理機器が稼働中であることを示す。「予備」は、物理機器が予備系として設けられ稼働中ではないことを示す。「故障中(メンテナンス中)」は、障害が発生した物理機器の復旧処理が開始されていないことを示す。この「故障中(メンテナンス中)」である状態は、障害が発生した物理機器の完全停止保障されている状態ではない。「故障中(復旧処理中)」は、障害が発生した物理機器の復旧処理が開始されていることを示す。この「故障中(復旧処理中)」である状態は、障害が発生した物理機器の完全停止が保障されている状態である。なお、仮想機器管理システムにおいて、「予備」の物理機器が設けられなくてもよい。

0023

また、物理機器103には、物理資源の容量に応じて、仮想機器を配置するために利用可能な物理資源の容量が定義される。ここで、物理資源には、例えば、物理メモリ、CPU(Central Processing Unit)、ネットワークポートなどが含まれる。なお、仮想マシンは、フレーバー(仮想マシンのスペック指定)に応じてメモリサイズが異なるため、作成する仮想マシンに応じて利用される物理資源の容量は異なる。しかしながら説明の便宜上、以下では、全ての仮想機器1つにつき、使用される物理資源の容量が同じであるものと仮定する。そして、1つの仮想機器を配置するために使用される物理資源の容量を1単位とし、「1スペース」と呼ぶ。言い換えると、1スペースには、1つの仮想機器を配置可能であり、1つの仮想機器を作成する場合には、いずれかの物理機器のスペースが1つ消費される。

0024

また、物理機器内のスペースの状態は、「空き」、「使用中」、及び「障害用バッファ」の3種類で管理されるものとする。ここで、「空き」は、仮想機器が配置されていないスペースであることを示す。「使用中」は、仮想機器が配置されているスペースであることを示す。「障害用バッファ」は、障害復旧用に確保されたスペースであることを示す。

0025

また、物理機器103aは、仮想マシン監視モジュール106aを備えている。同様に、物理機器103bは、仮想マシン監視モジュール106bを備えており、物理機器103cは、仮想マシン監視モジュール106cを備えている。なお、仮想マシン監視モジュール106a〜106cを区別しない場合には仮想マシン監視モジュール106と記載する。この仮想マシン監視モジュール106は、物理機器103上で動作する。例えば、仮想マシン監視モジュール106は、Libvirt等のイベントを監視するモジュールによって、仮想マシンの障害を検知した場合、後述する仮想機器配置スケジューラ機能部111に仮想マシンの障害を通知する。

0026

また、物理機器103aは、高可用ソフトウェア107aを備えている。同様に、物理機器103bは、高可用ソフトウェア107bを備えており、物理機器103cは、高可用ソフトウェア107cを備えている。なお、高可用ソフトウェア107a〜107cを区別しない場合には高可用ソフトウェア107と記載する。この高可用ソフトウェア107には、例えば「Pacemaker」等が利用できる。高可用ソフトウェア107は、物理機器103の障害を検知し、仮想機器管理装置109に物理機器の障害を通知する。かかる場合、物理機器103は、仮想機器を再配置させる指示をクラウドコントローラ108から受付け、障害の生じた物理機器103に配置された仮想機器を再配置する。

0027

なお、「Pacemaker」は、信頼性の高い故障検出メカニズムを備えており、スプリットブレイン対策が確立している。「Pacemaker」は、スプリットブレイン状態(孤立状態)を、Quorumモジュール等による多数決原理で検出する。

0028

クラウドコントローラ108は、物理機器103と仮想機器管理装置109とに接続されている。このクラウドコントローラ108は、CPU(Central Processing Unit)、メモリ、データ保持領域、及びネットワーク通信機能を有する装置である。クラウドコントローラ108は、仮想機器管理装置109からAPI(Application Programming Interface)経由で仮想機器の作成依頼や削除依頼を受付け、受付けた作成依頼や削除依頼に基づいて、仮想機器の作成や削除を物理機器103に指示する。例えば、クラウドコントローラ108は、OpenStack等である。

0029

仮想機器管理装置109は、図示しないネットワークを介して、ユーザ端末101と物理機器103とクラウドコントローラ108とに接続されている。仮想機器管理装置109は、CPU、メモリ、データ保持領域、及びネットワーク通信機能を有する装置であり、例えば、図1に示すように、仮想機器管理装置109は、仮想機器配置スケジューラDB(Data Base)110及び仮想機器配置スケジューラ機能部111を有する。仮想機器管理装置109は、ユーザ端末から仮想機器の作成依頼を受付けた場合、仮想機器配置先を決定してクラウドコントローラへの仮想マシン作成を依頼する。また、仮想機器管理装置109は、高可用ソフトウェア107からの物理機器の故障通知、仮想マシン監視モジュール106からの仮想マシンダウン通知を受付けた場合、仮想機器配置スケジューラDB110の情報を用いて、復旧処理の種類を決定する。そして、仮想機器管理装置109は、仮想機器配置先を決定し、クラウドコントローラへの仮想マシン作成依頼等の復旧処理を行う。

0030

仮想機器配置スケジューラDB110は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、ハードディスク光ディスク等の記憶装置などである。仮想機器配置スケジューラDB110は、仮想機器配置情報及び物理資源情報を記憶する。仮想機器配置情報は、各仮想マシンがどの物理機器上に配置されているかと、各仮想マシンの処理の進捗状態とを示す情報である。物理資源情報は、各物理機器の稼働状態と物理機器が有する物理資源の空き容量とを示す情報である。物理機器の稼働状態を示す情報には、例えば、稼働中、予備、故障中(メンテナンス中)、故障中(復旧処理中)があり、物理資源の空き容量を示す情報には、例えば、空き、使用中、障害用バッファがある。なお、仮想機器配置情報の詳細については、図9を用いて後述し、物理資源情報の詳細については、図10を用いて後述する。

0031

仮想機器配置スケジューラ機能部111は、物理機器の稼働状態と物理機器が有する物理資源の使用状態とを参照して、ビジネス要件に応じた仮想機器を配置する。例えば、仮想機器配置スケジューラ機能部111は、ユーザ端末101から、仮想機器の作成を要求された場合、仮想機器の作成要求と仮想機器配置スケジューラDB110の情報とを用いて、仮想機器の作成を仲介する。ここで、仮想機器配置スケジューラ機能部111は、仮想マシンや仮想ルータ等の仮想機器を新規に作成する通常のオペレーション時に、仮想機器を配置する物理機器を決め、クラウドコントローラ108に物理機器を指定して仮想機器の作成を依頼する。

0032

このように構成される仮想機器管理システムにおいて、仮想機器管理装置109は、仮想マシン監視モジュール106及び高可用ソフトウェア107と連携して動作する。図2から図4を用いて、仮想機器管理システムにおける処理について説明する。

0033

図2は、仮想機器配置スケジューラ機能部111による仮想機器の作成処理を説明するための図である。図2では、3台の物理機器103a〜103cに、仮想マシンVM#11〜VM#16、VM#21〜VM#26、及びVM#31〜VM#36を仮想機器として作成する場合を示す。なお、3台の物理機器103a〜103cはいずれも稼働中であるものとする。また、図2の例では、仮想機器が仮想マシンである場合を示すが、仮想機器は、仮想ルータ等のその他の仮想機器であってもよい。

0034

図2に示すように、仮想機器配置スケジューラ機能部111は、仮想マシンVM#11〜VM#16の配置先として物理機器103aを選択し、仮想マシンVM#21〜VM#26の配置先として物理機器103bを選択し、仮想マシンVM#31〜VM#36の配置先として物理機器103cを選択する。そして、仮想機器配置スケジューラ機能部111は、クラウドコントローラ108に配置を依頼する。すなわち、仮想機器配置スケジューラ機能部111は、物理機器103aに仮想マシンVM#11〜VM#16を作成するようにクラウドコントローラ108に依頼する。また、仮想機器配置スケジューラ機能部111は、物理機器103bに仮想マシンVM#21〜VM#26を作成するようにクラウドコントローラ108に依頼し、物理機器103cに仮想マシンVM#31〜VM#36を作成するようにクラウドコントローラ108に依頼する。なお、この配置ロジックは、ビジネス要件に応じて各事業者がロジックを設定すればよく、できるだけ分散するようにしても、できるだけ集中するようにしても良い。出来るだけ分散する場合は、ユーザの仮想機器の性能には都合が良く、できるだけ集中する場合は実際に使われる物理機器を減らすことができ事業者運用コスト低減に都合が良い。

0035

また、仮想機器配置スケジューラ機能部111は、例えば、いずれかの物理機器103に障害が生じた場合に、仮想機器配置スケジューラDB110の情報を用いて、仮想機器の再配置を仲介する。ここで、仮想機器配置スケジューラ機能部111は、高可用ソフトウェア107及びクラウドコントローラ108と連携することで障害復旧時に仮想機器を再配置する。図3は、仮想機器配置スケジューラ機能部111による仮想機器の再配置処理を説明するための図である。図3では、稼働中である3台の物理機器103a〜103cのうち、仮想機器としてVM#21〜VM#26を配置する物理機器103bに障害が生じた場合を示す。

0036

図3に示すように、仮想機器配置スケジューラ機能部111は、物理機器103bに障害が生じたことを検出する。かかる場合、仮想機器配置スケジューラ機能部111は、クラウドコントローラ108に仮想マシンのクリアを依頼する。そして、クラウドコントローラ108は、仮想マシンをクリアする。なお、ここで言う仮想マシンのクリアとは、仮想マシンと仮想マシンにより使用される記憶領域との対応付けを削除することを示す。言い換えると、仮想マシンのクリアとは、仮想マシンとストレージとの紐付けを削除することを示す。

0037

続いて、仮想機器配置スケジューラ機能部111は、仮想機器配置スケジューラDB110の情報を用いて、仮想マシンVM#21〜VM#26の再配置先を決定する。図3に示す例では、仮想機器配置スケジューラ機能部111は、VM#21、VM#23、及びVM#25の再配置先として物理機器103aを選択し、VM#22、VM#24、及びVM#26の再配置先として物理機器103cを選択する。

0038

そして、仮想機器配置スケジューラ機能部111は、クラウドコントローラ108に再配置を依頼する。すなわち、仮想機器配置スケジューラ機能部111は、物理機器103aに仮想マシンVM#21、VM#23、及びVM#25を作成するようにクラウドコントローラ108に依頼する。また、仮想機器配置スケジューラ機能部111は、物理機器103cに仮想マシンVM#22、VM#24、及びVM#26を作成するようにクラウドコントローラ108に依頼する。

0039

この結果、物理機器103aは、仮想マシンVM#21、VM#23、及びVM#25を再構築し、仮想マシンVM#11〜VM#16に加えて、仮想マシンVM#21、VM#23、及びVM#25を配置する。また、物理機器103cは、仮想マシンVM#22、VM#24、及びVM#26を再構築し、仮想マシンVM#31〜VM#36に加えて、仮想マシンVM#22、VM#24、及びVM#26を配置する。

0040

このように、仮想機器配置スケジューラ機能部111は、物理機器103bに障害が生じた場合、物理機器103bに配置されていた仮想マシンVM#21〜VM#26を、物理機器103aと物理機器103cとに再配置する。すなわち、仮想機器配置スケジューラ機能部111は、複数台の物理機器を仮想機器の復旧先として利用するので、物理機器故障時の仮想機器復旧時間を短縮できる。なお、障害時もできるだけ少ない数の物理機器に仮想マシンを配置するロジックを事業者が設定することもでき、その場合は、最も空きが少ないノードから埋めていくようなロジックを設定してもよく、或いは、最も空きが多いノードから埋めていくようなロジックを設定してもよい。

0041

また、仮想機器配置スケジューラ機能部111は、例えば、いずれかの仮想マシン104に障害が生じた場合に、仮想機器配置スケジューラDB110の情報を用いて、仮想マシンの再配置を仲介する。ここで、仮想機器配置スケジューラ機能部111は、仮想マシン監視モジュール106及びクラウドコントローラ108と連携することで障害復旧時に仮想マシンを再配置する。図4は、仮想機器配置スケジューラ機能部111による仮想マシンの再配置処理を説明するための図である。図4では、物理機器103bが稼働させている仮想マシンVM#21がダウンした場合を示す。なお、3台の物理機器103a〜103cはいずれも稼働中であるものとする。

0042

図4に示すように、仮想機器配置スケジューラ機能部111は、物理機器103bが稼働させている仮想マシンVM#21に障害が生じたことを検出する。かかる場合、仮想機器配置スケジューラ機能部111は、クラウドコントローラ108に仮想マシンインスタンスの削除を依頼する。そして、クラウドコントローラ108は、仮想マシンのインスタンスを削除する。なお、OpenStack等のクラウドコントローラでは、仮想マシンインスタンス削除のAPI実行で、仮想マシンとストレージの紐付解除されるため、仮想機器配置スケジューラ機能部111は、仮想マシンインスタンスの削除のAPIを実行すれば、仮想マシンインスタンス削除と仮想マシンとストレージの紐付解除がクラウドコントローラ108に依頼される。

0043

続いて、仮想機器配置スケジューラ機能部111は、仮想機器配置スケジューラDB110の情報を用いて、仮想マシンVM#21の再配置先を決定する。図4に示す例では、仮想機器配置スケジューラ機能部111は、VM#21の再配置先として物理機器103bを選択する。そして、仮想機器配置スケジューラ機能部111は、クラウドコントローラ108に再配置を依頼する。すなわち、仮想機器配置スケジューラ機能部111は、物理機器103bに仮想マシンVM#21を作成するようにクラウドコントローラ108に依頼する。この結果、物理機器103bは、仮想マシンVM#21を再構築する。

0044

このように、仮想機器配置スケジューラ機能部111は、物理機器103bが稼働させている仮想マシンVM#21に障害が生じた場合、仮想マシンインスタンスを削除した後に、物理機器103bに仮想マシンVM#21を再配置する。

0045

このように、仮想機器管理システムでは、物理機器障害時の仮想マシン復旧だけでなく、仮想マシンダウン時の仮想マシン復旧も行えるようにする。また、仮想機器管理システムでは、物理機器故障や仮想マシンダウンの故障通知が複数重複した際に、仮想マシンを安全に復旧することを行うため、クラウドコントローラ108が有するDB上の仮想マシン情報や物理機器上の仮想マシンインスタンスのクリーンアップテップを実施したのち、仮想マシンを新たに配置する。

0046

続いて、このような仮想機器管理システムにおける処理動作について、図5から図7を用いて説明する。図5は、仮想機器管理システムにおける仮想機器を作成する処理動作を説明するための図である。

0047

図5に示すように、ユーザ端末101は、仮想機器作成依頼を、仮想機器配置スケジューラ機能部111に送信する(ステップS1)。仮想機器配置スケジューラ機能部111は、仮想機器配置スケジューラDB110を参照し(ステップS2)、物理資源情報を確認する(ステップS3)。すなわち、仮想機器配置スケジューラ機能部111は、仮想機器配置スケジューラDB110を参照して物理機器空き情報を取得する。これにより仮想機器配置スケジューラ機能部111は、ビジネス要件に基づいて、仮想機器を作成する配置先の物理機器103を決定し、APIパラメータを準備する(ステップS4)。

0048

次に、仮想機器配置スケジューラ機能部111は、決定した物理機器103に仮想機器を作成させるようにクラウドコントローラ108に依頼する(ステップS5)。例えば、仮想機器配置スケジューラ機能部111は、決めた配置先を指定してクラウドコントローラAPIを呼び出す。続いて、クラウドコントローラ108は、指定された物理機器103に仮想機器の作成を依頼する(ステップS6)。

0049

そして、物理機器103は、仮想機器を作成し(ステップS7)、仮想機器の作成が完了したことをクラウドコントローラ108に通知する(ステップS8)。続いて、クラウドコントローラ108は、仮想機器の作成が完了したことを仮想機器配置スケジューラ機能部111に通知する(ステップS9)。そして、仮想機器配置スケジューラ機能部111は、仮想機器の作成が完了したことをユーザ端末101に通知する(ステップS10)。

0050

図6は、仮想機器管理システムにおける仮想機器を再配置する処理動作を説明するための図である。図6では、いずれかの物理機器103に障害が生じた場合に、仮想機器配置スケジューラ機能部111が仮想機器の再配置を仲介する動作を説明する。図6に示すように、仮想機器管理システムでは、物理機器103a、物理機器103b及び物理機器103cが相互に機器状態を監視している(ステップS21、ステップS22)。例えば、物理機器103a、物理機器103b及び物理機器103cの高可用ソフトウェア17は、Heartbeatでお互いの機器状態を交換している。以下では、物理機器103aに障害が生じた場合について説明する。

0051

ここで、物理機器103aで障害が起きた際は、物理機器103a上の高可用ソフトウェア107aは物理機器103a上のプロセスを停止し、仮想機器配置スケジューラ機能部111に障害を通知する。物理機器103b及び物理機器103cも同様に物理機器103aの障害を仮想機器配置スケジューラ機能部111に通知する。ここで、物理機器103aが完全に故障している場合は、物理機器103aから仮想機器配置スケジューラ機能部111に障害の発生を通知はできないが、物理機器103b及び物理機器103cは、物理機器103aの故障を仮想機器配置スケジューラ機能部111に通知できる。このため、仮想機器配置スケジューラ機能部111は、物理機器103aの故障を知ることができる。なお図5に示す例では、物理機器103aが完全に故障し、物理機器103aから障害の発生を仮想機器配置スケジューラ機能部111に通知できない場合を示す。

0052

なお、障害が発生した物理機器が自ら仮想機器配置スケジューラ機能部111に障害を通知することを「自ノード故障通知」と記載し、障害が発生した物理機器とは異なる他の物理機器が仮想機器配置スケジューラ機能部111に障害を通知することを「他ノード故障通知」と記載する。また、自ノード故障通知は信頼性が低いので、仮想機器配置スケジューラ機能部111は、自ノード故障通知を受信した場合、障害が発生した物理機器の「稼働状態」が「稼働中」や「予備」の場合は、「故障中(メンテナンス中)」に変更し、その他の状態の場合は「稼働状態」を変更しない。また、仮想機器配置スケジューラ機能部111は、自ノード故障通知を受信した場合、障害が発生した物理機器の完全停止が保障されているわけではなく、仮想マシンの2重起動の可能性があるので、復旧処理を開始しない。ただし、仮想機器配置スケジューラ機能部111は、「稼働状態」を「故障中(メンテナンス中)」に変更することで、新たに仮想マシンが配置されることを防ぐようにする。一方、仮想機器配置スケジューラ機能部111は、他ノード故障通知を受信した場合、障害が発生した物理機器の「稼働状態」が「稼働中」、「予備」及び「故障中(メンテナンス中)」の場合は、「故障中(復旧処理中)」に変更する。ここで、他ノード故障通知は、後述のSTONITH等により、故障ノードの停止を保証している。このため、仮想機器配置スケジューラ機能部111は、他ノード故障通知を受信した場合、復旧処理に入る。

0053

図6に示すように、物理機器103bは、物理機器103aに障害が生じたことを仮想機器配置スケジューラ機能部111に通知する(ステップS23)。そして、仮想機器配置スケジューラ機能部111は、物理機器103bからの他ノード故障通知を受ける。ここで、仮想機器配置スケジューラ機能部111は、仮想機器配置スケジューラDB110を参照して通知物理機器103aの稼働状態を確認し、通知物理機器103aの稼働状態が「稼働中」であるため、通知物理機器103aの稼働状態「稼働中」を「故障中(復旧処理中)」に変更する(ステップS24)。そして、仮想機器配置スケジューラ機能部111は、物理機器103bにACK(ACKnowledgement)を応答する(ステップS25)。そして、仮想機器配置スケジューラ機能部111は、復旧処理を開始する。同様に、物理機器103cは、物理機器103aに障害が生じたことを仮想機器配置スケジューラ機能部111に通知する(ステップS26)。そして、仮想機器配置スケジューラ機能部111は、仮想機器配置スケジューラDB110を参照して通知物理機器103aの稼働状態を確認し、通知物理機器103aの稼働状態が「故障中(復旧処理中)」であるため、再送として判断する(ステップS27)。そして、仮想機器配置スケジューラ機能部111は、物理機器103cにACKを応答する(ステップS28)。このように仮想機器配置スケジューラ機能部111は、最初に受信した通知に従って仮想機器の復旧処理を始めるが、2番目以降に受信した通知に対してもACKを応答する。

0054

そして、仮想機器配置スケジューラ機能部111は、故障復旧処理では、まず、物理機器103aで稼働する全ての仮想マシンのクリアをクラウドコントローラ108に依頼する(ステップS29)。続いて、クラウドコントローラ108は、クラウドコントローラ108が有するDB上において、仮想マシンとストレージとの紐付けを削除し(ステップS30)、仮想マシンクリア完了を仮想機器配置スケジューラ機能部111に通知する(ステップS31)。

0055

仮想機器配置スケジューラ機能部111は、仮想機器配置スケジューラDB110を参照し(ステップS32)、物理資源情報を確認する(ステップS33)。これにより仮想機器配置スケジューラ機能部111は、物理機器103b及び物理機器103cの物理資源の空き容量を取得して、仮想機器を再配置する物理機器103を決定し、APIパラメータを準備する(ステップS34)。ここで、仮想機器配置スケジューラ機能部111は、複数台の物理機器103を仮想機器の復旧先として選択することで、高速の復旧を可能とする。

0056

次に、仮想機器配置スケジューラ機能部111は、再配置する仮想機器を物理機器103bに作成させるようにクラウドコントローラ108に依頼する(ステップS35)。続いて、クラウドコントローラ108は、物理機器103bに仮想機器の作成を依頼する(ステップS36)。同様に、仮想機器配置スケジューラ機能部111は、再配置する仮想機器を物理機器103cに作成させるようにクラウドコントローラ108に依頼する(ステップS37)。例えば、仮想機器配置スケジューラ機能部111は、決めた配置先を指定してクラウドコントローラAPIを呼び出す。続いて、クラウドコントローラ108は、物理機器103cに仮想機器の作成を依頼する(ステップS38)。ここで、仮想機器配置スケジューラ機能部111は、選択した配置先を指定してクラウドコントローラ108のAPIを呼び出す。これにより、クラウドコントローラ108は、指定された物理機器103に対して仮想機器作成を依頼する。

0057

そして、物理機器103bは、仮想機器を作成し(ステップS39)、仮想機器の作成が完了したことをクラウドコントローラ108に通知する(ステップS40)。続いて、クラウドコントローラ108は、仮想機器の作成が完了したことを仮想機器配置スケジューラ機能部111に通知する(ステップS41)。同様に、物理機器103cは、仮想機器を作成し(ステップS42)、仮想機器の作成が完了したことをクラウドコントローラ108に通知する(ステップS43)。続いて、クラウドコントローラ108は、仮想機器の作成が完了したことを仮想機器配置スケジューラ機能部111に通知する(ステップS44)。なお、図6に示す例では、仮想機器配置スケジューラ機能部111が、物理機器103bと物理機器103cとに再配置する例について説明したが、物理機器103b又物理機器103cのいずれか一方に再配置してもよい。

0058

図7は、仮想機器管理システムにおける仮想機器を再配置する処理動作を説明するための図である。図7では、物理機器103aが稼働させている仮想マシンがダウンした場合に、仮想機器配置スケジューラ機能部111が仮想マシンの再配置を仲介する動作を説明する。

0059

図7に示すように、物理機器103aは、物理機器103a上の仮想マシン監視モジュール106によって、物理機器103a上の仮想マシンダウンを検出する(ステップS51)。そして、物理機器103aは、仮想マシンダウンを仮想機器配置スケジューラ機能部111に通知する(ステップS52)。

0060

仮想機器配置スケジューラ機能部111は、仮想マシンインスタンス削除をクラウドコントローラ108に依頼する(ステップS53)。クラウドコントローラ108は、物理機器103aに仮想マシンインスタンスの削除を依頼する(ステップS54)。物理機器103aは、仮想マシンインスタンスを削除し(ステップS55)、クラウドコントローラ108に仮想マシンインスタンス削除完了を通知する(ステップS56)。続いて、クラウドコントローラ108は、仮想マシンインスタンス削除完了を仮想機器配置スケジューラ機能部111に通知する(ステップS57)。

0061

仮想マシンインスタンス削除完了の通知を受けた仮想機器配置スケジューラ機能部111は、仮想マシン再配置のため、仮想機器配置スケジューラDB110を参照し(ステップS58)、物理資源情報を確認する(ステップS59)。これにより仮想機器配置スケジューラ機能部111は、物理機器103a、物理機器103b及び物理機器103cの物理資源の空き容量を取得して、仮想マシンを再配置する物理機器103を決定し、APIパラメータを準備する(ステップS60)。なお、図7では、仮想機器配置スケジューラ機能部111は、物理機器103aに仮想マシンを再作成する場合を示す。

0062

仮想機器配置スケジューラ機能部111は、クラウドコントローラ108に仮想マシン作成を依頼する(ステップS61)。続いて、クラウドコントローラ108は、物理機器103aに仮想マシン作成を依頼する(ステップS62)。そして、物理機器103aは、仮想マシンを作成し(ステップS63)、仮想マシン作成完了をクラウドコントローラ108に通知する(ステップS64)。続いて、クラウドコントローラ108は、仮想マシン作成完了を仮想機器配置スケジューラ機能部111に通知する(ステップS65)。

0063

続いて、図8を用いて、仮想機器管理装置109が実現する仮想機器配置スケジューラDB110及び仮想機器配置スケジューラ機能部111について説明する。図8は、仮想機器管理装置109が実現する仮想機器配置スケジューラDB110及び仮想機器配置スケジューラ機能部111を説明するための図である。

0064

図8に示すように、仮想機器配置スケジューラDB110は、仮想機器配置情報テーブル110a及び物理資源情報テーブル110bを記憶する。仮想機器配置情報テーブル110aは、各仮想機器がどの物理機器上に配置されているかを示す仮想機器配置情報を記憶する。

0065

図9は、仮想機器配置情報テーブル110aのデータ構造の一例を示す図である。図9に示すように、仮想機器配置情報テーブル110aは、「仮想マシンID」と、「物理機器ID」と、「進捗状態」とを対応付けた仮想機器配置情報を記憶する。ここで、仮想機器配置情報テーブル110aが記憶する「仮想マシンID」は、物理機器103に作成された仮想マシンを一意識別する識別子を示す。例えば、「仮想マシンID」には、「仮想マシン#11」、「仮想マシン#21」等のデータ値が格納される。

0066

また、仮想機器配置情報テーブル110aが記憶する「物理機器ID」は、物理機器103を一意に識別する識別子を示す。例えば、「物理機器ID」には、「物理機器#1」、「物理機器#2」等のデータ値が格納される。

0067

また、仮想機器配置情報テーブル110aが記憶する「進捗状態」は、仮想マシンの復旧処理の進捗状態を示す情報を示す。この「進捗状態」は、後述する仮想マシン削除部111dや再作成部111eにより更新される。ここで、「進捗状態」には、仮想マシンの復旧処理の進捗を示す情報として、「稼働中」、「削除中(仮想マシンダウン)」、「削除中(物理機器障害)」、「作成中(仮想マシンダウン)」及び「作成中(物理機器障害)」等が格納される。ここで、「稼働中」は、仮想マシンが稼働中であることを示す。すなわち、「稼働中」は、仮想マシンの復旧処理が開始していないことを示す。

0068

また、「削除中(仮想マシンダウン)」は、仮想マシンの障害に起因する仮想マシンの復旧処理が実施中であることを示す。「削除中(物理機器障害)」は、物理機器の障害に起因する仮想マシンの復旧処理が実施中であることを示す。ここで、進捗状態が削除中である場合の復旧処理として、仮想マシンと仮想マシンにより使用される記憶領域との対応付けを削除する処理や仮想マシンのインスタンスを削除する処理が実施される。なお、削除中である場合の復旧処理のことを「第1の復旧処理」とも言う。

0069

「作成中(仮想マシンダウン)」は、仮想マシンの障害に起因する仮想マシンの復旧処理が実施中であることを示す。「作成中(物理機器障害)」は、物理機器の障害に起因する仮想マシンの復旧処理が実施中であることを示す。ここで、進捗状態が作成中である場合の復旧処理として、仮想マシンを稼働させる物理機器を選択し、選択した物理機器に仮想マシンを再作成させる処理が実施される。なお、作成中である場合の復旧処理のことを「第2の復旧処理」とも言う。第2の復旧処理は、第1の復旧処理の終了後に実施される。

0070

一例をあげると、図9に示す仮想機器配置情報テーブル110aは、識別子が「物理機器#1」である物理機器103には、仮想機器「仮想マシン#11」及び「仮想マシン#12」が配置されており、仮想マシン#11及び仮想マシン#12が仮想マシンのダウンによる復旧処理中であることを示す。ここで、仮想マシン#11は、削除中であり、仮想マシン#12は、作成中である。また、図9に示す仮想機器配置情報テーブル110aは、識別子が「物理機器#2」である物理機器103には、仮想機器「仮想マシン#21」及び「仮想マシン#22」が配置されており、仮想マシン#21及び仮想マシン#22が物理機器#2の障害による復旧処理中であることを示す。ここで、仮想マシン#21及び仮想マシン#22は、削除中である。また、図9に示す仮想機器配置情報テーブル110aは、識別子が「物理機器#3」である物理機器103には、仮想機器「仮想マシン#23」、「仮想マシン#31」及び「仮想マシン#32」が配置されており、仮想マシン#31及び仮想マシン#32が稼働中であり、仮想マシン#23が物理機器#3以外の他の物理機器の障害による復旧処理中であることを示す。なお、図9に示す例では、元々、物理機器#2では、仮想マシン#21、#22、及び#23が動作しており、物理機器#2が故障した場合を示す。このため、仮想マシン#21、#22、及び#23のクリーンアップ処理を行うが、仮想マシン#21、及び#22はまだクリーンアップ中のため物理機器#2に紐付いており削除中と表示される。仮想マシン#23は、クリーンアップが既に終わり、仮想マシン作成を物理機器#3上で既に始めているため、物理機器#3に紐付いて作成中と表示されている。

0071

図8に戻る。物理資源情報テーブル110bは、各物理機器の稼働状態と物理機器が有する物理資源の空き容量とを示す物理資源情報を記憶する。図10は、物理資源情報テーブル110bのデータ構造の一例を示す図である。図10に示すように、物理資源情報テーブル110bは、「物理機器ID」と「稼働状態」と「空き」と「使用中」と「障害用」とを対応付けた物理資源情報を記憶する。

0072

ここで、物理資源情報テーブル110bが記憶する「物理機器ID」は、物理機器103を一意に識別する識別子を示す。例えば、「物理機器ID」には、「物理機器#1」、「物理機器#2」等のデータ値が格納される。

0073

また、物理資源情報テーブル110bが記憶する「稼働状態」は、物理機器が稼働中であるか否かを示す。この「稼働状態」は、後述する障害判定部111cにより更新される。例えば、物理機器が稼働中である場合、「稼働状態」には「稼働中」が格納される。なお、図8では図示していないが、物理機器が予備系として設けられ稼働中ではない場合、「稼働状態」には「予備」が格納される。また、障害が発生した物理機器の復旧処理が開始されていない場合、「稼働状態」には「故障中(メンテナンス中)」が格納される。また、障害が発生した物理機器の復旧処理が開始されている場合、「稼働状態」には「故障中(復旧処理中)」が格納される。

0074

また、「空き」は、物理機器が有する物理資源の容量のうち空き容量を示す。例えば、「空き」には、「3」、「5」、「4」等の値が格納される。また、「使用中」は、物理機器が有する物理資源の容量のうち使用中の容量を示す。例えば、「使用中」には、「1」、「3」、「2」等の値が格納される。また、「障害用」は、物理機器が有する物理資源の容量のうち復旧用に確保された容量を示す。例えば、「障害用」には、「2」等の値が格納される。

0075

一例をあげると、図10に示す物理資源情報テーブル110bは、物理機器#1は、稼働中であり、物理資源の空き容量が「3」であり、使用中の容量が「1」であり、復旧用に確保された容量が「2」であることを示す。また、図10に示す物理資源情報テーブル110bは、物理機器#2は、稼働中であり、物理資源の空き容量が「5」であり、使用中の容量が「3」であり、復旧用に確保された容量が「2」であることを示す。同様に、図10に示す物理資源情報テーブル110bは、物理機器#3は、稼働中であり、物理資源の空き容量が「4」であり、使用中の容量が「2」であり、復旧用に確保された容量が「2」であることを示す。

0076

図8に戻る。仮想機器配置スケジューラ機能部111は、作成依頼受付部111aと、配置先選択部111bと、障害判定部111cと、仮想マシン削除部111dと、再作成部111eとを有する。

0077

作成依頼受付部111aは、仮想機器の作成要求をユーザ端末101から受付ける。作成依頼受付部111aは、受付けた仮想機器の作成要求を配置先選択部111bに受け渡す。

0078

配置先選択部111bは、仮想機器を新規に作成する際に、仮想機器を配置する物理機器を選択する。ここで、配置先選択部111bは、仮想機器を出来るだけ分散して配置するように物理機器103を選択する。言い換えると、配置先選択部111bは、「稼働中」の「空き」スペースの数が平準化するように仮想機器を配置する。

0079

図11は、配置先選択部111bによる処理動作を説明するための図である。図11では、物理機器#1〜物理機器#6の6台の物理機器を有する仮想機器管理システムにおいて、仮想機器を新規に作成する場合について説明する。ここで、物理機器#1〜物理機器#5の稼働状態は「稼働中」であり、物理機器#6の稼働状態は「予備」である。また、物理機器#1のスペースの状態は、「空き」2、「使用中」1、「障害用バッファ」2であり、物理機器#2のスペースの状態は、「空き」0、「使用中」3、「障害用バッファ」2であり、物理機器#3のスペースの状態は、「空き」4、「使用中」0、「障害用バッファ」2である。また、物理機器#4のスペースの状態は、「空き」0、「使用中」5、「障害用バッファ」2であり、物理機器#5のスペースの状態は、「空き」2、「使用中」0、「障害用バッファ」2であり、物理機器#6のスペースの状態は、「空き」3、「使用中」0、「障害用バッファ」2である。

0080

例えば、配置先選択部111bは、配置先選択時に、稼働状態が「稼働中」である物理機器の空きスペースの量をチェックし、最も空きスペースが多い稼働中の物理機器を特定する。より具体的には、配置先選択部111bは、作成する仮想機器のうち1つの仮想機器(例えば、仮想機器#1)を選択する。そして、図11に示すスペースの状態である場合には、「空き」が4である物理機器#3を、最も空きスペースが多い稼働中の物理機器に特定する。なお、配置先選択部111bは、「障害用バッファ」を通常オペレーション時には利用しない。そして、配置先選択部111bは、特定した物理機器#3を選択した仮想機器#1の配置先として選択する。

0081

続いて、配置先選択部111bは、配置先として選択する処理を、作成を依頼された全ての仮想機器の配置先を選択するまで繰り返す。一例をあげると、配置先選択部111bは、図11に示す数字順に仮想機器を配置するように物理機器を選択する。このように、配置先選択部111bは、最も空きスペースが多い稼働中の物理機器のスペースの一部を選択することで「空き」スペースの数を平準化する。

0082

また、配置先選択部111bは、稼働状態が「稼働中」である物理機器のスペースが全て埋まった場合に、稼働状態が「予備」である物理機器に仮想機器を配置する。このため、配置先選択部111bは、図11に示す8番のスペースまで仮想機器を配置したら、予備の物理機器に仮想機器を配置する。すなわち、配置先選択部111bは、図11に示す例において、仮想機器を9台以上作成する場合には、稼働状態が「予備」である物理機器に仮想機器を配置する。

0083

そして、配置先選択部111bは、選択した物理機器103に、仮想機器を作成するようにクラウドコントローラ108に依頼する。

0084

図8に戻る。障害判定部111cは、仮想マシンの障害又は仮想マシンを稼働させる物理機器の障害を検出する。例えば、障害判定部111cは、各物理機器103が有する仮想マシン監視モジュール106及び高可用ソフトウェア107と連携することで、ダウンした仮想マシン104や障害の生じた物理機器103を検出する。そして、障害判定部111cは、仮想マシンの障害又は仮想マシンを稼働させる物理機器の障害を検出した場合に、仮想マシンに対して先行して実施されている復旧処理が存在するか否かを判定する。

0085

ここではまず、障害判定部111cによる仮想マシンを稼働させる物理機器の障害を検出する処理について説明する。図12は、障害判定部111cによる物理機器の障害を検出する処理動作を説明するための図である。

0086

図12では、物理機器103a〜103cを図示しており、物理機器103aに障害が発生した場合について説明する。また、図12では、物理機器103が有する機能のうち、物理機器103aには、自装置の障害発生時に機能する構成部を示し、物理機器103b及び物理機器103cには、他装置の障害を検出した場合に機能する構成部を示す。

0087

図12に示すように、物理機器103の障害の検出には、高可用ソフトウェア107a〜107cが用いられる。全ての物理機器103は、CIB(Cluster Information Base)に、クラスタ内の全物理機器103の状態を保持する。高可用ソフトウェア107は、RA(Resource Agent)を用いて自物理機器の状態を確認する。なお、RAとは、例えば、仮想ボリューム制御部や仮想マシン制御部に相当する。

0088

また、高可用ソフトウェア107は、Heartbeatにより、クラスタ内のどの物理機器も他の物理機器の状態を知り得る。このため、高可用ソフトウェア107は、heartbeatパケットを使ってクラスタ内に状態を通知する。この仕組みにより、各物理機器は他の物理機器の状態を知る。高可用ソフトウェア107は、ある物理機器からのHeartbeatパケットが継続的にロストすると、他の物理機器は当該物理機器がダウンしたとみなす

0089

物理機器103は、仮想機器配置スケジューラ機能部111に物理機器に生じた障害を通知するため、通知RAと通知プロセスとを備える。例えば、Pacemakerが自物理機器の故障を検出した場合、通知RAを使用して仮想機器配置スケジューラ機能部111に自物理機器の故障を通知する。一方、通知プロセスは、常駐プロセスとして設定され、CIBの状態を定期的に確認する。そして、通知プロセスは、他物機器の故障を検出すると、後述のSTONITHにより確実に故障ノードが落ちていることを確認した後、他物理機器に障害が生じたことを仮想機器配置スケジューラ機能部111に通知する。通知RAによる通知及び通知プロセスによる通知は、ACKが仮想機器配置スケジューラ機能部111から返るまで一定回数繰り返される。

0090

続いて、仮想機器配置スケジューラ機能部111において、障害判定部111cは、通知を受信したらACKを応答し、仮想マシン削除部111d及び再作成部111eに仮想機器の復旧処理を実行させる。なお、障害判定部111cは、同内容の通知に関しては2通目以降の通知を無視してACKを応答する。ただし、自ノード故障通知と他ノード故障通知は別物として扱う。これにより、複数の物理機器から通知を受けることで冗長化対策をとることができるとともに、復旧処理を繰り返さないようにする。

0091

なお、高可用ソフトウェア107は、自物理機器の停止に失敗する場合がある。仮想マシンの場合、復旧により、複数の仮想マシンが同時に存在してしまい、データ領域への同時アクセスによりデータ破壊の可能性が出てしまう。そこで、高可用ソフトウェア107が「Pacemaker」である場合、STONITHモジュールを用いて、確実に故障物理機器を落とす。STONITHは、IPMI(Intelligent Platform Management Interface)経由で、故障物理機器を停止することで、故障物理機器が動作し続けないことを保証する。Quorumで過半数を形成した多数派の物理機器が、STONITHを起動することで、誤発動を防止する。なお、Quorumは過半数で判断するため、クラスタの物理機器数が少ない場合に、ある物理機器が故障したら、正常な物理機器が過半数を確保できなくなる。このため、クラスタから故障物理機器を切り離す減設作業が必要である。また、図12では、高可用ソフトウェア107が、Pacemakerである場合を示しているが、他の高可用ソフトウェアでも同様のメカニズムで障害の発生を検知したり、障害の発生を通知したりすることが可能である。なお、障害判定部111cは、障害の生じた物理機器自ら物理機器の障害の発生を通知された場合、物理資源情報テーブル110bにおいて障害の生じた物理機器に対応する「稼働状態」を「故障中(メンテナンス中)」に更新する。一方、障害判定部111cは、例えば、他の物理機器に生じた障害を物理機器103bから通知された場合、物理資源情報テーブル110bにおいて障害の生じた物理機器に対応する「稼働状態」を「故障中(復旧処理中)」に更新して、仮想マシン削除部111d及び再作成部111eに仮想機器の復旧処理を実行させる。かかる場合、障害判定部111cは、復旧処理が仮想マシンを稼働させる物理機器の障害に起因することを仮想マシン削除部111d及び再作成部111eに通知する。なお、障害判定部111cは、物理機器103bからの通知に続いて他の物理機器に生じた障害を物理機器103cから通知された場合、既に復旧処理を開始しているので無視する。

0092

次に、障害判定部111cによる仮想マシンの障害を検出する処理について説明する。物理機器障害で、その上で動作する仮想機器が全て障害になる場合以外に、仮想機器がプロセス障害などでダウンする場合がある。特に仮想マシン障害は、即サービス断につながるため、仮想マシンのユーザにとって影響が大きい。そこで、仮想機器管理システムでは、Pacemaker等の高可用ソフトウェアによる物理機器監視だけでなく、Libvirt等の仮想マシン制御ライブラリによって仮想マシンを監視する。そして、仮想機器配置スケジューラ機能部111は、仮想マシン障害時に、仮想マシンの復旧処理を実施する。

0093

例えば、OpenStackコミュニティでは、Qemu−KVMが数多く利用されているハイパーバイザ—であり、仮想マシンの制御ライブラリとしてLibvirtが数多く利用されている。そこで、仮想マシン監視モジュール106は、Libvirt等の仮想マシン制御ライブラリからイベントを取得することで仮想マシンがダウンしたことを検知する。そして、仮想マシン監視モジュール106は、仮想マシンがダウンしたことを検知した場合、仮想機器配置スケジューラ機能部111に障害を通知する。Libvirtは、仮想マシン障害だけでなく、仮想マシンゲストOSのシャットダウン、ホストOSのシャットダウン等のイベントも取得可能である。このため、仮想マシン監視モジュール106は、仮想機器配置スケジューラ機能部111に、仮想マシンゲストOSのシャットダウンやホストOSのシャットダウン等のイベントを通知する。また、障害判定部111cは、仮想マシン削除部111d及び再作成部111eに仮想機器の復旧処理を実行させる。かかる場合、障害判定部111cは、復旧処理が仮想マシンのダウンに起因することを仮想マシン削除部111d及び再作成部111eに通知する。

0094

続いて、障害判定部111cによる、仮想マシンに対して先行して実施されている復旧処理が存在するか否かを判定する処理について説明する。障害判定部111cは、複数の故障通知を受信する可能性がある。言い換えると、故障通知が競合する場合がある。例えば、仮想マシンでは、復旧タイミングを誤り仮想マシンが2重起動されてしまうと、同じデータ領域への2つの仮想マシンからのアクセスによりデータ破壊の可能性が有る。このため、現在の復旧処理の進捗状態に応じて適切な復旧処理を行う必要がある。そこで、障害判定部111cは、Pacemaker等の高可用ソフトウェア107とLibvirt監視モジュール等の仮想マシン監視モジュール106からの故障通知とを統一的に管理し、通知受信時の復旧処理の進捗状況に応じて、実施する復旧処理を判定する。

0095

例えば、障害判定部111cは、仮想マシンの障害又は仮想マシンを稼働させる物理機器の障害が検出された場合に、仮想マシンに対して実施中の復旧処理が存在するか否かを判定する。例えば、障害判定部111cは、図9に示した仮想機器配置情報テーブル110aを参照して、障害が通知された物理機器で稼働する仮想マシンの進捗状態が削除中や作成中であるか否かを判定する。そして、障害判定部111cは、障害が通知された物理機器で稼働する仮想マシンの進捗状態が削除中や作成中である場合、仮想マシンに対して実施中の復旧処理が存在すると判定する。一方、障害判定部111cは、障害が通知された物理機器で稼働する仮想マシンの進捗状態が削除中や作成中でない場合、仮想マシンに対して実施中の復旧処理が存在しないと判定する。以下では、故障通知が競合する場合をパターン1からパターン4の4つの状況にわけて説明する。

0096

パターン1として、仮想マシンを稼働させる物理機器の障害に起因する復旧処理が実施中であるときに物理機器の障害が新たに検出された場合について説明する。言い換えると、障害が新たに検出された物理機器で稼働する仮想マシンの「進捗状態」が「削除中(物理機器障害)」や「作成中(物理機器障害)」である場合を示す。

0097

障害判定部111cは、物理機器上の仮想マシンの削除が終わる前であれば、受信した通知を再送として破棄する。より具体的には、障害判定部111cは、仮想機器配置情報テーブル110aにおいて、障害が生じた物理機器で稼働する仮想マシンの「進捗状態」が「削除中(物理機器障害)」である場合、通知が再送であると判定する。すなわち、障害判定部111cは、仮想マシンを稼働させる物理機器の障害に起因する第1の復旧処理が実施中であるときに物理機器の障害が新たに検出された場合、新たに検出された障害に起因する第1の復旧処理を仮想マシン削除部111dに実行させず、新たに検出された障害に起因する第2の復旧処理を再作成部111eに実行させない。

0098

また、障害判定部111cは、既に仮想マシンを他の物理機器で仮想マシンインスタンス作成中の場合は、新たに受信した通知を新たなイベントとして物理機器の復旧処理を行う。より具体的には、障害判定部111cは、仮想機器配置情報テーブル110aにおいて、障害が生じた物理機器で稼働する仮想マシンの「進捗状態」が「作成中(物理機器障害)」である場合、新たなイベントとして物理機器の復旧処理を行う。すなわち、障害判定部111cは、仮想マシンを稼働させる物理機器の障害に起因する第2の復旧処理が実施中であるときに物理機器の障害が新たに検出された場合、実施中の第2の復旧処理を中止させる。そして、障害判定部111cは、新たに検出された障害に起因する第1の復旧処理を仮想マシン削除部111dに実行させ、新たに検出された障害に起因する第2の復旧処理を再作成部111eに実行させる。なお、同じ物理機器に対する通知であり、仮想マシンの削除が既に実施されている場合、仮想マシンを新たに削除する処理を省略可能である。

0099

パターン2として、仮想マシンを稼働させる物理機器の障害に起因する復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合について説明する。言い換えると、ダウンが新たに検出された仮想マシンの「進捗状態」が「削除中(物理機器障害)」や「作成中(物理機器障害)」である場合を示す。

0100

障害判定部111cは、第1の復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合、新たに検出された障害に起因する第1の復旧処理を仮想マシン削除部111dに実行させず、新たに検出された障害に起因する第2の復旧処理を再作成部111eに実行させない。例えば、物理機器上の仮想マシンクリーンアップはSTONITHで停止後に行われるため基本的には仮想マシンダウン通知が来ることはない。しかしながら、通知が遅延した場合等では、仮想マシンの削除中に仮想マシンダウン通知を受信する場合がある。この場合、ダウンが新たに検出された仮想マシンの「進捗状態」が「削除中(物理機器障害)」である。かかる場合、障害判定部111cは、実施中である仮想マシンの削除処理を継続すると判定する。

0101

また、障害判定部111cは、第2の復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合、実施中である第2の復旧処理を再作成部111eに中止させる。そして、障害判定部111cは、新たに検出された障害に起因する第1の復旧処理を仮想マシン削除部111dに実行させ、新たに検出された障害に起因する第2の復旧処理を再作成部111eに実行させる。例えば、障害判定部111cは、既に仮想マシンを他の物理機器で仮想マシンインスタンス作成中の場合は、新たに受信した通知を新たな故障通知として扱う。この場合、ダウンが新たに検出された仮想マシンの「進捗状態」が「作成中(物理機器障害)」である。これにより、仮想マシン削除部111dは、第1の復旧処理として、対応付けを削除することに加えて、仮想マシンのインスタンスを削除させる。そして、再作成部111eは、対応付けの削除及び仮想マシンのインタンスの削除後に、第2の復旧処理として、選択した物理機器に仮想マシンを再作成させる。

0102

パターン3として、仮想マシンの障害に起因する復旧処理が実施中であるときに物理機器の障害が新たに検出された場合について説明する。言い換えると、障害が新たに検出された物理機器で稼働する仮想マシンの「進捗状態」が「削除中(仮想マシンダウン)」や「作成中(仮想マシンダウン)」である場合を示す。かかる場合、障害判定部111cは、仮想マシンの障害に起因する実施中の復旧処理が存在するときに仮想マシンを稼働させる物理機器の障害が新たに検出された場合、実施中の復旧処理を中止させる。そして、障害判定部111cは、新たに検出された障害に起因する第1の復旧処理を仮想マシン削除部111dに実行させ、新たに検出された障害に起因する第2の復旧処理を再作成部111eに実行させる。

0103

例えば、障害が新たに検出された物理機器で稼働する仮想マシンの「進捗状態」が「削除中(仮想マシンダウン)」である場合、物理機器障害により仮想マシンインスタンスの削除が終了しない可能性がある。このため、障害判定部111cは、実施中である仮想マシンインスタンス削除を中断するように仮想マシン削除部111dに指示する。そして、障害判定部111cは、新たに通知された物理機器の復旧処理を仮想マシン削除部111d及び再作成部111eに実行させる。

0104

また、例えば、障害が新たに検出された物理機器で稼働する仮想マシンの「進捗状態」が「作成中(仮想マシンダウン)」である場合も、物理機器障害により仮想マシンインスタンスの削除が終了しない可能性がある。このため、障害判定部111cは、実施中である仮想マシンインスタンス削除を中断するように仮想マシン削除部111dに指示する。そして、障害判定部111cは、新たに通知された物理機器の復旧処理を仮想マシン削除部111d及び再作成部111eに実行させる。

0105

パターン4として、仮想マシンの障害に起因する復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合について説明する。言い換えると、ダウンが新たに検出された仮想マシンの「進捗状態」が「削除中(仮想マシンダウン)」や「作成中(仮想マシンダウン)」である場合を示す。

0106

障害判定部111cは、第1の復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合、新たに検出された障害に起因する第1の復旧処理を仮想マシン削除部111dに実行させず、新たに検出された障害に起因する第2の復旧処理を再作成部111eに実行させない。例えば、ダウンが新たに検出された仮想マシンの「進捗状態」が「削除中(仮想マシンダウン)」である場合は、障害判定部111cは、新たに受信した通知が再送であるとして破棄し、実施中である仮想マシンインスタンスの削除処理を継続する。

0107

また、障害判定部111cは、第2の復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合、実施中である第2の復旧処理を再作成部111eに中止させる。そして、障害判定部111cは、新たに検出された障害に起因する第1の復旧処理を仮想マシン削除部111dに実行させ、新たに検出された障害に起因する第2の復旧処理を再作成部111eに実行させる。これにより、仮想マシン削除部111dは、第1の復旧処理として、対応付けを削除することに加えて、仮想マシンのインスタンスを削除させる。例えば、ダウンが新たに検出された仮想マシンの「進捗状態」が「作成中(仮想マシンダウン)」である場合、障害判定部111cは、実施中である仮想マシンインスタンス作成処理を中断するように再作成部111eに指示する。そして、再作成部111eは、対応付けの削除及び仮想マシンのインタンスの削除後に、第2の復旧処理として、選択した物理機器に仮想マシンを再作成させる。

0108

このように、障害判定部111cは、従来は独立に行われていた物理機器の障害に起因する復旧処理とダウンした仮想マシンの復旧処理とを、統一的に管理することで、仮想マシンの2重起動を防いだ信頼性のある復旧処理を実施することを可能とする。

0109

図8に戻る。仮想マシン削除部111dは、障害判定部111cの指示に応じて、第1の復旧処理として、仮想マシンと仮想マシンにより使用される記憶領域との対応付けを削除する。ここで、仮想マシン削除部111dは、仮想マシンの障害に起因する第1の復旧処理である場合、仮想マシンと仮想マシンにより使用される記憶領域との対応付けを削除することに加えて、仮想マシンのインスタンスを削除する。

0110

例えば、仮想マシン削除部111dは、実施中の復旧処理が存在しない場合に、第1の復旧処理として、仮想マシンと仮想マシンにより使用される記憶領域との対応付けを削除する。また、仮想マシン削除部111dは、障害判定部111cの指示に応じて、実施中である第1の復旧処理を中止する。実施中である第1の復旧処理を中止した場合、仮想マシン削除部111dは、障害判定部111cの指示に応じて、新たに第1の復旧処理を実施する。

0111

また、仮想マシン削除部111dは、第1の復旧処理を開始する場合、仮想機器配置情報テーブル110aにおいて、障害の発生した仮想マシンに対応する「進捗状態」を「削除中(仮想マシンダウン)」或いは「削除中(物理機器障害)」に更新する。

0112

第1の復旧処理が終了後、仮想マシン削除部111dは、再作成部111eに第1の復旧処理が終了したことを通知する。

0113

再作成部111eは、障害判定部111cの指示を受信した後、仮想マシン削除部111dから第1の復旧処理が終了したことを通知された場合に、第2の復旧処理として、仮想マシンを稼働させる物理機器を選択し、選択した物理機器に仮想マシンを再作成させる。

0114

例えば、再作成部111eは、物理機器に生じた障害を通知された場合に、仮想機器を再作成する物理機器を選択する。また、再作成部111eは、仮想マシンのダウンを通知された場合に、ダウンした仮想マシンを再作成する物理機器を選択する。ここで、再作成部111eは、物理機器に生じた障害を通知された場合に、対応付けの削除後に、第2の復旧処理として、選択した物理機器に仮想マシンを再作成させる。また、再作成部111eは、仮想マシンのダウンを通知された場合に、対応付けの削除及び仮想マシンのインタンスの削除後に、第2の復旧処理として、選択した物理機器に仮想マシンを再作成させる。

0115

以下では、物理機器に生じた障害を通知された場合の再作成部111eの処理について説明する。ここで、再作成部111eは、障害の生じた物理機器以外の物理機器にできるだけ順番割り振られるように物理機器を選択する。例えば、再作成部111eは、障害の生じた物理機器以外の物理機器のうち物理資源の空き容量のある物理機器を複数特定する。そして、再作成部111eは、特定した複数の物理機器の物理資源を、障害の生じた物理機器に配置された仮想機器の再配置先として選択する。

0116

図13は、再作成部111eによる処理動作を説明するための図である。図13では、物理機器#1〜物理機器#6の6台の物理機器を有する仮想機器管理システムにおいて、物理機器#4が故障した際の復旧について説明する。ここで、物理機器#1〜物理機器#5の稼働状態は「稼働中」であり、物理機器#6の稼働状態は「予備」である。また、物理機器#1のスペースの状態は、「空き」2、「使用中」1、「障害用バッファ」2であり、物理機器#2のスペースの状態は、「空き」0、「使用中」3、「障害用バッファ」2であり、物理機器#3のスペースの状態は、「空き」4、「使用中」0、「障害用バッファ」2である。また、物理機器#4のスペースの状態は、「空き」0、「使用中」10、「障害用バッファ」2であり、物理機器#5のスペースの状態は、「空き」2、「使用中」0、「障害用バッファ」2であり、物理機器#6のスペースの状態は、「空き」3、「使用中」0、「障害用バッファ」2である。

0117

例えば、再作成部111eは、障害の生じた物理機器以外の物理機器のうち物理資源の空き容量のある物理機器を複数特定する。ここで、再作成部111eは、物理機器の障害発生時には、「空き」のスペースに加えて、「障害用バッファ」のスペースも使用する。これにより、再作成部111eは、「空き」が0の物理機器も含めて、より多くの物理機器が復旧処理を分担できるようにする。図13に示す例では、再作成部111eが、稼働中である物理機器#1〜物理機器#3及び物理機器#5を特定した場合を示す。

0118

そして、再作成部111eは、特定した複数の物理機器の物理資源を、障害の生じた物理機器#4に配置された仮想機器の再配置先として選択する。例えば、再作成部111eは、特定した複数の物理機器に順序付けを行う。ここで、再作成部111eは、特定した複数の物理機器の物理資源の空き容量が多い順に、特定した複数の物理機器に順序付けを行う。例えば、再作成部111eは、「空き」のスペースと「障害用バッファ」のスペースとの合計スペースを物理資源の空き容量とし、合計スペースが多い順に物理機器に順序付けを行う。図13の例では、再作成部111eが、合計スペースが6である物理機器#3、合計スペースが4である物理機器#1、合計スペースが4である物理機器#5、そして、合計スペースが2である物理機器#2の順で順序付けした場合を示す。

0119

続いて、再作成部111eは、障害の生じた物理機器に配置された仮想機器それぞれの再配置先として、順序に基づいて選択した物理機器の物理資源を選択する処理を繰り返す。一例をあげると、再作成部111eは、図13に示す数字順に仮想機器を再配置するように物理機器を選択する。ここで、再配置時は、空き容量が多い順に入れていくことも出来れば、空き容量がなくなるまで出来るだけ順々に別物理機器に入れていくこともできる。前者の場合は再配置後の空き容量が均等になるようにすることが目的で、後者の場合は出来るだけ多くの物理機器に再配置し速く復旧するが目的である。図13では、後者のロジックを想定した例である。より具体的には、再作成部111eは、物理機器#3、物理機器#1、物理機器#5、そして、物理機器#2の順で選択した物理機器の物理資源を仮想機器の再配置先として選択する処理を繰り返す。ここで、再作成部111eは、「空き」のスペースや「障害用バッファ」のスペースが無くなるまでは、各物理機器に仮想機器を順番に配置する。また、再作成部111eは、スペースが無くなった物理機器は飛ばすようにする。

0120

なお、再作成部111eは、稼働状態が「稼働中」である全ての物理機器の「空き」のスペース及び「障害用バッファ」のスペースが満たされるまで、稼働状態が「予備」である物理機器を選択しない。このように、仮想機器配置スケジューラ機能部111は、「空き」のスペースに加えて、仮想機器の作成時には利用されない「障害用バッファ」のスペースを予め準備しておき、障害時に多くの物理機器に仮想機器を再配置することで、高速の復旧を可能とする。また、再作成部111eは、障害が発生した物理機器に配置された仮想機器の全てを再配置可能ではない場合には、特定した物理機器の「空き」のスペースと「障害用バッファ」のスペースとに再配置可能な範囲で、仮想機器ごとに再配置先を選択する。

0121

また、Pacemakerのクラスタ構成は、最大8台程度で組み、障害の検知を行う。また、仮想機器配置スケジューラ機能部111は、クラスタを跨いで別物理機器に仮想機器を作成してもよいため、再作成が依頼される物理機器はクラスタのサイズ以上でも良い。また、全てが埋まった際に利用される予備機は存在してもしなくてもよい。クラスタ構成上はN−Act、0−Sbyで、Standby機を準備する必要はないため、物理機器の利用効率を高めることも出来る。

0122

そして、再作成部111eは、選択した物理機器103に、仮想機器を作成するようにクラウドコントローラ108に依頼する。

0123

まお、再作成部111eは、仮想マシンがダウンした場合には、物理機器に生じた障害を通知された場合と同様に仮想マシンを再作成させる物理機器を選択してもよく、或いは、ダウンした仮想マシンが稼働していた物理機器にダウンした仮想マシンを再作成させてもよい。

0124

また、再作成部111eは、障害判定部111cの指示に応じて、実施中である第2の復旧処理を中止する。実施中である第2の復旧処理を中止した場合、再作成部111eは、障害判定部111cの指示に応じて、新たに第2の復旧処理を実施する。かかる場合も、再作成部111eは、障害判定部111cの指示を受信した後、仮想マシン削除部111dから第1の復旧処理が終了したことを通知された場合に、第2の復旧処理を実施する。

0125

また、再作成部111eは、第2の復旧処理を開始する場合、仮想機器配置情報テーブル110aにおいて、障害の発生した仮想マシンに対応する「進捗状態」を「作成中(仮想マシンダウン)」或いは「作成中(物理機器障害)」に更新する。また、再作成部111eは、第2の復旧処理が終了した場合、仮想機器配置情報テーブル110aにおいて、障害の発生した仮想マシンに対応する「進捗状態」を「稼働中」に更新する。

0126

なお、図13に示す例では、再作成部111eが、特定した複数の物理機器の物理資源の空き容量が多い順に、特定した複数の物理機器に順序付けを行う場合について説明したが、実施形態はこれに限定されるものではない。例えば、再作成部111eは、物理資源の空き容量とは関係なく、特定した複数の物理機器に任意に順序付けを行うようにしてもよい。

0127

図14は、物理機器障害通知を受信した場合の仮想機器配置スケジューラ機能部111による処理手順を示すフローチャートである。図14に示すように、障害判定部111cは、物理機器障害通知を受信したか否かを判定する(ステップS101)。ここで、障害判定部111cは、物理機器障害通知を受信したと判定した場合(ステップS101、Yes)、仮想マシンに対して実施中の復旧処理が存在するか否かを判定する(ステップS102)。なお、障害判定部111cは、物理機器障害通知を受信しなかったと判定した場合(ステップS101、No)、物理機器障害通知を受信したか否かを判定する。

0128

障害判定部111cは、仮想マシンに対して実施中の復旧処理が存在すると判定しなかった場合(ステップS102、No)、ステップS107に移行する。一方、障害判定部111cは、仮想マシンに対して実施中の復旧処理が存在すると判定した場合(ステップS102、Yes)、仮想マシンに対して実施中の復旧処理が物理機器の障害に起因するか否かを判定する(ステップS103)。ここで、障害判定部111cは、仮想マシンに対して実施中の復旧処理が物理機器の障害に起因すると判定しなかった場合(ステップS103、No)、ステップS106に移行する。

0129

障害判定部111cは、仮想マシンに対して実施中の復旧処理が物理機器の障害に起因すると判定した場合(ステップS103、Yes)、物理機器障害通知が再送か否かを判定する(ステップS104)。例えば、障害判定部111cは、障害が通知された物理機器で稼働する仮想マシンの進捗状態が削除中である場合、物理機器障害通知が再送であると判定する。一方、障害判定部111cは、障害が通知された物理機器で稼働する仮想マシンの進捗状態が削除中でない場合、物理機器障害通知が再送ではないと判定する。すなわち、障害判定部111cは、障害が通知された物理機器で稼働する仮想マシンの進捗状態が稼働中又は作成中である場合、物理機器障害通知が再送ではないと判定する。

0130

障害判定部111cは、物理機器障害通知が再送であると判定した場合(ステップS104、Yes)、通知を破棄して(ステップS105)、処理を終了する。一方、障害判定部111cは、物理機器障害通知が再送であると判定しなかった場合(ステップS104、No)、実施中の処理を中止させる(ステップS106)。そして、障害判定部111cは、仮想マシン削除部111d及び再作成部111eに復旧処理を実施させる(ステップS107)。

0131

図15は、仮想マシンダウン通知を受信した場合の仮想機器配置スケジューラ機能部111による処理手順を示すフローチャートである。図15に示すように、障害判定部111cは、仮想マシンダウン通知を受信したか否かを判定する(ステップS201)。ここで、障害判定部111cは、仮想マシンダウン通知を受信したと判定した場合(ステップS201、Yes)、仮想マシンに対して実施中の復旧処理が存在するか否かを判定する(ステップS202)。なお、障害判定部111cは、仮想マシンダウン通知を受信しなかったと判定した場合(ステップS201、No)、仮想マシンダウン通知を受信したか否かを判定する。

0132

障害判定部111cは、仮想マシンに対して実施中の復旧処理が存在すると判定しなかった場合(ステップS202、No)、ステップS206に移行する。一方、障害判定部111cは、仮想マシンに対して実施中の復旧処理が存在すると判定した場合(ステップS202、Yes)、仮想マシンに対して実施中の復旧処理が第1の復旧処理であるか否かを判定する(ステップS203)。ここで、障害判定部111cは、仮想マシンに対して実施中の復旧処理が第1の復旧処理であると判定しなかった場合(ステップS203、No)、実施中の処理を中止させる(ステップS204)。そして、障害判定部111cは、仮想マシン削除部111d及び再作成部111eに復旧処理を実施させる(ステップS206)。

0133

一方、障害判定部111cは、仮想マシンに対して実施中の復旧処理が第1の復旧処理であると判定した場合(ステップS203、Yes)、通知を破棄して(ステップS205)、処理を終了する。

0134

上述したように、第1の実施形態に係る仮想機器管理装置109は、物理機器故障時と仮想マシンダウン時の復旧方法として統一的手段で行い、物理機器故障と仮想マシンダウンが重複しても、仮想マシンのステータスを管理し、仮想マシンが2重起動しないように復旧を行う。

0135

例えば、第1の実施形態に係る仮想機器管理装置109は、仮想マシンを稼働させる物理機器の障害に起因する第1の復旧処理が実施中であるときに物理機器の障害が新たに検出された場合、通知が再送であると判定し、新たに検出された障害に起因する第1の復旧処理及び第2の復旧処理を実施しない。

0136

また、第1の実施形態に係る仮想機器管理装置109は、仮想マシンを稼働させる物理機器の障害に起因する第2の復旧処理が実施中であるときに物理機器の障害が新たに検出された場合、実施中の第2の復旧処理を中止させる。そして、第1の実施形態に係る仮想機器管理装置109は、新たなイベントとして物理機器の復旧処理を実施する。

0137

また、第1の実施形態に係る仮想機器管理装置109は、仮想マシンの障害に起因する実施中の復旧処理が存在するときに仮想マシンを稼働させる物理機器の障害が新たに検出された場合、実施中の復旧処理を中止させる。そして、第1の実施形態に係る仮想機器管理装置109は、新たに検出された障害に起因する第1の復旧処理と第2の復旧処理とを実施する。

0138

また、第1の実施形態に係る仮想機器管理装置109は、第1の復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合、新たに検出された障害に起因する第1の復旧処理と第2の復旧処理とを実行しない。

0139

また、第1の実施形態に係る仮想機器管理装置109は、第2の復旧処理が実施中であるときに仮想マシンの障害が新たに検出された場合、実施中である第2の復旧処理を中止させ、新たに検出された障害に起因する第1の復旧処理と第2の復旧処理とを実施する。

0140

このように、第1の実施形態に係る仮想機器管理装置109は、物理機器故障と仮想マシンダウンが重複しても、仮想マシンのステータスを管理することで、仮想マシンが2重起動しないように復旧を実施する。この結果、第1の実施形態に係る仮想機器管理装置109は、仮想マシンを安全に復旧することができる。

0141

また、第1の実施形態に係る仮想機器管理装置109は、障害の生じた物理機器以外の物理機器のうち物理資源の空き容量のある物理機器を複数特定する。そして、第1の実施形態に係る仮想機器管理装置109は、特定した複数の物理機器の物理資源を、障害の生じた物理機器に配置された仮想機器の再配置先として選択する。すなわち、第1の実施形態に係る仮想機器管理装置109は、複数台の物理機器を仮想機器の復旧先として利用する。これにより、第1の実施形態に係る仮想機器管理装置109は、仮想機器を復旧するまでの時間を短縮することができる。

0142

より具体的には、従来方式では、N−Act、M−Sbyでクラスタを組み物理機器に障害が起きた際に、Pacemaker等の高可用ソフトウェアの機能によりStandby機にフェールオーバーし、OpenStack等のクラウドコントローラのDBを元に仮想機器を再構築していた。ここで、従来方式では、HAクラスタソフトウェアを用いたフェールオーバーは、1台のStandby機に仮想機器を新たに再構築するため、全仮想機器の復旧に時間がかかるという問題がある。

0143

一方、第1の実施形態に係る仮想機器管理装置109では、N−Act、0−Sbyでクラスタを組み、物理機器に障害が起きた際は、高可用ソフトウェアの機能により障害を検知するが、フェールオーバーせずに物理機器の障害を仮想機器管理装置109に通知する。仮想機器管理装置109は、各仮想機器に対して、再配置する複数の物理機器を決定し、配置する物理機器を指定してクラウドコントローラ108に再作成依頼を行う。そして、クラウドコントローラ108は、指定された物理機器に仮想機器を作成する。

0144

このように、第1の実施形態に係る仮想機器管理装置109は、故障した物理機器上で動作していた仮想機器を、複数台の物理機器に再作成することで高速に復旧する。言い換えると、仮想機器管理装置109は、複数台の物理機器を復旧先として利用するため、物理機器故障時の仮想機器復旧時間が短縮される。例えば、移行先物理機器が3台の場合は、復旧処理時間が1/3に短縮できる。

0145

また、第1の実施形態に係る仮想機器管理装置109は、Pacemaker等の高可用ソフトウェアでN−Act、0−Sbyでクラスタを組み障害検知を行う。ここで、第1の実施形態に係る仮想機器管理装置109は、クラスタの枠を超えて故障復旧を行うことが出来るため、移行先物理機器の台数クラスタサイズ以上にとることもできる。これにより、復旧時間をより短縮できる。

0146

更に、仮想機器管理システムでは、障害検知のためのクラスタはN−Act、0−Sbyであるため、Standby用の物理機器を準備する必要がなく、物理機器数の増大を抑えることができる。

0147

なお、上述した実施形態では、配置先選択部111bは、仮想機器を新規に作成する通常のオペレーション時に、仮想機器を出来るだけ分散して配置するように物理機器103を選択するものとして説明したが実施形態はこれに限定されるものではない。例えば、配置先選択部111bは、仮想機器を新規に作成する通常のオペレーション時には、仮想機器を分散させることなく配置するように物理機器103を選択するようにしてもよい。

0148

(第2の実施形態)
さて、これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、その他の実施形態にて実施されてもよい。そこで、以下では、その他の実施形態を示す。

0149

システム構成
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述の文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。

0150

また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。

0151

プログラム
また、上記の実施形態に係る仮想機器管理装置109が実行する処理をコンピュータが実行可能な言語で記述した仮想機器管理プログラムを生成することもできる。この場合、コンピュータが仮想機器管理プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる仮想機器管理プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された仮想機器管理プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、図1等に示した仮想機器管理装置109と同様の機能を実現する仮想機器管理プログラムを実行するコンピュータの一例を説明する。

0152

図16は、仮想機器管理プログラムを実行するコンピュータ1000を示す図である。図16に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。

0153

メモリ1010は、ROM(Read Only Memory)1011およびRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1041に接続される。ディスクドライブ1041には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1051およびキーボード1052が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1061が接続される。

0154

ここで、図16に示すように、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した仮想機器管理プログラムは、例えばハードディスクドライブ1031やメモリ1010に記憶される。

0155

また、仮想機器管理プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1031に記憶される。具体的には、上記実施形態で説明した障害判定部111cと同様の情報処理を実行する判定手順と、仮想マシン削除部111dと同様の情報処理を実行する削除手順と、再作成部111eと同様の情報処理を実行する再作成手順とが記述されたプログラムモジュール1093が、ハードディスクドライブ1031に記憶される。

0156

また、仮想機器管理プログラムによる情報処理に用いられるデータは、プログラムデータ1094として、例えば、ハードディスクドライブ1031に記憶される。そして、CPU1020が、ハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。

0157

なお、仮想機器管理プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、仮想機器管理プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。

0158

(その他)
なお、本実施形態で説明した仮想機器管理プログラムは、インターネットなどのネットワークを介して配布することができる。また、特定プログラムは、ハードディスク、フレキシブルディスクFD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。

0159

109仮想機器管理装置
110 仮想機器配置スケジューラDB
110a 仮想機器配置情報テーブル
110b物理資源情報テーブル
111 仮想機器配置スケジューラ機能部
111a作成依頼受付部
111b配置先選択部
111c障害判定部
111d仮想マシン削除部
111e 再作成部
1000コンピュータ
1010メモリ
1011 ROM
1012 RAM
1020 CPU
1030ハードディスクドライブインタフェース
1031 ハードディスクドライブ
1040ディスクドライブインタフェース
1041 ディスクドライブ
1050シリアルポートインタフェース
1051マウス
1052キーボード
1060ビデオアダプタ
1061ディスプレイ
1070ネットワークインタフェース
1080バス
1091 OS
1092アプリケーションプログラム
1093プログラムモジュール
1094プログラムデータ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ