(57)【要約】【課題】プライマリストレージのようなアクセス頻度の低いデータを分類して格納することが困難なストレージ装置に対して性能を落とさずに省電力化を図る。【解決手段】通常動作状態で運用される動作状態記憶媒体と、通常停止状態で運用される停止状態記憶媒体と、不揮発キャッシュと、停止状態記憶媒体へ第１のデータの書き込み要求が生じた場合、第１のデータを一旦不揮発キャッシュに保持し、第１のデータが一定以上のアクセス頻度を有するデータである場合には、第１のデータの格納場所を停止状態記憶媒体から動作状態記憶媒体に変更し、不揮発キャッシュに保持された第１のデータを動作状態記憶媒体に書き込むように制御する制御部と、を備える。【選択図】図１
2012164136.tif 000002
【特許請求の範囲】
【請求項１】
通常動作状態で運用される動作状態記憶媒体と、通常停止状態で運用され、アクセスが必要になったときに動作状態に切り替え、アクセスが終了すると停止状態に戻る停止状態記憶媒体と、を含む複数の記憶媒体と、
不揮発キャッシュと、
前記停止状態記憶媒体へ第１のデータの書き込み要求が生じた場合、前記第１のデータを一旦前記不揮発キャッシュに保持し、前記第１のデータが一定以上のアクセス頻度を有するデータである場合には、前記第１のデータの格納場所を前記停止状態記憶媒体から前記動作状態記憶媒体に変更し、前記不揮発キャッシュに保持された前記第１のデータを前記格納場所が変更された前記動作状態記憶媒体に書き込むように制御する制御部と、
を備えることを特徴とするストレージ装置。
【請求項２】
前記制御部は、前記第１のデータが前記一定以上のアクセス頻度を有しないデータである場合には、所定のタイミングで前記停止状態記憶媒体を動作状態に切り替え、前記不揮発キャッシュに保持された前記第１のデータを前記動作状態に切り替わった停止状態記憶媒体に書き込み、書き込みが終わった後に当該停止状態記憶媒体を停止状態に戻すことを特徴とする請求項１記載のストレージ装置。
【請求項３】
前記制御部は、
外部から与えられたデータアクセス要求に基づいて、前記複数の記憶媒体、又は、前記不揮発キャッシュのいずれかへのアクセスを制御するコマンド実行制御部と、
前記不揮発キャッシュの状態を監視し、不揮発キャッシュの容量が不足した場合、又は、予め設定した時間に前記不揮発キャッシュのデータに基づいて、前記記憶媒体に格納されたデータの更新を制御するデータ更新制御部と、
を備えることを特徴とする請求項１又は２記載のストレージ装置。
【請求項４】
前記制御部は、仮想アドレスを前記複数の記憶媒体のうち、いずれかの記憶媒体の物理アドレスに変換するマッピングテーブルを有するアドレス変換部をさらに備え、
前記アドレス変換部が前記マッピングテーブルに含まれる前記第１のデータの格納先を停止状態記憶媒体の物理アドレスから前記動作状態記憶媒体の物理アドレスに書き換えることにより、
前記制御部は、前記不揮発キャッシュが保持する前記第１のデータを前記停止状態記憶媒体に替えて、前記動作状態記憶媒体に書き込むように制御することを特徴とする請求項１乃至３いずれか１項記載のストレージ装置。
【請求項５】
前記複数の記憶媒体の各領域へのアクセス頻度を記録し、動作状態記憶媒体の各領域に対するアクセス頻度のうち、一定以上のアクセス頻度の領域のデータがすべて不揮発キャッシュに存在する場合、当該動作状態記憶媒体を停止状態記憶媒体に変更することを特徴とする請求項１乃至４いずれか１項記載のストレージ装置。
【請求項６】
前記マッピングテーブルは、前記複数の記憶媒体の各領域へのアクセス頻度を記憶するアクセス頻度情報を含み、
前記アクセス頻度情報に基づいて、一定以上のアクセス頻度の領域のデータがすべて不揮発キャッシュに存在する場合、前記動作状態記憶媒体を前記停止状態記憶媒体に変更することを特徴とする請求項４記載のストレージ装置。
【請求項７】
前記複数の記憶媒体は、第１の記憶媒体と、前記第１の記憶媒体の冗長データを記憶する第２の記憶媒体と、を含み、
前記第２の記憶媒体は、前記停止状態記憶媒体であって、
前記制御部は、前記第２の記憶媒体に冗長データを書き込む必要が生じた場合、前記冗長データを一旦前記不揮発キャッシュに書き込み、前記第２の記憶媒体を動作状態に切り替えてから前記不揮発キャッシュに書き込まれた前記冗長データを前記第２の記憶媒体に書き込むように制御することを特徴とする請求項１乃至６いずれか１項記載のストレージ装置。
【請求項８】
前記複数の記憶媒体はそれぞれディスク装置であり、前記動作状態はディスクが回転している状態であることを特徴とする請求項１乃至７いずれか１項記載のストレージ装置。
【請求項９】
通常動作状態で運用される動作状態記憶媒体と、通常停止状態で運用され、アクセスが必要になったときに動作状態に切り替え、アクセスが終了すると停止状態に戻る停止状態記憶媒体と、を含む複数の記憶媒体と、
不揮発キャッシュと、
を備えるストレージ装置を制御する処理をコンピュータに実行させるプログラムであって、
前記停止状態記憶媒体へ第１のデータの書き込み要求が生じた場合、前記第１のデータを一旦前記不揮発キャッシュに保持する処理と、
前記第１のデータについてアクセス頻度を判断し、前記第１のデータが一定以上のアクセス頻度を有するデータである場合には、前記第１のデータの格納場所を前記停止状態記憶媒体から前記動作状態記憶媒体に変更する処理と、
前記不揮発キャッシュに保持された前記第１のデータを前記格納場所が変更された前記動作状態記憶媒体に書き込む処理と、
を前記コンピュータに実行させることを特徴とするプログラム。
【請求項１０】
通常動作状態で運用される動作状態記憶媒体と、通常停止状態で運用され、アクセスが必要になったときに動作状態に切り替え、アクセスが終了すると停止状態に戻る停止状態記憶媒体と、を含む複数の記憶媒体と、
不揮発キャッシュと、
を備えるストレージ装置の制御方法であって、
前記停止状態記憶媒体へ第１のデータの書き込み要求が生じた場合、前記第１のデータを前記不揮発キャッシュに保持するステップと、
前記第１のデータについてアクセス頻度を判断し、前記第１のデータが一定以上のアクセス頻度を有するデータである場合には、前記第１のデータの格納場所を前記停止状態記憶媒体から前記動作状態記憶媒体に変更するステップと、
前記不揮発キャッシュに保持された前記第１のデータを前記格納場所が変更された前記動作状態記憶媒体に書き込むステップと、
を備えることを特徴とするストレージ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の記憶媒体を有するストレージ装置、ストレージ装置の制御プログラム、及びストレージ装置の制御方法に関する。特に、一部の記憶媒体を停止した状態で運用することで、消費電力を削減するとともに、停止することによるストレージ装置のアクセス性能の低下を抑制する機能を備えたストレージ装置、ストレージ装置を制御する処理をコンピュータに実行させるプログラム、及びストレージ装置の制御方法に関する。
【背景技術】
【０００２】
昨今の情報通信技術の進化とその適用分野の拡大に伴い、情報処理システムが扱うデータ量、及びデータに対する要求の即時性が日々増加している。そのためこれらのデータを格納するためのストレージ装置について、同時に大容量のデータを短時間で処理するためにアクセス性能の高速化が図られている。
【０００３】
また昨今ではストレージ装置を含めた多数の情報通信機器をデータセンターに集約して大規模なシステムとして運用する機会が増加している。このようなデータセンター環境では、一般的に設置場所の広さに比例した運用費用を要する。そのためシステム全体の運用コストの削減を目的としてストレージ装置、ストレージシステムの高密度化が図られている。
【０００４】
一方でストレージ装置を含めた情報通信機器に対する省電力化への要求が拡大している。第一の理由は、データセンター等の機器が集約した設置場所における消費電力、発熱の制約である。ストレージ装置の消費電力の増加により、運用時にかかる電気料金が増加する。またデータセンターで情報通信機器が納められるラックは、一般的に全体で許容可能な消費電力の上限が定められている。各装置、機器の消費電力がラックの消費電力の上限を超えた場合、ラック全体の消費電力が許容量に収まるように複数のラックに分離して設置することで設置面積の増大、及び装置、機器の設置コスト増につながる。さらに、消費電力の増加は多くの場合発熱量の増加につながる。そのため消費電力の増加によりデータセンターの空調コストが増加する。これらのコスト増を回避するためにストレージ装置を含めた各装置、機器の消費電力を低減する必要がある。省電力化への要求拡大の第二の理由は、環境に対する社会的要求である。昨今では情報通信機器を利用する企業に対して環境への負荷の低減が求められている。その中で情報通信機器についても、電力消費量の削減を通じて電力生産時に生じる環境への負荷を低減することが求められている。
【０００５】
これらのストレージ装置に対する省電力化要求を満たすために、ストレージ装置を構成する記憶媒体に対する省電力化技術が存在する。このような省電力化技術の具体例として、まずＭＡＩＤ（Ｍａｓｓｉｖｅ  Ａｒｒａｙ  ｏｆ  Ｉｄｌｅ  Ｄｉｓｋｓ）が挙げられる。ＭＡＩＤは主に記憶媒体として、一般に広く用いられるＨＤＤを用いたストレージに対して適用される。電源が投入されたＨＤＤ（Ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ）は、アクセスが行われない間もデータを記録した円盤を内部で回転させ続けるために多くの電力を消費する。ＭＡＩＤではこの特性に着目してストレージ内のアクセスされない、またはアクセス頻度が低いＨＤＤを停止して電源投入時の電力消費を抑える。停止したＨＤＤに格納されたデータに対するアクセスを行う場合、ＨＤＤの電源を投入する必要があるためアクセス性能は大きく低下する。ＭＡＩＤではアクセス予定のないデータ、或いはアクセス頻度が低いデータを格納したＨＤＤに限定して停止することで性能低下を抑える。
【０００６】
またストレージを構成する記憶媒体として、消費電力が元々低い記憶媒体を使用することで省電力化を実現できる。近年ストレージを構成する記憶媒体として広く用いられるＨＤＤに代わり、フラッシュメモリを用いたＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）が普及し始めている。ＳＳＤはＨＤＤに比べてアクセス性能が高い点に加えて物理的な可動部分を持たないため、アクセスの有無に関わらず省電力である特性を持つ。そのため既存のストレージに含まれる記憶媒体をＨＤＤからＳＳＤにそのまま置き換えるだけでストレージの省電力化を達成できる。
【０００７】
また、特許文献１には、論理ボリュームに対するデータの読み出し要求又は書き込み要求を受信した時刻をＲＡＩＤへのアクセス時刻として記憶し、アクセス時刻が所定の時間を経過している場合、ＲＡＩＤグループの冗長性に応じた数のＨＤＤを節電モードとし、停止中のＨＤＤへの書き込みはＲＡＩＤとは別の異なる更新結果の書き込み用のＨＤＤに対して行うことで省電力化を達成するディスクアレイ装置が記載されている。
【０００８】
特許文献２には、ホストコンピュータから送信されるデータを格納するための論理デバイスをホストコンピュータに対して提供するストレージ装置であって、データを格納するためのフラッシュメモリと、データを格納するためのディスク状記憶デバイスと、フラッシュメモリ及びディスク状記憶デバイスを制御する制御部とを備え、制御部は、論理デバイスを、フラッシュメモリ及びディスク状記憶デバイスによる冗長構成とするように制御するストレージ装置が記載されている。
【０００９】
非特許文献１には、安価でそれほど信頼性の高くないディスク装置を複数用いた大容量で信頼性の高いディスクシステムであるＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）について記載されている。
【００１０】
さらに、本願発明者は、本願出願後に公開される予定である特願２０１０−１４８５８９号に以下の発明を開示した。すなわち、ストレージを構成する記憶媒体間のデータの冗長性を利用し、冗長分のデータを記録する記憶媒体を停止する。そして、データの読み出しは他の記憶媒体のみで行う。また、データの更新は、停止した記憶媒体より高速かつ省電力な記憶媒体を配置し、そちらに記録する。更新データは停止した記憶媒体を再起動した際にまとめて反映する。そのように処理することによりプライマリストレージのようにアクセス頻度の低いデータを分類して記録することが困難なストレージに対しても低コストで消費電力を低減したストレージ装置を提供する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００５−２２８２８８号公報
【特許文献２】特開２００８−９７２３７号公報
【非特許文献】
【００１２】
【非特許文献１】Ｐａｔｔｅｒｓｏｎ  ｅｔ  ａｌ．，  “Ａ  Ｃａｓｅ  ｆｏｒ  Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ  （ＲＡＩＤ）”，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １９８８  ＡＣＭ  ＳＩＧＭＯＤ  ｉｎｔｅｒｎａｔｉｏｎａｌ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｍａｎａｇｅｍｅｎｔ  ｏｆ  ｄａｔａ，  ｐｐ．  １０９−１１６
【発明の概要】
【発明が解決しようとする課題】
【００１３】
なお、上記各特許文献及び非特許文献の全開示内容はその引用をもって本書に繰込み記載する。
【００１４】
以下の分析は、本発明によって与えられたものである。ストレージ装置、システムのうち頻繁にアクセスされるデータを格納することを目的としたプライマリストレージは、特に高い性能を求められる。プライマリストレージでは、性能向上を目的として一般的に高回転のＨＤＤが記憶媒体に用いられる。高回転のＨＤＤは回転速度が通常のＨＤＤより高く高性能である代わりに、消費電力、発熱が通常のＨＤＤより大きい。また各記憶媒体の消費電力、発熱が大きいため、通常のＨＤＤを用いた場合に比べてストレージを同一筐体、同一システムに収める場合に電力、発熱の制約がより増大する。つまりプライマリストレージは性能面、電力、発熱の制約を伴う高密度化の面で特に厳しい要件を持つ。
【００１５】
しかしながらプライマリストレージに対するＭＡＩＤによる省電力化、またはＳＳＤのように省電力な記憶媒体の採用による省電力化の効果は限定的である。まずＭＡＩＤについて着目すると、ＭＡＩＤではアクセスが行われない、またはアクセス頻度の低いＨＤＤを停止することで省電力化を図る。これに対してプライマリストレージは、頻繁にアクセスされるデータのみを格納することを目的としている。つまりプライマリストレージ内の各データを格納するＨＤＤ全てに対して頻繁にアクセスが行われる。よってプライマリストレージＭＡＩＤによる停止対象のＨＤＤが存在せず、省電力化の効果は得られない。
【００１６】
一方ストレージ内でＳＳＤをＨＤＤの代わりに記憶媒体として採用する場合、省電力化と同時にストレージ全体のアクセス性能の向上を達成できる。またアクセス性能の向上により、ストレージ装置の台数がアクセス性能に依存している場合は装置の台数削減による高密度化が可能である。そのため記憶媒体としてＨＤＤを全てＳＳＤに置き換えることが可能であれば、高性能化、高密度化、省電力化の全てを達成するために有効である。しかし記憶媒体のＨＤＤからＳＳＤへの単純な置き換えはコスト的な理由により一般的に困難である。ＳＳＤはＨＤＤに比べて記憶容量が小さく、高価であるためＨＤＤの同容量のＳＳＤへの置き換えに要するコストが大きい。
【００１７】
つまりプライマリストレージのようにアクセス頻度の低いデータを分類して格納することが困難なストレージ装置に対して、従来の省電力化方法を用いて低コストで性能を落とさずに、高密度化、省電力化を図ることが不可能な点が問題である。そこでかかる問題を解消することが望まれる。
【課題を解決するための手段】
【００１８】
本発明の第１の視点によれば、通常動作状態で運用される動作状態記憶媒体と、通常停止状態で運用され、アクセスが必要になったときに動作状態に切り替え、アクセスが終了すると停止状態に戻る停止状態記憶媒体と、を含む複数の記憶媒体と、不揮発キャッシュと、前記停止状態記憶媒体へ第１のデータの書き込み要求が生じた場合、前記第１のデータを一旦前記不揮発キャッシュに保持し、前記第１のデータが一定以上のアクセス頻度を有するデータである場合には、前記第１のデータの格納場所を前記停止状態記憶媒体から前記動作状態記憶媒体に変更し、前記不揮発キャッシュに保持された前記第１のデータを前記格納場所が変更された前記動作状態記憶媒体に書き込むように制御する制御部と、
を備えるストレージ装置が提供される。
【００１９】
本発明の第２の視点によれば、通常動作状態で運用される動作状態記憶媒体と、通常停止状態で運用され、アクセスが必要になったときに動作状態に切り替え、アクセスが終了すると停止状態に戻る停止状態記憶媒体と、を含む複数の記憶媒体と、不揮発キャッシュと、を備えるストレージ装置を制御する処理をコンピュータに実行させるプログラムであって、前記停止状態記憶媒体へ第１のデータの書き込み要求が生じた場合、前記第１のデータを一旦前記不揮発キャッシュに保持する処理と、前記第１のデータについてアクセス頻度を判断し、前記第１のデータが一定以上のアクセス頻度を有するデータである場合には、前記第１のデータの格納場所を前記停止状態記憶媒体から前記動作状態記憶媒体に変更する処理と、前記不揮発キャッシュに保持された前記第１のデータを前記格納場所が変更された前記動作状態記憶媒体に書き込む処理と、を前記コンピュータに実行させるプログラムが提供される。
【００２０】
本発明の第３の視点によれば、通常動作状態で運用される動作状態記憶媒体と、通常停止状態で運用され、アクセスが必要になったときに動作状態に切り替え、アクセスが終了すると停止状態に戻る停止状態記憶媒体と、を含む複数の記憶媒体と、不揮発キャッシュと、を備えるストレージ装置の制御方法であって、前記停止状態記憶媒体へ第１のデータの書き込み要求が生じた場合、前記第１のデータを前記不揮発キャッシュに保持するステップと、前記第１のデータについてアクセス頻度を判断し、前記第１のデータが一定以上のアクセス頻度を有するデータである場合には、前記第１のデータの格納場所を前記停止状態記憶媒体から前記動作状態記憶媒体に変更するステップと、前記不揮発キャッシュに保持された前記第１のデータを前記格納場所が変更された前記動作状態記憶媒体に書き込むステップと、を備えるストレージ装置の制御方法が提供される。
【発明の効果】
【００２１】
本発明の各視点によれば、停止状態記憶媒体に書き込み要求があったデータのうち、一定以上のアクセス頻度のあるデータは、そのデータの格納場所を停止状態記憶媒体から動作状態記憶媒体に変更し、動作状態記憶媒体に書き込む。この間、停止状態記憶媒体を動作させる必要がないので、結果として、アクセス頻度の高いデータを停止状態記憶媒体から動作状態記憶媒体へ、停止状態記憶媒体を停止させたまま移動させることができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施形態によるストレージ装置全体のブロック図である。
【図２】ストレージシステム全体のシステム構成図である。
【図３】本発明の一実施形態におけるアクセス要求処理部のブロック図である。
【図４】本発明の一実施形態におけるコマンド実行部のブロック図である。
【図５】本発明の一実施形態におけるアクセス要求管理テーブルの構成図である。
【図６】本発明の一実施形態におけるコマンド管理テーブルの構成図である。
【図７】本発明の一実施形態における不揮発キャッシュ管理テーブルの構成図である。
【図８】本発明の一実施形態におけるマッピングテーブルの構成図である。
【図９】本発明の一実施形態において、ホストからストレージ装置に対するアクセス要求があった場合の全体処理フローチャートの前半である。
【図１０】図９に続く全体処理フローチャートの後半である。
【図１１】図１０におけるリードコマンドに対する処理の詳細フローチャートである。
【図１２】図１０におけるライトコマンドに対する処理の詳細フローチャートである。
【図１３】本発明の一実施形態において、コマンド実行部が不揮発キャッシュの空き領域を確保する処理の詳細フローチャートである。
【図１４】本発明の一実施形態において、コマンド実行部が不揮発キャッシュの更新データを記憶媒体に反映させる処理の詳細フローチャートである。
【図１５】実施例１におけるストレージ装置における各記憶媒体のアドレス空間と各領域との対応図である。
【図１６】実施例１におけるストレージ装置に対するホストからのアクセス要求の順番を示す図である。
【発明を実施するための形態】
【００２３】
本発明の実施形態の概要について説明する。なお、概要の説明において付記する図面参照符号は専ら理解を助けるための例示であり、図示の態様に限定することを意図するものではない。
【００２４】
一例を図１に示すように本発明の一実施形態のストレージ装置２は、通常動作状態で運用される動作状態記憶媒体２１１と、通常停止状態で運用され、アクセスが必要になったときに動作状態に切り替え、アクセスが終了すると停止状態に戻る停止状態記憶媒体２１２と、を含む複数の記憶媒体２１と、不揮発キャッシュ２２を備える。
【００２５】
多くのストレージ装置２では各記憶媒体（２１１、２１２）の容量全体を使用しておらず、格納されたデータのうちアクセスされるデータは全容量の一部である。また多くのストレージ装置２では、各記憶媒体（２１１、２１２）内に格納された各データへのアクセスに偏りを持つ。そのためストレージ装置２を構成する各記憶媒体（２１１、２１２）に格納される、一定以上の頻度でアクセスされるデータの容量に偏りが生じる。アクセス頻度の高いデータが小容量である場合、アクセス頻度の高いデータの全体若しくは大部分を不揮発キャッシュにキャッシュすることで、アクセス頻度の高いデータを記憶している記憶媒体が停止した状態でも、ストレージ装置からのデータのリードが可能である。同様にストレージ装置に対してデータのライトを行う場合も、更新されたデータを不揮発キャッシュに格納することで記憶媒体が停止した状態でもデータの更新が可能である。
【００２６】
さらに、本発明の一実施形態のストレージ装置２は、停止状態記憶媒体２１２へ第１のデータの書き込み要求が生じた場合、第１のデータを一旦不揮発キャッシュ２２に保持し、第１のデータが一定以上のアクセス頻度を有するデータである場合には、第１のデータの格納場所を停止状態記憶媒体２１２から動作状態記憶媒体２１１に変更し、不揮発キャッシュ２２に保持された第１のデータを格納場所が変更された動作状態記憶媒体２１１に書き込むように制御する制御部（２３、２４、２５、２６）を備える。
【００２７】
停止状態記憶媒体２１２への書き込み要求があった第１のデータを一旦不揮発キャッシュに保持し、第１のデータの格納場所を停止状態記憶媒体２１２から動作状態記憶媒体２１１に変更することにより停止状態記憶媒体２１２に格納されていた第１のデータについて、停止状態記憶媒体２１２を動作状態に切り替えることなく、停止状態を維持したまま、動作状態記憶媒体２１１に移動させることができる。すなわち、第１のデータがアクセス頻度の高いデータであったならば、停止状態記憶媒体２１２に在ったアクセス頻度の高いデータについて、書き込み要求が在ったときに不揮発キャッシュを利用して停止状態記憶媒体２１２から動作状態記憶媒体２１１に移動させることができるので、停止状態記憶媒体２１２はより長い時間停止状態を維持できるようになる。
【００２８】
なお、不揮発キャッシュ２２は、機能として電源が切断されたときにもデータを保持できるものであればよく、電源がバックアップされた揮発性半導体メモリ等を用いてもよい。
【００２９】
なお、本発明において、下記の形態が可能である。
［形態１］第１の視点のとおりである。
［形態２］制御部（２３、２４、２５、２６）は、第１のデータが一定以上のアクセス頻度を有しないデータである場合には、所定のタイミングで停止状態記憶媒体２１２を動作状態に切り替え、不揮発キャッシュ２２に保持された第１のデータを動作状態に切り替わった停止状態記憶媒体２１２に書き込み、書き込みが終わった後に当該停止状態記憶媒体２１２を停止状態に戻すことが好ましい。すなわち、不揮発性キャッシュに保持した第１のデータがアクセス頻度の低いデータであれば、停止状態記憶媒体が動作状態になるまで待って停止状態記憶媒体に書き込むこともできる。
［形態３］制御部は、外部から与えられたデータアクセス要求に基づいて、複数の記憶媒体（２１１、２１２）、又は、不揮発キャッシュ２２のいずれかへのアクセスを制御するコマンド実行制御部２５１（図４参照）と、不揮発キャッシュ２２の状態を監視し、不揮発キャッシュ２２の容量が不足した場合、又は、予め設定した時間に不揮発キャッシュ２２のデータに基づいて、記憶媒体（２１１、２１２）に格納されたデータの更新を制御するデータ更新制御部２５３（図４参照）と、を備えることが好ましい。
［形態４］制御部は、仮想アドレスを複数の記憶媒体（２１１、２１２）のうち、いずれかの記憶媒体の物理アドレスに変換するマッピングテーブル２６１（図８参照）を有するアドレス変換部２６をさらに備え、アドレス変換部２６がマッピングテーブル２６１に含まれる第１のデータの格納先を停止状態記憶媒体２１２の物理アドレスから動作状態記憶媒体２１１の物理アドレスに書き換えることにより、制御部は、不揮発キャッシュ２２が保持する第１のデータを停止状態記憶媒体２１２に替えて、動作状態記憶媒体２１１に書き込むように制御することが好ましい。すなわち、マッピングテーブルを書き換えることにより、不揮発キャッシュにあるデータの書き込み先を変更することができる。
［形態５］複数の記憶媒体（２１１，２１２）の各領域へのアクセス頻度を記録し、動作状態記憶媒体２１１の各領域に対するアクセス頻度のうち、一定以上のアクセス頻度の領域のデータがすべて不揮発キャッシュ２２に存在する場合、当該動作状態記憶媒体２１１を停止状態記憶媒体２１２に変更することが好ましい。
形態１がデータの格納場所の変更であるのに対して、形態５は、一つの記憶媒体の運用時の動作についての通常動作状態から通常停止状態への変更である。
［形態６］マッピングテーブル（図８の２６１）は、複数の記憶媒体（２１１，２１２）の各領域へのアクセス頻度を記憶するアクセス頻度情報を含み、アクセス頻度情報に基づいて、一定以上のアクセス頻度の領域のデータがすべて不揮発キャッシュに存在する場合、動作状態記憶媒体２１１を停止状態記憶媒体２１２に変更することが好ましい。
なお、上記「アクセス頻度情報」には、「最終アクセス時刻」の情報を含んでもよく、さらには、最終アクセス時刻のみを「アクセス頻度情報」として扱って、一定以上のアクセス頻度の領域のデータがすべて不揮発キャッシュに存在するか否かを判定してもよい。
［形態７］複数の記憶媒体（２１１，２１２）は、第１の記憶媒体と、前記第１の記憶媒体の冗長データを記憶する第２の記憶媒体と、を含み、前記第２の記憶媒体は、停止状態記憶媒体２１２であって、制御部（２３、２４、２５、２６）は、前記第２の記憶媒体に冗長データを書き込む必要が生じた場合、前記冗長データを一旦不揮発キャッシュ２２に書き込み、前記第２の記憶媒体を動作状態に切り替えてから不揮発キャッシュ２２に書き込まれた冗長データを前記第２の記憶媒体に書き込むように制御することが好ましい。
複数の記憶媒体を持つ多くのストレージ装置では記憶媒体に対する耐障害性を確保するためにＲＡＩＤをはじめとした、記憶媒体間でデータの冗長性を持つ構成を取る。記憶媒体間でデータの冗長性を持つ構成のストレージ装置では、格納されるデータとそのデータに対するパリティ情報、またはミラー（複製）がそれぞれ異なる記憶媒体に格納される。つまり記憶媒体間で冗長構成を取るストレージ装置からデータをリードする場合、冗長データを格納した第２の記憶媒体へのアクセスは必須ではない。そのため目的とするデータを格納した第１の記憶媒体が利用可能であれば、冗長データを格納した第２の記憶媒体が停止した状態でも、ストレージ装置からのデータのリードが可能である。
一方、ストレージ装置に対してデータのライトを行う場合、データ本体と共にデータに対するパリティ、ミラー等の冗長データの更新が必要である。つまりデータ本体を格納した第１の記憶媒体、及び冗長データを格納した第２の記憶媒体の両方へのライトアクセスが必要である。しかし更新された冗長データを不揮発キャッシュ２２に格納することで、第２の記憶媒体へのアクセスを行わずにライト処理が可能である。第２の記憶媒体への冗長データの書き込みは、後で必要になったときに行えばよい。
［形態８］複数の記憶媒体（２１１，２１２）はそれぞれディスク装置であり、前記動作状態はディスクが回転している状態であるものであってもよい。
すなわち、記憶媒体は、ＨＤＤ等の磁気ディスクや光ディスクなどであってもよい。上記ディクス装置に格納されているデータへのアクセスには、ディスクが回転していることが必要であり、消費電力が大きくなるが、回転を停止させることにより、消費電力を抑制することができる。
［形態９］第２の視点のとおりである。
［形態１０］第３の視点のとおりである。
［形態１１］上記形態５において、停止状態記憶媒体２１２の各領域のうち、不揮発キャッシュ２２にデータが存在しない一定以上のアクセス頻度の領域がある場合、当該停止状態記憶媒体２１２を動作状態記憶媒体２１１に変更してもよい。
形態５とは逆に、不揮発キャッシュ２２を設けても一定以上のアクセス頻度でアクセスする必要がある記憶媒体は、常時動作状態にすることにより、アクセス時間を短縮できる。
［形態１２］上記形態１乃至８、１１のいずれかにおいて、不揮発キャッシュ２２は、複数の記憶媒体（２１１、２１２）より高速にアクセス可能であることが好ましい。
［形態１３］上記形態１乃至８、１１、１２のいずれかにおいて、不揮発キャッシュ２２は、複数の記憶媒体（２１１、２１２）より動作時の消費電力が小さいことが好ましい。
［形態１４］上記形態１０において、第１のデータが一定以上のアクセス頻度を有しないデータである場合には、不揮発キャッシュ２２の状態を監視し、所定のタイミングで停止状態記憶媒体２１２を動作状態に切り替えるステップと、不揮発キャッシュ２２に保持された第１のデータを動作状態に切り替わった停止状態記憶媒体２１２に書き込むステップと、をさらに備えることが好ましい。
［形態１５］上記形態１４において、前記所定のタイミングで停止状態記憶媒体２１２を動作状態に切り替えるステップは、不揮発キャッシュ２２の容量が不足した場合、又は、予め設定した時間に、停止状態記憶媒体２１２を動作状態に切り替えるステップであることが好ましい。
［形態１６］上記形態１０、１４、１５のいずれかにおいて、前記格納場所が変更された前記動作状態記憶媒体に前記第１のデータを書き込むステップは、仮想アドレスを前記複数の記憶媒体のいずれかの物理アドレスに変換するマッピングテーブル（図８の２６１）を用い、マッピングテーブル２６１に含まれる第１のデータの格納先を停止状態記憶媒体２１２の物理アドレスから動作状態記憶媒体２１１の物理アドレスに書き換えるステップを含むことが好ましい。上記物理アドレスには、記憶媒体のＩＤを含むことが好ましい。
［形態１７］上記形態１０、１４〜１６のいずれかにおいて、複数の記憶媒体（２１１、２１２）の各領域へのアクセス頻度を記録するステップと、動作状態記憶媒体２１１の各領域に対するアクセス頻度のうち、一定以上のアクセス頻度の領域のデータがすべて不揮発キャッシュ２２に存在する場合、当該動作状態記憶媒体２１１を停止状態記憶媒体２１２に変更するステップと、をさらに含むことが好ましい。
［形態１８］上記形態１６において、複数の記憶媒体（２１１、２１２）の各領域に対するアクセス要求がある毎に、マッピングテーブル（図８の２６１）に当該記憶媒体の当該領域へのアクセス頻度を記録するステップと、マッピングテーブル２６１に記録されたアクセス頻度情報に基づいて、一定以上のアクセス頻度の領域のデータがすべて不揮発キャッシュ２２に存在する場合、当該動作状態記憶媒体２１１を停止状態記憶媒体２１２に変更することが好ましい。
［形態１９］複数の記憶媒体（２１１、２１２）は、データを格納する第１の記憶媒体と、第１の記憶媒体に格納されているデータの冗長データを記憶する第２の記憶媒体と、を含み、第２の記憶媒体を、停止状態記憶媒体２１２として扱い、第２の記憶媒体に冗長データを書き込む必要が生じた場合、冗長データを一旦不揮発キャッシュ２２に書き込むステップと、第２の記憶媒体を動作状態に切り替えてから不揮発キャッシュ２２に書き込まれた冗長データを第２の記憶媒体に書き込むステップと、を備えることが好ましい。
［形態２０］通常動作状態で運用される動作状態記憶媒体２１１と、通常停止状態で運用され、アクセスが必要になったときに動作状態に切り替え、アクセスが終了すると停止状態に戻る停止状態記憶媒体２１２と、を含む複数の記憶媒体（２１１、２１２）と、不揮発キャッシュ２２と、停止状態にある停止状態記憶媒体２１２への書き込み要求が生じた場合、データを一旦不揮発キャッシュ２２に書き込み、その後、停止状態記憶媒体２１２が停止状態にある間に不揮発キャッシュ２２の容量が不足した場合は、停止状態記憶媒体２１２に替えて、動作状態記憶媒体２１１にデータを書き込むように制御する制御部（２３〜２６）と、を備える。
【００３０】
以上で、概要の説明を終了し、以下、具体的な実施形態について、図面を参照してさらに詳しく説明する。
【００３１】
［第１の実施形態］
図２は、ストレージシステム全体のシステム構成図である。図１に示すとおり、ストレージシステム全体の構成はデータにアクセスする１台以上のホスト１、複数の記憶媒体から構成されるストレージ装置２、及びホスト１、ストレージ装置２を接続するネットワーク３を含む。ネットワーク３は、ストレージ装置２に対して複数のホスト１が接続可能な形態のみならず、ホスト１とストレージ装置２が直接接続される形態であってもよい。
【００３２】
図１は、第１の実施形態によるストレージ装置２全体のブロック図である。ストレージ装置２は、複数の記憶媒体（２１１、２１２）を含む記憶媒体２１と、不揮発キャッシュ２２と、アクセス要求処理部２３と、記憶媒体電源制御部２４と、コマンド実行部２５と、アドレス変換部２６と、を備えている。図１では、複数の記憶媒体を総括して符号２１で示すが、符号２１で示す記憶媒体には、複数の記憶媒体が含まれる。記憶媒体２１と不揮発キャッシュ２２は、ストレージ装置２において、データを記憶する機能を果たし、アクセス要求処理部２３と、記憶媒体電源制御部２４と、コマンド実行部２５と、アドレス変換部２６と、は、データのリードライトを制御する制御部として機能する。また、記憶媒体２１は、動作状態記憶媒体２１１と、停止状態記憶媒体２１２と、を含んでいる。
【００３３】
動作状態記憶媒体２１１は、ストレージ装置２に書き込まれたデータを格納する。また動作状態記憶媒体２１１は常に動作状態で運用され、ストレージ２の外部からのアクセス要求に応じたライトまたはリード処理を行う。
【００３４】
一方停止状態記憶媒体２１２は、ストレージ２に書き込まれたデータを格納する点で動作状態記憶媒体２１１と同様であるが、停止状態で運用される点が異なる。停止状態記憶媒体２１２に格納されたデータにアクセスを行う、若しくはデータを更新する場合は、記憶媒体電源制御部２４が停止状態記憶媒体２１２を一時的に動作状態に切り替えて処理を行う。
【００３５】
図１の構成では、動作状態記憶媒体２１１及び停止状態記憶媒体２１２を各１台で示しているが、これらはストレージ２全体でそれぞれ２台以上の構成であっても良い。
【００３６】
不揮発キャッシュ２２は、記憶媒体２１１、２１２よりアクセス性能が高く、ホスト１からライトされたデータを停止状態記憶媒体２１２にライトする前に一時的に保持する。不揮発キャッシュ２２は、停止状態記憶媒体２１２が停止状態を維持する間にライトされるデータを、前記停止状態記憶媒体２１２が一時的に動作状態となるまで保持する。また不揮発キャッシュ２２は停止状態記憶媒体２１２にライトされるデータ以外に、記憶媒体２１から読み出されたデータを一時的にキャッシュとして保持することで、ストレージ２に対するホスト１からのリード、ライト要求の処理性能を高める。また不揮発キャッシュ２２または後述するコマンド実行部２５内に、不揮発キャッシュ２２上に格納された動作状態記憶媒体２１１及び停止状態記憶媒体２１２を更新するためのデータ、または更新済みのデータを管理する図７に示す不揮発キャッシュ管理テーブル２２１を格納する。不揮発キャッシュ管理テーブル２２１は不揮発キャッシュ２２に格納する以外に、コマンド実行部２５の内部で管理してもよい。
【００３７】
アクセス要求処理部２３は、ホスト１からのアクセス要求を受け取り、アクセス要求に対応した動作状態記憶媒体２１１及び停止状態記憶媒体２１２に対するコマンドを生成する。またアクセス要求処理部２３は、リードされた冗長データから元のデータの復元、及びライトデータから記憶媒体２１に格納するための冗長データの生成を行う。
【００３８】
記憶媒体電源制御部２４は、停止状態記憶媒体２１２の動作または停止状態を記録し、電源を制御することで動作状態と停止状態を切り替える。
【００３９】
コマンド実行部２５はアクセス要求処理部２３から記憶媒体２１へのリードまたはライトコマンドを受け取り、リードアクセスの場合は、不揮発キャッシュ２２に要求されたデータが格納されている場合は不揮発キャッシュ２２から該当するアドレスのデータをリードして結果のデータをアクセス要求処理部２３に返す。不揮発キャッシュ２２上に要求されたデータが存在しなかった場合は記憶媒体２１の動作状態記憶媒体２１１又は停止状態記憶媒体２１２から該データまたは該データに対する冗長データをＲｅａｄする。
【００４０】
ライトアクセスの場合はアクセス要求処理部２３と共に受理したライトデータについて、冗長データを生成する。そして停止状態記憶媒体２１２が停止している場合はライトデータ、若しくはその冗長データを不揮発キャッシュ２２にライトして、停止状態記憶媒体２１２が動作状態になるまでライトデータを保持する。
【００４１】
またコマンド実行部２５は不揮発キャッシュ２２でライトデータ、若しくはその冗長データを保持する場合、任意のタイミングで停止状態記憶媒体２１２を停止状態から動作状態に切り替え、不揮発キャッシュ２２で保持するライトデータで停止状態記憶媒体２１２のライト先領域を更新する。
【００４２】
さらにコマンド実行部２５は、不揮発キャッシュ２２を介さずに記憶媒体２１に発行したコマンドが完了、または不揮発キャッシュ２２に対するリード、ライトが完了するとアクセス要求処理部２３に対してリードコマンドの場合は読み出されたデータ、ライトコマンドの場合は完了通知を返す。
【００４３】
アドレス変換部２６は、ホスト１が参照可能な、及び各領域に対するアクセス頻度に関する情報を図８に示すマッピングテーブル２６１として格納する。またアドレス変換部２６は、アクセス要求処理部２３が記憶媒体２１に対するコマンドを生成する際に、ホスト１からストレージ装置２に対するリード、ライト要求で指定されたアドレスを、アクセス先となる記憶媒体２１１、２１２と、各記憶媒体２１１、２１２にアクセスするために必要なアドレスに変換する。さらにアドレス変換部２６に格納された情報は、コマンド実行部２５から参照され、コマンド実行部２５によってストレージ装置２のアドレス空間と、各領域の記憶媒体２１１、２１２における格納位置の対応関係が更新される。
【００４４】
図３は、第１の実施形態におけるアクセス要求処理部２３のブロック図である。図３を参照してアクセス要求処理部２３の構成について説明を行う。図３において、アクセス要求処理部２３は、アクセス解釈部２３１と、アクセス要求情報格納部２３２と、データ復元部２３３と、冗長データ生成部２３４と、を備えている。
【００４５】
アクセス解釈部２３１は、ホスト１からのアクセス要求を受け取り、アクセス要求に対する記憶媒体２１へのコマンドを生成する。アクセス解釈部２３１は、生成したコマンドをコマンド実行部２５に渡し、コマンドの管理情報をアクセス要求情報格納部２３２に格納する。また生成したコマンドがライトである場合、ライト対象となるデータ（以下ライトデータ）を同時にコマンド実行部２５に渡す。加えてアクセス解釈部２３１は、コマンド実行部２５からリードコマンドで読み出されたデータ、またはライトコマンドの完了通知を受理して、リードで読み出されたデータ、またはライトの完了通知を対応するアクセス要求発行元であるホスト１に返す。アクセス解釈部２３１は、ホスト１からのアクセス要求が完了すると任意のタイミングで、アクセス要求情報格納部２３２に格納された、該当するアクセス要求の管理情報を削除する。
【００４６】
アクセス要求情報格納部２３２は、アクセス解釈部２３１が受け取ったアクセス要求、及びアクセス解釈部２３１が生成したコマンドとの対応情報を示した図５に示すアクセス要求管理テーブル２３２１を格納する。
【００４７】
データ復元部２３３は、記憶媒体２１を構成する動作状態記憶媒体２１１、若しくは停止状態記憶媒体２１２に格納された冗長データについて、対応する他の記憶媒体２１１、２１２からリードされたデータを使用して、冗長データに対するデータ本体を生成する。
【００４８】
冗長データ生成部２３４は、ストレージ装置２に対するライトデータから記憶媒体２１に格納するための冗長データを生成する。
【００４９】
続いてコマンド実行部２５の構成について図面を参照して説明を行う。図４は、第１の実施形態におけるコマンド実行部のブロック図である。図４に示すコマンド実行部２５は、コマンド実行制御部２５１と、コマンド管理情報格納部２５２と、データ更新制御部２５３と、を備えている。
【００５０】
コマンド実行制御部２５１は、アクセス要求処理部２３からリードまたはライトコマンドを受理する。コマンド実行制御部２５１は後述するコマンド管理情報格納部２５２に、アクセスコマンドの実行管理に必要な情報を格納する。コマンド実行制御部２５１が受理したコマンドがリードコマンドである場合、不揮発キャッシュ２２、若しくは記憶媒体２１１、２１２からアクセス対象のデータを読み出す。
【００５１】
受理したコマンドがライトコマンドである場合は、記憶媒体電源制御部２４からライト先の記憶媒体２１の動作状態を取得し、ライト先の記憶媒体が動作状態記憶媒体２１１であればライトデータ、もしくはその冗長データを動作状態記憶媒体２１１に直接ライトする。一方ライト先の記憶媒体が停止状態記憶媒体２１２である場合、不揮発キャッシュ２２にライトデータまたはその冗長データを一時的に格納する。また不揮発キャッシュ２２に格納されており、記憶媒体２１１、２１２に格納されていないライトデータを後述するデータ更新制御部２５３の指示により、記憶媒体２１１、２１２に書き込む。発行後記憶媒体２１１、２１２または不揮発キャッシュ２２へのアクセスにより完了したコマンドは、Ｒｅａｄであればデータを、Ｗｒｉｔｅであれば完了通知をアクセス要求処理部２３に返す。
【００５２】
コマンド管理情報格納部２５２は、アクセス要求処理部２３から受理したコマンドの管理に必要となる、図６に示すコマンド管理テーブル２５２１を格納する。
【００５３】
データ更新制御部２５３は不揮発キャッシュ２２の状態を監視し、不揮発キャッシュ２２の更新データを格納する領域の空き容量が不足した場合、または事前に決められた時間に不揮発キャッシュ２２に格納された更新データを記憶媒体２１１、２１２に反映する。
【００５４】
まずデータ更新制御部２５３は、不揮発キャッシュ管理テーブル２２１上のデータから更新されていないデータを選択して破棄する。若しくは不揮発キャッシュ管理テーブル２２１上の更新されたデータから動作状態記憶媒体２１１に格納されるデータを優先的に動作状態記憶媒体２１１にライトする。
【００５５】
若しくは不揮発キャッシュ管理テーブル２２１に加えてアドレス変換部２６を参照して、不揮発キャッシュ管理テーブル２２１上の更新されたデータから本来のデータ格納先が停止状態記憶媒体２１２であったデータから任意のデータを選択し、選択したデータの格納先である記憶媒体を、アドレス変換部２６が管理するマッピングテーブル２６１を更新することで、停止状態記憶媒体２１２から、よりアクセス頻度の高い任意の動作状態記憶媒体２１１に変更した後に、前記選択したデータを当該動作状態記憶媒体２１１にライトする。
【００５６】
なお、データの格納先を停止状態記憶媒体２１２から動作状態記憶媒体２１１に変更するデータは、マッピングテーブル２６１を参照し、アクセス頻度の高いデータ、及び／又は、最終アクセス時刻が現在時刻に近いデータであることが好ましい。アクセス頻度の高いデータの格納先を停止状態記憶媒体２１２から動作状態記憶媒体２１１に変えることにより、停止状態記憶媒体２１２が頻繁に動作状態になることを避け、ストレージ装置２全体の消費電力を低減することができるからである。
【００５７】
上記処理がいずれも不可能である場合、記憶媒体電源制御部２４を通じて不揮発キャッシュ２２に更新データが格納されているデータの格納先である停止状態記憶媒体２１２を動作状態に切り替える。データ更新制御部２５３は、更新データが格納されるべき停止状態記憶媒体２１２が動作状態になると、コマンド実行制御部２５１に対して不揮発キャッシュ２２上の更新データを停止状態記憶媒体２１２にライトする。
【００５８】
またデータ更新制御部２５３は、アドレス変換部２６の情報を定期的に取得し、動作状態記憶媒体２１１において、アクセス頻度に関する情報について事前に決定した一定の条件を満たした領域が全て不揮発キャッシュ２２に格納されたことを検出すると、記憶媒体電源制御部２４を通して前記動作状態記憶媒体２１１を停止状態記憶媒体２１２に変更する。すなわち、この場合は、通常動作状態で運用されていた一つの記憶媒体２１１（動作状態記憶媒体）全体を通常停止状態で運用される記憶媒体２１２（停止状態記憶媒体）に変更することにより、ストレージ装置２全体の消費電力を低減する。
【００５９】
なお、アクセス頻度に関する情報は、図８に示すマッピングテーブルの「アクセス回数」及び／又は「最終アクセス時刻」の情報を用いることができる。「アクセス回数」のみからアクセス頻度を判断してもよいし、「最終アクセス時刻」も併用してアクセス頻度を判断することができる。また、「最終アクセス時刻」のみからアクセス頻度を判断することも可能である。
【００６０】
図５は、第１の実施形態におけるアクセス要求管理テーブル２３２１の構成図である。図５に示すアクセス要求管理テーブル２３２１は、アクセス要求情報格納部２３２に格納される。図５では、アクセス要求管理テーブル２３２１を構成する情報を示している。
【００６１】
アクセス要求管理テーブル２３２１は、ホスト１からの各アクセス要求に付随する情報を保持する。アクセス要求に付随する情報として、アクセス要求を受けた際に付与されるアクセス要求毎に固有なＩＤと、リード（Ｒｅａｄ）であるかライト（Ｗｒｉｔｅ）であるかのアクセス種別（図５ではＲ／Ｗと表現）と、アクセス先のストレージ２全体におけるアドレス空間内での先頭ブロックのアドレスと、アクセス長と、アクセス要求の要求元ホストと、アクセス要求を処理するためにコマンド実行部２５に処理を依頼したコマンドに付加される、後述するコマンド管理テーブル２５２１上に格納される１個以上の各記憶媒体に対するアクセスコマンドのＩＤ（以下コマンドＩＤ）を記録する。アクセス要求管理テーブル２３２１は、ホスト１からの各アクセス要求に付随する前記情報が必要になる際に、アクセス解釈部２３１から参照される。
【００６２】
図６は、第１の実施形態におけるコマンド管理テーブル２５２１の構成図である。コマンド管理テーブル２５２１は、すでに説明したコマンド管理情報格納部２５２（図４参照）に格納される。図６では、コマンド管理テーブル２５２１を構成する情報を示す。
【００６３】
コマンド管理テーブル２５２１では、アクセス要求処理部２３から処理を依頼されたコマンドを処理するために記憶媒体２１１、２１２または不揮発キャッシュ２２に対して発行されるコマンドに付随する情報を保持する。コマンドに付随する情報として、記憶媒体に対する各アクセスコマンドを前記アクセス要求管理テーブル２３２１において識別するために用いるコマンド毎に固有なＩＤと、リード（Ｒｅａｄ）であるかライト（Ｗｒｉｔｅ）であるかのアクセス種別（図６ではＲ／Ｗと表現）と、コマンドを発行するアクセス先の記憶媒体２１内の各記憶媒体を識別するＩＤと、アクセス先の先頭ブロックのアドレスと、アクセス長と、ライトコマンドについては記憶媒体２１にライトされるデータ、または冗長データを格納する。
【００６４】
図７は、不揮発キャッシュ２２またはコマンド実行部２５内に格納される不揮発キャッシュ管理テーブル２２１を構成する情報を表す図である。
【００６５】
不揮発キャッシュ管理テーブル２２１では、不揮発キャッシュ２２上に一時的に格納された記憶媒体２１のデータ、もしくは冗長データの管理に必要な情報を保持する。管理に必要な情報として、データが更新済みであるため不揮発キャッシュ２２上から追い出される際に記憶媒体２１に対する更新処理が必要であるかを表すｄｉｒｔｙフラグ（１の場合は更新が必要）と、データの先頭ブロックのアドレスと、アクセス長と、不揮発キャッシュ２２上のデータの格納先の先頭ブロックのアドレスを格納する。また記憶媒体２１に対して既に更新が完了しているデータについてはリード処理時にキャッシュとして利用する。
【００６６】
図８は、アドレス変換部２６で管理されるマッピングテーブル２６１を表す。マッピングテーブル２６１は、ホスト１がストレージ装置２のアドレス空間上でアクセス可能な各領域をホスト１がアクセスする際に用いるアドレスである仮想アドレスと、その各領域の格納先である記憶媒体２１１、２１２を識別する記憶媒体ＩＤ、及び記憶媒体ＩＤにより特定される各記憶媒体２１１、２１２内の格納先アドレスである物理アドレスの対応関係を記録する。また各領域に対して、動作状態記憶媒体２１１の停止状態記憶媒体２１２への切り替えの判断に用いる、一定時間内におけるアクセス回数を記録する。このアクセス回数からアクセス頻度を判断することができる。さらに、アクセス頻度の情報としては、図８に示すように最終アクセス時刻の情報を記録してもよい。なお、アクセス頻度を判断する情報としては、「アクセス回数」、「最終アクセス時刻」は一例であって、「アクセス回数」、「最終アクセス時刻」以外のアクセス間隔等の情報を記録し、それらの情報からアクセス頻度を判断してもよい。
【００６７】
なお、「アクセス回数」、「最終アクセス時刻」などのアクセス頻度に関する情報は、実際に記憶媒体２１１、２１２にアクセスされたか否かを問わず、記憶媒体２１１、２１２に対してアクセス要求がある毎に更新してもよい。不揮発キャッシュ２２上にデータが存在する場合には、記憶媒体２１１、２１２に対してアクセス要求があった場合であっても、実際は不揮発キャッシュ２２上のデータに対してアクセスが行われ、記憶媒体２１１、２１２にはアクセスが行われない場合もあるからである。そのようにしてアクセス頻度を把握することにより、データが不揮発性キャッシュに存在するか否かに関わらず、当該データに対するアクセス頻度を把握することができる。
【００６８】
（ホストからアクセス要求があった場合の全体動作）
次に、図１〜図１２を参照して第１の実施形態の動作について説明する。まず図１〜図１０を参照して、ホスト１からストレージ装置２へアクセス要求が行われた際のストレージ２全体の動作について説明する。図９と図１０は、それぞれ、第１の実施形態において、ホスト１からストレージ装置２に対するアクセス要求があった場合の全体処理フローチャートの前半と後半である。
【００６９】
第１の実施形態では、ホスト１からストレージ装置２へアクセス要求が行われる毎に、図１、図２、図３、図４で表されるストレージ装置２全体が以下の動作を実行する。
【００７０】
ホスト１からアクセス要求を受理したアクセス要求処理部２３内のアクセス解釈部２３１は、アクセス要求を解釈し、アドレス変換部２６に格納されたマッピングテーブル２６１の情報を用いてホスト１から指示されたアクセス先のアドレスを、記憶媒体２１に対するアドレスに変換し、記憶媒体２１に対するアクセスコマンド（Ｒｅａｄ、Ｗｒｉｔｅ）を生成する（図９のステップＳ１０１）。
【００７１】
ステップＳ１０１で生成されたコマンドが冗長データに対するＷｒｉｔｅコマンド以外の場合（ステップＳ１０２のＮｏ判定）、後述するステップＳ１０４以降の処理を行う。
【００７２】
ステップＳ１０１で生成されたコマンドが記憶媒体２１に格納される冗長データに対するＷｒｉｔｅコマンドである場合（ステップＳ１０２のＹｅｓ判定）、アクセス解釈部２３１は冗長データ生成部２３４を用いてステップＳ１０１でホスト１から受理したＷｒｉｔｅデータからステップＳ１０１で生成されたコマンドが記憶媒体２１に対して実際にＷｒｉｔｅする冗長データを生成する（ステップＳ１０３）。
【００７３】
アクセス解釈部２３１は、ステップＳ１０１で受理したアクセス要求の管理情報と生成したコマンドの対応情報をアクセス要求情報格納部２３２に格納する。このとき格納する情報の内容は、アクセス管理情報テーブル２３２１（図５）で示した通りである。またアクセス解釈部２３１はコマンド実行部２５に対してステップＳ１０１で生成したコマンドの処理を要求する。コマンドがＷｒｉｔｅである場合は、Ｗｒｉｔｅ対象のデータを同時にコマンド実行部２５に渡す（ステップＳ１０４）。
【００７４】
コマンド実行制御部２５１は、ステップＳ１０２でコマンド実行部２５に渡されたコマンドを受理する。そのコマンドの管理情報をコマンド管理情報格納部２５２にコマンド管理テーブル２５２１で示した形式で格納する（ステップＳ１０５）。
【００７５】
ステップＳ１０５に続いて、図１０のステップＳ１０６では、コマンド実行制御部２５１が受理したコマンドがＷｒｉｔｅである場合（ステップＳ１０６のＮｏ判定）、ステップＭ１１及びステップＳ１０８からＳ１１０までの処理を行わず、ステップＭ１２及びステップＳ１１２以降の処理を行う。
【００７６】
コマンド実行制御部２５１が受理したコマンドがＲｅａｄである場合（ステップＳ１０６のＹｅｓ判定）、コマンド実行制御部２５１はＲｅａｄコマンドに対するアクセス処理を実行する。このときコマンド実行制御部２５１は、Ｒｅａｄコマンドを記憶媒体２１または不揮発キャッシュ２２に対して発行する（ステップＭ１１）。なお、ステップＭ１１の処理の詳細は、後で図１１を用いて説明する。
【００７７】
コマンド実行制御部２５１は、発行したＲｅａｄコマンドが完了すると、結果であるＲｅａｄされたデータをアクセス要求処理部２３に渡す。またコマンド実行制御部２５１は、コマンド管理情報格納部２５２に格納された前記Ｒｅａｄコマンドの管理情報を以降の任意のタイミングで削除する（ステップＳ１０８）。
【００７８】
ステップＭ１１及びステップＳ１０８で完了したＲｅａｄコマンドが記憶媒体２１に格納された冗長データ以外に対するコマンドである場合（ステップＳ１０９のＮｏ判定）、ステップＳ１１０の処理は行わずステップＳ１１３以降の処理を行う。
【００７９】
ステップＭ１１及びステップＳ１０８で完了したＲｅａｄコマンドが記憶媒体２１に格納された冗長データに対するコマンドである場合（ステップＳ１０９のＹｅｓ判定）、アクセス要求処理部２３内のデータ復元部２３３は、ステップＳ１０８で受理したＲｅａｄ結果の冗長データからホスト１がストレージ２に対してＲｅａｄ要求を行っているデータを復元する（ステップＳ１１０）。
【００８０】
コマンド実行制御部２５１が受理したコマンドがＷｒｉｔｅである場合（ステップＳ１０６のＮｏ判定）、コマンド実行制御部２５１はＷｒｉｔｅコマンドに対するアクセス処理を実行して記憶媒体２１、または不揮発キャッシュ２２にデータを格納する（ステップＭ１２）。なお、ステップＭ１２の処理の詳細は、後で図１２を用いて説明する。
【００８１】
コマンド実行制御部２５１は、ステップＭ１２でＷｒｉｔｅデータの格納が完了すると、Ｗｒｉｔｅ処理の完了をアクセス要求処理部２３に通知する。またコマンド実行制御部２５１は、コマンド管理情報格納部２５２に格納された前記Ｗｒｉｔｅコマンドの管理情報を以降の任意のタイミングで削除する（ステップＳ１１２）。
【００８２】
アクセス要求処理部２３内のアクセス解釈部２３１は、コマンド実行制御部２５１からＲｅａｄの結果またはＷｒｉｔｅの完了通知を受理し、アクセス要求情報格納部２３２に格納されたアクセス要求管理テーブル２３２１（図５）からコマンド結果に対応したホスト１のアクセス要求を探す。アクセス解釈部２３１は該当するアクセス要求の要求元ホスト１に対して、Ｒｅａｄアクセス要求の結果であるデータを返信する。またはＷｒｉｔｅアクセス要求の完了通知を通知する。アクセス解釈部２３１はホスト１へのコマンド実行結果の返信または完了の通知処理が完了すると、アクセス要求情報格納部２３２に格納された該コマンドの管理情報を任意のタイミングで削除する（ステップＳ１１３）。
【００８３】
以上のステップＳ１０１からＳ１１３までの処理を行い、ホスト１からストレージ装置２へアクセス要求が行われた際のストレージ装置２全体の処理が終了する。
【００８４】
（Ｒｅａｄコマンドに対する処理の詳細）
次に図１、図４、図６、図７、図１１を参照して図１０におけるステップＭ１１の更に詳細な処理手順について説明する。図１１は、図１０におけるＲｅａｄコマンドに対する処理（ステップＭ１１）の詳細フローチャートである。
【００８５】
コマンド実行制御部２５１は、アクセス要求処理部２３から受理したＲｅａｄコマンドを不揮発キャッシュ２２に発行し、Ｒｅａｄ先のデータが存在するかどうか問い合わせる。不揮発キャッシュ２２は不揮発キャッシュ管理テーブル２２１を参照してＲｅａｄ先のデータが存在するか確認する（ステップＳ２１）。
【００８６】
不揮発キャッシュ２２にＲｅａｄコマンドのアクセス先のデータが存在した場合（ステップＳ２２のＹｅｓ判定）、コマンド実行制御部２５１は不揮発キャッシュ２２からＲｅａｄアクセス先のデータを結果として受け取り、ステップＭ１１の処理を終了する（ステップＳ２３）。
【００８７】
不揮発キャッシュ２２にＲｅａｄコマンドのアクセス先のデータが存在しなかった場合（ステップＳ２２のＮｏ判定）、コマンド実行制御部２５１はステップＳ２４以降の処理を実行する。
【００８８】
コマンド実行制御部２５１は、Ｒｅａｄコマンドのアクセス先の記憶媒体２１が動作状態記憶媒体２１１、或いはアクセス先の停止状態記憶媒体２１２が動作状態である場合（ステップＳ２４のＮｏ判定）、ステップＳ２６以降の処理を実行する。
【００８９】
Ｒｅａｄコマンドのアクセス先の記憶媒体２１が停止状態記憶媒体２１２かつ実際に停止状態である場合（ステップＳ２４のＹｅｓ判定）、コマンド実行制御部２５１は、記憶媒体電源制御部２４を通じてＲｅａｄコマンドの発行先となる停止状態記憶媒体２１２を一時的に動作状態に切り替える（ステップＳ２５）。
【００９０】
コマンド実行制御部２５１はＲｅａｄコマンドのアクセス先に応じて記憶媒体２１にＲｅａｄコマンドを発行する（ステップＳ２６）。
【００９１】
コマンド実行制御部２５１は、ステップＳ２６で発行した記憶媒体２１に対するＲｅａｄコマンドの結果を受理する。また必要に応じて前記Ｒｅａｄコマンドの結果であるデータまたは冗長データを不揮発キャッシュ２２に格納し、不揮発キャッシュ管理テーブル２２１を更新する（ステップＳ２７）。なお、このステップＳ２７の処理は任意の処理であり、不揮発キャッシュ２２へのＲｅａｄコマンドの結果の格納は行わなくてもよい。
【００９２】
以上のステップＳ２１からＳ２７までの処理を行い、コマンド実行制御部２５１のＲｅａｄコマンドに対するステップＭ１１の処理が完了する。
【００９３】
（Ｗｒｉｔｅコマンドに対する処理の詳細）
次に図１、図４、図６、図７、図１２を参照して、図１０におけるステップＭ１２の更に詳細な処理手順について説明する。図１２は、図１０におけるＷｒｉｔｅコマンドに対する処理（ステップＭ１２）の詳細フローチャートである。
【００９４】
コマンド制御部２５１は、記憶媒体電源制御部２４を通じてＷｒｉｔｅ先の記憶媒体２１が動作状態記憶媒体２１１か、停止状態記憶媒体２１２であるか確認する（ステップＳ３１）。
【００９５】
Ｗｒｉｔｅコマンドのアクセス先となる記憶媒体２１が動作状態記憶媒体２１１であった場合（ステップＳ３２のＮｏ判定）、コマンド制御部２５１はＷｒｉｔｅコマンドをＷｒｉｔｅ先の動作状態記憶媒体２１１に発行する。また不揮発キャッシュ２２上に更新前のデータが存在する場合は不揮発キャッシュ２２上のデータに対する更新も行い、Ｗｒｉｔｅ処理を終了する（ステップＳ３３）。
【００９６】
Ｗｒｉｔｅコマンドのアクセス先が停止状態記憶媒体２１２であった場合（ステップＳ３２のＹｅｓ判定）、コマンド制御部２５１はアクセス要求処理部２３から受理したＷｒｉｔｅデータを格納するための利用可能な領域が不揮発キャッシュ２２に存在するか問い合わせる（ステップＳ３４）。
【００９７】
コマンド制御部２５１による問い合わせの結果、不揮発キャッシュ２２上に空き領域が存在しなかった場合（ステップＳ３５のＮｏ判定）、コマンド実行制御部２５１はアクセス要求処理部２３から受理したＷｒｉｔｅデータをキャッシュ２２に書き込むために利用可能な領域が確保されるまで、Ｗｒｉｔｅコマンドの処理を待機させる。また、空き容量が不足していることをデータ更新制御部２５３に通知する。待機終了後はステップＳ３５の判定から処理を再開する（ステップＳ３６）。
【００９８】
コマンド実行制御部２５１による問い合わせの結果、不揮発キャッシュ２２上に空き領域が存在した場合（ステップＳ３５のＹｅｓ判定）、コマンド実行制御部２５１は不揮発キャッシュ２２にＷｒｉｔｅコマンドを発行し、Ｗｒｉｔｅデータを書き込んで処理を終了する（ステップＳ３７）。
【００９９】
以上のステップＳ３１からＳ３７までの処理を行い、コマンド実行制御部２５１のＷｒｉｔｅコマンドに対する処理を行うステップＭ１２の処理が完了する。
【０１００】
（キャッシュ容量が不足したときの処理の詳細）
次に図１、図４、図６、図７、図８、図１３を参照して前記データ更新制御部２５３が、不揮発キャッシュ２２に格納されたＲｅａｄデータを破棄、またはＷｒｉｔｅデータを記憶媒体２１に書き込むことで容量不足を解消する際の処理手順について説明する。図１３は、第１の実施形態において、コマンド実行部２５が不揮発キャッシュ２２の空き領域を確保する処理の詳細フローチャートである。
【０１０１】
データ更新制御部２５３は、不揮発キャッシュ管理テーブル２２１からｄｉｒｔｙフラグが０、つまり更新の反映が不要なデータから任意の１個を選択して削除する（ステップＳ４０１）。
【０１０２】
ステップＳ４０１で削除可能なデータが存在せず削除に失敗した場合（ステップＳ４０２のＮｏ判定）、ステップＳ４０４以降の処理を継続して行う。
【０１０３】
ステップＳ４０１で削除可能なデータが存在して削除に成功した場合（ステップＳ４０２のＹｅｓ判定）、ステップＳ４０３の判定を実行する。
【０１０４】
不揮発キャッシュ２２の空き容量が十分な場合（ステップＳ４０３のＮｏ判定）、データ更新制御部２５３は容量不足が解消できたので処理を終了する。
【０１０５】
不揮発キャッシュ２２の空き容量が不足している場合（ステップＳ４０３のＹｅｓ判定）、ステップＳ４０１の処理に戻って不揮発キャッシュ２２の容量不足の解消処理を続行する。
【０１０６】
ステップＳ４０４では、データ更新制御部２５３は不揮発キャッシュ管理テーブル２２１上のｄｉｒｔｙフラグが１、つまり更新を記憶媒体２１に反映する必要があるデータから任意の１つを選択してコマンド実行制御部２５１に更新反映、つまりＷｒｉｔｅコマンドの実行を指示する。選択するデータは、更新の反映先の記憶媒体２１が動作状態記憶媒体２１１であるデータが存在する場合、そのデータを優先的に選択する。
【０１０７】
さらに、ステップＳ４０４において、不揮発キャッシュ管理テーブル２２１に加えてアドレス変換部２６のマッピングテーブル２６１を参照して、不揮発キャッシュ管理テーブル２２１上のｄｉｒｔｙフラグが１のデータのうち、格納先である記憶媒体２１をよりアクセス頻度の高い任意の動作状態記憶媒体２１１に変更可能である場合、マッピングテーブル２６１を更新して格納先の記憶媒体２１を変更した後、前記データを優先的に選択する。特にｄｉｒｔｙフラグが１のデータのうち、マッピングテーブル２６１を参照し、アクセス頻度の高いデータについて、優先的に選択し、データの格納先を停止状態記憶媒体２１２から動作状態記憶媒体２１１に変更することが好ましい。アクセス頻度の高いデータの格納先を停止状態記憶媒体２１２から動作状態記憶媒体２１１に変えることにより、停止状態記憶媒体２１２が頻繁に動作状態になることを避け、ストレージ装置２全体の消費電力を低減することができる。
【０１０８】
コマンド実行制御部２５１は、記憶媒体電源制御部２４を通してＳ４０４で選択したデータの格納先となる記憶媒体２１の動作状態を取得する（ステップＳ４０５）。
【０１０９】
ステップＳ４０４で選択したデータの格納先が動作状態記憶媒体２１１であった場合（ステップＳ４０６のＮｏ判定）、コマンド実行制御部２５１はステップＳ４０８以降の処理を実行する。
【０１１０】
ステップＳ４０４で選択したデータの格納先が停止状態記憶媒体２１２であった場合（ステップＳ４０６のＹｅｓ判定）、コマンド実行制御部２５１は記憶媒体電源制御部２４を通して格納先の停止状態記憶媒体２１２を動作状態に切り替える（ステップＳ４０７）。
【０１１１】
コマンド実行制御部２５１は、ステップＳ４０４で指示されたＷｒｉｔｅコマンドの実行を完了した後、不揮発キャッシュ２２に一時的に格納されていたＷｒｉｔｅコマンドのデータを削除する（ステップＳ４０８）。
【０１１２】
不揮発キャッシュ２２の空き容量が不足していると判断される状態である場合（ステップＳ４０９のＹｅｓ判定）、ステップＳ４０４の処理に戻って不揮発キャッシュ２２の容量不足の解消処理を続行する。
【０１１３】
ステップＳ４０８までの処理の結果、空き容量が十分と判断される状態である場合（ステップＳ４０９のＮｏ判定）、コマンド実行制御部２５１は記憶媒体電源制御部２４を通して動作中の停止状態記憶媒体２１２を停止する（ステップＳ４１０）。
【０１１４】
以上のステップＳ４０１からＳ４１０までの処理を行い、データ更新制御部２５３が、不揮発キャッシュ２２に格納されたＲｅａｄデータを破棄、またはＷｒｉｔｅデータを記憶媒体２１に書き込むことで不揮発キャッシュ２２の容量不足を解消する処理が完了する。
【０１１５】
（キャッシュデータの記憶媒体への反映処理の詳細）
次に図１、図４、図６、図７、図８、図１４を参照して前記データ更新制御部２５３が、不揮発キャッシュ２２に格納されたＷｒｉｔｅデータを記憶媒体２１に書き込むことで、時間経過、ストレージ２の負荷等の条件によって不揮発キャッシュ上に一時的に格納された更新データを反映する処理手順について説明する。
【０１１６】
データ更新制御部２５３は不揮発キャッシュ管理テーブル２２１上のｄｉｒｔｙフラグが１、つまり更新を記憶媒体２１に反映する必要があるデータから任意の１つを選択してコマンド実行制御部２５１に更新反映、つまりＷｒｉｔｅコマンドの実行を指示する。選択するデータは、更新の反映先の記憶媒体２１が動作状態記憶媒体２１１であるデータが存在する場合、前記データを優先的に選択する。若しくは不揮発キャッシュ管理テーブル２２１に加えてアドレス変換部２６のマッピングテーブル２６１を参照して、不揮発キャッシュ管理テーブル２２１上のｄｉｔｒｙフラグが１のデータのうち、格納先である記憶媒体２１をよりアクセス頻度の高い任意の動作状態記憶媒体２１１に変更可能である場合、マッピングテーブル２６１を更新して格納先の記憶媒体２１を変更した後、前記データを優先的に選択する（ステップＳ５１）。格納先である記憶媒体２１を停止状態記憶媒体２１２から動作状態記憶媒体２１１に変更する場合は、マッピングテーブル２６１を参照してアクセス頻度の高いデータを選択して変更することが好ましい。
【０１１７】
コマンド実行制御部２５１は、記憶媒体電源制御部２４を通してＳ５１で選択したデータの格納先記憶媒体２１の動作状態を取得する（ステップＳ５２）。
【０１１８】
ステップＳ５１で選択したデータの格納先が動作状態記憶媒体２１１であった場合（ステップＳ５３のＮｏ判定）、コマンド実行制御部２５１はステップＳ５５以降の処理を実行する。
【０１１９】
ステップＳ５１で選択したデータの格納先が停止状態記憶媒体２１１であった場合（ステップＳ５３のＹｅｓ判定）、コマンド実行制御部２５１は記憶媒体電源制御部２４を通して格納先の停止状態記憶媒体２１２を動作状態に切り替える（ステップＳ５４）。
【０１２０】
コマンド実行制御部２５１は、ステップＳ５１で指示されたＷｒｉｔｅコマンドの実行を完了した後、不揮発キャッシュ２２に一時的に格納されていたＷｒｉｔｅコマンドのデータについてｄｉｒｔｙフラグを０にリセットする（ステップＳ５５）。
【０１２１】
不揮発キャッシュ２２に不揮発キャッシュ管理テーブル２２１上のｄｉｒｔｙフラグがセットされたデータが存在、つまり未更新のデータが残存している場合（ステップＳ５６のＹｅｓ判定）、ステップＳ５１の処理に戻って不揮発キャッシュ２２上のＷｒｉｔｅデータの更新反映処理を続行する。
【０１２２】
ステップＳ５５までの処理の結果、不揮発キャッシュ２２に不揮発キャッシュ管理テーブル２２１上のｄｉｒｔｙフラグがセットされたデータが存在しない、つまり未更新のデータが残存していない場合（ステップＳ５６のＮｏ判定）、コマンド実行制御部２５１は記憶媒体電源制御部２４を通して動作中の停止状態記憶媒体２１２を停止する（ステップＳ５７）。
【０１２３】
以上のステップＳ５１からＳ５７までの処理を行い、データ更新制御部２５３による記憶媒体２１への不揮発キャッシュ２２上のＷｒｉｔｅデータの更新反映処理が完了する。
【０１２４】
以下に実施例について詳述する。
【実施例１】
【０１２５】
実施例１は、上記図９〜図１４を用いて説明したステップＳ１０１からＳ１１３、ステップＳ２１からＳ２７、ステップＳ３１からＳ３７、ステップＳ４０１からＳ４１０、及びステップＳ５１からＳ５７までの処理の具体的な動作を示す実施例である。
【０１２６】
実施例１では、ストレージ２の記憶媒体２１に含まれる動作状態記憶媒体２１１が１台、停止状態記憶媒体２１２が２台のＨＤＤからなるＲＡＩＤ４のアレイで構成されており、不揮発キャッシュ２２がｆｌａｓｈ  ＳＳＤである場合を想定している。実施例１の動作を図１〜図４、図９〜図１６を用いて示す。特に、図１５は、実施例１におけるストレージ装置における各記憶媒体のアドレス空間と各領域との対応図である。また、図１６は、実施例１におけるストレージ装置に対するホストからのアクセス要求の順番を示す図である。
【０１２７】
実施例１では、記憶媒体２１は２台のデータ本体を格納するＨＤＤ−Ａ、ＨＤＤ−Ｂと、１台のパリティを格納するためのＨＤＤ−Ｐの３台のディスク装置により構成される。図１５の格納先アドレスに示すとおり、ストレージ装置２全体のアドレス空間に対して、ＨＤＤ−Ａ、ＨＤＤ−Ｂの領域が、ブロック単位でアドレス０から順番に１００ブロック単位で割り当てられているものとする。図１５には、ブロックアドレス０から９９、２００から２９９のデータはＨＤＤ−Ａに格納され、ブロックアドレス１００から１９９、３００から３９９のデータはＨＤＤ−Ｂに格納されている例を示す。図１５では省略しているが、ＨＤＤ−Ｐに格納されるパリティは、アドレス空間の先頭から１００ブロック単位でＨＤＤ−ＡとＨＤＤ−Ｂのデータから生成される。ＨＤＤ−Ａは動作状態記憶媒体２１１であり、ＨＤＤ−Ｂ、ＨＤＤ−Ｐは停止状態記憶媒体２１２であるものとする。
【０１２８】
ＨＤＤ−Ｂに格納された領域へのアクセスが必要である場合、アクセス前にＨＤＤ−Ｂを動作状態に切り替える必要がある。つまりアクセス頻度の高いデータがＨＤＤ−Ｂに格納されている場合、頻繁にＨＤＤ−Ｂを動作状態に切り替える必要が発生する。本実施例では、ＨＤＤ−Ｂに格納された領域Ｘのデータが頻繁にアクセスされ、領域Ｘのデータは初期状態で不揮発キャッシュ２２に格納されているものとする。また不揮発キャッシュ２２は最大で６００ブロック分のデータを同時に格納可能であるとする。つまり初期状態では領域Ｘのデータが格納されている領域を除いた５００ブロック分のデータを新規に格納可能であるものとする。
【０１２９】
実施例１では図１５に示した領域ＷからＺまでの４つの領域に対してＲｅａｄ、Ｗｒｉｔｅを行った場合の動作例を示す。図１５では、各領域に対してストレージ装置２全体のアドレス空間での先頭ブロックとそのブロックサイズ（大きさ）、及びデータ格納先のＨＤＤとそのアドレスを示している。実施例におけるホスト１からストレージ２に対するアクセス要求列は図１６に示した順序で行う。
【０１３０】
まず図１６における１５１の領域Ｗに対するＲｅａｄを行う際の動作を示す。１５１の領域Ｗに対するＲｅａｄ要求では、ＨＤＤ−Ａのブロックアドレス０から９９に対するＲｅａｄコマンドが生成される。コマンド実行制御部２５１は生成されたコマンドを、図１１に示すステップＳ２１からＳ２７の手順で処理する。ステップＳ２１で領域Ｗのデータが不揮発キャッシュ上に存在しないことを確認し、領域Ｗの格納先であるＨＤＤ−Ａは動作状態記憶媒体であることを確認して、ステップＳ２６以降の処理を行い、ＨＤＤ−Ａからデータを読み出す。ＨＤＤ−ＡからＲｅａｄされた領域Ｗのデータが、ホスト１に対して結果として返される。また不揮発キャッシュ２２に領域Ｗのデータが格納される。
【０１３１】
次に図１６における１５２の領域Ｗに対するＷｒｉｔｅを行う際の動作を示す。ストレージ２のアクセス要求受理部２３がホスト１からの領域Ｗに対するＷｒｉｔｅ要求を受け取ると、ＨＤＤ−Ａ及びＨＤＤ−Ｐに対するＷｒｉｔｅコマンドを生成する。ＨＤＤ−Ａに対するＷｒｉｔｅコマンドは、ＨＤＤ−Ａが動作状態記憶媒体２１１であるため、ＨＤＤ−Ａに対して直接発行される。また、領域Ｗの更新前のデータが不揮発キャッシュ２２上に存在するため、不揮発キャッシュ上の領域Ｗのデータも更新される。
【０１３２】
ＨＤＤ−Ｐに対するＷｒｉｔｅコマンドは、ＨＤＤ−Ｐが停止状態記憶媒体であるため、不揮発キャッシュ２２上に記録される。不揮発キャッシュ２２には５００ブロックの空き領域が存在するため、不揮発キャッシュ２２上に領域Ｗに対するパリティデータが格納される。
【０１３３】
図１６における１５３の領域Ｘに対するＲｅａｄ処理を行う際の動作を示す。領域Ｘのデータは停止状態記憶媒体２１２に含まれるＨＤＤ−Ｂに格納されている。しかし領域Ｘのデータは既に不揮発キャッシュ２２に格納されている。そのため領域Ｘのデータは不揮発キャッシュ２２からＲｅａｄされる。
【０１３４】
図１６における１５３までのアクセス処理が終了した段階で、１５４に示した更新データの反映処理を行う場合の手順を示す。更新データの反映処理は図１４に示した手順に従って行われる。不揮発キャッシュ２２上には、領域Ｗのデータと対応するパリティ、及び領域Ｘのデータが格納されている。これらのデータのうち、領域Ｗに対応するパリティのみが、格納先であるＨＤＤ−Ｐへの更新が完了されておらずｄｉｒｔｙフラグが１である。コマンド実行制御部２５１は、記憶媒体電源制御部２４に対して停止したＨＤＤ−Ｐを動作状態に切り替えるように指示する。ＨＤＤ−Ｐが動作状態に切り替わった後にコマンド実行制御部２５１は、不揮発キャッシュ２２上の領域Ｗに対応するパリティデータをＨＤＤ−ＰにＷｒｉｔｅする。Ｗｒｉｔｅ完了後にＨＤＤ−Ｐは記憶媒体電源制御部２４により、再び停止状態に切り替わる。同時に領域Ｗに対応するパリティデータのｄｉｒｔｙフラグを０にリセットする。
【０１３５】
図１６における１５５、１５６の領域Ｘ、領域Ｙに対するＷｒｉｔｅ要求は、前記１５２と同様の手順で行われる。このとき領域Ｘ、領域Ｙに対する更新データはそれぞれ１００ブロック分である。図１５の１５４までの時点で不揮発キャッシュ２２に格納されたデータの容量は領域Ｗのデータと対応するパリティ、及び領域Ｘのデータの３００ブロック分のデータのみであるため、領域Ｘに対応するパリティ、及び領域Ｙのデータと対応するパリティを不揮発キャッシュ２２に新たに格納することが可能である。図１５における１５６のアクセス要求が完了した時点で不揮発キャッシュ２２に新たに３００ブロック分のデータ、及びパリティが格納されて空き容量は０となる。
【０１３６】
さらに図１６において１５７の領域Ｚに対するＷｒｉｔｅ要求の処理手順について述べる。図１６の１５６の処理までの時点で、不揮発キャッシュ２２の空き容量は０である。つまり１５５、１５６の処理とは異なり不揮発キャッシュ２２に領域Ｚに対する更新データを格納するためには、不揮発キャッシュ２２上に空き領域を作る必要がある。このとき領域Ｚに対するＷｒｉｔｅ処理は図１２のステップＳ３６で示されたとおり、不揮発キャッシュ２２上に必要な空き領域が確保されるまでの間ブロックする。
【０１３７】
不揮発キャッシュ２２上に領域Ｚの更新データを確保するのに必要な空き領域を確保する処理は図１３の処理手順で示した通り行われる。空き領域の確保処理では図１３のステップＳ４０１で示される通り、データ更新制御部２５３が不揮発キャッシュ管理テーブル２２１を参照して不揮発キャッシュ２２上のｄｉｒｔｙフラグが０、つまり記憶媒体２１を構成する各ＨＤＤに対する更新処理が不要なデータを選択する。前記条件に該当するデータは、図１６における１５４で更新の反映が行われた領域Ｗのデータ、及び対応するパリティのみである。不揮発キャッシュ２２に格納された領域Ｗのデータ及び対応するパリティは、既に停止状態記憶媒体ＨＤＤ−Ｂ、ＨＤＤ−Ｐへの更新が完了しているため、不揮発キャッシュ２２上及び不揮発キャッシュ管理テーブル２２１から削除が可能である。
【０１３８】
領域Ｗのデータ、及びパリティデータを削除した時点で空き容量が２００ブロックに増加するため、領域Ｚの更新されたデータ、及び対応するパリティを不揮発キャッシュ２２に格納可能であり、不揮発キャッシュ２２上に必要な空き領域を確保する処理を終了する。
【０１３９】
必要な空き領域が不揮発キャッシュ２２上に確保された後の図１６における１５７の処理は、１５２、１５５、１５６と同様の手順である。
【０１４０】
以上で図１６の１５１から１５７までのアクセス処理が完了する。この間に動作状態記憶媒体であるＨＤＤ−Ａは常時動作状態である一方で、停止状態記憶媒体であるＨＤＤ−Ｂ、及びＨＤＤ−Ｐは図１６の１５４における処理の間を除いて常に停止状態のまま運用されている。実施例１では不揮発キャッシュ２２としてｆｌａｓｈ  ＳＳＤを仮定している。これは記憶媒体２１で使用しているＨＤＤより消費電力が小さいことが理由である。そのため本発明の適用によりＨＤＤ−Ｂ、及びＨＤＤ−Ｐが一部の時間を除いて停止状態で運用を行ったことで、ストレージ装置２の消費電力の削減が実現できる。
【０１４１】
本発明の全開示（特許請求の範囲及び図面を含む）の枠内において、さらにその基本的技術思想に基づいて、実施例ないし実施例の変更・調整が可能である。また、本発明の特許請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、特許請求の範囲及び図面を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１４２】
１：ホスト
２：ストレージ装置
３：ネットワーク
２１：記憶媒体
２１１：動作状態記憶媒体
２１２：停止状態記憶媒体
２２：不揮発キャッシュ
２２１：不揮発キャッシュ管理テーブル
２３：アクセス要求処理部
２３１：アクセス解釈部
２３２：アクセス要求情報格納部
２３２１：アクセス要求管理テーブル
２３３：データ復元部
２３４：冗長データ生成部
２４：記憶媒体電源制御部
２５：コマンド実行部
２５１：コマンド実行制御部
２５２：コマンド管理情報格納部
２５２１：コマンド管理テーブル
２５３：データ更新制御部
２６：アドレス変換部
２６１：マッピングテーブル
１４１：アドレスマップ
１５１、１５２、１５３、１５５、１５６、１５７：ホストからストレージ装置に対するアクセス要求
１５４：不揮発キャッシュ上の更新データの記憶媒体への反映処理
【図１】
2012164136.tif 000003
【図２】
2012164136.tif 000004
【図３】
2012164136.tif 000005
【図４】
2012164136.tif 000006
【図５】
2012164136.tif 000007
【図６】
2012164136.tif 000008
【図７】
2012164136.tif 000009
【図８】
2012164136.tif 000010
【図９】
2012164136.tif 000011
【図１０】
2012164136.tif 000012
【図１１】
2012164136.tif 000013
【図１２】
2012164136.tif 000014
【図１３】
2012164136.tif 000015
【図１４】
2012164136.tif 000016
【図１５】
2012164136.tif 000017
【図１６】
2012164136.tif 000018