(57)【要約】【課題】記憶媒体への書き込み回数を削減すること。【解決手段】制御装置３は、通信回線で接続された記憶媒体４ａ〜４ｄへの情報の書き込みを制御する装置である。キャッシュメモリ３ａは、記憶媒体４ａ〜４ｄに書き込まれている第１の情報Ｄ１を一時的に記憶する。受付部３ｂは、記憶媒体４ａ〜４ｄに書き込まれている第１の情報Ｄ１を更新の対象とする第２の情報Ｄ２を受け付ける。書き込み制御部３ｃは、受付部３ｂが受け付けた第２の情報Ｄ２を記憶媒体４ａ〜４ｄに書き込む際に第１の情報Ｄ１がキャッシュメモリ３ａに存在しない場合、第１の情報Ｄ１と第２の情報Ｄ２とを対比するために、記憶媒体４ａ〜４ｄから読み出された対比用情報を用いて第１の情報Ｄ１と第２の情報Ｄ２との一致を判断し、第１の情報Ｄ１と一致すると判断した第２の情報Ｄ２の記憶媒体４ａ〜４ｄへの書き込みを回避する。【選択図】図１
2012185687.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体への情報の書き込みを制御する制御装置において、
前記記憶媒体に書き込まれている第１の情報を一時的に記憶するキャッシュメモリと、
前記記憶媒体に書き込まれている前記第１の情報を更新の対象とする第２の情報を受け付ける受付部と、
前記受付部が受け付けた前記第２の情報を前記記憶媒体に書き込む際に前記第１の情報が前記キャッシュメモリに存在しない場合、前記第１の情報と前記第２の情報とを対比するために、前記記憶媒体から読み出された対比用情報を用いて前記第１の情報と前記第２の情報との一致を判断し、前記第１の情報と一致すると判断した前記第２の情報の前記記憶媒体への書き込みを回避する書き込み制御部と、
を有することを特徴とする制御装置。
【請求項２】
当該制御装置には複数の記憶媒体が接続されており、
前記第１の情報を分散した複数の第１の分散情報および前記複数の第１の分散情報の冗長性を確保する第１の冗長情報が前記複数の記憶媒体に個別に記憶されており、
前記書き込み制御部は、前記第２の情報を分散した複数の第２の分散情報と、前記複数の第２の分散情報の冗長性を確保する第２の冗長情報とを生成し、前記第１の冗長情報と、前記第２の冗長情報との一致を判断することを特徴とする請求項１記載の制御装置。
【請求項３】
前記第１の冗長情報と前記第２の冗長情報は、それぞれパリティ情報であり、
前記書き込み制御部は、前記第１の冗長情報が、前記第２の冗長情報と一致しないと判断した場合は、前記複数の記憶媒体にそれぞれ記憶されている前記複数の第１の分散情報と前記第１の冗長情報を、前記第２の分散情報と前記第２の冗長情報で更新することを特徴とする請求項２記載の制御装置。
【請求項４】
前記第１の情報が前記キャッシュメモリに記憶されている場合、前記キャッシュメモリに記憶されている前記第１の情報と前記第２の情報との一致を判断するキャッシュ制御部をさらに有することを特徴とする請求項１記載の制御装置
【請求項５】
前記キャッシュ制御部は、前記キャッシュメモリに記憶されている前記第１の情報から生成した複数の第１の分散情報と、前記複数の第１の分散情報の冗長性を確保する第１の冗長情報と、前記第２の情報を分散した複数の第２の分散情報と、前記複数の第２の分散情報の冗長性を確保する第２の冗長情報とを生成し、生成した前記第１の冗長情報と前記第２の冗長情報との一致を判断することを特徴とする請求項４記載の制御装置。
【請求項６】
当該制御装置には複数の記憶媒体が接続されており、
前記第１の情報を分散した複数の第１の分散情報および前記複数の第１の分散情報の冗長性を確保する第１の冗長情報が前記複数の記憶媒体に個別に記憶されており、
前記キャッシュ制御部が生成した前記第１の冗長情報と前記第２の冗長情報は、それぞれパリティ情報であり、
前記キャッシュ制御部は、前記第２の冗長情報が前記第１の冗長情報と一致しないと判断した場合は、前記複数の記憶媒体にそれぞれ記憶されている前記複数の第１の分散情報と前記第１の冗長情報を、前記複数の第２の分散情報と前記第２の冗長情報で更新することを特徴とする請求項５記載の制御装置。
【請求項７】
記憶媒体への情報の書き込みを制御する制御方法において、
コンピュータに、
前記記憶媒体に書き込まれている第１の情報を更新の対象とする第２の情報を受け付けると、
受け付けた前記第２の情報を前記記憶媒体に書き込む際に、前記第１の情報が、前記記憶媒体に書き込まれている前記第１の情報を一時的に記憶するキャッシュメモリに存在しない場合、前記記憶媒体から読み出された、前記第１の情報と前記第２の情報とを対比するために、前記記憶媒体から読み出された対比用情報を用いて前記第１の情報と前記第２の情報との一致を判断し、
前記第１の情報と一致すると判断した前記第２の情報の前記記憶媒体への書き込みを回避する、
処理を実行させることを特徴とする制御方法。
【請求項８】
記憶媒体と、前記記憶媒体への情報の書き込みを制御する制御装置とを備えるストレージ装置において、
前記制御装置は、
前記記憶媒体に書き込まれている第１の情報を一時的に記憶するキャッシュメモリと、
前記記憶媒体に書き込まれている前記第１の情報を更新の対象とする第２の情報を受け付ける受付部と、
前記受付部が受け付けた前記第２の情報を前記記憶媒体に書き込む際に前記第１の情報が前記キャッシュメモリに存在しない場合、前記第１の情報と前記第２の情報とを対比するために、前記記憶媒体から読み出された対比用情報を用いて前記第１の情報と前記第２の情報との一致を判断し、前記第１の情報と一致すると判断した前記第２の情報の前記記憶媒体への書き込みを回避する書き込み制御部と、
を有することを特徴とするストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は制御装置、制御方法およびストレージ装置に関する。
【背景技術】
【０００２】
近年、コンピュータシステムで取り扱う大容量のデータを記憶する記憶装置を複数用いたストレージ装置が広く使用されている。一般的なストレージ装置は、１つまたは複数の記憶媒体と、これらの記憶媒体に対するデータの書き込みおよびデータの読み出しを制御する制御装置を含む（例えば、特許文献１参照）。
【０００３】
また、ストレージ装置を用いてデータをバックアップする技術において、変更のなかったデータをバックアップせず、可能な限り少ないファイルのコピーをバックアップして、データのバックアップ量を減らす技術が知られている。具体的には、バックアップされ得るデータがあるかどうか、およびどのデータをバックアップするかを決定するデータをメモリに格納しておき、そのデータに基づいて、バックアップ対象のデータを決定する。そして、バックアップ対象のデータがキャッシュメモリにない場合に限り、格納のためのデータをバックアップストレージに伝送する技術が知られている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−８７０９４号公報
【特許文献２】特開２００５−５０２９５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
書き込み対象のデータがキャッシュメモリに存在しない場合であっても、記憶媒体に存在する場合がある。例えば、書き込み対象のデータに比べて、キャッシュメモリの容量が小さい場合は、書き込み対象のデータのほとんどはキャッシュメモリに存在しないことになる。
【０００６】
従って、書き込み対象のデータがキャッシュメモリにない場合に限り、格納のためのデータを記憶媒体に伝送する技術では、書き込み対象のデータと同じデータが記憶媒体に存在しているにもかかわらず、書き込み対象のデータが記憶媒体に上書きされてしまうと言う問題があった。
【０００７】
本発明はこのような点に鑑みてなされたものであり、記憶媒体への書き込み回数を削減する制御装置、制御方法およびストレージ装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、開示の制御装置が提供される。この制御装置は、記憶媒体への情報の書き込みを制御する装置であり、キャッシュメモリと、受付部と、書き込み制御部とを有している。
【０００９】
キャッシュメモリは、記憶媒体に書き込まれている第１の情報を一時的に記憶する。
受付部は、記憶媒体に書き込まれている第１の情報を更新の対象とする第２の情報を受け付ける。
【００１０】
書き込み制御部は、受付部が受け付けた第２の情報を記憶媒体に書き込む際に第１の情報がキャッシュメモリに存在しない場合、第１の情報と第２の情報とを対比するために、記憶媒体から読み出された対比用情報を用いて第１の情報と第２の情報との一致を判断し、第１の情報と一致すると判断した第２の情報の記憶媒体への書き込みを回避する。
【発明の効果】
【００１１】
記憶媒体への書き込み回数を削減することができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態のストレージ装置を示す図である。
【図２】第２の実施の形態のストレージシステムを示すブロック図である。
【図３】Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を説明する図である。
【図４】Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を説明する図である。
【図５】第１のＳｍａｌｌ−Ｗｒｉｔｅ方式を説明する図である。
【図６】第２のＳｍａｌｌ−Ｗｒｉｔｅ方式を説明する図である。
【図７】第２の実施の形態の制御モジュールの機能を示すブロック図である。
【図８】制御モジュールのデータ書き込み処理を示すフローチャートである。
【図９】Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理を示すフローチャートである。
【図１０】Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理を示すフローチャートである。
【図１１】第１のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理を示すフローチャートである。
【図１２】第２のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理を示すフローチャートである。
【図１３】Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理を説明するフローチャートである。
【図１４】Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理を示すフローチャートである。
【図１５】第１のＳｍａｌｌ−Ｗｒｉｔｅ方式の第２の書き込み判断処理を示すフローチャートである。
【図１６】第２のＳｍａｌｌ−Ｗｒｉｔｅ方式の第２の書き込み判断処理を示すフローチャートである。
【図１７】Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理の具体例を説明する図である。
【図１８】Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理の具体例を説明する図である。
【図１９】第１のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理の具体例を説明する図である。
【図２０】第２のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理の具体例を説明する図である。
【図２１】Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理の具体例を説明する図である。
【図２２】Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理の具体例を説明する図である。
【図２３】第１のＳｍａｌｌ−Ｗｒｉｔｅ方式の第２の書き込み判断処理の具体例を説明する図である。
【図２４】第２のＳｍａｌｌ−Ｗｒｉｔｅ方式の第２の書き込み判断処理の具体例を説明する図である。
【図２５】第２の実施の形態のストレージ装置を用いた応用例を示す図である。
【図２６】二重切り離しコピー方式を説明する図である。
【図２７】バックグラウンド・コピー方式を説明する図である。
【図２８】コピー・オン・ライト方式を説明する図である。
【発明を実施するための形態】
【００１３】
以下、実施の形態のストレージ装置を、図面を参照して詳細に説明する。
＜第１の実施の形態＞
図１は、第１の実施の形態のストレージ装置を示す図である。
【００１４】
第１の実施の形態のストレージ装置１は、電気通信回線や、光通信回線等を介してホスト装置２に接続されている。
ストレージ装置１は、制御装置３と、記憶媒体４ａ、４ｂ、４ｃ、４ｄを有している。
【００１５】
記憶媒体４ａ、４ｂ、４ｃ、４ｄは、情報を記憶可能な記憶領域を有する。この記憶媒体４ａ、４ｂ、４ｃ、４ｄとしては、例えば、ＨＤＤ（Hard Disk Drive）や、ＳＳＤ（Solid State Drive）等が挙げられる。また、記憶媒体４ａ、４ｂ、４ｃ、４ｄの総容量は、特に限定されないが、一例として６００ＧＢ（Giga Byte）〜２４０ＴＢ（Tera Byte）である。なお、本実施の形態のストレージ装置１は、４個の記憶媒体４ａ、４ｂ、４ｃ、４ｄを有するが、記憶媒体の個数は、３つ以下であってもよく、５個以上であってもよい。
【００１６】
記憶媒体４ａ、４ｂ、４ｃ、４ｄには、それぞれ記憶媒体４ａ、４ｂ、４ｃ、４ｄの一部の記憶領域で構成されるストライプ４が設定されている。
記憶媒体４ａ、４ｂ、４ｃそれぞれの、ストライプ４を構成する記憶領域には、第１の情報Ｄ１が所定の情報量毎に分散された分散情報Ａ１、Ｂ１、Ｃ１が記憶されている。本実施の形態では、１つの分散情報はホスト装置２からの書き込みデータの一部であり、データサイズは１２８ＬＢＡ（Logical Block Address）分に相当する。１ＬＢＡにより特定される記憶領域のサイズは、例えば５１２バイト（Byte）である。
【００１７】
この第１の情報Ｄ１は、例えば、ホスト装置２の書き込み要求に応じて記憶媒体４ａ、４ｂ、４ｃに書き込まれた情報である。具体的には、記憶媒体４ａのストライプ４を構成する記憶領域には、第１の情報Ｄ１を分散した分散情報Ａ１が記憶されている。記憶媒体４ｂのストライプ４を構成する記憶領域には、第１の情報Ｄ１を分散した分散情報Ｂ１が記憶されている。記憶媒体４ｃのストライプ４を構成する記憶領域には、第１の情報Ｄ１を分散した分散情報Ｃ１が記憶されている。また、記憶媒体４ｄのストライプ４を構成する記憶領域には、分散情報Ａ１、Ｂ１、Ｃ１から生成した、分散情報Ａ１、Ｂ１、Ｃ１の冗長性を確保するパリティ情報（誤り訂正符号情報）Ｐ１が記憶されている。
【００１８】
制御装置３は、例えばホスト装置２の情報書き込み要求に応じて、記憶媒体４ａ、４ｂ、４ｃ、４ｄが有する記憶領域にストライプ単位でデータを書き込む。
制御装置３は、キャッシュメモリ３ａと、受付部３ｂと、書き込み制御部３ｃとを有している。
【００１９】
キャッシュメモリ３ａは、例えば制御装置３が有するＳＲＡＭ（Static Random Access Memory）またはＤＲＡＭで構成されている。キャッシュメモリ３ａの記憶容量は、特に限定されないが、一例として２〜６４ＧＢ程度である。
【００２０】
キャッシュメモリ３ａは、例えばホスト装置２と制御装置３とのＲＥＡＤ／ＷＲＩＴＥ  Ｉ／Ｏ処理（以下、単に「アクセス」と言う）を高速にする目的で設けられている。キャッシュメモリ３ａは、ホスト装置２のアクセス要求に応じて記憶媒体４ａ、４ｂ、４ｃ、４ｄに書き込む情報や、ホスト装置２のアクセス要求に応じて記憶媒体４ａ、４ｂ、４ｃ、４ｄから読み出した情報を一時的に記憶する。キャッシュメモリ３ａに情報を一時的に記憶しておくことで、例えば以降の情報の読み出しにおいてホスト装置２は、記憶媒体４ａ、４ｂ、４ｃ、４ｄにアクセスすることなく情報を読み出すことができる。
【００２１】
ここで、キャッシュメモリ３ａの記憶容量は、記憶媒体４ａ、４ｂ、４ｃ、４ｄに比べて少ない。このため、記憶媒体４ａ、４ｂ、４ｃ、４ｄに記憶されている全てのデータを同時にキャッシュメモリ３ａ上に展開することは困難である。そのため、キャッシュメモリ３ａの使用頻度の小さい情報は、新しい情報に書き換えられる。
【００２２】
受付部３ｂおよび書き込み制御部３ｃは、制御装置３が有するＣＰＵ（Central Processing Unit）の機能により実現することができる。
受付部３ｂは、記憶媒体４ａ、４ｂ、４ｃに書き込まれている第１の情報Ｄ１を更新の対象とする第２の情報Ｄ２を受け付ける。なお、第２の情報Ｄ２が第１の情報Ｄ１を更新の対象とすることは、例えば、第２の情報Ｄ２の格納先が、第１の情報Ｄ１の格納先と同じことより、判断することができる。受付部３ｂは、受け付けた第２の情報Ｄ２をキャッシュメモリ３ａに一時的に記憶する。
【００２３】
書き込み制御部３ｃは、受付部３ｂが受け付けた第２の情報Ｄ２を記憶媒体４ａ、４ｂ、４ｃに書き込む際に第１の情報Ｄ１がキャッシュメモリ３ａに存在するか否か、すなわち、第１の情報Ｄ１がキャッシュヒットしたか否かを判断する。ここで、キャッシュヒットとは、命令処理に必要な情報がキャッシュメモリ３ａに存在し、キャッシュメモリ３ａから命令処理に必要な情報を読み込むことができることを言う。なお、キャッシュヒットの判断は、受付部３ｂが第２の情報Ｄ２を受け付けた直後に行うこともできる。
【００２４】
なお、図１のキャッシュメモリ３ａ内に点線で図示した第１の情報Ｄ１を構成する分散情報Ａ１、Ｂ１、Ｃ１は、ホスト装置２と制御装置３とのアクセスの際、キャッシュメモリ３ａに一時的に記憶されていたことを示している。また、キャッシュメモリ３ａ内に点線で図示した第１の情報Ｄ１は、書き込み制御部３ｃがキャッシュヒットしたか否かを判断する時には、第１の情報Ｄ１が他の情報により上書きされ、キャッシュメモリ３ａに存在しないことを示している。
【００２５】
図１に示す例では、書き込み制御部３ｃは、第２の情報Ｄ２を記憶媒体４ａ、４ｂ、４ｃに書き込む際に図示しないキャッシュ管理テーブルに基づいて、第１の情報Ｄ１がキャッシュメモリ３ａに存在しないと判断する。書き込み制御部３ｃは、第２の情報Ｄ２を記憶媒体４ａ、４ｂ、４ｃに書き込む際に第１の情報Ｄ１がキャッシュメモリ３ａに存在しないと判断すると、記憶媒体４ｄからパリティ情報Ｐ１を読み出す。なお、パリティ情報Ｐ１は、対比用情報の一例である。そして、書き込み制御部３ｃは、読み出されたパリティ情報Ｐ１を用いて第１の情報Ｄ１と第２の情報Ｄ２との一致を判断する。パリティ情報Ｐ１を用いた第１の情報Ｄ１と第２の情報Ｄ２との一致の判断は、例えば以下のようにして行うことができる。
【００２６】
書き込み制御部３ｃは、キャッシュメモリ３ａに記憶された第２の情報Ｄ２から、記憶媒体４ａ、４ｂ、４ｃそれぞれのストライプ４を構成する記憶領域毎に第２の情報Ｄ２を分散した分散情報Ａ２、Ｂ２、Ｃ２を生成する。そして、書き込み制御部３ｃは、生成した分散情報Ａ２、Ｂ２、Ｃ２のＸＯＲ（排他的論理和）を演算することにより、分散情報Ａ２、Ｂ２、Ｃ２の冗長性を確保するパリティ情報Ｐ２を生成する。そして、書き込み制御部３ｃは、パリティ情報Ｐ１とパリティ情報Ｐ２との一致を判断する。書き込み制御部３ｃは、パリティ情報Ｐ１とパリティ情報Ｐ２とが一致すれば、第１の情報Ｄ１と第２の情報Ｄ２とが一致すると判断する。
【００２７】
そして、書き込み制御部３ｃは、書き込み制御部３ｃが第１の情報Ｄ１と一致すると判断した第２の情報Ｄ２の記憶媒体４ａ、４ｂ、４ｃへの書き込みを回避する。書き込みを回避することにより、記憶媒体４ａ、４ｂ、４ｃそれぞれのストライプ４を構成する記憶領域に既に記憶されている第１の情報Ｄ１と重複する第２の情報Ｄ２の上書きを抑制する。なお、書き込み制御部３ｃは、第２の情報Ｄ２が記憶媒体４ａ、４ｂ、４ｃに正常に書き込まれた旨をホスト装置２に通知するようにしてもよい。
【００２８】
なお、書き込み制御部３ｃは、パリティ情報Ｐ１とパリティ情報Ｐ２とが一致しなければ、第１の情報Ｄ１と第２の情報Ｄ２とが一致しないと判断する。書き込み制御部３ｃは、第１の情報Ｄ１と一致しないと判断した第２の情報Ｄ２を、記憶媒体４ａ、４ｂ、４ｃに書き込む。具体的には、分散情報Ａ２を記憶媒体４ａのストライプ４を構成する記憶領域に上書きする。分散情報Ｂ２を記憶媒体４ｂのストライプ４を構成する記憶領域に上書きする。分散情報Ｃ２を記憶媒体４ｃのストライプ４を構成する記憶領域に上書きする。パリティ情報Ｐ２を記憶媒体４ｄのストライプ４を構成する記憶領域に上書きする。この上書き処理により、既存の情報が記憶されていたストライプ４を構成する記憶領域の記憶内容が更新される。
【００２９】
ところで、図１には図示していないが、第２の情報Ｄ２を記憶媒体４ａ、４ｂ、４ｃに書き込む際に第１の情報Ｄ１がキャッシュメモリ３ａに存在する場合、書き込み制御部３ｃは、第２の情報Ｄ２がキャッシュメモリ３ａに存在する第１の情報Ｄ１に一致するか否かを判断するようにしてもよい。一致の判断は、例えば以下のようにして行うことができる。
【００３０】
書き込み制御部３ｃは、キャッシュメモリ３ａに存在する分散情報Ａ１、Ｂ１、Ｃ１のＸＯＲを演算することにより、分散情報Ａ１、Ｂ１、Ｃ１の冗長性を確保するパリティ情報（以下、キャッシュパリティ情報と言う）を生成する。なお、キャッシュパリティ情報は、キャッシュ対比用情報の一例である。
【００３１】
書き込み制御部３ｃは、第２の情報Ｄ２から分散情報Ａ２、Ｂ２、Ｃ２を生成する。そして、書き込み制御部３ｃは、生成した分散情報Ａ２、Ｂ２、Ｃ２のＸＯＲを演算することにより、分散情報Ａ２、Ｂ２、Ｃ２の冗長性を確保するパリティ情報Ｐ２を生成する。
【００３２】
そして、書き込み制御部３ｃは、キャッシュパリティ情報とパリティ情報Ｐ２との一致を判断する。書き込み制御部３ｃは、キャッシュパリティ情報とパリティ情報Ｐ２とが一致すれば、第１の情報Ｄ１と第２の情報Ｄ２とが一致すると判断する。
【００３３】
そして、書き込み制御部３ｃは、書き込み制御部３ｃが第１の情報Ｄ１と一致すると判断した第２の情報Ｄ２の記憶媒体４ａ、４ｂ、４ｃへの書き込みを回避する。書き込みを回避することにより、記憶媒体４ａ、４ｂ、４ｃそれぞれのストライプ４を構成する記憶領域に既に記憶されている第１の情報Ｄ１と重複する第２の情報Ｄ２の上書きを抑制する。
【００３４】
なお、書き込み制御部３ｃは、キャッシュパリティ情報とパリティ情報Ｐ２とが一致しなければ、第１の情報Ｄ１と第２の情報Ｄ２とが一致しないと判断する。書き込み制御部３ｃは、第１の情報Ｄ１と一致しないと判断した第２の情報Ｄ２を、記憶媒体４ａ、４ｂ、４ｃに書き込む。具体的には、分散情報Ａ２を記憶媒体４ａのストライプ４を構成する記憶領域に上書きする。分散情報Ｂ２を記憶媒体４ｂのストライプ４を構成する記憶領域に上書きする。分散情報Ｃ２を記憶媒体４ｃのストライプ４を構成する記憶領域に上書きする。パリティ情報Ｐ２を記憶媒体４ｄのストライプ４を構成する記憶領域に上書きする。この上書き処理により、既存の情報が記憶されていたストライプ４を構成する記憶領域の記憶内容が更新される。
【００３５】
第１の実施の形態の制御装置３によれば、第１の情報Ｄ１がキャッシュメモリ３ａに存在しない場合、書き込み制御部３ｃが、記憶媒体４ｄから読み出されたパリティ情報Ｐ１を用いて第１の情報Ｄ１と第２の情報Ｄ２との一致を判断するようにした。そして、書き込み制御部３ｃが、第１の情報Ｄ１と一致すると判断した第２の情報Ｄ２の記憶媒体４ａ、４ｂ、４ｃへの書き込みを回避するようにした。
【００３６】
ホスト装置２から送られてきた情報と対比する情報がキャッシュメモリ上に存在しない場合に記憶媒体に送られてきた情報をそのまま記憶媒体に書き込む装置に比べ、制御装置３は、重複する情報の書き込み回数を低減できる可能性を高めることができる。従って、記憶媒体４ａ、４ｂ、４ｃ、４ｄとして、例えばＳＳＤを用いた場合には、記憶媒体４ａ、４ｂ、４ｃ、４ｄへの書き込み回数を減らすことで、書き換え回数の上限に達する（寿命に至る）までの時間を延ばすことができる。
【００３７】
また、第２の情報Ｄ２を記憶媒体４ａ、４ｂ、４ｃに書き込むよりも、第１の情報Ｄ１を記憶媒体４ａ、４ｂ、４ｃから読み出す方が、記憶媒体４ａ、４ｂ、４ｃへのアクセス時間が短い。このため、重複する情報の書き込みを回避することで、ホスト装置２から第２の情報Ｄ２を受け付けたときに、制御装置３が第２の情報Ｄ２を処理する時間を短くすることができる。
【００３８】
また、書き込み制御部３ｃは、第１の情報Ｄ１と第２の情報Ｄ２とが一致するか否かの判断にパリティ情報Ｐ１、Ｐ２を用いた。パリティ情報Ｐ１とパリティ情報Ｐ２とを対比し、パリティ情報Ｐ１とパリティ情報Ｐ２との一致を判断することで、情報Ａ１、Ｂ１、Ｃ１と情報Ａ２、Ｂ２、Ｃ２それぞれを対比し、一致を判断する場合に比べ、対比する回数を減らすことができる。対比する回数を減らすことで、制御装置３が第２の情報Ｄ２を処理する時間を短くすることができる。
【００３９】
また、パリティ情報同士を対比することにより、パリティ情報同士が一致しない場合には、パリティ情報Ｐ２をそのまま記憶媒体４ｄのストライプ４を構成する記憶領域に書き込むことができる。パリティ情報同士を対比し、一致を判断することで、例えば、第１の情報Ｄ１と第２の情報Ｄ２それぞれのハッシュ値を求めて一致を判断する場合に比べ、不一致時にパリティ情報Ｐ２を生成する手間を省略することができる。冗長用のパリティデータを比較処理に用いることで、比較処理専用のコードを作成する手間を省略できる。
【００４０】
以下、開示のストレージ装置について、より具体的に説明する。
＜第２の実施の形態＞
図２は、第２の実施の形態のストレージシステムを示すブロック図である。
【００４１】
ストレージシステム１０００は、ホスト装置３０と、このホスト装置３０にファイバチャネル（ＦＣ：Fibre Channel）スイッチ３１を介して接続されたストレージ装置１００とを有している。なお、図２では１つのホスト装置３０がストレージ装置１００に接続されているが、複数のホスト装置が、ストレージ装置１００に接続されていてもよい。
【００４２】
ストレージ装置１００は、それぞれが複数のＨＤＤ２０を備えるドライブエンクロージャ（ＤＥ：Drive Enclosure）２０ａ、２０ｂ、２０ｃ、２０ｄと、これらのドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄの物理記憶領域をＲＡＩＤ（Redundant Arrays of Inexpensive/Independent Disks）によって管理する制御モジュール（ＣＭ：Controller Module）１０ａ、１０ｂとを有している。なお、本実施の形態では、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備える記憶媒体としては、ＨＤＤ２０を例示したが、ＨＤＤ２０に限らず、ＳＳＤ等、他の記憶媒体を用いてもよい。以下、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備える複数のＨＤＤ２０を区別しない場合は、「ＨＤＤ２０群」と言う。ＨＤＤ群２０の総容量は、例えば６００ＧＢ（Giga Byte）〜２４０ＴＢ（Tera Byte）である。
【００４３】
ストレージ装置１００は、２つの制御モジュール１０ａ、１０ｂを運用に使用することで、冗長性が確保されている。なお、ストレージ装置１００が備える制御モジュールの数は、２つに限定されず、３つ以上の制御モジュールにより冗長性が確保されていてもよいし、制御モジュール１０ａのみを使用した構成であってもよい。
【００４４】
制御モジュール１０ａ、１０ｂは、それぞれ制御装置の一例であり、制御モジュール１０ａ、１０ｂは、それぞれ同じハードウェア構成によって実現される。
制御モジュール１０ａには、内部バスを介してチャネルアダプタ（ＣＡ：Channel Adapter）１１ａ、１１ｂに接続されている。制御モジュール１０ｂには、内部バスを介してチャネルアダプタ１１ｃ、１１ｄに接続されている。
【００４５】
チャネルアダプタ１１ａ、１１ｂ、１１ｃ、１１ｄは、それぞれファイバチャネルスイッチ３１に接続され、ファイバチャネルスイッチ３１を介してホスト装置３０のチャネルＣＨ１、ＣＨ２、ＣＨ３、ＣＨ４に接続される。チャネルアダプタ１１ａ、１１ｂ、１１ｃ、１１ｄは、ホスト装置３０と制御モジュール１０ａ、１０ｂとの間でデータを送受信するインタフェース機能を提供する。
【００４６】
制御モジュール１０ａ、１０ｂは、それぞれ、ホスト装置３０からのデータアクセス要求に応じてドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが有するＨＤＤ２０の物理記憶領域へのデータアクセスをＲＡＩＤによって制御する。
【００４７】
制御モジュール１０ａ、１０ｂは、それぞれ同じハードウェア構成によって実現されるため、代表的に、制御モジュール１０ａのハードウェア構成を説明する。
制御モジュール１０ａは、ＣＰＵ１０１と、ＲＡＭ（Random Access Memory）１０２と、フラッシュＲＯＭ（Read Only Memory）１０３と、キャッシュメモリ１０４と、デバイスアダプタ（ＤＡ：Device Adapter）１０５ａ、１０５ｂとを備えている。
【００４８】
ＣＰＵ１０１は、フラッシュＲＯＭ１０３等に記憶されたプログラムを実行することにより、制御モジュール１０ａ全体を統括的に制御する。ＲＡＭ１０２は、ＣＰＵ１０１に実行させるプログラムの少なくとも一部や、プログラムによる処理に必要な各種データを一時的に記憶する。フラッシュＲＯＭ１０３は、不揮発性のメモリであり、ＣＰＵ１０１により実行されるプログラムや、プログラムの実行に必要な各種のデータ等を記憶する。
【００４９】
また、フラッシュＲＯＭ１０３は、ストレージ装置１００の停電時等にキャッシュメモリ１０４に記憶されているデータの退避先となる。
キャッシュメモリ１０４は、ＨＤＤ２０群に書き込まれているデータやＨＤＤ２０群から読み出したデータを一時的に記憶する。
【００５０】
そして、制御モジュール１０ａは、例えばホスト装置３０からのデータ読み出し命令を受けたときに、読み出し対象のデータがキャッシュメモリ１０４に記憶されているか否かを判断する。読み出し対象のデータがキャッシュメモリ１０４に記憶されていれば、制御モジュール１０ａは、キャッシュメモリ１０４に記憶されている読み出し対象のデータをホスト装置３０に送る。読み出し対象のデータをＨＤＤ２０群から読み出す場合に比べ、データを迅速にホスト装置３０に送ることができる。
【００５１】
また、キャッシュメモリ１０４には、ＣＰＵ１０１による処理に必要なデータが一時的に記憶されてもよい。このキャッシュメモリ１０４としては、例えば、ＳＲＡＭ等の揮発性の半導体装置が挙げられる。また、キャッシュメモリ１０４の記憶容量は、特に限定されないが、一例として２〜６４ＧＢ程度である。
【００５２】
デバイスアダプタ１０５ａ、１０５ｂは、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄに接続されている。このデバイスアダプタ１０５ａ、１０５ｂは、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備えるＨＤＤ２０群とキャッシュメモリ１０４との間でデータを送受信するインタフェース機能を提供する。制御モジュール１０ａは、デバイスアダプタ１０５ａ、１０５ｂを介してドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備えるＨＤＤ２０群との間でデータの送受信を行う。
【００５３】
制御モジュール１０ａと制御モジュール１０ｂとは図示しないルータを介して接続されている。例えば、ＨＤＤ２０群に書き込みを要求するデータがホスト装置３０からチャネルアダプタ１１ａを介して制御モジュール１０ａに送信されると、ＣＰＵ１０１は、受信したデータをキャッシュメモリ１０４に格納する。また、ＣＰＵ１０１は、データの格納と共に、受信したデータを、ルータを介して制御モジュール１０ｂに送信する。そして、制御モジュール１０ｂは、制御モジュール１０ｂが有するＣＰＵが受信したデータを、制御モジュール１０ｂが有するキャッシュメモリに格納する。この処理によって、制御モジュール１０ａ内のキャッシュメモリ１０４と制御モジュール１０ｂ内のキャッシュメモリとに同一のデータが記憶される。
【００５４】
ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄには、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備える複数のＨＤＤ２０のうち、１つ、または複数のＨＤＤ２０により構成されたＲＡＩＤグループが形成されている。このＲＡＩＤグループは、「論理ボリューム」「仮想ディスク」「ＲＬＵ（RAID Logical Unit）」等と呼ばれる場合もある。
【００５５】
図２では、ＲＡＩＤ５を構成するＲＡＩＤグループ２１を示している。なお、ＲＡＩＤグループ２１を構成するＨＤＤ２０は、他のＨＤＤ２０と区別するために、異なる符号（ＨＤＤ２１ａ、２１ｂ、２１ｃ、２１ｄ）を付している。すなわち、ＲＡＩＤグループ２１は、ＨＤＤ２１ａ、２１ｂ、２１ｃ、２１ｄで構成されており、ＲＡＩＤ５（３＋１）で運用されている。なお、ＲＡＩＤグループ２１のＲＡＩＤ構成は、一例であり、図示のＲＡＩＤ構成に限定されない。例えば、ＲＡＩＤグループ２１は、任意の個数のＨＤＤ２０を有することができる。また、ＲＡＩＤグループ２１は、ＲＡＩＤ６等、任意のＲＡＩＤ方式で構成することができる。
【００５６】
ＲＡＩＤグループ２１を構成するＨＤＤ２１ａ〜２１ｄには、ＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域の一部で構成されるストライプが設定されている。ホスト装置３０と制御モジュール１０ａ、１０ｂとの間のアクセスは、ストライプ単位で行われる。すなわち、ホスト装置３０は、ＨＤＤ２１ａ〜２１ｄそれぞれの、同一のストライプを構成する記憶領域を更新の対象とする１ストライプ分のデータを制御モジュール１０ａ、１０ｂに送信する。
【００５７】
以下の説明では、ＨＤＤ２１ａ〜２１ｄそれぞれの、同一のストライプを構成する記憶領域をデータの書き込み先とする１ストライプ分のデータを「更新データ」と言う。なお、更新データは、第２の情報の一例である。
【００５８】
また、以下の説明では、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新データのデータ書き込み対象の記憶領域に存在するデータに一致するデータを、「更新対象データ」と言う。すなわち、更新対象データは、以下の（１）、（２）のデータのいずれかである。（１）更新データのデータ書き込み対象の記憶領域に存在するデータ。（２）更新データのデータ書き込み対象の記憶領域に存在するデータに一致する、キャッシュメモリ１０４に記憶されているデータ。なお、更新対象データは、第１の情報の一例である。
【００５９】
また、以下の説明では、ＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域で構成される同一のストライプのうち、更新対象データを含む記憶領域で構成されるストライプを「更新対象のストライプ」と言う。
【００６０】
次に、制御モジュール１０ａ、１０ｂのＨＤＤ２１ａ〜２１ｄへの更新データの書き込み方法を、詳しく説明する。制御モジュール１０ａ、１０ｂは、それぞれ同じ機能を備えているため、代表的に、制御モジュール１０ａが備える機能を説明する。
【００６１】
ホスト装置３０から制御モジュール１０ａへの更新データの書き込み要求を受け付けると、制御モジュール１０ａは、受け取った更新データをキャッシュメモリ１０４に記憶する。キャッシュメモリ１０４に記憶した更新データを解析することにより、受信した更新データを予め設定した大きさのブロック単位に分割する。以下の説明では、更新データをブロック単位に分割したデータを「分散データ」と言う。１つの分散データは１２８個のＬＢＡ分のデータを有するものとする。更新データは、分散データ単位でキャッシュメモリ１０４に存在する。
【００６２】
ところで、更新データの所定の領域には、通常のライトバック方式を用いた書き込み、または差分ライトバック方式を用いた書き込みのいずれか１つを指定する情報が格納されている。また他にも、管理端末等からライトバック方式の設定を行ってもよい。管理端末等からライトバック方式の設定を行う場合、例えば制御モジュール１０ａ内キャッシュメモリ１０４に、どちらのライトバック方式を用いるかを示すフラグを記憶する記憶領域を設け、その記憶領域にフラグを記憶しておく。制御モジュール１０ａは、フラグを記憶した記憶領域にアクセスすることで、書き込み方式を特定することができる。さらに、他にも、ディスクの種類（ＨＤＤまたはＳＳＤ等）に基づいて、制御モジュール１０ａが自動で判断してもよい。通常のライトバック方式を用いた書き込みか、差分ライトバック方式を用いた書き込みかは、ホスト装置３０を操作する操作者が指定することができる。
【００６３】
更新データを解析した結果、受け取った更新データに対し通常のライトバック方式を用いた書き込みが指定されていると判断すると、制御モジュール１０ａは、処理の空き時間ができてからキャッシュメモリ１０４に記憶されている更新データをＨＤＤ２１ａ〜２１ｄに書き込む（書き戻す）。
【００６４】
ＲＡＩＤ５（３＋１）は、４つのＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域のうち、いずれか３つの記憶領域を更新データから生成した分散データの記憶に使用して、１つの記憶領域をパリティデータの記憶に使用する。パリティデータは、制御モジュール１０ａが、更新データから生成した分散データそれぞれのＸＯＲを演算することで生成する。パリティデータは、ＨＤＤ２１ａ〜２１ｄのいずれか１つのＨＤＤの故障時（ＨＤＤ２１ａ〜２１ｄに記憶されているデータが読み出せなくなったとき）に故障したＨＤＤのデータを再生成する際に利用する冗長データである。ＨＤＤ２１ａ〜２１ｄそれぞれの、同一のストライプを構成する記憶領域のうち、パリティデータを記憶する記憶領域は、ストライプ毎に異なる。制御モジュール１０ａは、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域にデータを分散して記憶する。
【００６５】
また、更新データを解析した結果、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されていると判断すると、制御モジュール１０ａは、更新データと更新対象データとの一致を判断する。そして、制御モジュール１０ａは、一致すると判断した更新データのＨＤＤ２１ａ〜２１ｄそれぞれの更新対象のストライプを構成する記憶領域への書き込みを回避する。他方、一致しないと判断した更新データをＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む（書き戻す）。
【００６６】
制御モジュール１０ａは、更新データと、更新対象データとの一致の判断を以下の方法で行う。
まず、制御モジュール１０ａは、更新対象データが、キャッシュメモリ１０４に記憶されているか否かを判断する。そして、更新対象データが、キャッシュメモリ１０４に記憶されていないと判断すれば、ＨＤＤ２１ａ〜２１ｄから更新対象データを読み出すため、制御モジュール１０ａは、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に記憶されている更新対象データと更新データとの一致を判断する。
【００６７】
具体的には、制御モジュール１０ａは、ＨＤＤ２１ａ〜２１ｄにおけるＬＢＡと、このＬＢＡに記憶されているデータが割り当てられているキャッシュメモリ１０４を構成するキャッシュページのアドレスを管理している。そして、制御モジュール１０ａは、更新先データの格納先ＬＢＡがキャッシュメモリ１０４に存在すれば、更新対象データが、キャッシュメモリ１０４に記憶されていると判断する。更新対象データが、キャッシュメモリ１０４に記憶されていると判断すれば、制御モジュール１０ａは、キャッシュメモリ１０４に記憶されている更新対象データと更新データとの一致を判断する。そして、このキャッシュメモリ１０４に記憶されている更新対象データと更新データとが一致すると判断した場合は、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域への更新データの書き込みを回避する。他方、このキャッシュメモリ１０４に記憶されているデータと更新データとが一致しないと判断した場合は、更新データを、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。
【００６８】
他方、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に記憶されている更新対象データと更新データとが一致すると判断した場合は、ＨＤＤ２１ａ〜２１ｄへの更新データの書き込みを回避する。他方、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に記憶されている更新対象データと更新データとが一致しないと判断した場合は、更新データを、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。
【００６９】
この差分ライトバック方式を用いた書き込みを行うことにより、キャッシュメモリ１０４またはＨＤＤ２１ａ〜２１ｄに存在するデータと更新データとが一致する場合は、ＨＤＤ２１ａ〜２１ｄへの書き込み回数を低減することができる。
【００７０】
次に、ＨＤＤ２１ａ〜２１ｄそれぞれの更新対象のストライプを構成する記憶領域に更新データを書き込む方法をより詳しく説明する。
制御モジュール１０ａがＨＤＤ２１ａ〜２１ｄに更新データを書き込む際には、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式、およびＳｍａｌｌ−Ｗｒｉｔｅ方式の３種類の書き込み方式を使い分ける。以下、「３種類の書き込み方式」と言う場合は、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式、およびＳｍａｌｌ−Ｗｒｉｔｅ方式を指すものとする。
【００７１】
制御モジュール１０ａは、前述したＬＢＡの対比の際に、更新データの容量や、ＨＤＤ２１ａ〜２１ｄそれぞれの更新対象のストライプを構成する記憶領域のうち、更新データが更新対象とする記憶領域と更新対象としない記憶領域を把握する。
【００７２】
制御モジュール１０ａは、ＬＢＡの対比により、更新データが、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域の全ての記憶領域を更新対象とすると判断した場合、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いる。制御モジュール１０ａは、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いてＨＤＤ２１ａ〜２１ｄそれぞれの更新対象のストライプを構成する記憶領域に更新データを書き込む。
【００７３】
また、制御モジュール１０ａは、以下の条件（１ａ）と、条件（１ｂ）の両方の条件を満たす場合、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いてＨＤＤ２１ａ〜２１ｄそれぞれの更新対象のストライプを構成する記憶領域に更新データを書き込む。
【００７４】
条件（１ａ）ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域のうち、更新対象の記憶領域と更新対象ではない記憶領域とが混在する場合。
条件（１ｂ）更新対象の記憶領域の数が更新対象ではない記憶領域の数よりも多いと判断した場合。
【００７５】
また、制御モジュール１０ａは、更新データが、以下の条件（２ａ）と、条件（２ｂ）の両方の条件を満たす場合、Ｓｍａｌｌ−Ｗｒｉｔｅ方式を用いてＨＤＤ２１ａ〜２１ｄそれぞれの、同一のストライプを構成する記憶領域に更新データを書き込む。
【００７６】
条件（２ａ）ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域のうち、更新対象の記憶領域と更新対象ではない記憶領域とが混在する場合。
条件（２ｂ）更新対象の記憶領域の数が更新対象ではない記憶領域の数よりも少ないと判断した場合。
【００７７】
さらに、制御モジュール１０ａは、上記条件（２ａ）、（２ｂ）を満たした場合、下記条件（２ｃ）と条件（２ｄ）のいずれを満たすかを判断する。
条件（２ｃ）更新データが、記憶領域の一部を更新するデータを含んでいない場合。
【００７８】
条件（２ｄ）更新データが、記憶領域の一部を更新するデータを含んでいる場合。
以下、条件（２ａ）、（２ｂ）かつ（２ｃ）を満たすＳｍａｌｌ−Ｗｒｉｔｅ方式を「第１のＳｍａｌｌ−Ｗｒｉｔｅ方式」と言う。また、条件（２ａ）、（２ｂ）かつ（２ｄ）を満たすＳｍａｌｌ−Ｗｒｉｔｅ方式を「第２のＳｍａｌｌ−Ｗｒｉｔｅ方式」と言う。
【００７９】
上記３種類の書き込み方式を使い分けることにより、ＨＤＤ２１ａ〜２１ｄそれぞれの更新対象のストライプを構成する記憶領域のうち、更新対象ではない分散データが記憶されているＨＤＤの記憶領域へのデータの書き込みを回避することができる。分散データの書き込みを回避することで、ＨＤＤ２１ａ〜２１ｄに対する書き込みによる制御モジュール１０ａの負荷を軽減する。なお、初回のＨＤＤ２１ａ〜２１ｄに対する分散データの書き込みは、これら３種類の書き込み方式を用いずに、通常の書き込みを行う。
【００８０】
以下、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式、およびＳｍａｌｌ−Ｗｒｉｔｅ方式について具体例を用いて順番に説明する。
＜Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式＞
図３は、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を説明する図である。図３は、ホスト装置３０からストレージ装置１００に対して更新データＤ２０の書き込み要求があった場合の制御モジュール１０ａの処理を示している。
【００８１】
図３に示すＨＤＤ２１ａ〜２１ｄには、ＨＤＤ２１ａ〜２１ｄを跨いでＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域から構成されたストライプＳＴ１が設定されている。このストライプＳＴ１を構成する各記憶領域には、それぞれ分散データＤ１１、Ｄ１２、Ｄ１３、および分散データＤ１１〜Ｄ１３の冗長性を確保するパリティデータＰ１１が予め記憶されている。
【００８２】
図３中、分散データＤ１１の“Ｏ１”は、符号“Ｏ”が既存（Old）のデータであることを示す。また、番号“１”は、本実施の形態において説明の便宜上割り当てた番号であり、ＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域から構成されたストライプＳＴ１における記憶領域を特定する情報である。すなわち、分散データＤ１１の“Ｏ１”は、ＨＤＤ２１ａのストライプＳＴ１を構成する記憶領域に記憶されているデータであることを示している。分散データＤ１２の“Ｏ２”は、ＨＤＤ２１ｂのストライプＳＴ１を構成する記憶領域に記憶されているデータであることを示している。分散データＤ１３の“Ｏ３”は、ＨＤＤ２１ｃのストライプＳＴ１を構成する記憶領域に記憶されているデータであることを示している。また、パリティデータＰ１１の“ＯＰ１”のうち、符号“ＯＰ”は、分散データＤ１１〜Ｄ１３から生成された既存のパリティ（Old Parity）データであることを示している。また、番号“１”は、ＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域から構成されたストライプＳＴ１における記憶領域を特定する情報である。すなわち、パリティデータＰ１１の“ＯＰ１”は、ＨＤＤ２１ｄのストライプＳＴ１を構成する記憶領域に記憶されているパリティデータであることを示している。
【００８３】
制御モジュール１０ａは、ホスト装置３０からの更新データＤ２０の書き込み要求を受け付けると、更新データＤ２０から分散データＤ２１、Ｄ２２、Ｄ２３を生成する。
そして、制御モジュール１０ａは、生成した分散データＤ２１と分散データＤ２２と分散データＤ２３のＸＯＲを演算して分散データＤ２１〜Ｄ２３の冗長性を確保するパリティデータＰ２１を生成する。生成された分散データＤ２１、Ｄ２２、Ｄ２３およびパリティデータＰ２１は、キャッシュメモリ１０４に保持される。
【００８４】
分散データＤ２１の“Ｎ１”は、符号“Ｎ”が「新規（New）データ」であることを示している。番号“１”は、本実施の形態において説明の便宜上割り当てた番号である。この番号“１”は、ＨＤＤ２１ａのストライプＳＴ１を構成する記憶領域を更新対象とするデータであることを示している。分散データＤ２２の“Ｎ２”は、ＨＤＤ２１ｂのストライプＳＴ１を構成する記憶領域を更新対象とするデータであることを示している。分散データＤ２３の“Ｎ３”は、ＨＤＤ２１ｃのストライプＳＴ１を構成する記憶領域を更新対象とするデータであることを示している。すなわち、図３に示す分散データＤ２１、Ｄ２２、Ｄ２３が更新対象データを構成している。また、パリティデータＰ２１の“ＮＰ１”は、符号“ＮＰ”が、分散データＤ２１、Ｄ２２、Ｄ２３から生成された「新規パリティ（New Parity）」であることを示す。番号“１”は、ＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域から構成されたストライプＳＴ１におけるパリティデータＰ１１が記憶されている記憶領域を特定する情報である。
【００８５】
Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式では、制御モジュール１０ａは、生成した分散データＤ２１、Ｄ２２、Ｄ２３およびパリティデータＰ２１を、ＨＤＤ２１ａ〜２１ｄそれぞれのストライプＳＴ１を構成する記憶領域に上書きする。具体的には、分散データＤ２１をＨＤＤ２１ａのストライプＳＴ１を構成する記憶領域に上書きする。分散データＤ２２をＨＤＤ２１ｂのストライプＳＴ１を構成する記憶領域に上書きする。分散データＤ２３をＨＤＤ２１ｃのストライプＳＴ１を構成する記憶領域に上書きする。パリティデータＰ２１をＨＤＤ２１ｄのストライプＳＴ１を構成する記憶領域に上書きする。この上書き処理により、ストライプＳＴ１を構成する記憶領域の記憶内容が更新される。
【００８６】
なお、分散データＤ１１〜Ｄ１３がキャッシュメモリ１０４に記憶されている場合には、制御モジュール１０ａは、ストライプＳＴ１を構成する記憶領域の記憶内容が更新された後に、次の処理を行う。制御モジュール１０ａは、キャッシュメモリ１０４に記憶されている分散データＤ１１〜Ｄ１３を分散データＤ２１〜Ｄ２３で更新する。
【００８７】
＜Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式＞
図４は、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を説明する図である。
図４に示すＨＤＤ２１ａ〜２１ｄには、ＨＤＤ２１ａ〜２１ｄの各記憶領域から構成されたストライプＳＴ２が設定されている。このストライプＳＴ２には、分散データＤ３１、Ｄ３２、Ｄ３３、および分散データＤ３１〜Ｄ３３から生成された分散データＤ３１〜Ｄ３３の冗長性を確保するパリティデータＰ３１が記憶されている。分散データＤ３１の“Ｏ１１”は、ＨＤＤ２１ａのストライプＳＴ２を構成する記憶領域に記憶されているデータであることを示している。分散データＤ３２の“Ｏ１２”は、ＨＤＤ２１ｂのストライプＳＴ２を構成する記憶領域に記憶されているデータであることを示している。分散データＤ３３の“Ｏ１３”は、ＨＤＤ２１ｃのストライプＳＴ２を構成する記憶領域に記憶されているデータであることを示している。パリティデータＰ３１の“ＯＰ２”は、ＨＤＤ２１ｄのストライプＳＴ２を構成する記憶領域に記憶されているパリティデータであることを示している。
【００８８】
制御モジュール１０ａは、ホスト装置３０からの更新データＤ４０の書き込み要求を受け付けると、制御モジュール１０ａは、更新データＤ４０から分散データＤ４１、Ｄ４２を生成する。分散データＤ４１の“Ｎ１１”は、ＨＤＤ２１ｂのストライプＳＴ２を構成する記憶領域を更新対象とするデータであることを示している。分散データＤ４２の“Ｎ１２”は、ＨＤＤ２１ｃのストライプＳＴ２を構成する記憶領域を更新対象とするデータであることを示している。すなわち、図４に示す分散データＤ３２、Ｄ３３が更新対象データを構成している。次に、制御モジュール１０ａは、ＨＤＤ２１ａ〜２１ｄのストライプＳＴ２を構成する記憶領域のうち、更新対象ではない記憶領域に記憶されている分散データＤ３１を読み出す。次に、制御モジュール１０ａは、生成した分散データＤ４１、分散データＤ４２と読み出した分散データＤ３１のＸＯＲを演算して、分散データＤ４１、Ｄ４２、Ｄ３１の冗長性を確保するパリティデータＰ４１を生成する。
【００８９】
次に、制御モジュール１０ａは、分散データＤ４１、Ｄ４２およびパリティデータＰ４１を、ＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ２を構成する記憶領域に上書きする。具体的には、分散データＤ４１をＨＤＤ２１ｂのストライプＳＴ２を構成する記憶領域に上書きする。分散データＤ４２をＨＤＤ２１ｃのストライプＳＴ２を構成する記憶領域に上書きする。パリティデータＰ４１をＨＤＤ２１ｄのストライプＳＴ２を構成する記憶領域に上書きする。この上書き処理により、ストライプＳＴ２を構成する記憶領域の記憶内容が更新される。
【００９０】
なお、キャッシュメモリ１０４に分散データＤ３１、Ｄ３２が存在する場合には、制御モジュール１０ａは、ストライプＳＴ２を構成する記憶領域の記憶内容が更新された後に、次の処理を行う。制御モジュール１０ａは、キャッシュメモリ１０４に記憶されている分散データＤ３１、Ｄ３２を分散データＤ４１、Ｄ４２で更新する。
【００９１】
＜第１のＳｍａｌｌ−Ｗｒｉｔｅ方式＞
図５は、第１のＳｍａｌｌ−Ｗｒｉｔｅ方式を説明する図である。
図５に示すＨＤＤ２１ａ〜２１ｄには、ＨＤＤ２１ａ〜２１ｄを跨いでＨＤＤ２１ａ〜２１ｄの各記憶領域から構成されたストライプＳＴ３が設定されている。このストライプＳＴ３には、分散データＤ５１、分散データＤ５２、分散データＤ５３および分散データＤ５１〜Ｄ５３の冗長性を確保するパリティデータＰ５１が記憶されている。分散データＤ５１の“Ｏ２１”は、ＨＤＤ２１ａのストライプＳＴ３を構成する記憶領域に記憶されているデータであることを示している。分散データＤ５２の“Ｏ２２”は、ＨＤＤ２１ｂのストライプＳＴ３を構成する記憶領域に記憶されているデータであることを示している。分散データＤ５３の“Ｏ２３”は、ＨＤＤ２１ｃのストライプＳＴ３を構成する記憶領域に記憶されているデータであることを示している。すなわち、図５に示す分散データＤ５１が更新対象データを構成している。パリティデータＰ５１の“ＯＰ３”は、ＨＤＤ２１ｄのストライプＳＴ２を構成する記憶領域に記憶されているパリティデータであることを示している。
【００９２】
制御モジュール１０ａは、ホスト装置３０からの更新データＤ６０の書き込み要求を受け付けると、更新データＤ６０から分散データＤ６１を生成する。分散データＤ６１の“Ｎ２１”は、ＨＤＤ２１ａのストライプＳＴ３を構成する記憶領域を更新対象とするデータであることを示している。次に、制御モジュール１０ａは、生成した分散データＤ６１に対応するＨＤＤ２１ａ、２１ｄのストライプＳＴ３を構成する記憶領域に記憶されている分散データＤ５１およびパリティデータＰ５１を読み出す。次に、制御モジュール１０ａは、分散データＤ６１と読み出した分散データＤ５１とパリティデータＰ５１とのＸＯＲを演算して、分散データＤ６１、Ｄ５２、Ｄ５３の冗長性を確保するパリティデータＰ６１を生成する。
【００９３】
次に、制御モジュール１０ａは、分散データＤ６１およびパリティデータＰ６１を、ＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ３を構成する記憶領域に上書きする。具体的には、分散データＤ６１をＨＤＤ２１ａのストライプＳＴ３を構成する記憶領域に上書きする。パリティデータＰ６１をＨＤＤ２１ｄのストライプＳＴ３を構成する記憶領域に上書きする。この上書き処理により、ストライプＳＴ３を構成する記憶領域の記憶内容が更新される。
【００９４】
なお、キャッシュメモリ１０４に分散データＤ５１が存在する場合には、制御モジュール１０ａは、ストライプＳＴ３を構成する記憶領域の記憶内容が更新された後に、キャッシュメモリ１０４に記憶されている分散データＤ５１を分散データＤ６１で更新する。
【００９５】
＜第２のＳｍａｌｌ−Ｗｒｉｔｅ方式＞
図６は、第２のＳｍａｌｌ−Ｗｒｉｔｅ方式を説明する図である。
図６に示すＨＤＤ２１ａ〜２１ｄには、ＨＤＤ２１ａ〜２１ｄを跨いでＨＤＤ２１ａ〜２１ｄの各記憶領域から構成されたストライプＳＴ４が設定されている。このストライプＳＴ４には、分散データＤ７１、Ｄ７２、Ｄ７３、および分散データＤ７１〜Ｄ７３の冗長性を確保するパリティデータＰ７１が記憶されている。分散データＤ７１の“Ｏ３１”は、ＨＤＤ２１ａのストライプＳＴ４を構成する記憶領域に記憶されているデータであることを示している。分散データＤ７２の“Ｏ３２”は、ＨＤＤ２１ｂのストライプＳＴ４を構成する記憶領域に記憶されているデータであることを示している。分散データＤ７３の“Ｏ７３”は、ＨＤＤ２１ｃのストライプＳＴ４を構成する記憶領域に記憶されているデータであることを示している。パリティデータＰ７１の“ＯＰ４”は、ＨＤＤ２１ｄのストライプＳＴ４を構成する記憶領域に記憶されているパリティデータであることを示している。
【００９６】
制御モジュール１０ａは、ホスト装置３０からの更新データＤ８０の書き込み要求を受け付けると、分散処理を行い、分散データＤ８１、Ｄ８２を生成する。分散データＤ８１の“Ｎ３１”は、ＨＤＤ２１ａのストライプＳＴ４を構成する記憶領域を更新対象とするデータであることを示している。分散データＤ８２の“Ｎ３２”は、ＨＤＤ２１ｂのストライプＳＴ４を構成する記憶領域の一部を更新対象とするデータであり、分散データＤ８２の“Ｎ３２”以外のデータは０データであることを示している。すなわち、図６に示す分散データＤ７１と分散データＤ７２の一部が更新対象データを構成している。次に、制御モジュール１０ａは、生成した分散データＤ８１、Ｄ８２に対応するＨＤＤ２１ａ、２１ｄのストライプＳＴ３を構成する記憶領域に記憶されている分散データＤ７１、Ｄ７２ａおよびパリティデータＰ７１を読み出す。ここで、分散データＤ７２ａは、分散データＤ８２が更新対象とする記憶領域に記憶されているデータである。次に、制御モジュール１０ａは、分散データＤ８１、Ｄ８２と読み出した分散データＤ７１、Ｄ７２ａとパリティデータＰ７１とのＸＯＲを演算して、分散データＤ８１、Ｄ８２ａ、Ｄ７３の冗長性を確保するパリティデータＰ８１を生成する。なお、分散データＤ８２ａは、分散データＤ７２の一部を分散データＤ８２で更新したデータである。
【００９７】
次に、制御モジュール１０ａは、分散データＤ８１、分散データＤ８２およびパリティデータＰ８１を、ＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ４を構成する記憶領域に上書きする。具体的には、分散データＤ８１をＨＤＤ２１ａのストライプＳＴ４を構成する記憶領域に上書きする。分散データＤ８２をＨＤＤ２１ｂのストライプＳＴ４を構成する記憶領域の、分散データＤ７２ａが記憶されていた領域に上書きする。なお、データＯ３２ｂは、分散データＤ８２により上書きされなかった領域に記憶されているデータである。パリティデータＰ８１をＨＤＤ２１ｄのストライプＳＴ４を構成する記憶領域に上書きする。この上書き処理により、ストライプＳＴ４を構成する記憶領域の記憶内容が更新される。
【００９８】
なお、キャッシュメモリ１０４に分散データＤ７１、Ｄ７２ａが存在する場合には、制御モジュール１０ａは、ストライプＳＴ４を構成する記憶領域の記憶内容が更新された後に、次の処理を行う。制御モジュール１０ａは、キャッシュメモリ１０４に記憶されている分散データＤ７１、Ｄ７２ａを分散データＤ８１、Ｄ８２で更新する。
【００９９】
次に、制御モジュール１０ａ、１０ｂが備える機能を説明する。制御モジュール１０ａ、１０ｂが備える機能は互いに等しいため、以下、一例として制御モジュール１０ａが備える機能を説明する。
【０１００】
図７は、第２の実施の形態の制御モジュールの機能を示すブロック図である。
制御モジュール１０ａは、キャッシュ制御部１１１と、バッファ領域１１２と、ＲＡＩＤ制御部１１３とを有している。キャッシュ制御部１１１と、ＲＡＩＤ制御部１１３は、ＣＰＵ１０１により実現可能な機能である。また、バッファ領域１１２は、ＲＡＭ１０２の一領域により形成される領域である。また、キャッシュ制御部１１１は、受付部およびキャッシュ制御部の一例である。ＲＡＩＤ制御部１１３は、書き込み制御部の一例である。
【０１０１】
キャッシュ制御部１１１は、受け取った更新データをキャッシュメモリ１０４に記憶する。そして、キャッシュ制御部１１１は、キャッシュメモリ１０４に記憶した更新データを解析する。解析した結果、受け取った更新データに対し通常のライトバック方式を用いた書き込みが指定されていると判断すると、キャッシュ制御部１１１は、通常のライトバック方式を用いた更新データの書き込みをＲＡＩＤ制御部１１３に通知する。
【０１０２】
また、更新データを解析した結果、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されていると判断すると、キャッシュ制御部１１１は、更新対象データが、キャッシュメモリ１０４に記憶されているか否かを判断する。
【０１０３】
他方、更新対象データが、キャッシュメモリ１０４に記憶されていれば、キャッシュ制御部１１１は、キャッシュメモリ１０４に記憶されている更新対象データと更新データとの一致を判断する。一致を判断する際に、キャッシュ制御部１１１は、更新対象データと更新データとを対比する対比用データを生成する。対比用データは、前述した３種類の書き込み方式により異なる。対比用データの詳細は、後述するフローチャートおよび具体例にて説明する。
【０１０４】
キャッシュ制御部１１１は、生成した対比用データを用いて更新対象データと更新データとの一致を判断する。そして、更新対象データと更新データとが一致すると判断した場合は、キャッシュ制御部１１１は、ＨＤＤ２１ａ〜２１ｄへの更新データの書き込みを回避する。また、キャッシュ制御部１１１は、ＨＤＤ２０群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置３０に返す。他方、キャッシュメモリ１０４に記憶されている更新対象データが、更新データと一致しないと判断した場合は、キャッシュ制御部１１１は、前述した３種類の書き込み方式を用いて、更新データを、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが正常に終了すると、キャッシュ制御部１１１は、ＨＤＤ２０群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置３０に返す。
【０１０５】
バッファ領域１１２は、ＲＡＩＤ制御部１１３がＨＤＤ２１ａ〜２１ｄから読み出したデータを一時的に保持する機能を有している。
ＲＡＩＤ制御部１１３は、キャッシュ制御部１１１から通常のライトバック方式を用いた更新データの書き込み要求の受け取りが通知されると、処理の空き時間ができてからキャッシュメモリ１０４に記憶されている更新データをＨＤＤ２１ａ〜２１ｄに書き込む。
【０１０６】
また、ＲＡＩＤ制御部１１３は、キャッシュ制御部１１１から差分ライトバック方式を用いた更新データの書き込み要求の受け取りが通知されると、以下の処理を行う。
ＲＡＩＤ制御部１１３は、更新データとＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に記憶されている更新対象データとの一致を判断する。一致を判断する際に、ＲＡＩＤ制御部１１３は、更新データと更新対象データとを対比する対比用データをＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域から読み出す。読み出す対比用データは、前述した３種類の書き込み方式により異なる。対比用データの詳細は、後述するフローチャートおよび具体例にて説明する。
【０１０７】
ＲＡＩＤ制御部１１３は、読み出した対比用データをバッファ領域１１２に保持する。
ＲＡＩＤ制御部１１３は、対比用データを用いてＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に記憶されている更新対象データと更新データとの一致を判断する。そして、更新対象データと更新データとが一致すると判断した場合は、ＲＡＩＤ制御部１１３は、ＨＤＤ２１ａ〜２１ｄへの更新データの書き込みを回避する。また、ＲＡＩＤ制御部１１３は、ＨＤＤ２０群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置３０に返す。
【０１０８】
他方、更新対象データと更新データとが一致しないと判断した場合は、ＲＡＩＤ制御部１１３は、前述した３種類の書き込み方式を用いて、更新データを、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが正常に終了すると、ＲＡＩＤ制御部１１３は、ＨＤＤ２０群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置３０に返す。
【０１０９】
次に、制御モジュール１０ａのデータ書き込み処理を、フローチャートを用いて説明する。
図８は、制御モジュールのデータ書き込み処理を示すフローチャートである。制御モジュール１０ａは、ホスト装置３０から更新データの書き込み要求を受け取る度に図８に示す処理を実行する。
【０１１０】
［ステップＳ１］  制御モジュール１０ａがホスト装置３０から更新データの書き込み要求を受け取ると、キャッシュ制御部１１１は、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されているか否かを判断する。キャッシュ制御部１１１は、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されていると判断した場合（ステップＳ１のＹｅｓ）、ステップＳ２に遷移する。キャッシュ制御部１１１は、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されていないと判断した場合（ステップＳ１のＮｏ）、ステップＳ６に遷移する。
【０１１１】
［ステップＳ２］  キャッシュ制御部１１１は、更新データを解析して分散データを生成する。そして、キャッシュ制御部１１１は、更新データの解析結果に基づいて、３種類の書き込み方式から生成した更新データの書き込み方式を選択する。このステップＳ２にて決定された書き込み方式は、後述するステップＳ４の第１の書き込み判断処理およびステップＳ５の第２の書き込み判断処理にて用いる。書き込み方式の選択が終了すると、ステップＳ３に遷移する。
【０１１２】
［ステップＳ３］  キャッシュ制御部１１１は、更新対象データがキャッシュメモリ１０４に存在するか否かを判断する。更新対象データがキャッシュメモリ１０４に存在する場合（ステップＳ３のＹｅｓ）、ステップＳ４に遷移する。更新対象データがキャッシュメモリ１０４に存在しない場合（ステップＳ３のＮｏ）、ステップＳ５に遷移する。
【０１１３】
［ステップＳ４］  ステップＳ３にてキャッシュ制御部１１１が、更新対象データがキャッシュメモリ１０４に存在すると判断した場合、キャッシュ制御部１１１は、第１の書き込み判断処理を行う。この第１の書き込み判断処理は、キャッシュ制御部１１１が、更新データがキャッシュメモリ１０４に存在するデータに一致するか否かを判断し、一致すれば更新データのＨＤＤ２１ａ〜２１ｄへの書き込みを回避する処理である。なお、本ステップＳ４にて、更新対象データとの対比に用いる対比用データは、前述した３種類の書き込み方式に応じて異なる。３種類の書き込み方式それぞれに応じた対比用データの準備方法は後に詳述する。第１の書き込み判断処理が終了すると、図８の処理を終了する。
【０１１４】
［ステップＳ５］  ステップＳ３にてキャッシュ制御部１１１が、更新対象データがキャッシュメモリ１０４に存在しないと判断した場合、ＲＡＩＤ制御部１１３が第２の書き込み判断処理を行う。この第２の書き込み判断処理は、ＲＡＩＤ制御部１１３が、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に記憶されている更新対象データに更新データが一致するか否かを判断する。そして、一致すれば更新データのＨＤＤ２１ａ〜２１ｄへの書き込みを回避する処理である。本ステップＳ６にて更新対象データとの対比に用いる対比用データは、前述した３種類の書き込み方式に応じて異なる。３種類の書き込み方式それぞれに応じた対比用データの準備方法は後に詳述する。第２の書き込み判断処理が終了すると、図８の処理を終了する。
【０１１５】
［ステップＳ６］  ＲＡＩＤ制御部１１３は、更新データを解析する。そして、ＲＡＩＤ制御部１１３は、更新データの解析結果に基づいて、３種類の書き込み方式から今回の更新データに対する書き込み方式を選択する。
【０１１６】
［ステップＳ７］  ＲＡＩＤ制御部１１３は、通常のライトバック方式を用いた書き込みを行う。具体的には、ホスト装置３０から送られてきた更新データを、ステップＳ６にて選択した書き込み方式を用いてＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが正常に終了すると、ＲＡＩＤ制御部１１３は、ＨＤＤ２０群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置３０に返す。その後、図８の処理を終了する。
【０１１７】
以上で図８の処理の説明を終了する。
図８に示す制御モジュール１０ａのデータ書き込み処理では、ステップＳ１において、差分ライトバック方式の指定を受けた更新データについてのみステップＳ３以降の処理を行うようにした。差分ライトバック方式の指定を受けることにより、全てのデータについてステップＳ３以降の処理を行う場合に比べ、制御モジュール１０ａの処理負荷を軽減することができる。
【０１１８】
次に、ステップＳ４の第１の書き込み判断処理を説明する。前述したように、第１の書き込み判断処理では、ステップＳ２にてキャッシュ制御部１１１が３種類の書き込み方式のどの書き込み方式を選択したかにより異なる対比用データを準備する。まず、ステップＳ２にてキャッシュ制御部１１１がＢａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を選択した場合の第１の書き込み判断処理（Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理）を説明する。
【０１１９】
＜Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理＞
図９は、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理を示すフローチャートである。
【０１２０】
［ステップＳ１１］  キャッシュ制御部１１１は、更新データから生成した分散データそれぞれのＸＯＲを演算することにより、更新データから生成した分散データの冗長性を確保するパリティデータを生成する。なお、本ステップＳ１１にて生成したパリティデータは、キャッシュ制御部が生成した第２の冗長情報の一例である。キャッシュ制御部１１１は、生成したパリティデータをキャッシュメモリ１０４に保持する。その後、ステップＳ１２に遷移する。
【０１２１】
［ステップＳ１２］  キャッシュ制御部１１１は、キャッシュメモリ１０４に既存の、更新対象データを構成する分散データそれぞれのＸＯＲを演算することにより、キャッシュメモリ１０４に既存の、更新対象データを構成する分散データの冗長性を確保するパリティデータを生成する。なお、本ステップＳ１２にて生成したパリティデータは、キャッシュ制御部が生成した第１の冗長情報の一例である。キャッシュ制御部１１１は、生成したパリティデータをキャッシュメモリ１０４に保持する。その後、ステップＳ１３に遷移する。
【０１２２】
［ステップＳ１３］  キャッシュ制御部１１１は、ステップＳ１１にて生成したパリティデータを、ステップＳ１２にて生成したパリティデータと対比する。その後、ステップＳ１４に遷移する。
【０１２３】
［ステップＳ１４］  キャッシュ制御部１１１は、ステップＳ１３の対比の結果、ステップＳ１１にて生成したパリティデータが、ステップＳ１２にて生成したパリティデータに一致するか否かを判断する。ステップＳ１１にて生成したパリティデータが、ステップＳ１２にて生成したパリティデータに一致する場合（ステップＳ１４のＹｅｓ）、ステップＳ１６に遷移する。ステップＳ１１にて生成したパリティデータが、ステップＳ１２にて生成したパリティデータに一致しない場合（ステップＳ１４のＮｏ）、ステップＳ１５に遷移する。
【０１２４】
［ステップＳ１５］  キャッシュ制御部１１１は、更新データから生成した分散データとステップＳ１２にて生成したパリティデータを、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いてＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップＳ１６に遷移する。
【０１２５】
［ステップＳ１６］  キャッシュ制御部１１１は、ＨＤＤ２０群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置３０に返す。その後、第１の書き込み判断処理を終了する。
【０１２６】
以上で図９に示す処理の説明を終了する。なお、ステップＳ１１、Ｓ１２の処理の順番は、前述した順番に限定されない、すなわち、ステップＳ１２の処理をステップＳ１１よりも先に行ってもよい。すなわち、先にキャッシュメモリ１０４に既存の、更新対象データを構成する分散データからパリティデータを作成し、作成したパリティデータをキャッシュメモリ１０４に記憶する。その後、更新データからパリティデータを生成する。そして、更新データから生成した分散データで、キャッシュメモリ１０４に既存の、更新対象データを構成する分散データを上書きする。その後、パリティデータ同士を比較する。この処理順で処理を行えば、図９に示す処理にて使用するキャッシュメモリ１０４の記憶領域を少なくすることができる。
【０１２７】
図９に示す処理では、ステップＳ１４にて対比したデータが一致すれば、ＨＤＤ２１ａ〜２１ｄに書き込みを行わずに書き込み完了応答をホスト装置３０に返すようにした。これは、ステップＳ１４にて対比したデータが一致すれば、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に記憶されているデータは、更新データと同じデータであると判断することができるからである。
【０１２８】
次に、ステップＳ２にてキャッシュ制御部１１１がＲｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を選択した場合の第１の書き込み判断処理（Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理）を説明する。
【０１２９】
＜Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理＞
図１０は、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理を示すフローチャートである。
【０１３０】
［ステップＳ２１］  キャッシュ制御部１１１は、更新データから生成した分散データそれぞれのＸＯＲを演算することにより、更新データから生成した分散データの冗長性を確保する冗長データを生成する。なお、本ステップＳ２１にて生成した冗長データは、キャッシュ制御部が生成した第２の冗長情報の一例である。ここで冗長データは、複数の分散データから生成した分散データの冗長性を確保するデータであるが、パリティデータとは異なり、ＨＤＤ２１ａ〜２１ｄの故障時に故障したＨＤＤのデータを再生成する機能は有していない。以下の説明では、パリティデータと冗長データを区別して使用している。キャッシュ制御部１１１は、生成した冗長データをキャッシュメモリ１０４に保持する。その後、ステップＳ２２に遷移する。
【０１３１】
［ステップＳ２２］  キャッシュ制御部１１１は、キャッシュメモリ１０４に既存の、更新対象データを構成する分散データそれぞれのＸＯＲを演算することにより、キャッシュメモリ１０４に既存の、更新対象データを構成する分散データの冗長性を確保する冗長データを生成する。なお、本ステップＳ２２にて生成した冗長データは、キャッシュ制御部が生成した第１の冗長情報の一例である。キャッシュ制御部１１１は、生成した冗長データをキャッシュメモリ１０４に保持する。その後、ステップＳ２３に遷移する。
【０１３２】
［ステップＳ２３］  キャッシュ制御部１１１は、ステップＳ２１にて生成した冗長データを、ステップＳ２２にて生成した冗長データと対比する。その後、ステップＳ２４に遷移する。
【０１３３】
［ステップＳ２４］  キャッシュ制御部１１１は、ステップＳ２３の対比の結果、ステップＳ２１にて生成した冗長データが、ステップＳ２２にて生成した冗長データに一致するか否かを判断する。ステップＳ２１にて生成した冗長データが、ステップＳ２２にて生成した冗長データに一致する場合（ステップＳ２４のＹｅｓ）、ステップＳ２６に遷移する。ステップＳ２１にて生成した冗長データが、ステップＳ２２にて生成した冗長データに一致しない場合（ステップＳ２４のＮｏ）、ステップＳ２５に遷移する。
【０１３４】
［ステップＳ２５］  キャッシュ制御部１１１は、更新データから生成した分散データとステップＳ２２にて生成した冗長データを、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いてＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップＳ２６に遷移する。
【０１３５】
［ステップＳ２６］  キャッシュ制御部１１１は、更新データをＨＤＤ２０に正常に書き込むことができたことを示す書き込み完了応答をホスト装置３０に返す。その後、第１の書き込み判断処理を終了する。
【０１３６】
以上で図１０に示す処理の説明を終了する。なお、ステップＳ２１、Ｓ２２の処理の順番は、前述した順番に限定されない、すなわち、ステップＳ２２の処理をステップＳ２１よりも先に行ってもよい。すなわち、先にキャッシュメモリ１０４に既存の、更新対象データを構成する分散データから冗長データを作成し、作成した冗長データをキャッシュメモリ１０４に記憶する。その後、更新データから冗長データを生成する。そして、更新データから生成した分散データで、キャッシュメモリ１０４に既存の、更新対象データを構成する分散データを上書きする。その後、冗長データ同士を比較する。この処理順で処理を行えば、図１０に示す処理にて使用するキャッシュメモリ１０４の記憶領域を少なくすることができる。
【０１３７】
図１０に示す処理では、ステップＳ２４にて対比したデータが一致すれば、ＨＤＤ２１ａ〜２１ｄに書き込みを行わずに書き込み完了応答をホスト装置３０に返すようにした。これは、ステップＳ２４にて対比したデータが一致すれば、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に記憶されているデータは、更新データと同じデータであると判断することができるからである。
【０１３８】
次に、ステップＳ２にてキャッシュ制御部１１１が第１のＳｍａｌｌ−Ｗｒｉｔｅ方式を選択した場合の第１の書き込み判断処理（第１のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理）を説明する。
【０１３９】
＜第１のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理＞
図１１は、第１のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理を示すフローチャートである。
【０１４０】
［ステップＳ３１］  キャッシュ制御部１１１は、更新データから生成した分散データを、キャッシュメモリ１０４に既存の、更新対象データを構成する分散データと対比する。その後、ステップＳ３２に遷移する。
【０１４１】
［ステップＳ３２］  キャッシュ制御部１１１は、ステップＳ３１の対比の結果、更新データから生成した分散データが、キャッシュメモリ１０４に既存の、更新対象データを構成する分散データに一致するか否かを判断する。更新データから生成した分散データが、キャッシュメモリ１０４に既存の、更新対象データを構成する分散データに一致する場合（ステップＳ３２のＹｅｓ）、ステップＳ３４に遷移する。更新データから生成した分散データが、キャッシュメモリ１０４に既存の、更新対象データを構成する分散データに一致しない場合（ステップＳ３２のＮｏ）、ステップＳ３３に遷移する。
【０１４２】
［ステップＳ３３］  キャッシュ制御部１１１は、更新データから生成した分散データを、第１のＳｍａｌｌ−Ｗｒｉｔｅ方式を用いてＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップＳ３４に遷移する。
【０１４３】
［ステップＳ３４］  キャッシュ制御部１１１は、ＨＤＤ２０に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置３０に返す。その後、第１の書き込み判断処理を終了する。
【０１４４】
以上で図１１に示す処理の説明を終了する。
次に、ステップＳ２にてキャッシュ制御部１１１が第２のＳｍａｌｌ−Ｗｒｉｔｅ方式を選択した場合の第１の書き込み判断処理（第２のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理）を説明する。
【０１４５】
＜第２のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理＞
図１２は、第２のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理を示すフローチャートである。
【０１４６】
［ステップＳ４１］  キャッシュ制御部１１１は、更新データから生成した分散データそれぞれのＸＯＲを演算することにより、更新データから生成した分散データの冗長性を確保する冗長データを生成する。なお、本ステップＳ４１にて生成した冗長データは、キャッシュ制御部が生成した第２の冗長情報の一例である。なお、キャッシュ制御部１１１は、ＸＯＲを演算する際、一部の領域にのみ更新データが存在する分散データは、更新データが存在しない領域は空データ（０データ）で埋め合わせをする。キャッシュ制御部１１１は、生成した冗長データをキャッシュメモリ１０４に保持する。その後、ステップＳ４２に遷移する。
【０１４７】
［ステップＳ４２］  キャッシュ制御部１１１は、キャッシュメモリ１０４に既存の、更新対象データを構成する分散データそれぞれのＸＯＲを演算することにより、キャッシュメモリ１０４に既存の、更新対象データを構成する分散データの冗長性を確保する冗長データを生成する。なお、本ステップＳ４２にて生成した冗長データは、キャッシュ制御部が生成した第１の冗長情報の一例である。キャッシュ制御部１１１は、生成した冗長データをキャッシュメモリ１０４に保持する。その後、ステップＳ４３に遷移する。
【０１４８】
［ステップＳ４３］  キャッシュ制御部１１１は、ステップＳ４１にて生成した冗長データを、ステップＳ４２にて生成した冗長データと対比する。その後、ステップＳ４４に遷移する。
【０１４９】
［ステップＳ４４］  キャッシュ制御部１１１は、ステップＳ４３の対比の結果、ステップＳ４１にて生成した冗長データが、ステップＳ４２にて生成した冗長データに一致するか否かを判断する。ステップＳ４１にて生成した冗長データが、ステップＳ４２にて生成した冗長データに一致する場合（ステップＳ４４のＹｅｓ）、ステップＳ４６に遷移する。ステップＳ４１にて生成した冗長データが、ステップＳ４２にて生成した冗長データに一致しない場合（ステップＳ４４のＮｏ）、ステップＳ４５に遷移する。
【０１５０】
［ステップＳ４５］  キャッシュ制御部１１１は、更新データから生成した分散データを、第２のＳｍａｌｌ−Ｗｒｉｔｅ方式を用いてＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップＳ４６に遷移する。
【０１５１】
［ステップＳ４６］  キャッシュ制御部１１１は、ＨＤＤ２０に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置３０に返す。その後、第１の書き込み判断処理を終了する。
【０１５２】
以上で図１２に示す処理の説明を終了する。なお、ステップＳ４１、Ｓ４２の処理の順番は、前述した順番に限定されない、すなわち、ステップＳ４２の処理をステップＳ４１よりも先に行ってもよい。すなわち、先にキャッシュメモリ１０４に既存の、更新対象データを構成する分散データから冗長データを作成し、作成した冗長データをキャッシュメモリ１０４に記憶する。その後、更新データから冗長データを生成する。そして、更新データから生成した分散データで、キャッシュメモリ１０４に既存の、更新対象データを構成する分散データを上書きする。その後、冗長データ同士を比較する。この処理順で処理を行えば、図１２に示す処理にて使用するキャッシュメモリ１０４の記憶領域を少なくすることができる。
【０１５３】
図１２に示す処理では、ステップＳ４４にて対比したデータが一致すれば、ＨＤＤ２１ａ〜２１ｄに書き込みを行わずに書き込み完了応答をホスト装置３０に返すようにした。これは、ステップＳ４４にて対比したデータが一致すれば、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に記憶されているデータは、更新データと同じデータであると判断することができるからである。
【０１５４】
次に、ステップＳ５の第２の書き込み判断処理を説明する。
まず、ステップＳ２にてキャッシュ制御部１１１がＢａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を選択した場合の第２の書き込み判断処理（Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理）を説明する。
【０１５５】
第２の書き込み判断処理では、制御モジュール１０ａが前述した３種類の書き込み方式のどの書き込み方式を選択したかにより異なる対比用データを準備する。
以下、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理を説明する。
【０１５６】
＜Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理＞
図１３は、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理を説明するフローチャートである。
【０１５７】
［ステップＳ５１］  ＲＡＩＤ制御部１１３は、図８のステップＳ２にてキャッシュ制御部１１１が生成した分散データそれぞれのＸＯＲを演算することにより、更新データから生成した分散データの冗長性を確保するパリティデータを生成する。なお、本ステップＳ５１にて生成したパリティデータは、書き込み制御部が生成した第２の冗長情報の一例である。生成したパリティデータは、キャッシュメモリ１０４に保持する。その後、ステップＳ５２に遷移する。
【０１５８】
［ステップＳ５２］  ＲＡＩＤ制御部１１３は、ＨＤＤ２１ａ〜２１ｄそれぞれの更新対象のストライプを構成する記憶領域のいずれかからパリティデータを読み出す。なお、本ステップＳ５２にて読み出したパリティデータは、記憶媒体に予め記憶されている第１の冗長情報の一例である。そして、読み出したパリティデータをバッファ領域１１２に保持する。その後、ステップＳ５３に遷移する。
【０１５９】
［ステップＳ５３］  ＲＡＩＤ制御部１１３は、ステップＳ５１にて生成したパリティデータを、ステップＳ５２にて読み出したパリティデータと対比する。その後、ステップＳ５４に遷移する。
【０１６０】
［ステップＳ５４］  ＲＡＩＤ制御部１１３は、ステップＳ５３の対比の結果、ステップＳ５１にて生成したパリティデータが、ステップＳ５２にて読み出したパリティデータに一致するか否かを判断する。ステップＳ５１にて生成したパリティデータが、ステップＳ５２にて読み出したパリティデータに一致する場合（ステップＳ５４のＹｅｓ）、ステップＳ５６に遷移する。ステップＳ５１にて生成したパリティデータが、ステップＳ５２にて読み出したパリティデータに一致しない場合（ステップＳ５４のＮｏ）、ステップＳ５５に遷移する。
【０１６１】
［ステップＳ５５］  ＲＡＩＤ制御部１１３は、更新データから生成された分散データとステップＳ５１にて生成したパリティデータを、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いてＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップＳ５６に遷移する。
【０１６２】
［ステップＳ５６］  ＲＡＩＤ制御部１１３は、ＨＤＤ２０群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置３０に返す。その後、第２の書き込み判断処理を終了する。
【０１６３】
以上で図１３に示す処理の説明を終了する。なお、ステップＳ５１、Ｓ５２の処理の順番は、前述した順番に限定されない、すなわち、ステップＳ５２の処理をステップＳ５１よりも先に行ってもよい。
【０１６４】
図１３に示す処理では、ステップＳ５１にて生成したパリティデータが、ステップＳ５２にて読み出したパリティデータに一致した場合には、ステップＳ５６のように、ＨＤＤ２０群に書き込みを行わずに書き込み完了応答をホスト装置３０に返すようにした。これは、ステップＳ５４にて対比したデータが一致すれば、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に記憶されているデータは、更新データと同じと判断することができるからである。
【０１６５】
次に、ステップＳ２にてキャッシュ制御部１１１がＲｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を選択した場合の第２の書き込み判断処理（Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理）を説明する。
【０１６６】
＜Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理＞
図１４は、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理を示すフローチャートである。
【０１６７】
［ステップＳ６１］  ＲＡＩＤ制御部１１３は、ＨＤＤ２１ａ〜２１ｄそれぞれの更新対象のストライプを構成する記憶領域のうち、更新対象ではない記憶領域に記憶されている分散データを読み出す。なお、本ステップＳ６１にて読み出した分散データは、書き込み制御部が読み出した更新対象ではない第１の分散情報の一例である。更新対象ではない記憶領域の識別は、ステップＳ２にてキャッシュ制御部１１１が更新データを解析した結果を用いて行うことができる。なお、ＲＡＩＤ制御部１１３が、更新データを解析して更新対象ではない記憶領域を識別してもよい。ＲＡＩＤ制御部１１３は、読み出した分散データをキャッシュメモリ１０４に保持する。また、ＲＡＩＤ制御部１１３は、ＨＤＤ２１ａ〜２１ｄそれぞれの更新対象のストライプを構成する記憶領域に記憶されているパリティデータを読み出す。なお、本ステップＳ６１にて読み出したパリティデータは、複数の記憶媒体に予め記憶されている第１の冗長情報の一例である。また、ＲＡＩＤ制御部１１３は、読み出したパリティデータをバッファ領域１１２に保持する。その後、ステップＳ６２に遷移する。
【０１６８】
［ステップＳ６２］  ＲＡＩＤ制御部１１３は、更新データから生成した分散データと、ステップＳ６１にて読み出した分散データとのＸＯＲを演算することにより、生成した分散データと読み出した分散データとの冗長性を確保するパリティデータを生成する。なお、本ステップＳ６２にて生成したパリティデータは、書き込み制御部が生成した第１の冗長情報の一例である。ＲＡＩＤ制御部１１３は、生成したパリティデータをキャッシュメモリ１０４に保持する。その後、ステップＳ６３に遷移する。
【０１６９】
［ステップＳ６３］  ＲＡＩＤ制御部１１３は、ステップＳ６２にて生成したパリティデータを、ステップＳ６１にて読み出したパリティデータと対比する。その後、ステップＳ６４に遷移する。
【０１７０】
［ステップＳ６４］  ＲＡＩＤ制御部１１３は、ステップＳ６３の対比の結果、ステップＳ６２にて生成したパリティデータが、ステップＳ６１にて読み出したパリティデータに一致するか否かを判断する。ステップＳ６２にて生成したパリティデータが、ステップＳ６１にて読み出したパリティデータに一致する場合（ステップＳ６４のＹｅｓ）、ステップＳ６６に遷移する。ステップＳ６２にて生成したパリティデータが、ステップＳ６１にて読み出したパリティデータに一致しない場合（ステップＳ６４のＮｏ）、ステップＳ６５に遷移する。
【０１７１】
［ステップＳ６５］  ＲＡＩＤ制御部１１３は、更新データから生成した分散データとステップＳ６２にて生成したパリティデータをＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込む際には、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いる。書き込みが終了すると、ステップＳ６６に遷移する。
【０１７２】
［ステップＳ６６］  ＲＡＩＤ制御部１１３は、ＨＤＤ２０群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置３０に返す。その後、第２の書き込み判断処理を終了する。
【０１７３】
以上で図１４に示す処理の説明を終了する。なお、ステップＳ６１、Ｓ６２の処理の順番は、前述した順番に限定されない、すなわち、ステップＳ６２の処理をステップＳ６１よりも先に行ってもよい。
【０１７４】
図１４に示す処理では、ステップＳ６４にて対比したデータが一致すれば、ＨＤＤ２１ａ〜２１ｄに書き込みを行わずに書き込み完了応答をホスト装置３０に返すようにした。これは、ステップＳ６４にて対比したデータが一致すれば、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に記憶されているデータは、更新データと同じデータであると判断することができるからである。
【０１７５】
次に、ステップＳ２にてキャッシュ制御部１１１が第１のＳｍａｌｌ−Ｗｒｉｔｅ方式を選択した場合の第２の書き込み判断処理（第１のＳｍａｌｌ−Ｗｒｉｔｅ方式の第２の書き込み判断処理）を説明する。
【０１７６】
＜第１のＳｍａｌｌ−Ｗｒｉｔｅ方式の第２の書き込み判断処理＞
図１５は、第１のＳｍａｌｌ−Ｗｒｉｔｅ方式の第２の書き込み判断処理を示すフローチャートである。
【０１７７】
［ステップＳ７１］  ＲＡＩＤ制御部１１３は、ＨＤＤ２１ａ〜２１ｄそれぞれの更新対象のストライプを構成する記憶領域から、更新対象データを構成する分散データを読み出す。ＲＡＩＤ制御部１１３は、読み出した分散データをバッファ領域１１２に保持する。その後、ステップＳ７２に遷移する。
【０１７８】
［ステップＳ７２］  ＲＡＩＤ制御部１１３は、更新データから生成した分散データを、ステップＳ７１にて読み出した分散データと対比する。その後、ステップＳ７３に遷移する。
【０１７９】
［ステップＳ７３］  ＲＡＩＤ制御部１１３は、ステップＳ７２の対比の結果、更新データから生成した分散データが、ステップＳ７１にて読み出した分散データに一致するか否かを判断する。更新データから生成した分散データが、ステップＳ７１にて読み出した分散データに一致する場合（ステップＳ７３のＹｅｓ）、ステップＳ７５に遷移する。更新データから生成した分散データが、ステップＳ７１にて読み出した分散データに一致しない場合（ステップＳ７３のＮｏ）、ステップＳ７４に遷移する。
【０１８０】
［ステップＳ７４］  キャッシュ制御部１１１は、更新データから生成した分散データを、第１のＳｍａｌｌ−Ｗｒｉｔｅ方式を用いてＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップＳ７５に遷移する。
【０１８１】
［ステップＳ７５］  キャッシュ制御部１１１は、ＨＤＤ２０に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置３０に返す。その後、第２の書き込み判断処理を終了する。
【０１８２】
以上で図１５に示す処理の説明を終了する。
次に、ステップＳ２にてキャッシュ制御部１１１が第２のＳｍａｌｌ−Ｗｒｉｔｅ方式を選択した場合の第２の書き込み判断処理（第２のＳｍａｌｌ−Ｗｒｉｔｅ方式の第２の書き込み判断処理）を説明する。
【０１８３】
＜第２のＳｍａｌｌ−Ｗｒｉｔｅ方式の第２の書き込み判断処理＞
図１６は、第２のＳｍａｌｌ−Ｗｒｉｔｅ方式の第２の書き込み判断処理を示すフローチャートである。
【０１８４】
［ステップＳ８１］  ＲＡＩＤ制御部１１３は、更新データから生成した分散データそれぞれのＸＯＲを演算することにより、更新データから生成した分散データの冗長性を確保する冗長データを生成する。なお、ＲＡＩＤ制御部１１３は、ＸＯＲを演算する際、一部の領域にのみ更新データが存在する分散データは、更新データが存在しない領域（例えば、後述する図２４のデータＤ２３２ｂ）は空データ（０データ）で埋め合わせをする。ＲＡＩＤ制御部１１３は、生成した冗長データをキャッシュメモリ１０４に保持する。その後、ステップＳ８２に遷移する。
【０１８５】
［ステップＳ８２］  ＲＡＩＤ制御部１１３は、ＨＤＤ２１ａ〜２１ｄそれぞれの更新対象のストライプを構成する記憶領域から、更新対象データを構成する分散データを読み出す。ＲＡＩＤ制御部１１３は、読み出した分散データをバッファ領域１１２に保持する。その後、ステップＳ８３に遷移する。
【０１８６】
［ステップＳ８３］  ＲＡＩＤ制御部１１３は、ステップＳ８２にて読み出した分散データそれぞれのＸＯＲを演算することにより、更新対象データを構成する分散データの冗長性を確保する冗長データを生成する。その後、ステップＳ８４に遷移する。
【０１８７】
［ステップＳ８４］  ＲＡＩＤ制御部１１３は、ステップＳ８１にて生成した冗長データを、ステップＳ８３にて生成した冗長データと対比する。その後、ステップＳ８５に遷移する。
【０１８８】
［ステップＳ８５］  ＲＡＩＤ制御部１１３は、ステップＳ８４の対比の結果、ステップＳ８１にて生成した冗長データが、ステップＳ８３にて生成した冗長データに一致するか否かを判断する。ステップＳ８１にて生成した冗長データが、ステップＳ８３にて生成した冗長データに一致する場合（ステップＳ８５のＹｅｓ）、ステップＳ８７に遷移する。ステップＳ８１にて生成した冗長データが、ステップＳ８３にて生成した冗長データに一致しない場合（ステップＳ８５のＮｏ）、ステップＳ８６に遷移する。
【０１８９】
［ステップＳ８６］  ＲＡＩＤ制御部１１３は、更新データから生成した分散データを、第２のＳｍａｌｌ−Ｗｒｉｔｅ方式を用いてＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップＳ８７に遷移する。
【０１９０】
［ステップＳ８７］  ＲＡＩＤ制御部１１３は、更新データをＨＤＤ２０に正常に書き込むことができたことを示す書き込み完了応答をホスト装置３０に返す。その後、第２の書き込み判断処理を終了する。
【０１９１】
以上で、図１６に示す処理の説明を終了する。
以下、各方式での第１の書き込み判断処理および第２の書き込み判断処理を、具体例を用いて説明する。具体例では、ＲＡＩＤ５（３＋１）を例に説明する。
＜Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理の具体例＞
図１７は、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理の具体例を説明する図である。
【０１９２】
図１７に示すＨＤＤ２１ａ〜２１ｄには、ＨＤＤ２１ａ〜２１ｄを跨いでＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域から構成されたストライプＳＴ５が設定されている。ＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ５を構成する記憶領域には、分散データＤ１０１、Ｄ１０２、Ｄ１０３および分散データＤ１０１〜Ｄ１０３の冗長性を確保するパリティデータＰ１０１が記憶されている。
【０１９３】
キャッシュメモリ１０４に存在する分散データＤ９１、Ｄ９２、Ｄ９３は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部１１１が１ストライプ分の更新データＤ９０から生成したデータである。
【０１９４】
キャッシュメモリ１０４に存在する分散データＤ１０１、Ｄ１０２、Ｄ１０３は、それぞれ分散データＤ９１、Ｄ９２、Ｄ９３の更新対象データである。これらの分散データＤ１０１、Ｄ１０２、Ｄ１０３は、キャッシュ制御部１１１が第１の書き込み判断処理を行う時点でキャッシュメモリ１０４に既存のデータである。
【０１９５】
キャッシュ制御部１１１は、更新データから生成した分散データＤ９１、Ｄ９２、Ｄ９３のＸＯＲを演算することにより、パリティデータＰ９１を生成する。キャッシュ制御部１１１は、生成したパリティデータＰ９１をキャッシュメモリ１０４に保持する。また、キャッシュ制御部１１１は、キャッシュメモリ１０４に既存の分散データＤ１０１、Ｄ１０２、Ｄ１０３のＸＯＲを演算することにより、キャッシュメモリ１０４に既存の分散データの冗長性を確保するパリティデータＰ８１を生成する。キャッシュ制御部１１１は、生成したパリティデータＰ８１をキャッシュメモリ１０４に保持する。その後、キャッシュ制御部１１１は、パリティデータＰ７１がパリティデータＰ８１に一致するか否かを判断する。パリティデータＰ７１がパリティデータＰ８１に一致する場合、キャッシュ制御部１１１は、分散データＤ９１、Ｄ９２、Ｄ９３の、ストライプＳＴ５を構成するＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域への書き込みを回避する。他方、パリティデータＰ７１がパリティデータＰ８１に一致しない場合、キャッシュ制御部１１１は、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いて分散データＤ９１、Ｄ９２、Ｄ９３およびパリティデータＰ７１を、ＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ５を構成する記憶領域に書き込む。なお、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いた更新データの書き込み方法については、図３にて説明したため、詳細な説明を省略する。
＜Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理の具体例＞
図１８は、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み判断処理の具体例を説明する図である。
【０１９６】
図１８に示すＨＤＤ２１ａ〜２１ｄには、ＨＤＤ２１ａ〜２１ｄを跨いでＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域から構成されたストライプＳＴ６が設定されている。ＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ６を構成する記憶領域には、分散データＤ１２１、Ｄ１２２、Ｄ１２３および分散データＤ１２１〜Ｄ１２３の冗長性を確保するパリティデータＰ１２１が記憶されている。
【０１９７】
キャッシュメモリ１０４に存在する分散データＤ１１１、Ｄ１１２は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部１１１が更新データＤ１１０から生成したデータである。また、キャッシュメモリ１０４に存在する分散データＤ１２１、Ｄ１２２は、それぞれ分散データＤ１１１、Ｄ１１２の更新対象データを構成する。これらの分散データＤ１２１、Ｄ１２２は、キャッシュ制御部１１１が第１の書き込み判断処理を行う時点でキャッシュメモリ１０４に既存のデータである。
【０１９８】
キャッシュ制御部１１１は、更新データから生成した分散データＤ１１１、Ｄ１１２のＸＯＲを演算することにより、分散データＤ１１１、Ｄ１１２の冗長性を確保する冗長データＲ１１１を生成する。キャッシュ制御部１１１は、生成した冗長データＲ１１１をキャッシュメモリ１０４に保持する。また、キャッシュ制御部１１１は、キャッシュメモリ１０４に既存の分散データＤ１２１、Ｄ１２２のＸＯＲを演算することにより、キャッシュメモリ１０４に既存の分散データＤ１２１、Ｄ１２２の冗長性を確保する冗長データＲ１２１を生成する。キャッシュ制御部１１１は、生成した冗長データＲ１２１をキャッシュメモリ１０４に保持する。
【０１９９】
その後、キャッシュ制御部１１１は、冗長データＲ１１１が冗長データＲ１２１に一致するか否かを判断する。冗長データＲ１１１が冗長データＲ１２１に一致する場合、キャッシュ制御部１１１は、分散データＤ１１１、Ｄ１１２のＨＤＤ２１ａ、２１ｂそれぞれの、ストライプＳＴ６を構成する記憶領域への書き込みを回避する。他方、冗長データＲ１１１が冗長データＲ１２１に一致しない場合、キャッシュ制御部１１１は、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いて分散データＤ１１１、Ｄ１１２のＨＤＤ２１ａ、２１ｂ、２１ｄそれぞれの、ストライプＳＴ６を構成する記憶領域への書き込みを行う。なお、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いた更新データの書き込み方法については、図４にて説明したため、詳細な説明を省略する。
【０２００】
＜第１のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理の具体例＞
図１９は、第１のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理の具体例を説明する図である。
【０２０１】
図１９に示すＨＤＤ２１ａ〜２１ｄには、ＨＤＤ２１ａ〜２１ｄを跨いでＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域から構成されたストライプＳＴ７が設定されている。ＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ７を構成する記憶領域には、分散データＤ１４１、Ｄ１４２、Ｄ１４３および分散データＤ１４１〜Ｄ１４３の冗長性を確保するパリティデータＰ１４１が記憶されている。
【０２０２】
キャッシュメモリ１０４に存在する分散データＤ１３１は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部１１１が更新データＤ１３０から生成したデータである。また、キャッシュメモリ１０４に存在する分散データＤ１４１は、分散データＤ１３１の更新対象データを構成する。この分散データＤ１４１は、キャッシュ制御部１１１が第１の書き込み判断処理を行う時点でキャッシュメモリ１０４に既存のデータである。
【０２０３】
キャッシュ制御部１１１は、更新データから生成した分散データＤ１３１がキャッシュメモリ１０４に既存の分散データＤ１４１に一致するか否かを判断する。分散データＤ１３１が分散データＤ１４１に一致する場合、キャッシュ制御部１１１は、分散データＤ１３１の、ＨＤＤ２１ａの、ストライプＳＴ７を構成する記憶領域への書き込みを回避する。他方、分散データＤ１３１が分散データＤ１４１に一致しない場合、キャッシュ制御部１１１は、第１のＳｍａｌｌ−Ｗｒｉｔｅ方式を用いて分散データＤ１３１のＨＤＤ２１ａ、２１ｄそれぞれの、ストライプＳＴ７を構成する記憶領域への書き込みを行う。なお、第１のＳｍａｌｌ−Ｗｒｉｔｅ方式を用いた更新データの書き込み方法については、図５にて説明したため、詳細な説明を省略する。
【０２０４】
＜第２のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理の具体例＞
図２０は、第２のＳｍａｌｌ−Ｗｒｉｔｅ方式の第１の書き込み判断処理の具体例を説明する図である。
【０２０５】
図２０に示すＨＤＤ２１ａ〜２１ｄには、ＨＤＤ２１ａ〜２１ｄを跨いでＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域から構成されたストライプＳＴ８が設定されている。ＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ８を構成する記憶領域には、分散データＤ１６１、Ｄ１６２、Ｄ１６３および分散データＤ１６１〜Ｄ１６３の冗長性を確保するパリティデータＰ１６１が記憶されている。
【０２０６】
キャッシュメモリ１０４に存在する分散データＤ１５１、Ｄ１５２は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部１１１が更新データＤ１５０から生成したデータである。ここで、分散データＤ１５２は、分散データＤ１６２の一部を更新対象とするデータＤ１５２ａと、全てのビットが“０”であるデータＤ１５２ｂとで構成されている。
【０２０７】
キャッシュメモリ１０４に存在する分散データＤ１６１およびデータＤ１６２ａは、分散データＤ１５１およびデータＤ１５２ａの更新対象データを構成する。ここで、データＤ１６２ａは、分散データＤ１６２の一部を構成するデータである。
【０２０８】
キャッシュ制御部１１１は、更新データから生成した分散データＤ１５１および分散データＤ１５２のＸＯＲを演算することにより、分散データＤ１５１、Ｄ１５２の冗長性を確保する冗長データＲ１５１を生成する。キャッシュ制御部１１１は、生成した冗長データＲ１５１をキャッシュメモリ１０４に保持する。また、キャッシュ制御部１１１は、キャッシュメモリ１０４に既存の分散データＤ１６１およびデータＤ１６２ａのＸＯＲを演算することにより、既存の分散データＤ１６１およびデータＤ１６２ａの冗長性を確保する冗長データＲ１６１を生成する。キャッシュ制御部１１１は、生成した冗長データＲ１６１をキャッシュメモリ１０４に保持する。
【０２０９】
その後、キャッシュ制御部１１１は、冗長データＲ１５１が冗長データＲ１６１に一致するか否かを判断する。冗長データＲ１５１が冗長データＲ１６１に一致する場合、キャッシュ制御部１１１は、分散データＤ１５１およびデータＤ１５２ａのＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ８を構成する記憶領域への書き込みを回避する。他方、冗長データＲ１５１が冗長データＲ１６１に一致しない場合、キャッシュ制御部１１１は、分散データＤ１５１およびデータＤ１５２ａのＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ８を構成する記憶領域への書き込みを行う。なお、第２のＳｍａｌｌ−Ｗｒｉｔｅ方式を用いた更新データの書き込み方法については、図６にて説明したため、詳細な説明を省略する。
【０２１０】
＜Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理の具体例＞
図２１は、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理の具体例を説明する図である。
【０２１１】
キャッシュメモリ１０４に存在する分散データＤ１７１、Ｄ１７２、Ｄ１７３は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部１１１が１ストライプ分の更新データＤ１７０から生成したデータである。
【０２１２】
図２１に示すＨＤＤ２１ａ〜２１ｄには、ＨＤＤ２１ａ〜２１ｄを跨いでＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域から構成されたストライプＳＴ９が設定されている。このストライプＳＴ９を構成する各記憶領域には、それぞれ分散データＤ１８１、Ｄ１８２、Ｄ１８３、および分散データＤ１８１〜Ｄ１８３の冗長性を確保するパリティデータＰ１８１が記憶されている。分散データＤ１８１、Ｄ１８２、Ｄ１８３は、それぞれ分散データＤ１７１、Ｄ１７２、Ｄ１７３の更新対象データを構成する。
【０２１３】
ＲＡＩＤ制御部１１３は、更新データから生成した分散データＤ１７１、Ｄ１７２、Ｄ１７３のＸＯＲを演算することにより、分散データＤ１７１、Ｄ１７２、Ｄ１７３のパリティデータＰ１７１を生成する。ＲＡＩＤ制御部１１３は、生成したパリティデータＰ１７１をキャッシュメモリ１０４に保持する。次に、ＲＡＩＤ制御部１１３は、パリティデータＰ１８１を読み出し、バッファ領域１１２に保持する。次に、ＲＡＩＤ制御部１１３は、生成したパリティデータＰ１７１がバッファ領域１１２に保持されているパリティデータＰ１８１に一致するか否かを判断する。パリティデータＰ１７１がパリティデータＰ１８１に一致する場合、ＲＡＩＤ制御部１１３は、分散データＤ１７１、Ｄ１７２、Ｄ１７３の、ストライプＳＴ９を構成するＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域への書き込みを回避する。他方、パリティデータＰ１７１がパリティデータＰ１８１に一致しない場合、ＲＡＩＤ制御部１１３は、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いて分散データＤ１７１、Ｄ１７２、Ｄ１７３およびパリティデータＰ１７１を、ＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ９を構成する記憶領域に書き込む。なお、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いた更新データの書き込み方法については、図３にて説明したため、詳細な説明を省略する。
【０２１４】
＜Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理の具体例＞
図２２は、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第２の書き込み判断処理の具体例を説明する図である。
【０２１５】
キャッシュメモリ１０４に存在する分散データＤ１９１、Ｄ１９２は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部１１１が更新データＤ１９０から生成したデータである。
【０２１６】
図２２に示すＨＤＤ２１ａ〜２１ｄには、ＨＤＤ２１ａ〜２１ｄを跨いでＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域から構成されたストライプＳＴ１０が設定されている。このストライプＳＴ１０を構成する各記憶領域には、それぞれ分散データＤ２０１、Ｄ２０２、Ｄ２０３、および分散データＤ２０１〜Ｄ２０３の冗長性を確保するパリティデータＰ２０１が記憶されている。分散データＤ２０１、Ｄ２０２は、それぞれ分散データＤ１９１、Ｄ１９２の更新対象データを構成する。
【０２１７】
ＲＡＩＤ制御部１１３は、ＨＤＤ２１ｃから分散データＤ２０３を読み出し、キャッシュメモリ１０４に保持する。また、ＲＡＩＤ制御部１１３は、ＨＤＤ２１ｄからパリティデータＰ２０１を読み出し、バッファ領域１１２に保持する。次に、ＲＡＩＤ制御部１１３は、更新データから生成した分散データＤ１９１、Ｄ１９２およびＨＤＤ２１ｃから読み出した分散データＤ２０３のＸＯＲを演算することにより、分散データＤ１９１、Ｄ１９２、Ｄ２０３の冗長性を確保するパリティデータＰ１９１を生成する。ＲＡＩＤ制御部１１３は、生成したパリティデータＰ１９１をキャッシュメモリ１０４に保持する。
【０２１８】
次に、ＲＡＩＤ制御部１１３は、生成したパリティデータＰ１９１が、バッファ領域１１２に保持されているパリティデータＰ２０１に一致するか否かを判断する。パリティデータＰ１９１がパリティデータＰ２０１に一致する場合、ＲＡＩＤ制御部１１３は、分散データＤ１９１、Ｄ１９２の、ストライプＳＴ１０を構成するＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域への書き込みを回避する。他方、パリティデータＰ１９１がパリティデータＰ２０１に一致しない場合、ＲＡＩＤ制御部１１３は、次の処理を行う。ＲＡＩＤ制御部１１３は、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いて分散データＤ１９１、Ｄ１９２およびパリティデータＰ１９１を、ＨＤＤ２１ａ〜２１ｄそれぞれのストライプＳＴ１０を構成する記憶領域に書き込む。なお、Ｒｅａｄ  Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式を用いた更新データの書き込み方法については、図４にて説明したため、詳細な説明を省略する。
【０２１９】
＜第１のＳｍａｌｌ  Ｗｒｉｔｅ方式の第２の書き込み判断処理の具体例＞
図２３は、第１のＳｍａｌｌ−Ｗｒｉｔｅ方式の第２の書き込み判断処理の具体例を説明する図である。
【０２２０】
キャッシュメモリ１０４に存在する分散データＤ２１１は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部１１１が更新データＤ２１０から生成したデータである。
【０２２１】
図２３に示すＨＤＤ２１ａ〜２１ｄには、ＨＤＤ２１ａ〜２１ｄを跨いでＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域から構成されたストライプＳＴ１１が設定されている。このストライプＳＴ１１を構成する各記憶領域には、それぞれ分散データＤ２２１、Ｄ２２２、Ｄ２２３、および分散データＤ２２１〜Ｄ２２３の冗長性を確保するパリティデータＰ２２１が記憶されている。分散データＤ２２１は、分散データＤ２１１の更新対象データを構成する。
【０２２２】
ＲＡＩＤ制御部１１３は、分散データＤ２１１が更新対象とするＨＤＤ２１ａの更新対象のストライプＳＴ１１を構成する記憶領域に記憶されている分散データＤ２２１を読み出す。ＲＡＩＤ制御部１１３は、読み出した分散データＤ２２１をバッファ領域１１２に保持する。次に、ＲＡＩＤ制御部１１３は、更新データから生成した分散データＤ２１１がバッファ領域１１２に保持にする分散データＤ２２１に一致するか否かを判断する。分散データＤ２１１が分散データＤ２２１に一致する場合、キャッシュ制御部１１１は、分散データＤ２１１の、ＨＤＤ２１ａのストライプＳＴ１１を構成する記憶領域への書き込みを回避する。他方、分散データＤ２１１が分散データＤ２２１に一致しない場合、キャッシュ制御部１１１は、第１のＳｍａｌｌ−Ｗｒｉｔｅ方式を用いて分散データＤ２１１および新規パリティデータ（図示せず）のＨＤＤ２１ａ、２１ｄそれぞれのストライプＳＴ１１を構成する記憶領域への書き込みを行う。なお、第１のＳｍａｌｌ−Ｗｒｉｔｅ方式を用いた更新データの書き込み方法については、図５にて説明したため、詳細な説明を省略する。
【０２２３】
＜第２のＳｍａｌｌ  Ｗｒｉｔｅ方式の第２の書き込み判断処理の具体例＞
図２４は、第２のＳｍａｌｌ−Ｗｒｉｔｅ方式の第２の書き込み判断処理の具体例を説明する図である。
【０２２４】
図２４に示すＨＤＤ２１ａ〜２１ｄには、ＨＤＤ２１ａ〜２１ｄを跨いでＨＤＤ２１ａ〜２１ｄそれぞれの記憶領域から構成されたストライプＳＴ１２が設定されている。ＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ１２を構成する記憶領域には、分散データＤ２４１、Ｄ２４２、Ｄ２４３および分散データＤ２４１〜Ｄ２４３の冗長性を確保するパリティデータＰ２４１が記憶されている。
【０２２５】
キャッシュメモリ１０４に存在する分散データＤ２３１、Ｄ２３２は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部１１１が更新データＤ２３０から生成したデータである。ここで、分散データＤ２３２は、分散データＤ２４２の一部を更新対象とするデータＤ２３２ａと、全てのビットが“０”であるデータＤ２３２ｂとで構成されている。分散データＤ２４１と分散データＤ２４２の一部は、それぞれ分散データＤ２３１、Ｄ２３２の更新対象データを構成する。
【０２２６】
ＲＡＩＤ制御部１１３は、更新データから生成した分散データＤ２３１およびデータＤ２３２ａのＸＯＲを演算することにより、分散データＤ２３１およびデータＤ２３２ａの冗長性を確保する冗長データＲ２３１を生成する。ＲＡＩＤ制御部１１３は、生成した冗長データＲ２３１をキャッシュメモリ１０４に保持する。また、ＲＡＩＤ制御部１１３は、分散データＤ２３１が更新対象とするＨＤＤ２１ａの記憶領域に記憶されている分散データＤ２４１を読み出す。また、ＲＡＩＤ制御部１１３は、分散データＤ２３２が更新対象とするＨＤＤ２１ｂの記憶領域に記憶されているデータＤ２４２ａを読み出す。このデータＤ２４２ａは、データＤ２３２ａに対応する。ＲＡＩＤ制御部１１３は、読み出した分散データＤ２４１およびデータＤ２４２ａをバッファ領域１１２に保持する。次に、ＲＡＩＤ制御部１１３は、読み出した分散データＤ２４１およびデータＤ２４２ａのＸＯＲを演算することにより、冗長データＲ２４１を生成する。ＲＡＩＤ制御部１１３は、生成した冗長データＲ２４１をバッファ領域１１２に保持する。
【０２２７】
その後、ＲＡＩＤ制御部１１３は、冗長データＲ２３１が冗長データＲ２４１に一致するか否かを判断する。冗長データＲ２３１が冗長データＲ２４１に一致する場合、ＲＡＩＤ制御部１１３は、分散データＤ２３１およびデータＤ２３２ａのＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ１２を構成する記憶領域への書き込みを回避する。他方、冗長データＲ２３１が冗長データＲ２４１に一致しない場合、ＲＡＩＤ制御部１１３は、分散データＤ２３１およびデータＤ２３２ａのＨＤＤ２１ａ〜２１ｄそれぞれの、ストライプＳＴ１２を構成する記憶領域への書き込みを行う。なお、第２のＳｍａｌｌ−Ｗｒｉｔｅ方式を用いた更新データの書き込み方法については、図６にて説明したため、詳細な説明を省略する。
【０２２８】
以上述べたように、ストレージ装置１００によれば、キャッシュ制御部１１１が、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されているか否かを判断するようにした。そして、キャッシュ制御部１１１は、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されていると判断した場合、更新対象データがキャッシュメモリ１０４に存在するか否かを判断するようにした。そして、差分ライトバック更新データにより更新対象となるデータがキャッシュメモリ１０４に存在しない場合、ＲＡＩＤ制御部１１３が第２の書き込み判断処理を行うようにした。第２の書き込み判断処理を行うことによりＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域への更新データの書き込みを回避するようにした。従って、第２の書き込み判断処理を行うことにより、ＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域への書き込み回数を減らすことができる。
【０２２９】
また、第２の書き込み判断処理ではＨＤＤ２１ａ〜２１ｄからデータを読み出す処理が発生するが、ＨＤＤ２１ａ〜２１ｄにデータを書き込むよりもＨＤＤ２１ａ〜２１ｄからデータを読み出す方がＨＤＤ２１ａ〜２１ｄへのアクセスに要する時間が短い。このため、制御モジュール１０ａが第２の書き込み判断処理を行うことにより、更新データと対比するデータがキャッシュメモリ１０４に存在しない場合には、常に更新データをＨＤＤ２１ａ〜２１ｄに書き込む場合に比べ、更新データの処理時間を短くすることができる。
【０２３０】
また、ＲＡＩＤ制御部１１３の対比用データの対比においては、各分散データのＸＯＲの演算を行い、その演算により得られたパリティデータおよび冗長データを対比するようにした。パリティデータおよび冗長データを対比することで、データを対比する回数が１回で済むので、各分散データ１つ１つを対比するよりも、対比する回数を少なくすることができる。また、パリティデータおよび冗長データのデータ容量は、分散データのデータ容量と同じであるため、対比するデータの総容量も小さくなる。従って、ＣＰＵ１０１にかかる負荷を軽減させることができる。
【０２３１】
また、Ｂａｎｄｗｉｄｔｈ  Ｗｒｉｔｅ方式の第１の書き込み処理および第２の書き込み処理では、パリティデータ同士を対比するようにした。パリティデータ同士を対比することにより、パリティデータ同士が一致しない場合には、更新データの冗長性を確保するパリティデータをそのままＨＤＤ２１ａ〜２１ｄそれぞれの、更新対象のストライプを構成する記憶領域に書き込むことができる。パリティデータ同士を対比し、一致を判断することで、例えば、パリティデータ以外のデータ（例えばハッシュ値等）同士を対比して一致を判断する場合に比べ、不一致時にパリティデータを生成する手間を省略することができる。パリティデータを生成する手間を省略することで、制御モジュール１０ａの更新データの処理時間を短くすることができる。
【０２３２】
なお、本実施の形態ではストレージ装置１００が備える記憶媒体として、ＨＤＤ２０を用いた場合を説明したが、ＨＤＤ２０の一部または全部をＳＳＤに置き換えてもよい。ＨＤＤ２０の一部または全部をＳＳＤに置き換えた場合には、ＳＳＤへの書き込み回数を減らすことで、書き込み回数の上限に達する（寿命に至る）までの時間を延ばすことができる。
【０２３３】
なお、制御モジュール１０ａ、１０ｂが行った処理が、複数の装置によって分散処理されるようにしてもよい。例えば、１つの装置が、キャッシュ制御部１１１の機能を有しており、他の装置が、ＲＡＩＤ制御部１１３の機能を有しており、これら２つの装置が組み合わされて１つのストレージ装置内に設けられていてもよい。
【０２３４】
ところで、大容量のデータの一部分を修正変更したデータをバックアップ用の記憶媒体に記憶されているデータに上書き（コピー）する際に制御モジュール１０ａが備える機能を適用することで、ファイルのコピーが早く終了する可能性を高めることができる。以下、第２の実施の形態のストレージ装置１００をストレージ装置１００内のデータコピーを行う装置に応用する場合を説明する。
【０２３５】
＜応用例＞
図２５は、第２の実施の形態のストレージ装置を用いた応用例を示す図である。
応用例に示すストレージシステム１０００ａは、ＲＡＩＤグループ２２を有している。ＲＡＩＤグループ２２は、ＨＤＤ２２ａ、２２ｂ、２２ｃ、２２ｄで構成されており、ＲＡＩＤ５（３＋１）で運用されている。
【０２３６】
このストレージシステム１０００ａでは、ストレージ装置１００内のＲＡＩＤグループ２１からＲＡＩＤグループ２２へのデータコピー（以下、「筐体内コピー」と言う）を行う。本応用例では、ＲＡＩＤグループ２１に記憶されているデータが、更新データに対応し、ＲＡＩＤグループ２２に記憶されているデータが、更新対象データに対応する。
【０２３７】
本応用例の筐体内コピーは、ホスト装置３０のＣＰＵを使用せずにストレージ装置１００だけでコピーを行う。また、筐体内コピーは、ＲＡＩＤグループ２１内の連続した記憶領域を、ＲＡＩＤグループ２２の記憶領域にコピーする。
【０２３８】
筐体内コピーとしては、例えば、二重切り離しコピー方式、バックグラウンド・コピー方式、コピー・オン・ライト方式が挙げられる。以下、順に説明する。
＜二重切り離しコピー方式＞
図２６は、二重切り離しコピー方式を説明する図である。
【０２３９】
二重切り離しコピー方式は、ＲＡＩＤグループ２１とＲＡＩＤグループ２２の内容を二重化状態（同期）に保ち、論理コピーを行う。ここで、論理コピーとは、バックグラウンド方式のコピー機能であり、ＲＡＩＤグループ２１のコピー実行開始時点でのイメージ（ポイントインタイムスナップショット）を瞬時に作成してバックアップの完了通知をホスト装置３０に返す方法を言う。論理コピーを行った後に、ＲＡＩＤグループ２１からＲＡＩＤグループ２２への実際のコピー（物理コピー）を行う。
そして、ＲＡＩＤグループ２２のバックアップを開始する時点で同期状態を切り離してＲＡＩＤグループ２１とＲＡＩＤグループ２２を非同期にさせる。切り離されたＲＡＩＤグループ２２は、同期を一時停止した時点のＲＡＩＤグループ２１と同一のデータが格納されているため、ＲＡＩＤグループ２１の運用を継続しながらＲＡＩＤグループ２２の内容をテープ装置２３等へバックアップすることができる。
【０２４０】
また、ＲＡＩＤグループ２１とＲＡＩＤグループ２２の同期を一時停止した後に、同期を再開することもできる。同期の再開時は一時停止後のＲＡＩＤグループ２１に記憶されているデータと、ＲＡＩＤグループ２２に記憶されているデータ差分（更新差分）のみをＲＡＩＤグループ２２にコピーする。
【０２４１】
＜バックグラウンド・コピー方式＞
図２７は、バックグラウンド・コピー方式を説明する図である。
バックグラウンド・コピー方式は、任意のタイミングでＲＡＩＤグループ２１に記憶されているデータの全ての複製をＲＡＩＤグループ２２に作成する機能である。ＲＡＩＤグループ２２は、ＲＡＩＤグループ２１と同期状態が切り離された状態を保っている。従って、ＲＡＩＤグループ２１に更新があった場合でもＲＡＩＤグループ２２には、更新の内容が反映されない。ＲＡＩＤグループ２１からＲＡＩＤグループ２２へのデータのコピーが必要になった時点でデータをＲＡＩＤグループ２１からＲＡＩＤグループ２２へ論理コピーし、物理コピーの完了を待たずに、ＲＡＩＤグループ２１で業務を継続しながら、ＲＡＩＤグループ２２をテープ装置等へバックアップすることができる。
【０２４２】
＜コピー・オン・ライト方式＞
図２８は、コピー・オン・ライト方式を説明する図である。
コピー・オン・ライト方式は、データ更新時に更新前のデータのみを複製する機能である。具体的には、ＲＡＩＤグループ２２のデータ更新時には、ＲＡＩＤグループ２２の更新前のデータ（旧データ）２２ａを参照する。そして、ＲＡＩＤグループ２１の更新前のデータ２２ａをＲＡＩＤグループ２２にコピーする。部分データのみをコピーすることでコピー先として用意するＲＡＩＤグループ２２の記憶領域は更新データの分だけ用意すればよい。このため、二重切り離しコピー方式、バックグラウンド・コピー方式、に比べ、ＲＡＩＤグループ２２の記憶容量を抑えることができる。
【０２４３】
応用例の制御モジュール１０ａ、１０ｂは、前述した３つのコピー方式を用いてＲＡＩＤグループ２１からＲＡＩＤグループ２２にデータをコピーする際に、図８に示すステップＳ２〜Ｓ５の処理を行う。図８に示すステップＳ２〜Ｓ５の処理を行うことにより、ＲＡＩＤグループ２２に既に記憶されているデータと同一のデータが、ＲＡＩＤグループ２２に上書きされることを回避することができる。従って、図８に示すステップＳ２〜Ｓ５の処理を行わない場合に比べ、データのコピーが早く終了する可能性を高めることができる。
【０２４４】
なお、応用例では、ＲＡＩＤグループ２１からＲＡＩＤグループ２２への筐体内コピーを説明したが、ＲＡＩＤグループ２２は、ＲＡＩＤ５以外のＲＡＩＤを構成してもよいし、ＲＡＩＤを構成していなくてもよい。
【０２４５】
また、応用例では、筐体内コピーを説明したが、ストレージ装置１００と、図示しない他のストレージ装置との間のコピー（筐体間コピー）にも図８に示すステップＳ２〜Ｓ５の処理を適用することができる。
【０２４６】
以上、本発明の制御装置、制御方法およびストレージ装置を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０２４７】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御装置３および制御モジュール１０ａ、１０ｂが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記憶装置には、ハードディスクドライブ、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）等が挙げられる。
【０２４８】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２４９】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２５０】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）等の電子回路で実現することもできる。
【０２５１】
以上の第１〜第２の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  記憶媒体への情報の書き込みを制御する制御装置において、
前記記憶媒体に書き込まれている第１の情報を一時的に記憶するキャッシュメモリと、
前記記憶媒体に書き込まれている前記第１の情報を更新の対象とする第２の情報を受け付ける受付部と、
前記受付部が受け付けた前記第２の情報を前記記憶媒体に書き込む際に前記第１の情報が前記キャッシュメモリに存在しない場合、前記第１の情報と前記第２の情報とを対比するために、前記記憶媒体から読み出された対比用情報を用いて前記第１の情報と前記第２の情報との一致を判断し、前記第１の情報と一致すると判断した前記第２の情報の前記記憶媒体への書き込みを回避する書き込み制御部と、
を有することを特徴とする制御装置。
【０２５２】
（付記２）  当該制御装置には複数の記憶媒体が接続されており、
前記第１の情報を分散した複数の第１の分散情報および前記複数の第１の分散情報の冗長性を確保する第１の冗長情報が前記複数の記憶媒体に個別に記憶されており、
前記書き込み制御部は、前記第２の情報を分散した複数の第２の分散情報と、前記複数の第２の分散情報の冗長性を確保する第２の冗長情報とを生成し、前記第１の冗長情報と、前記第２の冗長情報との一致を判断することを特徴とする付記１記載の制御装置。
【０２５３】
（付記３）  前記第１の冗長情報と前記第２の冗長情報は、それぞれパリティ情報であり、
前記書き込み制御部は、前記第１の冗長情報が、前記第２の冗長情報と一致しないと判断した場合は、前記複数の記憶媒体にそれぞれ記憶されている前記複数の第１の分散情報と前記第１の冗長情報を、前記複数の第２の分散情報と前記第２の冗長情報で更新することを特徴とする付記２記載の制御装置。
【０２５４】
（付記４）  前記第２の情報が、前記複数の記憶媒体に記憶されている前記複数の第１の分散情報の一部の前記第１の分散情報を更新対象とする情報である場合、前記書き込み制御部は、更新対象ではない前記第１の分散情報を前記記憶媒体から読み出して前記第１の冗長情報を生成することを特徴とする付記３記載の制御装置。
【０２５５】
（付記５）  前記書き込み制御部は、前記第１の情報と一致しないと判断した前記第２の情報を前記記憶媒体に書き込むことを特徴とする付記１記載の制御装置。
（付記６）  前記書き込み制御部は、前記受付部が受け付けた前記第２の情報が前記キャッシュメモリに存在しない場合に前記記憶媒体から前記対比用情報を読み出すことを特徴とする付記１記載の制御装置。
【０２５６】
（付記７）  前記第１の情報が前記キャッシュメモリに記憶されている場合、前記キャッシュメモリに記憶されている前記第１の情報と前記第２の情報との一致を判断するキャッシュ制御部をさらに有することを特徴とする付記１記載の制御装置。
【０２５７】
（付記８）  前記キャッシュ制御部は、前記キャッシュメモリに記憶されている前記第１の情報を分散した複数の第１の分散情報と、前記複数の第１の分散情報の冗長性を確保する第１の冗長情報と、前記第２の情報を分散した複数の第２の分散情報と、前記複数の第２の分散情報の冗長性を確保する第２の冗長情報とを生成し、生成した前記第１の冗長情報と前記第２の冗長情報との一致を判断することを特徴とする付記７記載の制御装置。
【０２５８】
（付記９）  当該制御装置には複数の記憶媒体が接続されており、
前記第１の情報を分散した複数の第１の分散情報および前記複数の第１の分散情報の冗長性を確保する第１の冗長情報が前記複数の記憶媒体に個別に記憶されており、
前記キャッシュ制御部が生成した前記第１の冗長情報と前記第２の冗長情報は、それぞれパリティ情報であり、
前記キャッシュ制御部は、前記第２の冗長情報が前記第１の冗長情報と一致しないと判断した場合は、前記複数の記憶媒体にそれぞれ記憶されている前記複数の第１の分散情報と、前記第１の冗長情報を、前記第２の分散情報と前記第２の冗長情報で更新することを特徴とする付記８記載の制御装置。
【０２５９】
（付記１０）  記憶媒体への情報の書き込みを制御する制御方法において、
コンピュータに、
前記記憶媒体に書き込まれている第１の情報を更新の対象とする第２の情報を受け付けると、
受け付けた前記第２の情報を前記記憶媒体に書き込む際に、前記第１の情報が、前記記憶媒体に書き込まれている前記第１の情報を一時的に記憶するキャッシュメモリに存在しない場合、前記記憶媒体から読み出された、前記第１の情報と前記第２の情報とを対比するために、前記記憶媒体から読み出された対比用情報を用いて前記第１の情報と前記第２の情報との一致を判断し、
前記第１の情報と一致すると判断した前記第２の情報の前記記憶媒体への書き込みを回避する、
処理を実行させることを特徴とする制御方法。
【０２６０】
（付記１１）  記憶媒体と、前記記憶媒体への情報の書き込みを制御する制御装置とを備えるストレージ装置において、
前記制御装置は、
前記記憶媒体に書き込まれている第１の情報を一時的に記憶するキャッシュメモリと、
前記記憶媒体に書き込まれている前記第１の情報を更新の対象とする第２の情報を受け付ける受付部と、
前記受付部が受け付けた前記第２の情報を前記記憶媒体に書き込む際に前記第１の情報が前記キャッシュメモリに存在しない場合、前記第１の情報と前記第２の情報とを対比するために、前記記憶媒体から読み出された対比用情報を用いて前記第１の情報と前記第２の情報との一致を判断し、前記第１の情報と一致すると判断した前記第２の情報の前記記憶媒体への書き込みを回避する書き込み制御部と、
を有することを特徴とするストレージ装置。
【符号の説明】
【０２６１】
１、１００  ストレージ装置
２、３０  ホスト装置
３  制御装置
３ａ、１０４  キャッシュメモリ
３ｂ  受付部
３ｃ  書き込み制御部
４  ストライプ
４ａ、４ｂ、４ｃ、４ｄ  記憶媒体
１０ａ、１０ｂ  制御モジュール
２０  ＨＤＤ
２１、２２  ＲＡＩＤグループ
２１ａ、２１ｂ、２１ｃ、２１ｄ  ＨＤＤ
１１１  キャッシュ制御部
１１２  バッファ領域
１１３  ＲＡＩＤ制御部
１０００、１０００ａ  ストレージシステム
Ａ１、Ｂ１、Ｃ１  第１の分散情報
Ａ２、Ｂ２、Ｃ２  第２の分散情報
Ｄ１  第１の情報
Ｄ２  第２の情報
Ｐ１  第１のパリティ情報
Ｐ２  第２のパリティ情報
【図１】
2012185687.tif 000003
【図２】
2012185687.tif 000004
【図３】
2012185687.tif 000005
【図４】
2012185687.tif 000006
【図５】
2012185687.tif 000007
【図６】
2012185687.tif 000008
【図７】
2012185687.tif 000009
【図８】
2012185687.tif 000010
【図９】
2012185687.tif 000011
【図１０】
2012185687.tif 000012
【図１１】
2012185687.tif 000013
【図１２】
2012185687.tif 000014
【図１３】
2012185687.tif 000015
【図１４】
2012185687.tif 000016
【図１５】
2012185687.tif 000017
【図１６】
2012185687.tif 000018
【図１７】
2012185687.tif 000019
【図１８】
2012185687.tif 000020
【図１９】
2012185687.tif 000021
【図２０】
2012185687.tif 000022
【図２１】
2012185687.tif 000023
【図２２】
2012185687.tif 000024
【図２３】
2012185687.tif 000025
【図２４】
2012185687.tif 000026
【図２５】
2012185687.tif 000027
【図２６】
2012185687.tif 000028
【図２７】
2012185687.tif 000029
【図２８】
2012185687.tif 000030