(57)【要約】【課題】ストレージシステムの稼動状態において省電力とパフォーマンスを両立する。【解決手段】ＩＯコマンドを送信する上位装置に接続されたストレージシステムが、複数の記憶デバイスを含み負荷となる複数の負荷デバイスと、前記複数の負荷デバイスに流れる電流値を測定する電流測定部と、前記測定された電流値を基に前記複数の負荷デバイスによって消費される消費電力値を各時点で算出する電力算出部と、前記上位装置からＩＯコマンドを受信し、前記複数の記憶デバイスのうち、そのＩＯコマンドに従う記憶デバイスにアクセスするコントローラ部とを備える。前記コントローラ部が、前記算出される消費電力値が所定の電力許容値以下となり且つ前記消費電力値と前記電力許容値との差分がなるべく小さくなる消費電力制御を実行する。【選択図】図３
2008003719.tif 000002
【特許請求の範囲】
【請求項１】
ＩＯコマンドを送信する上位装置に接続されたストレージシステムにおいて、
複数の記憶デバイスを含み負荷となる複数の負荷デバイスと、
前記複数の負荷デバイスに流れる電流値を測定する電流測定部と、
前記測定された電流値を基に前記複数の負荷デバイスによって消費される消費電力値を各時点で算出する電力算出部と、
前記上位装置からＩＯコマンドを受信し、前記複数の記憶デバイスのうち、そのＩＯコマンドに従う記憶デバイスにアクセスするコントローラ部と
を備え、
前記コントローラ部が、前記算出される消費電力値が所定の電力許容値以下となり且つ前記消費電力値と前記電力許容値との差分を縮める消費電力制御を実行する、
ストレージシステム。
【請求項２】
前記消費電力制御とは、前記消費電力値が抑制されるが負荷デバイスの稼動状況が劣化する消費電力抑制制御を実行したりその消費電力抑制制御を解除したりすることにより、消費電力抑制制御の実行数を調整することである、
請求項１記載のストレージシステム。
【請求項３】
少なくとも前記コントローラ部を備えた基本サブシステムと、
前記基本サブシステムに接続された増設サブシステムと
を備え、
前記電力許容値は、サブシステム単位で用意されており、
前記増設サブシステムが、二以上の記憶デバイスを含む二以上の負荷デバイスと、前記コントローラ部と通信を行う第二のコントローラ部と、前記二以上の負荷デバイスに流れる電流値を測定する第二の電流測定部とを備え、前記第二のコントローラ部が、前記第二の電流測定部で測定された電流値である第二の電流値を前記第二の電流測定部から取得し、
前記コントローラ部が、前記第二のコントローラ部から前記第二の電流値を取得し、前記第二の電流値を基に、前記第二のコントローラ部での消費電力値を算出し、算出された消費電力値とその消費電力値がどのサブシステムでの値かに応じて、サブシステム別に前記消費電力制御を実行する、
請求項１記載のストレージシステム。
【請求項４】
前記コントローラ部は、前記消費電力抑制制御として、前記受信したＩＯコマンドに従うＩＯ処理の開始を遅延するＩＯ処理制御を実行する、
請求項２記載のストレージシステム。
【請求項５】
前記複数の記憶デバイスの各々は、回転するディスクを記憶媒体として備えるディスクドライブであり、
前記コントローラ部は、前記ＩＯ処理制御では、ＩＯ処理の遅延対象の複数のＩＯコマンドのうち、シーケンシャルアクセスのＩＯコマンドをランダムアクセスのＩＯコマンドよりも優先的に処理する、
請求項４記載のストレージシステム。
【請求項６】
前記コントローラ部は、前記ＩＯ処理制御では、ＩＯ処理の遅延対象の複数のＩＯコマンドのうち、高稼働状況の記憶デバイスがアクセス先であるＩＯコマンドを低稼働状況の記憶デバイスがアクセス先であるＩＯコマンドよりも優先的に処理する、
請求項４記載のストレージシステム。
【請求項７】
キャッシュメモリを更に備え、
前記コントローラ部は、前記上位装置からのＩＯコマンドに従うデータを前記キャッシュメモリに書き、前記キャッシュメモリに書かれたデータを、そのＩＯコマンドに従うアクセス先となる記憶デバイスに書き出すように構成されており、
前記コントローラ部は、前記消費電力抑制制御として、前記キャッシュメモリから記憶デバイスに書き出す順序を制御するキャッシュ制御を実行する、
請求項２記載のストレージシステム。
【請求項８】
前記コントローラ部は、前記キャッシュ制御では、前記キャッシュメモリに存在する複数のデータのうち、高稼働状況の記憶デバイスが書き出し先であるデータを低稼働状況の記憶デバイスが書き出し先であるデータよりも優先的に書き出す、
請求項７記載のストレージシステム。
【請求項９】
前記コントローラ部は、前記消費電力抑制制御として、記憶デバイスの稼動状況を低稼働状況にする記憶デバイス制御を実行する、
請求項２記載のストレージシステム。
【請求項１０】
前記コントローラ部は、前記記憶デバイス制御では、前記複数の記憶デバイスの各々のアクセス頻度と最近のアクセスの有無とのうちの少なくとも一方に基づいて、低稼働状況にする記憶デバイスを決定する、
請求項９記載のストレージシステム。
【請求項１１】
前記複数の記憶デバイスに第一の記憶デバイスと第二の記憶デバイスとが含まれ、
前記コントローラ部が、前記消費電力制御として、前記第一の記憶デバイスを高稼働状況とし、前記第二の記憶デバイス内のデータを前記第一の記憶デバイスに移動させ、そのデータの移動元の第二の記憶デバイスを低稼働状況とする処理を実行する、
請求項１記載のストレージシステム。
【請求項１２】
前記第一の記憶デバイスが、前記コントローラ部を備えた基本サブシステムに備えられ、
前記第二の記憶デバイスが、前記基本サブシステムに接続された増設サブシステムに備えられる、
請求項１１記載のストレージシステム。
【請求項１３】
前記複数の記憶デバイスにより二以上の記憶デバイスグループが形成され、
各記憶デバイスグループは、二以上の所定個数の記憶デバイスで構成され、
前記コントローラ部は、前記記憶デバイスグループ単位で前記記憶デバイスの稼動状況を制御する、
請求項１記載のストレージシステム。
【請求項１４】
前記コントローラ部は、低稼働状況の記憶デバイスにアクセスする場合、その記憶デバイスを高稼働状況にすることにより増加すると予測される消費電力値が前記電力許容値以下か否かを判断し、前記予測される消費電力値が前記電力許容値以下であれば、その記憶デバイスを高稼働状況にした上でその記憶デバイスにアクセスする、
請求項１記載のストレージシステム。
【請求項１５】
前記電力算出部は、負荷デバイスの増設、減設及び閉塞のうちの少なくとも一つの変更時に、その変更後の電流値を取得して消費電力値を算出し、
前記コントローラ部は、前記変更後の算出された消費電力値を基に前記消費電力制御を実行する、
請求項１記載のストレージシステム。
【請求項１６】
前記複数の負荷デバイスに給電する電源ユニットを更に備え、
前記電流測定部が、前記電源ユニットに備えられている、
請求項１記載のストレージシステム。
【請求項１７】
前記複数の負荷デバイスには、第一と第二の負荷デバイスが含まれ、
前記ストレージシステムは、基本サブシステムとその基本サブシステムに接続された増設サブシステムとで構成され、
前記電力許容値は、サブシステム単位で用意されており、
前記基本サブシステムは、
前記コントローラ部と、
二以上の前記第一の負荷デバイスと、
前記二以上の第一の負荷デバイスに給電する第一の電源ユニットと
を備え、前記第一の電源ユニットが、前記二以上の第一の負荷デバイスに流れる電流を測定する第一の電流測定部を有し、
前記増設サブシステムが、
二以上の記憶デバイスを含む二以上の第二の負荷デバイスと、
前記コントローラ部と通信を行う第二のコントローラ部と、
前記二以上の第二の負荷デバイスに給電する第二の電源ユニットと
を備え、前記第二の電源ユニットが、前記二以上の第二の負荷デバイスに流れる電流値を測定する第二の電流測定部を有し、
前記第二のコントローラ部が、前記第二の電流測定部で測定された電流値である第二の電流値を前記第二の電流測定部から取得し、
前記コントローラ部が、前記第二のコントローラ部から前記第二の電流値を取得し、前記第二の電流値を基に、前記第二のコントローラ部での消費電力値を算出し、算出された消費電力値とその消費電力値がどのサブシステムでの値かに応じて、サブシステム別に前記消費電力制御を実行し、
前記消費電力制御とは、前記消費電力値が抑制されるが負荷デバイスの稼動状況が劣化する消費電力抑制制御を実行したりその消費電力抑制制御を解除したりすることにより、消費電力抑制制御の実行数を調整することである、
請求項１記載のストレージシステム。
【請求項１８】
請求項１のストレージシステムに接続された計算機であって、
記憶資源と、
前記電力許容値を前記ストレージシステムに設定する許容値設定部と、
前記算出された各時点の消費電力値を取得して前記記憶資源に記録する消費電力管理部と、
前記記録された消費電力値を表示する表示制御部と
を備える管理計算機。
【請求項１９】
各時間帯でのＩＯ処理数を取得し、時間帯とＩＯ処理数との関係を前記記憶資源に記録するＩＯ監視部を更に備え、
前記表示制御部が、各時間帯のＩＯ処理数と各時点の消費電力値との関連を表示する、
請求項１８記載の管理計算機。
【請求項２０】
前記表示制御部が、同一の表示領域上に、各時間帯のＩＯ処理数のグラフと各時点の消費電力値とのグラフとを表示する、
請求項１９記載の管理計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の記憶装置を備えたストレージシステムの電力消費の制御に関する。
【背景技術】
【０００２】
近年、情報化が進み、膨大なデータを管理することが要求される。それに伴ってストレージシステムの更なる大容量化が進んでいる。
【０００３】
ストレージシステムの大容量化の方法の一つとして、搭載する記憶装置の台数を増やす方法がある。記憶装置としては、例えば、ディスク装置（例えばハードディスクドライブ）がある。しかし、ディスクの回転には大きな電力が消費されるため、ディスク装置の台数の増加によって、ストレージシステム全体の消費電力が増大する。そうすると、ランニングコストがかかったり、場合によっては、大掛かりな設備投資が必要になり得たりする（例えば、ストレージシステムが搭載される建物内で配電盤を増やす等の必要があり得る）。
【０００４】
そこで、消費電力の節約のための工夫が必要となる。消費電力の節約のための技術として、例えば、特開２０００−２９３３１４号公報（以下、文献１）及び特開２０００−１４９３８３号公報（以下、文献２）が知られている。
【０００５】
文献１に開示の技術は、ストレージシステムにおいて、上位装置からアクセスが無くなり予め定めた時間経過後、ディスク装置の節電（電源オンオフや節電モードの選択）を制御する。また、上位装置からアクセスがあった場合、アクセス先のディスク装置の電源がオフになっていれば、そのディスク装置の電源を投入した後、アクセスを実行する。
【０００６】
文献２に開示の技術は、ストレージシステム内でマイクロプロセッサが、ディスク装置の各グループがスピンドル起動中に使用している電流容量を監視し、消費電流が大きくなったことを検出すると、ディスク装置に対してスピンドル起動を一旦キャンセルし、消費電流がしきい値以下となるよう制御する。
【０００７】
【特許文献１】特開２０００−２９３３１４号公報
【特許文献２】特開２０００−１４９３８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ストレージシステムは、起動して稼動状態となると、上位装置から、ＩＯコマンド（データのライトコマンド又はリードコマンド）を受け付け、受けたＩＯコマンドを処理することができる。ストレージシステムの稼動状態では、消費電力の節約だけでなく、パフォーマンス（例えば、ＩＯコマンドの処理性能）を或る程度のレベルに維持する必要がある。つまり、ストレージシステムの稼動状態では、省電力とパフォーマンスを両立する必要がある。しかし、それを実現するための技術は、文献１、文献２及びそれらの組み合わせから導き出すことはできない。
【０００９】
従って、本発明の目的は、ストレージシステムの稼動状態において省電力とパフォーマンスを両立することにある。
【００１０】
本発明の更なる目的は、後の説明から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本発明の第一の側面に従うストレージシステムは、ＩＯコマンドを送信する上位装置に接続されたストレージシステムにおいて、複数の記憶デバイスを含み負荷となる複数の負荷デバイスと、前記複数の負荷デバイスに流れる電流値を測定する電流測定部と、前記測定された電流値を基に前記複数の負荷デバイスによって消費される消費電力値を各時点で算出する電力算出部と、前記上位装置からＩＯコマンドを受信し、前記複数の記憶デバイスのうち、そのＩＯコマンドに従う記憶デバイスにアクセスするコントローラ部とを備える。前記コントローラ部が、前記算出される消費電力値が所定の電力許容値以下となり且つ前記消費電力値と前記電力許容値との差分を縮める消費電力制御を実行する。ここで、「差分を縮める」とは、例えば、今回時点の消費電力値が前回時点の消費電力制御後の消費電力値よりも下がり、その結果、今回時点の消費電力値と前記電力許容値との差分が、前回時点の消費電力制御後の消費電力値と前記電力許容値との差分よりも大きくなってしまった場合に、その差分を縮めることを意味する。
【００１２】
第一の実施態様では、前記消費電力制御とは、前記消費電力値が抑制されるが負荷デバイスの稼動状況が劣化する消費電力抑制制御を実行したりその消費電力抑制制御を解除したりすることにより、消費電力抑制制御の実行数を調整することであるとすることができる。例えば、今回時点の消費電力値と前記電力許容値との差分が、前回時点の消費電力制御後の消費電力値と前記電力許容値との差分よりも大きくなってしまった場合には、実行中の消費電力抑制制御を止めることで、その差分を縮めることができる。また、例えば、今回時点の消費電力値が前記電力許容値を超えてしまった場合には、消費電力抑制制御を実行することで、その消費電力値を下げることができる。
【００１３】
第二の実施態様では、ストレージシステムが、少なくとも前記コントローラ部を備えた基本サブシステムと、前記基本サブシステムに接続された増設サブシステムとを備えることができる。前記電力許容値は、サブシステム単位で用意することができる。前記増設サブシステムが、二以上の記憶デバイスを含む二以上の負荷デバイスと、前記コントローラ部と通信を行う第二のコントローラ部と、前記二以上の負荷デバイスに流れる電流値を測定する第二の電流測定部とを備えることができる。前記第二のコントローラ部が、前記第二の電流測定部で測定された電流値である第二の電流値を前記第二の電流測定部から取得することができる。前記コントローラ部が、前記第二のコントローラ部から前記第二の電流値を取得し、前記第二の電流値を基に、前記第二のコントローラ部での消費電力値を算出し、算出された消費電力値とその消費電力値がどのサブシステムでの値かに応じて、サブシステム別に前記消費電力制御を実行することができる。
【００１４】
第三の実施態様では、前記第一の実施態様において、前記コントローラ部は、前記消費電力抑制制御として、前記受信したＩＯコマンドに従うＩＯ処理の開始を遅延するＩＯ処理制御を実行することができる。
【００１５】
第四の実施態様では、前記第三の実施態様において、前記複数の記憶デバイスの各々は、回転するディスクを記憶媒体として備えるディスクドライブであるとすることができる。前記コントローラ部は、前記ＩＯ処理制御では、ＩＯ処理の遅延対象の複数のＩＯコマンドのうち、シーケンシャルアクセスのＩＯコマンドをランダムアクセスのＩＯコマンドよりも優先的に処理することができる。
【００１６】
第五の実施態様では、前記第三の実施態様において、前記コントローラ部は、前記ＩＯ処理制御では、ＩＯ処理の遅延対象の複数のＩＯコマンドのうち、高稼働状況の記憶デバイスがアクセス先であるＩＯコマンドを低稼働状況の記憶デバイスがアクセス先であるＩＯコマンドよりも優先的に処理することができる。ここで、高稼働状況とは、例えば、電源オンであるか、或いは、記憶デバイスがディスクドライブであれば、ディスクの回転速度が高速であることを意味してもよい。低稼働状況とは、例えば、電源オフであるか、或いは、記憶デバイスがディスクドライブであれば、ディスクの回転速度が低速（回転速度が０であってもよい）であることを意味してもよい。
【００１７】
第六の実施態様では、前記第一の実施態様において、ストレージシステムが、キャッシュメモリを更に備えることができる。前記コントローラ部は、前記上位装置からのＩＯコマンドに従うデータを前記キャッシュメモリに書き、前記キャッシュメモリに書かれたデータを、そのＩＯコマンドに従うアクセス先となる記憶デバイスに書き出すように構成されている。前記コントローラ部は、前記消費電力抑制制御として、前記キャッシュメモリから記憶デバイスに書き出す順序を制御するキャッシュ制御を実行することができる。
【００１８】
第七の実施態様では、前記第六の実施態様において、前記コントローラ部は、前記キャッシュ制御では、前記キャッシュメモリに存在する複数のデータのうち、高稼働状況の記憶デバイスが書き出し先であるデータを低稼働状況の記憶デバイスが書き出し先であるデータよりも優先的に書き出すことができる。
【００１９】
第八の実施態様では、前記第一の実施態様において、前記コントローラ部は、前記消費電力抑制制御として、記憶デバイスの稼動状況を低稼働状況にする記憶デバイス制御を実行することができる。
【００２０】
第九の実施態様では、前記八の実施態様において、前記コントローラ部は、前記記憶デバイス制御では、前記複数の記憶デバイスの各々のアクセス頻度と最近のアクセスの有無とのうちの少なくとも一方に基づいて、低稼働状況にする記憶デバイスを決定することができる。
【００２１】
第十の実施態様では、前記複数の記憶デバイスに、第一の記憶デバイスと第二の記憶デバイスとが含まれている。前記コントローラ部が、前記消費電力制御として、前記第一の記憶デバイスを高稼働状況とし、前記第二の記憶デバイス内のデータを前記第一の記憶デバイスに移動させ、そのデータの移動元の第二の記憶デバイスを低稼働状況とする処理を実行することができる。
【００２２】
第十一の実施態様では、前記第十の実施態様において、前記第一の記憶デバイスが、前記コントローラ部を備えた基本サブシステムに備えられてもよい。前記第二の記憶デバイスが、前記基本サブシステムに接続された増設サブシステムに備えられてもよい。
【００２３】
第十二の実施態様では、前記複数の記憶デバイスにより二以上の記憶デバイスグループが形成されている。各記憶デバイスグループは、二以上の所定個数の記憶デバイスで構成されている。前記コントローラ部は、前記記憶デバイスグループ単位で前記記憶デバイスの稼動状況を制御することができる。
【００２４】
第十三の実施態様では、前記コントローラ部は、低稼働状況の記憶デバイスにアクセスする場合、その記憶デバイスを高稼働状況にすることにより増加すると予測される消費電力値が前記電力許容値以下か否かを判断し、前記予測される消費電力値が前記電力許容値以下であれば、その記憶デバイスを高稼働状況にした上でその記憶デバイスにアクセスすることができる。
【００２５】
第十四の実施態様では、前記電力算出部は、負荷デバイスの増設、減設及び閉塞のうちの少なくとも一つの変更時に、その変更後の電流値を取得して消費電力値を算出することができる。前記コントローラ部は、前記変更後の算出された消費電力値を基に前記消費電力制御を実行することができる。
【００２６】
第十五の実施態様では、ストレージシステムが、前記複数の負荷デバイスに給電する電源ユニットを更に備える。前記電源ユニットが、前記電流測定部を備えることができる。
【００２７】
第十六の実施態様では、前記複数の負荷デバイスには、第一と第二の負荷デバイスが含まれる。前記ストレージシステムは、基本サブシステムとその基本サブシステムに接続された増設サブシステムとで構成することができる。前記電力許容値は、サブシステム単位で用意されている。前記基本サブシステムは、前記コントローラ部と、二以上の前記第一の負荷デバイスと、前記二以上の第一の負荷デバイスに給電する第一の電源ユニットとを備えることができる。前記第一の電源ユニットが、前記二以上の第一の負荷デバイスに流れる電流を測定する第一の電流測定部を有することができる。前記増設サブシステムが、二以上の記憶デバイスを含む二以上の第二の負荷デバイスと、前記コントローラ部と通信を行う第二のコントローラ部と、前記二以上の第二の負荷デバイスに給電する第二の電源ユニットとを備えることができる。前記第二の電源ユニットが、前記二以上の第二の負荷デバイスに流れる電流値を測定する第二の電流測定部を有することができる。前記第二のコントローラ部が、前記第二の電流測定部で測定された電流値である第二の電流値を前記第二の電流測定部から取得することができる。前記コントローラ部が、前記第二のコントローラ部から前記第二の電流値を取得し、前記第二の電流値を基に、前記第二のコントローラ部での消費電力値を算出し、算出された消費電力値とその消費電力値がどのサブシステムでの値かに応じて、サブシステム別に前記消費電力制御を実行することができる。前記消費電力制御とは、前記消費電力値が抑制されるが負荷デバイスの稼動状況が劣化する消費電力抑制制御を実行したりその消費電力抑制制御を解除したりすることにより、消費電力抑制制御の実行数を調整することであるとすることができる。
【００２８】
本発明の第二の側面に従う計算機は、前述したストレージシステムに接続された計算機であって、記憶資源と、前記電力許容値を前記ストレージシステムに設定する許容値設定部と、前記算出された各時点の消費電力値を取得して前記記憶資源に記録する消費電力管理部と、前記記録された消費電力値を表示する表示制御部とを備える。
【００２９】
一つの実施態様では、管理計算機は、各時間帯でのＩＯ処理数を取得し、時間帯とＩＯ処理数との関係を前記記憶資源に記録するＩＯ監視部を更に備えることができる。前記表示制御部が、各時間帯のＩＯ処理数と各時点の消費電力値との関連を表示することができる。表示制御部は、同一の表示領域上に、各時間帯のＩＯ処理数のグラフと各時点の消費電力値とのグラフとを表示することができる。
【００３０】
ストレージシステム及び管理計算機の上述した各部は、ハードウェア（例えば回路）、コンピュータプログラム、或いはそれらの組み合わせ（例えば、コンピュータプログラムを読み込んで実行する一又は複数のＣＰＵ）によって実現することもできる。各コンピュータプログラムは、コンピュータマシンに備えられる記憶資源（例えばメモリ）から読み込むことができる。その記憶資源には、ＣＤ−ＲＯＭやＤＶＤ（Digital Versatile Disk）等の記録媒体を介してインストールすることもできるし、インターネットやＬＡＮ等の通信ネットワークを介してダウンロードすることもできる。
【発明の効果】
【００３１】
本発明によれば、ストレージシステムの稼動状態において省電力とパフォーマンスを両立することができる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の実施の形態を説明する。
【００３３】
図１は、本発明の一実施形態に係るストレージシステムの構成例を示した図である。
【００３４】
ストレージシステム１０７に、上位装置の一種であるホスト計算機１０３と、ストレージシステム１０７を管理するための計算機（以下、管理端末）１０５とが接続される。
【００３５】
ホスト計算機１０３は、ストレージシステム１０７にＩＯ（入力／出力）コマンドを発行する。ＩＯコマンドは、例えばストレージシステムにデータを書込むためのライトコマンドと、ストレージシステムからデータを読み出すためのリードコマンドとのうちの少なくとも一方である。
【００３６】
管理端末１０５は、ストレージシステム１０７に種々の情報を設定したり、ストレージシステム１０７から種々の情報を受信して記憶したりすることができる。管理端末１０５の機能については後に詳述する。
【００３７】
ストレージシステム１０７は、基本筐体１０１と増設筐体１３１とのうちの少なくとも基本筐体１０１で構成することができる。増設筐体１３１が備えられる場合、増設筐体１３１の数は、１以上とすることができる。基本筐体１０１に、１以上の増設筐体１３１を接続することができる。本実施形態において、基本筐体１０１及び増設筐体１３１での「筐体」という言葉は、ストレージシステムの一サブシステムという意味を含めることができる。
【００３８】
基本筐体１０１とは、少なくともメインコントローラ１１７を備え、ディスクドライブ１２７を必ずしも備えなくても良いサブシステムである。具体的には、基本筐体１０１には、例えば、ＡＣ／ＤＣ電源１１４と、電源ユニット１０９と、バックボード１１５と、バッテリー１１３と、ファン１２９と、複数のディスクドライブ１２７と、メインコントローラ１１７とを備える。
【００３９】
電源ユニット１０９は、基本筐体１０１の各負荷（図１では、メインコントローラ１１７、ファン１２９、ディスクドライブ１２７）に給電するユニットであり、定電圧化部１１２と、電流監視部１１１とを備える。定電圧化部１１２は、ＡＣ／ＤＣ電源１１４からの直流電圧を定電圧化して各負荷に印加する回路である。電流監視部１１１は、定電圧化部１１２から各負荷へと流れる電流を監視する（換言すれば測定する）装置である。電流監視部１１１は、メインコントローラ１１７からのコマンドに応答して、測定された電流値を、メインコントローラ１１７に報告することができる。電流監視部１１１は、能動的に、定期的に又は不定期的に、測定された電流値をメインコントローラ１１７に報告してもよい。
【００４０】
バッテリー１１３は、いわゆる補助電源であり、例えば、特定部位の補助電源、より具体的には、例えば、メインコントローラ１１７内のキャッシュメモリの補助電源である。
【００４１】
ファン１２９は、メインコントローラ１１７を冷却するためのものである。ファン１２９は、メインコントローラ１１７に加えて又は代えて、他の発熱部位を冷却しても良い。
【００４２】
バックボード１１５は、電源ユニット１０９、メインコントローラ１１７、バッテリー１１３、ファン１２９及びディスクドライブ１２７を電気的に接続するための部材であり、例えば、一又は複数のプリント配線基盤で構成することができる。電源ユニット１０９からバックボード１１５を介して各負荷（ディスクドライブ１２７、ファン１２９及びメインコントローラ１１７）に給電がされる。
【００４３】
ディスクドライブ１２７は、本実施形態では、ハードディスクドライブであるが、他種のディスクドライブ（例えば、光ディスクのドライブ）であっても良い。
【００４４】
メインコントローラ１１７は、例えば、一又は複数の回路基盤で構成することができる。メインコントローラ１１７は、ホスト計算機１０３からＩＯコマンドを受け、そのＩＯコマンドに従って、ＩＯ処理を行うことができる。また、メインコントローラ１１７は、管理端末１０５から種々の情報を受けて記憶したり、管理端末１０５に種々の情報を送信したりすることができる。また、メインコントローラ１１７は、定期的に、電源ユニット１０９内の電流監視部１１１に、電流値の取得のためのコマンドを送信し、それに応答して、電流監視部１１１で測定された電流値を、電流監視部１１１から受信することができる。
【００４５】
増設筐体１３１とは、少なくともディスクドライブ１５７及びサブコントローラ１４７を備えるサブシステムである。各増設筐体１３１は、基本筐体１０１と似た構成を採用することができる。図１では、増設筐体１３１の各構成要素の参照番号として、基本筐体１０１における対応する各構成要素の参照番号に３０を加算した数字を付与している。例えば、増設筐体１３１における電源ユニットの参照番号は１３９であるが、これは、基本筐体１０１における電源ユニットの参照番号１０９に３０を加算した数字である。以下、増設筐体１３１について、基本筐体１０１との相違点を主に説明する。
【００４６】
増設筐体１３１には、キャッシュメモリのバッテリーが存在しない。これは、サブコントローラ１４７には、メインコントローラ１１７にあるキャッシュメモリが存在しないためである。
【００４７】
また、増設筐体１３１では、メインコントローラ１１７に代えて、前述したように、サブコントローラ１４７が搭載される。そのため、ファン１５９は、サブコントローラ１４７を冷却するためのものである。サブコントローラ１４７は、メインコントローラ１１７よりもシンプルな構成とすることができる。
【００４８】
図２は、メインコントローラ１１７及びサブコントローラ１４７のそれぞれの内部構成と、ホスト計算機１０３からのＩＯコマンドに従って書き込み又は読出されるデータの流れとを示す。
【００４９】
メインコントローラ１１７には、ホストインターフェース部（以下、ホストＩ／Ｆ）１２２と、管理Ｉ／Ｆ１２１と、ドライブＩ／Ｆ１２５と、ＣＰＵ（Central Processing Unit）１１９と、メモリ１２３とを備える。各種Ｉ／Ｆは、ハードウェア回路（例えばＬＳＩ（Large Scale Integration））、コンピュータプログラム及びそれらの組み合わせのうちのいずれかで構成することができる。
【００５０】
ホストＩ／Ｆ１２２は、ホスト計算機１０３との通信（例えばファイバチャネルプロトコルに従う通信）を制御する。
【００５１】
管理Ｉ／Ｆ１２１は、管理端末１５との通信（例えばインターネットプロトコルに従う通信）を制御する。
【００５２】
ドライブＩ／Ｆ１２５は、各ディスクドライブ１２７との通信（例えばファイバチャネルプロトコルに従う通信）を制御する。
【００５３】
メモリ１２３は、キャッシュメモリ（ＣＭ）を含む。キャッシュメモリは、ホスト計算機１０３から受信した、ディスクドライブ１２７に書き込まれるデータ（以下、ライトデータ）や、ディスクドライブ１２７から読み出された、ホスト計算機１０３に送信されるデータ（以下、リードデータ）が一時的に記憶することができる。メモリ１２３は、ＣＰＵ１１９によって実行される種々のコンピュータプログラムや、ＣＰＵ１１９で参照される制御用のデータを記憶することもできる。制御用のデータとしては、例えば、ドライブグループの管理、論理ボリュームの管理のためのデータがある。ドライブグループの管理のためのデータは、例えば、各ドライブグループの識別子（ＩＤ）と、各ドライブグループを構成する複数のディスクドライブの各々のＩＤとで構成することができる。論理ボリュームの管理のためのデータは、各論理ボリュームのＩＤと、各論理ボリュームを有する各ドライブグループのＩＤなどで構成することができる。ドライブグループは、例えば、ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）の法則に従うグループであり、パリティグループ或いはアレイグループと呼ばれることがある。
【００５４】
サブコントローラ１４７には、ホストＩ／Ｆ１２２、管理Ｉ／Ｆ１２１、キャッシュメモリ及びＣＰＵ１１９を備える必要が無く、メモリ１５３及びドライブＩ／Ｆ１５５があればよい。サブコントローラ１４７は、純粋なハードウェア回路（例えばＡＳＩＣ（Application Specific Integrated Circuit））で構成されてもよい。
【００５５】
以下、ＩＯ処理の流れの一例を説明する。
【００５６】
ＣＰＵ１１９は、ホストＩ／Ｆ１２２で受信したＩＯコマンドを解析する。
【００５７】
ＣＰＵ１１９は、受信したＩＯコマンドがリードコマンドと判断した場合、キャッシュメモリにリードデータがあるか否か（キャッシュヒットしたか否か）を判断する。リードデータがあると判断した場合、ＣＰＵ１１９が、ホストＩ／Ｆ１２２に指示し、ホストＩ／Ｆ１２２が、キャッシュメモリからリードデータを読み出し、そのリードデータをホスト計算機１０３に送信する。一方、リードデータがないと判断した場合、ＣＰＵ１１９は、ドライブＩ／Ｆ１２５に指示し、ドライブＩ／Ｆ１２５が、該当ディスクドライブ（ＩＯコマンドで指定された場所に対応するディスクドライブ）１２７からリードデータを取得し、キャッシュメモリにそのリードデータを書く。ホストＩ／Ｆ１２２は、キャッシュメモリからリードデータを読み出し、そのリードデータをホスト計算機１０３に送信する。
【００５８】
ＣＰＵ１１９は、受信したＩＯコマンドがライトコマンドと判断した場合、キャッシュメモリに領域を確保できた否か（キャッシュヒットしたか否か）を判断する。キャッシュヒットした場合、ＣＰＵ１１９は、ホストＩ／Ｆ１２２に指示し、ホストＩ／Ｆ１２２が、キャッシュメモリにライトデータを書く。その後、ホストＩ／Ｆ１２２は、ホスト計算機１０３に完了報告を出す。一方、キャッシュヒットしなかった場合、ＣＰＵ１１９は、キャッシュヒットするまで待つことができる。ドライブＩ／Ｆ１２５は、キャッシュメモリに書かれたライトデータを、該当ディスクドライブ（ＩＯコマンドで指定された場所に対応するディスクドライブ）１２７に書く。
【００５９】
なお、以上のＩＯ処理において、該当ディスクドライブが、増設筐体１３１にある場合、ドライブＩ／Ｆ１２５が、増設筐体１３１のドライブＩ／Ｆ１５５に指示し、ドライブＩ／Ｆ１５５が、その指示に従って、増設筐体１３１内の該当ディスクドライブ１５７にアクセスする。
【００６０】
以上が、ＩＯ処理の流れの一例である。以下、本実施形態の特徴の概要を説明する。
【００６１】
図３は、本実施形態の特徴の概要の説明図である。
【００６２】
各電源ユニット１０９、１３９に、電流監視部１１１、１３１が備えられる。
【００６３】
ＣＰＵ１１９は、定期的に、電流監視部１１１に所定のコマンドを送信することで、点線矢印４０３に示すように、電流監視部１１１から、測定された電流値を取得することができる。
【００６４】
また、ＣＰＵ１１９は、点線矢印４０５で示すように、定期的に、ドライブＩ／Ｆ１２５を介して、増設筐体１３１のドライブＩ／Ｆ１５５に、電流値を要求することができる。ドライブＩ／Ｆ１５５は、その要求に応答して、所定のコマンドを電流監視部１３１に送信することで、点線矢印４０７に示すように、電流監視部１３１から電流値を取得し、取得した電流値を、点線矢印４０５に示すように、ＣＰＵ１１９に送信することができる。
【００６５】
メモリ１２３には、ディスクドライブに関わる電子的な消費電力値ルールが記憶されている。消費電力値ルールとは、各種処理に必要な電力値である。具体的には、例えば、消費電力値ルールとして、或るシーク量（例えば、ヘッドの移動範囲）でヘッドを移動する際に消費する電力値、或るディスク回転速度で消費する電力値などがある。
【００６６】
また、メモリ１２３には、電力許容値が記憶される。電力許容値は、消費電力値の閾値である。記憶される電力許容値は、所定単位とすることができる。所定単位とは、ストレージシステム１０７全体及び筐体のうちの少なくとも一方がある。それに限らず、例えば、ドライブグループなど、他の単位が採用されてもよい。所定単位の電力許容値は、点線矢印４０１に示すように、管理端末１０５からＣＰＵ１１９に指示して設定することができる。なお、管理端末１０５は、点線矢印４０１に示すように、算出された消費電力値などを取得することもできる。
【００６７】
ＣＰＵ１１９は、取得された電流値をメモリ１２３で管理することができる。具体的には、例えば、ＣＰＵ１１９は、筐体別に、取得日時と取得された電流値とをメモリ１２３に記憶させることができる。
【００６８】
ＣＰＵ１１９は、取得された電流値と所定の電圧値（例えば、電源ユニット１０９によって印加される定電圧値）とから消費電力値を算出することができる。ＣＰＵ１１９は、算出された消費電力値もメモリ１２３で管理することができる。具体的には、例えば、ＣＰＵ１１９は、筐体別に、算出日時と算出された消費電力値とをメモリ１２３に記憶させることができる。
【００６９】
そして、ＣＰＵ１１９は、算出された消費電力値と、メモリ１２３に記憶されている電力許容値及び消費電力値ルールに基づいて、消費電力値が電力許容値を超えない範囲で、最大限のパフォーマンスを発揮できるような制御を行うことができる。その制御として、例えば、ＩＯ処理制御、キャッシュ制御及びドライブ制御のうちの少なくとも一つがある。ＩＯ処理制御とは、ＩＯコマンドに従うＩＯ処理の制御である。キャッシュ制御とは、キャッシュメモリに対するデータの読み書きに関する制御である。ドライブ制御とは、ディスクドライブ１２７、１５７に対する制御である。具体的には、例えば、以下の通りである。
【００７０】
（１）ＩＯ処理制御
ＩＯ処理制御では、例えば、ＩＯコマンド毎に、以下の（１−１）乃至（１−３）のうちの少なくとも一つが行われる。
（１−１）ＩＯコマンドに従う処理の開始を遅延させること。これにより、ディスクドライブへのアクセスの発生を遅延させることができる。換言すれば、同時間帯にディスクドライブへのアクセスが集中してしまうことを抑えることができる。
（１−２）シーケンシャルアクセスのＩＯコマンドを優先的に処理し、ランダムアクセスのＩＯコマンドを遅延させる。シーケンシャルアクセスであるかランダムアクセスであるかは、ＩＯコマンドに含まれている情報から特定することができる。また、この（１−２）は、複数のＩＯコマンド単位で行うこともできる。例えば、複数のＩＯコマンド中の先頭アクセス先アドレスが所定間隔で連続していれば、シーケンシャルアクセスであると判断することができ、そうでなければ、ランダムアクセスであると判断することができる。
（１−３）ＩＯコマンドに従う処理の遅延を、アクセス先のディスクドライブのディスク回転速度に応じて決定する。
【００７１】
（２）キャッシュ制御
キャッシュ制御では、例えば、以下の（２−１）及び（２−２）のうちの少なくとも一つが行われる。
（２−１）キャッシュメモリからデステージする（ディスクドライブに書く）データの順序を変更する。ここでは、ディスク回転速度が通常回転速度（ディスクにアクセスする際の回転速度）のディスクドライブが書き込み先となるデータが優先され、そうではないディスクドライブが書き込み先となるデータが後にされる。また、ランダムアクセスが発生する場合には、シーケンシャルアクセスとなるような順序に並び替えられてもよい。
（２−２）デステージの順序の並び替えが不可の場合には、通常回転速度ではない第一のディスクドライブが書き込み先であるデータを、一時的に、通常回転速度の第二のディスクドライブに書き、その後に、第一のディスクドライブを通常回転速度とし、第二のディスクドライブに書かれたデータを第一のディスクドライブに移す。どのデータをどのディスクドライブのどこに一時的に記憶させたかは、所定の記憶領域、例えば、後述のキャッシュ制御テーブルに記録することができ、そのテーブル２１５から、特定することができる。
【００７２】
（３）ドライブ制御
ドライブ制御では、例えば、ディスクドライブ毎に、以下の（３−１）乃至（３−３）のうちの少なくとも一つが行われる。
（３−１）アクセス頻度に応じてディスク回転速度を変更する。どのディスクドライブでアクセス頻度や現在のディスク回転速度がどれぐらいであるかは、例えば、後述のドライブ制御テーブルに記録される。アクセス頻度は、ディスクドライブにアクセスが発生する都度に、そのディスクドライブのアクセスカウント値を更新し、所定時間毎にそのアクセスカウント値をリセットすることで、取得することができる。アクセス頻度の閾値が一つ以上あり、どの閾値未満になったかで、ディスク回転速度をどうするかを決定することができる。
（３−２）最近のアクセスの有無に応じて、ディスク回転速度を変更する。最近のアクセスの有無は、例えば、ＩＯ処理制御部２０３が、ＩＯコマンドの受信日時と、そのＩＯコマンドに従うアクセス先となるディスクドライブのＩＤとを後述のドライブ制御テーブルに記録し、そのドライブ制御テーブルを参照することにより、特定することができる。最近のアクセスの有無とは、例えば、現在日時から所定時間過去にアクセスがあったか否かを意味する。
（３−３）アクセス頻度が所定時間ゼロであるディスクドライブのディスク回転速度をゼロとする。そのディスクドライブの電源をターンオフしてもよい。
【００７３】
以上が、各種制御の一例である。なお、この制御の他に、例えば、以下の制御が行われても良い。すなわち、ＣＰＵ１１９は、必要なデバイスを特定し、特定されたデバイスのみ電源をターンオンし、必要なくなった時にはそのデバイスの電源をターンオフしてもよい。ここで言うデバイスとは、筐体であっても良いし、ディスクドライブであってもよい。必要なデバイスとは、アクセス先のデバイスとすることができる。例えば、データのコピー（例えばバックアップ）の場合には、必要なデバイスとしては、コピー元のデータを有するデバイスと、コピー先となるデバイスとがある。
【００７４】
以下、本実施形態の特徴についてより詳細に説明する。
【００７５】
図４は、ＣＰＵ１１９により実行される処理の説明図である。
【００７６】
メモリ２１３に、電力許容値テーブル１６３が記憶される。電力許容値テーブル１６３には、例えば、図５に例示するように、ストレージシステム１０７全体の電力許容値と、各筐体毎の電力許容値とが記録される。
【００７７】
ＣＰＵ１１９で実行されるコンピュータプログラムとして、電力監視制御部２０１、ＩＯ処理制御部２０３、キャッシュ制御部２０５及びディスク制御部２０７がある。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するＣＰＵによって処理が行われるものとする。
【００７８】
電力監視制御部２０１は、測定された電流値を取得し、取得した電流値から消費電力値を算出し、算出された消費電力値と、電力許容値テーブル１６３とを基に、ＩＯ処理制御、キャッシュ制御及びドライブ制御のうちの少なくとも一つを実行することができる。ＩＯ処理制御の際には、ＩＯ制御テーブル２１３を参照することができる。キャッシュ制御の際には、キャッシュ制御テーブル２１５を参照することができる。ドライブ制御の際には、ドライブ制御テーブル２１７を参照することができる。電力監視制御部２０１は、参照したテーブルを基に、制御を実行することができる。また、その実行後、電力監視制御部２０１は、参照したテーブルを更新することができる。
【００７９】
各テーブル２１３、２１５及び２１７は、例えば、テンポラリのテーブルである。ＩＯ制御テーブル２１３には、例えば、ＩＯコマンド毎に、ＩＯコマンドのＩＤ、ホスト計算機１０３から受信した順番、ＩＯコマンドに従うアクセス先アドレス（例えば、ディスクドライブのＩＤやアクセス先セクタ番号）、ＩＯ処理の開始の遅延時間長のうちの少なくとも一つが記録される。キャッシュ制御テーブル２１５には、例えば、キャッシュ領域のＩＤや、空きか否かや、及び、デステージ先アドレスのうちの少なくとも一つが記録される。また、一時的にデータのデステージ先となったディスクドライブのＩＤ及びアドレスや、そのデータの本来のデステージ先となるディスクドライブのＩＤ及びアドレスが記憶されても良い。ドライブ制御テーブル２１７には、例えば、各ディスクドライブ毎に、ディスクドライブのＩＤ、ディスクドライブが属するドライブグループのＩＤ、ディスクドライブの電源のオン／オフ状態、及び、現在のディスク回転速度のうちの少なくとも一つが記録される。
【００８０】
ＩＯ処理制御部２０３は、ホスト計算機１０３からのＩＯコマンドに従う処理の制御を、算出された消費電力値を基に行うことができる。その際、ＩＯ処理制御部２０３は、ＩＯ制御テーブル２１３を更新することができる。
【００８１】
キャッシュ制御部２０５は、キャッシュメモリに対する読み書きの制御を、算出された消費電力値を基に行うことができる。その際、キャッシュ制御部２０５は、キャッシュ制御テーブル２１５を更新することができる。
【００８２】
ドライブ制御部２０７は、ディスクドライブに対する制御を、算出された消費電力値を基に行うことができる。その際、ディスクドライブ制御部２０７は、ドライブ制御テーブル２１７を更新することができる。
【００８３】
以下、各種制御部２０１、２０３、２０５及び２０７が行う処理の一例の詳細を説明する。
【００８４】
図６は、電力監視制御部２０１が行う処理の流れの一例を示す。
【００８５】
電力監視制御部２０１は、定期的に、各電流監視部１１１、１４１から電流値を取得し、取得した電流値と、所定電圧とから、所定単位の消費電力値を算出する（ステップＳ１）。ここでの所定単位とは、ストレージシステム１０７全体と、各筐体１０１、１３１である。
【００８６】
電力監視制御部２０１は、算出された消費電力値が、電力許容値テーブル１６３に記録されている電力許容値以下か否かを判断する（Ｓ２）。ここで、消費電力値が電力許容値以下の単位があれば（Ｓ２でＹＥＳ）、その単位について、Ｓ３の処理が行われる。消費電力値が電力許容値を超えている単位が一つでもあれば（Ｓ２でＮＯ）、その単位について、Ｓ７の処理が行われる。
【００８７】
Ｓ３では、電力監視制御部２０１は、算出された消費電力値と電力許容値との差分が所定値以上か否かを判断する。所定値未満であれば（Ｓ３でＮＯ）、電力監視制御部２０１は、再びＳ１を行い、所定値以上であれば（Ｓ３でＹＥＳ）、Ｓ４を行う。
【００８８】
Ｓ４では、電力監視制御部２０１は、ＩＯ処理制御、キャッシュ制御及びドライブ制御の状態（例えば、ＩＯ処理制御、キャッシュ制御及びドライブ制御がそれぞれ行われているか否か）を確認する。これは、例えば、各種テーブル２１３、２１５及び２１７を参照することで、行うことができる。この結果、いずれの制御も行われないと判断された場合には、（Ｓ５でＮＯ）、Ｓ１に戻り、少なくとも一つの制御が行われていると判断された場合には（Ｓ５でＹＥＳ）、Ｓ６が行われる。
【００８９】
Ｓ６では、電力監視制御部２０１は、ＩＯ処理制御、キャッシュ制御及びドライブ制御の少なくとも一つを、許容できる範囲まで解除する。ここで、「許容できる範囲」とは、消費電力値が電力許容値以下となり、且つ、その消費電力値と電力許容値との差分がなるべく小さい値になることを意味する。つまり、消費電力値を許容電力値以下となるようにするが、パフォーマンスをなるべく劣化させないようにすることを意味する。このＳ６において、ＩＯ処理制御を解除するとは、例えば、ＩＯコマンドに従う処理の遅延時間長を短縮する（例えば０秒にする）ことがある。キャッシュ制御を解除するとは、例えば、キャッシュメモリ上のデータのデステージの順番変更を止めることがある。ディスク制御を解除するとは、例えば、通常回転速度よりも低い回転速度でのディスクドライブのディスク回転速度を通常回転速度にすることがある。
【００９０】
なお、このＳ６での制御解除は、例えば、前述した消費電力値ルールを基に行うことができる。すなわち、消費電力値ルールには、例えば、シーク量と消費電力値との関係や、ディスク回転速度と消費電力値との関係が記録されており、そのルールから、例えば、幾つのディスクドライブの回転速度を低速から通常回転速度にすると消費電力値がどれだけ上昇するか等を特定することができる。この消費電力値ルールを基に制御解除を行うことにより、消費電力値が許容電力値を超えないようにパフォーマンスを向上させていくことができる。このＳ６で制御解除を行った場合、電力監視制御部２０１は、各テーブル２１３、２１５及び２１７について、解除した制御に関わる情報を更新（例えば削除）することができる。
【００９１】
さて、Ｓ７では、電力監視制御部２０１は、Ｓ４と同じ処理を行うことができる。
【００９２】
電力監視制御部２０１は、ＩＯ処理制御を行っていないと判断した場合には（Ｓ８でＮＯ）、ＩＯ処理制御を実行する（Ｓ９）。
【００９３】
また、電力監視制御部２０１は、ＩＯ処理制御を行っていてキャッシュ制御を行っていないと判断した場合には（Ｓ８でＹＥＳ、Ｓ１０でＮＯ）、キャッシュ制御を実行する（Ｓ１１）。
【００９４】
さらに、電力監視制御部２０１は、ＩＯ処理制御及びキャッシュ制御を行っていてドライブ制御を行っていないと判断した場合には（Ｓ１０でＹＥＳ及びＳ１２でＮＯ）、ドライブ制御を実行する（Ｓ１３）
電力制御部２０１は、全ての制御を行っていると判断した場合には（Ｓ１２でＹＥＳ）、増設筐体１３１におけるディスクドライブ１５７にアクセス頻度が所定値以上であるデータが記憶されている場合には、そのデータを、そのディスクドライブ１５７から、基本筐体１０１におけるキャッシュメモリ或いはディスクドライブ１２７に移動させ、移動元のディスクドライブ１５７のディスク回転速度を通常観点速度よりも低速（例えばゼロ）にする（Ｓ１４）。その際、ディスクドライブ１２７は、メインコントローラ１１７になるべく近いディスクドライブとすることができる。また、その移動に加えて、例えば、基本筐体１０１におけるディスクドライブ１２７の方がアクセス頻度が低い場合には、そのディスクドライブ１２７内のデータを増設筐体１３１のディスクドライブ１５７に移動し、その後、ディスクドライブ１５７の回転速度を低速にしてもよい。この処理により、省電力とパフォーマンスの両立を一層期待することができる。
【００９５】
以上が、電力監視制御部２０１が行う処理の一例である。なお、上述の処理では、ＩＯ処理制御の有無、キャッシュ制御の有無及びドライブ制御の有無の順で、優先的に判断されたが、優先順位は、それに限らない。また、優先順位は無くても良い。しかし、電力の許容値を超えない範囲でドライブのアクセ性能を維持する為には、ディスクの回転数を最大限に維持することが必要であると考えられ、それを実現する為には、上記順番（上記優先順位）で制御することが望ましいと考えられる。但し、消費電力値と許容値との差分が所定値未満であり、使用されていないドライブ（例えばアクセス頻度が所定値未満のドライブ）がある場合などは、そのドライブの回転速度をより低速（例えば停止）にすることで、消費電力値と許容値との差分を広げたほうが、制御を行う頻度を減らせることができると考えられる。
【００９６】
図７は、ＩＯ処理制御部２０３が行う処理の流れの一例を示す。
【００９７】
この処理は、例えば、ＩＯコマンドを受ける毎に開始される。
【００９８】
ＩＯ処理制御部２０３は、ＩＯコマンドを受けた場合に、所定のバッファにキューイングし（Ｓ２１）、キャッシュヒットしたか否かを判断する（Ｓ２２）。キャッシュヒットとは、ＩＯコマンドがライトコマンドの場合、キャッシュ領域を確保できたことを意味し、ＩＯコマンドがリードコマンドの場合、そのリードコマンドに従うリードデータがキャッシュ領域に存在することを意味する。
【００９９】
キャッシュヒットであると判断した場合（Ｓ２２でＹＥＳ）、ＩＯ処理制御部２０３は、キャッシュメモリにアクセスを行う（Ｓ２３）。
【０１００】
一方、キャッシュヒットではないと判断した場合（Ｓ２２でＮＯ）、ＩＯ処理制御部２０３は、アクセス先となるディスクドライブが何であるかをＩＯコマンドから特定する（Ｓ２４）。その際、ＩＯ処理制御部２０３は、特定されたディスクドライブが、通常回転でない場合（例えば低速回転或いは電源OFF状態）であれば、そのディスクドライブに対し前もって通常回転させておいてもよい。
【０１０１】
ＩＯ処理制御部２０３は、消費電力値を確認し、消費電力値と電力許容値とを比較する（Ｓ２５）。この消費電力値は、電力監視制御部２０１によって算出されメモリ２１３に書かれた値である。
【０１０２】
その結果、消費電力値が電力許容値以下であれば（Ｓ２６でＹＥＳ）、ＩＯ処理制御部２０３は、ＩＯ処理制御が行われていれば、消費電力値が電力許容値を超えない範囲で、ＩＯ処理制御を解除することができる（Ｓ２７）。ＩＯ処理制御が行われているか否かは、ＩＯ制御テーブル２１３から特定することができる。ＩＯ処理制御の解除の際、ＩＯ制御テーブル２１３を更新することができる。その後、ＩＯ処理制御部２０３は、Ｓ２４で特定したディスクドライブにアクセスする（Ｓ２８）。
【０１０３】
Ｓ２６において、消費電力値が電力許容値を超えていれば（Ｓ２６でＮＯ）、ＩＯ処理制御部２０３は、ＩＯ処理の遅延が可能か否かを判断し、可能であれば（Ｓ２９でＹＥＳ）、ＩＯ処理制御を実行し（Ｓ３０）、可能でなければ、キャッシュ制御部２０５及びドライブ制御部２０７の少なくとも一方を実行させる。なお、ＩＯ処理の遅延が可能か否かの判断は、例えば、ホスト１０３のＩＯタイムアウト時間長（ホスト１０３がＩＯコマンドを発行してから所定の応答を受けるまでの時間長）が所定時間長以上か未満かにより判断することができる。この場合、所定時間長以上であれば、ＩＯ処理の遅延が可能と判断することができる。
【０１０４】
図８は、キャッシュ制御部２０５が行う処理の流れの一例を示す。
【０１０５】
この処理流れは、例えば、キャッシュメモリの状態を定期的に監視してキャッシュメモリが満杯であると検出された場合、或いは、ドライブへの書込み順番を制御する場合に、実行することができる。前者の場合は、後述のＳ５４から開始することができる。
【０１０６】
キャッシュ制御部２０５は、キャッシュメモリの状態を確認する（Ｓ５１）。
【０１０７】
その結果、空きのキャッシュ領域があれば（Ｓ５２でＮＯ）、キャッシュ制御部２０５は、空きのキャッシュ領域にアクセスする（Ｓ５３）。
【０１０８】
一方、Ｓ５１の結果、全てのキャッシュ領域が使用されていれば（Ｓ５２でＹＥＳ）、キャッシュ制御部２０５は、アクセス先となるディスクドライブを特定し（Ｓ５４）、算出された消費電力値と電力許容値とを比較する（Ｓ５５）。
【０１０９】
その結果、消費電力値が許容電力許容値以下であれば（Ｓ５６でＹＥＳ）、キャッシュ制御部２０５は、キャッシュ制御が行われていれば、消費電力値が電力許容値を超えない範囲で、キャッシュ制御を解除することができる（Ｓ５７）。キャッシュ制御が行われているか否かは、キャッシュ制御テーブル２１５から特定することができる。キャッシュ制御の解除の際、キャッシュ制御テーブル２１５を更新することができる。その後、キャッシュ制御部２０５は、Ｓ５４で特定したディスクドライブにアクセスする（Ｓ５８）。
【０１１０】
Ｓ５６において、消費電力値が電力許容値を超えていれば（Ｓ５６でＮＯ）、キャッシュ制御部２０５は、キャッシュ制御が可能か否かを判断し、可能であれば（Ｓ５９でＹＥＳ）、キャッシュ制御を実行し（Ｓ６０）、可能でなければ、ＩＯ処理制御部２０３及びドライブ制御部２０７の少なくとも一方を実行させる。なお、キャッシュ制御が可能か否かは、例えば、キャッシュメモリ上のデータのデステージ順序を変更することにより電力値を調整することができるか否かにより、判断することができる。その判断は、例えば、所定のアルゴリズムによるシミュレーションの結果から行うことができる。
【０１１１】
図９は、ドライブ制御部２０７が行う処理の流れの一例を示す。
【０１１２】
この処理流れは、例えば、消費電力値の所定値以下に下げる必要がある場合、或いは、ＩＯ処理制御やキャッシュ制御では消費電力値を電力許容値以下にすることができない場合に、実行することができる。
【０１１３】
ドライブ制御部２０７は、算出された消費電力値と電力許容値とを比較する（Ｓ７１）。
【０１１４】
その結果、消費電力値が電力許容値を超えていれば（Ｓ７２でＮＯ）、ドライブ制御部２０７は、各ディスクドライブのアクセス頻度及び最近のアクセスの有無を確認し、アクセス頻度が所定値以下で最近のアクセスの無いディスクドライブのディスク回転速度を低速にする（Ｓ７４）。最近のアクセスの有無は、例えば、ドライブ制御部２０７が、各ディスクドライブについて、最近のアクセス日時をドライブ制御テーブル２１７に記録することにより、特定することができる。「最近のアクセスの無い」とは、最近のアクセス日時と現在日時とが所定値以上離れていることを言う。
【０１１５】
Ｓ７１の結果、消費電力値が電力許容値以下であれば（Ｓ７２でＹＥＳ）、ドライブ制御部２０７は、各ディスクドライブの現在のディスク回転速度を、ドライブ制御テーブル２１７を参照することにより確認する。
【０１１６】
その結果、低速回転のディスクドライブがあれば（Ｓ７６でＹＥＳ）、ドライブ制御テーブル２０７は、消費電力値、電力許容値及び消費電力値ルールから、消費電力値が電力許容値を超えない範囲でディスク回転速度を高速にできるか否かを判断する（Ｓ７７）。その結果、できると判断した場合（Ｓ７８でＹＥＳ）、ドライブ制御部２０７は、アクセス頻度及び最近のアクセスの有無に応じて、低速のディスクドライブに指示を出しディスク回転速度を高速にする（Ｓ７８）。このＳ７８では、低速のディスクドライブのうち、アクセス頻度がもっとも高い、及び／又は、最近のアクセス日時が最も近いディスクドライブが、高速にさせられる。また、高速にするとは、例えば、少なくとも現在のディスク回転速度よりも早い回転速度にすることを言い、具体的には、例えば、通常回転速度、或いはそれに近い回転速度にすることを意味する。また、低速とは、回転速度がゼロ、つまり停止していることを含む。
【０１１７】
図１０は、管理端末１０５の論理的な構成の一例を示す。
【０１１８】
管理端末１０５のＣＰＵでは、例えば、管理部２５１が実行される。管理部２５１は、ストレージシステム１０７の管理を行うためのコンピュータプログラムであり、電力許容値設定部２５３、消費電力値管理部２５５、ＩＯパフォーマンス管理部２５７及び表示制御部２５８を有する。
【０１１９】
電力許容値設定部２５３は、電力許容値をストレージシステム１０７に設定するためのプログラムモジュールである。電力許容値設定部２５３は、例えば、ＧＵＩ（グラフィカルユーザインタフェース）を表示し、ＧＵＩを介して、管理者から電力許容値を受付ける。管理者は、節電重視かパフォーマンス重視かに応じた電力許容値を入力することができる。電力許容値設定部２５３は、管理者から入力された電力許容値を、ストレージシステム１０７に送信する。それにより、基本筐体１０１のメモリ２３１に、電力許容値テーブル１６３が記憶される。なお、電力許容値は、所定単位（ストレージシステム、各筐体）で受け付けることができる。また、電力許容値設定部２５３は、受け付けた電力許容値を表すテーブル２５９（図１１参照）を、管理端末１０５内の記憶資源（例えばメモリ）に記憶させることができる。また、電力許容値設定部２５３は、時間帯別、或いは用途別に、電力許容値を受け付けることができ、時間帯別、或いは用途別の電力許容値をストレージシステム１０７に設定することができる。ここで、時間帯別とは、どの時間帯でどの電力許容値を参照するかを表す。また、用途別とは、どんな用途（例えば、筐体間でのコピー、或いは筐体内でのコピー）の場合にどんな電力許容値を参照するかを表す。基本筐体１０１内のＣＰＵ１０９は、電力許容値を参照する場合、参照する現在日時、或いは実行する処理（用途）に応じた電力許容値を参照することができる。
【０１２０】
ＩＯパフォーマンス管理部２５７は、ストレージシステム１０７から、ＩＯパフォーマンスを取得し、その取得したＩＯパフォーマンスを、管理端末１０５内の記憶資源に記憶させる。ここで、ＩＯパフォーマンスとは、ＩＯ処理数の履歴（例えば、各時間帯でのＩＯ処理数）を表す。ストレージシステムのＩＯ処理制御部２０３は、ＩＯ処理数の履歴をメモリ２１３に記録することができる。
【０１２１】
消費電力値管理部２５５は、各時点で算出された消費電力値をストレージシステム１０７から取得し、取得した各時点の消費電力値を管理端末１０５内の記憶資源に記憶させる。
【０１２２】
表示制御部２５８は、その記憶資源から、現在の消費電力値や、これまでの消費電力値のうちの最高値及び最低値を特定し、特定した値を表示することができる。また、消費電力値管理部２５５は、ＩＯパフォーマンスと各時点の消費電力値との関係を表示することができる。具体的には、例えば、消費電力値管理部２５５は、各時間帯毎のＩＯ処理数の変化を表したグラフと、同各時間帯における消費電力値の変化を表したグラフとを、同じ表示領域（例えば縦軸と横軸とが共通にされた領域）上に重ねて表示することができる。これにより、管理者は、ＩＯパフォーマンスと消費電力値との関係を一目で把握することができる。
【０１２３】
以上が、本実施形態についての説明である。
【０１２４】
この実施形態によれば、消費電力値が電力許容値を超えない範囲で、ＩＯ処理制御、キャッシュ制御及びディスク制御の各々が解除される。これにより、省電力とパフォーマンスの両立が図れる。
【０１２５】
さて、本実施形態では、幾つかの変形例が考えられる。以下、本実施形態の幾つかの変形例を説明する。その際、上述した実施形態との相違点を主に説明し、上述した実施形態との共通点については、説明を省略或いは簡略する。
【０１２６】
＜第一変形例＞。
【０１２７】
図１２に例示するように、一つの筐体内に、複数のドライブグループとして、Ａ乃至Ｄがあり、各ドライブグループ単位で、ディスク回転速度が制御される。図１２において、カッコ内の数値は、回転速度、すなわち、単位時間当たりの回転数である。図１２の例では、ドライブグループＡは、通常回転速度であり、他のグループは、低速である。そのうち、ドライブグループＣが最も高速（低回転１とする）であり、次いで、ドライブグループＤが高速（低回転２とする）であり、ドライブグループＢが、最も低速（停止とする）である。ちなみに、図１３は、ディスクググループＡ及びＢが第一の筐体にあり、ドライブグループＣ及びＤが第二の筐体にあることを示す。つまり、この第一変形例は、制御対象の複数のドライブグループが一つの筐体内にあっても良いし複数の筐体に存在していてもよい。
【０１２８】
電力監視制御部２０１及びドライブ制御部２０７のうちの少なくとも一方（以下、電力監視制御部２０１を例に採る）が、以下の処理を実行することができる。
【０１２９】
（１）消費電力値が電力許容値に対して余裕が無い場合（例えば消費電力値が電力許容値を超えている場合）。
【０１３０】
電力監視制御部２０１は、各ドライブグループＡ、Ｂ、Ｃ及びＤのアクセス頻度や最近のアクセス日時を確認する。また、電力監視制御部２０１は、消費電力値を電力許容値に対して余裕を出すために、全体としてディスク回転速度どれだけ減らせば良いかを、消費電力値ルールを基に計算する。そして、電力監視制御部２０１は、算出されたディスク回転速度を、ドライブグループに割り振る。
【０１３１】
具体的には、例えば、電力監視制御部２０１は、ドライブグループＡのアクセス頻度が少ない（例えば所定値以下）場合には、ドライブグループＡのディスク回転速度を、より低速（例えば、低回転１、低回転２及び停止のいずれか）にする。また、例えば、電力監視制御部２０１は、ドライブグループＣのアクセス頻度が少ない場合には、ドライブグループＣのディスク回転速度を、より低速（例えば、低回転２及び停止のいずれか）にする。また、例えば、電力監視制御部２０１は、ドライブグループＤのアクセス頻度が少ない場合には、ドライブグループＤのディスク回転速度を、より低速（例えば、さらに低回転及び停止のいずれか）にする。なお、ディスグループＣ又はＤをより低速にする場合、電力監視制御部２０１は、ドライブグループＣ及びＤのうちの少なくとも一方のデータを、通常回転速度のドライブグループＡの空き領域に移動し、移動元のドライブグループの回転速度を、計算により算出された分だけ減らすことができる。この場合、どのデータをどのディスクに移動したかを所定の管理テーブルに記録し、もし、移動元のディスクに対するアクセスが発生した場合には、その管理テーブルから、移動先の場所を特定し、特定した場所にアクセスするようにすることができる。
【０１３２】
（２）消費電力値が電力許容値に対して余裕がある場合（例えば、消費電力値が電力許容値以下であり、消費電力値と電力許容値との差が所定値以上である場合）。
【０１３３】
電力監視制御部２０１は、各ドライブグループＡ、Ｂ、Ｃ及びＤのアクセス頻度や最近のアクセス日時を確認する。また、電力監視制御部２０１は、消費電力値を電力許容値の範囲内で高めてパフォーマンスを向上させるために、全体としてディスク回転速度どれだけ速めることができるかを、消費電力値ルールを基に計算する。そして、電力監視制御部２０１は、算出されたディスク回転速度を、ドライブグループに割り振る。
【０１３４】
具体的には、例えば、電力監視制御部２０１は、ドライブグループＢにアクセスがある場合には、ドライブグループＢのディスク回転速度を、より高速（例えば、低回転１、低回転２及び通常回転速度のいずれか）にする。また、例えば、電力監視制御部２０１は、ドライブグループＣにアクセスがある場合には、ドライブグループＣのディスク回転速度を、より高速（例えば、通常回転速度）にする。また、例えば、電力監視制御部２０１は、ドライブグループＤにアクセスがある場合には、ドライブグループＤのディスク回転速度を、より高速（例えば、低回転１及び通常回転速度のいずれか）にする。また、例えば、電力監視制御部２０１は、消費電力値と許容電力値との差分によっては、ドライブグループＢ乃至Ｄのいずれも通常回転速度にすることができる。なお、ディスグループＢ、Ｃ及びＤのいずれかのデータをディスグループＡに移動させており、そのデータの移動元のディスクを通常回転速度にする場合、電力監視制御部２０１は、そのデータを、ドライブグループＡから他のドライブグループＢ、Ｃ又はＤに戻すことができる。
【０１３５】
＜第二変形例＞。
【０１３６】
図１４は、本発明の一実施形態の第二変形例で行われる処理の一例を示す。この処理は、ＩＯ処理制御部２０３、キャッシュ制御部２０５及びドライブ制御部２０７を含んだＩＯ制御部（他の変形例でもこのように呼ぶ場合がある）が行う処理の一変形例である。なお、この図１４は、ＩＯコマンドがリードコマンドである場合を例にとった図であるが、ライトコマンドの場合にも応用することができる。
【０１３７】
ＩＯ制御部は、ホスト計算機１０３からのＩＯコマンドを解析し（Ｓ１０１）、ＩＯコマンドに従うリードデータがどこにあるかを特定する（Ｓ１０２）。
【０１３８】
ＩＯ制御部は、算出された消費電力値と電力許容値とを比較し、消費電力値が電力許容値に対して余裕があれば（Ｓ１０３でＹＥＳ）、リードデータがキャッシュメモリ或いは通常回転速度のディスクドライブにあるか否かを判断し（Ｓ１０４）、あれば（Ｓ１０４でＹＥＳ）、リードデータをそこから読み出す（Ｓ１０５）。なければ（Ｓ１０４でＮＯ）、ＩＯ制御部は、リードデータの格納されているディスクドライブの回転速度を確認し（Ｓ１１５）、その回転速度が低速であれば、その回転速度を上げても消費電力値が電力許容値を超えないか否かを判断する（Ｓ１１６）。Ｓ１１６では、具体的には、例えば、ＩＯ制御部は、回転速度を上げたことにより増加すると予測される消費電力値（例えば、回転速度を上げる前の消費電力値に、回転速度を上げることによる消費電力値の増加分を加算した値）が、電力許容値を超えないか否かを判断する。超えないと判断した場合、ＩＯ制御部は、そのディスクドライブを通常回転速度に戻した後、そのディスクドライブからリードデータを取得する（Ｓ１１７）。
【０１３９】
Ｓ１１６において、超えると判断した場合（Ｓ１１６でＮＯ）、或いは、Ｓ１０３において、消費電力値は電力許容値に対して余裕なしと判断した場合（Ｓ１０３でＮＯ）、Ｓ１０７が行われる。
【０１４０】
Ｓ１０７では、ＩＯ制御部は、ＩＯ処理の遅延が可能か否かを判断し、不可能と判断した場合（Ｓ１０７でＮＯ）、キャッシュ制御が可能か否かを判断し（Ｓ１０９）、可能であると判断したならば（Ｓ１０９でＹＥＳ）、キャッシュ制御を実行する（Ｓ１１０）。Ｓ１０９で不可能であると判断したならば（Ｓ１０９でＮＯ）、Ｓ１１２が行われる。
【０１４１】
Ｓ１０７で、可能であれば（Ｓ１０７でＹＥＳ）、ＩＯ制御部は、ＩＯ処理制御を実行する（Ｓ１０８）。
【０１４２】
Ｓ１０８又はＳ１１０の後、ＩＯ制御部は、消費電力値が電力許容範囲を超えていれば（Ｓ１１１でＮＯ）、アクセス頻度が低く且つ最近アクセスの無い全てのディスクドライブの回転速度を下げ（Ｓ１１２）、その結果、消費電力値が電力許容範囲に余裕ができたら（Ｓ１１３でＹＥＳ）、アクセス頻度や最近のアクセスの有無に応じて、消費電力値が電力許容値を超えない範囲で、低速にしたディスクドライブのディスク回転速度を上げる（Ｓ１１４）。
【０１４３】
＜第三変形例＞。
【０１４４】
第三実施例では、図１５に示すように、基本筐体１０１内のドライブグループＡ、Ｂが通常回転速度とされており、増設筐体１３１内のドライブグループＣ、Ｄが、低速とされている。
【０１４５】
この第三変形例では、低速のディスクドライブにアクセスする際、以下のような制御が行われる。
【０１４６】
ＩＯコマンドが、ディスグループＣのディスクドライブにライトデータをライトすることのコマンドであった場合、ＩＯ制御部は、ディスグループＣのディスクドライブの回転速度やキャッシュメモリの状態を確認する。
【０１４７】
そのディスクドライブが停止でキャッシュメモリが満杯であったことを特定した場合、ＩＯ制御部は、通常回転速度のドライブグループＡ又はＢにライトデータを一時的に格納し、ホスト計算機１０３に完了報告を送る。
【０１４８】
ＩＯ制御部は、ドライブグループＣが起動した（通常回転速度になった）ことを検出した場合、ドライブグループＡ又はＢから、一時的に格納したデータを読出し、読み出したデータを、起動したドライブグループＣに書く。
【０１４９】
以上が、低速ドライブにアクセスする場合の制御の一例である。
【０１５０】
また、この第三変形例では、以下のようなキャッシュデステージ制御を行うことができる。
【０１５１】
ＩＯ制御部は、キャッシュメモリが満杯であったことを特定した場合、キャッシュメモリに存在するデータのうち、アクセス頻度が低く（例えば所定値以下であり）且つ旧い（例えば、更新日時が現在日時よりも所定期間以上前である）データを特定し、且つ、特定したデータの格納場所（デステージ先）を判別する。これは、例えば、キャッシュ制御テーブル２１５を参照することにより行うことができる。
【０１５２】
ＩＯ制御部は、特定された格納場所がドライブグループＡとＤである場合、ドライブグループＡ及びＤのそれぞれの回転速度を確認する。その結果、ＩＯ制御部は、より高速なドライブグループ、例えば、通常回転速度であるドライブグループＡにデータを格納することを優先する。つまり、ＩＯ制御部は、ドライブグループＡが格納場所であるデータを優先的にデステージする。
【０１５３】
その際、ＩＯ制御部は、消費電力値と電力許容値とを比較し、消費電力値が電力許容値に対して余裕があれば、ドライブグループＡにデータをデステージし終える前に、ドライブグループＤの回転速度を通常回転速度に制御し、ドライブグループＡのデータのデステージ完了後に、ドライブグループＤのデータをデステージしてもよい。また、ＩＯ制御部は、ドライブグループＤのデータを一時的にドライブグループＡにデステージし、後で（例えば、ドライブグループＤの回転速度が通常回転速度になった後に）、そのデータをドライブグループＡからドライブグループＤに移動させてもよい。
【０１５４】
以上のように、ＩＯ制御部は、低速のディスクドライブのアクセスの場合には、データのアクセス順番を最適化する制御を行うことができる。
【０１５５】
＜第四変形例＞。
【０１５６】
第四変形例では、ストレージシステムの立ち上げ時、筐体及び／又はディスクドライブの増設時及び／又は減設時、ディスクドライブの閉塞時に、種々の処理を実行することができる。
【０１５７】
図１６は、ストレージシステムの立ち上げ時に行われる処理の流れの一例を示す。
【０１５８】
電力監視制御部２０１は、各電流監視部１１１、１３１から各電流値を取得する（Ｓ２０１）。
【０１５９】
電力監視制御部２０１は、基本筐体１０１及び増設筐体１３１の各々について、搭載されているディスクドライブの数や、そのディスクドライブが回転速度制御可能か否かの判断を行う（Ｓ２０２）。ディスクドライブの搭載されている数は、例えば、ディスクドライブが接続される各ポートに信号を出し応答の有無により判断することができる。ディスクドライブが回転速度制御可能か否かは、例えば、ディスクドライブに問合せを出しその応答としてディスクドライブ属性（例えば、ディスクドライブのベンダ、種類など）を受信し、そのディスクドライブ属性から判断することができる。ディスクドライブ属性には、回転速度制御可能か否かを表す情報が含まれていても良いし、それが含まれていない場合には、回転速度制御可能なディスクドライブの属性を記録したテーブルを参照し、そのテーブルと、受信したディスクドライブ属性とを基に、回転速度制御可能か否かを判断してもよい。
【０１６０】
電力監視制御部２０１は、回転速度制御可能なディスクドライブを特定した場合には、そのディスクドライブに対し、或る回転速度で回転することを指示し、且つ、電流値を監視する（Ｓ２０３）。つまり、指示した回転速度で回転することによる電流値の変化を監視する。
【０１６１】
同様に、電力監視制御部２０１は、ディスクドライブにダミーのアクセス指示を出し、且つ、電流値を監視する（Ｓ２０４）。そのアクセス指示は、アクセス範囲を指定した指示、換言すれば、ディスクドライブにおけるシーク量を或る量に指定したアクセス指示である。つまり、電力監視制御部２０１は、指示したシーク量でシークすることによる電流値の変化を監視する。
【０１６２】
電力監視制御部２０１は、特定された電流値の変化量を、回転速度及びシーク量別にパラメータとしてメモリ２３１に記憶させることができる（Ｓ２０５）。電力監視制御部２０１は、その電流値の変化量と電圧値とを乗算することにより、回転速度及びシーク量に応じた消費電力値を算出し、算出した消費電力値を消費電力値ルールとしてメモリ２３１に記憶することができる。
【０１６３】
図１７は、ディスクドライブの増設時に行われる処理の流れの一例を示す。
【０１６４】
電力監視制御部２０１は、増設されたディスクドライブの情報をそのディスクドライブに所定の問合せを送ることで取得し、且つ、ディスクドライブ増設による電流値の増加分を、増設直前の電流値と、増設直後に取得された電流値との差分を算出することで取得する（Ｓ２５１）。
【０１６５】
電力監視制御部２０１は、増設されたディスクドライブを起動する前に、現時点の消費電力値を計算し、その消費電量値と電力許容値とを基に、省電力とパフォーマンスの両立を最適化するための制御、すなわち、ＩＯ処理制御又は解除、キャッシュ制御又は解除、ドライブ制御又は解除を行う（Ｓ２５２）。
【０１６６】
Ｓ２５２の後、電力監視制御部２０１は、増設されたディスクドライブを起動し（Ｓ２５３）、増設ディスクドライブの起動による電流値の増加分を、起動直前の電流値と、起動直後に取得された電流値との差分を算出することで取得する（Ｓ２５４）。なお、このＳ２５４は、例えば、実際に起動した状態での電流値を取得するために行うことができる。これは、後述のＳ３０４についても同様である。
【０１６７】
図１８は、ディスクドライブを搭載した増設筐体の増設時に行われる処理の流れの一例を示す。
【０１６８】
電力監視制御部２０１は、増設された増設筐体内のディスクドライブの情報をそのディスクドライブに所定の問合せを送ることで取得し、且つ、そのような増設筐体の増設による電流値の増加分を、増設直前の電流値と、増設直後に取得された電流値との差分を算出することで取得する（Ｓ３０１）。
【０１６９】
電力監視制御部２０１は、増設された増設筐体内のディスクドライブを起動する前に、現時点の消費電力値を計算し、その消費電量値と電力許容値とを基に、省電力とパフォーマンスの両立を最適化するための制御、すなわち、ＩＯ処理制御又は解除、キャッシュ制御又は解除、ドライブ制御又は解除を行う（Ｓ３０２）。
【０１７０】
Ｓ３０２の後、電力監視制御部２０１は、増設筐体内のディスクドライブを起動し（Ｓ３０３）、増設筐体内のディスクドライブの起動による電流値の増加分を、起動直前の電流値と、起動直後に取得された電流値との差分を算出することで取得する（Ｓ３０４）。
【０１７１】
図１９は、ディスクドライブの減設時に行われる処理の流れの一例を示す。
【０１７２】
電力監視制御部２０１は、減設されたディスクドライブの情報をそのディスクドライブに所定の問合せを送ることで取得し、且つ、少なくとも、減設されたディスクドライブを有する筐体内の電流監視部から減設後の電流値を取得する（Ｓ３５１）。
【０１７３】
電力監視制御部２０１は、取得した電流値から減設後の消費電力値を計算し、減設後の消費電力値と減設前の消費電力値との差分を分配する（Ｓ３５２）。すなわち、電力監視制御部２０１は、減設後の消費電力値と電力許容値とを基に、省電力とパフォーマンスの両立を最適化するための制御、すなわち、ＩＯ処理制御又は解除、キャッシュ制御又は解除、ドライブ制御又は解除を行う。
【０１７４】
図２０は、ディスクドライブの閉塞時に行われる処理の流れの一例を示す。
【０１７５】
電力監視制御部２０１は、閉塞されたディスクドライブの情報を取得し、且つ、少なくとも、閉塞されたディスクドライブを有する筐体の電流監視部から電流値を取得する（Ｓ４０１）。
【０１７６】
電力監視制御部２０１は、必要な情報を採取し、閉塞したディスクドライブの回転を停止させる（Ｓ４０２）。ここで、必要な情報とは、例えば、ディスクドライブの閉塞に関わる障害に関する情報である。また、ディスクドライブが閉塞しても、回転を停止させられるとは限らない。本実施形態において、「閉塞」とは、稼動状態とされないことを意味し、それは、ディスクが回転しているか否かに関わらない。
【０１７７】
電力監視制御部２０１は、閉塞されたディスクドライブの筐体の消費電力値を算出し、閉塞後の消費電力値と閉塞前の消費電力値との差分を分配する（Ｓ４０３）。すなわち、電力監視制御部２０１は、閉塞後の消費電力値と電力許容値とを基に、省電力とパフォーマンスの両立を最適化するための制御、すなわち、ＩＯ処理制御又は解除、キャッシュ制御又は解除、ドライブ制御又は解除を行う。
【０１７８】
以上、本発明の実施形態及び幾つかの変形例を説明したが、これらの実施形態及び変形例は本発明の説明のための例示にすぎず、本発明の範囲をそれらの実施形態及び変形例にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。
【０１７９】
例えば、ディスクドライブ１２７，１５７は、フラッシュメモリ等の他種の記憶装置であってもよい。例えば、フラッシュメモリの場合、回転開始と回転停止を、電源オンと電源オフと読み替えても良い。
【０１８０】
また、メインコントローラ１１７の上述した構成は一例であり、他の構成を採用することもできる。例えば、メインコントローラ１１７は、上記の構成に代えて、上位装置（例えば、ホスト計算機や他のストレージシステム）との通信を制御する一以上の第一の制御回路基盤と、記憶装置との通信を制御する一以上の第二の制御回路基盤と、上位装置と記憶装置との間で授受されるデータを記憶することができるキャッシュメモリと、ストレージシステム１０７を制御するためのデータを記憶することができる制御メモリと、各第一の制御回路基盤、各第二の制御回路基盤、キャッシュメモリ及び制御メモリを接続する接続部（例えば、クロスバスイッチなどのスイッチ）とを備えることができる。各制御回路基盤は、少なくとも一つのマイクロプロセッサを備えることができる。この場合、第一の制御回路基盤と第二の制御回路基盤の一方が、又は双方が協働して、メインコントローラ１１７としての処理を行うことができる。制御メモリは無くても良く、その場合、キャッシュメモリに、制御メモリが記憶する情報を記憶する領域が設けられても良い。
【０１８１】
また、例えば、各筐体では、電源ユニットから各負荷に印加される電圧を測定する電圧監視部が備えられても良い。電力監視制御部２０１は、各筐体の電圧監視部から、測定された電圧値を取得し、取得された電圧値と、電流監視部から取得された電流値とを乗算することにより、消費電力値を算出してもよい。
【０１８２】
また、例えば、各電源ユニットから印加される電圧値が一定であれば、消費電力値を算出することなく電流値を用いて上述した制御が行なわれても良い。
【０１８３】
また、例えば、消費電力値と電力許容値とに基づいて、ファンの制御（例えば、電源オンやオフ、或いは回転速度）など、他の負荷の制御が行われても良い。
【図面の簡単な説明】
【０１８４】
【図１】図１は、本発明の一実施形態に係るストレージシステムの構成例を示した図である。
【図２】図２は、メインコントローラ１１７及びサブコントローラ１４７のそれぞれの内部構成と、ホスト計算機１０３からのＩＯコマンドに従って書き込み又は読出されるデータの流れとを示す。
【図３】図３は、本実施形態の特徴の概要の説明図である。
【図４】図４は、ＣＰＵ１１９により実行される処理の説明図である。
【図５】図５は、電力許容値テーブル１６３の構成例を示す。
【図６】図６は、電力監視制御部２０１が行う処理の流れの一例を示す。
【図７】図７は、ＩＯ処理制御部２０３が行う処理の流れの一例を示す。
【図８】図８は、キャッシュ制御部２０５が行う処理の流れの一例を示す。
【図９】図９は、ドライブ制御部２０７が行う処理の流れの一例を示す。
【図１０】図１０は、管理端末１０５の論理的な構成の一例を示す。
【図１１】図１１は、管理端末１０５が記憶可能な電力許容値テーブル２５９の構成例を示す。
【図１２】図１２は、本発明の一実施形態の第一変形例において、複数のドライブグループが一つの筐体内に存在することの一例を示す。
【図１３】図１３は、本発明の一実施形態の第一変形例において、複数のドライブグループが複数の筐体に存在することの一例を示す。
【図１４】図１４は、本発明の一実施形態の第二変形例で行われる処理の一例を示す。
【図１５】図１５は、本発明の一実施形態の第三変形例において、基本筐体に存在するディスクグループが通常回転速度であり、増設筐体に存在するディスクグループが低速であることの一例を示す。
【図１６】図１６は、本発明の一実施形態の第四変形例において、ストレージシステムの立ち上げ時に行われる処理の流れの一例を示す。
【図１７】図１７は、本発明の一実施形態の第四変形例において、ディスクドライブの増設時に行われる処理の流れの一例を示す。
【図１８】図１８は、本発明の一実施形態の第四変形例において、ディスクドライブを搭載した増設筐体の増設時に行われる処理の流れの一例を示す。
【図１９】図１９は、本発明の一実施形態の第四変形例において、ディスクドライブの減設時に行われる処理の流れの一例を示す。
【図２０】図２０は、本発明の一実施形態の第四変形例において、ディスクドライブの閉塞時に行われる処理の流れの一例を示す。
【符号の説明】
【０１８５】
１０１…基本筐体  １０３…ホスト計算機  １０５…管理端末  １０７…ストレージシステム  １０９，１３９…電源ユニット  １１１，１４１…電流監視部  １１５，１４５…バックボード、１１７…メインコントローラ  １２７，１５７…ディスクドライブ  １２９，１５９…ファン  １４７…サブコントローラ
【図１】
2008003719.tif 000003
【図２】
2008003719.tif 000004
【図３】
2008003719.tif 000005
【図４】
2008003719.tif 000006
【図５】
2008003719.tif 000007
【図６】
2008003719.tif 000008
【図７】
2008003719.tif 000009
【図８】
2008003719.tif 000010
【図９】
2008003719.tif 000011
【図１０】
2008003719.tif 000012
【図１１】
2008003719.tif 000013
【図１２】
2008003719.tif 000014
【図１３】
2008003719.tif 000015
【図１４】
2008003719.tif 000016
【図１５】
2008003719.tif 000017
【図１６】
2008003719.tif 000018
【図１７】
2008003719.tif 000019
【図１８】
2008003719.tif 000020
【図１９】
2008003719.tif 000021
【図２０】
2008003719.tif 000022