JP2006268673A - 記憶制御装置及び記憶デバイスのエラー制御方法 - Google Patents
記憶制御装置及び記憶デバイスのエラー制御方法 Download PDFInfo
- Publication number
- JP2006268673A JP2006268673A JP2005088670A JP2005088670A JP2006268673A JP 2006268673 A JP2006268673 A JP 2006268673A JP 2005088670 A JP2005088670 A JP 2005088670A JP 2005088670 A JP2005088670 A JP 2005088670A JP 2006268673 A JP2006268673 A JP 2006268673A
- Authority
- JP
- Japan
- Prior art keywords
- data
- error
- storage
- predetermined
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2002—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
- G06F11/2005—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication controllers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2002—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
- G06F11/2007—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1009—Cache, i.e. caches used in RAID system with parity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/109—Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】 不正なデータがホストに読み出されるのを未然に防止し、信頼性を高める。
【解決手段】 ディスクアレイサブシステムを制御するコントローラ5は、例えば、各ディスク1〜3にデータを分散させて記憶し、パリティデータを算出してディスク4に記憶させる。あるブロック(D12)への更新が失敗し、データが書き込まれなかった場合、アンコレクタブルエラーとなる。このブロック(D12)のデータは、他のディスクに記憶されているデータ及びパリティデータに基づいて回復される。コントローラ5は、ブロック(D12)に続く他のブロック(D13)についても、関連する他のデータ及びパリティデータに基づいて回復させる。これにより、万が一、アンコレクタブルエラーではないブロック(D13)が、古いデータを記憶している場合でも、正しいデータを作り直してホスト7に提供することができる。
【選択図】 図1
【解決手段】 ディスクアレイサブシステムを制御するコントローラ5は、例えば、各ディスク1〜3にデータを分散させて記憶し、パリティデータを算出してディスク4に記憶させる。あるブロック(D12)への更新が失敗し、データが書き込まれなかった場合、アンコレクタブルエラーとなる。このブロック(D12)のデータは、他のディスクに記憶されているデータ及びパリティデータに基づいて回復される。コントローラ5は、ブロック(D12)に続く他のブロック(D13)についても、関連する他のデータ及びパリティデータに基づいて回復させる。これにより、万が一、アンコレクタブルエラーではないブロック(D13)が、古いデータを記憶している場合でも、正しいデータを作り直してホスト7に提供することができる。
【選択図】 図1
Description
本発明は、記憶制御装置及び記憶デバイスのエラー制御方法に関する。
例えば、政府、官公庁、地方自治体、企業、教育機関等では、多種多量のデータを取り扱うために、比較的大規模な記憶制御装置を用いてデータを管理する。この記憶制御装置は、冗長情報を利用して冗長性を備えた記憶領域(RAID:Redundant Array of Independent Disks)を構成し、この記憶領域にデータを記憶させる(特許文献1)。
このような記憶装置では、データを所定サイズに分割して、複数の記憶デバイスにそれぞれ分散して記憶させると共に、分割された各データからパリティデータを算出してこれを記憶する。これにより、いずれか一つのデータが失われた場合でも、他のデータ及びパリティデータに基づいて、失われたデータを再生(回復)させることができる。
特開平10−149262号
例えば、ハードディスクドライブの場合、一連のデータが複数のセクタにそれぞれ書き込まれる。もしも、あるブロックへのデータ書込みが失敗し、書込み処理が中断した場合は、その中断されたブロック以降の各ブロックには、予定されたデータが書き込まれないことになる。この場合、データが書き込まれなかった全てのブロックについて、その書込みの失敗が検出されるべきである。
しかし、ハードディスクドライブの故障モードによっては、書込みに失敗したブロックが発生し、このブロックに続く他のブロックが未書込み状態であるにもかかわらず、ハードディスクドライブが正常応答するという現象が稀に発生し得ることが発見された。
そこで、本発明の目的は、信頼性を改善できるようにした記憶制御装置及び記憶デバイスのエラー制御方法を提供することにある。本発明の他の目的は、記憶デバイスにエラーが検出された場合に、当該エラーの検出された範囲以外の信頼性を確認ないし回復できるようにした記憶制御装置及び記憶デバイスのエラー制御方法を提供することにある。本発明の更なる目的は、後述する実施の形態の記載から明らかになるであろう。
上記課題を解決すべく、本発明に従う記憶制御装置は、上位装置及び複数の記憶デバイスにそれぞれ接続された記憶制御装置であって、上位装置との間で通信を行うための上位通信部と、各記憶デバイスとの間でそれぞれ通信を行うための下位通信部と、各記憶デバイスによって冗長記憶領域を構成させ、上位通信部を介して受信された上位装置からの指示に基づき、下位通信部を介して冗長記憶領域にデータを入出力する制御部と、を備えている。そして、制御部は、各記憶デバイスのいずれかに所定のエラーが発生したか否かを検出し、所定のエラーを検出した場合には、所定のエラーが検出された記憶デバイスの有する複数の単位記憶領域のうち、少なくとも所定のエラーが検出されたエラー単位記憶領域に続く所定範囲の単位記憶領域について、所定のエラーに関する所定の処理をそれぞれ実行する、ようになっている。
冗長記憶領域は、上位装置から受信したデータを各記憶デバイスのうち少なくとも一部の複数の記憶デバイスに分散させてそれぞれ記憶させ、データに基づいて得られるパリティデータを各記憶デバイスのうち少なくとも一つの記憶デバイスに記憶させることにより、構成することができる。例えば、制御部は、RAID3,RAID4,RAID5として知られているように、データを複数の記憶デバイスに分散させてそれぞれ記憶させ、これら分散されたデータから生成されるパリティデータを、特定の、または、複数の記憶デバイスに記憶させる。データD1,D2,D3の3つのデータと一つのパリティデータPとを例に挙げると、パリティデータPは、各データD1〜D3の排他的論理和を求めることにより得られる(P=D1 xor D2 xor D3)。
ここで、所定のエラーは、例えば、エラー単位記憶領域に記憶されているデータを正常に読み出すことができないエラーである。例えば、所定のエラーは、エラー単位記憶領域に記憶されたデータに関連する他のデータ及びパリティデータに基づいて、エラー単位記憶領域に記憶されたデータの回復が必要なエラーである。例えば、単位記憶領域に書き込まれるデータに、ECC(Error Correcting Code)等のエラー検出及びエラー回復用の冗長情報が付加される場合、このデータと一体化された冗長情報によって検出されるが回復不能なエラーを、所定のエラーとして挙げることもできる。
ここで、所定の処理としては、例えば、所定範囲の単位記憶領域に記憶されているデータを回復する処理を挙げることができる。例えば、制御部は、エラー単位記憶領域及び所定範囲の単位記憶領域にそれぞれ記憶されているデータを、これらのデータにそれぞれ関連する他のデータ及びパリティデータに基づいてそれぞれ回復させることができる。つまり、失われたデータと同一のパリティグループに属する他のデータ及びパリティデータに基づいて、その失われたデータを算出することができる。前記の例で言えば、もしもD1を読み出すことができない場合、他のデータD2,D3及びパリティデータPに基づいて、D1を算出することができる(D1=D2 xor D3 xor P)。
さらに、制御部は、所定の処理を実行した場合に、回復された各データを他の正常な各単位記憶領域にそれぞれ記憶させることもできる。制御部は、例えば、所定の処理を実行した後で、回復された各データを、元の記憶デバイスまたは別の記憶デバイスに退避させることができる。
制御部は、所定の処理として、所定範囲の単位記憶領域に記憶されているデータの信頼性を検査することもできる。例えば、制御部は、所定範囲の単位記憶領域に記憶されているデータを当該データに関連する他のデータ及びパリティデータに基づいて回復し、この回復されたデータから得られる新たなパリティデータと既に記憶されているパリティデータとを比較することにより、両パリティデータが一致するか否かを検査する。両パリティデータが一致する場合、制御部は、所定範囲の各単位記憶領域にそれぞれ記憶されているデータが正しく更新されていると判定することができる。
制御部は、エラー単位記憶領域及び所定範囲の単位記憶領域にそれぞれ記憶されているデータを回復するデータ回復処理と、所定範囲の単位記憶領域に記憶されているデータの信頼性を検査する信頼性検査処理との両方を実行することもできる。
そして、この場合、所定範囲は、データ回復処理と信頼性検査処理とでそれぞれ異なるように設定することができる。例えば、データ回復処理の適用される範囲(その開始位置及び終了位置)と信頼性検査処理の適用される範囲(その開始位置及び終了位置)とは、互いに別々の独立した値として設定することができる。例えば、データ回復処理は、エラー単位記憶領域を開始位置とし、上位装置からのリード要求で示された読出し範囲の末尾に位置する単位記憶領域を終了位置とすることができる。これに対し、信頼性検査処理は、エラー単位記憶領域の次の単位記憶領域を開始位置とし、この開始位置から所定数の単位記憶領域までを所定範囲として行うことができる。
さらに、制御部は、所定の処理を実行した場合に、所定のエラーが発生した記憶デバイスを閉塞させることもできる。例えば、制御部は、所定のエラーが生じた記憶デバイスの使用を禁止する。
また、所定範囲は、上位通信部を介して上位装置に転送可能な単位記憶領域の最大数として決定することができる。例えば、一回のリード要求またはライト要求で転送可能な最大の単位記憶領域数だけ、所定範囲内の各単位記憶領域について所定の処理をそれぞれ行うことができる。または、所定範囲は、上位装置から指示された範囲に基づいて決定することもできる。例えば、上位装置からのリード要求によって読出し範囲が指定されるが、この場合、エラー単位記憶領域の次に位置する単位記憶領域から読出し範囲の末尾に位置する単位記憶領域までを所定範囲とし、所定の処理を行うことができる。あるいは、エラー単位記憶領域から読出し範囲の末尾に位置する単位記憶領域までを所定範囲とすることもできる。さらに、所定範囲は、可変に設定することもできる。例えば、エラー単位記憶領域に続く各単位記憶領域について、1つまたは複数ずつそれぞれ所定の処理を行うことができる。
制御部は、上位装置からのリード要求が上位通信部によって受信された場合に、各記憶デバイスのいずれかに所定のエラーが発生したか否かを検出することができる。即ち、エラー検出のトリガとして、上位装置からのリード要求を用いることができる。
さらに、制御部は、各記憶デバイスが正常に動作するか否かの診断を周期的または非周期的に検査することができる。この診断を行う場合に、各記憶デバイスのいずれかに所定のエラーが発生したか否かを検出することもできる。即ち、既に設けられている診断処理と一緒にエラー検出を行うことができる。
さらに、制御部は、所定のエラーと異なる種類の他のエラーが各記憶デバイスのいずれかに発生したか否かを監視し、他のエラーの発生状態に基づいて、各記憶デバイスがそれぞれ有する各単位記憶領域にそれぞれ記憶されているデータの信頼性を検査することもできる。例えば、制御部と各記憶デバイスとを接続する通信インターフェースにおいてエラーが所定値以上生じた場合には、所定のエラーが発生する可能性が高いと推測し、各単位記憶領域に記憶されているデータの信頼性をそれぞれ検査することができる。
本発明の他の側面に従う記憶デバイスのエラー制御方法は、パリティデータを用いて構成される冗長記憶領域を上位装置に提供する複数の記憶デバイスのいずれかに所定のエラーが発生した場合のエラーの検出及び制御方法である。この方法には、予め設定されている所定のタイミングが到来したか否かを判定するステップと、所定のタイミングが到来したと判定された場合は、各記憶デバイスのいずれかに所定のエラーが発生したか否かを検出するステップと、所定のエラーが検出された場合は、所定のエラーが検出された記憶デバイスの有する複数の単位記憶領域のうち、少なくとも所定のエラーが検出されたエラー単位記憶領域に続く所定範囲の単位記憶領域について、所定のエラーに関する所定の処理を実行するステップと、を含むことができる。
そして、所定の処理を実行するステップには、エラー単位記憶領域及び所定範囲の単位記憶領域にそれぞれ記憶されているデータを、これらのデータにそれぞれ関連する他のデータ及びパリティデータに基づいてそれぞれ回復させるステップと、所定範囲の単位記憶領域に関して回復されたデータから得られる新たなパリティデータと既に記憶されているパリティデータとを比較することにより、両パリティデータが一致するか否かを検査するステップとを含めることができる。
本発明の手段、機能、ステップの全部または一部は、コンピュータシステムにより実行されるコンピュータプログラムとして構成可能な場合がある。本発明の構成の全部または一部がコンピュータプログラムから構成された場合、このコンピュータプログラムは、例えば、各種記憶媒体に固定して配布等することができ、あるいは、通信ネットワークを介して送信することもできる。
図1は、本発明の実施形態の全体概要を示す構成説明図である。本実施形態では、後述のように、アンコレクタブルエラーが発生した場合に、このエラーの生じたブロック(エラーブロック)に続く所定範囲内の各ブロックについて、データの回復または/及びデータの信頼性確認を行うようになっている。即ち、本発明は、アンコレクタブルエラーが検出された場合には、アンコレクタブルエラーが検出されていない他のブロックについて、予め所定の処理を行い、不正なデータの転送を回避または防止する。
本実施形態の記憶制御装置は、ホスト(7)及び複数の記憶デバイス(1〜4)にそれぞれ接続されている。この記憶制御装置は、ホスト(7)との間で通信を行うための上位通信部と、各記憶デバイス(1〜4)との間でそれぞれ通信を行うための下位通信部と、各記憶デバイスによってパリティデータを利用する冗長記憶領域を構成させ、上位通信部を介して受信されたホスト(7)からの指示に基づき、下位通信部を介して冗長記憶領域にデータを入出力する制御部(5)と、この制御部(5)により使用されるメモリ(6)と、を備えている。
そして、制御部(5)は、ホスト(7)からデータのリード要求が発行されたか否かを判定するステップと、ホスト(7)からリード要求が発行された場合は、この要求されたデータを記憶する記憶デバイス(1)〜(3)の各ブロック(D11〜D13,D21〜D23,D31〜D33)からデータを順番に読出してメモリ(6)にそれぞれ記憶させるステップと、各ブロック(D11〜D13)のうち、データを正常に読み出すことができなかったエラーブロック(D12)を検出するステップと、エラーブロック(D12)からリード要求で指定された読出し範囲の末尾に対応するブロック(D13)までの各ブロックにそれぞれ記憶されているデータを、これらのデータにそれぞれ関連する他のデータ(D22,D23,D32,D33)及びパリティデータ(P2,P3)に基づいてそれぞれ回復させ、これら回復した各データをメモリ(6)に記憶させるステップと、読出し範囲に含まれる全てのデータがメモリ(6)に記憶された場合は、これらのデータをホスト(7)に転送させるステップと、エラーブロック(D12)の次に位置するブロック(D13)から読出し範囲の末尾に対応するブロック(図1中ではD13だが、もしもD13の次にD14が存在し、D14が末尾ならばD14となる)までの所定の各ブロックに関してそれぞれ回復されたデータに基づいて、新たなパリティデータをそれぞれ生成するステップと、所定の各ブロック(D13)に記憶されているデータに関して既に記憶されている各旧パリティデータと新たに生成された各新パリティデータとが一致するか否かを判定するステップと、各旧パリティデータと各新パリティデータとの組がいずれか一つでも一致しない場合には、エラーブロック(D12)を有する記憶デバイス(1)を閉塞させるステップと、をそれぞれ実行する。
コントローラ5は、複数の記憶デバイス1〜4とそれぞれ接続されている。コントローラ5は、メモリ6及びCPU(不図示)を備えたコンピュータシステムとして構成することができる。コントローラ5は、ホスト7からのコマンドに応じて、各記憶デバイス1〜4へのデータ入出力をそれぞれ制御する。ホスト7は、例えば、サーバマシンやメインフレームマシン等として構成することができる。
各記憶デバイス1〜4は、例えば、ハードディスクドライブとして構成される。各記憶デバイス1〜4をハードディスクドライブとして構成する場合、各記憶デバイス1〜4は、例えば、1つまたは複数のディスクと、各ディスクをそれぞれ回転させるための回転機構と、各ディスクへの読み書きをそれぞれ行うための磁気ヘッドと、この磁気ヘッドを移動させるためのヘッド駆動機構とを備えて構成される。各ディスクには、複数のトラックが同心円状にそれぞれ形成されており、これら各トラックをディスクの中心から放射状に区切ることにより、各トラックは複数のセクタに分割されている。このセクタが、ハードディスクドライブの最小の記憶単位となる。
コントローラ5は、各記憶デバイス1〜4がそれぞれ有する物理的な記憶領域に基づいて、論理的な記憶領域を生成する。この論理的な記憶領域は、例えば、RAID3,RAID4,RAID5のような冗長構造を備えている。図に示す例では、記憶デバイス1〜3にデータが格納され、記憶デバイス4にはパリティデータが記憶される。記憶デバイス1〜3をデータディスク、記憶デバイス4をパリティディスクとも呼ぶ。但し、パリティデータを特定の記憶デバイス4のみに記憶させる必要はなく、各記憶デバイス1〜4にそれぞれ分散させて記憶させてもよい。
コントローラ5は、ホスト7からライト要求が発行された場合は、ホスト7から受信したライトデータを分割し、各記憶デバイス1〜4の各セクタにそれぞれ分散させて記憶させる。例えば、コントローラ5は、ホスト7から受信されたライトデータを、各セクタ(ブロック)毎のデータD11,D12,D13,D21,D22,D23,D31,D32,D33として分割し、これら分割されたデータを各記憶デバイス1〜3に分散して記憶させる。図示の例では、第1記憶デバイス1にはD11〜D13が記憶され、第2記憶デバイス2にはD21〜D23が記憶され、第3記憶デバイス3にはD31〜D33が記憶される。
また、コントローラ5は、各データD11〜D33からパリティデータP1〜P3をそれぞれ生成し、このパリティデータを第4記憶デバイス4に記憶させる。ここで、パリティデータP1はデータD11,D21,D31に基づいて生成され、パリティデータP2はデータD12,D22,D32に基づいて生成され、パリティデータP3はデータD13,D23,D33に基づいて生成される。共通のパリティデータを有する一組のデータ群の中でいずれか一つのデータが失われた場合でも、他のデータ及びパリティデータに基づいて、その失われたデータを回復することができる。
さて、通常の場合、記憶デバイス1〜4は、各ブロックにデータを正常に書き込むと、正常に書込みが行われた旨をコントローラ5に通知する。もしも、データをブロックに書き込んでいる途中で、何らかの原因により、その書込み処理が中断された場合、記憶デバイスは、書込みが失敗した旨をコントローラ5に通知する。図1(a)では、D12への書込みが失敗した様子を示している。D12への書込みが失敗した場合、これに続くD13への書込み処理(更新処理)も行われない。従って、D13の内容は、更新前の古いデータのままとなっている。
しかし、D12へのデータ書込みに失敗し、D12に続くD13への書込みが行われていないにも係わらず、書込み失敗が検出できないケースも稀にあることが判明した。この場合、図1(b)に示すように、ホスト7がD11〜D13の読出しを要求すると、正常に更新されたD11はそのまま記憶デバイス1から読み出すことができる。次に、書込みが失敗したD12は、ECC等によってデータの誤りを復元することができないため、他のデータD22,D32,P2に基づいて復元される。ECCのビット数にもよるが、ECCでは、ブロック中の一部のビットのみを修復可能である。
D13は全く更新されていないため、D13に関連づけられるECCでは、更新されたか否かを検出することはできない。従って、コントローラ5からは、D13の記憶内容が正しいかのように見える。しかし、上述した稀なケースでは、D13の内容は更新されていないため、古いデータのままである。従って、ホスト7がD13のデータをそのまま読出して利用すると、更新前の古いデータ(不正データ)に基づいて業務処理が行われることになる。
そこで、本実施形態では、D12を読み出す際に、D12にアンコレクタブルエラーが発生していることを検出した場合は、D12に続く所定範囲のブロック(図示の場合はD13)についても、実際にエラーが生じているか否かを問わずに、他のデータD23,D33,P3に基づいて回復することとした。従って、コントローラ5のデータ回復処理8は、アンコレクタブルエラーを生じたD12及びD12に続くD13のそれぞれについて実施される。
なお、D13を先にメモリ6上に読出した後で、このD13の記憶内容が正しいか否かを検証することも可能である。記憶内容が正しいか否かの検証は、そのデータに関連して記憶されているパリティデータ(旧パリティデータ)と、改めて生成し直したデータについて再度算出されるパリティデータ(新パリティデータ)との比較により、行うことができる。このパリティデータの照合処理を、例えば、パリティ整合性チェックと呼ぶことができる。このパリティ整合性チェックは、XOR演算によるデータの回復処理が前提となるため、先にデータを回復してホスト7に転送し、後からパリティ整合性チェックを行う方が、コントローラ5の応答性能は高くなる。
このように、本実施形態によれば、アンコレクタブルエラーが検出された場合に、このアンコレクタブルエラーの検出されたブロック以外の他のブロックについても、パリティデータ等に基づいてデータを回復する構成とした。従って、万一、アンコレクタブルエラーの生じたブロックに続く他のブロックが正しく更新されていない場合でも、更新前のデータがホスト7に提供されるのを未然に防止することができ、信頼性を改善することができる。以下、本実施形態をより詳細に説明する。
図2は、本実施例によるストレージシステムの全体構成を示すブロック図である。このストレージシステムは、それぞれ後述するように、例えば、ホスト10と、管理端末20と、ディスクアレイサブシステム100とから構成することができる。
ホスト10は、例えば、CPU(Central Processing Unit)やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。ホスト10は、例えば、アプリケーションプログラム11と、通信ネットワークCN1を介してディスクアレイサブシステム100にアクセスするためのHBA(Host Bus Adapter)12とを備えている。
通信ネットワークCN1としては、例えば、LAN(Local Area Network)、SAN(Storage Area Network)、インターネット、専用回線、公衆回線等を、場合に応じて適宜用いることができる。LANを介するデータ通信は、例えば、TCP/IPプロトコルに従って行われる。ホスト10がLANを介してディスクアレイサブシステム100に接続される場合、ホスト10は、ファイル名を指定してファイル単位でのデータ入出力を要求する。
ホスト10がSANを介してディスクアレイサブシステム100に接続される場合、ホスト10は、ファイバチャネルプロトコルに従って、複数のディスクドライブにより提供される記憶領域のデータ管理単位であるブロックを単位として、データ入出力を要求する。通信ネットワークCN1がLANである場合、なお、HBA11は、例えばLAN対応のネットワークカードである。通信ネットワークCN1がSANの場合、HBA11は、例えばホストバスアダプタである。
なお、ホスト10がメインフレームとして構成される場合、ホスト10は、例えば、FICON(Fibre Connection:登録商標)、ESCON(Enterprise System Connection:登録商標)、ACONARC(Advanced Connection Architecture:登録商標)、FIBARC(Fibre Connection Architecture:登録商標)等の通信プロトコルに従ってデータ転送を行う。
管理端末20は、ストレージシステムの構成等を管理するためのコンピュータ装置であり、例えば、システム管理者等のユーザにより操作される。管理端末20は、通信ネットワークCN4を介して、ディスクアレイサブシステム100に接続されている。管理端末20は、例えば、ストレージ管理部21と、通信ネットワークCN4に接続するためのLANポート22とを備えて構成することができる。ストレージ管理部21は、例えば、ソフトウェアとして構成され、ディスクアレイサブシステム100に各種の指示を与える。この指示によって、ディスクアレイサブシステム100内の制御情報やテーブル等を書き換えることができる。また、管理端末20は、ディスクアレイサブシステム100から各種の情報を取得し、これを端末画面に表示させることもできる。
ディスクアレイサブシステム100は、複数のコントローラ200と、ストレージ部300とに大別することができる。各コントローラ200は、ホスト10からのコマンドを処理し、ストレージ部300へのデータ入出力を行う。各コントローラ200は、二重化されており、それぞれ同一の構成を備える。
そこで一方のコントローラ200について説明する。コントローラ200は、例えば、制御部210と、データ処理回路220と、上位通信部230と、下位通信部240と、キャッシュメモリ250と、システムメモリ260と、フラッシュメモリ270とを備えて構成することができる。
制御部210は、例えばCPUとして構成される。制御部210は、フラッシュメモリ270に記憶されているプログラムコードを読出して実行することにより、コントローラ200の全体動作を制御する。制御部210は、プログラムコードの実行に際して、システムメモリ260を利用することができる。
データ処理回路220は、ホスト10からのユーザデータの入出力を制御するハードウェア回路である。データ処理回路220は、ホスト10から受信したライトデータをストレージ部300に記憶させたり、ホスト10から要求されたリードデータをストレージ部300またはキャッシュメモリ250から読出してホスト10に送信する。制御部210とデータ処理回路220とは接続されており、制御部210は、データ処理回路220を介してキャッシュメモリ250等に接続することができる。また、一方のコントローラ200のデータ処理回路220と他方のコントローラ200のデータ処理回路220とは、互いに接続されており、これにより各コントローラ200間で連携動作を行うことができるようになっている。
上位通信部230は、ホスト10との間で通信を行うためのものである。上位通信部230は、複数のホスト10にそれぞれ接続することができ、それぞれのホスト10との間の通信を独立して行うことができる。下位通信部240は、ストレージ部300との間で通信を行うためのものである。下位通信部240は、複数の経路CN2を介して、複数のディスクアレイとそれぞれ接続されている。上位通信部230がホスト10から受信したライトデータは、キャッシュメモリ250に記憶された後、下位通信部240を介して所定のディスクドライブ310に書き込まれる。下位通信部240が所定のディスクドライブ310から読出したデータは、キャッシュメモリ250に記憶された後、上位通信部230によりホスト10に送信される。
なお、各コントローラ200の制御部210は、LAN等の通信ネットワークCN3によってLANポート110に接続されている。LANポート110は、管理端末20との間で通信を行うためのものである。各制御部210は、通信ネットワークCN3を介して、互いに通信を行うことができる。また、管理端末20は、通信ネットワークCN3を介して、各コントローラ200から情報をそれぞれ収集したり、各コントローラ200に必要な指示をそれぞれ与えることができる。
ストレージ部300は、複数のディスクドライブ310を備えている。ディスクドライブ310としては、例えば、ハードディスクドライブ、フレキシブルディスクドライブ、磁気テープドライブ、半導体メモリドライブ、光ディスクドライブ、ホログラフィックメモリドライブ等のような各種の記憶デバイス及びこれらの均等物を使用可能である。また、例えば、FC(Fibre Channel)ディスクやSATA(Serial AT Attachment)ディスク等のように、異なる種類のディスクドライブをストレージ部300内に混在させることも可能である。本実施例では、ディスクドライブ310がハードディスクドライブである場合を例に挙げて説明する。
各ディスクドライブ310は、それぞれ制御回路311を備えている。制御回路311は、例えば、磁気ディスクの回転や磁気ヘッドの駆動等を制御する。制御回路311は、下位通信部240から入力されたコマンドに基づいて、磁気ディスクへのデータの書込み及び磁気ディスクからのデータの読出しを行う。各ディスクドライブ310は、それぞれ異なる経路CN2により、各コントローラ200とそれぞれ接続されている。従って、もしも、いずれか一方のコントローラ200または経路CN2に障害が生じた場合でも、他方のコントローラ200及び経路CN2を介してデータの入出力を行うことができる。
図3は、コントローラ200の制御構造の概略を示すブロック図である。カーネル400は、通信処理410を介して、ホスト10からデータやコマンドを受信する。カーネル400は、ジョブ群420に登録されている各ジョブをそれぞれ所定のタイミングで実行する。
ジョブ群420には、例えば、コマンド処理421と、オンラインベリファイ処理422と、パリティ回復処理423とが含まれている。コマンド処理421は、ホスト10から受信されたコマンドに基づいて生成される。オンラインベリファイ処理422は、ディスクドライブ310の診断を行うための処理である。後述の実施例では、オンラインベリファイ処理を実行する際に、所定範囲のディスクドライブ310についてパリティチェックを行うようになっている。パリティ回復処理423は、パリティデータ及び他のデータに基づいて、データを回復(再生)させる処理である。
I/O(Input/Output)スケジューラ430は、ディスクドライブ310へのデータ入出力タイミングを制御する。I/O処理440は、ディスクドライブ310にデータを読み書きするための処理である。パリティ生成処理450は、複数のデータでXOR演算を行うことにより、パリティデータを生成するための処理である。なお、図示した処理以外に、例えば、計画停止を行うための処理や、ディスクドライブ310からキャッシュメモリ250にデータを記憶させるステージング処理、リストア制御処理等をジョブ群420に含めることができる。
制御処理群460には、例えば、キャッシュ制御処理461と、RAID制御処理462とを含めることができる。キャッシュ制御処理461は、キャッシュスケジューラ470からの指示に基づいて、キャッシュメモリ250へのデータ入出力等を制御する。キャッシュ制御処理461は、例えば、ディステージ処理前のライトデータ(ダーティデータ)を各コントローラ200のキャッシュメモリ250でそれぞれ保持させるように、各キャッシュメモリ250を管理する。RAID制御処理462は、所定数のディスクドライブ310によってRAIDグループ(パリティグループ)を構成し、冗長記憶領域を生成するための処理である。なお、制御処理群460には、図示した処理以外に、例えば、コントローラ間通信処理や資源管理処理等を含めることができる。
図4は、冗長記憶領域の構成及びデータ入出力方法を示す説明図である。この実施例では、説明の便宜上、3個のディスクドライブ310をデータディスクとして使用し、1個のディスクドライブ310をパリティディスクとして使用する場合を例に挙げる。しかし、これに限らず、RAID5として知られているように、データ及びパリティデータを各ディスクドライブ310にそれぞれ分散させて記憶させてもよい。また、一つのパリティグループを構成するディスクドライブ310の数は、3個に限定されない。
図4に示すように、ディスクドライブ310(D1)〜ディスクドライブ310(D3)は、それぞれデータディスクとして使用されており、ディスクドライブ310(P)はパリティディスクとして使用されている。以下、データを記憶するディスクドライブ310をデータディスクと、パリティデータを記憶するディスクドライブ310をパリティディスクと、それぞれ呼ぶ場合がある。
ホスト10からライトコマンドが発行され、コントローラ200がライトデータを受信すると、このライトデータはD11,D21,D31に分割され、各データディスク310(D1)〜310(D3)の所定セクタにそれぞれ格納される(S1)。コントローラ200は、データD11,D21,D31を記憶させる際に、これらのデータからパリティデータP1を算出する(S2:P1=D11 xor D21 xor D31)。コントローラ200は、算出されたパリティデータP1をパリティディスク310(P)に記憶させる(S3)。
ホスト10がデータD11の更新を要求する場合、ホスト10は、新たなデータD11nをコントローラ200に送信する(S4)。コントローラ200は、データD11nを所定のデータディスク310(D1)に記憶させる前に、旧データD11をデータディスク310(D1)から読み出すと共に(S5)、旧パリティデータP1をパリティディスク310(P)から読み出す(S6)。
コントローラ200は、旧データD11と新データD11nと旧パリティデータP1とから、新たなパリティデータP1nを算出する(S7:P1n=D11n xor D11 xor P1)。この算出方法に代えて、新たなパリティデータP1nを、D11nとD21及びD23から算出することもできる。但し、後者の算出方法では、旧データを全て読み出すため、データディスクの数が多い場合は、算出時間が長くなる。前者の方法では、データディスクの数と無関係に、新パリティデータを得ることができる。
コントローラ200は、新たなパリティデータP1nをパリティディスク310(P)に記憶させる(S8)。そして、コントローラ200は、新たなデータD11nで旧データD11を上書きする(S9)。このように、関連するデータ(D11,D21,D31)の一部が更新される場合は、改めてパリティデータが算出され、更新される。
図5は、パリティデータを用いてデータを再生する様子を示す説明図である。例えば、何らかの原因により、図4で更新されたはずのデータD11nの書込み処理が実は失敗していたとする。
データD11nには、所定ビットのECCが付加されているため、僅かなビットエラーは自動的に修復することができる。しかし、ECCの修復能力を超えてビットエラーが発生した場合は、データD11nをデータディスク310(D1)から正常に読み出すことができない(S10)。このような読出しエラーをアンコレクタブルエラーと呼ぶ。
そこで、コントローラ200は、この読出しに失敗したデータD11nに関連する他のデータD21,D31及びパリティデータP1nをそれぞれ読出し(S11)、データD11nを算出する(S12:D11n=D21 xor D31 xor P1n)。これにより回復されたデータD11nは、ホスト10に転送される。このように、一組のデータ及びパリティデータ群の中で、いずれか一つのデータまたはパリティデータが失われた場合でも、残された他のデータによって、その失われたデータを回復することができる。
図6は、一つの観点から見た本実施例の主要な機能を示す構成説明図である。ここで、ホスト10からの更新要求(ライト要求)により、データディスク310(D1)のブロック領域Baには正常にデータが書き込まれ、次のブロック領域Bbにはアンコレクタブルエラーが発生したとする。最後のブロック領域Bcは、正常に更新されたか否か不明な領域である。例えば、ブロック領域Baは「正常領域」と、ブロック領域Bbは「エラー領域」と、ブロック領域Bcは「要確認領域」または「未確認領域」と、それぞれ呼ぶことができる。各ブロック領域Ba,Bb,Bcは、それぞれ少なくとも一つ以上のブロック(セクタ)から構成されている。但し、Ba及びBcは、それぞれ0個である場合もある(Ba=Bc=0)。
ホスト10は、データの読出しを要求する場合、その読出し範囲を指定してコントローラ200にリードコマンドを発行する。ここでは、データディスク310(D1)の各ブロック領域Ba,Bb,Bcが、読出し範囲として指定されたものとする。
最初のブロック領域Baでは正常にデータ更新が行われているため、このブロック領域Baからは、そのまま正常にデータを読み出すことができる。ブロック領域Baから読み出されたデータは、キャッシュメモリ250に記憶される。
次のブロック領域Bbでは、アンコレクタブルエラーが発生しているため、データを読み出すことができない。従って、ブロック領域Bbに記憶されるべきであったデータは、データ回復処理221により、このデータに対応する他のデータ及びパリティデータに基づいて回復される。即ち、他のデータディスク310(D2),310(D3)及びパリティディスク310(P)の対応する各ブロック領域Bbからデータまたはパリティデータがそれぞれ読み出され、XOR演算が行われる。これにより、データディスク310(D1)のブロック領域Bbのデータを回復させることができる。なお、データ回復処理221及び後述のパリティ生成処理222及びパリティ整合性チェック処理223は、例えば、それぞれデータ処理回路220により実行される。
さらに、データ回復処理221は、アンコレクタブルエラーの発生したブロック領域Bb以外に、このブロック領域Bbに続くブロック領域Bcについても、前記同様のデータ回復を行う。
つまり、アンコレクタブルエラーが検出された場合、データ回復処理221は、そのアンコレクタブルエラーの生じた位置からホスト10から指定された読出し範囲の終了位置までの各ブロックにそれぞれ記憶されている各データを、これら各データにそれぞれ対応するパリティデータ及び他のデータに基づいてそれぞれ回復する。データ回復処理221は、アンコレクタブルエラーの検出されたブロックに続く他の連続した各ブロックにそれぞれ記憶されているデータが正しいか否かを問わずに、各データをそれぞれ回復する。データ回復処理221は、ブロック領域Bcに含まれる各ブロックのデータをそれぞれ回復し、この回復された各データをキャッシュメモリ250に記憶させる。
これにより、キャッシュメモリ250上には、ホスト10から要求された範囲の全データが揃うため、コントローラ200は、キャッシュメモリ250上に読み出されたデータをホスト10に転送する。
なお、上記の説明は、一回の転送で送信可能な最大のデータサイズ(最大転送サイズ)で、ホスト10とコントローラ200とが通信を行う場合である。ホスト10は、最大のデータサイズで読出し範囲を指定可能である。コントローラ200は、指定された範囲のデータが揃ってからホスト10に転送する。最大のデータサイズで通信を行うことにより、ホスト10とコントローラ200との間の通信回数を低減して、ホスト10及びコントローラ200の負荷をそれぞれ少なくすることができる。但し、これに限らず、読出し範囲内の全データが揃うのを待たず、キャッシュメモリ250上に読み出されたデータから順番にホスト10に転送する構成でもよい。例えば、ホスト10から指定された範囲のデータを、複数回に分けてホスト10に転送することも可能である。
コントローラ200は、ホスト10からのリード要求を処理した後、あるいは、そのリード要求を処理しながら、パリティ整合性のチェックを行う。データ処理回路220により実行されるパリティ生成処理222は、各データディスク310(D1)〜310(D3)のブロック領域Bcにそれぞれ記憶されているデータに基づいて、改めてパリティデータをそれぞれ生成する。データ処理回路220により実行されるパリティ整合性チェック処理223は、改めて算出されたそれらの各パリティデータと、パリティディスク310(P)に既に記憶されているブロック領域Bcに関する各パリティデータとをそれぞれ比較する。
算出し直された各パリティデータと、既に記憶されていた各パリティデータとが、それぞれ一致する場合、アンコレクタブルエラーの検出されたデータディスク310(D1)のブロック領域Bcは、正常であると判断することができる。正常とは、ブロック領域Bcに含まれる各ブロックには、前回の更新時にそれぞれ正しくデータが書き込まれていることを意味する。
従って、そのデータディスク310(D1)は、アンコレクタブルエラーの発生が検出されたが、そのまま継続して使用可能である。データディスク310(D1)を継続して使用する場合、エラーの生じたブロック領域Bbについて回復された各データは、予備のブロック領域または同一のブロック領域Bbに記憶させることができる。各ディスク(ディスクドライブ)310は、それぞれ予備のブロックを複数ずつ備えており、障害の発生したブロックに代えて、その予備のブロックを使用できるようになっている。
逆に、ブロック領域Bcに関して、各データディスク310(D1)〜310(D3)に記憶されている各データに基づいて算出し直された各パリティデータと、パリティディスク310(P)に記憶されている各パリティデータとが、一部でも一致しない場合、データディスク310(D1)の信頼性は、低下する。
明示的にエラーが検出されたブロック領域Bbよりも、エラーを潜在させたブロック領域Bcの方が、データディスク310(D1)の信頼性に打撃を与える。データディスク310(D1)のブロック領域Bcは、前回のライト要求時にデータが更新されなかったにも拘わらず、正常に更新されたかのように振る舞ったことになる。そこで、コントローラ200は、データディスク310(D1)の使用禁止を決定し、そのデータディスク310(D1)の閉塞処理を行う。この閉塞処理では、データディスク310(D1)をディスクアレイサブシステムから切り離し、データディスク310(D1)の代わりに予備のデータディスクを使用する。データディスク310(D1)に記憶されていたデータは、パリティデータ等に基づいて回復され、その予備のデータディスクに記憶される。
図7は、リード要求の処理を示すフローチャートである。以下の各フローチャートでも同様であるが、各フローチャートは、処理の概略をそれぞれ示しており、実際のプログラムとは相違する。
コントローラ200が、ホスト10からのリードコマンドを受信すると、本処理は開始される。コントローラ200は、リードコマンドを解析して、読出しを開始するブロックのアドレス(LBA:Logical Block Address)及びブロック数を把握する。コントローラ200は、読出しを要求された範囲について、その開始ブロックから順番にデータをそれぞれ読出し、キャッシュメモリ250に記憶させる(S21)。
コントローラ200は、ホスト10から要求された全データ(あるいは、一回の転送で送信可能な分のデータ)を、キャッシュメモリ250上に読出したか否かを判定する(S22)。リード要求に関する各ディスクドライブ310に異常がなく、要求された全てのデータを正常にキャッシュメモリ250上に読み出せた場合(S22:YES)、コントローラ200は、キャッシュメモリ250上のデータをホスト10に転送する(S23)。これにより、本処理は正常に終了する。
一方、ホスト10から要求されたデータを一部でも読み出すことができなかった場合(S22:NO)、コントローラ200は、読出しを要求された範囲内でアンコレクタブルエラーが発生したか否かを判定する(S24)。
アンコレクタブルエラーが発生していない場合(S24:NO)、コントローラ200は、読み出せなかったブロックから再度のデータ読出しを試みる(S25)。そして、コントローラ200は、全てのデータをキャッシュメモリ250上に読み出せたか否かを再び判定する(S22)。全てのデータを読み出せた場合(S22:YES)、そのデータをホスト10に転送する(S23)。なお、所定回数リトライしてもデータを読み出せなかった場合は、エラーとして処理を終了することができる(不図示)。
アンコレクタブルエラーの発生が検出された場合(S24:YES)、そのアンコレクタブルエラーの生じたブロックから、読出し範囲の末尾に対応するブロックまでの各ブロックについて、それぞれデータを回復する(S26)。
次に、コントローラ200は、アンコレクタブルエラーの検出されたブロック(エラーブロック)の次に位置するブロックから、読出し要求範囲の末尾に位置するブロックまでの各ブロックについて、それぞれパリティデータを算出し直す(S27)。そして、コントローラ200は、パリティディスクから読出した各パリティデータ(旧パリティデータ)と改めて算出された各パリティデータ(新パリティデータ)とを比較し、両者が全て一致するか否かを判定する(S28)。
各旧パリティデータと各新パリティデータとが全て一致する場合(S28:YES)、コントローラ200は、アンコレクタブルエラーの検出されたブロックについて、修復処理を実行する(S29)。修復処理では、エラーブロックに対し予備の交替ブロックを割当て、エラーブロックに関して回復されたデータを交替ブロックに書き込む。
これに対し、各旧パリティデータと各新パリティデータとが一部でも一致しない場合(S28:NO)、コントローラ200は、エラーブロックを有するディスクドライブ310の閉塞処理を実行する(S30)。閉塞処理では、例えば、アンコレクタブルエラーの検出されたディスクドライブ310をストレージ部300から論理的に切り離して使用を禁止し、このディスクドライブ310に記憶されていたデータを予備のディスクドライブに退避させる。
図8は、管理端末20の端末画面に表示される警告例を示す説明図である。コントローラ200からの情報に基づいて、管理端末20のストレージ管理部21は、図8に示すような警告画面を生成し、システム管理者等のユーザに提供する。
警告画面には、例えば、イベント発生時刻を示す領域G1,G4と、イベントの内容を示す領域G2,G5と、イベントの詳細を示す領域G3とを含めることができる。本実施例に関するイベント内容としては、例えば、「ディスクドライブの閉塞」(G2)と、「新旧のパリティに不整合発生」(G5)とを挙げることができる。イベントの詳細情報としては、例えば、閉塞処理されたディスクドライブ310を特定する識別情報(ドライブ番号等)を挙げることができる。
このように構成される本実施例では、以下の効果を奏する。本実施例では、アンコレクタブルエラーの発生が検出された場合、エラーブロックのデータを回復させると共に、エラーブロックに続く所定範囲の各ブロック(未確認領域の各ブロック)について、パリティデータを用いたデータ回復処理221及びパリティ整合性チェック処理223をそれぞれ行う構成とした。従って、更新されていない誤ったデータがホスト10に読み出される可能性を低減することができ、さらに、ディスクドライブ310の信頼性を確認してから継続使用するか否かを判断することができる。これにより、ディスクアレイサブシステム100の信頼性を向上させることができる。
本実施例では、未確認領域の各ブロックについてパリティ整合性チェックの結果、新旧のパリティデータに不整合が検出された場合は、エラーブロックを有するディスクドライブ310を閉塞処理する構成とした。これにより、信頼性の低いディスクドライブ310の継続使用を未然に防止することができ、ディスクアレイサブシステム100の信頼性が向上する。
本実施例では、ホスト10からデータの読出しが要求された場合に、アンコレクタブルエラーが生じたか否かを検出し、アンコレクタブルエラーの発生を検出した場合には、データ回復処理221及びパリティ整合性チェック処理223を行う構成とした。従って、必要に応じてディスクドライブ310の信頼性を確認することができる。一方、例えば、ライト要求時に、ディスクドライブ310に書き込んだデータを読出して、キャッシュメモリ250上に残っているライトデータと比較する方法も考えられる。しかし、この場合は、データをディスクドライブ310に書き込むたびに、それを読み出す必要があるため、書込み処理速度が大幅に低下し、コントローラ200の負荷も増大する。これに対し、本実施例では、リード要求時にパリティ整合性チェックを行うため、ライト要求時に確認しながらデータを書き込む場合に比べて、処理負担を軽減することができる。
本実施例では、アンコレクタブルエラーが検出された場合に、最初にデータ回復処理221を行って、ホスト10から要求されたデータをホスト10に転送し、次に、パリティ整合性チェック処理223を行って、未確認領域の各ブロックのデータが正常であるか否かを確認する構成とした。従って、応答性の大幅な低下を防止し、信頼性を改善することができる。
図9に基づいて第2実施例を説明する。本実施例を含む以下の各実施例は、第1実施例の変形例に相当する。本実施例では、エラーブロックに続く所定範囲の各ブロックの信頼性を一つずつ確認する。
図9は、リード処理の要部を示すフローチャートである。このフローチャートは、図7中のS24から続く。アンコレクタブルエラーが検出されると(S24:YES)、コントローラ200は、エラーブロックの次のブロックにポインタを移動させる(S40)。
コントローラ200は、そのブロックについてパリティデータを算出し直し(S41)、この改めて算出された新パリティデータとパリティディスクに記憶済の旧パリティデータとが一致するか否かを判定する(S42)。両パリティデータが一致する場合(S42:YES)、そのブロックに記憶されているデータは正しいと判断される。続いて、コントローラ200は、エラーブロックに続く所定範囲の各ブロックについて信頼性を検査したか否かを判定する(S43)。未検査のブロックが一つでも残っている場合(S43:NO)、コントローラ200は、次のブロックにポインタを移動させ(S44)、上述したS41,S42の処理をそれぞれ繰り返す。
所定範囲内の全てのブロックについて、そこに記憶されているデータの信頼性を検査した場合(S43:YES)、即ち、エラーブロックに続く所定数の各ブロックの信頼性が確認された場合、コントローラ200は、エラーブロックに予備の交替ブロックを割当て、回復されたデータを交替ブロックに書き込んで(S45)、本処理を終了する。
これに対し、もしも、そのブロックについて算出し直された新パリティデータと既に記憶されている旧パリティデータとが一致しない場合(S42:NO)、コントローラ200は、未検査のブロックの有無を問わずに、エラーブロックを有するディスクドライブ310を閉塞処理させる(S46)。
このように構成される本実施例でも第1実施例と同様の効果を得ることができる。これに加えて、本実施例では、エラーブロックに続く所定数の各ブロックの信頼性を一つずつ確認し、不正なデータを記憶するブロックが検出された時点で、ディスクドライブ310を直ちに閉塞させる構成とした。
従って、エラーブロックに続く近傍のブロックに不正なデータが記憶されている場合、短時間でパリティ整合性チェック処理223を完了させることができる。即ち、更新されていないにも拘わらず正常に更新されたかのように振る舞うブロックがエラーブロックの直後に位置するような場合、コントローラ200は、不正データを記憶するブロックを直ちに検出して、ディスクドライブ310の閉塞処理を行うことができる。
図10に基づいて第3実施例を説明する。本実施例では、ディスクドライブ310を閉塞させずに交替ブロックを用いて修復させる。
図10は、リード処理を示すフローチャートである。このフローチャートは、図7と共に述べたS21〜S29を全て備えている。同一ステップの説明は省略して、本実施例に特徴的な部分を説明する。
未確認領域の各ブロックのいずれか一つ、即ち所定範囲内の各ブロックのうちいずれか一つでも、そのブロックに関する新旧のパリティデータが一致しない場合(S28:NO)、コントローラ200は、その不正なデータを記憶するブロックを修復する(S50)。コントローラ200は、そのブロックに予備の交替ブロックを割当て、そのブロックについて回復されたデータを交替ブロックに書き込む。
このように構成される本実施例でも第1実施例と同様の効果を得ることができる。これに加えて、本実施例では、ディスクドライブ310を閉塞処理することなく、ブロックを修復して継続使用するため、信頼性を改善しつつ運用コストを低減できる。なお、例えば、修復されるブロック数が所定の値を超えた場合は、そのディスクドライブ310を閉塞処理することができる。また、ブロックを修復した場合、管理端末20を介して、新規の予備ドライブの追加をユーザに促す構成でもよい。
図11に基づいて第4実施例を説明する。本実施例では、定期的または不定期に実施される診断時に、パリティ整合性チェック処理223を行う。
図11は、改良されたHDD診断処理を示すフローチャートである。HDD診断処理とは、ディスクアレイサブシステム100が備える自己診断プログラムの一つである。本処理は、例えば、ディスクアレイサブシステム100のI/O負荷が少ない休日や平日の夜間等に、行うことができる。
コントローラ200は、診断対象のディスクドライブ310(図11中では「HDD」と表示)にベリファイ要求を発行する(S60)。このベリファイ要求を受けたディスクドライブ310は、例えば、ECC等に基づいて自己診断を行う。コントローラ200は、ベリファイが正常に終了したか否かを判定する(S61)。正常に終了した場合(S61:YES)、結合子1を介してS68に移動する。
コントローラ200は、診断すべき全てのディスクドライブ310を診断したか否かを判定する(S68)。未診断のディスクドライブ310が残っている場合(S68:NO)、コントローラ200は、次のディスクドライブ310を診断対象として選定し(S69)、このディスクドライブ310が正常か否かを診断する(S60,S61)。全てのディスクドライブ310について診断を完了した場合(S68:YES)、本処理は終了する。
これに対し、ベリファイが正常に終了しなかった場合(S61:NO)、コントローラ200は、アンコレクタブルエラーが発生したか否かを判定する(S62)。アンコレクタブルエラーが発生していない場合(S62:NO)、コントローラ200は、ベリファイ処理を再び行わせる(S63)。所定回数以上繰り返してもベリファイが正常に行われない場合は、本処理を終了させることもできる(不図示)。
ベリファイが正常に終了しない原因がアンコレクタブルエラーにある場合(S62:YES)、コントローラ200は、エラーブロックに続く所定範囲内の各ブロックについてパリティデータをそれぞれ算出し直す(S64)。コントローラ200は、これら算出された各新パリティデータと各旧パリティデータとが一致するか否かを判定する(S65)。
所定範囲内の各ブロックについて新旧の各パリティデータが全て一致する場合(S65:YES)、コントローラ200は、前記実施例で述べたように、エラーブロックの修復処理(リカバリ処理)を行う(S67)。そして、コントローラ200は、診断すべき全てのディスクドライブ310について診断したか否かを判定し(S68)、未診断のディスクドライブ310が残っている場合は(S68:NO)、次のディスクドライブ310に移動して(S69)、そのディスクドライブ310にベリファイ要求を発行する(S60)。
これに対し、所定範囲内の各ブロックについて新旧のパリティデータが一つでも一致しない場合(S65:NO)、コントローラ200は、いま診断しているディスクドライブ310について閉塞処理を行う(S66)。
このように、コントローラ200は、診断すべき全てのディスクドライブ310を診断しながら、アンコレクタブルエラーの有無を検査し、アンコレクタブルエラーを検出した場合は、未確認領域の各ブロックについてデータの信頼性をチェックする。そして、予定された全てのディスクドライブ310について診断を完了した場合(S68:YES)、本処理は終了する。
このように構成される本実施例も第1実施例と同様の効果を奏する。これに加えて、本実施例では、HDD診断時にパリティ整合性チェックを併せて実行するため、不正なデータを記憶しているおそれのあるブロックの検出率を高めることができ、より一層信頼性を改善することができる。また、HDD診断処理は、ディスクアレイサブシステム100の負荷が少ない時間帯に実行可能であるため、ストレージシステムの性能をあまり低下させずに信頼性を確認し回復させることができる。
図12に基づいて第5実施例を説明する。本実施例では、アンコレクタブルエラーが検出された場合、エラーブロックに続くブロックが所定値Ct以上正常である場合は、以後のパリティ整合性チェックを中止する。
図12は、リード要求処理を示すフローチャートである。コントローラ200は、ホスト10からのリードコマンドに基づいて、要求された読出し範囲の先頭に位置するブロックを選択する(S70)。
コントローラ200は、先頭ブロックからデータを読出し、キャッシュメモリ250に記憶させる(S71)。コントローラ200は、先頭ブロックからデータを読み出せたか否かを判定する(S72)。
正常に読み出せた場合(S72:YES)、コントローラ200は、要求された全てのデータ(あるいは一回の転送で送信可能なサイズ分のデータ)を、キャッシュメモリ250上に読み出すことができたか否かを判定する(S73)。データが揃っていない場合(S73:NO)、コントローラ200は、次のブロックに移動し(S74)、そのブロックからデータを読出してキャッシュメモリ250に記憶させる(S71)。そして、要求されたデータがキャッシュメモリ250に記憶されると(S73:YES)、コントローラ200は、このデータをホスト10に転送する(S75)。
以上のS70〜S75は、ディスクドライブ310から問題なくデータを読み出すことができた場合に実行される。これに対し、あるブロックからデータを正常に読み出すことができない場合(S72:NO)、コントローラ200は、その読み出せなかったデータをパリティデータ等に基づいて復元し、キャッシュメモリ250に記憶させる(S76)。そして、コントローラ200は、そのエラーブロックの修復処理を行い、回復させたデータを交替ブロックに書き込む(S77)。
コントローラ200は、エラーブロックの次のブロックに移動する(S78)。コントローラ200は、そのブロックのデータの信頼性を問わずに、そのブロックのデータをパリティデータ等から回復させ、回復させたデータをキャッシュメモリ250に記憶させる(S79)。
次に、コントローラ200は、そのブロックについてのパリティデータを改めて算出し(S80)、そのブロックに関して既に記憶されているパリティデータと一致するか否かを判定する(S81)。もしも、そのブロックに関する新旧のパリティデータが一致しない場合(S81:YES)、コントローラ200は、パリティエラーをカウントするためのカウンタCeの値を、1つインクリメントさせる(S82)。
コントローラ200は、パリティエラーカウンタCeの値が、予め設定されている所定の第1閾値C1以上か否かを判定する(S83)。閾値C1は、0に設定可能である。パリティエラーカウンタCeの値が閾値C1以上になった場合(S83:YES)、コントローラ200は、そのディスクドライブ310について閉塞処理を行う(S84)。なお、図中では、省略しているが、パリティの不整合が検出された場合(S81:YES)、そのブロックに予備の交替ブロックを割り当てて修復することができる。
パリティエラーカウンタCeの値が閾値C1未満の場合(S83:NO)、コントローラ200は、さらに次のブロックに移動し(S78)、そのブロックのデータを回復させてから(S79)、パリティ整合性をチェックする(S80,S81)。
新旧のパリティデータが一致する場合(S81:NO)、コントローラ200は、パリティ整合性チェックに合格したブロック数をカウントするための正常ブロック数カウンタCtの値を、1つ増加させる(S85)。コントローラ200は、正常ブロック数カウンタCtの値が、予め設定された第2閾値C2以上になったか否かを判定する(S86)。この閾値C2は、例えば、0以上の整数に設定可能である。
パリティ整合性チェックをパスしたブロック数CtがC2以上になった場合(S86:YES)、コントローラ200は、以後の各ブロックは正常であると判断し、パリティ整合性チェック処理を終了して、S74に移る。CtがC2未満の場合(S86:NO)、コントローラ200は、次のブロックに移動して(S78)、そのブロックについてデータを回復させると共に(S79)、パリティ整合性をチェックする(S80,S81)。
なお、パリティ不整合が検出された場合(S81:YES)、正常ブロック数カウンタCtの値をリセットする構成でもよい。
このように構成される本実施例も第1実施例と同様の効果を得ることができる。これに加えて、本実施例では、パリティ整合性チェック(S80,S81)に合格したブロック数Ctが所定の閾値C2以上になった場合は、パリティ整合性チェックを終了させる構成とした。従って、エラーブロック以外の他のブロックに異常が無いような場合は、無駄なパリティ整合性チェックが行われるのを防止でき、ディスクアレイサブシステムの処理負担を軽減することができる。換言すれば、確認が必要な範囲だけパリティ整合性チェックを行うことができ、処理負荷を軽減しつつ信頼性を改善することができる。
本実施例では、所定数C1以上のパリティ不整合が検出されたディスクドライブ310を閉塞処理させる構成とした。従って、信頼性を改善しながら、運用コストを低下させることができる。
図13,図14に基づいて第6実施例を説明する。本実施例では、ディスクドライブ310のドライブ種別に応じて、パリティ整合性をチェックする範囲を決定する。
図13は、リード処理を示すフローチャートである。このフローチャートは、図7中に示されているステップに対応するステップを備えている。S91〜S95は、図7中のS21〜S25にそれぞれ対応し、同一の処理を行うので説明を省略する。
アンコレクタブルエラーが検出された場合(S94:YES)、コントローラ200は、おパリティチェックブロック数管理テーブルT1を参照し、ディスクドライブ310の種別に応じたチェックブロック数BNを取得する(S95)。
この管理テーブルT1の構成例を図14に示す。管理テーブルT1には、ディスクドライブ310の種別毎に、それぞれパリティ整合性チェックを行うブロック数BNが予め登録されている。コントローラ200は、エラーブロックに続く所定数BNだけの各ブロックについて、それぞれデータを回復させ(S97)、所定数BNの各ブロックについてパリティ整合性チェックをそれぞれ行う(S98,S99)。
前記第1実施例と同様に、新旧のパリティデータが一致する場合(S99:YES)、コントローラ200は、エラーブロックを修復し(S100)、S92に戻る。新旧のパリティデータが一致しない場合(S99:NO)、コントローラ200は、そのディスクドライブ310を閉塞させる(S101)。
本実施例はこのように構成されるので、前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、ディスクドライブ310の種別に応じて、パリティ整合性チェックを行うべきブロック数BNを決定するため、ディスクドライブ310の種別に応じて、各ブロックの信頼性を確認することができる。
本実施例では、エラーブロックに後続する各ブロックのうち、所定数BNだけパリティ整合性チェックを行う構成とした。従って、もしも、この所定数BNが、そのディスクドライブ310から一回の転送で送信可能な最大のブロック数に設定されている場合、ホスト10から要求された読出し範囲を超えて、パリティ整合性チェック(パリティチェック)が行われる。なお、所定数BNだけデータの回復及びパリティチェックを行う場合を示したが、これに代えて、データを回復させるブロック数とパリティチェックを行うブロック数とを違える構成でもよい。例えば、エラーブロックから読出し範囲の末尾のブロックまでをデータ回復範囲とし、エラーブロックの次のブロックから最大転送ブロック数までをパリティチェック範囲とすることもできる。
図15に基づいて第7実施例を説明する。本実施例では、アンコレクタブルエラー以外の他のエラーの検出に基づいて、アンコレクタブルエラーに起因する所定の処理(データの回復及び不正データの検出)を行う。
コントローラ200は、各ディスクドライブ310毎に、アンコレクタブルエラーを含むエラーが発生したか否かをそれぞれ監視している(S110)。ここで、アンコレクタブルエラー以外のエラーとしては、例えば、インターフェースエラー等を挙げることができる。
コントローラ200は、エラー発生を検出すると(S110:YES)、この検出されたエラーがアンコレクタブルエラーであるか否かを判定する(S111)。アンコレクタブルエラーである場合(S111:YES)、コントローラ200は、そのエラーブロックに続く所定範囲の各ブロックについて、それぞれパリティデータを算出し直し(S112)、パリティ整合性チェックを行う(S113)。新旧のパリティデータが一致する場合(S113:YES)、コントローラ200は、エラーブロックの修復処理を行う(S114)。新旧のパリティデータが不一致の場合(S113:NO)、コントローラ200は、そのディスクドライブ310について閉塞処理を行う(S115)。
一方、アンコレクタブルエラー以外のエラーが検出された場合(S111:NO)、コントローラ200は、エラーの発生回数をカウントするためのエラーカウンタCe2の値を1つ増加させる(S116)。コントローラ200は、エラーカウンタCe2の値が第3閾値C3以上になったか否かを判定する(S117)。Ce2がC3未満の場合(S117:NO)、リトライ処理を行った後で、S110に戻る。
エラーカウンタCe2が閾値C3以上になった場合(S117:YES)、コントローラ200は、そのディスクドライブ310について、各ブロックのパリティ整合性をそれぞれチェックする(S118)。パリティの不整合が検出された場合(S119:YES)、コントローラ200は、そのディスクドライブ310について閉塞処理を行う(S120)。
このように構成される本実施例も第1実施例と同様の効果を得ることができる。これに加えて、本実施例では、各ブロックのパリティ整合性チェックを、他のエラーの発生回数をトリガとして実行する。従って、エラーが所定数C3以上発生したディスクドライブ310について、その信頼性を予め確認することができる。
図16に基づいて第8実施例を説明する。本実施例では、信頼性を維持するためのモードを複数種類用意しておき、各ディスクドライブ310毎にそれぞれ異なるモードを設定できるようにしている。
上述した各実施例のように、パリティ整合性チェックを開始するタイミング(トリガの種類)や、パリティ不整合が発見された場合の措置(閉塞処理か修復処理か)等のような属性の組合せにより、複数種類の信頼性維持モードを構成し得る。
一方、ディスクドライブ310は、例えば、ドライブ種別や、そこに記憶されるデータの価値等の属性の組合せにより、複数種類に分類することができる。データの価値とは、例えば、そのデータの利用価値、即ち、アクセス頻度の大小等を意味する。一般に、アプリケーションプログラム11によって生成された直後のデータはアクセス頻度が高く、時間の経過につれてアクセス頻度は低下していく。
本実施例では、各ディスクドライブ310の特性に応じて、適切な信頼性維持モードをそれぞれ設定できるようにしている。モードの設定は、ユーザが手動で行うこともできるし、予め設定されたポリシーに従って自動的に行うことも可能である。さらに、ポリシーに従って自動的に設定されたモードを、ユーザが手動で変更することもできる。
本実施例では、ユーザが管理端末20を用いてモードを設定する場合を例に挙げる。コントローラ200は、管理端末20からモード設定の指示が発行されたか否かを判定する(S130)。
コントローラ200は、管理端末20から指定されたディスクドライブ310を選択し(S131)、そのディスクドライブ310の重要度を取得する(S132)。
ここで、ディスクドライブ310の重要度とは、そのディスクドライブ310のディスクアレイサブシステム100における位置づけを意味する。例えば、オンラインボリュームに使用されているディスクドライブ310は、重要度が高い。これに対し、例えば、アーカイブボリュームに使用されているディスクドライブ310は、オンラインボリュームに使用されるドライブに比べると重要度が相対的に低くなる可能性がある。また、例えば、そのディスクドライブ310に記憶されているデータの種類によって、ディスクドライブ310の重要度は変化しうる。また、例えば、FCディスク等のような高性能のディスクドライブ310は、ATAディスク等のような低性能のディスクドライブ310よりも重要度が高い場合もある。
本実施例では、ディスクドライブ310の重要度は、ユーザによって明示的に指示されるが、上述のように、ドライブ種別やデータ種別、ボリューム種別等に基づいて、自動的に重要度を算出する構成でもよい。
コントローラ200は、選択されたディスクドライブ310の重要度を取得すると、このディスクドライブ310が重要なドライブであるか否かを判定する(S133)。重要なドライブである場合(S133:YES)、コントローラ200は、そのディスクドライブ310について、高い信頼性を有するモードを適用する(S134,S135)。
即ち、重要なディスクドライブ310については、ホスト10からリード要求が発行された場合にパリティ整合性チェックを行い、パリティ不整合が検出されたときは閉塞処理を行う(S134)。また、これに加えて、重要なディスクドライブ310については、HDD診断処理を行う際にもパリティ整合性チェックを行い、パリティ不整合が検出されたときは閉塞処理を行う(S135)。
これとは逆に、重要ではないディスクドライブ310の場合(S133:NO)、コントローラ200は、そのディスクドライブ310に信頼性の低いモードを適用する。例えば、コントローラ200は、ホスト10からリード要求が発行された場合にのみ、パリティ整合性チェックを行う(S136)。また、コントローラ200は、不正データを記憶するブロックに交替ブロックを割り当てて、修復処理を行う(S136)。
なお、モードの具体的内容は、上述の例に限らず、種々のものを採用できる。また、「ディスクドライブの重要度」に代えて、「ディスクドライブの信頼性」に基づいて、適用モードを制御する構成でもよい。例えば、推奨品以外のディスクドライブがストレージ部300に装着されたような場合、その信頼性の低いディスクドライブには高信頼性モードを適用して、不正データの発生について監視を強めることができる。あるいは、SATAディスクのようなFCディスクに比べて信頼性の低いドライブについては、複数種類のパリティ整合性チェック(S134,S135)を行い、FCディスクのような高信頼性ディスクについては、原則としてパリティ整合性チェックを行わない構成でもよい。
なお、本発明は、上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
1〜4…記憶デバイス、5…コントローラ、6…メモリ、7…ホスト、8…データ回復処理、10…ホスト、11…アプリケーションプログラム、20…管理端末、21…ストレージ管理部、22…LANポート、CN1〜CN4…通信ネットワーク、100…ディスクアレイサブシステム、110…LANポート、200…コントローラ、210…制御部、220…データ処理回路、221…データ回復処理、222…パリティ生成処理、223…パリティ整合性チェック処理、230…上位通信部、240…下位通信部、250…キャッシュメモリ、260…システムメモリ、270…フラッシュメモリ、300…ストレージ部、310…ディスクドライブ、310(D1)〜(D3)…データディスク、310(P)…パリティディスク、311…制御回路、400…カーネル、410…通信処理、420…ジョブ群、421…コマンド処理、422…オンラインベリファイ処理、423…パリティ回復処理、430…I/Oスケジューラ、440…I/O処理、450…パリティ生成処理、460…制御処理群、461…キャッシュ制御処理、462…RAID制御処理、470…キャッシュスケジューラ、Ba,Bb,Bc…ブロック領域
Claims (20)
- 上位装置及び複数の記憶デバイスにそれぞれ接続された記憶制御装置であって、
前記上位装置との間で通信を行うための上位通信部と、
前記各記憶デバイスとの間でそれぞれ通信を行うための下位通信部と、
前記各記憶デバイスによって冗長記憶領域を構成させ、前記上位通信部を介して受信された前記上位装置からの指示に基づき、前記下位通信部を介して前記冗長記憶領域にデータを入出力する制御部と、を備え、
前記制御部は、
前記各記憶デバイスのいずれかに所定のエラーが発生したか否かを検出し、
前記所定のエラーを検出した場合には、前記所定のエラーが検出された記憶デバイスの有する複数の単位記憶領域のうち、少なくとも前記所定のエラーが検出されたエラー単位記憶領域に続く所定範囲の単位記憶領域について、前記所定のエラーに関する所定の処理をそれぞれ実行する、ようになっている記憶制御装置。 - 前記冗長記憶領域は、前記上位装置から受信したデータを前記各記憶デバイスのうち少なくとも一部の複数の記憶デバイスに分散させてそれぞれ記憶させ、前記データに基づいて得られるパリティデータを前記各記憶デバイスのうち少なくとも一つの記憶デバイスに記憶させることにより、構成されている請求項1に記載の記憶制御装置。
- 前記所定のエラーは、前記エラー単位記憶領域に記憶されているデータを正常に読み出すことができないエラーである請求項1に記載の記憶制御装置。
- 前記所定のエラーは、前記エラー単位記憶領域に記憶されたデータに関連する他のデータ及びパリティデータに基づいて、前記エラー単位記憶領域に記憶されたデータの回復が必要なエラーである請求項2に記載の記憶制御装置。
- 前記所定の処理は、前記所定範囲の単位記憶領域に記憶されているデータを回復する処理である請求項1に記載の記憶制御装置。
- 前記所定の処理は、前記エラー単位記憶領域及び前記所定範囲の単位記憶領域にそれぞれ記憶されているデータを、これらのデータにそれぞれ関連する他のデータ及びパリティデータに基づいてそれぞれ回復させる処理である請求項2に記載の記憶制御装置。
- さらに、前記制御部は、前記所定の処理を実行した場合に、前記回復された各データを他の正常な各単位記憶領域にそれぞれ記憶させる請求項6に記載の記憶制御装置。
- 前記所定の処理は、前記所定範囲の単位記憶領域に記憶されているデータの信頼性を検査する処理である請求項1に記載の記憶制御装置。
- 前記所定の処理は、前記所定範囲の単位記憶領域に記憶されているデータを当該データに関連する他のデータ及びパリティデータに基づいて回復し、この回復されたデータから得られる新たなパリティデータと既に記憶されているパリティデータとを比較することにより、両パリティデータが一致するか否かを検査する処理である請求項2に記載の記憶制御装置。
- 前記所定の処理には、前記エラー単位記憶領域及び前記所定範囲の単位記憶領域にそれぞれ記憶されているデータを回復するデータ回復処理と、前記所定範囲の単位記憶領域に記憶されているデータの信頼性を検査する信頼性検査処理とが含まれている請求項1に記載の記憶制御装置。
- さらに、前記制御部は、前記所定の処理を実行した場合に、前記所定のエラーが発生した記憶デバイスを閉塞させる請求項1に記載の記憶制御装置。
- 前記所定範囲は、前記上位通信部を介して前記上位装置に転送可能な単位記憶領域の最大数として決定される請求項1に記載の記憶制御装置。
- 前記所定範囲は、前記上位装置から指示された範囲に基づいて決定される請求項1に記載の記憶制御装置。
- 前記所定範囲は、前記データ回復処理と前記信頼性検査処理とでそれぞれ異なる請求項10に記載の記憶制御装置。
- 前記制御部は、前記上位装置からのリード要求が前記上位通信部によって受信された場合に、前記各記憶デバイスのいずれかに所定のエラーが発生したか否かを検出する請求項1に記載の記憶制御装置。
- さらに、前記制御部は、前記各記憶デバイスが正常に動作するか否かの診断を周期的または非周期的に検査することができ、この診断を行う場合に、前記各記憶デバイスのいずれかに所定のエラーが発生したか否かを検出する請求項1に記載の記憶制御装置。
- さらに、前記制御部は、前記所定のエラーと異なる種類の他のエラーが前記各記憶デバイスのいずれかに発生したか否かを監視し、前記他のエラーの発生状態に基づいて、前記各記憶デバイスがそれぞれ有する各単位記憶領域にそれぞれ記憶されているデータの信頼性を検査する請求項1に記載の記憶制御装置。
- パリティデータを用いて構成される冗長記憶領域を上位装置に提供する複数の記憶デバイスに所定のエラーが発生した場合のエラー制御方法であって、
予め設定されている所定のタイミングが到来したか否かを判定するステップと、
前記所定のタイミングが到来したと判定された場合は、前記各記憶デバイスのいずれかに前記所定のエラーが発生したか否かを検出するステップと、
前記所定のエラーが検出された場合は、前記所定のエラーが検出された記憶デバイスの有する複数の単位記憶領域のうち、少なくとも前記所定のエラーが検出されたエラー単位記憶領域に続く所定範囲の単位記憶領域について、前記所定のエラーに関する所定の処理を実行するステップと、
を含む記憶デバイスのエラー制御方法。 - 前記所定の処理を実行するステップには、
前記エラー単位記憶領域及び前記所定範囲の単位記憶領域にそれぞれ記憶されているデータを、これらのデータにそれぞれ関連する他のデータ及びパリティデータに基づいてそれぞれ回復させるステップと、
前記所定範囲の単位記憶領域に関して回復されたデータから得られる新たなパリティデータと既に記憶されているパリティデータとを比較することにより、両パリティデータが一致するか否かを検査するステップとが含まれている請求項18に記載の記憶デバイスのエラー制御方法。 - 上位装置及び複数の記憶デバイスにそれぞれ接続された記憶制御装置であって、
前記上位装置との間で通信を行うための上位通信部と、
前記各記憶デバイスとの間でそれぞれ通信を行うための下位通信部と、
前記各記憶デバイスによってパリティデータを利用する冗長記憶領域を構成させ、前記上位通信部を介して受信された前記上位装置からの指示に基づき、前記下位通信部を介して前記冗長記憶領域にデータを入出力する制御部と、
この制御部により使用されるメモリと、
を備え、
前記制御部は、
前記上位装置からデータのリード要求が発行されたか否かを判定するステップと、
前記上位装置から前記リード要求が発行された場合は、この要求されたデータを記憶する記憶デバイスの各ブロックからデータを順番に読出して前記メモリにそれぞれ記憶させるステップと、
前記各ブロックのうち、前記データを正常に読み出すことができなかったエラーブロックを検出するステップと、
前記エラーブロックから前記リード要求で指定された読出し範囲の末尾に対応するブロックまでの各ブロックにそれぞれ記憶されているデータを、これらのデータにそれぞれ関連する他のデータ及びパリティデータに基づいてそれぞれ回復させ、これら回復した各データを前記メモリに記憶させるステップと、
前記読出し範囲に含まれる全てのデータが前記メモリに記憶された場合は、これらのデータを前記上位装置に転送させるステップと、
前記エラーブロックの次に位置するブロックから前記読出し範囲の末尾に対応するブロックまでの所定の各ブロックに関してそれぞれ回復されたデータに基づいて、新たなパリティデータをそれぞれ生成するステップと、
前記所定の各ブロックにそれぞれ記憶されているデータに関して既に記憶されている各旧パリティデータと前記新たに生成された各新パリティデータとが一致するか否かを判定するステップと、
前記各旧パリティデータと前記各新パリティデータとの組がいずれか一つでも一致しない場合には、前記エラーブロックを有する記憶デバイスを閉塞させるステップと、
をそれぞれ実行する記憶制御装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005088670A JP2006268673A (ja) | 2005-03-25 | 2005-03-25 | 記憶制御装置及び記憶デバイスのエラー制御方法 |
US11/138,279 US7360018B2 (en) | 2005-03-25 | 2005-05-27 | Storage control device and storage device error control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005088670A JP2006268673A (ja) | 2005-03-25 | 2005-03-25 | 記憶制御装置及び記憶デバイスのエラー制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006268673A true JP2006268673A (ja) | 2006-10-05 |
Family
ID=37036540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005088670A Pending JP2006268673A (ja) | 2005-03-25 | 2005-03-25 | 記憶制御装置及び記憶デバイスのエラー制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7360018B2 (ja) |
JP (1) | JP2006268673A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008117395A (ja) * | 2006-10-31 | 2008-05-22 | Hewlett-Packard Development Co Lp | フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正 |
US7925919B2 (en) | 2007-10-30 | 2011-04-12 | Fujitsu Limited | Disk management method, disk management device and storage system |
JP2012048654A (ja) * | 2010-08-30 | 2012-03-08 | Nec Corp | ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム |
WO2016088219A1 (ja) * | 2014-12-03 | 2016-06-09 | 株式会社日立製作所 | ストレージシステム及びデータ転送方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7565575B2 (en) * | 2006-05-30 | 2009-07-21 | Oracle International Corporation | Selecting optimal repair strategy for mirrored files |
US7669076B2 (en) * | 2006-05-30 | 2010-02-23 | Oracle International Corporation | Estimating data availability on managed storage devices |
JP4884885B2 (ja) * | 2006-08-25 | 2012-02-29 | 株式会社日立製作所 | 記憶制御装置及び記憶制御装置の障害回復方法 |
JP2009104412A (ja) * | 2007-10-23 | 2009-05-14 | Hitachi Ltd | ストレージ装置及びその制御方法 |
US9069687B2 (en) * | 2010-01-29 | 2015-06-30 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Memory read-channel with selective transmission of error correction data |
CN104657237A (zh) * | 2015-03-12 | 2015-05-27 | 浪潮集团有限公司 | 一种检测磁盘阵列的方法 |
US11549684B2 (en) * | 2018-08-27 | 2023-01-10 | Honeywell International Inc. | Burner system control |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE34100E (en) * | 1987-01-12 | 1992-10-13 | Seagate Technology, Inc. | Data error correction system |
JP3133004B2 (ja) * | 1996-11-21 | 2001-02-05 | 株式会社日立製作所 | ディスクアレイ装置およびその制御方法 |
JP3618529B2 (ja) * | 1997-11-04 | 2005-02-09 | 富士通株式会社 | ディスクアレイ装置 |
US6128762A (en) * | 1998-08-04 | 2000-10-03 | International Business Machines Corporation | Updating and reading data and parity blocks in a shared disk system with request forwarding |
US6944791B2 (en) * | 2002-07-18 | 2005-09-13 | Lsi Logic Corporation | Method of handling unreadable blocks during write of a RAID device |
JP2005301419A (ja) * | 2004-04-07 | 2005-10-27 | Hitachi Ltd | ディスクアレイ装置およびそのデータ処理方法 |
JP2005309739A (ja) * | 2004-04-21 | 2005-11-04 | Hitachi Ltd | ディスクアレイ装置およびディスクアレイ装置のキャッシュ制御方法 |
-
2005
- 2005-03-25 JP JP2005088670A patent/JP2006268673A/ja active Pending
- 2005-05-27 US US11/138,279 patent/US7360018B2/en not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008117395A (ja) * | 2006-10-31 | 2008-05-22 | Hewlett-Packard Development Co Lp | フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正 |
JP4668970B2 (ja) * | 2006-10-31 | 2011-04-13 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正 |
US7925919B2 (en) | 2007-10-30 | 2011-04-12 | Fujitsu Limited | Disk management method, disk management device and storage system |
JP2012048654A (ja) * | 2010-08-30 | 2012-03-08 | Nec Corp | ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム |
WO2016088219A1 (ja) * | 2014-12-03 | 2016-06-09 | 株式会社日立製作所 | ストレージシステム及びデータ転送方法 |
Also Published As
Publication number | Publication date |
---|---|
US20060218343A1 (en) | 2006-09-28 |
US7360018B2 (en) | 2008-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006268673A (ja) | 記憶制御装置及び記憶デバイスのエラー制御方法 | |
US6467023B1 (en) | Method for logical unit creation with immediate availability in a raid storage environment | |
JP5887757B2 (ja) | ストレージシステム、ストレージ制御装置およびストレージ制御方法 | |
JP4884885B2 (ja) | 記憶制御装置及び記憶制御装置の障害回復方法 | |
US8176359B2 (en) | Disk array system and control method thereof | |
US6523087B2 (en) | Utilizing parity caching and parity logging while closing the RAID5 write hole | |
JP4583150B2 (ja) | ストレージシステム、及びストレージシステムにおけるスナップショットデータ作成方法 | |
US9081697B2 (en) | Storage control apparatus and storage control method | |
US8566637B1 (en) | Analyzing drive errors in data storage systems | |
JP2005122338A (ja) | スペアディスクドライブをもつディスクアレイ装置及びデータスペアリング方法 | |
JP4792490B2 (ja) | 記憶制御装置及びraidグループの拡張方法 | |
US9690651B2 (en) | Controlling a redundant array of independent disks (RAID) that includes a read only flash data storage device | |
US8438429B2 (en) | Storage control apparatus and storage control method | |
JP2005322399A (ja) | 磁気ディスク記憶装置におけるトラック・データ完全性の維持方法 | |
JP2006139478A (ja) | ディスクアレイシステム | |
JP4491330B2 (ja) | ディスクアレイ装置とそのデータのリカバリ方法およびデータリカバリプログラム | |
US7480820B2 (en) | Disk array apparatus, method for controlling the same, and program | |
US20090177916A1 (en) | Storage system, controller of storage system, control method of storage system | |
US7529776B2 (en) | Multiple copy track stage recovery in a data storage system | |
US20060245103A1 (en) | Storage device system operating based on system information, and method for controlling thereof | |
JP2007048017A (ja) | ストレージシステム及び記憶制御方法 | |
US7174476B2 (en) | Methods and structure for improved fault tolerance during initialization of a RAID logical unit |