(57)【要約】【課題】ストレージシステムの性能に関する評価支援を行う技術を提供する。【解決手段】性能評価支援プログラムは、コンピュータに、ストレージシステムに含まれる複数の記憶装置群であって、読み出し要求・書き込み要求のうち少なくともいずれかを含む要求に対する応答性能が互いに異なる複数の記憶装置群の各構成及び各記憶装置群についての要求に対する最大応答時間に関する情報を取得し、各記憶装置群に対して、応答時間が最大応答時間となる単位時間当たりの要求発行頻度である最大要求発行頻度を算出し、複数の記憶装置群での単位容量への要求発行頻度であって頻度順に並べた要求発行頻度と要求発行頻度の確率とがジップ分布に従う場合、ジップ分布から記憶装置群毎に要求の発行数の累積値を算出し、最大要求発行頻度と要求発行の累積値とを用いて、記憶装置群の性能に関する評価基準値を生成する処理を実行させることにより、上記課題の解決を図る。【選択図】図１
2014174845.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
ストレージシステムに含まれる複数の記憶装置群であって、読み出し要求及び書き込み要求のうち少なくともいずれかを含む要求に対する応答性能が互いに異なる該複数の記憶装置群のそれぞれの構成に関する情報及び記憶装置群のそれぞれについての前記要求に対する最大応答時間に関する情報を取得し、
取得した前記情報を用いて、前記複数の記憶装置群のそれぞれに対して、応答時間が前記最大応答時間となる単位時間当たりの要求発行頻度である最大要求発行頻度を算出し、
前記複数の記憶装置群における単位容量への前記要求発行頻度であって頻度順に並べた該要求発行頻度と、該要求発行頻度の確率とがジップ分布に従う場合、該ジップ分布から、前記記憶装置群毎に、該記憶装置群に対する要求の発行数の累積値を算出し、
前記最大要求発行頻度と前記要求の発行数の累積値とを用いて、前記記憶装置群の性能に関する評価基準値を生成する
処理を実行させることを特徴とする性能評価支援プログラム。
【請求項２】
前記評価基準値の生成において、前記複数の記憶装置群のうち最も前記応答性能のよい第1の記憶装置群に対して該第1の記憶装置群の論理容量と同じ容量を割り当て、前記第１の記憶装置群以外の記憶装置群に対して、前記記憶装置群の前記要求の発行数の累積値を用いて、前記最大応答時間以内に応答できる前記要求発行頻度が最大の値になる容量を算出する
ことを特徴とする請求項１に記載の性能評価支援プログラム。
【請求項３】
前記評価基準値の生成において、前記複数の記憶装置群のそれぞれの論理容量の比率を算出する
ことを特徴とする請求項１または２に記載の性能評価支援プログラム。
【請求項４】
前記評価基準値の生成において、予め指定された前記複数の記憶装置群全体に対する単位時間当たりの要求発行頻度と、前記ジップ分布とを用いて、前記記憶装置群間の単位時間当たりの要求発行頻度を算出する
ことを特徴とする請求項１〜３のうちいずれか１項に記載の性能評価支援プログラム。
【請求項５】
前記評価基準値の生成において、前記記憶装置群毎の前記最大要求発行頻度を前記要求発行数の累積値で割った値のうち最も小さい値と、前記ジップ分布とを用いて、前記記憶装置群間の単位時間当たりの前記要求発行頻度を算出する
ことを特徴とする請求項１〜４のうちいずれか１項に記載の性能評価支援プログラム。
【請求項６】
前記評価基準値の生成において、前記記憶装置群毎の前記最大要求発行頻度を、該記憶装置群に対する要求の発行数の累積値で除算して得られた値のうち、最も小さい値を出力する
ことを特徴とする請求項１に記載の性能評価支援プログラム。
【請求項７】
前記除算して得られた値のうち、前記複数の記憶装置群のうち最も前記応答性能のよい第１の記憶装置群以外の記憶装置である第２及び第３の記憶装置群に対応する前記値同士を比較し、比較した結果、小さい方の値に対応する記憶装置群を決定し、
決定した前記記憶装置群の格納容量を最大容量から少なくすることによって、前記記憶装置群が処理できる前記要求数が最大になる格納容量を算出する
ことを特徴とする請求項６に記載の性能評価支援プログラム。
【請求項８】
ストレージシステムに含まれる複数の記憶装置群であって、読み出し要求及び書き込み要求のうち少なくともいずれかを含む要求に対する応答性能が互いに異なる該複数の記憶装置群のそれぞれの構成に関する情報及び記憶装置群のそれぞれについての前記要求に対する最大応答時間に関する情報を取得する取得部と、
取得した前記情報を用いて、前記複数の記憶装置群のそれぞれに対して、応答時間が前記最大応答時間となる単位時間当たりの要求発行頻度である最大要求発行頻度を算出する頻度算出部と、
前記複数の記憶装置群における単位容量への前記要求発行頻度であって頻度順に並べた該要求発行頻度と、該要求発行頻度の確率とがジップ分布に従う場合、該ジップ分布から、前記記憶装置群毎に、該記憶装置群に対する要求の発行数の累積値を算出する累積値算出部と、
前記最大要求発行頻度と前記要求の発行数の累積値とを用いて、前記記憶装置群の性能に関する評価基準値を生成する基準値算出部と、
を備えることを特徴とする性能評価支援装置。
【請求項９】
コンピュータにより実行されるストレージシステムの性能評価の基準値の算出方法であって、
前記コンピュータは、
前記ストレージシステムに含まれる複数の記憶装置群であって、読み出し要求及び書き込み要求のうち少なくともいずれかを含む要求に対する応答性能が互いに異なる該複数の記憶装置群のそれぞれの構成に関する情報及び記憶装置群のそれぞれについての前記要求に対する最大応答時間に関する情報を取得し、
取得した前記情報を用いて、前記複数の記憶装置群のそれぞれに対して、応答時間が前記最大応答時間となる単位時間当たりの要求発行頻度である最大要求発行頻度を算出し、
前記複数の記憶装置群における単位容量への前記要求発行頻度であって頻度順に並べた該要求発行頻度と、該要求発行頻度の確率とがジップ分布に従う場合、該ジップ分布から、前記記憶装置群毎に、該記憶装置群に対する要求の発行数の累積値を算出し、
前記最大要求発行頻度と前記要求の発行数の累積値とを用いて、前記記憶装置群の性能に関する評価基準値を生成する
ことを特徴とする性能評価支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムの性能評価支援に関する。
【背景技術】
【０００２】
階層ストレージとは、性能・容量単位あたりの価格が異なる記憶媒体を組み合わせて、高性能と低価格と言う２つの特徴を両立して実現する方式である。
階層ストレージに関する技術として、第１の技術がある。第１の技術では、ストレージシステム内の異なる階層のページを、高い階層のページに対応する少なくとも１台の高速ストレージデバイスと、低い階層のページに対応する１台の低速ストレージデバイスとを含む、異なる速度のストレージデバイスに、マップする。サイズがページサイズよりも大きい大ファイルの各ファイルに対して、大ファイルに関するサブファイル階層管理を実行して大ファイルの各部分のアクセス特性を混合ボリュームの割り当てられたページの対応階層に適合させる。これにより、大ファイルの異なる部分のアクセス特性に従って大ファイルを異なる階層のページ間で割り当てる。これにより、固定のページサイズを有し、異なる階層に属する複数のページを含む混合ボリュームを有するストレージシステムにおいて、複数のファイルのデータ位置を管理する。
【０００３】
階層ストレージに関する他の技術として、第２の技術がある。第２の技術では、ディスクアレイ制御部は、CPU（Central Processing Unit）と統計情報蓄積手段とを有する。CPUは、論理ディスクの構成の適否を判定する性能判定手段を備える。統計情報蓄積手段は、基準応答時間決定手段を備える。基準応答時間決定手段は、入出力コマンドの負荷を投入し、処理性能情報を実測した統計データから求める初期基準値と、通常業務上で入出力コマンド処理を実行したときの処理性能情報を統計データに追加することで求める予測基準値とを決定する。これにより、適正な性能の基準値を決定する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１９２２５９号公報
【特許文献２】特表２０１１−５０３７５４号公報
【特許文献３】特開２０１０−１１３３８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
階層ストレージは、性能に応じて記憶装置を組み合わせて構築されるため、各記憶装置にかかる入出力負担の管理が難しく、記憶装置の配置または負荷の分散等、リソースの配分の調整が難しい。このようなことから、ストレージシステムの運用に際して、運用の指針となる性能の評価が容易でない。
【０００６】
本発明は、一側面として、ストレージシステムの性能に関する評価支援を行う技術を提供する。
【課題を解決するための手段】
【０００７】
性能評価支援プログラムは、コンピュータに、以下の処理を実行させる。コンピュータは、ストレージシステムに含まれる複数の記憶装置群のそれぞれの構成に関する情報及び該複数の記憶装置群のそれぞれについての要求に対する最大応答時間に関する情報を取得する。複数の記憶装置群は、読み出し要求及び書き込み要求のうち少なくともいずれかを含む要求に対する応答性能が互いに異なる。コンピュータは、取得した情報を用いて、複数の記憶装置群のそれぞれに対して、応答時間が前記最大応答時間となる単位時間当たりの要求発行頻度である最大要求発行頻度を算出する。コンピュータは、複数の記憶装置群における単位容量への要求発行頻度であって頻度順に並べた要求発行頻度と、要求発行頻度の確率とがジップ分布に従う場合、ジップ分布から、記憶装置群毎に、記憶装置群に対する要求の発行数の累積値を算出する。コンピュータは、最大要求発行頻度と要求の発行数の累積値とを用いて、記憶装置群の性能に関する評価基準値を生成する。
【発明の効果】
【０００８】
本発明の一側面によれば、ストレージシステムの性能に関する評価支援を行うことができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態における性能評価支援装置のブロック図を示す。
【図２】階層ストレージ装置の一例を示す。
【図３】階層ストレージの構成例を示す。
【図４】階層ボリュームの容量割り当てを説明するための図である。
【図５】容量最適閾値、性能最適閾値、設定負荷閾値、最大負荷閾値に対する、容量割合閾値、I/O頻度閾値を説明するための図である。
【図６】ｋ番目に単位時間当たりのI/O発行数の頻度が大きいSub-LUNの頻度についてのジップ分布を示す。
【図７】各階層にかかる負荷の算出について説明するための図である。
【図８】最大負荷の算出方法について説明するための図である。
【図９】第１の実施形態におけるREADが跨るストライプブロック数の期待値について説明するための図である。
【図１０】第１の実施形態における最適容量閾値・最適性能閾値算出処理を実行するコンピュータのハードウェアブロック図を示す。
【図１１Ａ】第１の実施形態における最適容量閾値・最適性能閾値算出処理のフロー（その１）を示す。
【図１１Ｂ】第１の実施形態における最適容量閾値・最適性能閾値算出処理のフロー（その２）を示す。
【図１２】３つのディスクのRAIDレベル毎、及びブロックサイズ毎の仮想WRITEコスト（V）の測定結果を示す図である。
【図１３】第１の実施形態における入力画面の一例を示す。
【図１４Ａ】第１の実施形態における出力画面の一例（その１）を示す。
【図１４Ｂ】第１の実施形態における出力画面の一例（その２）を示す。
【図１５】SSDによって構成されるRAID に対するREAD割合毎のI/O頻度と、そのレスポンス時間との関係を示す。
【図１６】性能のボトルネックとなっている階層の使用容量を減らすことを説明するための図である。
【図１７】性能のボトルネックとなっている階層から減らしたSub-LUN数と各階層から算出される全体性能との関係を示す図である。
【図１８Ａ】第２の実施形態における最適性能・最適使用容量算出処理のフロー（その１）を示す。
【図１８Ｂ】第２の実施形態における最適性能・最適使用容量算出処理のフロー（その２）を示す。
【図１９】第２の実施形態における入力画面の一例を示す。
【図２０】第２の実施形態における出力画面の一例を示す。
【発明を実施するための形態】
【００１０】
図１は、本実施形態における性能評価支援装置のブロック図を示す。性能評価支援装置１は、取得部２、頻度算出部３、累積値算出部４、基準値算出部５を含む。
取得部２は、ストレージシステムに含まれる複数の記憶装置群のそれぞれの構成に関する情報及び該複数の記憶装置群のそれぞれについての前記要求に対する最大応答時間に関する情報を取得する。複数の記憶装置群は、読み出し要求及び書き込み要求のうち少なくともいずれかを含む要求に対する応答性能が互いに異なる。取得部２の一例として、ＣＰＵ２２等のプロセッサが挙げられる。具体的には、取得部２は、冗長化方式情報、冗長化方式に応じた表記で示される記憶装置の数、使用容量、読み出し要求の割合、平均I/O（Input/Output）データサイズ、平均レスポンス時間、内部処理時間を表す定数と、記憶装置定数とを取得する。冗長化方式情報（RAID（Redundant Arrays of Independent Disks）レベル）は、ストレージシステムにおけるデータ冗長化方式に関する情報である。冗長化方式に応じた表記で示される記憶装置の数（RAIDメンバ）は、冗長化方式に応じてRAIDストライプを構成する記憶装置数（RAIDランク）とパリティデータを格納する記憶装置数とを区別した表記で記される。読み出し要求の割合（READ割合）は、読み出し要求及び書き込み要求を含む要求に対する読み出し要求の割合である。平均I/Oデータサイズは、読み出し要求および書き込み要求に対して読み込まれるもしくは書き出されるデータの平均データサイズである。内部処理時間を表す定数（仮想WRITEコスト）は、ストレージシステムにおける書き込み要求に対する内部処理時間を表す定数である。記憶装置定数（ディスク定数）は、記憶装置の種類によって決定される定数である。
【００１１】
頻度算出部３は、取得した前記情報を用いて、複数の記憶装置群のそれぞれに対して、応答時間が前記最大応答時間となる単位時間当たりの要求発行頻度である最大要求発行頻度を算出する。頻度算出部３の一例として、ＣＰＵ２２等のプロセッサが挙げられる。頻度算出部３は、各記憶装置群から読み出される平均I/Oデータサイズを、読み出し要求または書き込み要求に応じて読み込まれるまたは書き込まれる記憶装置の個数の期待値（I/Oが跨るストライプブロック数の期待値）に変換する。頻度算出部３は、RAIDレベル、RAIDランク、I/Oが跨るストライプブロック数の期待値を用いて、記憶装置群毎に、データ冗長化方式に対する特徴量を示す冗長化係数（RAID係数）を算出する。頻度算出部３は、RAIDレベル、RAIDランク、I/Oが跨るストライプブロック数の期待値、使用率（ｖ＝１）、ディスク定数を用いて、記憶装置群毎に、記憶装置の性能に対する特徴量を示す記憶装置係数（ディスク係数）を算出する。頻度算出部３は、ディスク係数、RAID係数、READ割合、仮想WRITEコストを用いて、相変化多重度を算出する。相変化多重度は、要求の数に対して応答時間が一定である低負荷相と、要求の数に対してストレージ装置への読み出し要求または書き込み要求が単位時間当たりに重なる個数を表す多重度が指数関数的に増加する高負荷相との境界となる多重度を示す。頻度算出部３は、平均レスポンス時間、RAID係数、ディスク係数、相変化多重度を用いて、後述する式（１）の性能モデルの逆関数の近似値を算出することにより、各記憶装置群の単位時間当たりの入出力数（I/O頻度）であるIOPS（Input Output Per Second）の最大値を最大要求発行頻度として算出する。
【００１２】
累積値算出部４は、複数の記憶装置群における単位容量への要求発行頻度であって頻度順に並べた要求発行頻度と、要求発行頻度の確率とがジップ分布に従う場合、ジップ分布から、記憶装置群毎に、記憶装置群に対する要求の発行数の累積値を算出する。ジップ分布とは、「出現頻度がｋ番目に大きい要素が全体に占める割合は、１／ｋに比例する」（ｋ：整数）という経験則に基づく分布をいう。累積値算出部４の一例として、ＣＰＵ２２等のプロセッサが挙げられる。
【００１３】
基準値算出部５は、最大要求発行頻度と要求の発行数の累積値とを用いて、記憶装置群の性能に関する評価基準値を生成する。基準値算出部５の一例として、ＣＰＵ２２等のプロセッサが挙げられる。
このように構成することにより、ストレージシステムの性能に関する評価支援を行うことができる。
【００１４】
基準値算出部５は、複数の記憶装置群のうち最も応答性能のよい第1の記憶装置群に対して第1の記憶装置群の論理容量と同じ容量を割り当てる。基準値算出部５は、第１の記憶装置群以外の記憶装置群に対して、記憶装置群の前記要求の発行数の累積値を用いて、最大応答時間以内に応答できる前記要求発行頻度が最大の値になる容量を算出する。
このように構成することにより、性能最適の場合における各階層の容量割合閾値を算出することができる。
【００１５】
基準値算出部５は、複数の記憶装置群のそれぞれの論理容量の比率を算出する。このように構成することにより、容量最適の場合における各階層の容量割合閾値を算出することができる。
【００１６】
基準値算出部５は、予め指定された複数の記憶装置群全体に対する単位時間当たりの要求発行頻度と、ジップ分布とを用いて、記憶装置群間の単位時間当たりの要求発行頻度を算出する。このように構成することにより、容量最適・性能最適の場合における設定負荷条件での階層間のI/O発行閾値を算出することができる。
【００１７】
基準値算出部５は、記憶装置群毎の最大要求発行頻度を要求発行数の累積値で割った値のうち最も小さい値と、ジップ分布とを用いて、記憶装置群間の単位時間当たりの要求発行頻度を算出する。このように構成することにより、容量最適・性能最適の場合における最大負荷条件での階層間のI/O頻度閾値を算出することができる。
【００１８】
基準値算出部は、記憶装置群毎の最大要求発行頻度を、記憶装置群に対する要求の発行数の累積値で除算して得られた値のうち、最も小さい値を出力する。このように構成することにより、全ての階層で平均レスポンスの条件を満たすことができる最大負荷（最適性能）を算出することができる。
【００１９】
基準値算出部５は、除算して得られた値のうち、複数の記憶装置群のうち最も応答性能のよい第１の記憶装置群以外の記憶装置である第２及び第３の記憶装置群に対応する値同士を比較し、比較した結果、小さい方の値に対応する記憶装置群を決定する。基準値算出部は、決定した記憶装置群の格納容量を最大容量から少なくすることによって、記憶装置群が処理できる要求数が最大になる格納容量を算出する。このように構成することにより、各階層の平均レスポンスの条件を満たしつつ使用容量を少なくしていった場合に、最大の性能が得られる容量（最適使用容量）を算出することができる。
【００２０】
以下に本実施形態の詳細を説明する。
＜第１の実施形態＞
第１の実施形態では、対象となる階層ストレージシステムの構成に関して、容量最適・性能最適・設定負荷・最大負荷の条件にて運用する際に運用の指針となる容量割合閾値、I/O頻度閾値を提供する技術について説明する。
【００２１】
ストレージは、データを記憶する媒体（ハードディスク等）、もしくはそれらで構成された装置である。第１の実施形態では、性能を予測する対象の装置の一例としてRAID（Redundant Arrays of Independent Disks）を挙げているので、ストレージと表記した場合には、RAIDと同義である。
【００２２】
RAIDは、複数の記憶媒体を用い、データを分散したり、冗長性を持たせつつ格納する技術であり、性能向上や信頼性（記憶媒体が故障してもデータ消失することが無い）を実現する技術、または上記技術を用いてデータを格納する装置（RAID装置）を示す。RAID装置はRAIDの実現に必要な構成要素（ディスク装置（記憶媒体）、コントローラ（CPU）、キャッシュ（メモリ））を含み、それぞれ、RAIDディスク、RAIDコントローラ、RAIDキャッシュと呼ぶ。
【００２３】
RAIDには、その実装方法によって様々な種類があり、それぞれに対して番号が振られている（RAID1、RAID5、RAID6等）。その番号をRAIDレベルと呼ぶ。例えばRAID5のRAIDレベルは、“5”である。
【００２４】
RAIDメンバとは、RAIDレベルによって、データ分散方式や冗長性の構築方式が異なり、これらを数式によって表したものである。RAID5の場合、データ分割単位であるRAIDストライプに対してデータ冗長を実現するパリティデータを１つ作成するので、ストライプを構成する分割数と併せて、“4＋1“のように表記される。RAID6の場合、RAIDストライプに対してパリティを２つ作成するので、“6＋2”のように表記される。RAIDを構築する場合に必要なRAIDディスクの数は、表記の式を計算した値である。例えば、RAID5 4＋1には５台のディスクが必要である。
【００２５】
RAIDランクとは、RAIDメンバに対して、RAIDストライプを構成する分割数を抜き出したものである。例えば、RAID5 4＋1 のRAIDランクは、4である。
I/O（Input／Output）は、READ／WRITEと同じ意味であり、READコマンドもしくはWRITEコマンド、要するに、ストレージに対する入出力を示す。なお、ストレージの観点から、READ ＝ Output、WRITE ＝ Input と定義される。
【００２６】
図２は、階層ストレージ装置の一例を示す。以下の定義に従って、ディスクプールを階層化し、階層ストレージ装置１０を形成する。階層ストレージ装置１０は、RAIDコントローラ１１、キャッシュメモリ１２、SSDディスクプール１４、Online SASディスクプール１６、Nearline SASディスクプール１８を含む。
【００２７】
階層ストレージとは、SSD, Online SAS, Nearline SASといった性能・容量単位当たりの価格が異なる記憶媒体を組み合わせ、高性能と低価格という２つの特徴を両立して実現する方式である。SSDは、Solid State Driveを表す。SASは、Serial Attached SCSI（Small Computer System Interface）を表す。階層ストレージは、データの冗長化を行うRAID装置に階層ストレージ機能を付加することで実現する。
【００２８】
階層ストレージ装置１０では、SSD, Online SAS, Nealine SAS各々の記憶装置で、RAIDを構築する。RAIDを構築した複数の記憶装置をRAIDグループ（１３，１５，１７）と呼ぶ。また、同じ記憶装置・RAID種別・RAIDメンバからなるRAIDグループ群をディスクプール（１４，１６，１８）と呼ぶ。
【００２９】
通常のRAIDは、ひとつのディスクプールから容量を割り当て、論理ボリュームを構築する。階層ストレージ機能を利用する論理ボリュームは、複数のディスクプールから容量を割り当てる。階層ストレージ機能を利用した論理ボリュームを、単に階層ボリュームと呼ぶ。論理ボリューム内において、よりアクセス頻度の多いデータを高速なディスク・RAIDからなるディスクプールに配置する事によって、高性能を実現する。
【００３０】
論理ボリューム内において、ほとんどアクセス頻度が少ないデータを低速（低価格）なディスク・RAIDからなるディスクプールに配置することによって、大容量と低価格を実現する。I/O頻度は、１秒間当たりにREADもしくはWRITE要求が発行された平均個数で表されるアクセス頻度であり、IOPS（Input Output par Second）という単位で評価される。
【００３１】
RAIDを構成するディスクとして、SSD、Online SAS、Nearline SASを用いる。SSD、Online SAS、Nearline SASの順に、高性能であると定義する。RAIDを構成するディスクが同じ場合、RAID5、RAID6の順に高性能であると定義する。RAIDを構成するディスクが同じで、RAIDレベルも同じ場合、RAIDランクが大きい方を高性能であると定義する。例えば、階層ストレージは、３階層もしくは２階層で構成される。高性能層にはSSDで構成されるRAIDが当てはまるものとする。図３に、階層ストレージの構成例を示す（以降、階層構成と呼ぶ）。
【００３２】
次に階層ボリュームの容量割り当てについて、図４を用いて説明する。図４（A）に示すように、通常の論理ボリュームの場合、RAIDグループ毎にRAIDボリュームという論理的なボリュームが作成される。このRAIDボリュームは、LUN（Logical Unit Number）よりも細かい管理単位であるSub-LUN（Logical Unit Number）という単位で分割管理されている。
【００３３】
論理ボリュームを新規に作成する際に、ある指定されたストレージプールの任意のRAIDボリュームにおける（他の論理ボリュームに使われていない）Sub-LUNを必要数割り当てる。この割り当てたSub-LUNを（任意の順番で）組み合わせたものを論理ボリュームとし、ユーザがアクセスするボリュームとする。
【００３４】
一方、図４（B）に示すように、階層ボリュームを新規に作成する場合は、階層構成で指定されたストレージプールの任意のRAIDボリュームから、それぞれ適宜な量のSub-LUNを割り当てる。この割り当てたSub-LUNを（任意の順番で）組み合わせたものを階層ボリュームとし、ユーザがアクセスするボリュームとする。よりアクセス頻度が多いSub-LUNを上位の階層に移動し、よりアクセス頻度が少ないSub-LUNを下位の階層に移動することで、階層ストレージ機能を実現する。実際にSub-LUNを移動させる場合には、移動先階層の任意のSub-LUN（移動先Sub-LUN）を新たに割り当て、移動先Sub-LUNに移動するSub-LUN（移動元）の内容をコピーし、移動元Sub-LUNの割り当てを解放する。これにより、Sub-LUNの移動を実現する。
【００３５】
次に、第１の実施形態で使用する容量に関する名称について説明する。物理記憶装置（ディスク）の総容量から算出可能な、RAIDグループもしくは各階層（ディスクプール）の総容量を、論理容量と呼ぶ。例えば、物理容量が600[ギガバイト（GB）]であるディスクを用いてRAID5 (3＋1)を組んだ場合、そのRAIDグループの論理容量は1800[GB]である。また、上記のRAIDグループ５つから構成される階層の論理容量は9000[GB]である。
【００３６】
（複数の）ボリュームを構成するために、RAIDグループもしくは各階層（ディスクプール）から（Sub-LUN単位で）割り当てられている容量を、使用容量と呼ぶ。例えば、論理容量が1800[GB]であるRAIDグループから900[GB]の領域が（複数の）ボリュームに割り当てられている場合、そのRAIDグループの使用容量は900[GB]である。
【００３７】
RAIDグループもしくは各階層において、論理容量に対する使用容量の割合を、使用率と呼ぶ。例えば、論理容量1800[GB]であるRAIDグループの使用容量が900[GB]である場合、そのRAIDグループの使用率は50%である。
【００３８】
ある階層ボリュームにおいて、各階層から割り当てられている容量の割合を、容量比という。例えば、ある10[テラバイト（TB）]の階層ボリュームが、その1[TB]を高性能層、4[TB]を中性能層、5[TB]を低性能層から割り当てられている場合、高性能層、中性能層、低性能層の容量比は、10%, 40%, 50%である。
【００３９】
次に、容量割合閾値方式とI/O頻度閾値方式について説明する。階層ストレージは、一定期間Sub-LUNに対するアクセス頻度を測定し、その値を元に移動するSub-LUNを決定する。移動するSub-LUNを決定する方式には、容量割合閾値方式、I/O頻度閾値方式の２種類がある。
【００４０】
容量割合閾値方式とは、階層構成もしくは階層ボリュームに対して、割り当てられるSub-LUN数の何%を高性能層から割り当て、何%を中性能層から割り当てるかという容量比を指定する方式である。例えば、100個のSub-LUNが必要な階層ボリュームに対して、5%を高性能層から、20%を中性能層から割り当てると指定した場合、アクセス頻度が高い上位5個のSub-LUNを高性能層から割り当てる。その次にアクセス頻度が高い上位20個のSub-LUNを中性能層から割り当て、残りの75個を低性能層から割り当てる。
【００４１】
I/O頻度閾値方式とは、階層構成もしくは階層ボリュームに対して、I/O頻度がいくつ以上のものは高性能層から、I/O頻度がいくつ以下のものは低性能層から割り当てるかというI/O頻度（＝アクセス頻度）を直接指定する方式である。
【００４２】
容量割合閾値方式及びI/O頻度閾値方式の双方とも、評価期間（アクセス頻度を計測する期間）の測定値を基に、Sub-LUNをアクセス頻度でソートして各Sub-LUNが割り当てられるべき階層を決定する。そして、実際にSub-LUNが割り当てられている階層と異なるSub-LUNを移動する。第1の実施形態では、容量割合閾値、I/O頻度閾値をまとめて閾値を呼ぶ。
【００４３】
容量割合閾値方式の場合、容量割合閾値は、一般的に階層構成における各階層の論理容量の割合と同じ値に設定することが多い。高性能層の論理容量が1[TB]、中性能層の論理容量が5[TB]、低性能層の論理容量が19[TB]であった場合、高性能層から4%（1／25＝0.04）・中性能層から20%（5／25＝0.2）割り当てられるように設定することが多い。このように設定すると、使用容量が増えていった場合にも安全に使用することができる。
【００４４】
しかしながら、容量割合閾値方式、I/O頻度閾値方式のいずれでも、ある階層構成に対してひとつの閾値しか算出できない。階層構成に対して何通りかの閾値を算出し、階層ストレージの使い方に合わせて最適な閾値を設定して運用したほうがよい。階層ストレージは、論理容量に対して空き容量がある方が性能は良い。より高性能なストレージを必要とするユーザからは、論理容量を全て使わずに、階層ストレージ全体の性能を最もよく発揮する閾値で運用するような使い方が求められている。
【００４５】
ストレージ装置もしくRAID装置を運用する場合、性能の制限条件（最長レスポンス）が設定され、運用の指標としている。例えば、Online SASディスクで構成されたRAIDの場合は、平均レスポンスが0.020[sec]を超えると、ストレージに対して過剰な負荷がかけられていると判断し、負荷の分散をさせた方がよい。この平均レスポンスの値を、最長レスポンスと呼ぶ。
【００４６】
そこで、階層ストレージに関しても、各階層に対して最長レスポンスが設定されていると考え、その制限条件を守るとする。例えば、SSD層は平均レスポンスとして0.050[sec]、Online SAS層は平均レスポンスとして0.020[sec]、Nearline SAS層は平均レスポンスとして0.030[sec]という値を設定する。そして、階層ストレージを運用する際に、各階層での平均レスポンスがこれらの値を超えないような運用を行う。
【００４７】
階層ストレージは階層毎に性能統計値（平均I/O頻度や平均レスポンス）を取得している場合が多いので、性能統計値を確認することが出来る。階層ストレージはSub-LUN毎の性能統計値を基に、Sub-LUNの移動を行う装置であるので、Sub-LUN毎の性能統計値を計測している。特定の階層から割り当てられているSub-LUNに関して、Sub-LUN毎の性能統計値を平均すれば、各階層の性能統計値を算出することができる。第１の実施形態では、上記のレスポンスに対する制限条件を、レスポンス条件と呼ぶ。
【００４８】
第1の実施形態では、ある階層構成に対して、以下に説明するように、容量最適閾値、性能最適閾値、最大負荷閾値、設定負荷閾値の４種類の閾値を算出する。
【００４９】
まずは、容量最適閾値について説明する。使用容量を、各階層の論理容量の比を容量比として割り当て、この場合の容量割合閾値、I/O頻度閾値を容量最適閾値として算出する。このように使用することで、階層構成全体を効率よく使用することが出来る。
【００５０】
次に性能最適閾値について説明する。各階層の容量比を論理容量の比とは異なる値にする。これにより、各階層における使用率を意図的に偏らせる。一般的に階層ストレージは空き容量があるほど性能が良い。最も性能が良くなるような容量比を算出し、この場合の容量割合閾値、I/O頻度閾値を性能最適閾値として算出する。このように使用することで、階層構成の性能をもっとも高い状態で使用することが出来る。
【００５１】
容量最適閾値及び性能最適閾値は、各々さらに以下の２種類の閾値に細分化される。各階層においてレスポンス条件を満足することができる、最大の負荷がかけられた場合の閾値（容量割合閾値、I/O頻度閾値）を、最大負荷閾値という。また、指定された値の負荷がかけられた場合の閾値（容量割合閾値、I/O頻度閾値）を、設定負荷閾値という。この閾値の種類の細分化に対して、容量割合閾値は負荷に依存しないため同じ値であるが、I/O頻度閾値は負荷に依存するため、異なる値をとる。
【００５２】
閾値の種類のまとめと、次のようになる。図５に示すように、容量最適閾値と性能最適閾値は設定負荷閾値と最大負荷閾値に細分される。容量割合閾値は、設定負荷・最大負荷に関わらず、同じ値である。容量割合閾値は、各階層への容量比の形で表される。図５では、高性能層、中性能層、低性能層の容量比が、容量最適閾値の場合、5％：20：75％、性能最適閾値の場合、10％：15％：75％となっておる。
【００５３】
I/O頻度閾値には、容量最適・性能最適、さらにそれぞれの設定負荷閾値・最大負荷閾値の４種類が存在する。I/O頻度閾値は、各階層間のSub-LUN単位のI/O頻度の値の形で表される3.0 [IOPS] − 0.12 [IOPS]という場合、I/O頻度が3.0以上のSub-LUNは高性能層に割り当てられ、I/O頻度が0.12より小さいSub-LUNは低性能層に割り当てられるものとする。
【００５４】
ここで、階層ストレージは、Sub-LUNに対するユーザのアクセス頻度に偏りがあることを前提にする。格納されているデータに対して、頻繁にアクセスするデータと、あまりアクセスしないデータが存在する。逆に言えば、Sub-LUNに対するユーザのアクセス頻度に偏りが無い場合は、階層ストレージ機能の効果が全く発揮されない。偏りを表す一般的な確率分布として、ジップ分布がある。
【００５５】
以下にジップ分布について説明する。「出現頻度がｋ番目に大きい要素が全体に占める割合は、１／ｋに比例する」（ｋ：整数）という経験則をジップの法則という。ウェブページのアクセス頻度、都市の人口、ある作品中に現れる単語の頻度、ある曲における音譜の使用頻度、地震の規模などに適用できることが知られている、経験則である。この法則に従う確率分布（離散分布）をジップ分布という。
【００５６】
よって、第１の実施形態ではSub-LUNをアクセス頻度ごとにソートすると、その分布はジップ分布に従うことを前提とする。
【００５７】
ジップ分布は、以下の式で表される。
【数１】
2014174845.tif 000003
・ｆ（k；N）：N個のSub-LUN中、ｋ番目に頻度（＝I/O頻度）が大きいSub-LUNの頻度
・N：使用するSub-LUN数
【数２】
2014174845.tif 000004
階層構造全体に係る負荷（I/O頻度）をXとすると、図６に示すように、Ｘf（k；N）でｋ番目に頻度が大きいSub-LUNのI/O頻度が求められる。
【００５８】
第１の実施形態では、以下の式（１）で表される性能モデルを用いて、平均応答時間が任意の値になる最大の負荷を算出する。
【数３】
2014174845.tif 000005
R:RAIDランク、ER:READコマンドが跨るストライプブロック数の期待値、D:ディスク定数、v:ボリューム使用割合、V:仮想WRITEコスト、c：READ割合
【００５９】
WRITEコマンドは100%キャッシュヒットを前提とするので、平均応答時間（W）とすると、一定なWRITEレスポンス（WW）から、以下の式より、READレスポンス（WR）を算出することができる。
WR＝（１／ｃ）（W−（１−ｃ）WW）
【００６０】
式（１）の性能モデルの方程式を解くことによって、READ I/O頻度（XR）を算出することができる。また、READ I/O頻度から、以下の式を用いて階層構成全体の負荷（X）を算出することができる。
X＝XR／ｃ
【００６１】
上述したジップ分布より、各階層に割り当てられるSub-LUN数（容量比及び使用容量）が分かり、階層構成全体の総負荷が分かれば、図７及び以下の式に示すように、各階層にかかる負荷を算出することができる。
・高性能層に割り当てられるSub-LUN数：S1
・中性能層に割り当てられるSub-LUN数：S2
・低性能層に割り当てられるSub-LUN数：S3
・（Sub-LUN数単位の）総使用容量：N＝ S1＋S2＋S3
【数４】
2014174845.tif 000006
・階層構成全体にかかる総負荷：X
各階層にかかる負荷は、図７に示すように、グラフとX軸がなす領域の面積に相当する。
【００６２】
ここで、ジップ分布の計算には、調和級数の部分和を求めることが必要である。
【数５】
2014174845.tif 000007
【００６３】
調和級数の部分和の算出には、オイラーの式を用いて計算の高速化を図る。
【数６】
2014174845.tif 000008
【００６４】
上述したように、階層構成全体の総負荷が分かれば、図７及び以下の式に示すように、各階層に係る負荷を算出することができる。したがって、容量比から、負荷分散予測を行うことができる。このとき、ジップ分布の合計部分を、各階層のジップ分布累積値という。
【数７】
2014174845.tif 000009
・高性能層にかかる負荷：X1＝XZ1
・中性能層にかかる負荷：X2＝XZ2
・低性能層にかかる負荷：X3＝XZ3＝X（１−Z1−Z2）
【００６５】
各階層のジップ分布累積値の式を以下のように変形し、計算量を削減する。
【数８】
2014174845.tif 000010
【００６６】
以下に示すように、高性能層、中性能層を合わせたジップ分布累積値を利用する。
【数９】
2014174845.tif 000011
【００６７】
以上から、以下のステップで、階層構成全体に係る負荷（X）から、容量比及び使用容量を用いて、各階層への負荷分散予測を行うことができる。Sub-LUN単位の使用容量N及び高性能層の割り当て容量S1、中性能層の割り当て容量S2から、高性能層のジップ分布累積値Z1、及び高性能層・中性能層を合わせたジップ分布累積値Z12を求める。Z1、Z12からZ2、Z3を求める。XZ1、XZ2、XZ3によって、各階層にかかる負荷（I/O頻度）を求める。
【００６８】
階層構成全体にかかる負荷に各階層のジップ分布累積値をかけると、各階層にかかる負荷を求めることができることから、各階層のジップ分布累積値は各階層に対する負荷の割合であることが分かる。
【００６９】
容量最適閾値の場合、階層ボリュームの容量比は、各階層の論理容量の比に等しい。各階層の論理容量が以下である場合を考える。
・高性能層の論理容量：L1
・中性能層の論理容量：L2
・低性能層の論理容量：L3
この場合の容量割合閾値は、以下の計算で算出できる。
・高性能層の容量比：R1＝L1／（L1＋L2＋L3）
・中性能層の容量比：R2＝L2／（L1＋L2＋L3）
・低性能層の容量比：R3＝L3／（L1＋L2＋L3）
【００７０】
また、Sub-NUN単位の使用容量（N）が分かれば、各層に割り当てられるSub-LUN数が算出できる。
・高性能層に割り当てられるSub-LUN数：S1＝NR1
・中性能層に割り当てられるSub-LUN数：S2＝NR2
・低性能層に割り当てられるSub-LUN数：S3＝NR3
・これらの値は、実際には、整数に丸められる。
【００７１】
次に、性能最適の場合の容量比を算出する。高性能層（SSD）は、中性能層や低性能層より非常に性能がよいので、無限の性能があると仮定する。この場合、容量を高性能層から割り当てるほど全体の性能がよいので、高性能層の割り当て容量は論理容量と同じであるとする（使用率が100%）。ユーザのアクセスするデータの頻度はジップ分布に従うと仮定しているので、この場合でも無限の負荷が高性能層にかかるわけではない。
【００７２】
中性能層及び低性能層における、レスポンス条件を満たす最大負荷（I/O頻度）は、式（１）より計算できる。
・中性能層におけるレスポンス条件を満たす最大I/O頻度：XM2
・低性能層におけるレスポンス条件を満たす最大I/O頻度：XM3
【００７３】
上記のように、中性能層には平均レスポンスの条件があるため、高性能層と同様に、中性能層からできる限り割り当てることはできない。中性能層から優先的に割り当てた結果、中性能層に負荷がかかり過ぎて、中性能層における平均レスポンスが最長レスポンスを超えてしまうことがあり得る。ある程度、低性能層にも容量を割り当てて、中性能層・低性能層共に、レスポンス条件を満たすような容量割り当てを行う必要がある。
【００７４】
そこで、中性能層・低性能層の各層に分散される負荷の比が、各々の最大負荷の比と同じになる状態が性能最適であるとする。このようにすれば、各階層でなるべくレスポンス条件を満たすような容量比を算出することができる。階層構成全体にかかる負荷をX、高性能層にかかる負荷をX1とする。中性能層にかかる負荷X2は、
X2＝{XM2／（XM2＋XM3）}（X−X1）
とする。
【００７５】
上記は負荷で中性能層にかかる負荷を算出したが、ジップ分布累積値は各階層における負荷の割合を表すので、負荷をジップ累積値に置き換えても中性能層にかかる負荷の算出式は成立する。
Z2＝{XM2／（XM2＋XM3）}（1−Z1）
【００７６】
具体的な計算方法を以下に示す。
・使用容量から求められる総Sub-LUN数：N
・高性能層の論理容量から求められるSub-LUN数：S1
・高性能層のジップ分布累積値：Z1＝（ln S1＋γ）／（ln N＋γ）
・中性能層・低性能層を合せたジップ分布累積値は全体から高性能層のジップ分布累積値を引いた値である。
・Z23＝１−Z1
・中性能層の最大I/O頻度：XM2
・低性能層の最大I/O頻度：XM3
・中性能層のジップ分布累積値は、上記Z23を最大I/O頻度の比で分けた値とする。
・Z2＝(1−Z1)｛XM2／ (XM2＋XM3)｝
【００７７】
さらに、中性能層に割り当てられるSub-LUN数をS2として、以下のように式を導出する。
【数１０】
2014174845.tif 000012
上記の式をS2について解いて、これを算出する。
【数１１】
2014174845.tif 000013
・低性能層に割り当てられるSub-LUN数：S3＝N−S1−S2
【００７８】
次に、最大負荷・設定負荷閾値の算出について説明する。容量最適・設定負荷閾値の場合、各階層に割り当てられる容量比は各階層の理論容量で決定されるので、容量割合閾値は負荷に依存しない。I/O頻度閾値は負荷に依存するが、容量比が上記の値で固定であるので、以下のように計算できる。高性能層・中性能層・低性能層に割り当てられるSub-LUN数がそれぞれS1、S2、S3であるとする（Sub-LUN単位の使用容量N＝S1＋S2＋S3）。
【００７９】
第１の実施形態にかかるプログラムの操作者は、予めユーザが階層ストレージ装置に対して発行する負荷を測定済であるとし、その値を設定負荷（X1）として入力する。
【００８０】
求めるI/O頻度閾値はS1番目及び（S1＋S2）番目のSub-LUNにおけるI/O頻度であるので、高性能層−中性能層間のI/O頻度閾値（τ12）及び中性能層−低性能層間のI/O頻度閾値（τ23）は、ジップ分布より以下の式で算出できる。
【数１２】
2014174845.tif 000014
【００８１】
容量最適・最大負荷閾値の場合、まずは、各階層のレスポンス条件を満たす、階層構成全体にかかる最大負荷を算出する必要がある。性能最適閾値の算出の場合と同様に、高性能層は無限の性能があると仮定し、中性能層及び低性能層におけるレスポンス条件を満たす最大負荷を式（１）より計算する。
・中性能層におけるレスポンス条件を満たす最大I/O頻度：XM2
・低性能層におけるレスポンス条件を満たす最大I/O頻度：XM3
【００８２】
また、各階層に割り当てられているSub-LUN数が分かっているので、各階層のジップ分布累積値が計算できる。
・高性能層のジップ分布累積値：Z1＝(ln S1＋γ)／(ln N＋γ)
・高性能層・中性能合わせたジップ分布累積値：Z12＝{(ln S1＋S2)＋γ}／(ln N＋γ)
・中性能層のジップ分布累積値：Z2＝Z12−Z1
・低性能層のジップ分布累積値：Z3＝1−Z12
【００８３】
中性能層、低性能層それぞれに対し、最大I/O頻度をジップ分布累積値で割り、それらの小さい方を最大負荷（XM）とする。
【数１３】
2014174845.tif 000015
【００８４】
この最大負荷に対して、設定負荷の場合と同様にI/O頻度閾値を算出する。
【数１４】
2014174845.tif 000016
【００８５】
最大負荷の算出方法の考え方を、図８を用いて説明する。中性能層・低性能層の最大I/O頻度から各々のジップ分布累積値を割った値は、各階層の性能から算出される全体の性能に相当する。図８において、太い実線で囲まれた面積が中性能層の最大I/O頻度、細い実線で囲まれた面積が中性能層の性能から算出される全体の負荷（XN2）を表す。同様に、太い破線で囲まれた面積が低性能層の最大I/O頻度、細い破線で囲まれた面積が低性能層の性能から算出される全体の負荷（XN3）を表す。
【００８６】
XN2、XN3の最小値を最大負荷とすることによって、全ての階層でレスポンス条件を満足する最大の負荷を算出することができる。
【００８７】
上述したように、性能最適の場合の容量比（各階層から割り当てられるSub-LUN数）は階層構成にかかる負荷に依存しない。各階層から割り当てられるSub-LUN数は、使用容量及び各階層の物理構成と最長レスポンスから算出されるI/O頻度によって決定される。よって、同様に負荷に依存しない容量割合閾値は、階層構成に対して一意に算出される。
【００８８】
性能最適・設定負荷の場合のI/O頻度閾値も、上記Sub-LUN数から、容量最適・設定負荷の場合と同様に計算できる。性能最適・最大負荷の場合のI/O頻度閾値も、上記Sub-LUN数から各階層のジップ分布累積値を計算し、容量最適・最大の場合と同様に、全体の最大負荷を計算し、そこからI/O頻度閾値を計算することで算出できる。
【００８９】
ここで、上述した式（１）の性能モデルについて説明する。ストレージシステムでのRAIDシステムの処理性能が変化する要因としては、ディスク特性、RAID構成、ボリューム構成、ワークロード特性がある。ディスク特性としては、ディスク容量、ディスクの回転数[rpm]（＝シーク時間）がある。ディスクの回転数[rpm]は、後述するように、ディスク定数（D）として考慮される。
【００９０】
RAID構成として、RAIDレベル、RAIDメンバがある。RAIDメンバは、RAIDランク（R）として考慮される。
【００９１】
ボリューム構成は、使用するボリューム割合（v）がある。使用するボリューム割合（v）は、あるRAIDレベル・RAIDメンバで構成されたRAIDグループ全体の容量に対して、実際にデータを格納している容量を示す。ディスク容量をCとすると、RAIDグループの容量はCRと表されるので、使用する容量をLとすると、v＝L／CRとなる。
【００９２】
ワークロード特性は、I/O頻度、平均I/Oサイズ（＝平均ブロックサイズ）、READ：WRITE比がある。
【００９３】
I/O頻度は、単位時間（秒）あたりに処理されたI/Oの個数を示す。READコマンドをカウントしたI/O頻度をREAD I/O頻度と呼ぶ。WRITEコマンドをカウントしたI/O頻度をWRITE I/O頻度と呼ぶ。総I/O頻度を“X”、READ I/O頻度を“XR”、READ I/O頻度を“XW”と表記する。
READ：WRITE比は、READ割合（c）として考慮される（c＝XR／X）。
【００９４】
平均I/Oサイズ（＝平均ブロックサイズ）は、１回のリクエスト（I/O）で送られるデータサイズを示す。平均I/Oサイズは、READが跨るストライプブロック数の期待値（ER）、WRITEが跨るストライプブロック数の期待値（EW）として考慮される。ここで、図９を用いて、READが跨るストライプブロック数の期待値について説明する。
【００９５】
図９は、第１の実施形態におけるREADが跨るストライプブロック数の期待値について説明するための図である。ブロックサイズが異なれば、RAIDの性能は異なる。すなわち、ブロックサイズが大きい程、ディスクにアクセスするデータ量が大きくなり、レスポンス時間が長くなる。しかし、ディスク単体でレスポンス時間を測定した場合は、この影響はほとんどレスポンス性能に表れない。実際にディスクからの読み出し・書き出しに要する時間の変化は、ブロックサイズの違いによってレスポンスにほとんど影響を及ぼさないということが分かる。
【００９６】
ところがRAIDでレスポンス時間を測定すると、ブロックサイズが大きい程、レスポンス性能は悪くなる。これは、I/Oがストライプブロックを跨る場合に、I/Oがストライプブロック単位に分割されることで、複数のディスクにアクセスするため、性能が悪くなると考えられる。
【００９７】
ディスクは、図９（A）に示すように、論理的にストライブブロック単位で分割され、RAIDグループの各ディスクに対して同じ位置のストライプブロック（D1〜D4）でストライプが作成され、この単位で冗長性を保つためにパリティ（P）が作成される。
【００９８】
RAIDグループ内のディスクは全く同じもの（同じ容量のもの）を使用する。RAID5、RAID6の場合は、各ストライプにおけるパリティが格納されるディスクは、ストライプによって異なる。
【００９９】
すなわち、ブロックサイズが性能に影響を及ぼすのではなく、アクセスするディスク数が性能に影響を及ぼす。I/Oが行われるディスク数を、I/Oが跨ぐストライプブロック数と同じであると見積り、その期待値を計算する。
【０１００】
I/Oが跨るストラップブロック数の期待値の算出方法について説明する。ストライプ幅（＝ストライプブロックのサイズ）は、使用するRAIDによって異なる。第１の実施形態では、ストライプ幅（＝ストライプブロックのサイズ）は64 K byte（KB）、ディスクブロックサイズを0.5 KBとする。ディスクブロックサイズは、ディスクにおいて格納するデータの基本単位のサイズである。すべてのI/Oにおけるブロックサイズは、ディスクブロックサイズの整数倍である。ユーザ（アプリケーションプログラム）から発行されるブロックサイズは任意の大きさであるが、オペレーティングシステム（OS）で用いられているファイルシステムによって、どのようなシステムでもディスクブロックサイズの整数倍に整形されている。第１の実施形態では、ブロックサイズの平均値を用いるので、この平均値はディスクブロックサイズの整数倍とならない場合もあるが、ディスクブロックサイズの値よりも大きい。第１の実施形態では、説明の便宜のため、平均ブロックサイズは、ディスクブロックサイズの整数倍とする。
【０１０１】
平均ブロックサイズを“r”［KB］と表記する。I/Oのオフセット（アクセスする領域の先頭アドレス）がストライプブロックの境界である場合に、アクセスする最後のストライプブロックにおけるブロックサイズMは、次の式で表される。
M＝ ( (r−0.5) mod 64)＋0.5
また、I/Oがアクセスする最も少ないストライプブロックの個数Nは、次の式で表される。
N＝(r−M＋64)／64
I/Oが跨るストラップブロック数の期待値Eは、次の式で表される。
E＝ (N＋1) (2M−1)／128＋N(128−2M＋1)／128
【０１０２】
READ、WRITEそれぞれの平均ブロックサイズに対して、上記の期待値を算出する。
・READが跨るストライプブロック数の期待値（ER）
・WRITEが跨るストライプブロック数の期待値（EW）
【０１０３】
ここで、I/Oのオフセットが、ストライプブロックの境界と全く同じ場合（図９（B）の（ケース（１））を考える。この場合にアクセスする最後のストライプブロックにおいてアクセスするサイズをMとする。この場合が、I/Oがアクセスするストライプブロック数が最も少ない場合である。
【０１０４】
次に、ケース（１）から、オフセットをディスクブロックサイズずつずらしていき、次の境界のひとつ手前まで動かす（図９（B）のケース（２））ことを考える。ストライプブロック中にディスクブロックは１２８個あるので、I/Oのオフセットは合計１２８通りある。この１２８通りのI/Oのオフセットが、I/Oが跨るストライプブロック数を考えるべき全ての状態である。
【０１０５】
これら全てを考えると、ケース（１）での跨る数をN個とした時に、最大でもN＋1個しか跨らないことが分かる。よって、１２８通りの中で、跨る数がN個の場合と、N＋1個の場合、それぞれが何通りあるか数えれば良い。
【０１０６】
ケース（１）から、I/Oの最後がストライプブロックの境界に重なる場合（図９（B）ケース（３））までがN個で、ケース（３）以降からケース（２）までがN＋1個である。ケース（２）で、N＋1個目のストライプブロックにアクセスしているサイズは、M−0.5[KB]である。そのサイズをディスクブロックの個数に換算すると、2M−1となる。よって、跨る数がN＋1個になる確率は、(2M−1)／128となる。したがって、跨る数がN個になる確率は、1−((2M−1)／128)＝(128−2M＋1)／128となる。これらの確率に、各々の値（跨る数）をかけて足し合わせた値が、跨るストライプブロック数の期待値である。
【０１０７】
次に、レスポンス性能モデルについて説明する。ある１つのRAIDグループにおけるランダムアクセス性能（READレスポンス）を予測する式は、次の式（１）で表される。なお、式中のパラメータA、α、εについては、後述する。
【数１５】
2014174845.tif 000017
入力情報XR：READ I/O頻度
出力情報WR：READレスポンス[sec]
パラメータA：RAID係数
α：ディスク係数
ε：相変化多重度
【０１０８】
READの場合は、100%キャッシュミスとなり、WRITEの場合は、100%キャッシュヒットとなることを想定している。したがって、READレスポンスを予測すれば、全体のレスポンスを予測することができる。
【０１０９】
RAID係数Aは、使用するディスクに関係なく、RAIDグループのRAID構成によって決まる値である。RAID5の場合、RAID係数（A）は以下の式（2）で表される。
【数１６】
2014174845.tif 000018
【０１１０】
RAID6の場合、RAID係数（A）は以下の式（2’）で表される。
【数１７】
2014174845.tif 000019
Rは、RAIDランクを示す。ERは、READ I/Oが跨るセグメントブロック数の期待値である。RAIDレベルによって、Aの係数の値（1／2か2／3か）が決まり、RAIDメンバ（RAIDランク）によって分子の値が決まるので、RAID係数はRAID構成によって決定されるといえる。
【０１１１】
ディスク係数（α）は、RAIDグループに関係なく、使用するディスクのディスク特性によって決まる値である。RAID5の場合、ディスク係数（α）は、以下の式（3）で表される。
【数１８】
2014174845.tif 000020
RAID6の場合、ディスク係数（α）は、以下の式（3’）で表される。
【数１９】
2014174845.tif 000021
である。ここで、R：RAIDランク、ER：READ I/Oが跨るセグメントブロック数の期待値、D：ディスク定数（RAIDに関わらず、ディスクの種別（回転数）で一定の値）、v：RAIDグループにおいて、実際にアクセスする領域の割合（０≦v≦１）
【０１１２】
ディスク定数（D）は、ディスクに回転数などディスク特性によって決定される値であるが、全てのディスクに対してモデル化することは困難であるため、使用するディスクに関する測定値を用いる。
【０１１３】
ディスク係数（α）の式にもRAIDランクが含まれる。ここでのRAIDランクは、RAIDレベルが変化してもREAD最少レスポンスが変化しないという測定結果から導き出される項であり、ディスク係数はRAID構成に関係せず、ディスク特性から設定される。ディスク定数Dが回転数などディスクそのものの性質から導き出される性能を示す。
【数２０】
2014174845.tif 000022
の項が、使用割合減少によりシーク時間が確率的に減少することによるディスク性能の向上を見積もる項に相当する。シーク距離Lに対して、シーク時間を（L）1／2で見積もることが可能である。
【０１１４】
次に相変化多重度（ε）について説明する。相変化多重度εはワークロードの特性によって決定される値であり、次の算出式(4)で表される。
【数２１】
2014174845.tif 000023
ここで、α：ディスク係数、A：RAID係数、c：READ割合（I/O頻度におけるREAD I/O頻度の割合）（0≦c≦1）、V：仮想WRITEコスト（WRITEの内部処理コストを見積もった値）
【０１１５】
仮想WRITEコストは、READブロックサイズ（ER）、WRITEブロックサイズ（EW）、アクセスする領域の割合（v）によって変化する値であるため、使用するワークロードについてモデル化することは非常に困難である。そこで、使用するワークロードに関して限定条件を設定し、その限定条件に対する測定値を仮想WRITEコストとして用いる。例えば、v＝１、ER＝EW、READブロックサイズは8[KB]、16[KB]、32[KB]、48[KB]、64[KB]となる。
【０１１６】
αAがREAD最少レスポンス、Vが仮想WRITEコスト、cがREAD割合を表すので、相変化多重度εの値は、ワークロードの特性によって決定されると言える。
【０１１７】
次に、レスポンス性能の評価方法について説明する。ユーザがレスポンスに関して明確な指針を持っている場合、すなわち、RAIDをストレージとして利用するシステムを安全に運用するために、RAIDのレスポンスがある一定値以下でなければならない場合、その基準に対して、レスポンスを直接評価する。例えば、このRAIDに商品データを保存し、Web上での商品販売サイトを作成するのだが、そのためにはRAIDのレスポンスが0.010[sec]以内でないと商品販売サイトを利用するユーザが「遅い」と感じてしまう、というような場合が考えられる。この場合、想定される商品販売サイトのアクセス数からI/O頻度を算出し、そこから算出されたレスポンスが0.010[sec]以内であれば、RAIDは十分な性能であるとみなす。もしくは、レスポンスが0.010[sec]以内に収まるI/O頻度を逆算し、そのI/O頻度から商品販売サイトを安全に運用できるアクセス数を更に逆算することで、商品販売サイト全体の設計を行う。
【０１１８】
一方、ユーザがレスポンスに関して明確な指針を持たない場合、多重度を指標とする。多重度はコマンドのキュー長と同じである。システムのハードウェアにはキュー長の最大値に制限があるものがある。例えば、ホストとRAIDの接続に用いられるFC HBA (Fibre Channel Host Bus Adaptor）は、内部のメモリ量の制限から、キュー長の最大値が30程度に制限されている。多重度がキュー長の最大値30以下であれば、安全に運用できるという評価を行う。
【０１１９】
次に、第１の実施形態における最適容量閾値・最適性能閾値算出処理の詳細を説明する。
図１０は、第１の実施形態における最適容量閾値・最適性能閾値算出処理を実行するコンピュータのハードウェアブロック図を示す。コンピュータ２０は、実施形態の処理を行うプログラムを読み込むことにより、性能評価支援装置として機能する。
【０１２０】
コンピュータ２０は、出力I/F２１、CPU２２、ROM２３、通信I/F２４、入力I/F２５、RAM２６、記憶装置２７、読み取り装置２８、バス２９を含む。コンピュータ２０は、出力機器３１、及び入力機器３２と接続可能である。
【０１２１】
ここで、CPUは、中央演算装置を示す。ROMは、リードオンリメモリを示す。RAMは、ランダムアクセスメモリを示す。I/Fは、インターフェースを示す。バス２９には、出力I/F２１、CPU２２、ROM２３、通信I/F２４、入力I/F２５、RAM２６、記憶装置２７、読み取り装置２８が接続されている。読み取り装置２８は、可搬型記録媒体を読み出す装置である。出力機器３１は、出力I／F２１に接続されている。入力機器３２は、入力I／F２５に接続されている。
【０１２２】
記憶装置２７としては、ハードディスクドライブ、フラッシュメモリ装置、磁気ディスク装置など様々な形式の記憶装置を使用することができる。
【０１２３】
記憶装置２７またはROM２３には、後述する処理を実現するレスポンス性能評価支援プログラム、評価処理で用いるパラメータ、所定の閾値等が格納されている。
【０１２４】
CPU２２は、プロセッサの一例であり、記憶装置２７等に格納した実施形態に係るレスポンス性能評価支援プログラムを読み出し、当該プログラムを実行する。
【０１２５】
実施形態に係るレスポンス性能評価支援プログラムは、プログラム提供者側から通信ネットワーク３０、および通信I／F２４を介して、例えば記憶装置２７に格納してもよい。また、第１の実施形態で説明した処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読み取り装置２８にセットされて、CPU２２によってそのプログラムが読み出されて、実行されてもよい。可搬型記憶媒体としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、IC（integrated circuit）カード、USB（Universal Serial Bus）メモリ装置など様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読み取り装置２８によって読み取られる。
【０１２６】
また、入力機器３２には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレット、タッチパネルなどを用いることが可能である。また、出力機器３１には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク３０は、インターネット、LAN、WAN、専用線、有線、無線等の通信網であってよい。
【０１２７】
図１１Ａ、図１１Ｂは、第１の実施形態における最適容量閾値・最適性能閾値算出処理のフローを示す。まずは、コンピュータ２０は、以下に示すユーザからの入力を受け付ける（Ｓ１）。
・各階層（高性能層、中性能層、低性能層）における、使用されるディスクの種別（タイプ、サイズ、回転数、容量）
・各階層における、RAIDレベル及びRAIDメンバ、RAIDグループ数
・各階層におけるレスポンスの制限値
・上記の階層構成に対して想定される、使用容量と設定負荷（XI）
・平均ブロックサイズ（平均I/Oサイズ）、READ：WRITE比率
【０１２８】
次に、コンピュータは、ユーザからの入力情報を計算しやすい形に変換する（Ｓ２ａ〜Ｓ２ｄ）。すなわち、コンピュータ２０は、READ：WRITE比率から、READ割合（c）を取得する。コンピュータ２０は、平均ブロックサイズから、I/Oが跨るストライプブロック数の期待値（E）を計算する。コンピュータ２０は、各階層のRAIDメンバから、各階層のRAIDランク（R）を取得する。コンピュータ２０は、各階層のディスク容量・RAIDレベル・RAIDランク（R）から、各階層の論理容量を計算する。コンピュータ２０は、各階層の論理容量から各階層のSub-LUN数（L1，L2，L3）及び総Sub-LUN数（LA）を計算する。コンピュータ２０は、使用容量をSub-LUN数（N）に変換する。
【０１２９】
次に、コンピュータは、式（１）の性能モデルで用いるパラメータを取得する（Ｓ３ａ，Ｓ３ｂ）。すなわち、コンピュータ２０は、中性能層・低性能層のディスクの種別から、それぞれのディスク定数（D）を取得する。コンピュータ２０は、中性能層・低性能層のディスク定数、RAIDレベル、平均ブロックサイズから、各階層の仮想WRITEコスト（V）を取得する。階層ストレージの容量割り当ての方式から、Sub-LUNはRAIDボリュームの任意の場所から割り当てられるので、各階層の使用割合（ｖ）は“１”とする。
【０１３０】
次に、コンピュータは、式（１）の性能モデルで用いるパラメータを算出する（Ｓ４ａ，Ｓ４ｂ）。コンピュータ２０は、中性能層・低性能層の、RAIDレベル、RAIDランク（R）、I/Oが跨るストライプブロック数の期待値（E）から、各階層のRAID係数（A）を計算する。コンピュータ２０は、中性能層・低性能層の、RAIDレベル、RAIDランク（R）、I/Oが跨るストライプブロック数の期待値（E）、ディスク定数（D）から、各階層のディスク係数（α）を計算する。コンピュータ２０は、中性能層・低性能層の、RAID係数（A）、ディスク係数（α）、仮想WRITEコスト（V）、READ割合（c）から、相変化多重度（ε）を計算する。
【０１３１】
次に、コンピュータ２０は、式（１）の性能モデルから中性能層、低性能層の最大I/O頻度を算出する（Ｓ５ａ，Ｓ５ｂ）。コンピュータ２０は、各階層の、平均レスポンス、RAID係数（A）、ディスク係数（α）、相変化多重度（ε）から、式（１）の性能モデル式の逆関数の近似解を算出することによって、中性能層の最大I/O頻度（X2）と低性能層の最大I/O頻度（X3）を計算する。
【０１３２】
次に、コンピュータ２０は容量最適の場合の容量割合閾値を計算する（Ｓ６ａ，Ｓ７）。ここでは、コンピュータ２０は、各階層における論理容量から、使用容量（Ｎ）に対するSub-LUN数（S1、S2、S3）と各階層の容量比（R1、R2、R3）を計算する。
【０１３３】
次に、コンピュータ２０は、上記各階層のSub-LUN数から、容量最適の場合におけるジップ分布累積値を算出する（Ｓ８）。ここでは、コンピュータ２０は、使用容量（Ｎ）と高性能層のSub-LUN数（S1）から、高性能層のジップ分布累積値（Z1）を計算する。また、コンピュータ２０は、使用容量（N）と高性能層のSub-LUN数（S1）、中性能層のSub-LUN数（S2）から、高・中性能層合わせたジップ分布累積値（Z12）を計算する。コンピュータ２０は、算出された高性能層のジップ分布累積値（Z1）、高・中性能層合わせたジップ分布累積値（Z12）を用いて、中性能層のジップ分布累積値（Z2）、低性能層のジップ分布累積値（Z3）を計算する。
【０１３４】
次に、コンピュータ２０は、各階層から算出される最大I/O頻度から、容量最適の場合の最大負荷を算出する（Ｓ９）。ここでは、コンピュータ２０は、中性能層の最大I/O頻度（XM2）と中性能層のジップ分布累積値（Z2）から、中性能層から想定される総I/O頻度（XN2）を計算する。コンピュータ２０は、低性能層の最大I/O頻度（XM3）と低性能層のジップ分布累積値（Z3）から、低性能層から想定される総I/O頻度（XN3）を計算する。コンピュータ２０は、中性能層から想定される総I/O頻度（XN2）、低性能層から想定される総I/O頻度（XN3）のうち、小さい方の値を容量最適の場合の最適負荷とする。
【０１３５】
次に、コンピュータ２０は、容量最適の場合の容量割合閾値と設定負荷から、容量最適・設定負荷の場合のI/O頻度閾値を算出する（Ｓ１０）。ここでは、コンピュータ２０は、使用容量（N）・高性能層のSub-LUN数（S1）及び設定負荷（X1）からジップ分布の式により、高性能層−中性能層間のI/O頻度閾値（τ12）を算出する。コンピュータ２０は、使用容量（N）、高性能層のSub-LUN数（S1）、中性能層のSub-LUN数（S2）及び設定負荷（XI）から、ジップ分布の式により、中性能層−低性能層間のI/O頻度閾値（τ23）を算出する。
【０１３６】
次に、コンピュータ２０は、容量最適・設定負荷の場合の各階層の負荷分散予測を行う（Ｓ１１）。コンピュータ２０は、設定負荷（XI）と高性能層のジップ分布累積値（Z1）より、高性能層にかかる負荷（X1）を算出する。コンピュータ２０は、設定負荷（XI）と中性能層のジップ分布累積値（Z2）より、中性能層にかかる負荷（X2）を算出する。コンピュータ２０は、設定負荷（XI）と低性能層のジップ分布累積値（Z3）より、低性能層にかかる負荷（X3）を算出する。
【０１３７】
次に、コンピュータ２０は、容量最適・設定負荷の場合の性能予測を行う（Ｓ１２）。高性能層の平均レスポンス（W1）は、負荷に関わらず、I/Oが跨るストライプブロック数の期待値に比例した値であるとする。中性能層の平均レスポンス（W2）、低性能層の平均レスポンス（W3）は、式（１）の性能モデル式を用いることで算出できる。
【０１３８】
次に、コンピュータ２０は、容量最適の場合の容量割合閾値と最大負荷から、容量最適・最大負荷の場合のI/O頻度閾値を算出する（Ｓ１０）。ここでは、コンピュータ２０は、使用容量（N）・高性能層のSub-LUN数（S1）及び最大負荷（XM）から、ジップ分布の式により、高性能層−中性能層間のI/O頻度閾値（τ12）を算出する。コンピュータ２０は、使用容量（N）、高性能層のSub-LUN数（S1）、中性能層のSub-LUN数（S2）及び最大負荷（XM）から、ジップ分布の式により、中性能層−低性能層間のI/O頻度閾値（τ23）を算出する。
【０１３９】
次に、コンピュータ２０は、容量最適・最大負荷の場合の各階層の負荷分散予測を行う（Ｓ１１）。コンピュータ２０は、最大負荷（XM）と高性能層のジップ分布累積値（Z1）より、高性能層にかかる負荷（X1）を算出する。コンピュータ２０は、最大負荷（XM）と中性能層のジップ分布累積値（Z2）より、中性能層にかかる負荷（X2）を算出する。コンピュータ２０は、最大負荷（XM）と低性能層のジップ分布累積値（Z3）より、低性能層にかかる負荷（X3）を算出する。
【０１４０】
次に、コンピュータ２０は、容量最適・最大負荷の場合の性能予測を行う（Ｓ１２）。高性能層の平均レスポンス（W1）は、負荷に関わらず、I/Oが跨るストライプブロック数の期待値に比例した値であるとする。中性能層の平均レスポンス（W2）、低性能層の平均レスポンス（W3）は、式（１）の性能モデル式を用いることで算出できる。
【０１４１】
次に、コンピュータ２０は性能最適の場合の容量割合閾値を計算する（Ｓ６ｂ，Ｓ７）。高性能層のSub-LUN数（S1）は、高性能層の論理容量（L1）と同じ値とする。コンピュータ２０は、使用容量（N）と高性能層のSub-LUN数（S1）より、高性能層のジップ分布累積値（Z1）を算出する。
【０１４２】
中性能層・低性能層合わせたジップ分布累積値は、全体（”1”）から高性能層のジップ分布累積値（Z1）を引いた値である。そこで、コンピュータ２０は、全体（”1”）から高性能層のジップ分布累積値（Z1）を引いた値に中性能層の最大I/O頻度（XM2）、低性能層の最大I/O頻度（XM3）の比をかけることによって、中性能層のジップ分布累積値（Z2）を計算する。
【０１４３】
コンピュータ２０は、使用容量（N）、高性能層のジップ分布累積値（Z1）、中性能層のジップ分布累積値（Z2）及び高性能層のSub-LUN数（S1）より、中性能層のSub-LUN数（S2）を算出する。コンピュータ２０は、使用容量（N）、高性能層のSub-LUN数（S1）、中性能層のSub-LUN数（S2）より、低性能層のSub-LUN数（S3）を算出する。コンピュータ２０は、これらから、容量比（R1，R2，R3）を算出する。
【０１４４】
次に、コンピュータ２０は、性能最適の場合のSub-LUN数から、性能最適の場合の各階層におけるジップ分布累積値を算出する（Ｓ８）。ここでは、コンピュータ２０は、使用容量（Ｎ）と高性能層のSub-LUN数（S1）から、高性能層のジップ分布累積値（Z1）を計算する。また、コンピュータ２０は、使用容量（N）と高性能層のSub-LUN数（S1）、中性能層のSub-LUN数（S2）から、高・中性能層合わせたジップ分布累積値（Z12）を計算する。コンピュータ２０は、算出された高性能層のジップ分布累積値（Z1）、高・中性能層合わせたジップ分布累積値（Z12）を用いて、中性能層のジップ分布累積値（Z2）、低性能層のジップ分布累積値（Z3）を計算する。
【０１４５】
次に、コンピュータ２０は、各階層から算出される最大I/O頻度から、性能最適の場合の最大負荷を算出する（Ｓ９）。ここでは、コンピュータ２０は、中性能層の最大I/O頻度（XM2）と中性能層のジップ分布累積値（Z2）から、中性能層から想定される総I/O頻度（XN2）を計算する。コンピュータ２０は、低性能層の最大I/O頻度（XM3）と低性能層のジップ分布累積値（Z3）から、低性能層から想定される総I/O頻度（XN3）を計算する。コンピュータ２０は、中性能層から想定される総I/O頻度（XN2）、低性能層から想定される総I/O頻度（XN3）のうち、小さい方の値を性能最適の場合の最適負荷とする。
【０１４６】
次に、コンピュータ２０は、性能最適の場合の容量割合閾値と設定負荷から、性能最適・設定負荷の場合のI/O頻度閾値を算出する（Ｓ１０）。ここでは、コンピュータ２０は、使用容量（N）・高性能層のSub-LUN数（S1）及び設定負荷（X1）から、ジップ分布の式により、高性能層−中性能層間のI/O頻度閾値（τ12）を算出する。コンピュータ２０は、使用容量（N）、高性能層のSub-LUN数（S1）、中性能層のSub-LUN数（S2）及び設定負荷（XI）から、ジップ分布の式により、中性能層−低性能層間のI/O頻度閾値（τ23）を算出する。
【０１４７】
次に、コンピュータ２０は、性能最適・設定負荷の場合の各階層の負荷分散予測を行う（Ｓ１１）。コンピュータ２０は、設定負荷（XI）と高性能層のジップ分布累積値（Z1）より、高性能層にかかる負荷（X1）を算出する。コンピュータ２０は、設定負荷（XI）と中性能層のジップ分布累積値（Z2）より、中性能層にかかる負荷（X2）を算出する。コンピュータ２０は、設定負荷（XI）と低性能層のジップ分布累積値（Z3）より、低性能層にかかる負荷（X3）を算出する。
【０１４８】
次に、コンピュータ２０は、性能最適・設定負荷の場合の性能予測を行う（Ｓ１２）。高性能層の平均レスポンス（W1）は、負荷に関わらず、I/Oが跨るストライプブロック数の期待値に比例した値であるとする。中性能層の平均レスポンス（W2）、低性能層の平均レスポンス（W3）は、式（１）の性能モデル式を用いることで算出できる。
【０１４９】
次に、コンピュータ２０は、性能最適の場合の容量割合閾値と最大負荷から、性能最適・最大負荷の場合のI/O頻度閾値を算出する（Ｓ１０）。ここでは、コンピュータ２０は、使用容量（N）・高性能層のSub-LUN数（S1）及び最大負荷（XM）から、ジップ分布の式により、高性能層−中性能層間のI/O頻度閾値（τ12）を算出する。コンピュータ２０は、使用容量（N）、高性能層のSub-LUN数（S1）、中性能層のSub-LUN数（S2）及び最大負荷（XM）から、ジップ分布の式により、中性能層−低性能層間のI/O頻度閾値（τ23）を算出する。
【０１５０】
次に、コンピュータ２０は、性能最適・最大負荷の場合の各階層の負荷分散予測を行う（Ｓ１１）。コンピュータ２０は、最大負荷（XM）と高性能層のジップ分布累積値（Z1）より、高性能層にかかる負荷（X1）を算出する。コンピュータ２０は、最大負荷（XM）と中性能層のジップ分布累積値（Z2）より、中性能層にかかる負荷（X2）を算出する。コンピュータ２０は、最大負荷（XM）と低性能層のジップ分布累積値（Z3）より、低性能層にかかる負荷（X3）を算出する。
【０１５１】
次に、コンピュータ２０は、性能最適・最大負荷の場合の性能予測を行う（Ｓ１２）。高性能層の平均レスポンス（W1）は、負荷に関わらず、I/Oが跨るストライプブロック数の期待値に比例した値であるとする。中性能層の平均レスポンス（W2）、低性能層の平均レスポンス（W3）は、式（１）の性能モデル式を用いることで算出できる。
【０１５２】
以下では、図１１Ａ及び図１１Ｂのフローについての実施例を示す。以下の実施例では、第1の実施形態に係るプログラムがインストールされたコンピュータ２０によって実行される。階層ストレージに搭載可能なディスクの種類は、以下であるとする。
・SSD 2.5[inch] 100[GB], 200[GB], 400[GB]
・SSD 3.5[inch] 100[GB], 200[GB], 400[GB]
・Online SAS  3.5[inch]  15,000[rpm]  300[GB], 450[GB], 600[GB]
・Online SAS  2.5[inch]  15,000[rpm]  300[GB]
・Online SAS  2.5[inch]  10,000[rpm]  300[GB], 450[GB], 600[GB], 900[GB]
・Nearline SAS  3.5[inch]  7,200[rpm]  1[TB], 2[TB], 3[TB]
・Nearline SAS  2.5[inch]  7,200[rpm]  1[TB]
【０１５３】
Online SASディスク、Nearline SASディスクの回転数は３種類であるため、それぞれのディスクに対してディスク定数を測定する。
・15,000[rpm]のディスクのディスク定数（D1）＝0.017
・10,000[rpm]のディスクのディスク定数（D2）＝0.021
・7,200[rpm]のディスクのディスク定数（D3）＝0.037
【０１５４】
次に、性能評価支援プログラムが対応するワークロードを限定、すなわち限定条件を設定する。第１の実施形態は、シーケンシャルアクセスには対応せず、ランダムアクセスに対応する。上述の通り、ランダムアクセスで、さらにREAD処理は100%キャッシュミスが発生し、WRITE処理は100%キャッシュヒットになる条件とする。この条件が、通常の運用の中で最もRAIDの性能が悪い条件であるので、このような制限は性能の評価として意義があると考える。
【０１５５】
また、平均READブロックサイズと平均WRITEブロックサイズは同じであるとする。すなわち、平均ブロックサイズ＝平均READブロックサイズ＝平均WRITEブロックサイズであると仮定する。
【０１５６】
平均ブロックサイズの代表値として、例えば、8[KB]、16[KB]、32[KB]、64[KB]が挙げられ、ユーザにはこれらの代表値から最も近い値を選択してもらうようにする。
上記限定条件に対応する仮想WRITEコスト（V）を測定する。上記３つのディスクのRAIDレベル毎、及びブロックサイズ毎の仮想WRITEコスト（V）の測定結果を図１２に示す。
【０１５７】
このとき、WRITEレスポンス（WW）も測定しておく。WRITE処理は、100%キャッシュヒットとなることを想定しているので、全ての場合でほぼ同じ値になると想定される。第１の実施形態では、WRITEレスポンス（WW）＝0.000275 [sec]であるとする。
【０１５８】
次に、Ｓ１について説明する。図１３は、第１の実施形態における入力画面の一例を示す。図１３（Ａ）は、階層構成を入力するための入力画面である。図１３（Ｂ）は、容量の設定を入力するための入力画面である。図１３（Ｃ）は、負荷の設定を入力するための入力画面である。一例として、図１３に示すように入力された場合を考える。
・高性能層：2.5[inch] SSD 400[GB]，RAID5 3＋1，RAIDグループ数 1、平均レスポンスは0.005[sec]である。
・中性能層：3.5[inch] Online SAS 15,000[rpm] 600[GB]，RAID5 7＋1，RAIDグループ数 5，平均レスポンスは0.020[sec]である。
・低性能層：2.5inch Nearline SAS 7,200[rpm] 1[TB]，RAID6 8＋2，RAIDグループ数 12，平均レスポンスは0.030[sec]である。
・READ：WRITE比は75：25、平均ブロックサイズは 48[KB]
・使用容量は、90[TB]である。
・設定負荷は、10,000 [IOPS]である。
【０１５９】
次に、Ｓ２ａ〜Ｓ２ｄについて説明する。Ｓ２では、コンピュータ２０は、ユーザからの入力情報を計算しやすい形に変換する。高性能層については、RAIDランク（R）＝３とする。このとき、400[GB]ディスクの実容量は374,528[MB]なので、論理容量＝実容量×RAIDランク×RAIDグループ数＝374,528×３×１＝1,123,584[MB]となる。
【０１６０】
中性能層については、RAIDランク（R）＝７とする。このとき、600GBディスクの実容量は559,104[MB]なので、論理容量＝実容量×RAIDランク×RAIDグループ数＝559,104×7×5＝19,568,640[MB]となる。
【０１６１】
低性能層については、RAIDランク（R）＝８とする。このとき、１[TB]ディスクの実容量は937,728[MB]なので、論理容量＝実容量×RAIDランク×RAIDグループ数＝937,728×8×12＝90,021,888[MB]となる。
【０１６２】
ここで、Sub-LUNのサイズを1,344[MB]と定義する。この場合、コンピュータ２０は、以下のように、各階層におけるSub-LUN数を計算する。
・高性能層のSub-LUN数は、1,123,584／1,344＝836
・中性能層のSub-LUN数は、19,568,640／1,344＝14,560
・低性能層のSub-LUN数は、90,021,888／1,344＝66,980
【０１６３】
階層間で、Sub-LUNを移動する際には、移動先の階層に空き容量が必要であるため、その空き容量の割合を一律10%と定義する。コンピュータ２０は、各階層におけるSub-LUN数にその割合を乗じた値を各階層の論理容量とする。
・高性能層のSub-LUN単位の論理容量（L1）：836×0.9＝752
・中性能層のSub-LUN単位の論理容量（L2）：14,560×0.9＝13,104
・低性能層のSub-LUN単位の論理容量（L3）：66,980×0.9＝60,282
・総Sub-LUN数（LA）：752＋13,104＋60,282＝74,138
【０１６４】
コンピュータ２０は、使用容量（90[TB]）をSub-LUN数に換算する（N＝90×1,024×1,024／1,344＝70,218）。
READ：WRITE比率が75：25なので、コンピュータ２０は、READ割合（c）＝0.75を算出する。
【０１６５】
コンピュータ２０は、I/Oが跨るストライプブロック数の期待値（E）を算出する。
・ストライプブロックのサイズ（ストライプ長もしくはストライプサイズ）は６４[KB]とする。
・平均ブロックサイズ：r＝48[KB]
・M＝（（r−0.5） mod 64）＋0.5＝48
・N＝（r−M＋64）／ 64＝1
・E＝(N＋1){(2M−1)／128}＋N{(128−2M＋1)／128}＝1.7422
・平均ブロックサイズとREAD平均ブロックサイズが同じなので、READが跨るストライプブロック数の期待値ERは上記Eと同じ値となる。
【０１６６】
次に、Ｓ３ａ〜Ｓ３ｂ，Ｓ4ａ〜Ｓ４ｂについて説明する。Ｓ３では、コンピュータ２０は、入力された情報から、中性能層、低性能層の性能予測のために、式（１）の性能モデルで用いるパラメータを取得する。Ｓ４では、コンピュータは、式（１）の性能モデルで用いるパラメータを算出する。
【０１６７】
中性能層について
・ディスク定数：D＝0.017
・仮想WRITEコスト：V＝0.0262
【数２２】
2014174845.tif 000024
【０１６８】
低性能層について
・ディスク定数：D＝0.037
・仮想WRITEコスト：V＝0.1393
【数２３】
2014174845.tif 000025
【０１６９】
次に、Ｓ５ａ〜Ｓ５ｂについて説明する。Ｓ５ａ〜Ｓ５ｂでは、コンピュータは、算出したパラメータを用いて中性能層・低性能層の性能のために、式（１）の性能モデルを用いて各階層の最大I/O頻度を算出する。式（１）の性能モデルは、任意のI/O頻度におけるレスポンスを求めるものである。本実施例では、任意のレスポンスとなる最大のI/O頻度を求めたいので、式（１）の性能モデルの逆関数を解けばよい。式（１）の性能モデル式は、逆関数を求められない数式であるので、一般的なアプリケーションソフトウェアに備わっている近似解を求める方式で解く。高等関数を使用すれば逆関数の解を求められるが、一般的なアプリケーションソフトウェアでは使用できない。本実施例では、Microsoft Excel（登録商標）のソルバー機能を用いた方法で、逆関数の近似解を求める。まず、セルA1にREAD平均レスポンスの値を設定する。セルB1に適当なI/O頻度の値を設定する。セルC1に、セルB1をI/O頻度とした場合の性能モデルを数式として入力する。ソルバーに、目的セルC1、目標値は最大値、変数セルB1、制約条件セルC1＝セルA1という条件を入力する。ソルバーにて解を求めると、セルA1に入力したREAD平均レスポンスとなるREAD I/O頻度がB1に出力される。この算出されたREAD I/O頻度は、一つのRAIDにおけるREAD I/O頻度なので、これより全体のI/O頻度を求める。
【０１７０】
中性能層の場合、全体の平均レスポンス(0.02 [sec])、READ割合(0.75)、WRITEレスポンス(0.000275)から、READレスポンスを求める。すると、A1セルの値は、(0.02−(0.000275*(1−0.75)))／0.75＝0.02658となる。B1セルの値は、1／αA＝141,3228となる。C1セルの式：”＝(0.4476*2.3455*(EXP(0.003017／0.4476*(B1−(0.4476／(0.003017*2.3455))))−1)＋0.4476)／B1”
【０１７１】
これらを前記条件下のソルバーで求めると、422.6661が求まる。最大I/O頻度＝(RAID単体のREAD I/O頻度)／READ割合×RAIDグループ数から、中性能層全体の最大I/O頻度は、422.6661／0.75*5＝2817.774となる。
【０１７２】
低性能層の場合、全体の平均レスポンス(0.03 [sec])、READ割合(0.75)、WRITEレスポンス(0.000275)から、READレスポンスを求める。すると、A1セルの値は、(0.03−(0.000275*(1−0.75)))／0.75＝0.03991となる。B1セルの値は、1／αA＝64.9351となる。C1セルの式：”＝(0.2485*3.5741*(EXP(0.004309／0.2485*（B1−(0.2485／(0.004309*3.5741))))−1)＋0.2485)／B1”
【０１７３】
これらを前記条件下のソルバーで求めると、120.9302が求まる。最大I/O頻度＝(RAID単体のREAD I/O頻度)／READ割合×RAIDグループ数から、低性能層全体の最大I/O頻度は、120.9302／0.75*12＝1934.883となる。
【０１７４】
次に、Ｓ６ａ，Ｓ６ｂについて説明する。Ｓ６ａ，Ｓ６ｂでは、コンピュータ２０は、容量最適・性能最適それぞれの場合の容量割合閾値を計算する。まず、コンピュータ２０は、上記で算出した情報を用いて、容量最適・性能最適それぞれの場合の各階層のSub-LUN数を算出する。
【０１７５】
容量最適の場合、各階層のSub-LUN数は以下のように算出される。
・高性能層のSub-LUN数：S1＝(L1／LA)N＝(752／74,138)*70,218＝712.23…≒712
・中性能層のSub-LUN数：S2＝(L2／LA)N＝(13,104／74,138)*70,218＝12,411.13…≒12,411
・低性能層のSub-LUN数：S3＝N−S1−S2＝70,218−712−12,411＝57,095
【０１７６】
性能最適の場合、各階層のSub-LUN数は以下のように算出される。
・高性能層のSub-LUN数：S1−L1＝752
・高性能層のジップ分布累積値：Z1＝(ln S1＋γ)／(ln N＋γ)＝(ln 752＋0.5772)／(ln 70,218＋0.5772)＝0.6134
・中性能層のジップ分布累積値：Z2＝{XM2／(XM2＋XM3)}(1−Z1)＝{2817.774／(2817.774＋1934.883)}(1−0.6134)＝0.2292
・中性能層のSub-LUN数：
【数２４】
2014174845.tif 000026
・低性能層のSub-LUN数：S3＝N−S1−S2＝70,218−752−10,318＝59,148
【０１７７】
次に、Ｓ７について説明する。Ｓ７では、コンピュータ２０は、各階層のSub-LUN数から、容量最適・性能最適それぞれの場合の各階層における容量割合閾値（容量比）を求める。
【０１７８】
容量最適の場合の各階層における容量割合閾値（容量比）は以下のように算出される。
・高性能層の容量割合閾値：R1＝S1／N＝712／70,218＝0.0101
・中性能層の容量割合閾値：R2＝S2／N＝12,411／70,218＝0.1768
・低性能層の容量割合閾値：R3＝1−R1−R2＝0.8131
【０１７９】
性能最適の場合の各階層における容量割合閾値（容量比）は以下のように算出される。
・高性能層の容量割合閾値：R1＝S1／N＝752／70,218＝0.0107
・中性能層の容量割合閾値：R2＝S2／N＝10,318／70,218＝0.1469
・低性能層の容量割合閾値：R3＝1−R1−R2＝0.8424
【０１８０】
次に、Ｓ８について説明する。Ｓ８では、コンピュータ２０は、各階層のSub-LUN数から、容量最適・性能最適それぞれの場合の各階層におけるジップ分布累積値を算出する。
【０１８１】
容量最適の場合、各階層におけるジップ分布累積値は、以下のように算出される。
・高性能層のジップ分布累積度：Z1＝(ln S1＋γ)／(ln N＋γ)＝(ln 712＋0.5772)／(ln 70,218＋0.5772)＝0.6088
・高性能層・中性能層合わせたジップ分布累積値：Z12＝(ln (S1＋S2)＋γ)／(ln N＋γ)＝(ln (712＋12,411)＋0.5772)／(ln 70,218＋0.5772)＝0.8571
・中性能層のジップ分布累積度：Z2＝Z12−Z1＝0.2483
・低性能層のジップ分布累積度：Z3＝1−Z12＝0.1429
性能最適の場合、各階層におけるジップ分布累積値は、以下のように算出される。
・高性能層のジップ分布累積度：Z1＝(ln S1＋γ)／(ln N＋γ)＝(ln 752＋0.5772)／(ln 70,218＋0.5772)＝0.6135
・高性能層・中性能層合わせたジップ分布累積値：Z12＝(ln (S1＋S2)＋γ)／(ln N＋γ)＝(ln (752＋10,318)＋0.5772)／(ln 70,218＋0.5772)＝0.8426
・中性能層のジップ分布累積度：Z2＝Z12−Z1＝0.2291
・低性能層のジップ分布累積度：Z3＝1−Z12＝0.1574
【０１８２】
次に、Ｓ９について説明する。Ｓ９では、コンピュータ２０は、中性能層・低性能層のジップ分布累積値及び最大I/O頻度から、容量最適・性能最適それぞれの場合の階層構成に対する最大負荷を算出する。
【０１８３】
容量最適の場合、最大負荷は、以下のように算出される。
・中性能層から算出される最大負荷：XN2＝XM2／Z2＝2817.774／0.2483＝11,348.26
・低性能層から算出される最大負荷：XN3＝XM3／Z3＝1934.883／0.1429＝13,540.12
・XN2<XN3であるため、最大負荷XM＝XN2＝11,348.26
【０１８４】
性能最適の場合、最大負荷は、以下のように算出される。
・中性能層から算出される最大負荷：XN2＝XM2／Z2＝2817.774／0.2291＝12,299.32
・低性能層から算出される最大負荷：XN3＝XM3／Z3＝1934.883／0.1574＝12,292.78
・XN2>XN3であるため、最大負荷XM＝XN3＝12,292.78
・性能最適の場合は、XN2とXN3の値が非常に近い値になる。
【０１８５】
次に、Ｓ１０について説明する。Ｓ１０では、コンピュータ２０は、設定負荷、最大負荷、各階層のSub-LUN数から、４通りのI/O頻度閾値を算出する。
【０１８６】
容量最適で設定負荷の場合の階層間のI/O頻度閾値は、以下のように算出される。
・高性能層−中性能層間のI/O頻度閾値：τ12＝{1／(ln N＋γ)}(XI／S1)＝1／(ln 70,218＋0.5772)(10,000／712)＝1.197
・中性能層−低性能層間のI/O頻度閾値：τ23＝{1／(ln N＋γ)}(XI／(S1＋S2))＝1／(ln 70,218＋0.5772)(10,000／(712＋12,411))＝0.06493
【０１８７】
容量最適で最大負荷の場合の階層間のI/O頻度閾値は、以下のように算出される。
・高性能層−中性能層間のI/O頻度閾値：τ12＝{1／(ln N＋γ)}(XM／S1)＝1／(ln 70,218＋0.5772)(11,348.26／712)＝1.358
・中性能層−低性能層間のI/O頻度閾値：τ23＝{1／(ln N＋γ)}(XM／(S1＋S2))＝1／(ln 70,218＋0.5772)(11,348.26／(712＋12,411))＝0.07368
【０１８８】
性能最適で設定負荷の場合の階層間のI/O頻度閾値は、以下のように算出される。
・高性能層−中性能層間のI/O頻度閾値：τ12＝{1／(ln N＋γ)}(XI／S1)＝1／(ln 70,218＋0.5772)(10,000／752)＝1.133
・中性能層−低性能層間のI/O頻度閾値：τ23＝{1／(ln N＋γ)}(XI／(S1＋S2))＝1／(ln 70,218＋0.5772)(10,000／(752＋10,318)＝0.07797
【０１８９】
性能最適で最大負荷の場合の階層間のI/O頻度閾値は、以下のように算出される。
・高性能層−中性能層間のI/O頻度閾値：τ12＝{1／(ln N＋γ)}(XM／S1)＝1／(ln 70,218＋0.5772)(12,292.78／752)＝1.393
・中性能層−低性能層間のI/O頻度閾値：τ23＝{1／(ln N＋γ)}(XM／(S1＋S2))＝1／(ln 70,218＋0.5772)(12,292.78／(752＋10,318))＝0.09462
【０１９０】
次に、Ｓ１１について説明する。Ｓ１１では、コンピュータ２０は、各階層にかかる負荷を４通り計算する。
【０１９１】
容量最適で設定負荷の場合の各階層の負荷は、以下のように算出される。
・高性能層にかかる負荷：X1＝Z1XI＝0.6088*10,000＝6,088
・中性能層にかかる負荷：X2＝Z2XI＝0.2483*10,000＝2,483
・低性能層にかかる負荷：X3＝XI−X1−X2＝1429
【０１９２】
容量最適で最大負荷の場合の各階層の負荷は、以下のように算出される。
・高性能層にかかる負荷：X1＝Z1XM＝0.6088*11,348.26＝6,908.823
・中性能層にかかる負荷：X2＝Z2XM＝0.2483*11,348.26＝2,817.774
・低性能層にかかる負荷：X3＝XM−X1−X2＝1621.667
【０１９３】
性能最適で設定負荷の場合の各階層の負荷は、以下のように算出される。
・高性能層にかかる負荷：X1＝Z1XI＝0.6135*10,000＝6,135
・中性能層にかかる負荷：X2＝Z2XI＝0.2291*10,000＝2,291
・低性能層にかかる負荷：X3＝XI−X1−X2＝1574
【０１９４】
性能最適で最大負荷の場合の各階層の負荷は、以下のように算出される。
・高性能層にかかる負荷：X1＝Z1XM＝0.6135*12,292.78＝7,541.618
・中性能層にかかる負荷：X2＝Z2XM＝0.2291*12,292.78＝2,816.275
・低性能層にかかる負荷：X3＝XM−X1−X2＝1934.883
【０１９５】
次に、Ｓ１２について説明する。Ｓ１２では、コンピュータ２０は、式（１）の性能モデルを用いて、４通りのレスポンス予測を行う。高性能層のレスポンスは、I/Oが跨るストライプブロック数の期待値に比例するとし、その[sec]に対する比例係数を”1”とする。よって、高性能層のレスポンスは、一律0.0017422[sec]とする。ここで、実際の装置に対する性能測定より、上記の方法でおおよそその値が見積もれることが分かっている。
【０１９６】
容量最適・設定負荷の場合の中性能層のレスポンスは、以下のように算出される。上述したように、A＝2.3455、α＝0.003017、ε＝0.4476である。負荷は、2483 [IOPS]であるが、これは全てのRAIDグループのREAD、WRITEを合わせた値であるので、RAIDグループ当たりのREAD I/O頻度:XR＝2483*0.75／5＝1862.25の値を使用する。これらの値を式（１）の性能モデルの式に代入して、READレスポンス（WR）の値を得る。
【数２５】
2014174845.tif 000027
【０１９７】
コンピュータ２０は、READレスポンス（WR）とWRITEレスポンスとの平均を取ることによって、平均レスポンス（W）を計算する。
W＝cWR＋(1−c)Ww＝0.75*0.02104＋0.25*0.00275＝0.01579[sec]＝15.79[msec]
【０１９８】
容量最適・設定負荷の場合の低性能層のレスポンスは、以下のように算出される。上述したように、A＝3.5741、α＝0.004309、ε＝0.2485である。負荷は、1429 [IOPS]であるが、これは全てのRAIDグループのREAD、WRITEを合わせた値であるので、RAIDグループ当たりのREAD I/O頻度:XR＝1429*0.75／12＝89.3125の値を使用する。これらの値を式（１）の性能モデルの式に代入して、READレスポンス（WR）の値を得る。
【数２６】
2014174845.tif 000028
【０１９９】
コンピュータ２０は、READレスポンス（WR）とWRITEレスポンスとの平均を取ることによって、平均レスポンス（W）を計算する。
W＝cWR＋(1−c)Ww＝0.75*0.02821＋0.25*0.00275＝0.02108[sec]
【０２００】
高性能層、中性能層、低性能層のレスポンスをジップ分布累積値で架空平均を取ることによって、全体の平均レスポンスを算出する。
W＝Z1W1＋Z2W2＋Z3W3＝0.6088*1.7422＋0.2483*15.79＋0.1429*21.08＝0.007994[sec]
【０２０１】
他の３種類の場合も同様に計算することによって、以下の結果が得られる。
容量最適・設定負荷の場合
・高性能層の平均レスポンス：0.0017422[sec]
・中性能層の平均レスポンス：0.01579[sec]
・低性能層の平均レスポンス：0.02108[sec]
・全体の平均レスポンス：0.07994[sec]
【０２０２】
容量最適・最大負荷の場合
・高性能層の平均レスポンス：0.0017422[sec]
・中性能層の平均レスポンス：0.01994[sec]
・低性能層の平均レスポンス：0.02408[sec]
・全体の平均レスポンス：0.09453[sec]
【０２０３】
性能最適・設定負荷の場合
・高性能層の平均レスポンス：0.0017422[sec]
・中性能層の平均レスポンス：0.01386[sec]
・低性能層の平均レスポンス：0.02331[sec]
・全体の平均レスポンス：0.007913[sec]
【０２０４】
性能最適・最大負荷の場合
・高性能層の平均レスポンス：0.0017422[sec]
・中性能層の平均レスポンス：0.01992[sec]
・低性能層の平均レスポンス：0.02994[sec]
・全体の平均レスポンス：0.010345[sec]
【０２０５】
以上で計算は終了したので、コンピュータ２０は、図１４Ａ、図１４Ｂに示すように、算出結果を表示する。図１４Ａ（Ａ）は、容量最適・設定負荷の場合における容量割合閾値、I/O頻度閾値、及び関連する情報を示す。図１４Ａ（B）は、性能最適・設定負荷の場合における容量割合閾値、I/O頻度閾値、及び関連する情報を示す。図１４Ｂ（Ｃ）は、容量最適・最大負荷の場合における容量割合閾値、I/O頻度閾値、及び関連する情報を示す。図１４Ｂ（Ｄ）は、性能最適・最大負荷の場合における容量割合閾値、I/O頻度閾値、及び関連する情報を示す。具体的には、コンピュータ２０は、以下の情報を表示する。
・容量最適・性能最適の各々の場合に対して
・各階層の論理容量および総論理容量
・各階層の使用容量および総使用容量
各階層の使用率
・容量割合閾値
・設定負荷・最大負荷の各々の場合に対して、
・I/O頻度閾値
・各階層にかかる負荷および総負荷
・各階層の平均レスポンスおよび全体の平均レスポンス
【０２０６】
容量割合閾値は、通常は論理容量に対して使用容量を均等に割り当てる（容量最適である）値が設定される。しかしながら、第１の実施形態を用いれば、階層構成の性能を最大にする（性能最適である）値を算出することが出来るため、より高性能を求めるユーザのニーズに対応することができる。
【０２０７】
I/O頻度閾値は負荷の値に依存するので、一般的に算出が難しいが、上記容量最適及び性能最適のそれぞれの場合に対して、設定負荷の場合・最大負荷の場合のI/O頻度閾値を算出することが出来る。両者とも、各階層におけるレスポンス条件を満たす最大I/O頻度と、Sub-LUNに対するアクセスの偏りがジップ分布に従うという仮定の２点で算出することができる。
【０２０８】
第１の実施形態によれば、運用する階層構成、使用する容量と想定される負荷を入力することにより、複数の閾値を計算でき、使用形態にもっとも適した閾値を与えて運用することができる。
【０２０９】
設定負荷については、任意の値を入力することが出来るので、設定負荷が最大負荷を超えることがあり得る。設定負荷が最大負荷を超えるという事は、階層構成及び使用容量に対して負荷が大きすぎるという事を意味する。例えば図１４Ｂにおいては、性能予測の合計欄に表示されている負荷（11346[IOPS]、12291[IOPS]）は設定負荷の値（10000[IOPS]）を超えている。実際に運用する前に、想定される負荷に対してシステム全体が正常に運用できるかのチェックをすることができる。負荷が大きすぎた場合は、運用前に構成変更を検討するなどの対策を取ることができる。
【０２１０】
＜第２の実施形態＞
第２の実施形態では、階層ストレージシステムの運用に際し、運用に支障をきたさない負荷、最適な使用容量の指針となる情報を提供することについて説明する。
【０２１１】
階層ボリュームは、SSDなど高性能な記憶装置を利用するため、Online SASなどで構成されたRAIDより高性能である。ここで、高性能とは、単位時間あたりに処理できるリクエスト数が多い、もしくは、リクエストの平均応答時間が短い処理能力をいう。
【０２１２】
しかし、高性能であるからといって、無限に性能が発揮されるのではなく、ストレージシステムに異常をきたすことなく運用できる適切な最大性能が存在する。階層ストレージを適切に運用するためには、この適切な性能を見積もり、運用指標として使用することが望ましい。階層ストレージにかかる負荷がこの適切な性能以上になる場合は、より高性能な構成に変更する（ディスクを増設する）などの運用が考えられる。
【０２１３】
階層ストレージは総容量に対する空き容量が多い程、高性能である。しかし、あまりにも空き容量を多く設定すると、データを格納できる量が少なくなってしまう。逆に総容量をほとんど使い切る場合は、性能が発揮できなくなってしまう。よって、性能が発揮できる適切な最大容量が存在する。
【０２１４】
階層ストレージを適切に運用するためには、この適切な容量を見積もり、運用指標として使用することが望ましい。階層ストレージに対してデータが格納されている使用容量がこの適切な容量以上になった場合は、より容量の大きい構成に変更する（ディスクを増設する）などの運用が考えられる。
【０２１５】
そこで、第２の実施形態では、適切な性能・適切な容量を算出し、階層ストレージの運用を容易にすることについて説明する。階層ストレージの構成、性能の制限条件は、第１の実施形態で説明したものと同様である。第２の実施形態においても、第１の実施形態で用いた、ジップ分布の累積値、式（１）の性能モデルを用いる。
【０２１６】
ます、最適性能、最適使用容量の定義について説明する。与えられた階層構成に対して、論理容量をすべての階層で使い切る場合に、各階層の平均レスポンスの条件を満たす最大負荷を想定性能とし、この想定性能を最適性能とする。したがって、この最大負荷は、階層構成に対してこの最適性能の値以下であるどのような負荷をかけても、どんなに使用容量が大きくなっても、すべての階層で平均レスポンスの条件を満たすことが出来る最大の負荷であると言うことが出来る。
【０２１７】
与えられた階層構成に対して、各階層の平均レスポンスの条件を満たしつつ使用容量を少なくしていった場合に、最大の性能が得られる容量を最適使用容量という。したがって、階層構成に対して、使用容量が最適使用容量以上であると、その階層構成の最大性能が発揮できない可能性があるということが出来る。
【０２１８】
ここで、最適性能の計算方法について説明する。第１の実施形態と同様に、ジップ分布の累積値は、各階層に負荷が分散される割合を表す。各階層の論理容量は決まっているので、第１の実施形態と同様に、各階層におけるジップ分布の累積度は、計算することができる。各階層の平均レスポンス条件を満たす最大I/O頻度を、後述するように、算出する。第１の実施形態で説明したように、各階層の最大I/O頻度を各階層におけるジップ分布の累積値で割れば、その階層の性能から得られる全体の総I/O頻度が得られる。算出された各階層の総I/O頻度のうち、最も小さいものを最適性能とする。
【０２１９】
式（１）の性能モデルを用いることにより、中性能層もしくは低性能層の平均レスポンスに対する最大I/O頻度を算出することができる。
【０２２０】
一方、高性能層、すなわち、SSDによって構成されるRAIDについては、以下の性能モデルを作成し、最適性能の算出に用いる。図１５は、SSDによって構成されるRAID に対するREAD割合毎のI/O頻度と、そのレスポンス時間との関係を示す。図１５において、SSDによって構成されるRAIDは、図１５に示すように、READ割合がいくつであっても、最大I/O頻度まではレスポンス時間はほぼ一定であるとする。このレスポンス時間は、ブロックサイズ（I/Oが跨るストライプブロック数）に比例する。この比例係数を”１”とする。任意のREAD割合（c）の場合の最大I/O頻度（XMC）は、WRITEのみの場合の最大I/O頻度（XM0）に対して、XMC＝(1／(1−c))XM0で表される。WRITEのみの場合のI/O頻度は、RAIDランクに比例し、ブロックサイズ（I/Oが跨るストライプブロック数の期待値）に反比例する。この比例係数を”1400”とする。
【０２２１】
以下に示すように、各階層の平均レスポンス条件を満たす最大I/O頻度から、全体の負荷（想定性能）を算出する。まず、第１の実施形態で説明したように、各階層の平均レスポンス、RAID係数（A）、ディスク係数（α）、相変化多重度（ε）から、式（１）に示す性能モデル式の逆関数の近似解を算出する。これにより、中性能層の最大I/O頻度（XM2）、低性能層の最大I/O頻度（XM3）を算出する。さらに、上述したSSD性能モデルから、高性能層の最大I/O頻度（XM1）を算出する。
【０２２２】
次に、第１の実施形態で説明したように、各階層のジップ分布累積値を算出する。
・高性能層の論理容量から求められるSub-LUN数：S1
・中性能層の論理容量から求められるSub-LUN数：S2
・低性能層の論理容量から求められるSub-LUN数：S3
・使用容量から求められる総Sub-LUN数：N＝ S1＋ S2＋ S3
・高性能層のジップ分布累積値：Z1＝(ln S1＋γ)／(ln N＋γ)
・高性能層・中性能合わせたジップ分布累積値：Z12＝{(ln S1＋S2)＋γ}／(ln N＋γ)
・中性能層のジップ分布累積値：Z2＝Z12−Z1
・低性能層のジップ分布累積値：Z3＝1−Z12
【０２２３】
各階層の最大I/O頻度から全体の想定性能を算出する。
・高性能層の想定性能：XN1＝XM1／ Z1
・中性能層の想定性能：XN2＝XM2／ Z2
・低性能層の想定性能：XN3＝XM3／ Z3
XN1、XN2、XN3のうち、最も小さい値を適切な想定性能（最適性能）とする。
【０２２４】
次に、最適使用容量の計算方法について説明する。初期状態として、最適性能の算出の場合と同様に、すべての階層において論理容量すべてを使用する状態を仮定する。
【０２２５】
階層構成が中性能層と低性能層の両方を使用する場合において、最適性能の計算の際に、中性能層の最大I/O頻度から計算された全体の総I/O頻度が、低性能層から計算された値よりも小さい場合、使用容量を減らしていく階層を、中性能層とする。
【０２２６】
階層構成が中性能層と低性能層の両方を使用する場合において、最適性能の計算の際に、低性能層の最大I/O頻度から計算された全体の総I/O頻度が、中性能層から計算された値よりも小さい場合、使用容量を減らしていく階層を、低性能層とする。
【０２２７】
上記により使用容量を減らしていく階層が決定されたので、実際に使用容量を減らして計算し、もっとも性能が良くなる場合の使用容量を最適使用容量とする。階層構成が中性能層と低性能層のどちらかしか使用しない場合は、論理容量を最適使用容量とする。
【０２２８】
感覚的に考えると、より高性能である階層から多く割り当てた方が、全体の性能が良くなるように思える。実際に、高性能層（SSD）からは、多く割り当てるほど性能が良くなる。しかし、アクセス頻度の分布がジップ分布であることを仮定すると、中性能層の割り当て量を減らした方が性能は良くなる場合がある。
【０２２９】
論理容量をすべて使用する状態は、最適な使用容量ではない。一般的に、空き容量が多い程、性能が良い。ある程度（中性能層および低性能層にデータを格納して）容量を稼ぎつつ、もっとも性能が良くなる点（使用容量）を計算する。使用容量が非常に少なくてもよいのであれば、すべての容量を高性能層（SSD）から割り当てる状態が、最も性能が良い状態である。
【０２３０】
すべての階層において論理容量すべてを割り当てている状態から、中性能層、低性能層のいずれかの割り当て容量を減らしていき、全体の性能が最も高くなる使用容量を、適切な使用容量とする。高性能層から割り当てる量が多いほど性能が良いので、高性能層からは論理容量すべてを割り当てる。
【０２３１】
一方で、論理容量すべて割り当てるとして、中性能層・低性能層いずれかの割り当て容量のどちらを減らしていくかを検討する。両方とも減らすことを考えると、すべての容量を高性能層から割り当てる場合が解となってしまう。同様に、中性能層と低性能層のどちらかしか使用しない階層構成では、すべての容量を高性能層から割り当てる場合が解となってしまう。
【０２３２】
そこで、最適使用量の算出において、最適性能の計算を使用することとする。上述したように、最適性能の計算では、各階層の平均レスポンスから求められる最大I/O頻度から全体の負荷を計算し、その最小値を適切な値であるとする。最小値である（一般的にはOnline SASかNearline SASのどちらかの）階層は、性能のボトルネックであると言える。そこで、性能のボトルネックとなっている階層の使用容量を減らしていき、最適性能の計算と同様の計算を行い、最大の性能が出る使用容量を計算する。
【０２３３】
例えば、図１６（A）に示すように、低性能層から求まる想定性能の方が中性能層から求まる想定性能よりも大きい場合、中性能層が性能のボトルネックであるといえる。この場合、中性能層の使用容量を減らすと、低性能層の（相対的な）性能が向上する。したがって、中性能層の使用容量を減らすようにする。
【０２３４】
また、図１６（B）に示すように、中性能層から求まる想定性能の方が低性能層から求まる想定性能よりも大きい場合、低性能層が性能のボトルネックであるといえる。この場合、低性能層の使用容量を減らすと、中性能層の（相対的な）性能が向上する。したがって、低性能層の使用容量を減らすようにする。
【０２３５】
ここで、図１７を用いて最適使用量の算出例を説明する。図１７（A）は、構成例１について、中性能層が性能のボトルネックである場合の、中性能層から減らしたSub-LUN数と各階層から算出される全体性能との関係を示す図である。図１７（B）は、構成例２について、低性能層が性能のボトルネックである場合の、低性能層から減らしたSub-LUN数と各階層から算出される全体性能との関係を示す図である。構成例１、構成例２の階層構成は以下の通りである。
構成例１
・2.5[inch] SSD 400[GB]  RAID5 3＋1×１
・3.5[inch] Online SAS 600[GB]  RAID5 7＋1 ×5
・2.5[inch] Nearline SAS 1[TB]  RAID6 8＋2 ×10
構成例２
・2.5[inch] SSD 400[GB]  RAID5 3＋1 ×1
・3.5[inch] Online SAS 600[GB] RAID5 7＋1 ×5
・2.5[inch] Nearline SAS 1[TB]  RAID6 8＋2 ×6
【０２３６】
計算すると、図１７（A）に示すように、構成例１は中性能層が性能のボトルネックとなり、構成例２は低性能層がボトルネックとなることがわかる。構成例１から中性能層のSub-LUN数を減らし、構成例２から低性能層のSub-LUN数を減らしていく。すると、ボトルネックであった階層から算出される全体性能が上がる。これに反し、ボトルネックではなかった（中性能もしくは低性能）階層から算出される全体性能は下がる。最適性能は３階層の最小値をとるので、最適性能を最大とする最適使用容量の値が決定できる。
【０２３７】
ここで、使用容量を減らすと性能が上がることの数学的根拠について説明する。高性能層、中性能層、低性能層のSub-LUN数はそれぞれS1，S2，S3である。全体の使用容量は、N＝S1＋S2＋S3である。
【０２３８】
総負荷Xの場合のI/O頻度閾値（τ12，τ13）は、それぞれS1、S1＋S2番目に頻度が大きいSub-LUNにかかるI/O頻度であるため、ジップ分布より以下の式で求められる。
【数２７】
2014174845.tif 000029
すると、I/O頻度閾値の比は、τ12／τ13＝（S1＋S2）／S1となり、高性能層及び中性能層の使用容量で決定されるから、低性能層の使用容量は無関係であることが分かる。
【０２３９】
低性能層の使用容量を減らした場合、I/O頻度閾値の比は変わらないため、２つのI/O頻度閾値の相対的な値は変わらない。また、全体の使用容量（N）が減ることにより、Z12の値がわずかに大きくなる。このことによって低性能層におけるジップ分布累積値Z3がわずかに小さくなり、低性能層から計算される全体性能XN3がわずかに大きくなる。また、全体の使用容量（N）が減ることによるZ1とZ12の値の増加はZ12の方がわずかに大きいので、中性能層におけるジップ分布累積値Z1はわずかに小さくなることから、中性能層から計算される全体性能XN2がわずかに小さくなる。
【０２４０】
中性能層の使用容量を減らした場合、低性能層の使用容量と同様に、全体の使用容量が減る効果に加え、I/O頻度閾値の比の値が小さくなる効果がある。τ12と比較して、τ23の相対的な値が下がり、このことによって分布曲線が急角度になり、高性能層へ相対的に多くの負荷がかかり、全体性能がより多く向上する。図１７（A）の場合、中性能層から減らしたSub-LUN数は1,500であるのに対して、図１７（B）の場合、低性能層から減らしたSub-LUN数は6,000であり、減らす容量に４倍の差がある。よって、低性能層の使用容量を減らした場合と比較して、減らす容量が少ない状態で最適な利用容量になる。
【０２４１】
次に、第２の実施形態における最適性能・最適使用容量算出処理の詳細を説明する。第２の実施形態でも、第１の実施形態で用いたコンピュータ２０により処理が実行される。
【０２４２】
図１８Ａ、図１８Ｂは、第２の実施形態における最適性能・最適使用容量算出処理のフローを示す。まずは、コンピュータ２０は、以下に示すユーザからの入力を受け付ける（Ｓ２１）。
・各階層（高性能層、中性能層、低性能層）における、使用されるディスクの種別（タイプ、サイズ、回転数、容量）
・各階層における、RAIDレベル及びRAIDメンバ、RAIDグループ数
・各階層におけるレスポンスの制限値
・平均ブロックサイズ（平均I/Oサイズ）、READ：WRITE比率
【０２４３】
次に、コンピュータ２０は、ユーザからの入力情報を計算しやすい形に変換する（Ｓ２２ａ〜Ｓ２２ｄ）。すなわち、コンピュータ２０は、READ：WRITE比率から、READ割合（c）を取得する。コンピュータ２０は、平均ブロックサイズから、I/Oが跨るストライプブロック数の期待値（E）を計算する。コンピュータ２０は、各階層のRAIDメンバから、各階層のRAIDランク（R）を取得する。コンピュータ２０は、各階層のディスク容量・RAIDレベル・RAIDランク（R）から、各階層の論理容量を計算する。コンピュータ２０は、各階層の論理容量から各階層の最大Sub-LUN数（S1，S2，S3）及び総Sub-LUN数（N）を計算する。コンピュータ２０は、使用容量をSub-LUN数（N）に変換する。
【０２４４】
次に、コンピュータ２０は、式（１）の性能モデルで用いるパラメータを取得する（Ｓ２３ａ，Ｓ２３ｂ）。すなわち、コンピュータ２０は、中性能層・低性能層のディスクの種別から、それぞれのディスク係数（D）を取得する。コンピュータ２０は、中性能層・低性能層のディスク係数、RAIDレベル、平均ブロックサイズから、各階層の仮想WRITEコスト（V）を取得する。階層ストレージの容量割り当ての方式から、Sub-LUNはRAIDボリュームの任意の場所から割り当てられるので、各階層の使用割合（v）は“１”とする。
【０２４５】
次に、コンピュータ２０は、式（１）の性能モデルで用いるパラメータを算出する（Ｓ２４ａ，２４ｂ）。コンピュータ２０は、中性能層・低性能層の、RAIDレベル、RAIDランク（R）、I/Oが跨るストライプブロック数の期待値（E）から、各階層のRAID係数（A）を計算する。コンピュータ２０は、中性能層・低性能層の、RAIDレベル、RAIDランク（R）、I/Oが跨るストライプブロック数の期待値（E）、ディスク定数（D）から、各階層のディスク係数（α）を計算する。コンピュータ２０は、中性能層・低性能層の、RAID係数（A）、ディスク係数（α）、仮想WRITEコスト（V）、READ割合（c）から、相変化多重度（ε）を計算する。
【０２４６】
次に、コンピュータ２０は、上述したSSDの性能モデルから、高性能層の最大I/O頻度を算出する（Ｓ２５ａ）。具体的には、コンピュータ２０は、SSDのRAIDランク（R）、I/Oが跨るストライプブロック数の期待値（E）、READ割合（c）、READグループ数から、高性能層における最大I/O頻度(X1)を算出する。
【０２４７】
コンピュータ２０は、式（１）の性能モデルを用いて、中性能層、低性能層の最大I/O頻度を算出する（Ｓ２５ｂ，Ｓ２５ｃ）。コンピュータ２０は、各階層の、平均レスポンス、RAID係数（Ａ）、ディスク係数（α）、相変化多重度（ε）から、式（１）の性能モデル式の逆関数の近似解を算出することによって、中性能層の最大I/O頻度（X2）と低性能層の最大I/O頻度（X3）を計算する。
【０２４８】
次に、コンピュータ２０は、各階層の最大Sub-LUN数から、各階層におけるジップ分布累積値を算出する（Ｓ２６ａ〜Ｓ２６ｄ）。ここでは、コンピュータ２０は、総Sub-LUN数（Ｎ）と高性能層の最大Sub-LUN数（S1）から、高性能層のジップ分布累積値（Z1）を計算する。また、コンピュータ２０は、総Sub-LUN数（Ｎ）と高性能層の最大Sub-LUN数（S1）、中性能層の最大Sub-LUN数（S2）から、高・中性能層合わせたジップ分布累積値（Z12）を計算する。コンピュータ２０は、算出された高性能層のジップ分布累積値（Z1）、高・中性能層合わせたジップ分布累積値（Z12）を用いて、中性能層のジップ分布累積値（Z2）、低性能層のジップ分布累積値（Z3）を計算する。
【０２４９】
次に、コンピュータ２０は、各階層から算出される総I/O頻度から、最適性能を算出する（Ｓ２７ａ〜Ｓ２７ｃ）。ここでは、コンピュータ２０は、高性能層の最大I/O頻度（X1）と高性能層のジップ分布累積値（Z1）から、高性能層から想定される総I/O頻度（XN1）を計算する。コンピュータ２０は、中性能層の最大I/O頻度（X2）と中性能層のジップ分布累積値（Z2）から、中性能層から想定される総I/O頻度（XN2）を計算する。コンピュータ２０は、低性能層の最大I/O頻度（X3）と低性能層のジップ分布累積値（Z3）から、低性能層から想定される総I/O頻度（XN3）を計算する。
【０２５０】
コンピュータ２０は、高性能層から想定される総I/O頻度（XN1）、中性能層から想定される総I/O頻度（XN2）、低性能層から想定される総I/O頻度（XN3）のうち、最も小さい値を最適性能とする（Ｓ２８）。
【０２５１】
コンピュータ２０は、中性能層から想定される総I/O頻度（XN2）と低性能層から想定される総I/O頻度（XN3）を比較する（Ｓ２９）。コンピュータ２０は、その比較結果に応じて、使用容量を減らす階層を決定し、最適使用容量を算出する（Ｓ３０ａ，Ｓ３０ｂ，Ｓ３１）。すなわち、XN2＜XN3の場合、コンピュータ２０は、S2を変数とした場合の最適性能を求める式を作成する。コンピュータ２０は、S2の値を減らしていき、最適性能の式が最大となるS2の値を算出する（Ｓ３０ａ）。コンピュータ２０は、その場合の総Sub-LUN数（N＝S1＋S2＋S3）の値を最適使用容量とする（Ｓ３１）。XN2≧XN3の場合、コンピュータ２０は、S3を変数とした場合の最適性能を求める式を作成する。コンピュータ２０は、S3の値を減らしていき、最適性能の式が最大となるS3の値を算出する（Ｓ３０ｂ）。コンピュータ２０は、その場合の総Sub-LUN数（N＝S1＋S2＋S3）の値を最適使用容量とする（Ｓ３１）。
【０２５２】
以下では、図１８Ａ及び図１８Ｂのフローについての実施例を示す。以下の実施例では、本実施形態に係るプログラムがインストルールされたコンピュータ２０によって実行される。階層ストレージに搭載可能なディスクの種類は、以下であるとする。
・SSD 2.5[inch] 100[GB], 200[GB], 400[GB]
・SSD 3.5[inch] 100[GB], 200[GB], 400[GB]
・Online SAS  3.5[inch]  15,000[rpm]  300[GB], 450[GB], 600[GB]
・Online SAS  2.5[inch]  15,000[rpm]  300[GB]
・Online SAS  2.5[inch]  10,000[rpm]  300[GB], 450[GB], 600[GB], 900[GB]
・Nearline SAS  3.5[inch]  7,200[rpm]  1[TB], 2[TB], 3[TB]
・Nearline SAS  2.5[inch]  7,200[rpm]  1[TB]
【０２５３】
Online SASディスク、Nearline SASディスクの回転数は３種類であるため、それぞれのディスクに対してディスク定数を測定する。
・15,000[rpm]のディスクのディスク定数（D1）＝0.017
・10,000[rpm]のディスクのディスク定数（D2）＝0.021
・7,200[rpm]のディスクのディスク定数（D3）＝0.037
【０２５４】
次に、性能評価支援プログラムが対応するワークロードを限定、すなわち限定条件を設定する。第２の実施形態は、シーケンシャルアクセスには対応せず、ランダムアクセスに対応する。上述の通り、ランダムアクセスで、さらにREAD処理は100%キャッシュミスが発生し、WRITE処理は100%キャッシュヒットになる条件とする。この条件が、通常の運用の中で最もRAIDの性能が悪い条件であるので、このような制限は性能の評価として意義があると考える。
【０２５５】
また、平均READブロックサイズと平均WRITEブロックサイズは同じであるとする。すなわち、平均ブロックサイズ＝平均READブロックサイズ＝平均WRITEブロックサイズであると仮定する。
【０２５６】
平均ブロックサイズの代表値として、例えば、8[KB]、16[KB]、32[KB]、64[KB]が挙げられ、ユーザにはこれらの代表値から最も近い値を選択してもらうようにする。
上記限定条件に対応する仮想WRITEコスト（V）を測定する。上記３つのディスクのRAIDレベル毎、及びブロックサイズ毎の仮想WRITEコスト（V）の測定結果を図１４に示す。
【０２５７】
このとき、WRITEレスポンス（WW）も測定しておく。WRITE処理は、100%キャッシュヒットとなることを想定しているので、全ての場合でほぼ同じ値になると想定される。第２の実施形態では、WRITEレスポンス（WW）＝0.000275 [sec]であるとする。
【０２５８】
次に、Ｓ２１について説明する。図１９は、第２の実施形態における入力画面の一例を示す。図１９（Ａ）は、階層構成を入力するための入力画面である。図１９（Ｂ）は、ワークロード特性の設定を入力するための入力画面である。一例として、以下のように入力された場合を考える。
・高性能層：2.5[inch] SSD 400[GB]，RAID5 3＋1，RAIDグループ数 1、平均レスポンスは5msecである。
・中性能層：3.5[inch] Online SAS 15,000[rpm] 600[GB]，RAID5 7＋1，RAIDグループ数 5，平均レスポンスは0.020[sec]である。
・低性能層：2.5[inch] Nearline SAS 7,200[rpm] 1[TB]，RAID6 8＋2，RAIDグループ数 12，平均レスポンスは0.030[sec]である。
・READ:WRITE比は75:25、平均ブロックサイズは 48[KB]
【０２５９】
各ディスクの平均レスポンスを把握できているユーザは、各ディスクの平均レスポンスを入力する。各ディスクの平均レスポンスを把握できていないユーザは、各ディスクの平均レスポンスとしてデフォルト値を使用する。また、READ：WRITE比、ブロックサイズを把握できているユーザは、これらの値を入力する。READ：WRITE比、ブロックサイズを把握していない場合には、デフォルト値を使用する。
【０２６０】
次に、Ｓ２２ａ〜Ｓ２２ｄについて説明する。Ｓ２２ａ〜Ｓ２２ｄでは、コンピュータ２０は、ユーザからの入力情報を計算しやすい形に変換する。高性能層については、RAIDランク（R）＝３とする。このとき、400[GB]ディスクの実容量は374,528[MB]なので、論理容量＝実容量×RAIDランク×RAIDグループ数＝374,528×3×1＝1,123,584[MB]となる。
【０２６１】
中性能層については、RAIDランク（R）＝７とする。このとき、600[GB]ディスクの実容量は559,104[MB]なので、論理容量＝実容量×RAIDランク×RAIDグループ数＝559,104×7×5＝19,568,640[MB]となる。
【０２６２】
低性能層については、RAIDランク（R）＝８とする。このとき、１[TB]ディスクの実容量は937,728[MB]なので、論理容量＝実容量×RAIDランク×RAIDグループ数＝937,728×8×12＝90,021,888[MB]となる。
【０２６３】
ここで、Sub-LUNのサイズを1,344[MB]と定義する。この場合、コンピュータ２０は、以下のように、各階層におけるSub-LUN数を計算する。
・高性能層のSub-LUN数は、1,123,584／1,344＝836
・中性能層のSub-LUN数は、19,568,640／1,344＝14,560
・低性能層のSub-LUN数は、90,021,888／1,344＝66,980
【０２６４】
階層間で、Sub-LUNを移動する際には、移動先の階層に空き容量が必要であるため、その空き容量の割合を一律10%と定義する。コンピュータ２０は、各階層におけるSub-LUN数にその割合を乗じた値を各階層の論理容量とする。
・高性能層のSub-LUN単位の論理容量（S1）：836×0.9＝752
・中性能層のSub-LUN単位の論理容量（S2）：14,560×0.9＝13,104
・低性能層のSub-LUN単位の論理容量（S3）：66,980×0.9＝60,282
・総Sub-LUN数（N）：752＋13,104＋60,282＝74,138
READ:WRITE比率が75：25なので、コンピュータ２０は、READ割合（c）＝0.75を算出する。
【０２６５】
コンピュータ２０は、I/Oが跨るストライプブロック数の期待値（E）を算出する。
・ストライプブロックのサイズ（ストライプ長もしくはストライプサイズ）は６４[KB]とする。
・平均ブロックサイズ：r＝48[KB]
・M＝（（r−0.5） mod 64）＋0.5＝48
・N＝（r―M＋64）／ 64＝1
・E＝(N＋1){(2M−1)／128}＋N{(128−2M＋1)／128}＝1.7422
・平均ブロックサイズとREAD平均ブロックサイズが同じなので、READが跨るストライプブロック数の期待値ERは上記Eと同じ値となる。
【０２６６】
次に、Ｓ２３ａ〜Ｓ２３ｂ，Ｓ２４ａ〜Ｓ２４ｂについて説明する。Ｓ２３ａ〜Ｓ２３ｂでは、コンピュータ２０は、入力された情報から、中性能層、低性能層の性能予測のために、式（１）の性能モデルで用いるパラメータを取得する。Ｓ２４ａ〜Ｓ２４ｂでは、コンピュータは、式（１）の性能モデルで用いるパラメータを算出する。なお、以下において、RAID係数、ディスク係数、相変化多重度の具体的な算出方法は第１の実施形態の実施例のＳ４で説明したので、省略する。
【０２６７】
中性能層について
・ディスク定数：D＝0.017
・仮想WRITEコスト：V＝0.0262
・RAID係数：A＝2.3455
・ディスク係数：α＝0.003017
・相変化多重度：ε＝0.4476
【０２６８】
低性能層について
・ディスク定数：D＝0.037
・仮想WRITEコスト：V＝0.1393
・RAID係数：A＝3.5741
・ディスク係数：α＝0.004309
・相変化多重度：ε＝0.2485
【０２６９】
次に、Ｓ２５ｂ〜Ｓ２５ｃについて説明する。Ｓ２５ｂ〜Ｓ２５ｃでは、コンピュータ２０は、入力された情報から、中性能層・低性能層の性能のために、式（１）の性能モデルを用いて各階層の最大I/O頻度を算出する。第１の実施形態の実施例におけるＳ５と同様に、中性能層全体の最大I/O頻度を算出すると、中性能層の最大I/O頻度＝2817.774が得られる。また、低性能層全体の最大I/O頻度についても、低性能層の最大I/O頻度＝1934.883が得られる。
【０２７０】
次に、Ｓ２５ａについて説明する。Ｓ２５ａでは、コンピュータ２０は、入力された情報から、SSDの性能モデルにより、高性能層の最大I/O頻度を算出する。高性能層は、SSD RAID5 3＋1（RAIDランク＝３）なので、SSDのWRITE最大性能は、比例係数×RAIDランク＝1400×3＝4200 [IOPS]が算出される。READ割合が0.75、I/Oが跨るストライプブロックの期待値が1.7422なので、SSD最大性能は、4200／(1−0.75)／1.7422＝9642.98が算出される。高性能層のRAIDグループ数は”1”なので、9642.98が高性能層の最大I/O頻度になる。
【０２７１】
次に、Ｓ２６ａ〜Ｓ２６ｄについて説明.する。Ｓ２６ａ〜Ｓ２６ｄでは、コンピュータ２０は、最大容量におけるSub-LUN数から、各階層のジップ分布累積値を算出する。
・高性能層のジップ分布累積度：Z1＝(ln S1＋γ)／(ln N＋γ)＝(ln 752＋0.5772)／(ln 71,372＋0.5772)＝0.6106
・高性能層・中性能層合わせたジップ分布累積値：Z12＝(ln (S1＋S2)＋γ)／ (ln N＋γ)＝(ln (752＋13,104)＋0.5772)／(ln 71,372＋0.5772)＝0.8578
・中性能層のジップ分布累積度：Z2＝Z12−Z1＝0.2472
・低性能層のジップ分布累積度：Z3＝1−Z12＝0.1422
【０２７２】
次に、Ｓ２７ａ〜Ｓ２７ｃ，Ｓ２８について説明.する。Ｓ２７ａ〜Ｓ２７ｃでは、コンピュータ２０は、以下に示すように、各階層の全体の最大性能を算出する。
・高性能層：XN1＝XM1／Z1＝9,642.98／0.6106＝15,792.63
・中性能層：XN2＝XM2／Z2＝2,817.774／0.2472＝11,398.76
・低性能層：XN3＝XM3／Z3＝1,934.883／0.1422＝13,606.77
算出された想定性能のうち最も小さい値は、中性能層から算出された全体の最大性能（XN2）なので、コンピュータ２０は、XN2を最適性能とする。
【０２７３】
次に、Ｓ２９，Ｓ３０ａ〜Ｓ３０ｂ，Ｓ３１について説明する。Ｓ２７ａ〜Ｓ２７ｃでは、コンピュータ２０は、最適使用容量をMicrosoft Excel（登録商標）におけるソルバー機能を用いて算出するため、算出したジップ分布累積値から最適性能の算出までを、セルに対する式で与える。
・A1セルの値：高性能層のSub-LUN数＝752
・B1セルの値：中性能層のSub-LUN数＝13,104
・C1セルの値：低性能層のSub-LUN数＝60,282
・D1セルの式：”＝A1＋B1＋C1”
・A2セルの式：ジップ分布累積値Z1の算出式
“＝(LN(A1)＋0.5772)／(LN(D1)＋0.5772)”
・B2セルの式：ジップ分布累積値Z2の算出式
“＝((LN(A1＋B1)＋0.5772)／(LN(D1)＋0.5772))−A2”
・C2セルの式：ジップ分布累積値Z3の算出式
“＝1−((LN(A1＋B1)＋0.5772)／(LN(D1)＋0.5772))”
・A3セルの式：XN1の算出式”＝9,642.98／A2”
・B3セルの式：XN2の算出式”＝2,817.774／B2”
・C3セルの式：XN3の算出式”＝1,934.883／C2”
・D3セルの式：”＝MIN(A3,B3,C3)”
【０２７４】
コンピュータ２０は、最適使用容量を計算するため、以下の条件をソルバーに与える。最適性能の計算において、XN2＜XN3であった。コンピュータ２０は、ソルバーに、目的セルD3、目標値は最大値、変数セルB1という条件を入力する。また、コンピュータ２０は、最適性能の計算において、XN2≧XN3の場合は、変数セルをC1とする条件を入力する。コンピュータ２０は、この条件のソルバーにて解を求めると、中性能層のSub-LUN数としてB1セルに10,337.27≒10,337という値が得られる。このとき、D1セルに全ての階層のSub-LUN数の合計値71,371が出力されている。Sub-LUNのサイズは1,334[MB]であるため、最適使用容量として71,371×1,344[MB]＝91.48[TB]が得られる。
【０２７５】
以上で計算は終了したので、コンピュータ２０は、図２０に示すように、算出結果を表示する。
【０２７６】
以上より、階層型ストレージは、性能が異なる複数のストレージの組み合わせで実現されているため、一般的に性能の評価が難しい。
しかしながら、第２の実施形態を利用することで、任意の組み合わせにおける性能値を出力することができ、実際の階層型ストレージの運用に際し、実際の負荷がこの性能値になるまでは安全であるという基準を設けることが出来る。その結果、運用の指針を作成することが出来る。
【０２７７】
また、使用できる最大の容量を使い切る状態より、空き容量がある方が一般的に性能は良いが、それがどのような容量なのかを出力することが出来、実際の階層型ストレージの運用に際し、同様に運用の指針を作成することが出来る。
【０２７８】
第２の実施形態によれば、Sub-LUN毎のアクセス頻度の偏りがジップ分布に従うという仮定に基づいて、任意の構成をとる階層ストレージにおける最適な性能と最適な使用容量が算出できる。式（１）の性能モデルにより、各階層の平均レスポンス条件を満たす最大I/O頻度を計算し、ジップ分布を用いることで、任意の使用容量でも全ての階層で上記性能条件を満足できる最大の性能値（I/O頻度）を算出することができる。
【０２７９】
上記最適性能の計算結果から、性能のボトルネックとなる階層を定義し、その階層の使用容量を減らしていくことによって、最適な使用容量を算出することができる。感覚的には、性能が高い階層から順にデータを格納していくことが最も性能が良くなる方式だと思われるが、実際には中性能層の使用容量を減らすことが最も性能が良くなるケースが存在する。そして、中性能層を減らす場合における数学的考察から、中性能層の容量が多い場合より、低性能層の容量が多い場合の方が全体的な性能が高くなることが分かる。
【０２８０】
なお、第１及び第２の実施形態は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【０２８１】
上記実施形態に関し、以下の付記を開示する。
（付記１）
コンピュータに、
ストレージシステムに含まれる複数の記憶装置群であって、読み出し要求及び書き込み要求のうち少なくともいずれかを含む要求に対する応答性能が互いに異なる該複数の記憶装置群のそれぞれの構成に関する情報及び記憶装置群のそれぞれについての前記要求に対する最大応答時間に関する情報を取得し、
取得した前記情報を用いて、前記複数の記憶装置群のそれぞれに対して、応答時間が前記最大応答時間となる単位時間当たりの要求発行頻度である最大要求発行頻度を算出し、
前記複数の記憶装置群における単位容量への前記要求発行頻度であって頻度順に並べた該要求発行頻度と、該要求発行頻度の確率とがジップ分布に従う場合、該ジップ分布から、前記記憶装置群毎に、該記憶装置群に対する要求の発行数の累積値を算出し、
前記最大要求発行頻度と前記要求の発行数の累積値とを用いて、前記記憶装置群の性能に関する評価基準値を生成する
処理を実行させることを特徴とする性能評価支援プログラム。
（付記２）
前記評価基準値の生成において、前記複数の記憶装置群のうち最も前記応答性能のよい第1の記憶装置群に対して該第1の記憶装置群の論理容量と同じ容量を割り当て、前記第１の記憶装置群以外の記憶装置群に対して、前記記憶装置群の前記要求の発行数の累積値を用いて、前記最大応答時間以内に応答できる前記要求発行頻度が最大の値になる容量を算出する
ことを特徴とする付記１に記載の性能評価支援プログラム。
（付記３）
前記評価基準値の生成において、前記複数の記憶装置群のそれぞれの論理容量の比率を算出する
ことを特徴とする付記１または２に記載の性能評価支援プログラム。
（付記４）
前記評価基準値の生成において、予め指定された前記複数の記憶装置群全体に対する単位時間当たりの要求発行頻度と、前記ジップ分布とを用いて、前記記憶装置群間の単位時間当たりの要求発行頻度を算出する
ことを特徴とする付記１〜３のうちいずれか１項に記載の性能評価支援プログラム。
（付記５）
前記評価基準値の生成において、前記記憶装置群毎の前記最大要求発行頻度を前記要求発行数の累積値で割った値のうち最も小さい値と、前記ジップ分布とを用いて、前記記憶装置群間の単位時間当たりの前記要求発行頻度を算出する
ことを特徴とする付記１〜４のうちいずれか１項に記載の性能評価支援プログラム。
（付記６）
前記評価基準値の生成において、前記記憶装置群毎の前記最大要求発行頻度を、該記憶装置群に対する要求の発行数の累積値で除算して得られた値のうち、最も小さい値を出力する
ことを特徴とする付記１に記載の性能評価支援プログラム。
（付記７）
前記除算して得られた値のうち、前記複数の記憶装置群のうち最も前記応答性能のよい第１の記憶装置群以外の記憶装置である第２及び第３の記憶装置群に対応する前記値同士を比較し、比較した結果、小さい方の値に対応する記憶装置群を決定し、
決定した前記記憶装置群の格納容量を最大容量から少なくすることによって、前記記憶装置群が処理できる前記要求数が最大になる格納容量を算出する
ことを特徴とする付記６に記載の性能評価支援プログラム。
（付記８）
ストレージシステムに含まれる複数の記憶装置群であって、読み出し要求及び書き込み要求のうち少なくともいずれかを含む要求に対する応答性能が互いに異なる該複数の記憶装置群のそれぞれの構成に関する情報及び記憶装置群のそれぞれについての前記要求に対する最大応答時間に関する情報を取得する取得部と、
取得した前記情報を用いて、前記複数の記憶装置群のそれぞれに対して、応答時間が前記最大応答時間となる単位時間当たりの要求発行頻度である最大要求発行頻度を算出する頻度算出部と、
前記複数の記憶装置群における単位容量への前記要求発行頻度であって頻度順に並べた該要求発行頻度と、該要求発行頻度の確率とがジップ分布に従う場合、該ジップ分布から、前記記憶装置群毎に、該記憶装置群に対する要求の発行数の累積値を算出する累積値算出部と、
前記最大要求発行頻度と前記要求の発行数の累積値とを用いて、前記記憶装置群の性能に関する評価基準値を生成する基準値算出部と、
を備えることを特徴とする性能評価支援装置。
（付記９）
前記基準値算出部は、前記複数の記憶装置群のうち最も前記応答性能のよい第1の記憶装置群に対して該第1の記憶装置群の論理容量と同じ容量を割り当て、前記第１の記憶装置群以外の記憶装置群に対して、前記記憶装置群の前記要求の発行数の累積値を用いて、前記最大応答時間以内に応答できる前記要求発行頻度が最大の値になる容量を算出する
ことを特徴とする付記８に記載の性能評価支援装置。
（付記１０）
前記基準値算出部は、前記複数の記憶装置群のそれぞれの論理容量の比率を算出する（Ｓ６ａ）
ことを特徴とする付記８または９に記載の性能評価支援装置。
（付記１１）
前記基準値算出部は、予め指定された前記複数の記憶装置群全体に対する単位時間当たりの要求発行頻度と、前記ジップ分布とを用いて、前記記憶装置群間の単位時間当たりの要求発行頻度を算出する
ことを特徴とする付記８〜１０のうちいずれか１項に記載の性能評価支援装置。
（付記１２）
前記基準値算出部は、前記記憶装置群毎の前記最大要求発行頻度を前記要求発行数の累積値で割った値のうち最も小さい値と、前記ジップ分布とを用いて、前記記憶装置群間の単位時間当たりの前記要求発行頻度を算出する
ことを特徴とする付記８〜１１のうちいずれか１項に記載の性能評価支援装置。
（付記１３）
前記基準値算出部は、前記記憶装置群毎の前記最大要求発行頻度を、該記憶装置群に対する要求の発行数の累積値で除算して得られた値のうち、最も小さい値を出力する
ことを特徴とする付記８に記載の性能評価支援装置。
（付記１４）
前記基準値算出部は、前記除算して得られた値のうち、前記複数の記憶装置群のうち最も前記応答性能のよい第１の記憶装置群以外の記憶装置である第２及び第３の記憶装置群に対応する前記値同士を比較し、比較した結果、小さい方の値に対応する記憶装置群を決定し、
決定した前記記憶装置群の格納容量を最大容量から少なくすることによって、前記記憶装置群が処理できる前記要求数が最大になる格納容量を算出する
ことを特徴とする付記１３に記載の性能評価支援装置。
（付記１５）
コンピュータにより実行されるストレージシステムの性能評価の基準値の算出方法であって、
前記コンピュータは、
前記ストレージシステムに含まれる複数の記憶装置群であって、読み出し要求及び書き込み要求のうち少なくともいずれかを含む要求に対する応答性能が互いに異なる該複数の記憶装置群のそれぞれの構成に関する情報及び記憶装置群のそれぞれについての前記要求に対する最大応答時間に関する情報を取得し、
取得した前記情報を用いて、前記複数の記憶装置群のそれぞれに対して、応答時間が前記最大応答時間となる単位時間当たりの要求発行頻度である最大要求発行頻度を算出し、
前記複数の記憶装置群における単位容量への前記要求発行頻度であって頻度順に並べた該要求発行頻度と、該要求発行頻度の確率とがジップ分布に従う場合、該ジップ分布から、前記記憶装置群毎に、該記憶装置群に対する要求の発行数の累積値を算出し、
前記最大要求発行頻度と前記要求の発行数の累積値とを用いて、前記記憶装置群の性能に関する評価基準値を生成する
ことを特徴とする性能評価支援方法。
【符号の説明】
【０２８２】
１      性能評価支援装置
２      取得部
３      頻度算出部
４      累積値算出部
５      基準値算出部
１０    階層ストレージ装置
１１    RAIDコントローラ
１２    キャッシュメモリ
１３    RAIDグループ
１４    SSDディスクプール
１５    RAIDグループ
１６    Online SASディスクプール
１７    RAIDグループ
１８    Nearline SASディスクプール
【図１】
2014174845.tif 000030
【図２】
2014174845.tif 000031
【図３】
2014174845.tif 000032
【図５】
2014174845.tif 000033
【図６】
2014174845.tif 000034
【図７】
2014174845.tif 000035
【図８】
2014174845.tif 000036
【図９】
2014174845.tif 000037
【図１０】
2014174845.tif 000038
【図１１Ａ】
2014174845.tif 000039
【図１２】
2014174845.tif 000040
【図１３】
2014174845.tif 000041
【図１４Ａ】
2014174845.tif 000042
【図１４Ｂ】
2014174845.tif 000043
【図１５】
2014174845.tif 000044
【図１６】
2014174845.tif 000045
【図１７】
2014174845.tif 000046
【図１８Ａ】
2014174845.tif 000047
【図１９】
2014174845.tif 000048
【図２０】
2014174845.tif 000049
【図４】
2014174845.tif 000050
【図１１Ｂ】
2014174845.tif 000051
【図１８Ｂ】
2014174845.tif 000052