説明

制御装置、制御方法およびストレージ装置

【課題】記憶媒体への書き込み回数を削減すること。
【解決手段】制御装置3は、通信回線で接続された記憶媒体4a〜4dへの情報の書き込みを制御する装置である。キャッシュメモリ3aは、記憶媒体4a〜4dに書き込まれている第1の情報D1を一時的に記憶する。受付部3bは、記憶媒体4a〜4dに書き込まれている第1の情報D1を更新の対象とする第2の情報D2を受け付ける。書き込み制御部3cは、受付部3bが受け付けた第2の情報D2を記憶媒体4a〜4dに書き込む際に第1の情報D1がキャッシュメモリ3aに存在しない場合、第1の情報D1と第2の情報D2とを対比するために、記憶媒体4a〜4dから読み出された対比用情報を用いて第1の情報D1と第2の情報D2との一致を判断し、第1の情報D1と一致すると判断した第2の情報D2の記憶媒体4a〜4dへの書き込みを回避する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は制御装置、制御方法およびストレージ装置に関する。
【背景技術】
【0002】
近年、コンピュータシステムで取り扱う大容量のデータを記憶する記憶装置を複数用いたストレージ装置が広く使用されている。一般的なストレージ装置は、1つまたは複数の記憶媒体と、これらの記憶媒体に対するデータの書き込みおよびデータの読み出しを制御する制御装置を含む(例えば、特許文献1参照)。
【0003】
また、ストレージ装置を用いてデータをバックアップする技術において、変更のなかったデータをバックアップせず、可能な限り少ないファイルのコピーをバックアップして、データのバックアップ量を減らす技術が知られている。具体的には、バックアップされ得るデータがあるかどうか、およびどのデータをバックアップするかを決定するデータをメモリに格納しておき、そのデータに基づいて、バックアップ対象のデータを決定する。そして、バックアップ対象のデータがキャッシュメモリにない場合に限り、格納のためのデータをバックアップストレージに伝送する技術が知られている(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−87094号公報
【特許文献2】特開2005−502956号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
書き込み対象のデータがキャッシュメモリに存在しない場合であっても、記憶媒体に存在する場合がある。例えば、書き込み対象のデータに比べて、キャッシュメモリの容量が小さい場合は、書き込み対象のデータのほとんどはキャッシュメモリに存在しないことになる。
【0006】
従って、書き込み対象のデータがキャッシュメモリにない場合に限り、格納のためのデータを記憶媒体に伝送する技術では、書き込み対象のデータと同じデータが記憶媒体に存在しているにもかかわらず、書き込み対象のデータが記憶媒体に上書きされてしまうと言う問題があった。
【0007】
本発明はこのような点に鑑みてなされたものであり、記憶媒体への書き込み回数を削減する制御装置、制御方法およびストレージ装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するために、開示の制御装置が提供される。この制御装置は、記憶媒体への情報の書き込みを制御する装置であり、キャッシュメモリと、受付部と、書き込み制御部とを有している。
【0009】
キャッシュメモリは、記憶媒体に書き込まれている第1の情報を一時的に記憶する。
受付部は、記憶媒体に書き込まれている第1の情報を更新の対象とする第2の情報を受け付ける。
【0010】
書き込み制御部は、受付部が受け付けた第2の情報を記憶媒体に書き込む際に第1の情報がキャッシュメモリに存在しない場合、第1の情報と第2の情報とを対比するために、記憶媒体から読み出された対比用情報を用いて第1の情報と第2の情報との一致を判断し、第1の情報と一致すると判断した第2の情報の記憶媒体への書き込みを回避する。
【発明の効果】
【0011】
記憶媒体への書き込み回数を削減することができる。
【図面の簡単な説明】
【0012】
【図1】第1の実施の形態のストレージ装置を示す図である。
【図2】第2の実施の形態のストレージシステムを示すブロック図である。
【図3】Bandwidth Write方式を説明する図である。
【図4】Read Bandwidth Write方式を説明する図である。
【図5】第1のSmall−Write方式を説明する図である。
【図6】第2のSmall−Write方式を説明する図である。
【図7】第2の実施の形態の制御モジュールの機能を示すブロック図である。
【図8】制御モジュールのデータ書き込み処理を示すフローチャートである。
【図9】Bandwidth Write方式の第1の書き込み判断処理を示すフローチャートである。
【図10】Read Bandwidth Write方式の第1の書き込み判断処理を示すフローチャートである。
【図11】第1のSmall−Write方式の第1の書き込み判断処理を示すフローチャートである。
【図12】第2のSmall−Write方式の第1の書き込み判断処理を示すフローチャートである。
【図13】Bandwidth Write方式の第2の書き込み判断処理を説明するフローチャートである。
【図14】Read Bandwidth Write方式の第2の書き込み判断処理を示すフローチャートである。
【図15】第1のSmall−Write方式の第2の書き込み判断処理を示すフローチャートである。
【図16】第2のSmall−Write方式の第2の書き込み判断処理を示すフローチャートである。
【図17】Bandwidth Write方式の第1の書き込み判断処理の具体例を説明する図である。
【図18】Read Bandwidth Write方式の第1の書き込み判断処理の具体例を説明する図である。
【図19】第1のSmall−Write方式の第1の書き込み判断処理の具体例を説明する図である。
【図20】第2のSmall−Write方式の第1の書き込み判断処理の具体例を説明する図である。
【図21】Bandwidth Write方式の第2の書き込み判断処理の具体例を説明する図である。
【図22】Read Bandwidth Write方式の第2の書き込み判断処理の具体例を説明する図である。
【図23】第1のSmall−Write方式の第2の書き込み判断処理の具体例を説明する図である。
【図24】第2のSmall−Write方式の第2の書き込み判断処理の具体例を説明する図である。
【図25】第2の実施の形態のストレージ装置を用いた応用例を示す図である。
【図26】二重切り離しコピー方式を説明する図である。
【図27】バックグラウンド・コピー方式を説明する図である。
【図28】コピー・オン・ライト方式を説明する図である。
【発明を実施するための形態】
【0013】
以下、実施の形態のストレージ装置を、図面を参照して詳細に説明する。
<第1の実施の形態>
図1は、第1の実施の形態のストレージ装置を示す図である。
【0014】
第1の実施の形態のストレージ装置1は、電気通信回線や、光通信回線等を介してホスト装置2に接続されている。
ストレージ装置1は、制御装置3と、記憶媒体4a、4b、4c、4dを有している。
【0015】
記憶媒体4a、4b、4c、4dは、情報を記憶可能な記憶領域を有する。この記憶媒体4a、4b、4c、4dとしては、例えば、HDD(Hard Disk Drive)や、SSD(Solid State Drive)等が挙げられる。また、記憶媒体4a、4b、4c、4dの総容量は、特に限定されないが、一例として600GB(Giga Byte)〜240TB(Tera Byte)である。なお、本実施の形態のストレージ装置1は、4個の記憶媒体4a、4b、4c、4dを有するが、記憶媒体の個数は、3つ以下であってもよく、5個以上であってもよい。
【0016】
記憶媒体4a、4b、4c、4dには、それぞれ記憶媒体4a、4b、4c、4dの一部の記憶領域で構成されるストライプ4が設定されている。
記憶媒体4a、4b、4cそれぞれの、ストライプ4を構成する記憶領域には、第1の情報D1が所定の情報量毎に分散された分散情報A1、B1、C1が記憶されている。本実施の形態では、1つの分散情報はホスト装置2からの書き込みデータの一部であり、データサイズは128LBA(Logical Block Address)分に相当する。1LBAにより特定される記憶領域のサイズは、例えば512バイト(Byte)である。
【0017】
この第1の情報D1は、例えば、ホスト装置2の書き込み要求に応じて記憶媒体4a、4b、4cに書き込まれた情報である。具体的には、記憶媒体4aのストライプ4を構成する記憶領域には、第1の情報D1を分散した分散情報A1が記憶されている。記憶媒体4bのストライプ4を構成する記憶領域には、第1の情報D1を分散した分散情報B1が記憶されている。記憶媒体4cのストライプ4を構成する記憶領域には、第1の情報D1を分散した分散情報C1が記憶されている。また、記憶媒体4dのストライプ4を構成する記憶領域には、分散情報A1、B1、C1から生成した、分散情報A1、B1、C1の冗長性を確保するパリティ情報(誤り訂正符号情報)P1が記憶されている。
【0018】
制御装置3は、例えばホスト装置2の情報書き込み要求に応じて、記憶媒体4a、4b、4c、4dが有する記憶領域にストライプ単位でデータを書き込む。
制御装置3は、キャッシュメモリ3aと、受付部3bと、書き込み制御部3cとを有している。
【0019】
キャッシュメモリ3aは、例えば制御装置3が有するSRAM(Static Random Access Memory)またはDRAMで構成されている。キャッシュメモリ3aの記憶容量は、特に限定されないが、一例として2〜64GB程度である。
【0020】
キャッシュメモリ3aは、例えばホスト装置2と制御装置3とのREAD/WRITE I/O処理(以下、単に「アクセス」と言う)を高速にする目的で設けられている。キャッシュメモリ3aは、ホスト装置2のアクセス要求に応じて記憶媒体4a、4b、4c、4dに書き込む情報や、ホスト装置2のアクセス要求に応じて記憶媒体4a、4b、4c、4dから読み出した情報を一時的に記憶する。キャッシュメモリ3aに情報を一時的に記憶しておくことで、例えば以降の情報の読み出しにおいてホスト装置2は、記憶媒体4a、4b、4c、4dにアクセスすることなく情報を読み出すことができる。
【0021】
ここで、キャッシュメモリ3aの記憶容量は、記憶媒体4a、4b、4c、4dに比べて少ない。このため、記憶媒体4a、4b、4c、4dに記憶されている全てのデータを同時にキャッシュメモリ3a上に展開することは困難である。そのため、キャッシュメモリ3aの使用頻度の小さい情報は、新しい情報に書き換えられる。
【0022】
受付部3bおよび書き込み制御部3cは、制御装置3が有するCPU(Central Processing Unit)の機能により実現することができる。
受付部3bは、記憶媒体4a、4b、4cに書き込まれている第1の情報D1を更新の対象とする第2の情報D2を受け付ける。なお、第2の情報D2が第1の情報D1を更新の対象とすることは、例えば、第2の情報D2の格納先が、第1の情報D1の格納先と同じことより、判断することができる。受付部3bは、受け付けた第2の情報D2をキャッシュメモリ3aに一時的に記憶する。
【0023】
書き込み制御部3cは、受付部3bが受け付けた第2の情報D2を記憶媒体4a、4b、4cに書き込む際に第1の情報D1がキャッシュメモリ3aに存在するか否か、すなわち、第1の情報D1がキャッシュヒットしたか否かを判断する。ここで、キャッシュヒットとは、命令処理に必要な情報がキャッシュメモリ3aに存在し、キャッシュメモリ3aから命令処理に必要な情報を読み込むことができることを言う。なお、キャッシュヒットの判断は、受付部3bが第2の情報D2を受け付けた直後に行うこともできる。
【0024】
なお、図1のキャッシュメモリ3a内に点線で図示した第1の情報D1を構成する分散情報A1、B1、C1は、ホスト装置2と制御装置3とのアクセスの際、キャッシュメモリ3aに一時的に記憶されていたことを示している。また、キャッシュメモリ3a内に点線で図示した第1の情報D1は、書き込み制御部3cがキャッシュヒットしたか否かを判断する時には、第1の情報D1が他の情報により上書きされ、キャッシュメモリ3aに存在しないことを示している。
【0025】
図1に示す例では、書き込み制御部3cは、第2の情報D2を記憶媒体4a、4b、4cに書き込む際に図示しないキャッシュ管理テーブルに基づいて、第1の情報D1がキャッシュメモリ3aに存在しないと判断する。書き込み制御部3cは、第2の情報D2を記憶媒体4a、4b、4cに書き込む際に第1の情報D1がキャッシュメモリ3aに存在しないと判断すると、記憶媒体4dからパリティ情報P1を読み出す。なお、パリティ情報P1は、対比用情報の一例である。そして、書き込み制御部3cは、読み出されたパリティ情報P1を用いて第1の情報D1と第2の情報D2との一致を判断する。パリティ情報P1を用いた第1の情報D1と第2の情報D2との一致の判断は、例えば以下のようにして行うことができる。
【0026】
書き込み制御部3cは、キャッシュメモリ3aに記憶された第2の情報D2から、記憶媒体4a、4b、4cそれぞれのストライプ4を構成する記憶領域毎に第2の情報D2を分散した分散情報A2、B2、C2を生成する。そして、書き込み制御部3cは、生成した分散情報A2、B2、C2のXOR(排他的論理和)を演算することにより、分散情報A2、B2、C2の冗長性を確保するパリティ情報P2を生成する。そして、書き込み制御部3cは、パリティ情報P1とパリティ情報P2との一致を判断する。書き込み制御部3cは、パリティ情報P1とパリティ情報P2とが一致すれば、第1の情報D1と第2の情報D2とが一致すると判断する。
【0027】
そして、書き込み制御部3cは、書き込み制御部3cが第1の情報D1と一致すると判断した第2の情報D2の記憶媒体4a、4b、4cへの書き込みを回避する。書き込みを回避することにより、記憶媒体4a、4b、4cそれぞれのストライプ4を構成する記憶領域に既に記憶されている第1の情報D1と重複する第2の情報D2の上書きを抑制する。なお、書き込み制御部3cは、第2の情報D2が記憶媒体4a、4b、4cに正常に書き込まれた旨をホスト装置2に通知するようにしてもよい。
【0028】
なお、書き込み制御部3cは、パリティ情報P1とパリティ情報P2とが一致しなければ、第1の情報D1と第2の情報D2とが一致しないと判断する。書き込み制御部3cは、第1の情報D1と一致しないと判断した第2の情報D2を、記憶媒体4a、4b、4cに書き込む。具体的には、分散情報A2を記憶媒体4aのストライプ4を構成する記憶領域に上書きする。分散情報B2を記憶媒体4bのストライプ4を構成する記憶領域に上書きする。分散情報C2を記憶媒体4cのストライプ4を構成する記憶領域に上書きする。パリティ情報P2を記憶媒体4dのストライプ4を構成する記憶領域に上書きする。この上書き処理により、既存の情報が記憶されていたストライプ4を構成する記憶領域の記憶内容が更新される。
【0029】
ところで、図1には図示していないが、第2の情報D2を記憶媒体4a、4b、4cに書き込む際に第1の情報D1がキャッシュメモリ3aに存在する場合、書き込み制御部3cは、第2の情報D2がキャッシュメモリ3aに存在する第1の情報D1に一致するか否かを判断するようにしてもよい。一致の判断は、例えば以下のようにして行うことができる。
【0030】
書き込み制御部3cは、キャッシュメモリ3aに存在する分散情報A1、B1、C1のXORを演算することにより、分散情報A1、B1、C1の冗長性を確保するパリティ情報(以下、キャッシュパリティ情報と言う)を生成する。なお、キャッシュパリティ情報は、キャッシュ対比用情報の一例である。
【0031】
書き込み制御部3cは、第2の情報D2から分散情報A2、B2、C2を生成する。そして、書き込み制御部3cは、生成した分散情報A2、B2、C2のXORを演算することにより、分散情報A2、B2、C2の冗長性を確保するパリティ情報P2を生成する。
【0032】
そして、書き込み制御部3cは、キャッシュパリティ情報とパリティ情報P2との一致を判断する。書き込み制御部3cは、キャッシュパリティ情報とパリティ情報P2とが一致すれば、第1の情報D1と第2の情報D2とが一致すると判断する。
【0033】
そして、書き込み制御部3cは、書き込み制御部3cが第1の情報D1と一致すると判断した第2の情報D2の記憶媒体4a、4b、4cへの書き込みを回避する。書き込みを回避することにより、記憶媒体4a、4b、4cそれぞれのストライプ4を構成する記憶領域に既に記憶されている第1の情報D1と重複する第2の情報D2の上書きを抑制する。
【0034】
なお、書き込み制御部3cは、キャッシュパリティ情報とパリティ情報P2とが一致しなければ、第1の情報D1と第2の情報D2とが一致しないと判断する。書き込み制御部3cは、第1の情報D1と一致しないと判断した第2の情報D2を、記憶媒体4a、4b、4cに書き込む。具体的には、分散情報A2を記憶媒体4aのストライプ4を構成する記憶領域に上書きする。分散情報B2を記憶媒体4bのストライプ4を構成する記憶領域に上書きする。分散情報C2を記憶媒体4cのストライプ4を構成する記憶領域に上書きする。パリティ情報P2を記憶媒体4dのストライプ4を構成する記憶領域に上書きする。この上書き処理により、既存の情報が記憶されていたストライプ4を構成する記憶領域の記憶内容が更新される。
【0035】
第1の実施の形態の制御装置3によれば、第1の情報D1がキャッシュメモリ3aに存在しない場合、書き込み制御部3cが、記憶媒体4dから読み出されたパリティ情報P1を用いて第1の情報D1と第2の情報D2との一致を判断するようにした。そして、書き込み制御部3cが、第1の情報D1と一致すると判断した第2の情報D2の記憶媒体4a、4b、4cへの書き込みを回避するようにした。
【0036】
ホスト装置2から送られてきた情報と対比する情報がキャッシュメモリ上に存在しない場合に記憶媒体に送られてきた情報をそのまま記憶媒体に書き込む装置に比べ、制御装置3は、重複する情報の書き込み回数を低減できる可能性を高めることができる。従って、記憶媒体4a、4b、4c、4dとして、例えばSSDを用いた場合には、記憶媒体4a、4b、4c、4dへの書き込み回数を減らすことで、書き換え回数の上限に達する(寿命に至る)までの時間を延ばすことができる。
【0037】
また、第2の情報D2を記憶媒体4a、4b、4cに書き込むよりも、第1の情報D1を記憶媒体4a、4b、4cから読み出す方が、記憶媒体4a、4b、4cへのアクセス時間が短い。このため、重複する情報の書き込みを回避することで、ホスト装置2から第2の情報D2を受け付けたときに、制御装置3が第2の情報D2を処理する時間を短くすることができる。
【0038】
また、書き込み制御部3cは、第1の情報D1と第2の情報D2とが一致するか否かの判断にパリティ情報P1、P2を用いた。パリティ情報P1とパリティ情報P2とを対比し、パリティ情報P1とパリティ情報P2との一致を判断することで、情報A1、B1、C1と情報A2、B2、C2それぞれを対比し、一致を判断する場合に比べ、対比する回数を減らすことができる。対比する回数を減らすことで、制御装置3が第2の情報D2を処理する時間を短くすることができる。
【0039】
また、パリティ情報同士を対比することにより、パリティ情報同士が一致しない場合には、パリティ情報P2をそのまま記憶媒体4dのストライプ4を構成する記憶領域に書き込むことができる。パリティ情報同士を対比し、一致を判断することで、例えば、第1の情報D1と第2の情報D2それぞれのハッシュ値を求めて一致を判断する場合に比べ、不一致時にパリティ情報P2を生成する手間を省略することができる。冗長用のパリティデータを比較処理に用いることで、比較処理専用のコードを作成する手間を省略できる。
【0040】
以下、開示のストレージ装置について、より具体的に説明する。
<第2の実施の形態>
図2は、第2の実施の形態のストレージシステムを示すブロック図である。
【0041】
ストレージシステム1000は、ホスト装置30と、このホスト装置30にファイバチャネル(FC:Fibre Channel)スイッチ31を介して接続されたストレージ装置100とを有している。なお、図2では1つのホスト装置30がストレージ装置100に接続されているが、複数のホスト装置が、ストレージ装置100に接続されていてもよい。
【0042】
ストレージ装置100は、それぞれが複数のHDD20を備えるドライブエンクロージャ(DE:Drive Enclosure)20a、20b、20c、20dと、これらのドライブエンクロージャ20a、20b、20c、20dの物理記憶領域をRAID(Redundant Arrays of Inexpensive/Independent Disks)によって管理する制御モジュール(CM:Controller Module)10a、10bとを有している。なお、本実施の形態では、ドライブエンクロージャ20a、20b、20c、20dが備える記憶媒体としては、HDD20を例示したが、HDD20に限らず、SSD等、他の記憶媒体を用いてもよい。以下、ドライブエンクロージャ20a、20b、20c、20dが備える複数のHDD20を区別しない場合は、「HDD20群」と言う。HDD群20の総容量は、例えば600GB(Giga Byte)〜240TB(Tera Byte)である。
【0043】
ストレージ装置100は、2つの制御モジュール10a、10bを運用に使用することで、冗長性が確保されている。なお、ストレージ装置100が備える制御モジュールの数は、2つに限定されず、3つ以上の制御モジュールにより冗長性が確保されていてもよいし、制御モジュール10aのみを使用した構成であってもよい。
【0044】
制御モジュール10a、10bは、それぞれ制御装置の一例であり、制御モジュール10a、10bは、それぞれ同じハードウェア構成によって実現される。
制御モジュール10aには、内部バスを介してチャネルアダプタ(CA:Channel Adapter)11a、11bに接続されている。制御モジュール10bには、内部バスを介してチャネルアダプタ11c、11dに接続されている。
【0045】
チャネルアダプタ11a、11b、11c、11dは、それぞれファイバチャネルスイッチ31に接続され、ファイバチャネルスイッチ31を介してホスト装置30のチャネルCH1、CH2、CH3、CH4に接続される。チャネルアダプタ11a、11b、11c、11dは、ホスト装置30と制御モジュール10a、10bとの間でデータを送受信するインタフェース機能を提供する。
【0046】
制御モジュール10a、10bは、それぞれ、ホスト装置30からのデータアクセス要求に応じてドライブエンクロージャ20a、20b、20c、20dが有するHDD20の物理記憶領域へのデータアクセスをRAIDによって制御する。
【0047】
制御モジュール10a、10bは、それぞれ同じハードウェア構成によって実現されるため、代表的に、制御モジュール10aのハードウェア構成を説明する。
制御モジュール10aは、CPU101と、RAM(Random Access Memory)102と、フラッシュROM(Read Only Memory)103と、キャッシュメモリ104と、デバイスアダプタ(DA:Device Adapter)105a、105bとを備えている。
【0048】
CPU101は、フラッシュROM103等に記憶されたプログラムを実行することにより、制御モジュール10a全体を統括的に制御する。RAM102は、CPU101に実行させるプログラムの少なくとも一部や、プログラムによる処理に必要な各種データを一時的に記憶する。フラッシュROM103は、不揮発性のメモリであり、CPU101により実行されるプログラムや、プログラムの実行に必要な各種のデータ等を記憶する。
【0049】
また、フラッシュROM103は、ストレージ装置100の停電時等にキャッシュメモリ104に記憶されているデータの退避先となる。
キャッシュメモリ104は、HDD20群に書き込まれているデータやHDD20群から読み出したデータを一時的に記憶する。
【0050】
そして、制御モジュール10aは、例えばホスト装置30からのデータ読み出し命令を受けたときに、読み出し対象のデータがキャッシュメモリ104に記憶されているか否かを判断する。読み出し対象のデータがキャッシュメモリ104に記憶されていれば、制御モジュール10aは、キャッシュメモリ104に記憶されている読み出し対象のデータをホスト装置30に送る。読み出し対象のデータをHDD20群から読み出す場合に比べ、データを迅速にホスト装置30に送ることができる。
【0051】
また、キャッシュメモリ104には、CPU101による処理に必要なデータが一時的に記憶されてもよい。このキャッシュメモリ104としては、例えば、SRAM等の揮発性の半導体装置が挙げられる。また、キャッシュメモリ104の記憶容量は、特に限定されないが、一例として2〜64GB程度である。
【0052】
デバイスアダプタ105a、105bは、ドライブエンクロージャ20a、20b、20c、20dに接続されている。このデバイスアダプタ105a、105bは、ドライブエンクロージャ20a、20b、20c、20dが備えるHDD20群とキャッシュメモリ104との間でデータを送受信するインタフェース機能を提供する。制御モジュール10aは、デバイスアダプタ105a、105bを介してドライブエンクロージャ20a、20b、20c、20dが備えるHDD20群との間でデータの送受信を行う。
【0053】
制御モジュール10aと制御モジュール10bとは図示しないルータを介して接続されている。例えば、HDD20群に書き込みを要求するデータがホスト装置30からチャネルアダプタ11aを介して制御モジュール10aに送信されると、CPU101は、受信したデータをキャッシュメモリ104に格納する。また、CPU101は、データの格納と共に、受信したデータを、ルータを介して制御モジュール10bに送信する。そして、制御モジュール10bは、制御モジュール10bが有するCPUが受信したデータを、制御モジュール10bが有するキャッシュメモリに格納する。この処理によって、制御モジュール10a内のキャッシュメモリ104と制御モジュール10b内のキャッシュメモリとに同一のデータが記憶される。
【0054】
ドライブエンクロージャ20a、20b、20c、20dには、ドライブエンクロージャ20a、20b、20c、20dが備える複数のHDD20のうち、1つ、または複数のHDD20により構成されたRAIDグループが形成されている。このRAIDグループは、「論理ボリューム」「仮想ディスク」「RLU(RAID Logical Unit)」等と呼ばれる場合もある。
【0055】
図2では、RAID5を構成するRAIDグループ21を示している。なお、RAIDグループ21を構成するHDD20は、他のHDD20と区別するために、異なる符号(HDD21a、21b、21c、21d)を付している。すなわち、RAIDグループ21は、HDD21a、21b、21c、21dで構成されており、RAID5(3+1)で運用されている。なお、RAIDグループ21のRAID構成は、一例であり、図示のRAID構成に限定されない。例えば、RAIDグループ21は、任意の個数のHDD20を有することができる。また、RAIDグループ21は、RAID6等、任意のRAID方式で構成することができる。
【0056】
RAIDグループ21を構成するHDD21a〜21dには、HDD21a〜21dそれぞれの記憶領域の一部で構成されるストライプが設定されている。ホスト装置30と制御モジュール10a、10bとの間のアクセスは、ストライプ単位で行われる。すなわち、ホスト装置30は、HDD21a〜21dそれぞれの、同一のストライプを構成する記憶領域を更新の対象とする1ストライプ分のデータを制御モジュール10a、10bに送信する。
【0057】
以下の説明では、HDD21a〜21dそれぞれの、同一のストライプを構成する記憶領域をデータの書き込み先とする1ストライプ分のデータを「更新データ」と言う。なお、更新データは、第2の情報の一例である。
【0058】
また、以下の説明では、HDD21a〜21dそれぞれの、更新データのデータ書き込み対象の記憶領域に存在するデータに一致するデータを、「更新対象データ」と言う。すなわち、更新対象データは、以下の(1)、(2)のデータのいずれかである。(1)更新データのデータ書き込み対象の記憶領域に存在するデータ。(2)更新データのデータ書き込み対象の記憶領域に存在するデータに一致する、キャッシュメモリ104に記憶されているデータ。なお、更新対象データは、第1の情報の一例である。
【0059】
また、以下の説明では、HDD21a〜21dそれぞれの記憶領域で構成される同一のストライプのうち、更新対象データを含む記憶領域で構成されるストライプを「更新対象のストライプ」と言う。
【0060】
次に、制御モジュール10a、10bのHDD21a〜21dへの更新データの書き込み方法を、詳しく説明する。制御モジュール10a、10bは、それぞれ同じ機能を備えているため、代表的に、制御モジュール10aが備える機能を説明する。
【0061】
ホスト装置30から制御モジュール10aへの更新データの書き込み要求を受け付けると、制御モジュール10aは、受け取った更新データをキャッシュメモリ104に記憶する。キャッシュメモリ104に記憶した更新データを解析することにより、受信した更新データを予め設定した大きさのブロック単位に分割する。以下の説明では、更新データをブロック単位に分割したデータを「分散データ」と言う。1つの分散データは128個のLBA分のデータを有するものとする。更新データは、分散データ単位でキャッシュメモリ104に存在する。
【0062】
ところで、更新データの所定の領域には、通常のライトバック方式を用いた書き込み、または差分ライトバック方式を用いた書き込みのいずれか1つを指定する情報が格納されている。また他にも、管理端末等からライトバック方式の設定を行ってもよい。管理端末等からライトバック方式の設定を行う場合、例えば制御モジュール10a内キャッシュメモリ104に、どちらのライトバック方式を用いるかを示すフラグを記憶する記憶領域を設け、その記憶領域にフラグを記憶しておく。制御モジュール10aは、フラグを記憶した記憶領域にアクセスすることで、書き込み方式を特定することができる。さらに、他にも、ディスクの種類(HDDまたはSSD等)に基づいて、制御モジュール10aが自動で判断してもよい。通常のライトバック方式を用いた書き込みか、差分ライトバック方式を用いた書き込みかは、ホスト装置30を操作する操作者が指定することができる。
【0063】
更新データを解析した結果、受け取った更新データに対し通常のライトバック方式を用いた書き込みが指定されていると判断すると、制御モジュール10aは、処理の空き時間ができてからキャッシュメモリ104に記憶されている更新データをHDD21a〜21dに書き込む(書き戻す)。
【0064】
RAID5(3+1)は、4つのHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域のうち、いずれか3つの記憶領域を更新データから生成した分散データの記憶に使用して、1つの記憶領域をパリティデータの記憶に使用する。パリティデータは、制御モジュール10aが、更新データから生成した分散データそれぞれのXORを演算することで生成する。パリティデータは、HDD21a〜21dのいずれか1つのHDDの故障時(HDD21a〜21dに記憶されているデータが読み出せなくなったとき)に故障したHDDのデータを再生成する際に利用する冗長データである。HDD21a〜21dそれぞれの、同一のストライプを構成する記憶領域のうち、パリティデータを記憶する記憶領域は、ストライプ毎に異なる。制御モジュール10aは、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域にデータを分散して記憶する。
【0065】
また、更新データを解析した結果、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されていると判断すると、制御モジュール10aは、更新データと更新対象データとの一致を判断する。そして、制御モジュール10aは、一致すると判断した更新データのHDD21a〜21dそれぞれの更新対象のストライプを構成する記憶領域への書き込みを回避する。他方、一致しないと判断した更新データをHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む(書き戻す)。
【0066】
制御モジュール10aは、更新データと、更新対象データとの一致の判断を以下の方法で行う。
まず、制御モジュール10aは、更新対象データが、キャッシュメモリ104に記憶されているか否かを判断する。そして、更新対象データが、キャッシュメモリ104に記憶されていないと判断すれば、HDD21a〜21dから更新対象データを読み出すため、制御モジュール10aは、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に記憶されている更新対象データと更新データとの一致を判断する。
【0067】
具体的には、制御モジュール10aは、HDD21a〜21dにおけるLBAと、このLBAに記憶されているデータが割り当てられているキャッシュメモリ104を構成するキャッシュページのアドレスを管理している。そして、制御モジュール10aは、更新先データの格納先LBAがキャッシュメモリ104に存在すれば、更新対象データが、キャッシュメモリ104に記憶されていると判断する。更新対象データが、キャッシュメモリ104に記憶されていると判断すれば、制御モジュール10aは、キャッシュメモリ104に記憶されている更新対象データと更新データとの一致を判断する。そして、このキャッシュメモリ104に記憶されている更新対象データと更新データとが一致すると判断した場合は、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域への更新データの書き込みを回避する。他方、このキャッシュメモリ104に記憶されているデータと更新データとが一致しないと判断した場合は、更新データを、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。
【0068】
他方、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に記憶されている更新対象データと更新データとが一致すると判断した場合は、HDD21a〜21dへの更新データの書き込みを回避する。他方、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に記憶されている更新対象データと更新データとが一致しないと判断した場合は、更新データを、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。
【0069】
この差分ライトバック方式を用いた書き込みを行うことにより、キャッシュメモリ104またはHDD21a〜21dに存在するデータと更新データとが一致する場合は、HDD21a〜21dへの書き込み回数を低減することができる。
【0070】
次に、HDD21a〜21dそれぞれの更新対象のストライプを構成する記憶領域に更新データを書き込む方法をより詳しく説明する。
制御モジュール10aがHDD21a〜21dに更新データを書き込む際には、Bandwidth Write方式、Read Bandwidth Write方式、およびSmall−Write方式の3種類の書き込み方式を使い分ける。以下、「3種類の書き込み方式」と言う場合は、Bandwidth Write方式、Read Bandwidth Write方式、およびSmall−Write方式を指すものとする。
【0071】
制御モジュール10aは、前述したLBAの対比の際に、更新データの容量や、HDD21a〜21dそれぞれの更新対象のストライプを構成する記憶領域のうち、更新データが更新対象とする記憶領域と更新対象としない記憶領域を把握する。
【0072】
制御モジュール10aは、LBAの対比により、更新データが、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域の全ての記憶領域を更新対象とすると判断した場合、Bandwidth Write方式を用いる。制御モジュール10aは、Bandwidth Write方式を用いてHDD21a〜21dそれぞれの更新対象のストライプを構成する記憶領域に更新データを書き込む。
【0073】
また、制御モジュール10aは、以下の条件(1a)と、条件(1b)の両方の条件を満たす場合、Read Bandwidth Write方式を用いてHDD21a〜21dそれぞれの更新対象のストライプを構成する記憶領域に更新データを書き込む。
【0074】
条件(1a)HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域のうち、更新対象の記憶領域と更新対象ではない記憶領域とが混在する場合。
条件(1b)更新対象の記憶領域の数が更新対象ではない記憶領域の数よりも多いと判断した場合。
【0075】
また、制御モジュール10aは、更新データが、以下の条件(2a)と、条件(2b)の両方の条件を満たす場合、Small−Write方式を用いてHDD21a〜21dそれぞれの、同一のストライプを構成する記憶領域に更新データを書き込む。
【0076】
条件(2a)HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域のうち、更新対象の記憶領域と更新対象ではない記憶領域とが混在する場合。
条件(2b)更新対象の記憶領域の数が更新対象ではない記憶領域の数よりも少ないと判断した場合。
【0077】
さらに、制御モジュール10aは、上記条件(2a)、(2b)を満たした場合、下記条件(2c)と条件(2d)のいずれを満たすかを判断する。
条件(2c)更新データが、記憶領域の一部を更新するデータを含んでいない場合。
【0078】
条件(2d)更新データが、記憶領域の一部を更新するデータを含んでいる場合。
以下、条件(2a)、(2b)かつ(2c)を満たすSmall−Write方式を「第1のSmall−Write方式」と言う。また、条件(2a)、(2b)かつ(2d)を満たすSmall−Write方式を「第2のSmall−Write方式」と言う。
【0079】
上記3種類の書き込み方式を使い分けることにより、HDD21a〜21dそれぞれの更新対象のストライプを構成する記憶領域のうち、更新対象ではない分散データが記憶されているHDDの記憶領域へのデータの書き込みを回避することができる。分散データの書き込みを回避することで、HDD21a〜21dに対する書き込みによる制御モジュール10aの負荷を軽減する。なお、初回のHDD21a〜21dに対する分散データの書き込みは、これら3種類の書き込み方式を用いずに、通常の書き込みを行う。
【0080】
以下、Bandwidth Write方式、Read Bandwidth Write方式、およびSmall−Write方式について具体例を用いて順番に説明する。
<Bandwidth Write方式>
図3は、Bandwidth Write方式を説明する図である。図3は、ホスト装置30からストレージ装置100に対して更新データD20の書き込み要求があった場合の制御モジュール10aの処理を示している。
【0081】
図3に示すHDD21a〜21dには、HDD21a〜21dを跨いでHDD21a〜21dそれぞれの記憶領域から構成されたストライプST1が設定されている。このストライプST1を構成する各記憶領域には、それぞれ分散データD11、D12、D13、および分散データD11〜D13の冗長性を確保するパリティデータP11が予め記憶されている。
【0082】
図3中、分散データD11の“O1”は、符号“O”が既存(Old)のデータであることを示す。また、番号“1”は、本実施の形態において説明の便宜上割り当てた番号であり、HDD21a〜21dそれぞれの記憶領域から構成されたストライプST1における記憶領域を特定する情報である。すなわち、分散データD11の“O1”は、HDD21aのストライプST1を構成する記憶領域に記憶されているデータであることを示している。分散データD12の“O2”は、HDD21bのストライプST1を構成する記憶領域に記憶されているデータであることを示している。分散データD13の“O3”は、HDD21cのストライプST1を構成する記憶領域に記憶されているデータであることを示している。また、パリティデータP11の“OP1”のうち、符号“OP”は、分散データD11〜D13から生成された既存のパリティ(Old Parity)データであることを示している。また、番号“1”は、HDD21a〜21dそれぞれの記憶領域から構成されたストライプST1における記憶領域を特定する情報である。すなわち、パリティデータP11の“OP1”は、HDD21dのストライプST1を構成する記憶領域に記憶されているパリティデータであることを示している。
【0083】
制御モジュール10aは、ホスト装置30からの更新データD20の書き込み要求を受け付けると、更新データD20から分散データD21、D22、D23を生成する。
そして、制御モジュール10aは、生成した分散データD21と分散データD22と分散データD23のXORを演算して分散データD21〜D23の冗長性を確保するパリティデータP21を生成する。生成された分散データD21、D22、D23およびパリティデータP21は、キャッシュメモリ104に保持される。
【0084】
分散データD21の“N1”は、符号“N”が「新規(New)データ」であることを示している。番号“1”は、本実施の形態において説明の便宜上割り当てた番号である。この番号“1”は、HDD21aのストライプST1を構成する記憶領域を更新対象とするデータであることを示している。分散データD22の“N2”は、HDD21bのストライプST1を構成する記憶領域を更新対象とするデータであることを示している。分散データD23の“N3”は、HDD21cのストライプST1を構成する記憶領域を更新対象とするデータであることを示している。すなわち、図3に示す分散データD21、D22、D23が更新対象データを構成している。また、パリティデータP21の“NP1”は、符号“NP”が、分散データD21、D22、D23から生成された「新規パリティ(New Parity)」であることを示す。番号“1”は、HDD21a〜21dそれぞれの記憶領域から構成されたストライプST1におけるパリティデータP11が記憶されている記憶領域を特定する情報である。
【0085】
Bandwidth Write方式では、制御モジュール10aは、生成した分散データD21、D22、D23およびパリティデータP21を、HDD21a〜21dそれぞれのストライプST1を構成する記憶領域に上書きする。具体的には、分散データD21をHDD21aのストライプST1を構成する記憶領域に上書きする。分散データD22をHDD21bのストライプST1を構成する記憶領域に上書きする。分散データD23をHDD21cのストライプST1を構成する記憶領域に上書きする。パリティデータP21をHDD21dのストライプST1を構成する記憶領域に上書きする。この上書き処理により、ストライプST1を構成する記憶領域の記憶内容が更新される。
【0086】
なお、分散データD11〜D13がキャッシュメモリ104に記憶されている場合には、制御モジュール10aは、ストライプST1を構成する記憶領域の記憶内容が更新された後に、次の処理を行う。制御モジュール10aは、キャッシュメモリ104に記憶されている分散データD11〜D13を分散データD21〜D23で更新する。
【0087】
<Read Bandwidth Write方式>
図4は、Read Bandwidth Write方式を説明する図である。
図4に示すHDD21a〜21dには、HDD21a〜21dの各記憶領域から構成されたストライプST2が設定されている。このストライプST2には、分散データD31、D32、D33、および分散データD31〜D33から生成された分散データD31〜D33の冗長性を確保するパリティデータP31が記憶されている。分散データD31の“O11”は、HDD21aのストライプST2を構成する記憶領域に記憶されているデータであることを示している。分散データD32の“O12”は、HDD21bのストライプST2を構成する記憶領域に記憶されているデータであることを示している。分散データD33の“O13”は、HDD21cのストライプST2を構成する記憶領域に記憶されているデータであることを示している。パリティデータP31の“OP2”は、HDD21dのストライプST2を構成する記憶領域に記憶されているパリティデータであることを示している。
【0088】
制御モジュール10aは、ホスト装置30からの更新データD40の書き込み要求を受け付けると、制御モジュール10aは、更新データD40から分散データD41、D42を生成する。分散データD41の“N11”は、HDD21bのストライプST2を構成する記憶領域を更新対象とするデータであることを示している。分散データD42の“N12”は、HDD21cのストライプST2を構成する記憶領域を更新対象とするデータであることを示している。すなわち、図4に示す分散データD32、D33が更新対象データを構成している。次に、制御モジュール10aは、HDD21a〜21dのストライプST2を構成する記憶領域のうち、更新対象ではない記憶領域に記憶されている分散データD31を読み出す。次に、制御モジュール10aは、生成した分散データD41、分散データD42と読み出した分散データD31のXORを演算して、分散データD41、D42、D31の冗長性を確保するパリティデータP41を生成する。
【0089】
次に、制御モジュール10aは、分散データD41、D42およびパリティデータP41を、HDD21a〜21dそれぞれの、ストライプST2を構成する記憶領域に上書きする。具体的には、分散データD41をHDD21bのストライプST2を構成する記憶領域に上書きする。分散データD42をHDD21cのストライプST2を構成する記憶領域に上書きする。パリティデータP41をHDD21dのストライプST2を構成する記憶領域に上書きする。この上書き処理により、ストライプST2を構成する記憶領域の記憶内容が更新される。
【0090】
なお、キャッシュメモリ104に分散データD31、D32が存在する場合には、制御モジュール10aは、ストライプST2を構成する記憶領域の記憶内容が更新された後に、次の処理を行う。制御モジュール10aは、キャッシュメモリ104に記憶されている分散データD31、D32を分散データD41、D42で更新する。
【0091】
<第1のSmall−Write方式>
図5は、第1のSmall−Write方式を説明する図である。
図5に示すHDD21a〜21dには、HDD21a〜21dを跨いでHDD21a〜21dの各記憶領域から構成されたストライプST3が設定されている。このストライプST3には、分散データD51、分散データD52、分散データD53および分散データD51〜D53の冗長性を確保するパリティデータP51が記憶されている。分散データD51の“O21”は、HDD21aのストライプST3を構成する記憶領域に記憶されているデータであることを示している。分散データD52の“O22”は、HDD21bのストライプST3を構成する記憶領域に記憶されているデータであることを示している。分散データD53の“O23”は、HDD21cのストライプST3を構成する記憶領域に記憶されているデータであることを示している。すなわち、図5に示す分散データD51が更新対象データを構成している。パリティデータP51の“OP3”は、HDD21dのストライプST2を構成する記憶領域に記憶されているパリティデータであることを示している。
【0092】
制御モジュール10aは、ホスト装置30からの更新データD60の書き込み要求を受け付けると、更新データD60から分散データD61を生成する。分散データD61の“N21”は、HDD21aのストライプST3を構成する記憶領域を更新対象とするデータであることを示している。次に、制御モジュール10aは、生成した分散データD61に対応するHDD21a、21dのストライプST3を構成する記憶領域に記憶されている分散データD51およびパリティデータP51を読み出す。次に、制御モジュール10aは、分散データD61と読み出した分散データD51とパリティデータP51とのXORを演算して、分散データD61、D52、D53の冗長性を確保するパリティデータP61を生成する。
【0093】
次に、制御モジュール10aは、分散データD61およびパリティデータP61を、HDD21a〜21dそれぞれの、ストライプST3を構成する記憶領域に上書きする。具体的には、分散データD61をHDD21aのストライプST3を構成する記憶領域に上書きする。パリティデータP61をHDD21dのストライプST3を構成する記憶領域に上書きする。この上書き処理により、ストライプST3を構成する記憶領域の記憶内容が更新される。
【0094】
なお、キャッシュメモリ104に分散データD51が存在する場合には、制御モジュール10aは、ストライプST3を構成する記憶領域の記憶内容が更新された後に、キャッシュメモリ104に記憶されている分散データD51を分散データD61で更新する。
【0095】
<第2のSmall−Write方式>
図6は、第2のSmall−Write方式を説明する図である。
図6に示すHDD21a〜21dには、HDD21a〜21dを跨いでHDD21a〜21dの各記憶領域から構成されたストライプST4が設定されている。このストライプST4には、分散データD71、D72、D73、および分散データD71〜D73の冗長性を確保するパリティデータP71が記憶されている。分散データD71の“O31”は、HDD21aのストライプST4を構成する記憶領域に記憶されているデータであることを示している。分散データD72の“O32”は、HDD21bのストライプST4を構成する記憶領域に記憶されているデータであることを示している。分散データD73の“O73”は、HDD21cのストライプST4を構成する記憶領域に記憶されているデータであることを示している。パリティデータP71の“OP4”は、HDD21dのストライプST4を構成する記憶領域に記憶されているパリティデータであることを示している。
【0096】
制御モジュール10aは、ホスト装置30からの更新データD80の書き込み要求を受け付けると、分散処理を行い、分散データD81、D82を生成する。分散データD81の“N31”は、HDD21aのストライプST4を構成する記憶領域を更新対象とするデータであることを示している。分散データD82の“N32”は、HDD21bのストライプST4を構成する記憶領域の一部を更新対象とするデータであり、分散データD82の“N32”以外のデータは0データであることを示している。すなわち、図6に示す分散データD71と分散データD72の一部が更新対象データを構成している。次に、制御モジュール10aは、生成した分散データD81、D82に対応するHDD21a、21dのストライプST3を構成する記憶領域に記憶されている分散データD71、D72aおよびパリティデータP71を読み出す。ここで、分散データD72aは、分散データD82が更新対象とする記憶領域に記憶されているデータである。次に、制御モジュール10aは、分散データD81、D82と読み出した分散データD71、D72aとパリティデータP71とのXORを演算して、分散データD81、D82a、D73の冗長性を確保するパリティデータP81を生成する。なお、分散データD82aは、分散データD72の一部を分散データD82で更新したデータである。
【0097】
次に、制御モジュール10aは、分散データD81、分散データD82およびパリティデータP81を、HDD21a〜21dそれぞれの、ストライプST4を構成する記憶領域に上書きする。具体的には、分散データD81をHDD21aのストライプST4を構成する記憶領域に上書きする。分散データD82をHDD21bのストライプST4を構成する記憶領域の、分散データD72aが記憶されていた領域に上書きする。なお、データO32bは、分散データD82により上書きされなかった領域に記憶されているデータである。パリティデータP81をHDD21dのストライプST4を構成する記憶領域に上書きする。この上書き処理により、ストライプST4を構成する記憶領域の記憶内容が更新される。
【0098】
なお、キャッシュメモリ104に分散データD71、D72aが存在する場合には、制御モジュール10aは、ストライプST4を構成する記憶領域の記憶内容が更新された後に、次の処理を行う。制御モジュール10aは、キャッシュメモリ104に記憶されている分散データD71、D72aを分散データD81、D82で更新する。
【0099】
次に、制御モジュール10a、10bが備える機能を説明する。制御モジュール10a、10bが備える機能は互いに等しいため、以下、一例として制御モジュール10aが備える機能を説明する。
【0100】
図7は、第2の実施の形態の制御モジュールの機能を示すブロック図である。
制御モジュール10aは、キャッシュ制御部111と、バッファ領域112と、RAID制御部113とを有している。キャッシュ制御部111と、RAID制御部113は、CPU101により実現可能な機能である。また、バッファ領域112は、RAM102の一領域により形成される領域である。また、キャッシュ制御部111は、受付部およびキャッシュ制御部の一例である。RAID制御部113は、書き込み制御部の一例である。
【0101】
キャッシュ制御部111は、受け取った更新データをキャッシュメモリ104に記憶する。そして、キャッシュ制御部111は、キャッシュメモリ104に記憶した更新データを解析する。解析した結果、受け取った更新データに対し通常のライトバック方式を用いた書き込みが指定されていると判断すると、キャッシュ制御部111は、通常のライトバック方式を用いた更新データの書き込みをRAID制御部113に通知する。
【0102】
また、更新データを解析した結果、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されていると判断すると、キャッシュ制御部111は、更新対象データが、キャッシュメモリ104に記憶されているか否かを判断する。
【0103】
他方、更新対象データが、キャッシュメモリ104に記憶されていれば、キャッシュ制御部111は、キャッシュメモリ104に記憶されている更新対象データと更新データとの一致を判断する。一致を判断する際に、キャッシュ制御部111は、更新対象データと更新データとを対比する対比用データを生成する。対比用データは、前述した3種類の書き込み方式により異なる。対比用データの詳細は、後述するフローチャートおよび具体例にて説明する。
【0104】
キャッシュ制御部111は、生成した対比用データを用いて更新対象データと更新データとの一致を判断する。そして、更新対象データと更新データとが一致すると判断した場合は、キャッシュ制御部111は、HDD21a〜21dへの更新データの書き込みを回避する。また、キャッシュ制御部111は、HDD20群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置30に返す。他方、キャッシュメモリ104に記憶されている更新対象データが、更新データと一致しないと判断した場合は、キャッシュ制御部111は、前述した3種類の書き込み方式を用いて、更新データを、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが正常に終了すると、キャッシュ制御部111は、HDD20群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置30に返す。
【0105】
バッファ領域112は、RAID制御部113がHDD21a〜21dから読み出したデータを一時的に保持する機能を有している。
RAID制御部113は、キャッシュ制御部111から通常のライトバック方式を用いた更新データの書き込み要求の受け取りが通知されると、処理の空き時間ができてからキャッシュメモリ104に記憶されている更新データをHDD21a〜21dに書き込む。
【0106】
また、RAID制御部113は、キャッシュ制御部111から差分ライトバック方式を用いた更新データの書き込み要求の受け取りが通知されると、以下の処理を行う。
RAID制御部113は、更新データとHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に記憶されている更新対象データとの一致を判断する。一致を判断する際に、RAID制御部113は、更新データと更新対象データとを対比する対比用データをHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域から読み出す。読み出す対比用データは、前述した3種類の書き込み方式により異なる。対比用データの詳細は、後述するフローチャートおよび具体例にて説明する。
【0107】
RAID制御部113は、読み出した対比用データをバッファ領域112に保持する。
RAID制御部113は、対比用データを用いてHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に記憶されている更新対象データと更新データとの一致を判断する。そして、更新対象データと更新データとが一致すると判断した場合は、RAID制御部113は、HDD21a〜21dへの更新データの書き込みを回避する。また、RAID制御部113は、HDD20群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置30に返す。
【0108】
他方、更新対象データと更新データとが一致しないと判断した場合は、RAID制御部113は、前述した3種類の書き込み方式を用いて、更新データを、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが正常に終了すると、RAID制御部113は、HDD20群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置30に返す。
【0109】
次に、制御モジュール10aのデータ書き込み処理を、フローチャートを用いて説明する。
図8は、制御モジュールのデータ書き込み処理を示すフローチャートである。制御モジュール10aは、ホスト装置30から更新データの書き込み要求を受け取る度に図8に示す処理を実行する。
【0110】
[ステップS1] 制御モジュール10aがホスト装置30から更新データの書き込み要求を受け取ると、キャッシュ制御部111は、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されているか否かを判断する。キャッシュ制御部111は、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されていると判断した場合(ステップS1のYes)、ステップS2に遷移する。キャッシュ制御部111は、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されていないと判断した場合(ステップS1のNo)、ステップS6に遷移する。
【0111】
[ステップS2] キャッシュ制御部111は、更新データを解析して分散データを生成する。そして、キャッシュ制御部111は、更新データの解析結果に基づいて、3種類の書き込み方式から生成した更新データの書き込み方式を選択する。このステップS2にて決定された書き込み方式は、後述するステップS4の第1の書き込み判断処理およびステップS5の第2の書き込み判断処理にて用いる。書き込み方式の選択が終了すると、ステップS3に遷移する。
【0112】
[ステップS3] キャッシュ制御部111は、更新対象データがキャッシュメモリ104に存在するか否かを判断する。更新対象データがキャッシュメモリ104に存在する場合(ステップS3のYes)、ステップS4に遷移する。更新対象データがキャッシュメモリ104に存在しない場合(ステップS3のNo)、ステップS5に遷移する。
【0113】
[ステップS4] ステップS3にてキャッシュ制御部111が、更新対象データがキャッシュメモリ104に存在すると判断した場合、キャッシュ制御部111は、第1の書き込み判断処理を行う。この第1の書き込み判断処理は、キャッシュ制御部111が、更新データがキャッシュメモリ104に存在するデータに一致するか否かを判断し、一致すれば更新データのHDD21a〜21dへの書き込みを回避する処理である。なお、本ステップS4にて、更新対象データとの対比に用いる対比用データは、前述した3種類の書き込み方式に応じて異なる。3種類の書き込み方式それぞれに応じた対比用データの準備方法は後に詳述する。第1の書き込み判断処理が終了すると、図8の処理を終了する。
【0114】
[ステップS5] ステップS3にてキャッシュ制御部111が、更新対象データがキャッシュメモリ104に存在しないと判断した場合、RAID制御部113が第2の書き込み判断処理を行う。この第2の書き込み判断処理は、RAID制御部113が、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に記憶されている更新対象データに更新データが一致するか否かを判断する。そして、一致すれば更新データのHDD21a〜21dへの書き込みを回避する処理である。本ステップS6にて更新対象データとの対比に用いる対比用データは、前述した3種類の書き込み方式に応じて異なる。3種類の書き込み方式それぞれに応じた対比用データの準備方法は後に詳述する。第2の書き込み判断処理が終了すると、図8の処理を終了する。
【0115】
[ステップS6] RAID制御部113は、更新データを解析する。そして、RAID制御部113は、更新データの解析結果に基づいて、3種類の書き込み方式から今回の更新データに対する書き込み方式を選択する。
【0116】
[ステップS7] RAID制御部113は、通常のライトバック方式を用いた書き込みを行う。具体的には、ホスト装置30から送られてきた更新データを、ステップS6にて選択した書き込み方式を用いてHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが正常に終了すると、RAID制御部113は、HDD20群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置30に返す。その後、図8の処理を終了する。
【0117】
以上で図8の処理の説明を終了する。
図8に示す制御モジュール10aのデータ書き込み処理では、ステップS1において、差分ライトバック方式の指定を受けた更新データについてのみステップS3以降の処理を行うようにした。差分ライトバック方式の指定を受けることにより、全てのデータについてステップS3以降の処理を行う場合に比べ、制御モジュール10aの処理負荷を軽減することができる。
【0118】
次に、ステップS4の第1の書き込み判断処理を説明する。前述したように、第1の書き込み判断処理では、ステップS2にてキャッシュ制御部111が3種類の書き込み方式のどの書き込み方式を選択したかにより異なる対比用データを準備する。まず、ステップS2にてキャッシュ制御部111がBandwidth Write方式を選択した場合の第1の書き込み判断処理(Bandwidth Write方式の第1の書き込み判断処理)を説明する。
【0119】
<Bandwidth Write方式の第1の書き込み判断処理>
図9は、Bandwidth Write方式の第1の書き込み判断処理を示すフローチャートである。
【0120】
[ステップS11] キャッシュ制御部111は、更新データから生成した分散データそれぞれのXORを演算することにより、更新データから生成した分散データの冗長性を確保するパリティデータを生成する。なお、本ステップS11にて生成したパリティデータは、キャッシュ制御部が生成した第2の冗長情報の一例である。キャッシュ制御部111は、生成したパリティデータをキャッシュメモリ104に保持する。その後、ステップS12に遷移する。
【0121】
[ステップS12] キャッシュ制御部111は、キャッシュメモリ104に既存の、更新対象データを構成する分散データそれぞれのXORを演算することにより、キャッシュメモリ104に既存の、更新対象データを構成する分散データの冗長性を確保するパリティデータを生成する。なお、本ステップS12にて生成したパリティデータは、キャッシュ制御部が生成した第1の冗長情報の一例である。キャッシュ制御部111は、生成したパリティデータをキャッシュメモリ104に保持する。その後、ステップS13に遷移する。
【0122】
[ステップS13] キャッシュ制御部111は、ステップS11にて生成したパリティデータを、ステップS12にて生成したパリティデータと対比する。その後、ステップS14に遷移する。
【0123】
[ステップS14] キャッシュ制御部111は、ステップS13の対比の結果、ステップS11にて生成したパリティデータが、ステップS12にて生成したパリティデータに一致するか否かを判断する。ステップS11にて生成したパリティデータが、ステップS12にて生成したパリティデータに一致する場合(ステップS14のYes)、ステップS16に遷移する。ステップS11にて生成したパリティデータが、ステップS12にて生成したパリティデータに一致しない場合(ステップS14のNo)、ステップS15に遷移する。
【0124】
[ステップS15] キャッシュ制御部111は、更新データから生成した分散データとステップS12にて生成したパリティデータを、Bandwidth Write方式を用いてHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップS16に遷移する。
【0125】
[ステップS16] キャッシュ制御部111は、HDD20群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置30に返す。その後、第1の書き込み判断処理を終了する。
【0126】
以上で図9に示す処理の説明を終了する。なお、ステップS11、S12の処理の順番は、前述した順番に限定されない、すなわち、ステップS12の処理をステップS11よりも先に行ってもよい。すなわち、先にキャッシュメモリ104に既存の、更新対象データを構成する分散データからパリティデータを作成し、作成したパリティデータをキャッシュメモリ104に記憶する。その後、更新データからパリティデータを生成する。そして、更新データから生成した分散データで、キャッシュメモリ104に既存の、更新対象データを構成する分散データを上書きする。その後、パリティデータ同士を比較する。この処理順で処理を行えば、図9に示す処理にて使用するキャッシュメモリ104の記憶領域を少なくすることができる。
【0127】
図9に示す処理では、ステップS14にて対比したデータが一致すれば、HDD21a〜21dに書き込みを行わずに書き込み完了応答をホスト装置30に返すようにした。これは、ステップS14にて対比したデータが一致すれば、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に記憶されているデータは、更新データと同じデータであると判断することができるからである。
【0128】
次に、ステップS2にてキャッシュ制御部111がRead Bandwidth Write方式を選択した場合の第1の書き込み判断処理(Read Bandwidth Write方式の第1の書き込み判断処理)を説明する。
【0129】
<Read Bandwidth Write方式の第1の書き込み判断処理>
図10は、Read Bandwidth Write方式の第1の書き込み判断処理を示すフローチャートである。
【0130】
[ステップS21] キャッシュ制御部111は、更新データから生成した分散データそれぞれのXORを演算することにより、更新データから生成した分散データの冗長性を確保する冗長データを生成する。なお、本ステップS21にて生成した冗長データは、キャッシュ制御部が生成した第2の冗長情報の一例である。ここで冗長データは、複数の分散データから生成した分散データの冗長性を確保するデータであるが、パリティデータとは異なり、HDD21a〜21dの故障時に故障したHDDのデータを再生成する機能は有していない。以下の説明では、パリティデータと冗長データを区別して使用している。キャッシュ制御部111は、生成した冗長データをキャッシュメモリ104に保持する。その後、ステップS22に遷移する。
【0131】
[ステップS22] キャッシュ制御部111は、キャッシュメモリ104に既存の、更新対象データを構成する分散データそれぞれのXORを演算することにより、キャッシュメモリ104に既存の、更新対象データを構成する分散データの冗長性を確保する冗長データを生成する。なお、本ステップS22にて生成した冗長データは、キャッシュ制御部が生成した第1の冗長情報の一例である。キャッシュ制御部111は、生成した冗長データをキャッシュメモリ104に保持する。その後、ステップS23に遷移する。
【0132】
[ステップS23] キャッシュ制御部111は、ステップS21にて生成した冗長データを、ステップS22にて生成した冗長データと対比する。その後、ステップS24に遷移する。
【0133】
[ステップS24] キャッシュ制御部111は、ステップS23の対比の結果、ステップS21にて生成した冗長データが、ステップS22にて生成した冗長データに一致するか否かを判断する。ステップS21にて生成した冗長データが、ステップS22にて生成した冗長データに一致する場合(ステップS24のYes)、ステップS26に遷移する。ステップS21にて生成した冗長データが、ステップS22にて生成した冗長データに一致しない場合(ステップS24のNo)、ステップS25に遷移する。
【0134】
[ステップS25] キャッシュ制御部111は、更新データから生成した分散データとステップS22にて生成した冗長データを、Read Bandwidth Write方式を用いてHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップS26に遷移する。
【0135】
[ステップS26] キャッシュ制御部111は、更新データをHDD20に正常に書き込むことができたことを示す書き込み完了応答をホスト装置30に返す。その後、第1の書き込み判断処理を終了する。
【0136】
以上で図10に示す処理の説明を終了する。なお、ステップS21、S22の処理の順番は、前述した順番に限定されない、すなわち、ステップS22の処理をステップS21よりも先に行ってもよい。すなわち、先にキャッシュメモリ104に既存の、更新対象データを構成する分散データから冗長データを作成し、作成した冗長データをキャッシュメモリ104に記憶する。その後、更新データから冗長データを生成する。そして、更新データから生成した分散データで、キャッシュメモリ104に既存の、更新対象データを構成する分散データを上書きする。その後、冗長データ同士を比較する。この処理順で処理を行えば、図10に示す処理にて使用するキャッシュメモリ104の記憶領域を少なくすることができる。
【0137】
図10に示す処理では、ステップS24にて対比したデータが一致すれば、HDD21a〜21dに書き込みを行わずに書き込み完了応答をホスト装置30に返すようにした。これは、ステップS24にて対比したデータが一致すれば、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に記憶されているデータは、更新データと同じデータであると判断することができるからである。
【0138】
次に、ステップS2にてキャッシュ制御部111が第1のSmall−Write方式を選択した場合の第1の書き込み判断処理(第1のSmall−Write方式の第1の書き込み判断処理)を説明する。
【0139】
<第1のSmall−Write方式の第1の書き込み判断処理>
図11は、第1のSmall−Write方式の第1の書き込み判断処理を示すフローチャートである。
【0140】
[ステップS31] キャッシュ制御部111は、更新データから生成した分散データを、キャッシュメモリ104に既存の、更新対象データを構成する分散データと対比する。その後、ステップS32に遷移する。
【0141】
[ステップS32] キャッシュ制御部111は、ステップS31の対比の結果、更新データから生成した分散データが、キャッシュメモリ104に既存の、更新対象データを構成する分散データに一致するか否かを判断する。更新データから生成した分散データが、キャッシュメモリ104に既存の、更新対象データを構成する分散データに一致する場合(ステップS32のYes)、ステップS34に遷移する。更新データから生成した分散データが、キャッシュメモリ104に既存の、更新対象データを構成する分散データに一致しない場合(ステップS32のNo)、ステップS33に遷移する。
【0142】
[ステップS33] キャッシュ制御部111は、更新データから生成した分散データを、第1のSmall−Write方式を用いてHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップS34に遷移する。
【0143】
[ステップS34] キャッシュ制御部111は、HDD20に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置30に返す。その後、第1の書き込み判断処理を終了する。
【0144】
以上で図11に示す処理の説明を終了する。
次に、ステップS2にてキャッシュ制御部111が第2のSmall−Write方式を選択した場合の第1の書き込み判断処理(第2のSmall−Write方式の第1の書き込み判断処理)を説明する。
【0145】
<第2のSmall−Write方式の第1の書き込み判断処理>
図12は、第2のSmall−Write方式の第1の書き込み判断処理を示すフローチャートである。
【0146】
[ステップS41] キャッシュ制御部111は、更新データから生成した分散データそれぞれのXORを演算することにより、更新データから生成した分散データの冗長性を確保する冗長データを生成する。なお、本ステップS41にて生成した冗長データは、キャッシュ制御部が生成した第2の冗長情報の一例である。なお、キャッシュ制御部111は、XORを演算する際、一部の領域にのみ更新データが存在する分散データは、更新データが存在しない領域は空データ(0データ)で埋め合わせをする。キャッシュ制御部111は、生成した冗長データをキャッシュメモリ104に保持する。その後、ステップS42に遷移する。
【0147】
[ステップS42] キャッシュ制御部111は、キャッシュメモリ104に既存の、更新対象データを構成する分散データそれぞれのXORを演算することにより、キャッシュメモリ104に既存の、更新対象データを構成する分散データの冗長性を確保する冗長データを生成する。なお、本ステップS42にて生成した冗長データは、キャッシュ制御部が生成した第1の冗長情報の一例である。キャッシュ制御部111は、生成した冗長データをキャッシュメモリ104に保持する。その後、ステップS43に遷移する。
【0148】
[ステップS43] キャッシュ制御部111は、ステップS41にて生成した冗長データを、ステップS42にて生成した冗長データと対比する。その後、ステップS44に遷移する。
【0149】
[ステップS44] キャッシュ制御部111は、ステップS43の対比の結果、ステップS41にて生成した冗長データが、ステップS42にて生成した冗長データに一致するか否かを判断する。ステップS41にて生成した冗長データが、ステップS42にて生成した冗長データに一致する場合(ステップS44のYes)、ステップS46に遷移する。ステップS41にて生成した冗長データが、ステップS42にて生成した冗長データに一致しない場合(ステップS44のNo)、ステップS45に遷移する。
【0150】
[ステップS45] キャッシュ制御部111は、更新データから生成した分散データを、第2のSmall−Write方式を用いてHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップS46に遷移する。
【0151】
[ステップS46] キャッシュ制御部111は、HDD20に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置30に返す。その後、第1の書き込み判断処理を終了する。
【0152】
以上で図12に示す処理の説明を終了する。なお、ステップS41、S42の処理の順番は、前述した順番に限定されない、すなわち、ステップS42の処理をステップS41よりも先に行ってもよい。すなわち、先にキャッシュメモリ104に既存の、更新対象データを構成する分散データから冗長データを作成し、作成した冗長データをキャッシュメモリ104に記憶する。その後、更新データから冗長データを生成する。そして、更新データから生成した分散データで、キャッシュメモリ104に既存の、更新対象データを構成する分散データを上書きする。その後、冗長データ同士を比較する。この処理順で処理を行えば、図12に示す処理にて使用するキャッシュメモリ104の記憶領域を少なくすることができる。
【0153】
図12に示す処理では、ステップS44にて対比したデータが一致すれば、HDD21a〜21dに書き込みを行わずに書き込み完了応答をホスト装置30に返すようにした。これは、ステップS44にて対比したデータが一致すれば、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に記憶されているデータは、更新データと同じデータであると判断することができるからである。
【0154】
次に、ステップS5の第2の書き込み判断処理を説明する。
まず、ステップS2にてキャッシュ制御部111がBandwidth Write方式を選択した場合の第2の書き込み判断処理(Bandwidth Write方式の第2の書き込み判断処理)を説明する。
【0155】
第2の書き込み判断処理では、制御モジュール10aが前述した3種類の書き込み方式のどの書き込み方式を選択したかにより異なる対比用データを準備する。
以下、Bandwidth Write方式の第2の書き込み判断処理を説明する。
【0156】
<Bandwidth Write方式の第2の書き込み判断処理>
図13は、Bandwidth Write方式の第2の書き込み判断処理を説明するフローチャートである。
【0157】
[ステップS51] RAID制御部113は、図8のステップS2にてキャッシュ制御部111が生成した分散データそれぞれのXORを演算することにより、更新データから生成した分散データの冗長性を確保するパリティデータを生成する。なお、本ステップS51にて生成したパリティデータは、書き込み制御部が生成した第2の冗長情報の一例である。生成したパリティデータは、キャッシュメモリ104に保持する。その後、ステップS52に遷移する。
【0158】
[ステップS52] RAID制御部113は、HDD21a〜21dそれぞれの更新対象のストライプを構成する記憶領域のいずれかからパリティデータを読み出す。なお、本ステップS52にて読み出したパリティデータは、記憶媒体に予め記憶されている第1の冗長情報の一例である。そして、読み出したパリティデータをバッファ領域112に保持する。その後、ステップS53に遷移する。
【0159】
[ステップS53] RAID制御部113は、ステップS51にて生成したパリティデータを、ステップS52にて読み出したパリティデータと対比する。その後、ステップS54に遷移する。
【0160】
[ステップS54] RAID制御部113は、ステップS53の対比の結果、ステップS51にて生成したパリティデータが、ステップS52にて読み出したパリティデータに一致するか否かを判断する。ステップS51にて生成したパリティデータが、ステップS52にて読み出したパリティデータに一致する場合(ステップS54のYes)、ステップS56に遷移する。ステップS51にて生成したパリティデータが、ステップS52にて読み出したパリティデータに一致しない場合(ステップS54のNo)、ステップS55に遷移する。
【0161】
[ステップS55] RAID制御部113は、更新データから生成された分散データとステップS51にて生成したパリティデータを、Bandwidth Write方式を用いてHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップS56に遷移する。
【0162】
[ステップS56] RAID制御部113は、HDD20群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置30に返す。その後、第2の書き込み判断処理を終了する。
【0163】
以上で図13に示す処理の説明を終了する。なお、ステップS51、S52の処理の順番は、前述した順番に限定されない、すなわち、ステップS52の処理をステップS51よりも先に行ってもよい。
【0164】
図13に示す処理では、ステップS51にて生成したパリティデータが、ステップS52にて読み出したパリティデータに一致した場合には、ステップS56のように、HDD20群に書き込みを行わずに書き込み完了応答をホスト装置30に返すようにした。これは、ステップS54にて対比したデータが一致すれば、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に記憶されているデータは、更新データと同じと判断することができるからである。
【0165】
次に、ステップS2にてキャッシュ制御部111がRead Bandwidth Write方式を選択した場合の第2の書き込み判断処理(Read Bandwidth Write方式の第2の書き込み判断処理)を説明する。
【0166】
<Read Bandwidth Write方式の第2の書き込み判断処理>
図14は、Read Bandwidth Write方式の第2の書き込み判断処理を示すフローチャートである。
【0167】
[ステップS61] RAID制御部113は、HDD21a〜21dそれぞれの更新対象のストライプを構成する記憶領域のうち、更新対象ではない記憶領域に記憶されている分散データを読み出す。なお、本ステップS61にて読み出した分散データは、書き込み制御部が読み出した更新対象ではない第1の分散情報の一例である。更新対象ではない記憶領域の識別は、ステップS2にてキャッシュ制御部111が更新データを解析した結果を用いて行うことができる。なお、RAID制御部113が、更新データを解析して更新対象ではない記憶領域を識別してもよい。RAID制御部113は、読み出した分散データをキャッシュメモリ104に保持する。また、RAID制御部113は、HDD21a〜21dそれぞれの更新対象のストライプを構成する記憶領域に記憶されているパリティデータを読み出す。なお、本ステップS61にて読み出したパリティデータは、複数の記憶媒体に予め記憶されている第1の冗長情報の一例である。また、RAID制御部113は、読み出したパリティデータをバッファ領域112に保持する。その後、ステップS62に遷移する。
【0168】
[ステップS62] RAID制御部113は、更新データから生成した分散データと、ステップS61にて読み出した分散データとのXORを演算することにより、生成した分散データと読み出した分散データとの冗長性を確保するパリティデータを生成する。なお、本ステップS62にて生成したパリティデータは、書き込み制御部が生成した第1の冗長情報の一例である。RAID制御部113は、生成したパリティデータをキャッシュメモリ104に保持する。その後、ステップS63に遷移する。
【0169】
[ステップS63] RAID制御部113は、ステップS62にて生成したパリティデータを、ステップS61にて読み出したパリティデータと対比する。その後、ステップS64に遷移する。
【0170】
[ステップS64] RAID制御部113は、ステップS63の対比の結果、ステップS62にて生成したパリティデータが、ステップS61にて読み出したパリティデータに一致するか否かを判断する。ステップS62にて生成したパリティデータが、ステップS61にて読み出したパリティデータに一致する場合(ステップS64のYes)、ステップS66に遷移する。ステップS62にて生成したパリティデータが、ステップS61にて読み出したパリティデータに一致しない場合(ステップS64のNo)、ステップS65に遷移する。
【0171】
[ステップS65] RAID制御部113は、更新データから生成した分散データとステップS62にて生成したパリティデータをHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込む際には、Read Bandwidth Write方式を用いる。書き込みが終了すると、ステップS66に遷移する。
【0172】
[ステップS66] RAID制御部113は、HDD20群に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置30に返す。その後、第2の書き込み判断処理を終了する。
【0173】
以上で図14に示す処理の説明を終了する。なお、ステップS61、S62の処理の順番は、前述した順番に限定されない、すなわち、ステップS62の処理をステップS61よりも先に行ってもよい。
【0174】
図14に示す処理では、ステップS64にて対比したデータが一致すれば、HDD21a〜21dに書き込みを行わずに書き込み完了応答をホスト装置30に返すようにした。これは、ステップS64にて対比したデータが一致すれば、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に記憶されているデータは、更新データと同じデータであると判断することができるからである。
【0175】
次に、ステップS2にてキャッシュ制御部111が第1のSmall−Write方式を選択した場合の第2の書き込み判断処理(第1のSmall−Write方式の第2の書き込み判断処理)を説明する。
【0176】
<第1のSmall−Write方式の第2の書き込み判断処理>
図15は、第1のSmall−Write方式の第2の書き込み判断処理を示すフローチャートである。
【0177】
[ステップS71] RAID制御部113は、HDD21a〜21dそれぞれの更新対象のストライプを構成する記憶領域から、更新対象データを構成する分散データを読み出す。RAID制御部113は、読み出した分散データをバッファ領域112に保持する。その後、ステップS72に遷移する。
【0178】
[ステップS72] RAID制御部113は、更新データから生成した分散データを、ステップS71にて読み出した分散データと対比する。その後、ステップS73に遷移する。
【0179】
[ステップS73] RAID制御部113は、ステップS72の対比の結果、更新データから生成した分散データが、ステップS71にて読み出した分散データに一致するか否かを判断する。更新データから生成した分散データが、ステップS71にて読み出した分散データに一致する場合(ステップS73のYes)、ステップS75に遷移する。更新データから生成した分散データが、ステップS71にて読み出した分散データに一致しない場合(ステップS73のNo)、ステップS74に遷移する。
【0180】
[ステップS74] キャッシュ制御部111は、更新データから生成した分散データを、第1のSmall−Write方式を用いてHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップS75に遷移する。
【0181】
[ステップS75] キャッシュ制御部111は、HDD20に正常に更新データを書き込むことができたことを示す書き込み完了応答をホスト装置30に返す。その後、第2の書き込み判断処理を終了する。
【0182】
以上で図15に示す処理の説明を終了する。
次に、ステップS2にてキャッシュ制御部111が第2のSmall−Write方式を選択した場合の第2の書き込み判断処理(第2のSmall−Write方式の第2の書き込み判断処理)を説明する。
【0183】
<第2のSmall−Write方式の第2の書き込み判断処理>
図16は、第2のSmall−Write方式の第2の書き込み判断処理を示すフローチャートである。
【0184】
[ステップS81] RAID制御部113は、更新データから生成した分散データそれぞれのXORを演算することにより、更新データから生成した分散データの冗長性を確保する冗長データを生成する。なお、RAID制御部113は、XORを演算する際、一部の領域にのみ更新データが存在する分散データは、更新データが存在しない領域(例えば、後述する図24のデータD232b)は空データ(0データ)で埋め合わせをする。RAID制御部113は、生成した冗長データをキャッシュメモリ104に保持する。その後、ステップS82に遷移する。
【0185】
[ステップS82] RAID制御部113は、HDD21a〜21dそれぞれの更新対象のストライプを構成する記憶領域から、更新対象データを構成する分散データを読み出す。RAID制御部113は、読み出した分散データをバッファ領域112に保持する。その後、ステップS83に遷移する。
【0186】
[ステップS83] RAID制御部113は、ステップS82にて読み出した分散データそれぞれのXORを演算することにより、更新対象データを構成する分散データの冗長性を確保する冗長データを生成する。その後、ステップS84に遷移する。
【0187】
[ステップS84] RAID制御部113は、ステップS81にて生成した冗長データを、ステップS83にて生成した冗長データと対比する。その後、ステップS85に遷移する。
【0188】
[ステップS85] RAID制御部113は、ステップS84の対比の結果、ステップS81にて生成した冗長データが、ステップS83にて生成した冗長データに一致するか否かを判断する。ステップS81にて生成した冗長データが、ステップS83にて生成した冗長データに一致する場合(ステップS85のYes)、ステップS87に遷移する。ステップS81にて生成した冗長データが、ステップS83にて生成した冗長データに一致しない場合(ステップS85のNo)、ステップS86に遷移する。
【0189】
[ステップS86] RAID制御部113は、更新データから生成した分散データを、第2のSmall−Write方式を用いてHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込む。書き込みが終了すると、ステップS87に遷移する。
【0190】
[ステップS87] RAID制御部113は、更新データをHDD20に正常に書き込むことができたことを示す書き込み完了応答をホスト装置30に返す。その後、第2の書き込み判断処理を終了する。
【0191】
以上で、図16に示す処理の説明を終了する。
以下、各方式での第1の書き込み判断処理および第2の書き込み判断処理を、具体例を用いて説明する。具体例では、RAID5(3+1)を例に説明する。
<Bandwidth Write方式の第1の書き込み判断処理の具体例>
図17は、Bandwidth Write方式の第1の書き込み判断処理の具体例を説明する図である。
【0192】
図17に示すHDD21a〜21dには、HDD21a〜21dを跨いでHDD21a〜21dそれぞれの記憶領域から構成されたストライプST5が設定されている。HDD21a〜21dそれぞれの、ストライプST5を構成する記憶領域には、分散データD101、D102、D103および分散データD101〜D103の冗長性を確保するパリティデータP101が記憶されている。
【0193】
キャッシュメモリ104に存在する分散データD91、D92、D93は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部111が1ストライプ分の更新データD90から生成したデータである。
【0194】
キャッシュメモリ104に存在する分散データD101、D102、D103は、それぞれ分散データD91、D92、D93の更新対象データである。これらの分散データD101、D102、D103は、キャッシュ制御部111が第1の書き込み判断処理を行う時点でキャッシュメモリ104に既存のデータである。
【0195】
キャッシュ制御部111は、更新データから生成した分散データD91、D92、D93のXORを演算することにより、パリティデータP91を生成する。キャッシュ制御部111は、生成したパリティデータP91をキャッシュメモリ104に保持する。また、キャッシュ制御部111は、キャッシュメモリ104に既存の分散データD101、D102、D103のXORを演算することにより、キャッシュメモリ104に既存の分散データの冗長性を確保するパリティデータP81を生成する。キャッシュ制御部111は、生成したパリティデータP81をキャッシュメモリ104に保持する。その後、キャッシュ制御部111は、パリティデータP71がパリティデータP81に一致するか否かを判断する。パリティデータP71がパリティデータP81に一致する場合、キャッシュ制御部111は、分散データD91、D92、D93の、ストライプST5を構成するHDD21a〜21dそれぞれの記憶領域への書き込みを回避する。他方、パリティデータP71がパリティデータP81に一致しない場合、キャッシュ制御部111は、Bandwidth Write方式を用いて分散データD91、D92、D93およびパリティデータP71を、HDD21a〜21dそれぞれの、ストライプST5を構成する記憶領域に書き込む。なお、Bandwidth Write方式を用いた更新データの書き込み方法については、図3にて説明したため、詳細な説明を省略する。
<Read Bandwidth Write方式の第1の書き込み判断処理の具体例>
図18は、Read Bandwidth Write方式の第1の書き込み判断処理の具体例を説明する図である。
【0196】
図18に示すHDD21a〜21dには、HDD21a〜21dを跨いでHDD21a〜21dそれぞれの記憶領域から構成されたストライプST6が設定されている。HDD21a〜21dそれぞれの、ストライプST6を構成する記憶領域には、分散データD121、D122、D123および分散データD121〜D123の冗長性を確保するパリティデータP121が記憶されている。
【0197】
キャッシュメモリ104に存在する分散データD111、D112は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部111が更新データD110から生成したデータである。また、キャッシュメモリ104に存在する分散データD121、D122は、それぞれ分散データD111、D112の更新対象データを構成する。これらの分散データD121、D122は、キャッシュ制御部111が第1の書き込み判断処理を行う時点でキャッシュメモリ104に既存のデータである。
【0198】
キャッシュ制御部111は、更新データから生成した分散データD111、D112のXORを演算することにより、分散データD111、D112の冗長性を確保する冗長データR111を生成する。キャッシュ制御部111は、生成した冗長データR111をキャッシュメモリ104に保持する。また、キャッシュ制御部111は、キャッシュメモリ104に既存の分散データD121、D122のXORを演算することにより、キャッシュメモリ104に既存の分散データD121、D122の冗長性を確保する冗長データR121を生成する。キャッシュ制御部111は、生成した冗長データR121をキャッシュメモリ104に保持する。
【0199】
その後、キャッシュ制御部111は、冗長データR111が冗長データR121に一致するか否かを判断する。冗長データR111が冗長データR121に一致する場合、キャッシュ制御部111は、分散データD111、D112のHDD21a、21bそれぞれの、ストライプST6を構成する記憶領域への書き込みを回避する。他方、冗長データR111が冗長データR121に一致しない場合、キャッシュ制御部111は、Read Bandwidth Write方式を用いて分散データD111、D112のHDD21a、21b、21dそれぞれの、ストライプST6を構成する記憶領域への書き込みを行う。なお、Read Bandwidth Write方式を用いた更新データの書き込み方法については、図4にて説明したため、詳細な説明を省略する。
【0200】
<第1のSmall−Write方式の第1の書き込み判断処理の具体例>
図19は、第1のSmall−Write方式の第1の書き込み判断処理の具体例を説明する図である。
【0201】
図19に示すHDD21a〜21dには、HDD21a〜21dを跨いでHDD21a〜21dそれぞれの記憶領域から構成されたストライプST7が設定されている。HDD21a〜21dそれぞれの、ストライプST7を構成する記憶領域には、分散データD141、D142、D143および分散データD141〜D143の冗長性を確保するパリティデータP141が記憶されている。
【0202】
キャッシュメモリ104に存在する分散データD131は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部111が更新データD130から生成したデータである。また、キャッシュメモリ104に存在する分散データD141は、分散データD131の更新対象データを構成する。この分散データD141は、キャッシュ制御部111が第1の書き込み判断処理を行う時点でキャッシュメモリ104に既存のデータである。
【0203】
キャッシュ制御部111は、更新データから生成した分散データD131がキャッシュメモリ104に既存の分散データD141に一致するか否かを判断する。分散データD131が分散データD141に一致する場合、キャッシュ制御部111は、分散データD131の、HDD21aの、ストライプST7を構成する記憶領域への書き込みを回避する。他方、分散データD131が分散データD141に一致しない場合、キャッシュ制御部111は、第1のSmall−Write方式を用いて分散データD131のHDD21a、21dそれぞれの、ストライプST7を構成する記憶領域への書き込みを行う。なお、第1のSmall−Write方式を用いた更新データの書き込み方法については、図5にて説明したため、詳細な説明を省略する。
【0204】
<第2のSmall−Write方式の第1の書き込み判断処理の具体例>
図20は、第2のSmall−Write方式の第1の書き込み判断処理の具体例を説明する図である。
【0205】
図20に示すHDD21a〜21dには、HDD21a〜21dを跨いでHDD21a〜21dそれぞれの記憶領域から構成されたストライプST8が設定されている。HDD21a〜21dそれぞれの、ストライプST8を構成する記憶領域には、分散データD161、D162、D163および分散データD161〜D163の冗長性を確保するパリティデータP161が記憶されている。
【0206】
キャッシュメモリ104に存在する分散データD151、D152は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部111が更新データD150から生成したデータである。ここで、分散データD152は、分散データD162の一部を更新対象とするデータD152aと、全てのビットが“0”であるデータD152bとで構成されている。
【0207】
キャッシュメモリ104に存在する分散データD161およびデータD162aは、分散データD151およびデータD152aの更新対象データを構成する。ここで、データD162aは、分散データD162の一部を構成するデータである。
【0208】
キャッシュ制御部111は、更新データから生成した分散データD151および分散データD152のXORを演算することにより、分散データD151、D152の冗長性を確保する冗長データR151を生成する。キャッシュ制御部111は、生成した冗長データR151をキャッシュメモリ104に保持する。また、キャッシュ制御部111は、キャッシュメモリ104に既存の分散データD161およびデータD162aのXORを演算することにより、既存の分散データD161およびデータD162aの冗長性を確保する冗長データR161を生成する。キャッシュ制御部111は、生成した冗長データR161をキャッシュメモリ104に保持する。
【0209】
その後、キャッシュ制御部111は、冗長データR151が冗長データR161に一致するか否かを判断する。冗長データR151が冗長データR161に一致する場合、キャッシュ制御部111は、分散データD151およびデータD152aのHDD21a〜21dそれぞれの、ストライプST8を構成する記憶領域への書き込みを回避する。他方、冗長データR151が冗長データR161に一致しない場合、キャッシュ制御部111は、分散データD151およびデータD152aのHDD21a〜21dそれぞれの、ストライプST8を構成する記憶領域への書き込みを行う。なお、第2のSmall−Write方式を用いた更新データの書き込み方法については、図6にて説明したため、詳細な説明を省略する。
【0210】
<Bandwidth Write方式の第2の書き込み判断処理の具体例>
図21は、Bandwidth Write方式の第2の書き込み判断処理の具体例を説明する図である。
【0211】
キャッシュメモリ104に存在する分散データD171、D172、D173は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部111が1ストライプ分の更新データD170から生成したデータである。
【0212】
図21に示すHDD21a〜21dには、HDD21a〜21dを跨いでHDD21a〜21dそれぞれの記憶領域から構成されたストライプST9が設定されている。このストライプST9を構成する各記憶領域には、それぞれ分散データD181、D182、D183、および分散データD181〜D183の冗長性を確保するパリティデータP181が記憶されている。分散データD181、D182、D183は、それぞれ分散データD171、D172、D173の更新対象データを構成する。
【0213】
RAID制御部113は、更新データから生成した分散データD171、D172、D173のXORを演算することにより、分散データD171、D172、D173のパリティデータP171を生成する。RAID制御部113は、生成したパリティデータP171をキャッシュメモリ104に保持する。次に、RAID制御部113は、パリティデータP181を読み出し、バッファ領域112に保持する。次に、RAID制御部113は、生成したパリティデータP171がバッファ領域112に保持されているパリティデータP181に一致するか否かを判断する。パリティデータP171がパリティデータP181に一致する場合、RAID制御部113は、分散データD171、D172、D173の、ストライプST9を構成するHDD21a〜21dそれぞれの記憶領域への書き込みを回避する。他方、パリティデータP171がパリティデータP181に一致しない場合、RAID制御部113は、Bandwidth Write方式を用いて分散データD171、D172、D173およびパリティデータP171を、HDD21a〜21dそれぞれの、ストライプST9を構成する記憶領域に書き込む。なお、Bandwidth Write方式を用いた更新データの書き込み方法については、図3にて説明したため、詳細な説明を省略する。
【0214】
<Read Bandwidth Write方式の第2の書き込み判断処理の具体例>
図22は、Read Bandwidth Write方式の第2の書き込み判断処理の具体例を説明する図である。
【0215】
キャッシュメモリ104に存在する分散データD191、D192は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部111が更新データD190から生成したデータである。
【0216】
図22に示すHDD21a〜21dには、HDD21a〜21dを跨いでHDD21a〜21dそれぞれの記憶領域から構成されたストライプST10が設定されている。このストライプST10を構成する各記憶領域には、それぞれ分散データD201、D202、D203、および分散データD201〜D203の冗長性を確保するパリティデータP201が記憶されている。分散データD201、D202は、それぞれ分散データD191、D192の更新対象データを構成する。
【0217】
RAID制御部113は、HDD21cから分散データD203を読み出し、キャッシュメモリ104に保持する。また、RAID制御部113は、HDD21dからパリティデータP201を読み出し、バッファ領域112に保持する。次に、RAID制御部113は、更新データから生成した分散データD191、D192およびHDD21cから読み出した分散データD203のXORを演算することにより、分散データD191、D192、D203の冗長性を確保するパリティデータP191を生成する。RAID制御部113は、生成したパリティデータP191をキャッシュメモリ104に保持する。
【0218】
次に、RAID制御部113は、生成したパリティデータP191が、バッファ領域112に保持されているパリティデータP201に一致するか否かを判断する。パリティデータP191がパリティデータP201に一致する場合、RAID制御部113は、分散データD191、D192の、ストライプST10を構成するHDD21a〜21dそれぞれの記憶領域への書き込みを回避する。他方、パリティデータP191がパリティデータP201に一致しない場合、RAID制御部113は、次の処理を行う。RAID制御部113は、Read Bandwidth Write方式を用いて分散データD191、D192およびパリティデータP191を、HDD21a〜21dそれぞれのストライプST10を構成する記憶領域に書き込む。なお、Read Bandwidth Write方式を用いた更新データの書き込み方法については、図4にて説明したため、詳細な説明を省略する。
【0219】
<第1のSmall Write方式の第2の書き込み判断処理の具体例>
図23は、第1のSmall−Write方式の第2の書き込み判断処理の具体例を説明する図である。
【0220】
キャッシュメモリ104に存在する分散データD211は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部111が更新データD210から生成したデータである。
【0221】
図23に示すHDD21a〜21dには、HDD21a〜21dを跨いでHDD21a〜21dそれぞれの記憶領域から構成されたストライプST11が設定されている。このストライプST11を構成する各記憶領域には、それぞれ分散データD221、D222、D223、および分散データD221〜D223の冗長性を確保するパリティデータP221が記憶されている。分散データD221は、分散データD211の更新対象データを構成する。
【0222】
RAID制御部113は、分散データD211が更新対象とするHDD21aの更新対象のストライプST11を構成する記憶領域に記憶されている分散データD221を読み出す。RAID制御部113は、読み出した分散データD221をバッファ領域112に保持する。次に、RAID制御部113は、更新データから生成した分散データD211がバッファ領域112に保持にする分散データD221に一致するか否かを判断する。分散データD211が分散データD221に一致する場合、キャッシュ制御部111は、分散データD211の、HDD21aのストライプST11を構成する記憶領域への書き込みを回避する。他方、分散データD211が分散データD221に一致しない場合、キャッシュ制御部111は、第1のSmall−Write方式を用いて分散データD211および新規パリティデータ(図示せず)のHDD21a、21dそれぞれのストライプST11を構成する記憶領域への書き込みを行う。なお、第1のSmall−Write方式を用いた更新データの書き込み方法については、図5にて説明したため、詳細な説明を省略する。
【0223】
<第2のSmall Write方式の第2の書き込み判断処理の具体例>
図24は、第2のSmall−Write方式の第2の書き込み判断処理の具体例を説明する図である。
【0224】
図24に示すHDD21a〜21dには、HDD21a〜21dを跨いでHDD21a〜21dそれぞれの記憶領域から構成されたストライプST12が設定されている。HDD21a〜21dそれぞれの、ストライプST12を構成する記憶領域には、分散データD241、D242、D243および分散データD241〜D243の冗長性を確保するパリティデータP241が記憶されている。
【0225】
キャッシュメモリ104に存在する分散データD231、D232は、差分ライトバック方式を用いた書き込みが指定されていると判断したキャッシュ制御部111が更新データD230から生成したデータである。ここで、分散データD232は、分散データD242の一部を更新対象とするデータD232aと、全てのビットが“0”であるデータD232bとで構成されている。分散データD241と分散データD242の一部は、それぞれ分散データD231、D232の更新対象データを構成する。
【0226】
RAID制御部113は、更新データから生成した分散データD231およびデータD232aのXORを演算することにより、分散データD231およびデータD232aの冗長性を確保する冗長データR231を生成する。RAID制御部113は、生成した冗長データR231をキャッシュメモリ104に保持する。また、RAID制御部113は、分散データD231が更新対象とするHDD21aの記憶領域に記憶されている分散データD241を読み出す。また、RAID制御部113は、分散データD232が更新対象とするHDD21bの記憶領域に記憶されているデータD242aを読み出す。このデータD242aは、データD232aに対応する。RAID制御部113は、読み出した分散データD241およびデータD242aをバッファ領域112に保持する。次に、RAID制御部113は、読み出した分散データD241およびデータD242aのXORを演算することにより、冗長データR241を生成する。RAID制御部113は、生成した冗長データR241をバッファ領域112に保持する。
【0227】
その後、RAID制御部113は、冗長データR231が冗長データR241に一致するか否かを判断する。冗長データR231が冗長データR241に一致する場合、RAID制御部113は、分散データD231およびデータD232aのHDD21a〜21dそれぞれの、ストライプST12を構成する記憶領域への書き込みを回避する。他方、冗長データR231が冗長データR241に一致しない場合、RAID制御部113は、分散データD231およびデータD232aのHDD21a〜21dそれぞれの、ストライプST12を構成する記憶領域への書き込みを行う。なお、第2のSmall−Write方式を用いた更新データの書き込み方法については、図6にて説明したため、詳細な説明を省略する。
【0228】
以上述べたように、ストレージ装置100によれば、キャッシュ制御部111が、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されているか否かを判断するようにした。そして、キャッシュ制御部111は、受け取った更新データに対し差分ライトバック方式を用いた書き込みが指定されていると判断した場合、更新対象データがキャッシュメモリ104に存在するか否かを判断するようにした。そして、差分ライトバック更新データにより更新対象となるデータがキャッシュメモリ104に存在しない場合、RAID制御部113が第2の書き込み判断処理を行うようにした。第2の書き込み判断処理を行うことによりHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域への更新データの書き込みを回避するようにした。従って、第2の書き込み判断処理を行うことにより、HDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域への書き込み回数を減らすことができる。
【0229】
また、第2の書き込み判断処理ではHDD21a〜21dからデータを読み出す処理が発生するが、HDD21a〜21dにデータを書き込むよりもHDD21a〜21dからデータを読み出す方がHDD21a〜21dへのアクセスに要する時間が短い。このため、制御モジュール10aが第2の書き込み判断処理を行うことにより、更新データと対比するデータがキャッシュメモリ104に存在しない場合には、常に更新データをHDD21a〜21dに書き込む場合に比べ、更新データの処理時間を短くすることができる。
【0230】
また、RAID制御部113の対比用データの対比においては、各分散データのXORの演算を行い、その演算により得られたパリティデータおよび冗長データを対比するようにした。パリティデータおよび冗長データを対比することで、データを対比する回数が1回で済むので、各分散データ1つ1つを対比するよりも、対比する回数を少なくすることができる。また、パリティデータおよび冗長データのデータ容量は、分散データのデータ容量と同じであるため、対比するデータの総容量も小さくなる。従って、CPU101にかかる負荷を軽減させることができる。
【0231】
また、Bandwidth Write方式の第1の書き込み処理および第2の書き込み処理では、パリティデータ同士を対比するようにした。パリティデータ同士を対比することにより、パリティデータ同士が一致しない場合には、更新データの冗長性を確保するパリティデータをそのままHDD21a〜21dそれぞれの、更新対象のストライプを構成する記憶領域に書き込むことができる。パリティデータ同士を対比し、一致を判断することで、例えば、パリティデータ以外のデータ(例えばハッシュ値等)同士を対比して一致を判断する場合に比べ、不一致時にパリティデータを生成する手間を省略することができる。パリティデータを生成する手間を省略することで、制御モジュール10aの更新データの処理時間を短くすることができる。
【0232】
なお、本実施の形態ではストレージ装置100が備える記憶媒体として、HDD20を用いた場合を説明したが、HDD20の一部または全部をSSDに置き換えてもよい。HDD20の一部または全部をSSDに置き換えた場合には、SSDへの書き込み回数を減らすことで、書き込み回数の上限に達する(寿命に至る)までの時間を延ばすことができる。
【0233】
なお、制御モジュール10a、10bが行った処理が、複数の装置によって分散処理されるようにしてもよい。例えば、1つの装置が、キャッシュ制御部111の機能を有しており、他の装置が、RAID制御部113の機能を有しており、これら2つの装置が組み合わされて1つのストレージ装置内に設けられていてもよい。
【0234】
ところで、大容量のデータの一部分を修正変更したデータをバックアップ用の記憶媒体に記憶されているデータに上書き(コピー)する際に制御モジュール10aが備える機能を適用することで、ファイルのコピーが早く終了する可能性を高めることができる。以下、第2の実施の形態のストレージ装置100をストレージ装置100内のデータコピーを行う装置に応用する場合を説明する。
【0235】
<応用例>
図25は、第2の実施の形態のストレージ装置を用いた応用例を示す図である。
応用例に示すストレージシステム1000aは、RAIDグループ22を有している。RAIDグループ22は、HDD22a、22b、22c、22dで構成されており、RAID5(3+1)で運用されている。
【0236】
このストレージシステム1000aでは、ストレージ装置100内のRAIDグループ21からRAIDグループ22へのデータコピー(以下、「筐体内コピー」と言う)を行う。本応用例では、RAIDグループ21に記憶されているデータが、更新データに対応し、RAIDグループ22に記憶されているデータが、更新対象データに対応する。
【0237】
本応用例の筐体内コピーは、ホスト装置30のCPUを使用せずにストレージ装置100だけでコピーを行う。また、筐体内コピーは、RAIDグループ21内の連続した記憶領域を、RAIDグループ22の記憶領域にコピーする。
【0238】
筐体内コピーとしては、例えば、二重切り離しコピー方式、バックグラウンド・コピー方式、コピー・オン・ライト方式が挙げられる。以下、順に説明する。
<二重切り離しコピー方式>
図26は、二重切り離しコピー方式を説明する図である。
【0239】
二重切り離しコピー方式は、RAIDグループ21とRAIDグループ22の内容を二重化状態(同期)に保ち、論理コピーを行う。ここで、論理コピーとは、バックグラウンド方式のコピー機能であり、RAIDグループ21のコピー実行開始時点でのイメージ(ポイントインタイムスナップショット)を瞬時に作成してバックアップの完了通知をホスト装置30に返す方法を言う。論理コピーを行った後に、RAIDグループ21からRAIDグループ22への実際のコピー(物理コピー)を行う。
そして、RAIDグループ22のバックアップを開始する時点で同期状態を切り離してRAIDグループ21とRAIDグループ22を非同期にさせる。切り離されたRAIDグループ22は、同期を一時停止した時点のRAIDグループ21と同一のデータが格納されているため、RAIDグループ21の運用を継続しながらRAIDグループ22の内容をテープ装置23等へバックアップすることができる。
【0240】
また、RAIDグループ21とRAIDグループ22の同期を一時停止した後に、同期を再開することもできる。同期の再開時は一時停止後のRAIDグループ21に記憶されているデータと、RAIDグループ22に記憶されているデータ差分(更新差分)のみをRAIDグループ22にコピーする。
【0241】
<バックグラウンド・コピー方式>
図27は、バックグラウンド・コピー方式を説明する図である。
バックグラウンド・コピー方式は、任意のタイミングでRAIDグループ21に記憶されているデータの全ての複製をRAIDグループ22に作成する機能である。RAIDグループ22は、RAIDグループ21と同期状態が切り離された状態を保っている。従って、RAIDグループ21に更新があった場合でもRAIDグループ22には、更新の内容が反映されない。RAIDグループ21からRAIDグループ22へのデータのコピーが必要になった時点でデータをRAIDグループ21からRAIDグループ22へ論理コピーし、物理コピーの完了を待たずに、RAIDグループ21で業務を継続しながら、RAIDグループ22をテープ装置等へバックアップすることができる。
【0242】
<コピー・オン・ライト方式>
図28は、コピー・オン・ライト方式を説明する図である。
コピー・オン・ライト方式は、データ更新時に更新前のデータのみを複製する機能である。具体的には、RAIDグループ22のデータ更新時には、RAIDグループ22の更新前のデータ(旧データ)22aを参照する。そして、RAIDグループ21の更新前のデータ22aをRAIDグループ22にコピーする。部分データのみをコピーすることでコピー先として用意するRAIDグループ22の記憶領域は更新データの分だけ用意すればよい。このため、二重切り離しコピー方式、バックグラウンド・コピー方式、に比べ、RAIDグループ22の記憶容量を抑えることができる。
【0243】
応用例の制御モジュール10a、10bは、前述した3つのコピー方式を用いてRAIDグループ21からRAIDグループ22にデータをコピーする際に、図8に示すステップS2〜S5の処理を行う。図8に示すステップS2〜S5の処理を行うことにより、RAIDグループ22に既に記憶されているデータと同一のデータが、RAIDグループ22に上書きされることを回避することができる。従って、図8に示すステップS2〜S5の処理を行わない場合に比べ、データのコピーが早く終了する可能性を高めることができる。
【0244】
なお、応用例では、RAIDグループ21からRAIDグループ22への筐体内コピーを説明したが、RAIDグループ22は、RAID5以外のRAIDを構成してもよいし、RAIDを構成していなくてもよい。
【0245】
また、応用例では、筐体内コピーを説明したが、ストレージ装置100と、図示しない他のストレージ装置との間のコピー(筐体間コピー)にも図8に示すステップS2〜S5の処理を適用することができる。
【0246】
以上、本発明の制御装置、制御方法およびストレージ装置を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【0247】
また、本発明は、前述した各実施の形態のうちの、任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御装置3および制御モジュール10a、10bが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記憶装置には、ハードディスクドライブ、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)/RW(ReWritable)等が挙げられる。光磁気記録媒体には、MO(Magneto-Optical disk)等が挙げられる。
【0248】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0249】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0250】
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)等の電子回路で実現することもできる。
【0251】
以上の第1〜第2の実施の形態に関し、さらに以下の付記を開示する。
(付記1) 記憶媒体への情報の書き込みを制御する制御装置において、
前記記憶媒体に書き込まれている第1の情報を一時的に記憶するキャッシュメモリと、
前記記憶媒体に書き込まれている前記第1の情報を更新の対象とする第2の情報を受け付ける受付部と、
前記受付部が受け付けた前記第2の情報を前記記憶媒体に書き込む際に前記第1の情報が前記キャッシュメモリに存在しない場合、前記第1の情報と前記第2の情報とを対比するために、前記記憶媒体から読み出された対比用情報を用いて前記第1の情報と前記第2の情報との一致を判断し、前記第1の情報と一致すると判断した前記第2の情報の前記記憶媒体への書き込みを回避する書き込み制御部と、
を有することを特徴とする制御装置。
【0252】
(付記2) 当該制御装置には複数の記憶媒体が接続されており、
前記第1の情報を分散した複数の第1の分散情報および前記複数の第1の分散情報の冗長性を確保する第1の冗長情報が前記複数の記憶媒体に個別に記憶されており、
前記書き込み制御部は、前記第2の情報を分散した複数の第2の分散情報と、前記複数の第2の分散情報の冗長性を確保する第2の冗長情報とを生成し、前記第1の冗長情報と、前記第2の冗長情報との一致を判断することを特徴とする付記1記載の制御装置。
【0253】
(付記3) 前記第1の冗長情報と前記第2の冗長情報は、それぞれパリティ情報であり、
前記書き込み制御部は、前記第1の冗長情報が、前記第2の冗長情報と一致しないと判断した場合は、前記複数の記憶媒体にそれぞれ記憶されている前記複数の第1の分散情報と前記第1の冗長情報を、前記複数の第2の分散情報と前記第2の冗長情報で更新することを特徴とする付記2記載の制御装置。
【0254】
(付記4) 前記第2の情報が、前記複数の記憶媒体に記憶されている前記複数の第1の分散情報の一部の前記第1の分散情報を更新対象とする情報である場合、前記書き込み制御部は、更新対象ではない前記第1の分散情報を前記記憶媒体から読み出して前記第1の冗長情報を生成することを特徴とする付記3記載の制御装置。
【0255】
(付記5) 前記書き込み制御部は、前記第1の情報と一致しないと判断した前記第2の情報を前記記憶媒体に書き込むことを特徴とする付記1記載の制御装置。
(付記6) 前記書き込み制御部は、前記受付部が受け付けた前記第2の情報が前記キャッシュメモリに存在しない場合に前記記憶媒体から前記対比用情報を読み出すことを特徴とする付記1記載の制御装置。
【0256】
(付記7) 前記第1の情報が前記キャッシュメモリに記憶されている場合、前記キャッシュメモリに記憶されている前記第1の情報と前記第2の情報との一致を判断するキャッシュ制御部をさらに有することを特徴とする付記1記載の制御装置。
【0257】
(付記8) 前記キャッシュ制御部は、前記キャッシュメモリに記憶されている前記第1の情報を分散した複数の第1の分散情報と、前記複数の第1の分散情報の冗長性を確保する第1の冗長情報と、前記第2の情報を分散した複数の第2の分散情報と、前記複数の第2の分散情報の冗長性を確保する第2の冗長情報とを生成し、生成した前記第1の冗長情報と前記第2の冗長情報との一致を判断することを特徴とする付記7記載の制御装置。
【0258】
(付記9) 当該制御装置には複数の記憶媒体が接続されており、
前記第1の情報を分散した複数の第1の分散情報および前記複数の第1の分散情報の冗長性を確保する第1の冗長情報が前記複数の記憶媒体に個別に記憶されており、
前記キャッシュ制御部が生成した前記第1の冗長情報と前記第2の冗長情報は、それぞれパリティ情報であり、
前記キャッシュ制御部は、前記第2の冗長情報が前記第1の冗長情報と一致しないと判断した場合は、前記複数の記憶媒体にそれぞれ記憶されている前記複数の第1の分散情報と、前記第1の冗長情報を、前記第2の分散情報と前記第2の冗長情報で更新することを特徴とする付記8記載の制御装置。
【0259】
(付記10) 記憶媒体への情報の書き込みを制御する制御方法において、
コンピュータに、
前記記憶媒体に書き込まれている第1の情報を更新の対象とする第2の情報を受け付けると、
受け付けた前記第2の情報を前記記憶媒体に書き込む際に、前記第1の情報が、前記記憶媒体に書き込まれている前記第1の情報を一時的に記憶するキャッシュメモリに存在しない場合、前記記憶媒体から読み出された、前記第1の情報と前記第2の情報とを対比するために、前記記憶媒体から読み出された対比用情報を用いて前記第1の情報と前記第2の情報との一致を判断し、
前記第1の情報と一致すると判断した前記第2の情報の前記記憶媒体への書き込みを回避する、
処理を実行させることを特徴とする制御方法。
【0260】
(付記11) 記憶媒体と、前記記憶媒体への情報の書き込みを制御する制御装置とを備えるストレージ装置において、
前記制御装置は、
前記記憶媒体に書き込まれている第1の情報を一時的に記憶するキャッシュメモリと、
前記記憶媒体に書き込まれている前記第1の情報を更新の対象とする第2の情報を受け付ける受付部と、
前記受付部が受け付けた前記第2の情報を前記記憶媒体に書き込む際に前記第1の情報が前記キャッシュメモリに存在しない場合、前記第1の情報と前記第2の情報とを対比するために、前記記憶媒体から読み出された対比用情報を用いて前記第1の情報と前記第2の情報との一致を判断し、前記第1の情報と一致すると判断した前記第2の情報の前記記憶媒体への書き込みを回避する書き込み制御部と、
を有することを特徴とするストレージ装置。
【符号の説明】
【0261】
1、100 ストレージ装置
2、30 ホスト装置
3 制御装置
3a、104 キャッシュメモリ
3b 受付部
3c 書き込み制御部
4 ストライプ
4a、4b、4c、4d 記憶媒体
10a、10b 制御モジュール
20 HDD
21、22 RAIDグループ
21a、21b、21c、21d HDD
111 キャッシュ制御部
112 バッファ領域
113 RAID制御部
1000、1000a ストレージシステム
A1、B1、C1 第1の分散情報
A2、B2、C2 第2の分散情報
D1 第1の情報
D2 第2の情報
P1 第1のパリティ情報
P2 第2のパリティ情報

【特許請求の範囲】
【請求項1】
記憶媒体への情報の書き込みを制御する制御装置において、
前記記憶媒体に書き込まれている第1の情報を一時的に記憶するキャッシュメモリと、
前記記憶媒体に書き込まれている前記第1の情報を更新の対象とする第2の情報を受け付ける受付部と、
前記受付部が受け付けた前記第2の情報を前記記憶媒体に書き込む際に前記第1の情報が前記キャッシュメモリに存在しない場合、前記第1の情報と前記第2の情報とを対比するために、前記記憶媒体から読み出された対比用情報を用いて前記第1の情報と前記第2の情報との一致を判断し、前記第1の情報と一致すると判断した前記第2の情報の前記記憶媒体への書き込みを回避する書き込み制御部と、
を有することを特徴とする制御装置。
【請求項2】
当該制御装置には複数の記憶媒体が接続されており、
前記第1の情報を分散した複数の第1の分散情報および前記複数の第1の分散情報の冗長性を確保する第1の冗長情報が前記複数の記憶媒体に個別に記憶されており、
前記書き込み制御部は、前記第2の情報を分散した複数の第2の分散情報と、前記複数の第2の分散情報の冗長性を確保する第2の冗長情報とを生成し、前記第1の冗長情報と、前記第2の冗長情報との一致を判断することを特徴とする請求項1記載の制御装置。
【請求項3】
前記第1の冗長情報と前記第2の冗長情報は、それぞれパリティ情報であり、
前記書き込み制御部は、前記第1の冗長情報が、前記第2の冗長情報と一致しないと判断した場合は、前記複数の記憶媒体にそれぞれ記憶されている前記複数の第1の分散情報と前記第1の冗長情報を、前記第2の分散情報と前記第2の冗長情報で更新することを特徴とする請求項2記載の制御装置。
【請求項4】
前記第1の情報が前記キャッシュメモリに記憶されている場合、前記キャッシュメモリに記憶されている前記第1の情報と前記第2の情報との一致を判断するキャッシュ制御部をさらに有することを特徴とする請求項1記載の制御装置
【請求項5】
前記キャッシュ制御部は、前記キャッシュメモリに記憶されている前記第1の情報から生成した複数の第1の分散情報と、前記複数の第1の分散情報の冗長性を確保する第1の冗長情報と、前記第2の情報を分散した複数の第2の分散情報と、前記複数の第2の分散情報の冗長性を確保する第2の冗長情報とを生成し、生成した前記第1の冗長情報と前記第2の冗長情報との一致を判断することを特徴とする請求項4記載の制御装置。
【請求項6】
当該制御装置には複数の記憶媒体が接続されており、
前記第1の情報を分散した複数の第1の分散情報および前記複数の第1の分散情報の冗長性を確保する第1の冗長情報が前記複数の記憶媒体に個別に記憶されており、
前記キャッシュ制御部が生成した前記第1の冗長情報と前記第2の冗長情報は、それぞれパリティ情報であり、
前記キャッシュ制御部は、前記第2の冗長情報が前記第1の冗長情報と一致しないと判断した場合は、前記複数の記憶媒体にそれぞれ記憶されている前記複数の第1の分散情報と前記第1の冗長情報を、前記複数の第2の分散情報と前記第2の冗長情報で更新することを特徴とする請求項5記載の制御装置。
【請求項7】
記憶媒体への情報の書き込みを制御する制御方法において、
コンピュータに、
前記記憶媒体に書き込まれている第1の情報を更新の対象とする第2の情報を受け付けると、
受け付けた前記第2の情報を前記記憶媒体に書き込む際に、前記第1の情報が、前記記憶媒体に書き込まれている前記第1の情報を一時的に記憶するキャッシュメモリに存在しない場合、前記記憶媒体から読み出された、前記第1の情報と前記第2の情報とを対比するために、前記記憶媒体から読み出された対比用情報を用いて前記第1の情報と前記第2の情報との一致を判断し、
前記第1の情報と一致すると判断した前記第2の情報の前記記憶媒体への書き込みを回避する、
処理を実行させることを特徴とする制御方法。
【請求項8】
記憶媒体と、前記記憶媒体への情報の書き込みを制御する制御装置とを備えるストレージ装置において、
前記制御装置は、
前記記憶媒体に書き込まれている第1の情報を一時的に記憶するキャッシュメモリと、
前記記憶媒体に書き込まれている前記第1の情報を更新の対象とする第2の情報を受け付ける受付部と、
前記受付部が受け付けた前記第2の情報を前記記憶媒体に書き込む際に前記第1の情報が前記キャッシュメモリに存在しない場合、前記第1の情報と前記第2の情報とを対比するために、前記記憶媒体から読み出された対比用情報を用いて前記第1の情報と前記第2の情報との一致を判断し、前記第1の情報と一致すると判断した前記第2の情報の前記記憶媒体への書き込みを回避する書き込み制御部と、
を有することを特徴とするストレージ装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate


【公開番号】特開2012−185687(P2012−185687A)
【公開日】平成24年9月27日(2012.9.27)
【国際特許分類】
【出願番号】特願2011−48506(P2011−48506)
【出願日】平成23年3月7日(2011.3.7)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】