(57)【要約】【課題】小さい記憶容量で書き込み処理負荷を軽減する。【解決手段】制御部１ｂは、論理記憶領域４に対するアクセス要求の監視結果に基づいて、読み出しが要求された後に書き込みが要求される可能性の高い特定領域４ａを特定する。制御部１ｂは、特定領域４ａに含まれるデータＤ１の読み出し要求を受信した場合、データＤ１を記憶装置２ａから読み出して記憶部１ａに保持するとともにホスト装置３に送信し、さらに、データＤ１を用いて算出されたパリティＰ１を記憶装置２ｃから読み出して記憶部１ａに格納する。制御部１ｂは、データＤ１を更新するためのデータＤ１ａの書き込み要求を受信した場合、データＤ１ａと、記憶部１ａから読み出したデータＤ１およびパリティＰ１とに基づいて、パリティＰ１ａを算出し、データＤ１ａを記憶装置２ａに書き込むとともに、パリティＰ１ａを記憶装置２ｃに書き込む。【選択図】図１
2019049856.tif 000002
【特許請求の範囲】
【請求項１】
記憶部と、
ホスト装置からのアクセス要求に応じて、複数の記憶装置によって実現される論理記憶領域に対するアクセス制御を実行し、前記アクセス制御では、前記ホスト装置からの書き込み要求に応じた書き込み処理を、パリティを用いてデータが冗長化されるように制御し、
前記論理記憶領域に対するアクセス要求の監視結果に基づいて、前記論理記憶領域の中から、読み出しが要求された後に書き込みが要求される可能性の高い特定領域を特定し、
前記特定領域に含まれる第１のデータの読み出し要求を受信した場合、前記第１のデータを前記複数の記憶装置のいずれかから読み出して前記記憶部に保持するとともに前記ホスト装置に送信し、さらに、前記第１のデータを用いて算出された第１のパリティを前記複数の記憶装置のいずれかから読み出して前記記憶部に格納し、
前記第１のデータを更新するための第２のデータの書き込み要求を受信した場合、前記ホスト装置から受信した前記第２のデータと、前記記憶部からそれぞれ読み出した前記第１のデータおよび前記第１のパリティとに基づいて、第２のパリティを算出し、
前記第２のデータを前記複数の記憶装置のいずれかに書き込むとともに、前記第２のパリティを前記複数の記憶装置のいずれかに書き込む、
制御部と、
を有するストレージ制御装置。
【請求項２】
前記特定領域の特定では、前記論理記憶領域上の同一範囲に対して読み出しが要求されてから一定時間内に書き込みが要求された回数に基づいて、前記特定領域を特定する、
請求項１記載のストレージ制御装置。
【請求項３】
前記論理記憶領域は、複数の部分領域に区分され、
前記特定領域の特定では、
前記論理記憶領域上の同一範囲に対して読み出しが要求されてから一定時間内に書き込みが要求された要求回数を、前記複数の部分領域のそれぞれについて計数し、
前記複数の部分領域のそれぞれにおける前記要求回数の計数結果に基づいて、前記複数の部分領域の中から前記特定領域を特定する、
請求項１記載のストレージ制御装置。
【請求項４】
前記特定領域の特定では、
前記複数の部分領域のうち一の部分領域について、前記一の部分領域に対して書き込みが要求された合計回数に対する前記要求回数の比率が、所定の第１の閾値を超えた場合に、前記一の部分領域を前記特定領域として特定する、
請求項３記載のストレージ制御装置。
【請求項５】
前記特定領域の特定では、前記比率が前記第１の閾値を超え、かつ、前記合計回数が所定の第２の閾値を超えた場合に、前記一の部分領域を前記特定領域として特定する、
請求項４記載のストレージ制御装置。
【請求項６】
前記第２のパリティの算出では、
前記第２のデータの書き込み要求を受信したとき、前記記憶部における前記第１のデータとは別の記憶領域に前記第２のデータを格納して、書き込み完了通知を前記ホスト装置に送信し、
前記書き込み完了通知の送信後の所定のタイミングで、前記記憶部からそれぞれ読み出した前記第１のデータ、前記第２のデータおよび前記第１のパリティに基づいて、前記第２のパリティを算出する、
請求項１乃至６のいずれか１項に記載のストレージ制御装置。
【請求項７】
コンピュータに、
ホスト装置からのアクセス要求に応じて、複数の記憶装置によって実現される論理記憶領域に対するアクセス制御を実行し、前記アクセス制御では、前記ホスト装置からの書き込み要求に応じた書き込み処理を、パリティを用いてデータが冗長化されるように制御し、
前記論理記憶領域に対するアクセス要求の監視結果に基づいて、前記論理記憶領域の中から、読み出しが要求された後に書き込みが要求される可能性の高い特定領域を特定し、
前記特定領域に含まれる第１のデータの読み出し要求を受信した場合、前記第１のデータを前記複数の記憶装置のいずれかから読み出して前記コンピュータが備える記憶部に保持するとともに前記ホスト装置に送信し、さらに、前記第１のデータを用いて算出された第１のパリティを前記複数の記憶装置のいずれかから読み出して前記記憶部に格納し、
前記第１のデータを更新するための第２のデータの書き込み要求を受信した場合、前記ホスト装置から受信した前記第２のデータと、前記記憶部からそれぞれ読み出した前記第１のデータおよび前記第１のパリティとに基づいて、第２のパリティを算出し、
前記第２のデータを前記複数の記憶装置のいずれかに書き込むとともに、前記第２のパリティを前記複数の記憶装置のいずれかに書き込む、
処理を実行させるストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
ストレージシステムでは、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）技術が広く利用されている。ＲＡＩＤ技術によれば、データが２つ以上の記憶装置に冗長化されるような記録制御が行われることで、記録されるデータの安全性が高められる。また、ＲＡＩＤ技術には、複数の記録制御方式（ＲＡＩＤレベル）がある。例えば、ＲＡＩＤ−４，ＲＡＩＤ−５，ＲＡＩＤ−６といった記録制御方式では、パリティを用いることでデータが冗長化される。具体的には、一定数のデータに基づいて１以上のパリティが算出され、これらの各データおよび各パリティがすべて異なる記憶装置に記録されるように制御される。
【０００３】
このようにパリティが用いられる記録制御方式では、書き込み処理時に、ＲＡＩＤで制御される記憶装置群に対して複数回アクセスする必要があり、その分だけ書き込み処理にかかる時間が長くなり、その処理負荷が高くなるという問題がある。例えば、ＲＡＩＤ−５の場合、あるデータの更新が要求されると、更新前の旧データと、旧データを用いて算出された旧パリティとが記憶装置群から読み出される。そして、旧データおよび旧パリティと更新後の新データとを基に新パリティが算出され、新データと新パリティとが記憶装置群に書き込まれる。このように、書き込み処理の際には旧データおよび旧パリティの読み出しというアクセスが行われ、これらのアクセスは「ライトペナルティ」と呼ばれる。このようなライトペナルティの発生によって書き込み処理負荷が高くなると、ストレージシステム全体のアクセス性能が低下する可能性がある。
【０００４】
これに対して、データの読み出しが要求されたとき、読み出しデータ（旧データに対応）とともに、この読み出しデータを用いて算出されたパリティ（旧パリティに対応）をキャッシュメモリにステージングしておく技術が提案されている。この技術によれば、データの書き込みが要求されたとき、キャッシュメモリにステージングされていた旧データおよび旧パリティと書き込みデータ（新データに対応）とを基に、新パリティを算出できる。したがって、記憶装置群からの旧データおよび旧パリティの読み出しが不要になり、ライトペナルティが発生しなくなる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−２６３３６５号公報
【特許文献２】特開平７−１１０７８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、上記のように旧データと旧パリティをあらかじめステージングしておく場合、それらを格納するための記憶領域が必要となり、記憶領域の容量が増大するという問題がある。
【０００７】
１つの側面では、本発明は、小さい記憶容量で書き込み処理負荷を軽減可能なストレージ制御装置およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、記憶部と制御部とを有するストレージ制御装置が提供される。制御部は、ホスト装置からのアクセス要求に応じて、複数の記憶装置によって実現される論理記憶領域に対するアクセス制御を実行する。このアクセス制御では、制御部は、ホスト装置からの書き込み要求に応じた書き込み処理を、パリティを用いてデータが冗長化されるように制御する。また、制御部は、論理記憶領域に対するアクセス要求の監視結果に基づいて、論理記憶領域の中から、読み出しが要求された後に書き込みが要求される可能性の高い特定領域を特定する。制御部は、特定領域に含まれる第１のデータの読み出し要求を受信した場合、第１のデータを複数の記憶装置のいずれかから読み出して記憶部に格納するとともにホスト装置に送信し、さらに、第１のデータを用いて算出された第１のパリティを複数の記憶装置のいずれかから読み出して記憶部に格納する。制御部は、第１のデータを更新するための第２のデータの書き込み要求を受信した場合、ホスト装置から受信した第２のデータと、記憶部からそれぞれ読み出した第１のデータおよび第１のパリティとに基づいて、第２のパリティを算出する。制御部は、第２のデータを複数の記憶装置のいずれかに書き込むとともに、第２のパリティを複数の記憶装置のいずれかに書き込む。
【０００９】
また、１つの案では、上記のストレージ制御装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
【発明の効果】
【００１０】
１つの側面では、小さい記憶容量で書き込み処理負荷を軽減できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係るストレージ制御装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】ＣＭが備える処理機能の構成例を示すブロック図である。
【図４】キャッシュ管理情報のデータ構成例を示す図である。
【図５】履歴情報のデータ構成例を示す図である。
【図６】読み出し処理の例を示すフローチャートである。
【図７】書き込み処理の例を示すフローチャート（その１）である。
【図８】書き込み処理の例を示すフローチャート（その２）である。
【図９】ライトバック処理の例を示すフローチャートである。
【図１０】読み出し処理および書き込み処理の具体例を示す図である。
【図１１】対象ボリューム管理処理についての第１の例を示すフローチャートである。
【図１２】対象ボリューム管理処理についての第２の例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るストレージ制御装置の構成例および処理例を示す図である。図１に示すストレージ制御装置１には、記憶装置２ａ，２ｂ，２ｃ，２ｄ，・・・とホスト装置３とが接続されている。ストレージ制御装置１は、ホスト装置３からのアクセス要求に応じて、論理記憶領域４に対するアクセス制御を実行する。論理記憶領域４は、記憶装置２ａ，２ｂ，２ｃ，２ｄ，・・・のうちの複数の記憶装置を用いて実現される。
【００１３】
ストレージ制御装置１は、記憶部１ａと制御部１ｂを有する。記憶部１ａは、例えば、ストレージ制御装置１が備える図示しない記憶装置の記憶領域として実現される。制御部１ｂは、例えば、ストレージ制御装置１が備えるプロセッサとして実現される。
【００１４】
記憶部１ａは、後述するように、記憶装置２ａ，２ｂ，２ｃ，２ｄ，・・・から読み出されたデータやパリティが格納される。また、本実施の形態では、例として、記憶部１ａにはアクセス状況情報１ａ１が記憶される。アクセス状況情報１ａ１には、ホスト装置３から発行される、論理記憶領域４に対するアクセス要求の監視結果を示す情報が登録される。
【００１５】
制御部１ｂは、ホスト装置３からのアクセス要求に応じて、論理記憶領域４に対するアクセス制御を実行する。このアクセス制御では、制御部１ｂは、ホスト装置３からの書き込み要求に応じた書き込み処理を、パリティを用いてデータが冗長化されるように制御する。
【００１６】
例えば、制御部１ｂは、論理記憶領域４上の連続するアドレス領域に存在する所定数のデータの書き込み処理を行う際、これらのデータに基づいてパリティを算出する。制御部１ｂは、これらのデータおよびパリティを、論理記憶領域４に割り当てられている複数の記憶装置のうち、それぞれ異なる記憶装置に書き込む。
【００１７】
また、制御部１ｂは、ホスト装置３から発行される、論理記憶領域４に対するアクセス要求を監視する（ステップＳ１）。本実施の形態では、制御部１ｂは、アクセス要求の監視結果をアクセス状況情報１ａ１に登録する。
【００１８】
制御部１ｂは、アクセス状況情報１ａ１に登録されたアクセス要求の監視結果に基づいて、論理記憶領域４の中から、読み出しが要求された後に書き込みが要求される可能性の高い記憶領域を特定する（ステップＳ２）。以下、特定された記憶領域を「特定領域」と呼ぶ。図１では、特定領域４ａが特定されたとする。
【００１９】
この後、特定領域４ａに対するアクセス要求が発行されると、次のような処理が実行される。
制御部１ｂは、特定領域４ａに含まれるデータＤ１の読み出し要求をホスト装置３から受信したとする。ここで、データＤ１は記憶装置２ａに格納されており、データＤ１を用いて算出されたパリティＰ１は記憶装置２ｃに格納されているとする。制御部１ｂは、読み出しが要求されたデータＤ１を記憶装置２ａから読み出し、記憶部１ａに格納するとともに、ホスト装置３に送信する。さらに、制御部１ｂは、パリティＰ１を記憶装置２ｃから読み出し、記憶部１ａに格納する（ステップＳ３）。
【００２０】
その後、制御部１ｂは、データＤ１を更新するためのデータＤ１ａの書き込み要求をホスト装置３から受信したとする。ここでは、ライトバック処理が非同期に実行される方式が採用されるとすると、制御部１ｂは、ホスト装置３から受信したデータＤ１ａを記憶部１ａに格納して、書き込み完了応答をホスト装置３に送信する（ステップＳ４）。ただし、データＤ１ａは、更新前のデータＤ１とは別の記憶領域に格納される。
【００２１】
そして、制御部１ｂはその後に、データＤ１ａのライトバック処理を次のように実行する。制御部１ｂは、データＤ１とパリティＰ１とデータＤ１ａとを記憶部１ａから読み出し、これらに基づいて新たなパリティＰ１ａを算出する。制御部１ｂは、データＤ１ａを記憶装置２ａに格納してデータＤ１を更新するとともに、パリティＰ１ａを記憶装置２ｃに格納してパリティＰ１を更新する（ステップＳ５）。
【００２２】
このライトバック処理では、更新前のデータＤ１と更新前のパリティＰ１とをそれぞれ記憶装置２ａ，２ｃから読み出す必要がない。このため、ライトバック処理にかかる時間が短縮され、その処理負荷が軽減される。その結果、書き込み要求に応じた書き込み処理全体にかかる時間を短縮でき、その処理負荷を軽減できる。
【００２３】
なお、書き込み完了応答を送信する前にライトバック処理が実行されるライトスルー方式が採用された場合、書き込み完了応答の送信前に次のようなライトバック処理が実行される。制御部１ｂは、記憶部１ａから読み出したデータＤ１およびパリティＰ１と、ホスト装置３から受信したデータＤ１ａとに基づいて、パリティＰ１ａを算出する。制御部１ｂは、データＤ１ａを記憶装置２ａに格納してデータＤ１を更新するとともに、パリティＰ１ａを記憶装置２ｃに格納してパリティＰ１を更新する。
【００２４】
このようにライトスルー方式が採用された場合でも、ライトバック処理の際に、更新前のデータＤ１と更新前のパリティＰ１とをそれぞれ記憶装置２ａ，２ｃから読み出す必要がない。このため、ライトバック処理にかかる時間が短縮され、その処理負荷が軽減される。その結果、書き込み要求に応じた書き込み処理全体にかかる時間を短縮でき、その処理負荷を軽減できる。
【００２５】
以上のような制御部１ｂの処理によれば、論理記憶領域４の中から、読み出しが要求された後に書き込みが要求される可能性の高い記憶領域が、特定領域４ａとして特定される。そして、特定領域４ａに含まれるデータの読み出しが要求されると、そのデータとともに、そのデータを基に算出されたパリティが記憶部１ａに格納される。
【００２６】
これにより、ライトバック時に新たなパリティを算出するために使用される可能性の高い旧パリティだけが、記憶部１ａにあらかじめ格納されるようになる。その結果、書き込み処理全体の処理時間の短縮効果やその処理負荷の軽減効果を維持しながら、パリティを格納するための記憶部１ａの記憶容量を削減できる。したがって、小さい記憶容量で、書き込み処理全体の処理時間を短縮でき、また、その処理負荷を軽減できる。
【００２７】
〔第２の実施の形態〕
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。図２に示すストレージシステムは、ストレージ装置１０とホスト装置２０を含む。また、ストレージ装置１０は、ＣＭ（Controller Module）１００とＤＥ（Drive Enclosure）２００を有する。ホスト装置２０は、ＣＭ１００と接続されている。
【００２８】
ＣＭ１００は、ホスト装置２０からの要求に応じて、ＤＥ２００に搭載された記憶装置にアクセスするストレージ制御装置である。具体的には、ＣＭ１００は、ＤＥ２００に搭載された記憶装置の記憶領域を用いた論理ボリュームを設定し、ホスト装置２０から論理ボリュームに対するアクセス要求を受け付ける。
【００２９】
ＤＥ２００には、ホスト装置２０からのアクセス対象の記憶装置として、ＨＤＤ（Hard Disk Drive）２０１，２０２，２０３，・・・が搭載されている。なお、ＤＥ２００に搭載される記憶装置は、ＨＤＤに限らず、例えば、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置であってもよい。
【００３０】
ホスト装置２０は、例えば、種々の業務処理を実行するコンピュータである。なお、ホスト装置２０とＣＭ１００との間は、例えば、ファイバチャネル（ＦＣ：Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）などを用いたＳＡＮ（Storage Area Network）を介して接続される。
【００３１】
次に、図２を参照しながら、ＣＭ１００のハードウェア構成例について説明する。ＣＭ１００は、プロセッサ１０１、ＲＡＭ（Random Access Memory）１０２、ＳＳＤ１０３、ホストインタフェース（Ｉ／Ｆ）１０４およびドライブインタフェース（Ｉ／Ｆ）１０５を有する。
【００３２】
プロセッサ１０１は、ＣＭ１００全体を統括的に制御する。プロセッサ１０１は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＧＰＵ（Graphics Processing Unit）、ＰＬＤ（Programmable Logic Device）のいずれかである。また、プロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＧＰＵ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３３】
ＲＡＭ１０２は、ＣＭ１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００３４】
ＳＳＤ１０３は、ＣＭ１００の補助記憶装置である。ＳＳＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ＣＭ１００は、補助記憶装置として、ＳＳＤ１０３の代わりにＨＤＤを備えていてもよい。
【００３５】
ホストインタフェース１０４は、ホスト装置２０と通信するためのインタフェースである。ドライブインタフェース１０５は、ＤＥ内のＨＤＤ２０１，２０２，２０３，・・・と通信するためのインタフェースである。
【００３６】
図３は、ＣＭが備える処理機能の構成例を示すブロック図である。ＣＭ１００は、記憶部１１０、ホストＩ／Ｏ制御部１２０、ＲＡＩＤ制御部１３０および対象ボリューム設定部１４０を有する。記憶部１１０は、ＣＭ１００が備える記憶装置（例えば、ＲＡＭ１０２）の記憶領域として実現される。ホストＩ／Ｏ制御部１２０、ＲＡＩＤ制御部１３０および対象ボリューム設定部１４０の処理は、プロセッサ１０１が所定のプログラムを実行することで実現される。
【００３７】
記憶部１１０には、キャッシュ領域１１１が確保される。キャッシュ領域１１１には、論理ボリュームに対して読み書きされるデータがキャッシュされる。また、キャッシュ領域１１１には、後述する関連パリティも格納される。
【００３８】
記憶部１１０には、さらに、キャッシュ管理情報１１２、ボリューム管理情報１１３、履歴情報１１４および対象ボリューム情報１１５が格納される。
キャッシュ管理情報１１２は、キャッシュ領域１１１の使用状況を管理するための情報である。キャッシュ管理情報１１２は、キャッシュ領域１１１内のキャッシュページごとのエントリを有し、各エントリには、キャッシュページに格納されているデータに関する情報が登録される。
【００３９】
ボリューム管理情報１１３には、ＣＭ１００に設定された論理ボリュームに関する情報が登録される。例えば、ボリューム管理情報１１３には、論理ボリュームを識別するボリューム名、論理ボリュームの書き込み制御に用いられるＲＡＩＤレベル、論理ボリュームの物理記憶領域として割り当てられたＨＤＤの識別情報が登録される。
【００４０】
履歴情報１１４には、ホスト装置２０から各論理ボリュームに対して要求された読み出し要求の履歴が登録される。
対象ボリューム情報１１５には、設定された論理ボリュームのボリューム名のうち、後述する関連パリティのステージングを行う対象とする「対象ボリューム」のボリューム名が登録される。
【００４１】
記憶部１１０には、さらに、対象ボリュームを決定するために用いる統計データとして、書き込み合計数Ｎｔと書き込み数Ｎｗが格納される。書き込み合計数Ｎｔと書き込み数Ｎｗは、それぞれ論理ボリュームごとに設定される。書き込み合計数Ｎｔは、論理ボリュームに対して書き込みが要求されたトータルの回数を示す。書き込み数Ｎｗは、論理ボリューム上の同じブロックに対して読み出しが要求された直後に書き込みが要求された回数を示す。書き込み数Ｎｗは、あるブロックに対して読み出しが要求されてから、そのブロックに対して一定時間内に書き込みが要求されたときに、カウントアップされる。
【００４２】
なお、書き込み合計数Ｎｔと書き込み数Ｎｗは、履歴情報１１４とともに、対象ボリュームを決定するための統計データとして用いられる。
ホストＩ／Ｏ制御部１２０は、ホスト装置２０から各論理ボリュームに対するＩ／Ｏ要求（読み出し要求または書き込み要求）を受信し、Ｉ／Ｏ要求に応じた論理ボリュームに対するＩ／Ｏ処理を実行する。その際、ホストＩ／Ｏ制御部１２０は、キャッシュ領域１１１を利用する。
【００４３】
例えば、ホストＩ／Ｏ制御部１２０は、ある論理ボリュームからのデータの読み出し要求を受信すると、キャッシュ管理情報１１２を参照して、読み出しデータがキャッシュ領域１１１に格納されているかを判定する。読み出しデータがキャッシュ領域１１１に格納されていた場合、ホストＩ／Ｏ制御部１２０は、読み出しデータをキャッシュ領域１１１から読み出してホスト装置２０に送信する。
【００４４】
一方、読み出しデータがキャッシュ領域１１１に格納されていない場合、ホストＩ／Ｏ制御部１２０は、読み出しデータをＲＡＩＤ制御部１３０を介してＤＥ２００から取得する。ここで、読み出し元の論理ボリュームが対象ボリュームに設定されている場合、ホストＩ／Ｏ制御部１２０は、読み出しデータに対応する関連パリティを、ＲＡＩＤ制御部１３０を介してＤＥ２００から取得する。関連パリティとは、読み出しデータがその後に更新され、更新されたデータがＤＥ２００にライトバックされる際に、新たなパリティを算出するために必要なパリティである。また、関連パリティは、読み出しデータを用いて算出され、ＤＥ２００に書き込まれたパリティである。
【００４５】
ホストＩ／Ｏ制御部１２０は、取得した読み出しデータをキャッシュ領域１１１に格納するとともに、ホスト装置２０に送信する。また、ホストＩ／Ｏ制御部１２０は、取得した関連パリティもキャッシュ領域１１１に格納する。このように、対象ボリュームに設定されている論理ボリュームからの読み出しが要求された場合には、読み出しデータとともに関連パリティがキャッシュ領域１１１にステージングされる。
【００４６】
また、ホストＩ／Ｏ制御部１２０は、ある論理ボリュームに対するデータの書き込み要求を受信すると、書き込みデータをキャッシュ領域１１１に格納する。このとき、論理ボリュームが対象ボリュームに設定され、書き込みデータに対応する関連パリティがキャッシュ領域１１１に格納されている場合には、ホストＩ／Ｏ制御部１２０は、書き込みデータ（新データ）を、キャッシュ領域１１１のうち更新前の旧データとは別の領域に格納する。ホストＩ／Ｏ制御部１２０は、その後の所定のタイミングで、キャッシュ領域１１１に格納した書き込みデータ（新データ）をＤＥ２００に反映させるライトバック処理を、ＲＡＩＤ制御部１３０に実行させる。
【００４７】
ＲＡＩＤ制御部１３０は、論理ボリュームの物理記憶領域を実現するＤＥ２００内のＨＤＤに対するアクセスを、ＲＡＩＤによって制御する。本実施の形態では、ＲＡＩＤレベルとしてＲＡＩＤ−５が用いられるものとする。すなわち、ＲＡＩＤ制御部１３０は、論理ボリュームを一定サイズのストリップに分割する。そして、ＲＡＩＤ制御部１３０は、連続する所定数のストリップとそれらに基づくパリティとがそれぞれ異なるＨＤＤに格納され、かつ、ストライプ（所定数のストリップ）ごとにパリティが異なるＨＤＤに分散されるように制御する。
【００４８】
ここで、ＲＡＩＤ制御部１３０は、対象ボリュームに設定されている論理ボリュームにおいて更新された新データをライトバックする場合、新データに対応する関連パリティがキャッシュ領域１１１に格納されているかを判定する。関連パリティがキャッシュ領域１１１に格納されている場合、ＲＡＩＤ制御部１３０は、キャッシュ領域１１１から新データ、旧データおよび関連パリティを読み出し、それらに基づいて新パリティを算出する。ＲＡＩＤ制御部１３０は、新データと新パリティとを、それぞれＤＥ２００内の対応するＨＤＤに書き込む。このように、関連パリティがキャッシュ領域１１１に格納されている場合には、旧パリティをＤＥ２００から読み出す処理が実行されなくなり、ライトペナルティの発生回数を低減できる。
【００４９】
対象ボリューム設定部１４０は、論理ボリュームに対する書き込みが要求されるたびに、その論理ボリュームに対応する書き込み合計数Ｎｔをカウントアップする。これとともに、対象ボリューム設定部１４０は、履歴情報１１４に基づき、書き込みが要求された同じ領域に対する読み出しがそれ以前の一定時間内に要求されていた場合には、その論理ボリュームに対応する書き込み数Ｎｗをカウントアップする。そして、対象ボリューム設定部１４０は、書き込み合計数Ｎｔと書き込み回数Ｎｗに基づいて、その論理ボリュームにおいて、読み出し直後の書き込み回数が多いと判定した場合には、その論理ボリュームを対象ボリュームに設定する。その場合、対象ボリューム設定部１４０は、その論理ボリュームのボリューム名を対象ボリューム情報１１５に登録する。
【００５０】
図４は、キャッシュ管理情報のデータ構成例を示す図である。キャッシュ管理情報１１２は、キャッシュ領域１１１内のキャッシュページごとのエントリ１１２ａ，１１２ｂ，１１２ｃ，・・・を含む。そして、エントリ１１２ａ，１１２ｂ，１１２ｃ，・・・は、所定の方法で、それぞれキャッシュ領域１１１上のいずれかのキャッシュページに対応付けられる。
【００５１】
なお、キャッシュページは、論理ボリューム上の所定数の論理ブロック分のサイズを有するものとする。例えば、論理ブロックのサイズは５１２バイトであり、キャッシュページのサイズは１メガバイトである。そして、キャッシュページには、連続する所定数の論理ブロックの読み出しデータまたは書き込みデータが格納されるものとする。さらに、本実施の形態では、キャッシュページには、読み出しデータおよび書き込みデータの他に、関連パリティも格納され得る。
【００５２】
各エントリは、ボリューム番号、論理アドレス、ビットマップ、属性の各項目を有する。ボリューム番号は、エントリに対応するキャッシュページに格納されたデータがどの論理ボリュームに属するかを示す。論理アドレスは、エントリに対応するキャッシュページに格納されたデータについての、論理ボリューム上の先頭論理アドレスを示す。ビットマップは、キャッシュページにおける論理ブロックのサイズごとのビット値を有し、各ビット値は、対応する論理ブロックのデータが書き込まれているか否かを示す。
【００５３】
属性は、キャッシュページに格納されたデータの属性を示す。属性としては、読み出しデータ属性、書き込みデータ属性、新データ属性、パリティ属性がある。読み出しデータ属性は、読み出し要求に応じてキャッシュページにステージングされた読み出しデータを示す。書き込みデータ属性は、対応する関連パリティがキャッシュ領域１１１に格納されていない状態において、書き込み要求に応じてキャッシュページに格納された書き込みデータを示す。新データ属性は、対応する関連パリティがキャッシュ領域１１１に格納されている状態において、書き込み要求に応じてキャッシュページに格納された書き込みデータを示す。パリティ属性は、関連パリティを示す。
【００５４】
図５は、履歴情報のデータ構成例を示す図である。履歴情報１１４は、時刻、ボリューム番号、先頭アドレス、データサイズの各項目を有する。履歴情報１１４には、ホスト装置２０から読み出し要求を受信するたびに、上記各項目に対応する情報を含むレコードが登録される。
【００５５】
時刻は、読み出し要求を受信した時刻を示す。ボリューム番号、先頭アドレスおよびデータサイズは、読み出し要求において指定された読み出し範囲に関する情報を示す。ボリューム番号は、読み出し範囲が属する論理ボリュームの識別番号を示し、先頭アドレスは、読み出し範囲の先頭論理アドレスを示し、データサイズは、読み出し範囲のサイズを示す。
【００５６】
次に、ＣＭ１００の処理についてフローチャートを用いて説明する。
まず、図６は、読み出し処理の例を示すフローチャートである。なお、説明を簡単にするために、図６では、１回で読み出しを要求できるデータサイズの上限をストライプサイズとする。
【００５７】
［ステップＳ１１］ホストＩ／Ｏ制御部１２０は、ホスト装置２０から読み出し要求を受信する。
［ステップＳ１２］ホストＩ／Ｏ制御部１２０は、対象ボリューム情報１１５を参照し、読み出しが要求された論理ボリュームが対象ボリュームに設定されているかを判定する。ホストＩ／Ｏ制御部１２０は、論理ボリュームが対象ボリュームに設定されている場合、ステップＳ１３の処理を実行し、論理ボリュームが対象ボリュームに設定されていない場合、ステップＳ１４の処理を実行する。
【００５８】
［ステップＳ１３］ホストＩ／Ｏ制御部１２０は、読み出しが要求されたデータサイズがストライプサイズであるかを判定する。ホストＩ／Ｏ制御部１２０は、データサイズがストライプサイズである場合、ステップＳ１４の処理を実行し、データサイズがストライプサイズより小さい場合、ステップＳ１５の処理を実行する。
【００５９】
［ステップＳ１４］ホストＩ／Ｏ制御部１２０は、読み出しが要求された読み出しデータがキャッシュ領域１１１に格納されていない場合（ミスヒットの場合）には、読み出しデータをＲＡＩＤ制御部１３０を介してＤＥ２００から取得する。ホストＩ／Ｏ制御部１２０は、取得した読み出しデータをキャッシュ領域１１１にステージングする。このとき、ステージング先のキャッシュページに対応する、キャッシュ管理情報１１２のエントリは、読み出しデータ属性に設定される。そして、そのエントリには、読み出しが要求された論理ボリューム上のアドレス範囲に読み出しデータが格納されたことを示す情報が登録される。
【００６０】
なお、読み出しデータがキャッシュ領域１１１に格納されている場合（キャッシュヒットの場合）、ステップＳ１４の処理はスキップされる。
［ステップＳ１５］ホストＩ／Ｏ制御部１２０は、キャッシュ管理情報１１２のエントリのうち、パリティ属性が登録されたエントリを参照して、読み出しデータに対応する関連パリティがキャッシュ領域１１１にステージング済みであるかを判定する。ホストＩ／Ｏ制御部１２０は、関連パリティがステージング済みの場合、ステップＳ１７の処理を実行し、関連パリティがステージング済みでない場合、ステップＳ１６の処理を実行する。
【００６１】
［ステップＳ１６］ホストＩ／Ｏ制御部１２０は、ステップＳ１４と同様に、読み出しが要求された読み出しデータがキャッシュ領域１１１に格納されていない場合（ミスヒットの場合）には、読み出しデータをＲＡＩＤ制御部１３０を介してＤＥ２００から取得する。ホストＩ／Ｏ制御部１２０は、取得した読み出しデータをキャッシュ領域１１１にステージングする。
【００６２】
これに加えて、ホストＩ／Ｏ制御部１２０は、読み出しデータに対応する関連パリティを、ＲＡＩＤ制御部１３０介してＤＥ２００から取得する。ホストＩ／Ｏ制御部１２０は、取得した関連パリティを、キャッシュ領域１１１における読み出しデータとは別のキャッシュページにステージングする。このとき、ステージング先のキャッシュページに対応する、キャッシュ管理情報１１２のエントリに、関連パリティが格納されたことを示す情報が登録される。また、そのエントリには、パリティ属性が登録される。
【００６３】
なお、読み出しデータがキャッシュ領域１１１に格納されている場合（キャッシュヒットの場合）、ステップＳ１６では関連パリティのステージングのみが行われる。
［ステップＳ１７］ホストＩ／Ｏ制御部１２０は、読み出しデータをホスト装置２０に送信することで、ホスト装置２０に応答する。なお、ステップＳ１６が実行された場合、ホストＩ／Ｏ制御部１２０は、読み出しデータがＤＥ２００から取得されていれば、関連パリティがＤＥ２００から取得される前にホスト装置２０に応答することができる。
【００６４】
［ステップＳ１８］ホストＩ／Ｏ制御部１２０は、履歴情報１１４に、ステップＳ１１で受信した読み出し要求に関する情報を含むレコードを登録する。
以上の図６の処理では、ホストＩ／Ｏ制御部１２０は、対象ボリュームからの読み出し要求を受信すると、読み出しデータに加えてその関連パリティもＤＥ２００からキャッシュ領域１１１にステージングする。ただし、ホストＩ／Ｏ制御部１２０は、読み出しデータのサイズがストライプサイズと同じ場合には、関連パリティをステージングしない。これは、ストライプサイズと同じサイズの読み出しデータがキャッシュ領域１１１にステージングされていれば、その読み出しデータに対して更新が要求され、更新後のデータをライトバックする際に、関連パリティを用いずにステージング済みの更新前の読み出しデータを用いることで新パリティを算出できるからである。したがって、このようなケースでは関連パリティをステージングしないようにすることで、図６の読み出し処理にかかる時間を短縮できるとともに、キャッシュ領域１１１の使用効率を高めることができる。
【００６５】
次に、図７、図８は、書き込み処理の例を示すフローチャートである。なお、説明を簡単にするために、図７、図８では、１回で書き込みを要求できるデータサイズの上限をストライプサイズとする。
【００６６】
［ステップＳ２１］ホストＩ／Ｏ制御部１２０は、ホスト装置２０から書き込み要求を受信する。
［ステップＳ２２］ホストＩ／Ｏ制御部１２０は、対象ボリューム情報１１５を参照し、書き込みが要求された論理ボリュームが対象ボリュームに設定されているかを判定する。ホストＩ／Ｏ制御部１２０は、論理ボリュームが対象ボリュームに設定されている場合、ステップＳ２４の処理を実行し、論理ボリュームが対象ボリュームに設定されていない場合、ステップＳ２３の処理を実行する。
【００６７】
［ステップＳ２３］ホストＩ／Ｏ制御部１２０は、書き込みが要求されたアドレス範囲のデータ（旧データ）がキャッシュ領域１１１に格納されている場合（キャッシュヒットの場合）には、キャッシュ領域１１１の旧データを書き込みが要求された新データによって上書きする。このとき、旧データが格納されているキャッシュページに対応する、キャッシュ管理情報１１２のエントリが読み出しデータ属性である場合、書き込みデータ属性に更新される。また、上書きによりキャッシュページに格納された新データは、ライトバックが必要なダーティデータとして管理される。
【００６８】
なお、ホストＩ／Ｏ制御部１２０は、旧データがキャッシュ領域１１１に格納されていない場合（ミスヒットの場合）、新データをキャッシュ領域１１１の新たなキャッシュページに格納する。
【００６９】
［ステップＳ２４］ホストＩ／Ｏ制御部１２０は、旧データがキャッシュ領域１１１に格納されている場合（キャッシュヒットの場合）には、新データをキャッシュ領域１１１上の旧データとは別のキャッシュページに書き込む。このとき、新データが書き込まれたキャッシュページに対応する、キャッシュ管理情報１１２のエントリは、新データ属性に設定される。そして、そのエントリには、書き込みが要求された論理ボリューム上のアドレス範囲に書き込みデータが格納されたことを示す情報が登録される。また、旧データが格納されているキャッシュページに対応する、キャッシュ管理情報１１２のエントリが読み出しデータ属性である場合、書き込みデータ属性に更新される。さらに、旧データは、ライトバックが必要なダーティデータとして管理される。
【００７０】
なお、ホストＩ／Ｏ制御部１２０は、旧データがキャッシュ領域１１１に格納されていない場合（ミスヒットの場合）、新データをキャッシュ領域１１１における書き込みデータ属性のキャッシュページに格納する。
【００７１】
［ステップＳ２５］ホストＩ／Ｏ制御部１２０は、書き込み完了通知をホスト装置２０に送信することで、ホスト装置２０に応答する。
この後、ホストＩ／Ｏ制御部１２０は、対象ボリューム設定部１４０に図８の処理を実行させる。
【００７２】
［ステップＳ３１］対象ボリューム設定部１４０は、書き込みが要求された論理ボリュームに対応する書き込み合計数Ｎｔをカウントアップする。
［ステップＳ３２］対象ボリューム設定部１４０は、履歴情報１１４を参照して、書き込みが要求された論理ボリューム上のアドレス範囲を指定して、所定時間前から現在までの間に読み出しが行われたかを判定する。対象ボリューム設定部１４０は、読み出しが行われた場合、ステップＳ３３の処理を実行し、読み出しが行われていない場合、処理を終了する。
【００７３】
［ステップＳ３３］対象ボリューム設定部１４０は、書き込みが要求された論理ボリュームに対応する書き込み数Ｎｗをカウントアップする。
［ステップＳ３４］対象ボリューム設定部１４０は、次の２つの条件が満たされるかを判定する。第１の条件は、書き込み合計数Ｎｔが所定の閾値ＴＨ１より大きいという条件である。第２の条件は、書き込み数比率が所定の閾値ＴＨ２より大きいという条件である。書き込み数比率とは、書き込み合計数Ｎｔに対する書き込み数Ｎｗの割合を示す。
【００７４】
対象ボリューム設定部１４０は、上記２つの条件が両方満たされる場合、ステップＳ３５の処理を実行し、条件が１つでも満たされない場合、処理を終了する。
［ステップＳ３５］対象ボリューム設定部１４０は、書き込みが要求された論理ボリュームを対象ボリュームに設定する。具体的には、対象ボリューム設定部１４０は、書き込みが要求された論理ボリュームのボリューム名を、対象ボリューム情報１１５に登録する。
【００７５】
ここで、ステップＳ３４では、第２の条件が満たされる場合、該当論理ボリュームにおいて、読み出しから一定時間内に同じアドレス範囲への書き込みが行われた回数が多いと判定される。一方、第２の条件に基づく判定の精度は、書き込み数比率の分母である書き込み合計数Ｎｔがある程度大きい方が高くなる。そこで、本実施の形態では、第２の条件に加えて第１の条件が満たされる場合に該当論理ボリュームを対象ボリュームに決定することで、対象ボリュームを正確に決定できるようになる。
【００７６】
［ステップＳ３６］対象ボリューム設定部１４０は、書き込みが要求された論理ボリュームに対応する書き込み数Ｎｗを「０」にリセットする。
次に、図９は、ライトバック処理の例を示すフローチャートである。ホストＩ／Ｏ制御部１２０は、キャッシュ領域１１１に格納されている、ダーティデータとして管理されているデータの中から、ライトバック対象データを選択する。例えば、ダーティデータとして管理されているデータのうち、最新の更新時刻が最も早いデータが、ライトバック対象データとして選択される。ホストＩ／Ｏ制御部１２０は、選択されたライトバック対象データを示すアドレス情報（論理ボリュームのボリューム名、論理アドレス、データサイズ）をＲＡＩＤ制御部１３０に指定して、ライトバック処理の実行を依頼する。これにより、図９の処理が開始される。
【００７７】
［ステップＳ４１］ＲＡＩＤ制御部１３０は、ライトバック対象データのサイズがストライプサイズであるかを判定する。ＲＡＩＤ制御部１３０は、データのサイズがストライプサイズである場合、ステップＳ４２の処理を実行し、データのサイズがストライプサイズより小さい場合、ステップＳ４３の処理を実行する。
【００７８】
［ステップＳ４２］ＲＡＩＤ制御部１３０は、ライトバック対象データを基に新パリティを計算する。
［ステップＳ４３］ＲＡＩＤ制御部１３０は、対象ボリューム情報１１５を参照し、ライトバック対象データが属する論理ボリュームが対象ボリュームに設定されているかを判定する。ＲＡＩＤ制御部１３０は、該当論理ボリュームが対象ボリュームに設定されている場合、ステップＳ４４の処理を実行し、設定されていない場合、ステップＳ４５の処理を実行する。
【００７９】
［ステップＳ４４］ＲＡＩＤ制御部１３０は、キャッシュ管理情報１１２を参照し、ライトバック対象データに対応する関連パリティと旧データとがキャッシュ領域１１１に格納されているかを判定する。ＲＡＩＤ制御部１３０は、これらが両方ともキャッシュ領域１１１に格納されている場合、ステップＳ４６の処理を実行し、これらのうち一方でもキャッシュ領域１１１に格納されていない場合、ステップＳ４５の処理を実行する。
【００８０】
なお、関連パリティがキャッシュ領域１１１に格納されていないケースとは、キャッシュ管理情報１１２に、ライトバック対象のアドレス範囲に対応するパリティがキャッシュページに格納されていることを示すパリティ属性のエントリが存在しないケースである。
【００８１】
また、旧データがキャッシュ領域１１１に格納されていないケースとは、旧データが新データによって上書きされているケースである。このケースでは、キャッシュ管理情報１１２に、ライトバック対象のアドレス範囲のデータがキャッシュページに格納されていることを示す書き込みデータ属性のエントリだけが存在し、同じアドレス範囲のデータがキャッシュページに格納されていることを示す新データ属性のエントリは存在しない。
【００８２】
［ステップＳ４５］ＲＡＩＤ制御部１３０は、ライトバック対象のアドレス範囲に対応する旧データと旧パリティをＤＥ２００から読み出す。なお、ステップＳ４４で関連パリティのみ格納されていないと判定された場合には、旧パリティのみＤＥ２００から読み出される。
【００８３】
［ステップＳ４６］ＲＡＩＤ制御部１３０は、ライトバック対象のアドレス範囲に対応する旧データ、旧パリティ、新データを基に、新パリティを計算する。
ここで、ステップＳ４４〜Ｓ４６に関して説明を補足する。ステップＳ４４で関連パリティのみ格納されていない判定された場合、ＲＡＩＤ制御部１３０は、ステップＳ４５において、旧データを含むストライプ全体のデータがキャッシュ領域１１１に格納されているかを判定する。ストライプ全体のデータがキャッシュ領域１１１に揃っていない場合、ＲＡＩＤ制御部１３０は、ステップＳ４５において、旧パリティのみＤＥ２００から読み出す。
【００８４】
一方、ストライプ全体のデータがキャッシュ領域１１１に格納されている場合には、ＲＡＩＤ制御部１３０は、次のようにして新パリティを計算する。ＲＡＩＤ制御部１３０は、キャッシュ領域１１１に格納されているストライプ全体のデータのうち、旧データの領域を新データで上書きする。ＲＡＩＤ制御部１３０は、上書きが行われたストライプ全体のデータをキャッシュ領域１１１から読み出し、読み出したこれらのデータを基に新パリティを算出する。この場合には、ライトペナルティは発生しない。
【００８５】
［ステップＳ４７］ＲＡＩＤ制御部１３０は、新データと、ステップＳ４２またはステップＳ４６で算出された新パリティとを、ＤＥ２００内の該当するＨＤＤに書き込む。
［ステップＳ４８］ＲＡＩＤ制御部１３０は、旧データがキャッシュ領域１１１に格納されている場合、この旧データを破棄する。例えば、ＲＡＩＤ制御部１３０は、キャッシュ領域１１１上の旧データを新データによって上書きし、元の新データをキャッシュ領域１１１から消去する。また、破棄した旧データに対応する関連パリティがキャッシュ領域１１１に格納されている場合、ＲＡＩＤ制御部１３０は、この関連パリティを算出された新パリティによって上書きする。これにより、古い関連パリティが更新される。ＲＡＩＤ制御部１３０は、このようにしてキャッシュ領域１１１に残された更新後の関連パリティを、その後に新データの再更新が要求された場合に、再更新後のデータに対応する新パリティの算出のために使用することができる。
【００８６】
以上のＣＭ１００の処理によれば、図８のステップＳ３４で「書き込み数比率が所定の閾値ＴＨ２より大きい」という条件が満たされた論理ボリュームが、対象ボリュームに設定される。これにより、読み出しが要求されてから短時間で同じアドレス範囲に対する書き込みが要求される可能性が高い論理ボリュームを、対象ボリュームに設定することができる。
【００８７】
そして、このようにして対象ボリュームに設定された論理ボリューム上のデータに対応する関連パリティが、図９の処理により、キャッシュ領域１１１にあらかじめステージングされる。これにより、ライトバック処理時に新パリティ算出のために利用される可能性の高い関連パリティだけが、キャッシュ領域１１１にあらかじめステージングされるようになる。その結果、キャッシュ領域１１１の利用効率を高めつつ、ライトバック処理時のライトペナルティ発生回数を低減できる。
【００８８】
ライトペナルティ発生回数の低減により、ライトバック処理の負荷を軽減でき、その結果として、ホスト装置２０からのアクセス要求に応じたＣＭ１００の応答性能を向上させることができる。したがって、キャッシュ領域１１１の必要容量を抑制しながらも、ＣＭ１００によるストレージ制御動作の性能を向上させることができる。
【００８９】
なお、キャッシュ領域１１１にステージングされた関連パリティは、新パリティの算出のために必ず使用されるとは限らない。そこで、キャッシュ領域１１１を有効利用するために、関連パリティは次のような処理によってキャッシュ領域１１１から削除される。
【００９０】
例えば、ＲＡＩＤ制御部１３０は、キャッシュ領域１１１の残容量が所定量以下に低下した場合に、キャッシュ領域１１１に存在する関連パリティのうち、キャッシュ領域１１１への格納時刻（更新された場合は更新時刻）が最も古い所定数の関連パリティを削除する。この場合、未使用期間が最も長い所定数の関連パリティが削除される。あるいは、ＲＡＩＤ制御部１３０は、キャッシュ領域１１１に存在する関連パリティを、その関連パリティのキャッシュ領域１１１への格納時刻（更新された場合は更新時刻）から一定時間後に削除してもよい。この場合、未使用期間の長さが一定時間に達した関連パリティが削除される。
【００９１】
また、ＲＡＩＤ制御部１３０は、キャッシュ領域１１１の残容量低下に伴ってキャッシュ領域１１１から古いデータを追い出す際に、そのデータに対応する関連パリティがキャッシュ領域１１１に存在する場合には、関連パリティもキャッシュ領域１１１から削除する。
【００９２】
ここで、図１０は、読み出し処理および書き込み処理の具体例を示す図である。図１０では、論理ボリュームＬＶ１が対象ボリュームに設定されたものとする。また、論理ボリュームＬＶ１には、ＤＥ２００に搭載されたＨＤＤ２１１〜２１４が割り当てられている。そして、論理ボリュームＬＶ１はＲＡＩＤ−５で制御されるものとする。
【００９３】
さらに、論理ボリュームＬＶ１における連続するアドレス空間には、データＤ１１〜Ｄ１６が存在している。そして、データＤ１１，Ｄ１２，Ｄ１３は、それぞれＨＤＤ２１１，２１２，２１３に格納され、データＤ１１〜Ｄ１３に基づいて算出されたパリティＰ１１がＨＤＤ２１４に格納されている。また、データＤ１４，Ｄ１５，Ｄ１６は、それぞれＨＤＤ２１１，２１２，２１４に格納され、データＤ１４〜Ｄ１６に基づいて算出されたパリティＰ１２がＨＤＤ２１３に格納されている。
【００９４】
この状態で、ホスト装置２０からデータＤ１２の読み出しが要求されたとする。この場合、図１０の左側に示すように、データＤ１２がＨＤＤ２１２から読み出される。読み出されたデータＤ１２は、キャッシュ領域１１１に格納されるとともに、ホスト装置２０に送信される。これとともに、関連パリティであるパリティＰ１１がＨＤＤ２１４から読み出され、キャッシュ領域１１１に格納される。
【００９５】
この後、ホスト装置２０から、データＤ１２をデータＤ１２ａによって更新するための書き込みが要求されたとする。この場合、図１０の右側に示すように、データＤ１２ａは、キャッシュ領域１１１上のデータＤ１２とは別の領域に格納され、ホスト装置２０に対する応答が行われる。そして、データＤ１２ａのライトバック処理では、更新前のデータＤ１２、更新前のパリティＰ１１、更新後のデータＤ１２ａがそれぞれキャッシュ領域１１１から読み出され、これらの排他的論理和（ＸＯＲ）が計算されることで、更新後のパリティＰ１１ａが算出される。更新後のデータＤ１２ａはＨＤＤ２１２に書き込まれ、更新後のパリティＰ１１ａはＨＤＤ２１４に書き込まれる。
【００９６】
このように、パリティ算出のために必要となるデータＤ１２およびパリティＰ１１があらかじめキャッシュ領域１１１にステージングされていることで、ライトバック処理の際にこれらをＨＤＤ２１２，２１４からそれぞれ読み出す必要がなくなる。したがって、ライトバック処理にかかる時間を短縮でき、その処理負荷を軽減できる。
【００９７】
なお、以上のＣＭ１００の処理では、対象ボリュームに設定され得る論理ボリュームがＲＡＩＤ−５で制御されるものとしたが、ＲＡＩＤ−４やＲＡＩＤ−６で制御される論理ボリュームについても対象ボリュームに設定できる。例えば、ＲＡＩＤ−６で制御される論理ボリュームが対象ボリュームに設定された場合、２つの関連パリティがキャッシュ領域１１１にステージングされ、ライトバック処理の際には、これら２つの関連パリティを用いて新たな２つの関連パリティが算出される。
【００９８】
次に、対象ボリュームに設定された論理ボリュームについて、どのような条件で対象ボリュームから除外するかを判定する対象ボリューム管理処理について説明する。ここでは、対象ボリューム管理処理として２つの例を示す。
【００９９】
図１１は、対象ボリューム管理処理についての第１の例を示すフローチャートである。この図１１の処理は、例えば、対象ボリュームに設定された各論理ボリュームについて定期的に実行される。
【０１００】
［ステップＳ５１］対象ボリューム設定部１４０は、対象ボリュームに設定された論理ボリュームについての書き込み数比率（図８のステップＳ３４参照）が、閾値ＴＨ２以下であるかを判定する。対象ボリューム設定部１４０は、書き込み数比率が閾値ＴＨ２以下である場合、ステップＳ５２の処理を実行し、書き込み数比率が閾値ＴＨ２より大きい場合、処理を終了する。
【０１０１】
［ステップＳ５２］対象ボリューム設定部１４０は、書き込み数比率が閾値ＴＨ２以下であると連続して判定された回数が、所定回数以上かを判定する。対象ボリューム設定部１４０は、判定された回数が所定回数以上の場合、ステップＳ５３の処理を実行し、判定された回数が所定回数より小さい場合、処理を終了する。
【０１０２】
［ステップＳ５３］対象ボリューム設定部１４０は、処理対象の論理ボリュームのボリューム名を、対象ボリューム情報１１５から削除する。これにより、処理対象の論理ボリュームは、対象ボリュームから除外される。
【０１０３】
図１２は、対象ボリューム管理処理についての第２の例を示すフローチャートである。この図１２の処理は、例えば、対象ボリュームに設定された各論理ボリュームについて定期的に実行される。
【０１０４】
［ステップＳ６１］対象ボリューム設定部１４０は、対象ボリュームに設定された論理ボリュームについての書き込み数比率（図８のステップＳ３４参照）が、閾値ＴＨ３以下であるかを判定する。この閾値ＴＨ３は、図８のステップＳ３４で使用された閾値ＴＨ２より低い値に設定される。対象ボリューム設定部１４０は、書き込み数比率が閾値ＴＨ３以下である場合、ステップＳ６２の処理を実行し、書き込み数比率が閾値ＴＨ３より大きい場合、処理を終了する。
【０１０５】
［ステップＳ６２］対象ボリューム設定部１４０は、処理対象の論理ボリュームのボリューム名を、対象ボリューム情報１１５から削除する。これにより、処理対象の論理ボリュームは、対象ボリュームから除外される。
【０１０６】
ここで、図１１に示した第１の例では、書き込み数比率が所定回数以上閾値ＴＨ２以下になるまで、処理対象の論理ボリュームは対象ボリュームに設定されたままになる。また、図１２に示した第２の例では、書き込み数比率が、閾値ＴＨ２より低い閾値ＴＨ３以下になるまで、処理対象の論理ボリュームは対象ボリュームに設定されたままになる。いずれの処理でも、書き込み数比率が閾値ＴＨ２以下になっただけでは、処理対象の論理ボリュームは対象ボリュームから除外されない。これにより、論理ボリュームが対象ボリュームに設定されることと、対象ボリュームから除外されることとが頻繁に繰り返されないようにすることができる。
【０１０７】
なお、対象ボリューム管理処理の他の例として、次のような処理を適用することもできる。例えば、ホスト装置２０での業務処理が実行されている時間帯などの特定の時間帯にのみ、論理ボリュームを対象ボリュームに設定できるようにする。そして、ある論理ボリュームが対象ボリュームに設定されると、上記の特定の時間帯が終了するまで、その論理ボリュームを対象ボリュームに設定したままにする。
【０１０８】
なお、上記の各実施の形態に示した装置（例えば、ストレージ制御装置１、ＣＭ１００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１０９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１１０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【０１１１】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  記憶部と、
ホスト装置からのアクセス要求に応じて、複数の記憶装置によって実現される論理記憶領域に対するアクセス制御を実行し、前記アクセス制御では、前記ホスト装置からの書き込み要求に応じた書き込み処理を、パリティを用いてデータが冗長化されるように制御し、
前記論理記憶領域に対するアクセス要求の監視結果に基づいて、前記論理記憶領域の中から、読み出しが要求された後に書き込みが要求される可能性の高い特定領域を特定し、
前記特定領域に含まれる第１のデータの読み出し要求を受信した場合、前記第１のデータを前記複数の記憶装置のいずれかから読み出して前記記憶部に保持するとともに前記ホスト装置に送信し、さらに、前記第１のデータを用いて算出された第１のパリティを前記複数の記憶装置のいずれかから読み出して前記記憶部に格納し、
前記第１のデータを更新するための第２のデータの書き込み要求を受信した場合、前記ホスト装置から受信した前記第２のデータと、前記記憶部からそれぞれ読み出した前記第１のデータおよび前記第１のパリティとに基づいて、第２のパリティを算出し、
前記第２のデータを前記複数の記憶装置のいずれかに書き込むとともに、前記第２のパリティを前記複数の記憶装置のいずれかに書き込む、
制御部と、
を有するストレージ制御装置。
【０１１２】
（付記２）  前記特定領域の特定では、前記論理記憶領域上の同一範囲に対して読み出しが要求されてから一定時間内に書き込みが要求された回数に基づいて、前記特定領域を特定する、
付記１記載のストレージ制御装置。
【０１１３】
（付記３）  前記論理記憶領域は、複数の部分領域に区分され、
前記特定領域の特定では、
前記論理記憶領域上の同一範囲に対して読み出しが要求されてから一定時間内に書き込みが要求された要求回数を、前記複数の部分領域のそれぞれについて計数し、
前記複数の部分領域のそれぞれにおける前記要求回数の計数結果に基づいて、前記複数の部分領域の中から前記特定領域を特定する、
付記１記載のストレージ制御装置。
【０１１４】
（付記４）  前記特定領域の特定では、
前記複数の部分領域のうち一の部分領域について、前記一の部分領域に対して書き込みが要求された合計回数に対する前記要求回数の比率が、所定の第１の閾値を超えた場合に、前記一の部分領域を前記特定領域として特定する、
付記３記載のストレージ制御装置。
【０１１５】
（付記５）  前記特定領域の特定では、前記比率が前記第１の閾値を超え、かつ、前記合計回数が所定の第２の閾値を超えた場合に、前記一の部分領域を前記特定領域として特定する、
付記４記載のストレージ制御装置。
【０１１６】
（付記６）  前記第２のパリティの算出では、
前記第２のデータの書き込み要求を受信したとき、前記記憶部における前記第１のデータとは別の記憶領域に前記第２のデータを格納して、書き込み完了通知を前記ホスト装置に送信し、
前記書き込み完了通知の送信後の所定のタイミングで、前記記憶部からそれぞれ読み出した前記第１のデータ、前記第２のデータおよび前記第１のパリティに基づいて、前記第２のパリティを算出する、
付記１乃至６のいずれか１つに記載のストレージ制御装置。
【０１１７】
（付記７）  コンピュータに、
ホスト装置からのアクセス要求に応じて、複数の記憶装置によって実現される論理記憶領域に対するアクセス制御を実行し、前記アクセス制御では、前記ホスト装置からの書き込み要求に応じた書き込み処理を、パリティを用いてデータが冗長化されるように制御し、
前記論理記憶領域に対するアクセス要求の監視結果に基づいて、前記論理記憶領域の中から、読み出しが要求された後に書き込みが要求される可能性の高い特定領域を特定し、
前記特定領域に含まれる第１のデータの読み出し要求を受信した場合、前記第１のデータを前記複数の記憶装置のいずれかから読み出して前記コンピュータが備える記憶部に保持するとともに前記ホスト装置に送信し、さらに、前記第１のデータを用いて算出された第１のパリティを前記複数の記憶装置のいずれかから読み出して前記記憶部に格納し、
前記第１のデータを更新するための第２のデータの書き込み要求を受信した場合、前記ホスト装置から受信した前記第２のデータと、前記記憶部からそれぞれ読み出した前記第１のデータおよび前記第１のパリティとに基づいて、第２のパリティを算出し、
前記第２のデータを前記複数の記憶装置のいずれかに書き込むとともに、前記第２のパリティを前記複数の記憶装置のいずれかに書き込む、
処理を実行させるストレージ制御プログラム。
【０１１８】
（付記８）  前記特定領域の特定では、前記論理記憶領域上の同一範囲に対して読み出しが要求されてから一定時間内に書き込みが要求された回数に基づいて、前記特定領域を特定する、
付記７記載のストレージ制御プログラム。
【０１１９】
（付記９）  前記論理記憶領域は、複数の部分領域に区分され、
前記特定領域の特定では、
前記論理記憶領域上の同一範囲に対して読み出しが要求されてから一定時間内に書き込みが要求された要求回数を、前記複数の部分領域のそれぞれについて計数し、
前記複数の部分領域のそれぞれにおける前記要求回数の計数結果に基づいて、前記複数の部分領域の中から前記特定領域を特定する、
付記７記載のストレージ制御プログラム。
【０１２０】
（付記１０）  前記特定領域の特定では、
前記複数の部分領域のうち一の部分領域について、前記一の部分領域に対して書き込みが要求された合計回数に対する前記要求回数の比率が、所定の第１の閾値を超えた場合に、前記一の部分領域を前記特定領域として特定する、
付記９記載のストレージ制御プログラム。
【０１２１】
（付記１１）  前記特定領域の特定では、前記比率が前記第１の閾値を超え、かつ、前記合計回数が所定の第２の閾値を超えた場合に、前記一の部分領域を前記特定領域として特定する、
付記１０記載のストレージ制御プログラム。
【０１２２】
（付記１２）  前記第２のパリティの算出では、
前記第２のデータの書き込み要求を受信したとき、前記記憶部における前記第１のデータとは別の記憶領域に前記第２のデータを格納して、書き込み完了通知を前記ホスト装置に送信し、
前記書き込み完了通知の送信後の所定のタイミングで、前記記憶部からそれぞれ読み出した前記第１のデータ、前記第２のデータおよび前記第１のパリティに基づいて、前記第２のパリティを算出する、
付記７乃至１１のいずれか１つに記載のストレージ制御プログラム。
【符号の説明】
【０１２３】
１  ストレージ制御装置
１ａ  記憶部
１ａ１  アクセス状況情報
１ｂ  制御部
２ａ，２ｂ，２ｃ，２ｄ  記憶装置
３  ホスト装置
４  論理記憶領域
４ａ  特定領域
Ｄ１，Ｄ１ａ  データ
Ｐ１，Ｐ１ａ  パリティ
Ｓ１〜Ｓ５  ステップ
【図１】
2019049856.tif 000003
【図２】
2019049856.tif 000004
【図３】
2019049856.tif 000005
【図４】
2019049856.tif 000006
【図５】
2019049856.tif 000007
【図６】
2019049856.tif 000008
【図７】
2019049856.tif 000009
【図８】
2019049856.tif 000010
【図９】
2019049856.tif 000011
【図１０】
2019049856.tif 000012
【図１１】
2019049856.tif 000013
【図１２】
2019049856.tif 000014