(57)【要約】【課題】本発明はＲＡＩＤ５のパリティチェック強化方法、装置及びプログラムに関し、パリティチェックを強化することを目的としている。【解決手段】ＲＡＩＤ５（Ｎ＋１）のデータ構成において、パリティを求めるための演算を行なう場合において、Ｎが偶数の場合には、仮想的なデータストリップを１個加え、更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定するように構成される。この結果、ＲＡＩＤ５構成のデータ処理システムにおいて、パリティチェックを強化することができる。【選択図】図５
2007179297.tif 000002
【特許請求の範囲】
【請求項１】
ＲＡＩＤ５（Ｎ＋１）のデータ構成において、
パリティを求めるための演算を行なう場合において、Ｎが偶数の場合には、仮想的なデータストリップを１個加え、
更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定することを特徴とするＲＡＩＤ５のパリティチェック強化方法。
【請求項２】
ＲＡＩＤ５（Ｎ＋１）のデータ構成において、パリティを求めるための演算を行なう場合において、Ｎが偶数の場合には、仮想的なデータストリップを１個加える工程と、
更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定する工程とをコンピュータで実行することを特徴とするＲＡＩＤ５のパリティチェック強化プログラム。
【請求項３】
ＲＡＩＤ５（Ｎ＋１）のデータ構成を有する記憶装置において、
パリティを求めるための演算を行なう場合において、Ｎが偶数の場合には、仮想的なデータストリップを１個加える手段と、
更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定する手段と、
を有することを特徴とする記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＲＡＩＤ５のパリティチェック強化方法、装置及びプログラムに関する。
【背景技術】
【０００２】
ディスク（Ｄｉｓｋ）へのＩ／Ｏ単位であるブロック（Ｂｌｏｃｋ）毎にチェックコードを設け、データ保証を行なうようになっている。図６は１ブロックのフォーマット例を示す図である。データ（Ｄａｔａ）５１２バイト（Ｂｙｔｅ）についてブロックチェックコード（Ｂｌｏｃｋ  Ｃｈｅｃｋ  Ｃｏｄｅ：ＢＣＣ）８バイトを付加し、１ブロック５２０バイトとしている。ＢＣＣの内容としては、ブロックのデータ５１２バイトの値から演算により求まるブロックＣＲＣと、ブロックのアドレスから生成されるブロックＩＤとがある。図７はＢＣＣの構成例を示している。図より明らかなように、ブロックＣＲＣ部分と、ブロックＩＤ部分から構成されている。ブロックＣＲＣ部分が例えば６バイト、ブロックＩＤ部分が例えば２バイトから構成されている。
【０００３】
データを記憶するディスクの構成としては、例えばＲＡＩＤ１やＲＡＩＤ５が用いられる。ＲＡＩＤ１は、図８に示すようにディスク０とディスク１が同一内容を記憶している。図９はＲＡＩＤ５の説明図である。データを記憶するディスク０，ディスク１，ディスク２と、パリティデータを記憶するディスク３とがある。ここで、データを記憶するディスクの数をＮとして、パリティディスクと合わせて（Ｎ＋１）という表現を用いる。図９に示す例では、ＲＡＩＤ（Ｎ＋１）という形式で表現する。図９に示す例は、Ｎ＝３の場合である。
【０００４】
図１０はディスクに格納されるアドレスとデータの関係を示す図である。アドレスは０から１ずつ更新されていくが、このアドレスに対応する領域に記憶されるデータは、例えば図に示すように、１６進で０，４，８，１，…という具合に格納されていく。この１６進を２進で示すとその下に示すような値となる。図１１はストリップとストライプの関係を示す図である。図のアドレス００H〜ｆｆH（Ｈは１６進を示す。以下同じ）までが１ストリップのデータ領域であり、次のアドレス１００H〜１ｆｆHが次の１ストリップを示す。このような複数のストリップで１個のストライプを構成している。
【０００５】
ＲＡＩＤ５のある１ストライプにおいて、データストリップでは、データのアドレスに対応したブロックＩＤが付けられ、ストリップ内で図１１に示すようにシーケンシャルな値となる。例えば、アドレス００で示される領域に図６に示す１ブロックデータが記憶され、アドレス０１で示される領域に１ブロックデータが記憶される。以下、同様である。
【０００６】
一方で、パリティストリップの場合には、そのＢＣＣもデータストリップのＢＣＣをＸＯＲすることにより、生成される。図１２はパリティストリップの生成法の説明図である。ディスク０〜ディスク２までのそれぞれのブロックＩＤのＸＯＲをとり、その値をパリティディスクに格納する。図１３はＸＯＲ演算の模式的な説明図である。例えば、Ｄｉｓｋ０が“００”、Ｄｉｓｋ１が“０１”、Ｄｉｓｋ２が“１０”であったものとすると、その演算は以下のようにして行われる。
【０００７】
先ず、Ｄｉｓｋ０の上位ビット“０”と、Ｄｉｓｋ１の上位ビット“０”とのＸＯＲがとられる。その結果は“０”である。次に、Ｄｉｓｋ０の下位ビット“０”とＤｉｓｋ１の下位ビット“１”とのＸＯＲがとられる。その結果は“１”である。次に、このＸＯＲの結果である“０１”とＤｉｓｋ２のビット“１０”とのＸＯＲが同様にしてとられる。この結果は、“１１”となる。この“１１”がパリティＤｉｓｋに記憶される。
【０００８】
ＲＡＩＤ（Ｎ＋１）において、Ｎが奇数の場合には、パリティブロックＩＤはストリップ内でシーケンシャルな値となる。図１４は、Ｎが奇数時のパリティブロックＩＤの算出方法の説明図である。ここでは、Ｎ＝３の場合を示す。最初のＤｉｓｋ０のアドレス“０００”とＤｉｓｋ１のアドレス“１００”とのＸＯＲをとった結果は、“１００”となる。この結果“１００”とＤｉｓｋ２のアドレス“２００”とのＸＯＲをとった結果は、“３００”となる。
【０００９】
この演算について、説明する。先頭のデータは“１”と“２”である。“１”＝０００１，“２”＝００１０であるので、各ビット毎にＸＯＲをとると“００１１”となるので、１６進で表したＸＯＲの結果は、“３”となる。“００”と“００”のＸＯＲは“００”である。従って、パリティＤｉｓｋ３の最初の番地は“３００”となる。次に、Ｄｉｓｋ０とＤｉｓｋ１との最後のアドレス“０ｆｆ”と“１ｆｆ”についてＸＯＲをとるものとする。図の“０”と“１”のＸＯＲは“１”、残りの“ｆｆ”と“ｆｆ”のＸＯＲは“００”となるので、“０ｆｆ”と“１ｆｆ”のＸＯＲの結果は、“１００”となる。
【００１０】
この“１００”と次のＤｉｓｋ２の“２ｆｆ”とのＸＯＲをとると、その結果は、同様な演算により“３ｆｆ”となる。以上より、Ｎが奇数の場合のパリティのブロックＩＤは、“３００”から“３ｆｆ”までシーケンシャルな値となる。
【００１１】
一方、Ｎが偶数の場合には、パリティブロックＩＤはストリップ内で一定値となる。例えば、図１３でＤｉｓｋがＤｉｓｋ０とＤｉｓｋ１の２個であったものとする。Ｄｉｓｋ０の最初のアドレスは“０００”、Ｄｉｓｋ１のアドレスは“１００”であるので、そのＸＯＲ演算結果は“１００”となる。Ｄｉｓｋ０の最後のアドレスは“０ｆｆ”、Ｄｉｓｋ１の最後のアドレスは“１ｆｆ”であるので、そのＸＯＲ演算結果は“１００”となる。演算結果が最初のアドレスの場合と同じ“１００”となり、一定値となっていることが分かる。
【００１２】
ブロックＩＤは、データの位置を示すものであるため、ストリップ内でシーケンシャルな値をとる必要がある。Ｎが奇数の場合には、前述したようにシーケンシャルな値をとっている。これに対して、Ｎが偶数の場合には、ブロックＩＤはアドレスの値に拘わらず一定値となる。
【００１３】
このため、Ｎが偶数の場合には、仮想的なデータストリップを用意してＸＯＲを奇数で行なうようにする。この仮想的なデータストリップをファントム（Ｐｈａｎｔｏｍ）ストリップという。図１５はファントムＤｉｓｋを付加した場合を示す図である。ファントムＤｉｓｋのアドレスデータが０００〜０ｆｆであるものとする。このファントムＤｉｓｋのアドレスの最初のアドレス“０００”とＤｉｓｋ０の最初のアドレス“０００”のＸＯＲ演算結果は“０００”となる。この“０００”とＤｉｓｋ１の最初のデータ“１００”とのＸＯＲ演算結果は、“１００”となる。
【００１４】
次に、ファントムＤｉｓｋの最後のデータ“０ｆｆ”とＤｉｓｋ０の最後のデータ“０ｆｆ”のＸＯＲ演算結果は“０００”となる。この“０００”とＤｉｓｋ１の最後のデータ“１ｆｆ”との演算結果は、“１ｆｆ”となり、パリティＤｉｓｋのブロックＩＤのアドレスはシーケンシャルなものとなる。このように、Ｎが偶数の場合でも、ファントムＤｉｓｋを設けることにより、ブロックＩＤをＮによらずストリップ内でシーケンシャルな値とすることができる。一方、このファントムストリップの各ブロックについてのデータ５１２バイトをオール０とすることで、この部分のＸＯＲ演算を不要とすることができる。この場合、パリティ生成にかかる計算コスト増は、ＢＣＣ８バイト分のＸＯＲを１回加えた分に抑えられる。ブロックＣＲＣについてはデータ５１２バイトをオール０に対応した値、ブロックＩＤについてはストライプ先頭データストリップの値等を用いる。
【００１５】
このように、ＲＡＩＤ構成メンバディスク数によらず、パリティストリップについてもブロックＩＤをシーケンシャルな値とすることで、データストリップと同等なエラー検出を行える。
【００１６】
従来のこの種の技術としては、ディスクアレイ装置における磁気ディスク装置単位で行われるデータチェック（ＣＲＣ、パリティ）で検出されず、論理障害を起こす原因となった磁気ディスク装置を特定する技術が知られている（例えば引用文献１参照）。また、エラー検出能力の低いディスク制御部で、誤って旧データが読まれている障害を検出するとともに、付加チェックコードによってデータのエラーをも検出できるようにした技術が知られている（例えば引用文献２参照）。
【特許文献１】特開平１０−１７１６０８号公報（段落００１４〜００３０、図１、図３）
【特許文献２】特開２００３−３６１４６号公報（段落００１８〜００３５、図１、図２、図３）
【発明の開示】
【発明が解決しようとする課題】
【００１７】
ブロックＣＲＣの方式で、データ５１２バイトオール０に対してブロックＢＣＣもオール０となる算出方法がある。他の０以外となるデータ／ＣＲＣの組み合わせに比べて、データとＣＲＣいずれもオール０となる組み合わせでは、一般的にメモリ等を０で初期化することを考慮すると、エラー検出精度が劣ると考えられる。
【００１８】
データストリップについては、初期化フォーマットによるデータ／ＣＲＣが０の組み合わせが想定される。また、初期化フォーマットが０以外であっても、オール１の場合やストリップサイズがフォーマットパターンと一致していた場合等、全ストリップで同じデータの値となることが想定される。この場合、ＲＡＩＤ５構成メンバディスク数が奇数の場合、パリティ算出は偶数ＸＯＲとなり、データ／ＣＲＣが０の組み合わせとなり、エラー検出精度が劣ると考えられる。
【００１９】
本発明はこのような課題に鑑みてなされたものであって、エラー検出精度を向上させることができるＲＡＩＤ５のパリティチェック強化方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【００２０】
（１）請求項１記載の発明は、ＲＡＩＤ５（Ｎ＋１）のデータ構成において、パリティを求めるための演算を行なう場合において、Ｎが偶数の場合には、仮想的なデータストリップを１個加え、更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定することを特徴とする。
（２）請求項２記載の発明は、ＲＡＩＤ５（Ｎ＋１）のデータ構成において、パリティを求めるための演算を行なう場合において、Ｎが偶数の場合には、仮想的なデータストリップを１個加える工程と、更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定する工程とをコンピュータで実行することを特徴とする。
（３）請求項３記載の発明は、ＲＡＩＤ５（Ｎ＋１）のデータ構成を有する記憶装置において、パリティを求めるための演算を行なう場合において、Ｎが偶数の場合には、仮想的なデータストリップを１個加える手段と、更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定する手段と、を有することを特徴とする。
【発明の効果】
【００２１】
（１）請求項１記載の発明によれば、ＲＡＩＤ５のパリティチェック強化方法を提供することができる。
（２）請求項２記載の発明によれば、ＲＡＩＤ５のパリティチェック強化プログラムを提供することができる。
（３）請求項３記載の発明によれば、ＲＡＩＤ５のパリティチェック強化装置を提供することができる。
【発明を実施するための最良の形態】
【００２２】
以下、図面を参照して本発明の実施の形態例を詳細に説明する。
図１はファントムブロックのデータフォーマットを示す図である。ファントムブロックで、５１２バイトのデータ領域の特定の領域を特定のデータに設定している。図中０Xは１６進を示している。図では、５１２バイトのデータ部分の特定の領域をｆに設定している状態を示している。具体的には、値の小さい方の領域をｆｆｆｆｆｆｆｆに設定している。このように、ファントムブロックのデータ部分の特定の領域を特定のデータに設定することにより、ＣＲＣ演算の結果がオール０でないようにすることができ、この結果ＲＡＩＤ５のパリティチェック強化方法を提供することができる。
【００２３】
図２はファントムなしにおける０フォーマット時各ストリップのブロックを示す図である。ディスクが＃０〜＃３までの４個設けられており、ディスク＃３がパリティディスクとなっている。いずれのディスクも、ＣＲＣとデータがオール０である。このようなデータの場合、データのＣＲＣもデータも０になり、パリティチェック機能が強力ではない。そこで、図３に示すように、ファントムディスクを設け、そのＣＲＣ部分とデータ部分に特定領域が特定の値になるような設定を行なう。このようにすれば、データのＣＲＣ演算部の結果もオール０とはならず、またブロックＩＤ部分のＸＯＲはシーケンシャルな値をとることができ、ＲＡＩＤ５のパリティチェックを強化することができる。
【００２４】
図４は本発明の演算方法の説明図である。図に示す例は、ファントム、データ０、データ１、パリティからなる場合を示す。ファントムデータ、データ０、データ１は、何れもデータとＣＲＣとブロックＩＤから構成されている。ファントムのデータ部は、特定の領域が特定のデータとなっている。即ち、データ部はオール０でもオール１でもないデータとなる。ＣＲＣは、データ部分のＣＲＣ演算により求まった値である。ブロックＩＤは、図１４に示される演算が実行され、パリティ部のＣ部に記憶される。
【００２５】
データ０とデータ１のデータ部分は、ＣＲＣ演算が実行され、ＣＲＣ部分にその結果が記憶される。また、各データのデータ部分は、ＸＯＲ演算が実行される。即ち、ファントムデータのデータ部分とデータ０のデータ部分のＸＯＲが実行される。そして、このＸＯＲデータと、次のデータ１のデータ部分のＸＯＲ演算が実行される。そして、実行の結果求まったＸＯＲ値は、パリティデータのデータ部分Ａに記憶される。同様に、ファントムデータとデータ０、データ１のＣＲＣ部分は、同様のＸＯＲ演算が実行され、パリティデータのＣＲＣ部分Ｂに記憶される。
【００２６】
このように、本発明によれば、ＲＡＩＤ５の記憶構成において、仮想的なデータストリップを設けて、そのデータ部分にオール０でもオール１でもないデータを設けることにより、演算結果のパリティデータ部分が０とならないようにすることができ、パリティチェックを強化することができる。
【００２７】
図５は本発明を実施するシステム構成例を示す図である。図において、１はファントムデータが記憶されるファントムディスク、２はデータが記憶されるディスクで、図ではディスク０とディスク１の２個設けた場合を示している。３はパリティディスクである。１０はコンピュータ、１１は本発明を実行するプログラムである。１５はコンピュータ１０と各種のディスクを接続するバスである。
【００２８】
このように構成されたシステムにおいて、コンピュータ１０はプログラム１１に記憶されたシーケンスに従って前述したような演算を実行し、その結果をパリティディスク３に記憶する。先ず、コンピュータ１０は、ファントムディスク１のデータ部分にオール０でもオール１でもないデータを書き込む。そして、ファントムディスク１とディスク０との間でＸＯＲ演算を実行する。このＸＯＲ演算結果と、ディスク１との間でＸＯＲ演算を実行し、その結果をパリティディスク３に記憶する。このようなＸＯＲ演算は、データ部分のみならず、ブロックＣＲＣとブロックＩＤ部分についても実行される。この結果、パリティチェックを強化することができる。
【図面の簡単な説明】
【００２９】
【図１】ファントムブロックのデータフォーマットを示す図である。
【図２】ファントムなしにおける０フォーマット時各ストリップのブロックを示す図である。
【図３】ファントムありにおける０フォーマット時各ストリップのブロックを示す図である。
【図４】本発明の演算方法の説明図である。
【図５】本発明を実施するシステム構成例を示す図である。
【図６】１ブロックデータのフォーマット例を示す図である。
【図７】ＢＣＣの構成例を示す図である。
【図８】ＲＡＩＤ１の説明図である。
【図９】ＲＡＩＤ５の説明図である。
【図１０】アドレスとデータの関係を示す図である。
【図１１】ストリップとストライプの関係を示す図である。
【図１２】パリティストリップの生成法の説明図である。
【図１３】ＸＯＲ演算の説明図である。
【図１４】Ｎが奇数時のパリティブロックＩＤの算出方法の説明図である。
【図１５】ファントムディスクを付加した場合を示す図である。
【符号の説明】
【００３０】
１    ファントムディスク
２    ディスク
３    パリティディスク
１０  コンピュータ
１１  プログラム
１５  バス
【図１】
2007179297.tif 000003
【図２】
2007179297.tif 000004
【図３】
2007179297.tif 000005
【図４】
2007179297.tif 000006
【図５】
2007179297.tif 000007
【図６】
2007179297.tif 000008
【図７】
2007179297.tif 000009
【図８】
2007179297.tif 000010
【図９】
2007179297.tif 000011
【図１０】
2007179297.tif 000012
【図１１】
2007179297.tif 000013
【図１２】
2007179297.tif 000014
【図１３】
2007179297.tif 000015
【図１４】
2007179297.tif 000016
【図１５】
2007179297.tif 000017