(57)【特許請求の範囲】
【請求項１】
複数種類の記憶媒体とメモリとプロセッサとを有するストレージシステムであって、
前記プロセッサは、
仮想記憶領域を前記複数種類の記憶媒体のうちの一の記憶媒体の記憶領域に割り当て、
割り当てられた記憶領域に対するアクセス数を周期的に前記メモリに記録し、
記録された前記アクセス数と第一の負荷指標値との第一の加重平均により、前記第一の負荷指標値を更新し、
記録された前記アクセス数と第二の負荷指標値との第二の加重平均であって、前記第一の加重平均とは異なる比率の重みが設定された前記第二の加重平均により、前記第二の負荷指標値を更新し、
更新された前記第一の負荷指標値と前記第二の負荷指標値との平均値または最大値である第三の負荷指標値に基き、前記仮想記憶領域を前記複数種類の記憶媒体のうちの異なる種類の記憶媒体の記憶領域に割り当てなおすストレージシステム。
【請求項２】
前記複数種類の記憶媒体は、SSD、SASおよび外部接続された記憶媒体である、請求項１に記載のストレージシステム。
【請求項３】
前記第三の負荷指標値は、前記前記第一の負荷指標値と前記第二の負荷指標値の各々に重み付けした値の平均値または最大値である、請求項１に記載のストレージシステム。
【請求項４】
前記プロセッサは、
前記第三の負荷指標値が所定の閾値を上回るか下回る場合に、前記仮想記憶領域を前記複数種類の記憶媒体のうちの異なる種類の記憶媒体の記憶領域に割り当てなおす、請求項１に記載のストレージシステム。
【請求項５】
前記プロセッサは、
当該ストレージシステムに接続された管理装置から入力された値を、前記第一の加重平均の重みと前記第二の加重平均の重みとして設定する、請求項１に記載のストレージシステム。
【請求項６】
前記プロセッサは、
当該ストレージシステムに接続された管理装置から特定のモードが指定されると、前記第三の負荷指標値に換えて、前記アクセス数に基き、前記仮想記憶領域を前記複数種類の記憶媒体のうちの異なる種類の記憶媒体の記憶領域に割り当てなおす、請求項１に記載のストレージシステム。
【請求項７】
複数種類の記憶媒体とメモリとプロセッサとを有するストレージシステムであって、
前記プロセッサは、
仮想記憶領域を前記複数種類の記憶媒体のうちの一の記憶媒体の記憶領域に割り当て、
割り当てられた記憶領域に対するアクセス数を周期的に前記メモリに記録し、
記録された前記アクセス数と第一の負荷指標値に対してＰ１対Ｐ２の重みをおいた加重平均であって、Ｐ１は０より大きくＰ２は０以上である加重平均により、前記第一の負荷指標値を更新し、
記録された前記アクセス数と第二の負荷指標値に対してＱ１対Ｑ２の重みをおいた加重平均であって、Ｑ１は０より大きくＱ２は０以上であり（Ｐ２／Ｐ１）＞（Ｑ２／Ｑ１）の関係が成立する加重平均により、前記第二の負荷指標値を更新し、
更新された前記第一の負荷指標値と前記第二の負荷指標値との平均値または最大値である第三の負荷指標値に基き、前記仮想記憶領域を前記複数種類の記憶媒体のうちの異なる種類の記憶媒体の記憶領域に割り当てなおすストレージシステム。
【請求項８】
複数種類の記憶媒体とメモリとプロセッサとを有するストレージシステムにおける記憶領域の割当方法であって、
前記プロセッサは、
仮想記憶領域を前記複数種類の記憶媒体のうちの一の記憶媒体の記憶領域に割り当て、
割り当てられた記憶領域に対するアクセス数を周期的に前記メモリに記録し、
記録された前記アクセス数と第一の負荷指標値との第一の加重平均により、前記第一の負荷指標値を更新し、
記録された前記アクセス数と第二の負荷指標値との第二の加重平均であって、前記第一の加重平均とは異なる比率の重みが設定された前記第二の加重平均により、前記第二の負荷指標値を更新し、
更新された前記第一の負荷指標値と前記第二の負荷指標値との平均値または最大値である第三の負荷指標値に基き、前記仮想記憶領域を前記複数種類の記憶媒体のうちの異なる種類の記憶媒体の記憶領域に割り当てなおす記憶領域の割当方法。
【請求項９】
前記複数種類の記憶媒体は、SSD、SASおよび外部接続された記憶媒体である、請求項８に記載の記憶領域の割当方法。
【請求項１０】
前記第三の負荷指標値は、前記前記第一の負荷指標値と前記第二の負荷指標値の各々に重み付けした値の平均値または最大値である、請求項８に記載の記憶領域の割当方法。
【請求項１１】
前記プロセッサは、
前記第三の負荷指標値が所定の閾値を上回るか下回る場合に、前記仮想記憶領域を前記複数種類の記憶媒体のうちの異なる種類の記憶媒体の記憶領域に割り当てなおす、請求項８に記載の記憶領域の割当方法。
【請求項１２】
前記プロセッサは、
当該ストレージシステムに接続された管理装置から入力された値を、前記第一の加重平均の重みと前記第二の加重平均の重みとして設定する、請求項８に記載の記憶領域の割当方法。
【請求項１３】
前記プロセッサは、
当該ストレージシステムに接続された管理装置から特定のモードが指定されると、前記第三の負荷指標値に換えて、前記アクセス数に基き、前記仮想記憶領域を前記複数種類の記憶媒体のうちの異なる種類の記憶媒体の記憶領域に割り当てなおす、請求項８に記載の記憶領域の割当方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム及び記憶領域の割当方法に関し、複数の階層を持つストレージシステムの自動階層配置機能における、ボリューム内の小領域（ページ）単位の階層配置を効率化するストレージシステム及び記憶領域の割当方法に関する。
【背景技術】
【０００２】
従来の自動階層管理機能の技術（特許文献１および特許文献２）は、一定の周期内（測定周期）で、ページのＩ／Ｏ頻度が高い場合に、ページを上位階層へ移動（プロモーションと呼ぶ）し、ページのＩ／Ｏ頻度が低い場合に、ページを下位階層に移動（デモーションと呼ぶ）する。
【０００３】
上述の技術について、例えば平日（月〜金）は稼働し、週末（土日）は稼働しないバッチジョブを考える。モニタの測定周期を短く（数時間に）した場合、週末にＩ／Ｏ数が低下すると、そのバッチジョブの対象ページはデモーションされる。すると、再びＩ／Ｏ数が上昇する毎週月曜日に、毎回性能が低下してしまう現象が発生する。上述のような現象に対して、従来技術では、ページをデモーションさせないために、モニタの測定周期を数週間と長くし、長周期のＩ／Ｏ数の頻度を採ることで、Ｉ／Ｏ数を平滑化し、週末のデモーションを回避させている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２００９／００７０５４１２号明細書
【特許文献２】米国特許第７６１３９４５号明細書
【特許文献３】米国特許第７２２８３８０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし従来技術では、長周期にモニタの測定周期を設定した場合には、短周期でのプロモーションを実施できず、通常業務の数分から数時間単位のＩ／Ｏ数の変動に対して、たとえＩ／Ｏ数が非常に多かったとしても、数週間待ったあと、ページがプロモーションされることになる。したがって、本来上位階層で受けられるはずの数週間分のＩ／Ｏを下位階層で受けてしまうことになり、性能上の効率が悪化するという問題があった。
本発明は以上の点を考慮してなされたもので、長周期の視点で、特定のページの一時的なＩ／Ｏ数低下によるデモーションを抑止しつつ、特定のページのＩ／Ｏ数の上昇に対して、迅速なプロモーションを可能とするストレージシステム及び記憶領域の割当方法を提案しようとするものである。
【課題を解決するための手段】
【０００６】
かかる課題を解決するために本発明においては、複数種類の記憶媒体とメモリとプロセッサとを有するストレージシステムであって、前記プロセッサは、仮想記憶領域を前記複数種類の記憶媒体のうちの一の記憶媒体の記憶領域に割り当て、割り当てられた記憶領域に対するアクセス数を周期的に前記メモリに記録し、記録された前記アクセス数と第一の負荷指標値との第一の加重平均により、前記第一の負荷指標値を更新し、記録された前記アクセス数と第二の負荷指標値との第二の加重平均であって、前記第一の加重平均とは異なる比率の重みが設定された前記第二の加重平均により、前記第二の負荷指標値を更新し、更新された前記第一の負荷指標値と前記第二の負荷指標値との平均値または最大値である第三の負荷指標値に基き、前記仮想記憶領域を前記複数種類の記憶媒体のうちの異なる種類の記憶媒体の記憶領域に割り当てなおすストレージシステムが提供される。
【０００７】
上記構成によれば、周期的にカウントした記憶領域毎のＩ／Ｏ数により、長周期の観点で規定された負荷指標値と短周期の観点で規定された負荷指標値とを更新していく。これらの負荷指標値から算出した値に基づき、プロモーションやデモーションを実施することができる。
【発明の効果】
【０００８】
本発明によれば、長周期の視点で、一時的なＩ／Ｏ数低下によるデモーションを抑止しつつ、Ｉ／Ｏ数の上昇に対して、迅速なプロモーションを可能とすることができ、高速な上位階層のドライブで多くのＩ／Ｏを処理することができるようになり、下位階層でのボトルネックを解消し、ストレージシステムの性能を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第一実施形態に係る計算機システムの構成例を示す図である。
【図２】同実施形態に係るストレージシステムの論理構成を示す図である。
【図３】共有メモリ１１１に配置するテーブルの種類を示す図である。
【図４】ローカルメモリ１１８に配置するプログラムの種類を示す図である。
【図５】ダイナミックマッピングテーブル３０１の構造を示す図である。
【図６】論理物理アドレス変換テーブル３０８の構造を示す図である。
【図７】ページ毎モニタテーブル３０２の構造を示す図である。
【図８】プール度数分布テーブル３０６と、仮想ボリューム度数分布テーブル３０５の構造を示す図である。
【図９】プール加重指数テーブル３０３の構造を示す図である。
【図１０】仮想ボリューム加重指数テーブル３０７の構造を示す図である。
【図１１】ページ加重指数テーブル３０４の構造を示す図である。
【図１２】ホストＩ／Ｏ処理プログラム４０１のフローチャートである。
【図１３】デステージ処理プログラム４０４のフローチャートである。
【図１４】度数分布作成処理プログラム４０２のフローチャートである。
【図１５】ページ再配置処理プログラム４０５のフローチャートである。
【図１６】加重平均算出用カウンタ１（７０３Ａ）値、加重平均算出用カウンタ２（７０３Ｂ）値、およびＩ／Ｏカウンタ値７０２の算出式の例を示す図である。
【図１７】加重平均算出処理プログラム４０３のフローチャートである。
【図１８】プール単位にページ再配置処理を行うときの、モニタモードや合算方法、カウンタ数等の設定を行う画面の例を示す図である。
【図１９】仮想ボリューム単位にページ再配置処理を行うときの、モニタモードや合算方法、カウンタ数等の設定を行う画面の例を示す図である。
【図２０】ページ単位にページ再配置処理を行うときの、モニタモードや合算方法、カウンタ数等の設定を行う画面の例を示す図である。
【図２１】本発明で算出した各種Ｉ／Ｏ数の時間的な変化を示す図である。
【発明を実施するための形態】
【００１０】
本発明の実施形態について、図面を参照して説明する。尚、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１１】
図１は、本発明の第一実施形態に係る計算機システムの構成例を示す図である。
【００１２】
ホスト１０１は、例えば一般的なサーバにより構成され、ネットワーク１０３を介してストレージシステム１０４のポート１０６に接続する。ホスト１０１は、ストレージシステム１０４に対してデータのリードやライト命令を発行し、ストレージシステム１０４がその命令に応じてデータの読み込みや書き込みを実行する。ネットワーク１０３は、例えばＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）や、イーサネット（登録商標）などにより構成する。また、管理サーバ１０２は、ネットワーク１０３を介して、ストレージシステム１０４の保守Ｉ／Ｆ１０７またはポート１０８に接続する。ストレージ管理者が、管理サーバ１０２を用いて、ストレージシステム１０４に対して、ストレージシステムを運用する上で必要な各種設定や管理のための命令を送信する。外部ストレージ１０５は、ストレージシステム１０４のポート１０８に接続される。この外部ストレージ１０５接続の際に、ネットワーク１０３を経由してストレージシステム１０４のポート１０８に接続してもよい。外部ストレージ１０５はストレージシステムにおいて、ストレージシステム内部のボリュームと同様に扱うことができる。この具体的な方法については、特許文献３に記載されているため、詳細は割愛する。
【００１３】
次にストレージシステム１０４の内部構成について説明する。ストレージシステム１０４の内部では、内部ネットワーク１１２を介してポート１０６、保守Ｉ／Ｆ１０７、プロセッサパッケージ１０９、キャッシュメモリ１１０、共有メモリ１１１、ポート１０８、ドライブ１１３、ドライブ１１４を接続する。キャッシュメモリ１１０は、ストレージシステム１０４のＩ／Ｏ処理のスループットやレスポンスを向上させるために、データを一時的なキャッシュとして格納するための高速アクセスが可能なメモリである。プロセッサパッケージ１０９は、ローカルメモリ１１８とプロセッサ１１９により構成する。プロセッサ１１９はホスト１０１からのリードやライト命令を処理するために、ドライブ１１５、１１６、外部ストレージ１０５とキャッシュメモリ１１０間のデータの転送処理などを実行する。共有メモリ１１１は、プロセッサ１１９がリードやライト命令を処理し、またストレージの機能（ボリュームのコピー機能など）を実行する上で、必要な制御用の情報を格納するメモリであり、複数のプロセッサパッケージ１０９Ａ，Ｂ間のプロセッサ１１９で共有している情報を格納するメモリである。ローカルメモリ１１８は、プロセッサ１１９がリードやライト命令を処理し、またストレージの機能を実行する上で、必要な制御用の情報を格納するメモリであり、プロセッサ１１９が占有して使用できる領域である。ローカルメモリ１１８には、例えばプロセッサ１１９により実行するプログラムなどを格納する。ドライブ１１３、１１４は例えばＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ），ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ），ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）などのインターフェイスを持つハードディスクドライブや、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などにより構成する。
【００１４】
前述したさまざまな種類のドライブは、性能が異なる。例えば、ハードディスクドライブと比較し、ＳＳＤはＩ／Ｏスループット性能が高い。ストレージシステム１０４は、前述した複数の種類のドライブによって構成する。これらの複数の種類のドライブを、近い性能を持つドライブに分類したものが階層（Ｔｉｅｒ）１１５、１１６、１１７である。階層間の関係は性能の上下関係により定義される。この階層については、詳細は特許文献２に記載されているため、詳細は割愛する。
【００１５】
図２は、本発明の第一実施形態に係るストレージシステムの論理構成を示す図である。
仮想ボリューム２０１は、ホスト１０１から認識される論理的な記憶領域であり、ホスト１０１からリード又はライト命令が発行される際に対象となるボリュームである。プール２０６は、１個以上のプールボリューム２０３により構成される。プールボリューム２０４はドライブ１１３，１１４，外部ストレージ１０５によって構成される。具体的には、プールボリューム２０４の論理アドレスと、ドライブ１１３，１１４，外部ストレージ１０５の物理アドレスの対応関係を管理することにより、論理的なプールボリューム２０４を構成する。詳細については、後説する。
【００１６】
ストレージ管理者は、管理サーバ１０２からの指示により、プール２０６上に、複数の仮想ボリューム２０１を作成することが出来る。
【００１７】
ストレージシステム１０４は、仮想ボリューム２０１に対して、ホスト１０１がＷｒｉｔｅ命令を発行した記憶領域のみ、実際の記憶領域を割り当てる。具体的には、仮想ボリューム２０１のページ２０２Ａに、初めてホスト１０１がＷｒｉｔｅ命令を発行した際に、未使用のプールボリューム２０３の領域と対応づけ（２０５Ａ）、次回のホスト１０１からの同じページへのＲｅａｄ／Ｗｒｉｔｅ命令に対しても、前記対応づけに基づき、ストレージシステム１０４が対応するプールボリューム２０３の領域に対してＩ／Ｏ処理を実行することにより、あたかもホスト１０１が仮想ボリュームに対してＩ／Ｏ処理を実行しているように処理することができる。以上のように、仮想ボリューム２０１を用いて、使用する部分のみプールボリューム２０３の領域を割り当てることにより、限られた記憶容量を効率的に使用できることが可能となる。
【００１８】
プール２０６は、複数の階層１１５，１１６，１１７を持ち、階層１１５、１１６、１１７によって、プールボリューム２０３を分類する。本実施例では、ＳＳＤの階層１１５（プールボリューム２０３Ａに対応）と、ＳＡＳの階層１１６（プールボリューム２０３Ｂ，２０３Ｃに対応）と、外部接続の階層１１７（プールボリューム２０３Ｄ，２０３Ｅに対応）の３個の階層を持つ。
【００１９】
各仮想ボリュームのページ２０２には、一般的にホストからのＩ／Ｏ処理の特性が存在する。例えば、一般的にはＩ／Ｏの頻度が高いページと低いページが存在することが多い（これをアクセスローカリティと呼ぶ）。この場合、Ｉ／Ｏの頻度が高いページを上位の階層に配置したほうが、システム全体の性能を向上することができる場合がある。
【００２０】
例えば、１００ＩＯＰＳを処理できるＳＳＤの階層（１１５）と、１０ＩＯＰＳ処理できるＳＡＳの階層（１１６）がプール２０６に存在する場合で、５０ＩＯＰＳの特性を持つページ２０２Ｃと、２０ＩＯＰＳの特性を持つページ２０３Ａがあった場合、ページ２０２Ｃが現在ＳＡＳに割当たっているとすると、ＳＡＳの階層は最大で１０ＩＯＰＳの性能しか発揮できないため、ストレージシステム１０４は、全体として１０＋２０＝３０ＩＯＰＳの性能しか発揮できない（この状態をネック状態と呼ぶ）。ページ２０２Ｃが現在割当たっているＳＡＳから、ＳＳＤの階層へプロモーションすることができれば、ストレージシステム１０４は、全体として５０＋２０＝７０ＩＯＰＳの性能を発揮できる。以上のように、Ｉ／Ｏの頻度が高いページを上位の階層に配置（これを「階層に割り当てる」と呼ぶ）したほうが、システム全体の性能を向上することができる場合があることが分かる。
【００２１】
上述のプロモーションは、具体的には、ページ２０４Ｃのデータを未使用のページ２０４Ｂにコピーし、仮想ボリューム２０１Ａのページ２０２Ｃとプールボリューム２０３Ｂのページ２０４Ｃとの対応づけ（２０５Ｃ）を、仮想ボリューム２０１Ａのページ２０２Ｃとプールボリューム２０３Ａのページ２０４Ｂとの対応づけ（２０５Ｂ）に変更することにより実行する。デモーションも同様に実施可能である。詳細は特許文献２（ＵＳ７６１３９４５）に記載されているため、詳細は割愛する。
【００２２】
度数分布２０７は、各ページのＩ／Ｏ数の分布を表す。グラフ２０９は、Ｉ／Ｏ数の多い順番にページを並べたときの、各ページのＩ／Ｏ数を表す線である。つまり、Ｉ／Ｏ数の多いページが左側に、Ｉ／Ｏ数が少ないページが右側に並んでいる。Ｔｉｅｒ割り当て閾値２０８は、どのＩ／Ｏ数のページをどの階層に割り当てるかを決める閾値である。前述した通り、Ｉ／Ｏの頻度が高いページを上位の階層に配置したほうが、システム全体の性能を向上することができる場合があることから、Ｉ／Ｏ数の高い順番で上位階層から順番に割り当てる。
【００２３】
例えば、Ｔｉｅｒ割り当て閾値２０８Ａと度数分布のグラフ２０９の交点から、最も性能の高いページの、範囲２１０Ａに属するページは、ＳＳＤの階層１１５に割り当てる。また、Ｔｉｅｒ割り当て閾値２０８Ａと度数分布のグラフ２０９の交点から、Ｔｉｅｒ割り当て閾値２０８Ｂと度数分布のグラフ２０９の交点までの、範囲２１０Ｂに属するページは、ＳＡＳの階層１１６に割り当てる。また、Ｔｉｅｒ割り当て閾値２０８Ｂと度数分布のグラフ２０９の交点から、最小のＩ／Ｏ数のページまでを、外部ストレージの階層１１７に割り当てる。以上のようにして、Ｉ／Ｏ数の高い順番で上位階層から順番に割り当てることができる。
【００２４】
Ｔｉｅｒ割り当て閾値２０８はストレージ管理者が値を指定してもよいし、ストレージシステム１０４が算出してもよい。
【００２５】
度数分布２０７の詳細（作成方法など）については、後述するので、ここでは割愛する。
【００２６】
図３にて、共有メモリ１１１に配置するテーブルの種類を示す。各テーブルの詳細な構造は後述する。尚、本明細書には必要最小限のテーブルのみ記載しており、該共有メモリ上に他のテーブルが存在しても構わない。
【００２７】
ダイナミックマッピングテーブル３０１は、仮想ボリュームの各ページと、プールボリュームの領域と、モニタ情報との対応関係とを管理するテーブルである。論理物理アドレス変換テーブル３０８は、プールボリュームと、プールボリュームのデータを格納する物理ディスクのアドレスとの対応関係を管理するテーブルである。ページ毎モニタテーブル３０２は、Ｉ／Ｏ数を含む、各ページのモニタ情報を管理するテーブルである。仮想ボリューム度数分布テーブル３０５は、仮想ボリュームに関する、Ｉ／Ｏ数範囲毎のページ数の分布を管理するテーブルである。プール度数分布テーブル３０６は、プールに関する、Ｉ／Ｏ数範囲毎のページ数の分布を管理するテーブルである。プール加重指数テーブル３０３は、プール毎の、算出用カウンタ計算に使用する各種パラメータを管理するテーブルである。仮想ボリューム加重指数テーブル３０７は、仮想ボリューム毎の、算出用カウンタ計算に使用する各種パラメータを管理するテーブルである。ページ加重指数テーブル３０４は、ページ毎の、算出用カウンタ計算に使用する各種パラメータを管理するテーブルである。
【００２８】
また、ページ毎モニタテーブル３０２や、プール度数分布テーブル３０６、仮想ボリューム加重指数テーブル３０７は、本実施例では共有メモリ１１１上に配置しているが、ホスト１０１や管理サーバ１０２上にデータを配置してもよい。
【００２９】
図４にて、ローカルメモリ１１８に配置するプログラムの種類を示す。各プログラムの詳細なフローは後述する。尚、これらのプログラムは各ローカルメモリ１１８に配置してもよいし、共有メモリ１１１に配置してもよい。また、本明細書には必要最小限のプログラムのみ記載しており、該ローカルメモリ上に他のプログラムが存在しても構わない。
【００３０】
ホストＩ／Ｏ処理プログラム４０１は、ホストから受領した、仮想ボリュームに対するＲｅａｄ／Ｗｒｉｔｅ要求を処理するプログラムである。デステージ処理プログラム４０４は、キャッシュメモリ上の物理ディスク未反映データを、物理ディスクに格納するプログラムである。度数分布作成処理プログラム４０２は、採取したページ毎のＩ／Ｏ数を基に度数分布を作成し、Ｔｉｅｒ割り当て閾値を計算するプログラムである。加重平均算出処理プログラム４０３は、度数分布作成処理プログラム中で使用することを目的の１つとしたプログラムであり、各種算出用カウンタを基にページのＩ／Ｏ数を算出するプログラムである。ページ再配置処理プログラム４０５は、ページ毎のＩ／Ｏ数と、Ｔｉｅｒ割り当て閾値を基に、適切なＴｉｅｒにページを再配置するプログラムである。
【００３１】
次に上述したプログラムが動作するタイミングについて説明する。ホストＩ／Ｏ処理プログラム４０１は、ホストＩ／Ｏの受領時に動作する。デステージ処理プログラム４０４は、ホストＩ／Ｏとは別に、周期的に動作する。度数分布作成処理プログラム４０２は、周期的に動作し、例えば、１時間毎に動作する。この周期はユーザが設定可能であってもよい。この周期の間に採取したモニタ情報について、度数分布作成処理プログラム４０２の対象となる。度数分布作成処理プログラム４０２は、加重平均算出処理プログラム４０３をその動作の過程で動作させる。度数分布作成処理プログラム４０２の動作が終了したら、プロセッサ１０９はページ再配置処理プログラム４０５を起動する。以上のように、度数分布作成処理プログラム４０２、加重平均算出処理プログラム４０３、ページ再配置処理プログラム４０５は、周期的に動作する。
【００３２】
ページ毎モニタテーブル３０２や、プール度数分布テーブル３０６、仮想ボリューム加重指数テーブル３０７をホスト１０１や管理サーバ１０２上に配置する場合は、度数分布作成処理プログラム４０２はホスト１０１や管理サーバ１０２上で動作する。
【００３３】
図５にて、ダイナミックマッピングテーブル３０１の構造を示す。ダイナミックマッピングテーブルの１つのエントリは、プール２０６と仮想ボリューム２０２と、仮想ボリューム２０２の各ページとプールボリューム２０４の領域と、該ページのモニタ情報との対応関係を示している。対応関係を管理するにあたり、仮想ボリュームの各ページは、仮想ボリューム番号５０１と、該仮想ボリューム内の該ページの開始論理アドレス５０２とで識別する。また、プールボリュームの各領域は、プールボリューム番号５０３と、プールボリューム内の該領域の開始論理アドレス５０４とで識別する。一方、モニタ情報は、モニタ情報インデックス番号５０５で識別する。該モニタ情報インデックス番号は、ページ毎モニタテーブル３０２の、モニタ情報インデックス番号７０１に対応する。いずれも、他の識別方法であって構わない。
【００３４】
また、ダイナミックマッピングテーブル３０１は、プール内の空き領域とデフォルト値ページを管理しており、サーバから仮想ボリューム５０１の論理アドレス５０２にデータの書き込みが一度も無かった場合は、仮想ボリューム５０１の論理アドレス５０２に対応するプールボリューム番号と論理アドレスには、デフォルト値ページのアドレスが格納されている。
【００３５】
またダイナミックマッピングテーブル３０１で、プール内の空きページのプールボリューム番号と論理アドレスを管理しており、サーバから仮想ボリューム５０１の論理アドレス５０２にデータの書き込みが一度も無かった箇所に初めてデータの書き込みがあった場合は、前記空きページのプールボリューム番号と論理アドレスを仮想ボリューム５０１の論理アドレス５０２に対応づけられる。
【００３６】
また、各仮想ボリュームは、プールに属し、プール番号５０６により、どの仮想ボリュームが所属しているか、仮想ボリューム番号５０１との対応をダイナミックマッピングテーブル３０１で管理する。
【００３７】
図６にて、論理物理アドレス変換テーブル３０８の構造を示す。論理物理アドレス変換テーブルの１つのエントリは、プールボリューム２０４と、該プールボリュームのデータを格納する物理ドライブ（１１３または１１４）の領域との対応関係を示す。プールボリュームは、プールボリューム番号６０１で識別する。また、物理ドライブの領域は、物理ドライブの番号６０２と、該物理ドライブの開始アドレス６０３とで識別する。本実施形態では、１つのプールボリュームを、１つの物理ディスクの連続領域に対応づけて管理しているが、他の対応づけを行ってもよい。例えば、１つのプールボリュームを、複数の物理ドライブに対応づけてもよい。または、１つのプールボリュームを、ＲＡＩＤ構成を組む複数のドライブによって作成した論理領域の一部に対応づけ、論理領域を、物理ドライブの領域に対応づけることで、二段階の管理を行ってもよい。
【００３８】
図７にて、ページ毎モニタテーブル３０２の構造を示す。ページ毎モニタテーブルの１つのエントリは、ある１個のページ２０２のモニタ情報を示す。モニタ情報インデックス番号７０１は、モニタ情報の識別に使用するインデックス番号である。Ｉ／Ｏカウンタ（Ａ面）７０２Ａ、Ｉ／Ｏカウンタ（Ｂ面）７０２Ｂは、あるページのＩ／Ｏ数を示す。
【００３９】
Ｉ／Ｏカウンタ７０２は、一定の周期のＩ／Ｏ数を格納する。この周期は、前述した度数分布作成処理４０２の動作する周期と同じであり、度数分布作成処理４０２はこの一定の周期のＩ／Ｏ数を処理の対象とする。これは、たとえば周期毎に、採取対象のカウンタをＩ／Ｏカウンタ（Ａ面）７０２ＡとＩ／Ｏカウンタ（Ｂ面）７０２Ｂとで切り替えることにより、一方をホストＩ／Ｏ処理プログラム４０１とデステージ処理プログラム４０４によるモニタ採取用のカウンタとして、他方を度数分布作成処理４０２とページ再配置処理プログラム４０５用のカウンタとして利用する。上記が、Ｉ／Ｏカウンタが２個存在する理由である。もちろん、Ｉ／Ｏカウンタの数は、３個以上存在し、それぞれを切り替えて使用しても構わない。
【００４０】
また、加重平均用カウンタ１（７０３Ａ）、加重平均用カウンタ２（７０３Ｂ）は、算出用カウンタ計算用の値を保持する。例えば、加重平均用カウンタ１で短期用の算出用カウンタ値を保持し、加重平均用カウンタ２で長期用の算出用カウンタ値を保持する。加重平均用カウンタの数は、後述する加重指数テーブル（３０３または３０４または３０７）で管理する「カウンタ数」に依存するため、２個以上となる場合もある。
【００４１】
図８にて、プール度数分布テーブル３０６と、仮想ボリューム度数分布テーブル３０５の構造を示す。プール度数分布テーブル３０６は、プール２０６に関する、Ｉ／Ｏ数範囲毎のページ数の分布を管理している。プール度数分布テーブルの１つのエントリは、あるプールに関する１個のＩ／Ｏ数の範囲と、該Ｉ／Ｏ数の範囲に含まれるページ数を示す。Ｉ／Ｏ数８０２は、Ｉ／Ｏ数範囲の開始値を示している。該範囲の終了値は、（次のエントリのＩ／Ｏ数範囲の開始値−１）となる。ページ数８０３は、該Ｉ／Ｏ数の範囲に含まれるページ数に対応する。また、本テーブルでは、Ｔｉｅｒ割り当て閾値２０８も管理する。Ｔｉｅｒ割り当て閾値は０以上の値であればよく、必ずしも各範囲の境界値である必要はない。
【００４２】
仮想ボリューム度数分布テーブル３０５は、仮想ボリューム２０１に関する、Ｉ／Ｏ数範囲毎のページ数の分布を管理している。テーブル構造は、プール度数分布テーブル３０６と同じであるため、詳細な説明は割愛する。
【００４３】
図９にて、プール加重指数テーブル３０３の構造を示す。プール加重指数テーブルは、プール２０６毎の、算出用カウンタを算出する時に使用する各種パラメータを管理するテーブルである。プール加重指数テーブルの値を使用した各種計算方法の詳細は、後述する。
【００４４】
ページ毎モニタテーブル３０２の説明にて述べた通り、各ページ２０２は、複数個の加重平均算出用カウンタ７０３を持つ。種別９０３の列に記載した「カウンタ数」は、該加重平均算出用カウンタの個数を示す。加重平均算出用カウンタ番号９０２は、加重平均算出用カウンタに対応付く。本実施形態では、加重平均算出用カウンタ１（７０３Ａ）を「１」、加重平均算出用カウンタ２（７０３Ｂ）を「２」として管理している。また、プール加重指数テーブルでは、加重平均算出用カウンタ毎に、該算出用カウンタ値の算出に使用するパラメータの種別９０３と各パラメータの値９０４を保持する。該パラメータは、加重平均算出用カウンタの算出方法に応じて、異なる種別のパラメータを持ってもよい。本実施例では、「加重平均算出用カウンタの加重値」、「Ｉ／Ｏカウンタの加重値」の２つを持つ。「加重平均算出用カウンタの加重値」は、０以上の値とし、「Ｉ／Ｏカウンタの加重値」は０より大の値とする必要がある。
【００４５】
「合算時加重値」は、各加重平均算出用カウンタを合算して、ページのＩ／Ｏ数を算出する時に使用する、各加重平均算出用カウンタの加重値を示している。また本実施例では、「合算方法」として、平均（ＡＶＧ）または最大（ＭＡＸ）を用意する。もちろん、他の合算方法であっても構わない。
【００４６】
図１０にて、仮想ボリューム加重指数テーブル３０７の構造を示す。仮想ボリューム加重指数テーブルは、仮想ボリューム２０１毎の、算出用カウンタを算出する時に使用する各種パラメータを管理するテーブルである。加重平均算出用カウンタ番号１００２、種別１００３、値１００４については、プール加重指数テーブル３０３にて説明したため、詳細な説明は割愛する。
【００４７】
図１１にて、ページ加重指数テーブル３０４の構造を示す。ページ加重指数テーブルは、ページ２０２毎の、算出用カウンタを算出する時に使用する各種パラメータを管理するテーブルである。該テーブルでは、ページ２０２を、仮想ボリューム番号１１０１と論理アドレス領域１１０２とで識別しているが、他の識別方法であっても構わない。加重平均算出用カウンタ番号１１０３、種別１１０４、値１１０５については、プール加重指数テーブル３０３にて説明したため、詳細な説明は割愛する。
【００４８】
図１２は、ホストが仮想ボリューム２０１に対するデータの読み書きを行う際に、ストレージシステム１０４内のホストＩ／Ｏ処理プログラム４０１の処理を示したフローチャートである。
【００４９】
ホストからＩ／Ｏ処理要求を受けると、ストレージシステム１０４内のホストＩ／Ｏ処理プログラム４０１は、仮想ボリューム２０１へのデータのリード要求かデータのライト要求かを判定する（Ｓ１２０１）。
【００５０】
Ｉ／Ｏ処理要求がライトの場合、ホストＩ／Ｏ処理プログラム４０１は、キャッシュメモリ１１０にＩ／Ｏ処理要求に対応する仮想ボリューム上のアドレスに対応した領域が確保されているか否かを確認し、確保されている場合もしくは確保されていなければキャッシュメモリ１１０の領域を確保した後、ホストにライトデータの転送可能であることを応答し、ホストから転送されてくるライトデータを前記確保されているキャッシュメモリ領域に書き込み、キャッシュメモリ管理テーブルにまだディスクに書き込んでいない領域であるとしてダーティフラグを立てる（Ｓ１２０７）。
【００５１】
ここで、ダーティフラグは、キャッシュメモリにのみデータがあり、ディスクにない状態を示す情報でキャッシュメモリの領域を管理するキャッシュメモリ管理テーブルに保持される。あとで説明するデステージ処理プログラム４０４は、このダーティフラグをみて、キャッシュメモリ上にあるデータをディスクに書き込む。
【００５２】
キャッシュメモリ管理テーブルにダーティフラグが立ててある領域のデータがディスクに書き込まれた後は、ダーティフラグは落され、リード処理に対応してディスクから読み込んだデータをキャッシュメモリに格納した場合を含め、キャッシュメモリ管理テーブルの情報はクリーンフラグが立てられる。
【００５３】
上記のように、キャッシュメモリ管理テーブルは、キャッシュメモリのアドレスと対応する仮想ボリュームのアドレスとキャッシュメモリにあるデータの状態を少なくとも保持管理している。また、キャッシュメモリのアドレスに対応する仮想ボリュームのアドレスは、仮想ボリュームのデータを置くためにキャッシュメモリの領域を確保した場合にのみ、有効な値である仮想ボリュームのアドレスが格納される。
【００５４】
さて、ホストＩ／Ｏ処理プログラム４０１は、上記Ｓ１２０７後、ホストにライトＩ／Ｏ処理が完了したことを応答した（Ｓ１２０８）後、処理を終了する。
【００５５】
一方Ｓ１２０１で、Ｉ／Ｏ処理要求がリードであった場合の処理は以下となる。
【００５６】
Ｉ／Ｏ処理要求がリードの場合、ホストＩ／Ｏ処理プログラム４０１は、Ｉ／Ｏ処理要求に対応する仮想ボリューム上のアドレスに対応したデータがキャッシュメモリ上に存在するか否かを確認する（Ｓ１２０２）。
【００５７】
Ｓ１２０２でキャッシュメモリ上にホストが要求したアドレスのデータが存在した場合をキャッシュヒットと呼ぶ。前記キャッシュヒットの場合、ホストＩ／Ｏ処理プログラム４０１は、キャッシュメモリ上のデータをホストに転送する（Ｓ１２０９）。
【００５８】
ホストＩ／Ｏ処理プログラム４０１は、ホストが要求したデータを全てホストに転送した後リード処理完了応答をホストに転送して、処理を終了する。
【００５９】
Ｓ１２０２でキャッシュミスした場合、ホストＩ／Ｏ処理プログラム４０１は、リード要求先仮想ボリュームのアドレスに対応したデータを格納するための領域をキャッシュメモリに確保する。次に、ホストＩ／Ｏ処理プログラム４０１は、ホストのリード要求先仮想ボリュームアドレスが、プールからページ２０２を割当てられているか否かを、ダイナミックマッピングテーブル３０１を用いて確認する。もし割り当てられていなかった場合、ホストＩ／Ｏ処理プログラム４０１は、デフォルト値を格納するページを、ダイナミックマッピングテーブル３０１を用いて求め、前記デフォルト値の格納ページのドライブのアドレスを算出し、ドライブからデフォルト値を前記確保したキャッシュメモリの領域に転送する（Ｓ１２０４）。
【００６０】
ここで、デフォルト値の場合は、ダイナミックマッピングテーブルの仮想ボリュームと論理アドレスに対応する、プールボリューム番号と論理アドレスはデフォルト値格納ページのあるプールボリューム番号と論理アドレスが設定されている。
【００６１】
デフォルト値ページはプールに１つ以上あればよい。容量効率を考えればプールにデフォルト値ページは１つもしくは２つである。
【００６２】
デフォルト値ページのアドレスと対応づけられている仮想ボリュームの論理アドレスは、ホストから新規にデータの書き込みがあった際に、ホストのデータ書き込み用のページで未だどの仮想ボリュームのアドレスにも対応づけられていない未使用のページと対応付け直される。
【００６３】
前記処理で、ページ２０２が割り当てられていた場合は、ホストＩ／Ｏ処理プログラム４０１は、ダイナミックマッピングテーブル３０１を用いプールボリューム番号と論理アドレスを求め、更に論理物理アドレス変換テーブル３０８を用い物理ドライブ番号、物理開始アドレスを求めることで、ホストが要求した仮想ボリュームのアドレスに対応したデータが格納されているドライブのアドレスを算出する（Ｓ１２０３）。次に、ホストＩ／Ｏ処理プログラム４０１は、算出したドライブアドレスからデータを前記確保したキャッシュメモリの領域に転送する（Ｓ１２０４）。
【００６４】
ホストＩ／Ｏ処理プログラム４０１は、前記キャッシュメモリへのデータ転送時にダイナミックマッピングテーブル３０１のモニタ情報インデックス番号に対応するページ毎モニタテーブル３０２のＩ／Ｏカウンタ値を更新する（Ｓ１２０５）。
【００６５】
続いて、ホストＩ／Ｏ処理プログラム４０１は、前記ドライブからキャッシュメモリ上に格納したデータを当該キャッシュメモリからホストに対してデータを送信する（Ｓ１２０６）。
【００６６】
ホストＩ／Ｏ処理プログラム４０１は、ホストが要求したデータを全てホストに転送した後リード処理完了応答をホストに転送して、処理を終了する。
【００６７】
図１３は、デステージ処理プログラム４０４のフローチャートである。
【００６８】
図１２に記したように、ホストＩ／Ｏ処理プログラムは、ホストからのデータの書き込み要求に応じてキャッシュメモリにホストのライトデータを書き込んだ後、ダーティフラグを立てる。
【００６９】
デステージ処理プログラム４０４は、キャッシュメモリ管理テーブルを参照し、キャッシュメモリ上にダーティフラグが立っている、ディスクへの書き込みがなされていない未反映データが無いかを定期的に確認する（Ｓ１３０１）。
【００７０】
もしダーティフラグが立っているデータがあるキャッシュ領域を見つけた場合は、デステージ処理プログラム４０４は、キャッシュメモリ管理テーブルに記載の仮想ボリューム番号及び論理アドレスを元に、ダイナミックマッピングテーブル３０１からプールボリューム番号及び論理アドレスを求める。
【００７１】
このとき、プールボリューム番号及び論理アドレスがデフォルトページのアドレスであった場合は、デステージ処理プログラム４０４は、新規データを書き込むために、ダイナミックマッピングテーブル３０１から新規空きページを割当てる。そして当該割当てページのプールボリューム番号と論理アドレスをダイナミックマッピングテーブル３０１の本デステージ処理に対応する仮想ボリューム番号及び論理アドレスに対応させて格納する。
【００７２】
既にページが割り当たっている場合は、デフォルト値のプールボリューム番号と論理アドレスとは異なるプールボリューム番号と論理アドレスの値が仮想ボリューム５０１の論理アドレス５０２に対応して格納されている。
【００７３】
プールボリューム番号と論理アドレスが求まった後、デステージ処理プログラム４０４は、論理物理アドレス変換テーブルで、ドライブのアドレスを求める（Ｓ１３０２）。
【００７４】
デステージ処理プログラム４０４は、前記Ｓ１３０２で求めた、ドライブのアドレスに対して、キャッシュメモリ上のダーティデータを書き込む（Ｓ１３０３）。
【００７５】
そして、デステージ処理プログラム４０４は、ダイナミックマッピングテーブル３０１のモニタ情報インデックス番号に対応するページ毎モニタテーブル３０２のＩ／Ｏカウンタ値を更新する（Ｓ１３０４）。
【００７６】
更に、デステージ処理プログラム４０４は、未反映データがキャッシュメモリ上にあるかチェックする（Ｓ１３０１）。もし未反映データがなければ、終了し、未反映データがあれば、再度Ｓ１３０２から実施する。
【００７７】
図１４は、度数分布作成処理プログラム４０２のフローチャートである。
【００７８】
本プログラムは、度数分布を仮想ボリューム単位に作成していく。そのため、度数分布作成処理プログラム４０２は、度数分布を未作成の仮想ボリュームがあるか否かを確認する（Ｓ１４０１）。
【００７９】
ステップＳ１４０１においてもし度数分布を未作成の仮想ボリュームがあれば、度数分布作成処理プログラム４０２は、当該仮想ボリューム内で度数分布作成のために未処理ページがあるか否かをボリュームの先頭から確認していく（Ｓ１４０２）。
【００８０】
ステップＳ１４０２において未処理ページがあれば、度数分布作成処理プログラム４０２は、加重平均算出処理プログラム４０３を呼び出し、Ｉ／Ｏ数を算出する（Ｓ１４０３）。
【００８１】
そして、度数分布作成処理プログラム４０２は、算出したＩ／Ｏ数に対して、対応する度数分布のページ数を加算した（Ｓ１４０４）後、Ｓ１４０２に戻る。
【００８２】
ボリュームの後端まで実施もしくは処理している仮想ボリュームに関し未処理ページが無いことがわかった場合には、度数分布作成処理プログラム４０２は、他の仮想ボリュームが無いか確認するために、Ｓ１４０１に戻る。
【００８３】
度数分布作成処理プログラム４０２は、度数分布未作成の仮想ボリュームが無くなったら、プールの度数分布を作成する（Ｓ１４０５）。プールの度数分布は、仮想ボリュームの度数分布の合計値を計算することにより算出する。具体的には、仮想ボリューム加重指数テーブル３０７において、対象プールに属する各仮想ボリューム番号８０４のＩ／Ｏ数８０５に対応するページ数８０３の総和を求めて、プール度数分布テーブル３０６のＩ／Ｏ数８０５に対応するページ数８０２として格納する。
【００８４】
続いて、度数分布作成処理プログラム４０２は、Ｔｉｅｒ割り当て閾値２０８を計算して決定する（Ｓ１４０６）。Ｔｉｅｒ割り当て閾値２０８は、各Ｔｉｅｒについて、Ｔｉｅｒのポテンシャル（処理できる最大のＩ／Ｏ数）又はＴｉｅｒの容量何れかを超える限界点から、最大のページ割り当て量の範囲２１０を決定し、範囲２１０と度数分布のグラフ２０９の交点から、Ｔｉｅｒ割り当て閾値２０８を算出する方法がある。また、ユーザが指定した閾値を使用する方法でもよい。
【００８５】
図１５は、ページ再配置処理プログラム４０５のフローチャートである。
【００８６】
度数分布作成処理プログラムが終了して、ページ再配置のためのＴｉｅｒ割り当て閾値２０８が決定すると、ページ再配置プログラム４０５は、Ｔｉｅｒ割り当て閾値２０８を元に各仮想ボリュームに割り当てられているページをプール内の適切なＴｉｅｒに再配置する。
【００８７】
ページ再配置プログラム４０５は、プールに定義された仮想ボリュームを先頭から割り当てられているページの加重平均算出プログラムによって算出されたＩ／Ｏ数とＴｉｅｒ割り当て閾値２０８に応じて、現在いるＴｉｅｒのままでよいか異なるＴｉｅｒに移動すべきかを判定する。そして、ページ再配置プログラム４０５は、異なるＴｉｅｒに移動すべきだと判断したらページ内データを他のＴｉｅｒの空きページに移動してダイナミックマッピングテーブル３０１の仮想ボリューム５０１の論理アドレス５０２とプールボリューム番号と論理アドレスとの関係を移動先ページに変更する。
【００８８】
まず、ページ再配置プログラム４０５は、ページ再配置未処理の仮想ボリュームの有無を確認する（Ｓ１５０１）。
【００８９】
もしページ再配置未処理の仮想ボリュームが有れば、ページ再配置プログラム４０５は、対象仮想ボリュームを先頭から後端に向かって順次、割当たったページ毎に再配置要否を確認する（Ｓ１５０２，Ｓ１５０３）。再配置要否を確認とは、具体的に説明すると、対象のプールのプール度数分布テーブル３０６のＴｉｅｒ割り当て閾値２０８から、現在いるＴｉｅｒのままでよいか異なるＴｉｅｒに移動すべきかを判定することである。さらに言うと、Ｔｉｅｒ１とＴｉｅｒ２のＴｉｅｒ割り当て閾値２０８Ａと、Ｔｉｅｒ２とＴｉｅｒ３のＴｉｅｒ割り当て閾値２０８Ｂについて、対象のページのＩ／Ｏカウンタ７０２のＩ／Ｏ数と比較する。例えばＩ／Ｏカウンタ７０２の値が、Ｔｉｅｒ割り当て閾値２０８Ａよりも大きく、対象のページの現在のＴｉｅｒがＴｉｅｒ２だった場合、対象のページはＴｉｅｒ１にプロモーションするべきなので、再配置は“要”となる。また、対象のページの現在のＴｉｅｒがＴｉｅｒ１だった場合は、既に対象のページはＴｉｅｒ１に配置されているため、再配置は“否”となる。対象のページの現在のＴｉｅｒを知る方法として、ダイナミックマッピングテーブル３０１の仮想ボリューム５０１の論理アドレス５０２とプールボリューム番号との関係から、プールボリューム番号により、現在どのＴｉｅｒに属しているかを判断できる。
【００９０】
そして、ステップＳ１５０３において再配置要の場合、ページ再配置プログラム４０５は、対象ページを再配置する（Ｓ１５０４）。
【００９１】
再配置否の場合と対象ページを再配置した後は、ページ再配置プログラム４０５は、仮想ボリューム内の次ページが再配置対象ページか否かを確認する（Ｓ１５０２，Ｓ１５０３）。
【００９２】
ページ再配置プログラム４０５は、仮想ボリューム全体に渡って再配置処理を行った後は、別の再配置未処理の仮想ボリュームをチェックし、ページ再配置未処理の仮想ボリュームが無くなるまで行う（Ｓ１５０１）。
【００９３】
尚、周期処理であった場合は、周期処理の終わりで一度ページ再配置プログラムは終了し、次の周期処理で改めてページ再配置プログラムによってページ再配置処理は継続されていく。また周期の後端までに再配置処理が終了していた場合は、その時点で一度ページ再配置処理終了し、次の周期で改めて仮想ボリューム毎に再配置処理が行われる。
【００９４】
図１６にて、加重平均算出用カウンタ１（７０３Ａ）値、加重平均算出用カウンタ２（７０３Ｂ）値、およびＩ／Ｏカウンタ値７０２の算出式の例を示す。本実施形態ではまず、ホストＩ／Ｏ処理プログラム４０１や、デステージ処理プログラム４０４等にて一定の周期でカウントした、ページのＩ／Ｏ数カウンタ値（ａ＿ｃｏｕｎｔ）を基に、加重平均算出用カウンタ１値（ｃ［１］＿ｎｅｗ）と、加重平均算出用カウンタ２値（ｃ［２］＿ｎｅｗ）とを算出する（１６０１および１６０２）。そして、加重平均算出用カウンタ１値と、加重平均算出用カウンタ２値との合算により、ページのＩ／Ｏ数（ａ＿ｒｅｓｕｌｔ）を算出する（１６０３）。
【００９５】
まず、加重平均算出用カウンタ１値（ｃ［１］＿ｎｅｗ）は、加重指数テーブル（３０３または３０４または３０７）で管理する、「加重平均算出用カウンタの加重値」（ｐ［１］＿１）と、「Ｉ／Ｏ数カウンタの加重値」（ｐ［１］＿２）とを加重指数１６０７として使用し、１６０４に示す算出式により求める。ここで、加重平均算出用カウンタ１は、短周期のカウンタとして使用するため、「加重平均算出用カウンタの加重値」（ｐ［１］＿１）を、軽めに設定する。図の例では、「加重平均算出用カウンタの加重値」（ｐ［１］＿１）を３、「Ｉ／Ｏ数カウンタの加重値」（ｐ［１］＿２）を１としているが、Ｉ／Ｏ数カウンタの値（最新の測定周期のＩ／Ｏ数）の重みを１とすると、加重平均算出用カウンタの値（過去のＩ／Ｏ数）の重みを３として、Ｉ／Ｏ数カウンタの値を算出することになる。例えば「加重平均算出用カウンタの加重値」（ｐ［１］＿１）を０、つまり無加重と設定すると、算出結果は、過去のＩ／Ｏ数を完全に無視することになるので、最新の測定周期のＩ／Ｏ数の値そのものとなる。算出式は、Ｉ／Ｏ数カウンタ値（ａ＿ｃｏｕｎｔ）と、前回算出した加重平均算出用カウンタ１値（ｃ［１］＿ｏｌｄ）との加重平均を算出する式である。算出した加重平均算出用カウンタ１値（ｃ［１］＿ｎｅｗ）は、次回のＩ／Ｏ数算出時のｃ［１］＿ｏｌｄ値として使用する。このため、加重平均算出用カウンタ１（７０３Ａ）値をｃ［１］＿ｎｅｗで更新する。
【００９６】
同様に、加重平均算出用カウンタ２値（ｃ［２］＿ｎｅｗ）は、加重指数テーブル（３０３または３０４または３０７）で管理する、「加重平均算出用カウンタの加重値」（ｐ［２］＿１）と、「Ｉ／Ｏ数カウンタの加重値」（ｐ［２］＿２）とを加重指数１６０７として使用し、１６０５に示す算出式により求める。ここで、加重平均算出用カウンタ２は、長周期のカウンタとして使用するため、「加重平均算出用カウンタの加重値」（ｐ［２］＿１）を、重めに設定する。図の例では、「加重平均算出用カウンタの加重値」（ｐ［２］＿１）を１２７、「Ｉ／Ｏ数カウンタの加重値」（ｐ［２］＿２）を１としているが、Ｉ／Ｏ数カウンタの値（最新の測定周期のＩ／Ｏ数）の重みを１とすると、加重平均算出用カウンタの値（過去のＩ／Ｏ数）の重みを１２７として、Ｉ／Ｏ数カウンタの値を算出することになる。つまり、上述した短周期の場合と比較し、最新の測定周期のＩ／Ｏ数が加重平均算出用カウンタの値に与える影響が少ないことになる。算出式は、Ｉ／Ｏ数カウンタ値（ａ＿ｃｏｕｎｔ）と、前回算出した加重平均算出用カウンタ２値（ｃ［２］＿ｏｌｄ）との加重平均を算出する式である。算出した加重平均算出用カウンタ２値（ｃ［２］＿ｎｅｗ）は、次回のＩ／Ｏ数算出時のｃ［２］＿ｏｌｄ値として使用する。このため、加重平均算出用カウンタ２（７０３Ｂ）値をｃ［２］＿ｎｅｗで更新する。以上が種別９０３でカウンタ数が２と設定されている場合であるが、種別９０３でカウンタ数が３以上と設定されている場合は、加重平均算出用カウンタ３値（ｃ［３］＿ｎｅｗ）以降のカウンタについても同様にして算出を実行する。また、種別９０３でカウンタ数が１と設定されている場合は、前述の加重平均算出用カウンタ２値（ｃ［２］＿ｎｅｗ）の算出は実施しない。
【００９７】
ページのＩ／Ｏ数（ａ＿ｒｅｓｕｌｔ）は、加重平均算出用カウンタ１値（ｃ［１］＿ｎｅｗ）と、加重平均算出用カウンタ２値（ｃ［２］＿ｎｅｗ）とを基に、加重指数テーブル（３０３または３０４または３０７）で管理する「合算方法」に従って、平均値または、最大値として算出する（１６０６）。平均値、最大値を計算する時は、前記加重指数テーブルで管理する、加重平均算出用カウンタ１の「合算時加重値」（ｐ［１］＿ｍｅｒｇｅ）および、加重平均算出用カウンタ２の「合算時加重値」（ｐ［２］＿ｍｅｒｇｅ）を合算時加重値１６０８として使用し、各加重平均算出用カウンタの重みづけを行う。Ｉ／Ｏカウンタ値７０２は、算出したページのＩ／Ｏ数（ａ＿ｒｅｓｕｌｔ）で更新する。以上が種別９０３でカウンタ数が２と設定されている場合であるが、種別９０３でカウンタ数が３以上と設定されている場合は、加重平均算出用カウンタ３値（ｃ［３］＿ｎｅｗ）以降のカウンタについても同様にして算出を実行する。また、種別９０３でカウンタ数が１と設定されている場合は、平均値および最大値の算出を実行しない。
【００９８】
以上説明したように、「加重平均算出用カウンタの加重値」（ｐ［Ｘ］＿１）及び「Ｉ／Ｏ数カウンタの加重値」（ｐ［Ｘ］＿２）を、加重平均算出用カウンタごとに異なる値を設定することが可能である。（ｐ［Ｘ］＿１÷ｐ［Ｘ］＿２）の値（比重）を、各加重平均算出用カウンタで異なる値とすることにより、異なる周期の負荷を合わせたＩ／Ｏ数（ａ＿ｒｅｓｕｌｔ）が算出できる。（ｐ［Ｘ］＿１÷ｐ［Ｘ］＿２）＞（ｐ［Ｙ］＿１÷ｐ［Ｙ］＿２）であれば、加重平均算出用カウンタＸが長周期、加重平均算出用カウンタＹが短周期となる。
【００９９】
また、図１６の式ではＩ／Ｏカウンタ値算出（１６０６）時に、加重平均算出用カウンタのみを参照しているが、Ｉ／Ｏ数カウンタ値（ａ＿ｃｏｕｎｔ）そのものを最大値又は平均値の算出対象として含めてもよい。その場合は、同様にして、Ｉ／Ｏ数カウンタ値（ａ＿ｃｏｕｎｔ）用の合算時加重値を設け、その乗算を含めてもよい。例えば、ｐ［１］＿１が０だった場合は、ｃ［１］＿ｎｅｗの算出結果はＩ／Ｏ数カウンタ値（ａ＿ｃｏｕｎｔ）と同等であるため、加重平均算出用カウンタ１値（ｃ［１］＿ｎｅｗ）を設けずに、代わりに上述の方法でＩ／Ｏ数カウンタ値（ａ＿ｃｏｕｎｔ）を使用することで、加重平均算出用カウンタ１値（ｃ［１］＿ｎｅｗ）による記憶領域の使用量を削減することができる。
【０１００】
最大値の場合、Ｉ／Ｏ数の急激な上昇に対して、長周期の視点での低いカウンタ値により低めの値となってしまうことがなく、より敏感にプロモーションを実施できるという効果がある。また、最大値の場合、プール全体からするとＩ／Ｏ数が上昇し、相対的に、Ｔｉｅｒの最大性能を低く考えることになり、急激な負荷変動に対してネック状態となりにくい、余裕をもったＴｉｅｒ配置となる。
【０１０１】
平均値の場合、Ｉ／Ｏ数の急激な上昇に対して、長周期の視点での低いカウンタ値との平均となるため、滑らかになるため、最大値よりも敏感なプロモーションを実施できないが、プロモーションによるＴｉｅｒ間のページ再配置の量を削減できる。また、平均値の場合、最大値と比較し、プール全体からするとＩ／Ｏ数が実際のＩ／Ｏ数に近くなるという性質があり、Ｔｉｅｒの最大性能を引き出すＴｉｅｒ配置が可能となる。
【０１０２】
なお、本実施形態では、加重平均算出用カウンタのパラメータ（加重指数）を変更できるようにしている。これは、ホストＩ／Ｏの特性に変化が生じ、加重平均算出用カウンタの修正が必要となった場合に、パラメータを変更することでその修正に対応できるようにしたものである。
【０１０３】
具体的には、ホストＩ／Ｏの特性として、一時的な負荷停止期間が短くなった場合である。例えば、測定周期は１時間周期だった場合に、平日（５日間）動作して週末（２日間）動作しないジョブがあったとする。そのジョブが、４時間毎に２時間、周期的に稼働するようにスケジュールが変更された場合、２時間程度の負荷停止期間があることになる。この場合、従来想定していた土日の２日間程度の負荷停止期間とは異なるため、長周期用の加重平均算出用カウンタを用いなくても、短周期用の加重平均算出用カウンタのみで、２時間の負荷停止期間に対するデモーションを抑止できる場合がある。具体的には加重平均算出用カウンタ１値（ｃ［１］＿ｎｅｗ）のｐ［１］＿１とｐ［１］＿２を３と１に設定することにより、一つの加重平均算出用カウンタによる負荷指標のみでも、長周期の視点（従来の設定では短周期に相当）で、特定のページの一時的なＩ／Ｏ数低下によるデモーションを抑止しつつ、特定のページのＩ／Ｏ数の上昇に対して、設定周期（１時間）での迅速なプロモーションが可能となる。この場合、従来の設定で使用していた２つ目の加重平均算出用カウンタを管理装置からの指示により解放させることにより、モニタリングに必要なメモリ使用量、計算負荷の低減を図れる。
【０１０４】
また、システムの運用中に、途中で測定周期を変更する場合、上述した本方式は時間的な重み付けが変わってしまう。時間的な重み付けを同等に維持するには、変更した測定周期に応じて、負荷の重みを変更する。例えば、現在の測定周期が１時間の場合で、加重指数がｐ［１］＿１＝３、ｐ［１］＿２＝１（Ｓｈｏｒｔ−Ｒａｎｇｅ）、ｐ［２］＿１＝１２７、ｐ［２］＿２＝１（Ｌｏｎｇ−Ｒａｎｇｅ）の場合を考える。この場合、測定周期をｔ時間に変更する場合、加重指数をｐ［１］＿１＝４÷ｔ−１、ｐ［１］＿２＝１、ｐ［２］＿１＝１２８÷ｔ−１、ｐ［２］＿２＝１に設定する。前記のように加重指数の補正を実施すると、時間的な重み付けを同等に維持することができる。一般的には、現在の測定周期がｔ１時間の場合に、測定周期をｔ２時間に変更する場合、今までの加重指数をｐとして、次の設定すべき加重指数をｑで表すと、ｑ［Ｘ］＿１＝（ｐ［Ｘ］＿１＋ｐ［Ｘ］＿２）÷（ｔ２÷ｔ１）−ｐ［Ｘ］＿２、ｑ［Ｘ］＿２＝ｐ［Ｘ］＿１となる。現在の測定周期をこの加重指数の補正は、ストレージシステムが上述の計算式により測定周期の設定変更に応じて自動的に算出してもよいし、ユーザが上述の計算式により計算してＧＵＩから設定してもよい。
【０１０５】
図１７は、加重平均算出処理プログラム４０３のフローチャートである。
【０１０６】
まず、ステップＳ１７０１では、加重平均算出処理プログラム４０３は、対象ページのページ加重指数テーブルの設定が有るか無いかを判断する。具体的には、加重平均算出処理プログラム４０３は、ページ加重指数テーブル３０４に、対象ページのエントリが有るか無いかを調べる。対象ページのエントリが有る場合は、加重平均算出処理プログラム４０３は、ステップＳ１７０４にジャンプし、加重指数の設定値として対象ページの加重値を用いることと決定し（ステップＳ１７０４）、ステップＳ１７０７にジャンプする。また、対象ページのエントリが無い場合は、加重平均算出処理プログラム４０３は、ステップＳ１７０２にジャンプする。
【０１０７】
Ｓ１７０２では、加重平均算出処理プログラム４０３は、対象ページを含む対象仮想ボリュームの仮想ボリューム加重指数テーブルの設定が有るか無いかを判断する。具体的には、加重平均算出処理プログラム４０３は、仮想ボリューム加重指数テーブル３０４に、対象ページを含む対象仮想ボリュームのエントリが有るか無いかを調べる。対象仮想ボリュームのエントリがある場合は、加重平均算出処理プログラム４０３は、ステップＳ１７０６にジャンプし、加重指数の設定値として対象仮想ボリュームの加重値を用いることと決定し（ステップＳ１７０６）、ステップ１７０７にジャンプする。対象仮想ボリュームのエントリが無い場合は、加重平均算出処理プログラム４０３は、ステップＳ１７０３にジャンプする。
【０１０８】
Ｓ１７０３では、加重平均算出処理プログラム４０３は、対象ページを含む対象プールのプール加重指数テーブルの設定が有るか無いかを判断する。具体的には、加重平均算出処理プログラム４０３は、対象ページを含むプールをダイナミックマッピングテーブルから調べ、当該プールを対象プールとし、対象プールのエントリが有るか無いかを調べる。対象プールのエントリがある場合は、加重平均算出処理プログラム４０３は、ステップＳ１７０５にジャンプし、加重指数の設定値として対象プールの加重値を用いることと決定し（ステップＳ１７０５）、ステップＳ１７０７にジャンプする。対象プールのエントリが無い場合は、加重平均算出処理プログラム４０３は、ステップＳ１７０７にジャンプする。
【０１０９】
ステップＳ１７０７では、加重平均算出処理プログラム４０３は、ステップＳ１７０４、またはステップＳ１７０５、またはステップＳ１７０６で決定した加重値のうち、加重平均算出用カウンタ１（Ｓｈｏｒｔ−Ｒａｎｇｅ）の種別を用いて、加重平均算出用カウンタ１（Ｓｈｏｒｔ−Ｒａｎｇｅ）のカウンタ値を算出する。算出方法は、図１６で説明したので詳細を割愛する。
【０１１０】
ステップＳ１７０８では、加重平均算出処理プログラム４０３は、ステップＳ１７０４、またはステップＳ１７０５、またはステップＳ１７０６で決定した加重値のうち、加重平均算出用カウンタ２（Ｌｏｎｇ−Ｒａｎｇｅ）の種別を用いて、加重平均算出用カウンタ２（Ｌｏｎｇ−Ｒａｎｇｅ）のカウンタ値を算出する。算出方法は、図１６で説明したので詳細を割愛する。
【０１１１】
ステップＳ１７０９では、加重平均算出処理プログラム４０３は、ステップＳ１７０７で算出された加重平均算出用カウンタ１の値と、ステップＳ１７０８で算出された加重平均算出用カウンタ２の値を用いて、Ｉ／Ｏカウンタのカウンタ値を算出する。算出方法は、図１６で説明したので詳細を割愛する。
【０１１２】
なお、ここでは加重平均算出用カウンタが２個の場合を例に説明した。加重平均算出用カウンタがＮ個の場合は、各加重平均算出用カウンタについてステップＳ１７０７ないしはステップＳ１７０８に相当するステップを実行して加重平均算出用カウンタ値を算出し、ステップＳ１７０９において、Ｎ個の加重平均算出用カウンタを用いてＩ／Ｏカウンタ値を算出すればよい。
【０１１３】
図１８は、プール単位にページ再配置処理を行うときの、モニタモードや合算方法、カウンタ数等の設定を行う画面の例を示す図である。
【０１１４】
プール単位のページ再配置処理設定画面１８０１は、設定対象のプールを特定できるプール番号を表示する領域１８０２と、モニタモードを選択する領域１８０３と、モニタモードが「加重モード」を選択した場合の詳細設定を行う領域１８０８で構成される。
【０１１５】
ここで、モニタモードは、本発明で開示する加重平均算出によってページ再配置を決定する「加重モード」と、従来技術で開示するＩ／Ｏ数のみによってページ再配置を決定する「非加重モード」である。
【０１１６】
モニタモードが「加重モード」を選択した場合の詳細設定を行う領域１８０８は、加重平均の合算方法を設定する領域１８０４と、加重平均を算出するカウンタ数を設定する領域１８０５と、加重平均を算出するカウンタの加重値を入力する領域１８０６と、予め設定された加重平均算出方法を選択できるプリセット選択を選ぶ領域１８０７から構成される。
【０１１７】
領域１８０４、１８０５、１８０６が設定されたとき、ストレージシステムは、プール加重指数テーブルの、領域１８０２で特定されるプールのエントリを新規設定ないしは更新する。具体的には、領域１８０５の設定された数字に等しい加重平均算出用カウンタ番号エントリを設ける。各加重平均算出用カウンタ番号エントリには、領域１８０６に設定された値のうち、「旧」の値は、「加重平均算出用カウンタの加重値」種別として登録する。「新」の値は、「Ｉ／Ｏカウンタの加重値」種別として登録する。「合」の値は、「合算時加重値」種別として登録する。領域１８０４で「平均」が選択された場合、「合算方法」種別は「ＡＶＧ」を登録する。領域１８０４で「最大」が選択された場合、「合算方法」種別は「ＭＡＸ」を登録する。合算方法の設定領域１８０４で「最大」が選択された場合、プール加重指数テーブルの設定対象のプールを特定できるプール番号を表示する領域１８０２で示されたプールの合算時加重値は、「ＭＡＸ」を登録する。
【０１１８】
なお、上記で述べた詳細設定の設定値を「ｐｒｅＳｅｔ１」のようなラベルで保存しておき、領域１８０７で簡便に設定できるようにしてもよい。
【０１１９】
図１９は、仮想ボリューム単位にページ再配置処理を行うときの、モニタモードや合算方法、カウンタ数等の設定を行う画面の例を示す図である。
【０１２０】
仮想ボリューム単位のページ再配置処理設定画面１９０１は、設定対象の仮想ボリュームを特定できる仮想ボリューム番号を表示する領域１９０２と、モニタモードを選択する領域１９０３と、モニタモードが「加重モード」を選択した場合の詳細設定を行う領域１９０８で構成される。
【０１２１】
ここで、モニタモードは、本発明で開示する加重平均算出によってページ再配置を決定する「加重モード」と、従来技術で開示するＩ／Ｏ数のみによってページ再配置を決定する「非加重モード」と、プール単位のページ再配置処理を行うために仮想ボリューム単位の再配置処理を実行しないことを示す「非設定」である。
【０１２２】
モニタモードが「加重モード」を選択した場合の詳細設定を行う領域１９０８は、図１８と同様の領域で構成されるため、説明を省略する。違いは、仮想ボリューム加重指数テーブルのエントリを新規設定ないしは更新する点である。
【０１２３】
図２０は、ページ単位にページ再配置処理を行うときの、モニタモードや合算方法、カウンタ数等の設定を行う画面の例を示す図である。
【０１２４】
ページ単位のページ再配置処理設定画面２００１は、設定対象のページを特定できる、仮想ボリューム番号と論理アドレスを表示する領域２００２と、モニタモードを選択する領域２００３と、モニタモードが「加重モード」を選択した場合の詳細設定を行う領域２００８で構成される。
【０１２５】
ここで、モニタモードは、本発明で開示する加重平均算出によってページ再配置を決定する「加重モード」と、従来技術で開示するＩ／Ｏ数のみによってページ再配置を決定する「非加重モード」と、プール単位あるいは仮想ボリューム単位のページ再配置処理を行うために仮想ボリューム単位の再配置処理を実行しないことを示す「非設定」である。
【０１２６】
モニタモードが「加重モード」を選択した場合の詳細設定を行う領域２００８は、図１８と同様の領域で構成されるため、説明を省略する。違いは、ページ加重指数テーブルのエントリを新規設定ないしは更新する点である。
【０１２７】
以上の算出法を採用すると、例えば週末（土日）だけ動作しないバッチジョブなどで、一時的に負荷が低下しても、長い期間のモニタと同様に、デモーションを抑止でき、月曜日の性能低下を抑止できる。且つ短周期でプロモーションが実施でき、日常業務の負荷への追随が可能となる。その効果を具体的に示したグラフが図２１である。
【０１２８】
グラフ２１０１は、週末（土日）の負荷低下時のＩ／Ｏカウンタの持続効果を示したものである。ｐ［１］＿１＝３、ｐ［１］＿２＝１（Ｓｈｏｒｔ−Ｒａｎｇｅ）、ｐ［２］＿１＝１２７、ｐ［２］＿２＝１（Ｌｏｎｇ−Ｒａｎｇｅ）として算出している。縦軸は負荷のＩ／Ｏ数を表し、横軸は時間経過を表す。線２１０３は、ページの実際のＩ／Ｏ数の時間的変化、つまりＩ／Ｏ数カウンタ値（ａ＿ｃｏｕｎｔ）を表すグラフである。線２１０４は、加重平均算出用カウンタ１値（ｃ［１］＿ｎｅｗ）（Ｓｈｏｒｔ−Ｒａｎｇｅ）の時間的変化を表すグラフである。線２１０５は、加重平均算出用カウンタ２値（ｃ［２］＿ｎｅｗ）（Ｌｏｎｇ−Ｒａｎｇｅ）の時間的変化を表すグラフである。線２１０６は、本発明の方法によるページのＩ／Ｏ数（ａ＿ｒｅｓｕｌｔ）の時間的変化を表すグラフである。線２１０７は、Ｔｉｅｒ割り当て閾値２０８を表す線である。Ｉ／Ｏ数カウンタ値（ａ＿ｃｏｕｎｔ）及び加重平均算出用カウンタ１値（ｃ［１］＿ｎｅｗ）（Ｓｈｏｒｔ−Ｒａｎｇｅ）は、土日（横軸の２４時間目〜７２時間目）の負荷低減に対して、Ｔｉｅｒ割り当て閾値２０８よりも低い値となるため、デモーションが発生する。しかし、本発明の方法によるページのＩ／Ｏ数（ａ＿ｒｅｓｕｌｔ）は、Ｔｉｅｒ割り当て閾値２０８を下回っていないので、デモーションの発生を抑止できる。
【０１２９】
グラフ２１０２は、短周期でのプロモーションが実施できることを示したグラフである。ｐ［１］＿１＝３、ｐ［１］＿２＝１（Ｓｈｏｒｔ−Ｒａｎｇｅ）、ｐ［２］＿１＝１２７、ｐ［２］＿２＝１（Ｌｏｎｇ−Ｒａｎｇｅ）として算出している。縦軸は負荷のＩ／Ｏ数を表し、横軸は時間経過を表す。線２１０８は、ページの実際のＩ／Ｏ数の時間的変化、つまりＩ／Ｏ数カウンタ値（ａ＿ｃｏｕｎｔ）を表すグラフである。線２１０９は、加重平均算出用カウンタ１値（ｃ［１］＿ｎｅｗ）（Ｓｈｏｒｔ−Ｒａｎｇｅ）の時間的変化を表すグラフである。線２１１０は、加重平均算出用カウンタ２値（ｃ［２］＿ｎｅｗ）（Ｌｏｎｇ−Ｒａｎｇｅ）の時間的変化を表すグラフである。線２１１１は、本発明の方法によるページのＩ／Ｏ数（ａ＿ｒｅｓｕｌｔ）の時間的変化を表すグラフである。線２１１２は、Ｔｉｅｒ割り当て閾値２０８を表す線である。高い負荷（線２１０８に示す）が発生した場合に、加重平均算出用カウンタ２値（ｃ［２］＿ｎｅｗ）（Ｌｏｎｇ−Ｒａｎｇｅ）は、追従が遅れ、Ｔｉｅｒ割り当て閾値２０８を上回るのが２４時間以降となってしまい、プロモーションが負荷の上昇発生時から大幅に遅れるが、本発明の方法によるページのＩ／Ｏ数（ａ＿ｒｅｓｕｌｔ）（線２１０９）は、負荷の上昇に迅速に追随することが可能であり、短周期でプロモーションが実施できる。
【０１３０】
また、上述以外の方法として、測定周期を短周期のままとして、長周期（数週間以上）のＩ／Ｏ数の頻度の両方を保持する方法も考えられる。測定周期を１時間とすると、毎測定周期のＩ／Ｏ数を履歴データとしてそれぞれ数週間分（数百個分）保持し、毎測定周期に、数週間分の毎測定周期のＩ／Ｏ数のデータ（数百個分）を用いて一定の加重値を掛け、長周期のＩ／Ｏ数を算出する方法が考えられる。この方法はモニタリングの対象とする要素数が少ない場合には実装可能であるが、本発明のモニタリングの対象はページ単位であり、システムあたりの要素数は膨大である。このような場合は、算出に必要な記憶領域の容量が膨大となってしまい、またその集計処理にかかる時間も膨大となる。最初に述べた加重平均算出用カウンタを用いた方法であれば、ページの粒度でＩ／Ｏ数を採取する場合でも、周期の長さに依存せず、数個の加重平均算出用カウンタのみで算出可能であり、算出に必要な記憶領域の容量を削減することができ、またその集計処理にかかる時間も短くすることが可能となる。
【０１３１】
また、上述以外の方法として、長周期、短周期でそれぞれＩ／Ｏ数のカウンタを持ち、それぞれの周期で更新していく方法が考えられる。この方法だと、上述のように長周期分の測定周期毎のＩ／Ｏ数の履歴を持つ必要はないため、算出に必要な記憶領域の容量を削減することができるが、各測定周期が長周期の切れ目に差し掛かる瞬間に、急激に変わってしまう場合があり、毎測定周期で純粋に、現時点から過去に渡る公平な加重とならないため、長周期の変わり目にデモーションが集中してしまう場合がある。最初に述べた加重平均算出用カウンタを用いた方法であれば、現時点から過去に渡る公平な加重とすることができ、この方法よりもデモーションが特定時点に集中して発生しないようにすることができる。
【産業上の利用可能性】
【０１３２】
本発明は、ストレージシステムの自動階層管理機能に係るものであり、一時的なＩ／Ｏ数低下によるデモーションを抑止しつつ、短周期の視点でのＩ／Ｏ数の上昇に対してプロモーションを可能とすることができ、高速な上位階層のドライブで多くのＩ／Ｏを処理することができるようになり、下位階層でのボトルネックを解消し、ストレージシステムの性能を向上させることができる計算機システムに適用可能である。
【符号の説明】
【０１３３】
１０１  ホスト
１０２  管理サーバ
１０３  ネットワーク
１０４  ストレージシステム
１０５  外部ストレージ
１０６  ポート
１０７  保守Ｉ／Ｆ
１０８  ポート
１０９  プロセッサパッケージ
１１０  キャッシュメモリ
１１１  共有メモリ
１１２  内部ネットワーク
１１３  ドライブ
１１４  ドライブ
１１５  Ｔｉｅｒ（階層）１
１１６  Ｔｉｅｒ（階層）２
１１７  Ｔｉｅｒ（階層）３
１１８  ローカルメモリ
１１９  プロセッサ
【図１】
0005543668.tif 000002
【図２】
0005543668.tif 000003
【図３】
0005543668.tif 000004
【図４】
0005543668.tif 000005
【図５】
0005543668.tif 000006
【図６】
0005543668.tif 000007
【図７】
0005543668.tif 000008
【図８】
0005543668.tif 000009
【図９】
0005543668.tif 000010
【図１０】
0005543668.tif 000011
【図１１】
0005543668.tif 000012
【図１２】
0005543668.tif 000013
【図１３】
0005543668.tif 000014
【図１４】
0005543668.tif 000015
【図１５】
0005543668.tif 000016
【図１６】
0005543668.tif 000017
【図１７】
0005543668.tif 000018
【図１８】
0005543668.tif 000019
【図１９】
0005543668.tif 000020
【図２０】
0005543668.tif 000021
【図２１】
0005543668.tif 000022