(57)【要約】【課題】仮想マシンのマイグレーション時間を短縮する。【解決手段】メモリ装置２０は、仮想マシン３のデータ２１と、情報処理装置１０に応じた情報＃１とデータ２１が記憶された記憶領域とを対応付けた管理情報２２を記憶する。情報処理装置１０は、仮想マシン３が使用するアドレスと情報＃１とを対応付けた対応情報１１に基づいて、メモリ装置２０にアクセスし仮想マシン３を実行する。情報処理装置１０ａは、情報処理装置１０から通知されるサイズ情報１２に基づいて、アドレスと情報処理装置１０ａに応じた情報＃２とを対応付けた対応情報１１ａを生成し、管理情報２２に含まれる情報＃１を情報＃２に更新する。情報処理装置１０ａは、対応情報１１ａに基づいて、メモリ装置２０にアクセスし仮想マシン３を実行する。【選択図】図１
2016167143.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンを実行する第１の情報処理装置と、
前記第１の情報処理装置と通信可能な第２の情報処理装置と、
前記第１の情報処理装置および前記第２の情報処理装置に接続され、前記仮想マシンのデータと、前記第１の情報処理装置に応じた情報と前記データが記憶された記憶領域とを対応付けた管理情報とを記憶するメモリ装置と、
を有し、
前記第１の情報処理装置は、前記仮想マシンが使用するアドレスと前記第１の情報処理装置に応じた情報とを対応付けた第１の対応情報に基づいて、前記メモリ装置にアクセスして前記仮想マシンを実行し、
前記仮想マシンを前記第２の情報処理装置に実行させる場合、前記第１の情報処理装置は、前記記憶領域の大きさを示すサイズ情報を前記第２の情報処理装置に通知し、前記仮想マシンを停止し、
前記第２の情報処理装置は、前記サイズ情報に基づいて、前記アドレスと前記第２の情報処理装置に応じた情報とを対応付けた第２の対応情報を生成し、前記管理情報に含まれる前記第１の情報処理装置に応じた情報を前記第２の情報処理装置に応じた情報に更新し、前記第２の対応情報に基づいて、前記メモリ装置にアクセスして前記仮想マシンを実行する、
情報処理システム。
【請求項２】
前記第１の情報処理装置に応じた情報は、前記第１の情報処理装置が有する第１のメモリの第１の領域を示す第１の他のアドレスを含み、
前記第２の情報処理装置に応じた情報は、前記第２の情報処理装置が有する第２のメモリの第２の領域を示す第２の他のアドレスを含む、
請求項１記載の情報処理システム。
【請求項３】
前記第２の情報処理装置は、前記仮想マシンを実行する場合、前記第２のメモリに前記第２の領域を確保し、前記仮想マシンから前記アドレスが指定されると、前記第２の領域にアクセスする代わりに前記メモリ装置にアクセスする、
請求項２記載の情報処理システム。
【請求項４】
前記メモリ装置は、前記第２の情報処理装置に応じた情報を含むアクセスを前記第２の情報処理装置から受け付け、更新された前記管理情報に基づいて、前記第２の情報処理装置に応じた情報から前記記憶領域を判定する制御部を有する、
請求項１記載の情報処理システム。
【請求項５】
前記メモリ装置は、前記第１の情報処理装置が有する第１のメモリの一部領域と前記第２の情報処理装置が有する第２のメモリの一部領域とを、前記データの記憶に使用可能な共有領域として管理する、
請求項１記載の情報処理システム。
【請求項６】
第１の情報処理装置と、前記第１の情報処理装置と通信可能な第２の情報処理装置と、前記第１の情報処理装置および前記第２の情報処理装置に接続されたメモリ装置とを有する情報処理システムの制御方法であって、
前記メモリ装置に、仮想マシンのデータと、前記第１の情報処理装置に応じた情報と前記データが記憶された記憶領域とを対応付けた管理情報とを記憶させ、
前記仮想マシンが使用するアドレスと前記第１の情報処理装置に応じた情報とを対応付けた第１の対応情報に基づいて、前記第１の情報処理装置から前記メモリ装置にアクセスし、前記第１の情報処理装置上で前記仮想マシンを実行し、
前記仮想マシンを前記第２の情報処理装置に実行させる場合、前記第１の情報処理装置から前記第２の情報処理装置に、前記記憶領域の大きさを示すサイズ情報を通知し、
前記サイズ情報に基づいて、前記第２の情報処理装置において、前記アドレスと前記第２の情報処理装置に応じた情報とを対応付けた第２の対応情報を生成し、
前記第１の情報処理装置上の前記仮想マシンを停止させ、
前記管理情報に含まれる前記第１の情報処理装置に応じた情報を前記第２の情報処理装置に応じた情報に更新し、
前記第２の対応情報に基づいて、前記第２の情報処理装置から前記メモリ装置にアクセスし、前記第２の情報処理装置上で前記仮想マシンを実行する、
情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理システムおよび情報処理システムの制御方法に関する。
【背景技術】
【０００２】
現在、物理的なコンピュータ（物理マシンと言うことがある）上で、複数の仮想的なコンピュータ（仮想マシン（ＶＭ：Virtual Machine）と言うことがある）を動作させる、仮想化技術が利用されている。ある情報処理と他の情報処理とを異なる仮想マシンに実行させることで、それらの情報処理を干渉しないように明確に分離することができる。よって、ユーザ毎に仮想マシンを用意することで、複数の仮想マシンを同じ物理マシンに配置しても、それら複数のユーザの情報処理を分離することが容易となる。
【０００３】
物理マシンでは、仮想マシンを管理する管理ソフトウェアが実行されている。管理ソフトウェアには、ハイパーバイザ、管理オペレーティングシステム（ＯＳ：Operating System）、仮想マシンモニタ（ＶＭＭ：Virtual Machine Monitor）などと呼ばれるものが含まれる。管理ソフトウェアは、物理マシンが有するＣＰＵ（Central Processing Unit）コアやＲＡＭ（Random Access Memory）領域などの物理的・ハードウェア的なリソースを、その物理マシンに配置された仮想マシンに対して割り当てる。各仮想マシンでは、他の仮想マシンとは独立にユーザ用のＯＳ（ゲストＯＳやユーザＯＳと言うことがある）が実行される。各仮想マシンのＯＳは、管理ソフトウェアから割り当てられたリソースの範囲内で、そのＯＳ上で起動されたプロセスをスケジューリングし実行させる。
【０００４】
複数の物理マシンを有する情報処理システムでは、ある物理マシンから他の物理マシンへの仮想マシンの移行（マイグレーション）を行うことがある。例えば、ある物理マシンの負荷が高くなった場合、その物理マシン上の一部の仮想マシンを負荷の低い他の物理マシンに移行することがある。また、例えば、ある物理マシンをメンテナンスするためにその物理マシンを停止する場合、その物理マシン上の全ての仮想マシンを他の物理マシンに移行することがある。このとき、仮想マシンの停止時間が短くなるよう、マイグレーションの一形態として、ＯＳをシャットダウンせずに実行状態のまま移行する「ライブマイグレーション」が行われることがある。
【０００５】
ライブマイグレーションの１つの実現方法として、例えば、移行元の物理マシンは、仮想マシンを停止させずに、メモリ上にある仮想マシンのデータ全体を移行先の物理マシンに１回コピーする。このとき、仮想マシンが実行中であるため、コピーを行っている間にデータが更新される可能性がある。そこで、移行元の物理マシンは、データの更新を監視し、データ全体を１回コピーした後は、データの更新毎の差分データを継続的に移行先の物理マシンに送信する。そして、移行元の物理マシンは、データの更新回数またはデータの更新量が少なくなったタイミングで仮想マシンを停止させ、最後の差分データを移行先の物理マシンに送信する。移行先の物理マシンは、移行元からコピーされたデータと差分データとをメモリ上に適切に配置し、仮想マシンの処理を再開する。これにより、実質的に仮想マシンが停止している時間を短くすることができる。
【０００６】
なお、複数の論理パーティションが設定されたシステムで行われるプロセス制御方法が提案されている。各論理パーティションに対しては、システムが有する物理プロセッサのリソースが割り当てられる。各論理パーティションは、割り当てられた物理プロセッサのリソースを論理プロセッサとして認識し、論理プロセッサを用いてゲストＯＳを実行する。システムは、論理プロセッサと物理プロセッサとの対応関係の変更が容易になるように、アドレス変換に第１の変換テーブルと第２の変換テーブルを用いる。第１の変換テーブルは、論理パーティションが割り当てリソースの識別に使用する論理パーティションアドレス空間に対して、物理アドレス空間を対応付ける。第２の変換テーブルは、ゲストＯＳが論理パーティションアドレス空間とは異なる仮想アドレス空間を使用している場合に、仮想アドレス空間に対して物理アドレス空間を直接対応付ける。
【０００７】
また、複数のＯＳを同時に実行し、あるＯＳ上で実行されるプロセスを他のＯＳに移行する「プロセスマイグレーション」が可能な計算機システムが提案されている。この計算機システムは、ＯＳに依存しないデータを共有領域に記憶しておく。プロセスマイグレーションでは、計算機システムは、共有領域のデータの物理的位置を維持し、移行先のＯＳが使用するメモリ領域表やページテーブルを移行元のＯＳのメモリ領域表に基づいて生成する。これにより、ＯＳに依存しないデータを、移行元のＯＳが管理するメモリ領域から移行先のＯＳが管理するメモリ領域にコピーしなくてもよい。
【０００８】
また、複数の処理システムとこれら複数の処理システムからアクセスされる共有記憶装置とを有する計算機システムが提案されている。各処理システムは、２以上のプロセッサと主記憶装置とを有する。共有記憶装置には、主ＯＳのプログラムが記憶される。各処理システムの主記憶装置には、主ＯＳによって管理されるサブＯＳのプログラムや、サブＯＳ上で実行される処理プログラムが記憶される。複数の処理システムの何れもが、共有記憶装置にアクセスして主ＯＳのプログラムを読み出し、主ＯＳを実行することができる。
【０００９】
また、メモリコントローラと大規模なメモリとを有するメモリプールが提案されている。このメモリプールは、メモリの記憶領域を複数のパーティションに分割し、メモリプールと接続された複数のノードにパーティションを割り当てる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−１２７４６２号公報
【特許文献２】特開２０１０−２５０７２２号公報
【特許文献３】特開昭６２−４９５５６号公報
【非特許文献】
【００１１】
【非特許文献１】Mohan J. Kumar, "Rack Scale Architecture - Platform and Management", Intel Developer Forum 2014, DATS008, 2014-09-10
【発明の概要】
【発明が解決しようとする課題】
【００１２】
互いに別の管理ソフトウェアによってリソースを管理している異なる物理マシンの間で、仮想マシンのマイグレーションを行う場合、従来はそれら物理マシンの間でメモリのデータをコピーすることがあった。しかし、仮想マシンが使用するメモリ領域が大きいと、物理マシン間のデータのコピーに時間を要し、マイグレーションを開始してから完了するまでのマイグレーション時間が長くなってしまうという問題がある。
【００１３】
例えば、５１２Ｇバイトのメモリを有する物理マシンをメンテナンスするため、その物理マシン上の全ての仮想マシンを、１Ｇｂｐｓのネットワークを介して他の物理マシンに移行する場合を考える。その場合、メモリのデータのコピーに１時間以上要する可能性がある。なお、異なる物理マシン間や別の管理ソフトウェア間で仮想マシンをマイグレーションすることは、上記の特許文献１〜３では議論されていない。
【００１４】
１つの側面では、本発明は、仮想マシンのマイグレーション時間を短縮できる情報処理システムおよび情報処理システムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
１つの態様では、仮想マシンを実行する第１の情報処理装置と、第１の情報処理装置と通信可能な第２の情報処理装置と、第１の情報処理装置および第２の情報処理装置に接続され、仮想マシンのデータと、第１の情報処理装置に応じた情報とデータが記憶された記憶領域とを対応付けた管理情報とを記憶するメモリ装置と、を有する情報処理システムが提供される。第１の情報処理装置は、仮想マシンが使用するアドレスと第１の情報処理装置に応じた情報とを対応付けた第１の対応情報に基づいて、メモリ装置にアクセスして仮想マシンを実行する。仮想マシンを第２の情報処理装置に実行させる場合、第１の情報処理装置は、記憶領域の大きさを示すサイズ情報を第２の情報処理装置に通知し、仮想マシンを停止する。第２の情報処理装置は、サイズ情報に基づいて、アドレスと第２の情報処理装置に応じた情報とを対応付けた第２の対応情報を生成し、管理情報に含まれる第１の情報処理装置に応じた情報を第２の情報処理装置に応じた情報に更新し、第２の対応情報に基づいて、メモリ装置にアクセスして仮想マシンを実行する。
【００１６】
また、１つの態様では、第１の情報処理装置と、第１の情報処理装置と通信可能な第２の情報処理装置と、第１の情報処理装置および第２の情報処理装置に接続されたメモリ装置とを有する情報処理システムが実行する制御方法が提供される。
【発明の効果】
【００１７】
１つの側面では、仮想マシンのマイグレーション時間を短縮できる。
【図面の簡単な説明】
【００１８】
【図１】第１の実施の形態の情報処理システムを示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】サーバ装置のハードウェア例を示すブロック図である。
【図４】メモリプール装置のハードウェア例を示すブロック図である。
【図５】仮想マシンの形成例を示す図である。
【図６】仮想マシンに関するデータの配置例を示す図である。
【図７】アドレス空間の対応付け例を示す図である。
【図８】サーバ装置とメモリプール装置の機能例を示すブロック図である。
【図９】ページテーブルの例を示す図である。
【図１０】仮想マシン管理テーブルの例を示す図である。
【図１１】仮想マシン起動の手順例を示すフローチャートである。
【図１２】メモリアクセスの手順例を示すフローチャートである。
【図１３】仮想マシン移行の手順例を示すフローチャートである。
【図１４】第３の実施の形態の情報処理システムを示す図である。
【図１５】仮想マシンに関するデータの他の配置例を示す図である。
【発明を実施するための形態】
【００１９】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理システムを示す図である。
【００２０】
第１の実施の形態の情報処理システムは、情報処理装置１０，１０ａおよびメモリ装置２０を有する。情報処理装置１０ａは、情報処理装置１０と通信可能である。例えば、情報処理装置１０，１０ａは、ＬＡＮ（Local Area Network）に接続されている。メモリ装置２０は、情報処理装置１０，１０ａに接続されている。例えば、情報処理装置１０，１０ａとメモリ装置２０とは、ＬＡＮとは異なるメモリバスに接続されている。
【００２１】
情報処理装置１０，１０ａは、仮想化技術を用いて１または２以上の仮想マシンを実行することができるコンピュータ（物理マシン）である。情報処理装置１０，１０ａはそれぞれ、ＣＰＵなどの演算処理装置としてのプロセッサと、ＲＡＭなどの主記憶装置としてのメモリとを有する。プロセッサは、メモリにプログラムをロードし、メモリに記憶されたプログラムを実行する。ただし、プロセッサは、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路を含んでもよい。情報処理装置１０，１０ａは、互いに独立に、仮想マシンを制御する管理ソフトウェア（例えば、ハイパーバイザ、管理ＯＳ、ＶＭＭなど）を実行し、各情報処理装置が有する物理的・ハードウェア的なリソースを管理する。
【００２２】
メモリ装置２０は、ＲＡＭなどのメモリを有する。メモリ装置２０が有するメモリは、情報処理装置１０，１０ａから共通に利用することができ、情報処理装置１０，１０ａから見て「メモリプール」と言うことができる。メモリ装置２０は、情報処理装置１０，１０ａからのアクセスを処理する制御部（メモリコントローラなど）を有していてもよい。
【００２３】
ここで、情報処理装置１０で仮想マシン３が実行されているとする。仮想マシン３上では、ＯＳが実行されている。第１の実施の形態では、情報処理装置１０から情報処理装置１０ａに仮想マシン３を移行すること（マイグレーション）を考える。例えば、情報処理装置１０の負荷が高くなったときや、情報処理装置１０のメンテナンスを行うときに、仮想マシン３を情報処理装置１０ａに移行する。仮想マシン３のマイグレーションは、例えば、仮想マシン３のＯＳをシャットダウンしないライブマイグレーションとして行う。ただし、第１の実施の形態では、情報処理装置１０から情報処理装置１０ａに仮想マシン３のデータがコピーされるのを抑制し、マイグレーション時間を短縮する。
【００２４】
メモリ装置２０は、仮想マシン３に関するデータ２１（例えば、仮想マシン３上で実行されているＯＳプログラムなどのプログラムを含む）を記憶する。また、メモリ装置２０は、管理情報２２を記憶する。管理情報２２は、情報処理装置１０に応じた情報とデータ２１が記憶されているメモリ装置２０の記憶領域とを対応付ける。情報処理装置１０に応じた情報は、例えば、情報処理装置１０が有するメモリの物理アドレスを含む。この場合、管理情報２２は、情報処理装置１０が有するメモリの物理アドレスとメモリ装置２０が有するメモリの物理アドレスとを対応付けていると言うこともできる。
【００２５】
仮想マシン３を移行する前、情報処理装置１０は、対応情報１１に基づいてメモリ装置２０にアクセスし、データ２１を用いて仮想マシン３を実行する。対応情報１１は、仮想マシン３が使用する論理アドレスと情報処理装置１０に応じた情報（例えば、情報処理装置１０が有するメモリの物理アドレス）とを対応付ける。対応情報１１は、例えば、情報処理装置１０によって生成され、情報処理装置１０に記憶されている。
【００２６】
例えば、仮想マシン３から論理アドレスが指定されると、対応情報１１に基づいて、指定された論理アドレスが情報処理装置１０に応じた情報に変換される。対応情報１１に基づく変換は、情報処理装置１０が行う。そして、管理情報２２に基づいて、情報処理装置１０に応じた情報がメモリ装置２０の記憶領域の物理アドレスに変換される。管理情報２２に基づく変換は、メモリ装置２０（例えば、メモリ装置２０が有するメモリコントローラ）が行ってもよいし、情報処理装置１０が行ってもよい。前者の場合、情報処理装置１０がメモリ装置２０にアクセスする際、情報処理装置１０に応じた情報を指定することになる。対応情報１１と管理情報２２の両方に基づいて、情報処理装置１０は、メモリ装置２０に記憶されたデータ２１にアクセスすることができる。
【００２７】
仮想マシン３を移行する場合、情報処理装置１０は、仮想マシン３が使用する記憶領域の大きさを示すサイズ情報１２を情報処理装置１０ａに通知する。仮想マシン３が使用する記憶領域の大きさは、通常、仮想マシン３に対して確保された（データ２１を記憶するために確保された）メモリ装置２０の記憶領域の大きさである。
【００２８】
情報処理装置１０からサイズ情報１２が通知されると、情報処理装置１０ａは、サイズ情報１２に基づいて対応情報１１ａを生成する。対応情報１１ａは、情報処理装置１０が使用する対応情報１１に相当するものである。対応情報１１ａは、仮想マシン３が使用する論理アドレス（対応情報１１と同じもの）と情報処理装置１０ａに応じた情報（例えば、情報処理装置１０ａが有するメモリの物理アドレス）とを対応付ける。情報処理装置１０ａが生成した対応情報１１ａは、例えば、情報処理装置１０ａに記憶される。
【００２９】
情報処理装置１０は、サイズ情報１２を通知した後（好ましくは、情報処理装置１０ａが対応情報１１ａを生成した後）、仮想マシン３を停止させる。情報処理装置１０が仮想マシン３を停止させると、情報処理装置１０ａは、メモリ装置２０に記憶された管理情報２２を更新する。このとき、情報処理装置１０ａは、管理情報２２に含まれる情報処理装置１０に応じた情報を、情報処理装置１０ａに応じた情報（例えば、情報処理装置１０ａが有するメモリの物理アドレス）に書き換える。これにより、管理情報２２は、情報処理装置１０ａに応じた情報とデータ２１が記憶されているメモリ装置２０の記憶領域とを対応付けたものとなる。以上により、仮想マシン３のマイグレーションが完了する。仮想マシン３のマイグレーションでは、データ２１を移動しなくてよい。
【００３０】
仮想マシン３を移行した後、情報処理装置１０ａは、対応情報１１ａに基づいてメモリ装置２０にアクセスし、データ２１を用いて仮想マシン３を実行する。例えば、仮想マシン３から論理アドレスが指定されると、対応情報１１ａに基づいて、指定された論理アドレスが情報処理装置１０ａに応じた情報に変換される。対応情報１１に基づく変換は、情報処理装置１０ａが行う。そして、管理情報２２に基づいて、情報処理装置１０ａに応じた情報がメモリ装置２０の記憶領域の物理アドレスに変換される。管理情報２２に基づく変換は、メモリ装置２０が行ってもよいし情報処理装置１０ａが行ってもよい。前者の場合、情報処理装置１０ａがメモリ装置２０にアクセスする際、情報処理装置１０ａに応じた情報を指定することになる。対応情報１１ａと管理情報２２の両方に基づいて、情報処理装置１０ａは、メモリ装置２０に記憶されたデータ２１にアクセスすることができる。
【００３１】
第１の実施の形態の情報処理システムによれば、情報処理装置１０，１０ａに接続されたメモリ装置２０に、仮想マシン３のデータと管理情報２２とが記憶される。情報処理装置１０で仮想マシン３が実行されているときは、対応情報１１に基づいて情報処理装置１０からメモリ装置２０がアクセスされる。仮想マシン３を移行する場合、情報処理装置１０から情報処理装置１０ａにサイズ情報１２が通知され、情報処理装置１０ａで対応情報１１に相当する対応情報１１ａが生成される。そして、情報処理装置１０で仮想マシン３が停止され、メモリ装置２０の管理情報２２が更新され、情報処理装置１０ａで仮想マシン３の実行が再開される。情報処理装置１０ａで仮想マシン３が実行されているときは、対応情報１１ａに基づいて情報処理装置１０ａからメモリ装置２０がアクセスされる。
【００３２】
これにより、情報処理装置１０から情報処理装置１０ａにデータ２１をコピーしなくても仮想マシン３のマイグレーションを行うことができ、マイグレーションを開始してから完了するまでに要する時間を短縮できる。特に、仮想マシン３に割り当てられるメモリ領域が大きくなっても、ネットワーク通信の時間を抑制することができる。
【００３３】
また、仮想マシン３の論理アドレスが、対応情報１１と管理情報２２を二段階で使用して、メモリ装置２０の物理アドレスに変換される。マイグレーションでは、移行先の情報処理装置１０ａに合わせて対応情報１１ａが生成され、管理情報２２が更新される。よって、異なる物理マシン間や別の管理ソフトウェア間でも、データ２１をコピーせずに仮想マシン３を円滑に移行することができる。また、情報処理装置１０，１０ａに応じた情報として情報処理装置１０，１０ａの物理アドレスを用いることもできる。これにより、情報処理装置１０，１０ａが有するローカルメモリへのアクセスと整合性を取ることが容易となり、既存のメモリアーキテクチャを利用してメモリ装置２０にアクセスできる。
【００３４】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。
第２の実施の形態の情報処理システムは、ＬＡＮ３１、ＳＡＮ（Storage Area Network）３２、拡張バス３３、ストレージ装置４０、サーバ装置１００，１００ａおよびメモリプール装置２００を有する。サーバ装置１００，１００ａは、ＬＡＮ３１、ＳＡＮ３２および拡張バス３３に接続されている。ストレージ装置４０は、ＳＡＮ３２に接続されている。メモリプール装置２００は、拡張バス３３に接続されている。
【００３５】
ＬＡＮ３１は、データ通信用の汎用的なネットワークである。ＬＡＮ３１上の通信には、例えば、ＩＰ（Internet Protocol）やＴＣＰ（Transmission Control Protocol）などが用いられる。ＬＡＮ３１は、レイヤ２スイッチなどの通信装置を含んでもよい。例えば、ＬＡＮ３１のレイヤ２スイッチとサーバ装置１００，１００ａとがケーブルで接続される。サーバ装置１００は、ＬＡＮ３１を介してサーバ装置１００ａと通信する。
【００３６】
ＳＡＮ３２は、ストレージアクセス用の専用ネットワークである。ＳＡＮ３２は、ＬＡＮ３１よりも効率的に大規模データを伝送することができる。ＬＡＮ３１とＳＡＮ３２は独立したネットワークであり、サーバ装置１００，１００ａはＬＡＮ３１とＳＡＮ３２に別個に接続される。サーバ装置１００，１００ａは、ＳＡＮ３２を介してストレージ装置４０にアクセス要求を送信する。ＳＡＮ３２上の通信には、例えば、ファイバチャネルプロトコル（ＦＣＰ：Fiber Channel Protocol）などのＳＣＳＩ（Small Computer System Interface）プロトコルが用いられる。ＳＡＮ３２は、ＦＣスイッチなどの通信装置を含んでもよい。例えば、ＳＡＮ３２のＦＣスイッチとサーバ装置１００，１００ａとが、ファイバケーブルなどのケーブルで接続される。
【００３７】
拡張バス３３は、サーバ装置１００，１００ａの外部に存在するメモリバスである。拡張バス３３はＬＡＮ３１やＳＡＮ３２から独立したネットワークであり、サーバ装置１００，１００ａはＬＡＮ３１やＳＡＮ３２とは別個に拡張バス３３に接続される。サーバ装置１００，１００ａは、拡張バス３３を介してメモリプール装置２００にアクセス要求を送信する。拡張バス３３は、サーバ装置１００とメモリプール装置２００、および、サーバ装置１００ａとメモリプール装置２００を、それぞれケーブルによって直接接続してもよい。また、拡張バス３３は、サーバ装置１００，１００ａおよびメモリプール装置２００と接続されるハブを含んでもよい。また、拡張バス３３は、サーバ装置１００からのアクセスとサーバ装置１００ａからのアクセスとを選択的にメモリプール装置２００に転送するクロスバースイッチを含んでもよい。
【００３８】
ストレージ装置４０は、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性の記憶装置を有するサーバ装置である。ストレージ装置４０は、サーバ装置１００からＳＡＮ３２を介してアクセス要求を受信し、記憶装置にアクセスしてアクセス結果をサーバ装置１００に返信する。アクセス要求が読み出し要求である場合、ストレージ装置４０は、アクセス要求で指定されたデータを記憶装置から読み出し、読み出したデータを含むアクセス結果をサーバ装置１００に返信する。アクセス要求が書き込み要求である場合、ストレージ装置４０は、アクセス要求に含まれるデータを記憶装置に書き込み、書き込み成否を示すアクセス結果をサーバ装置１００に返信する。同様に、ストレージ装置４０は、サーバ装置１００ａからＳＡＮ３２を介してアクセス要求を受信し、アクセス結果をサーバ装置１００ａに返信する。
【００３９】
サーバ装置１００，１００ａは、仮想マシンを実行することができるサーバコンピュータである。各仮想マシンのディスクイメージが、ストレージ装置４０に記憶されている。ディスクイメージには、ＯＳプログラムやアプリケーションプログラムなどが含まれる。ストレージ装置４０は、サーバ装置１００，１００ａから外付けの補助記憶装置として利用できる。ある仮想マシンがサーバ装置１００に配置される場合、サーバ装置１００は、ＳＡＮ３２を介してストレージ装置４０から、当該仮想マシンのディスクイメージの少なくとも一部分を読み出す。サーバ装置１００は、ストレージ装置４０から読み出したデータに基づいて仮想マシンを起動する。同様に、ある仮想マシンがサーバ装置１００ａに配置される場合、サーバ装置１００ａは、ＳＡＮ３２を介してストレージ装置４０からディスクイメージの少なくとも一部分を読み出し、当該仮想マシンを起動する。
【００４０】
ここで、第２の実施の形態では、サーバ装置１００，１００ａは、仮想マシンに関するデータを、サーバ装置１００が有するローカルのメモリに代えてメモリプール装置２００に格納する。メモリプール装置２００は、サーバ装置１００，１００ａから外付けの主記憶装置として利用できる。サーバ装置１００は、ストレージ装置４０から読み出した仮想マシンに関するデータを、拡張バス３３を介してメモリプール装置２００に書き込む。同様に、サーバ装置１００ａは、ストレージ装置４０から読み出した仮想マシンに関するデータを、拡張バス３３を介してメモリプール装置２００に書き込む。以降、サーバ装置１００，１００ａはそれぞれ、ストレージ装置４０およびメモリプール装置２００に適宜アクセスしながら、当該サーバ装置に配置された仮想マシンを実行する。
【００４１】
また、第２の実施の形態では、サーバ装置１００，１００ａの間で仮想マシンを移行することがある。例えば、サーバ装置１００の負荷が高くなったときや、メンテナンス作業のためにサーバ装置１００の電源をＯＦＦにするときに、サーバ装置１００からサーバ装置１００ａに仮想マシンを移行する。仮想マシンの移行（マイグレーション）は、仮想マシンのＯＳをシャットダウンしないライブマイグレーションとして行う。すなわち、サーバ装置１００上で実行していた仮想マシンを停止させ、サーバ装置１００ａ上で停止直前の状態から当該仮想マシンの実行を再開させる。
【００４２】
メモリプール装置２００は、ＲＡＭなどの揮発性のメモリを有する。メモリプール装置２００は、サーバ装置１００から拡張バス３３を介してアクセス要求を受信し、メモリにアクセスしてアクセス結果をサーバ装置１００に返信する。アクセス要求が読み出し要求である場合、メモリプール装置２００は、アクセス要求で指定されたデータをメモリから読み出し、読み出したデータを含むアクセス結果をサーバ装置１００に返信する。アクセス要求が書き込み要求である場合、メモリプール装置２００は、アクセス要求に含まれるデータをメモリに書き込み、書き込み成否を示すアクセス結果をサーバ装置１００に返信する。同様に、メモリプール装置２００は、サーバ装置１００ａから拡張バス３３を介してアクセス要求を受信し、アクセス結果をサーバ装置１００ａに返信する。
【００４３】
サーバ装置１００，１００ａの外部に共有の主記憶装置（メモリプール）を設けることは、例えば、前述の特許文献３や非特許文献１などの技術を用いて実現することが可能である。特許文献３（特開昭６２−４９５５６号公報）には、それぞれがプロセッサと主記憶装置とを有する複数の処理システムから、共有記憶装置にアクセス可能な計算機システムが提案されている。特許文献３では、各処理システムのプロセッサが、共有記憶装置に記憶された主ＯＳのプログラムを読み出して主ＯＳを実行することができる。非特許文献１（Mohan J. Kumar, "Rack Scale Architecture - Platform and Management"）には、メモリコントローラと大規模なメモリとを有するメモリプールが提案されている。
【００４４】
なお、サーバ装置１００は、第１の実施の形態の情報処理装置１０に対応する。サーバ装置１００ａは、第１の実施の形態の情報処理装置１０ａに対応する。メモリプール装置２００は、第１の実施の形態のメモリ装置２０に対応する。
【００４５】
図３は、サーバ装置のハードウェア例を示すブロック図である。
サーバ装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５および媒体リーダ１０６を有する。また、サーバ装置１００は、メモリコントローラ１１１、ＩＯ（Input Output）ハブ１１２、バスインタフェース１１３、ＮＩＣ（Network Interface Card）１１４、ＨＢＡ（Host Bus Adapter）１１５およびバス１１６を有する。サーバ装置１００ａも、サーバ装置１００と同様のハードウェアを用いて実現することができる。
【００４６】
ＣＰＵ１０１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３またはストレージ装置４０に記憶されたプログラムの少なくとも一部を、ＲＡＭ１０２またはメモリプール装置２００にロードして実行する。なお、ＣＰＵ１０１は、複数のプロセッサコアを備えてもよい。また、サーバ装置１００は、複数のプロセッサを備えてもよい。サーバ装置１００は、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼んでもよい。
【００４７】
ＲＡＭ１０２は、データ（ＣＰＵ１０１が実行するプログラムを含む）を一時的に記憶する揮発性の半導体メモリである。なお、サーバ装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００４８】
ＨＤＤ１０３は、データ（プログラムを含む）を記憶する不揮発性の記憶装置である。ＨＤＤ１０３に記憶されるプログラムには、仮想マシンを制御するハイパーバイザのプログラムが含まれる。なお、サーバ装置１００は、フラッシュメモリやＳＳＤなどの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００４９】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、サーバ装置１００に接続されたディスプレイ１０７に画像を出力する。ディスプレイ１０７としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ（ＰＤＰ：Plasma Display Panel）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００５０】
入力信号処理部１０５は、サーバ装置１００に接続された入力デバイス１０８から入力信号を取得し、ＣＰＵ１０１に通知する。入力デバイス１０８としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、サーバ装置１００に、複数の種類の入力デバイスが接続されていてもよい。
【００５１】
媒体リーダ１０６は、記録媒体１０９に記録されたデータ（プログラムを含む）を読み取る読み取り装置である。記録媒体１０９として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。媒体リーダ１０６は、例えば、記録媒体１０９から読み取ったデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００５２】
メモリコントローラ１１１は、ＲＡＭ１０２およびメモリプール装置２００へのアクセスを制御する。メモリコントローラ１１１は、ＲＡＭ１０２の物理アドレス（サーバ物理アドレス）を指定したアクセス要求をＣＰＵ１０１から受け付けると、サーバ物理アドレスが示すＲＡＭ１０２の記憶領域にアクセスする。ただし、アクセス先が外部である旨がＣＰＵ１０１によって指示された場合、メモリコントローラ１１１は、サーバ物理アドレスを指定したアクセス要求をバスインタフェース１１３に転送する。
【００５３】
また、メモリコントローラ１１１は、ＩＯハブ１１２とＲＡＭ１０２の間でデータを転送する。メモリコントローラ１１１は、ＩＯハブ１１２から取得したデータをＲＡＭ１０２に書き込み、バス１１６に接続されたデバイス（ＩＯデバイス）からデータが到着した旨をＣＰＵ１０１に通知する。また、メモリコントローラ１１１は、ＣＰＵ１０１からの指示に応じて、ＲＡＭ１０２に記憶されているデータをＩＯハブ１１２に転送する。
【００５４】
ＩＯハブ１１２は、バス１１６に接続されている。ＩＯハブ１１２は、バス１１６の使用を制御し、メモリコントローラ１１１とバス１１６に接続されたＩＯデバイスとの間でデータを転送する。バス１１６に接続されたＩＯデバイスには、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６、ＮＩＣ１１４およびＨＢＡ１１５が含まれる。ＩＯハブ１１２は、バス１１６を介して、これらのＩＯデバイスからデータを受信し、また、これらのＩＯデバイスにデータを送信する。
【００５５】
バスインタフェース１１３は、拡張バス３３に接続される通信インタフェースである。バスインタフェース１１３は、例えば、ケーブルを接続するポートを有する。バスインタフェース１１３は、拡張バス３３を介してメモリプール装置２００に、サーバ物理アドレスを指定したアクセス要求を送信する。ＮＩＣ１１４は、ＬＡＮ３１に接続される通信インタフェースである。ＮＩＣ１１４は、例えば、ＬＡＮケーブルを接続するポートを有する。ＨＢＡ１１５は、ＳＡＮ３２に接続される通信インタフェースである。ＨＢＡ１１５は、例えば、ファイバケーブルを接続するポートを有する。ＨＢＡ１１５は、ＳＡＮ３２を介してストレージ装置４０にアクセス要求を送信する。
【００５６】
なお、サーバ装置１００は、媒体リーダ１０６を備えていなくてもよく、ユーザが操作する端末装置から制御可能である場合には画像信号処理部１０４や入力信号処理部１０５を備えていなくてもよい。また、ディスプレイ１０７や入力デバイス１０８が、サーバ装置１００の筐体と一体に形成されていてもよい。
【００５７】
図４は、メモリプール装置のハードウェア例を示すブロック図である。
メモリプール装置２００は、ＲＡＭ２０１，２０２を含むＲＡＭの集合、メモリコントローラ２１１およびバスインタフェース２１２を有する。
【００５８】
ＲＡＭ２０１，２０２は、データ（プログラムを含む）を一時的に記憶する揮発性の半導体メモリである。メモリプール装置２００が有するＲＡＭの集合の記憶領域は、サーバ装置１００，１００ａで実行される仮想マシンに割り当てることができる。ある仮想マシンに割り当てられた記憶領域には、その仮想マシンの実行に用いられるデータが記憶される。仮想マシンの実行に用いられるデータには、その仮想マシン上で実行されるＯＳのプログラム、デバイスドライバのプログラム、アプリケーションソフトウェアのプログラム、それらプログラムから利用されるその他のデータなどが含まれる。
【００５９】
また、ＲＡＭ２０１またはＲＡＭ２０２は、後述する仮想マシン管理テーブルを記憶する。仮想マシン管理テーブルは、サーバ物理アドレスとメモリプール装置２００が有するＲＡＭの物理アドレス（メモリプールアドレス）とを対応付ける。ある仮想マシンに割り当てられたメモリプール装置２００の記憶領域は、その仮想マシンが実行されているサーバ装置の記憶領域と対応付けられることになる。メモリプール装置２００の１つの記憶領域は、同時に複数の仮想マシンに対しては割り当てられない。
【００６０】
メモリコントローラ２１１は、ＲＡＭ２０１，２０２を含むＲＡＭの集合に対するアクセスを制御する。メモリコントローラ２１１は、サーバ装置１００のサーバ物理アドレスを指定したアクセス要求を、拡張バス３３およびバスインタフェース２１２を介してサーバ装置１００から受信する。すると、メモリコントローラ２１１は、メモリプール装置２００が有する仮想マシン管理テーブルを参照して、サーバ物理アドレスをメモリプールアドレスに変換する。そして、メモリコントローラ２１１は、変換されたメモリプールアドレスが示す記憶領域にアクセスし、アクセス結果をサーバ装置１００に返信する。
【００６１】
例えば、メモリコントローラ２１１は、変換されたメモリプールアドレスが示す記憶領域からデータを読み出してサーバ装置１００に返信する。また、メモリコントローラ２１１は、変換されたメモリプールアドレスが示す記憶領域にデータを書き込み、書き込み成否をサーバ装置１００に返信する。同様に、メモリコントローラ２１１は、サーバ装置１００ａのサーバ物理アドレスを指定したアクセス要求を、拡張バス３３およびバスインタフェース２１２を介してサーバ装置１００ａから受信する。すると、メモリコントローラ２１１は、仮想マシン管理テーブルを参照して、指定されたサーバ物理アドレスをメモリプールアドレスに変換し、メモリプールアドレスが示す記憶領域にアクセスする。
【００６２】
バスインタフェース２１２は、拡張バス３３に接続される通信インタフェースである。バスインタフェース２１２は、例えば、ケーブルを接続するポートを有する。バスインタフェース２１２は、拡張バス３３を介してサーバ装置１００，１００ａから、サーバ物理アドレスを指定したアクセス要求を受信し、メモリコントローラ２１１に転送する。また、バスインタフェース２１２は、メモリコントローラ２１１から取得したアクセス結果を、拡張バス３３を介してサーバ装置１００，１００ａに送信する。
【００６３】
次に、仮想マシンに関するデータの配置やアドレス管理について説明する。
図５は、仮想マシンの形成例を示す図である。
サーバ装置１００は、仮想マシンを制御する管理ソフトウェアとして、ハイパーバイザ１２０を実行している。サーバ装置１００ａは、仮想マシンを制御する管理ソフトウェアとして、ハイパーバイザ１２０ａを実行している。ここでは、サーバ装置１００のハイパーバイザ１２０上に、仮想マシン５０が配置されているとする。また、サーバ装置１００ａのハイパーバイザ１２０ａ上に、仮想マシン５０ａが配置されているとする。
【００６４】
ハイパーバイザ１２０は、仮想マシン５０に対して、サーバ装置１００が有する物理的・ハードウェア的なリソースの一部を割り当てる。物理的・ハードウェア的なリソースには、例えば、ＣＰＵ１０１の処理時間（ＣＰＵリソース）、ＲＡＭ１０２の記憶領域（ＲＡＭリソース）、ＮＩＣ１１４やＨＢＡ１１５の通信帯域（ネットワークリソース）などが含まれる。仮想マシン５０上では、ゲストＯＳ５１が実行される。ゲストＯＳ５１は、ゲストＯＳ５１上で起動されたプロセスをスケジューリングし、ハイパーバイザ１２０から割り当てられたリソースを用いてこれらプロセスを実行させる。
【００６５】
同様に、ハイパーバイザ１２０ａは、仮想マシン５０ａに対して、サーバ装置１００ａが有する物理的・ハードウェア的なリソースの一部を割り当てる。仮想マシン５０ａ上では、ゲストＯＳ５１ａが実行される。ゲストＯＳ５１ａは、ゲストＯＳ５１ａ上で起動されたプロセスをスケジューリングし、ハイパーバイザ１２０ａから割り当てられたリソースを用いてこれらプロセスを実行させる。
【００６６】
ここで、仮想マシン５０をサーバ装置１００からサーバ装置１００ａに移行することを考える。仮想マシン５０の移行は、ライブマイグレーションとして行う。例えば、サーバ装置１００，１００ａの負荷を監視する管理サーバ（図示せず）が、移行対象として仮想マシン５０を選択し、移行先としてサーバ装置１００ａを選択して、ライブマイグレーションを行うことを決定する。その場合、管理サーバがハイパーバイザ１２０，１２０ａの少なくとも一方に対して、ライブマイグレーションを指示する。
【００６７】
移行先のサーバ装置１００ａのハイパーバイザ１２０ａは、仮想マシン５０に対して、サーバ装置１００ａが有するリソースを割り当てる。サーバ装置１００ａで仮想マシン５０を実行する準備が整うと、移行元のサーバ装置１００のハイパーバイザ１２０は、仮想マシン５０を停止させる。また、ハイパーバイザ１２０は、仮想マシン５０に割り当てているＣＰＵリソースの実行状態の情報（例えば、ＣＰＵコアのレジスタ値）を収集し、仮想マシン５０に割り当てられたメモリプール装置２００の記憶領域に待避させる。
【００６８】
すると、ハイパーバイザ１２０ａは、仮想マシン５０に割り当てられたメモリプール装置２００の記憶領域をハイパーバイザ１２０から引き継ぐ。ハイパーバイザ１２０ａは、当該記憶領域からＣＰＵ実行状態の情報を読み出して、仮想マシン５０に割り当てたＣＰＵリソースに対して設定する。ハイパーバイザ１２０ａは、仮想マシン５０に割り当てたＣＰＵリソースを動作させることで、サーバ装置１００における停止直前の仮想マシン５０の状態から、仮想マシン５０の処理を再開することができる。ここで、仮想マシン５０のメモリイメージはメモリプール装置２００に記憶されており、移行先のサーバ装置１００ａのハイパーバイザ１２０ａがこの記憶領域を引き継ぐ。よって、サーバ装置１００からサーバ装置１００ａにメモリイメージをコピーしなくてよい。
【００６９】
図６は、仮想マシンに関するデータの配置例を示す図である。
ストレージ装置４０は、ディスクイメージ５３，５３ａを記憶する。ディスクイメージ５３は、仮想マシン５０が補助記憶装置に記憶あると認識するデータの集合である。ディスクイメージ５３ａは、仮想マシン５０ａが補助記憶装置に記憶あると認識するデータの集合である。メモリプール装置２００は、メモリイメージ５２，５２ａおよび仮想マシン管理テーブル２３１を記憶する。メモリイメージ５２は、仮想マシン５０が主記憶装置に記憶あると認識するデータの集合である。メモリイメージ５２ａは、仮想マシン５０ａが主記憶装置に記憶あると認識するデータの集合である。仮想マシン管理テーブル２３１は、メモリプール装置２００がアドレス変換に用いる変換テーブルである。
【００７０】
サーバ装置１００は、ハイパーバイザプログラム１２４およびページテーブル１３１を記憶する。ハイパーバイザプログラム１２４は、例えば、ＨＤＤ１０３に記憶されており、ＲＡＭ１０２にロードされる。ページテーブル１３１は、例えば、ＲＡＭ１０２上に生成される。サーバ装置１００ａは、ハイパーバイザプログラム１２４ａおよびページテーブル１３１ａを記憶する。ハイパーバイザプログラム１２４ａは、例えば、サーバ装置１００ａのＨＤＤに記憶されており、サーバ装置１００ａのＲＡＭにロードされる。ページテーブル１３１ａは、例えば、サーバ装置１００ａのＲＡＭ上に生成される。
【００７１】
ハイパーバイザプログラム１２４は、ハイパーバイザ１２０の処理を記載したプログラムである。ハイパーバイザプログラム１２４ａは、ハイパーバイザ１２０ａの処理を記載したプログラムである。ページテーブル１３１は、仮想マシン５０がサーバ装置１００上で実行されている間、サーバ装置１００が保持する変換テーブルである。ページテーブル１３１は、仮想マシン５０が認識する論理アドレスとサーバ装置１００が有するＲＡＭ１０２のサーバ物理アドレスとを対応付ける。ページテーブル１３１ａは、仮想マシン５０ａがサーバ装置１００ａ上で実行されている間、サーバ装置１００ａが保持する変換テーブルである。ページテーブル１３１ａは、仮想マシン５０ａが認識する論理アドレスとサーバ装置１００ａが有するＲＡＭのサーバ物理アドレスとを対応付ける。
【００７２】
このように、仮想マシン５０，５０ａに対応するディスクイメージ５３，５３ａは、ストレージ装置４０に集中して記憶される。また、仮想マシン５０，５０ａに対応するメモリイメージ５２，５２ａは、メモリプール装置２００に集中して記憶される。このため、仮想マシン５０，５０ａのマイグレーションが行われても、ディスクイメージ５３，５３ａやメモリイメージ５２，５２ａは移動させなくてよい。
【００７３】
一方、ハイパーバイザ１２０，１２０ａは移行されない。このため、ハイパーバイザプログラム１２４はそれが実行されるサーバ装置１００に記憶され、ハイパーバイザプログラム１２４ａはそれが実行されるサーバ装置１００ａに記憶される。また、ページテーブル１３１，１３１ａの内容は、仮想マシン５０，５０ａが配置されるサーバ装置に依存する。このため、ページテーブル１３１はサーバ装置１００で生成されて保持され、ページテーブル１３１ａはサーバ装置１００ａで生成されて保持されている。
【００７４】
図７は、アドレス空間の対応付け例を示す図である。
ここでは、仮想マシン５０が最初にサーバ装置１００に配置され、サーバ装置１００からサーバ装置１００ａに対してライブマイグレーションが行われる場合を考える。
【００７５】
メモリプール装置２００のＲＡＭリソースに対して、物理アドレス空間であるメモリプールアドレス空間２１３が定義されている。上記の通り、メモリプール装置２００には、予め仮想マシン管理テーブル２３１が記憶されている。例えば、仮想マシン管理テーブル２３１は、メモリプールアドレス空間２１３の中の「０ｘ００００００００００」から始まる記憶領域、すなわち、ＲＡＭリソースの先頭に記憶される。サーバ装置１００，１００ａは、仮想マシン管理テーブル２３１の位置を予め知っているものとする。
【００７６】
仮想マシン５０が起動するとき、メモリプール装置２００は、メモリプール装置２００のＲＡＭリソースの一部を仮想マシン５０に割り当てる。メモリプールアドレス空間２１３に、メモリイメージ５２を格納できる記憶領域が確保されることになる。例えば、メモリイメージ５２は、メモリプールアドレス空間２１３の中の「０ｘ０４００００００００」から始まる４Ｇバイトの記憶領域に記憶される。この記憶領域は、仮想マシン５０のマイグレーションを行っても変更されない。
【００７７】
また、仮想マシン５０ａが起動するとき、メモリプール装置２００は、メモリプール装置２００のＲＡＭリソースの一部を仮想マシン５０ａに割り当てる。メモリプールアドレス空間２１３に、メモリイメージ５２ａを格納できる記憶領域が確保されることになる。例えば、メモリイメージ５２ａは、メモリプールアドレス空間２１３の中の「０ｘ０８００００００００」から始まる８Ｇバイトの記憶領域に記憶される。この記憶領域は、仮想マシン５０ａのマイグレーションを行っても変更されない。
【００７８】
以下では、仮想マシン５０，５０ａのうち代表して仮想マシン５０について説明する。仮想マシン５０に対しては、仮想マシン５０が認識する仮想的な主記憶装置のアドレス空間として、論理アドレス空間５４が定義されている。論理アドレス空間５４は、仮想マシン５０のマイグレーションが行われても変更されない。例えば、論理アドレス空間５４は、「０ｘ４０００００」から始まる４Ｇバイトのアドレス空間である。仮想マシン５０のゲストＯＳ５１は、メモリイメージ５２にアクセスしようとする場合、論理アドレス空間５４内の論理アドレスを指定したアクセス要求を発行する。
【００７９】
仮想マシン５０がサーバ装置１００に配置される場合、サーバ装置１００は、サーバ装置１００のＲＡＭリソースの一部を仮想マシン５０に割り当てる。これは、仮想マシン５０に対する通常のリソース制御の中で行われる。サーバ装置１００のＲＡＭリソースに対しては、物理アドレス空間であるサーバ物理アドレス空間１１７が定義されている。よって、サーバ物理アドレス空間１１７に、メモリイメージ５２に対応する記憶領域が確保されることになる。例えば、サーバ物理アドレス空間１１７の中の「０ｘ１０００００００００」から始まる４Ｇバイトの記憶領域が確保される。ただし、メモリイメージ５２は実際にはメモリプール装置２００に記憶されるため、仮想マシン５０に割り当てられたサーバ物理アドレス空間１１７の記憶領域は、使用されず空状態となる。
【００８０】
メモリプール装置２００およびサーバ装置１００に記憶領域が確保されると、サーバ装置１００は、論理アドレス空間５４とサーバ物理アドレス空間１１７とを対応付けたページテーブル１３１を生成し、サーバ装置１００に保持する。また、サーバ装置１００は、サーバ物理アドレス空間１１７と、メモリイメージ５２が記憶される記憶領域のメモリプールアドレスとを対応付けて、仮想マシン管理テーブル２３１に登録する。
【００８１】
サーバ装置１００上の仮想マシン５０がメモリイメージ５２にアクセスする場合、仮想マシン５０は、論理アドレスを指定したアクセス要求を発行する。サーバ装置１００は、サーバ装置１００に記憶されたページテーブル１３１を参照して、論理アドレスをサーバ装置１００のサーバ物理アドレスに変換する。サーバ装置１００は、サーバ物理アドレスを指定したアクセス要求をメモリプール装置２００に送信する。メモリプール装置２００は、メモリプール装置２００に記憶された仮想マシン管理テーブル２３１を参照して、サーバ物理アドレスをメモリプールアドレスに変換する。メモリプール装置２００は、メモリプールアドレスが示す記憶領域にアクセスする。
【００８２】
その後、仮想マシン５０がサーバ装置１００ａに移行する場合、サーバ装置１００ａは、サーバ装置１００ａのＲＡＭリソースの一部を仮想マシン５０に割り当てる。サーバ装置１００ａのＲＡＭリソースに対しては、物理アドレス空間であるサーバ物理アドレス空間１１７ａが定義されている。よって、サーバ物理アドレス空間１１７ａに、メモリイメージ５２に対応する記憶領域が確保されることになる。サーバ装置１００ａのサーバ物理アドレス空間１１７ａは、サーバ装置１００のサーバ物理アドレス空間１１７とは異なる可能性がある。例えば、サーバ物理アドレス空間１１７ａの中の「０ｘ２４００００００００」から始まる４Ｇバイトの記憶領域が確保される。仮想マシン５０に割り当てられたサーバ物理アドレス空間１１７ａの記憶領域は、使用されず空状態となる。
【００８３】
サーバ装置１００ａに記憶領域が確保されると、サーバ装置１００ａは、論理アドレス空間５４とサーバ物理アドレス空間１１７ａとを対応付けたページテーブル１３１ａを生成し、サーバ装置１００ａに保持する。また、サーバ装置１００ａは、サーバ物理アドレス空間１１７ａと、メモリイメージ５２が記憶された記憶領域のメモリプールアドレスとが対応付けられるように、仮想マシン管理テーブル２３１を更新する。
【００８４】
サーバ装置１００ａ上の仮想マシン５０がメモリイメージ５２にアクセスする場合、仮想マシン５０は、論理アドレスを指定したアクセス要求を発行する。サーバ装置１００ａは、サーバ装置１００ａに記憶されたページテーブル１３１ａを参照して、論理アドレスをサーバ装置１００ａのサーバ物理アドレスに変換する。サーバ装置１００ａは、サーバ物理アドレスを指定したアクセス要求をメモリプール装置２００に送信する。メモリプール装置２００は、更新された仮想マシン管理テーブル２３１を参照して、サーバ物理アドレスをメモリプールアドレスに変換する。メモリプール装置２００は、メモリプールアドレスが示す記憶領域にアクセスする。
【００８５】
次に、サーバ装置１００とメモリプール装置２００の機能について説明する。
図８は、サーバ装置とメモリプール装置の機能例を示すブロック図である。
サーバ装置１００は、ハイパーバイザ１２０およびページテーブル記憶部１３０を有する。ハイパーバイザ１２０は、仮想マシン起動部１２１、メモリアクセス部１２２および仮想マシン移行部１２３を有する。仮想マシン起動部１２１、メモリアクセス部１２２および仮想マシン移行部１２３は、例えば、プログラムモジュールとして実装できる。ページテーブル記憶部１３０は、上記のページテーブル１３１を記憶する。ページテーブル記憶部１３０は、例えば、ＲＡＭ１０２に確保した記憶領域として実装できる。サーバ装置１００ａも、サーバ装置１００と同様の機能を有する。
【００８６】
仮想マシン起動部１２１は、仮想マシンの起動コマンドが入力されると、指定された仮想マシンをサーバ装置１００で起動する。起動コマンドは、例えば、ユーザ操作に応じて管理サーバ装置（図示せず）が、ＬＡＮ３１を介してサーバ装置１００に入力する。
【００８７】
仮想マシンの起動にあたり、仮想マシン起動部１２１は、サーバ装置１００のリソースを仮想マシンに割り当てる。また、仮想マシン起動部１２１は、メモリプール装置２００にメモリ要求を送信して、メモリプール装置２００に記憶領域を確保する。また、仮想マシン起動部１２１は、起動する仮想マシンに対応するページテーブルを生成し、ページテーブル記憶部１３０に格納する。また、仮想マシン起動部１２１は、メモリプール装置２００が有する仮想マシン管理テーブル２３１に仮想マシンを登録する。そして、仮想マシン起動部１２１は、ストレージ装置４０からメモリプール装置２００にＯＳプログラムをロードし、当該仮想マシンのゲストＯＳを起動する。
【００８８】
メモリアクセス部１２２は、サーバ装置１００で実行中の仮想マシンが発行したアクセス要求を検出する。検出するアクセス要求には、発行元の仮想マシンが使用する論理アドレス空間の論理アドレスが含まれる。メモリアクセス部１２２は、ページテーブル記憶部１３０に記憶された発行元の仮想マシンに対応するページテーブルを参照して、指定された論理アドレスをサーバ装置１００のサーバ物理アドレスに変換する。メモリアクセス部１２２は、ＲＡＭ１０２にアクセスする代わりに、サーバ物理アドレスを含むアクセス要求を、拡張バス３３を介してメモリプール装置２００に送信する。
【００８９】
仮想マシン移行部１２３は、仮想マシンのライブマイグレーションを制御する。ライブマイグレーションの開始は、例えば、管理サーバ装置（図示せず）がＬＡＮ３１を介してサーバ装置１００に指示する。その際、例えば、移行元のサーバ装置、移行先のサーバ装置、移行する仮想マシンなどが指定される。
【００９０】
サーバ装置１００が移行元である場合、仮想マシン移行部１２３は、移行する仮想マシンの論理アドレス空間のサイズを、移行先のサーバ装置に対して通知する。また、仮想マシン移行部１２３は、移行先のサーバ装置からの要求に応じて、移行する仮想マシンに対応するページテーブルをページテーブル記憶部１３０から読み出して提供する。また、仮想マシン移行部１２３は、移行先のサーバ装置から準備完了の通知を受け取ると、移行する仮想マシンをサーバ装置１００上で停止させる。仮想マシンの停止では、ゲストＯＳのシャットダウン手続きは行わなくてよく、ＣＰＵリソースの使用を即時に禁止すればよい。仮想マシン移行部１２３は、停止した仮想マシンのリソースを解放する。
【００９１】
サーバ装置１００が移行先である場合、仮想マシン移行部１２３は、サーバ装置１００のリソースを仮想マシンに割り当てる。また、仮想マシン移行部１２３は、移行元のサーバ装置から論理アドレス空間のサイズの通知を受け付け、通信されたサイズに応じたページテーブルを生成してページテーブル記憶部１３０に格納する。また、仮想マシン移行部１２３は、移行元のサーバ装置に要求して、移行する仮想マシンに対応する旧ページテーブルを取得する。仮想マシン移行部１２３は、取得した旧ページテーブルを参照して、ページテーブル記憶部１３０に格納したページテーブルを更新する。
【００９２】
以上の準備が完了すると、仮想マシン移行部１２３は、移行元のサーバ装置に準備完了を通知し、メモリプール装置２００に記憶された仮想マシン管理テーブル２３１を更新する。そして、仮想マシン移行部１２３は、メモリプール装置２００に記憶されたメモリイメージに基づいて、停止された仮想マシンの処理を再開する。
【００９３】
メモリプール装置２００は、領域割当部２２１、アクセス実行部２２２および管理テーブル記憶部２３０を有する。領域割当部２２１およびアクセス実行部２２２は、例えば、メモリコントローラ２１１内の回路モジュールとして実装できる。管理テーブル記憶部２３０は、上記の仮想マシン管理テーブル２３１を記憶する。管理テーブル記憶部２３０は、例えば、ＲＡＭ２０１に確保した記憶領域として実装できる。
【００９４】
領域割当部２２１は、サイズを指定したメモリ要求を、拡張バス３３を介してサーバ装置１００から受信する。すると、領域割当部２２１は、管理テーブル記憶部２３０に記憶された仮想マシン管理テーブル２３１を参照して、メモリプール装置２００が有するＲＡＭの記憶領域（ＲＡＭリソース）の中から、指定されたサイズの記憶領域であって何れの仮想マシンにもまだ割り当てられていない記憶領域を選択する。選択する記憶領域は、好ましくは、細分化されていない一続きの記憶領域とする。領域割当部２２１は、選択した記憶領域の先頭のメモリプールアドレスをサーバ装置１００に通知する。同様に、領域割当部２２１は、メモリ要求をサーバ装置１００ａから受信すると、未割り当ての記憶領域を選択し、メモリプールアドレスをサーバ装置１００ａに通知する。
【００９５】
アクセス実行部２２２は、サーバ物理アドレスを指定したアクセス要求を、拡張バス３３を介してサーバ装置１００から受信する。すると、アクセス実行部２２２は、管理テーブル記憶部２３０に記憶された仮想マシン管理テーブル２３１を参照して、サーバ物理アドレスをメモリプールアドレスに変換する。そして、アクセス実行部２２２は、メモリプールアドレスが示す記憶領域にアクセスし、アクセス結果（読み出したデータまたは書き込み成否）をサーバ装置１００に返信する。同様に、アクセス実行部２２２は、アクセス要求をサーバ装置１００ａから受信すると、サーバ物理アドレスをメモリプールアドレスに変換して記憶領域にアクセスし、アクセス結果をサーバ装置１００ａに返信する。
【００９６】
図９は、ページテーブルの例を示す図である。
ページテーブル１３１は、ページテーブル記憶部１３０に記憶されている。ページテーブル１３１は、サーバ物理アドレス、ロードフラグ、アクセス許可およびグローバルフラグの項目を有する。これらの項目を含む複数のエントリが、ページテーブル１３１に登録されている。複数のエントリは、仮想マシン５０の論理アドレスの順に並べられており、論理アドレスによってインデックスされる。すなわち、１つの論理アドレスから、ページテーブル１３１の１つのエントリが検索される。
【００９７】
サーバ物理アドレスの項目には、仮想マシン５０の論理アドレスに対応付けられたサーバ装置１００のサーバ物理アドレスが登録される。例えば、論理アドレス「０ｘ４０８０００」に対して、サーバ装置１００のサーバ物理アドレス「０ｘ１０００００８０００」が対応付けられる。ロードフラグは、論理アドレスが示すデータが、補助記憶装置（ディスクイメージ）から主記憶装置（メモリイメージ）にロード済みであるか否かを示す。ロードフラグが「１」であることは、データがロード済みであることを示す。ロードフラグが「０」であることは、データがロードされていないことを示す。
【００９８】
アクセス許可の項目には、論理アドレスが示す記憶領域に対して許可されているアクセスの種別が登録される。「Ｒ」は、データの読み出しが許可されていることを示す。「Ｗ」は、データの書き込みが許可されていることを示す。グローバルフラグは、論理アドレスが示すデータが、ローカルメモリ（サーバ装置１００のＲＡＭ１０２など）と外部メモリ（メモリプール装置２００のＲＡＭ２０１など）の何れに記憶されているかを示す。グローバルフラグが「１」であることは、外部メモリに記憶されていることを示す。グローバルフラグが「０」であることは、ローカルメモリに記憶されていることを示す。
【００９９】
図１０は、仮想マシン管理テーブルの例を示す図である。
仮想マシン管理テーブル２３１は、管理テーブル記憶部２３０に記憶されている。仮想マシン管理テーブル２３１は、仮想マシンＩＤ、オーナーＩＤ、サーバ物理アドレス、メモリプールアドレス、サイズおよびページテーブルアドレスの項目を有する。
【０１００】
仮想マシンＩＤは、仮想マシンを識別する識別情報である。図１０の例では、仮想マシン５０の仮想マシンＩＤが「ＶＭ１」であり、仮想マシン５０ａの仮想マシンＩＤが「ＶＭ２」である。オーナーＩＤは、仮想マシンを管理しているハイパーバイザを識別する識別情報である。図１０の例では、ハイパーバイザ１２０のオーナーＩＤが「ＨＶ１」であり、ハイパーバイザ１２０ａのオーナーＩＤが「ＨＶ２」である。
【０１０１】
サーバ物理アドレスの項目には、ハイパーバイザが仮想マシンに対して割り当てたローカルメモリの記憶領域の先頭アドレスが登録される。メモリプールアドレスの項目には、メモリプール装置２００が仮想マシンに対して割り当てた記憶領域の先頭アドレスが登録される。サイズの項目には、仮想マシンが使用する論理アドレス空間の大きさが登録される。ページテーブルアドレスの項目には、仮想マシンに対応するページテーブルが記憶されているローカルメモリの記憶領域の先頭アドレスが登録される。ページテーブルアドレスは、仮想マシンが配置されたサーバ装置のサーバ物理アドレスを用いて表される。
【０１０２】
次に、サーバ装置１００が実行する処理について説明する。サーバ装置１００ａも、サーバ装置１００と同様の処理を実行し得る。
図１１は、仮想マシン起動の手順例を示すフローチャートである。
【０１０３】
ここでは、仮想マシン５０がサーバ装置１００で起動される場合を考える。
（Ｓ１０）仮想マシン起動部１２１は、サーバ装置１００が有するローカルメモリ（ＲＡＭ１０２）の中から、仮想マシン５０に割り当てる記憶領域を選択する。選択する記憶領域のサイズは、原則として、仮想マシン５０が使用する論理アドレス空間５４のサイズと一致させる。論理アドレス空間５４のサイズは、例えば、ストレージ装置４０に記憶された設定情報や、管理サーバ装置からサーバ装置１００に通知される情報に含まれる。
【０１０４】
（Ｓ１１）仮想マシン起動部１２１は、仮想マシン５０に対応するページテーブル１３１を生成し、ページテーブル記憶部１３０に格納する。ページテーブル１３１のサイズは、論理アドレス空間５４のサイズによって決まる。ページテーブル１３１に登録されるサーバ物理アドレスは、ステップＳ１０で選択されたローカルメモリの記憶領域に基づいて決定される。ロードフラグの初期値は「０」とする。アクセス許可の初期値は、例えば、「ＲＷ」（読み出しと書き込みを許可）とする。グローバルフラグは「１」とする。
【０１０５】
（Ｓ１２）仮想マシン起動部１２１は、論理アドレス空間５４のサイズを指定したメモリ要求を、拡張バス３３を介してメモリプール装置２００に送信する。
（Ｓ１３）領域割当部２２１は、メモリプール装置２００が有する未使用のＲＡＭリソース（メモリプール）の中から、原則として、指定されたサイズの記憶領域を選択する。領域割当部２２１は、好ましくは、細分化されていない一続きの記憶領域を選択する。
【０１０６】
（Ｓ１４）領域割当部２２１は、ステップＳ１３で選択した記憶領域の先頭を示すメモリプールアドレスを、拡張バス３３を介してサーバ装置１００に通知する。メモリプールアドレスの通知は、割り当て成功を示す応答としての意味をもつ。
【０１０７】
（Ｓ１５）仮想マシン起動部１２１は、拡張バス３３を介してメモリプール装置２００から仮想マシン管理テーブル２３１を取得する。メモリプール装置２００からの仮想マシン管理テーブル２３１の読み出しは、例えば、メモリイメージ５２へのアクセスに準じた方法で行う。メモリイメージ５２へのアクセスについては後述する。なお、仮想マシン管理テーブル２３１を取得する場合、仮想マシン起動部１２１は、例えば、仮想マシン管理テーブル２３１が記憶された所定の記憶領域を示す所定のアドレスを指定する。所定のアドレスは、予めハイパーバイザ１２０が知っているものとする。
【０１０８】
（Ｓ１６）仮想マシン起動部１２１は、ステップＳ１５で取得した仮想マシン管理テーブル２３１に仮想マシン５０の情報を登録する。すなわち、仮想マシン起動部１２１は、仮想マシン５０の仮想マシンＩＤとハイパーバイザ１２０のオーナーＩＤを、仮想マシン管理テーブル２３１に登録する。また、仮想マシン起動部１２１は、ステップＳ１０で選択した記憶領域の先頭のサーバ物理アドレスと、ステップＳ１４で通知されたメモリプールアドレスを、仮想マシン管理テーブル２３１に登録する。また、仮想マシン起動部１２１は、論理アドレス空間５４のサイズと、ステップＳ１１で生成されたページテーブル１３１の先頭のサーバ物理アドレスを、仮想マシン管理テーブル２３１に登録する。
【０１０９】
そして、仮想マシン起動部１２１は、更新した仮想マシン管理テーブル２３１を、拡張バス３３を介してメモリプール装置２００に書き戻す。メモリプール装置２００への仮想マシン管理テーブル２３１の書き込みは、例えば、メモリイメージ５２へのアクセスに準じた方法で行う。仮想マシン起動部１２１は、例えば、仮想マシン管理テーブル２３１が記憶された所定の記憶領域を示す所定のアドレスを指定する。
【０１１０】
（Ｓ１７）仮想マシン起動部１２１は、仮想マシン５０の起動を開始する。例えば、サーバ装置１００は、ＳＡＮ３２を介してストレージ装置４０からゲストＯＳ５１のプログラムを読み出す。そして、サーバ装置１００は、ゲストＯＳ５１のプログラムを、メモリイメージ５２のデータとして、ステップＳ１３で選択された記憶領域に拡張バス３３を介してロードする。サーバ装置１００は、ロードされたゲストＯＳ５１のプログラムの実行を開始させる。メモリイメージ５２へのアクセスについては後述する。
【０１１１】
図１２は、メモリアクセスの手順例を示すフローチャートである。
ここでは、仮想マシン５０がサーバ装置１００上で実行されている場合を考える。
（Ｓ２０）メモリアクセス部１２２は、仮想マシン５０が発行したアクセス要求を取得する。このアクセス要求には、アクセス先の指定として、仮想マシン５０が使用する論理アドレス空間５４に属する何れかの論理アドレスが含まれている。
【０１１２】
（Ｓ２１）メモリアクセス部１２２は、ページテーブル記憶部１３０から、仮想マシン５０に対応するページテーブル１３１を選択する。
（Ｓ２２）メモリアクセス部１２２は、ステップＳ２１で選択したページテーブル１３１から、アクセス要求で指定された論理アドレスに対応付けられているサーバ物理アドレスとグローバルフラグとを検索する。
【０１１３】
（Ｓ２３）メモリアクセス部１２２は、ステップＳ２２で検索されたグローバルフラグが「１」であるか、すなわち、指定された論理アドレスに対応するデータが外部メモリに存在するか判断する。グローバルフラグが「１」である場合、ステップＳ２４に処理が進む。グローバルフラグが「０」である場合、すなわち、論理アドレスに対応するデータがローカルメモリに存在する場合、ステップＳ２７に処理が進む。
【０１１４】
（Ｓ２４）メモリアクセス部１２２は、拡張バス３３を介してアクセス要求をメモリプール装置２００に送信する。このアクセス要求には、アクセス先の指定として、ステップＳ２２で検索されたサーバ物理アドレスが含まれる。すなわち、メモリアクセス部１２２は、ページテーブル１３１を用いて、仮想マシン５０が指定した論理アドレスをサーバ装置１００のサーバ物理アドレスに変換していると言うことができる。また、このアクセス要求には、仮想マシン５０の仮想マシンＩＤが含まれる。
【０１１５】
（Ｓ２５）アクセス実行部２２２は、管理テーブル記憶部２３０に記憶された仮想マシン管理テーブル２３１から、アクセス要求に含まれる仮想マシンＩＤに対応付けられている先頭のサーバ物理アドレスと先頭のメモリプールアドレスを検索する。アクセス実行部２２２は、アクセス要求で指定されたサーバ物理アドレスと、検索された先頭のサーバ物理アドレスと、検索された先頭のメモリプールアドレスとから、アクセス先のメモリプールアドレスを算出する。例えば、先頭のサーバ物理アドレスが「０ｘ１０００００００００」、先頭のメモリプールアドレスが「０ｘ０４００００００００」、アクセス先のサーバ物理アドレスが「０ｘ１０００００８０００」である場合、アクセス先のメモリプールアドレスは「０ｘ０ｘ０４００００８０００」と算出される。
【０１１６】
（Ｓ２６）アクセス実行部２２２は、ステップＳ２５で算出したメモリプールアドレスが示す記憶領域にアクセスし、アクセス結果を拡張バス３３を介してサーバ装置１００に返信する。例えば、アクセス要求が読み出し要求である場合、アクセス実行部２２２は、メモリプールアドレスが示す記憶領域からデータを読み出してサーバ装置１００に送信する。アクセス要求が書き込み要求である場合、アクセス実行部２２２は、メモリプールアドレスが示す記憶領域にデータを書き込み、書き込み成否をサーバ装置１００に通知する。そして、ステップＳ２８に処理が進む。
【０１１７】
（Ｓ２７）メモリアクセス部１２２は、ステップＳ２２で検索されたサーバ物理アドレスに従ってローカルメモリ（ＲＡＭ１０２）にアクセスする。
（Ｓ２８）メモリアクセス部１２２は、ステップＳ２６またはステップＳ２７のアクセス結果（読み出したデータまたは書き込みの成否）を仮想マシン５０に通知する。
【０１１８】
図１３は、仮想マシン移行の手順例を示すフローチャートである。
ここでは、サーバ装置１００で実行中の仮想マシン５０を、ライブマイグレーションによってサーバ装置１００ａに移行する場合を考える。
【０１１９】
（Ｓ３０）仮想マシン移行部１２３は、仮想マシン５０が使用する論理アドレス空間５４のサイズを、ＬＡＮ３１を介して移行先のサーバ装置１００ａに通知する。なお、移行する仮想マシンや移行先のサーバ装置は、例えば、ライブマイグレーションを決定した管理サーバ装置などからサーバ装置１００に通知されている。
【０１２０】
（Ｓ３１）サーバ装置１００ａのハイパーバイザ１２０ａは、サーバ装置１００ａが有するローカルメモリの中から、仮想マシン５０に割り当てる記憶領域を選択する。選択する記憶領域のサイズは、原則として、通知されたサイズと一致させる。
【０１２１】
（Ｓ３２）ハイパーバイザ１２０ａは、仮想マシン５０に対応するページテーブル１３１ａを生成し、サーバ装置１００ａ上に保持する。ページテーブル１３１ａは、サーバ装置１００が有するページテーブル１３１に相当するものである。ページテーブル１３１ａのサイズは、通知された論理アドレス空間５４のサイズによって決まる。ページテーブル１３１ａに登録されるサーバ物理アドレスは、ステップＳ３１で選択されたローカルメモリの記憶領域に基づいて決定される。ただし、ページテーブル１３１ａのロードフラグ、アクセス許可およびグローバルフラグは、この段階では空（未定義）にしておく。
【０１２２】
（Ｓ３３）ハイパーバイザ１２０ａは、拡張バス３３を介してメモリプール装置２００から仮想マシン管理テーブル２３１を取得する。
（Ｓ３４）ハイパーバイザ１２０ａは、ＬＡＮ３１を介して移行元のサーバ装置１００に、旧ページテーブル（ページテーブル１３１）を要求する。このとき、ハイパーバイザ１２０ａは、ステップＳ３３で取得した仮想マシン管理テーブル２３１から、仮想マシン５０に対応付けられているページテーブルアドレスを検索する。このページテーブルアドレスは、ページテーブル１３１の位置を示すサーバ装置１００のサーバ物理アドレスである。ハイパーバイザ１２０ａは、サーバ装置１００にページテーブル１３１を要求するとき、検索されたページテーブルアドレスを指定する。
【０１２３】
（Ｓ３５）仮想マシン移行部１２３は、サーバ装置１００ａから指定されたページテーブルアドレスに基づいて、ページテーブル記憶部１３０からページテーブル１３１を取得し、ＬＡＮ３１を介してサーバ装置１００ａに送信する。
【０１２４】
（Ｓ３６）ハイパーバイザ１２０ａは、サーバ装置１００から取得したページテーブル１３１に基づいて、ステップＳ３２で生成したページテーブル１３１ａを更新する。すなわち、ハイパーバイザ１２０ａは、ページテーブル１３１ａのロードフラグ、アクセス許可およびグローバルフラグの項目に、ページテーブル１３１の値をコピーする。
【０１２５】
（Ｓ３７）ハイパーバイザ１２０ａは、ステップＳ３６のページテーブル１３１ａの更新が正常終了したか判断する。更新が正常終了した場合はステップＳ３８に処理が進み、正常終了しなかった場合はライブマイグレーションが停止する。
【０１２６】
（Ｓ３８）ハイパーバイザ１２０ａは、ページテーブル１３１ａの準備が終わると、ＬＡＮ３１を介してサーバ装置１００に準備完了を通知する。
（Ｓ３９）仮想マシン移行部１２３は、サーバ装置１００で実行されている仮想マシン５０を強制停止させる。このとき、仮想マシン５０は、ゲストＯＳのシャットダウンなどの正規の終了手続きを行わなくてよい。例えば、仮想マシン移行部１２３は、仮想マシン５０によるＣＰＵリソースの使用を禁止して、仮想マシン５０の処理の進行を止める。なお、仮想マシン移行部１２３は、仮想マシン５０に割り当てられたＣＰＵコアから実行状態の情報（レジスタの値など）を抽出し、メモリプール装置２００に記憶された仮想マシン５０のメモリイメージ５２に退避するようにしてもよい。
【０１２７】
（Ｓ４０）ハイパーバイザ１２０ａは、ステップＳ３３で取得した仮想マシン管理テーブル２３１に登録されている仮想マシン５０の情報を更新する。すなわち、ハイパーバイザ１２０ａは、仮想マシン５０に対応付けられたオーナーＩＤを、ハイパーバイザ１２０ａの識別情報に更新する。また、ハイパーバイザ１２０ａは、仮想マシン５０に対応付けられたサーバ物理アドレスを、ステップＳ３１で選択したサーバ装置１００ａの記憶領域の先頭のサーバ物理アドレスに更新する。また、ハイパーバイザ１２０ａは、仮想マシン５０に対応付けられたページテーブルアドレスを、ステップＳ３２で生成されたページテーブル１３１ａの先頭のサーバ物理アドレスに更新する。
【０１２８】
そして、ハイパーバイザ１２０ａは、更新した仮想マシン管理テーブル２３１を、拡張バス３３を介してメモリプール装置２００に書き戻す。
（Ｓ４１）ハイパーバイザ１２０ａは、仮想マシン５０の処理を再開させる。すなわち、サーバ装置１００ａは、拡張バス３３を介してメモリプール装置２００からメモリイメージ５２のデータを読み出し、サーバ装置１００ａのＣＰＵを用いて仮想マシン５０を実行する。このとき、サーバ装置１００は、メモリイメージ５２に退避された実行状態の情報を、サーバ装置１００ａが有するＣＰＵコアに設定し（例えば、レジスタに書き込み）、サーバ装置１００のＣＰＵコアの実行状態を引き継ぐようにしてもよい。
【０１２９】
第２の実施の形態の情報処理システムによれば、サーバ装置１００，１００ａに接続されたメモリプール装置２００に、メモリイメージ５２と仮想マシン管理テーブル２３１が記憶される。サーバ装置１００で仮想マシン５０が実行されているときは、ページテーブル１３１および仮想マシン管理テーブル２３１に基づいて、サーバ装置１００からメモリイメージ５２にアクセスされる。仮想マシン５０を移行する場合、サーバ装置１００からサーバ装置１００ａに論理アドレス空間５４のサイズが通知され、サーバ装置１００ａでページテーブル１３１ａが生成される。そして、サーバ装置１００で仮想マシン５０が停止され、メモリプール装置２００の仮想マシン管理テーブル２３１が更新され、サーバ装置１００ａで仮想マシン５０の実行が再開される。サーバ装置１００ａで仮想マシン５０が実行されているときは、ページテーブル１３１ａおよび更新された仮想マシン管理テーブル２３１に基づいて、サーバ装置１００ａからメモリイメージ５２にアクセスされる。
【０１３０】
これにより、サーバ装置１００からサーバ装置１００ａにメモリイメージ５２をコピーしなくても仮想マシン５０のライブマイグレーションを行うことができ、ライブマイグレーションの所要時間を短縮できる。特に、仮想マシン５０の論理アドレス空間５４が大きくなっても、ＬＡＮ３１上の通信時間を抑制することができる。
【０１３１】
例えば、アドレス長が６４ビット、メモリイメージ５２のサイズが８Ｇバイト、データアクセス単位であるページのサイズが２５６Ｍバイト、ＬＡＮ３１の速度が１０Ｇｂｐｓであるとする。また、ライブマイグレーションのポーズ期間、すなわち、移行元のサーバ装置で仮想マシン５０を停止してから、移行先のサーバ装置で仮想マシン５０を再開させるまでの所要時間が、０．１秒であるとする。この場合、８Ｇバイトのメモリイメージ５２をＬＡＮ３１を介して転送しようとすると、ライブマイグレーションの所要時間は、８Ｇバイト／１０Ｇｂｐｓ＋０．１秒＝６．５秒となる。
【０１３２】
一方、上記のようにメモリプール装置２００を利用すると、メモリイメージ５２を転送しなくてよく、その代わりにページテーブル１３１を転送することになる。よって、ライブマイグレーションの所要時間は、８Ｇバイト／２５６Ｍバイト×６４ビット／１０Ｇｂｐｓ＋０．１秒＝約０．１秒となる。すなわち、上記の試算によれば、ライブマイグレーションの所要時間を６０分の１以下に短縮することができる。
【０１３３】
また、仮想マシン５０の論理アドレスが、ページテーブル１３１と仮想マシン管理テーブル２３１を二段階で使用して、メモリプール装置２００の物理アドレスに変換される。ライブマイグレーションの際には、移行先のサーバ装置１００ａに合わせてページテーブル１３１ａが生成され、仮想マシン管理テーブル２３１が更新される。よって、異なるサーバ装置間や異なるハイパーバイザ間でも、メモリイメージ５２をコピーせずに仮想マシン５０を円滑に移行することができる。また、メモリプール装置２００へのアクセスにサーバ装置１００，１００ａの物理アドレスを用いることで、サーバ装置１００，１００ａが有するローカルメモリへのアクセスとの整合性を取ることが容易となる。このため、既存のメモリアーキテクチャを利用してメモリプール装置２００にアクセスできる。
【０１３４】
［第３の実施の形態］
次に、第３の実施の形態を説明する。第２の実施の形態との違いを中心に説明し、第２の実施の形態と同様の事項については説明を省略することがある。第３の実施の形態の情報処理システムは、メモリプール装置を利用する代わりに、ＳＭＰ（Symmetric Multiprocessing）およびＮＵＭＡ（Non-Uniform Memory Access）の仕組みを利用する。第３の実施の形態では、ＳＭＰおよびＮＵＭＡの仕組みを利用して、複数のサーバ装置が有するＲＡＭリソースを仮想的に統合しプール領域を作成する。
【０１３５】
図１４は、第３の実施の形態の情報処理システムを示す図である。
第３の実施の形態の情報処理システムは、ＬＡＮ３１、ＳＡＮ３２、拡張バス３３、ストレージ装置４０およびサーバ装置１００ｂ，１００ｃを有する。サーバ装置１００ｂ，１００ｃは、ＬＡＮ３１、ＳＡＮ３２および拡張バス３３に接続されている。ストレージ装置４０は、ＳＡＮ３２に接続されている。
【０１３６】
サーバ装置１００ｂは、ＬＡＮ３１を介してサーバ装置１００ｃと通信することができる。また、サーバ装置１００ｂ，１００ｃは、ＳＡＮ３２を介してストレージ装置４０にアクセスすることができる。また、サーバ装置１００ｂは、拡張バス３３を介してサーバ装置１００ｃのＲＡＭにアクセスすることができ、サーバ装置１００ｃは、拡張バス３３を介してサーバ装置１００ｂのＲＡＭにアクセスすることができる。
【０１３７】
図１５は、仮想マシンに関するデータの他の配置例を示す図である。
ストレージ装置４０には、第２の実施の形態と同様に、仮想マシン５０のディスクイメージ５３と仮想マシン５０ａのディスクイメージ５３ａとが記憶されている。
【０１３８】
サーバ装置１００ｂが有するＲＡＭには、サーバ装置１００ｂで実行されるハイパーバイザプログラム１２４ｂと、仮想マシン５０に対応するページテーブル１３１が記憶される。更に、サーバ装置１００ｂが有するＲＡＭには、仮想マシン５０のメモリイメージ５２と、仮想マシン管理テーブル２３１とが記憶される。サーバ装置１００ｃが有するＲＡＭには、サーバ装置１００ｃで実行されるハイパーバイザプログラム１２４ｃと、仮想マシン５０ａに対応するページテーブル１３１ａが記憶される。更に、サーバ装置１００ｃが有するＲＡＭには、仮想マシン５０ａのメモリイメージ５２ａが記憶される。
【０１３９】
ここで、サーバ装置１００ｂが有するＲＡＭの記憶領域は、個別領域１４１と、プール領域２４１に含まれる領域とに分割されている。また、サーバ装置１００ｃが有するＲＡＭの記憶領域は、個別領域１４１ａと、プール領域２４１に含まれる領域とに分割されている。ハイパーバイザプログラム１２４ｂおよびページテーブル１３１は、個別領域１４１に記憶される。ハイパーバイザプログラム１２４ｃおよびページテーブル１３１ａは、個別領域１４１ａに記憶される。メモリイメージ５２、メモリイメージ５２ａおよび仮想マシン管理テーブル２３１は、プール領域２４１に記憶される。
【０１４０】
個別領域１４１は、サーバ装置１００ｂがアクセスしサーバ装置１００ｃはアクセスしない記憶領域である。個別領域１４１は、第２の実施の形態におけるサーバ装置１００のローカルメモリに相当する。また、個別領域１４１ａは、サーバ装置１００ｃがアクセスしサーバ装置１００ｂはアクセスしない記憶領域である。個別領域１４１ａは、第２の実施の形態におけるサーバ装置１００ａのローカルメモリに相当する。一方、プール領域２４１は、ＳＭＰおよびＮＵＭＡの仕組みを利用してサーバ装置１００ｂ，１００ｃが共有する記憶領域である。プール領域２４１は、第２の実施の形態におけるメモリプール装置２００が有するＲＡＭの記憶領域に相当する。
【０１４１】
個別領域１４１は、サーバ装置１００ｂの個別のサーバ物理アドレスによってアクセスされる。個別領域１４１ａは、サーバ装置１００ｃの個別のサーバ物理アドレスによってアクセスされる。一方、プール領域２４１は、サーバ装置１００ｂ，１００ｃに共通の物理アドレスによってアクセスされる。この物理アドレス（プール領域アドレス）は、第２の実施の形態におけるメモリプール装置２００のメモリプールアドレスに相当する。
【０１４２】
第３の実施の形態における仮想マシン起動、メモリアクセスおよび仮想マシン移行の流れは、図１１〜１３に示した第２の実施の形態のものと同様になる。ただし、第３の実施の形態では、複数のサーバ装置の何れか１つが、プール領域２４１に対するアクセス要求を受け付ける受付機能を有する。この受付機能は、第２の実施の形態におけるメモリコントローラ２１１の機能に相当する。図１５の例では、サーバ装置１００ｂが受付機能を有する。よって、仮想マシン管理テーブル２３１はサーバ装置１００ｂに記憶される。
【０１４３】
他のサーバ装置は、受付機能を有するサーバ装置を予め知っているものとする。他のサーバ装置は、プール領域２４１にアクセスしようとする場合、拡張バス３３を介して、受付機能を有するサーバ装置１００ｂにアクセス要求を送信する。サーバ装置１００ｂは、仮想マシン管理テーブル２３１からプール領域アドレスを検索し、ＳＭＰおよびＮＵＭＡの仕組みに基づいて、そのプール領域アドレスが割り当てられているサーバ装置にアクセス要求を転送する。転送先のサーバ装置は、アクセス結果を、受付機能を有するサーバ装置１００ｂを介さずに、アクセス要求を発行したサーバ装置に直接送信する。
【０１４４】
ここで、図１１の仮想マシン起動の手順を第３の実施の形態に当てはめると、サーバ装置１００ｂは個別領域１４１から記憶領域を選択し、論理アドレスと選択した記憶領域のサーバ物理アドレスとを対応付けたページテーブル１３１を生成する。サーバ装置１００ｂは、拡張バス３３を介して、所定のサーバ装置（サーバ装置１００ｂ自身）にメモリ要求を送信する。所定のサーバ装置は、プール領域２４１から記憶領域（好ましくは、仮想マシン５０が実行されるサーバ装置１００ｂの記憶領域）を選択する。サーバ装置１００ｂは、仮想マシン管理テーブル２３１に、個別領域１４１のサーバ物理アドレスとプール領域２４１のプール領域アドレスと対応付けて登録する。
【０１４５】
また、図１２のメモリアクセスの手順を第３の実施の形態に当てはめると、サーバ装置１００ｂはページテーブル１３１を用いて、仮想マシン５０の論理アドレスを個別領域１４１のサーバ物理アドレスに変換する。サーバ装置１００ｂは、サーバ物理アドレスを指定したアクセス要求を、拡張バス３３を介して所定のサーバ装置（サーバ装置１００ｂ自身）に送信する。所定のサーバ装置は、仮想マシン管理テーブル２３１を用いて、サーバ物理アドレスをプール領域２４１のプール領域アドレスに変換する。所定のサーバ装置は、拡張バス３３を介して、そのプール領域アドレスを使用するサーバ装置（サーバ装置１００ｂ）にアクセス要求を転送する。転送先のサーバ装置は、メモリイメージ５２にアクセスし、アクセス結果を拡張バス３３を介してサーバ装置１００ｂに送信する。
【０１４６】
また、図１３の仮想マシン移行の手順を第３の実施の形態に当てはめると、サーバ装置１００ｂはサーバ装置１００ｃに論理アドレス空間５４のサイズを通知する。サーバ装置１００ｂは、個別領域１４１ａから記憶領域を選択し、論理アドレスと選択した記憶領域のサーバ物理アドレスとを対応付けたページテーブル１３１ａを生成する。サーバ装置１００ｂは、ページテーブル１３１を、ＬＡＮ３１を介してサーバ装置１００ｃに送信する。サーバ装置１００ｃは、ページテーブル１３１ａにページテーブル１３１の内容を反映させる。サーバ装置１００ｂは、仮想マシン５０を停止させる。サーバ装置１００ｃは、拡張バス３３を介して仮想マシン管理テーブル２３１を更新して、プール領域２４１のプール領域アドレスに個別領域１４１ａのサーバ物理アドレスを対応付ける。
【０１４７】
ライブマイグレーションが完了した後は、サーバ装置１００ｃはページテーブル１３１ａを用いて、仮想マシン５０の論理アドレスを個別領域１４１ａのサーバ物理アドレスに変換する。サーバ装置１００ｃは、サーバ物理アドレスを指定したアクセス要求を、拡張バス３３を介して所定のサーバ装置（サーバ装置１００ｂ）に送信する。所定のサーバ装置は、仮想マシン管理テーブル２３１を用いて、サーバ物理アドレスをプール領域２４１のプール領域アドレスに変換する。所定のサーバ装置は、拡張バス３３を介して、そのプール領域アドレスを使用するサーバ装置（サーバ装置１００ｂ）にアクセス要求を転送する。転送先のサーバ装置は、メモリイメージ５２にアクセスし、アクセス結果を拡張バス３３を介してサーバ装置１００ｃに送信する。
【０１４８】
第３の実施の形態の情報処理装置によれば、第２の実施の形態と同様の効果が得られる。更に、第３の実施の形態では、メモリプール装置２００を別途用意しなくてもよい。
なお、前述のように、第１の実施の形態の情報処理は、情報処理装置１０，１０ａにプログラムを実行させることで実現できる。第２の実施の形態の情報処理は、サーバ装置１００，１００ａにプログラムを実行させることで実現できる。第３の実施の形態の情報処理は、サーバ装置１００ｂ，１００ｃにプログラムを実行させることで実現できる。
【０１４９】
プログラムは、コンピュータ読み取り可能な記録媒体（例えば、記録媒体１０９）に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、ＦＤおよびＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からＨＤＤなどの他の記録媒体（例えば、ＨＤＤ１０３）にプログラムをコピーして実行してもよい。
【符号の説明】
【０１５０】
３  仮想マシン
１０，１０ａ  情報処理装置
１１，１１ａ  対応情報
１２  サイズ情報
２０  メモリ装置
２１  データ
２２  管理情報
【図１】
2016167143.tif 000003
【図２】
2016167143.tif 000004
【図３】
2016167143.tif 000005
【図４】
2016167143.tif 000006
【図５】
2016167143.tif 000007
【図６】
2016167143.tif 000008
【図７】
2016167143.tif 000009
【図８】
2016167143.tif 000010
【図９】
2016167143.tif 000011
【図１０】
2016167143.tif 000012
【図１１】
2016167143.tif 000013
【図１２】
2016167143.tif 000014
【図１３】
2016167143.tif 000015
【図１４】
2016167143.tif 000016
【図１５】
2016167143.tif 000017