JP4988247B2 - トレリス・デコード再ビルドを伴う畳み込みエンコードraid - Google Patents

トレリス・デコード再ビルドを伴う畳み込みエンコードraid Download PDF

Info

Publication number
JP4988247B2
JP4988247B2 JP2006129865A JP2006129865A JP4988247B2 JP 4988247 B2 JP4988247 B2 JP 4988247B2 JP 2006129865 A JP2006129865 A JP 2006129865A JP 2006129865 A JP2006129865 A JP 2006129865A JP 4988247 B2 JP4988247 B2 JP 4988247B2
Authority
JP
Japan
Prior art keywords
data
encoded data
storage device
storage
information
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.)
Expired - Fee Related
Application number
JP2006129865A
Other languages
English (en)
Other versions
JP2006318467A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2006318467A publication Critical patent/JP2006318467A/ja
Application granted granted Critical
Publication of JP4988247B2 publication Critical patent/JP4988247B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)

Description

本発明はデータ・ストレージに関するものである。
本発明の課題は、畳み込みエンコードされたデータをRAID(redundant array of independent storage device)に記憶するための方法、システム、およびコンピュータ・プログラムを提供することにある。
システム形式における本発明の実施例は、複数のストレージ・デバイスおよびそれらのストレージ・デバイスに結合されたトレリス・デコーダを含む。トレリス・デコーダは、ストレージ・デバイスから受け取ったコード化データを処理してデコード済みデータを生成する。コード化データは、現在および過去の情報ビットの畳み込みによって生成されたエラー訂正コード化データを含む。システムは、障害のあるストレージ・デバイスが存在するかどうかを決定し、そして、障害のあるストレージ・デバイスが存在するという決定に応答して、再構成データを記憶するための記憶スペースを割り振る。再構成データは、障害のあるストレージ・デバイスに予め記憶されていたコード化データを含む。システムは、デコード済みデータを処理して再構成データを生成し、割り振られた記憶スペースにその再構成データを記憶する。
ある実施例では、システムは、デコード済みデータにおけるエラーの量を測定し、そのエラーの量を複数のストレージ・デバイスの各々に対するエラー限界と比較し、そのエラーの量が1つのストレージ・デバイスに対するエラー限界を越えたことに応答して、そのストレージ・デバイスを障害のあるストレージ・デバイスとして識別する。ある実施例では、システムは、複数のストレージ・デバイスから自己監視分析および報告技術情報を受け取り、その自己監視分析および報告技術情報が1つのストレージ・デバイスに対する障害を表すことに応答して、そのストレージ・デバイスを障害のあるストレージ・デバイスとして識別する。ある実施例では、コード化データが1つまたは複数のワードを含み、各ワードがnビット(nは0よりも大きい)を含み、各ワードが情報の一部分を処理する畳み込みエンコーダから生成され、複数のストレージ・デバイスのいずれも2つ以上の連続したワードを持たず、または各ワードにおけるnビットのうちの2つ以上を持たない。ある実施例では、システムは、コード化データに関連したメタデータを処理するメタデータ・コントローラを含み、メタデータは、コード化データのためのストレージ・ロケーションまたはコード化データに対するエンコーディングのタイプを指定する、ストレージ・ロケーション情報を含む。
同じ要素が同じ参照番号および記号で表されている図面を参照すると、図1は、例示的なストレージ・エリア・ネットワーク(SAN)10を示すブロック図である。SAN10は、一般には、スイッチング・ファブリック66を形成するためにスイッチ67が使用される交換アクセス・ネットワークとして動作するように設計される。ある実施例では、SAN10は、ファイバ・チャネル(FC)物理層上で動作する小型コンピュータ・システム・インターフェース(SCSI)プロトコルを使用して実装される。別の実施例では、SAN10は、InfiniBand、FICON(FiberChannel CONnectivity の特別形態)、TCP/IP、Ethernet(登録商標)、GigabitEthernet(登録商標、またはiSCSIのような他のプロトコルを利用して実装することができる。スイッチ67はホスト・コンピュータ61、62、63、64、65とコントローラ80との両方のアドレスを有するので、ホスト・コンピュータ61〜65のいずれも任意のコントローラ80に交換可能に接続することができる。
ホスト・コンピュータ61、62、63、64、65は、それぞれI/Oインターフェース71、72、73、74、75を利用してファブリック66に結合される。I/Oインターフェース71〜75は、任意のタイプのI/Oインターフェース、例えば、FCループ、ファブリック66に対する直接接続機構、または、ファブリック66におよびファブリック66からそれぞれ情報を転送するためにホスト・コンピュータ61〜65によって使用される1つまたは複数の信号線であってもよい。ファブリック66は、例えば、2つ以上のコンピュータ・ネットワークを接続するために使用される1つまたは複数のFCスイッチ67を含む。或る実施例では、FCスイッチ67は一般的なルータ・スイッチである。
スイッチ67は、I/Oインターフェース79を介してホスト・コンピュータ61〜65をコントローラ80に相互接続する。I/Oインターフェース79は、任意のタイプのI/Oインターフェース、例えば、Fiber Channel、Infiniband、Gigabit Ethernet、Ethernet、TCP/IP、iSCSI、SCSII/O インターフェースであってもよく、或いは、コントローラ80におよびコントローラ80からおよびその後複数のストレージ・デバイス91〜93にそれぞれ情報を転送するためにFCスイッチ67によって使用される1つまたは複数の信号線であってもよい。図1に示された例では、ストレージ・デバイス91〜93およびコントローラ80はRAID90内で操作される。RAID90は、ストレージ・デバイス91〜93のいずれかの障害時にストレージ・デバイス91〜93と交換され得る予備ストレージ97を含むことも可能である。ストレージ・デバイス91〜93のほかに更なるストレージをRAID90に含むことも可能であろう。代替として、ストレージ・デバイス91〜93を相互におよびコントローラ80から物理的に離隔して設置すると、1つの災害でストレージ・デバイス91〜93の1つしか危険にさらされずにすむであろう。
RAID90は、一般に、RAIDのオペレーションを指示するために1つまたは複数のコントローラ80を含む。コントローラ80は多くの形式を取り得るし、組み込みシステム、分散制御システム、パーソナル・コンピュータ、ワークステーション等を含み得る。図1は、プロセッサ82、メタデータ・コントローラ98、ランダム・アクセス・メモリ(RAM)84、不揮発性メモリ83、特定回路81、コード化データ・インターフェース85、およびホスト情報インターフェース89を有する典型的なRAIDコントローラ80を示す。プロセッサ82、RAM84、不揮発性メモリ83、特定回路81、メタデータ・コントローラ98、コード化データ・インターフェース85、およびホスト情報インターフェース89はバス99を介して相互にコミュニケーションを行う。
代替として、RAM84および不揮発性メモリ83は、特定回路81、コード化データ・インターフェース85、メタデータ・コントローラ98、およびホスト情報インターフェース89と共にプロセッサ82内にあってもよい。プロセッサ82は、既製のマイクロプロセッサ、カスタム・プロセッサ、FPGA、ASIC、または他の形式の個別ロジックを含んでもよい。RAM84は、一般に、計算されたデータ、スタック・データ、実行可能な命令等を保持するために、ホスト・コンピュータ61〜65によって書き込まれたデータまたはホスト・コンピュータ61〜65のために読み出されたデータのためのキャッシュとして使用される。更に、RAM84は、一般に、エンコーダからのコード化データ87がストレージ・デバイス91〜93に記憶される前にそのデータ87の一時的記憶のために使用される。エンコーダの例は畳み込みエンコーダ220(図14)である。或る実施例では、畳み込みエンコーダ220は特定回路81にあることも可能である。RAM84は、一般に、コード化データ87がストレージ・デバイス91〜93から読み出された後、そのデータがデコーダ77によってデコードされる前にそのデータの一時的記憶のために使用される。デコーダ77の例は、図7におけるトレリス・デコーダ300および図11におけるトレリス・デコーダ500である。
或る実施例では、ディストリビュータ101が、ソフトウェア、ファームウェア、専用ロジック、またはそれらの組合せによってプロセッサ82に実装される。更に、ディストリビュータ101のすべてまたは一部分が、ホスト・コンピュータ61〜65の1つにおけるソフトウェア実装のように、コントローラ80の外部にあってもよい。ディストリビュータ101は、1つまたは複数のストレージ・デバイスが障害を生じた場合、コード化データまたはソース情報がデコードされ得るようなフォーマットまたは非障害のストレージ・デバイスから再構成され得るようなフォーマットでそのコード化データ(即ち、コード化データ87)をRAM84またはストレージ・デバイスに直接配布する。書き込みプロセス中、ディストリビュータ101がストレージ・デバイス91〜93のようなストレージ・デバイスにデータを配布するとき、その配布されたデータがその後ストレージ・デバイスから読み出され得るよう、配布はメタデータ88に従って行われる。読み取りプロセス中、ディストリビュータ101はストレージ・デバイス91〜93のようなストレージ・デバイスからデータを検索し、同じメタデータ88に基づいてコード化データ87をRAM84に再アセンブルする。
不揮発性メモリ83は、電気的消去可能プログラマブル・リード・オンリ・メモリ(EEPROM)、フラッシュ・プログラマブル・リード・オンリ・メモリ(PROM)、バッテリ・バックアップRAM、ハードディスク・ドライブ、または他の同様の装置のような任意のタイプの不揮発性メモリを含み得る。不揮発性メモリ83は、一般に、実行可能なファームウェア、およびメタデータ88のような任意の不揮発性データを保持するために使用される。メタデータ88の詳細は図3に関連して更に後述される。
或る実施例では、コード化データ・インターフェース85は、プロセッサ82がストレージ・デバイス91〜93と通信することを可能にする1つまたは複数の通信インターフェース含む。ホスト情報インターフェース89は、プロセッサ82がファブリック66、スイッチ67、およびホスト・コンピュータ61〜65と通信することを可能にする。コード化データ・インターフェース85およびホスト情報インターフェース89は、RS−232、USB(Universal Serial Bus)、SCSI、Fiber Channel、Gigabit Ethernet 等のようなシリアル・インターフェースを含む。更に、コード化データ・インターフェース85およびホスト情報インターフェース89は、無線周波数(RF)(即ち、Bluetooth)のようなワイヤレス・インターフェースまたは赤外線(IR)のような光通信装置を含み得る。
或る実施例では、メタデータ・コントローラ98は、ソフトウェア、ファームウェア、専用ロジック、またはそれらの組合せによってプロセッサ82に実装される。更に、メタデータ98のすべてまたは一部分が、ホスト・コンピュータ61〜65の1つまたは他の処理装置におけるソフトウェア実装のように、コントローラ80の外部にあってもよい。メタデータ・コントローラ98は、受け取った情報に関連したメタデータをストレージ・デバイス上にコード化データとして記憶するために管理する。或る実施例では、メタデータ・コントローラ98は、コード化データとして記憶するために受け取った情報に関連したメタデータ(即ち、メタデータ88)を生成し、変更し、維持し、記憶し、検索し、処理する責任がある。
特定回路81は、コントローラ80が、ストレージ・デバイス91〜93、コントローラ80、およびデコーダ77の環境冷却のためにファン制御のような独特の機能を遂行することを可能にするために更なるハードウェアを提供する。デコーダ77はトレリス・デコーダとして実装され得る。特定回路81は、パルス幅変調(PWM)制御、アナログ・デジタル変換(ADC)、デジタル・アナログ変換(DAC)、排他的OR(XOR)等を行う電子回路を含み得る。更に、特定回路81のすべてまたは一部分が、ホスト・コンピュータ61〜65の1つにおけるソフトウェア実装のようにコントローラ80の外部にあってもよい。
デコーダ77は、RAIDストレージ・デバイス(即ち、ストレージ・デバイス91〜93)から読み出されたコード化データをデコードするためにトレリス・デコーダとして実装され得る。トレリス図300(図7)を使ってトレリス・デコーダのオペレーションを説明することができる。図7には、状態 S0〜S7 が示され、ストレージ・デバイスに記憶されるコード化データに情報をエンコードするために使用される畳み込みエンコーダの全メモリ・レジスタの初期内容がゼロに初期設定されるものとする。例えば、畳み込みエンコーダ220(図14)のメモリ・レジスタ230〜232がゼロに初期設定される。これは、ストレージ・デバイスから読み出されたコード化データ87をデコードしてオリジナルのホスト情報78を生成するために使用されるトレリス図が常に状態S0 で始まり、状態 S0 で終わるという結果を有する。
トレリス図300(図7)は状態 S0 310A で始まる。トレリス図300は、S0 310A から S0 310B または S1 311B に遷移する。トレリス図300における状態の番号付けにおける接尾部Aから接尾部Bへの増加はブランチと呼ばれ、ブランチ・インデックスIは接尾部Aから接尾部Bに遷移する時にはゼロである。トレリス図300は、S0310B から S0 310C または S1 311C に遷移し、S1 311B から S2 312C または S3 313C に遷移し、そしてブランチ・インデックスIは1である。トレリス図300は、S0310C から S0 310D または S1 311D に遷移し、S1 311C から S2 312D または S3 313D に遷移し、S2 312C からS4 314D または S5 315D に遷移し、S3 313C から S6 316D または S7 317D に遷移し、ブランチ・インデックスIは2である。
トレリス図300における次の一連の遷移はフルのデコード活動を示す。トレリス図300は、S0 310D から S0 310E または S1 311E に遷移し、S1 311D から S2 312E または S2 313E に遷移し、S2312D から S4 314E または S5 315E に遷移し、あるいは S3 313D から S6 316E または S7 317E に遷移し、そしてブランチ・インデックスIは3である。更に、トレリス図300は、S7317D から S7 317E または S6 316E に遷移し、S6 316D から S5 315E または S4 314E に遷移し、S5 315D からS3 313E または S2 312E に遷移し、S4 314D から S1 311E または S0 310E に遷移する。
一般に、トレリス図では、ブランチ・インデックスI=3に対して示されるものが複数回反復される。しかし、図7では、図を簡潔にするためにそのような反復を1つだけを示している。図7の残りに関して、トレリス図は、デコード・プロセスの終了を表すことを推測するために示される。トレリス図300は、S0 310E から S0 310F のみに遷移し、S1 311E から S2 312F のみに遷移し、S2 312E から S4314F のみに遷移し、S3 313E ら S6 316F のみに遷移し、そしてブランチ・インデックスIは4である。更に、トレリス図300は、S7 317E からS6 316F のみに遷移し、S6 316E から S4314F のみに遷移し、S5 315E から S2 312F のみに遷移し、S4 314E から S0310F のみに遷移する。トレリス図300は、S0 310F から S0 310G のみに遷移し、S2 312F から S4 314G のみに遷移し、ブランチ・インデックスIは5である。更に、トレリス図300は、S6316F から S4 314G のみに遷移し、S4 314F から S0 310G のみに遷移する。最後に、トレリス図300は、S0 310G から S0310H のみに遷移し、ブランチ・インデックスIは6である。更に、トレリス図300は S4 314G から S0 310H のみに遷移する。
図7では、例示の強調表示された(太線で示された)デコード・パス S0 310A、S1 311B、S3 313C、S7 317D、S7 317E、S6 316F、S4 314G、および S0 310Hは、エンコード済みデータ 11100110010011 を獲得し、それを図13のテーブルによって 1111000 にデコードする。
図6に示されたフローチャート700は、RAIDストレージ・デバイスから得られたエラー訂正コード化データをデコードするための1つの実施例を実装するプロセスを概説する。プロセスはステップ701において始まり、判断ブロック705に進んで、コントローラ80が記憶情報に対する要求をソース(即ち、ホスト・コンピュータ61〜65)から受けたかどうかを決定する。コントローラ80から要求された情報は、顧客、顧客にサービスを提供する第三者、ユーザ、またはコントローラ80にアクセスを行う他の任意のエンティティによってストレージ・デバイス上に事前に記憶されていてもよい。記憶情報に対する要求を受けてない場合、プロセスはステップ705にサイクル・バックする。或る実施例では、ホスト情報インターフェース89が記憶情報に対する要求を受け、コントローラ80(即ち、プロセッサ82、特定回路81など)に結合された他のコンポーネントにその要求を転送する。記憶情報に対する要求を受けた場合、プロセスはステップ707に進む。そこでは、コントローラ80が先ず、ホスト・コンピュータ61〜65の1つによって要求された所望ファイル名626(図3)(または他の識別子)に基づいて所望の記憶情報に関連したメタデータ88を獲得することにより、コード化データが置かれているストレージ・デバイスを決定し(即ち、図3の指定子621の使用による)、コード化データのLBA622、コード化データを得るための転送長623、およびシーケンス番号625を決定する。メタデータ88は不揮発性メモリ83から得ることも可能であろう。
或る実施例では、メタデータ・コントローラ(即ち、メタデータ・コントローラ98)がコード化データに関連したメタデータ88を見つけて処理する。メタデータは、コード化データのストレージ・ロケーションを指定するストレージ・ロケーション情報およびコード化データのエンコーディングのタイプを指定するエンコーダ情報の少なくとも一方を含む。エラー訂正コード化データのストレージ・ロケーションを指定するストレージ・ロケーション情報は、ストレージ・デバイスの永続名、論理ブロック・アドレス、デバイス番号、論理ユニット番号、ボリューム・シリアル番号、または他のストレージ・ロケーション識別子を含み得る。プロセッサ82は、ステップ707において、所望のメタデータ88を不揮発性メモリ83から見つけるようメタデータ・コントローラを実装するために使用することが可能である。
プロセスはステップ707からステップ708に進む。そこでは、コントローラ80が読み取りコマンド(即ち、読み取りコマンド605(図2))を使用して個々のストレージ・デバイス91〜93からコード化情報を読み出し、それをRAM84に入れる。例えば、図5を参照すると、V(1,1)、V(1,2)、V(4,1)、V(4,2)、V(7,1)、V(7,2)、V(10,1)、V(10,2) などがドライブ281から読み取られ、V(2,1)、V(2,2)、V(5,1)、V(5,2)、V(8,1)、V(8,2)、V(11,1)、V(11,2)などがドライブ282から読み取られ、V(3,1)、V(3,2)、V(6,1)、V(6,2)、V(9,1)、V(9,2)、V(12,1)、V(12,2) などがドライブ283から読み取られ、コード化データ290を完成する。読み取りコマンド内には、ターゲット・ストレージ・デバイスの論理ユニット番号609(図3のメタデータ88から得られる)、開始論理ブロック・アドレス607(図3のメタデータ88から得られる)、および論理ユニット番号609のストレージ・デバイスに記憶されたコード化データの転送長608(図3のメタデータ88から得られる)がある。読み取りコマンド605はSCSIまたはFiber Channel インターフェースを介して実装され得る。読み取りコマンド605はSCSI読み取りコマンドであり、それは使用可能な唯一の可能な読み取りコマンドである。読み取りコマンド605は、ストレージ・デバイス91〜93からコード化データを検索するために複数回使用され得る。読み取りコマンド605は、一般に、各ストレージ・デバイスに対して少なくとも1回は使用される。
図4は、エラー訂正コード化データを生成するよう情報を処理するために(2,1,3)バイナリ畳み込みエンコーダ(図14)が使用されるときのストレージ・デバイス260に分散されたエラー訂正コード化データの例を示す。エラー訂正コード化データの各ワードは、例えば、図4に示されるような2ビット(n=2)を含み、第1ワードがV(1,1) および V(1,2)を含み、第2ワードが V(2,1) および V(2,2)を含み、第3ワードが V(3,1) および V(3,2)を含み、以下同様である。この例に関して、いずれのストレージ・デバイスも各ワードの2ビットのうちの1ビットしか受け取らない。
図5は、エラー訂正コード化データを生成するよう情報を処理するために(2,1,3)バイナリ畳み込みエンコーダ(図14)が使用されるときのストレージ・デバイス280に分散されたエラー訂正コード化データの例を示す。エラー訂正コード化データの各ワードは、例えば、図5に示されるような2ビット(n=2)を含み、第1ワードがV(1,1) および V(1,2)を含み、第2ワードが V(2,1) および V(2,2)を含み、第3ワードが V(3,1) および V(3,2)を含み、以下同様である。この例に関して、いずれのストレージ・デバイスも2つ以上の連続したワードを受け取らない。この実施例に関して、連続したワードは、例えば、第1ワード(V(1,1),V(1,2))および第2ワード(V(2,1),V(2,2))または第2ワード(V(2,1),V(2,2))および第3ワード(V(3,1),V(3,2))を含む。非連続ワードの例は、第1ワード(V(1,1),V(1,2))および第3ワード(V(3,1),V(3,2))または第2ワード(V(2,1),V(2,2))および第4ワード(V(4,1),V(4,2))である。
図4に示されたデータ分散に関して、読み取りコマンド605は、ステップ708において6回呼び出され、ドライブ261〜266に記憶された情報を読み取る。図5に示されたデータ分散に関して、読み取りコマンド605は、ステップ708において3回呼び出され、ドライブ281〜283に記憶された情報を読み取る。
すべてのコード化データが各ドライブから読み取られてRAM84に置かれると、プロセスはステップ709に進む。そこでは、コントローラ80が各ドライブからのコード化データをコード化データ87にアセンブルする。各ドライブから読み取られたコード化データからアセンブルされたコード化データ87の例は、270(図4)および290(図5)である。このアセンブリはメタデータ88のシーケンス番号625に基づいている。このシーケンス番号は、RAIDを介して事前に分散されたコード化データからのコード化データ87の適正なアセンブリを決定する。
同様に、図4は、ステップ709においてメモリ装置、例えばRAM84、に記憶されたようなエラー訂正コード化データの例を表すテーブル270を示す。テーブル270は欄の形に編成され、各欄は、ステップ708においてそれぞれのストレージ・デバイス(即ち、ストレージ・デバイス91〜93)から読み取られたエラー訂正コード化データを含む。例えば、テーブル270の第1欄は、ステップ708においてドライブ261から読み取られたエラー訂正コード化データを示す。
図5は、ステップ709においてメモリ装置、例えばRAM84、でアセンブルされたようなアセンブル済みエラー訂正コード化データ87の例を表すテーブル290を示す。テーブル290は欄の形に編成され、各欄は、ステップ708においてそれぞれのストレージ・デバイスから読み取られたエラー訂正コード化データを含む。例えば、テーブル290の第1欄は、ステップ708においてドライブ281から読み取られたエラー訂正コード化データを示す。
コード化データ87がRAM84においてアセンブルされたステップ709の終了後、プロセスはステップ711に進む。そこでは、コード化データ87がデコードされてデコード済みデータ(即ち、情報78)を生成する。ステップ711は、ストレージ・デバイスに結合された(即ち、RAM84においてアセンブルされたコード化データ87の使用によって)トレリス・デコーダ(即ち、1つまたは複数のホスト・コンピュータ61〜65に対するオリジナル情報78を得るためにコード化データ87をデコードする、特定回路81におけるトレリス・デコーダ77)によって達成され得る。トレリス・デコーダ77は、ストレージ・デバイス91〜93から受け取ったコード化データを処理してデコード済みデータを生成する。コード化データは、情報78における現在および過去のビットの畳み込みによって生成されたエラー訂正コード化データを含む。デコーダ77は、図7または図11に示されたトレリス・デコーダまたは任意の他のトレリス・デコーダであってもよい。代替として、デコーダ77は、トレリス図のバイナリ・ツリー状の実装と考えられる「スタック・アルゴリズム」を使用することも可能である。
或る実施例では、デコーダ77は、個別の状態図で各時間単位を表すために、エンコーダの状態図(図12)を時間的に拡大する。その結果生じた構造が、図7および図11に示されたように、トレリス図と呼ばれる。最小のハミング距離でトレリス図を通るパスが、所望の情報78を生成するためにコード化データ87をデコードするための望ましいパスである。望ましい最小ハミング距離はゼロであり、それは、コード化データ87とそのコード化データ87を情報78にデコードするためにトレリス図を介して選択されたパスとの間に誤差がないことを表す。
ハミング距離は、トレリス図の当該ブランチに対して読み取られたワードおよびそのブランチにおける各パスに割り当てられたワードによって計算される。読み取られたワードおよび割り当てられたワードは、桁上げなしで加算され(XOR)、そのブランチにおける各パスに対するハミング距離を生成する。例えば、読み取られたワードは 111 であったが、パスは 010 という割り当てられたワードを有する場合、ハミング距離は 111+010=101 である。
各ブランチにおけるハミング距離がゼロであることが望ましい。111 が読み取られたワードであり、111 という割り当てられたワードを有するパスが当該ブランチにあった場合、111+111=000 はゼロのハミング距離を表す。このパスは当該ブランチに対する望ましいパスであろうし、その同じパスに割り当てられた情報は、エンコーディングが生じる前のオリジナル情報を表すであろう。
ゼロのハミング距離が得られない場合、読み取られたエンコード済みデータに対して、トレリス図を通るすべての可能なパスが計算され、すべてのブランチにわたって最小のハミング距離を有するパスが、エンコード済みデータおよびオリジナル情報の両方を表すパスとして選択される。従って、トレリス図は、実際には、畳み込みコードに対する最尤デコーディング・アルゴリズムである。即ち、デコーダ出力選択は常に、最小メトリックをハミング距離の形で与えるコード・ワードである。
読み取り(デコーディング)プロセスに対して、トレリス図の最初のブランチは常に状態 S0 から生じ、トレリス図の最終ブランチは常に状態 S0 で終わる。これは、図14におけるメモリ230〜232のようなすべてのメモリを畳み込みエンコーダにおいてゼロに初期設定してエンコーディング・プロセスを開始および終了させることを示している。
適正なオペレーションのために、デコーダ77はメタデータ88からのワードを含むビットの順序づけを、ストライプ幅624によって得る。例えば、テーブル270(図4)およびテーブル290(図5)におけるビットは異なって配列される。メタデータ88におけるストライプ幅624に従うことにより、コード化データの個々のビットがトレリス図300(図7)および500(図11)によって正しい順序で処理される。
或る実施例では、コード化データは1つまたは複数のワードを含む。各ワードはnビット(nはゼロよりも大きい)を含み、各ワードは情報の一部分を処理する畳み込みエンコーダから生成され、複数のストレージ・デバイスのいずれも各ワードのnビットのうちの複数ビットを持たない。
或る実施例では、コード化データは1つまたは複数のワードを含み、各ワードはnビット(nはゼロよりも大きい)を含み、各ワードは情報の一部分を処理する畳み込みエンコーダから生成され、複数のストレージ・デバイスのいずれも2つ以上の連続したワードを持たない。
プロセスはステップ711からステップ712に進み、要求者によって要求された情報を生成するために必要なすべてのコード化データがデコーダ77によってデコードされてしまったかどうかを決定する。その答えがイエスである場合、プロセスはステップ713に進む。そこでは、ホスト情報インターフェース89がデコーダ77から、およびその転送を行うために必要な、コントローラ80(即ち、プロセッサ82、特定回路81など)に結合された任意の他のコンポーネントから情報78を受け、コード化データ87から取り出された情報78を要求ホスト・コンピュータ61〜65に転送する。情報78は、デコーダ77がエラー訂正コード化データ87を処理する前、処理している間、または処理した後、メモリ装置(即ち、RAM84、不揮発性メモリ83、専用プロセッサ・メモリなど)に一時的に記憶されてもよい。エラー訂正コード化データ87および取り出された情報78は、SAN10の要求ホスト・コンピュータ61〜65への配布に先立ってRAM(即ち、RAM84)に記憶することが可能である。代替として、エラー訂正コード化データ87は、ストレージ・デバイスから(図2の読み取りコマンドによって)読み出されるセグメントからアセンブルされるとき、不揮発性ストレージ・デバイス83、別のストレージ・デバイス、キャッシュ・メモリなどに記憶することも可能である。或る実施例では、エラー訂正コード化データ87は、記憶のためにストレージ・デバイスに事前に配布するために使用されたフォーマットと同じフォーマットでRAM84に記憶される。
ステップ712において、すべてのコード化データ87がデコードされた場合、ステップ713が実行される。ステップ713は要求者によって要求された情報78を要求者に送り、他の要求を処理するためにプログラム制御をステップ705に戻す。ステップ712において、更なるコード化データ87がデコードされる必要がある場合、ステップ715が実行される。
ステップ715では、コード化データ87のトレリス・デコーディングがエラーを検出することがある。或る実施例では、非ゼロのハミング距離がデコーディング・プロセスにおいて見つかるたびに、デコーディング・エラーが検出される。コード化データ87のデコーディングにおいてエラーが検出されない場合、(即ち、トレリス図300または500においてゼロのハミング距離を有するパスが見つかった場合)、制御はステップ711に戻ってデコーディング・プロセスを継続する。或る実施例では、ステップ715は、非ゼロのハミング距離でエラーを検出するためにコード化データのデコーディングを継続的に調べる。代替として、デコーディング・プロセスが周期的に検査されてもよい。例えば、継続的または周期的な検査は、エラーを検出するために、複数のビットをビット毎に検査すること、複数のワードをワード毎に検査すること、あるいはコード化データ、デコード済みデータ、または取り出された情報を検査することを含み得る。コード化データ、デコード済みデータ、取り出されたデータ、またはそれらの組合せにエラーがある場合、ストレージ・デバイスに障害が生じたかどうかを決定するために、制御はステップ720に進む。
ステップ720において、ストレージ・デバイスに障害がなかった場合、ステップ722が実行される。ステップ722において、エラーが訂正され、制御がステップ711に戻ってコード化データ87のデコーディングを回復する。このエラー訂正は、エラー(非ゼロのハミング距離)が存在した前の状態にデコーディング・プロセスをバックアップすること、しかる後、最小ハミング距離に対するすべての可能なパスを考慮しながらデコーディング・プロセスを再開することを含む。この最小ハミング距離はゼロであることが望ましい。
或る実施例では、ステップ720は、個々のストレージ・デバイスにおける(即ち、ストレージ・デバイス91〜93の各々における)コード化データを読み取るときのECC(エラー訂正コード)エラーの量を測定すること、および、ステップ715において、ECCエラーの量をストレージ・デバイス(即ち、ストレージ・デバイス91〜93)の各々におけるエラー限界と比較することによって達成される。ECCエラーの量が所与のストレージ・デバイスのエラー限界を越えたことに応答して、ステップ720において、システムは、そのストレージ・デバイスを障害のあるストレージ・デバイスとして識別する。
別の実施例では、ステップ720は、各ストレージ・デバイス(即ち、ストレージ・デバイス91〜93)から自己監視分析及び報告技術(Self Monitoring Analysis and Reporting Technology : S.M.A.R.T)情報を受け取ること、およびストレージ・デバイスの障害を表すS.M.A.R.T情報に応答してそのストレージ・デバイスを障害のあるストレージ・デバイスとして識別することによって達成される。
S.M.A.R.T技術は、ドライブ・エラー(即ち、ストレージ・デバイス91〜93のエラー)を表す状態を認識することを意図され、実際の障害が発生する前にデータのバックアップを可能にするために障害を表す十分な警報を与えるように設計される。ストレージ・デバイスは経時的な劣化に関する特定の属性を監視し得るが、突発的なドライブの障害を予測することはできない。
劣化に関する各属性がドライブの操作性能における特定の障害状態セットを監視し、誤った予測を最少にするように閾値が最適化される。S.M.A.R.Tは、エラーが生じる比率を監視し、エラー比率の割合が容認不可能なレベルまで増加した場合に予測障害を知らせる。比率を決定するために、エラー事象がログされ、所与の属性に対する全オペレーションの数と比較される。インターバルは、比率を測定すべきオペレーションの数を定義する。現在のオペレーション数を追跡するカウンタはインターバル・カウンタと呼ばれる。
S.M.A.R.Tはエラー比率を測定し、従って、各属性に対して、エラーの発生が記録される。カウンタが、現在のインターバルに対するエラーの数を追跡する。このカウンタは障害カウンタと呼ばれる。エラー比率は単に1オペレーション当たりのエラーの数である。S.M.A.R.Tがエラー比率を記録するために使用するアルゴリズムは、エラーの数およびインターバルに対する閾値を設定する。インターバルが終了する前にエラーの数が閾値を越える場合、エラー比率は容認不可能なものなると考えられる。インターバルが終了する前にエラーの数が閾値を超えない場合、エラー比率は容認可能であると考えられる。いずれの場合も、インターバルおよび障害カウンタはリセットされ、プロセスがやり直される。
S.M.A.R.Tは、ドライブが或る期間にわたって容認不能に動作するとき、予測障害を知らせる。各属性に対するエラー比率が容認不能となる回数を表す現行カウントを、ファームウェアが保持する。これを達成するために、カウンタは、エラー比率が容認不能になる度にインクリメントされ、エラー比率が容認可能になる度に(ゼロを超えないように)デクリメントされる。カウンタが継続的にインクリメントされて予測閾値に達すると、予測障害が知らされる。このカウンタは障害履歴カウンタとも呼ばれる。各属性に対して個別の障害履歴カウンタが存在する。
別の実施例では、ステップ720において、コントローラ80が、例えば、コード化データ・インターフェース85を介してI/O通信を確立することができないストレージ・デバイスのような障害のあるストレージ・デバイスが決定される。
ストレージ・デバイスに障害が生じた場合、フローチャート700は、ステップ719から開始して、ステップ725に直接に進むことができる。障害のあるドライブを探索するために読み取りオペレーションを実行すること、および、その障害のあるドライブによって事前に保持されていたコード化データの再構成を始めることは必要ない。
障害のあるストレージ・デバイスが存在することをステップ720において決定したことに応答して、ステップ725が実行され、再構成データを記憶するための記憶スペースを割り振る。或る実施例では、ステップ725は、その割り振られた記憶スペースに対して予備ストレージ・デバイス(即ち、予備ストレージ・デバイス97)を使用することによって達成される。そのような予備ストレージ・デバイスが、ストレージ・デバイス91〜93の1つを置換するために使用される場合、予備ストレージ・デバイス97は、それが置換しようとする障害のあるデバイスと同等またはそれ以上の記憶容量を有する。更に、予備ストレージ・デバイス97は、同じタイプのストレージ・デバイスであることが望ましい。即ち、ストレージ・デバイス91〜93がファイバ・チャネル接続を有するハードディスク・ドライブであった場合、予備ストレージ・デバイス97もファイバ・チャネル接続を有するハードディスク・ドライブとなるであろう。或る実施例では、割り振られた記憶スペースは、ストレージ・デバイス91〜93の1つまたは複数個、ストレージ・デバイス91〜93の一部分、SAN10の内部または外部にある外部ストレージ・デバイス、コントローラ80に結合されたメモリ・デバイスなどを含み得る。或る実施例では、再構成データは、障害のあるストレージ・デバイス上に事前に記憶されたコード化データ(即ち、畳み込みエンコーダによって生成されたデータ)を含む。
プロセスはステップ725からステップ730に進み、再構成データを生成するためのデコード済みデータの処理および割り振られた記憶スペースにおけるその再構成データの記憶を達成する(1e、14e、8f)。ステップ730および735は、例えば、コントローラ80がトレリス・デコーダ77の使用によってデコード済みデータを処理すること、RAM84にあるテーブル270(図4)またはテーブル290(図5)の内容全体を構成することによって障害のあるストレージ・デバイスに記憶されたデータのイメージを再構成すること、および、書き込みコマンド(即ち、図15における書き込みコマンド600)を使用して、障害のあるドライブ上にあったものに対応するイメージの欄を、割り振られた記憶スペース上に記憶すること、によって達成することが可能である。それらのイメージは、再構成プロセスの前に、再構成プロセス中に、または再構成プロセス後に、メモリ・デバイス(即ち、RAM84)に一時的に記憶することが可能である。更に、この再構成プロセスは、ホストによって最初に提供された情報を回復する。従って、再構成プロセスは、事前にエンコードされたデータをデコードし、読み取りプロセスが障害のあるデバイスに記憶されていたエンコード済みデータのセグメントの読み取りを要求する場合、その読み取りプロセスの一部と考えることもできる。ユーザが図4および図5におけるような障害のある畳み込みエンコードRAID上のデータの読み取り(デコーディング)を望む場合、欠落エンコード済みデータを障害のあるストレージ・デバイスから回復する同じ再構成プロセスが、所望の情報をそのユーザに提供する。或る実施例では、システムは、割り振られた記憶スペース上に再構成データを記憶するための料金を顧客(即ち、ユーザ)に課すことができる。料金は、システム、サービス提供者、第三者などから顧客に請求してもよい。料金は、使用された記憶スペースの量、均一料金、使用された割り振り済みストレージ・デバイスの数などに基づいてもよい。これは、例えば、データを記憶するためのサービス提供者との顧客契約によって達成することも可能である。その場合、サービス提供者は、顧客のデータを要求時に記憶および検索する責任がある。サービス提供者は、ストレージ・デバイスの管理者であってもよく、また顧客と他のパーティとの間のビジネス関係にある第三者であってもよい。顧客は、情報を記憶するためのシステム(即ち、図1のSAN10)への接続を提供され得る。顧客は、その接続または他の手段を使用して自分の情報を、記憶のためにシステムに送ることが可能である。顧客によって送られる情報またはSAN10によって受け入れられる情報の量または数は、データの量を測定するための既知の方法によって測定することが可能である。割り振られた記憶スペースに、再構成データを記憶するための料金は、その記憶のために送られた情報の量と、情報の流れの速度、使用の頻度、圧縮または非圧縮情報、一定の月極め比率、他の考慮事項のような他の要素を考慮することによって決定することが可能である。プロセスはステップ735からステップ740に進み、終了する。
或る実施例では、ステップ720、722、および730はデコーダ77のオペレーションによって達成される。デコーダ77は、RAIDストレージ・デバイス(即ち、ストレージ・デバイス91〜93)から読み取られたコード化データをデコードするためにトレリス・デコーダとして実装することができる。トレリス・デコーダのオペレーションに関しては後述することにする。
或る実施例では、ステップ720および722は、図7、図10、および図11におけるトレリス・デコーディングのために、図8に示されたフローチャート340のステップ341、342、343、344、345、347、および348、並びに図9に示されたフローチャート360によって達成される。図8では、プロセスはステップ341から開始する。プロセスはステップ342に進み、そこでは、ブランチ・インデックスIがゼロにセットされる。トレリス図のブランチは畳み込みエンコーダ(図12)の出力の1ワードを表す。例えば、トレリス図300は1ワード内に2ビットを有し、トレリス図500は1ワード内に3ビットを有する。トレリス・デコーダは、ゼロのハミング距離が得られるとき、一般に一時に1つのブランチを順次にデコードするので、ブランチ・インデックスIは重要である。ゼロのハミング距離が得られたということは、エラーが検出されず、障害のあるストレージ・デバイスからの欠落データが存在しないことを意味し、更に、コード化データ87におけるエンコード済みデータ・ワードに正確に一致するブランチ・インデックスIにおける単一のパスが識別されたことを意味する。トレリス・デコーダの価値は、それがブランチによってシーケンス外れを予期して、エラーを伴うブランチをバイパスすることができ、誤ったブランチに続くブランチを使用して、その誤ったブランチを訂正することができることである。
プロセスはステップ342から判断ステップ343に進む。そこでは、コード化データ87の1ワードにおけるnビットすべてがストレージ・デバイス91〜93から得られたかどうか、またはそれらビットのうちの或るものがブランチIにとって欠落しているかどうかの決定が行われる。各ワードはnビットを含み、nビットの各セットはトレリス図300および500における1つのブランチを含む。nビットすべてがブランチIに対して得られた場合、プロセスはステップ344に進む。そこでは、XOR(排他的OR)オペレーションが、(a)符号化データ87から得られたエンコード済みデータのnビットすべてと、(b)図7のトレリス図300(または、代替として図11のトレリス図500)のブランチ・インデックスIを含むパスにおける状態遷移との間で行われる。例えば、図7のトレリス図300のブランチ・インデックスI=0に対して、読み取られたエンコード済みデータは 11 である(エンコード済みデータの単一のワードが一時に処理される)。トレリス図は、S0 310A から S0 310B または S1311B への遷移を可能にする。S0 310A から S0 310B への遷移はエンコード済みデータ 00 を表し、S0 310A から S1 311B への遷移はエンコード済みデータ11 を表す。11 の読み取られたデータと S0 310A から S1 311B への遷移との間のXORプロセスは、判断ステップ345においてゼロのハミング距離(ゼロ・エラー)を与え(11XOR 11 = 00)、これが2つの可能性の間で行うべき適切な選択であること、および所望のデコード済み情報が 1 であることを表す。判断ステップ345において、パスがゼロのハミング距離(ゼロ・エラー)によって識別される場合、プロセスはステップ347に進む。そこでは、ゼロのハミング距離を有するパスが正しいパスとして選択される。次に、プロセスは判断ステップ348に進む。そこでは、コード化データ87のサイズを決定するメタデータ88毎にすべてのデータが処理されたかどうかによってプロセスが終わったかどうかの査定が行われる。ステップ348においてプロセスが未だ終っていないと仮定すると、ステップ349においてブランチ・インデックスIが1だけ増加され、プロセスは、ステップ343に戻って更なるデータを読み取ろうとする。プロセスは、それがステップ348において終了する場合、ステップ398に進み、そこでは、コード化データ87をデコードすることによって得られたオリジナル情報78がホスト・コンピュータ61〜65の1つに送られ、しかる後、プロセスは終了する。
或る実施例では、ステップ720、725、730、および735(図6)が図7のトレリス図300または図11のトレリス図500に対する、図8に示されたフローチャート340のステップ343を介してステップ351に到達することによって達成される。判断ステップ343において、nビットすべてが得られなかった場合(即ち、図10のI=1の破線パスとして示されるように、ブランチのすべてのビットが得られなかった場合)、プロセスはステップ350に進み、そこでは、欠落ビットの数Qが決定される。例えば、長さn=2ビットのワードに対して、Qは、デバイス263、264(図4)の1つに障害が生じ、他のデバイスが十分に動作的である場合に1となるであろう。しかし、Qは、デバイス281〜283(図5)の1つに障害が生じた場合、nに等しくなるであろう。次に、プロセスは判断ステップ351に進む。そこでは、図1の予備ストレージ・デバイス97のような予備ストレージ・デバイスが既に使用可能であるかどうかの照会が行われる。ステップ351における答えがノーである場合、プロセスはステップ352に進み、そこでは、障害のあるストレージ・デバイスを置換するために、予備ストレージ・デバイスがユーザによって得られる。或る実施例では、予備ストレージ・デバイスのためにストレージ・デバイスを予備に割り当てるための料金を顧客(即ち、ユーザ)に課すことが可能である。予備ストレージ・デバイス97を得ることは、例えば、障害のあるストレージ・デバイスに関する保証が消滅した場合、ユーザが予備ストレージ・デバイスを購入することを含む。一般に、この購入は、顧客が最初に予備ストレージ・デバイスを呼び出すとき、電子的に行われるであろう。保証期間が依然として生きている場合、予備ストレージ・デバイスが無料で提供されることもある。
或る実施例では、予備ストレージ・デバイスがユーザによって必要とされるまで、予備ストレージ・デバイスはユーザによって購入されないままである。予備ストレージのコストは、その予備ストレージが保証期間中に呼び出される場合、ゼロであることがある。ステップ352は、既存の予備ストレージが利用されるとき、製造者による置換予備ストレージの自動出荷も含む。この置換予備ストレージは、障害のあるストレージが除去された場所に置かれるであろう。或る実施例では、置換ストレージは、ストレージ・デバイス91〜93の異なる物理ロケーションに設置することが可能である。例えば、置換ストレージは高速インターフェース(即ち、インターネット、イントラネット、TCP/IPなど)によって要求時にアクセスすることが可能である。障害のあるストレージは、保証契約の一部として、障害分析のために工場に戻されることもある。次に、プロセスはステップ352からステップ353に進む。そこでは、図9のフローチャート360のステップ361への遷移が行われる。ステップ351において、答えがイエスである場合、プロセスはステップ353に直接に進む。或る実施例では、ストレージ・デバイス(即ち、RAID90におけるストレージ・デバイス91〜93)は個別の物理ロケーションに配置される。例えば、ストレージ・デバイス91,92、および93は、それぞれ、異なる部屋、ビルディング、都市、州、国などにストレージ・デバイス92〜93を設けることによって相互に物理的に分離され得る。
図10では、エンコード済みデータが、図12に示されたエンコーダによってエンコードされたデータのような、2ビットのワードを含むものと仮定される。図4におけるデバイス263〜264のような1ビット幅のストライプを有する一対の隣接したデバイスおよび図5のデバイス282のような2ビット幅のストライプを有する単一のデバイスが壊滅的な障害のためにすべてのデータを喪失したものと仮定される。図8および図9は、フローチャート340のステップ343においてそのデータを読み取ることができなかった場合、そのデータが再構成される方法を示す。
或る実施例では、ステップ720、725、730、および735(図6)が、図8に示されたフローチャート340のステップ346を介してステップ351に到達することによって達成される。判断ステップ345において、ゼロ・エラーを有するパスが識別されない場合、処理はステップ346に進む。そこでは、Q=nをセットすることによって、処理されたワードのnビットすべてが誤っているものと仮定され、プロセスは前述の判断ブロック351に進み、しかる後、フローチャート360(図9)のステップ361に進む。
図9では、プロセスはステップ361において開始し、判断ステップ362に進む。そこでは、ブランチIにおけるすべてのビットが失われた(即ち、Q=n)かどうか、およびnビットすべてがブランチIの喪失のために再構成される必要があるかどうかの決定が行われる。ステップ362における答えがイエスである場合、プロセスはステップ363に進む。そこでは、失われたブランチIがスキップされ、合計(Q−1)*n個の更なるビットが、Q−1個のワードを表す次のQ−1個のブランチから読み取られる。これがトレリス図の価値あるところであり、ブランチIからの欠落エンコード済みデータを決定するために、後続のブランチを「先読み」して使用することが可能である。次に、ステップ364において、n個の読み取りビットと、トレリス図300のI+1からI+(Q−1)までのブランチにおける許容可能なパスとの間で、XOR(排他的OR)プロセスがnビットのグループで行われる。次に、ステップ365において、ブランチI+1乃至I+(Q−1)における所望のパスが、ゼロのハミング距離(即ち、ゼロ・エラー)を有するブランチおよびゼロのハミング距離で相互に接続する事前に識別されたブランチである。ゼロのハミング距離はデコーディングにおけるゼロ・エラーと等価である。
一旦、ブランチI+1乃至I+(Q+1)においてデコーディング・パスが設定されると、欠落ブランチIが、事前に識別されたブランチI−1および新たに識別されたブランチI+1乃至I+(Q−1)におけるパスを接続するパスとして再構成される。この「接続性」は、トレリス図を通る正しいパスを設定するという点でクリティカルである。図7のトレリス図300における強調表示された太線として示されたデコード済みパス全体が、トレリス図における各ブランチにおける個々のパスの連続的接続によって達成される。それは、ゼロのハミング距離によって識別されるこの再構成されたパスであり、ステップ351において購入された予備のデバイスに書き込まれる。次に、プロセスはステップ365からステップ366(図9)に進む。そこでは、ブランチ・インデックスがQ−1だけインクリメントされて再構成プロセスのこのフェーズ中にデコードされたブランチを表す。しかる後、プロセスはステップ366からステップ378に進む。そこでは、回復した欠落エンコード済みデータが予備ストレージに記憶される。しかる後、プロセスはステップ378からステップ379に進み、そこでは、プロセスが図8のステップ355に戻る。
図10は、図12に示された(2,1,3)畳み込みエンコーダによりエンコードされたデータに関するデータ再構成の一例を示す。図10の場合、失われたデータはすべてブランチ・インデックスI=1を含むものであり、それはQ=2喪失ビットおよびQ=nを意味する。最後の既知の状態は、ブランチ・インデックスI=0に対して計算されたS1 311B である。図10は、すべての不可能な状態がトレリス図300から除去されることによって、図7のトレリス図300から作成された。図10に関して、ブランチI=1に対して、容認可能な遷移は、S1311B から S2 312C および S3 313C への遷移であり、ブランチIの欠落エンコード済みデータを再構成するためには、これら2つの遷移のどちらがエンコード済みデータによって実際に行われたかに関する決定が、行われる必要がある。ブランチIに関する欠落データを再構成するため、フローチャート340(図8)がブランチを「先読み」し、エンコード済みデータが、ステップ364に示されるようにブランチI=2(Q=2)であるブランチI+Q−1に対してコード化データ87から読み取られる。そのエンコード済みデータは、図10によれば01 である。S2 312C から S4 314D への遷移は図13のテーブル290に従って 11 を表し、S2 312C から S5 315D への遷移は00 である。同様に、S3 313C から S6 316D への遷移は図13のテーブル290に従って 10 を表し、S3 313C から S7 317D への遷移は01 を表す。
フローチャート360(図9)のステップ364によれば、ブランチI=2(I+Q−1=2)に対して読み取られたエンコード済みデータとブランチI=2に対する4つの可能なパスによって表されたエンコード済みデータとの間のXORプロセスは下記の結果、即ち、S3 313C から S7 317D への遷移に対して、01XOR01=00、S3 313C から S6 316D への遷移に対して、10XOR01=10、S2312C から S5 315D への遷移に対して、00XOR01=01、および S2 312C から S4 314D への遷移に対して、11XOR01=10 を与える。従って、S3313C から S7 317D への遷移は、ブランチI=2に対するゼロのハミング距離(01XOR01=00)に基づいた唯一の可能なパスを表す。トレリス図におけるデコードされたパス相互間の必要な接続性に基づいて、欠落エンコード済みデータが、ブランチI=1におけるS1 311B から S3 313C への遷移によって表されなければならない。欠落エンコード済みデータは 10 である。従って、ブランチI=1およびI=2に対するエンコード済みデータは10 および 01 であり、これらの2つのブランチに対するデコードされた情報は 11 である。デコーディングが2つのブランチに対して行われたので、ブランチ・インデックスはステップ366においてQ−1=1ずつ、および、デコーディング・プロセスが進行していると仮定すると、ステップ349において再び1ずつ、増加しなければならない。再構成されたエンコード済みデータがRAID90の予備ストレージ97に記憶される。この再構成がユーザ開始読み取りプロセスの一部として行われた場合、再構成プロセスの一部として得られたオリジナル情報は、例えばホスト・コンピュータ61〜65の1つへの最終的な送信のために、RAM84に置かれる。
ステップ363〜366(図9)がブランチIにおけるnビットすべてを再構成する。ステップ362において、Qがnに等しくない場合、ブランチIのすべてではない幾つかのビットが回復され、プロセスは、ブランチIの部分的再構成のためにステップ362からステップ370に進む。
ステップ370において、読み取られる使用可能なビットがトレリス・デコーダのブランチIにおける各許容可能なパスとXORされる。しかる後、プロセスはステップ370から判断ステップ371に進む。そこでは、読み取られたビットに対してゼロ・エラーを有するブランチIにおける所望のパスを一意的に識別するに十分な残存情報があるかどうかの判断が行われる。答えがイエスである場合、プロセスはステップ372に進む。そこでは、オリジナル・データおよび欠落エンコード済みデータの両方を与えるためにゼロ・エラーを有するブランチIにおけるパスが選ばれる。しかる後、プロセスはステップ372からステップ378に進む。そこでは、回復された欠落エンコード済みデータが予備ストレージに記憶される。しかる後、プロセスはステップ378からステップ379に進み、図8のステップ355に戻る。
図10のブランチIにおける部分的に完全な情報の一例は、ブランチI=1に対して1ビットが取り出され、1ビットが欠落している場合である。ブランチI=1における部分的に回復されたデータの存在が図9のステップ362において検出される。 S1 311B から S2 312C へのパスはエンコード済みデータ 01 を表す。S1 311B から S3 313C へのパスはエンコード済みデータ10 を表す。従って、2ビット対のデータにおける先頭ビットまたは末尾ビットが使用可能である場合、これは図9のステップ371〜372を介して図10のブランチI=1に対する正しいパスを決定するに十分である。例えば、先頭ビットが1であり、末尾ビットが喪失ビットである場合、再構成されたエンコード済みデータは、先頭ビット1を有するブランチI=1における唯一の許容し得るパスがS1 311B から S3 313C へのパスであること、即ち、それが、ゼロのハミング距離を生じる唯一の許容可能なパスであることに基づいて、10 である。そこで、その再構成データは、図9のステップ378において図1の予備ストレージ97に記憶される。この再構成が図6のプロセス700のようなユーザ開始読み取りプロセスの一部として行われた場合、再構成プロセスの一部として得られたオリジナル情報がRAM84に置かれる。
ステップ371において、読み取られたビットに対してゼロのハミング距離を有するブランチIにおけるパスを識別するために十分なコード化データの残存ビットが存在しない場合、プロセスはステップ373に進む。そこでは、次のnビットがコード化データ87から読み取られ、トレリス図のブランチI+1において分析されるワードを形成する。しかる後、プロセスはステップ374に進む。ステップ374では、トレリス・デコーダのブランチI+1における各許容可能なパスとn個の読み取られたビットとのXORが行われ、ゼロのハミング距離(ゼロ・エラー)を有するパスを分離する。図7および図11は、特定のトレリス・デコーダ300および500の例である。部分的に読み取られたブランチIと両立しないブランチI+1におけるパスが許容可能であるとは考えられず、無視される。プロセスはステップ374からステップ375に進む。そこでは、ゼロのハミング距離を有するブランチI+1におけるパスを選択する。ブランチIにおけるパスは、そのパスがブランチI−1およびI+1において既に識別されたパスがすべて接続されるように選択される。これは、個々のブランチ・パスがトレリス図の全域で隣接ブランチにおけるパスに接続されなければならないことを意味する。このようにして、ブランチIに対する欠落エンコード済みデータ並びにブランチIおよびブランチI+1の両方に対するオリジナル情報が識別される。しかる後、プロセスはステップ375からステップ377に進む。そこでは、ブランチ・インデックスIが単位数だけインクリメントされる。しかる後、プロセスは、既に説明したステップ377からステップ378に進む。
図11のトレリス図500のように、1ワード内に3ビットがある場合、ブランチIの回復は、ゼロのハミング距離を有するブランチI−1、I、I+1、およびI+2を通る接続パスを見つけるために、ブランチI+1およびI+2の「先読み」を行うことで可能である。
データ再構成は、障害後に、バックグラウンド・プロセスの使用によってまたはフォアグラウンド・プロセスの使用によって行うことが可能である。バックグラウンド・プロセスは、コントローラ80が、ホスト・コンピュータ61〜65の如何なる関与にも関係なく、データ再構成を行う場合である。フォアグラウンド・プロセスは、コントローラ80が、データを再構成するようにホスト・コンピュータ61〜65の1つによって特別に要求される場合である。データは、真の第1ストライプから真の最終ストライプまでバックグラウンドにおいて再構成され得る。更に、データ・ファイルが相互に無関係にエンコードされるので、顧客により要求されるとき、データをフォアグラウンドで再構成することが可能である。一旦データがフォアグラウンドで再構成されると、コントローラ80がバックグラウンドにおける再構成活動を監視し且つフォアグラウンドにおいてどのファイルが既に再構成されたかに関してスキャンするのであれば、そのデータはバックグラウンドで再構成される必要がない。エンコード済みデータを2回、即ち、フォアグラウンドで1回(ホスト・コンピュータ61〜65の1つによって要求されたユーザ要求に基づいて)およびバックグラウンドで再び(欠落エンコード済みデータがフォアグラウンドにおいて既に再構成されたことを、コントローラ80によって実行されたバックグラウンド・プロセスが無視したため)、再構成する必要はない。
図12には、(2,1,3)バイナリ畳み込みエンコーディングのための状態図200が示される。RAID90からホスト・コンピュータ61〜65の1つへの図6の読み取りプロセス700中に使用されるのは図7のトレリス・デコーダ300であり、それは、ホスト・コンピュータ61〜65の1つからRAID90へのオリジナルの書き込みプロセス中に状態図200によって作成されたコード化データ87をデコードする。状態図200は、8つの状態、即ち、S0210、S1 211、S2 212、S3 213、S4 214、S5 215、S6 216、および S7 217 を含む。状態図200における状態相互間の個々の遷移が数および方向において制限される。例えば、状態S0 210 において始まるエンコーディング・プロセスは、S0 210 に戻るように遷移するかまたは S1 211 に進むことができる。同様に、S1 211 からのプロセスは、S2212 または S3 213 にのみ遷移し得る。状態図200における状態相互間の各遷移は、1ビットの情報を2ビットのエラー訂正コード化データにエンコードするという結果を生じる。このエンコーディングは、更に、図13におけるテーブル290に関連して更に説明される。
図13におけるテーブル290は、4つの欄、即ち、初期状態291、宛先状態292、入力情報293、およびエラー訂正コード化データ294を有する。状態図200における合計8個の状態と、1つの特定状態から次の直ちに起こり得る状態への2つの可能な遷移とに基づいて、テーブル290における合計16個の行が存在する。テーブル290は、状態図200から作成され、ここでは、コード化データを生成するための情報のエンコーディングおよびオリジナル情報を得るためのエンコード済みデータのデコーディングの両方を表すために使用される。
図12には、S0 210、S1 211、S3 213、S7 217、S7 217、S6 216、S4 214、および S0 210 を含む強調表示されたエンコーディング・パスが入力情報1111000 の例示エンコーディングのために示される。S0 210 から S1 211 への遷移は 1 を11 にエンコードする。S1 211 から S3213 への遷移は 1 を 10 にエンコードする。 S3 213 から S7 217 への遷移は 1 を 01 にエンコードする。S7 217 から S7217 への遷移は 1 を 10 にエンコードする。S7 217 から S6 216 への遷移は 0 を 01 にエンコードする。S6 216 から S4214 への遷移は 0 を 00 にエンコードする。最後に、S4 214 から S0 210 への遷移は 0 を 11 にエンコードする。この結果は、入力情報(即ち、ホスト・コンピュータ61〜65からのホスト情報)1111000がRAID90に記憶するためにエラー訂正コード化データ 11100110010011 にエンコードされるということである。図7のトレリス図300において、エラー訂正コード化データ11100110010011 がデコードされてオリジナル情報 1111000 を生成し、それは図7に示された強調表示パスである。
図14には、図12の状態図200および図13のテーブル290のバイナリ(2,1,3)コードのためのエンコーダ回路220が示される。エンコーダ回路220は、コントローラ80の特定回路81に存在し得る。代替として、エンコーダ回路220はコントローラ80の外に実装されてもよい。エンコーダ回路220は、エンコードするための入力データ・ストリームU(J)221を一時に1ビットずつ受ける。エンコーダ回路220は、エンコーディング・プロセスのためのレジスタ230、231、および232を含むm=3ステージのシフト・レジスタを含む。レジスタ230〜232の初期内容はゼロであり、従って、図7のトレリス図300および図11のトレリス図500に表されるようなトレリス・デコーディング・プロセスは常に状態S0 で開始および終了する。
図14を参照すると、入力情報ストリームU(J)221並びにレジスタ230、231、および232の出力が、出力V(J,1)241を生成するための加算機構240および出力V(J,2)243を生成するための加算機構242を含むn=2モジュロ−2加算機構(バイナリ加算のための桁上げを生じない)によって選択的に加算される。マルチプレクサ251は、個々のエンコーダ出力V(J,1)241およびV(J,2)243を直列化してエンコード済み出力V250にする。モジュロ2加算機構は、特定回路81においてXOR(排他的OR)ゲートとして、あるいは、代替として、ソフトウェア、ファームウェア、専用ロジックなどの使用によって実装することが可能である。モジュロ2バイナリ加算が線形オペレーションであるため、このエンコーダは線形フィードフォワード・シフト・レジスタとして動作し得る。図14におけるV(J,1)およびV(J,2)によって定義されるように、インデックスJに対するV250の各増分的出力はワードと呼ばれる。図7におけるトレリス図300および図11のトレリス図500の各ブランチはこれらのワードの1つを表す。従って、トレリス・デコーディングは、一時に1つのワードを供給される畳み込みエンコーダの出力に対応するために、1つのブランチが1つのワードを表すことによって行われる。
図15は、SCSI書き込みコマンドの一例である書き込みコマンド600を示す。このコマンドは、開始論理ブロック・アドレス(LBA)602、転送長603、および論理ユニット番号(LUN)604を含む。LUN604は、再構成されたエンコード済みデータが書き込みコマンド600によって書き込まれる予備ストレージ97のような予備ストレージ・デバイスを指定する。開始LBAは、データを受け取るべき予備ストレージ97における最初の論理ブロック・アドレスを表し、転送長603は、どれほど多くのデータが転送されるかを表す。書き込みコマンド600は、SCSIまたは Fiber Channel インターフェースにおいて実装することが可能である。書き込みコマンド600は、利用可能な唯一の可能な書き込みコマンドである。他のSCSI書き込みコマンドは、例えば、その書き込みコマンドがうまく終了する前に、書き込まれたデータが検証されるという書き込み及び検証を含む。
ここで開示された実施例は、全体的にハードウェアの実施例、全体的にソフトウェアの実施例、またはハードウェア及びソフトウェアの両方の要素を含む実施例の形式を取り得る。或る実施例では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがそれに限定されないソフトウェアで実装される。
更に、ここで開示された実施例は、コンピュータまたは何らかの命令実行システムによって、あるいはそれに関連して使用するためのコンピュータ可用媒体またはコンピュータ可読媒体からアクセスし得るコンピュータ・プログラムの形を取ることが可能である。この説明のために、コンピュータ可用媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、或いはそれに関連して使用するためのプログラムを含み、記憶し、通信し、伝播し、または搬送することが可能な任意の装置であってもよい。
媒体は、電子、磁気、電磁気、赤外線、または半導体システム(または装置もしくはデバイス)であってもよい。コンピュータ可読媒体は、半導体またはソリッドステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、固定磁気ディスク、および光ディスクを含む。光ディスクの例は、コンパクト・ディスク・リード・オンリ・メモリ(CD−ROM)、コンパクト・ディスク読み取り/書き込み(CD−R/W)、およびDVDを含む。
プログラム・コードを記憶または実行するに適したデータ処理システムは、システム・バスを介してメモリ素子に直接的または間接的に結合された少なくとも1つのプロセッサを含み得る。メモリ素子は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、バルク・ストレージ、およびプログラム・コードが実行中にバルク・ストレージから検索されなければならない回数を減らすために少なくとも幾つかのプログラム・コードの一時的記憶を行うキャッシュ・メモリを含み得る。
入出力デバイス(キーボード、ディスプレイ、ポインティング・デバイスなどを含むが、それに限定されない)は、直接にまたはI/Oコントローラ介してシステムに結合することが可能である。
ネットワーク・アダプタも、データ処理システムが専用ネットワークまたは公衆ネットワークを介して他のデータ処理システムあるいはリモート・プリンタまたはストレージ・デバイスに結合されることを可能にするためにシステムに結合され得る。モデム、ケーブル・モデム、及び Ethernet カードは、幾つかの現在使用可能なタイプのネットワーク・アダプタである。
ここで開示された実施例は、標準的なプログラミングまたはエンジニアリング技法を使用してソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せを生成するように、方法、装置、またはコンピュータ・プログラムとして実装することが可能である。
或る実施例では、本発明は、図6、図8、および図9に示されたフローチャートで表されるステップを遂行するためにプロセッサ82(図1)またはコントローラ80(図1)が実行し得る命令を含む。
別の実施例では、本発明は、任意の他のコンピュータ・プログラム内にあって、コントローラ80の外または内のコンピュータが実行する命令を含む。いずれの場合も、命令は、例えば、磁気的情報記憶媒体、光学的情報記憶媒体、および電子的情報記憶媒体などを含む情報記憶媒体にエンコードされ得る。「電子的記憶媒体」は、例えば、PROM、EPROM、EEPROM、FlashPROM、コンパクト・ディスク、スマート・メディアなどを意味する。
或る実施例は、上述の実施例に関するオペレーションを実行するためにコンピュータ可読コードをシステムに統合することを含む、コンピューティング・インフラストラクチャを配備するための方法に関するものでもよい。例えば、図6、図8、および図9は、上述の実施例の使用によって情報をコード化データの形で取り出すためのステップを示す。コンピュータ可読コードは、システム(即ち、SAN10)と結合して上述の実施例のオペレーションに関するステップを実行することができる。コンピューティング・インフラストラクチャの配備(デプロイメント)は、上述の実施例のサービス、製造、または構成中に行うことが可能である。例えば、コンサルティング・ビジネスは多くのシステムに対するサービス責任を持つことがある。そのようなサービス責任は、システム・アップグレード、エラー診断、性能の調整および向上、新たなハードウェアのインストール、新たなソフトウェアのインストール、他のシステムとの構成などのようなタスクを含み得る。サービスの一部として、あるいは別のサービスとして、サービス担当者は、上記の実施例のオペレーションを効果的に可能にするように、上述の技法に従ってシステムを構成し得る。例えば、そのような構成は、コードが実行されるとき、システムが上述の実施例を実装するために上述の技法を実行するよう、コンピュータ命令、パラメータ、定数(すなわち、畳み込みエンコーディングのタイプ、1ワードにおけるビットの数n、ストライプ幅、ストレージ・デバイスの数など)、割込みベクトルのメモリへのローディングを含み得る。
上記の記述は、説明のために、上記の実施例の十分な理解を与えるように特定の専門語を使用した。しかし、実施例のオペレーションを実用化するためには、特定の詳細を必要としないということは当業者には明らかであろう。別の例では、実施例から不要な逸脱を回避するために、周知の回路およびデバイスがブロック図形式で示される。従って、特定の実施例に関する上記の記述は例示および説明を目的として行われている。それらは、網羅的であることまたは開示されたそのままの形式に実施例のオペレーションを限定することを意図するものではない。明らかに、上記の教示事項から見て、多くの修正および変更が可能である。
図6、図8、および図9のロジックは、特定の順序で生じる特定のオペレーションを示す。別の実装方法では、或る論理オペレーションは異なる順序で実行され、修正され、除去され得る。更に、ステップが上記のロジックに加えられ、依然として上記の実装方法に適合し得る。更に、ここで開示された方法は順次に生じ得るし、或る幾つかのオペレーションは並行して処理され得るし、あるいは単一のプロセスによって実行されるものとして説明したオペレーションは分散プロセスによっても実行され得る。
図6、図8、および図9のロジックはソフトウェアで実装することが可能である。このロジックはホスト・システムのオペレーティング・システムの一部またはアプリケーション・プログラムであってもよい。更なる実装方法では、このロジックは、SAN10によって管理された記憶領域に、またはリード・オンリ・メモリもしくは他の配線型のデバイスに維持することも可能である。望ましいロジックを、ハードディスク・ドライブにおいてまたはプログラマブルおよび非プログラマブル・ゲート・アレイ・ロジックにおいて実装することも可能である。
RAIDの当業者は、上記の実施例と同等の他の実施例を開発することも可能であろう。本明細書において使用された用語および表現は、説明のために使用されたものであり、限定するために使用されたのではなく、そのような用語および表現の使用では、図示および記述された機能の均等物およびその一部分を排除することを意図するものでもない。本発明の技術的範囲は「特許請求の範囲」によってのみ定義および限定される。
例示的なストレージ・エリア・ネットワーク(SAN)を示すブロック図である。 例示的な読み取りコマンドを示す図である。 メタデータ構造を示す図である。 2ビット・ワード出力エンコーダのための1ビット幅ストライプを有する畳み込みRAIDを示す概略図である。 2ビット・ワード出力エンコーダのための2ビット幅ストライプを有する畳み込みRAIDを示す概略図である。 畳み込みエンコードされたRAIDからのエンコード済みデータの読み取りに関するフローチャートである。 (2,1,3)コードのためのトレリス・デコーダを示す図である。 欠落エンコード済みデータを検出するためにトレリス・デコーダを使用するためのフローチャートである。 欠落エンコード済みデータおよびそれが表す情報を再構成するためにトレリス・デコーダを使用するためのフローチャートである。 (2,1,3)コードのためのトレリス・デコーダを、欠落情報の再構成に関連して示す図である。 (3,2,1)コードのためのトレリス・デコーダを示す図である。 (2,1,3)エラー訂正コードのためのエンコーダ状態図である。 図12の(2,1,3)エラー訂正コードのためのエンコーディング状態を示す表である。 2出力、1入力、および3ステージの遅延素子を有する(2,1,3)バイナリ畳み込みエンコーダ回路を示す図である。 再構成されたエンコード済みデータを予備ストレージに書き込むために使用される例示的なSCSI書き込みコマンドを示す図である。

Claims (14)

  1. 複数のストレージ・デバイスと、
    前記複数のストレージ・デバイスに結合され、前記複数のストレージ・デバイスから受け取ったコード化データを処理してデコード済みデータを生成するトレリス・デコーダであって、前記コード化データが現在および過去の情報ビットの畳み込みによって生成されたエラー訂正コード化データを含む、トレリス・デコーダとを含み、
    前記コード化データのデコーディングまたは前記複数のストレージ・デバイスからの情報により障害のあるストレージ・デバイスが存在するかどうかを決定し、
    障害のあるストレージ・デバイスが存在するという決定に応答して、前記障害のあるストレージ・デバイスに事前に記憶されたコード化データを含む再構成データを記憶するための記憶スペースを割り振り、前記デコード済みデータを処理して前記再構成データを生成し、割り振られた記憶スペースに前記再構成データを記憶する、
    システム。
  2. 前記デコード済みデータにおけるエラーの量を測定し、
    前記エラーの量を前記複数のストレージ・デバイスに対するエラー限界と比較し、
    前記エラーの量が前記ストレージ・デバイスの1つに対するエラー限界を越えたことに応答して、当該ストレージ・デバイスを前記障害のあるストレージ・デバイスとして識別する、
    請求項1に記載のシステム。
  3. 前記複数のストレージ・デバイスから前記情報として自己監視分析および報告技術情報を受け取り、
    前記自己監視分析および報告技術情報が前記ストレージ・デバイスの1つに対する障害を表すことに応答して、当該ストレージ・デバイスを前記障害のあるストレージ・デバイスとして識別する、
    請求項1に記載のシステム。
  4. 前記コード化データが1つまたは複数のワードを含み、前記ワードの各々はnビット(但し、nはゼロよりも大きい)を含み、前記ワードの各々は前記情報の一部を処理する畳み込みエンコーダから生成され、前記複数のストレージ・デバイスのいずれも2つまたはそれ以上の連続したワードを持たない、請求項1に記載のシステム。
  5. 前記コード化データが1つまたは複数のワードを含み、前記ワードの各々はnビット(但し、nはゼロよりも大きい)を含み、前記ワードの各々は前記情報の一部を処理する畳み込みエンコーダから生成され、前記複数のストレージ・デバイスのいずれも前記ワードの各々における前記nビットのうちの2つ以上を持たない、請求項1に記載のシステム。
  6. 前記コード化データに関連したメタデータを処理するメタデータ・コントローラを更に含み、前記メタデータが、前記コード化データのためのストレージ・ロケーションを指定するストレージ・ロケーション情報を含む、請求項1に記載のシステム。
  7. 前記コード化データに関連したメタデータを処理するメタデータ・コントローラを更に含み、前記メタデータが、前記コード化データに対するエンコーディングのタイプを指定するエンコーダ情報を含む、請求項1に記載のシステム。
  8. 少なくとも1つのホスト・コンピュータと、
    複数のストレージ・デバイスと、
    前記複数のストレージ・デバイスに結合され、前記複数のストレージ・デバイスから受け取ったコード化データを処理してデコード済みデータを生成するトレリス・デコーダであって、前記コード化データが現在および過去の情報ビットの畳み込みによって生成されたエラー訂正コード化データを含む、トレリス・デコーダとを含み、
    前記コード化データのデコーディングまたは前記複数のストレージ・デバイスからの情報により障害のあるストレージ・デバイスが存在するかどうかを決定し、
    障害のあるストレージ・デバイスが存在するという決定に応答して、前記障害のあるストレージ・デバイスに事前に記憶されたコード化データを含む再構成データを記憶するための記憶スペースを割り振り、前記デコード済みデータを処理して前記再構成データを生成し、前記割り振られた記憶スペースに前記再構成データを記憶する、
    ストレージ・エリア・ネットワーク。
  9. 前記複数のストレージ・デバイスが別々の物理ロケーションに配分される、請求項8に記載のストレージ・エリア・ネットワーク。
  10. 複数のストレージ・デバイスからコード化データを受け取るステップと、
    トレリス・デコーダを使用して前記コード化データをデコードすることによってデコード済みデータを生成するステップと、
    前記コード化データのデコーディングまたは前記複数のストレージ・デバイスからの情報により障害のあるストレージ・デバイスが存在するかどうかを決定するステップと、
    障害のあるストレージ・デバイスが存在するという決定に応答して、前記障害のあるストレージ・デバイスに事前に記憶されたコード化データを含む再構成データを記憶するための記憶スペースを割り振り、前記デコード済みデータを処理して前記再構成データを生成し、前記割り振られた記憶スペースに前記再構成データを記憶するステップと、
    を含む方法。
  11. コンピュータに、
    複数のストレージ・デバイスからコード化データを受け取る手順と、
    トレリス・デコーダを使用して前記コード化データをデコードすることによってデコード済みデータを生成する手順と、
    前記コード化データのデコーディングまたは前記複数のストレージ・デバイスからの情報により障害のあるストレージ・デバイスが存在するかどうかを決定する手順と、
    障害のあるストレージ・デバイスが存在するという決定に応答して、前記障害のあるストレージ・デバイスに事前に記憶されたコード化データを含む再構成データを記憶するための記憶スペースを割り振り、前記デコード済みデータを処理して前記再構成データを生成し、前記割り振られた記憶スペースにおいて前記再構成データを記憶する手順と、
    を実行させるためのコンピュータ・プログラム。
  12. 前記コンピュータに、更に、前記記憶スペースを割り振ることに対する料金を顧客に課す手順を実行させる、請求項11に記載のコンピュータ・プログラム。
  13. 前記コンピュータに、更に、前記割り振られた記憶スペースに前記再構成データを記憶することに対する料金を顧客に課す手順を実行させる、請求項11に記載のコンピュータ・プログラム。
  14. コンピュータ可読コードをシステムに統合するステップを含む、コンピューティング・インフラストラクチャを配備するための方法であって、前記コードが、前記システムと結合して、
    複数のストレージ・デバイスからコード化データを受け取るステップと、
    トレリス・デコーダを使用して前記コード化データをデコードすることによってデコード済みデータを生成するステップと、
    前記コード化データのデコーディングまたは前記複数のストレージ・デバイスからの情報により障害のあるストレージ・デバイスが存在するかどうかを決定するステップと、
    障害のあるストレージ・デバイスが存在するという決定に応答して、前記障害のあるストレージ・デバイスに事前に記憶されたコード化データを含む再構成データを記憶するための記憶スペースを割り振り、前記デコード済みデータを処理して前記再構成データを生成し、前記割り振られた記憶スペースに前記再構成データを記憶するステップと
    を実行することができる、方法。
JP2006129865A 2005-05-09 2006-05-09 トレリス・デコード再ビルドを伴う畳み込みエンコードraid Expired - Fee Related JP4988247B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/125,288 2005-05-09
US11/125,288 US7370261B2 (en) 2005-05-09 2005-05-09 Convolution-encoded raid with trellis-decode-rebuild

Publications (2)

Publication Number Publication Date
JP2006318467A JP2006318467A (ja) 2006-11-24
JP4988247B2 true JP4988247B2 (ja) 2012-08-01

Family

ID=37389934

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006129865A Expired - Fee Related JP4988247B2 (ja) 2005-05-09 2006-05-09 トレリス・デコード再ビルドを伴う畳み込みエンコードraid

Country Status (5)

Country Link
US (2) US7370261B2 (ja)
JP (1) JP4988247B2 (ja)
KR (1) KR100827281B1 (ja)
CN (1) CN1862500B (ja)
TW (1) TW200713844A (ja)

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7681072B1 (en) * 2004-08-13 2010-03-16 Panasas, Inc. Systems and methods for facilitating file reconstruction and restoration in data storage systems where a RAID-X format is implemented at a file level within a plurality of storage devices
US7401253B2 (en) * 2005-05-09 2008-07-15 International Business Machines Corporation Convolution-encoded data storage on a redundant array of independent devices
US20070150138A1 (en) 2005-12-08 2007-06-28 James Plante Memory management in event recording systems
US10878646B2 (en) 2005-12-08 2020-12-29 Smartdrive Systems, Inc. Vehicle event recorder systems
US8996240B2 (en) 2006-03-16 2015-03-31 Smartdrive Systems, Inc. Vehicle event recorders with integrated web server
US9201842B2 (en) 2006-03-16 2015-12-01 Smartdrive Systems, Inc. Vehicle event recorder systems and networks having integrated cellular wireless communications systems
US20080043736A1 (en) * 2006-08-18 2008-02-21 Drivecam, Inc. Data Transfer System and Method
US8239735B2 (en) 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
WO2007132452A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Reducing programming error in memory devices
CN103280239B (zh) 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
US7821826B2 (en) 2006-10-30 2010-10-26 Anobit Technologies, Ltd. Memory cell readout using successive approximation
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US8649933B2 (en) 2006-11-07 2014-02-11 Smartdrive Systems Inc. Power management systems for automotive video event recorders
US8989959B2 (en) 2006-11-07 2015-03-24 Smartdrive Systems, Inc. Vehicle operator performance history recording, scoring and reporting systems
US8868288B2 (en) 2006-11-09 2014-10-21 Smartdrive Systems, Inc. Vehicle exception event management systems
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
CN101681282A (zh) 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US7900102B2 (en) 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
US8667379B2 (en) 2006-12-20 2014-03-04 International Business Machines Corporation Apparatus and method to generate, store, and read, a plurality of error correction coded data sets
US7751240B2 (en) 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US8001320B2 (en) 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
US8239092B2 (en) 2007-05-08 2012-08-07 Smartdrive Systems Inc. Distributed vehicle event recorder systems having a portable memory data transfer system
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
US8713253B1 (en) * 2007-06-18 2014-04-29 Guidance-Tableau, Llc Modular storage system
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US7822892B2 (en) * 2007-07-19 2010-10-26 International Business Machines Corporation Managing the copying of writes from primary storages to secondary storages across different networks
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US7793146B1 (en) * 2007-08-07 2010-09-07 Panasas, Inc. Methods for storing data in a data storage system where a RAID-X format or formats are implemented at a file level
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
US8068360B2 (en) 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
US8527819B2 (en) 2007-10-19 2013-09-03 Apple Inc. Data storage in analog memory cell arrays having erase failures
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
US8270246B2 (en) 2007-11-13 2012-09-18 Apple Inc. Optimized selection of memory chips in multi-chips memory devices
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8085586B2 (en) 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US7924587B2 (en) 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US8059457B2 (en) 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8261159B1 (en) 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8397131B1 (en) 2008-12-31 2013-03-12 Apple Inc. Efficient readout schemes for analog memory cell devices
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8572311B1 (en) 2010-01-11 2013-10-29 Apple Inc. Redundant data storage in multi-die memory systems
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
CN102314322B (zh) * 2011-07-01 2015-04-15 杭州华三通信技术有限公司 一种基于raid阵列的数据处理方法和设备
US8677214B2 (en) * 2011-10-04 2014-03-18 Cleversafe, Inc. Encoding data utilizing a zero information gain function
JP5943395B2 (ja) * 2011-11-02 2016-07-05 国立大学法人 東京大学 メモリコントローラおよびデータ記憶装置
US9728228B2 (en) 2012-08-10 2017-08-08 Smartdrive Systems, Inc. Vehicle event playback apparatus and methods
US9495246B2 (en) * 2013-01-21 2016-11-15 Kaminario Technologies Ltd. Raid erasure code applied to partitioned stripe
US8996741B1 (en) * 2013-09-25 2015-03-31 International Business Machiness Corporation Event driven remote direct memory access snapshots
US9501878B2 (en) 2013-10-16 2016-11-22 Smartdrive Systems, Inc. Vehicle event playback apparatus and methods
US9610955B2 (en) 2013-11-11 2017-04-04 Smartdrive Systems, Inc. Vehicle fuel consumption monitor and feedback systems
US9660882B2 (en) * 2014-01-07 2017-05-23 International Business Machines Corporation Selective convolution encoding of data transmitted over degraded links
US8892310B1 (en) 2014-02-21 2014-11-18 Smartdrive Systems, Inc. System and method to detect execution of driving maneuvers
US9663127B2 (en) 2014-10-28 2017-05-30 Smartdrive Systems, Inc. Rail vehicle event detection and recording system
US11069257B2 (en) 2014-11-13 2021-07-20 Smartdrive Systems, Inc. System and method for detecting a vehicle event and generating review criteria
US9679420B2 (en) 2015-04-01 2017-06-13 Smartdrive Systems, Inc. Vehicle event recording system and method
CN107748702B (zh) * 2015-06-04 2021-05-04 华为技术有限公司 一种数据恢复方法和装置
CN105389243B (zh) * 2015-10-26 2018-06-05 华为技术有限公司 一种容器监控方法和装置
US20170337103A1 (en) * 2016-05-19 2017-11-23 Intel Corporation Method and apparatus to provide data redundancy in a solid-state drive
US10114696B2 (en) * 2016-07-14 2018-10-30 International Business Machines Corporation Tracking data access in a dispersed storage network
US10304468B2 (en) * 2017-03-20 2019-05-28 Qualcomm Incorporated Target sample generation
US10848554B2 (en) * 2017-03-30 2020-11-24 Oracle International Corporation Memory efficient asynchronous high availability replication
CN109150792B (zh) * 2017-06-15 2022-03-08 杭州海康威视数字技术股份有限公司 一种提高数据存储安全性方法及装置
US10727867B2 (en) * 2018-06-28 2020-07-28 Western Digital Technologies, Inc. Error correction decoding augmented with error tracking
WO2020150600A1 (en) * 2019-01-17 2020-07-23 The Trustees Of Princeton University System and method for decoding reed-muller codes
CN109948186B (zh) * 2019-02-19 2023-04-28 中国科学院微电子研究所 一种汉明码SRAM时序参数Setup特征化建模方法
US10969969B2 (en) * 2019-06-26 2021-04-06 Western Digital Technologies, Inc. Use of recovery behavior for prognosticating and in-situ repair of data storage devices
US11237893B2 (en) 2019-06-26 2022-02-01 Western Digital Technologies, Inc. Use of error correction-based metric for identifying poorly performing data storage devices
US11340986B1 (en) * 2020-12-08 2022-05-24 Western Digital Technologies, Inc. Host-assisted storage device error correction
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6081925A (ja) * 1983-10-12 1985-05-10 Nec Corp 誤り訂正装置
US4761785B1 (en) 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
JPH0731582B2 (ja) 1990-06-21 1995-04-10 インターナショナル・ビジネス・マシーンズ・コーポレイション パリティ保護データを回復するための方法および装置
US5315602A (en) 1992-08-12 1994-05-24 Digital Equipment Corporation Optimized stripe detection for redundant arrays of disk drives
JP3305966B2 (ja) * 1995-12-25 2002-07-24 ソニー株式会社 データ復号装置及びその方法並びにデータ再生装置
US5987562A (en) * 1996-03-08 1999-11-16 Texas Instruments Incorporated Waveform sampler and method for sampling a signal from a read channel
JP3679853B2 (ja) * 1996-03-15 2005-08-03 株式会社日立グローバルストレージテクノロジーズ ディジタル記録再生方法および信号処理装置
US6219800B1 (en) 1998-06-19 2001-04-17 At&T Corp. Fault-tolerant storage system
JP2000068862A (ja) * 1998-08-19 2000-03-03 Fujitsu Ltd 誤り訂正符号化装置
US6516443B1 (en) 2000-02-08 2003-02-04 Cirrus Logic, Incorporated Error detection convolution code and post processor for correcting dominant error events of a trellis sequence detector in a sampled amplitude read channel for disk storage systems
US6868132B1 (en) * 2000-02-10 2005-03-15 Motorola, Inc. Soft output decoder for convolutional codes
JP4144727B2 (ja) * 2001-07-02 2008-09-03 株式会社日立製作所 情報処理システム、記憶領域提供方法、およびデータ保持管理装置
JP4141665B2 (ja) * 2001-07-10 2008-08-27 株式会社日立製作所 ストレージの運用方法およびこれに用いるストレージおよび遠隔ストレージ
JP4685317B2 (ja) * 2002-03-29 2011-05-18 株式会社富士通ソーシアルサイエンスラボラトリ データ分散格納方法、データ分散格納装置、プログラム及びバックアップサイト
KR20040054267A (ko) * 2002-12-18 2004-06-25 한국전자통신연구원 다중 레이드 제어기를 갖는 분산공유 레이드 시스템 및 그관리방법
JP4546387B2 (ja) * 2005-11-17 2010-09-15 富士通株式会社 バックアップシステム、方法及びプログラム

Also Published As

Publication number Publication date
CN1862500A (zh) 2006-11-15
US7370261B2 (en) 2008-05-06
TW200713844A (en) 2007-04-01
CN1862500B (zh) 2010-06-16
KR100827281B1 (ko) 2008-05-07
KR20060116150A (ko) 2006-11-14
JP2006318467A (ja) 2006-11-24
US20080209304A1 (en) 2008-08-28
US8245113B2 (en) 2012-08-14
US20060253767A1 (en) 2006-11-09

Similar Documents

Publication Publication Date Title
JP4988247B2 (ja) トレリス・デコード再ビルドを伴う畳み込みエンコードraid
US8316259B2 (en) Convolution-encoded data storage on a redundant array of independent devices
US8234444B2 (en) Apparatus and method to select a deduplication protocol for a data storage library
US9104790B2 (en) Arranging data handling in a computer-implemented system in accordance with reliability ratings based on reverse predictive failure analysis in response to changes
US7979635B2 (en) Apparatus and method to allocate resources in a data storage library
US20150339194A1 (en) Managing raid parity stripe contention
US20150012775A1 (en) Redundant array of independent disks (raid) system backup management
EP1895414A1 (en) Storage control apparatus and failure recovery method for storage control apparatus
US20080244309A1 (en) Disk array device, operating method thereof and program-storing medium
JP2001147785A (ja) データを管理する方法
US9740440B2 (en) Separating a hybrid asymmetric mix of a RAID 1 mirror and a parity-based RAID array
US11074130B2 (en) Reducing rebuild time in a computing storage environment
US20070168703A1 (en) Apparatus and method to assign network addresses in a storage array
JP2007200299A (ja) データ記憶システムに配置された記憶アレイを再構成するための装置及び方法
KR101621752B1 (ko) 부분접속 복구 가능한 반복분할 부호를 이용한 분산 저장 장치 및 그 방법
JP2016143220A (ja) ストレージシステムの信頼性検証プログラム、信頼性検証方法、信頼性検証装置、及びストレージシステム
US7992072B2 (en) Management of redundancy in data arrays
US7506201B2 (en) System and method of repair management for RAID arrays
WO2012010930A2 (en) Integrated circuit device, data storage array system and method therefor
JP4859150B2 (ja) 畳み込み符号化されたデータを生成するシステム、プログラム及び方法
JP2005209227A (ja) ディスクアレイ装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090206

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110628

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20110711

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110711

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110920

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: 20120403

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120403

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120426

R150 Certificate of patent or registration of utility model

Ref document number: 4988247

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees