(57)【特許請求の範囲】
【請求項１】
アクセス性能が異なる複数階層を含むプールに実記憶領域を提供する、性能が異なる複数の物理記憶ドライブと、
コントローラと、を含み、
前記コントローラは、
前記プールにおける第１階層へのアクセスを監視し、
前記第１階層と前記プールにおける第２階層との間でのデータ再配置において、前記監視の結果及び前記第１階層の性能に基づき、複数の異なる再配置速度での再配置における、再配置によるホストに対する性能低下の影響及び再配置による性能の向上の度合いを推測し、
前記推測した影響及び度合いに基づいて、再配置速度を前記複数の再配置速度から決定する、情報記憶システム。
【請求項２】
前記コントローラは、前記監視の結果が示す前記第１階層の負荷に基づいて、前記第２階層と前記第１階層との間のデータの再配置におけるデータ移動方法を、決定する、請求項１に記載の情報記憶システム。
【請求項３】
前記コントローラは、スワップ、マイグレーション及びコピーのうちの少なくとも二つを含む複数種類の移動方法から前記再配置におけるデータ移動方法を選択する、請求項２に記載の情報記憶システム。
【請求項４】
前記第１階層は前記第２階層よりも上位の階層であり、
前記コントローラは、
スワップ及びマイグレーションを含む複数種類の移動方法から前記再配置におけるデータ移動方法を選択し、
前記第１階層の負荷が閾値よりも大きい場合に、前記再配置におけるデータ移動方法として前記スワップを選択する、請求項２に記載の情報記憶システム。
【請求項５】
前記第１階層は前記第２階層よりも下位の階層であり、
前記コントローラは、前記第１階層の負荷が閾値よりも大きい場合に前記データの移動方法としてコピーを選択し、前記第１階層の前記負荷が前記閾値以下である場合に前記データの移動方法としてマイグレーションを選択する、請求項２に記載の情報記憶システム。
【請求項６】
前記コントローラは、ホストからのアクセスコマンドに応答して、コピーにより再配置されたデータのコピーセグメントにアクセスし、前記コピーセグメントのアクセスを監視する、請求項３に記載の情報記憶システム。
【請求項７】
前記コントローラは、前記コピーセグメントへの書き込みの後、前記コピーセグメントのコピー元アドレスのデータと前記コピーセグメントのデータを一致させる、請求項６に記載の情報記憶システム。
【請求項８】
性能が異なる複数階層を含むプールに実記憶領域を提供する、性能が異なる複数の物理記憶ドライブを含む情報記憶システムの制御方法であって、
前記プールにおける第１階層へのアクセスを監視し、
前記第１階層と前記プールにおける第２階層との間でのデータ再配置において、前記監視の結果及び前記第１階層の性能に基づき、複数の異なる再配置速度での再配置における、再配置によるホストに対する性能低下の影響及び再配置による性能の向上の度合いを推測し、
前記推測した影響及び度合いに基づいて、再配置速度を前記複数の再配置速度から決定する、情報記憶システムの制御方法。
【請求項９】
前記監視の結果が示す前記第１階層の負荷に基づいて、前記第２階層と前記第１階層との間のデータの再配置におけるデータ移動方法を、決定する、請求項８に記載の情報記憶システムの制御方法。
【請求項１０】
前記第１階層が前記第２階層よりも下位階層であり、
前記第１階層の負荷が閾値よりも大きい場合に前記データ移動方法としてコピーを選択し、前記第１階層の前記負荷が前記閾値以下である場合に前記データ移動方法としてマイグレーションを選択する、請求項９に記載の情報記憶システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報記憶システム及び情報記憶システムの制御方法に関し、特に、情報記憶システムにおける階層間でのデータ再配置に関する。
【背景技術】
【０００２】
ストレージシステムからホストに対してボリュームを提供する際、ストレージシステム内の性能の異なる複数のドライブの記憶領域から階層化されたプールを構成し、そのプールから構築した仮想ボリュームをホストに割り当てる運用が知られている（例えば、特許文献１:米国特許出願公開第２０１１／０１６７２３６号明細書を参照）。
【０００３】
ストレージシステムは、仮想ボリュームに対するホストからのＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）負荷を分析し、Ｉ／Ｏ負荷の高いページを、性能の高い高価なディスクで構成されたリソースから成る上位階層に、そうでないページを性能の低い安価なディスクで構成されたリソースから成る下位階層に自動再配置する（階層間のページの再配置）。これにより、少ないＴＣＯ（Ｔｏｔａｌ  Ｃｏｓｔ  ｏｆ  Ｏｗｎｅｒｓｈｉｐ）で、効率的に要求性能を満たすことができる。また、特許文献１は、ＳＳＤがボトルネックにならないよう、ＳＳＤに配置するページ数を制限する技術を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２０１１／０１６７２３６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ホストＩ／Ｏ性能（レスポンス性能）を最大化するためには、ページ再配置を迅速に行い、ページ再配置完了までの時間を短くすることが重要である。しかし、ページ再配置の高速化は、ストレージシステムにおけるページ再配置の負荷の増加を招き、ストレージコントローラのＣＰＵや記憶ドライブといったハードウェアリソースがボトルネックとなって、ストレージシステムのホストＩ／Ｏ性能が大きく悪化する可能性がある。したがって、ホストＩ／Ｏ性能の低下を抑えつつ、ページ再配置を迅速に行う技術が望まれる。
【課題を解決するための手段】
【０００６】
本発明の一態様の情報記憶システムは、アクセス性能が異なる複数階層を含むプールに実記憶領域を提供する、性能が異なる複数の物理記憶ドライブと、コントローラと、を含み、前記コントローラは、前記プールにおける第１階層へのアクセスを監視し、前記第１階層と前記プールにおける第２階層との間でのデータ再配置において、前記監視の結果及び前記第１階層の性能に基づき、複数の異なる再配置速度での再配置における、再配置によるホストに対する性能低下の影響及び再配置による性能の向上の度合いを推測し、前記推測した影響及び度合いに基づいて、再配置速度を前記複数の再配置速度から決定する。
【発明の効果】
【０００７】
本発明の一態様によれば、ホストＩ／Ｏ性能の低下を抑えつつ、階層化されたプールにおけるデータ再配置を迅速に行うことができる。
【図面の簡単な説明】
【０００８】
【図１】本実施形態における、計算機システムの概略構成を模式的に示すブロック図である。
【図２】本実施形態における、ストレージシステムがホストに提供する仮想ボリューム及び仮想ボリュームを提供するプールの論理構成を模式的に示している。
【図３】本実施形態における、共有メモリが格納しているデータを示すブロック図である。
【図４】本実施形態における、ローカルメモリが格納するストレージ制御プログラムの例を示すブロック図である。
【図５】本実施形態における、仮想論理変換テーブルの構成例を示している。
【図６】本実施形態における、論理物理変換テーブルの構成例を示している。
【図７】本実施形態における、細粒度モニタテーブルの構成例を示している。
【図８】本実施形態における、パリティグループモニタテーブルの構成例を示している。
【図９】本実施形態における、再配置ジョブ実行管理テーブルの構成例を示している。
【図１０Ａ】本実施形態における、再配置速度管理テーブルの構成例を示している。
【図１０Ｂ】本実施形態における、ジョブ優先度に従った処理の概要を模式的に示している。
【図１１】本実施形態における、再配置速度決定テーブルの構成例を示している。
【図１２】本実施形態における、ホストＲＥＡＤプログラムの処理例（１）を示すフローチャートである。
【図１３】本実施形態における、ホストＷＲＩＴＥプログラムの処理例（１）を示すフローチャートである。
【図１４】本実施形態における、ドライブＷＲＩＴＥプログラムの処理例（１）を示すフローチャートである。
【図１５】本実施形態における、ページのマイグレーションを説明するための模式図である。
【図１６】本実施形態における、再配置プログラムの処理例を示すフローチャートである。
【図１７】本実施形態における、再配置速度決定プログラムによる、簡易方式の再配置速度決定処理を示すフローチャートである。
【図１８】本実施形態における、一つの階層のＴｉｅｒ性能管理テーブルの構成例及びその作成方法を示している。
【図１９】本実施形態における、再配置速度決定プログラムによる他の処理例を示すフローチャートである。
【図２０】本実施形態における、階層のレスポンスカーブを示している。
【図２１】本実施形態における、再配置コスト算出例を示すフローチャートである。
【図２２】本実施形態における、再配置方式決定プログラムによる再配置方式決定処理の一例を示すフローチャートである。
【図２３】本実施形態における、ページデータのスワップ方式による再配置の概要を説明する図である。
【図２４】本実施形態における、スワップ方式の再配置方法の例を説明するフローチャートである。
【図２５】本実施形態における、コピー方式による再配置の概要を説明する図である。
【図２６】本実施形態における、コピーセグメントを管理する、コピーセグメント管理テーブルの構成例を示している。
【図２７】本実施形態における、コピー方式の再配置の例を説明するフローチャートである。
【図２８】本実施形態における、コピーセグメントを有する仮想ページに対するホストＲＥＡＤ処理（２）の例を説明するフローチャートである。
【図２９】本実施形態における、コピーセグメントを有する仮想ページに対するライトコマンドに対応したホストＷＲＩＴＥ処理例（２）を説明するフローチャートである。
【図３０】本実施形態における、コピーセグメントを有する仮想ページに対するライトコマンドに対応したドライブＷＲＩＴＥ処理例（２）を説明するフローチャートである。
【図３１】本実施形態における、コピーセグメントのダーティ書き戻しの例を説明するフローチャートである。
【図３２】本実施形態における、ユーザ（管理者）が再配置方法を設定するためのＧＵＩの一例を示している
【図３３】本実施形態における、再配置速度管理テーブルの他の構成例を示している。
【図３４】本実施形態における、ページのＩ／Ｏ回数に応じた再配置の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。
【００１０】
本実施形態において、ストレージシステムは、階層化されたプールを有し、階層間においてデータを再配置する。本実施形態は、ストレージシステムにおけるＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）に基づいて、階層間のデータ再配置における再配置速度及び／又は再配置方式を決定し、決定した再配置速度及び／又は再配置方式において階層間のデータ再配置を行う。
【００１１】
再配置速度により複数ページの再配置完了の所要時間が変化し、再配置速度が速い程、複数ページの再配置の完了時間が短くなる。再配置方式は、再配置におけるデータの移動方法を規定する。再配置方式が規定するデータの移動は、再配置対象として選択されたページのデータの移動又は、当該ページのデータ及びそれとは異なるデータの移動を規定する。適切な再配置速度及び／又は再配置方式を選択することで、データ再配置によるホストＩ／Ｏ性能の低下を抑えつつ、再配置後のホストＩ／Ｏ性能の向上させることができる。
【００１２】
以下では「プログラム」を主語（動作主体）として本発明の実施形態における各処理について説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うため、プロセッサを主語とした説明としてもよい。
【００１３】
また、プログラムを主語として開示された処理は、管理サーバやストレージシステム等の計算機又は情報処理装置が行う処理でもある。プログラムの少なくとも一部は専用ハードウェアで実現してもよく、また、モジュール化されていてもよい。各種プログラムはプログラム配布サーバや非一時的な記憶媒体によって計算機や情報処理装置にインストールされてもよい。
【００１４】
プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、プロセッサは、制御プログラムに従って動作することで制御部として機能し、管理プログラムに従って動作することで管理部として機能する。プロセッサを含む装置及びシステムは、これらの機能部を含む装置及びシステムである。
【００１５】
図１は、本実施形態の計算機システムの概略構成を模式的に示すブロック図である。本計算機システムは、ホスト（ホスト計算機）１００、管理サーバ（管理計算機）１２０、ストレージシステム１４０を含む。計算機システムが含みえるホスト１００、管理サーバ１２０、ストレージシステム１４０のそれぞれの数は、１以上の任意の数である。
【００１６】
ホスト１００、管理サーバ１２０、及びストレージシステム１４０は、管理ネットワーク１７０により、通信可能に接続されている。例えば、管理ネットワーク１７０は、ＩＰネットワークである。なお、管理ネットワーク１７０は、管理データ通信用のネットワークであればＩＰネットワーク以外のネットワークでもよい。
【００１７】
ホスト１００及びストレージシステム１４０は、データネットワーク１６０により接続されている。ホスト１００はストレージシステム１４０のリソースにアクセスし、業務を行う計算機である。データネットワーク１６０はデータ通信用のネットワークであって、例えば、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。データネットワーク１６０は、データ通信用のネッットワークであれば、ＳＡＮと異なるネットワークでもよい。データネットワーク１６０と管理ネットワーク１７０は同一のネットワークでもよい。
【００１８】
管理サーバ１２０は、ネットワークインタフェース（Ｉ／Ｆ）１２５、プロセッサ１２１、主記憶デバイスであるメモリ１２２、二次記憶デバイス１２３、入出力デバイス１２４を含む。管理サーバ１２０は、管理プログラム１２６を実行し、それに従って動作する。管理サーバ１２０のデバイスは、バスにより通信可能に接続されている。
【００１９】
入出力デバイス１２４は、ディスプレイ、ポインタ又はキーボード等のデバイスの一つ又は複数のデバイスを含む。管理者は、これら入出力デバイス１２４により、管理サーバ１２０を操作することができるほか、ネットワークを介して接続するクライアント計算機から管理サーバ１２０にアクセスしてもよい。クライアント計算機は、管理サーバ１２０と共に管理システムに含まれる。
【００２０】
管理者は、入力デバイス（例えばマウス及びキーボード）により必要な情報を入力し、出力デバイスにより必要な情報を視認することができる。管理システムは、一つ又は複数の計算機で構成されていてよく、それぞれが管理サーバ１２０の機能の一部又は全部を備える複数の計算機を含むことができる。
【００２１】
プロセッサ１２１は、メモリ１２２に記憶されているプログラムを実行することによって管理サーバ１２０の所定の機能を実現する。メモリ１２２は、プロセッサ１２１よって実行されるプログラム及びプログラムの実行に必要なデータを記憶する。プログラムは、不図示のＯＳの他、管理プログラム１２６を含む。
【００２２】
典型的には、プログラムは、二次記憶デバイス１２３からメモリ１２２にロードされる。二次記憶デバイス１２３は、管理サーバ１２０の所定の機能を実現するために必要なプログラム及びデータを格納する、不揮発性の非一時的記憶媒体を備える記憶装置である。二次記憶デバイス１２３は、ネットワークを介して接続された外部の記憶装置でもよい。
【００２３】
ストレージシステム１４０は、異なる種類の物理記憶ドライブ群１４６、１４７及びホスト１００と物理記憶ドライブ群１４６、１４７との間においてデータ転送制御を行うストレージコントローラ１５５とを含む。
【００２４】
ストレージコントローラ１５５は、プロセッサ１４１、ローカルメモリ１４８、共有メモリ１４５、キャッシュメモリ１４４、ホストインタフェース１４２、管理インタフェース１４３、ドライブインタフェース１４９、ポート１５０を含む。ストレージシステム１４０は、ポート１５０を介して、外部の物理記憶ドライブ群１５１に接続している。ストレージシステム１４０は、複数クラスタのストレージコントローラを含んでいてもよい。
【００２５】
プロセッサ１４１は、ストレージ制御プログラム（図４を参照）を実行することで、ホスト１００からのＩ／Ｏの制御及びストレージシステム１４０のプール及びボリュームの管理、制御を含む所定の機能を実現する。本実施形態で説明するストレージコントローラ１５５の機能の少なくとも一部は、プロセッサ１４１と異なるロジック回路によって実現されてもよい。
【００２６】
ローカルメモリ１４８は、プロセッサ１４１が扱うデータやプログラムを格納する。ローカルメモリ１４８のデータは、他のストレージシステムとは共有されない。典型的には、ストレージ制御プログラムやストレージシステム１４０の制御に利用されるデータが、いずれかの記憶ドライブ又はフラッシュメモリ（不図示）からロードされる。
【００２７】
管理インタフェース１４３は、管理サーバ１２０と接続するためのデバイスである。管理インタフェース１４３は、管理サーバ１２０とストレージコントローラ１５５との通信に用いられるプロトコル、例えばＩＰプロトコルを、ストレージコントローラ１５５内部で用いられるプロトコル、例えば、ＰＣＩｅに変換する機能を有する。
【００２８】
ホストインタフェース１４２は、ホスト１００と接続するためのデバイスである。ホストインタフェース１４２は、ホストコンピュータ１００とストレージコントローラ１５５との通信に用いられるＦＣ、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ（ＦＣｏＥ）、ｉＳＣＳＩ等のプロトコルを、ストレージコントローラ１５５内部で用いられるプロトコル、例えば、ＰＣＩｅに変換する機能を有する。
【００２９】
ドライブインタフェース１４９は、物理記憶ドライブ群１４６、１４７と接続するためのデバイスである。ドライブインタフェース１４９は、物理記憶ドライブ群１４６、１４７とストレージコントローラ１５５の通信に用いられるＦＣ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ（ＳＡＴＡ）等のプロトコルを、ストレージコントローラ１５５内部で用いられるプロトコル、例えば、ＰＣＩｅに変換する機能を有する。
【００３０】
キャッシュメモリ１４４は、ホスト１００から物理記憶ドライブ群１４６、１４７、１５１に読み書きされるデータ（ユーザデータ）を、一時的に記憶し（ユーザデータのキャッシング）、さらに、それらの間でデータを中継する。共有メモリ１４５は、プロセッサ１４１（ストレージ制御プログラム）が利用し、他のストレージシステムとの共有データを格納する。共有メモリ１４５は、実装されていなくともよい。本システムの共有メモリ１４５が格納しているデータは、図３を参照して後述する。
【００３１】
本構成例において、ストレージシステム１４０は、アクセス性能が異なる３層の物理記憶ドライブを含む。アクセス性能は、レスポンス時間やスループットといった指標で表される。物理記憶ドライブ群１４６は、最もアクセス性能が高い物理記憶ドライブの層（Ｔｉｅｒ１）であり、物理記憶ドライブ群１４７は、次にアクセス性能が高い物理記憶ドライブの層（Ｔｉｅｒ２）である。さらに、ストレージシステム１４０は、最もアクセス性能が低い物理記憶ドライブの層（Ｔｉｅｒ３）として、外部物理記憶ドライブ群１５１を含む。
【００３２】
例えば、物理記憶ドライブ群１４６（Ｔｉｅｒ１）は、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）群であり、物理記憶ドライブ群１４７（Ｔｉｅｒ２）は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）群である。一つの階層の物理記憶ドライブのアクセス性能は、その上位階層の物理記憶ドライブよりも低く、その下位階層の物理記憶ドライブのアクセス性能よりも高い。典型的には、同一層内の物理記憶ドライブのアクセス性能は同一であるが、小さい違いであれば異なっていてもよい。
【００３３】
物理記憶ドライブのアクセス性能は、物理記憶ドライブのインタフェースによっても異なり得る。例えば、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）ＨＤＤ群とＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ）ＨＤＤ群とは、異なる層を構成し得る。
【００３４】
図２は、ストレージシステム１４０がホスト１００に提供する仮想ボリューム及び仮想ボリュームを提供するプールの論理構成を模式的に示している。ストレージシステム１４０は、１又は複数のプールを構築することができる。以下においては、基本的に一つのプールについて説明を行う。ストレージシステム１４０が複数のプールを含む場合、ストレージシステム１４０は、プール毎に、以下に説明する処理を行うことができる。
【００３５】
図２は、ホスト１００に、三つの階層（Ｔｉｅｒ１、Ｔｉｅｒ２、Ｔｉｅｒ３）の記憶領域２１１、２２1、２３１を提供する例を説明している。プールは、４以上又は３未満の階層の階層に階層化されていてもよい。例えば、最も高位の階層（Ｔｉｅｒ１）がＳＳＤ群の記憶領域で構成され、次位の階層（Ｔｉｅｒ２）がＳＡＳＨＤＤ群の記憶領域で構成され、最低位の階層（Ｔｉｅｒ３）がＳＡＴＡＨＤＤの記憶領域で構成される。
【００３６】
図２において、ストレージコントローラ１５５は、プール２０１内の記憶領域から、仮想ボリューム２７１、２７５を構築する。プール２０１は、ページ（所定容量の記憶領域）単位で管理される。仮想ボリューム２７１、２７５にホスト１００から書き込みがあり、データ格納領域が必要になる度に、ストレージシステム１４０は、ページを仮想ボリューム２７１、２７５に割り当てる。また、不要なページを解放する。
【００３７】
このように、動的にページを割り当てることで、仮想ボリューム２７１、２７５の容量を仮想化する、つまり、ホスト１００が認識する（ホスト１００に割り当てられている）容量よりも、実容量を小さくすることができる。ストレージシステム１４０は、プール内のページから構成され実容量とホスト１００により認識される容量が一致するボリュームを、ホスト１００に提供してもよい。
【００３８】
上述のようにプール２０１は階層化されている。本例においては、プール２０１は、Ｔｉｅｒ１（２１１）、Ｔｉｅｒ２（２２１）、Ｔｉｅｒ３（２３１）の３階層で構成されている。各層には、一つ又は複数のパリティグループ（ＲＡＩＤグループ）の記憶領域が割り当てられる。パリティグループの全て又は一部の記憶領域が階層に割り当てられる。ストレージコントローラ１５５は、仮想ボリューム２７１、２７５に、異なる階層のページを割り当てることができる。
【００３９】
図２の例において、Ｔｉｅｒ１（２１１）に二つのパリティグループの記憶領域２１２Ａ、２１２Ｂが割り当てられ、Ｔｉｅｒ２（２２１）に一つのパリティグループの記憶領域２２２が割り当てられ、Ｔｉｅｒ３（２３１）に二つのパリティグループの記憶領域２３２Ａ、２３２Ｂが割り当てられている。
【００４０】
Ｔｉｅｒ１のパリティグループ記憶領域２１２Ａはページ２１３Ａ、２１３Ｂを含み、ページ（実ページ）２１３Ａが仮想ボリューム２７１のページ（仮想ページ）２７２Ａに割り当てられている。Ｔｉｅｒ１のパリティグループの記憶領域２１２Ｂはページ２１４Ａ、２１４Ｂを含み、ページ（実ページ）２１４Ａが仮想ボリューム２７５のページ（仮想ページ）２７６Ａに割り当てられている。
【００４１】
Ｔｉｅｒ２のパリティグループ記憶領域２２２はページ２２３Ａ〜２２３Ｄを含む。ページ（実ページ）２２３Ａは、仮想ボリューム２７１のページ（仮想ページ）２７２Ｂに割り当てられている。ページ（実ページ）２２３Ｄは、仮想ボリューム２７５のページ（仮想ページ）２７６Ｂに割り当てられている。
【００４２】
Ｔｉｅｒ３のパリティグループ記憶領域２３２Ａはページ２３３Ａ、２３３Ｂを含み、ページ（実ページ）２３３Ａが仮想ボリューム２７１のページ（仮想ページ）２７２Ｃに割り当てられている。Ｔｉｅｒ３のパリティグループの憶領域２３２Ｂはページ２３４Ａ、２３４Ｂを含み、いずれのページも仮想ボリューム２７１、２７５に割り当てられていない。
【００４３】
以下に説明する例において、プール２０１がＴｉｅｒ１、Ｔｉｅｒ２、Ｔｉｅｒ３の３階層に階層化されているものとする。Ｔｉｅｒ１が最高位の層であり、最高性能の物理記憶ドライブ（例えばＳＳＤ）の記憶領域で構成されている。Ｔｉｅｒ２が次位の層であり、次に高性能の物理記憶ドライブ（例えばＳＡＳＨＤＤ）の記憶領域で構成されている。そして、Ｔｉｅｒ３が最低位の層であり、最も性能が低い物理記憶ドライブ（例えばＳＡＴＡＨＤＤ）の記憶領域で構成されている。
【００４４】
図３は、共有メモリ１４５が格納しているデータを示すブロック図である。共有メモリ１４５は、仮想論理変換テーブル３０１、論理物理変換テーブル３０２、細粒度モニタテーブル３０３、パリティグループモニタテーブル３０４、再配置ジョブ実行管理テーブル３０５、再配置速度管理テーブル３０６、再配置速度決定テーブル３０７、コピーセグメント管理テーブル３０８、Ｔｉｅｒ性能管理テーブル３０９を格納している。
【００４５】
ストレージ制御プログラムは、これらテーブルを参照して、ストレージシステム１４０の動作を制御、管理する。各テーブルの詳細は、後述する。これらはローカルメモリ１４８に格納されていてもよい。なお、本実施形態において、テーブル、リスト、ＤＢ、キュー等の表現にて情報を説明するが、本発明で利用される情報はデータ構造に依存せず、設計に従って適切なデータ構造で表現することができる。さらに、各情報の内容を説明する際に、識別子、名、ＩＤ等という表現を用いるが、これらについてはお互いに置換が可能である。
【００４６】
図４は、ローカルメモリ１４８が格納するストレージ制御プログラムの例を示すブロック図である。ストレージ制御プログラムは、ホストＲＥＡＤプログラム４０１、ホストＷＲＩＴＥプログラム４０２、ドライブＷＲＩＴＥプログラム４０３、ダーティ書き戻しプログラム４０４、再配置プログラム４０５、再配置速度決定プログラム４０６、再配置コスト計算プログラム４０７、再配置方式決定プログラム４０８を含む。各プログラムの処理の詳細は後述する。
【００４７】
図５は、仮想論理変換テーブル３０１の構成例を示している。仮想論理変換テーブル３０１は、ホスト１００が指定する仮想ボリュームのアドレス（仮想アドレス）を、ストレージコントローラ１５５が管理しているパリティグループ（プール２０１）内の論理アドレスに変換ために参照されるテーブルである。論理アドレスは、パリティグループ内で一意である。
【００４８】
仮想論理変換テーブル３０１の１エントリは、１ページのアドレス情報を格納する。仮想論理変換テーブル３０１は、ページ番号のカラム５０１、仮想ボリューム番号のカラム５０２、仮想アドレスのカラム５０３、プール番号のカラム５０４、パリティグループ番号のカラム５０５、論理アドレスのカラム５０６を有する。仮想アドレスは、仮想ボリューム内でデータの位置を示すアドレスであり、論理アドレスはプールのパリティグループ内でデータの位置を示すアドレスである。
【００４９】
ページ番号のカラム５０１は、各ページを識別する値を格納する。例えば、ページ番号は、プール２０１内において一意である。仮想ボリューム番号のカラム５０２は、ページが割り当てられている仮想ボリュームを識別する値を格納する。例えば、仮想ボリューム番号は、プール２０１において一意である。仮想アドレスのカラム５０３は、仮想ボリュームにおいてページに割り当てられている仮想アドレスの開始アドレスを格納する。ページの容量は規定の一定値であるとする。
【００５０】
プール番号のカラム５０４は、ページが含まれるプールを識別する値を格納する。パリティグループ番号のカラム５０５は、ページが含まれるパリティグループを識別する値を格納する。例えば、パリティグループ番号は、プール２０１内で一意である。論理アドレスのカラムは５０６、パリティグループ内でのページの論理アドレスの開始アドレスを格納する。
【００５１】
ストレージコントローラ１５５は、仮想論理変換テーブル３０１を参照して、ホスト１００からのリードコマンド及びライトコマンドが指定する仮想ボリュームにおける仮想アドレスから、プール内のパリティグループにおける論理アドレスを決定することができる。
【００５２】
図６は、論理物理変換テーブル３０２の構成例を示す図である。論理物理変換テーブル３０２は、プール２０１における論理アドレスを、物理記憶ドライブの物理アドレスに変換ために参照されるテーブルである。論理物理変換テーブル３０２は、パリティグループ番号のカラム６０１、ＲＡＩＤ種別のカラム６０２及び物理記憶ドライブ番号のカラム６０３を有する。
【００５３】
ＲＡＩＤ種別のカラム６０２は、パリティグープのＲＡＩＤ種別（ＲＡＩＤレベル）の識別子を格納し、物理記憶ドライブ番号のカラム６０３は、パリティグープを構成する全ての物理記憶ドライブの物理記憶ドライブ番号を格納する。
【００５４】
パリティグループのＲＡＩＤ種別と、パリティグループを構成する物理記憶ドライブを定義することにより、パリティデータの配置を考慮したパリティグループの論理アドレス空間が定義される。コントローラ１５５は、定義された論理アドレス空間に基づき、パリティグループの論理アドレスから、物理記憶ドライブ番号とそのドライブにおける物理アドレスが特定できる。
【００５５】
図７は、細粒度モニタテーブル３０３の構成例を示している。細粒度モニタテーブル３０３は、ページ（仮想ページ）に対して、所定の監視期間内に発行されたＩ／Ｏ（ホストからのＩ／Ｏ及び再配置によるＩ／Ｏの双方を含む）の回数を管理するテーブルテーブルである。仮想ページには、実ページ（実記憶領域）又は、後述するように、実ページ及びコピーセグメント（実記憶領域）が割り当てられており、カウントされる仮想ページのＩ／Ｏ回数は、実ページ及びコピーセグメントのＩ／Ｏ回数である。
【００５６】
本例において、ストレージコントローラ１５５は、Ｉ／Ｏとしてリードアクセス及びライトアクセスをモニタする。つまり、Ｉ／Ｏ回数は、リードアクセスの回数とライトアクセスの回数の合計である。他の例は、それらの一方のみ、例えばリードアクセスのみをモニタしてもよい。
【００５７】
ストレージコントローラ１５５は、規定長さの監視期間において、ストレージシステム１４０におけるオペレーションを監視して、その監視結果を管理する。特に、本実施形態において、ストレージコントローラ１５５は、ホストからのＩ／Ｏ回数と、ページ再配置の回数（再配置によるＩ／Ｏ回数）を監視する。ストレージコントローラ１５５は、予め決められた長さの監視期間におけるこれらの値をカウントし、監視期間完了時の最終的なカウント値を、図３に示す管理テーブルの一つ又は複数に格納する。
【００５８】
監視期間は、予め定められた周期で繰り返される。典型的には全ての数値カウントのための監視期間は共通であるが、異なっていてもよい。監視期間の長さが決まっているため、その期間におけるホストＩ／Ｏ回数からホストＩ／Ｏ頻度（ＩＯＰＳ）を算出することができ、ページ再配置の回数からページ再配置によるＩ／Ｏ頻度（ＩＯＰＳ）を算出することができる。
【００５９】
細粒度モニタテーブル３０３は、ページ番号のカラム７０１、仮想ボリューム番号のカラム７０２、仮想アドレスのカラム７０３、Ｉ／Ｏ回数のカラム７０４を有する。ページ番号のカラム７０１、仮想ボリューム番号のカラム７０２、仮想アドレスのカラム７０３がそれぞれ格納する情報は、他の図面を参照して上に説明した通りである。
【００６０】
Ｉ／Ｏ回数のカラム７０４は、直前の完了監視期間におけるページへのＩ／Ｏ回数の値を格納する。Ｉ／Ｏ回数は、ホストからのコマンドによるＩ／Ｏ回数と再配置によるＩ／Ｏ回数の和である。再配置によるＩ／Ｏ回数には、再配置元である物理ディスクからのリード、および再配置先である物理ディスクへのライトの両方のアクセス回数が含まれる。上述のように、ストレージコントローラ１５５は、規定長の監視期間においてページのＩ／Ｏをカウントする。カウント中のＩ／Ｏ回数の値は、他のテーブル（不図示）に格納されている。
【００６１】
ストレージコントローラ１５５は、監視期間の完了後に、その監視結果の値でＩ／Ｏ回数のカラム７０４の値を更新する。例えば、管理テーブル更新プログラムに従って動作するストレージコントローラ１５５は、細粒度モニタテーブル３０３及び他のテーブルにおいて更新が必要な値を監視期間の満了後に更新する。Ｉ／Ｏ回数のカラム７０４における値を監視期間の長さで割った値は、当該ページへのＩＯＰＳである。
【００６２】
図８は、パリティグループモニタテーブル３０４の構成例を示している。パリティグループモニタテーブル３０４は、モニタされている、パリティグループのＩ／Ｏ回数（ホストからのＩ／Ｏ回数及び再配置によるＩ／Ｏ回数の和）及びパリティグループ間のページ再配置の回数を管理する。パリティグループモニタテーブル３０４は、パリティグループ番号のカラム８０１、Ｔｉｅｒのカラム８０２、Ｉ／Ｏ回数のカラム８０３、再配置回数（再配置元）のカラム８０４、再配置回数（再配置先）のカラム８０５を有する。
【００６３】
パリティグループ番号のカラム８０１が格納する情報は、他の図面を参照して上に説明した通りである。Ｔｉｅｒのカラム８０２は、パリティグループ（が提供する記憶領域）が属する階層を識別する値を格納する。
【００６４】
Ｉ／Ｏ回数のカラム８０３は、規定長の監視期間内における、パリティグループへのホストからのＩ／Ｏ発行数と再配置によるＩ／Ｏ発行数の和を格納する。再配置は、再配置元にリードコマンドを発行し、再配置先にライトコマンドを発行することに相当する。本例において、Ｉ／Ｏ回数のカウント方法は、上記ページのＩ／Ｏ回数のカウント方法と同様であり、それらの監視期間は同一である。本例において、パリティグループに含まれる全ページのＩ／Ｏ回数の和が、パリティグループのＩ／Ｏ回数である。
【００６５】
再配置回数（再配置元）のカラム８０４は、本パリティグループから別のパリティグループに再配置した回数を格納する。また、再配置回数（再配置先）のカラム８０５は、別パリティグループから本パリティグループに再配置した回数を格納する。
【００６６】
これらの回数のカウント方法は、パリティグループへのホストからのＩ／Ｏ発行数のカウントと共通の監視期間において再配置の回数をカウントし、監視期間完了後にその監視結果の値で再配置回数（再配置元）のカラム８０４の値、再配置回数（再配置先）のカラム８０５の値を更新する。これらＩ／Ｏ回数、再配置回数のカウント中の値は、別のテーブル（不図示）に格納されている。
【００６７】
図９は、再配置ジョブ実行管理テーブル３０５の構成例を示している。再配置ジョブ実行管理テーブル３０５は、各階層間の再配置ジョブを管理するテーブルである。再配置ジョブ実行管理テーブル３０５は、各プールに用意される。本例において、再配置ジョブ実行管理テーブル３０５は、Ｔｉｅｒのカラム９０１、実行ジョブ数のカラム９０２、再配置速度番号のカラム９０３、再配置方式のカラム９０４を有する。
【００６８】
Ｔｉｅｒのカラム９０１は、ページ再配置を行う二つの階層の識別情報を格納している。本例のプールは３階層に階層化されているため、Ｔｉｅｒ１とＴｉｅｒ２との間の再配置、Ｔｉｅｒ２とＴｉｅｒ３との間の再配置、そして、Ｔｉｅｒ１とＴｉｅｒ３との間の再配置のエントリが保持されている。
【００６９】
実行ジョブ数のカラム９０２は、階層間において、今現在、実際に再配置を実行中のジョブ数を格納する。再配置速度番号のカラム９０３は、階層間の再配置に対して設定されている再配置速度を識別する値を格納する。再配置速度については、図１０Ａを参照して後述する。
【００７０】
再配置方式のカラム９０４は、階層間の再配置に対して設定されている再配置方式（データの移動方法）の識別子を格納する。再配置方式については後で説明するが、本例において、マイグレーション、コピー、スワップの三つのデータ移動方法から一つの方式が選択され、割り当てられる。ストレージコントローラ１５５は、ページ再配置において、再配置ジョブ実行管理テーブル３０５を参照して決定した再配置速度、再配置方式によってページ再配置を実行する。
【００７１】
図１０Ａは、再配置速度管理テーブル３０６の構成例を示している。再配置速度管理テーブル３０６は、ページ再配置において使用可能な再配置速度を定義する。本例において、再配置速度を定義するパラメータは、ジョブ数、スリープ時間、ジョブ優先度である。再配置速度管理テーブル３０６は、再配置速度番号のカラム１００１、最大ジョブ数のカラム１００２、スリープ時間のカラム１００３、ジョブ優先度のカラム１００４を有する。
【００７２】
再配置速度番号のカラム１００１の格納する情報は、他の図面を参照して上に説明した通りである。最大ジョブ数のカラム１００２は、再配置速度番号に対して定義されている再配置ジョブの最大多重実行数（同時実行の最大ジョブ数）の値を格納する。ジョブ数が大きくなると、再配置速度が速くなる。
【００７３】
スリープ時間のカラム１００３は、再配置におけるスリープ時間を示す値を格納する。スリープ時間は、１ページ再配置した後に、次のページの再配置を開始するまでの待機時間である。再配置ジョブが多重化されている場合、各ジョブは、１ページ再配置した後に規定されているスリープ時間だけ、次のページの再配置を待つ。スリープ時間が短くなると、再配置速度が速くなる。
【００７４】
ジョブ優先度のカラム１００４は、再配置ジョブの他のジョブ（例えば、ホストＩ／Ｏジョブ）と比較した優先度を格納する。本例のジョブ優先度のカラム１００４において、優先度の値が小さいほど、優先度が高い。ストレージコントローラ１５５は、優先度が高いジョブから先に実行する。再配置のジョブ優先度が高いと、ストレージシステム１４０の負荷が大きい場合でも、再配置の速度が低下しない（より速い速度で再配置が実行される）。再配置ジョブが多重化されている場合、典型的には、全てのジョブの優先度が同一である。
【００７５】
図１０Ｂは、ジョブ優先度に従った処理の概要を模式的に示している。ストレージコントローラ１５５は、物理記憶ドライブごとに、優先度ごとのＩ／Ｏ要求キューを保持している。本例において、ストレージコントローラ１５５は、物理記憶ドライブ１０５５に対して、高優先度（優先度１）のキュー１０５１、低優先度（優先度２）のキュー１０５２を保持している。ストレージコントローラ１５５は、物理記憶ドライブ１０５６に対して、高優先度（優先度１）のキュー１０５３、低優先度（優先度２）のキュー１０５４を保持している。
【００７６】
ストレージコントローラ１５５は、優先度の順でキューから要求を取り出し、物理記憶ドライブへ、ＲＥＡＤ／ＷＲＩＴＥ要求を発行する。通常、ホストＩ／Ｏ要求は優先度１（最も高い優先度）であり、再配置Ｉ／Ｏは優先度２以下である。例えば、ホストＩ／Ｏが過多のために全く再配置が動作できない場合、ストレージコントローラ１５５は、再配置Ｉ／Ｏの優先度を１に設定する。
【００７７】
図１１は、再配置速度決定テーブル３０７の構成例を示している。再配置速度決定テーブル３０７は、ページ再配置における再配置速度を決定するためのテーブルである。本例において、ストレージコントローラ１５５は、再配置速度を、ページのＩ／Ｏ回数、再配置元の階層の負荷、再配置先の階層の負荷に基づいて、決定する。再配置元と再配置先の階層のうち、一方が相対的に高位階層であり他方が相対的に低位階層である。
【００７８】
再配置速度決定テーブル３０７は、高位階層負荷のカラム１１０１、低位階層負荷のカラム１１０２、ページＩ／Ｏ回数のカラム１１０３、再配置速度番号のカラム１１０４を有する。再配置速度番号のカラム１１０４が格納する情報は、他の図面を参照して上に説明した通りである。
【００７９】
高位階層負荷のカラム１１０１は、高位階層の負荷の複数のレベルを格納し、各フィールドには一つのレベルが格納される。階層の負荷は、例えば、ＩＯＰＳで表される。階層のＩＯＰＳは、ホストＩＯＰＳのみ又はホストＩＯＰＳと再配置ＩＯＰＳの和で表される。ストレージコントローラ１５５は、これらの値を、パリティグループモニタテーブル３０４から取得することができる。閾値より大きい負荷が「高い」レベルに属し、閾値以下の負荷が「低い」レベルに属する。
【００８０】
低位階層負荷のカラム１１０２は、低位階層の負荷の複数のレベルを格納し、各フィールドには一つのレベルが格納される。階層の負荷は、高位階層の負荷と同様に決定され、レベルも高位階層と同様の方法で決定される。ＩＯＰＳを使用する場合、ストレージコントローラ１５５は、これらの値を、パリティグループモニタテーブル３０４の値から取得することができる。閾値より大きい負荷が「高い」レベルに属し、閾値以下の負荷が「低い」レベルに属する。
【００８１】
ページＩ／Ｏ回数のカラム１１０３は、ページＩ／Ｏ回数の複数のレベルを格納し、各フィールドには一つのレベルが格納される。本例においては、ページＩ／Ｏ回数は、「高い」と「低い」の二つレベルに分けられている。閾値より大きいページＩ／Ｏ回数が「高い」レベルに属し、閾値以下のページＩ／Ｏ回数が「低い」レベルに属する。ページＩ／Ｏ回数のレベルの決定は、細粒度モニタテーブル３０３を参照する。
【００８２】
本例は、低位階層から高位階層への再配置（プロモーション）と高位階層から低位階層への再配置（デモーション）の双方に同一のテーブルを適用する。他の例は、それぞれに固有の再配置速度決定テーブルを使用してもよい。本実施形態の再配置速度の決定は、プロモーションに対してのみ実行してもよい。本例は、全ての階層ペアに対して共通の再配置速度決定テーブルを適用するが、他の例は各階層ペアに固有の再配置速度決定テーブルを適用してもよい。
【００８３】
本例において、ストレージコントローラ１５５は、再配置の二つの階層の負荷と再配置されるページのＩ／Ｏ回数に基づいて、再配置速度を決定するが、ストレージコントローラ１５５は、これらの一部の値、例えば、再配置の階層の双方又は一方の負荷のみに基づいて再配置速度を決定してもよい。ストレージコントローラ１５５は、これらと異なる値、例えば、ＣＰＵ負荷やパスの負荷を再配置速度の決定において参照してもよい。
【００８４】
図１２は、ホストＲＥＡＤプログラム４０１の処理例（１）を示すフローチャートである。ホストＲＥＡＤプログラム４０１は、ホスト１００から仮想アドレスを指定するリードコマンドを受信し、本フローチャートに従って動作する。
【００８５】
本例において、ホストＲＥＡＤプログラム４０１は、ホスト１００からリードコマンドを受信すると、その指定アドレスのデータがキャッシュメモリ１４４に格納されているか、キャッシュ管理情報（不図示）を参照して判定する（Ｓ１０１）。指定データがキャッシュメモリ１４４に格納されている場合（Ｓ１０１：ＹＥＳ）、ホストＲＥＡＤプログラム４０１は、キャッシュメモリ１４４上の指定されたデータをホスト１００に転送する（Ｓ１０５）。
【００８６】
指定データがキャッシュメモリ１４４に格納されていない場合（Ｓ１０１：ＮＯ）、ホストＲＥＡＤプログラム４０１は、指定されている仮想アドレスを、仮想論理変換テーブル３０１、論理物理変換テーブル３０２を参照して、物理アドレスに変換する（Ｓ１０２）。物理アドレスは、物理記憶ドライブ及びその物理記憶ドライブにおける記憶領域を指定するアドレスである。
【００８７】
具体的には、ホストＲＥＡＤプログラム４０１は、仮想論理変換テーブル３０１を参照して、指定されている仮想アドレスのデータを格納するパリティグループを特定し、さらに、その仮想アドレスに対応する論理アドレスを算出する。ホストＲＥＡＤプログラム４０１は、論理物理変換テーブル３０２を参照して、論理アドレスが示す物理記憶ドライブ番号及びそのどれライブにおけるアドレスを算出する。
【００８８】
ホストＲＥＡＤプログラム４０１は、算出した物理アドレスのデータを物理ドライブから読み出し、キャッシュメモリ１４４へデータを転送する（Ｓ１０３）。例えば、ホストＲＥＡＤプログラム４０１は、ドライブインタフェース１４９に物理アドレスを指定して、リードデータのキャッシュメモリ１４４への転送を指示する。
【００８９】
ホストＲＥＡＤプログラム４０１は、読みだしたページのカウント中のＩ／Ｏ回数（ホストＩ／Ｏ回数）の値と、当該ページが属するパリティグループのカウント中のＩ／Ｏ回数（ホストＩ／Ｏ回数）の値とを更新する（Ｓ１０４）。上述のように、本例は、リード及びライトの双方のアクセスにおいて、Ｉ／Ｏ回数をカウントする。監視期間満了時のこれらの値が、再粒度モニタテーブル３０３やパリティグループモニタテーブル３０４に格納される。
【００９０】
ホストＲＥＡＤプログラム４０１は、キャッシュメモリ１４４上のデータを、ホスト１００に転送する（Ｓ１０５）。ホストＲＥＡＤプログラム４０１は、ホストインタフェース１４２を利用して、キャッシュメモリ１４４上のデータをホスト１００に転送する。
【００９１】
図１３は、ホストＷＲＩＴＥプログラム４０２の処理例（１）を示すフローチャートである。ホストＷＲＩＴＥプログラム４０２は、ホスト１００からのライトコマンド及びライトデータの受信から、ライトデータのキャッシュメモリ１４４への転送までを担当する。ホストＷＲＩＴＥプログラム４０２は、ホスト１００から仮想アドレスを指定するライトコマンドをユーザデータ（ライトデータ）と共に受信し、本フローチャートに従って動作する。
【００９２】
ホストＷＲＩＴＥプログラム４０２は、受信したライトコマンドを参照して、指定仮想アドレス領域を取得し、仮想論理変換テーブル３０１を参照して、その仮想アドレス領域に対してページ（実ページ）が割り当てられているか否か判定する（Ｓ２０１）。仮想論理変換テーブル３０１に当該アドレスのエントリが登録されていない場合、その仮想アドレス領域に対してページが割り当てられていない。
【００９３】
指定仮想アドレス領域にページが未割り当ての場合（Ｓ２０１：ＹＥＳ）、ホストＷＲＩＴＥプログラム４０２は、未使用のページを当該仮想アドレス領域に割り当て、キャッシュ管理テーブル（不図示）及び仮想論理変換テーブル３０１を更新する（Ｓ２０２）。例えば、Ｔｉｅｒ１のページが割り当てられる。
【００９４】
指定仮想アドレス領域にページが割り当て済みの場合（Ｓ２０１：ＮＯ）又は未使用のページを当該仮想アドレス領域に割り当てた後、ホストＷＲＩＴＥプログラム４０２は、キャッシュメモリ１４４にライトデータを転送する（Ｓ２０３）。その後、ホストＷＲＩＴＥプログラム４０２は、ホスト１００へライトの完了を応答する（Ｓ２０４）。
【００９５】
図１４は、ドライブＷＲＩＴＥプログラム４０３の処理例（１）を示すフローチャートである。ドライブＷＲＩＴＥプログラム４０３は、キャッシュメモリ１４４上のライトデータの物理記憶ドライブへの転送（物理記憶ドライブへの書き込み）を担当する。図１４に示すように、ドライブＷＲＩＴＥプログラム４０３は、キャッシュメモリ１４４上に物理記憶ドライブへ未転送のデータが存在しているかキャッシュ管理テーブル（不図示）を参照して判定する（Ｓ３０１）。
【００９６】
未転送データが存在してない場合（Ｓ３０１：ＮＯ）、ドライブＷＲＩＴＥプログラム４０３はこのフローを終了する。未転送データが存在している場合（Ｓ３０１：ＹＥＳ）、ドライブＷＲＩＴＥプログラム４０３は、ライトコマンド指定する仮想アドレスを、仮想論理変換テーブル３０１及び論理物理変換テーブル３０２を参照して、ページの物理アドレスに変換する（Ｓ３０２）。
【００９７】
その後、ドライブＷＲＩＴＥプログラム４０３は、キャッシュメモリ１４４上のデータを、ドライブインタフェース１４９を利用して物理ドライブに転送する（Ｓ３０３）。ドライブインタフェース１４９は、上記物理アドレスへのライトコマンドと共にキャッシュメモリ１４４のライトデータを物理記憶ドライブに送信する。
【００９８】
ドライブＷＲＩＴＥプログラム４０３は、物理記憶ドライブへのライトデータの転送後に、ページのカウント中のＩ／Ｏ回数の値と、当該ページが属するパリティグループのカウント中のＩ／Ｏ回数の値とを更新する（Ｓ３０４）。上述のように、本例は、リードアクセス及びライトアクセスの合計をホストのＩ／Ｏ回数としてカウントし、監視期間満了時の値を再粒度モニタテーブル３０３やパリティグループモニタテーブル３０４に格納する。
【００９９】
図１５は、ページのマイグレーションを説明するための模式図である。マイグレーションは、再配置の一つのデータ移動方法である。プロモーションの再配置は、ページデータを上位階層へ移動し、デモーションはページデータを下位階層へ移動する。図１５は、デモーションを示していない。
【０１００】
マイグレーションは、ページのデータを現在の階層から他の階層の空きページに移行する。マイグレーションは、他の階層のページへの書き込みの後、元ページのデータを初期化する。多くの場合、ページデータのマイグレーションは、他のページデータの反対方向のマイグレーションを伴う。これにより、マイグレーション先階層の必要な空き容量が維持される。
【０１０１】
マイグレーションは、再配置ターゲットのページデータを、再配置元の物理記憶ドライブからキャッシュメモリ１４４に読み出し、さらに、再配置先ページの物理記憶ドライブに格納する。図１５の例は、Ｔｉｅｒ２の物理記憶ドライブ１５０３のページ１５１３のデータをキャッシュメモリ１４４に読み出し、再配置先ページのＴｉｅｒ１の物理記憶ドライブ１５０１のページ１５１１に格納する。また、Ｔｉｅｒ２の物理記憶ドライブ１５０４のページ１５１４のデータをキャッシュメモリ１４４に読み出し、再配置先ページのＴｉｅｒ１の物理記憶ドライブ１５０２のページ１５１２に格納する。
【０１０２】
ストレージコントローラ１５５は、ページデータを再配置した後に、仮想論理変換テーブル３０１における当該ページの情報を更新する。具体的には、ストレージコントローラ１５５は、仮想論理変換テーブル３０１において、当該ページデータの仮想ページのアドレス（仮想アドレス）からの変換先の論理アドレスを、再配置先ページ（実ページ）の論理アドレスに書き換える。
【０１０３】
図１６は、再配置プログラム４０５の処理例を示すフローチャートである。このフローは、一つの再配置ジョブのフローである。再配置プログラム４０５は、後述する図１７又は図１９のフローにおいて決定された再配置速度において、ページ再配置を実行する。図１０Ａの再配置速度管理テーブル３０６の例において、再配置プログラム４０５は、選択された再配置速度番号の、最大実行ジョブ数内のジョブ数、スリープ時間、そしてジョブ優先度において再配置を実行する。
【０１０４】
再配置プログラム４０５は、再配置ジョブ実行管理テーブル３０５を参照して、適用すべき再配置速度番号を知ることができ、再配置速度管理テーブル３０６を参照して、その再配置速度番号の定義内容（パラメータ値）を知ることができる。
【０１０５】
再配置プログラム４０５は、選択したページのデータを、他の階層の空きページに再配置する。以下で説明する再配置方式は、図１５を参照して説明したマイグレーションである。後述するように、再配置プログラム４０５は、マイグレーションと異なる再配置方式を使用することができる。再配置プログラム４０５は、図１６のフローを所定のイベント、例えば規定時間の経過、に応答して実行する。
【０１０６】
図１６のフローにおいて、再配置プログラム４０５は、再配置すべきページ（のデータ）が存在するか判定する（Ｓ４０１）。再配置すべきページが存在しない場合（Ｓ４０１：ＮＯ）、再配置プログラム４０５はこのフローを終了する。再配置すべきページが存在する場合（Ｓ４０１：ＹＥＳ）、再配置プログラム４０５は、再配置を実行するページを選択する（Ｓ４０２）。
【０１０７】
再配置プログラム４０５は、ページデータを再配置するか否かの判定方法において公知の技術を利用することができ、本実施形態において詳細な説明を省略する。例えば、再配置プログラム４０５は、ページのＩＯＰＳから当該ページデータの再配置の有無を決定する。再配置プログラム４０５は、ページのＩＯＰＳを、細粒度モニタテーブル３０３から知ることができる。
【０１０８】
例えば、各階層に対してＩＰＯＳ（ホストＩＯＰＳ）のレンジが対応づけられており、再配置プログラム４０５は、ページのＩＯＰＳと各階層のＩＯＰＳのレンジを比較することで、当該ページのデータが属するべき階層を決定することができる。ページのＩＯＰＳが現在階層のレンジ内に含まれない場合、再配置プログラム４０５は、当該ページデータを、そのＩＯＰＳが含まれるレンジの階層に再配置することを決定する。再配置プログラム４０５は、階層内の使用容量が規定量未満である場合には、デモーションを行わなくともよい。
【０１０９】
他の例において、再配置プログラム４０５は、各ページの順位をＩＯＰＳに従って決定し、各順位に応じた所属階層を決定することができる。例えば、３階層において、上位所定数のページのデータは最上位階層に格納され、次の上位所定数のページのデータは中位階層に格納され、他のページのデータは下位階層に格納される。
【０１１０】
ステップＳ４０２において、再配置プログラム４０５は、規定された方法、例えば、ＩＯＰＳの大きい順に再配置を実行するページを選択する。例えば、再配置プログラム４０５は、再配置すべきページから、最も大きいＩＯＰＳ（ホストＩＯＰＳ）のページを選択する。本例は一つのページを選択するが、複数のページを選択してもよい。
【０１１１】
次に、再配置プログラム４０５は、選択したページデータの再配置先Ｔｉｅｒを決定する（Ｓ４０３）。再配置先Ｔｉｅｒの決定方法は上述の通りである。次に、再配置プログラム４０５は、再配置先Ｔｉｅｒにおいて空きページを確保する（Ｓ４０４）。再配置プログラム４０５は、仮想論理変換テーブル３０１を参照して、再配置先Ｔｉｅｒの領域からパリティグループが分散するように空きページを取得する。
【０１１２】
再配置プログラム４０５は、論理物理変換テーブル３０２を参照して再配置対象ページの物理アドレスを決定し、その物理アドレスの領域からキャッシュメモリ１４４にデータを転送する（Ｓ４０５）。物理記憶ドライブからキャッシュメモリ１４４の転送方法はホストＲＥＡＤ処理（１）で説明した通りである。
【０１１３】
再配置プログラム４０５は、再配置先ページの論理アドレスから論理物理変換テーブル３０２を参照して再配置先ページの物理アドレスを算出し、キャッシュメモリ１４４上のデータを上記物理アドレスに転送する（書き込む）（Ｓ４０６）。キャッシュメモリ１４４上のデータの物理記憶ドライブへの格納は、ドライブＷＲＩＴＥ処理（１）で説明した通りである。
【０１１４】
再配置プログラム４０５は、再配置を行ったページデータの情報を、仮想論理変換テーブル３０１において更新する（Ｓ４０７）。具体的には、再配置プログラム４０５は、再配置したページのエントリにおいて、仮想アドレスの変換先論理アドレスを、再配置元の論理アドレスから再配置先ページの論理アドレスに切り替える。
【０１１５】
さらに、再配置プログラム４０５は、ページのカウント中のＩ／Ｏ回数の値、再配置元ページのパリティグループのカウント中のＩ／Ｏ回数の値及び再配置回数（再配置元）の値（現在監視期間における再配置回数（再配置元）の値）、並びに、再配置先ページのパリティグループのカウント中のＩ／Ｏ回数の値及び再配置回数（再配置先）の値（現在監視期間における再配置回数（再配置先）の値）を、更新する（Ｓ４０８）。ページの再配置は、ページのＩ／Ｏ回数を増加させ、再配置元パリティグループ及び再配置先パリティグループのそれぞれのＩ／Ｏ回数、再配置回数のそれぞれを増加させる。
【０１１６】
再配置プログラム４０５は、再配置実行後に、規定時間（スリープ時間）、次の再配置実行まで待機する（Ｓ４０９）。再配置プログラム４０５は、予め決められている再配置速度（図１７を参照）に従って、スリープ時間を決定する。スリープ時間は、再配置速度管理テーブル３０６に定義されている。既定のスリープ時間経過後に、再配置プログラム４０５は、ステップＳ４０１に戻る。
【０１１７】
以下において、再配置速度決定プログラム４０６による再配置速度の決定を説明する。異なる再配置速度決定方法例を説明するが、再配置速度決定プログラム４０６は、これらと異なる方法により再配置速度を決定してもよい。
【０１１８】
図１７は、再配置速度決定プログラム４０６による、簡易方式の再配置速度決定処理を示すフローチャートである。本フローにおいて、再配置速度決定プログラム４０６は、再配置速度決定テーブル３０７を参照して、再配置速度を決定する。
【０１１９】
図１７のフローにおいて、再配置速度決定プログラム４０６は、前回の再配置速度決定例えば、次に行う再配置の階層間の前回の再配置速度の決定から規定時間経過したか判定する（Ｓ５０１）。規定時間経過していない場合（Ｓ５０１：ＮＯ）、再配置速度決定プログラム４０６は、このフローを終了する。規定時間経過している場合（Ｓ５０１：ＹＥＳ）、再配置速度決定プログラム４０６は、次のステップＳ５０２に進む。他の例において、再配置速度決定プログラム４０６は、規定ページ数（１又は複数ページ）の再配置毎に再配置速度を決定してもよい。
【０１２０】
ステップＳ５０２において、再配置速度決定プログラム４０６は、次に実行する再配置の再配置元階層及び再配置先階層のそれぞれの負荷状態を判定する。再配置速度決定プログラム４０６は、パリティグループモニタテーブル３０４を参照して、再配置元階層及び再配置先階層のそれぞれのＩＯＰＳを算出する。このＩＯＰＳは、階層に含まれる全てのパリティグループのホストＩ／Ｏと再配置によるＩ／Ｏの和（Ｉ／Ｏ回数のカラム８０３の値）を監視期間で割った値である。
【０１２１】
さらに、再配置速度決定プログラム４０６は、Ｔｉｅｒ性能管理テーブル３０９を参照し、算出したＩＯＰＳから各階層の負荷状態を決定する。Ｔｉｅｒ性能管理テーブル３０９は階層のそれぞれに用意される。
【０１２２】
図１８は、一つの階層のＴｉｅｒ性能管理テーブル３０９の構成例及びその作成方法を示している。Ｔｉｅｒ性能管理テーブル３０９は、予めストレージシステム１４０に設定されている。本例において、Ｔｉｅｒ性能管理テーブル３０９は、当該階層のＩＯＰＳ、レスポンス時間（レスポンス性能）そして負荷状態を関連付ける。
【０１２３】
本例において、Ｔｉｅｒ性能管理テーブル３０９は、ＩＯＰＳのカラム１８０１、レスポンス時間のカラム１８０２、負荷状態のカラム１８０３を有する。図１８のグラフに示すように、Ｔｉｅｒ性能管理テーブル３０９は、レスポンスカーブ（ＩＯＰＳ対レスポンス時間）に応じて作成される。Ｔｉｅｒ性能管理テーブル３０９は、レスポンスカーブから抽出された特徴点を保持している。
【０１２４】
ＩＯＰＳ／レスポンス時間の性能閾値が予め決定されており、その閾値を基準に階層の負荷状態が定義されている。ＩＯＰＳの値とレスポンス時間の値は一対一の関係である。したがって、モニタされているＩＯＰＳ又はレスポンス時間が閾値を超えると、その階層の負荷状態は高負荷であり、閾値以下であれば低負荷である。本例は階層のＩ／Ｏ回数（ＩＯＰＳ）をモニタするため、再配置速度決定プログラム４０６は、ＩＯＰＳの値から階層の負荷状態を決定する。ストレージコントローラ１５５は、ＩＯＰＳとレスポンス時間をモニタし、それらの値からレスポンスカーブを作成し、性能閾値を決定してもよい。
【０１２５】
再配置速度決定プログラム４０６は、次に再配置を行うページ（現在ページ）のＩ／Ｏ回数を細粒度モニタテーブル３０３から取得し、既定の閾値と比較してそのＩ／Ｏ回数が高いか低いかを判定する。再配置速度決定プログラム４０６は、判定したページのＩ／Ｏ回数の状態及び階層の負荷状態に応じて、再配置速度決定テーブル３０７から最適な再配置速度を選択する（Ｓ５０３）。
【０１２６】
次に、再配置速度決定プログラム４０６は、選択した再配置速度を当該プールの再配置元階層と再配置先階層との間の再配置に対して設定する（Ｓ５０４）。具体的には、再配置速度決定プログラム４０６は、再配置ジョブ実行管理テーブル３０５における当該エントリの再配置速度番号の値を更新する。
【０１２７】
再配置速度決定プログラム４０６は、新たに設定した再配置速度の規定最大ジョブ数が現在の起動ジョブ数と異なるか否か判定する（Ｓ５０５）。再配置速度決定プログラム４０６は、再配置ジョブ実行管理テーブル３０５を参照して、当該プールの当該階層間の再配置における現在の起動ジョブ数を知ることができる。
【０１２８】
再配置速度の規定最大値ジョブ数が現在の起動ジョブ数と異なる場合（Ｓ５０５：ＹＥＳ）、再配置速度決定プログラム４０６は、規定ジョブ数と一致するようにジョブを起動又は停止する（Ｓ５０６）。
【０１２９】
上記処理例は、現在再配置を行っている階層間の再配置速度を決定する。他の例において、再配置速度決定プログラム４０６は、全ての階層間の再配置速度を決定してもよい。例えば、再配置速度決定プログラム４０６は、各階層間の前回又は次回再配置におけるページのＩ／Ｏ回数に基づいて再配置速度を決定することができる。
【０１３０】
図１９は、再配置速度決定プログラム４０６により他の処理例を示すフローチャートである。この再配置速度決定方法は、図１７及び１８を参照して説明した方法と比較して、より複雑で状況に詳細に沿った方法である。
【０１３１】
図１９のフローチャートにおいて、ステップＳ６０２〜ステップＳ６０４のみ、その内容が、図１７のフローチャートと異なる。従って、以下において、これらのステップについて説明を行う。
【０１３２】
再配置速度決定プログラム４０６は、既定の数式に従って再配置対象ページの移動効果Ｘを算出する（Ｓ６０２）。移動効果Ｘは、再配置によるその後のアクセス性能の向上の度合いを示す。再配置においてプロモーションと共にデモーションが実行される場合、移動効果Ｘの算出は、例えば、下式に従う。
X
=PROMOTE-DEMOTE
={(P_SRC_RESP-P_TGT_RESP)*P_PAGE_IOPS}*PAGE_NUM-{(D_SRC_RESP-D_TGT_RESP)*D_PAGE_IOPS}*PAGE_NUM
【０１３３】
再配置がプロモーションのみ実行する場合又はデモーションの影響を無視する設計において、再配置速度決定プログラム４０６は、例えば、下式に従って移動効果Ｘを算出する。
X
=PROMOTE
=(P_SRC_RESP-P_TGT_RESP)*P_IOPS*PAGE_NUM
【０１３４】
上記二つの数式において、「PROMOTE」はプロモーションによる性能向上効果、「DEMOTE」はデモーションによる性能低下の影響、「SRC_RESP」は再配置対象ページが所属する階層（再配置元階層）のレスポンス時間、「TGT_RESP」は再配置先ページが所属する階層（再配置先階層）のレスポンス時間、「PAGE_IOPS」は再配置対象ページのＩＯＰＳである。「P_」はプロモーションを意味し、「D_」はデモーションを意味する。「PAGE_NUM」は単位時間当たりに再配置可能なページ数を意味する。選択した再配置速度における再配置可能なページ数は、例えば、当該再配置速度における最大ジョブ数とスリープ時間を使用して算出することができる。再配置がデモーションのみ実行する場合、「PROMOTE-DEMOTE」の数式において、「PROMOTE」を０とすればよい。
【０１３５】
再配置速度決定プログラム４０６は、パリティグループモニタテーブル３０４から再配置元階層と再配置先階層のＩＯＰＳの情報を取得する。このＩＯＰＳは、階層の全てのパリティグループのＩ／Ｏ回数カラム８０３の値の和を、監視期間で割った値である。このＩ／Ｏ回数は、ホストＩ／Ｏと再配置によるＩ／Ｏの和である。
【０１３６】
再配置速度決定プログラム４０６は、各階層のＴｉｅｒ性能管理テーブル３０９を参照して、再配置先階層及び再配置元階層の取得したＩＯＰＳのそれぞれに対するレスポンス時間を取得する。再配置速度決定プログラム４０６は、ページのＩＯＰＳを、細粒度モニタテーブル３０１から取得する。
【０１３７】
次に、再配置速度決定プログラム４０６は、各再配置速度の再配置コストＹを算出する（Ｓ６０３）。再配置コストＹは、階層間における再配置によるレスポンス性能低下の影響を表す。各再配置速度における再配置による再配置コストＹの算出を、図２０のグラフ及び図２１のフローチャートを参照して説明する。
【０１３８】
図２１のフローチャートに示すように、再配置速度決定プログラム４０６は、高位階層について、再配置負荷差し引き性能を算出し（Ｓ７０１）、再配置中予測性能を算出し（Ｓ７０２）、それらの値から再配置コストＹを算出する（Ｓ７０３）。再配置速度決定プログラム４０６は、再配置コストＹを取得するため、低位階層の再配置コス又は双方の階層の再配置コスト平均値を算出してもよい。
【０１３９】
図２０のグラフは、高位階層のレスポンスカーブを示し、Ｘ軸はＩＯＰＳ、Ｙ軸はレスポンス時間（ホストＩ／Ｏレスポンス性能）である。再配置速度決定プログラム４０６は、Ｔｉｅｒ性能管理テーブル３０９を参照して、ＩＯＰＳの値からこのレスポンスカーブの近似値を得ることができる。
【０１４０】
図２０のグラフにおいて、点２００２は、階層の現在のレスポンス性能の点を示す。現性能のＩＯＰＳは、ホストからのコマンドによるホストＩＯＰＳと再配置によるＩＯＰＳ（Ｙ１）の和である。
【０１４１】
点２００１は再配置負荷差し引き性能の点を示す。再配置負荷差し引き性能は、現性能２００２のＩＯＰＳから再配置によるＩＯＰＳ（Ｙ１）を差し引いたＩＯＰＳでのレスポンス性能である。再配置負荷差し引き性能２００１のＩＯＰＳはホストＩＯＰＳのみであり、再配置を実行しなかった場合のレスポンス性能（レスポンス時間）を示す。
【０１４２】
点２００３は、再配置中予測性能の点を示す。これは、再配置速度選択後に、当該再配置速度で行う再配置における、予測レスポンス性能を示す点であり。このＩＯＰＳは、上記ホストＩＯＰＳと、新たに設定される再配置速度における再配置による予測ＩＯＰＳ（Ｙ２）の和である。再配置コストＹは、再配置負荷差し引き性能２００１と再配置中予測性能２００３との間におけるレスポンス時間の差に、再配置負荷差し引き性能２００１のＩＯＰＳを掛けた値である。  
【０１４３】
再配置速度決定プログラム４０６は、パリティグループモニタテーブル３０４の値から、再配置負荷差し引き性能２００１におけるＩＯＰＳを算出する。具体的には、パリティグループモニタテーブル３０４のＩ／Ｏ回数カラム８０３の値から、当該階層に対する前回監視期間におけるホストコマンド及び再配置によるＩ／Ｏ回数の値を取得できる。
【０１４４】
さらに、再配置回数（再配置元）のカラム８０４及び再配置回数（再配置先）のカラム８０５の値から、当該階層における再配置によるＩ／Ｏ回数を取得することができる。上記Ｉ／Ｏ回数から上記再配置によるＩ／Ｏ回数を差し引いた値が、ホストＩ／Ｏ回数であり、そのホストＩ／Ｏ回数の値を監視期間で割った値が、再配置負荷差し引き性能２００１におけるＩＯＰＳである。
【０１４５】
さらに、再配置速度決定プログラム４０６は、Ｔｉｅｒ性能管理テーブル３０９を参照して、上記ＩＯＰＳに対応するレスポンス時間を算出する。この値が、再配置負荷差し引き性能２００１におけるレスポンス時間である。
【０１４６】
次に、再配置速度決定プログラム４０６は、選択した再配置速度における再配置による予測追加ＩＯＰＳ（Ｙ２）を算出し、それを再配置負荷差し引き性能２００１におけるＩＯＰＳに加算する。再配置速度決定プログラム４０６は、Ｔｉｅｒ性能管理テーブル３０９を参照して、その合計ＩＯＰＳに対応するに対応するレスポンス時間を算出する。この値が再配置中予測性能２００３のレスポンス時間であり、その値から再配置負荷差し引き性能２００１のレスポンス時間を差し引いた値が、再配置コストＹである。
【０１４７】
再配置速度決定プログラム４０６は、選択した再配置速度における再配置による予測追加ＩＯＰＳ（Ｙ２）を、例えば、当該再配置速度における最大ジョブ数とスリープ時間を使用して算出することができる。再配置速度決定プログラム４０６は、各階層ペアの１ジョブ当たりのＩＯＰＳを保持している。これらの値は予め設定されている。
【０１４８】
選択した再配置速度における再配置のＩＯＰＳは、（最大ジョブ数＊１ジョブＩＯＰＳ＊（１／（１＋スリープ時間）））で表される。例えば、１ジョブＩＯＰＳが１０ＩＯＰＳ、最大ジョブ数が２、スリープ時間が１００ｍｓであれば、ＩＯＰＳは、２＊１０ＩＯＰＳ＊（１ｓ／（１ｓ＋１００ｍｓ））である。
【０１４９】
最後に、再配置速度決定プログラム４０６は、ステップＳ６０２で算出した移動効果Ｘから、ステップＳ６０３で算出した再配置コストＹを差し引いた値（Ｘ−Ｙ）を求め、その値が最も大きい再配置速度を選択する（Ｓ６０４）。
【０１５０】
再配置速度決定プログラム４０６は、上記例と異なる方法で、再配置コストＹを算出することができる。例えば、再配置速度決定プログラム４０６は、次の数１及び数２に従って、再配置コストＹを算出する。この数式は、待ち行列モデルを使って、階層の数が２である場合の、高位階層Ｍのへの影響を計算する式である。
【数１】
0005981563.tif 000002
【数２】
0005981563.tif 000003
【０１５１】
上記数式において、ｒｈｏｓｔ／ＴｉｅｒＭは高位階層ＴｉｅｒＭに対するホストＩＯ（ＩＯＰＳ）、ｍｈｏｓｔ／ＴｉｅｒＭはＴｉｅｒＭの物理ドライブ１台当たりの処理能力（ＩＯＰＳ）（再配置のみ実行した場合）、ｍｒｅｌ／ＴｉｅｒＭはＴｉｅｒＭの物理ドライブ１台当たりの処理能力（ＩＯＰＳ）（ホストＩＯのみ発行した場合）、ｄＴｉｅｒＭはＴｉｅｒＭの物理ドライブ台数、Ｎはジョブ数である。入力は、Ｎ＝ジョブ数である。ｍｉｎ（）は引数の中の最小値を選択する関数であり、本式では４つの値の中で最小の値を返す。
【０１５２】
次に、再配置方式決定プログラム４０８による再配置方式（再配置におけるデータ移動方法）の決定を説明する。以下においては、プロモーションの再配置における再配置方式の決定を説明する。同様の手法がデモーションの再配置にも適用することができる。再配置処理プログラム４０５は、再配置方式決定プログラム４０８が決定した再配置方式により再配置を実行する。再配置方式決定プログラム４０８は、階層の負荷（ＩＯＰＳ）に応じて、複数の再配置方式から適切な再配置方式を選択する。
【０１５３】
本例においては、マイグレーション方式、スワップ方式、コピー方式から適切な再配置方式が選択される。選択可能は再配置方式の数及び種類は設計に依存する。例えば、マイグレーション方式とスワップ方式又はマイグレーション方式とコピー方式の２再配置方式から選択可能であってもよい。
【０１５４】
図２２は、再配置方式決定プログラム４０８による再配置方式決定処理の一例を示すフローチャートである。再配置方式決定プログラム４０８は、それらの間で再配置を行う階層のそれぞれの負荷に応じて再配置方式を選択する。これにより、再配置によるホストＩ／Ｏ性能への影響を低減する。
【０１５５】
図２２のフローチャートにおいて、再配置方式決定プログラム４０８は、前回の再配置方式決定処理から規定時間経過したか否かを判定する（Ｓ８０１）。例えば、同一階層間の前回再配置方式の決定からの経過時間を参照する。規定時間経過してない場合（Ｓ８０１：ＮＯ）、再配置方式決定プログラム４０８はこのフローを終了する。再配置方式決定プログラム４０８ページの再配置毎に再配置方式を決定してもよい。
【０１５６】
規定時間経過している場合（Ｓ８０１：ＹＥＳ）、再配置方式決定プログラム４０８は高位階層が高負荷であるか否か判定する（Ｓ８０２）。負荷判定は、図１７のフローチャートを参照して説明したように、パリティグループモニタテーブル３０４とＴｉｅｒ性能管理テーブル３０９を参照して判定する。
【０１５７】
高位階層が高負荷である場合（Ｓ８０２：ＹＥＳ）、再配置方式決定プログラム４０８は、当該プールの再配置ジョブ実行管理テーブル３０５において、対応するエントリの再配置方式のカラム９０４の値を「スワップ」に更新する（Ｓ８０３）。スワップ方式は再配置対象ページのデータ消去が不要であり、物理記憶ドライブの負荷を低減することができる。
【０１５８】
高位階層が低負荷であり（Ｓ８０２：ＮＯ）、かつ、低位階層が高負荷である場合（Ｓ８０４：ＹＥＳ）、再配置方式決定プログラム４０８は、当該プールの再配置ジョブ実行管理テーブル３０５において、対応するエントリの再配置方式のカラム９０４の値を「コピー」に更新する（Ｓ８０５）。コピーも再配置対象のデータ消去が不要であり、物理記憶ドライブの負荷を低減することができる。二つの階層においてデータが格納されているため、必要な容量が他の方式よりも大きい。
【０１５９】
高位階層が低負荷であり（Ｓ８０２：ＮＯ）、かつ、低位階層が低負荷である場合（Ｓ８０４：ＮＯ）、再配置方式決定プログラム４０８は、当該プールの再配置ジョブ実行管理テーブル３０５において、対応するエントリの再配置方式のカラム９０４の値を「マイグレーション」に更新する（Ｓ８０６）。これにより、必要なデータのみを再配置することができる。
【０１６０】
マイグレーションによる再配置においては、一般に、低位階層から上位階層へのデータ移動と上位階層から低位階層へのデータ移動が発生する。スワップは、マイグレーションにおけるページの初期化（データ消去）が不要であり、物理記憶ドライブの負荷を小さくすることができる。
【０１６１】
後述するように、コピーは、上位階層をキャッシュ領域として利用することができる。コピーはプロモーション速度を低下させることなく、上位階層から低位階層へのデータ移動による負荷を避けることができ、低位階層の物理記憶ドライブの負荷を低減することができる。コピーは、データのための必要容量がスワップよりも多いため、容量の点においては、他の方式が好ましい。
【０１６２】
図２３は、ページデータのスワップ方式による再配置の概要を説明する図である。本例は、Ｔｉｅｒ１とＴｉｅｒ２との間のページデータ再配置を示す。本例において、ストレージコントローラ１５５は、Ｔｉｅｒ１の再配置対象ページ２３１１のデータを、キャッシュメモリ１４４に読み出す。さらに、Ｔｉｅｒ２の再配置対象ページ２３１３のデータを、キャッシュメモリ１４４に読み出す。
【０１６３】
次に、ストレージコントローラ１５５は、キャッシュメモリ１４４上のＴｉｅｒ２の再配置対象ページのデータをＴｉｅｒ１の物理記憶ドライブ２３０１の再配置対象ページ２３１１のアドレスに格納する。さらに、キャッシュメモリ１４４上のＴｉｅｒ１の再配置対象ページのデータをＴｉｅｒ２の物理記憶ドライブ２３０３の再配置対象ページ２３１３のアドレスに格納する。ページ２３１２、２３１４についても同様である。
【０１６４】
次に、図２４のフローチャートを参照して、スワップ方式の再配置のフロー例を説明する。ステップＳ９０１〜Ｓ９０３は、図１６のマイグレーションのフローチャートにおけるステップＳ４０１〜Ｓ４０３と同様である。
【０１６５】
ステップＳ９０４において、再配置プログラム４０５は、再配置対象ページＡの再配置先階層から、再配置対象ページＢを選択する。再配置プログラム４０５は、例えば、ページＩＯＰＳに基づいて再配置対象ページを選択することができる。例えば、再配置対象ページＡのプロモーションにおいては、最もＩＯＰＳの小さいページが選択される。
【０１６６】
次に、再配置プログラム４０５は、再配置対象ページＡ、Ｂの物理アドレスから、それぞれキャッシュメモリ１４４にデータを転送する（Ｓ９０５）。再配置プログラム４０５は、再配置対象ページＡのキャッシュメモリ１４４上のデータを、再配置対象ページＢの物理アドレスに転送し、再配置対象ページＢのキャッシュメモリ１４４上のデータを、再配置対象ページＡの物理アドレスに転送する（Ｓ９０６）。以上により、ページＡ及びＢのデータが、それぞれ、反対のページの物理アドレスに再配置される。
【０１６７】
次に、再配置プログラム４０５は、仮想論理変換テーブル３０１において、再配置したページＡ及びページＢのデータの仮想アドレスの変換先論理アドレスを、再配置先ページに切り替える（Ｓ９０８）。具体的には、再配置プログラム４０５は、再配置したページのそれぞれのエントリにおいて、仮想アドレスの変換先論理アドレスを、再配置元の論理アドレスから再配置先ページの論理アドレスに切り替える。
【０１６８】
再配置プログラム４０５は、ページＡ、Ｂのそれぞれについて、カウント中のページＩ／Ｏ回数の値（リードアクセス及びライトアクセスを含む）、再配置元ページのパリティグループのカウント中のＩ／Ｏ回数の値と再配置回数（再配置元）の値（現在監視期間における再配置回数（再配置元）の値）、再配置先ページのパリティグループのカウント中のＩ／Ｏ回数の値と再配置回数（再配置先）の値（現在監視期間における再配置回数（再配置先）の値）を、更新する（Ｓ９０９）。これは、図１６におけるステップＳ４０８と同様である。
【０１６９】
再配置プログラム４０５は、再配置実行後に、規定時間（スリープ時間）、次の再配置実行まで待機する（Ｓ９１０）。再配置プログラム４０５は、予め決められている再配置速度（図１７を参照）に従って、スリープ時間を決定する。スリープ時間は、再配置速度管理テーブル３０６に定義されている。既定のスリープ時間経過後に、再配置プログラム４０５は、ステップＳ９０１に戻る。
【０１７０】
図２５は、コピー方式による再配置の概要を説明する図である。以下において、コピー先となる物理記憶ドライブの領域をコピーセグメントと呼ぶ。本例においては、コピーセグメントとページの領域サイズは同一である。そのため、ストレージコントローラ１５５は、ページを確保し、コピーセグメントとして使用する。
【０１７１】
図２５の例において、仮想ボリューム２５１１、２５１２には、プール２０１における階層２１１（Ｔｉｅｒ１）と階層２２１（Ｔｉｅｒ２）から実ページが割り当てられている。仮想ボリューム２５１５の仮想ページ２５１２に対して、階層２２１（Ｔｉｅｒ２）の実ページ２５０１が割り当てられている。階層２１１（Ｔｉｅｒ１）のコピーセグメント（実ページ）２５０２はページ２５０１のコピー先（再配置先）であり、仮想ページ２５２１に割り当てられている。
【０１７２】
コピーセグメント２５０２はページ２５０１の再配置先であるので、ストレージコントローラ１５５は、ホスト１００からの仮想ページ２５２１に対するリードコマンド及びライトコマンドに対してコピーセグメント２５０２にアクセスする。ストレージコントローラ１５５は、コピーセグメント２５０２とページ２５０１の不一致を解消する処理を行う。
【０１７３】
本例において、ストレージコントローラ１５５は、新しいコピーセグメントを作成する場合、若しくは所定の期間が経過する場合に、作成済みのコピーセグメントのデータを削除する。後者の例では、ストレージコントローラ１５５は、コピーセグメントへの無アクセス期間が閾値に達する又は監視期間の満了において、コピーセグメントを初期化する。このように、ストレージコントローラ１５５は、上位階層をキャッシュとして利用して、アクセス性能を向上させる。
【０１７４】
図２６は、コピーセグメントを管理する、コピーセグメント管理テーブル３０８の構成例を示している。コピーセグメント管理テーブル３０８は、ページ番号のカラム３３０１、仮想ボリューム番号のカラム３３０２、仮想アドレスのカラム３３０３、コピー有無のカラム３３０４、セグメント状態のカラム３３０５、パリティグループ番号のカラム３３０６、論理アドレスのカラム３３０７を有する。
【０１７５】
各エントリにおいて、仮想ボリューム番号のカラム３３０２は、当該ページが属する仮想ボリュームの番号を格納し、仮想アドレスのカラム３３０３は、仮想ボリュームにおけるページの開始アドレス（仮想アドレス）を格納する。コピー有無のカラム３３０４は、ページのコピーセグメントが存在するか否かを示すデータを格納している。「有」は、当該ページのコピーセグメントが存在することを示し、「無」は存在しないことを示す。
【０１７６】
セグメント状態のカラム３３０５は、コピー元ページ（再配置元ページ）のデータと、コピーセグメント（再配置先ページ）のデータとが一致か不一致かを示すデータを格納する。「クリーン」は一致を示し、「ダーティ」は不一致を示す。パリティグループ番号のカラム３３０６は、当該コピーセグメントが属するパリティグループの識別子を格納し、論理アドレスのカラム３３０７は、当該コピーセグメントの開始論理アドレスの値を格納する。
【０１７７】
次に、図２７のフローチャートを参照して、コピー方式の再配置の例を説明する。以下においては、図１６のマイグレーションのフローチャートと異なる点を主に説明する。ステップＳ１００１〜Ｓ１００３は、図１６のマイグレーションのフローチャートにおけるステップＳ４０１〜Ｓ４０３と同様である。
【０１７８】
ステップＳ１００４において、再配置プログラム４０５は、再配置先の階層において、コピーセグメントを確保する。本例においては、コピーセグメントとページのサイズが一致しているため、このステップ１００４は、ステップＳ４０４と同様である。
【０１７９】
ステップＳ１００５、Ｓ１００６、Ｓ１００７は、それぞれ、ステップＳ４０５、Ｓ４０６、Ｓ４０８と同様である。本フローにおいては、再配置プログラム４０５は、仮想論理変換テーブル３０１において、ページの仮想アドレスの変換先論理アドレスを変更せず、再配置元ページの論理アドレスを維持する。
【０１８０】
再配置プログラム４０５は、ページデータのコピー完了後に、コピーセグメント管理テーブル３０８を更新する（Ｓ１００８）。再配置プログラム４０５は、コピーセグメント管理テーブル３０８において、該当ページのエントリの情報を更新する。
【０１８１】
具体的には、再配置プログラム４０５は、当該エントリにおいて、コピー有無カラム３００４に「有」を設定し、セグメント状態カラム３００５に「クリーン」を設定し、パリティグループ番号カラム３００６にコピー先ページのパリティグループ番号を設定し、論理アドレスカラム３００７にコピー先ページの開始論理アドレスを設定する。ステップＳ１００９は、ステップＳ４０９と同様である。
【０１８２】
次に、図２８のフローチャートを参照して、コピーセグメントを有する仮想ページに対するホストＲＥＡＤ処理（２）の例を説明する。以下においては、図１２を参照して説明したホストＲＥＡＤ処理（１）との相違点を主に説明する。主な相違点は、コピーセグメントの有無の確認と、コピーセグメントがあればコピーセグメントからデータを読み出す点である。
【０１８３】
図２８のフローチャートにおいて、ステップＳ１１０１は、図１２におけるステップＳ１０１と同様である。ステップＳ１１０２において、ホストＲＥＡＤプログラム４０１は、コピーセグメント管理テーブル３０８を参照して、アクセス先の仮想ページに割り当てられているコピーセグメントが存在するか否かを判定する。
【０１８４】
割り当てられているコピーセグメントが存在しない場合（Ｓ１１０２：ＮＯ）、ホストＲＥＡＤプログラム４０１はステップＳ１１０３に進む。ステップＳ１１０３は、ステップＳ１０２と同様である。割り当てられているコピーセグメントが存在する場合（Ｓ１１０２：ＹＥＳ）、ホストＲＥＡＤプログラム４０１は、仮想アドレスをコピーセグメントの物理アドレスに変換する（Ｓ１１０４）。
【０１８５】
具体的には、ホストＲＥＡＤプログラム４０１は、コピーセグメント管理テーブル３０８を参照して、仮想ページに対応するコピーセグメントの論理アドレス（開始アドレス）を特定する。ホストＲＥＡＤプログラム４０１は、論理物理変換テーブル３０２を参照して、コピーセグメントの論理アドレスを物理アドレスに変換する。その後のステップＳ１１０５〜Ｓ１１０７は、図１２におけるステップＳ１０３〜Ｓ１０５と同様である。ステップＳ１１０６は、コピーセグメントとコピーセグメントが属するパリティグループのＩ／Ｏ回数を更新する。
【０１８６】
次に、図２９のフローチャートを参照して、コピーセグメントを有する仮想ページに対するライトコマンドに対応したホストＷＲＩＴＥ処理例（２）を説明する。以下においては、図１３を参照して説明したホストＷＲＩＴＥ処理（１）との相違点を主に説明する。主な相違点は、コピーセグメント管理テーブル３０８においてエントリの「セグメント状態」を「ダーティ」に更新することである。
【０１８７】
図２９のフローチャートにおいて、ステップＳ１２０１〜Ｓ１２０３は、図１３のフローチャートにおけるステップＳ２０１〜Ｓ２０３と同様である。ステップＳ１２０４において、ホストＷＲＩＴＥプログラム４０２は、コピーセグメント管理テーブル３０８において、当該ページエントリのセグメント状態カラム３３０５のデータを、「ダーティ」に更新する。ステップＳ１２０５は、図１３のフローチャートにおけるステップＳ２０４と同様である。
【０１８８】
次に、図３０のフローチャートを参照して、コピーセグメントを有する仮想ページに対するライトコマンドに対応したドライブＷＲＩＴＥ処理例（２）を説明する。以下においては、図１４を参照して説明したドライブＷＲＩＴＥ処理（１）との相違点を主に説明する。主な相違点は、コピーセグメントの有無を確認し、コピーセグメントがあればコピーセグメントにユーザデータを書き込む点である。
【０１８９】
図３０のフローチャートにおいて、ステップＳ１３０１は、図１４のフローチャートにおけるステップＳ３０１と同様である。キャッシュメモリ１４４上に未転送データが存在する場合（Ｓ１３０１：ＹＥＳ）、ドライブＷＲＩＴＥプログラム４０３は、コピーセグメント管理テーブル３０８を参照して、当該データの仮想ページに対応するコピーセグメントが存在するか判定する（Ｓ１３０２）。
【０１９０】
コピーセグメントが存在しない場合（Ｓ１３０２：ＮＯ）、ドライブＷＲＩＴＥプログラム４０３はステップＳ１３０３に進む。ステップＳ１３０３は、図１４のフローチャートにおけるステップＳ３０２と同様である。コピーセグメントが存在する場合（Ｓ１３０２：ＹＥＳ）、ドライブＷＲＩＴＥプログラム４０３は、仮想アドレスをコピーセグメントの物理アドレスに変換する（Ｓ１３０４）。
【０１９１】
具体的には、ドライブＷＲＩＴＥプログラム４０３は、コピーセグメント管理テーブル３０８を参照して、仮想ページに対応するコピーセグメントの論理アドレス（開始アドレス）を特定する。ドライブＷＲＩＴＥプログラム４０３は、論理物理変換テーブル３０２を参照して、コピーセグメントの論理アドレスを物理アドレスに変換する。その後のステップＳ１３０５、Ｓ１３０６は、図１４のフローチャートにおけるステップＳ３０３、Ｓ３０４と同様である。ステップＳ１３０６は、コピーセグメントが属するパリティグループのＩ／Ｏ回数を更新する。
【０１９２】
次に、図３１のフローチャートを参照して、コピーセグメントのダーティ書き戻しの例を説明する。この処理は、コピー元のページデータをコピーセグメントのデータに一致させる。
【０１９３】
ダーティ書き戻しプログラム４０４は、コピーセグメント管理テーブル３０８を参照して、ダーティ状態のコピーセグメントが存在しているか判定する（Ｓ１４０１）。ダーティ状態のコピーセグメントが存在していない場合（Ｓ１４０１：ＮＯ）、ダーティ書き戻しプログラム４０４は、このフローを終了する。
【０１９４】
ダーティ状態のコピーセグメントが存在している場合（Ｓ１４０１：ＹＥＳ）、ダーティ書き戻しプログラム４０４は、コピーセグメント管理テーブル３０８及び論理物理変換テーブル３０２を参照して、ページの仮想アドレスをコピーセグメントの物理アドレスに変換する（Ｓ１４０２）。
【０１９５】
ダーティ書き戻しプログラム４０４は、上記物理アドレスが示す物理記憶ドライブにおける領域から、データをキャッシュメモリ１４４に転送する（Ｓ１４０３）。ダーティ書き戻しプログラム４０４は、キャッシュメモリ１４４上の上記データを、コピー元ページの物理アドレスが示す物理記憶ドライブに転送する（Ｓ１４０４）。ダーティ書き戻しプログラム４０４は、仮想論理変換テーブル３０１及び論理物理変換テーブル３０２を参照して、コピー元ページの物理アドレスを取得することができる。
【０１９６】
コピーセグメントのデータのコピー元ページへの書き戻しが完了した後、ダーティ書き戻しプログラム４０４は、細粒度モニタテーブル３０３とパリティグループモニタテーブル３０４を更新する。
【０１９７】
具体的には、ダーティ書き戻しプログラム４０４は、細粒度モニタテーブル３０３において該当するエントリのＩ／Ｏ回数カラム７０４の値を増加させる。ダーティ書き戻しプログラム４０４は、パリティグループモニタテーブル３０４において、コピーセグメントのパリティグループのエントリと、コピー元ページのパリティグループのエントリのそれぞれにおいて、Ｉ／Ｏ回数カラム８０３の値を増加させる（Ｓ１４０５）。本書き戻しは、コピーセグメントのリード及びコピー元ページへのライトに相当する。
【０１９８】
図３２は、ユーザ（管理者）が再配置方法を設定するためのＧＵＩの一例を示している。ユーザは、入出力デバイス１２４を利用して、再配置方法の選択を行うことができる。本例において、ユーザは、再配置速度及び再配置方式を自動設定するか手動設定するか選択することができる。図３２の画像３２０１においては、再配置速度及び再配置方式が手動設定されることが選択され、さらに、再配置方式としてコピー方式が選択されている。再配置速度及び再配置方式の手動設定は選択できなくともよい。再配置速度及び再配置方式の一方のみが、手動設定と自動設定を選択できる構成でもよい。
【０１９９】
以下において、ページデータの再配置の他の例を説明する。本例は、Ｉ／Ｏ回数（ＩＯＰＳ）が閾値に達しているページを上位階層に再配置（プロモーション）する。以下に説明する例において、再配置はコピーを使用する。
【０２００】
図３３は、再配置速度管理テーブル３０６の他の構成例を示す。再配置速度管理テーブル３０６は、再配置速度番号のカラム３３０１、プロモーション閾値のカラム３３０２、デモーション最大ジョブ数のカラム３３０３、デモーションスリープ時間のカラム３３０４、を有する。
【０２０１】
デモーション最大ジョブ数のカラム３３０２は、ダーティ書き戻し処理の同時実行最大ジョブ数を規定する。デモーションスリープ時間のカラム３３０４は、ダーティ書き戻し処理におけるスリープ時間を規定する。
【０２０２】
図３４は、本例のリード処理のフローチャートである。ステップＳ１５０１は、図２８に示すフローチャートに従う。次のステップＳ１５０２において、ホストＲＥＡＤプログラム４０１は、選択したページのＩ／Ｏ回数がプロモーション閾値よりも大きいか判定する。
【０２０３】
具体的には、ホストＲＥＡＤプログラム４０１は、細粒度モニタテーブル３０３から選択したページのＩ／Ｏ回数を取得し、さらに、当該ページが属する階層からのプロモーションの再配置速度番号を、再配置ジョブ実行管理テーブル３０５から取得する。ホストＲＥＡＤプログラム４０１は、再配置速度管理テーブル３０６から、当該再配置速度番号のプロモーション閾値を取得して、当該ページのＩ／Ｏ回数と比較する。
【０２０４】
Ｉ／Ｏ回数がプロモーション閾値より大きい場合（Ｓ１５０２：ＹＥＳ）、再配置プログラム４０５は当該ページのデータのプロモーションを実行する（Ｓ１５０４）。このステップは、図２７のフローチャートに従う。Ｉ／Ｏ回数がプロモーション閾値以下である場合（Ｓ１５０２：ＮＯ）、このフローは終了する。
【０２０５】
ストレージコントローラ１５５は、ライト処理においても、上記フローと同様にプロモーション閾値とＩ／Ｏ回数との関係から、プロモーションの有無を判定することができる。上記例は、前回監視期間におけるページのＩ／Ｏ回数を参照するが、現在監視期間におけるカウント中のページＩ／Ｏ回数を参照して、プロモーションの判定を行ってもよい。ストレージコントローラ１５５は、ページデータのプロモーションを行うと、当該ページのカウント中のＩ／Ｏ回数を初期値に更新する。
【０２０６】
以上、本発明の実施形態を説明したが、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。
【０２０７】
上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【０２０８】
上記構成例は、再配置速度と再配置方式の双方を決定するが、他の構成例は、それらの一方のみを決定し、決定したモードにおいて再配置を行ってもよい。上記構成においてストレージシステムが行う処理の少なくとも一部は、管理システムが行ってもよい。この構成において、情報記憶システムは、管理システムとストレージシステムを含み、管理システムは情報記憶システムのコントローラに含まれる。情報記憶システムは、複数のストレージシステムを含むことができる。
【図１】
0005981563.tif 000004
【図２】
0005981563.tif 000005
【図３】
0005981563.tif 000006
【図４】
0005981563.tif 000007
【図５】
0005981563.tif 000008
【図６】
0005981563.tif 000009
【図７】
0005981563.tif 000010
【図８】
0005981563.tif 000011
【図９】
0005981563.tif 000012
【図１０Ａ】
0005981563.tif 000013
【図１０Ｂ】
0005981563.tif 000014
【図１１】
0005981563.tif 000015
【図１２】
0005981563.tif 000016
【図１３】
0005981563.tif 000017
【図１４】
0005981563.tif 000018
【図１５】
0005981563.tif 000019
【図１６】
0005981563.tif 000020
【図１７】
0005981563.tif 000021
【図１８】
0005981563.tif 000022
【図１９】
0005981563.tif 000023
【図２０】
0005981563.tif 000024
【図２１】
0005981563.tif 000025
【図２２】
0005981563.tif 000026
【図２３】
0005981563.tif 000027
【図２４】
0005981563.tif 000028
【図２５】
0005981563.tif 000029
【図２６】
0005981563.tif 000030
【図２７】
0005981563.tif 000031
【図２８】
0005981563.tif 000032
【図２９】
0005981563.tif 000033
【図３０】
0005981563.tif 000034
【図３１】
0005981563.tif 000035
【図３２】
0005981563.tif 000036
【図３３】
0005981563.tif 000037
【図３４】
0005981563.tif 000038