(57)【特許請求の範囲】
【請求項１】
ホスト装置と接続されたストレージシステムであって、
前記ホスト装置に仮想ボリュームを提供し、前記ホスト装置からの前記仮想ボリュームに対するライトコマンドとリードコマンドとを処理するコントローラと、
複数の物理記憶装置と、
を有し、
前記コントローラは、
前記仮想ボリュームの有する複数の仮想記憶領域のうちの第１仮想記憶領域へのデータのライトコマンドを受領すると、前記第１仮想記憶領域に、前記複数の物理記憶装置の有する複数の実記憶領域のいずれも割当られていない場合に、
前記仮想ボリュームについて設定されたＲＡＩＤレベルとコンビネーションとに基づいた数の物理記憶装置である２以上の物理記憶装置を選択し、
前記２以上の物理記憶装置から、それぞれ、いずれの仮想記憶領域にも割当てられていない２以上の実記憶領域を選択し、
前記選択された２以上の実記憶領域を前記第１仮想記憶領域に割り当て、
当該割当てられた２以上の実記憶領域に、前記ＲＡＩＤレベルまたはコンビネーションにしたがって、前記データに基づく２以上のデータを書き込み、
前記コントローラは、前記物理記憶装置毎に、前記物理記憶装置の有する実記憶領域毎に対するアクセス頻度を表すアクセス頻度情報を有しており、
前記コントローラは、
アクセス頻度情報に基づいて得られる物理記憶装置のアクセス頻度が第１の閾値を超過している物理記憶装置を選択し、その物理記憶装置に対応したアクセス頻度情報を基に、その物理記憶装置の有する実記憶領域の中でアクセス頻度が最も高い第１実記憶領域を選択し、
アクセス頻度情報に基づいて得られる物理記憶装置のアクセス頻度が最も低い物理記憶装置を選択し、その物理記憶装置の有する複数の実記憶領域のうち、いずれの前記仮想記憶領域にも割り当てられていない第２実記憶領域を選択し、前記第１実記憶領域に格納されているデータを前記第２実記憶領域に移行し、前記第１実記憶領域の割当て先の仮想記憶領域に、前記第１実記憶領域に代えて前記第２実記憶領域を割り当てる
ことを特徴とするストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記コントローラは、前記複数の仮想記憶領域それぞれと、前記複数の仮想記録領域それぞれに割当てられた前記複数の実記憶領域のいずれかとの対応付けの情報である第１情報を有し、
前記コントローラは、前記第１仮想記憶領域に、前記複数の実記憶領域のいずれかが割当てられた場合、前記第１仮想記憶領域と前記割当てられた実記憶領域との対応付けの情報を新たに第１情報に記憶する
ことを特徴とするストレージシステム。
【請求項３】
請求項１に記載のストレージシステムであって、
複数の前記物理記憶装置は、前記物理記憶装置の管理単位であるプールを形成し、
前記コントローラは、前記ホストに対して、前記仮想ボリュームに設定された前記ＲＡＩＤレベルまたは前記コンビネーションとは異なるＲＡＩＤレベルまたはコンビネーションが設定された他の仮想ボリュームを提供し、
前記コントローラは、前記第１仮想記憶領域に前記実記憶領域を割当てる場合、前記プールに含まれる前記物理記憶装置を選択し、
前記コントローラは、前記他の仮想ボリュームが有する第２仮想記憶領域に前記実記憶領域を割当てる場合、前記プールに含まれる前記物理記憶装置を選択する
ことを特徴とするストレージシステム。
【請求項４】
請求項３に記載のストレージシステムであって、
前記第１仮想記憶領域と、前記第２仮想記憶領域とは同一の物理記憶装置が有する異なる前記実記憶領域が割当てられる
ことを特徴とするストレージシステム。
【請求項５】
請求項１に記載のストレージシステムであって、
前記ストレージシステムに新たに物理記憶装置が追加された場合、
前記コントローラは、アクセス頻度情報に基づいて得られる物理記憶装置のアクセス頻度が前記第１の閾値を超過している物理記憶装置を選択し、その物理記憶装置に対応したアクセス頻度情報を基に、その物理記憶装置の有する実記憶領域の中でアクセス頻度が最も高い第３実記憶領域を選択し、前記第３実記憶領域に格納されているデータを、前記新たに追加された物理記憶装置が有するいずれかの実記憶領域に移行する
ことを特徴とするストレージシステム。
【請求項６】
請求項５に記載のストレージシステムであって、
前記コントローラは、前記ストレージシステムが有する前記複数の物理記憶装置の情報である第２情報を有し、
前記コントローラは、前記新たに追加された物理記憶装置の情報を前記第２情報に記憶する
ことを特徴とするストレージシステム。
【請求項７】
請求項１に記載のストレージシステムであって、
前記物理記憶装置に障害が発生すると、
前記コントローラは、
障害が発生した物理記憶装置の実記憶領域が割り当てられている仮想記憶領域に割り当てられている残りの１以上の実記憶領域にそれぞれ記憶されている１以上のデータから、前記障害が発生した物理記憶装置の実記憶領域に記憶されているデータを修復し、
前記複数の物理記憶装置の有する前記複数の実記憶領域のうちから、いずれの前記仮想記憶領域にも割り当てられていない第４実記憶領域を選択し、
修復後のデータを前記第４実記憶領域に移行することを特徴とするストレージシステム。
【請求項８】
ホスト装置と接続されたストレージシステムの制御方法であって、
前記ストレージシステムは、
前記ホスト装置に仮想ボリュームを提供し、前記ホスト装置からの前記仮想ボリュームに対するライトコマンドとリードコマンドとを処理するコントローラと、
複数の物理記憶装置と、
を備え、
前記コントローラは、
前記仮想ボリュームの有する複数の仮想記憶領域のうちの第１仮想記憶領域へのデータのライトコマンドを受領し、
前記第１仮想記憶領域に、前記複数の物理記憶装置の有する複数の実記憶領域のいずれも割当ていない場合に、
前記仮想ボリュームについて設定されたＲＡＩＤレベルとコンビネーションとに基づいた数の物理記憶装置である２以上の物理記憶装置を選択し、
前記２以上の物理記憶装置から、それぞれ、いずれの仮想記憶領域にも割当てられていない２以上の実記憶領域を選択し、
前記第１仮想記憶領域に割り当て、
当該割当てられた２以上の実記憶領域に、前記ＲＡＩＤレベルまたはコンビネーションにしたがって、処理されたデータに基づく２以上のデータを書き込み、
前記コントローラは、前記物理記憶装置毎に、前記物理記憶装置の有する実記憶領域毎に対するアクセス頻度を表すアクセス頻度情報を有しており、
前記コントローラは、
アクセス頻度情報に基づいて得られる物理記憶装置のアクセス頻度が第１の閾値を超過している物理記憶装置を選択し、その物理記憶装置に対応したアクセス頻度情報を基に、その物理記憶装置の有する実記憶領域の中でアクセス頻度が最も高い第１実記憶領域を選択し、
アクセス頻度情報に基づいて得られる物理記憶装置のアクセス頻度が最も低い物理記憶装置を選択し、その物理記憶装置の有する複数の実記憶領域のうち、いずれの前記仮想記憶領域にも割り当てられていない第２実記憶領域を選択し、前記第１実記憶領域に格納されているデータを前記第２実記憶領域に移行し、前記第１実記憶領域の割当て先の仮想記憶領域に、前記第１実記憶領域に代えて前記第２実記憶領域を割り当てる
ことを特徴とするストレージシステムの制御方法。
【請求項９】
請求項８に記載のストレージシステムの制御方法であって、
前記物理記憶装置の管理単位であるプールを形成し、
前記ホストに対して、前記仮想ボリュームに設定された前記ＲＡＩＤレベルまたは前記コンビネーションとは異なるＲＡＩＤレベルまたはコンビネーションが設定された他の仮想ボリュームを提供し、
前記第１仮想記憶領域に前記実記憶領域を割当てる場合、
前記プールに含まれる前記物理記憶装置を選択し、
前記他の仮想ボリュームが有する第２仮想記憶領域に前記実記憶領域を割当てる場合、
前記プールに含まれる前記物理記憶装置を選択する
ことを特徴とするストレージシステムの制御方法。
【請求項１０】
請求項９に記載のストレージシステムの制御方法であって、
前記第２仮想記憶領域に前記実記憶領域を割当てる場合、
少なくとも１つの前記第１仮想記憶領域に割当てた前記実記憶領域を有する前記物理記憶装置と同一の前記物理記憶装置が有する、いずれの前記仮想記憶領域にも割当てられていない前記実記憶領域を選択する
ことを特徴とするストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Dynamic Provisioning（Thin Provisioningとも呼ばれる）の技術が適用される記憶制御に関する。
【背景技術】
【０００２】
現在、企業等が扱うデータを安全に格納するために、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  （ｏｒ  Ｉｎｅｘｐｅｎｓｉｖｅ）  Ｄｉｓｋｓ）を構成するストレージシステムが広く用いられている。さらに、ストレージシステムの容量の利用効率向上のために、シン・プロビジョニングの導入がすすんでいる。
【０００３】
ＲＡＩＤでは、複数の記憶装置からＲＡＩＤグループを構成し、ＲＡＩＤグループ上に論理ボリュームを構成している。シン・プロビジョニングによらないストレージシステムでは、ホストに対して、論理ボリュームが提供され、論理ボリューム作成時から、当該論理ボリュームに論理ボリュームの全記憶容量に等しい容量の記憶装置の記憶領域が割当てられる。これに対し、ホストに対して仮想ボリュームが提供されるシン・プロビジョニングでは、当該仮想ボリューム内の仮想記憶領域には、当初仮想記憶領域に対応する記憶装置の記憶領域は割当てられておらず、仮想記憶領域に書き込み要求が来た際に、仮想記憶領域に対してだけ論理ボリュームに割当てられている記憶装置の記憶領域を割当てている。このため、システム導入時には当面必要な容量の記憶装置のみを備え、必要に応じて記憶装置を増設していくことが容易にできる。
【０００４】
シン・プロビジョニングにおける技術として、特許文献１では、シン・プロビジョニングを適用したストレージシステムにおいて、複数の記憶装置上のデータの再配置を論理ボリューム単位で行う方法が提案されている。
【０００５】
また、特許文献２では、記憶装置を増設後、データの冗長構成を変更することにより、記憶装置を記憶装置単位で増設する方法が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２３４１５８号公報
【特許文献２】特開２００９−２３０３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１では、仮想ボリュームに割当てる前から複数の記憶装置でＲＡＩＤグループを構成し、ＲＡＩＤグループ内の論理ボリューム単位でデータの管理が行われている。たとえば、論理ボリューム内のデータを当該ＲＡＩＤグループの複数の記憶装置に跨って格納することにより、データの冗長性を保っている。そのため、記憶装置の増設は、ＲＡＩＤグループを構成するために必要な数の記憶装置をひとまとまりとして、１回の増設で複数の記憶装置の増設を行わなければならない。
【０００８】
一方、上記特許文献２の方法でも、上記特許文献１と同様に、仮想ページへの割当て前に、複数の記憶装置でＲＡＩＤグループを構成し、その中の論理ボリュームを仮想ボリュームに提供することが前提である。そのことから、単一の記憶装置を増設後、ＲＡＩＤグループの再構成が必要となり、データの冗長構成を再編する必要が生じる。
【０００９】
本発明の1つの目的は、シン・プロビジョニングを適用したストレージシステムにおいて、記憶装置増設の自由度を向上させ、記憶装置増設時のコストを低減する方法を提供することである。
【００１０】
また、本発明の他の目的は、シン・プロビジョニングを適用したストレージシステムにおいて、記憶装置の増設が業務性能へ与える影響を押さえることである。
【００１１】
さらに、本発明の他の目的は、記憶装置の障害発生に備えた特定の記憶装置であるスペアディスクを必要としないストレージシステムを提供することである。
【課題を解決するための手段】
【００１２】
シン・プロビジョニング機能を有するストレージシステムにおいて、複数の記憶装置でＲＡＩＤグループを構成せず、ＲＡＩＤグループ内の論理ボリュームを仮想ボリュームに提供する代わりに、記憶装置の記憶領域を仮想ボリュームに直接提供する。すなわち、ストレージシステムは、仮想記憶領域に書き込み要求を受領したとき、まず、当該仮想記憶領域が含まれる仮想ボリュームに設定されたＲＡＩＤレベルとデータの冗長構成（データの分割数と生成するパリティの数）を特定する。特定されたＲＡＩＤレベルと冗長構成に応じた数の記憶装置を、当該仮想記憶領域に対して選択する。選択された記憶装置のそれぞれから、いずれの仮想記憶領域にも割当てられていない記憶領域を選択し、当該仮想記憶領域に割当てる。この割当てられた記憶領域に対して、データを分割し、パリティと共に書き込む。
【発明の効果】
【００１３】
本発明の一実施形態によれば、記憶装置の増設コストを最小限に抑えながら、記憶容量を拡張することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態に係るストレージシステムの構成を示す。
【図２】本実施形態に係る動的容量拡張の概要を示す。
【図３】ＤＰプールの第１の構成例を示す。
【図４】ＤＰプールの第２の構成例を示す。
【図５】メモリ１２３に記憶されるコンピュータプログラム及び情報を示す。
【図６】ＤＰ共通仕様テーブル５０３の構成を示す。
【図７】プール管理テーブル５０５の構成を示す。
【図８】仮想ＬＵ管理テーブル５０７の構成を示す。
【図９】ＰＤＥＶ管理テーブル５０９の構成を示す。
【図１０】実ページ管理テーブル５１１の構成を示す。
【図１１】マッピング管理テーブル５１３の構成を示す。
【図１２】実アクセス状況テーブル５１５の構成を示す。
【図１３】仮想アクセス状況テーブル５１７の構成を示す。
【図１４】ＤＰプールの生成の流れを示すフローチャートである。
【図１５】仮想ＬＵ２０１の生成の流れを示すフローチャートである。
【図１６】仮想ページに対するライトの流れの概要を示す。
【図１７】仮想ページに対するライトの流れを示すフローチャートである。
【図１８】仮想ページに対するリードの流れを示すフローチャートである。
【図１９】複数のＲＡＩＤタイプに従って格納されたデータが一つのＤＰプールに混在している様子を示す。
【図２０】一つの仮想ページに割り当てられるＰＤＥＶがＰＤＥＶ番号に依存せずに選択された場合のデータユニット（データ要素及びパリティの総称）の配置の一例を示す。
【図２１】ＰＤＥＶの増設の際に行われる処理のフローチャートである。
【図２２】再配置処理のフローチャートを示す。
【図２３】ＰＤＥＶが増設された場合に行われる再配置の一例を示す。
【図２４】ＰＤＥＶの減設の際に行われる処理のフローチャートである。
【図２５】アクセス頻度に基づく再配置の一例を示す。
【図２６】ＰＤＥＶに障害が発生した場合のリストア処理の概要を示す。
【図２７】リストア優先タイプのリストア処理のフローチャートである。
【図２８】交換優先タイプのリストア処理のフローチャートである。
【発明を実施するための形態】
【００１５】
図１は、本発明の一実施形態に係るストレージシステムの構成を示す。
【００１６】
一以上（例えば二つ）のホスト装置（以下、ホスト）１０１がストレージシステム１０３に接続されている。ホスト１０１とストレージシステム１０３との間の通信は、例えば、ファイバチャネル（ＦＣ）又はｉＳＣＳＩ（ＳＣＳＩはSmall Computer System Interfaceの略）に従うプロトコルで行われる。
【００１７】
ストレージシステム１０３は、仮想ＬＵ（ＬＵはLogical Unitの略）を管理する。仮想ＬＵとは、Dynamic Provisioning（Thin Provisioningとも呼ばれる）の技術に従う仮想的なＬＵである。仮想ＬＵは、複数の仮想ページ（仮想的な記憶領域）を有する。各仮想ページには、一以上のアドレス（例えばＬＢＡ（Logical Block Address））が属する。
【００１８】
ホスト１０１は、仮想ＬＵに対するＩ／Ｏ（Input/Output）を行うためのＩ／Ｏコマンドを送信する。Ｉ／Ｏコマンドは、Ｉ／Ｏ先情報を有する。Ｉ／Ｏ先情報は、仮想ＬＵのＬＵＮ（Logical Unit Number）と、仮想ＬＵの仮想ページのアドレスとを含む。ホスト１０１は、一般的には計算機であるが、計算機に代えて、別のストレージシステムであってもよい。
【００１９】
ストレージシステム１０３は、複数の物理記憶デバイス（ＰＤＥＶ）１１７と、複数のＰＤＥＶ１１７に接続された記憶制御装置（以下、「ＤＫＣ」と表記する）１１１とを有する。ＤＫＣ１１１は、多重化（例えば二重化）されている。複数のＰＤＥＶ１１７は、同種のＰＤＥＶで構成されていても良いし、複数種類のＰＤＥＶが混在していても良い。ＰＤＥＶの種類としては、例えば、ＨＤＤ（Hard Disk Drive）とＳＳＤ（Solid State Drive）がある。
【００２０】
ＤＫＣ１１１は、ホスト１０１からＩ／Ｏコマンド（ライトコマンド又はリードコマンド）を受信し処理する。ＤＫＣは、例えば、ライトコマンドを受信した場合、受信したライトコマンドから特定される一以上のライト先の仮想ページの各々に、複数の実ページ（実体的な記憶領域）を割り当てる。以下、仮想ページに実ページを割り当てることを、便宜上、「動的容量拡張」と言う。
【００２１】
ＤＫＣ１１１に、一以上のバックエンド接続デバイス１１３を介して、複数のＰＤＥＶ１１７が接続されている。バックエンド接続デバイス１１３は、多重化（例えば二重化）されている。バックエンド接続デバイス１１３としては、例えば、ＦＣ−ＡＬ（Fibre Channel-Arbitrated Loop）或いはＳＡＳ（Serial Attached SCSI）エクスパンダなどを採用することができる。一つのバックエンド接続デバイス１１３に、複数のＰＤＥＶ１１７のうちの二以上のＰＤＥＶ１１７が接続される。
【００２２】
少なくとも一つのＤＫＣ１１１に、管理装置１０５が接続されている。管理装置１０５は、例えばＬＡＮ（Local Area Network）を通じて、少なくとも一つのＤＫＣ１１１に接続されている。管理装置１０５は、例えば計算機であり、ＬＵに関する各種設定及び参照を行うことができる。
【００２３】
各ＤＫＣ１１１は、ＦＥ−ＩＦ（フロントエンドインタフェース）１２１と、ＢＥ−ＩＦ（バックエンドインタフェース）１２７と、コントローラとを有する。コントローラは、例えば、転送回路１２９と、メモリ１２３と、ＭＰ（マイクロプロセッサ）１２５とを有する。コントローラは、それらの要素に加えて、例えば、ＭＰ１２５に代えてパリティを生成するためのハードウェア回路を有しても良い。
【００２４】
転送回路１２９には、ＦＥ−ＩＦ１２１、メモリ１２３、ＭＰ１２５及びＢＥ−ＩＦ１２７が接続されている。転送回路１２９は、それらの要素１２１、１２３、１２５及び１２７間でやり取りされるデータ或いはコマンドを中継する。
【００２５】
ＦＥ−ＩＦ１２１は、ホスト１０１に接続されるインタフェース装置である。ＦＥ−ＩＦ１２１は、複数の通信ポートを有しており、各通信ポートに、ホスト１０１が接続される。ＦＥ−ＩＦは、ホスト１０１から、Ｉ／Ｏコマンドを受信し、受信したＩ／Ｏコマンドを、ＭＰ１２５に転送する。
【００２６】
ＢＥ−ＩＦ１２７は、ＰＤＥＶ１１７に接続されるインタフェース装置である。ＢＥ−ＩＦ１２７は、複数の通信ポートを有しており、各通信ポートに、バックエンド接続デバイス１１３を通じてＰＤＥＶ１１７が接続される。
【００２７】
メモリ１２３は、一以上のメモリで構成されている。メモリ１２３は、情報（例えばテーブル）及びコンピュータプログラムを記憶する。メモリ１２３は、キャッシュ領域を有する。キャッシュ領域には、ホスト１０１とＰＤＥＶ１１７との間でやり取りされるデータが一時格納される。
【００２８】
ＭＰ１２５は、ホスト１０１からのＩ／Ｏコマンドを処理する。また、ＭＰ１２５は、管理装置１０５からの要求に応答して、情報（例えばＬＵに関する情報）をメモリ１２３に設定したり、メモリ１２３に格納されている情報（例えばＬＵに関する情報）を管理装置１０５に提供したりする。
【００２９】
図２は、本実施形態に係る動的容量拡張の概要を示す。
【００３０】
仮想ＬＵ２０１とＤＰ（Dynamic Provisioning）プール２０３がＤＫＣ１１１によって管理されている。一つのＤＰプール２０３には、仮想ＬＵ２０１が関連付けられ、ＤＰプール２０３からその仮想ＬＵ２０１に実ページが割り当てられる。
【００３１】
仮想ＬＵ２０１は、複数の仮想ページで構成されており、ホスト１０１から認識される。仮想ＬＵ２０１について、ＲＡＩＤレベルが定義される。仮想ＬＵ２０１のＲＡＩＤレベル、コンビネーション及び容量などを、例えば管理装置１０５（図１参照）から設定可能である。ここで、ＲＡＩＤレベルとは、ＲＡＩＤの技術をその機能によって、分類したものであり、ＲＡＩＤ５、ＲＡＩＤ６のように表される。たとえば、ＲＡＩＤ５では、書き込み要求の来たデータをｎ個（ｎは自然数）に分割し、当該データから１つのパリティデータを作成して、（ｎ＋１）台の記憶装置に分散して書き込む。また、ＲＡＩＤ６では、分割したｎ個のデータに対し、２種類のパリティデータを作成し、（ｎ＋２）台の記憶装置に分散して書き込まれる。また、コンビネーションとは、ＲＡＩＤを構成するために任意に定められたデータ要素への分割数ｎと、ＲＡＩＤレベルによって定められるパリティの数ｍ（ｍは０以上の整数）との組み合わせであり、ｎＤ＋ｍＰ(or Ｄ）と表される。つまり、仮想ページに書き込まれたデータは、ｎ個のデータ要素に分割され、ｍ個のパリティが生成され、（ｎ＋ｍ）台の記憶装置に分散して書き込まれる。
【００３２】
ＤＰプール２０３は、ストレージシステム１０３が有する複数のＰＤＥＶ１１７のうちの一部又は全部のＰＤＥＶ１１７で構成されている。ＤＰプール２０３は、多数の実ページで構成されている。
【００３３】
ここで、本実施形態の一つの特徴として、ＤＰプール２０３にはＲＡＩＤの定義が無く、実ページが、複数のＰＤＥＶで構成されるＲＡＩＤグループからではなく、個々のＰＤＥＶから提供されることがある。
【００３４】
一般に、Dynamic Provisioning（Thin Provisioning）の技術によれば、仮想ＬＵに割り当てられる実ページは、予め定義されたＲＡＩＤグループの記憶空間を基に形成されている。具体的には、例えば、プールは、一又は複数のＲＡＩＤグループで構成されている。各ＲＡＩＤグループは、ＲＡＩＤレベル及びコンビネーションに基づき二以上のＰＤＥＶで構成されている。実ページは、一つのＲＡＩＤグループに基づいて構成されており、一つの実ページが、ＲＡＩＤグループを構成する二以上のＰＤＥＶに予め跨っている。このため、仮想ページに割り当てられた実ページに対するライトでは、ライト対象のデータが、その実ページを提供するＲＡＩＤグループのＲＡＩＤレベル及びコンビネーションに基づいて書き込まれる。
【００３５】
それに対し、本実施形態によれば、ＲＡＩＤグループの定義は無く、ＤＰプール２０３を構成する個々のＰＤＥＶ１１７は、ＲＡＩＤグループを構成するメンバではない。実ページが、個々のＰＤＥＶから提供される。また、ＲＡＩＤレベル及びコンビネーションは、仮想ＬＵ２０１について設定されている。仮想ＬＵ２０１の仮想ページに、その仮想ＬＵ２０１のＲＡＩＤレベル及びコンビネーションに基づいて決定された数の実ページがＤＰプール２０３から割り当てられ、その仮想ページに対するライトの対象のデータが、割り当てられた複数の実ページに書き込まれる。
【００３６】
ＲＡＩＤ技術によれば、ライト対象のデータを構成する複数のデータ要素のうちの二以上のデータ要素（或いは、ライト対象のデータ及びそのデータの複製）が、一つのＰＤＥＶ１１７に格納されることはない。このため、本実施形態では、一つのＰＤＥＶ１１７から二以上の実ページが同一の仮想ページに割り当てられることはない。つまり、一つの仮想ページには、それぞれ異なるＰＤＥＶ１１７から実ページが割り当てられる。従って、ＤＰプールに属する複数のＰＤＥＶの使用率（ＰＤＥＶの容量に対する割当て済み実ページの総容量の比率）が均一になるように、仮想ページに複数の実ページが割り当てられることが望ましい。なぜなら、例えば一つのＰＤＥＶにたくさんの空きの実ページがあっても、その一つのＰＤＥＶから複数の実ページを一つの仮想ページに割り当てることができず、故に、結果として、空きの実ページが余ってしまう可能性があるからである。また、このとき、複数のＰＤＥＶの使用率で無く複数のＰＤＥＶの空き容量が均一になるように実ページが割当てても良い。
【００３７】
仮想ＬＵ２０１及びＤＰプール２０３は、一つであっても複数であっても良い。図２の例によれば、仮想ＬＵ２０１として、二つの仮想ＬＵ＃１及び＃２があり、ＤＰプール２０３として、一つのＤＰプール＃１があり、ＤＰプール＃１に仮想ＬＵ＃１及び＃２が関連付けられているとする。また、仮想ＬＵ＃１のＲＡＩＤレベル及びコンビネーションがＲＡＩＤ５（２Ｄ＋１Ｐ）であり、仮想ＬＵ＃２のＲＡＩＤレベル及びコンビネーションがＲＡＩＤ６（４Ｄ＋２Ｐ）であるとする。また、ＤＰプール＃１が、六つのＰＤＥＶ＃０１〜＃０６で構成されているとする。
【００３８】
仮想ＬＵ＃１のＲＡＩＤレベル及びコンビネーション：ＲＡＩＤ５（２Ｄ＋１Ｐ）によれば、仮想ＬＵ＃１の仮想ページＶ１１に対するライトの対象となるデータは、ＤＫＣ１１１によって、二つのデータ要素に分割され、且つ、一つのパリティが生成される。そのため、仮想ページＶ１１には、三つのＰＤＥＶ＃０１〜＃０３から三つの実ページＲ１１、Ｒ２２及びＲ３１が割り当てられる。ＤＫＣ１１１によって、仮想ページＶ１１と実ページＲ１１、Ｒ２２及びＲ３１との対応関係が管理される。そして、三つの実ページＲ１１、Ｒ２２及びＲ３１のうちの二つに、二つのデータ要素がそれぞれ書き込まれ、残りの一つに、パリティが書き込まれる。
【００３９】
また、仮想ＬＵ＃２のＲＡＩＤレベル及びコンビネーション：ＲＡＩＤ６（４Ｄ＋２Ｐ）によれば、仮想ＬＵ＃２の仮想ページＶ２１に対するライトの対象となるデータは、四つのデータ要素に分割され、且つ、二つのパリティが生成される。そのため、仮想ページＶ２１には、六つのＰＤＥＶ＃０１〜＃０６から六つの実ページＲ１８、Ｒ２３、Ｒ３３、Ｒ４１、Ｒ５１及びＲ６１が割り当てられる。ＤＫＣ１１１によって、仮想ページＶ２１と実ページＲ１８、Ｒ２３、Ｒ３３、Ｒ４１、Ｒ５１及びＲ６１との対応関係が管理される。そして、六つの実ページＲ１８、Ｒ２３、Ｒ３３、Ｒ４１、Ｒ５１及びＲ６１のうちの四つに、四つのデータ要素がそれぞれ書き込まれ、残りの二つに、二つのパリティがそれぞれ書き込まれる。
【００４０】
一つのＤＰプール２０３は、一以上の属性が同じ物理記憶デバイス（ＰＤＥＶ）で構成されていても良いし、属性が異なるＰＤＥＶで構成されていても良い。属性としては、例えば、ＰＤＥＶのＩ／Ｏ性能や信頼性（例えばＭＴＢＦ（Mean Time Between Failures））がある。ＰＤＥＶのＩ／Ｏ性能としては、例えば、ＰＤＥＶそれ自体の種類（例えば、ＨＤＤ、ＳＳＤなど）、インタフェースの種類（例えば、ＦＣ（Fibre Channel）、ＳＡＴＡ（Serial ATA）、ＳＡＳ（Serial Attached SCSI））、ディスクの回転速度などがある。
【００４１】
図３に示すように、一つのＤＰプール２０３は、異なる種類の属性を有するＰＤＥＶ（図３の例ではＨＤＤとＳＳＤ）で構成されていても良い。仮想ページは、異なる属性を有する複数の実ページから構成された場合、各ＰＤＥＶからデータを書き込みや読み出しを行う際、Ｉ／Ｏ性能の低いＰＤＥＶに合わせられて性能が低下するため各仮想ページは同一の属性を有するＰＤＥＶから構成されることが望ましい。しかし、各仮想ＬＵは、１つのプールに所属している。そのため、同一プール内に属性が異なるＰＤＥＶを混在させることで、アクセス頻度等に応じて、同一仮想ＬＵの仮想ページごとに属性が異なるＰＤＥＶ内の実ページを割当てることができる。また、同一仮想ページに対しては同一の属性を有するＰＤＥＶから実ページを割当てた場合も、ある属性のＰＤＥＶの容量が不足したとき、属性が異なるＰＤＥＶから実ページを割当てることができる。そして、当該容量不足の属性のＰＤＥＶを増設後に、異なる属性のＰＤＥＶに割当てたデータ要素を増設したＰＤＥＶに割当てることができる。この種の構成のＤＰプール２０３によれば、ディスクの容量を効率的に消費することができる。
【００４２】
また、図４に示すように、一つのＤＰプール２０３は、複数の属性のうちの所定の一種類以上の属性が同じＰＤＥＶで構成されても良い。図４の例によれば、ＰＤＥＶの性能、ＰＤＥＶのインタフェース、及び、ＰＤＥＶそれ自体の種類の全てが同じであるＰＤＥＶで一つのＤＰプール２０３が構成されている。この種の構成のＤＰプール２０３によれば、仮想ＬＵ２０１に対するアクセスについて所望のＩ／Ｏ性能を見込むことが出来る。例えば、ＤＰプール＃Ｅに関連付けられていた仮想ＬＵのＩ／Ｏ性能を上げることが望ましい場合には、その仮想ＬＵを、ＤＰプール＃Ｅを構成するＰＤＥＶよりもＩ／Ｏ性能の高いＰＤＥＶで構成されているＤＰプール（例えばＤＰプール＃Ｄ）に関連付けるといったことが行われても良い。なお、仮想ＬＵが関連付けられるＤＰプールが別のＤＰプールに変更される場合、変更元のＤＰプールから変更先のＤＰプールにデータ要素及びパリティが移動される。
【００４３】
ＤＰプール２０３に関する情報や、仮想ページと複数の実ページとの対応関係を表す情報などが、ＤＫＣ１１１によって管理される。それらの情報は、例えば、ＤＫＣ１１１のメモリ１２３（例えばキャッシュ領域）に格納される。
【００４４】
図５は、メモリ１２３に記憶されるコンピュータプログラム及び情報を示す。
【００４５】
メモリ１２３は、制御プログラム５０１を記憶する。制御プログラム５０１は、ＭＰ１２５で実行される。以下の説明においてプログラム５０１によって行われる処理は、実際にはＭＰ１２５によって行われる。
【００４６】
メモリ１２３は、ＤＰ共通仕様テーブル５０３、プール管理テーブル５０５、仮想ＬＵ管理テーブル５０７、ＰＤＥＶ管理テーブル５０９、実ページ管理テーブル５１１、マッピング管理テーブル５１３、実アクセス状況テーブル５１５及び仮想アクセス状況テーブル５１７を記憶する。実ページ管理テーブル５１１は、ＤＰプール２０３毎に存在する。これらのテーブルのうちの少なくとも一つのテーブルにおける情報は、テーブル以外の構造で管理されても良い。
【００４７】
図６は、ＤＰ共通仕様テーブル５０３の構成を示す。
【００４８】
ＤＰ共通仕様テーブル５０３は、ＤＰプールの仕様に関する共通の情報を有する。具体的には、例えば、テーブル５０３は、ＤＰプールの仕様に関する項目毎に、項目２００と値２０１とを有する。項目２００は、項目の名称であり、値２０１は、その項目についての値である。図６の例によれば、作成可能最大プール数（ストレージシステム１０３に作成可能なＤＰプール２０３の最大数）の５０であり、実ページ容量が３２ＫＢ（キロバイト）である。
【００４９】
なお、本実施形態では、全てのＤＰプールにおいて、実ページの容量は同じである。そのため、実ページの容量、ＲＡＩＤレベル及びコンビネーションを基に、仮想ＬＵ２０１を構成する仮想ページの容量が決定される。コンビネーションがｎＤ＋ｍＰのとき、仮想ページには、実ページ容量のｎ倍の容量のデータを記憶でき、（ｎ＋ｍ）倍の容量が割当てられる。例えば、ＲＡＩＤ６（４Ｄ＋２Ｐ）の仮想ＬＵ２０１の仮想ページの容量は、ＲＡＩＤ５（２Ｄ＋１Ｐ）の仮想ＬＵ２０１の仮想ページの容量の２倍である。なぜなら、前述の通り、実ページの容量は同じであり、ＲＡＩＤ６（４Ｄ＋２Ｐ）の仮想ＬＵ２０１の仮想ページに割り当てられる実ページの数が、ＲＡＩＤ５（２Ｄ＋１Ｐ）の仮想ＬＵ２０１の仮想ページに割り当てられる実ページの数の２倍だからである。具体的には、ＲＡＩＤ６（４Ｄ＋２Ｐ）の仮想ＬＵ２０１の仮想ページには、六つの実ページが割り当てられ、ＲＡＩＤ５（２Ｄ＋１Ｐ）の仮想ＬＵ２０１の仮想ページには、三つの実ページが割り当られる。
【００５０】
図７は、プール管理テーブル５０５の構成を示す。
【００５１】
プール管理テーブル５０５は、ＤＰプール２０３に関する情報を有する。具体的には、例えば、テーブル５０５は、ＤＰプール２０３毎に、プール番号２１０、ＰＤＥＶ番号リスト２１１、実割当容量２１２、使用容量２１３及び先頭ＰＤＥＶ番号２１４を有する。
【００５２】
プール番号２１０は、ＤＰプール２０３の番号である。
【００５３】
ＰＤＥＶ番号リスト２１１は、ＤＰプール２０３を構成するＰＤＥＶの番号のリストである。
【００５４】
実割当容量２１２は、ＤＰプール２０３を構成するＰＤＥＶの総容量である。従って、ＤＰプール２０３に新たにＰＤＥＶが追加される場合、実割当容量２１２は、追加されたＰＤＥＶの容量分増えることになり、一方、ＤＰプール２０３からＰＤＥＶが減設された場合、実割当容量２１２は、減設されたＰＤＥＶの容量分減ることになる。
【００５５】
使用容量２１３は、ＤＰプール２０３から割り当てられている実ページの総容量である。
【００５６】
先頭ＰＤＥＶ番号２１４は、実ページの次の割当元となるＰＤＥＶの番号である。例えば、本実施形態では、仮想ページに割り当てられる二以上の実ページを提供する二以上のＰＤＥＶは、ＰＤＥＶ番号の順である。具体的には、例えば、ＤＰプールがＰＤＥＶ＃０１〜＃０４の四つのＰＤＥＶで構成されていて、仮想ＬＵのＲＡＩＤレベル及びコンビネーションがＲＡＩＤ５（２Ｄ＋１Ｐ）であり、且つ、その仮想ＬＵにおける未割当ての仮想ページ（実ページが割り当てられていない仮想ページ）に初めてライトが発生する場合、先頭ＰＤＥＶ番号２１４は「１」であり、それ故、ライト先の仮想ページには、ＰＤＥＶ＃０１、＃０２及び＃０３からそれぞれ実ページが割り当てられる。その後、先頭ＰＤＥＶ番号２１４が「４」に更新される。そして、その仮想ＬＵにおける未割当ての仮想ページに二回目にライトが発生する場合、先頭ＰＤＥＶ番号２１４が「４」であるため、ライト先の仮想ページには、ＰＤＥＶ＃０４、＃０１及び＃０２から、それぞれ実ページが割り当てられる。その後、先頭ＰＤＥＶ番号２１４が「３」に更新される。このように、本実施形態では、仮想ページに割り当てられる二以上の実ページの提供元の二以上のＰＤＥＶは、ＰＤＥＶ番号の順序を基に決定される。なお、ＤＰプールを構成する複数のＰＤＥＶの番号は、連続でも非連続でもよい。また、仮想ページに割り当てられる二以上の実ページの提供元の二以上のＰＤＥＶは、番号の小さい順に代えて、番号の大きい順でも良い。ＰＤＥＶの番号順に、提供元の二以上のＰＤＥＶが決定されるので、ＤＰプール内のＰＤＥＶが均等に使用される。
【００５７】
図８は、仮想ＬＵ管理テーブル５０７の構成を示す。
【００５８】
仮想ＬＵ管理テーブル５０７は、仮想ＬＵ２０１に関する情報を有する。仮想ＬＵの設定及び確認を行うことに使用できる。具体的には、例えば、テーブル５０７は、仮想ＬＵ２０１毎に、ＬＵＮ２２０、所属プール番号２２１、ＲＡＩＤレベル２２２、コンビネーション２２３及び容量２２４を有する。
【００５９】
ＬＵＮ２２０は、仮想ＬＵ２０１のＬＵＮである。
【００６０】
所属プール番号２２１は、仮想ＬＵ２０１が所属するＤＰプール（仮想ＬＵ２０１が関連付けられているＤＰプール）２０３の番号である。
【００６１】
ＲＡＩＤレベル２２２は、仮想ＬＵ２０１のＲＡＩＤレベルである。
【００６２】
コンビネーション２２３は、仮想ＬＵ２０１のコンビネーションである。
【００６３】
容量２２４は、仮想ＬＵ２０１の容量である。
【００６４】
図９は、ＤＰプール作成等に使用するＰＤＥＶ管理テーブル５０９の構成を示す。
【００６５】
ＰＤＥＶ管理テーブル５０９は、ＰＤＥＶ１１７に関する情報を有する。具体的には、例えば、テーブル５０９は、ＰＤＥＶ１１７毎に、ＰＤＥＶ番号２３０、所属プール番号２３１、ＩＦ種別２３２、ＰＤＥＶ性能２３３、容量２３４、空き容量２３５及びデバイス種別２３６を有する。
【００６６】
ＰＤＥＶ番号２３０は、ＰＤＥＶ１１７の番号である。
【００６７】
所属プール番号２３１は、ＰＤＥＶ１１７が所属するＤＰプール（ＰＤＥＶ１１７が構成要素の一つとなっているＤＰプール）２０３の番号である。「ｎｕｌｌ」は、いずれのプールにも割当てられていないことを示す。
【００６８】
ＩＦ種別２３２は、ＰＤＥＶ１１７のインタフェースの種別（例えば、ＳＡＳ、ＳＡＴＡなど）である。
【００６９】
ＰＤＥＶ性能２３３は、ＰＤＥＶ１１７のデバイス種別２３６に応じた表記となる。例えば、ＰＤＥＶ１１７のデバイス種別２３６がＨＤＤであれば、ＰＤＥＶ性能２３３は、ディスクの回転速度（例えば７２００回転／秒）等で表される。
【００７０】
容量２３４は、ＰＤＥＶ１１７の容量、言い換えれば、ＰＤＥＶ１１７が提供する実ページの総容量である。
【００７１】
空き容量２３５は、ＰＤＥＶ１１７が提供する実ページのうち仮想ページに割り当てられておらず、仮想ページに割当可能な実ページの総容量である。
【００７２】
デバイス種別２３６は、ＰＤＥＶ１１７それ自体の種別である。デバイス種別２３６としては、例えば、ＨＤＤ、ＳＳＤがある。
【００７３】
図１０は、実ページに対する仮想ページの関係を示す実ページ管理テーブル５１１の構成を示す。実ページ管理テーブル５１１は仮想ページに対して、実ページを割当てる際等に使用する。
【００７４】
実ページ管理テーブル５１１は、ＤＰプール毎に存在する。実ページ管理テーブル５１１は、そのテーブル５１１に対応したＤＰプール内の実ページに関する情報を有する。具体的には、例えば、テーブル５１１は、実ページ毎に、ＰＤＥＶ番号２４０、実ページ番号２４１、ＬＵＮ２４２、仮想ページ番号２４３及びアクセスカウンタ２４４を有する。
【００７５】
ＰＤＥＶ番号２４０は、実ページを提供するＰＤＥＶ１１７の番号である。
【００７６】
実ページ番号２４１は、実ページの番号である。
【００７７】
ＬＵＮ２４２は、実ページの割当先の仮想ページを有する仮想ＬＵ２０１のＬＵＮである。
【００７８】
仮想ページ番号２４３は、実ページの割当先の仮想ページの番号である。
【００７９】
アクセスカウンタ２４４は、実ページに対して行われたＩ／Ｏ（アクセス）の回数である。なお、本実施形態のように代替情報として例えば実アクセス状況テーブル５１５があれば、アクセスカウンタ２４４は無くても良い。
【００８０】
図１１は、ライトコマンドを受領した仮想ページに実ページが割当てられているか判定する際等に使用するマッピング管理テーブル５１３の構成を示す。
【００８１】
マッピング管理テーブル５１３は、仮想ページと実ページとの対応関係を表す。具体的には、例えば、テーブル５１３は、仮想ページ毎に、ＬＵＮ２５０、仮想ページ番号２５１、実ページ識別情報２５２及びアクセスカウンタ２５３を有する。
【００８２】
ＬＵＮ２５０は、仮想ページを有する仮想ＬＵ２０１のＬＵＮである。
【００８３】
仮想ページ番号２５１は、仮想ページの番号である。
【００８４】
実ページ識別情報２５２は、仮想ページに割り当てられている実ページの識別情報、例えば、実ページの番号と、その実ページを有するＰＤＥＶ１１７の番号との組合せである。
【００８５】
アクセスカウンタ２５３は、仮想ページに対して行われたＩ／Ｏ（アクセス）の回数である。なお、本実施形態のように代替情報として例えば仮想アクセス状況テーブル５１７があれば、アクセスカウンタ２５３は無くても良い。
【００８６】
図１２は、再配置等をする記憶装置を決定する際等に参照する実アクセス状況テーブル５１５の構成を示す。
【００８７】
実アクセス状況テーブル５１５は、一以上のＤＰプール２０３に共通であり、実ページ毎のアクセス状況を表す情報を有する。具体的には、例えば、テーブル５１５は、実ページ毎にセルを有し、セルが、実ページに対するアクセスの頻度を表す情報（以下、実アクセス頻度情報）を有する。実アクセス頻度情報は、例えば、その情報に対応する実ページの使用の有無を表す情報を含み、ライトの頻度とリードの頻度とを別々に表す。ライト頻度は、単位期間当たりのライトの回数、具体的には、例えば、１分、１時間、１日及び１週間毎のライトの回数である。リード頻度は、単位期間当たりのリードの回数、具体的には、例えば、１分、１時間、１日及び１週間毎のリードの回数である。
【００８８】
いずれかのＤＰプール２０３にＰＤＥＶ１１７が一つ追加された場合、その追加されたＰＤＥＶ１１７に対応するレコードがテーブル５１５に追加される。また、いずれかのＤＰプール２０３からＰＤＥＶ１１７が一つ減らされた場合、その減らされたＰＤＥＶ１１７に対応するレコードがテーブル５１５から除去される。
【００８９】
図１３は、再配置等をする仮想ページを決定する際等に参照する仮想アクセス状況テーブル５１７の構成を示す。
【００９０】
仮想アクセス状況テーブル５１７は、仮想ページ毎のアクセス状況を表す情報を有する。具体的には、例えば、テーブル５１７は、仮想ページ毎にセルを有し、セルが、仮想ページに対するアクセスの頻度を表す情報（以下、仮想アクセス頻度情報）を有する。仮想アクセス頻度情報は、例えば、その情報に対応する仮想ページの使用の有無を表す情報を含み、ライトの頻度とリードの頻度との両方を表す。ライト頻度は、単位期間当たりのライトの回数、具体的には、例えば、１分、１時間、１日及び１週間毎のライトの回数である。リード頻度は、単位期間当たりのリードの回数、具体的には、例えば、１分、１時間、１日及び１週間毎のリードの回数である。
【００９１】
いずれかのＤＰプール２０３に仮想ＬＵ２０１が一つ関連付けられた場合、その関連付けられた仮想ＬＵ２０１に対応するレコードがテーブル５１７に追加される。また、いずれかのＤＰプール２０３から仮想ＬＵ２０１が一つ外された場合、その外された仮想ＬＵ２０１に対応するレコードがテーブル５１７から除去される。
【００９２】
なお、仮想アクセス頻度情報及び前述の実アクセス頻度情報のうちの少なくとも一方は、ライト頻度とリード頻度とを別々に表すことに代えて、ライトかリードに関わらずアクセスの頻度を表しても良いし、ライト頻度のみを表しても良いし、リード頻度のみを表しても良い。
【００９３】
また、仮想アクセス頻度情報及び実アクセス頻度情報のうちの少なくとも一方が、仮想領域或いは実ページにアクセスが発生する都度に更新されてもよいし、所定のスケジュールで（例えば定期的に）更新されてもよい。例えば、制御プログラム５０１が、処理されたコマンド履歴をメモリ１２３で管理してよい。コマンド履歴は、処理されたＩ／Ｏコマンド毎に、例えば、種別、日時（例えば、受信日時、処理完了日時、或いは、Ｉ／Ｏコマンドが有するタイムスタンプが表す日時）、アクセス先の仮想ページの番号、アクセス先の実ページの識別情報（例えばＰＤＥＶ番号と実ページ番号との組合せ）を有してよい。制御プログラム５０１は、Ｉ／Ｏコマンドを処理した場合、そのＩ／Ｏコマンドに関する種別、日時、アクセス先の仮想ページの番号、及びアクセス先の実ページの識別情報を、コマンド履歴に追加してよい。制御プログラム５０１は、そのコマンド履歴を基に、仮想アクセス頻度情報及び実アクセス頻度情報を更新してよい。
【００９４】
図１４は、ＤＰプールの生成の流れを示すフローチャートである。
【００９５】
（Ｓ１０）
制御プログラム５０１が、管理装置１０５から、プール生成指示を受ける。プール生成指示は、パラメータとして、例えば、以下の（ｐ１）〜（ｐ３）のうちの、少なくとも（ｐ１）がある。（ｐ１）は、ユーザによる入力が必須のパラメータであり、（ｐ２）及び（ｐ３）は、ユーザが任意に入力するパラメータである。
（ｐ１）ユーザ（例えば管理者）が要求する容量（ユーザ要求プール容量）。ユーザ要求プール容量は、実割当容量２１２とは異なる。なぜなら、実割当容量２１２は、ＤＰプールに所属するＰＤＥＶの総容量であるからである。
（ｐ２）ＰＤＥＶ１１７の属性を表す情報（ＰＤＥＶ情報）。例えば、デバイス種別、ＩＦ種別及びＰＤＥＶ性能。
（ｐ３）プールに付与する番号（プール番号）。
【００９６】
（Ｓ１１）
制御プログラム５０１が、プール管理テーブル５０５から特定されるＤＰプール２０３の数が、作成可能最大プール数の値２０１より小さいか否かを判断する。この判断の結果が肯定的の場合、Ｓ１２が行われる。この判断の結果が否定的の場合、制御プログラム５０１は、エラーを表す情報を管理装置１０５に送信し、管理装置１０５が、エラーを表示する（Ｓ１６）。
【００９７】
（Ｓ１２）
制御プログラム５０１が、ユーザ要求プール容量以上の総容量となるようにＰＤＥＶ１１７を選択する。具体的には、例えば、制御プログラム５０１は、下記の処理を行う。
（Ｓ１２−１）：  制御プログラム５０１は、ＰＤＥＶ管理テーブル５０９を参照し、所属プール番号２１３が「null」になっているＰＤＥＶ（いずれのＤＰプール２０３にも所属していないＰＤＥＶ）を特定する。特定されたＰＤＥＶが、作成されるＤＰプールの構成要素の候補である。なお、プール生成指示のパラメータとして、ＰＤＥＶ情報があれば、所属プール番号２１３が「null」であり、且つ、ＰＤＥＶ情報に適合するＰＤＥＶが、ＤＰプールの構成要素の候補として特定される。以下、この（Ｓ１２−１）で特定されたＰＤＥＶを、「候補ＰＤＥＶ」と言う。
（Ｓ１２−２）：  制御プログラム５０１は、複数の候補ＰＤＥＶから、ユーザ要求プール容量以上の総容量となるようにＰＤＥＶを選択する。この結果、選択されたＰＤＥＶの総容量（ＤＰプールの実割当容量）は、ユーザ要求プール容量と同じか又はそれより大きい。なお、ＰＤＥＶの選択のためにＲＡＩＤレベル及びコンビネーションが考慮されて良い。例えば、ユーザ要求プール容量が１ＴＢ（テラバイト）の場合、制御プログラム５０１は、選択されたＰＤＥＶの総容量がユーザ要求プール容量の１．３倍（１．３ＴＢ）となるように、複数の候補ＰＤＥＶからＰＤＥＶを選択して良い。作成されるＤＰプールに、異なるＲＡＩＤレベル及びコンビネーションの仮想ＬＵが関連付けられる場合には、パリティ比率が最も高いＲＡＩＤレベル及びコンビネーションのそのパリティ比率を基に、ＰＤＥＶが選択されて良い。また、ＤＰプールに関連付けられる仮想ＬＵのＲＡＩＤレベル及びコンビネーションが決められている場合には、そのＲＡＩＤレベル及びコンビネーションでのパリティ比率を基に、ＰＤＥＶが選択されて良い。なお、「パリティ比率」とは、仮想ページに対するＩ／Ｏ対象のデータのサイズに対する、生成されるパリティの総サイズの割合である。
【００９８】
（Ｓ１３）
制御プログラム５０１は、作成するＤＰプールに関する情報を、プール管理テーブル５０５に追加する。作成するＤＰプールに関する情報として、下記が追加される。
＊プール番号２１０：  所定の規則に従って決定された番号（例えば、プール管理テーブル５０５に登録されているプール番号２１０のうち最も大きい番号の次の番号）。或いは、Ｓ１０での上記パラメータ（ｐ３）が表すプール番号。
＊ＰＤＥＶ番号リスト２１１：  Ｓ１２で選択されたＰＤＥＶの番号。
＊実割当容量２１２：  Ｓ１２で選択されたＰＤＥＶの総容量。
＊使用容量２１３：ゼロ。なぜなら、当該ＤＰプールから実ページが割り当てられていないため。
＊先頭ＰＤＥＶ番号２１４：  Ｓ１２で選択されたＰＤＥＶの番号のうちの、所定の規則に従って決定された番号。例えば、Ｓ１２で選択されたＰＤＥＶの番号のうちの最も小さい番号。
【００９９】
（Ｓ１４）
制御プログラム５０１が、ＰＤＥＶ管理テーブル５０９における、Ｓ１２で選択されたＰＤＥＶの所属プール番号２３１を、「null」から、作成されるＤＰプールの番号（Ｓ１３での番号）に更新する。
【０１００】
（Ｓ１５）
制御プログラム５０１が、作成されるＤＰプールを構成する各ＰＤＥＶ（Ｓ１２で選択された各ＰＤＥＶ）の記憶空間を、実ページ容量毎に分割し、それにより得られる各実ページを管理する。具体的には、制御プログラム５０１は、作成されるＤＰプールに対応した実ページ管理テーブル５１１を作成しメモリ１２３に格納する。作成された実ページ管理テーブル５１１が有する各レコードは、下記情報を有する。
＊ＰＤＥＶ番号２４０：  Ｓ１２で選択されたいずれかのＰＤＥＶの番号。
＊実ページ番号２４１：  Ｓ１２で選択されたＰＤＥＶが提供する実ページに付与されたいずれかの通し番号。
＊ＬＵＮ２４２：  null。いずれの実ページがいずれの仮想ページにも割り当てられていないため。
＊仮想ページ番号２４３：  null。いずれの実ページがいずれの仮想ページにも割り当てられていないため。
＊アクセスカウンタ２４４：  ゼロ。いずれの実ページに対してＩ／Ｏが発生していないため。
【０１０１】
図１５は、仮想ＬＵ２０１の生成の流れを示すフローチャートである。
【０１０２】
（Ｓ２０）
制御プログラム５０１が、管理装置１０５から、仮想ＬＵ生成指示を受ける。仮想ＬＵ生成指示は、パラメータとして、例えば、以下の（ｐ１１）〜（ｐ１５）のうちの、少なくとも（ｐ１５）がある。（ｐ１５）は、ユーザによる入力が必須のパラメータであり、（ｐ１１）〜（ｐ１４）は、ユーザが任意に入力するパラメータである。（ｐ１１）〜（ｐ１４）のうち、ユーザから入力されていないパラメータは、所定の規則によって決定される値（デフォルト値）である。
（ｐ１１）作成する仮想ＬＵに付与するＬＵＮ。デフォルト値は、例えば、仮想ＬＵのＬＵＮとして付与可能な番号群のうちの最も小さい番号である。
（ｐ１２）作成する仮想ＬＵの数。デフォルト値は、「１」である。
（ｐ１３）作成する仮想ＬＵの所属先のＤＰプールの番号（プール番号）。デフォルト値は、作成されているＤＰプールの番号のうちの最も小さい番号である。
（ｐ１４）ＲＡＩＤレベル（コンビネーションの設定も同時に行う）。デフォルト値は、例えば、ＲＡＩＤ５（２Ｄ＋１Ｐ）である。
（ｐ１５）仮想ＬＵの容量。
【０１０３】
（Ｓ２１）
制御プログラム５０１が、上記（ｐ１２）が表す数の仮想ＬＵ毎に、作成する仮想ＬＵに関する情報を、仮想ＬＵ管理テーブル５０７に追加する。作成する仮想ＬＵに関する情報として、下記が追加される。
＊ＬＵＮ２２０：  上記パラメータ（ｐ１１）が表すＬＵＮ。
＊所属プール番号２２１：  上記パラメータ（ｐ１３）が表すプール番号。上記パラメータ（ｐ１３）が表すプール番号のＤＰプールに、上記（ｐ１２）が表す数の仮想ＬＵが関連付けられる。
＊ＲＡＩＤレベル２２２：  上記パラメータ（ｐ１４）が表すＲＡＩＤレベル。
＊コンビネーション２２３：上記パラメータ（ｐ１４）が表すコンビネーション。
＊容量２２４：上記パラメータ（ｐ１５）が表す容量。
【０１０４】
（Ｓ２２）
制御プログラム５０１が、上記（ｐ１２）が表す数の仮想ＬＵ毎に、作成する仮想ＬＵの各仮想ページに関する情報を、マッピング管理テーブル５１３に追加する。各仮想ページについて追加される情報は、例えば下記の通りである。
＊ＬＵＮ２５０：  仮想ページを有する仮想ＬＵのＬＵＮ。
＊仮想ページ番号２５１：  仮想ページの番号。
＊実ページ識別情報２５２：  null。いずれの仮想ページに実ページが割り当てられていないため。
＊アクセスカウンタ２５３：  ゼロ。いずれの仮想ページに対してＩ／Ｏが発生していないため。
【０１０５】
図１６は、仮想ページに対するライトの流れの概要を示す。以下、実ページが割り当てられていない仮想ページに対するライトの流れと、実ページが割り当てられている仮想ページに対するライトの流れとを説明する。
【０１０６】
＜ケース１：実ページが割り当てられていない仮想ページに対するライト＞
以下の処理が行われる。
（ｗ１１）制御プログラム５０１が、仮想ＬＵ＃１１の仮想ページＶ１１を指定したライトコマンドをホスト＃１から受け、マッピング管理テーブル５１３を参照し、ライト先の仮想ページＶ１１に実ページが割り当てられていないことを特定する。
（ｗ１２）制御プログラム５０１が、仮想ＬＵ管理テーブル５０７を参照して、仮想ページＶ１１を有する仮想ＬＵ＃１１のＲＡＩＤレベルがＲＡＩＤ５（２Ｄ＋１Ｐ）であることを特定する。
（ｗ１３）制御プログラム５０１が、仮想ＬＵ＃１１が所属するＤＰプール＃１１に対応した実ページ管理テーブル５１１を参照し、ＬＵＮ２４２及び仮想ページ番号２４３がnullである実ページから、ＰＤＥＶ番号２４０が異なる三つの実ページ（（ｗ１２）で特定されたＲＡＩＤレベル（ＲＡＩＤ５（２Ｄ＋１Ｐ））に基づく数の実ページ）を選択する。ここでは、ＰＤＥＶ＃１１内の実ページＲ１１、ＰＤＥＶ＃１２内の実ページＲ２１、及び、ＰＤＥＶ＃１３内の実ページＲ３１が選択される。
（ｗ１４）制御プログラム５０１が、（ｗ１３）で選択した実ページＲ１１、Ｒ２１及びＲ３１を、仮想ページＶ１１に割り当て、マッピング管理テーブル５１３を更新する。
（ｗ１５）制御プログラム５０１が、三つの実ページＲ１１、Ｒ２１及びＲ３１のうちの二つに、仮想ページＶ１１に対するライト対象のデータを分割することにより得られた二つのデータ要素を書き込み、それら三つの実ページのうちの残りの一つに、それら二つのデータ要素に基づくパリティを書き込む。
【０１０７】
＜ケース２：実ページが割り当てられている仮想ページに対するライト＞
以下の処理が行われる。
（ｗ２１）制御プログラム５０１が、仮想ＬＵ＃１２の仮想ページＶ２２を指定したライトコマンドをホスト＃２から受け、マッピング管理テーブル５１３を参照し、ライト先の仮想ページＶ２２に割り当てられている実ページを特定する。仮想ページＶ２２を有する仮想ＬＵ＃１２のＲＡＩＤレベルがＲＡＩＤ６（３Ｄ＋２Ｐ）なので、仮想ページＶ２２には五つの実ページが割り当てられており、（ｗ２１）では、それら五つの実ページが特定される。具体的には、ＰＤＥＶ＃１３内の実ページＲ３２、ＰＤＥＶ＃１４内の実ページＲ４１、ＰＤＥＶ＃１５内の実ページＲ５１、ＰＤＥＶ＃１６内の実ページＲ６１、及び、ＰＤＥＶ＃１７内の実ページＲ７１が選択される。
（ｗ２２）制御プログラム５０１が、（ｗ２１）で特定した五つの実ページＲ３２、Ｒ４１、Ｒ５１、Ｒ６１及びＲ７１のうちの三つに、仮想ページＶ２２に対するライト対象のデータを分割することにより得られた三つのデータ要素を書き込み、それら五つの実ページのうちの残りの二つに、それら三つのデータ要素に基づく二つのパリティを書き込む。
【０１０８】
図１７は、仮想ページに対するライトの流れを示すフローチャートである。
【０１０９】
（Ｓ３０）
制御プログラム５０１が、ライト先情報を有するライトコマンドとライト対象のデータとを受ける。ライト先情報は、ＬＵＮとＬＢＡとを有する。ライト対象のデータは、メモリ１２３（キャッシュ領域）に書き込まれる。
【０１１０】
（Ｓ３１）
制御プログラム５０１が、マッピング管理テーブル５１３を参照して、ライト先情報から特定される仮想ページ（ライト先仮想ページ）に実ページが割り当てられているか否かを判断する。
【０１１１】
＜（Ｓ３１）の判断の結果が肯定的の場合（ライト先仮想ページについてのＰＤＥＶ識別情報２５２がnullではない場合）＞。
【０１１２】
これは、上記ケース２に相当する。具体的には、Ｓ３２〜Ｓ３６が行われることなく、Ｓ３７が行われる。すなわち、制御プログラム５０１が、ライト先仮想ページ（例えば、図１６での仮想ページＶ２２）に割り当てられている実ページ（例えば、図１６での実ページＲ３２、Ｒ４１、Ｒ５１、Ｒ６１及びＲ７１）に、ライト先仮想ページを有する仮想ＬＵ（例えば、図１６での仮想ＬＵ＃１２）のＲＡＩＤレベルに基づいて、ライト対象のデータ（例えば、そのデータを分割して得られた二以上のデータ要素と、一以上のパリティ）を書き込む。そして、制御プログラム５０１は、以下のライト状況更新処理：
＊ライト先仮想ページに対応したアクセスカウンタ２５３の値を１インクリメントする；
＊ライト先仮想ページに対応した仮想アクセス頻度情報（仮想アクセス状況テーブル５１７内の情報）を更新する（具体的には、ライト頻度（１分、１時間、１日、１週間）を増加する更新を行う）；
＊ライト先仮想ページに割り当てられている各実ページに対応したアクセスカウンタ２４４の値を１インクリメントする；
＊ライト先仮想ページに割り当てられている各実ページに対応した実アクセス頻度情報（実アクセス状況テーブル５１５内の情報）を更新する（具体的には、ライト頻度（１分、１時間、１日、１週間）を増加する更新を行う）、
を行う。なお、ライト先仮想ページに割り当てられている実ページは、マッピング管理テーブル５１３から特定可能である。ライト先仮想ページを有する仮想ＬＵ（以下、ライト先仮想ＬＵ）は、ライト先情報が有するＬＵＮから識別可能である。ライト先仮想ＬＵのＲＡＩＤレベルは、仮想ＬＵ管理テーブル５０７から特定可能である。
【０１１３】
＜（Ｓ３１）の判断の結果が否定的の場合（ライト先仮想ページについてのＰＤＥＶ識別情報２５２がnullである場合）＞。
【０１１４】
これは、上記ケース１に相当する。そのため、Ｓ３２〜Ｓ３６が行われ、その後で、Ｓ３７が行われる。
【０１１５】
（Ｓ３２）
制御プログラム５０１が、ライト先仮想ＬＵ（例えば、図１６での仮想ＬＵ＃１１）に対応したＲＡＩＤレベル２２２及びコンビネーション２２３（例えば、ＲＡＩＤ５（２Ｄ＋１Ｐ）を特定する。制御プログラム５０１が、特定されたＲＡＩＤレベル２２２及びコンビネーション２２３を基に、選択するＰＤＥＶの数Ｋを決定する。例えば、ＲＡＩＤレベルが表すコンビネーションが、「ｎＤ＋ｍＰ(or Ｄ）」の場合（ｎは自然数、ｍは０以上の整数）、選択するＰＤＥＶの数Ｋは、（ｎ＋ｍ）である。具体的には、例えば、コンビネーションが「２Ｄ＋１Ｐ」の場合、Ｋ＝２＋１＝３である。
【０１１６】
（Ｓ３３）
制御プログラム５０１が、ライト先仮想ＬＵに対応した所属プール番号２２１と同じ値のプール番号２１０に対応する先頭ＰＤＥＶ番号２１４を特定する。
【０１１７】
（Ｓ３４）
制御プログラム５０１が、ライト先仮想ＬＵに対応した所属プール番号２２１と同じ値のプール番号２１０に対応するＰＤＥＶ番号リスト２１１から、Ｓ３２で選択した数Ｋと同数のＰＤＥＶ番号を選択する。その際、制御プログラム５０１は、まず、Ｓ３３で特定した先頭ＰＤＥＶ番号２１４と同じＰＤＥＶ番号（例えば＃１１）を選択し、そのＰＤＥＶ番号を先頭に、順次、ＰＤＥＶ番号の小さい順に、選択されたＰＤＥＶ番号の数がＫに達するまで、ＰＤＥＶ番号を選択していく。もし、選択されたＰＤＥＶ番号の数がＫに達する前に、選択したＰＤＥＶ番号が、ライト先仮想ＬＵが所属するＤＰプール（例えば、図１６でのＤＰプール＃１１）に対応したＰＤＥＶ番号リスト２１１のうちの最も大きい番号になった場合には、そのＰＤＥＶ番号リスト２１１のうちの最も小さい番号が選択される。
【０１１８】
なお、この（Ｓ３４）では、ＰＤＥＶ番号の順序に従ってＰＤＥＶ番号（ＰＤＥＶ）を選択することに代えて、以下のようにしてＰＤＥＶ番号（ＰＤＥＶ）が選択されても良い。
＊空き容量２３５の多いＰＤＥＶを優先的に選択すること。これにより、ＤＰプールにおけるＰＤＥＶを均等に使用することが期待できる。
＊ＩＦ種別２３２及びＰＤＥＶ性能２３３の両方又は片方が同一のＰＤＥＶを選択すること。これにより、一つの仮想ページに割り当てられる実ページに対するＩ／Ｏ性能が同じであることが期待される。
【０１１９】
（Ｓ３５）
制御プログラム５０１が、Ｓ３４で選択した各ＰＤＥＶ番号から特定される各ＰＤＥＶから、一つの空き実ページを選択する。具体的には、例えば、制御プログラム５０１は、ライト先仮想ＬＵが所属するＤＰプールに対応した実ページ管理テーブル５１１を基に、選択したＰＤＥＶ番号毎に、nullであるＬＵＮ２４２及び仮想ページ番号２４３に対応したいずれかの実ページ番号２４１を選択する。図１６の例によれば、ＰＤＥＶ番号＃１１について実ページ番号Ｒ１１が選択され、ＰＤＥＶ番号＃１２について実ページ番号Ｒ２１が選択され、ＰＤＥＶ番号＃１３について実ページ番号Ｒ３１が選択される。
【０１２０】
（Ｓ３６）
制御プログラム５０１が、ライト先仮想ページに対応した実ページ識別情報２５２を、nullから、Ｓ３５で選択した実ページ番号２４１と、その番号２４１に対応したＰＤＥＶ番号２４０との組合せ（例えば、＃１１−Ｒ１１、＃１２−Ｒ２１、＃１３−Ｒ３１）に更新する。つまり、制御プログラム５０１は、ライト先仮想ページ（例えば、図１６での仮想ページＶ１１）に、Ｓ３５で選択された二以上の空き実ページを割り当てる。
【０１２１】
（Ｓ３７）
制御プログラム５０１が、Ｓ３６で割り当てた二以上の実ページに、ライト先仮想ＬＵのＲＡＩＤレベル及びコンビネーションに基づいて、ライト対象のデータを書き込む。図１６の例によれば、二つのデータ要素と一つのパリティが、三つの実ページＲ１１、Ｒ２１及びＲ３１に書き込まれる。そして、制御プログラム５０１は、前述したようなライト状況更新処理を行う。これにより、ライト先仮想ページに対応したアクセスカウンタ２５３の値、ライト先仮想ページに対応した仮想アクセス頻度情報、ライト先仮想ページに割り当てられている各実ページに対応したアクセスカウンタ２４４の値、及び、ライト先仮想ページに割り当てられている各実ページに対応した実アクセス頻度情報が、更新される。
【０１２２】
図１８は、仮想ページに対するリードの流れを示すフローチャートである。
【０１２３】
（Ｓ４０）
制御プログラム５０１が、リード元情報を有するリードコマンドを受ける。リード元情報は、例えば、ＬＵＮ及びＬＢＡを有する。
【０１２４】
（Ｓ４１）
制御プログラム５０１が、マッピング管理テーブル５１３を参照して、リード元情報から特定される仮想ページ（リード元仮想ページ）に実ページが割り当てられているか否かを判断する。Ｓ４１の判断の結果が否定的の場合、Ｓ４２が行われる。Ｓ４１の判断の結果が肯定的の場合、Ｓ４３が行われる。
【０１２５】
（Ｓ４２）
制御プログラム５０１が、エラーを、リードコマンドの送信元のホストに送信する。
【０１２６】
（Ｓ４３）
制御プログラム５０１が、リード元仮想ページに割り当てられている二以上の実ページから、二以上のデータ要素（及び一以上のパリティ）を読み出し、読み出した二以上のデータ要素で構成されるデータ（つまり、リード対象のデータ）を、リードコマンドの送信元のホストに送信する（リード対象のデータは、パリティで復元されたデータ要素を含んだデータであっても良い。）。そして、制御プログラム５０１は、以下のリード状況更新処理：
＊リード元仮想ページに対応したアクセスカウンタ２５３の値を１インクリメントする；
＊リード元仮想ページに対応した仮想アクセス頻度情報（仮想アクセス状況テーブル５１７内の情報）を更新する（具体的には、リード頻度（１分、１時間、１日、１週間）を増加する更新を行う）；
＊リード元仮想ページに割り当てられている各実ページに対応したアクセスカウンタ２４４の値を１インクリメントする；
＊リード元仮想ページに割り当てられている各実ページに対応した実アクセス頻度情報（実アクセス状況テーブル５１５内の情報）を更新する（具体的には、リード頻度（１分、１時間、１日、１週間）を増加する更新を行う）、
を行う。
【０１２７】
以上、これまで説明したように、本実施形態では、ＤＰプール２０３を構成する実ページは、ＲＡＩＤグループから提供される実体的な記憶領域ではなく、一つのＰＤＥＶから提供される記憶領域である。そして、一つのＤＰプール２０３には、異なるＲＡＩＤレベル及びコンビネーションが定義された複数の仮想ＬＵを関連付けることが可能である。このため、図１９に例示するように、一つのＤＰプール＃４０に、異なるＲＡＩＤレベル及びコンビネーションでそれぞれ格納されたデータ（例えば、ＲＡＩＤ５（３Ｄ＋１Ｐ）で格納されたデータ（データ要素ａ、ｂ及びｃ）とパリティＰのセットと、ＲＡＩＤ６（５Ｄ＋２Ｐ）で格納されたデータ（データ要素e、f、ｇ、ｈ及びｉ）とパリティＰ１及びＰ２のセット）が混在する。この場合、もし、或る仮想ＬＵについて定義されているＲＡＩＤレベル又はコンビネーションが別のＲＡＩＤレベル又はコンビネーションに変更された場合には、その仮想ＬＵに割り当てられている実ページについてのみ、データの再構築が行われれば良い。例えば、仮想ＬＵのＲＡＩＤレベル（又はコンビネーション）が第１のＲＡＩＤレベル（又はコンビネーション）から第２のＲＡＩＤレベル（又はコンビネーション）に変更された場合、制御プログラム５０１が、実ページが割り当てられている仮想ページ毎に、以下の処理（ｋ１）〜（ｋ３）：
（ｋ１）仮想ページに割り当てられているｖ個の実ページからｖ個のデータユニットを読み出し、ｖ個のデータユニットを基にデータを構築する（本実施形態の説明で言う「データユニット」とは、実ページに格納されているデータ要素又はパリティの総称である）；
（ｋ２）第２のＲＡＩＤレベル及びコンビネーションに基づくｗ個の実ページを、仮想ＬＵが関連付けられているＤＰプールのｗ個のＰＤＥＶからそれぞれ選択し、仮想ページに、（ｋ１）でのｖ個の実ページに代えて、選択したｗ個の実ページを割り当てる；
（ｋ３）割り当てたｗ個の実ページに、（ｋ１）で構築したデータに基づくｗ個のデータユニットを書き込む、
を行う。なお、（ｋ２）では、ＲＡＩＤレベル（又はコンビネーション）が変更される仮想ＬＵが関連付けられているＤＰプールでの各ＰＤＥＶの使用率が均一になるように、ｗ個の実ページが選択されて良い。これにより、仮想ＬＵについて定義されているＲＡＩＤレベル（又はコンビネーション）の変更を契機に、その仮想ＬＵが関連付けられているＤＰプールに属する各ＰＤＥＶの使用率の均一化が期待できる。このとき、ＰＤＥＶの使用率ではなく空き容量が均一になるようにｗ個の実ページが選択されても良い。
【０１２８】
また、上述の説明では、仮想ページに割り当てられる実ページの提供元のＰＤＥＶは、ＰＤＥＶ番号の順番で選択されるが、例えば、図２０に示すように、ランダムにＰＤＥＶが選択されて良い。図２０の例によれば、ＲＡＩＤ５（３Ｄ＋１Ｐ）に従うデータ要素ａ、ｂ及びｃとパリティＰも、ＲＡＩＤ６（５Ｄ＋２Ｐ）に従うデータ要素e、f、ｇ、ｈ及びｉとパリティＰ１及びＰ２も、ＰＤＥＶ番号に依存せずに選択された各ＰＤＥＶにおける実ページに格納されている。なお、ＰＤＥＶ番号に依存しないが、ＰＤＥＶの使用率（もしくは空き容量）は考慮されて良い。ＤＰプールにおける複数のＰＤＥＶの使用率（もしくは空き容量）を均等にするためである。
【０１２９】
また、制御プログラム５０１は、同一のバックエンド接続デバイス１１３に接続されている複数のＰＤＥＶから、一つの仮想ページに複数の実ページを割り当てて良い。これにより、それら複数の実ページへのアクセスの性能の均一化が期待できる。なお、もし、同一のバックエンド接続デバイス１１３に接続されている複数のＰＤＥＶの使用率（もしくは空き容量）が均等ではなければ、複数のバックエンド接続デバイス１１３に接続されている複数のＰＤＥＶから複数の実ページが仮想ページに割り当てられて良い。
【０１３０】
ところで、本実施形態では、或るＨＤＤ内の実ページから別のＰＤＥＶ内の実ページにデータユニットが移動される再配置処理が行われる。
【０１３１】
例えば、ＰＤＥＶが増設又は減設された時に行われる。具体的には、例えば、ＤＰプール２０３に空きの実ページの総容量が不足した場合（例えば、ＤＰプール２０３の実割当容量２１２に対する使用容量２１３の比率が所定の閾値以上になった場合）、空きの実ページを増やすために、ＰＤＥＶの増設が行われる。ＤＰプール２０３に対するＰＤＥＶの増設は、ＰＤＥＶ単位で行うことができる。なお、空きの実ページの総容量が不足したことは、例えば、制御プログラム５０１が、プール管理テーブル５０５を参照することにより、検出することができる。制御プログラム５０１は、空きの実ページの総容量が不足したことを検出した場合、空きの実ページの総容量が不足したＤＰプールの番号と警告とを、管理装置１０５に送信する。管理装置１０５は、警告とＤＰプール番号とを表示する。ユーザは、その警告及びＤＰプール番号を見て、ＰＤＥＶを増設し、増設したＰＤＥＶを、警告と共に表示されたＤＰプール番号から識別されるＤＰプールのメンバにさせる。なお、ＰＤＥＶの増設は、空きの実ページの総容量が不足したときに限らず、他のタイミングで（例えば所定の計画に従って）行うこともできる。
【０１３２】
図２１は、ＰＤＥＶの増設の際に行われる処理のフローチャートである。
【０１３３】
（Ｓ１８０１）
ＰＤＥＶの増設が行われた場合（例えば、制御プログラム５０１が、ＰＤＥＶが増設されたことを検出した場合）、制御プログラム５０１は、増設されたＰＤＥＶ（以下、増設ＰＤＥＶ）に関する情報（レコード）を、ＰＤＥＶ管理テーブル５０９に追加する。ＰＤＥＶに関する情報のうち、ＩＦ種別２３２、ＰＤＥＶ性能２３３、容量２３４及び空き容量２３５は、ユーザから管理装置１０５を通じて入力されても良いし、増設ＰＤＥＶから取得されても良い。ＰＤＥＶ番号２３０は、ユーザから管理装置１０５を通じて入力されても良いし、制御プログラム５０１によって決められても良い。制御プログラム５０１は、ＰＤＥＶ管理テーブル５０９における、増設ＰＤＥＶに関する情報に、所属プール番号２３１、すなわち、増設ＰＤＥＶがメンバとなるＤＰプールの番号を追加する。この所属プール番号２３１は、ユーザから管理装置１０５を通じて入力された番号でも良いし、制御プログラム５０１が決定した番号（例えば、空きの実ページの総容量が不足していると検出されたＤＰプールの番号）でも良い。
【０１３４】
（Ｓ１８０２）
制御プログラム５０１が、Ｓ１８０１で追加した所属プール番号２３１と同じプール番号２１０（図７参照）に対応したＰＤＥＶ番号リスト２１１（以下、図２１の説明において「対象リスト２１１」と言う）に、増設ＰＤＥＶの番号を追加し、且つ、そのプール番号２１０に対応した実割当容量２１２に、増設ＰＤＥＶの容量を追加する。また、制御プログラム５０１は、Ｓ１８０１で追加した所属プール番号２３１に対応する実ページ管理テーブル５１１に、増設ＰＤＥＶが有する各実ページに対応する情報（レコード）を追加する。
【０１３５】
（Ｓ１８０３）
制御プログラム５０１が、ＰＤＥＶ管理テーブル５０９で管理されている容量２３４及び空き容量２３５のうち、対象リスト２１１に属するＰＤＥＶに対応した容量２３４及び空き容量２３５を参照し、対象リスト２１１に属する各ＰＤＥＶの使用率（容量２３４に対する空き容量２３５の比率）を算出する。そして、制御プログラム５０１は、使用率が所定の閾値を超過しているＰＤＥＶを特定する。
【０１３６】
（Ｓ１８０４）
制御プログラム５０１が、Ｓ１８０３で特定されたＰＤＥＶの使用率が所定の閾値以下となるまで、再配置処理を実行する。「再配置処理」とは、一つのＤＰプールにおいて或るＰＤＥＶ内の実ページから別のＰＤＥＶ内の実ページにデータユニットを移動する処理である。
【０１３７】
（Ｓ１８０５）
制御プログラム５０１が、増設ＰＤＥＶを有するＤＰプールにおける全てのＰＤＥＶの使用率が均等になるまで再配置処理を実行する。このＰＤＥＶの増設の際に行われる処理では、ＰＤＥＶの使用率の代わりに、空き容量を基に、再配置処理の対象のＰＤＥＶが決定されても良い。
【０１３８】
図２２は、再配置処理のフローチャートを示す。なお、以下の説明では、複数のデータユニットを基に生成されるデータ（仮想領域に対してＩ／Ｏが行われるデータ）を、「Ｉ／Ｏデータ」と言う。
【０１３９】
（Ｓ１９０１）
制御プログラム５０１が、データユニットの移動元の実ページと、データユニットの移動先の実ページとを選択する。この再配置処理が、図２１のＳ１８０４での再配置処理であれば、移動元の実ページは、図２１のＳ１８０３で特定されたＰＤＥＶ（使用率が所定の閾値を超過しているＰＤＥＶ）から選択され、移動先の実ページは、少なくとも一つの空きの実ページにデータユニットが格納されても使用率が所定の閾値を超過しないＰＤＥＶ（例えば、使用率が最も低いＰＤＥＶ）から選択される。一方、この再配置処理が、図２１のＳ１８０５での再配置処理であれば、移動元の実ページは、使用率が最も高いＰＤＥＶから選択され、移動先の実ページは、使用率が最も低いＰＤＥＶから選択される。
【０１４０】
（Ｓ１９０２）
制御プログラム５０１が、ＲＡＩＤが維持されるか否かを判断する。「ＲＡＩＤが維持されるか否か」とは、ＲＡＩＤ技術に基づいてＩ／Ｏデータの生成が可能か否かである。具体的には、移動先の実ページを有するＰＤＥＶ内の別の実ページに、移動元の実ページに格納されているデータユニットに基づいて生成されるＩ／Ｏデータの基になる別のデータユニットが存在するか否かである。より具体的には、例えば、制御プログラム５０１は、移動元の実ページの割当先の仮想ページに対応する実ページ識別情報２５２に、移動先の実ページを有するＰＤＥＶの番号が含まれておらず、ＲＡＩＤが維持されるか否かを判断する。この判断の結果が肯定的の場合、Ｓ１９０３が行われ、この判断の結果が否定的の場合、Ｓ１９０４が行われる。
【０１４１】
（Ｓ１９０３）
制御プログラム５０１は、移動元の実ページから移動先の実ページにデータユニットを移動する。そして、制御プログラム５０１は、移動元の実ページの割当先であった仮想ページに対応する実ページ識別情報２５２に含まれている、移動元実ページの識別情報（ＰＤＥＶ番号と実ページ番号との組合せ）を、移動先実ページの識別情報に更新する。つまり、制御プログラム５０１は、移動先の実ページを、移動元の実ページに代えて仮想ページに割り当てる。
【０１４２】
（Ｓ１９０４）
制御プログラム５０１は、移動先の実ページを別のＰＤＥＶから選択する。例えば、別のＰＤＥＶは、この再配置処理が図２１のＳ１８０４及びＳ１８０５のどちらであるかに関わらず、Ｓ１９０１で選択した移動先実ページを有するＰＤＥＶの次に使用率が低いＰＤＥＶでよい。また、この再配置処理では、ＰＤＥＶの使用率の代わりに空き容量を基にＰＤＥＶが選択されても良い。
【０１４３】
以上が、ＰＤＥＶが増設された場合に行われる処理の説明である。図２１のＳ１８０５によれば、例えば、図２３に示すようにしてデータユニットが移動される。例えば、一つのＤＰプールに属するＰＤＥＶ＃０１〜＃０９において、ＰＤＥＶ＃０１及び＃０５が、四つのデータユニットを記憶していて、残りのＰＤＥＶ＃０２〜＃０４及び＃０６〜＃０９が、三つのデータユニットを記憶しているとする。ここで、増設ＰＤＥＶ＃１０がＤＰプールに所属させられた場合、ＰＤＥＶ＃０１及び＃０５からそれぞれ一つのデータユニットが増設ＰＤＥＶ＃１０に移動される。これにより、ＰＤＥＶ＃０１〜＃１０の使用率がなるべく均一になる。
【０１４４】
ＰＤＥＶの増設に関する処理は、上述の説明に限らず、下記のようなバリエーションが考えられる。下記の処理においても、ＰＤＥＶの使用率の代わりに空き容量を基にＰＤＥＶが選択されても良い。
【０１４５】
（第１のバリエーション）
Ｓ１８０３〜Ｓ１８０５が行われない。このバリエーションでは、制御プログラム５０１は、各ライトコマンドの処理において、ライト先の仮想ページに割り当てる実ページを、必ず、増設ＰＤＥＶから選択するようにする。例えば、ＤＰプール＃２０にＰＤＥＶ＃５１〜＃５３があり、ＰＤＥＶ＃５４が増設された場合、制御プログラム５０１は、ライトコマンドの処理では、必ず、ライト先の仮想ページに割り当てる二以上の実ページにＰＤＥＶ＃５４内の実ページが含まれるようにする。なお、ライトコマンドの処理において増設ＰＤＥＶから実ページを必ず選択することは、増設ＰＤＥＶの使用率が、増設ＰＤＥＶを有するＤＰプール内の他のＰＤＥＶの使用率と同程度（例えば、ＤＰプールでのＰＤＥＶの使用率の平均と同じ、又は、その平均との差が所定値未満）になるまで行われる。その後は、ＤＰプールに属する複数のＰＤＥＶが均等に選択される。
【０１４６】
（第２のバリエーション）
移動先の実ページが、移動元の実ページのアクセス頻度（実アクセス状況テーブル５１５から特定されるアクセス頻度）に基づいて決定される。例えば、移動元実ページのアクセス頻度の割りに、移動元実ページを有するＰＤＥＶのＩ／Ｏ性能が高ければ、移動先の実ページは、移動元の実ページを有するＰＤＥＶ（例えばＳＳＤ）よりもＩ／Ｏ性能の低いＰＤＥＶ（例えばＨＤＤ）から選択されて良い。逆に、例えば、移動元実ページのアクセス頻度の割りに、移動元実ページを有するＰＤＥＶのＩ／Ｏ性能が低ければ、移動先の実ページは、移動元の実ページを有するＰＤＥＶ（例えばＨＤＤ）よりもＩ／Ｏ性能の高いＰＤＥＶ（例えばＳＳＤ）から選択されて良い。
【０１４７】
図２４は、ＰＤＥＶの減設の際に行われる処理のフローチャートである。
【０１４８】
（Ｓ２７０１）
制御プログラム５０１が、ユーザから管理装置１０５を通じて、減設対象のＰＤＥＶの番号の入力を受ける。
【０１４９】
（Ｓ２７０２）
制御プログラム５０１が、実ページ管理テーブル５１１を参照して、減設対象のＰＤＥＶが有する複数の実ページのうち仮想ページに割り当てられている一以上の実ページをＬＵＮ２４２及び仮想ページ番号２４３がnullでない実ページから特定する。
【０１５０】
（Ｓ２７０３）
制御プログラム５０１が、ＲＡＩＤを維持し、且つ、使用率が均等になるように、データユニットを移動する。具体的には、例えば、制御プログラム５０１が、Ｓ２７０２で特定された実ページ（移動元の実ページ）毎に、減設対象のＰＤＥＶ以外のＰＤＥＶのうち使用率が最も低いＰＤＥＶから一つの実ページ（移動先の実ページ）を選択し、選択した移動先実ページに、移動元の実ページからデータユニットを移動する。移動元の実ページを有するＰＤＥＶのＩ／Ｏ性能と、移動先の実ページを有するＰＤＥＶのＩ／Ｏ性能が同じであることが好ましい。
【０１５１】
（Ｓ２７０４）
制御プログラム５０１が、Ｓ２７０２で特定された実ページ（移動元の実ページ）毎に、移動元実ページが割り当てられた仮想ページに、移動元実ページに代えて移動先実ページを割り当てる。具体的には、例えば、制御プログラム５０１は、Ｓ２７０２で特定された実ページ（移動元の実ページ）毎に、移動元実ページが割り当てられている仮想ページに対応した実ページ識別情報２５２における、移動元実ページの識別情報を、移動先実ページの識別情報に更新する。
【０１５２】
（Ｓ２７０５）
制御プログラム５０１が、減設対象のＰＤＥＶに関する情報を、メモリ１２３に格納されているテーブルから削除する。具体的には、例えば、制御プログラム５０１は、以下の処理：
＊ＰＤＥＶ管理テーブル５０９から、減設対象のＰＤＥＶに対応するレコードを削除する；
＊プール管理テーブル５０５における、減設対象ＰＤＥＶが属するＤＰプールに対応したＰＤＥＶ番号リスト２１１から、減設対象のＰＤＥＶの番号を削除し、且つ、実割当容量２１２から、減設対象ＰＤＥＶの容量を引く。また、減設対象のＰＤＥＶの番号が先頭ＰＤＥＶ番号２１４であった場合、先頭ＰＤＥＶ番号２１４の値を減設対象ＰＤＥＶの番号の次に大きいＰＤＥＶ番号の値に更新する。；
＊減設対象ＰＤＥＶが属するＤＰプールに対応する実ページ管理テーブル５１１から、減設対象ＰＤＥＶが有する各実ページに対応する情報（レコード）を削除する、
を行う。また、このＰＤＥＶの減設の際に行われる処理では、ＰＤＥＶの使用率の代わりに、空き容量を基に、ＰＤＥＶが選択されても良い。
【０１５３】
ところで、ストレージシステム１０３の稼動中において、ストレージシステム１０３が単位時間当たりに受け付けるＩ／Ｏコマンドの数、種別及びＩ／Ｏ先情報に応じて、特定の実ページのアクセス頻度が高くなってその実ページを有するＰＤＥＶの稼働率（負荷）が高くなることがある。
【０１５４】
そこで、本実施形態では、Ｉ／Ｏコマンドの処理に応じて更新される実アクセス状況テーブル５１５及び／又は仮想アクセス状況テーブル５１７に基づいて、再配置処理が行われる。再配置処理については、例えば以下のような三つの例（ＥＸ１）〜（ＥＸ３）が考えられる。
【０１５５】
（ＥＸ１）制御プログラム５０１は、実アクセス状況テーブル５１５及び／又は仮想アクセス状況テーブル５１７を参照して、アクセス頻度或いは稼働率が第１の閾値を超過しているＰＤＥＶ（以下、高負荷ＰＤＥＶ）が存在するか否かを判断する。ＰＤＥＶのアクセス頻度は、例えば、ＰＤＥＶが有する実ページのアクセス頻度の平均である。高負荷ＰＤＥＶが特定された場合、制御プログラム５０１は、高負荷ＰＤＥＶ内のデータユニットを、稼働率が最も低いＰＤＥＶ内の空きの実ページに移動する。移動対象のデータユニットを記憶している実ページは、アクセス頻度が最も高い仮想ページに割り当てられている実ページ、又は、アクセス頻度が最も高い実ページである。図２５の例によれば、高負荷ＰＤＥＶ＃０５内のデータユニット「Ｊ」が、稼働率が最も低いＰＤＥＶ＃１０に移動される。その結果、高負荷ＰＤＥＶ＃０５の稼働率が４０％から２０％に下がり、一方、ＰＤＥＶ＃１０の稼働率が１０％から２０％に上がる。データユニットの移動は、複数のＰＤＥＶの稼働率が均一になるように行われることが好ましい。
【０１５６】
（ＥＸ２）制御プログラム５０１は、実アクセス状況テーブル５１５及び／又は仮想アクセス状況テーブル５１７を参照して、アクセス頻度或いは稼働率が第２の閾値（第２の閾値＜第１の閾値）を下回っているＰＤＥＶ（以下、低負荷ＰＤＥＶ）が存在するか否かを判断する。低負荷ＰＤＥＶが特定された場合、制御プログラム５０１は、稼働率が最も高いＰＤＥＶ内のデータユニットを、低負荷ＰＤＥＶ内の空きの実ページに移動する。移動対象のデータユニットを記憶している実ページは、アクセス頻度が最も高い仮想ページに割り当てられている実ページ、又は、アクセス頻度が最も高い実ページである。
【０１５７】
（ＥＸ３）制御プログラム５０１は、実アクセス状況テーブル５１５及び／又は仮想アクセス状況テーブル５１７を参照して、実ページ毎又は仮想ページ毎のリード比率及びライト比率を算出する。リード比率及びライト比率とは、アクセス全体に対するリード及びライトの比率である。具体的には、例えば、リード比率及びライト比率は、リード頻度及びライト頻度と、リード頻度とライト頻度との合計を基に算出することができる。制御プログラム５０１は、以下の（Ｘ１）又は（Ｘ２）の条件の合致が得られた場合、算出されたリード率又はライト率を有する実ページ内のデータユニットを、算出されたリード率又はライト率に相応しい属性（例えばＩ／Ｏ性能）を有する実ページに移動する。
（Ｘ１）算出されたリード比率又はライト比率が、そのリード比率又はライト比率を有する実ページを提供するＰＤＥＶの属性（例えばＩ／Ｏ性能）に適していない。
（Ｘ２）算出されたリード比率又はライト比率が、そのリード比率又はライト比率を有する仮想ページに割り当てられている実ページを提供するＰＤＥＶの属性（例えばＩ／Ｏ性能）に適していない。
【０１５８】
仮想ＬＵの所属先が、第１のＤＰプールから第２のＤＰプールに切り替えられることがある。この場合、第１のＤＰプール内の実ページが割り当てられている仮想ページ毎に、以下の（ｆ１）及び（ｆ２）の処理：
（ｆ１）仮想ページに割り当てられている、第１のＤＰプール内の複数の実ページから、第２のＤＰプール内の複数の実ページに、それぞれデータユニットを移動する；
（ｆ２）複数の移動先の実ページを、複数の移動元の実ページに代えて仮想ページに割り当てる、
を行う。なお、（ｆ１）での移動先の実ページは、仮想ページのアクセス頻度（仮想アクセス状況テーブル５１７から特定されるアクセス頻度）に適した属性（例えばＩ／Ｏ性能）を有するＰＤＥＶから選択される。例えば、仮想ページのアクセス頻度が所定の閾値以上であれば、Ｉ／Ｏ性能が高いＰＤＥＶから移動先の実ページが選択され、一方、仮想ページのアクセス頻度が所定の閾値より低ければ、Ｉ／Ｏ性能が低いＰＤＥＶから移動先の実ページが選択されてよい。
【０１５９】
本実施形態では、前述した通り、ＤＰプールの実ページは、ＲＡＩＤグループからではなくＰＤＥＶから提供される。このため、ＰＤＥＶに障害が発生した場合には、障害が発生したＰＤＥＶ（以下、障害ＰＤＥＶ）が有する複数の実ページのうちの、仮想ページに割り当てられている実ページについてのみ、データユニットのリストアがされればよい。ここで、リストアとは、同一仮想ページに割当てられた実ページのうち、障害ＰＤＥＶ内の実ページ以外の実ページに書き込まれたデータ要素およびパリティから、障害ＰＤＥＶ内の当該実ページに格納されていたデータを修復することをいう。具体的には、例えば、図２６に示すように、障害ＰＤＥＶにデータ要素「ｂ」のみが格納されていた場合、制御プログラム５０１は、他のデータ要素「ａ」及び「ｃ」とパリティ「Ｐ」とを基に、データ要素「ｂ」をリストアし、リストアしたデータ要素「ｂ」を、障害の発生していないＰＤＥＶに書き込む。書込み先となるＰＤＥＶは、ＤＰプールでの使用率（もしくは空き容量）が均等になるように選択される。
【０１６０】
障害ＰＤＥＶ内のデータユニットのリストアに関する処理として、リストア優先タイプのリストア処理と、交換優先タイプのリストア処理が考えられる。
【０１６１】
リストア優先タイプのリストア処理は、例えば次の通りである。すなわち、制御プログラム５０１が、障害ＰＤＥＶのうちの、一以上の仮想ページに割り当てられている一以上の実ページ内のデータユニットをリストアし、リストアされた一以上のデータユニットを、複数の他のＰＤＥＶに分散しておく。障害ＰＤＥＶが別のＰＤＥＶに交換された後、制御プログラム５０１が、複数のＰＤＥＶの使用率が均一になるように再配置処理を行うことで、複数の他のＰＤＥＶから交換後のＰＤＥＶにデータユニットを移動する。
【０１６２】
交換優先タイプのリストア処理は、例えば次の通りである。すなわち、障害ＰＤＥＶが別のＰＤＥＶに交換される。制御プログラム５０１が、障害ＰＤＥＶのうちの、一以上の仮想ページに割り当てられていた一以上の実ページ内のデータユニットをリストアし、リストアされた一以上のデータユニットを、交換後のＰＤＥＶに書き込む。
【０１６３】
以下、それぞれのリストア処理を詳細に説明する。
【０１６４】
図２７は、リストア優先タイプのリストア処理のフローチャートである。
【０１６５】
（Ｓ２５０１）
制御プログラム５０１は、実ページ管理テーブル５１１を参照し、障害ＰＤＥＶのうちの割当て済み実ページを特定する。制御プログラム５０１は、特定された割当て済み実ページ毎に、以下の（Ｓ２５０２）〜（Ｓ２５０４）を行う。
【０１６６】
（Ｓ２５０２）
制御プログラム５０１は、割当て済み実ページの割当先の仮想ページに割り当てられている一以上の他の実ページからデータユニットを読み出す。
【０１６７】
（Ｓ２５０３）
制御プログラム５０１は、Ｓ２５０２で読み出された一以上のデータユニットを基に、障害ＰＤＥＶ内の実ページが記憶しているべきデータユニットをリストアする。
【０１６８】
（Ｓ２５０４）
制御プログラム５０１は、ＲＡＩＤが維持され、且つ、障害ＰＤＥＶが属するＤＰプール内のＰＤＥＶの使用率が均一になるよう、そのＤＰプール内の他のＰＤＥＶから、Ｓ２５０３でリストアしたデータユニットのライト先の空きの実ページを選択し、選択した実ページに、リストアしたデータユニットを書き込む。制御プログラム５０１は、障害ＰＤＥＶ内の実ページに代えてその書き込み先の実ページを仮想ページに割り当てる。
【０１６９】
（Ｓ２５０５）
障害ＰＤＥＶにおける全ての割当て済み実ページについてＳ２５０２〜Ｓ２５０４が行われた後、障害ＨＤＤが別のＨＤＤに交換される。
【０１７０】
（Ｓ２５０６）
制御プログラム５０１は、ＤＰプール内のＰＤＥＶの使用率が均一になるよう、ＤＰプール内の複数の他のＰＤＥＶから交換後のＰＤＥＶにデータユニットを移動する。制御プログラム５０１は、データユニットの移動元の実ページに代えて交換後のＰＤＥＶ内の移動先実ページを仮想ページに割り当てる。交換優先タイプのリストア処理において、ＰＤＥＶの使用率の代わりに空き容量が均一になるよう移動先のＰＤＥＶを選択しても良い。
【０１７１】
このリストア処理の変形例として、以下が考えられる。例えば、制御プログラム５０１が、ホスト１０１からリードコマンドを受信し、且つ、そのリード元の仮想ページに割り当てられている複数の実ページに障害ＰＤＥＶ内の実ページが含まれていることを検出した場合に、リードコマンドに応答して読み出された一以上のデータユニットを基に、Ｓ２５０３及びＳ２５０４が行われて良い。障害ＰＤＥＶにおける全ての割当て済み実ページについてＳ２５０３及びＳ２５０４が行われた後に、Ｓ２５０５及びＳ２５０６が行われて良い。
【０１７２】
図２８は、交換優先タイプのリストア処理のフローチャートである。
【０１７３】
（Ｓ２６０１）
障害ＰＤＥＶが別のＰＤＥＶに交換される。
【０１７４】
（Ｓ２６０２）
制御プログラム５０１が、実ページ管理テーブル５１１を参照し、障害ＰＤＥＶのうちの割当て済み実ページを特定する。制御プログラム５０１は、特定された割当て済み実ページ毎に、以下の（Ｓ２６０３）〜（Ｓ２６０５）を行う。
【０１７５】
（Ｓ２６０３）
制御プログラム５０１は、割当て済み実ページの割当先の仮想ページに割り当てられている一以上の他の実ページからデータユニットを読み出す。
【０１７６】
（Ｓ２６０４）
制御プログラム５０１は、Ｓ２６０３で読み出された一以上のデータユニットを基に、障害ＰＤＥＶ内の実ページが記憶しているべきデータユニットをリストアする。
【０１７７】
（Ｓ２６０５）
制御プログラム５０１は、リストアしたデータユニットを、交換後のＰＤＥＶに書き込む。
【０１７８】
リストア優先とするか交換優先とするかは、ストレージシステム１０３に対するアクセスの状況に応じて決められても良いし、ユーザから予め指定されていても良い。
【０１７９】
以上、本発明の一つの実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、各要素は、番号或いは名称に代えて又は加えて他種の識別情報で識別されて良い。また、例えば、パリティの生成は、制御プログラム５０１に代えて、ハードウェア回路によって行われて良い。また、例えば、実ページ毎のアクセスカウンタ２４４及び仮想ページ毎のアクセスカウンタ２５３のうちの少なくとも一方が、アクセスカウンタに代えて、ライト用のカウンタと、リード用のカウンタとの少なくとも一方であっても良い。また、例えば、実アクセス状況テーブル５１５は無くても良い。この場合には、仮想ページのアクセス頻度を、仮想ページに対応する実ページのアクセス頻度とみなすことができる。
【符号の説明】
【０１８０】
１０３…ストレージシステム
【図１】
0005444464.tif 000002
【図２】
0005444464.tif 000003
【図３】
0005444464.tif 000004
【図４】
0005444464.tif 000005
【図５】
0005444464.tif 000006
【図６】
0005444464.tif 000007
【図７】
0005444464.tif 000008
【図８】
0005444464.tif 000009
【図９】
0005444464.tif 000010
【図１０】
0005444464.tif 000011
【図１１】
0005444464.tif 000012
【図１２】
0005444464.tif 000013
【図１３】
0005444464.tif 000014
【図１４】
0005444464.tif 000015
【図１５】
0005444464.tif 000016
【図１６】
0005444464.tif 000017
【図１７】
0005444464.tif 000018
【図１８】
0005444464.tif 000019
【図１９】
0005444464.tif 000020
【図２０】
0005444464.tif 000021
【図２１】
0005444464.tif 000022
【図２２】
0005444464.tif 000023
【図２３】
0005444464.tif 000024
【図２４】
0005444464.tif 000025
【図２５】
0005444464.tif 000026
【図２６】
0005444464.tif 000027
【図２７】
0005444464.tif 000028
【図２８】
0005444464.tif 000029