(57)【要約】【課題】破壊または不正確データをもつ、ＲＡＩＤレベル６ストライプのデータ・ブロックを判定する方法およびシステムを提供する。【解決手段】ストライプの各データ・ブロックごとに、他のデータ・ブロックおよびＰシンドローム・データ・ブロックを使って復元データ・ブロックが作成される。復元データ・ブロックおよび他のデータ・ブロックは、新しいＱシンドローム・データ・ブロックを作成するのに使われる。新しいＱシンドローム・データ・ブロックと格納Ｑシンドローム・データ・ブロックが比較される。新しいＱシンドローム・データ・ブロックと格納Ｑシンドローム・データ・ブロックが一致する場合、データ・ブロックには、破壊または不正確データをもつ疑いがあるものとして印がつけられる。このプロセスは、ストライプ中のすべてのデータ・ブロックに対して繰り返される。不審データ・ブロックがただ１つしかない場合、復元データ・ブロックは、不審データ・ブロックの置換物としてストライプに格納される。【選択図】図４
2011227859.tif 000002
【特許請求の範囲】
【請求項１】
データの正確性を維持する方法であって、
複数のデータ・ブロック、第１の格納シンドローム・ブロック、および第２の格納シンドローム・ブロックを含むＲＡＩＤストライプを受け取り、
前記複数のデータ・ブロックに基づいて、第１の算出シンドローム・ブロックおよび第２の算出シンドローム・ブロックを判定し、そして、
前記第１の格納シンドローム・ブロックと前記第１の算出シンドローム・ブロックが等しくなく、および前記第２の格納シンドローム・ブロックと前記第２の算出シンドローム・ブロックが等しくないという判定に基づいて、前記複数のデータ・ブロックの不審データ・ブロックを選択することを含み、前記選択に用いられる方法が、
前記第１の格納シンドローム・ブロックと、前記複数のデータ・ブロックの１つのデータ・ブロックを含まない、前記複数のデータ・ブロックのサブセットとに基づいて、前記複数のデータ・ブロックのうち１つの復元データ・ブロックを判定し、
前記複数のデータ・ブロックの前記サブセットおよび前記複数のデータ・ブロックの前記１つの復元データ・ブロックに基づいて、復元された第２のシンドローム・ブロックを判定し、そして、
前記復元された第２のシンドローム・ブロックと前記第２の格納シンドローム・ブロックが等しいという判定に基づいて、前記複数のデータ・ブロックの前記１つのデータ・ブロックを、前記不審データ・ブロックとして選択する、ことを含む、方法。
【請求項２】
前記第１の格納シンドローム・ブロックが前記複数のデータ・ブロックのビット単位ＸＯＲによって判定され、前記第２の格納シンドローム・ブロックがリードソロモン・コードによって判定される、請求項１に記載の方法。
【請求項３】
前記第１の格納シンドローム・ブロック、および前記複数のデータ・ブロックの第２のデータ・ブロックを含まない、前記複数のデータ・ブロックの第２のサブセットに基づいて、前記複数のデータ・ブロックのうち復元された第２のデータ・ブロックを判定し、
前記複数のデータ・ブロックの前記第２のサブセットおよび前記複数のデータ・ブロックのうち前記復元された第２のデータ・ブロックに基づいて、別の復元された第２のシンドローム・ブロックを判定し、そして、
前記別の復元された第２のシンドローム・ブロックと前記第２の格納シンドローム・ブロックが等しいという判定に基づいて、前記複数のデータ・ブロックのうち前記第２のデータ・ブロックを、前記第２の不審データ・ブロックとして選択することを含む方法を用いて、前記複数のデータ・ブロックのうち、第２の不審データ・ブロックを選択する、ことをさらに含む、請求項１に記載の方法。
【請求項４】
前記複数のデータ・ブロックを使って、前記第１の格納シンドローム・ブロックおよび前記第２の格納シンドローム・ブロックを再生成し格納することをさらに含む、請求項３に記載の方法。
【請求項５】
前記第１の格納シンドローム・ブロックと前記第１の算出シンドローム・ブロックが等しいという判定に基づいて、前記第２の算出シンドローム・ブロックを前記ＲＡＩＤストライプに格納することをさらに含む、請求項１に記載の方法。
【請求項６】
前記第２の格納シンドローム・ブロックと前記第２の算出シンドローム・ブロックが等しいという判定に基づいて、前記第１の算出シンドローム・ブロックを前記ＲＡＩＤストライプに格納することをさらに含む、請求項１に記載の方法。
【請求項７】
ＲＡＩＤストライプ中の整合データおよびシンドロームを維持する方法であって、
複数のデータ・ブロック、第１の格納シンドローム・ブロック、および第２の格納シンドローム・ブロックを含む前記ＲＡＩＤストライプを読み込み、
前記複数のデータ・ブロックに基づいて、第１の算出シンドローム・ブロックを判定し、
前記複数のデータ・ブロックに基づいて、第２の算出シンドローム・ブロックを判定し、
前記第１の格納シンドローム・ブロックを前記第１の算出シンドローム・ブロックと比較することによって、第１の等価性インジケータを判定し、
前記第２の格納シンドローム・ブロックを前記第２の算出シンドローム・ブロックと比較することによって、第２の等価性インジケータを判定し、そして、
前記第１の格納シンドローム・ブロックが前記第１の算出シンドローム・ブロックと等しくないことを前記第１の等価性インジケータが示す場合、および前記第２の格納シンドローム・ブロックが前記第２の算出シンドローム・ブロックと等しくないことを前記第２の等価性インジケータが示す場合、少なくとも１つの不審ブロックを判定する、ことを含み、前記判定に用いられる方法が、
前記複数のデータ・ブロックそれぞれに対して、
前記第１の格納シンドローム・ブロックを使って、前記データ・ブロックのうち１つの復元データ・ブロックを復元し、
前記データ・ブロックの前記１つの復元データ・ブロックと、前記複数のデータ・ブロックの前記１つのデータ・ブロックを除く前記複数のデータ・ブロックとを使って、復元された第２のシンドローム・ブロックを判定し、
前記データ・ブロックの前記１つのデータ・ブロックに関連づけられた、前記第２の格納シンドローム・ブロックが前記復元された第２のシンドローム・ブロックと等しいかどうかを示す不審ブロック・インジケータを判定し、そして、
前記第２の格納シンドローム・ブロックが前記復元された第２のシンドローム・ブロックと等しいことを示す、関連した不審ブロック・インジケータをもつ、前記複数のデータ・ブロックのうち１つのデータ・ブロックがある場合、前記複数のデータ・ブロックの前記１つに関連づけられた、前記データ・ブロックの前記１つの復元データ・ブロックを前記ＲＡＩＤストライプに格納する、ことを含む、方法。
【請求項８】
前記複数のデータ・ブロック、前記第１の格納シンドローム・ブロック、および前記第２の格納シンドローム・ブロックがそれぞれ、複数のディスク・ドライブの１つに関連づけられる、請求項７に記載の方法。
【請求項９】
前記第１の算出シンドローム・ブロックが前記複数のデータ・ブロックのビット単位ＸＯＲによって判定され、前記第２の算出シンドローム・ブロックがリードソロモン・コードによって判定される、請求項７に記載の方法。
【請求項１０】
前記複数のデータ・ブロックのうち、前記第２の格納シンドローム・ブロックが前記復元された第２のシンドローム・ブロックと等しくないことを示す、関連した不審ブロック・インジケータをもつものが１つより多い場合、前記第１の算出シンドローム・ブロックおよび前記第２の算出シンドローム・ブロックを前記ＲＡＩＤストライプに格納することをさらに含む、請求項７に記載の方法。
【請求項１１】
ＲＡＩＤストライプを提供するように構成された複数のディスク・ドライブと、
前記ＲＡＩＤストライプを受け取るように構成されたＲＡＩＤプロセッサとを含み、前記ＲＡＩＤストライプが、複数のデータ・ブロック、第１の格納シンドローム・ブロック、および第２の格納シンドローム・ブロックを含み、前記ＲＡＩＤプロセッサが、
前記複数のデータ・ブロックに基づいて第１の算出シンドローム・ブロックおよび第２の算出シンドローム・ブロックを判定し、
前記第１の格納シンドローム・ブロックと前記第１の算出シンドローム・ブロックが等しくなく、かつ前記第２の格納シンドローム・ブロックと前記第２の算出シンドローム・ブロックが等しくないと判定し、
前記第１の格納シンドローム・ブロックと、前記複数のデータ・ブロックのうち１つのデータ・ブロックを含まない、前記複数のデータ・ブロックのサブセットとに基づいて、前記複数のデータ・ブロックのうち１つの復元データ・ブロックを判定し、
前記複数のデータ・ブロックの前記サブセットと、前記複数のデータ・ブロックのうち前記１つの復元データ・ブロックとに基づいて、復元された第２のシンドローム・ブロックを判定し、
前記復元された第２のシンドローム・ブロックと前記第２の格納シンドローム・ブロックが等しいという判定に基づいて、前記複数のデータ・ブロックの前記１つのデータ・ブロックを、前記不審データ・ブロックとして選択する、ように構成された、記憶システム。
【請求項１２】
前記第１の格納シンドローム・ブロックが前記複数のデータ・ブロックのビット単位ＸＯＲによって判定され、前記第２の格納シンドローム・ブロックがリードソロモン・コードによって判定される、請求項１１に記載の記憶システム。
【請求項１３】
前記ＲＡＩＤプロセッサが、前記複数のデータ・ブロックの第２の不審データ・ブロックを選択するようにさらに構成される、請求項１１に記載の記憶システム。
【請求項１４】
前記ＲＡＩＤプロセッサが、前記複数のデータ・ブロックを使って前記第１の格納シンドローム・ブロックおよび前記第２の格納シンドローム・ブロックを再生成するようにさらに構成される、請求項１３に記載の記憶システム。
【請求項１５】
前記ＲＡＩＤプロセッサが、
前記第１の格納シンドローム・ブロックと前記第１の算出シンドローム・ブロックが等しいという判定に基づいて、前記第１の算出シンドローム・ブロックを複数のディスク・ドライブに格納するようにさらに構成される、請求項１１に記載の記憶システム。
【請求項１６】
ＲＡＩＤストライプ中の整合データおよびシンドロームを維持する命令を格納したコンピュータ可読媒体であって、前記命令が、コンピュータによって実行されると、前記コンピュータに、
複数のデータ・ブロック、第１の格納シンドローム・ブロック、および第２の格納シンドローム・ブロックを含む前記ＲＡＩＤストライプを読み込み、
前記複数のデータ・ブロックに基づいて、第１の算出シンドローム・ブロックを判定し、
前記複数のデータ・ブロックに基づいて、第２の算出シンドローム・ブロックを判定し、
前記第１の格納シンドローム・ブロックを前記第１の算出シンドローム・ブロックと比較することによって、第１の等価性インジケータを判定し、
前記第２の格納シンドローム・ブロックを前記第２の算出シンドローム・ブロックと比較することによって、第２の等価性インジケータを判定し、
前記第１の格納シンドローム・ブロックが前記第１の算出シンドローム・ブロックと等しくないことを前記第１の等価性インジケータが示す場合、および前記第２の格納シンドローム・ブロックが前記第２の算出シンドローム・ブロックと等しくないことを前記第２の等価性インジケータが示す場合、少なくとも１つの不審ブロックを判定するように少なくとも命令し、前記判定に用いられる方法が、
前記複数のデータ・ブロックそれぞれに対して、
前記第１の格納シンドローム・ブロックを使って、前記データ・ブロックのうち、１つの復元データ・ブロックを復元し、
前記データ・ブロックの前記１つの復元データ・ブロックと、前記複数のデータ・ブロックの前記１つのデータ・ブロックを除く前記複数のデータ・ブロックとを使って、復元された第２のシンドローム・ブロックを判定し、
前記データ・ブロックの前記１つのデータ・ブロックに関連づけられた、前記第２の格納シンドローム・ブロックが前記復元された第２のシンドローム・ブロックと等しいかどうかを示す不審ブロック・インジケータを判定し、そして、
前記第２の格納シンドローム・ブロックが前記復元された第２のシンドローム・ブロックと等しいことを示す、関連した不審ブロック・インジケータをもつ、前記複数のデータ・ブロックのうち１つのデータ・ブロックがある場合、前記複数のデータ・ブロックの前記１つのデータ・ブロックに関連づけられた、前記データ・ブロックの前記１つの復元データ・ブロックを前記ＲＡＩＤストライプに格納する、ことを含む、コンピュータ可読媒体。
【請求項１７】
前記複数のデータ・ブロック、前記第１の格納シンドローム・ブロック、および前記第２の格納シンドローム・ブロックがそれぞれ、複数のディスク・ドライブの１つに関連づけられる、請求項１６に記載のコンピュータ可読媒体。
【請求項１８】
前記第１の算出シンドローム・ブロックが前記複数のデータ・ブロックのビット単位ＸＯＲによって判定され、前記第２の算出シンドローム・ブロックがリードソロモン・コードによって判定される、請求項１６に記載のコンピュータ可読媒体。
【請求項１９】
前記複数のデータ・ブロックのうち、前記第２の格納シンドローム・ブロックが前記復元された第２のシンドローム・ブロックと等しくないことを示す、関連した不審ブロック・インジケータをもつものが１つより多い場合、前記第１の算出シンドローム・ブロックおよび前記第２の算出シンドローム・ブロックを前記ＲＡＩＤストライプに格納するように前記コンピュータがさらに命令される、請求項１６に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶システムにおけるデータの正確性および整合性を維持するシステムおよび方法に関する。より詳細には、本発明は、ＲＡＩＤレベル６ストライプのどのデータ・ブロックが破壊または不正確データをもつか判定する方法およびシステムに関する。
【背景技術】
【０００２】
大容量記憶システムは、ユーザ要求を満たすために記憶容量を増大させ続けている。写真および動画記憶、ならびに写真および動画共有は、さらに大規模な記憶システムに対する要求の高まりを刺激するアプリケーションの例である。
【０００３】
こうした増大する要求に対する解決法は、複数の安価なディスクからなるアレイの使用である。こうしたアレイは、データを全く損失せずに冗長性および誤り回復を提供するように構成することができる。こうしたアレイは、データを複数のディスク・ドライブに同時に読み込ませ、書き込ませることによって、読み書き性能を向上するように構成することもできる。こうしたアレイは、アレイの記憶サービスを中断せずに損傷ディスクを置き換えさせる「ホットスワップ」を可能にするように構成することもできる。何らかの冗長性が与えられるかどうかに関わらず、こうしたアレイは一般に、独立ディスクの冗長アレイ（ｒｅｄｕｎｄａｎｔ  ａｒｒａｙｓ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ、またはより一般的には、頭字語によってＲＡＩＤ）と呼ばれる。「Ａ  Ｃａｓｅ  ｆｏｒ  Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ（ＲＡＩＤ）」というタイトルの、Ｄａｖｉｄ  Ａ．ＰａｔｔｅｒｓｏｎらによるＵｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｃａｌｉｆｏｒｎｉａ、Ｂｅｒｋｅｌｅｙからの１９８７年の発表は、ＲＡＩＤ技術の根本的概念およびレベルについて論じている。
【０００４】
ＲＡＩＤ記憶システムは一般に、記憶アレイの管理詳細をユーザまたはホスト・システムに見せないコントローラを使用する。コントローラは、記憶アレイを、１つまたは複数のディスク・ドライブ（またはボリューム）として見せる。これは、ある特定のボリュームに対するデータ（または冗長データ）が、複数のディスク・ドライブにまたがり得るという事実にも関わらず、遂行される。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】「Ａ  Ｃａｓｅ  ｆｏｒ  Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ（ＲＡＩＤ）」、Ｄａｖｉｄ  Ａ．Ｐａｔｔｅｒｓｏｎら、Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｃａｌｉｆｏｒｎｉａ、Ｂｅｒｋｅｌｅｙ、１９８７年
【発明の概要】
【課題を解決するための手段】
【０００６】
本発明の実施形態はしたがって、データの正確性を維持する方法であって、複数のデータ・ブロック、第１の格納シンドローム・ブロック、および第２の格納シンドローム・ブロックを含むＲＡＩＤストライプを受け取ること、前記複数のデータ・ブロックに基づいて、第１の算出シンドローム・ブロックおよび第２の算出シンドローム・ブロックを判定すること、前記第１の格納シンドローム・ブロックと前記第１の算出シンドローム・ブロックが等しくなく、および前記第２の格納シンドローム・ブロックと前記第２の算出シンドローム・ブロックが等しくないという判定に基づいて、前記複数のデータ・ブロックの不審データ・ブロックを選択することを含み、前記選択に用いられる方法が、前記第１の格納シンドローム・ブロックと、前記複数のデータ・ブロックの１つのデータ・ブロックを含まない、前記複数のデータ・ブロックのサブセットとに基づいて、前記複数のデータ・ブロックのうち１つの復元データ・ブロックを判定すること、前記複数のデータ・ブロックの前記サブセットおよび前記複数のデータ・ブロックのうち前記１つの復元データ・ブロックに基づいて、復元された第２のシンドローム・ブロックを判定すること、ならびに、前記復元された第２のシンドローム・ブロックと前記第２の格納シンドローム・ブロックが等しいという判定に基づいて、前記複数のデータ・ブロックの前記１つのデータ・ブロックを、前記不審データ・ブロックとして選択することを含む方法を含み得る。
【０００７】
本発明の実施形態はしたがって、ＲＡＩＤストライプ中の整合データおよびシンドロームを維持する方法であって、複数のデータ・ブロック、第１の格納シンドローム・ブロック、および第２の格納シンドローム・ブロックを含む前記ＲＡＩＤストライプを読み込むこと、前記複数のデータ・ブロックに基づいて、第１の算出シンドローム・ブロックを判定すること、前記複数のデータ・ブロックに基づいて、第２の算出シンドローム・ブロックを判定すること、前記第１の格納シンドローム・ブロックを前記第１の算出シンドローム・ブロックと比較することによって、第１の等価性インジケータを判定すること、前記第２の格納シンドローム・ブロックを前記第２の算出シンドローム・ブロックと比較することによって、第２の等価性インジケータを判定すること、前記第１の格納シンドローム・ブロックが前記第１の算出シンドローム・ブロックと等しくないことを前記第１の等価性インジケータが示す場合、および前記第２の格納シンドローム・ブロックが前記第２の算出シンドローム・ブロックと等しくないことを前記第２の等価性インジケータが示す場合、少なくとも１つの不審ブロックを判定することを含み、前記判定に用いられる方法が、前記複数のデータ・ブロックそれぞれに対して、前記第１の格納シンドローム・ブロックを使って、前記データ・ブロックのうち、１つの復元データ・ブロックを復元すること、前記データ・ブロックの前記１つの復元データ・ブロックと、前記複数のデータ・ブロックの前記１つのデータ・ブロックを除く前記複数のデータ・ブロックとを使って、復元された第２のシンドローム・ブロックを判定すること、前記データ・ブロックの前記１つのデータ・ブロックに関連づけられた、前記第２の格納シンドローム・ブロックが前記復元された第２のシンドローム・ブロックと等しいかどうかを示す不審ブロック・インジケータを判定すること、前記第２の格納シンドローム・ブロックが前記復元された第２のシンドローム・ブロックと等しいことを示す、関連した不審ブロック・インジケータをもつ、前記複数のデータ・ブロックの１つのデータ・ブロックがある場合、前記複数のデータ・ブロックの前記１つのデータ・ブロックに関連づけられた、前記データ・ブロックの前記１つの復元データ・ブロックを前記ＲＡＩＤストライプに格納することを含む方法をさらに含み得る。
【０００８】
本発明の実施形態はしたがって、ＲＡＩＤストライプを提供するように構成された複数のディスク・ドライブと、前記ＲＡＩＤストライプを受け取るように構成されたＲＡＩＤプロセッサとを備え、前記ＲＡＩＤストライプが、複数のデータ・ブロック、第１の格納シンドローム・ブロック、および第２の格納シンドローム・ブロックを含み、前記ＲＡＩＤプロセッサが、前記複数のデータ・ブロックに基づいて第１の算出シンドローム・ブロックおよび第２の算出シンドローム・ブロックを判定し、前記第１の格納シンドローム・ブロックと前記第１の算出シンドローム・ブロックが等しくなく、かつ前記第２の格納シンドローム・ブロックと前記第２の算出シンドローム・ブロックが等しくないと判定し、前記第１の格納シンドローム・ブロックと、前記複数のデータ・ブロックの１つのデータ・ブロックを含まない、前記複数のデータ・ブロックのサブセットとに基づいて、前記複数のデータ・ブロックの１つの復元データ・ブロックを判定し、前記複数のデータ・ブロックの前記サブセットと、前記複数のデータ・ブロックの前記１つの復元データ・ブロックとに基づいて、復元された第２のシンドローム・ブロックを判定し、前記復元された第２のシンドローム・ブロックと前記第２の格納シンドローム・ブロックが等しいという判定に基づいて、前記複数のデータ・ブロックの前記１つのデータ・ブロックを、前記不審データ・ブロックとして選択するように構成された記憶システムをさらに含み得る。
【図面の簡単な説明】
【０００９】
【図１】ＲＡＩＤ記憶システムを示すブロック図である。
【図２】単純パリティ（Ｐ）およびリードソロモン（Ｑ）冗長情報を有するＲＡＩＤ記憶システムを示すブロック図である。
【図３】データの正確性を維持する方法を示すフローチャートである。
【図４】破壊された可能性のあるデータ・ブロックを判定する方法を示すフローチャートである。
【図５】コンピュータを示すブロック図である。
【発明を実施するための形態】
【００１０】
図１は、ＲＡＩＤ記憶システムを示すブロック図である。図１において、記憶システム１００は、ディスク・アレイ１１０、ＲＡＩＤコントローラ１２０、ホスト１３０、ホスト１３１、仮想ボリューム１４０、仮想ボリューム１４１、および仮想ボリューム１４２からなる。ディスク・アレイ１１０は、少なくとも第１のドライブ１１１、第２のドライブ１１２、第３のドライブ１１３、および第４のドライブ１１４を含む。ディスク・アレイ１１０は、より多くのディスク・ドライブを含んでもよい。ただし、こうしたドライブは、簡潔にするために図１からは省いてある。第１のドライブ１１１は、データ・ブロック１１１０、１１１１、１１１２を含む。第２のドライブ１１２は、データ・ブロック１１２０、１１２１、１１２２を含む。第３のドライブ１１３は、第１の格納シンドローム・ブロック１１３０、１１３１、１１３２を含む。第４のドライブ１１４は、第２の格納シンドローム・ブロック１１４０、１１４１、１１４２を含む。
【００１１】
ディスク・アレイ１１０、およびドライブ１１１〜１１４は、ＲＡＩＤコントローラ１２０に動作可能に結合される。したがって、ＲＡＩＤコントローラ１２０は、ドライブ１１１〜１１４およびブロック１１１０〜１１１２、１１２０〜１１２２、１１３０〜１１３２、１１４０〜１１４２を制御し、スパニングし、かつ／またはストライピングするように動作して、ＲＡＩＤレベル６（ＲＡＩＤ６）機能性を提供することができる。ＲＡＩＤ６は、ディスク・アレイ１１０の全メンバ・ディスクに分散された２つのパリティ・ブロックでの、ブロック・レベルのストライピングを用いることができる。このスパニングおよび／またはストライピングの結果、格納シンドローム・ブロック１１３０〜１１３２、１１４０〜１１４２が、ドライブ１１１〜１１４の１つまたは複数に実際に存在することになる。同様に、データ・ブロック１１１０〜１１１２、１１２０〜１１２２は、ドライブ１１１〜１１４の１つまたは複数に存在し得る。ただし、簡潔明瞭にするために、シンドローム・ブロック１１３０〜１１３２、１１４０〜１１４２は、ドライブ１１３、１１４上に存在するものとして示し、論じる。データ・ブロック１１１０〜１１１２、１１２０〜１１２２は、ドライブ１１１、１１２上に存在するものとして示し、論じる。ドライブ１１１〜１１４は、実際の物理ドライブでも、仮想ドライブでもよいことに留意されたい。したがって、１つまたは複数のデータ・ブロック、第１のシンドローム・ブロック、および第２のシンドローム・ブロックを含むＲＡＩＤストライプは、データ・ブロック１１１０〜１１１２、１１２０〜１１２２（および図示しない他のデータ・ブロック）ならびにシンドローム・ブロック１１３０〜１１３２、１１４０〜１１４２の様々な組合せまたはマッピングに格納することができる。
【００１２】
Ｒａｉｄコントローラ１２０は、第１のシンドローム・エンジン１２１を含む。第１のシンドローム・エンジン１２１は、少なくともデータ・ブロック１１１０〜１１１２、１１２０〜１１２２に基づいて第１の格納シンドローム・ブロック１１３０〜１１３２を算出し、かつ／またはチェックするモジュールでもプロセスでもよい。第１のシンドローム・エンジン１２１は、第１の格納シンドローム・ブロック１１３０〜１１３２の算出および／またはチェックの性能を向上するための専用ハードウェアを含み得る。ある実施形態では、第１のシンドローム・エンジンは、第１の格納シンドローム・ブロック１１３０〜１１３２を算出し、かつ／またはチェックするために、データ・ブロック１１１０〜１１１２のビット単位ＸＯＲを算出することができる。
【００１３】
Ｒａｉｄコントローラ１２０は、第２のシンドローム・エンジン１２２を含む。第２のシンドローム・エンジン１２２は、少なくともデータ・ブロック１１１０〜１１１２、１１２０〜１１２２に基づいて第２の格納シンドローム・ブロック１１４０〜１１４２を算出し、かつ／またはチェックするモジュールでもプロセスでもよい。第２のシンドローム・エンジン１２２は、第２の格納シンドローム・ブロック１１４０〜１１４２の算出および／またはチェックの性能を向上するための専用ハードウェアを含み得る。ある実施形態では、第２のシンドローム・エンジンは、第２の格納シンドローム・ブロック１１４０〜１１４２を算出し、かつ／またはチェックするために、データ・ブロック１１１０〜１１１２、１１２０〜１１２２のリードソロモン・コードを算出することができる。ただし、ＲＡＩＤ６機能性を提供する他の方法またはエンコーディングが用いられ得ることを理解されたい。たとえば、ＲＡＩＤ６機能性を実装するのに、直交二重パリティ・チェック・データおよび対角線パリティが用いられ得る。
【００１４】
ＲＡＩＤコントローラ１２０は、ホスト１３０に仮想ボリューム１４０を投影することができる。ＲＡＩＤコントローラ１２０は、ホスト１３１に仮想ボリューム１４１〜１４２を投影することができる。ＲＡＩＤコントローラ１２０は、追加仮想ボリュームを投影することもできる。ただし、こうしたボリュームは、簡潔にするために図１からは省いてある。ＲＡＩＤ構成から作成されると、仮想ボリューム１４０〜１４２は、ホスト・コンピュータ１３０〜１３１によってアクセスすることができる。
【００１５】
ある実施形態では、ＲＡＩＤコントローラ１２０は、データ・ブロック１１１０〜１１１２、１１２０〜１１２２またはシンドローム・ブロック１１３０〜１１３２、１１４０〜１１４２を分離し訂正する。ＲＡＩＤコントローラ１２０が訂正するエラーは、データ・ブロック１１１０〜１１１２、１１２０〜１１２２によって格納されたデータと、シンドローム・ブロック１１３０〜１１３２、１１４０〜１１４２の少なくとも１つによって格納されたデータとの間の不一致によって表わされる。
【００１６】
ＲＡＩＤコントローラ１２０は、ディスク・アレイ１１０によって格納されたＲＡＩＤストライプのデータおよびシンドローム・ブロックを読み込む。ＲＡＩＤコントローラ１２０は、ＲＡＩＤストライプから読み込まれたデータに基づいて、第１のシンドローム・ブロックおよび第２のシンドローム・ブロックを算出する。こうした算出シンドローム・ブロックは、ディスク・アレイ１１０上に格納されていたシンドローム・ブロック（たとえば、格納シンドローム・ブロック）と比較される。こうした比較の結果、算出および格納シンドローム・ブロックの等価性のインジケータが作成され、または格納され得る。
【００１７】
格納および算出シンドローム・ブロック両方が一致する場合、ＲＡＩＤコントローラ１２０は、データ・ブロック１１１０〜１１１２、１１２０〜１１２２によって格納されたデータと、シンドローム・ブロック１１３０〜１１３２、１１４０〜１１４２のいずれか１つによって格納されたデータとの間の不一致を見つけていない。第１の算出シンドローム・ブロックが第１の格納シンドローム・ブロックと一致せず、かつ第２の算出シンドローム・ブロックが第２の格納シンドローム・ブロックと一致する場合、ＲＡＩＤコントローラ１２０は、ストライプ中のデータ、第２の格納シンドローム・ブロック、および第１の算出シンドローム・ブロックが正しいと判定する。したがって、ＲＡＩＤコントローラ１２０は、第１の算出シンドローム・ブロックをディスク・アレイ１１０に書き込む。
【００１８】
第２の算出シンドローム・ブロックが第２の格納シンドローム・ブロックと一致せず、かつ第１の算出シンドローム・ブロックが第１の格納シンドローム・ブロックと一致する場合、ＲＡＩＤコントローラ１２０は、ストライプ中のデータ、第１の格納シンドローム・ブロック、および第２の算出シンドローム・ブロックが正しいと判定する。したがって、ＲＡＩＤコントローラ１２０は、第２の算出シンドローム・ブロックをディスク・アレイ１１０に書き込む。
【００１９】
第１の算出シンドローム・ブロックが第１の格納シンドローム・ブロックと一致せず、かつ第２の算出シンドローム・ブロックが第２の格納シンドローム・ブロックと一致しない場合、ＲＡＩＤコントローラ１２０は、データ・ブロック１１１０〜１１１２、１１２０〜１１２２の１つまたは複数が不正確な可能性があると判定する。ＲＡＩＤコントローラ１２０は、ＲＡＩＤストライプ中のデータ・ブロックのどの１つまたは複数が他のデータ・ブロックならびに第１および第２の（格納または算出）シンドローム・ブロックと整合しないかの判定に進む。
【００２０】
Ｒａｉｄコントローラ１２０は、第１のデータ・ブロックを選択する。この第１のデータ・ブロックは、ＲＡＩＤストライプの他のデータ・ブロックおよび第１の格納シンドローム・ブロックを使って復元される。復元された第１のデータ・ブロックは次いで、他のデータ・ブロックとともに、新しい第２のシンドローム・ブロックを算出するのに使われる。この新しい第２のシンドローム・ブロックは、第２の格納シンドローム・ブロックと比較される。新しい第２のシンドローム・ブロックと第２の格納シンドローム・ブロックが一致する場合、この第１のデータ・ブロックには、不良データを保持している疑いがあるものとして印がつけられる。このプロセスは、ＲＡＩＤストライプ中のデータ・ブロックそれぞれに対して繰り返される。この印づけの結果、対応するブロックに関連づけられた不審ブロック・インジケータが作成され、または格納され得る。
【００２１】
ＲＡＩＤストライプ中のデータ・ブロックすべてが上述したようにスキャンされると、ＲＡＩＤコントローラ１２０は、複数のデータ・ブロックに、不良データを保持している疑いがあるものとして印がつけられたかどうか判定する。単一のデータ・ブロックが、不良データを保持している疑いがあると識別された場合、ＲＡＩＤコントローラ１２０は、そのブロックに対するデータを、第１の格納シンドローム・ブロックおよびＲＡＩＤストライプの他のデータ・ブロックから復元する（または、予め算出されたデータを使う）。複数のドライブが、不良データを保持している疑いがあると識別された場合、ＲＡＩＤコントローラ１２０は、第１および第２の算出シンドローム・ブロックを再生成し（または、予め算出された第１および第２の算出シンドローム・ブロックを使い）、その一方または両方をディスク・アレイ１１０に書き込むことができる。再生成された、または予め算出された第１および第２の算出シンドローム・ブロックのうち１つまたは複数のブロックの書込みは、任意選択のステップであることを理解されたい。ある実施形態では、ＲＡＩＤコントローラ１２０は、ＲＡＩＤストライプ全体に、不良データ（および／または１つまたは複数の不良シンドローム）を保持する疑いがあるものとして印をつけるインジケータをセットすることができる。
【００２２】
図２は、単純パリティ（Ｐ）およびリードソロモン（Ｑ）冗長情報を有するＲＡＩＤ記憶システムを示すブロック図である。図２において、記憶システム２００は、ディスク・アレイ２１０、ＲＡＩＤコントローラ２２０、ホスト２３０、ホスト２３１、仮想ボリューム２４０、仮想ボリューム２４１、および仮想ボリューム２４２からなる。ディスク・アレイ２１０は、少なくともドライブ２１１〜２１４を含む。ディスク・アレイ２１０は、より多くのディスク・ドライブを含んでもよい。ただし、こうしたドライブは、簡潔にするために図２からは省いてある。第１のドライブ２１１は、データ・ブロック２１１０、２１１１、２１１２を含む。第２のドライブ２１２は、データ・ブロック２１２０、２１２１、２１２２を含む。第３のドライブ２１３は、格納Ｐシンドローム・ブロック２１３０、２１３１、２１３２を含む。第４のドライブ２１４は、格納Ｑシンドローム・ブロック２１４０、２１４１、２１４２を含む。
【００２３】
ディスク・アレイ２１０、およびドライブ２１１〜２１４は、ＲＡＩＤコントローラ２２０に動作可能に結合される。したがって、ＲＡＩＤコントローラ２２０は、ドライブ２１１〜２１４およびブロック２１１０〜２１１２、２１２０〜２１２２、２１３０〜２１３２、２１４０〜２１４２を制御し、スパニングし、かつ／またはストライピングして、ＲＡＩＤレベル６（ＲＡＩＤ６）機能性を提供するように動作し得る。ＲＡＩＤ６は、全メンバ・ディスクに分散された２つのパリティ・ブロックでのブロック・レベルのストライピングを用いることができる。このスパニングおよび／またはストライピングの結果、格納Ｐシンドローム・ブロック２１３０〜２１３２および格納Ｑシンドローム・ブロック２１４０〜２１４２が、ドライブ２１１〜２１４の１つまたは複数に実際に存在することになり得る。同様に、データ・ブロック２１１０〜２１１２、２１２０〜２１２２は、ドライブ２１１〜２１４の１つまたは複数に存在し得る。ただし、簡潔明瞭にするために、格納Ｐシンドローム・ブロック２１３０〜２１３２および格納Ｑシンドローム・ブロック２１４０〜２１４２は、ドライブ２１３、２１４上に存在するものとして示し、論じる。データ・ブロック２１１０〜２１１２、２１２０〜２１２２は、ドライブ２１１、２１２上に存在するものとして示し、論じる。ドライブ２１１〜２１４は、実際の物理ドライブでも、仮想ドライブでもよいことに留意されたい。したがって、１つまたは複数のデータ・ブロック、１つのＰシンドローム・ブロック、および１つのＱシンドローム・ブロックを含むＲＡＩＤストライプは、データ・ブロック２１１０〜２１１２、２１２０〜２１２２（および図示しない他のデータ・ブロック）と、格納Ｐシンドローム・ブロック２１３０〜２１３２と、格納Ｑシンドローム・ブロック２１４０〜２１４２との様々な組合せまたはマッピングに格納することができる。
【００２４】
Ｒａｉｄコントローラ２２０は、Ｐシンドローム・エンジン２２１を含む。Ｐシンドローム・エンジン２２１は、少なくともデータ・ブロック２１１０〜２１１２、２１２０〜２１２２に基づいて格納Ｐシンドローム・ブロック２１３０〜２１３２を算出し、かつ／またはチェックするモジュールでもプロセスでもよい。Ｐシンドローム・エンジン２２１は、格納Ｐシンドローム・ブロック２１３０〜２１３２の算出および／またはチェックの性能を向上するための専用ハードウェアを含み得る。ある実施形態では、Ｐシンドローム・エンジンは、格納Ｐシンドローム・ブロック２１３０〜２１３２を算出し、かつ／またはチェックするために、データ・ブロック２１１０〜２１１２のビット単位ＸＯＲを算出する。
【００２５】
Ｒａｉｄコントローラ２２０は、Ｑシンドローム・エンジン２２２を含む。Ｑシンドローム・エンジン２２２は、少なくともデータ・ブロック２１１０〜２１１２、２１２０〜２１２２に基づいて格納Ｑシンドローム・ブロック２１４２〜２１４０を算出し、かつ／またはチェックするモジュールでもプロセスでもよい。Ｑシンドローム・エンジン２２２は、格納Ｑシンドローム・ブロック２１４２〜２１４０の算出および／またはチェックの性能を向上するための専用ハードウェアを含み得る。ある実施形態では、Ｑシンドローム・エンジンは、格納Ｑシンドローム・ブロック２１４０〜２１４２を算出し、かつ／またはチェックするために、データ・ブロック２１１０〜２１１２のリードソロモン・コードを算出する。
【００２６】
ＲＡＩＤコントローラ２２０は、仮想ボリューム２４０をホスト２３０に投影し得る。ＲＡＩＤコントローラ１２２０は、仮想ボリューム２４１〜２４２をホスト２３１に投影し得る。ＲＡＩＤコントローラ２２０は、追加の仮想ボリュームも投影し得る。ただし、こうしたボリュームは、簡潔にするために図２からは省いてある。ＲＡＩＤ構成から作成されると、仮想ボリューム２４０〜２４２は、ホスト・コンピュータ２３０〜２３１によってアクセスすることができる。
【００２７】
ある実施形態では、ＲＡＩＤコントローラ２２０は、データ・ブロック２１１０〜２１１２、２１２０〜２１２２または格納ＰおよびＱシンドローム・ブロック２１３０〜２１３２、２１４０〜２１４２を分離し訂正する。ＲＡＩＤコントローラ２２０が訂正するエラーは、データ・ブロック２１１０〜２１１２、２１２０〜２１２２によって格納されたデータと、ＲＡＩＤストライプの格納Ｐシンドローム・ブロック１１３０〜１１３２および格納Ｑシンドローム・ブロック１１４０〜１１４２の少なくとも１つによって格納されたデータとの間の不一致によって表わされる。
【００２８】
ＲＡＩＤコントローラ２２０は、データ・ブロックならびにディスク・アレイ２１０によって格納されたＲＡＩＤストライプのＰおよびＱシンドローム・ブロックを読み込む。ＲＡＩＤコントローラ２２０は、ＲＡＩＤストライプから読み込まれたデータ・ブロックに基づいて、Ｐシンドローム・ブロックおよびＱシンドローム・ブロック（それぞれＰｃ、Ｑｃで示す）を算出する。こうした算出シンドローム・ブロック（Ｐｃ、Ｑｃ）は、ディスク・アレイ２１０上に格納されたシンドローム・ブロック（それぞれＰｓ、Ｑｓで示す）と比較される。こうした比較の結果、算出および格納シンドローム・ブロックの等価性インジケータが作成され、または格納され得る。
【００２９】
格納および算出シンドローム・ブロック両方が一致する場合（すなわち、Ｐｃ＝Ｐｓ、かつＱｃ＝Ｑｓである場合）、ＲＡＩＤコントローラ２２０は、格納データ・ブロック２１１０〜２１１２、２１２０〜２１２２と、ＲＡＩＤストライプの格納Ｐシンドローム・ブロック２１３０〜２１３２および格納Ｑシンドローム・ブロック２１４０〜２１４２のいずれか１つとの間の不一致を見つけていない。算出Ｐシンドローム・ブロックが格納Ｐシンドローム・ブロックと一致せず、かつ算出Ｑシンドローム・ブロックが格納Ｑシンドローム・ブロックと一致する場合（すなわち、Ｐｃ≠Ｐｓ、かつＱｃ＝Ｑｓである場合）、ＲＡＩＤコントローラ２２０は、ストライプ中のデータ・ブロック、格納Ｑシンドローム・ブロック、および算出Ｐシンドローム・ブロックが正しいと判定する。したがって、ＲＡＩＤコントローラ２２０は、算出Ｐシンドローム・ブロック、すなわちＰｃをディスク・アレイ２１０に書き込む。
【００３０】
算出Ｑシンドローム・ブロックが格納Ｑシンドローム・ブロックと一致せず、算出Ｐシンドローム・ブロックが格納Ｐシンドローム・ブロックと一致する場合（すなわち、Ｐｃ＝Ｐｓ、かつＱｃ≠Ｑｓである場合）、ＲＡＩＤコントローラ２２０は、ストライプ中のデータ・ブロック、格納Ｐシンドローム・ブロック、および算出Ｑシンドローム・ブロックが正しいと判定する。したがって、ＲＡＩＤコントローラ２２０は、算出Ｑシンドローム・ブロック、すなわちＱｃをディスク・アレイ２１０に書き込む。
【００３１】
算出Ｐシンドローム・ブロックが格納Ｐシンドローム・ブロックと一致せず、かつ算出Ｑシンドローム・ブロックが格納Ｑシンドローム・ブロックと一致しない場合（すなわち、Ｐｃ≠Ｐｓ、かつＱｃ≠Ｑｓである場合）、ＲＡＩＤコントローラ２２０は、ＲＡＩＤストライプに関連づけられたデータ・ブロック２１１０〜２１１２、２１２０〜２１２２の１つまたは複数が不正確な可能性があると判定する。ＲＡＩＤコントローラ２２０は、ＲＡＩＤストライプ中のデータ・ブロックのどの１つまたは複数が、他のデータ・ブロックおよび格納ＰおよびＱシンドローム・ブロックと整合しないかの判定に進む。
【００３２】
ＲＡＩＤストライプ中のデータ・ブロックのどれが他のデータ・ブロックならびに格納ＰおよびＱシンドローム・ブロックと整合しないか判定するために、ＲＡＩＤコントローラ２２０は、第１のデータ・ブロックを選択する。この第１のデータ・ブロックは、ＲＡＩＤストライプの他のデータ・ブロックおよび格納Ｐシンドローム・ブロックを使って復元される。復元された第１のデータ・ブロックは次いで、他のデータ・ブロックとともに、新しいＱシンドローム・ブロック（Ｑｎで示す）を算出するのに使われる。この新しいＱシンドローム・ブロックは、格納Ｑシンドローム・ブロックと比較される。新しいＱシンドローム・ブロックと格納Ｑシンドローム・ブロックが一致する（すなわち、Ｑｎ＝Ｑｓ）場合、この第１のデータ・ブロックは、不良データを保持している疑いがあるものとして選択される。この印づけの結果、データ・ブロックに関連づけられた不審ブロック・インジケータが作成され、または格納され得る。このプロセスは、ＲＡＩＤストライプ中のデータ・ブロックそれぞれに対して繰り返される。
【００３３】
ＲＡＩＤストライプ中のデータ・ブロックがすべて上述したようにスキャンされると、ＲＡＩＤコントローラ２２０は、複数のデータ・ブロックに、不良データを保持している疑いがあるものとして印がつけられたかどうか判定する。単一のドライブが、不良データを保持している疑いがあるものとして識別されている場合、ＲＡＩＤコントローラ２２０は、格納Ｐシンドローム・ブロックおよびＲＡＩＤストライプの他のデータ・ブロックから、そのブロックに対するデータを復元する（または、予め算出されたデータを使う）。複数のドライブが、不良データを保持している疑いがあるものとして識別されている場合、ＲＡＩＤコントローラ２２０は、算出ＰおよびＱシンドローム・ブロックを再生成し（または予め算出されたＰｃ、Ｑｃを使い）、その一方または両方をディスク・アレイ２１０に書き込むことができる。再生成された、または予め算出されたＰおよびＱシンドローム・ブロックのうち１つまたは複数のブロックの書込みは、任意選択のステップであることを理解されたい。ある実施形態では、ＲＡＩＤコントローラ２２０は、ＲＡＩＤストライプ全体（および／または不良ＰおよびＱシンドローム・ブロックの１つもしくは複数）に、不良データを保持する疑いがあるものとして印をつけるインジケータをセットすることができる。
【００３４】
図３は、データの正確性を維持する方法を示すフローチャートである。図３に示すステップは、記憶システム１００および記憶システム２００の１つまたは複数の要素によって実施することができる。
【００３５】
複数のデータ・ブロック、第１の格納シンドローム・ブロック、および第２の格納シンドローム・ブロックを含むＲＡＩＤストライプが受け取られる（３０２）。たとえば、ＲＡＩＤコントローラ２２０は、ディスク・アレイ２１０からＲＡＩＤストライプを受け取ることができる。このＲＡＩＤストライプは、複数のデータ・ブロック、１つの格納Ｐシンドローム・ブロック（Ｐｓ）、および１つの格納Ｑシンドローム・ブロック（Ｑｓ）を含み得る。第１の算出シンドローム・ブロックおよび第２の算出シンドローム・ブロックが判定される（３０４）。たとえば、Ｐシンドローム・エンジン２２１は、ＲＡＩＤストライプ中の複数のデータ・ブロックに基づいてＰシンドローム・ブロック（Ｐｃ）を算出することができる。Ｑシンドローム・エンジン２２２は、ＲＡＩＤストライプ中の複数のデータ・ブロックに基づいてＱシンドローム・ブロック（Ｑｃ）を算出することができる。
【００３６】
算出シンドローム・ブロックが、格納シンドローム・ブロックと比較される（３０６）。たとえば、ＲＡＩＤコントローラ２２０は、ボックス３０４で算出されたシンドローム・ブロック、すなわちＰｃ、Ｑｃを、それぞれ、ブロック３０２で受け取られた格納シンドローム・ブロック、すなわちＰｓ、Ｑｓと比較すればよい。両方の格納シンドローム・ブロックが、そのそれぞれの算出シンドローム・ブロックと等しくないと判定される（３０８）。たとえば、ＲＡＩＤコントローラ２２０は、算出Ｐシンドローム・ブロックが格納Ｐシンドローム・ブロックと一致せず、かつ算出Ｑシンドローム・ブロックが格納Ｑシンドローム・ブロック一致しないと判定することができる（すなわち、Ｐｃ≠Ｐｓ、かつＱｃ≠Ｑｓである場合）。第１の不審データ・ブロックが選択される（３１０）。たとえば、ＲＡＩＤコントローラ２２０は、ＲＡＩＤストライプ中のデータ・ブロックのうち第１のデータ・ブロックを、不正確または破壊データをもつ疑いがあるものとして選択してよい。この選択プロセスについては、後で図４を参照してさらに詳しく論じる。
【００３７】
第２の不審データ・ブロックがある場合、フローはブロック３１６に進む。第２の不審データ・ブロックがない場合、フローはブロック３１４に進む（３１２）。たとえば、ＲＡＩＤコントローラ２２０は、ただ１つの不審データ・ブロックがあると判定する場合がある。第２の不審データ・ブロックがない場合、第１の格納シンドローム・ブロックが、第１の不審データ・ブロックを復元するのに使われる（３１４）。たとえば、ＲＡＩＤコントローラ２２０は、ＲＡＩＤストライプにある格納Ｐシンドローム・ブロック（Ｐｓ）および他のデータ・ブロックを使って、不正確または破壊データをもつ疑いのあるデータ・ブロックを復元することができる。この復元されたデータ・ブロックは、ＲＡＩＤコントローラ２２０によってディスク・アレイ２１０に書き込まれて、複数のデータ・ブロックと格納ＲＡＩＤストライプ中のＰおよびＱシンドローム・データ・ブロックとの間の不整合をなくすことができる。
【００３８】
第２の不審データ・ブロックがある場合、複数のデータ・ブロックが、第１および第２の格納シンドローム・ブロックを復元するのに使われる（３１６）。たとえば、ＲＡＩＤコントローラ２２０は、ＲＡＩＤストライプのデータ・ブロックを使って、新しいＰシンドローム・ブロックおよび新しいＱシンドローム・ブロックを算出することができる。こうした復元されたＰおよびＱシンドローム・ブロックは、ＲＡＩＤコントローラ２２０によってディスク・アレイ２１０に書き込まれて、複数のデータ・ブロックと、格納ＲＡＩＤストライプ中のシンドローム・データ・ブロックとの間の不整合をなくすことができる。このブロック３１６は任意選択であり、復元された第１および第２のシンドローム・ブロックの書込みは、一部の実施形態では実施されなくてよいことを理解されたい。ある実施形態では、ＲＡＩＤストライプ全体が不良データ（および／またはシンドローム）を保持する疑いがあることを示すインジケータを格納することができる。
【００３９】
図４は、破壊された可能性のあるデータ・ブロックを判定する方法を示すフローチャートである。図４に示すステップは、記憶システム１００および記憶システム２００の１つまたは複数の要素によって実施することができる。
【００４０】
データ・ブロックが選択され、第１の格納シンドローム・ブロックが、このデータ・ブロックを復元するのに使われる（４０２）。たとえば、ＲＡＩＤコントローラ２２０が、データ・ブロックを選択してよい。ＲＡＩＤストライプの他のデータ・ブロック、およびＰシンドローム・ブロックが、データ・ブロックを復元するのに使われ得る。復元されたデータ・ブロックは、復元された第２のシンドローム・ブロックを判定するのに使われる（４０４）。たとえば、ＲＡＩＤコントローラ２２０は、復元されたデータ・ブロックを使って、復元Ｑシンドローム・ブロック（Ｑｒ）を算出することができる。
【００４１】
復元された第２のシンドローム・ブロックは、第２の格納シンドローム・ブロックと比較される（４０６）。たとえば、ＲＡＩＤコントローラ２２０は、復元されたＱシンドローム・ブロック（Ｑｒ）を、ＲＡＩＤストライプの格納Ｑシンドローム・ブロック（Ｑｓ）と比較すればよい。復元された第２のシンドローム・ブロックが第２の格納シンドローム・ブロックと等しい場合、データ・ブロックが、不審データ・ブロックとして選択される（４０８）。たとえば、ＲＡＩＤコントローラ２２０は、復元されたＱシンドローム・ブロックがＲＡＩＤストライプの格納Ｑシンドローム・ブロックと等しい（すなわち、Ｑｒ＝Ｑｓ）場合、データ・ブロックを、不正確または破壊データをもつ疑いがあるものとして選択してよい。
【００４２】
ブロックがすべて選択された場合、フローはブロック４１２に進み、プロセスは終わる。ブロックすべてが選択されたわけではない場合、フローはブロック４０２に戻り、検査されるべき新しいデータ・ブロックを選択し、データ・ブロックを、不正確または破壊データをもつ疑いがあるものとして選択し、印をつける。
【００４３】
上述したシステム、ドライブ、コントローラ、エンジン、および機能は、１つまたは複数のコンピュータ・システムで実装することも、そうしたシステムによって実行することもできる。上述した方法は、コンピュータ可読媒体上に格納することができる。記憶システム１００および記憶システム２００の要素の多くは、コンピュータ・システムでよく、コンピュータ・システムを備え、または含み得る。こうした要素は、ＲＡＩＤコントローラ１２０、ＲＡＩＤコントローラ２２０、第１のシンドローム・エンジン１２１、第２のシンドローム・エンジン１２２、ディスク・アレイ１１０、ディスク・ドライブ１１１〜１１４、ホスト１３０〜１３１、Ｐシンドローム・エンジン２２１、Ｑシンドローム・エンジン２２２、ディスク・アレイ２１０、ディスク・ドライブ２１１〜２１４、およびホスト２３０〜２３１を含むが、それに限定されない。
【００４４】
図５は、コンピュータ・システムを示すブロック図である。コンピュータ・システム５００は、通信インタフェース５２０、処理システム５３０、記憶システム５４０、およびユーザ・インタフェース５６０を含む。処理システム５３０は、記憶システム５４０に動作可能に結合される。記憶システム５４０は、ソフトウェア５５０およびデータ５７０を格納する。処理システム５３０は、通信インタフェース５２０およびユーザ・インタフェース５６０に動作可能に結合される。コンピュータ・システム５００は、プログラム式汎用コンピュータを備え得る。コンピュータ・システム５００は、マイクロプロセッサを含み得る。コンピュータ・システム５００は、プログラム可能または特殊目的回路構成を備え得る。コンピュータ・システム５００は、要素５２０〜５７０をともに備える複数の装置、プロセッサ、記憶装置、および／またはインタフェースに分散してよい。
【００４５】
通信インタフェース５２０は、ネットワーク・インタフェース、モデム、ポート、バス、リンク、トランシーバ、または他の通信装置を含み得る。通信インタフェース５２０は、複数の通信装置に分散してよい。処理システム５３０は、マイクロプロセッサ、マイクロコントローラ、論理回路、または他の処理装置を備え得る。処理システム５３０は、複数の処理装置に分散してよい。ユーザ・インタフェース５６０は、キーボード、マウス、音声認識インタフェース、マイクロホンおよびスピーカ、グラフィカル・ディスプレイ、タッチ・スクリーン、または他のタイプのユーザ・インタフェース装置を備え得る。ユーザ・インタフェース５６０は、複数のインタフェース装置に分散してよい。記憶システム５４０は、ディスク、テープ、集積回路、ＲＡＭ、ＲＯＭ、ネットワーク記憶装置、サーバ、または他のメモリ機能を備え得る。記憶システム５４０は、コンピュータ可読媒体でよい。記憶システム５４０は、複数のメモリ装置に分散してよい。
【００４６】
処理システム５３０は、記憶システム５４０からソフトウェア５５０を取り出し、実行する。処理システムは、データ５７０を取り出し、格納することができる。処理システムは、通信インタフェース５２０を介してデータを取り出し、格納することもできる。処理システム５３０は、具体的結果を達成するように、ソフトウェア５５０またはデータ５７０を作成し、または修正することができる。処理システムは、具体的結果を達成するように、通信インタフェース５２０またはユーザ・インタフェース５６０を制御することができる。処理システムは、通信インタフェース５２０を介してリモート格納ソフトウェアを取り出し、実行することができる。
【００４７】
ソフトウェア５５０およびリモート格納ソフトウェアは、オペレーティング・システム、ユーティリティ、ドライバ、ネットワーク用ソフトウェア、および一般にコンピュータ・システムによって実行される他のソフトウェアを含み得る。ソフトウェア５５０は、アプリケーション・プログラム、アプレット、ファームウェア、または一般にコンピュータ・システムによって実行される他の形のマシン可読処理命令を含み得る。処理システム５３０によって実行されると、ソフトウェア５５０またはリモート格納ソフトウェアは、本明細書に記載した通りに動作するよう、コンピュータ・システム５００に指示することができる。
【００４８】
本発明の上記説明は、例示および説明の目的で提示した。網羅的であることも、開示した厳密な形に本発明を限定することも意図しているわけではなく、他の修正形態および変形形態が、上記教示を顧みたうえで可能であり得る。実施形態は、本発明の原理およびその実際の用途を最も分かりやすく説明するために選び、記載してあり、そうすることによって、企図される特定の使用法に適合されるように、様々な実施形態および様々な修正形態において本発明を当業者が最も都合よく使用できるようにするものである。添付の請求項は、従来技術によって限定されない限り、本発明の他の代替実施形態を含むと見なされることを意図している。
【図１】
2011227859.tif 000003
【図２】
2011227859.tif 000004
【図３】
2011227859.tif 000005
【図４】
2011227859.tif 000006
【図５】
2011227859.tif 000007