(57)【特許請求の範囲】
【請求項１】
一以上のホストに接続されるストレージシステムであって、
複数のプールの基になりＩ／Ｏ性能が異なる複数種類の物理記憶デバイス群と、
前記複数種類の物理記憶デバイス群及び前記一以上のホストに接続され第１及び第２の仮想ボリュームを含む複数の仮想ボリュームを前記一以上のホストに提供する記憶制御装置と
を備え、
各種物理記憶デバイス群は、一以上の物理記憶デバイスで構成されており、
各プールが、複数種類の実ページ群を有し、実ページ群の種類は、その実ページ群の基になっている物理記憶デバイス群の属性に基づいており、各実ページ群が、複数の実ページを有し、各実ページは、実体的な記憶領域であり、
各仮想ボリュームは、複数の仮想ページで構成されている仮想的な論理ボリュームであり、各仮想ページは、仮想的な記憶領域であり、
前記記憶制御装置が、前記ホストからＩ／Ｏ（Input/Output）コマンドを受信し、前記Ｉ／ＯコマンドからＩ／Ｏ先の仮想ボリューム及び仮想ページを特定し、特定した仮想ページに割り当てられた実ページに対してデータのＩ／Ｏを行い、仮想ページ毎のＩ／Ｏ頻度を表す情報であるモニタ情報を前記Ｉ／Ｏ先の仮想ページについて更新し、
前記記憶制御装置が、実ページ群の種類毎に設定されたＩ／Ｏ頻度レンジを表す情報を含んだ情報である実ページ群管理情報と、前記モニタ情報とを基に、移行処理を行い、前記移行処理では、移行元の実ページが割り当てられている仮想ページのＩ／Ｏ頻度が収まるＩ／Ｏ頻度レンジに対応した種類の実ページ群におけるフリーの実ページを移行先の実ページとし、前記移行元の実ページ内のデータを前記移行先の実ページに移行し、前記移行元の実ページが割り当てられている仮想ページに、前記移行元の実ページに代えて前記移行先の実ページを割り当て、
前記記憶制御装置が、前記第１の仮想ボリュームについて、移行元の実ページと同一のプールから移行先の実ページを選択するページ単位移行処理を実行し、前記第２の仮想ボリュームについて、移行元の実ページと異なるプールから移行先の実ページを選択するボリューム単位移行処理を実行し、
前記記憶制御装置が、前記第２の仮想ボリュームに割り当てられている２以上の実ページを有する１以上の実ページ群の種類にそれぞれ対応し前記実ページ群管理情報を基に特定される１以上のＩ／Ｏ頻度レンジと、前記１以上の実ページ群の各々について前記第２の仮想ボリュームに割り当てられている実ページの数とに基づいて、前記第２の仮想ボリュームについてＩ／Ｏ頻度の閾値レンジを算出し、
前記モニタ情報を基に特定される前記第２の仮想ボリュームのＩ／Ｏ頻度が、前記算出された閾値レンジに収まっていない場合、前記記憶制御装置が、前記第２の仮想ボリュームのＩ／Ｏ頻度が収まる移行後の閾値レンジが得られるように前記ボリューム単位移行処理を行い、そのボリューム単位移行処理では、前記第２の仮想ボリュームに割り当てられている全ての実ページ内のデータをそのデータが存在するプールと異なるプールに移行し、
前記移行後の閾値レンジは、前記第２の仮想ボリュームに割り当てられた全ての移行先実ページを有する一以上の実ページ群の種類に対応したＩ／Ｏ閾値レンジと、それら一以上の実ページ群の各々における、前記第２の仮想ボリュームに割り当てられた移行先実ページの数とに基づいて得られる閾値レンジである、
ストレージシステム。
【請求項２】
請求項１記載のストレージシステムであって、
前記記憶制御装置は、前記Ｉ／Ｏ先の仮想ページに割り当てられる実ページに対してＩ／Ｏを行う場合、前記モニタ情報における、前記Ｉ／Ｏ先の仮想ページに対応したＩ／Ｏ頻度を更新し、一方、前記Ｉ／Ｏ先の仮想ページに割り当てられる実ページに対してＩ／Ｏを行わない場合、前記モニタ情報における、前記Ｉ／Ｏ先の仮想ページに対応したＩ／Ｏ頻度を更新しない、
ストレージシステム。
【請求項３】
請求項１記載のストレージシステムであって、
前記記憶制御装置は、前記モニタ情報として、状態がアクティブのモニタ情報と、状態がスタンバイのモニタ情報とを記憶し、
前記記憶制御装置は、前記アクティブのモニタ情報におけるＩ／Ｏ頻度を更新し、
前記記憶制御装置は、前記移行処理において、前記アクティブのモニタ情報を基に、割り当てられている実ページを含んだ実ページ群に対応するＩ／Ｏ頻度レンジに収まっていないＩ／Ｏ頻度の仮想ページを特定し、且つ、前記スタンバイのモニタ情報の状態をスタンバイからアクティブに変更し、その後、仮想ページが特定されるＩ／Ｏコマンドに従って実ページに対してＩ／Ｏを行う場合、状態がアクティブに変更されたモニタ情報における、その特定された仮想ページのＩ／Ｏ頻度を更新する、
ストレージシステム。
【請求項４】
請求項３記載のストレージシステムであって、
前記記憶制御装置は、前記アクティブのモニタ情報を用いて、Ｉ／Ｏ頻度と仮想ページ数との関係を表す情報である関係情報を作成し、作成した関係情報が表示されるよう前記関係情報を出力し、移行開始の指示を受けたときに、前記移行処理を開始する、
ストレージシステム。
【請求項５】
請求項１記載のストレージシステムであって、
実ページ群毎に、構成する実ページの数に対する割当て済の実ページの割合である使用割合の割合閾値が関連付けられており、
前記記憶制御装置は、使用割合が割合閾値を実ページ群がある場合に、前記移行処理を開始する、
ストレージシステム。
【請求項６】
請求項１記載のストレージシステムであって、
前記記憶制御装置は、前記ホストからのライトコマンドから特定されたライト先の仮想ページには、必ず、そのライト先の仮想ページを含んだ仮想ボリュームに関連付けられているプールが有する複数種類の実ページ群のうちの、Ｉ／Ｏ性能が最大の実ページ群から実ページを割り当てる、
ストレージシステム。
【請求項７】
請求項１記載のストレージシステムであって、
前記記憶制御装置は、前記仮想ボリュームに割り当てられている全ての実ページのうちの所定割合以上の実ページが或る種の実ページ群に存在する場合、前記仮想ボリュームに割り当てられている全ての実ページのうち、前記或る種の実ページ群以外の種類の実ページ群内の実ページ内のデータを、前記或る種の実ページ群内の実ページに移行する、
ストレージシステム。
【請求項８】
記憶資源と、
複数のプールの基になりＩ／Ｏ性能が異なる複数種類の物理記憶デバイス群と一以上のホストとに接続され第１及び第２の仮想ボリュームを含む複数の仮想ボリュームを前記一以上のホストに提供するコントローラと
を備え、
各種物理記憶デバイス群は、一以上の物理記憶デバイスで構成されており、
各プールが、複数種類の実ページ群を有し、実ページ群の種類は、その実ページ群の基になっている物理記憶デバイス群の属性に基づいており、各実ページ群が、複数の実ページを有し、各実ページは、実体的な記憶領域であり、
各仮想ボリュームは、複数の仮想ページで構成されている仮想的な論理ボリュームであり、各仮想ページは、仮想的な記憶領域であり、
前記記憶資源が、仮想ページ毎のＩ／Ｏ（Input/Output）頻度を表す情報であるモニタ情報と、実ページ群の種類毎に設定されたＩ／Ｏ頻度レンジを表す情報を含んだ情報である実ページ群管理情報とを記憶し、
前記コントローラが、前記ホストからＩ／Ｏコマンドを受信し、前記Ｉ／ＯコマンドからＩ／Ｏ先の仮想ボリューム及び仮想ページを特定し、特定した仮想ページに割り当てられた実ページに対してデータのＩ／Ｏを行い、前記モニタ情報を前記Ｉ／Ｏ先の仮想ページについて更新し、
前記コントローラが、前記実ページ群管理情報と前記モニタ情報とを基に、移行処理を行い、前記移行処理では、移行元の実ページが割り当てられている仮想ページのＩ／Ｏ頻度が収まるＩ／Ｏ頻度レンジに対応した種類の実ページ群におけるフリーの実ページを移行先の実ページとし、前記移行元の実ページ内のデータを前記移行先の実ページに移行し、前記移行元の実ページが割り当てられている仮想ページに、前記移行元の実ページに代えて前記移行先の実ページを割り当て、
前記コントローラが、前記第１の仮想ボリュームについて、移行元の実ページと同一のプールから移行先の実ページを選択するページ単位移行処理を実行し、前記第２の仮想ボリュームについて、移行元の実ページと異なるプールから移行先の実ページを選択するボリューム単位移行処理を実行し、
前記コントローラが、前記第２の仮想ボリュームに割り当てられている２以上の実ページを有する１以上の実ページ群の種類にそれぞれ対応し前記実ページ群管理情報を基に特定される１以上のＩ／Ｏ頻度レンジと、前記１以上の実ページ群の各々について前記第２の仮想ボリュームに割り当てられている実ページの数とに基づいて、前記第２の仮想ボリュームについてＩ／Ｏ頻度の閾値レンジを算出し、
前記第２の仮想ボリュームの各仮想ページのＩ／Ｏ頻度を基に特定される、前記第２の仮想ボリュームのＩ／Ｏ頻度が、前記算出された閾値レンジに収まっていない場合、前記コントローラが、前記第２の仮想ボリュームのＩ／Ｏ頻度が収まる移行後の閾値レンジが得られるように前記ボリューム単位移行処理を行い、そのボリューム単位移行処理では、前記第２の仮想ボリュームに割り当てられている全ての実ページ内のデータをそのデータが存在するプールと異なるプールに移行し、
前記移行後の閾値レンジは、前記第２の仮想ボリュームに割り当てられた全ての移行先実ページを有する一以上の実ページ群の種類に対応したＩ／Ｏ閾値レンジと、それら一以上の実ページ群の各々における、前記第２の仮想ボリュームに割り当てられた移行先実ページの数とに基づいて得られる閾値レンジである、
記憶制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Thin Provisioning（Dynamic Provisioningとも呼ばれる）が適用される記憶制御に関する。
【背景技術】
【０００２】
データ移行技術が知られている。データ移行は、一般に、ボリューム単位で行われる。例えば、特許文献１によれば、第１の論理ボリュームに格納されている全てのデータが、第１の論理ボリュームから第２の論理ボリュームに移行される。【０００３】
また、ストレージ階層化技術も知られている。例えば、特許文献２によれば、複数のストレージシステムが有する複数の論理ボリュームが、それぞれ、複数のティアのうちのいずれかのティアに分類され、或るティアに属する論理ボリュームが、別のティアに移行される。複数のティアには、例えば、高信頼性のティア、低コストのティアなどが含まれる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−３０２０７７号公報
【特許文献２】特開２００８−０４７１５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、Thin Provisioningと呼ばれる（Dynamic Provisioningとも呼ばれる）技術が知られている。Thin Provisioningによれば、複数の仮想的な記憶領域（仮想ページ）で構成された仮想的な論理ボリューム（仮想ボリューム）と、複数の実体的な記憶領域（実ページ）とが用意される。仮想ページに対するライトが行われた場合に、その仮想ページに実ページが割り当てられ、割り当てられた実ページに、ライト対象のデータが書き込まれる。【０００６】
上述したデータ移行技術及びストレージ階層化技術がThin Provisioningに適用されたとする。また、第１のティアに第１の仮想ボリュームが属し第２のティアに第２の仮想ボリュームが属しているとする。この場合、第１のティアに属する第１の仮想ボリュームから第２のティアに属する第２の仮想ボリュームに全てのデータを移行することができる。【０００７】
この技術によれば、第１の仮想ボリューム内の全てのデータが、第１のティアから第２のティアに移行されるが、全てのデータが必ずしも第２のティアに存在することが好ましいとは限らない。【０００８】
そこで、本発明の目的は、Thin Provisioningに従う仮想ボリューム内のデータの配置を適切にすることにある。
【課題を解決するための手段】
【０００９】
複数の記憶デバイスから提供される複数の記憶領域を記憶領域の属性に従って分類された複数の記憶領域グループを管理する。論理ボリューム内の複数のアドレスに含まれる少なくとも１つのアドレスへのライト要求に応じて前記複数の記憶領域に含まれる少なくとも１つの記憶領域が割り当てられる前記論理ボリュームの複数を提供する。前記論理ボリューム内の前記少なくとも１つのアドレスのアクセス状況に応じて、前記ライト要求によって前記少なくとも１つのアドレスにライトされているデータを、前記複数の記憶領域グループの１つに含まれる前記少なくとも１つの記憶領域から前記複数の記憶領域グループに含まれる他の記憶領域グループ内の少なくともひとつの記憶領域へ移行する。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施例１の概要を示す。
【図２】ストレージシステム１０３の構成を示す。
【図３】ストレージシステム１０３における各種記憶領域の関係を示す。
【図４】ＣＭＰＫ１１９が記憶する情報及びコンピュータプログラムを示す。
【図５】ティア定義テーブル４０１の構成を示す。
【図６】ティア管理テーブル４０２の構成を示す。
【図７】プール管理テーブル４０３の構成を示す。
【図８】ＶＶＯＬ管理テーブル４０４の構成を示す。
【図９】ＰＶＯＬ管理テーブル４０５の構成を示す。
【図１０】アロケーションテーブル４０７の構成を示す。
【図１１】実ページ管理テーブル４０８の構成を示す。
【図１２】モニタテーブル４０９の構成を示す。
【図１３】度数分布テーブル４１０の構成を示す。
【図１４】移行ページテーブル４１１の構成を示す。
【図１５】移行定義テーブル４１２の構成を示す。
【図１６】プール作成処理のフローチャートを示す。
【図１７】プール定義ＧＵＩ１７００を示す。
【図１８】ＶＶＯＬ作成処理のフローを示す。
【図１９】ＶＶＯＬ作成ＧＵＩ１９００を示す。
【図２０】移行定義処理のフローを示す。
【図２１】移行定義ＧＵＩ２１００を示す。
【図２２】情報表示処理のフローを示す。
【図２３】度数分布ＧＵＩ２３００を示す。
【図２４】ライト処理（キャッシュメモリへのライト）のフローを示す。
【図２５】デステージ処理のフローを示す。
【図２６】リード処理のフローを示す。
【図２７】Ｉ／Ｏ頻度のモニタと再配置との関係の概要を示す。
【図２８】再配置処理のフローを示す。
【図２９】ＶＯＬ単位移行指示ＧＵＩ２９００を示す。
【図３０】ティア維持移行処理の概要を示す。
【図３１】ティア維持移行処理のフローを示す。
【図３２】ティア非維持移行処理の概要を示す。
【図３３】ティア非維持移行処理のフローを示す。
【図３４】図２８のＳ２８０８での移行ページテーブル作成処理のフローを示す。
【図３５】ページ単位の移行処理の概要を示す。
【図３６】ページ単位の移行処理のフローを示す。
【図３７】ティア閾値の変更処理のフローを示す。
【図３８】閾値オーバー対処処理のフローを示す。
【図３９】データ要素の集約処理の概要を示す。
【発明を実施するための形態】
【００１１】
以下、本発明の後述する複数の実施例に基づく観点を述べる。
【００１２】
＜観点１＞
複数の記憶デバイスから提供される複数の記憶領域を記憶領域の属性に従って分類された複数の記憶領域グループを管理し、
論理ボリューム内の複数のアドレスに含まれる少なくとも１つのアドレスへのライト要求に応じて前記複数の記憶領域に含まれる少なくとも１つの記憶領域が割り当てられる前記論理ボリュームの複数を提供し、
前記論理ボリューム内の前記少なくとも１つのアドレスのアクセス状況に応じて、前記ライト要求によって前記少なくとも１つのアドレスにライトされているデータを、前記複数の記憶領域グループの１つに含まれる前記少なくとも１つの記憶領域から前記複数の記憶領域グループに含まれる他の記憶領域グループ内の少なくともひとつの記憶領域へ移行する、ことを特徴とするストレージシステムの制御方法。
【００１３】
＜観点２＞
観点１に従う方法であって、前記ストレージシステムは、前記論理ボリューム単位のデータ移行も実施しうるものである、ことを特徴とするストレージシステムの制御方法。
【００１４】
＜観点３＞
一以上のホストに接続されるストレージシステムであって、複数種類の物理記憶デバイス群と、記憶制御装置とを備える。前記記憶制御装置が、記憶資源と、前記複数種類の物理記憶デバイス群、前記記憶資源及び前記ホストに接続されるコントローラとを有する。物理記憶デバイス群は、一以上の物理記憶デバイスで構成されている。前記複数種類の物理記憶デバイス群が、複数種類の実ページ群の基になっている。実ページ群の種類は、その実ページ群の基になっている物理記憶デバイス群の属性に基づいている。実ページ群が、複数の実ページを有する。前記コントローラが、一以上の仮想ボリュームを前記一以上のホストに提供する。前記仮想ボリュームは、複数の仮想ページで構成されている仮想的な論理ボリュームである。前記仮想ページは、仮想的な記憶領域である。前記実ページは、実体的な記憶領域である。前記記憶資源が、どの仮想ページにどの実ページが割り当てられているかを表す情報である割当て情報を記憶する（テーブル形式又はキュー形式など、情報の形式は何でもよい）。前記コントローラが、前記ホストからライトコマンドを受信し、前記ライトコマンドからライト先の仮想ページを特定し、特定した仮想ページにフリーの実ページを割り当てるよう前記割当て情報を更新し、割り当てた実ページにライト対象のデータを格納する。前記実ページは、実体的な記憶領域であり、実ページに格納されるデータはその実ページの基になっている物理記憶デバイスに記憶さる。前記コントローラが、以下の（Ａ）及び（Ｂ）の処理を含んだ処理である移行処理を行う、
（Ａ）第１種の実ページ群内の第１の実ページに格納されているデータを、第２種の実ページ群内の第２の実ページに移行する、
（Ｂ）前記第１の実ページの割当て先の仮想ページである第１の仮想ページに前記第１の実ページに代えて前記第２の実ページを割り当てるよう前記割当て情報を更新する。コントローラは、例えば、少なくとも一つのプロセッサを有してよい。記憶資源は、例えば、メモリであって良い。ホストは、計算機であっても良いし、別のストレージシステム又は別の記憶制御装置であっても良い。
【００１５】
これにより、仮想ボリューム内のデータをページ単位で再配置することができる。
【００１６】
＜観点４＞
観点３に従うストレージシステムにおいて、前記記憶資源が、仮想ページ毎のＩ／Ｏ（Input/Output）頻度を表す情報であるモニタ情報を記憶する。前記コントローラが、仮想ページ又はその仮想ページに割り当てられる実ページに対するＩ／Ｏに応じて、前記モニタ情報における、その仮想ページのＩ／Ｏ頻度を更新する。前記第１の仮想ページは、前記モニタ情報から特定されたＩ／Ｏ頻度が所定の条件に適合していない仮想ページである。
【００１７】
これにより、仮想ページのＩ／Ｏ頻度に応じて、データ再配置を行うことができる。
【００１８】
＜観点５＞
観点４に従うストレージシステムにおいて、前記記憶資源が、実ページ群の種類毎に設定されたＩ／Ｏ頻度レンジを表す情報を含んだ情報である実ページ群管理情報を記憶する。前記所定の条件とは、前記第１種の実ページ群のＩ／Ｏ頻度レンジに収まることである。前記第２種の実ページ群は、Ｉ／Ｏ頻度レンジが前記第１の仮想ページのＩ／Ｏ頻度に収まっている実ページ群である。
【００１９】
これにより、データを、そのデータを格納する実ページが割り当てられている仮想ページのＩ／Ｏ頻度が収まるＩ／Ｏ頻度レンジに対応した種類の実ページ群に配置することができる。
【００２０】
＜観点６＞
観点３乃至５のうちのいずれかの観点のストレージシステムにおいて、前記コントローラは、Ｉ／Ｏコマンドを前記ホストから受信し、そのＩ／ＯコマンドからＩ／Ｏ先の仮想ページを特定する。前記コントローラは、前記Ｉ／Ｏ先の仮想ページに割り当てられる実ページに対してＩ／Ｏを行う場合、前記モニタ情報における、前記Ｉ／Ｏ先の仮想ページに対応したＩ／Ｏ頻度を更新し、一方、前記Ｉ／Ｏ先の仮想ページに割り当てられる実ページに対してＩ／Ｏを行わない場合、前記モニタ情報における、前記Ｉ／Ｏ先の仮想ページに対応したＩ／Ｏ頻度を更新しない。
【００２１】
これにより、実ページに対してＩ／Ｏが行われた場合にだけ、その実ページが割り当てられている仮想ページのＩ／Ｏ頻度を更新することができる。
【００２２】
＜観点７＞
観点４乃至６のうちのいずれかの観点に従うストレージシステムにおいて、前記記憶資源は、前記モニタ情報として、状態がアクティブのモニタ情報と、状態がスタンバイのモニタ情報とを記憶する。前記コントローラは、前記アクティブのモニタ情報におけるＩ／Ｏ頻度を更新する。前記コントローラは、前記移行処理において、前記アクティブのモニタ情報を基に、前記第１の仮想ページを特定し、且つ、前記スタンバイのモニタ情報の状態をスタンバイからアクティブに変更し、その後、仮想ページが特定されるＩ／Ｏコマンドに従って実ページに対してＩ／Ｏを行う場合、状態がアクティブに変更されたモニタ情報における、その特定された仮想ページのＩ／Ｏ頻度を更新する。
【００２３】
これにより、前記移行処理が行われるときでも、Ｉ／Ｏ頻度の監視（更新）を継続することができる。
【００２４】
＜観点８＞
観点７に従うストレージシステムにおいて、前記コントローラは、前記アクティブのモニタ情報を用いて、Ｉ／Ｏ頻度と仮想ページ数との関係を表す情報である関係情報を作成し、作成した関係情報が表示されるよう前記関係情報を出力する。前記コントローラは、移行開始の指示を受けたときに、前記移行処理を開始する。
【００２５】
これにより、前記関係情報を閲覧したオペレータが手動で移行処理を開始させることができる。
【００２６】
＜観点９＞
観点３乃至７のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第１の実データ群の使用割合が所定の割合閾値を超えた場合に、前記移行処理を開始する。
【００２７】
このため、前記第１の実データ群の使用割合が所定の割合閾値を超えた場合には、前記移行処理により、第１の実データ群にフリーの実ページが増えることが期待できる。
【００２８】
＜観点１０＞
観点３乃至９のうちのいずれかの観点に従うストレージシステムにおいて、前記第１種の実データ群が、最上位の実データ群である。前記コントローラは、前記ライトコマンドから特定されたライト先の仮想ページには、必ず、前記第１種の実データ群から実ページを割り当てる。
【００２９】
これにより、データを、最上位の実データ群に優先的に格納できる。
【００３０】
＜観点１１＞
観点３乃至１０のうちのいずれかの観点に従うストレージシステムにおいて、前記仮想ボリュームとして、第１及び第２の仮想ボリュームがある。前記複数種類の物理記憶デバイス群に基づく複数のプールがある。プールは、一種類以上の実ページ群を有し、少なくとも一つの仮想ボリュームに割り当てられている。前記コントローラは、前記第１の仮想ボリュームについて、ページ単位移行処理を実行し、前記第２の仮想ボリュームについて、ボリューム単位移行処理を実行する。前記コントローラは、前記ページ単位移行処理では、前記第１の仮想ボリュームに割り当てられているプールにおいて、前記第１の実ページから前記第２の実ページにデータを移行する。前記コントローラは、前記ボリューム単位移行処理では、前記第２の仮想ボリュームに割り当てられているプールにおける、前記第２の仮想ボリュームに割り当てられている全ての実ページ内のデータを、前記第２の仮想ボリュームに割り当てられているプールとは別のプール内の実ページにそれぞれ移行する。
【００３１】
つまり、一つの仮想ボリューム内のデータをページ単位で移行することだけでなく、一つの仮想ボリューム内の全てのデータを、プール間で移行することができる。
【００３２】
＜観点１２＞
観点１１に従うストレージシステムにおいて、前記記憶資源が、前記第２の仮想ボリュームのＩ／Ｏ頻度を表す情報であるモニタ情報と、実ページ群の種類毎に設定されたＩ／Ｏ頻度レンジを表す情報を含んだ情報である実ページ群管理情報とを記憶する。前記コントローラが、前記第２の仮想ボリューム又は前記第２の仮想ボリュームに割り当てられる実ページに対するＩ／Ｏに応じて、前記モニタ情報における、前記第２の仮想ボリュームのＩ／Ｏ頻度を更新する。前記コントローラが、前記第２の仮想ボリュームに割り当てられている実ページを有する実ページ群の種類に対応したＩ／Ｏ頻度レンジを基に、Ｉ／Ｏ頻度の閾値レンジを算出する。前記コントローラが、前記第２の仮想ボリュームのＩ／Ｏ頻度が前記閾値レンジに収まっていない場合、前記第２の仮想ボリュームのＩ／Ｏ頻度が収まる閾値レンジが得られるように、前記第２の仮想ボリュームに割り当てられている全ての実ページ内のデータを、前記別のプールに移行する。
【００３３】
これにより、第２の仮想ボリューム内のデータを、第２の仮想ボリュームのＩ／Ｏ頻度に応じたプールに、移行することができる。
【００３４】
＜観点１３＞
観点１２に従うストレージシステムにおいて、前記ボリューム単位移行処理では、全ての移行元の実ページについて、移行元の実ページを有する実ページ群の種類と、移行先の実ページを有する実ページ群の種類が同じである。
【００３５】
これにより、前記仮想ボリュームの性能を実質的に変えないようにすることができる。
【００３６】
＜観点１４＞
観点１２記載のストレージシステムにおいて、前記ボリューム単位移行処理では、全ての移行元の実ページについて、移行元の実ページを有する実ページ群の種類に関わらず、移行先の実ページは一つの所定種類の実ページ群内の実ページである。
【００３７】
これにより、第２の仮想ボリューム内の全てのデータを、移行先のプール内の所定種類の実ページ群に集約することができる。
【００３８】
＜観点１５＞
観点３乃至１４のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記仮想ボリュームに割り当てられている全ての実ページのうちの所定割合以上の実ページが或る種の実ページ群に存在する場合、前記仮想ボリュームに割り当てられている全ての実ページのうち、前記或る種の実ページ群以外の種類の実ページ群内の実ページ内のデータを、前記或る種の実ページ群内の実ページに移行する。
【００３９】
これにより、仮想ボリュームのデータの配置状況に応じて、その仮想ボリュームにとって適切と考えられる種類の実ページ群に、その仮想ボリューム内のデータを集約することができる。
【００４０】
＜観点１６＞
観点１５に従うストレージシステムにおいて、前記或る種の実ページ群内の実ページに移行した後に前記仮想ページに割り当てられる実ページは、常に、前記或る種の実ページ群内の実ページである。
【００４１】
これにより、移行処理によってデータが集約された後は、前記第２の仮想ボリュームには、前記或る種の実ページ群から実ページが割り当てられる。
【００４２】
＜観点１７＞
観点３乃至１６のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第１の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第１の実ページから前記第２の実ページへのデータの移行が開始されていない場合、その移行をキャンセルし、前記ライトコマンドに従うデータを前記第２種の実ページ群内の実ページに書き込み、且つ、前記第１の仮想ページに前記第１の実ページに代えてその書込み先の実ページを割り当てるよう前記割当て情報を更新する。
【００４３】
移行前に移行先の実ページ群にデータが書き込まれるので、そのデータのライト先の仮想ページについては、移行を行わなくて済む。
【００４４】
＜観点１８＞
観点３乃至１６のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第１の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第１の実ページから前記第２の実ページへのデータの移行が開始されていない場合、前記ライトコマンドに従うデータを前記第１の実ページに書き込み、その後、前記（Ａ）及び（Ｂ）を行う。
【００４５】
＜観点１９＞
観点３乃至１８のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第１の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第１の実ページから前記第２の実ページへデータを移行中の場合、その移行をキャンセルし、前記ライトコマンドに従うデータを前記第２種の実ページ群内の実ページに書き込み、且つ、前記第１の仮想ページに前記第１の実ページに代えてその書込み先の実ページを割り当てるよう前記割当て情報を更新する。
【００４６】
＜観点２０＞
観点３乃至１８のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第１の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第１の実ページから前記第２の実ページへデータを移行中の場合、前記ライトコマンドに従うデータを前記第１の実ページに書き込み、その後、前記第１の実ページから前記第２種の実ページ群内の実ページへのデータの移行を再開する。
【００４７】
＜観点２１＞
観点３乃至１８のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第１の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第１の実ページから前記第２の実ページへデータを移行中の場合、その移行が済んだ後に、前記割当て情報に従って、前記ライトコマンドに従うデータを前記第２の実ページに書き込む。
【００４８】
＜観点２２＞
観点３乃至１８のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第１の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第１の実ページから前記第２の実ページへデータを移行中の場合、前記第１の実ページと前記第２の実ページの両方に、前記ライトコマンドに従うデータを書き込む。
【００４９】
＜観点２３＞
観点３乃至２２のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第１の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記（Ａ）及び（Ｂ）が済んでいる場合、前記割当て情報に従って、前記第２の実ページに、前記ライトコマンドに従うデータを書き込む。
【００５０】
＜観点２４＞
観点３乃至２３のうちのいずれかの観点に従うストレージシステムにおいて、前記第１の仮想ページは、Ｉ／Ｏが行われた最新の時刻である最終Ｉ／Ｏ時刻が所定の条件を満たす仮想ページである。
【００５１】
＜観点２５＞
観点２４に従うストレージシステムにおいて、前記所定の条件とは、最終Ｉ／Ｏ時刻が現在時刻から所定時間以上に過去であることである。前記第２種の実ページ群は、前記第１種の実ページ群よりも下位の実ページ群である。
【００５２】
＜観点２６＞
観点３乃至２５うちのいずれかの観点に従うストレージシステムにおいて、前記第１の仮想ページは、シーケンシャルアクセスに従うＩ／Ｏが発生した仮想ページである。前記第２種の実ページ群は、前記第１種の実ページ群よりも下位の実ページ群である。
【００５３】
＜観点２７＞
観点４に従うストレージシステムにおいて、前記コントローラは、前記モニタ情報の更新を所定の時間帯においてのみ行う。前記コントローラは、所定の時間帯を過ぎる都度に、前記モニタ情報を保存する。前記第１の仮想ページは、指定された時間帯に対応したモニタ情報から特定されたＩ／Ｏ頻度が所定の条件に適合していない仮想ページである。
【００５４】
＜観点２８＞
ホストに接続される記憶制御装置であって、記憶資源と、前記記憶資源及び前記ホストに接続されるコントローラとを備える。前記コントローラが、複数の仮想ページで構成されている仮想ボリュームを前記ホストに提供する。前記記憶資源が、どの仮想ページにどの実ページが割り当てられているかを表す情報である割当て情報を記憶する。前記コントローラが、前記ホストからライトコマンドを受信し、前記ライトコマンドからライト先の仮想ページを特定し、特定した仮想ページに複数種類の実ページ群のいずれかからフリーの実ページを割り当てるよう前記割当て情報を更新し、割り当てた実ページにライト対象のデータを格納する。前記実ページは、実体的な記憶領域である。前記仮想ページは、仮想的な記憶領域である。前記仮想ボリュームは、仮想的な論理ボリュームである。実ページ群が、複数の実ページを有する。前記コントローラが、以下の（Ａ）及び（Ｂ）の処理を含んだ処理である移行処理を行う、
（Ａ）第１種の実ページ群内の第１の実ページに格納されているデータを、第２種の実ページ群内の第２の実ページに移行する、
（Ｂ）前記第１の実ページの割当て先の仮想ページである第１の仮想ページに前記第１の実ページに代えて前記第２の実ページを割り当てるよう前記割当て情報を更新する。
【００５５】
＜観点２９＞
観点４に従うストレージシステムにおいて、特定されるＩ／Ｏ頻度は、或る時間におけるＩ／Ｏ数の平均である。
【００５６】
＜観点３０＞
観点４に従うストレージシステムにおいて、前記特定されるＩ／Ｏ頻度は、或る時間帯の複数の時間にそれぞれ対応した複数のＩ／Ｏ数のうちの最大のＩ／Ｏ数である。
【００５７】
＜観点３１＞
観点４に従うストレージシステムにおいて、記コントローラは、特定されるＩ／Ｏ頻度を平均Ｉ／Ｏ数とするか最大Ｉ／Ｏ数とするかの指定を受ける。平均Ｉ／Ｏ数とすることの指定を受けた場合、特定されるＩ／Ｏ頻度は、或る時間におけるＩ／Ｏ数の平均である。最大Ｉ／Ｏ数とすることの指定を受けた場合、特定されるＩ／Ｏ頻度は、或る時間帯の複数の時間にそれぞれ対応した複数のＩ／Ｏ数のうちの最大のＩ／Ｏ数である。
【００５８】
前述した観点１及び２は、ストレージシステムの制御方法を例に採った観点であり、観点３乃至２７、及び、観点２９乃至３１は、ストレージシステムを例に採った観点であり、観点２８は、記憶制御装置を例に採った観点であるが、それらのうちのいずれの観点も、ストレージシステム、記憶制御装置、記憶制御方法、ストレージシステム又は記憶制御装置の制御方法、ストレージシステム又は記憶制御装置、コンピュータプログラム（例えば、（例えば、記憶制御のためのコンピュータプログラム、或いは、ストレージシステム又は記憶制御装置で実行されるコンピュータプログラム）のうちの少なくとも一つの観点になることができる。
【００５９】
以下、図面を参照して、本発明の幾つかの実施例に係るストレージシステムを説明する。なお、以下の説明において、対象が、参照符号に代えて名称とＩＤの組み合わせで表されることがある。例えば、論理ボリュームが参照符号５００で表される場合には、「論理ボリューム５００」と表記され、ＩＤが００の論理ボリュームが表される場合には、「論理ボリューム＃００」と表記される。また、以下、一つの実ページに格納されるデータを、「データ要素」と呼ぶ。また、仮想ページに割り当てられた実ページに格納されているデータ要素を、「仮想ページ内のデータ要素」又はそれに類似した表現で表すことがある。
【実施例１】
【００６０】
図１は、本発明の実施例１の概要を示す。【００６１】
ストレージシステム１０３にホスト装置（以下、ホスト）１０１が接続されている。ホスト１０１は、一つであっても複数であってもよい。ストレージシステム１０３は、仮想ボリューム（以下、ＶＶＯＬ（Virtual VOLume））２０３をホスト１０１に提供し、複数種類のティア３０３を有する。【００６２】
ＶＶＯＬ２０３は、Thin Provisioningに従う仮想的な論理ボリューム、すなわち、物理的な記憶デバイス（以下、ＰＤＥＶ）を基としない論理ボリュームである。ＶＶＯＬ２０３は、複数の仮想ページ２０７で構成されている。仮想ページ２０７は、仮想的な記憶領域である。ＶＶＯＬ２０３として、一つのＶＶＯＬ＃００があるとする。以下、ＶＶＯＬ＃ａ内の仮想ページ＃ｂを、「仮想ページ＃（ａ−ｂ）」と表記することにする。Thin ProvisioningのＶＶＯＬ２０３は、仮想的な容量を有するものとしてホスト１０１へ提供されるものであり、ホスト１０１から仮想ページのあるアドレスへのライト要求に応じて実ページが割り当てられるものである。したがって、仮想的な容量を満たすように実ページが割り当てられてしまった状態を除いては、あるＶＶＯＬ２０３へ割り当てられた全ての実ページのトータル容量は、仮想的な容量よりも小さいものとなる。１つのＶＶＯＬ２０３は、１つ以上のホスト１０１へ提供されるものであり、複数のホスト１０１へ提供される場合には、これらの複数のホスト１０１によって共有されることになる。【００６３】
ティア３０３は、複数の実ページ２０９で構成されている。実ページ２０９は、実体的な記憶領域である。ティア３０３として、例えば、二つのティア＃０１及び＃０２があるとする。以下、ティア＃ｃ内の実ページ＃ｄを、「実ページ＃（ｃ−ｄ）」と表記することにする。なお、ティア３０３は、例えば、一以上の実ボリューム（以下、ＲＶＯＬ（Real VOLume））で構成されてよい。ＲＶＯＬは、実体的な論理ボリューム、すなわち、ＰＤＥＶを基とする論理ボリュームである。１つのプール内の複数のティア３０３の各々は、データ移行前の状態には、１つ又は複数のＶＶＯＬ２０３に利用されるものとして設定される。【００６４】
ホスト１０１は、一般的には計算機であるが、計算機に代えて、別のストレージシステムであってもよい。ホスト１０１は、例えば、Ｉ／Ｏ（Input/Output）コマンドをストレージシステム１０３に送信する。Ｉ／Ｏコマンドは、例えば、ライトコマンド又はリードコマンドであり、Ｉ／Ｏ先情報を有する。Ｉ／Ｏ先情報は、Ｉ／Ｏ先を表す情報であり、例えば、ＶＶＯＬ２０３のＩＤ（例えばＬＵＮ（Logical Unit Number））とＩ／Ｏ先のアドレス（例えばＬＢＡ（Logical
Block Address））とを含む。Ｉ／Ｏ先情報から、Ｉ／Ｏ先のＶＶＯＬ２０３及び仮想ページ２０７が特定される。【００６５】
ストレージシステム１０３が、ホスト１０１からライトコマンドを受信し、そのライトコマンドが有するＩ／Ｏ先情報を基に、ライト先として、仮想ページ＃（００−Ｃ）を特定したとする。ストレージシステム１０３は、特定された仮想ページ＃（００−Ｃ）にいずれの実ページ２０９が割り当てられていなければ、その仮想ページ２０７に、いずれかのフリー（未割当て状態）の実ページ＃（０１−Ｄ）を割り当て、割り当てた実ページ（０１−Ｄ）に、ライトコマンドに従うライト対象のデータ要素を書き込む。【００６６】
本実施例では、データ移行が、ページ単位で行われる。具体的には、例えば、図１に示すように、ストレージシステム１０３が、以下の処理：
＊仮想ページ＃（００−Ｃ）に割り当てられている実ページ＃（０１−Ｄ）内のデータ要素を、フリー（未割当て状態）の実ページ＃（０２−Ｅ）に移行する；
＊仮想ページ＃（００−Ｃ）の割当元を、実ページ＃（０１−Ｄ）から実ページ＃（０２−Ｅ）に変更する；
＊実ページ＃（０１−Ｄ）の状態をフリー（未割当て状態）に更新する、
を行う。【００６７】
以下、実施例１を詳細に説明する。【００６８】
図２は、ストレージシステム１０３の構成を示す。【００６９】
ストレージシステム１０３は、複数のＰＤＥＶ１０５と、複数のＰＤＥＶ１０５に接続された記憶制御装置と、電源ユニット１００とを有する。【００７０】
複数のＰＤＥＶ１０５には、複数種類のＰＤＥＶ、例えば、ＳＳＤ（Solid State Drive）及びＨＤＤ（Hard Disk Drive）が含まれる。ＨＤＤとしては、ＨＤＤ−ＦＣ（Fibre Channel）、ＨＤＤ−ＳＡＴＡ（Serial ATA）、及びＨＤＤ−ＳＡＳ（Serial Attached SCSI）などがある。【００７１】
記憶制御装置は、コントローラと、コントローラに接続された複数のＣＭＰＫ（キャッシュメモリパッケージ）１１９を有する。コントローラは、複数のＣＨＡ（チャネルアダプタ）１１１と、複数のＤＫＡ（ディスクアダプタ）１１３と、複数のＭＰＰＫ（マイクロプロセッサパッケージ）１２１と、ＳＷ（スイッチ）１１７とを有する。ＣＨＡ１１１、ＤＫＡ１１３、ＭＰＰＫ１２１、ＳＷ１１７及び電源ユニット１００は、冗長化の観点から、それぞれ複数存在するが、それらのうちの少なくとも一つの数は、図示の２に限らず、２より多くても少なくても良い。ＣＭＰＫ１１９の数は、２より多くても良い。【００７２】
電源ユニット１００は、商用電源からの電力に基づく電力を各パッケージ１１９、１１１、１１３、１２１及び１１７に供給する。【００７３】
ＣＨＡ１１１は、ホスト１０１に接続されるインタフェース装置である。ＣＨＡ１１１は、ホスト１０１から、Ｉ／Ｏコマンド（ライトコマンド又はリードコマンド）を受信し、受信したＩ／Ｏコマンドを、複数のＭＰＰＫ１２１のうちのいずれかに転送する。【００７４】
ＣＨＡ１１１は、プロトコルチップ１１２と、ＬＲ（Local Router）１１４とを有する。プロトコルチップ１１２は、ホスト１０１との通信のためのプロトコル変換を行う。ＬＲ１１４は、受信したＩ／Ｏコマンドを、そのＩ／Ｏコマンドが有するＩ／Ｏ先情報から特定されるＩ／Ｏ先に対応したＭＰＰＫ１２１に、転送する。【００７５】
ＤＫＡ１１３は、ＨＤＤ１０５に接続されるインタフェース装置である。ＤＫＡ１１３は、ＨＤＤ１０５からデータを読み出してＣＭＰＫ１１９のＤＲＡＭ（Dynamic Random Access Memory）に転送したり、ＣＭＰＫ１１９からのデータをＨＤＤ１０５に書込んだりする。【００７６】
ＭＰＰＫ１２１は、一又は複数のＭＰ（マイクロプロセッサ）を有する装置である。ＭＰは、ＣＨＡ１１１からのＩ／Ｏコマンドを処理する。【００７７】
ＳＷ１１７に、複数のパッケージ、すなわち、ＣＨＡ１１１、ＤＫＡ１１３、ＣＭＰＫ１１９及びＭＰＰＫ１２１が接続されている。ＳＷ１１７は、ＰＫ（パッケージ）間の接続を制御する。【００７８】
ＣＭＰＫ１１９は、揮発性メモリ及び／又は不揮発性メモリを有する。ＣＭＰＫ１１９には、例えば、仮想ページ２０７（実ページ２０９）に対するＩ／Ｏの対象のデータ要素が一時的に格納される記憶領域（以下、キャッシュメモリ或いはそれを略してＣＭ）がある。また、ＣＭＰＫ１１９には、種々の情報及びコンピュータプログラムが記憶される記憶領域がある。情報及びコンピュータプログラムについては、後に説明する。【００７９】
ストレージシステム１０３に、管理装置１０７が接続されている。管理装置１０７は、例えば、表示装置及び入力装置を有する計算機である。管理者は、管理装置１０７からストレージシステム１０３に対して種々の設定を行うことができる。【００８０】
図３は、ストレージシステム１０３における各種記憶領域の関係を示す。【００８１】
図３に示すように、下位から上位にかけて、一以上のＲＧ３０１、一以上のプール２０１、一以上のＶＶＯＬ２０３が管理される。【００８２】
ＲＧ３０１は、ＲＡＩＤグループの略である。一つのＲＧ３０１は、同一種類のＰＤＥＶで構成されている。ＰＤＥＶ種類は、例えば、性能及び単位コストのうちの少なくとも一方で定義される。性能とは、例えば、データのＩ／Ｏの速度、又は、レスポンスタイム（ホストからコマンドを受けてから応答を返すまでの時間長）である。単位コストは、単位サイズのデータを保存するのに要する価格（例えばいわゆるビットコスト）である。例えば、ＲＧ＃００は、複数のＳＳＤで構成されており、ＲＧ＃０１は、複数のＨＤＤ−ＳＡＳで構成されており、ＲＧ＃０２は、複数のＨＤＤ−ＳＡＴＡで構成されている。なお、一つのＲＧを構成する複数のＰＤＥＶの容量は、例えば同じである。【００８３】
プール２０１は、実ページ２０７の集合である。具体的には、例えば、プール２０１は、一以上のＲＶＯＬ２０５で構成されており、各ＲＶＯＬ２０５が、一以上の実ページ２０７で構成されている。以下、プール２０１を構成するＲＶＯＬを、プールＶＯＬを略して「ＰＶＯＬ」と表す。【００８４】
一つのプール２０１を構成する実ページ２０７が階層化されている。すなわち、一つのプール２０１に、複数のティア３０３が存在する。ティア３０３は、例えば、ＲＶＯＬの種類毎に存在する。例えば、図３によれば、ＲＶＯＬの種類として３種類あるため、ティア３０３の数も３つである。このため、一つのティア３０３には、そのティアに対応した種類のＲＶＯＬ２０５が属することになる。具体的には、例えば、ティア＃００は、ＳＳＤという種類であり、ＳＳＤで構成されたＲＧ３０１に基づくＲＶＯＬが属することになり、ティア＃０１は、ＨＤＤ−ＳＡＳという種類であり、ＨＤＤ−ＳＡＳで構成されたＲＧ３０１に基づくＲＶＯＬが属することになり、ティア＃０３は、ＨＤＤ−ＳＡＴＡという種類であり、ＨＤＤ−ＳＡＴＡで構成されたＲＧ３０１に基づくＲＶＯＬが属することになる。なお、ティア３０３は、必ずしも、厳密にＲＶＯＬ種類毎に設けられる必要も無く、同一のティア３０３に、類似の種類のＲＧに基づく複数のＲＶＯＬ２０５が属しても良い。【００８５】
ＶＶＯＬ２０３には、一以上のプール２０１から、割当元となるプール２０１が関連付けられる。また、ＶＶＯＬ２０３には、選択されたプール２０１から、割当元として使用可能なティア（以下、割当ティア）３０３が関連付けられる。また、ＶＶＯＬ２０３には、一以上の割当ティア３０３のうちの一つがデフォルトのティア３０３として関連付けられる。図３によれば、ＶＶＯＬ＃０１の割当ティアは、ティア＃００及び＃０２である。【００８６】
また、上述の説明によれば、複数のＲＶＯＬは、それらが同一のティアに属していれば、一つのＲＧが基になっている可能性があるが、それらが異なるティアにそれぞれ属していれば、それぞれ別々のＲＧが基になっていることになる。同一のティア３０３に関連する１つ又は複数のＶＶＯＬ２０３の複数の仮想ページに対して複数の実ページを順次割り当てる場合には、このティア３０３に関連するＲＧをまたいで実ページが順次選択されるようすることが望ましい。具体的には、このティア３０３に含まれる複数のＲＶＯＬ２０５から複数の実ページが選択される場合に、ＲＧとの関係を考慮して、順次異なるＲＧから実ページが順次選択される。これにより、アクセス性能を向上させることが可能になる。【００８７】
図４は、ＣＭＰＫ１１９が記憶する情報及びコンピュータプログラムを示す。なお、本実施例では、情報の一例としてテーブルが採用されるが、情報は、テーブル以外の形式（例えばキュー形式）であっても良い。【００８８】
ＣＭＰＫ１１９は、情報として、ティア定義テーブル４０１、ティア管理テーブル４０２、プール管理テーブル４０３、ＶＶＯＬ管理テーブル４０４、ＰＶＯＬ管理テーブル４０５、アロケーションテーブル４０７、実ページ管理テーブル４０８、モニタテーブル４０９、度数分布テーブル４１０、移行ページテーブル４１１及び移行定義テーブル４１２を記憶する。また、ＣＭＰＫ１１９は、コンピュータプログラムとして、ＵＩ（User Interface）を制御するプログラムであるＵＩ制御プログラム４１３、Ｉ／Ｏを制御するプログラムであるＩ／Ｏ制御プログラム４１４、及び、再配置を行うプログラムである再配置プログラム４１５を記憶する。なお、これらのテーブル及びコンピュータプログラムのうちの少なくとも一つがＣＭＰＫ１１９以外の記憶資源に記憶されていても良い。例えば、少なくとも一つのコンピュータプログラム、及び／又は、移行ページテーブル４１１は、ＭＰＰＫ１２１内のメモリに記憶されても良い。【００８９】
以下、各テーブルを説明する。なお、以下の説明では、対象は、ＩＤを用いて特定されるが、ＩＤに代えて又は加えて、名称及び番号のうちの少なくとも一つを用いて特定されても良い。【００９０】
図５は、ティア定義テーブル４０１の構成を示す。【００９１】
ティア定義テーブル４０１は、ティアの定義を表すテーブルである。具体的には、例えば、テーブル４０１は、ＲＶＯＬ種類とティアＩＤとの関係を表す。テーブル４０１によれば、ＲＶＯＬ種類「ＳＳＤ」に対応したティアとして、「００」というＩＤが付与されたティアが用意されることになる。【００９２】
図６は、ティア管理テーブル４０２の構成を示す。【００９３】
ティア管理テーブル４０２は、ティアに関する情報を管理するためのテーブルである。具体的には、例えば、テーブル４０２は、ティア毎に、プールＩＤ、ティアＩＤ、ティアレンジ、ＰＶＯＬ  ＩＤ、ティア閾値、使用割合、実ページＩＤを有する。一つのティア（以下、図６の説明において「対象ティア」と言う）を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
＊「プールＩＤ」は、対象ティアを有するプールのＩＤである。
＊「ティアＩＤ」は、対象ティアのＩＤである。ティアＩＤから、対象ティアに属するＰＶＯＬの基になっているＰＤＥＶの種類が一義的に特定される。
＊「ティアレンジ」は、対象ティアに存在すべき実ページの負荷（例えばＩ／Ｏ頻度）の範囲である。
＊「ＰＶＯＬ  ＩＤ」は、対象ティアに属するＰＶＯＬのＩＤである。
＊「ティア閾値」は、対象ティアの使用割合の閾値である。
＊「使用割合」は、対象ティアの使用割合、すなわち、対象ティアを構成する実ページの数に対する、割当て済みの実ページの数の割合である。
＊「実ページＩＤ」は、対象ティアに属する全ての実ページのＩＤである。【００９４】
図６のテーブル４０２の例によれば、ティア閾値は、ティア毎に設定されているが、それに代えて、一つのプールについて一つのティア閾値が設定され、その一つのティアが、その一つのプールが有する全てのティアについて共通であっても良い。【００９５】
図７は、プール管理テーブル４０３の構成を示す。【００９６】
プール管理テーブル４０３は、プールに関する情報を管理するためのテーブルである。具体的には、例えば、テーブル４０３は、プール毎に、プールＩＤ、階層化、再配置、自動実行、再配置実行周期、再配置実行時刻、モニタ時間帯及びプールステータスを有する。一つのプール（以下、図７の説明において「対象プール」と言う）を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
＊「プールＩＤ」は、対象プールのＩＤである。
＊「階層化」は、対象プール内の実ページを階層化するか否かである。“ＯＮ”は、階層化すること（つまり、対象プールに複数のティアが設けられること）を意味し、“ＯＦＦ”は、階層化しないこと（つまり、対象プールにティアが設けられないこと）を意味する。
＊「再配置」は、対象プール内のデータ要素を再配置するか否かである。“ＯＮ”は、再配置を行うことを意味し、“ＯＦＦ”は、再配置を行わないことを意味する。“ＯＮ”の場合、対象プールが割り当てられているＶＶＯＬ又はその仮想ページのＩ／Ｏ頻度がモニタされ、“ＯＦＦ”の場合、対象プールが割り当てられているＶＶＯＬ又はその仮想ページのＩ／Ｏ頻度がモニタされない。Ｉ／Ｏ頻度のモニタに関して大事なことは、Ｉ／Ｏ先のＶＶＯＬ或いは仮想ページに割り当てられた実ページに実際にＩ／Ｏが行われなければ、Ｉ／Ｏ頻度は更新されず、その割り当てられた実ページに対してＩ／Ｏが行われたときに、Ｉ／Ｏ頻度が更新されることである。この点は、後述のライト処理及びリード処理の際にも説明する。
＊「自動実行」は、対象プール内のデータ要素の再配置を自動で開始するか手動で開始するかである。“ＯＮ”は、再配置が自動で開始されることを意味し、“ＯＦＦ”は、再配置が手動で開始されることを意味する。
＊「再配置実行周期」は、対象プール内のデータ要素の再配置を行う周期である。例えば、“１日”は、１日（２４時間）毎に再配置が開始されることを意味する。
＊「再配置実行時刻」は、対象プール内のデータ要素の再配置を開始する時刻である。
＊「モニタ時間帯」は、対象プールが割り当てられているＶＶＯＬに割り当てられた実ページのＩ／Ｏ頻度をモニタする時間帯である。
＊「プールステータス」は、対象プールのステータスである。「プールステータス」の値として、例えば、“モニタリング中”、“再配置中”、“非モニタリング中”がある。“モニタリング中”は、対象プールが割り当てられているＶＶＯＬ又はそのＶＶＯＬ内の仮想ページのＩ／Ｏ頻度がモニタリングされている最中であり、且つ、データ要素の再配置中ではないことを意味する。“再配置中”は、データ要素の再配置（対象プール内での再配置であっても良いし、対象プールから別のプールへのデータ要素の再配置であっても良い）が行われている最中であることを意味する。“非モニタリング中”は、Ｉ／Ｏ頻度のモニタリング中でもないしデータ要素の再配置中でもないことを意味する。【００９７】
図８は、ＶＶＯＬ管理テーブル４０４の構成を示す。【００９８】
ＶＶＯＬ管理テーブル４０４は、ＶＶＯＬに関する情報を管理するためのテーブルである。具体的には、例えば、テーブル４０４は、ＶＶＯＬ毎に、ＶＶＯＬ  ＩＤ、ＰＶＯＬ  ＩＤ、割当ティアＩＤ、デフォルトティアＩＤ、容量、再配置、自動実行、再配置実行周期、再配置実行時刻及びモニタ時間帯を有する。これらの情報要素のうち、再配置、自動実行、再配置実行周期、再配置実行時刻及びモニタ時間帯は、プール管理テーブル４０３における情報要素と同じであるが、このテーブル４０４における情報要素（例えば「再配置」）の値がプール管理テーブル４０３における同じ情報要素（例えば「再配置」）の値と違っていれば、このテーブル４０４における値が優先されて良い。つまり、プール管理テーブル４０３では、一つのプールについて情報要素の値が設定され、その結果、そのプールが割り当てられている全てのＶＶＯＬについての設定にその値を反映させることができるが、ＶＶＯＬ毎に、設定をすることができる。ＶＶＯＬについて特に値が設定されていなければ、そのＶＶＯＬに割り当てられているプールについて設定されている値が、そのＶＶＯＬについての値とされる。一つのＶＶＯＬ（以下、図８の説明において「対象ＶＶＯＬ」と言う）を例に採っていうと、このテーブル４０４における上記の情報要素は、具体的には、下記の通りである。
＊「ＶＶＯＬ  ＩＤ」は、対象ＶＶＯＬのＩＤである。
＊「ＰＶＯＬ  ＩＤ」は、対象ＶＶＯＬに割り当てられているプール（以下、割当プール）のＩＤである。
＊「割当ティアＩＤ」は、割当プールが有する複数のティアのうちの対象ＶＶＯＬに割り当てられるティアのＩＤである。対象ＶＶＯＬ内の仮想ページには、割当ティアから実ページが割り当てられる。
＊「デフォルトティアＩＤ」は、デフォルトティアのＩＤである。デフォルトティアとは、ホスト１０１からのライト先の仮想ページに初めに割り当てられる実ページの提供元となるティアである。
＊「容量」は、対象ＶＶＯＬの容量である。
＊「再配置」は、対象ＶＶＯＬ内のデータ要素を再配置するか否かである。“ＯＮ”は、再配置を行うことを意味し、“ＯＦＦ”は、再配置を行わないことを意味する。“ＯＮ”の場合、対象ＶＶＯＬ又はその仮想ページのＩ／Ｏ頻度がモニタされ、“ＯＦＦ”の場合、対象ＶＶＯＬ又はその仮想ページのＩ／Ｏ頻度がモニタされない。
＊「自動実行」は、対象ＶＶＯＬ内のデータ要素の再配置を自動で開始するか手動で開始するかである。“ＯＮ”は、再配置が自動で開始されることを意味し、“ＯＦＦ”は、再配置が手動で開始されることを意味する。
＊「再配置実行周期」は、対象ＶＶＯＬ内のデータ要素の再配置を行う周期である。
＊「再配置実行時刻」は、対象ＶＶＯＬ内のデータ要素の再配置を開始する時刻である。
＊「モニタ時間帯」は、対象ＶＶＯＬ又は仮想ページのＩ／Ｏ頻度をモニタする時間帯である。【００９９】
図９は、ＰＶＯＬ管理テーブル４０５の構成を示す。【０１００】
ＰＶＯＬ管理テーブル４０５は、ＰＶＯＬに関する情報を管理するためのテーブルである。具体的には、例えば、テーブル４０５は、ＰＶＯＬ毎に、ＲＧ  ＩＤ、ＰＤＥＶ  ＩＤ、種類、ＰＶＯＬ  ＩＤ、及び容量を有する。一つのＰＶＯＬ（以下、図９の説明において「対象ＰＶＯＬ」と言う）を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
＊「ＲＧ  ＩＤ」は、対象ＰＶＯＬの基になっているＲＧのＩＤである。
＊「ＰＤＥＶ  ＩＤ」は、対象ＰＶＯＬの基になっているＲＧを構成する全てのＰＤＥＶのＩＤである。
＊「種類」は、対象ＰＶＯＬの種類である。これは、対象ＰＶＯＬの基になっているＰＤＥＶの種類と同じである。例えば、ＲＶＯＬ種類が“ＳＳＤ”であれば、対象ＰＶＯＬの種類も“ＳＳＤ”となる。
＊「ＰＶＯＬ  ＩＤ」は、対象ＰＶＯＬのＩＤである。
＊「容量」は、対象ＰＶＯＬの容量である。【０１０１】
図１０は、アロケーションテーブル４０７の構成を示す。【０１０２】
アロケーションテーブル４０７は、どの仮想ページにどの実ページが割り当てられているかを表すテーブルである。具体的には、例えば、テーブル４０７は、仮想ページ毎に、ＶＶＯＬ  ＩＤ、仮想ページＩＤ、プールＩＤ、実ページＩＤ及びティアＩＤを有する。一つの仮想ページ（以下、図１０の説明において「対象仮想ページ」と言う）を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
＊「ＶＶＯＬ  ＩＤ」は、対象仮想ページを有するＶＶＯＬのＩＤである。
＊「仮想ページＩＤ」は、対象仮想ページのＩＤである。
＊「プールＩＤ」は、対象仮想ページを有するＶＶＯＬに割り当てられているプールのＩＤでる。
＊「実ページＩＤ」は、対象仮想ページに割り当てられている実ページのＩＤである。
＊「ティアＩＤ」は、対象仮想ページに割り当てられている実ページを有するティアのＩＤである。【０１０３】
図１１は、実ページ管理テーブル４０８の構成を示す。【０１０４】
実ページ管理テーブル４０８は、各実ページの状態を管理するためのテーブルである。具体的には、例えば、テーブル４０８は、実ページ毎に、プール  ＩＤ、実ページＩＤ及びステータスを有する。一つの実ページ（以下、図１１の説明において「対象実ページ」と言う）を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
＊「プールＩＤ」は、対象実ページを有するプールのＩＤである。
＊「実ページＩＤ」は、対象実ページのＩＤである。
＊「ステータス」は、対象実ページのステータスである。ステータスの値として、例えば、“使用中”と“フリー”がある。“使用中”は、対象実ページがいずれかの仮想ページに割当て済みであることを意味する。“フリー”は、対象実ページがいずれの仮想ページにも割り当てられておらずそれ故いずれの仮想ページにも割当て可能な状態になっていることを意味する。【０１０５】
図１２は、モニタテーブル４０９の構成を示す。【０１０６】
モニタテーブル４０９は、ＶＶＯＬ毎に存在する。テーブル４０９は、ＶＶＯＬのＩ／Ｏ頻度を表す第１種のモニタテーブル４０９Ａ、又は、仮想ページのＩ／Ｏ頻度を表す第２種のモニタテーブル４０９Ｂである。一つのＶＶＯＬ（以下、図１２の説明において「対象ＶＶＯＬ」と言う）を例に採って、テーブル４０９Ａ及び４０９Ｂを説明する。【０１０７】
テーブル４０９Ａは、具体的には、例えば、ＶＶＯＬ毎に、ＶＶＯＬ  ＩＤ、合計Ｉ／Ｏ数、平均Ｉ／Ｏ数、最大Ｉ／Ｏ数及び最終Ｉ／Ｏ時刻を有する。これらの情報要素は、具体的には、下記の通りである。
＊「ＶＶＯＬ  ＩＤ」は、対象ＶＶＯＬのＩＤである。
＊「合計Ｉ／Ｏ数」は、モニタ時間帯に対象ＶＶＯＬに行われたＩ／Ｏ（具体的には、対象ＶＶＯＬに割り当てられている実ページに対するＩ／Ｏ）の数である。
＊「平均Ｉ／Ｏ数」は、「合計Ｉ／Ｏ数」の値を所定時間で割ることにより算出された値である。
＊「最大Ｉ／Ｏ数」は、モニタ時間帯を構成する複数の時間帯における複数のＩ／Ｏ数（対象ＶＶＯＬについてのＩ／Ｏ数）のうちの最も大きいＩ／Ｏ数である。
＊「最終Ｉ／Ｏ時刻」は、対象ＶＶＯＬにＩ／Ｏが行われた最新の時刻である。【０１０８】
テーブル４０９Ｂは、具体的には、例えば、仮想ページ毎に、ＶＶＯＬ  ＩＤ、仮想ページＩＤ、合計Ｉ／Ｏ数、平均Ｉ／Ｏ数、最大Ｉ／Ｏ数及び最終Ｉ／Ｏ時刻を有する。一つの仮想ページ（以下、図１２の説明において「対象仮想ページ」と言う）を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
＊「ＶＶＯＬ  ＩＤ」は、対象仮想ページを有するＶＶＯＬ（つまり対象ＶＶＯＬ）のＩＤである。
＊「仮想ページＩＤ」は、対象仮想ページのＩＤである。
＊「合計Ｉ／Ｏ数」は、モニタ時間帯に対象仮想ページに行われたＩ／Ｏの数である。
＊「平均Ｉ／Ｏ数」は、「合計Ｉ／Ｏ数」の値を所定時間で割ることにより算出された値である。
＊「最大Ｉ／Ｏ数」は、モニタ時間帯を構成する複数の時間帯における複数のＩ／Ｏ数（対象仮想ページについてのＩ／Ｏ数）のうちの最も大きいＩ／Ｏ数である。
＊「最終Ｉ／Ｏ時刻」は、対象仮想ページにＩ／Ｏが行われた最新の時刻である。【０１０９】
ＶＯＬ単位のデータ移行が指定されたＶＶＯＬについては、テーブル４０９Ａが作成され、ページ単位のデータ移行が指定されたＶＶＯＬについては、テーブル４０９Ｂが作成される。テーブル４０９Ａは、ＶＯＬ単位のデータ移行を行うか否かの自動判断の際に参酌され、テーブル４０９Ｂは、ページ単位のデータ移行を行うか否かの自動判断の際に参酌される。【０１１０】
テーブル４０９Ａ及び４０９Ｂも、それぞれ、例えば二つ（二つより多くても良い）存在する。テーブル４０９Ｂを例に採ると、二つのテーブル４０９Ｂが、交互に使用される。具体的には、例えば、再配置が実行される場合、その実行時点の直近のモニタ時間帯についてのテーブル４０９Ｂを用いて、後述する移行ページテーブル４１１が作成され、且つ、他方のテーブル４０９Ｂを用いて、Ｉ／Ｏ頻度のモニタが行われる。以下の説明では、使用されている方のテーブル４０９Ａ、４０９Ｂを、アクティブのテーブル４０９Ａ、４０９Ｂと言い、使用されていない方のテーブル４０９Ａ、４０９Ｂを、スタンバイのテーブル４０９Ａ、４０９Ｂと言うことがある。【０１１１】
図１３は、度数分布テーブル４１０の構成を示す。【０１１２】
度数分布テーブル４１０は、Ｉ／Ｏ数と仮想ページ数との相関を表すテーブルである。このテーブル４１０は、第２種のモニタテーブル４０９Ｂ（すなわち、仮想ページ毎のＩ／Ｏ頻度を表すテーブル）を基に作成される。Ｉ／Ｏ数としては、前述したテーブル４０９Ｂにおける合計Ｉ／Ｏ数、平均Ｉ／Ｏ数及び最大Ｉ／Ｏ数のうちの少なくとも一つが採用されて良い。図１３は、平均Ｉ／Ｏ数が採用された例である。すなわち、図１３に示すテーブル４１０は、平均Ｉ／Ｏ数別に仮想ページの数を表す。図１３によれば、平均Ｉ／Ｏ数が“０”の仮想ページの数は“５６１”であることがわかる。このテーブル４１０（又はこのテーブル４１０を基に作成されるグラフ）は、管理装置１０７に表示される。管理者は、テーブル４０１（又はそれに基づくグラフ）を基に、手動で、データ要素の再配置の開始をストレージシステム１０３に指示することができる。【０１１３】
度数分布テーブル４１０は、第２種のモニタテーブル４０９Ｂが更新されることに伴って更新されても良いし、度数分布の表示を管理者から命じられたときに、テーブル４０９Ｂを基に作成されても良い。【０１１４】
図１４は、移行ページテーブル４１１の構成を示す。【０１１５】
移行ページテーブル４１１は、ページ単位のデータ移行の際に、第２種のモニタテーブル４０９Ｂを基に作成されるテーブルである。テーブル４１１は、移行元と移行先との関係を表す。具体的には、例えば、テーブル４１１は、移行対象の仮想ページ毎に、仮想ページＩＤ、移行元ティアＩＤ、移行先ティアＩＤ及び移行ステータスを有する。一つの仮想ページ（以下、図１４の説明において「対象仮想ページ」と言う）を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
＊「仮想ページＩＤ」は、対象仮想ページのＩＤである。
＊「移行元ティアＩＤ」は、対象仮想ページに割り当てられている実ページ（移行元の実ページ）を有するティアのＩＤである。
＊「移行先ティアＩＤ」は、データ要素の移行先となるティアのＩＤである。移行先の実ページは、そのティアにおけるいずれかフリーの実ページである。
＊「移行ステータス」は、対象仮想ページについての移行のステータスである。「移行ステータス」の値として、例えば、“移行済”、“移行中”及び“未移行”がある。“移行済”は、移行元の実ページから移行先のティアにおけるいずれかの実ページにデータ要素を移行済みであることを意味する。“移行中”は、移行元の実ページから移行先のティアにおけるいずれかの実ページにデータ要素を移行中であることを意味する。“未移行”は、移行元の実ページから移行先のティアにおけるいずれかの実ページにデータ要素を移行することが未だ開始されていないことを意味する。【０１１６】
なお、移行ページテーブル４１１は、仮想ページＩＤに代えて又は加えて、移行元に関する他種の情報要素を有してもよい。例えば、仮想ページに割り当てられている実ページのＩＤがテーブル４１１に含まれてもよい。【０１１７】
また、移行ページテーブル４１１は、移行先ティアＩＤに代えて又は加えて、移行先に関する他種の情報要素を有してもよい。例えば、移行先ティアにおけるフリーの実ページがテーブル４０２（図６）及び４０８（図１１）を基に特定され、その特定された実ページのＩＤがテーブル４１１に含まれてもよい。その際、特定された実ページのステータスが、“フリー”から“使用中”（或いは他のステータス（例えば“リザーブ”）に更新されてもよい。【０１１８】
図１５は、移行定義テーブル４１２の構成を示す。【０１１９】
移行定義テーブル４１２は、各ＶＶＯＬについて、移行に関する定義を表す。具体的には、例えば、テーブル４１２は、ＶＶＯＬ毎に、ＶＶＯＬ  ＩＤ、ページ単位移行、ＶＯＬ単位移行、ティア維持、割当ティアＩＤ及び格納閾値を有する。一つのＶＶＯＬ（以下、図１５の説明において「対象ＶＶＯＬ」と言う）を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
＊「ＶＶＯＬ  ＩＤ」は、対象ＶＶＯＬのＩＤである。
＊「ページ単位移行」は、ページ単位のデータ移行を行うか否かである。“ＯＮ”は、ページ単位のデータ移行を行うことを意味し、“ＯＦＦ”は、ページ単位のデータ移行を行わないことを意味する。
＊「ＶＯＬ単位移行」は、ＶＯＬ単位（厳密にはＶＯＬ単位）のデータ移行を行うか否かである。“ＯＮ”は、ＶＯＬ単位のデータ移行を行うことを意味し、“ＯＦＦ”は、ＶＯＬ単位のデータ移行を行わないことを意味する。従って、「ページ単位移行」と「ＶＯＬ単位移行」の両方が“ＯＦＦ”ということは、対象ＶＶＯＬ内のデータ要素は移行（再配置）されないことを意味する。
＊「ティア維持」は、ティアを維持した移行をするか否かである。ティアを維持するとは、移行先のティアのＩＤ（つまりティアの種類）を、移行元のティアのＩＤと同じすることである。“ＯＮ”は、ティアを維持することを意味し、“ＯＦＦ”は、ティアを維持しないことを意味する。
＊「割当ティアＩＤ」は、対象ＶＶＯＬの割当ティアのＩＤである。
＊「格納閾値」は、割当ティアの格納割合の閾値である。この閾値は、割当ティア毎に設定される。「格納割合」とは、一つの割当ティア（以下、この段落の説明において「対象割当ティア」）について言えば、次のとおりである。すなわち、格納割合は、対象ＶＶＯＬ内の全てのデータ要素のうちのどの程度の割合のデータ要素が対象割当ティアに格納されているかである。【０１２０】
図１５のテーブル４１２の例によれば、格納閾値は、ティア毎に設定されているが、それに代えて、一つのプールについて一つの格納閾値が設定され、その一つのティアが、その一つのプールが有する全てのティアについて共通であっても良い。【０１２１】
以下、本実施例で行われる処理を説明する。なお、以下の説明において、コンピュータプログラムが行う処理は、実際には、コンピュータプログラムを実行するＭＰ（マイクロプロセッサ）が行う。ＭＰは、ＭＰＰＫ１２１（図２参照）にある。【０１２２】
＜プールの作成＞。【０１２３】
図１６は、プール作成処理のフローを示す。なお、この＜プールの作成＞の説明において、そのプール作成処理で新たに作成されるプールを「対象プール」と言う。【０１２４】
（Ｓ１６０１）
ＵＩ制御プログラム４１３が、プールの作成指示を、管理者から管理装置１０７を通じて受ける。そして、プログラム４１３は、例えば下記の準備処理を行う。
＊プログラム４１３は、対象プールの新規のレコードを、テーブル４０２（図６）、４０３（図７）、４０８（図１１）に追加する。
＊プログラム４１３は、ＰＶＯＬの指定を管理者から管理装置１０７を通じて受ける。具体的には、例えば、プログラム４１３は、ＲＶＯＬに関する情報（例えば、ＩＤ、種類など）を表示し、ＰＶＯＬとするＲＶＯＬの指定を受ける。【０１２５】
指定されたＲＶＯＬ毎に、Ｓ１６０２〜Ｓ１６０５が行われる。一つのＲＶＯＬ（以下、図１６の説明において「対象ＲＶＯＬ」と言う）を例に採り、Ｓ１６０２〜Ｓ１６０５を説明する。【０１２６】
（Ｓ１６０２）
プログラム４１３は、指定されたＲＶＯＬの種類を特定する。具体的には、例えば、ＣＭＰＫ１１９が、ＲＶＯＬ毎にＩＤ、容量、種類（例えば、ＳＳＤ、ＨＤＤ−ＳＡＳ）などを有するＲＶＯＬ管理テーブルを記憶していて、プログラム４１３は、そのＲＶＯＬ管理テーブルから、指定されたＲＶＯＬの種類を特定する。【０１２７】
（Ｓ１６０３）
プログラム４１３は、特定されたＲＶＯＬ種類に対応したティアが対象プールに既に存在しているか否かを、ティア管理テーブル４０３から判断する。この判断の結果が否定的の場合、Ｓ１６０４が行われ、この判断の結果が肯定的の場合、Ｓ１６０５が行われる。【０１２８】
（Ｓ１６０４）
プログラム４１３は、特定されたＲＶＯＬ種類に対応したティアのＩＤをティア定義テーブル４０１から特定する。そして、プログラム４１３は、対象プールについて、特定されたティアＩＤを、テーブル４０２（図６）に追加する。【０１２９】
（Ｓ１６０５）
プログラム４１３は、特定されたＲＶＯＬ種類に対応したティア（以下、この段落において「対象ティア」と言う）に、対象ＲＶＯＬを追加する。具体的には、例えば、プログラム４１３は、テーブル４０２（図６）に、対象ティアのティアＩＤに対応するＰＶＯＬ  ＩＤとして、対象ＲＶＯＬのＩＤを登録する。【０１３０】
（Ｓ１６０６）
プログラム４１３は、全ての指定されたＲＶＯＬについてＳ１６０２以降が行われたか否かを判断する。指定されたＲＶＯＬに、Ｓ１６０２以降の処理が行われていないＲＶＯＬがあれば、そのＲＶＯＬについて、Ｓ１６０２以降が行われる。【０１３１】
（Ｓ１６０７）
プログラム４１３は、プール定義ＧＵＩ（Graphical User Interface）を表示する。そして、プログラム４１３は、そのＧＵＩを通じて種々の設定を受け付ける。【０１３２】
図１７は、プール定義ＧＵＩ１７００を示す。【０１３３】
ＧＵＩ１７００には、対象プールのＩＤが表示される。なお、プログラム４１３は、所定のツール（例えばプルダウンメニュー）が管理者に操作されたことに応答して、対象プール以外のプール（すなわち既存のプール）のＩＤを表示することもできる。【０１３４】
また、ＧＵＩ１７００は、表示されているＩＤが表すプールについて、テーブル４０３（図７）に設定すべき情報要素「階層化」、「再配置」、「自動実行」、「実行周期」、「実行時刻」、「モニタ時間帯」、「ティア閾値」の値を入力するために管理者が使用する入力ツールを有する。本実施例で言う入力ツールとしては、ラジオボタン、チェックボックス、テキスト入力欄などを任意のツールを採用することができる。なお、ＧＵＩ１７００は、「ティア閾値」について、一つの閾値を、対象プールが有する全てのティアに共通とさせることも、或いは、対象プールが有するティア毎に閾値を設定することもできるようになっている。【０１３５】
なお、前述したように、ＧＵＩ１７００には、既存のプールのＩＤも表示可能であるため、ＧＵＩ１７００を用いて、管理者所望の既存のプールについての設定を変更することもできる。その際、プログラム４１３は、例えば、管理者所望のティア閾値が、そのティア閾値が設定されるティアの使用割合よりも高ければ、不適切なティア閾値として、警告を管理装置１０５に表示し、そのティア閾値をテーブル４０２（図６）に登録しないようにしても良い。【０１３６】
再び図１６を参照する。【０１３７】
（Ｓ１６０８）
プログラム４１３は、テーブルを更新する。具体的には、例えば、プログラム４１３は、下記の処理を行う。
＊プログラム４１３は、図１７のＧＵＩ１７００に入力された、情報要素「階層化」、「再配置」、「自動実行」、「実行周期」、「実行時刻」、「モニタ時間帯」、「ティア閾値」の値を、テーブル４０３（図７）に登録する。
＊プログラム４１３は、対象プールを複数の実ページに区切り、それら複数の実ページのＩＤを、テーブル４０２（図６）、及び、４０８（図１１）に追加する。【０１３８】
実ページの容量は、全てのプールにおいて共通であってよい。そのため、対象プールを構成する実ページの数は、対象プールの容量（対象プールを構成するＰＶＯＬの総容量）に依存してよい。【０１３９】
なお、ＰＶＯＬ毎に、実ページの容量が異なっていても良い。具体的には、例えば、ＲＡＩＤ５（４Ｄ＋１Ｐ）のＲＧに基づくＰＶＯＬを構成する実ページの容量と、ＲＡＩＤ６（４Ｄ＋２Ｐ）のＲＧに基づくＰＶＯＬを構成する実ページの容量は、異なっていても良い。なぜなら、一つの実ページに格納されるパリティの数が違っているためである。【０１４０】
＜ＶＶＯＬの作成＞。【０１４１】
図１８は、ＶＶＯＬ作成処理のフローを示す。なお、この＜ＶＶＯＬの作成＞の説明において、そのＶＶＯＬ作成処理で新たに作成されるＶＶＯＬを「対象ＶＶＯＬ」と言う。【０１４２】
（Ｓ１８０１）
ＵＩ制御プログラム４１３は、ＶＶＯＬ作成ＧＵＩを表示する。そして、プログラム４１３は、そのＧＵＩを通じて種々の設定を受け付ける。【０１４３】
図１９は、ＶＶＯＬ作成ＧＵＩ１９００を示す。【０１４４】
ＧＵＩ１９００には、対象ＶＶＯＬのＩＤが表示される。なお、プログラム４１３は、所定のツール（例えばプルダウンメニュー）が管理者に操作されたことに応答して、対象ＶＶＯＬ以外のＶＶＯＬ（既存のＶＶＯＬ）のＩＤを表示することもできる。【０１４５】
ＧＵＩ１９００は、表示されているＩＤが表すＶＶＯＬについて、テーブル４０４（図８）に設定すべき情報要素「プールＩＤ」、「容量」、「再配置」、「自動実行」、「実行周期」、「実行時刻」、「モニタ時間帯」の値を入力するために管理者が使用する入力ツールを有する。【０１４６】
また、ＧＵＩ１９００は、入力されたプールＩＤに対応するティアＩＤをテーブル４０２（図６）から特定し、特定された全てのティアＩＤを表示する。ＧＵＩ１９００は、表示されているＩＤが表すＶＶＯＬについて、「割当ティア」、「格納閾値」及び「デフォルトティア」の値を入力するために管理者が使用する入力ツールを有する。管理者は、それらの入力ツールを用いて、入力されたプールＩＤが表すプール（ＶＶＯＬに割り当てたプール）が有する複数のティアのうちのどれを割当ティアにするか、割当ティアのうちのどれを「デフォルトティア」にするか、及び、各割当ティアの格納閾値を、入力することができる。【０１４７】
再び図１８を参照する。【０１４８】
（１８０２）
プログラム４１３は、テーブルを更新する。具体的には、例えば、プログラム４１３は、下記の処理を行う。
＊プログラム４１３は、図１９のＧＵＩ１９００に入力された、情報要素「プールＩＤ」、「容量」、「再配置」、「自動実行」、「実行周期」、「実行時刻」、「モニタ時間帯」、「割当ティアＩＤ」及び「デフォルトティアＩＤ」の値を、テーブル４０４（図８）に登録する。
＊プログラム４１３は、対象ＶＶＯＬの容量に基づいて、対象ＶＶＯＬを構成する仮想ページの数を算出する。プログラム４１３は、対象ＶＶＯＬのＩＤと、算出された仮想ページ数分の仮想ページＩＤとを、テーブル４０７（図１０）に登録する。
＊プログラム４１３は、対象ＶＶＯＬについて、「再配置」が“ＯＮ”であれば、テーブル４０９Ａ及び４０９Ｂ（図１２）を作成する。モニタ時間帯に、Ｉ／Ｏ頻度のモニタが行われるからである。なお、テーブル４０９Ｂには、上記算出された仮想ページ数分の仮想ページＩＤが登録される。
＊プログラム４１３は、対象ＶＶＯＬについて、「割当ティアＩＤ」及び「格納閾値」を、テーブル４１２（図１５）に登録する。【０１４９】
＜移行の定義＞。【０１５０】
図２０は、移行定義処理のフローを示す。【０１５１】
（Ｓ２００１）
ＵＩ制御プログラム４１３は、移行定義ＧＵＩを表示する。そして、プログラム４１３は、そのＧＵＩを通じて種々の設定を受け付ける。【０１５２】
図２１は、移行定義ＧＵＩ２１００を示す。【０１５３】
ＧＵＩ２１００は、ＶＶＯＬのＩＤを管理者が指定するための入力ツールを有する。管理者は、移行定義の対象とするＶＶＯＬ（以下、この＜移行の定義＞の説明において、「対象ＶＶＯＬ」と言う）のＩＤを、その入力ツールを用いて表示させる。【０１５４】
ＧＵＩ２１００は、表示されているＩＤが表すＶＶＯＬについて、テーブル４１２（図１５）に設定すべき情報要素「ページ単位移行」、「ＶＯＬ単位移行」、「ティア維持」の値を入力するために管理者が使用する入力ツールを有する。【０１５５】
プログラム４１３は、管理者からの操作に応じて、例えば下記の制御を行う。
＊プログラム４１３は、「ページ単位移行」及び「ＶＯＬ単位移行」の一方の“ＯＮ”が選択された場合、「ページ単位移行」及び「ＶＯＬ単位移行」の他方の“ＯＮ”を選択不可能に制御する。つまり、プログラム４１３は、「ページ単位移行」と「ＶＯＬ単位移行」の両方が“ＯＮ”にされることが無いよう制御する。
＊プログラム４１３は、「ページ単位移行」及び「ＶＯＬ単位移行」の一方の“ＯＦＦ”が選択されても、「ページ単位移行」及び「ＶＯＬ単位移行」の他方の“ＯＦＦ”を選択可能のままとする（すなわち選択不可能としない）。
＊プログラム４１３は、「ＶＯＬ単位移行」の“ＯＮ”が選択された場合、「ティア維持」の“ＯＮ”を選択可能とし、「ティア維持」の“ＯＦＦ”を選択不可能とする。一方、プログラム４１３は、「ＶＯＬ単位移行」の“ＯＦＦ”が選択された場合、「ティア維持」の“ＯＮ”を選択不可能とし、「ティア維持」の“ＯＦＦ”を選択可能とする。【０１５６】
再び図２０を参照する。【０１５７】
（Ｓ２００２）
プログラム４１３は、テーブルを更新する。具体的には、例えば、プログラム４１３は、テーブル４１２（図１５）における、図２１のＧＵＩ２１００に入力されたＶＶＯＬ  ＩＤに対応する欄に、そのＧＵＩ２１００に入力された情報要素「ページ単位移行」、「ＶＯＬ単位移行」及び「ティア維持」の値を登録する。【０１５８】
＜情報の表示＞。【０１５９】
図２２は、情報表示処理のフローを示す。【０１６０】
ＵＩ制御プログラム４１３は、管理装置１０７から表示命令を受け（Ｓ２２０１）、表示命令で指定されている情報を管理装置１０７に表示する（Ｓ２２０２）。【０１６１】
表示可能な情報の種類として、例えば、テーブル４０１〜４１２のうちの少なくとも一つ（或いはそれを加工することにより得られる情報（例えば、グラフ、サマリーなど））がある。【０１６２】
図２３は、度数分布ＧＵＩ２３００を示す。【０１６３】
度数分布ＧＵＩ２３００は、図２２のＳ２２０２で表示される。具体的には、例えば、図２２のＳ２２０１で、管理装置１０７が、管理者からの要求に従って、管理者所望のＶＶＯＬ  ＩＤを指定した度数分布表示命令を送信する。図２２のＳ２２０２で、プログラム４１３が、その命令に応答して、その命令で指定されているＶＶＯＬ  ＩＤに対応した度数分布をテーブル４１０（図１３）から抽出し、抽出した度数分布を、図２３に示すように管理装置１０７に表示する。なお、度数分布は、表形式で表示されているが、それに代えて又は加えて、グラフ形式など他の形式で表示されても良い。【０１６４】
管理者は、ＧＵＩ２３００に表示されている度数分布を見て、所望のＶＶＯＬ内のデータ要素を移行するか否かを判断する。例えば、管理者は、平均Ｉ／Ｏ数が高い仮想ページ数がたくさん存在すると思った場合には、所望のＶＶＯＬ内のデータ要素の移行をストレージシステム１０３に指示して良い（例えば、ＧＵＩ２３００にある「移行実行」ボタンを押して良い）。【０１６５】
このように、度数分布は、データ移行（ＶＶＯＬ内のデータ要素の移行）を行うか否かを管理者が判断するための判断材料として用いられる。別の言い方をすれば、データ移行が自動で実行されるのであれば、度数分布は計算されなくて良い。【０１６６】
＜ライト処理（キャッシュメモリへのライト）＞。【０１６７】
図２４は、ライト処理（キャッシュメモリへのライト）のフローを示す。【０１６８】
（Ｓ２４０１）
Ｉ／Ｏ制御プログラム４１４が、ライトコマンドをホスト１０１から受信する。【０１６９】
（Ｓ２４０２）
プログラム４１４が、受信したライトコマンドが有するＩ／Ｏ先情報から、ライト先のＶＶＯＬ及び仮想ページを特定する。ここでは、複数の仮想ページが特定されることが多い。なぜなら、ライト対象のデータのサイズは、通常、一つの仮想ページの容量よりも大きいからである。特定された仮想ページ毎に、Ｓ２４０３以降が行われる。以下、一つの仮想ページを例に採り（図２４の説明において、「対象仮想ページ」と言う）、Ｓ２４０３以降を説明する。また、図２４の説明において、対象仮想ページに対するライト対象のデータ要素を「対象データ要素」と言う。【０１７０】
（Ｓ２４０３）
プログラム４１４は、対象仮想ページのＩＤが、移行ページテーブル４１１に存在するか否かを判断する。この判断の結果が否定的の場合、Ｓ２４０４〜Ｓ２４０６が行われ、この判断の結果が肯定的の場合、Ｓ２４０７〜Ｓ２４０８が行われる。【０１７１】
（Ｓ２４０４）
プログラム４１４は、アロケーションテーブル４０７（図１０）を基に、対象仮想ページに、実ページが割り当てられているか否かを判断する。この判断の結果が否定的であれば、Ｓ２４０５が行われる。【０１７２】
（Ｓ２４０５）
プログラム４１４が、以下の処理を行う。
＊プログラム４１４は、ライト先のＶＶＯＬに対応したプール及びそのプール内のデフォルトティアを、ＶＶＯＬ管理テーブル４０４（図８）を基に特定する。
＊プログラム４１４は、ティア管理テーブル４０２（図６）及び実ページ管理テーブル４０８（図１１）を基に、特定されたデフォルトティア内のフリーの実ページを特定する。
＊プログラム４１４は、対象仮想ページに、特定した実ページを割り当てる。すなわち、プログラム４１４は、アロケーションテーブル４０７（図１０）における、対象仮想ページのＩＤに対応した欄に、割り当てた実ページのＩＤと、その実ページを有するティアのＩＤと、そのティアを有するプールのＩＤとを登録する。
＊プログラム４１４は、デフォルトティアからフリーの実ページを特定できない場合には、ライト先のＶＶＯＬに対応した割当ティアからフリーの実ページを特定し、特定した実ページを対象仮想ページに割り当ててよい。
＊プログラム４１４は、テーブル４０２（図６）における、割り当てた実ページを有するティア（このＳ２４０３の説明において「割当元ティア」と言う）の「使用割合」の値を、更新する。
＊プログラム４１４は、割当元ティアの「使用割合」の更新後の値が割当元ティアの「ティア閾値」の値を超えているか否かの判断（以下、「判断Ｚ」と言う）を行う。割当元ティアの「ティア閾値」の値は、テーブル４０２（図６）に登録されている値、又は、テーブル４１２（図１５）に登録されている値であるが、テーブル４１２に登録されている値が優先的に採用されて良い。
＊プログラム４１４は、判断Ｚの結果が肯定的であれば、下記（ａ）及び（ｂ）のうちの少なくとも一つの処理を行って良い。
（ａ）プログラム４１４は、エラーを、管理装置１０７（及び／又は、ライトコマンドの送信元のホスト１０１）に通知して良い。管理者は、割当元ティアについてエラーを知った場合、割当元ティアにＲＶＯＬを追加することができる。
（ｂ）プログラム４１４は、再配置プログラム４１５を呼び出す。再配置プログラム４１５が、図３８に示す処理を行う。図３８に示す処理は、後に説明する。【０１７３】
（Ｓ２４０６）
プログラム４１４は、対象仮想ページに格納されるデータ要素のためのＣＭ領域をキャッシュメモリから確保する。【０１７４】
（Ｓ２４０７）
プログラム４１４は、移行ページテーブル４１１における、対象仮想ページに対応した「移行ステータス」の値に応じて、ＣＭ領域を確保する。具体的には、例えば、下記の通りである。【０１７５】
＜＜ケースＡ：    「移行ステータス」が“未移行”＞＞
例えば、以下の（具体例Ａ１）及び（具体例Ａ２）のうちのいずれかが行われる。
（具体例Ａ１）
＊プログラム４１４は、ＣＭ領域を確保し、対象仮想ページに対応した移行先ティアにおけるフリーの実ページを、ライト先として決定する。より具体的には、例えば、プログラム４１４は、移行先ティアにおけるいずれかのフリーの実ページ内のデータ要素がキャッシュメモリにあれば、そのデータ要素が存在するＣＭ領域を確保し、且つ、そのフリーの実ページを、ライト先として決定する。移行先ティアにおけるフリーの実ページは、前述したように、テーブル４０２（図６）、及び４０８（図１１）を基に特定することができる。
＊プログラム４１４は、対象仮想ページに対応した「移行ステータス」を“移行済”に更新する。この結果、対象仮想ページについて、データ要素の移行は行われない。すなわち、言いかえれば、対象仮想ページについてデータ要素の移行がキャンセルされたことになる。
＊プログラム４１４は、対象仮想ページに、元の実ページに代えて、決定したライト先の実ページを割り当てる。すなわち、プログラム４１４は、アロケーションテーブル４０７における、対象仮想ページのＩＤに対応した欄に、上記決定したライト先の実ページのＩＤ、及び、その実ページを有するティアのＩＤ（移行先ティアのＩＤ）を上書きする。
＊プログラム４１４は、実ページ管理テーブル４０８（図１１）における、対象仮想ページに割り当てられていた元の実ページの「ステータス」を、“フリー”に更新する。また、プログラム４１４は、そのテーブル４０８における、対象仮想ページに新たに割り当てられた実ページ（決定したライト先の実ページ）の「ステータス」を“使用中”に更新する。
（具体例Ａ２）
＊プログラム４１４は、ＣＭ領域を確保し、対象仮想ページに割り当てられている実ページ（移行元ティア内の実ページ）を、ライト先として決定する。より具体的には、例えば、プログラム４１４は、移行先ティアにおけるいずれのフリーの実ページ内のデータ要素もキャッシュメモリになければ、ＣＭ領域（例えば、対象仮想ページに割り当てられている実ページ内のデータ要素が存在する領域）を確保し、且つ、対象仮想ページに割り当てられている実ページ（移行元ティア内の実ページ）を、ライト先として決定する。
＊プログラム４１４は、対象仮想ページに対応した「移行ステータス」を“中断”に更新して良い。これにより、例えば、対象仮想ページについては、再配置プログラム４１５によるデータ移行は行われない。なお、この「移行ステータス」の値は、例えば、プログラム４１４によって、後述のデステージが済んだ場合に、“中断”から“未移行”に戻されて良い。【０１７６】
＜＜ケースＢ：    「移行ステータス」が“移行中”＞＞
例えば、以下の（具体例Ｂ１）〜（具体例Ｂ３）のうちのいずれかが行われる。
（具体例Ｂ１）
＊プログラム４１４は、対象仮想ページに対応した「移行ステータス」を“中断”に更新する。そして、プログラム４１４は、前述の（具体例Ａ１）又は（具体例Ａ２）を行う。（具体例Ａ１）が行われた場合、対象仮想ページに対応した「移行ステータス」は、“移行済”に更新されることになる。（具体例Ａ２）が行われた場合、対象仮想ページに対応した「移行ステータス」は、“未移行”に更新されることになる。
（具体例Ｂ２）
＊プログラム４１４は、ＣＭ領域を確保する。（具体例Ｂ２）の場合、デステージは、対象仮想ページに対応した「移行ステータス」が“移行済”に更新された後に行われる。それ故、ライト先（デステージ先）は、移行先ティア内の実ページである。なぜなら、その時点で、対象仮想ページには、移行先ティア内の実ページが割り当てられているからである。
（具体例Ｂ３）
＊プログラム４１４は、ＣＭ領域を確保する。（具体例Ｂ３）の場合、デステージは、対象仮想ページに対応した「移行ステータス」が“移行中”の最中に行われ、データ要素は、対象仮想ページに割り当てられている実ページと、移行先ティア内の実ページとの両方にデステージされる（いわゆる二重ライトが行われる）。【０１７７】
＜＜ケースＣ：    「移行ステータス」が“移行済”＞＞
例えば、以下の処理が行われる。
＊プログラム４１４は、ＣＭ領域を確保する。このケースでは、ライト先（デステージ先）は、移行先ティア内の実ページである。なぜなら、対象仮想ページに対応した「移行ステータス」が“移行済”に更新されているので、対象仮想ページに割り当てられている実ページが、後に説明するように、移行先となった実ページに変更されるからである。【０１７８】
（Ｓ２４０８）
Ｓ２４０２で特定された全ての仮想ページについてＣＭ領域が確保された場合、プログラム４１４は、確保された一以上のＣＭ領域にライト対象のデータを書き込み、完了をホスト１０１に応答する。【０１７９】
＜ライト処理（デステージ））＞。【０１８０】
図２５は、デステージ処理のフローを示す。【０１８１】
Ｉ／Ｏ制御プログラム４１４は、ライト対象のデータを構成する各データ要素について、デステージ処理を行う。【０１８２】
（Ｓ２５０１）
プログラム４１４は、デステージを行う。すなわち、プログラム４１４は、キャッシュメモリに存在する複数のデータ要素のうち実ページに未だ書き込まれていないデータ要素（ダーティのデータ要素）を実ページに書き込む。デステージ先の実ページは、その実ページのライト先となった仮想ページに割り当てられている実ページ（アロケーションテーブル４０７から特定される実ページ）である。なお、このとき、その仮想ページに対応した「移行ステータス」が“中断”になっていれば、プログラム４１４は、その「移行ステータス」を“未移行”に更新して良い。【０１８３】
（Ｓ２５０２）
プログラム４１４は、テーブル４０３（図７）又は４０４（図８）を基に、モニタテーブル４０９Ａ又は４０９Ｂを更新する必要があるか否かを判断する。テーブル４０４（図８）が優先されて良い。具体的には、例えば、プログラム４１４は、以下の二つの判断Ｐ及び判断Ｑを行う。
（判断Ｐ）プログラム４１４は、Ｓ２５０１でのデステージ先の実ページを有するプール（以下、図２５の説明において「対象プール」と言う）に対応した「再配置」が“ＯＮ”か否か、又は、そのデステージ先の実ページが割り当てられている仮想ページを有するＶＶＯＬ（以下、図２５の説明において「対象ＶＶＯＬ」と言う）に対応した「再配置」が“ＯＮ”か否かを判断する。この判断Ｐの結果が否定的の場合、Ｓ２５０３は行われない（すなわち、モニタテーブル４０９Ａ又は４０９Ｂを更新する必要が無いということになる）。
（判断Ｑ）判断Ｐの結果が肯定的の場合、プログラム４１４は、現在の時刻が、対象プールに対応した「モニタ時間帯」の値が表す時間帯内か否かを判断する。この判断Ｑの結果が否定的の場合、Ｓ２５０３は行われない。一方、判断Ｐだけでなくこの判断Ｑの結果も肯定的の場合、Ｓ２５０３が行われる（すなわち、モニタテーブル４０９Ａ又は４０９Ｂを更新する必要があるということになる）。【０１８４】
（Ｓ２５０３）
プログラム４１４は、モニタテーブル４０９Ａ又は４０９Ｂを更新する。具体的には、例えば、下記の通りである。
＊プログラム４１４は、テーブル４１２（図１５）において、対象ＶＶＯＬに対応した「ＶＯＬ単位移行」が“ＯＮ”になっていれば、対象ＶＶＯＬに対応したアクティブの第１種のモニタテーブル４０９Ａを更新する。具体的には、例えば、プログラム４１４は、アクティブ第１種のモニタテーブル４０９Ａにおける、「合計Ｉ／Ｏ数」の値を更新し（例えば１インクリメントし）、且つ、「最終Ｉ／Ｏ時刻」の値を更新する。また、プログラム４１４は、例えば、対象ＶＶＯＬについて、デステージ時点の時刻を、図示しないＩ／Ｏ履歴テーブルに追加する。Ｉ／Ｏ履歴テーブルは、例えば、実ページに対するＩ／Ｏが行われる都度に、そのＩ／Ｏが行われた時刻が記録される（更に、Ｉ／Ｏの種類（リード又はライト）などの別種の情報が記録されても良い）。例えば、そのＩ／Ｏ履歴テーブルを基に、後に、プログラム４１４は、アクティブの第１種のモニタテーブル４０９Ａにおける「平均Ｉ／Ｏ数」及び「最大Ｉ／Ｏ数」を更新して良い。
＊プログラム４１４は、テーブル４１２（図１５）において、対象ＶＶＯＬに対応した「ページ単位移行」が“ＯＮ”になっていれば、対象ＶＶＯＬに対応したアクティブの第２種のモニタテーブル４０９Ｂを更新する。具体的には、例えば、プログラム４１４は、アクティブの第２種のモニタテーブル４０９Ｂにおける、デステージされたデータ要素のライト先仮想ページに対応する「合計Ｉ／Ｏ数」の値を更新し（例えば１インクリメントし）、且つ、「最終Ｉ／Ｏ時刻」の値を更新する。また、プログラム４１４は、例えば、そのライト先仮想ページについて、デステージ時点の時刻を、前述のＩ／Ｏ履歴テーブルに追加する。この場合、Ｉ／Ｏ履歴テーブルには、ライト先の仮想ページのＩＤが記録されて良い。例えば、そのＩ／Ｏ履歴テーブルを基に、後に、プログラム４１４は、アクティブの第２種のモニタテーブル４０９Ｂにおける「平均Ｉ／Ｏ数」及び「最大Ｉ／Ｏ数」を更新して良い。【０１８５】
＜リード処理＞。【０１８６】
図２６は、リード処理のフローを示す。【０１８７】
（Ｓ２６００）
Ｉ／Ｏ制御プログラム４１４が、リードコマンドをホスト１０１から受信する。そして、プログラム４１４が、受信したリードコマンドが有するＩ／Ｏ先情報から、リード元のＶＶＯＬ及び仮想ページを特定する。【０１８８】
（Ｓ２６０１）
プログラム４１４は、キャッシュメモリ上に、リード対象のデータがあるか否かを判断する。この判断の結果が否定的の場合、Ｓ２６０３が行われ、この判断の結果が肯定的の場合、Ｓ２６０２が行われる。【０１８９】
（Ｓ２６０２）
プログラム４１４は、キャッシュメモリ上のリード対象のデータを、ホスト１０１に送信する。この場合、リード元のＶＶＯＬに対応するモニタテーブル４０９Ａ及び４０９Ｂは更新されない。実ページに対するＩ／Ｏが行われていないからである。【０１９０】
（Ｓ２６０３）
プログラム４１４は、アロケーションテーブル４０７を基に、Ｓ２６００で特定された仮想ページに実ページが割り当てられているか否かを判断する。この判断の結果が否定的の場合、Ｓ２６０４が行われ、この判断の結果が肯定的の場合、Ｓ２６０５が行われる。【０１９１】
（Ｓ２６０４）
プログラム４１４は、所定の応答（例えば、ゼロを表すデータ）をホスト１０１に送信する。【０１９２】
（Ｓ２６０５）
プログラム４１４は、Ｓ２６００で特定された一以上の仮想ページのＩＤのうちの少なくとも一つが移行ページテーブル４１１に登録されており、且つ、その登録されている仮想ページＩＤに対応する「移行ステータス」が“移行中”か否かを判断する。この判断の結果が否定的の場合、Ｓ２６０７が行われ、この判断の結果が肯定的の場合、Ｓ２６０６が行われる。【０１９３】
（Ｓ２６０６）
プログラム４１４は、Ｓ２６００で特定された一以上の仮想ページにそれぞれ割り当てられている一以上の実ページ（アロケーションテーブル４０７から特定される一以上の実ページ）からデータ要素を読み出す。プログラム４１４は、それらのデータ要素で構成したリード対象のデータを、ホスト１０１に送信する。【０１９４】
（Ｓ２６０７）
プログラム４１４は、「移行ステータス」が“移行中”の仮想ページについて、「移行ステータス」が“移行済”に更新されるまで待つ。その後、プログラム４１４は、Ｓ２６００で特定された一以上の仮想ページにそれぞれ割り当てられている一以上の実ページ（アロケーションテーブル４０７から特定される一以上の実ページ）からデータ要素を読み出す。プログラム４１４は、それらのデータ要素で構成したリード対象のデータを、ホスト１０１に送信する。【０１９５】
（Ｓ２６０８）
プログラム４１４は、テーブル４０３（図７）又は４０４（図８）を基に、モニタテーブル４０９Ａ又は４０９Ｂを更新する必要があるか否かを判断する。テーブル４０４（図８）が優先されて良い。具体的には、例えば、プログラム４１４は、以下の二つの判断Ｖ及び判断Ｗを行う。
（判断Ｖ）プログラム４１４は、リード元のＶＶＯＬに割り当てられているプール（以下、図２６の説明において「リード元プール」と言う）に対応した「再配置」が“ＯＮ”か否か、又は、リード元のＶＶＯＬに対応した「再配置」が“ＯＮ”か否かを判断する。この判断Ｖの結果が否定的の場合、Ｓ２６０９は行われない（すなわち、モニタテーブル４０９Ａ又は４０９Ｂを更新する必要が無いということになる）。
（判断Ｗ）判断Ｖの結果が肯定的の場合、プログラム４１４は、現在の時刻が、対象プールに対応した「モニタ時間帯」の値が表す時間帯内か否かを判断する。この判断Ｗの結果が否定的の場合、Ｓ２６０９は行われない。一方、判断Ｖだけでなくこの判断Ｗの結果も肯定的の場合、Ｓ２６０９が行われる（すなわち、モニタテーブル４０９Ａ又は４０９Ｂを更新する必要があるということになる）。【０１９６】
（Ｓ２６０９）
プログラム４１４は、モニタテーブル４０９Ａ又は４０９Ｂを更新する。具体的には、例えば、下記の通りである。
＊プログラム４１４は、テーブル４１２（図１５）において、リード元のＶＶＯＬに対応した「ＶＯＬ単位移行」が“ＯＮ”になっていれば、リード元のＶＶＯＬに対応したアクティブの第１種のモニタテーブル４０９Ａを更新する。具体的には、例えば、プログラム４１４は、アクティブ第１種のモニタテーブル４０９Ａにおける、「合計Ｉ／Ｏ数」の値を更新し（例えば１インクリメントし）、且つ、「最終Ｉ／Ｏ時刻」の値を更新する。また、プログラム４１４は、例えば、リード元のＶＶＯＬについて、データをリードした時刻を、前述したＩ／Ｏ履歴テーブルに追加する。例えば、そのＩ／Ｏ履歴テーブルを基に、後に、プログラム４１４は、アクティブの第１種のモニタテーブル４０９Ａにおける「平均Ｉ／Ｏ数」及び「最大Ｉ／Ｏ数」を更新して良い。
＊プログラム４１４は、テーブル４１２（図１５）において、リード元のＶＶＯＬに対応した「ページ単位移行」が“ＯＮ”になっていれば、リード元のＶＶＯＬに対応したアクティブの第２種のモニタテーブル４０９Ｂを更新する。具体的には、例えば、プログラム４１４は、アクティブの第２種のモニタテーブル４０９Ｂにおける、リード元のライト先仮想ページに対応する「合計Ｉ／Ｏ数」の値を更新し（例えば１インクリメントし）、且つ、「最終Ｉ／Ｏ時刻」の値を更新する。また、プログラム４１４は、例えば、そのリード元の仮想ページについて、リード時点の時刻を、前述のＩ／Ｏ履歴テーブルに追加する。この場合、Ｉ／Ｏ履歴テーブルには、リード元の仮想ページのＩＤが記録されて良い。例えば、そのＩ／Ｏ履歴テーブルを基に、後に、プログラム４１４は、アクティブの第２種のモニタテーブル４０９Ｂにおける「平均Ｉ／Ｏ数」及び「最大Ｉ／Ｏ数」を更新して良い。【０１９７】
＜Ｉ／Ｏ頻度のモニタと再配置処理との関係＞。【０１９８】
図２７は、Ｉ／Ｏ頻度のモニタと再配置との関係の概要を示す。【０１９９】
実ページに対するＩ／Ｏがモニタされ、実ページに対するＩ／Ｏが行われた場合に、その実ページが割り当てられている仮想ページ又はその仮想ページを有するＶＶＯＬのＩ／Ｏ頻度が更新される。つまり、モニタテーブル４０９Ａ又は４０９Ｂが更新される。別の言い方をすれば、前述したように、Ｉ／Ｏ制御プログラム４１４がリードコマンドをホスト１０１から受けたものの、実ページからデータ要素をリードしなかった場合には、モニタテーブル４０９は更新されない。【０２００】
モニタテーブル４０９Ａ又は４０９Ｂの更新に応じて、度数分布テーブル４１０が更新される。なお、度数分布テーブル４１０は、予め用意されていなくて良く、例えば、管理者から度数分布の表示が命じられた場合に、モニタテーブル４０９Ｂを基に度数分布テーブル４１０が作成され、そのテーブル４１０を基に度数分布が表示されてよい。なお、度数分布に代えて、モニタテーブル４０９Ａ又は４０９Ｂが表示されてよい。【０２０１】
再配置処理は、ティア判定処理と移行処理とを有する。ティア判定処理では、移行ページテーブル４１１が作成される。そのテーブル４１１は、モニタテーブル４０９Ａ又は４０９Ｂが表すＩ／Ｏ頻度と、ティア管理テーブル４０２（図６）内のティアレンジとを基に作成されてよい。移行処理では、作成された移行ページテーブル４１１を基に、ページ単位のデータ移行、或いは、ＶＯＬ単位のデータ移行が行われる。【０２０２】
＜再配置処理＞。【０２０３】
再配置処理は、或るティアの使用割合がそのティアのティア閾値を超えた場合に行われても良いし、定期的に（例えば「再配置実行時刻」の値が表す時刻の都度に）行われても良い。【０２０４】
図２８は、再配置処理のフローを示す。なお、図２８は、一つのＶＶＯＬ（図２８の説明において「対象ＶＶＯＬ」と言う）についてのフローである。【０２０５】
（Ｓ２８０１）
再配置プログラム４１５は、対象ＶＶＯＬについてデータ移行を実行するか否かを判断する。具体的には、例えば、以下の処理が行われる。
＊プログラム４１５は、ＶＶＯＬ管理テーブル４０４（図８）において、対象ＶＶＯＬに対応した「自動実行」が“ＯＮ”になっているか否かを判断する。対象ＶＶＯＬに対応した「自動実行」の値の設定が無い場合、プログラム４１５は、プール管理テーブル４０３（図７）において、対象ＶＶＯＬに割り当てられているプール（以下、図２８の説明において「対象プール」）に対応した「自動実行」が“ＯＮ”になっているか否かを判断する。
＊対象ＶＶＯＬ又は対象プールに対応した「自動実行」が“ＯＮ”の場合、プログラム４１５は、移行定義テーブル４１２（図１５）において、対象ＶＶＯＬに対応した「ページ単位移行」及び「ＶＯＬ単位移行」のいずれかが“ＯＮ”か否かを判断する。この判断の結果が否定的の場合、Ｓ２８０１の判断の結果が否定的である。この判断の結果が肯定的の場合、プログラム４１５は、対象ＶＶＯＬ又は対象プールに対応した「再配置実行時刻」の値が表す時刻に現在の時刻が達しているか否かを判断する。この判断の結果が肯定的の場合、Ｓ２８０１の判断の結果が肯定的であり、この判断の結果が否定的の場合、Ｓ２８０１の判断の結果が否定的である。
＊対象ＶＶＯＬ又は対象プールに対応した「自動実行」が“ＯＦＦ”の場合、プログラム４１５は、管理者から管理装置１０５を通じて、対象ＶＶＯＬについてデータ移行の指示を受け付けたならば、Ｓ２８０１の判断の結果は肯定的となる。【０２０６】
プログラム４１５は、対象ＶＶＯＬ又は対象プールに対応した「自動実行」が“ＯＦＦ”であり（Ｓ２８０２：ＮＯ）、且つ、対象ＶＶＯＬについてＶＯＬ単位でのデータ移行の指示を受けていれば（Ｓ２８０３：ＮＯ）、Ｓ２８０４を行う。【０２０７】
プログラム４１５は、対象ＶＶＯＬ又は対象プールに対応した「自動実行」が“ＯＦＦ”であり（Ｓ２８０２：ＮＯ）、且つ、対象ＶＶＯＬについてページ単位でのデータ移行の指示を受けていれば（Ｓ２８０３：ＹＥＳ）、Ｓ２８０６を行う。【０２０８】
プログラム４１５は、対象ＶＶＯＬ又は対象プールに対応した「自動実行」が“ＯＮ”であり（Ｓ２８０２：ＹＥＳ）、対象ＶＶＯＬに対応した「ＶＯＬ単位移行」が“ＯＮ”であり（Ｓ２８０５：ＮＯ）、且つ、対象ＶＶＯＬに対応したＩ／Ｏ頻度（例えば、対象ＶＶＯＬに対応したモニタテーブル４０９Ａが表す合計Ｉ／Ｏ数、平均Ｉ／Ｏ数、及び、最大Ｉ／Ｏ数）が所定の条件を満たしていれば、Ｓ２８０４を行う。なお、この時点で、これまでアクティブであったモニタテーブル４０９Ａが参照されるので、別のモニタテーブル４０９Ａ（スタンバイのテーブル４０９Ａ）がアクティブとされ、そのアクティブとなったモニタテーブル４０９Ａが、対象ＶＶＯＬについてのＩ／Ｏ頻度のモニタで使用される。【０２０９】
プログラム４１５は、対象ＶＶＯＬ又は対象プールに対応した「自動実行」が“ＯＮ”であり（Ｓ２８０２：ＹＥＳ）、且つ、対象ＶＶＯＬに対応した「ページ単位移行」が“ＯＮ”であれば（Ｓ２８０５：ＹＥＳ）、Ｓ２８０７を行う。【０２１０】
（Ｓ２８０４）
プログラム４１５は、対象ＶＶＯＬについてＶＯＬ単位の移行処理を行う。ＶＯＬ単位のデータ移行では、対象プールが有する複数のデータ要素のうち対象ＶＶＯＬに割り当てられている実ページ内のデータ要素が別のプールに移行される。ＶＯＬ単位の移行処理については、後に詳細に説明する。【０２１１】
（Ｓ２８０６）
プログラム４１５は、管理者からティアレンジが設定されているか否かを判断する。この判断の結果が否定的の場合、Ｓ２８０７が行われた後にＳ２８０８が行われ、この判断の結果が否定的の場合、Ｓ２８０７が行われることなくＳ２８０８が行われる。【０２１２】
（Ｓ２８０７）
プログラム４１５は、ティアレンジ決定処理を行う。この処理によって、ティアレンジが決定される。ティアレンジ決定の方法としては、幾つか考えられる。例えば、予め、複数種類のティアレンジが用意されていて良く、プログラム４１５が、ティア毎に、それら複数種類のティアレンジから任意のティアレンジを選択して良い。【０２１３】
（Ｓ２８０８）
プログラム４１５は、ティア判定処理を行う。ティア判定処理では、前述したように、移行ページテーブル４１１が作成される。【０２１４】
（Ｓ２８０９）
プログラム４１５は、作成した移行ページテーブル４１１に従って、ページ単位の移行処理を行う。ページ単位のデータ移行では、対象プール内において、或るティア内の実ページから別のティア内の実ページにデータ要素が移行される。ページ単位の移行処理については、後に詳細に説明する。【０２１５】
ＶＯＬ単位のデータ移行が手動での指示に応答して開始されるケースでは、例えば、ＵＩ制御プログラム４１３が、Ｓ２８０１よりも前の時点で、ＶＯＬ単位のデータ移行の指示を管理から受け付ける。【０２１６】
＜＜ＶＯＬ単位の移行処理＞＞。【０２１７】
図２９は、ＶＯＬ単位移行指示ＧＵＩ２９００を示す。以下の説明では、移行処理の対象とされるＶＶＯＬを「対象ＶＶＯＬ」と言い、対象ＶＶＯＬに割り当てられているプールを「移行元プール」と言い、移行対象のデータ要素を記憶している実ページを「移行元実ページ」と言い、移行元実ページを有するティアを「移行元ティア」と言い、移行対象のデータ要素の移行先となるプールを「移行先プール」と言い、移行対象のデータ要素の移行先となるティアを「移行先ティア」と言い、移行対象のデータ要素の移行先となる実ページを「移行先実ページ」と言う。【０２１８】
このＧＵＩ２９００が、プログラム４１３によって管理装置１０７に表示される。ＧＵＩ２９００は、例えば、ＶＶＯＬのＩＤと、移行先プールのＩＤと、ティア維持をＯＮにするか否かとを管理者が入力するための入力ツールを有する。ＧＵＩ２９００には、管理者によって選択されたＶＶＯＬ  ＩＤ及び移行先プールＩＤが表示される。【０２１９】
プログラム４１３は、例えば、ティア維持“ＯＦＦ”が選択されている間は、移行先プールＩＤとして、移行元プール以外のプールのＩＤを選択可能に表示してよい。しかし、例えば、ティア維持“ＯＮ”が選択されている間、プログラム４１３は、移行先プールＩＤとして、移行元プールが有する複数のティアと同じ複数のティアを有するプール（つまり対象プールの階層構成と同じ階層構成を有するプール）のＩＤのみを選択可能に表示する。なぜなら、そのようなプールでなければ、図３０及び図３１を参照して説明するティア維持移行処理ができないからである。【０２２０】
また、プログラム４１３は、表示されている移行先プールＩＤに対応したデフォルトティアＩＤを表示する。プログラム４１３は、例えば、表示されているプールＩＤに対応した割当ティアのＩＤの一覧を表示し、その一覧における管理者所望のＩＤを新たなデフォルトティアＩＤとして設定しても良い。【０２２１】
ＧＵＩ２９００にあるボタン「移行」が押された場合に、ＧＵＩ２９００を介して入力された設定に従って、ＶＯＬ単位の移行処理が行われる。【０２２２】
ＶＯＬ単位の移行処理としては、ティア維持移行処理と、ティア非維持移行処理とがある。ティア維持移行処理とティア非維持移行処理のどちらを行うかは、手動実行の場合は、例えばＧＵＩ２９００で指定する事ができ、自動実行の場合は、テーブル４１２（図１５）の設定（「ティア維持」が“ＯＮ”か“ＯＦＦ”か）に従って決定される。【０２２３】
図３０は、ティア維持移行処理の概要を示す。【０２２４】
ティア維持移行処理では、移行元実ページ内のデータ要素は、その移行元ティアのＩＤ（ティアの種類）と同じＩＤのティア内の実ページに移行される。具体的には、例えば、プール＃００が有するティア＃００内の実ページ＃Ｘに記憶されているデータ要素は、プール＃１１が有するティア＃００内の実ページ＃Ｙに移行される。移行後、実ページ＃Ｘの割当先の仮想ページ＃Ｚには、実ページ＃Ｘに代えて実ページ＃Ｙが割り当てられる。【０２２５】
図３１は、ティア維持移行処理のフローを示す。【０２２６】
（Ｓ３１０１）
再配置プログラム４１５は、ティア管理テーブル４０２（図６参照）を基に、複数のプールから移行先プールを選択する。移行先プールは、対象プールが有する複数のティアと同じ複数のティアを有するプール（つまり対象プールの階層構成と同じ階層構成を有するプール）である。【０２２７】
なお、このＳ３１０１は、例えば手動で既に移行先プールが選択されている場合には、行われなく良い。【０２２８】
（Ｓ３１０２）
プログラム４１５は、移行不可能か否かを判断する。具体的には、プログラム４１５は、プール管理テーブル４０３（図７）における、移行先プールに対応した「プールステータス」が“再配置中”か否かを判断する。この判断の結果が肯定的の場合、Ｓ３１０３が行われ、この判断の結果が否定的の場合、Ｓ３１０４が行われる。【０２２９】
（Ｓ３１０３）
別のプールが移行先プールとして選択される。例えば、自動実行の場合、プログラム４１５が、移行元プールが有する複数のティアと同じ複数のティアを有する別のプールを選択してよい。また、例えば、手動の場合、ＵＩ制御プログラム４１３が、図２９のＧＵＩ２９００にエラーを表すメッセージを表示し、管理者から、移行先プールＩＤの指定を受け付けてよい。この後、選択された移行先プールについてＳ３１０２が行われる。【０２３０】
（Ｓ３１０４）
プログラム４１５は、移行元プール及び移行先プールの両方の「プールステータス」の値を“再配置中”に更新する。また、この時点で、プログラム４１５は、移行元プールに代えて移行先プールが対象プールに割り当てられるようテーブル４０４（図８）を更新して良い。これにより、以後、対象ＶＶＯＬを指定したライトコマンドをＩ／Ｏ制御プログラム４１４が受け、そのライトコマンドに従うライト対象のデータ要素がデステージされる場合には、そのデータ要素は、移行先プール内の実データに書き込まれてよい。【０２３１】
（Ｓ３１０５）
プログラム４１５は、対象ＶＶＯＬの一以上の割当ティアから一つのティアを選択する。ここで選択されたティアは、一つの移行元ティアである。プログラム４１５は、その移行元ティア内の全ての移行対象のデータ要素を移行先ティア（選択された移行元ティアと同じＩＤのティアであって移行先プール内のティア）に移行したと仮定して、移行先ティアの使用割合が移行先ティアのティア閾値を越えるか否かを判断する。プログラム４１５は、この判断を、テーブル４０２（図６）、及び、４０８（図８）を基に行う。この判断の結果が肯定的の場合、Ｓ３１０６が行われ、この判断の結果が否定的の場合、Ｓ３１０７が行われる。【０２３２】
（Ｓ３１０６）
エラー処理が行われる。例えば、プログラム４１５は、エラーを管理装置１０７に表示して終了しても良い。或いは、例えば、プログラム４１５は、図３８に示す処理を行うことで、移行先ティアにフリーの実ページを増やしても良い。【０２３３】
（Ｓ３１０７）
プログラム４１５は、移行処理を行う。具体的には、例えば、下記の通りである。
＊プログラム４１５は、この移行処理用に移行ページテーブル４１１を作成する。具体的には、例えば、プログラム４１５は、テーブル４０２（図６）及び４０７（図１０）を基に、対象ＶＶＯＬを構成する複数の仮想ページのうちの、移行元ティア内の実ページが割り当てられている仮想ページのＩＤをテーブル４１１に登録する。また、プログラム４１５は、登録した仮想ページＩＤ毎に、移行元ティアのＩＤと、移行先ティアのＩＤとを登録し、且つ、「移行ステータス」として“未移行”を設定する。
＊プログラム４１５は、移行ページテーブル４１１に登録されている各仮想ページＩＤについて、以下の処理を行う。移行ページテーブル４１１に登録されている全ての仮想ページＩＤについて以下の処理が終了すると、Ｓ３１０７の終了となる。以下、一つの仮想ページ（Ｓ３１０７の説明で「対象仮想ページ」と言う）を例に採り説明する。
＊＊プログラム４１５は、対象仮想ページに対応した「移行ステータス」の値を“移行中”に更新する。
＊＊プログラム４１５は、移行先ティアからフリーの実ページを選択する。
＊＊プログラム４１５は、選択した実ページ（移行先実ページ）に、移行元ティア内の移行元実ページに記憶されているデータ要素を移行する。移行元実ページは、対象仮想ページに割り当てられている実ページである。
＊＊プログラム４１５は、移行元実ページの代わりに移行先実ページが対象仮想ページに割り当るようアロケーションテーブル４０７を更新する。つまり、プログラム４１５は、対象仮想ページに、移行先実ページのＩＤと、移行先ティアのＩＤと、移行先プールのＩＤとを対応付ける。
＊＊プログラム４１５は、対象仮想ページのＩ／Ｏ頻度（例えば、アクティブのテーブル４０９Ａ又は４０９Ｂ）を更新する。具体的には、例えば、対象仮想ページ又は対象ＶＶＯＬの合計Ｉ／Ｏ数が１インクリメントされる。
＊＊プログラム４１５は、テーブル４０２（図６）における、移行先ティアの「使用割合」の値を、更新する。
＊＊プログラム４１５は、対象仮想ページに対応する「移行ステータス」の値を“移行済”に更新する。【０２３４】
（Ｓ３１０８）
プログラム４１５は、移行元プールにおける全ての移行元ティア（対象ＶＶＯＬの全ての割当ティア）について、Ｓ３１０５以降が行われたか否かを判断する。この判断の結果が否定的であれば、Ｓ３１０５が行われていない移行元ティアについて、Ｓ３１０５が行われる。この判断の結果が肯定的であれば、Ｓ３１０９が行われる。【０２３５】
（Ｓ３１０９）
プログラム４１５は、移行元プール及び移行先プールの両方の「プールステータス」の値を、“再配置中”とは別の値、例えば、“モニタリング中”又は“非モニタリング中”に更新する。【０２３６】
図３２は、ティア非維持移行処理の概要を示す。【０２３７】
ティア非維持移行処理では、移行元プール内の全ての移行対象のデータ要素が、移行先プール内のデフォルトティアに移行される。具体的には、例えば、プール＃００内の全ての移行対象のデータ要素が、プール＃１１内のデフォルトティア＃０１に移行される。【０２３８】
図３３は、ティア非維持移行処理のフローを示す。【０２３９】
図３１のＳ３１０１〜Ｓ３１０９と同様の処理が行われる（Ｓ３３０１〜Ｓ３３０９）。Ｓ３３０５の処理は、Ｓ３１０５の処理と若干異なる。具体的には、Ｓ３１０５では、移行先ティアは、移行元ティアが異なれば異なっていたが、Ｓ３３０５では、移行元ティアが異なっていても、移行先ティアは、常に、移行先プール内のデフォルトティアである。【０２４０】
なお、ティア非維持移行処理では、例えば、次のような処理が行われてもよい。この場合、当該移行処理が行われることにより、ＶＶＯＬ内のデータ要素が、ＶＶＯＬのＩ／Ｏ頻度に適した配置とされることが期待できる。
＊プログラム４１５が、ＶＶＯＬに割り当てられている全ての実ページがどの程度の割合でどのティアに存在するかを基に、Ｉ／Ｏ頻度の閾値レンジを算出する。例えば、プログラム４１５が、ＶＶＯＬの全ての割当ティアのティアレンジと、各割当ティアが有する、ＶＶＯＬに割り当てられている実ページの数とを基に、Ｉ／Ｏ頻度の閾値レンジを算出する。
＊プログラム４１５が、算出された閾値レンジと、ＶＶＯＬのＩ／Ｏ頻度とを比較する。
＊プログラム４１５が、ＶＶＯＬのＩ／Ｏ頻度が算出された閾値レンジに収まっていなければ、ＶＶＯＬのＩ／Ｏ頻度が収まるような閾値レンジが得られるように、ＶＶＯＬ内の全てのデータ要素を、ＶＶＯＬに割り当てられているプール（移行元プール）から移行先プールに移行する。すなわち、プログラム４１５は、ＶＶＯＬに割り当てられている実ページ毎に、移行先プールにおける移行先ティアを決定し、決定した移行先ティア内の実ページにデータ要素を移行する。その結果、移行後の閾値レンジ（ＶＶＯＬに割り当てられた全ての移行先実ページを有する一以上のティアのティアレンジと、それら一以上のティアの各々における、ＶＶＯＬに割り当てられている移行先実ページの数とに基づいて得られる閾値レンジ）が、ＶＶＯＬのＩ／Ｏ頻度が収まる閾値レンジである。【０２４１】
＜＜ページ単位の移行処理＞＞。【０２４２】
図３４は、図２８のＳ２８０８での移行ページテーブル作成処理のフローを示す。【０２４３】
（Ｓ３４０１）
プログラム４１５は、対象ＶＶＯＬの先頭の仮想ページを選択する。【０２４４】
（Ｓ３４０２）
プログラム４１５は、アロケーションテーブル４０７を基に、選択された仮想ページに実ページが割り当てられているか否かを判断する。この判断の結果が否定的であれば、Ｓ３４０５が行われ、この判断の結果が肯定的であれば、Ｓ３４０３が行われる。【０２４５】
（Ｓ３４０３）
プログラム４１５は、第２種のモニタテーブル４０９Ｂを基に、選択された仮想ページに割り当てられている実ページ内のデータ要素が存在すべきティアを変更すべきか否かを判断する。具体的には、例えば、下記の通りである。
＊プログラム４１５は、選択された仮想ページに割り当てられている実ページを有するティア（Ｓ３４０３の説明において「対象ティア」）を、テーブル４０２（図６）から特定する。
＊プログラム４１５は、選択された仮想ページのＩ／Ｏ頻度（例えば、対象ＶＶＯＬに対応したアクティブのモニタテーブル４０９Ｂが表す合計Ｉ／Ｏ数、平均Ｉ／Ｏ数、及び最大Ｉ／Ｏ数のうちの少なくとも一つ）と、対象ティアに対応した「ティアレンジ」の値とを基に、選択された仮想ページに割り当てられている実ページ内のデータ要素を、対象ティアから別のティアに移行すべきかどうかを判断する。例えば、選択された仮想ページの対象ティアに対応したティアレンジに、選択された仮想ページのＩ／Ｏ頻度が収まっていなければ、データ要素が移行されるべきと判断される。【０２４６】
このＳ３４０３の判断の結果が否定的であれば、Ｓ３４０５が行われ、この判断の結果が肯定的であれば、Ｓ３４０４が行われる。【０２４７】
（Ｓ３４０４）
プログラム４１５は、選択された仮想ページのＩ／Ｏ頻度（例えば、対象ＶＶＯＬに対応したアクティブのモニタテーブル４０９Ｂが表す合計Ｉ／Ｏ数、平均Ｉ／Ｏ数、及び最大Ｉ／Ｏ数のうちの少なくとも一つ）と、対象ティアを有するプール内の他の割当ティアに対応した「ティアレンジ」の値とを基に、移行先ティアを決定する。ここでは、例えば、選択された仮想ページのＩ／Ｏ頻度が収まっているティアレンジに対応する割当ティア（対象ＶＶＯＬの割当ティア）が、移行先ティアとして決定される。そして、プログラム４１５は、移行先ページテーブル４１１に、選択された仮想ページのＩＤと、対象ティアのＩＤと、決定された移行先ティアのＩＤと、移行ステータス“未移行”とを登録する。【０２４８】
（Ｓ３４０５）
プログラム４１５は、選択された仮想ページが、対象ＶＶＯＬの末端の仮想ページであるか否かを判断する。この判断の結果が否定的であれば、Ｓ３４０６が行われ、この判断の結果が肯定的であれば、この移行ページテーブル作成処理が終了となる。【０２４９】
（Ｓ３４０６）
プログラム４１５は、対象ＶＶＯＬから、直前回に選択された仮想ページの次の仮想ページを選択する。その後、その選択された仮想ページについて、Ｓ３４０２以降が行われる。【０２５０】
この移行ページテーブル作成処理により、ページ単位の移行処理のための移動ページテーブル４１１が作成される。【０２５１】
図３５は、ページ単位の移行処理の概要を示す。【０２５２】
ページ単位の移行処理によれば、テーブル４１１に登録されている仮想ページ毎に、その仮想ページに割り当てられている実ページ内のデータ要素が、その仮想ページに対応した移行先ティア内のフリーの実ページに移行される。その仮想ページに、移行元実ページに代えて移行先実ページが割り当てられる。図３５に示すように、この移行処理によって、より上位のティアに移行されるデータ要素もあれば、より下位のティアに移行されるデータ要素ある。【０２５３】
どのティアについてどのようなティアレンジを設定するかによって、仮想ページのＩ／Ｏ頻度に適したティアにその仮想ページ内のデータ要素を配置することができる。【０２５４】
例えば、上位のティアほど、高いティアレンジが設定され、下位のティアほど、低いティアレンジが設定されるとする。具体的には、例えば、ティア＃１１が、高速且つ高信頼のティア（例えば、ＲＶＯＬ種類が“ＳＳＤ”のティア）であって、高いティアレンジが設定されるとする。また、例えば、ティア＃１３が、低速又は低信頼のティア（例えば、ＲＶＯＬ種類が“ＨＤＤ−ＳＡＴＡ”のティア）であって、低いティアレンジが設定されるとする。また、例えば、ティア＃１２が、ＶＶＯＬ＃５０のデフォルトティアであって、中程度のティアレンジが設定されるとする。この場合、ＶＶＯＬ＃５０を構成する仮想ページに対するライト対象のデータ要素は、一旦は、デフォルトティア＃１２内の実ページに書き込まれる。その後、例えば、ＶＶＯＬ＃５０内の或る仮想ページ＃ＡのＩ／Ｏ頻度が、高いティアレンジに収まるぐらいに高いＩ／Ｏ頻度になった場合には、その仮想ページ＃Ａに割り当てられている実ページ＃Ｘ内のデータ要素が、ティア＃１２からティア＃１１に移行される。一方、例えば、ＶＶＯＬ＃５０内の或る仮想ページ＃ＢのＩ／Ｏ頻度が、低いティアレンジに収まるぐらいに低いＩ／Ｏ頻度になった場合には、その仮想ページ＃Ｂに割り当てられている実ページ＃Ｙ内のデータ要素が、ティア＃１２からティア＃１３に移行される。【０２５５】
このように、どのティアにどのようなティアレンジを設定するかと、仮想ページ毎のＩ／Ｏ頻度のモニタ結果と、ページ単位のデータ移行とにより、ＶＶＯＬ内のデータ要素を適切なティア（物理記憶資源）に配置することができる。【０２５６】
図３６は、ページ単位の移行処理のフローを示す。【０２５７】
（Ｓ３６０１）
再配置プログラム４１５が、対象ＶＶＯＬに割り当てられているプールの「プールステータス」を“再配置中”に更新する。【０２５８】
（Ｓ３６０２）
プログラム４１５が、作成された移行ページテーブル４１１の先頭のレコードを選択する。【０２５９】
（Ｓ３６０３）
プログラム４１５は、選択されたレコードにおける「移行ステータス」の値を“移行中”に更新する。【０２６０】
（Ｓ３６０４）
プログラム４１５は、選択されたレコードが表す移行先ティアからフリーの実ページを選択し、選択した実ページ（移行先実ページ）に、移行元ティア内の移行元実ページに記憶されているデータ要素を移行する。移行元実ページは、対象仮想ページに割り当てられている実ページである。【０２６１】
（Ｓ３６０５）
プログラム４１５は、テーブルを更新する。具体的には、例えば、下記の通りである。
＊プログラム４１５は、移行元実ページの代わりに移行先実ページが、選択されたレコードが表す仮想ページ（以下、Ｓ３６０５の説明において「選択仮想ページ」）に割り当るよう、アロケーションテーブル４０７を更新する。つまり、プログラム４１５は、選択仮想ページに、移行先実ページのＩＤと、移行先ティアのＩＤとを対応付ける。
＊プログラム４１５は、選択仮想ページのＩ／Ｏ頻度（例えば、アクティブのテーブル４０９Ａ又は４０９Ｂ）を更新する。具体的には、例えば、選択仮想ページ又は対象ＶＶＯＬの合計Ｉ／Ｏ数が１インクリメントされる。
＊プログラム４１５は、テーブル４０２（図６）における、移行先ティアの「使用割合」の値を、更新する。【０２６２】
（Ｓ３６０６）
プログラム４１５は、選択されたレコードにおける「移行ステータス」の値を“移行済”に更新する。【０２６３】
（Ｓ３６０７）
プログラム４１５は、選択されたレコードが、仮想ページテーブル４１１における末端のレコードであるか否かを判断する。この判断の結果が否定的であれば、Ｓ３６０８が行われ、この判断の結果が肯定的であれば、この移行処理が終了となる。【０２６４】
（Ｓ３６０８）
プログラム４１５は、仮想ページテーブル４１１から、直前回に選択されたレコードの次のレコードを選択する。その後、その選択されたレコードについて、Ｓ３６０３以降が行われる。【０２６５】
以上が、ページ単位の移行処理のフローである。なお、ページ単位の移行処理の変形例として、例えば、下記の複数の変形例のうちの少なくとも一つが考えられる。
＊Ｓ３６０２のＳ３６０３の間で、プログラム４１５が、データ要素を移行先ティアに移行したと仮定して、移行先ティアの使用割合が移行先ティアのティア閾値を超えるか否かを判断してよい。超えると判断された場合、プログラム４１５は、Ｓ３６０３〜Ｓ３６０６をスキップしてＳ３６０７を行ってよい（すなわち、プログラム４１５は、選択されたレコードについてデータ要素の移行を行わなくて良い）。或いは、超えると判断された場合、プログラム４１５は、移行先ティアを割当ティアとしているＶＶＯＬについて再配置処理を行うことで、移行先ティアにフリーの実ページを増やし、その後で、Ｓ３６０３を開始してもよい。
＊Ｓ３６０５で移行先ティアの使用割合を更新したときに、プログラム４１５が、移行先ティアの使用割合が移行先ティアのティア閾値を超えるか否かを判断してよい。超えたと判断された場合、プログラム４１５は、管理装置１０７に警告を表示して良く、及び/又は、移行先ティアを割当ティアとしているＶＶＯＬについて再配置処理を行うことで、移行先ティアにフリーの実ページを増やしてよい。【０２６６】
＜ティア閾値の変更＞。【０２６７】
ＵＩ制御プログラム４１３が、管理者からティア閾値の変更を受け付けることができる。【０２６８】
図３７は、ティア閾値の変更処理のフローを示す。【０２６９】
（Ｓ３７０１）
プログラム４１３が、プールＩＤ及びティアＩＤと、そのティアＩＤについての変更後のティア閾値とを受け付ける。【０２７０】
（Ｓ３７０２）
プログラム４１３は、Ｓ３７０１で受けたプールＩＤ及びティアＩＤに対応した「使用割合」の値が、変更後のティア閾値を超えているか否かを判断する。【０２７１】
（Ｓ３７０３）
プログラム４１３は、Ｓ３７０２の判断の結果が肯定的の場合、エラーを管理装置１０７に表示する。【０２７２】
＜使用割合の監視＞。【０２７３】
前述したように、Ｉ／Ｏ制御プログラム４１４又は再配置プログラム４１５は、実ページにデータ要素を書き込んだ場合、テーブル４０２（図６）における、その実ページを有するティアの「使用割合」の値を、更新する。その後、プログラム４１４又は４１５は、「使用割合」の更新後の値が、そのティアに対応する「ティア閾値」の値を超えたか否かを判断してよい。この判断の結果が肯定的であれば、プログラム４１４又は４１５は、図３８に示す閾値オーバー対処処理を行って良い。【０２７４】
図３８は、閾値オーバー対処処理のフローを示す。【０２７５】
プログラム４１４又は４１５は、使用割合がティア閾値を超えたティアを有するプールの「プールステータス」が“再配置中”か否かを判断する（Ｓ３８０１）。【０２７６】
Ｓ３８０１の判断の結果が肯定的の場合、プログラム４１４又は４１５は、管理装置１０７又はホスト１０１に、警告を出す（Ｓ３８０２）。その警告は、例えば、使用割合がティア閾値を超えたティアのＩＤと、そのティアを有するプールのＩＤと、そのプールの「プールステータス」の値（“再配置中”）とを含んでよい。【０２７７】
Ｓ３８０１の判断の結果が否定的の場合、プログラム４１４又は４１５は、管理装置１０７又はホスト１０１に、警告を出し（Ｓ３８０３）、そのティアの使用割合がそのティアのティア閾値以下になるよう再配置処理（図２８）を実行する（Ｓ３８０４）。なお、Ｓ３８０３での警告は、例えば、使用割合がティア閾値を超えたティアのＩＤと、そのティアを有するプールのＩＤと、そのプールについて再配置処理を行うことを意味するメッセージとを含んでよい。【０２７８】
＜データ要素の集約＞。【０２７９】
本実施例では、データ要素の集約処理が行われて良い。【０２８０】
図３９は、データ要素の集約処理の概要を示す。【０２８１】
Ｉ／Ｏ制御プログラム４１４又は再配置プログラム４１５は、ＶＶＯＬ＃３９について、定期的に、或いは、データ要素を実ページに書き込んだときに（例えば、ＶＯＬ単位又はページ単位の移行処理の終了時に）、ＶＶＯＬ＃３９内のデータ要素の配置をチェックする。具体的には、例えば、プログラム４１４又は４１５は、ＶＶＯＬ＃３９の各割当ティア＃００、＃０１、＃０３について、ＶＶＯＬ＃３９内の全てのデータ要素のうちのどの程度の割合のデータ要素が存在するか（つまり格納割合）を算出する。プログラム４１４又は４１５は、ＶＶＯＬ＃３９の割当ティア＃００、＃０１、＃０３に、格納割合が格納閾値を超える割当ティアがあるか否かを判断する。【０２８２】
プログラム４１４又は４１５は、格納割合が格納閾値を超える格納割合の割当ティアがある場合、その割当ティア＃００以外の割当ティア＃０１及び＃０３内のデータ要素（ＶＶＯＬ＃３９内のデータ要素）を、割当ティア＃００（具体的には、例えば、割当ティア＃００のフリーの実ページ）に移行する。【０２８３】
なお、その後、例えば、プログラム４１４は、ＶＶＯＬ＃３９内の仮想ページ（特に、実ページが割り当てられていない仮想ページ）に対してライトが発生した場合には、その仮想ページに、必ず、割当ティア＃００から実ページを割り当てて良い。【０２８４】
なお、割当ティア＃０１及び＃０３内のデータ要素（ＶＶＯＬ＃３９内のデータ要素）を割当ティア＃００に移行すると割当ティア＃００の使用割合が割当ティア＃００のティア閾値を超えてしまうようであれば、プログラム４１４又は４１５は、下記の（ｘ）又は（ｙ）を行って良い。
（ｘ）プログラム４１４は、割当ティア＃０１及び＃０３内のデータ要素を割当ティア＃００に移行しない。
（ｙ）プログラム４１４は、対象ＶＶＯＬ以外のＶＶＯＬ内のデータ要素であって割当ティア＃００内のデータ要素を他のティアに移行することで割当ティア＃００にフリーの実ページを増やす。【０２８５】
以上が、実施例１についての説明である。【０２８６】
なお、実施例１において、例えば、ＶＶＯＬについて、デフォルトティアは、必ず、ＶＶＯＬの割当ティアのうちＩ／Ｏ性能（例えばＩ／Ｏ速度又はレスポンスタイム）が最大のティア（例えば割当ティアのうちの最上位のティア）であってもよい。ＶＶＯＬのＩ／Ｏ性能をなるべく大きくするためである。この場合、ＶＶＯＬに書き込まれるデータ要素は、なるべく上位の割当ティアに配置されてよい。但し、割当ティアの使用容量がその割当ティアのティア閾値を超えないように制御される。【０２８７】
また、例えば、各プール、或いは、複数のプールに共通して、退避用のティアが設けられて良い。プログラム４１４及び４１５は、退避用のティアには、通常、ホストからのライトコマンドに従うライトでも、再配置処理における移行処理でも、データ要素を書き込まない。しかし、プログラム４１４又は４１５は、例えば、データ要素の書き込み先のティア（以下、この段落の説明において「対象ティア」）の使用割合がそのティアのティア閾値を超える場合、対象ティア内の任意の実ページ内のデータ要素（或いは、対象ティアのティアレンジにＩ／Ｏ頻度が収まっていない仮想ページに割り当てられている、対象ティアにおける実ページ内のデータ要素）を、退避用のティアに移行し、それにより、対象ティアにフリーの実ページを増やしてもよい。この場合、プログラム４１４又は４１５は、対象ティア内の移行元実ページに割り当てられている仮想ページに、その移行元実ページに代えて、退避用のティア内の移行先実ページを割り当ててよい。その後、プログラム４１４又は４１５は、退避用ティア内の実ページに割り当てられている仮想ページのＩ／Ｏ頻度が収まっているティアレンジが設定されているティアに、その退避用ティア内の実ページに格納されているデータ要素を移行してもよい。退避用ティアは、例えば、最上位のティアと同種のＲＶＯＬで構成されたティアであってよい。【０２８８】
また、デフォルトティアは設定されなくて良い。ＶＶＯＬに対するホスト１０１からのライト対象のデータ要素は、なるべく上位のティアに書き込まれて良い。上位のティアの使用割合がティア閾値を超えた場合には、その上位のティアより一つ下位のティアにデータ要素が書き込まれて良い。【０２８９】
また、モニタテーブル４０９Ｂ及び４０９Ａのうち４０９Ａは必ずしも無くてもよい。この場合、モニタテーブル４０９Ｂが有する仮想ページ毎のＩ／Ｏ頻度を合計することでＶＶＯＬのＩ／Ｏ頻度が算出されても良い。【０２９０】
また、ページ単位の移行処理、又は、ＶＯＬ単位の移行処理は、中断することもできる。例えば、再配置プログラム４１５は、管理者から中断の指示を受けた場合、移行ステータス“移行中”については移行ステータス“移行済”にするまで処理をすすめてから、ページ単位の移行処理、又は、ＶＯＬ単位の移行処理を中断することができる。プログラム４１５は、例えば、中断の指示を受けてから一定時間後に、又は、再開の指示を受けたとき、移行ページテーブル４１１を基に移行処理を再開しても良い。或いは、プログラム４１５は、中断の指示を受けた場合、移行ページテーブル４１１を破棄し、次の移行処理の際には、アクティブのモニタテーブル４０９Ａ又は４０９Ｂを基に移行ページテーブル４１１を作成しても良い。【０２９１】
また、実施例１では、テーブル４１２（図１５）における「ＶＯＬ単位移行」及び「ページ単位移行」のどちらが“ＯＮ”であっても、モニタテーブル４０９Ａ及び４０９Ｂの両方が更新されても良い。【０２９２】
また、本実施例では、Thin ProvisioningのＶＶＯＬ２０３は、ホスト１０１から仮想ページのあるアドレスへのライト要求に応じて実ページが割り当てられるものであるとしたが、本発明はこの場合に限られるものでなく、以下の例に挙げるものも好ましい。これらの例の場合でも、実際に使用される容量の削減を実現できるからである。【０２９３】
１つ目の例は、次のとおりである。すなわち、ＶＶＯＬ２０３の複数の仮想ページのうちの一部の仮想ページに対しては又はＶＶＯＬ２０３の各仮想ページに含まれる一部の領域は、ホスト１０１から仮想ページのあるアドレスへのライト要求を受信する前に事前に実領域が割り当てられていて（プレアロケーション）、ホスト１０１から仮想ページのあるアドレスへのライト要求に応じて、既に割当済みの領域で十分でなく更なる割当が必要な場合に、追加の実領域が割り当てられる。【０２９４】
２つ目の例は、次のとおりである。すなわち、ＶＶＯＬ２０３の複数の仮想ページは、ホスト１０１から仮想ページのあるアドレスへのライト要求を受信する前に事前にゼロデータが格納されている実領域や制御用の領域（これらの領域はＳＳＤなどの記憶デバイス上の領域に対応するものである）に仮に割り当てられていて（仮アロケーション）、ホスト１０１から仮想ページのあるアドレスへのライト要求に応じて、仮の割当領域からデータが格納されるべき実ページへ割当先が変更される（本アロケーション)。この場合、本アロケーション実施前にホスト１０１から仮想ページのあるアドレスへリード要求を受信した場合、仮アロケーション先の実領域や制御用の領域に格納されているゼロデータがホスト１０１へ応答されることになる。【０２９５】
また、本実施例では、複数のプール２０１を一元的に管理するべく１つのテーブルで複数のプール２０１を管理することにしたが、本発明はそれに限られることなく、各プール２０１毎に実ページ２０７を一元的に管理するべく、プール２０１毎に管理用のテーブル（テーブル形式以外の形式の情報でも良い）を分けることも好ましい。【０２９６】
また、ティア３０３の種類は、本実施例で記載したＳＳＤ、ＨＤＤ−ＳＡＳ、ＨＤＤ−ＳＡＴＡなどの属性毎に分類されることに限られるものでなく、ＦＣインタフェースを有するＨＤＤや、ＨＤＤ形式でない記憶デバイス、例えばフラッシュメモリなどの半導体記憶媒体で構成されたデバイス、等の属性毎に分類されることも好ましい。この場合、各ティア３０３に関連付けられる仮想ページの属性や各ティア３０３に含まれる各実ページの属性も、本実施例で記載したＳＳＤ、ＨＤＤ−ＳＡＳ、ＨＤＤ−ＳＡＴＡなどの属性毎に分類されることに限られるものでなく、ＦＣインタフェースを有するＨＤＤや、ＨＤＤ形式でない記憶デバイス、例えばフラッシュメモリなどの半導体記憶媒体で構成されたデバイス、等の属性毎に分類されることになる。【０２９７】
さらに、ティア３０３の種類は、上記記憶デバイスのタイプという属性だけで分類されることに限られるものでもなく、上記記憶デバイスのタイプとＲＡＩＤ１からＲＡＩＤ５等のＲＡＩＤタイプとを組み合わせた属性や、上記記憶デバイスのタイプと上記記憶デバイスの性能（アクセス速度など）や記憶容量とＲＡＩＤ１からＲＡＩＤ５等のＲＡＩＤタイプとを組み合わせた属性毎に分類されることも好ましい。これらの場合、各ティア３０３に関連付けられる仮想ページの属性や各ティア３０３に含まれる各実ページの属性も、上記記憶デバイスのタイプという属性だけで分類されることに限られるものでもなく、上記記憶デバイスのタイプとＲＡＩＤ１からＲＡＩＤ５等のＲＡＩＤタイプとを組み合わせた属性や、上記記憶デバイスのタイプと上記記憶デバイスの性能（アクセス速度など）や記憶容量とＲＡＩＤ１からＲＡＩＤ５等のＲＡＩＤタイプとを組み合わせた属性毎に分類されることになる。
【実施例２】
【０２９８】
以下、本発明の実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略或いは簡略する（これは、後の実施例３以降についても同様である）。【０２９９】
本発明の実施例２では、Ｉ／Ｏ頻度に代えて又は加えて、ＶＶＯＬ毎又は仮想ページ毎の最終Ｉ／Ｏ時刻を基に、ＶＯＬ単位又はページ単位の移行処理が行われる。最終Ｉ／Ｏ時刻は、実施例１で説明したように、実ページにデータ要素が書き込まれた場合に、モニタテーブル４０９Ａ及び４０９Ｂに登録される。再配置プログラムは、仮想ページのＩ／Ｏ頻度とその仮想ページ内のデータ要素を有するティアのティアレンジとの関係に代えて又は加えて、仮想ページの最終Ｉ／Ｏ時刻を基に、移行ページテーブル４１１に登録する仮想ページを決定する。例えば、最終Ｉ／Ｏ時刻が現在の時刻から所定時間以上に過去である仮想ページが、移行ページテーブル４１１に登録されて良い。その際、その仮想ページ内のデータ要素の移行先は、その仮想ページ内のデータ要素を有するティアよりも下位のティアとされて良い。なぜなら、最終Ｉ／Ｏ時刻が古い仮想ページ内のデータ要素は、今後も入出力される可能性が低く、より下位のティアに配置するのが好ましいと考えられるからである。
【実施例３】
【０３００】
本発明の実施例３では、シーケンシャルアクセスとランダムアクセスのどちらのアクセスパターンでＩ／Ｏが行われるかを基に、ＶＯＬ単位又はページ単位の移行処理が行われる。【０３０１】
Ｉ／Ｏ対象のデータが、シーケンシャルアクセスされるデータならば、Ｉ／Ｏ先のＲＶＯＬの基になっているＰＤＥＶがＨＤＤの場合に、ＨＤＤのシークの時間が短くて済む。この場合、比較的性能が低いＨＤＤにＩ／Ｏ対象のデータが入っていても、シーケンシャルアクセスされるが故に、性能低下の度合いは小さいと考えられる。また、シーケンシャルアクセスされるデータを安価で性能の低いＰＤＥＶに移すことで、ランダムアクセスされる他のデータのために、性能の高いＰＤＥＶに基づく実ページのより多くをフリーにすることができる。このため、ストレージシステム全体のＩ／Ｏ性能の向上が期待できる。【０３０２】
実施例３では、例えば、Ｉ／Ｏ制御プログラム４１４が、実ページにデータ要素を書き込んだ場合に、Ｉ／Ｏ先の仮想ページについてのアクセスパターン（シーケンシャルアクセスかランダムアクセスか）を、例えばアロケーションテーブル４０７に登録する。アロケーションテーブル４０７には、仮想ページ毎に、アクセスパターン毎の実行頻度が書き込まれても良い。【０３０３】
再配置プログラム４１５は、例えば、移行ページテーブル４１１の作成において、仮想ページに対するアクセスパターンがシーケンシャルアクセスであれば（或いは、シーケンシャルアクセスの実行頻度が高ければ）、その仮想ページに対応した移行先として、より下位のティアを選択して良い。また、例えば、再配置プログラム４１５は、仮想ページのＩ／Ｏ頻度が、その仮想ページに割り当てられている実ページを有するティアのティアレンジの最大値より高くても、その実ページ内のデータ要素を移行対象としなくて良い。
【実施例４】
【０３０４】
本発明の実施例４では、二つのモニタテーブル４０９Ｂ（４０９Ａ）は、交互に使用されることに代えて、所定のタイミングで編集不可能にＣＭＰＫ１１９又は他の記憶資源に保存される。例えば、月曜日のモニタ結果を表すモニタテーブル４０９Ｂ（４０９Ａ）が月曜日のテーブル４０９Ｂ（４０９Ａ）として保存され、土曜日のモニタ結果を表すモニタテーブル４０９Ｂ（４０９Ａ）が土曜日のテーブル４０９Ｂ（４０９Ａ）として月曜日のモニタテーブル４０９Ｂ（４０９Ａ）とは別に保存されてよい。このようにすることで、再配置処理の運用の運用方法の選択肢が増える。【０３０５】
実施例４では、例えば、再配置プログラム４１５が、再配置直前に、アクティブのモニタテーブル４０９Ｂ（４０９Ａ）を保存するかどうかを、管理者に問い合わせる等の方法により決定する。保存する場合には、再配置処理の直前に、プログラム４１５が、モニタテーブル４０９Ｂ（４０９Ａ）を管理装置１０７又は別の記憶資源に保存する。プログラム４１５は、移行ページテーブル４１１の作成のために参照するモニタテーブル４０９Ｂ（４０９Ａ）をどれにするかを、保存されている複数のモニタテーブル４０９Ｂ（４０９Ａ）から選択し、選択したモニタテーブル４０９Ｂ（４０９Ａ）を用いて、移行ページテーブル４１１を作成することができる。【０３０６】
以上、本発明の幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。【０３０７】
例えば、少なくとも一つのＰＶＯＬが、仮想的なＰＶＯＬであっても良く、ＰＶＯＬの基になるＰＤＥＶが、別のストレージシステムに存在しても良い。この場合、ＰＶＯＬを構成する実ページに書き込まれるデータ要素は、そのＰＶＯＬの基になっている、別のストレージシステム内のＰＤＥＶに書き込まれて良い。【０３０８】
また、例えば、モニタテーブル４０９Ａ及び４０９Ｂは、実ページに対するＩ／Ｏが行われたか否かに関わらず、仮想ページに対するＩ／Ｏが発生する都度に更新されてもよい。【０３０９】
また、例えば、ＶＯＬ単位又はページ単位の移行処理において、移行先実ページの割当て先の仮想ページ又はその仮想ページを有するＶＶＯＬについて、移行先実ページにデータ要素が移行されたときにＩ／Ｏ頻度及び最終Ｉ／Ｏ時刻が更新されなくても良い。移行後に、その仮想ページ又はＶＶＯＬに対するＩ／Ｏに応じてその仮想ページ又はＶＶＯＬに割り当てられている実ページにＩ／Ｏが行われるときに、その仮想ページ又はＶＶＯＬのＩ／Ｏ頻度及び最終Ｉ／Ｏ時刻が更新されて良い。【０３１０】
また、例えば、ＲＶＯＬ種類は、ＲＶＯＬの基になっているＲＧを構成するＰＶＥＶの種類に代えて又は加えて、そのＲＧのＲＡＩＤレベル（ＲＡＩＤ１、ＲＡＩＤ５（３Ｄ＋１Ｐ）、など）に基づいても良い。このため、例えば、第１のＲＧと第２のＲＧをそれぞれ構成するＰＤＥＶの種類が同じであっても、第１のＲＧと第２のＲＧのＲＡＩＤレベルが異なっていれば、第１のＲＧに基づく第１のＲＶＯＬと、第２のＲＧに基づく第２のＲＶＯＬは種類が異なることになり、それ故、第１のＲＶＯＬと第２のＲＶＯＬが異なるティアに属して良い。ティアは、ＲＶＯＬ種類に限らず、他の観点から定義されても良い。【０３１１】
また、例えば、一つの実ページの容量は、一つの仮想ページに複数の実ページが割り当てられるような容量であっても良い。この場合、ページ単位の移行は、例えば、仮想ページに割り当てられている複数の移行元実ページから、複数の移行先実ページにデータ要素がそれぞれ移行されてよい。【０３１２】
また、例えば、一つの実ページの容量は、一つの実ページが複数の仮想ページに割り当てられるような容量であっても良い。この場合、ページ単位の移行処理では、複数の仮想ページが選択され、それら複数の仮想ページについて、一つの移行元実ページから移行先実ページにデータ要素が移行されてよい。【０３１３】
また、プールＶＯＬは、外部のストレージシステムが提供するＶＯＬに対応付けられた仮想的な論理ボリュームであっても良い。この場合、プールＶＯＬの実ページに書き込まれるデータ要素は、そのプールＶＯＬに対応する、外部のストレージシステムのＶＯＬに書き込まれる。【０３１４】
また、Ｉ／Ｏ頻度の単位は、例えば、ＩＯＰＳ（１秒間当たりのＩ／Ｏの数）でも良い。【０３１５】
また、度数分布におけるＩ／Ｏ頻度幅は、１でも良い（つまり、Ｉ／Ｏ頻度毎に仮想ページ数がカウントされても良い）。
【符号の説明】
【０３１６】
１０３…ストレージシステム
【図１】
0005555260.tif 000002
【図２】
0005555260.tif 000003
【図３】
0005555260.tif 000004
【図４】
0005555260.tif 000005
【図５】
0005555260.tif 000006
【図６】
0005555260.tif 000007
【図７】
0005555260.tif 000008
【図８】
0005555260.tif 000009
【図９】
0005555260.tif 000010
【図１０】
0005555260.tif 000011
【図１１】
0005555260.tif 000012
【図１２】
0005555260.tif 000013
【図１３】
0005555260.tif 000014
【図１４】
0005555260.tif 000015
【図１５】
0005555260.tif 000016
【図１６】
0005555260.tif 000017
【図１７】
0005555260.tif 000018
【図１８】
0005555260.tif 000019
【図１９】
0005555260.tif 000020
【図２０】
0005555260.tif 000021
【図２１】
0005555260.tif 000022
【図２２】
0005555260.tif 000023
【図２３】
0005555260.tif 000024
【図２４】
0005555260.tif 000025
【図２５】
0005555260.tif 000026
【図２６】
0005555260.tif 000027
【図２７】
0005555260.tif 000028
【図２８】
0005555260.tif 000029
【図２９】
0005555260.tif 000030
【図３０】
0005555260.tif 000031
【図３１】
0005555260.tif 000032
【図３２】
0005555260.tif 000033
【図３３】
0005555260.tif 000034
【図３４】
0005555260.tif 000035
【図３５】
0005555260.tif 000036
【図３６】
0005555260.tif 000037
【図３７】
0005555260.tif 000038
【図３８】
0005555260.tif 000039
【図３９】
0005555260.tif 000040