(57)【要約】【課題】マイグレーションに伴うサービスの中断時間を短縮する。【解決手段】第１の計算機と第２の計算機とのいずれか一方が仮想化機構を有する計算機であり、他方が仮想化機構を有さない計算機である。マイグレーションの指示に応答して、第１の計算機で実行中のＯＳを中断する。中断時点でそのＯＳのために用いている、第１の計算機のメモリ領域の内容を第２の計算機のメモリ領域に移行する。この移行には、ＯＳの中断点を示す情報の格納領域を含む。第１の計算機と第２の計算機との間の仮想化機構に関わるメモリ領域管理方法を変換する。その後、第２の計算機は中断点を示す情報を参照し、移行されたメモリ領域の内容を用いてＯＳの実行を再開する。【選択図】図１
2009145931.tif 000002
【特許請求の範囲】
【請求項１】
第１の計算機と第２の計算機との間のＯＳマイグレーション方法であって、
前記第１の計算機と前記第２の計算機とのいずれか一方が仮想化機構を有する計算機であり、他方が仮想化機構を有さない計算機であり、
マイグレーションの指示に応答して、前記第１の計算機で実行中のＯＳを中断し、
前記中断点を示す情報の格納領域を含む、前記中断時点で前記ＯＳのために用いている、前記第１の計算機のメモリ領域の内容を前記第２の計算機のメモリ領域に移行し、
前記第１の計算機と前記第２の計算機との間の前記仮想化機構に関わるメモリ領域管理方法を変換し、
前記第２の計算機は前記中断点を示す情報を参照し、前記移行されたメモリ領域の内容を用いて前記ＯＳの実行を再開する
ことを特徴とするＯＳマイグレーション方法。
【請求項２】
請求項１のＯＳマイグレーション方法であって，前記第１の計算機のメモリ領域の内容の前記第２の計算機のメモリ領域への移行は、前記第２の計算機上で実行するＯＳを外部から読み込むためのローダが、前記第２の計算機のメモリ領域に読み込むことを特徴とするＯＳマイグレーション方法。
【請求項３】
請求項２のＯＳマイグレーション方法であって，前記第１の計算機で実行中のＯＳの中断後に、前記第２の計算機をマイグレーション先とする指定に応答して、前記第１の計算機のメモリ領域の内容の前記第２の計算機のメモリ領域への移行を開始することを特徴とするＯＳマイグレーション方法。
【請求項４】
請求項３のＯＳマイグレーション方法であって，前記第１の計算機のメモリ領域の内容の前記第２の計算機のメモリ領域への移行は、前記第１の計算機のメモリ領域の内容を、前記第１の計算機と前記第２の計算機とを接続するネットワークを介して、前記ローダが前記第２の計算機のメモリ領域に読み込むことを特徴とするＯＳマイグレーション方法。
【請求項５】
請求項４のＯＳマイグレーション方法であって，前記第２の計算機は、前記ネットワークに接続する第３の計算機から前記ローダを前記第２の計算機にダウンロードすることを特徴とするＯＳマイグレーション方法。
【請求項６】
請求項４のＯＳマイグレーション方法であって，前記第１の計算機は、前記ローダからの要求に応じて、前記第１の計算機のメモリ領域の内容を前記ネットワークを介して前記第２の計算機へ転送することを特徴とするＯＳマイグレーション方法。
【請求項７】
請求項６のＯＳマイグレーション方法であって，前記ローダは、前記第１の計算機のメモリ領域の内容の転送元のネットワークアドレスをパラメータとして有することを特徴とするＯＳマイグレーション方法。
【請求項８】
請求項３のＯＳマイグレーション方法であって，前記第１の計算機のメモリ領域の内容の前記第２の計算機のメモリ領域への移行は、前記第１の計算機が外部記憶装置に格納した前記第１の計算機のメモリ領域の内容を、前記ローダが前記第２の計算機のメモリ領域に読み込むことを特徴とするＯＳマイグレーション方法。
【請求項９】
請求項３のＯＳマイグレーション方法であって，前記第１の計算機で実行中のＯＳの中断と共に、前記中断するＯＳが使用中のＩ／Ｏデバイスの電源をオフすることを特徴とするＯＳマイグレーション方法。
【請求項１０】
マイグレーションの指示に応答して、仮想化機構の下で実行中のＯＳを中断し、
前記中断点を示す情報の格納領域を含む、前記中断時点で前記ＯＳのために用いているメモリ領域の内容のスナップショットをとる、前記仮想化機構を有する第１の計算機、及び
前記第１の計算機と接続し、前記スナップショットをとった前記第１の計算機のメモリ領域の内容をメモリ領域に移行し、前記移行したメモリ領域の中で前記ＯＳがレジスタをエミュレートするために用いていた領域の内容を対応するレジスタに設定し、
前記中断点を示す情報を参照し、前記移行されたメモリ領域の内容を用いて前記ＯＳの実行を再開する第２の計算機
を有することを特徴とするＯＳをマイグレーションする計算機システム。
【請求項１１】
前記第２の計算機は、前記第２の計算機上で実行するＯＳを外部から読み込むためのローダを有し、前記ローダが、前記第１の計算機のメモリ領域の内容を前記第２の計算機のメモリ領域へ読み込むことを特徴とする請求項10に記載のＯＳをマイグレーションする計算機システム。
【請求項１２】
前記第１の計算機で実行中のＯＳの中断後に、前記第２の計算機をマイグレーション先とする指定に応答して、前記ローダは前記第１の計算機のメモリ領域の内容を前記第２の計算機のメモリ領域への読み込みを開始することを特徴とする請求項11に記載のＯＳをマイグレーションする計算機システム。
【請求項１３】
前記第１の計算機と前記第２の計算機とを接続するネットワークを有し、前記ローダは前記ネットワークを介して前記第１の計算機のメモリ領域の内容を前記第２の計算機のメモリ領域へ読み込むことを特徴とする請求項12に記載のＯＳをマイグレーションする計算機システム。
【請求項１４】
前記第１の計算機が外部記憶装置に格納した、前記スナップショットをとった前記第１の計算機のメモリ領域の内容を、前記ローダが前記第２の計算機のメモリ領域に読み込むことを特徴とする請求項12に記載のＯＳをマイグレーションする計算機システム。
【請求項１５】
前記第１の計算機で実行中のＯＳの中断と共に、前記中断するＯＳが使用中のＩ／Ｏデバイスの電源をオフすることを特徴とする請求項12に記載のＯＳをマイグレーションする計算機システム。
【請求項１６】
マイグレーションの指示に応答して、実行中のＯＳを中断し、
前記中断点を示す情報の格納領域を含む、前記中断時点で前記ＯＳのために用いているレジスタ及びメモリ領域の内容のスナップショットをとる、物理計算機として動作する第１の計算機、及び
前記第１の計算機と接続し、前記スナップショットをとった前記第１の計算機のレジスタ及びメモリ領域の内容をメモリ領域に移行し、
前記中断点を示す情報を参照し、前記移行されたメモリ領域の内容を用いて仮想化機構の下で前記ＯＳの実行を再開する第２の計算機
を有することを特徴とするＯＳをマイグレーションする計算機システム。
【請求項１７】
前記第２の計算機は、前記第２の計算機上で実行するＯＳを外部から読み込むためのローダを有し、前記ローダが、前記第１の計算機のメモリ領域の内容を前記第２の計算機のメモリ領域へ読み込むことを特徴とする請求項16に記載のＯＳをマイグレーションする計算機システム。
【請求項１８】
前記第１の計算機で実行中のＯＳの中断後に、前記第２の計算機をマイグレーション先とする指定に応答して、前記ローダは前記第１の計算機のレジスタ及びメモリ領域の内容を前記第２の計算機のメモリ領域への読み込みを開始することを特徴とする請求項17に記載のＯＳをマイグレーションする計算機システム。
【請求項１９】
前記第１の計算機が外部記憶装置に格納した、前記スナップショットをとった前記第１の計算機のメモリ領域の内容を、前記ローダが前記第２の計算機のメモリ領域に読み込むことを特徴とする請求項18に記載のＯＳをマイグレーションする計算機システム。
【請求項２０】
前記第１の計算機で実行中のＯＳの中断と共に、前記中断するＯＳが使用中のＩ／Ｏデバイスの電源をオフすることを特徴とする請求項18に記載のＯＳをマイグレーションする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，仮想化機構や論理分割機構によりゲストＯＳを実行する計算機とこれらの機構が実行していない物理計算機との間のＯＳのマイグレーション方法及びその計算機システムに関する。
【背景技術】
【０００２】
１台の計算機上に仮想的な計算機を構成し，複数のオペレーティングシステム（ＯＳ）を並行して実行する技術が広く普及し始めている。これらを実現する技術としては，仮想計算機方式と論理分割方式の２つがある。これらの技術を適用した計算機を仮想化機構を有する計算機と呼ぶ。仮想化機構の下で実行するＯＳをゲストＯＳと呼ぶ。
【０００３】
仮想計算機方式は，仮想計算機モニタ(ＶＭＭ：Virtual Machine Monitor)と呼ばれる制御ソフトウェアが，計算機のハードウェアやプロセッサの動作を制御するためのレジスタ類を仮想化し，複数の仮想的な計算機（ＶＭ：Virtual Machine）を作り出す。ゲストＯＳは，ＶＭＭが作り出したＶＭ上で実行する。具体的には，ＶＭＭは、ゲストＯＳが実行するＩ／Ｏ（入出力）命令や制御レジスタ操作等のＣＰＵの特権命令をトラップしてエミュレートし，仮想計算機環境を作り出す。仮想計算機方式では，複数のゲストＯＳが１つの物理Ｉ／Ｏデバイスを共有できる。これは，ＶＭＭが，ゲストＯＳに見せている仮想的なＩ／Ｏデバイスへのアクセスをトラップして，実際の物理デバイスへのアクセスに変換して処理（エミュレート）するためである。これによって，計算機に搭載されているＩ／Ｏデバイスへの依存度の低い，柔軟な仮想計算機環境を実現できる。
【０００４】
仮想計算機方式のＩ／Ｏ制御では，ゲストＯＳによるＩ／Ｏ操作はＶＭＭがエミュレートするためオーバーヘッドが発生する。また，仮想計算機のＶＭＭは他の並行実行しているゲストＯＳのＩ／Ｏ操作もエミュレートするため，オーバーヘッドが他のゲストＯＳの処理に依存し，性能予測が難しいという課題がある。
【０００５】
一方，論理分割方式は，ハイパバイザと呼ばれる制御ソフトウェアが計算機の資源を論理的に分割することによって，複数の計算機を作り出す。ハイパバイザは，プロセッサや他のハードウェアが参照するテーブルやレジスタを操作して，計算機を論理的に分割する。ゲストＯＳは，ハイパバイザによって論理的に分割された区画（論理パーティション，ＬＰＡＲ：logical partition）内で実行する。ゲストＯＳが実行する一部の特権命令，特にＩ／Ｏ命令は，エミュレートされることなくプロセッサで直接実行される。このため，ゲストＯＳは同じ計算機で実行する他のゲストＯＳの影響を受け難く，高性能かつ高信頼な仮想計算機環境を実現できる。一方，論理分割方式はハードウェア資源を分割することによって複数のＬＰＡＲを作り出すため，Ｉ／Ｏデバイスを複数のゲストＯＳで共有することはできない。論理分割方式においてゲスト間でＩ／Ｏデバイスを共有するには，デバイス側で共有のための対応が必要となる。
【０００６】
以上のように，仮想計算機は特権命令のエミュレーションによって，論理分割はハイパバイザによる計算機の分割によって，ゲストＯＳが実行する仮想的な計算機を構成する。
【０００７】
これらの技術は，従来は主にメインフレームと呼ばれる大型計算機で実現されていた。これらを高性能で実現するには，仮想計算機に対応したプロセッサ，ＶＭＭのエミュレーション処理をハードウェアで実行する機構等，特別なハードウェアが必要だったためである。近年のプロセッサの性能向上や仮想化機構の取り込みにより，これらの処理をプロセッサで実行しても十分な性能が得られるようになったため，仮想計算機や論路分割方式はメインフレーム以外の一般の計算機にも普及し始めている。以下、仮想計算機方式と論理分割方式を総称して仮想計算機方式と呼ぶことがある。
【０００８】
仮想計算機方式では，ある計算機上で定義されたＶＭを，ＶＭＭが実行している他の計算機上に移動して実行できるという特徴がある。これをＶＭのマイグレーションと呼んでいる。稼働中のＶＭを停止させることなく他の計算機に移動することも可能となっている。移動先の計算機のＶＭＭが移動対象のＶＭが必要とするＩ／Ｏデバイスを，元々定義されたのと同じようにエミュレートするよう構成できれば，移動先の計算機上で移動前とまったく同じようにＶＭを実行できる。ＶＭのマイグレーションは，基本的には，ＶＭを構成する論理的な物理メモリ（ＶＭからは物理的に見えているが、実体は論理的である物理メモリ）をコピーすることによって実現される。
【０００９】
これらの技術を用いて，複数の計算機で実行しているシステムの一台の計算機への統合，計算機の負荷に応じたゲストＯＳのマイグレーションによる負荷バランス，計算機障害時のゲストＯＳのマイグレーションによる計算機システムの高可用化等が実現されている。このようなシステム内の計算機へのＶＭの配置の例としては，特許文献１に計算機の稼働状況に応じたＶＭ再配置の方法が示されている。
【００１０】
仮想化機構では，計算機に搭載されているＩ／ＯデバイスをＶＭに直接利用させる技術もある（非特許文献1）。これによれば，ＶＭ上のゲストＯＳに見せるＩ／Ｏデバイスと，仮想化機構なし（物理計算機）で実行する場合にＯＳに見えるＩ／Ｏデバイスを同じように構成可能である。
【００１１】
また，計算機の起動において，ネットワークから必要なファイルをダウンロードして，それによって計算機を起動するネットワークブートという技術がある。この例として，特許文献２に示されるような技術がある。特許文献２では，予め定めた起動プログラムによって計算機を起動する方法の例を示している。
【００１２】
【特許文献１】米国公開特許 20060069761，
【特許文献２】米国特許 7222229
【非特許文献１】“AMD I/O Virtualization Technology (IOMMU) Specification,” pp.14, “2.2.5 Virtual Machine Guest Access to Devices,” [online], 2006年2月掲載，米国AMD社，2006年7月24日検索，インターネット<URL:http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/34434.pdf>
【発明の開示】
【発明が解決しようとする課題】
【００１３】
ＶＭを実行するホスト計算機を自由に決められるということは，ゲストＯＳの可用性の向上や，計算機リソースに余裕があるホスト計算機にマイグレートしてゲストＯＳの性能向上を図れる，といった観点で良さがある。
【００１４】
一方，ＶＭをマイグレーションするためには，マイグレート先のホスト計算機においても仮想化機構が実行されていなければならない。計算機の仮想化にはリソースの仮想化に伴うオーバーヘッドが避けられないため，仮想化機構を実行するホスト計算機にＶＭをマイグレートするのでは，ゲストＯＳは、ホスト計算機（物理計算機）上で直接実行するＯＳに比べて高い性能を得ることはできないという課題がある。この課題は、マイグレーションによって向上が図れるゲストＯＳの性能は、オーバーヘッドがある仮想化機構を実行するホスト計算機に依存することを示している。
【００１５】
仮想化機構で構成される仮想計算機や論理分割で構成されるＬＰＡＲの構成と同じハードウェア構成のホスト計算機（物理計算機）を用意すれば，論理的には、ＶＭやＬＰＡＲで実行するゲストＯＳを，そのホスト計算機で直接実行が可能である。つまり、ゲストＯＳの起動時に参照するストレージ（ブートストレージ）を，ホスト計算機でそのＯＳを起動するためのストレージ（ブートストレージ）として，そのまま利用することができる。この場合，ゲストＯＳをシャットダウンすることなく，ゲストＯＳの実行をホスト計算機で直接実行するようマイグレートすることはできず，ゲストＯＳをシャットダウンすることが必須となる。したがって、マイグレートの時点までにメモリ上に構築（バッファリング）されていたデータをストレージ内に確定させるシャットダウン処理に時間を要する、さらにそのデータも含めたＯＳのブート及び起動に時間がかかる，といった課題がある。
【００１６】
このような課題が生じる背景は、マイグレートしてゲストＯＳの性能向上を図ることが、ＶＭを実行するホスト計算機を自由に決められるという特徴を持つ仮想計算機方式において考えられてきたもので、さらに性能向上を図るために仮想化機構を持たないホスト計算機（物理計算機）にマイグレートするという発想がなかったためである。すなわち、仮想化機構を持つ計算機と仮想化機構を持たない計算機とによる計算機システムを用いて、それらの計算機の間でＯＳをマイグレーションして、より性能向上を図る又は適切な性能を維持するという発想がなかったためである。
【課題を解決するための手段】
【００１７】
本発明の仮想計算機と物理計算機との間のマイグレーション方法及びその計算機システムは次のような構成により実現される。
【００１８】
第１の計算機と第２の計算機とのいずれか一方が仮想化機構を有する計算機であり、他方が仮想化機構を有さない計算機であることを前提とする。マイグレーションの指示に応答して、第１の計算機で実行中のＯＳを中断する。中断時点でそのＯＳのために用いている、第１の計算機のメモリ領域の内容を第２の計算機のメモリ領域に移行する。この移行には、ＯＳの中断点を示す情報の格納領域を含む。第１の計算機と第２の計算機との間の仮想化機構に関わるメモリ領域管理方法を変換する。その後、第２の計算機は中断点を示す情報を参照し、移行されたメモリ領域の内容を用いてＯＳの実行を再開する。
【発明の効果】
【００１９】
本発明によれば、マイグレーション元のＯＳのシャットダウン処理やマイグレーション先のＯＳ起動にかかる時間を短縮することができるので、サービスの中断時間が短くなる。
【発明を実施するための最良の形態】
【００２０】
本発明を実施するための最良の形態の説明が分かり易い例として、仮想化機構を持つ第１の計算機から、仮想化機構を持たない第２の計算機（物理計算機）へＯＳをマイグレーションする形態を説明する。
【００２１】
まず、マイグレーションの指示に応答して、第１の計算機で実行中のＯＳを中断する。マイグレーションの指示は、計算機システムのユーザ（管理者）によるコマンド入力であっても良いし、第１の計算機の各ＶＭや第２の計算機の負荷を監視し、その監視結果に基づいて、マイグレーションの指示を生成しても良い。この場合の監視及びマイグレーション指示の生成の主体は第１の計算機や第２の計算機自体であっても良いし、これらと接続する他の計算機であっても良い。
【００２２】
ＯＳの中断に応じて、その中断点を示す情報をメモリの所定領域に格納する。中断点を示す情報とは、次に実行すべき命令のアドレスを示すＰＣ（プログラムカウンタ）の内容である。仮想化機構の下で実行されている場合、ＰＣに限らず各種レジスタの内容は、メモリの所定領域に格納されるように制御されている。ただし、中断したＯＳを実行しているＶＭから他のＶＭへ切り替わるタイミングでは、各種レジスタの内容がメモリの所定領域に格納されるが、中断したＯＳを実行しているＶＭが動作中は、メモリの所定領域への格納に伴うオーバーヘッドを軽減するために、逐次格納しない実装の場合がある。したがって、ＰＣを含む各種レジスタの内容をメモリの所定領域に格納することが望ましい。この所定領域も含めた、中断したＯＳのために用いている第１の計算機のメモリ領域の内容を維持する（スナップショットをとる）。ＯＳのために用いているメモリ領域とは、ＯＳ自体のプログラム格納領域を含め、各種パラメータや一時的データ領域等も含む。
【００２３】
第１の計算機のメモリ領域の内容（スナップショットをとったイメージ）を第２の計算機のメモリ領域に移行する。ここで、第１の計算機と前記第２の計算機との間の仮想化機構に関わるメモリ領域管理方法を変換する。具体的には、所定領域に格納されて移行された第１の計算機の（実際にはＶＭが使用していた）レジスタ類の内容を第２の計算機の対応する各レジスタにセットする。すなわち、メモリ領域管理方法の主たる内容は、仮想機構の下でのレジスタ類の取り扱いと物理計算機でのレジスタ類の取り扱いを変換することや、ＯＳが使用するメモリ領域へアクセスするための基準となるアドレスを変換することである。
【００２４】
以上のようにすることにより、第２の計算機は中断点を示す情報を参照して、移行されたメモリ領域の内容を用いてＯＳの実行を再開することができる。
【００２５】
第１の計算機のメモリ領域の内容の第２の計算機のメモリ領域への移行は、第２の計算機上で実行するＯＳを外部から読み込むためのローダを用いて第２の計算機のメモリ領域に読み込む。より具体的には、第１の計算機と第２の計算機を接続するネットワークを経由して読み込んでも良いし、外部記憶装置を移行を仲介するための記憶装置として使用し、その外部記憶装置から読み込んでも良い。なお、ネットワーク経由の場合、ローダ（受け取り側）主体のＰＵＬＬ型であっても、送り側主体のＰＵＳＨ型の転送のいずれでも実現できる。
【００２６】
上記説明は、２台の計算機間のマイグレーションであるが、複数台ある場合は、マイグレーション先を指定する必要がある。前述のマイグレーションの指示の場合と同様に、計算機システムのユーザ（管理者）によるコマンド入力であっても良いし、第１の計算機の各ＶＭや第２の計算機の負荷を監視し、その監視結果に基づいて、マイグレーション先を指定しても良い。この指定のタイミングは、マイグレーとするＯＳの中断後でも良いし、マイグレーションの指示と同じタイミングでも良い。
【００２７】
上記の最良の形態において、第１の計算機で実行中のＯＳの中断と共に、中断するＯＳが使用中のＩ／Ｏデバイスの電源をオフ、又は動作しないようにすることが望ましい。要は、スナップショットをとったメモリ内容を破壊しないようにする必要がある。Ｉ／Ｏデバイスが動作していると、Ｉ／ＯデバイスからＯＳに割り込みが入り、その割り込み処理のプログラムによって、スナップショットをとったメモリ内容が破壊される可能性があるからである。この現象に対応するためには、電源をオフしなくても、プログラムの実行に伴ってスナップショットをとったメモリ内容が破壊されなければ良い。そのためには、スナップショットをとった後で実行されるプログラムの使用領域をスナップショットをとったメモリ領域とは異なる領域とする、メモリ内容の更新に伴って更新前の内容を他の領域に退避するコピー・オン・ライト（Copy on Write）技術を利用する、などの方法で対応できる。
【００２８】
以下、実施例１〜３により、具体的な構成及びその動作を説明する。上記の最良の形態において、仮想化機構を持つ第１の計算機から仮想化機構を持たない第２の計算機（物理計算機）へＯＳをマイグレーションする形態を説明したが、実施例１〜３の説明を通して、仮想化機構を持たない第２の計算機（物理計算機）から仮想化機構を持つ第１の計算機へＯＳをマイグレーションする形態も容易に実現できることが理解されるであろう。また、個々の実施例のマイグレーションの方法は、マイグレーション元とマイグレーション先とを入れ替えても実現可能な可逆的な方法であることが理解されるであろう。
【００２９】
さらに、上記した外部記憶装置を介在させてマイグレーションする方法においては、外部記憶装置の互いに異なり記憶領域を用い、第１の計算機と第２の計算機との間で同時にＯＳをマイグレーションする、すなわちＯＳを計算機間でスワップさせることも実現できることが理解されるであろう。
【実施例１】
【００３０】
実施例1では，ＯＳのハイバネーション（hibernation）機能を利用して，ＶＭで実行するＯＳをシャットダウンすることなく，物理計算機上で直接実行するようにＯＳ実行をマイグレートする方法を示す。
【００３１】
図1は，本実施例のシステム構成例を示す図である。ここではホスト計算機１００のＶＭ１２０で実行するゲストＯＳ１２１を，ホスト計算機１５０で実行するように移動する方法を説明する。
【００３２】
管理サーバ１８０は，マイグレート管理部１８１を実行している。ユーザは，マイグレート管理部１８１にＶＭのマイグレート指示を出し，ＶＭのマイグレーションを開始する。マイグレート管理部１８１は，ホスト計算機１００で実行する管理ＶＭ１１０のマイグレート制御部１１１と連携して，ＶＭのマイグレーション処理を実施する。また，管理サーバ１８０は，図1のシステムで実行するＶＭの構成，図1のシステムを構成するホスト計算機のハードウェア情報を管理している。
【００３３】
ホスト計算機１００と１５０，および，管理サーバ１８０は，ネットワーク１９０で接続し，互いに通信可能である。
【００３４】
ホスト計算機１００は，仮想化機構ＶＭＭ１３０を実行する。ＶＭＭ１３０上では，管理ＶＭ１１０とＶＭ１２０が実行している。ＶＭ１２０はユーザが定義したＶＭで，この例ではゲストＯＳ１２１を実行している。このゲストＯＳ１２１は，ハイバネーションによるＯＳの休止・再開機能を持っている。
【００３５】
ハイバネーションとは，ＯＳ実行中断時点の物理メモリの内容を外部記憶装置に書き出して，実行再開時には外部記憶装置に書き出されたメモリ内容を読み出して，ＯＳの実行を中断した時点から再開する機能である。換言すると、ＯＳ実行中断時点の物理メモリのスナップショットを外部記憶装置にとり、そのスナップショットファイル（イメージファイル）を基にＯＳ実行中断時点から実行を再開する機能である。本実施例のように、ハイバネーション処理をＯＳの処理の一環として実行する場合は、ハイバネーション実行後にＯＳが中断することになり、ＯＳの通常処理の中断点（ハイバネーション処理に入る前の時点）からメモリ内容が更新される可能性がある。これを避けるためには、ハイバネーション処理ではスナップショットの対象のメモリ領域と異なるメモリ領域の使用、又はコピー・オン・ライト（Copy on Write）技術を用い、スナップショット対象のメモリ領域の内容が更新されないようにする。
【００３６】
ここでＯＳ実行中の物理メモリとは、ゲストＯＳ自身のプログラム領域を含めてゲストＯＳが使用している（ゲストＯＳから見えている）メモリ領域とこのゲストＯＳの実行のためにＶＭが使用しているメモリ領域（たとえば、ゲストＯＳが使用しているレジスタをエミュレートしているメモリ領域）の物理アドレスに対応するメモリである。これらのメモリ領域へのアクセスのためには、基準とするアドレス（一般にはそのメモリ領域の先頭アドレス）を格納したレジスタを用いる。このレジスタもまたＶＭが使用しているメモリ領域にエミュレートされている。
【００３７】
なお、ゲストＯＳが使用している入出力装置のアドレス（Ｉ/Ｏアドレス）もＶＭが使用しているメモリ領域に格納されている。本実施例では、マイグレーションするためにマイグレート先に同じリソースが用意されていることは前提となるが、それらを使用するためのアドレスや名称は異なっていても良い。
【００３８】
また、ある命令の実行の終了に伴ってＯＳの実行を中断すると、次に実行すべき命令のアドレスはＰＣ（プログラムカウンタ）に格納されており、そのＰＣはレジスタの一種であるのでメモリ領域にエミュレートされているので、マイグレーション先ではメモリ領域に格納されている次に実行すべき命令のアドレスをＰＣにセットすることで、ＯＳの実行を中断した時点から再開できる。
【００３９】
ゲストＯＳ１２１は，外部からの要求によりＯＳの実行をハイバネーションによって中断する，中断要求処理部１２２を実行する。
【００４０】
管理ＶＭ１１０はＶＭＭ１３０を制御するためのインタフェイスを提供するＶＭで，管理ＶＭ１１０上でもゲストＯＳ（図では省略）が実行し，そこでマイグレート制御部１１１が実行している。マイグレート制御部１１１は，管理サーバ１８０のマイグレート管理部１８１からのマイグレート指示に応じてＶＭＭ１３０と連携して，ＶＭ１２０のマイグレート処理を実行する。
【００４１】
ホスト計算機１５０は，計算機起動時に実行されるブートローダ１５１と，ネットワーク経由で遠隔からホスト計算機１５０の電源制御を実行する電源制御部１５２を持っている。電源制御部１５２は，管理サーバ１８０からの指示を受けてホスト計算機１５０の電源をオンとして計算機を起動できる。ブートローダ１５１は，計算機１５０が起動すると実行を開始するよう構成されている，ホスト計算機１５０に組み込みのプログラムである。
【００４２】
計算機１００と１５０は，ストレージネットワーク１７０を介して，ストレージ１６０に接続している。ストレージ１６０は，ＯＳローダ１６１，ＯＳカーネル１６２，ハイバネートイメージファイル１６３といったファイルを保持している。実際には，計算機はディスクアダプタを持っており，ストレージネットワークはストレージスイッチやストレージ装置で構成されるが，ここでは省略している。
【００４３】
ＯＳローダ１６１は，ホスト計算機１５０の起動時にブートローダ１５１によって、ホスト計算機１５０のメモリに読み込まれて、そのＣＰＵによって実行される。通常は，ＯＳローダ１６１は，ＯＳカーネル１６２をメモリに読み込んでＯＳの実行を開始する。
【００４４】
ハイバネーション機能により作成されたハイバネートイメージファイル１６３がストレージ１６０に存在している場合，ＯＳローダ１６１は，ハイバネートイメージファイル１６３をメモリに読み込んで，物理メモリをハイバネート実行時の内容に再構築し，ＯＳの実行の中断点から再開されるようにして、ＯＳに制御を渡す。ＯＳローダ１６１は、ハイバネートイメージファイル１６３の構成を予め記憶している。具体的には、ＯＳが使用している領域や各種レジスタの内容が格納されている領域を認識している。
【００４５】
物理メモリをハイバネート実行時の内容に再構築するとは、ＯＳが使用している領域の内容をホスト計算機１５０のメモリ上に展開し、そのアクセスのための基準アドレスを所定のレジスタにセットする。またハイバネートイメージファイル１６３内に格納されている、各種レジスタの内容を対応するレジスタにセットする。最後にハイバネートイメージファイル１６３内に格納されている中断点（次に実行すべき命令のアドレス）をホスト計算機１５０のＰＣ（プログラムカウンタ）にセットすることで、ホスト計算機１５０上で、ＯＳの実行が再開される。
【００４６】
ＶＭＭ１３０は，ＶＭで実行するゲストＯＳ１２１にハイバネーションを開始させるため，ＶＭ電源制御部１３１を有する。ＶＭ電源制御部１３１は，ＶＭ１２０に対してハイバネーションを指示する仮想割り込みを送信する。ＶＭ１２０で実行するゲストＯＳ１２１は，その仮想割り込みを受信して，ハイバネーション処理を開始する。電源制御の割り込みは，例えば，ＡＣＰＩ（Ａｄｖａｎｃｅｄ Ｃｏｎｆｉｇｕｒａｔｉｏｎ ａｎｄ Ｐｏｗｅｒ ｍａｎａｇｅｍｅｎｔ Ｉｎｔｅｒｆａｃｅ）といった仕様で規定されている。
【００４７】
図２は，本実施例の計算機構成例を示す図である。本実施例の計算機は，いずれも一般的な構成の計算機である。例えば，ホスト計算機１００は，ＣＰＵ２０１，メモリ２０２，ディスクアダプタ２０４，ネットワークアダプタ２０５，および，それらを接続するバス制御装置２０３で構成される。
【００４８】
ディスクアダプタ２０４は，ストレージスイッチ２１０を介してストレージ装置２３０に接続する。ストレージ装置２３０は，内部に論理的なディスクを構成できる。それによって，ストレージ装置２３０は，ホスト計算機１００に接続するストレージボリューム１６０を構成している。図には他のストレージボリュームとして２３２，２３３を示している。
【００４９】
ネットワークアダプタ２０５は，ネットワークスイッチ２２０を介して，他のホスト計算機１５０や管理サーバ１８０と接続可能なネットワークを構成する。他の計算機も同様の構成である。
【００５０】
図３を用いて、本実施例のマイグレーションの処理フローを説明する。ここでは，ホスト計算機１００上のＶＭ１２０で実行するゲストＯＳ１２１を，ホスト計算機１５０に移動して実行する手順として説明する。
【００５１】
ユーザは，管理サーバ１８０のマイグレート管理部１８１に，ゲストＯＳ１２１のマイグレートを指示する。それを受けてマイグレート管理部１８１は，マイグレート対象のＶＭ１２０を実行するホスト計算機１００のマイグレート制御部１１１に，マイグレート指示を送信する（ステップ３０１）。マイグレート制御部１１１は，ＶＭＭ１３０のＶＭ電源制御部１３１に，ＶＭ１２０をハイバネートするように指示する（ステップ３０２）。続いて，ＶＭ電源制御部１３１は，ＶＭ１２０に対して仮想割り込みを生成して送信する（ステップ３０３）。
【００５２】
ＶＭ１２０で実行するゲストＯＳ１２１は，送信された仮想割り込みを受信して，ハイバネート処理を実行して，ＯＳの実行を中断する（ステップ３０４）。すなわち，ＶＭ１２０の論理的な物理メモリ（ＶＭ１２０から物理的に見えているが、実際は論理的なメモリであり、その実体としての物理メモリ）の内容をストレージ１６０のハイバネートイメージファイル１６３に記録（スナップショットをとる）し，ＯＳの実行を中断する。この際，ＶＭ１２０も停止する。
【００５３】
ここでは，ゲストＯＳ１２１に仮想割り込みを送ることによってＶＭ１２０を中断したが，ゲストＯＳ１２１で実行する中断要求処理部１２２に要求を送信して，ゲストＯＳ１２１上の処理からゲストＯＳ１２１をハイバネートする実装であってもよい。
【００５４】
マイグレート制御部１１１は，ＶＭ１２０が停止したのを検出すると，マイグレート管理部１８１にその旨を通知する（ステップ３０５）。それを受けて，マイグレート管理部１８１は，ゲストＯＳのマイグレート先であるホスト計算機１５０に起動信号を送信する（ステップ３０６）。ネットワークからのホスト計算機１５０の起動方法の実装は様々であり，電源制御のための特殊な形式のパケットに反応するネットワークアダプタを計算機に搭載しておく方法や，遠隔電源操作専用のデバイスを予め搭載しておく，といった実現が可能である。ここでは，ネットワークからの制御を受け付ける電源制御部１５２がホスト計算機１５０に搭載されているとする。
【００５５】
ホスト計算機１５０の電源制御部１５２は，起動信号を受信するとホスト計算機１５０を起動する（ステップ３０７）。計算機１５０は，ブートローダ１５１を実行し，引き続いてブートローダ１５１がＯＳローダ１６１をメモリに読み込んで実行する（ステップ３０８）。
【００５６】
ＯＳローダ１６１は，ストレージ１６０にハイバネートイメージファイル１６３があることを検出して，ファイル１６３に格納されているデータを，ゲストＯＳ１２１中断時のメモリ内容としてメモリに書き込む。メモリ内容を回復した後に，ゲストＯＳ１２１の中断点から実行を再開するように，ＯＳ１２１に制御を渡す（ステップ３０９）。メモリ内容の回復及びゲストＯＳ１２１の中断点からの実行の再開に関しては前述のとおりである。
【００５７】
以上により，ゲストＯＳ１２１をシャットダウンすることなく，ゲストＯＳ１２１の実行を，ＶＭ１２０上から，ホスト計算機１５０で直接実行するようにマイグレートすることができる。
【００５８】
これによって，ゲストＯＳ１２１の実行によりメモリに蓄積されたデータ等を破棄することなく，ホスト計算機１５０上でＯＳ１２１を継続して実行できる。これは，例えば，データベースのようにメモリをキャッシュとして利用するようなアプリケーションがＯＳ１２１上で実行している場合に，マイグレート後もキャッシュを引き続き利用可能で，ＯＳを実行する計算機の変更後の一時的な性能低下を招かないといった利点がある。
【００５９】
ＯＳ１２１のシャットダウンや起動処理に時間がかかる場合，ハイバネーションによってそれらの処理を回避することができるため，サービス停止時間を短縮できるといった利点もある。
【００６０】
本実施例では，ＶＭから物理計算機へのマイグレーションとして説明したが，逆のマイグレーションも可能である。すなわち，物理計算機上で直接実行しているＯＳをハイバネーションで中断し，その計算機と同じ構成の仮想計算機を起動して，ハイバネートイメージファイル１６３からＯＳ実行を再開させることも可能である。この場合，ＯＳ上で実行する中断要求処理部１２２がマイグレート管理部１８１の指示を受けて，ＯＳをハイバネートすればよい。ＶＭの生成，起動等は，管理ＶＭ１１０が提供するインタフェイスを通じて実現可能である。
【実施例２】
【００６１】
実施例２について説明する。本実施例では，ＯＳのハイバネーション機能を使わずに，ＶＭ上のゲストＯＳの実行を物理計算機にマイグレートする方法を説明する。
【００６２】
図４に，本実施例のシステム構成例を示す。図１に示した構成と同様であるが，追加の構成要素について以下に説明する。
【００６３】
ＶＭＭ１３０は，ゲストメモリ管理部１３２を持つ。ゲストメモリ管理部１３２は，実行中のＶＭに割り当てている論理的な物理メモリを管理し，その内容にアクセスするインタフェイスを提供する。加えて，管理ＶＭ１１０は，ゲストメモリ送信部１１２を実行する。ゲストメモリ送信部１１２は，ネットワーク経由での要求に応じて，ＶＭ１２０の論理的な物理メモリの内容を，ゲストメモリ管理部１３２のインタフェイスを用いて取り出し，要求元に送信する。
【００６４】
ホスト計算機１５０は，ネットワークブートローダ１５６を搭載したネットワークアダプタ１５５を持っている。ネットワークブートローダ１５６は，ホスト計算機１５０の起動の過程で呼び出されて，ＯＳ起動に必要なＯＳローダ等のプログラム，起動処理に必要なパラメータ，ファイル等をネットワーク上のサーバから取得して，計算機を起動する。計算機１５０が，ネットワークブートローダ１５６で起動するか，ブートローダ１５１で起動するかは，計算機１５０の設定によって決まる。ネットワークブート機構の一般的な実現例としては，ＰＸＥ（Ｐｒｅ−Ｂｏｏｔ Ｅｘｅｃｕｔｉｏｎ Ｅｎｖｉｒｏｎｍｅｎｔ）がある。
【００６５】
管理サーバ１８０では，ネットワークアドレス配信部１８２とローダ配信部１８３が実行する。ネットワークアドレス配信部１８２は，計算機の要求に応じてその計算機で利用可能なネットワークアドレスを配信する。本実施例では，計算機１５０の起動時にネットワークアダプタ１５５がネットワークアドレス配信部１８２に対してアドレスを要求する。このようなアドレス割り当ての一般的な実現例としては，ＤＨＣＰ（Ｄｙｎａｍｉｃ Ｈｏｓｔ Ｃｏｎｆｉｇｕｒａｔｉｏｎ Ｐｒｏｔｏｃｏｌ）がある。
【００６６】
ローダ配信部１８３は，ネットワークブートローダ１５６の要求に応じて，計算機起動用のプログラム，パラメータ，ファイル等を配信するプログラムである。例えば，ローダ配信部１８３は，ホスト計算機１５０起動用のファイルとして，管理サーバ１８０に接続しているストレージに格納されているゲストメモリローダ１８４を配信する。
【００６７】
本実施例では，これらの追加の構成要素が連携して実行し，ゲストＯＳ１２１をシャットダウンすることなく，ホスト計算機１５０で直接実行するよう移動する。
【００６８】
図５及び図６を用いて、本実施例のマイグレーションの処理フローを説明する。
【００６９】
図５は，ユーザからのマイグレート指示を受けてから，マイグレート先のホスト計算機に起動信号を送信するまでのフローである。実施1の図３のフローとほとんど同じである。同じ処理については説明を省略し、違う部分について，以下に説明する。
【００７０】
ＶＭ電源制御部１３１は，ＶＭ１２０に対して，ハイバネート処理を起動する仮想割り込みではなく，スリープ処理を起動する仮想割り込みを送信する（ステップ５０２，５０３）。
【００７１】
スリープは，メモリの内容を保持したままＯＳの実行を停止する処理であり，ＡＣＰＩ（Ａｄｖａｎｃｅｄ Ｃｏｎｆｉｇｕｒａｔｉｏｎ ａｎｄ Ｐｏｗｅｒ ｍａｎａｇｅｍｅｎｔ Ｉｎｔｅｒｆａｃｅ）で規定するＳ３状態に相当する。Ｓ３状態は，計算機に搭載されているＩ／Ｏデバイスの電源をオフ状態とし，メモリ内容を保持可能な状態でＣＰＵの実行を停止する。スリープ処理は，ＣＰＵを停止する前にスリープから復帰した時にＣＰＵが実行を開始する命令のアドレスを，メモリ中の定められたアドレスに登録してから，ＣＰＵを停止する。
【００７２】
Ｓ３状態への遷移を指示する仮想割り込みを受けたゲストＯＳ１２１は，スリープ処理を実行してゲストＯＳの実行を中断する。このとき，ＶＭも中断状態に遷移する（ステップ５０４）。
【００７３】
マイグレート制御部１１１は，ＶＭの中断を検知すると，ゲストメモリ送信部１１２を起動して、ＶＭ１２０の論理的な物理メモリ内容の取得要求に対応する準備を整えてから，管理サーバ１８０のマイグレート管理部１８１にＶＭ１２０が中断した旨を通知する（ステップ５０５）。
【００７４】
マイグレート管理部１８１は，通知を受けて，ネットワークアドレス配信部１８２を構成し（ステップ５０６），マイグレート先のホスト計算機１５０に起動信号を送信する（ステップ５０７）。ステップ５０６の構成とは，ホスト計算機１５０からの要求に応じる旨の設定と，ゲストメモリ送信部１１２のアドレスとして，マイグレート元の計算機であるホスト計算機１００の管理ＶＭ１１０と通信するためのアドレスの登録を実施する。アドレス配信部１８２がホスト計算機１５０からの要求であるかどうかの判定を可能とするためには，例えば，ホスト計算機に搭載のネットワークアダプタ１５５のＭＡＣアドレスを登録すればよい。
【００７５】
続くホスト計算機１５０での処理フローを，図６に示す。起動したホスト計算機１５０は，起動処理の中でネットワークブートローダ１５６が有効な設定かどうか検査する（ステップ６０１）。有効でないならば，通常のブートローダ１５１によって計算機を起動する（ステップ６１０）。本実施例では，ネットワークブートローダ１５６が有効に設定されている。
【００７６】
有効である場合，ネットワークブートローダ１５６を起動する（ステップ６０２）。ネットワークブートローダ１５６は，ネットワークアドレス配信部１８２より，ブート処理で利用するネットワークアドレスを取得する（ステップ６０３）。
【００７７】
具体的には，ネットワークブートローダ１５６はアドレス取得要求をネットワークにブロードキャストする。アドレス配信部１８２は，ブロードキャストされたアドレス要求を受信すると，要求に応じるかの判定を実施する。応じる場合は，ホスト計算機１５０が使用するネットワークアドレス，ローダプログラムの配信処理を受け付ける計算機のアドレス，および，ゲストメモリ内容の配信要求を処理する計算機のアドレスを，要求元のネットワークブートローダ１５６に返送する。ゲストメモリ配信元のアドレスは，ステップ５０６で登録していることから，ホスト計算機１００の管理ＶＭ１１０に接続可能なアドレスとなる。また，ローダプログラムの取得先アドレスは，本実施例では，管理サーバ１８０のアドレスとなる。
【００７８】
アドレス配信部１８２が要求に応じないとした場合，ネットワークブートローダ１５６は要求待ちをタイムアウトで終了し，ホスト計算機１５０は，通常のブートローダ１５１によって起動することとなる。
【００７９】
次に，取得したローダプログラムの取得先アドレスの計算機よりゲストメモリローダ１８４をダウンロードして，実行する（ステップ６０４）。本実施では，ローダプログラムは管理サーバ１８０によって管理されており，ローダ配信部１８３がネットワークブートローダ１５６の要求に応じて配信する。
【００８０】
ゲストメモリローダ１８４は，アドレス配信部１８２が配信したゲストメモリ要求先のアドレスより，ゲストメモリの内容を取得する（ステップ６０５）。具体的には，ゲストメモリローダ１８４は，ゲストメモリ送信部１１２に対して，スリープ状態で中断しているＶＭのメモリ内容の取得を要求する。ゲストメモリ送信部１１２は，ＶＭＭ１３０内のゲストメモリ管理部１３２より，メモリ内容を取得して送信する。
【００８１】
ゲストメモリローダ１８４は，ゲストメモリ送信部１１２よりメモリ内容を取得して，ＯＳが使用する範囲のメモリの内容をゲストＯＳ１２１の中断時点の内容に再現し，ＯＳ実行の中断点よりＯＳ実行を再開するように，ＯＳに制御を渡す（ステップ６０６）。制御の渡し方は，ＡＣＰＩのＳ３からの復帰の仕方と同じでよい。
【００８２】
以上により，仮想計算機で実行するゲストＯＳをシャットダウンすることなく，ＯＳの実行を物理計算機上で再開することが可能となる。ハイバネーションの場合と異なり，ＯＳが利用するストレージ内にハイバネートファイルを格納する必要がない。
【００８３】
ブートローダ１５１やネットワークブートローダ１５６は，計算機やネットワークアダプタに内蔵されているプログラムのため利用環境に応じた改変が難しいが，ダウンロードして実行されるゲストメモリローダ１８４は任意のプログラムとすることができるため，マイグレートに合わせてシステムの環境に応じた制御をさせることも可能となる。
【００８４】
本実施例では，ＶＭを中断（スリープ）状態としてからマイグレート先のホスト計算機に起動信号を送信したが，起動信号の送信はマイグレート制御の開始時点でも構わない。この場合，ゲストメモリローダ１８４は，ゲストメモリ送信部１１２と同期してメモリ内容を取得するように実行する。
【００８５】
本実施例では，ネットワークアダプタ１５５に搭載のネットワークブートローダ１５６がロードしたゲストメモリローダ１８４がメモリ内容のコピーを実施したが，メモリコピーを実施するプログラムはこれに限らない。例えば，ストレージからロードされるプログラムであっても構わない。
【実施例３】
【００８６】
実施例３について説明する。本実施例では，物理計算機上で実行するＯＳを，ＯＳをシャットダウンすることなく仮想計算機上にマイグレートする方法について説明する。ここでは，実施例２と同様にＯＳのスリープ中にメモリ内容を取得して，それによってＶＭのメモリを構成する方法を示す。具体的には，ＯＳの内部処理と連携してメモリ内容を取得する方法を示す。
【００８７】
図７に本実施例のシステム構成例を示す。ホスト計算機１５０で実行するＯＳ７１０を，ホスト計算機１００のＶＭＭ１３０上のＶＭで実行するようにマイグレートするとして説明する。
【００８８】
本実施例も前述の実施例１及び２と同様のシステム構成である。本実施例に特有の構成要素について以下に説明する。
【００８９】
ホスト計算機１５０で実行するＯＳ７１０がマイグレート対象のＯＳである。ＯＳ７１０は，ＯＳ中断処理部７１１を実装している。ＯＳ中断処理部７１１は，前述のスリープ処理と同様の処理でＯＳ実行を中断するが，ＣＰＵを停止せずに，物理メモリ内容の配信処理を実行する。
【００９０】
ホスト計算機１５０は，ファームウェアとして物理メモリ配信部１５７を持つ。これらはＯＳ７１０の実行が中断している間も実行可能で，ネットワークアダプタ１５５によって物理メモリ内容を配信する処理を実行する。
【００９１】
図８を用いて、本実施例のマイグレーション処理について説明する。
【００９２】
マイグレート管理部１８１は，マイグレート対象のＯＳ７１０に対して，ＯＳ中断を指示する（ステップ８０１）。ＯＳ７１０の中断処理部７１１は，ホスト計算機１５０に搭載されているＩ／Ｏデバイスの電源をオフ状態とし，中断再開後の実行開始アドレスをメモリ上に登録する。その後，ファームウェアの物理メモリ送信部を起動する（ステップ８０２）。この際，物理メモリ送信部１５７には，管理サーバ１８０のアドレスも連絡する。
【００９３】
物理メモリ送信部１５７は，ＯＳが実行していなくとも、ＯＳとは独立して実行可能なように構成されている。物理メモリ送信部１５７は，配信処理の準備が完了した旨を管理サーバ１８０のマイグレート管理部１８１に連絡する（ステップ８０３）。
【００９４】
連絡を受けたマイグレート管理部１８１は，マイグレート先のホスト計算機１００で実行する管理ＶＭ１１０のマイグレート制御部１１１に，マイグレートの開始を指示する（ステップ８０４）。この時にマイグレート元のホスト計算機のアドレスも連絡する。
【００９５】
マイグレート制御部１１１は，マイグレート元のホスト計算機１５０と同じリソースを持つＶＭ１２０を割り当てる（ステップ８０５）。割り当てたＶＭ１２０は，中断状態としておく。
【００９６】
続いて，マイグレート制御部１１１は，マイグレート元の計算機１５０の物理メモリ送信部１５７より物理メモリ内容を取得し（ステップ８０６，８０９），ゲストメモリ管理部１３２によってＶＭ１２０を構成するメモリを更新する（ステップ８０７）。ここでの処理は、実施例１における処理の逆になっていることが容易に理解されよう。すなわち、ＶＭ１２０を構成するメモリを更新するためには、マイグレート元の計算機１５０の物理メモリの内容だけでなく、各種レジスタ類の内容のマイグレート先メモリへの転送も必要である。各種レジスタの内容は、ステップ８０２において中断再開後の実行開始アドレスをメモリ上に登録するのと同時に、メモリ上に登録しておくことにより、これらの領域も含めてマイグレート先メモリへ転送される。
【００９７】
メモリ内容の更新完了後，マイグレート制御部１１１はＶＭ１２０を起動する（ステップ８０８）。ＶＭ１２０は起動すると，ＯＳ中断前に登録された再開アドレスに制御を移し，ＯＳ１２１の実行を再開する。
【００９８】
以上により，物理計算機で実行しているＯＳを，シャットダウンすることなく仮想化機構のＶＭで実行するようにマイグレートできる。実施例１では，ＯＳのハイバネーション機能を用いることで物理計算機から仮想計算機へのマイグレーションを実現できるとしたが，これと同様にして、物理計算機上で実行するＯＳを，ＯＳをシャットダウンすることなく仮想計算機上にマイグレートすることも可能である。本実施例では，ハイバネーションを利用しないため，ハイバネートイメージファイルをストレージに置かなくて良いという利点がある。
【図面の簡単な説明】
【００９９】
【図１】実施例１のシステム構成例を示す図である。
【図２】実施例１の計算機の構成例を示す図である。
【図３】実施例１のマイグレーションの処理フローを示す図である。
【図４】実施例２のシステム構成例を示す図である。
【図５】実施例２のマイグレーションの処理フローを示す図である。
【図６】実施例２のマイグレーションの処理フローを示す図である。
【図７】実施例３のシステム構成例を示す図である。
【図８】実施例３のマイグレーションの処理フローを示す図である。
【符号の説明】
【０１００】
１００…計算機，１１０…管理ＶＭ，１１１…マイグレート制御部，１２０…ＶＭ，１２１…ゲストＯＳ，１２２…中断要求処理部，１３０…ＶＭＭ，１３１…ＶＭ電源制御部，１５０…計算機，１５１…ブートローダ，１５２…電源制御部，１６０…ストレージ，１６１…ＯＳローダ，１６２…ＯＳカーネル，１６３…ハイバネートイメージファイル，１７０…ストレージネットワーク，１８０…管理サーバ，１８１…マイグレート管理部，１９０…ネットワーク，２０１…ＣＰＵ，２０２…メモリ，２０３…バス制御装置，２０４…ディスクアダプタ，２０５…ネットワークアダプタ，２１０…ストレージスイッチ，２２０…ネットワークスイッチ，２３０…ストレージ装置，１１２…ゲストメモリ配信部，１３２…ゲストメモリ管理部，１５５…ネットワークアダプタ，１５６…ネットワークブートローダ，１８２…ネットワークアドレス配信部，１８３…ローダ配信部，１８４…ゲストメモリローダ，１５７…物理メモリ送信部，７１０…ＯＳ，７１１…ＯＳ中断処理部。
【図１】
2009145931.tif 000003
【図２】
2009145931.tif 000004
【図３】
2009145931.tif 000005
【図４】
2009145931.tif 000006
【図５】
2009145931.tif 000007
【図６】
2009145931.tif 000008
【図７】
2009145931.tif 000009
【図８】
2009145931.tif 000010