(57)【要約】  計算機システムでは、ストレージシステムがＴｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇ技術によるストレージレベル仮想ボリュームを仮想マシンが定義された物理サーバに提供する。そしてストレージシステムが管理するストレージレベル仮想ボリュームの変換情報に基いて、ストレージシステムは削除指定された仮想マシンがアクセスするストレージレベル仮想ボリュームに対応する論理ボリュームのエリアを開放する。
2011096014.tif 000002
【特許請求の範囲】
【請求項１】
記憶デバイスを含み、ストレージレベル仮想ボリュームを提供するストレージシステムと、
前記ストレージシステムに接続し、仮想計算機を提供するサーバ計算機と、
を有する計算機システムであって、
前記ストレージシステムは、前記記憶デバイスの記憶エリアを第一の管理単位で分割して複数の低レベルストレージエリアとして管理し、前記ストレージレベル仮想ボリュームのブロックアドレス空間を、前記第一の管理単位と関連したサイズの第二の管理単位で分割して、複数の低レベルアドレスエリアとして管理し、前記低レベルアドレスエリアに割り当てられた前記低レベルストレージエリアを示す低レベルエリア変換情報を格納し、
前記サーバ計算機は、前記仮想計算機にサーバレベル仮想ボリュームを提供し、前記ストレージレベル仮想ボリュームを第三の管理単位で分割して複数の高レベルストレージエリアとして管理し、前記サーバレベル仮想ボリュームのブロックアドレス空間を、前記第三の管理単位と関連した第四の管理単位で分割して、複数の高レベルアドレスエリアとして管理し、前記高レベルアドレスエリアに割り当てられた前記高レベルストレージエリアを示す高レベルエリア変換情報を格納し、
前記サーバ計算機は、前記仮想計算機を指定したＶＭ削除要求を受信し、前記指定された仮想計算機に提供されているサーバレベル仮想ボリュームに含まれる前記高レベルアドレスエリアに割当てられた所定の高レベルストレージエリアを特定し、前記所定の高レベルストレージエリアのブロックアドレス範囲を指定したクリア要求を前記ストレージシステムへ送信し、
前記ストレージシステムは、前記クリア要求で指定されたブロックアドレス範囲に含まれる所定の低レベルアドレスエリアを特定し、前記所定の低レベルアドレスエリアに割当てられた所定の低レベルアドレスエリアを開放する、
ことを特徴とした計算機システム。
【請求項２】
請求項１記載の計算機システムであって、
前記第二の管理単位は、前記第一の管理単位と同一サイズ、または前記第一の管理単位のサイズから、前記低レベルアドレスエリアに含まれる制御情報のサイズを引いたサイズであり、
前記第四の管理単位は、前記第三の管理単位と同一サイズ、または前記第三の管理単位のサイズから、前記低レベルアドレスエリアに含まれる制御情報のサイズを引いたサイズである、
ことを特徴とした計算機システム。
【請求項３】
請求項２記載の計算機システムであって、
前記第二の管理単位のサイズは、前記第三の管理単位のサイズとは異なり、
前記所定の低レベルアドレスエリアは、前記クリア指示で指定されたブロックアドレス範囲に完全包含されたエリアである、
ことを特徴とした計算機システム。
【請求項４】
請求項３記載の計算機システムであって、
前記ストレージシステムは、前記低レベルアドレスエリアを除く前記クリア指示で指定されたブロックアドレス範囲を、所定のクリア値でデータをクリアする、
ことを特徴とした計算機システム。
【請求項５】
請求項４記載の計算機システムであって、
前記ストレージシステムは、値が全て前記所定のクリア値である前記低レベルアドレスエリアを特定し、当該低レベルアドレスエリアに割当てられた前記低レベルストレージエリアを開放し、
前記ストレージシステムは、開放された前記所定の低レベルアドレスエリア内のアドレス範囲を指定したリード要求に応じて、前記所定のクリア値を前記サーバ計算機に送信する、
ことを特徴とした計算機システム。
【請求項６】
請求項５記載の計算機システムであって、
前記ＶＭ削除要求で指定される前記仮想計算機は複数である、
ことを特徴とした計算機システム。
【請求項７】
請求項６記載の計算機システムであって、
前記計算機システムは前記サーバ計算機に接続した管理サーバをさらに有し、前記管理サーバは削除した仮想計算機の識別子と、前記仮想計算機の削除によって開放した低レベルストレージエリアの容量と、を表示する、
ことを特徴とした計算機システム。
【請求項８】
記憶デバイスと、
前記記憶デバイス及び仮想計算機を提供するサーバ計算機と接続し、ストレージレベル仮想ボリュームを提供するストレージコントローラと、
を有するストレージシステムであって、
前記ストレージコントローラは、前記記憶デバイスの記憶エリアを第一の管理単位で分割して複数の低レベルストレージエリアとして管理し、前記ストレージレベル仮想ボリュームのブロックアドレス空間を、前記第一の管理単位と関連したサイズの第二の管理単位で分割して、複数の低レベルアドレスエリアとして管理し、前記低レベルアドレスエリアに割り当てられた前記低レベルストレージエリアを示す低レベルエリア変換情報を格納し、
前記サーバ計算機は、前記仮想計算機にサーバレベル仮想ボリュームを提供し、前記ストレージレベル仮想ボリュームを第三の管理単位で分割して複数の高レベルストレージエリアとして管理し、前記サーバレベル仮想ボリュームのブロックアドレス空間を、前記第三の管理単位と関連した第四の管理単位で分割して、複数の高レベルアドレスエリアとして管理し、前記高レベルアドレスエリアに割り当てられた前記高レベルストレージエリアを示す高レベルエリア変換情報を格納し、
前記ストレージシステムは、ブロックアドレス範囲を指定したクリア要求を受信し、前記指定されたブロックアドレス範囲に含まれる所定の低レベルアドレスエリアを特定し、前記所定の低レベルアドレスエリアに割当てられた所定の低レベルアドレスエリアを開放し、
前記クリア要求は、前記サーバ計算機より送信され、
前記クリア要求で指定された前記ブロックアドレス範囲は、前記サーバ計算機によって前記仮想計算機を指定したＶＭ削除要求を受信し、前記指定された仮想計算機に提供されているサーバレベル仮想ボリュームに含まれる前記高レベルアドレスエリアに割当てられた所定の高レベルストレージエリアのブロックアドレス範囲である、
ことを特徴としたストレージシステム。
【請求項９】
請求項８記載のストレージシステムであって、
前記第二の管理単位は、前記第一の管理単位と同一サイズ、または前記第一の管理単位のサイズから、前記低レベルアドレスエリアに含まれる制御情報のサイズを引いたサイズであり、
前記第四の管理単位は、前記第三の管理単位と同一サイズ、または前記第三の管理単位のサイズから、前記低レベルアドレスエリアに含まれる制御情報のサイズを引いたサイズである、
ことを特徴としたストレージシステム。
【請求項１０】
請求項９記載のストレージシステムであって、
前記第二の管理単位のサイズは、前記第三の管理単位のサイズとは異なり、
前記所定の低レベルアドレスエリアは、前記クリア指示で指定されたブロックアドレス範囲に完全包含されたエリアである、
ことを特徴としたストレージシステム。
【請求項１１】
請求項１０記載のストレージシステムであって、
前記ストレージシステムは、前記低レベルアドレスエリアを除く前記クリア指示で指定されたブロックアドレス範囲を、所定のクリア値でデータをクリアする、
ことを特徴としたストレージシステム。
【請求項１２】
請求項１１記載のストレージシステムであって、
前記ストレージシステムは、値が全て前記所定のクリア値である前記低レベルアドレスエリアを特定し、当該低レベルアドレスエリアに割当てられた前記低レベルストレージエリアを開放し、
前記ストレージシステムは、開放された前記所定の低レベルアドレスエリア内のアドレス範囲を指定したリード要求に応じて、前記所定のクリア値を前記サーバ計算機に送信する、
ことを特徴としたストレージシステム。
【請求項１３】
請求項１２記載のストレージシステムであって、
前記ＶＭ削除要求で指定される前記仮想計算機は複数であり、
前記クリア要求で指定されたブロックアドレス範囲は、複数の前記仮想計算機に関連する、
ことを特徴としたストレージシステム。
【請求項１４】
記憶デバイスを含み、ストレージレベル仮想ボリュームを提供するストレージシステムと、
前記ストレージシステムに接続し、仮想計算機を提供するサーバ計算機と、
を有する計算機システムの管理方法であって、
前記ストレージシステムは、前記記憶デバイスの記憶エリアを第一の管理単位で分割して複数の低レベルストレージエリアとして管理し、前記ストレージレベル仮想ボリュームのブロックアドレス空間を、前記第一の管理単位と関連したサイズの第二の管理単位で分割して、複数の低レベルアドレスエリアとして管理し、前記低レベルアドレスエリアに割り当てられた前記低レベルストレージエリアを示す低レベルエリア変換情報を格納し、
前記サーバ計算機は、前記仮想計算機にサーバレベル仮想ボリュームを提供し、前記ストレージレベル仮想ボリュームを第三の管理単位で分割して複数の高レベルストレージエリアとして管理し、前記サーバレベル仮想ボリュームのブロックアドレス空間を、前記第三の管理単位と関連した第四の管理単位で分割して、複数の高レベルアドレスエリアとして管理し、前記高レベルアドレスエリアに割り当てられた前記高レベルストレージエリアを示す高レベルエリア変換情報を格納し、
前記サーバ計算機は、前記仮想計算機を指定したＶＭ削除要求を受信し、前記指定された仮想計算機に提供されているサーバレベル仮想ボリュームに含まれる前記高レベルアドレスエリアに割当てられた所定の高レベルストレージエリアを特定し、前記所定の高レベルストレージエリアのブロックアドレス範囲を指定したクリア要求を前記ストレージシステムへ送信し、
前記ストレージシステムは、前記クリア要求で指定されたブロックアドレス範囲に含まれる所定の低レベルアドレスエリアを特定し、前記所定の低レベルアドレスエリアに割当てられた所定の低レベルアドレスエリアを開放する、
ことを特徴とした管理方法。
【請求項１５】
請求項１４記載の管理方法であって、
前記第二の管理単位のサイズは、前記第三の管理単位のサイズとは異なり、
前記所定の低レベルアドレスエリアは、前記クリア指示で指定されたブロックアドレス範囲に完全包含されたエリアである、
ことを特徴とした管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムとサーバ計算機を含んだ計算機システムでの管理に関する。
【背景技術】
【０００２】
「Ｔｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇ技術」と呼ばれる、ストレージ容量の仮想化技術が知られている。Ｔｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇ技術は、例えば、特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許公報第７６１３８９６号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
サーバ計算機がサーバ仮想化プログラムによって仮想マシンを提供する場合、仮想マシンはより柔軟に生成及び削除が可能である。しかしその一方で、ストレージシステムによるＴｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇ技術で仮想ボリュームを提供する場合、仮想マシンの生成及び削除に連携したＴｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇの容量管理を容易に行うことができない。【０００５】
そこで、本発明の目的は、仮想マシンの生成及び削除に応じてＴｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇの容量管理を容易に行うことにある。
【課題を解決するための手段】
【０００６】
本発明の計算機システムでは、ストレージシステムがＴｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇ技術によるストレージレベル仮想ボリュームを仮想マシンが定義された物理サーバに提供する。そしてストレージシステムが管理するストレージレベル仮想ボリュームの変換情報に基いて、ストレージシステムは削除指定された仮想マシンがアクセスするストレージレベル仮想ボリュームに対応する論理ボリュームのエリアを開放する。
【発明の効果】
【０００７】
本発明によれば、仮想マシンの生成及び削除に応じたＴｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇの容量管理が容易になる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本発明の実施例１における計算機システムの構成を表す図である。
【図２】図２は、管理サーバ１０００のメモリ４０５０ｃが記憶する情報とプログラムの詳細を示す図である。
【図３】図３は、ストレージ制御プログラム２５００の構成を示す図である。
【図４】図４は、ストレージシステム２０００で行われるＴｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇを表す図である。
【図５】図５は、物理サーバ３０００で行われるＴｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇを表す図である。
【図６】図６は、ストレージレベルプール構成情報１４００を示すブロック図である。
【図７】図７は、ストレージレベル仮想ボリューム構成情報１５００を示すブロック図である。
【図８】図８は、ポート−ＬＵＮ対応情報１６００を示すブロック図である。
【図９】図９は、サーバレベルプール構成情報１７００を示すブロック図である。
【図１０】図１０は、サーバレベル仮想ボリューム構成情報１８００を示すブロック図である。
【図１１】図１１は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００を示すブロック図である。
【図１２】図１２は、初期設定情報１９１０を示すブロック図である。
【図１３】図１３は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率の表示画面を表す。
【図１４】図１４は、実施例１の管理プログラム１２００の行う処理のフローである。
【図１５】図１５は、図１４のステップＳ１０３の処理のフローである。
【図１６】図１６は、ストレージ構成変更処理のフローである。
【図１７】図１７は、コールバックインターフェースを用いた管理プログラムの行う処理を示すフローである。
【図１８】図１８は、管理プログラム１２００がコールバックインターフェースを備えている場合のストレージ構成変更処理のフローである。
【図１９】図１９は、コールバック処理のフローである。
【図２０】図２０は、図１７のステップＳ５０３の処理のフローである。
【図２１】図２１は、サーバレベルプール３２１０へのストレージレベル仮想ボリューム２２３０の設定、追加処理を表すフローである。
【図２２】図２２は、サーバ仮想化プログラムが仮想マシンからサーバレベル仮想ボリュームへのリード要求を受け付けた場合に行われる処理のフローである。
【図２３】図２３は、サーバ仮想化プログラムが仮想マシンからサーバレベル仮想ボリュームへのライト要求を受け付けた場合に行われる処理のフローである。
【図２４】図２４は、ストレージレベル仮想ボリュームからデータをリードする処理のフローである。
【図２５】図２５は、ストレージレベル仮想ボリューム２２３０へのデータのライト処理を表すフローの一部である。
【図２６】図２６は、ストレージレベルプール２２２０へのボリューム２２１０の追加する処理を表すフローである。
【図２７】図２７は、原因個所特定処理のフローである。
【図２８】図２８は、ストレージコントローラ２１０のメモリ４０５０ａが記憶する情報及びプログラムの詳細を示す図である。
【図２９】図２９は、物理サーバ３０００のメモリ４０５０ｂが記憶する情報とプログラムの詳細を示す図である。
【図３０】図３０は、ストレージレベルプール情報１１０００を示すブロック図である。
【図３１】図３１は、ストレージレベル仮想ボリューム情報１２０００を示すブロック図である。
【図３２】図３２は、ボリューム情報１３０００を示すブロック図である。
【図３３】図３３は、ストレージ内マッピング情報１４０００を示すブロック図である。
【図３４】図３４は、サーバレベルプール情報１５０００を示すブロック図である。
【図３５】図３５は、サーバレベル仮想ボリューム情報１６０００を示すブロック図である。
【図３６】図３６は、記憶領域の階層関係の一例を示す。
【図３７】図３７は、原因個所の表示画面の一例を示す。
【図３８】図３８は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率と空き容量率とが並べて表示された画面の一例を示す。
【図３９】図３９は、ストレージレベル仮想ボリューム２２３０へのデータのライト処理を表すフローの残りである。
【図４０】図４０は、サーバレベル仮想ボリューム３２２０へのデータのライト処理を表すフローの残りである。
【図４１】図４１は、仮想マシンを削除する模式図の第１の図である。
【図４２】図４２は、仮想マシンを削除する模式図の第２の図である。
【図４３】図４３は、仮想マシンを削除する模式図の第３の図である。
【図４４】図４４は、仮想マシンの削除処理を示すフロー図である。
【図４５】図４５は、仮想マシンの削除と容量とを表示する表示画面の図である。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照して、本発明の幾つかの実施例を説明する。なお、実施例の説明で用いる用語の定義は、以下の通りである。その他の用語については、一般的な定義に従うことができる。また、以下の説明において、コンピュータプログラムが行う処理は、実際には、そのコンピュータプログラムを実行するプロセッサによって行われる。
【００１０】
「レバレッジ率」は、物理記憶領域の容量に対する、その物理記憶領域に対応する仮想記憶領域の容量の比率である。本実施例では、複数種類のレバレッジ率がある。例えば、第１種のレバレッジ率は、ストレージレベルプールの容量に対する、そのストレージレベルプールに対応する一以上のサーバレベルプールの総容量の比率である。第２種のレバレッジ率は、ストレージレベルプールの容量に対する、そのストレージレベルプールに対応する一以上のサーバレベル仮想ボリュームの総容量の比率である。以下の説明では、特に、第２種のレバレッジ率のことを、「Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率」と言う。
【００１１】
「ボリューム」とは、一以上の物理記憶デバイス（例えば、ハードディスクドライブ或いはフラッシュメモリ）を基に提供される論理記憶領域（論理ボリューム）である。ボリュームは、例えば、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  （ｏｒ  Ｉｎｅｘｐｅｎｓｉｖｅ）  Ｄｉｓｋｓ）グループの記憶空間を基に提供される。ＲＡＩＤグループは、複数の物理記憶デバイスで構成されており、所定のＲＡＩＤレベルに従ってデータが格納される。
【００１２】
「ストレージレベル仮想ボリューム」とは、ストレージコントローラの提供する、仮想的なボリュームである。なお、必ずしも、ストレージレベル仮想ボリュームのエリア（記憶領域でもある。以後はこのエリアをストレージレベル仮想ボリュームアドレスエリア、またはローレベルアドレスエリア（ＬＬ−ＡＡ）と呼ぶことがある）の全てが、記憶デバイス又はボリュームの記憶領域（以後はこの記憶領域をローレベルストレージエリア（ＬＬーＳＡ）と呼ぶことがある）に割りあたっているとは限らない。具体的には、例えば、ストレージレベル仮想ボリュームの一部又は全部のエリア（ＬＬ−ＡＡ）は、初期的には、ストレージレベルプールに属する一以上のボリューム内のエリア（ＬＬ−ＳＡ）が割当てられていない。言い換えれば、初期的には、例えば、ストレージレベル仮想ボリュームの一部のエリア（ＬＬ−ＡＡ）には、ストレージレベルプールの一部のエリア（ＬＬ−ＳＡ＿が割当てられていても良い。ここで、「初期」とは、例えば、ストレージレベル仮想ボリュームが定義された直後、或いは、ストレージレベル仮想ボリュームが定義されて物理サーバからアクセス可能になった直後である。ストレージシステムは、ストレージレベル仮想ボリュームの容量を表すストレージレベル仮想ボリューム情報に基づいて、物理サーバにストレージレベル仮想ボリュームの容量を送信する。なお、ストレージシステム内部で管理される、ストレージレベル仮想ボリュームの容量と、ＳＣＳＩプロトコル等で物理サーバに送信される、ストレージレベル仮想ボリュームの容量との間では、データ構造などの表現形式が異なっても良いし、端数切捨てが行われる等により異なったりしてもよい。勿論、ストレージシステム内部で管理される、ストレージレベル仮想ボリュームの容量と、物理サーバに送信される、ストレージレベル仮想ボリュームの容量とが同じであっても良い。
【００１３】
「サーバ仮想化プログラム」とは、物理サーバの有する物理的なリソースを仮想化することにより、仮想サーバシステムを構築するプログラムである。サーバ仮想化プログラムは、例えば、ハイパバイザである。また、物理的なリソースは、例えば、プロセッサ（例えばマイクロプロセッサ）、記憶資源（例えばメモリ）、及び通信インターフェース装置（例えばＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ））である。
【００１４】
「仮想マシン」とは、サーバ仮想化プログラムにより提供される仮想的な計算機である。サーバ仮想化プログラムにより、一つの物理サーバ上で擬似的に複数の計算機が稼働しているようにシステムを構築できる。この擬似的な計算機の一つ一つが、仮想マシン（ＶＭと呼ぶ場合がある）である。仮想マシンでは、例えば、仮想的に、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）などのコンピュータプログラムが実行される。
【００１５】
「サーバレベルプール」とは、サーバ仮想化プログラムがストレージシステムから割当てられた一つ以上のストレージレベル仮想ボリュームから構築される記憶領域である。サーバレベルプールは、仮想マシンから、サーバレベル仮想ボリュームを経由して使用される。具体的には、仮想マシンからサーバレベル仮想ボリュームに対してデータが書き込まれる場合、そのデータの書込み先として指定するサーバレベル仮想ボリュームのエリア（以後はサーバレベル仮想ボリュームエリア、またはハイレベルアドレスエリア（ＨＬ−ＡＡ）と呼ぶことがある）に、サーバレベルプール（より正確にはサーバレベルプールに含まれるストレージシステムが提供するボリュームまたは仮想ボリューム）の一部のエリア（以後は、ハイレベルストレージエリア（ＨＬ−ＳＡ）と呼ぶことがある）が割当てられる。なお、仮想ボリュームがサーバレベルプールに含まれる場合は、ＨＬ−ＳＡはＬＬ−ＡＡと同じ実体を指し示す。しかし、後述のとおり管理単位が異なる。そして、割当てられた一部のエリア（ＨＬ−ＡＡ）に対応する、ストレージレベル仮想ボリューム内のエリア（ＨＬ−ＳＡ）を指定したライト要求が、物理サーバ（例えばその物理サーバで実行されるサーバ仮想化プログラム）から、そのストレージレベル仮想ボリュームを提供するストレージシステムに送信される。ストレージシステムのストレージコントローラは、そのライト要求に応答して、そのライト要求で指定されているエリア（ストレージレベル仮想ボリューム内のエリア（ＬＬ−ＡＡ））に、ストレージレベルプール内の一部のエリア（ＬＬ−ＳＡ）を割当て、割当てられたエリア（ＬＬ−ＡＡ）に、データを書き込む。なお、以後の説明で「ＬＬ−ＡＡにデータを書き込む」と説明した場合は、実際には、ＬＬ−ＡＡに対応するＬＬ−ＳＡに当該データを書き込むことを指している。さらに、以後の説明では「サーバレベルプールに含まれるストレージシステムが提供するボリュームまたは仮想ボリュームのエリア」という表現を省略して「サーバレベルプールのエリア」と表現することがある。
【００１６】
「サーバレベル仮想ボリューム」とは、サーバ仮想化プログラムによって構築される、仮想的なボリュームである。必ずしも、サーバレベル仮想ボリュームの記憶領域（ＨＬ−ＡＡ）の全てが物理的な記憶領域（ＨＬ−ＳＡ）に割りあたっているとは限らない。サーバレベル仮想ボリュームの記憶領域は、仮想マシンによりアクセスされる。
【００１７】
「ストレージレベルプール」とは、一以上のボリュームにより構築されるプールである。ストレージレベルプールの一部のエリア（ＬＬ−ＳＡ）が、ストレージレベル仮想ボリュームにおける、物理サーバからのライト先エリア（ＬＬ−ＡＡ）に割当てられる。ストレージレベルプールは、一以上のボリュームが属する複数のプールの集合（仮想的なプール）であっても良い。なお、以後の説明では「ストレージレベルプールに含まれるボリュームのエリア」という表現を省略して「ストレージレベルプールのエリア」と表現することがある。
【００１８】
図３６は、記憶領域の階層関係の一例を示す。なお、この図では、仮想マシンが「ＶＭ」と表されており、ボリュームが「ＶＯＬ」と表されており、ストレージレベルプールが、下位レベルのプールの略として「ＬＬＰ」と表されており、ストレージレベル仮想ボリュームが、下位レベルの仮想ボリュームの略として、「ＬＬ−ＶＶＯＬ」と表されており、サーバレベルプールが、上位レベルのプールの略として「ＨＬＰ」と略されており、サーバレベル仮想ボリュームが、上位レベルの仮想ボリュームの略として「ＨＬ−ＶＶＯＬ」と表されている。なお、このような表現方法は、他の図でも適宜採られている。
【００１９】
この例によれば、複数のストレージレベルプール（例えばストレージレベルプール１，２）があり、各ストレージレベルプールが基点となって、木構造のような記憶領域トポロジーが構成されている。記憶領域トポロジーの構成要素は、下位から順番に言えば、ストレージレベルプール、ストレージレベル仮想ボリューム、サーバレベルプール及びサーバレベル仮想ボリュームである。この例によれば、ストレージレベルプール１に、下記の記憶領域（Ａ）〜（Ｄ）：
（Ａ）ストレージレベル仮想ボリューム１及び２；
（Ｂ）ストレージレベル仮想ボリューム１及び２にそれぞれ対応するサーバレベルプール１及び２；
（Ｃ）サーバレベルプール１に対応するサーバレベル仮想ボリューム１（サーバレベルプール１からエリアの一部が割当てられるサーバレベル仮想ボリューム１）；及び、
（Ｄ）サーバレベルプール２に対応するサーバレベル仮想ボリューム２及び３、
が対応していることになる。すなわち、この例によれば、ストレージレベルプール１には、そのプール１を基点とする記憶領域トポロジーの構成要素であるサーバレベル仮想ボリューム１〜３が対応していることになる。
【００２０】
下記の実施例では、記憶領域トポロジー毎に、すなわち、ストレージレベルプール毎に、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率を算出することができる。なぜなら、ストレージレベルプール毎に、ストレージレベルプールを基点とした記憶領域トポロジーを特定すること、換言すれば、対応するサーバレベル仮想ボリュームを特定することができるからである。
【００２１】
図に示すように、サーバレベルプールが複数の物理サーバ、例えば物理サーバ３及び４に共有されても良い。このケースでは、例えば、破線で示すように、物理サーバ３内の仮想マシン３が物理サーバ４にマイグレーションされても、ストレージレベルプール２についてのＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率は変わらない。なぜなら、仮想マシン３のマイグレーションにより、仮想マシン３にマウントされていたサーバレベル仮想ボリューム４も物理サーバ４にマイグレーションされることになるが、そのサーバレベル仮想ボリューム４の容量に変更が生じるわけではないからである。言い換えれば、ストレージレベルプール２に対応するサーバレベル仮想ボリューム４及び５の総容量を変更する構成変更（或いは、ストレージレベルプール２の容量を変更する構成変更）が行われた場合には、ストレージレベルプール２についてのＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率が変わることになる。
【００２２】
サーバレベル仮想ボリュームは、複数のＨＬ−ＡＡを含むが、各ＨＬ−ＡＡのサイズはサーバレベル仮想ボリュームに対応した共通のサイズ長であってもよい。サーバレベルプールは、複数のＨＬ−ＳＡを含むが、各ＨＬ−ＳＡのサイズはサーバレベルプールに対応した共通のサイズ長であってもよく、異なるサイズ長であってもよい。ストレージレベル仮想ボリュームは、複数のＬＬ−ＡＡを含むが、各ＨＬ−ＡＡのサイズはストレージレベル仮想ボリュームに対応した共通のサイズ長であってもよい。ストレージレベルプールは、複数のＬＬ−ＳＡを含むが、各ＬＬ−ＳＡはストレージレベルプールに対応した共通のサイズ長であってもよい。この構成において、ページ同士の対応関係は、テーブル等で管理されても良いし、計算によって算出されても良い。
【００２３】
仮想マシンで実行するプログラムによって、サーバレベル仮想ボリューム内の或るＨＬ−ＡＡを表すライト要求が発行された場合、その或るＨＬ−ＡＡにＨＬ−ＳＡが未割当てであれば、そのサーバレベル仮想ボリュームに対応するサーバレベルプールから、未割当てのＨＬ−ＳＡが割当てられる。そして、物理サーバ３０００から、割当てられたＨＬ−ＳＡに対応するＬＬ−ＡＡを表すライト要求がストレージシステム２０００に送信される。ストレージシステム２０００では、そのＬＬ−ＡＡにＬＬ−ＳＡが未割当てであれば、そのＬＬ−ＡＡに、そのＬＬ−ＡＡを有するストレージレベル仮想ボリュームに対応したストレージレベルプールから、未割当てのＬＬ−ＳＡが割当てられる。そして、そのＬＬ−ＳＡに、当該ライト要求に従うデータが書き込まれる。ＬＬ−ＳＡが例えば複数のＰＤＥＶに基づいていれば、データは、例えば所定のＲＡＩＤレベルに従って、複数のＰＤＥＶに格納される。
【実施例１】
【００２４】
実施例１では、管理サーバが、ストレージシステムの仮想ボリューム情報と物理サーバの仮想ボリューム情報とを収集し、ストレージシステムの仮想ボリューム情報と物理サーバの仮想ボリューム情報とを分析し、その分析結果を基に、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率を管理者（例えばストレージ管理者）に表示する。以下に詳細を説明する。【００２５】
＜１．計算機システムの構成＞。【００２６】
図１は、本発明の実施例１における計算機システムの構成を表す図である。【００２７】
計算機システムは、ストレージシステム２０００、物理サーバ３０００及び管理サーバ１０００を備える。なお、ストレージシステム２０００、物理サーバ３０００及び管理サーバ１０００の少なくとも一つは、何台備わっていても良い。【００２８】
ストレージシステム２０００及び物理サーバ３０００は、通信ネットワーク、例えば、ＳＡＮ５０００もしくはＬＡＮ５０１０を通じ、相互に接続される。管理サーバ１０００は、通信ネットワーク、例えば、ＬＡＮ５０１０もしくはＳＡＮ５０００を通じ、ストレージシステム２０００及び物理サーバ３０００と接続される。【００２９】
＜１−１．ストレージシステムの構成＞。【００３０】
ストレージシステム２０００は、複数のＰＤＥＶ（物理記憶デバイス）２１００ａ、及び複数のストレージコントローラ（ＣＴＬ）２０１０を備える。ＰＤＥＶ２１００ａ、及びストレージコントローラ２０１０は、例えば、内部ネットワーク又はバスによって相互に接続される。ストレージコントローラ２０１０は、ＰＤＥＶ２１００ａに基づく記憶領域にデータを格納する。【００３１】
ＰＤＥＶ２１００ａは、例えば、ディスク型の記憶メディアのドライブ（例えばハードディスクドライブ）であり、物理サーバ３０００からストレージシステム２０００が受けたライト要求に従うデータを記憶する。ＰＤＥＶ２１００ａは、例えばフラッシュメモリドライブであっても良い。ＰＤＥＶ２１００ａは、一つでも良い。【００３２】
ストレージコントローラ２０１０は、ストレージシステム１０００の動作を制御する装置である。ストレージコントローラ２０１０は、内部ネットワークを有する。その内部ネットワークに、例えば、ストレージポート４０２０ａ、プロセッサ４０１０ａ（例えばＣＰＵ）及びメモリ４０５０ａが接続されている。ストレージコントローラ２０１０同士は、内部ネットワークにて相互に接続される。また、ストレージコントローラ２０１０と各ＰＤＥＶ２１００ａは、複数のバックエンドネットワークにて相互接続される。ストレージコントローラ２０１０は一つでも良い。【００３３】
ストレージポート４０２０ａは、ＳＡＮ５０００等のネットワークを介して、ストレージシステム２０００、管理サーバ７０００に接続されるインターフェースである。【００３４】
プロセッサ４０１０ａは、メモリ４０５０ａによって記憶されるプログラムを実行することによって、各種処理を行う。【００３５】
メモリ４０５０ａは、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成され、プロセッサ４０１０ａによって実行されるプログラムや、プロセッサ４０１０ａによって必要とされる情報等を記憶する。具体的には、例えば、ストレージコントローラ２０１０のメモリ４０５０ａには、ストレージ制御プログラム２５００が記憶され、管理サーバ１０００から受信した管理操作要求を基に、ストレージコントローラ２０１０を制御する。管理操作要求は、ストレージシステム２０００の操作のための要求であり、例えば、ボリューム構築要求や、ストレージレベルプール構築要求等がある。なお、メモリ４０５０ａは、ＰＤＥＶ２１００ａに入出力されるデータが一時的に格納されるキャッシュメモリとして用いられてもよい。【００３６】
なお、物理サーバ３０００及びストレージシステム２０００の各々における内部ネットワークは、好ましくは、ストレージポート４０２０ａの有する転送帯域より広帯域であり、また、バスやスイッチ型のネットワークによって全てまた一部が代替されてもよい。また、図１では、ストレージポート４０２０ａは、ストレージコントローラ２０１０に一つ存在することになっているが、実際には、複数のストレージポート４０２０ａがストレージコントローラ２０１０に存在してもよい。なお、ストレージコントローラ２０１０は、複数の部品にて構成されてもよい。同様に、メモリ４０５０ａも、複数の部品にて構成されてもよい。【００３７】
ストレージシステム２０００は、例えば、後述するように、ストレージレベルプールに属する一以上のボリュームを構成する。ストレージレベルプールは、ストレージシステム２０００が有しても良いし、ストレージシステム２０００とは別のシステム（例えば、ストレージシステム２０００と物理サーバ３０００との間に介在するシステム（例えばスイッチ装置）が有しても良い。【００３８】
ストレージシステムは、一つのストレージ装置であっても良いし、複数のストレージ装置の集合であっても良い。例えば、或るストレージ装置が管理するＶＯＬは、別のストレージ装置が有するＰＤＥＶに基づくＶＯＬであっても良い。【００３９】
ストレージシステムが有する記憶デバイスのエリア（ＬＬ−ＳＡ）に、一以上のボリュームの全てのエリア（ＬＬ−ＡＡ）が割当てられていても良いし、一以上のボリュームの一部のエリア（ＬＬ−ＡＡ）が記憶デバイスのエリア（ＬＬ−ＳＡ）に割当てられていなくても良い。【００４０】
＜１−２．物理サーバの構成＞。【００４１】
物理サーバ３０００は、サーバ計算機の一例であり、プロセッサ４０１０ｂ、メモリ４０５０ｂ及びＨＢＡ４０２０ｂを有する。プロセッサ４０１０ｂ、メモリ４０５０ｂ、及びＨＢＡ４０２０ｂは内部ネットワークによって相互に接続される。【００４２】
プロセッサ４０１０ｂは、メモリ４０５０ｂによって記憶されるプログラムを実行することによって、各種処理を行う。例えば、プロセッサ４０１０ｂは、ストレージシステム２０００にＩ／Ｏ要求（ライト要求又はリード要求）を送信することによって、そのストレージシステム２０００によって提供される一つ以上のストレージレベル仮想ボリューム２２３０に対してデータの入出力（ライト又はリード）を行うことができる。【００４３】
メモリ４０５０ｂは、プロセッサ４０１０ｂによって実行されるプログラムやプロセッサ４０１０ｂによって必要とされる情報等を記憶する。メモリ４０１０ｂは、半導体メモリ又は記憶デバイス、あるいはこれらを組み合わせたもので良い。メモリ４０５０ｂは、サーバ仮想化プログラム３２００を記憶する。【００４４】
ＨＢＡ４０２０ｂは、ＳＡＮ５０００やＬＡＮ５０１０等のネットワークを介してストレージシステム２０００に接続されるインターフェースである。具体的には、例えば、ＨＢＡ４０２０ｂは、プロセッサ４０１０ｂからストレージシステム２０００へのＩ／Ｏ要求を出力する。【００４５】
サーバ仮想化プログラム３２００は、物理サーバ３０００の有する物理リソースから仮想サーバ環境（仮想マシン）を構築する。【００４６】
＜１−３．管理サーバの構成＞。【００４７】
管理サーバ１０００は、プロセッサ４０１０ｃ、メモリ４０５０ｃ、管理プログラム１２００、及びＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）４０４０ｃを備える計算機である。プロセッサ４０１０ｃ、メモリ４０５０ｃ、ＰＤＥＶ２１００ｃ及びＮＩＣ４０４０ｃは、内部ネットワークにより相互に接続される。【００４８】
プロセッサ４０１０ｃは、メモリ４０５０ｃによって記憶されるプログラムを実行することによって、各種処理を行う。例えば、プロセッサ４０１０ｃは、ストレージシステム２０００に管理要求を送信することによって、そのストレージシステム２０００によって実行されるストレージレベル仮想ボリューム２２３０の物理サーバ３０００への割当て等を制御する。なお、管理要求は、遠隔転送要求、またはコピー制御要求等を含んでよい。【００４９】
メモリ４０５０ｃは、プロセッサ４０１０ｃによって実行されるプログラムやプロセッサ４０１０ｃによって必要とされる情報等を記憶する。例えば、メモリ４０５０ｃには、管理プログラム１２００が記憶される。なお、メモリ４０５０ｃは、半導体メモリ又は記憶デバイス、あるいはこれらを組み合わせたもので良い。【００５０】
ＮＩＣ４０４０ｃは、ＬＡＮ５０１０等のネットワークを介して、ストレージシステム２０００に接続されるインターフェースである。【００５１】
なお、管理サーバ１０００は、入出力装置４０６０を有してよい。管理サーバ１０００内の入出力装置４０６０も、内部ネットワークに接続される。【００５２】
入出力装置４０６０の例としては、ディスプレイとキーボードとポインタデバイスが考えられるが、これら以外の装置であっても良い。また、入出力装置４０６０の代替として、シリアルインターフェースやイーサネット（登録商標）インターフェースが入出力装置４０６０とされてよい。また、該当インターフェースに、ディスプレイ又はキーボード又はポインタデバイスを有する表示用計算機が接続されて良い。表示用情報の表示用計算機での送信や、入力用情報を表示用計算機から受信することが行われても良い。これらにより、表示用計算機での表示が行われても良いし、入力を受け付けることで、入出力装置４０６０での入力及が行われても良い。【００５３】
管理プログラム１２００は、ストレージシステム２０００を管理する。具体的には、例えば、管理プログラム１２００は、ボリューム構成の管理、ストレージレベルプール構成の管理、ストレージレベル仮想ボリューム構成の管理、各種ボリューム割当ての指示等を行う。【００５４】
なお、管理サーバ１０００は、ストレージシステム２０００を管理する装置と、物理サーバ３０００を管理する装置とに分かれていても良い。具体的には、例えば、管理サーバ１０００は、管理システムの一例である。管理システムは、一以上の計算機、例えば、管理計算機、又は、管理計算機と表示用計算機との組み合わせである。具体的には、例えば、管理計算機が表示用情報を表示する場合は、管理計算機が管理システムである。また、処理の高速化や高信頼化のために、複数の計算機で管理計算機と同等の機能が実現されてもよく、この場合は、当該複数の計算機（表示を表示用計算機が行う場合は表示用計算機を含んで良い）が、管理システムである。【００５５】
＜２．ストレージの詳細＞。【００５６】
図２８は、ストレージコントローラ２１０のメモリ４０５０ａが記憶する情報及びプログラムの詳細を示す図である。【００５７】
メモリ４０５０ａには、例えば、ストレージレベルプール情報１１０００、ストレージレベル仮想ボリューム情報１２０００、ボリューム情報１３０００、ストレージ内マッピング情報１４０００、ストレージ制御プログラム２５００が記憶される。【００５８】
ストレージレベルプール情報１１０００は、ストレージレベルプールに関する情報である。【００５９】
ストレージレベル仮想ボリューム情報１２０００は、ストレージレベル仮想ボリュームに関する情報である。【００６０】
ボリューム情報１３０００は、ボリュームに関する情報である。【００６１】
ストレージ内マッピング情報１４０００は、ストレージシステム２０００が管理する各種記憶領域（ボリューム、ストレージレベルプール、ストレージレベル仮想ボリューム）のマッピングを示す情報である。【００６２】
ストレージ制御プログラム２５００は、ストレージシステム２０００の制御に関する処理が定義されたプログラムである。ストレージ制御プログラム２５００は、例えば、ストレージ仮想化モジュール２５０１、ストレージ構成管理モジュール２５０２及びコマンド制御モジュール２５０３を有する。なお、ストレージ制御プログラム２５００の有する各モジュールは、必ずしも一つのプログラムのモジュールである必要は無く、それぞれが別々のプログラムコードであってもよい。【００６３】
＜２−１．ストレージの有する情報の説明＞。【００６４】
＜２−１−１．  ストレージレベルプール情報の説明＞。【００６５】
図３０は、ストレージレベルプール情報１１０００を示すブロック図である。【００６６】
ストレージレベルプール情報１１０００は、例えば、ストレージレベルプール毎に、ストレージレベルプールに関する情報の他に、ストレージレベルプールに属するボリュームに関する情報と、ストレージレベルプールからエリアが割当てられるストレージレベル仮想ボリュームに関する情報とを含む。具体的には、例えば、ストレージレベルプール情報１１０００は、テーブルであり、ストレージレベルプール毎に、ストレージレベルプール識別子１１００１、ストレージベルプール容量１１００２、ストレージレベルプール空き容量１１００３、ボリューム識別子１１００４、ストレージレベル仮想ボリューム識別子１１００５、ストレージレベル仮想ボリューム総容量１１００６、ＬＬ−ＳＡのサイズ長１１００７と、未割当ＬＬ−ＳＡの識別子リスト１１００８と、を属性値とするレコードを有する。【００６７】
ストレージレベルプール識別子１１００１は、ストレージ仮想化モジュール２５０１によってストレージレベルプール２２２０に割当てられた識別子である。【００６８】
ストレージレベルプール容量１１００２は、ストレージレベルプールの容量である。【００６９】
ストレージレベルプール割当済容量１１００３は、ストレージレベルプールの容量のうち、ストレージ制御プログラム２５００により、ストレージレベル仮想ボリューム２２３０に割当てられたエリアの総容量である。【００７０】
ボリューム識別子１１００４は、ストレージレベルプールに属するボリュームの識別子である。ストレージレベルプールに属するボリュームとは、ストレージ仮想化モジュール２５０１により、ストレージレベルプールに属するように、設定が行われたボリュームを指す。【００７１】
ストレージレベル仮想ボリューム総容量１１００５は、ストレージレベルプールに対応する全てのストレージレベル仮想ボリューム０の容量を合算した値である。【００７２】
ＬＬ−ＳＡサイズ長１１００７は、ストレージレベルプールに含まれるボリュームのエリア（ＬＬ−ＳＡ）の管理単位長（より具体的には割当及び開放する単位長）を示す値である。【００７３】
未割当ＬＬ−ＳＡの識別子リスト１１００８は、ストレージレベルプールに関係付けられたストレージレベル仮想ボリュームに割当てられていないエリア（ＬＬ−ＳＡ）の識別子リストである。なお、図では識別子の例としてコロン「：」の前半にボリューム識別子１１００４に記憶されたリスト上のオフセット番号を示し、コロンの後半には、ボリューム識別子１１００４とオフセット番号が示すボリュームのエリア（ＬＬーＳＡ）の先頭からのオフセット番号を示している。なお、エリア（ＬＬ−ＳＡ）はボリュームを先頭からＬＬ−ＳＡサイズ長１１００７に区切って作成し、先頭のエリア（ＬＬ−ＳＡ）から０番、１番．．といったオフセット番号が割り当たっている。ストレージレベルプール「ＳＴＰＯＯＬ−１」の未割当ＬＬ−ＳＡの識別子が「０１：００２」を例とすると、コロンの前半の「０１」は先頭から一つ次のボリュームの識別子を指し示すため、ボリューム識別子は「ＳＴＬＤＥＶ−２」に該当し、コロンの後半が「００２」であるため、ＳＴＬＤＥＶ−２の先頭から３番目のエリア（ＬＬ−ＳＡ）となる。ちなみにＳＴＰＯＯＬ−１のＬＬ−ＳＡサイズ長は１００ＭＢ（１Ｍは１０２４Ｋで、１Ｋは１０２４とする）であるから、この先頭から３番目のエリア（ＬＬ−ＳＡ）は仮に５１２バイトブロックを単位としてアドレッシングするとすれば、４００ｋブロックから（６００ｋー１）ブロックとなる。なお、以後も特に断らない限りブロックアドレスは５１２バイトブロックを単位とし、１Ｍは１０２４Ｋで、１Ｋは１０２４とする。【００７４】
なお、ストレージレベルプール情報１１０００は、ストレージレベルプールに関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のストレージレベルプールに関する属性値を有しても良い。また、ストレージレベルプール情報１１０００は、ストレージレベルプール識別子を除いては上記属性値の一部を格納しなくてもよい。また、図３１はバイトを単位とした値で例示しているが、他の単位（ＳＣＳＩブロック長、その他エリアの管理単位長、等）に基く値であってもよい。本点は計算機システムが有する情報に共通の事項である。【００７５】
また、図３０から分かるように、ストレージレベルプール容量１１００２は、必ずしも、ストレージレベル仮想ボリューム総容量１１００５と同じにはならない。なぜなら、ストレージレベルプールは、そのストレージレベルプールに属する一以上のボリュームの一部のエリアで構成されることもあるからである。【００７６】
＜２−１−２．  ストレージレベル仮想ボリューム情報＞。【００７７】
図３１は、ストレージレベル仮想ボリューム情報１２０００を示すブロック図である。【００７８】
ストレージレベル仮想ボリューム情報１２０００は、ストレージレベル仮想ボリューム毎に、ストレージレベル仮想ボリュームに関する情報の他に、ストレージレベル仮想ボリュームへのエリアの割当元となるストレージレベルプールに関する情報を含む。具体的には、例えば、ストレージレベル仮想ボリューム情報１２０００は、テーブルであり、ストレージレベル仮想ボリューム毎に、ストレージレベル仮想ボリューム識別子１２００１、ストレージレベル仮想ボリューム容量１２００２、ストレージレベル仮想ボリューム割当済容量１２００３、ストレージレベルプール識別子１２００４、ストレージレベルプール容量１２００５、ポート番号・ＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）１２００６を属性値とするレコードを含む。さらに、ストレージレベル仮想ボリューム情報１２０００は、ストレージレベルエリア変換情報１２００７（図中ではＬＬーエリア変換情報と表記）を含む。【００７９】
ストレージレベル仮想ボリューム識別子１２００１は、ストレージ仮想化モジュール２５０１によってストレージレベル仮想ボリュームに割当てられた識別子である。【００８０】
ストレージレベル仮想ボリューム容量１２００２は、ストレージ仮想化モジュール２５０１により設定された、ストレージレベル仮想ボリュームの容量である。【００８１】
ストレージレベル仮想ボリューム割当済容量１２００３は、ストレージレベル仮想ボリューム容量１５０２のうち、ストレージ制御プログラム２５００によってストレージレベルプールからストレージレベル仮想ボリュームに割当てられたエリアの総容量である。【００８２】
ストレージレベルプール識別子１２００４は、ストレージレベル仮想ボリュームへのエリアの割当元となるストレージレベルプール２２２０の識別子である。【００８３】
ストレージレベルプール容量１２００５は、ストレージレベルプールの容量である。【００８４】
ポート番号・ＬＵＮ１２００６は、ストレージレベル仮想ボリュームに対応したポート番号及びＬＵＮである。【００８５】
ストレージレベルエリア変換情報１２００７は、ストレージレベル仮想ボリュームのエリア（ＬＬ−ＡＡ）毎に割当てられたストレージレベルプールのエリア（ＬＬ−ＳＡ）の識別子を含む情報である。なお、エリア（ＬＬ−ＳＡ）が「未割当」のエリア（ＬＬ−ＡＡ）は、対応するエリア（ＬＬ−ＡＡ）にエリア（ＬＬ−ＳＡ）が割当てられていないことを示す。なお、ストレージレベルエリア変換情報１２００７は、対応するストレージレベル仮想ボリューム定義直後は全て（または一部）のＬＬ−ＡＡについて「未割当」で生成され、後述の通り、エリア（ＬＬ−ＡＡ）の一部または全てを範囲とする最初のライト要求に応じてエリア（ＬＬ−ＳＡ）を割当てて、ライト要求のライトデータをエリア（ＬＬ−ＳＡ）に保存する。【００８６】
図の例では、ストレージレベルエリア変換情報１２００７はリスト形式で表現されており、ストレージレベル仮想ボリュームの先頭のエリア（ＬＬ−ＡＡ）から降順に、エリア（ＬＬ−ＡＡ）に割当てられているエリア（ＬＬ−ＳＡ）（または未割当）を示す識別子が格納されている。【００８７】
エリア（ＬＬ−ＡＡ）を指定したブロックアドレスが［Ｙ］ブロックアドレスの場合は、対応するエリア（ＬＬ−ＳＡ）の５１２バイトブロックでのアドレスは以下の通りに求める。【００８８】
［ＬＬ−ＳＡオフセット］＝［Ｙ］を［対応するストレージレベルプールのＬＬ−ＳＡサイズ長１１００７］で割った値（端数は切り捨て）。【００８９】
［ＬＬ−ＳＡオフセット内アドレス］＝［Ｙ］を［対応するストレージレベルプールのＬＬ−ＳＡサイズ長１１００７］で割った余り。【００９０】
［対応ＬＬ−ＳＡが存在するボリューム］＝リスト１２００７の［ＬＬ−ＳＡオフセット］の識別子のコロン「：」の前半。なお、「リストのオフセットｘの値」と表現する場合は、リストの先頭から（ｘ＋１）番目の値ということである。【００９１】
［対応ＬＬ−ＳＡの存在するボリューム内アドレス］＝（リスト１１００８の［ＬＬ−ＳＡオフセットの識別子］のコロン「：」の後半）×［対応するストレージレベルプールのＬＬ−ＳＡサイズ長１１００７］＋［ＬＬ−ＳＡオフセット内アドレス］。【００９２】
従って、物理サーバ３０００から、ＳＴＶＶＯＬ−１のストレージレベル仮想化ボリュームの５０１Ｋブロックアドレスを指定したＩ／Ｏ要求を受信した場合は以下の計算となる。【００９３】
ＬＬ−ＳＡオフセット＝２。【００９４】
ＬＬ−ＳＡオフセット内アドレス＝１０１Ｋブロック。【００９５】
対応ＬＬ−ＳＡが存在するボリューム＝０２（図３０のボリューム識別子１１００４を参照するとＳＴＬＤＥＶー８）。【００９６】
対応ＬＬ−ＳＡの存在するボリューム内アドレス＝１７０１Ｋブロック。【００９７】
なお、ストレージレベル仮想ボリューム情報１２０００は、ストレージレベル仮想ボリュームに関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のストレージレベル仮想ボリュームに関する属性値を有しても良い。また、ストレージレベル仮想ボリューム情報１２０００は、ストレージレベル仮想ボリューム識別子１２００１を除いては上記属性値の一部を格納しなくてもよい。【００９８】
＜２−１−３．ボリューム情報＞。【００９９】
図３２は、ボリューム情報１３０００を示すブロック図である。【０１００】
ボリューム情報１３０００は、ボリューム毎に、ボリュームに関する情報の他に、ボリュームが属するストレージレベルプールに関する情報を含む。具体的には、例えば、ボリューム情報１３０００は、例えば、テーブルであり、ボリューム毎に、ボリューム識別子１３００１、ボリューム容量１３００２、ＰＤＥＶ識別子１３００３、ストレージレベルプール識別子１３００４、を属性値とするレコードを含む。【０１０１】
ボリューム識別子１３００１は、ストレージ仮想化モジュール２５０１によってボリュームに割当てられた識別子である。【０１０２】
ボリューム容量１３００２は、ボリュームの容量である。ボリュームは、例えば、ストレージ仮想化モジュール２５０１によって一以上のＰＤＥＶ２１００ａの記憶領域をグループ化することにより構築される。ボリュームの記憶領域は、ストレージコントローラ４０５０の行う制御により、一以上のＰＤＥＶ２１００ａの記憶領域に分散してマッピングされる。【０１０３】
ＰＤＥＶ識別子１３００３は、ストレージ仮想化モジュール２５０１によってボリュームに基づくＰＤＥＶ２１００ａに割当てられた識別子である。つまり、ボリュームの基になっているＰＤＥＶ２１００ａの識別子である。【０１０４】
ストレージレベルプール識別子１３００４は、ボリュームが属するストレージレベルプール０の識別子である。【０１０５】
なお、ボリューム情報１３０００は、ボリュームに関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のボリュームに関する属性値を有しても良い。また、ボリューム情報１３０００は、ボリューム識別子１３００１を除いては上記属性値の一部を格納しなくてもよい。【０１０６】
＜２−１−４．ストレージ内マッピング情報＞。【０１０７】
図３３は、ストレージ内マッピング情報１４０００を示すブロック図である。【０１０８】
ストレージ内マッピング情報１４０００は、例えば、テーブルであり、ストレージレベルプール毎に、ストレージレベルプール識別子１４００１、ストレージレベル仮想ボリューム識別子１４００２、ボリューム割当済容量１４００３、ＰＤＥＶ識別子１４００４、を属性値とするレコードを含む。【０１０９】
ストレージレベルプール識別子１４００１は、ストレージレベルプールの識別子である。【０１１０】
ストレージレベル仮想ボリューム識別子１４００２は、ストレージレベルプールからエリアの一部が割当てられるストレージレベル仮想ボリュームの識別子である。【０１１１】
ボリューム識別子は１４００３、ストレージレベルプールに属するボリュームの識別子である。【０１１２】
ＰＤＥＶ識別子１４００４は、ストレージレベルプールに属するボリュームの基になっているＰＤＥＶ２１００ａの識別子である。【０１１３】
なお、ストレージ内マッピング情報１４０００は、ストレージシステム２０００の有するデバイスのマッピングに関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のマッピング情報の属性値を有しても良い。また、ストレージ内マッピング情報１４０００は、ストレージレベルプール識別子１４００１を除いては上記属性値の一部を格納しなくてもよい。【０１１４】
＜２−２．ストレージが有するプログラムの説明＞。【０１１５】
図３は、ストレージ制御プログラム２５００の構成を示す図である。【０１１６】
ストレージ制御プログラム２５００は、図２８にも示したように、ストレージ仮想化モジュール２５０１、ストレージ構成管理モジュール２５０２及びコマンド制御モジュール２５０３を有する。ストレージ制御プログラム２５００は、ストレージシステム２０００を制御するための処理が書かれており、ストレージコントローラ２０１０のメモリに記憶され、実行される。【０１１７】
ストレージ構成管理モジュール２５０２は、ストレージシステム２０００の有する各種記憶領域の構成を管理する。記憶領域の構成の管理とは、具体的には、例えば、ストレージレベルプールを構成しているボリュームの管理、ボリュームを構成しているＰＤＥＶ２１００ａの管理等である。【０１１８】
コマンド制御モジュール２５０３は、物理サーバ３０００又は管理サーバ１０００からのコマンド（例えばＩ／Ｏ要求）を解釈し、そのコマンドに規定された処理を実行する。【０１１９】
ストレージ仮想化モジュール２５０１は、ＰＤＥＶ２１００ａを基にボリュームを構築する。ストレージ仮想化モジュール２５０１は、ストレージレベル仮想ボリュームも構築する。ストレージ仮想化モジュール２５０１は、ストレージレベルプールに、一以上のボリュームと一以上のストレージレベル仮想ボリュームをマッピングする。【０１２０】
＜３．物理サーバの詳細＞。【０１２１】
図２９は、物理サーバ３０００のメモリ４０５０ｂが記憶する情報とプログラムの詳細を示す図である。【０１２２】
メモリ４０５０ｂには、サーバレベルプール情報１５０００、サーバレベル仮想ボリューム情報１６０００、及びサーバ仮想化プログラム３２００が記憶される。【０１２３】
サーバレベルプール情報１５０００は、サーバレベルプールに関する情報である。【０１２４】
サーバレベル仮想ボリューム情報１６０００は、サーバレベル仮想ボリュームに関する情報である。【０１２５】
サーバ仮想化プログラム３２００は、物理サーバ３０００の有するリソースを用い、仮想マシン３２０１、サーバレベルプール３２１０、サーバレベル仮想ボリューム３２２０等を構築する。【０１２６】
＜３−１．物理サーバの有する情報の説明＞。【０１２７】
＜３−１−１．サーバレベルプール情報＞。【０１２８】
図３４は、サーバレベルプール情報１５０００を示すブロック図である。【０１２９】
サーバレベルプール情報１５０００は、例えば、サーバレベルプール毎に、サーバレベルプールに関する情報の他に、サーバレベルプールに属するストレージレベル仮想ボリュームに関する情報と、サーバレベルプールからエリアが割当てられるサーバレベル仮想ボリュームに関する情報とを含む。具体的には、例えば、サーバレベルプール情報１５０００は、テーブルであり、サーバレベルプール毎に、サーバレベルプール識別子１５００１、サーバレベルプール容量１５００２、サーバレベルプール空容量１５００３、サーバレベル仮想ボリューム識別子１５００４、サーバレベル仮想ボリューム総容量１５００５、構成ストレージポート番号・ＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）１５００６、ＨＡ−ＳＡサイズ長１５００７、未割当ＨＬ−ＳＡの識別子リスト１５００８と、を属性値とするレコードを含む。【０１３０】
サーバレベルプール識別子１５００１は、サーバ仮想化プログラム３２００によってサーバレベルプール３２１０に割当てられた識別子である。【０１３１】
サーバレベルプール容量１５００２は、サーバレベルプール３２１０の容量である。【０１３２】
サーバレベルプール割当済容量１５００３は、サーバレベルプール容量１５００２のうち、サーバレベル仮想ボリューム３２２０に割当てられたエリアの総容量である。【０１３３】
サーバレベル仮想ボリューム識別子１５００４は、サーバレベルプールからエリアの一部が割当てられるサーバレベル仮想ボリュームの識別子である。【０１３４】
サーバレベル仮想ボリューム総容量１５００５は、サーバレベルプールからエリアが割当てられる全てのサーバレベル仮想ボリュームの容量の合計である。【０１３５】
構成ストレージポート番号・ＬＵＮ１５００６は、サーバレベルプールに属するストレージレベル仮想ボリュームを特定するためのＬＵＮとポート番号（ストレージレベル仮想ボリュームを表すパラメータとしてＩ／Ｏ要求で使用されるＬＵＮとポート番号）である。なお、ポート番号とＬＵＮはストレージシステム２０００が提供するストレージレベル仮想ボリュームを指定できるのであれば他の識別子でもよい。【０１３６】
ＨＬ−ＳＡサイズ長１５００７は、サーバレベルプールに含まれるボリュームのエリア（ＨＬ−ＳＡ）の管理単位長（より具体的には割当及び開放する単位長）を示す値である。【０１３７】
未割当ＬＬ−ＳＡの識別子リスト１５００８は、サーバレベルプールに関係付けられたサーバレベル仮想ボリュームに割当てられていないエリア（ＨＬ−ＳＡ）の識別子リストである。【０１３８】
なお、図では識別子の例としてコロン「：」の前半に構成ストレージポート番号・ＬＵＮ１５００６に記憶されたリスト上のオフセット番号を示し、コロンの後半には、構成ストレージポート番号・ＬＵＮ１５００６とオフセット番号が示すストレージレベル仮想ボリュームのエリア（ＨＬーＳＡ）の先頭からのオフセット番号を示している。なお、エリア（ＨＬ−ＳＡ）はボリュームを先頭からＨＬ−ＳＡサイズ長１５００７に区切って作成し、先頭のエリア（ＨＬ−ＳＡ）から０番、１番．．といったオフセット番号が割り当たっている。サーバレベルプール「ＳＶＰＯＯＬ−１」の未割当ＨＬ−ＳＡの識別子が「００：００２」を例とすると、コロンの前半の「００」は先頭のストレージレベル仮想ボリュームの識別子を指し示すため、ボリューム識別子は「ＰＯＲＴ番号ＸＸＸ．ＸＸＸのＬＵＮが０」のストレージレベル仮想ボリュームに該当し、コロンの後半が「００２」であるため、該当するストレージレベル仮想ボリュームの先頭から３番目のエリア（ＨＬ−ＳＡ）となる。ちなみにＳＶＰＯＯＬ−１のＨＬ−ＳＡサイズ長は５０ＭＢであるから、この先頭から３番目のエリア（ＨＬ−ＳＡ）は、２００ｋブロックから（３００ｋー１）ブロックとなる。【０１３９】
なお、サーバレベルプール情報１５０００は、サーバレベルプールに関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のサーバレベルプール構成の属性値を有しても良い。また、サーバレベルプール情報１５０００は、サーバレベルプール識別子１５００１を除いては上記属性値の一部を格納しなくてもよい。【０１４０】
＜３−１−２．サーバレベル仮想ボリューム情報＞。【０１４１】
図３５は、サーバレベル仮想ボリューム情報１６０００を示すブロック図である。【０１４２】
サーバレベル仮想ボリューム情報１６０００は、例えば、サーバレベル仮想ボリューム毎に、サーバレベル仮想ボリュームに関する情報の他に、サーバレベル仮想ボリュームへのエリアの割当元となるサーバレベルプールに関する情報と、サーバレベル仮想ボリュームを使用する仮想マシンに関する情報とを含む。具体的には、例えば、サーバレベル仮想ボリューム情報１６０００は、サーバレベル仮想ボリューム毎に、サーバレベル仮想ボリューム識別子１６００１、サーバレベル仮想ボリューム容量１６００２、サーバレベル仮想ボリューム割当済容量１６００３、サーバレベルプール識別子１６００４、サーバレベルプール容量１６００５、対応仮想マシン識別子１６００６、仮想マシン認識デバイス識別子１６００７、サーバレベルエリア変換情報１６００８（図中ではＨＬーエリア変換情報と表記）を属性値とするレコードを含む。【０１４３】
サーバレベル仮想ボリューム識別子１６００１は、サーバ仮想化プログラム３２００によってサーバレベル仮想ボリュームに割当てられた識別子である。【０１４４】
サーバレベル仮想ボリューム容量１６００２は、サーバレベル仮想ボリュームの容量である。【０１４５】
サーバレベル仮想ボリューム割当済容量１６００３は、サーバレベル仮想ボリューム容量のうち、サーバレベルプールからエリアが割当てられているエリア（仮想エリア）の総容量である。【０１４６】
サーバレベルプール識別子１６００４は、サーバレベル仮想ボリュームへのエリアの割当元となるサーバレベルプールの識別子である。【０１４７】
サーバレベルプール容量１６００５は、サーバレベル仮想ボリュームへのエリアの割当元となるサーバレベルプールの容量である。【０１４８】
対応仮想マシン識別子１６００６は、サーバレベル仮想ボリュームを使用する仮想マシンの識別子である。【０１４９】
仮想マシン認識デバイス識別子１６００７は、仮想マシン３２０１がサーバレベル仮想ボリュームを認識する際の識別子（サーバレベル仮想ボリュームを表すデバイスの識別子）である。【０１５０】
サーバレベルエリア変換情報１６００８は、サーバレベル仮想ボリュームのエリア（ＨＬ−ＡＡ）毎に割当てられたサーバレベルプールのエリア（ＨＬ−ＳＡ）の識別子を含む情報である。なお、エリア（ＨＬ−ＳＡ）が「未割当」のエリア（ＨＬ−ＡＡ）は、対応するエリア（ＨＬ−ＡＡ）にエリア（ＨＬ−ＳＡ）が割当てられていないことを示す。なお、サーバレベルエリア変換情報１６００８は、対応するサーバレベル仮想ボリューム定義直後は全て（または一部）のＨＬ−ＡＡについて「未割当」で生成され、後述の通り、エリア（ＨＬ−ＡＡ）の一部または全てを範囲とする最初のライト要求に応じてエリア（ＨＬ−ＳＡ）を割当てて、ライト要求のライトデータをエリア（ＨＬ−ＳＡ）に保存する。【０１５１】
図の例では、ストレージレベルエリア変換情報１６００８はリスト形式で表現されており、サーバレベル仮想ボリュームの先頭のエリア（ＨＬ−ＡＡ）から降順に、エリア（ＨＬ−ＡＡ）に割当てられているエリア（ＨＬ−ＳＡ）（または未割当）を示す識別子が格納されている。【０１５２】
エリア（ＨＬ−ＡＡ）を指定したブロックアドレスが［Ｚ］ブロックアドレスの場合は、対応するエリア（ＨＬ−ＳＡ）の５１２バイトブロックでのアドレスは以下の通りに求める。【０１５３】
［ＨＬ−ＳＡオフセット］＝［Ｚ］を［対応するサーバレベルプールのＨＬ−ＳＡサイズ長１５００７］で割った値（端数は切り捨て）。【０１５４】
［ＨＬ−ＳＡオフセット内アドレス］＝［Ｚ］を［対応するサーバレベルプールのＨＬ−ＳＡサイズ長１５００７］で割った余り。【０１５５】
［対応ＨＬ−ＳＡが存在するストレージレベル仮想ボリューム］＝リスト１６００８の［ＨＬ−ＳＡオフセット］の識別子のコロン「：」の前半。【０１５６】
［対応ＬＬ−ＳＡの存在するボリューム内アドレス］＝（リスト１６００８の［ＨＬ−ＳＡオフセット］の識別子のコロン「：」の後半）×［対応するストレージレベルプールのＨＬ−ＳＡサイズ長１５００７］＋［ＨＬ−ＳＡオフセット内アドレス］。【０１５７】
従って、仮想マシン１から、ＨＤＤ−１（すなわちＳＶＶＶＯＬ−１）の１５１Ｋブロックアドレスを指定したＩ／Ｏ要求を受信した場合は以下の計算となる。【０１５８】
ＨＬ−ＳＡオフセット＝１。【０１５９】
ＨＬ−ＳＡオフセット内アドレス＝５１Ｋブロック。【０１６０】
対応ＨＬ−ＳＡが存在するボリューム＝０１（図３４の構成ストレージポート番号・ＬＵＮ１５００６を参照するとＰＯＲＴ番号ＺＺＺ．ＫＫＫでＬＵＮが２）。【０１６１】
対応ＨＬ−ＳＡの存在するボリューム内アドレス＝８５１Ｋブロック。【０１６２】
なお、サーバレベル仮想ボリューム情報１６０００は、サーバレベル仮想ボリューム３２２０に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のサーバレベル仮想ボリューム３２２０に関する属性値を有しても良い。また、サーバレベルプール情報１６０００は、サーバレベル仮想ボリューム識別子１６００１を除いては上記属性値の一部を格納しなくてもよい。【０１６３】
＜３−２．物理サーバの有するプログラムの説明＞。【０１６４】
サーバ仮想化プログラム３２００について説明する。【０１６５】
サーバ仮想化プログラム３２００は、物理サーバ３０００の有するリソースを用い、仮想マシン３２０１、サーバレベルプール３２１０、サーバレベル仮想ボリューム３２２０等を構築する。サーバ仮想化プログラム３２００の実行する処理のより詳細な説明は、以降の＜５−１．サーバでのＴｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇ＞で説明する。【０１６６】
＜４．管理サーバの詳細＞。【０１６７】
図２は、管理サーバ１０００のメモリ４０５０ｃが記憶する情報とプログラムの詳細を示す図である。【０１６８】
メモリ４０５０ｃには、ストレージレベルプール構成情報１４００、ストレージレベル仮想ボリューム構成情報１５００、ポート−ＬＵＮ対応情報１６００、サーバレベルプール構成情報１７００、サーバレベル仮想ボリューム構成情報１８００、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００、初期設定情報１９１０、及び管理プログラム１２００が記憶される。【０１６９】
ストレージレベルプール構成情報１４００は、ストレージレベルプールの構成に関する情報である。なお、ストレージレベルプール構成情報１４００については、＜４−１．ストレージ情報＞で詳細を説明する。【０１７０】
ストレージレベル仮想ボリューム構成情報１５００は、ストレージレベル仮想ボリュームの構成に関する情報である。なお、ストレージレベル仮想ボリューム構成情報１５００については、＜４−１．ストレージ情報＞で詳細を説明する。【０１７１】
ポート−ＬＵＮ対応情報１６００は、ストレージシステム２０００が物理サーバ３０００に提供するストレージレベル仮想ボリュームに対応するポート番号とＬＵＮに関する情報である。なお、ポート−ＬＵＮ対応情報１６００については、＜４−１−３．管理サーバ設定情報＞で詳細を説明する。【０１７２】
サーバレベルプール構成情報１７００は、サーバレベルプール３２１０の構成に関する情報である。なお、サーバレベルプール構成情報１７００については、＜４−１−２．物理サーバ情報＞で詳細を説明する。【０１７３】
サーバレベル仮想ボリューム構成情報１８００は、サーバレベル仮想ボリュームの構成に関する情報である。なお、サーバレベル仮想ボリューム構成情報１８００については、＜４−１−１．サーバ情報＞で詳細を説明する。【０１７４】
Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００は、ストレージレベルプールについてのＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率に関する情報である。なお、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００については、＜４−１−３．管理サーバ管理情報＞で詳細を説明する。【０１７５】
初期設定情報１９１０は、ストレージ管理者の入力する初期設定に関する情報である。なお、初期設定情報１９１０については、＜４−１−３．管理サーバ管理情報＞で説明する。【０１７６】
管理プログラム１２００は、ストレージシステム２０００及び物理サーバ３０００を管理するプログラムである。管理プログラム１２００は、ストレージ管理モジュール１２０１、サーバ管理モジュール１２０２及びレバレッジ管理モジュール１２０３を有する。【０１７７】
ストレージ管理モジュール１２０１は、ストレージレベルプール構成情報１４００、ストレージレベル仮想ボリューム構成情報１５００を用いて、ストレージシステム２０００を管理するモジュールである。【０１７８】
サーバ管理モジュール１２０２は、サーバレベルプール構成情報１７００及びサーバレベル仮想ボリューム構成情報１８００を用いて、物理サーバ３０００を管理するモジュールである。【０１７９】
レバレッジ管理モジュール１２０３は、ポート−ＬＵＮ対応情報１６００、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報及び初期設定情報１９１０を用いて、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率を管理するモジュールである。【０１８０】
なお、管理プログラム１２００の有する各モジュールは、必ずしも一つのプログラムのモジュールである必要は無く、それぞれが別々のプログラムコードであってもよい。【０１８１】
＜４−１．管理サーバで管理する情報＞。【０１８２】
＜４−１−１．ストレージ情報＞。【０１８３】
＜４−１−１ａ．ストレージレベルプール構成情報＞。【０１８４】
図６は、ストレージレベルプール構成情報１４００を示すブロック図である。【０１８５】
ストレージレベルプール構成情報１４００は、ストレージレベルプール毎に、ストレージレベルプールに関する情報の他に、そのストレージレベルプールに対応するストレージレベル仮想ボリュームに関する情報を含む。具体的には、例えば、ストレージレベルプール構成情報１４００は、テーブルであり、ストレージレベルプール毎に、ストレージレベルプール識別子１４０１、ストレージレベルプール容量１４０２、ストレージレベルプール割当済容量１４０３、対応ストレージ仮想ボリューム識別子１４０４、対応ストレージレベル仮想ボリューム総容量１４０５、プール構成ボリューム識別子１４０６、ストレージ装置識別子１  ４０７を属性値とするレコードを含む。【０１８６】
ストレージレベルプール識別子１４０１は、ストレージレベルプールの識別子である。【０１８７】
ストレージレベルプール容量１４０２は、ストレージレベルプールの容量である。【０１８８】
ストレージレベルプール割当済容量１４０３は、ストレージレベルプール容量のうち、ストレージレベル仮想ボリュームに割当てられたエリアの総容量である。【０１８９】
対応ストレージレベル仮想ボリューム識別子１４０４は、ストレージレベルプールに対応するストレージレベル仮想ボリュームの識別子である。【０１９０】
対応ストレージレベル仮想ボリューム総容量１４０５は、ストレージレベルプールに対応する全てのストレージレベル仮想ボリュームの容量を合算した値である。【０１９１】
プール構成ボリューム識別子１４０６は、ストレージレベルプールに属するボリュームの識別子である。【０１９２】
ストレージ装置識別子１４０７は、ストレージレベルプールに属するボリュームを有するストレージ装置の識別子である。【０１９３】
なお、ストレージレベルプール構成情報１４００は、ストレージレベルプール２２２０構成に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のストレージレベルプール２２２０の構成の属性値を有しても良い。また、ストレージレベルプール構成情報１４００は、ストレージレベルプール識別子１４０１を除いては上記属性値の一部を格納しなくてもよい。【０１９４】
前述した情報要素１４０１〜１４０６は、例えば、ストレージシステムを構成するストレージ装置から管理サーバ１０００に収集されたストレージレベルプール情報１１０００（図３０参照）における情報要素１１００１〜１１００６から得られる。また、情報要素１４０７は、ストレージレベルプール情報１１０００がどのストレージ装置から収集されたかを表す情報要素である。【０１９５】
＜４−１−１ｂ．ストレージレベル仮想ボリューム構成情報＞。【０１９６】
図７は、ストレージレベル仮想ボリューム構成情報１５００を示すブロック図である。【０１９７】
ストレージレベル仮想ボリューム構成情報１５００は、ストレージレベル仮想ボリューム毎に、ストレージレベル仮想ボリュームに関する情報の他に、そのストレージレベル仮想ボリュームに対応するストレージレベルプールに関する情報を含む。具体的には、例えば、ストレージレベル仮想ボリューム構成情報１５００は、テーブルであり、ストレージレベル仮想ボリューム毎に、ストレージレベル仮想ボリューム識別子１５０１、ストレージレベル仮想ボリューム容量１５０２、ストレージレベル仮想ボリューム割当済容量１５０３、対応ストレージレベルプール識別子１５０４を属性値とするレコードを含む。【０１９８】
ストレージレベル仮想ボリューム識別子１５０１は、ストレージレベル仮想ボリュームの識別子である。【０１９９】
ストレージレベル仮想ボリューム容量１５０２は、ストレージレベル仮想ボリュームの容量である。【０２００】
ストレージレベル仮想ボリューム割当済容量１５０３は、ストレージレベル仮想ボリューム容量のうち、ストレージレベルプールからストレージレベル仮想ボリュームに割当てられたエリアの総容量である。【０２０１】
対応ストレージレベルプール識別子１５０４は、ストレージレベル仮想ボリュームに対応するストレージレベルプールの識別子である。【０２０２】
なお、ストレージレベル仮想ボリューム構成情報１５００は、ストレージレベル仮想ボリューム２２３０に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のストレージレベル仮想ボリューム２２３０の属性値を有しても良い。また、ストレージレベル仮想ボリューム２２３０情報は、ストレージレベル仮想ボリューム識別子１５０１を除いては上記属性値の一部を格納しなくてもよい。【０２０３】
前述した情報要素１５０１〜１５０４は、例えば、例えば、ストレージシステムを構成するストレージ装置から管理サーバ１０００に収集されたストレージレベルプール情報１１０００（図３１参照）における情報要素１２００１〜１２００４から得られる。【０２０４】
＜４−１−２．物理サーバ情報＞。【０２０５】
＜４−１−２ａ．サーバレベルプール構成情報＞。【０２０６】
図９は、サーバレベルプール構成情報１７００を示すブロック図である。【０２０７】
サーバレベルプール構成情報１７００は、サーバレベルプール毎に、サーバレベルプールに関する情報の他に、そのサーバレベルプールに対応するサーバレベル仮想ボリュームに関する情報を含む。具体的には、例えば、サーバレベルプール構成情報１７００は、テーブルであり、サーバレベルプール毎に、サーバレベルプール識別子１７０１、サーバレベルプール容量１７０２、サーバレベルプール割当済容量１７０３、対応サーバレベル仮想ボリューム３２２０、対応サーバレベル仮想ボリューム総容量１７０５、ボリューム提供元ストレージ装置、構成ストレージポート番号・ＬＵＮ１７０７を属性値とするレコードを含む。【０２０８】
サーバレベルプール識別子１７０１は、サーバレベルプールの識別子である。【０２０９】
サーバレベルプール容量１７０２は、サーバレベルプールの容量である。【０２１０】
サーバレベルプール割当済容量１７０３は、サーバレベルプール容量のうち、サーバレベル仮想ボリュームに割当てられたエリアの総容量である。【０２１１】
対応サーバレベル仮想ボリューム識別子１７０４は、サーバレベルプールに対応するサーバレベル仮想ボリュームの識別子である。【０２１２】
対応サーバレベル仮想ボリューム総容量１７０５は、サーバレベルプールに対応する全てのサーバレベル仮想ボリュームの容量を合算した値である。【０２１３】
ボリューム提供元ストレージ装置識別子１４０７は、サーバレベルプールに対応したストレージレベル仮想ボリュームを物理サーバ３０００に提供しているストレージ装置の識別子である。【０２１４】
構成ストレージボリュームポート番号・ＬＵＮ１７０７は、サーバレベルプールに対応したストレージレベル仮想ボリュームに物理サーバ３０００がアクセスするためのポート番号と、物理サーバ３０００がＳＣＳＩによりストレージレベル仮想ボリュームを認識するためのＬＵＮである。【０２１５】
なお、サーバレベルプール構成情報１７００は、サーバレベルプール３２１０に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のサーバレベルプール３２１０の属性値を有しても良い。また、サーバレベルプール構成情報１７００は、サーバレベルプール識別子１７０１を除いては、上記属性値の一部を格納しなくてもよい。【０２１６】
前述した情報要素１７０１〜１７０６は、例えば、物理サーバから管理サーバ１０００に収集されたサーバレベルプール情報１５０００（図３４参照）における情報要素１５００１〜１５００６から得られる。また、情報要素１５０７は、サーバレベルプール情報１５０００がどの物理サーバから収集されたかを表す情報要素である。【０２１７】
＜４−１−２ｂ．サーバレベル仮想ボリューム構成情報＞。【０２１８】
図１０は、サーバレベル仮想ボリューム構成情報１８００を示すブロック図である。【０２１９】
サーバレベル仮想ボリューム構成情報１８００は、サーバレベル仮想ボリューム毎に、サーバレベル仮想ボリュームに関する情報の他に、そのサーバレベル仮想ボリュームに対応するサーバレベルプールに関する情報と、仮想マシンに関する情報とを含む。具体的には、例えば、サーバレベル仮想ボリューム構成情報１８００は、テーブルであり、サーバレベル仮想ボリューム毎に、サーバレベル仮想ボリューム識別子１８０１、サーバレベル仮想ボリューム容量１８０２、サーバレベル仮想ボリューム割当済容量１８０３、サーバレベル仮想ボリューム未割当容量１８０４、サーバレベル仮想ボリューム使用容量１８０５、対応サーバレベルプール識別子１８０６、対応仮想マシン識別子１８０７、仮想マシン認識デバイス識別子１８０８を属性値とするレコードを含む。【０２２０】
サーバレベル仮想ボリューム識別子１８０１は、サーバレベル仮想ボリュームの識別子である。【０２２１】
サーバレベル仮想ボリューム容量１８０２は、サーバレベル仮想ボリュームの容量である。【０２２２】
サーバレベル仮想ボリューム割当済容量１８０３は、サーバレベル仮想ボリューム容量のうち、サーバレベルプールからサーバレベル仮想ボリュームに割当てられたエリアの総容量である。【０２２３】
サーバレベル仮想ボリューム未割当容量１８０４は、サーバレベル仮想ボリューム容量のうち、サーバレベルプールからエリアが割当てられていないエリア（仮想エリア）の総容量である。【０２２４】
サーバレベル仮想ボリューム使用容量１８０５は、サーバレベル仮想ボリューム容量のうち、仮想マシンによりデータ書き込みが行われた容量である。【０２２５】
対応サーバレベルプール識別子１８０６は、サーバレベル仮想ボリュームに対応するサーバレベルプールの識別子である。【０２２６】
対応仮想マシン識別子１８０７は、サーバレベル仮想ボリュームの割当先である仮想マシンの識別子である。【０２２７】
仮想マシン認識デバイス識別子１８０８は、仮想マシンがサーバレベル仮想ボリュームをデバイス（例えばハードディスクドライブ）として認識する際の識別子である。【０２２８】
なお、サーバレベル仮想ボリューム構成情報１８００は、サーバレベル仮想ボリューム３２２０に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のサーバレベル仮想ボリューム３２２０の属性値を有しても良い。また、サーバレベル仮想ボリューム３２２０情報は、サーバレベル仮想ボリューム識別子１８０１を除いては上記属性値の一部を格納しなくてもよい。【０２２９】
前述した情報要素１８０１〜１８０４及び１８０６〜１８０８は、例えば、物理サーバから管理サーバ１０００に収集されたサーバレベル仮想ボリューム情報１６０００（図３５参照）における情報要素１６００１〜１６００１から得られる。また、情報要素１８０５は、仮想マシンによって、サーバレベル仮想ボリュームに書き込まれたデータ量を計算することによって求まる情報要素である。【０２３０】
＜４−１−３．管理サーバ管理情報＞。【０２３１】
＜４−１−３ａ．ポート−ＬＵＮ対応情報＞。【０２３２】
図８は、ポート−ＬＵＮ対応情報１６００を示すブロック図である。【０２３３】
ポート−ＬＵＮ対応情報１６００は、例えば、テーブルであり、ストレージレベル仮想ボリューム毎に、ｐｏｒｔ＃（ポート番号）１６０２、ＬＵＮ１６０３、及び内部ボリュームＩＤ１６０１を属性値とするレコードを含む。【０２３４】
ｐｏｒｔ＃１６０２は、ストレージシステム２０００が物理サーバ３０００にストレージレベル仮想ボリューム２２３０を提供している際、物理サーバ３０００が提供されたストレージレベル仮想ボリューム２２３０にアクセスするために使用するポート番号である。【０２３５】
ＬＵＮ１６０３は、物理サーバ３０００がストレージシステム２０００から提供されたストレージレベル仮想ボリューム２２３０をＳＣＳＩで認識するための識別番号である。【０２３６】
内部ボリュームＩＤ１６０１は、ストレージシステム２０００が物理サーバ３０００に提供するストレージレベル仮想ボリューム２２３０を識別する際の識別子である。【０２３７】
なお、ポート−ＬＵＮ対応情報１６００は、ポート番号１６０２、ＬＵＮ１６０３、内部ボリュームＩＤ１６０１の対応に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のポート番号１６０２、ＬＵＮ１６０３、内部ボリュームＩＤ１６０１の対応の属性値を有しても良い。また、ポート−ＬＵＮ対応情報１６００は、内部ボリュームＩＤ１６０１を除いては上記属性値の一部を格納しなくてもよい。【０２３８】
前述した情報要素１６０１〜１６０３は、例えば、以下のようにして構築することができる。管理サーバが、ストレージ装置から収集されたストレージレベル仮想ボリューム情報１２０００（図３１参照）におけるストレージレベル仮想ボリューム識別子、ポート番号及びＬＵＮを用いて、図８に示した対応情報１６００が構築される。【０２３９】
＜４−１−３ｂ．Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報＞。【０２４０】
図１１は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００を示すブロック図である。【０２４１】
Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００は、例えばテーブルであり、ストレージレベルプール毎に、ストレージレベルプール識別子１９０１とＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２とを含む。【０２４２】
ストレージレベルプール識別子１９０１は、ストレージレベルプールの識別子である。【０２４３】
Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２は、ストレージレベルプールに対応したＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率（１００×（ストレージレベルプールに対応した全てのサーバレベル仮想ボリュームの総容量）／（ストレージレベルプールの容量））（％）である。【０２４４】
なお、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００は、プール単位の容量レバレッジ率に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のプール単位の容量レバレッジ率の属性値を有しても良い。また、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００は、ストレージレベルプール識別子１９０１を除いては上記属性値の一部を格納しなくてもよい。【０２４５】
＜４−１−３ｃ．初期設定情報＞。【０２４６】
図１２は、初期設定情報１９１０を示すブロック図である。【０２４７】
初期設定情報１９１０は、例えば、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１、情報収集間隔１９１２を属性値とする一つ以上のレコードを含むテーブルである。【０２４８】
Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１は、ストレージ管理者が、管理プログラム１２００の設定画面にて入力する、ストレージレベルプール２２２０に対する容量レバレッジ率の許容上限値を表す閾値である。【０２４９】
情報収集間隔１９１２は、ストレージ管理者が管理プログラム１２００の設定画面にて入力する、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２を算出するタイミングの間隔である。【０２５０】
なお、初期設定情報１９１０は、ストレージ管理者の入力する初期設定に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外の初期設定の属性値を有しても良い。また、初期設定情報１９１０は、情報収集間隔１９１２を除いては上記属性値の一部を格納しなくてもよい。【０２５１】
図１３は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率の表示画面を表す。【０２５２】
レバレッジ率表示画面１４０３は、管理プログラム１２００によって表示される画面である。例えば、ストレージレベルプール「ＳＴＰＯＯＬ−１」のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率が５００％となっている理由は、下記の通りである。【０２５３】
図６の情報１４００から、識別子「ＳＴＰＯＯＬ−１」に対応したストレージレベルプールの容量「１００００ＭＢ」が特定される。また、識別子「ＳＴＰＯＯＬ−１」に対応した対応ストレージレベル仮想ボリューム識別子「ＳＴＶＶＯＬ−１」及び「ＳＴＶＶＯＬ−２」が特定される。【０２５４】
図８の情報１６００から、識別子「ＳＴＶＶＯＬ−１」及び「ＳＴＶＶＯＬ−２」に対応するポート番号及びＬＵＮが特定される。【０２５５】
そのポート番号及びＬＵＮを用いて、図９の情報から、サーバレベルプールの識別子「ＳＶＰＯＯＬ−１」が特定される。【０２５６】
その識別子「ＳＶＰＯＯＬ−１」を用いて、図１０の情報１８００から、サーバレベル仮想ボリューム容量「３００００ＭＢ」及び「２００００ＭＢ」、つまり総容量「５００００ＭＢ」が特定される。【０２５７】
以上の結果、ストレージレベルプール「ＳＴＰＯＯＬ−１」の容量「１００００ＭＢ」に対して、そのストレージレベルプールに対応したサーバレベル仮想ボリュームの総容量「５００００ＭＢ」が特定され、その結果、１００×５００００／１００００＝５００％というＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率が算出される。【０２５８】
図１３の表示形式や表示情報は一例であり、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率に関わる情報であれば、図中に表示されている以外の情報が表示されても良い。また、ＧＵＩも別の形式が採用されても良い。【０２５９】
＜５．Ｔｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇ＞。【０２６０】
＜５−１．ストレージでのＴｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇ＞。【０２６１】
図４は、ストレージシステム２０００で行われるＴｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇを表す図である。【０２６２】
ストレージシステム２０００では、ストレージ制御プログラム２５００のストレージ仮想化モジュール２５０１により、ボリューム２２１０、ストレージレベルプール２２２０、ストレージレベル仮想ボリューム２２３０が構築される。【０２６３】
ボリューム２２１０は、ストレージ仮想化モジュール２５０１により、一つ以上のＰＤＥＶ２１００ａの記憶領域をグループ化することにより構築される。ボリューム２２１０の記憶領域は、ストレージコントローラ４０５０の行う制御により、ボリューム２２１０を構成する一つ以上のＰＤＥＶ２１００ａの記憶領域に分散してマッピングされる。【０２６４】
ストレージレベルプール２２２０は、ストレージ仮想化モジュール２５０１により構築される。ストレージレベルプール２２２０の記憶領域は、ストレージコントローラ４０５０の行う制御により、ストレージレベルプール２２２０に対応した、一つ以上のボリューム２２１０の記憶領域に分散してマッピングされる。【０２６５】
ストレージレベル仮想ボリューム２２３０は、ストレージ仮想化モジュール２５０１により構築される。ストレージレベル仮想ボリューム２２３０は、仮想的なエリア（ＬＬ−ＡＡ）を持つ。ボリューム２２１０のエリア（ＬＬ−ＳＡ）とは異なり、ストレージレベル仮想ボリューム２２３０定義直後は、ストレージレベル仮想ボリューム２２３０のエリア（ＬＬ−ＡＡ）は、ＰＤＥＶ２１００ａの有する物理記憶領域に対応していない。【０２６６】
ストレージレベル仮想ボリューム２２３０の仮想エリア（ＬＬ−ＡＡ）に対するライト要求が発行された場合、そのエリア（ＬＬ−ＡＡ）にプール２２２０内の一部エリア（ＬＬ−ＳＡ）が割当てられていなければ、ストレージコントローラ４０５０ａの行う制御により、ストレージレベルプール２２２０の未割当エリア（ＬＬ−ＳＡ）が動的にマッピングされる。【０２６７】
ストレージレベル仮想ボリューム２２３０の仮想記憶領域は、全てがＰＤＥＶ２１００ａの持つ記憶領域のような、物理記憶領域に対応していなくて良いため、ストレージシステム２０００の有する物理記憶領域（例えばプール２２２０の容量）よりも大きな値を、ストレージレベル仮想ボリューム２２３０の仮想記憶領域（容量）として設定することができる。また、ストレージレベル仮想ボリュームへのアクセス開始後に未割当エリア（ＬＬ−ＳＡ）が不足した場合にもストレージレベル仮想ボリュームにアクセスする計算機の設定変更を行わずに、新たなボリュームをプール２２２０に含めることで未割当エリア（ＬＬ−ＳＡ）の不足に伴うライト要求の失敗を回避することができる。【０２６８】
ストレージシステム２０００は、物理サーバ３０００に、ストレージレベル仮想ボリューム２２３０を提供する。ＰＤＥＶ４０５０ａの持つ物理記憶領域は、ストレージレベル仮想ボリューム２２３０、ストレージレベルプール２２２０を構成しているボリューム２２１０を経由し、物理サーバ３０００によりアクセスされる。【０２６９】
＜５−１−１．ストレージレベルプールへのボリュームの追加＞。【０２７０】
図２６は、ストレージレベルプール２２２０へのボリューム２２１０の追加する処理を表すフローである。【０２７１】
ストレージレベルプール２２２０の設定は、ストレージ仮想化モジュール２５０１によって実行される。【０２７２】
（ステップＳ１１０１）まず、ストレージ管理者は、管理プログラム１２００に、ストレージレベルプール２２２０に設定するボリューム２２１０の情報を入力する。ストレージレベルプール２２２０の識別子、閾値、ボリューム２２１０の数、及び、ボリューム識別子が設定される。【０２７３】
（ステップＳ１１０２）ストレージ管理モジュール１２０１は、入力された情報を含むストレージレベルプール２２２０設定の指示コマンドを生成し、ＮＩＣを介して、その指示コマンドをストレージシステム２０００に送信する。【０２７４】
（ステップＳ１１０３）ストレージシステム２０００において、管理サーバ１０００から送信された指示コマンドは、ＮＩＣを介して、コマンド制御モジュール２５０３が受信する。【０２７５】
コマンド制御モジュール２５０３は、受信した指示コマンドの内容を確認する。指示コマンドの内容が無効である場合、モジュール２５０３は、コマンドを拒否する（例えばエラーを応答する）。【０２７６】
（ステップＳ１１０４）コマンド制御モジュール２５０３は、指示コマンドがストレージレベルプール２２２０の設定である場合は、ストレージ仮想化モジュール２５０１に受信した指示コマンドを渡す。ストレージ仮想化モジュール２５０１は、指示コマンドを受け取って、ストレージレベルプール設定処理を開始する。【０２７７】
（ステップＳ１１０５）ストレージ仮想化モジュール２５０１は、まず、ストレージレベルプール情報１１０００を調べ、指示コマンドに係るストレージレベルプール識別子１１００１が有効であるかを確認する。また、ストレージ仮想化モジュール２５０１は、そのストレージレベルプール識別子１１００１は未だ未定義であるかを確認する。【０２７８】
（ステップＳ１１０６）次に、ストレージ仮想化モジュール２５０１は、指示コマンドに係るボリューム２２１０が使用可能であるか否かを確認する。具体的には、例えば、指示コマンドに係るボリューム２２１０がフォーマット中等である場合は、当該ボリューム２２１０は使用不可であるため、ストレージ仮想化モジュール２５０１は、コマンドを拒否する（例えばエラーを応答する）。また、指示コマンドに係るボリューム２２１０が既に使用中である場合（例えば、ボリューム２２１０がパス定義済みである場合、コピー機能等によって使用中である場合又はコピー先として予約中に設定されている場合）は、ストレージ仮想化モジュール２５０１は、当該ボリューム２２１０は使用不可であるため、コマンドを拒否する。【０２７９】
（ステップＳ１１０７）次に、ストレージ仮想化モジュール２５０１は、ストレージレベルプール情報１１０００に、ストレージレベルプール容量１１００２、ボリューム識別子１１００４、を設定する。このストレージ仮想化モジュール２５０１の処理によって、ボリューム２２１０が、ストレージレベルプール２２２０に追加される。そして、ストレージ仮想化モジュール２５０１は、未割当ＬＬ−ＳＡの識別子リスト１１００８に、登録したボリュームの全てまたは一部のエリアをＬＬ−ＳＡとしてリストに追加する。【０２８０】
（ステップＳ１１０８）次に、ストレージ制御プログラム２５００は、管理サーバ１０００に、コマンドが成功した旨の応答を送信する。【０２８１】
管理サーバ１０００のストレージ構成管理モジュール２５０２は、ストレージシステム２０００からの応答を受信すると、処理を終了する。【０２８２】
以上の処理によって、ボリューム２２１０が、ストレージレベルプール２２２０に追加される。【０２８３】
＜５−１−２．ストレージレベル仮想ボリュームからのリード＞。【０２８４】
図２４は、ストレージレベル仮想ボリュームからデータをリードする処理のフローである。【０２８５】
物理サーバは、ストレージレベル仮想ボリュームのＬＵＮと、当該ボリューム内のブロックアドレスを指定して、Ｉ／Ｏ要求を送信する。このＩ／Ｏ要求は、データのリード要求である。【０２８６】
（ステップＳ９０１）ストレージシステム２０００では、コマンド制御モジュール２５０３が、物理サーバ３０００からのＩ／Ｏ要求を受信する。受信したＩ／Ｏ要求の内容が無効である場合は、その要求が拒否される（例えばエラーが応答される）。受信したＩ／Ｏ要求の内容が有効である場合は、コマンド制御モジュール２５０３が、そのＩ／Ｏ要求の内容を解析する。解析の結果、コマンド制御モジュール２５０３は、Ｉ／Ｏ要求がデータのリード要求であることを知る。【０２８７】
（ステップＳ９０２）次に、コマンド制御モジュール２５０３は、受信した要求に係るリード対象のストレージレベル仮想ボリューム２２３０のブロックアドレスを取得する。【０２８８】
（ステップＳ９０３）次に、コマンド制御モジュール２５０３は、リード対象のストレージレベル仮想ボリューム２２３０に対応するストレージレベルプール２２２０から、リード要求の該当領域のアドレスを含むエリア（ＬＬ−ＡＡ）にマッピングされているボリュームのエリア（ＬＬ−ＳＡ）のブロックアドレスを取得する。このとき、ストレージレベル仮想ボリューム２２３０のリード要求の該当領域のアドレスは、複数のボリューム２２１０のアドレスに分散してマッピングされている場合がある。なお、当該処理はストレージレベルプール情報１１０００とストレージレベル仮想ボリューム情報１２０００を参照することで行うが、詳細な処理はこれら情報を説明する段階で既に説明済みである。【０２８９】
（ステップＳ９０４）次に、コマンド制御モジュール２５０３は、ボリューム情報１４０００を参照し、該当ボリューム２２１０の領域のアドレスに対応したＰＤＥＶ２１００ａを特定し、該当ＰＤＥＶ２１００ａのアドレスを取得する。【０２９０】
（ステップＳ９０５）次に、コマンド制御モジュール２５０３は、ＰＤＥＶ２１００ａの該当アドレスから要求に係るデータを読み出し、物理サーバ３０００に送信する。【０２９１】
（ステップＳ９０６）そして、コマンド制御モジュール２５０３は、物理サーバ３０００にリード要求の完了報告を送信して、処理を終了する。【０２９２】
なお、ステップＳ９０３でリード要求の該当領域のアドレスを含むエリア（ＬＬ−ＡＡ）に割当てられているボリュームのエリア（ＬＬ−ＳＡ）が無い場合は、クリア値（例えば０の羅列）を物理サーバ３０００に送信してもよい。【０２９３】
＜５−１−３．ストレージレベル仮想ボリュームへのライト＞。【０２９４】
図２５は、ストレージレベル仮想ボリューム２２３０へのデータのライト処理を表すフローの一部であり、図３９は、そのフローの残りである。【０２９５】
物理サーバ３０００は、ストレージレベル仮想ボリューム２２３０のＬＵＮと当該ボリューム内のブロックアドレスを指定して、Ｉ／Ｏ要求を送信する。このＩ／Ｏ要求は、データのライト要求である。【０２９６】
（ステップＳ１００１）ストレージシステム２０００において、コマンド制御モジュール２５０３が、物理サーバ３０００からのＩ／Ｏ要求を受信する。受信したＩ／Ｏ要求が無効である場合は、その要求が拒否される（例えばエラーが応答される）。そして、コマンド制御モジュール２５０３が、そのＩ／Ｏ要求の内容を解析する。解析の結果、コマンド制御モジュール２５０３は、Ｉ／Ｏ要求がデータのライト要求であることを知る。【０２９７】
（ステップＳ１００２）次に、コマンド制御モジュール２５０３は、受信したライト要求に係るストレージレベル仮想ボリューム２２３０のブロックアドレスを取得する。【０２９８】
（ステップＳ１００３）次に、コマンド制御モジュール２５０３は、ストレージレベル仮想ボリューム情報１２０００を参照し、ストレージレベル仮想ボリューム２２３０に対応するストレージレベルプール２２２０を特定し、その状態を取得する。【０２９９】
（ステップＳ１００４）コマンド制御モジュール２５０３は、ストレージレベルプール情報１１０００を参照し、そのストレージレベルプール２２２０に対応するボリューム２２１０を特定し、該当ボリューム２２１０が使用可能であるか否かを判定する。【０３００】
（ステップＳ１００５）ボリューム２２１０が使用可能でない場合は、該当ボリューム２２１０にはアクセス出来ないので、コマンド制御モジュール２５０３は、Ｉ／Ｏエラーを物理サーバ３０００に送信する。【０３０１】
（ステップＳ１００６）ボリューム２２１０が使用可能であると判断した場合、コマンド制御モジュール２５０３は、要求送信元の物理サーバ３０００に、ライトデータの転送が可能である旨を送信する。物理サーバ３０００は、これを受けて、ライトデータをストレージシステム２０００に送信する。【０３０２】
（ステップＳ１００７）コマンド制御モジュール２５０３は、物理サーバ３０００が送信したライトデータを受信する。【０３０３】
（ステップＳ１０１０）ストレージ仮想化モジュール２５０１は、まず、ストレージレベル仮想ボリューム情報１２０００及びストレージレベルプール情報１１０００を参照し、ライト要求のブロックアドレスを含むエリア（ＬＬ−ＡＡ）に、ストレージレベルプール２２２０のエリア（ＬＬ−ＳＡ）が割当てられているかを確認する。【０３０４】
（ステップＳ１０１１）ステップＳ１０１０で割当済みと判定した場合は、ストレージ仮想化モジュール２５０１は、ストレージレベル仮想ボリューム情報１２０００及びストレージレベルプール情報１１０００を参照し、指定されたブロックアドレスを含むエリア（ＬＬ−ＡＡ）に割当てられたボリューム及び当該ボリュームのエリア（ＬＬ−ＳＡ）のブロックアドレスを取得する。【０３０５】
（ステップＳ１０１２）次に、ストレージ仮想化モジュール２５０１は、ボリューム情報１３０００を参照し、ステップＳ１０１１で取得したボリューム及びブロックアドレスに対応するＰＤＥＶ２１００ａを特定し、該当ＰＤＥＶ２１００ａの領域のアドレスを取得し、ライトデータ（ライト要求に付随するデータ）を書き込む。【０３０６】
（ステップＳ１０１３）ストレージ仮想化モジュール２５０１は、ライトデータの書き込みが完了すると、コマンド制御モジュール２５０３にライト完了を報告する。コマンド制御モジュール２５０３は、この報告を受けて、物理サーバ３０００に、ライト要求の完了報告を送信して、処理を終了する。【０３０７】
（ステップＳ１０１４）一方、ステップＳ１０１０で未割当と判定した場合、ストレージ仮想化モジュール２５０１は、ストレージレベルプール情報１１０００を参照して、対応するストレージレベルプール２２２０に、未割当のエリア（ＬＬ−ＳＡ）があるか確認する。なお本ステップは未割当ＬＬ−ＳＡの識別子リスト１１００８を参照することで実現できる。【０３０８】
（ステップＳ１０１５）ステップＳ１０１４で未割当のエリア（ＬＬ−ＳＡ）があると判定した場合は、ストレージ仮想化モジュール２５０１は、ストレージレベルプール２２２０の未割当エリア（ＬＬ−ＳＡ）を選択し、選択したエリア（ＬＬ−ＳＡ）のボリューム及びブロックアドレスを取得し、ステップＳ１０１０にて未割当と判定されたエリア（ＬＬ−ＡＡ）に割当てる。なお、本ステップの選択したエリア（ＬＬ−ＳＡ）の選択は、例えば未割当ＬＬ−ＳＡの識別子リスト１１００８の先頭から未割当エリア（ＬＬ−ＳＡ）を抜くことで可能である。また、図３０及び図３１で説明した方法で、選択したエリア（ＬＬ−ＳＡ）のボリュームの識別子とブロックアドレスを特定できる。【０３０９】
（ステップＳ１０１６）そして、モジュール２５０１は、ストレージレベルプール情報１１０００及びストレージレベル仮想ボリューム情報１２０００を更新する。具体的には、ストレージレベルプールの割当済み容量１１００３とストレージレベル仮想ボリュームの割当済み容量１２００３を、選択エリア（ＬＬ−ＳＡ）の容量分増やす。また、ストレージレベルエリア変換情報１２００７のＳ１０１０のエリア（ＬＬ−ＡＡ）に対応した値を未割当から、先ほど取得したボリュームとブロックアドレスに更新する。【０３１０】
（ステップＳ１０１７）一方で、ステップＳ１０１４で未割当のエリア（ＬＬ−ＳＡ）が無い（または不足）と判断した場合は、ストレージ仮想化モジュール２５０１は、ストレージレベルプール２２２０管理情報の状態を「プール容量不足」に変更する。【０３１１】
（ステップＳ１０１８）そして、モジュール２５０１は、Ｉ／Ｏ要求元の物理サーバ３０００及びストレージシステム２０００に、プール容量不足を通知して処理を終了する。【０３１２】
以上の処理によって、物理サーバ３０００のデータのライト要求の処理が完了する。【０３１３】
＜５−１．サーバでのＴｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇ＞。【０３１４】
図５は、物理サーバ３０００で行われるＴｈｉｎ−Ｐｒｏｖｉｓｉｏｎｉｎｇを表す図である。【０３１５】
物理サーバ３０００では、サーバ仮想化プログラム３２００により、サーバレベルプール３２１０、サーバレベル仮想ボリューム３２２０、仮想マシン３２０１が構築される。
サーバレベルプール３２１０は、ストレージシステム２０００から提供される複数のストレージレベル仮想ボリューム２２３０の複数のエリア（ＬＬ−ＡＡ）を含む記憶領域をエリア（ＨＬ−ＳＡ）として使用するためのプールである。サーバレベルプール３２１０は、サーバ仮想化プログラム３２００により、ストレージシステム２０００から割当てられた、一つ以上のストレージレベル仮想ボリューム２２３０から構築される。サーバレベルプール３２１０は、主にファイルシステムの形式をとり、仮想マシン３２０１のイメージファイル、サーバレベル仮想ボリューム３２２０のイメージファイルなどが格納される。また、仮想マシンを一時的に停止する際の仮想マシン上のメモリ上に仮想的に格納されているデータもイメージファイルとして格納される。即ち、物理サーバの視点からはストレージレベル仮想ボリュームに仮想マシンについての、イメージファイル及びメモリイメージ及びサーバレベル仮想ボリューム３２２０に格納したとされる各種データ、が格納されているように見える。サーバレベル仮想ボリューム３２２０の管理領域もサーバレベルプール３２１０内に確保される。この管理領域には、サーバレベル仮想ボリューム３２２０の仮想記憶領域のアドレス情報や、ストレージシステム２０００から提供されたストレージレベル仮想ボリューム２２３０へのマッピング情報などが格納される。【０３１６】
サーバレベル仮想ボリューム３２２０は、サーバ仮想化プログラム３２００により構築される。サーバレベル仮想ボリューム３２２０は仮想記憶領域を持つ。サーバレベル仮想ボリューム３２２０の仮想記憶領域は、サーバ仮想化プログラム３２００により、仮想マシン３２０１からのライト要求に応じて、必要な容量分の領域が、サーバレベルプール３２１０の記憶領域に、動的にマッピングされる。【０３１７】
仮想マシン３２０１は、サーバ仮想化プログラム３２００によって構築される仮想的な計算機である。仮想サーバ環境では、複数の仮想マシン３２０１が物理サーバの物理リソースを共有して稼働する。仮想マシン３２０１には物理的な計算機と同様に、ＯＳ３２３０をインストールすることができ、独立したサーバマシンとして使用することが出来る。仮想マシン３２０１は、サーバレベル仮想ボリューム３２２０を経由してサーバレベルプール３２１０の記憶領域（実際にはストレージレベル仮想ボリューム）にアクセスする。【０３１８】
仮想マシン３２０１からのサーバレベル仮想ボリューム３２２０へのアクセスは、サーバ仮想化プログラム３２００により制御される。これにより、仮想マシン３２０１上のＯＳ３２３０には、サーバレベル仮想ボリューム３２２０が、物理記憶領域を持つ記憶デバイスと同様に認識される。サーバ仮想化プログラム３２００による制御としては、後述するサーバレベル仮想ボリューム３２２０に対するリード、ライト、容量問い合わせの処理がある。なお、仮想マシン３２０１上のＯＳ３２３０から発行される容量問い合わせ要求は、ＯＳ３２３０がサーバレベル仮想ボリューム３２２０を利用する際に必要となる当該ボリュームの容量を取得するための要求である。【０３１９】
なお、以下の説明では仮想マシン３２０１で実行するＯＳ３２３０がサーバレベル仮想ボリューム３２２０に対して発行するＩ／ＯプロトコルはＳＣＳＩを例としている。しかし、ＳＣＳＩプロトコルの変わりとして、例えばＩＤＥやＳＡＳといったほかのブロックアクセス型のプロトコルを採用してもよい。【０３２０】
＜５−１−１．サーバレベルプールの設定＞。【０３２１】
図２１は、サーバレベルプール３２１０へのストレージレベル仮想ボリューム２２３０の設定、追加処理を表すフローである。【０３２２】
（ステップＳ１２０１）まず、サーバ管理者は、サーバ仮想化プログラム３２００に、サーバレベルプール３２１０に設定するボリュームの情報を入力する。サーバレベルプール３２１０に設定するボリュームは、ストレージシステム２０００から提供されるストレージレベル仮想ボリュームを用いる。サーバレベルプール３２１０の識別子、閾値、ストレージレベル仮想ボリューム２２３０の数、及びＬＵＮ１６０３が設定される。【０３２３】
（ステップＳ１２０２）サーバ仮想化プログラム３２００は、入力された情報を含むサーバレベルプール３２１０設定の指示コマンドが有効であるかどうかを確認する。無効である場合は、プログラム３２００は、そのコマンドを拒否する（例えばエラーを応答する）。【０３２４】
（ステップＳ１２０３）サーバ仮想化プログラム３２００は、まず、サーバレベルプール情報１５０００を参照し、指示コマンドに係るサーバレベルプール識別子１８０１が有効であるかを確認する。【０３２５】
（ステップＳ１２０４）次に、サーバ仮想化プログラム３２００は、指示コマンドに係るストレージレベル仮想ボリューム２２３０が使用可能であるか否かを確認する。具体的には、例えば、指示コマンドに係るストレージレベル仮想ボリューム２２３０がフォーマット中等である場合は、該当ストレージレベル仮想ボリューム２２３０は使用不可であるため、プログラム３２００は、コマンドを拒否する（例えばエラーを応答する）。また、例えば、指示コマンドに係るストレージレベル仮想ボリューム２２３０がすでに使用中である場合（例えば、ストレージレベル仮想ボリューム２２３０がパス定義済みである場合）は、プログラム３２００は、該当ストレージレベル仮想ボリューム２２３０は使用不可であるため、コマンドを拒否する。【０３２６】
（ステップＳ１２０５）次に、サーバ仮想化プログラム３２００は、サーバレベルプール情報１５０００に、サーバレベルプール容量１５００２、構成ストレージポート番号・ＬＵＮ１５００６を設定する。このサーバ仮想化プログラム３２００の処理によってストレージレベル仮想ボリューム２２３０がサーバレベルプール３２１０に設定される。そして、サーバ仮想化プログラム３２００は、未割当ＨＬ−ＳＡの識別子リスト１５００８に、登録したストレージレベル仮想ボリュームの全てまたは一部のエリアをＨＬ−ＳＡとしてリストに追加する。【０３２７】
＜５−１−２．サーバレベル仮想ボリュームへのＩ／Ｏ＞。【０３２８】
＜５−１−２ａ．サーバレベル仮想ボリュームに対する容量問い合わせ要求の処理＞。【０３２９】
本処理は、仮想マシン３２０１上のＯＳ３２３０が容量問い合わせ要求を行った場合の処理について説明する。なお、通常はその後、ＯＳ３２３０はライト要求やリード要求を発酵したり、サーバレベル仮想ボリューム３２２０のファイルシステムフォーマット処理を実行する。【０３３０】
仮想マシン３２０１上のＯＳ３２３０は、仮想マシン認識デバイス識別子１８０８を指定して、容量問い合わせ要求を発行する。サーバ仮想化プログラム３２００は、この要求に対して、以下の処理を行うことにより、仮想マシン３２０１上のＯＳ３２３０にサーバレベル仮想ボリューム３２２０の容量を返す。これにより、仮想マシン３２０１上のＯＳ３２３０は、サーバレベル仮想ボリューム３２２０の容量が把握できる。【０３３１】
（ステップＡ）サーバ仮想化プログラム３２００は、仮想マシン３２０１上のＯＳが送信した容量問い合わせ要求を受信する。【０３３２】
（ステップＢ）サーバ仮想化プログラム３２００は、要求の内容を解析する。そして、サーバレベル仮想ボリューム情報１６０００を参照し、問い合わせ先の仮想マシン認識デバイス識別子１６００７に対応するサーバレベル仮想ボリューム識別子１６００１を特定する。【０３３３】
（ステップＣ）サーバ仮想化プログラム３２００は、サーバレベル仮想ボリューム情報１６０００からステップＢで特定した識別子のサーバレベル仮想ボリューム容量１６００２を取得する。【０３３４】
（ステップＤ）サーバ仮想化プログラム３２００は、仮想マシン３２０１上のＯＳ３２３０が認識する記憶デバイスのディスクサイズとしてステップＣで取得した容量を仮想マシン３２０１上のＯＳ３２３０に通知して、処理を終了する。【０３３５】
以上の処理によって、仮想マシン３２０１上のＯＳ３２３０は、サーバレベル仮想ボリューム３２２０の容量を把握することができる。【０３３６】
＜５−１−２ｂ．サーバレベル仮想ボリュームに対するリード要求の処理＞。【０３３７】
図２２は、サーバ仮想化プログラムが仮想マシンからサーバレベル仮想ボリュームへのリード要求を受け付けた場合に行われる処理のフローである。【０３３８】
本処理は、仮想マシン３２０１上のＯＳ３２３０によるリード対象であるサーバレベル仮想ボリューム３２２０の仮想マシン認識デバイス識別子と、ブロックアドレスと、ブロック長を指定したリード要求の発行を、サーバ仮想化プログラム３２００が検知して開始される。【０３３９】
（ステップＳ１３０１）サーバ仮想化プログラム３２００が、仮想マシン３２０１からＩ／Ｏ要求を受信する。受信したＩ／Ｏ要求の内容が無効である場合は、プログラム３２００は、その要求を拒否する（例えばエラーを応答する）。受信したＩ／Ｏ要求の内容が有効である場合は、プログラム３２００は、そのＩ／Ｏ要求の内容を解析する。解析の結果、サーバ仮想化プログラム３２００は、Ｉ／Ｏ要求がデータのリード要求であることを知る。【０３４０】
（ステップＳ１３０２）次に、サーバ仮想化プログラム３２００は、受信した要求に係るリード対象のサーバレベル仮想ボリューム３２２０と、対象サーバレベル仮想ボリューム内のブロックアドレスを取得する。【０３４１】
（ステップＳ１３０３）次に、サーバ仮想化プログラム３２００は、サーバレベル仮想ボリューム情報１６０００を参照し、リード対象のサーバレベル仮想ボリューム３２２０に対応するサーバレベルプール３２１０から、リード要求の該当領域のアドレスを含むエリア（ＨＬ−ＡＡ）にマッピングされているストレージレベル仮想ボリューム２２３０の識別子とストレージレベル仮想ボリュームのエリア（ＨＬ−ＳＡ）のアドレスを取得する。このとき、サーバレベル仮想ボリューム３２２０のリード要求の該当領域のアドレスは、複数のストレージレベル仮想ボリューム２２３０のアドレスに分散してマッピングされている場合がある。なお、当該処理は、サーバレベルプール情報１５０００とサーバレベル仮想ボリューム情報１６０００を参照することで行うが、詳細な処理はこれら情報を説明する段階で既に説明済みである。【０３４２】
（ステップＳ１３０４）次に、サーバ仮想化プログラム３２００は、ステップＳ１３０３で取得したストレージレベル仮想ボリューム２２３０の識別子と、エリア（ＨＬ−ＳＡ）ストレージレベル仮想ボリューム２２３０の対応エリア（ＨＬ−ＳＡ）のアドレスを指定したリード要求をストレージシステム２０００へ送信する。そしてサーバ仮想化プログラム３２００からリード要求に係るデータを受信し、当該データを仮想マシン３２０１に送信する。【０３４３】
（ステップＳ１３０５）そして、仮想マシン３２０１にリード要求の完了報告を通知して、処理を終了する。【０３４４】
なお、ステップＳ１３０３でリード要求の該当領域のアドレスを含むエリア（ＨＬ−ＡＡ）に割当てられているボリュームのエリア（ＨＬ−ＳＡ）が無い場合は、クリア値（例えば０の羅列）を仮想マシン３２０１に送信してもよい。【０３４５】
＜５−１−２ｃ．サーバレベル仮想ボリュームに対するライト要求の処理＞。【０３４６】
図２３及び図４０は、サーバ仮想化プログラムが仮想マシンからサーバレベル仮想ボリュームへのライト要求を受け付けた場合に行われる処理のフローである。【０３４７】
本処理は、仮想マシン３２０１上のＯＳ３２３０がライト対象であるサーバレベル仮想ボリューム３２２０の仮想マシン認識デバイス識別子と、ブロックアドレスと、ブロック長さを指定したライト要求発行をサーバ仮想化プログラム３２００が検知して開始される。【０３４８】
（ステップＳ１４０１）物理サーバ３０００において、サーバ仮想化プログラム３２００が、仮想マシン３２０１からのＩ／Ｏ要求を受信する。受信したＩ／Ｏ要求が無効である場合、プログラム３２００は、そのＩ／Ｏ要求を拒否する。受信したＩ／Ｏ要求が有効である場合は、プログラム３２００は、そのＩ／Ｏ要求の内容を解析する。解析の結果、サーバ仮想化プログラム３２００は、Ｉ／Ｏ要求がデータのライト要求であることを知る。【０３４９】
（ステップＳ１４０２）次に、サーバ仮想化プログラム３２００は、受信したライト要求に係るサーバレベル仮想ボリューム３２２０の識別子と当該サーバレベル仮想ボリューム内のブロックアドレスを取得する。【０３５０】
（ステップＳ１４０３）次に、サーバ仮想化プログラム３２００は、サーバレベル仮想ボリューム情報１６０００を参照し、サーバレベル仮想ボリューム２２３０に対応するサーバレベルプール３２１０を特定し、その状態を取得する。【０３５１】
（ステップＳ１４０４）サーバ仮想化プログラム３２００は、サーバレベルプール情報１５０００を参照し、そのサーバレベルプール３２１０に対応するストレージレベル仮想ボリューム２２３０を特定し、該当ストレージレベル仮想ボリューム２２３０が使用可能であるか否かを判定する。【０３５２】
（ステップＳ１４０５）ストレージレベル仮想ボリューム２２３０が使用可能でない場合は、該当ストレージレベル仮想ボリューム２２３０にはアクセス出来ないので、サーバ仮想化プログラム３２００は、Ｉ／Ｏエラーを要求送信元の仮想マシンに送信する。【０３５３】
（ステップＳ１４０６）ストレージレベル仮想ボリューム２２３０が使用可能であると判断した場合、サーバ仮想化プログラム３２００は、要求送信元の仮想マシンに、ライトデータの転送が可能である旨を送信する。当該仮想マシンは、これを受けて、ライトデータをサーバ仮想化プログラム３２００に送信する。【０３５４】
（ステップＳ１４０７）サーバ仮想化プログラム３２００は、物理サーバ３０００が送信したライトデータを受信する。【０３５５】
（ステップＳ１４１０）サーバ仮想化プログラム３２００は、まず、サーバレベル仮想ボリューム情報１６０００及びストレージレベルプール情報１５０００を参照し、ライト要求のブロックアドレスを含むエリア（ＨＬ−ＡＡ）に、サーバレベルプール３２１０のエリア（ＨＬ−ＳＡ）が割当てられているかを確認する。【０３５６】
（ステップＳ１４１１）ステップＳ１４１０で割当済みと判定した場合は、サーバ仮想化プログラム３２００は、サーバレベル仮想ボリューム情報１６０００及びサーバレベルプール情報１５０００を参照し、指定されたブロックアドレスを含むエリア（ＨＬ−ＡＡ）に割当てられたストレージレベル仮想ボリュームの識別子（例えばポート番号及びＬＵＮ）及び当該ボリュームのエリア（ＨＬ−ＳＡ）のブロックアドレスを取得する。【０３５７】
（ステップＳ１４１２）次に、サーバ仮想化プログラム３２００は、ステップＳ１４１１で取得したストレージレベル仮想ボリュームの識別子と、当該ストレージレベル仮想ボリュームのブロックアドレスを指定したライト要求と、ライトデータを送信する。【０３５８】
（ステップＳ１４１３）サーバ仮想化プログラム３２００は、ストレージシステム２０００からのライトデータの書き込みが完了報告を受信すると、要求元の仮想マシンに、ライト要求の完了報告を送信して、処理を終了する。【０３５９】
（ステップＳ１４１４）一方、ステップＳ１４１０で未割当と判定した場合、サーバ仮想化プログラム３２００は、サーバレベルプール情報１５０００を参照して、対応するサーバレベルプール３２１０に、未割当のエリア（ＨＬ−ＳＡ）があるか確認する。なお、本ステップは、未割当ＨＬ−ＳＡの識別子リスト１５００８を参照することで実現できる。【０３６０】
（ステップＳ１４１５）ステップＳ１４１４で未割当のエリア（ＨＬ−ＳＡ）があると判定した場合は、サーバ仮想化プログラム３２００は、ストレージレベルプール２２２０の未割当エリア（ＨＬ−ＳＡ）を選択し、選択したエリア（ＨＬ−ＳＡ）のボリューム及びブロックアドレスを取得し、ステップＳ１４１０にて未割当と判定されたエリア（ＨＬ−ＡＡ）に割当てる。なお、本ステップの選択したエリア（ＨＬ−ＳＡ）の選択は、例えば未割当ＨＬ−ＳＡの識別子リスト１５００８の先頭から未割当エリア（ＨＬ−ＳＡ）を抜くことで可能である。また、図３４及び図３５で説明した方法で、選択したエリア（ＨＬ−ＳＡ）のボリュームの識別子とブロックアドレスを特定できる。【０３６１】
（ステップＳ１４１６）そして、サーバ仮想化プログラム３２００は、サーバレベルプール情報１５０００及びサーバレベル仮想ボリューム情報１６０００を更新する。具体的には、サーバレベルプールの割当済み容量１５００３とサーバレベル仮想ボリュームの割当済み容量１６００３を、選択エリア（ＨＬ−ＳＡ）の容量分増やす。また、サーバレベルエリア変換情報１６００７のＳ１４１０のエリア（ＨＬ−ＡＡ）に対応した値を未割当から、先ほど取得したボリュームとブロックアドレスに更新する。【０３６２】
（ステップＳ１４１７）一方で、ステップＳ１４１４で未割当のエリア（ＨＬ−ＳＡ）が無い（または不足）と判断した場合は、サーバ仮想化プログラム３２００は、サーバレベルプール３２１０の管理情報の状態を「プール容量不足」に変更する。【０３６３】
（ステップＳ１４１８）そして、サーバ仮想化プログラム３２００は、Ｉ／Ｏ要求元の仮想マシン及び物理サーバ３０００に、プール容量不足を通知して処理を終了する。【０３６４】
以上の処理によって、物理サーバ３０００のデータのライト要求の処理が完了する。【０３６５】
なお、ステップＳ１４１２でストレージシステム２０００からライト要求の失敗を通知された場合は、Ｉ／Ｏ要求元の仮想マシンにライト失敗の報告を返す。【０３６６】
＜６．実施例１の処理ステップ＞。【０３６７】
限られた物理ストレージ容量（例えばストレージレベルプールの容量）に対して、大きすぎる仮想ボリューム容量が設定されると、物理ストレージ容量の消費速度の予測がたて難くなり、物理ストレージ容量が枯渇する可能性が上がる。そのため、物理ストレージ容量に対する仮想ボリューム容量の比率（レバレッジ率）を一定以下に保つ必要がある。【０３６８】
実施例１の処理では、ストレージ管理者が、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率の閾値を管理サーバ１０００に設定する。管理サーバ１０００は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率が閾値を超えた場合に、それを検出し、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率が閾値を超えていることを表示する。それにより、ストレージ管理者が、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率の高騰を把握することができる。【０３６９】
図１４及び図１５を参照して、実施例１で管理プログラムが行う処理について説明する。【０３７０】
＜６−１．管理プログラムの行うＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率算出表示処理＞。【０３７１】
図１４は、管理プログラム１２００の行う処理のフローである。以下に個々のステップの詳細を示す。【０３７２】
（ステップＳ１０１）管理プログラム１２００は、ストレージ管理者が管理プログラム１２００の設定画面を用いて入力した初期設定情報１９１０を受信する。初期設定情報１９１０には、容量レバレッジ率の閾値と、容量情報を収集する間隔がある。なお、容量レバレッジ率の閾値は、物理ストレージ容量に対して、対応する仮想ボリューム容量の許容上限を表す値であり、ストレージ管理者が容量計画に基づき設定する。また、容量情報を収集する間隔は、管理プログラム１２００が以降の処理を行う時間の間隔である。また、ストレージ管理モジュール１２０１は、ストレージ管理者からのストレージレベルプール２２２０を特定する情報を受信し、その情報に基づいて、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率の算出を行うストレージレベルプール識別子１４０１を決定する。そして、管理プログラム１２００は、入力された容量レバレッジ率の閾値を、初期設定情報１９１０のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１に、容量情報を収集する間隔を、情報収集間隔１９１２に格納する。また、ストレージ管理モジュール１２０１は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率の算出対象に決定したストレージレベルプールの識別子を、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００のストレージレベルプール識別子１９０１に格納する。【０３７３】
（ステップＳ１０２）管理プログラム１２００は、ストレージ管理者の設定した情報収集間隔１９１２が経過後、すなわち、容量情報を収集するタイミングが訪れたら、ストレージシステム２０００の容量情報と、物理サーバ３０００の容量情報を収集する。具体的には、例えば、管理プログラム１２００のストレージ管理モジュール１２０１が、ストレージシステム２０００の容量情報をストレージシステム２０００から取得し、管理プログラム１２００のサーバ管理モジュール１２０２が、物理サーバ３０００の容量情報を収集する。なお、容量情報収集の具体的な方法は後に説明する。【０３７４】
（ステップＳ１０３）管理プログラム１２００のレバレッジ管理モジュール１２０３が、取得した物理サーバ３０００の容量情報と、ストレージ管理者が指定したストレージレベルプール２２２０の容量情報とに基づいて、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率算出処理を行う。なお、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率処理の詳細は、後ほど図２０を用いて説明する。【０３７５】
（ステップＳ１０４）レバレッジ管理モジュール１２０３は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率の値１９０２が、初期設定情報１９１０のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１より高いか判断する。判断の結果、高い場合は、ステップＳ１０５が実行され、高くない場合は、ステップＳ１０２が実行される。【０３７６】
（ステップＳ１０５）レバレッジ管理モジュール１２０３は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が高騰しており物理ストレージ容量枯渇の可能性が上がっていることを伝えるアラートを表示する。更に、レバレッジ管理モジュール１２０３は、管理プログラム１２００の容量レバレッジ率表示画面１４０３にて、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２の値、ストレージレベルプール容量１４０２、ストレージレベル仮想ボリューム識別子１５０１、ストレージレベル仮想ボリューム容量１５０２、の一覧を表示する。なお、管理プログラム１２００の画面表示で通知する情報は、ストレージレベルプール２２２０の物理容量枯渇の可能性が上がっていることを、ストレージ管理者に伝えることが出来る情報であれば、上記以外の情報を通知しても良い。【０３７７】
（ステップＳ１０６）一方、比較した結果、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１を超えていなかった場合、情報収集間隔１９１２が経過した後、ステップＳ１０２に戻る。【０３７８】
なお、上記の例では、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２を算出するにあたり、ストレージレベルプール容量１４０２と、サーバレベル仮想ボリューム容量１８０２を用いたが、それぞれのカラムの属するテーブルの、別の値が用いられても良い。【０３７９】
＜６−１−１．容量情報収集処理＞。【０３８０】
以下に、図１４のステップＳ１０２で概要を述べた容量情報収集処理の詳細について示す。【０３８１】
（ステップＡ）ストレージ管理モジュール１２０１は、指定されたストレージレベルプール識別子１４０１に対応する、ストレージレベル仮想ボリュームの識別子をストレージシステム２０００の有するストレージレベルプール情報１１０００から収集し、ストレージレベルプール構成情報１４００の、対応ストレージレベル仮想ボリューム識別子１４０４に格納する。【０３８２】
（ステップＢ）ストレージ管理モジュール１２０１は、ポート−ＬＵＮ対応情報１６００を参照し、ステップＡで収集した対応ストレージレベル仮想ボリューム識別子１４０４に割当てられた、ポート番号１６０１とＬＵＮ１６０２を取得する。【０３８３】
（ステップＣ）サーバ管理モジュール１２０２は、ストレージ管理モジュール１２０１がステップＢにて取得したポート番号１６０１及びＬＵＮ１６０２が割当てられたストレージレベル仮想ボリューム２２３０に対応した、サーバレベルプール３２１０の識別子を物理サーバ３０００のサーバレベルプール情報１５０００から収集し、サーバレベルプール構成情報１７００のサーバレベルプール識別子１７０１に格納する。なお、ストレージレベル仮想ボリューム２２３０に対応したサーバレベルプール３２１０とは、前述のストレージレベル仮想ボリューム２２３０が属するように設定が行われたサーバレベルプール３２１０である事を指す。【０３８４】
（ステップＤ）サーバ管理モジュール１２０２は、収集したサーバレベルプール識別子１７０１に対応する全てのサーバレベル仮想ボリューム３２２０の識別子と容量を、物理サーバ３０００のサーバレベルプール情報１５０００から収集する。サーバ管理モジュール１２０２は、サーバレベル仮想ボリューム３２２０の識別子を、サーバレベルプール構成情報１７００の対応サーバレベル仮想ボリューム識別子１７０４と、サーバレベル仮想ボリューム構成情報１８００のサーバレベル仮想ボリューム識別子１８０１に格納する。また、それぞれのサーバレベル仮想ボリューム容量をサーバレベル仮想ボリューム構成情報１８００のサーバレベル仮想ボリューム容量１８０２に格納する。【０３８５】
＜６−１−２．Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率算出処理の詳細＞。【０３８６】
図１５は、図１４のステップＳ１０３の処理のフローである。以下、フローに従って説明する。【０３８７】
（ステップＳ２０１）レバレッジ管理モジュール１２０３は、＜６−１−１．容量情報収集処理＞のステップＳ１０２の（ステップＡ）で指定したストレージレベルプール識別子１４０１に対応するストレージレベルプールの容量を、ストレージシステム２０００に問い合わせる。ストレージシステム２０００は、ストレージレベルプール情報１１０００のストレージレベルプール容量１１００２から、該当データを管理サーバに返す。レバレッジ管理モジュールは、受け取ったストレージレベルプール容量１１００２をストレージレベルプール構成情報１４００のストレージレベルプール容量１４０２に格納する。【０３８８】
（ステップＳ２０２）レバレッジ管理モジュール１２０３は、ステップＳ１０２のステップＤでサーバ管理モジュール１２０２が収集した、サーバレベル仮想ボリューム容量１８０２を合算し、その結果をサーバレベルプール構成情報１７００の、対応サーバレベル仮想ボリューム総容量１７０５に格納する。【０３８９】
（ステップＳ２０３）レバレッジ管理モジュール１２０３は、ステップＳ２０２で算出した対応サーバレベル仮想ボリューム総容量１７０５の値に対する、ステップＳ２０１で取得したストレージレベルプール容量１４０２の比率を算出し、その結果をＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２に格納する。【０３９０】
なお、以上の処理では管理者が指定したストレージレベルプールに対して容量収集及びレバレッジ率の表示を行う前提であったが、管理サーバが管理する複数のストレージレベルプールについてレバレッジ率の表示を行っても良い。この場合の処理としては、管理サーバ１０００が順に複数のストレージレベルプール２２２０の個々を「指定されたストレージレベルプール識別子１４０１」として指定し、図１５及び図１６で示した処理を繰り返せばよい。
【実施例２】
【０３９１】
＜７．実施例２の概要＞。【０３９２】
本発明の実施例２に係る計算機システムは、実施例１の計算機システムに加えて、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が、ストレージ管理者の設定したＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１を超えており、物理ストレージ容量枯渇の危険性が上がっていると判断された場合に、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が高騰する原因となっている個所を特定し、特定した個所の情報をストレージ管理者に管理プログラムの管理画面によって表示する。【０３９３】
また、物理ストレージ容量枯渇を防ぐため、管理プログラム１２００が自動的にストレージシステム２０００の構成を変更する処理を行うことによりＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１を超えない正常な値に収める。【０３９４】
また、コールバックオブジェクトを有するサーバ仮想化プログラム３２００にて、設定操作を受け付けた場合に、その操作が中断される（以下に説明するようなコールバックオブジェクトは、サーバ仮想化プログラム３２００に代えて又は加えて、ストレージ制御プログラム２５００が有しても良い）。そして、受け付けた操作を実行した後のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２がシミュレートされ、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２がストレージ管理者の設定したＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１を超えると判断された場合、管理プログラム１２００が自動的にストレージシステム２０００の構成変更処理を行う。これにより、サーバ仮想化プログラム３２００での設定操作実行後も、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２をストレージ管理者の設定したＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１を超えないような構成とすることができる。管理プログラム１２００による上記の処理が成功した後に、サーバ仮想化プログラム３２００に成功が通知され、サーバ仮想化プログラム３２００は、その通知を受けて、受け付けた設定操作を再開する。一方、管理プログラム１２００による、ストレージシステム２０００の構成変更処理が実施された後も、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２がＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まらないと判断された場合は、仮想管理プログラム１２００に、設定操作による物理ストレージ容量枯渇の危険性が高いことが通知され、設定操作の中止推奨が通知される。【０３９５】
＜７−１．原因個所特定処理＞。【０３９６】
図２７は、原因個所特定処理のフローである。【０３９７】
実施例１の＜６−１．Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２算出処理＞のステップＳ１０５で算出したＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が、ストレージ管理者の設定したＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１を超えており、物理ストレージ容量枯渇の可能性が高いと判断された場合に、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２高騰の原因となっている個所を表す情報が、ストレージ管理者に画面表示により通知される。【０３９８】
（ステップＳ４０１）管理プログラム１２００は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率が高騰しているストレージレベルプール２２２０に対応しているストレージレベル仮想ボリュームの識別子をストレージシステム２０００に問い合わせる。ストレージシステム２０００は、その問合せを受けて、ストレージレベルプール情報１１０００のストレージレベル仮想ボリューム識別子１１００５を返す。管理プログラム１２００は、受信したストレージレベル仮想ボリューム２２３０の識別子一覧を、対応ストレージレベル仮想ボリューム識別子１４０４に格納する。【０３９９】
（ステップＳ４０２）管理プログラム１２００は、取得したストレージレベル仮想ボリューム識別子１４０４を持つ各ストレージレベル仮想ボリューム２２３０に対応しているサーバレベルプール識別子１７０１を取得する。具体的には、例えば、管理プログラム１２００は、ポート−ＬＵＮ対応情報１６００を参照し、内部ボリュームＩＤとして登録してあるストレージレベル仮想ボリューム２２３０の識別子に対応するＬＵＮ１６０３を特定する。そして、管理プログラム１２００は、物理サーバ３０００にＬＵＮ１６０３に対応するサーバレベルプール３２１０の識別子を問い合わせる。物理サーバ３０００のサーバ仮想化プログラム３２００は、これを受けて、サーバレベルプール情報１５０００から、問い合わせがあったＬＵＮ１６０３を構成ストレージポート番号・ＬＵＮ１７０７から特定し、対応するサーバレベルプール識別子１５００１を管理サーバ１０００に返す。管理サーバ１０００の管理プログラム１２００は、受信したサーバレベルプール識別子１５００１をサーバレベルプール構成情報１７００のサーバレベルプール識別子１７０１に格納する。【０４００】
（ステップＳ４０３）管理プログラム１２００は、ステップＳ４０２で取得したサーバレベルプール識別子１７０１に対応するサーバレベル仮想ボリューム３２１０の識別子を、物理サーバ３０００に問い合わせる。物理サーバ３０００のサーバ仮想化プログラム３２００は、これを受けて、サーバレベルプール情報１５０００の該当サーバレベルプール識別子１７０１に対応するサーバレベル仮想ボリューム識別子１５００４を管理サーバ１０００に返す。管理サーバ１０００の管理プログラム１２００は、受信したサーバレベル仮想ボリューム識別子１５００４を、サーバレベルプール構成情報１７００の、対応サーバレベル仮想ボリューム識別子１７０４に格納する。【０４０１】
（ステップＳ４０４）管理プログラム１２００は、ステップＳ４０３で取得した各対応サーバレベル仮想ボリューム識別子１７０４を持つサーバレベル仮想ボリューム３２２０について、サーバレベル仮想ボリューム容量１８０２のうち、サーバレベルプール３２１０の記憶領域にマッピングされている容量を物理サーバ３０００に問い合わせる。物理サーバ３０００のサーバ仮想化プログラム３２００は、これを受けて、サーバレベル仮想ボリューム情報１６０００を参照し、該当サーバレベル仮想ボリューム識別子１７０４に対応するサーバレベル仮想ボリューム割当済容量１６００３を管理サーバ１０００に返す。管理サーバ１０００の管理プログラム１２００は、受信したサーバレベル仮想ボリューム割当済容量１６００３を、サーバレベル仮想ボリューム構成情報１８００のサーバレベル仮想ボリューム割当済容量１８０３に格納する。更に、管理プログラム１２００は、サーバレベル仮想ボリューム容量１８０２の値からサーバレベル仮想ボリューム割当済容量１８０３の値を引き、その結果をサーバレベル仮想ボリューム未割当容量１８０４に格納する。【０４０２】
（ステップＳ４０５）管理プログラム１２００は、ステップＳ４０４で算出した、各サーバレベル仮想ボリューム識別子１８０１に対応する各サーバレベル仮想ボリューム未割当容量１８０４を比較し、そのなかで最もサーバレベル仮想ボリューム未割当容量１８０４の値が高いサーバレベル仮想ボリューム３２２０を、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２高騰の原因個所として、該当サーバレベル仮想ボリューム３２２０の識別子、容量、未割当容量等の情報を表す画面が表示される。その画面の一例を、図３７に示す。図３７の例によれば、仮想マシン（ＶＭ４）にマウントされているサーバレベル仮想ボリュームが原因個所であることの強調表示（例えば、太枠楕円で囲んだ表示）が行われる。なお、原因個所の表示の仕方は、図３７の例に限られず、他の方法で表示されても良い。【０４０３】
＜７−２．通常のストレージ構成変更処理＞。【０４０４】
図１６は、ストレージ構成変更処理のフローである。本処理は、原因個所特定処理を実行した後に実行される。以下に各ステップの説明を記す。【０４０５】
（ステップＳ３０１）管理プログラム１２００は、ストレージレベルプール構成情報１４００のプール構成ボリューム識別子１４０６に登録されていないボリューム２２１０、つまりストレージレベルプール２２２０に属していない余剰なボリューム２２１０がストレージシステム２０００内に存在するかチェックする。【０４０６】
（ステップＳ３０２）管理プログラム１２００は、ストレージシステム２０００内に、ストレージレベルプール２２２０に属していない余剰なボリューム２２１０が存在した場合、自動的に、実施例１の＜６−１−１．容量情報収集処理＞のステップＳ１０２の（ステップＡ）で指定したストレージレベルプール識別子１４０１を持つストレージレベルプール２２２０に、余剰なボリューム２２１０を新たに属するように設定することによって、ストレージレベルプール２２２０に容量を追加する。ストレージレベルプール２２２０に追加する容量は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２がＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まるような値に管理プログラム１２００が決定する。なお、ストレージレベルプール２２２０に追加する容量は、ストレージ管理者が物理サーバ３０００の管理画面にて設定してもよい。【０４０７】
（ステップＳ３０３）ステップＳ３０２を実行した結果、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が、ストレージ管理者の設定したＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まった場合は、ステップＳ３０８に進む。一方で、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まらなかった場合は、ステップＳ３０４に進む。【０４０８】
（ステップＳ３０４）ステップＳ３０３でＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２がＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まらなかった場合、管理プログラム１２００は、ストレージシステム２０００内に該当ストレージレベルプール２２２０以外のストレージレベルプール２２２０が存在するかをストレージシステム２０００に問い合わせる。存在する場合は、管理プログラム１２００は、問い合わせた該当ストレージレベルプール２２２０以外のストレージレベルプール２２２０の識別子を、ストレージシステム２０００に問い合わせる。ストレージシステム２０００のコマンド制御モジュール２５０３は、ストレージレベルプール情報１１０００を参照し、該当ストレージレベルプール２２２０の識別子以外のストレージレベルプール識別子１１００１を管理サーバ１０００に返す。管理サーバ１０００の管理プログラム１２００は受信したストレージレベルプール識別子１１００１をストレージレベルプール構成情報１４００のストレージレベルプール識別子１４０１に格納し、ステップＳ３０５に進む。存在しない場合は、ステップＳ３０８に進む。【０４０９】
（ステップＳ３０５）管理プログラム１２００は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００を参照し、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２の低い（例えば最も低い）ストレージレベルプール識別子１４０１を指定する。そして、該当ストレージレベルプール２２２０のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まるように、該当ストレージレベルプール２２２０とステップＳ３０５で選択した、ストレージレベルプール２２２０との間で、サーバレベル仮想ボリューム３２２０のイメージファイルをマイグレーションする。なお、このときマイグレーションするサーバレベル仮想ボリューム３２２０は、＜７−１．原因個所特定処理＞のステップＳ４０５でＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率高騰の原因個所として特定したサーバレベル仮想ボリューム３２２０が指定される。その原因箇所が、自動で、マイグレーション対象として指定されても良い。原因箇所としてのサーバレベル仮想ボリューム３２２０が、別のストレージレベルプールに対応するサーバレベル仮想ボリュームにマイグレーションされれば、マイグレーション元のストレージレベルプールに対応したサーバレベル仮想ボリュームの総容量が減るので、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率が下がる。この場合、上記別のストレージレベルプールは、マイグレーション対象のサーバレベル仮想ボリューム３２２０がマイグレーションされても、その別のストレージレベルプールについてのＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率が閾値を超えないことが望ましい。具体的には、例えば、別のストレージレベルプールに対応したサーバレベル仮想ボリュームの総容量に、マイグレーション対象のサーバレベル仮想ボリュームの容量が加算されても、別のストレージレベルプールについてのＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率が閾値を超えないかどうか判定され、超えないと判定された場合に、その別のストレージレベルプールがマイグレーション先に決定されて良い。【０４１０】
（ステップＳ３０６）ステップＳ３０５を実行した結果、該当ストレージレベルプール２２２０のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まったら、ステップＳ３０８に進む。一方、該当ストレージレベルプール２２２０のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まらなかったら、ステップＳ３０７に進む。【０４１１】
（ステップＳ３０７）ステップＳ３０２、ステップＳ３０５を実行してもＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２がストレージ管理者の設定したＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まらなかった旨が通知される。【０４１２】
（ステップＳ３０８）ステップＳ３０２もしくはステップＳ３０５にて、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２がＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まった場合、ストレージ管理者にその旨が通知される。【０４１３】
＜７−３．コールバックインターフェースを用いた管理プログラムの行う処理＞。【０４１４】
図１７は、コールバックインターフェースを用いた管理プログラムの行う処理を示すフローである。【０４１５】
（ステップＳ５０１）管理プログラム１２００は、ストレージ管理者が管理プログラム１２００の設定画面を用いて入力した初期設定情報１９１０を受信する。初期設定情報１９１０には、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率の閾値が入力される。そして、管理プログラム１２００は、入力された閾値を、初期設定情報１９１０のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１に格納する。【０４１６】
（ステップＳ５０２）次に、コールバック処理が行われる。図１９を参照して、コールバック処理の詳細を説明する。【０４１７】
図１９は、コールバック処理のフローである。【０４１８】
（ステップＳ６０１）サーバ仮想化プログラム３２００は、管理プログラム１２００のアドレスを登録する。【０４１９】
（ステップＳ６０２）サーバ仮想化プログラム３２００は、設定操作イベント受付時に、管理プログラム１２００にコールバックオブジェクトを送信する。コールバックオブジェクトには、設定操作実行前のサーバレベル仮想ボリューム３２２０の総容量と、設定操作内容が含まれている。【０４２０】
（ステップＳ６０３）管理プログラム１２００は、サーバ仮想化プログラム３２００からコールバックオブジェクトが送られてくるのを待ち、サーバ仮想化プログラム３２００からコールバックオブジェクトが送られて来たら、これを受信する。【０４２１】
（ステップＳ６０４）管理プログラム１２００は、受信したコールバックオブジェクトの持つ情報を基に、シミュレーションにより、サーバ仮想化プログラム３２００にて受け付けた操作を実行した後の、サーバレベル仮想ボリューム３２２０の総容量を算出する。【０４２２】
（ステップＳ６０５）管理プログラム１２００は、設定操作に係るサーバレベル仮想ボリューム３２２０に対応する、ストレージレベルプール２２２０を特定する。具体的なステップは以下の通りである。【０４２３】
（ステップＡ）サーバ管理モジュール１２０２が、設定操作に係るサーバレベル仮想ボリュームの識別子１８０１に対応する、サーバレベルプール３２１０の識別子を物理サーバ３０００に問い合わせる。物理サーバ３０００のサーバ仮想化プログラム３２００は、これを受けて、サーバレベル仮想ボリューム情報１６０００を参照し、サーバレベルプール識別子１６００４を返す。管理プログラム１２００は、受信したサーバレベルプール識別子１６００４を、サーバレベル仮想ボリューム構成情報１８００の対応サーバレベル仮想ボリューム識別子１８０６に格納する。【０４２４】
（ステップＢ）次に、管理プログラム１２００は、サーバレベルプール構成情報１７００を参照し、ステップＡでの対応サーバレベルプール識別子１８０６と同じ識別子を持つ、サーバレベルプール識別子１７０１を特定する。そして、管理プログラム１２００は、特定したサーバレベルプール３２１０に対応する構成ストレージポート番号・ＬＵＮ１７０７を物理サーバ３０００に問い合わせる。物理サーバ３０００のサーバ仮想化プログラム３２００は、これを受けて、サーバレベルプール情報１５０００を参照し、構成ストレージポート番号・ＬＵＮ１５００６を管理サーバ１０００に返す。管理サーバ１０００の管理プログラム１２００は、受信した、構成ストレージポート番号・ＬＵＮ１５００６をサーバレベルプール構成情報１７００の構成ストレージポート・ＬＵＮ１７０７に格納する。【０４２５】
（ステップＣ）次に、管理プログラム１２００は、ポート−ＬＵＮ対応情報１６００を参照し、ステップＢで取得した構成ストレージポート番号・ＬＵＮ１７０７に対応する内部ボリュームＩＤ１６０１を取得する。【０４２６】
（ステップＤ）次に、管理プログラム１２００は、ストレージレベル仮想ボリューム構成情報１５００を参照し、内部ボリュームＩＤ１６０１と同じ識別子を持つ、ストレージレベル仮想ボリューム２２３０を特定する。そして、管理プログラム１２００は、特定したストレージレベル仮想ボリューム２２３０に対応する、対応ストレージレベルプール識別子１５０４を取得する。【０４２７】
さて、図１７の説明に戻る。【０４２８】
（ステップＳ５０３）管理プログラム１２００のレバレッジ管理モジュール１２０３が、コールバック処理によって得たサーバレベル仮想ボリューム３２２０の総容量と、特定したストレージレベルプール２２２０の容量情報を用い、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率算出処理を行う。なお、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率算出処理の詳細は後ほど図２０を用いて説明する。【０４２９】
（ステップＳ５０４）レバレッジ管理モジュール１２０３は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２の値が、初期設定情報１９１０のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１より高いか判断する。判断の結果、高い場合は、ステップＳ５０５を実行し、高くない場合はステップＳ５０２を実行する。【０４３０】
（ステップＳ５０５）レバレッジ管理モジュール１２０３は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が高騰しており物理ストレージ容量枯渇の可能性が上がっていることを伝えるアラートを表示する。更に、レバレッジ管理モジュール１２０３は、管理プログラム１２００の容量レバレッジ率表示画面１４０３にて、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２の値、ストレージレベルプール容量１４０２、ストレージレベル仮想ボリューム識別子１５０１、ストレージレベル仮想ボリューム容量１５０２、の一覧をストレージ管理者に表示する。なお、管理プログラム１２００の画面表示で通知する情報は、ストレージレベルプール２２２０の物理容量枯渇の可能性が上がっていることを、ストレージ管理者に伝えることが出来る情報であれば、上記以外の情報を通知しても良い。【０４３１】
なお、上記の例では、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２を算出するにあたり、ストレージレベルプール容量１４０２と、サーバレベル仮想ボリューム容量１８０２を用いたが、それぞれのカラムの属するテーブルの、別の値を用いても良い。【０４３２】
＜７−３−１．コールバック処理でのＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率算出処理の詳細＞。【０４３３】
図２０は、図１７のステップＳ５０３の処理のフローである。【０４３４】
（ステップＳ８０１）レバレッジ管理モジュール１２０３は、ストレージレベルプール構成情報１４００を参照し、ステップＳ６０５で特定したストレージレベルプール識別子１４０１に対応するストレージレベルプール容量１４０２を取得する。【０４３５】
（ステップ８０２）レバレッジ管理モジュール１２０３は、ステップＳ６０４で算出したサーバレベル仮想ボリューム３２２０の総容量に対する、＜７−３．コールバックインターフェースを用いた管理プログラムの行う処理＞のステップＳ２０１で取得したストレージレベルプール容量１４０２の比率を算出し、その結果をＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２に格納する。【０４３６】
なお、以上の処理では、ストレージ管理者が指定したストレージレベルプール２２２０に対して容量収集及びＥｎｄ−ｔｏ−Ｅｎｄレバレッジ率の表示を行う前提であったが、管理サーバ１０００が管理する複数のストレージレベルプール２２２０についてレバレッジ率の表示を行っても良い。この場合の処理としては、管理サーバ１０００が順に複数のストレージレベルプール２２２０の個々を「指定されたストレージレベルプール識別子１４０１」として指定し、図１９及び図２０で示した処理を繰り返せばよい。【０４３７】
＜７−４．コールバック処理でのストレージ構成変更処理＞。【０４３８】
図１８は、管理プログラム１２００がコールバックインターフェースを備えている場合のストレージ構成変更処理のフローである。本フローは、図１４のステップから実行される。【０４３９】
（ステップＳ７０１）管理プログラム１２００は、ストレージレベルプール構成情報１４００のプール構成ボリューム識別子１４０６に登録されていないボリューム２２１０、つまりストレージレベルプール２２２０に属していない余剰ボリューム２２１０がストレージシステム２０００内に存在するかチェックする。【０４４０】
（ステップＳ７０２）管理プログラム１２００は、ストレージシステム２０００内に、ストレージレベルプール２２２０に属していない余剰ボリューム２２１０が存在した場合、自動的に、＜７−３．コールバックインターフェースを用いた管理プログラムの行う処理＞のステップＳ２０１で取得したストレージレベルプール識別子１４０１を持つストレージレベルプール２２２０に余剰ボリューム２２１０を新たに属するように設定することによって、ストレージレベルプール２２２０に容量を追加する。ストレージレベルプール２２２０に追加する容量は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２がＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まるような値に管理プログラム１２００が決定する。なお、ストレージレベルプール２２２０に追加する容量は、ストレージ管理者が物理サーバ３０００の管理画面にて設定してもよい。【０４４１】
（ステップＳ７０３）ステップＳ３０２を実行した結果、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が、ストレージ管理者の設定したＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まった場合はステップＳ３０８に進む。一方で、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まらなかった場合は、ステップＳ３０４に進む。【０４４２】
（ステップＳ７０４）ステップＳ７０３でＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２がＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まらなかった場合、管理プログラム１２００は、ストレージレベルプール構成情報１４００を参照し、ストレージシステム２０００内に該当ストレージレベルプール２２２０以外のストレージレベルプール２２２０が存在するかをチェックする。存在する場合は、ステップＳ７０５に進む。存在しない場合は、ステップＳ７０８に進む。【０４４３】
（ステップＳ７０５）管理プログラム１２００は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率情報１９００を参照し、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２の低い（例えば最も低い）ストレージレベルプール識別子１４０１を指定する。そして、該当ストレージレベルプール２２２０のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まるように、該当ストレージレベルプール２２２０とステップＳ７０５で選択した、ストレージレベルプール２２２０との間で、サーバレベル仮想ボリューム３２２０のイメージファイルをマイグレーションする。なお、このときマイグレーションするサーバレベル仮想ボリューム３２２０は、管理プログラム１２００が、サーバレベル仮想ボリューム構成情報１８００を参照し、サーバレベル仮想ボリューム未割当容量１８０４の値が大きいものを指定する。【０４４４】
（ステップＳ７０６）ステップＳ３０５を実行した結果、該当ストレージレベルプール２２２０のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まったら、ステップＳ７０８に進む。一方、該当ストレージレベルプール２２２０のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率１９０２が、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値１９１１以下に収まらなかったら、ステップＳ７０７に進む。【０４４５】
（ステップＳ７０７）管理プログラム１２００は、サーバ仮想化プログラム３２００に、行われようとしている設定操作を実行することによって、ストレージ容量枯渇の危険性が高まるため、設定操作の中止を推奨する旨を通知。サーバ仮想化プログラム３２００は、これを受けて、設定操作を実行するか否かをサーバ管理者に再確認する。【０４４６】
（ステップＳ７０８）管理プログラム１２００は、サーバ仮想化プログラム３２００に、行われようとしている設定操作は安全であることを通知。サーバ仮想化プログラム３２００は、これを受けて中断していた設定操作を再開する。【０４４７】
（ステップＳ７０９）管理プログラム１２００は、ストレージ管理者に、ストレージ容量枯渇の可能性が高いことを通知する。【０４４８】
（ステップＳ７１０）管理プログラム１２００は、ストレージ管理者に、高騰したストレージ容量枯渇の可能性が低減されたことを通知し、構成変更を行ったストレージレベルプール２２２０等の容量情報を表示する。【０４４９】
以上、本発明の幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。【０４５０】
例えば、管理サーバ１０００は、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率を表示することなく（及び／又は、他種の管理情報を表示すること無く）、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率が閾値以下になるような処理（例えば、ストレージレベルプールの容量の追加、或いは、サーバレベル仮想ボリュームのマイグレーション）を行っても良い。【０４５１】
また、例えば、管理サーバ１０００は、図３８に示すように、ストレージレベルプールのＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率と、そのストレージレベルプールの空き容量率とを並べて表示した画面を表示してもよい。なお、空き容量率は、例えば、ストレージレベルプールの容量に対する、ストレージレベルプールの未割当て容量（ストレージレベルプールの容量とストレージレベルプール割当済容量との差分）の比率である。【０４５２】
さらに、例えば、図示しないが、管理サーバ１０００は、ストレージレベルプールの空き容量率の変化（各時点での空き容量率）を管理し、その変化を表す情報を表示したり、その変化に基づいて、そのストレージレベルプールについての推奨のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値を計算して表示したりしてもよい。【０４５３】
また、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値は、ストレージレベルプール毎に異なっていてもよい。具体的には、例えば、ストレージレベルプール毎に、ストレージレベルプールの空き容量率の変化（空き容量率が減るスピード）に基づいて設定されたＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率閾値が用意されてもよい。また、閾値は、レバレッジ率の種類別に用意されてもよい。
【実施例３】
【０４５４】
＜８．実施例３の概要＞。【０４５５】
本発明の実施例３に係る計算機システムは、仮想マシンの削除に伴うストレージシステムの容量管理、特に不要となったボリュームのエリア（ＬＬ−ＳＡ）を開放する事に関する。なお、仮想マシンの削除は以下に示すように実施例１及び２のＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率に関連した理由で行われるほか、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率とは関係ない理由でも行われる。なお、以下は必ず全てが成立する必要は無い。【０４５６】
Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率と関連した仮想マシンの削除理由：
（理由１）高くなりすぎたＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率を低下させるため方策として、過去に定義した仮想マシンを削除する。【０４５７】
Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率と関連しない仮想マシンの削除理由：
（理由２）ストレージレベルプール及びサーバレベルプールの未割当エリアを増加させるために、不要と判断した仮想マシンを削除する。
（理由３）仮想マシン上で行っていたアプリケーション処理を、信頼性、処理性能向上等の理由で物理サーバにて行わせることになり、それに伴って仮想マシンは不要となった。
（理由４）仮想マシンを使用していた利用者の転勤または退職、または仮想マシンの利用契約満了、等の理由で仮想マシンを使用しなくなった。【０４５８】
なお、当然ながら仮想マシンを削除する理由は他にもある。【０４５９】
図４１は、仮想マシン３２０１、サーバレベル仮想ボリューム（ＨＬ−ＶＶＯＬ）３２２０、サーバレベルプール（ＨＬＰ）３２１０、ストレージレベル仮想ボリューム（ＬＬ−ＶＶＯＬ）２２３０、ストレージレベルプール（ＬＬＰ）２２２０、とボリューム（ＶＯＬ）２２１０の対応例を示した概要図である。なお、サーバ認識ＬＵ３２１１はストレージレベル仮想ボリューム２２３０に相当するが、サーバ管理プログラム３２００側のＨＬ−ＳＡサイズ長１５００７（サーバレベルプール情報１５０００の情報）と、ストレージシステム側のＬＬ−ＳＡサイズ長１１００７（ストレージレベルプール情報１１０００の情報）が異なることを示すために記した。【０４６０】
なお、図４１の例は以下を例示している。【０４６１】
＊  ボリューム（ＶＯＬ１）２２１０はＬＬ−ＳＡサイズ長１１００７と同じ容量のボリュームで１つ分のエリア（ＬＬ−ＳＡ）を含み、ボリューム（ＶＯＬ２）２２１０はＬＬ−ＳＡサイズ長１１００７の２倍の容量を持つボリュームで、２つ分のエリア（ＬＬ−ＳＡ）を含む。【０４６２】
＊  ボリューム（ＶＯＬ１）２２１０とボリューム（ＶＯＬ２）２２１０はストレージレベルプール２２２０に含まれ、当該ストレージレベルプールを用いてストレージレベル仮想化ボリューム２２３０であるＬＬ−ＶＶＯＬ１乃至３が定義されている。【０４６３】
＊  ストレージレベル仮想化ボリューム（ＬＬ−ＶＶＯＬ１）２２３０はＬＬ−ＳＡサイズ長１１００７の２倍の容量を持つ仮想ボリュームとして物理サーバに提供される（つまり２つのエリア（ＬＬ−ＡＡ）を含む）。【０４６４】
＊  ある時点では、ストレージレベル仮想化ボリューム（ＬＬ−ＶＶＯＬ１）２２３０の１つめのエリア（ＬＬ−ＡＡ）は、ボリューム（ＶＯＬ１）２２１０のエリア（ＬＬ−ＳＡ）が割当てられ、２つめのエリア（ＬＬ−ＡＡ）はボリューム（ＶＯＬ２）２２１０のあるエリア（ＬＬ−ＳＡ）が割当てられている。【０４６５】
＊  サーバ仮想化プログラム３２００は、図中の３２１１が示すとおり、ストレージレベル仮想化ボリューム（ＬＬ−ＶＶＯＬ１）をサーバレベルプール３２１０に含め、さらにストレージレベル仮想化ボリューム（ＬＬ−ＶＶＯＬ１）をＨＬ−ＳＡサイズ長１５００７単位で分割して管理している。なお、ＨＬ−ＳＡサイズ長を４倍した容量がストレージレベル仮想化ボリューム（ＬＬ−ＶＶＯＬ１）２２３０の容量である。【０４６６】
＊  サーバレベル仮想化ボリューム（ＨＬ−ＶＶＯＬ１）３２２０はＨＬ−ＳＡサイズ長１５００７の３倍の容量を持つ仮想ボリュームとして仮想マシン（ＶＭ１）３２０１に提供される（つまり３つのエリア（ＨＬ−ＡＡ）を含む）。【０４６７】
＊  サーバレベル仮想化ボリューム（ＨＬ−ＶＶＯＬ２）３２２０はＨＬ−ＳＡサイズ長１５００７の３倍の容量を持つ仮想ボリュームとして仮想マシン（ＶＭ２）３２０１に提供される（つまり３つのエリア（ＨＬ−ＡＡ）を含む）。【０４６８】
＊  ある時点では、サーバレベル仮想化ボリューム（ＨＬ−ＶＶＯＬ１）３２２０の全てのエリア（ＨＬ−ＡＡ）がストレージレベル仮想化ボリュームのエリア（ＨＬ−ＳＡ）を割当てられている。【０４６９】
＊  ある時点では、サーバレベル仮想化ボリューム（ＨＬ−ＶＶＯＬ２）３２２０の１つのエリア（ＨＬ−ＡＡ）がストレージレベル仮想化ボリュームのエリア（ＨＬ−ＳＡ）を割当てられている。【０４７０】
図４２は、サーバ仮想化プログラム３２００が仮想サーバ（ＶＭ１）３２０１を指定したＶＭ削除要求を受信した後の計算機システムの概要を示した図である。【０４７１】
サーバ仮想化プログラム３２００は、ＶＭ削除要求に応じて、仮想マシン（ＶＭ１）３２０１を構成する情報（例えば定義ファイル、メモリイメージ等）を消去し、さらにサーバレベル仮想ボリューム（ＨＬ−ＶＶＯＬ１）に割当てられたエリア（ＨＬ−ＳＡ）を開放する。なお、サーバ仮想化プログラム３２００によるエリア（ＨＬ−ＳＡ）の開放とは、サーバレベルプール情報１５０００の未割当ＨＬ−ＳＡの識別子リストに当該エリア（ＨＬ−ＳＡ）の識別子を追加することであり、これはその後他の仮想マシンによってこれらのエリア（ＨＬ−ＳＡ）が再割当可能となることを指す。【０４７２】
ストレージシステム２０００のストレージ制御プログラム２０５０は、開放されたエリア（ＨＬ−ＳＡ）に対応するストレージレベル仮想ボリューム２２３０（ＬＬ−ＶＶＯＬ１）のエリア（ＬＬ−ＡＡ）を特定し、特定したエリア（ＬＬ−ＡＡ）に割当てられたエリア（ＬＬ−ＳＡ）を開放する。なお、ストレージ制御プログラム２０５０によるエリア（ＬＬ−ＳＡ）の開放とは、ストレージレベルプール情報１１０００の未割当ＬＬ−ＳＡの識別子リストに当該エリア（ＬＬ−ＳＡ）の識別子を追加することであり、これはその後他の仮想マシンによってこれらのエリア（ＬＬ−ＳＡ）が再割当可能となることを指す。【０４７３】
しかし、サーバ仮想化プログラム３２００のＨＬ−ＳＡエリア長と、ストレージ制御プログラム２０５０のＬＬ−ＳＡエリア長が一致しない場合は、図４３に示すように、サーバ仮想化プログラム３２００が開放したエリア（ＨＬ−ＳＡ）容量だけボリューム２２１０のエリア（ＬＬ−ＳＡ）が開放されるとは限らない。なお、サーバ仮想化プログラム３２００のＨＬ−ＳＡエリア長と、ストレージ制御プログラム２０５０のＬＬ−ＳＡエリア長が一致しない理由の一例を以下に示す。【０４７４】
＊  一台の物理サーバが提供するサーバレベル仮想ボリューム３２２０の容量よりも大容量のストレージレベル仮想ボリューム２２３０を提供することが多く、またストレージシステムにアクセスする物理サーバの数も多い。したがって、ＬＬ−ＳＡエリア長は結果的にＨＬ−ＳＡエリア長より大きな値とすることでストレージレベルプール情報１１０００（特に未割当ＬＬ−ＳＡの識別子リスト１１００８）やストレージレベル仮想ボリューム情報１２０００（特にＬＬ−エリア変換情報１２００７）の情報量を軽減している。【０４７５】
図４３は、サーバ仮想化プログラム３２００が仮想マシンの削除で開放したエリア（ＨＬ−ＳＡ）と、ストレージ制御プログラム２０５０が開放したエリア（ＬＬ−ＳＡ）との差異について示した図である。つまり、ボリューム２２１０のエリア（ＬＬ−ＳＡ）の開放は当該エリア（ＬＬ−ＳＡ）を用いている全てのエリア（ＨＬーＳＡ）がサーバ仮想化プログラム３２００で開放された後である必要があるということである。なお、その前に図示のボリューム（ＶＯＬ２）のエリア（ＬＬ−ＳＡ）を開放すると、未開放のストレージレベル仮想ボリューム（ＨＬ−ＶＶＯＬ２）に割当てられたエリア（ＨＬ−ＳＡ）も開放されてしまう。【０４７６】
＜８−１．  仮想マシン削除処理＞。【０４７７】
次に、図４４を用いて、本発明の実施例３の仮想マシン削除に伴うエリア（ＬＬ−ＳＡ）の開放処理について以下に説明する。【０４７８】
＜８−１ａ．  削除要求に応じた処理＞
（ステップＳ４４００１）サーバ仮想化プログラム３２００は、管理サーバ１０００又は他の計算機からＶＭ削除要求を受信する。なお、ＶＭ削除要求は削除対象となる仮想マシンの識別子を一つ以上含む。【０４７９】
（ステップＳ４４００２）サーバ仮想化プログラム３２００は、サーバレベルプール情報１５０００を参照して、削除対象の仮想マシンに対応するサーバレベル仮想ボリュームを特定する。さらに、当該プログラムは、サーバレベル仮想ボリューム情報１６０００を参照して、特定したサーバレベル仮想ボリュームに割当てられたエリア（ＨＬ−ＳＡ）を特定する。なお、削除対象の仮想マシンの設定情報やメモリイメージを含むエリア（ＨＬ−ＳＡ）を特定したエリア（ＨＬ−ＳＡ）と扱ってもよい。また、他の仮想マシンと共有しているエリア（ＨＬ−ＳＡ）は特定したエリア（ＨＬ−ＳＡ）としなくてもよい。【０４８０】
（ステップＳ４４００３）サーバ仮想化プログラム３２００は、ステップＳ４４００２で特定したエリア（ＨＬ−ＳＡ）を未割当とし、ステップＳ４４００２で特定したサーバレベル仮想ボリュームを削除する。具体的な情報操作は以下の通りである。【０４８１】
＊  特定したエリア（ＨＬ−ＳＡ）をサーバレベルプール情報１５０００の未割当ＨＬ−ＳＡの識別子リスト１５００８に追加し、追加したエリア（ＨＬ−ＳＡ）の容量分、サーバレベルプール割当済容量１５００３を減算する。
＊  特定したサーバレベル仮想ボリュームの容量分、サーバレベルプール情報１５０００のサーバレベル仮想ボリューム総容量を減算する（この計算でＥｎｄ−ｔｏ−Ｅｎｄレバレッジ率が変化することはいうまでも無い）。
＊  特定したサーバレベル仮想ボリュームの情報をサーバレベル仮想ボリューム情報１６０００から削除する。【０４８２】
なお、これら処理以外にも一般的な仮想マシンの削除処理を行っても良い。【０４８３】
（ステップＳ４４００４）サーバ仮想化プログラム３２００は、ステップＳ４４００２で特定したエリア（ＨＬ−ＳＡ）のＳＣＳＩアドレス（ＬＵＮ及びブロックアドレス及びブロック長）を特定し、特定したＳＣＳＩアドレスを指定した領域開放指示をストレージシステム２０００に送信する。なお、領域開放指示方法としては以下の形態が考えられる。第一に、サーバ仮想化プログラム３２００の指示を管理サーバ１０００が仲介してストレージシステム２０００に発行する形態である。具体的には、サーバ仮想化プログラム３２００が、特定したエリア（ＨＬ−ＳＡ）のＳＣＳＩアドレスを含むＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ Ｐｒｏｇｒａｍｍｉｎｇ Ｉｎｔｅｒｆａｃｅ）をＬＡＮ５０１０を介して管理サーバ１０００に発行する。次に、管理サーバ１０００は、受領したＳＣＳＩアドレスを含むＡＰＩをＬＡＮ５０１０を介してストレージシステム２０００に発行する。第二に、サーバ仮想化プログラム３２００が、特定したエリア（ＨＬ−ＳＡ）のＳＣＳＩアドレスを含むＡＰＩをＬＡＮ５０１０を介してストレージシステム２０００に直接発行する形態である。第三に、サーバ仮想化プログラム３２００が、特定したエリア（ＨＬ−ＳＡ）のＳＣＳＩアドレスを含むＡＰＩをＳＡＮ５０００を介してストレージシステム２０００に直接発行する形態である。ＡＰＩの発行先は、ＡＰＩを受領するための特別なＬＬ−ＶＯＬであってもよいし、領域開放対象のＬＬ−ＶＯＬであってもよい。また、ＡＰＩは、連続したデータを繰り返し書き込むＳＣＳＩコマンドであるＷＲＩＴＥ ＳＡＭＥコマンドであってもよいし、不要領域を通知するＳＣＳＩコマンドであるＵＮＭＡＰコマンドであってもよい。【０４８４】
（ステップＳ４４１０１）ストレージ制御プログラム２０５０は、領域開放指示を受信する。【０４８５】
（ステップＳ４４１０２）ストレージ制御プログラム２０５０は、領域開放指示が特定したＳＣＳＩアドレスに対応するストレージレベル仮想ボリューム上のブロックアドレス範囲を特定する。そして、当該プログラムは特定したブロックアドレス範囲のデータをクリア値（例えばゼロ）に変更する。なお、クリア値の変更処理は特定したブロックアドレス範囲に対するストレージデータライト処理と同様である。【０４８６】
（ステップＳ４４１０３）ストレージ制御プログラム２０５０は、ステップＳ４４１０２で特定したストレージレベル仮想ボリューム上のブロックアドレス範囲に完全包含されるエリア（ＬＬ−ＡＡ）について、割当てられたボリュームのエリア（ＬＬ−ＳＡ）を特定する。なお、特定にあたってはストレージレベル仮想ボリューム情報１２０００及びストレージレベルプール情報を参照する。【０４８７】
（ステップＳ４４１０４）ストレージ制御プログラム２０５０は、ステップＳ４４１０３で特定したボリュームのエリア（ＬＬ−ＳＡ）を開放する。具体的な情報操作は以下の通りである。【０４８８】
＊  特定したエリア（ＬＬ−ＳＡ）をストレージレベルプール情報１１０００の未割当ＬＬ−ＳＡの識別子リスト１１００８に追加し、追加したエリア（ＬＬ−ＳＡ）の容量分、ストレージレベルプール割当済容量１１００３を減算する。
＊  特定したエリア（ＬＬ−ＳＡ）が割当てられていたエリア（ＬＬ−ＡＡ）についてストレージレベル仮想ボリューム情報１２０００のＬＬ−エリア変換情報１２００７のリスト中の値を「未割当」に更新する。【０４８９】
ストレージ制御プログラム２０５０は、以上の処理の終了を待って、物理サーバ３０００に領域開放指示の完了報告を送信する。そして、サーバ仮想化プログラムは領域開放指示の完了報告を受信し、仮想マシンの削除処理を終える。なお、領域開放指示で指定したアドレスはＳＣＳＩアドレス以外でもよく、また、ステップＳ４４１０３の完全包含されたエリア（ＬＬ−ＡＡ）についてのクリア値での更新を省略してもよい。【０４９０】
＜８−１ｂ．  繰り返し実行する処理＞。【０４９１】
ストレージ制御プログラム２０５０は、以下のステップＳ４４２０１を繰り返し実行することで、ステップＳ４４１０２で特定したブロックアドレス範囲に含まれるが、ステップＳ４４１０３で特定したエリア（ＬＬ−ＡＡ）に含まれないブロックアドレス範囲を含むエリア（ＬＬ−ＡＡ）の割当開放を試みる。【０４９２】
（ステップＳ４４２０１）ストレージ制御プログラム２０５０は、ストレージレベル仮想ボリュームのエリア（ＬＬ−ＡＡ）に割当てられたエリア（ＬＬ−ＳＡ）で、データが全てクリア値であるエリア（ＬＬ−ＳＡ）を検索し、検索できた場合は見つけたエリア（ＬＬ−ＳＡ）を割当てられたエリア（ＬＬ−ＡＡ）から開放する。なお、開放に当たっての情報操作はステップＳ４４１０４と同様である。【０４９３】
ところで、エリア（ＬＬ−ＳＡ）のサイズ長が大きい場合、個々のエリア（ＬＬ−ＳＡ）が全てクリア値であることを確認する処理は相応の時間を必要とし、確認中にエリア（ＬＬ−ＳＡ）のデータが更新されることもある。その対策として、以下を行っても良い。
（対策１）：ＬＬ−エリア変換情報１２００７のリスト中の値に「クリア値確認中」を意味する追加フラグを設定できるようにする。
（対策２）：ステップＳ４４２０１のクリア値の確認前に、確認中エリア（ＬＬ−ＳＡ）が割りあたったエリア（ＬＬ−ＡＡ）についてのＬＬ−エリア変換情報のリスト中の対応箇所の「クリア値確認中」のフラグを立てる。
（対策３）：ステップＳ４４２０１で全てクリア値であるエリア（ＬＬ−ＳＡ）を見つけた場合は、見つけたエリア（ＬＬ−ＳＡ）が割りあたったエリア（ＬＬ−ＡＡ）の「クリア値確認中」フラグが立っている場合に限り、開放を行い、当該フラグを下げる。
（対策４）：ストレージデータライト処理で「クリア値確認中」フラグが立ったエリア（ＬＬ−ＡＡ）にデータを書き込む場合は、当該フラグを下げる。【０４９４】
なお、ステップＳ４４２０１の処理は、ステップ４４１０４で開放対象とならなかったステップＳ４４１０２のブロックアドレス範囲を含むエリア（ＬＬ−ＡＡ）に割りあたったエリア（ＬＬ−ＳＡ）を対象に、ステップ４４１０４と連携しておこなってもよい。【０４９５】
以上が仮想マシン削除処理である。なお、図２４で説明したが、開放したエリア（ＬＬ−ＳＡ）が割りあたっていたエリア（ＬＬ−ＡＡ）に対するリードを行ってもクリア値で返されるため、その後サーバ仮想化プログラム３２００が当該エリアを再利用する場合も問題なく利用することができる。また、複数の仮想マシンを削除する場合、エリア（ＬＬ−ＳＡ）開放の視点からは複数の仮想マシンをまとめて削除要求で指定したほうが開放効率が良い。なぜならば別々で指定した場合はステップＳ４４１０４に該当せずにステップＳ４４２０１で開放を試みることになる一方で、まとめて指定すれば完全包含の可能性が高くなり、ステップＳ４４１０４が適用されるエリア（ＬＬ−ＳＡ）が増えるからである。【０４９６】
＜８−２．  管理サーバの表示＞。【０４９７】
図４５は仮想マシン削除に関連する管理サーバ１０００の画面表示である。当該画面では以下の情報が表示される。
＊  仮想マシンを削除した日時４５００１。
＊  削除した一つ以上の仮想マシンの識別子４５００２。
＊  削除した仮想マシンが用いていたサーバレベル仮想ボリュームの総容量４５００３。
＊  削除要求によって変化したサーバレベルプールの割当済容量の差分４５００４。なお、削除要求によって常に割当済容量は減るので値はマイナスである。
＊  削除要求によって変化したストレージレベルプールの割当済容量の差分４５００５。なお、削除要求によって常に割当済容量は減るので値はマイナスである。【０４９８】
なお、項目４５００１及び項目４５００２は、ＶＭ削除要求を管理サーバ１０００が送信している場合は容易に把握可能である。一方で、ＶＭ削除要求を管理サーバ１０００以外の計算機が送信している場合は、物理サーバ３０００からＶＭ削除要求で指定された仮想マシンの識別子と受信日時を取得すればよい。項目４５００３乃至４５００５は、ＶＭ削除要求前とＶＭ削除要求後で管理サーバ１０００が有するストレージレベルプール構成情報１４００、サーバレベルプール構成情報１７００、サーバレベル仮想ボリューム構成情報を比較することで取得できる。しかし、各項目はこれら以外の方法で取得してもよい。【０４９９】
なお、以上の説明では管理サーバ１０００はストレージシステム２０００や物理サーバ３０００に対して適用済みの設定を、管理サーバ１０００は、ストレージシステム２０００や物理サーバ３０００から情報を収集して設定情報（例えば、ストレージレベルプール構成情報１４００、ストレージレベル仮想ボリューム構成情報１５００、ポート−ＬＵＮ対応情報１６００、サーバレベルプール構成情報１７００、サーバレベル仮想ボリューム構成情報１８００）を作成し、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率を計算し、表示することを示してきた。しかし、管理サーバ１０００が、管理者或いはデータソース装置（例えば可搬型の記憶メディア）から入出力装置４０６０を介して受信した設定値に基いて、ストレージシステム２０００及び物理サーバ３０００の設定を行う場合は、前述の設定情報の一部または全てをストレージシステム２０００や物理サーバ３０００からの取得を省略し、設定値に基いて前述の設定情報を作成または更新し、Ｅｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率を計算し、表示してもよい。なお、後者の場合は、設定値に基く設定をストレージシステム２０００や物理サーバ３０００に対して適用する以前にＥｎｄ−ｔｏ−Ｅｎｄ容量レバレッジ率を表示することで、管理者による設定を支援してもよい。【０５００】
なお、仮想マシンからのＩ／Ｏ要求、物理サーバ３０００からストレージシステム２０００へ送信されるＩ／Ｏ要求以外でブロックアドレスを用いて説明した部分は他の単位でのアドレッシングや所定の変換を行った別なアドレスを採用してもよい。
【符号の説明】
【０５０１】
２０００・・・ストレージシステム
【図１】
2011096014.tif 000003
【図２】
2011096014.tif 000004
【図３】
2011096014.tif 000005
【図４】
2011096014.tif 000006
【図５】
2011096014.tif 000007
【図６】
2011096014.tif 000008
【図７】
2011096014.tif 000009
【図８】
2011096014.tif 000010
【図９】
2011096014.tif 000011
【図１０】
2011096014.tif 000012
【図１１】
2011096014.tif 000013
【図１２】
2011096014.tif 000014
【図１３】
2011096014.tif 000015
【図１４】
2011096014.tif 000016
【図１５】
2011096014.tif 000017
【図１６】
2011096014.tif 000018
【図１７】
2011096014.tif 000019
【図１８】
2011096014.tif 000020
【図１９】
2011096014.tif 000021
【図２０】
2011096014.tif 000022
【図２１】
2011096014.tif 000023
【図２２】
2011096014.tif 000024
【図２３】
2011096014.tif 000025
【図２４】
2011096014.tif 000026
【図２５】
2011096014.tif 000027
【図２６】
2011096014.tif 000028
【図２７】
2011096014.tif 000029
【図２８】
2011096014.tif 000030
【図２９】
2011096014.tif 000031
【図３０】
2011096014.tif 000032
【図３１】
2011096014.tif 000033
【図３２】
2011096014.tif 000034
【図３３】
2011096014.tif 000035
【図３４】
2011096014.tif 000036
【図３５】
2011096014.tif 000037
【図３６】
2011096014.tif 000038
【図３７】
2011096014.tif 000039
【図３８】
2011096014.tif 000040
【図３９】
2011096014.tif 000041
【図４０】
2011096014.tif 000042
【図４１】
2011096014.tif 000043
【図４２】
2011096014.tif 000044
【図４３】
2011096014.tif 000045
【図４４】
2011096014.tif 000046
【図４５】
2011096014.tif 000047
【国際調査報告】
2011096014.tif 000048
2011096014.tif 000049