JP2007524930A - ディスクアレイ内の2つのディスク故障に対する保護を提供する一様で対称な二重故障訂正技術 - Google Patents

ディスクアレイ内の2つのディスク故障に対する保護を提供する一様で対称な二重故障訂正技術 Download PDF

Info

Publication number
JP2007524930A
JP2007524930A JP2006541699A JP2006541699A JP2007524930A JP 2007524930 A JP2007524930 A JP 2007524930A JP 2006541699 A JP2006541699 A JP 2006541699A JP 2006541699 A JP2006541699 A JP 2006541699A JP 2007524930 A JP2007524930 A JP 2007524930A
Authority
JP
Japan
Prior art keywords
parity
disk
array
storage
diagonal
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
Application number
JP2006541699A
Other languages
English (en)
Inventor
コルベット,ピーター,エフ
イングリッシュ,ロバート,エム
クレイマン,スティーブン,アール
Original Assignee
ネットワーク・アプライアンス・インコーポレイテッド
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 ネットワーク・アプライアンス・インコーポレイテッド filed Critical ネットワーク・アプライアンス・インコーポレイテッド
Publication of JP2007524930A publication Critical patent/JP2007524930A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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

Abstract

ストレージシステムのディスクアレイにおける2以下のディスク故障に対する保護を提供する一様で対称な二重故障訂正技術。ストレージシステムのRAIDシステムは、ディスク2台分の「冗長」情報を生成し、アレイ内に記憶する。この冗長情報(例えば、パリティ)は例えば、対角パリティセット(「対角」)及び行パリティセット(「行」)に沿った計算から導出される。具体的には、RAIDシステムは、アレイの行に沿って行パリティを計算し、アレイの対角方向に沿って対角パリティを計算する。ただし、冗長(パリティ)情報ディスクの内容は、純粋に対角冗長情報(だけを)含むディスクや、純粋に行冗長情報(だけを)含むディスクがないように相互作用する。冗長情報は対角パリティを使用して生成され、その結果が、行パリティ計算に使用される(逆もまた可能である)。

Description

発明の分野
本発明はストレージシステムの故障訂正アルゴリズムに関し、詳しくは、ディスクアレイ内の2つのディスク故障に対する保護を提供する対称な二重故障訂正アルゴリズムに関する。
発明の背景
ストレージシステムは一般に、1以上のストレージデバイスからなり、その中に情報を入れたり、必要に応じてそこから情報を取り出したりする。ストレージシステムは、とりわけ、システムによって実施されるストレージサービスを支えるストレージオペレーションを実施することによりシステムを機能的に編成するストレージオペレーティングシステムを有する。ストレージシステムは、限定はしないが、ネットワーク・アタッチド・ストレージ環境、ストレージ・エリア・ネットワーク、及び、クライアントコンピュータやホストコンピュータに直接取り付けられたディスクアセンブリのような種々のストレージアーキテクチャに従って実施される。ストレージデバイスとは一般に、ディスクアレイとして編成されたディスクドライブであり、その場合、「ディスク」という用語は一般に、内蔵型回転磁気媒体ストレージデバイスを言う。この文脈におけるディスクという用語は、ハードディスクドライブ(HDD)やダイレクト・アクセス・ストレージ・デバイス(DASD)と同義である。
ディスクアレイにおける情報の記憶は、ディスク空間の全体的論理配置を規定する、複数の物理的ディスクの集まりからなる1以上のストレージ「ボリューム」として実施されることが好ましい。ボリューム内のディスクは通常、1以上のクループに編成され、各グループは、RAID(Redundant Array of Independent (or Inexpensive) Disks)として動作する。この文脈において、RAIDグループとは、それらのディスクに関連する多数のディスク、及び、アドレス/ブロック空間として定義される。「RAID」という用語及びその種々の実施形態は既知のものであり、「A Case for Redundant Arrays of Inexpensive Disks (RAID)」、D. A. Patterson、 G. A. Gibson、及び、R.H. Katz著、Proceedings of the International Conference on Management of Data (SIGMOD)、1998年6月、に開示されている。
ストレージシステムのストレージオペレーティングシステムは、情報をディレクトリ、ファイル、及び、ブロックの階層構造としてディスク上に論理編成するためのファイルシステムを実施する場合がある。例えば、「ディスク上」の各ファイルは、そのファイルの実際のデータのような情報を記憶するように構成されたデータ構造、すなわちディスクブロックのセットとして実施される場合がある。ストレージオペレーティングシステムは、書き込み処理や読み出し処理に従ってディスクに対する情報の記憶や読み出しを管理するRAIDシステムのようなストレージモジュールを更に実施する場合がある。なお、RAIDシステムは、RAIDアレイのRAIDコントローラとして実施される場合もある。従って本明細書で使用されるように、「RAIDシステム」という用語は、ハードウェア、ソフトウェア、ファームウェア(又はそれらの組み合わせ)のいずれの実施形態をも意味する場合がある。例えばディスク番号空間においてディスク上に記憶される情報と、例えばボリュームブロック番号空間においてファイルシステムによって編成される情報との間には通常、一対一のマッピングが存在する。
ファイルシステムの一般的タイプは、「定位置書き込み型」ファイルシステムであり、その一例は、従来のバークレイ・ファースト・ファイルシステムである。定位置書き込み型ファイルシステムでは、ディスク上のデータブロックのようなデータ構造の位置が一般に固定されている。データブロックに対する変更は「定位置」で行われる。ファイルの更新によってそのファイルのデータ量が増大する場合、更なるデータブロックが割り当てられる。ファイルシステムの他のタイプは、ディスク上のデータを上書きしないWrite-anywhereファイルシステムである。ディスク上のデータブロックをディスクからストレージシステムのメモリに取り出し(読み出し)、新たなデータで「汚す」と、そのデータブロックは、ディスク上の新たな場所に記憶され(書き込まれ)、それによって書き込み性能が最適化される。Write-anywhereファイルシステムは、ディスク上にデータが実質的に連続的に配置されるような最適レイアウトを最初に想定する。この最適ディスクレイアウトによって、効率的なアクセス処理が可能となり、特に、ディスクに対するシーケンシャル読み出し処理の場合に効率的なアクセス処理が可能になる。ストレージオペレーティングシステム上で動作するWrite-anywhereファイルシステムの一例は、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから市販されているWrite Anywhere File Layout(「WAFL」)である。
大抵のRAID実施形態は、RAIDグループ内の所与の数の物理的ディスクにわたってデータを「ストライプ」状に冗長書き込みし、そのストライプ状のデータに関する冗長情報を適宜記憶することにより、データ記憶の信頼性/完全性を向上させている。例えば、パリティ情報のような冗長情報によれば、ディスク故障時のデータ損失からの復元が可能になる。パリティ値は、種々のデータを有する複数の同様のディスクにわたる特定ワードサイズのデータ(通常は1ビット)の合計(通常はモジューロ2で)として計算され、その結果が、別の同様のディスクに記憶される。つまり、パリティは、各ディスク上の対応する部分にある複数のビットからなる1ビット幅のベクトルに基づいて計算される場合がある。1ビット幅ベクトルに基づいて計算した場合、計算された合計とその補数は、いずれもパリティとして使用することができる。それらはそれぞれ、偶数パリティ及び奇数パリティと呼ばれる。1ビットベクトルに基づく加算及び減算は、いずれも排他的論理和(XOR)論理演算と等価である。そして、そのデータは、いずれか1つのディスクの損失、又は、いずれか1つのディスク上のいずれかの部分の損失に対する保護を提供する。パリティを記憶しているディスクが失われた場合、パリティはそのデータから復元することができる。データディスクのうちの1つが失われた場合、そのデータは、残ったディスクの内容を加算し、その結果を記憶されたパリティから減算することによって復元することができる。
一般に、ディスクは複数のパリティグループに分割され、各パリティグループは1以上のデータディスク及び1つのパリティディスクから構成される。パリティセットは、複数のデータブロックと1つのパリティブロックからなるブロックのセットであり、パリティブロックは、全てのデータブロックのXORをとったものに等しい。パリティグループはディスクのセットであり、その中から1以上のパリティセットが選択される。ディスク空間は複数のストライプに分割され、各ストライプは各ディスクから1つのブロックを含む。ストライプのブロックは通常、パリティグループにおける各ディスク上の同じ位置にある。ストライプ内で、1つのブロックを除く全てのブロック(「データブロック」)はデータを保持する一方、1つのブロック(「パリティブロック」)は全てのデータのXORをとることによって算出されたパリティを保持する。
パリティブロックを全て1つのディスクに記憶し、全部がパリティ情報の(すなわち、パリティ情報だけしか持たない)単一のディスクを構成する場合、RAID4レベル実施形態が形成される。RAID4実施形態は、パリティ情報の位置を各RAIDグループにおいて固定するので、事実上、先進的RAID(すなわち、ストライピングやミラーリングを超える)の最も単純な形である。特に、RAID4実施形態によれば、ディスクを一台追加するだけで、一台のディスク故障からの保護を提供でき、データディスクをRAIDグループに逐次追加することも簡単である。
各ストリップにおいてパリティブロックが異なるディスクに、回転パターンで保持される場合、その実施形態はRAID5である。大抵の市販の実施形態は、先進的なRAID技術を使用し、パリティ情報を分散させるRAID5レベル実施形態を使用している。RAID5実施形態を選択する動機は、多くの読み出し最適化をするファイルシステムにとって、RAID4実施形態の使用は、処理能力を制限することがあるからである。そうした読み出し最適化を行うファイルシステムは、ディスクアレイ上の多数のストライプにわたって書き込みデータを分散させる性質があり、その結果、パリティディスクは書き込まれた各ストライプを探すことになる。ただし、WAFLファイルシステムのようなWrite-anywhereファイルシステムは、書き込みデータを少数の隣接ストライプ上に集中させるので、そのような問題がない。
本明細書で使用されるように、「エンコーディング」という用語は、データブロックの所定のサブセットにわたる冗長値の計算を意味し、「デコーディング」という用語は、データブロックのサブセットと冗長値を使用したデータブロックやパリティブロックの復元を意味する。RAID4及びRAID5において、パリティグループ内の一台のディスクが故障した場合、残りのデータブロックの内容を全て加算し、その結果をパリティブロックから減算することにより、そのディスクの内容をデコード(復元)することができる。1ビットフィールドにおける2の補数による加算と減算はいずれも、XOR演算と等価であるから、この復元は、生き残ったデータブロックとパリティブロックを全てXOR演算することからなる。同様に、パリティディスクが失われた場合、それも、生き残ったデータから同じ方法で再計算することができる。
パリティスキームは一般に、パリティグループ内の単一ディスク故障に対する保護を提供する。各故障が異なるパリティグループで発生する限りは、それらの方法でも、複数のディスク故障に対する保護を提供することが可能である。ただし、2つのディスク故障が1つのパリティグループ内で同時に発生する場合は、復元不能なデータ損失を受ける。1つのパリティグループ内における2台のディスクの同時故障は、かなり一般的に発生し得ることであり、特に、ディスクの磨耗や、ディスクの動作に関する環境要因から発生し得る。この文脈において、1つのパリティグループ内における2台のディスクの同時故障は、「二重故障」と呼ばれる。二重故障は一般に、一台のディスク故障と、その故障の復旧を試みている間に起きる別のディスクの故障によって発生する。例えば、二重故障の1つの一般的原因は、一台の故障したディスクと、1つの媒体故障(すなわち、ある行における単一の読み取り不能ブロック)との組み合わせである。
本明細書において、対称とは、或るアレイのディスク間において、パリティ構築アルゴリズムとディスク復元アルゴリズムの両方が、回転対称であることとして定義される。厳密には、ディスクに0〜m−1の番号が付けられたnディスクアレイにおいて、m>=nとして、ディスクjがディスク(j+k)モジューロmになるように、それらを或る量kだけ回転させることによってディスクの番号を付け直すと、パリティ計算やその計算結果は変化しない。更に、本明細書において一様性とは、どのディスクが失われたかに関わりなく、また、アレイ内のディスクの失われた部分に関わり無く、同じアルゴリズムを使用して、ストライプの失われた内容が計算されることを意味するものと定義される。つまり、アレイが一様であれば、アレイ内のどのディスクがパリティを保持していても、同じアルゴリズムを使用して、冗長情報の構築や、パリティの構築が行われることを意味する。更に、どのディスクが故障したかに関わらず、また、ディスクが冗長データを保持しているかそれともファイルシステムデータを保持しているかに関わらず、同じアルゴリズムを使用して、故障したディスクを復元することが可能であることも意味する。
一様なアルゴリズムを含むスキームによれば、パリティブロックを回転その他の方法で複数のディスクにわたって種々のストライプ上の種々の場所へ分散させた状態で、アレイ内の全てのディスクをデータの記憶に使用することが可能になる。そして、高性能な完全ストライプ書き込み処理と部分的ストライプ書き込み処理を実現しつつも、読み出し処理の際に全てのディスクを使用することが可能になる。さらに、メタデータマッピングファイルのようなデータ構造を設定することにより、任意の特定のストライプにおいてどのディスクがパリティやデータを保持するかを指定することができる。これらの「マップ」は復元を実施する必要がないので、RAIDシステムとは無関係に、ファイルシステムによって管理される場合がある。
一般的な単一ブロック行パリティスキームは、単一故障訂正スキームの実施に使用されることがある。ストライプ内の全てのブロックが、全てのブロックにわたって合計された各ビット位置の総合パリティが偶数であるという不変性に対し、均一に貢献する。なお、パリティ値が既知である(予め決まっている)場合、パリティは偶数であってもよいし、奇数であってもよい。本明細書における下記の説明は、偶数パリティの使用に関するものである。従って、復元の際に、どのブロックがデータを保持し、どのブロックがパリティを保持しているかを知っている必要はない。失われたブロックは、各ブロックにわたって対応するビット位置にあるビットをモジュール2で合計することにより復元される。この合計が失われたブロックである。なぜなら、このブロック値を残りのブロック値の合計に加算すると、そのストライプが偶数パリティであることを示すゼロが生成されるからである。
各ストライプに偶数パリティを確立するためには、多少の自由が必要になる。それはパリティブロックの内容であり、パリティブロックの内容はすべてのデータブロックの内容によって決まる。RAIDシステムは、データブロックの内容を一回のパリティエンコードで自由に変更することができず、単一のパリティブロックの内容を設定することにより、ストライプのパリティを中立的な偶数パリティ状態にできるに過ぎない。
行−対角(RD)パリティ技術によれば、ディスクアレイ内の行パリティと対角パリティを使用した二重故障パリティ訂正復元が可能になる。RDパリティ技術は、1台の行パリティディスクと1台の対角パリティディスクを含むn台のディスクのような記憶装置からなるアレイにおいて使用される場合がある。ただし、n=p+1、pは素数である。ディスクはブロックに分割され、ブロックはストライプに編成される。各ストライプは(n−2)行からなる。対角パリティディスクは、アレイの対角パリティセット(「対角」)に沿って計算されたパリティ情報を記憶する。対角は、ストライプ内の1つのディスクを除く全てのディスクを対象としたあらゆる対角のように定義される。
ストライプ内のブロックは(n−1)個の対角に編成され、各対角はデータディスクと行パリティディスクから(n−2)個のブロックを有し、そのうちの1つを除く全ては、そのパリティを対角パリティディスク上のブロックに記憶する。ストライプ内において、対角パリティブロックは、行パリティセットには参加しない。RDパリティ技術の実施形態では、どのパリティ対角が失われた対角であるかを、すなわち、パリティブロックが計算も記憶もされていない対角を知っていなければならない。RDパリティ技術については、2001年12月28日に出願されたPeter F. Corbett他による「Row-Diagonal Parity Technique for Enabling Efficient Recovery from Double Failures in a Storage Array」と題する米国特許出願第10/035,607号に記載されており、この文献は参照により完全に説明されたものとして本明細書に援用される。
一般的なRAID4アレイ、又は、RAID5アレイのストライプはそれぞれ、複数のデータディスクの集まりと、1つの指定された行パリティディスクとを有し、RDパリティ技術を実施するように構成される。RDパリティ技術を実施できるようにするために、RAID4アレイ、又は、RAID5アレイのストライプは、対角パリティディスクの追加によって拡張される。パリティ内のディスク数は(p+1)に設定され、複数のストライプからなる二重ディスク故障許容グループを形成するために必要とされるブロックの行数は(p−1)である。それら(p+1)個のディスクのうちの少なくとも2つはパリティ情報を保持しなければならず、それら2つのディスクのうちの1つはアレイの対角パリティを保持しなければならない。1以上の他の冗長ディスクは、行パリティ情報を保持する。残りの(p−1)以下の数のディスクは、データを保持する。それらのディスクのうちの任意数は、アレイの外に置かれる場合がある。パリティ計算の際に、存在しないディスクは全てゼロを保持しているものと仮定される。それによって、異なるサイズのアレイを使用することが可能となり、パリティを再計算することなく、既存のアレイにデータディスクを追加することが可能となる。
図1は、p=5として、行−対角(RD)パリティ構成に従って構成されたディスクアレイ100を示す略ブロック図である。各位置に書かれた数字は、そのブロック(又は、サブブロック)が属する対角パリティセットに対応している。対角パリティブロックは、対応する対角上にある幾つかのブロックのモジューロ2合計である。行パリティブロックは、対応する行にある全てのデータブロックのモジューロ2合計である。RDパリティ技術によれば、行パリティは、対角パリティディスクを除く、1つのストライプの全てのディスクにわたって計算される。対角パリティディスクは、アレイ内の他の全てのディスクに関して、一様でも対称でもない特有の機能を有する。すなわち、対角パリティディスクは対角パリティを記憶するだけであり、行パリティ計算には参加しない。従ってRDパリティ二重故障訂正技術は対称ではなく、本発明は、対称な二重故障訂正技術を提供することに関する。
アレイ内のデータブロックやパリティブロックの位置をストライプごとに変化させる利点は、読み出し性能が向上することである。全てのディスクが一様な比率でデータを保持していれば、読み出しの作業負荷は、全てのディスクにわたってバランスがとれる可能性がある。一様性の利点は、ストライプ内の冗長ブロックの位置の違いによるパフォーマンスやアルゴリズムの変化がないことである。従って、どのブロックを使用してパリティを記憶するかの決定を、その選択が冗長データ構築の性能に影響を与えるかもしれないことから、偏りなく行うことができる。その結果、各ストライプにおいてどのディスクを使用して冗長データを保持するかを選択する際の完全な柔軟性が得られる。
発明の概要
本発明は、ストレージシステムのディスクアレイにおける2以下のディスク故障に対する保護を提供する一様で対称な二重故障訂正技術を提供することにより、本明細書に記載した欠点を克服する。ストレージシステムのRAIDシステムは、ディスク2台分の「冗長」情報を生成し、アレイに記憶する。この冗長情報(例えば、パリティ)は、例えば、対角パリティセット(「対角」)と行パリティセット(「行」)の両方に沿って計算される。具体的には、RAIDシステムは、アレイの行に沿って行冗長値を計算し、アレイの対角方向に沿って対角冗長値を計算する。ただし、冗長(パリティ)情報ディスクの内容は、純粋に対角情報(だけを)含むディスクや、純粋に行冗長情報(だけを)含むディスクがないように相互作用する。冗長情報は対角パリティを使用して生成され、その結果が行パリティ計算に使用される(逆も可能である)。
例示的実施形態において、ディスクアレイはp個のディスクを含む一様で対称な行−対角(SRD)パリティアレイであり、それらのディスクは複数のブロックに分割され、1ストライプあたり(p−1)行のブロックに編成される。ただし、pは3以上の素数であり、各行は各ディスクから1つのブロックを含む。なお、本発明において、1つの行は通常、各ディスク上の同じ相対位置にある幾つかのブロックから構成されることが望ましいが、各ディスクからの1以上のブロックを行として編成する任意の自由な構成を使用してもよい。ディスクのうちの2台は冗長(パリティ)ディスクであり、各パリティディスクは、そのディスクのパリティブロックの中に冗長情報を保持する。残りのディスクは、データを記憶するように構成されたデータディスクである。パリティ情報を保持する2つのディスクは、行パリティだけを保持するのでも、対角パリティだけを保持するのでもない。それらのディスクは、各対角のパリティが偶数になり、各行のパリティが偶数になることを保証するために必要な情報を保持する。パリティブロック内の冗長情報は、行パリティ計算貢献度及び対角パリティ計算貢献度によって一意に決定される。
特に、それらのパリティディスク内のブロックは全て、行の要素でも対角の要素でもある。そのため、それらのパリティディスク間に機能的な違いはなく、両方とも冗長情報を保持し、各ディスクのブロックは、行に対するブロックの貢献度と、対角に対するブロックの貢献度から形成される。もっと一般的なケースでは、SRDアレイ内のディスクのうちの任意の2つが、そのアレイ内のパリティディスクとして選択され、その選択はストライプごとに異なる場合がある。2つのパリティディスクを任意に選択し、アレイ内の2台の故障ディスクを復元することにより、回転的に一様で対称な二重故障訂正パリティ技術が提供される。
本発明の一様で対称な二重故障訂正技術によれば、データディスクやパリティディスクの故障、及びそれらの組み合わせを含む、アレイ内の任意の2以下のディスク故障からの復旧が可能となる。また、本技術は、回転対称かつ一様であり、失われたディスクの役割や、アレイ内の他のディスクの役割を何も知らなくても、失われたディスクを復旧させることができる。更に、上述のように、ディスクの役割をディスクごとに自由に再割当てすることができる。
本発明の上記の利点及び他の利点は、添付の図面を参照し、下記の説明を読むと分かりやすいであろう。図中、同じ参照符号は同一の要素、又は、機能的に類似の要素を示している。
例示的実施形態の詳細な説明
図2は、本発明と共に使用するのに都合がよいストレージシステム200を示す略ブロック図である。図示の実施形態において、ストレージシステム200は、システムバス225によって相互接続されたプロセッサ222、メモリ224、及び、ストレージアダプタ228を有する。メモリ224は、本発明に関連するソフトウェアプログラムコードやデータ構造を記憶する際にプロセッサやアダプタによってアドレス指定することが可能な記憶場所を有する。また、プロセッサ及びアダプタは、ソフトウェアコードを実行し、データ構造を操作するように構成された処理要素、及び/又は、論理回路を含む。当業者には明らかなように、本明細書に記載する本発明に関係するプログラム命令の記憶や実行には、種々のコンピュータ読取可能媒体を含めて、他の処理手段及び他の記憶手段を使用してもよい。
ストレージオペレーティングシステム250の一部は通常、メモリに常駐し、処理要素によって実行され、とりわけ、ストレージシステムによって実行される記憶処理を実行することにより、ストレージシステム200を機能的に構成する。ストレージオペレーティングシステムは、情報をディレクトリ、ファイル、及び、ブロックの階層構造としてアレイのディスク上に編成するための上位モジュールを実行する。ストレージオペレーティングシステム250は、書き込み処理及び読み出し処理に従って、ディスクに対する情報の記憶や読み出しを管理するためのストレージモジュールを更に実行する。なお、上位モジュール及びストレージモジュールは、ソフトウェア、ハードウェア、又は、それらの組み合わせのうちのいずれの形で実施してもよい。
具体的には、上位モジュールは、ディスクアレイ内の記憶空間の割り当てを行い、ディスクアレイ内のデータのレイアウトを制御するファイルシステム260、又は、データベースのような他のモジュールからなる。また、ストレージモジュールは、冗長記憶アルゴリズムを使用して冗長(例えば、パリティ)情報を計算し、ディスク故障からの復旧を行うように構成されたディスクアレイ制御システム、又は、RAIDシステム270からなる。ディスクアレイ制御システム(「ディスクアレイコントローラ」)、又は、RAIDシステムは、アレイ上での固定データの配置に応答して、代数的及びアルゴリズム的な計算を使用して、冗長情報を更に計算する場合がある。
図示の実施形態において、ストレージオペレーティングシステムは、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから市販されているNetApp Data ONTAPオペレーティングシステムであることが好ましく、このオペレーティングシステムは、例えば4キロバイト(kB)のWAFLブロックを使用したブロックベースのディスク上フォーマット表現を有するWrite Anywhere File Layout (WAFL)ファイルシステムを実施する。ただし、当然ながら、例えば、定位置書き込み型ファイルシステムのような任意の適当なストレージオペレーティングシステムを、本明細書に記載する本発明の原理に従って使用するために拡張してもよい。従って、「WAFL」という用語を使用した場合でも、この用語は、本発明の教示に適合する任意のストレージオペレーティングシステムを指すものとして広く解釈しなければならない。
本明細書で使用されるように、「ストレージオペレーティングシステム」という用語は一般に、ストレージシステムにおけるストレージ機能を実施するためのコンピュータ実行可能コードを意味し、例えばファイルセマンティックを管理し、ファイルサーバの場合、ファイルシステムセマンティックを実施し、データアクセスを管理するコンピュータ実行可能コードを意味する。その意味で、ONTAPソフトウェアは、マイクロカーネルとして実施され、WAFLファイルシステムセマンティックを実施し、データアクセスを管理するためのWAFL層を含むそのようなストレージオペレーティングシステムの一例である。ストレージオペレーティングシステムは、UNIXやWindows NTのような汎用オペレーティングシステム上で動作するアプリケーションプログラムとして実施することもでき、また、本明細書に記載するストレージアプリケーションで使用するために構成された設定可能な機能を有する汎用オペレーティングシステムとして実施することもできる。
ストレージアダプタ228は、ストレージシステム200上で実行されるストレージオペレーティングシステム250と協働し、ユーザ(又は、クライアント)から要求された情報にアクセスする。情報は、ビデオテープ、光学、DVD、磁気テープ、バブルメモリ、電気的ランダムアクセスメモリ、微小電気機械、及び、データとパリティ情報を含む情報を記憶するように構成された任意の他の同様の媒体といった、任意のタイプの書き込み可能な記憶装置媒体の付属アレイに記憶される場合がある。ただし、本明細書において例示するように、情報は、HDD、及び/又は、DASDのような、アレイ300のディスク230に記憶することが好ましい。ストレージアダプタは、従来の高性能ファイバチャネル・シリアルリンク・トポロジのようなI/O相互接続構成を介してディスクに接続された入出力(I/O)インタフェース回路を含む。
アレイ300上での情報の記憶は、ディスク空間の全体的論理配置を規定する物理的ストレージディスク230の集まりからなる1以上のストレージ「ボリューム」として実施されることが好ましい。各ボリュームは一般に、必須ではないが、独自のファイルシステムに関連する。ボリューム/ファイルシステム内のディスクは通常、1以上のグループとして編成され、各グループはRAIDグループとして機能する。大抵のRAID実施形態は、RAIDグループ内の所与の数の物理的ディスクにわたってデータを「ストライプ」状に冗長書き込みし、そのストライプ状のデータに関するパリティ情報を適宜記憶することにより、データ記憶の信頼性/完全性を向上させている。
本発明によれば、アレイ300内の2以下のディスク230の故障に対する保護を提供する、一様で対称な二重故障訂正技術が得られる。ストレージオペレーティングシステム250のRAIDシステム270のようなRAIDシステムは、ディスク2台分の「冗長」情報を生成し、アレイ300に記憶することにより、本明細書に記載する本発明の技術を実施することが好ましい。この冗長情報は、アレイの行パリティセット(「行」)及び対角パリティセット(「対角」)に沿った合計又は結合計算技術を使用して生成される場合がある。結合技術には、例えば、1以上のビット幅であるビットフィールドにわたって合計を計算するように構成された線形結合アルゴリズムがある。冗長情報は、2台のディスク上に集中させてもよいし、アレイ内の任意又は全てのディスクにわたって分散させてもよい。
しかしながら、図示の実施形態では、冗長情報(例えば、パリティ)は、例えば対角に沿った計算と行に沿った計算から導出される。具体的には、RAIDシステムは、行冗長値をアレイの行に沿って計算し、対角冗長値をアレイの対角方向に沿って計算する。ただし、冗長(パリティ)情報ディスクの内容は、純粋に対角情報(だけを)保持するディスクや、純粋に行冗長情報(だけを)保持するディスクがないように相互作用する。冗長情報は対角パリティを使用して生成され、その結果が行パリティ計算に使用される(逆も可能である)。対称二重故障訂正技術によって考慮される対称パリティアルゴリズムの一例は、一様で対称な行−対角パリティである。
一様で対称なRDパリティ
一様で対称なRD(SRD)パリティは、p個のディスクのようなストレージデバイスを使用する。ただし、pは3以上の素数である。ディスクは複数のブロックに分割され、例えば固定サイズのブロックに分割される。行は、各ディスクから1つ一意的に選択されたブロックの集合として定義され、ストライプは、一意的に選択された行のグループとして定義される。一般に、行は、各ディスク上の同じ位置にあるブロックから構成され、ストライプは、連続した行のグループである。
SRDのブロックサイズは、ディスク上のファイルシステムによって使用されるブロックサイズに対応している必要はない。ファイルシステムブロックは,複数のSRDブロックから構成される場合がある。一実施形態では、p−1個のSRDブロックを使用して、p−1行の隣り合うセットをストライプにグループ化することにより、1つのファイルシステムブロックが構成される。ファイルシステムブロックは通常、4キロバイトのような2の累乗であるため、p−1もまた2の累乗になるようにpを選択すると、ストライプ1つ分のSRDブロックを、1ファイルシステムの深さを有するファイルシステムブロックの1つのストライプの中にぴったりと収めることができる。例えば、SRDブロックサイズが16バイトである場合、p=257であれば、256個のSRDブロックを4キロバイトの1つのファイルシステムブロックの中にぴったりと収めることができる。従って、各ディスクから4kブロックを1つ、4kファイルシステムブロックの1つのストライプの中に、SRD行及び対角の内蔵セット全体を構成することができる。
概して、SRDパリティアレイのブロックは全て、行の要素でもあり、対角の要素でもある。対角は、任意のグループ内において定義され、一意に選択された行として定義される。対角は、例えば、データディスクと冗長(パリティ)ディスクに0からp−1までの番号を付けることによって形成される場合がある。p−1行からなる選択されたグループ内の行に0からp−2まで番号を付けた後、デバイスi、行jにあるブロックを対角(i+j)モジューロpに割り当てる。その結果、各対角が一台のディスクからの全ブロックを含まず、同じディスクからの全ブロックを含まない2つの対角が存在しないような構成が作成される。なお、「対角」という用語は、文字通りの対角ではない単純な交互パターンも含む。
「チェーン」とは、チェーン内の全ブロックが2つのディスクのうちの一方に属し、チェーンの両端にある2つのブロックが異なるディスク上にあり、且つ、そのチェーン上の最も近い近傍ブロックと同じ行にあるような一連のブロックとして定義される。また、チェーン上の他のブロックは全て、そのチェーン内のもう1つのブロックと同じ行にあり、且つ、そのチェーン内のもう1つのブロックと同じ対角上にある。
SRD技術は、対角へのブロックの割り当てにより、最大p個までのデバイスを含む自由に構成され選択されたp−1行のグループの中で実施することができる。対角に対するブロックの単純な割り当てについて説明すると、各対角が、各行から2以上のブロックを含まず、各ディスクから1つだけブロックを含み、且つ、任意の2台のディスクにおいて、それらの2台のディスク上の選択された行にある全てのブロックを接続するチェーンがただ1つしか存在しないことを保証すれば十分である。この単純な割り当ては、対角dが全てのブロック(i,j)であるものと定義する。ただし、d=(i+j)モジューロpのように、iはブロックのディスク番号であり、jはp−1行のセット内のブロックの行番号である。SRDを動作させる条件を同様に満たす対角に対するブロックの代替の割り当ては、例えば、d=(i−j)モジューロpである。一般に、何らかの固定の整数値k、ただしk≠0、かつ、−p<k<pとしたときに、式d=(i+kj)モジューロpを満たす対角の集合を定義することができる。
各ストライプにおける任意の2台のディスクは、冗長(パリティ)情報を保持することができる。パリティディスクを任意選択する場合、全ての行および対角が偶数パリティになるパリティ値の唯一の割り当てが存在する。本明細書に記載するように、この唯一の割り当ては、まず、1ブロックだけ失われた2つの対角に対して対角パリティを設定し、次に、それらの2つの行に対して行パリティを設定すること等によって決定される。なお、二重故障の後に失われた任意の2つのディスクの復元にも、同じアルゴリズムを使用することができ、また同時に、行パリティを使用して、任意の1つの失われたディスクを復元することもできる。
図3は、本発明による一様で対称な二重故障訂正パリティアレイの一実施形態を示す略ブロック図である。この一様で対称なパリティアレイは例えば、RDパリティアレイ100から1つのデータディスクを取り除き、行パリティ計算の範囲を対角にまで延長することによって作成することができる。SRDアレイはp個のディスクを含み、それらのディスクはブロックに分割され、1ストライプあたり(p−1)行に編成される。ただし、pは3以上の素数、例えば、5、17、257などであり、行の数(p−1)は2の累乗に等しく、それによって1つのストライプ内に含めることが可能になる。各ブロックのラベルは、そのブロックが属する対角を示している。
図示の実施形態において、SRDパリティアレイ300のp個のディスクは、データを記憶するように構成された幾つかのデータディスクと、2つの冗長(パリティ)ディスクを含み、各パリティディスクは、ディスクのパリティブロック内の冗長情報を保持する。上記のように、パリティ情報を有する2台のディスクは、行パリティと対角パリティのどちらか一方だけを保持しているのではない。それらのディスクは、各対角におけるパリティが偶数になり、各行におけるパリティが偶数になることを保証するために必要な冗長情報を保持している。パリティブロックにおける冗長情報は、行パリティ計算貢献度及び対角パリティ計算貢献度によって一意に決まる。
図1も同時に参照すると、アレイ300のディスク3は先の行パリティを保持し、ディスク4は先の対角パリティを保持し、ディスク0はアレイから取り除かれ、全てのディスクがd=d−1によって番号を付け直され、全てのブロックがj=(j−1)モジューロpによって番号を付け直され、ゼロを基準とする番号付けに戻されている。特に、アレイ300のディスク3及び4内のブロックは全て、行の要素にも、対角の要素にもなっている。従って、ディスク3とディスク4の間に機能の違いはなく、両方とも冗長情報を保持し、各ディスクのデータブロックは、行に属するブロックと対角に属するブロックから形成されている。さらに一般的なケースでは、ディスクのうちの任意の2つをアレイのパリティディスクとして選択することができ、その選択をストライプごとに異ならせることができる。従って、この一般的ケースでは、2台のパリティディスクと、(p−2)台のデータディスクが得られる。アレイ内の任意の2台の失われた(故障)ディスクを任意選択の2台のパリティを使用して復元することにより、回転的に一様で対称な二重故障訂正パリティ技術が提供される。パリティ計算は、アレイ内のディスクの相対位置の純粋な関数である。0からn−1まで番号が振られたディスクを有するnディスクアレイでは、任意のkの値に対し、ディスクjがディスク(j+k)モジューロnになるようにディスクの番号を回転させると、パリティ計算やその結果に影響がでることはない。
パリティの構成や、2つの故障ブロックの復元に使用されるSRDアルゴリズムは、全てのブロックが構成されるまで、次の2つのステップを交互に実施する。(i)要素が1つだけ失われた2つの対角パリティセットにおいて、対角パリティに基づいて2つのブロックを復元する。(ii)要素が1つだけ失われた行パリティセットにおいて、行パリティを使用して2つのブロックを復元する。このアルゴリズムは、どのディスクを構築すなわち復元する場合でも無関係に使用できる点で一様である。
行が従来の方法で定義されている場合、すなわち、各行が、各ディスク上の同じ位置からの1つのブロックから構成されている場合であって、更に、対角dに属するブロックが、式d=(i+kj)モジューロpを満たすように対角が定義されている場合(ただし、k≠0、−p<k<p)、そのアレイは更に、回転対称でもある。つまり、アレイ内のディスクを回転させ、ディスクの番号を付け替えても、全く同じパリティ計算及び結果が達成される。
SRDパリティを使用した復元
この新規なSRDパリティアレイが対称である理由は、全ての行の加算、及び、全ての対角の加算が、ゼロになるからである(例えばXOR演算により)。従って、ストライプ内の任意の2台のディスクをパリティディスクとして選択することができる。一様な性質とは、同じ二重故障訂正アルゴリズムを使用して、二重故障からの復元だけでなく、アレイの復元も行えることをいう。また、もう1つの一様という性質は、どのディスクが故障したかに関わらず、同じ復元アルゴリズムを使用できることをいう。復元は、故障したディスクの役割を知らなくても実施することができる。すなわち、故障したディスクが、データを保持していても、パリティを保持していても関係ない。
二重故障後の復元は、まず対角を復元することから開始される。なぜなら、失われた2つのサブブロック(以後、「ブロック」と呼ぶ)が全ての行に必ず存在するからである。例えば、SRDアレイ300のパリティディスク(ディスク3、4)が故障したものと仮定する。対角パリティセット3は、ディスク4のブロックを何も有していないので、失われたブロックは1つだけ(ディスク3における点線のディスクブロック3)である。従って、対角3における失われたディスクブロック3は、対角パリティ計算によって即座に復元することができる。なお、対角パリティセット2はディスク3に衝突しないので、対角パリティセット2から失われるブロックも1つだけである。従って、代替として、ディスク4上の対角ブロック2から開始して、対角パリティセット2に沿った対角パリティ計算を使用して、復元をおこなうこともできる。なお、それらの対角ブロックの両方を平行して復元することもでき、特に、復元は、失われたブロックのチェーンの一端又は両端から開始することができる。
ディスク3の対角パリティブロック3から復元を開始するものと仮定する。対角パリティブロック3を復元した後、その行にある隣りの失われたパリティブロック(ディスク4のブロック4)は、行パリティ計算を使用して復元することができる。それを行った後、復元された隣りの失われたブロックの対角パリティセットに対応する対角ブロック(ディスク3のブロック4)を、対角パリティを使用して復元することができ、その後、行パリティを使用して、隣りの失われたブロック(ディスク4のブロック0)の復元を行うことができる。
他の例として(図3には図示せず)、SRDアレイ300のデータディスク1とパリティディスク3が故障したものと仮定する。データディスク1から対角パリティセット0が失われているので、復元は、パリティディスク3の対角ブロック0から開始することができる。つまり、ディスク3の対角ブロック0は、対角パリティセット0に沿って対角パリティを使用することにより復元することができる。次に、行パリティを使用して、データディスク1の対角パリティブロック3を復元することができる(なぜなら、この対角パリティブロック3は、復元された対角パリティブロック0と同じ行にあるからである)。次に、対角パリティを使用して、ディスク3の対角パリティブロック3を復元し、その後、行パリティを使用して、ディスク1の対角ブロック1を復元することができる。この処理は、両方のディスク上に全てブロックが復元されるまで続けられる。
故障した2つのディスク間には距離があるので、この復元プロセスは、1行置き(2行間隔)にジャンプし、それによって、ストライプの全ての行をカバーする。これが、ディスク数が素数pでなければならず、1ストライプあたりの行数が(p−1)でなければならない理由である。その結果、故障ディスク間の距離がどのような距離であっても、復元の際にすべての行に遭遇し、全ての行を復元することができる。換言すれば、対角パリティセットは、1行、2行のように、最大で、n割る2行(ただしnはディスク数)までの距離にわたって存在する可能性があり、それらの距離の全てが、素数pを因数として有するわけではない。また、SRDアルゴリズムはモジューロ算術演算を使用するため、(行間)のずれの計算のために、抜けている行(例えば、5番目)を理論上使用するようなやり方で、アレイを「包み込む」。
図4は、本発明の一様で対称な二重故障訂正パリティアレイにおける2台のディスク故障に応じて失われたデータを復元する復元プロセスに関する一連のステップを示すフロー図である。この復元プロセスは、例えば、新規のSRDパリティ技術を使用して、RAIDシステム270によって実施される。シーケンスはステップ400から始まり、ステップ402へ進み、そこで、RAIDシステムは、故障ディスクのうちの一方にあるブロックであって、他方の故障ディスクからのブロックを含む対角パリティセット(対角)には属さないブロックを選択する。ステップ404において、システムは、選択されたブロックを含む対角内の残りのブロック全ての合計(XOR)を計算し、その選択された故障ブロックを復元する。ステップ406において、システムは、その復元されたブロックを含む行内の残りの全てのブロックの合計(XOR)を計算し、他方の故障したディスクにおけるブロックを復元する。ステップ408において、この対角を使用したブロックの復元、そして新たに復元された各ブロックを使用した行パリティ計算のプロセスを、故障した他方のディスクに対しても繰り返す(上記のように「ジグザグ」状に)。ステップ410では、全ての故障ブロックが復元されたか否かに関する判定を行う。まだ終わっていなければ、シーケンスはステップ408へ戻る。そうでなければ、シーケンスはステップ412において終了する。その結果、どのディスクがパリティを有しているか知らなくても、RAIDシステムは、任意の2つの故障ディスクのデータを復元することができる。
図3を再度参照すると、SRDパリティアレイ300は各ディスクに関して1つの対角が抜けている。これは、2台のディスク故障からの復元を可能にする上で重要である。しかしながら、SRDアレイは対称であるため、あらゆる対角が、その対角について計算されたパリティを有している。これが、RDパリティとは異なる。つまり、RDパリティアルゴリズムは、XOR計算に関与しない対角が1つあるという性質を持っている。しかしながら、新規なSRDアルゴリズムは、復元とアレイの構築を可能にするために、XOR計算が全ての対角に沿って実施される。従って、SRDアレイにおける構築は、上記の復元の例に似ている。
SRDパリティの計算
上記のSRDパリティ技術は、任意の2台のディスクが失われたアレイの復元を可能にすると同時に、どのような値に対してもパリティを適切に生成することができる。その一様な性質から、二重故障訂正パリティアルゴリズムは復元にも構築にも使用することができる。概して、構築には、各行及び対角にあるデータブロックの部分的合計を最初に計算しなければならない。各パリティディスク上において、ブロックのうちの1つは、対角上の唯一の残りのブロックである。従って、それら2つのブロックを対応する対角部分合計の値に直接設定すると、それら2つの対角を「偶数」パリティにすることができる。その結果、それら2つの行のそれぞれに、1つだけ未解決のブロックが残る。その未解決なブロックは、その行にあるデータブロックの部分合計にその行のパリティブロックに設定されたパリティ値を加えたものに設定することができる。次に、更に2つのパリティブロックを設定することにより、このほぼ完成した対角を完成させる。残りのパリティブロックが全て設定されるまで、このプロセスは継続される。最初の2つを除く各パリティブロックは、部分的な行又は対角パリティと、その行又は対角上の残りのパリティブロックについて計算されたパリティとの合計と、さらにもう一回XOR演算しなければならない。
図5は、本発明による一様で対称な二重故障訂正パリティアレイの他の実施形態を示す略ブロック図である。この実施形態は例えば、1ストライプあたりp台のディスクと(p−1)個の行を有するSRDパリティアレイ500である。ただし、pは3以上の素数、例えば5であり、ディスク1及びディスク3がパリティディスクである。ブロック中の非ゼロの数字は、それらのブロック内のビットが設定されるかもしれない順番、並びに、本発明の技術に従ってそれらのビットの計算に使用されるパリティのタイプ、例えば、行(R)又は対角(D)に対応している。
各ブロックが1つの行及び1つの対角の要素になっているので、何らかのデータブロックの値を変更するためには、同じ対角上の少なくとも1つのパリティブロックに記憶されたパリティ値を変更しなければならない。対角パリティブロックは、2つのパリティディスク上の行パリティブロックと対角パリティブロックに対する一連の交互の変更によって、変更を加えたデータブロックの行まで完全に循環して戻るように選択される。変更を加えた元のデータブロックと同じ行にあるパリティブロックに対して同じ微小変化を加えると、アレイ全体を通して偶数パリティが復元される。変更するデータブロックや、2つのディスクのうちのどちらがパリティを記憶するために選択されるかに関わらず、そのようなサイクルの形成は常に可能である。
なお、ゼロで埋められたアレイは、各行及び対角において偶数パリティを有する。アレイのどのブロックにも、ゼロ以外は記憶されないので、全ての行及び全ての対角を加えるとゼロになる。パリティ計算に使用されるXOR演算は、可換性で結合性であるため、アレイを偶数パリティに維持するために、全てのデータブロックから2つのパリティディスクへの全ての貢献度をまとめて(重ねて)合計することができる。この性質は、p個のディスクが必ずしも全てアレイ500内に存在しない場合でも、抜けているディスクの内容を所定の固定値、例えば、全てゼロであると推定することにより、適用することが可能である。また、この性質は、所定の固定値に初期化されたディスク、例えばゼロ化されたディスクをアレイ500に追加し、そのアレイのブロックをデータ又はパリティを保持するように自由に指定するとともに、各ストライプが2つのパリティブロックを有するという別の性質を維持するためにも使用される場合がある。
また、アレイ500において、パリティセットへのブロックの参加は回転対称でもある。冗長ディスクとして任意の2台のディスクを選択することができ、その選択は行ごとに異なるものであってよい。通常の完全なストライプ書き込み処理の間にパリティを構築し、2台の失われたディスクから復元するためには、全く同じアルゴリズムが必要とされ、同じコンピュータ命令コードを使用することができる。
図6は、本発明の一様で対称な二重故障訂正パリティアレイにおけるデータを計算する構築プロセスに関する一連のステップを示すフロー図である。構築プロセスは例えば、新規のSRDパリティ技術を使用して、RAIDシステム270によって実施される。シーケンスはステップ600から始まり、ステップ602へ進み、そこでRAIDシステムは、パリティ情報を記憶するために、ストライプ内の2台のディスクを選択する。ステップ604においてシステムは、一方のパリティディスクにおける1つのブロックであって、他方のパリティディスクからのブロックを含む対角パリティセット(対角)に属していないブロックを選択する。ステップ606において、RAIDシステムは、ブロックの対角の不変性(例えば、ゼロパリティ)を確立するために必要となる選択されたブロックの内容を計算し、計算した内容を選択されたブロックに記憶する。
ステップ608においてシステムは、前回計算した選択されたブロックと同じ行にある他方のパリティディスクにおけるブロックの内容を、その行の不変性を確立するために計算し、計算した内容をそのブロックに記憶する。ステップ610では、新たなブロックの内容を計算する処理を各パリティディスクに対して交互に実施し、例えば、対角パリティ計算及びそれに続く行パリティ計算の反復を使用して(「ジグザグ」状に)、パリティ不変性を確立する。なお、各反復は、一方のパリティディスク上のブロックであって、最後に計算された行パリティブロックと同じ対角上にあるブロックから開始される。ステップ612では、各パリティディスク上の全てのブロックが計算されたか否かに関する判定を行う。まだであれば、シーケンスはステップ610へ戻る。そうでなければ、シーケンスはステップ614において終了する。
一様で対称な二重故障訂正技術がRDパリティとは違う部分は、単一ディスク故障からの復旧にある。この新規な技術では、行パリティが全てのディスクを保護するため、失われたディスクは常に、行パリティを使用して復旧させることができる。RDパリティでは、対角パリティディスクが行パリティによって保護されない。そのため、対角パリティディスクの復旧は、対角パリティの再計算によって行われる。なお、この一様で対称な技術は、対角パリティディスクの喪失に関する特殊なケースを必要としないので、RDパリティに比べて、その実施が単純である。
2台のディスクは、2台のディスク故障からの復旧を可能にするために必要となる最小の冗長度である。従って、本明細書に記載した一様で対称な二重故障訂正技術は、記憶される冗長(パリティ)情報の量が最適である。一様で対称な二重故障訂正アレイ内のディスクはいずれも、ストライプ内の冗長情報の記憶に使用することができる。なぜなら、一様で対称なパリティアルゴリズム(例えば、SRDアルゴリズム)は、アレイ内の2以下のディスク故障からの復旧が可能であるからである。従って、SRDアルゴリズムは、アルゴリズムが、種々のパリティ分散技術を有利に使用できるように、一様性に関する全ての性質を備えている。そうしたパリティ分散技術には例えば、「Dynamic Parity Distribution Technique」と題する米国特許出願第(112056-143)及び「Semi-Static Distribution Technique」と題する米国特許出願第(112056-172)号にそれぞれ記載されている動的分散、及び/又は、準静的分散などがある。
本発明の特徴は、二重故障訂正(SRD)パリティ技術/アルゴリズムの一様な性質を使用していることにある。ここで、一様性とは、冗長計算にとって無意味な冗長(XOR)計算の不変性に関するディスクの役割として定義される。ディスクアレイを検査するときに、何らかのディスクの役割が何であるか、また、何らかの所与のストライプのためのものであるかを(ディスク上に記憶された値に基づいて)知る方法はない。判定できるのは、ある行内の全てのブロックを加算するとゼロになることだけであり、対角パリティセットの場合は、行および対角の全てのブロックを加算するとゼロになることだけである。
パリティディスクの任意の選択のために同じパリティ構成アルゴリズムが使用されるため、パリティ構成のパフォーマンスは、特定のストライプにおいてパリティを記憶するために選択されるディスクとは無関係に一様である。これが当てはまらないのは、アルゴリズムが一様な性質の使用を欠き、「データ」が「パリティ」ブロックの一部に記憶され、アルゴリズムの「復元」方法を使用して冗長ブロックが復元され、その冗長ブロックが、アルゴリズムの観点からデータブロックのように働きをする場合である。そのような技術も可能であり、何らかの故障訂正アルゴリズムを使用して適用可能ではあるが、異なるディスク上の異なるストライプに冗長情報を構築する際に、一様な性能を提供しない可能性がある。一様なアルゴリズムは、パリティを記憶するためにどのディスクが選択されるかに関わらず、一様な性能を提供することができ、その結果、それらのディスクのアルゴリズム的な役割に基づいて何らかの特定のディスクにパリティディスクの選択が偏ることがないという利点がある。本発明の他の(特に、準静的分散技術に適用する場合の)利点は、データを動かすことなく、ブロックの役割を再割当てすることにより、負荷のバランスをとったり、ディスクをアレイに追加したりすることができる点にある。パリティの動的分散とは、アレイ内のどこにあるブロックにでも自由にパリティを書き込める(配置する)ことができることを言う。
アレイ内の2台のディスク故障に対する保護を提供する一様で対称な二重故障訂正技術の例示的実施形態について図示説明してきたが、本発明の思想及び範囲から外れることなく、種々の変更及び改変を行うことが可能であるものと考えられる。例えば、代替実施形態において、本発明は、例えば、長い遅延を持つリンク(例えば、衛星リンク)を介したデータのマルチキャスト分散を可能にするフォワード・エラー・コレクション技術のような通信の分野にも使用することが可能である。この実施形態の場合、データや冗長情報は、電気通信媒体(ネットワーク)を介した伝送に適したパケットや情報単位のような要素に電分割される場合がある。
また、当業者には明らかなように、本明細書に記載した本発明の一様で対称な故障訂正技術は、スタンドアロンのコンピュータやその一部を含めて、ストレージシステム200として実施される、又は、ストレージシステム200を含む、どのようなタイプの特殊目的のコンピュータ(例えば、ファイルサーバやマルチプロトコル・ストレージ・アプライアンス)又は汎用コンピュータにも適用することができる。本発明と共に使用するのに都合がよいマルチプロトコル・ストレージ・アプライアンスの一例は、2002年8月8日に出願された「Multi-Protocol Storage appliance that provides Integrated Support for File and Block Access Protcols」と題する米国特許出願第10/212,917号に記載されている。また、本発明の教示は、限定はしないが、ネットワーク・アタッチド・ストレージ環境、ストレージ・エリア・ネットワーク、及び、クライアントコンピュータやホストコンピュータに直接接続されたディスクアセンブリといった、種々のストレージシステムアーキテクチャに適用することが可能である。従って、「ストレージシステム」という用語は、ストレージ機能を実施するように構成され、他の装置又はシステムに接続された任意のサブシステムの他に、そのような構成も含むものとして広く解釈しなければならない。
上記の説明は、本発明の特定の幾つかの実施形態に関するものである。しかしながら、当然ながら、記載した実施形態に対して、その利点の一部又は全部を獲得しながらも、他の変更および改変を施すことが可能である。例えば、本発明は、2以上のRAIDグループを有するアレイを備えたストレージシステムであって、RAIDグループのうちの1以上が、一様で対称な二重故障訂正技術を使用して、それらのRAIDグループのうちのいずれか1つにおける2以下の故障に対する保護を提供するようなストレージシステムに対して適用することもできる。ここで、各RAIDグループはp個のディスクを含み、pは3以上の素数であり、pの値はグループによって異なるものであってよい。更に、当然ながら、本発明の教示は、コンピュータ上で実行されるプログラム命令を含むコンピュータ読取可能媒体を含むソフトウェア、ハードウェア、ファームウェア、又は、それらの組み合わせのいずれとして実施してもよいものと考えられる。従って、本明細書の説明は、例として解釈すべきものであり、本発明の範囲を制限するものとして解釈してはならない。従って、添付の特許請求の範囲の目的は、そうした改変や変更も、本発明の思想及び範囲に含めることにある。
行−対角(RD)パリティ配置に従って構成されたディスクアレイを示す略ブロック図である。 本発明と共に使用するのに都合がよいストレージシステムを示す略ブロック図である。 本発明による一様で対称な二重故障訂正パリティアレイを示す略ブロック図である。 本発明の一様で対称な二重故障訂正パリティアレイにおける2台のディスク故障に応答して、失われたデータを復元する復元プロセスに関する一連のステップを示すフロー図である。 本発明による一様で対称な二重故障訂正パリティアレイの他の実施形態を示す略ブロック図である。 本発明の一様で対称な二重故障訂正パリティアレイにおけるデータを計算する構成プロセスに関する一連のステップを示すフロー図である。

Claims (63)

  1. ストレージシステム内の2以下のストレージデバイスの二重故障訂正を提供するように構成されたシステムであって、
    多数のストレージデバイスを有するアレイであって、前記ストレージデバイスの数がpであり、pが3以上の素数であり、前記ストレージデバイスが、冗長情報を記憶するために選択された2つのストレージデバイスを含み、残りのストレージデバイスがデータを記憶するように構成される、多数のストレージデバイスを有するアレイと、
    前記ストレージデバイスのストレージモジュールであって、前記アレイの行パリティセット(行)及び対角パリティセット(対角)に沿って合計または結合計算を含む冗長ストレージアルゴリズムを使用して、冗長情報を構成し、選択されたストレージデバイス上に記憶するように構成された、前記ストレージデバイスのストレージモジュールと
    を含み、前記2以下のストレージデバイス故障の構成に使用される前記冗長ストレージアルゴリズムは、前記冗長情報又はデータを構成又は再構成するときに、どのストレージデバイスが故障しても、また、ストレージデバイスの役割が何であっても無関係に同じである、システム。
  2. 前記冗長情報は対角と行の両方に沿って構成され、選択されたストレージデバイス上に記憶され、選択されたストレージデバイスの中に、対角情報だけを有するストレージデバイスや、行冗長情報だけを有するストレージデバイスがないように構成される、請求項1に記載のシステム。
  3. 前記選択されたストレージデバイスに記憶される冗長情報は、該冗長情報が、行パリティ計算貢献度、及び、対角パリティ計算貢献度によって一意に決まるように相互作用する、請求項2に記載のシステム。
  4. 前記ストレージデバイスはストライプに分割された記憶空間を有し、冗長情報を記憶するために任意の2つのストレージデバイスが選択され、前記選択されるストレージデバイスはストライプごとに自由に異なる、請求項1に記載のシステム。
  5. 前記ストレージモジュールはディスクアレイコントローラである、請求項4に記載のシステム。
  6. 前記ストレージモジュールはRAIDシステムである、請求項4に記載のシステム。
  7. 1以上のビット幅であるビットフィールドにわたって、前記行と対角が、線形結合アルゴリズムを使用して結合される、請求項6に記載のシステム。
  8. 前記冗長情報は、各対角及び各行が既知のパリティ値を有することを保証するものである、請求項7に記載のシステム。
  9. 前記アレイ内の前記ストレージデバイスの役割は、任意の2つの故障したストレージデバイスの内容の計算に関して無関係である、請求項7に記載のシステム。
  10. 前記ストレージデバイスは、ビデオテープ、磁気テープ、光学的、DVD、バブルメモリ、磁気ディスク、電気的ランダムアクセスメモリ、及び、微小電気機械ストレージデバイスのうちのいずれか1つである、請求項9に記載のシステム。
  11. 前記ストレージデバイスは、情報をデータブロックとパリティブロックに記憶するように構成された媒体である、請求項9に記載のシステム。
  12. 前記アレイは2以上のRAIDグループを有し、1以上のRAIDグループが、前記RAIDグループのうちのいずれか1つにおける2以下の故障に対する保護を提供する冗長ストレージアルゴリズムを使用し、各RAIDグループはp個のストレージデバイスを含み、pは3以上の素数であり、pの値はグループごとに異なるものであってよい、請求項11に記載のシステム。
  13. p個全てのストレージデバイスが前記アレイ内に存在するのではなく、存在しないストレージデバイスの内容は、所定の固定値を有する、請求項12に記載のシステム。
  14. p個全てのストレージデバイスが前記アレイ内に存在するのではなく、存在しないストレージデバイスの内容は、所定の固定値を有する、請求項1に記載のシステム。
  15. ストレージシステム内の2以下のストレージデバイスの二重故障訂正を提供するように構成されたシステムであって、
    多数のストレージデバイスを有するアレイであって、前記ストレージデバイスの数がpであり、pが3以上の素数であり、前記ストレージデバイスが、冗長情報を記憶するために選択された2つのストレージデバイスを含み、残りのストレージデバイスはデータを記憶するように構成される、多数のストレージデバイスを有するアレイと、
    前記ストレージデバイスのストレージモジュールであって、前記アレイの行パリティセット(行)及び対角パリティセット(対角)に沿って合計または結合計算を含む冗長ストレージアルゴリズムを使用して、冗長情報を構成し、選択されたストレージデバイス上に記憶するように構成され、更に、前記冗長ストレージアルゴリズムを使用して、2以下のストレージデバイス故障を復元するように構成される、前記ストレージデバイスのストレージモジュールと、
    を含み、前記ストレージデバイスは、ストライプに分割された記憶空間を有し、任意の2つのストレージデバイスが、前記冗長情報を記憶するために選択され、該選択されるストレージデバイスはストライプごとに自由に異なり、前記2以下のストレージデバイス故障が、それらのデバイスの役割や、アレイ内の他のストレージデバイスに関する知識を何も必要とせずに復元される、システム。
  16. 前記冗長情報は対角と行の両方に沿って構成され、選択されたストレージデバイス上に記憶され、選択されたストレージデバイスの中に、対角情報だけを有するストレージデバイスや、行冗長情報だけを有するストレージデバイスがないように構成される、請求項15に記載のシステム。
  17. 前記選択されたストレージデバイスに記憶される冗長情報は、該冗長情報が、行パリティ計算貢献度、及び、対角パリティ計算貢献度によって一意に決まるように相互作用する、請求項16に記載のシステム。
  18. 前記ストレージモジュールはディスクアレイコントローラである、請求項15に記載のシステム。
  19. 前記ストレージモジュールはRAIDシステムである、請求項15に記載のシステム。
  20. 1以上のビット幅であるビットフィールドにわたって、前記行と対角が、線形結合アルゴリズムを使用して結合され、前記冗長情報は、各対角及び各行が既知のパリティ値を有することを保証するものである、請求項19に記載のシステム。
  21. 前記アレイは、対称な行−対角(SRD)パリティアレイである、請求項20に記載のシステム。
  22. 前記アレイ内の前記ストレージデバイスの役割は、任意の2つの故障したストレージデバイスの内容の計算に関して無関係である、請求項20に記載のシステム。
  23. 前記ストレージデバイスは、ビデオテープ、磁気テープ、光学的、DVD、バブルメモリ、磁気ディスク、電気的ランダムアクセスメモリ、及び、微小電気機械ストレージデバイスのうちのいずれか1つである、請求項22に記載のシステム。
  24. 前記ストレージデバイスは、情報をデータブロックとパリティブロックに記憶するように構成された媒体である、請求項22に記載のシステム。
  25. 前記アレイは2以上のRAIDグループを有し、1以上のRAIDグループが、前記RAIDグループのうちのいずれか1つにおける2以下の故障に対する保護を提供する冗長ストレージアルゴリズムを使用し、各RAIDグループはp個のストレージデバイスを含み、pは3以上の素数であり、pの値はグループごとに異なるものであってよい、請求項24に記載のシステム。
  26. p個全てのストレージデバイスが前記アレイ内に存在するのではなく、存在しないストレージデバイスの内容はゼロである、請求項25に記載のシステム。
  27. p個全てのストレージデバイスが前記アレイ内に存在するのではなく、存在しないストレージデバイスの内容は所定の固定値を有する、請求項15に記載のシステム。
  28. ストレージシステム内の2以下のディスク故障に対する保護を提供する方法であって、
    多数のディスクを有するアレイを提供するステップであって、該ディスクの数がpであり、pが3以上の素数であり、前記ディスクが、冗長情報を記憶するために選択された2つのディスクを含み、残りのディスクがデータを記憶するように構成される、多数のディスクを有するアレイを提供するステップと、
    前記アレイの行パリティセット(行)及び対角パリティセット(対角)に沿った合計及び結合の計算により、前記冗長を計算するステップと、
    計算された冗長情報を前記選択されたディスクに記憶するステップと
    からなる方法。
  29. 前記計算するステップは、前記冗長情報を対角と行の両方に沿って計算し、選択されたストレージデバイス上に記憶するステップを含み、前記冗長情報は、選択されたストレージデバイスの中に対角情報だけを有するストレージデバイスや、行冗長情報だけを有するストレージデバイスがないように記憶される、請求項28に記載の方法。
  30. 前記計算するステップは、前記アレイの行に沿って行パリティを計算し、前記アレイの対角に沿って対角パリティを計算するステップを更に含み、前記冗長情報は、各対角及び各行が既知のパリティ値を有することを保証する、請求項29に記載の方法。
  31. 前記計算するステップは、排他的論理和演算計算を使用して前記冗長情報を計算するステップを更に含む、請求項30に記載の方法。
  32. 前記アレイ内のディスクの役割は、任意の2つの故障したストレージデバイスの内容の計算に関して無関係である、請求項31に記載の方法。
  33. 前記計算するステップは、1以上のビット幅であるビットフィールドにわたる加算により計算するステップを更に含む、請求項28に記載の方法。
  34. 各ディスクをブロックに分割するステップと、
    各ディスクにおいて前記ブロックを、各ストライプがp−1行のブロックを含む同数のブロックを記憶するストライプに編成するステップと、
    前記ブロックの役割を自由に割り当て、それによって、前記アレイ全体にわたるデータロードのバランスをとることを可能にするステップと
    を更に含む、請求項28に記載の方法。
  35. 前記データロードのバランスをとり、又は、前記アレイにディスクを追加するために、データを移動させることなくディスクの役割を再割当てするステップを更に含む、請求項34に記載の方法。
  36. 各ディスクから自由に選択された1以上ブロックから行を構成するステップを更に含む、請求項34に記載の方法。
  37. p−1が2の累乗であるときに、ブロックの行を結合し、より大きなブロックからなる単一のストライプを形成するステップを更に含む、請求項34に記載の方法。
  38. 初期化されたディスクを前記アレイに追加するステップと、
    前記初期化されたディスク上のブロックをデータ又は冗長情報の記憶に指定し、同時に、各ストライプにおける2つのブロックに冗長情報が記憶されることを保証するステップと
    を更に含む、請求項34に記載の方法。
  39. 前記初期化されたディスクの内容は、失われたディスクの補完された内容に一致し、前記アレイ内の前記冗長情報は再計算を必要としないように構成される、請求項38に記載の方法。
  40. 前記初期化されたディスクの内容はゼロである、請求項39に記載の方法。
  41. 前記ディスクはストライプに分割されたディスク空間を有し、前記冗長情報を記憶するために任意の2つのディスクを選択するステップを更に含み、該選択されるディスクはストライプごとに自由に異なる、請求項28に記載の方法。
  42. m>=pとして前記ディスクに0からm−1までの番号が付けられていて、ディスクjがディスク(j+k)モジューロmになり、前記冗長情報の計算や該計算の結果が変化しないように、前記ディスクを量kだけ回転させることにより、前記ディスクに番号を付け直すステップを更に含む、請求項28に記載の方法。
  43. ストレージシステム内の2以下のストレージデバイスの二重故障訂正を提供するように構成されたシステムであって、
    多数のストレージデバイスを有するアレイであって、前記ストレージデバイスの数がpであり、pが3以上の素数であり、前記ストレージデバイスが、冗長情報を記憶するために選択された2つのストレージデバイスを含み、残りのストレージデバイスはデータを記憶するように構成される、多数のストレージデバイスを有するアレイと、
    前記ストレージデバイスのストレージモジュールであって、前記アレイの行パリティセット(行)及び対角パリティセット(対角)に沿って合計または結合計算を含む冗長ストレージアルゴリズムを使用して、冗長情報を構成し、選択されたストレージデバイス上に記憶するように構成され、更に、どのストレージデバイスが故障したか、及び、ストレージデバイスが冗長情報を記憶しているかそれともデータを記憶しているかに関わらず、前記冗長ストレージアルゴリズムを使用して、2以下のストレージデバイス故障を復元するように構成される、前記ストレージデバイスのストレージモジュールと、
    を含み、前記ストレージデバイスは、ストライプに分割された記憶空間を有し、任意の2つのストレージデバイスが、前記冗長情報を記憶するために選択され、該選択されるストレージデバイスはストライプごとに自由に異なり、前記2以下のストレージデバイス故障が、それらのデバイスの役割や、アレイ内の他のストレージデバイスに関する知識を何も必要とせずに復元される、システム。
  44. 前記冗長情報は対角と行の両方に沿って構成され、選択されたストレージデバイス上に記憶され、選択されたストレージデバイスの中に、対角情報だけを有するストレージデバイスや、行冗長情報だけを有するストレージデバイスがないように構成される、請求項43に記載のシステム。
  45. 前記選択されたストレージデバイスに記憶される冗長情報は、該冗長情報が、行パリティ計算貢献度、及び、対角パリティ計算貢献度によって一意に決まるように相互作用する、請求項44に記載のシステム。
  46. 各ストレージデバイスがブロックに分割され、各ディスクにおいて、前記ブロックは同数のブロックを有するストライプに編成される、請求項44に記載のシステム。
  47. p−1行のセット内においてiをブロックのディスク番号とし、jをそのブロックの行番号としたときに、各対角dはd=(i+j)モジューロpである、請求項46に記載のシステム。
  48. p−1行のセット内においてiをブロックのディスク番号とし、jをそのブロックの行番号としたときに、各対角dはd=(i−j)モジューロpである、請求項46に記載のシステム。
  49. p−1行のセット内においてiをブロックのディスク番号とし、jをそのブロックの行番号とし、kを固定の整数とし、k≠0とし、−p<k<pとしたときに、各対角dはd=(i+kj)モジューロpである、請求項46に記載のシステム。
  50. 一連のブロックが1つのチェーンとして編成され、該チェーン内の全てのブロックが2つのストレージデバイスに属し、該チェーンの両端にある2つのブロックが、異なるストレージデバイス上にあり、且つ、該チェーン上の最も近い近傍ブロックと同じ行にあり、該チェーン内の他のブロックは全て、該チェーン内のもう1つのブロックと同じ行にあり、且つ、該チェーン内のもう1つのブロックと同じ対角上にある、請求項46に記載のシステム。
  51. 前記ストレージモジュールはディスクアレイコントローラである、請求項43に記載のシステム。
  52. 前記ストレージモジュールはRAIDシステムである、請求項43に記載のシステム。
  53. 1以上のビット幅であるビットフィールドにわたって、前記行と対角が、線形結合アルゴリズムを使用して結合され、前記冗長情報は、各対角及び各行が既知のパリティ値を有することを保証するものである、請求項52に記載のシステム。
  54. 前記アレイは、一様で対称な行−対角(SRD)パリティアレイである、請求項53に記載のシステム。
  55. 前記アレイ内の前記ストレージデバイスの役割は、任意の2つの故障したストレージデバイスの内容の計算に関して無関係である、請求項53に記載のシステム。
  56. 前記ストレージデバイスは、ビデオテープ、磁気テープ、光学的、DVD、バブルメモリ、磁気ディスク、電気的ランダムアクセスメモリ、及び、微小電気機械ストレージデバイスのうちのいずれか1つである、請求項55に記載のシステム。
  57. 前記ストレージデバイスは、情報をデータブロックとパリティブロックに記憶するように構成された媒体である、請求項55に記載のシステム。
  58. 前記アレイは2以上のRAIDグループを有し、1以上のRAIDグループが、前記RAIDグループのうちのいずれか1つにおける2以下の故障に対する保護を提供する冗長ストレージアルゴリズムを使用し、各RAIDグループはp個のストレージデバイスを含み、pは3以上の素数であり、pの値はグループごとに異なるものであってよい、請求項57に記載のシステム。
  59. p個全てのストレージデバイスが前記アレイ内に存在するのではなく、存在しないストレージデバイスの内容はゼロである、請求項58に記載のシステム。
  60. p個全てのストレージデバイスが前記アレイ内に存在するのではなく、存在しないストレージデバイスの内容は所定の固定値を有する、請求項43に記載のシステム。
  61. ストレージシステムにおける2以下のディスク故障に対する保護を提供する装置であって、
    多数のディスクを有するアレイを提供する手段であって、該ディスクの数がpであり、pが3以上の素数であり、前記ディスクが、冗長情報を記憶するために選択された2つのディスクを含み、残りのディスクがデータを記憶するように構成される、多数のディスクを有するアレイを提供する手段と、
    対角パリティ計算貢献度と行パリティ計算貢献度の両方から前記冗長情報を計算する手段と、
    選択されたディスクの中に、対角パリティ情報だけを有するものや、行パリティ情報だけを有するものがないようにして、計算された前記冗長情報を前記選択されたディスクに記憶する手段と
    からなる装置。
  62. 前記ディスクはストライプに分割されたディスク空間を有し、前記冗長情報を記憶するために任意の2つのディスクを選択する手段を更に含み、選択される前記ディスクはストライプごとに異なるように選択される、請求項61に記載の装置。
  63. 通信媒体を介して伝送するために構成されたデータ内の二重故障を訂正する方法であって、
    前記通信媒体を介して伝送するために、前記データをパケットに分割するステップと、
    前記パケットを1以上のグループに編成するステップであって、該グループが、一様で対称な二重故障訂正アルゴリズムを使用して、前記グループのうちのいずれか1つにおけるパケットの2以下の故障に対する保護を提供するように構成され、各グループがp個のパケットを含み、pが3以上の素数であり、pの値がグループごとに異なる場合があり、冗長情報を記憶するために各グループの2つのパケットが選択され、該グループの残りのパケットがデータを記憶するように構成される、前記パケットを1以上のグループに編成するステップと、
    前記グループの行パリティセット(行)と対角パリティセット(対角)の合計又は結合計算により前記冗長情報を計算するステップと、
    計算された前記冗長情報を選択された前記パケットに記憶するステップと
    からなる方法。
JP2006541699A 2003-11-24 2004-11-24 ディスクアレイ内の2つのディスク故障に対する保護を提供する一様で対称な二重故障訂正技術 Pending JP2007524930A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/720,361 US7263629B2 (en) 2003-11-24 2003-11-24 Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array
PCT/US2004/039518 WO2005052855A2 (en) 2003-11-24 2004-11-24 Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array

Publications (1)

Publication Number Publication Date
JP2007524930A true JP2007524930A (ja) 2007-08-30

Family

ID=34591529

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006541699A Pending JP2007524930A (ja) 2003-11-24 2004-11-24 ディスクアレイ内の2つのディスク故障に対する保護を提供する一様で対称な二重故障訂正技術

Country Status (4)

Country Link
US (2) US7263629B2 (ja)
EP (1) EP1695271A2 (ja)
JP (1) JP2007524930A (ja)
WO (1) WO2005052855A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007206901A (ja) * 2006-01-31 2007-08-16 Toshiba Corp 情報処理装置、raidコントローラおよび情報処理装置のディスク制御方法
JP2010508604A (ja) * 2006-10-31 2010-03-18 ネットアップ,インコーポレイテッド ストレージシステムにおける書き込み処理を最適化するためのシステム、及び方法
JP2014511158A (ja) * 2011-02-28 2014-05-12 インターナショナル・ビジネス・マシーンズ・コーポレーション ストレージ・アレイにデータを保管するための方法、システム、およびコンピュータ・プログラム、ならびにストレージ・アレイ内の消去を訂正するための方法およびコンピュータ・プログラム

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7552357B2 (en) * 2005-04-29 2009-06-23 Network Appliance, Inc. Lost writes detection in a redundancy group based on RAID with multiple parity
US7577866B1 (en) * 2005-06-27 2009-08-18 Emc Corporation Techniques for fault tolerant data storage
US7934120B2 (en) * 2006-09-11 2011-04-26 International Business Machines Corporation Storing data redundantly
US20080104445A1 (en) * 2006-10-31 2008-05-01 Hewlett-Packard Development Company, L.P. Raid array
JP2008217395A (ja) * 2007-03-05 2008-09-18 Nec Corp ディスクアレイ装置
WO2009004806A1 (ja) * 2007-07-04 2009-01-08 Panasonic Corporation 映像記録再生装置およびその方法
US20090055451A1 (en) * 2007-08-17 2009-02-26 Clay Andre Reimer Systems and Methods For Providing Redundant Data Storage
US20090113235A1 (en) * 2007-10-30 2009-04-30 Selinger Robert D Raid with redundant parity
US8335966B1 (en) * 2008-08-01 2012-12-18 Dell Products L.P. Dual parity RAID wherein no more than N+1 data symbols contribute to any parity symbol
US9495246B2 (en) * 2013-01-21 2016-11-15 Kaminario Technologies Ltd. Raid erasure code applied to partitioned stripe
US9397703B2 (en) 2013-12-04 2016-07-19 Seagate Technology Llc Adaptive read error recovery for memory devices
US9436394B2 (en) * 2014-03-10 2016-09-06 Kaminario Technologies Ltd. RAID random distribution scheme
CN107748702B (zh) * 2015-06-04 2021-05-04 华为技术有限公司 一种数据恢复方法和装置
US10063261B1 (en) * 2015-10-13 2018-08-28 Sorenson Ip Holdings Llc Communication endpoints and related methods for forward error correction of packetized data
US10263643B2 (en) * 2017-04-05 2019-04-16 Alibaba Group Holding Limited Method and system of multi-fold data protection for high-density storage appliance with improved availability and robustness
US10776202B1 (en) * 2017-09-22 2020-09-15 Pure Storage, Inc. Drive, blade, or data shard decommission via RAID geometry shrinkage
CN109496292B (zh) * 2018-10-16 2022-02-22 深圳市锐明技术股份有限公司 一种磁盘管理方法、磁盘管理装置及电子设备
WO2021012164A1 (zh) * 2019-07-22 2021-01-28 华为技术有限公司 数据重构的方法、装置、计算机设备、存储介质及系统

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US34100A (en) * 1862-01-07 Improved step-ladder
US3876978A (en) 1973-06-04 1975-04-08 Ibm Archival data protection
US4092732A (en) 1977-05-31 1978-05-30 International Business Machines Corporation System for recovering data stored in failed memory unit
US4201976A (en) 1977-12-23 1980-05-06 International Business Machines Corporation Plural channel error correcting methods and means using adaptive reallocation of redundant channels among groups of channels
US4205324A (en) 1977-12-23 1980-05-27 International Business Machines Corporation Methods and means for simultaneously correcting several channels in error in a parallel multi channel data system using continuously modifiable syndromes and selective generation of internal channel pointers
JPS5637883A (en) 1979-09-04 1981-04-11 Fanuc Ltd Information rewrite system
US4467421A (en) 1979-10-18 1984-08-21 Storage Technology Corporation Virtual storage system and method
US4375100A (en) 1979-10-24 1983-02-22 Matsushita Electric Industrial Company, Limited Method and apparatus for encoding low redundancy check words from source data
US4825403A (en) 1983-05-16 1989-04-25 Data General Corporation Apparatus guaranteeing that a controller in a disk drive system receives at least some data from an invalid track sector
JPS60142418A (ja) 1983-12-28 1985-07-27 Hitachi Ltd 入出力エラ−回復方式
FR2561428B1 (fr) 1984-03-16 1986-09-12 Bull Sa Procede d'enregistrement dans une memoire a disques et systeme de memoire a disques
US4667326A (en) 1984-12-20 1987-05-19 Advanced Micro Devices, Inc. Method and apparatus for error detection and correction in systems comprising floppy and/or hard disk drives
US5202979A (en) 1985-05-08 1993-04-13 Thinking Machines Corporation Storage system using multiple independently mechanically-driven storage units
US4722085A (en) 1986-02-03 1988-01-26 Unisys Corp. High capacity disk storage system having unusually high fault tolerance level and bandpass
JPH0675329B2 (ja) 1986-02-18 1994-09-21 ソニー株式会社 ディスクプレーヤ
US4761785B1 (en) 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
USRE34100E (en) 1987-01-12 1992-10-13 Seagate Technology, Inc. Data error correction system
US4775978A (en) 1987-01-12 1988-10-04 Magnetic Peripherals Inc. Data error correction system
US4796260A (en) 1987-03-30 1989-01-03 Scs Telecom, Inc. Schilling-Manela forward error correction and detection code method and apparatus
US5257367A (en) 1987-06-02 1993-10-26 Cab-Tek, Inc. Data storage system with asynchronous host operating system communication link
US4849974A (en) 1987-08-03 1989-07-18 Scs Telecom, Inc. PASM and TASM forward error correction and detection code method and apparatus
US4849976A (en) 1987-08-03 1989-07-18 Scs Telecom, Inc. PASM and TASM forward error correction and detection code method and apparatus
US4837680A (en) 1987-08-28 1989-06-06 International Business Machines Corporation Controlling asynchronously operating peripherals
US4870643A (en) 1987-11-06 1989-09-26 Micropolis Corporation Parallel drive array storage system
US4847842A (en) 1987-11-19 1989-07-11 Scs Telecom, Inc. SM codec method and apparatus
US4899342A (en) 1988-02-01 1990-02-06 Thinking Machines Corporation Method and apparatus for operating multi-unit array of memories
US4879929A (en) * 1988-06-06 1989-11-14 Roth Alfred C Tapper/threader assembly
US5077736A (en) 1988-06-28 1991-12-31 Storage Technology Corporation Disk drive memory
US4989206A (en) 1988-06-28 1991-01-29 Storage Technology Corporation Disk drive memory
US4989205A (en) 1988-06-28 1991-01-29 Storage Technology Corporation Disk drive memory
US5128810A (en) 1988-08-02 1992-07-07 Cray Research, Inc. Single disk emulation interface for an array of synchronous spindle disk drives
US5218689A (en) 1988-08-16 1993-06-08 Cray Research, Inc. Single disk emulation interface for an array of asynchronously operating disk drives
US5148432A (en) 1988-11-14 1992-09-15 Array Technology Corporation Arrayed disk drive system and method
US5163131A (en) 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5101492A (en) 1989-11-03 1992-03-31 Compaq Computer Corporation Data redundancy and recovery protection
US5233618A (en) 1990-03-02 1993-08-03 Micro Technology, Inc. Data correcting applicable to redundant arrays of independent disks
US5088081A (en) 1990-03-28 1992-02-11 Prime Computer, Inc. Method and apparatus for improved disk access
US5166936A (en) 1990-07-20 1992-11-24 Compaq Computer Corporation Automatic hard disk bad sector remapping
US5210860A (en) 1990-07-20 1993-05-11 Compaq Computer Corporation Intelligent disk array controller
US5208813A (en) 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
US5235601A (en) 1990-12-21 1993-08-10 Array Technology Corporation On-line restoration of redundancy information in a redundant array system
US5274799A (en) 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
US5579475A (en) 1991-02-11 1996-11-26 International Business Machines Corporation Method and means for encoding and rebuilding the data contents of up to two unavailable DASDS in a DASD array using simple non-recursive diagonal and row parity
US5271012A (en) * 1991-02-11 1993-12-14 International Business Machines Corporation Method and means for encoding and rebuilding data contents of up to two unavailable DASDs in an array of DASDs
US5179704A (en) 1991-03-13 1993-01-12 Ncr Corporation Method and apparatus for generating disk array interrupt signals
EP0519669A3 (en) 1991-06-21 1994-07-06 Ibm Encoding and rebuilding data for a dasd array
US5237658A (en) 1991-10-01 1993-08-17 Tandem Computers Incorporated Linear and orthogonal expansion of array storage in multiprocessor computing systems
US5305326A (en) 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays
US5410667A (en) 1992-04-17 1995-04-25 Storage Technology Corporation Data record copy system for a disk drive array data storage subsystem
US5537567A (en) 1994-03-14 1996-07-16 International Business Machines Corporation Parity block configuration in an array of storage devices
US5623595A (en) 1994-09-26 1997-04-22 Oracle Corporation Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system
US5812753A (en) 1995-10-13 1998-09-22 Eccs, Inc. Method for initializing or reconstructing data consistency within an array of storage elements
US5862158A (en) 1995-11-08 1999-01-19 International Business Machines Corporation Efficient method for providing fault tolerance against double device failures in multiple device systems
US5884098A (en) 1996-04-18 1999-03-16 Emc Corporation RAID controller system utilizing front end and back end caching systems including communication path connecting two caching systems and synchronizing allocation of blocks in caching systems
US5805788A (en) 1996-05-20 1998-09-08 Cray Research, Inc. Raid-5 parity generation and data reconstruction
KR100267366B1 (en) 1997-07-15 2000-10-16 Samsung Electronics Co Ltd Method for recoding parity and restoring data of failed disks in an external storage subsystem and apparatus therefor
US6092215A (en) 1997-09-29 2000-07-18 International Business Machines Corporation System and method for reconstructing data in a storage array system
JP3616487B2 (ja) 1997-11-21 2005-02-02 アルプス電気株式会社 ディスクアレイ装置
US6138201A (en) 1998-04-15 2000-10-24 Sony Corporation Redundant array of inexpensive tape drives using data compression and data allocation ratios
US7093182B2 (en) * 1999-08-02 2006-08-15 Inostor Corporation Data redundancy methods and apparatus
US6532548B1 (en) 1999-09-21 2003-03-11 Storage Technology Corporation System and method for handling temporary errors on a redundant array of independent tapes (RAIT)
US6338126B1 (en) * 1999-12-06 2002-01-08 Legato Systems, Inc. Crash recovery without complete remirror
US6581185B1 (en) 2000-01-24 2003-06-17 Storage Technology Corporation Apparatus and method for reconstructing data using cross-parity stripes on storage media
US6993701B2 (en) * 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
US7058850B2 (en) * 2002-07-31 2006-06-06 Hewlett-Packard Development Company, L.P. Method and system for preventing data loss within disk-array pairs supporting mirrored logical units
JP2004259079A (ja) * 2003-02-27 2004-09-16 Hitachi Ltd データ処理システム
US6996502B2 (en) * 2004-01-20 2006-02-07 International Business Machines Corporation Remote enterprise management of high availability systems
US8233384B2 (en) * 2005-12-21 2012-07-31 Rockstar Bidco, LP Geographic redundancy in communication networks

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007206901A (ja) * 2006-01-31 2007-08-16 Toshiba Corp 情報処理装置、raidコントローラおよび情報処理装置のディスク制御方法
JP4630828B2 (ja) * 2006-01-31 2011-02-09 株式会社東芝 情報処理装置、raidコントローラおよび情報処理装置のディスク制御方法
JP2010508604A (ja) * 2006-10-31 2010-03-18 ネットアップ,インコーポレイテッド ストレージシステムにおける書き込み処理を最適化するためのシステム、及び方法
JP2014511158A (ja) * 2011-02-28 2014-05-12 インターナショナル・ビジネス・マシーンズ・コーポレーション ストレージ・アレイにデータを保管するための方法、システム、およびコンピュータ・プログラム、ならびにストレージ・アレイ内の消去を訂正するための方法およびコンピュータ・プログラム

Also Published As

Publication number Publication date
WO2005052855A2 (en) 2005-06-09
US20070180303A1 (en) 2007-08-02
EP1695271A2 (en) 2006-08-30
US20050114727A1 (en) 2005-05-26
US7263629B2 (en) 2007-08-28
WO2005052855A3 (en) 2007-05-31
US7356731B2 (en) 2008-04-08

Similar Documents

Publication Publication Date Title
US7356731B2 (en) Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array
US6993701B2 (en) Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
JP5102776B2 (ja) ストレージアレイにおける三重故障からの効率的な復旧を可能にする三重パリティ技術
US7080278B1 (en) Technique for correcting multiple storage device failures in a storage array
US8468304B1 (en) Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US7437652B2 (en) Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
JP5518201B2 (ja) 最大n個までの記憶装置故障からの復旧を可能にするnウェイパリティ技術
JP2007516524A (ja) 準静的分散技術
US6871317B1 (en) Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US7346831B1 (en) Parity assignment technique for parity declustering in a parity array of a storage system
US7398460B1 (en) Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080610

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080910

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080918

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081216

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090914

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20091002

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20091228

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110520

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110525