(57)【要約】【課題】ストレージ装置の使用状況に応じたストレージ装置のアクセス性能を算出すること。【解決手段】ストレージ装置１０２の負荷状態を測定する際、ストレージ制御装置１０１は、ストレージ装置１０２の記憶領域のアクセス数に対する各ブロックのアクセス数の割合を算出する。そして、ストレージ制御装置１０１は、各ブロックのアクセス率と、測定した各ブロックのアクセス性能を示す情報１１１とに基づいて、ストレージ装置１０２のアクセス性能を算出する。これにより、ストレージ制御装置１０１は、ストレージ装置１０２の使用状況に応じたストレージ装置１０２のアクセス性能を正確に推定することができる。【選択図】図１
2016157271.tif 000002
【特許請求の範囲】
【請求項１】
ストレージ装置の記憶領域を、アドレスが連続する部分領域で区切って分割した複数の部分領域の各々の部分領域におけるアクセス性能を記憶する記憶部と、
前記記憶領域のアクセス数に対する前記各々の部分領域のアクセス数の割合を算出し、算出した前記各々の部分領域のアクセス数の割合と前記記憶部に記憶された前記各々の部分領域におけるアクセス性能とに基づいて、前記記憶領域におけるアクセス性能を算出する制御部と、
を有することを特徴とするストレージ制御装置。
【請求項２】
前記記憶部は、前記各々の部分領域におけるリードアクセスとライトアクセスとの割合に応じたアクセス性能を記憶しており、
前記制御部は、
さらに、前記記憶領域におけるリードアクセスとライトアクセスとの割合を算出し、
算出した前記各々の部分領域のアクセス数の割合と、前記記憶部に記憶された前記各々の部分領域におけるリードアクセスとライトアクセスとの割合に応じたアクセス性能と、算出した前記記憶領域におけるリードアクセスとライトアクセスとの割合とに基づいて、前記記憶領域におけるアクセス性能を算出することを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記記憶部は、前記各々の部分領域におけるランダムアクセスとシーケンシャルアクセスとの割合に応じたアクセス性能を記憶しており、
前記制御部は、
さらに、前記記憶領域におけるランダムアクセスとシーケンシャルアクセスとの割合を算出し、
算出した前記各々の部分領域のアクセス数の割合と、前記記憶部に記憶された前記各々の部分領域におけるランダムアクセスとシーケンシャルアクセスとの割合に応じたアクセス性能と、算出した前記記憶領域におけるランダムアクセスとシーケンシャルアクセスとの割合とに基づいて、前記記憶領域におけるアクセス性能を算出することを特徴とする請求項１または２に記載のストレージ制御装置。
【請求項４】
前記各々の部分領域におけるアクセス性能は、前記各々の部分領域における単位時間当たりのアクセスの回数または／およびデータ量であり、
前記記憶領域におけるアクセス性能は、前記記憶領域における単位時間当たりのアクセスの回数または／およびデータ量であることを特徴とする請求項１〜３のいずれか一つに記載のストレージ制御装置。
【請求項５】
前記記憶部は、さらに、前記複数の部分領域のうちの第１の部分領域から第２の部分領域にシークする処理にかかる時間を記憶しており、
前記制御部は、
算出した前記各々の部分領域のアクセス数の割合に基づいて、前記記憶領域内で１回のアクセスによってシークする距離を特定し、
特定した前記記憶領域内で１回のアクセスによってシークする距離と、前記記憶部に記憶された前記第１の部分領域から前記第２の部分領域にシークする処理にかかる時間とに基づいて、前記記憶領域内で１回のアクセスによってシークする処理にかかる時間を特定し、
算出した前記各々の部分領域のアクセス数の割合と、前記記憶部に記憶された前記各々の部分領域における単位時間当たりのアクセスの回数または／およびデータ量と、特定した前記記憶領域内で１回のアクセスによってシークする処理にかかる時間とに基づいて、前記記憶領域における単位時間当たりのアクセスの回数または／およびデータ量を算出することを特徴とする請求項４に記載のストレージ制御装置。
【請求項６】
コンピュータが、
ストレージ装置の記憶領域のアクセス数に対する前記記憶領域をアドレスが連続する部分領域で区切って分割した複数の部分領域の各々の部分領域のアクセス数の割合を算出し、
前記各々の部分領域におけるアクセス性能を記憶する記憶部に記憶された前記各々の部分領域におけるアクセス性能と、算出した前記各々の部分領域のアクセス数の割合とに基づいて、前記記憶領域におけるアクセス性能を算出する、
処理を実行することを特徴とする制御方法。
【請求項７】
コンピュータに、
ストレージ装置の記憶領域のアクセス数に対する前記記憶領域をアドレスが連続する部分領域で区切って分割した複数の部分領域の各々の部分領域のアクセス数の割合を算出し、
前記各々の部分領域におけるアクセス性能を記憶する記憶部に記憶された前記各々の部分領域におけるアクセス性能と、算出した前記各々の部分領域のアクセス数の割合とに基づいて、前記記憶領域におけるアクセス性能を算出する、
処理を実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、制御方法、および制御プログラムに関する。
【背景技術】
【０００２】
従来、ストレージ装置のアクセス性能を測定する技術がある。また、ストレージ装置の記憶領域の間でアクセス性能が異なる場合がある。関連する先行技術として、例えば、ある記憶領域により実現される論理領域への書き込みがシーケンシャルアクセスであれば論理領域に書き込み、ランダムアクセスであれば、ある記憶領域よりアクセス速度の高い記憶領域を仮想化した領域に書き込むものがある。また、リードアクセスが行われる量とライトアクセスが行われる量との比率であるリードライト比率と、データ量の増加頻度とを計測する技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−０４１４７１号公報
【特許文献２】特開２０１０−０２６９１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、測定したストレージ装置のアクセス性能が、ストレージ装置の使用状況を考慮したものでない場合がある。例えば、ディスクの外周部分の記憶領域は、ディスクの内周部分の記憶領域よりアクセス性能が高いため、ディスクの外周部分の記憶領域に頻繁にアクセスする使い方がされる場合がある。この場合、ストレージ装置のアクセス性能として平均的なアクセス性能を測定すると、測定したアクセス性能は、使用状況を考慮していないものとなる。
【０００５】
１つの側面では、本発明は、ストレージ装置の使用状況に応じたストレージ装置のアクセス性能を算出することができるストレージ制御装置、制御方法、および制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、ストレージ装置の記憶領域を、アドレスが連続する部分領域で区切って分割した複数の部分領域の各々の部分領域におけるアクセス性能を記憶する記憶部を有し、記憶領域のアクセス数に対する各々の部分領域のアクセス数の割合を算出し、算出した各々の部分領域のアクセス数の割合と記憶部に記憶された各々の部分領域におけるアクセス性能とに基づいて、記憶領域におけるアクセス性能を算出するストレージ制御装置、制御方法、および制御プログラムが提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、ストレージ装置の使用状況に応じたストレージ装置のアクセス性能を算出することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかるストレージ制御装置１０１の動作例を示す説明図である。
【図２】図２は、ストレージシステム２００の構成例を示すブロック図である。
【図３】図３は、ＦｒｏｎｔＥｎｄ制御部３０１とＢａｃｋＥｎｄ制御部３０２との動作を示す説明図である。
【図４】図４は、記憶媒体の内側と外側とにおけるアクセス性能の差を示す説明図である。
【図５】図５は、シークによる遅延時間の差を示す説明図である。
【図６】図６は、ＢａｃｋＥｎｄ制御部３０２の機能構成例を示すブロック図である。
【図７】図７は、ブロック分割の例を示す説明図である。
【図８】図８は、ブロックごとの基礎性能情報６１１の一例を示す説明図である。
【図９】図９は、アクセス回数と見積りシーク距離の特定の一例を示す説明図である。
【図１０】図１０は、アクセス率に基づいたＩＯＰＳの一例を示す説明図である。
【図１１】図１１は、見積りシーク時間を考慮した性能情報１１０１＿ｓの一例を示す説明図である。
【図１２】図１２は、アクセスパターンおよびコマンド種別の割合を用いたＩＯＰＳの見積り例を示す説明図である。
【図１３】図１３は、構成変更時処理手順の一例を示すフローチャートである。
【図１４】図１４は、アクセス発生時処理手順の一例を示すフローチャートである。
【図１５】図１５は、ビジー率取得要求時処理手順の一例を示すフローチャート（その１）である。
【図１６】図１６は、ビジー率取得要求時処理手順の一例を示すフローチャート（その２）である。
【図１７】図１７は、性能値の利用例を示す説明図である。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示のストレージ制御装置、制御方法、および制御プログラムの実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態にかかるストレージ制御装置１０１の動作例を示す説明図である。ストレージ制御装置１０１は、ストレージ装置１０２を制御するコンピュータである。ストレージ制御装置１０１が制御するストレージ装置１０２は、１つでもよいし、複数でもよい。そして、ストレージ制御装置１０１は、ストレージ装置１０２の記憶領域を、利用者に提供する。例えば、ストレージ制御装置１０１は、サーバの外部記憶装置として、ストレージ装置１０２の記憶領域を提供する。
【００１１】
ストレージ装置１０２は、記憶領域を有するものであればどのようなものでもよい。例えば、ストレージ装置１０２は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等を採用することができる。そして、採用するストレージ装置によって、記憶領域内の部分領域の間でアクセス性能が異なる場合がある。例えば、ストレージ装置１０２がＨＤＤである場合、ＨＤＤの記憶媒体となるディスクの外周部分のアクセス性能は高くなり、ディスクの内周部分のアクセス性能は低くなる。
【００１２】
ここで、ストレージ制御装置１０１は、ストレージ装置１０２への負荷状態を特定するために、ストレージ装置１０２のアクセス性能を特定することがある。そして、ストレージ制御装置１０１は、ストレージ装置１０２へのデータの流量と、ストレージ装置１０２のアクセス性能との比率によって、ストレージ装置１０２の負荷状態を特定する。特定した負荷状態を用いて、ストレージ制御装置１０１は、ストレージ装置１０２の流量制御を行う。例えば、特定した負荷状態が予め指定した閾値以上であれば、ストレージ制御装置１０１は、ストレージ装置１０２への流量の増加を抑止する。一方で、特定した負荷状態が予め指定した閾値未満であれば、ストレージ制御装置１０１は、ストレージ装置１０２への流量の増加を許可する。
【００１３】
アクセス性能は、予めカタログスペックとして決められた値を用いることも考えられるし、実際にストレージ装置１０２のアクセス性能を測定することも考えられる。ここで、アクセス性能は、アクセスに関する性能であればどのような値でもよい。
【００１４】
例えば、コマンドの種別に応じたアクセス性能として、リードアクセスを数回発行して得られた平均の時間や、ライトアクセスを数回発行して得られた時間を、アクセス性能としてもよい。または、リードアクセスとライトアクセスとをいくつかの割合で発行して得られた時間をアクセス性能としてもよい。以下の記載では、アクセスの種別を、「コマンド種別」と記載する。
【００１５】
または、アクセスの仕方に応じたアクセス性能として、ランダムアクセスを数回発行して得られた平均の時間や、シーケンシャルアクセスを数回発行して得られた時間を、アクセス性能としてもよい。または、シーケンシャルアクセスとシーケンシャルアクセスとをいくつかの割合で発行して得られた時間をアクセス性能としてもよい。以下の記載では、アクセスの仕方を、「アクセスパターン」と記載する。
【００１６】
また、アクセス性能とする値は、アクセス１回当たりの時間でもよいし、単位時間当たりのアクセスの回数でもよいし、単位時間当たりのアクセスのデータ量でもよい。本実施の形態では、アクセス性能は、１秒間にアクセスできる回数を示すＩＯＰＳ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｐｅｒ  Ｓｅｃｏｎｄ）と、１秒間あたりに処理可能なデータ量を示すスループット［ＭＢ／ｓ］とする。
【００１７】
ここで、ストレージ装置１０２のアクセス性能が、ストレージ装置１０２の使用状況に応じたものでない場合がある。例えば、ストレージ装置１０２の記憶媒体がディスクであれば、ディスクの外周部分の記憶領域は、ディスクの内周部分の記憶領域よりアクセス性能が高いため、ディスクの外周部分の記憶領域に頻繁にアクセスする使い方がされる場合がある。この場合、ストレージ装置１０２のアクセス性能として平均的なアクセス性能を測定すると、測定したアクセス性能は、使用状況を考慮していないものとなる。そして、使用状況に応じていないアクセス性能を用いて算出された負荷状態も、使用状況に応じていないものになる。また、カタログスペックをそのまま用いた場合、ストレージ装置１０２が持つ固有値とカタログスペックの値とが乖離している場合がある。
【００１８】
そこで、ストレージ制御装置１０１は、ストレージ装置１０２の記憶領域をアドレスが連続する領域で区切って分割した複数の部分領域の各部分領域のアクセス性能と各部分領域のアクセスの割合からストレージ装置１０２の全体の記憶領域のアクセス性能を求める。これにより、ストレージ制御装置１０１は、高性能な外周領域に頻繁にアクセスする使い方がされても、使用状況に応じたアクセス性能を正確に推定することができる。以下、部分領域を、単に、「ブロック」と称する。また、ブロックの分割方法は、アドレスが連続するように分割する。ここで、ストレージ装置１０２の記憶領域のアドレスとしては、例えばＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）が用いられる。以下の説明では、アドレスを、ＬＢＡとする。また、ストレージ装置１０２の全体の記憶領域のアクセス性能を、以下、単に、ストレージ装置１０２のアクセス性能と記載する。
【００１９】
図１を用いてストレージ制御装置１０１の動作について説明する。まず、ストレージ制御装置１０１は、ストレージ装置１０２の記憶領域をＬＢＡが連続するブロックで区切って、複数のブロックに分割する。図１の例では、ストレージ制御装置１０１は、ストレージ装置１０２の記憶領域を、ＬＢＡが連続するブロック［０］で区切り、ブロック［０］の最後のＬＢＡの次のＬＢＡを含みＬＢＡが連続するブロック［１］に区切って、最終的に複数のブロックに分割する。図１の例に示すように、ブロック［０］は、ＬＢＡ０、１、…というように、ＬＢＡが連続するブロックとなる。同様に、ブロック［１］も、ＬＢＡが連続するブロックとなる。
【００２０】
そして、ストレージ制御装置１０１は、各ブロックのアクセス性能を測定する。図１の例では、ＩＯＰＳを測定したものとし、ブロック［０］のＩＯＰＳが３３０［ＩＯＰＳ］であり、ブロック［１］のＩＯＰＳが２７０［ＩＯＰＳ］であるとする。ストレージ制御装置１０１は、測定した各ブロックのアクセス性能を示す情報１１１を、ストレージ制御装置１０１の記憶部に格納する。
【００２１】
次に、ストレージ装置１０２の負荷状態を測定する際、ストレージ制御装置１０１は、ストレージ装置１０２の記憶領域のアクセス数に対する各ブロックのアクセス数の割合を算出する。各ブロックのアクセス数の割合は、１０：８のような比で表されてもよいし、８／１０というように比率で表されてもよい。以下の説明では、ストレージ装置１０２の記憶領域のアクセス数に対する各ブロックのアクセス数の比率を、単に「各ブロックのアクセス率」と記載する。例えば、ストレージ制御装置１０１は、各ブロックのアクセス数をインクリメントしておき、ストレージ装置１０２の全体の記憶領域のアクセス数に対する各ブロックのアクセス数の割合を算出する。図１の例では、ブロック［０］のアクセス率は、８０［％］であり、ブロック［１］のアクセス率は、２０［％］であるとする。
【００２２】
各ブロックのアクセス率が示すように、ストレージ装置１０２を利用する利用者は意図的に、アクセス性能が高速なブロック［０］に頻繁にアクセスし、アクセス性能が低速なブロック［１］にあまりアクセスしないような使い方をしている。
【００２３】
そして、ストレージ制御装置１０１は、各ブロックのアクセス率と、情報１１１とに基づいて、ストレージ装置１０２のアクセス性能を算出する。例えば、ストレージ制御装置１０１は、各ブロックのアクセス率に、各ブロックのアクセス性能を乗算した値を積算して得た値を、ストレージ装置１０２のアクセス性能とする。図１の例では、ストレージ制御装置１０１は、３３０×０．８＋２７０×０．２＝３１８［ＩＯＰＳ］と算出する。これにより、ストレージ制御装置１０１は、ストレージ装置１０２の使用状況に応じたストレージ装置１０２のアクセス性能を正確に推定することができる。次に、ストレージ制御装置１０１をストレージシステム２００に適用した場合の説明を図２に示す。
【００２４】
図２は、ストレージシステム２００の構成例を示すブロック図である。ストレージシステム２００は、ストレージディスクアレイ装置２０１と、サーバ２０２とを有する。ストレージディスクアレイ装置２０１は、ＣＭ（Ｃｏｎｔｒｏｌｌｅｒ  Ｍｏｄｕｌｅ）２１１と、ＤＥ（Ｄｅｖｉｃｅ  Ｅｎｃｌｏｓｕｒｅ）２１２とを有する。ＣＭ２１１が、図１に示したストレージ制御装置１０１に相当する。
【００２５】
ＣＭ２１１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２２１と、ＣＡ（Ｃｈａｎｎｅｌ  Ａｄａｐｔｅｒ）２２２と、キャッシュメモリ２２３と、ＤＩ（Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）２２４とを有する。ＤＥ２１２は、ストレージ装置１０２を有する。
【００２６】
ストレージディスクアレイ装置２０１は、サーバ２０２に、ストレージ装置１０２の記憶領域を提供する。例えば、ストレージディスクアレイ装置２０１は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）技術を適用して、複数のストレージ装置１０２を組み合わせて仮想的なボリュームとし、仮想的なボリュームをサーバ２０２に提供する。サーバ２０２は、業務サービスを行うコンピュータである。例えば、サーバ２０２は、Ｗｅｂサーバや、ＤＢ（ＤａｔａＢａｓｅ）サーバである。
【００２７】
ＣＭ２１１は、ストレージディスクアレイ装置２０１を制御する装置である。図２では、ストレージディスクアレイ装置２０１は、ＣＭ２１１を２つ有するが、１つ以上のＣＭがあればよい。ＤＥ２１２は、ストレージ装置１０２を格納する筐体である。
【００２８】
ＣＰＵ２２１は、ＣＭ２１１を制御する装置である。ＣＡ２２２は、サーバ２０２とのインターフェースを司る制御装置である。キャッシュメモリ２２３は、ＣＰＵ２２１のワークエリアとなる揮発メモリである。さらに、ＣＭ２１１は、ブートプログラムなどのプログラムを記憶する不揮発メモリを有してもよい。ＤＩ２２４は、ストレージ装置１０２とのインターフェースを司る制御装置である。次に、ＣＰＵ２２１が実行する機能の一つとなる、ＦｒｏｎｔＥｎｄ制御を行うＦｒｏｎｔＥｎｄ制御部と、ＢａｃｋＥｎｄ制御を行うＢａｃｋＥｎｄ制御部との動作について説明する。
【００２９】
図３は、ＦｒｏｎｔＥｎｄ制御部３０１とＢａｃｋＥｎｄ制御部３０２との動作を示す説明図である。ＦｒｏｎｔＥｎｄ制御部３０１とＢａｃｋＥｎｄ制御部３０２とは、制御部３００に含まれる。制御部３００は、記憶装置に記憶されたプログラムをＣＰＵ２２１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図２に示したキャッシュメモリ２２３、ストレージ装置１０２などである。また、各部の処理結果は、ＣＰＵ２２１のレジスタや、ＣＰＵ２２１のキャッシュメモリ等に格納される。
【００３０】
ＦｒｏｎｔＥｎｄ制御部３０１は、サーバ２０２とキャッシュメモリ２２３との間で、ボリューム単位でのＦｒｏｎｔＥｎｄの流量制御（ｖｏｌｕｍｅ  ＱｏＳ）を実施する。具体的には、ＦｒｏｎｔＥｎｄ制御部３０１は、判断するための情報としてＢａｃｋＥｎｄ制御部３０２から、ＲＡＩＤ技術により形成されるボリュームを形成するストレージ装置１０２のビジー率を取得する。そして、ＦｒｏｎｔＥｎｄ制御部３０１は、取得したビジー率を基にＲＡＩＤグループのビジー率を算出することで、ＢａｃｋＥｎｄの負荷状況を把握する。例えば、流量の上限を引き上げる際、ビジー率が閾値（例えば、８０［％］）を超える場合は、ＦｒｏｎｔＥｎｄ制御部３０１は、上限を引き上げる効果が無いとして、無駄な流量の上限の引き上げを抑止している。
【００３１】
このように、ＦｒｏｎｔＥｎｄ制御部３０１は、各ボリュームの流量を調節する機能（ｖｏｌｕｍｅ  ＱｏＳ機能）があり、流量を調節する際に実際のストレージ装置１０２の負荷状態を加味することで、より適切な流量調整が可能となる。例えば、あるボリュームに少量のＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）しか流していないとしても、あるボリュームを含むＲＡＩＤグループの他のボリュームに対して頻繁なストレージ装置１０２へのアクセスがあり、ストレージ装置１０２として高負荷状態である可能性がある。この場合、前述のストレージ装置１０２へのＩ／Ｏを増やしても性能の向上にはつながらない。
【００３２】
逆に、高負荷をかけていてもＣａｃｈｅ  ｈｉｔによりＢａｃｋＥｎｄに負荷がかかっていなければ、ストレージ装置１０２としては余力があるため、ＦｒｏｎｔＥｎｄ制御部３０１は、該当のストレージ装置１０２に対して負荷を上げることができる。そのため、ＢａｃｋＥｎｄ制御部３０２からは、ボリュームの切られ方によらずにストレージ装置１０２へのアクセスを監視し、ＦｒｏｎｔＥｎｄ制御部３０１では知ることのできないストレージ装置１０２の単体としての負荷状態をビジー率として通知する。
【００３３】
ＢａｃｋＥｎｄ制御部３０２は、ビジー率の取得要求のあったストレージ装置１０２が実際に発揮できる最大の性能値とストレージ装置１０２への実際の流量の比率をビジー率として算出し、ＦｒｏｎｔＥｎｄ制御部３０１に応答する。ここで、ストレージ装置１０２への実際の流量が、ストレージ装置１０２にかかる負荷となる。
【００３４】
ここで、ストレージ装置１０２が実際に発揮できる最大の性能値は、次に挙げる要因により変動する。ストレージ装置１０２自身による要因として、ストレージ装置１０２の種別、ストレージ装置１０２のベンダ、ストレージ装置の個体差がある。また、サーバ２０２による使用状況による要因として、コマンド種別の割合、アクセス位置、アクセスパターンがある。変動する性能値の対処としては、直近の複数回、例えば３０回のビジー率から平均のビジー率を用いることで、変動を抑えることが考えられる。しかしながら、この場合、短時間の性能値の変動を素早く検知することができない。例えば、ストレージ装置１０２に対して、常に偏ったアクセスする場合には、平均のビジー率と実際のビジー率との乖離を吸収しきれなくなり、高負荷でないにもかかわらず流量の引き上げが抑止されたり、逆に高負荷であるのに流量の引き上げがされたりする。このように、ＢａｃｋＥｎｄ制御部３０２が算出するビジー率が、使用状況に応じたものでないと、ＦｒｏｎｔＥｎｄ制御部３０１の制御も使用状況に応じないものとなる。
【００３５】
本実施の形態において、アクセス性能の測定を行うタイミングは、ストレージシステム２００の構成内容を変更したときであり、具体的には、下記２つのタイミングとなる。１つ目のタイミングは、ストレージシステム２００に新規のストレージ装置が搭載された場合である。１つ目のタイミングの場合、性能情報を測定する対象となるストレージ装置は、新規のストレージ装置となる。また、２つ目のタイミングは、ストレージシステム２００のストレージ装置を保守により交換した場合である。２つ目のタイミングの場合、性能情報を測定する対象となるストレージ装置は、交換後のストレージ装置となる。
【００３６】
次に、図４と図５とを用いて、ＨＤＤのように、ストレージ装置１０２の記憶領域によってアクセス性能に差がつく場合の例を説明する。
【００３７】
図４は、記憶媒体の内側と外側とにおけるアクセス性能の差を示す説明図である。ストレージ装置１０２の実際のアクセス性能は、アクセスする領域の物理的な位置によってアクセス性能が左右される場合がある。具体的には、ストレージ装置１０２がＨＤＤである場合、図４で示すように、記憶媒体の外側と内側で１周当たりのデータ量が異なるため、アクセスする位置によってアクセス性能に差が出る。
【００３８】
図４では、ストレージ装置１０２がＨＤＤである場合の例を示す。ストレージ装置１０２のディスク４０１の外周部分にアクセスすると、１周のデータ量が大きくなるため、アクセス性能が高くなる。一方、ストレージ装置１０２のディスク４０１の内周部分にアクセスすると、１周のデータ量が小さくなるため、アクセス性能が低くなる。
【００３９】
図５は、シークによる遅延時間の差を示す説明図である。ストレージ装置１０２の実際のアクセス性能は、アクセスするデータ間の距離によってアクセス性能が左右される場合がある。具体的には、ストレージ装置１０２がＨＤＤである場合、図５で示すように、記憶媒体のデータ間の距離に応じてヘッダが移動するため、アクセスするデータ間の距離によってアクセス性能に差が出る。
【００４０】
図５では、ストレージ装置１０２がＨＤＤである場合の例を示す。ストレージ装置１０２のディスク５０１のディスクの内周部分のデータにアクセスした後に外周部分のデータにアクセスするとデータ間の距離が長くなり、ヘッダ５０２が移動する距離が長くなるため、シークによる遅延が大きくなる。一方、ストレージ装置１０２のディスク５０１のディスクの内周部分のデータにアクセスした後に多少外周寄りの部分のデータにアクセスするとデータ間の距離が短く、ヘッダ５０２が移動する距離が短くなるため、シークによる遅延が小さくなる。
【００４１】
図６は、ＢａｃｋＥｎｄ制御部３０２の機能構成例を示すブロック図である。ＢａｃｋＥｎｄ制御部３０２は、測定部６０１と、アクセス傾向算出部６０２と、シーク距離特定部６０３と、シーク時間特定部６０４と、アクセス性能算出部６０５とを有する。
【００４２】
また、ＣＭ２１１は、記憶部６１０にアクセス可能である。記憶部６１０は、例えば、キャッシュメモリ２２３に相当する。記憶部６１０は、基礎性能情報６１１を有する。
【００４３】
基礎性能情報６１１は、例えば、キャッシュメモリ２２３に格納される。基礎性能情報６１１は、ブロックごとにある。具体的には、基礎性能情報６１１は、各ブロックにおけるアクセス性能を示す情報である。また、基礎性能情報６１１は、各ブロックにおけるリードアクセスとライトアクセスとの割合に応じたアクセス性能を示してもよい。また、基礎性能情報６１１は、各ブロックにおけるランダムアクセスとシーケンシャルアクセスとの割合に応じたアクセス性能を示してもよい。また、基礎性能情報６１１は、各ブロックのＩＯＰＳまたは／およびスループットを示してもよい。
【００４４】
また、記憶部６１０は、複数のブロックのうちの第１のブロックから第２のブロックにシークする処理にかかる時間を記憶していてもよい。ここで、第１のブロックと第２のブロックとは、複数のブロックのいずれでもよいが、ノイズやばらつきによる誤差を相対的に小さくするため、最も離れたブロック同士であることが好ましい。
【００４５】
各ブロックの基礎性能情報６１１を１つにしたものが、図１で示した情報１１１に相当する。基礎性能情報６１１の一例は、図８で示す。
【００４６】
測定部６０１は、各ブロックにおけるアクセス性能を測定する。測定した結果は、基礎性能情報６１１に格納される。
【００４７】
アクセス傾向算出部６０２は、ストレージ装置１０２の全体の記憶領域のアクセス数に対する各ブロックのアクセス数の割合を算出する。また、アクセス傾向算出部６０２は、ストレージ装置１０２の全体の記憶領域におけるリードアクセスとライトアクセスとの割合、すなわち、コマンド種別の割合を算出してもよい。また、アクセス傾向算出部６０２は、ストレージ装置１０２の全体の記憶領域におけるランダムアクセスとシーケンシャルアクセスとの割合、すわなち、アクセスパターンの割合を算出してもよい。
【００４８】
シーク距離特定部６０３は、アクセス傾向算出部６０２が算出した各ブロックのアクセス数の割合に基づいて、ストレージ装置１０２の記憶領域内で１回のアクセスによってシークする距離を特定する。以下の記載では、説明の簡略化のため、ストレージ装置１０２の記憶領域内で１回のアクセスによってシークする距離を、「見積りシーク距離」と記載する。
【００４９】
例えば、シーク距離特定部６０３は、複数のブロックのうちの各ブロックのアクセス数が所定の閾値以上となったブロックで、最も離れた距離を、見積りシーク距離として特定する。または、シーク距離特定部６０３は、複数のブロックのうちの各ブロックのアクセス数のうちの上位いくつかのブロックで、最も離れた距離を、見積りシーク距離として特定してもよい。
【００５０】
シーク時間特定部６０４は、シーク距離特定部６０３が特定した見積りシーク距離と、記憶部６１０に記憶されたシークする処理にかかる時間とに基づいて、ストレージ装置１０２の記憶領域内で１回のアクセスによってシークする処理にかかる時間を特定する。以下の記載では、説明の簡略化のため、１回のアクセスによってシークする処理にかかる時間を、「見積りシーク時間」と記載する。具体的には、シーク時間特定部６０４は、見積りシーク距離と第１のブロックから第２のブロックまでの距離との比率を、記憶部６１０に記憶されたシークする処理にかかる時間にかけることで、見積りシーク時間を特定する。または、シーク時間特定部６０４は、（記憶部６１０に記憶されたシークする処理にかかる時間）／（第１のブロックから第２のブロックまでの距離）に、見積りシーク距離を乗じて得た値を、見積りシーク時間として特定してもよい。
【００５１】
アクセス性能算出部６０５は、アクセス傾向算出部６０２が算出した各ブロックのアクセス数の割合と基礎性能情報６１１に記憶された各ブロックにおけるアクセス性能とに基づいて、ストレージ装置１０２のアクセス性能を算出する。例えば、アクセス傾向算出部６０２が算出した各ブロックのアクセス数の割合が比率で表されていれば、アクセス性能算出部６０５は、図１で示した方法でストレージ装置１０２のアクセス性能を算出する。また、アクセス傾向算出部６０２が算出した各ブロックのアクセス数の割合が比で表されているとする。この場合、アクセス性能算出部６０５は、各ブロックのアクセス数の比に各ブロックのアクセス性能を乗じた値を積算し、各ブロックのアクセス数の比の和で除した値を、ストレージ装置１０２のアクセス性能として算出する。以下の説明では、アクセス傾向算出部６０２が算出した各ブロックのアクセス数の割合が、図１で示した各ブロックのアクセス率であるとする。
【００５２】
また、アクセス性能算出部６０５は、各ブロックのアクセス率と、各ブロックにおけるコマンド種別の割合に応じたアクセス性能と、アクセス傾向算出部６０２が算出したコマンド種別の割合とに基づいて、ストレージ装置１０２のアクセス性能を算出してもよい。
【００５３】
例えば、アクセス性能算出部６０５は、まず、各ブロックのアクセス率と、各ブロックにおけるコマンド種別の割合に応じたアクセス性能とで算出した性能値を算出する。算出された性能値は、コマンド種別の割合に応じた数分あることになる。そして、アクセス性能算出部６０５は、コマンド種別の割合に応じた性能値を、アクセス傾向算出部６０２が算出したコマンド種別の割合を重みとする加重平均を行った値を、ストレージ装置１０２のアクセス性能として算出する。また、例えば、アクセス性能算出部６０５は、各ブロックにおけるコマンド種別の割合に応じたアクセス性能を、アクセス傾向算出部６０２が算出したコマンド種別の割合を重みとする加重平均を行う。この場合、加重平均された値は、ブロックごとに存在することになる。そして、アクセス性能算出部６０５は、ブロックごとのアクセス性能を各ブロックのアクセス率で乗じた値を積算した値を、ストレージ装置１０２のアクセス性能として算出してもよい。
【００５４】
また、アクセス性能算出部６０５は、各ブロックのアクセス率およびアクセスパターンの割合に応じたアクセス性能と、アクセス傾向算出部６０２が算出したアクセスパターンの割合とに基づいて、ストレージ装置１０２のアクセス性能を算出してもよい。
【００５５】
また、アクセス性能算出部６０５は、各ブロックのアクセス率と、各ブロックにおけるＩＯＰＳまたは／およびスループットと、特定した見積りシーク時間とに基づいて、あるストレージ装置１０２のＩＯＰＳまたは／およびスループットを算出する。具体的な算出例は、図１１で説明する。
【００５６】
（ブロックごとの基礎性能情報の測定）
以下、図７、図８を用いて、ストレージシステム２００の構成内容を変更した際にＣＭ２１１が行う、ブロックごとの基礎性能情報の測定の一例について説明する。
【００５７】
図７は、ブロック分割の例を示す説明図である。図７では、本実施の形態におけるストレージ装置１０２の記憶領域の分割例を示す。ＣＭ２１１は、ストレージ装置１０２の記憶領域を、各ブロックに含まれるＬＢＡが連続するように複数のブロックに分割する。ＬＢＡが連続するように分割することで、各ブロックは、同心円状の領域となる。そして、ＣＭ２１１は、複数のブロックの各ブロックにテストシーケンスを実施することにより、ブロックごとの基礎性能情報を得る。さらに、ＣＭ２１１は、最内のブロックと最外のブロックとを交互にアクセスする場合のアクセス性能を測定し、離れたデータに対するアクセスの遅延を基礎性能として採取する。
【００５８】
図７の例では、ＣＭ２１１は、ストレージ装置１０２の記憶領域を、ブロック［０］〜［Ｎ−１］に分割する。Ｎは、１以上の整数であればどのような値でもよい。例えば、ＣＭ２１１の設計者が、Ｎの初期値を１０に設定し、ＣＭ２１１の管理者が、５〜１５程度の範囲に設定することが好ましい。Ｎを大きい値に設定する場合、ＣＭ２１１は、より細かいアクセス性能を得ることができるが、保持するブロックごとの基礎性能情報のデータ量が増大する。一方、Ｎを小さい値に設定する場合、ＣＭ２１１は、保持するブロックごとの基礎性能情報のデータ量を少なくすることができるが、アクセス性能が荒いものとなる。次に、図８を用いて、ブロックごとの基礎性能情報の一例を示す。
【００５９】
図８は、ブロックごとの基礎性能情報６１１の一例を示す説明図である。ＣＭ２１１は、テストシーケンスとして、各ブロックに対して順次テスト用のコマンド群を発行し、アクセス性能を測定する。テスト用のコマンド群は、具体的には、コマンド種別の割合が異なる３種類のコマンド群と、アクセスパターンの割合が異なる３種類のコマンド群とを組み合わせた９種類のコマンド群がある。
【００６０】
コマンド種別の割合が異なる３種類のコマンド群とは、リードアクセスを１００［％］発行するものと、リードアクセスとライトアクセスとを５０［％］ずつ発行するものと、ライトアクセスを１００［％］発行するものとである。また、アクセスパターンの割合が異なる３種類のコマンド群とは、ランダムアクセスを１００［％］発行するものと、ランダムアクセスとシーケンシャルアクセスとを５０［％］ずつ発行するものと、シーケンシャルアクセスを１００［％］発行するものとである。
【００６１】
例えば、図８では、ブロック［０］の基礎性能情報６１１＿０を示す。例えば、ＣＭ２１１は、リードアクセスであって、ランダムアクセスであるコマンドを１００［％］発行するコマンド群をブロック［０］に発行し、ｘｘ＿０＿１［ＩＯＰＳ］と、ｙｙ＿０＿１［ＭＢ／ｓ］を得る。以下の記載では、基礎性能情報６１１の各フィールドの値を、基礎性能情報６１１の性能値と呼称する場合がある。
【００６２】
各ブロックの基礎性能情報６１１を得た後、ＣＭ２１１は、ブロック［０］とブロック［Ｎ−１］とを交互にリードアクセスするコマンドを発行し、１コマンド当たりにかかる時間を測定する。測定した時間はブロック［０］とブロック［Ｎ−１］の平均コマンド時間とシークロスの時間との和となるため、ＣＭ２１１は、ブロック［０］とブロック［Ｎ−１］の平均コマンド時間を引くことで、最大のシークロス時間を算出する。
【００６３】
（アクセス傾向の特定）
次に、アクセス傾向の特定の一例について説明する。ＣＭ２１１は、単位時間内のストレージ装置１０２に対するアクセスを監視し、次に示す３つの情報をアクセスの特性として取得する。１つ目の情報は、アクセス位置の傾向を示す情報である。ＣＭ２１１は、ブロックごとのアクセス回数を１つ目の情報として取得する。２つ目の情報は、コマンド種別の比率である。ＣＭ２１１は、ストレージ装置１０２へのリードアクセスの割合とライトアクセスの割合とを２つ目の情報として取得する。３つ目の情報は、アクセスパターンの比率である。ＣＭ２１１は、ストレージ装置１０２へのランダムアクセスの割合とシーケンシャルアクセスの割合とを３つ目の情報として取得する。
【００６４】
具体的には、ＣＭ２１１は、ストレージ装置１０２へのＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）コマンド生成の延長でアクセスするブロックと、コマンド種別と、アクセスパターンとを特定し、それぞれカウントアップする。
【００６５】
（ブロックごとの基礎性能情報と、特定したアクセス傾向との組み合わせ）
以下、図９〜図１１を用いて、ブロックごとの基礎性能情報と、特定したアクセス傾向との組み合わせの例について説明する。ＣＭ２１１は、ＦｒｏｎｔＥｎｄ制御部３０１からのストレージ装置１０２のビジー率の取得要求があった際に、取得対象のストレージ装置１０２の各ブロックの基礎性能情報とアクセス傾向とを組み合わせて、取得対象のストレージ装置１０２の性能値を算出する。そして、ＣＭ２１１は、算出した性能値と実際の流量との比率をビジー率として算出し、ＦｒｏｎｔＥｎｄ制御部３０１に応答する。これにより、ＣＭ２１１は、ストレージ装置１０２のより正確なビジー率をＦｒｏｎｔＥｎｄ制御部３０１に伝えることができる。
【００６６】
（アクセス位置に基づく基礎性能情報の統合）
まず、ＣＭ２１１は、取得対象のストレージ装置１０２に対して実際にアクセスがあった位置と回数とに基づいて、各ブロックの基礎性能情報を統合する。ＣＭ２１１は、下記（１）式を実行することにより、各ブロックのアクセス率を算出する。
【００６７】
ブロック［ｘ］のアクセス率＝ブロック［ｘ］へのアクセス回数／取得対象のストレージ装置１０２のアクセス回数  …（１）
【００６８】
そして、ＣＭ２１１は、下記（２）式により、取得対象のストレージ装置１０２の性能値を算出し、算出した性能値をフィールド値とした取得対象のストレージ装置１０２の性能情報を作成する。
【００６９】
取得対象のストレージ装置１０２の性能値＝Σブロック［ｘ］の基礎性能情報６１１の性能値×ブロック［ｘ］のアクセス率  …（２）
【００７０】
次に、ＣＭ２１１は、積算した性能値に、取得対象のストレージ装置１０２のシーク時間を追加する。取得対象のストレージ装置１０２のシーク時間を求める際に、まず、ＣＭ２１１は、取得対象のストレージ装置１０２の見積りシーク距離を特定する。
【００７１】
例えば、ＣＭ２１１は、ＣＭ２１１の管理者の指定により、最も多くアクセスされたブロックのアクセス回数の一定の割合を閾値としておく。そして、ＣＭ２１１は、閾値以上のアクセスがあったブロックをアクセスの多いブロックとみなし、アクセスの多いブロックのうち最も遠いブロック間の距離を、見積りシーク距離として特定する。シークの距離とシーク時間は比例するため、ＣＭ２１１は、見積りシーク距離と最大シーク距離との比率を最大シーク時間にかけることで、取得対象のストレージ装置１０２の見積りシーク時間を特定する。
【００７２】
見積りシーク時間を特定した後、ＣＭ２１１は、（２）式で算出した取得対象のストレージ装置１０２の性能値に対して、特定した見積りシーク時間を考慮した値を算出する。具体的には、ＣＭ２１１は、ＩＯＰＳについて、下記（３）式を実行して、見積りシーク時間ａを考慮したＩＯＰＳ（ｎｅｗ）を算出する。
【００７３】
ＩＯＰＳ（ｎｅｗ）＝ＩＯＰＳ（ｏｌｄ）／（１＋（ａ×ＩＯＰＳ（ｏｌｄ））  …（３）
【００７４】
ここで、ＩＯＰＳ（ｏｌｄ）は、（２）式で算出したＩＯＰＳである。さらに、ＣＭ２１１は、スループットについて、スループットの減少の比率がＩＯＰＳの減少の比率とほぼ等しいとし、下記（４）式を実行して、見積りシーク時間ａを考慮したスループット（ｎｅｗ）を算出する。
【００７５】
スループット（ｎｅｗ）＝スループット（ｏｌｄ）×ＩＯＰＳ（ｏｌｄ）／ＩＯＰＳ（ｎｅｗ）  …（４）
【００７６】
ここで、取得対象のストレージ装置１０２が、ＳＳＤのようにヘッダが無い場合、シーク距離の変化による影響はほぼないものとなる。従って、ブロック内でのアクセス時間と、ブロック［０］とブロック［Ｎ−１］との間のアクセス時間との差は、ほとんど０となり、見積りシーク時間ａも０に近い値となる。以上により、取得対象のストレージ装置１０２にヘッダが無い場合であっても、（３）式や（４）式において、性能値に与える影響は非常に軽微なため、誤差は無視できるものとみなせる。
【００７７】
また、距離に影響を受けず一定の遅延が発生することを正確に検知する場合、ＣＭ２１１は、シークの距離を特定した後、特定のシークの距離のブロック間を交互にアクセスする時間Ｙを測定する処理を追加してもよい。そして、ＣＭ２１１は、測定した時間Ｙと、最大のシーク距離にアクセスする時間Ｘとを、下記（５）式を用いて比較してもよい。
【００７８】
（Ｘ−Ｙ）／Ｘ＜０．０５  …（５）
【００７９】
（５）式が成立する場合、ＣＭ２１１は、距離依存が無いと判定し、常にＸを利用し、距離をかけないようにすることで対処可能となる。
【００８０】
次に、図９〜図１１を用いて、基礎性能情報６１１の性能値から、見積りシーク時間を考慮した性能情報テーブルの作成までの具体例を説明する。
【００８１】
図９は、アクセス回数と見積りシーク距離の特定の一例を示す説明図である。図９では、Ｎ＝８とし、あるストレージ装置１０２の記憶領域をブロック［０］〜［７］に分割したとする。そして、ＣＭ２１１がアクセス性能を測定したところ、ＩＯＰＳについて、ブロック［０］から順に、２００、１９８、１９５、１９２、１８８、１８４、１８０、１７６であったとする。なお、アクセスパターンについては、ランダムアクセスを１００［％］発行するもの、ランダムアクセスとシーケンシャルアクセスとを５０［％］ずつ発行するもの、シーケンシャルアクセスを１００［％］発行するもののうちのいずれかであるとする。また、最大シーク距離となるブロック［０］からブロック［７］までの最大シーク時間が、０．１［ｍｓｅｃ］であったとする。
【００８２】
そして、図９に示す通り、あるストレージ装置１０２に対するアクセス回数が５０であり、各ブロックに対する単位時間当たりのアクセス回数が、ブロック［０］から順に、３、５、７、６、９、１０、７、３であったとする。
【００８３】
この場合、最もアクセスされたブロックは、ブロック［５］となる。そして、ＣＭ２１１は、閾値をブロック［５］のアクセス回数の７割である７として、アクセス回数が７以上であるブロックである、ブロック［２］、［４］〜［６］が、アクセスが多いブロックであるとみなす。そして、ＣＭ２１１は、見積りシーク距離を、最も距離が離れたブロック［２］からブロック［６］までの距離４を、見積りシーク距離と特定する。そして、ＣＭ２１１は、見積りシーク時間を、４／７×０．１＝０．０５７［ｍｓｅｃ］と算出する。次に、あるストレージ装置１０２に対してビジー率の取得要求があった後の例を、図１０を用いて説明する。
【００８４】
図１０は、アクセス率に基づいたＩＯＰＳの一例を示す説明図である。あるストレージ装置１０２に対してビジー率の取得要求があった場合、ＣＭ２１１は、（１）式を用いて、各ブロックのアクセス率を算出する。図１０の表１００１に示すように、ＣＭ２１１は、ＩＯＰＳについて、各ブロックのアクセス率を、ブロック［０］から順に、６［％］、１０［％］、１４［％］、１２［％］、１８［％］、２０［％］、１４［％］、６［％］と算出する。そして、ＣＭ２１１は、（２）式を用いて、あるストレージ装置１０２の性能値を算出する。具体的には、ＣＭ２１１は、表１００１に示すように、２００×０．０６＋…１７６×０．０６＝１８８．５４と算出する。
【００８５】
さらに、ＣＭ２１１は、１８８．５４［ＩＯＰＳ］に対し、（３）式を実行し、見積りシーク時間ａを考慮したスループット（ｎｅｗ）を算出する。
【００８６】
ＩＯＰＳ（ｎｅｗ）＝１８８．５４／（１＋０．００００５７×１８８．５４）＝１８６．５［ＩＯＰＳ］
【００８７】
図１１は、見積りシーク時間を考慮した性能情報１１０１＿ｓの一例を示す説明図である。図１１では、ＩＯＰＳについて（１）式〜（３）式、スループットについて（１）式〜（４）式を行った結果をまとめた性能情報１１０１＿ｓを示す。
【００８８】
例えば、性能情報１１０１＿ｓは、リードアクセスであり、ランダムアクセスであるコマンドを１００［％］発行した際のＩＯＰＳが、ｘｘ＿ｓ＿１［ＩＯＰＳ］であり、スループットがｙｙ＿ｓ＿１［ＭＢ／ｓ］であることを示す。
【００８９】
（アクセスパターン、コマンド種別の考慮）
ここで、図３で説明したように、ＦｒｏｎｔＥｎｄ制御部３０１が取得したいビジー率とは、ストレージ装置１０２単体としての負荷状態を示す値である。そこで、ＣＭ２１１は、ビジー率の取得対象のストレージ装置１０２のアクセスパターン、コマンド種別を考慮して、詳細な性能値を算出し、算出した性能値と取得対象のストレージ装置１０２への実際の流量との比率をビジー率として算出する。これにより、ＣＭ２１１は、取得対象のストレージ装置１０２単体の負荷状態を割り出すことができる。
【００９０】
具体的には、例えば、ＣＭ２１１は、下記（６）式を用いて、性能情報１１０１＿ｓを参照して、特定したアクセス傾向として、コマンド種別を考慮した性能値ｖｃを算出する。
【００９１】
ｖｃ＝（（ｃｒａ−ｓｃｒａ２）×ｖ１＋（ｓｃｒａ１−ｃｒａ）×ｖ２）／（ｓｃｒａ１−ｓｃｒａ２）  …（６）
【００９２】
ここで、ｃｒａは、特定したコマンド種別におけるリードアクセスの割合である。また、ｓｃｒａ１は、性能情報１１０１＿ｓに登録された３種類のコマンド種別のいずれかのコマンド種別におけるリードアクセスの割合である。同様に、ｓｃｒａ２は、性能情報１１０１＿ｓの３種類のコマンド種別のいずれかのコマンド種別であり、ｓｃｒａ１のコマンド種別とは異なるコマンド種別におけるリードアクセスの割合である。そして、０≦ｃｒａ≦１、０≦ｓｃｒａ１≦１、０≦ｓｃｒａ２≦１である。ここで、ｓｃｒａ１、ｓｃｒａ２は、３種類のコマンド種別のうちいずれであってもよいが、特定したリードアクセスの割合に近いコマンド種別を選ぶことが好ましい。
【００９３】
また、ｖ１は、性能情報１１０１＿ｓに登録されており、コマンド種別としてリードアクセスの割合がｓｃｒａ１、ライトアクセスの割合が１−ｓｃｒａ１となる際の性能値である。同様に、ｖ２は、性能情報１１０１＿ｓに登録されており、コマンド種別としてリードアクセスの割合がｓｃｒａ２、ライトアクセスの割合が１−ｓｃｒａ２となる際の性能値である。ここで、ｓｃｒａ１となる性能値と、ｓｃｒａ２となる性能値とは、アクセスパターンに応じた３つ分存在するが、ＣＭ２１１は、３つのうちのいずれか２つについて（６）式を実行する。従って、ＣＭ２１１は、２回（６）式を行うことになる。ここで、３種類のアクセスパターンのうちのいずれか２つは、どれを選んでもよいが、特定したランダムアクセスの割合に近いアクセスパターンを選ぶことが好ましい。
【００９４】
次に、ＣＭ２１１は、下記（７）式を用いて、アクセスパターン、コマンド種別を考慮した性能値ｖｃａを算出する。
【００９５】
ｖｃａ＝（（ａｒａ−ｓａｒａ２）×ｖｃ１＋（ｓａｒａ１−ａｒａ）×ｖｃ２）／（ｓａｒａ１−ｓａｒａ２）  …（７）
【００９６】
ここで、ａｒａは、特定したアクセスパターンにおけるランダムアクセスの割合である。また、ｓａｒａ１は、（６）式を実行した際に３種類のアクセスパターンから選ばれた１つ目のアクセスパターンにおけるランダムアクセスの割合である。同様に、また、ｓａｒａ２は、（６）式を実行した際に３種類のアクセスパターンから選ばれた２つ目のアクセスパターンにおけるランダムアクセスの割合である。そして、０≦ａｒａ≦１、０≦ｓａｒａ１≦１、０≦ｓａｒａ２≦１である。
【００９７】
また、ｖｃ１は、（６）式を実行した際に３種類のアクセスパターンから選ばれた１つ目に対するコマンド種別を考慮した性能値である。同様に、ｖｃ２は、（６）式を実行した際に３種類のアクセスパターンから選ばれた２つ目に対するコマンド種別を考慮した性能値である。そして、ＣＭ２１１は、下記（８）式を実行して、アクセスパターン、コマンド種別を考慮したビジー率を算出する。
【００９８】
アクセスパターン、コマンド種別を考慮したビジー率＝（（スループット流量／アクセスパターン、コマンド種別を考慮したスループット性能値）＋（ＩＯＰＳ流量／アクセスパターン、コマンド種別を考慮したＩＯＰＳ性能値））／２  …（８）
【００９９】
ここで、スループット流量やＩＯＰＳ流量は、特定のボリュームの流量ではなく、ビジー率の取得対象となるストレージ装置１０２に対する流量である。なお、図１１の説明では、ＣＭ２１１は、コマンド種別を考慮した性能値を算出した後、アクセスパターン、コマンド種別を考慮した性能値を算出したがこれに限らない。例えば、ＣＭ２１１は、アクセスパターンを考慮した性能値を算出した後、アクセスパターン、コマンド種別を考慮した性能値を算出してもよい。以下、図１２を用いて、アクセスパターン、コマンド種別を考慮した性能値を算出する例を示す。
【０１００】
図１２は、アクセスパターンおよびコマンド種別の割合を用いたＩＯＰＳの見積り例を示す説明図である。図１２の例では、図１２で示す性能情報１２０１＿ｓで示すように、特定されたアクセス種別が、リードアクセスの割合が８０［％］であり、ライトアクセスの割合が２０［％］であったとする。さらに、特定したアクセスパターンが、ランダムアクセスの割合が２５［％］であり、シーケンシャルアクセスの割合が７５［％］であったとする。
【０１０１】
ＣＭ２１１は、（６）式を用いて、アクセスパターンがランダムアクセスとシーケンシャルアクセスとの割合がそれぞれ５０［％］となる性能値と、シーケンシャルアクセスの割合が１００［％］となる性能値とを算出する。
【０１０２】
ｖｃ＿５０＝（（０．８−０．５）×７０＋（１−０．８）×６０）／（１−０．５）＝（０．３×７０＋０．２×６０）／０．５＝（２１＋１２）／０．５＝６６［ＩＯＰＳ］
ｖｃ＿０＝（（０．８−０．５）×４０＋（１−０．８）×３０）／（１−０．５）＝（０．３×４０＋０．２×３０）／０．５＝（１２＋６）／０．５＝３６［ＩＯＰＳ］
【０１０３】
ここで、ｖｃ＿５０は、ランダムアクセスとシーケンシャルアクセスとの割合がそれぞれ５０［％］となるアクセスパターンの性能値であり、ｖｃ＿０は、シーケンシャルアクセスの割合が１００［％］となるアクセスパターンの性能値である。
【０１０４】
次に、ＣＭ２１１は、（７）式を用いて、ランダムアクセスの割合が２５［％］となり、シーケンシャルアクセスの割合が７５［％］となる性能値ｖｃａを算出する。
【０１０５】
ｖｃａ＝（（０．２５−０）×６６＋（０．５−０．２５）×３６）／（０．５−０）＝（０．２５×６６＋０．２５×３６）／０．５＝（１６．５＋９）／０．５＝５１［ＩＯＰＳ］
【０１０６】
図１３は、構成変更時処理手順の一例を示すフローチャートである。構成変更時処理は、ストレージシステム２００の構成変更があった際にＣＭ２１１が行う処理である。ここで、ステップＳ１３０１における測定対象ストレージ装置１０２とは、図３で説明した性能情報を測定する対象となるストレージ装置１０２のことである。
【０１０７】
ＣＭ２１１は、測定対象ストレージ装置１０２の番号を取得する（ステップＳ１３０１）。次に、ＣＭ２１１は、先頭の測定対象ストレージ装置１０２を選択する（ステップＳ１３０２）。そして、ＣＭ２１１は、選択した測定対象ストレージ装置１０２の記憶領域を、Ｎ個のブロックに分割する（ステップＳ１３０３）。次に、ＣＭ２１１は、ｉに０を代入する（ステップＳ１３０４）。
【０１０８】
そして、ＣＭ２１１は、ブロック［ｉ］に対して、アクセス種別と、アクセスパターンとの組み合わせにおける性能値を測定する（ステップＳ１３０５）。次に、ＣＭ２１１は、ｉがＮ−１であるか否かを判断する（ステップＳ１３０６）。ｉがＮ−１でない場合（ステップＳ１３０６：Ｎｏ）、ＣＭ２１１は、ｉをインクリメントする（ステップＳ１３０７）。そして、ＣＭ２１１は、ステップＳ１３０５の処理に移行する。
【０１０９】
一方、ｉがＮ−１である場合（ステップＳ１３０６：Ｙｅｓ）、ＣＭ２１１は、ブロック［０］とブロック［Ｎ−１］とを交互にリードアクセスするコマンドを発行し、コマンドの応答時間を測定する（ステップＳ１３０８）。次に、ＣＭ２１１は、ブロック［０］とブロック［Ｎ−１］とのリードアクセスの性能値の平均と、ブロック［０］とブロック［Ｎ−１］とを交互にリードアクセスした際のコマンドの応答時間の差を、最大シーク時間として算出する（ステップＳ１３０９）。
【０１１０】
そして、ＣＭ２１１は、測定対象ストレージ装置を全て測定したか否かを判断する（ステップＳ１３１０）。測定対象ストレージ装置を全て測定していない場合（ステップＳ１３１０：Ｎｏ）、ＣＭ２１１は、次の測定対象ストレージ装置１０２を選択する（ステップＳ１３１１）。そして、ＣＭ２１１は、ステップＳ１３０３の処理に移行する。
【０１１１】
一方、測定対象ストレージ装置を全て測定した場合（ステップＳ１３１０：Ｙｅｓ）、ＣＭ２１１は、構成変更時処理を終了する。構成変更時処理を実行することにより、ＣＭ２１１は、基礎性能情報６１１がないストレージ装置１０２の基礎性能情報６１１を採取することができる。
【０１１２】
図１４は、アクセス発生時処理手順の一例を示すフローチャートである。アクセス発生時処理は、アクセス発生時に行う処理である。ここで、アクセス発生時処理の対象となるストレージ装置１０２は、ストレージシステム２００に含まれる全てのストレージ装置１０２である。
【０１１３】
ＣＭ２１１は、アクセス先のＬＢＡを用いて、アクセスするＬＢＡが含まれるブロック［ｘ］を特定する（ステップＳ１４０１）。次に、ＣＭ２１１は、ブロック［ｘ］へのアクセス回数をインクリメントする（ステップＳ１４０２）。
【０１１４】
そして、ＣＭ２１１は、アクセス種別がリードアクセスかライトアクセスかのいずれであるかを判断する（ステップＳ１４０３）。アクセス種別がリードアクセスである場合（ステップＳ１４０３：リードアクセス）、ＣＭ２１１は、リードアクセスのカウンタをインクリメントする（ステップＳ１４０４）。また、アクセス種別がライトアクセスである場合（ステップＳ１４０３：ライトアクセス）、ＣＭ２１１は、ライトアクセスのカウンタをインクリメントする（ステップＳ１４０５）。
【０１１５】
ステップＳ１４０４、ステップＳ１４０５のうちのいずれかの処理終了後、ＣＭ２１１は、アクセスパターンがランダムアクセスかシーケンシャルアクセスかのいずれであるかを判断する（ステップＳ１４０６）。アクセスパターンがランダムアクセスである場合（ステップＳ１４０６：ランダムアクセス）、ＣＭ２１１は、ランダムアクセスのカウンタをインクリメントする（ステップＳ１４０７）。また、アクセスパターンがシーケンシャルアクセスである場合（ステップＳ１４０６：シーケンシャルアクセス）、ＣＭ２１１は、シーケンシャルアクセスのカウンタをインクリメントする（ステップＳ１４０８）。
【０１１６】
ステップＳ１４０７、ステップＳ１４０８のうちのいずれかの処理終了後、ＣＭ２１１は、アクセス発生時処理を終了する。アクセス発生時処理を実行することにより、ＣＭ２１１は、アクセス傾向を特定することができる。
【０１１７】
図１５は、ビジー率取得要求時処理手順の一例を示すフローチャート（その１）である。また、図１６は、ビジー率取得要求時処理手順の一例を示すフローチャート（その２）である。ビジー率取得要求時処理は、ＦｒｏｎｔＥｎｄ制御部３０１からビジー率の取得要求を受けた際に行う処理である。
【０１１８】
ＣＭ２１１は、ブロックごとのアクセス回数を合計して、測定対象ディスクへの合計コマンド数を算出する（ステップＳ１５０１）。次に、ＣＭ２１１は、ブロックごとに、ブロックへのアクセス回数と合計アクセス回数とのアクセス率を算出する（ステップＳ１５０２）。ステップＳ１５０２の処理は、（１）式に相当する。そして、ＣＭ２１１は、各ブロックの基礎性能情報の各性能値に、各ブロックのアクセス率を乗算する（ステップＳ１５０３）。次に、ＣＭ２１１は、アクセス率を乗算した各ブロックの基礎性能情報の各性能値を積算する（ステップＳ１５０４）。ステップＳ１５０３とステップＳ１５０４との処理が、（２）式に相当する。
【０１１９】
そして、ＣＭ２１１は、各ブロックのアクセス回数に基づいて、見積りシーク距離を特定する（ステップＳ１５０５）。次に、ＣＭ２１１は、見積りシーク距離と最大シーク時間とから、見積りシーク時間を特定する（ステップＳ１５０６）。そして、ＣＭ２１１は、積算した性能値と見積りシーク時間から、見積りシーク時間を考慮した性能情報を作成する（ステップＳ１５０７）。ステップＳ１５０７の処理は、（３）式と（４）式とに相当する。
【０１２０】
次に、ＣＭ２１１は、リードアクセス数とライトアクセス数とから、リードアクセスの割合を算出する（ステップＳ１６０１）。そして、ＣＭ２１１は、２つのアクセスパターンにおける、算出したリードアクセスの割合における性能値を算出する（ステップＳ１６０２）。ステップＳ１６０２の処理は、（６）式に相当する。次に、ＣＭ２１１は、ランダムアクセス数とシーケンシャルアクセス数とから、ランダムアクセスの割合を算出する（ステップＳ１６０３）。そして、ＣＭ２１１は、ランダムアクセスの割合から、アクセスパターン、コマンド種別を考慮した性能値を算出する（ステップＳ１６０４）。ステップＳ１６０４の処理は、（７）式に相当する。
【０１２１】
次に、ＣＭ２１１は、算出した性能値と、実際の流量の比率を、ビジー率として算出する（ステップＳ１６０５）。ステップＳ１６０５の処理は、（８）式に相当する。そして、ＣＭ２１１は、ビジー率の取得要求元に、算出したビジー率を通知する（ステップＳ１６０６）。ステップＳ１６０６の処理終了後、ＣＭ２１１は、ビジー率取得要求時処理を終了する。ビジー率取得要求時処理を実行することにより、ＣＭ２１１は、ビジー率の取得要求ストレージ装置１０２の使用状況に応じたビジー率を返却することができる。
【０１２２】
図１７は、性能値の利用例を示す説明図である。図１７では、性能情報を利用する場合において、本実施の形態を用いずに得た性能値を用いた際に起こる現象と、本実施の形態による方法により得た性能値を用いた際に起こる現象とについて説明する。
【０１２３】
図１７の（ａ）と（ｂ）とでは、ストレージ装置１０２固有の性能差がある場合について説明する。まずは、図１７の（ａ）と（ｂ）とで共通する設定について説明する。図１７の（ａ）と（ｂ）とにおけるビジー率の取得対象のストレージ装置１０２のカタログスペックは３００［ＩＯＰＳ］であるが、固有値により、取得対象のストレージ装置１０２の実際の性能値が２９０［ＩＯＰＳ］であるとする。そして、取得対象のストレージ装置１０２の記憶領域全体に均等して２３５［ＩＯＰＳ］の流量があるものとする。さらに、閾値として８０［％］未満となるビジー率を受け取ると、ビジー率を受け取った処理部は、流量の上限を引き上げてよいものと判断するものとする。
【０１２４】
図１７の（ａ）では、カタログスペックを、そのまま性能値として用いた例である。この場合、カタログスペックの３００［ＩＯＰＳ］に基づいて、ビジー率が２３５／３００＝７８．３［％］となり、ビジー率を受け取ったＦｒｏｎｔＥｎｄ制御部３０１は、流量の上限を引き上げる。しかしながら、実際のビジー率は、２３５／２９０＝８１．０［％］であり、ビジー率が閾値以上となっており、本来ならば、他のストレージ装置１０２の流量を引き上げるべきであったのに、無駄に流量を引き上げることになる。
【０１２５】
これに対し、図１７の（ｂ）では、取得対象のストレージ装置１０２の記憶領域を５つのブロックに分割したものとする。そして、各ブロックの基礎性能情報のＩＯＰＳが、ブロック［０］から順に、３２０、３０５、２９０、２７５、２６０であったとする。そして、本実施の形態によるアクセス位置の特定により、各ブロックに均等にアクセスがあることが特定されて、アクセス傾向を考慮したＩＯＰＳが２９０［ＩＯＰＳ］となったとする。この場合、ビジー率は、２３５／２９０＝８１．０［％］であり、ビジー率が閾値以上となる。従って、ビジー率を受け取ったＦｒｏｎｔＥｎｄ制御部３０１は、流量の上限の引き上げを抑止し、ビジー率が閾値未満となる他のストレージ装置１０２の流量を引き上げることができる。
【０１２６】
図１７の（ｃ）と（ｄ）とでは、アクセス位置に偏りがある場合について説明する。まずは、図１７の（ｃ）と（ｄ）とで共通する設定について説明する。図１７の（ｃ）と（ｄ）とにおけるビジー率の取得対象のストレージ装置１０２のカタログスペックは３００［ＩＯＰＳ］であり、実際の性能値も３００［ＩＯＰＳ］であるとする。ただし、取得対象のストレージ装置１０２の各ブロックの間では、性能値が異なるものとする。そして、取得対象のストレージ装置１０２のある一か所の記憶領域に対して、２４５［ＩＯＰＳ］の流量があるものとする。そして、実際には、取得対象のストレージ装置１０２の利用者が意図的に、取得対象のストレージ装置１０２のアクセス性能がよい領域に対して、２４５［ＩＯＰＳ］の流量を発生させているものとする。さらに、閾値として８０［％］未満となるビジー率を受け取ると、ビジー率を受け取った処理部は、流量の上限を引き上げてよいものと判断するものとする。
【０１２７】
図１７の（ｃ）では、カタログスペックを、そのまま性能値として用いた例である。この場合、カタログスペックの３００［ＩＯＰＳ］に基づいて、ビジー率が２４５／３００＝８１．７［％］となり、ビジー率を受け取ったＦｒｏｎｔＥｎｄ制御部３０１は、流量の上限の引き上げを抑止する。しかしながら、アクセスがあるのは、アクセス性能がよい領域であるから、本来ならば流量の上限の引き上げが可能であったにも関わらず、上限の引き上げの機会を失うことになる。
【０１２８】
これに対し、図１７の（ｄ）では、取得対象のストレージ装置１０２の記憶領域を５つのブロックに分割したものとする。そして、各ブロックの基礎性能情報のＩＯＰＳが、ブロック［０］から順に、３３０、３１５、３００、２８５、２７０であったとする。そして、本実施の形態によるアクセス位置の特定により、ブロック［０］〜［４］のうちのブロック［０］だけにアクセスがあったことが特定されたとする。この場合、ビジー率は、２４５／３３０＝７４．２［％］であり、ビジー率が閾値未満となるため、ビジー率を受け取ったＦｒｏｎｔＥｎｄ制御部３０１は、流量の上限を引き上げることができる。
【０１２９】
以上説明したように、ＣＭ２１１によれば、ストレージ装置１０２の各ブロックのアクセス性能と各ブロックのアクセス率とから、ストレージ装置１０２のアクセス性能を算出する。これにより、ＣＭ２１１は、高性能な外周領域に頻繁にアクセスする使い方がされても、使用状況に応じたアクセス性能を正確に推定することができる。高性能な外周領域に頻繁にアクセスする使い方としては、例えば、高性能な外周領域にボリュームを割り当て、低性能な内周領域にはボリュームを割り当てずにアクセスしないという使い方がある。または、例えば、高性能な外周領域には頻繁にアクセスされるファイルを格納しておき、低性能な内周領域にはめったにアクセスされないファイルを格納するという使い方がある。
【０１３０】
また、ＣＭ２１１によれば、ストレージ装置１０２の各ブロックのアクセス性能と各ブロックのアクセス率とストレージ装置１０２のコマンド種別の割合とから、ストレージ装置１０２のアクセス性能を算出してもよい。ここで、ストレージシステム２００は、バックアップを行うといったライトアクセスを頻繁に行う使い方や、リードアクセスを頻繁に行う使い方をされる可能性がある。このとき、ＣＭ２１１は、ストレージシステム２００がコマンド種別の割合が異なる使い方をされても、使用状況に応じたアクセス性能を正確に推定することができる。
【０１３１】
また、ＣＭ２１１によれば、ストレージ装置１０２の各ブロックのアクセス性能と各ブロックのアクセス率とストレージ装置１０２のアクセスパターンの割合とから、ストレージ装置１０２のアクセス性能を算出してもよい。ここで、ストレージシステム２００は、業務用のソフトウェアのようなランダムアクセスを頻繁に行う使い方や、動画を扱うソフトウェアのようにシーケンシャルアクセスを頻繁に行う使い方といった、アクセスパターンの割合が異なる使い方をされる可能性がある。このとき、ＣＭ２１１は、ストレージシステム２００がアクセスパターンの割合が異なる使い方をされても、使用状況に応じたアクセス性能を正確に推定することができる。
【０１３２】
また、ＣＭ２１１によれば、ストレージ装置１０２のＩＯＰＳやスループットを算出してもよい。これにより、ＣＭ２１１は、ＨＤＤなどの記憶装置の性能指標でよく使用される値を出力することができる。
【０１３３】
また、ＣＭ２１１によれば、ストレージ装置１０２の各ブロックのアクセス性能と各ブロックのアクセス率と見積りシーク時間とから、ストレージ装置１０２のアクセス性能を算出してもよい。ここで、ストレージシステム２００は、扱うデータが分散しておりシークがたくさん発生する使い方や、扱うデータが局所的でありシークがほとんど発生しない使い方をされる可能性がある。このとき、ＣＭ２１１は、ストレージシステム２００がシークにかかる時間が大きく異なる使い方をされても、使用状況に応じたアクセス性能を正確に推定することができる。
【０１３４】
なお、本実施の形態で説明した制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【０１３５】
１０１  ストレージ制御装置
１０２  ストレージ装置
２００  ストレージシステム
２１１  ＣＭ
３０１  ＦｒｏｎｔＥｎｄ制御部
３０２  ＢａｃｋＥｎｄ制御部
６０１  測定部
６０２  アクセス傾向算出部
６０３  シーク距離特定部
６０４  シーク時間特定部
６０５  アクセス性能算出部
６１０  記憶部
６１１  基礎性能情報
【図１】
2016157271.tif 000003
【図２】
2016157271.tif 000004
【図３】
2016157271.tif 000005
【図４】
2016157271.tif 000006
【図５】
2016157271.tif 000007
【図６】
2016157271.tif 000008
【図７】
2016157271.tif 000009
【図８】
2016157271.tif 000010
【図９】
2016157271.tif 000011
【図１０】
2016157271.tif 000012
【図１１】
2016157271.tif 000013
【図１２】
2016157271.tif 000014
【図１３】
2016157271.tif 000015
【図１４】
2016157271.tif 000016
【図１５】
2016157271.tif 000017
【図１６】
2016157271.tif 000018
【図１７】
2016157271.tif 000019