(57)【要約】      （修正有）【課題】冗長化されたストレージのキャッシュメモリを効率的に使用するキャッシュ制御装置，ストレージシステムおよびキャッシュ制御プログラムを提供する。【解決手段】冗長化されたストレージ群２００において、主系ストレージ２０ａに対応する第１キャッシュメモリ２１ａおよび従系ストレージ２０ｂに対応する第２キャッシュメモリ２１ｂを備える。Ｉ／Ｏ制御装置１０のキャッシュ管理部１０１は、第１キャッシュメモリ２１ａにおける破棄対象データを第２キャッシュメモリ２１ｂに格納させることにより、キャッシュリード処理のアクセス効率化を実現する。【選択図】図３
2020135042.tif 000002
【特許請求の範囲】
【請求項１】
第１記憶装置および第１キャッシュメモリを備える第１ストレージと第２記憶装置および第２キャッシュメモリを備える第２ストレージと通信可能に接続され、前記第１キャッシュメモリおよび前記第２キャッシュメモリに対するデータの入出力を制御するキャッシュ制御装置であって、
前記第１キャッシュメモリにおける破棄対象データを前記第２キャッシュメモリに格納させるキャッシュ管理部
を備えることを特徴とする、キャッシュ制御装置。
【請求項２】
前記キャッシュ管理部は、
前記第１キャッシュメモリの記憶領域をそれぞれ基準サイズで分割して生成される複数の第１キャッシュブロックと、前記第２キャッシュメモリの記憶領域をそれぞれ前記基準サイズで分割して生成される複数の第２キャッシュブロックとを、各第１キャッシュブロックを表す第１キャッシュブロックエレメントおよび各第２キャッシュブロックを表す第２キャッシュブロックエレメントを前記第１キャッシュメモリと前記第２キャッシュメモリとで共通のキャッシュブロックリンクに登録して管理する
ことを特徴とする、請求項１記載のキャッシュ制御装置。
【請求項３】
前記キャッシュ管理部は、
前記第１キャッシュメモリにおける破棄対象データに対応する前記第１キャッシュブロックエレメントを、前記キャッシュブロックリンクにおいて、前記第２キャッシュメモリにおいて前記破棄対象データと同一の冗長データを格納する冗長キャッシュブロックの第２キャッシュブロックエレメントに対応付けることで主従キャッシュリンクを設定し、
前記第１キャッシュメモリに空き領域を生成する場合に、前記主従キャッシュリンクを構成する第１キャッシュブロックエレメントを未使用キャッシュブロックを管理するための第１のキャッシュリストに移動させ、前記主従キャッシュリンクを構成する第２キャッシュブロックエレメントを、前記第１記憶装置と前記第１キャッシュメモリとの間もしくは前記第２記憶装置と前記第２キャッシュメモリとの間でデータが不一致のキャッシュブロックを管理するための第２のキャッシュリストに登録する
ことを特徴とする、請求項２記載のキャッシュ制御装置。
【請求項４】
前記キャッシュ管理部は、
前記第１キャッシュメモリの使用率が第１閾値を超えた場合に、キャッシュヒット数が回数閾値以上のキャッシュブロックのデータを前記第１キャッシュメモリから前記第２キャッシュメモリに移動させる
ことを特徴とする、請求項１〜３のいずれか１項に記載のキャッシュ制御装置。
【請求項５】
前記キャッシュ管理部は、
前記第１キャッシュメモリの使用率が第１閾値を超えた場合に、キャッシュヒット数が回数閾値未満のキャッシュブロックのデータを破棄する
ことを特徴とする、請求項１〜４のいずれか１項に記載のキャッシュ制御装置。
【請求項６】
前記キャッシュ管理部は、
前記第１キャッシュメモリから前記第２キャッシュメモリにデータを移動させる際に、前記第１キャッシュメモリにおける移動対象の実データを特定する識別情報を用いて、前記第２記憶装置から前記第２キャッシュメモリにデータのリードを行なわせる
ことを特徴とする、請求項１〜５のいずれか１項に記載のキャッシュ制御装置。
【請求項７】
第１記憶装置と第１キャッシュメモリとを備える第１ストレージと、
第２記憶装置と第２キャッシュメモリとを備える第２ストレージと、
前記第１記憶装置，前記第１キャッシュメモリ，前記第２記憶装置および前記第２キャッシュメモリに対するデータの入出力を制御する入出力制御部とを備えるストレージシステムであって、
前記入出力制御部が、
前記第１キャッシュメモリにおける破棄対象データを前記第２キャッシュメモリに格納させるキャッシュ管理部
を備えることを特徴とする、ストレージシステム。
【請求項８】
第１記憶装置および第１キャッシュメモリを備える第１ストレージと第２記憶装置および第２キャッシュメモリを備える第２ストレージと通信可能に接続され、前記第１キャッシュメモリおよび前記第２キャッシュメモリに対するデータの入出力を制御するキャッシュ制御装置のプロセッサに、
前記第１キャッシュメモリにおける破棄対象データを前記第２キャッシュメモリに格納させる
処理を実行させる、キャッシュ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ制御装置，ストレージシステムおよびキャッシュ制御プログラムに関する。
【背景技術】
【０００２】
ＨＤＤ（Hard Disk Drive）等の記憶装置を備えるストレージシステムにおいて、データの応答性能を向上させるために、ＨＤＤに加えてキャッシュメモリを備える構成が知られている。
【０００３】
キャッシュメモリとしては、例えば、ＨＤＤに比べてデータアクセス性能が高く、且つ、データ容量が小さい半導体メモリが用いられる。
【０００４】
ＨＤＤに格納されたデータのうち、利用頻度が高いデータをキャッシュメモリ上に残し、上位装置からのリード要求に対して、このキャッシュメモリ上のデータを応答することによってリード処理性能を向上させることができる。
【０００５】
また、ストレージシステムにおいては、データ保全のためにキャッシュメモリと記憶装置とを備えるストレージを冗長構成とすることも知られている。
【０００６】
図２６は冗長化した記憶装置を備えるストレージシステムの構成を示す図である。
【０００７】
図２６に示すストレージシステム５００は、Ｉ／Ｏ（Input／Output）制御装置５０１と２つのストレージ５０３ａ，５０３ｂとを備える。
【０００８】
Ｉ／Ｏ制御装置５０１は、上位装置５１０のアプリケーションから送信されるリード要求やライト要求に応じて、ストレージ５０３ａ，５０３ｂに対するデータのリードやライトの制御を行なう。
【０００９】
ストレージ５０３ａはキャッシュメモリ５０４ａとＨＤＤ５０５ａとを備える。ストレージ５０３ｂはキャッシュメモリ５０４ｂとＨＤＤ５０５ｂとを備える。
【００１０】
ストレージ５０３ａとストレージ５０３ｂとは冗長化（二重化）されており、ストレージ５０３ａが主系として、ストレージ５０３ｂが従系としてそれぞれ用いられる。
【００１１】
冗長化されたストレージ５０３ａ，５０３ｂにライト処理を行なう場合には、データは主系と従系との両方に記録（WRITE）される（図２６中の一点鎖線参照）。一方、リード処理を行なう場合には、主系のストレージ５０３ａからのみリード（READ）が行なわれる（図２６中の破線参照）。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１４−１６８６３号公報
【特許文献２】国際公開第２０１５／０１５５５０号
【特許文献３】特開２００９−１９９５４０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
上述の如く、冗長構成を有する従来のストレージシステムにおいてリード処理を行なう場合に、主系ストレージ５０３ａのキャッシュメモリ５０４ａのみが利用され、従系のストレージ５０３ｂのキャッシュメモリ５０４ｂは利用されない。そのため、キャッシュメモリ５０４ａ，５０４ｂを用いることによるデータの応答性能の向上（キャッシュ効果）は、主系のストレージ５０３ａに備えられたキャッシュメモリ５０４ａのキャッシュサイズに依存する限定的なものとならざるを得ない。そこで、ストレージに搭載されたキャッシュメモリをより効率的に使用することが期待されている。
【００１４】
本発明の目的の一つは、冗長化されたストレージにおいてキャッシュメモリを効率的に使用することである。
【課題を解決するための手段】
【００１５】
このため、このキャッシュ制御装置は、第１記憶装置および第１キャッシュメモリを備える第１ストレージと第２記憶装置および第２キャッシュメモリを備える第２ストレージと通信可能に接続され、前記第１キャッシュメモリおよび前記第２キャッシュメモリに対するデータの入出力を制御するキャッシュ制御装置であって、前記第１キャッシュメモリにおける破棄対象データを前記第２キャッシュメモリに格納させるキャッシュ管理部を備える。
【発明の効果】
【００１６】
一実施形態によれば、冗長化されたストレージにおいてキャッシュメモリを効率的に使用することができる。
【図面の簡単な説明】
【００１７】
【図１】実施形態の一例としてのストレージシステムの構成を模式的に示す図である。
【図２】キャッシュブロックのデータの状態の遷移を説明するための図である。
【図３】実施形態の一例としてのストレージシステムにおけるキャッシュメモリの管理方法の概要を説明するための図である。
【図４】実施形態の一例としてのストレージシステムにおけるキャッシュ管理部の機能を説明するための図である。
【図５】実施形態の一例としてのストレージシステムにおけるキャッシュブロック管理テーブルを説明するための図である。
【図６】実施形態の一例としてのストレージシステムにおけるEmptyキャッシュリストを説明するための図である。
【図７】実施形態の一例としてのストレージシステムにおけるDirtyキャッシュリストを説明するための図である。
【図８】実施形態の一例としてのストレージシステムにおけるCleanキャッシュリストを説明するための図である。
【図９】実施形態の一例としてのストレージシステムにおける未使用キャッシュ生成処理を説明するための図である。
【図１０】実施形態の一例としてのストレージシステムにおけるキャッシュ管理部による未使用キャッシュ生成処理を説明するための図である。
【図１１】実施形態の一例としてのストレージシステムにおける主従キャッシュリンクを説明するための図である。
【図１２】実施形態の一例としてのストレージシステムにおける主従キャッシュリンクを説明するための図である。
【図１３】実施形態の一例としてのストレージシステムにおけるデータのライト時におけるキャッシュメモリに対する処理の概要を説明するためのフローチャートである。
【図１４】実施形態の一例としてのストレージシステムにおけるデータのライト時におけるキャッシュメモリに対する処理の概要を説明するためのフローチャートである。
【図１５】実施形態の一例としてのストレージシステムにおける主系キャッシュメモリへのデータのライト処理を説明するためのフローチャートである。
【図１６】実施形態の一例としてのストレージシステムにおける従系キャッシュメモリへのデータのライト処理を説明するためのフローチャートである。
【図１７】実施形態の一例としてのストレージシステムにおける主系ＨＤＤへのライト時の処理を説明するためのフローチャートである。
【図１８】実施形態の一例としてのストレージシステムにおける従系ＨＤＤへのライト時の処理を説明するためのフローチャートである。
【図１９】実施形態の一例としてのストレージシステムにおけるデータのリード時におけるキャッシュメモリに対する処理の概要を説明するためのフローチャートである。
【図２０】実施形態の一例としてのストレージシステムにおけるEmptyキャッシュブロックの取得処理を説明するためのフローチャートである。
【図２１】実施形態の一例としてのストレージシステムにおける主系Emptyキャッシュブロックの取得処理を説明するためのフローチャートである。
【図２２】実施形態の一例としてのストレージシステムにおける主系Cleanキャッシュブロックの取得処理を説明するためのフローチャートである。
【図２３】実施形態の一例としてのストレージシステムにおける従系Emptyキャッシュブロックの取得処理を説明するためのフローチャートである。
【図２４】実施形態の一例としてのストレージシステムにおける従系Emptyキャッシュブロックの取得処理を説明するためのフローチャートである。
【図２５】実施形態の一例としてのストレージシステムにおける従系Cleanキャッシュブロックの取得処理を説明するためのフローチャートである。
【図２６】冗長化した記憶装置を備えるストレージシステムの構成を示す図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して本キャッシュ制御装置、ストレージシステムおよびキャッシュ制御プログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１９】
（Ａ）構成
図１は実施形態の一例としてのストレージシステム１の構成を模式的に示す図である。
図１に示すストレージシステム１は、Ｉ／Ｏ制御装置１０と２つのストレージ２０ａ，２０ｂとを備え、分散仮想ストレージを実現する。
【００２０】
ストレージシステム１にはネットワーク２を介して上位装置３０が接続され、ストレージシステム１はこの上位装置３０に対してストレージ２０ａ，２０ｂの記憶領域を提供する。ネットワーク２は、例えば、ＬＡＮ（Local Area Network）である。
【００２１】
上位装置３０は、図示しないプロセッサやメモリを備えるコンピュータであり、プロセッサを用いて例えばアプリケーションプログラム（以下、単にアプリケーションという）を実行することで各種機能を実現する。上位装置３０はストレージシステム１に対してデータのリード要求やライト要求を発行する。
【００２２】
Ｉ／Ｏ制御装置１０は、上位装置３０のアプリケーションから発行されるリード要求やライト要求に応じて、ストレージ２０ａ，２０ｂに対するデータのリードやライトの制御を行なうものであり、入出力制御装置に相当する。
【００２３】
ストレージ２０ａとストレージ２０ｂとはデータ保全を目的として冗長化（二重化）されており、ストレージ群２００を構成している。本ストレージシステム１においては、ストレージ２０ａが主系として、ストレージ２０ｂが従系として用いられる。以下、主系のストレージ２０ａを主系ストレージ２０ａといい、従系のストレージ２０ｂを従系ストレージ２０ｂという場合がある。
【００２４】
ストレージ２０ａは、キャッシュメモリ２１ａとＨＤＤ２２ａとインタフェース（Ｉ／Ｆ）２３ａとを備える。ストレージ２０ｂはキャッシュメモリ２１ｂとＨＤＤ２２ｂとインタフェース２３ｂとを備える。
【００２５】
主系ストレージ２０ａは第１ストレージに相当し、従系ストレージ２０ｂは第２ストレージに相当する。また、キャッシュメモリ２１ａは第１キャッシュメモリに相当し、ＨＤＤ２２ａは第１記憶装置に相当する。キャッシュメモリ２１ｂは第２キャッシュメモリに相当し、ＨＤＤ２２ｂは第２記憶装置に相当する。
【００２６】
以下、２つのストレージ２０ａ，２０ｂを特に区別しない場合には、ストレージ２０と表記する。同様に、以下、２つのキャッシュメモリ２１ａ，２１ｂを特に区別しない場合には、キャッシュメモリ２１と表記し、２つのＨＤＤ２２ａ，２２ｂを特に区別しない場合には、ＨＤＤ２２と表記する。さらに、以下、２つのインタフェース２３ａ，２３ｂを特に区別しない場合には、インタフェース２３と表記する。
【００２７】
また、以下、キャッシュメモリ２１ａを主系キャッシュメモリ２１ａといい、キャッシュメモリ２１ｂを従系キャッシュメモリ２１ｂという場合がある。また、以下、ＨＤＤ２２ａを主系ＨＤＤ２２ａといい、ＨＤＤ２２ｂを従系ＨＤＤ２２ｂという場合がある。
【００２８】
従系ＨＤＤ２２ｂには主系ＨＤＤ２２ａと同じデータを格納することでデータの冗長性が担保される。
【００２９】
インタフェース２３ａは、Ｉ／Ｏ制御装置１０のインタフェース１４ａと通信線を介して接続され、Ｉ／Ｏ制御装置１０との間でデータ等の通信を実現する。インタフェース２３ｂは、Ｉ／Ｏ制御装置１０のインタフェース１４ｂと通信線を介して接続され、Ｉ／Ｏ制御装置１０との間でデータ等の通信を実現する。
【００３０】
インタフェース２３は、例えば、PCIe（Peripheral Component Interconnect Express）インタフェースや光インタフェースであってもよく、適宜変形して実施することができる。
【００３１】
キャッシュメモリ２１は、例えば、ＨＤＤ２２に比べてデータアクセス性能が高い半導体メモリであり、一般的に、ＨＤＤ２２に比べてデータ容量は小さい。キャッシュメモリ２１は、半導体メモリであってもよく、また、ＳＳＤ（Solid State Drive）等の半導体記憶装置であってもよく、種々変形して実施することができる。
【００３２】
ＨＤＤ２２は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行なう記憶装置である。ＨＤＤ２２は、コンピュータである上位装置３０の補助記憶装置として使用される。ＨＤＤ２２には、ＯＳ（Operating System）プログラムやアプリケーションプログラム、各種データが格納されてもよい。
【００３３】
なお、ＨＤＤ２２に代えて、もしくはＨＤＤ２２に加えて、フラッシュメモリ等の半導体記憶装置を使用してもよい。
【００３４】
キャッシュメモリ２１の記憶領域（キャッシュ領域）のサイズはＨＤＤ２２の記憶領域（ＨＤＤ領域）のサイズと比較して非常に小さい。また、ＨＤＤ２２に対するデータアクセスは必ずキャッシュメモリ２１経由で行なわれる。
【００３５】
キャッシュ領域およびＨＤＤ領域は同一サイズ（基準サイズ）を有する複数のブロックに分割して管理され、キャッシュメモリ２１やＨＤＤ２２に対するデータの入出力（Ｉ／Ｏ）はブロック単位で行なわれる。
【００３６】
以下、キャッシュメモリ２１のブロックをキャッシュブロックという場合があり、ＨＤＤ２２のブロックをＨＤＤブロックという場合がある。キャッシュブロックは、主系キャッシュメモリ２１ａおよび従系キャッシュメモリ２１ｂの記憶領域をそれぞれ基準サイズで分割して生成される。
【００３７】
さらに、主系キャッシュメモリ２１ａのキャッシュブロックを主系キャッシュブロックという場合があり、従系キャッシュメモリ２１ｂのキャッシュブロックを従系キャッシュブロックという場合がある。
【００３８】
後述するＩ／Ｏ制御装置１０において、キャッシュブロックの利用状態およびキャッシュブロック上のデータとＨＤＤ２２上のキャッシュブロックのデータとの同値性が、Empty，DirtyおよびCleanの３種類の状態で管理される。また、Ｉ／Ｏ制御装置１０はこれらの状態間における遷移についても管理する。
【００３９】
図２はキャッシュブロックのデータの状態の遷移を説明するための図である。
【００４０】
キャッシュブロックのデータは、Empty，DirtyおよびCleanのいずれかの状態をとる。Emptyは未使用の状態であり、初期状態やデータ破棄の操作が行なわれた場合に、このEmptyの状態に遷移する。Dirtyはキャッシュメモリ２１上のデータとＨＤＤ２２上のデータが不一致の状態であり、新規ライトや更新，削除のいずれかの操作が行なわれた場合に、このDirtyの状態に遷移する。Cleanはキャッシュメモリ２１上のデータとＨＤＤ２２上のデータとが一致の状態であり、参照やDirty状態キャッシュをＨＤＤ２２へ反映させる操作が行なわれた場合に、このCleanの状態に遷移する。
【００４１】
以下、キャッシュブロックのデータの状態を、単にキャッシュブロックの状態またはキャッシュ状態という場合がある。また、以下、Emptyの状態にあるキャッシュブロックをEmptyキャッシュブロックという場合がある。同様に、Dirtyの状態にあるキャッシュブロックをDirtyキャッシュブロックという場合があり、Cleanの状態にあるキャッシュブロックをCleanキャッシュブロックという場合がある。
【００４２】
Ｉ／Ｏ制御装置１０は、図１に示すように、ＣＰＵ（Central Processing Unit）１１，メモリ１２およびインタフェース１３，１４ａ，１４ｂを備え、コンピュータに相当する。
【００４３】
インタフェース１３は、Ｉ／Ｏ制御装置１０をネットワーク２と接続するための通信インタフェースであり、例えば、ＬＡＮインタフェースである。Ｉ／Ｏ制御装置１０は、このインタフェース１３を介してネットワーク２に接続され、このネットワーク２を介して上位装置３０と通信可能に接続される。
【００４４】
インタフェース１４ａは、ストレージ２０ａのインタフェース２３ａと通信線を介して接続され、ストレージ２０ａとの間でデータ等の通信を実現する。インタフェース１４ｂは、ストレージ２０ｂのインタフェース２３ｂと通信線を介して接続され、ストレージ２０ｂとの間でデータ等の通信を実現する。
【００４５】
以下、２つのインタフェース１４ａ，１４ｂを特に区別しない場合には、インタフェース１４と表記する。
【００４６】
これらのインタフェース１４は、例えば、PCIeインタフェースや光インタフェースであってもよく、適宜変形して実施することができる。
【００４７】
メモリ１２はＲＯＭ（Read Only Memory）およびＲＡＭ（Random Access Memory）を含む記憶メモリである。メモリ１２のＲＯＭには、キャッシュ管理に係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ１２上のソフトウェアプログラムは、ＣＰＵ１１に適宜読み込まれて実行される。また、メモリ１２のＲＡＭは、一次記憶メモリあるいはワーキングメモリとして利用される。
【００４８】
ＣＰＵ１１は、種々の制御や演算を行なう処理装置であり、メモリ１２に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。そして、本ストレージシステム１においては、ＣＰＵ１１がキャッシュ制御プログラムを実行することで、図３に示すキャッシュ管理部１０１としての機能を実現する。
【００４９】
なお、キャッシュ管理部１０１としての機能を実現するためのプログラム（キャッシュ制御プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００５０】
キャッシュ管理部１０１としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ１２のＲＡＭやＲＯＭ）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ１１）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【００５１】
図３は実施形態の一例としてのストレージシステム１におけるキャッシュメモリ２１の管理方法の概要を説明するための図、図４はキャッシュ管理部１０１の機能を説明するための図、図５はキャッシュブロック管理テーブル１０４を説明するための図である。
【００５２】
また、図６は実施形態の一例としてのストレージシステム１におけるEmptyキャッシュリストを説明するための図、図７はそのDirtyキャッシュリストを説明するための図、図８はそのCleanキャッシュリストを説明するための図である。
【００５３】
キャッシュ管理部１０１は、キャッシュ管理テーブル１０２を用いて主系キャッシュメモリ２１ａおよび従系キャッシュメモリ２１ｂを管理する。
【００５４】
キャッシュ管理部１０１は、各キャッシュメモリ２１のキャッシュブロックを管理する機能も備える。キャッシュ管理部１０１はキャッシュブロック管理テーブル１０４を用いてキャッシュブロックを管理する。
【００５５】
キャッシュ管理部１０１は、Emptyキャッシュリスト，DirtyキャッシュリストおよびCleanキャッシュリストの３つのキャッシュリストを用いてキャッシュブロックの管理を行なう。
【００５６】
EmptyキャッシュリストはEmptyキャッシュブロックの管理に用いられ、DirtyキャッシュリストはDirtyキャッシュブロックの管理に用いられ、CleanキャッシュリストはCleanキャッシュブロックの管理に用いられる。
【００５７】
これらのEmptyキャッシュリスト，CleanキャッシュリストおよびDirtyキャッシュリストを特に区別しない場合には、単にキャッシュリストと表記する。
【００５８】
Emptyキャッシュリストは、未使用キャッシュブロックを管理するための第１のキャッシュリストに相当する。Dirtyキャッシュリストは、主系ＨＤＤ２２ａと主系キャッシュメモリ２１ａとの間もしくは従系ＨＤＤ２２ｂと従系キャッシュメモリ２１ｂとの間でデータが不一致のキャッシュブロックを管理するための第２のキャッシュリストに相当する。
【００５９】
Cleanキャッシュリストは、主系ＨＤＤ２２ａと主系キャッシュメモリ２１ａとの間もしくは従系ＨＤＤ２２ｂと従系キャッシュメモリ２１ｂとの間でデータが一致するキャッシュブロックを管理するための第３のキャッシュリストに相当する。
【００６０】
各キャッシュリストは、ＬＲＵ（Least Recently Used）方式で管理され、キャッシュブロックを表す情報であるキャッシュブロックエレメントがアクセス頻度の低いデータから高いデータの順に並べられる。
【００６１】
また、特に、主系キャッシュメモリ２１ａのキャッシュブロックを表すキャッシュブロックエレメントを主系キャッシュブロックエレメントという場合がある。また、従系キャッシュメモリ２１ｂのキャッシュブロックを表すキャッシュブロックエレメントを従系キャッシュブロックエレメントという場合がある。
【００６２】
キャッシュブロックエレメントは、主系キャッシュメモリ２１ａおよび従系キャッシュメモリ２１ｂにおけるキャッシュブロック毎に設けられる。本ストレージシステム１においては、キャッシュ管理部１０１はキャッシュブロックエレメントを用いてキャッシュブロックの管理を実現する。
【００６３】
キャッシュブロックエレメントは、後述するキャッシュブロック管理テーブル１０４に登録される情報によって実現される仮想的な概念であると言える。
【００６４】
キャッシュ管理部１０１は、Emptyキャッシュブロックについては、主系キャッシュメモリ２１ａと従系キャッシュメモリ２１ｂとのそれぞれにEmptyキャッシュリストを設けて個別に管理する（図６参照）。以下、主系キャッシュメモリ２１ａのEmptyキャッシュリストを主系Emptyキャッシュリストという場合があり、従系キャッシュメモリ２１ｂのEmptyキャッシュリストを従系Emptyキャッシュリストという場合がある。
【００６５】
また、キャッシュ管理部１０１は、Dirtyキャッシュブロックについては、主系キャッシュメモリ２１ａと従系キャッシュメモリ２１ｂとでまとめて１つのDirtyキャッシュリストでそれぞれ管理する。すなわち、主系キャッシュメモリ２１ａのDirtyキャッシュブロックと従系キャッシュメモリ２１ｂのDirtyキャッシュブロックとが１つのDirtyキャッシュリストで管理される（図７参照）。同様に、主系キャッシュメモリ２１ａのCleanキャッシュブロックと従系キャッシュメモリ２１ｂのCleanキャッシュブロックとが１つのCleanキャッシュリストで管理される（図８参照）。
【００６６】
キャッシュリストの最後尾には、最後にアクセスが行なわれてからの経過時間が最も短い（キャッシュアクセスが最新の）データ（キャッシュヒットしたデータ）を格納するキャッシュブロックのキャッシュブロックエレメントが設定される。以下、「データを格納するキャッシュブロックのキャッシュブロックエレメント」を、単に「キャッシュブロックエレメント」と表記する場合がある。一方、最後にアクセスが行なわれてからの経過時間が最も長いキャッシュブロックエレメントが当該キャッシュリストの先頭に設定される。
【００６７】
そして、キャッシュ管理部１０１は、キャッシュリストにおいては、アクセスされたデータ（キャッシュヒットしたデータ）のキャッシュブロックエレメントは当該キャッシュリストの最後尾に移動させる。
【００６８】
また、キャッシュ管理部１０１は、各キャッシュリストに設定されたキャッシュブロックエレメントのキャッシュ状態が変化した場合には、当該キャッシュブロックエレメントを変化後の状態に応じたキャッシュリストの最後尾に移動させる。
【００６９】
キャッシュ管理テーブル１０２は、図４に示すように、主系総キャッシュ数，従系総キャッシュ数，主系Emptyキャッシュ数，従系Emptyキャッシュ数，主系Emptyリスト先頭，従系Emptyリスト先頭，主系Dirtyキャッシュ数，従系Dirtyキャッシュ数，Dirtyリスト先頭，主系Cleanキャッシュ数，従系Cleanキャッシュ数およびCleanリスト先頭を管理する。
【００７０】
主系総キャッシュ数は、本ストレージシステム１においてキャッシュ管理部１０１が管理する主系キャッシュブロックの総数である。従系総キャッシュ数は、本ストレージシステム１においてキャッシュ管理部１０１が管理する従系キャッシュブロックの総数である。これらの総キャッシュ数は、例えば、キャッシュメモリ２１の容量等に応じて決定される。
【００７１】
主系Emptyキャッシュ数は、主系キャッシュメモリ２１ａのEmptyキャッシュブロックの総数である。
【００７２】
従系Emptyキャッシュ数は、従系キャッシュメモリ２１ｂのEmptyキャッシュブロックの総数である。
【００７３】
主系Emptyリスト先頭は、主系キャッシュメモリ２１ａのEmptyキャッシュリストを管理する情報であり、主系キャッシュメモリ２１aのEmptyキャッシュリストの先頭に登録されたEmptyキャッシュブロックのキャッシュブロックエレメントを特定する情報である。キャッシュブロックエレメントを特定する情報は、例えば、アドレスであってもよい。
【００７４】
キャッシュ管理テーブル１０２には、この主系Emptyリスト先頭により主系キャッシュメモリ２１ａのEmptyキャッシュリストが関連付けられる。
【００７５】
従系Emptyリスト先頭は、従系キャッシュメモリ２１ｂのEmptyキャッシュリストを管理する情報であり、従系キャッシュメモリ２１ｂのEmptyキャッシュリストの先頭に登録されたEmptyキャッシュブロックのキャッシュブロックエレメントを特定する情報である。
【００７６】
キャッシュ管理テーブル１０２には、この従系Emptyリスト先頭により従系キャッシュメモリ２１ｂのEmptyキャッシュリストが関連付けられる。
【００７７】
主系Dirtyキャッシュ数は、主系キャッシュメモリ２１ａにおけるDirtyキャッシュブロックの総数である。
【００７８】
従系Dirtyキャッシュ数は、従系キャッシュメモリ２１ｂにおけるDirtyキャッシュブロックの総数である。
【００７９】
Dirtyリスト先頭は、主系キャッシュメモリ２１ａおよび従系キャッシュメモリ２１ｂのDirtyキャッシュリストを管理する情報である。Dirtyリスト先頭は、主系キャッシュメモリ２１ａと従系キャッシュメモリ２１ｂとに共有されるDirtyキャッシュリストの先頭に登録されたDirtyキャッシュブロックのキャッシュブロックエレメントを特定する情報である。
【００８０】
キャッシュ管理テーブル１０２には、このDirtyリスト先頭によりDirtyリストが関連付けられる。
【００８１】
主系Cleanキャッシュ数は、主系キャッシュメモリ２１ａのCleanキャッシュブロックの総数である。
【００８２】
従系Cleanキャッシュ数は、従系キャッシュメモリ２１ｂのCleanキャッシュブロックの総数である。
【００８３】
Cleanリスト先頭は、主系キャッシュメモリ２１ａおよび従系キャッシュメモリ２１ｂのCleanキャッシュリストを管理する情報である。Cleanリスト先頭は、主系キャッシュメモリ２１ａと従系キャッシュメモリ２１ｂとに共有されるCleanキャッシュリストの先頭に登録されたCleanキャッシュブロックのキャッシュブロックエレメントを特定する情報である。
【００８４】
キャッシュ管理テーブル１０２には、このCleanリスト先頭によりCleanリストが関連付けられる。
【００８５】
キャッシュ管理部１０１は、本ストレージシステム１に備えられた各キャッシュブロックのキャッシュブロックエレメントを管理する。
【００８６】
キャッシュ管理部１０１は、キャッシュブロック管理テーブル１０４を用いて個々のキャッシュブロックの管理を行なう。
【００８７】
キャッシュブロック管理テーブル１０４は、図５に示すように、キャッシュ種別，キャッシュ状態，キャッシュヒット回数，主従キャッシュリンク，前Emptyキャッシュブロックエレメントアドレス，次Emptyキャッシュブロックエレメントアドレス，前Dirtyキャッシュブロックエレメントアドレス，次Dirtyキャッシュブロックエレメントアドレス，前Cleanキャッシュブロックエレメントアドレス，次Cleanキャッシュブロックエレメントアドレス，データ識別子，実データキャッシュブロックアドレスおよび実データＨＤＤブロックアドレスを管理する。
【００８８】
キャッシュ種別は、当該キャッシュブロックが主系キャッシュブロックであるか従系キャッシュブロックであるかを示す。
【００８９】
キャッシュ状態は、当該キャッシュブロックがEmptyキャッシュブロック，DirtyキャッシュブロックおよびCleanキャッシュブロックのいずれの状態であるかを示す。
【００９０】
キャッシュヒット回数は、当該キャッシュブロックがキャッシュヒットした回数を示す。
【００９１】
主従キャッシュリンクは、後述する主従キャッシュリンクを実現するための設定値であり、主系キャッシュメモリ２１ａのキャッシュブロックと従系キャッシュメモリ２１ｂのキャッシュブロックとをリンクさせる。例えば、当該キャッシュブロックが主従キャッシュリンクにおいて主となる場合には、主従キャッシュリンクにおいて従となるキャッシュブロックのキャッシュブロックエレメントのアドレスが設定される。
【００９２】
一方、当該キャッシュブロックが主従キャッシュリンクにおいて従となる場合には、主従キャッシュリンクにおいて主となるキャッシュブロックのキャッシュブロックエレメントのアドレスが設定される。
【００９３】
前Emptyキャッシュブロックエレメントアドレスは、当該キャッシュブロックがEmptyキャッシュブロックである場合に、Emptyキャッシュリストにおいて先行する（前の，先にアクセスが行なわれた）Emptyキャッシュブロックのキャッシュブロックエレメントのアドレスである。
【００９４】
次Emptyキャッシュブロックエレメントアドレスは、当該キャッシュブロックがEmptyキャッシュブロックである場合に、Emptyキャッシュリストにおいて後続する（後の，後にアクセスが行なわれた）Emptyキャッシュブロックのキャッシュブロックエレメントのアドレスである。
【００９５】
前Dirtyキャッシュブロックレメントアドレスは、当該キャッシュブロックがDirtyキャッシュブロックである場合に、Dirtyキャッシュリストにおいて先行する（前の，先にアクセスが行なわれた）Dirtyキャッシュブロックのキャッシュブロックエレメントのアドレスである。
【００９６】
次Dirtyキャッシュブロックエレメントアドレスは、当該キャッシュブロックがDirtyキャッシュブロックである場合に、Dirtyキャッシュリストにおいて後続する（後の，後にアクセスが行なわれた）Dirtyキャッシュブロックのキャッシュブロックエレメントのアドレスである。
【００９７】
前Cleanキャッシュブロックエレメントアドレスは、当該キャッシュブロックがCleanキャッシュブロックである場合に、Cleanキャッシュリストにおいて先行する（前の，先にアクセスが行なわれた）Cleanキャッシュブロックのキャッシュブロックエレメントのアドレスである。
【００９８】
次Cleanキャッシュブロックエレメントアドレスは、当該キャッシュブロックがCleanキャッシュブロックである場合に、Cleanキャッシュリストにおいて後続する（後の，後にアクセスが行なわれた）Cleanキャッシュブロックのキャッシュブロックエレメントのアドレスである。
【００９９】
データ識別子は、当該キャッシュブロックに格納されているデータを識別するための情報であり、例えば、当該データにハッシュ関数を適用することで生成したハッシュ値を用いてもよい。
【０１００】
実データキャッシュブロックアドレスは、当該キャッシュブロックのデータのキャッシュメモリ２１上でのアドレスである。
【０１０１】
実データＨＤＤブロックアドレスは、当該キャッシュブロックのデータのＨＤＤ２２上でのアドレスである。
【０１０２】
キャッシュブロック管理テーブル１０４は、個々のキャッシュブロック（キャッシュブロックエレメント）に対して、それぞれこれらのキャッシュ種別，キャッシュ状態，キャッシュヒット回数，主従キャッシュリンク，前Emptyキャッシュブロックエレメントアドレス，次Emptyキャッシュブロックエレメントアドレス，前Dirtyキャッシュブロックエレメントアドレス，次Dirtyキャッシュブロックエレメントアドレス，前Cleanキャッシュブロックエレメントアドレス，次Cleanキャッシュブロックエレメントアドレス，データ識別子，実データキャッシュブロックアドレスおよび実データＨＤＤブロックアドレスを関連付けて管理する。
【０１０３】
キャッシュ管理部１０１は、主系キャッシュメモリ２１ａの使用率が所定の閾値（第１閾値）を超えた場合に、この主系キャッシュメモリ２１ａにおいて未使用のキャッシュ領域を生成させる未使用キャッシュ生成処理を行なう。キャッシュ管理部１０１は、この未使用キャッシュ生成処理を行なうことで、主系キャッシュメモリ２１ａの使用率を所定の閾値（第２閾値）以下になるまで低下させる。
【０１０４】
図９は実施形態の一例としてのストレージシステム１における未使用キャッシュ生成処理を説明するための図である。
【０１０５】
図９において、符号Ａは、主系キャッシュメモリ２１ａの使用率が第１閾値に到達した状態を示し、符号Ｂは、未使用キャッシュ生成処理を行なうことで主系キャッシュメモリ２１ａの使用率が第２閾値まで減少した状態を示す。なお、図９に示す例においては、第１閾値が70％であり、第２閾値が30％である。
【０１０６】
なお、第１閾値は70％に限定されるものではなく、第２閾値も30％に限定されるものではなく、それぞれ種々変形して実施することができる。
【０１０７】
キャッシュ管理部１０１は、主系キャッシュメモリ２１ａの使用率が第１閾値を超えた場合に、主系キャッシュメモリ２１ａにおいてキャッシュヒット回数が一定回数N（回数閾値）以上のデータを、主系キャッシュメモリ２１ａから従系キャッシュメモリ２１ｂに移動させる。
【０１０８】
これにより、キャッシュ管理部１０１は、主系キャッシュメモリ２１ａにおいて、利用頻度の高いデータの維持を実現することができる。
【０１０９】
また、キャッシュ管理部１０１は、主系キャッシュメモリ２１ａにおいてキャッシュヒット回数が一定回数N（回数閾値）未満のデータを、主系キャッシュメモリ２１ａから破棄する。これにより、キャッシュ管理部１０１は、主系キャッシュメモリ２１ａを効率的に使用することができる。
【０１１０】
図１０は実施形態の一例としてのストレージシステム１におけるキャッシュ管理部１０１による、未使用キャッシュ生成処理を説明するための図である。
【０１１１】
この図１０においては、主系Emptyキャッシュリストと従系Emptyキャッシュリストと、Cleanキャッシュリストとを示す。
【０１１２】
キャッシュ管理部１０１は、Cleanキャッシュリストに登録されたキャッシュブロックエレメントを未使用キャッシュ生成処理の対象とする。
【０１１３】
キャッシュ管理部１０１は、Cleanキャッシュリストの先頭のキャッシュブロックエレメントから順番に処理を行なう。
【０１１４】
図１０に示す例において、Cleanキャッシュリストの先頭のキャッシュブロックエレメントに対応するキャッシュブロックのキャッシュヒット回数はＮ未満であるものとする。この場合に、キャッシュ管理部１０１は、このキャッシュブロックのデータを破棄し、Cleanキャッシュリストにおける当該キャッシュブロックエレメントを、Emptyキャッシュリストの最後尾に移動させる（図１０の矢印Ｐ１参照）。
【０１１５】
キャッシュ管理部１０１は、Cleanキャッシュリストにおける先頭から２番目のキャッシュブロックエレメントを処理する。本例において、当該キャッシュブロックエレメントのキャッシュヒット回数はN以上であるものとする。この場合に、キャッシュ管理部１０１は、従系キャッシュメモリ２１ｂにおいてキャッシュブロックを確保する。この際、キャッシュ管理部１０１は、従系キャッシュメモリ２１ｂのEmptyキャッシュリストにおいて先頭のキャッシュブロックエレメントを確保する（図１０の矢印Ｐ２参照）。
【０１１６】
その後、キャッシュ管理部１０１は、従系キャッシュメモリ２１ｂにおいて確保したキャッシュブロックに主系キャッシュメモリ２１ａのデータを移動させる。これに伴い、キャッシュ管理部１０１は、データ移動先の従系EmptyキャッシュリストのキャッシュブロックエレメントをCleanキャッシュリストの最後尾に移動させる（図１０の矢印Ｐ３参照）。
【０１１７】
キャッシュ管理部１０１は、Cleanキャッシュリストにおける処理対象のキャッシュブロックエレメントについて、当該キャッシュブロックエレメントに対応するキャッシュブロックのデータを破棄して、当該キャッシュブロックエレメントを主系Emptyキャッシュリストの最後尾に移動させる（図１０の矢印Ｐ４参照）。
【０１１８】
キャッシュ管理部１０１は、主系キャッシュメモリ２１ａから従系キャッシュメモリ２１ｂにデータを移動させる際に、移動対象の実データを主系キャッシュメモリ２１ａから従系キャッシュメモリ２１ｂにコピー（移動）させる代わりに、データを特定する識別情報（データ識別子）を用いる。
【０１１９】
すなわち、キャッシュ管理部１０１は、主系キャッシュメモリ２１ａから従系キャッシュメモリ２１ｂにデータを移動させる際に、主系キャッシュメモリ２１ａにおける移動対象の実データを特定する識別情報（データ識別子）を用いて、従系ＨＤＤ２２ｂから従系キャッシュメモリ２１ｂにデータのリードを行なわせる。
【０１２０】
主系ストレージ２０ａのデータと従系ストレージ２０ｂのデータとは冗長性を有しているので、従系ストレージ２０ｂにおいては、通知されたデータ識別子に従い、従系ストレージ２０ｂのＨＤＤ２２ｂからデータを従系キャッシュメモリ２１ｂに読み込むことができる。これにより、データコピーにより生じる、主系ストレージ２０ａと従系ストレージ２０ｂとの間のデータの通信量を削減することができるとともに、ＣＰＵ１１の負荷を軽減することができる。
【０１２１】
上述の如く、キャッシュ管理部１０１は、主系キャッシュメモリ２１ａと従系キャッシュメモリ２１ｂとを１つのキャッシュリスト（Dirtyキャッシュリスト，Cleanキャッシュリスト）で管理する。
【０１２２】
また、主系ストレージ２０ａと従系ストレージ２０ｂとは冗長化されているので、上位装置３０のアプリケーションからのデータのライト処理は、主系ストレージ２０ａと従系ストレージ２０ｂとのそれぞれに対して行なわれる。
【０１２３】
そのため、上位装置３０のアプリケーションからのライト処理後は、CleanキャッシュリストやDirtyキャッシュリストに、同じデータを持つ主系キャッシュブロックと従系キャッシュブロックとが登録されることになる。
【０１２４】
このような状況を回避するために、キャッシュ管理部１０１は、従系キャッシュメモリ２１ｂのデータを、即時、ＨＤＤ２２にライトして、従系キャッシュメモリ２１ｂの該当データのキャッシュブロックをEmptyの状態に移行させる。
【０１２５】
ただし、この際、ＨＤＤ２２へのライト完了同期を待つと、アプリケーションへのライト完了通知が遅くなってしまう。そこで、キャッシュ管理部１０１は、アプリケーションへのライト完了通知を、主系キャッシュメモリ２１ａおよび従系キャッシュメモリ２１ｂへのライトが完了したタイミングで行なう。
【０１２６】
また、この際、キャッシュ管理部１０１は、同じデータを格納する主系キャッシュブロックと従系キャッシュブロックとに主従関係を付し、Dirtyキャッシュリストにおいて主従キャッシュリンクを設定する。
【０１２７】
図１１および図１２実施形態の一例としてのストレージシステム１における主従キャッシュリンクを説明するための図である。
【０１２８】
図１１においては、Dirtyキャッシュリストの最後尾の主系キャッシュブロックエレメント（主）に対して、従系キャッシュブロックエレメント（従）が従属するように主従キャッシュリンクが設定されている。
【０１２９】
このような主従キャッシュリンクは、キャッシュ管理部１０１が、キャッシュブロックエレメントのキャッシュブロック管理テーブル１０４の主従キャッシュリンクに、主従キャッシュリンクにおいて主となるキャッシュブロックや従となるキャッシュブロックのキャッシュブロックエレメントのアドレスを設定することで実現される。
【０１３０】
図１１に例示するDirtyキャッシュリストにおいて、先頭のキャッシュブロックエレメントから最後尾のキャッシュブロックエレメントに向かう方向（図１１中の右向き方向）を順方向という場合がある。
【０１３１】
なお、図１１に例示するDirtyキャッシュリストにおいて、主従キャッシュリンクにおける主たるキャッシュブロックエレメントから従たるキャッシュブロックエレメントに向かう方向（図１１中の下向き方向）は、順方向に直交する方向となっている。
【０１３２】
キャッシュ管理部１０１は、図１１に例示するような主従キャッシュリンクが設定されたDirtyキャッシュリストに対してデータ検索を行なう場合には、このDirtyキャッシュリストに登録された複数のキャッシュブロックエレメントを順方向（右向き方向）に向かって、順次、検索を行なう。
【０１３３】
Dirtyキャッシュリストにおいて主従キャッシュリンクが形成されている場合において、Emptyキャッシュブロックを生成する際には、キャッシュ管理部１０１は、主従キャッシュリンクのうち主系キャッシュブロックエレメントをEmptyキャッシュリストに移動させる。
【０１３４】
その後、キャッシュ管理部１０１は、図１２に示すように、主従キャッシュリンクを構成していた従系キャッシュブロックエレメントを、主系キャッシュブロックエレメントに代えてDirtyキャッシュリストに直接つなげるように、キャッシュブロック管理テーブル１０４の値を設定する。
【０１３５】
すなわち、キャッシュ管理部１０１は、当該従系キャッシュブロックエレメントについてのキャッシュブロック管理テーブル１０４において、前Dirtyキャッシュブロックレメントアドレスおよび次Dirtyキャッシュブロックエレメントアドレスの値を、主従キャッシュリンクを構成していた従系キャッシュブロックエレメントの各値を用いて書き換える。また、この際、キャッシュ管理部１０１は、当該従系キャッシュブロックエレメントについてのキャッシュブロック管理テーブル１０４における主従キャッシュリンクに設定されていた値も削除する。
【０１３６】
このように、キャッシュブロック管理テーブル１０４の値を変更することで、主従キャッシュリンクを構成していた従系キャッシュブロックエレメントを、主系キャッシュブロックエレメントに代えてDirtyキャッシュリストに直接つなげることで、ＨＤＤ２２からデータのリードを行なうことなく、従系キャッシュメモリ２１ｂへのデータ移動を実現することができる。
【０１３７】
また、キャッシュヒット回数が一定回数N（回数閾値）より少なく、データを従系キャッシュメモリ２１ｂに移動させる必要がない場合は、キャッシュ管理部１０１は、主系キャッシュメモリ２１ａのデータをＨＤＤ２２にライトするタイミングに合わせて、対応する従系キャッシュメモリ２１ｂのデータについてもＨＤＤ２２へのライト処理を実施する。これにより、主系キャッシュメモリ２１ａのキャッシュブロックと従系キャッシュメモリ２１ｂにおける対応するキャッシュブロックとを同期させてEmpty状態にすることができる。
【０１３８】
（Ｂ）動作
［ライト時のキャッシュメモリに対する処理の概要］
上述の如く構成された実施形態の一例としてのストレージシステム１におけるデータのライト時におけるキャッシュメモリ２１に対する処理の概要を、図１３および図１４に示すフローチャート（図１３のステップＡ１，Ａ２，図１４のステップＡ３〜Ａ９）に従って説明する。なお、図１３は上位装置３０のアプリケーションの処理を示し、図１４はＩ／Ｏ制御装置１０の処理を示す。
【０１３９】
図１３のステップＡ１において、上位装置３０のアプリケーションはＩ／Ｏ制御装置１０に対してライト要求を送信することでデータのライト依頼を行なう。このライト依頼を受けて、Ｉ／Ｏ制御装置１０がライト処理を開始する。
【０１４０】
図１３のステップＡ２において、上位装置３０のアプリケーションは、Ｉ／Ｏ制御装置１０からのライトの完了通知を待ち、Ｉ／Ｏ制御装置１０からライト完了の通知を受信すると、処理を終了する。
【０１４１】
一方、Ｉ／Ｏ制御装置１０は、上位装置３０のアプリケーションからライト依頼を受信すると、ストレージ２０に対するライト処理を開始する。
【０１４２】
図１４のステップＡ３において、Ｉ／Ｏ制御装置１０のキャッシュ管理部１０１は、主系ストレージ２０ａのキャッシュメモリ２１ａに対してデータのライトを行なう。なお、主系キャッシュメモリ２１ａに対するデータのライト処理の詳細は図１５に示すフローチャートを用いて後述する。
【０１４３】
また、ステップＡ３の処理と並行して、図１４のステップＡ４において、キャッシュ管理部１０１は従系ストレージ２０ｂのキャッシュメモリ２１ｂに対してもデータのライトを行なう。なお、従系キャッシュメモリ２１ｂ対するデータのライト処理の詳細は図１６に示すフローチャートを用いて後述する。
【０１４４】
ステップＡ５において、キャッシュ管理部１０１は、主系キャッシュメモリ２１ａおよび従系キャッシュメモリ２１ｂに対するデータのライトが完了するまで待機する。すなわち、図１４のステップＡ６において、キャッシュ管理部１０１は、主系キャッシュメモリ２１ａおよび従系キャッシュメモリ２１ｂに対するデータのライトが完了したかを確認する。
【０１４５】
確認の結果、主系キャッシュメモリ２１ａおよび従系キャッシュメモリ２１ｂに対するデータのライトが完了していない場合には（ステップＡ６のＮＯルート参照）、ステップＡ５に戻る。
【０１４６】
主系キャッシュメモリ２１ａおよび従系キャッシュメモリ２１ｂに対するデータのライトが完了すると（ステップＡ６のＹＥＳルート参照）、ステップＡ７に移行する。
【０１４７】
ステップＡ７においては、キャッシュ管理部１０１は、上位装置３０のアプリケーションに対して、ストレージ２０へのライトが完了したことを通知する。この通知が、図１３のステップＡ２に入力される。
【０１４８】
その後、図１４のステップＡ８において、主系ストレージ２０ａにおけるＨＤＤ２２ａにデータのライトが行なわれる。なお、主系ＨＤＤ２２ａに対するデータのライト処理の詳細は図１７に示すフローチャートを用いて後述する。
【０１４９】
ステップＡ８の処理と並行して、図１４のステップＡ９において、従系ストレージ２０ｂにおけるＨＤＤ２２ｂにもデータのライトが行なわれる。なお、従系ＨＤＤ２２ｂに対するデータのライト処理の詳細は図１８に示すフローチャートを用いて後述する。これらのＨＤＤ２２ａ，２２ｂへのデータのライトが完了すると、処理を終了する。
【０１５０】
［主系キャッシュメモリに対するライト処理］
次に、実施形態の一例としてのストレージシステム１における主系キャッシュメモリ２１ａへのデータのライト処理を、図１５に示すフローチャート（ステップＢ１〜Ｂ６）に従って説明する。本処理は図１４に示したフローチャートのステップＡ３の処理に相当する。
【０１５１】
以下の処理は、ライト対象のデータをキャッシュブロック単位で分割した個々のデータに対してそれぞれ行なわれる。以下、ライト対象のデータをキャッシュブロック単位に分割して作成したデータを処理対象データという場合がある。
【０１５２】
ステップＢ１において、キャッシュ管理部１０１は、主系Emptyキャッシュリストを参照してEmptyキャッシュブロックのキャッシュブロックエレメントを取得する。
【０１５３】
ステップＢ２において、キャッシュ管理部１０１は、ステップＢ１において取得したキャッシュブロックエレメントに対応するキャッシュブロックに処理対象データをライトする。
【０１５４】
ステップＢ３において、キャッシュ管理部１０１は、Dirtyキャッシュリストに、処理対象データ（書き込み対象データ）のデータ識別子と同じデータ識別子を有する従系キャッシュブロックエレメントが登録されているかを確認する。
【０１５５】
確認の結果、Dirtyキャッシュリストに、処理対象データのデータ識別子と同じデータ識別子を有する従系キャッシュブロックエレメントが登録されていない場合には（ステップＢ３のＮＯルート参照）、ステップＢ４に移行する。
【０１５６】
ステップＢ４において、キャッシュ管理部１０１は、ステップＢ１において取得した主系キャッシュブロックエレメントを、Dirtyキャッシュリストの最後尾に登録する。その後、処理を終了し、図１４のステップＡ５の処理に移行する。
【０１５７】
一方、ステップＢ３における確認の結果、Dirtyキャッシュリストに、処理対象データのデータ識別子と同じデータ識別子を有する従系キャッシュブロックエレメントが登録されている場合には（ステップＢ３のＹＥＳルート参照）、ステップＢ５に移行する。この場合においては、先に従系キャッシュメモリ２１ｂに対するデータのライトが完了している状態である。
【０１５８】
ステップＢ５において、キャッシュ管理部１０１は、Dirtyキャッシュリストに登録されている、処理対象データのデータ識別子と同じデータ識別子を有する従系キャッシュブロックエレメントに対して、ステップＢ１において取得したキャッシュブロックエレメントを主従キャッシュリンクで関連付ける（接続する）。
【０１５９】
ステップＢ６において、キャッシュ管理部１０１は、Dirtyキャッシュリストから登録済みの従系キャッシュブロックエレメントを切り離す。
【０１６０】
その後、ステップＢ４において、キャッシュ管理部１０１は、ステップＢ６において切り離した従系キャッシュブロックエレメントをDirtyキャッシュリストの最後尾に登録する。その後、処理を終了し、図１４のステップＡ５の処理に移行する。
【０１６１】
［従系キャッシュメモリに対するライト処理］
次に、実施形態の一例としてのストレージシステム１における従系キャッシュメモリ２１ｂへのデータのライト処理を、図１６に示すフローチャート（ステップＣ１〜Ｃ５）に従って説明する。本処理は図１４に示したフローチャートのステップＡ４の処理に相当する。
【０１６２】
以下の処理は、ライト対象のデータをキャッシュブロック単位で分割した個々のデータに対してそれぞれ行なわれる。以下、ライト対象のデータをキャッシュブロック単位に分割して作成したデータを処理対象データという場合がある。
【０１６３】
ステップＣ１において、キャッシュ管理部１０１は、従系Emptyキャッシュリストを参照してEmptyキャッシュブロックのキャッシュブロックエレメントを取得する。
【０１６４】
ステップＣ２において、キャッシュ管理部１０１は、ステップＣ１において取得したキャッシュブロックエレメントに対応するキャッシュブロックに処理対象データをライトする。
【０１６５】
ステップＣ３において、キャッシュ管理部１０１は、Dirtyキャッシュリストに、処理対象データ（書き込み対象データ）のデータ識別子と同じデータ識別子を有する主系キャッシュブロックエレメントが登録されているかを確認する。
【０１６６】
確認の結果、Dirtyキャッシュリストに、処理対象データのデータ識別子と同じデータ識別子を有する主系キャッシュブロックエレメントが登録されていない場合には（ステップＣ３のＮＯルート参照）、ステップＣ４に移行する。
【０１６７】
一方、ステップＣ３における確認の結果、Dirtyキャッシュリストに、処理対象データのデータ識別子と同じデータ識別子を有する従系キャッシュブロックエレメントが登録されている場合には（ステップＣ３のＹＥＳルート参照）、ステップＣ５に移行する。
【０１６８】
ステップＣ５において、キャッシュ管理部１０１は、Dirtyキャッシュリストに登録されている、処理対象データのデータ識別子と同じデータ識別子を有する主系キャッシュブロックエレメントに、ステップＣ１において取得したキャッシュブロックエレメントを主従キャッシュリンクで関連付ける（接続する）。その後、ステップＣ４に移行する。
【０１６９】
ステップＣ４において、キャッシュ管理部１０１は、ステップＣ１において取得したキャッシュブロックエレメントを、Dirtyキャッシュリストの最後尾に登録する。その後、処理を終了し、図１４のステップＡ５の処理に移行する。
【０１７０】
［主系ＨＤＤに対するライト処理］
次に実施形態の一例としてのストレージシステム１における主系ＨＤＤ２２ａへのライト時の処理を、図１７に示すフローチャート（ステップＤ１〜Ｄ３）に従って説明する。本処理は図１４に示したフローチャートのステップＡ８の処理に相当する。
【０１７１】
ステップＤ１において、Ｉ／Ｏ制御装置１０は、Dirtyキャッシュリストに登録された主系キャッシュブロックエレメントに対応するキャッシュブロックのデータを主系ＨＤＤ２２ａにライトする。
【０１７２】
その後、キャッシュ管理部１０１は、ステップＤ１において処理したキャッシュブロックエレメントをDirtyキャッシュリストから切り離し（ステップＤ２）、当該キャッシュブロックエレメントをCleanキャッシュリストの最後尾に登録する（ステップＤ３）。その後、処理を終了する。
【０１７３】
［従系ＨＤＤに対するライト処理］
次に実施形態の一例としてのストレージシステム１における従系ＨＤＤ２２ｂへのライト時の処理を、図１８に示すフローチャート（ステップＥ１〜Ｅ３）に従って説明する。本処理は図１４に示したフローチャートのステップＡ９の処理に相当する。
【０１７４】
ステップＥ１において、Ｉ／Ｏ制御装置１０は、Dirtyキャッシュリストに登録された従系キャッシュブロックエレメントに対応するキャッシュブロックのデータを従系ＨＤＤ２２ｂにライトする。
【０１７５】
その後、キャッシュ管理部１０１は、ステップＥ１において処理したキャッシュブロックエレメントをDirtyキャッシュリストから切り離し（ステップＥ２）、当該キャッシュブロックエレメントをCleanキャッシュリストの最後尾に登録する（ステップＥ３）。その後、処理を終了する。
【０１７６】
［リード時のキャッシュメモリに対する処理の概要］
次に、実施形態の一例としてのストレージシステム１におけるデータのリード時におけるキャッシュメモリ２１に対する処理の概要を、図１９に示すフローチャート（ステップＦ１〜Ｆ１１）に従って説明する。なお、ステップＦ１，Ｆ２が上位装置３０のアプリケーションの処理を示し、ステップＦ３〜Ｆ１１がＩ／Ｏ制御装置１０の処理を示す。
【０１７７】
ステップＦ１において、上位装置３０のアプリケーションはＩ／Ｏ制御装置１０に対してリード要求を送信することでデータのリード依頼を行なう。このリード依頼を受けて、Ｉ／Ｏ制御装置１０がリード処理を開始する。
【０１７８】
ステップＦ３において、Ｉ／Ｏ制御装置１０のキャッシュ管理部１０１は、上位装置３０のアプリケーションからリード依頼を受信すると、先ず、リード対象のデータ（目的のデータ）がCleanキャッシュリスト内に存在するかを確認する。
【０１７９】
確認の結果、目的のデータがCleanキャッシュリスト内に存在する場合には（ステップＦ３のＹＥＳルート参照）、ステップＦ４に移行する。
【０１８０】
ステップＦ４において、キャッシュ管理部１０１は、存在が確認された当該キャッシュブロックエレメントをCleanキャッシュリストの最後尾に移動させる。ステップＦ５において、キャッシュ管理部１０１は、当該キャッシュブロックエレメントに対応するキャッシュブロックのデータを上位装置３０のアプリケーションに返却（応答）する。また、Ｉ／Ｏ制御装置１０は、アプリケーションに対してリードの完了通知を行なう。その後、処理はステップＦ２に移行する。
【０１８１】
一方、ステップＦ３における確認の結果、目的のデータがCleanキャッシュリスト内に存在しない場合には（ステップＦ３のＮＯルート参照）、ステップＦ６に移行する。ステップＦ６において、キャッシュ管理部１０１は、リード対象のデータ（目的のデータ）がDirtyキャッシュリスト内に存在するかを確認する。
【０１８２】
確認の結果、目的のデータがDirtyキャッシュリスト内に存在する場合には（ステップＦ６のＹＥＳルート参照）、ステップＦ７に移行する。
【０１８３】
ステップＦ７において、キャッシュ管理部１０１は、存在が確認された当該キャッシュブロックエレメントをDirtyキャッシュリストの最後尾に移動させる。その後、処理はステップＦ５に移行し、キャッシュ管理部１０１は、当該キャッシュブロックエレメントに対応するキャッシュブロックのデータを上位装置３０のアプリケーションに通知（返却）する。
【０１８４】
また、ステップＦ６における確認の結果、目的のデータがDirtyキャッシュリスト内に存在しない場合には（ステップＦ６のＮＯルート参照）、ステップＦ８に移行する。
【０１８５】
ステップＦ８において、キャッシュ管理部１０１は、主系Emptyキャッシュブロックの取得（獲得）処理を行なう。なお、主系Emptyキャッシュブロックの取得処理の詳細は図２０に示すフローチャートを用いて後述する。
【０１８６】
その後、ステップＦ９において、キャッシュ管理部１０１は、主系ＨＤＤ２２ａから目的のデータをリードし、主系キャッシュメモリ２１ａに格納する。
【０１８７】
ステップＦ１０において、キャッシュ管理部１０１は、ステップＦ８において取得したキャッシュブロックエレメントをCleanキャッシュリストの最後尾に移動させる。
【０１８８】
ステップＦ１１において、Ｉ／Ｏ制御装置１０は、ステップＦ９においてリードしたデータを上位装置３０のアプリケーションに返却（応答）する。また、Ｉ／Ｏ制御装置１０は、アプリケーションに対してリードの完了通知を行ない、処理はステップＦ２に移行する。
【０１８９】
ステップＦ２において、アプリケーションは、Ｉ／Ｏ制御装置１０からのデータの通知（返却）を待ち、Ｉ／Ｏ制御装置１０からリード完了の通知を受信すると、処理を終了する。
【０１９０】
［Emptyキャッシュブロックの取得処理］
次に実施形態の一例としてのストレージシステム１におけるEmptyキャッシュブロックの取得処理を、図２０に示すフローチャート（ステップＧ１〜Ｇ５）に従って説明する。本処理は図１９に示したフローチャートのステップＦ８の処理に相当する。
【０１９１】
ステップＧ１において、キャッシュ管理部１０１は、キャッシュ管理テーブル１０２を参照して、主系Emptyキャッシュ数が0より大きい（主系Emptyキャッシュ数＞0）か否かを確認する。確認の結果、主系Emptyキャッシュ数が0より大きい場合には（ステップＧ１のＹＥＳルート参照）、ステップＧ２に移行する。
【０１９２】
ステップＧ２において、キャッシュ管理部１０１は、主系キャッシュメモリ２１ａの使用率が第１閾値（例えば70％）を超えているか（主系キャッシュ使用率＞第１閾値）を確認する。確認の結果、主系キャッシュメモリ２１ａの使用率が第１閾値を超えている場合には（ステップＧ２のＹＥＳルート参照）、ステップＧ３に移行する。
【０１９３】
ステップＧ３において、キャッシュ管理部１０１は、主系キャッシュメモリ２１ａにおいてEmptyキャッシュブロック（主系Emptyキャッシュブロック）を生成する処理（主系Emptyキャッシュ生成処理）を行なう。なお、主系Emptyキャッシュ生成処理の詳細は図２１に示すフローチャートを用いて後述する。また、ステップＧ１における確認の結果、主系Emptyキャッシュ数が0である場合にも（ステップＧ１のＮＯルート参照）、ステップＧ３に移行する。ステップＧ３において主系Emptyキャッシュ生成処理を行なった後には、ステップＧ１に戻る。
【０１９４】
一方、ステップＧ２における確認の結果、主系キャッシュメモリ２１ａの使用率が第１閾値以下の場合には（ステップＧ２のＮＯルート参照）、ステップＧ４に移行する。
【０１９５】
キャッシュ管理部１０１は、主系Emptyキャッシュリストから先頭のキャッシュブロックエレメントを切り離す（ステップＧ４）。この切り離されたキャッシュブロックエレメントに対応するキャッシュブロック（主系Emptyキャッシュブロック）が取得される（ステップＧ５）。その後、処理を終了し、図１９のステップＦ９の処理に移行する。
【０１９６】
［主系Emptyキャッシュブロック生成処理］
次に実施形態の一例としてのストレージシステム１における主系Emptyキャッシュブロックの取得処理を、図２１に示すフローチャート（ステップＨ１〜Ｈ１９）に従って説明する。本処理は図２０に示したフローチャートのステップＧ３の処理に相当する。
【０１９７】
ステップＨ１において、キャッシュ管理部１０１は、キャッシュ管理テーブル１０２を参照して主系Cleanキャッシュ数が0より大きい（主系Cleanキャッシュ数＞0）か否かを確認する。確認の結果、主系Cleanキャッシュ数が0である場合には（ステップＨ１のＮＯルート参照）、ステップＨ２に移行する。ステップＨ２において、キャッシュ管理部１０１は、主系Cleanキャッシュブロックの生成処理（主系Cleanキャッシュ生成処理）を行なう。なお、主系Cleanキャッシュ生成処理の詳細は図２２に示すフローチャートを用いて後述する。その後、処理はステップＨ３に移行する。
【０１９８】
ステップＨ１における確認の結果、主系Cleanキャッシュ数が0より大きい場合には（ステップＨ１のＹＥＳルート参照）、ステップＨ３に移行する。
【０１９９】
ステップＨ３において、キャッシュ管理部１０１は、Cleanキャッシュリストの先頭のキャッシュブロックエレメントをカレントキャッシュブロックエレメントとする（カレントキャッシュブロックエレメント＝Cleanキャッシュリスト先頭）。その後、ステップＨ４に移行する。
【０２００】
ステップＨ４において、キャッシュ管理部１０１は、キャッシュブロック管理テーブル１０４のキャッシュ種別を参照して、カレントキャッシュブロックエレメントが主系キャッシュブロックであるか否かを確認する。カレントキャッシュブロックエレメントが主系キャッシュブロックでない場合には（ステップＨ４のＮＯルート参照）、ステップＨ５に移行する。
【０２０１】
ステップＨ５において、キャッシュ管理部１０１は、Cleanキャッシュリストにおける次のキャッシュブロックエレメントをカレントキャッシュブロックエレメントとする（カレントキャッシュブロックエレメント＝次のキャッシュブロックエレメント）。その後、ステップＨ４に戻り、再度、カレントキャッシュブロックエレメントが主系キャッシュブロックであるか否かを確認する。
【０２０２】
ステップＨ４における確認の結果、カレントキャッシュブロックエレメントが主系キャッシュブロックである場合には（ステップＨ４のＹＥＳルート参照）、ステップＨ６に移行する。
【０２０３】
ステップＨ６において、キャッシュ管理部１０１は、Cleanキャッシュリストからカレントキャッシュブロックエレメントを削除する。
【０２０４】
ステップＨ７において、キャッシュ管理部１０１は、キャッシュブロック管理テーブル１０４を参照して、カレントキャッシュブロックエレメントのキャッシュヒット数が回数閾値N以上であるかを確認する。
【０２０５】
確認の結果、カレントキャッシュブロックエレメントのキャッシュヒット回数が回数閾値N未満である場合には（ステップＨ７のＮＯルート参照）、ステップＨ８に移行する。
【０２０６】
ステップＨ８において、キャッシュ管理部１０１は、カレントキャッシュブロックエレメントに主従キャッシュリンクにより接続されている従系キャッシュブロックエレメントがあるかを確認する。
【０２０７】
カレントキャッシュブロックエレメントに接続されている従系キャッシュブロックエレメントがある場合には（ステップＨ８のＹＥＳルート参照）、ステップＨ９に移行する。ステップＨ９において、キャッシュ管理部１０１は、従系キャッシュブロックエレメントに対応するキャッシュブロック上のデータを消去する。その後、ステップＨ１６に移行する。
【０２０８】
また、ステップＨ８における確認の結果、カレントキャッシュブロックエレメントに接続されている従系キャッシュブロックエレメントがない場合には（ステップＨ８のＮＯルート参照）、ステップＨ１７に移行する。
【０２０９】
また、ステップＨ７における確認の結果、カレントキャッシュブロックエレメントのキャッシュヒット回数が回数閾値N以上である場合には（ステップＨ７のＹＥＳルート参照）、ステップＨ１０に移行する。
【０２１０】
ステップＨ１０において、キャッシュ管理部１０１は、カレントキャッシュブロックエレメントに主従キャッシュリンクにより接続されている接続されている従系キャッシュブロックエレメントがあるかを確認する。
【０２１１】
カレントキャッシュブロックエレメントに主従キャッシュリンクにより接続されている従系キャッシュブロックエレメントがある場合には（ステップＨ１０のＹＥＳルート参照）、ステップＨ１１に移行する。ステップＨ１１において、キャッシュ管理部１０１は、従系キャッシュブロックエレメントをCleanキャッシュリストに登録する。その後、ステップＨ１６に移行する。
【０２１２】
また、ステップＨ１０における確認の結果、カレントキャッシュブロックエレメントに接続されている従系キャッシュブロックエレメントがない場合には（ステップＨ１０のＮＯルート参照）、ステップＨ１２に移行する。
【０２１３】
ステップＨ１２において、キャッシュ管理部１０１は、従系Emptyキャッシュブロックの取得（獲得）処理を行なう。なお、従系Emptyキャッシュブロックの取得処理の詳細は図２３に示すフローチャートを用いて後述する。
【０２１４】
ステップＨ１３において、キャッシュ管理部１０１は、カレントキャッシュブロックエレメントのデータ識別子を、取得した従系Emptyキャッシュブロックエレメントのキャッシュブロック管理テーブル１０４にコピーする。
【０２１５】
ステップＨ１４において、キャッシュ管理部１０１は、目的のデータ識別子に対応するデータを従系ＨＤＤ２２ｂからリードし、確保した（取得した）従系Emptyキャッシュブロックエレメントのキャッシュブロックに格納する。これにより、主系キャッシュメモリ２１ａにおいてキャッシュヒット回数がN以上のデータが従系キャッシュメモリ２１ｂに格納される。
【０２１６】
ステップＨ１５において、キャッシュ管理部１０１は、確保した（取得した）従系Emptyキャッシュブロックエレメントを、Cleanキャッシュリストの最後尾に移動させる。その後、ステップＨ１７に移行する。
【０２１７】
ステップＨ１６において、キャッシュ管理部１０１は、カレントキャッシュブロックエレメントと従系キャッシュブロックエレメントとの主従キャッシュリンクによる接続を解除する。
【０２１８】
ステップＨ１７において、キャッシュ管理部１０１は、カレントキャッシュブロックエレメントに対応するキャッシュブロック上のデータを削除する。これにより、主系キャッシュメモリ２１ａにおいてキャッシュヒット回数がN未満のデータが主系キャッシュメモリ２１ａから破棄される。また、ステップＨ１３の処理と組み合わされることで、主系キャッシュメモリ２１ａにおいてキャッシュヒット回数がN以上のデータが従系キャッシュメモリ２１ｂに移動されることになる。
【０２１９】
ステップＨ１８において、キャッシュ管理部１０１は、カレントキャッシュブロックエレメントを主系Emptyキャッシュリストに登録する。
【０２２０】
ステップＨ１９において、キャッシュ管理部１０１は、主系キャッシュメモリ２１ａの使用率（キャッシュ使用率）が第２閾値（例えば30％）未満であるか（主系キャッシュ使用率＜第２閾値）を確認する。確認の結果、主系キャッシュメモリ２１ａの使用率が第２閾値以上である場合には（ステップＨ１９のＮＯルート参照）、ステップＨ１に戻る。
【０２２１】
ステップＨ１９における確認の結果、主系キャッシュメモリ２１ａの使用率が第２閾値未満である場合には（ステップＨ１９のＹＥＳルート参照）、処理を終了し、図２０のステップＧ１の処理に移行する。
【０２２２】
［主系Cleanキャッシュブロック生成処理］
次に実施形態の一例としてのストレージシステム１における主系Cleanキャッシュブロックの取得処理を、図２２に示すフローチャート（ステップＪ１〜Ｊ６）に従って説明する。本処理は図２１に示したフローチャートのステップＨ２の処理に相当する。
【０２２３】
ステップＪ１において、キャッシュ管理部１０１は、Dirtyキャッシュリストの先頭のキャッシュブロックエレメントをカレントキャッシュブロックエレメントとする（カレントキャッシュブロックエレメント＝Dirtyキャッシュリスト先頭）。その後、ステップＪ２に移行する。
【０２２４】
ステップＪ２において、キャッシュ管理部１０１は、キャッシュブロック管理テーブル１０４のキャッシュ種別を参照して、カレントキャッシュブロックエレメントが主系キャッシュブロックであるか否かを確認する。カレントキャッシュブロックエレメントが主系キャッシュブロックでない場合には（ステップＪ２のＮＯルート参照）、ステップＪ３に移行する。
【０２２５】
ステップＪ３において、キャッシュ管理部１０１は、Dirtyキャッシュリストにおける次のキャッシュブロックエレメントをカレントキャッシュブロックエレメントとする（カレントキャッシュブロックエレメント＝次のキャッシュブロックエレメント）。その後、ステップＪ２に戻り、再度、カレントキャッシュブロックエレメントが主系キャッシュブロックであるか否かを確認する。
【０２２６】
ステップＪ２における確認の結果、カレントキャッシュブロックエレメントが主系キャッシュブロックである場合には（ステップＪ２のＹＥＳルート参照）、ステップＪ４に移行する。
【０２２７】
ステップＪ４において、主系ストレージ２０ａにおけるＨＤＤ２２ａにデータのライトが行なわれる。なお、本処理においては、図１４のステップＡ８の処理と同様の処理が行なわれる。
【０２２８】
ステップＪ５において、キャッシュ管理部１０１は、当該カレントキャッシュブロックエレメントについて、キャッシュブロック管理テーブル１０４の主系Dirtyキャッシュ数をデクリメント（-1）する。
【０２２９】
その後、ステップＪ６において、キャッシュ管理部１０１は、主系Dirtyキャッシュ数が0より多いか（主系Dirtyキャッシュ数＞0）を確認する。確認の結果、主系Dirtyキャッシュ数が0より多い場合には（ステップＪ６のＹＥＳルート参照）、ステップＪ１に戻る。一方、主系Dirtyキャッシュ数が0である場合には（ステップＪ６のＮＯルート参照）、処理を終了し、図２１のステップＨ３の処理に移行する。
【０２３０】
［従系Emptyキャッシュブロック取得処理］
次に実施形態の一例としてのストレージシステム１における従系Emptyキャッシュブロックの取得処理を、図２３に示すフローチャート（ステップＫ１〜Ｋ５）に従って説明する。本処理は図２１に示したフローチャートのステップＨ１２の処理に相当する。
【０２３１】
ステップＫ１において、キャッシュ管理部１０１は、キャッシュ管理テーブル１０２を参照して、従系Emptyキャッシュ数が0より大きい（従系Emptyキャッシュ数＞0）か否かを確認する。確認の結果、従系Emptyキャッシュ数が0より大きい場合には（ステップＫ１のＹＥＳルート参照）、ステップＫ２に移行する。
【０２３２】
ステップＫ２において、キャッシュ管理部１０１は、従系キャッシュメモリ２１ｂの使用率が第１閾値（例えば70％）を超えているか（従系キャッシュ使用率＞第１閾値）を確認する。確認の結果、従系キャッシュメモリ２１ｂの使用率が第１閾値を超えている場合には（ステップＫ２のＹＥＳルート参照）、ステップＫ３に移行する。
【０２３３】
ステップＫ３において、キャッシュ管理部１０１は、従系キャッシュメモリ２１ｂにおいてEmptyキャッシュブロック（従系Emptyキャッシュブロック）を生成する処理（従系Emptyキャッシュ生成処理）を行なう。なお、従系Emptyキャッシュ生成処理の詳細は図２４に示すフローチャートを用いて後述する。また、ステップＫ１における確認の結果、従系Emptyキャッシュ数が0である場合にも（ステップＫ１のＮＯルート参照）、ステップＫ３に移行する。ステップＫ３において従系Emptyキャッシュ生成処理を行なった後には、ステップＫ１に戻る。
【０２３４】
一方、ステップＫ２における確認の結果、従系キャッシュメモリ２１ｂの使用率が第１閾値以下の場合には（ステップＫ２のＮＯルート参照）、ステップＫ４に移行する。
【０２３５】
キャッシュ管理部１０１は、従系Emptyキャッシュリストから先頭のキャッシュブロックエレメントを切り離す（ステップＫ４）。この切り離されたキャッシュブロックエレメントに対応するキャッシュブロックが、従系Emptyキャッシュブロックとして取得される（ステップＫ５）。その後、処理を終了し、図２１のステップＨ１３の処理に移行する。
【０２３６】
［従系Emptyキャッシュブロック生成処理］
次に実施形態の一例としてのストレージシステム１における従系Emptyキャッシュブロックの取得処理を、図２４に示すフローチャート（ステップＬ１〜Ｌ９）に従って説明する。本処理は図２３に示したフローチャートのステップＫ３の処理に相当する。
【０２３７】
ステップＬ１において、キャッシュ管理部１０１は、キャッシュ管理テーブル１０２を参照して従系Cleanキャッシュ数が0より大きい（従系Cleanキャッシュ数＞0）か否かを確認する。確認の結果、従系Cleanキャッシュ数が0である場合には（ステップＬ１のＮＯルート参照）、ステップＬ２に移行する。ステップＬ２において、キャッシュ管理部１０１は、従系Cleanキャッシュブロックの生成処理（従系Cleanキャッシュ生成処理）を行なう。なお、従系Cleanキャッシュ生成処理の詳細は図２５に示すフローチャートを用いて後述する。その後、処理はステップＬ３に移行する。
【０２３８】
ステップＬ１における確認の結果、従系Cleanキャッシュ数が0より大きい場合には（ステップＬ１のＹＥＳルート参照）、ステップＬ３に移行する。
【０２３９】
ステップＬ３において、キャッシュ管理部１０１は、Cleanキャッシュリストの先頭のキャッシュブロックエレメントをカレントキャッシュブロックエレメントとする（カレントキャッシュブロックエレメント＝Cleanキャッシュリスト先頭）。その後、ステップＬ４に移行する。
【０２４０】
ステップＬ４において、キャッシュ管理部１０１は、キャッシュブロック管理テーブル１０４のキャッシュ種別を参照して、カレントキャッシュブロックエレメントが従系キャッシュブロックであるか否かを確認する。カレントキャッシュブロックエレメントが従系キャッシュブロックでない場合には（ステップＬ４のＮＯルート参照）、ステップＬ５に移行する。
【０２４１】
ステップＬ５において、キャッシュ管理部１０１は、Cleanキャッシュリストにおける次のキャッシュブロックエレメントをカレントキャッシュブロックエレメントとする（カレントキャッシュブロックエレメント＝次のキャッシュブロックエレメント）。その後、ステップＬ４に戻り、再度、カレントキャッシュブロックエレメントが従系キャッシュブロックであるか否かを確認する。
【０２４２】
ステップＬ４における確認の結果、カレントキャッシュブロックエレメントが従系キャッシュブロックである場合には（ステップＬ４のＹＥＳルート参照）、ステップＬ６に移行する。
【０２４３】
ステップＬ６において、キャッシュ管理部１０１は、Cleanキャッシュリストからカレントキャッシュブロックエレメントを削除する。
【０２４４】
ステップＬ７において、キャッシュ管理部１０１は、キャッシュブロック管理テーブル１０４を参照して、カレントキャッシュブロックエレメントに対応するキャッシュブロック上のデータを消去する。
【０２４５】
ステップＬ８において、キャッシュ管理部１０１は、カレントキャッシュブロックエレメントを従系Emptyキャッシュリストに登録する。
【０２４６】
ステップＬ９において、キャッシュ管理部１０１は、従系キャッシュメモリ２１ｂの使用率（キャッシュ使用率）が第２閾値（例えば30％）未満であるか（従系キャッシュ使用率＜第２閾値）を確認する。確認の結果、従系キャッシュメモリ２１ｂの使用率が第２閾値以上である場合には（ステップＬ９のＮＯルート参照）、ステップＬ１に戻る。
【０２４７】
ステップＬ９における確認の結果、従系キャッシュメモリ２１ｂの使用率が第２閾値未満である場合には（ステップＬ９のＹＥＳルート参照）、処理を終了し、図２３のステップＫ１の処理に移行する。
【０２４８】
［従系Cleanキャッシュブロック生成処理］
次に実施形態の一例としてのストレージシステム１における従系Cleanキャッシュブロックの取得処理を、図２５に示すフローチャート（ステップＭ１〜Ｍ６）に従って説明する。本処理は図２４に示したフローチャートのステップＬ２の処理に相当する。
【０２４９】
ステップＭ１において、キャッシュ管理部１０１は、Dirtyキャッシュリストの先頭のキャッシュブロックエレメントをカレントキャッシュブロックエレメントとする（カレントキャッシュブロックエレメント＝Dirtyキャッシュリスト先頭）。その後、ステップＭ２に移行する。
【０２５０】
ステップＭ２において、キャッシュ管理部１０１は、キャッシュブロック管理テーブル１０４のキャッシュ種別を参照して、カレントキャッシュブロックエレメントが従系キャッシュブロックであるか否かを確認する。カレントキャッシュブロックエレメントが従系キャッシュブロックでない場合には（ステップＭ２のＮＯルート参照）、ステップＭ３に移行する。
【０２５１】
ステップＭ３において、キャッシュ管理部１０１は、Dirtyキャッシュリストにおける次のキャッシュブロックエレメントをカレントキャッシュブロックエレメントとする（カレントキャッシュブロックエレメント＝次のキャッシュブロックエレメント）。その後、ステップＭ２に戻り、再度、カレントキャッシュブロックエレメントが従系キャッシュブロックであるか否かを確認する。
【０２５２】
ステップＭ２における確認の結果、カレントキャッシュブロックエレメントが従系キャッシュブロックである場合には（ステップＭ２のＹＥＳルート参照）、ステップＭ４に移行する。
【０２５３】
ステップＭ４において、従系ストレージ２０ｂにおけるＨＤＤ２２ｂにデータのライトが行なわれる。なお、本処理においては、図１４のステップＡ９の処理と同様の処理が行なわれる。
【０２５４】
ステップＭ５において、キャッシュ管理部１０１は、当該カレントキャッシュブロックエレメントについて、キャッシュブロック管理テーブル１０４の従系Dirtyキャッシュ数をデクリメント（-1）する。
【０２５５】
その後、ステップＭ６において、キャッシュ管理部１０１は、従系Dirtyキャッシュ数が0より多いか（従系Dirtyキャッシュ数＞0）を確認する。確認の結果、従系Dirtyキャッシュ数が0より多い場合には（ステップＭ６のＹＥＳルート参照）、ステップＭ１に戻る。一方、従系Dirtyキャッシュ数が0である場合には（ステップＭ６のＮＯルート参照）、処理を終了し、図２４のステップＬ３の処理に移行する。
【０２５６】
（Ｃ）効果
このように、本発明の一実施形態としてのストレージシステム１によれば、キャッシュ管理部１０１が、主系キャッシュメモリ２１ａにおける破棄対象データを従系キャッシュメモリ２１ｂに格納させる。これにより、従系キャッシュメモリ２１ｂを主系キャッシュメモリ２１ａの拡張領域として利用することができ、従系キャッシュメモリ２１ｂを有効に使用することができる。
【０２５７】
キャッシュ管理部１０１が、主系キャッシュメモリ２１ａのキャッシュブロックを示す主系キャッシュブロックエレメントと、従系キャッシュメモリ２１ｂのキャッシュブロックを示す従系キャッシュブロックエレメントとを、共通のキャッシュブロックリンク（Dirtyキャッシュリスト，Cleanキャッシュリスト）に登録して管理する。これにより、主系キャッシュメモリ２１ａのキャッシュブロックと従系キャッシュメモリ２１ｂのキャッシュブロックとを一元管理することができ、利便性が高い。
【０２５８】
キャッシュ管理部１０１が、主系キャッシュメモリ２１ａにおける破棄対象データに対応する主系キャッシュブロックエレメントを、キャッシュブロックリンクにおいて、従系キャッシュメモリ２１ｂにおいて破棄対象データと同一の冗長データを格納する冗長キャッシュブロックの従系キャッシュブロックエレメントに対応付けることで主従キャッシュリンクを設定する。
【０２５９】
そして、キャッシュ管理部１０１は、主系キャッシュメモリ２１ａにおいて主系Emptyキャッシュブロックを生成する場合に、主従キャッシュリンクを構成する主系キャッシュブロックエレメントをEmptyキャッシュリストに移動させる。また、キャッシュ管理部１０１は、主従キャッシュリンクを構成する従系キャッシュブロックエレメントを、Dirtyキャッシュリストに登録する。これにより、本ストレージシステム１に備えられたキャッシュメモリ２１の各キャッシュブロックの状態を容易に把握することができる。
【０２６０】
キャッシュ管理部１０１が、主系キャッシュメモリ２１ａの使用率が第１閾値（例えば70％）を超えた場合に、キャッシュヒット数が回数閾値以上のキャッシュブロックのデータを従系キャッシュメモリ２１ｂに移動させる。これにより、主系キャッシュメモリ２１ａに空き容量を作成し、主系キャッシュメモリ２１ａの使用率を低下させることができるとともに、従系キャッシュメモリ２１ｂを有効に利用することができる。
【０２６１】
主系キャッシュメモリ２１ａの使用率が第１閾値（例えば70％）を超えた場合に、キャッシュ管理部１０１が、キャッシュヒット数が回数閾値未満のキャッシュブロックのデータを破棄する。利用頻度の低いデータをキャッシュメモリ２１上から破棄することで、キャッシュメモリ２１を有効に利用することができる。
【０２６２】
主系キャッシュメモリ２１ａから従系キャッシュメモリ２１ｂにデータを移動させる際に、キャッシュ管理部１０１は、主系キャッシュメモリ２１ａにおける移動対象の実データを特定するデータ識別子を用いて、従系ＨＤＤ２２ｂから従系キャッシュメモリ２１ｂにデータのリードを行なわせる。これにより、主系キャッシュメモリ２１ａと従系キャッシュメモリ２１ｂとの間でデータを移動（コピー）させる必要がなく、プロセッサや回線帯域の負荷を軽減することができる。
【０２６３】
（Ｄ）その他
【０２６４】
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０２６５】
例えば、上述した実施形態においては、ストレージシステム１に２つのストレージ２０が備えられた例を示しているが、これに限定されるものではなく３つ以上のストレージ２０を備えてもよい。
【０２６６】
また、キャッシュメモリ２１やＨＤＤ２２の数は２つに限定されるものではなく、キャッシュ管理部１０１は３つ以上のキャッシュメモリ２１を管理してもよい。例えば、キャッシュ管理部１０１は１つの主系キャッシュメモリ２１ａと２つ以上の従系キャッシュメモリ２１ｂとを管理してもよい。
【０２６７】
また、上述した実施形態においては、主系ストレージ２０ａと従系ストレージ２０ｂとを備えたストレージシステム１におけるキャッシュ制御を行なう例を示しているが、これに限定されるものではない。
【０２６８】
例えば、冗長化された複数のコンピュータを備えるシステムにおいて、各コンピュータに備えられたキャッシュの管理に適用してもよい。
【０２６９】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０２７０】
（Ｅ）付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０２７１】
（付記１）
第１記憶装置と第１キャッシュメモリとを備える第１ストレージと、
第２記憶装置と第２キャッシュメモリとを備える第２ストレージと、
前記第１記憶装置，前記第１キャッシュメモリ，前記第２記憶装置および前記第２キャッシュメモリに対するデータの入出力を制御する入出力制御部とを備えるストレージシステムであって、
前記入出力制御部が、
前記第１キャッシュメモリにおける破棄対象データを前記第２キャッシュメモリに格納させるキャッシュ管理部
を備えることを特徴とする、ストレージシステム。
【０２７２】
（付記２）
前記キャッシュ管理部は、
前記第１キャッシュメモリの記憶領域をそれぞれ基準サイズで分割して生成される複数の第１キャッシュブロックと、前記第２キャッシュメモリの記憶領域をそれぞれ前記基準サイズで分割して生成される複数の第２キャッシュブロックとを、各第１キャッシュブロックを表す第１キャッシュブロックエレメントおよび各第２キャッシュブロックを表す第２キャッシュブロックエレメントを前記第１キャッシュメモリと前記第２キャッシュメモリとで共通のキャッシュブロックリンクに登録して管理する
ことを特徴とする、付記１記載のストレージシステム。
【０２７３】
（付記３）
前記キャッシュ管理部は、
前記第１キャッシュメモリにおける破棄対象データに対応する前記第１キャッシュブロックエレメントを、前記キャッシュブロックリンクにおいて、前記第２キャッシュメモリにおいて前記破棄対象データと同一の冗長データを格納する冗長キャッシュブロックの第２キャッシュブロックエレメントに対応付けることで主従キャッシュリンクを設定し、
前記第１キャッシュメモリに空き領域を生成する場合に、前記主従キャッシュリンクを構成する第１キャッシュブロックエレメントを、未使用キャッシュブロックを管理するための第１のキャッシュリストに移動させ、前記主従キャッシュリンクを構成する第２キャッシュブロックエレメントを、前記第１記憶装置と前記第１キャッシュメモリとの間もしくは前記第２記憶装置と前記第２キャッシュメモリとの間でデータが不一致のキャッシュブロックを管理するための第２のキャッシュリストに登録する
ことを特徴とする、付記２記載のストレージシステム。
【０２７４】
（付記４）
前記キャッシュ管理部は、
前記第１キャッシュメモリの使用率が第１閾値を超えた場合に、キャッシュヒット数が回数閾値以上のキャッシュブロックのデータを前記第１キャッシュメモリから前記第２キャッシュメモリに移動させる
ことを特徴とする、付記１〜３のいずれか１項に記載のストレージシステム。
【０２７５】
（付記５）
前記キャッシュ管理部は、
前記第１キャッシュメモリの使用率が第１閾値を超えた場合に、キャッシュヒット数が回数閾値未満のキャッシュブロックのデータを破棄する
ことを特徴とする、付記１〜４のいずれか１項に記載のストレージシステム。
【０２７６】
（付記６）
前記キャッシュ管理部は、
前記第１キャッシュメモリから前記第２キャッシュメモリにデータを移動させる際に、前記第１キャッシュメモリにおける移動対象の実データを特定する識別情報を用いて、前記第２記憶装置から前記第２キャッシュメモリにデータのリードを行なわせる
ことを特徴とする、付記１〜５のいずれか１項に記載のストレージシステム。
【０２７７】
（付記７）
第１記憶装置および第１キャッシュメモリを備える第１ストレージと第２記憶装置および第２キャッシュメモリを備える第２ストレージと通信可能に接続され、前記第１キャッシュメモリおよび前記第２キャッシュメモリに対するデータの入出力を制御するキャッシュ制御装置であって、
前記第１キャッシュメモリにおける破棄対象データを前記第２キャッシュメモリに格納させるキャッシュ管理部
を備えることを特徴とする、キャッシュ制御装置。
【０２７８】
（付記８）
前記キャッシュ管理部は、
前記第１キャッシュメモリの記憶領域をそれぞれ基準サイズで分割して生成される複数の第１キャッシュブロックと、前記第２キャッシュメモリの記憶領域をそれぞれ前記基準サイズで分割して生成される複数の第２キャッシュブロックとを、各第１キャッシュブロックを表す第１キャッシュブロックエレメントおよび各第２キャッシュブロックを表す第２キャッシュブロックエレメントを前記第１キャッシュメモリと前記第２キャッシュメモリとで共通のキャッシュブロックリンクに登録して管理する
ことを特徴とする、付記７記載のキャッシュ制御装置。
【０２７９】
（付記９）
前記キャッシュ管理部は、
前記第１キャッシュメモリにおける破棄対象データに対応する前記第１キャッシュブロックエレメントを、前記キャッシュブロックリンクにおいて、前記第２キャッシュメモリにおいて前記破棄対象データと同一の冗長データを格納する冗長キャッシュブロックの第２キャッシュブロックエレメントに対応付けることで主従キャッシュリンクを設定し、
前記第１キャッシュメモリに空き領域を生成する場合に、前記主従キャッシュリンクを構成する第１キャッシュブロックエレメントを未使用キャッシュブロックを管理するための第１のキャッシュリストに移動させ、前記主従キャッシュリンクを構成する第２キャッシュブロックエレメントを、前記第１記憶装置と前記第１キャッシュメモリとの間もしくは前記第２記憶装置と前記第２キャッシュメモリとの間でデータが不一致のキャッシュブロックを管理するための第２のキャッシュリストに登録する
ことを特徴とする、付記８記載のキャッシュ制御装置。
【０２８０】
（付記１０）
前記キャッシュ管理部は、
前記第１キャッシュメモリの使用率が第１閾値を超えた場合に、キャッシュヒット数が回数閾値以上のキャッシュブロックのデータを前記第１キャッシュメモリから前記第２キャッシュメモリに移動させる
ことを特徴とする、付記７〜９のいずれか１項に記載のキャッシュ制御装置。
【０２８１】
（付記１１）
前記キャッシュ管理部は、
前記第１キャッシュメモリの使用率が第１閾値を超えた場合に、キャッシュヒット数が回数閾値未満のキャッシュブロックのデータを破棄する
ことを特徴とする、付記７〜１０のいずれか１項に記載のキャッシュ制御装置。
【０２８２】
（付記１２）
前記キャッシュ管理部は、
前記第１キャッシュメモリから前記第２キャッシュメモリにデータを移動させる際に、前記第１キャッシュメモリにおける移動対象の実データを特定する識別情報を用いて、前記第２記憶装置から前記第２キャッシュメモリにデータのリードを行なわせる
ことを特徴とする、付記７〜１１のいずれか１項に記載のキャッシュ制御装置。
【０２８３】
（付記１３）
第１記憶装置および第１キャッシュメモリを備える第１ストレージと第２記憶装置および第２キャッシュメモリを備える第２ストレージと通信可能に接続され、前記第１キャッシュメモリおよび前記第２キャッシュメモリに対するデータの入出力を制御するキャッシュ制御装置のプロセッサに、
前記第１キャッシュメモリにおける破棄対象データを前記第２キャッシュメモリに格納させる
処理を実行させる、キャッシュ制御プログラム。
【０２８４】
（付記１４）
前記第１キャッシュメモリの記憶領域をそれぞれ基準サイズで分割して生成される複数の第１キャッシュブロックと、前記第２キャッシュメモリの記憶領域をそれぞれ前記基準サイズで分割して生成される複数の第２キャッシュブロックとを、各第１キャッシュブロックを表す第１キャッシュブロックエレメントおよび各第２キャッシュブロックを表す第２キャッシュブロックエレメントを前記第１キャッシュメモリと前記第２キャッシュメモリとで共通のキャッシュブロックリンクに登録して管理させる
処理を前記プロセッサに実行させる、付記１３記載のキャッシュ制御プログラム。
【０２８５】
（付記１５）
前記第１キャッシュメモリにおける破棄対象データに対応する前記第１キャッシュブロックエレメントを、前記キャッシュブロックリンクにおいて、前記第２キャッシュメモリにおいて前記破棄対象データと同一の冗長データを格納する冗長キャッシュブロックの第２キャッシュブロックエレメントに対応付けることで主従キャッシュリンクを設定し、
前記第１キャッシュメモリに空き領域を生成する場合に、前記主従キャッシュリンクを構成する第１キャッシュブロックエレメントを未使用キャッシュブロックを管理するための第１のキャッシュリストに移動させ、前記主従キャッシュリンクを構成する第２キャッシュブロックエレメントを、前記第１記憶装置と前記第１キャッシュメモリとの間もしくは前記第２記憶装置と前記第２キャッシュメモリとの間でデータが不一致のキャッシュブロックを管理するための第２のキャッシュリストに登録する
処理を前記プロセッサに実行させる、付記１４記載のキャッシュ制御プログラム。
【０２８６】
（付記１６）
前記第１キャッシュメモリの使用率が第１閾値を超えた場合に、キャッシュヒット数が回数閾値以上のキャッシュブロックのデータを前記第１キャッシュメモリから前記第２キャッシュメモリに移動させる
処理を前記プロセッサに実行させる、付記１３〜１５のいずれか１項に記載のキャッシュ制御プログラム。
【０２８７】
（付記１７）
前記第１キャッシュメモリの使用率が第１閾値を超えた場合に、キャッシュヒット数が回数閾値未満のキャッシュブロックのデータを破棄する
処理を前記プロセッサに実行させる、付記１３〜１６のいずれか１項に記載のキャッシュ制御プログラム。
【０２８８】
（付記１８）
前記第１キャッシュメモリから前記第２キャッシュメモリにデータを移動させる際に、前記第１キャッシュメモリにおける移動対象の実データを特定する識別情報を用いて、前記第２記憶装置から前記第２キャッシュメモリにデータのリードを行なわせる
処理を前記プロセッサに実行させる、付記１３〜１７のいずれか１項に記載のキャッシュ制御プログラム。
【符号の説明】
【０２８９】
１    ストレージシステム
２    ネットワーク
１０    Ｉ／Ｏ制御装置（入出力制御部）
１１    ＣＰＵ
１２    メモリ
１３，１４ａ，１４ｂ，１４    インタフェース
２０ａ，２０ｂ，２０    ストレージ
２１ａ，２１    主系キャッシュメモリ，キャッシュメモリ（第１キャッシュメモリ）
２１ｂ，２１    従系キャッシュメモリ，キャッシュメモリ（第２キャッシュメモリ）
２２ａ，２２    主系ＨＤＤ（第１記憶装置）
２２ｂ，２２    従系ＨＤＤ（第２記憶装置）
２３ａ，２３ｂ，２３    インタフェース
３０    上位装置
１０１    キャッシュ管理部
１０２    キャッシュ管理テーブル
１０４    キャッシュブロック管理テーブル
２００    ストレージ群  
【図１】
2020135042.tif 000003
【図２】
2020135042.tif 000004
【図３】
2020135042.tif 000005
【図４】
2020135042.tif 000006
【図５】
2020135042.tif 000007
【図６】
2020135042.tif 000008
【図７】
2020135042.tif 000009
【図８】
2020135042.tif 000010
【図９】
2020135042.tif 000011
【図１０】
2020135042.tif 000012
【図１１】
2020135042.tif 000013
【図１２】
2020135042.tif 000014
【図１３】
2020135042.tif 000015
【図１４】
2020135042.tif 000016
【図１５】
2020135042.tif 000017
【図１６】
2020135042.tif 000018
【図１７】
2020135042.tif 000019
【図１８】
2020135042.tif 000020
【図１９】
2020135042.tif 000021
【図２０】
2020135042.tif 000022
【図２１】
2020135042.tif 000023
【図２２】
2020135042.tif 000024
【図２３】
2020135042.tif 000025
【図２４】
2020135042.tif 000026
【図２５】
2020135042.tif 000027
【図２６】
2020135042.tif 000028