JP2018088134A - マイグレーションプログラム、情報処理装置およびマイグレーション方法 - Google Patents

マイグレーションプログラム、情報処理装置およびマイグレーション方法 Download PDF

Info

Publication number
JP2018088134A
JP2018088134A JP2016231186A JP2016231186A JP2018088134A JP 2018088134 A JP2018088134 A JP 2018088134A JP 2016231186 A JP2016231186 A JP 2016231186A JP 2016231186 A JP2016231186 A JP 2016231186A JP 2018088134 A JP2018088134 A JP 2018088134A
Authority
JP
Japan
Prior art keywords
page
data
virtual machine
information processing
buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016231186A
Other languages
English (en)
Other versions
JP6882662B2 (ja
Inventor
実久 土肥
Sanehisa Doi
実久 土肥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016231186A priority Critical patent/JP6882662B2/ja
Priority to US15/786,653 priority patent/US10621010B2/en
Publication of JP2018088134A publication Critical patent/JP2018088134A/ja
Application granted granted Critical
Publication of JP6882662B2 publication Critical patent/JP6882662B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】仮想マシンを移動する際のメモリデータの転送を削減する。【解決手段】情報処理装置10の処理部12は、仮想マシン13が使用するメモリ11上の単位領域14のデータ14aを情報処理装置20にコピーし、また、単位領域14に対応させてバッファ領域15を割り当てる。処理部12は、コピー後に単位領域14のデータ14aが更新される毎に、バッファ領域15に更新履歴15aが保存されるよう制御する。処理部12は、情報処理装置20で仮想マシン13を稼働させる際、バッファ領域15に保存された更新履歴15aの量が閾値を超える場合には単位領域14のデータ14aを情報処理装置20に再度コピーし、更新履歴15aの量が閾値を超えない場合には更新履歴15aを情報処理装置20に対して送信させる。【選択図】図1

Description

本発明はマイグレーションプログラム、情報処理装置およびマイグレーション方法に関する。
現在、物理的なコンピュータ(物理マシンと言うことがある)上で1以上の仮想的なコンピュータ(仮想マシンと言うことがある)を稼働させるコンピュータ仮想化技術が利用されている。コンピュータ仮想化技術では、物理マシンが有するプロセッサ処理能力やメモリ領域などのハードウェアリソースを各仮想マシンに柔軟に割り当てることができ、ハードウェアリソースの利用管理が容易となる。
ここで、ある物理マシンに配置された仮想マシンを他の物理マシンに移動させたいことがある。例えば、ある物理マシンの負荷が高くハードウェアリソースが不足傾向にあるとき、当該物理マシン上の一部の仮想マシンを他の物理マシンに移動させることがある。また、例えば、ある物理マシンを保守作業や省電力化のために停止させたいとき、当該物理マシン上の全ての仮想マシンを他の物理マシンに移動させることがある。
異なる物理マシン間で仮想マシンを移動させる方法として、仮想マシンで実行されているオペレーティングシステム(OS:Operating System)などのソフトウェアをシャットダウンせずに移動する「ライブマイグレーション」がある。ライブマイグレーションによれば、仮想マシンが情報処理を実行できない実質的停止時間を短縮できる。ライブマイグレーションの手順として、例えば、次のような手順が考えられる。
移動元の物理マシンは、移動させたい仮想マシンが使用する複数単位のメモリ領域(各単位のメモリ領域をページと言うことがある)のデータを、移動先の物理マシンに対して順次コピーする。このとき、移動元の物理マシンでは当該仮想マシンがまだ停止しておらず稼働中である。よって、仮想マシンが使用する全てのページのデータを1回コピーし終えるまでに、1以上のページが仮想マシンによって更新されることがある。移動元の物理マシンは、コピー後に更新されたページ(ダーティページと言うことがある)のデータを、ページ単位で移動先の物理マシンに対して再度コピーする。移動元の物理マシンは、ダーティページが十分少なくなるまで再コピーを繰り返す。
ダーティページが十分少なくなると、移動元の物理マシンは、仮想マシンを停止させてページ更新がそれ以上発生しないようにし、残りのダーティページのデータを移動先の物理マシンに対してコピーする。また、移動元の物理マシンは、プログラムカウンタやその他のレジスタ値などのプロセッサコンテキストを移動先の物理マシンに送信する。移動先の物理マシンは、受信したページデータをメモリに配置し、受信したプロセッサコンテキストをプロセッサに設定し、仮想マシンの情報処理を開始する。これにより、移動元の物理マシンで中断した情報処理を、移動先の物理マシンが引き継ぐことができる。
なお、稼働系の仮想マシンと待機系の仮想マシンとを稼働させるフォールトトレラントサーバが提案されている。提案のフォールトトレラントサーバは、チェックポイントが到来すると稼働系の仮想マシンを一時停止させる。フォールトトレラントサーバは、第1のグループのメモリ領域については、前回のチェックポイント以降に更新されたデータを仮想マシンの停止中に転送バッファにコピーする。また、フォールトトレラントサーバは、第2のグループのメモリ領域については、一旦書き込み禁止に設定し、更新データを仮想マシンの一時停止を解除した後に転送バッファにコピーする。フォールトトレラントサーバは、転送バッファのデータを待機系の仮想マシンに対して送信する。
また、仮想マシンのライブマイグレーションを行うクラウドシステムが提案されている。提案のクラウドシステムは、移動元の物理マシンにおける各ページの更新頻度を測定する。クラウドシステムは、更新頻度の低いページのデータを、更新頻度の高いページよりも優先的に移動元の物理マシンから移動先の物理マシンにコピーする。
また、例えば、移動先の物理マシンで使用するメモリ領域を選択することができる計算機システムが提案されている。提案の計算機システムは、移動元の物理マシンにおいてプログラムによって更新されたメモリ領域を検出し、更新されたメモリ領域を示す情報を移動元の物理マシンから移動先の物理マシンに送信する。計算機システムは、移動元の物理マシンにおいて更新されたデータを、移動先の物理マシンが有するメモリ領域のうち最もアクセス性能が高くなるメモリ領域に配置する。
特開2014−178981号公報 特開2014−191752号公報 国際公開第2016/013098号
ところで、上記のライブマイグレーションにおいては、メモリデータの再コピーはページ単位で行われる。そのため、1回の書き込みサイズは小さいものの書き込み対象ページが分散しているメモリ更新処理を仮想マシンが継続的に行っていると、再コピーすべきページが高頻度で発生し、円滑にライブマイグレーションを行うことが難しいことがある。
例えば、ダーティページが十分に少なくなるまで仮想マシンを停止させずに再コピーを繰り返す場合、仮想マシンを停止できない状態が長時間続いてライブマイグレーションを正常に完了できないおそれがある。また、例えば、ライブマイグレーションを完了させるために上記の再コピーの繰り返しを打ち切った場合、残ったダーティページが多いために仮想マシン停止後のメモリデータのコピーに長時間を要することになる。そのため、仮想マシンの実質的停止時間が長くなり、仮想マシンの可用性が低下する。
1つの側面では、本発明は、仮想マシンを移動する際のメモリデータの転送を削減できるマイグレーションプログラム、情報処理装置およびマイグレーション方法を提供することを目的とする。
1つの態様では、コンピュータに以下の処理を実行させるマイグレーションプログラムが提供される。仮想マシンが使用するメモリ上の単位領域のデータを他のコンピュータにコピーし、また、単位領域に対応させてバッファ領域を割り当てる。コピー後に単位領域のデータが更新される毎に、単位領域に対応するバッファ領域に更新履歴が保存されるよう制御する。他のコンピュータで仮想マシンを稼働させる際、バッファ領域に保存された更新履歴の量が閾値を超える場合には単位領域のデータを他のコンピュータに再度コピーし、更新履歴の量が閾値を超えない場合には更新履歴を他のコンピュータに対して送信させる。
また、1つの態様では、メモリと処理部とを有する情報処理装置が提供される。また、1つの態様では、第1の情報処理装置および第2の情報処理装置を含むシステムが実行するマイグレーション方法が提供される。
1つの側面では、仮想マシンを移動する際のメモリデータの転送を削減できる。
第1の実施の形態の情報処理システムの例を示す図である。 第2の実施の形態の情報処理システムの例を示す図である。 物理マシンのハードウェア例を示すブロック図である。 仮想マシンの配置例を示すブロック図である。 プレコピー方式の第1のマイグレーション例を示す図である。 プレコピー方式の第1のマイグレーション例を示す図(続き)である。 プレコピー方式の第2のマイグレーション例を示す図である。 プレコピー方式の第2のマイグレーション例を示す図(続き)である。 更新履歴のフォーマット例を示す図である。 TLBテーブルの例を示す図である。 物理マシンの機能例を示すブロック図である。 移動元処理の手順例を示すフローチャートである。 移動元処理の手順例を示すフローチャート(続き)である。 更新履歴生成の手順例を示すフローチャートである。 移動先処理の手順例を示すフローチャートである。 差分事前送信の手順例を示すフローチャートである。 バッファモード変更の手順例を示すフローチャートである。 バッファサイズ変更の手順例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の情報処理システムの例を示す図である。
第1の実施の形態の情報処理システムは、情報処理装置10,20を含む。情報処理装置10,20は、それぞれ1以上の仮想マシンを稼働させることができる物理マシンである。例えば、情報処理装置10,20は、データセンタなどの情報処理施設に設置されたサーバ装置である。情報処理装置10,20は、図示しないネットワークに接続されている。第1の実施の形態では、情報処理装置10に配置された仮想マシン13を、シャットダウンせずに情報処理装置20に移動するライブマイグレーションを行う。
情報処理装置10は、メモリ11および処理部12を有する。情報処理装置20は、メモリ21および処理部22を有する。メモリ11,21は、例えば、RAM(Random Access Memory)などの揮発性の半導体メモリである。処理部12,22は、例えば、CPU(Central Processing Unit)などのプロセッサである。ただし、処理部12,22は、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などの電子回路を含んでもよい。プロセッサは、RAMなどのメモリに記憶されたプログラムを実行する。プログラムには、後述する処理を実行させるマイグレーションプログラムが含まれる。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うこともある。
情報処理装置10では、メモリ11に含まれる単位領域14が仮想マシン13に割り当てられている。単位領域14は、メモリ11内の所定サイズの記憶領域であり、例えば、ページと言われる記憶領域である。仮想マシン13は稼働中に、単位領域14に記憶されたデータ14aの一部または全部を更新することができる。単位領域14を含む複数の単位領域が仮想マシン13に割り当てられてもよい。
仮想マシン13を情報処理装置10から情報処理装置20に移動させる場合、処理部12は、仮想マシン13を停止させる前に、単位領域14に記憶されたデータ14a全体を情報処理装置20にコピーする。仮想マシン13に複数の単位領域が割り当てられている場合、処理部12は、複数の単位領域それぞれのデータを情報処理装置20にコピーする。仮想マシン13を停止させる前のコピーを「プレコピー」と言うことがある。仮想マシン13がまだ停止していないため、単位領域14のデータ14aをコピーした後に、仮想マシン13によってデータ14aの一部または全部が更新される可能性がある。
また、仮想マシン13は、単位領域14に対してバッファ領域15を割り当てる。バッファ領域15は、メモリ11に含まれる記憶領域であってもよいし、情報処理装置10が有するメモリ11とは異なる記憶装置に含まれる記憶領域であってもよい。仮想マシン13に複数の単位領域が割り当てられている場合、処理部12は、複数の単位領域それぞれに対してバッファ領域を割り当てる。すなわち、その場合には、複数の単位領域に対応付けて複数のバッファ領域が用意されることになる。
処理部12は、単位領域14のデータ14aを1回コピーした後、データ14aが更新される毎にバッファ領域15に更新履歴15aが保存されるよう制御する。仮想マシン13に複数の単位領域が割り当てられている場合、更新された単位領域に対応するバッファ領域に更新履歴が保存される。更新履歴15aは、例えば、値を書き込んだ位置を示すオフセット(単位領域14の先頭からの相対アドレス)、書き込みサイズ、書き込まれた値などを含む。ただし、サイズや値は省略できることがある。更新履歴15aの保存は、例えば、メモリ11へのアクセスを監視するハードウェアを利用して実装される。
そして、処理部12は、情報処理装置20で仮想マシン13を稼働させる際、バッファ領域15に保存された更新履歴15aの量が所定の閾値を超えるか判定する。更新履歴15aの量が閾値を超える場合、処理部12は、単位領域14のデータ14a全体を情報処理装置20に再度コピーする。一方、更新履歴15aの量が閾値を超えない場合、処理部12は、データ14aに代えて更新履歴15aを情報処理装置20に対して送信させる。仮想マシン13に複数の単位領域が割り当てられている場合、データの再コピーと更新履歴の送信は単位領域毎に選択される。データ14aの再コピーと更新履歴15aの送信との選択実行は、例えば、情報処理装置10で仮想マシン13を停止した後に行われる。仮想マシン13を停止させた後のコピーを「ストップコピー」と言うことがある。
例えば、データ14aを1回コピーしてから情報処理装置10で仮想マシン13を停止させるまでの間は、処理部12は、更新履歴15aの量が閾値を超えない限り、単位領域14をダーティ状態として取り扱わない。処理部12は、更新履歴15aの量が閾値を超えた場合のみ、単位領域14をダーティ状態として取り扱い、仮想マシン13の停止前にデータ14a全体を再度コピーするか更新履歴15aを送信させる。処理部12は、各単位領域がダーティ状態か否かに応じて、仮想マシン13を停止させるタイミングを判定する。仮想マシン13を停止させた後は、処理部12は、上記のように、更新履歴15aの量に応じてデータ14aの再コピーと更新履歴15aの送信の一方を選択する。
情報処理装置20では、処理部22は、プレコピーにおいて情報処理装置10からデータ14aを取得すると、単位領域14に対応するメモリ21の単位領域にデータ14aを保存する。また、処理部22は、ストップコピーにおいて情報処理装置10からデータ14aを再取得すると、メモリ21の単位領域に最新のデータ14aを上書きする。また、処理部22は、ストップコピーにおいて情報処理装置10から更新履歴15aを取得すると、メモリ21の単位領域に対して更新履歴15aが示す書き込みを再実行する。これにより、仮想マシン13が停止した時のメモリ11の状態がメモリ21に反映される。そして、処理部22は、情報処理装置20上で仮想マシン13を稼働させる。
第1の実施の形態の情報処理システムによれば、単位領域14のデータ14a全体が1回コピーされた後、情報処理装置10においてデータ14aの少なくとも一部が更新される毎に、単位領域14に対応するバッファ領域15に更新履歴15aが保存される。そして、更新履歴15aの量が多い場合にはデータ14a全体が再度コピーされ、更新履歴15aの量が少ない場合には更新履歴15aが情報処理装置20に送信される。
これにより、仮想マシン13を移動する際のメモリデータの転送を削減することができ、円滑にライブマイグレーションを行うことができる。例えば、情報処理装置10で仮想マシン13が停止した後、情報処理装置20で仮想マシン13が稼働開始するまでの間において、情報処理装置10から情報処理装置20への転送量が減少する。よって、仮想マシン13の実質的停止時間が減少する。また、例えば、仮想マシン13が停止した後の転送量が少なくなるため、早いタイミングで仮想マシン13を停止させやすくなる。よって、ライブマイグレーションが正常に完了しやすくなる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
第2の実施の形態の情報処理システムは、物理マシン100,100a,100bを含む複数の物理マシンを有する。各物理マシンはネットワーク30に接続されている。
物理マシン100,100a,100bは、それぞれ1以上の仮想マシンを動作させることができるサーバコンピュータである。物理マシン100,100a,100bでは、仮想マシンを管理する管理ソフトウェアとしてハイパーバイザを実行する。ただし、ハイパーバイザに代えて管理OSなど他の種類の管理ソフトウェアを用いてもよい。各物理マシンのハイパーバイザは、当該物理マシンが有するCPUやRAMなどのハードウェアリソースを、当該物理マシン上で動作する仮想マシンに割り当てる。仮想マシンは、割り当てられたハードウェアリソースを用いて、OSやミドルウェアやアプリケーションソフトウェアなどの各種のソフトウェアを実行する。
この情報処理システムの運用中、ある物理マシンから別の物理マシンに仮想マシンを移動させることがある。例えば、複数の仮想マシンが動作する物理マシンにおいてハードウェアリソースが不足している場合、負荷分散のために一部の仮想マシンを他の物理マシンに移動させることがある。また、例えば、ある物理マシンの保守作業を行う場合、その物理マシンを停止させるために全ての仮想マシンを他の物理マシンに移動させることがある。また、例えば、省電力化のために稼働中の物理マシンの数を減らす場合、停止させる物理マシン上の全ての仮想マシンを他の物理マシンに移動させることがある。
図3は、物理マシンのハードウェア例を示すブロック図である。
物理マシン100は、CPU101、RAM102、トランザクションモニタ103、更新バッファ管理部104、HDD(Hard Disk Drive)105、画像信号処理部106、入力信号処理部107、媒体リーダ108および通信インタフェース109を有する。
CPU101は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU101は、HDD105に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、物理マシン100は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または「プロセッサ」と言うことがある。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。RAM102の記憶領域は、「ページ」と呼ばれる固定長の小領域に細分化されて管理される。なお、物理マシン100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
トランザクションモニタ103は、CPU101からRAM102へのアクセスを監視するハードウェアモジュールである。トランザクションモニタ103は、例えば、CPU101とRAM102との間のメモリバスに接続されている。物理マシン100が複数のプロセッサを有しており、これら複数のプロセッサが共有メモリ方式によってRAM102にアクセスし得る場合、複数のプロセッサからのアクセスが監視される。
後述するように、トランザクションモニタ103は、所定の条件が満たされたときにRAM102の一部のページへの書き込みを監視する。監視対象のページへの書き込みが検出されると、トランザクションモニタ103は、RAM102に用意された更新バッファに書き込み内容を示す更新履歴を保存する。書き込みを監視するにあたり、トランザクションモニタ103は、仮想メモリアドレスと物理メモリアドレスの変換に用いるTLB(Translation Lookaside Buffer)テーブルを参照する。TLBテーブルは、例えば、CPU101によって生成され、CPU101内のメモリ管理ユニットまたはCPU101外部のユニット(トランザクションモニタ103でもよい)に保存されている。RAM102上にTLBテーブルを生成し、その一部をCPU101などに読み込んでもよい。
更新バッファ管理部104は、RAM102に用意された更新バッファを監視するハードウェアモジュールである。後述するように、更新バッファ管理部104は、更新バッファに記憶された更新履歴の量が閾値を超えると、TLBテーブルを書き換えることがある。また、更新バッファ管理部104は、更新バッファに記憶された更新履歴の量が閾値を超えると、CPU101に対して割り込み信号を発行することがある。
なお、トランザクションモニタ103と更新バッファ管理部104とを合わせて1つのハードウェアモジュールとしてもよい。また、RAM102の記憶領域の一部を更新バッファとして使用する代わりに、物理マシン100にRAM102とは別の専用バッファメモリを搭載し当該専用バッファメモリを更新バッファとして使用してもよい。その場合、専用バッファメモリの中に更新バッファ管理部104を組み込むようにしてもよい。
HDD105は、OSやミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムには、物理マシン間で仮想マシンを移動させるためのマイグレーションプログラムが含まれる。なお、物理マシン100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部106は、CPU101からの命令に従って、物理マシン100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどの各種ディスプレイを用いることができる。
入力信号処理部107は、物理マシン100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、物理マシン100に複数種類の入力デバイスが接続されていてもよい。
媒体リーダ108は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ108は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD105などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD105などを、コンピュータ読み取り可能な記録媒体と言うことがある。
通信インタフェース109は、ネットワーク30に接続され、ネットワーク30を介して他のコンピュータと通信を行うインタフェースである。通信インタフェース109は、例えば、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースである。ただし、基地局と無線リンクで接続される無線通信インタフェースであってもよい。
図4は、仮想マシンの配置例を示すブロック図である。
物理マシン100は、ハイパーバイザ121を有する。物理マシン100には、仮想マシン123,124が配置されている。ハイパーバイザ121は、物理マシン100が有するCPU101の処理時間やRAM102の記憶領域などのハードウェアリソースを仮想マシン123,124に割り当てる。仮想マシン123では、アプリケーション125やOS126が実行される。アプリケーション125は、アプリケーションプログラムから起動されたプロセスである。OS126は、ハイパーバイザ121から割り当てられたハードウェアリソースを管理し、割り当てられたハードウェアリソースを用いてアプリケーション125を実行させる。仮想マシン124も、ハイパーバイザ121から割り当てられたハードウェアリソースを用いてアプリケーションを実行する。
同様に、物理マシン100aは、ハイパーバイザ121aを有する。物理マシン100aには、仮想マシン123a,124aが配置されている。ハイパーバイザ121aは、物理マシン100aが有するハードウェアリソースを仮想マシン123a,124aに割り当てる。仮想マシン123a,124aはそれぞれ、ハイパーバイザ121aから割り当てられたハードウェアリソースを用いてアプリケーションを実行する。
物理マシン100と物理マシン100aとの間では、仮想マシンを移動させることができる。例えば、物理マシン100から物理マシン100aに仮想マシン123を移動させることができる。ハイパーバイザ121は、マイグレーション制御部122を有する。ハイパーバイザ121aは、マイグレーション制御部122aを有する。マイグレーション制御部122,122aは、仮想マシンの移動を制御する。マイグレーション制御部122,122aは、OSやアプリケーションをシャットダウンせずに仮想マシンを移動させることができるライブマイグレーションを実装している。
次に、物理マシン間の仮想マシンの移動について説明する。ここでは、物理マシン100から物理マシン100aに仮想マシン123を移動させる場合を考える。
図5は、プレコピー方式の第1のマイグレーション例を示す図である。
プレコピー方式のライブマイグレーションは、pre−copyフェーズとstop−copy&moveフェーズを含む。pre−copyフェーズでは、仮想マシンを停止させないまま、移動元の物理マシンにおけるメモリ上のページのデータを移動先の物理マシンにコピーする。仮想マシンは停止していないため、仮想マシンに割り当てられている全てのページのデータを1回コピーし終えるまでに、1以上のページが更新によってダーティページになることがある。その場合、少なくとも一部のダーティページのデータを移動先の物理マシンに再度コピーすることがある。ダーティページ数が閾値以下になると、stop−copy&moveフェーズに移行する。
stop−copy&moveフェーズでは、移動元の物理マシンにおいて仮想マシンを停止させる。そして、残りのダーティページのデータを移動先の物理マシンにコピーする。また、仮想マシンの現在の状態を示すCPUコンテキストを、移動元の物理マシンから移動先の物理マシンにコピーする。CPUコンテキストには、プログラムカウンタなどCPU101が有するレジスタの値や、RAM102に一時的に退避されているレジスタの値などが含まれる。移動先の物理マシンは、コピーされたページデータおよびCPUコンテキストに基づいて、仮想マシンの情報処理を途中から再開する。
以下に説明する第1の方法では、ページデータのコピーはページ単位で行われる。すなわち、ページの中の一部のデータが書き換えられると当該ページがダーティページと判断され、当該ページに含まれるデータ全体が再度コピーされることになる。
一例として、物理マシン100は、ページ152〜154を含む複数のページを仮想マシン123に割り当てている。また、物理マシン100は、仮想マシン123に関するCPUコンテキスト151を有する。ライブマイグレーションが開始されると、移動先の物理マシン100aは、ページ152a〜154aを含む複数のページを仮想マシン123に割り当てる。ページ152aはページ152に対応し、ページ153aはページ153に対応し、ページ154aはページ154に対応する。物理マシン100は、仮想マシン123が使用する全てのページのデータを物理マシン100aに送信する。ページ152のデータはページ152aに書き込まれ、ページ153のデータはページ153aに書き込まれ、ページ154のデータはページ154aに書き込まれる。
物理マシン100が全てのページのデータを送信し終えるまでに、仮想マシン123によってページ152,153が更新される。すると、ページ152,153がダーティページと判断される。ダーティページ数が閾値より大きい場合、物理マシン100は、更新されたページ152,153のデータ全体を物理マシン100aに送信する。ページ152のデータはページ152aに上書きされ、ページ153のデータはページ153aに上書きされる。また、この間に仮想マシン123によってページ154が更新される。すると、ページ154が新たにダーティページになったと判断される。ダーティページ数が閾値より多い間、上記のダーティページの再送が繰り返される。
図6は、プレコピー方式の第1のマイグレーション例を示す図(続き)である。
ダーティページ数が閾値以下になった場合、物理マシン100は、仮想マシン123に割り当てるCPU処理時間をゼロにするなどの方法によって仮想マシン123を強制停止させる。物理マシン100は、残っているダーティページとしてページ154のデータ全体を物理マシン100aに送信する。ページ154のデータはページ154aに上書きされる。また、物理マシン100は、仮想マシン123を停止させた時点におけるCPUコンテキスト151を物理マシン100aに送信する。物理マシン100aは、例えば、仮想マシン123の再開時にCPUがCPUコンテキスト151を読み込むように、RAMの中の適切な位置にCPUコンテキスト151を保存する。
物理マシン100は、仮想マシン123に割り当てたハードウェアリソースを解放する。これにより、ページ152〜154が解放され、ページ152〜154のデータが物理マシン100から消去される。物理マシン100aは、コピーされたCPUコンテキスト151およびページ152a〜154aのデータを用いて、物理マシン100が停止した時点から仮想マシン123の情報処理を再開する。
しかし、上記のライブマイグレーション方法では、仮想マシン123がRAM102に高頻度で書き込みを行っていると、ライブマイグレーションを効率的に行うことが難しい場合がある。特に、1回の書き込みサイズは小さいものの、多数のページに分散して書き込みが行われていると、ライブマイグレーションが効率的に行われない。
例えば、仮想マシン123が多数のページに分散して書き込みを行うと、pre−copyフェーズにおいてダーティページの発生頻度が高くなり、ダーティページ数が減少しない。ダーティページ数が閾値以下になるまでpre−copyを繰り返す場合、いつまで待ってもstop−copy&moveフェーズに移行せず、ライブマイグレーションが終了しない可能性がある。また、ライブマイグレーションを開始してから所定時間経過してもライブマイグレーションが完了しないと、タイムアウトエラーによってライブマイグレーションが失敗したとみなされる可能性がある。
また、所定時間待ってもpre−copyフェーズが終わらない場合、物理マシン100は、強制的にpre−copyフェーズを打ち切ってstop−copy&moveフェーズを開始することも考えられる。その場合、ダーティページが多いためstop−copy&moveフェーズにおけるページデータの送信に長時間を要し、仮想マシン123の実質的停止時間が長くなる可能性がある。また、ダーティページの発生頻度が高い場合、物理マシン100は、仮想マシン123に割り当てるCPU処理時間を減少させてダーティページの発生頻度を強制的に下げることも考えられる。その場合、移動直前の仮想マシン123のパフォーマンスが低下する可能性がある。
また、プレコピー方式に代えてポストコピー方式を採用することも考えられる。ポストコピー方式では、ページデータをコピーせずに、先にCPUコンテキスト151を移動先の物理マシン100aにコピーして物理マシン100aで仮想マシン123を実行させる。仮想マシン123が未コピーのページにアクセスしようとすると、ページフォールトを発生させて物理マシン100からページデータを取得する。このようなポストコピー方式では、移動直後の仮想マシン123のパフォーマンスが低下する可能性がある。
以上を踏まえて、第2の実施の形態では、物理マシン100,100aは、以下に説明する第2の方法によってプレコピー方式のライブマイグレーションを行う。
図7は、プレコピー方式の第2のマイグレーション例を示す図である。
第2の方法では、物理マシン100は、仮想マシン123に割り当てられた複数のページに対応付けて、RAM102に複数の更新バッファを確保する。物理マシン100は、あるページの中の一部のデータが書き換えられたとき、その更新内容を示す差分レコードを当該ページに対応する更新バッファに保存しておく。
物理マシン100は、更新量が少ないページ、すなわち、対応する更新バッファに格納された差分レコードが少ないページを、ダーティページでないとみなす。物理マシン100は、ダーティページでないとみなしたページについては、当該ページのデータ全体を物理マシン100aに再送しなくてよい。物理マシン100は、更新バッファに格納された差分レコードが多くなった時点で、当該ページがダーティページになったと判断し、当該ページのデータ全体を物理マシン100aに再送すればよい。stop−copy&moveフェーズでは、物理マシン100は、ダーティページでないとみなしたページについて当該ページのデータ全体に代えて差分レコードを物理マシン100aに送信する。
一例として、物理マシン100は、ページ152〜154を含む複数のページを仮想マシン123に割り当てている。また、物理マシン100は、仮想マシン123に関するCPUコンテキスト151を有する。前述の第1の方法と同様、物理マシン100は、仮想マシン123が使用する全てのページのデータを物理マシン100aに送信する。ページ152のデータはページ152aに書き込まれ、ページ153のデータはページ153aに書き込まれ、ページ154のデータはページ154aに書き込まれる。
また、物理マシン100は、ページ152に対応付けて更新バッファ155を用意し、ページ153に対応付けて更新バッファ156を用意し、ページ154に対応付けて更新バッファ157を用意する。物理マシン100が全てのページのデータを1回送信し終えるまでに、仮想マシン123によってページ152〜154が更新される。すると、物理マシン100は、更新バッファ155〜157に差分レコードを保存する。
更新バッファ155にはページ152への書き込みを示す差分レコードが保存される。更新バッファ156にはページ153への書き込みを示す差分レコードが保存される。更新バッファ157にはページ154への書き込みを示す差分レコードが保存される。しかし、ページ152〜154が1回更新されただけでは、物理マシン100は、すぐにはページ152〜154をダーティページと判断しない。よって、物理マシン100は、ページ152〜154のデータ全体を物理マシン100aに送信しなくてよい。
ページ153への書き込みが多数回発生すると、更新バッファ156に保存された差分レコードの量が閾値を超える。すると、物理マシン100は、ページ153をダーティページと判断する。このようにして判断されたダーティページの数が閾値より大きい場合、物理マシン100は、ページ153のデータ全体を物理マシン100aに送信し、ページ153に対応する更新バッファ156から差分レコードを削除する。ダーティページ数が閾値より多い間、上記のダーティページの再送が繰り返される。
図8は、プレコピー方式の第2のマイグレーション例を示す図(続き)である。
ダーティページ数が閾値以下になった場合、物理マシン100は仮想マシン123を強制停止させる。物理マシン100は、差分レコードの量が閾値を超えているダーティページが残っている場合、ダーティページのデータ全体を物理マシン100aに送信する。一方、物理マシン100は、それ以外のページについて、当該ページに対応する更新バッファに保存されている差分レコードを物理マシン100aに送信する。更新バッファ155,157には差分レコードが保存されているため、物理マシン100は、更新バッファ155,157の差分レコードを物理マシン100aに送信する。
物理マシン100aは、物理マシン100から受信した差分レコードに基づいてページデータを更新する。更新バッファ155に保存されていた差分レコードに基づいてページ152aのデータが更新され、更新バッファ157に保存されていた差分レコードに基づいてページ154aのデータが更新される。また、物理マシン100は、CPUコンテキスト151を物理マシン100aに送信する。前述の第1の方法と同様に、物理マシン100は、仮想マシン123に割り当てたハードウェアリソースを解放する。物理マシン100aは、コピーされたCPUコンテキスト151およびページ152a〜154aのデータを用いて、仮想マシン123の情報処理を再開する。
上記の第2の方法では、ページの一部分のみ書き換えられたときに当該ページのデータ全体を再送しなくてよいため、物理マシン100から物理マシン100aに送信するデータが削減される。また、更新が少ないページはダーティページでないとみなされるため、pre−copyフェーズからstop−copy&moveフェーズに移行しやすくなる。よって、ライブマイグレーションを迅速に完了させることができる。
図9は、更新履歴のフォーマット例を示す図である。
更新バッファ155〜157に保存される差分レコードのフォーマットとして、フォーマット161〜164などの幾つかのフォーマットが考えられる。
フォーマット161では、1回の書き込みに対応する差分レコードはページオフセットと書き込みサイズと書き込み値を含む。ページオフセットは、ページの先頭から書き込みが行われた場所の先頭までの距離を示す相対アドレスである。書き込みサイズは、書き込み値の長さを示すバイト数である。書き込み値は、書き込まれたビット列である。
フォーマット162では、差分レコードはページオフセットと書き込み値を含み、書き込みサイズが省略されている。書き込みサイズが省略されている場合、書き込み値は所定のバイト数に固定されている。例えば、書き込みサイズは、64バイトなどキャッシュメモリのキャッシュラインサイズに固定される。実際の書き込み量が所定のバイト数に満たない場合、不足部分には更新していない後続のビット列が補完される。実際の書き込み量が所定のバイト数を超える場合、差分レコードが分割される。差分レコードを送信する際に、書き込みサイズを差分レコードに挿入してもよい。
フォーマット163では、差分レコードはページオフセットと書き込みサイズを含み、書き込み値が省略されている。書き込み値が省略されている場合、差分レコードを送信する際に、ページオフセットおよび書き込みサイズによって特定されるビット列がページから読み出され、書き込み値として差分レコードに挿入される。
フォーマット164では、差分レコードはページオフセットを含み、書き込みサイズと書き込み値が省略されている。省略された書き込みサイズは、フォーマット162と同様に取り扱う。省略された書き込み値は、フォーマット163と同様に取り扱う。すなわち、差分レコードを送信する際に、ページオフセットおよび所定のバイト数によって特定されるビット列がページから読み出され、書き込み値として差分レコードに挿入される。このとき、更に書き込みサイズを差分レコードに挿入してもよい。
前述のように、差分レコードは、トランザクションモニタ103によって生成されてRAM102上の更新バッファに保存される。また、更新バッファに保存された差分レコードの量が閾値を超えたことは、更新バッファ管理部104によって検出される。第2の実施の形態では、仮想メモリアドレスと物理メモリアドレスを対応付けたTLBテーブルを拡張して、トランザクションモニタ103および更新バッファ管理部104を制御する。
図10は、TLBテーブルの例を示す図である。
TLBテーブル144は、物理ページ番号、書き込み禁止フラグ、モニタフラグ、フルフラグ、バッファアドレス、バッファモードおよびバッファサイズの項目を有する。TLBテーブル144では、仮想メモリアドレスに含まれる仮想ページ番号から、当該仮想メモリアドレスが示すページに関する情報にアクセスすることができる。
物理ページ番号は、ページを識別する識別番号であり、物理メモリアドレスの一部を構成する。書き込み禁止フラグは、ページへの書き込みの排他制御に用いるフラグである。書き込み禁止フラグが「0(OFF)」であることは書き込みが禁止されていないことを示し、書き込み禁止フラグが「1(ON)」であることは書き込みが禁止されていることを示す。書き込み禁止フラグがONである場合、書き込みを行おうとする他のプロセスは書き込み禁止フラグがOFFになるまで待機することになる。
モニタフラグは、書き込みが発生したときに差分レコードを生成するか否かを示すフラグである。モニタフラグが「0(OFF)」であることは差分レコードを生成しなくてよいことを示し、モニタフラグが「1(ON)」であることは差分レコードを生成することを示す。モニタフラグは、マイグレーション制御部122,122aによって書き換えられる。フルフラグは、更新バッファに保存されている差分レコードの量が閾値を超えたか否かを示すフラグである。フルフラグが「0(OFF)」であることは差分レコードの量が閾値を超えていないことを示し、フルフラグが「1(ON)」であることは差分レコードの量が閾値を超えていることを示す。フルフラグは、更新バッファ管理部104やマイグレーション制御部122,122aによって書き換えられる。
バッファアドレスは、更新バッファとして確保されたメモリ領域の先頭を示す物理メモリアドレスである。バッファモードは、更新バッファに保存される差分レコードのフォーマットを示す。フォーマットは、例えば、前述のフォーマット161〜164の中から選択される。バッファサイズは、更新バッファの大きさを示す。なお、第2の実施の形態では、バッファモードおよびバッファサイズは固定である。よって、バッファモードおよびバッファサイズの項目をTLBテーブル144から省略してもよい。
次に、物理マシン100の機能について説明する。
図11は、物理マシンの機能例を示すブロック図である。
マイグレーション制御部122は、全体制御部131、ページ状態管理部132、転送制御部133、ページ読み出し部134、ページ書き込み部135、コンテキスト移動部136、バッファフル検出部137、差分読み出し部138および差分書き込み部139を有する。マイグレーション制御部122は、例えば、CPU101が実行するプログラムモジュールを用いて実装される。また、物理マシン100は、ページ領域141、更新バッファ領域142およびTLBテーブル記憶部143を有する。ページ領域141および更新バッファ領域142は、RAM102に確保された記憶領域である。TLBテーブル記憶部143は、RAM102に確保された記憶領域でもよいし、CPU101の内部または外部に存在するキャッシュメモリでもよい。
全体制御部131は、マイグレーション制御部122内の他のユニットに指示して、ライブマイグレーション全体を制御する。ページ状態管理部132は、仮想マシンに割り当てられた各ページの状態を管理する。ページ状態には、ライブマイグレーションを開始してから1回もデータを送信していない転送前状態と、現在データを送信している転送中状態とが含まれる。また、ページ状態には、1回以上データを送信しており現在ダーティページと判断されていない転送後クリーン状態と、1回以上データを送信しており現在ダーティページと判断されている転送後ダーティ状態とが含まれる。ページ状態管理部132は、適宜、TLBテーブル144の各種フラグを書き換える。
転送制御部133は、他の物理マシンとの間の通信を制御する。転送制御部133は、ページ読み出し部134からページデータを取得すると、移動先の物理マシンにページデータを送信する。また、転送制御部133は、移動元の物理マシンからページデータを受信すると、受信したページデータをページ書き込み部135に出力する。また、転送制御部133は、差分読み出し部138から差分レコードを取得すると、移動先の物理マシンに差分レコードを送信する。また、転送制御部133は、移動元の物理マシンから差分レコードを受信すると、受信した差分レコードを差分書き込み部139に出力する。
また、転送制御部133は、コンテキスト移動部136からCPUコンテキストを取得すると、移動先の物理マシンにCPUコンテキストを送信する。また、転送制御部133は、移動元の物理マシンからCPUコンテキストを受信すると、受信したCPUコンテキストをコンテキスト移動部136に出力する。
ページ読み出し部134は、全体制御部131から指定されたページのデータ全体をRAM102から読み出し、転送制御部133に出力する。ページ書き込み部135は、転送制御部133から取得したページデータをRAM102に書き込む。
コンテキスト移動部136は、CPUコンテキストの移動を制御する。コンテキスト移動部136は、全体制御部131からの指示に応じて、移動する仮想マシンに関するCPUコンテキストを収集して転送制御部133に出力する。このとき、例えば、全体制御部131は、CPU101のレジスタ値をRAM102に退避させ、既にRAM102に退避されている情報と合わせてCPUコンテキストを形成する。また、コンテキスト移動部136は、転送制御部133からCPUコンテキストを取得すると、CPU101に読み込まれるようにRAM102の適切な位置にCPUコンテキストを書き込む。
バッファフル検出部137は、全体制御部131からの指示に応じてTLBテーブル144に含まれるフルフラグを確認する。バッファフル検出部137は、フルフラグがONになっているページ、すなわち、差分レコードの量が閾値を超えている更新バッファに対応するページを検出し、検出したページを全体制御部131に通知する。
差分読み出し部138は、全体制御部131から指定されたページに対応する更新バッファから差分レコードを読み出し、差分レコードを転送制御部133に出力する。このとき、差分読み出し部138は、読み出した差分レコードに書き込み値が含まれていない場合、ページから書き込み値に相当するデータを読み出して差分レコードに挿入する。差分読み出し部138は、読み出した差分レコードに書き込みサイズが含まれていない場合、所定のバイト数を書き込みサイズとして差分レコードに挿入してもよい。
差分書き込み部139は、転送制御部133から取得した差分レコードに従って、ページのデータの一部分を更新する。すなわち、差分書き込み部139は、差分レコードに含まれるページオフセットおよび書き込みサイズによって特定される場所に、差分レコードに含まれる書き込み値を上書きする。差分レコードに書き込みサイズが含まれていない場合、差分書き込み部139は、書き込みサイズが所定のバイト数であるとみなす。
ページ領域141は、仮想マシンに割り当てられた複数のページを含む。更新バッファ領域142は、ページ領域141に含まれる複数のページに対応する複数の更新バッファを含む。更新バッファは、ライブマイグレーションの際に動的に確保される。TLBテーブル記憶部143は、前述のTLBテーブル144を記憶する。トランザクションモニタ103は、TLBテーブル144を参照し、更新バッファへの書き込みを行う。更新バッファ管理部104は、更新バッファを監視し、TLBテーブル144を更新する。
なお、他の物理マシンも物理マシン100と同様の機能を有する。
次に、ライブマイグレーションの手順について説明する。
図12は、移動元処理の手順例を示すフローチャートである。
ここでは、物理マシン100が移動元であることを想定して説明する。他の物理マシンも物理マシン100と同様の処理を実行できる。
(S10)全体制御部131は、移動させる仮想マシンに割り当てられている複数のページを特定する。全体制御部131は、特定した複数のページに対応付けて複数の更新バッファをRAM102に確保する。確保された複数の更新バッファそれぞれの場所を示すバッファアドレスが、TLBテーブル144に書き込まれる。また、確保された複数の更新バッファそれぞれのバッファサイズやバッファモードが、TLBテーブル144に書き込まれる。ただし、バッファサイズやバッファモードが固定であれば省略してもよい。
(S11)ページ状態管理部132は、TLBテーブル144において、ステップS10で特定された全てのページについてモニタフラグとフルフラグをOFFに設定する。
以下のステップS12〜S22はpre−copyフェーズである。
(S12)全体制御部131は、ステップS10の全てのページを対象ページとする。
(S13)全体制御部131は、対象ページを1つ選択する。対象ページは、上記のステップS12または後述するステップS21で特定されるものである。
(S14)ページ状態管理部132は、TLBテーブル144において、ステップS13で選択された対象ページについて書き込み禁止フラグをONに設定する。
(S15)ページ読み出し部134は、ステップS13で選択された対象ページのデータ全体をページ領域141から読み出す。転送制御部133は、ページ読み出し部134が読み出したデータを、移動先の物理マシン100aに送信する。
(S16)全体制御部131は、ステップS13で選択された対象ページの更新バッファから差分レコードを削除し、当該更新バッファを初期化する。
(S17)ページ状態管理部132は、TLBテーブル144において、ステップS13で選択された対象ページについてモニタフラグをONに設定する。また、ページ状態管理部132は、TLBテーブル144において、ステップS13で選択された対象ページについて書き込み禁止フラグとフルフラグをOFFに設定する。
(S18)全体制御部131は、ステップS13で全ての対象ページが選択されたか判断する。全ての対象ページが選択された場合はステップS19に処理が進み、未選択の対象ページが存在する場合はステップS13に処理が進む。
(S19)バッファフル検出部137は、TLBテーブル144からフルフラグがONになっているページを検索し、検索されたページをダーティページと判定する。
(S20)全体制御部131は、ステップS19で検索されたダーティページの数が所定の閾値以下であるか判断する。ダーティページ数が閾値以下である場合はステップS22に処理が進み、閾値を超える場合はステップS21に処理が進む。
(S21)全体制御部131は、ステップS19で検索された全てのダーティページを対象ページとする。そして、ステップS13に処理が進む。
図13は、移動元処理の手順例を示すフローチャート(続き)である。
(S22)全体制御部131は、pre−copyフェーズからstop−copy&moveフェーズに移行することを決定する。転送制御部133は、移動先の物理マシン100aにpre−copy終了通知を送信する。
以下のステップS23〜30はstop−copy&moveフェーズである。
(S23)コンテキスト移動部136は、移動させる仮想マシンを停止させる。仮想マシンの停止は、例えば、割り当てるCPU処理時間をゼロにすることによって行う。この停止は、CPUコンテキストを維持したままの強制停止であり、OSやアプリケーションのシャットダウン(正常な終了手続き)は行われない。
(S24)バッファフル検出部137は、TLBテーブル144からフルフラグがONになっているページを検索し、検索されたページをダーティページと判定する。ただし、バッファフル検出部137は、直前のステップS19の検索結果を使うことで、ここではダーティページの検索を省略してもよい。ページ読み出し部134は、ダーティページのデータ全体をページ領域141から読み出す。転送制御部133は、ページ読み出し部134が読み出したデータを、移動先の物理マシン100aに送信する。
(S25)全体制御部131は、移動させる仮想マシンのページのうちダーティページ以外のページについて、更新バッファを1つ選択する。
(S26)差分読み出し部138は、ステップS25で選択された更新バッファのバッファモード、すなわち、更新バッファに格納される差分レコードのフォーマットが、書き込み値を省略するものであるか判断する。例えば、差分読み出し部138は、TLBテーブル144に記載されたバッファモードを確認する。ただし、全ての更新バッファを通じてバッファモードが固定である場合、TLBテーブル144を参照しなくてもよい。差分レコードから書き込み値が省略されている場合はステップS27に処理が進み、書き込み値が省略されていない場合はステップS28に処理が進む。
(S27)差分読み出し部138は、ステップS25で選択された更新バッファに記憶されている差分レコードそれぞれに対して書き込み値を補完する。このとき、差分読み出し部138は、更新バッファに対応するページの中から、差分レコードのページオフセットと書き込みサイズによって特定される場所のビット列を書き込み値として読み出す。ただし、差分レコードから書き込みサイズが省略されている場合、書き込みサイズは所定バイト数(例えば、キャッシュラインサイズ)であるとみなす。
(S28)転送制御部133は、ステップS25で選択された更新バッファの中の全ての差分レコードを、移動先の物理マシン100aに送信する。ただし、書き込み値が省略されている場合、転送制御部133は、ステップS27で書き込み値が補完された差分レコードを送信する。差分レコードから書き込みサイズが省略されている場合、転送制御部133は、書き込みサイズを補完した差分レコードを送信してもよい。
(S29)全体制御部131は、ステップS25で全ての更新バッファが選択されたか判断する。全ての更新バッファが選択された場合はステップS30に処理が進み、未選択の更新バッファが存在する場合はステップS25に処理が進む。
(S30)コンテキスト移動部136は、移動させる仮想マシンについてプログラムカウンタなどを含むCPUコンテキストを収集する。CPUコンテキストの一部は、CPU101のレジスタやキャッシュメモリに記憶されていることがあり、また、RAM102に退避されていることがある。転送制御部133は、コンテキスト移動部136が収集したCPUコンテキストを、移動先の物理マシン100aに送信する。
(S31)全体制御部131は、ステップS10で確保した更新バッファを解放する。
(S32)全体制御部131は、仮想マシンに割り当てられているCPU101やRAM102などのハードウェアリソースを解放することで、物理マシン100から当該仮想マシンを削除する。これにより、ライブマイグレーションが完了する。
図14は、更新履歴生成の手順例を示すフローチャートである。
(S40)トランザクションモニタ103は、CPU101とRAM102との間のメモリバス上においてページへの書き込みを検出する。
(S41)トランザクションモニタ103は、ステップS40の書き込み対象のページに対応するモニタフラグをTLBテーブル144から検索する。トランザクションモニタ103は、検索したモニタフラグがONであるか判断する。モニタフラグがONの場合はステップS42に処理が進み、モニタフラグがOFFの場合は更新履歴生成が終了する。
(S42)トランザクションモニタ103は、ステップS40で検出された書き込みについての差分レコードを生成する。このとき、トランザクションモニタ103は、書き込みの内容からページオフセットを特定して差分レコードに挿入する。差分レコードが書き込みサイズを含むフォーマットである場合、トランザクションモニタ103は、書き込みの内容から書き込みサイズを特定して差分レコードに挿入する。また、差分レコードが書き込み値を含むフォーマットである場合、トランザクションモニタ103は、書き込みの内容から書き込み値を特定して差分レコードに挿入する。上記の制御のため、トランザクションモニタ103は、TLBテーブル144の中のバッファモードを参照してもよい。
(S43)トランザクションモニタ103は、ステップS40の書き込み対象のページに対応する更新バッファをRAM102の中から特定する。このとき、トランザクションモニタ103は、TLBテーブル144の中のバッファアドレスやバッファサイズを参照してもよい。そして、トランザクションモニタ103は、特定した更新バッファの末尾に、ステップS42で生成された差分レコードを追記する。
(S44)更新バッファ管理部104は、ステップS43の更新バッファに記憶されている差分レコードの量(例えば、合計バイト数)が所定の閾値を超えたか判断する。閾値を算出するために、更新バッファ管理部104は、TLBテーブル144の中のバッファサイズを参照してもよい。閾値は、例えば、更新バッファのサイズより若干小さい値とする。差分レコード量が閾値を超えた場合はステップS45に処理が進み、差分レコード量が閾値以下である場合は更新履歴生成が終了する。
(S45)更新バッファ管理部104は、TLBテーブル144において、ステップS43の更新バッファに対応するページのフルフラグをONに設定する。
図15は、移動先処理の手順例を示すフローチャートである。
ここでは、物理マシン100が移動先であることを想定して説明する。他の物理マシンも物理マシン100と同様の処理を実行できる。
(S50)全体制御部131は、受け入れる仮想マシンに対してCPU101やRAM102などのハードウェアリソースを割り当てる。
(S51)転送制御部133は、1つのページのデータ全体を受信したか判断する。1つのページのデータ全体は、pre−copyフェーズとstop−copy&moveフェーズの両方で受信され得る。ページのデータ全体を受信した場合はステップS52に処理が進み、それ以外の場合はステップS53に処理が進む。
(S52)ページ書き込み部135は、ステップS50で割り当てられたRAM102の記憶領域の中から、受信されたデータが格納されていた移動元のページに対応する移動先のページを特定する。ページ書き込み部135は、特定したページに受信されたデータを書き込む。当該ページへの書き込みが2回目以降である場合、データが上書きされる。
(S53)転送制御部133は、1つのページについての1以上の差分レコードを受信したか判断する。第2の実施の形態では、差分レコードはstop−copy&moveフェーズで受信され得る。差分レコードを受信した場合はステップS54に処理が進み、それ以外の場合はステップS55に処理が進む。なお、第2の実施の形態では、差分レコードはpre−copyフェーズで受信されないため、pre−copy終了通知を受信した後に差分レコードの受信判定を開始してもよい。
(S54)差分書き込み部139は、ステップS50で割り当てられたRAM102の記憶領域の中から、差分レコードが対象とする移動元のページに対応する移動先のページを特定する。特定したページには、既に1回以上データが書き込まれている。差分書き込み部139は、差分レコードそれぞれに基づいて、特定したページのデータの一部分を更新する。すなわち、差分書き込み部139は、差分レコードのページオフセットと書き込みサイズに基づいてページ内の場所を特定し、差分レコードに含まれる書き込み値を特定した場所に上書きする。ただし、差分レコードから書き込みサイズが省略されている場合、所定のバイト数(例えば、キャッシュラインサイズ)を書き込みサイズとみなす。
(S55)転送制御部133は、CPUコンテキストを受信したか判断する。CPUコンテキストは、stop−copy&moveフェーズの最後(ページデータと差分レコードを受信した後)で受信される。CPUコンテキストを受信した場合はステップS56に処理が進み、それ以外の場合はステップS51に処理が進む。
(S56)コンテキスト移動部136は、受け入れる仮想マシンがCPUコンテキストに従って情報処理を再開するように、CPUコンテキストをRAM102に保存する。すなわち、コンテキスト移動部136は、CPU101がCPUコンテキストに含まれるプログラムカウンタなどのレジスタ値を読み込むようにする。
(S57)全体制御部131は、仮想マシンの実行を開始させる。これにより、ステップS56のCPUコンテキストが示す位置からプログラムの実行が再開され、移動元の物理マシン100aが停止した位置の直後から情報処理が引き継がれる。
第2の実施の形態の情報処理システムによれば、プレコピー方式のライブマイグレーションにおいて、ページ内のデータが更新される毎に当該ページに対応する更新バッファに差分レコードが記録される。更新バッファの差分レコードが少ないうちは、当該ページはダーティページでないとみなされ、差分レコードの量が閾値を超えたときに、当該ページがダーティページになったとみなされる。そして、ダーティページでないとみなされたページについては、仮想マシンの停止後にデータ全体に代えて差分レコードが転送される。
これにより、見かけ上のダーティページ数を減らすことができる。よって、pre−copyフェーズからstop−copy&moveフェーズに迅速に移行できるようになり、ライブマイグレーションが正常に完了する可能性が高くなる。また、stop−copy&moveフェーズの転送データ量が削減される。よって、仮想マシンの実質的停止時間を短縮することができる。また、pre−copyフェーズにおいてダーティページ数を減らすために仮想マシンのCPU処理時間の割り当てを減らさなくてもよく、ライブマイグレーション時の仮想マシンの性能低下を軽減できる。また、ポストコピー方式と比べて、仮想マシンが移動した後の性能低下を軽減できる。
このように、第2の実施の形態によれば、円滑にライブマイグレーションを行うことができる。また、更新バッファに記録する差分レコードから書き込みサイズおよび書き込み値の少なくとも一方を省略することが可能である。これにより、更新バッファのサイズを削減できる。また、更新バッファへの差分レコードの記録や差分レコード量の検出は、TLBテーブル144を利用してハードウェアで実装される。これにより、ライブマイグレーション時のRAM102へのアクセス性能の低下を軽減できる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。
第3の実施の形態の情報処理システムは、pre−copyフェーズにおいて、更新バッファの差分レコード量が閾値を超えたことを迅速に検知し、更新バッファが溢れる前にページのデータ全体に代えて差分レコードを送信するようにする。
第3の実施の形態の情報処理システムは、図2と同様のシステム構成によって実装できる。また、第3の実施の形態の物理マシンは、図3と同様のハードウェア構成および図11と同様のソフトウェア構成によって実装できる。また、第3の実施の形態の物理マシンは、図10と同様のTLBテーブルを利用することができる。以下では、図2,3,10,11と同様の符号を用いて第3の実施の形態を説明する。
第3の実施の形態では、更新バッファ管理部104は、ある更新バッファの差分レコード量が閾値を超えると、TLBテーブル144のフルフラグをONに設定すると共に、CPU101に対して割り込み信号を送信する。よって、図14の更新履歴生成のフローチャートを第3の実施の形態に適用するにあたっては、ステップS45において、更新バッファ管理部104がCPU101に対して割り込みを発行する。
第3の実施の形態においても、図12,13の移動元処理のフローチャートが移動元の物理マシンに適用され、図15の移動先処理のフローチャートが移動先の物理マシンに適用される。第3の実施の形態では更に、移動元の物理マシンにおいて、図12,13の移動元処理と並行して以下の差分事前送信が実行される。
図16は、差分事前送信の手順例を示すフローチャートである。
(S60)バッファフル検出部137は、更新バッファ管理部104が発行した割り込みを検出する。割り込みは、上記のようにステップS45で発行される。
(S61)バッファフル検出部137は、TLBテーブル144からフルフラグがONになっているページを検索し、検索されたページをダーティページとして選択する。
(S62)ページ状態管理部132は、TLBテーブル144において、ステップS61で選択されたダーティページについて書き込み禁止フラグをONに設定する。
(S63)差分読み出し部138は、選択されたダーティページに対応する更新バッファのバッファモードが、書き込み値を省略するものであるか判断する。差分レコードから書き込み値が省略されている場合はステップS64に処理が進み、書き込み値が省略されていない場合はステップS65に処理が進む。
(S64)差分読み出し部138は、更新バッファに記憶されている差分レコードそれぞれに対して書き込み値を補完する。このとき、差分読み出し部138は、ステップS61で選択されたダーティページの中から、差分レコードのページオフセットと書き込みサイズによって特定される場所のビット列を書き込み値として読み出す。ただし、差分レコードから書き込みサイズが省略されている場合、書き込みサイズは所定バイト数(例えば、キャッシュラインサイズ)であるとみなす。
(S65)転送制御部133は、更新バッファの中の全ての差分レコードを、移動先の物理マシン100aに送信する。ただし、書き込み値が省略されている場合、転送制御部133は、ステップS64で書き込み値が補完された差分レコードを送信する。
(S66)全体制御部131は、ステップS61で選択されたダーティページの更新バッファから差分レコードを削除し、当該更新バッファを初期化する。
(S67)ページ状態管理部132は、TLBテーブル144において、ステップS61で選択されたダーティページの書き込み禁止フラグとフルフラグをOFFに設定する。
なお、更新バッファ管理部104が割り込みを1回発行する毎に選択されるダーティページは1つでもよいし2つ以上でもよい。pre−copyフェーズにおいて、図12の処理と図14の処理とが並行して実行される。ダーティページの発生頻度が高い場合、図14の処理によってダーティページが減少するものの、ダーティページは完全にはなくならないため、図12のステップS13〜S21の処理が実行されることになる。移動先の物理マシンでは、第2の実施の形態と異なり、図15のステップS53,S54がpre−copyフェーズにおいても実行されることになる。
第3の実施の形態の情報処理システムによれば、第2の実施の形態と同様の効果が得られる。更に、第3の実施の形態では、更新バッファに記録された差分レコードの量が閾値を超えたことが迅速に検出され、更新バッファから差分レコードが溢れる前に差分レコードが転送される。よって、ダーティページのデータ全体を再度コピーする場合よりもpre−copyフェーズの転送データ量を削減できる。
[第4の実施の形態]
次に、第4の実施の形態を説明する。
第4の実施の形態の情報処理システムは、複数の更新バッファそれぞれのバッファモードを動的に変更することで、更新バッファに格納可能な差分レコードの数と差分レコードを送信する際の負荷との間のバランスを図るようにする。
更新バッファに保存される差分レコードに書き込み値が含まれている場合、差分レコードを送信するときにページ本体にアクセスしなくてよく、差分レコードを送信する負荷が低くなる。ただし、各差分レコードのサイズが大きくなるため、更新バッファに格納可能な差分レコードの数が少なくなりダーティページの発生頻度が高くなる。一方、更新バッファに保存される差分レコードから書き込み値が省略されている場合、差分レコードを送信するときにページ本体にアクセスすることになり、差分レコードを送信する負荷が高くなる。ただし、各差分レコードのサイズが小さくなるため、更新バッファに格納可能な差分レコードの数が多くなりダーティページの発生頻度は低くなる。
そこで、第4の実施の形態では、最初は各更新バッファのバッファモードを書き込み値を省略しないバッファモード(例えば、図9のフォーマット161またはフォーマット162)に設定する。そして、ライブマイグレーション中に更新頻度の高いページについては、更新バッファのバッファモードを書き込み値を省略するバッファモード(例えば、図9のフォーマット163またはフォーマット164)に変更する。これにより、更新頻度の低いページについては差分レコードを送信する負荷が低くなり、更新頻度の高いページについてはダーティページになる頻度を抑制できる。
第4の実施の形態の情報処理システムは、図2と同様のシステム構成によって実装できる。また、第4の実施の形態の物理マシンは、図3と同様のハードウェア構成および図11と同様のソフトウェア構成によって実装できる。また、第4の実施の形態の物理マシンは、図10と同様のTLBテーブルを利用することができる。以下では、図2,3,10,11と同様の符号を用いて第4の実施の形態を説明する。
第4の実施の形態においても、図12,13の移動元処理のフローチャートおよび図14の更新履歴生成のフローチャートが移動元の物理マシンに適用され、図15の移動先処理のフローチャートが移動先の物理マシンに適用される。ただし、図12のステップS21からステップS13に戻るときに、以下のステップS70〜S74が実行される。
図17は、バッファモード変更の手順例を示すフローチャートである。
(S70)ページ状態管理部132は、前述のステップS19で検索されたダーティページそれぞれについて、ライブマイグレーションを開始してからダーティページになった回数(ダーティ回数)を特定する。ダーティ回数は、更新バッファの差分レコード量が閾値を超えた回数である。なお、ページ状態管理部132は、ページ毎にステップS19でダーティページと判定された回数を管理している。
(S71)全体制御部131は、ダーティページを1つ選択する。
(S72)全体制御部131は、ステップS71で選択したダーティページのダーティ回数が所定の閾値を超えたか判断する。ダーティ回数が閾値を超えた場合はステップS73に処理が進み、ダーティ回数が閾値以下である場合はステップS74に処理が進む。
(S73)ページ状態管理部132は、ステップS71で選択したダーティページのバッファモードを、書き込み値を省略するバッファモードに変更する。ページ状態管理部132は、TLBテーブル144のバッファモードを書き換える。これにより、更新バッファが初期化されて次に書き込まれる差分レコードからフォーマットが変更される。
(S74)全体制御部131は、ステップS71で全てのダーティページを選択したか判断する。全てのダーティページを選択した場合、バッファモード変更が終了してステップS13に進む。未選択のダーティページがある場合、ステップS71に処理が進む。
なお、上記ではページ毎の更新頻度の指標としてダーティ回数を使用しているが、他の指標を使用することもできる。例えば、各ページの書き込み回数をカウントすることができる場合、ステップS70において各ダーティページの書き込み回数が特定される。そして、ステップS72で書き込み回数と所定の閾値とが比較される。
第4の実施の形態の情報処理システムによれば、第2の実施の形態と同様の効果が得られる。更に、第4の実施の形態では、更新頻度の低いページのバッファモードは書き込み値を省略しないバッファモードに設定され、更新頻度の高いページのバッファモードは書き込み値を省略するバッファモードに設定される。よって、差分レコードを送信する際の負荷とダーティページの発生頻度との間のバランスを図ることができる。
[第5の実施の形態]
次に、第5の実施の形態を説明する。
第5の実施の形態の情報処理システムは、複数の更新バッファそれぞれのバッファサイズを動的に変更することで、更新バッファとして確保されるメモリ領域の量とダーティページの発生頻度との間のバランスを図るようにする。
更新バッファのバッファサイズが大きい場合、更新バッファに格納可能な差分レコードの数が多くなりダーティページの発生頻度が低くなる。ただし、更新バッファとして確保されるメモリ領域が多くなってしまう。また、更新頻度が低いページに対応する更新バッファでは使用されない領域が多くなり、メモリ使用効率が低下する。一方、更新バッファのバッファサイズが小さい場合、更新バッファに格納可能な差分レコードの数が少なくなりダーティページの発生頻度が高くなる。ただし、更新バッファとして確保されるメモリ領域は少なく、メモリ使用効率の低下を避けることができる。
そこで、第5の実施の形態では、最初は各更新バッファのバッファサイズを小さく設定しておく。そして、ライブマイグレーション中に更新頻度の高いページについては、更新バッファのバッファサイズを大きくする。これにより、更新頻度の低いページについては更新バッファとして使用するメモリ領域が少なくてすみ、更新頻度の高いページについてはダーティページになる頻度を抑制できる。
第5の実施の形態の情報処理システムは、図2と同様のシステム構成によって実装できる。また、第5の実施の形態の物理マシンは、図3と同様のハードウェア構成および図11と同様のソフトウェア構成によって実装できる。また、第5の実施の形態の物理マシンは、図10と同様のTLBテーブルを利用することができる。以下では、図2,3,10,11と同様の符号を用いて第5の実施の形態を説明する。
第5の実施の形態においても、図12,13の移動元処理のフローチャートおよび図14の更新履歴生成のフローチャートが移動元の物理マシンに適用され、図15の移動先処理のフローチャートが移動先の物理マシンに適用される。ただし、図12のステップS21からステップS13に戻るときに、以下のステップS80〜S84が実行される。
図18は、バッファサイズ変更の手順例を示すフローチャートである。
(S80)ページ状態管理部132は、前述のステップS19で検索されたダーティページそれぞれについて、ライブマイグレーションを開始してからダーティページになった回数(ダーティ回数)を特定する。ダーティ回数は、更新バッファの差分レコード量が閾値を超えた回数である。なお、ページ状態管理部132は、ページ毎にステップS19でダーティページと判定された回数を管理している。
(S81)全体制御部131は、ダーティページを1つ選択する。
(S82)全体制御部131は、ステップS81で選択したダーティページのダーティ回数が閾値を超えたか判断する。ダーティ回数が閾値を超えた場合はステップS83に処理が進み、ダーティ回数が閾値以下である場合はステップS84に処理が進む。なお、閾値は固定値でもよいし中央値でもよい。ダーティ回数の中央値は、ライブマイグレーションを開始してから1回以上ダーティページになったことのあるページのダーティ回数の中央値である。ただし、中央値に代えて平均値や最頻値などの他の代表値を用いてもよい。
(S83)ページ状態管理部132は、ステップS71で選択したダーティページのバッファサイズを拡大する。例えば、バッファサイズを現在の2倍に拡大する。ページ状態管理部132は、TLBテーブル144のバッファサイズを書き換える。これにより、更新バッファが一杯になったか次に判定するときに使用される閾値が大きくなる。
(S84)全体制御部131は、ステップS81で全てのダーティページを選択したか判断する。全てのダーティページを選択した場合、バッファサイズ変更が終了してステップS13に進む。未選択のダーティページがある場合、ステップS81に処理が進む。
なお、上記ではページ毎の更新頻度の指標としてダーティ回数を使用しているが、他の指標を使用することもできる。例えば、各ページの書き込み回数をカウントすることができる場合、ステップS80において各ダーティページの書き込み回数が特定される。そして、ステップS82で書き込み回数と閾値とが比較される。
第5の実施の形態の情報処理システムによれば、第2の実施の形態と同様の効果が得られる。更に、第5の実施の形態では、更新頻度の低いページのバッファサイズは小さく設定され、更新頻度の高いページのバッファサイズは大きく設定される。よって、メモリ領域の使用効率とダーティページの発生頻度との間のバランスを図ることができる。
10,20 情報処理装置
11,21 メモリ
12,22 処理部
13 仮想マシン
14 単位領域
14a データ
15 バッファ領域
15a 更新履歴

Claims (8)

  1. コンピュータに、
    仮想マシンが使用するメモリ上の単位領域のデータを他のコンピュータにコピーし、また、前記単位領域に対応させてバッファ領域を割り当て、
    コピー後に前記単位領域のデータが更新される毎に、前記単位領域に対応する前記バッファ領域に更新履歴が保存されるよう制御し、
    前記他のコンピュータで前記仮想マシンを稼働させる際、前記バッファ領域に保存された前記更新履歴の量が閾値を超える場合には前記単位領域のデータを前記他のコンピュータに再度コピーし、前記更新履歴の量が前記閾値を超えない場合には前記更新履歴を前記他のコンピュータに対して送信させる、
    処理を実行させるマイグレーションプログラム。
  2. 前記メモリは複数の単位領域を含み、
    前記複数の単位領域に対応させて複数のバッファ領域が割り当てられ、
    前記コンピュータに更に、前記複数のバッファ領域のうち前記更新履歴の量が前記閾値を超えるバッファ領域の数に基づいて、前記コンピュータにおいて前記仮想マシンを停止させるタイミングを判定する処理を実行させる、
    請求項1記載のマイグレーションプログラム。
  3. 前記単位領域のデータの再度コピーと前記更新履歴の送信との選択的実行は、前記コンピュータにおいて前記仮想マシンが停止した後に行われ、
    前記コンピュータに更に、前記仮想マシンの停止前は、前記更新履歴の量が前記閾値を超えた場合に前記単位領域のデータを再度コピーする処理を実行させる、
    請求項1記載のマイグレーションプログラム。
  4. 前記単位領域のデータの再度コピーと前記更新履歴の送信との選択的実行は、前記コンピュータにおいて前記仮想マシンが停止した後に行われ、
    前記コンピュータに更に、前記仮想マシンの停止前は、前記更新履歴の量が前記閾値を超えた場合に前記更新履歴を送信させる処理を実行させる、
    請求項1記載のマイグレーションプログラム。
  5. 前記コンピュータに更に、前記単位領域のデータが更新される頻度に応じて、前記バッファ領域に保存される前記更新履歴のフォーマットを変更する処理を実行させる、
    請求項1記載のマイグレーションプログラム。
  6. 前記コンピュータに更に、前記単位領域のデータが更新される頻度に応じて、前記単位領域に対応する前記バッファ領域のサイズを変更する処理を実行させる、
    請求項1記載のマイグレーションプログラム。
  7. 仮想マシンが使用する単位領域を含むメモリと、
    前記単位領域のデータを他の情報処理装置にコピーし、コピー後に前記単位領域のデータが更新される毎に、前記単位領域に対応させて割り当てられたバッファ領域に更新履歴が保存されるよう制御し、前記仮想マシンを前記他の情報処理装置で稼働させる際、前記バッファ領域に保存された前記更新履歴の量が閾値を超える場合には前記単位領域のデータを前記他の情報処理装置に再度コピーし、前記更新履歴の量が前記閾値を超えない場合には前記更新履歴を前記他の情報処理装置に対して送信させる処理部と、
    を有する情報処理装置。
  8. 第1の情報処理装置および第2の情報処理装置を含むシステムが実行するマイグレーション方法であって、
    前記第1の情報処理装置に配置された仮想マシンが使用するメモリ上の単位領域のデータを第2の情報処理装置にコピーし、また、前記単位領域に対応させて前記第1の情報処理装置が有するバッファ領域を割り当て、
    コピー後に前記第1の情報処理装置において前記単位領域のデータが更新される毎に、前記単位領域に対応する前記バッファ領域に更新履歴を保存し、
    前記バッファ領域に保存された前記更新履歴の量が閾値を超える場合、前記単位領域のデータを前記第2の情報処理装置に再度コピーし、再度コピーされた前記単位領域のデータに基づいて前記第2の情報処理装置で前記仮想マシンを稼働させ、
    前記更新履歴の量が前記閾値を超えない場合、前記更新履歴を前記第2の情報処理装置に送信し、更新前にコピーされた前記単位領域のデータと前記更新履歴とに基づいて前記第2の情報処理装置で前記仮想マシンを稼働させる、
    マイグレーション方法。
JP2016231186A 2016-11-29 2016-11-29 マイグレーションプログラム、情報処理装置およびマイグレーション方法 Active JP6882662B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016231186A JP6882662B2 (ja) 2016-11-29 2016-11-29 マイグレーションプログラム、情報処理装置およびマイグレーション方法
US15/786,653 US10621010B2 (en) 2016-11-29 2017-10-18 Information processing apparatus and migration method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016231186A JP6882662B2 (ja) 2016-11-29 2016-11-29 マイグレーションプログラム、情報処理装置およびマイグレーション方法

Publications (2)

Publication Number Publication Date
JP2018088134A true JP2018088134A (ja) 2018-06-07
JP6882662B2 JP6882662B2 (ja) 2021-06-02

Family

ID=62193302

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016231186A Active JP6882662B2 (ja) 2016-11-29 2016-11-29 マイグレーションプログラム、情報処理装置およびマイグレーション方法

Country Status (2)

Country Link
US (1) US10621010B2 (ja)
JP (1) JP6882662B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200031852A (ko) * 2018-09-17 2020-03-25 에스케이하이닉스 주식회사 메모리 시스템 내 펌웨어를 유지하는 방법 및 장치
JP2020115267A (ja) * 2019-01-17 2020-07-30 Necソリューションイノベータ株式会社 仮想マシン管理装置、仮想マシン管理方法、及びプログラム
JP2021536627A (ja) * 2018-09-13 2021-12-27 シスコ テクノロジー,インコーポレイテッド ライブステートフルコンテナを移行するためのシステムおよび方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884651B2 (en) * 2018-07-23 2021-01-05 EMC IP Holding Company LLC Storage system with multi-phase verification of synchronously replicated data
JP7125601B2 (ja) * 2018-07-23 2022-08-25 富士通株式会社 ライブマイグレーション制御プログラム及びライブマイグレーション制御方法
JP7197783B2 (ja) * 2019-01-11 2022-12-28 富士通株式会社 情報処理システム、管理装置および管理プログラム
US11144230B2 (en) 2019-02-18 2021-10-12 International Business Machines Corporation Data copy amount reduction in data replication
US11748130B2 (en) * 2019-06-28 2023-09-05 Intel Corporation Virtualization and multi-tenancy support in graphics processors
US11620233B1 (en) * 2019-09-30 2023-04-04 Amazon Technologies, Inc. Memory data migration hardware
US11599463B2 (en) 2020-03-25 2023-03-07 Ocient Holdings LLC Servicing queries during data ingress
US20220269521A1 (en) * 2021-02-25 2022-08-25 Red Hat, Inc. Memory page copying for virtual machine migration

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012221321A (ja) * 2011-04-11 2012-11-12 Nec Corp フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラム
WO2014010213A1 (ja) * 2012-07-11 2014-01-16 日本電気株式会社 マイグレーションシステム、マイグレーション方法及び制御プログラムを格納した非一時的なコンピュータ可読媒体
JP2014178981A (ja) * 2013-03-15 2014-09-25 Nec Corp フォールトトレラントサーバ
JP2014191751A (ja) * 2013-03-28 2014-10-06 Fujitsu Ltd ユーザ支援制御プログラム,ユーザ支援制御装置,ユーザ支援システム,及びユーザ支援方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003073203A2 (en) * 2002-02-21 2003-09-04 Precise Software Solutions, Inc. System and method for analyzing input/output activity on local attached storage
US7634507B2 (en) * 2006-08-30 2009-12-15 Inmage Systems, Inc. Ensuring data persistence and consistency in enterprise storage backup systems
JP5499688B2 (ja) * 2009-12-23 2014-05-21 富士通株式会社 計算機システム、情報処理装置、仮想計算機運用方法及びプログラム
US9110702B2 (en) * 2010-06-02 2015-08-18 Microsoft Technology Licensing, Llc Virtual machine migration techniques
JPWO2012063334A1 (ja) 2010-11-10 2014-05-12 株式会社日立製作所 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ
WO2013105217A1 (ja) * 2012-01-10 2013-07-18 富士通株式会社 仮想マシン管理プログラム、方法、及び装置
US9027024B2 (en) * 2012-05-09 2015-05-05 Rackspace Us, Inc. Market-based virtual machine allocation
US9304878B2 (en) * 2012-10-11 2016-04-05 Vmware, Inc. Providing multiple IO paths in a virtualized environment to support for high availability of virtual machines
US9055119B2 (en) * 2013-03-26 2015-06-09 Vmware, Inc. Method and system for VM-granular SSD/FLASH cache live migration
JP2014191752A (ja) * 2013-03-28 2014-10-06 Fujitsu Ltd マイグレーション処理プログラム,マイグレーション方法及びクラウドシステム
US9317326B2 (en) * 2013-11-27 2016-04-19 Vmware, Inc. Consistent migration of a group of virtual machines using source and destination group messaging
US9552217B2 (en) * 2014-06-28 2017-01-24 Vmware, Inc. Using active/active asynchronous replicated storage for live migration
US9898320B2 (en) * 2014-06-28 2018-02-20 Vmware, Inc. Using a delta query to seed live migration
US9672120B2 (en) * 2014-06-28 2017-06-06 Vmware, Inc. Maintaining consistency using reverse replication during live migration
WO2016013098A1 (ja) 2014-07-25 2016-01-28 株式会社日立製作所 物理計算機及び仮想計算機移行方法
EP3274822A4 (en) * 2015-03-27 2018-11-07 Intel Corporation Technologies for virtual machine migration
US10042720B2 (en) * 2016-02-22 2018-08-07 International Business Machines Corporation Live partition mobility with I/O migration

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012221321A (ja) * 2011-04-11 2012-11-12 Nec Corp フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラム
WO2014010213A1 (ja) * 2012-07-11 2014-01-16 日本電気株式会社 マイグレーションシステム、マイグレーション方法及び制御プログラムを格納した非一時的なコンピュータ可読媒体
JP2014178981A (ja) * 2013-03-15 2014-09-25 Nec Corp フォールトトレラントサーバ
JP2014191751A (ja) * 2013-03-28 2014-10-06 Fujitsu Ltd ユーザ支援制御プログラム,ユーザ支援制御装置,ユーザ支援システム,及びユーザ支援方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021536627A (ja) * 2018-09-13 2021-12-27 シスコ テクノロジー,インコーポレイテッド ライブステートフルコンテナを移行するためのシステムおよび方法
JP7335327B2 (ja) 2018-09-13 2023-08-29 シスコ テクノロジー,インコーポレイテッド ライブステートフルコンテナを移行するためのシステムおよび方法
KR20200031852A (ko) * 2018-09-17 2020-03-25 에스케이하이닉스 주식회사 메모리 시스템 내 펌웨어를 유지하는 방법 및 장치
KR102612842B1 (ko) 2018-09-17 2023-12-13 에스케이하이닉스 주식회사 메모리 시스템 내 펌웨어를 유지하는 방법 및 장치
JP2020115267A (ja) * 2019-01-17 2020-07-30 Necソリューションイノベータ株式会社 仮想マシン管理装置、仮想マシン管理方法、及びプログラム

Also Published As

Publication number Publication date
JP6882662B2 (ja) 2021-06-02
US20180150335A1 (en) 2018-05-31
US10621010B2 (en) 2020-04-14

Similar Documents

Publication Publication Date Title
JP6882662B2 (ja) マイグレーションプログラム、情報処理装置およびマイグレーション方法
CN110795206B (zh) 用于促进集群级缓存和内存空间的系统和方法
KR100384852B1 (ko) 메모리 억세스 인터럽트를 통해 발생되는 프로세서 리셋 방법
US7996609B2 (en) System and method of dynamic allocation of non-volatile memory
US9003149B2 (en) Transparent file system migration to a new physical location
US11392428B2 (en) Fork handling in application operations mapped to direct access persistent memory
JP5967215B2 (ja) 情報処理装置、プログラムおよび仮想マシン移動方法
US11960357B2 (en) Managing the migration of virtual machines in the presence of uncorrectable memory errors
US20160266923A1 (en) Information processing system and method for controlling information processing system
US9354907B1 (en) Optimized restore of virtual machine and virtual disk data
WO2014109007A1 (ja) ストレージ階層管理システム
JP6192660B2 (ja) ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置
TW201502781A (zh) 解決記憶體存取錯誤時重播記憶體交易
JP2008269600A (ja) 論理パーティションのマイグレーションを管理する方法、装置およびプログラム
US9684625B2 (en) Asynchronously prefetching sharable memory pages
US20150378770A1 (en) Virtual machine backup
CN104636182A (zh) 一种操作数据处理系统的方法、数据处理系统和处理器
JP2019159562A (ja) 情報処理装置、情報処理システム、及びプログラム
US8745340B2 (en) Reduction of communication and efficient failover processing in distributed shared memory-based application
KR20110052902A (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법
JP2017033375A (ja) 並列計算システム、マイグレーション方法、及びマイグレーションプログラム
US10437471B2 (en) Method and system for allocating and managing storage in a raid storage system
US10992751B1 (en) Selective storage of a dataset on a data storage device that is directly attached to a network switch
US11327841B2 (en) Identifying a fault domain for a delta component of a distributed data object
JP2023110180A (ja) ストレージ装置および制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190807

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190815

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190815

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210105

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210406

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210419

R150 Certificate of patent or registration of utility model

Ref document number: 6882662

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150