(57)【特許請求の範囲】
【請求項１】
ＣＰＵ及びメモリを含む情報処理資源を備えたコンピュータ装置から構成され、夫々が
１又は複数の仮想ＯＳと、前記１又は複数の仮想ＯＳを管理する管理ＯＳと、を有する
移行元仮想サーバ及び移行先仮想サーバと、
前記移行元仮想サーバ及び移行先仮想サーバからのデータを格納するハードディスク上の前記メモリ領域から提供される複数の論理ボリュームを有する複数のストレージ装置と、を有し、
前記移行元仮想サーバと前記移行先仮想サーバとは、ＩＰネットワークを介して相互に
接続され、
前記移行元仮想サーバは、第１のＳＡＮを介して前記ストレージ装置と接続され、
前記移行先仮想サーバは、前記第１のＳＡＮとは異なる第２のＳＡＮを介して他のストレージ装置と接続され、
前記移行元仮想サーバと前記移行先仮想サーバの夫々には、
夫々の管理ＯＳが管理する前記論理ボリュームと、各仮想ＯＳが管理する前記論理ボリ
ュームと、を、管理ＯＳ上のボリューム名と仮想ＯＳ上のボリューム名とを対応付けて割り当てるボリューム割当て部と、
夫々の管理ＯＳが管理する前記論理ボリュームを、管理ＯＳ上のボリューム名、ボリューム管理番号、移行元又は移行先のＩＰアドレスを示すリモート側管理ＯＳ識別情報を含むボリューム識別情報から識別するボリューム識別情報と、夫々の管理ＯＳが管理する前記論理ボリュームと、を対応付けて管理するボリューム情報管理部と、
夫々の管理ＯＳにおける前記ボリューム情報管理部が管理するボリューム識別情報に基づいて、前記移行元仮想サーバの管理ＯＳ及び移行先仮想サーバの管理ＯＳに事前に設定されている接続認証用のボリューム認識コマンドを前記移行元仮想サーバの管理ＯＳと移行先仮想サーバの管理ＯＳとの間で送受信して接続を確認することにより、前記移行元仮想サーバと前記移行先仮想サーバとが共通の論理ボリュームを移行対象の論理ボリュームとして識別する識別部と、
前記移行元仮想サーバの仮想ＯＳが使用する前記メモリ領域内のデータを前記移行先仮想サーバに移行し、前記移行中に更新される前記メモリ領域内の更新データを前記移行先仮想サーバに移行する仮想ＯＳ移行部と、
前記移行元仮想サーバに接続される移行対象の論理ボリューム内のデータを前記移行先仮想サーバに接続される移行対象の論理ボリューム内に移行し、前記移行中に更新される前記移行元仮想サーバ側の移行対象の論理ボリューム内の更新データを前記移行先仮想サーバ側の移行対象の論理ボリュームに移行するデータ移行部と、
を備えることを特徴とする仮想計算機システム。
【請求項２】
前記仮想ＯＳ移行部では、前記移行元仮想サーバ又は前記移行先仮想サーバのいずれか
一方にＩ／Ｏ受信プロセスを有し、他方にＩ／Ｏ発信プロセスを有し、前記Ｉ／Ｏ受信プロセス及び前記Ｉ／Ｏ発信プロセスが、前記移行元仮想サーバと前記移行先仮想サーバとの間で前記データの授受及び前記ボリューム識別情報の送受信を行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
前記移行元仮想サーバは、
該移行元仮想サーバの管理ＯＳが管理し前記移行先仮想サーバに接続される移行対象の論理ボリュームと、前記移行元仮想サーバの管理ＯＳが管理し前記移行元仮想サーバに接続される移行対象の論理ボリュームと、をペア設定して管理するコピーペア管理部と、
前記移行元仮想サーバに接続される移行対象の論理ボリューム内のデータを前記移行先仮想サーバに接続される移行対象の論理ボリュームに移行中に前記仮想ＯＳが発行するＩ／Ｏ要求に基づいて更新される前記移行対象の論理ボリュームのアドレスと、前記ペア設定と、を対応付けて管理するコピー差分管理部と、
をさらに有することを特徴とする請求項１記載の仮想計算機システム。
【請求項４】
前記データ移行部では、前記移行元仮想サーバと前記移行先仮想サーバとに夫々有する
コピープロセスが前記データ又は前記更新データを、前記移行元仮想サーバ又は前記移行
先仮想サーバのいずれか一方に有するＩ／Ｏ受信プロセスと他方に有するＩ／Ｏ発信プロ
セスとで送受信する
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項５】
ＣＰＵ及びメモリを含む情報処理資源を備えたコンピュータ装置から構成され、夫々が
１又は複数の仮想ＯＳと、前記１又は複数の仮想ＯＳを管理する管理ＯＳと、を有する移行元仮想サーバ及び移行先仮想サーバと、
前記移行元仮想サーバ及び移行先仮想サーバからのデータを格納するハードディスク上の前記メモリ領域から提供される複数の論理ボリュームを有する複数のストレージ装置と、を有し、
前記移行元仮想サーバと前記移行先仮想サーバとは、ＩＰネットワークを介して相互に
接続され、
前記移行元仮想サーバは、第１のＳＡＮを介して前記ストレージ装置と接続され、
前記移行先仮想サーバは、前記第１のＳＡＮとは異なる第２のＳＡＮを介して他のストレージ装置と接続される仮想計算機システムの仮想計算機移行制御方法であって、
夫々の管理ＯＳが管理する前記論理ボリュームと、各仮想ＯＳが管理する前記論理ボリ
ュームと、を、管理ＯＳ上のボリューム名と仮想ＯＳ上のボリューム名とを対応付けて割り当てるボリューム割当てステップと、
夫々の管理ＯＳが管理する前記論理ボリュームを、管理ＯＳ上のボリューム名、ボリューム管理番号、移行元又は移行先のＩＰアドレスを示すリモート側管理ＯＳ識別情報を含むボリューム識別情報から識別するボリューム識別情報と、夫々の管理ＯＳが管理する前記論理ボリュームと、を対応付けて管理するボリューム情報管理ステップと、
夫々の管理ＯＳにおいて前記ボリューム情報管理部が管理するボリューム識別情報に基づいて、前記移行元仮想サーバの管理ＯＳ及び移行先仮想サーバの管理ＯＳに事前に設定されている接続認証用のボリューム認識コマンドを前記移行元仮想サーバの管理ＯＳと移行先仮想サーバの管理ＯＳとの間で送受信して接続を確認することにより、前記移行元仮想サーバと前記移行先仮想サーバとが共通の論理ボリュームを移行対象の論理ボリュームとして識別する識別ステップと、
前記移行元仮想サーバの仮想ＯＳが使用する前記メモリ領域内のデータを前記移行先仮想サーバに移行し、前記移行中に更新される前記メモリ領域内の更新データを前記移行先仮想サーバに移行する仮想ＯＳ移行ステップと、
前記移行元仮想サーバに接続される移行対象の論理ボリューム内のデータを前記移行先仮想サーバに接続される移行対象の論理ボリューム内に移行し、前記移行中に更新される前記移行元仮想サーバ側の移行対象の論理ボリューム内の更新データを前記移行先仮想サーバ側の移行対象の論理ボリュームに移行するデータ移行ステップと、
を備えることを特徴とする仮想計算機移行制御方法。
【請求項６】
前記仮想ＯＳ移行ステップでは、前記移行元仮想サーバ又は前記移行先仮想サーバのい
ずれか一方にＩ／Ｏ受信プロセスを有し、他方にＩ／Ｏ発信プロセスを有し、前記Ｉ／Ｏ
受信プロセス及び前記Ｉ／Ｏ発信プロセスが、前記移行元仮想サーバと前記移行先仮想サーバとの間で前記データの授受及び前記ボリューム識別情報の送受信を行う
ことを特徴とする請求項５記載の仮想計算機移行制御方法。
【請求項７】
前記移行元仮想サーバの管理ＯＳが管理し前記移行先仮想サーバに接続される移行対象の論理ボリュームと、前記移行元仮想サーバの管理ＯＳが管理し前記移行元仮想サーバに接続される移行対象の論理ボリュームと、をペア設定して管理するコピーペア管理ステップと、
前記移行元仮想サーバに接続される移行対象の論理ボリューム内のデータを前記移行先仮想サーバに接続される移行対象の論理ボリュームに移行中に前記仮想ＯＳが発行するＩ／Ｏ要求に基づいて更新される前記移行対象の論理ボリュームのアドレスと、前記ペア設定と、を対応付けて管理するコピー差分管理ステップと、
をさらに有することを特徴とする請求項５記載の仮想計算機移行制御方法。
【請求項８】
前記データ移行ステップでは、前記移行元仮想サーバと前記移行先仮想サーバとに夫々
有するコピープロセスが前記データ又は前記更新データを、前記移行元仮想サーバ又は前
記移行先仮想サーバのいずれか一方に有するＩ／Ｏ受信プロセスと他方に有するＩ／Ｏ発
信プロセスとで送受信する
ことを特徴とする請求項５記載の仮想計算機移行制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機システム及び仮想計算機移行方法に関し、特に複数の仮想ＯＳ（Operation System）を搭載する仮想サーバを使用する仮想計算機システムに適用する。
【背景技術】
【０００２】
従来から、サーバのハードウェアを仮想化し、その仮想ハードウェア上で仮想ＯＳを動作させる仮想マシン技術が知られている。この仮想マシン技術においては、仮想ハードウェアを複数用意して複数の仮想ＯＳを同時に動作させることができる、仮想サーバが使用される。本来ならば複数のサーバ上でそれぞれ動作させる複数のＯＳを仮想サーバ内に複数の仮想ＯＳとして統合できるので、サーバ運用コストを削減することができる。
【０００３】
また、仮想マシン技術においては、特許文献１に開示されるように、一方の仮想サーバで動作する仮想ＯＳを他方の仮想サーバに移行するライブマイグレーション機能も発達している。ライブマイグレーション機能は、一方の仮想サーバがリードライト中であっても他方の仮想サーバに仮想ＯＳを移行できる。
【０００４】
一方、ストレージ装置を用いてデータを格納する場合には、複数のハードディスクをＲＡＩＤ（Redundant Array of Independent/Inexpensive Disks）方式で管理する方法がある。そして、多数のハードディスクが提供する物理的な記憶領域上には、少なくとも１つ以上の論理的なボリューム（以下、これをボリュームという）が形成される。
【特許文献１】特開平１０−２８３２１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
仮想サーバとストレージ装置とは、高速ネットワークの１つであるＳＡＮ（Storage Area Network）を介して接続される。しかしながら、一方の仮想サーバと他方の仮想サーバとの距離が離れている等の理由から、両仮想サーバが別々のＳＡＮ環境にある場合には、一方の仮想サーバで動作する仮想ＯＳを他方の仮想サーバに移行することはできない、という問題が生じる。
【０００６】
加えて、このような別々のＳＡＮ環境においては、一方の仮想サーバは他方の仮想サーバと接続されるストレージ装置内のボリュームを共有することはできない。
【０００７】
そこで、本発明は、別々のＳＡＮ環境であるためにストレージ装置のボリュームを共有できない場合でも、仮想サーバのライブマイグレーションを可能とする仮想計算機システム及び仮想計算機移行制御方法を提案しようとするものである。
【課題を解決するための手段】
【０００８】
かかる課題を解決するため本発明の仮想計算機システムにおいては、ＣＰＵ及びメモリを含む情報処理資源を備えたコンピュータ装置から構成され、夫々が１又は複数の仮想ＯＳと、前記１又は複数の仮想ＯＳを管理する管理ＯＳと、を有する移行元仮想サーバ及び移行先仮想サーバと、前記移行元仮想サーバ及び移行先仮想サーバからのデータを格納するハードディスク上の前記メモリ領域から提供される複数の論理ボリュームを有する複数のストレージ装置と、を有し、前記移行元仮想サーバと前記移行先仮想サーバとは、ＩＰネットワークを介して相互に接続され、前記移行元仮想サーバは、第１のＳＡＮを介して前記ストレージ装置と接続され、前記移行先仮想サーバは、前記第１のＳＡＮとは異なる第２のＳＡＮを介して他のストレージ装置と接続され、前記移行元仮想サーバと前記移行先仮想サーバの夫々には、夫々の管理ＯＳが管理する前記論理ボリュームと、各仮想ＯＳが管理する前記論理ボリュームと、を、管理ＯＳ上のボリューム名と仮想ＯＳ上のボリューム名とを対応付けて割り当てるボリューム割当て部と、夫々の管理ＯＳが管理する前記論理ボリュームを、管理ＯＳ上のボリューム名、ボリューム管理番号、移行元又は移行先のＩＰアドレスを示すリモート側管理ＯＳ識別情報を含むボリューム識別情報から識別するボリューム識別情報と、夫々の管理ＯＳが管理する前記論理ボリュームと、を対応付けて管理するボリューム情報管理部と、夫々の管理ＯＳにおける前記ボリューム情報管理部が管理するボリューム識別情報に基づいて、前記移行元仮想サーバの管理ＯＳ及び移行先仮想サーバの管理ＯＳに事前に設定されている接続認証用のボリューム認識コマンドを前記移行元仮想サーバの管理ＯＳと移行先仮想サーバの管理ＯＳとの間で送受信して接続を確認することにより、前記移行元仮想サーバと前記移行先仮想サーバとが共通の論理ボリュームを移行対象の論理ボリュームとして識別する識別部と、前記移行元仮想サーバの仮想ＯＳが使用する前記メモリ領域内のデータを前記移行先仮想サーバに移行し、前記移行中に更新される前記メモリ領域内の更新データを前記移行先仮想サーバに移行する仮想ＯＳ移行部と、前記移行元仮想サーバに接続される移行対象の論理ボリューム内のデータを前記移行先仮想サーバに接続される移行対象の論理ボリューム内に移行し、前記移行中に更新される前記移行元仮想サーバ側の移行対象の論理ボリューム内の更新データを前記移行先仮想サーバ側の移行対象の論理ボリュームに移行するデータ移行部と、を備えることを特徴とする。
【０００９】
その結果、別々のネットワーク環境にあっても両仮想サーバはストレージ装置のボリュームを共有することができ、一方の仮想サーバから他方の仮想サーバに仮想ＯＳを移行することができる。
【００１０】
また本発明の仮想計算機移行制御方法においては、ＣＰＵ及びメモリを含む情報処理資源を備えたコンピュータ装置から構成され、夫々が１又は複数の仮想ＯＳと、前記１又は複数の仮想ＯＳを管理する管理ＯＳと、を有する移行元仮想サーバ及び移行先仮想サーバと、前記移行元仮想サーバ及び移行先仮想サーバからのデータを格納するハードディスク上の前記メモリ領域から提供される複数の論理ボリュームを有する複数のストレージ装置と、を有し、前記移行元仮想サーバと前記移行先仮想サーバとは、ＩＰネットワークを介して相互に接続され、前記移行元仮想サーバは、第１のＳＡＮを介して前記ストレージ装置と接続され、前記移行先仮想サーバは、前記第１のＳＡＮとは異なる第２のＳＡＮを介して他のストレージ装置と接続される仮想計算機システムの仮想計算機移行制御方法であって、夫々の管理ＯＳが管理する前記論理ボリュームと、各仮想ＯＳが管理する前記論理ボリュームと、を、管理ＯＳ上のボリューム名と仮想ＯＳ上のボリューム名とを対応付けて割り当てるボリューム割当てステップと、夫々の管理ＯＳが管理する前記論理ボリュームを、管理ＯＳ上のボリューム名、ボリューム管理番号、移行元又は移行先のＩＰアドレスを示すリモート側管理ＯＳ識別情報を含むボリューム識別情報から識別するボリューム識別情報と、夫々の管理ＯＳが管理する前記論理ボリュームと、を対応付けて管理するボリューム情報管理ステップと、夫々の管理ＯＳにおいて前記ボリューム情報管理部が管理するボリューム識別情報に基づいて、前記移行元仮想サーバの管理ＯＳ及び移行先仮想サーバの管理ＯＳに事前に設定されている接続認証用のボリューム認識コマンドを前記移行元仮想サーバの管理ＯＳと移行先仮想サーバの管理ＯＳとの間で送受信して接続を確認することにより、前記移行元仮想サーバと前記移行先仮想サーバとが共通の論理ボリュームを移行対象の論理ボリュームとして識別する識別ステップと、前記移行元仮想サーバの仮想ＯＳが使用する前記メモリ領域内のデータを前記移行先仮想サーバに移行し、前記移行中に更新される前記メモリ領域内の更新データを前記移行先仮想サーバに移行する仮想ＯＳ移行ステップと、前記移行元仮想サーバに接続される移行対象の論理ボリューム内のデータを前記移行先仮想サーバに接続される移行対象の論理ボリューム内に移行し、前記移行中に更新される前記移行元仮想サーバ側の移行対象の論理ボリューム内の更新データを前記移行先仮想サーバ側の移行対象の論理ボリュームに移行するデータ移行ステップと、
を備えることを特徴とする。
【００１１】
その結果、別々のネットワーク環境にあっても両仮想サーバはストレージ装置のボリュームを共有することができ、一方の仮想サーバから他方の仮想サーバに仮想ＯＳを移行することができる。
【発明の効果】
【００１２】
本発明によれば、別々のＳＡＮ環境であるためにストレージ装置のボリュームを共有できない場合でも、仮想サーバのライブマイグレーションを実行することができる。
【発明を実施するための最良の形態】
【００１３】
以下図面について、本発明の一実施の形態を詳述する。
【００１４】
（１）第１の実施の形態
（１−１）第１の実施の形態による仮想計算機システムの構成
（１−１−１）仮想計算機システムのハードウェア構成
図１において、１は全体として本実施の形態による仮想計算機システムを示す。この記憶システム１は、複数の仮想サーバ２Ａ，２Ｂ間がＩＰ（Internet Protocol）ネットワーク３を介して接続され、仮想サーバ２Ａが第１のＳＡＮ４Ａを介してストレージ装置５Ａと接続され、仮想サーバ２Ｂが第２のＳＡＮ４Ｂを介してストレージ装置５Ｂと接続されることにより構成されている。
【００１５】
仮想サーバ２Ａ，２Ｂは、それぞれ別々のＳＡＮ４Ａ、４Ｂに接続されている。このため、仮想サーバの区別をする場合にはＡ，Ｂと記載するが、特に区別をする必要がない場合にはＡ，Ｂ記載をせずに説明する。ＳＡＮ４Ａ，４Ｂ及びストレージ装置５Ａ，５Ｂの場合も同様である。
【００１６】
仮想サーバ２は、ＣＰＵ（Central Processing Unit）２０やメインメモリ２１等の情報処理資源を備えたコンピュータ装置であり、例えばパーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。また仮想サーバ２は、ストレージ装置５との接続インタフェースであるＨＢＡ(Host Bus Adapter）２２、仮想サーバ２内のデータを記憶するローカルディスク２３、及び、他の仮想サーバ２との接続インタフェースであるＮＩＣ(Network Interface Card)２４等のハードウェア２５を備える。
【００１７】
このハードウェア２５は、仮想サーバ２の操作等を行うモニタ２６やキーボード２７の情報入出力装置と接続される。ＣＰＵ２０、メインメモリ２１、及び、ハードウェア２５は、バス２８を介して接続される。
【００１８】
図２に示すように、仮想サーバ２のメインメモリ２１には、後述するボリューム割当テーブル２１０、メモリ領域管理テーブル２１１、メモリ差分管理テーブル２１２、及び、ボリューム情報管理テーブル２１３が格納される。なお、図２は、移行元仮想サーバ２Ａのメインメモリ２１Ａを示しているが、移行先仮想サーバ２Ｂも同様の構成である。
【００１９】
ストレージ装置５は、図１に示すように、１又は複数備えられ、複数のボリューム６０からなるディスクユニット部６と、複数のボリューム６０をＲＡＩＤ方式で管理するコントローラ部７とを備えて構成される。
【００２０】
ディスクユニット部６は、複数のボリューム６０を形成させる多数のハードディスク（図示せず）が構成されている。ハードディスクは、例えばＳＣＳＩ（Small Computer System Interface）ディスク等の高価なディスク、又はＳＡＴＡ（Serial AT Attachment）ディスクや光ディスク等の安価なディスクから構成される。
【００２１】
ボリューム６０には、それぞれ固有の識別子（ＬＵＮ：Logical Unit Number）が割り当てられる。データの入出力は、この識別子と、各ブロックにそれぞれ割り当てられるそのブロックに固有の番号（ＬＢＡ：Logical Block Address）と、の組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
【００２２】
コントローラ部7は、チャネルアダプタ７０、Ｉ／Ｏ(Input/Output)キャッシュ７１、共有メモリ７２、ディスクアダプタ７３がスイッチ７４を介して接続されて構成される。
【００２３】
チャネルアダプタ７０は、チャネルプロセッサ７００、ローカルメモリ７０１及び通信インタフェース等を備えたマイクロコンピュータシステムとして構成されており、ＳＡＮ４に接続するためのＦＣ(Fible Channel)ポート７０２を備える。チャネルアダプタ７０は、仮想サーバ２から送信される各種コマンドを解釈して、必要な処理を実行する。チャネルアダプタ７０のＦＣポート７０２には、それぞれを識別するためのネットワークアドレス（例えば、ＷＷＮ）が割当てられており、これによりチャネルアダプタ７がそれぞれ個別にＮＡＳ（Network Attached Storage）として使用できるようになされている。
【００２４】
Ｉ／Ｏキャッシュ７１は、チャネルアダプタ７０及びディスクアダプタ７３により共有される記憶メモリである。このＩ／Ｏキャッシュ７１は、主にストレージ装置５に入出力する仮想サーバ２のデータを一時的に記憶するために利用される。
【００２５】
共有メモリ７２は、チャネルアダプタ７０及びディスクアダプタ７３により共有される記憶メモリである。共有メモリ７２は、主にストレージ装置５の電源投入時にシステムボリュームから読み出されたシステム構成情報及び各種制御プログラムや、仮想サーバ２からのコマンドなどを記憶するために利用される。共有メモリ７２内には、ディスクユニット部６にある複数のボリューム６０を管理するリソース情報管理部７２０を備える。
【００２６】
ディスクアダプタ７３は、ディスクプロセッサ７３０やローカルメモリ７３１等を備えたマイクロコンピュータシステムとして構成され、ディスクユニット部６との通信時におけるプロトコル制御を行うインタフェースとして機能する。ディスクアダプタ７３は、例えばファイバーチャネルケーブルを介して対応するディスクユニット部６と接続されており、ファイバーチャネルプロトコルに従ってディスクユニット部６との間のデータの授受を行う。
【００２７】
チャネルアダプタ７０、Ｉ／Ｏキャッシュ７１、共有メモリ７２及びディスクアダプタ７３間のデータやコマンドの授受は、スイッチ７４を介して行われる。スイッチ７４は、例えば高速スイッチングによりデータ伝送を行う超高速クロスバススイッチなどのスイッチ又はバス等で構成される。
【００２８】
このように本実施の形態による仮想計算機システム１は、それぞれの仮想サーバ２Ａ、２Ｂがそれぞれ別々のＳＡＮ４Ａ、４Ｂを介して、それぞれ別々のストレージ装置５Ａ、５Ｂと接続される構成である。このため、仮想サーバ２Ｂは、仮想サーバ２Ａと接続されるストレージ装置５Ａ内に形成されるボリューム６０を共有することはできない環境にある。本実施の形態による発明は、このような環境下において、仮想サーバ間で仮想ＯＳの移行（ライブマイグレーション）を実行することを特徴とする。
【００２９】
（１−１−２）仮想サーバのソフトウェア構成
では次に、上述の仮想サーバ２のソフトウェア構成について説明する。以下では、移行対象の仮想ＯＳを有する移行元仮想サーバを仮想サーバ２Ａ、移行後の仮想ＯＳを有する移行先仮想サーバを仮想サーバ２Ｂとして説明する。
【００３０】
具体的なソフトウェア構成を図３に示す。まず移行元仮想サーバ２Ａは、１台のサーバマシン上で、アプリケーションＡＰを動作させる仮想ＯＳ（以下、ゲストＯＳという）を複数同時に動作させるサーバである。移行元仮想サーバ２Ａは、このゲストＯＳ８０Ａの他、管理ＯＳ８１Ａ、仮想マシンモニタ８２Ａ、及び、上述したハードウェア２５Ａを備えている。
【００３１】
ゲストＯＳ８０Ａには、アプリケーションＡＰ上のユーザデータを記憶するために、複数のボリュームａ，ｂを認識する。
【００３２】
管理ＯＳ８１Ａは、移行元仮想サーバ２Ａ上のハードウェアリソースの管理と、複数のゲストＯＳ８０Ａの管理を行うＯＳであり、ボリューム１、２を認識している。なお、この管理ＯＳ８１Ａは、仮想サーバ２によっては、後述する仮想マシンモニタ８２Ａに実装されている場合もある。
【００３３】
また、管理ＯＳ８１Ａには、移行元仮想サーバ２Ａと移行先仮想サーバ２Ｂとの間でデータの授受を行うためのＩ／Ｏ受信プロセス８１０Ａ、複数のゲストＯＳ８０Ａが認識するボリュームａ，ｂと管理ＯＳ８１Ａが認識するボリューム１、２との対応付けを管理するゲストＯＳ管理ファイル８１１Ａ、ゲストＯＳ８０Ａが認識するボリュームａ，ｂに対応付けて形成するボリューム用デバイスファイル８１４Ａ、が主に備えられる。
【００３４】
Ｉ／Ｏ受信プロセス８１０Ａは、移行先仮想サーバ２Ｂ内のＩ／Ｏ発信プロセス８１０Ｂが認識するボリュームとＩ／Ｏ受信プロセス８１０Ａが認識するボリュームとの対応づけを行ったり、リードやライト等のＩ／Ｏ要求コマンドを発行する管理ＯＳ上で動作させたりするプロセスである。
【００３５】
またＩ／Ｏ受信プロセス８１０ＡはＩＰネットワーク３を使用してデータの授受を行うためのネットワークデバイス８１２Ａと接続され、ネットワークデバイス８１２ＡはアプリケーションＡＰがＩＰネットワーク３を利用するたびに呼び出されるＮＩＣ(Network Interface Card)ドライバ８１３Ａと接続されている。
【００３６】
ボリューム用デバイスファイル８１４Ａは、ストレージ装置５Ａ内に形成されるボリューム１，２を認識するためのデバイスファイルであり、ストレージ装置５Ａ内に形成されるボリューム１，２の数に対応して形成される。そして、ストレージ装置５Ａ内のボリューム１，２をブロックデバイス８１４０Ａが認識し、認識したボリューム１，２に対応してデバイスドライバ８１４１Ａが登録される。
【００３７】
また、ボリューム用デバイスファイル８１４Ａは、ＳＡＮ４を利用するたびに呼び出されるＨＢＡドライバ８１５Ａと接続されている。なお、ＨＢＡドライバ８１５Ａも、ボリューム用デバイスファイル８１４Ａの数分有するが、図中では記載を省略している。
【００３８】
仮想マシンモニタ８２Ａは、複数のゲストＯＳ８０Ａがそれぞれ行うアプリケーション処理を調整して、どのゲストＯＳ８０Ａのアプリケーション処理を実行するかの切り替え処理を行う。この切り替えは高速で行われるため、複数のゲストＯＳ８０Ａが同時に動作しているようにみえる。
【００３９】
ハードウェア２５Ａでは、上述したＨＢＡ２２ＡがＨＢＡドライバ８１５Ａと接続され、ＮＩＣ２４がＮＩＣドライバ８１３Ａと接続される。
【００４０】
移行先仮想サーバ２Ｂは、移行元仮想サーバ２Ａで動作するゲストＯＳ８０Ａのライブマイグレーションを実行しない状態でのソフトウェア構成を示す。移行先仮想サーバ２Ｂは、管理ＯＳ８１Ｂ、仮想マシンモニタ８２Ｂ、及び、上述したハードウェア２５Ｂを備えている。
【００４１】
そして管理ＯＳ８１Ａには、移行元仮想サーバ２Ａと移行先仮想サーバ２Ｂとの間でデータの授受を行うためのＩ／Ｏ発信プロセス８１０Ｂ、ライブマイグレーション後のゲストＯＳ８０が認識するボリュームと管理ＯＳ８１Ｂが認識するボリュームとの対応付けを管理するゲストＯＳ管理ファイル８１１Ｂ、が主に備えられる。
【００４２】
なお、ネットワークデバイス８１２Ｂ、ＮＩＣドライバ８１３Ｂ、仮想マシンモニタ８２Ｂ、及び、ＮＩＣ２４Ｂは上述した移行元仮想サーバ２Ａと同様の構成のため説明を省略する。
【００４３】
（１−２）テーブル構成
それでは次に、仮想サーバ２のメインメモリ２１に格納される各種テーブル構成について説明する。
【００４４】
（１−２−１）ボリューム割当テーブル
ボリューム割当テーブル２１０は、メインメモリ２１のゲストＯＳ構成管理ファイル８１１内に格納されているテーブルであり、ストレージ装置５Ａ上のどのボリューム６０をどのゲストＯＳ８０に認識させるかを定めるテーブルである。
【００４５】
ボリューム割当テーブル２１０は、複数のゲストＯＳを識別する識別情報を示した「ゲストＯＳ識別情報」欄２１００、ストレージ装置５Ａ上のボリューム６０を管理ＯＳ８１上で管理しているボリューム名を示した「管理ＯＳ上のボリューム名」欄２１０１、及び、ストレージ装置５Ａ上のボリューム６０をゲストＯＳ８０上で管理しているボリューム名を示した「ゲストＯＳ上のボリューム名」欄２１０２から構成される。図４に示すように、ストレージ装置５Ａ上のボリューム６０を管理ＯＳ８１上で管理しているボリューム名と、ストレージ装置５Ａ上のボリューム６０をゲストＯＳ８０上で管理しているボリューム名と、を対応付ける。
【００４６】
（１−２−２）メモリ領域管理テーブル
メモリ領域管理テーブル２１１は、どのゲストＯＳ８０がメインメモリ２１上の領域どの範囲を使用しているかを管理するテーブルである。ライブマイグレーションを実行する際は、この管理テーブル２１１に基づいて、メインメモリ２１領域内にあるライブマイグレーション対象のゲストＯＳ８０のデータをコピーして移行先仮想サーバ２Ｂに送信する。
【００４７】
メモリ領域管理テーブル２１１は、図５に示すように、「ゲストＯＳ識別情報」欄２１１０、ゲストＯＳ８０内のデータを格納する開始アドレスを示した「メモリ上の領域開始アドレス」欄２１１１、及び、ゲストＯＳ８０内のデータを格納する終了アドレスを示した「メモリ上の領域終了アドレス」欄２１１２から構成される。
【００４８】
なお、「ゲストＯＳ識別情報」欄２１１０は、上述した「ゲストＯＳ識別情報」欄２１００と同様の内容なので、説明を省略する。
【００４９】
（１−２−３）メモリ差分管理テーブル
メモリ差分管理テーブル２１２は、メインメモリ２１領域内のライブマイグレーション対象のゲストＯＳ８０のデータを移行先仮想サーバ２Ｂに送信している間にも更新されるゲストＯＳ８０のデータを差分データとして管理するテーブルである。
【００５０】
メモリ差分管理テーブル２１２は、図６に示すように、「ゲストＯＳ識別情報」欄２１２０、差分データを処理するために付される管理番号を示した「メモリ差分シーケンシャル番号」欄２１２１、及び、差分データをメインメモリ２１領域内に格納したアドレスを示した「変更アドレス」欄２１２２から構成される。
【００５１】
なお、「ゲストＯＳ識別情報」欄２１２０は、上述した「ゲストＯＳ識別情報」欄２１００と同様の内容なので、説明を省略する。
【００５２】
（１−２−４）ボリューム情報管理テーブル
ボリューム情報管理テーブル２１３は、図７に示すように、Ｉ／Ｏ受信プロセス８１０Ａ又はＩ／Ｏ発信プロセス８１０Ｂ内に格納されるテーブルであって、ストレージ装置５Ａのボリューム識別情報と各管理ＯＳ８１が認識するボリューム名とを対応付けるテーブルである。したがって、ボリューム情報管理テーブル２１３は、管理ＯＳごとに保持される。
【００５３】
ボリューム情報管理テーブル２１３は、ボリューム６０の管理番号を示した「ボリューム管理番号」欄２１３０、「管理ＯＳ上のボリューム名」欄２１３１、ストレージ装置５Ａの製造番号を示した「ストレージ装置製造番号」欄２１３２、ボリュームの識別情報を示した「ボリューム識別情報」欄２１３３、及び、ライブマイグレーションの元又は先のＩＰアドレスを示した「リモート側管理ＯＳ識別情報」欄２１３４から構成される。
【００５４】
例えば、移行元仮想サーバ２Ａの場合には、「リモート側管理ＯＳ識別情報」欄２１３４にはライブマイグレーション先の移行先仮想サーバ２ＢのＩＰアドレスが登録される。一方、移行先仮想サーバ２Ｂの場合には、「リモート側管理ＯＳ識別情報」欄２１３４にはライブマイグレーション元の移行元仮想サーバ２ＡのＩＰアドレスが登録される。
【００５５】
なお、「管理ＯＳ上のボリューム名」欄２１３１は、上述した「管理ＯＳ上のボリューム名」欄２１０１と同様の内容なので、説明を省略する。
【００５６】
（１−３）ライブマイグレーション処理
上述のソフトウェア構成やテーブル構成に基づいて、移行元仮想サーバ２ＡにあるゲストＯＳ８０をどのように移行先仮想サーバ２Ｂに移行するかについて説明する。
【００５７】
（１−３−１）ボリューム認識処理
まず、ライブマイグレーションを実行するための事前の準備として、移行元仮想サーバ２Ａと移行先仮想サーバ２Ｂとが認識（識別）できる共通のボリューム６０を設定する必要がある。
【００５８】
具体的には、図８及び図９に示すように、ユーザが情報入出力装置２６Ａ、２７Ａを使用して、管理ＯＳ８１ＡにＩ／Ｏ受信設定コマンドを発行する。Ｉ／Ｏ受信設定コマンドは、Ｉ／Ｏ受信設定コマンドであるコマンド名と、実行に必要な情報であるユーザＩＤ及びパスワードと、からなる。そしてユーザは移行元仮想サーバ２Ａの管理ＯＳ８１Ａ上で移行先仮想サーバ２Ｂの管理ＯＳ８１Ｂから接続がある際の認証に使用する、ユーザＩＤ及びパスワードを設定する（Ｓ１）。設定された情報は、Ｉ／Ｏ受信プロセス８１０Ａが保持する。
【００５９】
次に、ユーザが管理ＯＳ８１ＡにＩ／Ｏ受信ボリューム設定コマンドを発行し、管理ＯＳ８１Ａが認識しているボリューム６０Ａのうち、どのボリューム６０Ａを移行先仮想サーバ２Ｂの管理ＯＳ８１Ｂにも認識させるかを設定する（Ｓ２）。Ｉ／Ｏ受信ボリューム設定コマンドは、Ｉ／Ｏ受信ボリューム設定コマンドであるコマンド名と、実行に必要な情報であるボリューム名及び認識を許可する管理ＯＳの識別情報と、からなる。設定された情報は、Ｉ／Ｏ受信プロセス８１０Ａのボリューム情報管理テーブル２１３Ａに保持する。ここまでで、移行元仮想サーバ２Ａに関する事前準備は終了する。
【００６０】
その後ユーザは、任意のタイミングで、移行先仮想サーバ２Ｂの管理ＯＳ８１Ｂにボリューム認識コマンドを発行する（Ｓ３）。ボリューム認識コマンドは、Ｉ／Ｏ受信ボリューム設定コマンドで許可されたボリュームを別の管理ＯＳで認識するためのコマンドであり、ボリューム認識コマンドとするコマンド名と、管理ＯＳ８１Ｂを示すＩＰアドレス、認識するストレージ装置５Ａの製造番号、ボリューム識別情報、ユーザＩＤ及びパスワードと、からなる。
【００６１】
ボリューム認識コマンドをＩ／Ｏ発信プロセス８１０Ｂが受け取ると、当該コマンドを認識要求としてＩ／Ｏ受信プロセス８１０Ａに送信する（Ｓ４）。
【００６２】
Ｉ／Ｏ受信プロセス８１０Ａは、認識要求を受け取ると、ユーザＩＤ及びパスワードを確認し、ログインを完了させる（Ｓ５）。
【００６３】
管理ＯＳ８１Ａは、移行先仮想サーバ２Ｂに認識させるボリューム６０Ａをボリューム情報管理テーブル２１３Ａから１つ選択し、移行先仮想サーバ２Ｂが選択したボリューム６０Ａに対してアクセス可能か否かを確認する（Ｓ６）。アクセス可能であれば、ボリューム情報管理テーブル２１３Ａに、移行先仮想サーバ２Ｂの管理ＯＳ８１Ｂを示すＩＰアドレスを登録する（Ｓ７）。管理ＯＳ８１Ａは、ボリューム情報管理テーブル２１３Ａから選択したボリューム６０と対応付けられるゲストＯＳ８０をライブマイグレーションの対象とする。
【００６４】
その後Ｉ／Ｏ受信プロセス８１０Ａは、ボリューム情報管理テーブル２１３Ａから選択したボリューム６０のボリューム識別情報をＩ／Ｏ発信プロセス８１０Ｂに送信する（Ｓ８）。
【００６５】
Ｉ／Ｏ発信プロセス８１０Ｂは、ボリューム識別情報を受け取ると（Ｓ９）、対象となるボリュームのブロックデバイス８１４０Ｂを作成し、リモートデバイスドライバ８１４１Ｂを作成したブロックデバイス８１４０Ｂに登録して、ボリューム用デバイスファイル８１４Ｂを作成する（Ｓ１０）。ブロックデバイス８１４０Ｂは、対象となるボリュームの数に応じて作成され、リモートデバイスドライバ８１４１Ｂもボリュームの数に応じてブロックデバイス８１４０Ｂに登録される。
【００６６】
Ｉ／Ｏ発信プロセス８１０Ｂは、受け取ったボリューム識別情報を、Ｉ／Ｏ発信プロセス８１０Ｂ内にあるボリューム情報管理テーブル２１３Ｂに登録し、受け取ったボリューム識別情報に基づいて管理ＯＳ８１Ｂが認識するボリューム名も登録する（Ｓ１１）。
【００６７】
そして、管理ＯＳ８１Ｂは、ゲストＯＳ構成管理ファイル８１１Ｂ内のボリューム割当テーブル２１０Ｂに、ライブマイグレーションの対象となるゲストＯＳが認識するボリューム名と、管理ＯＳ８１Ｂが認識するボリューム名と、を作成する（Ｓ１２）。
【００６８】
以上により、移行元仮想サーバ２Ａと移行先仮想サーバ２Ｂとが、共通のボリュームを認識することができる。この様子を図１０に示す。
【００６９】
図１０に示すように、移行元仮想サーバ２Ａと移行先仮想サーバ２Ｂとが共通して認識する２つのボリューム識別情報として00：03：01及び00：03：02を例示する。移行元仮想サーバ２Ａと移行先仮想サーバ２Ｂとが上記ボリューム認識処理を実行することで、ボリューム識別情報00：03：01及び00：03：02に対応する管理ＯＳ８１Ａ上のボリューム１及びボリューム２が設定される。ボリューム１及びボリューム２は管理ＯＳ８１Ａが認識するボリューム名である。
【００７０】
一方、ボリューム識別情報00：03：01及び00：03：02に対応して管理ＯＳ８１Ｂ上のボリューム２１及びボリューム２２が設定される。ボリューム２１及びボリューム２２は、管理ＯＳ８１Ｂが認識するボリューム名である。
【００７１】
そして、ボリューム識別情報00：03：01及び00：03：02を、ゲストＯＳ８０Ａはボリュームａ及びボリュームｂとして認識しているため、移行元仮想サーバ２Ａ側では、ボリューム１とボリュームａ、ボリューム２とボリュームｂとを対応付ける。また、移行先仮想サーバ２Ｂ側では、ボリューム２１とボリュームａ、ボリューム２２とボリュームｂとを対応付ける。
【００７２】
なお、Ｉ／Ｏ受発信プロセス８１０ＡＢ間にボリューム識別情報を使用するのは、管理ＯＳ８１Ａが再起動等によって、管理ＯＳ８１Ａ上のボリューム名が変更する場合があるからである。
【００７３】
（１−３−２）ライブマイグレーション処理
移行元仮想サーバ２Ａと移行先仮想サーバ２Ｂとが認識できる共通のボリューム６０を設定した後、引き続き、移行元仮想サーバ２Ａ上のゲストＯＳを移行先仮想サーバ２Ｂに移行するライブマイグレーション処理について説明する。
【００７４】
移行元仮想サーバ２Ａ及び移行先仮想サーバ２Ｂは、上述に説明したボリューム認識処理を実行すると（Ｓ１~Ｓ１２）、ライブマイグレーション処理を開始する。
【００７５】
具体的には、図１１に示すように、移行元仮想サーバ２Ａの管理ＯＳ８１Ａは、メモリ領域管理テーブル２１１Ａを参照し、ライブマイグレーションの対象となるゲストＯＳ８０Ａのメモリイメージを移行先仮想サーバ２Ｂの管理ＯＳ８１Ｂに送信する（Ｓ１３）。ここでメモリイメージとは、ライブマイグレーションの対象となるゲストＯＳが使用するメインメモリ２１の領域に格納されるデータをいう。
【００７６】
ゲストＯＳ８０Ａのメモリイメージを受信した移行先仮想サーバ２Ｂの管理ＯＳ８１Ｂは、受信が完了した旨を移行元仮想サーバ２Ａの管理ＯＳ８１Ａに通知する（Ｓ１４）。
【００７７】
その後、移行元仮想サーバ２Ａの管理ＯＳ８１Ａは、メモリ差分管理テーブル２１２Ａを参照し、メモリイメージを送信中にメインメモリ２１の領域に更新された差分データを差分メモリイメージとして移行先仮想サーバ２Ｂの管理ＯＳ８１Ｂに送信する。差分メモリイメージの送信完了後、移行元仮想サーバ２Ａの管理ＯＳ８１Ａは、差分メモリイメージを送信中に、メインメモリ２１の領域に更新された更なる差分メモリイメージも送信する。そうして移行元仮想サーバ２Ａの管理ＯＳ８１Ａは、メモリイメージ送信中に更新されるメモリイメージの差分が十分に小さくなると、ゲストＯＳ８０Ａの処理を一旦停止して、全ての差分メモリイメージを移行先仮想サーバ２Ｂの管理ＯＳ８１Ｂに送信する（Ｓ１５）。
【００７８】
移行先仮想サーバ２Ｂの管理ＯＳ８１Ｂは、メモリイメージ及び差分メモリイメージを全て受け取ると、ゲストＯＳ８０Ａのメモリイメージとライブマイグレーション後のゲストＯＳ８０Ｂのメモリイメージとの同期が完了したことを移行元仮想サーバ２Ａの管理ＯＳ８１Ａに送信する（Ｓ１６）。
【００７９】
移行元仮想サーバ２Ａの管理ＯＳ８１Ａは、同期完了した通知を受け取ると、ゲストＯＳ８０Ａを停止させ、この旨を移行先仮想サーバ２Ｂの管理ＯＳ８１Ｂに通知する（Ｓ１７）。
【００８０】
移行先仮想サーバ２Ｂの管理ＯＳ８１Ｂは、ゲストＯＳ８０Ａの停止通知を受け取ると、移行先仮想サーバ２Ｂ側で、ゲストＯＳ８０Ｂを開始させる（Ｓ１８）。
【００８１】
その後、移行元仮想サーバ２Ａの管理ＯＳ８１Ａ上で、ゲストＯＳ８０Ａが停止し（Ｓ１９）、移行先仮想サーバ２Ｂの管理ＯＳ８１Ｂ上で、ゲストＯＳ８０Ｂが開始する（Ｓ２０）。このように、ライブマイグレーション処理を実行後の仮想計算機システム１を図１２に示す。
【００８２】
ユーザは、ライブマイグレーションが正常に実行されたことを、移行元仮想サーバ２Ａ又は移行先仮想サーバ２Ｂのモニタ２６Ａ，２６Ｂから確認することができる。
【００８３】
図１３は、ユーザが移行元仮想サーバ２Ａのモニタ２６Ａからライブマイグレーションが正常に実行されたこと確認できる画面Ｓ１を示す。
【００８４】
画面表示Ｄ１は、「ボリューム名」欄１００Ｄ、「ストレージ装置製造番号」欄１０１Ｄ、「ボリューム識別情報」欄１０２Ｄ、「リモート／ローカルボリューム識別情報」欄１０３Ｄ、及び、「リモート側の管理ＯＳ識別情報」欄１０４Ｄを示す。ボリューム名は、管理ＯＳ８１Ａが認識するストレージ装置５Ａのボリューム名を示す。リモート／ローカルボリューム識別情報は、管理ＯＳ８１Ａが該当するボリューム６０を外部に割り当てているのか、又は、管理ＯＳ８１Ａが該当するボリューム６０を外部から取り込んでいるか、の識別情報を示す。例えば、管理ＯＳ８１Ａが該当するボリュームを外部の管理ＯＳに割り当てている場合には、「export」で表示され、管理ＯＳ８１Ａが該当するボリュームを外部の管理ＯＳから取り込んでいる場合には、「import」で表示される。リモート側の管理ＯＳ識別情報は、リモート先の管理ＯＳ８１のＩＰアドレスを示す。
【００８５】
画面表示Ｄ１は、管理ＯＳ８１Ａが認識するボリューム１は、「192.168.0.2」のＩＰアドレスを持つ外部の管理ＯＳ８１に割り当てられていることを示す。
【００８６】
図１４には、ユーザが移行先仮想サーバ２Ｂのモニタ２６Ｂからライブマイグレーションが正常に実行されたこと確認できる画面Ｓ２を示す。
【００８７】
画面表示Ｄ２は、管理ＯＳ８１Ｂが認識するボリューム２１は、「192.168.0.1」のＩＰアドレスを持つ管理ＯＳ８１から取り込んでいることを示す。なお、画面表示欄２００Ｄ〜２０４Ｄは、上述の内容と同様なので、説明を省略する。
【００８８】
以上のように、移行元仮想サーバ２Ａ及び移行先仮想サーバ２Ｂが事前にボリューム認識処理を行うことで、円滑にゲストＯＳのライブマイグレーションを実現できる。
【００８９】
（１−３−３）プロセス間通信処理
次に、ボリューム認識処理の終了後、移行先仮想サーバ２Ｂは、移行元仮想サーバ２Ａに対してボリューム６０が正しく認識されているかの確認を定期的に行うプロセス間通信処理について説明する。
【００９０】
まず、図１５に示すように、移行先仮想サーバ２ＢのＩ／Ｏ発信プロセス８１０Ｂは、任意のタイミングでプロセス間通信処理を開始する（Ｓ３０）。そして、Ｉ／Ｏ発信プロセス８１０Ｂは、Ｉ／Ｏ受信プロセス８１０Ａにログインを実行し（Ｓ３１）、ログイン成功すると（Ｓ３１：ＹＥＳ）、移行先仮想サーバ２Ｂ側から発行するＩ／ＯをＩ／Ｏ受信プロセス８１０Ａに送信できる状態になるので（Ｓ３２）、ライブマイグレーションを実行後のゲストＯＳがＩ／Ｏ要求した場合には、ここで後述するＩ／Ｏ処理を実行する。
【００９１】
その後、Ｉ／Ｏ発信プロセス８１０Ｂは、移行元仮想サーバ２Ａ側が認識するボリュームが削除されたか否かを確認し（Ｓ３３）、削除されている場合には（Ｓ３３：ＹＥＳ）、このままプロセス間通信処理を終了する（Ｓ３７）。
【００９２】
一方、Ｉ／Ｏ発信プロセス８１０Ｂは、移行元仮想サーバ２Ａ側が認識するボリュームが削除されていないことを確認すると（Ｓ３３：ＮＯ）、移行元仮想サーバ２Ａに対してＩ／Ｏが成功した場合又は定期的にポーリングが行われた場合から規定時間が経過したか否かを判断する（Ｓ３４）。なお、Ｉ／Ｏが成功した場合とは、移行元仮想サーバ２Ａ側が認識するボリュームに対して正しくＩ／Ｏが行われたことを示す。
【００９３】
Ｉ／Ｏ発信プロセス８１０Ｂは、規定時間経過していると判断すると（Ｓ３４：ＹＥＳ）、Ｉ／Ｏ受信プロセス８１０Ａへのポーリングを行い、ポーリングが成功した場合には（Ｓ３５：ＹＥＳ）、ステップＳ３２のステップを実行する。また、Ｉ／Ｏ発信プロセス８１０Ｂは、規定時間を経過していないと判断した場合も（Ｓ３４：ＮＯ）、ステップＳ３２のステップを実行する。
【００９４】
なお、Ｉ／Ｏ発信プロセス８１０Ｂは、Ｉ／Ｏ受信プロセス８１０Ａへのポーリングが失敗した場合には（Ｓ３５：ＮＯ）、エラー表示をしてそのまま終了する（Ｓ３６）。
【００９５】
（１−３−４）リード処理
では上述のように、ライブマイグレーションを実行した後のゲストＯＳ８０Ｂが、ストレージ装置５Ａのボリューム６０に対してリード要求を行った場合の、リード処理について説明する。
【００９６】
まず、図１６及び図１７に示すように、ゲストＯＳ８０Ｂ上のアプリケーションＡＰが、ゲストＯＳ８０Ｂが認識するボリュームにリード要求を行うとこの処理が開始する（Ｓ４０）。
【００９７】
アプリケーションＡＰからリード要求がなされると、仮想マシンモニタ８２Ｂがハードウェア２５Ｂへのアクセスを検知して、仮想マシンモニタ８２Ｂ内のハードウェア処理割り込み部８２０Ｂが、リード要求及びＩ／Ｏ対象（リード対象）のボリューム名を管理ＯＳ８１Ｂに送信する（Ｓ４１）。例えば、Ｉ／Ｏ対象のボリューム名としてボリュームａを指定するとする。
【００９８】
ここで、ハードウェア処理割り込み部８２０Ｂとは、移行先仮想サーバ２Ｂの仮想マシンモニタ８２Ｂに備えられるものであり、アプリケーションＡＰからＩ／Ｏ要求に基づいてハードウェア２５Ｂへのアクセスを検知すると、ハードウェア２５ＢにＩ／Ｏ要求を渡さずにボリューム用デバイスファイル８１４ＢにＩ／Ｏ要求を渡すための割り込み機能を有することをいう。
【００９９】
次に、管理ＯＳ８１Ｂは、ボリューム割り当てテーブル２１０Ｂを参照し、Ｉ／Ｏ対象（リード対象）のボリューム名に対応する管理ＯＳ８１Ｂ上のボリューム名を特定し、特定したボリュームに対してリード要求を行う。例えば、管理ＯＳ８１Ｂ上のボリューム名としてボリューム２１を特定する、とする（Ｓ４２）。
【０１００】
ボリューム２１のボリューム用デバイスファイル８１４Ｂに登録されたリモートボリューム用ドライバ８１４１Ｂが、Ｉ／Ｏ発信プロセス８１０Ｂにリード要求を送信する（Ｓ４３）。
【０１０１】
Ｉ／Ｏ発信プロセス８１０Ｂは、移行元仮想サーバ２ＡのＩ／Ｏ受信プロセス８１０ＡにＩＰネットワークを介してリード要求を送信する（Ｓ４４）。
【０１０２】
Ｉ／Ｏ受信プロセス８１０Ａは、移行先仮想サーバ２ＢのＩ／Ｏ発信プロセス８１０Ｂからリード要求を受け取る（Ｓ４５）。このとき、図１８に示すように、プロセス間で送受信されるリード要求の内容は、リード処理の順番を示すシーケンシャルナンバーＲ０、リード対象のボリューム６０が所属するストレージ装置製造番号Ｒ１、リード対象のボリューム識別情報Ｒ２、ＳＣＳＩコマンド（リードコマンド）Ｒ３、リード対象のボリューム６０のアドレスを示すリードデータアドレスＲ４、及び、実際のリードデータの長さを示すデータ長Ｒ５、である。
【０１０３】
Ｉ／Ｏ受信プロセス８１０Ａは、ボリューム情報テーブル２１３Ａを参照し、リード対象のボリューム識別情報に対応する管理ＯＳ８１Ａ上のボリューム名を特定する（Ｓ４６）。例えば、管理ＯＳ８１Ａ上のボリューム名として、ボリューム１を特定する、とする。
【０１０４】
Ｉ／Ｏ受信プロセス８１０Ａは、ボリューム１に対してリード要求を行い、ボリューム１からリードデータを受け取り（Ｓ４７）、ＩＰネットワーク３を介してＩ／Ｏ発信プロセス８１０Ｂにリードデータを送信する（Ｓ４８）。
【０１０５】
このとき、図１９に示すように、プロセス間でリードデータを送信する内容は、シーケンシャルナンバーＲ０、リード対象のボリューム６０が所属するストレージ装置製造番号Ｒ１、リード対象のボリューム識別情報Ｒ２、ＳＣＳＩコマンド（リードコマンド）Ｒ３、リードデータアドレスＲ４、リードデータのデータ長Ｒ５、及びリードデータＲ６である。
【０１０６】
Ｉ／Ｏ発信プロセス８１０Ｂは、リードデータを受け取ると、ボリューム２１のボリューム用デバイスファイル８１４Ｂに登録されたリモートボリューム用ドライバ８１４１Ｂにリードデータを渡す（Ｓ４９）。
【０１０７】
ボリューム２１のボリューム用デバイスファイル８１４Ｂに登録されたリモートボリューム用ドライバ８１４１Ｂは、リードデータをメインメモリ２１Ｂ上の領域に記録する（Ｓ５０）。そして仮想マシンモニタ８２Ｂのハードウェア処理割り込み部８２０ＢがゲストＯＳ８０Ｂに処理を戻し、アプリケーションＡＰがリードデータを受け取ると、リード処理を終了する（Ｓ５１）。
【０１０８】
このように、仮想計算機システム１はライブマイグレーションの実行後であっても、リード処理を正常に実行することができる。
【０１０９】
（１−３−５）ライト処理
では引き続き、ライブマイグレーションを実行した後のゲストＯＳ８０Ｂが、ストレージ装置５Ａのボリューム６０に対してライト要求を行った場合の、ライト処理について説明する。
【０１１０】
まず、図２０及び図２１に示すように、ゲストＯＳ８０Ｂ上のアプリケーションＡＰが、ゲストＯＳ８０Ｂが認識するボリュームにライト要求を行うとこの処理が開始する（Ｓ６０）。
【０１１１】
アプリケーションＡＰからライト要求がなされると、仮想マシンモニタ８２Ｂがハードウェア２５Ｂへのアクセスを検知して、仮想マシンモニタ８２Ｂ内のハードウェア処理割り込み部が、ライト要求、ライトデータ、及びＩ／Ｏ対象（ライト対象）のボリューム名を管理ＯＳ８１Ｂに送信する（Ｓ６１）。例えば、Ｉ／Ｏ対象のボリューム名としてボリュームａを指定するとする。
【０１１２】
次に、管理ＯＳ８１Ｂは、ボリューム割り当てテーブル２１０Ｂを参照し、Ｉ／Ｏ対象（ライト対象）のボリューム名に対応する管理ＯＳ８１Ｂ上のボリューム名を特定し、特定したボリュームに対してライト要求を行う。例えば、管理ＯＳ８１Ｂ上のボリューム名としてボリューム２１を特定する、とする（Ｓ６２）。
【０１１３】
ボリューム２１のボリューム用デバイスファイル８１４Ｂに登録されたリモートボリューム用ドライバ８１４１Ｂが、Ｉ／Ｏ発信プロセス８１０Ｂにライト要求及びライトデータを送信する（Ｓ６３）。
【０１１４】
Ｉ／Ｏ発信プロセス８１０Ｂは、移行元仮想サーバ２ＡのＩ／Ｏ受信プロセス８１０ＡにＩＰネットワーク３を介してライト要求およびライトデータを送信する（Ｓ６４）。
【０１１５】
Ｉ／Ｏ受信プロセス８１０Ａは、移行先仮想サーバ２ＢのＩ／Ｏ発信プロセス８１０Ｂからライト要求及びライトデータを受け取る（Ｓ６５）。このとき、図２２に示すように、プロセス間で送受信されるライト要求の内容は、ライト処理の順番を示すシーケンシャルナンバーＷ０、ライト対象のボリューム６０が所属するストレージ装置製造番号Ｗ１、ライト対象のボリューム識別情報Ｗ２、ＳＣＳＩコマンド（ライトコマンド）Ｗ３、ライト対象のボリューム６０のアドレスを示すライトデータアドレスＷ４、実際のライトデータの長さを示すライトデータのデータ長Ｗ５、及び、ライトデータＷ６である。
【０１１６】
図２３に示すように、実際にライト要求の内容をＩ／Ｏ発信プロセス８１０ＢからＩ／Ｏ受信プロセス８１０Ａに送信する場合には、いくつかのパケットに分割し、分割したパケットを分割データＤ１〜Ｄ３として送信する。加えて、図２４に示すように、送信する内容には、それぞれの分割データＤ１〜Ｄ３の分割データ識別情報ｄ１〜ｄ３と、ＩＰネットワーク３における各通信プロトコル層のヘッダＨ１〜Ｈ３と、が付加される。分割データ識別情報とは、ライト要求の１つの内容として元に戻すために必要なシーケンシャルナンバーと分割データ番号とを含む分割データの識別情報である。
【０１１７】
Ｉ／Ｏ受信プロセス８１０Ａは、ボリューム情報テーブル２１３Ａを参照し、ライト対象のボリューム識別情報に対応する管理ＯＳ８１Ａ上のボリューム名を特定する（Ｓ６６）。例えば、管理ＯＳ８１Ａ上のボリューム名として、ボリューム１を特定する、とする。
【０１１８】
Ｉ／Ｏ受信プロセス８１０Ａは、ボリューム１に対してライト要求を行う（Ｓ６７）。Ｉ／Ｏ受信プロセス８１０Ａは、ボリューム１にライトデータが格納された場合には成功である旨のライト結果を、又は、ライトデータが格納されなかった場合には失敗である旨のライト結果を、ボリューム１から受け取ると、ＩＰネットワーク３を介してＩ／Ｏ発信プロセス８１０Ｂにライト結果を送信する（Ｓ６８）。
【０１１９】
このとき、図２５に示すように、プロセス間でライト結果を送信する内容は、シーケンシャルナンバーＷ０、ライト対象のボリューム６０が所属するストレージ装置製造番号Ｗ１、ライト対象のボリューム識別情報Ｗ２、ＳＣＳＩコマンド（ライトコマンド）Ｗ３、ライトデータアドレスＷ４、及び、ライト結果Ｗ７である。
【０１２０】
Ｉ／Ｏ発信プロセス８１０Ｂは、ライト結果を受け取ると、ボリューム２１のボリューム用デバイスファイル８１４Ｂに登録されたリモートボリューム用ドライバ８１４１Ｂにライト結果を渡す（Ｓ６９）。
【０１２１】
ボリューム２１のボリューム用デバイスファイル８１４Ｂに登録されたリモートボリューム用ドライバ８１４１Ｂは、ライト結果をメインメモリ２１Ｂ上の領域に記録する（Ｓ７０）。そして仮想マシンモニタ８２Ｂのハードウェア処理割り込み部８２０ＢがゲストＯＳ８０Ｂに処理を戻し、アプリケーションＡＰがライト結果を受け取ると、ライト処理を終了する（Ｓ７１）。
【０１２２】
このように、仮想計算機システム１はライブマイグレーションの実行後であっても、ライト処理を正常に実行することができる。
【０１２３】
Ｉ／Ｏ受信プロセス８１０Ａ及びＩ／Ｏ発信プロセス８１０Ｂは、プロセス間通信のために、それぞれのプロセス内にスレッドを設けてもよい。具体的には、それぞれのプロセス内に、ボリューム用デバイスファイルの数に応じたスレッドを設ける。例えば、Ｉ／Ｏ受信プロセス８１０Ａ内にボリューム１用スレッド及びボリューム２用スレッドを設ける。ボリューム１用スレッドはボリューム１用デバイスファイル及びネットワークデバイスと接続され、ボリューム２用スレッドも同様に、ボリューム２用デバイスファイル及びネットワークデバイスと接続される。同様に、Ｉ／Ｏ発信プロセス８１０Ｂ内にボリューム２１用スレッド及びボリューム２２用スレッドを設ける。ボリューム２１用スレッドはリモートボリューム２１用デバイスファイル及びネットワークデバイスと接続され、ボリューム２２用スレッドはリモートボリューム２１用デバイスファイル及びネットワークデバイスと接続される。
【０１２４】
（１−４）第１の実施の形態の効果
以上のように、複数の仮想サーバがストレージ装置のボリュームを共有できない場合であっても、仮想サーバのライブマイグレーションを実行することができる。
【０１２５】
また、ライブマイグレーションの実行後には、ライブマイグレーションを移行した移行先仮想サーバから共通のボリュームにＩ／Ｏ処理を実行することができる。
【０１２６】
（２）第２の実施の形態
次に、第２の実施の形態による仮想計算機システム１００について以下に説明する。
【０１２７】
（２−１）ソフトウェア構成
本実施の形態による仮想計算機システム１００のソフトウェア構成は、図２６に示すように、第１の実施の形態の仮想計算機システム1で説明をした各種ソフトウェア構成に加えて、それぞれの管理ＯＳ８１Ａ´，Ｂ´内にコピープロセス８１６、リモート用デバイスファイル８１８及び、差分管理ボリューム用デバイスファイル８１７を備える。
【０１２８】
コピープロセス８１６は、ストレージ装置５Ａ、５Ｂのボリューム６０Ａ、６０Ｂ間でデータコピーをするためのものであり、図２７に示すように、後述するコピーペア管理テーブル２１４及びコピー差分管理テーブル２１５を有する。コピープロセスがデータコピー及び差分データを実行することで、結果としてデータ移行が成立する。
【０１２９】
リモート用デバイスファイル８１８は、移行先仮想サーバ２Ｂ´に接続されるボリューム６０Ｂをリモートで認識するためのスペシャルファイルである。
【０１３０】
差分管理ボリューム用デバイスファイル８１７は、データコピー（データ移行）をしている間にもゲストＯＳ８０ＡのアプリケーションＡＰから発行されるＩ／Ｏ要求によって更新される差分データのアドレスをコピープロセス８１６に通知するためのデバイスファイルであり、差分管理ボリューム用のブロックデバイス(図示せず)とデバイスドライバ(図示せず)とを備える。
【０１３１】
仮想計算機システム１００では、このようにコピープロセス８１６及び差分管理ボリューム用デバイスファイル８１７を備えているため、第１の実施の形態で説明をした移行元仮想サーバ２Ａを移行元仮想サーバ２Ａ´とし、第１の実施の形態で説明をした移行先仮想サーバ２Ｂを移行先仮想サーバ２Ｂ´と新たに記載する。また、仮想サーバ２Ａ´及び仮想サーバ２Ｂ´内にある各種構成のうち、第１の実施の形態で説明した各種構成と同一の構成には、同一の符号を付して説明する。
【０１３２】
第２の実施の形態では、移行元仮想サーバ２Ａ´と移行先仮想サーバ２Ｂ´との間でデータの授受を行うためにデータを発信するＩ／Ｏ発信プロセス８１０Ａ´は、移行元仮想サーバ２Ａ´に有する。一方、移行元仮想サーバ２Ａ´と移行先仮想サーバ２Ｂ´との間でデータの授受を行うためにデータを受信するＩ／Ｏ受信プロセス８１０Ｂ´は、移行先仮想サーバ２Ｂ´に有するものとする。
【０１３３】
本実施の形態による仮想計算機システム１００は、それぞれの仮想サーバ２Ａ´、２Ｂ´がそれぞれ別々のＳＡＮ４Ａ、４Ｂを介して、それぞれ別々のストレージ装置５Ａ、５Ｂと接続される構成である。このため、お互いの仮想サーバ２Ａ´、２Ｂ´は、それぞれの仮想サーバ２Ａ´、２Ｂ´に接続されるストレージ装置５Ａ、５Ｂ内に形成されるボリューム６０Ａ、６０Ｂを共有することはできない環境にある。本実施の形態による発明は、このような環境下において、ストレージ装置５Ａ、５Ｂのボリューム６０Ａ、６０Ｂ間でデータ移行（データマイグレーション）を実行した後、仮想サーバ２Ａ´、２Ｂ´間で仮想ＯＳの移行（ライブマイグレーション）を実行することを特徴とする。
【０１３４】
第２の実施の形態では、第１の実施の形態で説明をした移行先仮想サーバ２Ｂに接続されるストレージ装置５Ａ内のボリューム６０Ａにあるデータを、ストレージ装置５Ｂのボリューム６０Ｂに移行する場合を説明する。また、ライブマイグレーションについては、第１の実施の形態と同様に、仮想サーバ２Ａ´にあるゲストＯＳ８０Ｃを仮想サーバ２Ｂ´に移行する場合について説明する。
【０１３５】
（２−２）各種テーブル構成
（２−２−１）コピーペア管理テーブル
コピーペア管理テーブル２１４は、図２８に示すように、データコピー先のボリュームと、特定のボリュームへのデータコピー中にも更新される差分データを格納する差分管理ボリュームと、の対応関係を管理するテーブルであり、コピープロセス８１６内に保持されるテーブルである。また、コピーペア管理テーブル２１４は、差分データのコピーをする際の管理番号となる「コピーペア管理番号」欄２１４０、移行先仮想サーバ２Ｂ´の管理ＯＳ８１Ｂ´が認識するボリューム名を示す「コピー先のボリューム名」欄２１４１、及び、移行元仮想サーバ２Ａ´の管理ＯＳ８１Ａ´が認識し、コピー先のボリュームに格納する差分データを格納する差分管理ボリューム名を示す「コピー元のボリューム名」欄２１４２とから構成される。
【０１３６】
（２−２−２）コピー差分管理テーブル
コピー差分管理テーブル２１５は、図２９に示すように、特定のボリュームへのデータコピー中にも更新される差分データを管理するためのテーブルであり、コピープロセス８１６内に保持されるテーブルである。また、コピー差分管理テーブル２１５は、「コピーペア管理番号」欄２１５０、差分データの処理順番を示す「シリアルナンバー」欄２１５１、及び、差分データが生じたコピー元のボリューム６０Ａの先頭ブロックアドレスを示す「先頭ブロックアドレス」欄２１５２から構成される。
【０１３７】
例えば、コピーペア管理番号が0001で管理されるボリューム５と差分管理ボリューム用１デバイスファイル８１７とのペア関係がある場合に、コピープロセス８１６が、シリアルナンバー順に更新された先頭ブロックアドレスに基づいて、ボリューム６０Ａから差分データを読み出し、Ｉ／Ｏ発信プロセス８１０Ａ´に送信する。その後、Ｉ／Ｏ発信プロセス８１０Ａ´が、移行先仮想サーバ２Ｂ´の管理ＯＳ８１Ｂ´が認識するボリューム５に差分データを送信すると、Ｉ／Ｏ受信プロセス８１０Ｂ´が、ボリューム５に対応するボリューム６０Ｂに差分データを書き込むことになる。
【０１３８】
（２−２−３）フラグテーブル
フラグテーブル２１６は、図３０に示すように、コピープロセス８１６がデータコピー及び差分データコピーを実行する際に必要なテーブルであり、メインメモリ２１内の保持されるテーブルである。
【０１３９】
またフラグテーブル２１６は、「Ｉ／Ｏ保留指示フラグ」欄２１６０、「ボリューム切替指示フラグ」欄２１６１、「タイムアウトフラグ」欄２１６２、及び、「ボリューム切替済フラグ」欄２１６２から構成される。
【０１４０】
Ｉ／Ｏ保留指示フラグは、コピープロセス８１６がコピー元のボリューム６０Ａに対して、差分データの入出力(Ｉ／Ｏ)を保留する指示を示すフラグであり、保留指示を行うと「１」のフラグが立つ。
【０１４１】
ボリューム切替指示フラグは、コピー元のボリューム６０Ａからコピー先のボリューム６０ＢにＩ／Ｏの対象を切り替える指示を示すフラグであり、切替指示を行うと「１」のフラグが立つ。
【０１４２】
ライムアウトフラグは、コピー元のボリューム６０Ａがコピープロセス８１６に対して、差分データの入出力の保留時間がタイムアウトすることを示すフラグであり、タイムアウトすると「１」のフラグが立つ。
【０１４３】
ボリューム切替済フラグは、コピー元のボリューム６０Ａからコピー先のボリューム６０ＢにＩ／Ｏの対象を切り替えることに成功したことをコピープロセスに通知するフラグであり、成功すると「１」のフラグが立つ。
【０１４４】
（２−３）データマイグレーション処理
それでは、上述のソフトウェア構成やテーブル構成に基づいて、ストレージ装置５Ａのボリューム６０Ａ内にあるデータを、どのようにストレージ装置５Ｂのボリューム６０Ｂ内に移行するか、について説明する。
【０１４５】
（２−３−１）ボリューム認識処理
まず、データマイグレーションを実行するための事前の準備として、仮想サーバ２Ａ´と仮想サーバ２Ｂ´とが認識（識別）できる共通のボリューム６０Ｂを設定する必要がある。
【０１４６】
なお、共通のボリューム６０Ｂを認識するにあたり、第1の実施の形態では、移行先仮想サーバ２Ｂ内にあるＩ／Ｏ発信プロセス８１０Ｂが移行元仮想サーバ２Ａ内にあるＩ／Ｏ受信プロセス８１０Ａにアクセスをしてボリューム６０Ａを共通認識したが、第２の実施の形態では、移行元仮想サーバ２Ａ´内にあるＩ／Ｏ発信プロセス８１０Ａ´が移行先仮想サーバ２Ｂ´内にあるＩ／Ｏ受信プロセス８１０Ｂ´にアクセスをしてボリューム６０Ｂを共通認識する場合を説明する。
【０１４７】
具体的には、図３１及び図３２に示すように、ユーザが情報入出力装置２６Ｂ、２７Ｂを使用して、管理ＯＳ８１Ｂ´にＩ／Ｏ受信設定コマンドを発行する。Ｉ／Ｏ受信設定コマンドについては、第１の実施の形態で説明をしたので省略する。そしてユーザは仮想サーバ２Ｂ´の管理ＯＳ８１Ｂ´上で、仮想サーバ２Ａ´の管理ＯＳ８１Ａ´から接続がある際の認証に使用する、ユーザＩＤ及びパスワードを設定する（Ｓ８１）。設定された情報は、Ｉ／Ｏ受信プロセス８１０Ｂ´が保持する。
【０１４８】
次に、ユーザが管理ＯＳ８１Ｂ´にＩ／Ｏ受信ボリューム設定コマンドを発行し、管理ＯＳ８１Ｂ´が認識しているボリューム６０Ｂのうち、どのボリューム６０Ｂを仮想サーバ２Ａ´の管理ＯＳ８１Ａ´にも認識させるかを設定する（Ｓ８２）。Ｉ／Ｏ受信ボリューム設定コマンドの内容については、第１の実施の形態で説明をしたので省略する。設定された情報は、Ｉ／Ｏ受信プロセス８１０Ｂ´内のボリューム情報管理テーブル２１３Ｂに保持する。ここまでで、事前準備は終了する。
【０１４９】
その後ユーザは、任意のタイミングで、仮想サーバ２Ａ´の管理ＯＳ８１Ａ´にボリューム認識コマンドを発行する（Ｓ８３）。ボリューム認識コマンドの内容については、第１の実施の形態で説明をしたので省略する。
【０１５０】
ボリューム認識コマンドをＩ／Ｏ発信プロセス８１０Ａ´が受け取ると、当該コマンドを認識要求としてＩ／Ｏ受信プロセス８１０Ｂ´に送信する（Ｓ８４）。
【０１５１】
Ｉ／Ｏ受信プロセス８１０Ｂ´は、認識要求を受け取ると、ユーザＩＤ及びパスワードを確認し、ログインを完了させる（Ｓ８５）。
【０１５２】
管理ＯＳ８１Ｂ´は、仮想サーバ２Ａ´に認識させるボリューム６０Ｂをボリューム情報管理テーブル２１３Ｂから１つ選択し、仮想サーバ２Ａ´が選択したボリューム６０Ｂに対してアクセス可能か否かを確認する（Ｓ８６）。管理ＯＳ８１Ｂ´は、アクセス可能であれば、ボリューム情報管理テーブル２１３Ｂに、管理ＯＳ８１Ａ´を示すＩＰアドレスを登録する（Ｓ８７）。
【０１５３】
ここで例えば、管理ＯＳ８１Ｂ´は、アクセス可能なボリューム６０Ｂとして、ボリューム識別情報「01：20：01」をもつボリューム６０Ｂを、ボリューム情報管理テーブル２１３Ｂから特定する、とする。管理ＯＳ８１Ｂ´は、対象ボリューム６０Ｂを、管理ＯＳ８１Ｂ´が認識するボリューム３１と特定する。
【０１５４】
その後Ｉ／Ｏ受信プロセス８１０Ｂ´は、ボリューム情報管理テーブル２１３Ｂから選択したボリューム６０Ｂのボリューム識別情報をＩ／Ｏ発信プロセス８１０Ａ´に送信する（Ｓ８８）。
【０１５５】
Ｉ／Ｏ発信プロセス８１０Ａ´は、ボリューム識別情報を受け取ると（Ｓ８９）、対象となる移行先仮想サーバ２Ｂ´が認識するボリュームのデバイスファイル８１９Ａを作成する。デバイスファイル８１９Ａは、ブロックデバイスを登録して、デバイスドライバを当該ブロックデバイスに登録することで作成できる（Ｓ９０）。
【０１５６】
具体的には、Ｉ／Ｏ受信プロセス８１０Ｂ´からボリューム３１のボリューム識別情報が送られてくるので、Ｉ／Ｏ発信プロセス８１０Ａ´は、ボリューム３１を管理ＯＳ８１Ａ´が認識するボリューム５として設定すると、ボリューム５用のデバイスファイル８１４Ａを作成する。これにより、移行元仮想サーバ２Ａ´は、移行先仮想サーバ２Ｂ´が認識するボリュームをリモートで認識することができる。
【０１５７】
Ｉ／Ｏ発信プロセス８１０Ａ´は、受け取ったボリューム識別情報を、Ｉ／Ｏ発信プロセス８１０Ａ´内にあるボリューム情報管理テーブル２１３Ａに登録し、受け取ったボリューム識別情報に基づいて管理ＯＳ８１Ａ´が認識するボリューム名も登録する。ブロックデバイス(図示せず)は、対象となるボリュームの数に応じて作成され、リモートボリューム用ドライバ(図示せず)もボリュームの数に応じてブロックデバイス８１４０Ｂに登録される（Ｓ９１）。例えば、管理ＯＳ８１Ａ´は、対象となるボリューム名をボリューム５と登録する。
【０１５８】
Ｉ／Ｏ発信プロセス８１０Ａ´は、ボリューム識別情報と、管理ＯＳ８１Ａ´が認識する移行先仮想サーバ２Ｂ´に接続されるボリューム名との対応をボリューム情報管理テーブル２１３Ａに登録する（Ｓ９２）。例えば、Ｉ／Ｏ発信プロセス８１０Ａ´は、ボリューム５とボリューム識別情報「01：20：01」とをボリューム情報管理テーブル２１３Ａに登録する。
【０１５９】
以上のように、ボリューム認識処理を実行後の様子を、図３３に示す。移行元仮想サーバ２Ａ´及び移行先仮想サーバ２Ｂ´が、ストレージ装置５Ｂのボリューム６０Ｂを共通に認識できる。このようにして、仮想サーバ２Ａ´、２Ｂ´は、ボリューム認識処理を終了する。
【０１６０】
（２−３−２）データ初回コピー処理
それでは次に、データ移行対象のボリューム６０Ａ内のデータ及び差分データを移行元仮想サーバ２Ａ´で管理し、最終的には全データを移行先仮想サーバ２Ｂ´に送信するためのデータ初回コピー処理を説明する。
【０１６１】
まず、図３４に示すように、ユーザがコピーペア作成コマンドを発行すると（Ｓ１００）、移行元仮想サーバ２Ａ´のコピープロセス８１６Ａが、差分データを管理するために、コピー元のボリュームとコピー先のボリュームとを設定する（Ｓ１０１）。
【０１６２】
例えば、コピープロセス８１６Ａは、コピー元のボリューム６０Ａのボリューム識別情報として「00：03：01」を設定し、コピー先のボリュームとして、ボリューム５（移行先仮想サーバ２Ｂ´に接続されるボリューム６０Ｂであって、管理ＯＳ８１Ａ´が認識するボリューム名）を設定する。そうすると、コピープロセス８１６Ａは、コピー元の差分データを管理するデバイスファイルとして差分管理ボリューム１用デバイスファイル８１７Ａを設定し、コピー先のボリューム５用デバイスファイル８１９Ａと、を設定する。
【０１６３】
コピーペア作成コマンドとは、コピープロセスでコピーを実行する２つのボリュームを設定するコマンドであり、コピーペア作成コマンドとするコマンド名と、当該コマンドを実行するために必要な情報である、コピーペア管理番号、コピー元ボリューム名及びコピー先ボリューム名と、からなる。
【０１６４】
設定された情報は、コピープロセス８１６Ａがコピーペア管理テーブル２１４Ａに登録する（Ｓ１０２）。
【０１６５】
ユーザがコピー開始コマンドをコピープロセス８１６Ａに対して発行する（Ｓ１０３）。コピー開始コマンドとは、コピーペア作成コマンドに基づいて設定したペアのコピーを開始するコマンドであり、コピー開始コマンドとするコマンド名と、当該コマンドを実行するために必要な情報である、コピーペア管理番号と、からなる。
【０１６６】
コピー開始コマンドをコピープロセス８１６Ａが受け取ると、コピープロセス８１６Ａはコピー元のボリューム６０Ａ内に差分データが発生するかどうかを監視するように、対象の差分管理ボリューム用デバイスファイル８１７Ａに指示をする（Ｓ１０４）。
【０１６７】
差分管理ボリューム用デバイスファイル８１７Ａは、当該指示に従って、ボリューム識別情報「00：03：01」のボリューム６０Ａを監視する状態にすると、監視開始完了をコピープロセス８１６Ａに通知する（Ｓ１０５）。
【０１６８】
監視開始完了をコピープロセス８１６Ａが受け取ると、初回のコピーを開始する（Ｓ１０６）。
【０１６９】
具体的には、コピープロセス８１６Ａは、コピー元のボリューム６０Ａのデータを、ボリューム５用デバイスファイル８１９Ａに送信する。その後、ボリューム５用デバイスファイル８１９Ａが、Ｉ／Ｏ発信プロセス８１０Ａ´にデータを送信すると、データを受け取ったＩ／Ｏ発信プロセス８１０Ａ´がＩＰネットワーク３を介してＩ／Ｏ受信プロセス８１０Ｂ´に送信する。Ｉ／Ｏ受信プロセス８１０Ｂ´が受け取ったデータをコピー先のボリューム３１にコピーを開始する。
【０１７０】
図３５は、移行元仮想サーバ２Ａ´と移行先仮想サーバ２Ｂ´との間でコピーを実行中の様子を示す。ユーザは、コピー元とコピー先のボリュームが同容量であるボリュームを選択することが望ましい。
【０１７１】
その後、差分管理ボリューム用デバイスファイル８１７Ａは、対象のコピー元のボリューム６０Ａに対してライト(Ｉ／Ｏ)があると、ボリューム名と差分データを格納した先頭ブロックアドレスとを差分情報としてコピープロセス８１６Ａに通知する（Ｓ１０７）。
【０１７２】
コピープロセス８１６Ａは、差分情報を受け取ると、この情報をコピー差分管理テーブル２１５Ａに登録すると（Ｓ１０８）、データ初回コピー処理を終了する。
【０１７３】
（２−３−３）コピープロセス側のデータコピー処理
初回コピーを終えた移行元仮想サーバ２Ａ´のコピープロセス８１６Ａが、その後どのように差分データを管理するかの、データコピー処理を説明する。
【０１７４】
図３６及び図３７に示すように、コピープロセス８１６Ａは、データ初回コピー処理を終了すると、引き続き、データコピー処理を開始する（Ｓ１２０）。コピープロセス８１６Ａは、差分データを移行先仮想サーバ２Ｂ´の対象ボリュームにコピーする処理を開始する。
【０１７５】
コピープロセス８１６Ａは、コピー差分管理テーブル２１５Ａに登録される差分データに関する差分情報の個数をチェックし（Ｓ１２１）、登録される差分情報の個数が予め設定される差分情報の規定個数より少ないか否かを判断する（Ｓ１２２）。個数とは、コピー元のボリューム６０Ａ内をブロック単位で管理した場合のブロック個数であり、例えば規定個数を１０００ブロックと設定される。
【０１７６】
コピープロセス８１６Ａは、登録される差分情報の個数が予め設定される差分情報の規定個数以上である場合には（Ｓ１２２：ＮＯ）、そのまま規定個数分の差分データをペア対象のボリューム５用デバイスドライバ８１９Ａに送信し（Ｓ１２３）、再びステップＳ１２１に戻る。
【０１７７】
一方、コピープロセス８１６Ａは、登録される差分情報の個数が予め設定される差分情報の規定個数より少ない場合には（Ｓ１２２：ＹＥＳ）、移行元仮想サーバ２Ａ´側に少ない差分データが溜まっていることになるので、Ｉ／Ｏ保留指示フラグ欄２１６０のフラグを立てて、コピー元のボリューム６０Ａを一時的に受信させない状態にする（Ｓ１２４）。
【０１７８】
受信させない状態で、コピープロセス８１６Ａは、差分データをペア対象のボリューム５用デバイスドライバ８１９Ａに送信する（Ｓ１２５）。
【０１７９】
コピープロセス８１６Ａは、差分管理ボリューム用デバイスファイル８１７Ａに差分データの入出力の対象となるコピー元のボリューム６０Ａをコピー先のボリューム６０Ｂに切り替えるように指示をすると、ボリューム切替指示フラグ欄２１６１のフラグを立てる（Ｓ１２６）。
【０１８０】
このとき、差分管理ボリューム用デバイスファイル８１７Ａは、ＨＢＡドライバ８１５Ａへの接続を、ボリューム５用のデバイスドライバ８１９Ａへの接続に切り替える。この切替により、Ｉ／Ｏの対象を、コピー元のボリューム６０Ａからコピー先のボリューム６０Ｂに切り替えることができる。
【０１８１】
次にコピープロセス８１６Ａは、差分データの入出力の対象となるコピー元のボリューム６０Ａを切り替えるボリューム切替済フラグ欄２１６３のフラグをチェックし（Ｓ１２７）、差分管理ボリューム用デバイスファイル８１７Ａが次の対象となるコピー元のボリューム６０Ａの切り替えを行っていない場合には（Ｓ１２７：ＮＯ）、差分管理ボリューム用デバイスファイル８１７Ａがコピープロセス８１６Ａに対して、差分データの入出力の保留時間がタイムアウトか否かを判断する（Ｓ１２８）。
【０１８２】
そしてコピープロセス８１６Ａは、タイムアウトフラグ欄２１６２が「０」であると判断すると（Ｓ１２８：ＮＯ）、タイムアウトになっていないので、ストレージ装置５Ａに対してボリューム切替指示を行い、ボリューム切替済を確認して、ボリューム切替済フラグ欄２１６３のフラグを立てる。
【０１８３】
一方、コピープロセス８１６Ａは、タイムアウトフラグ欄２１６２が「１」であると判断すると（Ｓ１２８：ＹＥＳ）、タイムアウトになった回数は予め設定する規定回数以上か否かを判断し（Ｓ１２９）、規定回数以上であれば（Ｓ１２９：ＹＥＳ）、エラー終了する（Ｓ１３０）。
【０１８４】
タイムアウトになった回数が規定回数より少ない場合には（Ｓ１２９：ＮＯ）、コピープロセスは、再びステップＳ１２１の処理を実行する。
【０１８５】
ステップＳ１２７において、差分データの入出力の対象となるコピー元のボリューム６０Ａを切り替えるボリューム切替済フラグ欄２１６３のフラグが「１」になっている場合には（Ｓ１２７：ＹＥＳ）、コピープロセス８１６Ａは、コピー成功として（Ｓ１３１）、この処理を終了する（Ｓ１３２）。
【０１８６】
その後、コピープロセス８１６Ａは、ボリューム５用デバイスファイル８１９Ａにデータを送信すると、当該データを受け取ったボリューム５用デバイスファイル８１９ＡがＩ／Ｏ発信プロセス８１０Ａにデータを送信する。そして移行元仮想サーバ２Ａ´のＩ／Ｏ発信プロセス８１０Ａから移行先仮想サーバ２Ｂ´のＩ／Ｏ受信プロセス８１０Ｂに全データを送信し、対応するボリューム３１にコピーされることとなる。
【０１８７】
（２−３−４）差分管理ボリューム用デバイスファイル側のデータコピー処理
初回コピーを終えた移行元仮想サーバ２Ａ´の差分管理ボリューム用デバイスファイルが、その後どのように差分データを管理するかの、データコピー処理を説明する。差分管理ボリューム用デバイスファイル８１７Ａ側のデータコピー処理は、上述したコピープロセス８１６Ａ側のデータコピー処理と並行に行われる。
【０１８８】
図３８及び図３９に示すように、差分管理ボリューム用デバイスファイル８１７Ａは、初回コピーを終了すると、データコピー処理を開始する（Ｓ１４０）。
【０１８９】
次に差分管理ボリューム用デバイスファイル８１７Ａは、ゲストＯＳ８０Ａからのライト(Ｉ／Ｏ)要求を監視する（Ｓ１４１）。ライト要求に基づいて差分データが生じるため、差分管理ボリューム用デバイスファイル８１７Ａが監視する必要がある。
【０１９０】
差分管理ボリューム用デバイスファイル８１７Ａは、ゲストＯＳ８０Ａからライト(Ｉ／Ｏ)要求があると（Ｓ１４２：ＹＥＳ）、シリアルナンバーと差分データの先頭ブロックアドレスとをコピー差分管理テーブル２１５Ａに登録し（Ｓ１４３）、Ｉ／Ｏ保留指示フラグ欄２１６０のフラグをチェックする(Ｓ１４４)。
【０１９１】
差分管理ボリューム用デバイスファイル８１７Ａは、ゲストＯＳ８０Ａからライト(Ｉ／Ｏ)要求がない場合には（Ｓ１４２：ＮＯ）、そのままＩ／Ｏ保留指示フラグ欄２１６０をチェックし（Ｓ１４４）、フラグが「０」ならば（Ｓ１４４：ＮＯ）ステップＳ１４１に再び戻るが、フラグが「１」ならば（Ｓ１４４：ＹＥＳ）Ｉ／Ｏ保留指示フラグ欄２１６０のフラグを立てる（Ｓ１４５）。
【０１９２】
差分管理ボリューム用デバイスファイル８１７Ａは、コピー元のボリューム６０Ａに対してＩ／Ｏが行われないように保留状態にすると（Ｓ１４６）、ボリューム切替フラグ欄２１６１のフラグをチェックし、コピー先のボリューム６０Ｂに切り替えてあるか否かを判断する（Ｓ１４７）。
【０１９３】
差分管理ボリューム用デバイスファイル８１７Ａは、コピー先のボリューム６０Ｂに切り替えていないと判断すると（Ｓ１４７：ＮＯ）、引き続きＩ／Ｏの保留時間が予め規定している時間を超えているかどうか判断する（Ｓ１４８）。
【０１９４】
そして、差分管理ボリューム用デバイスファイル８１７Ａは、Ｉ／Ｏの保留時間が予め規定している時間を超えていないと判断すると（Ｓ１４８：ＮＯ）、再びステップＳ１４７に戻るが、Ｉ／Ｏの保留時間が予め規定している時間を超えていると判断すると（Ｓ１４８：ＹＥＳ）、タイムアウトフラグを立てて（Ｓ１４９）、ステップＳ１４１に戻る。
【０１９５】
ステップＳ１４７において、差分管理ボリューム用デバイスファイル８１７Ａは、コピー先のボリューム６０Ｂに切り替えていると判断すると（Ｓ１４７：ＹＥＳ）、コピー先のボリューム用デバイスファイル８１７Ａに切り替えてボリューム切替を行い（Ｓ１５０）、ボリューム切替済フラグ欄２１６３にフラグを立てた後（Ｓ１５１）、データコピー処理を終了する（Ｓ１５２）。
【０１９６】
以上により、データマイグレーションは完了する。このときの様子を図４０に示す。コピー元のボリューム６０Ａからコピー先のボリューム６０Ｂにデータコピーが完了後、コピー元のボリューム６０Ａとコピー先のボリューム６０Ｂボリュームとを同期させて、ボリュームの切替も完了した様子を示している。
【０１９７】
（２−４）ライブマイグレーション処理
上述のソフトウェア構成やテーブル構成に基づいて、データマイグレーションの実行後に移行元仮想サーバ２ＡにあるゲストＯＳ８０をどのように移行先仮想サーバ２Ｂに移行するかについて説明する。
【０１９８】
具体的には、図４１及び図４２に示すように、移行元仮想サーバ２Ａ´又は移行先仮想サーバ２Ｂ´は、ボリューム認識処理Ａを実行してボリュームを認識する。ボリューム認識処理Ａとは、上述したステップＳ８１〜ステップＳ９２までの処理をいう。
【０１９９】
次に、移行元仮想サーバ２Ａ´又は移行先仮想サーバ２Ｂ´は、データ初回コピー処理Ｂを実行して初回のデータのコピーをする。データ初回コピー処理Ｂとは、上述したステップＳ１００〜ステップＳ１０８までの処理をいう。
【０２００】
その後、移行元仮想サーバ２Ａ´は、データコピー処理Ｃを実行して、コピー中の差分データを移行先仮想サーバ２Ｂ´側にコピーをし、移行元仮想サーバ２Ａ´と移行先仮想サーバ２Ｂ´とを同期させてボリュームの切替を行う。データコピー処理Ｃとは、ステップＳ１２０〜ステップＳ１３２、及び、ステップＳ１４０〜ステップＳ１５１までの処理をいう。
【０２０１】
また、ゲストＯＳ８０ＡからＩ／Ｏ要求があると、移行元仮想サーバ２Ａ´又は移行先仮想サーバ２Ｂ´は、プロセス間通信処理Ｄを実行してＩ／Ｏ受発信プロセス８１０間でＩ／Ｏのやり取りを行う。プロセス間通信処理Ｄとは、ステップＳ３０〜ステップ３７までの処理をいう。
【０２０２】
そして、移行元仮想サーバ２Ａ´又は移行先仮想サーバ２Ｂ´は、ステップＳ１６０〜ステップＳ１６７までの処理をステップＳ１３〜ステップＳ２０と同様の手順で実行し、図４３に示すように、移行先仮想サーバ２Ｂ´内へのライブマイグレーションを完了する。
【０２０３】
（２−５）第２の実施の形態の効果
以上のように、複数の仮想サーバがストレージ装置のボリュームを共有できない場合であっても、データのマイグレーション、及び、仮想サーバのライブマイグレーションを実行することができる。
【０２０４】
また、ライブマイグレーションの実行後には、ライブマイグレーションを移行した移行先仮想サーバから共通のボリュームにＩ／Ｏ処理を実行することができる。
【産業上の利用可能性】
【０２０５】
本発明は、１又は複数のストレージ装置、１又は複数の仮想ＯＳを有する仮想計算機システムや、その他の形態の仮想計算機システムに広く適用することができる。
【図面の簡単な説明】
【０２０６】
【図１】第１の実施の形態における仮想計算機システムのハードウェア構成を示すブロック図である。
【図２】第１の実施の形態におけるメインメモリの内容を示す図表である。
【図３】第１の実施の形態における仮想計算機システムのソフトウェア構成を示すブロック図である。
【図４】第１の実施の形態におけるボリューム割当テーブルを示す図表である。
【図５】第１の実施の形態におけるメモリ領域管理テーブルを示す図表である。
【図６】第１の実施の形態におけるメモリ差分管理テーブルを示す図表である。
【図７】第１の実施の形態におけるボリューム情報管理テーブルを示す図表である。
【図８】第１の実施の形態におけるボリューム認識処理を示すフローチャートである。
【図９】第１の実施の形態におけるボリューム認識処理を示すフローチャートである。
【図１０】第１の実施の形態において、ボリューム認識処理を説明するブロック図である。
【図１１】第１の実施の形態におけるライブマイグレーション処理を示すフローチャートである。
【図１２】第１の実施の形態におけるライブマイグレーション処理を説明するブロック図である
【図１３】第１の実施の形態における移行元仮想サーバのモニタ画面である。
【図１４】第１の実施の形態におけるチ移行先仮想サーバのモニタ画面である。
【図１５】第１の実施の形態におけるプロセス間通信処理を示すフローチャートである。
【図１６】第１の実施の形態におけるリード処理を示すフローチャートである。
【図１７】第１の実施の形態におけるリード処理を示すフローチャートである。
【図１８】第１の実施の形態におけるリード要求時のコマンドを説明する説明図である。
【図１９】第１の実施の形態におけるリード要求時のコマンドを説明する説明図である。
【図２０】第１の実施の形態におけるライト処理を示すフローチャートである。
【図２１】第１の実施の形態におけるライト処理を示すフローチャートである。
【図２２】第１の実施の形態におけるライト要求時のコマンドを説明する説明図である。
【図２３】第１の実施の形態におけるライト要求時のコマンドを説明する説明図である。
【図２４】第１の実施の形態における分割データの内容を示す説明図である。
【図２５】第１の実施の形態におけるライト要求時のコマンドを説明する説明図である。
【図２６】第２の実施の形態における仮想計算機システムのソフトウェア構成を示すブロック図である。
【図２７】第２の実施の形態におけるメインメモリの内容を示す図表である。
【図２８】第２の実施の形態におけるコピーペア管理テーブルを示す図表である。
【図２９】第２の実施の形態におけるコピー差分管理テーブルを示す図表である。
【図３０】第２の実施の形態におけるフラグテーブルを示す図表である。
【図３１】第２の実施の形態におけるボリューム認識処理を示すフローチャートである。
【図３２】第２の実施の形態におけるボリューム認識処理を示すフローチャートである。
【図３３】第２の実施の形態におけるボリューム認識処理を説明するブロック図である。
【図３４】第２の実施の形態におけるデータ初回コピー処理を示すフローチャートである。
【図３５】第２の実施の形態におけるデータ初回コピー処理を説明するブロック図である。
【図３６】第２の実施の形態におけるコピープロセス側データコピー処理を示すフローチャートである。
【図３７】第２の実施の形態におけるコピープロセス側データコピー処理を示すフローチャートである。
【図３８】第２の実施の形態における差分管理ボリューム用デバイスファイル側データコピー処理を示すフローチャートである。
【図３９】第２の実施の形態における差分管理ボリューム用デバイスファイル側データコピー処理を示すフローチャートである。
【図４０】第２の実施の形態におけるデータコピー処理を説明する説明図である。
【図４１】第２の実施の形態におけるデータマイグレーション処理を示すフローチャートである。
【図４２】第２の実施の形態におけるデータマイグレーション処理を示すフローチャートである。
【図４３】第２の実施の形態におけるデータマイグレーション処理を説明するブロック図である。
【符号の説明】
【０２０７】
１……仮想計算機システム、２Ａ、２Ａ´……移行元仮想サーバ、２Ｂ、２Ｂ´……移行先仮想サーバ、３……ＩＰネットワーク、４Ａ、４Ｂ……ＳＡＮ、５Ａ、５Ｂ……ストレージ装置、６０Ａ、６０Ｂ……ボリューム、２１０……ボリューム割当テーブル、２１１……メモリ領域管理テーブル、２１２……メモリ差分管理テーブル、２１３……ボリューム情報管理テーブル、２１４……コピーペア管理テーブル、２１５……コピー差分管理テーブル、８１０Ａ、８１０Ｂ´……Ｉ／Ｏ発信プロセス、８１０Ｂ、８１０Ａ´……Ｉ／Ｏ受信プロセス。
【図１】
0004871850.tif 000002
【図２】
0004871850.tif 000003
【図３】
0004871850.tif 000004
【図４】
0004871850.tif 000005
【図５】
0004871850.tif 000006
【図６】
0004871850.tif 000007
【図７】
0004871850.tif 000008
【図８】
0004871850.tif 000009
【図９】
0004871850.tif 000010
【図１０】
0004871850.tif 000011
【図１１】
0004871850.tif 000012
【図１２】
0004871850.tif 000013
【図１３】
0004871850.tif 000014
【図１４】
0004871850.tif 000015
【図１５】
0004871850.tif 000016
【図１６】
0004871850.tif 000017
【図１７】
0004871850.tif 000018
【図１８】
0004871850.tif 000019
【図１９】
0004871850.tif 000020
【図２０】
0004871850.tif 000021
【図２１】
0004871850.tif 000022
【図２２】
0004871850.tif 000023
【図２３】
0004871850.tif 000024
【図２４】
0004871850.tif 000025
【図２５】
0004871850.tif 000026
【図２６】
0004871850.tif 000027
【図２７】
0004871850.tif 000028
【図２８】
0004871850.tif 000029
【図２９】
0004871850.tif 000030
【図３０】
0004871850.tif 000031
【図３１】
0004871850.tif 000032
【図３２】
0004871850.tif 000033
【図３３】
0004871850.tif 000034
【図３４】
0004871850.tif 000035
【図３５】
0004871850.tif 000036
【図３６】
0004871850.tif 000037
【図３７】
0004871850.tif 000038
【図３８】
0004871850.tif 000039
【図３９】
0004871850.tif 000040
【図４０】
0004871850.tif 000041
【図４１】
0004871850.tif 000042
【図４２】
0004871850.tif 000043
【図４３】
0004871850.tif 000044