(57)【特許請求の範囲】
【請求項１】
複数の実計算機を備える計算機システムにおいて、
前記実計算機は、演算部と、記憶部と、前記実計算機上で１つ以上の仮想計算機を実行する仮想化機構とを有し、
前記複数の実計算機は、ネットワークを介して接続されている第一の実計算機と第二の実計算機とを含み、
前記第一の実計算機は、前記第一の実計算機上で実行される仮想計算機を前記第二の実計算機に移動する移動元であり、第一の仮想化機構と、前記第一の仮想化機構が実行する仮想計算機の固有情報を有する第一の記憶部とを備え、
前記第二の実計算機は、前記第一の実計算機上で実行される仮想計算機を前記第一の実計算機から移動される移動先であり、第二の仮想化機構と、前記第二の仮想化機構が実行する仮想計算機の固有情報を有する第二の記憶部とを備え、
前記第一の仮想化機構は、前記仮想計算機の移動要求を受信した際、
前記移動要求対象の仮想計算機の固有情報である第一の固有情報を、第二の仮想化機構へ送信し、
前記第二の仮想化機構は、
前記第一の仮想化機構から前記第一の固有情報を受信し、
前記受信した第一の固有情報に基づき、前記第二の仮想化機構上に仮想計算機を生成し、
前記第一の固有情報と、前記第一の固有情報に基づき生成した仮想計算機の固有情報である第二の固有情報とを、前記第二の実計算機の移動仮想計算機情報として前記第二の記憶部へ保存し、
前記第二の固有情報を、前記第一の仮想化機構に送信し、
前記第一の仮想化機構は、前記第二の固有情報を受信し、
前記第一の固有情報と、前記第二の仮想化機構から受信した第二の固有情報とを、前記第一の実計算機の移動仮想計算機情報として前記第一の記憶部に保存する
ことを特徴とする計算機システム。
【請求項２】
前記固有情報は、仮想計算機が外部記憶装置を利用するために必要な仮想HBAのアドレス情報と、ネットワークに接続するために必要な仮想NICのアドレス情報とを含むことを特徴とする請求項１記載の計算機システム。
【請求項３】
前記第一の記憶部は、前記第一の固有情報を含む前記第一の実計算機上で実行される一つ以上の仮想計算機の固有情報を、第一の定義情報として保持し、
前記第二の記憶部は、前記第二の固有情報を含む前記第二の実計算機上で実行される一つ以上の仮想計算機の固有情報を、第二の定義情報として保持し、
前記第一の仮想化機構は、第一の移動元処理として、
前記移動要求対象の仮想計算機の状態情報を、前記第二の仮想化機構に送信し、
前記移動要求対象の仮想計算機を無効とし、
前記第二の仮想化機構は、第一の移動先処理として、
前記状態情報を第一の仮想化機構から受信し、
前記状態情報を前記第一の固有情報に基づき生成した仮想計算機に設定し、
前記状態情報を設定された仮想計算機を有効とし、
前記第二の実計算機の移動仮想計算機情報に含まれる第二の固有情報を、前記有効とした仮想計算機の固有情報に更新して新たな第二の固有情報として保存し、
前記第二の定義情報に含まれる第二の固有情報を、前記新たな第二の固有情報に更新して保存し、
前記新たな第二の固有情報を、前記第二の実計算機の移動仮想計算機情報と、前記第二の定義情報とへ保存したことを前記第一の仮想化機構に通知し、
前記第一の仮想化機構は、第二の移動元処理として、
前記保存の通知を前記第二の仮想化機構から受信し、
前記第一の定義情報に含まれる前記第一の固有情報を、前記第一の実計算機の移動仮想計算機情報に含まれる前記第二の固有情報に変更し、
前記第一の定義情報の変更を前記第二の仮想化機構に通知し、
前記第一の実計算機の移動仮想計算機情報を削除し、
前記第二の仮想化機構は、第二の移動先処理として、
前記第一の定義情報の変更の通知を前記第一の仮想化機構から受信し、
前記第二の実計算機の移動仮想計算機情報を削除する
ことを特徴とした請求項１記載の計算機システム。
【請求項４】
前記状態情報は、前記第一の記憶部の有する前記移動要求対象の仮想計算機が使用しているデータと、前記第一の実計算機の有するレジスタのうち、前記移動要求対象の仮想計算機が使用しているレジスタのデータとを含むことを特徴とする請求項３記載の計算機システム。
【請求項５】
前記第一の移動先処理、前記第二の移動先処理、前記第一の移動元処理および前記第二の移動元処理のうち、少なくとも一つ以上の処理が完了しない場合、
前記第一の仮想化機構および第二の仮想化機構のうち何れか一方の仮想化機構の移動回復部は、
前記第一の実計算機内に前記第一の実計算機の移動仮想計算機情報が有るか無いかを判定し、
前記第二の実計算機内に前記第二の実計算機の移動仮想計算機情報が有るか無いかを判定し、
前記第一の実計算機の移動仮想計算機情報が前記第一の実計算機内に無く、且つ前記第二の実計算機の移動仮想計算機情報が前記第二の実計算機内に無い場合、
前記第一の移動先処理、前記第二の移動先処理、前記第一の移動元処理および前記第二の移動元処理が完了したとみなし、
前記第一の実計算機の移動仮想計算機情報または前記第二の実計算機の移動仮想計算機情報のうち少なくとも一方がある場合、
前記第一の記憶部に前記第一の固有情報が保存されているか否か確認し、
前記第一の固有情報が保存されていない場合、前記第二の移動先処理が完了していないとみなし、
前記設定された仮想計算機を有効とし、
前記第一の実計算機の移動仮想計算機情報と前記第二の実計算機の移動仮想計算機情報とを削除し、
前記第一の固有情報が保存されている場合、前記第二の記憶部に、前記新たな第二の固有情報が保存されているか否かを確認し、
前記第二の記憶部に、前記新たな第二の固有情報が保存されていない場合、前記第一の移動先処理が完了していないとみなし、
前記移動要求対象の仮想計算機を有効とし、
前記第一の実計算機の移動仮想計算機情報と前記第二の実計算機の移動仮想計算機情報を削除し、
前記第二の記憶部に、前記新たな第二の固有情報が保存されている場合、前記第二の移動元処理が完了していないとみなし、
前記設定された仮想計算機を有効とし、
前記第一の実計算機および前記第二の実計算機の移動仮想計算機情報を削除することを特徴とする請求項３記載の計算機システム。
【請求項６】
前記第一の仮想化機構および前記第二の仮想化機構は、前記ネットワークを介して通信する手段を有し、
前記移動要求対象の仮想計算機を前記第一の実計算機から前記第二の実計算機へ移動させる際に、前記通信手段を用いる
ことを特徴とする請求項１記載の計算機システム。
【請求項７】
前記第一の記憶部は、前記移動要求対象の仮想計算機の移動先となる実計算機の候補を記憶する移動先候補情報を有し、
前記移動要求において移動先の実計算機の指示が無い場合、前記第一の仮想化機構は、
前記移動先候補情報を参照して移動先の実計算機を決定する
ことを特徴とする請求項１記載の計算機システム。
【請求項８】
前記第二の記憶部は、前記移動要求対象の仮想計算機の移動可否を示す移動許可情報を有し、
前記第二の仮想化機構は、前記第一の固有情報に基づき第二の仮想化機構上に仮想計算機を生成する際、前記第二の記憶部が有する移動許可情報を参照し、
前記移動許可情報が仮想計算機の移動不可を示す場合、前記第一の実計算機に、前記移動要求対象の仮想計算機の移動不可を通知する
ことを特徴とする請求項１記載の計算機システム。
【請求項９】
演算部と記憶部とを有する実計算機上で一つ以上の仮想計算機を実行する仮想化機構において、
前記仮想化機構は、前記仮想計算機の移動要求を受信した際、
前記仮想計算機が移動元の仮想化機構上で実行されている仮想計算機である場合、
前記移動要求から前記仮想計算機の移動先の実計算機を特定し、
前記移動要求対象の仮想計算機の固有情報である第一の固有情報を、前記移動先の実計算機へ送信し、
前記移動先の実計算機から前記第一の固有情報に基づき生成した仮想計算機の固有情報である第二の固有情報を取得し、
前記第一の固有情報と、前記第二の固有情報とを、移動元の実計算機の移動仮想計算機情報として前記実計算機の記憶部に保存し、
前記仮想計算機が移動先の仮想化機構上で実行されている仮想計算機である場合、
前記移動要求から前記仮想計算機の前記移動元の実計算機を特定し、
前記移動元の仮想化機構から前記第一の固有情報を取得し、前記第一の固有情報に基づき、仮想計算機を生成し、
前記第一の固有情報と、前記第二の固有情報とを、前記移動先の実計算機の移動仮想計算機情報として前記記憶部へ保存し、
前記第二の固有情報を、前記移動元の実計算機へ送信する
ことを特徴とする仮想化機構。
【請求項１０】
前記記憶部は、前記実行される一つ以上の仮想計算機の固有情報を、定義情報として保持し、
前記仮想計算機が移動元の仮想化機構上で実行されている仮想計算機である場合、
前記仮想化機構は、
第一の移動元処理として、前記移動要求対象の仮想計算機の状態情報を、前記移動先の実計算機に送信し、前記移動要求対象の仮想計算機を無効とし、
第二の移動元処理として、前記定義情報に含まれる、前記第一の固有情報を前記移動元の実計算機の移動仮想計算機情報に含まれる前記第二の固有情報に変更し、
前記変更の通知を前記移動先の実計算機に送信し、
前記記憶部の有する前記移動仮想計算機情報を削除し、
前記仮想計算機が移動先の仮想化機構上で実行されている仮想計算機である場合、
前記仮想化機構は、
第一の移動先処理として、前記状態情報を移動元の実計算機から取得し、
前記状態情報を前記第一の固有情報に基づき生成された仮想計算機に設定し、
前記状態情報を設定された仮想計算機を有効とし、
前記記憶部に存在する前記移動先の実計算機の移動仮想計算機情報に含まれる前記第二の固有情報を、前記有効とされた仮想計算機の固有情報に更新して新たな第二の固有情報として保存し、
前記定義情報に含まれる前記第二の固有情報を、前記新たな第二の固有情報として更新して保存し、
前記新たな第二の固有情報を、前記移動元の実計算機の移動仮想計算機情報と、前記定義情報とへ保存したことを前記移動元の仮想化機構に通知し、
第二の移動先処理として前記移動先の実計算機の移動仮想計算機情報を削除する
ことを特徴とした請求項９記載の仮想化機構。
【請求項１１】
前記第一の移動先処理、前記第二の移動先処理、前記第一の移動元処理、および前記第二の移動元処理のうち、少なくとも一つ以上の処理が完了しなかった場合、
前記仮想化機構の移動回復部は、前記実計算機内に、前記移動仮想計算機情報があるか否かを判定し、
前記実計算機内に前記移動仮想計算機情報がない場合、前記第一の移動先処理、前記第二の移動先処理、前記第一の移動元処理、および前記第二の移動元処理が完了したとみなし、
前記実計算機内に前記移動仮想計算機情報がある場合、
前記移動元の実計算機の記憶部に前記第一の固有情報が保存されているか否か確認し、
前記第一の固有情報が保存されていない場合、前記第二の移動先処理が失敗したとみなし、
前記第一の固有情報に基づき生成した仮想計算機を有効とし、
前記移動元の実計算機の記憶部と移動先の実計算機の記憶部に存在する前記移動仮想計算機情報を削除し、
前記第一の固有情報が保存されている場合、前記移動先の実計算機の記憶部に、前記新たな第二の固有情報が保存されているか否かを確認し、
前記移動先の実計算機の記憶部に、前記新たな第二の固有情報が保存されていない場合、前記第一の移動先処理が完了していないとみなし、
前記移動要求対象の仮想計算機を有効とし、
前記移動元の実計算機および前記移動先の実計算機に存在する前記移動仮想計算機情報を削除し、
前記移動先の実計算機の記憶部に、前記新たな第二の固有情報が保存されている場合、前記第二の移動元処理が完了しないとみなし、
前記設定された仮想計算機を有効とし、
前記移動元の実計算機および前記移動先の実計算機に存在する前記移動仮想計算機情報を削除する
ことを特徴とする請求項１０記載の仮想化機構。
【請求項１２】
複数の実計算機を備える計算機システムにおける仮想計算機移動方法において、
前記実計算機は、演算部と、記憶部と、前記実計算機上で１つ以上の仮想計算機を実行する仮想化機構とを有し、
前記複数の実計算機は、ネットワークを介して接続されている第一の実計算機と第二の実計算機とを含み、
前記第一の実計算機は、前記第一の実計算機上で実行される仮想計算機を前記第二の実計算機に移動する移動元であり、第一の仮想化機構と、前記第一の仮想化機構が実行する仮想計算機の固有情報を有する第一の記憶部とを備え、
前記第二の実計算機は、前記第一の実計算機上で実行される仮想計算機を前記第一の実計算機から移動される移動先であり、第二の仮想化機構と、前記第二の仮想化機構が実行する仮想計算機の固有情報を有する第二の記憶部とを備え、
前記第一の仮想化機構は、前記仮想計算機の移動要求を受信した際、
前記移動要求対象の仮想計算機の固有情報である第一の固有情報を、第二の仮想化機構へ送信し、
前記第二の仮想化機構は、
前記第一の仮想化機構から前記第一の固有情報を受信し、
前記受信した第一の固有情報に基づき、前記第二の仮想化機構上に仮想計算機を生成し、
前記第一の固有情報と、前記第一の固有情報に基づき生成した仮想計算機の固有情報である第二の固有情報とを、前記第二の実計算機の移動仮想計算機情報として前記第二の
記憶部へ保存し、
前記第二の固有情報を、前記第一の仮想化機構に送信し、
前記第一の仮想化機構は、前記第二の固有情報を受信し、
前記第一の固有情報と、前記第二の仮想化機構から受信した第二の固有情報とを、前記第一の実計算機の移動仮想計算機情報として前記第一の記憶部に保存する
ことを特徴とする仮想計算機移動方法。
【請求項１３】
前記固有情報は、仮想計算機が外部記憶装置を利用するために必要な仮想HBAのアドレス情報と、ネットワークに接続するために必要な仮想NICのアドレス情報とを含む
ことを特徴とする請求項１２記載の仮想計算機移動方法。
【請求項１４】
前記第一の記憶部は、前記第一の固有情報を含む前記第一の実計算機上で実行される１つ以上の仮想計算機の固有情報を、第一の定義情報として保持し、
前記第二の記憶部は、前記第二の固有情報を含む前記第二の実計算機上で実行される１つ以上の仮想計算機の固有情報を、第二の定義情報として保持し、
前記第一の仮想化機構は、第一の移動元処理として、
前記移動要求対象の仮想計算機の状態情報を、前記第二の仮想化機構に送信し、
前記移動要求対象の仮想計算機を無効とし、
前記第二の仮想化機構は、第一の移動先処理として、
前記状態情報を第一の仮想化機構から受信し、
前記状態情報を前記第一の固有情報に基づき生成した仮想計算機に設定し、
前記状態情報を設定された仮想計算機を有効とし、
前記第二の実計算機の移動仮想計算機情報に含まれる第二の固有情報を、前記有効とした仮想計算機の固有情報に更新して新たな第二の固有情報として保存し、
前記第二の定義情報に含まれる第二の固有情報を、前記新たな第二の固有情報に更新して保存し、
前記新たな第二の固有情報を、前記第二の実計算機の移動仮想計算機情報と、前記第二の定義情報とへ保存したことを前記第一の仮想化機構に通知し、
前記第一の仮想化機構は、第二の移動元処理として、
前記保存の通知を前記第二の仮想化機構から受信し、
前記第一の定義情報に含まれる前記第一の固有情報を、前記第一の実計算機の移動仮想計算機情報に含まれる前記第二の固有情報に変更し、
前記第一の定義情報の変更を前記第二の仮想化機構に通知し、
前記第一の実計算機の移動仮想計算機情報を削除し、
前記第二の仮想化機構は、第二の移動先処理として、
前記第一の定義情報の変更の通知を前記第一の仮想化機構から受信し、
前記第二の実計算機の移動仮想計算機情報を削除する
ことを特徴とする請求項１２記載の仮想計算機移動方法。
【請求項１５】
前記状態情報は、前記第一の記憶部の有する前記移動要求対象の仮想計算機が使用しているデータと、前記第一の実計算機の有するレジスタのうち、前記移動要求対象の仮想計算機が使用しているレジスタのデータとを含む
ことを特徴とする請求項１４記載の仮想計算機移動方法。
【請求項１６】
前記第一の移動先処理、前記第二の移動先処理、前記第一の移動元処理、および前記第二の移動元処理のうち、少なくとも一つ以上の処理が完了しない場合、
前記第一の仮想化機構および第二の仮想化機構のうち何れか一方の仮想化機構は、
前記第一の実計算機の移動仮想計算機情報が前記第一の実計算機内に有るか無いかを判定し、
前記第二の実計算機の移動仮想計算機情報が前記第二の実計算機内に有るか無いかを判定し、
前記第一の実計算機の移動仮想計算機情報が前記第一の実計算機内に無く、且つ前記第二の実計算機の移動仮想計算機情報が前記第二の実計算機内に無い場合、前記第一の移動先処理、前記第二の移動先処理、前記第一の移動元処理および前記第二の移動元処理が完了したとみなし、
前記第一の実計算機の移動仮想計算機情報または前記第二の実計算機の移動仮想計算機情報のうち少なくとも一方がある場合、
前記第一の記憶部に前記第一の固有情報が保存されているか否か確認し、
前記第一の固有情報が保存されていない場合、前記第二の移動先処理が完了していないとみなし、
前記設定された仮想計算機を有効とし、
前記第一の実計算機の移動仮想計算機情報と前記第二の実計算機の移動仮想計算機情報とを削除し、
前記第一の固有情報が保存されている場合、前記第二の記憶部に、前記新たな第二の固有情報が保存されているか否かを確認し、
前記第二の記憶部に、前記新たな第二の固有情報が保存されていない場合、前記第一の移動先処理が完了していないとみなし、
前記移動要求対象の仮想計算機を有効とし、
前記第一の実計算機の移動仮想計算機情報と前記第二の実計算機の移動仮想計算機情報を削除し、
前記第二の記憶部に、前記新たな第二の固有情報が保存されている場合、前記第二の移動元処理が完了していないとみなし、
前記設定された仮想計算機を有効とし、
前記第一の実計算機および前記第二の実計算機の移動仮想計算機情報を削除する
ことを特徴とする請求項１４記載の仮想計算機移動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機を実行可能な複数の物理計算機(実計算機）から構成されるシステムにおいて、仮想計算機を異なる物理計算機に移動する方法、仮想計算機を異なる物理計算機に移動する方法を用いた計算機、仮想計算機を異なる物理計算機に移動する方法を用いた仮想化機構および仮想計算機を異なる物理計算機に方法を用いた計算機システムに関する。
【背景技術】
【０００２】
仮想化技術では、プロセッサやメモリ、入出力装置などのハードウェアリソースの利用効率を上げるとともに、処理量に応じてリソース割当を変更して１台の物理計算機上に複数業務を集約することが可能である。また、ある物理計算機上で実行される仮想計算機を、他の物理計算機の仮想化機構上で実行されるように移動する機能も実現している。
【０００３】
仮想計算機の移動機能では、関係する物理計算機の両方からアクセス可能な外部装置であるストレージ装置やネットワークを用意する。また、仮想計算機の定義ファイルも、同様にアクセス可能なストレージ装置上にイメージとして構成されることがある。
【０００４】
しかし、複数の物理計算機からアクセス可能なストレージ装置では、接続された全ての物理計算機からストレージボリュームを参照あるいは更新することができるため、セキュリティにおける課題があった。そこで、セキュリティ向上のため、ストレージ装置内のストレージボリュームやネットワークへのアクセスを制限する機能も利用されている。アクセス制限などは、特定の物理計算機とストレージ装置内のストレージボリュームとの対応付けを行うなど、リソースへのアクセス発行元の名前やアドレスでアクセス制限を設定するのが一般的である。
【０００５】
仮想計算機のアクセスコントロールにおいても、仮想計算機に割当てられた名前やアドレスで、仮想計算機とリソースの対応付けを行うことができる。仮想計算機を移動する際は、これらの名前やアドレスを一緒に移動するのが一般的である。これにより、仮想計算機の移動に合わせてスイッチやストレージ装置の設定を変更しなくても、アクセスコントロールが継続される。
【０００６】
一方、仮想計算機を異なる物理計算機上に移動する際、移動元と移動先の仮想化機構から仮想計算機の定義ファイルを共有しない場合がある。仮想計算機の構成を定義するための情報を有するファイルを、仮想計算機を実行する物理計算機の仮想化機構が個別に管理している場合には、管理サーバが、移動先に仮想計算機の定義ファイルを生成し、仮想計算機を移動してから、管理サーバが移動元の仮想計算機の定義ファイルを削除している。
【０００７】
また、特開２００８−２１７３０２号公報（特許文献１）には、移動元と移動先の仮想化機構の種類が異なる場合に、仮想計算機が稼動するために必要な設定ファイルを複製し、複製したファイルを移動先仮想化機構に合わせて変換する手法が開示されている。仮想計算機移動におけるダウンタイムの抑制のため、仮想化機構が仮想計算機の構成情報を収集する収集部を持ち、管理サーバの指示によって情報を収集し、変換し、更新する。
【０００８】
このように、仮想計算機を移動するための操作を簡素化し、移動状態を監視するために、管理サーバを使用している。管理サーバが使えなくなってしまったり、管理サーバと仮想化機構間の通信が切れてしまったときには、仮想計算機の移動が中断され、移動前の状態に戻ることが一般的である。
【０００９】
非特許文献１には、仮想計算機移動を遂行し、移動状態を監視する技術が開示されている。ここで移動に失敗したときには、管理サーバからリカバリ操作を行う。２つの物理計算機が、同じ名前やアドレスを割当てられた仮想計算機を同時に実行しないよう、管理サーバのリカバリ機能を用いて、仮想計算機の構成を確実に移動前あるいは移動後の状態にしている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００８−２１７３０２号公報
【非特許文献】
【００１１】
【非特許文献１】ＩＢＭ社Ｒｅｄｂｏｏｋ「IBM System p Live Partition Mobility」１６４ページから１６９ページ  2007年10月発行
【発明の概要】
【発明が解決しようとする課題】
【００１２】
従来技術によれば、業務を実行する仮想計算機を異なる物理計算機上に移動する際、管理サーバが、移動元の物理計算機、および移動先の物理計算機と通信しながら、移動手順を遂行する。管理サーバからの要求を、それぞれの物理計算機上の仮想化機構が処理することで、アクセスコントロールの設定を引継ぎ、セキュリティを低下させることなく、仮想計算機を異なる物理計算機に移動することができる。
【００１３】
しかしながら、仮想計算機の移動が完了する前に管理サーバがダウンしたり、管理サーバと仮想化機構間の通信が切れると、仮想化機構への要求が出せなくなり、移動処理が停止してしまう。このような移動処理の中断により、仮想計算機がアクセスする外部装置に対するアクセスコントロールが機能しなくなる場合がある。例えば、移動先にアクセスコントロールに用いる名前やアドレスをコピーしたところで移動処理が中断され、移動元にも同じ名前やアドレスが残ってしまう場合である。同一の名前を持つ移動元と移動先の仮想計算機から、同一のストレージボリュームにアクセスできるため、ストレージボリュームの内容が破壊される可能性がある。
【００１４】
このようなストレージ破壊を防止するために、仮想計算機の移動が中断された後のリカバリ機能が用意されている。これは、管理サーバが移動元と移動先の仮想計算機の状態を調べ、移動前の状態に戻して移動元の物理計算機で仮想計算機を実行するか、あるいは移動後の状態に進めて移動元の物理計算機から仮想計算機の定義情報を消去する機能である。
【００１５】
しかしながら、管理サーバが復旧しない場合や、管理サーバから移動元の物理計算機、あるいは管理サーバから移動先の物理計算機との通信が復旧しない場合には、リカバリ処理を実行できない。復旧作業を待ったり、仮想計算機の定義を一旦消去してから生成し直していると、移動中断によるダウンタイムが長大化してしまう。
【００１６】
このように、管理サーバがダウンしたときにダウンタイムが長大化するということは、管理サーバを実行している物理計算機が、仮想計算機を実行する物理計算機ほどの信頼性が確保できない場合、仮想計算機の移動に関して、管理サーバを実行している物理計算機の信頼性のレベルにシステムの信頼性が引き下げられる、ということである。これを回避するためには、仮想計算機を異なる物理計算機に移動するとき、信頼性の高い管理サーバを用意しなければならなくなり、課題である。
【００１７】
このような仮想計算機を移動する際の様々な問題に対し、管理サーバに依存せず仮想計算機の移動を可能にすることが必要になってくる。
【００１８】
本発明の目的は、管理サーバに依存せず仮想計算機を移動できる計算機システムを提供することにある。
【課題を解決するための手段】
【００１９】
上記目的を達成するために、本発明に関わる仮想計算機の移動管理方法およびその方法を用いた計算機システムでは、前記第一の実計算機は、前記第一の実計算機上で実行される仮想計算機を前記第二の実計算機に移動する移動元であり、第一の仮想化機構と、前記第一の仮想化機構が実行する仮想計算機の固有情報を有する第一の記憶部とを備える。また、前記第二の実計算機は、前記第一の実計算機上で実行される仮想計算機を前記第一の実計算機から移動される移動先であり、第二の仮想化機構と、前記第二の仮想化機構が実行する仮想計算機の固有情報を有する第二の記憶部とを備える。
【００２０】
前記第一の仮想化機構は、前記仮想計算機の移動要求を受信した際、前記移動要求対象の仮想計算機の固有情報である第一の固有情報を、第二の仮想化機構へ送信し、前記第二の仮想化機構は、前記第一の仮想化機構から前記第一の固有情報を受信し、前記受信した第一の固有情報に基づき、前記第二の仮想化機構上に仮想計算機を生成し、前記第一の固有情報と、前記第一の固有情報に基づき生成した仮想計算機の固有情報である第二の固有情報とを、前記第二の実計算機の移動仮想計算機情報として前記第二の記憶部へ保存し、前記第二の固有情報を、前記第一の仮想化機構に送信する。
【００２１】
前記第一の仮想化機構は、前記第二の固有情報を受信し、前記第一の固有情報と、前記第二の仮想化機構から受信した第二の固有情報とを、前記第一の実計算機の移動仮想計算機情報として前記第一の記憶部に保存する。
【発明の効果】
【００２２】
本発明によれば、管理サーバに依存せず、仮想計算機移動を遂行できる。また、仮想計算機が移動中に中断した場合、管理サーバに依存することなく、仮想計算機を復旧できる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施例での、計算機システム構成を示す図である。
【図２】本発明の実施例での、仮想化機構と補助記憶装置の要素を示した図である。
【図３】本発明の実施例での、物理計算機の構成を示す図である。
【図４】本発明の実施例での、物理計算機が保持する仮想計算機定義情報のデータ構造を示す図である。
【図５】本発明の実施例での、物理計算機が保持する移動仮想計算機固有情報のデータ構造を示す図である。
【図６】本発明の第２の実施例での、物理計算機が保持する移動先候補情報のデータ構造を示す図である。
【図７】本発明の第３の実施例での、物理計算機が保持する補助記憶装置が移動先許可情報を保持することを示す図である。
【図８】本発明の実施例での、仮想化機構が仮想計算機を異なる物理計算機に移動する制御手順を示すフローチャートである。
【図９】本発明の実施例での、仮想化機構が仮想計算機のデータと定義情報を、異なる物理計算機に移動する手順を示すフローチャートである。
【図１０】本発明の実施例での、仮想化機構が中断された仮想計算機移動を回復する手順を示すフローチャートである。
【図１１】本発明の実施例での、仮想化機構と補助記憶装置が保持する情報を、ＶＭの移動前と移動中と移動後に分けて示した図である。
【図１２】本発明の実施例での、仮想計算機を起動するときに、中断されていた仮想計算機の移動を回復する手順を示すフローチャートである。
【図１３】本発明の実施例での、仮想計算機を起動する手順を示すフローチャートである。
【図１４】本発明の実施例での、管理サーバの要素を示した図である。
【図１５】本発明の実施例での、仮想計算機を異なる物理計算機に移動する従来の制御手順を示すフローチャートである。
【発明を実施するための形態】
【００２４】
以下に本発明を適用した各実施例について、図面を用いて説明する。
【実施例１】
【００２５】
本発明を適用した第１の実施例を説明する。第１の実施例では、仮想化機構を含むシステムで、仮想化機構間の通信により仮想計算機（ＶＭ）を移動させる装置の構成、および方法を示す。
【００２６】
図１は本発明の実施例１の計算機システムの構成を示す図である。
【００２７】
図１において、計算機システムは、物理計算機１（１００）と物理計算機２（１０１）、ストレージ装置１６０、それらを接続するストレージスイッチ１４０およびネットワーク１５０から構成されている。また、ネットワーク１５０には、端末１３０が接続され、計算機システムの各種設定などを行っている。
【００２８】
物理計算機１（１００）は、ファイバチャネルのホストバスアダプタ（ＨＢＡ）１１０を介してストレージスイッチ１４０に接続され、ネットワークインタフェースカード（ＮＩＣ）１２０を介してネットワーク１５０に接続されている。同様に、物理計算機２（１０１）は、ファイバチャネルのホストバスアダプタ（ＨＢＡ）１１１を介してストレージスイッチ１４０に接続され、ネットワークインタフェースカード（ＮＩＣ）１２１を介してネットワーク１５０に接続されている。ストレージスイッチ１４０と端末１３０もネットワーク１５０に接続されている。
【００２９】
ストレージ装置１６０には、各物理計算機から専用で使用するボリューム１８０と１８１が割当てられている。
【００３０】
ＨＢＡ１１０とＨＢＡ１１１には、それぞれのＨＢＡに固有のＷＷＮが付与されている。このＷＷＮを用いて、物理計算機１（１００）と物理計算機２（１０１）からストレージ装置１６０にアクセスすることができるようになっている。
【００３１】
物理計算機１（１００）と物理計算機２（１０１）は、図３に示すような一般的な構成の物理計算機である。図３は、物理計算機１の構成を示している。物理計算機１(１００）は、物理計算機の状態やプログラム実行結果を表示する表示装置３１０、プログラムにデータを与える入力装置３２０、業務処理プログラムやデータを保持するメモリ３３０、メモリ３３０に読み込まれた仮想化機構のプログラムやアプリケーションプログラム等を実行するＣＰＵ３４０、ＨＢＡ１１０、ＮＩＣ１２０、補助記憶装置２２０から構成され、バスを介して接続している。物理計算機１（１００）と物理計算機２（１０１）には、ブレードシステムにおけるブレードを利用することも可能である。また、物理計算機１（１００）と物理計算機２（１０１）は、互いに離れた場所に設置されていてもよい。
【００３２】
端末１３０は、物理計算機１（１００）と同様の構成の計算機であってもよく、ブレードの１つを割り当ててもよい。ただし、ＨＢＡと補助記憶装置は有していなくてもよい。管理サーバ１９０は、物理計算機１（１００）と同様の構成の計算機であってもよく、そのうちＨＢＡと補助記憶装置は保持していなくてもよい。図１４の管理サーバ１９０は、移動制御部８０１を持っている。
【００３３】
図１の物理計算機１（１００）と物理計算機２（１０１）では、仮想化を実現する仮想化機構２１０と仮想化機構２１１が実行している。物理計算機１（１００）では、１つの仮想計算機ＶＭ１（２００）が仮想化機構２１０上で実行している。
【００３４】
図２は、仮想化機構２１０を有する物理計算機１(１００）の要素を示している。計算機システムとしての構成は、図１に示す物理計算機１（１００）の構成と同様である。
【００３５】
ＶＭ１（２００）は、仮想化機構２１０が構成した仮想的なＨＢＡである仮想ＨＢＡ２３０と、仮想的なＮＩＣである仮想ＮＩＣ２４０を持っている。仮想ＨＢＡと仮想ＮＩＣへの操作は、仮想化機構２１０がエミュレートする。また、仮想ＨＢＡ２３０のポートには、固有のＷＷＮを付与する。仮想ＮＩＣ２４０のポートには、固有のＭＡＣアドレスを付与する。ＷＷＮやＭＡＣアドレスは、外部装置から仮想計算機の仮想アダプタを特定するための固有情報として使用される。
【００３６】
端末１３０から仮想化機構２１０の操作要求を入力し、補助記憶装置２２０内のデータを用いて仮想計算機を操作し、操作結果を端末１３０に出力できる。仮想化機構２１０は、仮想化機構起動部１３００が起動処理を行い、補助記憶装置２２０のＶＭ定義情報テーブル４００をメモリ内ＶＭ定義情報２１５に入力する。また、ＶＭ起動部１４００がＶＭ起動処理を行う。
【００３７】
図４は、ＶＭ定義情報テーブル４００の構成を示す。ＶＭ番号フィールド４１０は、仮想化機構２１０に定義するＶＭの通し番号を保持する。ＶＭ名フィールド４２０は、ＶＭのニックネームを保持する。ＵＵＩＤフィールド４３０は、ＶＭをシステムでユニークに判断するための論理識別子を保持する。仮想ＮＩＣフィールド４４０は、ＶＭの仮想ＮＩＣを識別するポート情報と、固有のＭＡＣアドレスを保持する。仮想ＨＢＡフィールド４５０は、ＶＭの仮想ＨＢＡを識別するポート情報と、固有のＷＷＮを保持する。その他フィールド４６０は、ＶＭに割当てたメモリサイズなどを保持する。ＶＭ定義情報テーブル４００は、仮想計算機の構成管理情報として作成し、補助記憶装置２２０に保存するが、作成に必要なデータの取得方法は本発明では問わない。
【００３８】
図４では、ＶＭ１（２００）の構成管理情報として、ＶＭ番号１をフィールド４１０に、ＶＭ名ＶＭ１をフィールド４２０に、ＶＭ論理識別子としてＵＵＩＤ１をフィールド４３０に有する。また、仮想ＮＩＣ２４０を特定するポートＮ１と、仮想ＮＩＣ２４０に仮想化機構２１０が割当てたＭＡＣアドレスＭＡＣ１の対の情報をフィールド４４０に、仮想ＨＢＡ２３０を特定するポートＮ１と、仮想ＨＢＡ２３０に仮想化機構２１０が割当てたＷＷＮであるＷＷＮ１の対の情報をフィールド４５０に有するとする。
【００３９】
本実施例の仮想化機構２１０は、ＶＭを異なる物理計算機に移動するために、移動制御部８００と移動回復部１０００を有する。また、補助記憶装置２２０に、ＶＭ定義情報４００と移動ＶＭ固有情報５００が格納される。ＶＭを異なる物理計算機に移動させるということは、ＶＭ定義情報テーブル４００が保持しているＶＭの構成情報を異なる物理計算機に移動させ、外部装置は、移動先のＶＭを、移動前のＶＭ論理識別子で認識させるということである。同様に、移動先のＶＭの仮想ＨＢＡを、移動前のＶＭの仮想ＨＢＡに割当てられていたＷＷＮで認識させ、移動先のＶＭの仮想ＮＩＣに割当てられていたＭＡＣアドレスに認識させる。さらに、移動前のＶＭで実行していたＯＳが移動先のＶＭに引継がれて実行される。
【００４０】
ここで、端末１３０からの指示を受け、仮想化機構２１０がＶＭを異なる物理計算機に移動する手順について説明する。図８は、仮想化機構２１０の移動制御部８００の動作を示すフローチャートである。また、図における点線は、情報のやりとりを表している(以下同じ）。
【００４１】
ステップ８１０では、ＶＭ移動要求を受付ける。要求元は、端末１３０か、あるいは、異なる物理計算機の仮想化機構である。また、移動元計算機の仮想化機構アドレスと、移動対象ＶＭと、移動先計算機の仮想化機構アドレスを指示する情報も受け取る。ここでは例として、物理計算機１（１００）のＶＭ１(２００）を物理計算機２（１０１）に移動する。
【００４２】
続いて、ステップ８１５では、端末や異なる物理計算機から、移動するＶＭを操作しないように、移動対象のＶＭ操作をガードする。
【００４３】
次に、ステップ８２０では、本処理が移動元計算機で実行されているか否か(自分が移動元ＶＭか否か）判定する。本処理が移動元計算機で実行されていると判定されると、ステップ８３０に進む。
【００４４】
従来は、管理サーバが動いており、管理サーバ１９０がこれらの処理を行うときは、図１４の移動制御部８０１は図１５に示す手順になる。ステップ８２０は、物理計算機１（１００）から移動元ＶＭの定義情報を取得する。また、ステップ８４０では、管理サーバ１９０から移動先の物理計算機２（１０１）に、移動元ＶＭの定義情報を渡す。物理計算機２（１０１）におけるステップ８５５では、管理サーバ１９０に移動準備完了を報告する。その後、移動元と移動先の仮想化機構間で、ＶＭ移動処理を実行する。ＶＭ移動処理が終了すると、管理サーバが通知を受け、ステップ８７０でＶＭ移動処理が成功しなかったと判定したときは、ステップ８８０において、管理サーバからリカバリ処理を物理計算機１と物理計算機２の仮想化機構に指示するか、または表示装置にＶＭ移動のエラーを出力する。ここで、管理サーバ１９０が使えなくなると、ＶＭ移動結果が不明になるとともに、リカバリ制御が働かない。また、管理サーバ１９０が再度使えるようになったときは、ＶＭを移動前の物理計算機１に戻し、物理計算機２に移動中のＶＭ情報が残っていたら削除するための強制リカバリを実行しなければならない。
【００４５】
ステップ８３０では、移動元ＶＭを異なる物理計算機に移動できるかどうか判定する。ここでの判定条件としては、指定のＶＭ(移動対象ＶＭ）が存在するか、他に移せない特殊な装置を使っていないか、等がある。移動元ＶＭを異なる物理計算機に移動可能であると判定すると、ステップ８４０に進む。一方、移動元ＶＭを異なる物理計算機に移動不可であると判定すると、ステップ８９０に進む。ステップ８９０の処理については後述する。
【００４６】
ステップ８４０では、移動先計算機の仮想化機構のアドレスに対して、移動元計算機の仮想化機構のアドレス情報と、移動対象ＶＭのＶＭ定義情報を送信し、ＶＭ移動の開始を要求する。ここで送信するＶＭ定義情報は、ＶＭ定義情報テーブル４００の対象ＶＭのエントリのフィールド４１０ないし４６０の情報である。
【００４７】
続いて、ステップ８５０では、移動先計算機の仮想化機構が、移動準備を完了するまで待つ。ここで、移動先計算機から、移動先のＶＭを準備できないという返答を受けた場合(図示なし）には、ＶＭ移動不可としてステップ８９０に移る。
【００４８】
一方、ステップ８２０で、本処理が移動元計算機で実行されていないと判定されると、本処理が移動先計算機で実行されていると判定でき、ステップ８２５に進む。ステップ８２５は、移動元計算機がステップ８４０で送信した移動対象ＶＭのＶＭ定義情報を受信しするステップである。この受信した移動対象ＶＭのＶＭ定義情報を使用し、８３５で、移動元と同じように仮想ＨＢＡと仮想ＮＩＣを有する新ＶＭを生成する。新ＶＭは、移動先計算機２（１０１）の仮想化機構２１１のメモリ内ＶＭ定義情報２１５に新しくエントリが追加され、フィールド４２０ないし４６０の情報が与えられる。フィールド４２０のＶＭ名と、フィールド４６０のメモリサイズ情報は、移動元ＶＭの定義情報に合わせる。その他のフィールド４３０ないしフィールド４５０は、移動元ＶＭとは別に、新ＶＭに与えられた値を保持する。
【００４９】
続いて、ステップ８４５で新ＶＭを起動する。これは、仮想化機構２１１が、仮想計算機の電源オンをＶＭ用にエミュレーションすることであるが、ＯＳのブートは行わない。
【００５０】
次に、ステップ８５５で、移動元の仮想化機構に、移動先ＶＭ(新ＶＭ）の準備が完了したことを報告する。ただし、移動先計算機のリソース不足等により、移動先ＶＭの準備ができないときには、ＶＭ移動不可を報告する。移動元仮想化機構が、移動先計算機へのＶＭ移動不可報告を受けたときには、ステップ８６０に進まず、ステップ８９０に進む。
【００５１】
以上で、ＶＭを異なる物理計算機に移動する準備が整ったので、次にステップ８６０からの手順を説明する。
【００５２】
ステップ８５７で移動準備完了を受信した後、ステップ８６０は、移動対象ＶＭのメモリデータと、移動対象ＶＭのＶＭレジスタ情報を、移動先ＶＭにコピーし、移動先ＶＭにＯＳを引き継ぐ移動処理である。これは、図９を用いて後で詳細に説明する。
【００５３】
次に、ステップ８７０で、ステップ８６０の移動処理結果を判定する。ここで、移動処理が失敗したときは、ステップ８８０の移動回復処理に進む。移動回復処理は、ＶＭ移動が中断したことを受け、移動元にＶＭを戻すか、ＶＭ移動を中断点から先に進ませるかの処理である。図１０を用いて、後で詳細に説明する。
【００５４】
ステップ８９０では、ＶＭ移動が終了したので、ＶＭ操作を解禁する。これは、ステップ８１５で、端末１３０や異なる物理計算機からのＶＭ操作をガードしていたことを戻す処理である。そして、ＶＭ移動を要求した端末１３０に、移動終了または移動不可という結果を返して処理を終了する。
【００５５】
次に、図９のフローチャートを用いて、ステップ８６０のＶＭ移動手順を説明する。
【００５６】
ステップ９００は、本処理を移動元計算機の仮想化機構で実行しているかどうか判定する。ここで、移動元計算機だと判定されると、ステップ１９００からの処理に進み、移動先計算機だと判定されると、ステップ２９００からの処理に進む。
【００５７】
移動元計算機の仮想化機構における移動処理を説明する。
【００５８】
ステップ１９００は、移動対象ＶＭに割当てられている固有情報を、移動ＶＭ固有情報テーブル５００の構成で、補助記憶装置２２０に格納する。移動ＶＭ固有情報テーブル５００は、ＶＭ移動が中断したときに、仮想化機構が移動中のＶＭを特定するために用いる。ここで、移動ＶＭ固有情報テーブル５００のデータ構成を図５を用いて説明する。
【００５９】
移動ＶＭ固有情報テーブル５００には、上段に自ＶＭの固有情報を保持し、下段に相手計算機のＶＭ固有情報を保持する。フィールド５１０には、相手計算機と通信するために使用する仮想化機構のアドレスを保持する。ＶＭ名をフィールド５２０に、ＶＭ論理識別子としてＵＵＩＤをフィールド５３０に有する。また、仮想ＮＩＣ２４０を特定するポートと、仮想ＮＩＣ２４０に仮想化機構が割当てたＭＡＣアドレスの対の情報をフィールド５４０に、仮想ＨＢＡ２３０を特定するポートと、仮想ＨＢＡ２３０に仮想化機構が割当てたＷＷＮの対の情報をフィールド５５０に有する。フィールド５６０には、移動元ＶＭか移動先ＶＭかを特定する情報を有する。自ＶＭが移動元ならば、上段に移動元を示す情報を、下段に移動先を示す情報を格納する。
【００６０】
次に、ステップ１９１０で、移動先の仮想化機構に移動対象ＶＭのＶＭ状態を送信する。ＶＭ状態とは、ＶＭのメモリデータとＶＭの仮想レジスタのデータである。これらを移動先ＶＭに設定することにより、移動先ＶＭで移動元ＶＭで使用していたＯＳの処理を引継ぐことができる。
【００６１】
続いて、ステップ１９２０で、移動対象ＶＭを無効にする。これは、ＯＳの処理を移動先ＶＭに引継いだ後に移動対象ＶＭでＯＳを実行しないように、移動対象ＶＭの論理的な電源をオフにすることである(以上第一の移動元処理）。
【００６２】
この後、移動先の仮想化機構が、補助記憶装置２２０に、移動先ＶＭの定義情報を格納するのを待つ。ステップ１９３０で、移動先の仮想化機構から、ＶＭ定義情報を保存したという報告を受けると、ステップ１９４０で、移動元にある移動対象ＶＭのＶＭ定義を削除する。これは、移動した移動対象ＶＭの定義情報を、メモリ内ＶＭ定義情報２１５から削除するということである。
【００６３】
次に、ステップ１９５０で、今まで移動対象ＶＭのために確保していたＶＭの固有情報を、移動先ＶＭの固有情報に変更する(引き継ぐ）。移動先ＶＭに引き継いだ移動元ＶＭの固有情報に代わり、移動先ＶＭに割当てられていた固有情報を使っていくためである。将来ＶＭを生成したとき、仮想ＨＢＡに割当てられるＷＷＮは、ここで変更登録した移動先のＷＷＮになる。同様に、仮想ＮＩＣに割当てられるＭＡＣアドレスは、ここで変更登録した移動先のＭＡＣアドレスになる。
【００６４】
続いて、ステップ１９６０で、補助記憶装置２２０のＶＭ定義情報テーブル４００を更新する。移動先ＶＭに引継いだＶＭ１の定義は削除し、移動先ＶＭから引継いだＷＷＮとＭＡＣアドレスを、ＶＭ定義情報テーブル４００に登録する。
【００６５】
ステップ１９７０で、移動元計算機のＶＭ定義情報を、補助記憶装置に保存したことを、移動先の仮想化機構に報告する。
【００６６】
続いて、移動元計算機と移動先計算機で、ＶＭ定義情報の交換保存が終了したため、ステップ１９８０で、補助記憶装置２２０から、移動ＶＭ固有情報５００を削除する(以上第二の移動元処理）。
【００６７】
ステップ１９９０で、移動先の仮想化機構２１０から、移動完了報告を受けると、ＶＭ移動処理８６０が正常に終了する。尚、ステップ１９００からステップ１９９０の処理の途中で、先のステップに進めなくなった場合や、移動先の仮想化機構２２０から、移動中断報告を受けたり、移動先の計算機がダウンしたことを検出した場合には、ＶＭ移動処理８６０が正常終了しない。上述のステップ８７０で移動処理が失敗したと判定され、ステップ８８０に進む。
【００６８】
一方の、移動先計算機の仮想化機構における移動処理を説明する。
【００６９】
ステップ２９００で、メモリ内ＶＭ定義情報２１５に登録されている、移動先ＶＭに割当てられたＷＷＮやＭＡＣアドレスやＵＵＩＤなどのＶＭ固有情報を、移動対象ＶＭの値に更新する。
【００７０】
次に、ステップ２９１０で、移動元の仮想化機構２２０から、移動対象ＶＭの状態情報を受信する。
【００７１】
移動対象ＶＭの状態情報受信が完了したら、ステップ２９２０で、受信した移動対象ＶＭのメモリデータとレジスタのデータを、移動先のＶＭ(新ＶＭ）に設定する。
【００７２】
続いて、ステップ２９３０で、移動先ＶＭを有効にする。ステップ２９３０以降は、移動元ＶＭ上のＯＳの処理を、移動先ＶＭに引継いで実行する。
【００７３】
次に、ステップ２９４０で、移動対象ＶＭに割当てられた固有情報を、移動ＶＭ固有情報テーブル５００の構成で、補助記憶装置２２０に格納する。移動ＶＭ固有情報テーブル５００は、ＶＭ移動が中断したときに、仮想化機構が移動中のＶＭを特定するために用いる。
【００７４】
続いて、ステップ２９５０で、補助記憶装置２２０のＶＭ定義情報テーブル４００を更新する。これにより、生成された移動先ＶＭ定義と、移動対象ＶＭから引継いだＵＵＩＤとＷＷＮとＭＡＣアドレス等のＶＭ固有情報と、移動対象ＶＭと同じメモリサイズ情報が、補助記憶装置２２０に保存される。
【００７５】
ステップ２９６０で、移動元計算機のＶＭ定義情報を、補助記憶装置２２０に保存したことを、移動元の仮想化機構に報告する( 以上第一の移動先処理）。
【００７６】
その後、ステップ２９７０で、移動元計算機がＶＭ定義情報の交換保存が終了したという報告を受け、ステップ２９８０で、補助記憶装置２２０から、移動ＶＭ固有情報５００を削除する。
【００７７】
ステップ２９９０で、移動元の仮想化機構２２０に、移動先計算機にて、ＶＭ移動処理が終了したことを報告する。尚、ステップ２９００からステップ２９９０の処理の途中で、先のステップに進めなくなった場合には、ＶＭ移動処理８６０が正常終了しない。上述のステップ８７０で移動処理が失敗したと判定され、ステップ８８０に進む(以上第二の移動先処理）。
【００７８】
次に、図１０のフローチャートを用いて、ステップ８８０の移動回復手順を説明する。この手順は、
従来の管理サーバによる移動処理では行えない回復処理であり、移動元と移動先の仮想化機構の連携により、ＶＭ移動が中断している状態からＶＭ移動が完了している状態に進めるか、あるいは、移動先の計算機からＶＭ移動情報を削除し、ＶＭを移動元に戻す。
【００７９】
従来管理サーバが起動しなければ移動回復できなかったが、移動ＶＭ固有情報テーブル５００を移動元および移動先の計算機に持たせることと、移動処理８６０の中で、移動元と移動先の仮想化機構が互いのＶＭ定義情報の保存実行に同期を取っていることで、この処理が可能になる。さらにこの手順は、一度移動元と移動先の計算機のどちらか、あるいは一方が電源切断し、再度電源を入れた後でも、管理サーバに接続せずに実行可能である。処理を実行するのは、移動元計算機のこともあるし、移動先計算機のこともある。
【００８０】
ステップ１０１０で、移動回復を行う実計算機の移動回復部は、補助記憶装置２２０から、移動ＶＭ固有情報テーブル５００に登録してある、移動元ＶＭの定義情報と、移動先ＶＭの定義情報と、相手計算機の仮想化機構アドレス(自分が移動元なら移動先の、自分が移動先なら移動元の）を取得する。ここで、移動ＶＭ固有情報テーブル５００を、移動先の補助記憶装置２２０が保持していないのに、仮想化機構２１０が、移動ＶＭ情報テーブル５００と同等の情報をメモリ上に保持している場合には、仮想化機構２１０が有する移動元ＶＭの定義情報と、移動先ＶＭの定義情報と、相手計算機の仮想化機構アドレスを使用する。これは、移動先計算機が、ステップ２９００から２９３０を進行中に、ＶＭ移動処理が中断した場合に相当する。
【００８１】
ただし、移動元計算機で、補助記憶装置２２０に移動ＶＭ固有情報が存在しない場合には、ＶＭ移動が中断された状態ではないものとみなし、移動回復処理を終了する。
【００８２】
また、移動先計算機で、補助記憶装置２２０と仮想化機構２１０のどちらにも、移動ＶＭ固有情報が存在しない場合には、ＶＭ移動が中断された状態ではないものとみなし、移動回復処理を終了する。
【００８３】
次に、ステップ１０３０で、移動元計算機の補助記憶装置２２０に保存されたＶＭ定義情報テーブル４００に、移動元ＶＭの定義が残っているか(ステップ１９６０終了）どうかを判定する。ここで、移動元ＶＭの定義が残っていなければ、既に移動先計算機にＶＭが移動されたものとみなし、ステップ１０７０に進む。ステップ１０７０については、後述する。一方、移動元ＶＭの定義が残っていたときには、ステップ１０４０に進む。
【００８４】
ステップ１０４０では、移動先計算機の補助記憶装置２２０に保存されたＶＭ定義情報テーブル４００に、移動先ＶＭの定義が格納されているか(ステップ２９５０終了）を判定する。ここで、移動先ＶＭの定義が既に格納されていれば、ステップ１０５０に進み、移動元計算機の仮想化機構２１０のメモリ内ＶＭ定義情報２１５と、補助記憶装置２２０から、移動元ＶＭの定義を削除する。
【００８５】
次に、ステップ１０６０で、今まで移動元ＶＭのために確保していたＶＭの固有情報を、移動先ＶＭの固有情報に変更する(ステップ１９５０から再開）。移動先ＶＭに引き継いだ移動元ＶＭの固有情報に代わり、移動先ＶＭに割当てられていた固有情報を使っていくためである。将来新たにＶＭを生成したとき、仮想ＨＢＡに割当てられるＷＷＮは、ここで変更登録した移動先のＷＷＮになる。同様に、仮想ＮＩＣに割当てられるＭＡＣアドレスは、ここで変更登録した移動先のＭＡＣアドレスになる。また、補助記憶装置２２０のＶＭ定義情報テーブル４００を更新する。このとき、移動先ＶＭに引継いだＶＭ１の定義は削除されるが、移動先ＶＭから引継いだＷＷＮとＭＡＣアドレスを、ＶＭ定義情報テーブル４００に保存する。
【００８６】
こうして、ステップ１０７０に示すとおり、移動先ＶＭが有効になったため、ステップ１０８０で、移動ＶＭ固有情報５００を、移動元および移動先の両方の物理計算機の補助記憶装置２２０と、仮想化機構２１０から削除する。
【００８７】
一方、ステップ１０４０で、移動先計算機の補助記憶装置２２０に保存されたＶＭ定義情報テーブル４００に、移動先ＶＭの定義が格納されていないと判定されたときは、ステップ１０５５に進む。
【００８８】
ステップ１０５５で、移動先計算機で生成した移動先ＶＭ(新ＶＭ）を、移動元の仮想化機構２１０のメモリ内ＶＭ定義情報２１５から削除する。
【００８９】
また、ステップ１０６５で、メモリ内ＶＭ定義情報のＶＭ固有情報を、ＶＭ移動前に登録されていた情報に戻す。
【００９０】
こうして、ステップ１０７５に示すとおり、移動元ＶＭが有効になり、ステップ１０８０に進む。
【００９１】
以上のように、移動回復処理１０００が進められ、移動対象ＶＭは、移動元計算機か移動先計算機のどちらか一方にのみ保持される。
【００９２】
しかし、移動元計算機か、移動先計算機か、あるいは両方の物理計算機がダウンしている場合や、物理計算機間の通信が切断されているようなときには、移動回復処理１０００をステップ１０８０まで進められない。そこで、物理計算機を起動するとき、この物理計算機を停止する前に、ＶＭ移動が中断されていたか調べ、移動回復を試みる(図１２）。また、移動元計算機と移動先計算機の両方で、同じアクセスコントロールのＶＭが起動しないよう、ガードをかける(図１３）。
【００９３】
図１２は、仮想化機構２１０にある、仮想化機構起動部１３００の処理を示す。ステップ１２１０は、物理計算機起動時に仮想化機構を起動してからＶＭ起動要求の手前までの処理である。ステップ１２２０は、移動ＶＭ固有情報５００が補助記憶装置２２０に格納されているか調べる。ここで、格納されていると判断すると、それはＶＭ移動処理が中断して物理計算機が停止したことを意味しているため、移動回復処理が必要である。そこでステップ１２３０は、移動ＶＭ固有情報５００にある移動相手仮想化機構情報を取得し、移動相手との通信を試みる。
【００９４】
ステップ１２４０は、移動相手の仮想化機構との通信に成功したか否かを判定する。ここで、通信に成功すると、ステップ１２５０に進み、図１０に示す移動回復処理を実行する。
【００９５】
ステップ１２６０において、移動回復が完了したことを示すメッセージを表示装置３１０に出力する。
【００９６】
一方、ステップ１２４０で通信に失敗したときは、ステップ１２７０に進み、移動回復処理を実行できなかったことを示すメッセージを表示装置３１０に出力する。こうして、仮想化機構起動処理の中で移動回復を試みたあと、ステップ１２８０で、通常のＶＭ起動要求を待つ処理から実行する。
【００９７】
図１３は、ＶＭの起動要求受付時に、仮想化機構２１０にある、ＶＭ起動部１４００の処理を示す。ステップ１３１０において移動ＶＭ固有情報５００が補助記憶装置２２０に格納されているかどうか調べる。ＶＭ固有情報がないときは、ステップ１３４０に進み、通常のＶＭ起動処理を実行する。移動ＶＭ固有情報があるときは、ステップ１３２０に進み、起動を要求されたＶＭと移動ＶＭ固有情報５００に格納された移動ＶＭが一致するか調べる。一致していなければ、ステップ１３４０に進み、通常のＶＭ起動処理を実行する。一致しているときは、ステップ１３３０に進み、ＶＭを起動できないことを示すメッセージを表示装置３１０に出力する。こうして、起動ＶＭが移動中、あるいは移動が中断されたＶＭのときは、起動しないようガードがかかる。
【００９８】
さらに、仮想計算機起動部１３００は、仮想計算機を再起動するときに、その仮想計算機は移動中であるという情報が記憶されていたら、その仮想計算機を再起動しないようにすることができる。
【００９９】
図１１は、仮想化機構と補助記憶装置が保持する情報を、ＶＭの移動前と移動中と移動後に分けて示した図である。
【０１００】
（１）移動前は、物理計算機１でＶＭ１が実行していて、仮想化機構２１０のメモリ２１５にＶＭ１の定義があり、補助記憶装置２２０にＶＭ１の定義が格納されている。また、物理計算機２では、ＶＭ２の定義が補助記憶装置２２０に格納されているが、ＶＭ２は起動前であることを示している。
【０１０１】
（２）移動中は、物理計算機２でＶＭ１の移動先の仮定義となるＶＭ３(２０２）が定義され、仮想化機構２１１のメモリ２１５にＶＭ３の定義があるとともに、物理計算機１と物理計算機２の補助記憶装置２２１に移動ＶＭ固有情報が格納されている。
【０１０２】
（３）移動後は、物理計算機２でＶＭ１（２００）が実行されていて、仮想化機構２１１のメモリ２１５にＶＭ１の定義があり、補助記憶装置２２１にＶＭ１の定義として格納されている。また、物理計算機１では、ＶＭ３のＷＷＮやＭＡＣアドレスといった固有情報が、将来生成されるＶＭ定義がそれらを使用するように補助記憶装置２２０に格納されていることを示している。
【０１０３】
以上説明したように、本実施例では、ＶＭ移動要求を受けた移動元と移動先の仮想化機構の連携により、ＶＭを移動することができる。また、ＶＭ移動が中断された場合にも、移動元と移動先の仮想化機構の連携により、移動中断の状態を解除(移動回復）することができる。
【０１０４】
このように処理することにより、管理サーバがダウンしている状況であっても、ＶＭを安全に移動させることができる。
【実施例２】
【０１０５】
実施例２は、実施例１の物理計算機１００が、図６に示す移動先候補テーブル６００を有し、計算機システムにおいて、移動先計算機を指定されなくても、ＶＭを異なる物理計算機に移動する仮想化機構２１０である。
【０１０６】
図８を用いて説明した移動制御手順のステップ８１０において、移動先計算機の指示がなかった(不足していた）場合には、移動先候補テーブル６００に予め登録されている仮想化機構のアドレスから移動先の物理計算機を選択する。
【０１０７】
仮想化機構２１０は、候補の物理計算機が複数ある場合には、移動先を特定できるまで、移動先候補テーブル６００に登録されている物理計算機の仮想化機構２１０に問い合わせる。移動先の物理計算機を特定できたら、ステップ８１０から順次処理を進める。
【０１０８】
このように処理することにより、複数の物理計算機を管理する管理サーバがないときでも、ＶＭを移動する先の物理計算機を複数の物理計算機から選択することができる。
【実施例３】
【０１０９】
実施例３は、実施例１の物理計算機１００が、図７に示す移動先許可情報７００を有し、ＶＭを移動してくることを、物理計算機１００が許可しない計算機システムである。
【０１１０】
物理計算機１００で実行しているＶＭの性能を下げられないとき、移動先許可情報７００に、予めＶＭ移動先不可情報を登録しておく。
【０１１１】
図８を用いて説明した移動制御手順のステップ８３５において、移動先計算機に移動先ＶＭを生成できるか否かの判定をするとき、移動先許可情報７００の登録内容を調べる。ここで、移動先許可情報７００に、移動先不可情報が登録されている場合には、ＶＭ移動不可を移動元計算機に報告する。
【０１１２】
このように処理することにより、物理計算機の性能を監視する管理サーバがないときでも、性能を劣化させたくないＶＭを実行している物理計算機に、ＶＭが追加されることを防ぐことができる。
【０１１３】
以上、本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は前記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１１４】
１００・・・物理計算機１、１０１・・・物理計算機２
１１０ないし１１１・・・ＨＢＡ、１２０ないし１２１・・・ＮＩＣ
１３０・・・端末
１４０・・・ストレージスイッチ
１５０・・・ネットワーク
１６０・・・ストレージ装置
１８０ないし１８１・・・ディスクボリューム
１９０・・・管理サーバ
２００・・・ＶＭ１、２０１・・・ＶＭ２
２１０ないし２１１・・・仮想化機構
２１５・・・メモリ内ＶＭ定義情報
２２０・・・補助記憶装置
２３０・・・仮想ＨＢＡ、２４０・・・仮想ＮＩＣ
３１０・・・表示装置、３２０・・・入力装置、３３０・・・メモリ、３４０・・・ＣＰＵ
４００・・・ＶＭ定義情報
５００・・・移動ＶＭ固有情報
６００・・・移動先候補情報
７００・・・移動先許可情報
８００・・・移動制御部
１０００・・・移動回復部
１３００・・・仮想化機構起動部
１４００・・・ＶＭ起動部
【図１】
0005427574.tif 000002
【図２】
0005427574.tif 000003
【図３】
0005427574.tif 000004
【図４】
0005427574.tif 000005
【図５】
0005427574.tif 000006
【図６】
0005427574.tif 000007
【図７】
0005427574.tif 000008
【図８】
0005427574.tif 000009
【図９】
0005427574.tif 000010
【図１０】
0005427574.tif 000011
【図１１】
0005427574.tif 000012
【図１２】
0005427574.tif 000013
【図１３】
0005427574.tif 000014
【図１４】
0005427574.tif 000015
【図１５】
0005427574.tif 000016