(57)【特許請求の範囲】
【請求項１】
異なる属性を有する複数のストレージデバイスであって、当該ストレージデバイスのストレージ領域がプールを提供する、複数のストレージデバイスと、
前記プールと関連する少なくとも２つの仮想ボリュームをコンピュータに提供するプロセッサと、を有し、
前記プールにおけるプール領域は複数の階層で構成され、それぞれの階層は異なる属性を有し、前記少なくとも２つの仮想ボリュームのそれぞれには、使用される少なくとも１つの階層の組み合わせであるＬＡＮＥが設定され、
前記プロセッサは、
前記プール領域に格納されるデータの再配置に伴って、前記仮想ボリュームに割り当てられた前記プール領域に格納されるデータの再割り当てを実行し、
前記複数の階層の各階層について、
設定される前記ＬＡＮＥ内の最下位の階層が処理対象の階層である前記仮想ボリュームのデータであって、当該処理対象の階層より下の階層に記憶されているデータを、前記処理対象の階層のプール領域に再配置する第１の処理と、次に、前記ＬＡＮＥに前記処理対象の階層を含む他の仮想ボリュームのデータであって、前記処理対象の階層に対して設定された範囲内のアクセス頻度を有するデータを前記処理対象の階層のプール領域に再配置する第２の処理と、を実行するように構成されていることを特徴とするストレージシステム。
【請求項２】
請求項１において、
前記少なくとも２つの仮想ボリュームのそれぞれにおいて、設定される前記少なくとも１つの階層の組み合わせは異なっていることを特徴とするストレージシステム。
【請求項３】
請求項１において、
前記範囲は、前記アクセス頻度の連続的な範囲として設定されていることを特徴とするストレージシステム。
【請求項４】
請求項１において、
前記プロセッサは、前記データが格納されるプールについての管理情報が再配置の実行を指示する場合、前記複数の階層間で前記格納されたデータを再配置することを特徴とするストレージシステム。
【請求項５】
請求項１において、
前記仮想ボリュームに割り当てられる、前記仮想ボリュームに設定される前記ＬＡＮＥ内の最下位の階層におけるプール領域の容量が十分ではない場合、前記プロセッサは、前記最下位の階層内のプール領域であって、他の仮想ボリュームに割り当てられたプール領域の容量を収集することを特徴とするストレージシステム。
【請求項６】
請求項１において、
前記範囲は、前記プール内の仮想ページのアクセス頻度分布に従って、当該仮想ページの分配を分配することによって、設定されることを特徴とするストレージシステム。
【請求項７】
ストレージシステムの制御方法であって、
前記ストレージシステムは、異なる属性を有する複数のストレージデバイスであって、当該ストレージデバイスのストレージ領域がプールを提供する、複数のストレージデバイスと、前記プールと関連する少なくとも２つの仮想ボリュームをコンピュータに提供するプロセッサと、を有し、
前記プールにおけるプール領域は複数の階層で構成され、それぞれの階層は異なる属性を有し、前記少なくとも２つの仮想ボリュームのそれぞれには、使用される少なくとも１つの階層の組み合わせであるＬＡＮＥが設定され、
前記制御方法は、
前記プロセッサが、前記プール領域に格納されるデータの再配置に伴って、前記仮想ボリュームに割り当てられた前記プール領域に格納されるデータの再割り当てを実行するステップと、
前記プロセッサが、前記複数の階層の１つを処理対象とし、設定される前記ＬＡＮＥ内の最下位の階層が処理対象の階層である前記仮想ボリュームのデータであって、当該処理対象の階層より下の階層に記憶されているデータを、前記処理対象の階層のプール領域に再配置する第１の処理を実行するステップと、
前記プロセッサが、前記ＬＡＮＥに前記処理対象の階層を含む他の仮想ボリュームのデータであって、前記処理対象の階層に対して設定された範囲内のアクセス頻度を有するデータを前記処理対象の階層のプール領域に再配置する第２の処理を実行するステップと、
前記プロセッサが、前記複数の階層の各階層について、前記第１及び第２の処理を繰り返すステップと、
を有することを特徴とする制御方法。
【請求項８】
請求項７において、
前記少なくとも２つの仮想ボリュームのそれぞれにおいて、設定される前記少なくとも１つの階層の組み合わせは異なっていることを特徴とする制御方法。
【請求項９】
請求項７において、
前記範囲は、前記アクセス頻度の連続的な範囲として設定されていることを特徴とする制御方法。
【請求項１０】
請求項７において、
前記プロセッサが、前記データが格納されるプールについての再配置の実行の指示に応答して、前記複数の階層間で前記格納されたデータを再配置するステップを有することを特徴とする制御方法。
【請求項１１】
請求項７において、
さらに、前記プロセッサが、前記仮想ボリュームに割り当てる、前記仮想ボリュームに設定される前記ＬＡＮＥ内の最下位の階層におけるプール領域の容量が十分ではないことを検知し、前記最下位の階層内のプール領域であって、他の仮想ボリュームに割り当てられたプール領域の容量を収集するステップを有することを特徴とする制御方法。
【請求項１２】
請求項７において、
前記範囲は、前記プール内の仮想ページのアクセス頻度分布に従って、当該仮想ページの分配を分配することによって、設定されることを特徴とする制御方法。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム、及びその管理方法、並びにプログラムに関し、例えば、ホスト装置に対して動的に記憶容量を割り当てるストレージシステムの制御に関するものである。
【背景技術】
【０００２】
従来から、ホスト装置に対して大規模なデータストレージサービスを提供する計算機システムが存在する。このシステムは、ホスト装置と、ホスト装置が接続するストレージ装置（ストレージシステムとも言う）と、ストレージ装置の管理装置と、を備えたものとして知られている。
【０００３】
ストレージ装置は、複数のハードディスクをＲＡＩＤ（Redundant Array of Independent/Inexpensive Disks）方式で管理する。そして、多数のハードディスクが有する物理的な記憶領域を論理化し、これを論理ボリュームとしてホスト装置に提供する。ホスト装置は論理ボリュームにアクセスしてデータのリード・ライトを要求する。
【０００４】
このような論理化技術の一つにシン・プロビジョニング（Thin Provisioning）と称されるものがある。シン・プロビジョニングでは、物理的な記憶領域を有さず、記憶容量が仮想化された論理ボリュームが、ホスト装置に対して設定される。この論理ボリュームは仮想ボリュームと呼ばれており、ホスト装置が仮想的ボリュームにライトアクセスにすることに合わせて、ストレージ装置は、仮想ボリュームに対して記憶領域を順次割り当てていく。したがって、この技術は、論理ボリュームに対して当初から大容量な記憶領域を割り当てる方式に比べて、ストレージ資源を有効に活用できる点で効果的である。
【０００５】
シン・プロビジョニングに関しては、例えば、特許文献１乃至４に記載されている。このシン・プロビジョニングにおいて、仮想ボリュームに記憶領域を提供するための手段は、仮想ボリュームにホスト装置からライトアクセスがあると、仮想ボリュームのアドレスに、実の記憶領域を持つ容量プールから、記憶容量を割り当て、ライトデータを保存するようになっている。ここで、「容量プール」（単に、「プール」とも呼ばれる。）は、例えば、実容量を持つ論理グループの複数を仮想ボリュームへのライト用として纏めたものとして定義、設定されるものであって、プールに属する複数の論理ボリュームはそれぞれプールボリュームと呼ばれている。
【０００６】
また、特許文献５は、保存したデータに対するアクセス頻度が高いか低いかを判定し、アクセス頻度が高ければ、プールボリュームのメディアの物理的特性情報（メディアの種類やディスクの回転数など）により、高速処理に適したメディアからなるプールボリュームへ、プール内で、データを移動させる技術を開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許６８５７０５９号公報
【特許文献２】特開２００３−０１５９１５号公報
【特許文献３】特開２００６−３３８３４１号公報
【特許文献４】特開２００８−２３４１５８号公報
【特許文献５】米国公開ＵＳ２００５／０５５６０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
既述の従来技術においては、アクセス頻度が高ければ、プールボリュームのメディアの物理的特性情報により、高速処理に適したメディアの記憶領域へ再配置する方法が開示されている。
【０００９】
しかしながら、アクセス頻度が低くとも高性能のメディアにデータを置きたい、という場合がある。従来技術においては、この場合、最初に高性能メディアにデータを格納しても、アクセス頻度を監視した結果、低性能のメディアにデータが再配置されてしまうという問題がある。
【００１０】
また、アプリケーションが必要とする性能要件（レスポンスタイムやI/O速度等）によって、仮想ボリュームに割り当てるメディアを分けたい場合がある。この場合、従来技術によれば、メディア毎に分割したプールを構成して、アプリケーション毎に使用するメディアを分けるしかなかった。ところが、プールを分割すると、メディア全体では容量に余裕があったとしても使用容量に偏りが生じて仮想ボリュームを割り当てられないという状況になる場合があり、容量効率が悪くなるという問題がある。
【００１１】
また、従来技術においては、アプリケーションの性能要件が変更し、仮想ボリュームが使用するメディアを変更する場合、仮想ボリュームと使用プールのマッピングを再設定しなくてならない問題がある。
【００１２】
さらに、従来技術によれば、複数の仮想ボリュームでシングルプールを使う場合、どの仮想ボリュームもプール内にある全メディアの記憶容量へ割り当てることができる。このため、性能要件の高い仮想ボリュームも、性能要件の低い仮想ボリュームも同じようにプールボリュームの高速処理に適したメディアの記憶領域を割り当ててしまうという問題がある。高性能なメディアの領域は通常コストも高く、容量が限られているため、本当に高性能の要件を持つ仮想ボリュームにプールの領域を割り当てたいというニーズがある。
【００１３】
本発明はこのような状況に鑑みてなされたものであり、メディアの容量効率を良くしつつ、適正コストでユーザの使用環境に合った、仮想ボリュームへのプール領域の割り当てを実現するための技術を提供するものである。
【課題を解決するための手段】
【００１４】
上記課題を解決するために、本発明では、ストレージシステム（ストレージ装置）に設定される仮想ボリューム毎に使用するプール内のメディアの階層の組み合わせ（各プールで使用できる階層の範囲）を選択或いは制限することにより、プールを構成する。ストレージシステムは、ホストからの入出力要求を受ける仮想ボリュームに、プールのどの階層の記憶デバイスから記憶領域に割り当てるかを示す情報を管理している。
【００１５】
即ち、本発明によるストレージシステムでは、属性の異なる複数の記憶デバイスから提供される複数の記憶領域を含む少なくとも１つのプールが設けられている。そして、プロセッサは、プール内の少なくとも１つの記憶領域が割り当てられた仮想ボリュームに対する上位計算機からの書き込み要求に応答して、プールに含まれる記憶領域を確保して、当該確保された記憶領域に対象データを格納する。また、属性が異なる複数の記憶デバイスの記憶領域は、複数の階層として構成されている。プロセッサは、この複数の階層を認識している。さらに、プロセッサは、入力される階層設定指示に応答して、記憶領域を割り当てるために用いる１つ以上の階層を仮想ボリュームに対して設定する。
【発明の効果】
【００１６】
本発明によれば、メディアの容量効率を良くしつつ、適正コストでユーザの使用環境に合った、仮想ボリュームへのプール領域の割り当てることができるようになる。
【００１７】
なお、上述した以外の課題、構成及び効果は、以下の本発明を実施するための形態および添付図面によって明らかになるものである。
【図面の簡単な説明】
【００１８】
【図１】本発明に係わる計算機システムの基本構成を示す図である。
【図２】本発明に適用可能な計算機システムの変形例１の構成を示す図である。
【図３】本発明に適用可能な計算機システムの変形例２の構成を示す図である。
【図４】図２に示すストレージ装置が複数のモジュール（クラスタ）を有する構成を示す図である。
【図５】ストレージ装置が行う記憶領域の動的割り当ての動作を示す機能ブロック図である。
【図６】プールボリュームの供給元であるストレージデバイスの特性に従って階層に分けて管理するプールボリュームと仮想ボリュームとの対応関係を説明するための図である。
【図７】ストレージ装置のメモリ内部のソフトウェア構成を示す図である。
【図８】メディア管理情報テーブルの構成例を示す図である。
【図９】階層管理情報テーブルの構成例（１）を示す図である。
【図１０】階層管理情報テーブルの構成例（２）を示す図である。
【図１１】ＬＡＮＥ管理情報テーブルの構成例を示す図である。
【図１２Ａ】ＬＡＮＥの組み合わせ例（１）を示す図である。
【図１２Ｂ】ＬＡＮＥの組み合わせ例（２）を示す図である。
【図１３】ＬＤＥＶ管理情報テーブルの構成例を示す図である。
【図１４】プール管理情報テーブルの構成例を示す図である。
【図１５】階層化されたプールの階層管理のための階層管理情報テーブルの構成例を示す図である。
【図１６】ＶＶＯＬ−ＤＩＲ及びＰＳＣＢを説明するためのブロック図である。
【図１７】プール作成から仮想ボリューム割当てまでの全体処理の概要を説明するためのフローチャートである。
【図１８】プール作成処理を説明するためのフローチャート（１）である。
【図１９】プール作成処理を説明するためのフローチャート（２）である。
【図２０】ストレージシステムに対してリード要求がなされたときの処理（リード処理）を説明するためのフローチャートである。
【図２１】ストレージシステムに対してライト要求がなされたときの処理（ライト処理）を説明するためのフローチャートである。
【図２２】データ再配置の全体概要を示す図である。
【図２３】モニタ情報テーブルの構成例を示す図である。
【図２４】Ｔｉｅｒレンジ図の例を示す図である。
【図２５】モニタ情報に基づいて再配置の有無を決定する処理例を説明するための図である。
【図２６】データ再配置処理を説明するためのフローチャートである。
【図２７】最高性能の階層から構成される最高性能のＬＡＮＥ（例えば、ＬＡＮＥ＃０）の再配置処理（Ｓ２６０２）の詳細を説明するためのフローチャートである。
【図２８】他のＬＡＮＥ（例えば、ＬＡＮＥ＃１乃至５）の再配置処理（Ｓ２６０６乃至Ｓ２６１４）の詳細を説明するためのフローチャートである。
【図２９】マイグレーション方法３における最高性能ＬＡＮＥの再配置処理を説明するためのフローチャートである。
【図３０Ａ】マイグレーションの具体例を説明するための図である。
【図３０Ｂ】マイグレーションの具体例を説明するための図である。
【図３０Ｃ】マイグレーションの具体例を説明するための図である。
【発明を実施するための形態】
【００１９】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００２０】
なお、以後の説明では「テーブル」という表現にて本発明の情報を説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、ＤＢ、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「ＤＢ」、「キュー」等については、単に「情報」と呼ぶこともできる。
【００２１】
また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
【００２２】
以後の説明では「プログラム」を主語として説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
【００２３】
＜計算機システムの構成＞
（基本構成）
図１は、本発明に係わる計算機システムの基本構成を示すハードウエアブロック図である。計算機システムは、少なくとも１つのホスト計算機１０と、少なくとも１つの管理装置（管理計算機）２０と、これらが接続される少なくとも１つのストレージ装置３０と、を有している。ストレージ装置３０は、ストレージシステム、あるいはストレージサブシステムということもできる。
【００２４】
ホスト計算機１０は、ストレージ装置３０の論理的な記憶資源にアクセスする。管理装置２０は、ストレージ装置３０の記憶領域の構成を管理する。ストレージ装置３０は、物理デバイス３４に設定された記憶領域にデータを格納する。
【００２５】
ホスト計算機１０は、入力デバイス１１０、出力デバイス１２０、ＣＰＵ１３０、メモリ１４０、ディスクアダプタ１５０、ネットワークアダプタ１６０、及び、ディスクドライブ１７０を備える。
【００２６】
入力デバイス１１０は、ホスト計算機１０を操作する管理者等から入力を受け付ける手段であり、例えば、キーボードやマウス等で構成される。出力デバイス１２０は、ホスト計算機１０の状態や設定項目を表示する手段であり、例えばディスプレイ装置やプリンタ等で構成される。
【００２７】
ＣＰＵ１３０（コントローラ、プロセッサ）は、ディスクドライブ１７０に格納されているプログラムをメモリ１４０に読み込んで、そのプログラムに規定された処理を実行する。メモリ１４０は、例えば、ＲＡＭ等で構成され、プログラムやデータ等を格納する。
【００２８】
ディスクアダプタ１５０は、ストレージ装置３０とストレージエリアネットワーク５０を介して接続し、ストレージ装置３０にデータを送受信する。ストレージエリアネットワーク５０は、データ転送に適したプロトコル（例えば、ＦｉｂｒｅＣｈａｎｎｅｌ）によって、データ転送を実現する。
【００２９】
ネットワークアダプタ１６０は、管理装置２０又はストレージ装置３０と管理ネットワーク４０を介してデータを送受信する。管理ネットワーク４０は、例えばEthernet（登録商標）で構成される。ディスクドライブ１７０は、例えばハードディスク装置で構成され、データやプログラムを格納する。
【００３０】
管理装置２０は、入力デバイス２１０、出力デバイス２２０、ＣＰＵ２３０、メモリ２４０、ネットワークアダプタ２５０、及び、ディスクドライブ２６０を有する。
【００３１】
入力デバイス２１０は、管理装置２０を操作する管理者等の入力を受け付ける手段で、例えばキーボードで構成される。出力デバイス２２０は、管理装置２０の状態や設定項目を表示する手段で、例えば、ディスプレイ装置で構成される。
【００３２】
ＣＰＵ２３０は、ディスクドライブ２６０に格納されている管理プログラムをメモリ２４０に読み込んで、そのプログラムに基づいて、ストレージ装置３０に対する管理処理を実行する。メモリ２４０は、例えばＲＡＭ等で構成され、プログラムやデータ等を格納する。
【００３３】
ネットワークアダプタ２５０は、ホスト計算機１０又はストレージ装置３０と管理ネットワーク４０を介してデータを送受信する。ディスクドライブ２６０は、例えばハードディスク装置で構成され、データやプログラムを格納する。
【００３４】
ストレージ装置３０は、コントローラ３１、少なくとも１つのストレージキャッシュメモリ３２、少なくとも１つの共有メモリ３３、物理デバイス（ＰＤＥＶ）３４、電源スイッチ３５、及び、少なくとも１つの電源３６を有する。コントローラ３１は、ＰＤＥＶ３４に構成された記憶領域へのデータの格納を制御する。ストレージキャッシュメモリ３２は、ＰＤＥＶ３４に読み書きされるデータを一時的に格納する。共有メモリ３３は、コントローラ３１やＰＤＥＶ３４の構成情報を格納する。ＰＤＥＶ３４は、複数のディスク装置によって構成される。電源３６は、ストレージ装置３０の各部に電力を供給する。電源スイッチ３５は、電源３６からの電力の供給をＯＮ／ＯＦＦするスイッチである。ディスク装置（記憶デバイス）は、例えばハードディスクドライブで構成され、主としてユーザデータを格納する。記憶デバイスとしては、フラッシュメモリなどの半導体メモリからなるドライブでもよい。
【００３５】
コントローラ３１は、少なくとも、プロセッサ３６０を有するものであり、この実施形態では、さらに、ホストアダプタ３１０、ネットワークアダプタ３２０、不揮発性メモリ３３０、電源制御部３４０、メモリ３５０、ストレージアダプタ３７０、及び、共有メモリアダプタ３８０を有している。
【００３６】
ホストアダプタ３１０は、ストレージネットワーク５０を介してホスト計算機１０との間でデータを送受信する。ネットワークアダプタ３２０は、管理ネットワーク４０を介してホスト計算機１０、又は、管理装置２０との間でシステム管理上必要なデータ（管理情報）を送受信する。
【００３７】
不揮発性メモリ３３０は、ハードディスクやフラッシュメモリで構成され、コントローラ３１で動作するプログラムや構成情報等を格納する。電源制御部３４０は、電源３６から供給される電力を制御する。
【００３８】
メモリ３５０は、例えばＲＡＭ等で構成され、プログラムやデータ等を格納する。プロセッサ３６０は、不揮発性メモリ３３０に格納されているプログラムをメモリ３５０に読み込んで、そのプログラムに規定された処理を実行する。
ストレージアダプタ３７０は、ＰＤＥＶ３４、及び、ストレージキャッシュメモリ３２との間でデータを送受信する。共有メモリアダプタ３８０は、共有メモリ３３との間でデータを送受信する。
【００３９】
（変形例１）
図２は、図１の計算機システムの変形例の構成を示すハードウエアブロック図である。当該計算機システムは、１つ以上のホスト計算機１０、管理ホスト計算機２０、第１のストレージ装置１２５、及び、第２のストレージ装置１６１を有している。
【００４０】
第１のストレージ装置１２５は、第１のネットワーク１２１を介してホスト計算機１０に接続される。第２のストレージ装置１６１は、第２のネットワーク１２３を介して第１のストレージシステム３０Ａに接続されている。１つ以上のホスト計算機１０、管理ホスト計算機２０、第１のストレージ装置１２５、及び、第２のストレージ装置１６１は、第３のネットワーク１０８を介して相互に接続されている。
【００４１】
第１のネットワーク１２１、第２のネットワーク１２３、及び、第３のネットワーク１０８は、いかなる種類のネットワークであってもよい。例えば、第１のネットワーク１２１及び第２のネットワーク１２３としてＳＡＮを用いることができ、第３のネットワーク１０８としてＬＡＮを用いることができる。
【００４２】
第１のストレージ装置１２５は、コントローラと記憶デバイス群３４とを備える。コントローラは、例えば、複数のフロントエンドインターフェース１２７と、複数のバックエンドインターフェース１３７と、第１の内部ネットワーク１５６と、１つ以上のキャッシュメモリ３２と、１つ以上の制御メモリ３５０と、１つ以上の制御プロセッサ３６０とを有する。
【００４３】
フロントエンドインターフェース１２７は、第１のストレージ装置１２５にネットワーク１２１を介して接続されたホスト計算機１０又は第２のストレージ装置１６１と通信するためのインターフェース回路である。従って、第１のストレージ装置１２５は、少なくとも２つのフロントエンドインターフェース１２７を有し、それらのうち１つは第１のネットワーク１２１に接続され、別の１つは第２のネットワーク１２３に接続される。
【００４４】
フロントエンドインターフェース１２７は、例えば、第１のネットワーク１２１又は第２のネットワーク１２３に接続されるポート１２９と、メモリ１３１と、ローカルルータ（以下、「ＬＲ」と略記する。）１３３と、を備える。ＬＲ１３３に、ポート１２９及びメモリ１３１が接続される。
【００４５】
ＬＲ１３３は、ポート１２９を介して受けたデータを任意の制御プロセッサ３６０で処理するために振り分ける。具体的には、例えば、制御プロセッサ３６０が、或るアドレスを指定するＩ／Ｏコマンドをその制御プロセッサ３６０に実行させるようにＬＲ１３３を設定する。その設定に従って、ＬＲ１３３が、Ｉ／Ｏコマンド及びデータを振り分ける。
【００４６】
バックエンドインターフェース１３７も複数設けられている。バックエンドインターフェース１３７は、ＰＤＥＶ３４と通信するためのインターフェース回路である。バックエンドインターフェース１３７は、例えば、ＰＤＥＶ３４に接続されるディスクインターフェース１４１と、メモリ１３５と、ＬＲ１３９と、を備える。ＬＲ１３９に、ディスクインターフェース１４１及びメモリ１３５が接続される。
【００４７】
第１の内部ネットワーク１５６は、例えば、スイッチ、或いはバスで構成される。第１の内部ネットワーク１５６に、複数のフロントエンドインターフェース１２７、複数のバックエンドインターフェース１３７、１つ以上のキャッシュメモリ３２、１つ以上の制御メモリ３５０及び１つ以上の制御プロセッサ１４３が接続されている。これらの要素間の通信は、第１の内部ネットワーク１５６を介して行われる。
【００４８】
コントローラの構成要素である、フロントエンドインターフェース１２７、バックエンドインターフェース１３７、キャッシュメモリ３２、制御メモリ３５０、及び、制御プロセッサ３６０には、第２の内部ネットワーク（例えば、ＬＡＮ）１５５が接続され、その第２の内部ネットワーク１５５に、保守管理端末１５３が接続される。
【００４９】
保守管理端末１５３は、第３のネットワーク１０８にも接続されており、第１のストレージ装置１２５を保守又は管理する計算機である。第１のストレージ装置１２５の保守員は、例えば、保守管理端末１５３（又は、その保守管理端末１５３と通信可能な管理装置２０）を操作して、制御メモリ３５０に記憶される種々の情報を定義することができる。
【００５０】
第２のストレージ装置１６１は、コントローラ１６５、及び、ＰＤＥＶ１６３を有している。コントローラ１６５は、例えば、ネットワークアダプタ１６２と、ホストアダプタ１６４と、キャッシュメモリ１７２と、制御メモリ１７１と、プロセッサ１６７と、ストレージアダプタ１６９と、を有する。
【００５１】
ネットワークアダプタ１６２は、第３のネットワーク１０８に接続され、管理計算機２０と通信するインターフェースである。第３のネットワークを介して、管理計算機２０とホスト計算機１０との間、及び管理計算機２０と第２のストレージ装置１６１との間で、システム管理に必要な管理情報の送受信が行われる。ホストアダプタ１６４は、第２のネットワーク１２３に接続され、第１のストレージ装置１２５と通信するインターフェースである。ホストアダプタ１６４は、例えば、第１のストレージ装置１２５のフロントエンドインターフェース１２７と同様のものであってもよい。
【００５２】
制御メモリ１７１は、種々のコンピュータプログラム及び情報を記憶するメモリである。キャッシュメモリ１７２は、第１のストレージ装置１２５からのＩ／Ｏコマンドに従って読み出される又は書き込まれるデータを一時記憶するメモリである。
【００５３】
プロセッサ１６７は、制御メモリ１７１に記憶されている種々のコンピュータプログラムを実行する。少なくとも、プロセッサ１６７は、第１のストレージ装置１２５からのＩ／Ｏコマンドに従って、キャッシュメモリ１７２及びＰＤＥＶ１６３に対するデータの書き込み及び読み出しを制御する。
【００５４】
ＰＤＥＶ１６３は、物理記憶デバイスであり、例えば、第１のストレージ装置のＰＤＥＶ３４と同様のものであってもよい。あるいは、ＰＤＥＶ１６３は、テープ記憶媒体であってもよい。
【００５５】
第１のストレージ装置１２５は、いわゆる外部接続機能を備える。第２のストレージ装置１６１は、この機能によって第１のストレージ装置１２５に外部接続されている。ここで、外部接続について説明する。
【００５６】
既に説明したように、第１のストレージ装置１２５は、１つ又は複数の論理ボリュームをホスト計算機１０に提供する。各論理ボリュームは、ホスト計算機１０によって１つの記憶デバイスと認識される。例えば、第１のストレージ装置１２５が提供する論理ボリュームが、第１のストレージ装置１２５内のＰＤＥＶ３４に対応付けられてもよい。その場合、第１のストレージ装置１２５は、論理ボリュームへのライトコマンドを受信すると、その論理ボリュームに対応付けられたＰＤＥＶ３４にデータを格納する。このような論理ボリュームは、以下の説明において通常ボリュームとも記載される。
【００５７】
あるいは、第１のストレージ装置１２５が提供する論理ボリュームは、第２のストレージ装置１６１内のＰＤＥＶ１６３に対応付けられてもよい。この場合、第１のストレージ装置１２５は、論理ボリュームへのライトコマンドを受信すると、その論理ボリュームに対応付けられたＰＤＥＶ１６３にデータを書き込むためのライトコマンドを生成し、生成したライトコマンドを第２のストレージ装置１６１に送信する。第２のストレージ装置１６１は、第１のストレージ装置１２５から受信したライトコマンドに従って、データをＰＤＥＶ１６３に格納する。
【００５８】
このように、第１のストレージ装置１２５が提供する論理ボリュームに格納されるデータを、実際には第１のストレージ装置１２５の外部に接続された第２のストレージ装置１６１に格納する機能が、外部接続機能と呼ばれる。
【００５９】
第１のストレージ装置１２５は、ストレージ制御処理を確立するモジュール（クラスタ）１２５１を複数備える。各モジュールは内部ネットワーク１５６を有し、複数のモジュール内部ネットワーク１５６がモジュール間のネットワーク１５６１によって接続される。
【００６０】
したがって、１つのモジュールの制御プロセッサ３６０は他のモジュールにアクセスすること、例えば、他のモジュールのキャッシュメモリ３２のデータをリード・ライトすることができる。複数のモジュール間のネットワーク１５６１は、パス、スイッチによって構成される。
【００６１】
（変形例２）
図３は、図１又は図２に示すストレージ装置を複数台接続した計算機システムの構成を示すハードウエアブロック図である。
【００６２】
当該計算機システムでは、ストレージ装置３０（図１）または１２５（図２）が複数台接続され、それぞれがホスト計算機１０と管理装置２０に接続されている。ストレージ装置１６１は、ストレージ装置３０Ｂまたは１２５Ｂに接続している。本例では、ストレージ装置３０Ｂまたは１２５Ｂにストレージ装置１６１を接続したが、第１のストレージ装置３０Ａまたは１２５Ａにそれぞれ別のストレージ装置１６１を接続してもよいし、同じストレージ装置１６１を接続してもよい。ホスト計算機１０からは、２つのストレージ装置１２５Ａまたは３０Ａと３０Ｂまたは１２５Ｂを１つのストレージシステムとして使用するために、交替パスプログラムを使用する。
【００６３】
ホスト計算機１０のメモリ１４０内には、パス管理テーブル（図示せず）と、交替パスプログラムと、複数のアプリケーションプログラム（図示せず）と、が格納される。パス管理テーブルによって１つの論理ボリュームに対応づけられている複数のパスは、異なるストレージ装置の論理ユニットへのパスでもよい。即ち、ホスト計算機１０が、ストレージ装置１２５または３０を、同じ論理ボリュームの交替パスとして設定する。それらの論理ユニットは、ＳＣＳＩ規格で定められたＩｎｑｕｉｒｙコマンドによる問合せに対して、同じ応答を返すことにより、複数アプリケーションプログラムへ提供できる。
【００６４】
＜ストレージ装置の内部構成例＞
図４は、図２に示すストレージ装置が複数のモジュールを有する構成を示すハードウエアブロック図である。第１のモジュール１２５１ａが、第１の仮想ボリューム（ＶＯＬ＃０）に対するアクセス処理を制御し、第２のモジュール１２５１ｂが第２の仮想ボリューム（ＶＯＬ＃１）に対するアクセス処理を制御する。
【００６５】
図４に示すプール３０００４は、複数のモジュール間をまたがって形成されてもよい。しかし、ネットワーク１５６１の機器構成によっては、当該ネットワーク１５６１を経由すると転送速度が下がり、性能が落ちる場合がある。これを避けるために、システムは、仮想ボリューム（ＶＯＬ＃０）にプールボリュームを割り当てる際、ネットワーク１５６１を経由しないプールボリュームを選択する。そこで、ストレージ装置３０は、プールを、モジュール単位で管理する。プールボリュームグループ＃０（３０００２）、＃１（３０００４）、＃２（３０００６）がその管理の例である。
【００６６】
ストレージ装置３０が、モジュール１２５１ａに設定された仮想ボリューム＃０にページを割り当てるときは、プールグループ＃０（３０００２）のプールボリュームを選択する（Ｓ３００００）。
【００６７】
ストレージ装置３０は、プールグループの容量を、複数のＴｉｅｒ単位毎に管理する。後述するように、システム容量プールの管理も同様である。仮に、プールグループ＃０（３０００２）の容量が枯渇した、或いは、枯渇しそうであることを想定した場合、ストレージ装置３０は、容量に余裕のある（全体容量に対して空き容量の割合が予め決めた値より小さい時、空き容量の割合が多いと判断できる）、プールグループ＃１（３０００４）のプールボリュームをプールグループ＃０（３０００２）に追加する。プールグループ＃２（３０００６）のように、プールモジュールを跨って設定することも可能である。なお、この場合、第１のモジュール１２５１ａから入力されたＩ／Ｏであって、＃２（３０００６）の１２５１ｂ側に存在するボリュームに対するＩ／Ｏは、ネットワーク１５６１を介して処理される。
【００６８】
図４の制御プロセッサ１４３は、モジュール１２５１内に接続される論理ボリュームを制御する。例えば、プールボリュームグループ３０００２内に属するプールボリュームへの処理は制御プロセッサ１４３Ａが行う。仮想ボリュームの処理を行う制御主体のプロセッサはプールボリュームグループが属するモジュール内の制御プロセッサ１４３となる。仮想ボリューム＃０への処理は制御プロセッサ１４３Ａが実施する。
【００６９】
＜記憶領域の動的割当て処理＞
図５は、ストレージ装置３０が行う記憶領域の動的割り当ての動作を説明するためのブロック図である。
【００７０】
ＰＤＥＶ３４からＲＡＩＤ構成によってＲＡＩＤグループが構成されている。このＲＡＩＤグループからＶＤＥＶ４００が構成されている（Ｓ１０１）。ＶＤＥＶ４００は記憶領域である複数の論理デバイス（ＬＤＥＶ）５００に分割されている。ＰＤＥＶ３４から構成されたＶＤＥＶを、「第１種ＶＤＥＶ」と呼ぶ。この第１種ＶＤＥＶに含まれるＬＤＥＶを、「第１種ＬＤＥＶ」と呼ぶ。
【００７１】
ホスト計算機１０Ａは、ストレージ装置３０のホストアクセス用論理ユニットアクセスする。ホスト計算機１０から見えるアクセス対象を「ターゲットデバイス」と呼ぶ。ターゲットデバイス７００は、第１種ＬＤＥＶ５００を含むボリュームへのホスト計算機１０Ａからのパスの定義を伴って設定されている（Ｓ１０２）。ターゲットデバイス７００は、第１種ＬＤＥＶ５００と１対１に対応している。
【００７２】
ストレージ装置３０は、外部から接続されている外部物理デバイス６００をＰＤＥＶ３４と同様に扱うこともできる。すなわち、ＲＡＩＤ構成によって、複数の外部物理デバイス（ＥＤＥＶ）６００から複数の第１種ＶＤＥＶ４００が構成される（Ｓ１０３）。
【００７３】
第１種ＶＤＥＶ４００は、１つ以上の記憶領域である第１種ＬＤＥＶ５００に分割されている。この第１種ＬＤＥＶ５００にホスト計算機１０へのパスを設定して、ターゲットデバイス７００が設定される（Ｓ１０４）。また、ストレージ装置３０は、第２種ＶＤＥＶ４０１を設定する。第２種ＶＤＥＶとは、ＰＤＥＶ３４によって構成される第１種ＶＤＥＶ４００とは異なり、アドレス領域を持っているがＰＤＥＶ３４に対応する領域は持っていない仮想的なデバイスである。
【００７４】
第２種ＶＤＥＶ４０１に対応するキャッシュメモリの領域を設定することは可能である。この第２種ＶＤＥＶ４０１には、１つ以上のＬＤＥＶが含まれている。このＬＤＥＶを２種ＬＤＥＶ５０１と呼ぶ。
【００７５】
第２種ＬＤＥＶ５０１にホスト計算機１０Ｂへのパスを設定して、ターゲットデバイス７０１が設定される（Ｓ１１０）。このターゲットデバイス７０１がホスト計算機１０Ｂのアクセス対象である。ターゲットデバイス７０１は第２種ＬＤＥＶ５０１に割当てられている。ターゲットデバイス７０１、及び／又は、第２種ＬＤＥＶ５０１が仮想ボリュームに相当する。
【００７６】
第２種ＶＤＥＶ４０１及び第２種ＬＤＥＶ５０１には共に、物理的な記憶領域がＰＤＥＶから割り当てられていない、すなわち、これらの記憶容量は仮想化されているため、第１種ＶＤＥＶ４００、第１種ＬＤＥＶ５００とは異なるものである。この仮想領域を、ホスト計算機１０Ｂが使用できるようにするためには、第２種ＬＤＥＶ５０１に、実の記憶領域を有するプール６０を関連付ける必要がある。プールを用いることは、シン・プロビジョニングの特徴の１つである。
【００７７】
プール６０は、第１種ＬＤＥＶ５００の１つまたは複数を、１つ又は複数の属性で纏めたグループである。第１種ＬＤＥＶ５００は、プール６０に割り当てられている（Ｓ１１２）。第１種ＬＤＥＶ５００がプールボリュームに対応する。
【００７８】
プールに設定された第１種ＬＤＥＶ５００が、アドレスを用いて、第２種ＬＤＥＶ５０１に割当てられる（Ｓ１１１）。したがって、ターゲットデバイス７００の記憶領域は、第１種ＬＤＥＶ５００になるが、ターゲットデバイス７０１の記憶領域は第２種ＬＤＥＶ５０１になる。
【００７９】
ストレージ装置３０が、ターゲットデバイス７０１を介して、第２種ＬＤＥＶ５０１へのアクセスを受け付けると、第２種ＬＤＥＶ５０１に対応する第１種ＬＤＥＶ５００をアクセス先とする。
【００８０】
ホスト計算機１０Ａ及び１０Ｂからのライトデータは、第１種ＬＤＥＶ５００に格納される。第１種ＶＤＥＶ４００と第２種ＶＤＥＶ４０１同士はアドレスに基づいて対応する。したがって、ホストからのライトデータはＰＤＥＶ３４に格納される。
【００８１】
ＲＧは、ＲＡＩＤグループの略である。１つのＲＧは、同一種類のＰＤＥＶで構成されている。ＰＤＥＶ種類は、例えば、性能及び単位コストのうちの少なくとも一方で定義される。性能とは、例えば、データのＩ／Ｏの速度、又は、レスポンスタイム（ホストからコマンドを受けてから応答を返すまでの時間長）である。単位コストは、単位サイズのデータを保存するのに要する価格（例えばいわゆるビットコスト）である。例えば、ＲＧ＃１は、複数のＳＳＤで構成されており、ＲＧ＃２は、複数のＨＤＤ−ＳＡＳで構成されている。なお、１つのＲＧを構成する複数のＰＤＥＶの容量は、例えば同じである。
【００８２】
＜プールと仮想ボリュームとの関係＞
図６は、仮想ボリューム４１１−４１２とプールボリューム４２１との対応関係を含むストレージ装置３０のブロック図である。符号４１１及び４１２は、ターゲットデバイス７０１の１つを示している。符号４２は、図５におけるプール６０とＬＤＥＶ４００とＰＤＥＶ３４を合わせた構成を示している。各プールには複数のプールボリューム４２１が存在する。符号４２１Ａはプールボリュームのページである。
【００８３】
ここで、ページとは、ホストからのリード・ライトアクセスを処理するための規定容量からなる記憶領域の単位である。ライトデータは１つ又は複数のページに格納される。あるいは、ライトアクセスにページの割り当てを1回行い、数回のライトアクセスに係るライトデータを同じページ内に格納し、続くライトデータが一つのページに格納できなければ、このライトデータに係るライトアクセスに新たなページの割り当てを行うこともある。
【００８４】
符号４１１Ａは、仮想ボリューム４１１の仮想ページである。仮想ページ４１１Ａはプールボリューム４２１のページとは異なり、実の記憶領域を伴わない仮想的な記憶容量の単位である。ホストからのリード・ライトは、仮想ボリュームの仮想ページ単位で処理される。ホストからのライトが仮想ボリュームに実行されると、仮想ボリュームの仮想ページにプールボリュームの実ページが、ライトアクセスがある都度、割当てられる。
【００８５】
符号４１１２は、仮想ボリュームの仮想ページとプールボリュームの仮想ページとの対応関係を示すためのラインである。ストレージ装置３０は、仮想ボリュームと、プール及びプールボリュームとの間に対応関係を設定し、仮想ボリュームには、対応関係にあるプールのプールボリュームからページが割当てられる。
【００８６】
ストレージ装置３０は、プールボリュームを、主として、プールボリュームの供給元であるストレージデバイスの特性に基づく階層（以下、本明細書において「Ｔｉｅｒ」と表記する場合もある）に分けて管理する。この階層の区別は、Ｔｉｅｒ０、Ｔｉｅｒ１、Ｔｉｅｒ２からなる。
【００８７】
Ｔｉｅｒ０の階層に属するメディアは、オンラインストレージとして分類されるものであり、例えば、高速応答性、高信頼性を持ったＳＳＤ、ＳＡＳ、ファイバチャネルＨＤＤである。Ｔｉｅｒ１の階層に属するメディアは、ニアラインストレージとして分類されるものであり、例えば、ＳＡＴＡハードディスク、ＡＴＡハードディスクである。Ｔｉｅｒ２の階層に属するストレージデバイスは、オフラインストレージとして分類されるものであり、例えば、低価格、大容量のテープデバイスである。これらは一例であり、後述のとおり、ストレージデバイスを、既述の分類とは異なる分類に基づいて階層に分類することもできる。
【００８８】
ここで、図６に従い、基本動作について説明する。ストレージ装置３０は、仮想ボリューム４１１をホスト計算機１０に提供し、複数種類のＴｉｅｒ４２２を有するものとする。
【００８９】
仮想ボリューム４１１は、シン・プロビジョニングに従う仮想的な論理ボリューム、すなわち、物理的な記憶デバイス（以下、ＰＤＥＶ）に基づかない論理ボリュームである。仮想ボリューム４１１は、複数の仮想ページ４１１Ａで構成されている。仮想ページ４１１Ａは、仮想的な記憶領域である。仮想ボリューム４１１として、１つの仮想ボリューム＃１があるとする。以下、仮想ボリューム＃ａ内の仮想ページ＃ｂを「仮想ページ＃（ａ−ｂ）」と表記することにする。シン・プロビジョニングの仮想ボリューム４１１は、仮想的な容量を有するものとしてホスト計算機１０へ提供されるものであり、ホスト計算機１０から仮想ページのあるアドレスへのライト要求に応じて実ページが割り当てられるものである。
【００９０】
したがって、仮想的な容量を満たすように実ページが割り当てられてしまった状態を除いては、ある仮想ボリューム４１１へ割り当てられた全ての実ページのトータル容量は、仮想的な容量よりも小さいものとなる。１つの仮想ボリューム４１１は、１つ以上のホスト計算機１０へ提供されるものであり、複数のホスト計算機１０へ提供される場合には、これらの複数のホスト計算機１０によって共有されることになる。
【００９１】
Ｔｉｅｒ４２２は、複数の実ページ４２１Ａで構成されている。実ページ４２１Ａは、実体的な記憶領域である。Ｔｉｅｒ４２２として、例えば、２つのＴｉｅｒ０及び１があるとする。以下、Ｔｉｅｒ＃ｃ内の実ページ＃ｄを「実ページ＃（ｃ−ｄ）」と表記することにする。なお、Ｔｉｅｒ４２２は、例えば、１つ以上の実ボリュームで構成されるようにしてもよい。実ボリュームは、実体的な論理ボリューム、すなわち、ＰＤＥＶに基づく論理ボリュームである。１つのプール内の複数のＴｉｅｒ４２２の各々は、データが移行される前の状態には、１つ又は複数の仮想ボリューム４１１に利用されるものとして設定される。
【００９２】
ホスト計算機１０は、一般的には計算機であるが、計算機に代えて、別のストレージ装置であってもよい。ホスト計算機１０は、例えば、Ｉ／Ｏ（Input/Output）コマンドをストレージ装置３０に送信する。Ｉ／Ｏコマンドは、例えば、ライトコマンド又はリードコマンドであり、Ｉ／Ｏ先情報を有する。Ｉ／Ｏ先情報は、Ｉ／Ｏ先を表す情報であり、例えば、仮想ボリューム４１１のＩＤ（例えばＬＵＮ（Logical Unit Number））とＩ／Ｏ先のアドレス（例えばＬＢＡ（Logical Block Address））とを含む。Ｉ／Ｏ先情報から、Ｉ／Ｏ先の仮想ボリューム４１１及び仮想ページ４２１Ａが特定される。
【００９３】
ストレージ装置３０が、ホスト計算機１０からライトコマンドを受信し、そのライトコマンドが有するＩ／Ｏ先情報を基に、ライト先として、仮想ページ＃（１−Ｃ）を特定したとする。ストレージ装置３０は、特定された仮想ページ＃（１−Ｃ）にいずれの実ページ４２１Ａが割り当てられていなければ、その仮想ページ４２１Ａに、いずれかのフリー（未割当て状態）の実ページ＃（０−Ｄ）を割り当て、割り当てた実ページ（０−Ｄ）に、ライトコマンドに従うライト対象のデータ要素を書き込む。
【００９４】
Ｔｉｅｒ間でのデータ移行は、本実施例では、ページ単位で行われる。具体的には、例えば、図１に示すように、ストレージ装置３０が、以下の処理：
（i）仮想ページ＃（１−Ｃ）に割り当てられている実ページ＃（０−Ｄ）内のデータ要素を、フリー（未割当て状態）の実ページ＃（１−Ｅ）に移行する；
（ii）仮想ページ＃（１−Ｃ）の割当元を、実ページ＃（０−Ｄ）から実ページ＃（１−Ｅ）に変更する；
（iii）実ページ＃（０−Ｄ）の状態をフリー（未割当て状態）に更新する；
を行う。
【００９５】
＜ストレージ装置のメモリ内部の構成＞
図７は、ストレージ装置３０のメモリ３５０の内部構成を示すブロック図である。メモリ３５０は、プロセッサ３６０によって読み込まれて実行される各種プログラムや、論理ボリュームの設定に関する構成情報３５１、及び、プールの設定に関するプール情報３５２を格納している。
【００９６】
コマンド制御プログラム３５０１は、ホスト計算機１０、又は管理装置２０からのコマンドを解釈し、そのコマンドに規定された処理を実行する。構成制御プログラム３５０３はストレージ装置３０の構成の設定、更新等の処理を実現する。ディスクＩ／Ｏプログラム３５０５は、ＰＤＥＶ３４へのアクセスを制御する。プール制御プログラム３５０７は、プールの設定に関する各種処理を実行する。
【００９７】
構成情報３５１は、ＶＤＥＶ、ＬＤＥＶ、階層、ＲＡＩＤグループなどストレージ装置の環境設定に必要な情報である。構成情報３５１は、アドレス管理テーブル３５１１と、ＬＤＥＶ管理情報（テーブル）３５１２と、Ｔｉｅｒ管理情報（テーブル）３５１３と、ＬＡＮＥ管理情報（テーブル）３５１４と、を含んでいる。この他、ＶＤＥＶ管理情報（テーブル）やＲＡＩＤグループ管理情報（テーブル）を含むようにしても良い。
【００９８】
アドレス管理テーブル３５１１は、ターゲットデバイスとＬＤＥＶとＶＤＥＶと物理デバイスとのアドレスのマッピング情報、ターゲットデバイスとＬＤＥＶのマッピング情報、そして、ＬＤＥＶとＶＤＥＶのマッピング情報、及び、ＶＤＥＶとＰＤＥＶのマッピング情報を格納している。ストレージ装置は、このアドレス管理テーブルを参照することによって、ターゲットデバイス７００及び７０１のアドレスがどのＬＤＥＶのどのアドレスに対応するかを知ることができる。また、ＬＤＥＶのアドレスがどのＶＤＥＶのどのアドレスに対応するかを知ることができる。また、ＶＤＥＶのアドレスがどのＲＡＩＤグループに属しており、どのＰＤＥＶのどのアドレスに対応するかを知ることができる。
【００９９】
ＬＤＥＶ管理情報テーブル３５１２は、ＬＤＥＶに関する管理情報を含む。Ｔｉｅｒ管理情報テーブル３５１３は、プールに定義された階層の管理情報を含む。ＬＡＮＥ管理情報テーブル３５１４は、プールに定義された階層の組み合わせの情報を含む。
【０１００】
プール情報３５２は、プールに関する設定を格納し、プール管理情報テーブル３５２１と、プールボリューム管理情報テーブル３５２２と、ＶＶＯＬ（仮想ボリューム）−ＤＩＲ管理情報（テーブル）３５２３と、ＰＳＣＢ（Pool Slot Control Block）管理情報（テーブル）３５２４、プールＴｉｅｒ管理情報テーブル３５２７と、を含んでいる。
【０１０１】
プール管理情報テーブル３５２１は、プールの設定に関する管理情報を含んでいる。プールボリューム管理情報テーブル３５２２は、プール６０のプールボリュームに関する管理情報を含んでいる。ＶＶＯＬ−ＤＩＲ管理情報テーブル３５２３は、プールのＬＤＥＶ（プールボリューム）の仮想ボリュームに対する割り当てに係る情報を含んでいる。ＰＳＣＢ管理情報３５２４は、プールのＬＤＥＶのアドレスの情報を含んでいる。
【０１０２】
プールＴｉｅｒ管理情報テーブル３２５７は、プールに設定される階層の管理情報を含んでいる。これはプール毎に設定されている。
【０１０３】
そして、階層毎のプールボリューム管理プログラム３５０８は、階層毎にプールボリューム数やその他のプールボリュームの特性を管理する。
【０１０４】
プールのプールボリュームからページを仮想ボリュームにホスト装置からのアクセスに基づいて動的に割当てる処理は、コマンド制御プログラム３５０１によって達成される。
【０１０５】
ＬＡＮＥ定義プログラム３５０９は、ユーザから指示された性能要件をＬＡＮＥに置き換えて、ＬＡＮＥ管理情報３５１４を定義する。ＬＡＮＥ間で階層を使用するための優先順位やＬＡＮＥ内の階層間の使用する比率を定義する。仮想ボリュームへのＬＡＮＥの設定や変更も行う。ＬＡＮＥにあったプールの選択も行う。
【０１０６】
＜メディア管理情報テーブル＞
図８は、メディア管理情報テーブル３５１５の構成例を示す図である。
メディア管理情報テーブル３５１５は、メディアがストレージ装置に接続された際に構成制御プログラム３５０３によって作成され、メディア種別８０２と、容量８０４と、レスポンス時間８０６と、を構成項目として含んでいる。
【０１０７】
メディア種別８０２は、メディアの種類である。例えば、ディスクであれば、ＳＳＤ、ＦＣ(Fiber Channel)、ＳＡＳ（Serial Attached SCSI）、ＳＡＴＡ（Serial ATA）等である。
【０１０８】
また、レスポンス時間８０６は、データのリードやライト指示に対してのメディアからの応答時間を示す。この時間が短いメディア程、処理性能が一般的に高い。なお、図８は、メディア管理情報の一例であり、他の情報を排除するものではない。
【０１０９】
＜階層管理情報テーブル＞
また、図９及び１０は、階層管理情報テーブル３５１３である。これら管理情報は、階層管理情報３５１３の具体的管理情報としてメモリ３５０に格納されている。
【０１１０】
Ｔｉｅｒ番号とメディアの種別との対応が、階層管理情報テーブル（図９）に示されている。図９及び１０はメディアを階層番号に対応させるための分類の一例である。このメディアの分類はメディアの性能に基づいたものとなっている。
【０１１１】
Ｔｉｅｒ＃９０２は、Ｔｉｅｒの識別子を示す情報である。９０４は、メディアの格納場所を示す情報である。Ｔｉｅｒ＃９０２に格納される「内部」はストレージ３０内に搭載されているＨＤＤ（ハードディスク）を意味する。「外部」はストレージ装置３０から外部接続された別のストレージ装置３０を意味するものであり、図９では、例えば、ＡＭＳ２５００や２１００が外部ストレージ装置として示されている。
【０１１２】
回転数９０８は、メディアのデータ転送能力を示す情報である。メディアが単位時間あたりに転送できるデータ量のことであり、一般的に、この値が大きいほど、データの転送能力が高いメディアである。ＲＡＩＤレベル９１０は、構成可能なＲＡＩＤのレベルを示す情報である。すなわち、ストレージの性能に影響を与える要素である９０８、ＲＡＩＤレベル９１０を基に、メディアとＴｉｅｒ番号とが対応付けられる。
【０１１３】
図９は、メディアを６種類の階層に分類する例を示している。ストレージ装置は、Ｔｉｅｒを後から拡張することもできる。例えば、新たなメディアが追加された場合である。階層の分類は管理者やユーザによって実行されるか、あるいは、ストレージシステムによって一意に決定されてもよい。なお、メディアの分類の他の形態として、性能に加えてビットコストの観点を加える手法もある。
【０１１４】
性能、コスト、信頼性などの面でほぼ同じであれば、まとめて１つのＴｉｅｒとすることもできる。例えば、図９のＴｉｅｒ１とＴｉｅｒ２をまとめることもある。
【０１１５】
図１０は、以下の説明をする際の具体的な例として、３階層（Ｔｉｅｒが３つ）の例を示している。なお、項目９０６以外を省略して表示している。
【０１１６】
本実施形態の中では、データは極力高性能のメディアへ格納するポリシーとし、Ｔｉｅｒは、高性能のメディア順に番号を割り振るとする。このようにすることで、Ｔｉｅｒの番号の若い順に優先してデータを格納するための記憶領域を確保する。バリエーションとして、最初に割り当てるＴｉｅｒを指定する方法もある。
【０１１７】
本発明に係るストレージ装置３０の１つの特徴は、仮想ボリューム毎に、使用するＴｉｅｒを選択し、設定することである。図１２Ａにあるように、仮想ボリュームは、アクセス特性に応じてページ単位に記憶領域を割り当てる。この例では、プールは、ＳＳＤ、ＳＡＳ、ＳＡＴＡの階層に分かれており、仮想ボリューム＃１は、ＳＳＤからページを割り当て、仮想ボリューム＃２は、ＳＡＳからページを割り当てるように設定されている。このように、仮想ボリューム毎に使用するプールの中に存在するＴｉｅｒの組み合わせを定義する。この定義をＬＡＮＥ（レーン）と呼ぶ。つまり、ＬＡＮＥは、仮想ボリュームを構成することができるＴｉｅｒの範囲を示す情報である。ＬＡＮＥの一例として、図６のＴｉｅｒ０をＳＳＤ、Ｔｉｅｒ１をＳＡＳ、Ｔｉｅｒ２をＳＡＴＡとする。このケースでは、図１２Ａに示す組み合わせ６通りを定義する。本例の場合のＴｉｅｒ管理情報を図９Ｂに示す。図１１に示すＬＡＮＥ管理情報テーブル３５１４で、各ＬＡＮＥの範囲となる、階層の組み合わせを定義する。ＬＡＮＥ管理情報テーブル３５１４は、ＬＡＮＥ番号と、Ｔｉｅｒの組み合わせの情報を、構成項目として含んでいる。
【０１１８】
図１２Ａ及びＢは、ＬＡＮＥを構成するＴｉｅｒの組み合わせの例を示す図である。図１２Ａ及びＢに示されるように、ＬＡＮＥは、単一のＴｉｅｒ及び複数のＴｉｅｒの組み合わせによって構成される。図１２Ａ及びＢからは、各仮想ボリュームは、関連付けられたＬＡＮＥを用いて構成されていることが分かる。
【０１１９】
＜ＬＤＥＶ管理情報テーブル＞
図１３は、ＬＤＥＶ（ボリューム）管理情報テーブル３５１２の構成例を示す図である。ＬＤＥＶ管理情報テーブル３５１２の複数のテーブルから構成され、１つのテーブル３５１２１は、ＬＤＥＶ番号（ＬＤＥＶ＃）３５１２２と、サイズ３５１２３と、デバイス属性３５１２４と、プールＩＤ３５１２５と、デバイス状態３５１２７と、再配置の自動実行の有無に関する情報３５１２８と、再配置実行周期３５１２９と、再配置実行時刻３５１３０と、モニタ時間帯３５１３１と、を構成項目として含んでいる。
【０１２０】
ＬＤＥＶ＃３５１２２は、ＬＤＥＶの識別子を示す情報である。サイズ３５１２３は、ＬＤＥＶに設定されている総サイズを示す情報である。ＬＤＥＶが仮想ボリュームである場合には、サイズは仮想化されたものになる。
【０１２１】
デバイス属性３５１２４は、ＬＤＥＶの属性の識別子を示す情報である。ＬＤＥＶが第１種ＬＤＥＶである場合には第１種ＬＤＥＶを示す識別子が格納され、ＬＤＥＶが第２種ＬＤＥＶである場合には第２種ＬＤＥＶを示す識別子が格納される。また、ＬＤＥＶがプールに設定されている場合は、プール属性を示す識別子が格納される。
【０１２２】
プールＩＤ３５１２５の欄には、ＬＤＥＶがプールに設定されている場合に、その識別子が格納される。ＬＤＥＶが仮想ボリュームに設定されている場合には、データを格納する際に、記憶領域を割り当てるプールＩＤの番号である。
【０１２３】
状態３５１２７は、そのＬＤＥＶが所属するＶＤＥＶの状態を示す情報である。状態の値として、例えば、正常、閉塞、障害閉塞等がある。閉塞は、パンク閉塞など、障害の発生以外の要因によって閉塞されていることを示している。障害閉塞は、デバイスの何れかに障害が発生しており、そのため閉塞されていることを示している。
【０１２４】
再配置の自動実行の有無に関する情報３５１２８は、仮想ボリューム内のデータ要素の再配置を自動で開始するか手動で開始するかである。“ＯＮ”は、再配置が自動で開始されることを意味し、“ＯＦＦ”は、再配置が手動で開始されることを意味する。なお、再配置の有無について設定できるようにしても良い。つまり、この情報により仮想ボリューム内のデータ要素を再配置するか否かを決定する。“ＯＮ”が設定されれば、再配置を行い、“ＯＦＦ”が設定されれば、再配置を行わない。“ＯＮ”の場合、仮想ボリューム又はその仮想ページのＩ／Ｏ頻度がモニタされるが、“ＯＦＦ”の場合、仮想ボリューム又はその仮想ページのＩ／Ｏ頻度がモニタされないこととなる。
【０１２５】
再配置実行周期３５１２９は、仮想ボリューム内のデータ要素の再配置を行う周期を示す情報である。再配置実行時刻３５１３０は、仮想ボリューム内のデータ要素の再配置を開始する時刻を示す情報である。また、モニタ時間帯３５１３１は、仮想ボリューム又は仮想ページのＩ／Ｏ頻度をモニタする時間帯を示す情報である。
【０１２６】
なお、再配置自動実行の有無３５１２８、再配置実行周期３５１２９、再配置実行時刻３５１３０及びモニタ時間帯３５１３１は、後述のプール管理情報３５２１における情報要素と同じ情報であるが、このテーブルにおける情報要素（例えば「再配置」）の値がプール管理情報３５２１における同じ情報要素（例えば「再配置」）の値と異なっていれば、当該テーブルにおける値が優先されるようにしても良い。つまり、プール管理情報３５２１では、１つのプールについて情報要素の値が設定され、その結果、そのプールが割り当てられている全ての仮想ボリュームについての設定にその値を反映させることができるが、ＬＤＥＶ（ボリューム）管理情報テーブル３５１２を用いれば、仮想ボリューム毎に設定をすることができる。よって、仮想ボリュームについて特に値が設定されていなければ、その仮想ボリュームに割り当てられているプールについて設定されている値が、その仮想ボリュームについての値とされる。
【０１２７】
ＬＤＥＶ管理情報テーブル３５１２は、構成制御プログラム３５０３に基づき、ユーザ又は管理者からの操作によって設定又は更新され、ＬＡＮＥ番号毎に管理される。以後の管理テーブルも同様である。
【０１２８】
例えば、図１１に示されるようなＬＡＮＥ構成で図６に示されるような仮想ボリュームにプールを割り当てた場合を考える。図１１によれば、ＬＡＮＥ３はＴｉｅｒ０とＴｉｅｒ１の組み合わせで構成され、ＬＡＮＥ４はＴｉｅｒ１とＴｉｅｒ２の組み合わせで構成されている。ＬＡＮＥ３でプールが構成されるように定義されている場合には、仮想ボリューム４１１は、Ｔｉｅｒ０と１を使用する。また、ＬＡＮＥ４でプールが構成されるように定義される場合には、仮想ボリューム４１２は、Ｔｉｅｒ１と２を使用する。なお、仮想ボリューム４１１と４１２は同じプールを使用しているため、プールＩＤは同じ識別子となる。
【０１２９】
ＬＡＮＥ設定により、仮想ボリューム毎に使用する階層（Ｔｉｅｒ）を選択することや、また全階層の中から使用する階層を制限することができる。そして、これにより、仮想ボリュームをアクセスするアプリケーションが必要とする性能要件に応じたメディアからページ割り当てをすることができるようになる。アプリケーション単位ではなく、アプリケーションの中で詳細な単位、仮想ボリューム単位に階層を制御することが新しい。つまり、あるアプリケーションが使用する複数の仮想ボリュームについて、高性能なメディア及びそれ以外のメディアに割り当てることができる。また、割り付ける階層を制限することにより、本当に必要な仮想ボリュームに、高性能のメディアを割り当てることができる。高性能のメディアは価格が高く、一般的には、全体の容量から占める割合が少ない。少ないリソースを有効に使うことができる。従来では、どの仮想ボリュームもアクセス頻度が同じデータであれば、高性能のメディアを割り当てていた。このため、性能要件が高くないデータでも、アクセス頻度が高いと、最高位の性能であるメディアを使ってしまう。このようなＬＡＮＥ制御により、物理のプールを分割することなく、シングルプールのまま分割して使用できるため、負荷が少なく、性能を出せる方法である。
【０１３０】
＜プール管理情報テーブル＞
図１４は、プール管理情報テーブル３５２１の構成例を示す図である。プール管理情報３５２１は、複数のプール固有情報テーブル３５２１１で構成される。プール固有情報３５２１１は、プールＩＤ３５２１２と、用途３５２１３と、容量３５２１４と、空き容量３５２１５と、プールボリューム数３５２１６と、プールボリュームデバイス番号リスト３５２１７と、プールを利用しているデバイス数３５２１８と、プールを利用しているデバイス番号３５２１９と、再配置をするか否かを示す再配置の有無３５２２０と、再配置自動実行の有無３５２２１と、再配置実行周期３５２２２と、再配置実行時刻３５２２３と、モニタ時間帯３５２２４と、状態３５２２５と、プールにあるＴｉｅｒのリスト３５２２６と、を構成項目として有している。容量３５２１４や空き容量３５２１５は、メディア毎に情報を保持する。
【０１３１】
プールＩＤ３５２１２は、プールの識別子である。用途３５２１３は、プールの用途を示す識別子である。用途は、例えば、シン・プロビジュニング、スナップショット、リモートコピー、など、プール運用形態の用途である。
【０１３２】
容量３５２１４は、プールの実容量を示す情報である。なお、図１４のプール管理情報テーブル３５２１には、ホスト計算機１０に対して仮想化された容量（仮想容量）が登録されてもよい。空き容量３５２１５は、プールの未使用の実容量を示す情報である。容量仮想化プールの総実容量、又は、使用済み実容量、或いはこれらの一つ又は複数の組み合わせがテーブルに登録されてもよい。
【０１３３】
プールボリューム数３５２１６は、プールとして設定されているＬＤＥＶの総数を示す情報である。プールボリュームデバイス番号リスト３５２１７は、プールとして設定されているＬＤＥＶ番号の一覧を示す情報である。
【０１３４】
プールを利用しているデバイス数３５２１８は、プールに属するプールボリュームの数を示す情報である。プールを利用しているデバイス番号３５２１９は、プールに属するプールボリュームのＩＤの一覧を示す情報である。プールを利用しているデバイス数３５２１８及びプールを利用しているデバイス番号３５２１９は、階層毎に設定されるようにしても良い。
【０１３５】
再配置の有無３５２２０は、対象プール内のデータ要素を再配置するか否かを示す情報であり、“ＯＮ”または“ＯＦＦ”が記述される。“ＯＮ”は、再配置を行うことを意味し、“ＯＦＦ”は、再配置を行わないことを意味する。“ＯＮ”の場合、対象プールが割り当てられている仮想ボリューム又はその仮想ページのＩ／Ｏ頻度がモニタされ、“ＯＦＦ”の場合、対象プールが割り当てられている仮想ボリューム又はその仮想ページのＩ／Ｏ頻度がモニタされない。Ｉ／Ｏ頻度のモニタに関して大事なことは、Ｉ／Ｏ先の仮想ボリューム或いは仮想ページに割り当てられた実ページに実際にＩ／Ｏが行われなければ、Ｉ／Ｏ頻度は更新されず、その割り当てられた実ページに対してＩ／Ｏが行われたときに、Ｉ／Ｏ頻度が更新されることである。この点は、後述のライト処理及びリード処理の際にも説明する。
【０１３６】
再配置自動実行の有無３５２２１は、対象プール内のデータ要素の再配置を自動で開始するか手動で開始するかを示す情報であり、“ＯＮ”または“ＯＦＦ”が記述される。“ＯＮ”は、再配置が自動で開始されることを意味し、“ＯＦＦ”は、再配置が手動で開始されることを意味する。
【０１３７】
再配置実行周期３５２２２は、対象プール内のデータ要素の再配置を行う周期を示す情報である。例えば、“１日”は、１日（２４時間）毎に再配置が開始されることを意味する。
【０１３８】
再配置実行時刻３５２２３は、対象プール内のデータ要素の再配置を開始する時刻を示す情報である。
【０１３９】
モニタ時間帯３５２２４は、対象プールが割り当てられている仮想ボリュームに割り当てられた実ページのＩ／Ｏ頻度をモニタする時間帯を示す情報である。
【０１４０】
状態３５２２５は、対象プールのステータスを示す情報である。状態の値として、例えば、“モニタリング中”、“再配置中”、“非モニタリング中”がある。“モニタリング中”は、対象プールが割り当てられている仮想ボリューム又はその仮想ボリューム内の仮想ページのＩ／Ｏ頻度がモニタリングされている最中であり、且つ、データ要素の再配置中ではないことを意味する。“再配置中”は、データ要素の再配置（対象プール内での再配置であっても良いし、対象プールから別のプールへのデータ要素の再配置であっても良い）が行われている最中であることを意味する。“非モニタリング中”は、Ｉ／Ｏ頻度のモニタリング中でもないしデータ要素の再配置中でもないことを意味する。
【０１４１】
プールにある階層のリスト３５２２６は、プールに設定されている階層情報のリストの一覧を示す情報である。階層情報のリスト３５２２６については後述するが、階層情報のリスト３５２２６は、階層管理情報テーブル３５１３の一例である。
【０１４２】
なお、図１４のプール管理情報テーブル３５２１は、構成制御プログラム３５０３によって設定・更新される。
【０１４３】
＜プール階層管理情報テーブル＞
図１５は、プール階層管理情報テーブル３５１３の構成例を示す図である。プール階層管理情報テーブル３５１３は、少なくとも１つの構成テーブル３５２７１を有し、それぞれの構成テーブル３５２７１は、プールＩＤ３５２７２と、階層番号３５２７３と、容量３５２７４と、空き容量３５２７５と、プールボリューム数３５２７６と、プールボリュームデバイス番号リスト３５２７７と、プールを利用しているデバイス数３５２７８と、プールを利用しているデバイス番号３５２７９と、階層に属するプールボリュームのリスト３５２８０と、を構成項目として有している。以下においては、これらの各情報について、プールの管理情報テーブル（図１４）と異なる部分についてのみ説明する。
【０１４４】
階層番号３５２７３は、プールに設定された階層の識別情報である（図８及び９参照）。例えば、プール内に複数の階層が設定されている場合には、階層毎に図１５の構成テーブル３５２７１が設定される。つまり、階層が３つの場合には、プール階層管理情報テーブル３５１３は、３つの構成テーブル３５２７１を有することになる。
【０１４５】
容量３５２７４は、各階層（Ｔｉｅｒ＃：３５２７３）が有している総実容量である。各階層の容量３５２７４の総和は、プール管理情報テーブル３５２１の構成テーブル３５２１１における容量３５２１４の値となる。
【０１４６】
空き容量３５２７５はその階層の未使用領域のサイズである。また、各階層の空き容量３５２７５の総和は、プール管理情報テーブル３５２１の構成テーブル３５２１１における空き容量３５２１５の値となる。
【０１４７】
プールボリューム数３５２７６、プールボリュームデバイス番号リスト３５２７７、プールを利用しているデバイス数３５２７８、及びプールを利用しているデバイス番号３５２７９のそれぞれは既述した内容のものであるが、これらの情報も階層毎に設定される。
【０１４８】
階層に属するプールボリュームリスト３５２８０には、各階層に所属するプールボリュームのリスト３５１２１（図１３参照）が含まれる。なお、図４のように、複数のモジュール（クラスタ）間にプールが跨る場合には、プール管理情報テーブル３５２１（図１４参照）にはモジュールを区別する情報が付加され、テーブル内の情報はモジュール毎に管理される。
【０１４９】
なお、既述の各テーブルで、階層が設定されていない場合には、階層に関連する情報の欄にはＮＵＬＬが登録されることになる。
【０１５０】
＜ＶＶＯＬ−ＤＩＲ管理情報テーブル及びＰＳＣＢ管理情報＞
図１６は、ＶＶＯＬ−ＤＩＲ管理情報テーブル３５２３及びＰＳＣＢ管理情報３５２４について説明するための図である。
【０１５１】
ＶＶＯＬ−ＤＩＲ管理情報テーブル３５２３は、仮想ボリュームの仮想領域を構成するための第２種ＬＤＥＶの構成を示す情報である。ＰＳＣＢ（Pool Slot Control Block）管理情報３５２４は、プール４２に設定された第１種ＬＤＥＶの構成を示す情報である。
【０１５２】
既述のように、ストレージ装置３０では、ＰＤＥＶ３４からＲＡＩＤ構成によって第１種ＶＤＥＶ４００が構成される。この第１種ＶＤＥＶ４００は、記憶領域である第１種ＬＤＥＶ５００に分割される。そして、第１種ＬＤＥＶ５００がプール６０に設定される。このプール４２に設定された第１種ＬＤＥＶ５００がプールボリューム９００である。
【０１５３】
また、ストレージ装置３０は、仮想ボリューム（ＶＶＯＬ）８００を設定し、さらに第２種ＬＤＥＶ３５２３１（図５における第２種ＬＤＥＶ５０１に相当）を構成する。この第２種ＶＤＥＶ４０１を仮想ボリュームの仮想的な記憶領域としての第２種ＬＤＥＶ３５２３１（ＶＶＯＬ８００）に分割する。
【０１５４】
ストレージ装置は、仮想ボリューム８００である第２種ＬＤＥＶ３５２３１を、プールボリュームである第１種ＬＤＥＶ５００に割り当てる。これによって、ホスト計算機１０がアクセスする仮想ボリュームの記憶領域は、物理デバイスであるＰＤＥＶ３４から構成された第１種ＬＤＥＶ５００に対応することになる。
【０１５５】
仮想ボリューム７０１の構成は、ＶＶＯＬ−ＤＩＲ３５２３に格納される。ＶＶＯＬ−ＤＩＲ３５２３は、ＬＤＥＶ番号（ＬＤＥＶ＃）３５２３１及びエントリ３５２３２によって構成される。
【０１５６】
ＬＤＥＶ番号（ＬＤＥＶ＃）３５２３１は、第２種ＬＤＥＶ３５２３１の識別子を示す情報である。エントリ３５２３２は、第２種ＬＤＥＶ３５２３１の構成情報であり、第２種ＬＤＥＶアドレス３５２３３と、ＰＳＣＢポインタ３５２３４と、階層番号３５２３５と、によって構成される。ＰＳＣＢポインタ３５２３４には、第２種ＬＤＥＶ３５２３１がプールボリューム９００の第１種ＬＤＥＶ５００に割り当てられる場合に、その第１種ＬＤＥＶ５００の領域のポインタが格納される。なお、初期状態では第２種ＬＤＥＶ３５２３１は第１種ＬＤＥＶ５００に割り当てられていないので、ＰＳＣＢポインタ３５２３４には「ＮＵＬＬ」が格納される。
【０１５７】
ＰＳＣＢ管理情報３５２４は、プール６０に設定されている第１種ＬＤＥＶ５００の情報である。このＰＳＣＢ管理情報３５２４は、プール６０設定されている第１種ＬＤＥＶ５００のスロット毎に設定される。
【０１５８】
それぞれのＰＳＣＢ管理情報３５２４は、ＬＤＥＶ番号（ＬＤＥＶ＃）３５２４１と、プールボリュームアドレス３５２４２と、ＰＳＣＢ前方ポインタ３５２４３と、ＰＳＣＢ後方ポインタ３５２４４とによって構成される。ＬＤＥＶ番号（ＬＤＥＶ＃）３５２４１は、プールボリュームでの第１種ＬＤＥＶの識別子を示す情報である。プールボリュームアドレス３５２４２は、プールボリューム９００における第１種ＬＤＥＶのアドレスを示す情報である。ＰＳＣＢ前方ポインタ３５２４３及びＰＳＣＢ後方ポインタ３５２４４は、プールボリューム９００内の第１種ＬＤＥＶの前後のスロットの識別子を示す情報である。
【０１５９】
また、プールボリューム９００の領域のうち、未使用の領域は、その先頭がフリーＰＳＣＢキュー３５２４０で示される。フリーＰＳＣＢキュー３５２４０は、次のスロットを示すＰＳＣＢ３５２４へのポインタを含む。
【０１６０】
ストレージ装置３０は、フリーＰＳＣＢキュー３５２４０に示されたポインタを参照して、次のＰＳＣＢ３５２４を得る。さらに、ストレージ装置３０は、次のＰＳＣＢ３５２４のＰＳＣＢ後方ポインタ３５２４４を参照して、段階的にＰＳＣＢ３５２４を辿り、その未使用の領域の最終のスロットに対応するＰＳＣＢ３５２４を得る。この最後のＰＳＣＢ３５２４のＰＳＣＢ後方ポインタ３５２４４がフリーＰＳＣＢキュー３５２４０である。
【０１６１】
ストレージ装置３０は、フリーＰＳＣＢキュー３５２４０を辿り、ＰＳＣＢ３５２４のポインタによって連結された集合によって、プールのプールボリューム９００の未使用の領域を知ることができる。
【０１６２】
ストレージ装置３０は、プール６０に設定された第１種ＬＤＥＶ５００に対応するＰＳＣＢ３５２４を設定する。具体的には、プール６０に設定された第１種ＬＤＥＶ５００の各スロットに対応するＰＳＣＢ３５２４を設定し、さらにフリーＰＳＣＢキュー３５２４０を設定する。初期状態ではプール４２は全て未使用であるため、フリーＰＳＣＢキュー３５２４０によって連結される集合は、プールに設定された第１種ＬＤＥＶ５００の全ての領域に対応する。
【０１６３】
そして、ストレージ装置３０は、このプール６０の領域を使用する場合に、必要なスロット分のＰＳＣＢ３５２４を、第２種ＬＤＥＶ３５２３１を管理するＶＶＯＬ−ＤＩＲ管理情報テーブル３５２３に割り当てることで、当該領域が使用可能となる。
【０１６４】
１つのスロット、又は複数のスロットの集合が、ページに相当する。ここで、ページは、１つ又は複数のＰＳＣＢ３５２４から特定される。ホスト装置１０から仮想ボリューム８００へのアクセス、及び仮想ボリューム８００のアクセス領域に対するプールボリューム９００からの記憶領域の割り当てはページ単位で実行される。
【０１６５】
より具体的に、ストレージ装置３０は、フリーＰＳＣＢキュー３５２４０を参照し、第２種ＬＤＥＶ３５２３１に割り当てる必要な領域分（ページ）のＰＳＣＢ３５２４を取得する。そして、ストレージ装置３０は、この取得したＰＳＣＢ３５２４を、それぞれＶＶＯＬ−ＤＩＲ管理情報テーブル３５２３のエントリ３５２３２に割り当てる。すなわち、ストレージ装置３０は、ＶＶＯＬ−ＤＩＲ管理情報テーブル３５２３の各エントリ３５２３２のＰＳＣＢポインタ３５２３４に、対応するＰＳＣＢ３５２４を示すポインタを格納する。なお、割り当て済みのＰＳＣＢ３５２４は、フリーＰＳＣＢキュー３５２４０の連結から外される。
【０１６６】
これによって、第２種ＬＤＥＶ３５２３１の各ページ（スロット）が、ＶＶＯＬ−ＤＩＲ管理情報テーブル３５２３の各エントリ３５２３２のＰＳＣＢポインタ３５２３４で示されるＰＳＣＢ管理情報３５２４に割り当てられる。ＰＳＣＢ管理情報３５２４は、第１種ＬＤＥＶ５００のスロットに対応しているので、結果として、第２種ＬＤＥＶ３５２３１が第１種ＬＤＥＶ５００に割り当てられ、ホスト計算機１０のアクセス対象である仮想ボリューム８００が物理デバイスとして使用可能となる。
【０１６７】
また、ストレージ装置３０は、階層ごとにフリーＰＳＣＢ３５２４０を管理する。図１６では、階層としてＴｉｅｒ０とＴｉｅｒ１が例示されており、プール６０も同じ階層ごとに管理されている。１つの第２種ＬＤＥＶ３５２３１に複数の階層（例：Ｔｉｅｒ０及びＴｉｅｒ１）からページ単位で領域が割り当てられている。ストレージ装置３０は、ページ単位の情報をＰＳＣＢ単位の情報として管理する。階層番号３５２３５は、ＰＳＣＢが属する階層の番号である。
【０１６８】
コマンド制御プログラム３５０１は、ホスト計算機１０からライト要求を受けた場合、そのライト要求に含まれる仮想ボリューム８００のアドレスに基づいて、ＶＶＯＬ‐ＤＩＲ管理情報テーブル３５２３を辿り、ＶＶＯＬ−ＤＩＲ３５２３のエントリにＰＳＣＢが割り当たてられているか否かをチェックする。ＰＳＣＢが割り当てられている場合には、コマンド制御プログラム３５０１は、既に存在するＰＳＣＢにライトデータを上書きする。一方、ＰＳＣＢが割り当てられていない場合には、コマンド制御プログラム３５０１は、目的の階層の番号に割当てられたフリーＰＳＣＢキューに接続するＰＳＣＢを選択して、これをＶＶＯＬ−ＤＩＲ管理情報テーブル３５２３のエントリ３５２３２に割り当てる。
【０１６９】
さらに、ページ単位の情報として、ページの状態の検証から得られた情報がある。例えば、ページへのアクセス頻度に対する定期的なモニタの結果得られた情報である。また、プールボリューム９００に格納されたデータは、プール６０のページごとに情報を付して、どの仮想ボリューム８００のどのアドレスにデータが割当てられているかを検索できる情報を含んでいてもよい。
【０１７０】
なお、ＬＤＥＶ管理情報テーブル（図１３）、プール管理情報テーブル（図１４）、及び階層管理情報テーブル（図１５）は、ストレージ装置３０毎に保持される。また、管理装置２０では、全ストレージ装置３０のこれらの管理情報テーブル（図１３乃至１５）の情報を保持することも可能である。
【０１７１】
＜初期設定処理＞
図１７は、初期設定処理の概要を説明するためのフローチャートである。図１７では、初期設定処理の全体的な流れを簡単に説明し、各ステップの詳細については後述する。なお、図１７の各ステップの動作主体は、管理装置２０、ストレージ装置３０の所定のプログラムであるため、図１７の説明では、管理装置２０及びストレージ装置３０のいずれか、あるいはそれらが協働したものとして動作主体を構成しているものとする。
【０１７２】
まず、管理装置２０及びストレージ装置３０は、協働してプール全体を作成し、プール管理情報テーブル３５２１に作成されたプールの情報を登録する（Ｓ１７１０）。
【０１７３】
次に、ストレージ装置３０は、ストレージ装置３０に搭載されているメディアの種類からＬＡＮＥ管理情報を定義し、プール内に存在するＴｉｅｒの組み合わせよりＬＡＮＥを定義する（Ｓ１７２０）。
【０１７４】
最後に、ストレージ装置３０は、仮想ボリューム８００を定義する（Ｓ１７３０）。Ｓ１７３０では、仮想ボリューム８００を定義する処理に加えて、仮想ボリューム８００へＬＡＮＥを設定したり、使用するプールを選択したりする処理が実行される。
【０１７５】
＜プールの作成＞
図１８及び１９は、Ｓ１７１０のプール作成処理の詳細を説明するためのフローチャートである。
【０１７６】
先ず、管理装置２０の管理プログラム（図示せず）は、管理者がＧＵＩを操作して入力したプールの識別子であるプールＩＤ、用途、第１種ＬＤＥＶの数、及び各ＬＤＥＶの番号を受け付ける（Ｓ４２１１０）。
【０１７７】
管理装置２０の管理プログラムは、入力情報を含んだプールの作成コマンドを生成し、当該コマンドをストレージ装置３０に送信する（Ｓ４２１２０）。
【０１７８】
ストレージ装置３０のコマンド制御プログラム３５０１は、管理装置２０から送信されてきた作成コマンドを受領する（Ｓ４２１３０）。
【０１７９】
コマンド制御プログラム３５０１は、受信したコマンドがプールの設定処理のためのものであると判定すると、受領したコマンドをプール制御プログラム３５０７に渡し、受け取ったコマンドに基づいて、プールの設定・作成処理を実行するようにプール制御プログラムに指示する（Ｓ４２１５０）。
【０１８０】
続いて、プール制御プログラム３５０７は、コマンドに指定された情報に基づいて、プール管理情報テーブル３５２１におけるプール固有情報に、容量、空き容量、プールボリューム数を設定する（Ｓ４２２３０）。
【０１８１】
プール制御プログラム３５０７は、コマンドで指示されたＬＤＥＶ（プールボリューム）の数分、Ｓ４１２６０乃至Ｓ４１３２０の処理が実行されたか否かを判定する（Ｓ４２２５０）。
【０１８２】
コマンドで指示されたＬＤＥＶ（プールボリューム）の数分、Ｓ４１２６０乃至Ｓ４１３２０の処理が実行されている場合（Ｓ４２２５０でＹｅｓの場合）、処理はＳ４２１７０に移行する。コマンドで指示されたＬＤＥＶ（プールボリューム）の数分、Ｓ４１２６０乃至Ｓ４１３２０の処理が実行されていない場合（Ｓ４２２５０でＮｏの場合）、処理はＳ４２２６０に移行する。
【０１８３】
Ｓ４２２６０では、プール制御プログラム３５０７は、プールボリュームを構成するＬＤＥＶとしてコマンドで指定された複数のＬＤＥＶの中から１つのＬＤＥＶを選択し、選択したＬＤＥＶをプール管理情報テーブル３５２１のプールボリュームデバイス番号リスト３５２１７に登録する（Ｓ４２２６０）。
【０１８４】
次いで、プール制御プログラム３５０７は、コマンドで指示されたプールボリュームに関して、当該プールボリュームに対応する階層情報エリア（プールにある階層のリスト３５２２６）に階層管理情報３５２７１を既に設定済であるか否かを判定する（Ｓ４２２７０）。
【０１８５】
階層管理情報３５２７１が既に設定済であれば（Ｓ４２２７０でＹｅｓの場合）、処理はＳ４２２９０に移行する。階層管理情報３５２７１が未だ設定済でなければ（Ｓ４２２７０でＮｏの場合）、プール制御プログラム３５０７は、プールの階層を管理する管理情報のテーブル３５２７１を作成し、これをプール管理情報テーブル３５２１のプールにある階層のリスト３５２２６に登録し、処理をＳ４２２９０に移行させる（Ｓ４２２８０）。
【０１８６】
Ｓ４２９９０では、プール制御プログラム３５０７は、階層管理情報テーブル３５１３において対応する構成テーブル３５２７１にアクセスし、その階層に所属するプールボリュームリスト３５２８０にＬＤＥＶ番号ＩＤを登録する（Ｓ４２２９０）。
【０１８７】
次いで、プール制御プログラム３５０７は、プールボリュームに設定した第１種ＬＤＥＶにＰＳＣＢを割当て（Ｓ４２３００）、ＰＳＣＢを階層毎のフリーキューに接続する（Ｓ４２３１０）。
【０１８８】
以上の処理によって、プール制御プログラム３５０７が第１種ＬＥＤＶをプールボリュームに設定すると、構成制御プログラム３５０３は、ＬＤＥＶ管理情報テーブル３５１２（図１３）を設定し、どのＬＤＥＶがプールボリュームに使用されているかを管理できるようにする（Ｓ４２３２０）。これにより、複数の第１種ＬＤＥＶにおいて、プールボリュームとして設定されているものと設定されていないものを識別して管理することができるようになる。より具体的には、構成制御プログラム３５０３は、コマンドで指定されたＬＤＥＶ番号のＬＤＥＶ管理情報テーブル３５１２（対応する構成テーブル３５１２１）におけるデバイス属性３５１２８にプールボリュームを構成するＬＤＥＶであることを示す識別子（プールボリューム属性）を設定し、プールＩＤにプールボリュームが所属するプールＩＤを登録する。
【０１８９】
続いて、構成制御プログラム３５０３は、プール制御プログラム３５０７に制御権を渡し、プール制御プログラム３５０７はＳ４２２５０に処理を移行させ、全てのＬＤＥＶに対する処理が終了したと判定する（Ｓ４２２５０でＹｅｓの場合）と、コマンド制御プログラム３５０１に制御権を渡す。
【０１９０】
図１８に示すように、Ｓ４２１７０では、コマンド制御プログラム３５０１は、管理装置２０に、コマンドが成功した旨の応答を送信する（Ｓ４２１７０）。
【０１９１】
そして、管理装置２０の管理プログラム（図示せず）は、ストレージ装置３０からの応答を受信すると（Ｓ４２１８０）、一連の処理を終了する。
【０１９２】
なお、図１８及び１９では、管理装置２０からのユーザ指示に基づいてプールを生成することを説明したが、管理装置２０に代えてホスト計算機１０又は保守管理端末１５３から入力されたユーザ指示に基づいてプールを生成するものでもよい。
【０１９３】
また、ユーザからの入力情報に、プール作成する場合に使用されるべきメディアの種別が含まれていた場合、ストレージ装置３０は、指定されたメディアが存在するか否かをまず判定し、存在する場合は図１８及び１９に係るプールの新規設定処理を行う。指定されたメディアが存在しない場合は、指定のメディアがシステム内に無いことをユーザへ通知する。
【０１９４】
＜ＬＡＮＥ定義処理＞
続いて、図１１に示されるＬＡＮＥ定義を作成する処理（Ｓ１７２０）の詳細について説明する。ＬＡＮＥの定義については、どの階層をＬＡＮＥに設定するかについての指示に従って、ＬＡＮＥ定義を実行する方法と、性能要件やコスト要件が入力され、その要件に従ってストレージ装置３０がＬＡＮＥを定義する方法（ホスト計算機１０のアプリケーションの性能要件をＬＡＮＥに置き換える方法）等がある。ここでは、特に、後者の方法の具体例について説明する。
【０１９５】
性能要件やコスト要件がホスト計算機１０や管理装置２０等に入力されると、ホスト計算機１０や管理装置２０の管理プログラム（図示せず）が、入力情報からレスポンス性能（ｍｓ）、スループット（ＩＯＰＳ、ＭＢＰＳ）やビットコストを算出して、ストレージ制御処理に最適なメディアの種類を判定する。
【０１９６】
また、ユーザはサービスレベルを指定することによってメディアの種類を決定することができる。例えば、ユーザが「レスポンス性能重視」を選択すると、ＧＵＩのプログラムは、仮想ボリュームが利用すべきメディアとしてＳＳＤ又はＳＡＳが最適であると判定する。このとき、ＳＳＤとＳＡＳを使用するＬＡＮＥを定義する。別の例では、高性能を特に要求する仮想ボリュームには、超高性能ＬＡＮＥとして、ＳＳＤのみからページを割り当てるＬＡＮＥを定義する。その他、高性能ＬＡＮＥとして、ＳＳＤとＳＡＳのページを割り当てるＬＡＮＥを定義する。デフォルトで割り当てるＬＡＮＥとして、ＳＳＤ、ＳＡＳ、ＳＡＴＡからページを割り当てるＬＡＮＥを定義する。
【０１９７】
ユーザからの性能要件は、ホスト計算機１０や管理装置２０を介して取り込まれるが、プール作成時と同様に性能要件入力についてのインターフェースが提供されるようにしても良い。そして、アプリケーションの性能要件は、ユーザからの指示によりストレージ装置３０側が認識し、ストレージ装置３０側にてＬＡＮＥを定義する方法もある。
【０１９８】
ＬＡＮＥ定義プログラム３５０９は、上記のようにしてＬＡＮＥを決定すると、ストレージ装置３０内のＬＡＮＥ管理情報テーブル３５１４（図１１）に決定したＬＡＮＥ定義を登録する。
【０１９９】
図１１は、ＳＳＤ、ＳＡＳ、ＳＡＴＡの３階層のメディアからなるプールを持つストレージ装置３０のＬＡＮＥ定義例を示している。ＬＡＮＥ０、１、及び２では、１つのメディアのみからしか領域が割り当てられないＬＡＮＥとなっている。また、ＬＡＮＥ３と４は、３階層のうち、特定の領域を割り当て対象としないＬＡＮＥが存在している。
【０２００】
＜Ｓ１７３０の処理の詳細＞
以下、Ｓ１７３０の処理における、仮想ボリュームの定義（設定）処理、仮想ボリュームのＬＡＮＥ設定（ＬＡＮＥ情報登録）処理、及び仮想ボリュームのＬＡＮＥ情報にもとづいたプール選択処理について説明する。
【０２０１】
（i）仮想ボリュームの定義（設定）処理
通常、仮想ボリューム作成コマンドによる入力情報に基づいて、構成制御プログラム３５０３は、仮想ボリュームを作成する。ここで、仮想ボリューム作成コマンドによる入力情報には、仮想ボリュームの番号、仮想ボリュームに使用されるプールのプール番号、仮想ボリュームの仮想容量等が含まれる。なお、ＬＡＮＥの概念を導入しても同じように仮想ボリュームを設定することができる。仮想ボリューム作成コマンドによる入力情報に、仮想ボリュームの番号、仮想ボリュームに使用されるプールのプール番号、仮想ボリュームに使用されるメディアの種類、仮想ボリュームの仮想容量等を指定し、仮想ボリュームが定義される。また、仮想ボリュームに使用されるメディアの種類の代わりに、定義されたLANE番号でもよい。また、仮想ボリュームの性能要件に従って、仮想ボリューム毎にＬＡＮＥを設定するため、仮想ボリュームに使用されるプールのプール番号はユーザから指定されず、構成制御プログラム３５０３が、設定されたＬＡＮＥから、仮想ボリュームに使用するプールを選択し、管理装置２０へ報告する方法もある。
【０２０２】
構成制御プログラム３５０３は、ホスト計算機（サーバ）１０のアプリケーション毎に、または、ホスト計算機（サーバ）１０のアプリケーションで使用するボリュームのグループ毎に、使用するＬＡＮＥを決定するようにしても良い。この場合、アプリケーションが使用する複数の仮想ボリュームのうち、どの仮想ボリュームにどのＬＡＮＥまたは性能要件を定義するかについて、ユーザから指示される。指示方法は、ＬＡＮＥ定義で記載したものと同様である。前述のように、仮想ボリュームの番号毎に指示する方法の他、ＬＡＮＥ毎の仮想ボリューム数を指定して、ストレージ装置３０又は管理装置２０側で設定した結果をアプリケーションに返してもよい。
【０２０３】
例えば、図１１のＬＡＮＥが定義された場合、仮想ボリュームは、ＬＡＮＥ０〜５のいずれに対しても設定することができる。ユーザから高性能を要求される仮想ボリュームは、ＬＡＮＥ０に設定されるようにする。また、性能要件の指定がない場合には、デフォルトとしてＬＡＮＥ５に仮想ボリュームが設定するようにする。
【０２０４】
（ii）仮想ボリュームのＬＡＮＥ設定（ＬＡＮＥ情報登録）処理
そして、構成制御プログラム３５０３は、上記定義されたＬＡＮＥ情報を仮想ボリューム毎に図１３に登録する。
【０２０５】
また、図１３のＬＤＥＶ管理情報は、ＬＡＮＥ単位に管理する。管理形態はリストやキュー構造となる。図１１でＬＡＮＥが６種類定義された場合は、キューは６本存在する。
【０２０６】
また、仮想ボリュームにＬＡＮＥが設定されない場合は、全てのＴｉｅｒを使用できることとする。
【０２０７】
（iii）仮想ボリュームのＬＡＮＥ情報にもとづいたプール選択処理
次に、構成制御プログラム３５０３は、仮想ボリュームに設定された容量やＬＡＮＥ情報から、プール（候補）を選択する。
【０２０８】
より具体的に、構成制御プログラム３５０３は、仮想ボリュームに設定された容量やＬＡＮＥ情報から、条件にあったメディアを持つプールを候補とし、この候補の中で空き容量（仮想ボリュームへの未割当領域）が多いものから選択する。また、別の選択方法として、性能の高いメディアの記憶領域を多く含むプールを選択する方法もある。
【０２０９】
例えば、ストレージ装置３０が図３の構成の場合、構成制御プログラム３５０３は、条件にあったメディアをもつストレージ装置３０を選択し、選択したストレージ装置３０の中のプールを選択して登録する。ストレージ装置３０の選択基準として、未使用ＬＤＥＶ番号が多いこと、プロセッサ稼働率やハードディスクの負荷が低いことなどが挙げられる。また、リソースの負荷情報を考慮することにより、ストレージ装置３０間で性能が偏って、複数ストレージ装置３０全体での性能を使えないことを防止する。例えば、一般的に、１００個の要求を１つのストレージ装置が順に処理するより、２つのストレージ装置に５０個ずつ分散して処理する方が速く処理を完了できる。仮想ボリュームがコピー関連の機能と連携する場合はその負荷も考慮することもある。
【０２１０】
このようにして、構成制御プログラム３５０３は、仮想ボリュームがプロビジョニングするストレージ装置３０とプールボリュームを決定する。また、構成制御プログラム３５０３は、選択したプールのプールＩＤを仮想ボリューム毎に図１３へ登録する。
【０２１１】
＜リード処理＞
図２０は、リード処理を説明するためのフローチャートである。ホスト計算機１０がコマンドを発行すると（Ｓ１４１００）、ストレージ装置３０がコマンドを受け付ける（Ｓ１４１０２）。
【０２１２】
ストレージ装置３０のコマンド制御プログラム３５０１は、受け付けたコマンドを解析し（Ｓ１４１０４）、リード要求に含まれるアドレスを参照する（Ｓ１４１０６）。
【０２１３】
コマンド制御プログラム３５０１は、参照したアドレスに基づいて、アクセス対象ボリュームが第２種ＬＤＥＶ（仮想ボリューム）か否かを判定する（Ｓ１４１０６）。アクセス対象が第１種ＬＤＥＶ（シン・プロビジョニングのボリュームでない上述の実体的な論理ボリューム（実ボリューム））の場合、処理はＳ１４１１０に移行する。アクセス対象が第２種ＬＤＥＶ（シン・プロビジョニングのボリューム）の場合、処理はＳ１４１２６に移行する。
【０２１４】
Ｓ１４１１０では、コマンド制御プログラム３５０１は、ＬＵ―ＬＤＥＶ−ＶＤＥＶアドレス変換を行い（Ｓ１４１１０）、リード対象アドレスのデータがキャッシュメモリ上にあるか否かを判別する（Ｓ１４１１２）。
【０２１５】
リード対象アドレスのデータがキャッシュ上にあれば（Ｓ１４１１２でＹｅｓの場合）、コマンド制御プログラム３５０１は、キャッシュ上のデータをホスト計算機に転送し（Ｓ１４１２２）、ホスト計算機に完了を報告する（Ｓ１４１４２）。
【０２１６】
リード対象アドレスのデータがキャッシュ上に無ければ（Ｓ１４１１２でＮｏの場合）、コマンド制御プログラム３５０１は、ＶＤＥＶ―ＰＤＥＶ／外部ＬＵアドレス変換を行い（Ｓ１４１１４）、リード対象データが格納されているメディアのアドレスを算出（Ｓ１４１１６）し、メディアアクセスプログラム（図示せず）を起動する。
【０２１７】
メディアアクセスプログラムは、算出したメディアのアドレスからデータを読み出して、当該データをキャッシュに格納し（Ｓ１４１１８）、キャッシュに格納したことをコマンド制御プログラム３５０１に通知する（Ｓ１４１２０）。
【０２１８】
コマンド制御プログラム３５０１は、メディアアクセスプログラムからの通知を受領すると、キャッシュ上のデータをホスト計算機１０に転送する（Ｓ１４１２２）。
【０２１９】
一方、リード対象アドレスが仮想ボリューム（第２種ＬＤＥＶ：シン・プロビジョニングのボリューム）のアドレスの場合（Ｓ１４１０８でＮｏの場合）、コマンド制御プログラム３５０１は、ＬＵ―ＬＤＥＶ−ＶＤＥＶアドレス変換を行い（Ｓ１４１２６）、リード対象アドレスのデータがキャッシュ上にあるか否かを判別する（Ｓ１４１２８）。
【０２２０】
リード対象アドレスのデータがキャッシュ上にあれば（ステップＳ１４１２８でＹｅｓの場合）、コマンド制御プログラム３５０１は、キャッシュ上のデータをホスト計算機１０に転送する（Ｓ１４１２２）。
【０２２１】
リード対象アドレスのデータがキャッシュ上に無ければ（Ｓ１４１２８でＮｏ場合）、コマンド制御プログラム３５０１は、仮想―プールアドレス変換機能によって（Ｓ１４１３０）、仮想ボリュームのＶＤＥＶ空間のアドレスから、容量仮想化プールのＶＤＥＶ空間のアドレスへ変換する。
【０２２２】
このとき、一度もデータをライトされていない領域へのデータリード要求である場合（Ｓ１４１３２でＹｅｓの場合）は、コマンド制御プログラム３５０１は、デフォルトの値（例えば、オール「０」）を返すためのＶＤＥＶ空間（０データ領域）のアドレスを算出する（Ｓ１４１３６）。
【０２２３】
そうでなければ（Ｓ１４１３２でＮｏの場合）、コマンド制御プログラム３５０１は、初めてデータを書き込む際に仮想ボリュームにデータ書込用として割り当てられた領域か、さもなければ、プールの負荷分散や利用率向上、障害回復のために、先のデータ書込用などの領域からデータを移動した領域のＶＤＥＶアドレスを算出する（Ｓ１４１３４）。
【０２２４】
コマンド制御プログラム３５０１は、更に、ＶＤＥＶ―ＰＤＥＶ／外部ＬＵアドレス変換を行い、リード対象データが格納されているメディアのアドレスを算出する（Ｓ１４１３６）。
【０２２５】
そして、コマンド制御プログラム３５０１は、算出したメディアのアドレスからデータを読み出して、仮想ボリュームの空間のアドレス用に確保したキャッシュメモリに格納する（Ｓ１４１３８）。
【０２２６】
＜ライト処理＞
図２１は、ライト処理を説明するためのフローチャートである。ホスト計算機１０がライトコマンドを発行し（Ｓ１４１４０）、ストレージ装置３０がライトコマンドを受領すると（Ｓ１４１４２）、コマンド制御プログラム３５０１は、ライト要求のアドレスを参照する（Ｓ１４１４４）。
【０２２７】
コマンド制御プログラム３５０１は、アドレスが実ボリューム（第１種ＬＤＥＶ）のものであるか、仮想ボリューム（第２種ＬＤＥＶ）のものであるかを問わず、ＬＵ−ＬＤＥＶ−ＶＤＥＶアドレス変換を行い（Ｓ１４１４６）、ライト対象アドレスがキャッシュメモリに確保されているか否かを判別する（Ｓ１４１４８）。
【０２２８】
ライト対象アドレスに対してキャッシュメモリが確保されていなければ（Ｓ１４１４８でＮｏの場合）、コマンド制御プログラム３５０１は、ホスト計算機１０から転送されるデータを格納するためのキャッシュメモリ領域を確保する（Ｓ１４１５０）。
【０２２９】
次いで、コマンド制御プログラム３５０１は、データ受領準備ができたことをホスト計算機１０に報告する（Ｓ１４１５２）。
【０２３０】
コマンド制御プログラム３５０１は、ホスト計算機１０から転送データを受領すると（Ｓ１４１５４）、データを確保したキャッシュメモリに格納し（Ｓ１４１５６）、ホスト装置１０にライト完了報告を送信する（Ｓ１４１５８）。
【０２３１】
ライト要求アドレスが、第１種ＬＤＥＶ（上述の実ボリューム）のアドレスの場合（Ｓ１４１６０でＮｏの場合）、コマンド制御プログラム３５０１は、ＶＤＥＶ―ＰＤＥＶ／外部ＬＵアドレス変換（Ｓ１４１６２）を行い、ライト対象データを格納するメディアのアドレスを算出し（Ｓ１４１６４）、キャッシュメモリに格納したデータを、メディアアドレスに対して書き込む（Ｓ１４１６６）。
【０２３２】
一方、ライト要求アドレスが、仮想ボリューム（第２種ＬＤＥＶ：シン・プロビジョニングのボリューム）の場合（Ｓ１４１６０）、コマンド制御プログラム３５０１は、仮想ボリュームアドレス−プールアドレスの変換機能によって、ＶＶＯＬ−ＤＩＲテーブルを参照して、仮想ボリュームのＶＤＥＶ空間のアドレスをプールのＶＤＥＶ空間のアドレスへ変換する（Ｓ１４１６８）。
【０２３３】
ライト要求が、一度もデータをライトされていない領域へのライト要求である場合（Ｓ１４１７０でＹｅｓの場合）、コマンド制御プログラム３５０１は、ライトデータを格納するための記憶領域を確保するため、以下の処理を行う。仮想ボリュームに設定されているＬＡＮＥ内のＴｉｅｒの空き容量が予め設定された値より大きい、即ち、十分空き領域があると判断された場合（Ｓ１４１７４でＮｏの場合）、コマンド制御プログラム３５０１は、ＬＡＮＥ内の選択したＴｉｅｒから仮想ボリュームのアドレスに対応するデータを格納するためのプールの空き領域を動的に割当てる（Ｓ１４１８２及びＳ１４１８０）。ここで割り付け順序の優先されるＴｉｅｒとは、階層管理情報テーブル３５１３の設定の仕方より、Ｔｉｅｒ番号が若い番号とする。
【０２３４】
Ｓ１４１７４で容量に不足があると判断された場合（Ｓ１４１７４でＹｅｓの場合）、コマンド制御プログラム３５０１は、ＬＡＮＥ外のＴｉｅｒから領域を仮割当てする（Ｓ１４１７６及びＳ１４１８０）。これにより、領域を割り当てられないという状態を回避するようにしている。なお、ＬＡＮＥ外のＴｉｅｒから割当てを行った仮想ボリュームの番号が分かるように、テーブルを作成し、ＬＡＮＥ外のＴｉｅｒからの割当てを行った仮想ボリュームを管理するようにしても良い。
【０２３５】
ここで、動的な空き領域割当てされたプールのアドレスは、仮想ボリュームに対するライト対象のＶＤＥＶ空間のアドレスに対応するプールのＶＤＥＶ空間のアドレスとして算出される。
【０２３６】
なお、ストレージ装置３０は、プール内の同一の階層に所属する複数のプールボリューム間で、仮想ボリュームに対するページの割当てを均等化するようにしても良い。この均等化処理は、ＰＣＴ／ＪＰ２００９／０５８５３３号に記載されている。本出願人は、ＰＣＴ／ＪＰ／０５８５３３号の全ての記載事項をこの明細書にインコーポレートする。
【０２３７】
＜仮想ボリュームのＬＡＮＥの変更＞
稼働中に、ホスト計算機１０のアプリケーションが要件を変更することがある。高性能を求めていたアプリケーションが、ある時点から、中程度の性能でもよい運用になった場合、今までのように、高性能のメディアに積極的にデータを格納する必要がなくなるため、高性能のメディアを他の性能を重視する仮想ボリュームへ優先して割り当てることを行いたい。この場合、ユーザは、性能要件の指示と同様のインターフェースにより、対象となる仮想ボリュームの性能要件の変更、又は具体的に変更すべきＬＡＮＥ番号を指示する。性能要件の指示の場合、変更後の性能要件をＬＡＮＥに置き換え（管理装置２０又はストレージ装置３０側で行う。ＬＡＮＥ設定と同じ論理である）、置き換え後のＬＡＮＥ番号を、仮想ボリュームに設定する。具体的には、変更前のＬＡＮＥ番号キューから変更後のＬＡＮＥ番号キューへキューのつなぎかえを行う。
【０２３８】
例えば、図３の構成の場合、他のストレージ装置３０内に定義されるＬＡＮＥ及びプールから選択してもよい。また、図４の構成の場合には、仮想ボリュームの処理を行う制御プロセッサ１４３の変更も考慮する。例えば、仮想ボリューム＃０のＬＡＮＥを変更するときに、制御プロセッサ１４３Ａと１４３Ｂの稼働率に偏りがある場合、稼働率が低い方の制御プロセッサ１４３Ｂを使用するため、モジュール１２５１ｂのＬＡＮＥ又はプールへ変更する。仮想ボリューム＃０がモジュール１２５１ｂのプールへ変更されたら、仮想ボリューム＃０の実体をモジュール１２５１ａからモジュール１２５１ｂへマイグレーションする。
【０２３９】
別のバリエーションとして、ストレージ装置３０側でＩＯ頻度をモニタした結果から判断してＬＡＮＥ変更をする方法もある。ストレージ装置３０側でのモニタは、データを使用する頻度を監視し、一定時間ごとに予め設定した閾値と比較し、それ以下になったら頻度が下がったと判定するようにしても良い。ＬＡＮＥ変更を実際に行う前に、ユーザに確認する手段を設けるようにしても良い。
【０２４０】
また、モニタするＩＯには、ＬＡＮＥ変更のために発生するマイグレーション処理はカウントしない。
【０２４１】
以上により、ユーザの性能要件に対応したボリュームを作成することができるようになる。複数ストレージ装置で構成されるシステム環境では、アプリケーションの運用開始時の性能要件に沿ったメディアを使って仮想ボリュームを構成することができる。また、アプリケーション運用後にアプリケーション側の性能要件の変化に伴い、仮想ボリュームを構成するために必要なメディアが変化する。アプリケーション運用開始時に割り当てた階層を新しい要求性能にあった要求メディアを使うように仮想ボリュームの設定を変更できる。要求性能の変更は、ユーザからの指示により、またはデータを使用する頻度をストレージ装置３０側でモニタし、ストレージ装置３０側で自動的に変更する方法がある。ユーザからはメディアを意識することなく、即ち、プールの使い勝手は変えることなく、仮想ボリュームに設定された階層の中でデータ格納場所を選択できる。
【０２４２】
＜従来階層制御との比較＞
従来の階層制御技術では、１つの階層からなる仮想ボリューム（ＬＵ）は階層制御の対象にはなっておらず、階層制御の対象となるＬＵは必ず複数階層へデータを格納していた。このため、１つの階層からなるＬＵについては、どの階層からつくったＬＵであるかという、ＬＵの階層を意識していない。
【０２４３】
一方、本発明においては、複数階層が構成され、かつ、ＬＡＮＥの設定により、特定の仮想ボリューム（ＬＵ）が、１つの階層のプール領域のみ記憶領域を確保するため、階層を意識する必要がある。また、図３のような複数ストレージ装置構成においても、ストレージ装置間でのデータ移行をする際に、階層の意識が必要である。階層数が２つの場合は、階層が１つでは階層制御を行わない、階層が２つでは階層制御を行うという、階層制御をするか否かの選択を行う。さらに、階層数が３つ以上の場合は、階層制御の対象となる階層（Ｔｉｅｒ）を選択するという処理が増えることも従来の階層制御に比べて新しい。
【０２４４】
＜データ再配置（マイグレーション）＞
仮想ボリュームのデータを格納するために、初期の時点では、優先順位の高い階層から記憶領域を確保していた。ここで、優先順位とは、例えば、性能及び単位コストのうちの少なくとも一方で定義される。性能とは、例えば、データのＩ／Ｏの速度、又は、レスポンスタイム（ホストからコマンドを受けてから応答を返すまでの時間長）である。また、単位コストは、単位サイズのデータを保存するのに要する価格（例えばいわゆるビットコスト）である。
【０２４５】
記憶領域を確保する処理を続けていくと、高性能のメディアへのデータ格納量が多くなり、空き領域がついには無くなる。このため、データの再配置を行う。具体的には、仮想ボリュームに設定されたＬＡＮＥ内の他の階層（異なるメディア）へ分散してデータを格納することも考える。つまり、最初のデータ格納時には、ＬＡＮＥ内の性能の高いＴｉｅｒを優先して選択している場合であって、データ格納後、ページ毎のアクセス頻度をモニタすることにより、実際のアクセス頻度が高いものを高いＴｉｅｒに格納し、アクセス頻度が高くないものは、性能の低いＴｉｅｒへ再配置、即ち、データマイグレーションする処理を行う。
【０２４６】
図２２は、データ再配置の全体概要を示す図である。通常、ホスト計算機１０からＩ／Ｏを出すと、リード・ライト処理（図２０及び２１参照）が実行され、モニタ情報テーブル（図２３参照）にアクセス状況が登録される。
【０２４７】
再配置処理は、ストレージ装置３０内で一定時間毎に再配置指示により起動される（２２７０）、もしくは、ユーザからの指示により起動される（２２２０）。
【０２４８】
再配置処理が起動されると、再配置プログラム３５１０は、対象Ｔｉｅｒに存在すべき実ページの負荷（例えばＩ／Ｏ頻度）の範囲であるＴｉｅｒレンジを決定する（２２８０）。Ｔｉｅｒレンジは、容量と性能によって決定されるが、図２３のモニタ情報を参照してからＴｉｅｒレンジが決定される。
【０２４９】
Ｔｉｅｒのレンジが作成されると、再配置プログラム３５１０は、Ｔｉｅｒレンジに従って再配置処理２２９０を実施する。例えば、再配置プログラム３５１０は、複数の仮想ボリュームを１つずつ順々にチェックし、現在配置されているＴｉｅｒと配置されるべきＴｉｅｒが一致しているか判断する。一致していない場合には、データをマイグレーションして再配置する。なお、再配置する際には、仮に割り当てられている仮想ボリューム（例えば、図２１のＳ１４１７６及びＳ１４１８０で仮割り当てされた仮想ボリューム）を先に処理することが望ましい。
【０２５０】
＜モニタ情報テーブル＞
図２３は、モニタ情報テーブルの構成例を示す図である。モニタ情報テーブルは、仮想ボリューム毎に設けられている。1ページの情報は、構成テーブル２３００で示されている。仮想ボリュームは、最大、容量に格納可能なページ数分の構成テーブル２３００が連結される。
【０２５１】
モニタ情報テーブルの各構成テーブル２３００は、ページ番号２３０２と、合計Ｉ／Ｏ数２３０４と、平均Ｉ／Ｏ数２３０６と、最大Ｉ／Ｏ数２３０８と、最終Ｉ／Ｏ時刻２３１０と、を構成項目として有している。
【０２５２】
ページ番号２３０２は、仮想ボリュームの中のページの識別子を示す情報である。合計Ｉ／Ｏ数２３０４は、モニタ時間帯に対象仮想ページに行われたＩ／Ｏの数を示す情報である。平均Ｉ／Ｏ数２３０６は、合計Ｉ／Ｏ数２３０４の値を所定時間で割ることによって算出される値である。最大Ｉ／Ｏ数２３０８は、モニタ時間帯を構成する複数の時間帯における複数のＩ／Ｏ数（対象仮想ページについてのＩ／Ｏ数）のうちの最も大きいＩ／Ｏ数を示す情報である。最終Ｉ／Ｏ時刻２３１０は、対象仮想ページにＩ／Ｏが行われた最新の時刻である。
【０２５３】
＜Ｔｉｅｒレンジ＞
図２４は、Ｔｉｅｒレンジの例を示す図である。図２４は、横軸がページ数、縦軸がＩＯＰＳの図である。例えば、レンジ２４０１がＴｉｅｒ０を示し、レンジ２４０２がＴｉｅｒ１を示し、レンジ２４０３がＴｉｅｒ２のレンジを示している。
【０２５４】
点（ｘ，ａ）２４０４を例にして図２４について説明する。この点は、ＩＯＰＳがａとなるページがＸ個あることが読み取れる。また、この点は、Ｔｉｅｒ１のレンジ２４０２内にあるため、ＩＯＰＳがａであるページはＴｉｅｒ１に格納されるべきであることを示している。ＩＯＰＳがａであるページのうち、実際はＴｉｅｒ１以外に格納されているページがある。これらのページをＴｉｅｒ１へマイグレーションする処理がページの再配置である。
【０２５５】
図２４のＴｉｅｒレンジ図は、全体で１つを作成してもよいし、ＬＡＮＥ毎に作成してもよい。
【０２５６】
再配置処理の契機は、予め設定した一定時間毎に自動実行とユーザ指示による手動実行がある。なお、指示があるごと（図２２の２６２０）、あるいは一定時間ごと（図２２の２６７０）に図２４のＴｉｅｒレンジを作成しても良いし、その他、プールの閾値を監視することによりＴｉｅｒレンジ図を作成するようにしても良い。
【０２５７】
＜仮想ページが現在配置されているＴｉｅｒと本来配置されるべきＴｉｅｒが異なる例＞
図２５は、仮想ページが現在配置されているＴｉｅｒと本来配置されるべきＴｉｅｒが異なる例を示す図である。図２５では、ページと現状の格納されているＴｉｅｒ番号とページのＩＯＰＳが示されている。
【０２５８】
ページ２５０１は、Ｔｉｅｒ０に格納されているが、アクセス頻度（ＩＯＰＳ）はｃとなり、Ｔｉｅｒ２のレンジに入る。このため、ページ２５０１は、Ｔｉｅｒ０からＩＯＰＳに合ったＴｉｅｒ２へマイグレーションを実施する。ページ２５０２も同様に、Ｔｉｅｒ２からＴｉｅｒ０へマイグレーションする。
【０２５９】
＜マイグレーション処理＞
以下、マイグレーション処理（再配置処理）について説明する。図１１のＬＡＮＥが定義された場合を例にして説明する。
【０２６０】
（i）マイグレーション方法１
図２２に示したように、再配置指示により、Ｔｉｅｒレンジ作成が起動される（２２８０）。Ｔｉｅｒレンジが作成されると、再配置処理（２２９０）が起動する。再配置処理は、性能の高いＴｉｅｒ０を含むＬＡＮＥから実施し、なおかつ、ＬＡＮＥ間でＴｉｅｒ０から領域を確保する優先順位の順に行う。Ｔｉｅｒ０に関するマイグレーションが終わったら、Ｔｉｅｒ１に関するマイグレーションを行い、最後に残りを行う。このマイグレーション方法１は、Ｔｉｅｒレンジ図（図２４）を先に作成し、それに基づいて再配置処理を実行することが特徴となっている。
【０２６１】
本実施形態では、図１１のようにＬＡＮＥ定義がなされているため、具体的な再配置処理の実行順は、ＬＡＮＥ＃０、ＬＡＮＥ＃３、ＬＡＮＥ＃５、ＬＡＮＥ＃１、ＬＡＮＥ＃４、ＬＡＮＥ＃２の順番である。つまり、高性能なＴｉｅｒを含むＬＡＮＥを優先的に処理する。
【０２６２】
（ii）マイグレーション方法２
マイグレーション方法２は、まず最高性能のＬＡＮＥ（例えば、ＬＡＮＥ＃０）について再配置処理を実行し、その後にＴｉｅｒレンジ図（図２４）を作成して、それに基づいて他のＬＡＮＥについて再配置処理を実行することを特徴としている。
【０２６３】
図２６は、別の再配置処理方法を説明するためのフローチャートである。なお、図２６のフローチャートは図１１の定義に特化した処理となっているが、どのようなＬＡＮＥ定義であっても、基本的な考えは同じである。つまり、優先的に処理すべき最高性能ＴｉｅｒのみからなるＬＡＮＥについて再配置処理を行い、続いて、それを含む他のＬＡＮＥについて処理をする。最高性能のＴｉｅｒを含むＬＡＮＥが複数ある場合には、最高性能のＴｉｅｒ以外のＴｉｅｒの優先順位で再配置処理の順番が決定される。
【０２６４】
まず、Ｔｉｅｒ０は全搭載メディアの中で高性能としてあるため、再配置プログラム３５１０は、ＬＡＮＥ＃０に設定された仮想ボリュームの割当ページをＴｉｅｒ０に格納する再配置処理を行う（Ｓ２６０２）。なお、図１３のＬＤＥＶ管理情報テーブル３５１２は、前述したようにＬＡＮＥ番号毎に存在するため、そのうちＬＡＮＥ＃０のＬＤＥＶ管理情報について処理が行われる。
【０２６５】
次に、再配置プログラム３５１０は、Ｓ２６０２で使用したＴｉｅｒ０の容量を除いた容量のＴｉｅｒレンジを求める（Ｓ２６０４）。
【０２６６】
次に、再配置プログラム３５１０は、求めたＴｉｅｒレンジを基に、ＬＡＮＥ＃３に設定された仮想ボリュームへの再配置処理を行う（Ｓ２６０６）。
【０２６７】
同様に、再配置プログラム３５１０は、ＬＡＮＥ＃１、５、４、２に設定された仮想ボリュームへの再配置処理を行う（Ｓ２６０８乃至Ｓ２６１４）。
【０２６８】
図２６の処理により、最上位のＴｉｅｒ０からなるＬＡＮＥ＃０に設定された仮想ボリュームを優先してＴｉｅｒ０の領域を割り当てられる。また、ＬＡＮＥ＃３では、Ｔｉｅｒ０の容量が足りなければ、Ｔｉｅｒ１にデータを全て格納し、ＬＡＮＥ外からの領域割当がない状態を保証したい。さらに、ＬＡＮＥ＃１はＴｉｅｒ１からのみなるため、ＬＡＮＥ＃１の設定された仮想ボリュームもＴｉｅｒ１の領域を割り当てることを保証したい。図２６の処理順序により、上記要望は保証される。
【０２６９】
また、ＬＡＮＥ＃５やＬＡＮＥ＃４は、Ｔｉｅｒレンジより、Ｔｉｅｒ１と判定されたページをＴｉｅｒ２置くことがある。このように、マイグレーションできずに、あるべきＴｉｅｒと判断されたＴｉｅｒと異なるＴｉｅｒへ格納されたページに関しては、その旨の情報が、ＶＶＯＬ−ＤＩＲ３５２３の対象となるエントリ３５２３２における階層番号３５２３５（図１６参照）に格納される。
【０２７０】
また、定義されたＬＡＮＥが無い場合は、図２６の中の該当するＬＡＮＥの処理をスキップする。例えば、ＬＡＮＥ＃１が定義されていない場合は、Ｓ２６０８を実行せずに次の処理が実行される。
【０２７１】
（Ｓ２６０２の詳細）
図２７は、Ｓ２６０２の処理の詳細を説明するためのフローチャートである。Ｓ２６０２は、Ｔｉｅｒ０から構成されるＬＡＮＥ＃０に設定される仮想ボリューム（ＬＤＥＶ）の処理であるため、図１３のＬＤＥＶ管理情報テーブル３５１２のうち、ＬＡＮＥ＃０のＬＤＥＶ管理情報テーブル３５１２を用いて処理が行われる。該当するＬＤＥＶ管理情報テーブル３５１２の先頭から順番に、ＬＤＥＶを１つずつ選択し、そのＬＤＥＶの各ページがＴｉｅｒ０から割り当てられているか判定する。そして割り当てられていなければ、Ｔｉｅｒ０にデータを再配置する。以下、図２７のフローチャートに従って説明する。
【０２７２】
再配置プログラム３５１０は、まず、処理対象ＬＡＮＥ（例えば、ＬＡＮＥ＃０）のＬＤＥＶ管理情報テーブル３５１２に、Ｓ２７０４以下の処理対象となる仮想ボリューム（ＬＤＥＶ）があるか否か判定する（Ｓ２７０２）。処理対象のＬＤＥＶが全て処理済みか、処理対象のＬＤＥＶが存在しない場合（Ｓ２７０２でＮｏの場合）、Ｓ２６０２の処理は終了する。処理対象のＬＤＥＶがある場合（Ｓ２７０２でＹｅｓの場合）には、処理はＳ２７０２に移行する。
【０２７３】
続いて、再配置プログラム３５１０は、処理対象のＬＤＥＶに含まれるページのデータがＴｉｅｒ０に格納されているか判定する（Ｓ２７０４）。当該データがＴｉｅｒ０に格納されている場合（Ｓ２７０４でＹｅｓの場合）には、処理はステップＳ２７０８に移行する。当該データがＴｉｅｒ０に格納されていない場合（Ｓ２７０４でＮｏの場合）、処理はＳ２７０６に移行する。
【０２７４】
Ｓ２７０６では、再配置プログラム３５１０は、Ｔｉｅｒ０に処理対象ページのデータを格納するための領域を確保し、当該データをＴｉｅｒ０にマイグレーションする（Ｓ２７０６）。
【０２７５】
続いて、同じＬＤＥＶに次のページのデータが存在すれば、処理はＳ２７０４に移行し、Ｓ２７０４及びＳ２７０６の処理が繰り返され、処理対象のページが当該ＬＤＥＶにおいて最終ページであれば、処理はＳ２７０２に移行する（Ｓ２７０８）。
【０２７６】
以上のようにして、ＬＡＮＥ＃０（最高性能のＴｉｅｒから構成されるＬＡＮＥ）についての再配置処理が実行される。
【０２７７】
（Ｓ２６０６乃至Ｓ２６１４の詳細）
図２８は、Ｓ２６０６、Ｓ２６０８、Ｓ２６１０、Ｓ２６１２、及びＳ２６１４の処理の詳細を説明するためのフローチャートである。なお、図２８中の「ＬＡＮＥ」は、当該再配置処理前に対象ページが格納されたＬＡＮＥに変更があった場合は、変更後のＬＡＮＥを意味するものとする。また、本実施形態では、ＬＡＮＥ間で性能の高いメディアの容量を融通しあうことに重点を置いた処理となっている。別の観点では、図１１のＬＡＮＥの定義において、性能の安定したＬＡＮＥを優先して再配置するようにしても良い。この場合には、ＬＡＮＥ０、ＬＡＮＥ１、ＬＡＮＥ２、ＬＡＮＥ３、ＬＡＮＥ４、ＬＡＮＥ５の順に再配置処理を行うことになる。つまり、ＬＡＮＥを構成するＴｉｅｒの数か増えれば、ページを割り当てる選択肢（選択の幅）が増えるため、構成Ｔｉｅｒ数が少ない方が性能安定に寄与するからである。
【０２７８】
再配置プログラム３５１０は、まず、処理対象ＬＡＮＥ（例えば、ＬＡＮＥ＃３、５、１、４及び２）のＬＤＥＶ管理情報テーブル３５１２に、Ｓ２７０４以下の処理対象となる仮想ボリューム（ＬＤＥＶ）があるか否か判定する（Ｓ２８０２）。存在しなければ処理は終了する。なお、再配置処理はページ単位で実行される。
【０２７９】
処理対象の仮想ボリュームが存在する場合（Ｓ２８０２でＹｅｓ）、再配置プログラム３５１０は、当該仮想ボリュームの対象ページが当該領域に割り当てられてから一定時間が経過しているか否か判断する（Ｓ２８０４）。割り当てられてから直ぐの場合には当該ページの使用頻度は少ないと考えられるからである。一定時間経過していれば（Ｓ２８０４でＹｅｓの場合）、処理はＳ２８０６に移行し、一定時間経過していなければ（Ｓ２８０４でＮｏの場合）、処理はＳ２８２２に移行する。
【０２８０】
Ｓ２８０６において、再配置プログラム３５１０は、対象ページのデータがあるべきＴｉｅｒが仮想ボリュームのＬＡＮＥ内に存在するか判断する。ＬＡＮＥ外のＴｉｅｒに割り当てられても、結果としてあるべきＴｉｅｒに配置されることもあるからである。当該Ｔｉｅｒが仮想ボリュームのＬＡＮＥ内にある場合（Ｓ２８０６でＹｅｓの場合）、処理はＳ２８０８に移行し、ＬＡＮＥ内にない場合（Ｓ２８０６でＮｏの場合）、処理はＳ２８１６に移行する。
【０２８１】
Ｓ２８０８では、再配置プログラム３５１０は、当該対象仮想ページが存在する現在のＴｉｅｒとあるべきＴｉｅｒとが異なるか否か判断する。具体的には、図２４のＴｉｅｒレンジ図を用いて判断する。現ＴｉｅｒとあるべきＴｉｅｒが異なる場合（Ｓ２８０８でＹｅｓの場合）、処理はＳ２８１０に移行する。現ＴｉｅｒとあるべきＴｉｅｒが同一である場合（Ｓ２８０８でＮｏの場合）、処理はＳ２８１４に移行し、次のページがあれば、再度Ｓ２８０４からの処理が繰り返される。
【０２８２】
Ｓ２８１０では、再配置プログラム３５１０は、あるべきＴｉｅｒにおいて、対象ページを格納するための領域を確保可能か否か判断する（Ｓ２８１０）。確保可能であれば（Ｓ２８１０でＹｅｓの場合）、処理はＳ２８１２に移行し、確保可能でなければ（Ｓ２８１０でＮｏの場合）、処理はＳ２８１６に移行する。
【０２８３】
Ｓ２８１２において、再配置プログラム３５１０は、当該対象仮想ページを格納する領域をあるべきＴｉｅｒ内に確保し、データをマイグレーションする。そして、次のページがあれば、再配置プログラム３５１０は、再度Ｓ２８０４からの処理を繰り返す（Ｓ２８１４）。
【０２８４】
Ｓ２８０８で現ＴｉｅｒとあるべきＴｉｅｒが同一であると判断された場合、再配置プログラム３５１０は、現Ｔｉｅｒが仮想ボリュームのＬＡＮＥ内にあるか否か判断する（Ｓ２８１６）。現Ｔｉｅｒが当該ＬＡＮＥ内にある場合（Ｓ２８１６でＹｅｓの場合）、処理はＳ２８１４に移行し、次のページがあれば、再度Ｓ２８０４からの処理が繰り返される。
【０２８５】
現Ｔｉｅｒが当該ＬＡＮＥ内にない場合（Ｓ２８１６でＮｏの場合）、再配置プログラム３５１０は、対象ページを格納するための領域をＬＡＮＥ内のＴｉｅｒに確保可能か否か判断する（Ｓ２８１８）。確保可能であれば（Ｓ２８１８でＹｅｓの場合）、処理はＳ２８２０に移行し、確保可能でなければ（Ｓ２８１８でＮｏの場合）、処理はＳ２８１４に移行する。
【０２８６】
Ｓ２８１８では、再配置プログラム３５１０は、当該対象仮想ページを格納する領域をＬＡＮＥ内のＴｉｅｒに確保し、データをマイグレーションする。そして、次のページがあれば、再配置プログラム３５１０は、再度Ｓ２８０４からの処理を繰り返す（Ｓ２８１４）。
【０２８７】
Ｓ２８０４で当該仮想ボリュームの対象ページが当該領域に割り当てられてから一定時間が経過していると判断された場合、再配置プログラム３５１０は、現Ｔｉｅｒが仮想ボリュームのＬＡＮＥ外にあるか否か判断する（Ｓ２８２２）。現Ｔｉｅｒが仮想ボリュームのＬＡＮＥ外にある場合（Ｓ２８２２でＹｅｓの場合）、処理はＳ２８２４に移行する。現Ｔｉｅｒが仮想ボリュームのＬＡＮＥ内にある場合（Ｓ２８２２でＮｏの場合）、処理はＳ２８１４に移行し、次のページがあれば、再度Ｓ２８０４からの処理が繰り返される。
【０２８８】
Ｓ２８２４において、再配置プログラム３５１０は、ＬＡＮＥ内のＴｉｅｒにおいて処理対象ページを格納する領域が確保可能か否か判断する。確保可能でない場合（Ｓ２８２４でＮｏの場合）、処理はＳ２８１４に移行し、次のページがあれば、再度Ｓ２８０４からの処理が繰り返される。
【０２８９】
Ｓ２８２４において、ＬＡＮＥ内のＴｉｅｒにおいて処理対象ページを格納する領域が確保可能であると判断された場合、再配置プログラム３５１０は、ＬＡＮＥ内のＴｉｅｒに領域を確保し、当該処理対象ページのデータをマイグレーションする（Ｓ２８２６）。そして、次のページがあれば、再配置プログラム３５１０は、再度Ｓ２８０４からの処理を繰り返す（Ｓ２８１４）。
【０２９０】
なお、ＬＡＮＥの定義のバリエーションとして、隣同士のＴｉｅｒがない組み合わせも許可する場合もある。図１２Ｂに示すように、ＳＳＤとＳＡＴＡの組み合わせのＬＡＮＥが存在する。このようなＬＡＮＥ設定も可能である。本実施形態によれば、例えば、ほとんどＳＡＴＡで使うが、突発的に性能を要求されるデータがくることがわかっており、一部ＳＳＤにしておきたい仮想ボリュームなどへ対応できる。
【０２９１】
（iii）マイグレーション方法３
前述のとおり、仮想ボリュームに設定されたＬＡＮＥが変更される場合がある。また、ＬＡＮＥに指定されたＴｉｅｒの容量が足りずにページ割当できない場合、例外として、別のＴｉｅｒからページを一時的に割り当てる場合がある。これは、プール全体の容量が足りているにもかかわらず、局所的な容量枯渇が起こった場合に相当する。この場合、他の仮想ボリュームのページの割当や０ページを回収することによる容量確保を期待する。プールへの容量追加は、作業が煩雑で保守員の負荷がかかるため、なるべく行わないことが望ましい。
【０２９２】
このように、ＬＡＮＥの変更や一時的なＬＡＮＥ外Ｔｉｅｒからの割当が起こった場合、それぞれフラグを立て、再配置処理が起動された際に、優先して処理できるようにすると効率的に再配置することが可能となる。なお、フラグが立ったタイミングで再配置処理を起動してもよい。
【０２９３】
（Ｓ２６０２の詳細）
図２９は、マイグレーション方法３によるＳ２６０２の詳細を説明するためのフローチャートである。マイグレーション方法２（図２７）との相違点は、Ｓ２９１０の処理がＳ２７０２とＳ２７０４の間に実行されることである。つまり、再配置プログラム３５１０は、処理対象ＬＡＮＥにおける、Ｓ２７１０以降の処理が未処理のＬＤＥＶについて、さらに、仮割当てされたＬＤＥＶが存在するか（上記フラグが立っているＬＤＥＶが存在するか）判断し、処理対象のＬＤＥＶをさらに絞り込む（Ｓ２９１０）。絞り込まれたＬＤＥＶに対して、Ｓ２７０４乃至Ｓ２７０８の処理が実行さる。
【０２９４】
（Ｓ２６０６乃至Ｓ２６１４の詳細）
マイグレーション方法３によるＳ２６０６乃至Ｓ２６１４の処理も図２８に示されるマイグレーション方法２とほぼ同様であるが、Ｓ２６０２の処理の場合と同様に、Ｓ２８０２とＳ２８０４の処理の間に、Ｓ２８０２で選択されたＬＤＥＶに対して、さらに仮割当てされたＬＤＥＶがあるか否か判断し、さらに処理対象を絞り込む処理（図示せず）が挿入される。その他の処理は図２８と同様なので説明は省略する。
【０２９５】
また、ページの中には、予めマイグレーションをしない属性をつけることができ、そのページがＩＯ頻度（アクセス頻度）により、当該階層から別の階層へのマイグレーション対象となっても動かさない。属性の付け方として、具体的には、図１６のページ毎の管理情報である３５２４内にマイグレーション禁止フラグを設ける。マイグレーションする前に、フラグが立っているか否かを判定する。フラグが立っていない場合は、前述の説明通りマイグレーション処理を行い、フラグが立っている場合にはマイグレーションは行わない。マイグレーションを行わないと判定された場合、画面や管理サーバへマイグレーションが行われないことを表示または通知してもよい。
【０２９６】
＜再配置処理時の対象仮想ボリュームの処理優先順位＞
再配置処理は、（ａ）ＬＡＮＥ範囲外からページ仮割当した仮想ボリュームと、仮想ボリュームへの設定ＬＡＮＥの変更により、設定ＬＡＮＥ範囲からはみ出すページがある仮想ボリュームから優先して実行する方法と、（ｂ）Ｔｉｅｒレンジの範囲からはずれたページがある仮想ボリュームから優先して実行する方法、が考えられる。
【０２９７】
（ａ）の場合、ＬＡＮＥの変更により使用しないＴｉｅｒが発生したときは、使用しないＴｉｅｒにあるデータを優先してマイグレーションする。例えば、ＳＳＤ＋ＳＡＳをＳＡＳ＋ＳＡＴＡに変更する際、ＳＳＤをＳＡＳまたはＳＡＴＡへ移行する処理を先に行い、早期に仮想ボリュームに設定された新ＬＡＮＥにあった状態にする。その際、図３０に示す方針により、変更後のＬＡＮＥを選択する。
【０２９８】
（ｂ）の場合は、図２８の処理に相当する。再配置先は、仮想ボリュームに割り当てられたＬＡＮＥの範囲で選択し、Ｔｉｅｒレンジから判断される移動先ＴｉｅｒがＬＡＮＥ範囲外であれば、移動はしない。もしくは、近いＴｉｅｒに移動する。
【０２９９】
図３０Ａは、変更後のＬＡＮＥには、変更前ＬＡＮＥのＴｉｅｒ順序に従った移行先を選択してマイグレーションする基本方針を示す。図３０Ａに示されるように、マイグレーションの基本動作は、Ｔｉｅｒ＃ｎからＴｉｅｒ＃（ｎ＋１）にデータをマイグレーションするというものである。
【０３００】
図３０Ｂは、ＬＡＮＥ変更時のＴｉｅｒレンジ図からデータがあるべきＴｉｅｒを求めた場合の移行先選択方法を示している。あるべきＴｉｅｒが変更後ＬＡＮＥ内のＴｉｅｒではないため、あるべきＴｉｅｒ＃ｎに近いＴｉｅｒ＃（ｎ−１）を変更後ＬＡＮＥから選択し、データをマイグレーションする。
【０３０１】
図３０Ｃは、現在ＬＡＮＥ外のＴｉｅｒへ仮割り当てしている状況で、Ｔｉｅｒレンジ図からデータがあるべきＴｉｅｒを求めた場合の移行先選択方法を示している。図３０Ｂの方針と同じように、あるべきＴｉｅｒ＃ｎに近いＬＡＮＥ内のＴｉｅｒ（例えば、Ｔｉｅｒ＃（ｎ＋１）やＴｉｅｒ＃（ｎ−１））を選択し、データをマイグレーションする。
【０３０２】
なお、図２８の処理を行う仮想ボリュームを選択する方法として、仮想ボリュームの番号順に行う方法がある。もし、再配置処理が最後の仮想ボリュームまで実施されずに、再度再配置処理が起動された場合、前回の処理の終わった次の番号の仮想ボリュームから処理を開始するというものである。
【０３０３】
＜まとめ＞
仮想ボリュームとプールとが関連付けられており、仮想ボリュームへ書き込み要求があると、当該仮想ボリュームのためにプール内の記憶領域を確保し、確保された領域に書き込み対象のデータを格納する。プールは、各種メディア（性能の異なるメディア、例えば、ＳＳＤ、ＳＡＳ、ＳＡＴA）が混合されて構成される。また、この性能の異なるメディアが階層（Ｔｉｅｒ）を構成している。仮想ボリュームに対しては、プール内の複数階層（メディア）のうち、どれを使うか（即ち、ライトデータを格納する記憶領域をどこから確保するか）が設定される。なお、仮想ボリュームに対して使用する階層を割り当てる際には、ＬＡＮＥ管理情報を設定してＬＡＮＥ（ＬＡＮＥ：プールを構成する階層の組み合わせに関する情報）番号を割り当てることで、実現する方法でもよい。
【０３０４】
また、アプリケーションが使用する仮想ボリュームの性能要件を指定し、それに従ってＬＡＮＥを決定するようにしても良い。このように、プールと１つの階層（メディア）を対応させるのではなく、階層の組み合わせによってプールを構成しているので、仮想ボリュームの割当ての幅が広がり、ストレージシステムの利用の幅も広がり、さらには効率よくメディアの容量を使用することができる。よって、ホスト計算機のアプリケーションの性能要件に応じて、アプリケーションが使用する仮想ボリューム毎に、記憶領域を割り当てる要求メディアの選択を制御することが可能となる。また、シングルプール構成のまま、即ちプールの容量効率及び使い勝手を変えることなく、ホスト計算機がアプリケーションの性能要件にあったプール内のメディアを選択し、仮想ボリュームに割り当てることができる。性能要件が変更した場合、仮想ボリュームに割り当てるメディアも変更できる。
【０３０５】
また、本実施形態では、ホスト計算機からライト要求が来たときに、その要求で特定されるアドレスを含む階層内の容量が書き込み対象ページデータを格納するのに十分な容量を有していないこともある。このような場合には、アドレス情報から特定されるＬＡＮＥとは異なるＬＡＮＥの階層を選択して対象ページデータを書き込むようにする。そして、後で、適切な階層に当該ページデータを再配置するようにする。このようにすることにより、書き込み時に記憶領域を対象ページに割り当てることができないという状態が生じることを回避することができる。
【０３０６】
さらに、仮想ボリュームへのアクセスをページ単位でモニタして、アクセス状況を管理する。そして、モニタの結果に基づいて処理対象ページが格納されるべき階層を特定し、処理対象が格納されている階層と、処理対象ページが格納されるべき階層と、これらの階層が属するＬＡＮＥの情報に基づいて、処理対象ページのデータをマイグレーションする。
【０３０７】
より具体的には、格納されるべき階層が、処理対象ページが格納されている階層が属するＬＡＮＥを構成する階層であり、かつ、格納されるべき階層と処理対象ページが格納されている階層とが異なる場合には、処理対象ページのデータを格納されるべき階層にマイグレーション可能か判断してマイグレーションする。なお、処理対象ページのデータが格納されるべき階層にマイグレーション可能でない場合には、格納されるべき階層の近傍の階層のうちマイグレーション可能な最も近い階層に処理対象ページのデータをマイグレーションするのが好ましい。一方、格納されるべき階層が、処理対象ページが格納されている階層が属する対象のＬＡＮＥを構成する階層ではなく、かつ、処理対象ページが格納されている階層が対象のＬＡＮＥを構成する階層ではない場合には、対象のＬＡＮＥを構成する階層の記憶領域に処理対象ページをマイグレーションする。このようにすることにより、格納されるべき階層（メディア）の性能に近いメディアにデータを格納することができ、より適切にユーザの要求に応えることができるようになる。
【０３０８】
なお、本ストレージシステムでは、シングルプールではなく、複数プールを設定しても良い。この場合、例えば、それぞれのプールで、異なるＬＡＮＥ管理情報を用いても良い。また、仮想ボリュームは、プールを構成する階層の範囲で記憶領域が割り当てられる。
【０３０９】
なお、本発明は、実施形態そのままに限定されるものではなく、実施段階では、その要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【０３１０】
また、実施形態で示された各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現しても良い。また、上記各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現しても良い。各機能等を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、ＳＳＤ（Solid State Drive）等の記録或いは記憶装置、またはＩＣカード、ＳＤカード、ＤＶＤ等の記録或いは記憶媒体に格納することができる。
【０３１１】
さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。
【符号の説明】
【０３１２】
１０  ホスト計算機
２０  管理装置（管理計算機）
３０  ストレージ装置
３５１  構成情報
３５２  プール情報
３５０１  コマンド制御プログラム
３５０３  構成制御プログラム
３５０５  ディスクＩ／Ｏプログラム
３５０７  プール制御プログラム
３５０８  階層毎のプールボリューム管理プログラム
３５０９  ＬＡＮＥ定義プログラム
３５１０  再配置プログラム
３５１１  アドレス管理テーブル
３５１２  ＬＤＥＶ管理情報テーブル
３５１３  階層管理情報テーブル
３５１４  ＬＡＮＥ管理情報テーブル
３５１５  メディア管理情報テーブル
３５２１  プール管理情報テーブル
３５２２  プールボリューム管理情報テーブル
３５２７  プール階層管理情報テーブル
３５２３  ＶＶＯＬ−ＤＩＲ管理情報テーブル
３５２４  ＰＳＣＢ管理情報テーブル
【図１】
0005502232.tif 000002
【図２】
0005502232.tif 000003
【図３】
0005502232.tif 000004
【図４】
0005502232.tif 000005
【図５】
0005502232.tif 000006
【図６】
0005502232.tif 000007
【図７】
0005502232.tif 000008
【図８】
0005502232.tif 000009
【図９】
0005502232.tif 000010
【図１０】
0005502232.tif 000011
【図１１】
0005502232.tif 000012
【図１２Ａ】
0005502232.tif 000013
【図１２Ｂ】
0005502232.tif 000014
【図１３】
0005502232.tif 000015
【図１４】
0005502232.tif 000016
【図１５】
0005502232.tif 000017
【図１６】
0005502232.tif 000018
【図１７】
0005502232.tif 000019
【図１８】
0005502232.tif 000020
【図１９】
0005502232.tif 000021
【図２０】
0005502232.tif 000022
【図２１】
0005502232.tif 000023
【図２２】
0005502232.tif 000024
【図２３】
0005502232.tif 000025
【図２４】
0005502232.tif 000026
【図２５】
0005502232.tif 000027
【図２６】
0005502232.tif 000028
【図２７】
0005502232.tif 000029
【図２８】
0005502232.tif 000030
【図２９】
0005502232.tif 000031
【図３０Ａ】
0005502232.tif 000032
【図３０Ｂ】
0005502232.tif 000033
【図３０Ｃ】
0005502232.tif 000034