JP5170010B2 - ディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラム - Google Patents

ディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラム Download PDF

Info

Publication number
JP5170010B2
JP5170010B2 JP2009150110A JP2009150110A JP5170010B2 JP 5170010 B2 JP5170010 B2 JP 5170010B2 JP 2009150110 A JP2009150110 A JP 2009150110A JP 2009150110 A JP2009150110 A JP 2009150110A JP 5170010 B2 JP5170010 B2 JP 5170010B2
Authority
JP
Japan
Prior art keywords
data
redundant
host
code
magnetic disk
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.)
Active
Application number
JP2009150110A
Other languages
English (en)
Other versions
JP2011008426A (ja
Inventor
滋 菅沼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009150110A priority Critical patent/JP5170010B2/ja
Priority to US12/816,444 priority patent/US8443264B2/en
Publication of JP2011008426A publication Critical patent/JP2011008426A/ja
Application granted granted Critical
Publication of JP5170010B2 publication Critical patent/JP5170010B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/091Parallel or block-wise CRC computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/134Non-binary linear block codes not provided for otherwise
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Algebra (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

本発明は、ディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラムに関して、特に、データ及び冗長データに冗長符号を付与するディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラムに関する。
ディスクアレイ装置の実装方法として、RAID(Redundant Arrays of Inexpensive Disks)が知られている。RAIDシステムは、RAID1からRAID5として定義された技術により、複数の磁気ディスクへ書き込むデータに冗長データ(パリティ)を付与することにより、単一磁気ディスクの故障によるデータ喪失を防ぐ機能を持つ。また、複数の冗長ディスクを使用して、複数の磁気ディスクの障害によるデータ喪失を防ぐ、RAID6或いはdouble parityと呼ばれる技術(多冗長ディスクアレイ装置)も提案されている。
このようなディスクアレイ装置において、単一の磁気ディスクに対する書き込み処理に対し、磁気ディスク側が正常応答を返却した場合、ディスクアレイ装置はこれを正常な書き込み処理と判定する。一方、磁気ディスク側の故障により、正常応答が返却された場合でも、磁気ディスクの媒体上には、データが書き込まれない障害(書き込み未了障害)が発生し得る。書き込み未了障害が発生した場合、磁気ディスクからの読み出し処理では、書き込み前の古いデータが読み出されるが、読み出し処理自体は正常終了する。
書き込み未了障害の検出方法として、データや冗長データに保証コードや巡回符号(CRC(Cyclic Redundancy Check))等の冗長符号を付与し、データや冗長データの読み出し時に、データや冗長データと冗長符号を比較する方法が知られている。
例えば、特許文献1のディスクアレイ装置は、データの書き込みの際、データと冗長データのそれぞれについて保証コードを計算し、データや冗長データとは異なるディスクに保存し、データの読み出しの際、保証コードを用いて、データに誤りが発生したことを検出する。
特開2006−107311号公報
James S.Plank、「A Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-like Systems」、Software Practice and Experience、Volume27、Number 9、September 1997、page995-1012
RAID6のような多冗長ディスクアレイ装置では、冗長データとして、ガロア拡大体によって計算された冗長データが用いられる。例えば、非特許文献1には、リードソロモン符号に準じたガロア拡大体を使用した冗長データの演算方法が示されている。このようなガロア拡大体によって計算された冗長データにCRCを付与する場合、冗長データのCRCは、データに付与されたCRCをガロア拡大体で演算しても求めることができない。したがって、ガロア拡大体によって計算された冗長データに付与されるCRCは、冗長データより計算する必要があり、データの書き込みや障害復旧におけるCRCの計算に時間を要するという問題があった。
(発明の目的)
本発明の目的は、上記課題である、冗長データについての冗長符号(CRC)の計算に時間を要するという問題を解決したディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラムを提供することにある。
本発明のディスクアレイ装置は、複数の磁気ディスクと、上位装置から受信したホストデータについて冗長データを生成し、前記ホストデータと前記冗長データについて巡回符号による冗長符号を生成し、前記ホストデータと前記冗長データとを前記磁気ディスクに書き込むRAIDコントローラを備え、前記RAIDコントローラは、前記冗長データを生成するためのガロア拡大体の原始多項式と、前記冗長符号の生成多項式に同一の多項式を用いることを特徴とする。
本発明のディスクアレイ制御方法は、上位装置から受信したホストデータについて冗長データを生成する冗長データ生成ステップと、前記ホストデータと前記冗長データについて巡回符号による冗長符号を生成する冗長符号生成ステップと、前記ホストデータと前記冗長データとを複数の磁気ディスクに書き込む書き込みステップとを含み、前記冗長データ生成ステップにおける前記冗長データを生成するためのガロア拡大体の原始多項式と、前記冗長符号生成ステップにおける前記冗長符号の生成多項式に同一の多項式を用いることを特徴とする。
本発明のディスクアレイ装置用プログラムは、コンピュータを、上位装置から受信したホストデータについて冗長データを生成し、前記ホストデータと前記冗長データについて巡回符号による冗長符号を生成し、前記ホストデータと前記冗長データとを複数の磁気ディスクに書き込むRAIDコントローラとして動作させ、前記RAIDコントローラは、前記冗長データを生成するためのガロア拡大体の原始多項式と、前記冗長符号の生成多項式に同一の多項式を用いることを特徴とする。
本発明の効果は、ガロア拡大体によって計算された冗長データに冗長符号として巡回符号を付与するディスクアレイ装置において、冗長データについての冗長符号(CRC)の計算に要する時間を短縮できることである。
本発明の第一の実施の形態の構成図である。 本発明の第一の実施の形態の特徴的な構成を示す図である。 本発明の第一の実施の形態における書き込み処理の動作を示すフローチャートである。 本発明の第一の実施の形態における読み出し処理の動作を示すフローチャートである。 本発明の第一の実施の形態における復旧処理の動作を示すフローチャートである。 本発明の第二の実施の形態の構成図である。 本発明の実施の形態におけるCRCの生成多項式の例を示す図である。 本発明の実施の形態におけるCRCの入力データのベクトル表現を示す図である。 本発明の実施の形態におけるCRCのベクトル表現を示す図である。 本発明の実施の形態におけるCRCの計算方法を示す図である。 本発明の実施の形態におけるCRCの計算方法を示す図である。 本発明の実施の形態における行列Rを示す図である。 本発明の実施の形態における行列Tを示す図である。 本発明の実施の形態における行列ekを示す図である。 本発明の実施の形態におけるホストデータA、B、冗長データP、Qのベクトル表現を示す図である。 本発明の実施の形態におけるホストデータA、BについてのCRCの計算式の例を示す図である。 本発明の実施の形態における冗長データPについてのCRCの計算式の例を示す図である。 本発明の実施の形態における冗長データQについてのCRCの計算式の例を示す図である。 本発明の実施の形態における冗長データPについてのCRCの計算方法を示す図である。 本発明の実施の形態における冗長データQについてのCRCの計算方法を示す図である。
(第一の実施の形態)
次に、本発明の第一の実施の形態について図面を参照して詳細に説明する。
図1は、本発明の第一の実施の形態の構成図である。図1を参照すると、本発明のディスクアレイ装置100の第一の実施の形態は、ホストインタフェース110、複数の磁気ディスク120(120a〜d)、及びRAIDコントローラ130より構成される。
ここで、ホストインタフェース110は、上位装置からのコマンド、ホストデータを受け取り、RAIDコントローラ130へ送出する。
磁気ディスク120は、当該磁気ディスク120への「書き込み単位」(例えばセクタ121)に分割されており、RAIDコントローラ130に対して、当該書き込み単位の長さ(セクタ長)での書き込み及び読み出しを提供する。
RAIDコントローラ130は、ホストインタフェース110へ、複数の磁気ディスク120に対するデータの書き込み及び読み出しを提供する。RAIDコントローラ130は、ホストインタフェース110より受け取ったホストデータを基に冗長データを生成し、ホストデータ及び冗長データを磁気ディスク120へ書き込む。また、RAIDコントローラ130は、磁気ディスク120へ書き込まれたホストデータ及び冗長データの誤りを検出するための冗長符号として巡回符号(CRC)を計算し、磁気ディスク120へ書き込む。
本発明の第一の実施の形態では、RAIDコントローラ130は、RAID6により磁気ディスク120への書き込み、読み出しを行うものとする。RAIDコントローラ130は、冗長データとして、ホストデータA、BについてXORにより計算したパリティPと、ガロア拡大体の原始多項式により計算したパリティQを用いるものとする。また、RAIDコントローラ130は、パリティQの計算におけるガロア拡大体の原始多項式に、CRCの生成多項式と同一の多項式を用いるものとする。
ここで、RAIDコントローラ130がホストインタフェース110へ書き込み及び読み出しを提供するデータの単位をデータの「処理単位」とする。本発明の第一の実施の形態では、ホストデータA、B及び冗長データP、Qに対するCRCは、ホストデータ、冗長データの処理単位(Ai、Bi、Pi、Qi)毎に付与されるものとする。さらに、ホストデータまたは冗長データの処理単位とそのCRCとは、2つの異なる磁気ディスク120に渡って書き込まれるものとする。このときCRCは、2つの磁気ディスク120のうちのいずれかの磁気ディスク120に収めるものとする。
例えば、図1では、ホストデータの処理単位A0、B0、冗長データの処理単位P0、Q0毎にCRC(Ca0、Cb0、Cp0、Cq0)が付与されている。さらに、ホストデータの処理単位A0とそのCRCであるCa0は磁気ディスク120aのセクタ121a1と磁気ディスク120bのセクタ121b2に書き込まれており、Ca0は磁気ディスク120bのセクタ121b2に収まるように書き込まれている。
なお、RAIDコントローラ130は、プログラム制御によって動作する情報処理装置であってもよい。
次に、本発明の第一の実施の形態におけるCRCの計算方法について図面を参照して説明する。
ここでは、CRCの生成多項式として、例えば、図7に示すGF(x)を用いるものとする。
はじめに、CRCを計算するための入力データ(ビット列)をdとする。CRCは、データdから1ビットを順次、GF(x)に入力することにより計算される。
dを図8に示すような、16ビットのベクトルデータdj(j=0〜N−1)に分割した場合、CRCは、各ベクトルデータdjから1ビットを順次、GF(x)に入力することにより計算される。
データdについて計算したCRCを図9に示すようなベクトルデータCdとし、さらに、d0の0番目のビットからdjのk番目のビットまでがGF(x)に入力された時のCRCをCd(j,k)とすると、d0、d1の全てのビットがGF(x)に入力された時のCRCであるCd(0,15)、Cd(1,15)は図10のように表される。
ここで、行列R、T、ekの定義を図12〜14に示す。行列Rは、ベクトルデータを1ビットシフトするための行列である。行列Tの左端の列は、CRCの生成多項式GF(x)のべき乗の項と一致しており、同伴行列(Companion matrix)と呼ばれる。
さらに、データdの全てのビットがGF(x)に入力された時のCRCであるCdは図11のように、djと同伴行列Tの16(N−j)乗との積の和として表すことができる。
次に、ホストデータ、冗長データの処理単位Ai、Bi、Pi、Qiを図15のように16ビットのベクトルデータAij、Bij、Pij、Qijに分割する。
i番目のホストデータAi、BiのCRCをCai、Cbiとすると、Cai、Cbiは図11の関係により、図16のように表すことができる。
また、ホストデータAi、Biについての冗長データPiを図17のように定義する。さらに、ホストデータAi、Biについての冗長データQiを同伴行列Tを用いて図18のように定義する。ここで、図18は、リードソロモン符号に準じたガロア拡大体の原始多項式である。
この場合、冗長データPiのCRCをCpiとすると、Cpiは、図16及び図17の関係により、Cai、Cbi用いて図19のように表すことができる。同様に、冗長データQiのCRCをCqiとすると、Cqiは、図16及び図18の関係により、Cai、Cbi用いて図20のように表すことができる。
以上により、冗長データについてのCRC(Cpi、Cqi)は、ホストデータについて計算したCRC(Cai、Cbi)用いて、直接計算することができる。
次に、本発明の第一の実施の形態の動作について図面を参照して説明する。
はじめに、本発明の第一の実施の形態における書き込み処理について説明する。
ここでは、図1において、ホストデータA0、A1、A2…、B0、B1、B2…を磁気ディスク120へ書き込む場合を例に、書き込み処理を説明する。
図3は、本発明の第一の実施の形態における書き込み処理の動作を示すフローチャートである。
RAIDコントローラ130は、ホストインタフェース110から受信したホストデータ(A、B)についてのCRC(Ca、Cb)を図16の式によりを計算する(ステップS101)。RAIDコントローラ130は、ホストデータ(A、B)と計算したCRC(Ca、Cb)とを、2つの異なる磁気ディスク120に渡って書き込む(ステップS102)。このとき、RAIDコントローラ130は、ホストデータ(A、B)を磁気ディスク120の書き込み単位(セクタ長)に応じて分割して書き込む。また、RAIDコントローラ130は、CRC(Ca、Cb)が1つの磁気ディスク120に収まるように書き込む。
例えば、図1において、RAIDコントローラ130は、ホストインタフェース110から受信したA0、A1について、図16の式によりCa0、Cb0を計算する。そして、RAIDコントローラ130は、A0を分割してセクタ121a1と121b2へ、Ca0をA0に続けてセクタ121b2へ書き込む。また、RAIDコントローラ130は、B0を分割してセクタ121b1と121c2へ、Cb0をB0に続けてセクタ121c2へ書き込む。
次に、RAIDコントローラ130は、磁気ディスク120へ書き込んだホストデータ(A、B)から、図17の式により冗長データ(P)を計算する(ステップS103)。RAIDコントローラ130は、冗長データ(P)についてのCRC(Cp)を、図19の式により、ホストデータについてのCRC(Ca、Cb)を用いて計算する(ステップS104)。RAIDコントローラ130は、磁気ディスク120へ計算した冗長データ(P)とCRC(Cp)とを、2つの異なる磁気ディスク120に渡って書き込む(ステップS105)。このとき、ホストデータの場合と同様に、RAIDコントローラ130は、冗長データ(P)をセクタ長に応じて分割して書き込む。また、RAIDコントローラ130は、CRC(Cp)が1つの磁気ディスク120に収まるように書き込む。
例えば、図1において、RAIDコントローラ130は、A0とB0から、図17の式によりP0を計算する。また、RAIDコントローラ130は、P0についてのCp0を、図19の式により、Ca0、Cb0を用いて計算する。RAIDコントローラ130は、P0を分割してセクタ121c1と121d2へ、Cp0をP0に続けてセクタ121d2へ書き込む。
さらに、RAIDコントローラ130は、磁気ディスク120へ書き込んだホストデータ(A、B)から、図18の式により冗長データ(Q)を計算する(ステップS106)。RAIDコントローラ130は、冗長データ(Q)についてのCRC(Cq)を、図20の式により、ホストデータについてのCRC(Ca、Cb)を用いて計算する(ステップS107)。RAIDコントローラ130は、磁気ディスク120へ計算した冗長データ(Q)とCRC(Cq)とを、2つの異なる磁気ディスク120に渡って書き込む(ステップS108)。このとき、ホストデータの場合と同様に、RAIDコントローラ130は、冗長データ(Q)をセクタ長に応じて分割して書き込む。また、RAIDコントローラ130は、CRC(Cq)が1つの磁気ディスク120に収まるように書き込む。
例えば、図1において、RAIDコントローラ130は、A0とB0から、図18の式によりQ0を計算する。また、RAIDコントローラ130は、Q0についてのCq0を、図20の式により、Ca0、Cb0を用いて計算する。RAIDコントローラ130は、Q0を分割してセクタ121d1と121a2へ、Cq0をQ0に続けてセクタ121a2へ書き込む。
さらに、RAIDコントローラ130は、A0、B0に続くA1、A2、…、B1、B2、…についても、図1のように、ホストデータ、冗長データ、及びCRCの書き込みを行う。
次に、本発明の第一の実施の形態における読み出し処理について説明する。
ここでは、図1において、ホストデータA0を磁気ディスク120から読み出す場合を例に、読み出し処理を説明する。
図4は、本発明の第一の実施の形態における読み出し処理の動作を示すフローチャートである。
RAIDコントローラ130は、ホストインタフェース110からホストデータの読み出しコマンドを受信すると、磁気ディスク120上の読み出し対象のホストデータが書き込まれたセクタ121からホストデータを読み出す(ステップS201)。RAIDコントローラ130は、磁気ディスク120上の当該ホストデータのCRCが書き込まれたセクタ121からCRCを読み出す(ステップS202)。RAIDコントローラ130は、読み出したホストデータについて図16の式により計算したCRCと磁気ディスク120から読み出したCRCとを比較する(ステップS203)。
例えば、図1において、RAIDコントローラ130は、ホストインタフェース110からA0の読み出しコマンドを受信すると、セクタ121a1と121b2からA0、セクタ121b2からCa0を読み出す。RAIDコントローラ130は、読み出したA0について図16の式により求めたCRCとセクタ121b2から読み出したCa0とを比較する。
ステップS203において、比較の結果が一致していた場合、読み出したホストデータは正しいため、RAIDコントローラ130は、当該ホストデータをホストインタフェース110へ送信する(ステップS204)。
一方、ステップS203において、比較の結果が不一致の場合、読み出したホストデータまたはCRCの書き込み未了障害、或いは、読み出したホストデータまたはCRCが書き込まれていた磁気ディスク120の故障である。この場合、RAIDコントローラ130は、読み出したホストデータとCRCが書き込まれていた磁気ディスク120を他の磁気ディスク120から復旧し(ステップS205)、復旧した読み出し対象のホストデータをホストインタフェース110へ送信する(ステップS206)。
例えば、図1において、セクタ121a1と121b2とから読み出したA0について計算したCRCとセクタ121b2から読み出したCa0とが不一致の場合、RAIDコントローラ130は、磁気ディスク120a、120bを磁気ディスク120c、120dから復旧する。
図5は、ステップS205における復旧処理の動作を示すフローチャートである。
RAIDコントローラ130は、復旧先の磁気ディスク120の各セクタ121について、復旧元の磁気ディスク120のホストデータまたは冗長データから、図17、図18の式をもとに、復旧先の磁気ディスク120のホストデータまたは冗長データを計算する(ステップS301)。RAIDコントローラ130は、計算したホストデータまたは冗長データを、復旧先の磁気ディスク120に書き込む(ステップS302)。RAIDコントローラ130は、復旧先の磁気ディスク120の全てのセクタ121について、ステップS301、S302を繰り返す(ステップS303)。
例えば、図1において、磁気ディスク120a、120bを復旧する場合、RAIDコントローラ130は、セクタ121c1のP0とセクタ121d1のQ0から、図17、図18の式をもとに、セクタ121a1のA0とセクタ121b1のB0を計算する。RAIDコントローラ130は、計算したA0とB0をそれぞれセクタ121a1、セクタ121b1に書き込む。また、RAIDコントローラ130は、セクタ121c2のB0、B1とセクタ121d2のP0、P1から、図17、図18の式をもとに、セクタ121a2のQ0、Q1とセクタ121b2のA0、A1を計算する。RAIDコントローラ130は、計算したQ0、Q1とA0、A1をそれぞれセクタ121a2、121b2に書き込む。
RAIDコントローラ130は、他のセクタ121についても、磁気ディスク120c、120d上のホストデータや冗長データから、図17、図18の式をもとに、磁気ディスク120a、120b上のホストデータや冗長データを計算する。
次に、RAIDコントローラ130は、復旧先の磁気ディスク120上に書き込まれていたCRCを、対応するホストデータ、冗長データから図16、図19、図20の式により再計算する(ステップS304)。このとき、RAIDコントローラ130は、冗長データについてのCRCは、図19、図20の式により、ホストデータのCRCを用いて計算する。RAIDコントローラ130は、再計算したCRCを復旧先の磁気ディスク120に書き込む(ステップS305)。RAIDコントローラ130は、復旧先の磁気ディスク120上の全てのCRCについて、ステップS304、S305を繰り返す(ステップS306)。
例えば、図1において、RAIDコントローラ130は、セクタ121b2のCa0を、図16の式により再計算する。また、RAIDコントローラ130は、セクタ121a2のCq0を、図20の式により、Ca0、Cb0を用いて再計算する。RAIDコントローラ130は、再計算したCq0、Ca0をそれぞれセクタ121a2、121b2に書き込む。RAIDコントローラ130は、磁気ディスク120a、120b上の他のCRCも図16、図19、図20の式により再計算し、磁気ディスク120に書き込む。
以上により、本発明の第一の実施の形態の動作が完了する。
なお、上述の読み出し処理では、磁気ディスク120からホストデータを読み出す際、当該ホストデータついて計算したCRCと磁気ディスク120から読み出した当該ホストデータのCRCとが不一致の場合の復旧処理を例に説明したが、磁気ディスク120から読み出した冗長データついて計算したCRCと磁気ディスク120から読み出した当該冗長データのCRCとが不一致の場合についても同様の処理を行うことができる。
次に、本発明の第一の実施の形態の特徴的な構成を図2に示す。図2を参照すると、ディスクアレイ装置100は、複数の磁気ディスク120と、上位装置から受信したホストデータについて冗長データを生成し、ホストデータと冗長データについて巡回符号による冗長符号を生成し、当該ホストデータと冗長データとを磁気ディスク120に書き込むRAIDコントローラ130を備える。RAIDコントローラ130は、冗長データを生成するためのガロア拡大体の原始多項式と、冗長符号の生成多項式に同一の多項式を用いる。
本発明の第一の実施の形態によれば、ガロア拡大体によって計算された冗長データに冗長符号として巡回符号(CRC)を付与するディスクアレイ装置において、冗長データについての冗長符号の計算に要する時間を短縮できる。その理由は、RAIDコントローラ130が、冗長データを生成するためのガロア拡大体の原始多項式と、冗長符号の生成多項式に同一の多項式を用いることにより、冗長データについての冗長符号をホストデータについての冗長符号から直接計算できるためである。
また、本発明の第一の実施の形態によれば、ディスクアレイ装置において、磁気ディスク120上の書き込み未了障害を容易に検出することができる。その理由は、RAIDコントローラ130が、ホストデータまたは冗長データと当該ホストデータまたは当該冗長データに付与された冗長符号とを異なる2つの磁気ディスク120に渡り、かつ、当該冗長符号が前記2つの磁気ディスク120のいずれかに収まるように書き込み、磁気ディスク120からホストデータを読み出す際、読み出したホストデータまたは冗長データについて計算した冗長符号と磁気ディスク120から読み出した冗長符号とを比較するためである。
また、本発明の第一の実施の形態によれば、ディスクアレイ装置において、磁気ディスク120のホストデータまたは冗長データに書き込み未了障害が発生した場合、当該ホストデータまたは冗長データを復旧することができる。その理由は、RAIDコントローラ130が、磁気ディスク120から読み出したホストデータまたは冗長データについて計算した冗長符号と磁気ディスク120から読み出した冗長符号とが不一致であった場合、当該ホストデータまたは冗長データと当該冗長符号が書き込まれていた磁気ディスク120上のホストデータ及び冗長データを他の磁気ディスク120上のホストデータ及び冗長データを基に復旧するためである。
また、本発明の第一の実施の形態によれば、ガロア拡大体によって計算された冗長データに冗長符号として巡回符号(CRC)を付与するディスクアレイ装置において、磁気ディスク120上での書き込み未了障害や磁気ディスク120の故障が発生した場合、当該磁気ディスク120の復旧を高速に行うことができる。その理由は、前述の通り、冗長データについての冗長符号の計算に要する時間が短縮されることにより、復旧を行う磁気ディスク120上の冗長符号を再計算する時間が短縮されるためである。
(第二の実施の形態)
次に、本発明の第二の実施の形態について図面を参照して詳細に説明する。
図6は、本発明の第二の実施の形態の構成図である。
本発明の第二の実施の形態においては、ホストデータや冗長データの処理単位を磁気ディスク120のセクタ長と同一とし、ホストデータや冗長データのCRCを、磁気ディスク120のCRC用のセクタ121に書き込む。
本発明の第二の実施の形態の動作は、ホストデータや冗長データの処理単位が磁気ディスク120のセクタ長と同一であること、及び、ホストデータや冗長データのCRCをCRC用のセクタ121に書き込む点を除いて、本発明の第一の実施の形態の動作(図3〜図5)と同様となる。
はじめに、本発明の第二の実施の形態における書き込み処理を説明する。
ここでは、図6において、ホストデータA0、A1、A2…、B0、B1、B2…を磁気ディスク120へ書き込む場合を例に、書き込み処理を説明する。
図6において、RAIDコントローラ130は、ホストインタフェース110から受信したA0、A1について、図16の式によりCa0、Cb0を計算する。そして、RAIDコントローラ130は、A0をセクタ121a1へ、Ca0をセクタ121bMへ書き込む。また、RAIDコントローラ130は、B0をセクタ121b1へ、Cb0をセクタ121cMへ書き込む。
また、RAIDコントローラ130は、A0とB0から、図17、図18の式によりP0、Q0を計算する。また、RAIDコントローラ130は、P0、Q0についてのCp0、Cq0を、図19、図20の式により、Ca0、Cb0を用いて計算する。RAIDコントローラ130は、P0、Q0をセクタ121c1、121d1へ、Cp0、Cq0をセクタ121dM、121aMへ書き込む。
さらに、RAIDコントローラ130は、A0、B0に続くA1、A2、…、B1、B2、…についても、図6のように、ホストデータ、冗長データ、及びCRCの書き込みを行う。
次に、本発明の第二の実施の形態における読み出し処理を説明する。
ここでは、図6において、ホストデータA0を磁気ディスク120から読み出す場合を例に、読み出し処理を説明する。
図6において、RAIDコントローラ130は、ホストインタフェース110からA0の読み出しコマンドを受信すると、セクタ121a1からA0、セクタ121bMからCa0を読み出す。RAIDコントローラ130は、読み出したA0について図16の式により求めたCRCとセクタ121bMから読み出したCa0とを比較する
セクタ121a1から読み出したA0について計算したCRCとセクタ121bMから読み出したCa0とが不一致の場合、RAIDコントローラ130は、磁気ディスク120a、120bを磁気ディスク120c、120dから復旧する。
図6において、磁気ディスク120a、120bを復旧する場合、RAIDコントローラ130は、セクタ121c1のP0とセクタ121d1のQ0から、図16、図17、図18の式をもとに、セクタ121a1のA0とセクタ121b1のB0を計算する。RAIDコントローラ130は、計算したA0とB0をそれぞれセクタ121a1、セクタ121b1に書き込む。また、RAIDコントローラ130は、セクタ121c2のB1とセクタ121d2のP1から、図16、図17、図18の式をもとに、セクタ121a2のQ1とセクタ121b2のA1を計算する。RAIDコントローラ130は、計算したQ1とA1をそれぞれセクタ121a2、121b2に書き込む。
RAIDコントローラ130は、他のセクタ121についても、磁気ディスク120c、120d上のホストデータや冗長データから、計算式をもとに、磁気ディスク120a、120b上のホストデータや冗長データを計算する。
次に、RAIDコントローラ130は、セクタ121bMのCa0を、図16の式により再計算する。また、RAIDコントローラ130は、セクタ121aMのCq0を、図19の式により、Ca0、Cb0を用いて再計算する。RAIDコントローラ130は、再計算したCq0、Ca0をそれぞれセクタ121aM、121bMに書き込む。
RAIDコントローラ130は、磁気ディスク120a、120b上の他のCRCも計算式により再計算し、磁気ディスク120に書き込む。
以上により、本発明の第二の実施の形態の動作が完了する。
本発明の第二の実施の形態によれば、本発明の第一の実施の形態の効果に加え、ディスクアレイ装置において、ホストデータと冗長データに付与する冗長符号の管理を容易にすることができる。その理由は、RAIDコントローラ130が、磁気ディスク120のセクタ121毎にホストデータまたは冗長データについての冗長符号を生成し、当該ホストデータまたは当該冗長データと当該ホストデータまたは当該冗長データについての冗長符号とを異なる磁気ディスク120に書き込むためである。
100 ディスクアレイ装置
110 ホストインタフェース
120 磁気ディスク
121 セクタ
130 RAIDコントローラ

Claims (15)

  1. 複数の磁気ディスクと、
    上位装置から受信したホストデータについて冗長データを生成し、前記ホストデータと前記冗長データについて巡回符号による冗長符号を生成し、前記ホストデータと前記冗長データとを前記磁気ディスクに書き込むRAIDコントローラを備え、
    前記RAIDコントローラは、
    前記冗長データを生成するためのガロア拡大体の原始多項式と、前記冗長符号の生成多項式に同一の多項式を用いる
    ことを特徴とするディスクアレイ装置。
  2. 前記RAIDコントローラは、
    前記ホストデータまたは前記冗長データと当該ホストデータまたは当該冗長データについて生成された前記冗長符号とを異なる2つの前記磁気ディスクに渡り、かつ、当該冗長符号が当該2つの磁気ディスクのいずれかに収まるように書き込む
    ことを特徴とする請求項1記載のディスクアレイ装置。
  3. 前記RAIDコントローラは、
    前記磁気ディスクの書き込み単位毎に、前記ホストデータまたは前記冗長データについて前記冗長符号を生成し、
    前記磁気ディスクの書き込み単位毎に、前記ホストデータまたは前記冗長データと当該ホストデータまたは当該冗長データについて生成された前記冗長符号とを異なる前記磁気ディスクに書き込む
    ことを特徴とする請求項2記載のディスクアレイ装置。
  4. 前記RAIDコントローラは、
    複数のホストデータについて複数の冗長データを生成し、当該複数のホストデータのそれぞれと当該複数の冗長データのうちの対応するものとを異なる前記磁気ディスクに書き込み、
    前記磁気ディスクから読み出した前記ホストデータまたは前記冗長データについて計算した前記冗長符号と前記磁気ディスクから読み出した当該ホストデータまたは当該冗長データの前記冗長符号とが不一致の場合、
    当該冗長符号が不一致となったホストデータまたは冗長データが書き込まれていた前記磁気ディスク、及び、当該冗長符号が不一致となったホストデータまたは冗長データの前記冗長符号が書き込まれた前記磁気ディスク上の前記ホストデータ及び前記冗長データを他の前記磁気ディスク上の前記ホストデータ及び前記冗長データを基に復旧する
    ことを特徴とする請求項2または3に記載のディスクアレイ装置。
  5. 前記RAIDコントローラは、
    前記冗長符号が不一致となったホストデータまたは冗長データが書き込まれていた前記磁気ディスク、及び、当該冗長符号が不一致となったホストデータまたは冗長データの前記冗長符号が書き込まれた前記磁気ディスク上の前記冗長符号を再生成する
    ことを特徴とする請求項4に記載のディスクアレイ装置。
  6. 上位装置から受信したホストデータについて冗長データを生成する冗長データ生成ステップと、
    前記ホストデータと前記冗長データについて巡回符号による冗長符号を生成する冗長符号生成ステップと、
    前記ホストデータと前記冗長データとを複数の磁気ディスクに書き込む書き込みステップと
    を含み、
    前記冗長データ生成ステップにおける前記冗長データを生成するためのガロア拡大体の原始多項式と、前記冗長符号生成ステップにおける前記冗長符号の生成多項式に同一の多項式を用いる
    ことを特徴とするディスクアレイ制御方法。
  7. 前記書き込みステップは、前記ホストデータまたは前記冗長データと当該ホストデータまたは当該冗長データについて生成された前記冗長符号とを異なる2つの前記磁気ディスクに渡り、かつ、当該冗長符号が当該2つの磁気ディスクのいずれかに収まるように書き込む
    ことを特徴とする請求項6記載のディスクアレイ方法。
  8. 前記冗長データ生成ステップは、前記磁気ディスクの書き込み単位毎に、前記ホストデータまたは前記冗長データについて前記冗長符号を生成し、
    前記書き込みステップは、前記磁気ディスクの書き込み単位毎に、前記ホストデータまたは前記冗長データと当該ホストデータまたは当該冗長データについて生成された前記冗長符号とを異なる前記磁気ディスクに書き込む
    ことを特徴とする請求項7記載のディスクアレイ制御方法。
  9. 前記冗長データ生成ステップは、複数のホストデータについて複数の冗長データを生成し、
    前記書き込みステップは、当該複数のホストデータのそれぞれと当該複数の冗長データのうちの対応するものとを異なる前記磁気ディスクに書き込み、
    さらに、前記磁気ディスクから読み出した前記ホストデータまたは前記冗長データについて計算した前記冗長符号と前記磁気ディスクから読み出した当該ホストデータまたは当該冗長データの前記冗長符号とが不一致の場合、当該冗長符号が不一致となったホストデータまたは冗長データが書き込まれていた前記磁気ディスク、及び、当該冗長符号が不一致となったホストデータまたは冗長データの前記冗長符号が書き込まれた前記磁気ディスク上の前記ホストデータ及び前記冗長データを他の前記磁気ディスク上の前記ホストデータ及び前記冗長データを基に復旧する復旧ステップを含む
    ことを特徴とする請求項7または8に記載のディスクアレイ制御方法。
  10. 前記復旧ステップは、さらに、前記冗長符号が不一致となったホストデータまたは冗長データが書き込まれていた前記磁気ディスク、及び、当該冗長符号が不一致となったホストデータまたは冗長データの前記冗長符号が書き込まれた前記磁気ディスク上の前記冗長符号を再生成する
    ことを特徴とする請求項9に記載のディスクアレイ制御方法。
  11. コンピュータを、
    上位装置から受信したホストデータについて冗長データを生成し、前記ホストデータと前記冗長データについて巡回符号による冗長符号を生成し、前記ホストデータと前記冗長データとを複数の磁気ディスクに書き込むRAIDコントローラとして動作させ、
    前記RAIDコントローラは、
    前記冗長データを生成するためのガロア拡大体の原始多項式と、前記冗長符号の生成多項式に同一の多項式を用いる
    ことを特徴とするディスクアレイ装置用プログラム。
  12. 前記RAIDコントローラは、
    前記ホストデータまたは前記冗長データと当該ホストデータまたは当該冗長データについて生成された前記冗長符号とを異なる2つの前記磁気ディスクに渡り、かつ、当該冗長符号が当該2つの磁気ディスクのいずれかに収まるように書き込む
    ことを特徴とする請求項11記載のディスクアレイ装置用プログラム。
  13. 前記RAIDコントローラは、
    前記磁気ディスクの書き込み単位毎に、前記ホストデータまたは前記冗長データについて前記冗長符号を生成し、
    前記磁気ディスクの書き込み単位毎に、前記ホストデータまたは前記冗長データと当該ホストデータまたは当該冗長データについて生成された前記冗長符号とを異なる前記磁気ディスクに書き込む
    ことを特徴とする請求項12記載のディスクアレイ装置用プログラム。
  14. 前記RAIDコントローラは、
    複数のホストデータについて複数の冗長データを生成し、当該複数のホストデータのそれぞれと当該複数の冗長データのうちの対応するものとを異なる前記磁気ディスクに書き込み、
    前記磁気ディスクから読み出した前記ホストデータまたは前記冗長データについて計算した前記冗長符号と前記磁気ディスクから読み出した当該ホストデータまたは当該冗長データの前記冗長符号とが不一致の場合、
    当該冗長符号が不一致となったホストデータまたは冗長データが書き込まれていた前記磁気ディスク、及び、当該冗長符号が不一致となったホストデータまたは冗長データの前記冗長符号が書き込まれた前記磁気ディスク上の前記ホストデータ及び前記冗長データを他の前記磁気ディスク上の前記ホストデータ及び前記冗長データを基に復旧する
    ことを特徴とする請求項12または13に記載のディスクアレイ装置用プログラム。
  15. 前記RAIDコントローラは、
    前記冗長符号が不一致となったホストデータまたは冗長データが書き込まれていた前記磁気ディスク、及び、当該冗長符号が不一致となったホストデータまたは冗長データの前記冗長符号が書き込まれた前記磁気ディスク上の前記冗長符号を再生成する
    ことを特徴とする請求項14に記載のディスクアレイ装置用プログラム。
JP2009150110A 2009-06-24 2009-06-24 ディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラム Active JP5170010B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009150110A JP5170010B2 (ja) 2009-06-24 2009-06-24 ディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラム
US12/816,444 US8443264B2 (en) 2009-06-24 2010-06-16 Disk array apparatus, a disk array apparatus control method and a program for a disk array apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009150110A JP5170010B2 (ja) 2009-06-24 2009-06-24 ディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラム

Publications (2)

Publication Number Publication Date
JP2011008426A JP2011008426A (ja) 2011-01-13
JP5170010B2 true JP5170010B2 (ja) 2013-03-27

Family

ID=43382130

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009150110A Active JP5170010B2 (ja) 2009-06-24 2009-06-24 ディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラム

Country Status (2)

Country Link
US (1) US8443264B2 (ja)
JP (1) JP5170010B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5440884B2 (ja) * 2011-09-29 2014-03-12 日本電気株式会社 ディスクアレイ装置およびディスクアレイ制御用プログラム
US9053809B2 (en) * 2011-11-09 2015-06-09 Apple Inc. Data protection from write failures in nonvolatile memory
US10481803B2 (en) 2017-06-16 2019-11-19 Western Digital Technologies, Inc. Low write overhead consensus protocol for distributed storage
US10289489B2 (en) * 2017-07-11 2019-05-14 Western Digital Technologies, Inc. Update efficient consensus protocols for erasure coded data stores

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499253A (en) * 1994-01-05 1996-03-12 Digital Equipment Corporation System and method for calculating RAID 6 check codes
US5996105A (en) * 1997-11-14 1999-11-30 Cirrus Logic, Inc. ECC system employing a data buffer for storing codeword data and a syndrome buffer for storing error syndromes
US6732317B1 (en) * 2000-10-23 2004-05-04 Sun Microsystems, Inc. Apparatus and method for applying multiple CRC generators to CRC calculation
US6934904B2 (en) * 2001-04-30 2005-08-23 Sun Microsystems, Inc. Data integrity error handling in a redundant storage array
US6748488B2 (en) * 2001-09-28 2004-06-08 Sun Microsystems, Inc. Storage array having multiple erasure correction and sub-stripe writing
JP2006107311A (ja) 2004-10-08 2006-04-20 Hitachi Ltd ディスクアレイ装置およびその制御方法
JP4634157B2 (ja) * 2005-01-17 2011-02-16 株式会社日立製作所 ストレージシステム
US7539924B1 (en) * 2005-11-15 2009-05-26 Western Digital Technologies, Inc. Disk drive implementing data path protection by encoding large host blocks into sub blocks
US7647544B1 (en) * 2005-11-22 2010-01-12 Western Digital Technologies, Inc. Disk drive implementing data path protection without writing the error detection code data to the disk
US7661058B1 (en) * 2006-04-17 2010-02-09 Marvell International Ltd. Efficient raid ECC controller for raid systems
JP2007317271A (ja) 2006-05-24 2007-12-06 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びそのリード処理におけるエラー処理方法
JP4469822B2 (ja) * 2006-09-15 2010-06-02 株式会社東芝 ディスクアレイ装置およびディスクアレイ装置のデータ管理方法

Also Published As

Publication number Publication date
JP2011008426A (ja) 2011-01-13
US8443264B2 (en) 2013-05-14
US20100332948A1 (en) 2010-12-30

Similar Documents

Publication Publication Date Title
US9417963B2 (en) Enabling efficient recovery from multiple failures together with one latent error in a storage array
JP4668970B2 (ja) フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正
US7529970B2 (en) System and method for improving the performance of operations requiring parity reads in a storage array system
JP4940322B2 (ja) 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法
US9075745B1 (en) System and method for adding a drive to a storage system having multiple drives
JP4905161B2 (ja) Raid装置及びガロア体を用いたデータ復元装置
US7836379B1 (en) Method for computing buffer ECC
US7823011B2 (en) Intra-disk coding scheme for data-storage systems
US8234445B2 (en) RAID data protection architecture using data protection information
US7549112B2 (en) Unique response for puncture drive media error
CN109358980B (zh) 一种对数据更新和单磁盘错误修复友好的raid6编码方法
JP5170010B2 (ja) ディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラム
JP4358869B2 (ja) ストレージ制御装置、ストレージ制御方法
JP4469822B2 (ja) ディスクアレイ装置およびディスクアレイ装置のデータ管理方法
US10108495B2 (en) Method and device for improving the reliability of data storage in a hard disk comprising a plurality of platters
US20060047993A1 (en) Apparatus, system, and method for error checking and recovery of transmitted data in a SCSI enviroment
US8214589B2 (en) Data storage system redundancy scheme verification
JP5278115B2 (ja) 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置
JP5440884B2 (ja) ディスクアレイ装置およびディスクアレイ制御用プログラム
JP3345997B2 (ja) 誤り訂正符号化復号装置および誤り訂正符号化復号装置を備えたディスクアレイシステムコントローラ
JP2013205853A (ja) フラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラム
US20220027060A1 (en) Disk array device, disk array control device, and disk array control method
JP2010049394A (ja) 磁気ディスクの書き込み障害の検出と回復を行うディスクアレイシステム、方法およびプログラム
JPH05224967A (ja) 誤り訂正装置

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20110706

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120518

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121113

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121217

R150 Certificate of patent or registration of utility model

Ref document number: 5170010

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350