(57)【要約】【課題】リビルド処理時間を短縮する。【解決手段】ディスク制御装置１０は、管理下のディスク装置が故障したときは、予備ディスク装置（ＨＳ）２５に故障ディスク装置のデータを再構築するリビルド処理を行う。リビルド制御手段１４は、全ての対象領域についてのリビルド処理が完了する前にホストからのＩ／Ｏ要求を受け付けたときは、Ｉ／Ｏ要求の要求範囲が含まれる管理単位領域を特定し、その領域についてリビルド処理が完了しているか否かを判定する。リビルド処理が完了していないときは、リビルド処理手段１６によってこの管理単位領域のリビルド処理を先に行い、ＨＳ２５にデータを再構築する。データ再構築後、Ｉ／Ｏ要求処理手段１５によるＩ／Ｏ要求の処理が実行される。【選択図】図１
2010009442.tif 000002
【特許請求の範囲】
【請求項１】
データを複数のディスク装置に分散して格納し、ホストのＩ／Ｏ要求に応じて前記ディスク装置にアクセスしてＩ／Ｏ要求を実行するディスクアレイシステムにおいて、
冗長化されたデータを分散して格納する前記複数のディスク装置と、
前記複数のディスク装置の一部が故障したときに、故障ディスク装置の代わりとして動作する予備ディスク装置と、
前記ディスク装置の記憶領域を所定の管理単位で分割した管理単位領域ごとに、前記故障ディスク装置のデータを前記故障ディスク装置以外の前記ディスク装置のデータを用いて復元して前記予備ディスク装置に書き込み、前記予備ディスク装置にデータを再構築するリビルド処理手段と、前記管理単位領域についてリビルド処理が完了したか否かの情報を含むリビルド管理情報を格納する管理情報記憶手段と、前記ホストからのＩ／Ｏ要求を受け付け、前記Ｉ／Ｏ要求の要求範囲が前記リビルド処理の対象領域に含まれる場合は、前記要求範囲を含む前記管理単位領域を特定し、前記リビルド管理情報に基づいて特定された前記管理単位領域の前記リビルド処理が未完と判定された場合は、前記リビルド処理手段によって前記管理単位領域のデータを再構築し、データが再構築された後に前記Ｉ／Ｏ要求を実行させるリビルド制御手段と、を備えるディスク制御装置と、
を有することを特徴とするディスクアレイシステム。
【請求項２】
前記ディスク制御装置は、前記複数のディスク装置及び前記予備ディスク装置の中から選択された領域のデータのコピーを一時保存するキャッシュメモリと、前記キャッシュメモリを管理するキャッシュ管理手段と、を有し、
前記リビルド制御手段は、前記管理単位領域ごとに、所定の期間に受け付けられた前記管理単位領域に対する前記ホストからのＩ／Ｏ要求の数を算出して前記リビルド管理情報に設定し、
前記キャッシュ管理手段は、前記リビルド管理情報に基づき、前記管理単位領域に対する前記ホストからのＩ／Ｏ要求の数を所定の規定値と比較し、前記管理単位領域に対する前記ホストからのＩ／Ｏ要求の数が前記規定値を超えた場合は、前記管理単位領域のデータを前記キャッシュメモリに常駐させる、
ことを特徴とする請求項１記載のディスクアレイシステム。
【請求項３】
前記リビルド処理手段は、対象が前記ホストからのＩ／Ｏ要求の要求範囲を含む前記管理単位領域であるときは、前記管理単位領域のデータの復元に用いた前記管理単位領域に対応する前記故障ディスク装置以外の前記ディスク装置から取得した前記管理単位領域と同一のストライプ上のデータを前記キャッシュメモリに格納する、ことを特徴とする請求項２記載のディスクアレイシステム。
【請求項４】
前記キャッシュ管理手段は、前記ホストからのＩ／Ｏ要求の数が前記規定値を超えたとき、前記キャッシュメモリに当該管理単位領域のデータが格納されていなかった場合は、当該管理単位領域のデータを前記キャッシュメモリに常駐させるとともに、当該管理単位領域に対応する同一ストライプ上のデータを前記キャッシュメモリに格納する、ことを特徴とする請求項２記載のディスクアレイシステム。
【請求項５】
データを複数のディスク装置に分散して格納し、ホストのＩ／Ｏ要求に応じて前記ディスク装置にアクセスしてＩ／Ｏ要求を実行するディスク制御装置において、
冗長化されたデータを分散して格納する前記複数のディスク装置の記憶領域を所定の管理単位で分割した管理単位領域ごとに、故障ディスク装置のデータを前記故障ディスク装置以外の前記ディスク装置のデータを用いて復元し、前記故障ディスク装置の代わりとして動作する予備ディスク装置に復元データを書き込み、前記予備ディスク装置にデータを再構築するリビルド処理手段と、
前記管理単位領域についてリビルド処理が完了したか否かの情報を含むリビルド管理情報を格納する管理情報記憶手段と、
前記ホストからのＩ／Ｏ要求を受け付け、前記Ｉ／Ｏ要求の要求範囲が前記リビルド処理の対象領域に含まれる場合は、前記要求範囲を含む前記管理単位領域を特定し、前記リビルド管理情報に基づいて特定された前記管理単位領域の前記リビルド処理が未完と判定された場合は、前記リビルド処理手段によって前記管理単位領域のデータを再構築し、データが再構築された後に前記Ｉ／Ｏ要求を実行させるリビルド制御手段と、
を有することを特徴とするディスク制御装置。
【請求項６】
データを複数のディスク装置に分散して格納し、ホストのＩ／Ｏ要求に応じて前記ディスク装置にアクセスしてＩ／Ｏ要求を実行させるディスクアレイシステムの再構築処理方法において、
リビルド処理手段が、冗長化されたデータを分散して格納する前記複数のディスク装置の記憶領域を所定の管理単位で分割した管理単位領域ごとに、故障ディスク装置のデータを前記故障ディスク装置以外の前記ディスク装置のデータを用いて復元し、前記故障ディスク装置の代わりとして動作する予備ディスク装置に復元データを書き込み、前記予備ディスク装置にデータを再構築する手順と、
リビルド制御手段が、前記ホストからのＩ／Ｏ要求を受け付け、前記Ｉ／Ｏ要求の要求範囲が前記リビルド処理の対象領域に含まれる場合は、前記要求範囲を含む前記管理単位領域を特定し、管理情報記憶手段に格納される前記管理単位領域についてリビルド処理が完了したか否かの情報を含むリビルド管理情報を読み出し、前記リビルド管理情報に基づいて特定された前記管理単位領域の前記リビルド処理が未完であるか否かを判定する手順と、
前記リビルド処理手段が、前記リビルド処理が未完であると判定された場合は、前記管理単位領域のデータを再構築する手順と、
前記リビルド制御手段が、前記リビルド処理手段によってデータが再構築された後に前記Ｉ／Ｏ要求を実行させる手順と、
を有することを特徴とするディスクアレイシステムの再構築処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディスクアレイシステム、ディスク制御装置及びその再構築処理方法に関し、特にデータを複数のディスク装置に分散して格納し、ホストのＩ／Ｏ要求に応じてディスク装置にアクセスしてＩ／Ｏ要求を実行するディスクアレイシステム、ディスク制御装置及びその再構築処理方法に関する。
【背景技術】
【０００２】
複数のディスク装置とディスクコントローラで構成されるディスクアレイシステムでは、ディスク故障によるデータ損失を防ぎ、さらに処理性能を向上させるため、ＲＡＩＤ（Redundant Array of Inexpensive Disks）構成が採用されている。ＲＡＩＤ構成が採用されるシステムをＲＡＩＤシステムと呼ぶ。
【０００３】
ＲＡＩＤシステムでは、データを複数のディスク装置に分散し、冗長性を持たせている（ＲＡＩＤ０を除く）。ＲＡＩＤグループを構成しているディスク装置の１つが故障などによって使用不能となり冗長性を失った場合は、このディスク装置の代わりに予備のディスクを割当て、予備のディスク装置にデータを再構築させることで冗長性を復活させるリビルド（Rebuild）処理が行われる。
【０００４】
リビルド処理では、故障ディスク装置のデータ再構築のために、ある一定の処理単位ごとに正常なディスク装置からデータを読み出し、復旧したデータを予備のディスク装置であるホットスペアディスク（Hot Spare Disk；以下、ＨＳとする）に書き込む処理が繰り返される。従来、この一連のリビルド処理は、再構築すべきデータの先頭から、予め決められた処理単位ごとに順次実行されていた。
【０００５】
また、上位ホストからは、リビルド処理の間もディスクのアクセスを指示するＩ／Ｏが要求される。Ｉ／Ｏ要求を受け付けると、処理単位のリビルド処理が完了後、Ｉ／Ｏ要求処理が行われ、その後リビルド処理が再開されていた。このとき、ホストからのＩ／Ｏ要求が所定の期間ないときは、リビルド処理の処理単位のサイズを大きくする処理方法が提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００７−９４９９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、従来のＲＡＩＤシステムでは、リビルド処理とホストからのＩ／Ｏ要求とが競合するときのオーバーヘッドによって、リビルド処理が長期化するという問題点があった。
【０００７】
ホストからは、リビルド処理と関係なくＩ／Ｏが要求されるため、同一のディスク装置に対して双方からアクセス要求が出される場合が発生する。
例えば、リビルド処理のため、正常なディスク装置のある領域をアクセスしているときに、このディスク装置に対し、ホストからリビルド処理のアクセス領域とは離れた領域へのアクセスが集中したとする。この場合、リビルド処理によるディスクアクセスと、Ｉ／Ｏ要求によるディスクアクセスとの間で毎回ディスクのシーク処理が発生し、オーバーヘッドにつながる可能性がある。また、復元されたデータをＨＳのある領域に書き込む処理を行っているときにも同様の問題が発生する。ホストから現在復元中の領域とは離れた既に書き込みの終わった領域へのＩ／Ｏ要求が集中した場合には、リビルド処理によるデータ書き込みと、Ｉ／Ｏ要求によるディスクアクセスとの間でディスクのシーク処理が発生する。
【０００８】
また、リビルド未実施領域にホストからＩ／Ｏ要求があった場合、予備ディスク装置へのアクセスの代わりに正常なデータが格納されるディスクへのアクセスを行う必要がある。このとき、ＲＡＩＤ１（ミラーリング）以外のＲＡＩＤレベルにおいては、データの復元処理のコストも発生する。例えば、ＨＳにデータを復旧する前に、ホストからのＩ／Ｏ要求が発生した場合、上記の復旧手順と同様にしてデータを復元した後、Ｉ／Ｏ要求の処理を行わなければならない。データ復元のためにパリティ演算器を動作させなければならないなど、処理のための時間とコストを必要とする。また、このときデータが復元されるのは、Ｉ／Ｏ要求の要求範囲のみである。このため、次のＩ／Ｏ要求範囲が少しでもずれると、復元処理を再度行わなければならない。このように、リビルド未実施の領域にホストからのＩ／Ｏ要求が発生した場合、正常状態においてＩ／Ｏ要求を行った場合のアクセス処理と比較し、オーバーヘッドが発生する。
【０００９】
近年、ディスクの大容量化に伴って、リビルド処理完了までの時間が長期化している。このため、リビルド処理の時間短縮が重要な課題となっており、上記のようなオーバーヘッド時間も無視できなくなってきている。
【００１０】
本発明はこのような点に鑑みてなされたものであり、リビルド処理の時間短縮が可能なディスクアレイシステム、ディスク制御装置及びその再構築処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、冗長化されたデータを分散して格納する複数のディスク装置と、この複数のディスク装置の一部が故障したときに、故障ディスク装置の代わりとして動作する予備ディスク装置と、リビルド処理手段、管理情報記憶手段及びリビルド制御手段を備えたディスク制御装置と、を有するディスクアレイシステムが提供される。ディスク制御装置のリビルド処理手段は、ディスク装置の記憶領域を所定の管理単位で分割した管理単位領域ごとに、故障ディスク装置のデータを故障ディスク装置以外のディスク装置のデータを用いて復元して予備ディスク装置に書き込み、予備ディスク装置にデータを再構築する。管理情報記憶手段には、管理単位領域についてリビルド処理が完了したか否かの情報を含むリビルド管理情報が格納される。リビルド制御手段は、ホストからのＩ／Ｏ要求を受け付け、Ｉ／Ｏ要求の要求範囲がリビルド処理の対象領域に含まれる場合は、要求範囲を含む管理単位領域を特定する。次に、リビルド管理情報に基づいて特定された管理単位領域のリビルド処理が未完と判定された場合は、リビルド処理手段によって管理単位領域のデータを再構築する。そして、管理単位領域のデータが再構築された後にＩ／Ｏ要求を実行させる。
【００１２】
このようなディスクアレイシステムによれば、ディスク制御装置は、ホストからＩ／Ｏ要求の実行と、予備ディスク装置に故障ディスク装置のデータを再構築するリビルド処理とを並行して行う。全ての対象領域についてのリビルド処理が完了する前にホストからのＩ／Ｏ要求を受け付けたときは、Ｉ／Ｏ要求の要求範囲が含まれる管理単位領域を特定し、その領域についてリビルド処理が完了しているか否かを判定する。リビルド処理が完了していないときは、この管理単位領域のリビルド処理を先に行い、データを再構築する。データ再構築後、Ｉ／Ｏ要求の処理が実行される。
【００１３】
また、上記課題を解決するために、上記の機能を実現するディスク制御装置及び再構築処理方法が提供される。
【発明の効果】
【００１４】
開示のディスクアレイシステム、ディスク制御装置及び再構築処理方法によれば、リビルド処理が未完了の領域にホストからのＩ／Ｏ要求があった場合は、Ｉ／Ｏ要求の要求範囲を含む所定の管理単位領域についてリビルド処理を行った後、Ｉ／Ｏ要求が実行される。これにより、ホストからＩ／Ｏ要求範囲を含む管理単位領域のデータが優先的に再構築される。このため、ホストからのＩ／Ｏ要求が、所定の範囲内をアクセス先として連続的に発生する場合、以降のＩ／Ｏ要求の処理では、正常状態の場合と同等の時間でアクセス処理を完了させることができる。この結果、リビルド処理の時間短縮が可能となる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を、図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、実施の形態に適用される発明の概念図である。
【００１６】
本発明に係るディスクアレイシステムは、冗長化されたデータを分散配置するディスク装置２１，２２，２３，２４と、予備ディスク装置であるＨＳ２５と、ディスク制御装置１０とを有し、図示しないホストからのＩ／Ｏ要求を処理する。
【００１７】
ディスク装置２１，２２，２３，２４には、冗長化されたデータが所定のブロック単位に分割されて分散配置されている。ブロック単位に分割されたデータは、ディスク装置間に渡って帯状（ストライプ）に配置される。以下、ストライプ上に配置される分割データ及び冗長化データ（例えば、パリティ）をストライプデータと呼ぶ。
【００１８】
ＨＳ２５は、ディスク装置２１，２２，２３，２４が正常なときは待機状態にあり、ディスク装置２１，２２，２３，２４のいずれか１台が故障したとき、故障ディスク装置の代わりに動作する。このとき、ディスク制御装置１０によるリビルド処理によって、故障ディスク装置のデータがＨＳ２５上に再構築される。
【００１９】
ディスク制御装置１０は、管理情報記憶手段１１、キャッシュ１２、ディスクインタフェース１３、リビルド制御手段１４、Ｉ／Ｏ要求処理手段１５、リビルド処理手段１６及びキャッシュ管理手段１７を有する。
【００２０】
管理情報記憶手段１１は、ディスク制御装置１０が処理を行うために参照する各種管理情報が記憶されるメモリである。管理情報記憶手段１１には、構成情報と、リビルド管理情報と、を含む管理情報が格納される。構成情報には、論理ディスク（Raid Logical Unit；以下、ＲＬＵとする）に対応する実際のディスク装置２１，２２，２３，２４やＨＳ２５の構成などが定義されている。リビルド管理情報には、ディスク装置の記憶領域を所定の管理単位で分割した所定の管理単位領域に関する情報が管理単位領域ごとに設定される。例えば、各管理単位領域について、リビルド実施状況、この管理単位領域に対するホストからのＩ／Ｏ要求数などが設定される。
【００２１】
キャッシュ１２は、ディスク装置２１，２２，２３，２４及びＨＳ２５に記憶されるデータの中で頻繁にアクセスされるデータがコピーされて一時的に格納されるキャッシュメモリである。
【００２２】
ディスクインタフェース１３は、各ディスク装置２１，２２，２３，２４及びＨＳ２５に対するインタフェースである。
リビルド制御手段１４は、ホストからのＩ／Ｏ要求を受け付けると、Ｉ／Ｏ要求を実行するためにリビルド処理全般を制御する。リビルド処理が行われていないとき、またはＩ／Ｏ要求の要求範囲がリビルド処理の対象ではないときは、Ｉ／Ｏ要求処理手段１５にそのまま応答処理を実行させる。リビルド処理の対象である場合は、Ｉ／Ｏ要求のアクセス先情報からＩ／Ｏ要求の要求範囲が含まれる管理単位領域を特定する。また、特定された管理単位領域に関するリビルド管理情報の「ホストからのＩ／Ｏ要求数」の項目をインクリメントする。そして、リビルド管理情報に基づき、この管理単位領域に関するリビルド処理が完了しているかどうかを判定する。完了していないときは、リビルド処理手段１６を起動し、この管理単位領域のリビルド処理を実行させる。そしてリビルド処理完了後、Ｉ／Ｏ要求処理をＩ／Ｏ要求処理手段１５に実行させる。リビルド処理が完了しているときは、キャッシュ管理手段１７によるキャッシュ管理処理後、Ｉ／Ｏ要求処理をＩ／Ｏ要求処理手段１５に実行させる。
【００２３】
Ｉ／Ｏ要求処理手段１５は、ディスク装置の構成情報に基づき、ホストＩ／Ｏ要求により指定されたアクセス先情報（ＲＬＵ上の論理ユニット番号）をディスク装置上の物理ブロックアドレスに変換する。そして、対応するディスク装置２１，２２，２３，２４またはＨＳ２５へディスクインタフェース１３を介してアクセスし、ホストのＩ／Ｏ要求を実行する。なお、該当するデータがキャッシュ１２に存在するときは、キャッシュ１２上のデータにアクセスする。また、ディスク装置２１，２２，２３，２４またはＨＳ２５より読み出したデータは、必要に応じてコピーし、キャッシュ１２に格納する。一連のキャッシュ処理は、従来のＩ／Ｏ要求処理と同様に行われるとし、詳細な説明は省略する。
【００２４】
リビルド処理手段１６は、管理単位領域ごとにリビルド処理を行う。リビルド処理の開始時には、例えば、再構築の対象領域のアドレスが最も若い領域から処理を行う。故障ディスク装置以外の正常なディスク装置から管理単位領域に対応する同一ストライプのストライプデータを読み出し、管理単位領域のデータを復元する。そして、ＨＳ２５の該当領域に書き込み、リビルド管理情報の当該管理単位領域のリビルド実施状況を「リビルド処理完了」にする。また、ホストからのＩ／Ｏ要求に応じてリビルド制御手段１４より指示があったときは、指示された管理単位領域に対し、上記と同様のリビルド処理を実行する。そして、管理単位領域の復元データと、正常なディスク装置から読み出したストライプデータ（冗長化データは除く）とを、キャッシュ１２に格納する。なお、Ｉ／Ｏ要求に対応するリビルド処理が完了した後、次のリビルド処理を行う管理単位領域は任意とする。Ｉ／Ｏ要求によるリビルド処理の前にリビルド処理が実行された次の管理単位領域に戻ってリビルド処理を行うとしてもよい。また、Ｉ／Ｏ要求によるリビルド処理が行われた次の管理単位領域から開始するとしてもよい。
【００２５】
キャッシュ管理手段１７は、キャッシュ１２を管理する。特定された管理単位領域のデータがキャッシュ１２にないときは、該当データを読み出し、キャッシュ１２に格納する。また、リビルド管理情報に設定される管理単位領域ごとの「ホストからのＩ／Ｏ要求数」に基づいて所定の期間にホストから受け付けたＩ／Ｏ要求数を算出し、それが予め決められた規定値を超えているかどうかを判定する。超えている場合は、この管理単位領域のデータをキャッシュ１２に常駐させる設定を行う。また、キャッシュ１２に管理単位領域のデータを常駐させるときは、その管理単位領域が管理する同一のストライプ上のデータ全体をキャッシュ１２に設定する。一方、一定時間Ｉ／Ｏ要求がないなどの条件を満たしたときは、キャッシュ常駐を解除し、ページアウトできるようにする。
【００２６】
このような構成のディスク制御装置１０の動作及び再構築方法の手順について説明する。
ディスク制御装置１０は、図示しない監視手段により、データが分散配置されるディスク装置２１，２２，２３，２４の状態を監視している。ディスク装置２１，２２，２３，２４が正常な状態では、ホストからのＩ／Ｏ要求が受け付けられると、Ｉ／Ｏ要求処理手段１５が通常のＩ／Ｏ要求処理を実行し、応答をホストへ返す。
【００２７】
ここで、ディスク装置２１，２２，２３，２４のうちの１台が故障したことが検出されると、リビルド処理手段１６によるリビルド処理が開始される。例えば、ディスク装置２１が故障したとする。リビルド処理手段１６では、管理単位領域ごとに、正常なディスク装置２２，２３，２４の分割データを読み出し、故障したディスク装置２１の管理単位領域のデータを復元する。復元されたデータは、ＨＳ２５に書き込まれ、データがＨＳ２５に再構築される。管理単位領域のリビルド処理完了後、リビルド管理情報の当該管理単位領域に関する「リビルド実施状況」は、リビルド完了に設定される。
【００２８】
こうしてリビルド処理手段１６によってリビルド処理が順次行われている途中で、ホストからのＩ／Ｏ要求が入力されたとする。リビルド制御手段１４は、ホストからのＩ／Ｏ要求の要求範囲がリビルド処理の対象領域であるか否かを判定する。対象領域でなければ、通常時と同様に、Ｉ／Ｏ要求処理手段１５が通常のＩ／Ｏ要求処理を行う。対象領域であれば、Ｉ／Ｏ要求のアクセス先情報からＩ／Ｏ要求の要求範囲が含まれる管理単位領域を特定し、リビルド管理情報の「ホストからのＩ／Ｏ要求数」の該当する箇所をインクリメントする。次に、リビルド管理情報に基づいて、この管理単位領域のリビルド処理が完了しているか否かを判定する。完了していなければ、リビルド処理手段１６を起動し、この管理単位領域のリビルド処理を実行させる。リビルド処理手段１６によって、復元データがＨＳ２５に書き込まれるとともに、復元データ及び正常なディスク装置から読み出されたストライプデータのデータ部分が、キャッシュ１２に格納される。その後、Ｉ／Ｏ要求処理手段１５にＩ／Ｏ要求処理を行わせる。管理単位領域のリビルドが完了している場合は、キャッシュ１２に該当領域のデータを書き込んだ後、Ｉ／Ｏ要求処理手段１５によるＩ／Ｏ要求処理を行う。また、キャッシュ管理手段１７は、リビルド管理情報に設定されるホストからのＩ／Ｏ要求数に基づいて所定の期間におけるホストから受け付けたＩ／Ｏ要求数を算出し、それが予め決められた規定値を超えているかどうかを判定する。超えている場合は、この管理単位領域のデータをキャッシュ１２に常駐させる。
【００２９】
このようなＲＡＩＤシステムによれば、リビルド処理中に、リビルド処理が未完了の領域へアクセスするＩ／Ｏ要求が受け付けられると、該当する管理単位領域のリビルド処理が行われた後、Ｉ／Ｏ要求処理が行われる。これにより、以降の管理単位領域内に対するホストからのＩ／Ｏ要求時のデータ復元処理を省くことが可能となる。また、リビルド時、復元データとともにデータの復元のために読み出された正常なディスク装置のストライプデータ（冗長化データを除く）もキャッシュ１２に格納される。これにより、正常ディスク装置へのホストからのＩ／Ｏ要求と、リビルド処理で行われるリード処理との競合、及びＨＳ２５へのホストからのＩ／Ｏ要求と、リビルド処理で行われるライト処理との競合、を低減することができる。この結果、リビルド処理に要する時間を短縮することができる。
【００３０】
さらに、管理単位領域ごとに、Ｉ／Ｏ要求の数を管理しておく。そして、所定の期間のＩ／Ｏ要求数に基づき、リビルド処理中のある管理単位領域に対しホストからのＩ／Ｏ要求が集中していると判定できる場合は、この管理単位領域のデータを常時キャッシュ１２に格納しておく。これにより、この管理単位領域に対するホストからのＩ／Ｏ要求によるディスクアクセスをより低減させることができる。
【００３１】
以上より、Ｉ／Ｏ要求によるディスクアクセスと、リビルド処理によるディスクアクセスとの競合を低減し、結果としてシーク時間を短縮することができる。
以下、実施の形態を、ＲＡＩＤ５を構成するディスクアレイシステムに適用した場合を例に図面を参照して詳細に説明する。
【００３２】
図２は、実施の形態のＲＡＩＤシステムの構成の一例を示した図である。
実施の形態のＲＡＩＤシステムは、ＲＡＩＤ５のディスクアレイ装置により構成される論理ディスクＲＬＵ＃０（２００）、ＲＬＵ＃１（２０１）及びＲＬＵ＃２（２０２）と、ホスト３００とが制御モジュール（Control Module；以下、ＣＭとする）、ＣＭ＃０（１００）、ＣＭ＃１（１１０）及びＣＭ＃２（１２０）を介して接続している。ＣＭ＃０（１００）、ＣＭ＃１（１１０）及びＣＭ＃２（１２０）間は、ルータＲＴ１３０及びＲＴ１４０によって接続されている。
【００３３】
ＣＭ＃０（１００）、ＣＭ＃１（１１０）及びＣＭ＃２（１２０）は、ホスト３００から取得したＩ／Ｏ要求を実行するとともに、管理下のディスクアレイの一部が故障したときには、そのデータをＨＳ上に再構築するリビルド処理を行うディスク制御装置である。また、それぞれも冗長化構成となっており、いずれかのＣＭが故障すると、他がこれをバックアップする。
【００３４】
ここで、制御モジュールＣＭ＃０（１００）のハードウェア構成について説明する。ＣＭ＃０（１００）は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０６を介してメモリ１０２、ＣＡ（Channel Adapter）１０４、ＤＩ（Disk Interface）１０５などが接続されている。
【００３５】
ＣＰＵ１０１とメモリ１０２はバッテリーでバックアップされ、メモリの一部がキャッシュ１０３として使用される。ＣＡ１０４は、ホスト３００と接続するホストインタフェースを処理する回路である。ＤＩ１０５は、ディスク装置と接続するディスクインタフェースを処理する回路である。なお、ＣＭ＃１（１１０）、ＣＭ＃２（１２０）の構成も同様であり、それぞれキャッシュ１１３，１２３、ＣＡ１１４，１２４、及びＤＩ１１５，１２５を備える。
【００３６】
次に、ディスク装置の構成について説明する。図３は、実施の形態のディスク装置の構成例を示した図である。
図の例では、４台のディスク装置、ディスク＃０（２１０）、ディスク＃１（２２０）、ディスク＃２（２３０）、ディスク＃３（２４０）と、予備のディスク装置ＨＳ２５０とがＲＡＩＤ５を構成している。ディスク＃０（２１０）、ディスク＃１（２２０）、ディスク＃２（２３０）、ディスク＃３（２４０）には、ストライプサイズに分割されたデータと、分割データから生成されたパリティが、同一ストライプに格納されている。例えば、データＡは、データＡ１、データＡ２、データＡ３に分割され、パリティＰAとともに、それぞれディスク＃０（２１０）のブロック２１１、ディスク＃１（２２０）のブロック２２１、ディスク＃２（２３０）のブロック２３１、ディスク＃３（２４０）のブロック２４１に格納される。データＢも同様に、データＢ１、データＢ２、データＢ３に分割され、パリティＰBとともに、それぞれブロック２１２、ブロック２２２、ブロック２４２、ブロック２３２に格納される。このような構成とすることで、いずれか１つのディスク装置が故障したとき、他の正常なディスク装置に格納される同一ストライプの分割データと、パリティデータとから、故障ディスク装置のデータを復元できる。また、ＨＳ２５０側のデータＡに対応するストライプ領域をブロック２５１、データＢに対応するストライプ領域をブロック２５２とする。
【００３７】
リビルド処理の処理単位とする管理単位領域は、ディスク上の領域を所定の単位で分割した領域とし、１つの領域をエントリと呼ぶ。例えば、大容量ディスクとして１ＴＢ（テラバイト）のディスクを用いてＲＬＵを組み、ホストから見える論理ボリュームを最大容量として作成したケースで考える。ディスク上の領域を６４ｄｅｐｔｈ（＝８，１９２ｌｂａ＝４ＭＢ）単位で分割する。この場合、ディスク全体を管理するために必要なエントリ（logical block address）数は、
（１０２４×１０２４×１０２４×１０２４）÷５１２÷１２８÷６４＝２６２１４４
と、算出することができる。なお、ここでは、１ｌｂａ＝５１２バイト、１ｄｅｐｔｈ＝１２８ｌｂａとしている。
【００３８】
次に、リビルド処理を管理するリビルド管理情報について説明する。図４は、リビルド管理情報の一例を示した図である。
リビルド管理情報１０２０は、リビルド実施１０２１及びキャッシュ常駐１０２２を含むリビルド処理の状況を示したステータス情報と、対象のエントリを特定するエントリ番号１０２３と、このエントリに対するＩ／Ｏカウント１０２４の各情報項目を有する。
【００３９】
リビルド実施１０２１は、エントリ番号１０２３によって識別されるエントリについて、リビルド処理が完了したかどうかというリビルド実施状況を示す情報である。図の例では、リビルド処理が完了したリビルド実施済の状態を「１」、未完了でリビルド未実施の状態を「０」としている。キャッシュ常駐１０２２は、キャッシュに設定されているこのエントリのデータがキャッシュ常駐の対象であるかどうかを示す情報である。図の例では、キャッシュ常駐を「１」、キャッシュ非常駐を「０」としている。キャッシュ常駐が設定されると、当該エントリのデータは、キャッシュからページアウトされない。なお、ステータス情報として必要な情報が他にあれば、適宜設定される。また、リビルド管理情報の格納領域削減のため、各ステータス情報はビット情報として持つようにすることもできる。
【００４０】
エントリ番号１０２３は、各エントリを特定するため、エントリに一意に付された識別番号である。
Ｉ／Ｏカウント１０２４は、各エントリの領域に対し、ホストがＩ／Ｏ要求を行ったホストからのＩ／Ｏ要求数である。このエントリに対して頻繁にＩ／Ｏ要求がされているかどうかを検出したいので、所定の期間におけるホストからのＩ／Ｏ要求数をカウントする必要がある。そこで、一定周期でカウンタを初期化し、Ｉ／Ｏ要求ごとにインクリメントすることにより、所定の期間のＩ／Ｏ要求数をカウントする。
【００４１】
なお、リビルド管理情報は、ＣＭメモリ上のテーブル領域（装置動作を管理する各種テーブル類が格納されている領域）に配置される。リビルド管理情報は、装置の電源オフ／オンや、停電／復電を跨いで保持する必要がある。また、ＣＭ故障時にも担当ＲＬＵとともにバックアップのＣＭに引き継がれなければならない。そこで、バックアップ／リストアップ対象とし、キャッシュデータと同様に、ＣＭ間で二重化管理が行われる。
【００４２】
このような構成のＲＡＩＤシステムの動作について説明する。以下の説明では、特に断らない限り、図２，３，４と同じものには同じ番号を付す。
まず、ディスク装置が正常状態にある通常時の動作について説明する。例えば、制御モジュールＣＭ＃０（１００が、ＣＡ１０４を介して入力されたホスト３００からのＩ／Ｏ要求（リード）を受け付けると、キャッシュ１０３に要求されたデータが存在するか調べる。存在すれば、そのデータを読み出し、Ｉ／Ｏ応答としてＣＡ１０４を介してホスト３００にデータを転送する。キャッシュ１０３に存在しない場合は、そのデータが格納される物理ディスク（ディスク＃０（２１０）、ディスク＃１（２２０）、ディスク＃２（２３０）、ディスク＃３（２４０））のデータを読み出し、ＣＡ１０４を介してホスト３００に転送する。このとき、このデータのコピーをキャッシュ１０３に格納する。以下の説明では、データをディスクから読み出し、キャッシュ１０３に格納する処理をステージングと呼ぶ。このような一連のアクセス手順を通常Ｉ／Ｏ要求処理とする。なお、ライト処理は、さらに物理ディスクへのライトバックが加わるが、他はリード処理と同様の手順で処理が行われるので、以下ではリードの場合で説明する。
【００４３】
ここで、物理ディスク（ディスク＃０（２１０）、ディスク＃１（２２０）、ディスク＃２（２３０）、ディスク＃３（２４０））のうちの１台が故障すると、ＨＳ２５０にデータを再構築するリビルド処理が開始される。図５は、実施の形態のリビルド処理手順の概略を示した図である。
【００４４】
図の例では、ディスク＃１（２２０）が故障したとしている。リビルド処理手段１００２は、エントリを処理単位として、ディスク＃１（２２０）の物理アドレスの先頭から順にデータを復元し、ＨＳ２５０に書き込む。例えば、ディスク＃０（２１０）のブロック２１１からデータＡ１、ディスク＃２のブロック２３１からデータＡ３、ディスク＃３（２４０）のブロック２４１からパリティＰAをエントリ単位で読み出し、これらを用いてデータＡ２を復元する。そして、復元したデータＡ２をＨＳ２５１の該当領域に書き込む。このとき、リビルド管理情報１０２０の該当エントリ番号のステータス情報に「リビルド実施済」を登録する。リビルド処理手段１００２では、上記の手順を繰り返し、ＨＳ２５０上にディスク＃１（２２０）のデータを再構築していく。
【００４５】
上記のリビルド処理の途中でホスト３００からＩ／Ｏ要求が入力された場合について説明する。リビルド制御手段１００１では、ホスト３００のＩ／Ｏ要求の対象ＲＬＵがリビルド処理を行っているかどうかを判定する。行っていないときは、ＲＬＵの論理ブロックで指定されるアクセス先を物理ブロックのアドレスに変換し、該当するエントリを特定する。このとき、リビルド管理情報１０２０の該当するエントリのＩ／Ｏカウント１０２４をインクリメントしておく。そして、リビルド管理情報１０２０と照合し、特定されたエントリのリビルド処理が実施済かどうかを判定する。
【００４６】
このような処理により、Ｉ／Ｏ要求のアクセス先が、リビルド処理の対象ではない場合、リビルド未実施領域であった場合、またはリビルド実施済であった場合に処理が分岐される。リビルド処理の対象ではない場合は、通常のＩ／Ｏ要求処理が行われるので、説明は省略し、リビルド未実施領域であった場合と、リビルド実施済領域であった場合について説明する。
【００４７】
まず、Ｉ／Ｏ要求のアクセス先がリビルド処理対象であって、リビルド未実施領域であった場合の処理について説明する。図６は、実施の形態のリビルド未実施領域に対するＩ／Ｏ要求処理手順の概略を示した図である。
【００４８】
リビルド制御手段１００１は、アクセス先がリビルド未実施領域であった場合は、リビルド処理手段１００２に対し、該当エントリのリビルド処理を指示する。リビルド処理手段１００２は、指示されたエントリを対象として、リビルド処理を開始する。まず、対象のエントリを復元するための情報、すなわち、正常なディスク装置に格納されている同一ストライプ上のデータが読み出される。図の例では、ディスク＃０（２１０）からデータｅ１、ディスク＃２（２３０）からデータｅ３、ディスク＃３（２４０）からパリティｅｐが読み出される。そして、パリティ演算処理によって、データｅ２が復元される。ここで、エントリが管理する同一ストライプ上のデータ、図の例では、読み出されたデータｅ１、データｅ３と、復元データｅ２とをキャッシュ１０３にステージングする。パリティｅｐはステージングしない。それから、復元データｅ２をＨＳ２５０に書き込む。これにより、ＨＳ２５０上にＩ／Ｏ要求の要求範囲を含むエントリのデータが再構築される。そして、リビルド管理情報１０２０の対象エントリに対応するリビルド実施１０２１を、「リビルド実施済」に設定する。続いて、Ｉ／Ｏ要求処理手段１００３に対し、Ｉ／Ｏ要求処理を実行させる。Ｉ／Ｏ要求処理手段１００３では、キャッシュ１０３にステージングされたデータを用いて、Ｉ／Ｏ応答をホストに返す。
【００４９】
以上のように、リビルド未実施領域をアクセス先とするホスト３００からのＩ／Ｏ要求があったときは、該当エントリについてリビルド処理が行われたのち、Ｉ／Ｏ要求処理が行われる。これにより、Ｉ／Ｏ要求範囲を含むエントリのデータがＨＳ２５０上に再構築される。したがって、以降のＩ／Ｏ要求において、エントリ内の他のデータが要求されたとき、データ復元処理を再度行う必要がなくなる。また、このとき、復元データばかりでなく、エントリが管理する同一ストライプのデータもキャッシュ１０３にステージングされるので、以降のホスト３００からのＩ／Ｏ要求がこのエントリに集中した場合であっても、ディスク装置へはアクセスする必要がなくなる。
【００５０】
次に、Ｉ／Ｏ要求のアクセス先がリビルド処理対象であって、リビルド実施済領域であった場合の処理について説明する。図７は、実施の形態のリビルド実施済領域に対するＩ／Ｏ要求処理手順の概略を示した図である。
【００５１】
リビルド制御手段１００１は、アクセス先がリビルド実施済領域であったときは、アクセス先範囲のデータがキャッシュ１０３に存在するか否かを判定する。存在する場合は、キャッシュ１０３のデータを用いてＩ／Ｏ応答を返す。存在しないときは、リビルド処理が行われたＨＳ２５０の該当領域から要求範囲のデータを読み出し、Ｉ／Ｏ応答を返す。同時に、読み出された要求範囲のデータは、キャッシュ１０３にステージングされる。
【００５２】
また、このとき、リビルド管理情報１０２０を参照し、該当エントリのＩ／Ｏカウント１０２４の値と、規定値とを比較する。そして、Ｉ／Ｏ要求数が規定値を超えていたときには、このエントリが管理するストライプ全体のデータが、キャッシュ１０３にステージングされる。例えば、このエントリが管理するＨＳ２５０の領域が、データｅ２に対応する場合、ストライプ全体のデータとして、ディスク＃０（２１０）からデータｅ１、ディスク＃２からデータｅ３及びＨＳ２５０からデータｅ２を読み出し、キャッシュ１０３にステージングする。ディスク＃３（２４０）に格納されるパリティは、キャッシュ１０３にはステージングしない。さらに、この対象エントリのデータがキャッシュ１０３に常駐されるように、「常駐要求」が出される。キャッシュ１０３を管理するキャッシュ管理手段は、キャッシュ１０３に常駐させることができる場合は、リビルド管理情報１０２０のキャッシュ常駐１０２２の対象エントリに対応する欄が「常駐」に設定する。これにより、データがキャッシュ１０３に常駐される。
【００５３】
このように、ホストからのＩ／Ｏ要求の頻度が高い、すなわち、今後もアクセスが発生する可能性の高いエントリに関するストライプ全体がキャッシュ１０３にステージングされる。これにより、以降のホストからのＩ／Ｏ要求によるディスクアクセスと、リビルド処理によるディスクアクセスとの競合を低減することができる。
【００５４】
次に、このような構成のＲＡＩＤシステムの各処理部が行う処理の手順を、フローチャートを用いて説明する。
図８は、ホストからのＩ／Ｏ要求の受付処理の手順を示したフローチャートである。ホストからのＩ／Ｏ要求の入力によって処理が開始される。
【００５５】
［ステップＳ０１］  Ｉ／Ｏ要求に含まれるアクセス先情報を取得し、構成情報に基づき、アクセス先の論理アドレスが属する対象ＲＬＵがリビルド中であるかどうか判定する。対象ＲＬＵがリビルド中であれば、処理をステップＳ０２に進める。対象ＲＬＵがリビルド中でなければ、処理をステップＳ０６に進める。
【００５６】
［ステップＳ０２］  対象ＲＬＵがリビルド中であるときは、Ｉ／Ｏ要求処理とリビルド処理とのアクセスが競合する事態を低減するようリビルド処理を制御する。まず、対象ＲＬＵに対応するエントリを特定する。Ｉ／Ｏ要求は、ｓｌｂａ（論理ボリュームとしてのブロック番号）と、ブロック数とで要求されるので、これをＲＡＩＤレベル、ＲＬＵメンバディスク数、ＯＬＵの構成情報を用いて、ｐｌｂａ（ディスク上のブロック番号）に変換する。そして、変換されたｐｌｂａに基づいて、Ｉ／Ｏ要求の要求範囲に該当するエントリを特定する。
【００５７】
［ステップＳ０３］  ステップＳ０２で特定されたエントリについて、リビルド管理情報１０２０のＩ／Ｏカウント１０２４をインクリメントする。
［ステップＳ０４］  Ｉ／Ｏ要求されたデータがキャッシュ１０３上にあるかどうかを調べる。例えば、エントリのデータをキャッシュ１０３にステージングするときに、リビルド管理情報１０２０のステータス情報に、該当エントリのデータをステージングしたことを残しておく。そうすれば、リビルド管理情報に基づき、データがキャッシュ１０３上にあるかどうかを判断することができる。データがキャッシュに存在しないときは、処理をステップＳ０５に進める。データがキャッシュ１０３に存在するときは、処理をステップＳ０９に進める。
【００５８】
［ステップＳ０５］  対象ＲＬＵがリビルド中で、かつ、要求されたデータがキャッシュにないときは、リビルド管理情報１０２０のリビルド実施１０２１に基づいて、エントリがリビルド済みであるかどうかを判定する。リビルド処理が未実施であれば、ステップＳ０７へ進み、リビルド処理を行う。リビルド処理が実施済であれば、ステップＳ０８へ進み、キャッシュ処理を行う。
【００５９】
［ステップＳ０６］  対象ＲＬＵがリビルド中でないときは、Ｉ／Ｏ要求処理とリビルド処理との競合は発生しないので、通常のＩ／Ｏ要求処理を行う。そして、Ｉ／Ｏ応答をホストへ返した後、処理を完了する。
【００６０】
［ステップＳ０７］  対象ＲＬＵがリビルド中で、エントリがリビルド処理未実施の場合、リビルド処理を行う。詳細は後述する。そして、リビルド処理後、復元された要求データをホストに返し、処理を完了する。
【００６１】
［ステップＳ０８］  対象ＲＬＵがリビルド中でエントリがリビルド処理実施済である場合、キャッシュ処理を行い、リビルド処理実施済のデータをキャッシュ１０３に格納する。詳細は後述する。そして、キャッシュ処理後、要求データをホストに返し、処理を完了する。詳細は後述する。
【００６２】
［ステップＳ０９］  対象ＲＬＵがリビルド中で、要求データがキャッシュ１０３にある場合、キャッシュ管理処理を行い、データをキャッシュ１０３に常駐させるかどうかを管理する。そして、キャッシュ処理後、要求データをホストに返し、処理を完了する。
【００６３】
Ｉ／Ｏ要求の要求範囲がリビルド未実施領域であったときのリビルド処理について説明する。図９は、リビルド処理の手順を示しフローチャートである。
Ｉ／Ｏ要求の要求範囲として特定されたエントリに対するリビルド処理が未実施であったとき、処理が開始される。
【００６４】
［ステップＳ７１］  エントリが管理する領域に該当する範囲のデータを正常なディスク装置から読み出し、キャッシュ１０３へステージングする。さらに、正常なディスク装置からパリティを読み出し、先に読み出したデータとパリティとを用いて、故障ディスク装置のデータを復元する。復元したデータも、キャッシュ１０３へステージングする。
【００６５】
［ステップＳ７２］  ステップＳ７２で復元されたデータをＨＳ２５０の該当領域に書き込み、データを再構築する。
［ステップＳ７３］  リビルド管理情報１０２０のステータス情報のリビルド実施１０２１の該当エントリの欄に「リビルド実施済」を設定する。
【００６６】
［ステップＳ７４］  Ｉ／Ｏ要求の要求範囲のデータをＩ／Ｏ応答としてホストに返し、処理を完了する。
以上の処理手順が実行されることにより、リビルドが未実施の領域に対し、ホストからＩ／Ｏ要求があったときは、要求範囲を含むエントリにリビルド処理が行われ、データが復元される。また、データを復元するために読み出した正常なディスク装置のデータは、復元されたデータとともにキャッシュ１０３にステージングされる。
【００６７】
次に、Ｉ／Ｏ要求の要求範囲がリビルド実施済領域であったときのキャッシュ処理について説明する。図１０は、キャッシュ処理の手順を示したフローチャートである。
Ｉ／Ｏ要求の要求範囲として特定されたエントリに対するリビルド処理が実施済であったとき、処理が開始される。
【００６８】
［ステップＳ８１］  リビルド管理情報１０２０のＩ／Ｏカウント１０２４から、特定されたエントリに対応するＩ／Ｏカウント数を読み出し、規定値と比較する。Ｉ／Ｏカウント数が規定値を超えない、すなわち、当該エントリへのホストからのＩ／Ｏ要求に頻度が少ないときは、処理をステップＳ８２に進める。Ｉ／Ｏカウント数が規定値を超える、すなわち、当該エントリへのホストからのＩ／Ｏ要求の頻度が高いときには、処理をステップＳ８３に進める。
【００６９】
［ステップＳ８２］  Ｉ／Ｏカウント数が規定値を超えないときは、ＨＳ２５０に格納される当該エントリの復元データから、Ｉ／Ｏ要求の要求範囲のデータを読み出し、キャッシュ１０３へステージングする。そして、処理をステップＳ８５に進める。
【００７０】
［ステップＳ８３］  Ｉ／Ｏカウント数が規定値を超えたときは、ＨＳ２５０に格納される当該エントリの復元データ、及びエントリが管理するストライプ分の範囲全体のデータを正常なディスク装置から読み出し、キャッシュ１０３へステージングする。
【００７１】
［ステップＳ８４］  ステップＳ８２またはステップＳ８３でキャッシュ１０３にステージングしたデータのキャッシュ常駐を要求する。要求が認められれば、リビルド管理情報１０２０のキャッシュ常駐１０２２の当該エントリの欄が「キャッシュ常駐」に設定され、このエントリのデータがキャッシュ１０３に常駐される。
【００７２】
［ステップＳ８５］  キャッシュ１０３にデータをステージングした後、Ｉ／Ｏ要求の要求範囲のデータをＩ／Ｏ応答としてホストに返し、処理を完了する。
以上の処理手順が実行されることにより、このエントリに対するホストからのＩ／Ｏ要求の頻度が所定の規定値を超えるとき、エントリが管理する範囲全体のデータがキャッシュ１０３にステージングされ、キャッシュ常駐が設定される。
【００７３】
次に、Ｉ／Ｏ要求の要求範囲のデータがキャッシュ１０３に存在していたときのキャッシュ管理処理について説明する。例えば、図９の処理手順により、リビルド処理が行われたエントリに関連するデータがキャッシュ１０３にステージングされた後、などに再びこのエントリにＩ／Ｏ要求があったときにこの処理が実行される。また、図１０の処理手順でキャッシュ１０３にデータがステージングされた場合も、同様である。
【００７４】
図１１は、キャッシュ管理処理の手順を示したフローチャートである。Ｉ／Ｏ要求の要求範囲として特定されたエントリのデータがキャッシュに存在していたとき、処理が開始される。
【００７５】
［ステップＳ９１］  特定されたエントリのデータがキャッシュ１０３に常駐されているかどうかを判定する。このため、リビルド管理情報１０２０のキャッシュ常駐１０２２の該当エントリに対応する情報を読み出し、常駐が設定されているかどうかを調べる。常駐が設定されていないときは、処理をステップＳ９２に進める。常駐が設定されているときは、処理をステップＳ９４に進める。
【００７６】
［ステップＳ９２］  特定されたエントリのデータがキャッシュ１０３に常駐が設定されていないときは、リビルド管理情報１０２０のＩ／Ｏカウント１０２４から、所定の期間における当該エントリに対するホストＩ／Ｏ要求の回数を読み出し、規定値と比較する。Ｉ／Ｏカウント数が規定値よりも大きいとき、処理をステップＳ９３に進める。
【００７７】
［ステップＳ９３］  Ｉ／Ｏカウント数が規定値を超えたときは、このエントリに対するキャッシュ常駐１０２２を、「常駐」に設定する。
［ステップＳ９４］  Ｉ／Ｏ要求の要求範囲のデータをＩ／Ｏ応答としてホストに返し、処理を完了する。
【００７８】
以上の処理手順が実行されることにより、エントリごとのホストからのＩ／Ｏ要求の回数が算出され、カウント数が所定の規定値を超えると、そのエントリのデータはキャッシュ１０３に常駐されるようになる。
【００７９】
なお、リビルド管理情報１０２０のＩ／Ｏカウント１０２４及びキャッシュ常駐１０２２は、所定の周期で起動されるタイマまたはタスクによって、０に初期化される。そして、それ以降にホストからこのエントリに対してＩ／Ｏ要求があったとき、カウントアップされる。したがって、ホストからのＩ／Ｏ要求が継続している間は、０以外のカウント数が設定されている。しかし、Ｉ／Ｏ要求がまれになると、カウント数は下がっていき、Ｉ／Ｏ要求がなくなると０になる。例えば、Ｉ／Ｏカウント１０２４の値が所定の期間０を継続しているような場合には、キャッシュ常駐１０２２の「キャッシュ常駐」を解除する。
【００８０】
なお、上記では、実施の形態としてＲＡＩＤ５のＲＡＩＤシステムに適用した場合について説明したが、他のＲＡＩＤレベルについても同様に実施の形態を構成することができる。
【００８１】
以上の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  データを複数のディスク装置に分散して格納し、ホストのＩ／Ｏ要求に応じて前記ディスク装置にアクセスしてＩ／Ｏ要求を実行するディスクアレイシステムにおいて、
冗長化されたデータを分散して格納する前記複数のディスク装置と、
前記複数のディスク装置の一部が故障したときに、故障ディスク装置の代わりとして動作する予備ディスク装置と、
前記ディスク装置の記憶領域を所定の管理単位で分割した管理単位領域ごとに、前記故障ディスク装置のデータを前記故障ディスク装置以外の前記ディスク装置のデータを用いて復元して前記予備ディスク装置に書き込み、前記予備ディスク装置にデータを再構築するリビルド処理手段と、前記管理単位領域についてリビルド処理が完了したか否かの情報を含むリビルド管理情報を格納する管理情報記憶手段と、前記ホストからのＩ／Ｏ要求を受け付け、前記Ｉ／Ｏ要求の要求範囲が前記リビルド処理の対象領域に含まれる場合は、前記要求範囲を含む前記管理単位領域を特定し、前記リビルド管理情報に基づいて特定された前記管理単位領域の前記リビルド処理が未完と判定された場合は、前記リビルド処理手段によって前記管理単位領域のデータを再構築し、データが再構築された後に前記Ｉ／Ｏ要求を実行させるリビルド制御手段と、を備えるディスク制御装置と、
を有することを特徴とするディスクアレイシステム。
【００８２】
（付記２）  前記リビルド処理手段は、予め決められたタイミングで前記管理単位領域ごとに順次前記予備ディスク装置のデータの再構築する通常リビルド処理を行い、前記リビルド制御手段の指示する前記Ｉ／Ｏ要求の要求範囲に対応する前記管理単位領域に対する前記リビルド処理が完了した後は、前記Ｉ／Ｏ要求の前に前記リビルド処理を行った前記管理単位領域の次の領域から前記通常リビルド処理を再開する、ことを特徴とする付記１記載のディスクアレイシステム。
【００８３】
（付記３）  前記リビルド処理手段は、予め決められたタイミングで前記管理単位領域ごとに順次前記予備ディスク装置のデータの再構築する通常リビルド処理を行い、前記リビルド制御手段の指示する前記Ｉ／Ｏ要求の要求範囲に対応する前記管理単位領域に対する前記リビルド処理が完了した後は、前記Ｉ／Ｏ要求に応じた前記リビルド処理を行った前記管理単位領域の次の領域から前記通常リビルド処理を再開する、ことを特徴とする付記１記載のディスクアレイシステム。
【００８４】
（付記４）  前記ディスク制御装置は、前記複数のディスク装置及び前記予備ディスク装置の中から選択された領域のデータのコピーを一時保存するキャッシュメモリと、前記キャッシュメモリを管理するキャッシュ管理手段と、を有し、
前記リビルド制御手段は、前記管理単位領域ごとに、所定の期間に受け付けられた前記管理単位領域に対する前記ホストからのＩ／Ｏ要求の数を算出して前記リビルド管理情報に設定し、
前記キャッシュ管理手段は、前記リビルド管理情報に基づき、前記管理単位領域に対する前記ホストからのＩ／Ｏ要求の数を所定の規定値と比較し、前記管理単位領域に対する前記ホストからのＩ／Ｏ要求の数が前記規定値を超えた場合は、前記管理単位領域のデータを前記キャッシュメモリに常駐させる、
ことを特徴とする付記１記載のディスクアレイシステム。
【００８５】
（付記５）  前記リビルド処理手段は、対象が前記ホストからのＩ／Ｏ要求の要求範囲を含む前記管理単位領域であるときは、前記管理単位領域のデータの復元に用いた前記管理単位領域に対応する前記故障ディスク装置以外の前記ディスク装置から取得した前記管理単位領域と同一のストライプ上のデータを前記キャッシュメモリに格納する、ことを特徴とする付記４記載のディスクアレイシステム。
【００８６】
（付記６）  前記キャッシュ管理手段は、前記ホストからのＩ／Ｏ要求の数が前記規定値を超えたとき、前記キャッシュメモリに当該管理単位領域のデータが格納されていなかった場合は、当該管理単位領域のデータを前記キャッシュメモリに常駐させるとともに、当該管理単位領域に対応する同一ストライプ上のデータを前記キャッシュメモリに格納する、ことを特徴とする付記４記載のディスクアレイシステム。
【００８７】
（付記７）  データを複数のディスク装置に分散して格納し、ホストのＩ／Ｏ要求に応じて前記ディスク装置にアクセスしてＩ／Ｏ要求を実行するディスク制御装置において、
冗長化されたデータを分散して格納する前記複数のディスク装置の記憶領域を所定の管理単位で分割した管理単位領域ごとに、故障ディスク装置のデータを前記故障ディスク装置以外の前記ディスク装置のデータを用いて復元し、前記故障ディスク装置の代わりとして動作する予備ディスク装置に復元データを書き込み、前記予備ディスク装置にデータを再構築するリビルド処理手段と、
前記管理単位領域についてリビルド処理が完了したか否かの情報を含むリビルド管理情報を格納する管理情報記憶手段と、
前記ホストからのＩ／Ｏ要求を受け付け、前記Ｉ／Ｏ要求の要求範囲が前記リビルド処理の対象領域に含まれる場合は、前記要求範囲を含む前記管理単位領域を特定し、前記リビルド管理情報に基づいて特定された前記管理単位領域の前記リビルド処理が未完と判定された場合は、前記リビルド処理手段によって前記管理単位領域のデータを再構築し、データが再構築された後に前記Ｉ／Ｏ要求を実行させるリビルド制御手段と、
を有することを特徴とするディスク制御装置。
【００８８】
（付記８）  データを複数のディスク装置に分散して格納し、ホストのＩ／Ｏ要求に応じて前記ディスク装置にアクセスしてＩ／Ｏ要求を実行させるディスクアレイシステムの再構築処理方法において、
リビルド処理手段が、冗長化されたデータを分散して格納する前記複数のディスク装置の記憶領域を所定の管理単位で分割した管理単位領域ごとに、故障ディスク装置のデータを前記故障ディスク装置以外の前記ディスク装置のデータを用いて復元し、前記故障ディスク装置の代わりとして動作する予備ディスク装置に復元データを書き込み、前記予備ディスク装置にデータを再構築する手順と、
リビルド制御手段が、前記ホストからのＩ／Ｏ要求を受け付け、前記Ｉ／Ｏ要求の要求範囲が前記リビルド処理の対象領域に含まれる場合は、前記要求範囲を含む前記管理単位領域を特定し、管理情報記憶手段に格納される前記管理単位領域についてリビルド処理が完了したか否かの情報を含むリビルド管理情報を読み出し、前記リビルド管理情報に基づいて特定された前記管理単位領域の前記リビルド処理が未完であるか否かを判定する手順と、
前記リビルド処理手段が、前記リビルド処理が未完であると判定された場合は、前記管理単位領域のデータを再構築する手順と、
前記リビルド制御手段が、前記リビルド処理手段によってデータが再構築された後に前記Ｉ／Ｏ要求を実行させる手順と、
を有することを特徴とするディスクアレイシステムの再構築処理方法。
【図面の簡単な説明】
【００８９】
【図１】実施の形態に適用される発明の概念図である。
【図２】実施の形態のＲＡＩＤシステムの構成の一例を示した図である。
【図３】実施の形態のディスク装置の構成例を示した図である。
【図４】リビルド管理情報の一例を示した図である。
【図５】実施の形態のリビルド処理手順の概略を示した図である。
【図６】実施の形態のリビルド未実施領域に対するＩ／Ｏ要求処理手順の概略を示した図である。
【図７】実施の形態のリビルド実施済領域に対するＩ／Ｏ要求処理手順の概略を示した図である。
【図８】ホストからのＩ／Ｏ要求の受付処理の手順を示したフローチャートである。
【図９】リビルド処理の手順を示したフローチャートである。
【図１０】キャッシュ処理の手順を示したフローチャートである。
【図１１】キャッシュ管理処理の手順を示したフローチャートである。
【符号の説明】
【００９０】
１０  ディスク制御装置
１１  管理情報記憶手段
１２  キャッシュ
１３  ディスクインタフェース
１４  リビルド制御手段
１５  Ｉ／Ｏ要求処理手段
１６  リビルド処理手段
１７  キャッシュ管理手段
２１，２２，２３，２４  ディスク装置
２５  予備ディスク装置（ＨＳ）
【図１】
2010009442.tif 000003
【図２】
2010009442.tif 000004
【図３】
2010009442.tif 000005
【図４】
2010009442.tif 000006
【図５】
2010009442.tif 000007
【図６】
2010009442.tif 000008
【図７】
2010009442.tif 000009
【図８】
2010009442.tif 000010
【図９】
2010009442.tif 000011
【図１０】
2010009442.tif 000012
【図１１】
2010009442.tif 000013