(57)【要約】【課題】プールに内部ボリュームと外部ボリュームとが割り当てられている場合に、内部ボリュームに関連するストレージシステム内部の記憶領域を効率的に利用する。【解決手段】  内部ボリュームと外部ボリュームとが割り当てられるプールを管理し、書き込み要求を受領した場合にプール内の１以上の実ページが割り当られる仮想ボリュームを提供するコントローラを有するストレージシステムであって、プールの記憶容量を減少させる場合に、内部ボリュームに優先して外部ボリュームのプールへの割り当てを解除する、ことを特徴とするストレージシステム。【選択図】図１
2013114624.tif 000002
【特許請求の範囲】
【請求項１】
ストレージシステムであって、
複数の記憶デバイスと、
前記複数の記憶デバイスに関連付けられる複数の内部ボリュームと、外部ストレージに含まれる複数の外部記憶デバイスに関連付けられる複数の外部ボリュームとを管理し、前記複数の内部ボリュームに含まれる少なくとも１の内部ボリュームと前記複数の外部ボリュームに含まれる少なくとも１の外部ボリュームが割り当てられる第１のプールを管理し、書き込み要求の受領に応じて前記第１のプール内の１以上の実ページが割り当られる第１の仮想ボリュームを提供するコントローラと、を有し、
前記コントローラは、前記第１のプールの記憶容量を減少させる場合に、前記少なくとも１の内部ボリュームに優先して前記少なくとも１の外部ボリュームに含まれる外部ボリュームの前記第１のプールへの割り当てを解除する、ことを特徴とするストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記第１のプールは性能によって区別される複数のティアを含み、
前記複数のティアは、前記記複数の内部ボリュームに含まれる第１の内部ボリューム及び前記複数の外部ボリュームに含まれる第１の外部ボリュームにより形成される第１のティアを含み、
前記コントローラは、第１のティアに含まれる複数の実ページのうち前記第１の仮想ボリュームに割り当てられている実ページの割合が閾値以下の場合、前記第１の内部ボリュームに優先して前記第１の外部ボリュームの前記第１のプールへの割り当てを解除する、ことを特徴とするストレージシステム。
【請求項３】
請求項２に記載のストレージシステムであって、さらに
第１のプールの階層ごとに割り当てられている内部ボリューム又は／及び外部ボリュームを管理するプール管理情報を格納するメモリを有し、
前記コントローラは、前記プール管理情報を参照して、前記第１の内部ボリュームに優先して前記第１の外部ボリュームの前記第１のプールへの割り当てを解除する、ことを特徴とするストレージシステム。
【請求項４】
請求項３に記載のストレージシステムであって、
前記第１の仮想ボリュームは複数の仮想ページを含み、
前記コントローラは、前記第１の仮想ボリューム内の仮想ページに対する書き込み要求に応じて、前記第１のプール内の前記第１のティアに属する実ページを、前記仮想ページに割り当て、
前記メモリは、前記第１の仮想ボリュームに含まれる仮想ページへの入出力負荷を管理する仮想ボリューム管理テーブルを格納し、
前記コントローラは、前記仮想ボリューム管理テーブルを参照し、前記仮想ページへの入出力負荷に応じて、前記実ページ内のデータを前記第１のティアとは異なるティア内の実ページに移行し、前記実ページの代わりに前記第１のティアとは異なるティア内の実ページを前記仮想ページに割り当てる、ことを特徴するストレージシステム。
【請求項５】
請求項４に記載のストレージシステムであって、
前記コントローラは、前記プール管理情報を参照し、前記第１の外部ボリュームの前記第１のプールへの割り当てを解除する場合に、前記第１の外部ボリューム内のデータを、前記第１の外部ボリュームが含まれる前記第１のティアに属する前記第１の内部ボリュームに移行する、ことを特徴とするストレージシステム。
【請求項６】
請求項５に記載のストレージシステムであって、
前記コントローラは、前記第１の外部ボリューム内のデータを前記第１の内部ボリュームに移行する場合に、前記第１の仮想ボリュームに割り当てられている前記第１の内部ボリューム内の実ページであって、特定のデータパターンが格納されている前記実ページに優先的にデータを移行する、ことを特徴とするストレージシステム。
【請求項７】
請求項６に記載のストレージシステムであって、
前記コントローラは、前記第１の外部ボリュームが複数存在する場合には、複数の前記第１の外部ボリュームの内、第１の仮想ボリュームへ割り当てらている実ページの容量が最も小さい外部ボリュームの前記第１のプールへの割り当てを優先的に解除する、ことを特徴とするストレージシステム。
【請求項８】
請求項７に記載のストレージシステムであって、
前記コントローラは、第１のティアに含まれる複数の実ページのうち前記第１の仮想ボリュームに割り当てられている実ページの割合が閾値以上であって、第１のティアに割り当てるための性能を満たし、前記第１のプールに割り当てられていない外部ボリューム及び内部ボリュームが存在する場合に、前記第１のプールに割り当てられていない外部ボリュームに優先して前記第１のプールに割り当てられていない内部ボリュームを第１のティアに割り当てることを特徴とする、ストレージシステム。
【請求項９】
請求項８に記載のストレージシステムであって、
前記コントローラは、さらに、前記第１のプール及び第２のプールを含む複数のプールを管理し、書き込み要求を受領した場合に第２のプール内の１以上の実ページが割り当られる第２の仮想ボリュームを提供し、
前記メモリにプールごとに外部ボリュームをプールに割り当てることができるか否かを示す外部ボリューム使用可否情報を格納し、
前記コントローラは、前記外部ボリューム使用可否情報に、前記第２のプールの容量を拡張する場合に、前記第１のプール及び前記第２のプールに割り当てられていない外部ボリュームであっても、前記第２のプールに割り当てることができないように設定する、ことを特徴するストレージシステム。
【請求項１０】
請求項９に記載のストレージシステムであって、
前記複数の記憶デバイスは、性能の異なる記憶デバイスを含むことを特徴とする、ストレージシステム。
【請求項１１】
複数の記憶デバイスを含むストレージシステムにおける制御方法であって、
前記複数の記憶デバイスに関連付けられる複数の内部ボリュームと外部ストレージシステムに含まれる複数の外部記憶デバイスに関連付けられる複数の外部ボリュームとを管理し、
前記複数の内部ボリュームに含まれる少なくとも１の内部ボリュームと前記複数の外部ボリュームに含まれる少なくとも１の外部ボリュームが割り当てられる第１のプールを管理し、
書き込み要求の受領に応じて前記第１のプール内の１以上の実ページが割り当られる第１の仮想ボリュームを提供し、
前記第１のプールの記憶容量を減少させる場合に、前記少なくとも１の内部ボリュームに優先して前記少なくとも１の外部ボリュームに含まれる外部ボリュームの前記第１のプールへの割り当てを解除する、ことを特徴とする制御方法。
【請求項１２】
請求項１１に記載の制御方法であって、
前記第１のプールは性能によって区別される複数のティアを含み、前記複数のティアは、前記記複数の内部ボリュームに含まれる第１の内部ボリューム及び前記複数の外部ボリュームに含まれる第１の外部ボリュームにより形成される第１のティアを含み、
第１のティアに含まれる複数の実ページのうち前記第１の仮想ボリュームに割り当てられている実ページの割合が閾値以下の場合、前記第１の内部ボリュームに優先して前記第１の外部ボリュームの前記第１のプールへの割り当てを解除する、ことを特徴とする制御方法。
【請求項１３】
請求項１２に記載の制御方法であって、
前記第１の外部ボリュームの前記第１のプールへの割り当てを解除する場合に、前記第１の外部ボリューム内のデータを、前記第１の外部ボリュームが含まれる前記第１のティアに属する前記第１の内部ボリュームに移行する、ことを特徴とする制御方法。
【請求項１４】
請求項１３に記載の制御方法であって、
前記第１の外部ボリューム内のデータを前記第１の内部ボリュームに移行する場合に、前記第１の仮想ボリュームに割り当てられている前記第１の内部ボリューム内の実ページであって、特定のデータパターンが格納されている前記実ページに優先的にデータを移行する、ことを特徴とする制御方法。
【請求項１５】
請求項１４に記載の制御方法であって、
前記第１の外部ボリュームが複数存在する場合には、複数の前記第１の外部ボリュームの内、第１の仮想ボリュームへ割り当てらている実ページの容量が最も小さい外部ボリュームの前記第１のプールへの割り当てを優先的に解除する、ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想的な論理ボリュームに割り当てられる実領域を含むプールの容量制御に関する。
【背景技術】
【０００２】
従来、それぞれ性能の異なる複数種類の記憶装置を備えたストレージシステムが知られている。このストレージシステムは、同一種類の物理記憶デバイス上の記憶領域の集合を１つの階層（以下、ティアという）として、複数のティアで構成されたプールを用いてデータ管理を行うことができる。このような階層化されたストレージシステムにおいて、例えば、そのプールの容量が不足した場合に、ストレージシステムに接続された外部のストレージシステムの記憶領域をプールに追加して、プールの容量を拡張することが知られている（特許文献１）。また例えば、ストレージシステムにおいて、そのプールの容量を拡張及び縮小することが知られている（特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２１３４４８号公報
【特許文献２】特開２００６−３３８３４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
将来的に、ストレージシステムを自らの資産として保持し、クラウド内にある例えばクラウド事業者（オンラインストレージ事業者等）が提供する外部ストレージ装置とつなげ、ストレージシステム内部の記憶領域が枯渇した場合に、クラウド上の外部ストレージ装置の記憶領域を利用するという形態が考えられる。この場合、クラウド上の外部ストレージ装置の記憶領域を利用すると、利用量や時間に応じて課金されるため、なるべくストレージシステム内部の記憶領域を効率的に利用する必要があるといった課題があった。
【０００５】
しかし、特許文献１及び２では、そのような利用形態が考慮されておらず、また上記の課題も考慮されていないため、ストレージシステム内部の記憶領域の利用率を、外部ストレージ装置の記憶領域の利用率に比して上げるための装置や方法については開示されていない。
【０００６】
また、特許文献１及び２では、プールを階層的に管理し、階層間でページ単位（ボリュームよりも小さい単位）でデータをマイグレーションすることは開示されていない。プールのある階層に外部ストレージの記憶領域を含め階層間のマイグレーションを実行すると、外部ストレージ装置の記憶領域から内部のストレージシステム内の記憶領域にデータを移動しなければならず、その間のネットワークに負荷がかかるといった課題がある。
【０００７】
従って、ストレージ内部の記憶容量が枯渇した場合に、1時的に外部ストレージの記憶容量をプールのある階層に含めたとしても、ストレージ内部の記憶容量の枯渇が解消された場合には外部ストレージの記憶容量を削減する必要があるという課題があった。
【課題を解決するための手段】
【０００８】
上記課題を解決するための本発明のストレージシステムは、ストレージシステムであって、複数の記憶デバイスと、前記複数の記憶デバイスに関連付けられる複数の内部ボリュームと外部ストレージシステムに含まれる複数の外部記憶デバイスに関連付けられる複数の外部ボリュームとを管理し、前記複数の内部ボリュームに含まれる少なくとも１の内部ボリュームと前記複数の外部ボリュームに含まれる少なくとも１の外部ボリュームが割り当てられる第１のプールを管理し、書き込み要求を受領した場合に前記第１のプール内の１以上の実ページが割り当られる第１の仮想ボリュームを提供するコントローラと、を有し、前記コントローラは、前記第１のプールの記憶容量を減少させる場合に、前記少なくとも１の内部ボリュームに優先して前記少なくとも１の外部ボリュームに含まれる外部ボリュームの前記第１のプールへの割り当てを解除する、ことを特徴とするストレージシステムである。
【０００９】
上記課題を解決するための本発明の制御方法は、複数の記憶デバイスを含むストレージシステムにおける制御方法であって、前記複数の記憶デバイスに関連付けられる複数の内部ボリュームと外部ストレージシステムに含まれる複数の外部記憶デバイスに関連付けられる複数の外部ボリュームとを管理し、前記複数の内部ボリュームに含まれる少なくとも１の内部ボリュームと前記複数の外部ボリュームに含まれる少なくとも１の外部ボリュームが割り当てられる第１のプールを管理し、書き込み要求を受領した場合に前記第１のプール内の１以上の実ページが割り当られる第１の仮想ボリュームを提供し、前記第１のプールの記憶容量を減少させる場合に、前記少なくとも１の内部ボリュームに優先して前記少なくとも１の外部ボリュームに含まれる外部ボリュームの前記第１のプールへの割り当てを解除する、ことを特徴とする制御方法である。
【発明の効果】
【００１０】
ストレージ装置内部の記憶領域と外部ストレージ装置の記憶領域とを含むプール内のある階層を縮小する際に、外部ストレージ装置の記憶領域を優先して減設することにより、ストレージ装置内部の記憶領域を効率的に利用できるという効果を有する。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１の概要を説明する図である。
【図２】図２は、実施例１に係る計算機システム１００の一例を示す図である。
【図３】図３は、ＰＤＥＶを基に形成される論理ボリュームの一例を示す図である。
【図４】図４Ａは、制御メモリ０１４に記憶されるテーブルの一例を示す。図４Ｂは、制御メモリ１１４に記憶されるテーブルの一例を示す。
【図５】図５は、プール管理テーブル０４２の一例を示す。
【図６】図６は、ＶＶＯＬ管理テーブル０４３の一例を示す。
【図７】図７は、ＶＯＬ管理テーブル（１）０４４の一例を示す。
【図８】図８は、外部使用可否判定テーブル０４５の一例を示す。
【図９】図９は、ＶＯＬ管理テーブル（２）ＶＯＬ管理テーブル（２）０４６の一例を示す。
【図１０】図１０Ａは、外部ストレージ＃１の制御メモリ１１４に保存されたＶＯＬ管理テーブル０４９（Ａ）の構成例を示す。図１０Ｂは、外部ストレージ＃２の制御メモリ１１４に保存されたＶＯＬ管理テーブル０４９（Ｂ）の一例を示す。
【図１１】図１１は、ティア定義テーブルの一例を示す。
【図１２】図１２は、ティア判定処理のフローチャートの一例の一部である。
【図１３】図１３は、ティア判定処理のフローチャートの一例の残りである。
【図１４】図１４は、データライト処理のフローチャートの一例である。
【図１５】図１５は、データリード処理のフローチャートの一例である。
【図１６】図１６は、ダイナミックティアリング処理のフローチャートの一例である。
【図１７】図１７は、プール容量拡張処理のフローチャートの一例である。
【図１８】図１８は、実施例１のプール縮小処理の概要を説明する図である。
【図１９】図１９は、実施例１のプール容量縮小処理のフローチャートの一例である。
【図２０】図２０は、実施例２のプール容量縮小処理の概要を説明する図である。
【図２１】図２１は、実施例２のプール容量縮小処理のフローチャートの一例の第１部分である。
【図２２】図２２は、実施例２のプール容量縮小処理のフローチャートの一例の第２部分である。
【図２３】図２３は、実施例３のプール容量縮小処理の概要を説明する図である。
【図２４】図２４は、実施例３のプール容量縮小処理のフローチャートの一例の一部分である。
【図２５】図２５は、実施例３のプール容量縮小処理のフローチャートの一例の残りである。
【発明を実施するための形態】
【００１２】
以下、幾つかの実施例を説明する。
【００１３】
なお、以下の説明では「×××テーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されてもよい。データ構造に依存しないことを示すために「×××テーブル」を「×××情報」を呼ぶことができる。
【００１４】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、コントローラが有するプロセッサ（例えばＣＰＵ（Central  Processing  Unit）によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び/又は通信インタフェース装置（例えばホストアダプタ、ポート又はネットワークアダプタ）を用いながら行うため、処理の主語が、コントローラ或いはプロセッサとされてもよい。プログラムを主語として説明された処理は、ストレージシステム（又は外部ストレージシステム）、管理装置又はホスト計算機が行う処理としてもよい。コンピュータプログラムは、プログラムソースからコントローラ或いは計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであってもよい。
【００１５】
また、以下の説明では、同一要素を区別して説明する場合、その要素の参照符号に代えて又は加えて、その要素の識別番号を使用することがある。
【００１６】
「ＰＤＥＶ（Physical Device）」は、物理的な記憶デバイスである。ストレージシステム（又は外部ストレージシステム）は、ＰＤＥＶとして、不揮発性半導体メモリ（例えばフラッシュメモリ）を有するメモリドライブ（例えばＳＳＤ（Solid State Drive)、ＨＤＤ(Hard Disk Drive)、及び他種のドライブのうち少なくとも１つを有してよい。メモリドライブ、ＨＤＤ及び他種のドライブ（例えばＤＶＤドライブ）のうちの少なくとも１種類のドライブについて、インタフェースの種類が異なる複数のドライブがあってよい。インタフェースの種類としてはＦＣ(Fiber Channel)、ＳＡＳ(Serial Attached SCSI)及びＳＡＴＡ(Serial ATA)のうちの少なくとも１つであってよい。
【実施例１】
【００１７】
図１は、実施例１の概要を説明する図である。
【００１８】
本実施例は、シン・プロビジョニング機能を備えたストレージシステムが有するプールの縮小のための技術に関する。例えば、プールの容量が、破線で示す容量から、実線で示す容量に縮小される。
【００１９】
プール０３４は、１又は複数の論理ボリューム（以下、ＶＯＬ）で構成されている（以下、プール０３４の構成要素であるＶＯＬを「プールＶＯＬ」という）。プールＶＯＬは、下記の（ａ）及び（ｂ）、
（ａ）ストレージシステム１３０内の１以上のＰＤＥＶ（Physical  Device）（例えばＲＡＩＤ（Redundant  Array  of  Independent  (or  Inexpensive)  Disks）グループ）の記憶領域と関連するＶＯＬ（以下、ＩＶＯＬ（Ｉｎｔｅｒｎａｌ  Ｖｏｌｕｍｅ（内部ボリューム））ともいう）、
（ｂ）ストレージシステム１３０に接続されている外部のストレージシステム１４０（以下、外部ストレージ）の記憶資源と関連する仮想的なＶＯＬ（例えば、外部ストレージが有するＶＯＬである外部ＶＯＬがマッピングされた仮想的なＶＯＬ（外部ストレージシステムの記憶領域を自身が提供するように仮想化するストレージ仮想化技術に従うＶＯＬ、以下、ＥＶＯＬ（Ｅｘｔｅｒｎａｌ  Ｖｏｌｕｍｅ（外部ボリューム））ともいう）、
でも良い。ＥＶＯＬに対するアクセスは、実際には、ＥＶＯＬにマッピングされた外部ＶＯＬに対して発生する。
【００２０】
プール０３４は、複数のティアに区分されている。ティアの高さは、アクセス性能（Ｉ/Ｏ（Input/Output）性能）に依存する。同一のティアには、同程度のアクセス性能のＶＯＬが属する。ＶＯＬのアクセス性能は、基本的には、そのＶＯＬの基となるＰＤＥＶの性能で決まる。また、ＥＶＯＬのアクセス性能は、そのＥＶＯＬにマッピングされた外部ＶＯＬに基づくＰＤＥＶのＩ/Ｏ性能と、ストレージシステム１３０と外部ストレージ１４０間の通信速度等に依存する。なお、ＥＶＯＬのアクセス性能がこれらの要素以外の要素（例えば、外部ストレージ装置のコントローラの性能等）に依存する場合にもある。なお、１つのティアのみでプールが構成されることもある。
【００２１】
シンプロビジョニングでは、書き込み処理に応じて実ページを仮想ページに割り当てるが、逆に、データの削除などに応じて実ページの仮想ページへの割り当てを解除するリクラメーション処理を実行することができる。従って、一時的にプール０３４内の記憶領域の使用容量が増えてたとしても、運用を継続するに従って、使用容量が減少する場合がある。この場合には、該プールに割り当てられているプールＶＯＬの割り当てを解除（減設ともいう）し、プールを縮小する必要がある。
【００２２】
プール０３４には、使用容量の少ない（すなわち、格納されたデータの量が少ない）プールＶＯＬもあり得る。このような場合、使用容量の相対的に少ないプールＶＯＬ内のデータが、使用容量が相対的に多い他のプールＶＯＬに移行されることで、使用容量の少ないプールＶＯＬをプールから外すことができ、結果として、プールの容量を縮小することができる。なお、使用容量の相対的に少ないプールＶＯＬを移行元のプールVOLとして選択するのは、移行されるデータの量が少ないので、データ移行の負荷を軽減することができるためである。
【００２３】
プール縮小時のデータ移行に際しては、移行元プールＶＯＬ及び移行先プールＶＯＬの選択が重要となる。
【００２４】
本実施例では、移行元のプールＶＯＬは、縮小するティアにストレージシステム１３０内部のＶＯＬと外部ストレージシステム１４０の記憶領域が割り当てれたＥＶＯＬが存在する場合には、ＥＶＯＬを優先的に減設する。ストレージシステム１３０内部の記憶領域を効率的に使用することができる。
【００２５】
また、本実施例では、移行先のプールＶＯＬは、移行元のプールＶＯＬと同一プール内の同一ティアに属するプールＶＯＬを選択する。従って、移行元プールＶＯＬから重要なデータ（例えば、平均Ｉ/Ｏ頻度の高いデータ等）が低いティアに属するプールＶＯＬに移行される、或いは、移行元プールＶＯＬから重要でないデータ（例えば、平均Ｉ／Ｏ頻度の低いデータ等）が高いティアに属するプールＶＯＬに移行されることを防止することができる。
【００２６】
なお、一例において、ストレージシステム１３０が、クラウド上に存在する外部ストレージに１４０ネットワークを介してアクセスすることができ、外部ストレージシステム内の記憶領域を一時的に使用するようなシステムに適用することが可能である。
【００２７】
図２は、実施例１に係る計算機システム１００の構成例を示す図である。
【００２８】
計算機システム１００は、ホスト計算機（以下、ホストという）１１０、管理装置１２０、ストレージシステム１３０及び外部ストレージ１４０を有する。これらは、通信ネットワーク１５０を介して互いに接続される。通信ネットワーク１５０は、例えばＬＡＮ(Local  Area  Network)等、ＩＰプロトコルに基づくネットワークであるが、これに限定されない。
【００２９】
また、ストレージシステム１３０は、外部ストレージ１４０に通信ネットワーク１６０を介して接続される。通信ネットワーク１６０は、例えばＳＡＮ(Storage  Area  Network)であり、ｉＳＣＳＩ(Internet Small Computer System Interface)プロトコル、ＦＣ(Fibre  Channel)プロトコル等に基づくネットワークであるが、これに限定されない。
【００３０】
ホスト１１０は、出力装置（例えばディスプレイ装置）００１、入力装置（例えば、キーボード、ポインティングデバイス）００２、ＣＰＵ００３、ＰＤＥＶ（例えば補助記憶装置）００５、物理ディスクインターフェース００４、及び、メモリ（例えば主記憶装置及び不揮発性メモリ）００６を有する。また、ホスト１１０は、ストレージシステム１３０及び外部ストレージ１４０とのネットワーク連携を図るため、ストレージシステム１３０のホストアダプタ０１１に接続されるストレージアダプタ００７と、ストレージシステム１３０及び外部ストレージ１４０のネットワークアダプタ０１３及び管理装置１２０のネットワークアダプタ１０８に接続されるネットワークアダプタ００８を有する。
【００３１】
管理装置１２０は、ホスト１１０が有する要素００１〜００６及び００８と同様の要素１０１〜１０６及び１０８を有する。管理装置１２０は、ネットワークアダプタは有していなくてもよい。
【００３２】
ストレージシステム１３０は、複数のＰＤＥＶ０２１〜０２３と、それら複数のＰＤＥＶ０２１〜０２３に接続されたコントローラとを有する。コントローラは、例えば、ホスト１１０等と接続（例えば、ＦＣ接続、ＳＣＳＩ接続、ＣＩＦＳ／ＮＦＳ接続等）するためのホストアダプタ０１１と、外部ストレージ１４０等と接続（例えば、ＦＣ接続、ＳＣＳＩ接続、ＣＩＦＳ／ＮＦＳ接続等）するためのポート０１２と、ホスト１１０、管理装置１２０及び外部ストレージ１４０等と接続（例えば、ネットワーク接続）するためのネットワークアダプタ０１３と、制御メモリ０１４（例えば、揮発性又は不揮発性のメモリ）と、キャッシュメモリ０１６と、ＰＤＥＶ０２１〜０２３に接続されるストレージアダプタ０１７と、それらに接続されたＣＰＵ０１５とを有する。キャッシュメモリ０１６には、ＶＯＬに書き込まれるデータ又はＶＯＬから読み出されたデータが一時的に格納される。
【００３３】
ＰＤＥＶ０２１〜０２３は、アクセス性能の異なる複数種類のＰＤＥＶである。図示例では、アクセス性能の高い順に、ＳＳＤ０２１、ＳＡＳドライブ（ＳＡＳインタフェースのＨＤＤ）０２２、ＳＡＴＡドライブ（ＳＡＴＡインタフェースのＨＤＤ）０２３である。但し、これに限定されるものではなく、テープ等の記憶媒体であってもよい。
【００３４】
外部ストレージ１４０は、ストレージシステム１３０と同様に、複数のＰＤＥＶと、それらに接続されたコントローラとを有する。コントローラは、ストレージシステムのコントローラが有する要素０１２〜０１７と同様の要素１１２〜１１７を有する。  図３は、記憶領域の対応関係の一例を示す図である。
【００３５】
ストレージシステム１３０には、例えば、１以上のＲＡＩＤ(Redundant  Arrays  of  Independent  (or  Inexpensive) Disks)グループ０３５が、同一種類の複数のＰＤＥＶから構成される。図１に示したように、本実施例では、ＰＤＥＶとして、ＳＳＤ、ＳＡＳドライブ及びＳＡＴＡドライブがあるので、ＲＡＩＤグループとして、ＳＳＤで構成されたＲＡＩＤグループと、ＳＡＳドライブで構成されたＲＡＩＤグループと、ＳＡＴＡドライブで構成されたＲＡＩＤグループとがある。ＲＡＩＤグループ０３５は、例えば、ＲＡＩＤ１やＲＡＩＤ５等の所定のＲＡＩＤレベルに従いデータを記憶する。
【００３６】
ＲＡＩＤグループを基に、１以上のＶＯＬが形成される。具体的には、ＲＡＩＤグループ０３５に含まれる複数のＰＤＥＶのそれぞれの記憶領域によってＶＯＬ０３６が構成される。図示例では、１つのＲＡＩＤグループ０３５を基に１つのＶＯＬ０３６が形成されている。しかし、これに限定されるものではなく、１つのＲＡＩＤグループから複数のＶＯＬ０３６が形成されてもよい。
【００３７】
プール０３４は、ＶＶＯＬ０３２に割り当て可能な複数の実領域で構成される。実領域は、プールＶＯＬ０３６が２以上に分割されることにより得られた、プールＶＯＬ０３６の一部分である。実領域は、ＲＡＩＤグループを構成する複数のＰＤＥＶに基づく。ここで、プール＃００は、ＩＶＯＬ＃１のみで構成されている。ここで、プール＃００は、ＥＶＯＬを使用できないように設定されている。
【００３８】
一方、プール＃０１は、ＩＶＯＬ＃２とＥＶＯＬ＃３とで構成されている。ここで、プール＃０１は、ＥＶＯＬを使用できるように設定されている。
【００３９】
プール０３４は、アクセス性能の異なるＶＯＬ０３６で構成されてよい。すなわち、プール０３４が、複数のティアに区切られている。各ティアは、アクセス性能が同程度のＶＯＬ０３６で構成されてよい。ＶＯＬ０３６のアクセス性能は、基本的には、ＶＯＬ０３６の基となるＰＤＥＶのアクセス性能によって決まるが、ＥＶＯＬのアクセス性能は、そのＥＶＯＬにマッピングされた外部ＶＯＬの基となるＰＤＥＶのアクセス性能と、ストレージシステム１３０と外部ストレージ１４０との接続環境等によって決まってよい。
【００４０】
ＶＶＯＬ（Ｖｉｒｔｕａｌ  Ｖｏｌｕｍｅ（仮想ボリューム））０３２は、ホスト１１０に提供される仮想的なＶＯＬであり、複数の仮想的な記憶領域(以下、「仮想領域」）から構成されたＶＯＬである。ＶＶＯＬ０３２に対するライト要求が発生した場合は、プール０３４内の実領域が、ライト要求でライト先として指定されたアドレスが属する仮想領域に割り当てられ、その割り当てられた実領域に、ライト要求に従うライト対象のデータが格納される。このため、ＶＶＯＬ０３２がホスト１１０に提供されることで、実際の容量よりも大きな記憶容量をホスト１１０に提供することが可能となる。仮想領域への実領域の割り当ては、所定サイズの単位で行われる。以下の説明では、便宜上、この割り当て単位を「ページ」と呼ぶ。また、仮想領域を「仮想ページ」と呼び、実領域を「実ページ」と呼ぶことができる。ただし、仮想領域の実領域の割り当て単位はページに限られるものではなく、ページを複数個集めた単位であってもよい。
【００４１】
以上のことから、次のようにいうこともできる。すなわち、ＶＶＯＬ０３２は、複数の仮想ページ０３３ａで構成されている論理ボリュームである。また、プール０３４は、一以上かつ一種類以上のＶＯＬ０３６で構成されており、複数の実ページ０３４ａで構成されている一つの実ページ群である。
【００４２】
図４Ａは、ストレージシステム１３０の制御メモリ０１４に記憶されるテーブルの構成例を示す。図４Ｂは、外部ストレージ１４０の制御メモリ１１４に記憶されるテーブルの構成例を示す。
【００４３】
制御メモリ０１４が記憶するテーブルは、例えば、ティア定義テーブル０４１、プール管理テーブル０４２、ＶＶＯＬ管理テーブル０４３、ＶＯＬ管理テーブル（１）０４４、外部使用可否判定テーブル０４５及びＶＯＬ管理テーブル（２）０４６である。なお、制御メモリ０１４が外部ストレージのＶＯＬ管理テーブル０４７を有していてもよい。
【００４４】
制御メモリ１１４が記憶するテーブルは、例えば、外部ストレージのＶＯＬ管理テーブル０４７である。
【００４５】
図５は、プール管理テーブル０４２の構成例を示す。
【００４６】
プール管理テーブル０４２は、各プール０３４の構成を示したテーブルである。具体的には、例えば、このテーブル０４２は、プールＶＯＬ０３６毎に、下記の情報、
（＊）プールＶＯＬ０３６を有するプール０３４のプールＩＤ０５１、
（＊）プールＶＯＬ０３６が属するティアのティアＩＤ０５２、
（＊）プールＶＯＬ０３６の識別番号であるＶＯＬ  ＩＤ０５３、
（＊）プールＶＯＬ０３６の基となる複数のＰＤＥVの種類を表すＰＤＥＶ  Ｔｙｐｅ０５４、
（＊）プールＶＯＬ０３６の容量のうち使用されている容量を表す使用容量０５５、
（＊）プールＶＯＬ０３６が属するティアの使用割合の最大値として設定されるティア最大閾値０５６、
（＊）プールＶＯＬ０３６が属するティアの使用割合の最小値として設定されるティア最小閾値０５７、
（＊）プールＶＯＬ０３６が属するティアの現在の使用割合０５８、
（＊）プールＶＯＬ０３６が属するティアに属するすべての実ページ０３４ａの実ページＩＤ０５９、
を有する。プールＶＯＬ０３６の使用容量は、そのプールＶＯＬ０３６に属する複数の実ページ０３４ａのうちの、仮想ページ０３３ａに割り当てられている実ページ０３４ａの容量の合計である。また、ティアの使用割合は、そのティアに属するすべての実ページ０３４ａ（仮想ページ０３３ａに割り当てられていない実ページ０３４ａも含む）の合計容量に対する、そのティアに属するすべてのプールＶＯＬ０３６の合計の使用容量０５５の割合である。つまり、そのティアに属するすべての実ページ０３４ａ（仮想ページ０３３ａに割り当てられていない実ページ０３４ａも含む）の合計容量に対する、そのティアに属する仮想ページ０３３に割り当てられている実ページの合計容量の割合である。
【００４７】
具体的には、例えば、プールＶＯＬ「00：00」は、その種類が「ＳＳＤ」であり（つまりＳＳＤに基づくＶＯＬであり）、プール「00」のティア「01」に属している。プール「00」のティア「01」は、実ページ「00000」〜「00999」で構成されており、現在の使用割合は40％である。このティアは、最大閾値が90％、最小閾値が20％に設定されている。
【００４８】
なお、最大閾値及び最小閾値は、例えば、管理装置１２０から設定されてよい。使用容量が最大閾値に達した場合、ティアの増設又は拡張（すなわち、プール０３４の拡張）を実行する。使用容量が最小閾値に達した場合、ティアの減設又は縮小（すなわち、プール０３４の縮小）を実行する。
【００４９】
図６は、ＶＶＯＬ管理テーブル０４３の構成を示す。
【００５０】
ＶＶＯＬ管理テーブル０４３は、ＶＶＯＬ０３２の構成を示すテーブルである。具体的には、例えば、このテーブル０４３は、仮想ページ０３３ａ毎に、下記の情報、
（＊）仮想ページが属するＶＶＯＬのＶＶＯＬ  ＩＤ０６１、
（＊）仮想ページの識別番号である仮想ページＩＤ０６２、
（＊）仮想ページに割り当てられた実ページを含むプール０３４のＰＯＯＬ  ＩＤ０６３、
（＊）仮想ページ割り当てられている実ページの実ページＩＤ０６４、
（＊）仮想ページに割り当てられた実ページが属するティアのティア  ＩＤ０６５、
（＊）仮想ページに対してホストから単位時間（例えば１秒）当たりにリード及び/又はライトされるデータの量の平均である平均Ｉ/Ｏ０６６、
（＊）仮想ページに対してホストから単位時間（例えば１秒）当たりにリード及び/又はライトされるデータの最大量である最大Ｉ/Ｏ０６７、
を有する。具体的には、例えば、ＶＶＯＬ「00」に属する仮想ページ「00000」に、プール「00」のティア「01」の実ページ「00010」が割り当てられている。また、仮想ページ「00000」は、ホストから単位時間にリード/ライトされるデータの量の平均は、単位時間当たり、「10」MBであり、最大のリード/ライト量は「30」MBである。
【００５１】
図７は、ＶＯＬ管理テーブル（１）０４４の構成例を示す。
【００５２】
ＶＯＬ管理テーブル（１）０４４は、各ＶＯＬ０３６の構成を示したテーブルである。なお、ＶＯＬ管理テーブル（１）０４４では、ストレージシステム１３０内部のＰＤＥＶによって構成されるＩＶＯＬを管理する。具体的には、例えば、このテーブル０４４は、ＶＯＬ０３６毎に、下記の情報、
（＊）ＶＯＬ０３６の識別番号であるＶＯＬ  ＩＤ０７１、
（＊）ＶＯＬ０３６の容量を表す容量００７２、
（＊）ＶＯＬ０３６の基となる複数のＰＤＥＶの種類を表すＰＤＥＶ  Ｔｙｐｅ０７３、
（＊）ＶＯＬ０３６の基となる複数のＰＤＥＶで構成されるＲＡＩＤグループ０３５を表すＲＡＩＤグループ０７４、
（＊）ＲＡＩＤグループ０３５のレベルを表すＲＡＩＤレベル０７５、
（＊）ＲＡＩＤグループ０３５の構成を表すＲＡＩＤ構成０７６、
を表す。具体的には、例えば、ＶＯＬ「00：00」は、その容量が１０２４ＭＢである。また、ＶＯＬ「00：00」は、ディスクタイプ「ＳＳＤ」の複数のＰＤＥＶで構成されるＲＡＩＤグループ「01」に基づく。ＲＡＩＤグループ「01」は、７つのデータディスクと１つのパリティディスク（７Ｄ+１Ｐ）で構成されており、ＲＡＩＤ５である。
【００５３】
図８は、外部使用可否判定テーブル０４５の構成例を示す。
【００５４】
外部使用可否判定テーブル０４５は、各プール０３４が外部ストレージ１４０を使用可能であるか否かを示したテーブルである。具体的には、例えば、このテーブル０４５は、プール毎に、下記の情報、
（＊）プール０３４の識別番号であるプール  ＩＤ０８１、
（＊）プール０３４が外部ストレージ１４０を使用可能であるか否かを表す外部ストレージの使用可否０８２、
を表す。具体的には、例えば、プール「00」は、外部ストレージ１４０を使用できず（ＯＦＦ）、プール「01」は、外部ストレージ１４０を使用可能である（ＯＮ)。なお、この外部ストレージの使用可否の設定は、管理装置１２０から設定されてもよい。
【００５５】
例えば、重要性が高いデータ（顧客データなど）であって、クラウド上の外部ストレージの記憶領域へ保存したくないデータを保存するＶＶＯＬの場合には、「ＯＦＦ」に設定する。また、重要性が低いデータであって、クラウド上の外部ストレージの記憶領域へ保存することのできるデータを保存するＶＶＯＬの場合には、「ＯＮ」に設定する。
【００５６】
図９は、ＶＯＬ管理テーブル（２）０４６の構成例を示す。
【００５７】
ＶＯＬ管理テーブル（２）０４６は、ＶＯＬ０３６毎に、外部ＶＯＬにマッピングされたＶＯＬ（ＥＶＯＬ）であるか否かと、ＶＯＬがＥＶＯＬである場合は、ストレージシステム１３０と外部ストレージ１４０との接続環境が指定される。具体的には、例えば、このテーブル０４６は、ＶＯＬ０３６毎に、下記の情報、
（＊）ＶＯＬ０３６の識別番号であるＶＯＬ  ＩＤ０９１、
（＊）ＶＯＬ０３６に対応する外部ＶＯＬの識別番号である外部ＶＯＬ  ＩＤ０９２、
（＊）ＶＯＬ０３６の容量０９３、
（＊）ＶＯＬ０３６を含むプール０３４のＰＯＯＬ  ＩＤ０９４、
（＊）ＶＯＬ０３６が属するティアのティア  ＩＤ０９５、
（＊）ＶＯＬ０３６の基となるＲＡＩＤグループ０３５の識別番号であるＲＡＩＤグループ  ＩＤ０９６、
（＊）ストレージシステム１３０、外部ストレージ１４０間の接続環境、及び、ＥＶＯＬ０３６、外部ＶＯＬ０３６間の転送速度を表す外部接続環境０９７、
を有する。具体的には、例えば、ＶＯＬ「00：00」は、１０２４ＭＢであって、プール「00」に含まれる。また、ＶＯＬ「00：00」は、ティア「01」に属し、ＲＡＩＤグループ「01」に基づく論理デバイスであり、ＥＶＯＬではない（ＩＶＯＬである）。また例えば、ＶＯＬ「00：04」は、１０２４ＭＢであって、プール「01」に含まれる。また、ＶＯＬ「00：04」は、ティア「03」に属し、外部ＶＯＬ「02：AB」に基づく論理デバイスであ（ＥＶＯLである）。このとき、外部ＶＯＬ「02：AB」を有する外部ストレージ１４０はストレージシステム１３０に直結されており、ＥＶＯＬ「00：04」、外部ＶＯＬ「02：AB」間の転送速度は、２Ｇｂｐｓである。
【００５８】
図１０Ａは、外部ストレージ＃１の制御メモリ１１４に保存されたＶＯＬ管理テーブル０４９（Ａ）の構成例を示す図である。図１０Ｂは、外部ストレージ＃２の制御メモリ１１４に保存されたＶＯＬ管理テーブル０４９（Ｂ）の構成例を示す図である。
【００５９】
外部ストレージのＶＯＬ管理テーブル０４９（Ａ）、０４９（Ｂ）の構成は同じであるので、一方（０４９（Ａ））のみについて説明する。ＶＯＬ管理テーブル０４９（Ａ）は、具体的には、例えば、外部ＶＯＬ毎に、以下の処理、
（＊）外部ＶＯＬ０３６の識別番号であるＶＯＬ  ＩＤ１００１、
（＊）外部ＶＯＬ０３６の容量表す容量１００２、
（＊）外部ＶＯＬ０３６の基となる複数のＰＤＥＶの種類を表すＰＤＥＶ  Ｔｙｐｅ１００３、
（＊）外部ＶＯＬ０３６の基となる複数のＰＤＥＶで構成されるＲＡＩＤグループ０３５を表すＲＡＩＤグループ１００４、
（＊）ＲＡＩＤグループ０３５のレベルを表すＲＡＩＤレベル１００５、
（＊）ＲＡＩＤグループ０３５の構成を表すＲＡＩＤ構成１００６、
（＊）ＥＶＯＬ０３６に対する１秒あたりのリード量又はライト量を表すＲ/Ｗ（リード/ライト）速度１００７、
を表す。具体的には、例えば、外部ＶＯＬ「02:AB」は、容量が５１２ＭＢでＲ/Ｗ速度は１００Ｍｂｐｓであり、ディスクタイプ「ＳＡＳ」の複数のＰＤＥＶで構成されるＲＡＩＤグループ「05」に基づく。また、ＲＡＩＤグループ「05」は、６つのデータディスクと２つのパリティディスク（６Ｄ+２Ｐ）で構成されており、ＲＡＩＤレベル６である。
【００６０】
図１１は、ティア定義テーブルの構成例を示す。
【００６１】
ティア定義テーブル０４１は、ティアを定義するためのテーブルである。具体的には、例えば、このテーブル０４１は、ティア毎に、下記の情報、
（＊）ティアの識別番号であるティア  ＩＤ１１０１、
（＊）ティアに対応づけられるＰＤＥＶの種別１１０２、
（＊）ティアに属するＶＯＬの平均Ｉ/Ｏ（図６参照）の許容範囲１１０３、
を有する。具体的には、例えば、ティア「01」に属するＶＯＬの基になるＰＤＥVの種類は「ＳＳＤ」である。また、ティア「01」に属するＶＯＬの平均Ｉ/Ｏの許容範囲は、６０ＭＢ以上である。ティアテーブル０４１は、図１２及び１３のティア判定処理に際して使用される。
【００６２】
図１２は、ティア判定処理のフローチャートの一例の一部分である。図１３は、そのフローチャートの残りの部分である。ティア判定処理は、ストレージシステムのコントローラで行われるが、他のいずれかの装置（例えばホスト或いは管理装置）で行なわれても良い。例えば、管理装置又はホストが、ストレージシステム及び外部ストレージが有するテーブルが有する情報を取得し、取得した情報を基に、ティア判定処理を行っても良い。
【００６３】
Ｓ１２０１で、プログラムは、ＶＯＬ０３６を１つ選択する。具体的には、プログラムは、例えば、ＶＯＬ管理テーブル（２）０４６を参照し、最もＩＤ０９１の小さなＶＯＬ０３６を１つ特定する。
【００６４】
Ｓ１２０２で、プログラムは、選択したＶＯＬ０３６にマッピングされた外部ＶＯＬ０３６があるか否かを判定する。具体的には、プログラムは、例えば、ＶＯＬ管理テーブル（２）０４６を参照し、Ｓ１２０１（またはＳ１２０９）で特定したＩＤ０９１のＶＯＬに対応する外部ＶＯＬ０９２があるか否かを判定する。判定の結果が肯定的な場合は（Ｓ１２０２：Ｙｅｓ）、Ｓ１２０３に進む。一方、判定の結果が否定的な場合は（Ｓ１２０２：Ｎｏ）、Ｓ１２１０へ進む。
【００６５】
Ｓ１２１０で、プログラムは、選択したＶＯＬ０３６のＰＤＥＶの種別を特定する。具体的には、プログラムは、例えば、ＶＯＬ管理テーブル（１）０４４を参照して、Ｓ１２０１で特定したＶＯＬのＩＤ０７１に対応するＰＤＥＶタイプ０７３を特定する。
【００６６】
Ｓ１２１１で、プログラムは、選択したＶＯＬ０３６が属するティアを判定する。具体的には、プログラムは、例えば、ティア定義テーブル０４１を参照して、Ｓ１２１０で特定したＰＤＥＶタイプ１１０２に合致するティアのＩＤ１１０１を特定する。その後、Ｓ１２０７へ進む。なお、ティア判定時にＰＤＥＶのタイプだけではなく、ＲＡＩＤＬＥＶＥＬ等を考慮してもよい。
【００６７】
Ｓ１２０３で、プログラムは、外部接続環境を取得する。具体的には、プログラムは、例えば、ＶＯＬ管理テーブル（２）０４６を参照し、Ｓ１２０１（またはＳ１２０９）で特定したＩＤ０９１に対応する外部接続環境０９７を特定する。
【００６８】
Ｓ１２０４で、プログラムは、Ｓ１２０３で特定した外部接続環境がＦＣ直結か否かを判定する。ＦＣ直結であった場合は、Ｓ１２０５へ進む。外部接続環境がＦＣ直結以外であった場合は、図１３のフローへ進む。「ＦＣ直結」とは、ストレージシステムに、外部ストレージが、１本のＦＣケーブル、或いは複数のＦＣケーブルをパラレルで接続されていることを意味する。すなわち、図２では、例示として、ＳＡＮのような通信ネットワーク１６０を介してストレージシステムに外部ストレージが接続されているが、必ずしも通信ネットワーク１６０を介して接続される構成でなくて良い。ストレージシステムに対して、外部ストレージは、ＦＣ直結、すなわち、１本のＦＣケーブル、或いは複数のＦＣケーブルをパラレルで接続されても良い。
【００６９】
Ｓ１２０５で、プログラムは、選択したＶＯＬ０３６のＰＤＥＶタイプを特定する。具体的には、例えば、プログラムは、外部ストレージ１４０に対して外部ストレージのＶＯＬ管理テーブル０４９（Ａ）又は０４９（Ｂ）を送信するよう要求する。そして、プログラムは、外部ストレージ１４０から受信した、外部ストレージのＶＯＬ管理テーブル０４９（Ａ）又は０４９（Ｂ）を参照して、Ｓ１２０１（またはＳ１２０９）で特定したＶＯＬのＩＤ１００１に対応するＰＤＥＶタイプ１００３を特定する。なお、ここでは、ストレージシステム１３０が外部ストレージシステム１４０に対して外部ストレージのＶＯＬ管理テーブル０４９（Ａ）又は０４９（Ｂ）を送信するよう要求していたが、これに限られない。例えば、ストレージシステム１３０は、外部ストレージ１４０に対してＳ１２0１で特定したＶＯＬのＩＤ１００１を送信し、外部ストレージ１４０によって特定されたＰＤＥＶタイプを送信するよう要求してもよい。また、外部ストレージ１４０が外部ストレージのＶＯＬ管理テーブル０４９（Ａ）又は０４９（Ｂ）をストレージシステム１３０に定期的に送信することとし、ストレージシステム１３０が自身の制御メモリ０１４に保持された外部ストレージのＶＯＬ管理テーブル０４９（Ａ）又は０４９（Ｂ）を参照するようにしてもよい。
【００７０】
Ｓ１２０６で、プログラムは、選択したＶＯＬ０３６が属するティアを判定する。具体的には、プログラムは、例えば、ティア定義テーブル０４１を参照して、Ｓ１２０５で特定したＰＤＥＶタイプ１１０２に合致するティアのＩＤ１１０１を特定する。その後、Ｓ１２０７へ進む。なお、ティア判定時にＰＤＥＶのタイプだけではなく、ＲＡＩＤＬＥＶＥＬ等を考慮してもよい。
【００７１】
Ｓ１２０７で、プログラムは、ＶＯＬ管理テーブル（２）０４６を更新する。具体的には、プログラムは、例えば、Ｓ１２０６（またはＳ１２１１）で特定したＩＤ１１０１をＶＯＬ管理テーブル（２）０４６のティアＩＤ０９５に記録する。
【００７２】
Ｓ１２０８で、プログラムは、次のＶＯＬ０３６があるか否かを判定する。具体的には、プログラムは、例えば、ＶＯＬのＶＯＬ管理テーブル（２）０４６を参照し、Ｓ１２０１で特定されたＩＤの次に小さいＩＤ０９１のＶＯＬ０３６が存在するか否かを判定する。当該ＶＯＬが存在する場合は、Ｓ１２０９に進む。当該ＶＯＬが存在しない場合は、この処理は終了となる。
【００７３】
Ｓ１２０９で、プログラムは、ＶＯＬ管理テーブル（２）０４６の中から、Ｓ１２０１（またはＳ１２０９）で特定されたＩＤの次に小さいＩＤ０９１のＶＯＬ０３６を特定する。そして、Ｓ１２０２に進む。
【００７４】
図１２のＳ１２０４の判定でＮＯの場合、すなわち、Ｓ１２０１（またはＳ１２０９）で特定されたＶＯＬ０３６が外部ＶＯＬマッピングされている場合であって（すなわち、ＥＶＯＬであって）、かつ、外部接続環境０９７（図９参照）がＦＣでの直結以外であった場合、Ｓ１３０１以下の処理が行われる。
【００７５】
Ｓ１３０１で、プログラムは、外部ＶＯＬ０３６の基となるＰＤＥＶのＰＤＥＶタイプが「ＳＳＤ」であるか否かを判定する。具体的には、プログラムは、例えば、Ｓ１２１０で特定したＰＤＥＶタイプが「ＳＳＤ」か否かを判定する。判定の結果、ＰＤＥＶタイプがＳＳＤであった場合（Ｓ１３０１：Ｙｅｓ）は、Ｓ１３０２に進む。一方、ＰＤＥＶタイプがＳＳＤでなかった場合（Ｓ１３０１：Ｎｏ）、本実施例ではＰＤＥＶタイプがＳＡＳ又はＳＡＴＡであった場合は、Ｓ１３０４へ進む。
【００７６】
Ｓ１３０４で、プログラムは、外部ＶＯＬ０３６の基となるＰＤＥＶのＰＤＥＶタイプが「ＳＡＳ」であるか否かを判定する。具体的には、プログラムは、例えば、Ｓ１２１０で特定したＰＤＥＶタイプが「ＳＡＳ」か否かを判定する。判定の結果、ＰＤＥＶタイプがＳＡＳであった場合（Ｓ１３０４：Ｙｅｓ）は、Ｓ１３０５に進む。一方、ＰＤＥＶタイプがＳＡＳでなかった場合（Ｓ１３０４：Ｎｏ）、本実施例ではＰＤＥＶタイプがＳＡＴＡの場合は、Ｓ１３０７へ進む。
【００７７】
Ｓ１３０２で、プログラムは、選択したＶＯＬ（ＥＶＯＬ）と外部ＶＯＬとの間の転送速度が、当該外部ＶＯＬの基となるＰＤＥＶ（ＳＳＤ）のＲ/Ｗ速度と同じか又はそれよりも速いか否かを判定する。具体的には、プログラムは、例えば、ＶＯＬ管理テーブル（２）０４６を参照し、Ｓ１２０１（またはＳ１２０９）で特定したＶＯＬのＩＤ０９１に対応した外部ＶＯＬ０９２及び外部接続環境０９７の転送速度を特定し、さらに、外部ストレージのＶＯＬ管理テーブル０４９（Ａ）、０４９（Ｂ）を参照し、特定した外部ＶＯＬのＩＤ１００１に対応するＲ/Ｗ速度１００７を特定する。そして、プログラムは、特定した転送速度が特定したＲ/Ｗ速度と同じ又は速いか否かを判定する。判定の結果が肯定的な場合は（Ｓ１３０２：Ｙｅｓ）、Ｓ１３０３に進む。一方、判定の結果が否定的な場合（Ｓ１３０２：Ｎｏ）は、Ｓ１３０５に進む。
【００７８】
Ｓ１３０３で、プログラムは、Ｓ１２０１（またはＳ１２０９）で特定したＶＯＬが属するティアを「ティア１」と定義する。即ち、Ｓ１２０１（またはＳ１２０９）で特定したＶＯＬと外部ＶＯＬとの間の転送速度が、ＳＳＤのＲ/Ｗ速度と同じか又は速い場合、そのＶＯＬは、ＳＳＤの性能を出せると判断され、「ティア１」に属すると定義される。その後、Ｓ１２０７（図１２）へ進む。
【００７９】
Ｓ１３０５で、プログラムは、選択したＶＯＬと外部ＶＯＬとの間の転送速度が、当該外部ＶＯＬの基となるＰＤＥＶ（ＳＡＳ）のＲ/Ｗ速度と同じか又はそれよりも速いか否かを判定する。具体的には、プログラムは、例えば、ＶＯＬ管理テーブル（２）０４６を参照し、Ｓ１２０１（またはＳ１２０９）で特定したＶＯＬのＩＤ０９１に対応した外部ＶＯＬ０９２及び外部接続環境０９７の転送速度を特定し、さらに、外部ストレージのＶＯＬ管理テーブル０４９（Ａ）、０４９（Ｂ）を参照し、特定した外部ＶＯＬのＩＤ１００１に対応するＲ/Ｗ速度１００７を特定する。そして、プログラムは、特定した転送速度が特定したＲ/Ｗ速度と同じ又は速いか否かを判定する。判定の結果が肯定的な場合は（Ｓ１３０５：Ｙｅｓ）、Ｓ１３０６に進む。一方、判定の結果が否定的な場合（Ｓ１３０５：Ｎｏ）は、Ｓ１３０７に進む。
【００８０】
Ｓ１３０６で、プログラムは、Ｓ１２０１（またはＳ１２０９）で特定したＶＯＬが属するティアを「ティア２」と定義する。即ち、Ｓ１２０１（またはＳ１２０９）で特定したＶＯＬと外部ＶＯＬとの間の転送速度が、ＳＡＳのＲ/Ｗ速度と同じか又は速い場合、選択したＶＯＬは、ＳＡＳドライブの性能を全て出せると判断され、「ティア２」に属すると定義される。その後、Ｓ１２０７（図１２）へ進む。
【００８１】
Ｓ１３０７で、プログラムは、選択したＶＯＬと外部ＶＯＬとの間の転送速度が、当該外部ＶＯＬの基となるＰＤＥＶ（ＳＡＴＡ）のＲ/Ｗ速度と同じか又はそれよりも速いか否かを判定する。具体的には、プログラムは、例えば、ＶＯＬ管理テーブル（２）０４６を参照し、Ｓ１２０１（またはＳ１２０９）で特定したＶＯＬのＩＤ０９１に対応した外部ＶＯＬ０９２及び外部接続環境０９７の転送速度を特定し、さらに、外部ストレージのＶＯＬ管理テーブル０４９（Ａ）、０４９（Ｂ）を参照し、特定した外部ＶＯＬのＩＤ１００１に対応するＲ/Ｗ速度１００７を特定する。そして、プログラムは、特定した転送速度が特定したＲ/Ｗ速度と同じ又は速いか否かを判定する。判定の結果が肯定的な場合は（Ｓ１３０７：Ｙｅｓ）、Ｓ１３０８に進む。一方、判定の結果が否定的な場合（Ｓ１３０７：Ｎｏ）は、Ｓ１３０９に進む。
【００８２】
Ｓ１３０８で、プログラムは、Ｓ１２０１（またはＳ１２０９）で特定したＶＯＬが属するティアを「ティア３」と定義する。即ち、Ｓ１２０１（またはＳ１２０９）で特定したＶＯＬと外部ＶＯＬとの間の転送速度が、ＳＡＴＡのＲ/Ｗ速度と同じか又は速い場合、選択したＶＯＬは、ＳＡＴＡドライブの性能を全て出せると判断され、「ティア３」に属すると定義される。その後、Ｓ１２０７（図１２）へ進む。
【００８３】
Ｓ１３０９で、プログラムは、Ｓ１２０１（またはＳ１２０９）で特定したＶＯＬが属するティアを「ティア４」と定義する。つまり、ティア４のその他に分類される。即ち、Ｓ１２０１（またはＳ１２０９）で特定したＶＯＬと外部ＶＯＬとの間の転送速度が、ＳＡＴＡのＲ/Ｗ速度より遅い場合、選択したＶＯＬは、ＳＡＴＡドライブの性能より低いと判断され、「ティア４」に属すると定義される。その後、Ｓ１２０７（図１２）へ進む。
【００８４】
図１４は、データライト処理のフローチャートである。データライト処理は、シンプロビジョニングのライト処理である。データライト処理は、ストレージシステムのコントローラで行われる。
【００８５】
Ｓ１４０１で、プログラムは、ホスト１１０から発行されたライト要求を受信する。
【００８６】
Ｓ１４０２で、プログラムは、ライト先の仮想ページに実ページが割り当てられていないか否かを判定する。具体的には、プログラムは、例えばＶＶＯＬ管理テーブル０４３を参照し、Ｓ１４０１で受信したライト要求に従うライト先のＶＶＯＬＩＤ０６１及び仮想ページＩＤ０６２に対応する実ページＩＤ０６４を特定する。特定されたＩＤ０６４が、割り当て済みを意味する値（図６の例では、数字が記載されている）である場合は（Ｓ１４０２：Ｎｏ）、Ｓ１４０４へ進む。一方、特定されたＩＤ０６４が、未割り当てを意味する値（図６の例では「ＮＡ」が記載されている）である場合は（Ｓ１４０２：Ｙｅｓ）、Ｓ１４０３へ進む。
【００８７】
Ｓ１４０３で、プログラムは、ライト先の仮想ページ０３３ａに割り当てられた実ページ０３４ａに、Ｓ１４０１で受けたライト要求に従うライトデータを格納する。具体的には、例えば、プログラムは、ＶＶＬＯＬ管理テーブル０４３を参照して、ライト先の仮想ページのＩＤ０６１に対応する実ページのＩＤ０６４を特定し、特定されたＩＤ０６４から識別される実ページ０３４ａにライトデータを格納し、この処理は終了する。
【００８８】
Ｓ１４０４で、プログラムは、ライト先の仮想ページ０３３ａに、割り当て可能な実ページ０３４ａをプール０３４から割り当てる。そして、プログラムは、仮想ページ０３３ａに割り当てられた実ページ０３４ａにライトデータを格納する。具体的には、例えば、プログラムは、仮想ページ０３３ａが未割当の実ページ０３４ａを検索し、特定された実ページ０３４ａにライト先の仮想ページ０３３ａを割り当てる。また、割り当てられる実ページは指定されたティア（デフォルトティア）に属する未割り当て実ページであってもよい。そして、プログラムは、割り当てられた実ページのＩＤ、及びその実ページが属するプールのＩＤをＶＶＯＬ管理テーブル０４３に登録する。さらに、プログラムは、プール管理テーブル０４２を参照し、特定したプールの実ページに対応するティアのＩＤ０５２を特定し、特定したティアのＩＤをＶＶＯＬ管理テーブル０４３に登録し、この処理は終了する。
【００８９】
図１５は、データリード処理のフローチャートである。データリード処理は、ストレージシステムのコントローラで行われる。
【００９０】
Ｓ１５０１で、プログラムは、ホストから発行されたリード要求を受信する。
【００９１】
Ｓ１５０２で、プログラムは、リード元の仮想ページ０３３ａに実ページ０３４ａが割り当てられていないか否かを判定する。具体的には、プログラムは、例えばＶＶＯＬ管理テーブル０４３を参照し、Ｓ１５０１のリード要求に従うリード元のＶＶＯＬのＩＤ０６１及び仮想ページのＩＤ０６２に対応する実ページのＩＤ０６４を特定する。特定されたＩＤ０６４が、割り当て済みを意味する値（図６の例では、数字が記載されている）である場合は（Ｓ１５０２：Ｎｏ）、Ｓ１５０４へ進む。一方、特定されたＩＤ０６４が、未割り当てを意味する値（図６の例では「ＮＡ」が記載されている）である場合は（Ｓ１５０２：Ｙｅｓ）、Ｓ１５０３へ進む。
【００９２】
Ｓ１５０４で、プログラムは、リード元の仮想ページ０３３ａに割り当てられた実ページ０３４ａからデータを読み出す。具体的には、例えば、プログラムは、ＶＶＬＯＬ管理テーブル０４３を参照して、リード元の仮想ページのＩＤ０６１に対応するＩＤ０６４を特定し、特定されたＩＤ０６４から識別される実ページ０３４ａに格納されたデータを読み出してホスト１１０へ送信し、処理は終了する。
【００９３】
Ｓ１５０３で、プログラムは、リード元の仮想ページ０３３ａに実ページ０３４ａが割り当てられていない旨をホストに応答する。具体的には、例えば、プログラムは、ホストに０データ（１がなく０のみのデータ）やその他のあらかじめ定められたデータパターンを送信し、処理は終了する。
【００９４】
図１６は、ダイナミックティアリング処理のフローチャートである。
【００９５】
ダイナミックティアリング処理は、ホスト１１０から仮想ページ０３３ａへの平均Ｉ/Ｏ量（平均Ｉ／Ｏ頻度）に応じて、仮想ページ０３３ａを適切なティアに割り当てる処理である。この処理は、ストレージシステムのコントローラで行われるが、他のいずれかの装置（例えばホスト或いは管理装置）で行なわれても良い。例えば、管理装置又はホストが、ストレージシステム及び外部ストレージが有するテーブルが有する情報を取得し、取得した情報を基に、ダイナミックティアリング処理を行っても良い。
【００９６】
また、本処理は、定期的に実行してもよいし、管理装置より指定された期間に実行してもよい。
【００９７】
Ｓ１６０１で、プログラムは、ＶＶＯＬ０３２を選択する。具体的には、例えば、プログラムは、ＶＶＯＬ管理テーブル０４３を参照し、最もＩＤ０６１の小さいＶＶＯＬ０３２を１つ特定する。
【００９８】
Ｓ１６０２で、プログラムは、選択されたＶＶＯＬ０３２の中から、仮想ページ０３３ａを１つ選択し、その仮想ページ０３３ａの平均Ｉ/Ｏを取得する。具体的には、例えば、プログラムは、ＶＶＯＬ管理テーブル０４３を参照し、Ｓ１６０１で特定されたＶＶＯＬ０３２の中から、最もＩＤ０６２の小さい仮想ページ０３３ａを１つ特定し、特定された仮想ページ０３３ａの平均Ｉ/Ｏ０６６を特定する。
【００９９】
Ｓ１６０３で、プログラムは、Ｓ１６０２で取得した平均Ｉ/Ｏに基づき、選択された仮想ページ０３３ａに適切なティアを判別する。具体的には、例えば、プログラムは、ティア定義テーブル０４１を参照し、Ｓ１６０２で特定された平均Ｉ/Ｏ０６６が存在するＩ/Ｏの許容範囲１１０３を特定し、特定したＩ/Ｏの許容範囲１１０３に対応するティアのＩＤ１１０１を特定する。
【０１００】
Ｓ１６０４で、プログラムは、選択された仮想ページ０３３ａに対し、適切なティアと、現在のティアを比較する。具体的には、例えば、プログラムは、ＶＶＯＬ管理テーブル０４３を参照し、Ｓ１６０２で特定された仮想ページのＩＤ０６２に対応するティアのＩＤ０６５を特定する。そして、特定されたＩＤ０６５と、Ｓ１６０３で特定したティアのＩＤとを比較する。
【０１０１】
Ｓ１６０５で、プログラムは、Ｓ１６０４で比較した、適切なティアと現在のティアのＩＤが同じか否かを判定する。判定の結果、適切なティアと現在のティアのＩＤが同じである場合は（Ｓ１６０５：Ｙｅｓ）、Ｓ１６１０に進む。一方、適切なティアと現在のティアのＩＤが同じではない場合は（Ｓ１６０５：Ｎｏ）、Ｓ１６０６に進む。
【０１０２】
Ｓ１６０６で、プログラムは、選択した仮想ページに対する適切なティアの空容量を算出する。具体的には、例えば、プログラムは、プール管理テーブル０４２を参照して、Ｓ１６０３で特定したティアのＩＤ０５２に対応する使用割合０５５を特定し、ＶＯＬ管理テーブル（２）０４６を参照して、Ｓ１６０３で特定したティアのＩＤ０９５に対する容量０９３を特定し、特定した使用割合と容量とから空き容量を算出する。
【０１０３】
Ｓ１６０７で、プログラムは、適切なティアの空き容量（例えば、Ｓ１６０６で算出された空き容量）が、選択した仮想ページの容量以上か否かを判定する。判定の結果、適切なティアの空き容量が選択した仮想ページの容量以上であった場合は（Ｓ１６０７：Ｙｅｓ）、Ｓ１６０８に進む。一方、適切なティアの空き容量が選択した仮想ページの容量未満であった場合は（Ｓ１６０７：Ｎｏ）、Ｓ１６１０に進む。
【０１０４】
Ｓ１６０８で、プログラムは、選択した仮想ページに割り当てられている実ページ内のデータを、適切なティアに属するプール０３４内の空きの実ページ０３４ａに移行する。
【０１０５】
Ｓ１６０９で、プログラムは、プール管理テーブル０４２及びＶＶＯＬ管理テーブル０４３を更新する。つまり、プログラムは、仮想ページへ、移行元実ページに代えて、移行先実ページを割り当てる。具体的には、例えば、プログラムは、プール管理テーブル０４２の、使用容量０５４及び使用割合０５７を更新し、ＶＶＯＬ管理テーブル０４３のＶＶＯＬ  ＩＤ０６３、Ｐｏｏｌ
ＩＤ０６４、ティア ＩＤ０６５を更新する
【０１０６】
Ｓ１６１０で、プログラムは、Ｓ１６０１で選択したＶＶＯＬの中から、次にＩＤ０６２が小さい仮想ページ０３３ａを特定する。
【０１０７】
Ｓ１６１１で、プログラムは、例えば、ＶＶＯＬ管理テーブル０４３を参照し、Ｓ１６１０で特定した仮想ページ０３３ａのＩＤ０６２が存在するか否かを判定する。判定の結果、ＩＤ０６２が存在する場合は（Ｓ１６１１：Ｙｅｓ）、Ｓ１６１２へ進む。一方、ＩＤ０６２が存在しない場合は（Ｓ１６１１：Ｎｏ）、Ｓ１６１３へ進む。
【０１０８】
Ｓ１６１３で、プログラムは、Ｓ１６１０で特定した仮想ページ０３３ａの平均Ｉ/Ｏを取得する。具体的には、プログラムは、ＶＶＯＬ管理テーブル０４３を参照し、Ｓ１６１０で特定した仮想ページのＩＤ０６２の平均Ｉ/Ｏ０６６を特定する。
【０１０９】
Ｓ１６１２で、プログラムは、平均Ｉ/Ｏ及び最大Ｉ/Ｏを初期化する。具体的には、プログラムは、例えば、ＶＶＯＬ管理テーブル０４３について、Ｓ１６０１で選択したＩＤ０６１のＶＶＯＬ０３２のすべての仮想ページの平均Ｉ/Ｏ０６６と最大Ｉ/Ｏ０６７の値を初期化し、処理を終了する。
【０１１０】
なお、本実施例では平均Ｉ／Ｏを用いて適切なＴｉｅｒを判別したが、最大Ｉ／Ｏを用いて適切なＴｉｅｒを判別してもよい。
【０１１１】
図１７は、プール容量拡張処理のフローチャートである。プール容量拡張処理は、ストレージシステム１３０のコントローラで行われるが、他のいずれかの装置（例えばホスト１１０或いは管理装置１２０）で行なわれても良い。例えば、管理装置１１０又はホスト１２０が、ストレージシステム１３０及び外部ストレージ１４０が有するテーブルが有する情報を取得し、取得した情報を基に、プール容量拡張処理を行っても良い。
【０１１２】
Ｓ１７０１で、プログラムは、プール０３４を１つ選択する。具体的には、例えば、プログラムは、プール管理テーブル０４２を参照し、最もＩＤ０５１の小さなプールを特定する。
【０１１３】
Ｓ１７０２で、プログラムは、選択したプールに含まれるティアを１つ選択する。具体的には、例えば、プログラムは、プール管理テーブル０４２を参照し、Ｓ１７０１で特定したプール０３４のうち、最もＩＤ０５２の小さなティアを特定する。
【０１１４】
Ｓ１７０３で、プログラムは、選択されたティアの現在の使用割合が、最大閾値を上回っているか否かを判定する。具体的には、プログラムは、例えば、Ｓ１７０２で特定したティアの使用割合０５９がティア最大閾値０５７より大きいか否かを判定する。判定の結果、使用割合０５９がティア最大閾値より大きい場合は（Ｓ１７０３：Ｙｅｓ）、Ｓ１７０４に進む。一方、使用割合０５９がティア最大閾値以下の場合は（Ｓ１７０３：Ｎｏ）、Ｓ１７０７に進む。
【０１１５】
Ｓ１７０４で、プログラムは、選択されたティアと同一のティア属するべき未使用のＩＶＯＬ０３６が存在するか否かを判定する。ここで、追加されるＶＯＬは、ＥＶＯＬよりもＩＶＯＬを優先してプールに追加する。具体的には、例えば、プログラムは、ＶＯＬ管理テーブル（２）０４６を参照し、Ｓ１７０２で特定したティアと同じID０９５のティアに対応する外部ＶＯＬがない（図示例では、外部ＶＯＬの有無０９２に「−」が記載されている）ＶＯＬ（つまり、ＩＶＯＬ）であって、かつ、プールに登録されていないＶＯＬ（図示例ではＩＤ０９４に「ＮＡ」であるもの）があるか否かを判定する。判定の結果が肯定的であった場合は（Ｓ１７０４：Ｙｅｓ）、Ｓ１７０５に進む。一方、判定の結果が否定的であった場合は（Ｓ１７０４：Ｎｏ）、Ｓ１７０９に進む。
【０１１６】
Ｓ１７０５で、プログラムは、ストレージシステム１３０の選択した未使用のＩＶＯＬ０３６をプール０３４に追加する。具体的には、プログラムは、例えば、Ｓ１７０４で存在が確認されたＩＶＯＬ０３６をプールに追加する。
【０１１７】
Ｓ１７０６で、プログラムは、プール管理テーブル０４２とＶＯＬ管理テーブル（２）０４６を更新する。具体的には、例えば、プログラムは、プール管理テーブル０４２に追加されたＶＯＬのＩＤ０５３、ＰＤＥＶ  Ｔｙｐｅ０５４及び使用容量０５４を追加する。また、プログラムは、ＶＯＬ追加後の使用割合を再度算出する。また、プログラムは、ＶＯＬ管理テーブル（２）０４６のプールのＩＤ０９４を更新する。さらに、外部ＶＯＬ０３６が追加された場合には、プログラムは、ＶＯＬ管理テーブル（２）０４６の外部ＶＯＬの有無０９２を更新する。
【０１１８】
Ｓ１７０７で、プログラムは、次のティアがあるか否かを判定する。具体的には、例えば、プログラムは、プール管理テーブル０４２を参照し、Ｓ１７０２（またはＳ１７１３）で特定されたティアの次にＩＤ０５２が小さいティアがあるか否かを判定する。判定の結果、次のティアがある場合は（Ｓ１７０７：Ｙｅｓ）、Ｓ１７１３においてそのティアを特定し、Ｓ１７０３に進む。一方、判定の結果、次のティアがない場合は（Ｓ１７０７：Ｎｏ）、Ｓ１７０８に進む。
【０１１９】
Ｓ１７０８で、プログラムは、次のプールがあるか否かを判定する。具体的には、例えば、プログラムは、プール管理テーブル０４２を参照し、Ｓ１７０１（またはＳ１７１４）で特定されているプールの次にＩＤ０５１が小さいプールがあるか否かを判定する。判定の結果、次のプールがある場合は（Ｓ１７０８：Ｙｅｓ）、Ｓ１７１４においてそのプールを特定し、Ｓ１７０２に進む。一方、判定の結果、次のプールがない場合は（Ｓ１７０８：Ｎｏ）、処理を終了する。
【０１２０】
Ｓ１７０９で、プログラムは、外部ストレージ１４０の使用が可能か否かを判定する。具体的には、例えば、プログラムは、外部使用可否テーブル０４５を参照し、Ｓ１７０１（またはＳ１７１４）で選択されたプールに対する外部の使用可否０８２が「ＯＮ」であるか否かを判定する。判定の結果、外部の使用可否０８２が「ＯＮ」である場合には（Ｓ１７０９：Ｙｅｓ）、Ｓ１７１０に進む。一方、外部の使用可否０８２が「ＯＦＦ」である場合には（Ｓ１７１０：Ｎｏ）、Ｓ１７１２に進む。
【０１２１】
Ｓ１７１０で、プログラムは、選択されたティアと同一のティアに属するべき未使用のＥＶＯＬ０３６が存在するか否かを判定する。具体的には、例えば、プログラムは、ＶＯＬ管理テーブル（２）０４６を参照し、Ｓ１７０２（またはＳ１７１２）で特定したティアと同じＩＤ０９５のティアに対応する外部ＶＯＬがマッピングされている（図示例では、外部ＶＯＬの有無０９２に番号が記載されている）ＶＯＬ（EＶＯＬ）であって、そのＶＯＬがプールに登録されていないもの（図示例ではＩＤ０９４に「ＮＡ」であるもの）か否かを判定する。判定の結果が肯定的であった場合は（Ｓ１７１０：Ｙｅｓ）、Ｓ１７１１に進む。一方、判定の結果が否定的であった場合は（Ｓ１７１０：Ｎｏ）、Ｓ１７１２に進む。
【０１２２】
Ｓ１７１１で、プログラムは、未使用のＥＶＯＬ０３６をプール０３４に追加する。具体的には、プログラムは、例えば、Ｓ１７１０で存在が確認されたＥＶＯＬ０３６をプールに０３４追加する。そして、前述のＳ１７０６に進み、プログラムは、プール管理テーブル０４２とＶＯＬ管理テーブル（２）０４６を更新する。
【０１２３】
Ｓ１７１２で、プログラムは、エラーメッセージを管理装置１２０（またはホスト１１０）に送信する。具体的には、例えば、プログラムは、エラーメッセージの送信は、メールによって行われてもよいし、その他の方法でもよい。Ｓ１７１２の後、前述のＳ１７０７に進む。
【０１２４】
なお、プール拡張処理を実行した後に、管理装置が、プールへ割り当てられたVOLの情報や、プール拡張処理後のプールに関する情報を出力装置を介して提示してもよい。また、クラウド業者の外部ストレージからEVOLの記憶領域を借りていた場合には、プール拡張処理によってどれだけのコストがかかるかを示してもよい。
【０１２５】
以上の図１７で説明したプール容量拡張処理では、以下の特徴がある。つまり、１つ目の特徴は、ＥＶＯＬに対してＩＶＯＬを優先的にプールに追加する点である。ストレージシステム内部の記憶容量を効率的に使用することができるという効果を有する。また、２つ目の特徴は、プールごとに外部ストレージ内の記憶領域の使用可否を設定することができ、外部ストレージ内の記憶領域の使用が可能と設定されている場合にのみ、ＥＶＯＬをプールに追加する点である。格納されるデータの重要度等に応じて、使用する記憶領域を使い分けることができるという効果を有する。
【０１２６】
図１８は、実施例１のプール縮小処理の概要を説明する図である。
【０１２７】
シンプロビジョニングでは、図１４に示すように書き込み処理に応じて実ページを仮想ページに割り当てるが、逆に、データの削除などに応じて実ページの仮想ページへの割り当てを解除するリクラメーション処理を実行することができる。従って、一時的にプール内の記憶領域の使用容量が増えてたとしても、運用を継続するに従って、使用容量が減少する場合がある。この場合には、該プールに割り当てられているプールＶＯＬの割り当てを解除（減設ともいう）し、プールを縮小する必要がある。
【０１２８】
本実施例におけるプール縮小処理は、プールの容量を縮小する時に、そのプールから削除される対象となるプールＶＯＬをＩＶＯＬよりもＥＶＯＬを優先して選択し、選択されたプールＶＯＬに格納されたデータを、そのプールＶＯＬと同一プール及び同一ティアに属する他のプールＶＯＬに移行する処理である。
【０１２９】
図示例では、プール＃０１のティア＃０２が縮小される。プール＃０１は、矢印０４８で示す分の容量が縮小される。すなわち、プール＃０１は、破線で示す容量から実線で示す容量に縮小される。
【０１３０】
プールの縮小はティア毎に行われる。すなわち、プールの縮小は、ティアに属するプールＶＯＬ内のデータを他のＶＯＬに移行し、移行元のプールＶＯＬを削除することで実現される。このとき、移行元のプールＶＯＬは、ＩＶＯＬに優先してＥＶＯＬを選択する。さらに、移行元のプールＶＯＬは、移行元のプールＶＯＬが属するティア内のプールＶＯＬのうち最も使用容量が少ないＶＯＬが望ましい。一方、移行先のプールＶＯＬとして、同一ティア内のプールＶＯＬであって、空容量が移行元のプールＶＯＬの使用容量よりも大きいプールＶＯＬが選択される（最も空容量が大きいプールＶＯＬが望ましい）。
【０１３１】
図示例では、ティア＃２が対象となっている。ティア＃２には、外部ストレージ＃１が有するＲＡＩＤグループ＃５に基づく外部ＶＯＬ（０３：Ｆ１）がマッピングされたＥＶＯＬ（０３：Ｆ１）と、ストレージシステム内部のＲＡＩＤグループ＃３に基づくＩＶＯＬ（００：Ｃ１）とが属する。ＥＶＯＬ（０３：Ｆ１）は、ティア＃２内で最も使用容量の少ない（使用量５１２ＭＢ）ＶＯＬである。また、ＩＶＯＬ（００：Ｃ１）は、ＥＶＯＬ（０３：Ｆ１）の使用容量よりも空容量の大きな（空容量８１５ＭＢ）ＶＯＬである。ＥＶＯＬ（０３：Ｆ１）からＩＶＯＬ（００：Ｃ１）に対して、矢印０４７で示すように、５１２ＭＢのデータが移行される。これにより、ティア＃２からＥＶＯＬ（０３：Ｆ１）を削除することができる。
【０１３２】
本実施例にあっては、減設するプールＶＯＬをＩＶＯＬよりもＥＶＯＬを優先して選択する。ストレージステム内の記憶領域を効率的に使用することができるという効果を有する。また、ストレージシステム内部のＶＯＬにデータを集めることで、計算機システムの処理を向上させることができる。
【０１３３】
また、本実施例では、削除されるプールＶＯＬと同一のプール且つ同一ティアに属するプールＶＯＬに削除されるプールＶＯＬからデータが移行される。このため、重要なデータ（例えば、平均Ｉ/Ｏの高いデータ）を低いティアに属するプールＶＯＬに移行してしまったり、重要でないデータ（例えば、平均Ｉ／Ｏの低いデータ）を高いティアに属するプールＶＯＬに移行してしまったりすることを防ぐことができる。
【０１３４】
また、本実施例では、移行先のプールＶＯＬが単一であり（つまり、移行先が複数のＶＯＬではなく）、移行元プールＶＯＬとして、なるべく使用量の少ないＶＯＬが選択される。このため、データ移行にかかる時間や負荷を軽減することができる。
【０１３５】
図１９は、実施例１のプール容量縮小処理のフローチャートの一例である。この処理は、ストレージシステム１３０のコントローラで行われるが、他のいずれかの装置（例えばホスト１１０或いは管理装置１２０）で行なわれても良い。例えば、管理装置１２０又はホスト１１０が、ストレージシステム１３０及び外部ストレージ１４０が有するテーブルが有する情報を取得し、取得した情報を基に処理を行っても良い。
【０１３６】
Ｓ１９０１で、プログラムは、プールを１つ選択する。具体的には、例えば、プログラムは、プール管理テーブル０４２を参照し、最もＩＤ０５１の小さなプール０３４を１つ特定する。
【０１３７】
Ｓ１９０２で、プログラムは、選択したプール内のティアを１つ選択する。具体的には、例えば、プログラムは、プール管理テーブル０４２を参照し、Ｓ１９０１で特定したプールのうち、最もＩＤ０５２の小さなティアを特定する。
【０１３８】
Ｓ１９０３で、プログラムは、選択されたティアの現在の使用割合が、ティア最小閾値を下回っているか否かを判定する。具体的には、プログラムは、例えば、Ｓ１９０２で特定したティアの使用割合０５９がティア最小閾値０５７未満か否かを判定する。判定の結果、使用割合０５９がティア最小閾値未満の場合は（Ｓ１９０３：Ｙｅｓ）、Ｓ１９０４に進む。一方、使用割合０５９がティア最小閾値以上の場合は（Ｓ１９０３：Ｎｏ）、Ｓ１９１６に進む。
【０１３９】
Ｓ１９１６で、プログラムは、次のティアがあるか否かを判定する。具体的には、例えば、プログラムは、プール管理テーブル０４２を参照し、Ｓ１９０２（またはＳ１９１５）で特定されたティアの次にＩＤ０５２が小さいティアがあるか否かを判定する。判定の結果、次のティアがある場合は（Ｓ１９１６：Ｙｅｓ）、Ｓ１９１５でそのティアを特定し、Ｓ１９０３に進む。一方、判定の結果、次のティアがない場合は（Ｓ１９１６：Ｙｅｓ）、Ｓ１９１７に進む。
【０１４０】
Ｓ１９１６で、プログラムは、次のプールがあるか否かを判定する。具体的には、例えば、プログラムは、プール管理テーブル０４２を参照し、Ｓ１９０１（またはＳ１９１８）で特定されているプールの次にＩＤ０５１が小さいプールがあるか否かを判定する。判定の結果、次のプールがある場合は、Ｓ１９１８においてそのプールを特定し、Ｓ１９０２に進む。一方、判定の結果、次のプールがない場合は、処理を終了する。
【０１４１】
Ｓ１９０４で、プログラムは、外部ストレージ１４０の使用が可能か否かを判定する。具体的には、例えば、プログラムは、外部使用可否テーブル０４５を参照し、Ｓ１９０１（またはＳ１９１８）で選択されたプールに対する外部の使用可否０８２が「ＯＮ」であるか否かを判定する。判定の結果、外部の使用可否０８２が「ＯＮ」である場合は（Ｓ１９０４：Ｙｅｓ）、Ｓ１９０５に進む。一方、外部の使用可否０８２が「ＯＦＦ」である場合には（Ｓ１９０４：Ｎｏ）、Ｓ１９１０に進む。
【０１４２】
Ｓ１９０５で、プログラムは、選択されたティアにＥＶＯＬが存在するか否かを判定する。具体的には、例えば、プログラムは、プール管理テーブル０４２を参照し、Ｓ１９０２（またはＳ１９１４）で特定されたティアに、ＰＤＥＶ  Ｔｙｐｅ０５４が「Ｅｘｔｅｒｎａｌ」のＶＯＬが存在するか否かを判定する。判定の結果が肯定的であった場合は（Ｓ１９０５：Ｙｅｓ）、Ｓ１９０６に進む。一方、判定の結果が否定的であった場合は（Ｓ１９０５：Ｎｏ）、Ｓ１９１０に進む。
【０１４３】
Ｓ１９０６で、プログラムは、ＥＶＯＬを移行元のＶＯＬ（以下、移行元ＶＯＬ）として選択する。ここで選択するＶＯＬは、ＩＶＯＬに対してＥＶＯＬを優先的に選択する。具体的には、プログラムは、Ｓ１９０５で存在が確認された、ＰＤＥＶｔｙｐｅ０５９が「Ｅｘｔｅｒｎａｌ」であるＶＯＬであって、かつ、その中で最も使用容量の少ないＶＯＬ（プール管理テーブル０４２における使用容量０５４の最も少ないＶＯＬ）を特定し、移行元ＶＯＬとする。移行元ＶＯＬは削除対象（プールへの割り当てを解除するプールＶＯＬ）となる。ここで、対象のEVOLのプールへの割り当てを解除しても、その他のVOLによって現在のデータを格納できるか（使用量がTier最大閾値を超えないか）を判断してもよい。
【０１４４】
Ｓ１９０７で、プログラムは、移行先候補となるＶＯＬ（以下、移行先候補ＶＯＬ）を選択し、移行先候補ＶＯＬがストレージ内部１３０に存在するか否か（ＩＶＯＬか否か）を判定する。ここで、移行先候補ＶＯＬは、移行元プールＶＯＬと同じティアに属するＶＯＬのうち、移行元プールＶＯＬの現在の使用容量を上回る空き容量のＶＯＬとする。ここで選択するＶＯＬは、ＥＶＯＬに対してＩＶＯＬを優先的に選択する。具体的には、プログラムは、例えば、以下の処理、
（＊）ＶＯＬ管理テーブル（２）０４６を参照し、移行元プールＶＯＬと同じティア（ＩＤ０９５とＩＤ０９４が移行元ＶＯＬと同じもの）の１又は複数のＶＯＬを特定する（以下、特定ＶＯＬという）、
（＊）ＶＯＬ管理テーブル（２）０４６を参照し、特定ＶＯＬの容量０９３を各々特定する、
（＊）プール管理テーブル０４２を参照し、特定ＶＯＬの使用容量０５５を各々特定する、
（＊）特定ＶＯＬの容量及び使用容量から、特定ＶＯＬの空き容量各々を算出する、
（＊）プール管理テーブル０４２を参照し、移行元プールＶＯＬの使用容量０５５を特定する、
（＊）移行元プールＶＯＬの使用容量よりも空き容量の大きい特定ＶＯＬを移行先候補ＶＯＬとして特定する、
（＊）ＶＯＬ管理テーブル（２）０４６を参照し、移行先候補ＶＯＬに外部ＶＯＬの有無０９２が「−」であるプールＶＯＬが存在するか否かを判定する。判定の結果が肯定的だった場合（Ｓ１９０７：Ｙｅｓ）、Ｓ１９０８に進む。一方、判定の結果が否定的だった場合（Ｓ１９１０：Ｎｏ）、Ｓ１９０９に進む。
【０１４５】
Ｓ１９０８で、プログラムは、移動先候補ＶＯＬのうち、ＩＶＯＬを特定する。このとき、例えば、複数の移行先候補ＶＯＬが特定された場合には、そのうちの１つを移行先ＶＯＬとして特定する。移行先ＶＯＬの特定処理は、空き容量の最大のＶＯＬを特定する等の処理である。そして、Ｓ１９１２に進む。
【０１４６】
Ｓ１９０９で、プログラムは、移動先候補ＶＯＬのうち、ＥＶＯＬを特定する。このとき、例えば、複数の移行先候補ＶＯＬが特定された場合には、そのうちの１つを移行先ＶＯＬとして特定する。移行先ＶＯＬの特定処理は、空き容量の最大のＶＯＬを特定する等の処理である。そして、Ｓ１９１２に進む。
【０１４７】
Ｓ１９１０で、プログラムは、ＩＶＯＬでかつ最も使用容量の少ないＶＯＬを移行元ＶＯＬとして選択する。具体的には、例えば、プログラムは、Ｓ１９０５において、ＰＤＥＶｔｙｐｅ０５９が「Ｅｘｔｅｒｎａｌ」以外のＶＯＬ（つまり、ＩＶＯＬ）であって、かつ、その中で最も使用容量の少ないＶＯＬ（プール管理テーブル０４２における使用容量０５４の最も少ないＶＯＬ）を特定し、移行元ＶＯＬとする。
【０１４８】
Ｓ１９１１で、プログラムは、複数のＩＶＯＬから、移行先候補となるＶＯＬ（以下、移行先候補ＶＯＬ）を選択する。ここで、移行先候補ＶＯＬは、移行元ＶＯＬと同じティアに属するＶＯＬのうち、移行元ＶＯＬの現在の使用容量を上回る空き容量のＶＯＬとする。具体的には、プログラムは、例えば、以下の処理、
（＊）ＶＯＬ管理テーブル（２）０４６を参照し、移行元ＶＯＬと同じティア（ＩＤ０９５とＩＤ０９４が移行元ＶＯＬと同じもの）の１又は複数のＶＯＬを特定する（以下、特定ＶＯＬという）、
（＊）ＶＯＬ管理テーブル（２）０４６を参照し、特定ＶＯＬの容量０９３を各々特定する、
（＊）プール管理テーブル０４２を参照し、特定ＶＯＬの使用容量０５５を各々特定する、
（＊）特定ＶＯＬの容量及び使用容量から、特定ＶＯＬの空き容量各々を算出する、
（＊）プール管理テーブル０４２を参照し、移行元ＶＯＬの使用容量０５５を特定する、
（＊）移行元ＶＯＬの使用容量よりも空き容量よりも大きい特定ＶＯＬを移行先候補ＶＯＬとして特定する、
を行う。なお、移動先候補ＶＯＬが複数あった場合は、そのうちの１つを移行先ＶＯＬとして特定する。移行先ＶＯＬの特定は、空き容量の最大のＶＯＬを特定する等、どのように選択してもよい。
【０１４９】
Ｓ１９１２で、プログラムは、移行先ＶＯＬのデータを、Ｓ１９０８（またはＳ１９０９、Ｓ１９１１）で特定された移行先のＶＯＬに移行する。このとき、プール管理テーブル０４２の移行元ＶＯＬの使用容量０５５を移行先ＶＯＬの使用容量０５５に追加してもよい。
【０１５０】
Ｓ１９１３で、プログラムは、移行元ＶＯＬ内のデータを削除する。このとき、プール管理テーブル０４２の移行元ＶＯＬの使用容量０５５をゼロにしてもよい。
【０１５１】
Ｓ１９１４で、プログラムは、プール管理テーブル０４２及びＶＶＯＬ管理テーブル０４３、ＶＯＬ管理テーブル（２）０４６を更新する。
【０１５２】
プログラムは、プール管理テーブル０４２内の移行元ＶＯＬの行をテーブルから削除する。また、対象のティアの使用割合を変更する。
【０１５３】
プログラムは、Ｓ１９１２のデータ移行により、仮想ページに対応づけられる実ページが変更されるため、ＶＶＯＬ管理テーブル０４３内の実ページＩＤ０６４を更新する。
【０１５４】
プログラムは、ＶＯＬ管理テーブル（２）０４６内の移行元ＶＯＬのＰｏｏｌＩＤをＮＡに変更する。
【０１５５】
そして、移行元のプールＶＯＬはどのプールにも割り当てられていないＶＯＬとなり、その後プール拡張処理に使用することができる。
【０１５６】
なお、Ｓ１９１４で説明したのデータ削除処理以降の処理は、プール容量縮小処理が終了した後に行われてもよい。
【０１５７】
なお、プール縮小処理を実行した後に、管理装置が、プールへの割り当てが解除されたVOLの情報や、プール縮小処理後のプールに関する情報を出力装置を介して提示してもよい。また、クラウド業者の外部ストレージからEVOLの記憶領域を借りていた場合には、プール縮小処理によってどれだけの費用削減効果があったかのコストを示してもよい。
【０１５８】
以上の図１８で説明したプール容量縮小処理では、以下の特徴がある。１つ目の特徴は、ＩＶＯＬに対してＥＶＯＬを優先的にプールへの割り当てから解除する点である。また、２つ目の特徴は、プールから削除されるＶＯＬ内のデータの移行先として、ＥＶＯＬに対してＩＶＯＬを優先的に選択する点である。ストレージシステム内部の記憶容量を効率的に使用することができるという効果を有する。また、ストレージシステム内部のＶＯＬにデータを集めることで、計算機システムの処理を向上させることができる。その他、データ移行の効率を考慮して、選択するＶＯＬは使用容量の最も少ないＶＯＬを選択するなどの特徴もある。
【実施例２】
【０１５９】
以下、実施例２を説明する。その際、実施例１との相違点について主に説明し、実施例１との共通点については説明を省略又は簡略する。また、実施例１との共通の構成要素については、同一の符号で示す。
【０１６０】
図２０は、実施例２のプール容量縮小処理の概要を説明する図である。
【０１６１】
本実施例におけるプール縮小処理は、プールの容量を縮小するときに、プールから削除される対象となるＶＯＬに格納されたデータを、複数のＶＯＬに移行する処理である。
【０１６２】
すなわち、本実施例では、移行先のＶＯＬは、複数選択される。この際、合計の空容量が、移行元のＶＯＬの使用容量以上となるような、複数のＶＯＬが選択される。
【０１６３】
図示例では、ティア＃２が対象となっている。ティア＃２には、外部ストレージ＃１が有するＲＡＩＤグループ＃５に基づく外部ＶＯＬ（０３：Ｆ１）にマッピングされたＥＶＯＬ（０３：Ｆ１）と、ストレージシステム内部のＲＡＩＤグループ＃３に基づくＩＶＯＬ（００：Ｃ１）及びＲＡＩＤグループ＃４に基づくＩＶＯＬ（０２：１Ａ）が属する。ＥＶＯＬ（０３：Ｆ１）は、ティア＃２内のＥＶＯＬの中で最も使用容量の少ない（合計の使用量５１２ＭＢ）ＶＯＬである。また、ＩＶＯＬ（００：Ｃ１）とＩＶＯＬ（０２：１Ａ）の合計の空き容量は、ＥＶＯＬ（０３：Ｆ１）の使用容量よりも大きい（空容量５０ＧＢ）。ＥＶＯＬ（０３：Ｆ１）からＩＶＯＬ（００：Ｃ１）及びＩＶＯＬ（０２：１Ａ）に対して、矢印０４９で示すように、５０ＧＢのデータが移行される。これにより、ティア＃２からＥＶＯＬ（０３：Ｆ１）を削除することができる。
【０１６４】
本実施例にあっては、複数のＶＯＬがデータの移行先である。このため、例えば、１つのストレージシステム内のＶＯＬに加えて、他のストレージシステム内のＶＯＬにデータを移行することができ、計算機システム全体の負荷分散を行うことが期待できる。
【０１６５】
図２１は、実施例２のプール容量縮小処理のフローチャートの一例の第１の部分である。図２２は、そのフローチャートの第２の部分である。この処理は、ストレージシステムのコントローラで行われるが、他のいずれかの装置（例えばホスト或いは管理装置）で行なわれても良い。例えば、管理装置又はホストが、ストレージシステム及び外部ストレージが有するテーブルが有する情報を取得し、取得した情報を基に処理を行っても良い。
【０１６６】
以下の説明では、実施例１のプール容量縮小処理のフローチャートと同様の処理については、同一の符号で示している。
【０１６７】
Ｓ２１０１、Ｓ２１０２で、移行先ＶＯＬの候を選択した後、図２２の処理が行われる（図中Ａ）。図２２の処理の結果がＡ’の場合は、Ｓ１９１２に進む。図２２の処理の結果がＡ”の場合は、Ｓ１９１５に進む。。
【０１６８】
Ｓ２１０１では、移行元ＶＯＬとして選択されたＶＯＬと同一のプール内の同一のティアのうち、空き容量を考慮してＥＶＯＬ又はＩＶＯＬを移行先プールＶＯＬ候補として選択する。
【０１６９】
Ｓ２１０２では、移行元ＶＯＬとして選択されたＶＯＬと同一のプール内の同一のティアのうち、空き容量を考慮してＩＶＯＬを移行先プールＶＯＬ候補として選択する。
【０１７０】
Ｓ２２０１で、プログラムは、移行先のＶＯＬにデータ移行した場合、ホストからのＩ／Ｏ（Ｉｎｐｕｒ／Ｏｕｔｐｕｔ）に対するストレージシステムの性能が劣化しないか否かを判定する。具体的には、プログラムは、例えば、判定は、移行先候補ＶＯＬそれぞれについて行われる。そして、プログラムは、移行先候補ＶＯＬのうち少なくとも１つを移行先にした後に、ストレージシステムの性能が所定以上となる場合は、その１つの移行先候補ＶＯＬを移行先ＶＯＬとして選択する。なお、移行先候補ＶＯＬの中にＥＶＯＬが含まれる場合にはＩＶＯＬに対して優先的に選択される。判定の結果、移行先ＶＯＬが選択された場合は（Ｓ２２０２：Ｙｅｓ）、Ｓ２２０３に進む。一方、移行先候補ＶＯＬが選択されなかった場合は（Ｓ２２０２：Ｎｏ）、Ｓ２２０４に進む。
【０１７１】
Ｓ２２０２で、プログラムは、移行元ＶＯＬのデータを、Ｓ２２０２で選択された移行先ＶＯＬに移行する。
【０１７２】
Ｓ２２０３で、プログラムは、複数の移行先候補ＶＯＬから複数の移行先ＶＯＬを選択する。具体的には、プログラムは、例えば、Ｓ２２０１で特定された移行先候補ＶＯＬから複数（例えば所定個数）の移行先ＶＯＬを選択する。移行先ＶＯＬの選択は、例えば、移行先候補ＶＯＬのうち、空容量の多いＶＯＬから優先的に行ってもよいし、他のルールに基づき選択してもよい。また、ＩＶＯＬのみを複数個選択してもよいし、ＥＶＯＬのみを複数個選択してもよい。
【０１７３】
Ｓ２２０４で、プログラムは、Ｓ２２０３で特定した複数の移行先候補ＶＯＬにデータ移行した後に、ストレージシステムの性能が所定以上となるか否かを判定する。そして、プログラムは、複数の移行先候補群のうち少なくとも１つを移行先にしたときに、ストレージシステムの性能が所定以上となる場合は、その移行先候補群を移行先として選択する。判定の結果、移行先候補群が移行先として選択された場合は（Ｓ２２０４：Ｙｅｓ）、Ｓ２２０５に進む。一方、移行先候補群が移行先として選択されなかった場合は（Ｓ２２０４：Ｎｏ）移行先候補が見つからないためＣに進む。
【０１７４】
Ｓ２２０５で、プログラムは、移行元ＶＯＬのデータを、Ｓ２２０４で選択された移行先候補群を構成する各移行先ＶＯＬに移行する。
【０１７５】
該移行処理により、データ移行後のＩ／Ｏ等の性能を考慮して、減設するプールＶＯＬ内のデータを複数の移行先ＶＯＬに移行することができ、プール縮小後のＩ／Ｏ等の性能を保証することができるという効果を有する。
【実施例３】
【０１７６】
以下、実施例３を説明する。その際、実施例１との相違点について主に説明し、実施例１との共通点については説明を省略又は簡略する。また、実施例１との共通の構成要素については、同一の符号で示す。また、以下の説明では、意味のあるデータが格納されており仮想ページに割り当てられている実ページを「有効ページ」といい、意味のないデータ（特定のデータパターン（例えば、０データ））が格納されており仮想ページに割り当てられている実ページを「無効ページ」ということがある。無効ページは、仮想ページに割り当てられている点で、仮想ページに割り当てられていない空きページ（未割当てページ）と異なる。
【０１７７】
図２３は、実施例３のプール容量縮小処理の概要を説明する図である。
【０１７８】
本実施例におけるプール縮小処理にあっては、移行元及び移行先として、ＶＯＬだけでなくページも決定される。具体的には、例えば、移行元としては、移行元ＶＯＬからいずれかの実ページが選択される。また、移行先としては、移行先ＶＯＬのうちの、意味のないデータ（例えばビット値０だけで構成されたデータ）が格納されている実ページであってＶＶＯＬに割り当てられている実ページ（無効ページ）が選択される。無効ページは、矢印０５３で示すように、仮想ページに割り当てられている。図示例では、ティア＃２において、ＲＡＩＤグループ＃３に基づくＶＯＬ（００：Ｃ１）が移行先ＶＯＬ、ＲＡＩＤグループ＃５に基づくＶＯＬ（０３：Ｆ１）が移行元ＶＯＬとなっている。ＶＯＬ（０３：Ｆ１）内の複数の有効ページ０５０から、ＶＯＬ（００：Ｃ１）内の複数の無効ページ０５１に、矢印０５２で示すように、データが移行される。
【０１７９】
本実施例にあっては、移行先ＶＯＬの無効ページがデータの移行先とされる。無駄を低減して、リソースを有効に活用することができる。
【０１８０】
図２５は、実施例３のプール容量縮小処理のフローチャートの一例の一部分であり、図２６は、そのフローチャートの残りである。この処理は、ストレージシステムのコントローラで行われるが、他のいずれかの装置（例えばホスト或いは管理装置）で行なわれても良い。例えば、管理装置又はホストが、ストレージシステム及び外部ストレージが有するテーブルが有する情報を取得し、取得した情報を基に処理を行っても良い。
【０１８１】
以下の説明では、実施例１のプール容量縮小処理のフローチャートと同様の処理については、同一の符号で示している。
【０１８２】
Ｓ１９１１（または、Ｓ１９０８、Ｓ１９０９）で移行元ＶＯＬと同じティアに属するＶＯＬのうち、移行元ＶＯＬの現在の使用容量を上回る空き容量のＶＯＬが、ストレージシステム１３０内部又は外部ストレージ１４０から特定された後、図２６の処理が行われる（図中Ｄ）。また、図２６の処理の後、Ｓ１９１２へ進む。
【０１８３】
Ｓ２６０１で、プログラムは、移行元ＶＯＬから実ページを選択する。具体的には、プログラムは、例えば、Ｓ１９１０で特定されたＶＯＬを移行元のＶＯＬとし、移行元ＶＯＬからＩＤの一番小さな実ページを選択する（以下、この実ページを移行元実ページという）。なお、移行元実ページは、有効ページであることが好ましい。つまり、無効ページに格納されているデータについてはデータを移行しない。
【０１８４】
Ｓ２６０２で、プログラムは、移行先ＶＯＬ内に無効ページがあるかを判定する。判定の結果、移行先ＶＯＬ内に無効ページがある場合は（Ｓ２６０２：Ｙｅｓ）、Ｓ２６０３に進む。一方、移行先ＶＯＬ内に無効ページがない場合は（Ｓ２６０２：Ｎｏ）、Ｓ２６０６に進む。
【０１８５】
Ｓ２６０３で、プログラムは、移行元の実ページから無効ページへデータを移行する。。Ｓ２６０６で、プログラムは、移行元の実ページから移行先ＶＯＬ内の未割り当て実ページのにデータ移行を行う。
【０１８６】
Ｓ２６０４で、プログラムは、すべてのページのデータの移行が完了したか否かを判定する。判定の結果、データ移行が完了している場合は（Ｓ２６０４：Ｙｅｓ）、Ｓ１９１２に進む。一方、データ移行が完了していない場合は（Ｓ２６０４：Ｎｏ）、Ｓ２６０５に進む。
【０１８７】
Ｓ２６０５で、プログラムは、移行元ＶＯＬから次にＩＤの小さな実ページを、移行元実ページとして選択する。
【０１８８】
上記各実施例では、各処理において対象物を選択する際に、まず、ＩＤの最も小さなものから順番に選択することがあったが、選択の順序はこれに限られない。例えば、対象物の選択は、ＩＤの最も大きなものから順番に選択してもよいし、ランダムに選択してもよいし、他のルールに従って選択してもよい。なお、ここでいう対象物は、プール、Ｔｉｅｒ、ＶＯＬ、実ページ等である。
【０１８９】
上記各実施例では、１つのＲＡＩＤグループに対して、これに基づく１つのＶＯＬが形成されていたが、これに限られない。１つのＲＡＩＤグループに対して、複数のＶＯＬが形成されていてもよい。
【０１９０】
なお、プール管理テーブルの使用容量や使用割合を更新する際には、無効ページにデータを移行したことを考慮して更新する。つまり、通常の移行処理に比べてプール管理テーブルの使用容量や使用割合は小さくなる。よって、該処理を実行することにより、さらにストレージシステムにおける記憶領域の利用効率を向上させることができる。
【符号の説明】
【０１９１】
１００…計算機システム、１３０…ストレージシステム、１４０…外部ストレージシステム
【図１】
2013114624.tif 000003
【図２】
2013114624.tif 000004
【図３】
2013114624.tif 000005
【図４】
2013114624.tif 000006
【図５】
2013114624.tif 000007
【図６】
2013114624.tif 000008
【図７】
2013114624.tif 000009
【図８】
2013114624.tif 000010
【図９】
2013114624.tif 000011
【図１０】
2013114624.tif 000012
【図１１】
2013114624.tif 000013
【図１２】
2013114624.tif 000014
【図１３】
2013114624.tif 000015
【図１４】
2013114624.tif 000016
【図１５】
2013114624.tif 000017
【図１６】
2013114624.tif 000018
【図１７】
2013114624.tif 000019
【図１８】
2013114624.tif 000020
【図１９】
2013114624.tif 000021
【図２０】
2013114624.tif 000022
【図２１】
2013114624.tif 000023
【図２２】
2013114624.tif 000024
【図２３】
2013114624.tif 000025
【図２４】
2013114624.tif 000026
【図２５】
2013114624.tif 000027