JP2016167143A - 情報処理システムおよび情報処理システムの制御方法 - Google Patents

情報処理システムおよび情報処理システムの制御方法 Download PDF

Info

Publication number
JP2016167143A
JP2016167143A JP2015046273A JP2015046273A JP2016167143A JP 2016167143 A JP2016167143 A JP 2016167143A JP 2015046273 A JP2015046273 A JP 2015046273A JP 2015046273 A JP2015046273 A JP 2015046273A JP 2016167143 A JP2016167143 A JP 2016167143A
Authority
JP
Japan
Prior art keywords
information processing
virtual machine
information
memory
server
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.)
Pending
Application number
JP2015046273A
Other languages
English (en)
Inventor
貴史 三吉
Takashi Miyoshi
貴史 三吉
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 JP2015046273A priority Critical patent/JP2016167143A/ja
Priority to US15/006,546 priority patent/US20160266923A1/en
Publication of JP2016167143A publication Critical patent/JP2016167143A/ja
Pending legal-status Critical Current

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system

Abstract

【課題】仮想マシンのマイグレーション時間を短縮する。
【解決手段】メモリ装置20は、仮想マシン3のデータ21と、情報処理装置10に応じた情報#1とデータ21が記憶された記憶領域とを対応付けた管理情報22を記憶する。情報処理装置10は、仮想マシン3が使用するアドレスと情報#1とを対応付けた対応情報11に基づいて、メモリ装置20にアクセスし仮想マシン3を実行する。情報処理装置10aは、情報処理装置10から通知されるサイズ情報12に基づいて、アドレスと情報処理装置10aに応じた情報#2とを対応付けた対応情報11aを生成し、管理情報22に含まれる情報#1を情報#2に更新する。情報処理装置10aは、対応情報11aに基づいて、メモリ装置20にアクセスし仮想マシン3を実行する。
【選択図】図1

Description

本発明は情報処理システムおよび情報処理システムの制御方法に関する。
現在、物理的なコンピュータ(物理マシンと言うことがある)上で、複数の仮想的なコンピュータ(仮想マシン(VM:Virtual Machine)と言うことがある)を動作させる、仮想化技術が利用されている。ある情報処理と他の情報処理とを異なる仮想マシンに実行させることで、それらの情報処理を干渉しないように明確に分離することができる。よって、ユーザ毎に仮想マシンを用意することで、複数の仮想マシンを同じ物理マシンに配置しても、それら複数のユーザの情報処理を分離することが容易となる。
物理マシンでは、仮想マシンを管理する管理ソフトウェアが実行されている。管理ソフトウェアには、ハイパーバイザ、管理オペレーティングシステム(OS:Operating System)、仮想マシンモニタ(VMM:Virtual Machine Monitor)などと呼ばれるものが含まれる。管理ソフトウェアは、物理マシンが有するCPU(Central Processing Unit)コアやRAM(Random Access Memory)領域などの物理的・ハードウェア的なリソースを、その物理マシンに配置された仮想マシンに対して割り当てる。各仮想マシンでは、他の仮想マシンとは独立にユーザ用のOS(ゲストOSやユーザOSと言うことがある)が実行される。各仮想マシンのOSは、管理ソフトウェアから割り当てられたリソースの範囲内で、そのOS上で起動されたプロセスをスケジューリングし実行させる。
複数の物理マシンを有する情報処理システムでは、ある物理マシンから他の物理マシンへの仮想マシンの移行(マイグレーション)を行うことがある。例えば、ある物理マシンの負荷が高くなった場合、その物理マシン上の一部の仮想マシンを負荷の低い他の物理マシンに移行することがある。また、例えば、ある物理マシンをメンテナンスするためにその物理マシンを停止する場合、その物理マシン上の全ての仮想マシンを他の物理マシンに移行することがある。このとき、仮想マシンの停止時間が短くなるよう、マイグレーションの一形態として、OSをシャットダウンせずに実行状態のまま移行する「ライブマイグレーション」が行われることがある。
ライブマイグレーションの1つの実現方法として、例えば、移行元の物理マシンは、仮想マシンを停止させずに、メモリ上にある仮想マシンのデータ全体を移行先の物理マシンに1回コピーする。このとき、仮想マシンが実行中であるため、コピーを行っている間にデータが更新される可能性がある。そこで、移行元の物理マシンは、データの更新を監視し、データ全体を1回コピーした後は、データの更新毎の差分データを継続的に移行先の物理マシンに送信する。そして、移行元の物理マシンは、データの更新回数またはデータの更新量が少なくなったタイミングで仮想マシンを停止させ、最後の差分データを移行先の物理マシンに送信する。移行先の物理マシンは、移行元からコピーされたデータと差分データとをメモリ上に適切に配置し、仮想マシンの処理を再開する。これにより、実質的に仮想マシンが停止している時間を短くすることができる。
なお、複数の論理パーティションが設定されたシステムで行われるプロセス制御方法が提案されている。各論理パーティションに対しては、システムが有する物理プロセッサのリソースが割り当てられる。各論理パーティションは、割り当てられた物理プロセッサのリソースを論理プロセッサとして認識し、論理プロセッサを用いてゲストOSを実行する。システムは、論理プロセッサと物理プロセッサとの対応関係の変更が容易になるように、アドレス変換に第1の変換テーブルと第2の変換テーブルを用いる。第1の変換テーブルは、論理パーティションが割り当てリソースの識別に使用する論理パーティションアドレス空間に対して、物理アドレス空間を対応付ける。第2の変換テーブルは、ゲストOSが論理パーティションアドレス空間とは異なる仮想アドレス空間を使用している場合に、仮想アドレス空間に対して物理アドレス空間を直接対応付ける。
また、複数のOSを同時に実行し、あるOS上で実行されるプロセスを他のOSに移行する「プロセスマイグレーション」が可能な計算機システムが提案されている。この計算機システムは、OSに依存しないデータを共有領域に記憶しておく。プロセスマイグレーションでは、計算機システムは、共有領域のデータの物理的位置を維持し、移行先のOSが使用するメモリ領域表やページテーブルを移行元のOSのメモリ領域表に基づいて生成する。これにより、OSに依存しないデータを、移行元のOSが管理するメモリ領域から移行先のOSが管理するメモリ領域にコピーしなくてもよい。
また、複数の処理システムとこれら複数の処理システムからアクセスされる共有記憶装置とを有する計算機システムが提案されている。各処理システムは、2以上のプロセッサと主記憶装置とを有する。共有記憶装置には、主OSのプログラムが記憶される。各処理システムの主記憶装置には、主OSによって管理されるサブOSのプログラムや、サブOS上で実行される処理プログラムが記憶される。複数の処理システムの何れもが、共有記憶装置にアクセスして主OSのプログラムを読み出し、主OSを実行することができる。
また、メモリコントローラと大規模なメモリとを有するメモリプールが提案されている。このメモリプールは、メモリの記憶領域を複数のパーティションに分割し、メモリプールと接続された複数のノードにパーティションを割り当てる。
特開2006−127462号公報 特開2010−250722号公報 特開昭62−49556号公報
Mohan J. Kumar, "Rack Scale Architecture - Platform and Management", Intel Developer Forum 2014, DATS008, 2014-09-10
互いに別の管理ソフトウェアによってリソースを管理している異なる物理マシンの間で、仮想マシンのマイグレーションを行う場合、従来はそれら物理マシンの間でメモリのデータをコピーすることがあった。しかし、仮想マシンが使用するメモリ領域が大きいと、物理マシン間のデータのコピーに時間を要し、マイグレーションを開始してから完了するまでのマイグレーション時間が長くなってしまうという問題がある。
例えば、512Gバイトのメモリを有する物理マシンをメンテナンスするため、その物理マシン上の全ての仮想マシンを、1Gbpsのネットワークを介して他の物理マシンに移行する場合を考える。その場合、メモリのデータのコピーに1時間以上要する可能性がある。なお、異なる物理マシン間や別の管理ソフトウェア間で仮想マシンをマイグレーションすることは、上記の特許文献1〜3では議論されていない。
1つの側面では、本発明は、仮想マシンのマイグレーション時間を短縮できる情報処理システムおよび情報処理システムの制御方法を提供することを目的とする。
1つの態様では、仮想マシンを実行する第1の情報処理装置と、第1の情報処理装置と通信可能な第2の情報処理装置と、第1の情報処理装置および第2の情報処理装置に接続され、仮想マシンのデータと、第1の情報処理装置に応じた情報とデータが記憶された記憶領域とを対応付けた管理情報とを記憶するメモリ装置と、を有する情報処理システムが提供される。第1の情報処理装置は、仮想マシンが使用するアドレスと第1の情報処理装置に応じた情報とを対応付けた第1の対応情報に基づいて、メモリ装置にアクセスして仮想マシンを実行する。仮想マシンを第2の情報処理装置に実行させる場合、第1の情報処理装置は、記憶領域の大きさを示すサイズ情報を第2の情報処理装置に通知し、仮想マシンを停止する。第2の情報処理装置は、サイズ情報に基づいて、アドレスと第2の情報処理装置に応じた情報とを対応付けた第2の対応情報を生成し、管理情報に含まれる第1の情報処理装置に応じた情報を第2の情報処理装置に応じた情報に更新し、第2の対応情報に基づいて、メモリ装置にアクセスして仮想マシンを実行する。
また、1つの態様では、第1の情報処理装置と、第1の情報処理装置と通信可能な第2の情報処理装置と、第1の情報処理装置および第2の情報処理装置に接続されたメモリ装置とを有する情報処理システムが実行する制御方法が提供される。
1つの側面では、仮想マシンのマイグレーション時間を短縮できる。
第1の実施の形態の情報処理システムを示す図である。 第2の実施の形態の情報処理システムを示す図である。 サーバ装置のハードウェア例を示すブロック図である。 メモリプール装置のハードウェア例を示すブロック図である。 仮想マシンの形成例を示す図である。 仮想マシンに関するデータの配置例を示す図である。 アドレス空間の対応付け例を示す図である。 サーバ装置とメモリプール装置の機能例を示すブロック図である。 ページテーブルの例を示す図である。 仮想マシン管理テーブルの例を示す図である。 仮想マシン起動の手順例を示すフローチャートである。 メモリアクセスの手順例を示すフローチャートである。 仮想マシン移行の手順例を示すフローチャートである。 第3の実施の形態の情報処理システムを示す図である。 仮想マシンに関するデータの他の配置例を示す図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムを示す図である。
第1の実施の形態の情報処理システムは、情報処理装置10,10aおよびメモリ装置20を有する。情報処理装置10aは、情報処理装置10と通信可能である。例えば、情報処理装置10,10aは、LAN(Local Area Network)に接続されている。メモリ装置20は、情報処理装置10,10aに接続されている。例えば、情報処理装置10,10aとメモリ装置20とは、LANとは異なるメモリバスに接続されている。
情報処理装置10,10aは、仮想化技術を用いて1または2以上の仮想マシンを実行することができるコンピュータ(物理マシン)である。情報処理装置10,10aはそれぞれ、CPUなどの演算処理装置としてのプロセッサと、RAMなどの主記憶装置としてのメモリとを有する。プロセッサは、メモリにプログラムをロードし、メモリに記憶されたプログラムを実行する。ただし、プロセッサは、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。情報処理装置10,10aは、互いに独立に、仮想マシンを制御する管理ソフトウェア(例えば、ハイパーバイザ、管理OS、VMMなど)を実行し、各情報処理装置が有する物理的・ハードウェア的なリソースを管理する。
メモリ装置20は、RAMなどのメモリを有する。メモリ装置20が有するメモリは、情報処理装置10,10aから共通に利用することができ、情報処理装置10,10aから見て「メモリプール」と言うことができる。メモリ装置20は、情報処理装置10,10aからのアクセスを処理する制御部(メモリコントローラなど)を有していてもよい。
ここで、情報処理装置10で仮想マシン3が実行されているとする。仮想マシン3上では、OSが実行されている。第1の実施の形態では、情報処理装置10から情報処理装置10aに仮想マシン3を移行すること(マイグレーション)を考える。例えば、情報処理装置10の負荷が高くなったときや、情報処理装置10のメンテナンスを行うときに、仮想マシン3を情報処理装置10aに移行する。仮想マシン3のマイグレーションは、例えば、仮想マシン3のOSをシャットダウンしないライブマイグレーションとして行う。ただし、第1の実施の形態では、情報処理装置10から情報処理装置10aに仮想マシン3のデータがコピーされるのを抑制し、マイグレーション時間を短縮する。
メモリ装置20は、仮想マシン3に関するデータ21(例えば、仮想マシン3上で実行されているOSプログラムなどのプログラムを含む)を記憶する。また、メモリ装置20は、管理情報22を記憶する。管理情報22は、情報処理装置10に応じた情報とデータ21が記憶されているメモリ装置20の記憶領域とを対応付ける。情報処理装置10に応じた情報は、例えば、情報処理装置10が有するメモリの物理アドレスを含む。この場合、管理情報22は、情報処理装置10が有するメモリの物理アドレスとメモリ装置20が有するメモリの物理アドレスとを対応付けていると言うこともできる。
仮想マシン3を移行する前、情報処理装置10は、対応情報11に基づいてメモリ装置20にアクセスし、データ21を用いて仮想マシン3を実行する。対応情報11は、仮想マシン3が使用する論理アドレスと情報処理装置10に応じた情報(例えば、情報処理装置10が有するメモリの物理アドレス)とを対応付ける。対応情報11は、例えば、情報処理装置10によって生成され、情報処理装置10に記憶されている。
例えば、仮想マシン3から論理アドレスが指定されると、対応情報11に基づいて、指定された論理アドレスが情報処理装置10に応じた情報に変換される。対応情報11に基づく変換は、情報処理装置10が行う。そして、管理情報22に基づいて、情報処理装置10に応じた情報がメモリ装置20の記憶領域の物理アドレスに変換される。管理情報22に基づく変換は、メモリ装置20(例えば、メモリ装置20が有するメモリコントローラ)が行ってもよいし、情報処理装置10が行ってもよい。前者の場合、情報処理装置10がメモリ装置20にアクセスする際、情報処理装置10に応じた情報を指定することになる。対応情報11と管理情報22の両方に基づいて、情報処理装置10は、メモリ装置20に記憶されたデータ21にアクセスすることができる。
仮想マシン3を移行する場合、情報処理装置10は、仮想マシン3が使用する記憶領域の大きさを示すサイズ情報12を情報処理装置10aに通知する。仮想マシン3が使用する記憶領域の大きさは、通常、仮想マシン3に対して確保された(データ21を記憶するために確保された)メモリ装置20の記憶領域の大きさである。
情報処理装置10からサイズ情報12が通知されると、情報処理装置10aは、サイズ情報12に基づいて対応情報11aを生成する。対応情報11aは、情報処理装置10が使用する対応情報11に相当するものである。対応情報11aは、仮想マシン3が使用する論理アドレス(対応情報11と同じもの)と情報処理装置10aに応じた情報(例えば、情報処理装置10aが有するメモリの物理アドレス)とを対応付ける。情報処理装置10aが生成した対応情報11aは、例えば、情報処理装置10aに記憶される。
情報処理装置10は、サイズ情報12を通知した後(好ましくは、情報処理装置10aが対応情報11aを生成した後)、仮想マシン3を停止させる。情報処理装置10が仮想マシン3を停止させると、情報処理装置10aは、メモリ装置20に記憶された管理情報22を更新する。このとき、情報処理装置10aは、管理情報22に含まれる情報処理装置10に応じた情報を、情報処理装置10aに応じた情報(例えば、情報処理装置10aが有するメモリの物理アドレス)に書き換える。これにより、管理情報22は、情報処理装置10aに応じた情報とデータ21が記憶されているメモリ装置20の記憶領域とを対応付けたものとなる。以上により、仮想マシン3のマイグレーションが完了する。仮想マシン3のマイグレーションでは、データ21を移動しなくてよい。
仮想マシン3を移行した後、情報処理装置10aは、対応情報11aに基づいてメモリ装置20にアクセスし、データ21を用いて仮想マシン3を実行する。例えば、仮想マシン3から論理アドレスが指定されると、対応情報11aに基づいて、指定された論理アドレスが情報処理装置10aに応じた情報に変換される。対応情報11に基づく変換は、情報処理装置10aが行う。そして、管理情報22に基づいて、情報処理装置10aに応じた情報がメモリ装置20の記憶領域の物理アドレスに変換される。管理情報22に基づく変換は、メモリ装置20が行ってもよいし情報処理装置10aが行ってもよい。前者の場合、情報処理装置10aがメモリ装置20にアクセスする際、情報処理装置10aに応じた情報を指定することになる。対応情報11aと管理情報22の両方に基づいて、情報処理装置10aは、メモリ装置20に記憶されたデータ21にアクセスすることができる。
第1の実施の形態の情報処理システムによれば、情報処理装置10,10aに接続されたメモリ装置20に、仮想マシン3のデータと管理情報22とが記憶される。情報処理装置10で仮想マシン3が実行されているときは、対応情報11に基づいて情報処理装置10からメモリ装置20がアクセスされる。仮想マシン3を移行する場合、情報処理装置10から情報処理装置10aにサイズ情報12が通知され、情報処理装置10aで対応情報11に相当する対応情報11aが生成される。そして、情報処理装置10で仮想マシン3が停止され、メモリ装置20の管理情報22が更新され、情報処理装置10aで仮想マシン3の実行が再開される。情報処理装置10aで仮想マシン3が実行されているときは、対応情報11aに基づいて情報処理装置10aからメモリ装置20がアクセスされる。
これにより、情報処理装置10から情報処理装置10aにデータ21をコピーしなくても仮想マシン3のマイグレーションを行うことができ、マイグレーションを開始してから完了するまでに要する時間を短縮できる。特に、仮想マシン3に割り当てられるメモリ領域が大きくなっても、ネットワーク通信の時間を抑制することができる。
また、仮想マシン3の論理アドレスが、対応情報11と管理情報22を二段階で使用して、メモリ装置20の物理アドレスに変換される。マイグレーションでは、移行先の情報処理装置10aに合わせて対応情報11aが生成され、管理情報22が更新される。よって、異なる物理マシン間や別の管理ソフトウェア間でも、データ21をコピーせずに仮想マシン3を円滑に移行することができる。また、情報処理装置10,10aに応じた情報として情報処理装置10,10aの物理アドレスを用いることもできる。これにより、情報処理装置10,10aが有するローカルメモリへのアクセスと整合性を取ることが容易となり、既存のメモリアーキテクチャを利用してメモリ装置20にアクセスできる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。
第2の実施の形態の情報処理システムは、LAN31、SAN(Storage Area Network)32、拡張バス33、ストレージ装置40、サーバ装置100,100aおよびメモリプール装置200を有する。サーバ装置100,100aは、LAN31、SAN32および拡張バス33に接続されている。ストレージ装置40は、SAN32に接続されている。メモリプール装置200は、拡張バス33に接続されている。
LAN31は、データ通信用の汎用的なネットワークである。LAN31上の通信には、例えば、IP(Internet Protocol)やTCP(Transmission Control Protocol)などが用いられる。LAN31は、レイヤ2スイッチなどの通信装置を含んでもよい。例えば、LAN31のレイヤ2スイッチとサーバ装置100,100aとがケーブルで接続される。サーバ装置100は、LAN31を介してサーバ装置100aと通信する。
SAN32は、ストレージアクセス用の専用ネットワークである。SAN32は、LAN31よりも効率的に大規模データを伝送することができる。LAN31とSAN32は独立したネットワークであり、サーバ装置100,100aはLAN31とSAN32に別個に接続される。サーバ装置100,100aは、SAN32を介してストレージ装置40にアクセス要求を送信する。SAN32上の通信には、例えば、ファイバチャネルプロトコル(FCP:Fiber Channel Protocol)などのSCSI(Small Computer System Interface)プロトコルが用いられる。SAN32は、FCスイッチなどの通信装置を含んでもよい。例えば、SAN32のFCスイッチとサーバ装置100,100aとが、ファイバケーブルなどのケーブルで接続される。
拡張バス33は、サーバ装置100,100aの外部に存在するメモリバスである。拡張バス33はLAN31やSAN32から独立したネットワークであり、サーバ装置100,100aはLAN31やSAN32とは別個に拡張バス33に接続される。サーバ装置100,100aは、拡張バス33を介してメモリプール装置200にアクセス要求を送信する。拡張バス33は、サーバ装置100とメモリプール装置200、および、サーバ装置100aとメモリプール装置200を、それぞれケーブルによって直接接続してもよい。また、拡張バス33は、サーバ装置100,100aおよびメモリプール装置200と接続されるハブを含んでもよい。また、拡張バス33は、サーバ装置100からのアクセスとサーバ装置100aからのアクセスとを選択的にメモリプール装置200に転送するクロスバースイッチを含んでもよい。
ストレージ装置40は、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性の記憶装置を有するサーバ装置である。ストレージ装置40は、サーバ装置100からSAN32を介してアクセス要求を受信し、記憶装置にアクセスしてアクセス結果をサーバ装置100に返信する。アクセス要求が読み出し要求である場合、ストレージ装置40は、アクセス要求で指定されたデータを記憶装置から読み出し、読み出したデータを含むアクセス結果をサーバ装置100に返信する。アクセス要求が書き込み要求である場合、ストレージ装置40は、アクセス要求に含まれるデータを記憶装置に書き込み、書き込み成否を示すアクセス結果をサーバ装置100に返信する。同様に、ストレージ装置40は、サーバ装置100aからSAN32を介してアクセス要求を受信し、アクセス結果をサーバ装置100aに返信する。
サーバ装置100,100aは、仮想マシンを実行することができるサーバコンピュータである。各仮想マシンのディスクイメージが、ストレージ装置40に記憶されている。ディスクイメージには、OSプログラムやアプリケーションプログラムなどが含まれる。ストレージ装置40は、サーバ装置100,100aから外付けの補助記憶装置として利用できる。ある仮想マシンがサーバ装置100に配置される場合、サーバ装置100は、SAN32を介してストレージ装置40から、当該仮想マシンのディスクイメージの少なくとも一部分を読み出す。サーバ装置100は、ストレージ装置40から読み出したデータに基づいて仮想マシンを起動する。同様に、ある仮想マシンがサーバ装置100aに配置される場合、サーバ装置100aは、SAN32を介してストレージ装置40からディスクイメージの少なくとも一部分を読み出し、当該仮想マシンを起動する。
ここで、第2の実施の形態では、サーバ装置100,100aは、仮想マシンに関するデータを、サーバ装置100が有するローカルのメモリに代えてメモリプール装置200に格納する。メモリプール装置200は、サーバ装置100,100aから外付けの主記憶装置として利用できる。サーバ装置100は、ストレージ装置40から読み出した仮想マシンに関するデータを、拡張バス33を介してメモリプール装置200に書き込む。同様に、サーバ装置100aは、ストレージ装置40から読み出した仮想マシンに関するデータを、拡張バス33を介してメモリプール装置200に書き込む。以降、サーバ装置100,100aはそれぞれ、ストレージ装置40およびメモリプール装置200に適宜アクセスしながら、当該サーバ装置に配置された仮想マシンを実行する。
また、第2の実施の形態では、サーバ装置100,100aの間で仮想マシンを移行することがある。例えば、サーバ装置100の負荷が高くなったときや、メンテナンス作業のためにサーバ装置100の電源をOFFにするときに、サーバ装置100からサーバ装置100aに仮想マシンを移行する。仮想マシンの移行(マイグレーション)は、仮想マシンのOSをシャットダウンしないライブマイグレーションとして行う。すなわち、サーバ装置100上で実行していた仮想マシンを停止させ、サーバ装置100a上で停止直前の状態から当該仮想マシンの実行を再開させる。
メモリプール装置200は、RAMなどの揮発性のメモリを有する。メモリプール装置200は、サーバ装置100から拡張バス33を介してアクセス要求を受信し、メモリにアクセスしてアクセス結果をサーバ装置100に返信する。アクセス要求が読み出し要求である場合、メモリプール装置200は、アクセス要求で指定されたデータをメモリから読み出し、読み出したデータを含むアクセス結果をサーバ装置100に返信する。アクセス要求が書き込み要求である場合、メモリプール装置200は、アクセス要求に含まれるデータをメモリに書き込み、書き込み成否を示すアクセス結果をサーバ装置100に返信する。同様に、メモリプール装置200は、サーバ装置100aから拡張バス33を介してアクセス要求を受信し、アクセス結果をサーバ装置100aに返信する。
サーバ装置100,100aの外部に共有の主記憶装置(メモリプール)を設けることは、例えば、前述の特許文献3や非特許文献1などの技術を用いて実現することが可能である。特許文献3(特開昭62−49556号公報)には、それぞれがプロセッサと主記憶装置とを有する複数の処理システムから、共有記憶装置にアクセス可能な計算機システムが提案されている。特許文献3では、各処理システムのプロセッサが、共有記憶装置に記憶された主OSのプログラムを読み出して主OSを実行することができる。非特許文献1(Mohan J. Kumar, "Rack Scale Architecture - Platform and Management")には、メモリコントローラと大規模なメモリとを有するメモリプールが提案されている。
なお、サーバ装置100は、第1の実施の形態の情報処理装置10に対応する。サーバ装置100aは、第1の実施の形態の情報処理装置10aに対応する。メモリプール装置200は、第1の実施の形態のメモリ装置20に対応する。
図3は、サーバ装置のハードウェア例を示すブロック図である。
サーバ装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105および媒体リーダ106を有する。また、サーバ装置100は、メモリコントローラ111、IO(Input Output)ハブ112、バスインタフェース113、NIC(Network Interface Card)114、HBA(Host Bus Adapter)115およびバス116を有する。サーバ装置100aも、サーバ装置100と同様のハードウェアを用いて実現することができる。
CPU101は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU101は、HDD103またはストレージ装置40に記憶されたプログラムの少なくとも一部を、RAM102またはメモリプール装置200にロードして実行する。なお、CPU101は、複数のプロセッサコアを備えてもよい。また、サーバ装置100は、複数のプロセッサを備えてもよい。サーバ装置100は、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
RAM102は、データ(CPU101が実行するプログラムを含む)を一時的に記憶する揮発性の半導体メモリである。なお、サーバ装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、データ(プログラムを含む)を記憶する不揮発性の記憶装置である。HDD103に記憶されるプログラムには、仮想マシンを制御するハイパーバイザのプログラムが含まれる。なお、サーバ装置100は、フラッシュメモリやSSDなどの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、サーバ装置100に接続されたディスプレイ107に画像を出力する。ディスプレイ107としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力信号処理部105は、サーバ装置100に接続された入力デバイス108から入力信号を取得し、CPU101に通知する。入力デバイス108としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、サーバ装置100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体109に記録されたデータ(プログラムを含む)を読み取る読み取り装置である。記録媒体109として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。媒体リーダ106は、例えば、記録媒体109から読み取ったデータをRAM102またはHDD103に格納する。
メモリコントローラ111は、RAM102およびメモリプール装置200へのアクセスを制御する。メモリコントローラ111は、RAM102の物理アドレス(サーバ物理アドレス)を指定したアクセス要求をCPU101から受け付けると、サーバ物理アドレスが示すRAM102の記憶領域にアクセスする。ただし、アクセス先が外部である旨がCPU101によって指示された場合、メモリコントローラ111は、サーバ物理アドレスを指定したアクセス要求をバスインタフェース113に転送する。
また、メモリコントローラ111は、IOハブ112とRAM102の間でデータを転送する。メモリコントローラ111は、IOハブ112から取得したデータをRAM102に書き込み、バス116に接続されたデバイス(IOデバイス)からデータが到着した旨をCPU101に通知する。また、メモリコントローラ111は、CPU101からの指示に応じて、RAM102に記憶されているデータをIOハブ112に転送する。
IOハブ112は、バス116に接続されている。IOハブ112は、バス116の使用を制御し、メモリコントローラ111とバス116に接続されたIOデバイスとの間でデータを転送する。バス116に接続されたIOデバイスには、画像信号処理部104、入力信号処理部105、媒体リーダ106、NIC114およびHBA115が含まれる。IOハブ112は、バス116を介して、これらのIOデバイスからデータを受信し、また、これらのIOデバイスにデータを送信する。
バスインタフェース113は、拡張バス33に接続される通信インタフェースである。バスインタフェース113は、例えば、ケーブルを接続するポートを有する。バスインタフェース113は、拡張バス33を介してメモリプール装置200に、サーバ物理アドレスを指定したアクセス要求を送信する。NIC114は、LAN31に接続される通信インタフェースである。NIC114は、例えば、LANケーブルを接続するポートを有する。HBA115は、SAN32に接続される通信インタフェースである。HBA115は、例えば、ファイバケーブルを接続するポートを有する。HBA115は、SAN32を介してストレージ装置40にアクセス要求を送信する。
なお、サーバ装置100は、媒体リーダ106を備えていなくてもよく、ユーザが操作する端末装置から制御可能である場合には画像信号処理部104や入力信号処理部105を備えていなくてもよい。また、ディスプレイ107や入力デバイス108が、サーバ装置100の筐体と一体に形成されていてもよい。
図4は、メモリプール装置のハードウェア例を示すブロック図である。
メモリプール装置200は、RAM201,202を含むRAMの集合、メモリコントローラ211およびバスインタフェース212を有する。
RAM201,202は、データ(プログラムを含む)を一時的に記憶する揮発性の半導体メモリである。メモリプール装置200が有するRAMの集合の記憶領域は、サーバ装置100,100aで実行される仮想マシンに割り当てることができる。ある仮想マシンに割り当てられた記憶領域には、その仮想マシンの実行に用いられるデータが記憶される。仮想マシンの実行に用いられるデータには、その仮想マシン上で実行されるOSのプログラム、デバイスドライバのプログラム、アプリケーションソフトウェアのプログラム、それらプログラムから利用されるその他のデータなどが含まれる。
また、RAM201またはRAM202は、後述する仮想マシン管理テーブルを記憶する。仮想マシン管理テーブルは、サーバ物理アドレスとメモリプール装置200が有するRAMの物理アドレス(メモリプールアドレス)とを対応付ける。ある仮想マシンに割り当てられたメモリプール装置200の記憶領域は、その仮想マシンが実行されているサーバ装置の記憶領域と対応付けられることになる。メモリプール装置200の1つの記憶領域は、同時に複数の仮想マシンに対しては割り当てられない。
メモリコントローラ211は、RAM201,202を含むRAMの集合に対するアクセスを制御する。メモリコントローラ211は、サーバ装置100のサーバ物理アドレスを指定したアクセス要求を、拡張バス33およびバスインタフェース212を介してサーバ装置100から受信する。すると、メモリコントローラ211は、メモリプール装置200が有する仮想マシン管理テーブルを参照して、サーバ物理アドレスをメモリプールアドレスに変換する。そして、メモリコントローラ211は、変換されたメモリプールアドレスが示す記憶領域にアクセスし、アクセス結果をサーバ装置100に返信する。
例えば、メモリコントローラ211は、変換されたメモリプールアドレスが示す記憶領域からデータを読み出してサーバ装置100に返信する。また、メモリコントローラ211は、変換されたメモリプールアドレスが示す記憶領域にデータを書き込み、書き込み成否をサーバ装置100に返信する。同様に、メモリコントローラ211は、サーバ装置100aのサーバ物理アドレスを指定したアクセス要求を、拡張バス33およびバスインタフェース212を介してサーバ装置100aから受信する。すると、メモリコントローラ211は、仮想マシン管理テーブルを参照して、指定されたサーバ物理アドレスをメモリプールアドレスに変換し、メモリプールアドレスが示す記憶領域にアクセスする。
バスインタフェース212は、拡張バス33に接続される通信インタフェースである。バスインタフェース212は、例えば、ケーブルを接続するポートを有する。バスインタフェース212は、拡張バス33を介してサーバ装置100,100aから、サーバ物理アドレスを指定したアクセス要求を受信し、メモリコントローラ211に転送する。また、バスインタフェース212は、メモリコントローラ211から取得したアクセス結果を、拡張バス33を介してサーバ装置100,100aに送信する。
次に、仮想マシンに関するデータの配置やアドレス管理について説明する。
図5は、仮想マシンの形成例を示す図である。
サーバ装置100は、仮想マシンを制御する管理ソフトウェアとして、ハイパーバイザ120を実行している。サーバ装置100aは、仮想マシンを制御する管理ソフトウェアとして、ハイパーバイザ120aを実行している。ここでは、サーバ装置100のハイパーバイザ120上に、仮想マシン50が配置されているとする。また、サーバ装置100aのハイパーバイザ120a上に、仮想マシン50aが配置されているとする。
ハイパーバイザ120は、仮想マシン50に対して、サーバ装置100が有する物理的・ハードウェア的なリソースの一部を割り当てる。物理的・ハードウェア的なリソースには、例えば、CPU101の処理時間(CPUリソース)、RAM102の記憶領域(RAMリソース)、NIC114やHBA115の通信帯域(ネットワークリソース)などが含まれる。仮想マシン50上では、ゲストOS51が実行される。ゲストOS51は、ゲストOS51上で起動されたプロセスをスケジューリングし、ハイパーバイザ120から割り当てられたリソースを用いてこれらプロセスを実行させる。
同様に、ハイパーバイザ120aは、仮想マシン50aに対して、サーバ装置100aが有する物理的・ハードウェア的なリソースの一部を割り当てる。仮想マシン50a上では、ゲストOS51aが実行される。ゲストOS51aは、ゲストOS51a上で起動されたプロセスをスケジューリングし、ハイパーバイザ120aから割り当てられたリソースを用いてこれらプロセスを実行させる。
ここで、仮想マシン50をサーバ装置100からサーバ装置100aに移行することを考える。仮想マシン50の移行は、ライブマイグレーションとして行う。例えば、サーバ装置100,100aの負荷を監視する管理サーバ(図示せず)が、移行対象として仮想マシン50を選択し、移行先としてサーバ装置100aを選択して、ライブマイグレーションを行うことを決定する。その場合、管理サーバがハイパーバイザ120,120aの少なくとも一方に対して、ライブマイグレーションを指示する。
移行先のサーバ装置100aのハイパーバイザ120aは、仮想マシン50に対して、サーバ装置100aが有するリソースを割り当てる。サーバ装置100aで仮想マシン50を実行する準備が整うと、移行元のサーバ装置100のハイパーバイザ120は、仮想マシン50を停止させる。また、ハイパーバイザ120は、仮想マシン50に割り当てているCPUリソースの実行状態の情報(例えば、CPUコアのレジスタ値)を収集し、仮想マシン50に割り当てられたメモリプール装置200の記憶領域に待避させる。
すると、ハイパーバイザ120aは、仮想マシン50に割り当てられたメモリプール装置200の記憶領域をハイパーバイザ120から引き継ぐ。ハイパーバイザ120aは、当該記憶領域からCPU実行状態の情報を読み出して、仮想マシン50に割り当てたCPUリソースに対して設定する。ハイパーバイザ120aは、仮想マシン50に割り当てたCPUリソースを動作させることで、サーバ装置100における停止直前の仮想マシン50の状態から、仮想マシン50の処理を再開することができる。ここで、仮想マシン50のメモリイメージはメモリプール装置200に記憶されており、移行先のサーバ装置100aのハイパーバイザ120aがこの記憶領域を引き継ぐ。よって、サーバ装置100からサーバ装置100aにメモリイメージをコピーしなくてよい。
図6は、仮想マシンに関するデータの配置例を示す図である。
ストレージ装置40は、ディスクイメージ53,53aを記憶する。ディスクイメージ53は、仮想マシン50が補助記憶装置に記憶あると認識するデータの集合である。ディスクイメージ53aは、仮想マシン50aが補助記憶装置に記憶あると認識するデータの集合である。メモリプール装置200は、メモリイメージ52,52aおよび仮想マシン管理テーブル231を記憶する。メモリイメージ52は、仮想マシン50が主記憶装置に記憶あると認識するデータの集合である。メモリイメージ52aは、仮想マシン50aが主記憶装置に記憶あると認識するデータの集合である。仮想マシン管理テーブル231は、メモリプール装置200がアドレス変換に用いる変換テーブルである。
サーバ装置100は、ハイパーバイザプログラム124およびページテーブル131を記憶する。ハイパーバイザプログラム124は、例えば、HDD103に記憶されており、RAM102にロードされる。ページテーブル131は、例えば、RAM102上に生成される。サーバ装置100aは、ハイパーバイザプログラム124aおよびページテーブル131aを記憶する。ハイパーバイザプログラム124aは、例えば、サーバ装置100aのHDDに記憶されており、サーバ装置100aのRAMにロードされる。ページテーブル131aは、例えば、サーバ装置100aのRAM上に生成される。
ハイパーバイザプログラム124は、ハイパーバイザ120の処理を記載したプログラムである。ハイパーバイザプログラム124aは、ハイパーバイザ120aの処理を記載したプログラムである。ページテーブル131は、仮想マシン50がサーバ装置100上で実行されている間、サーバ装置100が保持する変換テーブルである。ページテーブル131は、仮想マシン50が認識する論理アドレスとサーバ装置100が有するRAM102のサーバ物理アドレスとを対応付ける。ページテーブル131aは、仮想マシン50aがサーバ装置100a上で実行されている間、サーバ装置100aが保持する変換テーブルである。ページテーブル131aは、仮想マシン50aが認識する論理アドレスとサーバ装置100aが有するRAMのサーバ物理アドレスとを対応付ける。
このように、仮想マシン50,50aに対応するディスクイメージ53,53aは、ストレージ装置40に集中して記憶される。また、仮想マシン50,50aに対応するメモリイメージ52,52aは、メモリプール装置200に集中して記憶される。このため、仮想マシン50,50aのマイグレーションが行われても、ディスクイメージ53,53aやメモリイメージ52,52aは移動させなくてよい。
一方、ハイパーバイザ120,120aは移行されない。このため、ハイパーバイザプログラム124はそれが実行されるサーバ装置100に記憶され、ハイパーバイザプログラム124aはそれが実行されるサーバ装置100aに記憶される。また、ページテーブル131,131aの内容は、仮想マシン50,50aが配置されるサーバ装置に依存する。このため、ページテーブル131はサーバ装置100で生成されて保持され、ページテーブル131aはサーバ装置100aで生成されて保持されている。
図7は、アドレス空間の対応付け例を示す図である。
ここでは、仮想マシン50が最初にサーバ装置100に配置され、サーバ装置100からサーバ装置100aに対してライブマイグレーションが行われる場合を考える。
メモリプール装置200のRAMリソースに対して、物理アドレス空間であるメモリプールアドレス空間213が定義されている。上記の通り、メモリプール装置200には、予め仮想マシン管理テーブル231が記憶されている。例えば、仮想マシン管理テーブル231は、メモリプールアドレス空間213の中の「0x0000000000」から始まる記憶領域、すなわち、RAMリソースの先頭に記憶される。サーバ装置100,100aは、仮想マシン管理テーブル231の位置を予め知っているものとする。
仮想マシン50が起動するとき、メモリプール装置200は、メモリプール装置200のRAMリソースの一部を仮想マシン50に割り当てる。メモリプールアドレス空間213に、メモリイメージ52を格納できる記憶領域が確保されることになる。例えば、メモリイメージ52は、メモリプールアドレス空間213の中の「0x0400000000」から始まる4Gバイトの記憶領域に記憶される。この記憶領域は、仮想マシン50のマイグレーションを行っても変更されない。
また、仮想マシン50aが起動するとき、メモリプール装置200は、メモリプール装置200のRAMリソースの一部を仮想マシン50aに割り当てる。メモリプールアドレス空間213に、メモリイメージ52aを格納できる記憶領域が確保されることになる。例えば、メモリイメージ52aは、メモリプールアドレス空間213の中の「0x0800000000」から始まる8Gバイトの記憶領域に記憶される。この記憶領域は、仮想マシン50aのマイグレーションを行っても変更されない。
以下では、仮想マシン50,50aのうち代表して仮想マシン50について説明する。仮想マシン50に対しては、仮想マシン50が認識する仮想的な主記憶装置のアドレス空間として、論理アドレス空間54が定義されている。論理アドレス空間54は、仮想マシン50のマイグレーションが行われても変更されない。例えば、論理アドレス空間54は、「0x400000」から始まる4Gバイトのアドレス空間である。仮想マシン50のゲストOS51は、メモリイメージ52にアクセスしようとする場合、論理アドレス空間54内の論理アドレスを指定したアクセス要求を発行する。
仮想マシン50がサーバ装置100に配置される場合、サーバ装置100は、サーバ装置100のRAMリソースの一部を仮想マシン50に割り当てる。これは、仮想マシン50に対する通常のリソース制御の中で行われる。サーバ装置100のRAMリソースに対しては、物理アドレス空間であるサーバ物理アドレス空間117が定義されている。よって、サーバ物理アドレス空間117に、メモリイメージ52に対応する記憶領域が確保されることになる。例えば、サーバ物理アドレス空間117の中の「0x1000000000」から始まる4Gバイトの記憶領域が確保される。ただし、メモリイメージ52は実際にはメモリプール装置200に記憶されるため、仮想マシン50に割り当てられたサーバ物理アドレス空間117の記憶領域は、使用されず空状態となる。
メモリプール装置200およびサーバ装置100に記憶領域が確保されると、サーバ装置100は、論理アドレス空間54とサーバ物理アドレス空間117とを対応付けたページテーブル131を生成し、サーバ装置100に保持する。また、サーバ装置100は、サーバ物理アドレス空間117と、メモリイメージ52が記憶される記憶領域のメモリプールアドレスとを対応付けて、仮想マシン管理テーブル231に登録する。
サーバ装置100上の仮想マシン50がメモリイメージ52にアクセスする場合、仮想マシン50は、論理アドレスを指定したアクセス要求を発行する。サーバ装置100は、サーバ装置100に記憶されたページテーブル131を参照して、論理アドレスをサーバ装置100のサーバ物理アドレスに変換する。サーバ装置100は、サーバ物理アドレスを指定したアクセス要求をメモリプール装置200に送信する。メモリプール装置200は、メモリプール装置200に記憶された仮想マシン管理テーブル231を参照して、サーバ物理アドレスをメモリプールアドレスに変換する。メモリプール装置200は、メモリプールアドレスが示す記憶領域にアクセスする。
その後、仮想マシン50がサーバ装置100aに移行する場合、サーバ装置100aは、サーバ装置100aのRAMリソースの一部を仮想マシン50に割り当てる。サーバ装置100aのRAMリソースに対しては、物理アドレス空間であるサーバ物理アドレス空間117aが定義されている。よって、サーバ物理アドレス空間117aに、メモリイメージ52に対応する記憶領域が確保されることになる。サーバ装置100aのサーバ物理アドレス空間117aは、サーバ装置100のサーバ物理アドレス空間117とは異なる可能性がある。例えば、サーバ物理アドレス空間117aの中の「0x2400000000」から始まる4Gバイトの記憶領域が確保される。仮想マシン50に割り当てられたサーバ物理アドレス空間117aの記憶領域は、使用されず空状態となる。
サーバ装置100aに記憶領域が確保されると、サーバ装置100aは、論理アドレス空間54とサーバ物理アドレス空間117aとを対応付けたページテーブル131aを生成し、サーバ装置100aに保持する。また、サーバ装置100aは、サーバ物理アドレス空間117aと、メモリイメージ52が記憶された記憶領域のメモリプールアドレスとが対応付けられるように、仮想マシン管理テーブル231を更新する。
サーバ装置100a上の仮想マシン50がメモリイメージ52にアクセスする場合、仮想マシン50は、論理アドレスを指定したアクセス要求を発行する。サーバ装置100aは、サーバ装置100aに記憶されたページテーブル131aを参照して、論理アドレスをサーバ装置100aのサーバ物理アドレスに変換する。サーバ装置100aは、サーバ物理アドレスを指定したアクセス要求をメモリプール装置200に送信する。メモリプール装置200は、更新された仮想マシン管理テーブル231を参照して、サーバ物理アドレスをメモリプールアドレスに変換する。メモリプール装置200は、メモリプールアドレスが示す記憶領域にアクセスする。
次に、サーバ装置100とメモリプール装置200の機能について説明する。
図8は、サーバ装置とメモリプール装置の機能例を示すブロック図である。
サーバ装置100は、ハイパーバイザ120およびページテーブル記憶部130を有する。ハイパーバイザ120は、仮想マシン起動部121、メモリアクセス部122および仮想マシン移行部123を有する。仮想マシン起動部121、メモリアクセス部122および仮想マシン移行部123は、例えば、プログラムモジュールとして実装できる。ページテーブル記憶部130は、上記のページテーブル131を記憶する。ページテーブル記憶部130は、例えば、RAM102に確保した記憶領域として実装できる。サーバ装置100aも、サーバ装置100と同様の機能を有する。
仮想マシン起動部121は、仮想マシンの起動コマンドが入力されると、指定された仮想マシンをサーバ装置100で起動する。起動コマンドは、例えば、ユーザ操作に応じて管理サーバ装置(図示せず)が、LAN31を介してサーバ装置100に入力する。
仮想マシンの起動にあたり、仮想マシン起動部121は、サーバ装置100のリソースを仮想マシンに割り当てる。また、仮想マシン起動部121は、メモリプール装置200にメモリ要求を送信して、メモリプール装置200に記憶領域を確保する。また、仮想マシン起動部121は、起動する仮想マシンに対応するページテーブルを生成し、ページテーブル記憶部130に格納する。また、仮想マシン起動部121は、メモリプール装置200が有する仮想マシン管理テーブル231に仮想マシンを登録する。そして、仮想マシン起動部121は、ストレージ装置40からメモリプール装置200にOSプログラムをロードし、当該仮想マシンのゲストOSを起動する。
メモリアクセス部122は、サーバ装置100で実行中の仮想マシンが発行したアクセス要求を検出する。検出するアクセス要求には、発行元の仮想マシンが使用する論理アドレス空間の論理アドレスが含まれる。メモリアクセス部122は、ページテーブル記憶部130に記憶された発行元の仮想マシンに対応するページテーブルを参照して、指定された論理アドレスをサーバ装置100のサーバ物理アドレスに変換する。メモリアクセス部122は、RAM102にアクセスする代わりに、サーバ物理アドレスを含むアクセス要求を、拡張バス33を介してメモリプール装置200に送信する。
仮想マシン移行部123は、仮想マシンのライブマイグレーションを制御する。ライブマイグレーションの開始は、例えば、管理サーバ装置(図示せず)がLAN31を介してサーバ装置100に指示する。その際、例えば、移行元のサーバ装置、移行先のサーバ装置、移行する仮想マシンなどが指定される。
サーバ装置100が移行元である場合、仮想マシン移行部123は、移行する仮想マシンの論理アドレス空間のサイズを、移行先のサーバ装置に対して通知する。また、仮想マシン移行部123は、移行先のサーバ装置からの要求に応じて、移行する仮想マシンに対応するページテーブルをページテーブル記憶部130から読み出して提供する。また、仮想マシン移行部123は、移行先のサーバ装置から準備完了の通知を受け取ると、移行する仮想マシンをサーバ装置100上で停止させる。仮想マシンの停止では、ゲストOSのシャットダウン手続きは行わなくてよく、CPUリソースの使用を即時に禁止すればよい。仮想マシン移行部123は、停止した仮想マシンのリソースを解放する。
サーバ装置100が移行先である場合、仮想マシン移行部123は、サーバ装置100のリソースを仮想マシンに割り当てる。また、仮想マシン移行部123は、移行元のサーバ装置から論理アドレス空間のサイズの通知を受け付け、通信されたサイズに応じたページテーブルを生成してページテーブル記憶部130に格納する。また、仮想マシン移行部123は、移行元のサーバ装置に要求して、移行する仮想マシンに対応する旧ページテーブルを取得する。仮想マシン移行部123は、取得した旧ページテーブルを参照して、ページテーブル記憶部130に格納したページテーブルを更新する。
以上の準備が完了すると、仮想マシン移行部123は、移行元のサーバ装置に準備完了を通知し、メモリプール装置200に記憶された仮想マシン管理テーブル231を更新する。そして、仮想マシン移行部123は、メモリプール装置200に記憶されたメモリイメージに基づいて、停止された仮想マシンの処理を再開する。
メモリプール装置200は、領域割当部221、アクセス実行部222および管理テーブル記憶部230を有する。領域割当部221およびアクセス実行部222は、例えば、メモリコントローラ211内の回路モジュールとして実装できる。管理テーブル記憶部230は、上記の仮想マシン管理テーブル231を記憶する。管理テーブル記憶部230は、例えば、RAM201に確保した記憶領域として実装できる。
領域割当部221は、サイズを指定したメモリ要求を、拡張バス33を介してサーバ装置100から受信する。すると、領域割当部221は、管理テーブル記憶部230に記憶された仮想マシン管理テーブル231を参照して、メモリプール装置200が有するRAMの記憶領域(RAMリソース)の中から、指定されたサイズの記憶領域であって何れの仮想マシンにもまだ割り当てられていない記憶領域を選択する。選択する記憶領域は、好ましくは、細分化されていない一続きの記憶領域とする。領域割当部221は、選択した記憶領域の先頭のメモリプールアドレスをサーバ装置100に通知する。同様に、領域割当部221は、メモリ要求をサーバ装置100aから受信すると、未割り当ての記憶領域を選択し、メモリプールアドレスをサーバ装置100aに通知する。
アクセス実行部222は、サーバ物理アドレスを指定したアクセス要求を、拡張バス33を介してサーバ装置100から受信する。すると、アクセス実行部222は、管理テーブル記憶部230に記憶された仮想マシン管理テーブル231を参照して、サーバ物理アドレスをメモリプールアドレスに変換する。そして、アクセス実行部222は、メモリプールアドレスが示す記憶領域にアクセスし、アクセス結果(読み出したデータまたは書き込み成否)をサーバ装置100に返信する。同様に、アクセス実行部222は、アクセス要求をサーバ装置100aから受信すると、サーバ物理アドレスをメモリプールアドレスに変換して記憶領域にアクセスし、アクセス結果をサーバ装置100aに返信する。
図9は、ページテーブルの例を示す図である。
ページテーブル131は、ページテーブル記憶部130に記憶されている。ページテーブル131は、サーバ物理アドレス、ロードフラグ、アクセス許可およびグローバルフラグの項目を有する。これらの項目を含む複数のエントリが、ページテーブル131に登録されている。複数のエントリは、仮想マシン50の論理アドレスの順に並べられており、論理アドレスによってインデックスされる。すなわち、1つの論理アドレスから、ページテーブル131の1つのエントリが検索される。
サーバ物理アドレスの項目には、仮想マシン50の論理アドレスに対応付けられたサーバ装置100のサーバ物理アドレスが登録される。例えば、論理アドレス「0x408000」に対して、サーバ装置100のサーバ物理アドレス「0x1000008000」が対応付けられる。ロードフラグは、論理アドレスが示すデータが、補助記憶装置(ディスクイメージ)から主記憶装置(メモリイメージ)にロード済みであるか否かを示す。ロードフラグが「1」であることは、データがロード済みであることを示す。ロードフラグが「0」であることは、データがロードされていないことを示す。
アクセス許可の項目には、論理アドレスが示す記憶領域に対して許可されているアクセスの種別が登録される。「R」は、データの読み出しが許可されていることを示す。「W」は、データの書き込みが許可されていることを示す。グローバルフラグは、論理アドレスが示すデータが、ローカルメモリ(サーバ装置100のRAM102など)と外部メモリ(メモリプール装置200のRAM201など)の何れに記憶されているかを示す。グローバルフラグが「1」であることは、外部メモリに記憶されていることを示す。グローバルフラグが「0」であることは、ローカルメモリに記憶されていることを示す。
図10は、仮想マシン管理テーブルの例を示す図である。
仮想マシン管理テーブル231は、管理テーブル記憶部230に記憶されている。仮想マシン管理テーブル231は、仮想マシンID、オーナーID、サーバ物理アドレス、メモリプールアドレス、サイズおよびページテーブルアドレスの項目を有する。
仮想マシンIDは、仮想マシンを識別する識別情報である。図10の例では、仮想マシン50の仮想マシンIDが「VM1」であり、仮想マシン50aの仮想マシンIDが「VM2」である。オーナーIDは、仮想マシンを管理しているハイパーバイザを識別する識別情報である。図10の例では、ハイパーバイザ120のオーナーIDが「HV1」であり、ハイパーバイザ120aのオーナーIDが「HV2」である。
サーバ物理アドレスの項目には、ハイパーバイザが仮想マシンに対して割り当てたローカルメモリの記憶領域の先頭アドレスが登録される。メモリプールアドレスの項目には、メモリプール装置200が仮想マシンに対して割り当てた記憶領域の先頭アドレスが登録される。サイズの項目には、仮想マシンが使用する論理アドレス空間の大きさが登録される。ページテーブルアドレスの項目には、仮想マシンに対応するページテーブルが記憶されているローカルメモリの記憶領域の先頭アドレスが登録される。ページテーブルアドレスは、仮想マシンが配置されたサーバ装置のサーバ物理アドレスを用いて表される。
次に、サーバ装置100が実行する処理について説明する。サーバ装置100aも、サーバ装置100と同様の処理を実行し得る。
図11は、仮想マシン起動の手順例を示すフローチャートである。
ここでは、仮想マシン50がサーバ装置100で起動される場合を考える。
(S10)仮想マシン起動部121は、サーバ装置100が有するローカルメモリ(RAM102)の中から、仮想マシン50に割り当てる記憶領域を選択する。選択する記憶領域のサイズは、原則として、仮想マシン50が使用する論理アドレス空間54のサイズと一致させる。論理アドレス空間54のサイズは、例えば、ストレージ装置40に記憶された設定情報や、管理サーバ装置からサーバ装置100に通知される情報に含まれる。
(S11)仮想マシン起動部121は、仮想マシン50に対応するページテーブル131を生成し、ページテーブル記憶部130に格納する。ページテーブル131のサイズは、論理アドレス空間54のサイズによって決まる。ページテーブル131に登録されるサーバ物理アドレスは、ステップS10で選択されたローカルメモリの記憶領域に基づいて決定される。ロードフラグの初期値は「0」とする。アクセス許可の初期値は、例えば、「RW」(読み出しと書き込みを許可)とする。グローバルフラグは「1」とする。
(S12)仮想マシン起動部121は、論理アドレス空間54のサイズを指定したメモリ要求を、拡張バス33を介してメモリプール装置200に送信する。
(S13)領域割当部221は、メモリプール装置200が有する未使用のRAMリソース(メモリプール)の中から、原則として、指定されたサイズの記憶領域を選択する。領域割当部221は、好ましくは、細分化されていない一続きの記憶領域を選択する。
(S14)領域割当部221は、ステップS13で選択した記憶領域の先頭を示すメモリプールアドレスを、拡張バス33を介してサーバ装置100に通知する。メモリプールアドレスの通知は、割り当て成功を示す応答としての意味をもつ。
(S15)仮想マシン起動部121は、拡張バス33を介してメモリプール装置200から仮想マシン管理テーブル231を取得する。メモリプール装置200からの仮想マシン管理テーブル231の読み出しは、例えば、メモリイメージ52へのアクセスに準じた方法で行う。メモリイメージ52へのアクセスについては後述する。なお、仮想マシン管理テーブル231を取得する場合、仮想マシン起動部121は、例えば、仮想マシン管理テーブル231が記憶された所定の記憶領域を示す所定のアドレスを指定する。所定のアドレスは、予めハイパーバイザ120が知っているものとする。
(S16)仮想マシン起動部121は、ステップS15で取得した仮想マシン管理テーブル231に仮想マシン50の情報を登録する。すなわち、仮想マシン起動部121は、仮想マシン50の仮想マシンIDとハイパーバイザ120のオーナーIDを、仮想マシン管理テーブル231に登録する。また、仮想マシン起動部121は、ステップS10で選択した記憶領域の先頭のサーバ物理アドレスと、ステップS14で通知されたメモリプールアドレスを、仮想マシン管理テーブル231に登録する。また、仮想マシン起動部121は、論理アドレス空間54のサイズと、ステップS11で生成されたページテーブル131の先頭のサーバ物理アドレスを、仮想マシン管理テーブル231に登録する。
そして、仮想マシン起動部121は、更新した仮想マシン管理テーブル231を、拡張バス33を介してメモリプール装置200に書き戻す。メモリプール装置200への仮想マシン管理テーブル231の書き込みは、例えば、メモリイメージ52へのアクセスに準じた方法で行う。仮想マシン起動部121は、例えば、仮想マシン管理テーブル231が記憶された所定の記憶領域を示す所定のアドレスを指定する。
(S17)仮想マシン起動部121は、仮想マシン50の起動を開始する。例えば、サーバ装置100は、SAN32を介してストレージ装置40からゲストOS51のプログラムを読み出す。そして、サーバ装置100は、ゲストOS51のプログラムを、メモリイメージ52のデータとして、ステップS13で選択された記憶領域に拡張バス33を介してロードする。サーバ装置100は、ロードされたゲストOS51のプログラムの実行を開始させる。メモリイメージ52へのアクセスについては後述する。
図12は、メモリアクセスの手順例を示すフローチャートである。
ここでは、仮想マシン50がサーバ装置100上で実行されている場合を考える。
(S20)メモリアクセス部122は、仮想マシン50が発行したアクセス要求を取得する。このアクセス要求には、アクセス先の指定として、仮想マシン50が使用する論理アドレス空間54に属する何れかの論理アドレスが含まれている。
(S21)メモリアクセス部122は、ページテーブル記憶部130から、仮想マシン50に対応するページテーブル131を選択する。
(S22)メモリアクセス部122は、ステップS21で選択したページテーブル131から、アクセス要求で指定された論理アドレスに対応付けられているサーバ物理アドレスとグローバルフラグとを検索する。
(S23)メモリアクセス部122は、ステップS22で検索されたグローバルフラグが「1」であるか、すなわち、指定された論理アドレスに対応するデータが外部メモリに存在するか判断する。グローバルフラグが「1」である場合、ステップS24に処理が進む。グローバルフラグが「0」である場合、すなわち、論理アドレスに対応するデータがローカルメモリに存在する場合、ステップS27に処理が進む。
(S24)メモリアクセス部122は、拡張バス33を介してアクセス要求をメモリプール装置200に送信する。このアクセス要求には、アクセス先の指定として、ステップS22で検索されたサーバ物理アドレスが含まれる。すなわち、メモリアクセス部122は、ページテーブル131を用いて、仮想マシン50が指定した論理アドレスをサーバ装置100のサーバ物理アドレスに変換していると言うことができる。また、このアクセス要求には、仮想マシン50の仮想マシンIDが含まれる。
(S25)アクセス実行部222は、管理テーブル記憶部230に記憶された仮想マシン管理テーブル231から、アクセス要求に含まれる仮想マシンIDに対応付けられている先頭のサーバ物理アドレスと先頭のメモリプールアドレスを検索する。アクセス実行部222は、アクセス要求で指定されたサーバ物理アドレスと、検索された先頭のサーバ物理アドレスと、検索された先頭のメモリプールアドレスとから、アクセス先のメモリプールアドレスを算出する。例えば、先頭のサーバ物理アドレスが「0x1000000000」、先頭のメモリプールアドレスが「0x0400000000」、アクセス先のサーバ物理アドレスが「0x1000008000」である場合、アクセス先のメモリプールアドレスは「0x0x0400008000」と算出される。
(S26)アクセス実行部222は、ステップS25で算出したメモリプールアドレスが示す記憶領域にアクセスし、アクセス結果を拡張バス33を介してサーバ装置100に返信する。例えば、アクセス要求が読み出し要求である場合、アクセス実行部222は、メモリプールアドレスが示す記憶領域からデータを読み出してサーバ装置100に送信する。アクセス要求が書き込み要求である場合、アクセス実行部222は、メモリプールアドレスが示す記憶領域にデータを書き込み、書き込み成否をサーバ装置100に通知する。そして、ステップS28に処理が進む。
(S27)メモリアクセス部122は、ステップS22で検索されたサーバ物理アドレスに従ってローカルメモリ(RAM102)にアクセスする。
(S28)メモリアクセス部122は、ステップS26またはステップS27のアクセス結果(読み出したデータまたは書き込みの成否)を仮想マシン50に通知する。
図13は、仮想マシン移行の手順例を示すフローチャートである。
ここでは、サーバ装置100で実行中の仮想マシン50を、ライブマイグレーションによってサーバ装置100aに移行する場合を考える。
(S30)仮想マシン移行部123は、仮想マシン50が使用する論理アドレス空間54のサイズを、LAN31を介して移行先のサーバ装置100aに通知する。なお、移行する仮想マシンや移行先のサーバ装置は、例えば、ライブマイグレーションを決定した管理サーバ装置などからサーバ装置100に通知されている。
(S31)サーバ装置100aのハイパーバイザ120aは、サーバ装置100aが有するローカルメモリの中から、仮想マシン50に割り当てる記憶領域を選択する。選択する記憶領域のサイズは、原則として、通知されたサイズと一致させる。
(S32)ハイパーバイザ120aは、仮想マシン50に対応するページテーブル131aを生成し、サーバ装置100a上に保持する。ページテーブル131aは、サーバ装置100が有するページテーブル131に相当するものである。ページテーブル131aのサイズは、通知された論理アドレス空間54のサイズによって決まる。ページテーブル131aに登録されるサーバ物理アドレスは、ステップS31で選択されたローカルメモリの記憶領域に基づいて決定される。ただし、ページテーブル131aのロードフラグ、アクセス許可およびグローバルフラグは、この段階では空(未定義)にしておく。
(S33)ハイパーバイザ120aは、拡張バス33を介してメモリプール装置200から仮想マシン管理テーブル231を取得する。
(S34)ハイパーバイザ120aは、LAN31を介して移行元のサーバ装置100に、旧ページテーブル(ページテーブル131)を要求する。このとき、ハイパーバイザ120aは、ステップS33で取得した仮想マシン管理テーブル231から、仮想マシン50に対応付けられているページテーブルアドレスを検索する。このページテーブルアドレスは、ページテーブル131の位置を示すサーバ装置100のサーバ物理アドレスである。ハイパーバイザ120aは、サーバ装置100にページテーブル131を要求するとき、検索されたページテーブルアドレスを指定する。
(S35)仮想マシン移行部123は、サーバ装置100aから指定されたページテーブルアドレスに基づいて、ページテーブル記憶部130からページテーブル131を取得し、LAN31を介してサーバ装置100aに送信する。
(S36)ハイパーバイザ120aは、サーバ装置100から取得したページテーブル131に基づいて、ステップS32で生成したページテーブル131aを更新する。すなわち、ハイパーバイザ120aは、ページテーブル131aのロードフラグ、アクセス許可およびグローバルフラグの項目に、ページテーブル131の値をコピーする。
(S37)ハイパーバイザ120aは、ステップS36のページテーブル131aの更新が正常終了したか判断する。更新が正常終了した場合はステップS38に処理が進み、正常終了しなかった場合はライブマイグレーションが停止する。
(S38)ハイパーバイザ120aは、ページテーブル131aの準備が終わると、LAN31を介してサーバ装置100に準備完了を通知する。
(S39)仮想マシン移行部123は、サーバ装置100で実行されている仮想マシン50を強制停止させる。このとき、仮想マシン50は、ゲストOSのシャットダウンなどの正規の終了手続きを行わなくてよい。例えば、仮想マシン移行部123は、仮想マシン50によるCPUリソースの使用を禁止して、仮想マシン50の処理の進行を止める。なお、仮想マシン移行部123は、仮想マシン50に割り当てられたCPUコアから実行状態の情報(レジスタの値など)を抽出し、メモリプール装置200に記憶された仮想マシン50のメモリイメージ52に退避するようにしてもよい。
(S40)ハイパーバイザ120aは、ステップS33で取得した仮想マシン管理テーブル231に登録されている仮想マシン50の情報を更新する。すなわち、ハイパーバイザ120aは、仮想マシン50に対応付けられたオーナーIDを、ハイパーバイザ120aの識別情報に更新する。また、ハイパーバイザ120aは、仮想マシン50に対応付けられたサーバ物理アドレスを、ステップS31で選択したサーバ装置100aの記憶領域の先頭のサーバ物理アドレスに更新する。また、ハイパーバイザ120aは、仮想マシン50に対応付けられたページテーブルアドレスを、ステップS32で生成されたページテーブル131aの先頭のサーバ物理アドレスに更新する。
そして、ハイパーバイザ120aは、更新した仮想マシン管理テーブル231を、拡張バス33を介してメモリプール装置200に書き戻す。
(S41)ハイパーバイザ120aは、仮想マシン50の処理を再開させる。すなわち、サーバ装置100aは、拡張バス33を介してメモリプール装置200からメモリイメージ52のデータを読み出し、サーバ装置100aのCPUを用いて仮想マシン50を実行する。このとき、サーバ装置100は、メモリイメージ52に退避された実行状態の情報を、サーバ装置100aが有するCPUコアに設定し(例えば、レジスタに書き込み)、サーバ装置100のCPUコアの実行状態を引き継ぐようにしてもよい。
第2の実施の形態の情報処理システムによれば、サーバ装置100,100aに接続されたメモリプール装置200に、メモリイメージ52と仮想マシン管理テーブル231が記憶される。サーバ装置100で仮想マシン50が実行されているときは、ページテーブル131および仮想マシン管理テーブル231に基づいて、サーバ装置100からメモリイメージ52にアクセスされる。仮想マシン50を移行する場合、サーバ装置100からサーバ装置100aに論理アドレス空間54のサイズが通知され、サーバ装置100aでページテーブル131aが生成される。そして、サーバ装置100で仮想マシン50が停止され、メモリプール装置200の仮想マシン管理テーブル231が更新され、サーバ装置100aで仮想マシン50の実行が再開される。サーバ装置100aで仮想マシン50が実行されているときは、ページテーブル131aおよび更新された仮想マシン管理テーブル231に基づいて、サーバ装置100aからメモリイメージ52にアクセスされる。
これにより、サーバ装置100からサーバ装置100aにメモリイメージ52をコピーしなくても仮想マシン50のライブマイグレーションを行うことができ、ライブマイグレーションの所要時間を短縮できる。特に、仮想マシン50の論理アドレス空間54が大きくなっても、LAN31上の通信時間を抑制することができる。
例えば、アドレス長が64ビット、メモリイメージ52のサイズが8Gバイト、データアクセス単位であるページのサイズが256Mバイト、LAN31の速度が10Gbpsであるとする。また、ライブマイグレーションのポーズ期間、すなわち、移行元のサーバ装置で仮想マシン50を停止してから、移行先のサーバ装置で仮想マシン50を再開させるまでの所要時間が、0.1秒であるとする。この場合、8Gバイトのメモリイメージ52をLAN31を介して転送しようとすると、ライブマイグレーションの所要時間は、8Gバイト/10Gbps+0.1秒=6.5秒となる。
一方、上記のようにメモリプール装置200を利用すると、メモリイメージ52を転送しなくてよく、その代わりにページテーブル131を転送することになる。よって、ライブマイグレーションの所要時間は、8Gバイト/256Mバイト×64ビット/10Gbps+0.1秒=約0.1秒となる。すなわち、上記の試算によれば、ライブマイグレーションの所要時間を60分の1以下に短縮することができる。
また、仮想マシン50の論理アドレスが、ページテーブル131と仮想マシン管理テーブル231を二段階で使用して、メモリプール装置200の物理アドレスに変換される。ライブマイグレーションの際には、移行先のサーバ装置100aに合わせてページテーブル131aが生成され、仮想マシン管理テーブル231が更新される。よって、異なるサーバ装置間や異なるハイパーバイザ間でも、メモリイメージ52をコピーせずに仮想マシン50を円滑に移行することができる。また、メモリプール装置200へのアクセスにサーバ装置100,100aの物理アドレスを用いることで、サーバ装置100,100aが有するローカルメモリへのアクセスとの整合性を取ることが容易となる。このため、既存のメモリアーキテクチャを利用してメモリプール装置200にアクセスできる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。第2の実施の形態との違いを中心に説明し、第2の実施の形態と同様の事項については説明を省略することがある。第3の実施の形態の情報処理システムは、メモリプール装置を利用する代わりに、SMP(Symmetric Multiprocessing)およびNUMA(Non-Uniform Memory Access)の仕組みを利用する。第3の実施の形態では、SMPおよびNUMAの仕組みを利用して、複数のサーバ装置が有するRAMリソースを仮想的に統合しプール領域を作成する。
図14は、第3の実施の形態の情報処理システムを示す図である。
第3の実施の形態の情報処理システムは、LAN31、SAN32、拡張バス33、ストレージ装置40およびサーバ装置100b,100cを有する。サーバ装置100b,100cは、LAN31、SAN32および拡張バス33に接続されている。ストレージ装置40は、SAN32に接続されている。
サーバ装置100bは、LAN31を介してサーバ装置100cと通信することができる。また、サーバ装置100b,100cは、SAN32を介してストレージ装置40にアクセスすることができる。また、サーバ装置100bは、拡張バス33を介してサーバ装置100cのRAMにアクセスすることができ、サーバ装置100cは、拡張バス33を介してサーバ装置100bのRAMにアクセスすることができる。
図15は、仮想マシンに関するデータの他の配置例を示す図である。
ストレージ装置40には、第2の実施の形態と同様に、仮想マシン50のディスクイメージ53と仮想マシン50aのディスクイメージ53aとが記憶されている。
サーバ装置100bが有するRAMには、サーバ装置100bで実行されるハイパーバイザプログラム124bと、仮想マシン50に対応するページテーブル131が記憶される。更に、サーバ装置100bが有するRAMには、仮想マシン50のメモリイメージ52と、仮想マシン管理テーブル231とが記憶される。サーバ装置100cが有するRAMには、サーバ装置100cで実行されるハイパーバイザプログラム124cと、仮想マシン50aに対応するページテーブル131aが記憶される。更に、サーバ装置100cが有するRAMには、仮想マシン50aのメモリイメージ52aが記憶される。
ここで、サーバ装置100bが有するRAMの記憶領域は、個別領域141と、プール領域241に含まれる領域とに分割されている。また、サーバ装置100cが有するRAMの記憶領域は、個別領域141aと、プール領域241に含まれる領域とに分割されている。ハイパーバイザプログラム124bおよびページテーブル131は、個別領域141に記憶される。ハイパーバイザプログラム124cおよびページテーブル131aは、個別領域141aに記憶される。メモリイメージ52、メモリイメージ52aおよび仮想マシン管理テーブル231は、プール領域241に記憶される。
個別領域141は、サーバ装置100bがアクセスしサーバ装置100cはアクセスしない記憶領域である。個別領域141は、第2の実施の形態におけるサーバ装置100のローカルメモリに相当する。また、個別領域141aは、サーバ装置100cがアクセスしサーバ装置100bはアクセスしない記憶領域である。個別領域141aは、第2の実施の形態におけるサーバ装置100aのローカルメモリに相当する。一方、プール領域241は、SMPおよびNUMAの仕組みを利用してサーバ装置100b,100cが共有する記憶領域である。プール領域241は、第2の実施の形態におけるメモリプール装置200が有するRAMの記憶領域に相当する。
個別領域141は、サーバ装置100bの個別のサーバ物理アドレスによってアクセスされる。個別領域141aは、サーバ装置100cの個別のサーバ物理アドレスによってアクセスされる。一方、プール領域241は、サーバ装置100b,100cに共通の物理アドレスによってアクセスされる。この物理アドレス(プール領域アドレス)は、第2の実施の形態におけるメモリプール装置200のメモリプールアドレスに相当する。
第3の実施の形態における仮想マシン起動、メモリアクセスおよび仮想マシン移行の流れは、図11〜13に示した第2の実施の形態のものと同様になる。ただし、第3の実施の形態では、複数のサーバ装置の何れか1つが、プール領域241に対するアクセス要求を受け付ける受付機能を有する。この受付機能は、第2の実施の形態におけるメモリコントローラ211の機能に相当する。図15の例では、サーバ装置100bが受付機能を有する。よって、仮想マシン管理テーブル231はサーバ装置100bに記憶される。
他のサーバ装置は、受付機能を有するサーバ装置を予め知っているものとする。他のサーバ装置は、プール領域241にアクセスしようとする場合、拡張バス33を介して、受付機能を有するサーバ装置100bにアクセス要求を送信する。サーバ装置100bは、仮想マシン管理テーブル231からプール領域アドレスを検索し、SMPおよびNUMAの仕組みに基づいて、そのプール領域アドレスが割り当てられているサーバ装置にアクセス要求を転送する。転送先のサーバ装置は、アクセス結果を、受付機能を有するサーバ装置100bを介さずに、アクセス要求を発行したサーバ装置に直接送信する。
ここで、図11の仮想マシン起動の手順を第3の実施の形態に当てはめると、サーバ装置100bは個別領域141から記憶領域を選択し、論理アドレスと選択した記憶領域のサーバ物理アドレスとを対応付けたページテーブル131を生成する。サーバ装置100bは、拡張バス33を介して、所定のサーバ装置(サーバ装置100b自身)にメモリ要求を送信する。所定のサーバ装置は、プール領域241から記憶領域(好ましくは、仮想マシン50が実行されるサーバ装置100bの記憶領域)を選択する。サーバ装置100bは、仮想マシン管理テーブル231に、個別領域141のサーバ物理アドレスとプール領域241のプール領域アドレスと対応付けて登録する。
また、図12のメモリアクセスの手順を第3の実施の形態に当てはめると、サーバ装置100bはページテーブル131を用いて、仮想マシン50の論理アドレスを個別領域141のサーバ物理アドレスに変換する。サーバ装置100bは、サーバ物理アドレスを指定したアクセス要求を、拡張バス33を介して所定のサーバ装置(サーバ装置100b自身)に送信する。所定のサーバ装置は、仮想マシン管理テーブル231を用いて、サーバ物理アドレスをプール領域241のプール領域アドレスに変換する。所定のサーバ装置は、拡張バス33を介して、そのプール領域アドレスを使用するサーバ装置(サーバ装置100b)にアクセス要求を転送する。転送先のサーバ装置は、メモリイメージ52にアクセスし、アクセス結果を拡張バス33を介してサーバ装置100bに送信する。
また、図13の仮想マシン移行の手順を第3の実施の形態に当てはめると、サーバ装置100bはサーバ装置100cに論理アドレス空間54のサイズを通知する。サーバ装置100bは、個別領域141aから記憶領域を選択し、論理アドレスと選択した記憶領域のサーバ物理アドレスとを対応付けたページテーブル131aを生成する。サーバ装置100bは、ページテーブル131を、LAN31を介してサーバ装置100cに送信する。サーバ装置100cは、ページテーブル131aにページテーブル131の内容を反映させる。サーバ装置100bは、仮想マシン50を停止させる。サーバ装置100cは、拡張バス33を介して仮想マシン管理テーブル231を更新して、プール領域241のプール領域アドレスに個別領域141aのサーバ物理アドレスを対応付ける。
ライブマイグレーションが完了した後は、サーバ装置100cはページテーブル131aを用いて、仮想マシン50の論理アドレスを個別領域141aのサーバ物理アドレスに変換する。サーバ装置100cは、サーバ物理アドレスを指定したアクセス要求を、拡張バス33を介して所定のサーバ装置(サーバ装置100b)に送信する。所定のサーバ装置は、仮想マシン管理テーブル231を用いて、サーバ物理アドレスをプール領域241のプール領域アドレスに変換する。所定のサーバ装置は、拡張バス33を介して、そのプール領域アドレスを使用するサーバ装置(サーバ装置100b)にアクセス要求を転送する。転送先のサーバ装置は、メモリイメージ52にアクセスし、アクセス結果を拡張バス33を介してサーバ装置100cに送信する。
第3の実施の形態の情報処理装置によれば、第2の実施の形態と同様の効果が得られる。更に、第3の実施の形態では、メモリプール装置200を別途用意しなくてもよい。
なお、前述のように、第1の実施の形態の情報処理は、情報処理装置10,10aにプログラムを実行させることで実現できる。第2の実施の形態の情報処理は、サーバ装置100,100aにプログラムを実行させることで実現できる。第3の実施の形態の情報処理は、サーバ装置100b,100cにプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体109)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からHDDなどの他の記録媒体(例えば、HDD103)にプログラムをコピーして実行してもよい。
3 仮想マシン
10,10a 情報処理装置
11,11a 対応情報
12 サイズ情報
20 メモリ装置
21 データ
22 管理情報

Claims (6)

  1. 仮想マシンを実行する第1の情報処理装置と、
    前記第1の情報処理装置と通信可能な第2の情報処理装置と、
    前記第1の情報処理装置および前記第2の情報処理装置に接続され、前記仮想マシンのデータと、前記第1の情報処理装置に応じた情報と前記データが記憶された記憶領域とを対応付けた管理情報とを記憶するメモリ装置と、
    を有し、
    前記第1の情報処理装置は、前記仮想マシンが使用するアドレスと前記第1の情報処理装置に応じた情報とを対応付けた第1の対応情報に基づいて、前記メモリ装置にアクセスして前記仮想マシンを実行し、
    前記仮想マシンを前記第2の情報処理装置に実行させる場合、前記第1の情報処理装置は、前記記憶領域の大きさを示すサイズ情報を前記第2の情報処理装置に通知し、前記仮想マシンを停止し、
    前記第2の情報処理装置は、前記サイズ情報に基づいて、前記アドレスと前記第2の情報処理装置に応じた情報とを対応付けた第2の対応情報を生成し、前記管理情報に含まれる前記第1の情報処理装置に応じた情報を前記第2の情報処理装置に応じた情報に更新し、前記第2の対応情報に基づいて、前記メモリ装置にアクセスして前記仮想マシンを実行する、
    情報処理システム。
  2. 前記第1の情報処理装置に応じた情報は、前記第1の情報処理装置が有する第1のメモリの第1の領域を示す第1の他のアドレスを含み、
    前記第2の情報処理装置に応じた情報は、前記第2の情報処理装置が有する第2のメモリの第2の領域を示す第2の他のアドレスを含む、
    請求項1記載の情報処理システム。
  3. 前記第2の情報処理装置は、前記仮想マシンを実行する場合、前記第2のメモリに前記第2の領域を確保し、前記仮想マシンから前記アドレスが指定されると、前記第2の領域にアクセスする代わりに前記メモリ装置にアクセスする、
    請求項2記載の情報処理システム。
  4. 前記メモリ装置は、前記第2の情報処理装置に応じた情報を含むアクセスを前記第2の情報処理装置から受け付け、更新された前記管理情報に基づいて、前記第2の情報処理装置に応じた情報から前記記憶領域を判定する制御部を有する、
    請求項1記載の情報処理システム。
  5. 前記メモリ装置は、前記第1の情報処理装置が有する第1のメモリの一部領域と前記第2の情報処理装置が有する第2のメモリの一部領域とを、前記データの記憶に使用可能な共有領域として管理する、
    請求項1記載の情報処理システム。
  6. 第1の情報処理装置と、前記第1の情報処理装置と通信可能な第2の情報処理装置と、前記第1の情報処理装置および前記第2の情報処理装置に接続されたメモリ装置とを有する情報処理システムの制御方法であって、
    前記メモリ装置に、仮想マシンのデータと、前記第1の情報処理装置に応じた情報と前記データが記憶された記憶領域とを対応付けた管理情報とを記憶させ、
    前記仮想マシンが使用するアドレスと前記第1の情報処理装置に応じた情報とを対応付けた第1の対応情報に基づいて、前記第1の情報処理装置から前記メモリ装置にアクセスし、前記第1の情報処理装置上で前記仮想マシンを実行し、
    前記仮想マシンを前記第2の情報処理装置に実行させる場合、前記第1の情報処理装置から前記第2の情報処理装置に、前記記憶領域の大きさを示すサイズ情報を通知し、
    前記サイズ情報に基づいて、前記第2の情報処理装置において、前記アドレスと前記第2の情報処理装置に応じた情報とを対応付けた第2の対応情報を生成し、
    前記第1の情報処理装置上の前記仮想マシンを停止させ、
    前記管理情報に含まれる前記第1の情報処理装置に応じた情報を前記第2の情報処理装置に応じた情報に更新し、
    前記第2の対応情報に基づいて、前記第2の情報処理装置から前記メモリ装置にアクセスし、前記第2の情報処理装置上で前記仮想マシンを実行する、
    情報処理システムの制御方法。
JP2015046273A 2015-03-09 2015-03-09 情報処理システムおよび情報処理システムの制御方法 Pending JP2016167143A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015046273A JP2016167143A (ja) 2015-03-09 2015-03-09 情報処理システムおよび情報処理システムの制御方法
US15/006,546 US20160266923A1 (en) 2015-03-09 2016-01-26 Information processing system and method for controlling information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015046273A JP2016167143A (ja) 2015-03-09 2015-03-09 情報処理システムおよび情報処理システムの制御方法

Publications (1)

Publication Number Publication Date
JP2016167143A true JP2016167143A (ja) 2016-09-15

Family

ID=56887677

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015046273A Pending JP2016167143A (ja) 2015-03-09 2015-03-09 情報処理システムおよび情報処理システムの制御方法

Country Status (2)

Country Link
US (1) US20160266923A1 (ja)
JP (1) JP2016167143A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019185130A (ja) * 2018-04-02 2019-10-24 株式会社デンソー 電子制御装置および電子制御システム

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6056856B2 (ja) * 2012-06-25 2017-01-11 富士通株式会社 ストレージ制御装置、情報処理装置、ストレージ制御プログラム、及びストレージ制御方法
US10509733B2 (en) 2017-03-24 2019-12-17 Red Hat, Inc. Kernel same-page merging for encrypted memory
CN107168769B (zh) * 2017-03-30 2020-12-18 联想(北京)有限公司 一种信息处理方法及电子设备
US10209917B2 (en) 2017-04-20 2019-02-19 Red Hat, Inc. Physical memory migration for secure encrypted virtual machines
US10379764B2 (en) 2017-05-11 2019-08-13 Red Hat, Inc. Virtual machine page movement for encrypted memory
US11354420B2 (en) 2017-07-21 2022-06-07 Red Hat, Inc. Re-duplication of de-duplicated encrypted memory
US20190068466A1 (en) * 2017-08-30 2019-02-28 Intel Corporation Technologies for auto-discovery of fault domains
US10642790B1 (en) * 2017-09-22 2020-05-05 EMC IP Holding Company LLC Agentless virtual disk metadata indexing
CN109923528B (zh) 2017-09-25 2021-04-09 华为技术有限公司 一种数据访问的方法和装置
US10733108B2 (en) * 2018-05-15 2020-08-04 Intel Corporation Physical page tracking for handling overcommitted memory
KR102498319B1 (ko) * 2018-06-04 2023-02-08 삼성전자주식회사 반도체 장치
US11614956B2 (en) 2019-12-06 2023-03-28 Red Hat, Inc. Multicast live migration for encrypted virtual machines
US11656982B2 (en) * 2021-01-15 2023-05-23 Nutanix, Inc. Just-in-time virtual per-VM swap space

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8479194B2 (en) * 2007-04-25 2013-07-02 Microsoft Corporation Virtual machine migration

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019185130A (ja) * 2018-04-02 2019-10-24 株式会社デンソー 電子制御装置および電子制御システム
JP7006461B2 (ja) 2018-04-02 2022-01-24 株式会社デンソー 電子制御装置および電子制御システム
US11915027B2 (en) 2018-04-02 2024-02-27 Denso Corporation Security and data logging of virtual machines

Also Published As

Publication number Publication date
US20160266923A1 (en) 2016-09-15

Similar Documents

Publication Publication Date Title
JP2016167143A (ja) 情報処理システムおよび情報処理システムの制御方法
US10365938B2 (en) Systems and methods for managing data input/output operations in a virtual computing environment
US11243707B2 (en) Method and system for implementing virtual machine images
US8122212B2 (en) Method and apparatus for logical volume management for virtual machine environment
US9384060B2 (en) Dynamic allocation and assignment of virtual functions within fabric
CN102541619B (zh) 虚拟机管理装置和方法
US20110113426A1 (en) Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods
US20120066677A1 (en) On demand virtual machine image streaming
US20140115228A1 (en) Method and system for vm-granular i/o caching
US8112620B2 (en) Method and system for discovery of a root file system
US10289564B2 (en) Computer and memory region management method
JP2019016135A (ja) 情報処理システム、情報処理システムの制御プログラム及び情報処理システムの制御方法
US10430221B2 (en) Post-copy virtual machine migration with assigned devices
EP3249515B1 (en) Method and apparatus for determining read/write path
JP2022552141A (ja) 仮想メモリ・メタデータ管理
US9804877B2 (en) Reset of single root PCI manager and physical functions within a fabric
US20170277632A1 (en) Virtual computer system control method and virtual computer system
US20160077847A1 (en) Synchronization of physical functions and virtual functions within a fabric
JP5966466B2 (ja) バックアップ制御方法、および情報処理装置
JP5492731B2 (ja) 仮想計算機のボリューム割当て方法およびその方法を用いた計算機システム
JP7125964B2 (ja) 計算機システムおよび管理方法
US9952984B2 (en) Erasing a storage block before writing partial data
JP5655612B2 (ja) 情報処理システム、情報処理方法、及び制御プログラム
US11263183B2 (en) Integrating virtual machine file system into a native file explorer
TW201837731A (zh) 儲存實體資源的本地磁碟抹除機制