(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-20
(45)【発行日】2024-08-28
(54)【発明の名称】仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置
(51)【国際特許分類】
G06F 21/10 20130101AFI20240821BHJP
G06F 9/455 20180101ALI20240821BHJP
G06F 9/50 20060101ALI20240821BHJP
【FI】
G06F21/10 350
G06F9/455 150
G06F9/50 150Z
(21)【出願番号】P 2021000052
(22)【出願日】2021-01-04
【審査請求日】2023-10-12
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】佐藤 聡介
【審査官】行田 悦資
(56)【参考文献】
【文献】国際公開第2012/081114(WO,A1)
【文献】特開2016-167143(JP,A)
【文献】特開2014-002583(JP,A)
【文献】中国特許出願公開第106909439(CN,A)
【文献】米国特許第8739257(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00 -21/86
G06F 9/455
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
仮想マシンに割り当てられた第1の仮想マシン識別子と、前記仮想マシンのマイグレーションを実行可能なコンピュータ群に割り当てられた第1の基盤識別子と、前記仮想マシンのライセンスを示すライセンスデータとを対応付けた設定情報を取得し、
他のコンピュータから前記コンピュータへの前記マイグレーションが実行される場合、前記コンピュータが属するコンピュータ群に割り当てられた第2の基盤識別子と前記設定情報が示す前記第1の基盤識別子との比較を含む第1の認証処理を実行し、
前記第1の認証処理に成功した場合、前記仮想マシンに割り当てられた識別子であって前記コンピュータに依存する第2の仮想マシン識別子と前記設定情報が示す前記第1の仮想マシン識別子との比較を含む第2の認証処理をスキップする、
処理を実行させる仮想マシン制御プログラム。
【請求項2】
前記コンピュータに更に、前記マイグレーション以外によって前記仮想マシンが前記コンピュータで起動する場合、前記第2の認証処理を実行する処理を実行させる、
請求項1記載の仮想マシン制御プログラム。
【請求項3】
前記マイグレーションでは、前記設定情報が、前記仮想マシンから前記他のコンピュータで実行される第1のハイパーバイザに転送され、前記第1のハイパーバイザから前記コンピュータで実行される第2のハイパーバイザに転送され、前記第2のハイパーバイザから前記仮想マシンに転送される、
請求項1記載の仮想マシン制御プログラム。
【請求項4】
前記第2の基盤識別子は、前記コンピュータを含む異なるコンピュータで実行される異なるハイパーバイザに割り当てられる共通の識別子である、
請求項1記載の仮想マシン制御プログラム。
【請求項5】
前記第2の基盤識別子は、前記コンピュータで実行されるハイパーバイザから前記仮想マシンに通知され、前記第1の認証処理は、前記仮想マシンで実行される、
請求項1記載の仮想マシン制御プログラム。
【請求項6】
コンピュータが、
仮想マシンに割り当てられた第1の仮想マシン識別子と、前記仮想マシンのマイグレーションを実行可能なコンピュータ群に割り当てられた第1の基盤識別子と、前記仮想マシンのライセンスを示すライセンスデータとを対応付けた設定情報を取得し、
他のコンピュータから前記コンピュータへの前記マイグレーションが実行される場合、前記コンピュータが属するコンピュータ群に割り当てられた第2の基盤識別子と前記設定情報が示す前記第1の基盤識別子との比較を含む第1の認証処理を実行し、
前記第1の認証処理に成功した場合、前記仮想マシンに割り当てられた識別子であって前記コンピュータに依存する第2の仮想マシン識別子と前記設定情報が示す前記第1の仮想マシン識別子との比較を含む第2の認証処理をスキップする、
仮想マシン制御方法。
【請求項7】
情報処理装置であって、
仮想マシンに割り当てられた第1の仮想マシン識別子と、前記仮想マシンのマイグレーションを実行可能な情報処理装置群に割り当てられた第1の基盤識別子と、前記仮想マシンのライセンスを示すライセンスデータとを対応付けた設定情報を記憶する記憶部と、
他の情報処理装置から前記情報処理装置への前記マイグレーションが実行される場合、前記情報処理装置が属する情報処理装置群に割り当てられた第2の基盤識別子と前記設定情報が示す前記第1の基盤識別子との比較を含む第1の認証処理を実行し、前記第1の認証処理に成功した場合、前記仮想マシンに割り当てられた識別子であって前記情報処理装置に依存する第2の仮想マシン識別子と前記設定情報が示す前記第1の仮想マシン識別子との比較を含む第2の認証処理をスキップする処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置に関する。
【背景技術】
【0002】
コンピュータ仮想化技術は、物理マシン上に1以上の仮想マシンを配置する。物理マシンは、ハイパーバイザなどの制御ソフトウェアを実行する。制御ソフトウェアは、物理マシンが有するハードウェアリソースの一部を各仮想マシンに割り当てて、仮想マシン間で情報処理を分離する。ハードウェアリソースには、プロセッサリソース、メモリリソース、ストレージリソース、通信リソースなどが含まれる。仮想マシンは、ゲストOS(Operating System)を実行することがある。また、仮想マシンは、仮想ルータ、ファイアウォール、データベース管理システムなどのミドルウェアを実行することがある。
【0003】
制御ソフトウェアは、物理マシン間で仮想マシンを移動するマイグレーションを実行することがある。例えば、ある物理マシンに障害が発生した場合、制御ソフトウェアは、その物理マシンに配置された全ての仮想マシンを正常な物理マシンに移動することがある。また、例えば、ある物理マシンの保守作業を行う場合、制御ソフトウェアは、その物理マシンに配置された全ての仮想マシンを保守対象外の物理マシンに移動することがある。また、例えば、ある物理マシンの負荷が高い場合、制御ソフトウェアは、その物理マシンに配置された一部の仮想マシンを負荷の低い物理マシンに移動することがある。
【0004】
なお、仮想マシンにインストールされたソフトウェアのライセンスを管理する情報処理システムが提案されている。提案の情報処理システムは、仮想マシンIDとユーザIDと許可されたソフトウェアのリストとを含む使用許可情報を記憶する。情報処理システムは、ユーザ端末からの要求に応じて、ユーザ認証を行った上で仮想マシンを複製し、使用許可情報を更新する。情報処理システムは、仮想マシンにおいてソフトウェアを起動する際に、使用許可情報に基づいてライセンス認証を行う。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
情報処理システムは、仮想マシンベンダから仮想マシン単位でライセンスを受けて仮想マシンを起動することがある。例えば、情報処理システムは、ゲストOSや各種ミドルウェアがパッケージ化された仮想マシンイメージを仮想マシンベンダから取得し、取得した仮想マシンイメージを用いて仮想マシンを起動する。この場合、ライセンスに反する不正な仮想マシンの実行を抑制するため、ライセンス認証が行われることがある。
【0007】
ライセンス認証の1つの方法として、何れの物理マシンで実行されるかによって変化する仮想マシン識別子を仮想マシンに割り当て、その仮想マシン識別子をライセンスデータと関連付ける方法がある。このライセンス認証は、特定の物理マシン以外の物理マシンで仮想マシンが実行されることを拒否する。しかし、マイグレーションによって仮想マシンが移動する場合、マイグレーション先の物理マシンによる仮想マシンの実行が拒否されてしまう。このため、仮想マシンベンダからのライセンスの再取得などの手続きを要することがあり、マイグレーションが遅延するおそれがある。
【0008】
そこで、1つの側面では、本発明は、ライセンスで保護された仮想マシンのマイグレーションを迅速に実行することを目的とする。
【課題を解決するための手段】
【0009】
1つの態様では、コンピュータに以下の処理を実行させる仮想マシン制御プログラムが提供される。仮想マシンに割り当てられた第1の仮想マシン識別子と、仮想マシンのマイグレーションを実行可能なコンピュータ群に割り当てられた第1の基盤識別子と、仮想マシンのライセンスを示すライセンスデータとを対応付けた設定情報を取得する。他のコンピュータからコンピュータへのマイグレーションが実行される場合、コンピュータが属するコンピュータ群に割り当てられた第2の基盤識別子と設定情報が示す第1の基盤識別子との比較を含む第1の認証処理を実行する。第1の認証処理に成功した場合、仮想マシンに割り当てられた識別子であってコンピュータに依存する第2の仮想マシン識別子と設定情報が示す第1の仮想マシン識別子との比較を含む第2の認証処理をスキップする。
【0010】
また、1つの態様では、コンピュータが実行する仮想マシン制御方法が提供される。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
【発明の効果】
【0011】
1つの側面では、ライセンスで保護された仮想マシンのマイグレーションを迅速に実行できる。
【図面の簡単な説明】
【0012】
【
図1】第1の実施の形態の情報処理装置を説明するための図である。
【
図2】第2の実施の形態の情報処理システムの例を示す図である。
【
図3】ノードが有するハードウェアの例を示すブロック図である。
【
図4】ノードが有するソフトウェアの例を示すブロック図である。
【
図6】仮想マシン作成の例を示すシーケンス図である。
【
図7】マイグレーションの例を示すシーケンス図である。
【
図8】ライセンス認証の手順例を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0014】
図1は、第1の実施の形態の情報処理装置を説明するための図である。
第1の実施の形態の情報処理装置10には、仮想マシン13が配置され得る。仮想マシン13は、コンピュータ仮想化技術によって、物理マシンが有するハードウェアリソースの一部を用いて形成される仮想的コンピュータである。ハードウェアリソースには、プロセッサリソース、メモリリソース、ストレージリソース、通信リソースなどが含まれる。情報処理装置20から情報処理装置10に、仮想マシン13のマイグレーションが行われることがある。マイグレーションでは、仮想マシン13が配置される物理マシンが変更される。情報処理装置10,20は、例えば、サーバ装置である。情報処理装置10,20は、コンピュータ、物理マシン、サーバまたはノードと呼ばれてもよい。
【0015】
情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性半導体メモリでもよい。また、記憶部11は、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。処理部12が、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。複数のプロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。
【0016】
仮想マシン13は、ゲストOSを含む狭義の仮想マシンでもよいし、ゲストOSを含まない軽量コンテナでもよい。仮想マシン13は、仮想ルータ、ファイアウォール、ストレージ管理システムなどのミドルウェアを含むことがある。仮想マシン13は、例えば、ゲストOSや各種ミドルウェアをパッケージ化した仮想マシンイメージから起動される。
【0017】
仮想マシン13には、仮想マシン単位のラインセンスが付与される。例えば、仮想マシンベンダから、仮想マシンイメージとライセンスデータが提供される。仮想マシン13のライセンスは、仮想マシン13の有効期限や、仮想マシン13でONにすることが許可された機能を規定してもよい。仮想マシン13のライセンスは、同一の仮想マシンイメージに基づいて不正に仮想マシン13を複製することを禁止する。
【0018】
仮想マシン13には、仮想マシン識別子が割り当てられる。仮想マシン識別子は、仮想マシン13が配置される物理マシンに依存する。例えば、仮想マシン識別子は、物理マシンのホスト名、IP(Internet Protocol)アドレス、MAC(Media Control Access)アドレスなど、物理マシンの識別子に応じた記号列を含む。仮想マシン13のマイグレーションが行われると、仮想マシン識別子が変化する。
【0019】
仮想マシン13のマイグレーションを実行可能な物理マシンの集合には、基盤識別子が割り当てられる。マイグレーションを実行可能な物理マシンの範囲は、例えば、システム管理者によって規定される。例えば、それら物理マシンで実行されるハイパーバイザなどの制御ソフトウェアの集合に対して、基盤識別子が割り当てられる。異なる物理マシンの制御ソフトウェア同士が通信して、仮想マシン13のマイグレーションを実行する。連携している制御ソフトウェアの集合が、仮想化基盤と呼ばれてもよい。
【0020】
記憶部11は、仮想マシン13についての設定情報14を記憶する。設定情報14は、仮想マシン13のライセンス管理に用いられる。設定情報14が、環境情報または環境ファイルと呼ばれてもよい。設定情報14は、例えば、ライセンスに基づいて仮想マシン13が何れかの物理マシン上に作成されるときまたは最初に起動するときに生成される。情報処理装置10がマイグレーション先の物理マシンである場合、設定情報14は、マイグレーション元の物理マシンから転送されてもよい。情報処理装置10で仮想マシン13が起動する場合、設定情報14が、情報処理装置10の制御ソフトウェア経由(例えば、ハイパーバイザ経由)で仮想マシン13に提供されてもよい。
【0021】
設定情報14は、仮想マシン識別子15a、基盤識別子16aおよびライセンスデータ17を含む。仮想マシン識別子15aおよび基盤識別子16aが、ライセンスデータ17と対応付けられている。仮想マシン識別子15aは、例えば、仮想マシン13にライセンスが付与された時点の物理マシンに依存した仮想マシン識別子である。仮想マシン識別子15aは、ライセンスを受けるために仮想マシンベンダに提供されてもよく、仮想マシンベンダによってライセンスデータ17と関連付けられてもよい。設定情報14は、仮想マシン識別子15aの真正性を検証するためのデジタル署名を含んでもよい。
【0022】
基盤識別子16aは、仮想マシン13にライセンスが付与された時点の物理マシンが属する物理マシン集合の基盤識別子である。基盤識別子16aは、例えば、何れかの物理マシン上に仮想マシン13が作成されるときまたは最初に起動するときに、その物理マシンの制御ソフトウェアから仮想マシン13に提供されてもよい。基盤識別子16aは、ライセンスを受けるために仮想マシンベンダに提供されてもよく、仮想マシンベンダによってライセンスデータ17と関連付けられてもよい。設定情報14は、基盤識別子16aの真正性を検証するためのデジタル署名を含んでもよい。
【0023】
ライセンスデータ17は、仮想マシン13のライセンスを示す。ライセンスデータ17は、仮想マシン13の有効期限を示してもよい。また、ライセンスデータ17は、仮想マシン13でONにすることが許可された機能を示してもよい。
【0024】
処理部12は、情報処理装置10で仮想マシン13が実行される場合、仮想マシン13に対してライセンス認証を行う。情報処理装置10で仮想マシン13が実行される場合としては、情報処理装置20から情報処理装置10への仮想マシン13のマイグレーションが行われる場合と、それ以外の場合とが含まれる。処理部12は、ライセンス認証を、仮想マシン13が情報処理装置10で起動した直後に行ってもよいし、起動して一定時間経過した後に行ってもよい。ライセンス認証は、仮想マシン13の中で実行されてもよく、仮想マシンイメージに含まれる認証プログラムによって実装されてもよい。
【0025】
ライセンス認証に成功した場合、処理部12は、情報処理装置10における仮想マシン13の実行を許可する。例えば、処理部12は、ライセンスデータ17に従って仮想マシン13の各種機能をONにすることを許可する。一方、ライセンス認証に失敗した場合、処理部12は、情報処理装置10における仮想マシン13の実行を拒否する。例えば、処理部12は、仮想マシン13の各種機能をOFFにする。後者の場合、処理部12は、ライセンス違反を示すエラーメッセージを管理者端末に送信してもよい。
【0026】
ライセンス認証にあたり、処理部12は、仮想マシン13について、仮想マシン識別子15bおよび基盤識別子16bの少なくとも一方を取得する。仮想マシン識別子15bは、情報処理装置10に依存する仮想マシン識別子である。仮想マシン識別子15bは、例えば、情報処理装置10で仮想マシン13が起動するときに仮想マシン13に割り当てられる。情報処理装置10がマイグレーション先の物理マシンである場合、仮想マシン識別子15bは、マイグレーション前の仮想マシン識別子と異なる。
【0027】
基盤識別子16bは、情報処理装置10が属する物理マシン集合に割り当てられた基盤識別子である。基盤識別子16bは、例えば、情報処理装置10が実行する制御ソフトウェアによって保持され、制御ソフトウェアから仮想マシン13に通知される。情報処理装置20から情報処理装置10への仮想マシン13のマイグレーションが正当である場合、情報処理装置10,20は同一の基盤識別子を有する。この場合、基盤識別子16bは、マイグレーション前の基盤識別子と同一である。
【0028】
マイグレーションが原因で情報処理装置10において仮想マシン13が実行される場合、処理部12は、認証処理18を行う。認証処理18は、基盤識別子16bと設定情報14が示す基盤識別子16aとの比較を含む。例えば、処理部12は、基盤識別子16a,16bが同一である場合は認証処理18の成功と判定し、基盤識別子16a,16bが異なる場合は認証処理18の失敗と判定する。認証処理18が失敗した場合、処理部12は、マイグレーションが不正であると判断して仮想マシン13の実行を拒否してもよい。一方、認証処理18が成功した場合、処理部12は、認証処理19をスキップする。
【0029】
認証処理19は、仮想マシン識別子15bと設定情報14が示す仮想マシン識別子15aとの比較を含む。例えば、処理部12は、仮想マシン識別子15a,15bが同一である場合は認証処理19の成功と判定し、仮想マシン識別子15a,15bが異なる場合は認証処理19の失敗と判定する。認証処理19をスキップする場合、仮想マシン13の仮想マシン識別子が変化しても仮想マシン13の実行が許可され得る。よって、ライセンス発行当初と物理マシンが変わっても仮想マシン13の実行が許可され得る。
【0030】
マイグレーションの際の認証処理18が成功した場合、処理部12は、ライセンスデータ17に従うことを条件として仮想マシン13の実行を許可してもよい。例えば、処理部12は、仮想マシン13が有効期限内であれば、仮想マシン13の機能をONにする。
【0031】
なお、マイグレーション以外が原因で情報処理装置10において仮想マシン13が実行される場合、処理部12は、認証処理19を行ってもよい。この場合、ライセンス発行当初の物理マシンと情報処理装置10との同一性が要求される。認証処理19が失敗した場合、処理部12は、仮想マシン13が不正に複製されたと判断して仮想マシン13の実行を拒否してもよい。認証処理19を行う場合、処理部12は、認証処理18を合わせて行ってもよいし、認証処理18を省略してもよい。
【0032】
以上説明したように、第1の実施の形態の情報処理装置10は、仮想マシン13のライセンス認証を行う。ライセンス認証において、情報処理装置10は、情報処理装置10がマイグレーション先の物理マシンである場合、基盤識別子16bを用いた認証処理18を行い、仮想マシン識別子15bを用いた認証処理19をスキップする。
【0033】
これにより、仮想マシン単位でライセンスが発行されている状況において、仮想マシン13がライセンスで保護される。また、物理マシンに依存する仮想マシン識別子15aがライセンスデータ17と対応付けられる。よって、仮想マシン13を不正に複製するライセンス違反が検出される。一方、正当なマイグレーションの場合には、マイグレーション先の物理マシンによる仮想マシン13の実行が許可される。よって、仮想マシンベンダからのライセンスの再取得などの手続きを待たなくてもマイグレーションが完了し、マイグレーションの遅延が抑制される。このように、マイグレーションが迅速に実行される。
【0034】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
【0035】
第2の実施の形態の情報処理システムは、ネットワーク30、ストレージサーバ31、管理者端末32、ライセンスサーバ33、および、ノード100,100a,100bを含む複数のノードを有する。ネットワーク30は、LAN(Local Area Network)を含んでもよく、インターネットなどの広域ネットワークを含んでもよい。なお、ノード100は、第1の実施の形態の情報処理装置20に対応する。ノード100aは、第1の実施の形態の情報処理装置10に対応する。
【0036】
ノード100,100a,100bは、1以上の仮想マシンが配置され得るサーバ装置である。ノード100,100a,100bが、コンピュータ、情報処理装置、物理マシンまたはサーバと呼ばれてもよい。ノード100,100a,100bはそれぞれ、仮想マシンを制御するハイパーバイザを実行する。複数のノードのハイパーバイザが連携して、共通の仮想化基盤を形成する。同一の仮想化基盤上では、仮想マシンが配置されるノードを変更するマイグレーションが実行され得る。マイグレーションは、ゲストOSのシャットダウンおよび再起動を伴うオフラインマイグレーションでもよいし、ゲストOSをシャットダウンせずにメモリデータを複製するライブマイグレーションでもよい。
【0037】
ストレージサーバ31は、HDDやSSDなどの不揮発ストレージを用いてデータを記憶するサーバ装置である。ストレージサーバ31は、仮想マシンを起動するための仮想マシンイメージや、仮想マシンが使用するユーザデータを記憶する。ゲストOSや各種ミドルウェアのプログラムが、仮想マシンイメージとしてパッケージ化されている。仮想マシンイメージは、例えば、仮想マシンベンダから提供される。
【0038】
管理者端末32は、情報処理システムの管理者が使用するクライアント装置である。管理者は、オペレータと呼ばれてもよい。管理者端末32が、コンピュータ、情報処理装置、クライアントまたはオペレータ端末と呼ばれてもよい。管理者端末32は、新規の仮想マシンを生成する場合、ライセンスサーバ33に仮想マシンのライセンスを要求する。管理者端末32は、ライセンスサーバ33からライセンスデータを受信し、仮想マシンを起動するノードにライセンスデータを送信する。ライセンスは、仮想マシンベンダによって仮想マシン単位で発行される。仮想マシンのライセンスは、仮想マシンに含まれるゲストOSやミドルウェアなどの個々のソフトウェアのライセンスとは異なる。
【0039】
管理者端末32は、仮想マシンのマイグレーションをノード100,100a,100bに指示することがある。マイグレーションは、故障したノード上の仮想マシンを他のノードに退避するために行われ得る。また、マイグレーションは、保守作業を行うノード上の仮想マシンを他のノードに退避するために行われ得る。また、マイグレーションは、負荷の高いノードから負荷の低いノードに仮想マシンを移す負荷分散のために行われ得る。仮想マシンを配置するノードが変わる場合、管理者端末32は、その仮想マシンのライセンスの再発行をライセンスサーバ33に要求することがある。
【0040】
なお、管理者は、同一の仮想化基盤に属するノードの範囲、すなわち、仮想マシンのマイグレーションが可能なノードの範囲を定義しておく。同一の仮想化基盤の範囲は、ある事業者が有する全てのノードであってもよいし、ある事業者が有するノードのうちの一部のノードであってもよい。各ノードのハイパーバイザは、仮想化基盤の範囲を示す情報を保持する。同一の仮想化基盤に属する複数のノードのハイパーバイザが相互に通信する。
【0041】
ライセンスサーバ33は、仮想マシンベンダが使用するサーバ装置である。ライセンスサーバ33が、コンピュータ、情報処理装置またはサーバと呼ばれてもよい。また、ライセンスサーバ33がクライアント装置に置き換えられてもよい。ライセンスサーバ33は、仮想マシンベンダが事業者に提供する仮想マシンイメージのライセンスを管理する。ライセンスサーバ33は、管理者端末32からライセンス発行の要求を受信し、ライセンスデータを管理者端末32に送信する。ライセンスの発行の際には、人手による確認作業が行われることがある。よって、ライセンス発行の要求を受信してからライセンスデータを送信するまでに、数日程度を要することがある。
【0042】
図3は、ノードが有するハードウェアの例を示すブロック図である。
ノード100は、CPU101、RAM102、HDD103、画像インタフェース104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。上記のユニットは、バスに接続されている。他のノード、ストレージサーバ31、管理者端末32およびライセンスサーバ33が、ノード100と同様のハードウェアを有してもよい。なお、CPUは、第1の実施の形態の処理部12に対応する。RAMまたはHDDは、第1の実施の形態の記憶部11に対応する。
【0043】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムおよびデータの少なくとも一部をRAM102にロードし、プログラムを実行する。ノード100は、複数のプロセッサを有してもよい。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。
【0044】
RAM102は、CPU101で実行されるプログラムおよびCPU101で演算に使用されるデータを一時的に記憶する揮発性半導体メモリである。ノード100は、RAM以外の種類の揮発性メモリを有してもよい。
【0045】
HDD103は、オペレーティングシステム(OS)、ミドルウェア、アプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性ストレージである。ノード100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の不揮発性ストレージを有してもよい。
【0046】
画像インタフェース104は、CPU101からの命令に従って、ノード100に接続された表示装置111に画像を出力する。表示装置111は、例えば、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイまたはプロジェクタである。ノード100に、プリンタなどの他の種類の出力デバイスが接続されてもよい。
【0047】
入力インタフェース105は、ノード100に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112は、例えば、マウス、タッチパネルまたはキーボードである。ノード100に複数の種類の入力デバイスが接続されてもよい。
【0048】
媒体リーダ106は、記録媒体113に記録されたプログラムおよびデータを読み取る読み取り装置である。記録媒体113は、例えば、磁気ディスク、光ディスクまたは半導体メモリである。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)およびHDDが含まれる。光ディスクには、CD(Compact Disc)およびDVD(Digital Versatile Disc)が含まれる。媒体リーダ106は、記録媒体113から読み取られたプログラムおよびデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、CPU101によって実行されることがある。
【0049】
記録媒体113は、可搬型記録媒体であってもよい。記録媒体113は、プログラムおよびデータの配布に用いられることがある。また、記録媒体113およびHDD103が、コンピュータ読み取り可能な記録媒体と呼ばれてもよい。
【0050】
通信インタフェース107は、ネットワーク30に接続される。通信インタフェース107は、他のノード、ストレージサーバ31および管理者端末32と通信することがある。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよい。また、通信インタフェース107は、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【0051】
前述のように、仮想マシンベンダから提供される仮想マシンイメージは、ライセンスによって保護される。仮想マシンイメージを不正に複製して想定外のノードで仮想マシンを起動することは、ライセンス違反である。そこで、ノード100,100a,100bは、仮想マシンを起動する際にライセンス認証を行う。
【0052】
ただし、ライセンス認証を過度に厳格に行うと、マイグレーションによるノード変更を円滑に行えないおそれがある。仮想マシンが配置されるノードを変更する毎にライセンスの再取得が要求されると、マイグレーションを適時に行うことが難しくなる。例えば、ノード障害の発生時に仮想マシンを迅速に退避することが難しくなる。そこで、第2の実施の形態の情報処理システムは、マイグレーションを考慮したライセンス認証を行う。
【0053】
図4は、ノードが有するソフトウェアの例を示すブロック図である。
ノード100は、ハイパーバイザ120および仮想マシン130を有する。ノード100aは、ハイパーバイザ120aを有する。ハイパーバイザ120,120aおよび仮想マシン130は、プログラムを用いて実装される。他のノードも、同様のハイパーバイザを有する。ハイパーバイザ120,120aは、同一の仮想化基盤に属する。よって、ノード100からノード100aに仮想マシン130を移すことが可能である。
【0054】
ハイパーバイザ120は、基盤ID管理部121、環境ファイル管理部122およびマイグレーション制御部123を有する。ハイパーバイザ120aは、基盤ID管理部121a、環境ファイル管理部122aおよびマイグレーション制御部123aを有する。以下では代表してハイパーバイザ120について説明する。ハイパーバイザ120aも、ハイパーバイザ120と同様の機能を有する。
【0055】
基盤ID管理部121は、仮想化基盤を識別する基盤IDを保持する。同一の仮想化基盤に属するハイパーバイザ、すなわち、相互に仮想マシンのマイグレーションが可能なノード群のハイパーバイザは、同一の基盤IDをもつ。基盤IDは、管理者端末32から通知されてもよいし、異なるノードの基盤ID管理部が相互に通信して決定されてもよい。基盤ID管理部121は、ノード100において仮想マシン130が起動するとき、仮想マシン130に基盤IDを通知する。
【0056】
環境ファイル管理部122は、仮想マシン毎に当該仮想マシンのライセンスを示す環境ファイルを管理する。環境ファイルは、第1の実施の形態の設定情報14に対応する。仮想マシン130の環境ファイルは、仮想マシン130が生成されて最初に起動されるときに、仮想マシン130によって生成される。
【0057】
仮想マシン130をノード100aに移すマイグレーションの場合、環境ファイル管理部122は、仮想マシン130から環境ファイルの複製を取得する。そして、環境ファイル管理部122は、環境ファイルをノード100aのハイパーバイザ120aに転送する。環境ファイルは、ハイパーバイザ120,120aの間で直接送信されてもよいし、他の情報処理装置を経由して複製されてもよい。ノード100が仮想マシン130を受け入れるマイグレーションの場合、環境ファイル管理部122は、マイグレーション元のノードから環境ファイルを受信し、仮想マシン130に環境ファイルを提供する。
【0058】
マイグレーション制御部123は、管理者端末32からの命令に応じて、仮想マシン130のマイグレーションを実行する。仮想マシン130をノード100aに移すマイグレーションの場合、マイグレーション制御部123は、仮想マシン130のゲストOSをシャットダウンする。マイグレーション制御部123は、仮想マシン130に割り当てられたハードウェアリソースを解放して、ノード100から仮想マシン130を削除する。
【0059】
ノード100が仮想マシン130を受け入れるマイグレーションの場合、マイグレーション制御部123は、ハードウェアリソースを仮想マシン130に割り当てる。マイグレーション制御部123は、ストレージサーバ31から仮想マシンイメージを読み出し、仮想マシンイメージに基づいて仮想マシン130のゲストOSおよびその他のソフトウェアを起動する。ハードウェアリソースには、CPU101などのプロセッサリソース、RAM102の記憶領域などのメモリリソース、HDD103の記憶領域などのストレージリソース、および、通信インタフェース107の帯域などの通信リソースが含まれる。
【0060】
仮想マシン130を起動するとき、ハイパーバイザ120は、仮想マシン130に仮想マシンIDを付与する。第2の実施の形態の仮想マシンIDは、ノードを識別するノードIDを用いて生成される。よって、マイグレーション前後で仮想マシンIDが変化する。ノードIDは、例えば、ホスト名、IPアドレス、MACアドレスなどである。仮想マシンIDは、例えば、ノードIDまたはノードIDのハッシュ値を含む。
【0061】
なお、上記ではオフラインマイグレーションを説明したが、マイグレーション制御部123はライブマイグレーションを実行してもよい。仮想マシン130をノード100aに移すライブマイグレーションの場合、マイグレーション制御部123は、仮想マシン130のゲストOSをシャットダウンせずにサスペンドし、メモリデータをノード100aに複製する。マイグレーション制御部123は、サスペンド状態のままハードウェアリソースを解放して、ノード100から仮想マシン130を削除する。
【0062】
仮想マシン130は、ゲストOS131、仮想ルータ132、ファイアウォール133、環境ファイル記憶部134およびライセンス管理部135を有する。ゲストOS131は、仮想マシン130に割り当てられたハードウェアリソースを管理し、仮想マシン130上での各種ソフトウェアの実行を制御するオペレーティングシステムである。仮想ルータ132は、仮想マシン130の外部との間でパケットを転送するソフトウェアルータである。ファイアウォール133は、パケットレベルまたはアプリケーションレベルで不正な通信を検出して遮断するセキュリティソフトウェアである。
【0063】
環境ファイル記憶部134は、仮想マシン130のライセンスを示す環境ファイルを記憶する。環境ファイル記憶部134は、例えば、仮想マシン130に割り当てられたRAM102の記憶領域を用いて実装される。ライセンス管理部135は、環境ファイルを管理し、仮想マシン130の起動の際にライセンス認証を実行する。ライセンス管理部135は、例えば、仮想マシン130の起動の際に実行されるサービスである。
【0064】
ライセンス管理部135は、仮想マシン130の作成時に環境ファイルを生成して、環境ファイル記憶部134に格納する。このとき、ライセンス管理部135は、ハイパーバイザ120から仮想マシンIDおよび基盤IDを取得する。また、ライセンス管理部135は、管理者端末32からライセンスデータを受信する。ライセンス管理部135は、仮想マシンID、基盤IDおよびライセンスデータを環境ファイルに書き込む。
【0065】
ノード100からノード100aへのマイグレーションの場合、ライセンス管理部135は、環境ファイル記憶部134に記憶された環境ファイルをハイパーバイザ120に提供する。その後、ライセンス管理部135は、ハイパーバイザ120aから環境ファイルを取得して環境ファイル記憶部134に格納する。また、ライセンス管理部135は、ハイパーバイザ120aから仮想マシンIDおよび基盤IDを取得する。そして、ライセンス管理部135は、環境ファイルに基づいてライセンス認証を実行する。
【0066】
ライセンス認証では、ライセンス管理部135は、仮想マシン130を起動するノードの正当性を検証するため、原則として現在の仮想マシンIDと環境ファイルの仮想マシンIDとが一致することを要求する。ただし、マイグレーション後の起動では仮想マシンIDが変化しているため、上記の2つの仮想マシンIDは一致しない。そこで、ライセンス管理部135は、仮想マシンIDの一致に代えて、現在の基盤IDと環境ファイルの基盤IDとが一致することを要求する。また、ライセンス管理部135は、ノードの正当性に加えて、ライセンスの有効期限などの他のライセンス条件の具備を検証する。
【0067】
図5は、環境ファイルの例を示す図である。
環境ファイル136は、仮想マシン130の環境ファイル記憶部134に記憶される。ノード100からノード100aへのマイグレーション時には、環境ファイル136は、ハイパーバイザ120に退避されてハイパーバイザ120aに転送される。
【0068】
環境ファイル136は、仮想マシンID、基盤ID、シリアル番号、有効期限および機能フラグを含む。シリアル番号、有効期限および機能フラグは、仮想マシンベンダによって規定される。シリアル番号、有効期限および機能フラグは、ライセンスサーバ33から管理者端末32に送信されるライセンスデータに含まれる。
【0069】
仮想マシンIDは、仮想マシン130を識別する識別子であり、仮想マシン130が配置されるノードに応じて変化する。仮想マシンIDは、ノードを識別する識別情報とノード内で仮想マシンを区別するための識別情報とから生成される。仮想マシンIDは、上記の2つの識別情報を連結した文字列でもよいし、上記の2つの識別情報それぞれから変換された符号(例えば、ハッシュ値)を連結したものであってもよいし、上記の2つの識別情報を連結した文字列から変換された符号でもよい。
【0070】
基盤IDは、マイグレーションを実行可能なノードの範囲に相当する仮想化基盤を識別する識別子である。同一の基盤IDをもつノード間での仮想マシン130の移動は、仮想マシンベンダが許容する正当なマイグレーションである。シリアル番号は、仮想マシン130のライセンスを識別する識別子である。
【0071】
有効期限は、仮想マシン130のライセンスの期限である。仮想マシン130を起動するノードが正当であっても、期限後の仮想マシン130の起動は拒否される。なお、後述する仮ライセンスの有効期限は、1週間や1ヶ月のように短く設定されている。機能フラグは、仮想マシン130に含まれる各機能をライセンシーが使用できるか否かを示す。仮想マシン130の機能は、例えば、Webサーバなどのソフトウェアに対応する。仮想マシン130が起動したとき、仮想マシン130は、機能フラグがONである機能を有効にし、機能フラグがOFFである機能を無効にする。
【0072】
仮想マシンIDとライセンスデータとは、仮想マシンベンダによって紐付けられる。ライセンス発行の際に、仮想マシンIDが事業者から仮想マシンベンダに提供される。ライセンスデータは、仮想マシンIDの正当性を示すデジタル署名を含んでもよい。仮想マシン130は、デジタル署名を検証することで、環境ファイル136の仮想マシンIDが改竄されていないことを確認できる。また、基盤IDが事業者から仮想マシンベンダに提供されてもよく、仮想マシンベンダによって基盤IDとライセンスデータとが紐付けられてもよい。ライセンスデータは、基盤IDの正当性を示すデジタル署名を含んでもよい。
【0073】
次に、仮想マシン作成、マイグレーションおよびライセンス認証の手順を説明する。
図6は、仮想マシン作成の例を示すシーケンス図である。
管理者端末32は、仮想マシン作成要求をハイパーバイザ120に送信する(S10)。ハイパーバイザ120は、ストレージサーバ31から仮想マシンイメージを読み出し、仮想マシンイメージに基づいて仮想マシン130を起動する。また、ハイパーバイザ120は、ノード100のノードIDに依存する仮想マシンIDを生成し、仮想マシン130に仮想マシンIDを送信する。仮想マシン130は、環境ファイル記憶部134に環境ファイルを生成し、環境ファイルに仮想マシンIDを書き込む(S11)。仮想マシン130は、起動完了を示す完了応答をハイパーバイザ120に送信する(S12)。
【0074】
基盤ID管理部121は、ハイパーバイザ120が属する仮想化基盤の基盤IDをライセンス管理部135に送信する。ライセンス管理部135は、環境ファイルに基盤IDを書き込む(S13)。ライセンス管理部135は、基盤IDを正常に受信したことを示す完了応答を基盤ID管理部121に送信する(S14)。
【0075】
管理者端末32は、ライセンス管理部135に仮ライセンスデータを送信する。仮ライセンスデータは、仮想マシン130の作成前に発行される仮ライセンスを示すライセンスデータであり、ライセンスサーバ33から管理者端末32に送信される。仮ライセンスデータは、シリアル番号と本ライセンスより短い仮の有効期限とを含む。仮ライセンスデータは、仮想マシンIDと紐付けられていない。ライセンス管理部135は、仮ライセンスデータを環境ファイルに書き込む(S15)。ライセンス管理部135は、仮想マシン130の仮想マシンIDを管理者端末32に送信する(S16)。
【0076】
管理者端末32は、仮想マシンIDを含む本ライセンス要求をライセンスサーバ33に送信する。ライセンス管理部135が管理者端末32に更に基盤IDを送信してもよく、管理者端末32からライセンスサーバ33への本ライセンス要求が更に基盤IDを含んでもよい(S17)。ライセンスサーバ33は、本ライセンスデータを管理者端末32に送信する。本ライセンスデータは、仮想マシン130の作成後に発行される本ライセンスを示すライセンスデータであり、仮想マシンIDと紐付けられている。本ライセンスデータは、シリアル番号と仮ライセンスより長い有効期限と機能フラグとを含む(S18)。
【0077】
管理者端末32は、本ライセンスデータをライセンス管理部135に送信する。ライセンス管理部135は、本ライセンスデータを環境ファイルに書き込む(S19)。ライセンス管理部135は、完了応答を管理者端末32に送信する(S20)。
【0078】
図7は、マイグレーションの例を示すシーケンス図である。
ノード100からノード100aへの仮想マシン130のマイグレーションを行う場合、管理者端末32は、環境ファイル退避要求を環境ファイル管理部122に送信する(S21)。環境ファイル管理部122は、ライセンス管理部135に環境ファイル退避要求を送信する(S22)。ライセンス管理部135は、環境ファイル記憶部134に記憶された環境ファイルを環境ファイル管理部122に送信する(S23)。環境ファイル管理部122は、完了応答を管理者端末32に送信する(S24)。
【0079】
管理者端末32は、ハイパーバイザ120にマイグレーション要求を送信する(S25)。マイグレーション制御部123は、仮想マシン130のゲストOSにシャットダウン命令を送信し、仮想マシン130のハードウェアリソースを解放して、ノード100から仮想マシン130を削除する(S26)。マイグレーション制御部123は、マイグレーション制御部123aに仮想マシン130の削除完了を通知する。
【0080】
マイグレーション制御部123aは、ストレージサーバ31から仮想マシンイメージを読み出し、仮想マシンイメージに基づいて仮想マシン130を起動する。また、マイグレーション制御部123aは、ノード100aのノードIDに依存する仮想マシンIDを生成し、仮想マシン130に仮想マシンIDを送信する(S27)。仮想マシン130は、完了応答をマイグレーション制御部123aに送信する(S28)。
【0081】
基盤ID管理部121aは、ハイパーバイザ120aが属する仮想化基盤の基盤IDをライセンス管理部135に送信する(S29)。ライセンス管理部135は、完了応答を基盤ID管理部121aに送信する(S30)。環境ファイル管理部122は、仮想マシン130の環境ファイルを環境ファイル管理部122aに転送する。環境ファイル管理部122aは、環境ファイルをライセンス管理部135に送信する。ライセンス管理部135は、環境ファイルを環境ファイル記憶部134に格納する(S31)。ライセンス管理部135は、完了応答を環境ファイル管理部122aに送信する(S32)。
【0082】
ライセンス管理部135は、ハイパーバイザ120aから受信した基盤IDと環境ファイル記憶部134に記憶された環境ファイルとに基づいて、ライセンス認証を実行する。ラインセンス認証に成功した場合、ライセンス管理部135は、本ライセンスデータに従って仮想マシン130の一部または全部の機能をONにする。ラインセンス認証に失敗した場合、ライセンス管理部135は、仮想マシン130の機能をOFFにする。仮想マシン130は、ライセンス認証結果をハイパーバイザ120aに送信する。ライセンス認証結果は、ライセンス認証の成功または失敗を示す(S33)。ハイパーバイザ120aは、ラインセンス認証結果を管理者端末32に送信する(S34)。
【0083】
なお、仮想マシン130のマイグレーションの後、環境ファイルは自動的には更新されない。現在の仮想マシンIDと環境ファイルに含まれる仮想マシンIDとが異なっても、その差異が正当なマイグレーションによって発生した場合には、マイグレーション先のノード100aはその差異をライセンス違反と判定しない。仮想マシン130の移動が一時的でない場合、管理者端末32は、新しい仮想マシンIDを用いて、ライセンスサーバ33にライセンスの再発行を要求してもよい。管理者端末32は、修正されたライセンスデータを仮想マシン130に送信してもよい。ただし、仮想マシン130のマイグレーション自体は、ライセンスの再発行を待たずに完了する。
【0084】
図8は、ライセンス認証の手順例を示すフローチャートである。
ここでは、マイグレーション直後のライセンス認証に加えて、マイグレーション以外の理由で仮想マシン130が起動した場合のライセンス認証の手順も併せて説明する。
【0085】
(S40)ライセンス管理部135は、仮想マシン130の起動を検出する。
(S41)ライセンス管理部135は、現在の仮想マシンIDをハイパーバイザから受信する。また、ライセンス管理部135は、ハイパーバイザが属する仮想化基盤の基盤IDをハイパーバイザから受信する。また、ライセンス管理部135は、仮想マシン130が前回使用していた環境ファイルをハイパーバイザから受信する。
【0086】
(S42)ライセンス管理部135は、今回の仮想マシン130の起動が、マイグレーション先ノードでの起動に相当するか判断する。マイグレーション先ノードでの起動か否かは、例えば、ハイパーバイザとの通信を通じて特定される。マイグレーション先ノードでの起動の場合、処理がステップS44に進む。それ以外の場合、すなわち、通常の起動の場合、処理がステップS43に進む。
【0087】
(S43)ライセンス管理部135は、ハイパーバイザから受信した現在の仮想マシンIDが、環境ファイルに含まれる仮想マシンIDと一致するか判断する。一致する場合、正当な起動であると判断され、処理がステップS45に進む。一致しない場合、不正に仮想マシン130が複製されたと判断され、処理がステップS47に進む。
【0088】
(S44)ライセンス管理部135は、ハイパーバイザから受信した基盤IDが、環境ファイルに含まれる基盤IDと一致するか判断する。一致する場合、正当なマイグレーションが実行されたと判断され、処理がステップS45に進む。一致しない場合、不正なマイグレーションが実行されたと判断され、処理がステップS47に進む。
【0089】
(S45)ライセンス管理部135は、環境ファイルに規定されたライセンスの有効期限内であるか判断する。有効期限内である場合、処理がステップS46に進む。有効期限外である場合、処理がステップS47に進む。
【0090】
(S46)ライセンス管理部135は、環境ファイルのライセンスデータに従って、仮想マシン130の各機能を有効化または無効化する。機能フラグがONの機能は有効化され、機能フラグがOFFの機能は無効化される。そして、処理がステップS48に進む。
【0091】
(S47)ライセンス管理部135は、仮想マシン130の起動をライセンス違反と判定し、仮想マシン130の各機能を無効化する。
(S48)ライセンス管理部135は、ライセンス認証の成功または失敗を示すライセンス認証結果を出力する。ステップS46が実行された場合はライセンス認証の成功であり、ステップS47が実行された場合はライセンス認証の失敗である。
【0092】
以上説明したように、第2の実施の形態の情報処理システムは、仮想マシンベンダから提供される仮想マシンイメージに基づいて仮想マシンを起動する。仮想マシンイメージには、各種ソフトウェアがパッケージ化されている。仮想マシンベンダからは、仮想マシン単位でライセンスが発行される。よって、仮想マシンの管理が簡潔になる。
【0093】
また、仮想マシン毎のライセンスデータは、仮想マシンIDに紐付けられる。仮想マシンに付与される仮想マシンIDは、その仮想マシンが配置されるノードに依存する識別子である。よって、ライセンス認証によって、仮想マシンを起動することができるノードが制限され、仮想マシンの不正な複製が抑制される。
【0094】
また、マイグレーション後のライセンス認証は、仮想マシンIDに代えて基盤IDに基づいて行われる。同一の基盤IDをもつノード群は、マイグレーションを行う可能性があるノード群として事前に規定されている。よって、正当なマイグレーションはライセンス違反とは判断されず、ライセンスの再発行などの手続きを待たずにマイグレーションが完了する。一方、基盤IDが異なるノードでの起動は、不正なマイグレーションと判断されて拒否される。このように、仮想マシンの不正な複製が抑制され、かつ、仮想マシンの正当なマイグレーションは迅速に実行される。
【符号の説明】
【0095】
10,20 情報処理装置
11 記憶部
12 処理部
13 仮想マシン
14 設定情報
15a,15b 仮想マシン識別子
16a,16b 基盤識別子
17 ライセンスデータ
18,19 認証処理