(57)【要約】【課題】障害処理の最中に、キャッシュの容量が不足し、処理が続行できないという問題を解決する。【解決手段】キャッシュ装置は、データ、および、パリティを格納するデータ部と、前記データ部に格納されたデータ、または、パリティに対する前記データ部の領域を指定する複数のアドレス部分を格納するアドレス部と、ある前記アドレス部分で指定される前記データ部の領域を動的に拡張する制御部とを含む。【選択図】      図１
2013196481.tif 000002
【特許請求の範囲】
【請求項１】
データ、および、パリティを格納するデータ部と、
前記データ部に格納されたデータ、または、パリティに対する前記データ部の領域を指定する複数のアドレス部分を格納するアドレス部と、
ある前記アドレス部分で指定される前記データ部の領域を動的に拡張する制御部と、
を含むことを特徴とするキャッシュ装置。
【請求項２】
複数の単位ユニットからなるストレージ装置のそれぞれの前記単位ユニットに格納されるデータ、または、パリティに対応する前記アドレス部分をもつ前記アドレス部を含むことを特徴とする請求項１のキャッシュ装置。
【請求項３】
前記単位ユニットに対応する前記アドレス部分のそれぞれの数をカウントし、障害が発生した前記単位ユニットに対応する前記アドレス部分に対する制限値を増加させ、障害が発生しない前記単位ユニットに対応する前記アドレス部分に対する制限値を減少させ、障害が発生した前記単位ユニットに対応する前記アドレス部分で指定される前記データ部の領域を拡張する前記制御部を含むことを特徴とする請求項２のキャッシュ装置。
【請求項４】
リストエントリからなりハッシュ値の各々に対応するハッシュリストである前記アドレス部分、および、ハッシュ値に対応する前記ハッシュリストの各々を指定するハッシュテーブルを含む前記アドレス部と、
要求アドレスにハッシュ関数を適用しハッシュ値を算出し、ハッシュ値に対応する前記アドレス部分にストレージアドレス、および、キャッシュアドレスを含む前記リストエントリを登録し、キャッシュアドレスで指定される前記データ部の領域に、データ、または、パリティを格納する前記制御部と、
を含むことを特徴とする請求項３のキャッシュ装置。
【請求項５】
請求項４の前記キャッシュ装置と、
前記キャッシュ装置にリード、または、ライト要求を出力するホスト装置と、
前記単位ユニットである複数のディスクを含む前記ストレージ装置であるディスクアレイ装置と、
障害時に処理を実施する保守用装置と、
を含むことを特徴とする情報処理システム。
【請求項６】
切り離し指示を出力する前記保守用装置と、
スペアディスクに障害の発生した前記ディスク内のデータ、または、パリティをリビルドし、切り離し指示を受け取ると、前記スペアディスクへのアクセスを停止し、障害の発生していない前記ディスクに対応するデータ、または、パリティを前記ディスクアレイシステムに出力し、出力したデータ、または、パリティを前記データ部から削除する前記制御部と、
を含むことを特徴とする請求項５の情報処理システム。
【請求項７】
切り離し指示を受け取ると、障害の発生した前記ディスクに対応するリストエントリの数の制限値を増加し、障害の発生していない前記ディスクに対応するリストエントリの数を減少させ、障害の発生した前記ディスクに対応するデータ、または、パリティを格納するデータ領域を拡張する前記制御部を含むことを特徴とする請求項６の情報処理システム。
【請求項８】
データ部に、データ、および、パリティを格納し、
アドレス部に、前記データ部に格納されたデータ、または、パリティに対する前記データ部の領域を指定する複数のアドレス部分を格納し、
ある前記アドレス部分で指定される前記データ部の領域を動的に拡張することを特徴とするキャッシュ方法。
【請求項９】
前記アドレス部に、複数の単位ユニットからなるストレージ装置のそれぞれの前記単位ユニットに格納されるデータ、または、パリティに対応する前記アドレス部分を含ませることを特徴とする請求項９のキャッシュ方法。
【請求項１０】
前記単位ユニットに対応する前記アドレス部分のそれぞれの数をカウントし、障害が発生した前記単位ユニットに対応する前記アドレス部分に対する制限値を増加させ、障害が発生しない前記単位ユニットに対応する前記アドレス部分に対する制限値を減少させ、障害が発生した前記単位ユニットに対応する前記アドレス部分で指定される前記データ部の領域を拡張することを特徴とする請求項９のキャッシュ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ装置、情報処理システム、および、キャッシュ方法に関する。
【背景技術】
【０００２】
近年、コンピュータで扱うデータ量が拡大し、ディスク装置における高速なデータアクセス、大規模データの管理、耐障害性の向上が求められている。そのような目的には、データを利用するホスト装置から独立した複数のディスクの組み合わせの専用装置（ディスクアレイ装置、ストレージ装置）が利用されている。
【０００３】
ストレージシステムに関する技術の１例が、特許文献１に記載されている。特許文献１は、ＲＡＩＤ（Redundant Array of Independent Disks）方式のストレージシステムに関する技術である。そして、この技術は、障害によりボリュームがオフラインの場合、書き込みデータをキャッシュに入れ、オンラインになると、キャッシュに入れたデータをボリュームに書き込んでいる。
【０００４】
ディスクのリビルドに関する技術の１例が、特許文献２に記載されている。この技術は、故障したディスクのデータを予備のディスクにリビルドし、その予備のディスクを切り離し、切り離している間、更新データを、他の故障していないディスクに書き込んでいる。また、この技術は、予備のディスクを故障したディスクの位置に接続し、更新データを、予備のディスクに書き込んでいる。
【０００５】
キャッシュを持つディスクアレイシステムに関する技術の１例が、特許文献３に記載されている。この技術は、所定の期間にホストから受け付けたＩ／Ｏ（Input/Output）要求数を算出し、それが予め決められた規定値を超えているかどうかを判定し、超えている場合は、管理単位領域のデータをキャッシュに常駐させている。
【０００６】
キャッシュの構成管理に関する技術の１例が、特許文献４に記載されている。この技術は、キャッシュの構成、アクセス性能からレスポンスタイムを予測し、キャッシュ容量の判定、適切な容量の見積もりを行い、キャッシュ構成の変更を行っている。
【０００７】
ハッシュに関する技術の１例が、特許文献５に記載されている。この技術は、ストレージシステムのキャッシュに階層管理方式とハッシュディレクトリ方式とを併用し、性能を向上させている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００９−５０５３１０号公報
【特許文献２】ＷＯ０６／１２３４１６号公報
【特許文献３】特開２０１０−９４４２号公報
【特許文献４】特開２０１０−９７５２６号公報
【特許文献５】特開２００５−３４３７５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述した特許文献の技術では、障害処理（たとえば、リビルド）の最中に、キャッシュの容量が不足し、処理が続行できないという問題があった。
【００１０】
本発明の目的は、上記問題を解決したキャッシュ装置、情報処理システム、および、キャッシュ方法を提供することである。
【課題を解決するための手段】
【００１１】
本発明のキャッシュ装置は、データ、および、パリティを格納するデータ部と、前記データ部に格納されたデータ、または、パリティに対する前記データ部の領域を指定する複数のアドレス部分を格納するアドレス部と、ある前記アドレス部分で指定される前記データ部の領域を動的に拡張する制御部とを含む。
【００１２】
本発明のキャッシュ方法は、データ部に、データ、および、パリティを格納し、
アドレス部に、前記データ部に格納されたデータ、または、パリティに対する前記データ部の領域を指定する複数のアドレス部分を格納し、
ある前記アドレス部分で指定される前記データ部の領域を動的に拡張する。
【発明の効果】
【００１３】
本発明の効果は、障害処理（たとえば、リビルド）の最中に、キャッシュの容量が不足せず、処理が続行できることである。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】データ、パリティの構造を示す説明図である。
【図３】アドレス部、データ部の詳細説明図である。
【図４】本発明の第２の実施の形態の制御を示す説明図である。
【図５】本発明の第２の実施の形態の制御部の構成を示すブロック図である。
【図６】本発明の第３の実施の形態の構成を示すブロック図である。
【図７】ディスクアレイ装置の物理的構成を示す構成図である。
【図８】本発明の第３の実施の形態の動作を示す動作説明図である。
【図９】本発明の第３の実施の形態の動作を示す動作説明図である。
【発明を実施するための形態】
【００１５】
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。図１は、本発明の第１の実施の形態の構成を示すブロック図である。
【００１６】
図１を参照すると、第１の実施の形態のキャッシュ装置１００は、データ部１１０、アドレス部１２０、および、制御部１３０を含む。データ部１１０は、外部の複数の単位ユニットに分割されているストレージ装置に格納されるデータ、パリティを一時的に格納する。
【００１７】
説明を容易にするために、ストレージ装置が、３つの単位ユニットに分割されている場合について説明する。特に、３つの単位ユニットに限定されるわけではない。図２は、データ、パリティの構造を示す説明図である。
【００１８】
図２を参照すると、ストレージ装置に格納されるデータ、パリティは、ストライプ単位で管理される。１つのストライプは、３つのブロックを含む。
【００１９】
２つのブロックは、同じサイズの連続したデータである。残りの１ブロックは、その連続したデータから生成されたパリティである。ストライプ１は、データＡ１、データＢ１、パリティＰ１を含む。ストライプ２は、データＡ２、パリティＰ２、データＢ２を含む。ストライプ３は、パリティＰ３、データＡ３、データＢ３を含む。
【００２０】
データＡ１、データＡ２、パリティＰ３は、同一の単位ユニットに格納される。データＢ１、パリティＰ２、データＡ３は、同一の単位ユニットに格納される。パリティＰ１、データＢ２、データＢ３は、同一の単位ユニットに格納される。
【００２１】
次に、アドレス部１２０、データ部１１０について図面を参照して説明する。図３は、アドレス部１２０、データ部１１０の詳細説明図である。
【００２２】
図３を参照すると、アドレス部１２０は、データ部１１０に格納されるデータ（または、パリティ）のストレージ装置の領域を示すストレージアドレス、データ部１１０の領域を示すキャッシュアドレス、および、有効情報を格納する。アドレス部１２０は、３つの単位用ユニットごとに管理される。ここで、それぞれを、第１アドレス部分、第２アドレス部分、第３アドレス部分と呼ぶ。
【００２３】
有効情報は、アドレス部１２０の各内容が有効か無効かを示す情報である。すなわち、有効情報は、キャッシュアドレスで指定されるデータ部１１０内のデータ（または、パリティ）が有効か無効かを示す。ストレージアドレス、キャッシュアドレスは、ブロック単位である。また、データ部１１０は、アドレス部１２０内のキャッシュアドレスで指定されたところにブロック単位のデータ、または、パリティを格納する。
【００２４】
次に、第１の実施の形態の動作について説明する。
【００２５】
制御部１３０は、外部のホスト装置から出力されたストレージ装置に対するリード／ライト要求（リード／ライトコマンド、要求アドレス、ライトデータ）を受け取る。この要求アドレスは、２ブロック単位（または、ストライプまたは、複数のストライプを示す単位）である。
【００２６】
まず、リード要求の場合について説明する。
【００２７】
制御部１３０は、受け取った要求アドレスに対応するストレージアドレスが、アドレス部１２０に存在し、かつ、有効情報により有効か無効かを調べる。
【００２８】
アドレス部１２０に有効なストレージアドレスが存在しないと、制御部１３０は、データ部１１０に対応するデータが存しない（キャッシュミス）と判断する。そして、制御部１３０は、ストレージ装置にリード要求を出力する。
【００２９】
ストレージ装置の各単位ユニットからリードデータ（１〜３ブロック）を受け取ると、制御部１３０は、パリティチェックを行う。そして、制御部１３０は、要求アドレスから、単位ユニットに対応するブロック単位のストレージアドレスを生成し、かつ、ストレージアドレスごとにキャッシュアドレスを生成する。
【００３０】
次に、制御部１３０は、生成した３組のストレージアドレス、キャッシュアドレス、有効情報（有効）をアドレス部１２０に格納する。そして、データ部１１０のキャッシュアドレスで指定された領域にブロック単位の各リードデータ（または、パリティ）を格納する。そして、制御部１３０は、ホスト装置に要求された分のリードデータを出力する。
【００３１】
アドレス部１２０に有効なストレージアドレスが存在すると、制御部１３０は、データ部１１０に対応するデータが存在する（キャッシュヒット）と判断する。そして、制御部１３０は、データを読み出す。すなわち、制御部１３０は、３つのストレージアドレスに対応するキャッシュアドレスで指定されるデータ部１１０内のデータ（または、パリティ）を読み出す。そして、制御部１３０は、ホスト装置に要求された分のリードデータを出力する。
【００３２】
次に、ライト要求の場合について説明する。
【００３３】
キャッシュミスの場合、制御部１３０は、要求アドレスから、単位ユニットに対応するブロック単位のストレージアドレスを生成し、かつ、ストレージアドレスごとにキャッシュアドレスを生成する。
【００３４】
次に、制御部１３０は、生成した３組のストレージアドレス、キャッシュアドレス、有効情報（有効）をアドレス部１２０に格納する。そして、制御部１３０は、連続した２ブロックのライトデータに対するパリティを生成する。制御部１３０は、ブロック単位のライトデータ（または、パリティ）を、データ部１１０の、生成した３つのキャッシュアドレスにより指定された領域に書き込む。
【００３５】
キャッシュヒットの場合、制御部１３０は、連続した２ブロックのライトデータに対するパリティを生成する。そして、制御部１３０は、データ部１１０のキャッシュアドレスで指定された領域にブロック単位の各ライトデータ（または、パリティ）を格納する。
【００３６】
また、キャッシュ装置１００からストレージ装置へのライトデータの出力の方式は、ライトスルー、ライトバックのどちらの構成も可能である。制御部１３０は、データ（または、パリティ）のストレージ装置への格納が終わると、データ部１１０、アドレス部１２０から対応する部分に書き込み完了を示す書き込み完了情報（図示せず）を付与する。
【００３７】
上記の説明において、データ部１１０には、１回の要求で、ストライプごとに、３つのブロックのデータ（または、パリティ）が、第１アドレス部分〜第３アドレス部分で指定される領域に書き込まれる。したがって、データ部１１０には、第１アドレス部分〜第３アドレス部分に対応するデータ（または、パリティ）が、同量存在する（削除されないかぎり）。
【００３８】
次に、第１アドレス部分〜第３アドレス部分に対応するデータ（パリティ）の量を不均衡にする場合について説明する。たとえば、ストレージ装置の第３アドレス部分に対応する単位ユニットが故障（または、何らかの障害が発生）し、単位ユニットにデータ（または、パリティ）を書き込めない場合等である。
【００３９】
この場合、一時的に、データ部１１０の第３アドレス部分に対応する領域を拡張させる必要が生じる。データ部１１０の容量は決まっているので、制御部１３０は、第１アドレス部分〜第２アドレス部分に対応するデータ（または、パリティ）を、ストレージ装置に出力する。
【００４０】
さらに、制御部１３０は、出力されたデータ（または、パリティ）をデータ部１１０から削除し、削除したデータ（または、パリティ）を指定する第１アドレス部分〜第２アドレス部分をアドレス部１２０から削除する。
【００４１】
また、たとえば、制御部１３０は、ホスト装置からの新たなライト要求に対して、第１アドレス部分〜第２アドレス部分に対応するデータ（または、パリティ）を、ストレージ装置に出力し、データ部１１０には格納しない。制御部１３０は、第１アドレス部分〜第２アドレス部分をアドレス部１２０に格納しない。制御部１３０は、第３アドレス部分をアドレス部１２０に格納し、対応するデータ（または、パリティ）をデータ部１１０に格納する。以上のような制御により、データ部１１０の第３アドレス部分に対応する領域を拡張できる。
【００４２】
また、別の制御として、制御部１３０は、第１アドレス部分〜第３アドレス部分のそれぞれの数をカウントし、第１アドレス部分の数、第２アドレス部分の数に制限値を減少させる制御が可能である。すなわち、制御部１３０は、第３アドレス部分の数を観測し、第３アドレス部分の数が制限値に近くなると、第３アドレス部分の制限値を増加し、第１アドレス部分の数、第２アドレス部分の制限値を減少させる。
【００４３】
あるいは、制御部１３０は、第３アドレス部分の数が制限値に近くなることが予測されると、第３アドレス部分の制限値を増加し、第１アドレス部分の数、第２アドレス部分の制限値を減少させる。
【００４４】
たとえば、ストレージ装置の第１アドレス部分、第２アドレス部分に対応する単位ユニットが故障した場合には、それぞれ、データ部１１０の第１アドレス部分、第２アドレス部分に対応する領域が拡張される。以上のような制御により、動的にデータ部１１０の第３アドレス部分に対応する領域を拡張できる。
【００４５】
データ部１１０、アドレス部１２０は、メモリ上に構成されることが可能である。
【００４６】
また、ホスト装置が、ライト要求でパリティを出力し、リード要求で、パリティを受け取る構成が可能である。
【００４７】
次に、第１の実施の形態の効果について説明する。第１の実施の形態は、障害の発生した単位ユニットに対応するアドレス部分に対応するデータ部１１０の領域を動的に拡張するので、ストレージ装置のアドレス部分に対応する単位ユニットの障害時に、処理が続行でき、信頼性が向上する。
【００４８】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。第２の実施の形態は、第１の実施の形態の１例である。図４は、本発明の第２の実施の形態の制御を示す説明図である。
【００４９】
図４を参照すると、アドレス部１２０は、ハッシュテーブル３００、および、ハッシュリスト３１１、ハッシュリスト３１２、および、ハッシュリスト３１３を含む。ハッシュリスト３１１、ハッシュリスト３１２、および、ハッシュリスト３１３は、それぞれ、第１の実施の形態の第１アドレス部分、第２アドレス部分、および、第３アドレス部分の１例である。
【００５０】
説明を簡単にするために、ハッシュ関数を［要求アドレス（ｍｏｄ３）]（要求アドレスを３で割った余り）とする。以下、有効情報、書き込み完了情報を省略して説明する。
【００５１】
また、ホスト装置が、ライト要求時に、パリティを生成してキャッシュ装置１００に出力し、リード要求時に、キャッシュ装置１００からパリティを受け取る構成とする。また、要求は、１ブロック単位とする。すなわち、ストレージアドレスと要求アドレスとは同一となる。
【００５２】
ハッシュテーブル３００は、ハッシュ関数の出力である３種のハッシュ値（‘０’、‘１’、‘２’）、および、ハッシュリスト３１１〜３１３の先頭をさすポインタを含む。ハッシュリスト３１１〜３１３は、それぞれ１以上のリストエントリを含む。リストエントリは、ストレージアドレス、キャッシュアドレス、および、次のハッシュリスト３１１〜３１３を指定するポインタを含む。
【００５３】
制御部１３０は、要求アドレスに対し、ハッシュ関数を適用する。制御部１３０は、ハッシュ値に対応するハッシュリスト３１１〜３１３内に対応するストレージアドレス（＝要求アドレス）が存在するかどうかを順次調べる。
【００５４】
リード要求の場合、ストレージアドレスが存在すれば（キャッシュヒット）、制御部１３０は、対応するキャッシュアドレスで指定されるデータ（または、パリティ）をデータ部１１０から読み出し、ホスト装置に出力する。
【００５５】
ストレージアドレスが存在しないと（キャッシュミス）、制御部１３０は、ストレージ装置にリード要求を出力する。制御部１３０は、要求アドレスにハッシュ関数を適用し、単位ユニットに対応するブロック単位のストレージアドレス（＝要求アドレス）を生成し、かつ、ストレージアドレスに対応するキャッシュアドレスを生成する。たとえば、キャッシュアドレスは、ハッシュ値、および、ストレージアドレスから生成される。
【００５６】
制御部１３０は、ハッシュテーブル３００、対応するハッシュリスト３１１〜３１３を調べ、各最後尾に、リストエントリ（ストレージアドレス、キャッシュアドレス、ポインタ）を登録する。
【００５７】
そして、制御部１３０は、ストレージ装置からリードデータ（パリティを含む）を受け取ると、データ部１１０のキャッシュアドレスで指定される領域にデータ（または、パリティ）を格納する。
【００５８】
ライト要求の場合、ストレージアドレスが存在すれば（キャッシュヒット）、制御部１３０は、データ部１１０の対応するキャッシュアドレスで指定される領域にデータ（または、パリティ）を格納する。そして、制御部１３０は、直ちに（ライトスルー）、または、時間をおいて（ライトバック）、ストレージ装置にライト要求を出力する。
【００５９】
また、ストレージアドレスが存在しないと（キャッシュミス）、制御部１３０は、要求アドレスにハッシュ関数を適用し、単位ユニットに対応するブロック単位のストレージアドレス（＝要求アドレス）を生成し、かつ、ストレージアドレスに対応するキャッシュアドレスを生成する。
【００６０】
制御部１３０は、ハッシュテーブル３００、対応するハッシュリスト３１１〜３１３を調べ、各最後尾に、リストエントリ（ストレージアドレス、キャッシュアドレス、ポインタ）を登録する。そして、制御部１３０は、直ちに（ライトスルー）、または、時間をおいて（ライトバック）、ストレージ装置にライト要求を出力する。
【００６１】
次に、ハッシュリスト３１１〜３１３に対応するデータ（パリティ）の量を不均衡にする場合について説明する。たとえば、ストレージ装置のハッシュリスト３１３に対応する単位ユニットが故障し、単位ユニットにデータ（または、パリティ）を書き込めない場合等である。
【００６２】
この場合、一時的に、データ部１１０のハッシュリスト３１３に対応する領域を拡張させる必要が生じる。データ部１１０の容量は決まっているので、制御部１３０は、ハッシュリスト３１１〜３１２に対応するデータ（または、パリティ）を、ストレージ装置に出力する。
【００６３】
さらに、制御部１３０は、出力したデータ（または、パリティ）を指定するハッシュリスト３１１〜３１２を削除する。これにより、データ部１１０から、ハッシュリスト３１１〜３１２に対応するデータ（または、パリティ）が削除されたことになる。
【００６４】
以上のような制御により、データ部１１０のハッシュリスト３１３に対応する領域を拡張できる。
【００６５】
また、制御部１３０は、ハッシュリスト３１１〜３１３に登録されているそれぞれの数をカウントし、第１アドレス部分の数、第２アドレス部分の数に制限を設定する制御が可能である。図５は、本発明の第２の実施の形態の制御部１３０の構成を示すブロック図である。
【００６６】
図５を参照すると、制御部１３０は、登録数カウンタ１５１、登録数カウンタ１５２、登録数カウンタ１５３、制限値情報１６１、制限値情報１６２、および、制限値情報１６３を含む。
【００６７】
制御部１３０は、ハッシュリスト３１１、３１２、３１３に登録されているリストエントリの数を、それぞれ、登録数カウンタ１５１、１５２、１５３に格納する。制御部１３０は、ハッシュリスト３１１、３１２、３１３に登録を許すリストエントリの最大数を、それぞれ、制限値情報１６１、１６２、１６３に格納する。
【００６８】
したがって、登録数カウンタ１５１の値≦制限値情報１６１の値、登録数カウンタ１５２の値≦制限値情報１６２の値、登録数カウンタ１５３の値≦制限値情報１６３の値である。また、制限値情報１６１の値＋制限値情報１６２の値＋制限値情報１６３の値は、データ部１１０の容量以内を指定するように設定される。制御部１３０は、この制限を守って処理を行う。
【００６９】
そして、たとえば、ストレージ装置のハッシュリスト３１３に対応する単位ユニットが故障した場合等に、制御部１３０は、登録数カウンタ１５３の値を調べ、制限値情報１６３の値を増加させ、制限値情報１６１の値、制限値情報１６２の値を減少させる。
【００７０】
以上のような制御により、データ部１１０のハッシュリスト３１３に対応する領域を拡張できる。
【００７１】
次に、ホスト装置が、パリティの生成、出力を行わず、キャッシュ装置１００が、パリティの生成を行う制御ついて説明する。
【００７２】
ホスト装置は、ライト要求において、連続する２ブロック単位でライトデータを出力する場合について説明する。要求アドレスは、たとえば、２ブロックの先頭ブロックを指定する偶数アドレスである。すなわち、要求アドレス＝０、２、４、６、・・・・である。たとえば、要求アドレス＝２の場合、アドレス＝２、アドレス＝３に対応する２ブロックのデータが、ホスト装置から出力される。
【００７３】
キャッシュ装置１００の制御部１３０は、２ブロックのデータからパリティを生成する。そして、制御部１３０は、２つのアドレスにハッシュ関数を適用し、それぞれ、ハッシュ値である２（ｍｏｄ３）＝‘１’、３（ｍｏｄ３）＝‘０’を算出する。
【００７４】
次に、アドレス＝２のハッシュ値＝‘１’なので、制御部１３０は、ハッシュテーブル３００を参照し、ポインタで指定されるハッシュリスト３１２の最後尾に、新たなリストエントリを登録する。リストエントリは、ストレージアドレス（＝要求アドレス＝２）、キャッシュアドレス（ハッシュ値＝‘１’、ストレージアドレスから適宜のアルゴリズムで生成する）、ポインタを含む。そして、制御部１３０は、データ部１１０の生成したキャッシュアドレスで指定された領域に先頭の１ブロックのデータを格納する。
【００７５】
また、アドレス＝３のハッシュ値＝‘０’なので、制御部１３０は、ハッシュテーブル３００を参照し、ポインタで指定されるハッシュリスト３１１の最後尾に、新たなリストエントリを登録する。リストエントリは、ストレージアドレス（＝要求アドレス＝２）、キャッシュアドレス（ハッシュ値＝‘０’、ストレージアドレスから適宜のアルゴリズムで生成する）、ポインタを含む。そして、制御部１３０は、データ部１１０の生成したキャッシュアドレスで指定された領域に２番目の１ブロックのデータを格納する。
【００７６】
次に、制御部１３０は、ハッシュ値＝‘１’、‘０’でない残りのハッシュ値＝‘２’を、生成したパリティに対応させる。制御部１３０は、ハッシュテーブル３００を参照し、ポインタで指定されるハッシュリスト３１３の最後尾に、新たなリストエントリを登録する。リストエントリは、ストレージアドレス（＝要求アドレス＝２）、キャッシュアドレス（ストレージアドレスから適宜のアルゴリズムで生成する）、ポインタを含む。そして、制御部１３０は、データ部１１０の生成したキャッシュアドレスで指定された領域に１ブロックのパリティを格納する。
【００７７】
ホスト装置は、リード要求で、１ブロック単位を指定することが可能である。たとえば、奇数の要求アドレス＝３が指定できる。キャッシュ装置１００の制御部１３０は、要求アドレス＝３のリード要求を受け取ると、ハッシュ関数を適用し、それぞれ、ハッシュ値である３（ｍｏｄ３）＝‘０’を算出する。また、制御部１３０は、奇数の要求アドレス＝３から、偶数のアドレス＝２（＝３−１）を生成する。
【００７８】
そして、制御部１３０は、ハッシュ値＝‘０’に対応するハッシュリスト３１１を検索し、アドレス＝２をストレージアドレスとして含むリストエントリが存在するかどうかを調べる。そのエントリが存在すれば、キャッシュヒットであり、存在しなければ、キャッシュミスである。
【００７９】
次に、第２の実施の形態の効果について説明する。第２の実施の形態は、第１の実施の形態の１例なので、第１の実施の形態と同一の効果を持つ。また、第２の実施の形態は、ハッシュ方式をとるので、ストレージ装置の各単位ユニットに対応するデータ（または、パリティ）が均等にデータ部１１０に格納でき、キャッシュを効率的に使用できるという効果を持つ。
【００８０】
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。図６は、本発明の第３の実施の形態の構成を示すブロック図である。
【００８１】
図６を参照すると、第３の実施の形態の情報処理システム２００は、ホスト装置４００、ディスクアレイシステム５００、および、保守用装置７００を含む。ディスクアレイシステム５００は、キャッシュ装置１００、および、ディスクアレイ装置６００を含む。
【００８２】
ホスト装置４００は、第２の実施の形態のホスト装置の１例である。キャッシュ装置１００は、第２の実施の形態のキャッシュ装置１００の１例であって、ディスクキャッシュ装置とも呼ばれる。また、第３の実施の形態は、ライトバック方式であると仮定する。
【００８３】
ディスクアレイ装置６００は、第２の実施の形態のストレージ装置の１例であって、第１ディスク６１０、第２ディスク６２０、第３ディスク６３０、および、スペアディスク６４０を含む。第１ディスク６１０〜スペアディスク６４０は、それぞれ、第２の実施の形態の単位ユニットである。キャッシュ装置１００は、データ（または、パリティ）に対し、第１ディスク６１０、第２ディスク６２０、第３ディスク６３０の区別を示すボリューム指定情報を付与し、ディスクアレイ装置６００に出力する制御が可能である。
【００８４】
また、第１ディスク６１０〜第３ディスク６３０に対応する制限値情報１６１〜１６３には、事前に、同一の値が設定されることが可能である。
【００８５】
ここで、ディスクアレイ装置６００の物理的構成について説明する。図７は、ディスクアレイ装置６００の物理的構成を示す構成図である。
【００８６】
図７を参照すると、ディスクアレイ装置６００は、１〜１２の番号が付与された１２スロットを持つ。そして、第１スロット、第２スロット、第３スロット、第１２スロットには、それぞれ、第１ディスク６１０、第２ディスク６２０、第３ディスク６３０、スペアディスク６４０が搭載される。たとえば、ディスクアレイ装置６００は、ＲＡＩＤ５の構成が可能である。また、ディスクアレイ装置６００は、この構成に限られない。
【００８７】
次に、第３の実施の形態の動作について図面を参照して説明する。図８、図９は、本発明の第３の実施の形態の動作を示す動作説明図である。図８、図９は、第３ディスク６３０に障害が発生した場合の動作を示す。
【００８８】
制御部１３０は、第３ディスク６３０の障害を検知すると（ステップＳ１／Ｙ）、第３ディスク６３０へのアクセスを停止する（ステップＳ２）。さらに、制御部１３０は、保守用装置７００に第３ディスク６３０の障害を示す障害通知を出力する（ステップＳ３）。制御部１３０は、第３ディスク６３０のかわりにスペアディスク６４０へのアクセスを開始する（ステップＳ４）。
【００８９】
次に、制御部１３０は、第１ディスク６１０、および、第２ディスク６２０から、データ（または、パリティ）を読み出し、データ、および、パリティに基づいて、第３ディスク６３０のデータ（または、パリティ）を復元する（ステップＳ５）。
【００９０】
ここで、まだ、第１ディスク６１０〜第３ディスク６３０に格納されていないデータ（または、パリティ）が、キャッシュ装置１００（データ部１１０内）に存在すると、制御部１３０は、復元に利用する（ステップＳ５）。存在は、図示しない有効情報、書き込み完了情報等により調べられる。
【００９１】
次に、制御部１３０は、復元したデータ（または、パリティ）をスペアディスク６４０に格納する。すなわち、制御部１３０は、第３ディスク６３０をスペアディスク６４０にリビルドする（ステップＳ６）。そして、制御部１３０は、リビルドの完了を示すリビルド完了通知を保守用装置７００に出力する（ステップＳ７）。
【００９２】
次に、保守用装置７００は、制御部１３０に、スペアディスク６４０を切り離すための切り離し指示を出力する（ステップＳ８）。切り離しに、保守用装置７００の障害表示等を観測した人間（保守員等）が関与する構成も可能である。
【００９３】
制御部１３０は、切り離し指示を受け取ると、スペアディスク６４０の特別な領域に、第３ディスク６３０のリビルドが実施されたことを示すリビルド実施情報を格納し（ステップＳ９）、スペアディスク６４０に対するアクセスを停止する（ステップＳ１０）。
【００９４】
次に、制御部１３０は、データ部１１０に存在し、まだ、第１ディスク６１０、第２ディスク６２０に格納済みでないデータ（または、パリティ）を、それぞれ、第１ディスク６１０、第２ディスク６２０に出力する（ステップＳ１１）。そして、制御部１３０は、第１ディスク６１０、第２ディスク６２０に格納済みのデータ（または、パリティ）に対応する部分をデータ部１１０、アドレス部１２０から削除する（ステップＳ１１）。すなわち、制御部１３０は、アドレス部１２０の対応する有効情報を無効を示すようにする。これにより、データ部１１０に空きが確保できる。
【００９５】
そして、制御部１３０は、ホスト装置４００からの要求を処理する（ステップＳ１２）。すなわち、ホスト装置４００からのライト要求に関しては、第１ディスク６１０、第２ディスク６２０に対応するデータ（または、パリティ）は、通常と同一に、データ部１１０に格納され、適宜、第１ディスク６１０、第２ディスク６２０に格納される。また、第３ディスク６３０に対応するデータ（または、パリティ）は、データ部１１０のみに格納される。
【００９６】
また、ホスト装置４００からのリード要求に関しては、キャッシュヒットであれば、データ部１１０からデータ（または、パリティ）が読み出されて、ホスト装置４００に出力される。キャッシュミスであれば、第３ディスク６３０に対応するデータ（または、パリティ）は、第１ディスク６１０、第２ディスク６２０に格納されている対応するストライプのデータ（または、パリティ）から復元され、ホスト装置４００に出力される。
【００９７】
また、制御部１３０は、登録数カウンタ１５１〜１５３に、対応するハッシュリスト３１１〜３１３に登録されているリストエントリの数を、その都度、格納する（ステップＳ１３）。
【００９８】
そして、制御部１３０は、第３ディスク６３０に対応する登録数カウンタ１５３の値が、制限値情報１６３の値に近づくと、第１ディスク６１０、第２ディスク６２０に対応する制限値情報１６１、１６２の値を減少させる（ステップＳ１４）。さらに、制御部１３０は、第３ディスク６３０に対応する制限値情報１６３を増加させる（ステップＳ１４）。
【００９９】
登録数カウンタ１５１〜１５２が、対応する制限値情報１６１〜１６２を超えると、制御部１３０は、第１ディスク６１０、第２ディスク６２０に格納済みのデータ（または、パリティ）を、データ部１１０から削除する（ステップＳ１５）。
【０１００】
次に、制御部１３０は、第１ディスク６１０、第２ディスク６２０に格納済みでないデータ（または、パリティ）を、それぞれ、第１ディスク６１０、第２ディスク６２０に出力し、データ部１１０から削除する（ステップＳ１６）。
【０１０１】
次に、保守員等により、第３ディスク６３０、スペアディスク６４０を、それぞれ、第３スロット、第１２スロットから抜き、スペアディスク６４０を、第３スロットに搭載する交換作業が実施される。そして、保守用装置７００が交換完了情報を制御部１３０に出力する（ステップＳ１７）。
【０１０２】
制御部１３０は、交換完了情報を受け取ると、第３スロットに搭載されたスペアディスク６４０にアクセスし、リビルド実施情報の存在を確認する（ステップＳ１８）。リビルド実施情報の存在が確認されると（ステップＳ１８／Ｙ）、制御部１３０は、スペアディスク６４０を第３ディスク６３０の代替として認識する（ステップＳ１９）。
【０１０３】
そして、制御部１３０は、データ部１１０内の第３ディスク６３０に対応するデータ（または、パリティ）を、スペアディスク６４０に対し出力する（ステップＳ２０）。次に、制御部１３０は、制限値情報１６１〜１６３の値を元に戻す（ステップＳ２１）。
【０１０４】
リビルド実施情報の存在が確認されないと（ステップＳ１８／Ｎ）、制御部１３０は、保守用装置７００に、リビルド実施情報が存在しないことを示すリビルド実施情報非検出通知を出力する（ステップＳ２２）。
【０１０５】
次に、第３の実施の形態の効果について説明する。第３の実施の形態は、第２の実施のキャッシュ装置１００を含む構成なので、第２の実施の形態と同一の効果を持つ。また、第３の実施の形態は、リビルド時に、障害の発生したディスクに対応するデータ部１１０の領域を増加することにより、リビルドが実施されても、処理が継続できるという効果を持つ。
【０１０６】
また第３の実施の形態は、リビルド時も、ホスト装置４００からの要求が処理する構成なので、障害時も、性能が低下しないという効果を持つ。
【０１０７】
上記の実施の形態の一部、または、全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１０８】
［付記１］
データ、および、パリティを格納するデータ部と、
前記データ部に格納されたデータ、または、パリティに対する前記データ部の領域を指定する複数のアドレス部分を格納するアドレス部と、
ある前記アドレス部分で指定される前記データ部の領域を動的に拡張する制御部と、
を含むことを特徴とするキャッシュ装置。
【０１０９】
［付記２］
複数の単位ユニットからなるストレージ装置のそれぞれの前記単位ユニットに格納されるデータ、または、パリティに対応する前記アドレス部分をもつ前記アドレス部を含むことを特徴とする付記１のキャッシュ装置。
【０１１０】
［付記３］
前記単位ユニットに対応する前記アドレス部分のそれぞれの数をカウントし、障害が発生した前記単位ユニットに対応する前記アドレス部分に対する制限値を増加させ、障害が発生しない前記単位ユニットに対応する前記アドレス部分に対する制限値を減少させ、障害が発生した前記単位ユニットに対応する前記アドレス部分で指定される前記データ部の領域を拡張する前記制御部を含むことを特徴とする付記２のキャッシュ装置。
【０１１１】
［付記４］
リストエントリからなりハッシュ値の各々に対応するハッシュリストである前記アドレス部分、および、ハッシュ値に対応する前記ハッシュリストの各々を指定するハッシュテーブルを含む前記アドレス部と、
要求アドレスにハッシュ関数を適用しハッシュ値を算出し、ハッシュ値に対応する前記アドレス部分にストレージアドレス、および、キャッシュアドレスを含む前記リストエントリを登録し、キャッシュアドレスで指定される前記データ部の領域に、データ、または、パリティを格納する前記制御部と、
を含むことを特徴とする付記３のキャッシュ装置。
【０１１２】
［付記５］
付記４の前記キャッシュ装置と、
前記キャッシュ装置にリード、または、ライト要求を出力するホスト装置と、
前記単位ユニットである複数のディスクを含む前記ストレージ装置であるディスクアレイ装置と、
障害時に処理を実施する保守用装置と、
を含むことを特徴とする情報処理システム。
【０１１３】
［付記６］
切り離し指示を出力する前記保守用装置と、
スペアディスクに障害の発生した前記ディスク内のデータ、または、パリティをリビルドし、切り離し指示を受け取ると、前記スペアディスクへのアクセスを停止し、障害の発生していない前記ディスクに対応するデータ、または、パリティを前記ディスクアレイシステムに出力し、出力したデータ、または、パリティを前記データ部から削除する前記制御部と、
を含むことを特徴とする付記５の情報処理システム。
【０１１４】
［付記７］
切り離し指示を受け取ると、障害の発生した前記ディスクに対応するリストエントリの数の制限値を増加し、障害の発生していない前記ディスクに対応するリストエントリの数を減少させ、障害の発生した前記ディスクに対応するデータ、または、パリティを格納するデータ領域を拡張する前記制御部を含むことを特徴とする付記６の情報処理システム。
【０１１５】
［付記８］
データ部に、データ、および、パリティを格納し、
アドレス部に、前記データ部に格納されたデータ、または、パリティに対する前記データ部の領域を指定する複数のアドレス部分を格納し、
ある前記アドレス部分で指定される前記データ部の領域を動的に拡張することを特徴とするキャッシュ方法。
【０１１６】
［付記９］
前記アドレス部に、複数の単位ユニットからなるストレージ装置のそれぞれの前記単位ユニットに格納されるデータ、または、パリティに対応する前記アドレス部分を含ませることを特徴とする付記９のキャッシュ方法。
【０１１７】
［付記１０］
前記単位ユニットに対応する前記アドレス部分のそれぞれの数をカウントし、障害が発生した前記単位ユニットに対応する前記アドレス部分に対する制限値を増加させ、障害が発生しない前記単位ユニットに対応する前記アドレス部分に対する制限値を減少させ、障害が発生した前記単位ユニットに対応する前記アドレス部分で指定される前記データ部の領域を拡張することを特徴とする付記９のキャッシュ方法。
【０１１８】
［付記１１］
前記アドレス部に、リストエントリからなりハッシュ値の各々に対応するハッシュリストである前記アドレス部分、および、ハッシュ値に対応する前記ハッシュリストの各々を指定するハッシュテーブルを含ませ、
要求アドレスにハッシュ関数を適用しハッシュ値を算出し、ハッシュ値に対応する前記アドレス部分にストレージアドレス、および、キャッシュアドレスを含む前記リストエントリを登録し、キャッシュアドレスで指定される前記データ部の領域に、データ、または、パリティを格納することを特徴とする付記１０のキャッシュ方法。
【０１１９】
［付記１２］、
ホスト装置にリード、または、ライト要求を出力させ、
前記単位ユニットである複数のディスクを含む前記ストレージ装置であるディスクアレイ装置にデータ、または、パリティを出力させ、
保守用装置に、障害時の処理を実施させることを特徴とする付記１１のキャッシュ方法。
【符号の説明】
【０１２０】
１００    キャッシュ装置
１１０    データ部
１２０    アドレス部
１３０    制御部
１５１    登録数カウンタ
１５２    登録数カウンタ
１５３    登録数カウンタ
１６１    制限値情報
１６２    制限値情報
１６３    制限値情報
２００    情報処理システム
３００    ハッシュテーブル
３１１    ハッシュリスト
３１２    ハッシュリスト
３１３    ハッシュリスト
４００    ホスト装置
５００    ディスクアレイシステム
６００    ディスクアレイ装置
６１０    第１ディスク
６２０    第２ディスク
６３０    第３ディスク
６４０    スペアディスク
７００    保守用装置
【図１】
2013196481.tif 000003
【図２】
2013196481.tif 000004
【図３】
2013196481.tif 000005
【図４】
2013196481.tif 000006
【図５】
2013196481.tif 000007
【図６】
2013196481.tif 000008
【図７】
2013196481.tif 000009
【図８】
2013196481.tif 000010
【図９】
2013196481.tif 000011