(58)【調査した分野】(Int.Cl.,DB名)
前記複製部は、前記更新部による前記複製対象テーブルに含まれるアドレスに対応するメモリ領域の更新の要求を検知した場合に、該メモリ領域の複製を優先して完了させて前記ハイパーバイザに通知することを特徴とする請求項1に記載の管理システム。
【発明を実施するための形態】
【0011】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【0012】
[管理システムの構成]
まず、
図1を参照して、本実施形態に係る管理システムの概略構成を説明する。管理システムは、ワークステーションやパソコン等の情報処理装置を用いて実現される仮想マシンシステムである。
図1に示すように、管理システム1は、ハードウェア2と、仮想マシンとハードウェア2との対応付けを管理するハイパーバイザ3と、仮想マシンを実現する仮想化層4と、各仮想マシン上でOS(Operating System)として動作するゲストOS5とを備える。
【0013】
ハードウェア2は、CPU(Central Processing Unit)、メモリ21、ハードディスク、およびNIC(Network Interface Card)等の各種の物理デバイスを含む。メモリ21は、例えばRAM(Random Access Memory)を意味する。
【0014】
ハイパーバイザ3は、情報処理装置のハードウェア2の一部または全部を用いて、仮想的なハードウェア環境を生成する。このハイパーバイザ3は、メモリ21内の各仮想マシンのメモリ領域の状態を管理している。具体的に、ハイパーバイザ3は、ある時点から更新すなわち書き込みがなされたメモリ領域のアドレスを管理している。そして、ハイパーバイザ3は、後述する複製処理に際して、前回のメモリ領域の複製の後に更新されたメモリ領域のアドレスの一覧を、未複製差分テーブルとして作成して、メモリ21の適当な領域に記憶させて管理している。
【0015】
ここで、未複製差分テーブルには、更新されたメモリ領域のアドレスの他、例えば、
図2に示すように、各アドレスに対応するメモリ領域の状態を表すフラグが付与される。
図2に例示する未複製差分テーブルLは、更新されたメモリ領域のアドレスの他、更新フラグと書換フラグとを含む。
【0016】
更新フラグには、各アドレスに対応するメモリ領域が更新されている場合に「有」が設定され、更新されていない場合に「無」が設定される。なお、更新「有」とは、当該メモリ領域の冗長化すなわち複製が未だされていないことを意味し、更新「無」とは、メモリ領域の複製が完了していることを意味する。
図2の未複製差分テーブルLにおいては、全アドレスに対して「有」が設定されている。
【0017】
また、書換フラグには、各アドレスに対応するメモリ領域への書き込みが禁止されている場合に「不可」が設定され、書き込みが許容されている場合に「可」が設定される。
図2の未複製差分テーブルLにおいては、後述する複製処理に先立って、ハイパーバイザ3が全アドレスに対して「不可」を設定する。
【0018】
仮想化層4は、ハイパーバイザ3により生成された仮想的なハードウェア上に仮想マシンを実現し、各仮想マシン上でゲストOS5を動作させる。仮想化層4は、1台の情報処理装置に複数の仮想マシンを生成してもよいし、複数台の情報処理装置上に1以上の仮想マシンを生成してもよい。この仮想化層4は、仮想マシン実行部41および複製部42として機能する。
【0019】
なお、各仮想マシン実行部41上でゲストOS5が動作し、ゲストOS5上で各種のアプリケーションが動作している。アプリケーションは、仮想的なハードウェアに含まれるメモリ領域に直接書き込みを行う。
【0020】
仮想マシン実行部41は、仮想マシンの停止や再開を制御する。また、仮想マシン実行部41は、更新部として機能する。すなわち、仮想マシン実行部41は、メモリ領域の更新つまりメモリ領域への書き込みを行う。具体的に、仮想マシン実行部41は、アドレスを指定して対応するメモリ領域への書き込みを要求し、当該メモリ領域への書き込みが許容されている場合に、所定の手順で書き込みを行う。
【0021】
複製部42は、複製処理を行う。すなわち、複製部42は、ハイパーバイザ3で作成された前回のメモリ領域の複製の後に更新されたメモリ領域のアドレスの一覧を取得して、複製対象のメモリ領域のアドレスを管理する複製対象テーブルを作成する。また、複製部42は、複製対象テーブルに含まれるアドレスのうち、選択されたアドレスに対応するメモリ領域を複製し、複製が完了するごとに該アドレスを該複製対象テーブルから削除する。そして、複製部42は、該複製対象テーブルに含まれる全アドレスを削除した場合にハイパーバイザ3に通知する。
【0022】
具体的に、複製部42は、まず、ハイパーバイザ3から取得した未複製差分テーブルLを用いて、複製対象のメモリ領域のアドレスを管理する複製対象テーブルを作成し、メモリ21の適当な領域に記憶させて管理する。ここで、複製対象テーブルには、例えば、
図3に示すように、未複製差分テーブルLに含まれるアドレス、更新フラグ、および書換フラグに加え、複製フラグが付加される。複製フラグには、各アドレスに対応するメモリ領域の冗長化すなわち複製が完了している場合に「済」が設定され、複製が未完了である場合に「未」が設定される。
図3に例示するように、複製対象テーブルL1の作成時においては、全アドレスの複製フラグに対して「未」が設定される。
【0023】
次に、複製部42は、複製対象テーブルL1に含まれるアドレスのうち、1以上のアドレスを選択して、これらのアドレスに対応するメモリ領域の複製を行う。そして、複製部42は、複製が完了したメモリ領域のアドレスを複製対象テーブルL1から削除する。複製部42は、複製フラグを「済」に変更することにより、複製対象から除外するようにしてもよい。複製部42は、複製対象テーブルL1に含まれる全アドレスに対応するメモリ領域の複製が完了した場合に、ハイパーバイザ3に通知する。
【0024】
なお、ハイパーバイザ3は、複製対象テーブルL1に含まれる全アドレスに対応するメモリ領域の複製の完了の通知を受信した場合に、未複製差分テーブルLを削除すなわち空にする。ここで、未複製差分テーブルLの削除は、書換フラグを「不可」から「可」に変更することと同義ということができる。これにより、仮想マシン実行部41によるアドレスに対応するメモリ領域への書き込みが可能となる。
【0025】
また、複製部42は、優先処理を行う。すなわち、複製部42は、仮想マシン実行部41による複製対象テーブルL1に含まれるアドレスに対応するメモリ領域の更新の要求を検知した場合に、該メモリ領域の複製を優先して完了させてハイパーバイザ3に通知する。
【0026】
具体的に、仮想マシン実行部41による複製対象テーブルL1に含まれるあるアドレスXに対応するメモリ領域の更新の要求があった場合に、複製部42は、ハイパーバイザ3を介してこの要求を検知する。この場合に、複製部42は、他のメモリ領域の複製より優先して、このアドレスXに対応するメモリ領域の複製を行って、複製対象テーブルL1からこのアドレスXを削除するとともに、アドレスXに対応するメモリ領域の複製の完了をハイパーバイザ3に通知する。これにより、ハイパーバイザ3がアドレスXに対応するメモリ領域への書き込み禁止を解除して、仮想マシン実行部41がアドレスXに対応するメモリ領域の更新処理を実行することができる。
【0027】
[管理処理]
次に、
図4および
図5のシーケンス図を参照して、管理システム1による管理処理手順について説明する。管理処理は、複製処理と優先処理とを含む。
図4は、複製処理手順を示すシーケンス図である。
図4のシーケンスは、例えば、複製処理の開始を指示する操作入力があったタイミングで開始となる。
【0028】
まず、複製部42が、仮想マシンの停止要求を仮想マシン実行部41に送信し(ステップS1)、仮想マシン実行部41が、要求を受信して(ステップS2)、仮想マシンの停止処理を実行し(ステップS3)、停止処理完了の通知を複製部42へ送信する(ステップS4)。複製部42は、仮想マシンの停止処理完了の通知を受信した場合に(ステップS5)、前回のメモリ領域の複製の後に更新され差分が生じたメモリ領域のアドレス一覧の作成をハイパーバイザ3に要求する(ステップS6)。
【0029】
ハイパーバイザ3は、アドレス一覧の作成要求を受信した場合に(ステップS7)、前回のメモリ領域の複製の後に更新され差分が生じたメモリ領域のアドレス一覧を作成し(ステップS8)、未複製差分テーブルLとしてメモリ21に保存する(ステップS9)。また、ハイパーバイザ3は、未複製差分テーブルLに含まれる各アドレスについて、書き込み禁止の設定を行って、書換フラグを「不可」に設定し(ステップS10)、未複製差分テーブルLに含まれるアドレス一覧を複製部42に送信する(ステップS11)。この場合に、ハイパーバイザ3は、未複製差分テーブルLの内容を全て複製部42に送信してもよい。
【0030】
複製部42は、未複製差分テーブルLに含まれるアドレス一覧を受信した場合に(ステップS12)、複製対象テーブルL1としてメモリ21に保存する(ステップS13)。また、複製部42は、仮想マシンの再開要求を仮想マシン実行部41に送信する(ステップS14)。仮想マシン実行部41は、再開要求を受信して(ステップS15)、仮想マシンの再開処理を実行する(ステップS16)。
【0031】
複製部42は、複製処理の対象として、複製対象テーブルL1に含まれるアドレスから任意個のアドレス群αを選択する(ステップS17)。そして、複製部42は、選択されたアドレス群αに1以上のアドレスが含まれていれば(ステップS18,Yes)、各アドレスの内容すなわち各アドレスに対応するメモリ領域を複製する(ステップS19)。また、複製部42は、アドレス群αを複製対象テーブルL1から削除する(ステップS20)。複製部42は、以上のステップS17〜S20の処理を繰り返し、選択されたアドレス群αにアドレスが含まれなくなった場合に(ステップS18,No)、複製対象テーブルL1に含まれる全アドレスに対応するメモリ領域の複製の完了をハイパーバイザ3に通知する(ステップS21)。
【0032】
ハイパーバイザ3は、複製完了の通知を受信した場合に(ステップS22)、未複製差分テーブルLを空にして(ステップS23)、メモリ領域への書き込み禁止を解除するとともに、未複製差分テーブルLの削除完了の通知を複製部42に送信する(ステップS24)。複製部42が削除完了通知を受信して(ステップS25)、一連の複製処理が終了する。
【0033】
これに対し、従来は、ハイパーバイザ3が未複製差分テーブルLに含まれるアドレスから任意個のアドレス群αを選択し、複製部42が選択されたアドレス群αに対応するメモリ領域を複製していた。そして、複製部42がアドレスα群に対応するメモリ領域を複製する度に複製の完了をハイパーバイザ3に通知し、ハイパーバイザ3が未複製差分テーブルLからアドレス群αを削除する処理を繰り返していた。したがって、本実施形態の複製処理により、ハイパーバイザ3と複製部42との間の通信が合理化される。
【0034】
図5は、優先処理手順を示すシーケンス図である。
図5のシーケンスは、例えば、仮想マシン実行部42からあるアドレスXに対応するメモリ領域の更新すなわち当該メモリ領域への書き込みの要求があった場合に開始される。仮想マシン実行部42による更新要求があった場合に(ステップS31)、ハイパーバイザ3がこの更新要求を受信して(ステップS32)、このアドレスXが未複製差分テーブルLに含まれているか否かを確認する。アドレスXが未複製差分テーブルLに含まれていない場合には(ステップS33,No)、通常の取り扱いとして、アドレスXに対応するメモリ領域への書き込みを許容する(ステップS34)。
【0035】
一方、アドレスXが未複製差分テーブルLに含まれている場合には(ステップS33,Yes)、以下の優先処理が実行される。すなわち、まず、ハイパーバイザ3が、アドレスXに対する優先複製要求を複製部42に送信する(ステップS35)。複製部42は、アドレスXに対する優先複製要求を受信して(ステップS36)、このアドレスXが複製対象テーブルL1に含まれているか否かを確認する。アドレスXが複製対象テーブルL1に含まれている場合に(ステップS37,Yes)、複製部42は、アドレスXの示す内容すなわちアドレスXに対応するメモリ領域を複製し(ステップS38)、複製対象テーブルL1からアドレスXを削除する(ステップS39)。そして、複製部42は、アドレスXの優先複製の完了通知をハイパーバイザ3に送信する(ステップS40)。なお、アドレスXが複製対象テーブルL1に含まれていない場合にも(ステップS37,No)、複製部42は、アドレスXの優先複製の完了通知をハイパーバイザ3に送信する(ステップS40)。
【0036】
ハイパーバイザ3は、アドレスXの優先複製の完了通知を受信した場合に(ステップS41)、保留していた仮想マシンでの処理すなわちアドレスXに対応するメモリ領域の更新要求に対する処理を継続し(ステップS42)、仮想マシン実行部41がアドレスXに対応するメモリ領域の更新処理を実行する(ステップS43)。これにより、一連の優先処理は終了する。
【0037】
なお、従来は、複製部42がハイパーバイザ3から受信したアドレスXに対する優先複製要求に応じてアドレスXに対応するメモリ領域を複製し、ハイパーバイザ3が優先複製の完了通知を受信して未複製差分テーブルLからアドレスXを削除していた。このように、本実施形態の優先処理は、複製対象テーブルL1を管理する点で、従来とは優先処理手順が異なる。
【0038】
以上、説明したように、本実施形態の管理システム1では、仮想マシン実行部41が、メモリ領域を更新する。また、ハイパーバイザ3が、前回のメモリ領域の複製の後に更新されたメモリ領域のアドレスの一覧を未複製差分テーブルLとして作成する。また、複製部42が、作成されたアドレスの一覧をハイパーバイザ3から取得して、複製対象のメモリ領域のアドレスを管理する複製対象テーブルL1を作成し、該複製対象テーブルL1に含まれるアドレスのうち、選択されたアドレスに対応するメモリ領域を複製し、複製が完了するごとに該アドレスを該複製対象テーブルL1から削除して、該複製対象テーブルL1に含まれる全アドレスを削除した場合にハイパーバイザ3に通知する。
【0039】
すなわち、
図6に例示するように、ハイパーバイザ3が、仮想マシン実行部41からのメモリ領域の更新の要求を検知して、前回のメモリ領域の複製の後に更新されたメモリ領域のアドレス一覧を未複製差分テーブルLとして管理する。ハイパーバイザ3は、複製部42に送信する際に、未複製差分テーブルLのアドレスに対応するメモリ領域の書換フラグを不可に設定する。
【0040】
また、複製部42が、複製処理の事前処理として、ハイパーバイザ3から取得した未複製差分テーブルLに、例えばメモリコピーが未完了であることを示す複製フラグを付加した複製対象テーブルL1を生成して管理する。そして、複製部42が、複製フラグに応じてメモリ領域の複製を行いながら複製対象テーブルL1の各フラグの内容を変更する複製処理を行う。すなわち、更新フラグを「有」から「無」に変更し、複製フラグを「未」から「済」に変更する。複製対象テーブルL1の全アドレスに対応するメモリ領域の複製が終わった後、複製部42が、事後処理として、ハイパーバイザ3に通知する。
【0041】
通知を受けたハイパーバイザ3が、未複製差分テーブルLを削除すなわち未複製差分テーブルLに含まれるアドレスに対応するメモリ領域の状態の管理情報を変更する。すなわち、ハイパーバイザ3は、通知をうけた各アドレスに対応するメモリ領域について、前回のメモリ領域の複製の後に更新されていないものとし、書き込みを可能とする。
【0042】
これにより、管理システム1は、メモリ領域の複製を行う仮想化層4と複製対象のメモリ領域を管理するハイパーバイザ3との間の通信を合理化できる。したがって、仮想化層4とハイパーバイザ3との間の通信を引き起こすアプリケーションのスループットを向上させることができる。
【0043】
また、複製部42は、
図6に例示するように、仮想マシン実行部41からのメモリ状態の更新要求すなわちメモリ領域への書き込みの要求があった場合に、当該要求のアドレスのメモリ領域について優先して複製を行う優先処理を実行する。これにより、管理システム1は、アプリケーションからのメモリ領域への書き込み要求を長時間停止させることなく、アプリケーションのスループットの低下を抑止することができる。
【0044】
[他の実施形態]
[プログラム]
上記実施形態に係る管理システム1が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。一実施形態として、管理システム1は、パッケージソフトウェアやオンラインソフトウェアとして上記の管理処理を実行する管理プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の管理プログラムを複数の情報処理装置にクラウドとして実行させることにより、これらの情報処理装置を管理システム1として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)などの移動体通信端末、さらには、PDA(Personal Digital Assistants)などのスレート端末などがその範疇に含まれる。以下に、管理システム1と同様の機能を実現する管理プログラムを実行するコンピュータの一例を説明する。
【0045】
図7に示すように、管理プログラムを実行するコンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
【0046】
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1041に接続される。ディスクドライブ1041には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1051およびキーボード1052が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1061が接続される。
【0047】
ここで、
図7に示すように、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各テーブルは、例えばハードディスクドライブ1031やメモリ1010に記憶される。
【0048】
また、管理プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、ハードディスクドライブ1031に記憶される。具体的には、上記実施形態で説明した管理システム1が実行する各処理が記述されたプログラムモジュール1093が、ハードディスクドライブ1031に記憶される。
【0049】
また、管理プログラムによる情報処理に用いられるデータは、プログラムデータ1094として、例えば、ハードディスクドライブ1031に記憶される。そして、CPU1020が、ハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
【0050】
なお、管理プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、管理プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0051】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述および図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例および運用技術等は全て本発明の範疇に含まれる。