(57)【特許請求の範囲】
【請求項１】
ホスト計算機からのライトアクセスを処理する制御装置を有する計算機システムであって、
前記制御装置は、
前記ホスト計算機がアクセスするアクセス対象を設定する第１のモジュールと、
一つ又は複数の論理ボリュームを有する第１のプールを設定する第２のモジュールと、
前記前記ホスト計算機から前記アクセス対象にライト要求を受け付けた場合、前記第１のプールの前記論理ボリュームから、前記アクセス対象のライト先領域に、記憶容量を割当てる第３のモジュールと、
第２のプールを設定する第４のモジュールと、
論理ボリュームを記憶資源から作成して、これを前記第２のプールに設定する第５のモジュールと、
前記第１のプールの使用容量の状態を判定し、当該判定の結果に応じて、前記第２のプールから前記論理ボリュームを前記第１のプールに追加する第６のモジュールと、
を有し、
更に、前記制御装置は、前記第１のプール及び前記第２のプールをそれぞれ複数の階層に分けて管理するように設定し、
前記第６のモジュールは、前記論理ボリュームを、前記第１のプールから前記第２のプールに追加する際、前記第１のプールと第２のプールの同一の階層間で、論理ボリュームが移動するような追加処理を実行する、計算機システム。
【請求項２】
前記アクセス対象は、前記ホスト計算機に提供する容量を仮想化した仮想ボリュームからなり、
前記制御装置は、前記第３のモジュールに対して、前記第１のプールの容量を仮想化した請求項１記載の計算機システム。
【請求項３】
前記第６のモジュールは、前記第１のプールの前記アクセス対象に割当て可能な実容量の不足を判定すると、前記第２のプールから前記第１のプールへの前記論理ボリュームの追加処理を実行する、請求項２記載の計算機システム。
【請求項４】
前記第６のモジュールは、前記第１のプールの前記アクセス対象に割当て可能な実容量の過剰を判定すると、前記第１のプールから前記論理ボリュームを削除して、当該論理ボリュームを前記第２のプールに回収する、請求項２記載の前記計算機システム。
【請求項５】
前記制御装置は、前記第１のプールの実容量に対して第１の閾値を設定する第７のモジュールを備え、
前記第６のモジュールは、前記第１の閾値に基づいて、前記第1のプールの実容量の不足を判定する、請求項３記載の計算機システム。
【請求項６】
前記制御装置は、
前記第２のプールの容量に第２の閾値を設定する第８のモジュールを備え、
前記第６のモジュールは、前記第２のプールの容量の過不足を前記第２の閾値に基づいて判定し、前記第２のプールの容量が不足すると判定すると、前記記憶資源から前記第２のプールに前記論理ボリュームを追加する、請求項１記載の計算機システム。
【請求項７】
前記第２のモジュールは、前記第１のプールを複数設定し、
前記第６のモジュールは、前記複数の第１のプールのうちの一つの第１のプールの実容量が不足し、他の第１のプールの実容量が過剰と判定すると、前記他の第１のプールから前記論理ボリュームを削除して、当該論理ボリュームを前記第２のプールに回収し、さらに、前記第２のプールから前記論理ボリュームを前記一つの第１のプールに追加する、請求項４記載の計算機システム。
【請求項８】
前記制御装置は、前記仮想ボリュームを複数設定し、
前記第６のモジュールは、前記第１のプールの仮想容量に基づく第３の閾値と、前記複数の仮想ボリュームの総仮想容量と前記第３の閾値とを比較し、前記総仮想容量が前記第３の閾値を超えていると判断すると、前記第３の閾値に関連した優先度に基づいて、前記第２のプールから第１のプールへの論理ボリュームの追加処理の可否を判定する、請求項２記載の計算機システム。
【請求項９】
前記アクセス対象は、前記ホスト計算機に提供する容量を仮想化した仮想ボリュームからなり、
前記制御装置は、
前記第３のモジュールに対して、前記第１のプールの容量を仮想化し、
前記第１のプールの実容量に対して第１の閾値を設定する第７のモジュールと、
前記第２のプールの容量に第２の閾値を設定する第８のモジュールと、を備え、
前記第６のモジュールは、
前記第１のプールの前記アクセス対象に割当て可能な実容量の不足を前記第１の閾値に基づいて判定すると、前記第２のプールから前記第１のプールへの前記論理ボリュームの追加処理を実行し、
前記第１のプールの前記アクセス対象に割当て可能な実容量の過剰を判定すると、前記第１のプールから前記論理ボリュームを削除して、当該論理ボリュームを前記第２のプールに回収し、
前記第２のプールの容量の過不足を前記第２の閾値に基づいて判定し、前記第２のプールの容量が不足すると判定すると、前記記憶資源から前記第２のプールに前記論理ボリュームを追加し、
さらに、前記制御装置は、前記第１のプール及び前記第２のプールをそれぞれ複数の階層を備えるように設定し、
前記第６のモジュールは、前記論理ボリュームを、前記第１のプールから前記第２のプールに追加する際、前記第１のプールと前記第２のプールの同一の階層間で、前記論理ボリュームが移動するような追加処理を実行する、請求項１記載の計算機システム。
【請求項１０】
前記第２のモジュールは、前記第１のプールを複数設定し、
前記第６のモジュールは、
前記複数の第１のプールのうちの一つの第１のプールの実容量が不足し、他の第１のプールの実容量が過剰と判定すると、前記他の第１のプールから前記論理ボリュームを削除して、当該論理ボリュームを前記第２のプールに回収し、
さらに、前記第２のプールから前記論理ボリュームの前記一つの第１のプールへの追加処理を実行する、請求項９記載の計算機システム。
【請求項１１】
前記第３のモジュールは、前記アクセス対象にライト要求があった場合、ライト要求に対する前記記憶領域が前記アクセス対象割り当たっているか否かを判定し、
これを否定判定する場合は、新たな前記記憶領域を前記アクセス対象に割当て、
肯定する場合は、ライトデータを前記割当て済み記憶領域にライトする、請求項１記載の計算機システム。
【請求項１２】
前記第５のモジュールは、前記論理ボリュームを外部接続先ストレージの記憶資源から作成し、
前記第第６のモジュールは、前記第１のプールの容量を検討し、前記容量が不足する場合は、前記外部接続先ストレージの記憶容量を第１のプールに追加する、請求項９記載の計算機システム。
【請求項１３】
前記第２のモジュールは、前記第１のプールを複数設定し、
前記第６のモジュールは、前記複数の第１のプールのうちの一つの第１のプールの実容量が不足し、他の第１のプールの実容量が過剰と判定すると、前記他の第１のプールから前記論理ボリュームを削除して、当該論理ボリュームを前記第２のプールに回収することなく、前記論理ボリュームの前記一つの第１のプールへの追加処理を実行する、請求項９記載の計算機システム。
【請求項１４】
ホスト計算機からのアクセスを制御して、記憶資源に対するリード・ライト処理を制御する制御装置を備えた計算機システムの記憶制御方法であって、
前記制御装置は、
前記ホスト計算機がアクセスするアクセス対象を設定し、
一つ又は複数の論理ボリュームを有する第１のプールを設定し、
前記ホスト計算機からアクセス対象にライト要求が発生すると、前記アクセス対象に割当てられている前記第１のプールの論理ボリュームから、前記アクセス対象のライト領域に記憶容量を割当てる処理を実行し、
他の論理ボリュームを予め定義して、これを前記第１のプールに対する予備的なものとして第２のプールに纏め、
更に、前記第１のプール及び前記第２のプールをそれぞれ複数の階層に分けて管理するように設定し、
前記第１のプールの使用容量の変動に基づいて前記第２のプールから前記第１のプールに前記論理ボリュームを、第１及び第２のプールの同一の階層間で移動させるような追加処理を実行する、計算機システムの記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに係わり、特に、ホスト装置に対して動的に記憶容量を割り当てる計算機システム及びその記憶制御方法に関するものである。
【背景技術】
【０００２】
従来から、ホスト装置に対して大規模なデータストレージサービスを提供する計算機システムが存在する。このシステムは、ホスト装置と、ホスト装置が接続するストレージ装置と、ストレージ装置の管理装置と、を備えたものとして知られている。【０００３】
ストレージ装置は、複数のハードディスクをＲＡＩＤ（Redundant Array of Independent/Inexpensive Disks）方式で管理する。そして、多数のハードディスクが有する物理的な記憶領域を論理化し、これを論理ボリュームとしてホスト装置に提供する。ホスト装置は論理ボリュームにアクセスしてデータのリード・ライトを要求する。【０００４】
この種の論理化技術の一つにシン・プロビジョニングと称されるものがある。ストレージ装置は、物理的な記憶領域を有さず、記憶容量が仮想化された論理ボリュームをホスト装置に対して設定する。【０００５】
この論理ボリュームは仮想ボリュームと呼ばれており、ホスト装置が仮想的ボリュームにライトアクセスにすることに合わせて、ストレージ装置は、仮想ボリュームに対して記憶領域を順次割り当てていく。【０００６】
したがって、この技術は、論理ボリュームに対して当初から大容量な記憶領域を割り当てる方式に比べて、ストレージ資源を有効に活用できる点で効果的である。  
この技術は、米国特許６８５７０５９号公報、特開２００３−０１５９１５号公報、特開２００６−３３８３４１号公報、及び、特開２００８−２３４１５８号公報に記載されている。【０００７】
仮想ボリュームに記憶領域を提供するための手段は、仮想ボリュームにホスト装置からライトアクセスがあると、仮想ボリュームのアドレスに、実の記憶領域を持つ容量プールから、記憶容量を割り当て、ライトデータを保存することができる。【０００８】
ここで、「容量プール」（単に、「プール」とも呼ばれる。）は、例えば、実容量を持つ論理グループの複数を仮想ボリュームへのライト用として纏めたものとして定義、設定されるものであって、プールに属する複数の論理ボリュームはそれぞれプールボリュームと呼ばれている。【０００９】
また、ＵＳ２００５／０５５６０３は、保存したデータに対するアクセス頻度が高いか低いかを判定し、アクセス頻度が高ければ、プールボリュームのメディアの物理的特性情報（メディアの種類やディスクの回転数など）により、高速処理に適したメディアからなるプールボリュームへ、プール内で、データを移させる技術を開示している。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許６８５７０５９号公報
【特許文献２】特開２００３−０１５９１５号公報
【特許文献３】特開２００６−３３８３４１号公報
【特許文献４】特開２００８−２３４１５８号公報
【特許文献５】米国公開ＵＳ２００５／０５５６０３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
既述の従来技術においては、プールの空き容量が枯渇した場合、或いは、複数のプール間で空き容量のバランスが崩れた場合等が生じると、システムの管理者、又は、システムのユーザは、その都度、プールボリュームを個別に定義し、これをプールに追加する等計算機システムの構成の設定制御処理を行わなければならなかった。この結果、従来の計算機システムは、プールの容量の変化に迅速に対応できないという課題があった。【００１２】
そこで、この発明は、上位システムのアクセス対象に、プールボリュームから記憶容量を動的に割当てる計算機システムにおいて、前記プールボリュームを有するプールの状態の変動に迅速に対応できる計算機システム及びその制御方法を提供することを目的とするものである。【００１３】
さらに、本発明の他の目的は、プールに対するプールボリュームの割当てを、管理者やユーザの操作に依らず、自動的に実行可能な計算機システム及びその制御方法を提供することにある。【００１４】
さらに、本発明の他の目的は、プールの構成、及び、プールへの論理的な記憶領域の割り当てを、ストレージの階層に従って管理、運用可能な計算機システム及びその制御方法を提供することにある。
【課題を解決するための手段】
【００１５】
本発明に係る計算機システムは、この目的を達成するために、ホスト計算機がアクセスするアクセス対象を設定し、ホスト計算機からアクセス対象にライト要求が発生すると、その都度、前記アクセス対象に割当てられている第１のプールから、前記アクセス対象のライト領域に、前記第１のプールにある論理ボリュームから記憶容量を割当てる処理を実行する制御装置を有し、前記制御装置は、他の論理ボリュームを予め定義して、これを前記第１のプールに対する予備的なものとして第２のプールに纏め、且つ、前記第１のプール及び前記第２のプールをそれぞれ複数の階層に分けて管理するように設定し、前記第１のプールの使用容量の変動に基づいて前記第２のプールから前記第１のプールに前記論理ボリュームを、第１及び第２のプールの同一の階層間で移動させるような追加処理を実行することを特徴とするものである。
【発明の効果】
【００１６】
以上説明したように、本発明によれば、上位システムのアクセス対象に、プールボリュームから記憶容量を動的に割当てる計算機システムにおいて、前記プールボリュームを有するプールの状態の変動に迅速に対応できる計算機システム及びその記憶制御方法を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明に係わる計算機システムの第１の例を示すハードウエアブロック図である。
【図２】計算機システムの第２の形態を示すハードウエアブロック図である。
【図３】図２に示すストレージ装置が複数のクラスタを備えるものから構成されている例を示すハードウエアブロック図である。
【図４】ストレージ装置が行う記憶領域の動的割り当ての動作を示す機能ブロック図である。
【図５Ａ】仮想ボリュームとプールボリュームとの対応関係を含むストレージ装置のブロック図である。
【図５Ｂ】ストレージ装置が、プールボリュームを、主として、プールボリュームの供給元であるストレージデバイスの特性したがった階層に分けて管理したことを説明するブロック図である。
【図６】容量仮想化とシステム容量プール４４との間のプールボリュームの移動を示すブロック図である。
【図７】容量仮想化プールとシステム容量プールとを階層化した形態でのプールボリュームの移動を説明するブロック図である。
【図８Ａ】容量仮想化プールに、閾値１（上限値）と閾値２（下限値）とが設定されていることを示すブロック図である。
【図８Ｂ】容量仮想化プールが階層化されており、ストレージ装置が各階層について閾値に基づく制御処理を行うことを説明するためのブロック図である。
【図９Ａ】容量仮想化プールにシステム容量プールからプールボリュームが追加され、容量仮想化プールの有効実容量のサイズが増えた状態を説明するためのブロック図である。
【図９Ｂ】容量仮想化プールからシステム容量プールにプールボリュームが回収され、容量仮想化プールの有効実容量４２が減少した状態を示すブロック図である。
【図１０】ストレージ装置のメモリのブロック図である。
【図１１】ＶＤＥＶ管理テーブルである。
【図１２】ＬＤＥＶ管理テーブルである。
【図１３Ａ】メディアの管理情報のテーブルである。
【図１３Ｂ】階層の管理情報のテーブルである。
【図１４】アドレス管理テーブルを説明するためのブロック図である。
【図１５】容量仮想化プールの管理テーブルである。
【図１６】ＲＡＩＤグループ情報の一例のテーブルである。
【図１７】階層化された容量仮想化プール、又は、階層化されたシステム容量プールの階層管理のための理情報３５２７１の一例のテーブル３５２７１である。
【図１８】システム容量プールの管理情報のテーブルである。
【図１９】ＶＶＯＬ−ＤＩＲ及びＰＳＣＢを説明するためのブロック図である。
【図２０】図１９において説明したシステム容量プールに階層が設定された場合のブロック図である。
【図２１】コマンド処理プログラムが仮想ボリュームにライト処理を実行した際の容量仮想化プールの容量変更制御処理の詳細を示すフローチャートである。
【図２２】ストレージ装置によって定期的に実行される、容量仮想化プールの自動容量拡張処理のフローチャートである。
【図２３】容量仮想化プールの自動容量拡張処理の他のフローチャートである。
【図２４】容量仮想化プールの容量自動縮小処理のフローチャートである。
【図２５】容量仮想化プールの自動拡張処理の他の例に係るフローチャートである。
【図２６】システム容量プールに対するプールボリュームの自動追加／自動削除のフローチャートである。
【図２７】複数の容量仮想化プール間での自動容量変更処理を達成するフローチャートである。
【図２８】図２７の変形例に係るフローチャートである。
【図２９Ａ】上位から順にＳＳＤ、ＳＡＳ、ＳＡＴＡの各階層が容量仮想化プールに設定されていることを示すブロック図である。
【図２９Ｂ】図２９Ａの変形例に係るフローチャートである。
【図３０】シン・プロビジョニングのシステムの構成と入力手段との関係を示すブロック図である。
【図３１】仮想ボリュームの作成の手順を示すフローチャートである。
【図３２】仮想ボリュームの作成処理の第２の例に係るフローチャートである。
【図３３】仮想ボリュームの生成処理の第３の例に係るフローチャートである。
【図３４Ａ】容量仮想化プールの新規作成処理の一部に係るフローチャートである。
【図３４Ｂ】容量仮想化プールの新規作成処理の他の一部に係るフローチャートである。
【図３４Ｃ】容量仮想化プールの新規作成処理のさらに他の一部に係るフローチャートである。
【図３４Ｄ】容量仮想化プールの新規作成処理のさらに他の一部に係るフローチャートである。
【図３５】ホスト計算機から仮想ボリュームに対するリード処理を説明するフローチャートである。
【図３６】ホスト計算機から仮想ボリュームに対するライト処理を説明するフローチャートである。
【図３７】容量仮想化プールの階層管理・制御機能、自動容量拡張機能を説明するための、計算機システムのブロック図である。
【図３８】システム容量プールから容量仮想化プールへのプールボリュームの追加の処理を説明するフローチャートである。
【発明を実施するための形態】
【００１８】
次に、本発明の実施形態について説明する。図１は、本発明に係わる計算機システムの第１の例を示すハードウエアブロック図である。計算機システムは、ホスト計算機１０と、管理装置２０と、これらが接続するストレージ装置３０と、を備えている。ストレージ装置３０は、ストレージシステム、あるいはストレージサブシステムとも呼ばれている。
【００１９】
ホスト計算機１０は、ストレージ装置３０の論理的な記憶資源にアクセスする。管理装置２０は、ストレージ装置３０の記憶領域の構成を管理する。ストレージ装置３０は、物理デバイス３４に設定された記憶領域にデータを格納する。
【００２０】
ホスト計算機１０は、入力手段(装置）１１０、出力手段(装置）１２０、ＣＰＵ１３０、メモリ１４０、ディスクアダプタ１５０、ネットワークアダプタ１６０、及び、ディスクドライブ１７０を備える。
【００２１】
入力手段１１０は、ホスト計算機１０を操作する管理者等から入力を受け付ける手段である。入力手段１１０は、例えば、キーボードで構成される。出力手段１２０は、ホスト計算機１０の状態や設定項目を表示する手段である。出力手段１２０は、例えばディスプレイ装置で構成される。
【００２２】
ＣＰＵ１３０(コントローラ)は、ディスクドライブ１７０に格納されているプログラムをメモリ１４０に読み込んで、そのプログラムに規定された処理を実行する。メモリ１４０は、例えば、ＲＡＭ等で構成され、プログラムやデータ等を格納する。
【００２３】
ディスクアダプタ１５０は、ストレージ装置３０とストレージエリアネットワーク５０を介して接続し、ストレージ装置３０にデータを送受信する。ストレージエリアネットワーク５０は、データ転送に適したプロトコル（例えば、Ｆｉｂｒｅ Ｃｈａｎｎｅｌ）によって、データ転送を実現する。
【００２４】
ネットワークアダプタ１６０は、管理装置２０又はストレージ装置３０と管理ネットワーク４０を介してデータを送受信する。管理ネットワーク４０は、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）で構成される。ディスクドライブ１７０は、例えばハードディスク装置で構成され、データやプログラムを格納する。
【００２５】
管理装置２０は、入力手段２１０、出力手段２２０、ＣＰＵ２３０、メモリ２４０、ネットワークアダプタ２５０、及び、ディスクドライブ２６０を備える。
【００２６】
入力装置２１０は、管理装置２０を操作する管理者等の入力を受け付ける手段で、例えばキーボードで構成される。出力装置２２０は、管理装置２０の状態や設定項目を表示する手段で、例えば、ディスプレイ装置で構成される。
【００２７】
ＣＰＵ２３０は、ディスクドライブ２６０に格納されている管理プログラムをメモリ２４０に読み込んで、そのプログラムに基づいて、ストレージ装置３０に対する管理処理を実行する。メモリ２４０は、例えば、ＲＡＭ等で構成され、プログラムやデータ等を格納する。
【００２８】
ネットワークアダプタ２５０は、ホスト計算機１０又はストレージ装置３０と管理ネットワーク４０を介してデータを送受信する。ディスクドライブ２６０は、例えばハードディスク装置で構成され、データやプログラムを格納する。
【００２９】
ストレージ装置３０は、コントローラ３１、ストレージキャッシュメモリ３２、共有メモリ３３、物理デバイス（ＰＤＥＶ）３４、電源スイッチ３５、及び、電源３６を備える。
【００３０】
コントローラ３１は、ＰＤＥＶ３４に構成された記憶領域へのデータの格納を制御する。
【００３１】
ストレージキャッシュメモリ３２は、ＰＤＥＶ３４に読み書きされるデータを一時的に格納する。共有メモリ３３は、コントローラ３１やＰＤＥＶ３４の構成情報を格納する。
【００３２】
ＰＤＥＶ３４は、複数のディスク装置によって構成される。電源３６は、ストレージ装置３０の各部に電力を供給する。
【００３３】
電源スイッチ３５は、電源３６からの電力の供給をＯＮ／ＯＦＦするスイッチである。ディスク装置（記憶デバイス）は、例えばハードディスクドライブで構成され、主としてユーザデータを格納する。記憶デバイスとしては、フラッシュメモリなどの半導体メモリからなるドライブでもよい。
【００３４】
コントローラ３１は、少なくとも、プロセッサ３６０を備えるものであり、この実施形態では、さらに、ホストアダプタ３１０、ネットワークアダプタ３２０、不揮発性メモリ３３０、電源制御部３４０、メモリ３５０、ストレージアダプタ３７０、及び、共有メモリアダプタ３８０を備える。
【００３５】
ホストアダプタ３１０は、ストレージネットワーク５０を介してホスト計算機１０との間でデータを送受信する。ネットワークアダプタ３２０は、管理ネットワーク４０を介してホスト計算機１０、又は、管理装置２０との間でデータを送受信する。
【００３６】
不揮発性メモリ３３０は、ハードディスクやフラッシュメモリで構成され、コントローラ３１で動作するプログラムや構成情報等を格納する。電源制御部３４０は、電源３６から供給される電力を制御する。
【００３７】
メモリ３５０は、例えばＲＡＭ等で構成され、プログラムやデータ等を格納する。プロセッサ３６０は、不揮発性メモリ３３０に格納されているプログラムをメモリ３５０に読み込んで、そのプログラムに規定された処理を実行する。
【００３８】
ストレージアダプタ３７０は、ＰＤＥＶ３４、及び、ストレージキャッシュメモリ３２との間でデータを送受信する。共有メモリアダプタ３８０は、共有メモリ３３との間でデータを送受信する。
【００３９】
図２は、計算機システムの第２の形態を示すハードウエアブロック図である。本実施形態の計算機システムは、一つ以上のホスト計算機１０、管理サーバ２０、第１のストレージ装置３０Ａ、及び、第２のストレージ装置３０Ｂを備えている。
【００４０】
第１のストレージ装置３０Ａは、第１のネットワーク１２１を介してホスト計算機１０に接続される。第２のストレージ装置３０Ｂは、第２のネットワーク１２３を介して第１のストレー装置３０Ａに接続されている。
【００４１】
一つ以上のホスト計算機１０、管理サーバ２０、第１のストレージ装置３０Ａ、及び、第２のストレージ装置３０Ｂは、第３のネットワーク１０８を介して相互に接続されている。
【００４２】
第１のネットワーク１２１、第２のネットワーク１２３、及び、第３のネットワーク１０８は、いかなる種類のネットワークであってもよい。例えば、第１のネットワーク１２１及び第２のネットワーク１２３はＳＡＮである。第３のネットワーク１０８はＬＡＮである。
【００４３】
第１のストレージ装置３０Ａは、コントローラと記憶デバイス群３４とを備える。コントローラは、例えば、複数のフロントエンドインターフェース１２７と、複数のバックエンドインターフェース１３７と、第１の内部ネットワーク１５６と、一以上のキャッシュメモリ３２と、一以上の制御メモリ３５０と、一以上の制御プロセッサ３６０とを備える。
【００４４】
フロントエンドインターフェース１２７は、ストレージ装置３０Ａにネットワーク１２１を介して接続されたホスト計算機１０又は第２のストレージ装置３０Ｂと通信するためのインターフェース回路である。従って、ストレージ装置３０Ａは、少なくとも二つのフロントエンドインターフェース１２７を備え、それらのうち一つは第１のネットワーク１２１に接続され、別の一つは第２のネットワーク１２３に接続される。
【００４５】
フロントエンドインターフェース１２７は、例えば、第１のネットワーク１２１又は第２のネットワーク１２３に接続されるポート１２９と、メモリ１３１と、ローカルルータ（以下、「ＬＲ」と略記する。）１３３と、を備える。ＬＲ１３３に、ポート１２９及びメモリ１３１が接続される。
【００４６】
ＬＲ１３３は、ポート１２９を介して受けたデータを任意の制御プロセッサ３６０で処理するために振り分ける。具体的には、例えば、制御プロセッサ３６０が、或るアドレスを指定するＩ／Ｏコマンドをその制御プロセッサ３６０に実行させるようにＬＲ１３３を設定する。その設定に従って、ＬＲ１３３が、Ｉ／Ｏコマンド及びデータを振り分ける。
【００４７】
バックエンドインターフェース１３７も複数設けられている。バックエンドインターフェース１３７は、ＰＤＥＶ３４と通信するためのインターフェース回路である。バックエンドインターフェース１３７は、例えば、ＰＤＥＶ３４に接続されるディスクインターフェース１４１と、メモリ１３５と、ＬＲ１３９と、を備える。ＬＲ１３９には、ディスクインターフェース１４１及びメモリ１３５が接続される。
【００４８】
第１の内部ネットワーク１５６は、例えば、スイッチ（例えば、クロスバスイッチ）或いはバスで構成される。第１の内部ネットワーク１５６に、複数のフロントエンドインターフェース１２７、複数のバックエンドインターフェース１３７、一以上のキャッシュメモリ３２、一以上の制御メモリ３５０、及び、一以上の制御プロセッサ３６０が接続されている。これらの要素間の通信は、第１の内部ネットワーク１５６を介して行われる。
【００４９】
コントローラの構成要素であるフロントエンドインターフェース１２７、バックエンドインターフェース１３７、キャッシュメモリ３２、制御メモリ３５０、及び、制御プロセッサ３６０に、第２の内部ネットワーク（例えば、ＬＡＮ）１５５が接続され、その第２の内部ネットワーク１５５に、保守管理端末１５３が接続されている。
【００５０】
保守管理端末１５３は、第３のネットワーク１０８にも接続されており、ストレージシステムを保守、又は、管理する計算機である。ストレージ装置３０Ａの保守員は、例えば、保守管理端末１５３（又は、その保守管理端末１５３と通信可能な管理装置２０）を操作して、制御メモリ３５０に記憶される種々の情報を定義することができる。
【００５１】
第２のストレージ装置３０Ｂは、コントローラ１６５、及び、ＰＤＥＶ１６３を備える。コントローラ１６５は、例えば、ネットワークアダプタ１６２と、ホストアダプタ１６４と、キャッシュメモリ１７２と、制御メモリ１７１と、プロセッサ１６７と、ストレージアダプタ１６９と、を備える。
【００５２】
ネットワークアダプタ１６２は、第３のネットワーク１０８に接続され、管理サーバ２０と通信するインターフェースである。ホストアダプタ１６４は、第２のネットワーク１２３に接続され、第１のストレージ装置３０Ａと通信するインターフェースである。
【００５３】
ホストアダプタ１６４は、例えば、第１のストレージ装置３０Ａのフロントエンドインターフェース１２７と同様のものであってもよい。
【００５４】
制御メモリ１７１は、種々のコンピュータプログラム、及び、情報を記憶するメモリである。
【００５５】
キャッシュメモリ１７２は、第１のストレージ装置１２５からのＩ／Ｏコマンドに従って読み出される又は書き込まれるデータを一時記憶するメモリである。
【００５６】
プロセッサ１６７は、制御メモリ１７１に記憶されている種々のコンピュータプログラムを実行する。少なくとも、プロセッサ１６７は、第１のストレージ装置３０ＡからのＩ／Ｏコマンドに従って、キャッシュメモリ１７２、及び、ＰＤＥＶ１６３に対するデータの書き込み及び読み出しを制御する。
【００５７】
ＰＤＥＶ１６３は、物理記憶デバイスであり、例えば、第１のストレージ装置３０ＡのＰＤＥＶ３４と同様のものであってもよい。あるいは、ＰＤＥＶは、テープ記憶媒体であってもよい。
【００５８】
本実施形態の第１のストレージ装置３０Ａは、いわゆる外部接続機能を備える。第２のストレージ装置３０Ｂは、この機能によって第１のストレージ装置３０Ａに外部接続されている。ここで、外部接続について説明する。
【００５９】
既に説明したように、第１のストレージ装置３０Ａは、一つ又は複数の論理ボリュームをホスト計算機１０に提供する。各論理ボリュームは、ホスト計算機１０によって一つの記憶デバイスと認識される。例えば、第１のストレージ装置３０Ａが提供する論理ボリュームが、第１のストレージ装置３０Ａ内のＰＤＥＶ３４に対応付けられてもよい。その場合、第１のストレージ装置３０Ａは、論理ボリュームへのライトコマンドを受信すると、その論理ボリュームに対応付けられたＰＤＥＶ３４にデータを格納する。このような論理ボリュームは、以下の説明において、通常ボリューム、とも記載される。
【００６０】
あるいは、第１のストレージ装置３０Ａが提供する論理ボリュームは、第２のストレージ装置３０Ｂ内のＰＤＥＶ１６３に対応付けられてもよい。この場合、第１のストレージ装置３０Ａは、論理ボリュームへのライトコマンドを受信すると、その論理ボリュームに対応付けられたＰＤＥＶ１６３にデータを書き込むためのライトコマンドを生成し、生成したライトコマンドを第２のストレージ装置３０Ｂに送信する。
【００６１】
第２のストレージ装置３０Ｂは、第１のストレージ装置３０Ａから受信したライトコマンドに従って、データをＰＤＥＶ１６３に格納する。
【００６２】
このように、第１のストレージ装置３０Ａが提供する論理ボリュームに格納されるデータを、実際には第１のストレージ装置３０Ａの外部に接続された第２のストレージ装置３０Ｂに格納する機能が、外部接続機能と呼ばれている。
【００６３】
第１のストレージ装置３０Ａは、ストレージ制御処理を確立するクラスタ１２５１を複数備える。各クラスタは内部ネットワーク１５６を有し、複数のクラスタの内部ネットワーク１５６がクラスタ間のネットワーク１５６１によって接続される。
【００６４】
したがって、一つのクラスタの制御プロセッサ３６０は他のクラスタにアクセスすること、例えば、他のクラスタのキャッシュメモリ３２のデータをリード・ライトすることができる。複数のクラスタ間のネットワーク１５６１は、パス、スイッチによって構成される。
【００６５】
図３は、図２に示すストレージ装置の複数のクラスタを備える構成を説明するためのハードウエアブロック図である。第１のクラスタ１２５１ａが、第１の仮想ボリューム（ＶＯＬ＃０）に対するアクセス処理を制御し、第２のクラスタ１２５１ｂが第２の仮想ボリューム（ＶＯＬ＃１）に対するアクセス処理を制御する。
【００６６】
図３に示すプール３００００は、複数のクラスタ間をまたがって形成されてもよい。しかし、ネットワーク１５６１の機器構成によっては、当該ネットワーク１５６１を経由すると転送速度が下がり、性能が落ちる場合がある。そこで、これを避けるために、システムは、仮想ボリューム（ＶＯＬ＃０）にプールボリュームを割り当てる際、ネットワーク１５６１を経由しないプールボリュームを選択する。
【００６７】
そこで、ストレージ装置３０は、プールを、モジュール単位で管理する。プールボリュームグループ＃０（３０００２）,＃１（３０００４）, ＃２（３０００６）がその管理の例である。
【００６８】
ストレージ装置３０が、クラスタ１２５１ａに設定された仮想ボリューム＃０にページを割り当てるときは、プールグループ＃０（３０００２）のプールボリュームを選択する（Ｓ３００００）。
【００６９】
ストレージ装置３０は、プールグループの容量を、複数のＴｉｅｒ単位毎に管理する。後述のとおり、システム容量プールの管理も同様である。仮に、プールグループ＃０（３０００２）の容量が枯渇した、或いは、枯渇しそうであることを想定した場合、ストレージ装置３０は、容量に余裕のあるプールグループ＃１（３０００４）のプールボリュームをプールグループ＃０（３０００２）に追加する。ここで、プールの全体容量に対して空き容量の割合が予め決めた値より小さい時のように、空き容量の割合が多いことが、余裕があることになる。
【００７０】
プールグループ＃２（３０００６）のように、プールモジュールをまたがった設定も可能である。
【００７１】
図４は、ストレージ装置３０が行う記憶領域の動的割り当ての動作を示す機能ブロック図である。ＰＤＥＶ３４からＲＡＩＤ構成によってＲＡＩＤグループが構成されている。このＲＡＩＤグループからＶＤＥＶ４００が構成されている（Ｓ１０１）。
【００７２】
ＶＤＥＶ４００は記憶領域である複数の論理デバイス（ＬＤＥＶ）５００に分割されている。ＰＤＥＶ３４から構成されたＶＤＥＶを、「第１種ＶＤＥＶ」と呼ぶ。この第１種ＶＤＥＶに含まれるＬＤＥＶを、「第１種ＬＤＥＶ」と呼ぶ。
【００７３】
ホスト計算機１０Ａは、ストレージ装置３０のホストアクセス用論理ユニットアクセスする。ホスト計算機１０から見えるアクセス相性を「ターゲットデバイス」と呼ぶ。ターゲットデバイス７００は、第１種ＬＤＥＶ５００を含むボリュームへのホスト計算機１０Ａからのパスの定義を伴って設定されている（Ｓ１０２）。
【００７４】
ストレージ装置３０は、外部から接続されている外部物理デバイス６００をＰＤＥＶ３４と同様に扱うこともできる。すなわち、ＲＡＩＤ構成によって、複数の外部物理デバイス（ＥＤＥＶ）６００から複数の第１種ＶＤＥＶ４００ａが構成される（Ｓ１０３）。第１種ＶＤＥＶ４００ａは、一つ以上の記憶領域である第１種ＬＤＥＶ５００ａに分割されている。この第１種ＬＤＥＶ５００ａにホスト計算機１０へのパスを設定して、ターゲットデバイス７００が設定される（Ｓ１０４）。
【００７５】
また、ストレージ装置３０は、第２種ＶＤＥＶ４０１を設定する。第２種ＶＤＥＶとは、ＰＤＥＶ３４によって構成される第１種ＶＤＥＶ４００とは異なり、アドレス領域を持っているがＰＤＥＶ３４に対応する領域は持っていない仮想的なデバイスである。
【００７６】
第２種ＶＤＥＶ４０１に対応するキャッシュメモリの領域を設定することは可能である。この第２種ＶＤＥＶ４０１には、一つ以上のＬＤＥＶがある。このＬＤＥＶを２種ＬＤＥＶ５０１と呼ぶ。
【００７７】
この第２種ＬＤＥＶ５０１にホスト計算機１０Ｂへのパスを設定して、ターゲットデバイス７０１が設定される（Ｓ１１０）。このターゲットデバイス７０１がホスト計算機１０のアクセス対象である。ターゲットデバイス７０１は第２種ＬＤＥＶ５０１に割当てられている。ターゲットデバイス、及び／又は、第２種ＬＤＥＶが、シン・プロビジョニングに於ける、容量が仮想化された仮想ボリュームに相当する。
【００７８】
第２種ＶＤＥＶ４０１、及び、第２種ＬＤＥＶ５０１には共に、物理的な記憶領域がＰＤＥＶから割り当てられていない、すなわち、これらの記憶容量は仮想化されているため、第１種ＶＤＥＶ４００、第１種ＬＤＥＶ５００とは異なるものである。この仮想領域を、ホスト計算機１０Ｂが使用できるようにするためには、第２種ＬＤＥＶ５０１に、実の記憶領域を備えるプール６０を関連付ける必要がある。この関連付けを、図５Ａを用いて後述する。
【００７９】
プール６０は、第１種ＬＤＥＶ５００の一つまたは複数を、一つ又は複数の属性で纏めたグループである。第１種ＬＤＥＶ５００は、プール６０に割り当てられている（Ｓ１１２）。第１種ＬＤＥＶ５００がプールボリュームに対応する。
【００８０】
プールに設定された第１種ＬＤＥＶ５００を第２種ＬＤＥＶ５０１に、アドレスを用いて、割当てを行う（Ｓ１１１）。したがって、ターゲットデバイス７００の記憶領域は、第１種ＬＤＥＶ５００になるが、ターゲットデバイス７０１の記憶領域は第２種ＬＤＥＶ５０１になる。
【００８１】
ストレージ装置３０が、ターゲットデバイス７０１を介して、第２種ＬＤＥＶ５０１へのアクセスを受け付けると、第２種ＬＤＥＶ５０１に対応する第１種ＬＤＥＶ５００をアクセス先とする。
【００８２】
ホスト計算機１０Ａ，１０Ｂからのライトデータは、第１種ＬＤＥＶ５００に格納される。第１種ＶＤＥＶ４００と第２種ＶＤＥＶ４０１同士はアドレスに基づいて対応する。したがって、ホストからのライトデータはＰＤＥＶ３４に格納される。
【００８３】
図５Ａは、仮想ボリューム４１１−４１６とプールボリューム４２１との対応関係を含むストレージ装置３０のブロック図である。符号４２Ａ及び符号４２Ｂはそれぞれ既述のプールである。各プールには複数のプールボリューム４２１が存在する。符号４２１Ａはプールボリュームのページである。
【００８４】
ページとは、ホストからのリード・ライトアクセスを処理するための規定容量からなる記憶領域の単位である。ライトデータは一つ又は複数のページに格納される。あるいは、ライトアクセスにページの割り当てを1回行い、数回のライトアクセスに係るライトデータを同じページ内に格納し、続くライトデータが一つのページに格納できなければ、このライトデータに係るライトアクセスに新たなページの割り当てを行うこともある。
【００８５】
符号４１１Ａは仮想ボリューム４１１の仮想ページである。仮想ページはプールボリューム４２１のページとは異なり、実の記憶領域を伴わない仮想的な記憶容量の単位である。ホストからのリード・ライトは、仮想ボリュームの仮想ページ単位で処理される。ホストからのライトが仮想ボリュームに実行されると、仮想ボリュームの仮想ページにプールボリュームの実ページが、ライトアクセスに合わせて、あるいはライトアクセスの都度割当てられる。
【００８６】
符号４１１２は仮想ボリュームの仮想ページとプールボリュームの仮想ページとの対応関係を示すためのラインである。ストレージ装置３０は、仮想ボリュームと、プール及びプールボリュームとの間に対応関係を設定し、仮想ボリュームには、対応関係にあるプールのプールボリュームからページが割当てられる。
【００８７】
本発明に係るストレージ装置３０の特徴は、仮想ボリュームに対する容量提供用プール（図４：６０）を階層化した点にある。すなわち、容量提供用プールは複数の階層を有し、例えば、図５Ａは、二つの階層を示している。仮想ボリューム４１１側(フロントエンド側)の階層のプールを「容量仮想化プール」と呼び、ＰＤＥＶ側(バックエンド側)の階層のプールを「システム容量プール」と呼ぶ。符号４２Ａ及び４２Ｂはそれぞれ容量仮想化プールであり、符号４４はシステム容量プールである。
【００８８】
容量仮想化プール４２Ａ，４２Ｂは、その名の通り、プールの容量が仮想化されたものである。これは、ストレージ装置３０が、プールの容量を、プールの状態に応じて、ホスト計算機１０側に意識させることなく、増減できるようにするためである。
【００８９】
なお、既述の従来技術においては、プール容量が枯渇すると、ストレージ装置は、ユーザ、管理者に、シン・プロビジョニングの実行上の警告表示を行い、プールへのプールボリュームの追加作業を求めていた。
【００９０】
これに対して、本発明に係るストレージ装置は、容量仮想化プールの状態に応じて、システム容量プール４４から、プールボリューム４４１１を、容量仮想化プール４２に自動的に追加し、追加されたプールボリュームをシステム容量プール４４の管理から削除する。
【００９１】
システム容量プールのプールボリューム４４１１は、どの容量仮想化プールにも属することが無いように管理され、特定の容量仮想化プールに追加されると、特定の容量仮想化プールに属するという特性に変更される。
【００９２】
ストレージ装置３０は、プールボリュームを予め定義して、これをシステム容量プール４４に設定しておく。システム容量プール４４は少なくとも一つのプールボリューム４４１１を有する。
【００９３】
ストレージ装置３０は、容量仮想化プール４２の実容量が不足すると、ユーザや管理者の操作を必要とすることなく、システム容量プール４４からプールボリューム４４１１を容量仮想化プール４２に追加する。
【００９４】
一方、容量仮想化プール４２の実容量に過剰が生じると、ストレージ装置３０は、容量仮想化プール４２からプールボリューム４２１を削除して、システム容量プール４４に、削除されたプールボリュームを回収する。
【００９５】
図５Ａ,５Ｂにおいて、プールボリュームが容量仮想化プール４２Ａ，４２Ｂとシステム容量プール４４との間で追加削除できることを図面上明示するために、一部のプールボリューム４２１,４４１１を破線で記した。
【００９６】
プールボリュームが、容量仮想化プール４２とシステム容量プール４４のどちらに属するかは、テーブルによって管理されている。
【００９７】
なお、ユーザは、管理マネージャプログラムが動作している計算機（ホスト計算機１０）、管理サーバ２０、保守管理端末１５３の少なくとも一つを用いて、システム容量プール４４や容量仮想化プール４２の作成をストレージ装置３０に要求する。
【００９８】
図５Ｂに示すように、ストレージ装置３０は、プールボリュームを、主として、プールボリュームの供給元であるストレージデバイスの特性に基づく階層に分けて管理する。この階層の区別は、例えば、Ｔｉｅｒ１、Ｔｉｅｒ２、Ｔｉｅｒ３からなり、容量仮想化プール４２Ａ，４２Ｂ、システム容量プール４４も階層毎のグループに分けられる。
【００９９】
Ｔｉｅｒ１の階層に属するメディアは、オンラインストレージとして分類されるものであり、例えば、高速応答性、高信頼性を持ったＳＳＤ、ＳＡＳ、ファイバチャネルＨＤＤである。
【０１００】
Ｔｉｅｒ２の階層に属するメディアは、ニアラインストレージとして分類されるものであり、例えば、ＳＡＴＡハードディスク、ＡＴＡハードディスクである。
【０１０１】
Ｔｉｅｒ３の階層に属するストレージデバイスは、オフラインストレージとして分類されるものであり、例えば、低価格、大容量のテープデバイスである。これらは一例であり、後述のとおり、ストレージデバイスを、既述の分類とは異なる分類に基づいて階層に分類することもできる。
【０１０２】
ストレージ装置３０は、システム容量プール４４から容量仮想化プール４２にプールボリュームを追加する場合には、同一階層のグループの間でプールボリュームの追加の処理を実行する。容量仮想化プール４２からプールボリュームを削除して、システム容量プール４４に回収する場合も同様である。
【０１０３】
なお、後述のとおり、ストレージ装置３０は、複数の容量仮想化プールの間で、システム容量プールを介することなく、プールボリュームの出し入れを実行してもよい。また、ストレージ装置３０は、システム容量プール４４の上位階層から容量仮想化プール４２の下位階層にプールボリュームを移動することは可能である。
【０１０４】
ストレージ装置３０は、複数の容量仮想化プール４２に対するプールボリュームの供給を統一的に管理するために、システム容量プール４４を一元的に設定する。なお、システム容量プール４４がストレージ装置３０に複数存在することを妨げない。
【０１０５】
ストレージ装置は、複数の仮想ボリュームに対する動的な記憶領域の割当てを柔軟に実行するために、プール４２を複数設定し、かつ、プール４２の記憶容量を仮想化することによって、システム容量プール４４との間のプールボリュームの出入りを可能にし、ホスト計算機１０からの仮想ボリュームへのアクセスを制限することがないようにしながら、容量仮想化プール４２の実の空き容量の変動に迅速に対応することにした。
【０１０６】
ストレージ装置３０の諸機能のうちの第１機能は、容量仮想化プール４２のプールボリュームのページを仮想ボリュームに割当てるものである。その第２機能は、システム容量プール４４から容量仮想化プール４２にプールボリュームを追加したり、容量仮想化プール４２からシステム容量プール４４にプールボリュームを回収したりするものである。
【０１０７】
第２機能は、容量仮想化プールの実容量のうちの未使用容量に基づいて、プールボリュー ムの追加、回収を行う。第１機能は、容量仮想化プールの未使用容量がどの程度であるかにかかわらず、プールボリュームのページの仮想ボリュームへの割当てを常時継続する。なお、第１機能、及び、第２機能という表記は、便宜上のものである。これら機能は、後述する管理・制御プログラムによって達成される。
【０１０８】
図５Ｂのように、ストレージ装置が、容量仮想化プール４２Ａ，４２Ｂを階層化して管理している形態では、システム容量プール４４においても、プールボリュームを階層毎に管理する必要がある。
【０１０９】
容量仮想化プールの階層は、シン・プロビジョニングの開始前、その開始後に設定されるものであってもよい。仮想ボリュームに、特定の階層のプールボリュームを対応させるほか、複数の階層のプールボリュームを対応させることを妨げるものではない。
【０１１０】
ストレージ装置は、仮想ボリューム４１１等に、ページ単位で、所望の階層の記憶領域を割当てることが可能である。例えば、ストレージ装置が、仮想ボリュームに対するＩＯ頻度を監視し、その頻度の高いボリュームには、オンライデータ或いは重要データが記憶されると判定し、当該ページへのリードアクセスを早くするため、高速高性能のメディアの階層に属するプールボリュームからページを割当てる。仮想ボリュームとプールボリュームとのマッピングテーブルには階層の情報が含まれる。
【０１１１】
ストレージ装置３０は、仮想ボリュームにページを割当てる際、最上位の階層のプールボリュームからページを割当てようとする。一方、当該プールボリュームに対するＩＯ負荷、プールボリュームの残容量の如何によっては、下位の階層のプールボリュームからページを割当てるようにしてもよい。
【０１１２】
ストレージ装置は、所定の期間、仮想ボリュームに割当てられたページ対するＩＯ負荷をモニタリングし、ＩＯ負荷が特定のプールボリュームに偏ったものであることを判定すると、容量仮想化プールの同一階層内の他のプールボリュームのページに対して、或いは、異なる階層内の他のプールボリュームのページに対して、ページデータのマイグレーションを実行する。
【０１１３】
システム容量プール４４に設定される論理的記憶領域は未使用のものである。例えば、パスが設定されているボリュームや、ユーザデータが格納されているボリュームやコピー対象となっているボリュームは、システム容量プールにプールされるべきプールボリュームとしては適当ではない。
【０１１４】
図６は、容量仮想化プール４２Ａ，４２Ｂと、システム容量プール４４との間のプールボリュームの移動を示したブロック図である。符号１７２３は、第１種ＶＤＥＶ５００,５００ａから、プールボリュームを、管理者の操作に基づいて、システム容量プール４４に追加ことを示している。
【０１１５】
符号１７１３は、プールボリューム４４１１を、システム容量プール４４から容量仮想化プール４２Ａに追加することを示している。符号１７１１は、容量仮想化プール４２Ａからプールボリューム４２１をシステム容量プールに回収することを示している。
【０１１６】
符号１７２１は、システム容量プール４４からではなく、ユーザ又は管理者の操作によって、プールボリュームを容量仮想化プール４２Ａに追加することを示している。
【０１１７】
符号１７１９は、容量仮想化プール４２Ａから、プールボリュームを容量仮想化プール４２Ｂに移動することを示している。符号１７１９ａはその逆を示す。この移動は、システム容量プール４４を介さないことも可能である。
【０１１８】
このようなプールボリュームの移動は管理テーブルにおいて、プールボリュームとプールとの対応関係を変更することによって管理されている。
【０１１９】
容量仮想化プール４２Ａとシステム容量プール４４とをそれぞれ、複数のＴｉｅｒによって階層化した形態での、プールボリュームの移動を図７に基づいて用いて説明する。容量仮想化プール４２Ａには、Ｔｉｅｒ１からＴｉｅｒ３までの階層のグループが存在する。容量仮想化プール４２Ｂも同様である。
【０１２０】
符号１８０４は、システム容量プール４４のＴｉｅｒ３の階層から容量仮想化プール４２ＡのＴｉｅｒ３の階層にプールボリュームを追加することを示している。符号１８０２はその反対である。
【０１２１】
符号１８０３は、システム容量プール４４のＴｉｅｒ１の階層から容量仮想化プール４２Ｂにプールボリュームが追加されることを示している。符号１８０１はその逆である。
【０１２２】
容量仮想化プール４２Ａへのプールボリュームの追加（図６の１７２１：システム容量プール４４からではなく、ユーザ又は管理者の操作による。）は、プールボリュームが持つ階層に応じて、容量仮想化プール４２Ａの特定の階層に対して行われる。システム容量プールへのプールボリュームの追加も図６の１７２３と同様である。
【０１２３】
容量仮想化プールに対する既述のプールボリュームの拡張、縮小処理の実行契機としては次のものがある。先ず、容量仮想化プールの容量監視機能は、容量仮想化プールの性能情報を入手、分析し、容量仮想化プールに性能の低下が発生した契機で、プールボリュームの自動拡張縮小機能に、システム容量プールから容量仮想化プールへのプールボリュームの追加を指示する。
【０１２４】
一方、プールボリュームの自動拡張縮小機能は、容量仮想化プールの性能に余裕が出た契機で、容量仮想化プールからシステム容量プールにプールボリュームを回収する。
【０１２５】
その他の契機としては、ストレージ装置がホスト計算機からのライトを受けた際、複数種類のメディア間でデータのマイグレーションを行う契機、スケジュールで定めたタイミングが発生した契機、又は、仮想ボリュームが作成された契機、コピー系の処理によって、ページが消費された契機、又は、ホスト計算機、管理サーバ、又は、保守端末を利用したユーザや管理者からの指示をストレージ装置が受けた契機と、がある。
【０１２６】
一方、システム容量プールの拡張/縮小の契機としては、スケジュールで定めたタイミングが発生した契機や容量仮想化プールの拡張/縮小が実行された契機と、がある。
【０１２７】
容量仮想化プールの性能としては、容量仮想化プールの使用済み実容量の程度、容量仮想化プールの空き容量の程度、又は、容量仮想化プールに対するＩＯ頻度やＩＯ負荷がある。
【０１２８】
容量仮想化プールの有効実容量の適否を判定するための一つの形態としては、一つ又は複数の閾値を用いるものがある。有効実容量とは、仮想ボリュームに未割当ての記憶容量、すなわち、空の実容量である。
【０１２９】
閾値は、容量仮想化プールが作成された時もしくはその後に、管理サーバ２０やストレージ装置の管理機器１５３を使ってユーザや保守員によって設定又は更新可能なものである。閾値は、容量仮想化プール管理情報テーブルに、ストレージ装置３０の構成制御プログラムによって設定或いは更新登録される。
【０１３０】
閾値としては、例えば、次のように３つの閾値がある。1つめの閾値は、容量仮想化プールの有効実容量に関する閾値である。この閾値は、容量仮想化プールの有効実容量が基準より少なくなった時点で、管理装置２０や保守管理端末１５３に、ユーザや保守員に容量に余裕が無い旨の警告を出させるために使用されてもよい。
【０１３１】
二つの目の閾値は、“オーバプロビジョニング閾値”と称するものである。ストレージ装置は、容量仮想化プールの実総容量と、容量仮想化プールをデータの格納先として使用する、複数の仮想ボリュームの使用済総容量とを比較し、後者が前者の規定割合を上回る場合に、運用上容量仮想化プールの枯渇を引き起こすおそれがあると判定する。
【０１３２】
容量仮想化プールの総実容量（使用済実容量を含む総実容量）について定められる閾値が、“オーバプロビジョニング閾値”である。容量仮想化プールの実容量×オーバプロビジョニング閾値＞容量仮想化プールを使う全仮想ボリュームの使用総容量、となるようにする。
【０１３３】
例えば、オーバプロビジョニング閾値が９０％の場合、容量仮想化プールの総実容量が１ＴＢ とすると、そのプールを使う全仮想ボリュームの使用総容量が、１ＴＢ×９０％以下の場合、ストレージ装置は、容量仮想化プール容量の拡張を実施せず、それを超えると、容量仮想化プールの容量拡張処理を実施する。
【０１３４】
オーバプロビジョニング閾値に対して、ユーザは、容量仮想化プールの自動容量拡張処理の優先度を設定でき、優先度が「高」に設定されると、ストレージ装置は、オーバプロビジョニング閾値を満足しなくても、シン・プロビジョニングを停止せず、容量仮想化プールの自動拡張を行いながら、シン・プロビジョニングを継続する。
【０１３５】
３つ目の閾値は、容量仮想化プールの使用済みの実容量の下限に関する閾値である。容量仮想化プールの利用率が低い場合、容量仮想化プールは必要以上に記憶容量を占有している。このような状況は記憶資源の浪費につながるため、容量仮想化プールに下限の閾値を定義し、容量仮想化プールの利用率、利用済み総容量などが下限値を下回ると、ストレージ装置は、容量仮想化プールからプールボリュームや容量を回収する。
【０１３６】
ストレージ装置は、回収したプールボリュームや容量をシステム容量プールに関連づけることによって、回収したプールボリュームを容量仮想化プールへ次に割当てることに備える。
【０１３７】
ストレージ装置は、閾値に基づいて、容量仮想化プールに対するプールボリュームの自動追加、自動回収の制御を実行する。
【０１３８】
図８Ａは、容量仮想化プール４２に、閾値１（上限値）と閾値２（下限値）とを設定していることを示している。容量仮想化プール４２の使用済み実容量４２００Ｂが上限閾値以上であると、ストレージ装置は、容量仮想化プールの有効実容量４２００Ｃが不足していると判定し、一方、容量仮想化プールの使用済み実容量が下限値以下であると、容量仮想化プール４２の有効実容量に余裕或いは過剰があると判定する。
【０１３９】
閾値１の例として、容量仮想化プールの使用済み実容量が容量仮想化プールの全体容量に対して９０パーセントであり、閾値２の例として、これが８０パーセントである。
【０１４０】
図８Ｂに示すように、容量仮想化プール４２が階層化されている場合には、ストレージ装置は各階層について閾値に基づく処理を行う。この図では、ＳＳＤの階層とＳＡＴＡの階層では使用済み実実容量は閾値２より下であるため、これらの階層では有効実容量に余裕があり、ＳＡＳの有効実容量は、閾値１と閾値２との間にあるため、適切なレベルになっている。
【０１４１】
プールボリュームの追加、削除は階層毎に実行される。閾値は各階層で異なってもよい。
【０１４２】
容量仮想化プールの使用率が下限の閾値を下回る場合、ストレージ装置又は管理装置は、ユーザによるＱｏＳＬＡＮＥ（Ｑｕａｌｉｔｙ ｏｆ Ｓｅｒｖｉｃｅ）の設定の有無を確認し、その設定があれば、その条件を満たすようにして、プールボリュームをシステム容量プールに戻す。
【０１４３】
ＱｏＳＬＡＮＥの設定がなく、システム容量プールが階層管理されているものであれば、ストレージ装置は、プールボリュームが属する階層と同一の階層になるように、プールボリュームを容量仮想化プールからシステム容量プールに回収する。
【０１４４】
システム容量プールが階層管理されていない場合には、ストレージ装置は、プールボリュームを、システム容量プールの任意の階層に回収する。
【０１４５】
なお、プールボリュームを容量仮想化プールからシステム容量プールに戻す際、プールボリュームの割当て済みページデータは、容量仮想化プールに残す他のプールボリュームに移動し、データ移動元ページと仮想ボリュームとのマッピングを開放し、データ移動先ページに仮想ボリュームのアドレスとのマッピングを設定する。
【０１４６】
容量仮想化プール４２に、システム容量プール４４からプールボリュームが追加されると、図９Ａに示すように、容量仮想化プールの有効実容量４２００Ｃのサイズが増える。この際、図９Ａのように、ストレージ装置は、閾値１と閾値２の値、両者の幅を変えてもよい。
【０１４７】
一方、反対に、容量仮想化プール４２からシステム容量プールにプールボリュームが回収される場合には、図９Ｂのように、有効実容量４２００Ｃのサイズが減少する。この際、ストレージ装置は、閾値１と閾値２の値、両者の幅を変えてもよい。
【０１４８】
管理サーバ２０又は保守端末１５３は、容量仮想化プール４２の容量に対する規定割合をデフォルト閾値としてＧＵＩを介してユーザ・管理者に提示することができる。ユーザ等はこのデフォルト値を採用してもよいし、或いは、他の閾値をＧＵＩに入力してもよい。
【０１４９】
容量仮想化プール４２が複数の階層に管理されている場合には、この処理は階層毎に実施されてもよい。ユーザが各階層に入力した閾値が容量仮想化プールに統一的に設定された閾値と一致しない場合には、ＧＵＩはユーザ等に警告表示を行う。
【０１５０】
次に、プールのこのような構成を前提として、計算機システムの詳細について説明する。図１０は、ストレージ装置のメモリ３５０のブロック図である。
【０１５１】
メモリ３５０には、プロセッサ３６０によって読み込まれて実行される各種プログラムや、論理ボリュームの設定に関する構成情報３５１、及び、プールの設定に関するプール情報３５２が格納されている。以後、単に、プール、と表記する場合、プールは容量仮想化プールとシステム容量プールの両方を包含するものとする。
【０１５２】
コマンド制御プログラム３５０１は、ホスト計算機１０、又は、管理装置２０からのコマンドを解釈し、そのコマンドに規定された処理を実行する。構成制御プログラム３５０３はストレージ装置３０の構成の設定、更新等の処理を実現する。
【０１５３】
ディスクＩ／Ｏプログラム３５０５は、ＰＤＥＶ３４へのアクセスを制御する。プール制御プログラム３５０７は、プールの設定に関する各種処理を実行する。
【０１５４】
構成情報３５１は、ＶＤＥＶ、ＬＤＥＶ、階層、ＲＡＩＤグループなどストレージ装置の環境設定に必要な情報である。構成情報３５１は、アドレス管理テーブル３５１１、ＬＤＥＶ管理情報３５１２、ＶＤＥＶ管理情報３５１４、Ｔｉｅｒ管理情報３５１３、そして、ＲＡＩＤグループ管理情報３５１５と、を備えている。
【０１５５】
アドレス管理テーブル３５１１は、ターゲットデバイスとＬＤＥＶとＶＤＥＶと物理デバイスとのアドレスのマッピング情報３５１１１、ターゲットデバイス−ＬＤＥＶマッピング情報３５１１１、そして、ＬＤＥＶ−ＶＤＥＶマッピング情報３５１１２、及び、ＶＤＥＶ−ＰＤＥＶマッピング情報３５１１３を格納している。アドレス管理テーブル３５１１の詳細は後述される。
【０１５６】
ＬＤＥＶ管理情報３５１２は、ＬＤＥＶに関する管理情報を含む。ＶＤＥＶ管理情報３５１４は、ＶＤＥＶに関する管理情報を有する。Ｔｉｅｒ管理情報３５１３は、容量仮想化プール、システム容量プールに定義された階層の管理情報を含む。
【０１５７】
さらに、ＲＡＩＤグループ情報３５１５は、複数のＰＤＥＶ３４からなるＲＡＩＤグループのＲＡＩＤレベルなどＲＡＩＤの管理情報を有している。
【０１５８】
プール情報３５２は、プールに関する設定を格納する。プール情報３５２は、容量仮想化プール管理情報３５２１、プールボリューム管理情報３５２２、ＶＶＯＬ（仮想ボリューム）−ＤＩＲ３５２３、ＰＳＣＢ３５２４、容量仮想化プールＴｉｅｒ管理情報３５２７、システム容量プール管理情報３５２５と、を含んでいる。
【０１５９】
容量仮想化プール管理情報３５２１は、容量仮想化プールの設定に関する管理情報である。プールボリューム管理情報３５２２は、容量仮想化プール４２及びシステム容量プール４４のプールボリュームに関する管理情報である。
【０１６０】
ＶＶＯＬ−ＤＩＲ３５２３は、容量仮想化プールのＬＤＥＶ（プールボリューム）の仮想ボリュームに対する割り当てに係る情報である。ＰＳＣＢ３５２４情報は、容量仮想化プールのＬＤＥＶのアドレスの情報である。
【０１６１】
階層管理情報３２５７は、容量仮想化プールに設定される階層の管理情報である。これはプール毎に設定されている。システム容量プール管理情報３５２５は、システム容量プールに設定される階層の管理情報である。
【０１６２】
さらに、メモリ３５０は、第１種ＶＤＥＶ４００,４００ａ、或いは、第１種ＬＤＥＶ５００，５００ａのシステム容量プールへの追加、容量仮想化プールの性能要件に基づいて、システム容量プールと容量仮想化プールとの間でのプールボリュームの追加及びその回収、複数の容量仮想化プール間でのプールボリュームの移動を管理する自動容量拡張／縮小プログラム３５０９を有する。
【０１６３】
なお、既述の閾値はこの性能要件の一例である。その他、性能要件として、ＩＯ頻度がある。 
【０１６４】
そして、階層毎のプールボリューム管理プログラム３５０８は、システム容量プール、及び、容量仮想化プールが階層化されている場合、階層毎にプールボリューム数やその他の特性を管理する。プールが階層化されていない場合には、システム容量プール全体のプールボリューム数、容量仮想化プール毎の全体のプールボリュームの数や特性を管理する。
【０１６５】
容量仮想化プールのプールボリュームからページを仮想ボリュームにホスト装置からのアクセスに基づいて動的に割当てる処理は、コマンド制御プログラム３５０１によって達成される。
【０１６６】
なお、ストレージ装置３０は、複数のプールボリューム５００間で、仮想ボリュームに対するページの割当てを均等化する。この均等化処理は、ＰＣＴ／ＪＰ２００９／０５８５３３号に記載されている。本出願人は、ＰＣＴ／ＪＰ２００９／０５８５３３号の全ての記載事項をこの明細書にインコーポレートする。
【０１６７】
図１１は、ＶＤＥＶ管理情報３５１４のテーブルである。ＶＤＥＶ管理情報は、ＶＤＥＶ固有情報３５１４１から構成される。
【０１６８】
ＶＤＥＶ固有情報３５１４１は、ＶＤＥＶ番号（ＶＤＥＶ＃）３５１４２、エミュレーションタイプ３５１４３、総サイズ３５１４４、残サイズ３５１４５、デバイス属性３５１４６、デバイス状態３５１４７、設定ＬＤＥＶ数３５１４８、ＬＤＥＶ番号３５１４９、先頭ＶＤＥＶ−ＳＬＯＴ＃３５１５０及び終了ＶＤＥＶ−ＳＬＯＴ＃３５１５１で構成される。
【０１６９】
ＶＤＥＶ＃３５１４２は、ＶＤＥＶの識別子である。エミュレーションタイプ３５１４３はＶＤＥＶのエミュレーションタイプの識別子である。総サイズ３５１４４は、ＶＤＥＶに設定されている総サイズである。残サイズ３５１４５はＶＤＥＶの未使用の領域のサイズである。
【０１７０】
デバイス属性３５１４６は、ＶＤＥＶに定義されている属性の識別子である。そのＶＤＥＶが第１種ＶＤＥＶである場合には第１種ＶＤＥＶを示す識別子が格納され、そのＶＤＥＶが第２種ＶＤＥＶであり、仮想ボリュームに設定されている場合には第２種ＶＤＥＶを示す識別子が格納される。
【０１７１】
デバイス状態３５１４７は、ＶＤＥＶの状態を示す識別子である。ＶＤＥＶの状態は、正常、閉塞、障害閉塞等がある。閉塞は、パンク閉塞など、障害の発生意外の要因によって閉塞されていることを示す。障害閉塞は、デバイスの何れかに障害が発生しておりそのために閉塞されていることを示す。
【０１７２】
設定ＬＤＥＶ数３５１４８は、ＶＤＥＶに設定されているＬＤＥＶの総数である。ＬＤＥＶ番号３５１４９はＶＤＥＶに設定されているＬＤＥＶの番号が格納される。先頭ＬＤＥＶ−ＳＬＯＴ＃３５１５０は、設定されているＬＤＥＶの物理的な先頭のスロット番号の識別子である。
【０１７３】
終了ＬＤＥＶ−ＳＬＯＴ＃３５１５１は、設定されているＬＤＥＶの物理的な最終のスロット番号である。このＬＤＥＶ番号３５１４９、先頭ＬＤＥＶ−ＳＬＯＴ＃３５１５０及び終了ＬＤＥＶ−ＳＬＯＴ＃３５１５１は、ＬＤＥＶ数と同じ数だけＬＤＥＶ番号毎に設定される。
【０１７４】
図１２は、ＬＤＥＶ（ボリューム）の管理情報のテーブルである。ＬＤＥＶ管理情報は、ＬＤＥＶ固有情報３５１２１から構成される。ＬＤＥＶ固有情報３５１２１は、ＬＤＥＶ番号（ＬＤＥＶ＃）３５１２２、エミュレーションタイプ３５１２３、サイズ３５１２４、先頭スロット番号３５１２５、終了スロット番号３５１２６、パス定義情報３５１２７、デバイス属性３５１２８、デバイス状態３５１２９、プログラム使用状況３５１３００及びＰＯＯＬ−ＩＤ３５１３０１で構成される。
【０１７５】
ＬＤＥＶ＃３５１２２は、ＬＤＥＶの識別子である。
【０１７６】
エミュレーションタイプ３５１２３は、ＬＤＥＶのエミュレーションタイプの識別子である。
【０１７７】
サイズ３５１２４は、ＬＤＥＶに設定されている総サイズである。ＬＤＥＶが仮想ボリュームである場合には、サイズは仮想化されたものになる。
【０１７８】
先頭スロット番号３５１２５は、設定されたＬＤＥＶの先頭のスロット番号の識別子である。
【０１７９】
終了スロット番号３５１２６は、設定されたＬＤＥＶの最終のスロット番号である。
【０１８０】
パス定義情報３５１２７は、ホスト計算機１０に定義されたパスの識別子である。
【０１８１】
デバイス属性３５１２８は、ＬＤＥＶの属性の識別子である。ＬＤＥＶが第１種ＬＤＥＶである場合には第１種ＬＤＥＶを示す識別子が格納され、ＬＤＥＶが第２種ＬＤＥＶである場合には第２種ＬＤＥＶを示す識別子が格納される。また、ＬＤＥＶがプールに設定されている場合は、プール属性を示す識別子が格納される。
【０１８２】
デバイス状態３５１２９は、そのＬＤＥＶが所属するＶＤＥＶの状態を示す識別子である。ＶＤＥＶの状態は、正常、閉塞、障害閉塞等がある。閉塞は、パンク閉塞など、障害の発生以外の要因によって閉塞されていることを示す。障害閉塞は、デバイスの何れかに障害が発生しておりそのために閉塞されていることを示す。
【０１８３】
プログラム使用状況３５１３００は、ＬＤＥＶが何れかのプログラムによって処理中である場合に、そのプログラムの識別子が格納される。ＰＯＯＬ−ＩＤ３５１３０１は、ＬＤＥＶがプールに設定されている場合に、その識別子が格納される。
【０１８４】
階層番号３５１３０２には、論理ボリュームの供給元であるＰＤＥＶが対応する階層の管理番号が格納される。階層化に伴う管理に、ストレージ装置は、この管理番号を参照する。仮想ボリュームのテーブルに階層管理番号３５１３０２が設定されている場合には、仮想ボリュームにはこの階層のプールボリュームからページが割当てられる。
【０１８５】
ＶＤＥＶ管理テーブル（図１１）、ＬＤＥＶ管理テーブル（図１２）は、構成制御プログラム３５０３に基づき、ユーザ又は管理者からの操作によって設定又は更新される。以後の管理テーブルも同様である。
【０１８６】
階層番号は、記憶デバイス（メディア）に対応したものとなる。図１３Ａはメディアの管理情報のテーブルであり、図１３Ｂは、階層の管理情報のテーブルである。
【０１８７】
これら管理情報は、階層管理情報３５１３の具体的管理情報としてメモリ３５０に格納されている。メディア管理情報テーブルは、メディアがストレージ装置に増設された際に構成制御プログラム３５０３によって作成される。
【０１８８】
メディア種別３５１３２は、メディアの種類である。例えば、ディスクであれば、ＳＳＤ、ＦＣ(Ｆｉｂｅｒ Ｃｈａｎｎｅｌ)、ＳＡＳ（Ｓｅｒｉａｌ Ａｔｔａｃｈｅｄ ＳＣＳＩ）、ＳＡＴＡ（Ｓｅｒｉａｌ ＡＴＡ）等である。ストレージ装置は、メディアの種類を階層番号３５１３３毎で分類、管理するために、その階層を構成する情報をメディア管理情報テーブルに登録する。
【０１８９】
応答時間３５１３４は、データのリードやライト指示に対してのメディアからの応答時間を示す。この時間が短いメディア程、処理性能が一般的に高い。
【０１９０】
Ｓｅｑｕｅｎｔｉａｌ Ｄａｔａ Ｒａｔｅ３５１３５は、メディアのデータ転送能力である。メディアが単位時間あたりに転送できるデータ量のことであり、一般的に、この値が大きいほど、データの転送能力が高いメディアである。
【０１９１】
ＲＡＩＤレベル３５１３６は、階層を構成するＲＡＩＤのレベル、例えば、ＲＡＩＤ1やＲＡＩＤ５、ＲＡＩＤ６等である。図１３Ａは、階層管理情報の一例であり、他の情報を排除するものではない。
【０１９２】
階層番号３５１３３とメディアの種別との対応が、階層管理情報テーブル（図１３Ｂ）に示されている。図１３Ｂはメディアを階層番号に対応させるための分類の一例である。このメディアの分類はメディアの性能に基づいたものとなっている。
【０１９３】
すなわち、ストレージの性能に影響を与える要素である応答時間３５１３４やＳｅｑｕｅｎｔｉａｌ Ｄａｔａ Ｒａｔｅ３５１３５、ＲＡＩＤレベルを基に、メディアと階層番号とが対応付けられる。図１３Ｂは、メディアを６種類の階層に分類する例を示している。
【０１９４】
ストレージ装置は、階層を後から拡張することもできる。例えば、新たなメディアが追加された場合である。階層の分類は管理者やユーザによって実行されるか、あるいは、ストレージシステムによって一意に決定されてもよい。
【０１９５】
なお、メディアの分類の他の形態として、性能に加えてビットコストの観点を加える手法もある。
【０１９６】
ストレージ装置は、容量仮想化プール、システム容量プール、及び、仮想ボリュームに階層を設定するに際して、図１３Ａ、図１３Ｂで示されたテーブルを参照する。
【０１９７】
階層の分類は相対的であることを妨げない。例えば、計算機システムに存在する最良のデバイスを階層０に設定し、他のデバイスを下位の階層に分類する。
【０１９８】
図１４は、図１０において、概略を説明したアドレス管理テーブル３５１１を詳細に説明するものである。
【０１９９】
アドレス管理テーブル３５１１は、ターゲットデバイスとＬＤＥＶとＶＤＥＶと物理デバイスとのアドレスのマッピング情報を格納するものである。
【０２００】
アドレス管理テーブル３５１１は、ターゲットデバイス−ＬＤＥＶマッピング情報３５１１１、ＬＤＥＶ−ＶＤＥＶマッピング情報３５１１２、及びＶＤＥＶ−ＰＤＥＶマッピング情報３５１１３を有する。
【０２０１】
ターゲットデバイス−ＬＤＥＶマッピング情報３５１１１は、ターゲットデバイスのアドレスとＬＤＥＶのアドレスとの対応の情報を有する。
【０２０２】
ＬＤＥＶ−ＶＤＥＶマッピング情報３５１１２は、ＬＤＥＶのアドレスとＶＤＥＶのアドレスの情報を有する。
【０２０３】
ＶＤＥＶ−ＰＤＥＶマッピング情報３５１１３は、ＶＤＥＶのアドレスとそのＲＡＩＤグループ番号（又は、パリティグループ）とＰＤＥＶのアドレスの情報を有する。
【０２０４】
ストレージ装置は、このアドレス管理テーブルを参照することによって、ターゲットデバイス７００，７０１のアドレスがどのＬＤＥＶのどのアドレスに対応するかを知ることができる。また、ＬＤＥＶのアドレスがどのＶＤＥＶのどのアドレスに対応するかを知ることができる。
【０２０５】
また、ＶＤＥＶのアドレスがどのＲＡＩＤグループに属しており、どのＰＤＥＶのどのアドレスに対応するかを知ることができる。
【０２０６】
図１５は、容量仮想化プールの管理情報のテーブルである。
【０２０７】
プール管理情報３５２１は、プール固有情報３５２１１を有する。
【０２０８】
プール固有情報３５２１１は、ＰＯＯＬ−ＩＤ３５２１２、属性／用途３５２１３、エミュレーションタイプ３５２１４、容量３５２１５、空き容量３５２１６、閾値３５２１７、状態３５２１８、プールボリューム数３５２１９、プールボリュームデバイス番号リスト３５２２０、プールを利用しているデバイス数３５２２１及びプールを利用しているデバイス番号３５２２２を有している。
【０２０９】
ＰＯＯＬ−ＩＤ３５２１２は、プールの識別子である。
【０２１０】
属性／用途３５２１３は、容量仮想化プールの属性及び用途を示す識別子である。属性は、後述のＰＳＣＢ３５２４の連結の形態である。用途は、例えば、シン・プロビジュニング、スナップショット、リモートコピーなど、プール運用形態の用途である。
【０２１１】
エミュレーションタイプ３５２１４はプールのエミュレーションタイプの識別子である。
【０２１２】
容量３５２１５は、容量仮想化プールの実容量である。
【０２１３】
なお、図１５の管理テーブルに、ホスト計算機に対して仮想化された容量(仮想容量)が登録されてもよい。
【０２１４】
空き容量３５２１６は、容量仮想化プールの未使用の実容量である。容量仮想化プールの総実容量、又は、使用済み実容量、或いはこれらの一つ又は複数の組み合わせがテーブルに登録されてもよい。
【０２１５】
閾値３５２１７は、容量仮想化プールに対するプールボリュームの追加、容量仮想化プールからのプールボリュームの回収を実行するための特性値である。
【０２１６】
状態３５２１８は、プールの現在の状態である。例えば、定義中、拡張中、有効等である。
【０２１７】
プールボリューム数３５２１９は、プールとして設定されているＬＤＥＶの総数である。
【０２１８】
プールボリュームデバイス番号リスト３５２２０はプールとして設定されているＬＤＥＶ番号の一覧である。
【０２１９】
プールを利用しているデバイス数３５２２１は、容量仮想化プールに属するプールボリュームの数である。プールを利用しているデバイス番号３５２２２は、容量仮想化プールに属するプールボリュームのＩＤの一覧である。
【０２２０】
プールにある階層のリスト３５２２３は、容量仮想化プールに設定されている階層情報のリストの一覧である。階層情報のリスト３５２７１については後述する。階層情報のリスト３５２７１は、容量仮想化プール内階層管理情報３５２７の一例である。
【０２２１】
図１６は、ＲＡＩＤグループ情報３５１５の一例のテーブル３５１５１である。この情報は、ＲＡＩＤグループ番号３５１５２を構成するＨＤＤ種別情報を管理するためのものである。
【０２２２】
メディア種別３５１５３は、ＳＳＤやＳＡＳなどのメディアの種類を示す情報である。
【０２２３】
回転数３５１５４は、メディアの回転数を示す。
【０２２４】
ＲＡＩＤレベル３５１５５はＲＡＩＤグループを構成する場合での、例えば、ＲＡＩＤ１，ＲＡＩＤ５などの情報である。
【０２２５】
図１７は、階層化された容量仮想化プール、又は、階層化されたシステム容量プールの階層管理のための理情報３５２７１の一例のテーブル３５２７１である。このテーブルの特徴は、容量仮想化プールの管理情報（図１５）、又は、後述のシステム容量プールの管理情報（図１８）に階層の情報（Ｔｉｅｒ＃：３５２７３）を追加した点である。
【０２２６】
情報テーブル３５２７１は、プールＩＤ３５２７２、階層番号３５２７３、エミュレーションタイプ３５２７４、容量３５２７５、空き容量３５２７６、閾値３５２７７、状態３５２７８、プールボリューム数３５２７９、プールボリュームデバイス番号リスト３５２８０、プールを利用しているデバイス数３５２８１及びプールを利用しているデバイス番号３５２８２と、階層に属するプールボリュームのリスト３５２８３と、から構成される。
【０２２７】
これらの各情報について、容量仮想化プールの管理情報テーブル（図１５）、又は、システム容量プールの管理情報テーブル（図１８）と異なる部分を説明する。
【０２２８】
階層番号３５２７３は、プールに設定された階層の識別情報である（参考：図１３Ａ，１３Ｂ）。プール内に複数の階層が設定されている場合には、階層毎に図１７のテーブルが設定される。
【０２２９】
容量３５２７５は、各階層（Ｔｉｅｒ＃：３５２７３）の総実容量である。
【０２３０】
空き容量３５２７６はその階層の未使用領域のサイズである。
【０２３１】
閾値３５２７７は、階層毎に設定可能である。
【０２３２】
状態３５２７８は、階層の現在の状態であり、例えば、定義中、拡張中、有効等である。
【０２３３】
プールボリューム数３５２１９、プールボリュームデバイス番号リスト３５２２０、プールを利用しているデバイス数３５２２１、プールを利用しているデバイス番号３５２２２のそれぞれは、既述した内容のものであり、階層毎に設定される。
【０２３４】
階層に属するプールボリュームリスト３５２８３には、各階層に所属するプールボリュームのリスト３５２２１(図１２)が含まれる。
【０２３５】
なお、図３のように、複数のクラスタ間に容量仮想プールが跨る場合には、管理テーブル（図１５、図１７）にはクラスタを区別する情報が付加され、テーブル内の情報はクラスタ毎に管理される。
【０２３６】
図１８は、システム容量プールの管理情報３５２５のテーブル３５２５１である。システム容量プール管理情報テーブル３５２５１は、プールＩＤ３５２５２、属性／用途３５２５３、エミュレーションタイプ３５２５４、容量３５２５５、空き容量３５２５６、閾値３５２５７、状態３５２５８、プールボリューム数３５２５９、使用するプールＩＤリスト３５２６０、階層リスト３５２６１とから構成されている。
【０２３７】
プールＩＤ３５２５２は、システム容量プールの識別子である。
【０２３８】
属性／用途３５２５３は、プールの属性及び用途を示す識別子であり、具体的にはプールがシステム容量プールであることを示すものとなる。
【０２３９】
エミュレーションタイプ３５２５４は、システム容量プールのエミュレーションタイプの識別子である。
【０２４０】
容量３５２５５は、システム容量プールの総容量である。総容量とはシステム容量プール設定された全プールボリュームの合計の容量である。
【０２４１】
空き容量３５２５６は、システム容量プールの未使用の領域のサイズである。
【０２４２】
閾値３５２５７は、システム容量プールに対する制限値であって、既述したものとほぼ同様である。例えば、システム容量プールの使用済み容量が閾値を超えるとストレージ装置に記憶デバイスを増設する必要がある。
【０２４３】
状態３５２５８は、システム容量プールの現在の状態である。例えば、定義中、拡張中、有効等である。
【０２４４】
プールボリューム数３５２５９は、システム容量プールとして設定されているＬＤＥＶ（未使用プールボリューム）の総数である。
【０２４５】
使用するプールＩＤリスト３５２６０は、システム容量プールに対応付けられた容量仮想化プールのＩＤの一覧である。通常は、ストレージ装置内の複数の容量仮想化プールの全てが登録される。
【０２４６】
階層リスト３５２６１は、システム容量プールに設定されている階層のテーブル３５２７１の一覧である。 
【０２４７】
なお、既述のテーブルで、階層が設定されていない場合には、階層情報にはＮＵＬＬが登録される。
【０２４８】
図１５乃至図１８の各テーブルは、構成制御プログラム３５０３によって設定・更新される。階層の定義は、プールが稼働中でも可能である。
【０２４９】
なお、ストレージ装置は、システム容量プールを、シン・プロビジョニングの他、ストレージ制御における他のコピー系機能である、スナップショット、リモートコピーに適用し、これらコピー系機能に必要なコピー先ボリュームを確保するために用いてもよい。
【０２５０】
図１９は、ＶＶＯＬ−ＤＩＲ３５２３及びＰＳＣＢ３５２４を説明するためのブロック図である。
【０２５１】
ＶＶＯＬ−ＤＩＲ３５２３は、仮想ボリュームの仮想領域を構成するための第２種ＬＤＥＶの構成情報である。
【０２５２】
ＰＳＣＢ（Ｐｏｏｌ Ｓｌｏｔ Ｃｏｎｔｒｏｌ Ｂｒｏｃｋ）３５２４は、容量仮想化プール４２に設定された第１種ＬＤＥＶの構成の情報である。
【０２５３】
既述のように、ストレージ装置３０は、ＰＤＥＶ３４からＲＡＩＤ構成によって第１種ＶＤＥＶ４００を構成する。この第１種ＶＤＥＶ４００を、記憶領域である第１種ＬＤＥＶ５００に分割する。
【０２５４】
第１種ＬＤＥＶが容量仮想化プール４２に設定される。この容量仮想化プール４２に設定された第１種ＬＤＥＶがプールボリューム９００である。
【０２５５】
また、ストレージ装置は、仮想ボリューム（ＶＶＯＬ）７０１を設定し、さらに、第２種ＶＤＥＶ４０１を構成する。この第２種ＶＤＥＶを仮想ボリュームの仮想的な記憶領域としての第２種ＬＤＥＶ（ＶＶＯＬ８００）に分割する。
【０２５６】
ストレージ装置は、仮想ボリューム７０１である第２種ＬＤＥＶ５０１を、プールボリュームである第１種ＬＤＥＶ５００に割り当てる。これによって、ホスト計算機１０がアクセスする仮想ボリュームの記憶領域が、物理デバイスであるＰＤＥＶ３４から構成された第１種ＬＤＥＶに対応することになる。
【０２５７】
仮想ボリュームの構成は、ＶＶＯＬ−ＤＩＲ３５２３に格納される。ＶＶＯＬ−ＤＩＲ３５２３は、ＬＤＥＶ番号（ＬＤＥＶ＃）３５２３１及びエントリ３５２３２によって構成される。
【０２５８】
ＬＤＥＶ番号（ＬＤＥＶ＃）３５２３１は第２種ＬＤＥＶの識別子である。
【０２５９】
エントリ３５２３２は、第２種ＬＤＥＶの構成情報である。このエントリ３５２３２は、第２種ＬＤＥＶアドレス３５２３３、ＰＳＣＢポインタ３５２３４、及び、階層番号３５２３５から構成される。
【０２６０】
ＰＳＣＢポインタ３５２３４には、第２種ＬＤＥＶがプールボリューム９００の第１種ＬＤＥＶに割り当てられる場合に、その第１種ＬＤＥＶの領域のポインタが格納される。なお、初期状態では第２種ＬＤＥＶは第１種ＬＤＥＶに割り当てられていないので、ＰＳＣＢポインタ３５２３４には「ＮＵＬＬ」が格納される。
【０２６１】
ＰＳＣＢ３５２４は、容量仮想化プール４２に設定されている第１種ＬＤＥＶの情報である。このＰＳＣＢ３５２４は、容量仮想化プール４２に設定されている第１種ＬＤＥＶのスロット毎に設定される。
【０２６２】
ＰＳＣＢ３５２４は、ＬＤＥＶ番号（ＬＤＥＶ＃）３５２４１、プールボリュームアドレス３５２４２、ＰＳＣＢ前方ポインタ３５２４３及びＰＳＣＢ後方ポインタ３５２４４から構成される。
【０２６３】
ＬＤＥＶ番号（ＬＤＥＶ＃）３５２４１は、プールボリュームでの第１種ＬＤＥＶの識別子である。プールボリュームアドレス３５２４２は、プールボリューム９００における第１種ＬＤＥＶのアドレスである。
【０２６４】
ＰＳＣＢ前方ポインタ３５２４３及びＰＳＣＢ後方ポインタ３５２４４は、プールボリューム９００内の第１種ＬＤＥＶの前後のスロットの識別子である。
【０２６５】
また、プールボリューム９００の領域のうち、未使用の領域は、その先頭がフリーＰＳＣＢキュー３５２４０で示される。フリーＰＳＣＢキュー３５２４０は、次のスロットを示すＰＳＣＢ３５２４へのポインタを含む。
【０２６６】
ストレージ装置３０は、フリーＰＳＣＢキュー３５２４０に示されたポインタを参照して、次のＰＳＣＢ３５２４を得る。さらに、次のＰＳＣＢ３５２４のＰＳＣＢ後方ポインタ３５２４５を参照して、段階的にＰＳＣＢ３５２４を辿る。そして、その未使用の領域の最終のスロットに対応するＰＳＣＢ３５２４を得る。この最後のＰＳＣＢ３５２４のＰＳＣＢ後方ポインタ３５２４４はフリーＰＳＣＢキュー３５２４０である。
【０２６７】
ストレージ装置は、フリーＰＳＣＢキュー３５２４０を辿り、ＰＳＣＢ３５２４のポインタによって連結された集合によって、システム容量プールのプールボリューム９００の未使用の領域を知ることができる。
【０２６８】
ストレージ装置は、容量仮想化プール４２に設定された第１種ＬＤＥＶに対応するＰＳＣＢ３５２４を設定する。具体的には、容量仮想化プール４２に設定された第１種ＬＤＥＶの各スロットに対応するＰＳＣＢ３５２４を設定し、さらにフリーＰＳＣＢキュー３５２４０を設定する。初期状態では、容量仮想化プール４２は全て未使用であるため、フリーＰＳＣＢキュー３５２４０によって連結される集合は、容量仮想化プールに設定された第１種ＬＤＥＶの全ての領域に対応する。
【０２６９】
そして、ストレージ装置３０は、この容量仮想化プールの領域を使用する場合に、必要なスロット分のＰＳＣＢ３５２４を第２種ＬＤＥＶであるＶＶＯＬ−ＤＩＲ３５２３に割り当てることで、当該領域が使用可能となる。
【０２７０】
一つスロット、又は、複数のスロットの集号がページに相当する。ページは、一つ又は複数のＰＳＣＢから特定される。ホスト装置から仮想ボリューム８００へのアクセス、仮想ボリューム８００のアクセス領域に対するプールボリュームからの記憶領域の割り当てはページ単位で実行される。
【０２７１】
具体的には、ストレージ装置は、フリーＰＳＣＢキュー３５２４０を参照する。そして、第２種ＬＤＥＶに割り当てる必要な領域分（ページ）のＰＳＣＢ３５２４を取得する。この取得したＰＳＣＢ３５２４を、それぞれＶＶＯＬ−ＤＩＲ３５２３のエントリに割り当てる。すなわち、ＶＶＯＬ−ＤＩＲ３５２３の各エントリのＰＳＣＢポインタ３５２３４に、対応するＰＳＣＢ３５２４を示すポインタを格納する。なお、割り当て済みのＰＳＣＢ３５２４は、フリーＰＳＣＢキュー３５２４０の連結から外される。
【０２７２】
これによって、第２種ＬＤＥＶの各ページ（スロット）が、ＶＶＯＬ−ＤＩＲ３５２３の各エントリのＰＳＣＢポインタ３５２３４で示されるＰＳＣＢ３４２４に割り当てられる。
【０２７３】
ＰＳＣＢ３５２４は第１種ＬＤＥＶのスロットに対応しているので、結果として、第２種ＬＤＥＶが第１種ＬＤＥＶに割り当てられ、ホスト計算機１０のアクセス対象である仮想ボリュームが物理デバイスとして使用可能となる。
【０２７４】
図１９では、容量仮想化プールは階層化管理がされていないので、階層番号３５２３５は空白となる。
【０２７５】
コマンド制御プログラム３５０１は、ホスト計算機１０からライト要求を受けた仮想ボリュームのアドレスに基づいてＶＶＯＬ‐ＤＩＲテーブルを辿り、ＶＶＯＬ−ＤＩＲ３５２３のエントリにＰＳＣＢが割り当たっているか否かをチェックする。
【０２７６】
ＰＳＣＢが割り当たっている場合には、コマンド制御プログラム３５０１は、既に存在するＰＳＣＢにライトデータを上書きする。
【０２７７】
ＰＳＣＢが割り当たっていない場合には、フリーキューに接続するＰＳＣＢを選択して、これをＶＶＯＬ−ＤＩＲ３５２３のエントリ３５２３２に割当てる。
【０２７８】
ページ単位の情報として、さらに、ページの状態の検証から得られた情報がある。例えば、ページへのアクセス頻度に対する定期的なモニタの結果得られた情報である。
【０２７９】
また、プールボリュームに格納されたデータには、容量仮想化プールのページごとに情報を付して、どの仮想ボリュームのどのアドレスにデータが割当てられているかを検索できる情報が含まれてもよい。  
【０２８０】
ストレージ装置３０は、システム容量プール４４をページ単位で管理する必要がない。システム容量プール４４から容量仮想化プール４２へのプールボリュームの追加の処理の際に、ＰＳＣＢに基づく管理形態を採用する。
【０２８１】
なお、ストレージ装置３０は、システム容量プールから容量仮想化プールへ追加するプールボリュームをフリーキューに接続して管理することもよい。
【０２８２】
図２０は、容量仮想化プール４２に、階層が設定された場合のブロック図を示している。
【０２８３】
ストレージ装置３０は、階層ごとでフリーＰＳＣＢを管理する。階層として、Ｔｉｅｒ０とＴｉｅｒ１を例示した。仮想化容量プールも同じ階層毎に管理されている。
【０２８４】
１つの第２種ＬＤＥＶ３５２３１に複数の階層（Ｔｉｅｒ，Ｔｉｅｒ１）からページ単位で領域が割り当てられている。ストレージ装置３０は、ページ単位の情報をＰＳＣＢ単位の情報として管理する。階層番号３５２３５は、ＰＳＣＢが属する階層の番号である。      
【０２８５】
コマンド制御プログラム３５０１は、ＶＶＯＬ−ＤＩＲ３５２３のエントリにＰＳＣＢが割り当たっていない場合には、目的の階層の番号に割当てられたフリーキューに接続するＰＳＣＢを選択して、これをＶＶＯＬ−ＤＩＲ３５２３のエントリ３５２３２に割当てる。
【０２８６】
仮想ボリュームにどのＴｉｅｒからのページから割当てるかについて、例えば、レスポンスが速いと期待される高性能なＴｉｅｒから、まず、最初にページが割り当てられる方法がある。
【０２８７】
仮想ボリューム毎に、初期に割り当てるＴｉｅｒ番号を、ホスト計算機又はストレージ装置が設定してもよい。
【０２８８】
容量仮想化プールに対して、仮想ボリュームに、高性能なＴｉｅｒから、又は、低性能なＴｉｅｒから、ページを割当てるように設定してもよい。ストレージ装置は、ホスト計算機からのＩＯ負荷をモニタリングして適切なＴｉｅｒへデータを再配置してもよい。
【０２８９】
容量仮想化プールが複数存在する場合、全ての容量仮想化プールが階層化されていても、一部の容量仮想化プールが階層化され、残りが階層化されていなくてもよい。なお、階層化されていないプールとは、通常、単一Ｔｉｅｒのプールボリュームから構成されている。  
【０２９０】
システム容量プールからプールボリュームが追加される対象としてシン・プロビジョニング用のプール「容量仮想化プール」について説明したが、これに代わるものとして、先に略説したように、スナップショットボリュームを有するスナップショットプール、リモートコピーのジャーナルボリュームを有するジャーナルプールがある。
【０２９１】
スナップショットプールにおける閾値には、スナップショットに利用されていないスナップショットボリュームの総数、又は、未利用の総容量がある。スナップショットでは、バックアップ量が多くなると、容量が足りなくなるため、ストレージ装置はシステム容量プールからスナップショットプールにスナップショットボリュームを追加する。
【０２９２】
一方、バックアップ容量が少ない場合は、スナップショットプールの容量が過大であるため、ストレージ装置は、スナップショットプール(容量仮想化プールに対応)からシステム容量プールへスナップショットボリュームを戻す処理を実行する。
【０２９３】
ジャーナルプールにおける閾値にはリモートコピーの帯域がある。リモートコピーにおける、コピー元ボリュームとコピー先ボリュームとの間の転送帯域が狭くなった場合、ストレージ装置は、システム容量プールからジャーナルプールにジャーナルボリュームを追加して帯域を確保する。
【０２９４】
また、ストレージ装置は、帯域が広く、リモートコピーの能力に余裕が出ている場合には、帯域を狭くして、コストダウンを図るために、ジャーナルボリュームを、ジャーナルプール(容量仮想化プールに対応)からシステム容量プールに戻す。
【０２９５】
ストレージ装置は、第１種ＬＤＥＶをシステム容量プール４４に設定すると、ＬＤＥＶ管理テーブル(図１２)のプールＩＤ３５１３０１にシステム容量プールのＩＤを登録する。
【０２９６】
ストレージ装置は、システム容量プール４４からプールボリュームを容量仮想化プール４２に追加するとＬＤＥＶ管理テーブル(図１２)のプールＩＤ３５１３０１に目的の容量仮想化プールのＩＤを登録する。
【０２９７】
ストレージ装置は、容量仮想化プールに追加すべき容量を、容量仮想化プールでの容量の消費動向から決定したり、或いは、システム容量プールから容量仮想化プールへのプールボリュームの過去の追加の傾向から決定する。
【０２９８】
容量仮想化プールへ追加するプールボリュームの数は、想定追加容量をプールボリュームの基準容量で除算することによって算出される。
【０２９９】
次に、容量仮想化プールの容量拡張動作について説明する。これは、自動容量拡張縮小プログラム３５０９によって実行される。同プログラムは、仮想ボリュームに対するページの割当て処理の過程、ストレージ装置内のコピー機能、例えば、ミラーリング、差分スナップショットにおいて、副ボリュームへの書き込み処理に対応したページ割当て処理の過程、そして、周期的なシステム監視処理の過程において、呼び出される。
【０３００】
コマンド処理プログラム３５０１が仮想ボリュームにライト処理を実行した際に、自動容量拡張縮小プログラムによってなされる、容量仮想化プールの容量拡張処理の詳細を図２１に示すフローチャートに基づいて説明する。このフローチャートは容量仮想化プールの容量変更のために、二つの閾値を用いる。
【０３０１】
第１の閾値は上限値であって、同プールの使用容量がこの閾値を超えると、自動容量拡張／縮小プログラム３５０９は、容量仮想化プール４２の容量を拡張する。
【０３０２】
第２の閾値は参照値であって、使用量がこの閾値を越えると、プログラムは、容量仮想化プールの監視のために使用容量の監視記録を開始する。なお、第１の閾値及び第２の閾値は、容量仮想化プールの全体容量に対する相対比であり、使用容量もプールの全体容量に対する相対比である。
【０３０３】
Ｓ２４００１において、自動容量拡張／縮小プログラム３５０９は、容量仮想化プールの使用容量と第１の閾値とを比較する。この比較の結果、前者が後者以上であると判定すると、容量仮想化プールの有効実容量が不足していると判断して、システム容量プール４４から容量仮想化プール４２に追加される容量を決定する（Ｓ２４００９）。
【０３０４】
次いで、Ｓ２４００３において、全容量仮想化プールの使用容量の合計が、第１の閾値と比較される。このステップにおける、第１の閾値は、Ｓ２４００１の第１の閾値と同じ値であっても無くてもよいが、Ｓ２４００３における第１の閾値は、全容量仮想化プールの合計容量に対する合計使用量の上限の割合である。
【０３０５】
この判断の結果、合計使用量が閾値未満である場合、Ｓ２４００４は、ストレージ装置に存在する複数の容量仮想化プールにおいて、容量に余裕があるとして、他の容量仮想化プールから、ホスト装置からのライト処理が適用される容量仮想化プールへ、プールボリュームを追加する。
【０３０６】
一方、Ｓ２４００３の判定で、合計使用量が閾値以上である場合には、プログラム３５０９は、容量仮想化プールの容量が不足しており、システム容量プール４４から容量仮想化プール４２へプールボリュームを補う必要があるとして、Ｓ２４０１０においてシステム容量プールに、容量仮想化プールに追加可能なプールボリュームが存在するか否かを判定する。この判定を否定する場合には、ユーザに容量仮想化プールの容量を拡張できないこと、即ち、ユーザや管理者にメディアをストレージ装置に増設することを求める（Ｓ２４０１１）。
【０３０７】
一方、自動容量拡張縮小プログラム３５０９が、Ｓ２４０１０の判定を肯定すると、ライト処理対象となった容量仮想化プールにシステム容量プールからプールボリュームを追加する(Ｓ２４００５)。
【０３０８】
Ｓ２４００１において、プログラム３５０９が、容量仮想化プールの使用容量が第１の閾値未満であると判定すると、使用容量と第２の閾値とを比較する（Ｓ２４００２）。前者が後者以下である場合に、容量仮想化プールに容量の不足はないとして処理を終了する。但し、この場合、容量仮想化プールに容量の過剰があるため、プールボリュームが容量仮想化プールから削減される。
【０３０９】
前者が後者より大きいと、今回のライト処理によってこのことが初めて生じた否かを判定する（Ｓ２４００７）。プログラムがこの判定を肯定すると、容量仮想化プールの容量不足に備えるため、ライト対象となった容量仮想化プールに対する監視処理を開始する（Ｓ２４００８）。
【０３１０】
監視処理とは、容量仮想化プールの容量と、容量をチェックした日時の記憶である。監視プログラムが定期的に容量仮想化プールの監視処理を継続する。なお、Ｓ２４００３はシステム容量プールの容量に余裕があるか否かの判定に変更されてもよい。
【０３１１】
次に、図２２は、自動容量拡張／縮小プログラム３５０９が定期的に実行する、容量仮想化プールの自動容量拡張処理のフローチャートである。
【０３１２】
Ｓ２４２１０は、容量仮想化プールの使用容量とその容量が判定された日時の記録をメモリの処理領域から読み出す。
【０３１３】
Ｓ２４２２０は、容量仮想化プールの過去の容量消費速度などの運用傾向などに基づいて、有効実容量が不足する日時を算出する。容量の消費速度は、定期チェックのタイミングで取得した、容量仮想化プールの容量（使用済み容量、又は、空き容量）を比較することによって算出可能である。
【０３１４】
Ｓ２４２３０は、次回の容量仮想化プールの容量チェックの予定日時と算出された日時を比較し、予定日時が算出された日時以前である場合、フローチャートを終了する。予定日時が算出された日時以降である場合には、Ｓ２４２４０は、システム容量プールに十分なプールボリュームがあるか否かを判定する。
【０３１５】
否定判定がなされると、Ｓ２４２６０は、容量仮想化プールの容量拡張が不可であると判定し、フローチャートを終了する。肯定判定がなされると、Ｓ２４２５０は、容量拡張処理を実行する。
【０３１６】
なお、システム容量プールの容量が不足している場合、ストレージ装置がシステム容量プールに存在する容量分を容量仮想化プールに追加し、管理装置２０は、容量が枯渇したシステム容量プールのＩＤ、容量が枯渇したシステム容量プールを有するストレージ装置の識別情報をユーザ、管理者に報知するようにしてもよい。
【０３１７】
図２３は、容量仮想化プールの自動容量拡張処理の他のフローチャートである。コマンド制御プログラム３５０１は、管理者側装置から仮想ボリューム作成コマンドを受けると、プール制御プログラム３５０７を呼び出す。
【０３１８】
プール制御プログラム３５０７は、管理者から指定されたＩＤが付与された容量仮想化プールにオーバプロビジョニング閾値（図１５の３５２１７）が設定されているか否かをチェックする（Ｓ２４３１０）。
【０３１９】
プール制御プログラム３５０７が、閾値が設定されていないと判定すると、プール制御プログラム３５０７は、管理者から作成が指示された仮想ボリュームを、管理者が指示したＩＤが与えられた容量仮想化プールに定義するために、容量仮想化プールの管理情報（図１５）に定義された仮想化ボリュームの情報を、作成対象の仮想ボリュームに対して設定する。
【０３２０】
さらに、構成制御プログラム３５０３を呼び出すと、構成制御プログラムは、アドレス管理テーブル３５１１の各マッピング情報に、作成した仮想ボリュームの情報を設定する。すなわち、Ｓ２４３１０Ａは、仮想ボリュームの定義、設定処理を行う。
【０３２１】
次いで、Ｓ２４３１０Ｂは、容量仮想化プールの管理情報（図１５）を更新し、Ｓ２４３１０Ｃは、管理者に仮想ボリュームの作成を完了した通知を行う。
【０３２２】
プール制御プログラム３５０７が、オーバプロビジョニング閾値が設定されていると判定すると、ストレージ装置に実装済みの仮想化ボリュームと管理者からの要求によって作成される仮想ボリュームとの合計の使用総容量を算出し(Ｓ２４３２０)、次いで、当該総仮想容量と、容量仮想化プールの実容量とオーバプロビジョニング閾値との乗算値とを比較し、前者が後者を超過しているか否かをチェックする(Ｓ２４３３０)。
【０３２３】
プール制御プログラム３５０７が、前者が後者を超過していないと判定すると、Ｓ２４３２０Ａ〜Ｓ２４３２０Ｃを実行する。
【０３２４】
一方、プール制御プログラム３５０７が、超過していると判定すると、超過分を、プールボリュームを容量仮想化プールに追加することによって、補うか否かを判定するために、管理サーバ２０等から優先度情報がストレージ装置に送信されている否かをチェックし、さらに、この優先度情報が「高」であるか否かをチェックする（Ｓ２４３４０）。
【０３２５】
優先度が「高」である場合、プール制御プログラム３５０７が自動容量拡張／縮小プログラム３５０９を呼び出して、これに、Ｓ２４３５０以降での容量仮想化プールの自動拡張処理を実行させる。
【０３２６】
Ｓ２４３５０は、容量仮想化プールにおいて不足する実容量分を算出或いは予測し(Ｓ２４３５０)、次いで、Ｓ２４３６０は、システム容量プールに設けられた閾値を参照するなどして、システム容量プールの空き容量にこの実容量分を賄うに足る実容量があるか否かを判定する。
【０３２７】
どの程度容量仮想化プールを拡張するかの設計例として、予め値を決めて、仮想ボリュームの仮想容量の合計が容量プールの実容量の９０％以下になるように、容量仮想化プールへプールボリュームを増設する、ことがある。
【０３２８】
Ｓ２４３６０がこれを否定判定すると、Ｓ２４３６０Ａは、仮想ボリュームの作成が不可能であることを仮想ボリューム作成依頼元に警告或いは通知する。
【０３２９】
なお、ストレージ装置が仮想ボリュームの作成が不可能であることの通知を発する形態に代えて、容量に余裕のある容量仮想化プールから容量を回収し、或いは、ストレージ装置３０に外接するストレージを検索し、その容量を使って、容量仮想化プールの容量拡張処理を自動継続するようにしてもよい。このことは、図２３に示すフローチャートに係る処理ばかりでなく、他のフローチャートに係る処理にも適用可能である。
【０３３０】
Ｓ２４３６０が肯定判定をすると、Ｓ２４３７０は、システム容量プールから対象容量仮想化プールにプールボリュームを追加し、Ｓ２４３８０、Ｓ２４３９０、Ｓ２４４００は、仮想ボリュームの作成処理を行う。
【０３３１】
一方、Ｓ２４３４０が、優先度を「高」でないと判定すると、Ｓ２４３４０Ａは、オーバプロビジョニング違反として、仮想ボリュームの作成ができないことを管理ユーザに通知する。
【０３３２】
図２４は容量仮想化プールの容量自動縮小処理について説明するフローチャートである。容量仮想化プールの容量自動拡張処理及び容量自動縮小処理の適用について、容量仮想化プールに対するＩＯ頻度、ＩＯ負荷が閾値として採用されてもよい。Ｓ２４５００の閾値３は、容量仮想化プールに対するＩＯ負荷に基づく制限値である。
【０３３３】
コマンド制御プログラム３５０１は、容量仮想化プールに対するＩＯ負荷と閾値３とを比較し（Ｓ２４５００）、前者が後者以上であれば、容量仮想化プール４２の容量を縮小すべきではないとして処理を終了する。
【０３３４】
一方、前者が後者を下回っている場合には、容量を縮小する余地があるとして、自動容量拡張／縮小プログラム３５０９を呼び出す。
【０３３５】
Ｓ２４５０２は、容量仮想化プールの使用済み容量と閾値２とを比較する。閾値２は容量仮想化プールの使用済み容量の下限を規定するものであり、容量仮想化プールの使用済み容量がこの閾値以上である場合には、容量仮想化プールの容量に過剰はなくその容量を縮小する余地はないとして、Ｓ２４５０２は、フローチャートを終了する。
【０３３６】
Ｓ２４５０２が肯定判定を行うと、Ｓ２４５０４は容量仮想化プールのプールボリュームを削除して、システム容量プールに削除したボリュームを追加する。なお、図２４のフローチャートを実行する契機は、図２１乃至図２３の少なくとも一つの契機と同じである。
【０３３７】
図２５は容量仮想化プールの自動拡張処理の他の例に係るフローチャートである。このフローチャートは図２１の変形例であって、容量仮想化プールが階層化されており、自動容量の拡張処理が容量仮想化プールの階層毎に実行される点が異なる。
【０３３８】
このフローチャートにおいて、図２１に示された各処理に対応する部分に、同一の符号を付している。図２５の符号Ｓ２４００１とＳ２４００２の処理においては、階層毎に閾値が検討される。図２５のフローチャートには、図２１のＳ２４００３とＳ２４００４に相当する処理は含まれていない。
【０３３９】
図２６は、システム容量プールに対するプールボリュームの自動追加／自動削除のフローチャートである。自動容量拡張／変更プログラム３０９は、システム容量プールの現存容量（複数の未使用プールボリュームの合計容量）と下限閾値（閾値１)と比較する（Ｓ２６００１）。前者が後者以上と判定すると、システム容量プールの容量と上限の閾値（閾値２）とを比較する（Ｓ２６００５）。前者が上限閾値以下であると判定すると、システム容量プールの容量には不足も過剰もないとしてフローチャートを終了する。
【０３４０】
Ｓ２６００５が、システム容量プールの容量が閾値２を上回っていると判定すると、Ｓ２６００６は、システム容量プールの容量に過剰があるとして、システム容量プールから未使用のプールボリュームを削除する。
【０３４１】
このように、システム容量プールの容量を縮小する場合には、記憶ドライブを減設することが基本となる。自動容量拡張／変更プログラム３０９は、撤去するＨＤＤディスクを決定し、ストレージ装置側でシステム容量プールの容量を自動減少させるのか、管理ユーザによる手動減少に委ねるのかを、事前の設定或いは管理ユーザからの入力情報に基づいて決定する。
【０３４２】
前者が選択された場合には、自動容量拡張／変更プログラム３０９は、撤去すべきＨＤＤに作成されたプールボリュームを管理テーブルから削除する。次いで、管理ユーザへ撤去すべきＨＤＤ情報を通知する。この通知を受けたユーザはＨＤＤを撤去する。
【０３４３】
一方、後者が選択された場合には、ユーザは、プールボリュームを管理テーブルから削除する処理を行い、その後、撤去すべきＨＤＤを認知して、その撤去を実行する。
【０３４４】
自動容量拡張／変更プログラム３０９が、Ｓ２６００１について、システム容量プールの容量が閾値１未満であると判定すると、システム容量プールの容量が不足しているため、システム容量プールにプールボリュームをＰＤＥＶから追加する。
【０３４５】
自動容量拡張／変更プログラム３５０９は、システム容量プールの容量の不足を検出すると、ユーザ又は管理者にメディアの増設要求を送信する。ユーザ又は管理者は、ＰＤＥＶからＶＤＥＶ及びＬＤＥＶを設定し、ＬＤＥＶをプールボリュームとしてシステム容量プールに設定する。
【０３４６】
次いで、Ｓ２６００３は、システム容量プール管理テーブル（図１８）を参照して、システム容量プールに追加されるプールボリュームが、システム容量プールに存在する階層に分類されるメディアからのものかを判定し、この判定を肯定するとフローチャートを終了する。
【０３４７】
一方、Ｓ２６００２が前記判定を否定すると、新たなメディアと既存の階層に分類されたメディアとについて階層の見直し行い、見直した階層をシステム容量プールテーブル（図１８）に追加して、フローチャートを収容する。
【０３４８】
図２６で説明した処理は、定期的なタイミングで実行される。その他、容量仮想化プールの自動容量拡張／縮小が発生した際に実行されてもよい。システム容量プールに階層の設定が無い場合には、Ｓ２６００３,２６００４は省略される。
【０３４９】
図２７は複数の容量仮想化プール間での自動容量変更処理を達成するフローチャートである。容量仮想化プールＡはプールボリュームの移行先であり、容量仮想化プールＢはプールボリュームの移行元である。
【０３５０】
このフローチャートは自動容量拡張／縮小プログラム３５０９によって実行される。Ｓ３３００１は、容量仮想化プールＡと容量仮想化プールＢとの優先度を比較し、容量仮想化プールＡが容量仮想化プールＢより優先度高いか否かを判定する。
【０３５１】
Ｓ３３００１がこの判定を否定すると、Ｓ３３００８は、他の容量仮想化プールＢの存在の有無を選択し、他の容量仮想化プールＢがストレージ装置に存在しないと判定すると、フローチャートを終了する。
【０３５２】
一方、これを否定判定すると、次のステップに移動して、Ｓ３３００９は次の容量仮想化プールＢを選択して、Ｓ３３００１にリターンする。
【０３５３】
Ｓ３３００１が肯定判定を行うと、Ｓ３３００２は容量仮想化プールＡの使用済み容量と閾値（上限）とを比較する。Ｓ３３００２がこの判定を否定すると、Ｓ３３００８に移動する。一方、Ｓ３３００２が肯定判定を実施すると、Ｓ３３００３は、容量仮想化プールＢの使用済み容量と閾値（下限）とを比較し、これを否定判定するとＳ３３００８に移動する。
【０３５４】
Ｓ３３００３が肯定判定を実施することは、容量仮想化プールＡの有効実容量が不足し、容量仮想化プールＢの有効実容量に余裕があるということであるため、容量仮想化プールＢから容量仮想化プールＡにプールボリュームが追加できるということである。そこで、Ｓ３３００４は、容量仮想化プールＢから削除して、システム容量プールに回収すべきプールボリュームを選択する。
【０３５５】
構造制御プログラム３５０３は、容量仮想化プールＢのテーブル（図１５）にプールボリュームを削除する更新を適用し、次いで、システム容量プールテーブル（図１８）に容量仮想化プールＢからのプールボリュームを追加する更新を適用する。
【０３５６】
次いで、自動容量拡張／縮小プログラム３５０９は、システム容量プールのテーブルを参照して、容量仮想化プールＡに追加するプールボリュームをシステム容量プールから選択する（Ｓ３３００６）。次いで、Ｓ３３００７は、システム容量プールテーブルと容量仮想化プールＡのテーブルを更新してフローチャートの処理を終了する。
【０３５７】
図２８のフローチャートは図２７の変形例であり、容量仮想化プールが階層化されており、プールボリュームの追加、削除は同じ階層同士の間で行われる。Ｓ３３００３Ａ（図２７のＳ３３００３）のみが図２７のフローチャートと異なる。
【０３５８】
図２８のフローチャートのステップのうち、図２７のフローチャートのステップに対応するステップに同一の符号を付す。
【０３５９】
容量仮想化プールＢから容量仮想化プールＡに追加すべきプールボリュームは両方のプールで同じ階層から選択される。したがって、容量仮想化プールＢの使用容量が閾値（下限値）より低く、容量仮想化プールＢの容量に余裕があるか否かの判断（Ｓ３３００３Ａ）は、Ｓ３３００２において、容量仮想化プールＡの有効実容量が不足していると判定された階層に対して行われる。
【０３６０】
コマンド制御プログラム３５０１が、容量仮想化プールのプールボリュームのページを仮想ボリュームのアクセス領域に割当てる際、どの階層のプールボリュームを選択するかという処理について説明する。
【０３６１】
仮想ボリュームに対する、単位時間当たりのＩＯ数（ＩＯ頻度）に応じて階層が定まる。すなわち、ＩＯ頻度が大きいほど上位の階層のプールボリュームが選択される。削除するプールボリュームを選択する際（図２４：Ｓ２４５０４、図２６：Ｓ２６００６、図２８：Ｓ３３００４）での選択基準の例には、データ割り当て（使用量）が少ないプールボリュームであることや、モジュールにまたがっていないプールボリュームであることがある。
【０３６２】
前者は、データ移動負荷が少なくて済み、後者は、図３において既述したように、システムの負荷を低減するためである。 同様に、容量仮想化プールへ追加するプールボリュームをシステム容量プールから選択する選択基準も、モジュールまたがらないようにすることが好ましい。  
【０３６３】
図２９Ａには、上位から順にＳＳＤ、ＳＡＳ、ＳＡＴＡの各階層が容量仮想化プール４２に設定されていることを示している。そして、図２９Ａには、各階層が、どの程度の単位時間当たりのＩＯ数（ＩＯ頻度）の範囲をカバーしデータ格納を行うかが示されている。
【０３６４】
図２９Ａでは、ＳＳＤの階層において、使用済み容量が閾値（１）に接近しており、ＳＳＤの階層がひっ迫傾向にあることを示している。これは、ホスト計算機１０からのＩＯ頻度が高い傾向にあるためである。
【０３６５】
この場合、ＳＳＤの階層の使用済み容量が閾値（１）を超えやすくなり、その際、自動容量拡張／縮小プログラム３５０９は、システム容量プールのＳＳＤの階層から、プールボリュームを容量仮想化プールのＳＳＤの階層に追加することになるが、これではビットコストが高いＳＳＤの消費に繋がる。
【０３６６】
そこで、管理者は、図２９Ｂに示すように、ＳＡＳが対応するＩＯ頻度のレンジを拡大し、一方、ＳＳＤに割当てられるＩＯ頻度のレンジを縮小して、ＳＳＤの階層における容量の消費傾向を縮小し，ＳＡＳの階層における容量の消費傾向を拡大するようにした。この結果、高ビットコストのメディアの容量消費を抑制することができる。
【０３６７】
次に、図３７のブロック図を利用して、ユーザ・管理者が計算機システムにシン・プロビジョニング機能（ＨＤＰ機能）３９００を設定する際の処理について説明する。
【０３６８】
ユーザ・管理者が、容量仮想化プールを計算機システムに作成又は設定する際、階層管理を容量仮想化プールに適用する第１機能を容量仮想化プールに適用することのオン・オフを設定することが可能である。
【０３６９】
ユーザ・管理者が、容量仮想化プールを設定する入力の際に、当該オンの入力を行うと(Ｓ１０００)、階層化管理機能が付加された容量仮想化プール３９０２が作成される。容量仮想化プール３９０４の運用を開始した後、あるいはその作成後でもこの入力は可能である。このオンの入力の形態には、個別の容量仮想化プールに対するもの（Ｓ１００２）、全ての容量仮想化プール、すなわち、システム全体に対するもの（Ｓ１００４）がある。
【０３７０】
前者の入力によって、ストレージ装置３０は、階層管理が適用されない容量仮想化プールを階層化管理が適用されない容量仮想化プールに変更し、その結果両方のタイプの容量仮想化プール群３９０４が設定又は作成され、後者の入力によって、システムに存在する、複数の容量仮想化プールがそれぞれ階層管理型容量仮想化プール（Ｓ３９０６）に変更される。
【０３７１】
そして、ユーザ・管理者は、ストレージ装置が自動的に容量仮想化プールの容量を拡張又は縮小する第２機能のオン・オフを設定することができる。
【０３７２】
容量仮想化プールの設定時、ユーザ等が、少なくとも一つの容量仮想化プールに対する第１機能のオンに続いて第２機能をオンすると、階層管理が適用されるシステム容量プールが作成、設定される（Ｓ１００６→３９０８、Ｓ１００８→３９１０）。
【０３７３】
全ての容量仮想化プールに対して第１機能がオフである場合、続いて、第２機能をオンすると階層化管理が適用されないシステム容量プールが設定される（Ｓ１０１０→３９１２）。
【０３７４】
ユーザが、容量仮想化プールとシステム容量プールの設定後に、少なくとも一つの容量仮想化プールについて第１機能をオンすると、ストレージ装置は、システム容量プールが階層管理状態にない時にはこれを階層化管理状態に変換する。
【０３７５】
ストレージ装置に階層管理型容量仮想化プールと非階層型容量仮想化プールとが混在する  形態に対して、第２機能がオンされると、ストレージ装置は、階層管理型システム容量プールを作成する際、非階層型容量仮想化プールを自動的に階層型容量仮想化プール３９１４へ変換する。
【０３７６】
なお、階層型容量仮想化プールへ変換は、システム容量プールが複数あり、非階層型容量仮想化プールと階層型容量仮想化プールで、対応するシステム容量プールが区別されていれば、不要である。
【０３７７】
非階層型容量仮想化プールと階層型容量仮想化プールが同じシステム容量プールを共用する場合、容量仮想化プールでも階層の管理が必要である。 
【０３７８】
図３０は、シン・プロビジョニングのシステムの構成と入力手段３００との関係を示すブロック図である。
【０３７９】
入力手段は、ホスト計算機１０、管理サーバ、又は、保守管理端末１５３によって構成される。
【０３８０】
システム容量プール４４と、容量仮想化プール４２Ａ、又は容量仮想化プール４２Ｂと、の間の破線は、同一階層同士の対応関係を示している。そして、容量仮想化プール４２Ａ，４２Ｂと仮想ボリューム４１１，４１２との間の破線は、仮想ボリュームが使用する階層と容量仮想化プールの階層との対応関係を示している。
【０３８１】
そして、符号１６１０は入力手段による仮想ボリュームをストレージ装置に設定する入力を示し、符号１６１１は容量仮想化プールの設定のための入力を示し、符号１６１２はシステム容量プールの設定のための入力を示す。
【０３８２】
図３１は、仮想ボリュームの作成の手順を示すフローチャートである。このフローチャートは、図３０の符号１６１０の入力情報がストレージ装置に送信されることによって、ストレージ装置の構成制御プログラム３５０１によって実行される。
【０３８３】
この入力情報には、仮想ボリュームの番号、仮想ボリュームに使用される容量仮想化プールのプール番号、仮想ボリュームに使用されるメディアの種類、プール容量の自動拡張・縮小の可否、仮想ボリュームの仮想容量がある。
【０３８４】
入力はＧＵＩを介して実行される。さらに、ターゲットポート、ＬＵＮ、ホストモード、ＬＵＮセキュリティも必要に応じて入力可能情報に含まれる。
【０３８５】
メディアの種類は、ユーザが性能要件やコスト要件を指定することによって設定可能である。性能要件やコスト要件入力がホスト計算機１０等になされると、ホスト計算機１０のプログラムが、入力情報からレスポンス性能（ｍｓ）、スループット（ＩＯＰＳ,ＭＢＰＳ）やビットコストを算出して、ストレージ制御処理に最適なメディアの種類を判定する。
【０３８６】
また、ユーザはサービスレベルを指定することによってメディアの種類を決定することができる。例えば、「レスポンス性能重視」を選択すると、ＧＵＩのプログラムは、仮想ボリュームが利用すべきメディアとしてＳＳＤ又はＳＡＳが最適であると判定する。
【０３８７】
ホスト計算機などは、ユーザ毎に、仮想ボリュームにプールを新たに作成して割り当てることの権能の有無を判定する。例えば、特定ユーザには仮想ボリュームに既存のプールの他、新規プールを割当てることができる。また、ある特定ユーザは、容量仮想化プールに階層を設定することができる。
【０３８８】
図３１のフローチャートにおいて、構成制御プログラム３５０３が、ホスト計算機などから仮想ボリューム作成コマンドを受信すると、仮想ボリュームの定義及び設定処理を開始する（Ｓ１６１００）。
【０３８９】
構成制御プログラム３５０３は、仮想ボリューム作成コマンド１６１０で指定された容量仮想化プールのＩＤが、メモリ３５０内の容量仮想化プール管理テーブル（図１５）に存在するか否かを判定する（Ｓ１６１１０）。
【０３９０】
これを肯定判定すると、容量仮想化プールの容量が不足しているか否かを判定する（Ｓ１６１９０）。この判定は、容量仮想化プールの未利用容量或いは使用済み容量と容量仮想化プールに設定された閾値とに基づいて実行される。    
【０３９１】
容量仮想化プールの容量が不足していない場合、構成制御プログラムは、仮想ボリュームとコマンドで選択された容量仮想化プールプールとを関連付けて仮想ボリュームの作成処理を終了する（Ｓ１６２６０）。
【０３９２】
なお、仮想ボリューム作成コマンド１６１０に「使用するメディアの種別」の指定が含まれている場合、構成制御プログラム３５０３は、Ｓ１６２６０の前に、指定されたメディアがストレージ装置３０に存在するか否かの判断を行い、この判断を肯定するとＳ１６２６０へ進み、否定すると、ユーザに仮想ボリュームの作成が失敗した旨の通知を行う。このことは後述のフローチャートに係る処理でも同様である。
【０３９３】
この際、自動容量拡張縮小機能がオンされていれば、仮想ボリューム用プールは容量仮想化プールとして設定され、同機能がオンされていないと仮想ボリューム用プールは従前のプールとして設定される。
【０３９４】
仮想ボリュームと仮想ボリューム用プールとの対応関係は、管理テーブルに登録されることによって達成される。
【０３９５】
一方、構成制御プログラム３５０３が、容量仮想化プールの未利用容量を不足していると判定すると（Ｓ１６１９０）、容量仮想化プールに自動拡張機能縮小機能がオンされているか否かをチェックし（Ｓ１６１２０）、これにオンが設定されていないと、ストレージ装置は、仮想ボリューム用プールにプールボリュームを補うことができず、その結果、仮想ボリューム用プールの容量が不足する可能性が高いと判定し、次いで、ユーザに仮想ボリュームの作成不可、プールの新規作成不可を通知する（Ｓ１６２４０）。
【０３９６】
Ｓ１６２００がオンの設定を判定すると、Ｓ１６２１０は、Ｓ１６１００によって指定されたメディアに基づくプールボリュームがシステム容量プール内に存在するか否かを判定する。
【０３９７】
Ｓ１６２１０が肯定を判定すると、Ｓ１６２２０は、システム容量プールから容量仮想化プールにプールボリュームを追加して、追加したボリュームを容量仮想化プール管理テーブル（図１５）に登録する。次いで、Ｓ１６２３０は、仮想ボリュームと容量仮想化プールとを対応付けて仮想ボリューム作成処理を終了する。
【０３９８】
Ｓ１６２１０が否定を判定すると、Ｓ１６２４０は、Ｓ１６１００で指定されたメディアがストレージシステムに内に存在せず、したがって、仮想ボリュームの作成ができないことをユーザに通知する。
【０３９９】
Ｓ１６１１０が、指定のプールがストレージ装置に存在しないと判定すると、Ｓ１６１２０は、仮想ボリューム用プールの容量の自動拡張・縮小機能のオン・オフをチェックする。構成制御プログラム３５０３は、階層化管理機能及び自動容量変更機能のオン・オフを専用フラグによって管理する。
【０４００】
自動容量変更機能がオフの場合には、Ｓ１６１８０はＳ１６２５０と同様に処理を終了する。一方、当該機能のオンが判定されると、Ｓ１６１３０は、Ｓ１６１００によって、指定されたメディアに基づくプールボリュームがシステム容量プールに存在するか否かを判定し（Ｓ１６１３０）、これを否定判定するとＳ１６２４０と同様にして処理を終了する。
【０４０１】
Ｓ１６１３０が肯定を判定すると、自動容量拡張・縮小機能が設定された新規な容量仮想化プールを設定する（Ｓ１６１４０）。さらに、構成制御プログラムは、システム容量プールから容量仮想化プールにプールボリュームを追加する（Ｓ１６１５０）。システム容量プールから容量仮想化プールに追加されるプールボリュームは、複数のプールボリュームの中から優先度に応じて順次決定される。
【０４０２】
次いで、構成制御プログラムは仮想ボリュームと新規容量仮想化プールとを対応させて（Ｓ１６１６０）、仮想ボリュームの作成処理を終了する。
【０４０３】
図３２に、仮想ボリューム作成処理の第２の例に係るフローチャートを示す。図３１のフローチャートと異なる点は、ユーザが仮想ボリュームに階層を設定することができる点である。既述のＳ０１６１１０の判定が「ない」の場合は、図３１と同じ処理が実行される。この判定が「ある」の場合が、図３２に示すとおりであり、図３１のものとは異なる。
【０４０４】
Ｓ１６１００において指定されたプールに仮想ボリュームに必要な階層があるか否かを構成制御プログラム３５０３が判定する（Ｓ１６３００）。この判定を「ある」と判定した場合の処理は、既述のＳ１６１９０以降のものと同じである。
【０４０５】
Ｓ１６３００が「ない」と判定すると、Ｓ１６３１０は、自動容量拡張・縮小機能のオン・オフを判定する。これを「オフ」と判定すると、Ｓ１６３６０は、仮想ボリューム用プールの作成不可、仮想ボリューム作成不可をユーザに通知して処理を終了する。
【０４０６】
Ｓ１６３１０が「オン」と判定すると、Ｓ１６３２０は、Ｓ１６１００において指定されたメディアを起源とするプールボリュームがシステム容量プールに存在するか否かを判定し、これを否定判定すると、Ｓ１６３５０は、指定されたメディアを仮想ボリュームに対応させることができないとユーザに通知して処理を終了する。
【０４０７】
一方、Ｓ１６３２０が肯定の判定を行うと、Ｓ１６３３０は、容量仮想化プールに新たに階層を設定し、Ｓ１６３４０はシステム容量プールの階層から容量仮想化プールの新規階層へプールボリュームを追加してＳ１６３００にリターンする。構成制御プログラム３５０３は、容量仮想化プールに不足する階層がなくなるまで、Ｓ１６３００以降の処理を継続する。
【０４０８】
図３３は、仮想ボリュームの生成処理の第３の例に係るフローチャートである。このフローチャートの特徴は、仮想ボリューム用プールとして既存のものを利用するか新規に設定するかの選択をユーザ等に可能にさせる点である。
【０４０９】
なお、新規に容量仮想化プールを作成することをユーザ等が選択する場合、ユーザ等は、容量仮想化プールのプールＩＤ、容量やメディアの種類の設定、閾値等の設定を新規容量仮想化プールに対して実行することになる。
【０４１０】
構成制御プログラム３５０３は、Ｓ１６１００において指定したメディアの階層を有する容量仮想化プールが既に存在するか否かを判定する（Ｓ１６１３０）。Ｓ１６１３０がこの判定を否定すると、Ｓ１６１７０は既存の容量仮想化プールを使用するか否かを判定する。Ｓ１６１７０がユーザからの入力に基づいて、仮想ボリュームに対するアクセス処理に、既存の容量仮想化プールを使用すると判定すると、Ｓ１６２００は、既存の複数の容量仮想化プールから目的の容量仮想化プールを選択する。
【０４１１】
Ｓ１６２１０は、システム容量プールから、Ｓ１６１００において指定したメディアからなる階層のプールボリュームを選択して、これをＳ１６２００にて選択した容量仮想化プールへ追加する。追加される容量、プールボリューム数は、予め決められている。
【０４１２】
次いで、Ｓ１６１６０は、仮想ボリュームと選択した容量仮想化プールとの対応関係をボリューム及びプールの管理テーブルに登録して、処理を終了する。
【０４１３】
一方、Ｓ１６１７０が、既存の容量仮想化プールを使用しないと判定すると、Ｓ１６１８０は新規な容量仮想化プールを管理テーブルに設定し、Ｓ１６２１０の処理に移行する。
【０４１４】
Ｓ１６１３０が「肯定」を判定すると、既存の容量仮想化プールを利用するか否かを選択し、Ｓ１６１４０が否定を選択するとＳ１６１８０に移行する。肯定を選択すると、Ｓ１６１５０は、Ｓ１６１００において指定したメディアからなる階層を持った容量仮想化プールを既存の容量仮想化プールから選択し、Ｓ１６１６０に移行して処理を終了する。
【０４１５】
次に、容量仮想化プールの新規作成処理を図３４Ａ−図３４Ｄのフローチャートに基づいて説明する。先ず、管理者は、管理サーバ２０に容量仮想化プールの識別子であるプールＩＤ、閾値、用途、第１種ＬＤＥＶの数、及び、各ＬＤＥＶの番号を、ＧＵＩを介して指定する（Ｓ４１１１０）。
【０４１６】
管理サーバ２０の管理プログラムは、入力情報を含んだ容量仮想化プールの作成コマンドを生成し、当該コマンドをストレージ装置３０に送信する。ストレージ装置のコマンド制御プログラム３５０１が前記作成コマンド受領する（Ｓ４１１３０）。
【０４１７】
コマンド制御プログラム３５０１は、受信したコマンドの内容を確認し、コマンドの内容が無効であるようなものであれば、このコマンドの受信を拒否する（Ｓ４１１４０）。さらに、コマンド制御プログラムは、受信したコマンドが容量仮想化プールの設定処理のためのものであると判定すると、プール制御プログラム３５０７に受信したコマンドを渡す。プール制御プログラム３５０７は受け取ったコマンドに基づいて、容量仮想化プールの設定・作成処理を実行する（Ｓ４１１５０）。
【０４１８】
続いて、プール制御プログラム３５０７は、図３４Ｂのフローチャートに移行する。プール制御プログラム３５０７は、指示コマンドに含まれるプールＩＤが有効であるか、かつ、これが未定義であるかを確認する（Ｓ４１１８０）。
【０４１９】
次に、プール制御プログラム３５０７は、容量仮想化プール管理情報３５２１（図１５）から、コマンドによって指示された容量仮想化プールＩＤのプール固有情報を取得し、プールの状態をプール未定義からプール定義中に設定する（Ｓ４１１９０）。
【０４２０】
次に、プール制御プログラム３５０７は、コマンドで指示されたＬＤＥＶ番号が使用可能であるか否かを確認する（Ｓ４１２１０）。具体的には、指示コマンドに係るＬＤＥＶ番号が閉塞している又はフォーマット中である場合は、当該ＬＤＥＶは使用不可であるため、コマンドを許否する（Ｓ４１２１０）。
【０４２１】
コマンドで指示されたＬＤＥＶが既に使用中である場合、例えば、ＬＤＥＶがパス定義済みである場合、コピー機能等によって使用中である場合又はコピー先として予約中に設定されている場合では、ＬＤＥＶの使用は不可であるためプール制御プログラム３５０７はコマンドを拒否する（Ｓ４１２２０）。
【０４２２】
次に、プール制御プログラム３５０７は、コマンドに指定された情報に基づいて、プール固有情報（図１５の管理テーブル）に、容量、空き容量、閾値、プール−ボリューム数を設定する（Ｓ４１２３０）。
【０４２３】
次に、プール制御プログラム３５０７は、コマンドで指示されたプールに階層管理機能（図３７：（Ｔｉｅｒ管理機能））がオンされているか否かを判定する（Ｓ４１２４０）。この判定が肯定されると、プール制御プログラム３５０７は、コマンドで指示されたＬＤＥＶ（プールボリューム）の数分、Ｓ４１２６０−Ｓ４１３２０の処理がループされたか否かを判定する（Ｓ４１２５０）。
【０４２４】
この判定を否定すると、プール制御プログラム３５０７は、コマンドで指定された複数のＬＤＥＶの中から一つのＬＤＥＶを選択し、選択したＬＤＥＶをプールボリュームデバイス番号リスト（図１５：３５２２０）へ登録する（Ｓ４１２６０）。
【０４２５】
次いで、プール制御プログラム３５０７は、プールボリュームに対応する階層情報エリアに管理情報を、コマンドで指示されたプールに設定したか否かを判定する（Ｓ４１２７０）。
【０４２６】
この判定が否定されると、プール制御プログラム３５０７は、容量仮想化プールの階層を管理する管理情報のテーブル３５２７１を作成し、これを容量仮想化プール管理テーブルの階層リスト（３５２２３）に登録する（Ｓ４１２８０）。
【０４２７】
次いで、プール制御プログラム３５０７は、階層管理テーブル３５２７１（図１７）にアクセスして、そのプールボリュームリスト３５２８３にＬＤＥＶ番号ＩＤを登録する（Ｓ４１２９０）。
【０４２８】
次いで、プール制御プログラム３５０７は、容量仮想化プールに設定した第１種ＬＤＥＶにＰＳＣＢを割当てる（Ｓ４１３００）。そして、ＰＳＣＢを階層毎のフリーキューに接続する（Ｓ４１３１０）。
【０４２９】
以上によって、プール制御プログラム３５０７が第１種ＬＥＤＶを容量仮想化プールに設定すると、構成制御プログラム３５０３は、ＬＤＥＶ管理情報３５１２を設定する。具体的には、コマンドで指定されたＬＤＥＶ番号のＬＤＥＶ管理情報３５１２（図１２）のデバイス属性３５１２８に容量仮想化プールであることを示す識別子（プールボリューム属性）を設定し、プールＩＤにプールボリュームが所属するプールＩＤを登録する（Ｓ４１３２０）。
【０４３０】
次いで、構成制御プログラム３５０３はプール制御プログラム３５０７に制御権を渡し、プール制御プログラム３５０７はＳ４１２５０にリターンして全てのＬＤＥＶに対する処理が終了したと判定すると、構成制御プログラム３５０３に制御権を渡す。構成制御プログラム３５０３は、図３４Ｃに示すように、プール管理情報３５１２のプール−ＩＤの状態を「プール定義中」から「プール有効」に設定する（Ｓ４１３４０）。
【０４３１】
そして、図３４Ｄに示すように、コマンド制御プログラム３５０１は、管理サーバ２０に、コマンドが成功した旨の応答を送信する（Ｓ４１１６０）。そして、管理サーバ２０の管理プログラムは、ストレージ装置からの応答を受信すると（Ｓ４１１７０）、一連の処理を終了する。
【０４３２】
図３４ＢのＳ４１２４０において、階層管理機能がオフと判定されると、プール制御プログラム３５０７は、Ｓ４１２７０−４１２９０の処理を省略し、Ｓ４１２５０、Ｓ４１２６０，Ｓ４１３００，Ｓ４１３１０，Ｓ４１３２０を実施する。但し、Ｔｉｅｒ管理情報は存在しないために、Ｓ４１３１０において、フリーＰＳＣＢキューはＴｉｅｒ毎に存在しない。
【０４３３】
容量仮想化プールの生成時に、図３４Ａ乃至図３４Ｄのフローチャートは、ＰＤＥＶからＬＤＥＶを容量仮想化プールに設定することとしたが、システム容量プール４４のプールボリュームを容量仮想化プール４２に割当てるようにしてもよいし、その両方でもよい。
【０４３４】
また、図３４Ａ乃至図３４Ｄは管理サーバ２０からのユーザ指示に基づいてプールを生成することを説明したが、管理サーバに代えてホスト計算機又は保守端末からのユーザ指示に基づいて容量仮想化プールを生成するものでもよい。
【０４３５】
なお、ユーザからの入力情報に、容量仮想化プール作成する場合に使用されるべきメディアの種別が含まれていた場合、ストレージ装置３０は、指定されたメディアが存在するか否かをまず判定し、存在する場合は図３４Ａ−３４Ｄに係る容量仮想化プールの新規設定処理を行う。指定されたメディアが存在しない場合は、指定のメディアがシステム内に無いことをユーザへ通知する。
【０４３６】
図３４Ａ乃至図３４Ｄを容量仮想化プールの生成の処理として説明したが、図３４Ａ乃至図３４Ｄのフローチャートを、システム容量プールを生成する場合に適用することができる。
【０４３７】
管理情報としては、容量仮想化プール管理情報３５２１に代えて、システム容量プール管理情報３５２５が利用される。システム容量プール４４にはプールボリュームが追加されるだけの処理になるため、プール制御プログラム３５０７は、システム容量プールの作成を、容量仮想化プールのように、ＰＳＣＢのキュー形態（Ｓ４１３００，Ｓ４１３１０）を利用した方式では実行しない。
【０４３８】
一方、プール制御プログラム３５０７は、容量仮想化プールへシステム容量プールからプールボリュームを追加されると、その段階でプールボリュームのＰＳＣＢを作成する。
【０４３９】
次に、システム容量プールから容量仮想化プールへプールボリュームを自動追加する処理を図３８に基づいて説明する。図３８は、プール制御プログラム３５０７が実施するフローチャートである。
【０４４０】
プール制御プログラム３５０７は、容量仮想化プールの容量追加処理を開始すべき契機を検出すると、フローチャートを開始する。この契機には、管理サーバ２０が生成したコマンドをストレージ装置３０が受信する契機、管理サーバ２０からのコマンドによることなく、ストレージ装置３０が容量仮想化プールの容量拡張のコマンドを内部的に発生させた契機とがある。
【０４４１】
前者の形態では、管理サーバ２０はストレージ装置３０の状態を定期的チェックして、容量仮想化プール４２の容量不足を検出すると、容量仮想化プールの容量を拡張するコマンドをストレージ装置３０に対して送信する。後者の形態では、自動容量拡張／縮小プログラム３５０９が容量仮想化プールの容量監視処理を行う。
【０４４２】
プール制御プログラム３５０７は、プールボリュームを追加すべき容量仮想化プールのＩＤを判定し、当該ＩＤをキーにして、容量仮想化プール管理情報テーブル３５２１をチェックする。プール制御プログラム３５０７が、容量仮想化プール管理情報テーブルを参照して、ＩＤが有効であり、かつプール状態３５２１８が「未定義」であることを確認すると（Ｓ５０００）、次いで、プール状態を「拡張中」に設定する（Ｓ５００２）。
【０４４３】
システム容量プール管理情報テーブル（図１８）を参照して、未使用プールボリュームの中から、容量仮想化プールに追加されるべき、一つ又は複数のプールボリュームを選択する（Ｓ５００４）。
【０４４４】
なお、容量仮想化プールの容量に階層管理が適用されている場合には、プール制御プログラム３５０７は、システム容量プール管理情報テーブルの階層リスト３５２７１を参照し、容量仮想化プールにおいて容量が不足している階層と同一階層に分類されるプールボリュームを選択する。
【０４４５】
次いで、プール制御プログラム３５０７は、プール制御プログラムは、システム容量プールＩＤ、容量仮想化プールＩＤ、システム容量プールから容量仮想化プールに追加されるプールボリューム番号（ＬＤＥＶ＃）を、Ｔｉｅｒ番号を指定する（Ｓ５００６）。
【０４４６】
次に、プール制御プログラム３５０７は、コマンドで指示されたプールに階層管理機能がオンされているか否かを判定する（Ｓ５００７）。この判定が肯定されると、プール制御プログラム３５０７は、Ｓ５００２で選択されたＬＤＥＶ（プールボリューム）の数分、Ｓ５０１０〜Ｓ５０２０の処理がループされる（Ｓ５００８）。
【０４４７】
プール制御プログラム３５０７は、未処理のＬＤＥＶを選択し、選択したＬＤＥＶの番号を、システム容量プール管理情報３５２５（図１８）のＬＤＥＶリストから削除する。即ち、システムプールのＩＤとＴｉｅｒ番号とが同一のＴｉｅｒ管理情報テーブル３５１３（図１７）を参照して、Ｓ５０１０に係る未処理ＬＤＥＶの番号を削除する（Ｓ５０１２）。
【０４４８】
プール制御プログラム３５０７は、システム容量プール管理情報から削除されたＬＤＥＶをプールボリュームデバイス番号リスト（図１５：３５２２０）へ登録する（Ｓ５０１４）。
【０４４９】
次いで、プール制御プログラム３５０７は、階層管理テーブル３５２７１（図１７）にアクセスして、そのプールボリュームリスト３５２８３に、容量仮想化プールに追加されるＬＤＥＶの番号を登録する（Ｓ５０１６）。
【０４５０】
なお、容量仮想化プール制御情報テーブルへの更新も、既述した、システム容量プールに対する処理（Ｓ５０１０，Ｓ５０１２）と同様である。ストレージ装置は、容量仮想化プールへの登録時に、登録しようとするプールボリュームが所属するＴｉｅｒが、容量仮想化プールに存在しない場合は、容量仮想化プール管理情報テーブルにＴｉｅｒ管理情報３５２７１を追加する。
【０４５１】
次いで、プール制御プログラム３５０７は、容量仮想化プールに設定したＬＤＥＶにＰＳＣＢを割当てる（Ｓ５０１８）。そして、ＰＳＣＢを階層毎のフリーキューに接続する（Ｓ５０２０）。
【０４５２】
以上によって、プール制御プログラム３５０７がプールボリューム（第１種ＬＥＤＶ）を容量仮想化プール４２に追加した時点で、図３４Ｂと同様に、プールボリュームをＰＳＣＢで管理する。
【０４５３】
次いで、プール制御プログラム３５０７はＳ５００８にリターンして全ての未処理のＬＤＥＶに対する処理が終了したと判定すると、容量仮想化プールへのプールボリュームの追加によって生じた、容量、プールボリューム数など変更を容量仮想化プールへ登録する（Ｓ５０２２）。
【０４５４】
構成制御プログラム３０５３は、容量仮想化プール管理情報（図１５）の状態３５２１８を「拡張中」から「プール有効」に変更する（Ｓ５０２４）。
【０４５５】
コマンド制御プログラム３５０１は、状態が「プール有効」でないプールボリュームに対して、シン・プロビジョニングを適用しない。
【０４５６】
プールボリュームが容量仮想化プールに追加された契機で、コマンド制御プログラム３５０１は、容量仮想化プールに追加されたプールボリュームを含む、複数のプールボリューム間で既述したページリバランス処理を実行する。
【０４５７】
Ｓ５００７において、階層管理機能がオフと判定されると、プール制御プログラム３５０７は、Ｓ５００８、Ｓ５０１０、Ｓ５０１４、Ｓ５０１８、Ｓ５０２０を実施する(Ｓ５０２６)。
【０４５８】
次に、容量仮想化プールのプールボリュームを削除してシステム容量プールに戻す場合の処理を図３８と対比して説明する。プール制御プログラム３５０７は、容量仮想化プールの容量と閾値とを比較して、容量仮想化プールに容量の過剰を判定すると、削除すべきボリュームを決定する。このボリュームとしては既述のとおり、例えば、割当てページ数が少ないプールボリューム、或いは、空き容量が少ない階層に属するプールボリュームである。
【０４５９】
ＩＯ制御プログラム３５０１は、選択されたプールボリュームの割当てページのデータを他のプールボリュームに移動し、仮想ボリュームとページとの割り当てを変更する。この際、コマンド制御プログラムは、既述のリバランス処理を実施する。
【０４６０】
次いで、プール制御プログラムは、削除すべきプールボリュームの情報を、容量仮想化プール管理情報、ＬＤＥＶ管理情報、そして、容量仮想化容量プールが階層化されているのであれば、Ｔｉｅｒ管理情報の夫々から削除する。
【０４６１】
この際、プール制御プログラムは、削除すべきプールボリュームに対して設定したＰＳＣＢを解除し、さらに、未使用ＰＳＣＢをフリーキューから解放する。
【０４６２】
次いで、プール制御プログラムは、削除したプールボリュームの管理情報を、システム容量プール管理情報、ＬＤＥＶ管理情報、そして、容量仮想化プールが階層化されているのであれば、Ｔｉｅｒ管理情報の夫々に追加する。
【０４６３】
なお、プール制御プログラムが、容量仮想化プールからプールボリュームをシステム容量プールに回収する際、プールボリュームに対して設定されたＰＳＣＢを解除することなく維持してもよい。
【０４６４】
また、容量仮想化プールへのプールボリュームの追加には、システム容量プールを経由する場合と、しない場合がある。
【０４６５】
次に、ホスト計算機からストレージ装置に対するリード処理を図面に基づいて説明する。
【０４６６】
図３５は、リード処理を説明するフローチャートである。ホスト計算機１０がコマンドを発行すると（Ｓ１４１００）、ストレージ装置１２５はコマンドを受け付ける（Ｓ１４１０２）。ストレージ装置のコマンド制御プログラム３５０１はコマンドを解析し（Ｓ１４１０４）、リード要求に含まれるアドレスを参照する（Ｓ１４１０６）。
【０４６７】
コマンド制御プログラムは、参照したアドレスに基づいて、アクセス対象ボリュームが実ボリュームか否かを判定する（Ｓ２１４１０６）。
【０４６８】
リード対象アドレスが実ボリュームのアドレスと判定すると、コマンド制御プログラムは、ＬＵ―ＬＤＥＶ−ＶＤＥＶアドレス変換を行い（１４１１０）、リード対象アドレスのデータがキャッシュメモリ上にあるか否かを判別する（Ｓ１４１１２）。
【０４６９】
リード対象アドレスのデータがキャッシュ上にあれば、コマンド制御プログラムは、キャッシュ上のデータをホスト計算機に転送し（Ｓ１４１２２）、ホスト計算機に完了を報告する（Ｓ１４１４２）。
【０４７０】
リード対象アドレスのデータがキャッシュ上に無ければ、コマンド制御プログラムは、ＶＤＥＶ―ＰＤＥＶ／外部ＬＵアドレス変換を行い（Ｓ１４１１４）、リード対象データが格納されているメディアのアドレスを算出（Ｓ１４１１６）し、メディアアクセスプログラムを起動する。
【０４７１】
メディアアクセスプログラムは、算出したメディアのアドレスからデータを読み出して、キャッシュに格納し（Ｓ１４１１８）、コマンド制御プログラムにキャッシュに格納したことを通知する（Ｓ１４１２０）。コマンド制御プログラムはメディアアクセスプログラムからの通知を受領すると、キャッシュ上のデータをホストに転送する（Ｓ１４１２２）。
【０４７２】
リード対象アドレスが仮想ボリュームのアドレスの場合、コマンド制御プログラムは、ＬＵ―ＬＤＥＶ−ＶＤＥＶアドレス変換を行い（Ｓ１４１２６）、リード対象アドレスのデータがキャッシュ上にあるか否かを判別する（Ｓ１４１２８）。リード対象アドレスのデータがキャッシュ上にあれば、キャッシュ上のデータをホストに転送する（Ｓ１４１２２）。
【０４７３】
リード対象アドレスのデータがキャッシュ上に無ければ、コマンド制御プログラムは、仮想―プールアドレス変換機能によって（Ｓ１４１３０）、仮想ボリュームのＶＤＥＶ空間のアドレスから、容量仮想化プールのＶＤＥＶ空間のアドレスへ変換する。
【０４７４】
このとき、一度もデータをライトされていない領域へのデータリード要求である場合（Ｓ１４１３２）は、デフォルトの値（例えば、オール「０」）を返すためのＶＤＥＶ空間（０データ領域）のアドレスが算出される（Ｓ１４１３６）。
【０４７５】
そうでなければ、初めてデータを書き込む際に仮想ボリュームにデータ書込用として割り当てられた領域か、さもなければ、プールの負荷分散や利用率向上、障害回復のために、先のデータ書込用などの領域からデータを移動した領域のＶＤＥＶアドレスが算出される（Ｓ１４１３４）。
【０４７６】
コマンド制御プログラムは、更に、ＶＤＥＶ―ＰＤＥＶ／外部ＬＵアドレス変換を行い、リード対象データが格納されているメディアのアドレスを算出する（Ｓ１４１３６）。算出したメディアのアドレスからデータを読み出して、仮想ボリュームの空間のアドレス用に確保したキャッシュメモリに格納する（Ｓ１４１３８）。    
【０４７７】
次に、ライト処理を図３６のフローチャートに基づいて説明する。ストレージ装置１２５が、ライトコマンドを受領すると（Ｓ１４１４０、Ｓ１４１４２）、コマンド制御プログラムは、ライト要求のアドレスを参照する（Ｓ１４１４４）。
【０４７８】
アドレスが、実ボリュームのものであるか、仮想ボリュームのものであるかを問わずＬＵ―ＬＤＥＶ−ＶＤＥＶアドレス変換を行い（Ｓ１４１４６）、ライト対象アドレスがキャッシュメモリに確保されているか否かを判別する（Ｓ１４１４８）。
【０４７９】
ライト対象アドレスに対してキャッシュメモリが確保されていなければ、コマンド制御プログラムは、ホストから転送されるデータを格納するためのキャッシュメモリ領域を確保する（１４１５０）。次いで、コマンド制御プログラムは、データ受領準備ができたことをホストに報告する（Ｓ１４１５２）。
【０４８０】
コマンド制御プログラムが、ホスト計算機から転送データを受領すると（Ｓ１４１５４）、データを確保したキャッシュメモリに格納し（Ｓ１４１５６）、ホスト装置にライト完了報告を送信する（Ｓ１４１５８）。
【０４８１】
ライト要求アドレスが、実ボリュームのアドレスの場合は（Ｓ１４１６０）、コマンド制御プログラムは、ＶＤＥＶ―ＰＤＥＶ／外部ＬＵアドレス変換（Ｓ１４１６２）を行い、ライト対象データを格納するメディアのアドレスを算出し（Ｓ１４１６４）、キャッシュメモリに格納したデータを、メディアアドレスに対して書き込む（Ｓ１４１６６）。
【０４８２】
ライト要求アドレスが、仮想ボリュームの場合（Ｓ１４１６０）、コマンド制御プログラムは、仮想ボリュームアドレス―容量仮想化プールアドレスの変換機能によって、ＶＶＯＬ−ＤＩＲテーブルを参照して、仮想ボリュームのＶＤＥＶ空間のアドレスを容量仮想化プールのＶＤＥＶ空間のアドレスへ変換する（Ｓ１４１６８）。
【０４８３】
ライトが、一度もデータをライトされていない領域へのライト要求である場合は（Ｓ１４１７０）、コマンド制御プログラムは、デフォルトの値（例えば、オール「０」）を返すためのＶＤＥＶ空間（０データ領域）のアドレスを算出し（Ｓ１４１７２）、このアドレスと仮想ボリュームアドレスとの割当てを解消する。
【０４８４】
次いで、コマンド制御プログラムが、仮想ボリュームのアドレスに対応するデータを格納するための容量仮想化プールの空き領域を動的に割当てる（Ｓ１４１７４）。この際、コマンド制御プログラムは、割当て領域を空き領域管理対象外とし、空き容量を減算する（Ｓ１４１７６）。
【０４８５】
このとき、コマンド制御プログラムは、容量仮想化プールの空き容量の閾値チェックを行う。コマンド制御プログラムは、容量仮想化プールの容量に不足又は過剰を判定すると、自動容量拡張縮小プログムを起動する。
【０４８６】
また、前記動的な空き領域割当てされた容量仮想化プールのアドレスが、仮想ボリュームに対するライト対象ＶＤＥＶ空間のアドレスに対応する容量仮想化プールのＶＤＥＶ空間のアドレスとして算出する。
【０４８７】
なお、後述する請求の範囲に記載された本発明において、各モジュールは、既述の一つ又は複数のプログラムによって達成される、ソフトウエアモジュールであるが、その一部又は全部が、専用のハードウエアモジュールによって達成されるものであってもよい。
【符号の説明】
【０４８８】
１０  ホスト計算機
２０  管理装置
３０  ストレージ装置
４２  容量仮想化プール
４４  システム容量プール
【図１】
0005451875.tif 000002
【図２】
0005451875.tif 000003
【図３】
0005451875.tif 000004
【図４】
0005451875.tif 000005
【図５Ａ】
0005451875.tif 000006
【図５Ｂ】
0005451875.tif 000007
【図６】
0005451875.tif 000008
【図７】
0005451875.tif 000009
【図８Ａ】
0005451875.tif 000010
【図８Ｂ】
0005451875.tif 000011
【図９Ａ】
0005451875.tif 000012
【図９Ｂ】
0005451875.tif 000013
【図１０】
0005451875.tif 000014
【図１１】
0005451875.tif 000015
【図１２】
0005451875.tif 000016
【図１３Ａ】
0005451875.tif 000017
【図１３Ｂ】
0005451875.tif 000018
【図１４】
0005451875.tif 000019
【図１５】
0005451875.tif 000020
【図１６】
0005451875.tif 000021
【図１７】
0005451875.tif 000022
【図１８】
0005451875.tif 000023
【図１９】
0005451875.tif 000024
【図２０】
0005451875.tif 000025
【図２１】
0005451875.tif 000026
【図２２】
0005451875.tif 000027
【図２３】
0005451875.tif 000028
【図２４】
0005451875.tif 000029
【図２５】
0005451875.tif 000030
【図２６】
0005451875.tif 000031
【図２７】
0005451875.tif 000032
【図２８】
0005451875.tif 000033
【図２９Ａ】
0005451875.tif 000034
【図２９Ｂ】
0005451875.tif 000035
【図３０】
0005451875.tif 000036
【図３１】
0005451875.tif 000037
【図３２】
0005451875.tif 000038
【図３３】
0005451875.tif 000039
【図３４Ａ】
0005451875.tif 000040
【図３４Ｂ】
0005451875.tif 000041
【図３４Ｃ】
0005451875.tif 000042
【図３４Ｄ】
0005451875.tif 000043
【図３５】
0005451875.tif 000044
【図３６】
0005451875.tif 000045
【図３７】
0005451875.tif 000046
【図３８】
0005451875.tif 000047