(57)【要約】【課題】処理負荷を増大させることなく、データ特性に合った適切なレイヤへ格納する。【解決手段】ストレージシステム内の複数の記憶装置には、それぞれ性能の異なる複数種類の記憶装置が含まれる。複数の記憶装置を基に、複数種類のプールが構成され、複数種類のプールは、それぞれ異なるレイヤに属する。一以上の同種類の記憶装置を基に、その種類に対応した種類のプールが構成されている。ストレージシステム内のコントローラは、所定の格納先変更条件に合致した場合に、仮想ボリューム内の或る仮想ページに割り当てられている対象の第一の実ページに格納されている対象のデータの格納先を、対象の第一の実ページを有する第一種のプールとは異なる種類の第二種のプール内の未割当ての第二の実ページへ変更する格納先変更処理を行う。実ページのサイズは、プールの種類によって異なる。【選択図】図６
2010108341.tif 000002
【特許請求の範囲】
【請求項１】
複数種類のプールの基になる複数の記憶装置と、
ライト要求又はリード要求であるＩ／Ｏ要求をホスト計算機から受け付け、そのＩ／Ｏ要求に従うＩ／Ｏ処理を行うコントローラと
を備え、
前記複数の記憶装置には、それぞれ性能の異なる複数種類の記憶装置が含まれており、
前記複数種類のプールは、それぞれ異なるレイヤに属し、
一以上の同種類の記憶装置を基に、その種類に対応した種類のプールが構成されており、
各種プールは、プールの基になっている一以上の同種類の記憶装置に基づく複数の実ページで構成されており、
前記コントローラは、
複数の仮想ページで構成されている仮想的な論理ボリュームである仮想ボリューム内の仮想ページが指定されたライト要求を前記ホスト計算機から受けると、前記Ｉ／Ｏ処理として、前記指定された仮想ページに実ページが未割当てであれば、その仮想ページに、いずれかの種類のプールにおける未割当ての実ページを割り当て、割り当てた実ページに、前記受信したライト要求に従うライト対象のデータを書き込むＩ／Ｏ処理部と、
所定の格納先変更条件に合致した場合に、或る仮想ページに割り当てられている対象の第一の実ページに格納されている対象のデータの格納先を、前記対象の第一の実ページを有する第一種のプールとは異なる種類の第二種のプール内の未割当ての第二の実ページへ変更する格納先変更処理を行う格納先変更処理部と、
を備え、
各仮想ページは、仮想的な記憶領域であり、
各実ページは、物理的な記憶領域であり、
実ページのサイズは、プールの種類によって異なる、
ストレージシステム。
【請求項２】
低いレイヤに属する種類のプール内の実ページのサイズは、高いレイヤに属する種類のプール内の実ページのサイズよりも大きく、
各種プール内の実ページのサイズは、仮想ページのサイズのＮ倍であり（Ｎは自然数）、
前記コントローラは、メモリを有し、前記メモリが、仮想ページに割り当てられている実ページに格納されているデータのデータ特性に関するデータ特性情報と、どの種類のプールについてどんな格納先変更条件に合致した場合にどの種類のプールにデータの格納先を変更するかを表す変更条件情報とを記憶し、
前記格納先変更処理部は、前記格納先変更処理として、下記（２−１）及び（２−２）、
（２−１）前記変更条件情報を参照し、前記対象のデータのデータ特性が、前記第一種のプールに対応する格納先変更条件に合致するか否かを判定し、
（２−２）前記（２−１）の判定の結果が肯定的である場合、前記対象の第一の実ページから、前記変更条件情報から特定される、前記第一種のプールに対応する格納先である第二種のプール内の未割当ての第二の実ページにマイグレーションし、
を行い、
前記（２−１）において、前記第一種のプールが属するレイヤが、前記第二種のプールが属するレイヤよりも低いが故に、前記第一の実ページのサイズが、前記第二の実ページのサイズのＰ倍（Ｐは２以上の自然数）であれば、前記（２−２）として、前記格納先変更処理部は、下記（Ａ−１）乃至（Ａ−３）を実行し、
（Ａ−１）前記第二種のプールから未割当てのＰ個の第二の実ページを選択し、選択されたＰ個の第二の実ページに、前記対象のデータを構成するＰ個の対象データ部分をマイグレーションする；
（Ａ−２）前記対象の第一の実ページの割当先となっている一以上の対象の仮想ページに対する前記対象の第一の実ページの割当てを解除する；
（Ａ−３）前記対象のデータの連続性が保たれるように前記Ｐ個の第二の実ページを前記一以上の対象の仮想ページに割り当てる；
前記（２−１）において、前記第一種のプールが属するレイヤが、前記第二種のプールが属するレイヤよりも高いが故に、前記第二の実ページのサイズが、前記第一の実ページのサイズのＱ倍（Ｑは２以上の自然数）であれば、前記格納先変更処理部は、前記対象の第一の実ページの割当先となっている一以上の対象の仮想ページを含んだ複数の対象の仮想ページのうちの、前記一以上の対象の仮想ページ以外の対象の仮想ページに割当てられている、（Ｑ−１）個の第一の実ページに記憶されているデータのデータ特性についても、前記（２−１）の判定を行い、（Ｑ−１）個の第一の実ページに記憶されている全てのデータについて、前記（２−１）の判定の結果が肯定的であれば、前記格納先変更処理部は、前記（２−２）として、下記（Ｂ−１）乃至（Ｂ−３）を実行し、
（Ｂ−１）前記第二種のプールから未割当ての第二の実ページを選択し、選択された第二の実ページに、前記Ｑ個の第一の実ページに記憶されている全てのデータをマイグレーションする；
（Ｂ−２）前記複数の対象の仮想ページに対する前記Ｑ個の第一の実ページの割当てを解除する；
（Ｂ−３）前記（Ｂ−１）で選択された第二の実ページを前記複数の対象の仮想ページに割り当てる；
請求項１記載のストレージシステム。
【請求項３】
各種プール内の実ページ毎に、実ページに関する情報を含んだ実ページ管理情報があり、
前記メモリは、所定の高さ以上に高いレイヤに属する種類のプール内の各実ページに対応した実ページ管理情報を記憶し、
前記複数の記憶装置のいずれかが、所定の高さより低いレイヤに属する種類のプール内の各実ページに対応した実ページ管理情報を記憶する、
請求項２記載のストレージシステム。
【請求項４】
前記格納先変更処理部は、前記格納先変更処理を、定期的に、及び、前記仮想ボリュームを指定したＩ／Ｏ要求に従うＩ／Ｏ処理を前記Ｉ／Ｏ処理部が実行した後に行う、
請求項３記載のストレージシステム。
【請求項５】
前記コントローラは、記憶資源を有し、
前記記憶資源は、
前記仮想ボリュームを構成する仮想ページに割り当てられている実ページのそれぞれについて、当該実ページに格納されているデータのデータ特性を示すデータ特性情報と、
どの種類のプールについてどんな格納先変更条件に合致した場合にどの種類のプールにデータの格納先を変更するかを表す変更条件情報と
を記憶し、
前記格納先変更処理は、
（５−１）前記対象のデータのデータ特性が、前記第一種のプールの種類に対応する格納先変更条件に合致するか否かを判定し、
（５−２）前記判定の結果が肯定的である場合、前記対象のデータを、第一の実ページから第二の実ページへマイグレーションする、
請求項１記載のストレージシステム。
【請求項６】
前記第一の実ページのサイズが前記第二の実ページのサイズよりも大きい場合、前記格納先変更処理部は、前記（５−２）において、Ｐ個（Ｐは２以上の整数）の第二の実ページを選択し、前記対象のデータを構成するＰ個の対象データ部分をそれぞれ前記Ｐ個の第二の実ページにマイグレーションし、
前記Ｐの値は、前記第一の実ページのサイズと前記第二の実ページのサイズとの関係に基づく値である、
請求項５記載のストレージシステム。
【請求項７】
前記第一の実ページのサイズが前記第二の実ページのサイズよりも小さい場合、前記格納先変更処理部は、前記（５−１）において、前記対象のデータに加えて、前記対象の仮想ページに連続する一以上の仮想ページのそれぞれに割り当てられている一以上の他の第一の実ページに格納されている一以上のデータのそれぞれについても、データ特性が、前記第一のプールの種類に対応する格納先変更条件に合致するか否かを判定し、
前記格納先変更処理部は、前記対象のデータについての判定結果及び前記一以上のデータについてのそれぞれの判定の結果の全てが肯定的である場合に、前記（５−２）において、前記第一のデータ及び前記一以上のデータを、前記第二の実ページへマイグレーションする、
請求項５又は６に記載のストレージシステム。
【請求項８】
性能の低い種類のプールほど、当該プールに登録されている実ページのサイズが、大きく設定される、
請求項５〜７のうちのいずれかに記載のストレージシステム。
【請求項９】
前記指定された仮想ページに割り当てられている実ページである対象実ページに対してＩ／Ｏ処理が行われた後、前記Ｉ／Ｏ処理部が、前記対象実ページに格納されているデータに関するデータ特性情報を更新し、その後、前記格納先変更処理部が、前記対象実ページに格納されているデータについて、前記（５−１）を実行する、
請求項５〜８のうちのいずれかに記載のストレージシステム。
【請求項１０】
前記複数種類の記憶装置は、それぞれアクセス性能が異なっており、
前記複数種類のプールは、前記記憶装置の種類のそれぞれに対応してそれぞれアクセス性能が異なっており、
前記データ特性情報は、データに最後にアクセスした日時である最終データアクセス日時であり、
前記格納先変更条件は、前記第一のデータが現在日時から所定の期間以上アクセスされていないことであり、
前記第二のプールのアクセス性能は、前記第一のプールのアクセス性能よりも低く、
前記格納先変更処理部は、
前記（５−１）において、前記対象のデータに関する最終データアクセス日時から現在日時までの期間が前記所定の期間以上アクセスされていないかどうかを判定し、
前記（５−２）において、前記対象のデータに関する最終データアクセス日時から現在日時までの期間が前記所定の期間以上アクセスされていない場合、前記対象のデータを、第一の実ページから第二の実ページへマイグレーションする、
請求項５〜９のうちのいずれかに記載のストレージシステム。
【請求項１１】
前記格納先変更処理部は、前記複数のプールの中から選択された対象プールに登録されている実ページであって、前記仮想ページに対して割り当てられている、複数の対象実ページの中から選択された一つを前記第一の実ページとして、前記複数の対象実ページのそれぞれについて前記格納先変更処理を繰り返して行い、
前記データ特性情報は、前記複数の対象実ページを、それぞれに格納されているデータに関する最終データアクセス日時が古い順に管理されており、
前記格納先変更処理部は、前記データ特性情報の順序通りに、複数の対象実ページの中から前記第一の実ページを選択して前記格納先変更処理を行い、前記第一のデータが前記所定の条件に合致しなかった時点で前記格納先変更処理を終了し、選択されなかった対象実ページについては、前記格納先変更処理を行わない、
請求項１０記載のストレージシステム。
【請求項１２】
各種プール内の実ページ毎に、実ページに関する情報を含んだ実ページ管理情報があり、
前記コントローラが、メモリを有し、
前記メモリは、所定の高さ以上に高いレイヤに属する種類のプール内の各実ページに対応した実ページ管理情報を記憶し、
前記複数の記憶装置のいずれかが、所定の高さより低いレイヤに属する種類のプール内の各実ページに対応した実ページ管理情報を記憶する、
請求項１、及び、５〜１１のうちのいずれかに記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、それぞれ性能の異なる複数種類の記憶装置を備えるストレージシステムに関する。
【背景技術】
【０００２】
従来、階層型ストレージシステムと呼ばれるものが知られている。階層型ストレージシステムは、それぞれ性能の異なる複数種類の記憶装置を備え、同一種類の記憶装置上の記憶領域の集合を一つのレイヤとして、複数のレイヤを用いてデータ管理を行うことができるストレージシステムである。例えば、階層型ストレージシステムは、データの特性（例えば、アクセス頻度等）に基づいて、そのデータの格納先となるレイヤを決定することができる。階層型ストレージシステムは、データを、その特性に合った適切なレイヤに格納することにより、効率的なデータ管理を行うことができる。特許文献１〜３には、階層型ストレージシステムに関する技術が開示されている。
【０００３】
【特許文献１】特開２００７−１０２４５５号公報
【特許文献２】特開２００７−２８００８９号公報
【特許文献３】特開２００８−９０７４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
データの格納先を決定付けているデータ特性が、時間の経過とともに変化する場合、階層型ストレージシステムは、データのマイグレーションを行って、データの格納先のレイヤを変更することができる。このレイヤを変更する方法として、論理ボリューム単位で行う方法（以下、「ボリューム単位変更方法」）と、ファイル単位で行う方法（以下、「ファイル単位変更方法」）とが知られている。
【０００５】
ボリューム単位変更方法では、論理ボリュームごとに、その論理ボリューム内のデータのデータ特性が、所定の条件に合致しているか否かが判定される。そして、条件に合致している場合に、論理ボリューム内の全データが、その論理ボリュームとは異なるレイヤに属する論理ボリュームへマイグレーションされる。
【０００６】
ボリューム単位変更方法には、マイグレーションを行うデータ単位が大きすぎるという問題がある。データ単位が大きすぎることは、下記の理由から問題である。
【０００７】
すなわち、論理ボリュームに格納されているデータ（以下、「ボリュームデータ」）は、その論理ボリュームを構成する複数のデータブロックのそれぞれに格納されている複数のデータ（以下、「ブロックデータ」）の集合である。そして、ブロックデータのデータ特性は、ブロックデータ毎に異なることがあり、故に、一つのボリュームデータにおいてデータ特性にばらつきがある場合がある。この場合、マイグレーションされたボリュームデータの中には、データ特性に合ったレイヤに変更されるブロックデータと、データ特性に合っていないレイヤに変更されるブロックデータとが含まれることになる。データ単位が大きいほど、データ特性に合っていないレイヤに変更されるブロックデータの数が多くなりやすい。即ち、データ単位が大きいほど、データ特性に合った適切なレイヤへ変更することが難しくなるのである。
【０００８】
一方、ファイル単位変更方法では、ファイルごとに、そのファイルを構成するデータのデータ特性が、所定の条件に合致しているか否かが判定される。そして、条件に合致している場合に、そのファイルを構成するデータが、そのデータが格納されていた格納先とは異なるレイヤに属する格納先へマイグレーションされる。
【０００９】
ファイル単位変更方法では、ボリューム単位変更方法における上述したような問題は生じない。何故ならば、通常、ファイルを構成するデータに関するデータ特性は、そのファイルの特性のことを意味しており、一つのファイルを構成するデータにおいてデータ特性にばらつきが生じることはないからである。
【００１０】
しかしながら、ファイル単位変更方法では、レイヤを変更する処理に多大な時間を要するという問題がある。何故ならば、ファイルを管理しているファイルシステムが行う処理（例えば、ディレクトリの検索等）に時間がかかってしまうからである。
【００１１】
従って、本発明の目的は、処理負荷を増大させることなく、データ特性に合った適切なレイヤへ格納することである。
【００１２】
本発明の他の目的は、後の説明から明らかになるであろう。
【課題を解決するための手段】
【００１３】
ストレージシステムは、複数種類のプールの基になる複数の記憶装置と、ライト要求又はリード要求であるＩ／Ｏ要求をホスト計算機から受け付け、そのＩ／Ｏ要求に従うＩ／Ｏ処理を行うコントローラとを備える。前記複数の記憶装置には、それぞれ性能の異なる複数種類の記憶装置が含まれている。前記複数種類のプールは、それぞれ異なるレイヤに属する。一以上の同種類の記憶装置を基に、その種類に対応した種類のプールが構成されている。各種プールは、プールの基になっている一以上の同種類の記憶装置に基づく複数の実ページで構成されている。前記コントローラは、Ｉ／Ｏ処理部と、格納先変更処理部とを有する。前記Ｉ／Ｏ処理部は、複数の仮想ページで構成されている仮想的な論理ボリュームである仮想ボリューム内の仮想ページが指定されたライト要求を前記ホスト計算機から受けると、前記Ｉ／Ｏ処理として、前記指定された仮想ページに実ページが未割当てであれば、その仮想ページに、いずれかの種類のプールにおける未割当ての実ページを割り当て、割り当てた実ページに、前記受信したライト要求に従うライト対象のデータを書き込む。前記格納先変更処理部は、所定の格納先変更条件に合致した場合に、或る仮想ページに割り当てられている対象の第一の実ページに格納されている対象のデータの格納先を、前記対象の第一の実ページを有する第一種のプールとは異なる種類の第二種のプール内の未割当ての第二の実ページへ変更する格納先変更処理を行う。各仮想ページは、仮想的な記憶領域である。各実ページは、物理的な記憶領域である。実ページのサイズは、プールの種類によって異なる。
【００１４】
上述したＩ／Ｏ処理部及び格納先変更処理部のうちの少なくとも一つは、ハードウェア、コンピュータプログラム又はそれらの組み合わせ（例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること）により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照しながら本発明の一実施形態について詳細に説明する。
【００１６】
図１は、本実施形態に係る計算機システムの構成例を示す図である。
【００１７】
ホストコンピュータ（以下、単に「ホスト」という）１とストレージシステム３とが、通信ネットワーク２を介して接続される。ホスト１とストレージシステム３間のデータ通信は、例えば、ｉＳＣＳＩ（Internet Small Computer System Interface）プロトコルやＦＣ（Fibre Channel）プロトコル等のプロトコルに基づいて行われる。
【００１８】
ストレージシステム３には、例えば、多重化されたコントローラデバイス（ＣＴＬ）３１と、それぞれ性能の異なる複数種類の記憶装置３７とが搭載される。
【００１９】
ＣＴＬ３１は、例えば、ハードウェア回路である。ＣＴＬ３１には、ホストアダプタ３２と、共有メモリ３３と、キャッシュメモリ３４と、接続部３５と、記憶装置アダプタ３６とが備えられる。
【００２０】
ホストアダプタ３２は、ホスト１や他のストレージシステム３等の外部の装置との間のデータ通信を行うインタフェース装置であり、一又は複数の通信ポートを備えている。ホストアダプタ３２は、ＣＰＵやメモリ等を備えたマイクロコンピュータシステム（例えば、回路基盤）として構成されている。ホストアダプタ３２は、例えば、ホスト１からのライト要求があった場合、ライト対象のデータをキャッシュメモリ３４に、ホスト１から受信したコマンドを共有メモリ３３にそれぞれ書き込む。また、ホストアダプタ３２は、ホスト１からのリード要求があった場合、ホスト１から受信したコマンドを共有メモリ３３に書き込み、また、記憶装置アダプタ３６が記憶装置３７から読み出してキャッシュメモリ３４に書き込んだリード対象のデータをキャッシュメモリ３４から読み出してホスト１へ送信する。
【００２１】
記憶装置アダプタ３６は、各記憶装置３７との間のデータ授受を行うインタフェース装置である。ストレージシステム３には、複数種類の記憶装置３７のそれぞれと接続するための複数種類の記憶装置アダプタ３６が備えられる。各記憶装置アダプタ３６は、ホストアダプタ３２と同様に、ＣＰＵやメモリ等を備えたマイクロコンピュータシステムとして構成することができる。記憶装置アダプタ３６は、例えば、ホストアダプタ３６からキャッシュメモリ３４に書き込まれたライト対象のデータをキャッシュメモリ３４から読み出して記憶装置３７に書き込んだり、記憶装置３７から読み出したリード対象のデータをキャッシュメモリ３４に書き込んだりする。
【００２２】
接続部３５は、例えばクロスバスイッチであり、ホストアダプタ３２、共有メモリ３３、キャッシュメモリ３４及び記憶装置アダプタ３６を相互に接続させる装置である。バスなどの他種の接続装置が、接続部３５として採用されてもよい。
【００２３】
共有メモリ３３は、例えば、不揮発または揮発の半導体メモリから構成することができる。共有メモリ３３には、例えば、ホスト１から受信した各種コマンドや、ストレージシステム３の制御に使用される制御情報等が記憶される。コマンドや制御情報等は、複数の共有メモリ３３によって、冗長記憶されてもよい。
【００２４】
キャッシュメモリ３４は、例えば、揮発または不揮発の半導体メモリから構成することができる。キャッシュメモリ３４には、ホスト１から受信したデータや、記憶装置３７から読み出されたデータ等が記憶される。尚、共有メモリ３３とキャッシュメモリ３４とは、本実施形態のように、それぞれ別々のメモリとして構成されてもよいし、一つのメモリから構成されてもよい。一つのメモリから構成される場合は、例えば、メモリの一部がキャッシュ領域として使用され、同一のメモリの別の一部が共有メモリ領域として使用される。
【００２５】
記憶装置３７の種類は、記憶媒体の違い（例えば、ハードディスクであるかフラッシュメモリであるかテープであるか）や、記憶装置アダプタ３６との接続方式の違い（例えば、ＦＣ方式であるかＳＡＳ（Serial Attached SCSI）方式であるかＳＡＴＡ（Serial AT Attachment）方式であるか）や、例えば記憶媒体がハードディスクであればその回転速度の違い等によって様々なものが考えられる。本実施形態では、記憶装置３７の種類として、以下の七種類を考慮する。本実施形態に係るストレージシステム３には、これら七種類の記憶装置３７が備えられるとする（正確に言えば、本実施形態に係るストレージシステム３は、（１）〜（６）の記憶装置３７を備え、（７）の記憶装置３７を利用可能である）。
（１）ＦＣ−ＨＤＤ３７Ａ  …  記憶媒体がハードディスクである記憶装置３７（ハードディスクドライブ（ＨＤＤ））であって記憶装置アダプタ３６との接続方式がＦＣ方式である記憶装置３７；
（２）ＳＡＳ−ＨＤＤ３７Ｂ  …  ＨＤＤであって記憶装置アダプタ３６との接続方式がＳＡＳ方式である記憶装置３７；
（３）ＳＡＴＡ−ＨＤＤ３７Ｃ  …  ＨＤＤであって記憶装置アダプタ３６との接続方式がＳＡＴＡ方式である記憶装置３７；
（４）テープ装置３７Ｄ  …  記憶媒体がテープである記憶装置３７；
（５）光ディスク装置３７Ｅ  …  記憶媒体が光ディスクである記憶装置３７；
（６）フラッシュメモリ装置３７Ｆ  …  記憶媒体がフラッシュメモリである記憶装置３７；
（７）外部ストレージ３７Ｇ  …  外部のストレージシステム３が備える記憶装置３７。
【００２６】
これら七種類の記憶装置３７は、それぞれアクセス性能が異なる。これらのアクセス性能を比較すると、アクセス性能の高いものから順に、フラッシュメモリ装置３７Ｆ、ＦＣ−ＨＤＤ３７Ａ、ＳＡＳ−ＨＤＤ３７Ｂ、ＳＡＴＡ−ＨＤＤ３７Ｃ、光ディスク装置３７Ｅ、テープ装置３７Ｄとなる。尚、テープ装置３７Ｄは、シーケンシャルアクセスデバイスであるため、そのアクセス性能は低速だが、そのデータ転送性能は、単体のＨＤＤよりも高速である。また、外部ストレージ３７Ｇは、その記憶媒体やストレージシステム３間の接続方式等によってアクセス性能が異なるため、ここでは比較の対象としていない。
【００２７】
図２は、記憶装置３７を基に形成される論理ボリュームの構成例を示す図である。
【００２８】
図２では、記憶装置３７としてＨＤＤ（ＦＣ−ＨＤＤ３７Ａ、ＳＡＴＡ−ＨＤＤ３７Ｃ）が例示されているが、他種の記憶装置３７の場合も、ＨＤＤの場合と同様にして論理ボリュームが形成される。
【００２９】
ストレージシステム３には、例えば、一以上のＲＡＩＤ（Redundant Arrays of Independent （or Inexpensive） Disks）グループ４４が、同一種類の複数の記憶装置３７から構成される。ＲＡＩＤグループ４４は、例えば、ＲＡＩＤ１やＲＡＩＤ５等の所定のＲＡＩＤレベルに基づく冗長化された記憶方式を提供する。ＲＡＩＤグループ４４に含まれる複数の記憶装置３７のそれぞれの記憶領域の一部ずつによって、ＬＤＥＶ（Logical Device）４３が構成される。即ち、ＬＤＥＶ４３は、記憶装置３７上の物理的な記憶領域（以下、「実領域」）から構成された論理ボリュームである。
【００３０】
プール４２は、仮想ＶＯＬ４１に割り当て可能な実領域を登録しておくための領域である。プール４２への実領域の登録は、対象とするプール４２に一以上のＬＤＥＶ４３が登録されることにより行われる。即ち、或るプール４２に登録されたＬＤＥＶ４３を構成する実領域が、そのプール４２に登録された実領域（プール４２内の実領域）となる。ここで、一のプール４２には、同一種類のＬＤＥＶ４３（同一種類の記憶装置３７上の記憶領域から形成されたＬＤＥＶ４３）が登録される。従って、一のプール４２には、同一種類の実領域（同一種類の記憶装置３７上の記憶領域）が登録される。ストレージシステム３には、複数種類の記憶装置３７が備えられるため、記憶装置３７の種類に対応した複数種類のＬＤＥＶ４３が形成され、記憶装置３７の種類に対応した複数種類のプール４２が形成されることになる。尚、同一種類の実領域の全てが、一つのプール４２に登録されるというわけではない。同一種類の実領域が、異なるプール４２に登録されることにより、同一種類のプール４２が、複数形成されてもよい。
【００３１】
仮想ＶＯＬ４１は、ホスト１に提供される論理ボリュームであり、仮想的な記憶領域（以下、「仮想領域」）から構成された論理ボリュームである。仮想ＶＯＬ４１は、実領域を持たないため、仮想ＶＯＬ４１に対するデータのライト要求が発生した場合は、プール４２内の実領域が仮想領域に割り当てられ、その割り当てられた実領域にライト対象のデータが格納される。仮想領域への実領域の割り当ては、所定サイズの単位で行われる。以下の説明では、便宜上、この割当て単位を「ページ」と呼ぶ。また、割り当てられる側（割り当て先）である仮想領域の割り当て単位を「仮想ページ」と呼び、割り当てる側（割り当て元）である実領域の割り当て単位を「実ページ」と呼ぶ。
【００３２】
以上のことから、次のように言うこともできる。すなわち、仮想ＶＯＬ４１は、複数の仮想ページ５１で構成されている論理ボリュームである。また、プール４２は、一以上且つ同種類のＬＤＥＶ４３で構成されており、故に、同種類の複数の実ページ５２で構成されている一つの実ページ群である。
【００３３】
なお、後述するが、プール４２の種類によって、実ページ５２のサイズは異なる場合がある。また、仮想ページ５１のサイズと実ページ５２のサイズとは、異なる場合がある。ホスト１は、仮想ページ５１を特定するアドレス（ＬＢＡ（Logical Block Address））を指定してライト要求或いはリード要求を出すことで、仮想ＶＯＬ４１内の仮想ページ５１に対してデータのライト或いはリードを行うことができる。
【００３４】
仮想ＶＯＬ４１に対するデータのライト処理について簡単に説明すると、次のようになる。即ち、ライト要求を受信したＣＴＬ３１は、まず、いずれかのプール４２内の実ページ５２が、ライト要求で指定されたＬＢＡに属する仮想ページ５１に既に割り当てられているか否かを判定する。実ページ５２が未割り当ての場合、ＣＴＬ３１は、複数のプール４２のうちのどのプール４２内の実ページ５２を、仮想ページ５１に割り当てるかを決定する。仮想ページ５１に割り当てる実ページ５２の属するプール４２は、仮想ＶＯＬ４１ごとに予め設定されていてもよいし、例えばＣＴＬ３１がライト対象のデータのデータ特性を判断してそのデータ特性に合うように自動的に決定してもよい。その後、ＣＴＬ３１は、決定されたプール４２内の実ページ５２のうち未だどの仮想ページ５１にも割り当てられていない実ページ５２（つまり未割当ての実ページ５２）を、指定された仮想ページ５１に割り当てる。その後、ＣＴＬ３１は、ライト対象のデータを、指定された仮想ページ５１に割り当てられた実ページ５２に格納する。
【００３５】
尚、データのライト処理を行う主体をＣＴＬ３１としたが、より正確には、これらの処理は、ホストアダプタ３２（或いは、記憶装置アダプタ３６）のＣＰＵがコンピュータプログラムを実行することによって行われる。ＣＴＬ３１が主体となるその他の処理（例えば、後述するレイヤ変更処理）についても同様である。
【００３６】
図３は、本実施形態において形成されるプール４２の種類とそれらのアクセス性能の関係とを示す図である。
【００３７】
上述したように、ストレージシステム３には、記憶装置３７の種類に対応した複数種類のプール４２が形成される。図３には、本実施形態に係るストレージシステム３において形成されるプール４２の種類が示されている。フラッシュメモリプール４２Ｆは、フラッシュメモリ装置３７Ｆの実領域が登録されるプール４２である。ＦＣ−ＨＤＤプール４２Ａは、ＦＣ−ＨＤＤ３７Ａの実領域が登録されるプール４２である。ＳＡＳ−ＨＤＤプール４２Ｂは、ＳＡＳ−ＨＤＤ３７Ｂの実領域が登録されるプール４２である。ＳＡＴＡ−ＨＤＤプール４２Ｃは、ＳＡＴＡ−ＨＤＤ３７Ｃの実領域が登録されるプール４２である。光ディスクプール４２Ｅは、光ディスク装置３７Ｅの実領域が登録されるプール４２である。テーププール４２Ｄは、テープ装置３７Ｄの実領域が登録されるプール４２である。尚、外部ストレージ３７Ｇの実領域が登録されるプール４２も形成されるが、ここでは省略している。
【００３８】
本実施形態において、プール４２のアクセス性能とは、プール４２に登録される実領域（言い換えれば、そのプール４２を構成する実ページ５２）のアクセス性能のことをいう。従って、プール４２のアクセス性能は、そのプール４２を形成するための基となる記憶装置３７（そのプール４２に登録されるＬＤＥＶ４３の基となる記憶装置３７）のアクセス性能に依存する。それ故、プール４２のアクセス性能の関係は、記憶装置３７のアクセス性能の関係と同じである。よって、各種のプール４２のアクセス性能を比較すると、図３に示すように、アクセス性能の高いものから順に、フラッシュメモリプール４２Ｆ、ＦＣ−ＨＤＤプール４２Ａ、ＳＡＳ−ＨＤＤプール４２Ｂ、ＳＡＴＡ−ＨＤＤプール４２Ｃ、光ディスクプール４２Ｅ、テーププール４２Ｄとなる。
【００３９】
本実施形態に係るストレージシステム３は、同一種類のプール４２の集合（プール４２内の実領域の集合）を一つのレイヤとする階層型ストレージシステムである。即ち、ストレージシステム３は、データの特性（例えば、アクセス頻度等）に基づいて、そのデータの格納先となるレイヤ（即ち、プール４２の種類）を決定することができる。ストレージシステム３は、データを、その特性に合った適切なレイヤに格納（適切なレイヤに属する実領域に格納）することにより、効率的なデータ管理を行うことができる。以下、或るレイヤと比較した場合に、そのレイヤよりもアクセス性能の高いレイヤを「上位レイヤ」と呼び、そのレイヤよりもアクセス性能の低いレイヤを「下位レイヤ」と呼ぶ。
【００４０】
本実施形態では、格納先のレイヤを決定するためのデータ特性として、そのデータのアクセス頻度（そのデータが現在の実ページ５２に格納されてから現在に至るまでのそのデータに対するアクセス回数）や、そのデータが作成されてからどの程度時間が経過しているかや、最後にそのデータにアクセス（ライト又はリード）してからどの程度時間が経過しているかの三つが考慮される。例えば、ストレージシステム３のＣＴＬ３１は、アクセス頻度の高いデータを上位のレイヤに格納し、アクセス頻度の低いデータを下位のレイヤに格納することにより、効率的なデータ管理を行うことができる。どのようなデータ特性の場合にどのレイヤに格納するかといった格納先のレイヤの決定基準は、例えば、予めユーザによって設定される。
【００４１】
本実施形態で考慮されるデータ特性は、データが格納された後に得ることができる。従って、新規にデータを格納する際は、ＣＴＬ３１は、その新規に格納するデータに関するデータ特性を得ることができないため、データ特性に基づいて格納先のレイヤを決定することができない。そこで、ＣＴＬ３１は、仮想ＶＯＬ４１ごとに予め設定されている初期のプール４２（以下、「初期プール４２」）にデータを格納（初期プール４２内の実領域に格納）する。初期プール４２は、例えば、ユーザによって指定されたプール４２、或いは、中間のアクセス性能を持つレイヤ（本実施形態であれば、例えば、ＳＡＳ−ＨＤＤプール４２ＢやＳＡＴＡ−ＨＤＤプール４２Ｃ）に属するプール４２とすることができる。
【００４２】
また、本実施形態で考慮されるデータ特性は、時間の経過とともに変化する。ＣＴＬ３１は、例えば、定期的又は不定期的に、或いはデータへのアクセスがあったときに、データの格納先のレイヤを変更した方がよいかどうかを判定する。データの格納先のレイヤを変更した方がよいと判定された場合は、ＣＴＬ３１は、現在のデータの格納先のレイヤを、より適切なレイヤに変更する。以下の説明において、データの格納先のレイヤを変更する処理を「レイヤ変更処理」と呼ぶ。
【００４３】
図４は、レイヤ変更処理の概要を説明する図である。
【００４４】
レイヤ変更処理は、例えば、以下の（１）〜（３）の流れで行われる。
【００４５】
（１）レイヤの変更を行うか否かの判定
ＣＴＬ３１は、データが格納されている実ページ５２（即ち、仮想ページ５１に割り当てられている実ページ５２）のそれぞれについて、その実ページ５２に格納されているデータの格納先を、他のレイヤに変更した方がよいかどうかを判定する。具体的には、まず、ＣＴＬ３１は、対象とする実ページ５２（以下、図４の説明において「対象実ページ５２」）に格納されているデータ（以下、図４の説明において「対象データ」）に関するデータ特性を、後述する実ページ管理テーブルから取得する。そして、ＣＴＬ３１は、取得したデータ特性が、予め定められた条件（以下、「レイヤ変更ルール」）に合致するか否かを判定する。レイヤ変更ルールには、上位レイヤに変更するための条件であるレイヤアップルールと、下位レイヤに変更するための条件であるレイヤダウンルールとの二種類がある。レイヤ変更ルールは、後述するレイヤ変更テーブルに記録されている。レイヤ変更テーブルには、レイヤ変更ルールとともに、そのレイヤ変更ルールに合致した場合に、どのレイヤに変更するか（即ち、変更後となるレイヤを示す情報）が記録されている。レイヤ変更ルールに合致した場合、ＣＴＬ３１は、次の（２）及び（３）の処理を行って、対象データの格納先を変更後のレイヤに変更する。
【００４６】
（２）データのマイグレーション
ＣＴＬ３１は、対象実ページ５２から、変更後のレイヤに属する実ページ５２のうちの未割当ての実ページ５２（以下、「変更後の実ページ５２」）へ、対象データをマイグレーションする。
【００４７】
（３）仮想ページ５１の割り当て元の変更
ＣＴＬ３１は、対象実ページ５２が割り当てられていた仮想ページ５１（以下、図４の説明において「対象仮想ページ５１」）について、割り当て元を、変更前の実ページ５２（即ち、対象実ページ５２）から変更後の実ページ５２へ変更する。具体的には、ＣＴＬ３１は、対象仮想ページ５１に対する対象実ページ５２の割り当てを解除し、新たに、対象仮想ページ５１に対して変更後の実ページ５２を割り当てる。尚、図４では、変更後の実ページ５２として、上位レイヤのものと下位レイヤのものとの二つが記載されているが、実際には、変更後の実ページ５２は、いずれか一方となる。
【００４８】
以上が、レイヤ変更処理の概要である。このように、本実施形態に係るレイヤ変更処理では、データが実際に格納される領域である実ページ５２が、他の種類に変更される。一方、ホスト１が認識することができる仮想ページ５１は、変更されない。そのため、ホスト１は、レイヤ変更処理が行われる前と同様に、対象仮想ページ５１にアクセスすることで、変更後の実ページ５２（即ち、種類の変更された実ページ５２）に格納されたデータにアクセスすることができる。
【００４９】
図５は、仮想ページ５１への実ページ５２の割り当ての具体例を示す図である。
【００５０】
仮想ＶＯＬ４１を構成する仮想ページ５１のそれぞれは、ＬＢＡによって特定される。図５では、仮想ページ５１ごとに、一つのＬＢＡ番号（“ＬＢＡ０”〜“ＬＢＡｎ”）が割り当てられているが、このＬＢＡ番号は、実際には、その仮想ページ５１の開始ＬＢＡから終了ＬＢＡまでの範囲を示すものである。例えば、“ＬＢＡ０”は、開始ＬＢＡである“００００”から終了ＬＢＡである“００９９”までの範囲とされる。
【００５１】
一方、プール４１内の各実ページ５２は、ページ番号によって特定される。図５では、実ページ５２ごとに数値が付されているが、この数値がページ番号である。ページ番号は、各プール４２内においてユニークな値とされる。
【００５２】
本実施形態では、実ページ５２のサイズが、その実ページ５２の属するプール４２の種類（レイヤ）によって異なる。具体的には、レイヤが下位である程、そのレイヤに属する実ページ５２のサイズは、大きく設定される（但し、全てのレイヤについて実ページ５２のサイズが異なっている必要は無く、例えば、隣り合うレイヤ（例えば２つのレイヤ）については、実ページ５２のサイズが、同じに設定されてもよい）。例えば、下位レイヤに属する実ページ５２のサイズは、上位レイヤに属する実ページ５２のサイズのＮ倍（Ｎは自然数）に設定される。そして、仮想ページ５１のサイズは、最も小さく設定された実ページ５２のサイズと同じかそれよりも小さく（例えば、最も小さく設定された実ページ５２のサイズの１／Ｎ（Ｎは自然数）に）設定される。図５の例では、ＦＣ−ＨＤＤプール４２Ａ内の実ページ５２のサイズは、仮想ページ５１のサイズと同じサイズ（例えば１６ＭＢ（メガバイト））に設定されている。また、ＦＣ−ＨＤＤプール４２Ａよりも下位のレイヤに属するＳＡＴＡ−ＨＤＤプール４２Ｃ内の実ページ５２のサイズは、ＦＣ−ＨＤＤプール４２Ａ内の実ページ５２の２倍（例えば３２ＭＢ）に設定されている。また、ＳＡＴＡ−ＨＤＤプール４２Ｃよりも下位のレイヤに属するテーププール４２Ｄ内の実ページ５２のサイズは、ＳＡＴＡ−ＨＤＤプール４２Ｃ内の実ページ５２のサイズの２倍、即ち、ＦＣ−ＨＤＤプール４２Ａ内の実ページ５２のサイズの４倍（例えば６４ＭＢ）に設定されている。
【００５３】
図５において、仮想ページ５１と実ページ５２とを結ぶ線は、両ページ５１，５２が割り当ての関係にあること（即ち、その実ページ５２がその仮想ページ５１に割り当てられていること）を示している。
【００５４】
図５に示されるように、仮想ページ５１と、ＦＣ−ＨＤＤプール４２Ａ内の実ページ５２とは、それぞれ一対一に割り当てられている。仮想ページ５１のサイズが、ＦＣ−ＨＤＤプール４２Ａ内の実ページ５２のサイズと同じだからである。
【００５５】
一方、ＳＡＴＡ−ＨＤＤプール４２Ｃ内の実ページ５２のサイズは、仮想ページ５１の２倍である。そのため、ＳＡＴＡ−ＨＤＤプール４２Ｃについては、二つの連続する仮想ページ５１に対して一つの実ページ５２が割り当てられる。
【００５６】
また、テーププール４２Ｄ内の実ページ５２のサイズは、ＳＡＴＡ−ＨＤＤプール４２Ｃ内の実ページ５２のサイズの２倍、即ち、仮想ページ５１の４倍であるため、テーププール４２Ｄについては、四つの連続する仮想ページ５１に対して一つの実ページ５２が割り当てられる。
【００５７】
後述するが、ストレージシステム３の共有メモリ３３には、プール４２に登録されている全ての実ページ５２について、個々の実ページ５２を管理するための情報（以下、「実ページ管理情報」）が記憶される。実ページ管理情報は、実ページ５２ごとに用意されるため、実ページ５２の数が多ければ多い程、実ページ管理情報の数が多くなり、実ページ管理情報の全体サイズ（全ての実ページ管理情報のサイズの総和）が大きくなる。よって、実領域全体のサイズが同じであっても、その実領域全体から構成される実ページ５２のサイズを大きく設定した場合（言い換えると、その実領域全体から構成される実ページ５２の数を少なく設定した場合）は、実ページ管理情報の全体サイズを小さくすることができる。
【００５８】
一方で、実ページ５２のサイズを大きくすればする程、データを、その特性に合った適切なレイヤに格納することが難しくなる（より正確に言うと、データ特性に合った適切なレイヤに格納したつもりでも、実際にはそれ程データ特性に合っていないレイヤに格納されることが起こり得る）。何故ならば、実ページ５２のサイズを大きくすればする程、その実ページ５２に格納されるデータの特性に、ばらつきが生じやすくなるためである。より具体的に説明すると、実ページ５２のサイズを１６ＭＢとした場合、一つのファイルのサイズを１ＭＢと仮定すれば、一つの実ページ５２には、１６個のファイルを構成するデータが格納され得る。１６個のファイルを構成するデータが格納された場合のデータ特性は、１６個のファイルのそれぞれのアクセス頻度等を包括したものとなる。一方、実ページ５２のサイズを６４ＭＢとした場合、上記と同様に一つのファイルのサイズを１ＭＢと仮定すれば、一つの実ページ５２には、６４個のファイルを構成するデータが格納され得る。６４個のファイルを構成するデータが格納された場合のデータ特性は、６４個のファイルのそれぞれのアクセス頻度等を包括したものとなる。つまり、実ページ５２のサイズを６４ＭＢとした場合の方が、データ特性は、より多くのファイルのアクセス頻度等を包括したものとなる。そのため、データ特性にばらつきが生じやすくなるのである。例えば、６４個のファイルのうちの一つだけがアクセス頻度が非常に高く、他の６３個のファイルがほとんどアクセスされない場合にも、これら６４個のファイルを構成するデータが、上位のレイヤに格納されるということも起こり得る。この場合、アクセス頻度の高い一つのファイルを構成するデータについて見れば、データ特性に合ったレイヤに格納されたことになるが、その他のファイルを構成するデータについて見れば、データ特性には合わないレイヤに格納されたことになる。実ページ５２のサイズを小さくすればする程、データ特性に合わないレイヤに格納されるデータ量（そのデータを構成するファイルの数）を少なくすることができる。
【００５９】
本実施形態では、レイヤが下位である程、そのレイヤに属する実ページ５２のサイズを大きく設定することにより、実ページ管理情報の全体サイズを小さくし、実ページ管理情報を記憶しておくために必要となるメモリサイズを小さくしている。一方で、上位のレイヤ（即ち、アクセス性能の高いレイヤ）については、実ページ５２のサイズが小さく設定される。これにより、実ページ管理情報の全体サイズを小さくしつつ、且つ、アクセス頻度の高いデータについては、データ特性に合った適切なレイヤへ格納することが可能となる。
【００６０】
以下、図６〜図９を参照して、レイヤ変更処理を具体的に説明する。尚、レイヤの変更が行われる前は、仮想ページ５１に対する実ページ５２の割り当ての状態は、図５に示した状態であるとする。また、以下の説明では、図３に示した６種類のプールのうちの３種類のプールとして、ＦＣ−ＨＤＤプール４２Ａ、ＳＡＴＡ−ＨＤＤプール４２Ｃ、テーププール４２Ｄを例に採り、且つ、これらのプールが属するレイヤの上下を理解し易くするために、ＦＣ−ＨＤＤプール４２Ａを「プール１」と言い、ＳＡＴＡ−ＨＤＤプール４２Ｃを「プール２」と言い、テーププール４２Ｄを「プール３」と言うことにする（番号が若いプールほど、上位のレイヤに属する）。また、以下の説明では、ＬＢＡ番号がＬＢＡｎ（ｎは整数）の仮想ページ５１を「仮想ページ（ｎ）」と言い（例えば、ＬＢＡ番号が“ＬＢＡ４”の仮想ページ５１を、「仮想ページ（４）」と言い）、プールｍ（ｍはプールの番号であり整数）内のページ番号ｘ（ｘは整数）の実ページ５２を「実ページ（ｍ−ｘ）」と言うことにする（例えば、プール１内のページ番号６の実ページ５２を「実ページ（１−６）」と言うことにする）。
【００６１】
図６は、プール２からプール１へのレイヤの変更の一例を示す図である。この例では、プール２が変更前のプールであり、プール１が変更後のプールである。
【００６２】
図６では、プール２における実ページ（２−０）に格納されているデータ（以下、図６の説明において「対象データ」）のデータ特性が、レイヤアップルールに合致した場合を想定する。図５及び図６を見るとわかるとおり、実ページ（２−０）は、連続した２つの仮想ページ（４）及び（５）に割り当てられている。なぜなら、プール２内の１つの実ページのサイズは、１つの仮想ページのサイズの２倍であるからである。
【００６３】
ＣＴＬ３１は、変更後のプール１内の実ページ５２のうちの未割当ての実ページ５２（例えば実ページ（１−６）及び（１−７））を選択する。ここで、変更後のプール１から２つの実ページ５２が選択された理由は、変更前のプール２内の実ページ５２のサイズが、変更後のプール１内の実ページ５２のサイズの２倍であるからである。なお、図６に示す例によれば、連続した２つの実ページ（１−６）及び（１−７）が選択されているが、連続した実ページが選択される必要はない（例えば、不連続の実ページ（１−６）と（１−１３）が選択されても良い）。
【００６４】
その後、ＣＴＬ３１は、変更前の実ページ（２−０）から変更後の実ページ（１−６）及び（１−７）へ、対象データをマイグレーションする。具体的には、ＣＴＬ３１は、対象データを二つに分割し、そのうちの一方を、実ページ（１−６）へ移動し、他方を、実ページ（１−７）へ移動する。
【００６５】
その後、ＣＴＬ３１は、仮想ページ（４）及び（５）に対する変更前の実ページ（２−０）の割り当てを解除し、新たに、仮想ページ（４）及び（５）に対して変更後の実ページ（１−６）及び（１−７）を割当てる。ここで、仮想ページ５１のサイズと変更後の実ページ５２のサイズは、同じである。従って、仮想ページ５１に変更後の実ページ５２が一対一で割り当てられる。また、変更後の実ページ５２の割り当ては、仮想ページ５１上において、データの連続性が保たれるように行われる。具体的には、図６の例では、仮想ページ（４）及び（５）のうち、ＬＢＡ番号の最も若い仮想ページ（４）には、二つに分割された対象データの前半部分が格納された実ページ（１−６）が割り当てられる。また、仮想ページ（４）に連続する仮想ページ（５）には、二つに分割された対象データの後半部分が格納された実ページ（１−７）が割り当てられる。
【００６６】
以上の処理が行われることにより、仮想ページ（４）及び（５）に格納（実際には、仮想ページ（４）及び（５）に割り当てられていた実ページ（２−０）に格納）されているデータの格納先が、プール２（ＳＡＴＡ−ＨＤＤプール４２Ｃ）からプール１（ＦＣ−ＨＤＤプール４２Ａ）へ変更される（レイヤアップされる）。
【００６７】
図７は、プール３からプール１へのレイヤの変更の一例を示す図である。この例では、プール３が変更前のプールであり、プール１が変更後のプールである。
【００６８】
図７では、実ページ（３−０）に格納されているデータ（以下、図７の説明において「対象データ」）のデータ特性が、レイヤアップルールに合致した場合を想定する。図５及び図７を見るとわかるとおり、実ページ（３−０）は、仮想ページ（１０）〜（１２）に割り当てられている。
【００６９】
ＣＴＬ３１は、変更後のプール１（ＦＣ−ＨＤＤプール４２Ａ）内の実ページ５２のうちの未割当ての実ページ（１−８）、（１−９）、（１−１０）及び（１−１１）を選択する。ここで、変更後のプール１から４つの実ページ５２が選択された理由は、変更前のプール２内の実ページ５２のサイズが、変更後のプール１内の実ページ５２のサイズの４倍であるからである。なお、図７に示す例によれば、連続した４つの実ページ（１−８）、（１−９）、（１−１０）及び（１−１１）が選択されているが、連続した実ページが選択される必要はない（例えば、不連続の実ページ（１−１）、（１−５）、（１−９）、（１−１４）が選択されても良い）。
【００７０】
その後、ＣＴＬ３１は、変更前の実ページ（３−０）から変更後の実ページ（１−８）、（１−９）、（１−１０）及び（１−１１）へ、対象データをマイグレーションする。具体的には、ＣＴＬ３１は、対象データを四つに分割し、それぞれを、実ページ（１−８）、（１−９）、（１−１０）及び（１−１１）のいずれかに重複しないように移動する。
【００７１】
その後、ＣＴＬ３１は、仮想ページ（１０）〜（１３）に対する実ページ（３−０）の割り当てを解除し、新たに、仮想ページ（１０）〜（１３）に対して変更後の実ページ（１−８）、（１−９）、（１−１０）及び（１−１１）を割り当てる。ここで、仮想ページ５１のサイズと変更後の実ページ５２のサイズは、同じである。従って、仮想ページ５１に変更後の実ページ５２が一対一で割り当てられる。また、変更後の実ページ５２の割り当ては、仮想ページ５１上において、データの連続性が保たれるように行われる。具体的には、図７の例では、仮想ページ（１０）〜（１３）のうち、ＬＢＡ番号の最も若い仮想ページ（１０）には、四つに分割された対象データの先頭部分が格納された実ページ（１−８）が割り当てられる。また、仮想ページ（１０）に連続する仮想ページ（１１）には、四つに分割された対象データの先頭から二番目の部分が格納された実ページ（１−９）が割り当てられる。また、仮想ページ（１１）に連続する仮想ページ（１２）には、四つに分割された対象データの先頭から三番目の部分が格納された実ページ（１−１０）が割り当てられる。また、仮想ページ（１２）に連続する仮想ページ（１３）には、四つに分割された対象データの最終部分が格納された実ページ（１−１１）が割り当てられる。
【００７２】
以上の処理が行われることにより、仮想ページ（１０）〜（１３）に格納されているデータの格納先が、プール３（テーププール４２Ｄ）からプール１（ＦＣ−ＨＤＤプール４２Ａ）へ変更される（レイヤアップされる）。
【００７３】
図８は、プール１からプール２へのレイヤの変更の一例を示す図である。この例では、プール１が変更前のプールであり、プール２が変更後のプールである。
【００７４】
図８では、実ページ（１−０）に格納されているデータ（以下、図８の説明において「対象データ」）のデータ特性が、レイヤダウンルールに合致した場合を想定する。図５及び図８を見るとわかるとおり、実ページ（１−０）は、仮想ページ（０）に割り当てられている。
【００７５】
変更後のプール２（ＳＡＴＡ−ＨＤＤプール４２Ｃ）内の実ページ５２のサイズは、変更前のプール１（ＦＣ−ＨＤＤプール４２Ａ）内の実ページ５２のサイズの２倍である。そこで、ＣＴＬ３１は、対象データに加えて、対象データに連続する、対象データと同一サイズのデータ（以下、図８の説明において「連続データ」）もが、変更後のプール２へ変更することが適切であるかどうかを判定する。即ち、ＣＴＬ３１は、連続データが、対象データが合致したレイヤダウンルール（即ち、プール２へ変更することを定めたルール）に合致するか否かを判定する。ここで、或る二つのデータが連続しているとは、両データのそれぞれが格納されている（正確には、両データのそれぞれが格納されている実ページ５２が割り当てられている）二つの仮想ページ５１が連続していることをいう。従って、ここでの連続データは、仮想ページ（０）と連続する仮想ページ（１）に格納されているデータとなる。以下、図８の説明において、対象の仮想ページ（０）と連続する仮想ページ（１）を「連続仮想ページ（１）」と呼び、連続仮想ページ（１）に割り当てられている実ページ（１−１）（即ち、連続データが格納されている実ページ（１−１））を「連続実ページ（１−１）」と呼ぶ。
【００７６】
ＣＴＬ３１は、対象データに加えて、連続データもが、プール２へ変更することを定めたルールに合致すると判定した場合は、対象データ及び連続データの格納先を一括してプール２へ変更する。一方、ＣＴＬ３１は、連続データが、プール２へ変更することを定めたルールに合致しないと判定した場合は、対象データ及び連続データの格納先の変更を行わない。以下、対象データ及び連続データの格納先がプール２へ変更される場合について説明する。
【００７７】
ＣＴＬ３１は、変更後のプール２内の実ページ５２のうち未割当ての実ページ（２−１）を選択する。
【００７８】
その後、ＣＴＬ３１は、対象実ページ（１−０）及び連続実ページ（１−１）から変更後の実ページ（２−１）へ、対象データ及び連続データをマイグレーションする。具体的には、ＣＴＬ３１は、対象データ及び連続データを結合し、その結合したデータを、変更後の実ページ（２−０）に移動する。
【００７９】
その後、ＣＴＬ３１は、対象仮想ページ（０）に対する対象実ページ（１−０）の割り当て、及び、連続仮想ページ（１）に対する連続実ページ（１−１）の割り当てを解除する。そして、ＣＴＬ３１は、新たに、対象仮想ページ（０）及び連続仮想ページ（１）に対して一つの変更後の実ページ（２−１）を割り当てる。すなわち、変更後のプール２内の実ページ５２のサイズは、仮想ページ５１のサイズの２倍であるため、二つの連続する仮想ページ（０）及び（１）に対して変更後のプール２内の一つの実ページ（２−１）が割り当てられる。
【００８０】
以上の処理が行われることにより、対象仮想ページ（０）及び連続仮想ページ（１）のそれぞれに格納されているデータの格納先は、プール１（ＦＣ−ＨＤＤプール４２Ａ）からプール２（ＳＡＴＡ−ＨＤＤプール４２Ｃ）へ変更される（レイヤダウンされる）。
【００８１】
図９は、プール１からプール３へのレイヤの変更の一例を示す図である。この例では、プール１が変更前のプールであり、プール２が変更後のプールである。
【００８２】
図９では、実ページ（１−０）に格納されているデータ（以下、図９の説明において「対象データ」）のデータ特性が、レイヤダウンルールに合致した場合を想定する。図５及び図９を見るとわかるとおり、実ページ（１−０）は、仮想ページ（０）に割り当てられている。
【００８３】
変更後のプール３（テーププール４２Ｄ）内の実ページ５２のサイズは、変更前のプール１（ＦＣ−ＨＤＤプール４２Ａ）内の実ページ５２のサイズの４倍である。そこで、ＣＴＬ３１は、対象データに加えて、対象データから連続する、対象データと同一サイズの三つのデータ（以下、それぞれのデータを、図９の説明において「連続データ」という）もが、変更後のプール３へ変更することが適切であるかどうかを判定する。即ち、ＣＴＬ３１は、全ての連続データが、対象データが合致したレイヤダウンルール（即ち、プール３へ変更することを定めたルール）に合致するか否かを判定する。ここでの連続データは、仮想ページ（０）と連続する仮想ページ（１）に格納されているデータと、仮想ページ（１）と連続する仮想ページ（２）に格納されているデータと、仮想ページ（２）と連続する仮想ページ（３）に格納されているデータとの三つになる。以下、図９の説明において、対象の仮想ページ（０）から連続する三つの仮想ページ（１）〜（３）のそれぞれを「連続仮想ページ（１）〜（３）」と呼び、連続仮想ページ（１）〜（３）のそれぞれに割り当てられている実ページ（１−１）、（１−２）及び（１−３）を「連続実ページ（１−１）、（１−２）及び（１−３）」と呼ぶ。
【００８４】
ＣＴＬ３１は、対象データに加えて、全ての連続データが、プール３へ変更することを定めたルールに合致すると判定した場合は、対象データ及び全ての連続データの格納先を一括してプール１からプール３へ変更する。一方、ＣＴＬ３１は、少なくとも一つの連続データが、プール３へ変更することを定めたルールに合致しないと判定した場合は、対象データ及び連続データの格納先の変更を行わない。以下、対象データ及び連続データの格納先が、プール３へ変更される場合について説明する。
【００８５】
ＣＴＬ３１は、変更後のプール３内の実ページ５２のうち未割当ての実ページ（３−１）を選択する。
【００８６】
その後、ＣＴＬ３１は、対象実ページ（１−０）及び全ての連続実ページ（１−１）、（１−２）及び（１−３）から変更後の実ページ（３−１）へ、対象データ及び全ての連続データをマイグレーションする。具体的には、ＣＴＬ３１は、対象データ及び全ての連続データを結合し、その結合したデータを、変更後の実ページ（３−１）に移動する。
【００８７】
その後、ＣＴＬ３１は、対象仮想ページ（０）に対する対象実ページ（１−０）の割り当て、及び、連続仮想ページ（１）〜（３）のそれぞれに対する連続実ページ（１−１）、（１−２）及び（１−３）の割り当てを解除する。そして、ＣＴＬ３１は、新たに、対象仮想ページ（０）及び連続仮想ページ（１）〜（３）に対して一つの変更後の実ページ（３−１）を割り当てる。すなわち、変更後のプール３内の実ページ５２のサイズは、仮想ページ５１のサイズの４倍であるため、四つの連続する仮想ページ（０）〜（３）に対して変更後のプール３内の一つの実ページ（３−１）が割り当てられる。
【００８８】
以上の処理が行われることにより、対象仮想ページ（０）及び連続仮想ページ（１）〜（３）のそれぞれに格納されているデータの格納先は、プール１（ＦＣ−ＨＤＤプール４２Ａ）からプール３（テーププール４２Ｄ）へ変更される（レイヤダウンされる）。
【００８９】
以下、図１０〜図１３を参照して、ストレージシステム３が備える共有メモリ３３に記憶される各種のテーブル（仮想ＶＯＬ管理テーブル６１、プール管理テーブル６２、実ページ管理テーブル６３及びレイヤ変更ルールテーブル６４）について説明する。尚、各種のテーブル６１，６２，６３，６４は、キャッシュメモリ３４に記憶されてもよい。
【００９０】
図１０は、仮想ＶＯＬ管理テーブル６１の一例を示す図である。
【００９１】
仮想ＶＯＬ管理テーブル６１は、ストレージシステム３において形成されている仮想ＶＯＬ４１に関する情報を管理するためのテーブルである。具体的には、仮想ＶＯＬ管理テーブル６１は、仮想ＶＯＬ４１を構成する仮想ページ５１のそれぞれについて、いずれかの実ページ５２が割り当てられているかどうか、及び、実ページ５２が割り当てられている場合はどの実ページ５２が割り当てられているかを管理するためのテーブルである。例えば、図１０に示すように、仮想ＶＯＬ管理テーブル６１には、仮想ＶＯＬ４１を構成する仮想ページ５１ごとに、その仮想ページ５１を特定するＬＢＡ６１２と、その仮想ページ５１に割り当てられている実ページ５２（以下、図１０の説明において「割り当て実ページ５２」）が登録されているプール４２のプールＩＤ６１３と、割り当て実ページ５２が登録されたプール４２のプール種別６１４と、割り当て実ページ５２のページ番号６１５とが、対応付けて記録される。
【００９２】
図１１は、プール管理テーブル６２の一例を示す図である。
【００９３】
プール管理テーブル６２は、ストレージシステム３において形成されているプール４２に関する情報を管理するためのテーブルである。以下、プール管理テーブル６２によって管理される、各プール４２に関する情報を、「プール管理情報」と呼ぶ。プール管理テーブル６２には、例えば、ストレージシステム３において形成されているプール４２ごとに、プールＩＤ６２１と、プール種別６２２と、プール容量６２３と、実ページサイズ６２４と、総実ページ数６２５と、使用実ページ数６２６と、空き実ページ数６２７と、使用実ページキューポインタ６２８と、空き実ページキューポインタ６２９と、データ作成日時キューポインタ６２Ａと、最終データ更新日時キューポインタ６２Ｂと、最終データアクセス日時キューポインタ６２Ｃとが、対応付けて記録される。
【００９４】
プールＩＤ６２１は、プール４２を一意に特定するための情報である。プール種別６２２は、対応するプールＩＤ６２１によって特定されるプール４２（以下、図１１の説明において「対応プール４２」）の種類を示す情報である。プール容量６２３は、対応プール４２の総容量（即ち、対応プール４２内の全実ページ５２のサイズの総和）である。実ページサイズ６２４は、対応プール４２内の実ページ５２のサイズである。総実ページ数６２５は、対応プール４２内の実ページ５２の総数である。使用実ページ数６２６は、対応プール４内の実ページ５２のうち使用されているもの（即ち、仮想ページ５１に割り当てられているものであり、以下、「使用実ページ５２」という）の数である。空き実ページ数６２７は、対応プール４内の実ページ５２のうち使用されていないもの（即ち、仮想ページ５１に割り当てられていないものであり、以下、「空き実ページ５２」という）の数である。
【００９５】
使用実ページキューポインタ６２８は、対応プール４２内の使用実ページ５２を管理するために利用されるキューポインタ（キュー構造を構成するポインタ）である。空き実ページキューポインタ６２９は、対応プール４２内の空き実ページ５２を管理するために利用されるキューポインタである。データ作成日時キューポインタ６２Ａは、対応プール４２内の全ての使用実ページ５２について、それぞれに格納されているデータのデータ作成日時を管理するために利用されるキューポインタである。最終データ更新日時キューポインタ６２Ｂは、対応プール４２内の全ての使用実ページ５２について、それぞれに格納されているデータの最終データ更新日時（そのデータが最後に更新された日時）を管理するために利用されるキューポインタである。最終データアクセス日時キューポインタ６２Ｃは、対応プール４２内の全ての使用実ページ５２について、それぞれに格納されているデータの最終データアクセス日時（そのデータが最後にアクセス（ライト又はリード）された日時）を管理するために利用されるキューポインタである。キューポインタ６２８〜６２Ｃがどのように利用されるかについては、後述する。
【００９６】
図１２は、実ページ管理テーブル６３の一例を示す図である。
【００９７】
実ページ管理テーブル６３は、ストレージシステム３において形成されているプール４２に登録されている実ページ５２に関する情報を管理するためのテーブルである。本実施形態では、このページ管理テーブル６３によって管理される、各実ページ５２に関する情報を、「実ページ管理情報」と呼んでいる。実ページ管理テーブル６３は、ストレージシステム３において形成されているプール４２ごとに作成される。実ページ管理テーブル６３には、例えば、その実ページ管理テーブル６３が管理の対象とするプール４２内の実ページ５１ごとに、ページ番号６３１と、実ページサイズ６３２と、割り当て先の仮想ページ６３３と、データ特性６３４と、プール内キューポインタ６３５と、データ作成日時キューポインタ６３６と、最終データ更新日時キューポインタ６３７と、最終データアクセス日時キューポインタ６３８とが、対応付けて記録される。
【００９８】
ページ番号６３１は、実ページ５２を一意に特定するための情報である。実ページサイズ６３２は、対応するページ番号６３１によって特定される実ページ５２（以下、図１２の説明において「対応実ページ５２」）のサイズである。割り当て先の仮想ページ６３３は、対応実ページ５２が割り当てられている仮想ページ５１（以下、図１２の説明において「割り当て先仮想ページ５１」）を示す情報である。割り当て先の仮想ページ６３３には、割り当て先仮想ページ５１が属する仮想ＶＯＬ４１のＩＤと、割り当て先仮想ページ５１を特定するためのＬＢＡとが含まれる。データ特性６３４は、対応実ページ５２に格納されているデータ（以下、図１２の説明において「対応データ」）のデータ特性である。本実施形態では、データ特性６３４には、データ作成日時と、最終データ更新日時と、最終データアクセス日時と、アクセス回数とが含まれる。データ作成日時は、対応データが新規に作成された日時である。最終データ更新日時は、対応データが最後に更新された日時である。最終データアクセス日時は、対応データが最後にアクセス（ライト又はリード）された日時である。アクセス回数は、対応データが対応実ページ５２に格納されてから現在に至るまでの、ホスト１からアクセスされた回数である。
【００９９】
プール内キューポインタ６３５は、対応実ページ５２が属するプール４２（即ち、この実ページ管理テーブル６３が管理の対象としているプール４２であり、以下、図１２の説明において「対応プール４２」という）内の使用実ページ５２及び空き実ページ５２を管理するためのキューポインタである。プール内キューポインタ６３５は、プール管理テーブル６２における使用実ページキューポインタ６２８又は空き実ページキューポインタ６２９とともに利用される。データ作成日時キューポインタ６３６は、対応プール４２内の全ての使用実ページ５２について、それぞれに格納されているデータのデータ作成日時を管理するために利用されるキューポインタである。データ作成日時キューポインタ６３６は、プール管理テーブル６２におけるデータ作成日時ページキューポインタ６２Ａとともに利用される。最終データ更新日時キューポインタ６３７は、対応プール４２内の全ての使用実ページ５２について、それぞれに格納されているデータの最終データ更新日時を管理するために利用されるキューポインタである。最終データ更新日時キューポインタ６３７は、プール管理テーブル６２における最終データ更新日時ページキューポインタ６２Ｂとともに利用される。最終データアクセス日時キューポインタ６３８は、対応プール４２内の全ての使用実ページ５２について、それぞれに格納されているデータの最終データアクセス日時を管理するために利用されるキューポインタである。最終データアクセス日時キューポインタ６３８は、プール管理テーブル６２における最終データアクセス日時キューポインタ６２Ｃとともに利用される。キューポインタ６３５〜６３８がどのように利用されるかについては、後述する。
【０１００】
図１３は、レイヤ変更ルールテーブル６４の一例を示す図である。
【０１０１】
レイヤ変更ルールテーブル６４は、どのようなデータ特性の場合にどのレイヤに格納するかといった格納先のレイヤの決定基準を管理するためのテーブルである。レイヤ変更ルールテーブル６４には、例えば、プール４２ごとに、そのプール４２に関するレイヤ変更ルール（レイヤアップルール及び／又はレイヤダウンルール）と、そのレイヤ変更ルールに合致した場合の変更後のプール４２とが、対応付けて記録される。
【０１０２】
対象プール６４１は、対象とするプール４２を示す情報である。対象プール６４１には、対象とするプール４２のＩＤであるプールＩＤ６４１１と、対象とするプール４２の種類を示す情報であるプール種別６４１２とが含まれる。ルール種別６４２は、対応するレイヤ変更ルールの種類（レイヤアップルール又はレイヤダウンルール）を示す情報である。レイヤ変更ルール６４３には、そのレイヤ変更ルールにおいて考慮されるデータ特性を示す情報である判定項目６４３１と、そのレイヤ変更ルールに合致するか否かを決定するための基準を示す情報である条件６４３２とが含まれる。変更後のプール６４４は、対応するレイヤ変更ルールに合致した場合の変更後のプール４２を示す情報である。変更後のプール６４４には、その変更後のプール４２のＩＤであるプールＩＤ６４４１と、その変更後のプール４２の種類を示す情報であるプール種別６４４２とが含まれる。
【０１０３】
例えば、図１３の例では、プールＩＤが“プール２”であるＳＡＴＡ−ＨＤＤプール４２Ｃには、レイヤダウンルール及びレイヤアップルールがそれぞれ一つずつ定義されている。レイヤダウンルールは、データ作成日時から３６５日経過することである。また、レイヤダウンルールに合致した場合の変更後のプール４２は、プールＩＤが“プール３”のテーププール４２Ｄである。従って、プールＩＤが“プール２”であるＳＡＴＡ−ＨＤＤプール４２Ｃ内の実ページ５２（以下、図１３の説明において「対象実ページ５２」）に格納されているデータ（以下、図１３の説明において「対象データ」）が、データ作成日時から３６５日経過していた場合は、レイヤダウンルールに合致することになる。よって、対象データの格納先が、対象実ページ５２から、プールＩＤが“プール３”のテーププール４２Ｄ内の実ページ５２へ変更される。また、レイヤアップルールは、アクセス回数が１００００回を超えることである。また、レイヤアップルールに合致した場合の変更後のプール４２は、プールＩＤが“プール１”のＦＣ−ＨＤＤ４２Ａである。従って、対象データのアクセス回数が、１００００回を超えていた場合は、レイヤアップルールに合致することになる。よって、対象データの格納先が、対象実ページ５２から、プールＩＤが“プール１”のＦＣ−ＨＤＤ４２Ａ内の実ページ５２へ変更される。
【０１０４】
図１４は、プール管理情報及び実ページ管理情報によって示されるキュー構造の例である。
【０１０５】
図１１及び図１２で説明したように、プール管理情報及び実ページ管理情報には、幾つかのキューポインタが含まれる。本実施形態では、プール管理情報には、使用実ページキューポインタ６２８と、空き実ページキューポインタ６２９と、データ作成日時キューポインタ６２Ａと、最終データ更新日時キューポインタ６２Ｂと、最終データアクセス日時キューポインタ６２Ｃとの五つが含まれる。また、実ページ管理情報には、プール内キューポインタ６３５と、データ作成日時キューポインタ６３６と、最終データ更新日時キューポインタ６３７と、最終データアクセス日時キューポインタ６３８との四つが含まれる。図１４には、プール管理情報に含まれるキューポインタ（図１４では“ＱＰ”と略している）６２８〜６２Ｃと、実ページ管理情報に含まれるデータ特性６３４及びキューポインタ６３５〜６３８とが記されている。
【０１０６】
以下、一つのプール４２（以下、図１４の説明において「対象プール４２」）を例に挙げて説明する。対応プール４２には、ページ番号“１００”、“１０１”，“１０２”，“１０３”及び“１０４”の五つの実ページ５２が属しているものとする。また、ページ番号“１００”、“１０１”及び“１０２”の実ページ５２が使用実ページ５２であり、ページ番号“１０３”及び“１０４”の実ページ５２が空き実ページ５２であるものとする。
【０１０７】
プール管理情報に含まれるキューポインタ６２８〜６２Ｃの横には、対象プール４２に関する、それぞれのキューポインタ６２８〜６２Ｃの値が記されている。また、実ページ管理情報に含まれるデータ特性６３４及びキューポインタ６３５〜６３８の横には、対象プール４２内の全ての実ページ５２（図１４の例では、ページ番号“１００”、“１０１”，“１０２”，“１０３”及び“１０４”の五つの実ページ５２）に関する、それぞれのデータ特性６３４及びキューポインタ６３５〜６３８の値が記されている。
【０１０８】
まず、プール管理情報に含まれる使用実ページキューポインタ６２８及び実ページ管理情報に含まれるプール内キューポインタ６３５について説明する。上述したように、使用実ページキューポインタ６２８及びプール内キューポインタ６３５は、対応プール４２内の使用実ページ５２を管理するために利用されるキューポインタである。使用実ページキューポインタ６２８の値は、対応プール４２内の一つの使用実ページ５２のページ番号である。即ち、使用実ページキューポインタ６２８は、対応プール４２内の一つの使用実ページ５２を指している。また、或る実ページ５２（当該実ページ５２）について見たときに、当該実ページ５２におけるプール内キューポインタ６３５の値は、当該実ページ５２が使用実ページ５２の場合は、他の使用実ページ５２のページ番号又は他の使用実ページ５２がないことを示す情報（図１４の例では、“root”）である（当該実ページ５２が空き実ページ５２の場合は、他の空き実ページ５２のページ番号又は他の空き実ページ５２がないことを示す情報である）。即ち、プール内キューポインタ６３５は、他の使用実ページ５２（或いは他の空き実ページ）を指している。ここで、他の使用（空き）実ページ５２とは、当該実ページ５２、及び、使用実ページキューポインタ６２８（空き実ページキューポインタ６２９）が指している使用（空き）実ページ５２から当該実ページ５２までに指された全ての使用（空き）実ページ５２のいずれとも異なる使用（空き）実ページ５２のことをいう。
【０１０９】
図１４の例では、使用実ページキューポインタ６２８は、ページ番号“１０２”の使用実ページ５２を指している。また、ページ番号“１０２”の使用実ページ５２におけるプール内キューポインタ６３５は、ページ番号“１０１”の使用実ページ５２を指している。また、ページ番号“１０１”の使用実ページ５２におけるプール内キューポインタ６３５は、ページ番号“１００”の使用実ページ５２を指している。
【０１１０】
このように、使用実ページキューポインタ６２８及びプール内キューポインタ６３５は、対応プール４２内の全ての使用実ページ５２を繋いでいる。従って、管理情報を参照するＣＴＬ３１は、使用実ページキューポインタ６２８及びプール内キューポインタ６３５を辿ることによって、対応プール４２内の全ての使用実ページ５２を知ることができる。尚、使用実ページキューポインタ６２８及びプール内キューポインタ６３５によって繋がれる使用実ページ５２の順番は任意である。
【０１１１】
上述したように、プール管理情報に含まれる空き実ページキューポインタ６２９及び実ページ管理情報に含まれるプール内キューポインタ６３５は、対応プール４２内の空き実ページ５２を管理するために利用されるキューポインタである。空き実ページキューポインタ６２９及びプール内キューポインタ６３５を利用した、空き実ページ５２の管理方法は、上述したような、使用実ページキューポインタ６２８及びプール内キューポインタ６３５を利用した、使用実ページ５２の管理方法と同様である。
【０１１２】
次に、データ作成日時キューポインタ６２Ａ，６３６について説明する。上述したように、データ作成日時キューポインタ６２Ａ，６３６は、対応プール４２内の全ての使用実ページ５２について、それぞれに格納されているデータのデータ作成日時を管理するために利用されるキューポインタである。プール管理情報に含まれるデータ作成日時キューポインタ６２Ａの値は、対応プール４２内の使用実ページ５２のうち、そこに格納されているデータのデータ作成日時が最も古いもののページ番号である。即ち、プール管理情報に含まれるデータ作成日時キューポインタ６２Ａは、データ作成日時が最も古いデータが格納されている使用実ページ５２を指している。また、或る使用実ページ５２（当該使用実ページ５２）について見たときに、当該使用実ページ５２におけるデータ作成日時キューポインタ６３６の値は、次にデータ作成日時が古い使用実ページ５２のページ番号である。即ち、当該使用実ページ５２におけるデータ作成日時キューポインタ６３６は、次にデータ作成日時が古い使用実ページ５２を指している。ここで、次にデータ作成日時が古い使用実ページ５２とは、当該使用実ページ５２に格納されているデータの次にデータ作成日時が古いデータが格納されている使用実ページ５２のことをいう。
【０１１３】
図１４の例では、データ作成日時キューポインタ６２Ａは、ページ番号“１０２”の使用実ページ５２を指している。また、ページ番号“１０２”の使用実ページ５２におけるデータ作成日時キューポインタ６３６は、ページ番号“１０１”の使用実ページ５２を指している。また、ページ番号“１０１”の使用実ページ５２におけるデータ作成日時キューポインタ６３６は、ページ番号“１００”の使用実ページ５２を指している。
【０１１４】
このように、データ作成日時キューポインタ６２Ａ，６３６は、対応プール４２内の全ての使用実ページ５２を、そこに格納されるデータのデータ作成日時が古いものから順番に繋いでいる。従って、管理情報を参照するＣＴＬ３１は、データ作成日時キューポインタ６２Ａ，６３６を辿ることによって、対応プール４２内の使用実ページ５２を、そこに格納されているデータのデータ作成日時が古いものから順番に取得することができる。尚、データ作成日時キューポインタ６２Ａ，６３６に加えて或いはデータ作成日時キューポインタ６２Ａ，６３６に代えて、対応プール４２内の全ての使用実ページ５２を、そこに格納されるデータのデータ作成日時が新しいものから順番に繋ぐキューポインタが用いられてもよい。
【０１１５】
例えば、レイヤ変更ルールで考慮されるデータ特性がデータ作成日時である場合は、ＣＴＬ３１は、データ作成日時キューポインタ６２Ａ，６３６を参照することで、判定対象の実ページ５２を、効率的に選択することができる。ここで、判定対象の実ページ５２とは、レイヤの変更を行うか否かの判定（即ち、レイヤ変更ルールに合致するか否かの判定）が行われることとなるデータが格納されている実ページ５２のことである。以下、判定対象の実ページ５２を効率的に選択できることについて、図１４を参照して具体的に説明する。例えば、レイヤ変更ルールが、データ作成日時から３６５日経過することであるとする。また、現在の日時が、“09/01/20 01:23:45”であるとする。ＣＴＬ３１は、まず、プール管理情報に含まれるデータ作成日時キューポインタ６２Ａを参照する。これにより、ＣＴＬ３１は、データ作成日時が最も古いデータが格納されている使用実ページ５２（図１４の例では、ページ番号“１０２”の実ページ５２）を得ることができる。ＣＴＬ３１は、ここで得られた使用実ページ５２を、第一の判定対象の実ページ５２とする。第一の判定対象の実ページ５２とされた、ページ番号“１０２”の実ページ５２におけるデータ作成日時は、“08/01/01 01:23:45”であり、故に、現在の日時“09/01/20 01:23:45”はそのデータ作成日時“08/01/01 01:23:45”から３６５日を経過している。即ち、第一の判定対象の実ページ５２に格納されているデータ（以下、図１４の説明において「第一の判定対象のデータ」）は、レイヤ変更ルールに合致する。従って、第一の判定対象のデータの格納先は、他のレイヤに変更される。次に、ＣＴＬ３１は、第一の判定対象の実ページ５２におけるデータ作成日時キューポインタ６３６を参照する。これにより、ＣＴＬ３１は、データ作成日時が、第一の判定対象のデータの次に古いデータが格納されている使用実ページ５２（図１４の例では、ページ番号“１０１”の実ページ５２）を得ることができる。ＣＴＬ３１は、ここで得られた使用実ページ５２を、第二の判定対象の実ページ５２とする。第二の判定対象の実ページ５２とされた、ページ番号“１０１”の実ページ５２におけるデータ作成日時は、“08/02/02 01:23:45”であり、故に、現在の日時“09/01/20 01:23:45”はそのデータ作成日時“08/02/02 01:23:45”から３６５日を経過していない。即ち、第二の判定対象の実ページ５２に格納されているデータ（以下、図１４の説明において「第二の判定対象のデータ」）は、レイヤ変更ルールに合致しない。従って、第二の判定対象のデータの格納先は、他のレイヤに変更されない。ここで、第二の判定対象の実ページ５２よりも後にデータ作成日時キューポインタ６３６で繋がれている使用実ページ５２は、そこに格納されているデータのデータ更新日時が、第二の判定対象のデータよりも新しいものである。従って、ＣＴＬ３１は、この時点で、第一の対象データ以外に、レイヤ変更ルールに合致するデータは存在しないと判定することができる。つまり、ＣＴＬ３１は、必ずしも全ての使用実ページ５２のそれぞれに格納されているデータの全てついて、レイヤの変更を行うか否かの判定を行わなくともよくなる。
【０１１６】
上述したように、最終データ更新日時キューポインタ６２Ｂ，６３７は、対応プール４２内の全ての使用実ページ５２について、それぞれに格納されているデータの最終データ更新日時を管理するために利用されるキューポインタである。最終データアクセス日時キューポインタ６２Ｃ，６３８は、対応プール４２内の全ての使用実ページ５２について、それぞれに格納されているデータの最終データアクセス日時を管理するために利用されるキューポインタである。これらのキューポインタ６２Ｂ，６３７，６２Ｃ，６３８の利用方法は、データ作成日時キューポインタ６２Ａ，６３６の利用方法と同じである。即ち、最終データ更新日時キューポインタ６２Ｂ，６３７は、対応プール４２内の全ての使用実ページ５２を、そこに格納されるデータの最終データ更新日時が古いものから順番に繋いでいる。また、最終データアクセス日時キューポインタ６２Ｃ，６３８は、対応プール４２内の全ての使用実ページ５２を、そこに格納されるデータの最終データアクセス日時が古いものから順番に繋いでいる。尚、データ作成日時キューポインタ６２Ａ，６３６と同様に、最終データ更新日時キューポインタ６２Ｂ，６３７に加えて或いは最終データ更新日時キューポインタ６２Ｂ，６３７に代えて、対応プール４２内の全ての使用実ページ５２を、そこに格納されるデータの最終データ更新日時が新しいものから順番に繋ぐキューポインタが用いられてもよい。また、最終データアクセス日時キューポインタ６２Ｃ，６３８に加えて或いは最終データアクセス日時キューポインタ６２Ｃ，６３８に代えて、対応プール４２内の全ての使用実ページ５２を、そこに格納されるデータの最終データアクセス日時が新しいものから順番に繋ぐキューポインタが用いられてもよい。
【０１１７】
以下、本実施形態に係るストレージシステム３で行われる処理の詳細を説明する。以下の説明では、各処理を行う主体をＣＴＬ３１として記載するが、各処理は、ＣＴＬ３１のホストアダプタ３２の制御の下に行われてもよいし、ＣＴＬ３１の記憶装置アダプタ３６の制御の下に行われてもよい。また、各処理は、ＣＴＬ３１内（例えば、ホストアダプタ３２及び／又は記憶装置アダプタ３６内）のマイクロプロセッサでコンピュータプログラムが実行されることで実現されるが、それに代えて、少なくとも一部がハードウェア回路で行われても良い。
【０１１８】
図１５は、リード要求を受けた場合にＣＴＬ３１が行う処理のフローチャートである。
【０１１９】
ＣＴＬ３１（ホストアダプタ３２）が、ホスト１からリード要求を受信すると、図１５の処理が開始される。リード要求では、リード対象の仮想ＶＯＬ４１と、リード対象のデータの格納先の仮想ページ５１を示すＬＢＡとが指定される。
【０１２０】
まず、リード要求を受信したＣＴＬ３１は、リード対象のデータがキャッシュメモリ３４に記憶されているか否かを判定する（Ｓ１０１）。
【０１２１】
リードデータがキャッシュメモリ３４に記憶されている場合は（Ｓ１０１：ＹＥＳ）、ＣＴＬ３１は、Ｓ１０８の処理を行う。
【０１２２】
一方、リード対象のデータがキャッシュメモリ３４に記憶されていない場合は（Ｓ１０１：ＮＯ）、ＣＴＬ３１は、指定されたＬＢＡによって特定される仮想ページ５１（以下、図１５及び図１６の説明において「対象仮想ページ５１」）に対して、いずれかの実ページ５２が割り当てられているか否かを判定する（Ｓ１０２）。この判定は、仮想ＶＯＬ管理テーブル６１が参照されることにより行われる。即ち、ＣＴＬ３１は、仮想ＶＯＬ管理テーブル６１における、対象仮想ページ５１に対応する割り当て元の実ページに、いずれかの実ページ５１を示す情報が記録されていれば、実ページ５２が割り当てられていると判定する。逆に、ＣＴＬ３１は、仮想ＶＯＬ管理テーブル６１における、対象仮想ページ５１に対応する割り当て元の実ページに、実ページ５１を示す情報が記録されていなければ、実ページ５２が割り当てられていないと判定する。
【０１２３】
対象仮想ページ５１に対して実ページ５２が割り当てられていない場合は（Ｓ１０２：ＮＯ）、ＣＴＬ３１は、全てが“０”とされたデータを、キャッシュメモリ３４に格納する（Ｓ１１１）。
【０１２４】
その後、ＣＴＬ３１は、キャッシュメモリ３４に格納した、全てが“０”とされたデータを、リード対象のデータとして、ホスト１へ送信する（Ｓ１１２）。
【０１２５】
その後、ＣＴＬ３１は、キャッシュメモリ３４を解放する（Ｓ１１３）。即ち、ＣＴＬ３１は、キャッシュメモリ３４に格納した、全てが“０”とされたデータを削除する。
【０１２６】
一方、対象仮想ページ５１に対して実ページ５２が割り当てられている場合は（Ｓ１０２：ＹＥＳ）、ＣＴＬ３１は、リード対象のデータの格納先がテープ装置３７Ｄであるか否か（即ち、対象仮想ページ５１に割り当てられている実ページ５２が、テーププール４２Ｄに属しているか否か）を判定する（Ｓ１０３）。具体的には、ＣＴＬ３１は、仮想ＶＯＬ管理テーブル６１を参照して、仮想ＶＯＬ管理テーブル６１における、対象仮想ページ５１に対応する割り当て元の実ページのプール種別６１４が、テーププール４２Ｄを示していれば、リード対象のデータの格納先がテープ装置３７Ｄであると判定する。逆に、ＣＴＬ３１は、仮想ＶＯＬ管理テーブル６１における、対象仮想ページ５１に対応する割り当て元の実ページのプール種別６１４が、テーププール４２Ｄ以外を示していれば、リード対象のデータの格納先がテープ装置３７Ｄではないと判定する。
【０１２７】
リード対象のデータの格納先がテープ装置３７Ｄではない場合は（Ｓ１０３：ＮＯ）、ＣＴＬ３１は、リード対象のデータを、その格納先の記憶装置３７から読み出してキャッシュメモリ３４へ格納する（Ｓ１０４）。その後、ＣＴＬ３１は、Ｓ１０８の処理を行う。
【０１２８】
一方、リード対象のデータの格納先がテープ装置３７Ｄである場合は（Ｓ１０３：ＹＥＳ）、ＣＴＬ３１は、一時的にリード対象のデータを格納するためのＨＤＤ上の領域を確保する（Ｓ１０５）。
【０１２９】
その後、ＣＴＬ３１は、リード対象のデータを、その格納先の記憶装置３７（テープ装置３７Ｄ）から読み出して、Ｓ１０５で確保した領域へ格納する（Ｓ１０６）。
【０１３０】
その後、ＣＴＬ３１は、リード対象のデータを、Ｓ１０５で確保した領域から読み出して、キャッシュメモリ３４へ格納する（Ｓ１０７）。
【０１３１】
Ｓ１０８では、ＣＴＬ３１は、キャッシュメモリ３４に格納したリード対象のデータを、ホスト１へ送信する。
【０１３２】
その後、ＣＴＬ３１は、対象仮想ページ５１に割り当てられている実ページ５２を、判定対象の実ページ５２として、レイヤ変更処理を行う（Ｓ１０９）。Ｓ１０９において行われるレイヤ変更処理の詳細については、後に図１６を参照して説明する。
【０１３３】
その後、ＣＴＬ３１は、キャッシュメモリ３４を解放する（Ｓ１１０）。即ち、ＣＴＬ３１は、キャッシュメモリ３４に格納したリード対象のデータを削除する。
【０１３４】
図１６は、図１５におけるＳ１０９において行われるレイヤ変更処理のフローチャートである。
【０１３５】
まず、ＣＴＬ３１は、プール管理テーブル６２及び実ページ管理テーブル６３の内容を更新する（２０１）。即ち、ＣＴＬ３１は、プール管理情報及び実ページ管理情報のうち、ホスト１がリード対象のデータにアクセスしたことによって変更が生じたものを、変更後の内容に更新する。具体的には、まず、ＣＴＬ３１は、リード対象のデータが格納されている実ページ５２（判定対象の実ページ５２）に関する実ページ管理情報における最終データアクセス日時を、現在の日時に更新する。また、ＣＴＬ３１は、判定対象の実ページ５２に関する実ページ管理情報におけるアクセス回数に、“１”を加算する。また、ＣＴＬ３１は、判定対象の実ページ５２が属するプール４２（以下、図１６の説明において「対象プール４２」）における、最終データアクセス日時に関するキュー構造を変更する。即ち、ＣＴＬ３１は、判定対象の実ページ５２が、キュー構造の最も後に繋がれるように、対象プール４２に関するプール管理情報における最終データアクセス日時キューポインタ６２Ｃ、及び、対象プール４２に属する各実ページ５２に関する実ページ管理情報における最終データアクセス日時キューポインタ６３８の値を変更する。
【０１３６】
次に、ＣＴＬ３１は、リード対象のデータが、レイヤ変更ルールに合致するか否かを判定する（Ｓ２０２）。図１６のレイヤ変更処理は、リード対象のデータのアクセス回数が増加したことを契機として行われるものである。従って、ここでは、レイヤアップルールに合致するか否かが判定される。具体的には、ＣＴＬ３１は、レイヤ変更ルールテーブル６４から、対象プール４２に関するレイヤアップルール（テーブル６４におけるレイヤ変更ルール６４３）を取得する。ここでは、取得したレイヤアップルールが、アクセス回数が１００００回を超えることであるとする。また、ＣＴＬ３１は、実ページ管理テーブル６３を参照して、判定対象の実ページ５２に対応するデータ特性６３４のうちのアクセス回数（即ち、リード対象のデータに関するアクセス回数）を取得する。そして、ＣＴＬ３１は、取得したアクセス回数が、取得したレイヤアップルールに合致するか否か（即ち、１００００回を超えているか否か）を判定する。
【０１３７】
リード対象のデータがレイヤ変更ルールに合致していない場合は（Ｓ２０２：ＮＯ）、ＣＴＬ３１は、図１６の処理を終了する。即ち、この場合、リード対象のデータの格納先は、変更されない。
【０１３８】
一方、リード対象のデータがレイヤ変更ルールに合致している場合は（Ｓ２０２：ＹＥＳ）、ＣＴＬ３１は、Ｓ２０３〜Ｓ２０６の処理を行って、リード対象のデータの格納先のレイヤを変更する。
【０１３９】
即ち、まず、ＣＴＬ３１は、Ｓ２０２で取得したレイヤアップルールに合致した場合の変更後のプール４２（テーブル６４における変更後のプール６４４）を、レイヤ変更ルールテーブル６４から取得する。そして、ＣＴＬ３１は、取得した変更後のプール４２に属する実ページ５２のうち未だどの仮想ページ５１にも割り当てられていないもの（変更後の実ページ５２）を選択する。そして、ＣＴＬ３１は、その選択した変更後の実ページ５２の領域を確保する（Ｓ２０３）。選択する実ページ５２の数は、仮想ページ５１のサイズ、対象プール４２の実ページ５２のサイズ及び変更後のプール４２の実ページ５２のサイズによって異なる。詳細は、図６及び図７において説明した通りである。
【０１４０】
その後、ＣＴＬ３１は、変更前の実ページ５２（判定対象の実ページ５２）から変更後の実ページ５２へ、リード対象のデータをコピーする（Ｓ２０４）。
【０１４１】
その後、ＣＴＬ３１は、変更前の実ページ５２（判定対象の実ページ５２）の領域を解放する（Ｓ２０５）。即ち、判定対象の実ページ５２に格納されていたリード対象のデータが、削除される。Ｓ２０４及びＳ２０５により、判定対象の実ページ５２から変更後の実ページ５２への、リード対象のデータのマイグレーションが完了する。
【０１４２】
その後、ＣＴＬ３１は、仮想ＶＯＬ管理テーブル６１、プール管理テーブル６２及び実ページ管理テーブル６３の内容を更新する（Ｓ２０６）。
【０１４３】
具体的には、ＣＴＬ３１は、仮想ＶＯＬ管理テーブル６１を、以下のように更新する。即ち、ＣＴＬ３１は、仮想ＶＯＬ管理テーブル６１における、対象仮想ページ５１に対応する割り当て元の実ページを、変更後の実ページ５２を示す内容にする。これにより、対象仮想ページ５１へ割り当てられる実ページ５２が、判定対象の実ページ５２から変更後の実ページ５２に変更される。
【０１４４】
リード対象のデータの格納先が変更されたことで、判定対象の実ページ５２は、空き実ページ５２となり、変更後の実ページ５２は、使用実ページ５２となる。そこで、ＣＴＬ３１は、プール管理テーブル６４を、以下のように更新する。即ち、ＣＴＬ３１は、プール管理テーブル６２における、対象プール４２に対応する使用実ページ数６２６を、もとの値から判定対象の実ページ５２（ここでは“１”）の数を減算した値に変更する。また、ＣＴＬ３１は、プール管理テーブル６２における、対象プール４２に対応する空き実ページ数６２６を、もとの値に判定対象の実ページ５２の数（ここでは“１”）を加算した値に変更する。更に、ＣＴＬ３１は、プール管理テーブル６２における、変更後のプール４２に対応する使用実ページ数６２６を、もとの値に変更後の実ページ５２の数を加算した値に変更する。また、ＣＴＬ３１は、プール管理テーブル６２における、変更後のプール４２に対応する空き実ページ数６２６を、もとの値から変更後の実ページ５２の数を減算した値に変更する。
【０１４５】
また、ＣＴＬ３１は、実ページ管理テーブル６３を、以下のように更新する。即ち、ＣＴＬ３１は、対応プール４２に関する実ページ管理テーブル６３における、判定対象の実ページ５２に対応する割り当て先の仮想ページ６３３及びデータ特性６３４の全ての値を、“null”（何も設定されていないことを意味するデータ）にする。また、ＣＴＬ３１は、変更後のプール４２に関する実ページ管理テーブル６３における、変更後の実ページ５２に対応する割り当て先の仮想ページ６３３を、対象仮想ページ５１を示す内容にする。また、ＣＴＬ３１は、変更後のプール４２に関する実ページ管理テーブル６３における、変更後の実ページ５２に対応するデータ特性６３４に、それぞれの値を設定する。即ち、データ作成日時、最終データ更新日時及び最終データアクセス日時は、現在の日時とされる。また、アクセス回数は、１回とされる。
【０１４６】
詳細な説明は省略するが、プール管理テーブル６２における、対象プール４２及び変更後のプール４２のそれぞれに対応するキューポインタ６２８〜６２Ｃの値、及び、対象プール４２及び変更後のプール４２のそれぞれに関する実ページ管理テーブル６３におけるキューポインタ６３５〜６３８の値も、変更後のキュー構造を示す内容に更新される。
【０１４７】
図１７は、ライト要求を受けた場合にＣＴＬ３１が行う処理のフローチャートである。
【０１４８】
ＣＴＬ３１（ホストアダプタ３２）が、ホスト１からライト要求を受信すると、図１７の処理が開始される。ライト要求では、ライト対象の仮想ＶＯＬ４１と、ライト対象のデータの格納先の仮想ページ５１を示すＬＢＡとが指定される。
【０１４９】
まず、ライト要求を受信したＣＴＬ３１は、指定されたＬＢＡによって特定される仮想ページ５１（以下、図１７の説明において「対象仮想ページ５１」）に割り当てられている実ページ５２（以下、図１７の説明において「対象実ページ５２」）に対応する領域が、キャッシュメモリ３４上に確保されているか否かを判定する（Ｓ３０１）。
【０１５０】
対象実ページ５２に対応する領域がキャッシュメモリ３４上に確保されている場合は（Ｓ３０１：ＹＥＳ）、ＣＴＬ３１は、Ｓ３０５の処理を行う。この場合は、データの上書きとなる。
【０１５１】
一方、対象実ページ５２に対応する領域がキャッシュメモリ３４上に確保されていない場合は（Ｓ３０１：ＮＯ）、データの新規書き込みとなる。ＣＴＬ３１は、対象仮想ページ５１に対して、いずれかの実ページ５２が割り当てられているか否か（即ち、対象実ページ５２が存在するか否か）を判定する（Ｓ３０２）。この判定は、図１５におけるＳ１０２と同様にして行われる。
【０１５２】
対象仮想ページ５１に対して実ページ５２が割り当てられている場合は（Ｓ３０２：ＹＥＳ）、ＣＴＬ３１は、Ｓ３０４の処理を行う。
【０１５３】
一方、対象仮想ページ５１に対して実ページ５２が割り当てられていない場合は（Ｓ３０２：ＮＯ）、ＣＴＬ３１は、対象仮想ページ５１に対する実ページ５２の割り当てを行う（Ｓ３０３）。具体的には、例えば、ＣＴＬ３１は、ライト対象の仮想ＶＯＬ４１について予め設定されている初期プール４２内の実ページ５２のうち、未だどの仮想ページ５１にも割り当てられていないものを選択する。そして、ＣＴＬ３１は、仮想ＶＯＬ管理テーブル６１における、対象仮想ページ５１に対応する割り当て元の実ページを、選択した実ページ５２を示す内容にする。これにより、この選択された実ページ５２が、対象実ページ５２となる。
【０１５４】
Ｓ３０４では、ＣＴＬ３１は、実ページ管理テーブル６３における、ライト対象のデータに関するデータ作成日時を更新する。具体的には、ＣＴＬ３１は、実ページ管理テーブル６３における、対象実ページ５２に対応するデータ特性６３４のデータ作成日時を、現在の日時とする。
【０１５５】
Ｓ３０５では、ＣＴＬ３１は、対象実ページ５２に対応するキャッシュメモリ３４上の領域に、ライト対象のデータを格納する。キャッシュメモリ３４上の領域に格納されたライト対象のデータは、その後、対象実ページ５２に対応する記憶装置３７上の領域へ格納される。
【０１５６】
その後、ＣＴＬ３１は、Ｓ３０６〜Ｓ３１１の処理（レイヤ変更処理）を行う。これらの処理は、図１６におけるＳ２０１〜Ｓ２０６と実質的に同じである。ここでは、対象実ページ５２が、判定対象の実ページ５２となる。また、ライト対象のデータが、図１６の説明文中におけるリード対象のデータに相当する。更に、Ｓ３０６では、ライト対象のデータが格納されている実ページ５２（判定対象の実ページ５２）に関する実ページ管理情報については、最終データアクセス日時、アクセス回数に加えて、最終データ更新日時も更新される。また、キュー構造についても、最終データアクセス日時に関するキュー構造に加えて、最終データ更新日時に関するキュー構造も変更される。
【０１５７】
図１８は、定期的又は不定期的に行われるレイヤ変更処理のフローチャートである。
【０１５８】
図１８の処理は、定期的又は不定期的に行われる。尚、本実施形態では、下位レイヤから上位レイヤへの変更（レイヤアップ）は、上述した図１５〜図１７の処理において行われ（即ち、データへのアクセスがあった場合に行われ）、上位レイヤから下位レイヤへの変更（レイヤダウン）は、図１８の処理において行われる。図１８の処理において、レイヤアップルールに合致するか否かが判定されて、レイヤアップが行われてもよい。
【０１５９】
まず、ＣＴＬ３１は、ストレージシステム３において形成されているプール４２のうちの一つを選択する（Ｓ４０１）。以下、Ｓ４０１で選択されたプール４２を「選択プール４２」と呼ぶ。
【０１６０】
次に、ＣＴＬ３１は、選択プール４２内の使用実ページ５２のうちの一つを選択する（Ｓ４０２）。以下、Ｓ４０２で選択された使用実ページ５２を「選択使用実ページ５２」と呼ぶ。
【０１６１】
次に、ＣＴＬ３１は、選択使用実ページ５２に格納されているデータ（以下、図１８の説明において「対象データ」）が、レイヤ変更ルール（本実施形態では、レイヤダウンルール）に合致するか否かを判定する（Ｓ４０３）。具体的には、ＣＴＬ３１は、レイヤ変更ルールテーブル６４から、選択プール４２に関するレイヤダウンルール（テーブル６４におけるレイヤ変更ルール６４３）を取得する。また、ＣＴＬ３１は、実ページ管理テーブル６３を参照して、選択使用実ページ５２に対応するデータ特性６３４（取得したレイヤダウンルールで考慮されるもの）を取得する。そして、ＣＴＬ３１は、取得したデータ特性が、取得したレイヤダウンルールに合致するか否かを判定する。
【０１６２】
対象データがレイヤダウンルールに合致していない場合は（Ｓ４０３：ＮＯ）、ＣＴＬ３１は、Ｓ４１０の処理を行う。
【０１６３】
一方、対象データがレイヤダウンルールに合致している場合は（Ｓ４０３：ＹＥＳ）、ＣＴＬ３１は、Ｓ４０３で取得したレイヤダウンルールに合致した場合の変更後のプール４２（テーブル６４における変更後のプール６４４）を、レイヤ変更ルールテーブル６４から取得する。また、ＣＴＬ３１は、選択プール４２内の実ページ５２のサイズと変更後のプール４２内の実ページ５２のサイズとを、プール管理テーブル６２から取得する。そして、ＣＴＬ３１は、選択プール４２内の実ページ５２のサイズと変更後のプール４２内の実ページ５２のサイズとが同じであるか否かを判定する（Ｓ４０４）。
【０１６４】
選択プール４２内の実ページ５２のサイズと変更後のプール４２内の実ページ５２のサイズとが同じである場合は（Ｓ４０４：ＹＥＳ）、ＣＴＬ３１は、Ｓ４０６〜Ｓ４０９の処理を行って、対象データの格納先のレイヤを変更する。
【０１６５】
一方、選択プール４２内の実ページ５２のサイズと変更後のプール４２内の実ページ５２のサイズとが異なっている場合は（Ｓ４０４：ＮＯ）、変更後のプール４２内の実ページ５２のサイズは、選択プール４２内の実ページ５２のサイズよりも大きくなる。何故ならば、レイヤダウンルールに合致した場合の変更後のプール４２は、変更前のプール４２（選択プール４２）の属するレイヤの下位レイヤに属しているものだからである。従って、この場合、ＣＴＬ３１は、対象データに加えて、対象データに連続する、対象データと同一サイズの一以上のデータ（以下、それぞれのデータを、図１８の説明において「連続データ」という）もが、Ｓ４０３で取得したレイヤダウンルールに合致するか否かを判定する（Ｓ４０５）。尚、連続データの数は、選択プール４２の実ページ５２のサイズ及び変更後のプール４２の実ページ５２のサイズによって異なる。詳細は、図８及び図９において説明した通りである。
【０１６６】
連続データのいずれかがＳ４０３で取得したレイヤダウンルールに合致していない場合は（Ｓ４０５：ＮＯ）、ＣＴＬ３１は、Ｓ４１０の処理を行う。
【０１６７】
一方、連続データの全てがＳ４０３で取得したレイヤダウンルールに合致している場合は（Ｓ４０５：ＹＥＳ）、ＣＴＬ３１は、Ｓ４０６〜Ｓ４０９の処理を行って、対象データの格納先のレイヤを変更する。
【０１６８】
即ち、まず、ＣＴＬ３１は、Ｓ４０４で取得した変更後のプール４２に属する実ページ５２のうち未だどの仮想ページ５１にも割り当てられていないもの（変更後の実ページ５２）を選択する。そして、ＣＴＬ３１は、その選択した変更後の実ページ５２の領域を確保する（Ｓ４０６）。
【０１６９】
その後、ＣＴＬ３１は、変更前の実ページ５２（選択使用実ページ５２）から変更後の実ページ５２へ、リード対象のデータをコピーする（Ｓ４０７）。
【０１７０】
その後、ＣＴＬ３１は、変更前の実ページ５２（選択使用実ページ５２）の領域を解放する（Ｓ４０８）。即ち、選択使用実ページ５２に格納されていた対象データが、削除される。Ｓ４０７及びＳ４０８により、選択使用実ページ５２から変更後の実ページ５２への、対象データのマイグレーションが完了する。
【０１７１】
その後、ＣＴＬ３１は、仮想ＶＯＬ管理テーブル６１、プール管理テーブル６２及び実ページ管理テーブル６３の内容を更新する（Ｓ４０９）。具体的な内容は、Ｓ２０６と実質的に同じである。
【０１７２】
ＣＴＬ３１は、選択プール４２内の全ての使用実ページ５２についてＳ４０２〜Ｓ４０９の処理を繰り返して行う（Ｓ４１０）。尚、ＣＴＬ３１は、上述したように、キューポインタ６２Ｂ，６２Ｃ，６３７，６３８を参照することで、最終データ更新日時或いは最終データアクセス日時が古いものから順に、使用実ページ５２を選択することができる。そのため、レイヤダウンルールに合致しないデータが格納されている使用実ページ５２が見つかった時点で、それ以降に選択される使用実ページ５２に格納されているデータは、そのレイヤダウンルールに合致しないことがわかる。この場合は、選択プール４２内の全ての使用実ページ５２についてＳ４０２〜Ｓ４０９の処理を行う必要はない。
【０１７３】
ＣＴＬ３１は、ストレージシステム３において形成されている全てのプール４２についてＳ４０１〜Ｓ４１０の処理を繰り返して行う（Ｓ４１１）。
【０１７４】
図１９は、ＣＴＬ３１がユーザにプール４２に関する情報を設定させるために表示する画面の一例である。
【０１７５】
図１９に示されるように、この画面７には、例えば、設定対象のプール４２のプールＩＤを入力するための領域７１と、設定対象のプール４２内の実ページ５２のページサイズを選択するためのラジオボタン７２と、設定対象のプール４２に登録する実領域を設定するための領域７３と、設定対象のプール４２に関するレイヤ変更ルールを設定するための領域７４とが設けられる。
【０１７６】
図２０は、ＣＴＬ３１がユーザに仮想ＶＯＬ４１に関する情報を設定させるために表示する画面の一例である。
【０１７７】
図２０に示されるように、この画面８には、例えば、設定対象の仮想ＶＯＬ４１の仮想ＶＯＬ
ＩＤを入力するための領域８１と、設定対象の仮想ＶＯＬ４１の容量を入力するための領域８２と、設定対象の仮想ＶＯＬ４１について予め設定されている初期プール４２のプールＩＤを入力するための領域８３と、設定対象の仮想ＶＯＬ４１を構成する仮想ページ５１の最小ページサイズを選択するためのラジオボタン８４とが設けられる。
【０１７８】
図２１は、実ページ管理情報の管理方法の一例を示す。
【０１７９】
実ページ管理情報は、キャッシュメモリ３４及び／又は共有メモリ３３（以下、「コントローラメモリ」と総称する）と、記憶装置３７とのうちの少なくとも一方に記憶される。この図２１によれば、所定の高さ以上に高いレイヤに属する種類のプール内の各実ページに対応した実ページ管理情報が、コントローラメモリに記憶され、所定の高さより低いレイヤに属する種類のプール内の各実ページに対応した実ページ管理情報が、記憶装置３７に記憶される。記憶装置３７は、どの種類のプールの基になっている記憶装置でも良い。
【０１８０】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。
【図面の簡単な説明】
【０１８１】
【図１】本実施形態に係る計算機システムの構成例を示す図である。
【図２】記憶装置を基に形成される論理ボリュームの構成例を示す図である。
【図３】本実施形態において形成されるプールの種類とそれらのアクセス性能の関係とを示す図である。
【図４】レイヤ変更処理の概要を説明する図である。
【図５】仮想ページへの実ページの割り当ての具体例を示す図である。
【図６】プール２（ＳＡＴＡ−ＨＤＤプール）からプール１（ＦＣ−ＨＤＤプール）へのレイヤの変更の一例を示す図である。
【図７】プール３（テーププール）からプール１（ＦＣ−ＨＤＤプール）へのレイヤの変更の一例を示す図である。
【図８】プール１（ＦＣ−ＨＤＤプール）からプール２（ＳＡＴＡ−ＨＤＤプール）へのレイヤの変更の一例を示す図である。
【図９】プール１（ＦＣ−ＨＤＤプール）からプール３（テーププール）へのレイヤの変更の一例を示す図である。
【図１０】仮想ＶＯＬ管理テーブルの一例を示す図である。
【図１１】プール管理テーブルの一例を示す図である。
【図１２】実ページ管理テーブルの一例を示す図である。
【図１３】レイヤ変更ルールテーブルの一例を示す図である。
【図１４】プール管理情報及び実ページ管理情報によって示されるキュー構造の例である。
【図１５】リード要求を受けた場合にＣＴＬが行う処理のフローチャートである。
【図１６】図１５におけるＳ１０９において行われるレイヤ変更処理のフローチャートである。
【図１７】ライト要求を受けた場合にＣＴＬが行う処理のフローチャートである。
【図１８】定期的又は不定期的に行われるレイヤ変更処理のフローチャートである。
【図１９】ＣＴＬがユーザにプールに関する情報を設定させるために表示する画面の一例である。
【図２０】ＣＴＬがユーザに仮想ＶＯＬに関する情報を設定させるために表示する画面の一例である。
【図２１】実ページ管理情報の管理方法の一例を示す。
【符号の説明】
【０１８２】
１…ホスト、２…通信ネットワーク、３…ストレージシステム
【図１】
2010108341.tif 000003
【図２】
2010108341.tif 000004
【図３】
2010108341.tif 000005
【図４】
2010108341.tif 000006
【図５】
2010108341.tif 000007
【図６】
2010108341.tif 000008
【図７】
2010108341.tif 000009
【図８】
2010108341.tif 000010
【図９】
2010108341.tif 000011
【図１０】
2010108341.tif 000012
【図１１】
2010108341.tif 000013
【図１２】
2010108341.tif 000014
【図１３】
2010108341.tif 000015
【図１４】
2010108341.tif 000016
【図１５】
2010108341.tif 000017
【図１６】
2010108341.tif 000018
【図１７】
2010108341.tif 000019
【図１８】
2010108341.tif 000020
【図１９】
2010108341.tif 000021
【図２０】
2010108341.tif 000022
【図２１】
2010108341.tif 000023