JP2007179297A - Raid5のパリティチェック強化方法、装置及びプログラム - Google Patents
Raid5のパリティチェック強化方法、装置及びプログラム Download PDFInfo
- Publication number
- JP2007179297A JP2007179297A JP2005376838A JP2005376838A JP2007179297A JP 2007179297 A JP2007179297 A JP 2007179297A JP 2005376838 A JP2005376838 A JP 2005376838A JP 2005376838 A JP2005376838 A JP 2005376838A JP 2007179297 A JP2007179297 A JP 2007179297A
- Authority
- JP
- Japan
- Prior art keywords
- data
- disk
- parity
- strip
- block
- 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
- 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/1069—Phantom write, i.e. write were nothing is actually written on the disk of a RAID system
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)
- Detection And Correction Of Errors (AREA)
Abstract
【課題】本発明はRAID5のパリティチェック強化方法、装置及びプログラムに関し、パリティチェックを強化することを目的としている。
【解決手段】RAID5(N+1)のデータ構成において、パリティを求めるための演算を行なう場合において、Nが偶数の場合には、仮想的なデータストリップを1個加え、更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定するように構成される。この結果、RAID5構成のデータ処理システムにおいて、パリティチェックを強化することができる。
【選択図】図5
【解決手段】RAID5(N+1)のデータ構成において、パリティを求めるための演算を行なう場合において、Nが偶数の場合には、仮想的なデータストリップを1個加え、更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定するように構成される。この結果、RAID5構成のデータ処理システムにおいて、パリティチェックを強化することができる。
【選択図】図5
Description
本発明はRAID5のパリティチェック強化方法、装置及びプログラムに関する。
ディスク(Disk)へのI/O単位であるブロック(Block)毎にチェックコードを設け、データ保証を行なうようになっている。図6は1ブロックのフォーマット例を示す図である。データ(Data)512バイト(Byte)についてブロックチェックコード(Block Check Code:BCC)8バイトを付加し、1ブロック520バイトとしている。BCCの内容としては、ブロックのデータ512バイトの値から演算により求まるブロックCRCと、ブロックのアドレスから生成されるブロックIDとがある。図7はBCCの構成例を示している。図より明らかなように、ブロックCRC部分と、ブロックID部分から構成されている。ブロックCRC部分が例えば6バイト、ブロックID部分が例えば2バイトから構成されている。
データを記憶するディスクの構成としては、例えばRAID1やRAID5が用いられる。RAID1は、図8に示すようにディスク0とディスク1が同一内容を記憶している。図9はRAID5の説明図である。データを記憶するディスク0,ディスク1,ディスク2と、パリティデータを記憶するディスク3とがある。ここで、データを記憶するディスクの数をNとして、パリティディスクと合わせて(N+1)という表現を用いる。図9に示す例では、RAID(N+1)という形式で表現する。図9に示す例は、N=3の場合である。
図10はディスクに格納されるアドレスとデータの関係を示す図である。アドレスは0から1ずつ更新されていくが、このアドレスに対応する領域に記憶されるデータは、例えば図に示すように、16進で0,4,8,1,…という具合に格納されていく。この16進を2進で示すとその下に示すような値となる。図11はストリップとストライプの関係を示す図である。図のアドレス00H〜ffH(Hは16進を示す。以下同じ)までが1ストリップのデータ領域であり、次のアドレス100H〜1ffHが次の1ストリップを示す。このような複数のストリップで1個のストライプを構成している。
RAID5のある1ストライプにおいて、データストリップでは、データのアドレスに対応したブロックIDが付けられ、ストリップ内で図11に示すようにシーケンシャルな値となる。例えば、アドレス00で示される領域に図6に示す1ブロックデータが記憶され、アドレス01で示される領域に1ブロックデータが記憶される。以下、同様である。
一方で、パリティストリップの場合には、そのBCCもデータストリップのBCCをXORすることにより、生成される。図12はパリティストリップの生成法の説明図である。ディスク0〜ディスク2までのそれぞれのブロックIDのXORをとり、その値をパリティディスクに格納する。図13はXOR演算の模式的な説明図である。例えば、Disk0が“00”、Disk1が“01”、Disk2が“10”であったものとすると、その演算は以下のようにして行われる。
先ず、Disk0の上位ビット“0”と、Disk1の上位ビット“0”とのXORがとられる。その結果は“0”である。次に、Disk0の下位ビット“0”とDisk1の下位ビット“1”とのXORがとられる。その結果は“1”である。次に、このXORの結果である“01”とDisk2のビット“10”とのXORが同様にしてとられる。この結果は、“11”となる。この“11”がパリティDiskに記憶される。
RAID(N+1)において、Nが奇数の場合には、パリティブロックIDはストリップ内でシーケンシャルな値となる。図14は、Nが奇数時のパリティブロックIDの算出方法の説明図である。ここでは、N=3の場合を示す。最初のDisk0のアドレス“000”とDisk1のアドレス“100”とのXORをとった結果は、“100”となる。この結果“100”とDisk2のアドレス“200”とのXORをとった結果は、“300”となる。
この演算について、説明する。先頭のデータは“1”と“2”である。“1”=0001,“2”=0010であるので、各ビット毎にXORをとると“0011”となるので、16進で表したXORの結果は、“3”となる。“00”と“00”のXORは“00”である。従って、パリティDisk3の最初の番地は“300”となる。次に、Disk0とDisk1との最後のアドレス“0ff”と“1ff”についてXORをとるものとする。図の“0”と“1”のXORは“1”、残りの“ff”と“ff”のXORは“00”となるので、“0ff”と“1ff”のXORの結果は、“100”となる。
この“100”と次のDisk2の“2ff”とのXORをとると、その結果は、同様な演算により“3ff”となる。以上より、Nが奇数の場合のパリティのブロックIDは、“300”から“3ff”までシーケンシャルな値となる。
一方、Nが偶数の場合には、パリティブロックIDはストリップ内で一定値となる。例えば、図13でDiskがDisk0とDisk1の2個であったものとする。Disk0の最初のアドレスは“000”、Disk1のアドレスは“100”であるので、そのXOR演算結果は“100”となる。Disk0の最後のアドレスは“0ff”、Disk1の最後のアドレスは“1ff”であるので、そのXOR演算結果は“100”となる。演算結果が最初のアドレスの場合と同じ“100”となり、一定値となっていることが分かる。
ブロックIDは、データの位置を示すものであるため、ストリップ内でシーケンシャルな値をとる必要がある。Nが奇数の場合には、前述したようにシーケンシャルな値をとっている。これに対して、Nが偶数の場合には、ブロックIDはアドレスの値に拘わらず一定値となる。
このため、Nが偶数の場合には、仮想的なデータストリップを用意してXORを奇数で行なうようにする。この仮想的なデータストリップをファントム(Phantom)ストリップという。図15はファントムDiskを付加した場合を示す図である。ファントムDiskのアドレスデータが000〜0ffであるものとする。このファントムDiskのアドレスの最初のアドレス“000”とDisk0の最初のアドレス“000”のXOR演算結果は“000”となる。この“000”とDisk1の最初のデータ“100”とのXOR演算結果は、“100”となる。
次に、ファントムDiskの最後のデータ“0ff”とDisk0の最後のデータ“0ff”のXOR演算結果は“000”となる。この“000”とDisk1の最後のデータ“1ff”との演算結果は、“1ff”となり、パリティDiskのブロックIDのアドレスはシーケンシャルなものとなる。このように、Nが偶数の場合でも、ファントムDiskを設けることにより、ブロックIDをNによらずストリップ内でシーケンシャルな値とすることができる。一方、このファントムストリップの各ブロックについてのデータ512バイトをオール0とすることで、この部分のXOR演算を不要とすることができる。この場合、パリティ生成にかかる計算コスト増は、BCC8バイト分のXORを1回加えた分に抑えられる。ブロックCRCについてはデータ512バイトをオール0に対応した値、ブロックIDについてはストライプ先頭データストリップの値等を用いる。
このように、RAID構成メンバディスク数によらず、パリティストリップについてもブロックIDをシーケンシャルな値とすることで、データストリップと同等なエラー検出を行える。
従来のこの種の技術としては、ディスクアレイ装置における磁気ディスク装置単位で行われるデータチェック(CRC、パリティ)で検出されず、論理障害を起こす原因となった磁気ディスク装置を特定する技術が知られている(例えば引用文献1参照)。また、エラー検出能力の低いディスク制御部で、誤って旧データが読まれている障害を検出するとともに、付加チェックコードによってデータのエラーをも検出できるようにした技術が知られている(例えば引用文献2参照)。
特開平10−171608号公報(段落0014〜0030、図1、図3)
特開2003−36146号公報(段落0018〜0035、図1、図2、図3)
ブロックCRCの方式で、データ512バイトオール0に対してブロックBCCもオール0となる算出方法がある。他の0以外となるデータ/CRCの組み合わせに比べて、データとCRCいずれもオール0となる組み合わせでは、一般的にメモリ等を0で初期化することを考慮すると、エラー検出精度が劣ると考えられる。
データストリップについては、初期化フォーマットによるデータ/CRCが0の組み合わせが想定される。また、初期化フォーマットが0以外であっても、オール1の場合やストリップサイズがフォーマットパターンと一致していた場合等、全ストリップで同じデータの値となることが想定される。この場合、RAID5構成メンバディスク数が奇数の場合、パリティ算出は偶数XORとなり、データ/CRCが0の組み合わせとなり、エラー検出精度が劣ると考えられる。
本発明はこのような課題に鑑みてなされたものであって、エラー検出精度を向上させることができるRAID5のパリティチェック強化方法及びプログラムを提供することを目的としている。
(1)請求項1記載の発明は、RAID5(N+1)のデータ構成において、パリティを求めるための演算を行なう場合において、Nが偶数の場合には、仮想的なデータストリップを1個加え、更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定することを特徴とする。
(2)請求項2記載の発明は、RAID5(N+1)のデータ構成において、パリティを求めるための演算を行なう場合において、Nが偶数の場合には、仮想的なデータストリップを1個加える工程と、更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定する工程とをコンピュータで実行することを特徴とする。
(3)請求項3記載の発明は、RAID5(N+1)のデータ構成を有する記憶装置において、パリティを求めるための演算を行なう場合において、Nが偶数の場合には、仮想的なデータストリップを1個加える手段と、更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定する手段と、を有することを特徴とする。
(2)請求項2記載の発明は、RAID5(N+1)のデータ構成において、パリティを求めるための演算を行なう場合において、Nが偶数の場合には、仮想的なデータストリップを1個加える工程と、更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定する工程とをコンピュータで実行することを特徴とする。
(3)請求項3記載の発明は、RAID5(N+1)のデータ構成を有する記憶装置において、パリティを求めるための演算を行なう場合において、Nが偶数の場合には、仮想的なデータストリップを1個加える手段と、更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定する手段と、を有することを特徴とする。
(1)請求項1記載の発明によれば、RAID5のパリティチェック強化方法を提供することができる。
(2)請求項2記載の発明によれば、RAID5のパリティチェック強化プログラムを提供することができる。
(3)請求項3記載の発明によれば、RAID5のパリティチェック強化装置を提供することができる。
(2)請求項2記載の発明によれば、RAID5のパリティチェック強化プログラムを提供することができる。
(3)請求項3記載の発明によれば、RAID5のパリティチェック強化装置を提供することができる。
以下、図面を参照して本発明の実施の形態例を詳細に説明する。
図1はファントムブロックのデータフォーマットを示す図である。ファントムブロックで、512バイトのデータ領域の特定の領域を特定のデータに設定している。図中0Xは16進を示している。図では、512バイトのデータ部分の特定の領域をfに設定している状態を示している。具体的には、値の小さい方の領域をffffffffに設定している。このように、ファントムブロックのデータ部分の特定の領域を特定のデータに設定することにより、CRC演算の結果がオール0でないようにすることができ、この結果RAID5のパリティチェック強化方法を提供することができる。
図1はファントムブロックのデータフォーマットを示す図である。ファントムブロックで、512バイトのデータ領域の特定の領域を特定のデータに設定している。図中0Xは16進を示している。図では、512バイトのデータ部分の特定の領域をfに設定している状態を示している。具体的には、値の小さい方の領域をffffffffに設定している。このように、ファントムブロックのデータ部分の特定の領域を特定のデータに設定することにより、CRC演算の結果がオール0でないようにすることができ、この結果RAID5のパリティチェック強化方法を提供することができる。
図2はファントムなしにおける0フォーマット時各ストリップのブロックを示す図である。ディスクが#0〜#3までの4個設けられており、ディスク#3がパリティディスクとなっている。いずれのディスクも、CRCとデータがオール0である。このようなデータの場合、データのCRCもデータも0になり、パリティチェック機能が強力ではない。そこで、図3に示すように、ファントムディスクを設け、そのCRC部分とデータ部分に特定領域が特定の値になるような設定を行なう。このようにすれば、データのCRC演算部の結果もオール0とはならず、またブロックID部分のXORはシーケンシャルな値をとることができ、RAID5のパリティチェックを強化することができる。
図4は本発明の演算方法の説明図である。図に示す例は、ファントム、データ0、データ1、パリティからなる場合を示す。ファントムデータ、データ0、データ1は、何れもデータとCRCとブロックIDから構成されている。ファントムのデータ部は、特定の領域が特定のデータとなっている。即ち、データ部はオール0でもオール1でもないデータとなる。CRCは、データ部分のCRC演算により求まった値である。ブロックIDは、図14に示される演算が実行され、パリティ部のC部に記憶される。
データ0とデータ1のデータ部分は、CRC演算が実行され、CRC部分にその結果が記憶される。また、各データのデータ部分は、XOR演算が実行される。即ち、ファントムデータのデータ部分とデータ0のデータ部分のXORが実行される。そして、このXORデータと、次のデータ1のデータ部分のXOR演算が実行される。そして、実行の結果求まったXOR値は、パリティデータのデータ部分Aに記憶される。同様に、ファントムデータとデータ0、データ1のCRC部分は、同様のXOR演算が実行され、パリティデータのCRC部分Bに記憶される。
このように、本発明によれば、RAID5の記憶構成において、仮想的なデータストリップを設けて、そのデータ部分にオール0でもオール1でもないデータを設けることにより、演算結果のパリティデータ部分が0とならないようにすることができ、パリティチェックを強化することができる。
図5は本発明を実施するシステム構成例を示す図である。図において、1はファントムデータが記憶されるファントムディスク、2はデータが記憶されるディスクで、図ではディスク0とディスク1の2個設けた場合を示している。3はパリティディスクである。10はコンピュータ、11は本発明を実行するプログラムである。15はコンピュータ10と各種のディスクを接続するバスである。
このように構成されたシステムにおいて、コンピュータ10はプログラム11に記憶されたシーケンスに従って前述したような演算を実行し、その結果をパリティディスク3に記憶する。先ず、コンピュータ10は、ファントムディスク1のデータ部分にオール0でもオール1でもないデータを書き込む。そして、ファントムディスク1とディスク0との間でXOR演算を実行する。このXOR演算結果と、ディスク1との間でXOR演算を実行し、その結果をパリティディスク3に記憶する。このようなXOR演算は、データ部分のみならず、ブロックCRCとブロックID部分についても実行される。この結果、パリティチェックを強化することができる。
1 ファントムディスク
2 ディスク
3 パリティディスク
10 コンピュータ
11 プログラム
15 バス
2 ディスク
3 パリティディスク
10 コンピュータ
11 プログラム
15 バス
Claims (3)
- RAID5(N+1)のデータ構成において、
パリティを求めるための演算を行なう場合において、Nが偶数の場合には、仮想的なデータストリップを1個加え、
更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定することを特徴とするRAID5のパリティチェック強化方法。 - RAID5(N+1)のデータ構成において、パリティを求めるための演算を行なう場合において、Nが偶数の場合には、仮想的なデータストリップを1個加える工程と、
更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定する工程とをコンピュータで実行することを特徴とするRAID5のパリティチェック強化プログラム。 - RAID5(N+1)のデータ構成を有する記憶装置において、
パリティを求めるための演算を行なう場合において、Nが偶数の場合には、仮想的なデータストリップを1個加える手段と、
更にこの仮想的なデータストリップのデータをデータ領域の所定の部分が特定の値になるように設定する手段と、
を有することを特徴とする記憶装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005376838A JP2007179297A (ja) | 2005-12-28 | 2005-12-28 | Raid5のパリティチェック強化方法、装置及びプログラム |
US11/528,697 US7574561B2 (en) | 2005-12-28 | 2006-09-28 | Method and apparatus for storing a data to memory devices |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005376838A JP2007179297A (ja) | 2005-12-28 | 2005-12-28 | Raid5のパリティチェック強化方法、装置及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007179297A true JP2007179297A (ja) | 2007-07-12 |
Family
ID=38195266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005376838A Pending JP2007179297A (ja) | 2005-12-28 | 2005-12-28 | Raid5のパリティチェック強化方法、装置及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7574561B2 (ja) |
JP (1) | JP2007179297A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10585749B2 (en) * | 2017-08-10 | 2020-03-10 | Samsung Electronics Co., Ltd. | System and method for distributed erasure coding |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10171608A (ja) | 1996-12-11 | 1998-06-26 | Nec Corp | 磁気ディスクアレイ装置及び磁気ディスクアレイ装置に於けるデータチェック方法 |
EP1036483B1 (en) * | 1997-12-11 | 2006-08-30 | Telefonaktiebolaget LM Ericsson (publ) | Redundancy termination for dynamic fault isolation |
JP2003036146A (ja) | 2001-07-23 | 2003-02-07 | Hitachi Ltd | ディスクアレイ制御方式 |
JP2004213064A (ja) * | 2002-12-26 | 2004-07-29 | Fujitsu Ltd | Raid装置及びその論理デバイス拡張方法 |
JP2006079418A (ja) * | 2004-09-10 | 2006-03-23 | Fujitsu Ltd | 記憶制御装置、制御方法及びプログラム |
JP2006171957A (ja) * | 2004-12-14 | 2006-06-29 | Fujitsu Ltd | ストレージ制御装置および方法 |
JP4435705B2 (ja) * | 2005-03-14 | 2010-03-24 | 富士通株式会社 | 記憶装置、その制御方法及びプログラム |
-
2005
- 2005-12-28 JP JP2005376838A patent/JP2007179297A/ja active Pending
-
2006
- 2006-09-28 US US11/528,697 patent/US7574561B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20070150652A1 (en) | 2007-06-28 |
US7574561B2 (en) | 2009-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7529970B2 (en) | System and method for improving the performance of operations requiring parity reads in a storage array system | |
US8171379B2 (en) | Methods, systems and media for data recovery using global parity for multiple independent RAID levels | |
US8583984B2 (en) | Method and apparatus for increasing data reliability for raid operations | |
US20140068208A1 (en) | Separately stored redundancy | |
US9158675B2 (en) | Architecture for storage of data on NAND flash memory | |
US20180157428A1 (en) | Data protection of flash storage devices during power loss | |
US20100037091A1 (en) | Logical drive bad block management of redundant array of independent disks | |
JP2011165063A (ja) | 半導体記憶装置 | |
US7823011B2 (en) | Intra-disk coding scheme for data-storage systems | |
US20170168896A1 (en) | Raid-6 for storage system employing a hot spare drive | |
JP4114877B2 (ja) | 不正データを検出するための装置、方法、及びプログラム | |
US7549112B2 (en) | Unique response for puncture drive media error | |
US20090094479A1 (en) | Method of implementing xor based raid algorithms | |
US20100293418A1 (en) | Memory device, data transfer control device, data transfer method, and computer program product | |
JP2000259359A (ja) | Raid装置および記録媒体 | |
US10942826B2 (en) | Method and device for managing storage system | |
JP4358869B2 (ja) | ストレージ制御装置、ストレージ制御方法 | |
JP2006252165A (ja) | ディスクアレイ装置、及びコンピュータシステム | |
JP2008071297A (ja) | ディスクアレイ装置およびディスクアレイ装置のデータ管理方法 | |
JP2007179297A (ja) | Raid5のパリティチェック強化方法、装置及びプログラム | |
US7895393B2 (en) | RAID system and the operating method for the same | |
JP6556980B2 (ja) | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム | |
US8214589B2 (en) | Data storage system redundancy scheme verification | |
JP5278115B2 (ja) | 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 | |
JP2007257628A (ja) | 記憶された情報データの読み取りのための誤り訂正と誤り検出の方法およびそのための記憶制御ユニット |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091209 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091215 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100215 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20101026 |