JP5534031B2 - データ移行プログラム、計算機およびデータ移行方法 - Google Patents

データ移行プログラム、計算機およびデータ移行方法 Download PDF

Info

Publication number
JP5534031B2
JP5534031B2 JP2012548578A JP2012548578A JP5534031B2 JP 5534031 B2 JP5534031 B2 JP 5534031B2 JP 2012548578 A JP2012548578 A JP 2012548578A JP 2012548578 A JP2012548578 A JP 2012548578A JP 5534031 B2 JP5534031 B2 JP 5534031B2
Authority
JP
Japan
Prior art keywords
data
computer
migration
memory
migration source
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.)
Expired - Fee Related
Application number
JP2012548578A
Other languages
English (en)
Other versions
JPWO2012081099A1 (ja
Inventor
実久 土肥
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
Publication of JPWO2012081099A1 publication Critical patent/JPWO2012081099A1/ja
Application granted granted Critical
Publication of JP5534031B2 publication Critical patent/JP5534031B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Systems (AREA)

Description

本発明は、データ移行を行うデータ移行プログラム、計算機およびデータ移行方法に関する。
ライブマイグレーションでは、ハードウェア上で動作中の仮想マシンを、ほぼ無停止で他のハードウェアに移動するため、ハードウェア上の仮想マシンが実行中のOS(Operating System)やアプリケーションを、非常に短い停止時間で他のハードウェアに移行することができる。このため、サービスを継続したままハードウェアを保守するといった目的で、ライブマイグレーションが用いられている。
また、関連する先行技術として、1台の物理計算機上で動作する仮想マシン間のメモリ共有を行うための技術がある(例えば、下記特許文献1参照。)。また、仮想化環境において、物理資源構成と仮想装置構成を動的に変更するための技術がある(例えば、下記特許文献2参照。)。
特開2010−33206号公報 特開2008−225546号公報
しかしながら、上述した従来技術では、ライブマイグレーションの際に、移行対象となる仮想マシンに割り当てられているメモリ内容を移行先のハードウェアに複写するため、ハードウェア間のデータの転送量の増大化を招くという問題がある。
本発明は、上述した従来技術による問題点を解消するため、計算機間で複写不要なデータの転送を抑止してデータの転送量を削減することができるデータ移行プログラム、計算機およびデータ移行方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、開示のデータ移行プログラム、計算機およびデータ移行方法は、移行元のメモリを構成するいずれかのメモリブロックに記憶されている移行元データのハッシュ値を移行元の計算機から受信し、移行先のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行先データのハッシュ値と、受信された前記移行元データのハッシュ値とを比較し、比較された比較結果を前記移行元の計算機に送信し、前記比較結果が送信された結果、前記移行先データのハッシュ値と不一致となったハッシュ値の算出元の前記移行元データを前記移行元の計算機から受信する。
また、上述した課題を解決し、目的を達成するため、開示のデータ移行プログラム、計算機およびデータ移行方法は、移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データのハッシュ値を移行先の計算機に送信し、送信された前記移行元データのハッシュ値と、移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値との比較結果を、前記移行先の計算機から受信し、受信された比較結果に基づいて、前記移行先のメモリに対する前記移行元データの複写の要否を判定し、複写が必要であると判定された場合、前記移行元データを前記移行先の計算機に送信する。
また、上述した課題を解決し、目的を達成するため、開示のデータ移行プログラム、計算機およびデータ移行方法は、移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値を移行元の計算機に送信し、前記移行先データごとのハッシュ値が送信された結果、前記移行先データごとのハッシュ値と不一致のハッシュ値の算出元の移行元データを、前記移行元の計算機から受信する。
また、上述した課題を解決し、目的を達成するため、開示のデータ移行プログラム、計算機およびデータ移行方法は、移行先のメモリを構成する各メモリブロックに記憶されている移行先データごとのハッシュ値を移行元の計算機から受信し、移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データのハッシュ値と、受信された前記移行先データごとのハッシュ値とを比較し、比較された比較結果に基づいて、前記移行先のメモリに対する前記移行元データの複写の要否を判定し、複写が必要であると判定された場合、前記移行元データを前記移行先の計算機に送信する。
また、上述した課題を解決し、目的を達成するため、開示のデータ移行プログラム、計算機およびデータ移行方法は、移行元のメモリを構成するメモリブロックごとに、当該メモリブロックに記憶されている移行元データの属性情報に基づいて、移行先のメモリに対する前記移行元データの複写の要否を判定し、複写が必要であると判定された場合、前記移行元データを移行先の計算機に送信する。
本データ移行プログラム、計算機およびデータ移行方法によれば、計算機間で複写不要なデータの転送を抑止してデータの転送量を削減することができるという効果を奏する。
実施の形態1にかかるデータ移行手法の一実施例を示す説明図である。 実施の形態2にかかるサーバのハードウェア構成の一例を示すブロック図である。 実施の形態2にかかるネットワークシステムの一実施例を示す説明図である。 メモリ管理テーブルの記憶内容の一例を示す説明図(その1)である。 実施の形態2にかかるサーバの機能的構成を示すブロック図である。 ハッシュテーブルの記憶内容の一例を示す説明図(その1)である。 ライブマイグレーションの一例を示す説明図である。 メモリ管理テーブルの記憶内容の一例を示す説明図(その2)である。 ハッシュテーブルの記憶内容の一例を示す説明図(その2)である。 移行元データおよび移行先データを記憶する共有ストレージの一例を示す説明図である。 実施の形態2にかかる移行元のサーバのデータ移行処理手順の一例を示すフローチャートである。 実施の形態2にかかる移行先のサーバのデータ移行処理手順の一例を示すフローチャート(その1)である。 実施の形態2にかかる移行先のサーバのデータ移行処理手順の一例を示すフローチャート(その2)である。 実施の形態2にかかる移行先のサーバのデータ移行処理手順の一例を示すフローチャート(その3)である。 メモリブロックテーブルの記憶内容の一例を示す説明図である。 実施の形態3にかかるサーバの機能的構成を示すブロック図である。 実施の形態3にかかるサーバのデータ移行処理手順の一例を示すフローチャートである。
以下に添付図面を参照して、この発明にかかるデータ移行プログラム、計算機およびデータ移行方法の好適な実施の形態を詳細に説明する。
(実施の形態1)
図1は、実施の形態1にかかるデータ移行手法の一実施例を示す説明図である。実施の形態1では、移行元のメモリを構成するメモリブロックごとに、メモリブロックに記憶されている移行元データの複写の要否を事前に判定して、複写不要な移行元データの転送を抑止する。
図1において、計算機101,102は、計算機間のデータ移行を行う機能を有するコンピュータである。ここで、計算機101は、移行元のメモリ110を備える移行元の計算機である。計算機102は、移行先のメモリ120を備える移行先の計算機である。
メモリ110は、所定のデータ単位で区切られて、メモリブロック110−1〜110−4に分割されている。メモリ110を区切るデータ単位は、任意に設定可能である。例えば、メモリ110は、メガバイト単位、ページ単位、ブロック単位で区切られる。1ページは、例えば、4〜64[KB(キロバイト)]である。1ブロックは、例えば、複数のページをひとまとめにしたものである。
図1の例では、メモリ110を構成するメモリブロック110−1〜110−4に、移行対象となるデータd1〜d4が記憶されている。ここでは、メモリブロック110−1〜110−4のうち、任意のメモリブロックを「メモリブロック110−i」と表記する(i=1,2,3,4)。また、メモリブロック110−iに記憶されているデータを「データdi」と表記する。
メモリ120は、所定のデータ単位で区切られて、メモリブロック120−1〜120−9に分割されている。メモリ120を区切るデータ単位は、メモリ110を区切るデータ単位と同一である。
図1の例では、メモリ120を構成するメモリブロック120−1〜120−9に、データD1〜D9が記憶されている。ここでは、メモリブロック120−1〜120−9のうち、任意のメモリブロックを「メモリブロック120−j」と表記する(j=1,2,…,9)。また、メモリブロック120−jに記憶されているデータを「データDj」と表記する。
以下、移行元のメモリ110のメモリブロック110−1〜110−4に記憶されているデータd1〜d4を、移行先のメモリ120に移行する場合を例に挙げて、実施の形態1にかかるデータ移行手法の一実施例について説明する。
(1)移行元の計算機101は、移行元のメモリ110を構成するメモリブロック110−1〜110−4の中から、任意のメモリブロック110−iを選択する。メモリブロック110−iの選択処理は、メモリブロック110−1〜110−4の中から選択されていない未選択のメモリブロックがなくなるまで繰り返し行われる。
(2)移行元の計算機101は、選択されたメモリブロック110−iに記憶されているデータdiのハッシュ値(以下、「ハッシュ値hi」と表記する)を、移行先の計算機102に送信する。
ここで、ハッシュ値とは、例えば、算出元となるデータを引数としてハッシュ関数に与えることで算出される固定長の乱数である。ハッシュ関数は、引数として与えられたデータから固定長の疑似乱数を生成する関数である。ハッシュ値の長さは、算出元のデータのビット長より短くなる任意の長さに設定される。
(3)移行先の計算機102は、データdiのハッシュ値hiを、移行元の計算機101から受信する。
(4)移行先の計算機102は、移行先のメモリ120を構成するメモリブロック120−jごとに、メモリブロック120−jに記憶されているデータDjのハッシュ値(以下、「ハッシュ値Hj」と表記する)と、データdiのハッシュ値hiとを比較する。なお、図面では、移行先のメモリ120の一部を抜粋して表示している。
ここで、ハッシュ値は、算出元のデータが異なれば、同じハッシュ値が算出される確率が非常に低いという特徴を有する。このため、2つのデータdi,Djのハッシュ値hi,Hjを比較することで、データdi,Djの同一性を判断することができる。
図1中、各メモリブロック110−i,120−jを表す□内に示す2ビットの数字は、各データdi,Djのハッシュ値hi,Hjを表している。例えば、メモリブロック110−1に記憶されているデータd1のハッシュ値は「12」である。また、メモリブロック120−1に記憶されているデータD1のハッシュ値は「56」である。
(5)移行先の計算機102は、データdiのハッシュ値hiとデータDjのハッシュ値Hjとの比較結果を、移行元の計算機101に送信する。比較結果は、例えば、データdiのハッシュ値hiが、全データD1〜D9のハッシュ値H1〜H9と一致しなかった、または、ハッシュ値H1〜H9のうち少なくともいずれかのハッシュ値Hjと一致したことを表す情報である。
(6)移行元の計算機101は、データdiのハッシュ値hiと、移行先のメモリ120を構成する各メモリブロック120−jに記憶されているデータDjごとのハッシュ値Hjとの比較結果を、移行先の計算機102から受信する。
(7)移行元の計算機101は、受信した比較結果に基づいて、移行先のメモリ120に対するデータdiの複写の要否を判定する。ここで、移行元のデータdiと移行先のデータDjが同一内容のデータであれば、移行先のメモリ120に対するデータdiの複写は不要となる。
そこで、移行元の計算機101が、データdiのハッシュ値hiが、データD1〜D9のハッシュ値H1〜H9のうち少なくともいずれかのハッシュ値Hjと一致した場合、移行先のメモリ120に対するデータdiの複写が不要であると判定する。一方、データdiのハッシュ値hiが、全データD1〜D9のハッシュ値H1〜H9と一致しなかった場合、移行元の計算機101が、移行先のメモリ120に対するデータdiの複写が必要であると判定する。
図1の例では、移行元のデータd1のハッシュ値「12」と移行先のデータD2のハッシュ値「12」が一致する。このため、移行元の計算機101が、移行先のメモリ120に対するデータd1の複写が不要であると判定する。また、移行元のデータd4のハッシュ値「77」と移行先のデータD7のハッシュ値「77」が一致する。このため、移行元の計算機101が、移行先のメモリ120に対するデータd4の複写が不要であると判定する。一方、移行元のデータd2,d3は、移行先の全データD1〜D9とハッシュ値が一致しない。このため、移行元の計算機101が、移行先のメモリ120に対するデータd2,d3の複写が必要であると判定する。
(8)移行元の計算機101は、データdiの複写が必要であると判定された場合、メモリブロック110−iに記憶されているデータdiを、移行先の計算機102に送信する。
図1の例では、移行元のデータd2,d3の複写が必要であると判定され、移行元のデータd1,d4の複写が不要であると判定されている。図1中、「R」は複写が必要であると判定された判定結果を表し、「NR」は複写が不要であると判定された判定結果を表している。
このため、移行元の計算機101は、移行元のデータd1〜d4のうちデータd2,d3を、移行先の計算機102に送信する。この結果、移行先の計算機102において、移行元のデータd2,d3が、移行先のメモリ120の空き領域に書き込まれる。一方、移行先の計算機101から送信されなかった移行元のデータd1,d4は、移行先の計算機102において、例えば、データd1,d4とハッシュ値が同一のデータD2,D7を、移行先のメモリ120の空き領域に複写することで生成される。
以上説明した実施の形態1にかかるデータ移行手法によれば、移行元のメモリ110を構成するメモリブロック110−iごとに、メモリブロック110−iに記憶されているデータdiの複写の要否を事前に判定することができる。これにより、移行対象となるデータd1〜d4のうち、複写不要なデータd1,d4の転送を抑止して、計算機101,102間のデータの転送量を削減することができる。
(実施の形態2)
実施の形態2では、実施の形態1で説明した計算機101,102をサーバSV(例えば、後述するサーバSV1,SV2)に適用した場合について説明する。なお、実施の形態1で説明した内容と同一内容については説明を省略する。
(サーバSVのハードウェア構成)
図2は、実施の形態2にかかるサーバのハードウェア構成の一例を示すブロック図である。図2において、サーバSVは、CPU(Central Processing Unit)201と、メモリ202と、ネットワークI/F(Interface)203と、入出力装置204と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
ここで、CPU201は、サーバSVの全体の制御を司る。メモリ202は、データを記憶する記憶装置である。メモリ202は、例えば、ROM(Read‐Only Memory)やRAM(Random Access Memory)である。
ネットワークI/F203は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク205に接続され、ネットワーク205を介して他のコンピュータに接続される。ネットワークI/F203は、ネットワーク205と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F203には、例えば、モデムやLANアダプタなどを採用することができる。
入出力装置204は、データの入出力を行う。入出力装置204としては、例えば、文書、画像、機能情報などのデータを表示する表示装置や、文字、数字、各種指示などの入力のためのキーボードなどがある。なお、サーバSVは、磁気ディスクや光ディスクなどの記憶装置を備える構成であってもよい。
つぎに、実施の形態2にかかるサーバSVを含むネットワークシステム300について説明する。
(ネットワークシステム300の一実施例)
図3は、実施の形態2にかかるネットワークシステムの一実施例を示す説明図である。図3において、ネットワークシステム300は、サーバSV1と、サーバSV2と、を含む構成である。ネットワークシステム300において、サーバSV1およびサーバSV2は、ネットワーク205を介して相互に通信可能に接続されている。
ここで、サーバSV1,SV2は、VMホストHT1,HT2を備え、ハードウェア資源を分割して複数の実行環境を構築可能なコンピュータである。VMホストHT1,HT2は、サーバSV1,SV2のハードウェア資源(例えば、図2に示したCPU201、メモリ202、ネットワークI/F203など)を仮想化して、複数の異なるOSを実行できるように制御するソフトウェアである。具体的には、例えば、VMホストH1,HT2は、サーバSV1,SV2のハードウェア資源を分割して構築される実行環境で動作する仮想マシンVMによってOSを稼働させる。
仮想マシンVMは、サーバSV1,SV2のハードウェア資源を分割して構築される実行環境で動作する仮想的なコンピュータである。仮想マシンVMの実体は、具体的には、例えば、プログラムやOSなどのソフトウェア、ソフトウェアに与えられる変数、およびソフトウェアを実行させるためのハードウェア資源を指定する情報を含むものである。
図3の例では、サーバSV1のハードウェア資源を分割して構築された実行環境で3台の仮想マシンVM1,VM2,VM3が動作している。VMホストHT1は、仮想マシンVM1〜VM3によって複数の異なるOSを稼働させる。また、サーバSV2のハードウェア資源を分割して構築された実行環境で2台の仮想マシンVM4,VM5が動作している。VMホストHT2は、仮想マシンVM4,VM5によって複数の異なるOSを稼働させる。
仮想マシンVMには、各サーバSV1,SV2の物理メモリ(以下、「物理メモリPM1,PM2」という)から分割された論理的なメモリが割り当てられている。サーバSV1,SV2の物理メモリPM1,PM2は、例えば、図2に示したメモリ202である。仮想マシンVMのメモリは、ページ単位で区切られて、複数のメモリブロックに分割されている。ページは、VMホストHT1,HT2が仮想マシンVMのメモリを管理するためのデータ単位である。
仮想マシンVMのメモリを構成する各メモリブロックは、物理メモリPM1,PM2を区切って分割されたいずれかのメモリブロックに対応している。各メモリブロックに記憶されているデータは、例えば、OS、アプリケーションなどのプログラムや、映像、音声などのコンテンツである。
ネットワークシステム300では、サーバSV間の負荷分散やサーバSVの保守を目的として、サーバSV上で動作中の仮想マシンVMを、他のサーバSVに移行するライブマイグレーションが行われる。ライブマイグレーションを行う場合、移行対象となる仮想マシンVMに割り当てられているメモリの内容を移行先のサーバSVに複写する。
ここで、仮想マシンVMに割り当てられているメモリの全内容を移行先のサーバSVに複写すると、サーバSV間のデータの転送量の増大化を招いてしまう。また、移行先のサーバSVのメモリ202にデータを複写する場合、移行先のサーバSVのバス200を介して、データの複写が行われる。このため、ネットワーク205を介して接続されているストレージ装置などにデータを複写する場合に比べて転送コストが高くなる。
そこで、実施の形態2では、仮想マシンVMのメモリを構成するメモリブロックごとに、メモリブロックに記憶されているデータの、移行先のサーバSVに対する複写の要否を事前に判定して、データの転送量を削減する。
以下の説明では、サーバSV上で動作する任意の仮想マシンVMを「仮想マシンVMk」と表記し、仮想マシンVMkに割り当てられているメモリを「メモリMk」と表記する。また、メモリMkを構成するメモリブロックを「メモリブロックb1〜bn」と表記し、メモリブロックb1〜bnのうち任意のメモリブロックを「メモリブロックbi」と表記する(i=1,2,…,n)。また、メモリブロックbiに記憶されているデータを「移行元データdi」と表記する。
また、移行先のサーバSVの物理メモリPMを構成するメモリブロックを「メモリブロックB1〜Bm」と表記し、メモリブロックB1〜Bmのうち任意のメモリブロックを「メモリブロックBj」と表記する(j=1,2,…,m)。また、メモリブロックBjに記憶されているデータを「移行先データDj」と表記する。
ここで、各サーバSVが用いるメモリ管理テーブルについて説明する。メモリ管理テーブルは、各サーバSVが自サーバ上で動作中の仮想マシンVMkに割り当てられているメモリMkを管理するための情報である。ここでは、サーバSV1上で動作中の仮想マシンVM3に割り当てられているメモリM3を管理するためのメモリ管理テーブル400を例に挙げて説明する。メモリ管理テーブル400は、例えば、図2に示したメモリ202によって実現される。
(メモリ管理テーブル400の記憶内容)
図4は、メモリ管理テーブルの記憶内容の一例を示す説明図(その1)である。図4において、メモリ管理テーブル400は、マシンID、メモリID、ブロックIDおよびハッシュ値のフィールドを有し、各フィールドに情報を設定することで、仮想マシンVM3のメモリ管理データを記憶している。
ここで、マシンIDは、仮想マシンVMkの識別子である。メモリIDは、仮想マシンVMkに割り当てられているメモリMkの識別子である。ブロックIDは、仮想マシンVMkのメモリMkを構成するメモリブロックbiの識別子である。ハッシュ値は、メモリブロックbiに記憶されている移行元データdiのハッシュ値hiである。
メモリ管理テーブル400によれば、仮想マシンVM3に割り当てられているメモリM3を構成するメモリブロックb1〜b9を特定することができる。また、メモリ管理テーブル400によれば、メモリブロックb1〜b9に記憶されている移行元データd1〜d9のハッシュ値h1〜h9を特定することができる。
つぎに、実施の形態2にかかるサーバSV(サーバSV1,SV2)の機能的構成について説明する。
(サーバSVの機能的構成)
図5は、実施の形態2にかかるサーバの機能的構成を示すブロック図である。図5において、サーバSVは、受信部501と、選択部502と、送信部503と、判定部504と、比較部505と、書込部506と、を含む構成である。各機能部は、具体的には、例えば、図2に示したメモリ202に記憶されたプログラムをCPU201に実行させることにより、または、ネットワークI/F203により、その機能を実現する。より具体的には、例えば、各機能部は、図3に示したVMホストHT1,HT2によって実現される。なお、各機能部の処理結果は、メモリ202に記憶される。
ライブマイグレーションにおいて、サーバSVは、移行対象となる仮想マシンVMkを稼働させている移行元のサーバSVとなる場合と、移行対象となる仮想マシンVMkの移行先のサーバSVとなる場合がある。ここでは、まず、サーバSVが移行元となる場合の各機能部の処理内容について説明する。
・移行元のサーバSVの機能的構成
受信部501は、仮想マシンVMkの移行指示を受信する。ここで、仮想マシンVMkの移行指示とは、自サーバで動作中の仮想マシンVMkを他サーバに移行するように指示するものである。仮想マシンVMkの移行指示には、例えば、仮想マシンVMkのマシンIDと、移行先のサーバSVを識別するサーバIDが含まれている。
具体的には、例えば、サーバSV1のVMホストHT1が、ネットワーク205を介して、仮想マシンVM3をサーバSV2に移行するように指示する移行指示を外部のコンピュータから受信する。また、VMホストHT1が、図2に示した入出力装置204を用いたユーザの操作入力により、仮想マシンVM3の移行指示を受け付けてもよい。
選択部502は、仮想マシンVMkの移行指示が受信された場合、仮想マシンVMkに割り当てられているメモリMkを構成するメモリブロックb1〜bnの中から、任意のメモリブロックbiを選択する。ここで、仮想マシンVM3をサーバSV2に移行するように指示する移行指示が受信された場合を例に挙げて説明する。
この場合、VMホストHT1が、例えば、図4に示したメモリ管理テーブル400を参照して、仮想マシンVM3に割り当てられているメモリM3のメモリブロックb1〜b9の中から、任意のメモリブロックbiを選択する。選択部502による選択処理は、例えば、メモリブロックb1〜bnの中から選択されていない未選択のメモリブロックbiがなくなるまで繰り返し実行される。
送信部503は、選択されたメモリブロックbiに記憶されている移行元データdiのハッシュ値hiを移行先のサーバSVに送信する。ここで、移行元データdiのハッシュ値hiは、例えば、移行元のサーバSV1のVMホストHT1により、移行元データdiを引数としてハッシュ関数に与えることで算出される。
移行元データdiのハッシュ値hiの算出タイミングは、例えば、上記選択部502によってメモリブロックbiが選択された後でもよく、また、メモリブロックbiへの移行元データdiの記録時または更新時でもよい。算出された移行元データdiのハッシュ値hiは、例えば、メモリブロックbiのブロックIDと関連付けてメモリ管理テーブル400に記憶される。
具体的には、例えば、VMホストHT1が、メモリ管理テーブル400を参照して、選択されたメモリブロックbiに記憶されている移行元データdiのハッシュ値hiを特定する。そして、VMホストHT1が、ネットワーク205を介して、特定された移行元データdiのハッシュ値hiを、メモリブロックbiのブロックIDとともに移行先のサーバSV2のVMホストHT2に送信する。
また、受信部501は、移行元データdiのハッシュ値hiと、移行先の物理メモリPMを構成する各メモリブロック120−jに記憶されている移行先データDjごとのハッシュ値Hjとの比較結果を、移行先のサーバSVから受信する。
ここで、比較結果は、例えば、移行元データdiのハッシュ値hiが、全移行先データD1〜Dmのハッシュ値H1〜Hmと一致しなかった、または、ハッシュ値H1〜Hmのうち少なくともいずれかのハッシュ値Hjと一致したことを表す情報である。また、比較結果は、移行元データdiのハッシュ値hiと各移行先データDjのハッシュ値Hjとの各々の比較結果を表すものでもよい。
具体的には、例えば、移行元データdiのハッシュ値hiが送信された結果、VMホストHT1が、ネットワーク205を介して、移行元データdiのハッシュ値hiと移行先データDjごとのハッシュ値Hjとの比較結果を、移行先のサーバSV2のVMホストHT2から受信する。
判定部504は、比較された比較結果に基づいて、移行先のサーバSVの物理メモリPMに対する移行元データdiの複写の要否を判定する。具体的には、例えば、VMホストHT1が、移行元データdiのハッシュ値hiが、移行先データD1〜Dmのハッシュ値H1〜Hmのうち少なくともいずれかのハッシュ値Hjと一致した場合、移行元データdiの複写が不要であると判定する。一方、移行元データdiのハッシュ値hiが、全移行先データD1〜Dmのハッシュ値H1〜Hmと一致しなかった場合、VMホストHT1が、移行元データdiの複写が必要であると判定する。
また、送信部503は、判定された判定結果に基づいて、移行元データdiを移行先のサーバSVに送信する。具体的には、例えば、移行元データdiの複写が必要であると判定された場合、VMホストHT1が、ネットワーク205を介して、移行元データdiの複写指示をVMホストHT2に送信する。複写指示には、例えば、メモリブロックbiのブロックIDと、移行元データdiが含まれている。一方、移行元データdiの複写が不要であると判定された場合、VMホストHT1は、移行元データdiを移行先のサーバSV2に送信しない。
つぎに、サーバSVが移行先となる場合の各機能部の処理内容について説明する。
・移行先のサーバSVの機能的構成
受信部501は、移行元のサーバSVから、移行元のメモリMkを構成するメモリブロックbiごとに、メモリブロックbiに記憶されている移行元データdiのハッシュ値hiを受信する。具体的には、例えば、サーバSV2のVMホストHT2が、ネットワーク205を介して、移行元データdiのハッシュ値hiをサーバSV1のVMホストHT1から受信する。
比較部505は、移行先の物理メモリPMを構成するメモリブロックBjごとに、メモリブロックBjに記憶されている移行先データDjのハッシュ値Hjと、受信された移行元データdiのハッシュ値hiとを比較する。ここで、移行先データDjのハッシュ値Hjは、例えば、移行先のサーバSV2のVMホストHT2により、移行先データDjを引数としてハッシュ関数に与えることで算出される。
ただし、移行元データdiのハッシュ値hiおよび移行先データDjのハッシュ値Hjは、同一のアルゴリズム(例えば、同一のハッシュ関数)を用いて算出される。また、移行先データDjのハッシュ値Hjの算出タイミングは、例えば、上記比較部505による比較処理の実行時でもよく、また、メモリブロックBjへの移行先データDjの記録時または更新時でもよい。
算出された移行先データDjのハッシュ値Hjは、例えば、図6に示すハッシュテーブル600に記憶される。ここで、ハッシュテーブル600の具体例について説明する。なお、ハッシュテーブル600は、例えば、メモリ202によって実現される。
図6は、ハッシュテーブルの記憶内容の一例を示す説明図(その1)である。図6において、ハッシュテーブル600は、移行先のサーバSV2の物理メモリPM2を構成するメモリブロックBjごとに、メモリブロックBjに記憶されている移行先データDjのハッシュ値Hjを記憶している。
具体的には、例えば、VMホストHT2は、ハッシュテーブル600を参照して、メモリブロックBjに記憶されている移行先データDjのハッシュ値Hjと、受信された移行元データdiのハッシュ値hiとを比較する。
図5の説明に戻り、送信部503は、比較された比較結果を移行元のサーバSVに送信する。具体的には、例えば、VMホストHT2が、ネットワーク205を介して、移行元データdiの判定結果を移行元のサーバSV1のVMホストHT1に送信する。
また、受信部501は、比較結果が送信された結果、移行元のサーバSVから移行元データdiを受信する。具体的には、例えば、VMホストHT2が、全移行先データD1〜Dmのハッシュ値H1〜Hmと不一致となったハッシュ値hiの算出元の移行元データdiの複写指示をVMホストHT1から受信する。
書込部506は、受信された移行元データdiを移行先の物理メモリPMに書き込む。具体的には、例えば、移行元データdiの複写指示が受信された場合、VMホストHT2が、複写指示に含まれるメモリブロックbiの移行元データdiを、移行先の物理メモリPMの空き領域に書き込む。
この結果、移行先のサーバSV2において、移行元データdiが移行先の物理メモリPMの空き領域に複写されて、仮想マシンVMkのメモリブロックbiが生成される。
また、書込部506は、比較された比較結果に基づいて、移行元データdiのハッシュ値hiと一致したハッシュ値Hjの算出元の移行先データDjを、移行先の物理メモリPMに書き込む。具体的には、例えば、VMホストHT2が、移行元データdiのハッシュ値hiと一致したハッシュ値Hjの算出元の移行先データDjをメモリブロックBjから読み出して、移行先の物理メモリPMの空き領域に書き込む。
この結果、移行先のサーバSV2において、移行元データdiのハッシュ値hiと一致したハッシュ値Hjの算出元の移行先データDjが移行先の物理メモリPMの空き領域に複写されて、仮想マシンVMkのメモリブロックbiが生成される。
上述した説明では、移行元データdiのハッシュ値hiと移行先データDjのハッシュ値Hjとの比較処理を、移行先のサーバSVが行うことにしたが、これに限らない。例えば、移行元のVMホストHT1が、移行先のVMホストHT2に対して、移行先データDjのハッシュ値Hjの送信要求を行って、移行先データDjのハッシュ値Hj(例えば、ハッシュテーブル600の記憶内容)をVMホストHT2から受信する。
そして、移行元のVMホストHT1が、移行元データdiのハッシュ値hiと移行先データDjのハッシュ値Hjとを比較することにしてもよい。この場合、移行元のVMホストHT1が、移行元データdiのハッシュ値hiと移行先データDjのハッシュ値Hjとを比較した比較結果に基づいて、移行先の物理メモリPM2に対する移行元データdiの複写の要否を判定する。
ただし、移行元データdiの複写が不要である場合、移行先のVMホストHT2は、移行元データdiとハッシュ値が一致する移行先データDjのメモリブロックBjのブロックIDがわからない。このため、VMホストHT1は、移行元データdiのメモリブロックbiのブロックIDとともに、移行元データdiのハッシュ値hiと一致したハッシュ値Hjの算出元の移行先データDjのメモリブロックBjのブロックIDを移行先のVMホストHT2に送信する。
この結果、移行先のサーバSV2において、移行元データdiのハッシュ値hiと一致したハッシュ値Hjの算出元の移行先データDjが移行先の物理メモリPMの空き領域に複写されて、仮想マシンVMkのメモリブロックbiが生成される。
なお、仮想マシンVMkが実行中のプログラムのコンテキストの切り替えは、例えば、仮想マシンVMkの移行指示があった直後に行われてもよく、また、移行先の物理メモリPMに仮想マシンVMkのメモリブロックb1〜bnが生成された後に行われてもよい。
コンテキストは、仮想マシンVMkが実行中のプログラムに関する状態情報(例えば、CPU201のレジスタの値など)である。コンテキストの切り替えは、具体的には、例えば、移行元のVMホストHT1が、仮想マシンMkに割り当てられているCPU201のレジスタの値を、移行先のサーバSV2のCPU201に複写することで行われる。
ここで、サーバSV1上で動作中の仮想マシンVM3を、サーバSV2に移行する場合を例に挙げて、ライブマイグレーションの一例について説明する。
図7は、ライブマイグレーションの一例を示す説明図である。図7において、仮想マシンVM3のメモリM3を構成するメモリブロックb1〜b9の移行元データd1〜d9のうち、移行元データd1,d6,d8の複写が必要であると判定され、移行元データd2〜d5,d7,d9の複写が不要であると判定されている。
この場合、VMホストHT1が、複写が必要であると判定された移行元データd1,d6,d8の複写指示を移行先のVMホストHT2に送信する。そして、VMホストHT2が、移行元データd1,d6,d8を物理メモリPM2の空き領域に書き込む。これにより、移行元データd1,d6,d8が物理メモリPM2の空き領域に複写されて、仮想マシンVM3のメモリブロックb1,b6,b8が生成される。
ここで、移行先データD2,D4,D8,D10,D14,D16は、複写が不要であると判定された移行元データd2〜d5,d7,d9とハッシュ値が一致する移行先データDjである。この場合、VMホストHT2が、移行先データD2,D4,D8,D10,D14,D16を、メモリブロックB2,B4,B8,B10,B14,B16から読み出して、物理メモリPM2の空き領域に書き込む。これにより、移行先データD2,D4,D8,D10,D14,D16が物理メモリPM2の空き領域に複写されて、仮想マシンVM3のメモリブロックb2〜b5,b7,b9が生成される。
この結果、移行先のサーバSV2の物理メモリPM2に、仮想マシンVM3のメモリブロックb1〜b9が生成されて、仮想マシンVM3の移行が完了する。このように、移行元データdiの複写の要否を事前に判定して、複写不要なデータdiの転送を抑止することで、サーバ間のデータの転送量を削減することができる。
ここで、移行元データdiと移行先データDjは、データ内容が異なる場合であっても、ハッシュ値hiとハッシュ値Hjが一致(衝突)する可能性がある。このため、ハッシュ値の一致判定のみで移行元データdiと移行先データDjの同一性の判定を行うと、本来ならば複写の必要がある移行元データdiが移行先のサーバSVに転送されない場合がある。
この場合、移行先のサーバSVにおいて、移行元データdiとはデータ内容が異なる移行先データDjが複写されて仮想マシンVMkのメモリブロックbiが生成される不具合が発生してしまう。そこで、以下に説明する判定手法1〜4により、移行元データdiと移行先データDjの同一性の判定をさらに行うことにしてもよい。
なお、以下の説明では、特に指定する場合を除いて、移行先のサーバSVにおいて、比較部505による比較処理を行う場合を例に挙げて説明する。
(判定手法1)
まず、異なるアルゴリズムを用いて算出された複数のハッシュ値により、移行元データdiと移行先データDjの同一性の判定を行う判定手法1について説明する。ここでは、互いに異なる第1および第2のハッシュ関数を用いて、移行元データdiおよび移行先データDjの複数の異なるハッシュ値を算出する。
以下の説明では、第1のハッシュ関数に移行元データdiを与えることで算出されるハッシュ値を「第1のハッシュ値h1i」と表記し、第1のハッシュ関数に移行先データDjを与えることで算出されるハッシュ値を「第1のハッシュ値H1j」と表記する。また、第2のハッシュ関数に移行元データdiを与えることで算出されるハッシュ値を「第2のハッシュ値h2i」と表記し、第2のハッシュ関数に移行先データDjを与えることで算出されるハッシュ値を「第2のハッシュ値H2j」と表記する。
上記比較部505は、複数の異なるハッシュ関数に含まれるハッシュ関数ごとに、該ハッシュ関数を用いて算出された、移行先データDjのハッシュ値(例えば、第1および第2のハッシュ値H1j,H2j)と、移行元データdiのハッシュ値(例えば、第1および第2のハッシュ値h1i,h2i)とを比較する。
具体的には、例えば、上記比較部505が、メモリブロックBjごとに、メモリブロックBjの移行先データDjの第1のハッシュ値H1jと、メモリブロックbiの移行元データdiの第1のハッシュ値h1iとを比較する。また、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、上記比較部505が、移行先データDjの第2のハッシュ値H2jと移行元データdiの第2のハッシュ値h2iとを比較する。
そして、上記判定部504は、比較された比較結果に基づいて、移行先のサーバSVの物理メモリPMに対するメモリブロックbiの移行元データdiの複写の要否を判定する。以下、判定手法1に関する具体的な処理内容について説明する。
まず、移行元データdiの第1のハッシュ値h1iおよび第2のハッシュ値h2iを記憶するメモリ管理テーブル800について説明する。メモリ管理テーブル800は、例えば、移行元のサーバSVのメモリ202によって実現される。
図8は、メモリ管理テーブルの記憶内容の一例を示す説明図(その2)である。図8において、メモリ管理テーブル800は、マシンID、メモリID、ブロックID、第1のハッシュ値および第2のハッシュ値のフィールドを有し、各フィールドに情報を設定することで、仮想マシンVM3のメモリ管理データを記憶している。
第1のハッシュ値は、メモリブロックbiに記憶されている移行元データdiを第1のハッシュ関数に与えることで算出される第1のハッシュ値h1iである。第2のハッシュ値は、メモリブロックbiに記憶されている移行元データdiを第2のハッシュ関数に与えることで算出される第2のハッシュ値h2iである。
メモリ管理テーブル800によれば、メモリブロックb1〜b9に記憶されている移行元データd1〜d9の第1のハッシュ値h11〜h19および第2のハッシュ値h21〜h29を特定することができる。
具体的には、例えば、まず、移行元のVMホストHT1が、メモリ管理テーブル800を参照して、移行元データdiの第1および第2のハッシュ値h1i,h2iを特定する。そして、VMホストHT1が、特定された移行元データdiの第1および第2のハッシュ値h1i,h2iを移行先のVMホストHT2に送信する。
つぎに、移行先のVMホストHT2が、メモリブロックBjごとに、メモリブロックBjの移行先データDjの第1のハッシュ値H1jと、移行元データdiの第1のハッシュ値h1iとを比較する。ここで、移行先データDjの第1のハッシュ値H1jおよび第2のハッシュ値H2jを記憶するハッシュテーブル900について説明する。ハッシュテーブル900は、例えば、移行先のサーバSVのメモリ202によって実現される。
図9は、ハッシュテーブルの記憶内容の一例を示す説明図(その2)である。図9において、ハッシュテーブル900は、移行先のサーバSV2の物理メモリPM2を構成するメモリブロックBjごとに、メモリブロックBjに記憶されている移行先データDjの第1のハッシュ値H1jおよび第2のハッシュ値H2jを記憶している。
移行先のVMホストHT2は、例えば、ハッシュテーブル900を参照して、メモリブロックBjごとに、メモリブロックBjの移行先データDjの第1のハッシュ値H1jと、移行元データdiの第1のハッシュ値h1iとを比較する。ここで、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、さらに、VMホストHT2が、ハッシュテーブル900を参照して、移行先データDjの第2のハッシュ値H2jと、移行元データdiの第2のハッシュ値h2iとを比較する。そして、VMホストHT2は、比較された比較結果をVMホストHT1に送信する。
このあと、VMホストHT1は、受信された比較結果に基づいて、移行先の物理メモリPM2に対するメモリブロックbiの移行元データdiの複写の要否を判定する。具体的には、例えば、第2のハッシュ値H2jと第2のハッシュ値h2iとが一致する場合、VMホストHT1が、移行元データdiの複写が不要であると判定する。一方、第1のハッシュ値H1jと第1のハッシュ値h1iとが不一致の場合、または、第2のハッシュ値H2jと第2のハッシュ値h2iとが不一致の場合、VMホストHT1が、移行元データdiの複写が必要であると判定する。
この結果、移行先のVMホストHT2は、移行先データDjの第1および第2のハッシュ値H1j,H2jのうち少なくともいずれかのハッシュ値と不一致となったハッシュ値の算出元の移行元データdiを、移行元のVMホストHT1から受信することになる。
このように、複数の異なるハッシュ値により移行元データdiと移行先データDjの同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
なお、移行元のサーバSVにおいて、比較部505による比較処理を行う場合、移行元のサーバSVからの送信要求に応じて、移行先のサーバSVが、移行先データDjの第1および第2のハッシュ値H1j,H2jを移行元のサーバSVに送信することになる。
(判定手法2)
つぎに、ハッシュ値(例えば、上述した第1のハッシュ値)が一致する移行元データdiと移行先データDjの部分データの一致判定を行うことにより、移行元データdiと移行先データDjの同一性の判定を行う判定手法2について説明する。
上記比較部505は、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、移行先データDjから所定の抽出ルールに基づいて抽出された部分データと、移行元データdiから該抽出ルールに基づいて抽出された部分データとを比較する。以下、移行元データdiから抽出された部分データを「部分データpi」と表記する。また、移行先データDjから抽出された部分データを「部分データPj」と表記する。
ここで、移行元データdiの部分データpiは、例えば、移行元のサーバSV1のVMホストHT1により、所定の抽出ルールに基づいて移行元データdiから抽出される。抽出ルールとしては、例えば、移行元データdiの先頭または最後尾から所定ビット数のデータを抽出するルールが設定される。
また、移行先データDjの部分データPjは、例えば、移行先のサーバSV2のVMホストHT2により、所定の抽出ルールに基づいて移行先データDjから抽出される。部分データpi,Pjは、同一の抽出ルールに基づいて抽出される。また、各部分データpi,Pjの抽出タイミングは、例えば、移行元データdi、移行先データDjの記録時または更新時であってもよい。
そして、上記判定部504は、比較された比較結果に基づいて、移行先のサーバSVの物理メモリPMに対するメモリブロックbiの移行元データdiの複写の要否を判定する。以下、判定手法2に関する具体的な処理内容について説明する。
具体的には、例えば、移行先のVMホストHT2が、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、移行先データDjの部分データPjと、移行元データdiの部分データpiとを比較する。移行元データdiの部分データpiは、例えば、移行先のVMホストHT2からの送信要求に応じて、移行元のVMホストHT1からVMホストHT2に送信される。そして、VMホストHT2は、比較された比較結果をVMホストHT1に送信する。
このあと、VMホストHT1は、受信された比較結果に基づいて、移行先の物理メモリPM2に対するメモリブロックbiの移行元データdiの複写の要否を判定する。具体的には、例えば、部分データPjと部分データpiとが一致する場合、VMホストHT1が、移行元データdiの複写が不要であると判定する。一方、部分データPjと部分データpiとが不一致の場合、VMホストHT1が、移行元データdiの複写が必要であると判定する。
この結果、移行先のVMホストHT2は、移行先データDjの部分データPjと不一致となった部分データpiの抽出元の移行元データdiを、移行元のVMホストHT1から受信することになる。
このように、移行元データdiの部分データpiと移行先データDjの部分データPjの一致判定により同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
なお、移行元のサーバSVにおいて、比較部505による比較処理を行う場合、移行元のサーバSVからの送信要求に応じて、移行先のサーバSVが、移行先データDjの部分データPjを移行元のサーバSVに送信することになる。
また、サーバSV間の双方向の通信路の通信品質に基づいて、移行元データdiの部分データpiと移行先データDjの部分データPjとの比較処理を行う実行主体を決めることにしてもよい。
具体的には、例えば、上記比較部505は、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、サーバSV間の双方向の通信路のうち、通信品質の高い通信路を選択する。通信品質としては、例えば、データの転送レートやエラーレートを用いることができる。転送レートは、単位時間当たりに転送されるデータ量(例えば、ビット毎秒)である。
エラーレートは、データの送受信を行う際に、受信データの中に送信データと異なるビットが含まれる確率である。なお、転送レートおよびエラーレートは、例えば、予め計測されてメモリ202に記憶されていてもよく、また、通信路の選択時にその都度計測されることにしてもよい。
より具体的には、例えば、VMホストHT2が、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、サーバSV1,SV2間の双方向の通信路のうち、通信品質の高い通信路を選択する。
ここで、サーバSV1からサーバSV2の方向の通信路が選択された場合、VMホストHT2が、移行元データdiの部分データpiの送信要求を移行元のVMホストHT1に送信する。この結果、VMホストHT2が、移行元データdiの部分データpiをVMホストHT1から受信して、移行元データdiの部分データpiと移行先データDjの部分データPjとの比較処理を行う。
一方、サーバSV2からサーバSV1の方向の通信路が選択された場合、VMホストHT2が、移行先データDjの部分データPjを、移行元のVMホストHT1に送信する。この結果、移行元のVMホストHT1が、移行元データdiの部分データpiと移行先データDjの部分データPjとの比較処理を行う。
このように、サーバSV1とサーバSV2との間の双方向の通信路のうち通信品質の高い通信路を選択して、部分データpiと部分データPjの比較処理を行う実行主体を決めることにより、迅速かつ効率的に該比較処理を行うことができる。
(判定手法3)
つぎに、ハッシュ値(例えば、上述した第1のハッシュ値)が一致する移行元データdiと移行先データDjの一致判定を行うことにより、移行元データdiと移行先データDjの同一性の判定を行う判定手法3について説明する。
上記比較部505は、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、サーバSV間の双方向の通信路のうち、通信品質の高い通信路を選択する。具体的には、例えば、VMホストHT2が、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、サーバSV1,SV2間の双方向の通信路のうち、通信品質の高い通信路を選択する。
ここで、サーバSV2からサーバSV1の方向の通信路が選択された場合、VMホストHT2が、移行先データDjを移行元のVMホストHT1に送信する。このあと、移行元のVMホストHT1が、移行元データdiと移行先データDjとを比較する。そして、VMホストHT1は、比較された比較結果に基づいて、移行先の物理メモリPM2に対するメモリブロックbiの移行元データdiの複写の要否を判定する。
具体的には、例えば、移行元データdiと移行先データDjとが一致する場合、VMホストHT1が、移行元データdiの複写が不要であると判定する。一方、移行元データdiと移行先データDjとが不一致の場合、VMホストHT1が、移行元データdiの複写が必要であると判定する。
この結果、移行先のVMホストHT2は、移行先データDjと不一致となった移行元データdiを、移行元のVMホストHT1から受信することになる。
このように、移行元データdiと移行先データDjの一致判定により同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
なお、サーバSV間のデータの転送量を削減するという観点からすれば、移行先データDjとの一致判定のために、移行元のVMホストHT1から移行先のVMホストHT2に移行元データdiを送信することは意味がない。このため、サーバSV1からサーバSV2の方向の通信路が選択された場合は、VMホストHT2が、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致することを表す比較結果を、VMホストHT1に送信することにしてもよい。
この場合、VMホストHT1において、移行先の物理メモリPM2に対するメモリブロックbiの移行元データdiの複写が必要であると判定されることになる。すなわち、サーバSV1からサーバSV2の方向の通信路が選択された場合は、移行元データdiと移行先データDjとの一致判定を行うことなく、移行元データdiの複写が必要であると判定する。
(判定手法4)
つぎに、ハッシュ値(例えば、上述した第1のハッシュ値)が一致する移行元データdiと移行先データDjのデータソースの一致判定を行うことにより、移行元データdiと移行先データDjの同一性の判定を行う判定手法4について説明する。
図10は、移行元データおよび移行先データを記憶する共有ストレージの一例を示す説明図である。図10において、ストレージ装置1000は、ネットワーク205を介して、移行元のサーバSV1および移行先のサーバSV2がアクセス可能な共有ストレージである。
サーバSV1上で動作中の仮想マシンVM3は、移行対象となる仮想マシンである。仮想マシンVM3を構成するメモリブロックb5の移行元データd5は、移行先の物理メモリPM2を構成するメモリブロックB10の移行先データD10と第1のハッシュ値(h15=H110)が一致する。
また、移行元データd5は、ストレージ装置1000の論理ボリュームLV1に記憶されている。移行先データD10は、ストレージ装置1000の論理ボリュームLV2に記憶されている。ここで、ストレージ装置1000は、重複排除機能を有しており、同一内容を持つ論理ブロックは同一の物理ブロックに格納されるものとする。すなわち、移行元データd5および移行先データD10が、同一の物理アドレスのボリュームPV1に記憶されているデータDである場合、d5とD10は同一内容であり、同一のデータソースであることを示す。
移行元データd5と移行先データD10のデータソースが同一の場合、移行先のサーバSV2おいて、移行先データD10が記憶されているメモリブロックB10を複数の仮想マシンVM(例えば、仮想マシンVM3,VM4)で共有することができる。このため、移行先の物理メモリPM2に対する移行元データd5の複写は不要となる。
そこで、上記比較部505は、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、さらに、移行先データDjを記憶するストレージ内の記憶領域のアドレスと、移行元データdiを記憶するストレージ内の記憶領域のアドレスとを比較する。ストレージは、例えば、移行先のサーバSVおよび移行元のサーバSVがアクセス可能なストレージ装置1000である。そして、上記判定部504は、比較された比較結果に基づいて、移行先のサーバSVの物理メモリPMに対するメモリブロックbiの移行元データdiの複写の要否を判定する。
具体的には、例えば、VMホストHT2が、移行元データd5を記憶する論理ボリュームLV1を識別するボリュームIDを、移行元のVMホストHT1に問い合わせる。そして、VMホストHT2が、移行元データd5を記憶する論理ボリュームLV1に対応する物理アドレスをストレージ装置1000に問い合わせる。
また、VMホストHT2が、移行先データD10を記憶する論理ボリュームLV2に対応する物理アドレスをストレージ装置1000に問い合わせる。つぎに、VMホストHT2が、移行元データd5を記憶する論理ボリュームLV1に対応する物理アドレスと、移行先データD10を記憶する論理ボリュームLV2に対応する物理アドレスを比較する。そして、VMホストHT2は、比較された比較結果をVMホストHT1に送信する。
このあと、VMホストHT1は、受信された比較結果に基づいて、移行先の物理メモリPM2に対するメモリブロックbiの移行元データdiの複写の要否を判定する。具体的には、例えば、論理ボリュームLV1の物理アドレスと論理ボリュームLV2の物理アドレスが一致する場合、VMホストHT1が、移行元データd5の複写が不要であると判定する。この結果、移行先のサーバSV2において、例えば、移行先データD10を記憶するメモリブロックB10が複数の仮想マシンVM3,VM4によって共有されることになる。
一方、論理ボリュームLV1の物理アドレスと論理ボリュームLV2の物理アドレスが不一致の場合、VMホストHT1が、移行元データd5の複写が必要であると判定する。この結果、移行先のVMホストHT2は、移行先データDjを記憶する論理ボリュームLV2の物理アドレスと不一致の物理アドレスの論理ボリュームLV1に記憶されている移行元データdiを、移行元のVMホストHT1から受信することになる。
このように、移行元データdiと移行先データDjのデータソースの一致判定により同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
なお、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合、上述した判定手法1〜4の複数の判定手法を組み合わせて、移行元データdiと移行先データDjの同一性の判定を行うことにしてもよい。
つぎに、実施の形態2にかかるサーバSVのデータ移行処理手順について説明する。ここではまず、移行元のサーバSVのデータ移行処理手順について説明する。
(移行元のサーバSVのデータ移行処理手順)
図11は、実施の形態2にかかる移行元のサーバのデータ移行処理手順の一例を示すフローチャートである。図11のフローチャートにおいて、まず、受信部501により、仮想マシンVMkの移行指示を受信したか否かを判断する(ステップS1101)。
ここで、受信部501により、仮想マシンVMkの移行指示を受信するのを待つ(ステップS1101:No)。そして、受信部501により、移行指示を受信した場合(ステップS1101:Yes)、選択部502により、仮想マシンVMkのメモリMkを区切って分割されたメモリブロックbiの「i」を「i=1」で初期化する(ステップS1102)。
つぎに、選択部502により、仮想マシンVMkのメモリMkを構成するメモリブロックb1〜bnの中からメモリブロックbiを選択する(ステップS1103)。そして、送信部503により、選択されたメモリブロックbiに記憶されている移行元データdiの第1および第2のハッシュ値h1i,h2iを移行先のサーバSVに送信する(ステップS1104)。
このあと、受信部501により、移行元データdiのハッシュ値hiと、移行先の物理メモリPMを構成する各メモリブロック120−jに記憶されている移行先データDjごとのハッシュ値Hjとの比較結果を、移行先のサーバSVから受信したか否かを判断する(ステップS1105)。
ここで、比較結果を受信するのを待って(ステップS1105:No)、受信した場合(ステップS1105:Yes)、判定部504により、受信された比較結果に基づいて、移行先のサーバSVの物理メモリPVに対する移行元データdiの複写の要否を判定する(ステップS1106)。
ここで、移行元データdiの複写が必要な場合(ステップS1107:Yes)、送信部503により、移行元データdiの複写指示を移行先のサーバSVに送信する(ステップS1108)。そして、選択部502により、メモリブロックbiの「i」をインクリメントして(ステップS1109)、「i」が「n」より大きいか否かを判断する(ステップS1110)。
ここで、「i」が「n」以下の場合(ステップS1110:No)、ステップS1103に戻る。一方、「i」が「n」より大きい場合(ステップS1110:Yes)、本フローチャートによる一連の処理を終了する。また、ステップS1107において、移行元データdiの複写が不要な場合(ステップS1107:No)、ステップS1109に移行する。
これにより、移行対象となる仮想マシンVMkのメモリMkを構成するメモリブロックbiごとに、メモリブロックbiの移行元データdiの複写の要否を判定することができる。
つぎに、移行先のサーバSVのデータ移行処理手順について説明する。
(移行先のサーバSVのデータ移行処理手順)
図12〜図14は、実施の形態2にかかる移行先のサーバのデータ移行処理手順の一例を示すフローチャートである。図12のフローチャートにおいて、まず、受信部501により、移行元データdiの第1および第2のハッシュ値h1i,h2iを移行元のサーバSVから受信したか否かを判断する(ステップS1201)。
ここで、第1および第2のハッシュ値h1i,h2iを受信するのを待って(ステップS1201:No)、受信した場合(ステップS1201:Yes)、比較部505により、移行先の物理メモリPMを構成するメモリブロックBjの「j」を「j=1」で初期化する(ステップS1202)。
つぎに、比較部505により、メモリブロックBjに記憶されている移行先データDjの第1のハッシュ値H1jと、受信された移行元データdiの第1のハッシュ値h1iとを比較する(ステップS1203)。そして、比較部505により、移行先データDjの第1のハッシュ値H1jと、移行元データdiの第1のハッシュ値h1iとが一致したか否かを判断する(ステップS1204)。
ここで、第1のハッシュ値H1jと第1のハッシュ値h1iとが不一致の場合(ステップS1204:No)、比較部505により、メモリブロックBjの「j」をインクリメントして(ステップS1205)、「j」が「m」より大きいか否かを判断する(ステップS1206)。ここで、「j」が「m」以下の場合(ステップS1206:No)、ステップS1203に戻る。
一方、「j」が「m」より大きい場合(ステップS1206:Yes)、送信部503により、比較部505によって比較された比較結果を移行元のサーバSVに送信して(ステップS1207)、本フローチャートによる一連の処理を終了する。
また、ステップS1204において、第1のハッシュ値H1jと第1のハッシュ値h1iとが一致する場合(ステップS1204:Yes)、比較部505により、メモリブロックBjに記憶されている移行先データDjの第2のハッシュ値H2jと、移行元データdiの第2のハッシュ値h2iとを比較する(ステップS1208)。
そして、比較部505により、移行先データDjの第2のハッシュ値H2jと、移行元データdiの第2のハッシュ値h2iとが一致したか否かを判断する(ステップS1209)。ここで、第2のハッシュ値H2jと第2のハッシュ値h2iとが不一致の場合(ステップS1209:No)、ステップS1205に移行する。
一方、第2のハッシュ値H2jと第2のハッシュ値h2iとが一致する場合(ステップS1209:Yes)、図13に示すステップS1301に移行する。
図13のフローチャートにおいて、まず、送信部503により、移行元データdiの部分データpiの送信要求を移行元のサーバSVに送信する(ステップS1301)。つぎに、受信部501により、移行元データdiの部分データpiを移行元のサーバSVから受信したか否かを判断する(ステップS1302)。
ここで、部分データpiを受信するのを待って(ステップS1302:No)、受信した場合(ステップS1302:Yes)、比較部505により、移行先データDjの部分データPjと、移行元データdiの部分データpiとを比較する(ステップS1303)。
このあと、比較部505により、移行先データDjの部分データPjと、移行元データdiの部分データpiとが一致したか否かを判断する(ステップS1304)。ここで、部分データPjと部分データpiとが不一致の場合(ステップS1304:No)、図12に示したステップS1205に移行する。
一方、部分データPjと部分データpiとが一致する場合(ステップS1304:Yes)、図14に示すステップS1401に移行する。
図14のフローチャートにおいて、まず、比較部505により、移行元データdiを記憶する論理ボリュームのボリュームIDを移行元のサーバSVに問い合わせる(ステップS1401)。そして、比較部505により、移行元データdiを記憶する論理ボリュームに対応する物理アドレスをストレージ装置1000に問い合わせる(ステップS1402)。
つぎに、比較部505により、移行先データDjを記憶する論理ボリュームに対応する物理アドレスをストレージ装置1000に問い合わせる(ステップS1403)。そして、比較部505により、移行元データdiを記憶する論理ボリュームに対応する物理アドレスと、移行先データDjを記憶する論理ボリュームに対応する物理アドレスとを比較する(ステップS1404)。
このあと、比較部505により、比較された移行元データdiの物理アドレスと移行先データDjの物理アドレスとが一致するか否かを判断する(ステップS1405)。ここで、移行元データdiの物理アドレスと移行先データDjの物理アドレスとが不一致の場合(ステップS1405:No)、図12に示したステップS1205に移行する。
一方、移行元データdiの物理アドレスと移行先データDjの物理アドレスとが一致する場合(ステップS1405:Yes)、送信部503により、比較部505によって比較された比較結果を移行元のサーバSVに送信して(ステップS1406)、本フローチャートによる一連の処理を終了する。
これにより、移行元のメモリブロックbiに記憶されている移行元データdiと、移行先のメモリブロックBjに記憶されている移行先データDjとの同一性を判断するための情報(比較結果)を、移行元のサーバSVに送信することができる。
なお、ステップS1207において、比較された比較結果が移行元のサーバSVに送信された後、受信部501により、移行元データdiの複写指示が受信された場合、書込部506により、移行元データdiを移行先の物理メモリPMに書き込む。
また、ステップS1406において、比較された比較結果が移行元のサーバSVに送信された場合、例えば、書込部506により、移行元データdiとハッシュ値が一致する移行先データDjを移行先の物理メモリPMに書き込む。また、コンテキストの切り替えは、例えば、移行先のサーバSVの物理メモリPM上に、仮想マシンVMkのメモリMkを構成するメモリブロックb1〜bnが生成された後に行われる。
以上説明したように、実施の形態2にかかるサーバSVによれば、移行対象となる仮想マシンVMkのメモリMkを構成するメモリブロックbiごとに、メモリブロックbiの移行元データdiの複写の要否を判定することができる。これにより、ライブマイグレーションを行う際に、複写不要なデータdiの複写を抑止して、サーバSV間のデータの転送量を削減することができる。
また、サーバSVによれば、移行元データdiのハッシュ値hiと移行先データDjのハッシュ値Hjを比較して、移行元データdiと移行先データDjの同一性を判定することにより、メモリブロックbiのデータdiの複写の要否を判定することができる。
また、サーバSVによれば、複数の異なるハッシュ値により移行元データdiと移行先データDjの同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
また、サーバSVによれば、移行元データdiと移行先データDjの部分データpi,Pjの一致判定により同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
また、サーバSVによれば、サーバSV1とサーバSV2との間の双方向の通信路のうち通信品質の高い通信路を選択して、部分データpiと部分データPjの比較処理を行うことができる。これにより、迅速かつ効率的に部分データpiと部分データPjの一致判定を行うことができる。
また、サーバSVによれば、移行元データdiと移行先データDjの一致判定により同一性の判定を行うことにより、移行元データdiと移行先データDjのハッシュ値の衝突による不具合を回避することができる。
(実施の形態3)
つぎに、実施の形態3にかかるサーバSVについて説明する。実施の形態3では、移行対象となる仮想マシンVMkのメモリブロックbiごとに、メモリブロックbiに記憶されている移行元データdiの属性情報に基づいて、移行元データdiの複写の要否を判定する。なお、実施の形態1,2で説明した内容と同一の内容については説明を省略する。
ここで、サーバSV上の仮想マシンVMkによって実行中のOS(以下、「ゲストOSk」という)が、メモリMkを構成するメモリブロックb1〜bnを管理するためのメモリブロックテーブルについて説明する。ここでは、一例として、サーバSV1上の仮想マシンVM3が実行中のゲストOS3が用いるメモリブロックテーブル1500を例に挙げて説明する。メモリブロックテーブル1500は、例えば、図2に示したメモリ202によって実現される。
(メモリブロックテーブル1500の記憶内容)
図15は、メモリブロックテーブルの記憶内容の一例を示す説明図である。図15において、メモリブロックテーブル1500は、ブロックID、タイプ、ステータスおよび他ブロックIDのフィールドを有する。各フィールドに情報を設定することで、メモリブロックbiごとの管理データが記憶されている。
ここで、ブロックIDは、仮想マシンVMkのメモリMkを構成するメモリブロックbiの識別子である。タイプは、メモリブロックbiに記憶されているデータdiのデータタイプである。図15中、「kern」は、カーネルデータを表している。カーネルデータには、例えば、メモリブロックテーブル1500が含まれている。「text」は、プログラムコードなどのテキストデータを表している。「free」は、フリーメモリに計上されているメモリブロックを表している。「data」は、プログラムのデータ領域などのデータを表している。「anno」は、「kern」、「text」、「free」および「data」以外のデータ(アノニマスデータ)を表している。
ステータスは、メモリブロックbiに記憶されているデータdiの状態を表している。図15中、「nostore」は、バッキングストアがない状態を表している。バッキングストアとは、データdiのバックアップデータを記憶するスワップ領域内の記憶領域である。「sync」は、メモリブロックbiとは異なる他のメモリブロックと同期していることを表している。「nosync」は、メモリブロックbiとは異なる他のメモリブロックと同期していないことを表している。「null」は、メモリブロックbiが初期化されていることを表している。
他ブロックIDは、メモリブロックbiに記憶されているデータdiと関連するデータを記憶する他のメモリブロックのブロックIDである。他のメモリブロックとしては、例えば、ファイルシステム上のメモリブロックやスワップ領域内のメモリブロックなどである。
(サーバSVの機能的構成)
図16は、実施の形態3にかかるサーバの機能的構成を示すブロック図である。図16において、サーバSVは、受信部501と、選択部502と、送信部503と、判断部1601と、判定部1602と、を含む構成である。各機能部は、具体的には、例えば、図2に示したメモリ202などに記憶されたプログラムをCPU201に実行させることにより、または、ネットワークI/F203により、その機能を実現する。より具体的には、例えば、各機能部は、図3に示したVMホストHT1,HT2、または、仮想マシンVMk上で実行されるゲストOSkによって実現される。なお、各機能部の処理結果は、メモリ202に記憶される。
まず、判断部1601は、メモリブロックbiに記憶されている移行元データdiの属性情報に基づいて、メモリブロックbiが使用されていない空きの記憶領域か否かを判断する。具体的には、例えば、仮想マシンVM3のゲストOS3が、メモリブロックテーブル1500を参照して、メモリブロックbiがフリーメモリに計上されているメモリブロックか否かを判断する。より具体的には、例えば、ゲストOS3が、メモリブロックbiのタイプフィールドに「free」が設定されている場合、メモリブロックbiがフリーメモリに計上されているメモリブロックと判断する。
判定部1602は、判断された判断結果に基づいて、移行先のサーバSVの物理メモリPMに対する移行元データdiの複写の要否を判定する。具体的には、例えば、ゲストOS3が、メモリブロックbiがフリーメモリに計上されているメモリブロックと判断された場合、移行元データdiの複写が不要であると判定する。
そして、ゲストOS3が、メモリブロックbiのステータスをページスティールされた状態に移行させる。ここで、ページスティールとは、例えば、メモリブロックbiが他の仮想マシンVMに奪われた状態である。メモリブロックbiのステータスがページスティールされた状態に移行されたことを表す情報は、VMホストHT1からVMホストHT2に転送される。
この結果、例えば、メモリブロックbiのステータスが移行先のサーバSV2上で動作する仮想マシンVM3のゲストOS3が用いるメモリブロックテーブル1500に反映される。また、移行先のサーバSV2において、ゲストOS3は、ページスティールされた状態のメモリブロックbiに対するアクセスが発生した場合、物理メモリPM2の空き領域を確保して、メモリブロックbiを生成する。
また、判断部1601は、メモリブロックbiに記憶されている移行元データdiの属性情報に基づいて、移行先のサーバSVがアクセス可能な記憶装置に移行元データdiが記憶されているか否かを判断する。具体的には、例えば、仮想マシンVM3のゲストOS3が、メモリブロックテーブル1500を参照して、移行元データdiが移行先のサーバSVがアクセス可能なファイルシステムに記憶されているか否かを判断する。
より具体的には、例えば、まず、ゲストOS3が、メモリブロックbiのタイプフィールドに「text」または「data」が設定されているか否かを判断する。ここで、「text」または「data」が設定されている場合、さらに、ゲストOS3が、メモリブロックbiのステータスフィールドに「sync」が設定されているか否かを判断する。ここで、「sync」が設定されている場合、ゲストOS3が、移行元データdiがファイルシステムに記憶されていると判断する。
そして、ゲストOS3が、移行元データdiの複写が不要であると判定する。つぎに、ゲストOS3が、メモリブロックbiのステータスをページスティールされた状態に移行させる。また、移行先のサーバSV2において、ゲストOS3は、ページスティールされた状態のメモリブロックbiに対するアクセスが発生した場合、物理メモリPM2の空き領域を確保し、ファイルシステムからデータdiを取得してメモリブロックbiを生成する。
また、判断部1601は、メモリブロックbiに記憶されている移行元データdiの属性情報に基づいて、メモリMkとは異なる他の記憶領域に移行元データdiがバックアップされているか否かを判断する。ここで、他の記憶領域は、例えば、移行元のサーバSVの磁気ディスクや光ディスクなどの記憶装置に設けられていてもよく、また、移行元のサーバSVおよび移行先のサーバSVがアクセス可能な記憶装置に設けられていてもよい。
具体的には、例えば、仮想マシンVM3のゲストOS3が、メモリブロックテーブル1500を参照して、移行元データdiのバッキングストアがあるか否かを判断する。より具体的には、例えば、まず、ゲストOS3が、メモリブロックbiのタイプフィールドに「anno」が設定されているか否かを判断する。ここで、「anno」が設定されている場合、さらに、ゲストOS3が、メモリブロックbiのステータスフィールドに「sync」が設定されているか否かを判断する。
ここで、「sync」が設定されている場合、ゲストOS3が、移行元データdiのバッキングストアがあると判断する。そして、ゲストOS3が、移行元データdiの複写が不要であると判定する。そして、ゲストOS3が、メモリブロックbiのステータスをページスティールされた状態に移行させる。
また、移行先のサーバSV2において、ゲストOS3は、ページスティールされた状態のメモリブロックbiに対するアクセスが発生した場合、物理メモリPM2の空き領域を確保し、スワップ領域からデータdiを取得してメモリブロックbiを生成する。
また、判断部1601は、メモリブロックbiに記憶されている移行元データdiの属性情報に基づいて、メモリブロックbiが初期化されているか否かを判断する。具体的には、例えば、仮想マシンVM3のゲストOS3が、メモリブロックテーブル1500を参照して、メモリブロックbiが初期化されているか否かを判断する。
より具体的には、例えば、ゲストOS3が、メモリブロックbiのステータスフィールドに「null」が設定されているか否かを判断する。ここで、「null」が設定されている場合、ゲストOS3が、メモリブロックbiが初期化されていると判断する。そして、ゲストOS3が、移行元データdiの複写が不要であると判定する。
そして、ゲストOS3が、メモリブロックbiのステータスをページスティールされた状態に移行させる。また、移行先のサーバSV2において、ゲストOS3は、ページスティールされた状態のメモリブロックbiに対するアクセスが発生した場合、物理メモリPM2の空き領域を確保してメモリブロックbiを生成する。
つぎに、実施の形態3にかかるサーバSVのデータ移行処理手順について説明する。
(サーバSVのデータ移行処理手順)
図17は、実施の形態3にかかるサーバのデータ移行処理手順の一例を示すフローチャートである。図17のフローチャートにおいて、まず、受信部501により、仮想マシンVMkの移行指示を受信したか否かを判断する(ステップS1701)。
ここで、受信部501により、仮想マシンVMkの移行指示を受信するのを待つ(ステップS1701:No)。そして、受信部501により、移行指示を受信した場合(ステップS1701:Yes)、選択部502により、移行指示のあった仮想マシンVMkのメモリMkを構成するメモリブロックbiの「i」を「i=1」で初期化する(ステップS1702)。
つぎに、選択部502により、仮想マシンVMkのメモリMkを構成するメモリブロックb1〜bnの中からメモリブロックbiを選択する(ステップS1703)。そして、判断部1601により、メモリブロックbiがフリーメモリに計上されているメモリブロックか否かを判断する(ステップS1704)。
ここで、メモリブロックbiがフリーメモリに計上されているメモリブロックの場合(ステップS1704:Yes)、判定部1602により、移行元データdiの複写が不要であると判定する(ステップS1705)。そして、判定部1602により、メモリブロックbiのステータスをページスティールされた状態に移行させて(ステップS1706)、ステップS1712に移行する。
また、ステップS1704において、メモリブロックbiがフリーメモリに計上されていないメモリブロックの場合(ステップS1704:No)、判断部1601により、移行元データdiがファイルシステムに記憶されているか否かを判断する(ステップS1707)。ここで、移行元データdiがファイルシステムに記憶されている場合(ステップS1707:Yes)、ステップS1705に移行する。
一方、移行元データdiがファイルシステムに記憶されていない場合(ステップS1707:No)、判断部1601により、移行元データdiのバッキングストアがあるか否かを判断する(ステップS1708)。ここで、移行元データdiのバッキングストアがある場合(ステップS1708:Yes)、ステップS1705に移行する。
一方、移行元データdiのバッキングストアがない場合(ステップS1708:No)、判断部1601により、メモリブロックbiが初期化されているか否かを判断する(ステップS1709)。ここで、メモリブロックbiが初期化されている場合(ステップS1709:Yes)、ステップS1705に移行する。
一方、メモリブロックbiが初期化されていない場合(ステップS1709:No)、判定部1602により、移行元データdiの複写が必要であると判定する(ステップS1710)。そして、送信部503により、メモリブロックbiの移行元データdiの複写指示を移行先のサーバSVに送信する(ステップS1711)。
つぎに、選択部502により、メモリブロックbiの「i」をインクリメントして(ステップS1712)、「i」が「n」より大きいか否かを判断する(ステップS1713)。ここで、「i」が「n」以下の場合(ステップS1713:No)、ステップS1703に戻る。一方、「i」が「n」より大きい場合(ステップS1713:Yes)、本フローチャートによる一連の処理を終了する。
これにより、移行対象となる仮想マシンVMkのメモリMkを分割したメモリブロックbiごとに、メモリブロックbiの移行元データdiの複写の要否を判定することができる。なお、ステップS1706およびステップS1711の処理は、例えば、すべてのメモリブロックb1〜bnについて複写の要否が判定された後、一括して行われることにしてもよい。
以上説明したように、実施の形態3にかかるサーバSVによれば、仮想マシンVMkのメモリブロックbiごとに、メモリブロックbiに記憶されている移行元データdiの属性情報に基づいて、移行元データdiの複写の要否を判定することができる。これにより、ライブマイグレーションを行う際に、複写不要なデータdiの複写を抑止して、サーバ間のデータ転送量を削減することができる。
また、サーバSVによれば、メモリブロックbiがフリーメモリに計上されているメモリブロックか否かを判断することにより、メモリブロックbiに記憶されている移行元データdiの複写の要否を判定することができる。
また、サーバSVによれば、メモリブロックbiに記憶されている移行元データdiが移行先のサーバSVがアクセス可能なファイルシステムに記憶されているか否かを判断することにより、移行元データdiの複写の要否を判定することができる。
また、サーバSVによれば、メモリブロックbiに記憶されている移行元データdiのバッキングストアがあるか否かを判断することにより、移行元データdiの複写の要否を判定することができる。
また、サーバSVによれば、メモリブロックbiが初期化されているか否かを判断することにより、メモリブロックbiに記憶されている移行元データdiの複写の要否を判定することができる。
なお、本実施の形態で説明したデータ移行方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本データ移行プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本データ移行プログラムは、インターネット等のネットワークを介して配布してもよい。
101,102 計算機
110,110−1〜110−4,120,120−1〜120−9 記憶領域
300 ネットワークシステム
400,800 メモリ管理テーブル
501 受信部
502 選択部
503 送信部
504,1602 判定部
505 比較部
506 書込部
600,900 ハッシュテーブル
1500 メモリブロックテーブル
1601 判断部
SV,SV1,SV2 サーバ
VM,VMk 仮想マシン

Claims (9)

  1. コンピュータに、
    データの移行元である第1計算機とデータの移行先である第2計算機との間の双方向の通信路のうち通信品質の高い通信路を選択し、
    前記第1計算機のメモリを構成するメモリブロックごとに記憶されている移行元データから算出したハッシュ値と前記第2計算機のメモリを構成するメモリブロックごとに記憶されている移行先データから算出したハッシュ値とを比較し、選択した前記通信路により前記第1計算機と前記第2計算機との間で送信または受信される、所定の抽出ルールに基づいて前記移行元データから抽出した部分データと、前記所定の抽出ルールに基づいて前記移行先データから抽出した部分データとを比較し、
    前記第1計算機のいずれかのメモリブロックに対応するハッシュ値および部分データが前記第2計算機のいずれかのメモリブロックに対応するハッシュ値および部分データと一致するように前記第2計算機のデータを更新する、
    処理を実行させることを特徴とするデータ移行プログラム。
  2. 前記比較する処理は、
    複数の異なるハッシュ関数を用いて前記移行元データから算出した複数のハッシュ値と、前記複数の異なるハッシュ関数を用いて前記移行先データから算出した複数のハッシュ値とを比較し、選択した前記通信路により前記第1計算機と前記第2計算機との間で送信または受信される、所定の抽出ルールに基づいて前記移行元データから抽出した部分データと、前記所定の抽出ルールに基づいて前記移行先データから抽出した部分データとを比較し、
    前記更新する処理は、
    前記第1計算機のいずれかのメモリブロックに対応する複数のハッシュ値および部分データが前記第2計算機のいずれかのメモリブロックに対応する複数のハッシュ値および部分データと一致するように前記第2計算機のデータを更新することを特徴とする請求項1に記載のデータ移行プログラム。
  3. 前記コンピュータに、
    前記第1計算機および前記第2計算機がアクセス可能なストレージ内の、前記移行先データを記憶する記憶領域のアドレスと、前記移行元データを記憶する記憶領域のアドレスとを比較する処理を実行させ、
    前記更新する処理は、
    前記第1計算機のいずれかのメモリブロックに対応する前記ストレージ内の記憶領域のアドレスが前記第2計算機のメモリブロックに対応する前記ストレージ内の記憶領域のアドレスと不一致の場合に、前記第1計算機のいずれかのメモリブロックに対応するハッシュ値および部分データが前記第2計算機のいずれかのメモリブロックに対応するハッシュ値および部分データと一致するように前記第2計算機のデータを更新することを特徴とする請求項1に記載のデータ移行プログラム。
  4. 前記コンピュータに、
    データの移行元である第1計算機のメモリを構成するメモリブロックごとに記憶されている移行元データの属性情報に基づいて、前記移行元データを記憶する前記メモリブロックが使用されていない空きのメモリブロックか否かを判断することにより、データの移行先である第2計算機のメモリに対する前記移行元データの複写の要否を判定する処理を実行させ、
    前記更新する処理は、
    判定した結果に基づいて、前記第1計算機のいずれかのメモリブロックに記憶されている移行元データが前記第2計算機のいずれかのメモリブロックに記憶されている移行先データと一致するように前記第2計算機のデータを更新することを特徴とする請求項1に記載のデータ移行プログラム。
  5. 前記コンピュータに、
    データの移行元である第1計算機のメモリを構成するメモリブロックごとに記憶されている移行元データの属性情報に基づいて、データの移行先である第2計算機がアクセス可能な記憶装置に前記移行元データが記憶されているか否か判断することにより、前記第2計算機のメモリに対する前記移行元データの複写の要否を判定する処理を実行させ、
    前記更新する処理は、
    判定した結果に基づいて、前記第1計算機のいずれかのメモリブロックに記憶されている移行元データが前記第2計算機のいずれかのメモリブロックに記憶されている移行先データと一致するように前記第2計算機のデータを更新することを特徴とする請求項1に記載のデータ移行プログラム。
  6. 前記コンピュータに、
    データの移行元である第1計算機のメモリを構成するメモリブロックごとに記憶されている移行元データの属性情報に基づいて、前記第1計算機のメモリとは異なる他の記憶領域に前記移行元データがバックアップされているか否か判断することにより、データの移行先である第2計算機のメモリに対する前記移行元データの複写の要否を判定する処理を実行させ、
    前記更新する処理は、
    判定した結果に基づいて、前記第1計算機のいずれかのメモリブロックに記憶されている移行元データが前記第2計算機のいずれかのメモリブロックに記憶されている移行先データと一致するように前記第2計算機のデータを更新することを特徴とする請求項1に記載のデータ移行プログラム。
  7. 前記コンピュータに、
    データの移行元である第1計算機のメモリを構成するメモリブロックごとに記憶されている移行元データの属性情報に基づいて、前記移行元データを記憶する前記メモリブロックが初期化されているか否かを判断することにより、データの移行先である第2計算機のメモリに対する前記移行元データの複写の要否を判定する処理を実行させ、
    前記更新する処理は、
    判定した結果に基づいて、前記第1計算機のいずれかのメモリブロックに記憶されている移行元データが前記第2計算機のいずれかのメモリブロックに記憶されている移行先データと一致するように前記第2計算機のデータを更新することを特徴とする請求項1に記載のデータ移行プログラム。
  8. データの移行元である第1計算機とデータの移行先である第2計算機との間の双方向の通信路のうち通信品質の高い通信路を選択する選択部と、
    前記第1計算機のメモリを構成するメモリブロックごとに記憶されている移行元データから算出したハッシュ値と前記第2計算機のメモリを構成するメモリブロックごとに記憶されている移行先データから算出したハッシュ値とを比較し、選択した前記通信路により前記第1計算機と前記第2計算機との間で送信または受信される、所定の抽出ルールに基づいて前記移行元データから抽出した部分データと、前記所定の抽出ルールに基づいて前記移行先データから抽出した部分データとを比較する比較部と、
    前記第1計算機のいずれかのメモリブロックに対応するハッシュ値および部分データが前記第2計算機のいずれかのメモリブロックに対応するハッシュ値および部分データと一致するように前記第2計算機のデータを更新する更新部と、
    を有することを特徴とする計算機。
  9. コンピュータが、
    データの移行元である第1計算機とデータの移行先である第2計算機との間の双方向の通信路のうち通信品質の高い通信路を選択し、
    前記第1計算機のメモリを構成するメモリブロックごとに記憶されている移行元データから算出したハッシュ値と前記第2計算機のメモリを構成するメモリブロックごとに記憶されている移行先データから算出したハッシュ値とを比較し、選択した前記通信路により前記第1計算機と前記第2計算機との間で送信または受信される、所定の抽出ルールに基づいて前記移行元データから抽出した部分データと、前記所定の抽出ルールに基づいて前記移行先データから抽出した部分データとを比較し、
    前記第1計算機のいずれかのメモリブロックに対応するハッシュ値および部分データが前記第2計算機のいずれかのメモリブロックに対応するハッシュ値および部分データと一致するように前記第2計算機のデータを更新する、
    処理を実行することを特徴とするデータ移行方法。
JP2012548578A 2010-12-15 2010-12-15 データ移行プログラム、計算機およびデータ移行方法 Expired - Fee Related JP5534031B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/072583 WO2012081099A1 (ja) 2010-12-15 2010-12-15 データ移行プログラム、計算機およびデータ移行方法

Publications (2)

Publication Number Publication Date
JPWO2012081099A1 JPWO2012081099A1 (ja) 2014-05-22
JP5534031B2 true JP5534031B2 (ja) 2014-06-25

Family

ID=46244226

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012548578A Expired - Fee Related JP5534031B2 (ja) 2010-12-15 2010-12-15 データ移行プログラム、計算機およびデータ移行方法

Country Status (4)

Country Link
US (1) US20130275708A1 (ja)
EP (1) EP2653970A4 (ja)
JP (1) JP5534031B2 (ja)
WO (1) WO2012081099A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013140522A1 (ja) * 2012-03-19 2013-09-26 富士通株式会社 情報処理システム,情報処理方法,プログラム
JP6119327B2 (ja) * 2013-03-15 2017-04-26 日本電気株式会社 重複データ管理装置、データ転送制御装置、データ転送制御システム、重複データ管理方法、データ転送制御方法、および、コンピュータ・プログラム
JP6030485B2 (ja) * 2013-03-21 2016-11-24 日立オートモティブシステムズ株式会社 電子制御装置
US9459902B2 (en) * 2013-08-16 2016-10-04 Red Hat Israel, Ltd. Memory duplication by destination host in virtual machine live migration
US9454400B2 (en) * 2013-08-16 2016-09-27 Red Hat Israel, Ltd. Memory duplication by origin host in virtual machine live migration
CN103412929A (zh) * 2013-08-16 2013-11-27 蓝盾信息安全技术股份有限公司 一种海量数据的存储方法
US9712610B2 (en) * 2013-10-01 2017-07-18 Vmware, Inc. System and method for increasing physical memory page sharing by workloads
CN103559143A (zh) * 2013-11-08 2014-02-05 华为技术有限公司 数据拷贝管理装置及其数据拷贝方法
JP6432955B2 (ja) * 2014-11-03 2018-12-05 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 仮想ネットワーク機能インスタンスをマイグレーションさせるための方法、装置およびシステム
US9811367B2 (en) 2014-11-13 2017-11-07 Nsp Usa, Inc. Method and apparatus for combined hardware/software VM migration
JP6476932B2 (ja) * 2015-02-02 2019-03-06 富士通株式会社 ストレージ装置,制御プログラム,ストレージシステム及びデータ転送方法
JP6558059B2 (ja) * 2015-05-01 2019-08-14 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、およびストレージシステム
US9619270B2 (en) 2015-06-27 2017-04-11 Vmware, Inc. Remote-direct-memory-access-based virtual machine live migration
US10817321B2 (en) * 2017-03-21 2020-10-27 International Business Machines Corporation Hardware independent interface for cognitive data migration
US11526470B2 (en) * 2018-01-03 2022-12-13 Salesforce, Inc. Data validation for data record migrations
US20190250946A1 (en) * 2018-02-13 2019-08-15 International Business Machines Corporation Migrating a software container taking into account resource constraints
JP7306665B2 (ja) * 2018-03-01 2023-07-11 Necソリューションイノベータ株式会社 ストレージ装置、データ移行方法、プログラム
US11422851B2 (en) * 2019-04-22 2022-08-23 EMC IP Holding Company LLC Cloning running computer systems having logical partitions in a physical computing system enclosure
JP6979987B2 (ja) 2019-07-31 2021-12-15 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置
US20220318042A1 (en) * 2021-04-01 2022-10-06 RAMScaler, Inc. Distributed memory block device storage

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008250903A (ja) * 2007-03-30 2008-10-16 Toshiba Corp ファイル更新装置、プログラム及び方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2270687A2 (en) * 1995-04-11 2011-01-05 Kinetech, Inc. Identifying data in a data processing system
US7165088B2 (en) * 2001-01-24 2007-01-16 Microsoft Corporation System and method for incremental and reversible data migration and feature deployment
US6922761B2 (en) * 2002-03-25 2005-07-26 Emc Corporation Method and system for migrating data
JP3991760B2 (ja) * 2002-04-26 2007-10-17 株式会社日立製作所 データベース管理方法および装置およびその処理プログラム
US7366859B2 (en) * 2005-10-06 2008-04-29 Acronis Inc. Fast incremental backup method and system
US8055902B2 (en) * 2007-01-12 2011-11-08 International Business Machines Corporation Method, system, and computer program product for data upload in a computing system
US7925850B1 (en) * 2007-02-16 2011-04-12 Vmware, Inc. Page signature disambiguation for increasing the efficiency of virtual machine migration in shared-page virtualized computer systems
JP5246388B2 (ja) 2007-03-08 2013-07-24 日本電気株式会社 仮想装置構成システム、及びその方法
JP5146174B2 (ja) 2008-07-28 2013-02-20 富士通株式会社 仮想マシンモニタ装置およびプログラム,ならびに仮想マシン間メモリ共有管理方法
US8892676B2 (en) * 2008-11-07 2014-11-18 Compellent Technologies Thin import for a data storage system
JP5160483B2 (ja) * 2009-03-11 2013-03-13 株式会社日立ソリューションズ ストレージシステム及びデータマイグレーション対応検索システム
US8478725B2 (en) * 2009-09-14 2013-07-02 Vmware, Inc. Method and system for performing live migration of persistent data of a virtual machine
US8327060B2 (en) * 2009-11-30 2012-12-04 Red Hat Israel, Ltd. Mechanism for live migration of virtual machines with memory optimizations
US20120005557A1 (en) * 2010-06-30 2012-01-05 Eitan Mardiks Virtual copy and virtual write of data in a storage device
US8826272B2 (en) * 2010-11-29 2014-09-02 International Business Machines Corporation Planning a reliable migration in a limited stability virtualized environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008250903A (ja) * 2007-03-30 2008-10-16 Toshiba Corp ファイル更新装置、プログラム及び方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSNB201000213001; 宮本 久仁男: Xen 徹底入門 初版第1刷, 20071219, p.271, 株式会社翔泳社 *
CSNG201000486018; 清原 良三: '携帯端末向けプログラム再ダウンローディング方式' 情報処理学会研究報告 平成21年度(6) 組込みシステム(EMB-16) [DVD] , 20100415, p.(25) 1-8, 社団法人情報処理学会 *
JPN6011002656; 宮本 久仁男: Xen 徹底入門 初版第1刷, 20071219, p.271, 株式会社翔泳社 *
JPN6011002657; 清原 良三: '携帯端末向けプログラム再ダウンローディング方式' 情報処理学会研究報告 平成21年度(6) 組込みシステム(EMB-16) [DVD] , 20100415, p.(25) 1-8, 社団法人情報処理学会 *

Also Published As

Publication number Publication date
EP2653970A1 (en) 2013-10-23
US20130275708A1 (en) 2013-10-17
JPWO2012081099A1 (ja) 2014-05-22
WO2012081099A1 (ja) 2012-06-21
EP2653970A4 (en) 2014-01-29

Similar Documents

Publication Publication Date Title
JP5534031B2 (ja) データ移行プログラム、計算機およびデータ移行方法
US10430916B2 (en) Placement optimization for virtualized graphics processing
US7966470B2 (en) Apparatus and method for managing logical volume in distributed storage systems
US9201875B2 (en) Partition file system for virtual machine memory management
JP2020173840A (ja) リモートアクセスされるデータの効率的なライブマイグレーション
US9063793B2 (en) Virtual server and virtual machine management method for supporting zero client by providing host interfaces from classified resource pools through emulation or direct connection modes
US7792918B2 (en) Migration of a guest from one server to another
US10129357B2 (en) Managing data storage in distributed virtual environment
JP2018518733A (ja) ファイル操作方法及び装置
WO2011033582A1 (en) Storage system for eliminating duplicated data
CN104965757A (zh) 虚拟机热迁移的方法、虚拟机迁移管理装置及系统
WO2021098267A1 (zh) 一种磁盘处理的方法、系统、设备及可读存储介质
US9529618B2 (en) Migrating processes between source host and destination host using a shared virtual file system
US10552089B2 (en) Data processing for managing local and distributed storage systems by scheduling information corresponding to data write requests
JP2022541261A (ja) リソース割振り方法、記憶デバイス、および記憶システム
CN112328365A (zh) 一种虚拟机迁移方法、装置、设备及存储介质
WO2015109483A1 (zh) 一种存储数据的方法和装置
US11157456B2 (en) Replication of data in a distributed file system using an arbiter
US10705865B2 (en) Disk resize of a virtual machine
US11347532B2 (en) Hot-swapping storage pool backend functional modules
CN109814979B (zh) 数据加载方法、装置、计算机设备以及可读存储介质
JP2015179448A (ja) 情報処理装置、情報処理方法、情報処理プログラム、情報処理システム、ストレージ、ストレージ制御方法、及び、ストレージ制御プログラム
TW201201102A (en) Resource adjustment methods and systems for virtual machines, and computer program products thereof
JP2019164661A (ja) 情報処理装置、情報処理方法及びプログラム
JP5963313B2 (ja) 情報処理装置、方法、及び、プログラム

Legal Events

Date Code Title Description
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: 20140401

R150 Certificate of patent or registration of utility model

Ref document number: 5534031

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140414

LAPS Cancellation because of no payment of annual fees