(57)【特許請求の範囲】
【請求項１】
ホスト計算機と管理装置に接続するストレージ装置であって、
前記ストレージ装置は、
複数のボリュームを構成する複数の記憶デバイスと、記憶制御部と、を有し、
前記複数のボリュームの各々は、複数のプールページを有し、レスポンス性能に従って区分された複数の階層のうちの１つに属しており、
前記記憶制御部は、
複数の仮想ページを有する仮想ボリュームを複数、前記ホスト計算機に提供し、前記ホスト計算機からのＩ／Ｏアクセスに応じて前記仮想ボリュームへ前記プールページを割当て、
それぞれが１以上の前記仮想ボリュームを有するＴｉｅｒｉｎｇ  Ｇｒｏｕｐを複数構築し、
前記Ｔｉｅｒｉｎｇ  Ｇｒｏｕｐ毎に、前記各階層の最低使用量を含む再配置条件を設定し、
前記Ｔｉｅｒｉｎｇ  Ｇｒｏｕｐ毎に、前記複数の階層の中の最上位階層の使用量が、前記最上位階層の前記最低使用量を満足するまで前記仮想ボリュームで最上位階層の前記プールページに割り当てられていない仮想ページの割当てを前記最上位階層の前記プールページに変更する、
ストレージ装置。
【請求項２】
請求項１記載のストレージ装置であって、
前記複数の階層の中の最下位階層の使用量が、前記最下位階層の前記最低使用量を満足するまで、前記仮想ボリュームで前記最下位階層の前記プールページに割り当てられていない前記仮想ページの割当てを前記最下位階層の前記プールページに変更するストレージ装置。
【請求項３】
請求項１記載のストレージ装置であって、前記再配置条件として前記仮想ボリュームに割当てる、前記最上位階層の最大使用量が設定された場合、
前記最大使用量を満足するまで前記仮想ボリュームで前記最上位階層の前記プールページに割り当てられている前記仮想ページの割当てを前記最上位階層以外の前記プールページに変更するストレージ装置。
【請求項４】
請求項１記載のストレージ装置であって、前記再配置条件の設定は、前記管理装置により実行されるストレージ装置。
【請求項５】
請求項４記載のストレージ装置であって、前記設定された再配置条件は、前記管理装置に出力されるストレージ装置。
【請求項６】
請求項１記載のストレージ装置であって、高速な応答が要求される仮想ボリュームと高速な応答が要求されない仮想ボリュームとはそれぞれ、異なる前記Ｔｉｅｒｉｎｇ  Ｇｒｏｕｐに登録され、前記再配置条件により前記Ｔｉｅｒｉｎｇ  Ｇｒｏｕｐに登録された仮想ボリューム間で割当てる階層毎の前記プールページの配置を変更するストレージ装置。
【請求項７】
請求項１記載のストレージ装置であって、前記ホスト計算機上で動作するアプリケーションソフトウェアが使用する仮想ボリュームの登録されるＴｉｅｒｉｎｇ  Ｇｒｏｕｐと、前記ストレージ装置上で動作するアプリケーションソフトウェアが使用する仮想ボリュームの登録されるＴｉｅｒｉｎｇ  Ｇｒｏｕｐとを有し、前記再配置条件により前記Ｔｉｅｒｉｎｇ  Ｇｒｏｕｐに登録された仮想ボリューム間で割当てる前記階層毎の前記プールページの配置を変更するストレージ装置。
【請求項８】
複数の記憶デバイスから提供される複数のボリュームを、レスポンス性能に従って区分された複数の階層で管理し、
仮想ボリューム内の複数の仮想ページに含まれる少なくとも１つの前記仮想ページへのライト要求に応じて前記複数のボリュームに含まれる少なくとも１つのプールページが割り当てられる前記仮想ボリュームを複数提供し、
それぞれが１以上の前記仮想ボリュームを有するＴｉｅｒｉｎｇ  Ｇｒｏｕｐを複数構築し、
前記Ｔｉｅｒｉｎｇ  Ｇｒｏｕｐ毎に、前記各階層の最低使用量を含む再配置条件を設定し、
前記Ｔｉｅｒｉｎｇ  Ｇｒｏｕｐ毎に、前記複数の階層の中の最上位の前記階層の使用量が、前記最上位階層の前記最低使用量を満足するまで、前記仮想ボリュームで前記最上位階層の前記プールページに割り当てられていない仮想ページの割当てを前記最上位階層の前記プールページに変更する、記憶制御方法。
【請求項９】
ホスト計算機と管理装置に接続するストレージ装置であって、
前記ストレージ装置は、
複数のボリュームを構成する複数の記憶デバイスと、記憶制御部と、を有し、
前記複数のボリュームの各々は、複数のプールページを有し、レスポンス性能に従って区分された複数の階層のうちの１つに属しており、
前記記憶制御部は、
複数の仮想ページを有する仮想ボリュームを複数、前記ホスト計算機に提供し、前記ホスト計算機からのＩ／Ｏアクセスに応じて前記仮想ボリュームへ前記プールページを割当て、
それぞれが１以上の前記仮想ボリュームを有するＴｉｅｒｉｎｇ  Ｇｒｏｕｐを複数構築し、
前記仮想ページ毎のＩ／Ｏ数を計測し、
前記Ｔｉｅｒｉｎｇ  Ｇｒｏｕｐグループ毎に、前記仮想ボリュームの前記仮想ページへのＩ／Ｏ数に対し重み付けを行う範囲である容量と前記重み付けの倍率を含む記憶領域の再配置条件を設定し、
前記Ｔｉｅｒｉｎｇ  Ｇｒｏｕｐグループ毎に、前記容量と前記重み付けの倍率で計算されたＩ／Ｏ数を有する前記仮想ページが、他の前記仮想ページのＩ／Ｏ数を上回る場合に、前記容量と前記重み付けの倍率で計算されたＩ／Ｏ数を有する前記仮想ページに対し、最上位階層のプールページを優先的に割り当てる、
ストレージ装置。
【請求項１０】
前記再配置条件としてさらに、前記Ｔｉｅｒｉｎｇ  Ｇｒｏｕｐ毎の目標平均レスポンスタイムを含み、
前記ストレージ装置は、
前記Ｔｉｅｒｉｎｇ  Ｇｒｏｕｐグループ毎に平均レスポンスタイムを算出し、
算出された前記平均レスポンスタイムが前記目標平均レスポンスタイムを満足しない場合、前記Ｔｉｅｒｉｎｇ  Ｇｒｏｕｐごとに、前記算出された平均レスポンスタイムが前記目標平均レスポンスタイムを満足するまで、最上位階層の前記プールページが割り当てられていない前記仮想ページの割り当てを、前記最上位階層の前記プールページが割り当てられるように変更する、
請求項９に記載のストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置及び記憶制御方法に関する。
【背景技術】
【０００２】
近年の経済事情と、増大し続けるデータ量に対応するために、ユーザのＩＴ機器への投資コストの抑制および費用対効果の最適化要求は、高くなる一方である。このような要求に応えるストレージ装置での容量仮想化機能として、Thin  ProvisioningまたはDynamic  Provisioningと呼ばれる機能（以下、ＤＰ機能）がある。
【０００３】
このＤＰ機能は、ホスト計算機からストレージ装置へのライト要求時にホスト計算機が使用する仮想ボリュームに、所定記憶単位毎の記憶領域（プールページ）を割り当てるものである。
【０００４】
最近では、特許文献１で開示されているDynamic  Tiering（以下、ＤＴ機能）と呼ばれる容量仮想化を進化させた動的再配置機能が提案されている。
【０００５】
このＤＴ機能は、コストパフォーマンスやビットコストが異なる複数の記憶ドライブ(ＳＳＤ（Solid  State  Drive）、ＳＡＳ（Serial  Attached  SCSI）、ＳＡＴＡ（Serial  ATA）等)のボリュームを組み合わせてプールを構成し、階層化されたプールから仮想ボリュームを構成する。
【０００６】
そして、前述のページ単位にアクセス頻度（Ｉ／Ｏ数）を計測し、アクセス頻度が高いページをＳＳＤなどの高速な上位階層ドライブへ、アクセス頻度が低いページをＳＡＴＡなどの低速な下位階層ドライブへ移動させることにより、ドライブ毎のアクセス頻度による負荷を自動的に最適化する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】ＰＣＴ国際公開ＷＯ２０１１／１１７９２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来技術では、Ｉ／Ｏ頻度は低いが、高速レスポンスを必要とするファイルの実データを格納するセグメント（ページ）は、Ｉ／Ｏ数が少ないので、単位時間当たりのアクセス頻度（ＩＯＰＳ）が低速な下位階層ドライブに移行される。
【０００９】
この結果、実際にアプリケーションがファイルを使用する際、ファイルの実データが、低速な下位階層ドライブに格納されているときには、ファイル読み込み性能が要求レスポンス性能を満たさなくなり、アプリケーションの動作に遅延が生ずる可能性がある。
【００１０】
そこで、要求レスポンス性能の付与されたファイルの実データを格納するためのページを、要求レスポンス性能を満たす階層ドライブに常時配置させている。
【００１１】
ホスト計算機又は、ストレージ装置上で動作する複数のアプリケーションが同一のプールを使用した場合、要求レスポンス性能を満たす階層ドライブ、例えば、最上位階層に常時配置される実データが増え続ける。
【００１２】
そのため、ページ単位でのＩ／Ｏアクセス頻度（ＩＯＰＳ：IO  Per  Second）を考慮してページ単位にマイグレーションしても、レスポンスタイムなどのアクセス性能を満たさない場合がある。
【００１３】
本発明の目的は、各アプリケーション間でのレスポンス性能低下の影響を低減できるストレージ装置と記憶制御方法を提供することにある。
【課題を解決するための手段】
【００１４】
ホスト計算機またはストレージ装置上で動作する複数のアプリケーションで使用する仮想ボリュームをグループ化する。そして、グループ毎に要求されるレスポンス性能に応じた再配置条件をあらかじめ設定し、再配置条件に沿った階層の再配置を実施する。
【発明の効果】
【００１５】
アプリケーションが使用する仮想ボリュームのグループ化とグループ毎に要求される性能に応じた再配置条件の設定と、再配置条件に沿った再配置を実施することにより、各アプリケーション間でのレスポンス性能低下の影響を低減できる。
【図面の簡単な説明】
【００１６】
【図１】図１は、本発明の概要を示す概念図である。
【図２】図２は、従来技術での課題を示す図である。
【図３】図３は、ストレージシステムの全体構成図である。
【図４】図４は、ストレージ装置における各種記憶領域の関係を示す図である。
【図５】図５は、アロケーションテーブルの構成例を示す図である。
【図６】図６は、プールボリューム管理テーブルの構成例を示す図である。
【図７】図７は、プールページ管理テーブルの構成例を示す図である。
【図８】図８は、仮想ページＩ／Ｏ数管理テーブルの構成例を示す図である。
【図９】図９は、ホスト計算機からのライトＩ／Ｏ要求の処理を示すフローチャート図である。
【図１０】図１０は、ライトＩ／Ｏ要求時での記憶領域のマッピング処理を示すフローチャート図である。
【図１１】図１１は、メモリから記憶ドライブへのデステージ処理を示すフローチャート図である。
【図１２】図１２は、ホスト計算機からのリードＩ／Ｏ要求の処理を示すフローチャート図である。
【図１３】図１３は、リードＩ／Ｏ要求時での記憶領域のマッピング処理を示すフローチャート図である。
【図１４】図１４は、最適Ｔｉｅｒの決定処理を示すフローチャート図である。
【図１５】図１５は、仮想ボリュームＩ／Ｏ度数分布テーブルの構成例を示す図である。
【図１６】図１６は、プールＩ／Ｏ度数分布テーブルの構成例を示す図である。
【図１７】図１７は、プール毎の度数分布のイメージを示す図である。
【図１８】図１８は、実施例１でのＴＧ毎の制約条件設定のページ再配置処理を示すフローチャート図である。
【図１９】図１９は、実施例１でのＴＧ設定の処理を示すフローチャート図である。
【図２０】図２０は、実施例１でのＴＧ設定情報管理テーブルの構成例を示す図である。
【図２１】図２１は、実施例１での仮想ボリューム作成時のＴＧ設定画面の構成例を示す図である。
【図２２】図２２は、実施例１での仮想ボリューム作成後のＴＧ設定変更を行うＴＧ設定画面の構成例を示す図である。
【図２３】図２３は、実施例１でのＴＧ設定内容を確認するＴＧ設定確認画面の構成例を示す図である。
【図２４】図２４は、実施例１でのＴｉｅｒ０最低使用量の制約条件処理を示すフローチャート図である。
【図２５】図２５は、実施例１でのＴｉｅｒ２最低使用量の制約条件処理を示すフローチャート図である。
【図２６】図２６は、実施例１でのＴｉｅｒ０最大使用量の制約条件処理を示すフローチャート図である。
【図２７】図２７は、実施例２でのＴＧ毎の重み付けによるページ再配置処理を示すフローチャート図である。
【図２８】図２８は、実施例２でのＴＧ設定の処理を示すフローチャート図である。
【図２９】図２９は、実施例２でのＴＧ設定情報管理テーブルの構成例を示す図である。
【図３０】図３０は、実施例２でのＴＧ設定情報管理テーブルで、重み付け前後の構成例を示す図である。
【図３１】図３１は、実施例２での仮想ボリューム作成時のＴＧ設定画面の構成例を示す図である。
【図３２】図３２は、実施例２での仮想ボリューム作成後のＴＧ設定変更を行うＴＧ設定画面の構成例を示す図である。
【図３３】図３３は、実施例２でのＴＧ設定内容を確認するＴＧ設定確認画面の構成例を示す図である。
【図３４】図３４は、実施例３での目標平均レスポンスタイム設定によるページ再配置／再−再配置処理の概念を説明する図である。
【図３５】図３５は、実施例３での目標平均レスポンスタイム設定によるページ再配置の処理を示すフローチャート図である。
【図３６】図３６は、実施例３でのＴＧ設定の処理を示すフローチャート図である。
【図３７】図３７は、実施例３でのＴＧ設定情報管理テーブルの構成例を示す図である。
【図３８】図３８は、実施例３での仮想ボリューム作成時のＴＧ設定画面の構成例を示す図である。
【図３９】図３９は、実施例３での仮想ボリューム作成後のＴＧ設定変更を行うＴＧ設定画面の構成例を示す図である。
【図４０】図４０は、実施例３でのＴＧ設定内容を確認するＴＧ設定確認画面の構成例を示す図である。
【図４１】図４１は、実施例３での目標平均レスポンスタイム設定によるページ再−再配置の処理を示すフローチャート図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照しながら本発明の実施の形態を説明する。なお、以下の説明では、「管理テーブル」等の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。また、データ構造に依存しないことを示すために「管理テーブル」を「管理情報」と呼ぶことができる。
【００１８】
また、「プログラム」または「ツール」を主語として処理を説明する場合がある。そのプログラムは、プロセッサ、例えば、ＭＰ（Micro  Processor）やＣＰＵ（Central  Processing  Unit）によって実行されるもので、定められた処理をするものである。
【００１９】
なお、適宜に記憶資源（例えば、メモリ）及び通信インタフェース装置（例えば、通信ポート）を用いながら行うため、処理の主語がプロセッサとされてもよい。プロセッサは、ＣＰＵの他に専用ハードウェアを有していても良い。コンピュータプログラムは、プログラムソースから各コンピュータにインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアなどで提供されるものであっても良い。
【００２０】
また、各要素例えば、ＰＤ（Physical  Device）は番号などで識別可能であるが、識別可能な情報であれば、名前など他種の識別情報が用いられても良い。本発明の図及び説明において同一部分には同一符号を付与しているが、本発明が本実施例に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。また、特に限定しない限り、各構成要素は複数でも単数でも構わない。
【００２１】
＜発明概要＞
図１は、本発明の概要を示す概念図である。図２は、従来技術での課題を説明する図である。
【００２２】
本発明では、前述のように、ホスト計算機又はストレージ装置上で動作する複数のアプリケーションで使用する仮想ボリュームをグループ化する。そして、グループ毎に要求される性能に応じた再配置条件をあらかじめ設定し、再配置条件に沿った階層の再配置を実施し、各アプリケーション間でのレスポンス性能低下の影響を低減するものである。
【００２３】
まず、従来技術での課題を図２で説明する。
【００２４】
まず、図２（ａ）のように６０ＧＢのＳＳＤで構成されたＴｉｅｒ０  ２０と３００ＧＢのＳＡＳタイプＨＤＤで構成されたＴｉｅｒ１  ２１を含むプールボリュームが、アプリケーション１が使用する仮想ボリュームとアプリケーション２が使用する仮想ボリュームに割り当てられているものとする。
【００２５】
また、Ｉ／Ｏアクセス頻度が変動する前のアプリケーション１のＩ／Ｏ度数分布が符号１０、アプリケーション２のＩ／Ｏ度数分布が符号１１である。また、各アプリケーションがそれぞれ、Ｔｉｅｒ０を３０ＧＢ、Ｔｉｅｒ１を１５０ＧＢずつ使用しているものとする。
【００２６】
次に、図２（ｂ）のように、アプリケーション２が使用する仮想ボリュームへのＩ／Ｏアクセス数が大幅に増加し、Ｉ／Ｏアクセス頻度も高くなる。そうすると、アプリケーション２のＩ／Ｏ度数分布が符号１１から符号１１ａに変化するので、従来のＤＴ（Dynamic  Tiering）機能では、Ｉ／Ｏアクセス頻度が高くなった記憶領域（ページ）を上位階層に再配置しデータの移行を行う。その結果、上位階層であるＴｉｅｒ０（６０ＧＢ）２０の全ては、アプリケーション２が使用することになり、アプリケーション１は使用することができない。
【００２７】
このため、アプリケーション１でのＩ／Ｏアクセス頻度に変化がないのにも関わらず、Ｔｉｅｒ０が割当てられていた３０ＧＢ分の記憶領域（仮想ページ）は、Ｔｉｅｒ０  ２０より低速なＳＡＳ  ＨＤＤで構成されたＴｉｅｒ１  ２１を使用しなければならない。そのため、アプリケーション１でのレスポンス性能が低下してしまうという状況が発生する。
【００２８】
そこで、本発明では、ホスト計算機又はストレージ装置上で動作する複数のアプリケーションで使用する仮想ボリュームをグループ化する。グループ化後、グループ毎に要求されるレスポンス性能に応じたページ再配置条件の設定、すなわち、
（１）各Ｔｉｅｒの最大／最低使用量の設定
（２）Ｉ／Ｏ度数分布への重み付けの設定
（３）平均目標レスポンス時間の設定
を行う。そして、ページ再配置条件に合致した階層へのページ再配置を実施し、各アプリケーション間でのレスポンス性能低下の影響を低減するものである。
【００２９】
具体的には、図１（１）の各Ｔｉｅｒの使用容量の最大／最低使用量の設定は、アプリケーション単位、アプリケーションで使用する仮想ボリューム単位、複数の仮想ボリュームをグループとして纏めたグループ単位で、使用できる各Ｔｉｅｒの容量の最大／最低を設定するものである。これにより、アプリケーション毎またはアプリケーションで使用する仮想ボリューム毎で偏ったＴｉｅｒ使用を抑止する。
【００３０】
図１の例では、アプリケーション１が最低３０ＧＢ（符号１２ａ）のＴｉｅｒ０を使用できるという制約条件をストレージ装置に設定する。その制約条件の設定で、図２（ｂ）のようなアプリケーション２によるＴｉｅｒ０の専有を防止でき、アプリケーション１でのレスポンス性能低下を低減できる。
【００３１】
また、アプリケーション２が最低２０ＧＢ（符号１２ｂ）のＴｉｅｒ２を使用しなければならないという制約条件を設定する。そのＴｉｅｒ２での制約条件の設定で、アプリケーション２によるＴｉｅｒ０ないしＴｉｅｒ１の使用量を制限できるので、アプリケーション１でのレスポンス性能低下を低減できる。
【００３２】
図１（２）のＩ／Ｏ度数分布への重み付け設定は、アプリケーション１のＩ／Ｏ度数分布に対し重み付けする範囲と重みを設定するものである。この重み付けする範囲と重みの設定で、アプリケーション１のＩ／Ｏ度数分布１０を見掛け上のＩ／Ｏ度数分布１０ａとすることができる。そのため、図１（１）と同様に、アプリケーション２によるＴｉｅｒ０の専有を防止でき、アプリケーション１でのレスポンス性能低下を低減できる。
【００３３】
図１（３）の目標平均レスポンス時間（目標値）の設定は、アプリケーション毎の平均レスポンスタイムを計算し、計算値と事前に設定した目標値とを比較してアクセス性能の改善を実行するものである。
【００３４】
アプリケーション１での平均レスポンスタイムの計算値が目標値を上回る場合、アプリケーション２の仮想ページの内、Ｔｉｅｒ０に配置されている仮想ページをＴｉｅｒ１へ移動しても、アプリケーション２の平均レスポンスタイムが目標平均レスポンスタイム未満にならない仮想ページをＩ／Ｏ数が少ない仮想ページより順に検索する。
【００３５】
検索した仮想ページと、アプリケーション１のＴｉｅｒ１に属する仮想ページの中で最もＩ／Ｏ数が高い仮想ページとを入れ替える。
【００３６】
つまり、アプリケーション２のＩ／Ｏ度数分布で符号１４ａのＴｉｅｒ０（ＳＳＤ）に配置された仮想ページと、アプリケーション１のＩ／Ｏ度数分布で符号１４ｂのＴｉｅｒ１（ＳＡＳ）に配置された仮想ページとを入れ替える。
【００３７】
このページ再配置処理により、図１（１）及び図１（２）と同様に、アプリケーション２によるＴｉｅｒ０の専有を防止でき、アプリケーション１でのレスポンス性能低下を低減できる。詳細な動作については後述する。また、以降の説明では、発明の内容に応じて、度数分布をアプリケーション度数分布、仮想ボリューム度数分布、プール度数分布等と使い分けて説明する。
【００３８】
＜システム構成＞
図３は、ストレージシステムの全体構成図である。ストレージシステム３９は、ストレージ装置３０、管理端末３３、ホスト計算機３４、外部ストレージ装置３５から構成される。
【００３９】
ストレージ装置３０には、ＳＡＮ（Storage  Area  Network）３６などのネットワークを経由しＣＨＡ＿Ｉ／Ｆ（チャネルアダプタインタフェース）３１ａを介して１つ以上のホストまたは／及び１つ以上の外部ストレージ装置が接続される。ホスト計算機３４および外部ストレージ装置３５は、ＣＨＡ＿Ｉ／Ｆ３１ａを介し、ストレージ装置３０からデータを読み出したり、ストレージ装置３０にデータを書き込んだりする。
【００４０】
また、ストレージ装置３０には、ＮＩＣ（Network  Interface  Card）３１ｄ及びＮＩＣ３３ｄを介して、ＣＩＦＳ（Common  Internet  File  System）やＮＦＳ（Network  File  System）などのネットワークプロトコルで、管理端末３３が接続される。
【００４１】
ストレージ装置３０は、制御装置３１とディスクユニット３２とに大別することができる。ディスクユニット３２は、複数の記憶ドライブから構成される。ディスクユニット３２は、物理的に異なる種類の記憶ドライブから構成されてもよい。
【００４２】
本実施例のディスクユニット３２は、記憶ドライブとして、ＳＡＳインタファースタイプＳＳＤ３２ａ、ＳＡＳタイプＨＤＤ３２ｂ、ＳＡＴＡタイプＨＤＤ３２ｃが含まれている。なお、記憶ドライブは前述のものに限定されるものではなく、ＦＣ（Fibre  Channel）タイプＨＤＤやテープなどであってもよい。ディスクユニット３２は、ファイバチャネルケーブル等の通信線を介して制御装置３１に接続され、複数の記憶ドライブでＲＡＩＤグループを構成する。
【００４３】
制御装置３１は、ＣＨＡ＿Ｉ／Ｆ３１ａと、ＣＰＵ３１ｂと、メモリ３１ｃと、ＮＩＣ３１ｄと、ＳＡＳ＿Ｉ／Ｆコントローラ３１ｅと、ＳＡＳ＿Ｉ／Ｆコントローラ３１ｆと、ＳＡＳ＿Ｉ／Ｆコントローラ３１ｇとを有する。
【００４４】
ＣＨＡ＿Ｉ／Ｆ３１ａは、ホスト計算機３４からストレージ装置３０へのＩ／Ｏコマンド（ライトコマンド又はリードコマンド）を受信し、受信したＩ／Ｏコマンドを、ＣＰＵ３１ｂに転送する。また、ＣＨＡ＿Ｉ／Ｆ３１ａは、ストレージ装置３０と外部ストレージ装置３５間のデータ転送にも用いられる。
【００４５】
ＣＰＵ３１ｂは、ストレージ装置３０全体を制御するプロセッサである。つまり、ホスト計算機３４からのＩ／Ｏアクセスを処理したり、後述のローカルコピーなどのアプリケーションプログラム（以下、アプリケーション）を動作させる。
【００４６】
メモリ３１ｃは、ＤＲＡＭ（Dynamic  Random  Access  Memory）などの揮発性メモリ及び／又は、フラッシュメモリなどの不揮発性メモリを有する記憶装置である。メモリ３１ｃには、例えば、仮想ページに対するＩ／Ｏの対象のデータ要素が一時的に格納される記憶領域（以下、キャッシュメモリ領域或いは、それを略してＣＭ）がある。また、メモリ３１ｃには、種々の制御情報、コンピュータプログラムや管理テーブルが記憶される記憶領域（以下、共有メモリ領域或いは、それを略してＳＭ）がある。
【００４７】
ＳＡＳ＿Ｉ／Ｆコントローラ３１ｅ、ＳＡＳ＿Ｉ／Ｆコントローラ３１ｆ、ＳＡＳ＿Ｉ／Ｆコントローラ３１ｇは、それぞれ、ディスクユニット３２のＳＳＤ３２ａ、ＳＡＳタイプＨＤＤ３２ｂ、ＳＡＴＡタイプＨＤＤ３２ｃと接続される。
【００４８】
制御装置３１は、ホスト計算機３４から受信したコマンドに従ってディスクユニットへのデータの書き込み及び読み出しを制御する。制御装置３１は、ＤＰ機能（Thin  ProvisioningまたはDynamic  Provisioning）に従う仮想ボリュームを提供する。仮想ボリュームは複数の仮想ページで構成されている。
【００４９】
ホスト計算機３４のハードウェア構成は、一般的な計算機と同じである。すなわち、ホスト計算機３４は、通信インタフェースと、揮発性メモリと、不揮発性メモリと、それらに接続されたＣＰＵとを有する。
【００５０】
外部ストレージ装置３５はストレージ装置３０と同等の機能を持つ。通信Ｉ／Ｆは、ＣＨＡ＿Ｉ／Ｆを介した通信を行うためのファイバチャネルＩ／Ｆである。
【００５１】
管理端末３３のハードウェア構成は、ディスプレイやプリンタなどの出力装置３３ａと、ＣＰＵ３３ｂと、揮発性メモリ又は／及び不揮発性メモリで構成されるメモリ３３ｃと、ＮＩＣ３３ｄと、キーボードやマウスなどの入力装置３３ｅとを有する。管理端末３３は、ＮＩＣ３３ｄを介して遠隔地等からストレージ装置３０を制御する。
【００５２】
＜記憶階層＞
図４は、ストレージ装置における各種記憶領域の関係を示す図である。
【００５３】
ストレージ装置３０は、複数のディスクボリュームから構成されるプール１  ４１ａ、プール２  ４１ｂ・・・プールｎ  ４１ｎを備える。
【００５４】
プールを構成する各ディスクボリューム４３ａ、４３ｂ、４３ｃは、２以上のプールページ４３１ａ、４３１ｂ、４３１ｃに分割されている。各プールページは所定データサイズの記憶領域である。プールページにはページ番号が付与される。各ページは属するディスクボリュームのＴｉｅｒ番号、すなわち、Ｔｉｅｒ＃０  ４２ａ、Ｔｉｅｒ＃１  ４２ｂ、Ｔｉｅｒ＃２  ４２ｃのいずれかを保持する。
【００５５】
ディスクボリューム４３ａは、記憶ドライブとして高価だが高速なＳＳＤで構成される。同じく、ディスクボリューム４３ｂは、ＳＳＤより低速であるが安価なＳＡＳタイプＨＤＤより構成される。ディスクボリューム４３ｃは、ＳＳＤより低速であるが安価で大容量のＳＡＴＡタイプＨＤＤより構成される。
【００５６】
ストレージ装置３０は、プールに関連付けられた仮想ボリューム４０ａ、４０ｂを備える。１つのプールに、複数の仮想ボリュームが関連付けられる。例えば、プール１  ４１ａは、仮想ボリューム４０ａ及び４０ｂが関連付けられる。
【００５７】
仮想ボリューム４０ａは、所定のデータサイズの仮想的な記憶領域である複数の仮想ページ４０１ａ、４０２ａ等から構成される。同じく、仮想ボリューム４０ｂは、所定のデータサイズの仮想的な記憶領域である複数の仮想ページ４０１ｂ等から構成される。
【００５８】
仮想ページに割り当てられているプールページが属するＴｉｅｒ番号を、その仮想ページが属するＴｉｅｒ番号と解釈することができる。仮想ページは、使用されるとき（例えば、データが書き込まれるとき）に初めてプールページが割り当てられる。
【００５９】
ストレージ装置３０は、仮想ボリュームの性能を最適化するために、仮想ページに割り当てるプールページを適宜変更する。この変更処理を「ページ再配置処理」という。
【００６０】
例えば、アクセス負荷の大きい仮想ページには、高性能のディスクボリュームに属するプールページを割り当て、アクセス負荷の小さい仮想ページには、比較的性能の低いディスクボリュームに属するプールページを割り当てる。
【００６１】
ページ再配置処理では、ページ間でのデータの移動が行われる。ホスト計算機３４からのアクセスの傾向に基づいて仮想ページに割り当てるプールページを再配置することによって、ストレージ装置３０は、ホスト計算機３４に対して高性能な仮想ボリュームを提供することができる。
【００６２】
各プールページの最適なＴｉｅｒ番号の決定方法は、プール度数分布テーブルを参照し、過去の所定の時間帯においてアクセス頻度が高い仮想ページは番号の小さい（すなわち、高性能な）Ｔｉｅｒに属するようにし、アクセス頻度が低い仮想ページは番号の大きい（すなわち、比較的性能の高くない）Ｔｉｅｒに属するようにする。
【００６３】
以上の説明では、仮想化機能をストレージ装置３０に備えたインバンド方式について述べた。なお、サーバなどに仮想化機構（ソフトウェア）を設けたサーバベースのインバンド方式や、仮想化スイッチと管理機能で構成された仮想化機構（ハードウェア）を設けたスイッチベースのインバンド方式で仮想化機能を実現することもできる。さらに、ホスト計算機に仮想化ソフトウェアを内蔵させ、ストレージ装置３０に直結させて使用するアウトバンド方式で仮想化機能を実現することもできる。
【００６４】
また、ストレージ装置３０上で動作するソフトウェア（アプリケーション）として、十分に離れた地点に設置された外部ストレージ装置３５に、同一のデータをコピーするリモートコピーソフトウェアがある。リモートコピーソフトウェアは、同期式リモートコピー機能と非同期式リモートコピー機能を有する。
【００６５】
非同期式リモートコピー機能では、ジャーナル（変更履歴）データを論理デバイスへ格納後にリモートサイトへ転送することで、ホスト計算機非経由でリモート（遠隔）サイトの別ストレージ装置（外部ストレージ装置３５）にレプリカボリュームを作成し、メインサイトの正ボリュームとの一貫性保持を非同期で行う機能である。
【００６６】
また、同期式リモートコピー機能では、メインサイト（ストレージ装置３０）の更新処理に同期して、リモートサイト（外部ストレージ装置３５）への更新処理を行いもので、
メインサイトの正ボリュームとリモートサイトの副ボリュームの内容を常に一致させている。なお、リモートコピーソフトでは、ストレージ装置３０および外部ストレージ装置３５は、共にデータのコピー先（リモート）・コピー元（メイン）となる機能を有する。
【００６７】
また、ストレージ装置３０は、装置内部にコピーデータを作成するローカルコピーと呼ばれるソフトウェアもある。ローカルコピーソフトウェアには、正ボリュームの全データをそのまま複製する機能と、更新されたデータのみをバックアップするスナップショット機能の２つの機能を有する。
【００６８】
正ボリュームの全データをそのまま複製する機能では、論理ボリュームのレプリカ（副ボリューム）である実ボリュームを作成するもので、作成されたレプリカを利用することで、稼働中のアプリケーションに影響を与えずにバックアップを取得したり、バッチ業務実行などの並列処理を実現できる。
【００６９】
スナップショット機能は、指示した時点の論理ボリュームのレプリカ（副ボリューム）である仮想ボリュームを即座に作成する機能で、操作ミスやバグなどのソフトウェア障害時に、任意の時点のレプリカから即座にデータを回復できる。
【００７０】
更に、ストレージ装置３０は、同一プール内または同一ボリューム内へ同一のファイルデータが格納された場合、ファイル単位またはファイル単位よりも細かいセグメント単位でデータを比較し、重複するデータを排除するソフトウェア（以下、De-duplication）もある。
【００７１】
また、ホスト計算機３４上で動作するソフトウェアとして、データベースアプリケーションがある。このデータベースアプリケーションでは、索引部分であるＩＮＤＥＸ部用の仮想ボリュームには高速な応答が要求され、一方、実データを格納したＢＯＤＹ部用の仮想ボリュームには高速な応答は要求されない。
【００７２】
＜アロケーションテーブル＞
図５は、アロケーションテーブルの構成例を示す図である。アロケーションテーブル５０は、ストレージ装置３０のメモリ３１ｃに格納され、適宜ＣＰＵ３１ｂで使用される。
【００７３】
アロケーションテーブル５０は、どの仮想ページにどのプールページが割り当てられているかを表すテーブルである。具体的には、例えば、テーブル５０は、仮想ページ毎に、仮想ボリューム＃５０ａ、仮想ページ＃５０ｂ、プールボリューム＃５０ｃ、プールページ＃５０ｄを有する。
【００７４】
一つの仮想ページ（以下、図５の説明において「対象仮想ページ」と言う）を例とすると、これらの情報要素は、具体的には、下記の通りである。
【００７５】
（１）「仮想ボリューム＃」は、対象仮想ページを有する仮想ボリュームの番号である。
【００７６】
（２）「仮想ページ＃」は、対象仮想ページの番号である。
【００７７】
（３）「プールボリューム＃」は、対象仮想ページを有する仮想ボリュームに割り当てられているプールボリュームの番号である。
【００７８】
（４）「プールページ＃」は、対象仮想ページに割り当てられているプールページの番号である。
【００７９】
より具体的には、仮想ボリューム＃１００  ５１の仮想ページ＃０  ５１ａは、アロケーションテーブル５０の仮想ボリューム＃５０ａが“１００”で仮想ページ＃５０ｂが“０”である対象仮想ページが該当し、プールボリューム＃５０ｃが“５０”でプールページ＃５０ｄが“０”であるプールページが割当てられている。
【００８０】
同じく、仮想ボリューム＃５０ａが“１００”で仮想ページ＃５０ｂが“２”である仮想ページは、プールボリューム＃５０ｃが“５１”でプールページ＃５０ｄが“１”であるプールページが割当てられている。
【００８１】
なお、仮想ボリューム＃５０ａが“１００”で仮想ページ＃５０ｂが“１”である対象仮想ページには、プールページは割り当てられていない（N/A：Non-Assigned）状態である。
【００８２】
＜プールボリューム管理テーブル＞
図６は、プールボリューム管理テーブルの構成例を示す図である。プールボリューム管理テーブル６０は、ストレージ装置３０のメモリ３１ｃに格納され、適宜ＣＰＵ３１ｂで使用される。
【００８３】
プールボリューム管理テーブル６０は、プールボリュームを構成している情報を管理するもので、記憶ドライブ、ＲＡＩＤレベル、容量などを管理している。
【００８４】
すなわち、プールボリューム管理テーブル６０は、プールボリューム＃６０ａ、ボリューム種別６０ｂ、ドライブ種別６０ｃ、ＲＡＩＤレベル６０ｄ、ＰＧ＃（プールグループ番号）６０ｅ、ボリューム容量（ＧＢ）６０ｆ、所属プール＃６０ｇ、Ｔｉｅｒ＃６０ｈ、未使用ページ数６０ｉから構成される。
【００８５】
１つのプールボリューム（以下、図６の説明において「対象プールボリューム」と言う）を例とすると、これらの情報要素は、具体的には、下記の通りである。
【００８６】
（１）「プールボリューム＃」は、対象プールボリュームを識別するための番号である。
【００８７】
（２）「ボリューム種別」は、対象プールボリュームの種類を管理する情報で、“物理”、“論理”、“仮想”のいずれかの情報が設定される。
【００８８】
（３）「ドライブ種別」は、対象プールボリュームを構成する記憶ドライブの種別を表す情報である。
【００８９】
（４）「ＲＡＩＤレベル」は、対象プールボリュームでのＲＡＩＤレベル番号である。
【００９０】
（５）「ＰＧ＃」は、対象プールボリュームを構成する物理ディスク（記憶ドライブ）を識別するプールグループ番号である。
【００９１】
（６）「ボリューム容量（ＧＢ）」は、対象プールボリュームへのデータ記憶容量である。
【００９２】
（７）「所属プール＃」は、対象プールボリュームが属するプール番号である。
【００９３】
（８）「Ｔｉｅｒ＃」は、対象プールボリュームのＴｉｅｒレベルを表すＴｉｅｒ番号である。
【００９４】
（９）「未使用ページ数」は、対象プールボリュームで仮想ページへの割当てが行われていない、すなわち、未使用であるページ数を表す情報である。
【００９５】
より具体的には、図の下半分に表記したように、プールボリューム＃６０ａが“５０”であるプールボリューム＃５０（符号６４）は、ボリューム種別６０ｂ、ドライブ種別６０ｃ、ＰＧ＃６０ｅから、ＰＧ番号として“４”（符号６２）を付けられたＳＳＤから構成された物理ボリューム（符号６１）であることが分かる。
【００９６】
また、ＲＡＩＤレベル６０ｄ、ボリューム容量６０ｆから、プールボリューム５０は、３Ｄ＋１ＰというＲＡＩＤ５を構成し、総記憶容量は７５０ＧＢ（＝２５０ＧＢ＊（パリティ部分１台分を除くデータ部分３台分））（符号６３）であることが分かる。
【００９７】
更に、所属プール＃６０ｇ、Ｔｉｅｒ＃６０ｈ、未使用ページ数６０ｉから、プールボリューム５０は、プール１に所属しＴｉｅｒ＃０（Ｔｉｅｒレベル０）で、未使用ページが３９９ページあることが分かる。ちなみに、使用済みページまたは未使用ページは、所定のページ容量６５、例えば、４２ＭＢ／ページの記憶容量を有する。
【００９８】
同じく、プールボリューム＃６０ａが“６０”であるプールボリューム＃６０は、回転数が１５Ｋｒｐｍ（Kilo  root  per  minutes）であるＳＡＳタイプＨＤＤを８台で６Ｄ＋２ＰというＲＡＩＤレベル６を構成し、プールグループ番号が“５”で物理ボリュームである。このプールボリューム６０は、プール１に属しＴｉｅｒ＃１（Ｔｉｅｒレベル１）で、総記憶容量は１２００ＧＢで、未使用ページ数が１５０ページであることが分かる。
【００９９】
なお、プールボリューム管理テーブル６０のＴｉｅｒ＃は、０から２までの３階層としているが、２階層ないし４階層以上でもかまわない。また、各階層で使用するドライブの種別として、ＦＣ（Fibre  Channel）タイプのＨＤＤ、７．２ＫｒｐｍのＮＬ（Near  Line）−ＳＡＳのＨＤＤやテープなどを用いることも可能である。
【０１００】
＜プールページ管理テーブル＞
図７は、プールページ管理テーブルの構成例を示す図である。プールページ管理テーブル７０は、ストレージ装置３０のメモリ３１ｃに格納され、適宜ＣＰＵ３１ｂで使用される。
【０１０１】
プールページ管理テーブル７０は、各プールページの状態を管理するためのテーブルである。プールページ管理テーブル７０は、プールページ毎に、プールボリューム＃７０ａ、プールページ＃７０ｂ、及びページ使用状態７０ｃの情報から構成される。
【０１０２】
１つのプールページ（以下、図７の説明において「対象プールページ」と言う）を例として、前述の情報要素は、下記の通りである。
【０１０３】
（１）「プールボリューム＃」は、対象プールページを有するプールボリュームを識別する番号である。
【０１０４】
（２）「ページ＃」は、対象プールページの番号である。
【０１０５】
（３）「ページ使用状態」は、対象プールページの使用状態を把握するための情報である。使用状態の情報として、例えば、“使用”と“未使用”がある。
【０１０６】
“使用”は、対象プールページがいずれかの仮想ページに割当て済みであることを意味する。“未使用”は、対象プールページがいずれの仮想ページにも割り当てられておらず、それ故に、いずれの仮想ページにも割当て可能な状態になっていることを意味する。
【０１０７】
具体的には、プールボリューム＃が“５０”であるプールボリューム＃５０のページ＃０は、使用状態である。逆に、プールボリューム＃５０のページ＃２は使用されていないので、いずれの仮想ページにも割当て可能な状態になっている。
【０１０８】
＜仮想ページＩ／Ｏ数管理テーブル＞
図８は、仮想ページＩ／Ｏ数管理テーブルの構成例を示す図である。仮想ページＩ／Ｏ数管理テーブル８０は、ストレージ装置３０のメモリ３１ｃに格納され、適宜ＣＰＵ３１ｂで使用される。
【０１０９】
仮想ページＩ／Ｏ数管理テーブル８０は、仮想ボリュームの仮想ページ毎に発生したＩ／Ｏ数を管理するテーブルであり、前述のＤＴ機能により参照され仮想ページに割り当てられたプールページの階層レベルを変更するために用いられる。仮想ページＩ／Ｏ数管理テーブル８０は、仮想ボリューム＃８０ａ、仮想ページ＃８０ｂ、仮想ページ毎に発生したＩ／Ｏ数を管理する仮想ページ毎Ｉ／Ｏ数８０ｃから構成される。
【０１１０】
１つの仮想ページ（以下、図８の説明において「対象仮想ページ」と言う）を例として、前述の情報要素は、下記の通りである。
【０１１１】
（１）「仮想ボリューム＃」は、対象仮想ページを有する仮想ボリュームを識別するための番号である。
【０１１２】
（２）「仮想ページ＃」は、対象仮想ページの番号である。
【０１１３】
（３）「仮想ページ毎Ｉ／Ｏ数」は、対象仮想ページに発生したＩ／Ｏの合計である。
【０１１４】
具体的には、仮想ボリューム＃８０ａが“１００”で、仮想ページ＃８０ｂが“０”である仮想ページ＃０で発生したＩ／Ｏ数は仮想ページ毎Ｉ／Ｏ数８０ｃから“１０”である。  
【０１１５】
同じく、仮想ボリューム＃１００の仮想ページ＃１では、仮想ページ毎Ｉ／Ｏ数８０ｃが“０”なので、Ｉ／Ｏは発生していない。
【０１１６】
また、仮想ボリューム＃１００の仮想ページ＃２で発生したＩ／Ｏ数は“５１２”、仮想ボリューム＃１０４の仮想ページ＃０で発生したＩ／Ｏ数は“６３５”と高い値と示していることが、仮想ページＩ／Ｏ数管理テーブル８０より把握できる。
【０１１７】
＜ライトＩ／Ｏ処理＞
図９は、ホスト計算機からのライトＩ／Ｏ要求の処理を示すフローチャート図である。図１０は、ライトＩ／Ｏ要求時での記憶領域のマッピング処理を示すフローチャート図である。
【０１１８】
以下の処理を、説明の便宜上、ストレージ装置３０のＣＰＵ３１ｂが処理を実行するものとして説明する。なお、ＣＰＵ３１ｂ上で動作するプログラム、例えば、前述のＤＰ機能やＤＴ機能を有するプログラムが処理を実行するものとしても良い。
【０１１９】
図９及び図１０の処理はホスト計算機３４からストレージ装置３０へのライトＩ／Ｏ要求の発生を契機にＣＰＵ３１ｂにより実行される。
【０１２０】
Ｓ９０１で、ホスト計算機３４からネットワーク３６を介しストレージ装置３０のＣＨＡ＿Ｉ／Ｆ３１ａがライトＩ／Ｏ要求を受領する。ＣＨＡ＿Ｉ／Ｆ３１ａが受領したライトＩ／Ｏ要求（ライトコマンド、ライト先アドレス及びライトデータ）をＣＰＵ３１ｂに転送する。
【０１２１】
Ｓ９０２で、ＣＰＵ３１ｂは、図１０に示すマッピング制御（ＷＲ）の処理を実行する。
【０１２２】
図１０のＳ１００１で、ＣＰＵ３１ｂは、ライト先の仮想ページへのプールページ割当て状態をアロケーションテーブル５０（図５）で確認する。
【０１２３】
Ｓ１００２で、ＣＰＵ３１ｂは、ライト先の仮想ページへプールページが割当て済みかどうかを判断する。
【０１２４】
仮想ページにプールページが割当て済みの場合（Ｓ１００２：Ｙｅｓ）、ＣＰＵ３１ｂは、Ｓ１００３を実行する。未割当ての場合（Ｓ１００２：Ｎｏ）、ＣＰＵ３１ｂは、Ｓ１００４の処理を実行する。
【０１２５】
Ｓ１００３で、ＣＰＵ３１ｂは、ライト先の仮想ページに割当てられたプールページのアドレス情報（プールボリューム番号、ページ番号）をプールボリューム管理テーブル６０及びプールページ管理テーブル７０から取得する。
【０１２６】
ライト先の仮想ページへ新規にプールページが割当てられる場合、ＣＰＵ３１ｂは、取得したプールページのアドレス情報（プールボリューム番号、プールページ番号）で、アロケーションテーブル５０を更新する。具体的には、ＣＰＵ３１ｂは、ライト先の仮想ボリューム番号と仮想ページ番号の行のプールボリューム＃５０ｃとプールページ＃５０ｄの欄の内容を取得したプールボリューム番号とページ番号で変更する。
【０１２７】
Ｓ１００４で、ＣＰＵ３１ｂは、ライトＩ／Ｏ要求を満たすＴｉｅｒを決定する。例えば、Ｔｉｅｒ０とする。
【０１２８】
Ｓ１００５で、ＣＰＵ３１ｂは、Ｓ１００４で決定したＴｉｅｒに対応するプールボリュームをプールボリューム管理テーブル６０より決定する。次に、ＣＰＵ３１ｂは、決定したプールボリュームにおける未使用プールページをプールページ管理テーブル７０で確認する。
【０１２９】
Ｓ１００６で、ＣＰＵ３１ｂは、プールボリュームに未使用プールページが有るかを判断する。未使用プールページが有る場合（Ｓ１００６：Ｙｅｓ）、ＣＰＵ３１ｂは、Ｓ１００７を実行する。未使用プールページが無い場合（Ｓ１００６：Ｎｏ）、ＣＰＵ３１ｂは、Ｓ１００８を実行する。
【０１３０】
Ｓ１００７で、ＣＰＵ３１ｂは、決定したＴｉｅｒに該当するプールボリュームから仮想ページに割当てるプールページを選択し割当てる。具体的には、Ｔｉｅｒ０と決定された場合、ＣＰＵ３１ｂは、プールボリューム管理テーブル６０でプールボリューム＃５０を選択する。ＣＰＵ３１ｂは、プールページ管理テーブル７０でプールボリューム＃５０で未使用状態のプールページであるページ＃２を選択する。ＣＰＵ３１ｂは、選択されたページ＃２に対応するプールページ管理テーブル７０のページ使用状態７０ｃを“未使用”から“使用”へと更新する。
【０１３１】
Ｓ１００８で、ＣＰＵ３１ｂは、別のＴｉｅｒを選択し、例えば、同じＴｉｅｒ０であれば、プールボリューム管理テーブル６０からプールボリューム＃７０を選択する。そして、ＣＰＵ３１ｂは、プールページ管理テーブル７０でプールボリューム＃７０での未使用状態のプールページを選択した後、Ｓ１００７とＳ１００３を実行する。
【０１３２】
再び、図９の処理を説明する。
【０１３３】
ＣＰＵ３１ｂは、Ｓ９０２でのマッピング制御（ＷＲ）の処理を完了した後、Ｓ９０３を実行する。
【０１３４】
Ｓ９０３で、ＣＰＵ３１ｂは、取得したプールページのアドレス情報（プールボリューム番号、プールページ番号）に対応したメモリ３１ｃのキャッシュメモリ領域にライトデータを書き込む。
【０１３５】
Ｓ９０４で、ＣＰＵ３１ｂは、ホスト計算機３４へライト完了通知を送信する。
【０１３６】
以上のように、ストレージ装置３０は、ホスト計算機３４からのライトＩ／Ｏ要求を仮想ページへのプールページの割当ても含め処理できる。
【０１３７】
＜デステージ処理＞
図１１は、メモリから記憶ドライブへのデステージ処理を示すフローチャート図である。
【０１３８】
Ｓ１１０１で、ＣＰＵ３１ｂは、メモリ３１ｃ上のキャッシュメモリ領域に、記憶ドライブに格納されておらずメモリ上のみに存在するダーティデータがあるかを確認する。
【０１３９】
Ｓ１１０２で、ＣＰＵ３１ｂは、ダーティデータの有無を判断する。ダーティデータがメモリ３１ｃ上のキャッシュメモリ領域に有る場合（Ｓ１１０２：Ｙｅｓ）、ＣＰＵ３１ｂは、Ｓ１１０３を実行する。ダーティデータが無い場合（Ｓ１１０２：Ｎｏ）、ＣＰＵ３１ｂは、デステージ処理を終了する。
【０１４０】
Ｓ１１０３で、ＣＰＵ３１ｂは、アロケーションテーブル５０で仮想ページのアドレス情報（仮想ボリューム番号、仮想ページ番号）をプールページのアドレス情報（プールボリューム番号、プールページ番号）に変換する。
【０１４１】
Ｓ１１０４で、ＣＰＵ３１ｂは、変換されたプールページに対応する記憶ドライブの所定領域に対しダーティデータを書き込むというデステージ動作を実行する。
【０１４２】
Ｓ１１０５で、ＣＰＵ３１ｂは、デステージ動作に要したＩ／Ｏ数を仮想ページ毎にカウントし、仮想ページＩ／Ｏ数管理テーブル８０を更新する。
【０１４３】
具体的には、仮想ボリューム＃１００の仮想ページ＃０の場合、対応するプールボリューム＃５０でプールページ＃０であることが、アロケーションテーブル５０で分かる。
【０１４４】
また、プールボリューム＃５０は、ドライブ種別がＳＳＤである物理ディスク６１で構成されていることがプールボリューム管理テーブル６０より分かる。
【０１４５】
そこで、ＣＰＵ３１ｂは、ＳＡＳ＿Ｉ／Ｆ３１ｅ経由で物理ディスクであるＳＳＤ６１の所定領域へダーティデータを書き込む。
【０１４６】
そして、ＣＰＵ３１ｂは、仮想ページＩ／Ｏ数管理テーブル８０で仮想ボリューム＃８０ａが“１００”で仮想ページ＃８０ｂが“０”である仮想ページ毎Ｉ／Ｏ数８０ｃの内容にデステージ動作に要したＩ／Ｏ数を加算する。
【０１４７】
なお、デステージ動作に要したＩ／Ｏ数はＳＡＳ＿Ｉ／Ｆ３１ｅで計測し、計測結果をＣＰＵ３１ｂが取得して仮想ページＩ／Ｏ数管理テーブル８０を更新する。
【０１４８】
また、デステージ先がＳＡＳタイプＨＤＤ３２ｂまたはＳＡＴＡタイプＨＤＤ３２ｃであれば、デステージ動作に要したＩ／Ｏ数はそれぞれ、ＳＡＳ＿Ｉ／Ｆ３１ｆまたはＳＡＴＡ＿Ｉ／Ｆ３１ｇで計測する。
【０１４９】
例えば、デステージ動作に要したＩ／Ｏ数が“５”であれば、ＣＰＵ３１ｂは、仮想ページ毎Ｉ／Ｏ数８０ｃの内容である“１０”に“５”を加算した結果の“１５”で、仮想ページ毎Ｉ／Ｏ数８０ｃの内容を更新する。
【０１５０】
＜リードＩ／Ｏ処理＞
図１２は、ホスト計算機からのリードＩ／Ｏ要求の処理を示すフローチャート図である。図１３は、リードＩ／Ｏ要求時での記憶領域のマッピング処理を示すフローチャート図である。
【０１５１】
図１２及び図１３の処理は、ホスト計算機３４からストレージ装置３０へのリードＩ／Ｏ要求の発生を契機にＣＰＵ３１ｂにより実行される。
【０１５２】
Ｓ１２０１で、ＣＰＵ３１ｂは、メモリ３１ｃ上のキャッシュメモリ領域にリードすべきデータが有るかを確認する。
【０１５３】
Ｓ１２０２で、ＣＰＵ３１ｂは、キャッシュメモリ領域にリードすべきデータが有るかを判断する。データが有る場合（Ｓ１２０２：Ｙｅｓ）、ＣＰＵ３１ｂは、Ｓ１２０３を実行する。データが無い場合（Ｓ１２０２：Ｎｏ）、ＣＰＵ３１ｂは、Ｓ１２０４の処理を実行する。
【０１５４】
Ｓ１２０３で、ＣＰＵ３１ｂは、メモリ３１ｃ上のキャッシュメモリ領域からリードすべきデータを読み出して、ホスト計算機３４に送信しリードＩ／Ｏ要求の処理を完了する。
【０１５５】
キャッシュメモリ領域にリードすべきデータが無い場合、Ｓ１２０４で、ＣＰＵ３１ｂは、図１３のマッピング制御（ＲＤ）の処理を実行する。
【０１５６】
Ｓ１３０１で、ＣＰＵ３１ｂは、リードアクセス領域の仮想ページに割り当てられているプールページが有るかをアロケーションテーブル５０で確認する。
【０１５７】
Ｓ１３０２で、ＣＰＵ３１ｂは、プールページが有るかを判断する。ＣＰＵ３１ｂは、リードアクセス領域の仮想ページに割り当てられているプールページが有る場合（Ｓ１３０２：Ｙｅｓ）、Ｓ１３０３を実行し、プールページが無い場合（Ｓ１３０２：Ｎｏ）、Ｓ１３０４を実行する。
【０１５８】
Ｓ１３０３で、ＣＰＵ３１ｂは、プールページからデータを読み込み、マッピング制御（ＲＤ）の処理を完了する。
【０１５９】
Ｓ１３０４で、ＣＰＵ３１ｂは、０データを読み込み、マッピング制御（ＲＤ）の処理を完了する。
【０１６０】
再び、図１２の処理を説明する。
【０１６１】
Ｓ１２０５で、ＣＰＵ３１ｂは、読み出したデータが０データ以外で有れば、読み出したデータをメモリ３１ｃ上のキャッシュメモリ領域に格納する。
【０１６２】
Ｓ１２０６で、ＣＰＵ３１ｂは、ステージング動作で要したＩ／Ｏ数をカウントし、カウントした値を用いて仮想ページ毎Ｉ／Ｏ数８０ｃの内容を更新する。この更新動作は、図１１のＳ１１０５で説明した更新動作と同じである。
【０１６３】
最後に、Ｓ１２０３で、ＣＰＵ３１ｂは、プールページから読み出したデータまたは０データをホスト計算機３４に送信し、ストレージ装置３０は、ホスト計算機３４からのリードＩ／Ｏ要求の処理を完了する。
【０１６４】
＜最適Ｔｉｅｒ決定＞
図１４は、最適Ｔｉｅｒの決定処理を示すフローチャート図である。
【０１６５】
Ｓ１４０１で、ＣＰＵ３１ｂは、仮想ページＩ／Ｏ数管理テーブル８０（図８）を元に仮想ボリュームＩ／Ｏ度数分布テーブル（図１５）を作成する。
【０１６６】
Ｓ１４０２で、ＣＰＵ３１ｂは、同一プールに属する仮想ボリューム毎のＩ／Ｏ度数分布を加算し、プールＩ／Ｏ度数分布テーブル（図１６）を作成する。そして、プールＩ／Ｏ度数分布テーブルの内容を、横軸をＩ／Ｏ数で、縦軸をページ数で表したプール毎度数分布グラフａ１（図１７（ａ））を作成する。作成したプール毎度数分布グラフａ１を変換し、横軸を記憶容量で、縦軸をＩＯＰＳで表したプール毎度数分布グラフｂ１（図１７（ｂ））を作成する。
【０１６７】
Ｓ１４０３で、ＣＰＵ３１ｂは、式１で表されるドライブ性能、またはＴｉｅｒ容量を満たすまで、仮想ページを上位Ｔｉｅｒに上詰めして配置する。ＣＰＵ３１ｂは、ドライブ性能を超過した仮想ページには、次のＴｉｅｒ（同一レベルないし下位レベル）を配置する。これは、ドライブ性能を超えたＴｉｅｒのプールページを仮想ページに配置しても、性能向上はできないためである。
【０１６８】
ドライブ性能＝ドライブの単位容量当たりの性能（式２）×プールボリューム容量×係数（６０％）…式１
ドライブの単位容量あたりの性能＝ドライブの限界性能÷ドライブ容量…式２ 
【０１６９】
なお、式１での係数（６０％）は、ドライブ性能が飽和したにも関わらず、ドライブ総容量が増加し続けること（追加されるドライブ台数の増加）を防止するためのものである。
【０１７０】
以上の処理の説明では、仮想化機能をストレージ装置３０に備えたインバンド方式について述べた。なお、前述のサーバベースのインバンド方式やスイッチベースのインバンド方式、更にアウトバンド方式で仮想化機能を用いて前述の処理を実行することもできる。
【０１７１】
＜仮想ボリュームＩ／Ｏ度数分布テーブル＞
図１５は、仮想ボリュームＩ／Ｏ度数分布テーブルの構成例を示す図である。仮想ボリュームＩ／Ｏ度数分布テーブル１５０は、ストレージ装置３０のメモリ３１ｃに格納され、適宜ＣＰＵ３１ｂで使用される。
【０１７２】
仮想ボリュームＩ／Ｏ度数分布テーブル１５０は、仮想ボリューム毎に発生するＩ／Ｏ数を管理するものである。
【０１７３】
仮想ボリュームＩ／Ｏ度数分布テーブル１５０は、仮想ボリューム＃１５０ａ、Ｉ／Ｏ数範囲１５０ｂ、ページ数１５０ｃ、Ｉ／Ｏ数範囲毎の累計Ｉ／Ｏ数１５０ｄから構成される。
【０１７４】
１つの仮想ボリューム（以下、図１５の説明において「対象仮想ボリューム」と言う）を例として、前述の情報要素は、下記の通りである。
【０１７５】
（１）「仮想ボリューム＃」は、対象仮想ボリュームを識別するための番号である。
【０１７６】
（２）「Ｉ／Ｏ数範囲」は、対象仮想ボリュームで発生したＩ／Ｏ数の範囲を示すものである。“Ｘ−Ｙ”という表記は、発生したＩ／ＯがＸ回からＹ回の範囲を表す。
【０１７７】
例えば、“１５−３１”は、発生したＩ／Ｏが１５回から３１回の範囲を表す。ちなみに、“０−０”は０回、“１−１”は１回を表す。ちなみに、Ｉ／Ｏ数の範囲ではなく１Ｉ／Ｏ単位で管理しても良い。
【０１７８】
（３）「ページ数」は、対象仮想ボリュームで、Ｉ／Ｏ数の範囲に一致したＩ／Ｏが発生した仮想ページの数である。
【０１７９】
例えば、仮想ボリューム＃０の仮想ページの内、発生したＩ／Ｏ数が“２”である仮想ページの数が６０ページ、Ｉ／Ｏ数が“３”である仮想ページの数が８１ページであると、仮想ボリューム＃０のＩ／Ｏ数範囲１５０ｂが“２−３”のページ数１５０ｃは、両者の合計１４１ページとなる。
【０１８０】
（４）「Ｉ／Ｏ数範囲毎の累計Ｉ／Ｏ数」は、対象仮想ボリュームでの発生したＩ／Ｏ数範囲毎に発生したＩ／Ｏ数を合計して算出した累計Ｉ／Ｏ数である。
【０１８１】
＜プールＩ／Ｏ度数分布テーブル＞
図１６は、プールＩ／Ｏ度数分布テーブルの構成例を示す図である。図１７は、プール毎の度数分布のイメージを示す図である。
【０１８２】
プールＩ／Ｏ度数分布テーブル１６０は、プール毎に発生するＩ／Ｏ数を管理するもので、ストレージ装置３０のメモリ３１ｃに格納され、適宜ＣＰＵ３１ｂで使用される。
【０１８３】
プールＩ／Ｏ度数分布テーブル１６０は、プール＃１６０ａ、Ｉ／Ｏ数範囲１６０ｂ、ページ数１６０ｃ、Ｉ／Ｏ数範囲毎の累計Ｉ／Ｏ数１６０ｄから構成される。
【０１８４】
１つのプール（以下、図１６の説明において「対象プール」と言う）を例として、前述の情報要素は、下記の通りである。
【０１８５】
（１）「プール＃」は、対象プールを識別するための番号である。
【０１８６】
（２）「Ｉ／Ｏ数範囲」は、対象プールで発生したＩ／Ｏ数の範囲を示すものである。
【０１８７】
（３）「ページ数」は、対象プールで発生したＩ／Ｏ数の範囲に一致したプールページ数の合計である。
【０１８８】
（４）「Ｉ／Ｏ数範囲毎の累計Ｉ／Ｏ数」は、対象プールでの発生したＩ／Ｏ数範囲毎に発生したＩ／Ｏ数を合計して算出した累計Ｉ／Ｏ数である。
【０１８９】
なお、上記（２）から（４）での表記方法及び表記内容は、図１５と同じである。また、各プールに属する仮想ボリューム毎のＩ／Ｏ度数分布を加算して、プールＩ／Ｏ度数分布テーブル１６０を作成することも可能である。
【０１９０】
＜プール毎度数分布グラフ＞
図１７は、プール毎の度数分布のイメージを示す図である。
【０１９１】
プールＩ／Ｏ度数分布テーブル１６０を用いてプール毎の度数分布グラフを作成する方法について図１７で説明する。説明の簡便のためプールの数は１つとする。
【０１９２】
まず、プールＩ／Ｏ度数分布テーブル１６０でＩ／Ｏ数範囲毎にＩ／Ｏ数と合計ページ数を表す棒グラフを作成する。そして、作成した棒グラフでＩ／Ｏ数が少ないものから多いものへと順に棒グラフを左から並べていく。
【０１９３】
例えば、図１７（ａ）で一番左側の棒グラフは、Ｉ／Ｏ数が“０”であるページを纏めたもので、そのページ数が１０００ページであるとする。２番目の棒グラフは、Ｉ／Ｏ数が“１”であるページを纏めたもので、そのページ数が８００ページであるとする。３番目はＩ／Ｏ数が“２”でそのページ数が７００・・・とする。このように、Ｉ／Ｏ数が少ない棒グラフから多い棒グラフへと並べていく。
【０１９４】
発生するＩ／Ｏ数が多くなるにつれて、そのＩ／Ｏ数でアクセスされるページ数は減少していく。そのため、負荷であるＩ／Ｏ数とページ数で表記されたプールＩ／Ｏ度数分布ａ（各棒グラフの頂点を結んだ曲線）は、符号１７０ａのようになる。
【０１９５】
また、負荷数と各Ｔｉｅｒに割り当てられた記憶ドライブ（物理ディスク）のドライブ容量により、各ページへ割当てるＴｉｅｒレベルが求められる。
【０１９６】
例えば、図１７（ａ）では、負荷が高いページ、すなわち、一番右側の棒グラフから１２番目の棒グラフまでのページはＴｉｅｒ０に配置すべきページとなる。同じく、１３番目の棒グラフから２１番目の棒グラフまでのページはＴｉｅｒ１に配置すべきページとなり、２２番目の棒グラフから２４番目の棒グラフ（一番左側の棒グラフから４番目の棒グラフまで）までのページはＴｉｅｒ２に配置すべきページとなる。
【０１９７】
次に、作成したプール毎度数分布グラフａ１（符号１７０ａ）を変換し、横軸を記憶容量で、縦軸をＩＯＰＳで表したプール毎度数分布グラフｂ１（図１７（ｂ））を作成する。
【０１９８】
以上の動作で、前述のプール度数分布グラフ（容量−ＩＯＰＳ）を作成できる。
【０１９９】
＜＜実施例１＞＞
＜＜概要＞＞
実施例１でのストレージ装置３０は、下記（１）及び（２）の機能を有するものとする。
（１）同一のプールに属する複数の仮想ボリュームをグループ化する機能
グループ化した仮想ボリューム群をＴＧ（Tiering  Group）と呼ぶ。
（２）ＴＧ毎に各Ｔｉｅｒでの使用量の制約条件を設定する機能
制約条件の設定項目はＴｉｅｒ０の最低使用量を保証するＴｉｅｒ０最低使用量、Ｔｉｅｒ０の最大使用量を規定するＴｉｅｒ０最大使用量、Ｔｉｅｒ２の最低使用量を規定するＴｉｅｒ２最低使用量とする。
【０２００】
なお、本実施例では、前述の３つの使用量への制約条件を設定した場合について説明する。しかしながら、これに限定されるものではなく、本発明では、Ｔｉｅｒ２での最大使用量、Ｔｉｅｒ１での最低使用量またはＴｉｅｒ１での最大使用量を設定し、後述のページ再配置処理を実行しレスポンス性能への影響を低減することもできる。
【０２０１】
また、Ｔｉｅｒ数を３つ（３階層）としているが、２階層でも４階層以上とすることもできる。
【０２０２】
まず、ユーザまたはシステム管理者は作成した複数の仮想ボリュームに対してＴＧ設定を行う。ＴＧ設定ではグループ化したい仮想ボリューム群を各ＴＧに登録し、ＴＧ毎に制約条件を設定する。
【０２０３】
グループ化は、仮想ボリュームの用途毎に行う。例えば、プールに属する仮想ボリュームが、ホスト計算機３４上で動作するデータベースアプリケーションに使用されているのであれば、索引部分であるＩＮＤＥＸ部に使用される仮想ボリューム群と実データを格納したＢＯＤＹ部に使用される仮想ボリューム群をそれぞれＴＧとする。
【０２０４】
これは、このデータベースアプリケーションでは、索引部分であるＩＮＤＥＸ部用の仮想ボリュームには高速な応答が要求され、一方、実データを格納したＢＯＤＹ部用の仮想ボリュームには高速な応答は要求されない。
【０２０５】
そのため、索引部分であるＩＮＤＥＸ部用の仮想ボリュームと実データを格納したＢＯＤＹ部用の仮想ボリュームとを同一のＴＧとするとアクセス性能が低下する。そこで、それぞれの仮想ボリュームを別のＴＧとしてきめ細かい階層の割当てを実行することにより、ストレージ装置での応答性能を向上させる。  
【０２０６】
グループ化したい仮想ボリューム群と制約条件であるＴｉｅｒ０最低使用量、Ｔｉｅｒ０最大使用量、Ｔｉｅｒ２最低使用量は、ユーザまたはシステム管理者により管理端末３３で設定される。
【０２０７】
次に、仮想ページＩ／Ｏ数管理テーブルから仮想ボリューム毎の度数分布を作成する。これを元に、同一ＴＧに属する仮想ボリュームの度数分布を加算することでＴＧ毎度数分布を作成する。
【０２０８】
作成した各ＴＧのＴＧ毎度数分布と事前に設定したＴｉｅｒ０最低使用量からＴｉｅｒ０へ移動させるべき仮想ページを決定する。
【０２０９】
同様に、各ＴＧのＴＧ毎度数分布とＴｉｅｒ２最低使用量からＴｉｅｒ２へ移動させるべき仮想ページを決定する。
【０２１０】
次に、同一プールに属するＴＧのＴＧ毎度数分布を加算してプール毎度数分布を作成し、移動済みページ以外のページを対象にＩ／Ｏ数が高い仮想ページから順にドライブ性能、またはＴｉｅｒ容量を満たすまで上位Ｔｉｅｒに上詰めで移動させる。また、ドライブ性能またはＴｉｅｒ容量を超過したら次のＴｉｅｒを選択し、同じく上詰めで移動させる。
【０２１１】
すべての仮想ページの移動が完了したら各ＴＧのＴｉｅｒ０使用量が事前に設定したＴｉｅｒ０最大使用量を超過していないかチェックし、超過している場合は当該ＴＧ以外のＴＧに属するＴｉｅｒ１に配置されている仮想ページとの入れ替えを行う。
【０２１２】
ここで、入れ替え対象となる仮想ページは当該ＴＧのＴｉｅｒ０に配置されている仮想ページの中でもっともＩ／Ｏ数が少ない仮想ページと、当該ＴＧ以外のＴｉｅｒ１に配置されている仮想ページの中でもっともＩ／Ｏ数が多い仮想ページとする。
【０２１３】
すべてのＴＧが、Ｔｉｅｒ０最大使用量の制約条件を満たした時点でページの再配置が完了する。
【０２１４】
このように、ＴＧ毎にＴｉｅｒの使用量の制約条件を設けることで、各ＴＧがＩ／Ｏ数に関係なく上位階層Ｔｉｅｒ０を使用できるため、他ＴＧの負荷変動の影響を低減できる。更に、各アプリケーションに使用される仮想ボリューム毎にＴＧ化すれば、アプリケーション間のレスポンス性能への影響を低減できる。
【０２１５】
＜＜ページ再配置処理＞＞
図１８は、実施例１でのＴＧ毎に設定された制約条件でのページ再配置処理を示すフローチャート図である。図１９は、実施例１でのＴＧ設定の処理を示すフローチャート図である。図２０は、実施例１でのＴＧ設定情報管理テーブルの構成例を示す図である。
【０２１６】
Ｓ１８０１で、ＣＰＵ３１ｂは、図１９に示すＴＧ設定の処理を実行する。
【０２１７】
＜ＴＧ設定／ＴＧ設定情報管理テーブル１＞
【０２１８】
図１９のＳ１９０１からＳ１９０４の処理で、図２０に示すＴＧ設定項目に対して所定情報を設定する。
【０２１９】
ＴＧ設定情報管理テーブル２００は、ＰＯＯＬ＃２００ａ、ＴＧ＃２００ｂ、各ＴＧに属する仮想ボリューム＃２００ｃ、制約条件（使用容量（ＧＢ））２００ｄから構成される。
【０２２０】
１つのＴＧ（以下、図２０の説明において「対象ＴＧ」と言う）を例として、前述の情報要素は、下記の通りである。
【０２２１】
（１）「ＰＯＯＬ＃」は、対象ＴＧが所属するプールを識別するための番号である。各プールには１つ以上のＴＧが所属する。
【０２２２】
（２）「ＴＧ＃」は、対象ＴＧを識別するグループ番号である。
【０２２３】
（３）「各ＴＧに属する仮想ボリューム＃」は、対象ＴＧに属する仮想ボリュームを識別するための情報である。１つのＴＧには１つ以上の仮想ボリュームが属する。
【０２２４】
（４）「制約条件」は、対象ＴＧに対し、Ｔｉｅｒ０最大使用量、Ｔｉｅｒ０最低使用量、Ｔｉｅｒ２最低使用量を設定し制約条件とするものである。各設定欄には容量（ＧＢ）の値が設定されるが、“未設定”は値を設定していない状態を表し、“−”は、容量を設定できないことを表している。
【０２２５】
例えば、ＰＯＯＬ＃２００ａが“０”でＴＧ＃２００ｂが“０”であるＰＯＯＬ＃０のＴＧ＃０には、各ＴＧに属する仮想ボリューム＃２００ｃから番号０／１／２の３つの仮想ボリュームが属していることが分かる。また、制約条件２００ｄからＴｉｅｒ０最大使用量が３０ＧＢとして設定され、Ｔｉｅｒ０最大使用量とＴｉｅｒ２最低使用量は未設定である。
【０２２６】
まず、Ｓ１９０１（図１９）で、管理端末３３のＣＰＵ３３ｂは、ユーザないしシステム管理者がディスプレイなどの出力装置３３ａに表示された設定画面でキーボードなどの入力装置３３ｅにより入力されたＴＧとして用途毎にグループ化する仮想ボリュームの情報を取得する。
【０２２７】
Ｓ１９０２で、ＣＰＵ３３ｂは、用途毎にグループ化する仮想ボリュームの情報と同様に、ユーザないしシステム管理者が設定したＴＧ毎のＴｉｅｒ０最大使用量の制約条件を取得する。
【０２２８】
Ｓ１９０３で、ＣＰＵ３３ｂは、用途毎にグループ化する仮想ボリュームの情報と同様に、ユーザないしシステム管理者が設定したＴＧ毎のＴｉｅｒ０最低使用量の制約条件を取得する。
【０２２９】
Ｓ１９０４で、ＣＰＵ３３ｂは、用途毎にグループ化する仮想ボリュームの情報と同様に、ユーザないしシステム管理者が設定したＴＧ毎のＴｉｅｒ２最低使用量の制約条件を取得する。
【０２３０】
Ｔｉｅｒ２最低使用量の制約条件の取得後に、ＣＰＵ３３ｂは、取得した各種情報をＴＧ設定情報管理テーブル２００として纏める。そして、ＣＰＵ３３ｂは、纏めたＴＧ設定情報管理テーブル２００をＮＩＣ３３ｄ経由でストレージ装置３０に送信する。
【０２３１】
ストレージ装置３０のＣＰＵ３１ｂは、管理端末３３より送信されたＴＧ設定情報管理テーブル２００をＮＩＣ３１ｄ経由で取得し、メモリ３１ｃ上の共有メモリ領域に格納する。
【０２３２】
＜ＴＧの新規設定＞
図２１は、実施例１での仮想ボリューム作成時のＴＧ設定画面の構成例を示す図である。
【０２３３】
ＴＧ設定画面２１０は、管理端末３３の出力装置３３ａで表示された画面を示しており、ＴＧ設定項目の入力領域２１１と入力情報の表示領域２１２を持つ。
【０２３４】
ＴＧ設定項目の入力領域２１１は、ＴＧ番号を入力する“ＴＧ  Number”、Ｔｉｅｒ０での最大使用量を入力する“Ｔｉｅｒ０  Max  Capacity”、Ｔｉｅｒ０での最低使用量を入力する“Ｔｉｅｒ０  Min  Capacity”、Ｔｉｅｒ２での最低使用量を入力する“Ｔｉｅｒ２  Min  Capacity”の４つの入力領域を持つ。
【０２３５】
また、入力情報の表示領域２１２は、上述の入力情報が表示されユーザまたはシステム管理者が入力情報を確認できる。例えば、ＴＧ＃３には、Ｔｉｅｒ０での最低使用量が２５ＧＢと設定され、Ｔｉｅｒ０での最大使用量とＴｉｅｒ２での最低使用量は設定されていないことが表示領域２１２より分かる。
【０２３６】
前述のように、ＴＧ番号や制約条件の取得及び取得情報の表示は、管理端末３３のＣＰＵ３３ｂが実行する。
【０２３７】
＜ＴＧの追加設定／ＴＧ設定内容の確認＞
図２２は、実施例１での仮想ボリューム作成後のＴＧ設定変更を行うＴＧ設定画面の構成例を示す図である。図２３は、実施例１でのＴＧ設定内容を確認するＴＧ設定確認画面の構成例を示す図である。
【０２３８】
仮想ボリューム作成後にＴＧの設定変更を実行する場合も、図２１と同様に設定画面２２０の入力領域に所定のＴＧ番号とＴｉｅｒ０での最大使用量などの制約条件を入力し設定する。
【０２３９】
また、ユーザまたはシステム管理者は、仮想ボリューム作成時または仮想ボリューム作成後に設定されたＴＧ番号や制約条件を、図２３の確認画面２３０の表示領域２３２で確認できる。
【０２４０】
例えば、ＴＧ＃１には、Ｔｉｅｒ０での最大使用量とＴｉｅｒ２での最低使用量がそれぞれ１０ＧＢと設定され、Ｔｉｅｒ０での最低使用量は設定されていないことが分かる。  なお、ＴＧ番号や制約条件は動的に設定、すなわち、ストレージ装置３０を稼働したままで、設定できる。
【０２４１】
再び、図１８の処理を説明する。
【０２４２】
Ｓ１８０２で、ＣＰＵ３１ｂは、仮想ページＩ／Ｏ数管理テーブル８０（図８）を元に、仮想ボリュームＩ／Ｏ度数分布テーブル１５０（図１５）を作成する。
【０２４３】
Ｓ１８０３で、ＣＰＵ３１ｂは、管理端末３３より取得したＴＧ設定情報管理テーブル２００を用いて、同一ＴＧの仮想ボリュームの度数分布を加算し、ＴＧ毎度数分布を作成する。例えば、ＰＯＯＬ＃０のＴＧ＃１は、仮想ボリューム＃３と仮想ボリューム＃４がグループ化されているので、ＣＰＵ３１ｂは、仮想ボリューム＃３の度数分布と仮想ボリューム＃４の度数分布を加算しＴＧ＃１の度数分布を作成する。
【０２４４】
具体的には、ＣＰＵ３１ｂは、仮想ボリュームＩ／Ｏ度数分布テーブル１５０の仮想ボリューム＃１５０ａが“３”である仮想ボリュームのページ数と、仮想ボリューム＃１５０ａが“４”である仮想ボリュームのページ数とを加算する。
【０２４５】
同じく、ＣＰＵ３１ｂは、仮想ボリューム＃３の累計Ｉ／Ｏ数と、仮想ボリューム＃４累計Ｉ／Ｏ数を加算する。ＣＰＵ３１ｂは、加算結果より、図１７（ｂ）のような度数分布、すなわちＴＧ度数分布を作成する。以上の処理を、ＣＰＵ３１ｂは、各ＰＯＯＬの各ＴＧに実行し、各ＴＧの度数分布を作成する。
【０２４６】
Ｓ１８０４で、ＣＰＵ３１ｂは、作成されたＴＧ度数分布とＴＧ設定情報管理テーブル２００に設定されたＴｉｅｒ０での最低使用量を用いて、Ｔｉｅｒ０最低使用量の制約条件処理（図２４）を実行する。
【０２４７】
＜Ｔｉｅｒ０における最低使用量の制約条件処理＞
図２４は、実施例１でのＴｉｅｒ０最低使用量の制約条件処理を示すフローチャート図である。
【０２４８】
このＴｉｅｒ０最低使用量の制約条件処理では、制約条件としてＴＧ０におけるＴｉｅｒ０の最低使用量が３０ＧＢに設定されているものとする。ＴＧ０の度数分布グラフ２４０の点線で囲われた部分２４２（容量３０ＧＢ）については、必ず、Ｔｉｅｒ０を割り当てるものである。 
【０２４９】
Ｓ２４０１で、ＣＰＵ３１ｂは、ＴＧの識別番号であるiを“０”とする。
【０２５０】
Ｓ２４０２で、ＣＰＵ３１ｂは、ＴＧｉ（ＴＧ０）にＴｉｅｒ０最低使用量の制約条件の設定が有るかを、ＴＧ設定情報管理テーブル２００で判断する。
【０２５１】
Ｔｉｅｒ０最低使用量の制約条件の設定が無い場合（Ｓ２４０２：Ｎｏ）は、ＣＰＵ３１ｂは、Ｓ２４０５を実行する。制約条件の設定が有る場合（Ｓ２４０２：Ｙｅｓ）は、ＣＰＵ３１ｂは、Ｓ２４０３を実行する。なお、ＴＧ設定情報管理テーブル２００からＴＧ０のＴｉｅｒ０最低使用量の制約条件が３０ＧＢと設定されているので、ＣＰＵ３１ｂは、Ｓ２４０３を実行する。
【０２５２】
Ｓ２４０３で、ＣＰＵ３１ｂは、ＴＧ０でのＴｉｅｒ０使用量が最低使用量に達するまで、ＴＧｉ（ＴＧ０）の仮想ボリューム（仮想ボリューム＃０／＃１／＃２）に所属する仮想ページの内、Ｉ／Ｏ数が高い仮想ページを仮想ページＩ／Ｏ数管理テーブル８０から検索し、検索した仮想ページを順に、Ｔｉｅｒ１ないしＴｉｅｒ２からＴｉｅｒ０へ移動する。
【０２５３】
Ｓ２４０４で、ＣＰＵ３１ｂは、Ｔｉｅｒ０へ移動した仮想ページを移動済みページとして、アロケーションテーブル５０や仮想ページＩ／Ｏ数管理テーブル８０などの管理テーブルに登録する。
【０２５４】
Ｓ２４０５で、ＣＰＵ３１ｂは、ＴＧの識別番号iに１を加算する。つまり、ＣＰＵ３１ｂは、ｉの値を“０”から“１”に更新する。
【０２５５】
Ｓ２４０６で、ＣＰＵ３１ｂは、ＴＧの識別番号ｉが最大ＴＧ番号を超えているかを判断する。例えば、ＰＯＯＬ＃０の場合、最大ＴＧ番号は“１”（ＴＧ０とＴＧ１がＰＯＯL＃０に存在）なので、ＴＧの識別番号ｉが最大ＴＧ番号を超えていない（Ｓ２４０６：Ｎｏ）。そこで、ＣＰＵ３１ｂは、再び、Ｓ２４０２以降の処理を繰り返す。
【０２５６】
Ｓ２４０２で、ＣＰＵ３１ｂは、ＴＧ１にＴｉｅｒ０最低使用量の制約条件の設定が有るかを、ＴＧ設定情報管理テーブル２００で判断する。ＴＧ設定情報管理テーブル２００からＴｉｅｒ０最低使用量の制約条件は“未設定”なので（Ｓ２４０２：Ｎｏ）、ＣＰＵ３１ｂは、Ｓ２４０５で、ＴＧの識別番号ｉに１を加算し処理対象ＴＧをＴＧ２とする。
【０２５７】
Ｓ２４０６で、再び、ＣＰＵ３１ｂは、ＴＧの識別番号ｉが最大ＴＧ番号を超えているかを判断する。なお、ＰＯＯＬ＃１ではＴＧ２が存在しないので、ＣＰＵ３１ｂは、Ｔｉｅｒ０最低使用量の制約条件処理を終了する。なお、Ｓ２４０１からＳ２４０６までの処理をＰＯＯＬ＃０以外のプールに対しても、ＣＰＵ３１ｂが実行してもよい。
【０２５８】
従来では、ＴＧ１のＩ／Ｏ数上昇により、ＴＧ０へのＴｉｅｒ０の割当てが無くなることがあり、ＴＧ０へのアクセス性能が低下していた。本発明では、以上のように、ＴＧ０のＩ／Ｏ数に関わらず、ＴＧ０はＴｉｅｒ０を最低３０ＧＢ分使用できる。そのため、ＴＧ１のＩ／Ｏ数上昇によるＴＧ０のアクセス性能への影響を低減できる。
【０２５９】
次に、Ｓ１８０５（図１８）で、ＣＰＵ３１ｂは、作成されたＴＧ度数分布とＴＧ設定情報管理テーブル２００に設定されたＴｉｅｒ２での最低使用量を用いて、Ｔｉｅｒ２最低使用量の制約条件処理（図２５）を実行する。
【０２６０】
＜Ｔｉｅｒ２における最低使用量の制約条件処理＞
図２５は、実施例１でのＴｉｅｒ２最低使用量の制約条件処理を示すフローチャート図である。
【０２６１】
このＴｉｅｒ２最低使用量の制約条件処理では、制約条件としてＴＧ１におけるＴｉｅｒ２の最低使用量が２０ＧＢに設定されているものとする。ＴＧ１の度数分布グラフ２４１の点線で囲われた部分２５２（容量２０ＧＢ）については、必ず、Ｔｉｅｒ２を割り当てるものである。 
【０２６２】
Ｓ２５０１で、ＣＰＵ３１ｂは、ＴＧの識別番号であるiを“０”とする。
【０２６３】
Ｓ２５０２で、ＣＰＵ３１ｂは、ＴＧｉ（ＴＧ０）にＴｉｅｒ２最低使用量の制約条件の設定が有るかを、ＴＧ設定情報管理テーブル２００で判断する。
【０２６４】
Ｔｉｅｒ２最低使用量の制約条件の設定が無い場合（Ｓ２５０２：Ｎｏ）は、ＣＰＵ３１ｂは、Ｓ２５０５を実行する。制約条件の設定が有る場合（Ｓ２５０２：Ｙｅｓ）は、ＣＰＵ３１ｂは、Ｓ２５０３を実行する。なお、ＴＧ設定情報管理テーブル２００からＴＧ０のＴｉｅｒ２最低使用量の制約条件は“未設定”であるので、ＣＰＵ３１ｂは、Ｓ２５０５を実行する。
【０２６５】
Ｓ２５０５で、ＣＰＵ３１ｂは、ＴＧの識別番号iに１を加算する。つまり、ＣＰＵ３１ｂは、ｉの値を“０”から“１”に更新する。
【０２６６】
Ｓ２５０６で、ＣＰＵ３１ｂは、ＴＧの識別番号ｉが最大ＴＧ番号を超えているかを判断する。ＰＯＯＬ＃０の場合、最大ＴＧ番号は“１”なので、ＣＰＵ３１ｂは、再び、Ｓ２５０２の処理を実行する。
【０２６７】
Ｓ２５０２で、ＣＰＵ３１ｂは、ＴＧ１にＴｉｅｒ２最低使用量の制約条件の設定が有るかを、ＴＧ設定情報管理テーブル２００で判断する。ＴＧ設定情報管理テーブル２００からＴＧ１にＴｉｅｒ２最低使用量の制約条件の設定（２０ＧＢ）が有る（Ｓ２５０２：Ｙｅｓ）ので、ＣＰＵ３１ｂは、Ｓ２５０３を実行する。
【０２６８】
Ｓ２５０３で、ＣＰＵ３１ｂは、ＴＧ１でのＴｉｅｒ２使用量が最低使用量の２０ＧＢに達するまで、ＴＧ１に所属するページの内、Ｉ／Ｏ数が低い仮想ページを仮想ページＩ／Ｏ数管理テーブル８０から検索し、順に検索した仮想ページをＴｉｅｒ０ないしＴｉｅｒ１からＴｉｅｒ２へ移動する。
【０２６９】
Ｓ２５０４で、ＣＰＵ３１ｂは、Ｔｉｅｒ２へ移動した仮想ページを移動済みページとして、アロケーションテーブル５０や仮想ページＩ／Ｏ数管理テーブル８０などの管理テーブルに登録する。
【０２７０】
Ｓ２５０５で、ＣＰＵ３１ｂは、ＴＧの識別番号iに１を加算し、処理対象のＴＧをＴＧ２とし、最大ＴＧ番号を超えているかを判断する。なお、ＰＯＯＬ＃０ではＴＧ２が存在しないので、ＣＰＵ３１ｂは、Ｔｉｅｒ２最低使用量の制約条件処理を終了する。なお、Ｓ２５０１からＳ２５０６までの処理をＰＯＯＬ＃０以外のプールに対しても、ＣＰＵ３１ｂが実行してもよい。  
【０２７１】
以上のように、ＴＧ１はＴｉｅｒ２を最低２０ＧＢ使用しなければならないので、ＴＧ１によるＴｉｅｒ０またはＴｉｅｒ１の専有及び使用量の制限を実現できる。この処理により、ＴＧ１のＩ／Ｏ数上昇によるＴＧ０のアクセス性能への影響を低減できる。
【０２７２】
再び、図１８の処理を説明する。
【０２７３】
Ｓ１８０６で、ＣＰＵ３１ｂは、 同一プールのＴＧ毎度数分布を加算し、プール毎度数分布を作成する。例えば、ＰＯＯＬ＃０では、ＴＧ０の度数分布２４０とＴＧ１の度数分布２４１を加算し、図１７（ｂ）に示すプール度数分布を作成する。その作成処理をＣＰＵ３１ｂは、各プールに対し実行する。
【０２７４】
Ｓ１８０７で、ＣＰＵ３１ｂは、移動済みページ以外の仮想ページを対象にドライブ性能、またはＴｉｅｒ容量を満たすまで、仮想ページを上位Ｔｉｅｒに上詰めして配置していき、ドライブ性能を超過したら、ＣＰＵ３１ｂは、次のＴｉｅｒ（同一レベルまたは下位レベル）に上詰めして配置する。
【０２７５】
次に、Ｓ１８０６（図１８）で、ＣＰＵ３１ｂは、作成されたＴＧ度数分布とＴＧ設定情報管理テーブル２００に設定されたＴｉｅｒ０での最低使用量を用いて、Ｔｉｅｒ０最大使用量の制約条件処理（図２６）を実行する。
【０２７６】
＜Ｔｉｅｒ０における最大使用量の制約条件処理＞
図２６は、実施例１でのＴｉｅｒ０最大使用量の制約条件処理を示すフローチャート図である。
【０２７７】
このＴｉｅｒ０最大使用量の制約条件処理では、制約条件としてＴＧ１におけるＴｉｅｒ１の最大使用量が３０ＧＢに設定されているものとする。ＴＧ１の度数分布グラフ２４１で、矢印２６０の範囲（点線囲み２６１と実線囲み２６２）の容量が５０ＧＢであるものとする。
【０２７８】
Ｓ１８０８で、ＣＰＵ３１ｂは、作成されたＴＧ度数分布とＴＧ設定情報管理テーブル２００に設定されたＴｉｅｒ０での最大使用量を用いて、Ｔｉｅｒ０最大使用量の制約条件処理（図２６）を実行する。
【０２７９】
Ｓ２６０１で、ＣＰＵ３１ｂは、ＴＧの識別番号であるiを“０”とする。
【０２８０】
Ｓ２６０２で、ＣＰＵ３１ｂは、ＴＧｉ（ＴＧ０）にＴｉｅｒ０最大使用量の制約条件の設定が有るかを、ＴＧ設定情報管理テーブル２００で判断する。
【０２８１】
Ｔｉｅｒ０最大使用量の制約条件の設定が無い場合（Ｓ２６０２：Ｎｏ）、ＣＰＵ３１ｂは、Ｓ２６０６を実行する。制約条件の設定が有る場合（Ｓ２６０２：Ｙｅｓ）は、ＣＰＵ３１ｂは、Ｓ２６０３を実行する。なお、ＴＧ設定情報管理テーブル２００からＴＧ０のＴｉｅｒ０最大使用量の制約条件は“未設定”であるので、ＣＰＵ３１ｂは、Ｓ２６０６を実行する。
【０２８２】
Ｓ２６０６で、ＣＰＵ３１ｂは、ＴＧの識別番号ｉに１を加算する。つまり、ＣＰＵ３１ｂは、ｉの値を“０”から“１”に更新する。
【０２８３】
Ｓ２６０７で、ＣＰＵ３１ｂは、ＴＧの識別番号ｉが最大ＴＧ番号を超えているかを判断する。  例えば、ＰＯＯＬ＃０の場合、最大ＴＧ番号は“１”なので、ＣＰＵ３１ｂは、再び、Ｓ２６０２の処理を実行する。
【０２８４】
Ｓ２６０２で、ＣＰＵ３１ｂは、ＴＧ１にＴｉｅｒ０最大使用量の制約条件の設定が有るかを、ＴＧ設定情報管理テーブル２００で判断する。ＴＧ設定情報管理テーブル２００からＴｉｅｒ０最大使用量の制約条件が“３０ＧＢ”と設定されている（Ｓ２６０２：Ｙｅｓ）ので、ＣＰＵ３１ｂは、Ｓ２６０３を実行する。
【０２８５】
Ｓ２６０３で、ＣＰＵ３１ｂは、 現在のＴＧｉ（ＴＧ１）のＴｉｅｒ０使用量が、制約条件であるＴｉｅｒ０最大使用量より大きいかを判断する。ＴＧ１のＴｉｅｒ０の使用量が制約条件“３０ＧＢ”より大きくない場合（Ｓ２６０３：Ｎｏ）、ＣＰＵ３１ｂはＳ２６０６を実行し、大きい場合（Ｓ２６０３：Ｙｅｓ）、Ｓ２６０４を実行する。
【０２８６】
図２６では、前述のように、ＴＧ１が既にＴｉｅｒ０を５０ＧＢ使用しているので、制約条件３０ＧＢを２０ＧＢ分超えている。そこで、ＣＰＵ３１ｂは、最大使用量を超えた容量２０ＧＢ（実線囲み２６２）の割当てをＴＧ１からＴＧ０に変更する。ちなみに、割当て変更前では、ＴＧ０はＴｉｅｒ０を１０ＧＢ（矢印２６５の容量）しか使用できない状態であった。
【０２８７】
Ｓ２６０４で、ＣＰＵ３１ｂは、ＴＧｉ（ＴＧ１）のＴｉｅｒ０に配置された仮想ページの内、最大使用量を超えた容量２０ＧＢ分（実線囲み２６２）だけＩ／Ｏ数の少ない仮想ページを仮想ページＩ／Ｏ数管理テーブル８０から検索し、順にＴｉｅｒ０からＴｉｅｒ１へ移動する。
【０２８８】
Ｓ２６０５で、ＣＰＵ３１ｂは、ＴＧｉ（ＴＧ１）以外のＴＧ（図２６では、ＴＧ０）のＴｉｅｒ１に属する仮想ページの内、Ｉ／Ｏ数の高い仮想ページを仮想ページＩ／Ｏ数管理テーブル８０から検索し、順に空いたＴｉｅｒ１からＴｉｅｒ０へ容量２０ＧＢ分（実線囲み２６６）移動する。
【０２８９】
そして、ＣＰＵ３１ｂは、Ｔｉｅｒ０またはＴｉｅｒ１へ移動した仮想ページを移動済みページとして、アロケーションテーブル５０や仮想ページＩ／Ｏ数管理テーブル８０などの管理テーブルに登録する。
【０２９０】
Ｓ２６０６で、ＣＰＵ３１ｂは、ＴＧの識別番号ｉに１を加算し、処理対象のＴＧをＴＧ２とし、Ｓ２６０７で最大ＴＧ番号を超えているかを判断する。なお、ＰＯＯＬ＃１ではＴＧ２が存在しないので、ＣＰＵ３１ｂは、Ｔｉｅｒ０最大使用量の制約条件処理を終了する。なお、Ｓ２６０１からＳ２６０７までの処理をＰＯＯＬ＃０以外のプールに対してもＣＰＵ３１ｂは実行できる。
【０２９１】
以上のように、ＴＧ１でのＴｉｅｒ０使用量を最大３０ＧＢと制約できるので、ＴＧ１によるＴｉｅｒ０全ての使用を防止できる。すなわち、Ｔｉｅｒ０の最大容量が６０ＧＢであれば、ＴＧ０もＴｉｅｒ０使用量を１０ＧＢから３０ＧＢへと増やすことが可能となる。そのため、ＴＧ１のＩ／Ｏ数上昇によるＴＧ０のアクセス性能への影響を低減できる。 
【０２９２】
例えば、プール０に属する仮想ボリュームが、ホスト計算機３４上で動作するデータベースアプリケーションに使用されているのであれば、索引部分であるＩＮＤＥＸ部に使用される仮想ボリューム群をＴＧ０、実データを格納したＢＯＤＹ部に使用される仮想ボリューム群をＴＧ１とする。
【０２９３】
高速アクセスが要求されるＩＮＤＥＸ部が使用しているＴＧ０には、前述のＴｉｅｒ０最低使用量の制約条件で、３０ＧＢは必ず使用できるので、高速なアクセス性能を実現できる。また、ＩＮＤＥＸ部程アクセス性能を要求されないＢＯＤＹ部が使用しているＴＧ１には、Ｔｉｅｒ０最大使用量の制約条件とＴｉｅｒ２最低使用量の制約条件により、ＴＧ０のレスポンス性能への影響を低減できる。
【０２９４】
＜＜実施例２＞＞
＜＜概要＞＞
実施例２でのストレージ装置３０は、下記（１）及び（２）の機能を有するものとする。
（１）同一のプールに属する複数の仮想ボリュームをグループ化する機能
（２）ＴＧ毎に重み付け条件を設定する機能
【０２９５】
重み付け条件の設定項目は”範囲”および”重み”である。”範囲”は各ＴＧの重み付けを行う範囲を指定する。”重み”は重み付けの倍率を指定する。例えばＴＧ０の容量が１００ＧＢで、範囲を３０ＧＢ、重みを２倍とした場合、ＴＧ０の全仮想ページのうちＩ／Ｏ数が高い３０ＧＢの範囲に重み付けを行う。また、重みが２倍なので、３０ＧＢの範囲に属する仮想ページのＩ／Ｏカウント数を２倍にする。
【０２９６】
作成した各ＴＧのＴＧ毎度数分布と事前に設定した重み付け条件の範囲条件に該当する仮想ページのＩ／Ｏ数に重み付けを行い、重み付け結果を元に仮想ページＩ／Ｏ数管理テーブルおよびＴＧ毎度数分布を更新する。
【０２９７】
次に、同一プールに属するＴＧの重み付け更新済みのＴＧ毎度数分布を加算してプール毎度数分布を作成する。
【０２９８】
Ｉ／Ｏ数が高い仮想ページから順に、ドライブ性能、またはＴｉｅｒ容量を満たすまで上位Ｔｉｅｒに上詰めで移動させる。ドライブ性能またはＴｉｅｒ容量を超過したら次のＴｉｅｒ（同一レベルまたは下位レベル）を選択し移動する。
【０２９９】
以上のようにＴＧ毎に重み付け条件を設けることで、各ＴＧの重み付けした範囲は上位レベルのＴｉｅｒ０に配置され易くなるため、他ＴＧの負荷増加による自ＴＧのレスポンス性能への影響を低減できる。
【０３００】
＜＜重み付けによるページ再配置処理＞＞
図２７は、実施例２でのＴＧ毎の重み付けによるページ再配置処理を示すフローチャート図である。図２８は、実施例２でのＴＧ設定の処理を示すフローチャート図である。
【０３０１】
Ｓ２７０１で、ＣＰＵ３１ｂは、図２８に示すＴＧ設定の処理を実行する。
【０３０２】
＜ＴＧ設定／ＴＧ設定情報管理テーブル２＞
図２８のＳ２８０１からＳ２８０３の処理で、図２９に示すＴＧ設定項目に対して所定情報を設定する。
【０３０３】
＜ＴＧ設定情報管理テーブル２＞
図２９は、実施例２でのＴＧ設定情報管理テーブルの構成例を示す図である。図３０は、実施例２でのＴＧ設定情報管理テーブルで、重み付け前後の構成例を示す図である。
【０３０４】
図２９のＴＧ設定情報管理テーブル２９０は、ＰＯＯＬ＃２９０ａ、ＴＧ＃２９０ｂ、各ＴＧに属する仮想ボリューム＃２９０ｃ、重み付け条件２９０ｄから構成される。ＰＯＯＬ＃２９０ａ、ＴＧ＃２９０ｂ、各ＴＧに属する仮想ボリューム＃２９０ｃは、図２０のＴＧ設定情報管理テーブル２００と同じである。
【０３０５】
また、重み付け条件２９０ｄは、前述のように、”範囲”と“重み”で構成される。“範囲”は各ＴＧの度数分布で重み付けを行う範囲（容量）を指定する。”重み”は各ＴＧの度数分布でＩ／Ｏ数（ＩＯＰＳ）への重み付けの倍率を指定する。
【０３０６】
例えば、ＰＯＯＬ＃０のＴＧ＃０の容量が１００ＧＢで、範囲を３０ＧＢ、重みを２倍とした場合、ＴＧ＃０の全仮想ページのうちＩ／Ｏ数が高い３０ＧＢ分の仮想ページのＩ／Ｏ数（ＩＯＰＳ）に対し重み付けを行うものである。本例では、重みが２倍なので、３０ＧＢの範囲に属する仮想ページのＩ／Ｏカウント数を２倍にする。
【０３０７】
具体的には、図３０（ａ）重み付け前の仮想ページＩ／Ｏ数管理テーブル３００において重み付けする仮想ページは、仮想ボリューム＃３００ａが“０”で仮想ページ＃３００ｂが“２”である仮想ボリューム＃０の仮想ページ＃２と、仮想ボリューム＃３００ａが“２”で仮想ページ＃３００ｂが“０”である仮想ボリューム＃２の仮想ページ＃０である。
【０３０８】
また、当該仮想ページの仮想ページ毎Ｉ／Ｏ数３００ｃは、符号３０１より“５１２”、符号３０２より”６３５“と分かる。
【０３０９】
本実施例では、前述の仮想ページに対し２倍の重み付けを実行する。すなわち、図３０（ｂ）重み付け後の仮想ページＩ／Ｏ数管理テーブル３１０において、符号３１１及び符号３１２に示すように、仮想ページ毎Ｉ／Ｏ数３００ｃをそれぞれ、“１０２４”、“１２７０”とするものである。
【０３１０】
まず、Ｓ２８０１（図２８）で、管理端末３３のＣＰＵ３３ｂは、ユーザないしシステム管理者がディスプレイなどの出力装置３３ａに表示された設定画面でキーボードなどの入力装置３３ｅにより入力されたＴＧとして用途毎にグループ化する仮想ボリュームの情報を取得する。
【０３１１】
Ｓ２８０２で、ＣＰＵ３３ｂは、用途毎にグループ化する仮想ボリュームの情報と同様に、ユーザないしシステム管理者が設定したＴＧ毎の重み付けする範囲条件を取得する。
【０３１２】
Ｓ２８０３で、ＣＰＵ３３ｂは、用途毎にグループ化する仮想ボリュームの情報と同様に、ユーザないしシステム管理者が設定したＴＧ毎の重み（倍率）条件を取得する。
【０３１３】
ＴＧ毎の重み（倍率）条件の取得後に、ＣＰＵ３３ｂは、取得した各種情報をＴＧ設定情報管理テーブル２９０として纏める。そして、ＣＰＵ３３ｂは、纏めたＴＧ設定情報管理テーブル２９０をＮＩＣ３３ｄ経由でストレージ装置３０に送信する。
【０３１４】
ストレージ装置３０のＣＰＵ３１ｂは、管理端末３３より送信されたＴＧ設定情報管理テーブル２９０をＮＩＣ３１ｄ経由で取得し、メモリ３１ｃ上の共有メモリ領域に格納する。
【０３１５】
＜ＴＧの新規設定＞
図３１は、実施例２での仮想ボリューム作成時のＴＧ設定画面の構成例を示す図である。実施例２のＴＧ設定画面３１０の特徴は、ＴＧ設定項目の入力領域３１１が、ＴＧ番号を入力する“ＴＧ Number”、範囲を入力する“Scope”、重みを入力する“Weighting  Coefficient”の入力領域で構成されている点である。また、表示領域３１２には、ＴＧ番号、入力された重み付け範囲と重みがＣＰＵ３３ｂにより表示される。
【０３１６】
＜ＴＧの追加設定／ＴＧ設定内容の確認＞
図３２は、実施例２での仮想ボリューム作成後のＴＧ設定変更を行うＴＧ設定画面の構成例を示す図である。図３３は、実施例２でのＴＧ設定内容を確認するＴＧ設定確認画面の構成例を示す図である。
【０３１７】
仮想ボリューム作成後にＴＧの設定変更を実行する場合も、図３１と同様に設定画面３２０の入力領域３２１に所定のＴＧ番号と重み付け条件を入力し設定する。
【０３１８】
また、ユーザまたはシステム管理者は、仮想ボリューム作成時または仮想ボリューム作成後に設定されたＴＧ番号や重み付け条件などの入力情報を、図３３の確認画面３３０の表示領域３３１で確認できる。なお、ＴＧ番号や重み付け条件は動的に、すなわち、ストレージ装置３０を稼働したままで、設定ないし変更することが可能である。
【０３１９】
再び、図２７の処理を説明する。
【０３２０】
Ｓ２７０２とＳ２７０３の処理は図１８のＳ１８０２とＳ１８０３の処理と同じであるので説明を省く。
【０３２１】
Ｓ２７０４で、ＣＰＵ３１は、重み付け条件に従い仮想Ｉ／Ｏページ毎Ｉ／Ｏ数に重み付けを実施し、ＴＧ毎度数分布を変更する。すなわち、ＴＧ０の度数分布２７０の範囲２７２（３０ＧＢ分）における仮想ページのＩＯＰＳに対し、２倍という重み２７３で重み付けし、ＴＧ０の度数分布２７０を度数分布２７０ａとする。
【０３２２】
これにより、範囲２７２におけるＴＧ０の度数分布でのＩＯＰＳが、ＴＧ１の度数分布でのＩＯＰＳより大きくなるので、ＴＧ０の仮想ページへ上位ＴｉｅｒであるＴｉｅｒ０が優先的に配置される。
【０３２３】
Ｓ２７０５で、ＣＰＵ３１ｂは、Ｓ１８０６と同様に同一プールのＴＧ毎度数分布を加算し、プール毎度数分布を作成する。また、Ｓ２７０６で、ＣＰＵ３１ｂは、ドライブ性能、またはＴｉｅｒ容量を満たすまで、仮想ページを上位Ｔｉｅｒに上詰めで配置する。ドライブ性能が超過したら、ＣＰＵ３１ｂは、次のＴｉｅｒを選択しそのＴｉｅｒに仮想ページを上詰めで配置する。
【０３２４】
以上のようにＴＧ毎に重み付け条件を設けることで、各ＴＧの重み付けした範囲は上位階層Ｔｉｅｒ０に配置され易くなるため、他ＴＧの負荷変動による自ＴＧのアクセス性能への影響を低減できる。
【０３２５】
＜＜実施例３＞＞
＜＜概要＞＞
実施例３でのストレージ装置３０は、下記（１）及び（２）の機能を有するものとする。
（１）同一のプールに属する複数の仮想ボリュームをグループ化する機能
（２）ＴＧ毎に目標平均レスポンスタイムを設定する機能
【０３２６】
ユーザは管理端末３３を使用しグループ化したい仮想ボリューム群を各ＴＧに登録し、ＴＧ毎に目標平均レスポンスタイムを設定し、設定された情報をストレージ装置３０は取得する。
【０３２７】
ストレージ装置３０は、取得情報と仮想ページＩ／Ｏ数管理テーブル８０などの管理情報よりプール毎度数分布を作成し、Ｉ／Ｏ数が高い仮想ページから順に、ドライブ性能、またはＴｉｅｒ容量を満たすまで上位Ｔｉｅｒに上詰めで移動させる。
【０３２８】
ドライブ性能またはＴｉｅｒ容量を超過したら次のＴｉｅｒ（同一レベル又は下位レベル）を選択し移動する。
【０３２９】
プールに属するすべての仮想ページの移動が完了したらＴＧ毎の平均レスポンスタイムを計算し、その計算値と事前に設定した目標平均レスポンスタイム（目標値）とを比較し、計算値が目標値を満たしているかを確認する。
【０３３０】
計算値が目標値を満たしていなかった場合、当該ＴＧ以外のＴＧの仮想ページでＴｉｅｒ０（上位Ｔｉｅｒ）に配置されている仮想ページからＴｉｅｒ１（下位Ｔｉｅｒ）へ移動しても、そのＴＧの平均レスポンスタイムの計算値が目標平均レスポンスタイム未満にならない仮想ページを検索する。
【０３３１】
そして、当該ＴＧのＴｉｅｒ１に属する仮想ページの中でもっともＩ／Ｏ数が高い仮想ページを前述のＴｉｅｒ０の仮想ページと入れ替える処理を実行する。以上の処理を全てのＴＧで計算した平均レスポンスタイムが目標平均レスポンスを満足するまで繰り返し処理を実行する。
【０３３２】
図３４を用いて、前述の動作を具体的に説明する。図３４は、実施例３での目標平均レスポンスタイム設定によるページ再配置／再−再配置処理の概念を説明する図である。
【０３３３】
図３４（ａ）は、各ＴＧ度数分布を元にページ再配置プランを決定しページの再配置を実施した状態である。なお、符号３４０はＴＧ０度数分布で、符号３４１はＴＧ１度数分布である。
【０３３４】
この状態では、ＴＧ１の仮想ページには符号３４２に示す容量のＴｉｅｒ０が配置され、一方、ＴＧ０の仮想ページには、Ｔｉｅｒ０は配置されない。
【０３３５】
この状態で、ＴＧ０とＴＧ１の平均レスポンスタイムを計算して、それを計算値とし、設定された目標平均レスポンスタイム（目標値）と計算値とを比較する。
【０３３６】
ＴＧ０では、平均レスポンスタイムの目標値より計算値の方が上回っている状態、すなわち、実際のレスポンスタイムが大きく、応答が遅い状態である。ＴＧ１では、平均レスポンスタイムの目標値より計算値の方が下回っている状態、すなわち、実際のレスポンスタイムが小さく、応答が速い状態である。
【０３３７】
そこで、（ａ）の結果を元にＴＧ１の性能余剰分に相当するＴｉｅｒ０をＴＧ０へ移動させてＴＧ０の目標平均レスポンスタイムを達成させる。
【０３３８】
つまり、図３４（ｂ）に示すように、Ｔｉｅｒ０に配置されているＴＧ１の仮想ページでＩ／Ｏ数が少ない仮想ページから、ＴＧ０の仮想ページに容量３４３（性能余剰分）だけ移動し符号３４４のように配置する。これをページ再−再配置処理と呼ぶ。
【０３３９】
このページ再−再配置処理により、ＴＧ１での平均レスポンスタイムの計算値は大きくなるが目標値を満足しつつ、ＴＧ０での平均レスポンスタイムの計算値を小さくでき目標値を満足させることができる。
【０３４０】
このように、ＴＧ毎に目標平均レスポンスタイムの設定機能を設けることで、他ＴＧの負荷変動に関係なく各ＴＧがユーザの要求するレスポンス性能を満たすことができる。また、ホスト計算機３４またはストレージ装置３０上で動作するアプリケーションで使用される仮想ボリューム毎にＴＧ化すれば、アプリケーション間でのアクセス性能への影響を低減できる。
【０３４１】
＜＜目標平均レスポンスタイム設定によるページ再配置処理＞＞
図３５は、実施例３での目標平均レスポンスタイム設定によるページ再配置の処理を示すフローチャート図である。図３６は、実施例３でのＴＧ設定の処理を示すフローチャート図である。
【０３４２】
Ｓ３５０１で、ＣＰＵ３１ｂは、図３６に示すＴＧ設定の処理を実行する。
【０３４３】
＜ＴＧ設定／ＴＧ設定情報管理テーブル３＞
図３６のＳ３６０１からＳ３６０２の処理で、図３７に示すＴＧ設定項目に対して所定情報を設定する。
【０３４４】
図３７は、実施例３でのＴＧ設定情報管理テーブルの構成例を示す図である。
【０３４５】
図３７のＴＧ設定情報管理テーブル３７０は、ＰＯＯＬ＃３７０ａ、ＴＧ＃３７０ｂ、各ＴＧに属する仮想ボリューム＃３７０ｃ、目標平均レスポンスタイム３７０ｄから構成される。ＰＯＯＬ＃３７０ａ、ＴＧ＃３７０ｂ、各ＴＧに属する仮想ボリューム＃３７０ｃは、図２０のＴＧ設定情報管理テーブル２００及び図２９のＴＧ設定情報管理テーブル２９０と同じである。
【０３４６】
目標平均レスポンスタイム３７０ｄは、各ＴＧで必要とされる平均レスポンスタイムの値を設定するものである。例えば、ＰＯＯＬ＃０のＴＧ＃０に５ｍｓｅｃを、ＴＧ＃１に８ｍｓｅｃを設定し、計算された平均レスポンスタイムと比較する。このようにプールのＴＧ全てに目標平均レスポンスタイムを設定してもよい。
【０３４７】
また、ＰＯＯＬ＃１のように１つのＴＧのみ値を設定するし、その他のＴＧには値を設定せず“未設定”のままとすることも可能である。
【０３４８】
まず、Ｓ３６０１（図３６）で、管理端末３３のＣＰＵ３３ｂは、ユーザないしシステム管理者がディスプレイなどの出力装置３３ａに表示された設定画面でキーボードなどの入力装置３３ｅにより入力されたＴＧとして用途毎にグループ化する仮想ボリュームの情報を取得する。
【０３４９】
Ｓ３６０２で、ＣＰＵ３３ｂは、用途毎にグループ化する仮想ボリュームの情報と同様に、ユーザないしシステム管理者が設定した目標平均レスポンスタイムを取得する。
【０３５０】
目標平均レスポンスタイムの取得後に、ＣＰＵ３３ｂは、取得した各種情報をＴＧ設定情報管理テーブル３７０として纏める。そして、ＣＰＵ３３ｂは、纏めたＴＧ設定情報管理テーブル３７０をＮＩＣ３３ｄ経由でストレージ装置３０に送信する。
【０３５１】
ストレージ装置３０のＣＰＵ３１ｂは、管理端末３３より送信されたＴＧ設定情報管理テーブル３７０をＮＩＣ３１ｄ経由で取得し、例えば、メモリ３１ｃ上の共有メモリ領域に格納する。
【０３５２】
＜ＴＧの新規設定＞
図３８は、実施例３での仮想ボリューム作成時のＴＧ設定画面の構成例を示す図である。ＴＧ設定画面３８０のＴＧ設定項目の入力領域３８１は、ＴＧ番号を入力する“ＴＧ  Number”と目標平均レスポンスタイムを入力する“Targeted  Response  Time”で構成されている点である。入力された情報は、ＣＰＵ３３ｂにより表示領域３８２に表示される。
【０３５３】
＜ＴＧの追加設定／ＴＧ設定内容の確認＞
図３９は、実施例３での仮想ボリューム作成後のＴＧ設定変更を行うＴＧ設定画面の構成例を示す図である。図４０は、実施例３でのＴＧ設定内容を確認するＴＧ設定確認画面の構成例を示す図である。
【０３５４】
仮想ボリューム作成後にＴＧの設定変更を実行する場合も図３８と同様、設定画面３９０の入力領域３９１に所定のＴＧ番号と目標平均レスポンスタイムをユーザまたはシステム管理者が入力し設定する。
【０３５５】
また、ユーザまたはシステム管理者は、仮想ボリューム作成時または仮想ボリューム作成後に設定されたＴＧ番号や目標平均レスポンスタイムを、図４０の確認画面４００の表示領域４０２で確認できる。なお、ＴＧ番号や目標平均レスポンスタイムは動的に設定や変更、すなわち、ストレージ装置３０を稼働したままでの設定や変更が可能である。
【０３５６】
再び、図３５の処理を説明する。
【０３５７】
Ｓ３５０２からＳ３５０６の処理は、実施例２のＳ２７０２からＳ２７０６の処理と同じであるので説明を省く。なお、図３５のフローチャートでは、実施例２での重み付け処理を実行し、ＴＧ１でのＩ／Ｏ数増加によるＴＧ０のアクセス性能への影響を低減した後、目標平均レスポンスタイムを用いたページ再−再配置処理で更に、影響を低減するものである。
【０３５８】
なお、Ｓ３５０４の重み付け処理を実行せず、Ｓ３５０７のページ再−再配置処理のみでもアクセス性能への影響を低減できる。
【０３５９】
Ｓ３５０７で、ＣＰＵ３１ｂは、図４１に示すＴＧ毎レスポンスタイムチェックとページ再-再配置処理を実行する。
【０３６０】
＜ページ再−再配置処理＞
図４１は、実施例３での目標平均レスポンスタイム設定によるページ再−再配置の処理を示すフローチャート図である。
【０３６１】
Ｓ４１０１で、ＣＰＵ３１ｂは、ＴＧの識別番号であるｉを０とする。
【０３６２】
Ｓ４１０２で、ＣＰＵ３１ｂは、ＴＧｉの全体の平均レスポンスタイムＲ_allを式３に用いて算出する。まず、ＴＧの識別番号ｉが“０”なのでＴＧ０の平均レスポンスタイムＲ_allを式３に用いて算出する。  
Ｒ_all＝（総和（Ｔj  ＊  Ｒj）（j＝０〜ｎ））/（総和（Ｔj ）（j＝０〜ｎ））・・・式３
１）ｊ：Ｔｉｅｒ＃の番号
２）Ｒj：Ｔｉｅｒ＃ｊの平均レスポンスタイム
３）Ｔj：Ｔｉｅｒ＃ｊへの合計Ｉ／Ｏ数
【０３６３】
Ｓ４１０３で、ＣＰＵ３１ｂは、式３で算出したＴＧ０の平均レスポンスタイム（計算値）と設定されたＴＧ０の目標平均レスポンスタイム（目標値）とを比較する。目標値より計算値が大きい場合（Ｓ４１０３：Ｙｅｓ）、ＴＧ０の仮想ページに高速な上位Ｔｉｅｒを配置する必要があるので、ＣＰＵ３１ｂは、Ｓ４１０４を実行する。
【０３６４】
ちなみに、ＴＧ０の仮想ページでＴｉｅｒ０に配置されているものはなく、Ｔｉｅｒ０は、全てＴＧ１の仮想ページに配置されている。
【０３６５】
目標値より計算値が大きくない場合（Ｓ４１０３：Ｎｏ）、すなわち、現状の平均レスポンスタイムが目標値を満足している場合、ＣＰＵ３１ｂは、次のＴＧを処理するため、Ｓ４１１１を実行する。
【０３６６】
Ｓ４１０４で、ＣＰＵ３１ｂは、Ｔｉｅｒ０の交換可能ページを検索する。すなわち、ＴＧ０以外のＴＧ（例えば、ＴＧ１）の仮想ページで、Ｔｉｅｒ０に配置されている仮想ページでＴｉｅｒ１へ移動しても、そのＴＧ（ＴＧ１）の平均レスポンスタイム（計算値）が目標平均レスポンスタイムを超えない仮想ページを検索する。
【０３６７】
Ｓ４１０５で、ＣＰＵ３１ｂは、Ｔｉｅｒ０に交換可能ページがあるかを判断する。Ｔｉｅｒ０に交換可能ページが有る場合（Ｓ４１０５：Ｙｅｓ）、ＣＰＵ３１ｂは、Ｓ４１０６を実行する。
【０３６８】
Ｔｉｅｒ０に交換可能ページが無い場合（Ｓ４１０５：Ｎｏ）、ＣＰＵ３１ｂは、Ｓ４１０７以降のＴｉｅｒ１での交換可能ページの検索と仮想ページの移動処理を実行する。
【０３６９】
Ｓ４１０６で、ＣＰＵ３１ｂは、ＴＧ０以外（例えば、ＴＧ１）のＴｉｅｒ０に属する仮想ページの内、Ｉ／Ｏ数が低い仮想ページをＴｉｅｒ１へ、ＴＧ０のＴｉｅｒ１に属する仮想ページの内、Ｉ／Ｏ数が高い仮想ページをＴｉｅｒ０へ移動する。
【０３７０】
ＣＰＵ３１ｂは、Ｓ４１０６の処理を完了した後、再びＳ４１０２からＳ４１０６の処理を、平均レスポンスタイムの目標値より計算値が下回るか、Ｔｉｅｒ０での交換可能ページが無くなるまで実行する。
【０３７１】
Ｓ４１０７で、ＴＧ０の目標平均レスポンスタイム（目標値）とＴｉｅｒ１での平均レスポンスタイムとを比較する。Ｔｉｅｒ１での平均レスポンスタイムが目標値より小さい場合（Ｓ４１０７：Ｙｅｓ）、ＣＰＵ３１ｂは、Ｓ４１０８を実行する。この場合、ＴＧ０のＴｉｅｒ２に配置されている仮想ページをＴｉｅｒ１に移動（配置）することでＴＧ０での平均レスポンスタイムを小さくできる。
【０３７２】
Ｔｉｅｒ１での平均レスポンスタイムがＴＧ０の目標平均レスポンスタイム（目標値）より小さくない場合（Ｓ４１０７：Ｎｏ）、ＣＰＵ３１ｂは、Ｓ４１１３を実行する。
【０３７３】
Ｓ４１０８で、ＣＰＵ３１ｂは、Ｔｉｅｒ１の交換可能ページを検索する。すなわち、ＴＧ０以外のＴＧ（例えば、ＴＧ１）の仮想ページで、Ｔｉｅｒ１に配置されている仮想ページからＴｉｅｒ２へ移動してもそのＴＧが目標レスポンスタイム未満にならない仮想ページを検索する
【０３７４】
Ｓ４１０９で、ＣＰＵ３１ｂは、Ｔｉｅｒ１に交換可能ページがあるかを判断する。Ｔｉｅｒ１に交換可能ページが有る場合（Ｓ４１０９：Ｙｅｓ）、ＣＰＵ３１ｂは、Ｓ４１１０を実行する。
【０３７５】
Ｓ４１１０で、ＣＰＵ３１ｂは、ＴＧ０以外（例えば、ＴＧ１）のＴｉｅｒ１に属する仮想ページの内、Ｉ／Ｏ数が低い仮想ページをＴｉｅｒ２へ、ＴＧ０のＴｉｅｒ２に属する仮想ページの内、Ｉ／Ｏ数が高い仮想ページをＴｉｅｒ１へ移動する。
【０３７６】
ＣＰＵ３１ｂは、Ｓ４１１０の処理を完了した後、再びＳ４１０２からＳ４１１０の処理を、平均レスポンスタイムで目標値より計算値が下回る条件を満足するか、Ｔｉｅｒ０またはＴｉｅｒ１での交換可能ページが無くなるまで実行する。
【０３７７】
Ｔｉｅｒ１に交換可能ページが無い場合（Ｓ４１０９：Ｎｏ）、ＣＰＵ３１ｂは、Ｓ４１１３を実行する。
【０３７８】
Ｓ４１１１で、ＣＰＵ３１ｂは、ＴＧの識別番号ｉに１を加算する。つまり、ＣＰＵ３１ｂは、ｉの値を“０”から“１”に更新する。
【０３７９】
Ｓ４１１２で、ＣＰＵ３１ｂは、ＴＧの識別番号ｉが最大ＴＧ番号を超えているかを判断する。例えば、ＴＧ設定情報管理テーブル３７０よりＰＯＯＬ＃０の最大ＴＧ番号は“１”なので、ＣＰＵ３１ｂは、再び、Ｓ４１０２以降の処理をＴＧ１で実行する。
【０３８０】
Ｓ４１１３で、ＣＰＵ３１ｂは、当該ＴＧでの平均レスポンスタイム（計算値）が目標平均レスポンスタイム（目標値）を満足することが不可能であると判断する。そのため、ＣＰＵ３１ｂは、ストレージ装置３０に実装されている記憶ドライブの構成では、要求レスポンス性能を満足できないことを示すＳＩＭ（Service  Information  Message）を出力してページ再−再配置処理を終了する。
【０３８１】
以上のように、ＴＧ毎に目標平均レスポンスタイム（目標値）を設定し、各ＴＧでの平均レスポンスタイムの算出と目標値との比較によるＴｉｅｒの変更により、各ＴＧの仮想ページに上位階層Ｔｉｅｒ０ないしＴｉｅｒ１へ平準的に配置され易くできる。そのため、他ＴＧの負荷変動によるＴＧのアクセス性能への影響を低減できる。また、ストレージ装置でのアクセス性能低下が原因となるアプリケーションソフトの処理遅延や停止なども防止できる。
【０３８２】
実施例３では、実施例２の重み付けでの処理を組み合わせた場合を説明したが、実施例１と組み合わせてもよい。また、実施例１から実施例３を全て組み合わせてもよい。
【０３８３】
なお、実施例１から実施例３の説明では、アプリケーションが使用する仮想ボリューム単位、仮想ボリュームを纏めたＴＧ単位、更にＴＧを纏めたプール単位を例として説明した。
【０３８４】
例えば、アプリケーション単位ではなく、ＯＳ単位やファイル単位で本発明を適用することができる。つまり、ＯＳ単位やファイル単位で使用する仮想ボリュームをＴＧとしてグループ化することで、前述の実施例１から実施例３でのページ再配置処理／ページ再−再配置処理を実行することで、ストレージ装置でのアクセス性能への影響を低減できる。また、ストレージ装置でのアクセス性能低下が原因となるアプリケーションソフトの処理遅延や停止なども防止できる。
【０３８５】
また、同様に、ホスト計算機単位、ホスト計算機上で動作する仮想マシン単位、記憶ドライブを２つ以上に区切ったパーティション単位でも本発明を適用できる。
【０３８６】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。    また、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【０３８７】
また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０３８８】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
【０３８９】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置いてもよい。
【０３９０】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０３９１】
３０  ストレージ装置
５０  アロケーションテーブル
６０  プールボリューム管理テーブル
７０  プールページ管理テーブル
８０  仮想ページＩ／Ｏ数管理テーブル
１５０  仮想ボリュームＩ／Ｏ度数分布テーブル
１６０  プールＩ／Ｏ度数分布テーブル
２００  ＴＧ設定情報管理テーブル
【図１】
0005944536.tif 000002
【図２】
0005944536.tif 000003
【図３】
0005944536.tif 000004
【図４】
0005944536.tif 000005
【図５】
0005944536.tif 000006
【図６】
0005944536.tif 000007
【図７】
0005944536.tif 000008
【図８】
0005944536.tif 000009
【図９】
0005944536.tif 000010
【図１０】
0005944536.tif 000011
【図１１】
0005944536.tif 000012
【図１２】
0005944536.tif 000013
【図１３】
0005944536.tif 000014
【図１４】
0005944536.tif 000015
【図１５】
0005944536.tif 000016
【図１６】
0005944536.tif 000017
【図１７】
0005944536.tif 000018
【図１８】
0005944536.tif 000019
【図１９】
0005944536.tif 000020
【図２０】
0005944536.tif 000021
【図２４】
0005944536.tif 000022
【図２５】
0005944536.tif 000023
【図２６】
0005944536.tif 000024
【図２７】
0005944536.tif 000025
【図２８】
0005944536.tif 000026
【図２９】
0005944536.tif 000027
【図３０】
0005944536.tif 000028
【図３４】
0005944536.tif 000029
【図３５】
0005944536.tif 000030
【図３６】
0005944536.tif 000031
【図３７】
0005944536.tif 000032
【図４１】
0005944536.tif 000033
【図２１】
0005944536.tif 000034
【図２２】
0005944536.tif 000035
【図２３】
0005944536.tif 000036
【図３１】
0005944536.tif 000037
【図３２】
0005944536.tif 000038
【図３３】
0005944536.tif 000039
【図３８】
0005944536.tif 000040
【図３９】
0005944536.tif 000041
【図４０】
0005944536.tif 000042