JP5302892B2 - ストレージシステムにおける書き込み処理を最適化するためのシステム、及び方法 - Google Patents

ストレージシステムにおける書き込み処理を最適化するためのシステム、及び方法 Download PDF

Info

Publication number
JP5302892B2
JP5302892B2 JP2009535301A JP2009535301A JP5302892B2 JP 5302892 B2 JP5302892 B2 JP 5302892B2 JP 2009535301 A JP2009535301 A JP 2009535301A JP 2009535301 A JP2009535301 A JP 2009535301A JP 5302892 B2 JP5302892 B2 JP 5302892B2
Authority
JP
Japan
Prior art keywords
data
parity
disk
block
module
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
JP2009535301A
Other languages
English (en)
Other versions
JP2010508604A (ja
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 JP2010508604A publication Critical patent/JP2010508604A/ja
Application granted granted Critical
Publication of JP5302892B2 publication Critical patent/JP5302892B2/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/1052RAID padding, i.e. completing a redundancy group with dummy data
    • 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/1054Parity-fast hardware, i.e. dedicated fast hardware for RAID systems with parity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

本発明は、ストレージシステムに関し、詳しくは、データ書き込み処理の最適化に関する。
ストレージサーバは、入出力(I/O)クライアント要求に応答し、一、又は複数のクライアント処理システム(「クライアント」)の代わりに、データを記憶、及び取得するように構成された処理システムである。ストレージサーバは、多種多様な目的に使用される場合があり、例えば複数のユーザに対し、共有データへのアクセスや、データのバックアップを提供することがある。
ストレージサーバの一例はファイルサーバである。ファイルサーバは、一、又は複数のクライアントの代わりに、共有ファイルを一組の磁気ディスク、又は光ディスク、あるいは磁気テープのような大容量記憶装置に記憶し、管理する働きをする。大容量記憶装置は、RAID(Redundant Array of Independent or Inexpensive Disks)の一、又は複数のボリュームとして編成される場合がある。ストレージサーバの他の例には、記憶されたデータへのファイルレベルアクセスではなくブロックレベルアクセスをクライアントに提供する装置、あるいは、ファイルレベルアクセスとブロックレベルアクセスの両方をクライアントに提供する装置がある。
ストレージサーバでは、時々、例えば、大容量記憶装置の一つが故障したときに、データが破損したり、失われたりすることがある。そのため、近代的なストレージサーバは全て、記憶されたデータを保護するための種々の技術を実施している。現在、そのような技術は、データ保護値(例えば、パリティ)を計算し、パリティを種々の場所に記憶することを必要とする。パリティは、ディスクアレイ中の複数のディスクにわたって広がる1つのストライプ中のデータブロックの排他的論理和(XOR)として計算される場合がある。例えばRAID4、又はRAID5のような単一パリティ方式では、ストライプ上の任意のブロックにおける誤りを単一のパリティブロック(「行パリティ」とも呼ばれる)を使用して訂正することが出来る。例えばRAIDダブルパリティ(RAID−DP)のような二重パリティ方式では、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス,インコーポレイテッドが発明した技術により、2台のディスク故障から生じるエラーを2つのパリティブロックを使用して訂正することができる。第1のパリティは、ストライプ中のデータブロックのXORの結果として計算される行パリティブロックである。第2のパリティは、対角パリティセットにおけるデータブロックの排他的論理和演算(XOR)として計算される場合がある。
上記のパリティ保護方式は、データ保護を提供するものの、ディスク上のデータブロックを変更するために、つまり、新たなパリティを計算するために、複数の読み出し処理、及び書き込み処理を実施しなければならない。例えば、あるRAID5方式では、データブロック(複数の場合もあり)を変更するために、パリティブロックを読み出す。さらに、変更されるデータブロックのデータも読み出される。そして、そのパリティブロックとデータブロックに対して、排他的論理和(XOR)演算が実施される。新たなパリティを計算するために、先のステップのXORの結果が、新たなデータとXOR演算される。新たなデータと新たなパリティは、ディスクに書き込まれる。このように、2回の読み出し処理(パリティブロックの読み出しと、データブロックの読み出し)、及び2回の書き込み処理(新たなデータの書き込みと、新たなパリティの書き込み)が必要になる。このプロセスは、しばしば、「リード・モディファイ・ライト」、又は「パリティ・バイ・サブトラクション・ライト」と呼ばれることがある。予備的な読み出し処理を行うシステムの中には、書き込み処理を実施する前に、記憶装置(例えば、ディスク)が元の位置まで回転して戻るのを待たなければならないシステムもある。従って、データブロックを変更するために複数回の読み出し処理を実施すれば、回転遅延が発生し、回転遅延は、システムの全体的処理能力に影響を与えることになる。
特定の幾つかの読み出し処理の省略を試みる幾つかの既知の解決策がある。ある一つの既知の解決策では、新たなパリティを含めて、1つのストライプ全体を書き込まなければならない。この技術は、「フル・ストライプ・ライト」と呼ばれる。しかしながら、ファイルシステムが古くなるのにつれて、フル・ストライプ・ライトを行うファイルシステムの能力は低下する。
特定の幾つかの読み出し処理を省略するための他の解決策は、新たなデータが書き込まれることになるデータブロックから、データをメモリキャッシュに記憶することである。古いデータは現在キャッシュにあるため、新たなデータを書き込む前に古いデータを読み出す必要はない。ただし、この解決策は、相当な量のメモリキャッシュを必要とするので、あまり効果的ではない場合がある。
従って、複数回の読み出し処理の実施に伴う待ち時間の増加を無くすために、I/Oオペレーションを最適化する方法、及びシステムが必要とされている。
本発明の種々の実施形態は、複数のクライアントの代わりに、複数のディスクのような記憶装置上のデータをアクセスし、取得する動作をするストレージサーバによって実施されるI/Oオペレーションを最適化する方法、システム、及びコンピュータプログラム製品を提供する。本発明の種々の実施形態によれば、ディスク上の空きの物理的データブロックはゼロ化される。クライアントシステムが、新たなデータを書き込むために、ストレージサーバに対してアクセス要求を行うと、ストレージサーバは、その要求を解読し、一、又は複数のディスク上の物理データブロックにデータを書き込むための内部コマンドを発行する。本発明の実施形態によれば、新たなデータが書き込まれる物理的データブロックは既にゼロ化されているので、新たなデータを書き込むときに、それらのデータブロックを読み出す必要は無い。さらに、本発明のの実施形態によれば、一、又は複数の物理的データブロックに変更が加えられたストライプについて、新たなパリティを計算するために、古いパリティを読み出す必要は無い。代わりに、新たなパリティは、書き込まれるデータから完全に計算され、あるいは、ストレージサーバが、新たなデータが書き込まれるストライプに関するパリティを記憶するディスクに対し、コマンド(複数の場合もあり)を発行する。そのディスクのモジュールは、そのコマンド、及び書き込まれる新たなデータ(又は、新たなデータに対するXOR演算の結果)を受信し、ストレージサーバが、古いパリティを読み出す必要なく、その新たなデータが書き込まれるストライプについて、新たなパリティを計算する。新たなデータが書き込まれる物理的データブロックを読み出す必要を無くすと共に、古いパリティを読み出す必要性を無くすことにより、多少の回転待ち時間が不要になり、ストレージサーバの処理能力は向上する。
また、本発明によれば、RAID4、又はRAID5においてあるディスクが故障し、他のディスク(そのディスクはメディアエラーを有する)上の一、又は複数のデータブロックからデータを読み出すことが出来ないとき、あるいは二重パリティ方式RAIDにおいて2台のドライブが故障し、他のディスク上の一、又は複数のデータブロックからデータを読み出すことが出来ないときにおける、データ保護を向上させることができる。ストレージサーバは、故障したディスクの一つがゼロ値を記憶していることを知っているので、メディアエラーのあるディスクからデータを復元することが出来る。このデータは、通常ならば、RAID4やRAID5、あるいは二重パリティRAIDシステムにおいても復元出来ないであろう。
さらに別の実施形態として、ストレージオペレーティングシステムが、データの書き込みのためにライト・イン・プレイス(WIPL)メカニズムを実施するときに、本発明は、書き込み処理を最適化する。すなわち、本発明は、WIPLメカニズムを利用するオペレーティングシステムの能力を利用し、古いデータをメモリに読み込み、それをディスク上のどこかに書き込み、古いデータが記憶されたメモリ上のアドレスを指すポインタを生成し、その古いデータをアクセスできるようにする。本発明の一実施形態によれば、古いデータが既に読み込まれているので、新たなパリティを計算するために古いデータを読み出す必要はない。その代わり、データの変更が行われるストライプのパリティを記憶しているディスクに対し、コマンドが送信される。ディスクのモジュールは、古いパリティを読み出し、新たなパリティを計算することによって、ストレージサーバが古いパリティを読み出す必要性を無くす。
本発明は、単一パリティデータ保護方式と、二重パリティデータ保護方式のいずれにおいても、書き込み処理の最適化のために使用することができる。
本発明の他の態様は、本発明の原理を例として示す添付の図面、及び下記の詳細な説明から明らかになるであろう。
本発明の一、又は複数の実施形態は、添付の図面の種々の図において、制限ではなく、例として示される。図中、同じ符号は、同様の要素を指している。
RAID−4によるディスク上のデータブロックの構成を示す図である。 RAID−5によるディスク上のデータブロックの構成を示す図である。 本発明の一実施形態によるストレージサーバを含むネットワーク環境を示す図である。 本発明の一実施形態による、図2に示したストレージサーバのアーキテクチャを示す図である。 本発明の一実施形態による、図2に示したストレージサーバのストレージオペレーティングシステムを示す図である。 図4に示したファイルシステムの構成要素を示す図である。 ディスク上のデータブロックをゼロ化するために、図5に示したゼロ化モジュール、及び図4に示したRAIDコントローラモジュールによって実施される種々のステップを示すイベント図である。 本発明の一実施形態による、単一パリティRAIDシステムにおいて書き込み処理を実施する方法を示すフロー図である。 RAID−DPシステムにおける対角集合を例示する図である。 本発明の一実施形態による、二重パリティRAIDシステムにおいて書き込み処理を実施する方法を示すフロー図である。
本発明の種々の実施形態によれば、複数のクライアントの代わりに、複数のディスクのような記憶装置上のデータをアクセスし、取得する働きをするストレージサーバによって実施されるI/Oオペレーションを最適化する方法、システム、及びコンピュータプログラム製品が得られる。本発明の種々の実施形態によれば、ディスク上の空きの物理的データブロックが、ゼロ化される。クライアントシステムが、新たなデータを書き込むために、ストレージサーバに対してアクセス要求を行うと、ストレージサーバは、その要求をデコードし、一、又は複数のディスク上の物理的データブロックにデータを書き込むための内部コマンドを発行する。本発明の実施形態によれば、新たなデータを書き込むときに、新たなデータが書き込まれる物理データブロックが既にゼロ化されているので、それらのデータブロックを読み出す必要性は無くなる。さらに、本発明の実施形態によれば、一、又は複数の物理データブロックに対して変更が加えられるストライプについて、新たなパリティを計算するために、古いパリティを読み出す必要も無くなる。代わりに、ストレージサーバは、新たなデータが書き込まれるストライプのパリティを記憶しているディスクに対し、コマンド(複数の場合もあり)を発行する。そのディスクのモジュールは、そのコマンド、及び書き込むべき新たなデータ(又は、新たなデータに対するXOR演算の結果)を受信し、ストレージサーバが、古いパリティを読み出す必要なく、新たなデータが書き込まれることになるストライプについて、新たなパリティを計算する。新たなデータが書き込まれる物理データブロックを読み出す必要性を無くすと共に、古いパリティを読み出す必要性を無くすことにより、多少の回転待ち時間を無くすことができ、ストレージサーバの処理能力は向上する。
本発明の他の利点として、劣化モードにおける書き込み能力を向上させることが出来るかもしれない点が挙げられる。さらに、本発明によれば、RAID−4、又はRAID−5において一台のディスクが故障し、他のディスクにメディアエラーがある状況におけるデータ復旧が可能となり、さらに、二重パリティRAIDシステムにおいて2台のディスクが故障し、他のディスクにメディアエラーがある状況におけるデータ復旧も可能になる。さらに、本発明によれば、「ライト・イン・プレイス」メソッドをサポートするファイルシステムにおける書き込み能力を最適化することができる。本発明によれば、メモリに読み込まれた古いデータへのポインタを作成することにより、新たなデータが書き込まれるデータブロックから古いデータを読み出す必要性は無くなる。書き込み最適化技術を実施する方法の詳細については、以下に記載される。
実施形態の詳細な説明へ進む前に、下記のような定義を行う。本明細書では、「データブロック」という用語は、システムが、個々のエンティティとして認識し、操作することが可能な任意のデータチャンクを言う。従って、本明細書では、「物理的データブロック」とは、ディスクに書き込まれるデータを記憶するブロックを言い、「パリティブロック」とは、物理データブロックに記憶されたデータを保護するためのパリティを記憶するブロックを言う。
本明細書では、「古いデータ」とは、物理データブロックに現在記憶されているデータを言い、「新たなデータ」とは、データブロックに書き込まれるデータを言う。「古いパリティ」とは、書き込みコマンドが実行される前に、すなわち、新たなデータがデータブロック(複数の場合もあり)に書き込まれる前に計算されたパリティを言う。「新たなパリティ」とは、書き込みコマンドが実行された後に、すなわち、新たなデータがデータブロック(複数の場合もあり)に書き込まれた後に計算されたパリティを言う。「行パリティ」とは、特定ストライプ中のデータブロックの排他的論理和(XOR)として計算されるパリティを言う。
次に、図1A、及び図1Bを参照すると、これらは、RAID−4、及びRAID−5による記憶装置上のデータブロックの構成をそれぞれ示している。図1A、及び図1Bにおいて、書き込み処理の一部に従ってクライアント(複数の場合もあり)からストレージサーバへ送信され、記憶されるデータは、まず、固定サイズ、例えば4キロバイトの複数のブロックに分割される場合があり、次に、それらが、幾つかのグループに編成され、アレイ内の複数のディスクにわたる「ストライプ」(例えば、ストライプI、ストライプIIなど)の中に、幾つかの物理データブロックとして記憶される。行パリティは、例えばストライプ中のデータの排他的論理和(XOR)として計算され、ディスクD上のパリティ保護ブロックに記憶される場合がある。行パリティの位置は、実施される保護方式やプロトコルのタイプによって異なる場合がある。図1Aは、例えばP(0−2)、P(3−5)、P(6−8)、及びP(9−11)のような行パリティが専用ディスク(ディスクD)に記憶される、RAID−4方式を示している。図1Bは、行パリティがアレイ内の複数のディスクにわたって分散される、RAID−5方式を示している。二重パリティ保護方式の詳細については、図8を参照して説明する。
1.システム・アーキテクチャ
上記のように、図2に示すようなストレージサーバでは、特定の幾つかの読み出し処理を省略するメカニズムを実施することがある。図2は、複数のクライアント210、ストレージサーバ200、及びディスクサブシステム240を含むネットワーク環境を示している。ストレージサーバ200は、クライアント210の代わりに、ディスク型、又はテープ型の磁気ストレージ、又は光学ストレージのような一組の大容量記憶装置に共有ファイルを記憶し、管理する働きをする。前述のように、ストレージサーバ200は、クライアント210に対し、記憶されたデータに対するブロックレベルアクセス(ファイルレベルアクセスではなく)を提供する装置であることもあれば、ブロックレベルアクセスとファイルレベルアクセスの両方をクライアントに提供する装置であることもある。図2に記載のストレージサーバ200は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、又はインターネットのような接続システム230を介して、一組のクライアント210にローカル接続される。接続システム230は、イーサネット(R)ネットワークとして実施される場合もあれば、ファイバ・チャネル(FC)ネットワークとして実施される場合もある。各クライアント210は、TCP/IPのような所定のプロトコルに従って個々のデータフレーム、又はデータパケットをやりとりすることにより、接続システム230を介してストレージサーバ200と通信することができる。
各クライアント210は、例えば、従来のパーソナル・コンピュータ(PC)や、ワークステーション等である。ストレージサーバ200は、クライアント210から種々の要求を受信し、要求に応じる。ストレージサーバ200は、分散アーキテクチャを有することもあり、例えば、ストレージサーバ200は、独立したN−(「ネットワーク」)ブレード、及びD−(ディスク)ブレード(図示せず)を有する場合がある。そのような一実施形態において、Nブレードは、クライアント210との間の通信に使用され、Dブレードは、ファイルシステム機能を有し、ディスクサブシステム240との間の通信に使用される。Nブレード、及びDブレードは、内部プロトコルを使用して互いに通信する。あるいは、ストレージサーバ200は、統合アーキテクチャを有することがあり、その場合、ネットワークコンポーネントとデータコンポーネントは、全て単一のボックスに収容され、密接に一体化されることがある。ストレージサーバ200は更に、切り替え装置を通して他の同様のストレージサーバ(図示せず)に接続される場合があり、それら他のストレージサーバは独自のローカルディスクサブシステムを有する場合がある。このように、全てのディスクサブシステム240から、単一のストレージプール、又はクラスタを形成することができ、いずれのファイルサーバのいずれのクライアントも、そうしたストレージプール、又はクラスタにアクセスすることができる。
ディスクサブシステム240は、ディスク250のような一組の大容量記憶装置を備える。各ディスク250は、コントローラ280を備え、コントローラ280は、コマンド実行モジュール260を実施する。コマンド実行モジュール260の機能については、後で説明する。従って、好ましい実施形態において、コマンド実行モジュール260は、コントローラ280のようなハードウェアデバイスに組み込まれたファームウェアとして実施される。他の実施形態として、コマンド実行モジュール260は、ディスクメモリ270に記憶されるソフトウェアとして実施される場合がある。
図3は、本発明の一実施形態によるストレージサーバ200のアーキテクチャを示している。ストレージサーバ200は、バスシステム323に接続された一、又は複数のプロセッサ(複数の場合もあり)321、及びメモリ322を含む。図3に示すバスシステム323は、適当なブリッジ、アダプタ、及び/又はコントローラによって接続された、任意の一、又は複数の独立した物理的バス、及び/又はポイント・ツー・ポイント接続を表す。従って、バスシステム323としては、例えば、システムバス、周辺機器相互接続(PCI)バス、ハイパートランスポート、又はISA(Industry Standard Architecture)バス、SCSI(Small Computer System Interface)バス、ユニバーサルシリアルバス(USB)、又は、IEEE(Institute of Electrical and Electronics Engineers)規格1394バス(「ファイアワイヤ」とも呼ばれることがある)などが挙げられる。
プロセッサ(複数の場合もあり)321は、ストレージサーバ200の中央演算処理装置(CPU)であり、従って、ストレージサーバ200全体の動作を制御する。実施形態によっては、プロセッサ(複数の場合もあり)321は、メモリ322に記憶された、本明細書にさらに詳しく記載されるようなソフトウェアを実行することによって、この制御を実現する場合がある。プロセッサ321としては、例えば、一、又は複数のプログム可能な汎用の、又は特殊目的のマイクロプロセッサ、デジタル・シグナル・プロセッサ(DSP)、プログラマブル・コントローラ、特定用途向け集積回路(ASIC)、プログラマブル・ロジック・デバイス(PLD)などが挙げられ、あるいは、それらのデバイスの組み合わせであってもよい。
メモリ322は、本発明に関連するソフトウェアプログラムやデータ構造を記憶するために、プロセッサ321やアダプタによってアドレス指定可能な複数の記憶場所を有する。そして、プロセッサ321、及びアダプタは、ソフトウェアプログラムを実行し、種々のデータ構造を操作するように構成された処理要素、及び/又は論理回路を含む場合がある。メモリ322は、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、又はフラッシュメモリ等であってよく、あるいはそれらのデバイスの組み合わせであってもよい。メモリ322は、とりわけ、ストレージサーバ200のストレージオペレーティングシステム324を記憶している。当業者には明らかなように、本明細書に記載する本発明に関係するプログラム命令の記憶、及び実行には、種々のコンピュータ実行可能媒体を含む、他の処理手段、又は他の記憶手段を使用してもよい。
さらに、プロセッサ(複数の場合もあり)321には、バスシステム323を通して、ストレージアダプタ326やネットワークアダプタ327も接続される。ストレージアダプタ326は、ストレージサーバ200で実行されるストレージオペレーティングシステム324と協働し、ディスク250からデータを取得する。ストレージアダプタ326は、従来の高性能ファイバチャネル(FC)リンクトポロジのようなI/O相互接続構成を介してディスク250(図2に示す)に接続するための入出力(I/O)回路を有する複数のポートを備える。
ネットワークアダプタ327は、ポイント・ツー・ポイントリンク、ワイド・エリア・ネットワーク、公衆通信回線上で実施される仮想私設ネットワーク、又は共有ローカル・エリア・ネットワークを介してストレージサーバ200を一、又は複数のクライアントに接続するように構成された複数のポートを有する。従って、ネットワークアダプタ327は、ノードをネットワークに接続するために必要とされる機械的、電気的、及び信号回路を含む場合がある。
2.ストレージ・オペレーティング・システム
図4は、ストレージサーバ200のストレージオペレーティングシステム324の一例を示す。一実施形態として、ストレージオペレーティングシステム324は、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから入手可能なNetApp Data ONTAPストレージオペレーティングシステムであってもよい。このストレージオペレーティングシステムは、Write Anywhere File Layout(WAFL)ファイルシステムを実施する。ただし、当然ながら、本明細書に記載する原理に従って任意の適当なストレージシステムを使用することが可能である。本明細書では、「ストレージオペレーティングシステム」という用語は一般に、データアクセスを管理するストレージ機能を実施するために、コンピュータ上で実行されるコンピュータ実行可能コードを意味する。なお、ストレージオペレーティングシステム324は、マイクロカーネルとして実施しても、UNIXやWindows NTのような汎用オペレーティングシステム上で動作するアプリケーションプログラムとして実施してもよく、あるいは、本明細書の記載に従ってストレージアプリケーションのために構成された変更可能な機能を有する汎用ストレージオペレーティングシステムとして実施してもよい。
ディスク250へのデータアクセスを可能にするために、ストレージオペレーティングシステム324は、ファイルシステム430を実施する。ファイルシステム430は、情報を名前付きディレクトリ、及びファイルの階層構造としてディスク上に論理編成する。一実施形態において、ファイルシステム430は、ディスク250によって提供される記憶空間を「仮想化」するwrite−anywhereファイルシステムである。各ファイルは、データのような情報を記憶するように構成された一組のデータブロックとして実施される場合がある一方、ディレクトリは、特殊なフォーマットのファイルとして実施される場合があり、その中に、他のファイルやディレクトリの名前、及びリンクが記憶される。
ストレージオペレーティングシステム324は、プロトコルモジュール432、ネットワークアドレスモジュール433、RAIDコントローラモジュール436、及びストレージドライバモジュール435をさらに含む。そして、RAIDコントローラモジュール436は、RAID最適化モジュール440(本明細書では「最適化モジュール」とも呼ばれる)を実施する。RAID最適化モジュール440の動作については、後で詳しく説明する。
プロトコルモジュール432は、ネットワークファイルシステム(NFS)、コモン・インターネット・ファイル・システム(CIFS)、ハイパーテキスト・トランスファ・プロトコル(HTTP)、及び/又はトランスミッション・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)のような種々の上位ネットワークプロトコルのうちの一、又は複数を実施し、到来するクライアント要求をエンコードし、又はクライアント要求に対する応答を適当なプロトコルに従ってエンコードする。ネットワークアドレスモジュール433は、一、又は複数のドライバを含み、これらのドライバが、イーサネット(R)のようなネットワークを介して通信するための一、又は複数の下位レベルプロトコルを実施する。プロトコルモジュール432、及び関連ネットワークアクセスモジュール433は、ストレージサーバ200が、通信システム230を介して(例えば、クライアント210と)通信出来るようにする。
ストレージドライバモジュール435は、ストレージサーバ200が、ディスクサブシステム240と通信出来るようにする。ストレージドライバモジュール435は、ファイバチャネルプロトコル(FCP)、SCSI(Small Computer Systems Interface)プロトコル、シリアルATA(SATA)、又はシリアル・アタッチドSCSI(SAS)のような下位ストレージデバイスアクセスプロトコルを実施する。
RAIDコントローラモジュール436(本明細書では「ストレージモジュール」とも呼ばれる)は、RAIDシステムにおけるディスクのような記憶装置を管理する。RAIDコントローラモジュールは、クライアント210からのアクセス要求に応答して、データの記憶、及び読み出しを管理する。アクセス要求には、データを書き込むための要求、及び/又はデータを読み出すための要求がある。一実施形態において、RAIDコントローラモジュール436は、ストレージサーバ200上で実施されるソフトウェアモジュールであってもよい。代替実施形態において、RAIDコントローラモジュール436は、ハードウェアとして実施される独立したエンクロージャであってもよい。RAIDコントローラモジュール436は、クライアント要求に応答し、ディスク250に対して内部I/Oコマンドを発行する。これらのコマンドは、ディスク250のある物理ブロック番号の位置にデータを書き込むコマンドである場合もあれば、ディスク250のある物理ブロック番号の位置からデータを読み出すコマンドである場合もある。
RAID最適化モジュール440は、一、又は複数の物理データブロックに変更が加えられるストライプのパリティを記憶しているディスク(複数の場合もあり)に対し、コマンドを発行するように構成される。一実施形態において、このコマンドは、2006年9月22日にT10技術委員会から草案が出版されたSCSIブロックコマンド、第二世代に記載の、SCSI規格によって提供されるXPWriteコマンドである(www.t10.org参照)。XPWriteコマンドは、データの書き込み先にあたるブロックの論理ブロックアドレス(LBA)、並びにデータの書き込みに要するブロック数を含む。RAID最適化モジュール440によって実行される種々のステップについては、図7、及び図9を参照し、もっと詳しく説明する。本発明は、XPWriteコマンドを例として説明されているが、当業者には、XPWriteコマンドが、本発明を実施する一例であることが分かるであろう。
次に、図5を参照すると、図5は、ファイルシステム430の種々のコンポーネントを示している。ファイルシステム430は、ゼロ化モジュール510を実行する。ゼロ化モジュール510は、RAIDコントローラモジュール436に対してゼロ化コマンドを発行し、ディスク250上の空き物理データブロックをゼロ値にする。RAIDコントローラモジュール436は、このコマンドを受信すると、ディスク250(複数の場合もあり)上の空き物理データブロックをゼロ化する。ゼロ化モジュール510は、どの物理的データブロックが空いていて、どの物理的データブロックが割り当て済みであるかを、種々のデータ構造を使用して特定する。一実施形態において、ファイルシステム430は、どのデータブロックが割り当て済みであるかを示すデータマップ520、及び、どのデータブロックがゼロ値を有しているかを示すデータマップ530を記憶している。本明細書では、何らかのデータ、又はメタデータによって現在占有されているデータブロックを「割り当て済みデータブロック」と呼ぶ。何らかのデータ、又はメタデータで現在占有されていないデータブロックは、「空きデータブロック」、又は「未割り当てのデータブロック」と呼ばれる。当業者であれば、データマップ530とデータマップ520を、一つのデータ構造として実施してもよいことが分かるであろう。
次に、図6を参照すると、図6は、ゼロ化モジュール510、及びRAIDコントローラモジュール436によって実施される、空きデータブロックをゼロ化するための処理を示している。一実施形態において、データブロックをゼロ化する処理は、空き時間に実施される。本明細書において、「空き時間」とは、クライアント210からの要求が少ないと予想される時間(例えば、週末、休日、及びピークを外した時間等)を言う。他の実施形態として、ファイルシステム430は、あるストライプにおける空きブロックのゼロ化を、そのストライプ中の他のデータブロックへのデータの書き込みと同時に実施する場合がある。
ステップ620において、ゼロ化モジュール510は、データマップ520、及び530を使用して、ゼロ化されていない空きデータブロックを特定する。ゼロ化モジュール510は、まだゼロ化されていない空きデータブロックを見つけると、空きデータブロックをゼロ化するための要求625をRAIDコントローラモジュール436へ送信する。次に、RAIDコントローラモジュール436は、その要求を受信し、その空きデータブロックをゼロ化する(630)。ステップ640において、RAIDコントローラモジュール436は、ゼロ化されるデータブロックを含むストライプのパリティを更新する。その目的のために、一実施形態において、RAIDコントローラモジュール436は、ゼロ化されるストライプ中の物理データブロックからデータを読み出し、そのストライプのパリティブロックを読み出し、そのデータをプロセッサ321へ送信し、データ、及びパリティに対してXOR演算を実施し、新たなパリティを求める。RAIDコントローラモジュール436は、その新たなパリティを、データブロックがゼロ化されたストライプ中のパリティブロックに書き込み、データブロックをゼロ化する。ゼロ化プロセスが完了すると、RAIDコントローラモジュール436は、確認メッセージ645をゼロ化モジュール510へ送信する。ステップ660において、ゼロ化モジュール510は、どの空きデータブロックが初期化されたかを知らせるために、データマップ530を更新する(650)。
図2を再び参照すると、各ディスク250のコントローラ280において実施されるコマンド実行モジュール260は、RAID最適化モジュール440によって発行されたコマンドを実行する。一実施形態において、モジュール440は、一、又は複数の物理データブロックに対して変更が加えられたストライプのパリティを記憶しているディスクに対し、XPWriteコマンドを発行する。このコマンドは、新たなパリティが書き込まれることになるブロック番号、及びそのパリティの書き込みに要するブロック数を含む。さらに、このコマンドは、コマンドのタイプを示すオペレーションコード(オペコード)を含む。ストレージドライバモジュール435は、コマンドをディスクへ送信する。一、又は複数の物理データブロックに変更が加えられたストライプのパリティを記憶しているディスクのコマンド実行モジュール260は、そのコマンドを受信し、そのコマンド中に示されたパリティブロックをディスクメモリ270に読み込む。コマンド実行モジュール260は、オペコードからコマンドのタイプを識別し、そのコマンドを実行するためのデータをストレージドライバモジュール435に要求する。一実施形態において、ストレージドライバ435は、同じストライプ中の物理データブロックに書き込まれるものと同じデータを、コマンド実行モジュール260へ送信する。コマンド実行モジュール260は、ストレージドライバモジュール435から新たなデータを受信し、その新たなデータを、ディスクメモリ270に記憶されているパリティとXOR演算し、そのXOR演算の結果を、XPWriteコマンド中に示される物理データブロックに書き込む。
他の実施形態として、もし新たなデータが、二以上の物理ディスクに書き込まれる場合、そのディスクのコマンド実行モジュール260は、ストレージドライバモジュール435から、新たなデータに対するXOR演算の結果を受信する。コマンド実行モジュール260は、ストレージドライバモジュール435から受信したデータを、ディスクメモリ270に記憶されているパリティとXOR演算し、そのXOR演算の結果を、一、又は複数の物理データブロックに変更が加えられたストライプのパリティを記憶しているディスク上の物理データブロックに書き込む。
新たなデータが書き込まれる宛先のデータブロックは既にゼロ化されているので、それらのデータブロックを読み出す必要はなくなる。モジュール260によるXPWriteコマンドの実行の結果、RAIDコントローラモジュール436により古いパリティを読み出す必要はなくなる。なぜなら、ディスク250上のコマンド実行モジュール260が、新たなパリティを計算するために、古いパリティを読み出すからである。
もし書き込みが行われない他のドライブ上のがゼロ化される場合、それらのデータブロックを読み出す必要もなくなる。新たなパリティは、書き込まれるデータブロックのXOR演算の結果になるので、読み出し処理は何も必要とされない。
本発明の種々の実施形態によるRAID最適化技術を使用する例が、以下に記載される。
3.単一パリティ保護方式においてRAID最適化技術を使用する例
例示的実施形態における下記の説明を分かりやすくするために、物理データブロックに変更が加えられたときは常に、新たなデータが、ディスク250上の新たな物理的位置に書き込まれるものと仮定する。本明細書では、この性質を「アウト・オブ・プレイス書き込み」と呼ぶ。
A.減算によるパリティ書き込み
図1Aを再び参照すると、ストレージサーバ200へ送信され、記憶されるデータは、例えば4キロバイトのような固定サイズの複数のブロック(例えば、D0からDn)に分割され、それらが、複数のディスクにわたる一、又は複数のストライプに記憶される場合がある。行パリティは、例えば、ストライプ中のデータ(例えば、D0からDn)の排他的論理和(XOR)として計算され、ディスクD上の保護ブロックに記憶される。第1のストライプ、ストライプIの行パリティは、D0、D1、及びD2のXOR演算の結果として得られ、それらのブロックから、行パリティブロックP(0−2)の値が生成される。D0を変更する要求をストレージサーバ200が受信したものと仮定する。その場合、ストレージサーバ200は、その要求を解読し、要求をファイルシステム430に渡す。ファイルシステム430は、データが書き込まれる場所の論理ブロック番号を識別し、データを特定ディスク(例えば、ディスクA)上の論理ブロック番号の位置に書き込むための要求をRAIDコントローラモジュール436へ送信する。RAIDコントローラモジュール436は、減算によるパリティ書き込み方法を使用して、あるデータブロックに、例えばD0を記憶しているデータブロックに新たなデータを書き込む。その目的のために、RAIDコントローラモジュール436は、読み出しコマンドをディスクAへ送信し、D0を記憶しているデータブロックからデータを読み出す。モジュール436はさらに、読み出しコマンドをディスクDにも送信し、P(0−2)を記憶しているパリティブロックからデータを読み出す。
ディスクAのコントローラ280は、第1の読み出しコマンドを受信し、そのコマンドを次のように実行する。すなわち、コントローラ280は、D0を記憶しているデータブロックからデータを読み出し、そのデータをモジュール436へ転送する。そして、モジュール436は、そのデータをメモリ324に記憶する。
ディスクDのコントローラ280は、第2の読み出しコマンドを受信し、そのコマンドを次のように実行する。すなわち、コントローラ280は、P(0−2)を記憶しているブロックからデータを読み出し、そのデータをモジュール436へ転送する。そして、モジュール436は、そのデータをメモリ324に記憶する。
次に、モジュール436は、D0、P(0−2)、及び新たなデータのXORを計算する。
次に、モジュール436は、書き込みコマンドをディスクAへ送信し、D0を記憶しているデータブロックに新たなデータを書き込む。ストレージドライバモジュール435は、そのコマンドをSCSI要求に入れ、コマンドをディスクAへ送信する。
ディスクAのコントローラ280は、そのコマンドを受信すると、データを受信する準備が出来たことを示す指示をモジュール435に渡す。モジュール435からデータを受信すると、コントローラ280は、そのデータを書き込み、D0を置き換える。
モジュール436は、ディスクDに対して書き込みコマンドを発行し、新たなパリティを書き込み、P(0−2)を置き換える。ストレージモジュール435は、そのコマンドをSCSI要求にいれ、コマンドをディスクDへ送信する。
ディスクDのコントローラ280は、そのコマンドを受信すると、データを受信する準備が出来たことを示す指示をモジュール435に渡す。モジュール435からデータ(すなわち、XOR演算の結果)を受信すると、コントローラ280は、そのデータを、D0を記憶しているストライプのパリティブロックに書き込む。
このように、ストライプIのデータブロックを変更するために、RAIDコントローラモジュール436は、2回の読み出し処理(一つは、D0を記憶するデータブロックからのデータの読み出し、もう一つは、P(0−2)を記憶するパリティブロックからの行パリティの読み出し)を実施しなければならないであろう。
本発明の一実施形態によれば、あるデータブロック、例えば、D0を記憶しているデータブロックを変更するために、RAIDコントローラモジュール436は、ディスクAに対し、D0を記憶している物理データブロックに変更を加えるための書き込みコマンドを発行する。RAID最適化モジュール440は、パリティを記憶しているディスク(すなわち、ディスクD)に対し、XPWriteコマンドを発行する。このコマンドは、ブロック番号、及びブロック数を含む。ストレージドライバモジュール435は、このコマンドを、パリティを記憶しているディスク(すなわち、ディスクD)へ送信する。
パリティを記憶しているディスクのコマンド実行モジュール260は、そのコマンドを受信すると、コマンド中に示されたパリティブロック(すなわち、P(0−2))をディスクメモリ270に読み込む。コマンド実行モジュール260は、XPWriteコマンドを実行するためのデータを受信する準備が出来たことを示す指示をストレージドライバモジュール435に渡す。ストレージドライバ435は、D0に変更を加えるためにディスクAへ送信されたものと同じデータを、パリティを記憶しているディスクのコマンド実行モジュール260へ送信する。パリティを記憶しているディスクのコマンド実行モジュール260は、ストレージドライバ435から新たなデータを受信すると、その新たなデータをディスクメモリ270に記憶されているパリティとXOR演算し、そのXOR演算の結果を、パリティを記憶しているディスク上のパリティブロックに書き込む。
本発明の一実施形態によれば、D0を記憶している物理データブロックは、ゼロ値を有するものとみなされ、データをゼロとXOR演算しても、データは変更されないので、このデータブロックをRAIDコントローラ436によって読み出す必要性は無くなる。さらに、P(0−2)を記憶しているパリティブロックをRAIDコントローラ436によって読み出す必要性も無くなる。なぜなら、XPWriteコマンドの実行結果として、モジュール260が、パリティブロックP(0−2)をディスクメモリ270に読み込み、新たなデータ、及びパリティブロックの中身に対してXOR演算を実施するからである。このように、新たなデータが書き込まれることになる宛先のデータブロックをゼロ化することにより、RAIDコントローラモジュール436が、古いデータを読み出したり、ディスク(複数の場合もあり)250から古いデータを転送する必要がなくなるので、回転遅延は幾らか抑制される。また、古いパリティは、パリティを記憶しているディスクのモジュール260によって読み込まれるので、古いパリティが、FCリンクのような通信リンクを介してストレージサーバ200へ転送されることもない。
B.再計算によるパリティ書き込み
再計算によるパリティ書き込み方法が、例えば、D0、及びD1を記憶しているデータブロックのような、2以上のデータブロックへの新たなデータの書き込みに使用されるものと仮定する。再計算によりパリティ書き込みを使用して新たなデータを書き込む従来のメカニズムを使用した場合、下記のステップが、RAIDコントローラモジュール436によって実施される場合がある。すなわち、新たなデータが書き込まれるデータブロック(D0、D1)以外のデータブロック、例えばD2からデータを読み出すステップ、(D2と新たなデータの)XOR演算を実施することにより新たな行パリティを計算するステップ、新たなデータを書き込むステップ、及び新たな行パリティをパリティブロックに書き込むステップである。
従って、新たなデータを2以上の物理ディスクに書き込むためには、ファイルシステム430は、少なくとも一回の読み出し処理を実施しなければならないであろう。
本発明の一実施形態によれば、新たなデータが書き込まれるデータブロックをゼロ化する場合、RAIDコントローラモジュール436は、行パリティP(0−2)が、書き込まれる新たなデータとパリティのXOR演算の結果であることを反映するように、行パリティを更新する。従って、D0、及びD1がゼロ値を記憶し、(0、0、及びD2)のXORがD2であるから、新たなデータが書き込まれる前の行パリティはD2である。本発明の一実施形態による書き込み処理を実施するために、下記のステップが実施される場合がある。RAIDコントローラモジュール436は、D0、及びD1を置き換えるために新たなデータを書き込む前に、新たなデータのXORを計算する。RAID最適化モジュール440は、一、又は複数の物理データブロックに変更が加えられたストライプのパリティを記憶しているディスク(ディスクD)に対し、XPWriteコマンドを発行する。ストレージドライバモジュール435は、そのコマンドをディスクDへ送信する。ディスクDのコマンド実行モジュール20は、そのコマンドを受信すると、コマンド中に示されたパリティブロックをディスクメモリ270に読み込む。コマンド実行モジュール260は、XPWriteコマンドを実行するためのデータを受信する準備が出来たことを示す指示をストレージドライバモジュール435に渡す。
ストレージドライバモジュール435は、XOR演算の結果をモジュール260へ送信する。コマンド実行モジュール260は、ストレージドライバモジュール435から受信したデータを、ディスクメモリ270に記憶されているパリティとXOR演算する。モジュール260は、このXOR演算の結果を、XPWriteコマンド中に示される物理データブロックに書き込む。
図7は、本発明の一実施形態による、単一パリティ保護方式において減算によるパリティ書き込み、及び再計算によるパリティ書き込みを実施するための、RAIDコントローラモジュール436、及びRAID最適化モジュール440によって実施される種々の処理を示すフロー図である。
ステップ710において、モジュール440は、データがストライプ中の全てのデータブロックに書き込まれるか否かを判定する。ステップ710における肯定的な判定結果に応答し、モジュール436は、データマップ530上のデータブロックをゼロ化されていないものとしてマーキングし(715)、従来の方法を使用してパリティを計算する。例えば、モジュール436は、行パリティを計算するために、新たなデータのXORを計算する(720)。ステップ730において、モジュール430は、新たなデータを物理データブロックに書き込み、XOR演算の結果を行パリティブロックに書き込む。
あるいは、ステップ710において、もしデータがストライプ中の全てのデータブロックには書き込まれないことが判明した場合、ステップ740において、モジュール436は、ストライプ中の他の全てのデータブロックが、ゼロ値を記憶している(ゼロ化されている)か否かを判定する。ステップ740における肯定的な判定結果に応答し、モジュール436は、データマップ530を使用して、書き込みを受けるデータブロックをゼロ化されていないものとしてマーキングする(745)。ステップ750において、モジュール436は、データが、ストライプ中の2以上のデータブロックに書き込まれるか否かを判定する。もしデータが、ストライプ中の2以上のデータブロックに書き込まれる場合、RAIDコントローラモジュール436は、新たなデータのXORを計算する(760)。モジュール436は、新たなデータを物理データブロックに書き込み(770)、XOR演算の結果をパリティブロックに書き込む。
あるいは、ステップ750において、新たなデータが一つのデータブロックに書き込まれる場合、モジュール436は、新たなデータを幾つかの物理データブロックに書き込み(772)、新たなデータを行パリティブロックに書き込む。なぜなら、行パリティは、新たなデータと同じであるからである。
ステップ774において、上書きされるデータブロックがゼロ値を記憶している場合、モジュール436は、データマップ530を使用して、書き込まれるデータブロックをゼロ化されていないものとしてマーキングする(776)。ステップ778において、モジュール436は、新たなデータが、ストライプ中の2以上のデータブロックに書き込まれるか否かを判定する。肯定的な判定結果、例えば、データが2以上のデータブロックに書き込まれるという判定結果に応答し、モジュール436は、全ての新たなデータに対するXOR演算を実施することにより、新たなデータのパリティを計算する。次に、モジュール436は、新たなデータを、書き込みコマンド中に示されたブロックに書き込む(782)。
次に、モジュール440は、一、又は複数の物理データブロックに対して変更が加えられたストライプのパリティを記憶しているディスクに対し、XPWriteコマンドを発行する。ディスクのモジュール260は、そのコマンドを受信すると、そのコマンドを次のように実行する。モジュール260は、行パリティ(書き込まれないデータブロックのXOR演算の結果)をディスクメモリ270に読み込む。モジュール260は、ストレージドライバモジュール435から、新たなデータに対するXOR演算の結果を受信する。モジュール260は、XOR演算の結果を行パリティとXOR演算する。モジュール260は、そのXOR演算の結果を行パリティブロックに書き込む。その結果、本発明の一実施形態によれば、新たなデータが書き込まれることになるデータブロック以外のデータブロックに記憶された古いデータを読み出さなければならないという、従来の再計算によるパリティ書き込み方法の要件を、データが書き込まれることになるデータブロックをゼロ化することによって、無くすことができる。XPWriteコマンドの実行により、古い行パリティを読み出す必要性は無くなる。
あるいは、もしストライプ中の一つのデータブロックにしか書き込みが行われない場合、モジュール436は、新たなデータを物理データブロックに書き込む(784)場合がある。次に、モジュール440は、物理データブロックに対して変更が加えられたストライプのパリティを記憶しているディスクに対し、XPWriteコマンドを発行する。ディスク250上のモジュール260は、そのコマンドを受信すると、そのコマンドを次のように実行する。モジュール260は、古いパリティをディスクメモリ270に読み込む。モジュール260は、ストレージドライバモジュール435から、物理データブロックに書き込むべきデータ(変更すべき物理データブロックへ送信されたものと同じデータ)を受信する。モジュール260は、そのデータを古いパリティとXOR演算し、そのXOR演算の結果をパリティディスク上のパリティブロックに書き込む。その結果、本発明の一実施形態によれば、古いパリティをストレージサーバ200上のRAIDコントローラモジュール436によって読み出し、そのパリティをFCリンクのような通信チャネルを介して転送しなければならないという、従来の減算によるパリティ書き込み方法の要件を無くすことができる。
ステップ774において、もしストライプ中にゼロ値を記憶しているデータブロックが一つも無く、データが、唯一つのデータブロックにしか書き込まれない場合、例えば、減算によるパリティ書き込み、又は再計算によるパリティ書き込み(786)のような従来の方法を使用して、書き込み処理を実施してもよい。ステップ788において、モジュール436は、データマップ530を使用し、書き込みを受けるデータブロックをゼロ化されていないものとしてマーキングする(776)。先に説明したように、減算によるパリティ書き込み方法によれば、古いパリティブロックが、読み出される。さらに、新たなデータが書き込まれる場所にあるデータブロックも読み出される。そして、その古いパリティ、及び古いデータに対して排他的論理和(XOR)演算が実施される。新たなパリティを求めるために、その結果が、新たなデータとXOR演算される。新たなデータは、データブロックに書き込まれ、新たなパリティは、パリティブロックに書き込まれる。再計算によるパリティ書き込みによれば、行パリティを計算するために、ストライプ中のデータブロックのうち、データが書き込まれる宛先となるデータブロック以外のデータブロックが読み出され、新たなデータとXOR演算される。新たなデータはデータブロックに書き込まれる。計算されたパリティは、パリティブロックに書き込まれる。
4.二重パリティ保護方式においてRAID最適化技術を使用する例
本発明のRAID最適化技術は、二重パリティ保護方式にも適用可能である。二重パリティ保護方式については、Peter F.Corbett他による「ROW-DIAGONAL PARITY TECHNIQUE FOR ENABLING EFFICIENT RECOVERY FRO DOUBLE FAILURES IN A STORAGE ARRAY」と題する米国特許出願第10/035,607号に記載されており、この特許出願の開示は全て、参照により、本明細書に援用される。
背景として、ディスクサブシステム240は、n個の記憶装置(例えばディスク)を備える場合が有る。ただし、n=p+1であり、pは素数である。記憶装置は、複数のブロックに分割される。各記憶装置内から、n−2個のブロックが任意に選択され、全ての記憶装置にわたる一つストライプを形成するようにグループ化される。ストライプ中の一つの装置は、他の装置から入力としてブロックを選択することにより形成されるパリティを保持する装置に指定される。この装置は、対角パリティ装置と呼ばれ、この装置が保持するパリティは、対角パリティと呼ばれる。各ストライプ内において、ストライプ内における対角パリティ装置ではない装置から、それぞれ一つのブロックが選択される。このブロックの集合は、行と呼ばれる。行の形成は、ストライプ内のブロックのうち、対角パリティ装置上にないブロックが全て、ちょうど一行に割り当てられるまで継続される。全部でn−2個の行が存在する。各ストライプ内における対角パリティ装置ではない装置のうち、一つを除く全ての装置から、それぞれ一つのブロックが選択され、その際、選択されるブロックのうちの2つが、同じ行に属してはならないという制限がさらに課せられる。これは、対角パリティセット、または「対角」と呼ばれる。対角の形成は、例えば、データ装置、行パリティ装置、及び対角パリティ装置に0からn−1まで番号を付し、行に0からn−3まで番号を付し、そして、装置i、行jにあるブロックを対角(i+j+1)mod(n−1)に割り当てることによって行われる場合がある。対角の形成は、ストライプ中のブロックのうち、対角パリティ装置上にはないブロックが全て対角に割り当てられるまで継続される。ただしその際、同じ装置上のブロックを何も有しない2つの対角が存在しないようにするという制限がさらに課せられる。n−1個の対角が存在する。n−1個の対角の中から、n−2個の対角が選択される。それらの対角中のブロックは、データを保持しているか、パリティを保持しているかに関わらず、互いに結合され、一つの対角パリティブロックを形成する。n−2個の対角パリティブロックは、そのストライプ中の対角パリティを保持している装置上の、そのストライプ中のn−2個のブロックに、任意の順序で記憶される。
次に、図8を参照すると、RAID−DPによるアレイ800における対角パリティセットの一例が示されている。図8の例において、一つのストライプは、行1〜行4を含むものとして描かれている。データは、ディスク1〜ディスク4に記憶される。ディスク0は、各行について行パリティを記憶する。ディスク5は、各対角について対角パリティを記憶する。あるストライプ中の各データブロックは、行、及びディスク番号によって識別される。各データブロック中の番号は、そのデータブロックが属する対角パリティセットを示す。図8に示す例において、行パリティは下記のように計算される。
行1の行パリティは、{行1、ディスク1}、{行1、ディスク2}、{行1、ディスク3}、及び{行1、ディスク4}に記憶されたデータに対するXOR演算の結果である。
行2の行パリティは、{行2、ディスク1}、{行2、ディスク2}、{行2、ディスク3}、及び{行2、ディスク4}に記憶されたデータに対するXOR演算の結果である。
行3の行パリティは、{行3、ディスク1}、{行3、ディスク2}、{行3、ディスク3}、及び{行3、ディスク4}に記憶されたデータに対するXOR演算の結果である。
行4の行パリティは、{行4、ディスク1}、{行4、ディスク2}、{行4、ディスク3}、及び{行4、ディスク4}に記憶されたデータに対するXOR演算の結果である。
p−1個の対角パリティセットについて、対角パリティが記憶される。ただし、pは、3以上の素数である。従って、対角パリティセット4についての対角パリティは、記憶されない。対角パリティが記憶されないこの対角パリティセットは、「欠落した」対角と呼ばれる。ある対角パリティセットの対角パリティは、その対角パリティセットを構成するデータブロック、及び行パリティブロックに記憶されたデータの排他的論理和(XOR)として計算される。
対角パリティセット0は、データブロック{行1、ディスク0}、{行4、ディスク2}、{行3、ディスク3}、及び{行2、ディスク4}上にデータを有する。対角パリティセット0の対角パリティは、それらのデータブロックに記憶されたデータのXORを計算することによって求まる。対角パリティセット0について計算された対角パリティは、データブロック{行1、ディスク5}に記憶される。
対角パリティセット1は、データブロック{行1、ディスク1}、{行2、ディスク0}、{行4、ディスク3}、及び{行3、ディスク4}上にデータを有する。対角パリティセット1の対角パリティは、それらのデータブロックに記憶されたデータのXORを計算することによって求まる。対角パリティセット1について計算された対角パリティは、データブロック{行2、ディスク5}に記憶される。
対角パリティセット2は、データブロック{行3、ディスク0}、{行2、ディスク1}、{行1、ディスク2}、及び{行4、ディスク4}上にデータを有する。対角パリティセット2の対角パリティは、それらのデータブロックに記憶されたデータのXORを計算することによって求まる。対角パリティセット2について計算された対角パリティは、データブロック{行3、ディスク5}に記憶される。
対角パリティセット3は、データブロック{行4、ディスク0}、{行3、ディスク1}、{行2、ディスク2}、及び{行1、ディスク3}上にデータを有する。対角パリティセット3の対角パリティは、それらのデータブロックに記憶されたデータのXORを計算することによって求まる。対角パリティセット3について計算された対角パリティは、データブロック{行1、ディスク5}に記憶される。
対角パリティセット4は、データブロック{行4、ディスク1}、{行3、ディスク2}、{行2、ディスク3}、及び{行1、ディスク4}上にデータを有する。対角パリティセット4は、欠落した対角であり、この対角の対角パリティは記憶されない。
ディスクD1は、ゼロ値を記憶し、減算によるパリティ書き込み方法を使用して、新たなデータが、ディスク1に書き込まれるものと仮定する。従来の方法によれば、RAIDコントローラモジュール436は、下記のステップを実施する必要があるであろう。すなわち、
ディスク1上のデータを読み出すステップ;
行パリティを読み出すステップ;
対角パリティを読み出すステップ;
ディスク0に記憶されたデータ、行パリティ、及び新たなデータのXOR演算を実施することにより、新たな行パリティを計算するステップ;
D0に記憶されたデータ、対角パリティ、及び新たなデータのXOR演算を実施することにより、新たな対角パリティを計算するステップ;
新たなデータをディスク1に書き込むステップ;
新たな行パリティをディスク0に書き込むステップ;及び
新たな対角パリティをディスク5に書き込むステップである。
このように、書き込み処理を実施するために、RAIDコントローラ436は、3回の読み出し処理を実施しなければならない場合がある。
本発明の一実施形態によれば、もし新たなデータが書き込まれる場所にあるデータブロック(複数の場合もあり)が、ゼロ値を記憶していた場合、古いデータ、行パリティ、又は対角パリティを読み出す必要はない。本発明の一実施形態による書き込み処理を実施するために、RAID最適化モジュール440は、下記のようなステップを実施する。なお、ストレージサーバ200上のメモリ322は、行パリティを記憶するためのメモリブロック、及び対角パリティを記憶するためのメモリブロックを有している。
上書きされるデータブロック(複数の場合もあり)が全て、ゼロを有している場合、
1.書き込むべき最初のデータブロックを、行パリティ用のメモリブロックにコピーし;
2.書き込むべき最初のデータブロックを、対角パリティ用のメモリブロックにコピーし;
3.新たなデータに基いて行パリティを計算し;
4.新たなデータに基いて対角パリティを計算し;
5.データを物理データブロックに書き込み;
6.ステップ3の結果を行パリティディスクにXPWriteし;
7.ステップ4の結果を対角パリティディスクにXPWriteする。
以下は、新たなデータに基いて対角パリティを計算し、どのデータブロックを使用して対角パリティを計算すべきかを識別するためのステップの概要を示すアルゴリズムを示す。
p=素数
対角パリティセットの数=p−1
ディスク数=p+1
i=ディスク番号0...n
k=対角パリティセット0...m
For(k=0;k<対角セット数;k++)

対角ストライプブロックのオフセットを得る。ただし、オフセットは、メモリの先頭から始まるブロックのアドレスを示す;
(ディスク番号+k)%p=オフセット。ただし%は、モジューロ((ディスク数+k)とpの除算の余り)である;
if(オフセット==(p−1))
then skip
else
対角ストライプブロックを対角パリティ用メモリブロックに記憶されたデータのオフセットに対してXOR演算

If 2以上のディスクを書き込み

For(x=1;x<書き込まれるディスクの数;x++)

書き込むべきデータブロックを行パリティ用メモリブロックにXOR演算する
For(k=0;k<対角セット数;k++)
対角ストライプブロックのオフセットを得る
(ディスク番号+k)%p=オフセット
if(オフセット==(p−1))
then skip
else
対角ストライプブロックを対角パリティメモリのオフセットとXOR演算


行パリティ用ブロックに記憶された結果を、対角パリティ用メモリの中にXOR演算
}。
行パリティディスクへ送信されたXPWriteコマンドの実行(ステップ6で述べたような)の結果、行パリティディスク(例えば、図8におけるディスク0)上のモジュール260は、コマンド中に示されたブロック番号にある古い行パリティをディスクメモリ270に読み込み、ストレージドライバモジュール435から、新たなデータに基いて計算された行パリティを受信し、その新たなデータについて計算された行パリティを古い行パリティとXOR演算し、そのXOR演算の結果を行パリティディスクに書き込む。
対角パリティディスクへ送信されたXPWriteコマンドの実行(ステップ7で述べたような)の結果、対角パリティを記憶しているディスク(例えば、図8におけるディスク5)上のモジュール260は、コマンド中に示されたブロック番号にある古い対角パリティをディスクメモリ270に読み込み、ストレージドライバモジュール435から、新たなデータに基いて計算された対角パリティを受信し、その新たなデータについて計算された対角パリティを古い対角パリティとXOR演算し、そのXOR演算の結果を対角パリティディスクに書き込む。このアルゴリズムの応用形態の一例を、以下に示す。
図8を再び参照し、全てのディスクがゼロ化され、新たなデータ{2、3、4、5}が、ディスク2に書き込まれるものと仮定する。
まず、新たなデータは、メモリ322の行パリティ用のブロックにコピーされる。メモリ322の行パリティ用のブロックは、現在、{2、3、4、5}を記憶している。ディスク1〜4に記憶されたデータは、ゼロ化されているので、行パリティは、新たなデータと同じである。
次に、新たなデータは、メモリ322の対角パリティ用のブロックにコピーされる。メモリ322の対角パリティ用のブロックは、現在、{2、3、4、5}を記憶している。各対角パリティセットについて、対角パリティが、下記のように計算される。
1.ディスク2の各対角ストライプブロックについて、対角ストライプブロックを対角パリティにXOR演算する;
2.ディスク2の第1のブロックについて、対角ストライプブロック番号を見つける:(2+0)%5=2。第1のブロックを、対角ストライプブロック2に対して適当なオフセットにある対角パリティにXOR演算する。(2XOR4=6)
3.ディスク2における第2のブロックについて対角ストライプブロック番号を見つける:(2+1)%5=3;
第2のストライプブロックを、メモリ322の対角パリティ用ブロックの対角ストライプブロック3に関する適当なオフセットにあるブロックにXOR演算する。(3XOR5=6)
4.ディスク2の第3のブロックについて、対角ストライプブロック番号を見つける:(2+2)%5=4。対角ストライプブロック4は、対角パリティに属しない。従って、対角ストライプブロック4は、欠落した対角であり、対角パリティを記憶する目的に使用されない;
5.ディスク2の第4のブロックについて、対角ストライプブロック番号を見つける:(2+3)%5=0
第4のストライプブロックを、対角パリティ用メモリ322の対角ストライプブロック0に対する適当なオフセットにXOR演算する。(5XOR2=7)。
次に、図1を参照すると、図1は、提供した例に関する、計算された行パリティ、及び対角パリティを示している。
Figure 0005302892
表1に示すように、ディスク2は、{2、3、4、5}を記憶し、ディスク0は、{2、3、4、5}を記憶している。ディスク5は、上記のアルゴリズムを使用して計算された対角パリティを記憶している。
図9は、本発明の一実施形態による、RAID−DPにおいて減算によるパリティ書き込み、及び再計算によるパリティ書き込みを実施するための、RAID最適化モジュール440、及びRAIDコントローラモジュール436によって実施される種々の処理を示すフロー図である。
ステップ910において、モジュール436は、データが、ストライプ中の全てのデータブロックに書き込まれるか否かを判定する。ステップ910における肯定的な判定結果に応答し、モジュール436は、データマップ530を使用して、書き込まれるデータブロックをゼロ化されていないものとしてマーキングする(915)。ステップ920において、モジュール436は、新たなデータに対するXOR演算を行い、行パリティを求める。モジュール436はさらに、本明細書に記載されるような対角パリティを計算するためのアルゴリズムを使用して、対角パリティを計算する。ステップ930において、モジュール430は、新たなデータを物理データブロックに書き込み、XOR演算の結果を行パリティブロックに書き込み、対角パリティを対角パリティブロックに書き込む。
あるいは、もしデータが、ストライプ中の全てのデータブロックには書き込まれない場合、ステップ940において、モジュール436は、ストライプ中の他の全てのデータブロックが、ゼロ値を記憶しているか否かを判定する。ステップ940における肯定的な判定結果に応答し、モジュール436は、データマップ530を使用して、書き込まれるデータブロックをゼロ化されていないものとしてマーキングする(945)。ステップ950において、モジュール436は、データが、ストライプ中の2以上のデータブロックに書き込まれるか否かを判定する。もし、データがストライプ中の2以上のデータブロックに書き込まれる場合、モジュール436は、新たなデータに対するXOR演算960を実施することにより、行パリティを計算する。モジュール436は、対角パリティをさらに計算する。そして、モジュール436は、新たなデータをディスク(複数の場合もあり)250上の物理データブロックに書き込み、XOR演算の結果を行パリティブロックに書き込み、対角パリティを対角パリティブロックに書き込む。
あるいは、ステップ950において、もし新たなデータが、一つのデータブロックに書き込まれる場合、モジュール436は、本明細書に記載されるような対角パリティを計算するためのアルゴリズムを使用して、対角パリティを計算する。ステップ974において、新たなデータは、データブロックに書き込まれ、新たなデータは、行パリティブロックに書き込まれ、対角パリティは、対角パリティブロックに書き込まれる。
ステップ976において、モジュール436は、上書きされるデータブロックがゼロ化されているか否かを判定する。ステップ976における肯定的な判定結果に応答し、モジュール436は、データマップ530を使用して、書き込みを受けるデータブロックをゼロ化されていないものとしてマーキングする(978)。ステップ980において、モジュール436は、新たなデータが、ストライプ中の2以上のデータブロックに書き込まれるか否かを判定する。もし2以上のデータブロックに対して書き込みが行われる場合、モジュール436は、書き込まれるデータブロックを物理データブロックとXOR演算することによって行パリティを計算する(982)。モジュール436はさらに、本明細書に記載されるような対角パリティを計算するためのアルゴリズムを使用して、対角パリティを計算する。
ステップ984において、モジュール436は、新たなデータを物理データブロックに書き込む。ステップ984において、モジュール440は、一、又は複数のデータブロックに変更が加えられたストライプの行パリティを記憶しているディスクに対し、コマンドを発行する。一実施形態において、このコマンドは、XPWriteコマンドである。行パリティを記憶しているディスクのモジュール260は、このコマンドを受信し、コマンドを次のように実行する。モジュール260は、コマンドによって示されたブロック番号にある古い行パリティをディスクメモリ270に読み込む。モジュール260は、ストレージドライバモジュール235から、物理データブロックに書き込まれるデータに対するXOR演算の結果を受信する。モジュール260は、そのXOR演算の結果を古い行パリティとXOR演算し、その結果を、行パリティを記憶しているディスク上の、コマンドによって示された行パリティブロックに書き込む。
モジュール440はさらに、対角パリティを記憶しているディスク(対角パリティディスク)に対し、第2のXPWriteコマンドを発行する。ディスク250のモジュール260は、このコマンドを次のように実行する。モジュール260は、コマンド中に示されたブロック番号にある古い対角パリティをディスクメモリ270に読み込む。モジュール260は、ストレージドライバモジュール235から、新たなデータに基いて計算された対角パリティを受信する。モジュール260は、その新たなデータについて計算された対角パリティを古い対角パリティとXOR演算し、そのXOR演算の結果を対角パリティを記憶しているディスク上の、対角パリティブロックに書き込む。
あるいは、もしストライプ中の唯一つのデータブロックに対してしか書き込みが行われない場合、モジュール436は、本明細書に記載されるような対角パリティを計算するためのアルゴリズムを使用して、対角パリティを計算する(986)。ステップ988において、モジュール436は、新たなデータを物理データブロックに書き込む。モジュール440は、物理データブロックに変更が加えられたストライプの行パリティを記憶しているディスクに対し、一つのXPWriteコマンドを発行し、変更が加えられた物理データブロックを含む対角セットの対角パリティを記憶しているディスクに対し、もう一つのXPWriteコマンドを発行する。モジュール260は、それらのコマンドを受信し、コマンドを下記のように実行する。
もし、ストライプ中にゼロ値を記憶しているデータブロックが一つもなかった場合、モジュール436は、例えば減算によるパリティ書き込み、及び再計算によるパリティ書き込みのような従来の方法を使用990して、行パリティ、及び対角パリティを計算し、書き込み処理を実施する。ステップ992において、モジュール436は、データマップ530を使用して、書き込まれるデータブロックをゼロ化されていないものとしてマーキングする。前述の場合と同様に、減算によるパリティ書き込み方法によれば、古い行パリティブロック、古い対角パリティブロック、及び新たなデータが書き込まれる場所に有るデータブロックが、読み出される。新たな行パリティを求めるために、古い行パリティ、古いデータ、及び新たなデータに対するXORが計算される。新たな対角パリティを求めるために、古いデータ、古い行パリティ、古い対角パリティ、及び新しいデータに対するXORが計算される。新たなデータは、データブロックに書き込まれ、新たな行パリティ、及び新たな対角パリティは、対応するパリティブロックに書き込まれる。
再計算によるパリティ書き込みによれば、データの書き込みが行われないデータブロックから、データは読み出される。行パリティは、新たなデータ、及び新たなデータが書き込まれないデータブロックから読み出されたデータに対するXOR演算として計算される。同様に、対角パリティは、新たなデータ、及び新たなデータが書き込まれないデータブロックから読み出されたデータに対するXOR演算として計算される。新たなデータはデータブロックに書き込まれ、行パリティは、行パリティブロックに書き込まれ、対角パリティは、対角パリティブロックに書き込まれる。
5.劣化モード書き込み
これまでのところ、ストレージサーバ200の動作は、通常動作、例えば、クライアント210からのI/Oアクセス要求に対し、ストレージサーバ200が応答するときに、ディスク250からのデータの読み出しや、ディスク250へのデータの書き込みが可能である場合を例として説明してきた。一、又は複数のディスクが故障した状況において、ストレージサーバ200は、劣化モードで動作する。新たなデータが、故障したディスクに書き込まれるとき、データ自体は、ディスクに書き込まれないが、パリティは、新たなデータを含むように計算される。その目的のために、RAIDコントローラモジュール436は、ストライプ中のアレイにおける他の全てのディスクからデータを読み出し、読み出したデータを新たなデータとXOR演算してパリティを求め、ストライプ中のパリティブロックをその新たなパリティで更新する。下記の例は、劣化モードにおけるストレージサーバ200の動作を示す。
図1Aを参照し、ディスクAが故障し、新たなデータは、ディスクAのブロックD0に書き込まれるものと仮定する。再計算によるパリティ書き込み方法を使用した場合、RAIDコントローラモジュール436は、データを書き込むために、下記のステップを実施しなければならないであろう。すなわち、
ストライプ0におけるデータが書き込まれるディスク(ディスクA)以外のディスク(ディスクB、及びディスクC)からデータを読み出すステップ;
ディスクB上のデータ、ディスクC上のデータ、及び新たなデータに対するXORを計算することにより、ストライプ0についての新たな行パリティを求めるステップ;及び
新たな行パリティを行パリティブロックP(0−2)に書き込むステップである。
本発明の一実施形態によれば、もし、ゼロ化プロセスの一部としてディスクAが既にゼロ化されていれば、ストライプ0の行パリティは、ディスクBに記憶されたデータとディスクCに記憶されたデータのXOR演算の結果になる。ディスクAはゼロ値を記憶しているので、行パリティは、ディスクBに記憶されたデータと、ディスクCに記憶されたデータのXOR演算の結果になる。本発明の一実施形態によれば、例えば、ディスクB、及びディスクCからデータを読み出すような、特定の読み出し処理を避けるために、モジュール440は、変更が加えられた物理データブロックを含むストライプのパリティを記憶しているディスク(すなわち、ディスクD)に対し、XPWriteコマンドを発行する。
ディスクDのモジュール260は、サーバシステム200からそのコマンドを受信し、コマンドを次のように実行する。モジュール260は、行パリティ(すなわち、ディスクBに記憶されたデータと、ディスクCに記憶されたデータのXOR演算の結果)をディスクメモリ270に読み込み;ストレージドライバモジュール435から、ディスクAのための新たなデータを受信し;行パリティを新たなデータとXOR演算し、そのXOR演算の結果を、ディスクDの、コマンド中に示されたブロックに書き込む。
従って、ディスクAが故障し、新たなデータをディスクAに書き込むことは出来ないが、もしディスク故障がなければ新たなデータが書き込まれるはずであったストライプの行パリティは、新たなデータを含むように計算される。本発明の一実施形態によれば、空きデータブロックのゼロ化により、それらのデータブロックからデータを読み出す必要はなくなり、また、新たなデータが書き込まれる宛先のデータブロック以外のデータブロックからも、データを読み出す必要はなくなる。
6.メディアエラー
ディスク上のメディアエラーは、そのディスクから特定ブロック、又は複数のブロックからデータを読み出すことが出来ないときに発生する。次に、表2を参照すると、表2は、物理データブロックを記憶するディスクのアレイを示している。この例には、一つのストライプ(ストライプ0)しか描かれていない。データは、ディスク1〜ディスク4に記憶される。ディスク0は、行パリティを記憶する。
Figure 0005302892
ディスク1が故障し、ディスク2がメディアエラーを有するものと仮定する。一般に、メディアエラーを有するディスク2上のデータブロックからデータを復元するためには、ARIDコントローラモジュール436は、下記のようなステップを実施しなければならないであろう。すなわち、
ディスク1、ディスク3、及びディスク4に記憶されている、ストライプ0に関するデータを読み出すステップ;
ディスク0から、ストライプ0に関する行パリティを読み出すステップ;
ディスク1、ディスク3、及びディスク4に記憶されている、ストライプ0に関するデータをXOR演算するステップ;及び
上記ステップの結果をストライプ0の行パリティとXOR演算するステップである。
しかしながら、ディスク1が故障していて、ディスク2に記憶されたデータを復元するために、ディスク1に記憶されたデータを得ることはできないので、ディスク2上の、メディアエラーを有する物理データブロックに記憶されたデータも、復元できない場合がある。本発明の一実施形態によれば、もし、ディスク1がゼロ値を記憶していれば、RAIDコントローラモジュール436は、ディスク2上のストライプ0にある物理データブロックからデータを復元するために、下記のステップを実施する場合がある。すなわち、
ディスク3、及びディスク4上のストライプ0に関するデータを読み出すステップ;
ストライプ0の行パリティを読み出すステップ;
ディスク3、及びディスク4上のストライプ0に関するデータをXOR演算するステップ;及び
上記ステップの結果を、ストライプ0の行パリティとXOR演算するステップである。
もしディスク1がゼロを記憶していれば、ディスク1、ディスク3、及びディスク4に記憶されたデータに対するXOR演算の結果は、ディスク3、及びディスク4に記憶されたデータに対するXOR演算と同じになるので、ディスク1上のデータを読み出す必要はなくなる。従って、あるストライプにおいて、ディスクの1つがゼロ値を記憶していることを知っていれば、ファイルシステム430は、RAID−4、及びRAID−5においてディスク故障が存在するときに、メディアエラーの有るディスクからデータを復元することが可能になる。
また、故障したドライブが2つ有り、さらに3つ目のディスク上にメディアエラーを有する二重パリティRAIDアレイの場合、メディアエラーを有するドライブ上のデータは、もしいずれかの故障したドライブ上の対応するブロックが、ゼロ化されたブロックであれば、復元可能である。このデータは、通常ならば復元できないであろう。
7.ライト・イン・プレイス(WIPL)を使用する最適化
上記の実施形態は、例えば、新たなデータをディスク上の新たな物理的場所に書き込むような、変更の加えられたデータをディスク上の「別の場所に」書き込むファイルシステム430を例として説明されている。本発明の他の実施形態によれば、ファイルシステム430は、「ライト・イン・プレイス」(WIPL)メカニズムを使用して、データを書き込む場合がある。WIPLでは、新たなデータの書き込み要求に応答し、ファイルシステム430は、そのデータをディスクに書き込むためのコマンドをRAIDコントローラモジュール436へ送信する。これに応答し、RAIDコントローラモジュール436は、ディスクから古いデータをメモリ324に読み込み、スナップショット機能を提供するために、その古いデータをディスク上のどこかに書き込む。ファイルシステム430は、その古いデータが記憶されたメモリ324上のアドレスへのポインタを生成し、その古いデータを何時でもアクセスできるようにする。
引き続き表2を参照すると、新たなデータはディスク1に書き込まれる。従来技術を使用してWIPLにおける書き込み処理を実現するために、RAIDコントローラモジュール436は、下記のステップを実施する場合がある。すなわち、
新たなデータを書きまれる場所にあるデータブロックからデータ(例えば、ディスク1に記憶されたデータ)を読み出すステップ;
行パリティを読み出すステップ;
ディスク1に記憶されたデータ、行パリティ、及び新たなデータに対するXORを計算することにより、新たな行パリティを求めるステップ;
新たなデータをディスク1に書き込むステップ;及び
新たな行パリティを行パリティディスクに書き込むステップである。
本発明の一実施形態によれば、データのコピーが作成されるときに、データはディスク1からメモリ324へ既に読み込まれ、そのデータのコピーの記憶場所へのポインタが作成されているので、そのデータを再度読み出す必要はない。従って、WIPLにおいて書き込み要求を完了するために、下記のステップが実施される場合がある。すなわち、
モジュール436が、新たなデータを、メモリ324に記憶された古いデータとXOR演算するステップ;
モジュール436が、新たなデータをディスク1に書き込むステップ;及び
モジュール440が、物理データブロックに変更が加えられたストライプに関するパリティを記憶しているディスク(すなわち、ディスク0)に対し、XPWriteコマンドを発行するステップである。
XPWriteコマンドの実行の結果、ディスク0のモジュール260は、下記のステップを実行する。すなわち、
モジュール260が、古いパリティをディスクメモリ270に読み出すステップ;
モジュール260が、ストレージドライバモジュール435から、古いデータと新たなデータのXOR演算の結果を受信するステップ;
モジュール260が、先のステップにおけるXOR演算の結果を、古いパリティとXOR演算するステップ;及び
モジュール260が、そのXOR演算の結果を、ディスク0上の、コマンド中に示されたパリティブロックに書き込むステップである。
このように、古いデータは、既にメモリ324にコピーされ、古いデータが記憶された記憶場所へのポインタが作成されるので、本発明のこの実施形態によれば、新たなパリティを計算するために古いデータをRAIDコントローラモジュール436によって読み出す必要はなくなる。代わりに、RAID最適化モジュール440は、パリティディスクにコマンドを送信する。
このように、本発明の種々の実施形態によれば、物理データブロックを変更するための幾つかの特定の読み出し処理は不要になる。これは、空きデータブロックをゼロ化し、古いデータへのポインタを作成し、さらに、パリティを記憶しているディスクに対して送信されるXPWriteコマンドの機能を活用することにより達成される。その結果、回転遅延が幾らか無くなり、システム処理能力が向上する。本発明は、RAID−4、RAID−5、RAID−6、及びDAID−DPのいずれのデータ保護方式において実施することも出来る。
当然ながら、下記の変形実施形態、及び例は、本発明を網羅的に表現することも、本発明を制限することも意図していない。それらの変形実施形態、及び例は、本発明の種々の実施形態をより深く理解してもらうために提供される。
本発明は、例示のために、特定の幾つかの実施形態を例として説明されているが、本発明が、記載した実施形態に制限されることはないものと考えられる。当業者であれば、それらの実施形態に対して修正、又は変更を加えた形で本発明を実施することも可能であり、また、添付の特許請求の範囲の思想、及び範囲内にある他の実施形態で本発明を実施することも可能であることが、分かるであろう。
また、互いに依存関係のない動作は、並列に実施される場合がある。本発明の原理、及びその実用的な実施形態を最もよく説明し、それによって当業者が、本発明、並びに、想定する特定の用途にふさわしい種々の変更が施された実施形態を最もよく利用できるようにする目的で、実施例は選択され、説明された。
さらに、明細書の到る所における「一実施形態」という語の使用は、必ずしも同じ実施形態を意味してはいない。本発明の幾つかの特定の実施形態について説明したが、本発明をそれらの特定の実施形態に制限してはならない。従って、明細書、及び図面は、制限ではなく、例示とみなすべきである。
特に断り書きがない限り、本明細書全体を通じて、「処理する」、「計算する」、「求める」、「判定する」、又は「表示する」といった用語の使用は、コンピュータシステムレジスタ、及びメモリ内に物理(例えば電気的)量として表現されるデータを操作し、コンピュータシステム内に物理量として同様に表現される他のデータに変換するコンピュータシステム、又は類似の電子計算装置の動作、及びプロセスを意味する。
本発明は、本明細書に記載する処理を実施するための装置によって実施することができる。この装置は、必要とされる目的に合わせて特別に構成される場合もあれば、コンピュータに記憶されるコンピュータプログラム(例えば、機械やプロセッサによって実行される一群の命令)によって選択的に駆動され、又は再構成される汎用コンピュータのような機械からなる場合もある。そのようなコンピュータプログラムは、コンピュータ読取可能な記憶媒体に記憶される場合があり、限定はしないが、例えばフロッピー(R)ディスク、光ディスク、及び磁気光ディスクのような任意のタイプのディスク、リード・オンリ・メモリ、ランダム・アクセス・メモリ、EPROM、EEPROM、磁気カード、光カード、あるいは、物理的(例えば、電気的)構成の記憶に適した任意のタイプの媒体に記憶される場合があり、それぞれが、コンピュータシステムバスに結合される。これらの媒体はそれぞれ、媒体を読み出し、又は書き込むための適当なデバイスの使用を通じて、コンピュータシステムバスに結合される場合がある。

Claims (2)

  1. 複数の記憶装置を備え、そのうちの第2の記憶装置に故障があるシステムにおいて、メディアエラーを有する第1の記憶装置に記憶されたデータを復旧する方法であって、前記データが、前記複数の記憶装置にわたるストライプの一部であり、前記ストライプが、第3の記憶装置に記憶された行パリティデータを含むものにおいて、
    ゼロ化モジュールによって、複数の記憶装置における空きの物理データブロックをゼロ値とみなすためのコマンドを発行し、故障を有する前記第2の記憶装置が、ゼロ値を記憶するようにするステップと、
    ストレージモジュールによって、前記コマンドにより特定される空きの物理データブロックをゼロ値を有するものとみなすことにより、前記ゼロ化コマンドを実行するステップと、
    メディアエラーを有する前記第1の記憶装置に記憶されているデータを読み出すための要求をクライアントから受信するステップと、
    ゼロ値を有するものとみなされない前記記憶装置からの前記ストライプについてのデータ、及び前記ストライプについての前記行パリティデータを処理することによって、前記故障を有する前記第2の記憶装置からデータを読み出すことなく、メディアエラーを有する前記第1の記憶装置からデータを復旧するステップと
    を含み、
    前記ゼロ化コマンドを発行するステップ、及び前記ゼロ化コマンドを実行するステップは、前記クライアントからのアクセス要求が少ないと予想される空き時間に実施される方法。
  2. 前記メディアエラーを有する前記第1の記憶装置からデータを復旧するステップは、
    メディアエラーを有する前記第1の記憶装置以外の記憶装置、及び前記故障を有する前記第2の記憶装置からデータを読み出すステップと、
    メディアエラーを有する前記第1の記憶装置に記憶されたデータに関連する前記行パリティデータを読み出すステップと、
    前記記憶装置から読み出されたデータ、及び前記行パリティデータに対し、排他的論理和演算を実施するステップと
    をさらに含む、請求項1に記載の方法。
JP2009535301A 2006-10-31 2007-10-31 ストレージシステムにおける書き込み処理を最適化するためのシステム、及び方法 Expired - Fee Related JP5302892B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/590,446 US7822921B2 (en) 2006-10-31 2006-10-31 System and method for optimizing write operations in storage systems
US11/590,446 2006-10-31
PCT/US2007/022962 WO2008054760A2 (en) 2006-10-31 2007-10-31 System and method for optimizing write operations storage systems

Publications (2)

Publication Number Publication Date
JP2010508604A JP2010508604A (ja) 2010-03-18
JP5302892B2 true JP5302892B2 (ja) 2013-10-02

Family

ID=39332103

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009535301A Expired - Fee Related JP5302892B2 (ja) 2006-10-31 2007-10-31 ストレージシステムにおける書き込み処理を最適化するためのシステム、及び方法

Country Status (4)

Country Link
US (2) US7822921B2 (ja)
EP (1) EP2097806A2 (ja)
JP (1) JP5302892B2 (ja)
WO (1) WO2008054760A2 (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US9384818B2 (en) 2005-04-21 2016-07-05 Violin Memory Memory power management
JP2008146574A (ja) 2006-12-13 2008-06-26 Hitachi Ltd 記憶制御装置及び記憶制御方法
US9632870B2 (en) * 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US8209587B1 (en) 2007-04-12 2012-06-26 Netapp, Inc. System and method for eliminating zeroing of disk drives in RAID arrays
US8370715B2 (en) * 2007-04-12 2013-02-05 International Business Machines Corporation Error checking addressable blocks in storage
US20090204846A1 (en) * 2008-02-12 2009-08-13 Doug Baloun Automated Full Stripe Operations in a Redundant Array of Disk Drives
US8510370B2 (en) * 2008-02-26 2013-08-13 Avid Technology, Inc. Array-based distributed storage system with parity
JP4762289B2 (ja) 2008-10-01 2011-08-31 株式会社日立製作所 特定パターンデータが格納される仮想ボリュームへの記憶領域の割り当てを制御するストレージシステム
US8943357B2 (en) * 2008-10-27 2015-01-27 Kaminario Technologies Ltd. System and methods for RAID writing and asynchronous parity computation
US8516215B2 (en) * 2009-04-23 2013-08-20 Hitachi, Ltd. Computing system having a controller for controlling allocation of a storage area of a logical volume in a pool to a virtual volume and controlling methods for the same
WO2010144587A2 (en) 2009-06-12 2010-12-16 Violin Memory, Inc. Memory system having persistent garbage collection
EP3696676B1 (en) * 2009-10-09 2023-12-06 Violin Systems LLC Memory system with multiple striping of raid groups and method for performing the same
US20110202722A1 (en) * 2010-01-19 2011-08-18 Infinidat Ltd. Mass Storage System and Method of Operating Thereof
US8156368B2 (en) 2010-02-22 2012-04-10 International Business Machines Corporation Rebuilding lost data in a distributed redundancy data storage system
US8103904B2 (en) 2010-02-22 2012-01-24 International Business Machines Corporation Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
US8103903B2 (en) * 2010-02-22 2012-01-24 International Business Machines Corporation Read-modify-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
US8583866B2 (en) 2010-02-22 2013-11-12 International Business Machines Corporation Full-stripe-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
US8850113B2 (en) * 2010-02-27 2014-09-30 Cleversafe, Inc. Data migration between a raid memory and a dispersed storage network memory
US8473567B2 (en) * 2010-03-29 2013-06-25 Intel Corporation Generating a packet including multiple operation codes
US9507670B2 (en) * 2010-06-14 2016-11-29 Veeam Software Ag Selective processing of file system objects for image level backups
US9244769B2 (en) * 2010-09-28 2016-01-26 Pure Storage, Inc. Offset protection data in a RAID array
US20120198195A1 (en) * 2011-02-02 2012-08-02 Hewlett-Packard Development Company, L.P. Data storage system and method
US8996461B1 (en) * 2011-03-28 2015-03-31 Emc Corporation Method and apparatus for replicating the punch command
US20120278527A1 (en) * 2011-04-26 2012-11-01 Byungcheol Cho System architecture based on hybrid raid storage
US9176670B2 (en) * 2011-04-26 2015-11-03 Taejin Info Tech Co., Ltd. System architecture based on asymmetric raid storage
US20120278550A1 (en) * 2011-04-26 2012-11-01 Byungcheol Cho System architecture based on raid controller collaboration
US8456972B2 (en) * 2011-09-12 2013-06-04 Microsoft Corporation Efficient access to storage devices with usage bitmaps
CN104040515B (zh) 2011-09-30 2018-05-11 英特尔公司 在逻辑驱动器模型下呈现直接存取的存储设备
US9063939B2 (en) * 2011-11-03 2015-06-23 Zettaset, Inc. Distributed storage medium management for heterogeneous storage media in high availability clusters
JP5923964B2 (ja) * 2011-12-13 2016-05-25 富士通株式会社 ディスクアレイ装置、制御装置、およびプログラム
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
US9571356B2 (en) 2013-09-27 2017-02-14 Zettaset, Inc. Capturing data packets from external networks into high availability clusters while maintaining high availability of popular data packets
JP6427913B2 (ja) * 2014-03-28 2018-11-28 日本電気株式会社 ストレージシステム、制御装置、ストレージ装置、入出力制御方法、及びプログラム
US10237347B2 (en) 2015-06-08 2019-03-19 Excelero Storage Ltd. System and method for providing a client device seamless access to a plurality of remote storage devices presented as a virtual device
US10565054B2 (en) * 2016-08-29 2020-02-18 Excelero Storage Ltd. System and method for reducing bandwidth consumption of a client device accessing a remote storage device
US9658782B2 (en) 2014-07-30 2017-05-23 Excelero Storage Ltd. Scalable data using RDMA and MMIO
US10936200B2 (en) 2014-07-30 2021-03-02 Excelero Storage Ltd. System and method for improved RDMA techniques for multi-host network interface controllers
US10979503B2 (en) 2014-07-30 2021-04-13 Excelero Storage Ltd. System and method for improved storage access in multi core system
US10176039B2 (en) * 2014-09-19 2019-01-08 Micron Technology, Inc. Self-accumulating exclusive OR program
US20160098211A1 (en) * 2014-10-03 2016-04-07 HGST Netherlands B.V. Implementing enhanced phase change memory (pcm) read latency through coding
US10466913B2 (en) 2015-04-29 2019-11-05 EMC IP Holding Company LLC Method and system for replicating and using grid level metadata in a storage system
US10157012B2 (en) 2015-09-29 2018-12-18 Sandisk Technologies Llc Zero read on trimmed blocks in a non-volatile memory system
US10063261B1 (en) * 2015-10-13 2018-08-28 Sorenson Ip Holdings Llc Communication endpoints and related methods for forward error correction of packetized data
US10127113B1 (en) 2016-03-31 2018-11-13 EMC IP Holding Company LLC Method and system for checkerboard RAID
US10297274B2 (en) * 2016-06-01 2019-05-21 Spectra Logic, Corp. Shingled magnetic recording raid scheme
US10289491B1 (en) 2017-04-28 2019-05-14 EMC IP Holding Company LLC Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance
US10466930B2 (en) 2017-04-28 2019-11-05 EMC IP Holding Company LLC Method and system for fast ordered writes with atomic multicast
US10614019B2 (en) 2017-04-28 2020-04-07 EMC IP Holding Company LLC Method and system for fast ordered writes with target collaboration
US10339062B2 (en) 2017-04-28 2019-07-02 EMC IP Holding Company LLC Method and system for writing data to and read data from persistent storage
US10564856B2 (en) * 2017-07-06 2020-02-18 Alibaba Group Holding Limited Method and system for mitigating write amplification in a phase change memory-based storage device
US10585749B2 (en) * 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding
US10379950B2 (en) * 2017-11-30 2019-08-13 Western Digital Technologies, Inc. Updating write-in-place storage devices
CN109976663B (zh) * 2017-12-27 2021-12-28 浙江宇视科技有限公司 分布式存储响应方法和系统
US11029869B1 (en) * 2018-02-05 2021-06-08 Virtuozzo International Gmbh System and method for multiqueued access to cloud storage

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US4547882A (en) 1983-03-01 1985-10-15 The Board Of Trustees Of The Leland Stanford Jr. University Error detecting and correcting memories
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
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
US5210860A (en) 1990-07-20 1993-05-11 Compaq Computer Corporation Intelligent disk array controller
US5166936A (en) 1990-07-20 1992-11-24 Compaq Computer Corporation Automatic hard disk bad sector remapping
US5375128A (en) 1990-10-18 1994-12-20 Ibm Corporation (International Business Machines Corporation) Fast updating of DASD arrays using selective shadow writing of parity and data blocks, tracks, or cylinders
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
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
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
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
US5479633A (en) * 1992-10-30 1995-12-26 Intel Corporation Method of controlling clean-up of a solid state memory disk storing floating sector data
US6138126A (en) 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
JP3751018B2 (ja) 1993-06-03 2006-03-01 ネットワーク・アプライアンス・インコーポレイテッド ライトエニウエアファイルシステムレイアウト
US5963962A (en) 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
EP0701716B1 (en) 1993-06-03 2002-08-14 Network Appliance, Inc. Method and file system for allocating blocks of files to storage space in a RAID disk system
EP0701715A4 (en) 1993-06-04 1999-11-17 Network Appliance Corp METHOD FOR PROVIDING PARITY IN A RAID SUBSYSTEM USING REMANENT MEMORY
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
US5657468A (en) 1995-08-17 1997-08-12 Ambex Technologies, Inc. Method and apparatus for improving performance in a reduntant array of independent disks
US5812753A (en) 1995-10-13 1998-09-22 Eccs, Inc. Method for initializing or reconstructing data consistency within an array of storage elements
JPH09128165A (ja) * 1995-10-27 1997-05-16 Toshiba Corp 固体記録再生装置
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
US5742752A (en) 1995-12-29 1998-04-21 Symbios Logic Inc. Method for performing a RAID stripe write operation using a drive XOR command set
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
JPH1069420A (ja) * 1996-08-29 1998-03-10 Sony Corp 情報記録装置、情報記録再生装置、情報記録方法および情報再生方法
US5950225A (en) 1997-02-28 1999-09-07 Network Appliance, Inc. Fly-by XOR for generating parity for data gleaned from a bus
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 アルプス電気株式会社 ディスクアレイ装置
US6138125A (en) 1998-03-31 2000-10-24 Lsi Logic Corporation Block coding method and system for failure recovery in disk arrays
US6138201A (en) 1998-04-15 2000-10-24 Sony Corporation Redundant array of inexpensive tape drives using data compression and data allocation ratios
JPH11312057A (ja) * 1998-04-28 1999-11-09 Nec Corp 制御情報記録手段を有する磁気ディスク装置
US6247157B1 (en) 1998-05-13 2001-06-12 Intel Corporation Method of encoding data signals for storage
US6557123B1 (en) 1999-08-02 2003-04-29 Inostor Corporation Data redundancy methods and apparatus
US6742137B1 (en) 1999-08-17 2004-05-25 Adaptec, Inc. Object oriented fault tolerance
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)
US6581185B1 (en) 2000-01-24 2003-06-17 Storage Technology Corporation Apparatus and method for reconstructing data using cross-parity stripes on storage media
US6779095B2 (en) 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data using pointers to new and original data in a data location
US6715059B2 (en) * 2000-07-26 2004-03-30 Tas Holdings, Inc. Methods and systems for a shared memory unit with extendable functions
US7072916B1 (en) 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6671772B1 (en) 2000-09-20 2003-12-30 Robert E. Cousins Hierarchical file system structure for enhancing disk transfer efficiency
US6745284B1 (en) 2000-10-02 2004-06-01 Sun Microsystems, Inc. Data storage subsystem including a storage disk array employing dynamic data striping
US20020124137A1 (en) 2001-01-29 2002-09-05 Ulrich Thomas R. Enhancing disk array performance via variable parity based load balancing
US6571326B2 (en) 2001-03-08 2003-05-27 Intel Corporation Space allocation for data in a nonvolatile memory
US7073115B2 (en) 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
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
US7024586B2 (en) 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
US7328305B2 (en) 2003-11-03 2008-02-05 Network Appliance, Inc. Dynamic parity distribution technique
US7263629B2 (en) * 2003-11-24 2007-08-28 Network Appliance, Inc. Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array
US7318190B2 (en) * 2004-06-10 2008-01-08 Intel Corporation Storage device parity computation
JP2006134196A (ja) * 2004-11-09 2006-05-25 Hitachi Ltd ディスクアレイ装置
US20060195657A1 (en) * 2005-02-28 2006-08-31 Infrant Technologies, Inc. Expandable RAID method and device

Also Published As

Publication number Publication date
EP2097806A2 (en) 2009-09-09
WO2008054760A3 (en) 2009-09-24
US8156282B1 (en) 2012-04-10
JP2010508604A (ja) 2010-03-18
WO2008054760A2 (en) 2008-05-08
US7822921B2 (en) 2010-10-26
US20080109616A1 (en) 2008-05-08

Similar Documents

Publication Publication Date Title
JP5302892B2 (ja) ストレージシステムにおける書き込み処理を最適化するためのシステム、及び方法
US7647526B1 (en) Reducing reconstruct input/output operations in storage systems
US8209587B1 (en) System and method for eliminating zeroing of disk drives in RAID arrays
US8583984B2 (en) Method and apparatus for increasing data reliability for raid operations
JP5102776B2 (ja) ストレージアレイにおける三重故障からの効率的な復旧を可能にする三重パリティ技術
US8386838B1 (en) High-availability of a storage system in a hierarchical virtual server environment
JP5124792B2 (ja) RAID(RedundantArrayofIndependentDisks)システム用のファイルサーバ
US8839028B1 (en) Managing data availability in storage systems
US8209595B2 (en) Storage sub-system and method for controlling the same
KR101758544B1 (ko) 비휘발성 메모리 시스템에서의 동기 미러링
JP6228347B2 (ja) ストレージ装置及び記憶デバイス
US10691339B2 (en) Methods for reducing initialization duration and performance impact during configuration of storage drives
US20050144382A1 (en) Method, system, and program for managing data organization
US20030084397A1 (en) Apparatus and method for a distributed raid
US8327250B1 (en) Data integrity and parity consistency verification
TWI451257B (zh) 保護在直接附加儲存(das)系統中快取資料的完整性之裝置及方法
US11301324B2 (en) Method and apparatus for consistent and highly available data storage using local and fabric attached non-volatile memory storage devices
US8006127B2 (en) File server for redundant array of independent disks (RAID) system
US7240237B2 (en) Method and system for high bandwidth fault tolerance in a storage subsystem
US6976146B1 (en) System and method for emulating block appended checksums on storage devices by sector stealing
US20210271393A1 (en) Method and apparatus for performing data access management of all flash array server
US11481335B2 (en) Methods for using extended physical region page lists to improve performance for solid-state drives and devices thereof
US11868612B1 (en) Managing storage operations in storage systems
JPH10269695A (ja) コンピュータシステムにおける記憶装置の制御方式

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111108

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120208

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120507

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121019

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130513

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130621

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees