(57)【特許請求の範囲】
【請求項１】
第１の物理ボリュームを含む第１のストレージ装置と、第２の物理ボリュームを含み、かつ前記第１のストレージ装置よりもアクセス速度が低速で記憶容量が大きい第２のストレージ装置とを具備する階層化ストレージシステムにおいて、ホストコンピュータからの入出力要求を処理するストレージコントローラであって、
前記第１の物理ボリュームと前記第２の物理ボリュームとから構成された論理ボリュームを前記ホストコンピュータに提供する論理ボリューム管理部と、
前記第１の物理ボリュームを第１の階層、前記第２の物理ボリュームを前記第１の階層よりも低い第２の階層として管理し、かつデータの特性に基づき、当該データが格納されるべき階層を決定または変更する階層管理部と、
前記第１の物理ボリューム内の記憶領域を、データが格納されるデータ領域の集合とキャッシュデータが格納されるキャッシュ領域の集合とに分割し、前記キャッシュ領域の集合を前記階層化ストレージシステムのキャッシュとして機能させるキャッシュ制御部と
を具備し、
前記キャッシュ制御部は、前記第２の物理ボリュームに格納されている第１のデータが前記第１の物理ボリュームに移動されるべきであると前記階層管理部によって判断され、かつ前記第１のデータが前記第１の物理ボリュームの第１のキャッシュ領域にも格納されている場合に、前記第１のキャッシュ領域を第１のデータ領域に変更する
ストレージコントローラ。
【請求項２】
前記キャッシュ制御部は、
前記ホストコンピュータからの入出力要求がリード要求であり、かつ前記リード要求が前記第１の物理ボリュームの第１の記憶領域からのデータリードを指定している場合、前記第１の記憶領域からリードされたデータを前記第１の物理ボリュームのキャッシュ領域にキャッシュすることを控え、
前記リード要求が前記第２の物理ボリュームの第２の記憶領域からのデータリードを指定している場合、前記第２の記憶領域からリードされたデータを前記第１の物理ボリュームのキャッシュ領域にキャッシュする
請求項１記載のストレージコントローラ。
【請求項３】
前記キャッシュ制御部は、キャッシュ領域からデータ領域への変更に応じて前記キャッシュのサイズが第１のサイズだけ減少した場合、前記第１のサイズに相当するデータ領域をキャッシュ領域に変更する請求項１記載のストレージコントローラ。
【請求項４】
前記キャッシュ制御部は、前記第１のサイズに相当するデータ領域をキャッシュ領域に変更する場合、前記第２の物理ボリュームに格納先が変更されるべきデータが格納されているデータ領域を優先してキャッシュ領域に変更する請求項３記載のストレージコントローラ。
【請求項５】
前記キャッシュ制御部は、キャッシュ領域をデータ領域に変更する場合、前記第２の物理ボリュームに格納先が変更されるべきキャッシュデータであって、かつ対応する実データに一致するキャッシュデータが格納されているキャッシュ領域を優先してデータ領域に変更する請求項４記載のストレージコントローラ。
【請求項６】
前記キャッシュ制御部は、前記第１のキャッシュ領域が前記第１のデータ領域に変更された後、前記第１のデータ領域に格納されている前記第１のデータが更新された場合に、前記第１のデータ領域とは別に前記第１のデータが格納されている前記第２の物理ボリューム内の記憶領域を未割当て領域として解放する請求項１記載のストレージコントローラ。
【請求項７】
前記キャッシュ制御部は、
キャッシュ領域に格納されているデータを前記第２の物理ボリュームに反映することを指定するキャッシュ同期化要求を受信した場合、前記第２の物理ボリュームに未反映の第２のデータが格納されている第２のキャッシュ領域を選択し、
前記第２のデータのデータ特性から、前記第２のデータが前記第１の物理ボリュームに格納されるべきであるかを判定し、
前記第２のデータが前記第１の物理ボリュームに格納されるべきでない場合、前記第２のデータを前記第２の物理ボリュームに反映し、
前記第２のデータが前記第１の物理ボリュームに格納されるべきである場合、前記第２のキャッシュ領域をデータ領域に変更する
請求項１記載のストレージコントローラ。
【請求項８】
第１の物理ボリュームを含む第１のストレージ装置と、
第２の物理ボリュームを含み、かつ前記第１のストレージ装置よりもアクセス速度が低速で記憶容量が大きい第２のストレージ装置と、
ホストコンピュータからの入出力要求を処理するストレージコントローラと
を具備し、
前記ストレージコントローラは、
前記第１の物理ボリュームと前記第２の物理ボリュームとから構成された論理ボリュームを前記ホストコンピュータに提供する論理ボリューム管理部と、
前記第１の物理ボリュームを第１の階層、前記第２の物理ボリュームを前記第１の階層よりも低い第２の階層として管理し、かつデータの特性に基づき、当該データが格納されるべき階層を決定または変更する階層管理部と、
前記第１の物理ボリューム内の記憶領域を、データが格納されるデータ領域の集合とキャッシュデータが格納されるキャッシュ領域の集合とに分割し、前記キャッシュ領域の集合を前記階層化ストレージシステムのキャッシュとして機能させるキャッシュ制御部と
を具備し、
前記キャッシュ制御部は、前記第２の物理ボリュームに格納されている第１のデータが前記第１の物理ボリュームに移動されるべきであると前記階層管理部によって判断され、かつ前記第１のデータが前記第１の物理ボリュームの第１のキャッシュ領域に格納されている場合に、前記第１のキャッシュ領域を第１のデータ領域に変更する
階層化ストレージシステム。
【請求項９】
第１の物理ボリュームを含む第１のストレージ装置と、第２の物理ボリュームを含み、かつ前記第１のストレージ装置よりもアクセス速度が低速で記憶容量が大きい第２のストレージ装置とを具備し、前記第１の物理ボリュームと前記第２の物理ボリュームとから構成された論理ボリュームを前記ホストコンピュータに提供し、かつ前記第１の物理ボリュームを第１の階層、前記第２の物理ボリュームを前記第１の階層よりも低い第２の階層として管理する階層化ストレージシステムにおいて、ホストコンピュータからの入出力要求を処理するストレージコントローラに適用される階層間のデータ移動を代替する方法であって、
前記第１の物理ボリューム内の記憶領域を、データが格納されるデータ領域の集合とキャッシュデータが格納されるキャッシュ領域の集合とに分割し、
前記キャッシュ領域の集合を前記階層化ストレージシステムのキャッシュとして機能させ、
前記第２の物理ボリュームに格納されているデータのデータ特性に基づき、前記第２の物理ボリュームから前記第１の物理ボリュームに移動されるべき第１のデータを選択し、
前記第１のデータが前記第１の物理ボリュームの第１のキャッシュ領域にも格納されている場合に、前記第１のデータを前記第１の物理ボリュームに移動する代わりに、前記第１のキャッシュ領域を第１のデータ領域に変更する
階層間のデータ移動を代替する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、階層化ストレージシステム、ストレージコントローラ、及び階層間のデータ移動を代替する方法に関する。
【背景技術】
【０００２】
近年、ストレージ階層化技術を利用した種々のストレージ装置が開発されている。ストレージ階層化技術は、性能の異なる複数種類のストレージ装置の物理的な記憶領域（以下、物理ボリュームと称する）を束ねる。これによりストレージ階層化技術は、複数の物理ボリュームを実体として有する少なくとも１つの仮想的な記憶領域（以下、論理ボリュームと称する）を構成する。論理ボリュームは、ホストコンピュータから認識可能であり、当該ホストコンピュータに提供される。ストレージ階層化技術はさらに、データが格納されるべきストレージ装置を、アクセス頻度のようなデータの特性に応じて決定する。つまりストレージ階層化技術では、データは複数のストレージ装置に階層的に格納される。ストレージ階層化技術では、同種類のストレージ装置（物理ボリューム）の集合は、「階層」と呼ばれる。一般に性能が高いストレージ装置ほど、上位の階層に位置付けられる。ストレージ階層化技術を適用したストレージシステムは、階層化ストレージシステムと呼ばれる。【０００３】
階層化ストレージシステムにおいて、ストレージコントローラは、論理ボリュームに例えばアクセス頻度の高いデータを格納する場合、当該データを、当該論理ボリュームを構成する物理ボリュームのうち、より性能が高い（つまり、より上位の階層の）ストレージ装置の物理ボリュームに格納するのが一般的である。また、アクセス頻度のようなデータ特性は、時間の経過と共に変化する。そこでストレージコントローラは、データの特性の変化に応じて、データの格納先を変更する。つまりストレージコントローラは、データの特性の変化に応じて、物理ボリューム（階層）間でデータの移動・再配置を行う。【０００４】
一般に、頻繁にアクセスされるデータ、或いは高い応答性能が求められるデータは、ストレージ装置に格納されるデータの一部に限られる。このため、高性能なストレージ装置ほど単位記憶容量当たりの単価が高くなることを鑑みると、すべてのデータが高性能なストレージ装置に格納されることは好ましくない。そこで階層化ストレージシステムにおいてストレージコントローラは、アクセス頻度が高いデータを、フラッシュストレージ装置のようなアクセス性能に優れたストレージ装置（上位階層）に格納する。またストレージコントローラは、アクセス頻度が低いデータを、ハードディスクドライブまたは磁気テープ装置のような、安価なストレージ装置（下位階層）に格納する。これにより、データの大半を安価なストレージ装置に格納できるため、ストレージシステムを構築するのに要するコストを削減できる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１０８３４１号公報
【特許文献２】特開２０１２−２５２５１４号公報
【特許文献３】特開２００９−４３０３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
階層化ストレージシステムでは、データの特性が変化した場合に、前述したように、階層間で当該データが移動される。このデータ移動のためにストレージコントローラは、データごとに（より詳細には、一定サイズのデータの塊ごとに）、アクセス頻度のようなデータ特性を収集する。そしてストレージコントローラは、データごとのデータ特性に基づき、例えば一定の時間間隔Ｔで、格納先の階層が変更されるべきデータを決定する。ストレージコントローラは、決定されたデータを移動する。【０００７】
しかし、時間間隔Ｔが比較的大きな値に設定された場合、特性が変化したデータを即座に移動することは難しい。一方、時間間隔Ｔが比較的小さな値に設定された場合、データ移動が頻繁に行われる。すると、下位階層から上位階層へのデータ移動、或いは上位階層から下位階層へのデータ移動のいずれの場合にも、ストレージ装置間のデータ入出力（以下、データ移動入出力と称する）の回数が増大する。このデータ移動入出力の回数の増大は、通常のデータアクセスにおける入出力性能の劣化を招く。また、上位階層に移動されたデータへのアクセス集中が一過性のものであった場合、例えば当該データへのアクセス頻度が低下した後に、当該データは下位階層に移動されることが望ましい。しかし、そのためのデータ移動入出力が発生する。【０００８】
このように従来の階層化ストレージシステムでは、「階層間のデータ移動の抑制」と「入出力性能の維持（下位階層へのデータアクセスの抑制）」とはトレードオフの関係にある。【０００９】
一方、低速なストレージ装置に対するアクセスを高速化する方法として、従来からキャッシュ技術が知られている。また、高速なストレージ装置の一部の記憶領域を、低速なストレージ装置のキャッシュとして利用するキャッシュ技術も知られている。キャッシュに格納されたデータに関しては、階層間のデータ移動なしに、入出力性能を維持することが可能となる
ここで、従来のキャッシュ技術が従来の階層化ストレージシステムに適用されるものとする。また、下位階層のデータがキャッシュに格納されているものとする。この場合、従来技術は、下位階層へのデータアクセスを抑制することはできる。しかし従来技術は、データが階層化ストレージ機能によって上位階層に移動される場合に発生するデータ移動入出力を抑制することは難しい。【００１０】
また従来技術は、いずれの階層へのデータアクセスであるかに無関係に、キャッシュにデータを格納する。このため、キャッシュには、上位階層のデータと下位階層のデータが混在する。特に、キャッシュにおいて、上位階層のデータの占める割合は高い。その理由は、上位階層のデータの方が一般にアクセス頻度が高いことによる。このため、下位階層のデータをキャッシュするための領域が少なくなり、その結果として下位階層へのデータアクセスが増大する。【００１１】
本発明が解決しようとする課題は、階層間の物理的なデータ移動を抑制しつつも入出力性能を維持することができる、階層化ストレージシステム、ストレージコントローラ、及び階層間のデータ移動を代替する方法を提供することにある。
【課題を解決するための手段】
【００１２】
実施形態によれば、階層化ストレージシステムにおいて、ホストコンピュータからの入出力要求を処理するストレージコントローラが提供される。前記階層化ストレージシステムは、第１の物理ボリュームを含む第１のストレージ装置と、第２の物理ボリュームを含み、かつ前記第１のストレージ装置よりもアクセス速度が低速で記憶容量が大きい第２のストレージ装置とを具備する。前記ストレージコントローラは、論理ボリューム管理部と、階層管理部と、キャッシュ制御部とを具備する。前記論理ボリューム管理部は、前記第１の物理ボリュームと前記第２の物理ボリュームとから構成された論理ボリュームを前記ホストコンピュータに提供する。前記階層管理部は、前記第１の物理ボリュームを第１の階層、前記第２の物理ボリュームを前記第１の階層よりも低い第２の階層として管理し、かつデータの特性に基づき、当該データが格納されるべき階層を決定または変更する。前記キャッシュ制御部は、前記第１の物理ボリューム内の記憶領域を、データが格納されるデータ領域の集合とキャッシュデータが格納されるキャッシュ領域の集合とに分割し、前記キャッシュ領域の集合を前記階層化ストレージシステムのキャッシュとして機能させる。前記キャッシュ制御部はさらに、前記第２の物理ボリュームに格納されている第１のデータが前記第１の物理ボリュームに移動されるべきであると前記階層管理部によって判断され、かつ前記第１のデータが前記第１の物理ボリュームの第１のキャッシュ領域に格納されている場合に、前記第１のキャッシュ領域を第１のデータ領域に変更する。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施形態に係るコンピュータネットワークシステムの典型的なハードウェア構成を示すブロック図である。
【図２】図２は、図２は、図１に示されるストレージコントローラの典型的な機能構成を主として示すブロック図である。
【図３】図３は、図２に示される物理ボリューム管理テーブルのデータ構造例を示す図である。
【図４】図４は、図２に示される論理ボリューム管理テーブルのデータ構造例を示す図である。
【図５】図５は、図２に示されるキャッシュ管理テーブルのデータ構造例を示す図である。
【図６】図６は、同実施形態における階層間のデータ移動の例を示す図である。
【図７】図７は、同実施形態で適用される階層変更処理の典型的な手順を示すフローチャートである。
【図８】図８は、階層変更処理に含まれている領域置換処理の典型的な手順を示すフローチャートである。
【図９】図９は、同実施形態で適用される入出力処理の典型的な手順を示すフローチャートである。
【図１０】図１０は、領域置換処理に含まれているデータ領域解放処理の典型的な手順を示すフローチャートである。
【図１１】図１１は、同実施形態で適用されるキャッシュ領域解放処理の典型的な手順を示すフローチャートである。
【図１２】図１２は、同実施形態で適用されるキャッシュ同期化処理の典型的な手順を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、種々の実施の形態につき図面を参照して説明する。  
図１は、１つの実施形態に係るコンピュータネットワークシステムの典型的なハードウェア構成を示すブロック図である。コンピュータネットワークシステムは、階層化ストレージシステム１０、ホストコンピュータ（以下、ホストと称する）２０、及びネットワーク３０から構成される。階層化ストレージシステム１０（より詳細には、階層化ストレージシステム１０のストレージコントローラ１３）は、ネットワーク３０を介してホスト２０と接続されている。ホスト２０は、階層化ストレージシステム１０を外部ストレージ装置として利用する。ネットワーク３０は、例えば、ストレージエリアネットワーク（ＳＡＮ）、インターネット或いはイントラネットである。インターネット或いはイントラネットは、例えばイーサネット（登録商標）により構成される。
【００１５】
階層化ストレージシステム１０は、高速ストレージ装置（以下、高速ストレージと称する）１１と、低速ストレージ装置（以下、低速ストレージと称する）１２と、ストレージコントローラ１３と、ストレージインタフェースバス１４とを備えている。高速ストレージ１１は、例えば、フラッシュＲＡＩＤ（Redundant Arrays of Inexpensive DisksまたはRedundant Arrays of Independent Disks）と呼ばれるフラッシュストレージアレイから構成される。本実施形態において高速ストレージ１１は、複数のフラッシュメモリボード１１０を用いて実現される。フラッシュメモリボード１１０の各々は、フラッシュメモリの集合を含む。なお、フラッシュメモリボード１１０の各々が、フラッシュメモリ以外の書き換え可能な不揮発性メモリの集合を含んでいても良い。高速ストレージ１１は、ストレージインタフェースバス１４に接続されている。
【００１６】
高速ストレージ１１の記憶領域は、データ領域の集合とキャッシュ領域の集合とに分割して用いられる。本実施形態において、データ領域の集合の総サイズとキャッシュ領域の集合の総サイズは固定ではなく、後述されるように動的に変更される。データ領域は、通常のデータ（実データ）が格納される記憶領域として用いられる。キャッシュ領域は、キャッシュデータが格納される記憶領域（キャッシュ）として用いられる。
【００１７】
低速ストレージ１２は、例えば、ＲＡＩＤと呼ばれるＨＤＤ（Hard Disk Drive）アレイから構成される。本実施形態において低速ストレージ１２は、フラッシュメモリよりもアクセス速度が遅い複数のＨＤＤ１２０を用いて実現される。つまり低速ストレージ１２のアクセス性能（アクセス速度）は、高速ストレージ１１のそれよりも低い。低速ストレージ１２はストレージインタフェースバス１４に接続されている。なお、高速ストレージ１１及び低速ストレージ１２が必ずしもアレイ構成を有している必要はない。
【００１８】
一般にストレージ階層化技術では、同一種類のストレージ装置をまとめた単位は、階層と呼ばれる。また、アクセス性能で比較した場合に、アクセス性能が高いストレージ装置ほど、より上位の階層に位置付けられる。同様に、アクセス性能が低いストレージ装置ほど、より下位の階層に位置付けられる。図１に示される階層化ストレージシステムには、
アクセス性能の異なる２つの高速ストレージ１１及び低速ストレージ１２が存在する。この場合、高速ストレージ１１は上位階層（第１の階層）に、低速ストレージ１２は下位階層（第２の階層）に、それぞれ位置付けられる。つまり本実施形態は、ある基準のアクセス性能よりも高い第１のアクセス性能を有する高速ストレージ１１の階層を上位階層と呼び、当該基準のアクセス性能よりも低い第２のアクセス性能を有する低速ストレージ１２の階層を下位階層と呼ぶ。なお、階層化ストレージシステム１０が、例えば磁気テープ装置のような、低速ストレージ１２よりもさらに低速（低階層）の低速ストレージ（第３の階層の低速ストレージ）を備えていても良い。
【００１９】
ストレージコントローラ１３は、ストレージインタフェースバス１４を介して高速ストレージ１１及び低速ストレージ１２と接続されている。ストレージインタフェースバス１４のインタフェース種別は、例えば、スモールコンピュータシステムインタフェース（ＳＣＳＩ）、ファイバチャネル（ＦＣ）、シリアルアタッチドＳＣＳＩ（ＳＡＳ）、或いはシリアルＡＴアタッチメント（ＳＡＴＡ）である。
【００２０】
ストレージコントローラ１３は、高速ストレージ１１及び低速ストレージ１２を制御する。ストレージコントローラ１３は、アレイ管理機能（アレイ管理部２０１）と、入出力（Ｉ／Ｏ）制御機能（Ｉ／Ｏ制御部２０２）と、論理ボリューム管理機能（論理ボリューム管理部２０３）と、階層管理機能（階層管理部２０４）と、キャッシュ制御機能（キャッシュ制御部２０５）とを有する。
【００２１】
ストレージコントローラ１３（より詳細には、コントローラ１３の後述のＣＰＵ１３６）は、複数のフラッシュメモリボード１１０から構成されるフラッシュストレージアレイ（つまり高速ストレージ１１）を、アレイ管理機能を用いて構築する。同様にストレージコントローラ１３（ＣＰＵ１３６）は、複数のＨＤＤ１２０から構成されるＨＤＤアレイ（つまり低速ストレージ１２）を、アレイ管理機能を用いて構築する。
【００２２】
ストレージコントローラ１３（ＣＰＵ１３６）は、ホスト２０から受信された要求を、Ｉ／Ｏ制御機能を用いて処理する。ホスト２０からの要求がデータアクセス要求である場合、ストレージＩ／Ｆ１３２に処理を委譲する。
【００２３】
ストレージコントローラ１３（ＣＰＵ１３６）は、ホスト２０に提供される（つまり、ホスト２０により認識可能な）論理ボリュームを、論理ボリューム管理機能を用いて構築（定義）する。本実施形態において論理ボリュームは、高速ストレージ１１及び低速ストレージ１２内の物理ボリューム（第１及び第２の物理ボリューム）を用いて構成される仮想的な記憶領域である。つまり論理ボリュームは、高速ストレージ１１及び低速ストレージ１２内の物理的な記憶領域を実体として論理的に実現される。
【００２４】
ストレージコントローラ１３（ＣＰＵ１３６）は、階層管理機能を用いて、高速ストレージ１１及び低速ストレージ１２の記憶領域をそれぞれ上位階層及び下位階層として管理する。ストレージコントローラ１３（ＣＰＵ１３６）はまた、階層管理機能を用いて、データを階層的に管理する。つまりストレージコントローラ１３（ＣＰＵ１３６）は、アクセス頻度のようなデータ特性に応じて、論理ボリューム内のデータを上位階層または下位階層に分類する。ストレージコントローラ１３（ＣＰＵ１３６）はさらに、階層管理機能を用いて、階層間のデータ移動を行う。すなわちストレージコントローラ１３（ＣＰＵ１３６）は、後述の物理ボリューム管理テーブル１３５ａに基づき、アクセス頻度のようなデータ特性に応じて、論理ボリューム内のデータに対応する物理記憶領域内のデータ（実データ）を、別の物理ボリュームに移動する。例えば、アクセス頻度が高いデータが低速ストレージ１２（つまり、アクセス性能の低いストレージ装置）内の物理ボリュームに格納されている場合、ストレージコントローラ１３（ＣＰＵ１３６）は、当該実データを高速ストレージ１１（つまり、アクセス性能の高いストレージ装置）内の物理ボリュームに移動する。このストレージ装置（階層）間のデータ移動は、ストレージＩ／Ｆ１３２を介して行われる。
【００２５】
ストレージコントローラ１３（ＣＰＵ１３６）は、キャッシュ制御機能を用いて、キャッシュ領域へのデータアクセス（つまり、キャッシュ領域へのデータの書き込みまたはキャッシュ領域からのデータの読み出し）を行う。ストレージコントローラ１３（ＣＰＵ１３６）はまた、高速ストレージ１１の記憶領域の一部を、キャッシュ制御機能を用いてキャッシュとして管理する。すなわちストレージコントローラ１３（ＣＰＵ１３６）は後述のキャッシュ管理テーブル１３５ｃに基づき、高速ストレージ１１の記憶領域を、キャッシュ制御機能を用いて、前述のデータ領域の集合とキャッシュ領域の集合とに分割して管理する。ストレージコントローラ１３（ＣＰＵ１３６）はさらに、ストレージ装置間のデータ移動（より詳細には、物理的なデータ移動）を抑制するためのキャッシュ制御を、キャッシュ制御機能を用いて実行する。
【００２６】
ストレージコントローラ１３は、ホストインタフェースコントローラ（以下、ホストＩ／Ｆと称する）１３１と、ストレージインタフェイスコントローラ（以下、ストレージＩ／Ｆと称する）１３２と、フラッシュＲＯＭ（ＦＲＯＭ）１３３と、ローカルメモリ１３４と、ローカルＨＤＤ１３５と、ＣＰＵ１３６と、チップセット１３７と、内部バス１３８とを備えている。ストレージコントローラ１３は、ホストＩ／Ｆ１３１によりネットワーク３０を介してホスト２０と接続される。ホストＩ／Ｆ１３１のインタフェース種別は、例えば、ＦＣ、或いはインターネットＳＣＳＩ（ｉＳＣＳＩ）である。
【００２７】
ホストＩ／Ｆ１３１は、ホスト２０との間のデータ転送（データ転送プロトコル）を制御する。ホストＩ／Ｆ１３１は、ホスト２０からの論理ボリュームに対するデータアクセス要求（リード要求またはライト要求）を受信し、当該データアクセス要求に対する応答を返信する。ホストＩ／Ｆ１３１は、ホスト２０からデータアクセス要求を受信すると、当該要求を、内部バス１３８及びチップセット１３７を経由してＣＰＵ１３６に伝達する。データアクセス要求を受け取ったＣＰＵ１３６は、後述のストレージ制御プログラムに従い、当該データアクセス要求を処理する。
【００２８】
ストレージＩ／Ｆ１３２は入出力（Ｉ／Ｏ）ドライバを有しており、ＣＰＵ１３６（ストレージ制御プログラム）が受信したホスト２０からのデータアクセス要求（論理ボリュームに対するライト要求またはリード要求）に基づくＩ／Ｏ要求を受信する。ストレージＩ／Ｆ１３２は、受信されたＩ／Ｏ要求に応じて、高速ストレージ１１内のキャッシュ領域へのアクセス、高速ストレージ１１内のデータ領域へのアクセスまたは低速ストレージ１２へのアクセスを実行する。
【００２９】
ＦＲＯＭ１３３は、書き換えが可能な不揮発性メモリである。ＦＲＯＭ１３３には、イニシャルプログラムローダ（ＩＰＬ）が格納されている。ＩＰＬは、ストレージコントローラ１３が起動されたときに、ＣＰＵ１３６によって最初に実行されるプログラムである。
【００３０】
ローカルメモリ１３４は、ＤＲＡＭのような書き換えが可能な揮発性メモリである。ローカルメモリ１３４の一部の領域は、ローカルＨＤＤ１３５からコピーされたストレージ制御プログラムを格納するのに用いられる。ローカルメモリ１３４の他の一部の領域は、ＣＰＵ１３６のためのワーク領域として用いられる。
【００３１】
ローカルＨＤＤ１３５は、ＣＰＵ１３６により実行されるストレージ制御プログラムを格納するのに用いられる。ＣＰＵ１３６は、ストレージコントローラ１３が起動されたときにＩＰＬを実行することにより、ローカルＨＤＤ１３５に格納されているストレージ制御プログラムをローカルメモリ１３４にロードする。なお、ストレージ制御プログラムがＦＲＯＭ１３３に格納されていても構わない。
【００３２】
ＣＰＵ１３６は、ローカルメモリ１３４にロードされたストレージ制御プログラムのプログラムコードに従い、後述のアレイ管理部２０１、Ｉ／Ｏ制御部２０２、論理ボリューム管理部２０３、階層管理部２０４及びキャッシュ制御部２０５として機能する。つまりＣＰＵ１３６は、ローカルメモリ１３４に格納されているストレージ制御プログラムを、チップセット１３７を介して実行することで、階層化ストレージシステム１０全体（特にストレージコントローラ１３内の各部）を制御する。
【００３３】
チップセット１３７は、ＣＰＵ１３６及びその周辺回路を内部バス１３８に結合するブリッジ回路である。内部バス１３８は汎用バスであり、例えばＰＣＩ（Peripheral Component Interconnect）ｅｘｐｒｅｓｓバスである。ホストＩ／Ｆ１３１、ストレージＩ／Ｆ１３２及びチップセット１３７は、内部バス１３８により相互接続されている。また、ＦＲＯＭ１３３、ローカルメモリ１３４、ローカルＨＤＤ１３５及びＣＰＵ１３６は、チップセット１３７を介して内部バス１３８に接続されている。
【００３４】
図２は、図１に示されるストレージコントローラ１３の典型的な機能構成を主として示すブロック図である。ストレージコントローラ１３は、アレイ管理部２０１、Ｉ／Ｏ制御部２０２、論理ボリューム管理部２０３、階層管理部２０４及びキャッシュ制御部２０５を備えている。これらの機能要素２０１乃至２０５は、図１に示されるストレージコントローラ１３のＣＰＵ１３６がストレージ制御プログラムを実行することにより実現されるソフトウェアモジュールである。しかし、機能要素２０１乃至２０５の少なくとも１つがハードウェアモジュールによって実現されても構わない。
【００３５】
ローカルメモリ１３４は、制御プログラム領域１３４ａ、テーブル領域１３４ｂ及びワーク領域１３４ｃを含む。制御プログラム領域１３４ａは、ＣＰＵ１３６によって実行されるストレージ制御プログラムの少なくとも一部を格納するのに用いられる。このストレージ制御プログラムは、前述したようにローカルＨＤＤ１３５に予め格納されており、当該ストレージ制御プログラムの少なくとも一部は、ストレージコントローラ１３の起動時に当該ローカルＨＤＤ１３５から制御プログラム領域１３４ａにロードされる。
【００３６】
テーブル領域１３４ｂは、ローカルＨＤＤ１３５に格納されている各種のテーブルの少なくとも一部を格納するのに用いられる。ワーク領域１３４ｃは、ＣＰＵ１３６が制御プログラムを実行する際に利用される一時的なデータを格納するのに用いられる。
【００３７】
ローカルＨＤＤ１３５（つまり、ローカルストレージ装置）は、上述のストレージ制御プログラムに加えて、物理ボリューム管理テーブル１３５ａ、論理ボリューム管理テーブル１３５ｂ及びキャッシュ管理テーブル１３５ｃを格納する。これらの管理テーブル１３５ａ，１３５ｂ及び１３５ｃは、ストレージコントローラ１３の起動時にローカルＨＤＤ１３５からローカルメモリ１３４のテーブル領域１３４ｂにロードされて用いられる。このためローカルメモリ１３４にロードされた管理テーブルが更新された場合、その更新がローカルＨＤＤ１３５内の対応する管理テーブルに適宜反映される。但し、以降の説明では簡略化のために、物理ボリューム管理テーブル１３５ａ、論理ボリューム管理テーブル１３５ｂ及びキャッシュ管理テーブル１３５ｃは、ローカルＨＤＤ１３５に格納されている状態で用いられるものとする。
【００３８】
物理ボリューム管理テーブル１３５ａの各エントリは、階層化ストレージシステム１０（ここでは、階層化ストレージシステム１０の高速ストレージ１１及び低速ストレージ１２）に含まれる物理ボリュームの記憶領域が、いずれの論理ボリュームのいずれの記憶領域に対応するかを示す情報を保持するのに用いられる。物理ボリューム管理テーブル１３５ａの各エントリはさらに、物理ボリュームの記憶領域の各々のアクセス特性（例えば、アクセス頻度及びアクセス日時）を示す情報を保持するのにも用いられる。物理ボリューム管理テーブル１３５ａの各エントリに保持される情報は、物理ボリューム管理情報と呼ばれる。
【００３９】
論理ボリューム管理テーブル１３５ｂの各エントリは、階層化ストレージシステム１０内に構築される論理ボリュームの記憶領域が、いずれの物理ボリュームのいずれの記憶領域に対応するかを示す情報を保持するのに用いられる。論理ボリューム管理テーブル１３５ｂの各エントリに保持される情報は、論理ボリューム管理情報と呼ばれる。
【００４０】
本実施形態において、論理ボリュームの記憶領域は、論理ブロックアドレス（ＬＢＡ）で指定されるＬＢＡ領域と呼ばれ、当該論理ボリュームの記憶領域（ＬＢＡ領域）に対応する物理ボリュームの記憶領域はページ（物理ページ）と呼ばれる。ＬＢＡ領域及びページは、複数のブロックから構成される。本実施形態において、ブロックはセクタとも呼ばれ、ストレージコントローラ１３がストレージインタフェースバス１４を介してストレージにアクセスする最小の単位である。上述のように本実施形態では、ＬＢＡ領域のサイズは１ページのサイズに一致する。しかし、ＬＢＡ領域のサイズが複数のページのサイズに一致しても良い。
【００４１】
キャッシュ管理テーブル１３５ｃの各エントリは、キャッシュ領域に格納されたデータ（つまりキャッシュデータ）が、いずれの論理ボリュームのいずれの記憶領域（ＬＢＡ）に対応するかを示す情報を保持するのに用いられる。キャッシュ管理テーブル１３５ｃの各エントリに保持される情報は、キャッシュ管理情報と呼ばれる。
【００４２】
図３は、図２に示される物理ボリューム管理テーブル１３５ａのデータ構造例を示す。物理ボリューム管理テーブル１３５ａの各エントリは、物理ボリューム識別子（ＩＤ）フィールド、ページ番号フィールド、論理ボリュームＩＤフィールド、論理ブロックアドレス（ＬＢＡ）フィールド、フラッシュストレージフィールド、キャッシュ利用フィールド、複製先：：複製元フィールド、及びアクセス特性フィールドを含む。図３の物理ボリューム管理テーブル１３５ａにおける表記Ｎ／Ａは“該当無し”を示す。
【００４３】
物理ボリュームＩＤフィールドは、対応する物理ボリューム管理テーブル１３５ａのエントリ（以下、対応エントリと称する）によって管理されるページ（物理ページ）Ｐｉを含む物理ボリュームＰＶｊのＩＤを保持するのに用いられる。ページ番号フィールドは、ページＰｉのページ番号Ｐｉを保持するのに用いられる。図３の物理ボリューム管理テーブル１３５ａにおいて、物理ボリュームＩＤ＝０は高速ストレージ１１の物理ボリュームを示し、物理ボリュームＩＤ＝１００は低速ストレージ１２の物理ボリュームを示すものとする。
【００４４】
論理ブロックアドレス（ＬＢＡ）フィールドは、対応エントリ中のページ番号Ｐｉの示すページＰｉに対応するＬＢＡ領域（より詳細には、論理ブロック内のＬＢＡ領域）を指し示すＬＢＡ（対応ＬＢＡ）を保持するのに用いられる。論理ボリュームＩＤフィールドは、対応エントリ中のＬＢＡの示すＬＢＡ領域を含む複数のＬＢＡ領域で構成される論理ボリュームのＩＤ（対応論理ボリュームＩＤ）を保持するのに用いられる。図３の物理ボリューム管理テーブル１３５ａは、例えば、物理ボリュームＩＤが１００の物理ボリューム（低速ストレージ１２）内のページ番号が５のページが、論理ボリュームＩＤが２の論理ボリューム内のＬＢＡ領域ＬＢＡ３０と対応付けられていることを示す。
【００４５】
フラッシュストレージフィールドは、ページＰｉがフラッシュストレージアレイ（つまり高速ストレージ１１）に存在するか否かを示すフラグ（フラッシュストレージフラグ）を保持するのに用いられる。ページＰｉがフラッシュストレージアレイに存在する場合、ページＰｉはデータ領域またはキャッシュ領域のいずれかに利用される。
【００４６】
キャッシュ利用フィールドは、ページＰｉがキャッシュ領域（ここでは、フラッシュストレージアレイ、つまり高速ストレージ１１内のキャッシュ領域）として利用されているか否かを示すフラグ（キャッシュ利用フラグ）を保持するのに用いられる。本実施形態では、ページＰｉがキャッシュ領域として利用されていることがキャッシュ利用フラグによって示されている場合、ページＰｉがフラッシュストレージアレイに存在することがフラッシュストレージフラグによって示される。この場合、ページＰｉに対応する論理ボリュームＩＤ及びＬＢＡはＮ／Ａとなる。なお、ページＰｉに対応する論理ボリュームＩＤ及びＬＢＡがＮ／Ａ以外を示すのは、ページＰｉのデータが実データであり、かつページＰｉが使用されている（つまり空き領域でない）場合である。図３の物理ボリューム管理テーブル１３５ａは、例えば、物理ボリュームＩＤが０の物理ボリューム（つまり高速ストレージ１１）内のページ番号が４のページが、キャッシュ領域として使用されていることを示す。以下の説明では、物理ボリュームＩＤが０の物理ボリューム内のページ番号が４のページを、ページ０−４と表記する。
【００４７】
複製先：：複製元フィールドは、ページＰｉの複製先及び複製元（複製先：：複製元）に関する情報（複製先：：複製元情報）を保持するのに用いられる。複製先：：複製元情報Ｎ／Ａ：：Ｎ／Ａは、ページＰｉの複製先も当該ページＰｉの複製元も存在しないことを示す。Ｎ／Ａ：：Ｎ／Ａ以外の複製先：：複製元情報は、ページＰｉの複製先または複製元が存在すること、つまりページＰｉのデータと同一内容のデータを有する別のページ（複製先または複製元）が存在することを示す。
【００４８】
具体的には、複製先：：複製元情報ａ−ｂ：：Ｎ／Ａは、ページＰｉが複製元であり、したがってページＰｉの複製先が存在し、かつ当該複製先のページがページａ−ｂであることを示す。前述したように、ページａ−ｂは、物理ボリュームＩＤがａの物理ボリューム内のページ番号がｂのページを示す。同様に、複製先：：複製元情報Ｎ／Ａ：：ｃ−ｄは、ページＰｉが複製先であり、したがってページＰｉの複製元が存在し、かつ当該複製元のページがｃ−ｄであることを示す。
【００４９】
本実施形態では、ページＰｉｘが複製元でページＰｉｙが複製先であり、かつページＰｉｘ（複製元）に格納されているデータが更新された場合、ページＰｉｙ（複製先）に格納されているデータが削除される。この場合、ページＰｉｘ及Ｐｉｙの複製関係は解消される。つまり、ページＰｉｘの複製先及びページＰｉｙの複製元はＮ／Ａに変更される。
【００５０】
アクセス特性フィールドは、ページＰｉのアクセス回数及び最終アクセス日時を示す情報を保持するのに用いられる。この情報は、ページＰｉのデータの特性を表す。ページＰｉのアクセス回数は、ページＰｉがアクセスされる都度１インクリメントされる。
【００５１】
図４は、図２に示される論理ボリューム管理テーブル１３５ｂのデータ構造例を示す。論理ボリューム管理テーブル１３５ｂの各エントリは、論理ボリュームＩＤフィールド、ＬＢＡフィールド、物理ボリュームＩＤフィールド、及びページ番号フィールドを含む。
【００５２】
論理ボリューム管理テーブル１３５ｂの論理ボリュームＩＤフィールドは、対応エントリによって管理されるＬＢＡ領域ＬＢＡｐを含む論理ボリュームＬＶｑのＩＤを保持するのに用いられる。論理ボリューム管理テーブル１３５ｂのＬＢＡフィールドはＬＢＡ領域ＬＢＡｐの論理ブロックアドレスＬＢＡｐを保持するのに用いられる。
【００５３】
論理ボリューム管理テーブル１３５ｂの物理ボリュームＩＤフィールドは、ＬＢＡｐに対応する物理ボリュームのＩＤを保持するのに用いられる。論理ボリューム管理テーブル１３５ｂのページ番号フィールドは、ＬＢＡｐに対応するページ（物理ボリューム内の対応するページ）のページ番号を保持するのに用いられる。
【００５４】
図５は、図２に示されるキャッシュ管理テーブル１３５ｃのデータ構造例を示す。キャッシュ管理テーブル１３５ｃの各エントリは、キャッシュＩＤフィールド、論理ボリュームＩＤフィールド、ＬＢＡフィールド、物理ボリュームＩＤフィールド、及びページ番号フィールドを含む。
【００５５】
キャッシュ管理テーブル１３５ｃのキャッシュＩＤフィールドは、対応エントリによって管理されるキャッシュ領域ＣＡｓのＩＤ（キャッシュＩＤ）を保持するのに用いられる。キャッシュ管理テーブル１３５ｃの論理ボリュームＩＤフィールドは、キャッシュ領域ＣＡｓに格納されるキャッシュデータに対応するＬＢＡ領域ＬＢＡｔを含む論理ボリュームのＩＤを保持するのに用いられる。キャッシュ管理テーブル１３５ｃのＬＢＡフィールドはＬＢＡ領域ＬＢＡｔの論理ブロックアドレスＬＢＡｔを保持するのに用いられる。
【００５６】
キャッシュ管理テーブル１３５ｃの物理ボリュームＩＤフィールドは、論理ブロックアドレスＬＢＡｔに対応する物理ボリュームのＩＤを保持するのに用いられる。キャッシュ管理テーブル１３５ｃのページ番号フィールドは、論理ブロックアドレスＬＢＡｔに対応するページ（物理ボリューム内の対応するページ）のページ番号を保持するのに用いられる。図５のキャッシュ管理テーブル１３５ｃは、例えば、論理ボリュームＩＤが２の論理ボリューム内のＬＢＡ領域ＬＢＡ３０のデータが、物理ボリュームＩＤが０の物理ボリューム（高速ストレージ１１）内のページ番号が４のページ（つまり、キャッシュページまたはキャッシュ領域）にキャッシュされていることを示す。
【００５７】
図６は、本実施形態における階層間のデータ移動の例を示す。図６に示される高速ストレージ１１及び低速ストレージ１２は、前述したように、それぞれ上位階層及び下位階層に位置付けられている。高速ストレージ１１はページｂ３，ｂ４及びｂ５を含み、低速ストレージ１２はページａ５，ａ６及びａ７を含む。ここで、ページａ５，ａ６及びａ７には実データが格納されており、ページｂ３，ｂ４及びｂ５には実データ（有効な実データ）が格納されていないものとする。つまり、ページｂ３，ｂ４及びｂ５は、空きページ（領域）であるものとする。本実施形態において、ページのサイズは４キロバイト（ＫＢ）であり、ブロック（セクタ）のサイズは、５１２バイト（Ｂ）である。また、ブロック毎にアドレスが付与される。この場合、１ページは、連続する８つのアドレスに対応付けられた８つのブロックから構成される。
【００５８】
図６において、論理ボリューム６０は、ＬＢＡ領域の集合から構成される。ＬＢＡ領域の集合は、ＬＢＡ（論理ブロックアドレス）０，１，２，３及び４でそれぞれ指定されるＬＢＡ領域ＬＢＡ０，ＬＢＡ１，ＬＢＡ２，ＬＢＡ３及びＬＢＡ４を含む。ＬＢＡ領域ＬＢＡ０は、論理ボリューム６０の先頭ＬＢＡ領域であり、アドレス０乃至７の範囲に対応する。ＬＢＡ領域ＬＢＡ１はＬＢＡ領域ＬＢＡ０に後続しており、アドレス８乃至１５の範囲に対応する。ＬＢＡ領域ＬＢＡ２はＬＢＡ領域ＬＢＡ１に後続しており、アドレス１６乃至２３の範囲に対応する。ＬＢＡ領域ＬＢＡ３はＬＢＡ領域ＬＢＡ２に後続しており、アドレス２４乃至３１の範囲に対応する。ＬＢＡ領域ＬＢＡ４はＬＢＡ領域ＬＢＡ３に後続しており、アドレス３２乃至３９の範囲に対応する。
【００５９】
今、低速ストレージ１２のページａ５，ａ６及びａ７が、図６において破線６１ａ，６１ｂ及び６１ｃで示されるように、論理ボリューム６０のＬＢＡ領域ＬＢＡ１，ＬＢＡ２及びＬＢＡ３にマッピングされているものとする。この状態で、ページａ５，ａ６及びａ７に格納されているデータのデータ特性（例えば、アクセス頻度）が変化（増加）したものとする。この場合、ＣＰＵ１３６は階層管理部２０４として機能して、ページａ５，ａ６及びａ７に格納されているデータを、図６において矢印６２で示されるように、低速ストレージ１２から高速ストレージ１１の例えばページｂ３，ｂ４及びｂ５に移動する。このデータ移動の後、ＣＰＵ１３６（階層管理部２０４）は、ページａ５，ａ６及びａ７とＬＢＡ領域ＬＢＡ１，ＬＢＡ２及びＬＢＡ３とのマッピングを解消し、ページｂ３，ｂ４及びｂ５を、図６において実線６３ａ，６３ｂ及び６３ｃで示されるように、論理ボリューム６０のＬＢＡ領域ＬＢＡ１，ＬＢＡ２及びＬＢＡ３に新たにマッピングする。つまりＣＰＵ１３６（階層管理部２０４）は、データ移動前に下位階層の３つのページそれぞれの物理アドレスに対応付けられたＬＢＡを、データ移動後に上位階層の３つのページそれぞれの物理アドレスに対応付ける。
【００６０】
このように、下位階層のページａ５，ａ６及びａ７のデータが上位階層のｂ３，ｂ４及びｂ５に移動されることにより、当該データの階層（より詳細には、ＬＢＡ領域ＬＢＡ１，ＬＢＡ２及びＬＢＡ３のデータの階層）が、下位階層から上位階層に変更される。つまり階層変更は、一般に階層間のデータ移動（物理的なデータ移動）を伴う。本実施形態は、下位階層から上位階層へのデータの移動を極力抑制しつつ、データの階層を下位階層から上位階層に変更することができる階層変更処理を実現することを特徴とする。
【００６１】
次に、本実施形態で適用される階層変更処理について図７を参照して説明する。図７は、階層変更処理の典型的な手順を示すフローチャートである。階層変更処理は、主として階層管理部２０４及びキャッシュ制御部２０５によって実行される。
【００６２】
まず階層管理部２０４は、低速ストレージ１２に含まれるページのうち、アクセス回数が上位のＬページを、物理ボリューム管理テーブル１３５ａからリストアップする（ステップＳ１）。ここでは、リストアップされるべきページの数Ｌは、例えばユーザーの操作に従ってホスト２０によって指定されるものとする。しかし、このページの数Ｌが、予め定められていても良い。また、アクセス回数の閾値が、ホスト２０によって指定されても、或いは予め定められていても良い。この場合、階層管理部２０４は、アクセス回数が閾値を超えるページをリストアップする。なお、アクセス回数が閾値を超えるページの数がＬを超える場合、階層管理部２０４は、アクセス回数が上位のＬページをリストアップしても良い。リストアップされたページのページ番号は、ローカルメモリ１３４のワーク領域１３４ｃに格納される。
【００６３】
階層管理部２０４は、ローカルメモリ１３４内に格納されているリストアップされたページの番号から１つを選択する。すなわち階層管理部２０４は、リストアップされたページの集合から１つのページＰｉを選択する（ステップＳ２）。
【００６４】
すると階層管理部２０４からキャッシュ制御部２０５に制御が渡される。キャッシュ制御部２０５は、ページＰｉに関する判定ステップＳ３を次のように実行する。まずキャッシュ制御部２０５は、ページＰｉの物理ボリュームＩＤ及びページ番号に基づいて物理ボリューム管理テーブル１３５ａの対応するエントリを参照して、ページＰｉに対応する論理ボリュームＩＤｓ及び論理ブロックアドレスＬＢＡｔの対を特定する。次にキャッシュ制御部２０５はキャッシュ管理テーブル１３５ｃを参照して、ページＰｉに対応する論理ボリュームＩＤｓ及び論理ブロックアドレスＬＢＡｔの対が当該キャッシュ管理テーブル１３５ｃに存在するかを判定する。この判定結果に基づいてキャッシュ制御部２０５は、ページＰｉのデータが高速ストレージ１１のキャッシュ領域に格納されているかを判定する。
【００６５】
もし、ページＰｉのデータが高速ストレージ１１のキャッシュ領域に格納されていないならば（ステップＳ３のＮｏ）、キャッシュ制御部２０５は低速ストレージ１２内のページＰｉのデータ（実データ）は最新のデータであると判断する。この場合、キャッシュ制御部２０５は階層管理部２０４に制御を戻す。すると階層管理部２０４は、高速ストレージ１１内のデータ領域の集合から１つの空きデータ領域（つまり、空きページＰｆ）を確保する。階層管理部２０４は、ページＰｉのデータを、低速ストレージ１２から高速ストレージ１１内の確保された空きページＰｆに、ストレージＩ／Ｆ１３２によりコピーさせる（ステップＳ４）。
【００６６】
次に階層管理部２０４は、このコピー後の状態が反映されるように、論理ボリューム管理テーブル１３５ｂを次のように更新する（ステップＳ５）。まず階層管理部２０４は、論理ボリュームＩＤｓ及び論理ブロックアドレスＬＢＡｔの対を含む論理ボリューム管理テーブル１３５ｂのエントリを特定する。そして階層管理部２０４は、特定されたエントリ内の物理ボリュームＩＤ及びページ番号を、低速ストレージ１２を示す物理ボリュームＩＤ及びページＰｉのページ番号から、高速ストレージ１１を示す物理ボリュームＩＤ及びコピー先のページＰｆのページ番号に更新する。
【００６７】
次に階層管理部２０４はステップＳ６に進む。ステップＳ６において階層管理部２０４は、低速ストレージ１２内のページＰｉの領域を解放する。すなわち階層管理部２０４は、ページＰｉの物理ボリュームＩＤ及びページ番号に対応する物理ボリューム管理テーブル１３５ａのエントリに設定されている論理ボリュームＩＤ及びＬＢＡの各々をＮ／Ａに更新する。階層管理部２０４はまた、コピー先のページＰｆの物理ボリュームＩＤ及びページ番号に対応する物理ボリューム管理テーブル１３５ａのエントリ（対応エントリ）に設定されている論理ボリュームＩＤ及び論理ブロックアドレスＬＢＡを、ページＰｉの領域が解放される前に当該ページＰｉと対応付けられていた論理ボリュームＩＤｓ及び論理ブロックアドレスＬＢＡｔに更新する。以上のステップＳ４乃至Ｓ６により、低速ストレージ１２内のページＰｉのデータ（実データ）は、高速ストレージ１１内のページＰｆに移動されたことになる。
【００６８】
次に階層管理部２０４は、ステップＳ１でリストアップされたすべてのページについて処理が実行されたかを判定する（ステップＳ８）。もし、未処理のページが残されているならば（ステップＳ８のＮｏ）、階層管理部２０４はステップＳ２に戻って、次のページＰｉを選択する。するとキャッシュ制御部２０５は、ページＰｉのデータが高速ストレージ１１のキャッシュ領域に格納されているかを判定する（ステップＳ３）。
【００６９】
ここで、ページＰｉのデータが高速ストレージ１１のキャッシュ領域（以下、対応キャッシュ領域と称する）に格納されているものとする（ステップＳ３のＹｅｓ）。つまり、ページＰｉのデータ（実データ）が低速ストレージ１２に格納されていることに加えて、当該ページＰｉのデータがキャッシュデータとして高速ストレージ１１の対応キャッシュ領域（ページ）に格納（キャッシュ）されているものとする。この場合、キャッシュ制御部２０５は、ページＰｉのデータが低速ストレージ１２から高速ストレージ１１に物理的に移動されることなく、当該データを高速ストレージ１１内のデータ領域に実質的に（論理的に）移動可能であると判断する。より具体的に述べるならば、キャッシュ制御部２０５は、高速ストレージ１１の対応キャッシュ領域をデータ領域に定義し直すことにより、ページＰｉのデータを当該対応キャッシュ領域に論理的に移動可能であると判断する。この対応キャッシュ領域をデータ領域に定義し直す処理を、領域置換処理と呼ぶ。つまり領域置換処理とは、下位階層から上位階層へのデータ移動を抑制するために、高速ストレージ１１内に確保されたキャッシュ領域の一部をデータ領域に変更する処理である。
【００７０】
前述したように、図３の物理ボリューム管理テーブル１３５ａ、図４の論理ボリューム管理テーブル１３５ｂ及び図５のキャッシュ管理テーブル１３５ｃの例では、ページ１００−５のキャッシュデータ（つまり、ページ１００−５に対応する論理ボリュームＩＤが２の論理ボリューム内のＬＢＡ領域ＬＢＡ３０のデータ）が、ページ（キャッシュ領域）０−４に格納されている。したがって、ページＰｉが例えばページ１００−５である場合、つまりページＰｉが物理ボリュームＩＤ＝１００及びページ番号＝５のページである場合、ステップＳ３の判定はＹｅｓとなる。
【００７１】
ステップＳ３の判定がＹｅｓの場合、キャッシュ制御部２０５は、ページＰｉ（例えば、ページ１００−５）を領域の置き換えがなされるべきページであると判断する。この場合、キャッシュ制御部２０５は、ページＰｉに関する情報を領域置換リストに追加する（ステップＳ７）。領域置換リストは、ローカルメモリ１３４に格納されている。ページＰｉに関する情報は、当該ページＰｉの物理ボリュームＩＤ及びページ番号と、対応キャッシュ領域の物理ボリュームＩＤ及びページ番号を含む。ページＰｉがページ１００−５である場合、ページＰｉに関する情報は、物理ボリュームＩＤ＝１００及びページ番号＝５と、物理ボリュームＩＤ＝０及びページ番号＝４とを含む。
【００７２】
キャッシュ制御部２０５はステップＳ７を実行すると、階層管理部２０４に制御を返す。すると階層管理部２０４は、ステップＳ１でリストアップされたすべてのページについて処理が実行されたかを判定する（ステップＳ８）。もし、すべてのページについて処理が実行されたならば（ステップＳ８のＹｅｓ）、階層管理部２０４は再びキャッシュ制御部２０５に制御を渡す。するとキャッシュ制御部２０５は、領域置換リストで示されるすべてのページについて、キャッシュ領域をデータ領域に変更するための領域置換処理を実行する（ステップＳ９）。これにより、階層変更処理は終了する。
【００７３】
このように本実施形態によれば、下位階層（低速ストレージ１２）のページＰｉのデータが、アクセス特性（つまり、データ特性）の変化のために上位階層（高速ストレージ１１）に移動されるべきであると判定された場合（ステップＳ１及びＳ２）、キャッシュ制御部２０５によってステップＳ３が実行される。ページＰｉのデータがキャッシュ領域にキャッシュされている場合（ステップＳ３のＹｅｓ）、キャッシュ制御部２０５は、当該ページＰｉをキャッシュ領域（キャッシュページ）からデータ領域（実データページ）に変更する（ステップＳ９）。
【００７４】
本実施形態は、このような領域変更（置換）により、ページＰｉのデータを下位階層から上位階層に物理的に移動することなく、データ移動と同等の効果を得ることができる。つまり本実施形態は、ページＰｉのデータの属性を、キャッシュデータから実データに変更するだけで、データ移動と同等の効果を得ることができる。これにより本実施形態は、データ移動を抑制することができる。
【００７５】
また本実施形態によれば、高速ストレージ１１内に確保されたキャッシュ領域の集合が、階層化ストレージシステム１０のキャッシュとして用いられる。このため、下位階層（低速ストレージ１２）に格納されているデータを上位階層（高速ストレージ１１）にキャッシュすることができ、階層間のデータ移動なしに下位階層へのデータアクセスを抑制できる。
【００７６】
次に、上述の階層変更処理に含まれている領域置換処理（ステップＳ９）の詳細について、図８を参照して説明する。図８は領域置換処理の典型的な手順を示すフローチャートである。まずキャッシュ制御部２０５は、ローカルメモリ１３４内に格納されている領域置換リストから１つのページＰｊ（より詳細には、ページＰｊに関する情報）を選択する（ステップＳ１１）。前述したように領域置換リストは、階層変更処理で、高速ストレージ１１のキャッシュ領域にキャッシュデータが格納されていると判定されたページの集合を示す。また、ページＰｊに関する情報は、当該ページＰｊの物理ボリュームＩＤ及びページ番号と、対応キャッシュ領域の物理ボリュームＩＤ及びページ番号を含む。
【００７７】
次にキャッシュ制御部２０５は、ページＰｊに対応する第１及び第２のエントリを次のように検索する（ステップＳ１２）。まずキャッシュ制御部２０５は、ページＰｊの対応キャッシュ領域の物理ボリュームＩＤ及びページ番号に基づいて、物理ボリューム管理テーブル１３５ａから第１のエントリを検索する。第１のエントリは、ページＰｊの対応キャッシュ領域の物理ボリュームＩＤ及びページ番号を含む。次にキャッシュ制御部２０５は、ページＰｊの物理ボリュームＩＤ及びページ番号に基づいて、物理ボリューム管理テーブル１３５ａから第２のエントリを検索する。第２のエントリは、ページＰｊの物理ボリュームＩＤ及びページ番号を含む。ページＰｊがページ１００−５である場合、対応キャッシュ領域の物理ボリュームＩＤ＝０及びページ番号＝４を含むエントリが第１のエントリとして検索され、物理ボリュームＩＤ＝１００及びページ番号＝５を含むエントリが第２のエントリとして検索される。
【００７８】
次にキャッシュ制御部２０５は、物理ボリューム管理テーブル１３５ａの第１のエントリのキャッシュ利用フィールドの内容（キャッシュ利用フラグ）を、“Ｙｅｓ”から“Ｎｏ”に変更する（ステップＳ１３）。次にキャッシュ制御部２０５は、論理ボリューム管理テーブル１３５ｂにおける実データ（ページＰｊの実データ）に対応するエントリの物理ボリュームＩＤ及びページ番号を、現在ページＰｊのキャッシュデータが格納されているページ（つまりページＰｊの対応キャッシュ領域）を示すように変更する（ステップＳ１４）。ページＰｊがページ１００−５で、ページＰｊの対応キャッシュ領域がページ０−４である場合、ステップＳ１４は次のように行われる。
【００７９】
まずキャッシュ制御部２０５は、キャッシュ管理テーブル１３５ｃを参照して、物理ボリュームＩＤが０で、ページ番号が４のエントリから、論理ボリュームＩＤ及び論理ブロックアドレスＬＢＡとして、それぞれ２及びＬＢＡ３０を取得する。次にキャッシュ制御部２０５は、取得された論理ボリュームＩＤ＝２及び論理ブロックアドレスＬＢＡ＝ＬＢＡ３０を含む、論理ボリューム管理テーブル１３５ｂの対応エントリを特定する。そしてキャッシュ制御部２０５は、特定された論理ボリューム管理テーブル１３５ｂの対応エントリの物理ボリュームＩＤ及びページ番号を、１００及び５から、それぞれ０及び４に変更する。これにより、ページＰｊの対応キャッシュ領域（つまり、ページ０−４）はデータ領域に変更され、ページ０−４内のキャッシュデータは実データとして用いられる。
【００８０】
次にキャッシュ制御部２０５は、物理ボリューム管理テーブル１３５ａの第１のエントリの複製先：：複製元フィールドにおける複製先情報を、“Ｎ／Ａ”から、実データ（より詳細には、ページＰｊの実データが格納されていた領域）を指し示す“物理ボリュームＩＤ−ページ番号”（つまり、第２のエントリ内の“物理ボリュームＩＤ−ページ番号”）に変更する（ステップＳ１５）。次にキャッシュ制御部２０５は、物理ボリューム管理テーブル１３５ａの第２のエントリの複製先：：複製元フィールドにおける複製元情報を、“Ｎ／Ａ”から、対応キャッシュ領域（より詳細には、現在ページＰｊのキャッシュデータが格納されている領域）を示す“物理ボリュームＩＤ−ページ番号” （つまり、第１のエントリ内の“物理ボリュームＩＤ−ページ番号”）に変更する（ステップＳ１６）。ページＰｊがページ１００−５で、ページＰｊの対応キャッシュ領域がページ０−４である場合、物理ボリューム管理テーブル１３５ａの第１のエントリの複製先情報は１００−５に変更され、物理ボリューム管理テーブル１３５ａの第２のエントリの複製元情報は０−４に変更される。これにより、データ領域に変更された上位階層のページ０−４（ページ０−４の実データとして用いられるキャッシュデータ）及び下位階層のページ１００−５（ページ１００−５の旧実データ）が、それぞれ対応する複製先：：複製元フィールドにより紐付けられる。
【００８１】
このように、複製先：：複製元フィールドにより紐付けられた、上位階層のページ（より詳細には、データ領域に変更されたページ）０−４のデータと、下位階層のページ１００−５のデータとは等しい。つまり、上位階層のページ０−４及び下位階層のページ１００−５には同一内容のデータが格納されている。したがって、記憶領域の有効活用の観点からは、下位階層のページ１００−５は未割り当て領域として解放されることが好ましい。その一方、領域定義の変更によって上位階層のページ０−４に論理的に移動されたデータが、将来、データ特性の変化（例えばアクセス頻度の低下）によって、再度下位階層に移動されるべきデータとなる場合に注意すべきである。このような場合に、下位階層のページ１００−５が未割り当て領域として解放されているならば、上位階層のページ０−４のデータを下位階層に移動する動作が発生する。しかし、本実施形態によれば、下位階層のページ１００−５は未割り当て領域として解放されずに、上位階層のページ（より詳細には、データ領域に変更されたページ）０−４と紐付けられる（ステップＳ１３乃至Ｓ１５）。この状態は、後述されるように、上位階層のページ０−４のデータが更新されるまで維持される（図９のステップＳ３１及びＳ３８乃至Ｓ４１）。ここで、上位階層のページ０−４のデータを下位階層に移動する必要性が発生したものとする。もし、上位階層のページ０−４のデータが依然として未更新であるならば、当該データは、解放されずに残されている下位階層のページ１００−５のデータと一致する。したがって本実施形態は、残されている下位階層のページ１００−５のデータを利用することにより、上位階層のページ０−４のデータを物理的に下位階層に移動することなく、データ移動と同等の効果を得ることができる。つまり、本実施形態によれば、データ移動を抑制できる。
【００８２】
次にキャッシュ制御部２０５は、物理ボリューム管理テーブル１３５ａの第１及び第２のエントリの論理ボリュームＩＤ及びＬＢＡを相互に入れ替える（ステップＳ１７）。この入れ替えの後、キャッシュ制御部２０５は、第２のエントリの論理ボリュームＩＤフィールド及びＬＢＡフィールドを、いずれも“Ｎ／Ａ”に変更する。次にキャッシュ制御部２０５は、キャッシュ管理テーブル１３５ｃからページＰｊ（ページ１００−５）のキャッシュデータに対応するエントリを削除する（ステップＳ１８）。
【００８３】
次にキャッシュ制御部２０５は、領域置換リストの示すすべてのページについて処理が実行されたかを判定する（ステップＳ１９）。もし、未処理のページが残されているならば（ステップＳ１９のＮｏ）、上述のステップＳ１１乃至Ｓ１８を再度実行する。このようにしてキャッシュ制御部２０５は、領域置換リストの示すすべてのページについてステップＳ１１乃至Ｓ１８を実行すると（ステップＳ１９のＹｅｓ）、ステップＳ２０に進む。ステップＳ２０においてキャッシュ制御部２０５は、データ領域解放処理を実行する。これにより、領域置換処理は終了する。データ領域解放処理とは、データ領域への変更によって減少したキャッシュ領域に相当するデータ領域を、新たにキャッシュ領域に変更するための処理である。
【００８４】
次に、本実施形態で適用されるＩ／Ｏ（入出力）処理について図９を参照して説明する。図９は、Ｉ／Ｏ処理の典型的な手順を示すフローチャートである。Ｉ／Ｏ処理は、Ｉ／Ｏ制御部２０２がＩ／Ｏ要求（コマンド）を受信した場合に、当該Ｉ／Ｏ制御部２０２及びキャッシュ制御部２０５によって実行される。Ｉ／Ｏ要求は例えばホスト２０によって発行され、アクセス先を示す論理ボリュームＩＤ及びＬＢＡの対と、Ｉ／Ｏの種別（リードまたはライト）を示す情報とを含む。
【００８５】
今、Ｉ／Ｏ制御部２０２が、ホスト２０からのＩ／Ｏ要求をホストＩ／Ｆ１３１を介して受信したものとする。この場合、Ｉ／Ｏ制御部２０２は、受信Ｉ／Ｏ要求が例えばリード要求であるかを判定する（ステップＳ３１）。もし、受信Ｉ／Ｏ要求がリード要求であるならば（ステップＳ３１のＹｅｓ）、Ｉ／Ｏ制御部２０２はキャッシュ制御部２０５に制御を渡す。
【００８６】
キャッシュ制御部２０５は、受信Ｉ／Ｏ要求の指定するデータが高速ストレージ１１のキャッシュ領域に存在するキャッシュヒットであるかを判定する（ステップＳ３２）。キャッシュ制御部２０５は、この判定を、受信Ｉ／Ｏ要求に含まれている論理ボリュームＩＤ及びＬＢＡの対が存在するエントリをキャッシュ管理テーブル１３５ｃから検索できるかに基づいて実行する。
【００８７】
もし、キャッシュヒットでないならば（ステップＳ３２のＮｏ）、キャッシュ制御部２０５は、高速ストレージ１１からのデータリードであるかを、次のように判定する（ステップＳ３３）。まずキャッシュ制御部２０５は、受信Ｉ／Ｏ要求に含まれている論理ボリュームＩＤ及びＬＢＡの対に対応付けられた物理ボリュームＩＤ及びページ番号の対を、論理ボリューム管理テーブル１３５ｂから検索する。次にキャッシュ制御部２０５は、検索された物理ボリュームＩＤ及びページ番号の対を含む物理ボリューム管理テーブル１３５ａのエントリ中のフラッシュストレージフラグを参照する。キャッシュ制御部２０５は、この参照されたフラッシュストレージフラグの状態に基づいて、高速ストレージ１１からのデータリードであるかを判定する。
【００８８】
もし、高速ストレージ１１からのデータリードでないならば（ステップＳ３３のＮｏ）、キャッシュ制御部２０５はステップＳ３４に進む。ステップＳ３４においてキャッシュ制御部２０５は、検索された物理ボリュームＩＤ及びページ番号の対で指定される低速ストレージ１２の領域から、Ｉ／Ｏ制御部２０２によってストレージＩ／Ｆ１３２を介してデータをリードさせる。次にキャッシュ制御部２０５は、低速ストレージ１２の領域からリードされたデータを、高速ストレージ１１のキャッシュ領域にストレージＩ／Ｆ１３２を介してキャッシュする（ステップＳ３５）。そしてキャッシュ制御部２０５は、Ｉ／Ｏ制御部２０２に制御を返す。するとＩ／Ｏ制御部２０２は、低速ストレージ１２からリードされたデータを、ホストＩ／Ｆ１３１によりホスト２０に転送させる（ステップＳ３７）。
【００８９】
これに対し、高速ストレージ１１からのデータリードであるならば（ステップＳ３３のＹｅｓ）、キャッシュ制御部２０５はステップ３６に進む。ステップＳ３６においてキャッシュ制御部２０５は、検索された物理ボリュームＩＤ及びページ番号の対で指定される高速ストレージ１１のデータ領域に格納されているデータを、Ｉ／Ｏ制御部２０２によりストレージＩ／Ｆ１３２を介してリードさせる。このように高速ストレージ１１からのデータリードの場合、キャッシュ制御部２０５は、低速ストレージ１２からのデータリードと異なり、リードされたデータを高速ストレージ１１のキャッシュ領域にキャッシュすることを控えて、Ｉ／Ｏ制御部２０２に制御を返す。Ｉ／Ｏ制御部２０２は、高速ストレージ１１からリードされたデータを、ホストＩ／Ｆ１３１によりホスト２０に転送させる（ステップＳ３７）。
【００９０】
一方、キャッシュヒットである場合（ステップＳ３２のＹｅｓ）、キャッシュ制御部２０５は、高速ストレージ１１の対応するキャッシュ領域に格納されているキャッシュデータをストレージＩ／Ｆ１３２を介して取得する。このキャッシュ領域は、ステップＳ３２での判定のためにキャッシュ管理テーブル１３５ｃから検索されたエントリ中の物理ボリュームＩＤ及びページ番号の対によって特定される。Ｉ／Ｏ制御部２０２は、特定されたキャッシュ領域からキャッシュ制御部２０５によって取得されたキャッシュデータを、ホストＩ／Ｆ１３１によりホスト２０に転送させる（ステップＳ３７）。
【００９１】
次に、受信Ｉ／Ｏ要求がリード要求でないものとする（ステップＳ３１のＮｏ）。つまり、受信Ｉ／Ｏ要求がライト要求であるものとする。この場合、キャッシュ制御部２０５は、受信Ｉ／Ｏ要求の指定するライトデータに対応するキャッシュデーが高速ストレージ１１のキャッシュ領域に存在するキャッシュヒットであるかを判定する。キャッシュ制御部２０５は、この判定を、ステップＳ３２と同様に実行する。
【００９２】
もし、キャッシュヒットでないならば（ステップＳ３８のＮｏ）、キャッシュ制御部２０５は高速ストレージ１１に対するデータライトであるかを、次のように判定する（ステップＳ３９）。まずキャッシュ制御部２０５は、受信Ｉ／Ｏ要求に含まれている論理ボリュームＩＤ及びＬＢＡの対に対応付けられた物理ボリュームＩＤ及びページ番号の対を、論理ボリューム管理テーブル１３５ｂから検索する。次にキャッシュ制御部２０５は、検索された物理ボリュームＩＤ及びページ番号の対を含む物理ボリューム管理テーブル１３５ａのエントリ中のフラッシュストレージフラグを参照する。キャッシュ制御部２０５は、この参照されたフラッシュストレージフラグの状態に基づいて、高速ストレージ１１へのデータライトであるかを判定する。
【００９３】
もし、高速ストレージ１１へのデータライトでないならば（ステップＳ３９のＮｏ）、キャッシュ制御部２０５はステップＳ４０に進む。ステップＳ４０においてキャッシュ制御部２０５は、受信Ｉ／Ｏ要求で指定されたライトデータを、高速ストレージ１１の対応するキャッシュ領域にストレージＩ／Ｆ１３２を介してキャッシュする。
【００９４】
次にキャッシュ制御部２０５は、キャッシュデータが実データと複製関係にあるかを判定する（ステップＳ４１）。もし、両データが複製関係にあるならば（ステップＳ４１のＹｅｓ）、キャッシュ制御部２０５は、キャッシュデータは実データとは異なることから、両者の複製関係が崩れると判断する。
【００９５】
そこでキャッシュ制御部２０５は、両者の複製関係を次のように解消する（ステップＳ４２）。まずキャッシュ制御部２０５は、物理ボリューム管理テーブル１３５ａから、受信Ｉ／Ｏ要求に含まれている論理ボリュームＩＤ及びＬＢＡの対に対応付けられたエントリを検索する。つまりキャッシュ制御部２０５は、受信Ｉ／Ｏ要求で指定されたライト先のページに対応付けられた、物理ボリューム管理テーブル１３５ａのエントリを検索する。そしてキャッシュ制御部２０５は、検索されたエントリの複製先：：複製元フィールドにおける複製元情報を“Ｎ／Ａ”に変更する。この変更がなされる前の複製元情報は、対応するキャッシュ領域に同じ内容のデータが存在していたときに“Ｎ／Ａ”以外の値を示す。キャッシュ制御部２０５はまた、変更前の複製元情報で示されるキャッシュ領域に対応する物理ボリューム管理テーブル１３５ａのエントリを検索する。そしてキャッシュ制御部２０５は、検索されたエントリの複製先：：複製元フィールドにおける複製先情報を“Ｎ／Ａ”に変更する。これによりキャッシュデータと実データとの複製関係が解消される。するとキャッシュ制御部２０５はＩ／Ｏ制御部２０２に制御を返す。Ｉ／Ｏ制御部２０２は、受信Ｉ／Ｏ要求の指定するライトデータをストレージＩ／Ｆ１３２を介して低速ストレージ１２にライトする（ステップＳ４３）。
【００９６】
これに対し、上述の両データが複製関係にないならば（ステップＳ４１のＮｏ）、キャッシュ制御部２０５はＩ／Ｏ制御部２０２に制御を返す。Ｉ／Ｏ制御部２０２は、受信Ｉ／Ｏ要求の指定するライトデータをストレージＩ／Ｆ１３２を介して低速ストレージ１２にライトする（ステップＳ４３）。
【００９７】
一方、キャッシュヒットである場合（ステップＳ３８のＹｅｓ）、キャッシュ制御部２０５はステップＳ４４に進む。また、キャッシュヒットでなくても（ステップＳ３８のＮｏ）、高速ストレージ１１に対するデータライトの場合にも（ステップＳ３９のＹｅｓ）、キャッシュ制御部２０５はステップＳ４４に進む。ステップＳ４４においてキャッシュ制御部２０５は、指定されたライトデータを高速ストレージ１１の前記キャッシュ領域にキャッシュせずに、当該ライトデータを、検索された物理ボリュームＩＤ及びページ番号の対で指定される高速ストレージ１１のデータ領域に、Ｉ／Ｏ制御部２０２によってストレージＩ／Ｆ１３２を介してライトさせる（ステップＳ４４）。
【００９８】
このように本実施形態によれば、ホスト２０からのＩ／Ｏ要求がリード要求であり（ステップＳ３１のＹｅｓ）、かつ当該リード要求が高速ストレージ１１からのデータリードを指定していない場合（ステップＳ３３のＮｏ）、キャッシュ制御部２０５は、低速ストレージ１２から読み出されたデータを高速ストレージ１１のキャッシュ領域にキャッシュする（ステップＳ３４及びＳ３５）。これに対し、リード要求が高速ストレージ１１からのデータリードを指定している場合（ステップＳ３３のＹｅｓ）、キャッシュ制御部２０５は、高速ストレージ１１から読み出されたデータを高速ストレージ１１のキャッシュ領域にキャッシュしない（ステップＳ３６）。
【００９９】
また、ホスト２０からのＩ／Ｏ要求がライト要求であり（ステップＳ３１のＮｏ）、かつ当該ライト要求が高速ストレージ１１へのデータライトを指定していない場合（ステップＳ３９のＮｏ）、キャッシュ制御部２０５は、高速ストレージ１１のキャッシュ領域にライトデータをキャッシュする（ステップＳ４０）。これに対し、ライト要求が高速ストレージ１１へのデータライトを指定している場合（ステップＳ３９のＹｅｓ）、キャッシュ制御部２０５は、ライトデータをキャッシュしない（ステップＳ４４）。
【０１００】
このように本実施形態は、キャッシュ領域にキャッシュされるデータを下位階層のデータに限定し、上位階層（キャッシュ領域と同じストレージ装置、つまり高速ストレージ１１）のデータがキャッシュ領域に格納されることを防ぐことができる。これにより、上位階層のデータもキャッシュ領域に保存される場合と比較して、下位階層のデータがキャッシュ領域に保存される容量が増えるため、結果的に下位階層へのデータアクセスを低減させる効果が得られる。また、上位階層のストレージ装置に同じデータが重複して保存されることによる記憶容量の圧迫の低減にも寄与する。
【０１０１】
次に、前述の領域置換処理に含まれているデータ領域解放処理（ステップＳ２０）の詳細について、図１０を参照して説明する。図１０はデータ領域解放処理の典型的な手順を示すフローチャートである。まずキャッシュ制御部２０５は、高速ストレージ１１内に確保されるキャッシュのサイズ（キャッシュ量）が現在よりも増加されるべきかを判定する（ステップＳ５１）。領域置換処理でキャッシュ領域がデータ領域に変更されると、キャッシュ量は減少する。このような状態で、例えば下位階層へのＩ／Ｏが増加したならば、階層化ストレージシステムのＩ／Ｏ性能が低下する可能性がある。そこで、階層化ストレージシステムのＩ／Ｏ性能の低下を防止するためには、キャッシュ量が適切に維持される必要がある。適切なキャッシュ量（以下、目標キャッシュ量と称する）は、例えば、データアクセスの局所性（つまり偏り）、或いは高速ストレージ１１全体の記憶容量に基づいて決定される。このような目標キャッシュ量を算出する方法は、従来から知られている。
【０１０２】
もし、領域置換処理によってキャッシュ量が目標キャッシュ量よりも減少したために階層化ストレージシステムのＩ／Ｏ性能が低下する可能性があるならば、キャッシュ制御部２０５は、キャッシュ量が増加されるべきであると判定する（ステップＳ５１のＹｅｓ）。この場合、キャッシュ制御部２０５は、目標キャッシュ量に対して不足するサイズを算出する（ステップＳ５２）。ここでは、説明の簡略化のために、領域置換処理が実行される前のキャッシュ量が、目標キャッシュ量に一致しているものとする。そこでキャッシュ制御部２０５は、領域置換処理でキャッシュ領域からデータ領域に変更されたページの合計サイズを、不足サイズとして算出する。
【０１０３】
次にキャッシュ制御部２０５は、不足サイズを補充するのに用いられるべき（つまり、データ領域からキャッシュ領域に変更されるべき）ページをリストアップする（ステップＳ５３）。すなわちキャッシュ制御部２０５は、高速ストレージ１１のデータ領域に含まれるページのうち、アクセス回数が下位のＭページを、物理ボリューム管理テーブル１３５ａからリストアップする。ここでは、アクセス回数の昇順にＭページがリストアップされる。Ｍページのサイズは、不足サイズに等しい。
【０１０４】
次にキャッシュ制御部２０５は、リストアップされたページの集合から１つのページＰｑを選択して（ステップＳ５４）、階層管理部２０４に制御を渡す。すると階層管理部２０４は、キャッシュ制御部２０５の指示に基づき、ページＰｑ（つまり高速ストレージ１１内のページＰｑ）のデータを、低速ストレージ１２の例えばページＰｐｄにコピー（移動）する（ステップＳ５５）。ステップＳ５５において階層管理部２０４は、ページＰｐｄへのデータコピー（移動）に対応するように、物理ボリューム管理テーブル１３５ａ及び論理ボリューム管理テーブル１３５ｂを更新する。すなわち階層管理部２０４は、論理ボリューム管理テーブル１３５ｂ内でページＰｑに対応付けられた論理ボリュームＩＤｕ及びＬＢＡｖが、新たにページＰｐｄに対応付けられるように、論理ボリューム管理テーブル１３５ｂ内の対応するエントリを更新する。また、ステップＳ５５において階層管理部２０４は、物理ボリューム管理テーブル１３５ａ内でページＰｐｄが新たに論理ボリュームＩＤｕ及びＬＢＡｖに対応付けられるように、当該ページＰｐｄに対応する物理ボリューム管理テーブル１３５ａ内のエントリを更新する。そして階層管理部２０４は、キャッシュ制御部２０５に制御を返す。
【０１０５】
するとキャッシュ制御部２０５は、ページＰｑを高速ストレージ１１のデータ領域から削除（解放）して、当該ページＰｑをキャッシュ領域に変更する（ステップＳ５６）。具体的には、キャッシュ制御部２０５は、ページＰｑに対応する物理ボリューム管理テーブル１３５ａ内のエントリのキャッシュフラグを“Ｎｏ”から“Ｙｅｓ”に変更する。またキャッシュ制御部２０５は、ページＰｑに対応する物理ボリューム管理テーブル１３５ａ内のエントリの、論理ボリュームＩＤ、ＬＢＡ、複製先：：複製元、及びアクセス特性を、すべて“Ｎ／Ａ”に変更する。これにより、ページＰｑは、データ領域から解放されて、キャッシュ領域として利用可能な空き領域に変更される。
【０１０６】
キャッシュ制御部２０５は、上述のステップＳ５４乃至Ｓ５６を、ステップＳ５３でリストアップされたＭページについて階層管理部２０４と協同して繰り返す（ステップＳ５７）。なお、ステップＳ５１の判定がＮｏであるならば、キャッシュ制御部２０５は、データ領域を解放することなく、データ領域解放処理を終了する。
【０１０７】
このように本実施形態によれば、データ領域をキャッシュ領域に変更する必要がある場合に（ステップＳ５１のＹｅｓ）、キャッシュ制御部２０５は、アクセス回数が下位の上位階層のデータ領域（ページ）を優先的に解放する（ステップＳ５３乃至Ｓ５６）。アクセス回数が下位の上位階層のデータ領域に格納されているデータは、格納先が下位階層に変更されるべきデータである。一般に、上位階層のデータ領域を解放してキャッシュ領域に変更する場合、解放されるデータ領域のデータは下位階層に移動される必要がある。その理由は、上位階層のデータ領域が単に解放されただけでは、当該データ領域のデータが失われてしまうためである。そこで本実施形態は、データ領域のデータのうち、再度上位階層に移動される可能性が低いデータ（つまり、格納先が下位階層に変更されるべきデータ）を優先して下位階層に移動する。これにより、下位階層から上位階層へのデータ移動が抑制される。
【０１０８】
次に、本実施形態で適用されるキャッシュ領域解放処理について、図１１を参照して説明する。図１１はキャッシュ領域解放処理の典型的な手順を示すフローチャートである。キャッシュ領域解放処理は、データ領域解放処理とは逆に、高速ストレージ１１においてデータ領域が不足している場合に実行される。
【０１０９】
まずキャッシュ制御部２０５は、解放されるべきキャッシュ領域のサイズを決定する（ステップＳ６１）。次にキャッシュ制御部２０５は、決定されたサイズを補充するのに用いられるべき（つまり、キャッシュ領域からデータ領域に変更されるべき）ページ（キャッシュページ）をリストアップする（ステップＳ６２）。すなわちキャッシュ制御部２０５は、高速ストレージ１１のキャッシュ領域に含まれるページのうち、アクセス回数が下位のＮページを、物理ボリューム管理テーブル１３５ａからリストアップする。ここでは、アクセス回数の昇順にＮページがリストアップされる。Ｎページのサイズは、ステップＳ６１で決定されたサイズに等しい。
【０１１０】
次にキャッシュ制御部２０５は、リストアップされたページの集合から１つのページ（キャッシュ）ページＰｒを選択する（ステップＳ６３）。次にキャッシュ制御部２０５は、ページＰｒ（つまり高速ストレージ１１内のページＰｒ）のキャッシュデータと複製関係のある実データが低速ストレージ１２に存在するかを判定する（ステップＳ６４）。キャッシュ制御部２０５は、この判定を、ページＰｒに対応する物理ボリューム管理テーブル１３５ａ内のエントリの複製先が“Ｎ／Ａ”以外であるかに基づいて実行する。
【０１１１】
もし、複製先が“Ｎ／Ａ”であるならば、キャッシュ制御部２０５は、ページＰｒのキャッシュデータと複製関係のある実データが低速ストレージ１２に存在しないと判定する（ステップＳ６４のＮｏ）。このように、ページＰｒのキャッシュデータと複製関係のある実データが存在しないということは、当該キャッシュデータがダーティデータであることを示す。つまり、キャッシュデータがダーティデータであるとは、当該キャッシュデータが、実データとして低速ストレージ１２に反映されていないことを指す。
【０１１２】
ステップＳ６４の判定がＮｏの場合、キャッシュ制御部２０５は階層管理部２０４に制御を渡す。すると階層管理部２０４は、キャッシュ制御部２０５の指示に基づいて、ページＰｒのデータを、低速ストレージ１２の例えばページＰｐｃにコピー（移動）する（ステップＳ６５）。ステップＳ６５において階層管理部２０４は、ページＰｐｃへのデータコピー（移動）に対応するように、前述のページＰｐｄへのデータコピーの場合と同様に物理ボリューム管理テーブル１３５ａ及び論理ボリューム管理テーブル１３５ｂを更新する。そして階層管理部２０４は、キャッシュ制御部２０５に制御を返す。するとキャッシュ制御部２０５は、ステップＳ６７に進む。
【０１１３】
これに対し、複製先が“Ｎ／Ａ”以外であるならば、キャッシュ制御部２０５は、ページＰｒのキャッシュデータと複製関係のある実データが低速ストレージ１２に存在すると判定する（ステップＳ６４のＹｅｓ）。このように、ページＰｒのキャッシュデータと複製関係のある実データが存在するということは、当該キャッシュデータがダーティデータでないことを示す。ここでは、ページＰｒのキャッシュデータと複製関係のある実データが低速ストレージ１２のページＰｐｃに存在するものとする。この場合、ページＰｒのキャッシュデータの低速ストレージ１２へのデータコピー（いわゆるキャッシュ同期化）が不要であることに注意されるべきである。
【０１１４】
そこでキャッシュ制御部２０５は、ページＰｒのキャッシュデータの低速ストレージ１２へのデータコピーを抑止する。そして、キャッシュ制御部２０５は、ステップ６４で判定された複製関係を、前述のＩ／Ｏ処理におけるステップＳ４２と同様の方法で解消し（ステップＳ６６）、しかる後にステップＳ６７に進む。
【０１１５】
ステップＳ６７においてキャッシュ制御部２０５は、ページＰｒを高速ストレージ１１のキャッシュ領域から削除（解放）して、当該ページＰｒをデータ領域に変更する。具体的には、キャッシュ制御部２０５は、ページＰｒに対応する物理ボリューム管理テーブル１３５ａ内のエントリのキャッシュフラグを“Ｙｅｓ”から“Ｎｏ”に変更する。またキャッシュ制御部２０５は、ページＰｒに対応する物理ボリューム管理テーブル１３５ａ内のエントリの、論理ボリュームＩＤ、ＬＢＡ、複製先：：複製元、及びアクセス特性を、すべて“Ｎ／Ａ”に変更する。これにより、ページＰｑは、キャッシュ領域から解放されて、データ領域として利用可能な空き領域に変更される。キャッシュ制御部２０５は、上述のステップＳ６３乃至Ｓ６７を、ステップＳ６２でリストアップされたＮページについて階層管理部２０４と協同して繰り返す（ステップＳ６８）。
【０１１６】
このように本実施形態によれば、キャッシュ制御部２０５は、アクセス回数が下位のキャッシュ領域（ページ）を優先的に解放する（ステップＳ６２乃至Ｓ６７）。つまり本実施形態は、上位階層に移動される可能性が低いデータ（つまり、格納先が上位階層に変更されるべきでないデータ）が格納されたキャッシュ領域を優先的に解放する。これにより、下位階層から上位階層へのデータ移動が抑制される。
【０１１７】
また本実施形態によれば、解放されるべきキャッシュ領域（ページ）に、ダーティでないキャッシュデータ（つまり、非ダーティデータ）が格納されている場合（ステップＳ６４のＹｅｓ）、キャッシュ制御部２０５は、当該キャッシュデータの下位階層へのコピー（移動）を抑止する。具体的には、解放されるべきキャッシュ領域内のキャッシュデータと複製関係のある実データが低速ストレージ１２に存在する場合、キャッシュ制御部２０５は、キャッシュ領域を解放して当該キャッシュ領域をデータ領域に変更する前に（ステップＳ６７）、ステップＳ６５に代えてステップＳ６６を実行する。つまりキャッシュ制御部２０５は、解放されるべきキャッシュ領域内の非ダーティデータを下位階層へ移動する代わりに、当該非ダーティデータの複製関係を解消する（ステップＳ６６）。これにより、キャッシュ領域をデータ領域に変更する際の上位階層から下位階層へのデータ移動を抑制できる。したがって、例えば、非ダーティデータが格納された第１のキャッシュ領域へのアクセスの回数とダーティデータが格納された第２のキャッシュ領域へのアクセスの回数とが同一の場合、キャッシュ制御部２０５は第１のキャッシュ領域を優先的に解放すると良い。
【０１１８】
次に、本実施形態で適用されるキャッシュ同期化処理について、図１２を参照して説明する。図１２はキャッシュ同期化処理の典型的な手順を示すフローチャートである。キャッシュ同期化処理は、キャッシュ制御部２０５がキャッシュ同期化要求を受信した場合に、当該キャッシュ制御部２０５によって実行される。キャッシュ同期化要求は、キャッシュ領域にダーティデータ（つまり、ストレージに未反映のキャッシュデータ）が格納されている場合に、当該ダーティデータを、当該ダーティデータに対応する実データが格納されている領域にライト（コピーまたは反映）することをキャッシュ制御部２０５に指示するコマンド（つまり、ライト要求）である。キャッシュ同期化要求は、例えばオペレーティングシステム（ＯＳ）シャットダウンのようなイベントが発生した場合に、当該ＯＳによって発行される。また、ダーティデータが格納されているキャッシュ領域を解放するために、当該キャッシュ領域から当該ダーティデータを追い出す必要がある場合にも、キャッシュ同期化要求は発行される。さらに、ストレージコントローラ１３において予め設定されたスケジュールで、キャッシュ同期化要求が発行されることもある。
【０１１９】
今、キャッシュ制御部２０５が、キャッシュ同期化要求を受信したものとする。この場合、キャッシュ制御部２０５は物理ボリューム管理テーブル１３５ａに基づいて、キャッシュとして利用されている高速ストレージ１１内のダーティなページ（キャッシュページ）を選択する（ステップＳ７１）。ダーティなキャッシュページとは、ストレージ（ここでは低速ストレージ１２）に未反映のキャッシュデータ（つまり、ダーティデータ）が格納されているページを指す。
【０１２０】
次にキャッシュ制御部２０５は、選択されたキャッシュページに格納されているキャッシュデータ（つまり、ダーティデータ）が低速ストレージ１２と同期化されるべきかを判定する（ステップＳ７２）。キャッシュデータが低速ストレージ１２と同期化されるとは、当該キャッシュデータが実データとして低速ストレージ１２にコピーされることを指す。この判定は、選択されたキャッシュページのデータが低速ストレージ１２に置かれる（格納される）ことが好ましいかに基づいて実行される。具体的にはキャッシュ制御部２０５は、選択されたキャッシュページのアクセス回数が、高速ストレージ１１内のすべてのダーティなキャッシュページのうちの下位のＦ位内に入っているかに基づいて、判定ステップＳ７２を実行する。なお、選択されたキャッシュページのアクセス回数が、閾値を下回るかに基づいて、キャッシュ制御部２０５が判定ステップＳ７２を実行しても良い。
【０１２１】
ステップＳ７２の判定がＹｅｓの場合、キャッシュ制御部２０５は、選択されたキャッシュページのデータ（キャッシュデータ）を、低速ストレージ１２に実データとしてコピーする（ステップＳ７３）。より詳細に述べるならば、キャッシュ制御部２０５は、当該データに対応し、かつ低速ストレージ１２に格納されている旧実データを、選択されたキャッシュページのデータに置き換える。これにより、選択されたキャッシュページのキャッシュデータは、低速ストレージ１２と同期化される。
【０１２２】
本実施形態によれば、ステップＳ７３で高速ストレージ１１（上位階層）から低速ストレージ１２（下位階層）にデータが移動されるキャッシュページは、アクセス回数が下位のダーティキャッシュページに限られる。つまり本実施形態において、データが移動されるキャッシュページは、キャッシュデータが下位階層に置かれることが好ましいダーティキャッシュページに限られる。したがって本実施形態によれば、下位階層に移動されたデータが再び上位階層に移動されるのを抑制できる。
【０１２３】
ここで、キャッシュデータが上位階層に置かれることが好ましいダーティキャッシュページについても、当該キャッシュデータが本実施形態と異なって上位階層から下位階層に移動されるものとする。この場合、下位階層に移動されたデータが再び上位階層に移動されことになる。つまり、無駄なデータ移動の往復が発生する。本実施形態は、このような無駄なデータ移動の往復を防止できる。
【０１２４】
一方、ステップＳ７２の判定がＮｏの場合、キャッシュ制御部２０５は、選択されたキャッシュページ（キャッシュ領域）を実ページ（データ領域）に変更するための領域置換処理を実行する（ステップＳ７４）。このキャッシュ同期化処理における領域置換処理（ステップＳ７４）は、階層変更処理における領域置換処理（ステップＳ９）と同様に実行される。
【０１２５】
本実施形態においてキャッシュ制御部２０５は、アクセス回数が多いために高速ストレージ１１に置かれるべきであると判定されたダーティキャッシュページのキャッシュデータを、同期化されるべきでないデータとして分類する（ステップＳ７２のＮｏ）。この場合、キャッシュ制御部２０５は上述のように、キャッシュ同期化に代えて、選択されたダーティキャッシュページ（キャッシュ領域）の実ページ（データ領域）への領域変換を行う（ステップＳ７４）。これにより、ダーティキャッシュページ（キャッシュ領域）から変更された実ページの内容（実データ）は、当該ダーティキャッシュページの内容（キャッシュデータ）に一致する。但し、実ページに対応するキャッシュページ自体は存在しない。
【０１２６】
よって本実施形態は、選択されたダーティキャッシュページのデータが高速ストレージ１１に置かれるべきであると判定された場合（ステップＳ７２のＮｏ）、ステップＳ７４を実行することにより、階層間のデータ移動（より詳細には、高速ストレージ１１内のキャッシュページから低速ストレージ１２内の実ページへのデータ移動）を抑制しながら、階層間のデータ移動を伴うキャッシュ同期化と同等の効果を得ることができる。
【０１２７】
以上説明した少なくとも１つの実施形態によれば、階層間のデータ移動を抑制しつつも入出力性能を維持することができる階層化ストレージシステム、ストレージコントローラ、及び階層間のデータ移動を代替する方法を提供できる。
【０１２８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【要約】
実施形態によれば、階層化ストレージシステムのストレージコントローラが提供される。階層化ストレージシステムは、第１の階層の第１の物理ボリュームを含む第１のストレージ装置と、第１の階層よりも低い第２の階層の第２の物理ボリュームを含む第２のストレージ装置とを具備する。ストレージコントローラのキャッシュ制御部は、前記第１の物理ボリューム内の記憶領域を、データ領域の集合とキャッシュ領域の集合とに分割する。前記キャッシュ制御部は、前記第２の物理ボリュームから前記第１の物理ボリュームに移動されるべき第１のデータが前記第１の物理ボリュームの第１のキャッシュ領域にも格納されている場合に、前記第１のキャッシュ領域を第１のデータ領域に変更する。【図１】
0005707540.tif 000002
【図２】
0005707540.tif 000003
【図３】
0005707540.tif 000004
【図４】
0005707540.tif 000005
【図５】
0005707540.tif 000006
【図６】
0005707540.tif 000007
【図７】
0005707540.tif 000008
【図８】
0005707540.tif 000009
【図９】
0005707540.tif 000010
【図１０】
0005707540.tif 000011
【図１１】
0005707540.tif 000012
【図１２】
0005707540.tif 000013