(57)【特許請求の範囲】
【請求項１】
計算機と、前記計算機と接続される記憶装置とを備える計算機システムにおいて、
前記記憶装置は、前記計算機のデータを格納するボリュームを有し、
前記計算機は、演算部と、記憶部と、アダプタと、仮想化機構と、前記仮想化機構の制御により前記演算部上で動作する仮想計算機と、前記ボリュームの使用状況を管理するボリューム管理情報とを有し、
前記仮想計算機は、第１の仮想ＷＷＮ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ）が割り当てられた第１の仮想アダプタを有し、
前記計算機の前記仮想化機構は、仮想ボリューム割当て要求の受信により、
前記ボリューム管理情報を参照して、前記ボリュームの未使用領域を検索し、
前記ボリュームの未使用領域が、前記仮想ボリューム割当て要求で指定された仮想ボリュームのサイズを満たす場合、前記ボリュームの未使用領域に第１の仮想ボリュームを割当て、
前記ボリューム管理情報が管理する前記ボリュームの使用状況を、前記第１の仮想ボリュームの割当て後の状態に更新し、
前記記憶部に、前記第１の仮想ボリュームと前記第１の仮想ＷＷＮとを対応づけて管理する仮想ボリューム情報を格納する仮想ボリューム割当て部を有し、
前記計算機の前記アダプタは、前記仮想計算機の前記第１の仮想アダプタから前記ボリュームへのアクセス要求を受信すると、
前記仮想ボリューム情報を参照し、前記ボリュームへのアクセス要求のアクセス先が、アクセス元の前記第１の仮想アダプタに割り当てられた前記第１の仮想ＷＷＮに対応づけられた前記第１の仮想ボリュームの領域内であるか否かを判定し、
前記判定により、前記アクセス先が前記第１の仮想ボリュームの領域内である場合、前記ボリュームにアクセスすることを特徴とする計算機システム。
【請求項２】
前記仮想ボリューム割当て部は、
前記ボリュームの未使用領域が、前記仮想ボリューム割当て要求で指定された仮想ボリュームのサイズを満たさない場合、仮想ボリュームの生成失敗の応答をすることを特徴とする請求項１記載の計算機システム。
【請求項３】
前記仮想化機構は、前記記憶装置におけるボリューム情報を参照して、前記記憶部に前記ボリューム管理情報を生成することを特徴とする請求項１記載の計算機システム。
【請求項４】
前記記憶装置の前記ボリュームは、物理的なボリュームまたは論理的なボリュームであることを特徴とする請求項１記載の計算機システム。
【請求項５】
前記仮想ボリューム情報は、前記第１の仮想ボリュームの位置情報を管理し、
前記計算機が有する仮想ボリュームドライバは、前記仮想計算機から前記ボリュームへのアクセス要求の受信により、
前記仮想ボリューム情報を参照して、前記ボリュームへのアクセス要求に含まれる前記第１の仮想ボリューム上での第１のアクセス先のアドレスを、前記ボリューム上での第２のアクセス先のアドレスに変換することを特徴とする請求項１記載の計算機システム。
【請求項６】
前記仮想化機構は、仮想ボリューム情報の提供要求の受信により、前記仮想ボリュームドライバに前記仮想ボリューム情報を送信する仮想ボリューム情報提供部を有し、
前記仮想ボリューム情報提供部は、
前記記憶部を参照して前記仮想ボリューム情報を取得し、
前記取得した仮想ボリューム情報を、前記仮想ボリュームドライバに送信し、
前記仮想ボリュームドライバは、
前記受信した仮想ボリューム情報から前記第１の仮想ボリュームの位置情報を抽出し、
前記受信した仮想ボリューム情報から前記第１の仮想ボリュームに対応づけられた前記第１の仮想ＷＷＮを抽出し、
前記抽出した第１の仮想ＷＷＮが割り当てられた前記第１の仮想アダプタを特定し、
前記第１の仮想ボリュームにアクセス要求を出すための宛先情報として、前記特定した第１の仮想アダプタと前記第１の仮想ボリュームとを対応づけて保持することを特徴とする請求項５記載の計算機システム。
【請求項７】
前記アダプタは、特殊命令と制御方法指示とを対応づけて管理する特殊命令制御情報を有し、
前記ボリュームへのアクセス要求を受信すると、アクセス方法を表す命令を取得し、前記特殊命令制御情報を参照して、前記アクセス方法を表す命令がデータ入出力要求であるか否かを判定し、
前記アクセス方法を表す命令がデータ入出力要求でない場合、前記特殊命令制御情報を参照して、前記アクセス方法を表す命令と合致する特殊命令を抽出し、前記抽出した特殊命令と対応づけられた前記制御方法指示に基づいて、前記仮想計算機に応答することを特徴とする請求項１記載の計算機システム。
【請求項８】
前記計算機の前記アダプタは、前記判定により、前記アクセス先が前記第１の仮想ボリュームの領域外である場合、エラーの応答をすることを特徴とする請求項１記載の計算機システム。
【請求項９】
前記仮想化機構は、前記仮想ボリューム情報を前記第１の仮想ボリュームを割当てた仮想計算機の定義情報とともに、前記記憶部へ保持することを特徴とする請求項１記載の計算機システム。
【請求項１０】
前記仮想ボリューム情報に、前記第１の仮想ボリュームの領域がある前記ボリュームを管理する計算機情報を保持し、
前記仮想計算機が、異なる計算機上に移動するとき、
前記仮想計算機の定義情報とともに、前記仮想ボリューム情報を異なる計算機上に移動ことを特徴とする請求項９記載の計算機システム。
【請求項１１】
前記仮想ボリューム情報に、前記第１の仮想ボリュームの領域があるボリュームを管理する計算機情報を保持し、
前記第１の仮想ボリュームを異なるボリュームの領域に移動するとき、
前記仮想ボリューム情報内の、前記第１の仮想ボリュームの領域があるボリュームを示す情報を、移動先の前記異なるボリュームの情報に変更することを特徴とする請求項９記載の計算機システム。
【請求項１２】
前記仮想計算機から前記第１の仮想ボリュームの割当てを解除するとき、
前記仮想計算機の定義情報とともに保存していた前記仮想ボリューム情報を削除することを特徴とする請求項９記載の計算機システム。
【請求項１３】
仮想化機構の制御により演算部上で動作する仮想計算機を有する計算機と、前記計算機と接続される記憶装置とを備える計算機システムにおける仮想計算機のボリューム割当て方法であって、
前記記憶装置は、前記計算機のデータを格納するボリュームを有し、
前記計算機は、前記演算部と、記憶部と、アダプタと、前記仮想化機構と、前記仮想計算機と、前記ボリュームの使用状況を管理するボリューム管理情報とを有し、
前記仮想計算機は、第１の仮想ＷＷＮ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ）が割り当てられた第１の仮想アダプタを有し、
前記仮想化機構が有する仮想ボリューム割当て部は、仮想ボリューム割当て要求の受信により、
前記ボリューム管理情報を参照して、前記ボリュームの未使用領域を検索し、
前記ボリュームの未使用領域が、前記仮想ボリューム割当て要求で指定された仮想ボリュームのサイズを満たす場合、前記ボリュームの未使用領域に第１の仮想ボリュームを割当て、
前記ボリューム管理情報が管理する前記ボリュームの使用状況を、前記第１の仮想ボリュームの割当て後の状態に更新し、
前記記憶部に、前記第１の仮想ボリュームと前記第１の仮想ＷＷＮとを対応づけて管理する仮想ボリューム情報を格納し、
前記計算機の前記アダプタは、前記仮想計算機の前記第１の仮想アダプタから前記ボリュームへのアクセス要求を受信すると、
前記仮想ボリューム情報を参照し、前記ボリュームへのアクセス要求のアクセス先が、アクセス元の前記第１の仮想アダプタに割り当てられた前記第１の仮想ＷＷＮに対応づけられた前記第１の仮想ボリュームの領域内であるか否かを判定し、
前記判定により、前記アクセス先が前記第１の仮想ボリュームの領域内である場合、前記ボリュームにアクセスすることを特徴とする仮想計算機のボリューム割り当て方法。
【請求項１４】
前記仮想ボリューム割当て部は、
前記ボリュームの未使用領域が、前記仮想ボリューム割当て要求で指定された仮想ボリュームのサイズを満たさない場合、仮想ボリュームの生成失敗の応答をすることを特徴とする請求項１３記載の仮想計算機のボリューム割り当て方法。
【請求項１５】
前記仮想化機構は、前記記憶装置におけるボリューム情報を参照して、前記記憶部に前記ボリューム管理情報を生成することを特徴とする請求項１３記載の仮想計算機のボリューム割り当て方法。
【請求項１６】
前記記憶装置の前記ボリュームは、物理的なボリュームまたは論理的なボリュームであることを特徴とする請求項１３記載の仮想計算機のボリューム割り当て方法。
【請求項１７】
前記仮想ボリューム情報は、前記第１の仮想ボリュームの位置情報を管理し、
前記計算機が有する仮想ボリュームドライバは、前記仮想計算機から前記ボリュームへのアクセス要求の受信により、
前記仮想ボリューム情報を参照して、前記ボリュームへのアクセス要求に含まれる前記第１の仮想ボリューム上での第１のアクセス先のアドレスを、前記ボリューム上での第２のアクセス先のアドレスに変換することを特徴とする請求項１３記載の仮想計算機のボリューム割り当て方法。
【請求項１８】
前記仮想化機構は、仮想ボリューム情報の提供要求の受信により、前記仮想ボリュームドライバに前記仮想ボリューム情報を送信する仮想ボリューム情報提供部を有し、
前記仮想ボリューム情報提供部は、
前記記憶部を参照して前記仮想ボリューム情報を取得し、
前記取得した仮想ボリューム情報を、前記仮想ボリュームドライバに送信し、
前記仮想ボリュームドライバは、
前記受信した仮想ボリューム情報から前記第１の仮想ボリュームの位置情報を抽出し、
前記受信した仮想ボリューム情報から前記第１の仮想ボリュームに対応づけられた前記第１の仮想ＷＷＮを抽出し、
前記抽出した第１の仮想ＷＷＮが割り当てられた前記第１の仮想アダプタを特定し、
前記第１の仮想ボリュームにアクセス要求を出すための宛先情報として、前記特定した第１の仮想アダプタと前記第１の仮想ボリュームとを対応づけて保持することを特徴とする請求項１７記載の仮想計算機のボリューム割り当て方法。
【請求項１９】
前記アダプタは、特殊命令と制御方法指示とを対応づけて管理する特殊命令制御情報を有し、
前記ボリュームへのアクセス要求を受信すると、アクセス方法を表す命令を取得し、前記特殊命令制御情報を参照して、前記アクセス方法を表す命令がデータ入出力要求であるか否かを判定し、
前記アクセス方法を表す命令がデータ入出力要求でない場合、前記特殊命令制御情報を参照して、前記アクセス方法を表す命令と合致する特殊命令を抽出し、前記抽出した特殊命令と対応づけられた前記制御方法指示に基づいて、前記仮想計算機に応答することを特徴とする請求項１３記載の仮想計算機のボリューム割り当て方法。
【請求項２０】
前記計算機の前記アダプタは、前記判定により、前記アクセス先が前記第１の仮想ボリュームの領域外である場合、エラーの応答をすることを特徴とする請求項１３記載の仮想計算機のボリューム割り当て方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機を実行する計算機システムに係わり、特に仮想計算機にディスクボリューム内の領域を割当てるボリューム割当て方法に関する。
【背景技術】
【０００２】
１台の物理計算機上に複数業務を集約する仮想化技術では、プロセッサやメモリ、入出力装置などのハードウェアリソースの利用効率を上げることが可能である。しかし、計算機システムの構築および構成変更では、サーバ管理者が接続したいストレージの要件をストレージ管理者に通知し、その要件と適合するストレージの設定作業をストレージ管理者が実行している。仮想化技術により、仮想サーバを柔軟に構築できるようになったため、仮想サーバが使用するストレージ設定作業にかかる時間も短縮できることが望ましい。
【０００３】
これを実現する従来技術として、特許文献１には、計算機システムの構築および構成変更において、サーバ計算機に接続されるストレージの管理者またはストレージ管理サーバの介入を不要とする手法が開示されている。すなわち、予めストレージに複数のディスクボリュームを用意し、各ディスクボリュームにダミーのインターフェイス識別子を割り振っておく。インターフェイス識別子は、例えばディスクボリュームにアクセス可能なホストを識別するために用いるＨＢＡ（ホストバスアダプタ）用ＷＷＮ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ）である。仮想サーバ設定時に、未使用のディスクボリュームを選択し、そこに割り振られていたＷＷＮを仮想サーバの仮想ＨＢＡのＷＷＮと交換設定することにより、仮想サーバの設定とそこに割り当てるディスクボリュームを同時に設定できる。
【０００４】
一方、特許文献２には、物理計算機のディスクボリュームをホスト計算機の仮想ハードディスクファイルへ、物理計算機が実行中である間に変換する技術が開示されている。物理計算機のファイルシステムと一貫性を有するスナップショットを作成し、そのスナップショットを、ホスト計算機にマウントされた仮想ハードディスクファイルへ転送する。次に、仮想ハードディスクファイルおよびオペレーティングシステムに関連する動作情報を、ホスト計算機で仮想計算機をブートして機能するように修正した後、仮想ハードディスクファイルをホスト計算機からアンマウントし、新しい仮想計算機用ディスクボリュームとして使用する。このように、ホスト計算機がファイルとして管理する領域を、仮想計算機にディスクボリュームと見せかけ、仮想計算機からディスクボリュームに、ホスト計算機を経由してアクセスする仮想ディスクファイルがある。ここでホスト計算機をハイパーバイザ（仮想化機構）と同等の機能と見ることもできる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−９７４０２号
【特許文献２】特表２００９−５３６７６２号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示される技術によれば、予め用意しておいた複数のディスクボリュームの中から、仮想計算機に合う容量の未使用のディスクボリュームを選択して仮想計算機に割り当てるため、仮想計算機構築に合わせたストレージ管理者の介入を不要とし、仮想計算機の構築に係る工数、および時間を削減できる。
【０００７】
しかしながら、今後構築される仮想計算機が使用するディスクボリューム数の見極めと、そのディスクボリューム数に十分な数のディスクボリュームを用意しておかなければならず、多数のディスクボリュームの設定が必要である。
【０００８】
また、あらかじめ仮想計算機が必要とするディスク容量は、仮想計算機で実行する業務に合わせて多様であるが、将来実行する業務に合わせたサイズのディスクボリュームを予め用意しておくことはできない。仮に、将来に備えて多様なサイズの多数のディスクボリュームを用意しておくとしても、設定に時間がかかり、仮想計算機に割当てられるのを待機しているディスクボリュームを抱えていなければならない。
【０００９】
一方、特許文献２に開示される方式、すなわち仮想計算機に要求された容量の仮想ハードディスクファイルをホスト計算機が生成して、仮想計算機にディスクボリュームとして使わせる方式を取ると、仮想計算機からディスクボリュームをアクセスするとき、ホスト計算機にアクセス要求を渡さなければならない。ホスト計算機は、ディスクボリュームと仮想ハードディスクファイルの形式および位置変換を実行するため、ホスト計算機の仕事量が増え、業務の妨げになる可能性がある。
【００１０】
このように、仮想計算機の構築に合わせて、業務に合う容量かつ性能の良いディスクボリュームを迅速に用意することが難しい、という問題があった。
【００１１】
本発明は、仮想計算機毎に予めディスクボリュームを用意することなく、仮想計算機の生成時に、必要な大きさのディスクボリュームを、ストレージ内のディスクボリュームから選択および分割して、仮想計算機に割り当てることのできる計算機システムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明に関わる仮想計算機のボリューム割当て方法およびその方法を用いた計算機システムでは、計算機と、計算機と接続される記憶装置とを備えており、記憶装置は、計算機のデータを格納するボリュームと、ボリュームを論理分割してなる仮想ボリュームとを有し、計算機は、演算部と、記憶部と、仮想化機構の制御により演算部上で動作する仮想計算機と、仮想ボリュームの使用状況および仮想ボリュームの位置情報を管理するボリューム管理情報とを有する。仮想化機構は、仮想ボリューム割当て要求の受信により、仮想計算機へ新たな仮想ボリュームを割当てる仮想ボリューム割当て部を有し、記憶部は、仮想計算機に割当てられた仮想ボリュームを管理する仮想ボリューム情報を有する。そして、仮想ボリューム割当て部は、ボリューム管理情報を参照して、ボリュームの未使用領域を検索し、ボリュームの未使用領域が、仮想ボリューム割当て要求で指定された仮想ボリュームのサイズを満たす場合、ボリュームの未使用領域に新たな仮想ボリュームを割当て、ボリューム管理情報が有する仮想ボリュームの使用状況および仮想ボリュームの位置情報を、新たな仮想ボリュームの割当て後の状態に更新し、仮想ボリューム情報に、新たな仮想ボリュームの情報を追加する。
【発明の効果】
【００１３】
本発明によれば、計算機が記憶装置のボリュームを論理分割してなる仮想ボリュームを管理し、仮想化機構が仮想ボリューム管理情報に基づいて新たな仮想ボリュームを割り当てるので、サーバ管理者等から指定されたサイズの仮想ディスクボリュームを、必要なタイミングで仮想計算機に割当てることが可能となる。
【００１４】
また、本発明によれば、計算機が仮想ボリュームにアクセスするための仮想ボリュームドライバを有し、仮想ボリュームドライバが、仮想ボリューム上のアクセスアドレスをボリューム上のアクセスアドレスに変換するので、仮想計算機から仮想ディスクボリュームにハイパーバイザの介在なしにアクセスすることができ、アクセス処理が高速化される。
【図面の簡単な説明】
【００１５】
【図１】サーバの構成要素を示す図。
【図２】計算機システムの構成を示す図。
【図３】ストレージ装置の構成要素を示す図。
【図４】ボリュームを管理する情報のデータ構造を示す図。
【図５】アダプタファームウェアの構成要素を示す図。
【図６】仮想ボリュームを管理する情報のデータ構造を示す図。
【図７】サーバとストレージ装置が複数台ある場合のシステム構成を示す図。
【図８】仮想化機構が仮想計算機に仮想ボリュームを割り当てる手順を示すフローチャート。
【図９】仮想ボリュームアクセスをボリュームアクセスに変換する手順を示すフローチャート。
【図１０】仮想ボリュームを制御する手順を示すフローチャート。
【図１１】仮想ボリュームを割当てた仮想計算機を、異なるサーバに移動する手順を示した図。
【図１２】仮想ボリュームを別ボリューム内の領域に移動する手順を示すフローチャート。
【図１３】仮想計算機への仮想ボリュームの割当てを解除する手順を示すフローチャート。
【図１４】仮想ボリュームのアクセスからボリュームのアクセス先への変換を示す図。
【発明を実施するための形態】
【実施例１】
【００１６】
本発明を適用した第１の実施例を説明する。第１の実施例では、仮想化機構とストレージ装置を含むシステムで、仮想化機構が仮想計算機（ＶＭ）に仮想ボリュームを割当て、仮想ボリュームドライバと連携して仮想ボリュームにアクセスする装置の構成、および方法を示す。
【００１７】
図１は、本発明の実施例１のサーバの構成要素を示す図である。
【００１８】
サーバ１００は、一般的な構成の物理計算機であり、ファイバチャネルのホストバスアダプタ（ＨＢＡ）１１０とネットワークインタフェースカード（ＮＩＣ）１２０を介して外部に接続する。また、不揮発メモリ１５０内にデータを保持できる。
【００１９】
サーバ１００では、サーバ仮想化を実現する仮想化機構２１０が動作し、ＶＭ２００が仮想化機構２１０上で実行している。ＶＭ２００は、仮想化機構２１０が構成した仮想的なＮＩＣである仮想ＮＩＣ２２０と、仮想的なＨＢＡである仮想ＨＢＡ２３０を持っている。仮想ＮＩＣ２２０のポートには、固有のＭＡＣアドレスを付与する。また、仮想ＨＢＡ２３０のポートには、固有のＷＷＮを付与する。ＷＷＮやＭＡＣアドレスは、外部装置から仮想計算機の仮想アダプタを特定するための固有情報として使用される。
【００２０】
図２は、システム構成を示す図である。本システムは、サーバ１００、ストレージ装置３００、およびネットワークスイッチ２５０、管理サーバ２９０から構成されている。
【００２１】
サーバ１００は、図１のＨＢＡ１１０、ＮＩＣ１２０、不揮発メモリ１５０の他、データを取り込む入力装置１８０、物理計算機の状態やプログラム実行結果を出力する出力装置１９０、業務処理プログラムやデータを保持するメモリ１４０、メモリ１４０に読み込まれた仮想化機構のプログラムやアプリケーションプログラム等を実行するＣＰＵ１３０から構成され、バスを介して接続している。サーバ１００には、ブレードシステムにおけるブレードを利用することも可能である。
【００２２】
ストレージ装置３００には、ポート３５１とポート３５２があり、サーバ１００からＨＢＡ１１０を介して接続されている。また、サーバ１００のデータを格納するボリューム３１０があり、ボリューム３１０は、複数の物理ディスク装置を組み合わせて冗長化させた論理ユニット（ＬＵ）であることが一般的である。さらに、管理インタフェース３５３があり、ネットワーク２５０を介して管理サーバ２９０と通信できる。管理サーバ２９０は、サーバ管理ツールやストレージ管理ツールを実行するサーバである。尚、ストレージ装置３００がサーバ１００内にあってもよい。
【００２３】
ストレージ装置３００を、図３の構成要素を用いて詳細に説明する。
【００２４】
ボリュームセキュリティ情報３６０は、ボリュームフィールド３３０と、アクセス可能ＷＷＮフィールド３４０の組の集合である。ボリュームセキュリティは、ストレージエリアネットワーク（ＳＡＮ）環境等において、無認可のサーバのポートから自サーバが管理するボリュームにアクセスされることを防ぐための手段である。なお、ボリュームセキュリティ情報３６０は、ストレージ管理インタフェースを通じて指示された情報を元に、ストレージ管理者から登録される。
【００２５】
例えば、ボリューム３１１とボリューム３１３に対してサーバがアクセスするには、ＨＢＡのポートのＷＷＮは“ＷＷＮ１”か、“ＷＷＮ２”か、“ＷＷＮ３”でなければならない。同様に、ボリューム３１２にアクセスするＷＷＮは“ＷＷＮ３”、ボリューム３１４にアクセスするＷＷＮは“ＷＷＮ４”でなければならない。
【００２６】
ボリューム３１１ないし３１４を使うサーバが決定した時点で、各ＷＷＮを設定することになるが、ボリュームセキュリティ情報３２０に値を設定するには、管理サーバ２９０からストレージ管理ツールを用いるのが一般的である。サーバ１００上でストレージ管理ツールを動作させて設定することもできる。
【００２７】
本実施例では、仮想化機構２１０が、ボリューム３１１ないし３１４の内部領域を、仮想ボリューム３２１ないし３２４として、ＶＭ２００に割り当てる。ボリュームセキュリティ情報３６０に従い、ボリューム３１１とボリューム３１３には、仮想ＨＢＡ２３０のポートに“ＷＷＮ１”か、“ＷＷＮ２”  か、“ＷＷＮ３”を設定したＶＭ２００から仮想ボリューム３２１をアクセスすることができる。一方、ボリューム３１２には、仮想ＨＢＡ２３０のポートに“ＷＷＮ３”を設定したＶＭ２００から、仮想ボリューム３２２をアクセスすることができる。この場合、アクセス可能なＷＷＮが１つなので、ボリューム３１４に仮想ボリューム３２２を割り当てるＶＭは１つということになる。同様に、ボリューム３１４には、仮想ＨＢＡ２３０のポートに“ＷＷＮ４”を設定したＶＭ２００から仮想ボリューム３２２をアクセスすることができる。ここでは、ボリューム３１４の内部領域を複数に分けて仮想ボリューム３２４を複数設定するのではなく、ボリューム３１４をそのまま仮想ボリューム３２４として使う例を示している。
【００２８】
また、ストレージ装置３００には、ボリューム情報３７０があり、ボリュームフィールド３７１と、サイズフィールド３７２と、ポートフィールド３７３がある。管理インタフェース３５３からボリュームの生成要求時に、ストレージ装置は、ボリューム３１１〜３１４を生成し、ボリュームの識別子をフィールド３７１に、サイズをフィールド３７２に、ストレージ装置内でアクセスするときに経由するポート識別子をフィールド３７３に登録する。
【００２９】
このように、ストレージ装置のボリュームの内部領域を仮想ボリュームとしてＶＭに割り当てるために、仮想化機構２１０に仮想ボリューム割当て部８００と、仮想ボリューム情報提供部９００とがある。
【００３０】
ここで、仮想化機構２１０が、ストレージ装置のボリュームの内部領域を仮想ボリュームとして、ＶＭに割り当てる手順について説明する。
【００３１】
図８は、仮想化機構２１０の仮想ボリューム割当て部８００の動作を示すフローチャートである。
【００３２】
ステップ８１０では、ＶＭ２００への仮想ボリューム割当て要求を受付ける。要求元は、入力装置１
８０か、あるいは、管理サーバ２９０である。ここでは仮想ボリュームのサイズも受け取る。さらに、仮想ボリュームの属性として、ボリュームの信頼性を示す冗長レベルや、ボリュームを丸ごと割り当てるのかどうか、といった情報も受取ることができる。
【００３３】
続いて、ステップ８２０では、ストレージ装置３００内のボリュームのうち、ＶＭ２００からアクセス可能なボリュームを絞り込む。このとき、図４に示すボリューム管理情報４００を用いる。
【００３４】
ここで、ボリューム管理情報４００について説明する。ボリューム管理情報４００は、ストレージ装置内のボリュームを管理するテーブルである。ボリューム管理情報４００は、仮想化機構２１０によりメモリ１４０上に作成され、不揮発メモリ１５０に保存される。フィールド４１０〜４３０およびフィールド４６０の情報は、仮想化機構２１０が管理サーバ２９０からの要求コマンドを用いて、ストレージ管理インタフェース３５３からストレージ装置３００にボリューム情報３７０を問合わせることにより、入手される。フィールド４４０とフィールド４５０の初期値は、仮想ボリュームが割り当てられていないことを示す値である。
【００３５】
ストレージ装置番号フィールド４１０には、ストレージ装置３００を識別する情報を格納する。ボリューム番号フィールド４２０には、ストレージ装置３００内のボリュームを識別する情報を格納する。ポート番号フィールド４３０は、ボリュームへのアクセスパス上のポートを特定する情報を格納する。使用状況フィールド４４０は、仮想ボリュームを割り当てているか否か示す情報を格納する。仮想ボリュームを割り当てていないときは、空きを示す情報を保持する。仮想ボリュームを割り当てた時は、仮想ボリュームを識別する情報を格納し、ボリューム管理情報４００にエントリを追加し、位置情報フィールド４５０に仮想ボリュームの位置情報を、また、サイズフィールド４６０に仮想ボリュームのサイズを格納する。サイズフィールド４６０は、使用状況フィールド４４０が「空き」を示しているときは、ボリュームサイズを格納しておき、仮想ボリュームを割り当てたときに、割当て分のサイズを差し引いた値に変更する。
【００３６】
上記ステップ８２０でアクセス可能なボリュームを絞り込むために、ボリューム管理情報４００に登録されたボリューム毎に、ボリュームセキュリティ情報３６０に登録されているアクセス可能なＷＷＮを調べる。そして、ＶＭ２００の仮想ＨＢＡ２３０が使用するＷＷＮがフィールド３４０に登録してあるボリュームを抽出する。
【００３７】
次に、ステップ８３０で、ステップ８１０の仮想ボリューム割当て要求コマンドにおいて仮想ボリュームを割り当てるボリュームの属性が要求されているかどうか、判定する。ここでの判定条件としては、ステップ８１０で、ボリュームの性質や、ボリューム丸ごとの要求、の指定があるかどうかである。属性指定があると判定すると、ステップ８４０に進む。一方、属性指定がないと判定すると、ステップ８５０に進む。
【００３８】
ステップ８４０では、ステップ８２０で抽出したボリュームの属性を調べ、属性指定条件を満たすボリュームのみに絞り込む。ボリュームの冗長化レベルが属性として指定されていたら、仮想化機構２１０がストレージ装置３００か管理サーバ２９０に、ボリュームの冗長化レベルを問い合わせる。尚、予め仮想化機構２１０がボリュームの属性を入手していれば、絞り込み処理が早くなる。
【００３９】
続いて、ステップ８５０では、絞り込まれたボリュームの空き領域を検索する。これには、ボリューム管理情報４００を用い、絞り込まれたボリュームに対応するサイズフィールド４６０の値をみる。
【００４０】
ステップ８６０では、空き領域が十分残っているボリュームを選択する。空き領域があるボリュームが複数見つかった場合には、そこから１つのボリュームに絞り込む。絞り込む条件としては、すでに割り当てられている仮想ボリューム数が少ないこと、空きサイズが大きいこと、又は空き領域が多数の非連続領域に分割されていないか等、を用いる。空き領域が十分あるボリュームが見つかると、ステップ８７０に進む。一方、条件に合うボリュームがないと判定すると、ステップ８７５に進み、仮想ボリュームの生成失敗を要求元に返す。
【００４１】
ステップ８７０では、ボリューム管理情報４００を更新する。ここで、新規生成した仮想ボリュームの情報を追加すべく、生成するボリュームを登録したストレージ装置番号フィールド４１０に対応する使用状況フィールド４４０に新規仮想ボリュームの識別情報を追加し、位置情報フィールド４５０に仮想ボリュームのボリューム内での先頭位置を追加し、サイズフィールド４６０に仮想ボリュームの容量を追加する。仮想ボリュームと生成したことによって、ボリュームの空き容量が減ったので、使用状況フィールド４４０の「空き」に対応するサイズフィールド４６０の値を減らす。仮想ボリュームが複数の区画に分割されているときには、フィールド４５０とフィールド４６０が複数エントリ登録される。例えば、仮想ボリューム３２３をボリューム３１３に割り当てる場合、更新後のボリューム管理情報４００内のボリューム３１３のエントリを、図４の情報４０１に示す。ここでは、先頭位置ブロックＢＬＫ５で示すサイズ２０の仮想ボリューム３１と、先頭位置ブロックＢＬＫ３で示すサイズ２０の仮想ボリューム３２を割当て、空き領域がサイズ６０に減ったことを示す。
【００４２】
続いて、ステップ８８０では、図６に示すボリューム管理情報６００を、新規生成した仮想ボリューム情報のエントリを追加して更新する。
【００４３】
ここで、仮想ボリューム情報６００について説明する。仮想ボリューム情報６００は、仮想化機構２１０がメモリ１４０上に作成し、不揮発メモリ１５０内にＶＭ定義情報２６０とともに保存するＶＭ２００の仮想ボリュームを管理するテーブルである。また、ＨＢＡ１１０内のアダプタファームウェア５００内にも、仮想ボリューム情報６００のコピーである仮想ボリューム情報６００’を置く。
【００４４】
仮想ボリュームフィールド６１０には、ＶＭ２００が仮想ボリュームを識別するための情報を格納する。ストレージ装置番号フィールド６２０には、ストレージ装置３００を識別する情報を格納する。ボリューム番号フィールド６３０には、ストレージ装置３００内のボリュームを識別する情報を格納する。ポート番号フィールド６４０は、ボリュームへのアクセスパス上のポートを特定する情報を格納する。サーバ情報フィールド６５０は、仮想ボリュームを割り当てた仮想化機構２１０を特定する情報を格納する。仮想化機構２１０を識別する情報として、後から、別サーバからの問い合わせを受けられるように、インターネットアドレスを用いる。位置情報フィールド６６０には仮想ボリュームの位置情報を、また、サイズフィールド６７０には仮想ボリュームのサイズを格納する。仮想ボリュームが2つ以上の非連続な領域に割り当てられている場合には、位置情報フィールド６６０とサイズフィールド６７０に領域数分の情報を格納する。ＷＷＮフィールド６８０には、仮想ボリュームにアクセスする仮想ＨＢＡ２３０に割り当てた仮想ＷＷＮの値を格納する。
【００４５】
最後に、ステップ８９０で、要求元に、ＶＭ２００への仮想ボリュームの割当てが完了したことを報告する。
【００４６】
以上のように、実施例１のサーバでは、仮想化機構２１０がストレージ装置内のボリュームを管理するボリューム管理情報４００を有し、このボリューム管理情報４００によりボリューム３１１、３１２、３１３、３１４の使用領域／未使用領域（空き領域）およびボリュームサイズを管理しているので、ＶＭ２００への仮想ボリューム割当て要求を受けた仮想化機構２１０は、ボリューム管理情報４００を参照し、要求を満たす未使用領域（空き領域）を見つけることができるので、ＶＭ２００に仮想ボリュームを割り当てることが可能となる。
【００４７】
次に、ＶＭ２００上から仮想ボリュームにアクセスするための手順について説明する。図９は、仮想化機構２１０の仮想ボリューム情報提供部９００と、ＶＭ２００上の仮想ボリュームドライバ２４０の動作を示すフローチャートである。
【００４８】
ステップ９１０では、仮想ボリューム情報提供部９００が、ＶＭ２００に仮想ボリューム情報を送信する要求を受付ける。要求元は、入力装置１８０か、管理サーバ２９０か、あるいはＶＭ２００起動処理を実行中の仮想化機構２１０である。
【００４９】
続いて、ステップ９２０では、ＶＭ２００用の仮想ボリューム情報を、不揮発メモリ１５０内の仮想ボリューム情報６００から取得する。
【００５０】
次にステップ９３０で、仮想ボリュームドライバ２４０に、仮想ボリューム情報６００を渡し、ステップ９４０で、仮想ボリュームドライバ２４０における仮想ボリューム準備処理の完了待ちになる。
【００５１】
仮想ボリュームドライバ２４０では、ステップ１９１０で仮想ボリューム情報６００を受取ると、ステップ１９２０で、仮想ボリューム毎の位置情報を抽出する。
【００５２】
そして、ステップ１９３０では、仮想ボリュームに対応付けられた仮想ＷＷＮ６８０が割り当てられた仮想ＨＢＡ２３０を、仮想ボリュームドライバ２４０内にボリュームにアクセス要求を出すときの、ストレージ装置内のボリュームでアクセスするデータブロックを特定する情報とするために、仮想ボリュームに対応付けて、記憶する。
【００５３】
なお、上記ステップ１９２０で、仮想ボリュームが複数の非連続領域の区画から成るときには、区画毎に先頭位置とサイズを管理してもよい。
【００５４】
次に、ステップ１９４０では、仮想ボリュームドライバ２４０が、仮想ボリュームへのアクセス準備が整ったことを、仮想化機構２１０の仮想ボリューム情報提供部９００に返答する。
【００５５】
仮想ボリューム情報提供部９００は、ステップ９５０で、ステップ１９４０からの報告を受けると処理を終了する。
【００５６】
一方、仮想ボリュームドライバ２４０は、ステップ１９５０で、ＶＭ２００上のプログラムからの仮想ボリュームのアクセスを待つ。
【００５７】
ステップ１９６０で、仮想ボリュームへのアクセス要求を受けると、ステップ１９７０で、仮想ボリュームの位置情報を、ボリューム上の領域の位置情報に、変換する。図１４に、ボリューム上のアドレスに変換するための計算方法を示す。すなわち、ボリュームの先頭から仮想ボリュームの先頭までの距離と、仮想ボリュームの先頭位置から仮想ボリューム内アクセスブロックまでの距離を加えたものが、ボリューム内のアクセスブロックの位置になる。仮想ボリュームが複数の非連続領域の区画から成るときには、仮想ボリュームの先頭位置と各区画のサイズに合わせる。仮想ボリュームの1回のアクセスが、複数区画のアクセスになる場合には、アクセス数を区画数まで増やす。
【００５８】
尚、ステップ１９６０で受けた仮想ボリュームアクセス要求が、仮想ボリュームからのブート処理であったときは、ステップ１９７０で、仮想ボリュームが割り当てられた領域の先頭位置をアクセスするアクセス要求に変換する。
【００５９】
最後に、ステップ１９８０で、アダプタファームウェア５００内の仮想ボリューム制御部１０００に処理を移す。
【００６０】
以上により、ＶＭ２００から仮想ボリュームを割り当てたボリュームにアクセスする用意ができた。尚、仮想ボリュームドライバ２４０の処理を、ＨＢＡ１１０のアダプタファームウェア５００で実行してもよい。
【００６１】
次に、仮想ボリュームへのアクセスを制御する手順について説明する。図１０は、ＨＢＡ１１０のアダプタファームウェア５００内の仮想ボリューム制御部１０００の動作を示すフローチャートである。
【００６２】
ステップ１０１０では、仮想ボリューム制御部１０００は、アクセス先のボリューム情報を、ＶＭ２００上のプログラムからの、仮想ボリュームのアクセス要求を受けた仮想ボリュームドライバ２４０から取得する。ここで取得するボリューム情報とは、ボリュームを識別する情報と、アクセス方法を表す命令である。
【００６３】
続いて、ステップ１０２０では、アクセス先のボリュームが、仮想ボリュームを割り当てたボリュームかどうかを判定する。この判定では、アダプタファームウェア５００内の仮想ボリューム情報６００’を用いる。ここで、仮想ボリューム用ボリュームではないと判定すると、ステップ１０７０に進み、通常のボリュームアクセスとして、特殊命令によるアクセスかどうかや、アクセス領域を判定せずに、ボリュームアクセスを実行する。ステップ１０２０で、仮想ボリューム用ボリュームへのアクセスだと判定すると、ステップ１０３０に進む。
【００６４】
ステップ１０３０では、アクセス方法を表す命令が、データ入出力要求かどうかを判定する。この判定では、アダプタファームウェア５００内の特殊命令制御情報５１０を用いる。
【００６５】
ここで、図５を用いて、特殊命令制御情報５１０について説明する。特殊命令制御情報５１０は、アダプタファームウェア５００が内部に生成および保持する情報テーブルであり、特殊命令フィールド５２０と、制御方法指示フィールド５３０から成る。命令フィールド５２０の命令１に対応する制御方法指示フィールド５３０には、ストレージ装置３００内のボリュームにアクセス可能であることが登録されている。命令１は、例えば、ボリュームへの出力命令である。
【００６６】
命令フィールド５２０の命令２に対応する制御方法指示フィールド５３０には、実行不可のエラーを応答する指示が登録されている。命令２は、例えば、ボリュームの排他制御用ロック命令である。
【００６７】
命令フィールド５２０の命令３に対応する制御方法指示フィールド５３０には、ボリュームにアクセスすることなく正常応答することが登録されている。
【００６８】
ステップ１０３０で、特殊命令制御情報５１０の命令１で示すアクセス方法だと判定すると、ステップ１０４０に進む。
【００６９】
ステップ１０４０では、ボリュームにアクセスする領域が、アクセス元のＶＭ２００の仮想ＷＷＮに対応する仮想ボリュームの領域内かどうかを判定する。この判定には、アダプタファームウェア５００内の仮想ボリューム情報６００’を用いる。また、アクセスするデータサイズと、仮想ボリュームの領域サイズとを比較し、アクセスするデータがすべて仮想ボリュームの領域内に納まるかどうかどうかを調べる。
【００７０】
ステップ１０４０で、仮想ボリューム領域外へのアクセスする要求であると判定すると、ステップ１０８０に進み、エラーを返す。一方、仮想ボリュームの領域内に納まると判定すると、ステップ１０７０に進み、ボリュームをアクセスする。
【００７１】
上記ステップ１０３０で、特殊命令制御情報５１０の命令１で示すアクセス方法ではないと判定すると、ステップ１０５０に進む。ステップ１０５０では、特殊命令制御情報５１０を用い、ＶＭ２００が要求するアクセス方法に合致する特殊命令フィールド５２０の命令を抽出する。
【００７２】
続いて、ステップ１０６０で、抽出した特殊命令に対応する制御方法指示に従い、ストレージ装置３００内のボリュームにアクセスすることなくＶＭ２００に応答を返す。
【００７３】
以上により、ＶＭ２００から仮想ボリュームを割り当てたボリュームにアクセスすることができた。尚、仮想ボリュームドライバ２４０の処理を、ＨＢＡ１１０のアダプタファームウェア５００で実行する場合には、ステップ１０４０で仮想ボリューム内かどうかを判定するのではなく、図９のステップ１９６０とステップ１９７０を実行する。また、ストレージ装置３００から、ボリュームにアクセスした結果が戻ってきた時、戻りデータ内に、ボリュームのアクセス位置情報が含まれているときには、仮想ボリュームの先頭位置からの位置情報に換算して、位置情報を変更して、ＶＭ２００にデータを戻す。この換算にも、アダプタファームウェア５００内の仮想ボリューム情報６００’を用いる。
【００７４】
以上説明したように、本実施例では、仮想ボリューム割当て部８００が、ボリューム管理情報４００を用いて、ＶＭが要求したサイズの仮想ボリュームを、仮想化機構がストレージ装置内のボリュームに割り当ててＶＭに与えることができる。
【００７５】
また、ＶＭから仮想ボリュームにアクセスするときは、仮想ボリュームドライバまたはアダプタファームウェアが、仮想ボリューム情報６００を用いて、仮想ボリューム上でのアクセス先のアドレスを、ボリューム上でのアクセス先となるアドレスに変換することができる。
【００７６】
このように処理することにより、サーバ管理者が指定したサイズの仮想ディスクボリュームを仮想計算機に割当て、仮想計算機から仮想ディスクボリュームに、ハイパーバイザの介在なしにアクセスすることができる。
【実施例２】
【００７７】
実施例２は、実施例１のサーバ１００が、図７に示すシステム構成で複数連なり、ＶＭ２００が異なるサーバ上に移動するときに、移動元ＶＭから移動先ＶＭに仮想ボリュームを引き継ぐ仮想化機構２１０および２１１である。
【００７８】
図１に示すように、仮想化機構２１０には、ＶＭ移動管理部１１００があり、ＶＭ２００を異なるサーバ１０１に移動させる機能がある。ＶＭ２００に割り当てた仮想ボリュームを、移動先のＶＭ２０１に割当てる手順について説明する。
【００７９】
図１１は、仮想化機構２１０と仮想化機構２１１のＶＭ移動管理部１１００との動作を示すフローチャートである。
【００８０】
ステップ１１１０は、ＶＭ移動要求を受取る。ここでは、移動元と移動先のサーバ情報と、移動するＶＭの識別情報を取得する。
【００８１】
次に、ステップ１１２０で、自身が動作しているサーバが、ＶＭの移動元か、移動先になるのかを判定する。移動元サーバ１００ならば、ステップ１１３０に進み、ＶＭ２００の定義情報２６０を、移動先サーバ１０１の仮想化機構２１１に渡す。
【００８２】
また、ステップ１１４０でＶＭ２００を停止し、ステップ１１５０でＶＭ定義情報２６０を不揮発メモリ１５０から削除する。
【００８３】
最後に、ステップ１１６０で、仮想ボリュームを割り当てたＶＭの移動先のサーバ情報を保存する。保存先は、不揮発メモリ１５０内か、管理サーバ２９０内である。
【００８４】
一方、自身が動作しているサーバが移動先サーバ１０１ならば、ステップ１１３５に進み、ＶＭ２００の定義情報２６０を、移動元サーバ１００から受取る。ここで受取ったＶＭ定義情報２６０には、仮想ボリューム情報６００が含まれる。
【００８５】
続くステップ１１３７で、ＨＢＡ１１１内のアダプタファームウェア５００に、ＶＭ２０１の識別情報と、仮想ボリューム情報６００を渡す。アダプタファームウェア５００は、これらの情報を保存する。
【００８６】
続いて、ステップ１１４５でＶＭ２０１を開始し、ステップ１１５５でＶＭ定義情報２６０を不揮発メモリ１５０に保存する。ＶＭ２０１を開始するときには、ＶＭ２００の仮想ボリュームドライバ２４０がＶＭ２０１にそのままコピーされているので、ＶＭ２０１開始前に、仮想化機構２１１から仮想ボリュームドライバ２４０を改めて設定する必要がない。また、ＨＢＡ１１１内のアダプタファームウェア５００の仮想ボリューム制御部１０００は、ステップ１１３７で格納したＶＭ２０１の識別情報と仮想ボリューム情報６００を用いて、ボリュームにアクセスするまでの一連の制御が可能である。
【００８７】
最後に、ステップ１１６５で、仮想ボリュームを割り当てたＶＭの移動先のサーバ情報を保存する。保存先は、不揮発メモリ１５０内か、管理サーバ２９０内である。
【００８８】
尚、ステップ１１４０における移動元ＶＭ２００の停止と、ステップ１１４５における移動先ＶＭ２０１の開始は、同期を取って進めることになるが、ここでは詳細説明を割愛する。
【００８９】
このように処理（特にステップ１１３５，ステップ１１３７）することにより、ＶＭ定義情報とともに仮想ボリューム情報６００が移動先サーバにコピーされるとともに、仮想ボリューム情報６００がＨＢＡ内にもコピーしてからＶＭを開始するため、ＶＭ移動サーバ管理者が指定したサイズの仮想ディスクボリュームを割り当てた仮想計算機を、異なるサーバ上に移動しても、仮想計算機から仮想ディスクボリュームに、ハイパーバイザの介在なしにアクセスすることができる。
【実施例３】
【００９０】
実施例３は、実施例１のストレージ装置３００が、図７に示すシステム構成で複数連なり、仮想ボリュームを異なるボリューム上に移動させるときに、ＶＭ２００に移動先の仮想ボリュームを割り当てる仮想化機構２１０である。
【００９１】
図１に示すように、仮想化機構２１０には、仮想ボリューム移動部１２００があり、仮想ボリューム３２０を異なるボリューム３１０内に移動させる機能を持つ。ＶＭ２００に割り当てた仮想ボリューム３２０を、異なるボリューム３１０内に割当てる手順について説明する。
【００９２】
図１２は、仮想化機構２１０の仮想ボリューム移動部１２００の動作を示すフローチャートである。
【００９３】
ステップ１２１０では、仮想ボリューム移動要求を受取る。ここでは、移動元の仮想ボリューム識別情報と、移動先のボリューム識別情報を取得する。
【００９４】
次に、ステップ１２２０で、移動する仮想ボリュームが割り当てられているＶＭ２００が、サーバ１００内に存在するかどうかを判定する。これには、サーバ１００上で定義されているＶＭの仮想ボリューム情報６００を調べる。移動する仮想ボリュームが、サーバ１００内のＶＭ２００に割り当てられていない時は、サーバ１０１内のＶＭ２０１に移動して、ＶＭ２０１に割り当てられている場合が考えられるが、この場合には、ステップ１２３５で、エラー終了とする。この場合は、別途サーバ１０１が移動要求を受取ることにより、移動処理を遂行する。
【００９５】
移動する仮想ボリュームが、サーバ１００上のＶＭ２００に割り当てられている場合には、ステップ１２３０に進み、仮想ボリュームが割り当てられているＶＭ２００が実行中かどうかを判定する。ＶＭ２００が実行中ならば、ステップ１２３５で、エラー終了とする。この場合は、ＶＭ２００の実行が完了した後に、改めて移動要求を受取ることで、移動処理を遂行する。
【００９６】
仮想ボリュームが割り当てられているＶＭ２００が実行中でないならば、ステップ１２４０に進み、移動先のボリューム３１０内の空き領域を割当て、仮想ボリューム３２０のデータをコピーする。
【００９７】
続いて、ステップ１２５０で、不揮発メモリ１５０内の仮想ボリューム情報６００を更新する。ここでは、仮想ボリュームフィールド６１０に対応したストレージ装置番号フィールド６２０と、ボリューム番号フィールド６３０と、ポート番号フィールド６４０と、位置情報フィールド６６０を、移動先ボリューム３１０に合わせて更新する。空き領域を割り当てる区画が、移動前の区画のサイズと異なっているときには、サイズフィールド６７０も更新する。このとき、空き領域を割り当てる区画数が、移動前の区画数と異なる場合もある。また、ＨＢＡ１１０内に、仮想ボリューム情報６００’を持たせている場合には、アダプタファームウェア５００内の仮想ボリューム制御部１０００に通知して、ＨＢＡ１１０内の仮想ボリューム情報６００’も更新する。
【００９８】
こうして、新領域を記録した仮想ボリューム情報６００が保存されたため、次にＶＭ２００を起動するときに、仮想ボリューム情報提供部９００の処理が、仮想ボリュームの新領域の情報を仮想ボリュームドライバ２４０に送信する。こうして、仮想ボリュームドライバ２４０は、仮想ボリュームのアクセス要求を受けると、新領域に位置情報を変換することができる。
【００９９】
次に、ステップ１２６０で、仮想ボリュームを割り当てていたボリュームを管理しているサーバが、自サーバ１００かどうか判定する。これには、仮想ボリューム情報６００のサーバ情報フィールド６５０に登録されているサーバ情報と、自サーバ１００を比較する。
【０１００】
ボリューム管理サーバが自サーバ１００のときは、ステップ１２７０に進み、ボリューム管理情報４００を更新する。ここでは、移動前と移動後のボリュームについて、使用状況フィールド４４０と、位置情報フィールド４５０とサイズフィールド４６０を更新する。移動元のボリュームでは、仮想ボリュームの記録を消去し、空き領域のサイズが増える。移動先のボリュームでは、仮想ボリュームの情報を記録し、空き領域のサイズが減る。
【０１０１】
一方、ステップ１２６０で、ボリューム管理サーバが自サーバ１００ではないと判定したときは、ステップ１２８０に進み、サーバ情報フィールド６５０に記録してあるサーバの仮想化機構２１０に、ボリューム管理情報４００の更新を依頼する。この依頼を受けた仮想化機構２１０は、依頼と同時に受取った仮想ボリュームの情報を用いて、ステップ１２７０と同様の処理を実行する。
【０１０２】
このように処理することにより、仮想ボリュームの移動とともに仮想ボリューム情報６００とボリューム管理情報４００が更新されるため、サーバ管理者が指定したサイズの仮想ディスクボリュームを、異なるボリューム上の新領域に移動しても、仮想計算機から仮想ディスクボリュームに、ハイパーバイザの介在なしにアクセスすることができる。
【実施例４】
【０１０３】
実施例４は、仮想ボリュームを割り当てていたＶＭが、仮想ボリュームの割り当てを解除し、ボリューム上の仮想ボリューム割当て領域を空き領域に戻す仮想化機構２１０である。
【０１０４】
図１に示すように、仮想化機構２１０には、仮想ボリューム解除部１３００があり、仮想ボリューム３２０のＶＭ２００への割当てを解除する機能を持つ。ＶＭ２００に割り当てた仮想ボリューム３２０を、解除する手順について説明する。
【０１０５】
図１３は、仮想化機構２１０の仮想ボリューム解除部１３００の動作を示すフローチャートである。
【０１０６】
ステップ１３１０では、仮想ボリューム解除要求を受取る。ここでは、仮想ボリューム識別情報を取得する。
【０１０７】
次に、ステップ１３２０で、解除する仮想ボリュームが割り当てられているＶＭ２００が、サーバ１００内に存在するかどうかを判定する。これには、サーバ１００上で定義されているＶＭの仮想ボリューム情報６００を調べる。移動する仮想ボリュームが、サーバ１００内のＶＭ２００に割り当てられていない時は、サーバ１０１内のＶＭ２０１に移動して、ＶＭ２０１に割り当てられている場合が考えられるが、この場合には、ステップ１３３５で、エラー終了とする。この場合は、別途サーバ１０１が解除要求を受取ることにより、解除処理を遂行する。
【０１０８】
解除する仮想ボリュームが、サーバ１００上のＶＭ２００に割り当てられている場合には、ステップ１３３０に進み、仮想ボリュームが割り当てられているＶＭ２００が実行中かどうかを判定する。ＶＭ２００が実行中ならば、ステップ１３３５で、エラー終了とする。この場合は、ＶＭ２００の実行が完了した後に、改めて解除要求を受取ることで、解除処理を遂行する。
【０１０９】
仮想ボリュームが割り当てられているＶＭ２００が実行中でないならば、ステップ１３４０に進み、不揮発メモリ１５０内の仮想ボリューム情報６００の対応する仮想ボリューム情報を削除する。また、ＨＢＡ１１０内に、仮想ボリューム情報６００を持たせている場合には、アダプタファームウェア５００内の仮想ボリューム制御部１０００に通知して、ＨＢＡ１１０内の仮想ボリューム情報６００も更新する。
【０１１０】
こうして、指定の仮想ボリューム情報が削除された仮想ボリューム情報６００が保存されたため、次にＶＭ２００を起動するときに、仮想ボリューム情報提供部９００は、削除した仮想ボリュームの情報を仮想ボリュームドライバ２４０に送信しない。こうして、仮想ボリュームドライバ２４０は、割当てを解除した仮想ボリュームのアクセス要求を受けつけないようになる。
【０１１１】
ステップ１３６０では、仮想ボリュームを割り当てていたボリュームを管理しているサーバが自サーバ１００かどうか判定する。これには、仮想ボリューム情報６００のサーバ情報フィールド６５０に登録されているサーバ情報と、自サーバ１００を比較する。
【０１１２】
ボリューム管理サーバが自サーバ１００のときは、ステップ１３７０に進み、ボリューム管理情報４００を更新する。ここでは、仮想ボリュームの領域が割り当てられていたボリュームについて、使用状況フィールド４４０と、位置情報フィールド４５０とサイズフィールド４６０を更新する。すなわち、仮想ボリュームの記録を消去し、空き領域のサイズが増える。
【０１１３】
一方、ステップ１３６０で、ボリューム管理サーバが自サーバ１００ではないと判定したときは、ステップ１３８０に進み、サーバ情報フィールド６５０に記録してあるサーバの仮想化機構２１０に、ボリューム管理情報４００の更新を依頼する。この依頼を受けた仮想化機構２１０は、依頼と同時に受取った仮想ボリュームの情報を用いて、ステップ１３７０と同様の処理を実行する。
【０１１４】
このように処理することにより、仮想ボリュームの解除とともに、仮想ボリューム情報６００とボリューム管理情報４００が更新されるため、サーバ管理者が指定したサイズの仮想ディスクボリュームの割り当てを解除した後は、仮想計算機から仮想ディスクボリュームに、ハイパーバイザの介在なしにアクセスを拒否することができる。
【０１１５】
以上、本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は前記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１１６】
１００ないし１０１・・・サーバ
１１０ないし１１１・・・ＨＢＡ、１２０ないし１２１・・・ＮＩＣ
１５０・・・不揮発メモリ
１９０・・・出力装置、１８０・・・入力装置、１４０・・・メモリ、１３０・・・ＣＰＵ
２００・・・ＶＭ１、２０１・・・ＶＭ２
２１０ないし２１１・・・仮想化機構
２３０・・・仮想ＨＢＡ、２２０・・・仮想ＮＩＣ
２４０・・・仮想ボリュームドライバ
２５０・・・ネットワークスイッチ
２９０・・・管理サーバ
３００・・・ストレージ装置
３１０ないし３１４・・・ディスクボリューム
３２０ないし３２４・・・仮想ボリューム
３５１ないし３５２・・・ポート、３５３・・・管理インタフェース
３６０・・・ボリュームセキュリティ情報
４００・・・ボリューム管理情報
５００・・・アダプタファームウェア
５１０・・・特殊命令制御情報
６００・・・仮想ボリューム情報
７００・・・ストレージスイッチ
８００・・仮想ボリューム割当て部
９００・・・仮想ボリューム情報提供部
１０００・・・仮想ボリューム制御部
１１００・・・ＶＭ移動管理部
１２００・・・仮想ボリューム移動部
１３００・・・仮想ボリューム解除部
【図１】
0005492731.tif 000002
【図２】
0005492731.tif 000003
【図３】
0005492731.tif 000004
【図４】
0005492731.tif 000005
【図５】
0005492731.tif 000006
【図６】
0005492731.tif 000007
【図７】
0005492731.tif 000008
【図８】
0005492731.tif 000009
【図９】
0005492731.tif 000010
【図１０】
0005492731.tif 000011
【図１１】
0005492731.tif 000012
【図１２】
0005492731.tif 000013
【図１３】
0005492731.tif 000014
【図１４】
0005492731.tif 000015