JP2011165212A - 分散型raid実装のための方法およびシステム - Google Patents

分散型raid実装のための方法およびシステム Download PDF

Info

Publication number
JP2011165212A
JP2011165212A JP2011107699A JP2011107699A JP2011165212A JP 2011165212 A JP2011165212 A JP 2011165212A JP 2011107699 A JP2011107699 A JP 2011107699A JP 2011107699 A JP2011107699 A JP 2011107699A JP 2011165212 A JP2011165212 A JP 2011165212A
Authority
JP
Japan
Prior art keywords
data
segment
data bank
segments
capacity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2011107699A
Other languages
English (en)
Other versions
JP2011165212A5 (ja
Inventor
William C Galloway
シー. ギャロウェイ ウィリアム
Choon-Seng Tan
タン チョン−セン
Greg J Pellegrino
ジェイ. ペレグリノ グレッグ
Ryan A Callison
エー. カリソン ライアン
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.)
Pivot3 Inc
Original Assignee
Pivot3 Inc
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 Pivot3 Inc filed Critical Pivot3 Inc
Publication of JP2011165212A publication Critical patent/JP2011165212A/ja
Publication of JP2011165212A5 publication Critical patent/JP2011165212A5/ja
Pending legal-status Critical Current

Links

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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/1028Distributed, i.e. distributed 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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】分散型RAIDシステムを提供すること
【解決手段】開示されるシステムおよび方法の実施形態は、一組のデータバンクを備える、分散型RAIDシステムを提供する。より具体的には、分散型RAIDシステムの特定の実施形態では、各データバンクは、一組の関連ストレージ媒体を有し、同様の分散型RAIDアプリケーションを実行する。データバンクの各々の上の分散型RAIDアプリケーションは、それら自体の間で、データバンクの関連ストレージ媒体上に格納されるデータと併せた、RAIDのレベルの実装に関連するデータフローを分散し、制御するように協働する。
【選択図】図1

Description

(技術分野)
本発明は、概して、ストレージデバイスの使用に関する。より具体的には、本発明の実施形態は、ストレージデバイス上にRAIDを実装するステップに関する。さらにより具体的には、本発明の特定の実施形態は、RAIDの分散型実装に関する。
(背景)
データは、多くの事業体にとっての有用な資産を表す。その結果、不慮であるか悪意のある行為によって引き起こされるものかに関わらず、データ損失は、労働力の浪費、顧客からの信頼の喪失、時間の損失、および潜在的な法的責任の観点から、費用のかかるものとなり得る。商業上、法律上、または他の目的のためのデータの適切な保護を確実なものにするために、多くの事業体は、データストレージ、冗長性、セキュリティ等を含む、種々の技術を使用して、そのデータを保護することを望み得る。しかしながら、これらの技術は、他の競合する制約、あるいはこのデータを処理もしくは格納するために使用されるコンピューティングデバイスの状態または設定によって課される要件と矛盾し得る。
これらの対立に対処するための一方法は、レイド(Redundant Array of Independent Disk(RAID))を実装することである。一般に、RAIDシステムは、信頼性を高めるため、および場合によっては、ストレージにこれらのRAIDシステムを使用するコンピューティングデバイス(ホストとして既知)の処理量を改善するために、集合的にアレイと称される、複数のハードディスクドライブ(または他の種類のストレージ媒体)にわたって、データを分割および複製する。その結果、RAIDアレイは、ホストに対して1つ以上のモノリシックストレージ領域のように見え得る。ホストがRAIDシステムと通信すること(読み込み、書き込み等)を要求する時、ホストは、RAIDアレイが単一ディスクであるかのように通信する。言い換えると、RAIDシステムは、そのような通信と併せて特定のRAIDレベルを実装するように、これらの通信を処理する。これらのRAIDレベルは、信頼性、能力、速度等の種々のトレードオフ間のある所望のバランスを達成するように設計されてもよい。例えば、RAID(レベル)0は、速度の改善をもたらすように、いくつかのディスクにわたってデータを分散し、ディスクの実質的に全容量を利用するが、ディスクが故障した場合、ディスク上のすべてのデータが損失され、RAID(レベル)1は、各々が同一のデータを格納する、2つ(またはそれ以上)のディスクを使用するため、1つのディスクが生存している限り、データは損失されない。アレイの総容量は、実質的に、単一ディスクの容量であり、RAID(レベル)5は、いずれか1つのディスクの損失からデータを保護するように3つ以上のディスクを組み合わせ、アレイのストレージ容量は、1つのディスク分だけ減少される。
RAIDの現行の実装は、種々の問題を有する場合がある。これらの問題は、多くの場合において、RAIDシステムとのすべての通信は、RAIDシステムを制御し、管理する、単一サーバにアドレス指定されなければならない等、これらのRAIDシステムのアーキテクチャによって課される制限に起因する場合がある。他の問題は、RAIDシステムを備えるディスク上のデータの構成または配置から生じる場合がある。例えば、特定の場合では、RAIDシステムを利用することができる前に、RAIDレベルが選択され、RAIDシステム内のストレージが割り当てられなければならない。したがって、初期に選択されるRAIDレベルは、RAIDのそのレベルが望まれるか、または必要とされるかに関わらず、RAIDシステム上に格納されるデータと併せて実装されなければならない。多くの場合では、これらの既存の問題は、これらの解決策を実装するためにカスタムハードウェアまたはソフトウェアを使用する必要性によって悪化し得、そのような解決策の実装に関連する費用を引き上げる。
結果として、これらの問題を改善することが望ましい。
(概要)
開示されるシステムおよび方法の実施形態は、一組のデータバンクを備える、分散型RAIDシステムを提供する。より具体的には、分散型RAIDシステムの特定の実施形態では、各データバンクは、一組の関連ストレージ媒体を有し、同様の分散型RAIDアプリケーションを実行する。データバンクの各々の上の分散型RAIDアプリケーションは、それら自体の間で、データバンクの関連ストレージ媒体上に格納されるデータと併せた、RAIDのレベルの実装に関連するデータフローを分散し、制御するように協働する。
具体的に、一実施形態では、関連RAIDレベルを伴う容量は、分散型RAIDシステムを使用して作成されてもよい。次いで、分散型RAIDアプリケーションの各々は、その容量またはその容量と併せた所望のRAIDレベルの実装に関連付けられるデータが、分散型RAIDシステムの複数のデータバンク上に格納され得るように、その容量のデータに関連付けられる動作を協働することができる。
これらのデータバンクの各々の上で実行される同様の分散型RAIDアプリケーションを使用して、容量のデータおよびRAIDの実装に関連付けられるデータの両方を複数のデータバンク上に格納することによって、容量と併せたRAIDのレベルの実装を協働することによって、多数の利点が達成され得る。すなわち、異なるストレージ容量が割り振られてもよく、容量のうちの1つ以上は、異なるRAIDレベルに関連して実装される。さらに、データバンクにわたるストレージの協働およびRAIDの実装が、実質的に同一の分散型RAIDアプリケーションを使用して達成される際、多くの場合において、標準x86ベースのサーバおよびストレージ媒体等の標準または既製のハードウェアが使用されてもよい。
さらに、RAIDシステムのデータバンクの各々にわたって制御を分散することによって、各データバンク上の分散型RAIDアプリケーションの各々は、実質的に自立的に実行することができる。さらに、1つのデータバンクを損失することができ、RAIDシステムは、RAIDシステムを利用するホストの各々に対して、依然としてシームレスに動作することができ得るというように、ある程度の耐障害性が、そのアーキテクチャに内在し得る。
さらに、本明細書に提示されるシステムおよび方法の実施形態の副次的作用として、存在する性能ボトルネックがより少ないため、改善された性能が達成され得、各ホストがスイッチに連結され、各データバンクがそのスイッチに連結され得るため、増加したバンド幅が使用可能となり得、そのような分散型RAIDシステムの拡大または縮小は、比較的シームレスに達成され得る。
本発明のこれらおよび他の態様は、以下の説明および添付の図面と併せて熟考される時、より認識され、理解されるであろう。以下の説明は、本発明の種々の実施形態およびそれらの多数の具体的な詳細を示すが、限定としてではなく、例として与えられている。本発明の範囲内で、多くの置換、修正、追加、または再配列が行われてもよく、本発明は、すべてのそのような置換、修正、追加、または再配列を含む。
例えば、本発明は以下の項目を提供する。
(項目1)
分散型RAIDを実装するためのシステムであって、
1つ以上のホストと、
複数のデータバンクコンピュータであって、各データバンクは、各ホストおよび他の複数のデータバンクの各々に連結され、各データバンクは、
プロセッサと、
データストアと、
コンピュータ可読媒体であって、
該1つ以上のホストのうちの第1のホストから、容量の第1のセグメントに対応するコマンドを受信するために実行可能な命令であって、該容量および該容量と併せて実装されるRAIDレベルに対応する冗長データは、該複数のデータバンクの各々に格納され、その結果、該容量の各セグメントについて、そのセグメントに関連付けられる該冗長データを備える、対応する冗長セグメントは、該セグメントと同一のデータバンク上に存在しない、命令と、
該複数のデータバンクのうちの第1のデータバンクを決定するために実行可能な命令であって、該第1のデータバンクは、該第1のセグメントに対応する、命令と、
該第1のデータバンクが該コマンドを受信した該データバンクである場合、該第1のセグメントに対して該第1のコマンドを実行し、そうでない場合、該第1のコマンドを該第1のデータバンクに転送するために実行可能な命令と
を備える、コンピュータ可読媒体と
を含む、データバンクコンピュータと
を備える、システム。
(項目2)
上記容量の各セグメントは、上記複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従って、該複数のデータバンクのうちの1つに割り当てられ、上記冗長セグメントの各々は、その冗長セグメントに関連付けられる上記容量のいずれかのセグメントに対応する、該複数のデータバンクの各々とは異なる、該複数のデータバンクのうちの1つに割り当てられる、項目1に記載のシステム。
(項目3)
上記コンピュータ命令はさらに、上記第1のコマンドが書き込みコマンドであるかどうか、および該第1のコマンドが上記複数のデータバンクのうちの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定するために実行可能であり、該第2のデータバンクは、上記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第2のデータバンクが、上記コマンドを受信した上記データバンクである場合、該第1の冗長セグメントに対して該第1のコマンドを実行し、そうでない場合、該第1のコマンドを上記第2のデータバンクに転送する、項目2に記載のシステム。
(項目4)
上記第1のデータバンクを決定し、上記第2のデータバンクを決定することは、上記データストア内のグローバルテーブルにアクセスすることを含み、該グローバルテーブルは、該複数データバンクの上記順列および上記RAIDレベルを備える、項目3に記載のシステム。
(項目5)
プロセッサを有するコンピューティングデバイス上に実装される分散型RAIDのための方法であって、
複数のデータバンク上に容量を確立することであって、該容量は、一組のセグメントを備え、該一組のセグメントは、該複数のデータバンク上に格納される、ことと、
該容量と併せてRAIDレベルを実装することであって、該RAIDレベルを実装することは、一組の冗長セグメントを格納することを含み、各冗長セグメントは、該一組のセグメントのうちの1つ以上に対応し、その結果、各冗長セグメントは、該一組のセグメントのうちの対応する1つ以上と同一のデータバンク上に存在しない、ことと、
該容量の該一組のセグメントのうちの第1のセグメントに対応するコマンドを受信することと、
該複数のデータバンクのうちの第1のデータバンクを決定することであって、該第1のデータバンクは、該第1のセグメントに対応する、ことと、
該第1のセグメントに対して該第1のコマンドを実行することであって、該第1のコマンドは、該第1のデータバンク上で実行される、ことと
を含む、方法。
(項目6)
上記容量の上記一組のセグメントの各々は、上記複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従ってデータバンクに割り当てられ、上記一組の冗長セグメントの各々は、該冗長セグメントに対応する上記1つ以上のセグメントのうちのいずれかに対応する、該複数のデータバンクの各々とは異なるデータバンクに割り当てられる、項目5に記載の方法。
(項目7)
上記第1のコマンドが書き込みコマンドであるかどうか、および該第1のコマンドが上記複数のデータバンクのうちの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第2のデータバンクは、上記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第1の冗長セグメントに対して該第1のコマンドを実行し、該第1のコマンドは、該第2のデータバンク上で実行される、項目6に記載の方法。
(項目8)
上記第1のデータバンクを決定し、上記第2のデータバンクを決定することは、該複数データバンクの上記順列および上記RAIDレベルを備えるグローバルテーブルにアクセスすることを含む、項目7に記載の方法。
(項目9)
1つ以上のデータバンクコンピュータ上に実装される分散型RAIDのための方法であって、各データバンクコンピュータは、1つ以上のホストおよび他の複数のデータバンクの各々に連結され、
容量の第1のセグメントに対応するコマンドをホストから受信することであって、該容量および該容量と併せて実装されるRAIDレベルに対応する冗長データは、複数のデータバンクの各々に格納され、その結果、該容量の各セグメントについて、そのセグメントに関連付けられる該冗長データを備える、対応する冗長セグメントは、該セグメントと同一のデータバンク上に存在しない、ことと、
該複数のデータバンクのうちの第1のデータバンクを決定することであって、該第1のデータバンクは、該第1のセグメントに対応する、ことと、
該第1のセグメントに対して該第1のコマンドを実行することであって、該第1のコマンドは、該第1のデータバンク上で実行される、ことと
を含む、方法。
(項目10)
上記容量の各セグメントは、上記複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従ってデータバンクに割り当てられ、上記冗長セグメントの各々は、その冗長セグメントに関連付けられる該容量のいずれかのセグメントに対応する、該複数のデータバンクの各々とは異なるデータバンクに割り当てられる、項目9に記載の方法。
(項目11)
上記第1のコマンドが書き込みコマンドであるかどうか、および該第1のコマンドが上記複数のデータバンクのうちの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第2のデータバンクは、上記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該冗長セグメントに対して該第1のコマンドを実行し、該第1のコマンドは、該第2のデータバンク上で実行される、項目10に記載の方法。
(項目12)
上記第1のデータバンクを決定し、上記第2のデータバンクを決定することは、該複数データバンクの上記順列および上記RAIDレベルを備えるグローバルテーブルにアクセスすることを含む、項目11に記載の方法。
(項目13)
分散型RAIDを実装するためのコンピュータ実行可能命令を備える、コンピュータ可読媒体であって、該コンピュータ命令は、
複数のデータバンク上に容量を確立するために実行可能であって、該容量は、一組のセグメントを備え、該一組のセグメントは、該複数のデータバンク上に格納され、
該容量と併せてRAIDレベルを実装するために実行可能であって、該RAIDレベルを実装することは、一組の冗長セグメントを格納することを含み、各冗長セグメントは、該一組のセグメントのうちの1つ以上に対応し、その結果、各冗長セグメントは、該一組のセグメントのうちの対応する1つ以上と同一のデータバンク上に存在せず、
該容量の該一組のセグメントのうちの第1のセグメントに対応するコマンドを受信するために実行可能であり、
該複数のデータバンクのうちの第1のデータバンクを決定するために実行可能であって、該第1のデータバンクは、該第1のセグメントに対応し、
該第1のセグメントに対して該第1のコマンドを実行するために実行可能であって、該第1のコマンドは、該第1のデータバンク上で実行される、
コンピュータ可読媒体。
(項目14)
上記容量の上記一組のセグメントの各々は、上記複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従ってデータバンクに割り当てられ、上記一組の冗長セグメントの各々は、該冗長セグメントに対応する上記1つ以上のセグメントのうちのいずれかに対応する、該複数のデータバンクの各々とは異なるデータバンクに割り当てられる、項目13に記載のコンピュータ可読媒体。
(項目15)
上記命令はさらに、上記第1のコマンドが書き込みコマンドであるかどうか、および該第1のコマンドが上記複数のデータバンクのうちの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定するために実行可能であり、該第2のデータバンクは、上記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第1の冗長セグメントに対して該第1のコマンドを実行し、該第1のコマンドは、該第2のデータバンク上で実行される、項目14に記載のコンピュータ可読媒体。
(項目16)
上記第1のデータバンクを決定し、上記第2のデータバンクを決定することは、該複数データバンクの上記順列および上記RAIDレベルを備えるグローバルテーブルにアクセスすることを含む、項目15に記載のコンピュータ可読媒体。
(項目17)
複数のデータバンクコンピュータ上に分散型RAIDを実装するためのコンピュータ実行可能命令を備える、コンピュータ可読媒体であって、該コンピュータ命令は、
容量の第1のセグメントに対応するコマンドをホストから受信するために実行可能であって、該容量および該容量と併せて実装されるRAIDレベルに対応する冗長データは、複数のデータバンクの各々の上に格納され、その結果、該容量の各セグメントについて、そのセグメントに関連付けられる該冗長データを備える、対応する冗長セグメントは、該セグメントと同一のデータバンク上に存在せず、
該複数のデータバンクのうちの第1のデータバンクを決定するために実行可能であって、該第1のデータバンクは、該第1のセグメントに対応し、
該第1のセグメントに対して該第1のコマンドを実行するために実行可能であって、該第1のコマンドは、該第1のデータバンク上で実行される、コンピュータ可読媒体。
(項目18)
上記容量の各セグメントは、上記複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従ってデータバンクに割り当てられ、上記冗長セグメントの各々は、その冗長セグメントに関連付けられる該容量のいずれかのセグメントに対応する、該複数のデータバンクの各々とは異なるデータバンクに割り当てられる、項目17に記載のコンピュータ可読媒体。
(項目19)
上記命令はさらに、上記第1のコマンドが書き込みコマンドであるかどうか、および該第1のコマンドが上記複数のデータバンクのうちの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定するために実行可能であり、該第2のデータバンクは、上記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該冗長セグメントに対して該第1のコマンドを実行し、該第1のコマンドは、該第2のデータバンク上で実行される、項目18に記載のコンピュータ可読媒体。
(項目20)
上記第1のデータバンクを決定し、上記第2のデータバンクを決定することは、該複数データバンクの上記順列および上記RAIDレベルを備えるグローバルテーブルにアクセスすることを含む、項目19に記載のコンピュータ可読媒体。
添付され、かつ本明細書の一部を構成する図面は、本発明の特定の態様を描写するために含まれている。本発明のより明確な効果、ならびに本発明に提供されるシステムの構成要素および動作は、同一の参照番号が同一の構成要素を指定する図面に示される、例示であり、したがって、非限定的な実施形態を参照することによって、より容易に明らかとなるであろう。図面に示される特徴は、必ずしも一定の縮尺で描写されているわけではないことに留意されたい。
図1は、分散型RAIDシステムを採用する、アーキテクチャの一実施形態のブロック図である。 図2Aは、データバンクの一実施形態のブロック図である。 図2Bは、データバンクのアーキテクチャの一実施形態のブロック図である。 図3は、分散型RAIDシステムによって実装された方法の一実施形態のフローチャートである。 図4は、分散型RAIDシステムを採用する、アーキテクチャの一実施形態の実施例のブロック図である。 図5は、テーブルの一実施形態のブロック図である。 図6は、テーブルの一実施形態のブロック図である。 図7は、テーブルの一実施形態のブロック図である。 図8は、分散型RAIDシステムによって実装される方法の一実施形態のフローチャートである。 図9Aは、分散型RAIDシステムによって実装される方法の一実施形態のフローチャートである。 図9Bは、分散型RAIDシステムによって実装される方法の一実施形態のフローチャートである。 図10は、書き込みキャッシュの一実施形態のブロック図である。 図11は、分散型RAIDシステムによって実装される方法の一実施形態のフローチャートである。 図12は、分散型RAIDシステムによって実装される方法の一実施形態のフローチャートである。
(詳細な説明)
本発明および種々の特徴ならびにそれらの有利な詳細は、添付の図面に示される非限定的な実施形態を参照してより完全に説明され、以下の説明に詳細に記述される。本発明の詳細を不必要に不明瞭にしないように、周知の開始材料、処理技術、構成要素、および機器の説明は、省略されている。しかしながら、発明を実施するための形態および具体的な実施例は、本発明の好ましい実施形態を示すが、限定としてではなく、例としてのみ与えられていることを理解されたい。本開示から、根本的な発明の概念の趣旨および/または範囲内の種々の置換、修正、追加、および/または再配列が当業者に明らかとなるであろう。本明細書に記載される実施形態は、コンピュータ可読媒体(例えば、HD)、ハードウェア回路等、または任意の組み合わせ上に存在してもよい、好適なコンピュータ実行可能命令に実装することができる。
具体的な実施形態を記載する前に、特定の実施形態を実装するためのハードウェアアーキテクチャの実施形態を本明細書に説明する。一実施形態は、ネットワークに通信可能に連結される、1つ以上のコンピュータを含むことができる。当業者に既知であるように、コンピュータは、中央演算処理装置(「CPU」)と、少なくとも1つの読み込み専用メモリ(「ROM」)と、少なくとも1つのランダムアクセスメモリ(「RAM」)と、少なくとも1つのハードドライブ(「HD」)と、1つ以上のエントリ/出力(「I/O」)デバイスとを含むことができる。I/Oデバイスには、キーボード、モニタ、プリンタ、電子ポインティングデバイス(マウス、トラックボール、スタイリスト等)等を含むことができる。種々の実施形態では、コンピュータは、ネットワーク上の少なくとも1つのデータベースへのアクセスを有する。
ROM、RAM、およびHDは、CPUが実行可能なコンピュータ実行可能命令を格納するためのコンピュータメモリである。本開示内では、「コンピュータ可読媒体」という用語は、ROM、RAM、およびHDのみに制限されず、プロセッサが読み込むことができる任意の種類のデータストレージ媒体を含むことができる。いくつかの実施形態では、コンピュータ可読媒体は、データカートリッジ、データバックアップ磁気テープ、フロッピー(登録商標)ディスク、フラッシュメモリドライブ、光学データストレージドライブ、CD−ROM、ROM、RAM、HD等を指してもよい。
本明細書に記載される機能性またはプロセスの少なくとも部分は、好適なコンピュータ実行可能命令に実装することができる。コンピュータ実行可能命令は、ソフトウェアコード構成要素またはモジュールとして、1つ以上のコンピュータ可読媒体(非揮発性メモリ、揮発性メモリ、DASDアレイ、磁気テープ、フロッピー(登録商標)ディスク、ハードドライブ、光学ストレージデバイス等、または任意の他の好適なコンピュータ可読媒体もしくはストレージデバイス等)上に格納されてもよい。一実施形態では、コンピュータ実行可能命令は、コンパイルされたC++、Java(登録商標)、HTML、または任意の他のプログラミングもしくはスクリプトコードのラインに含まれてもよい。
さらに、開示される実施形態の機能は、1つのコンピュータ上に実装されてもよく、またはネットワーク内の、もしくはネットワークにわたる2つ以上のコンピュータ間で共有/分散されてもよい。実施形態を実装するコンピュータ間での通信は、任意の電子、光学、高周波信号、または既知のネットワークプロトコルに従う、通信の他の好適な方法およびツールを使用して達成することができる。
本明細書で使用される場合、「備える(comprises)」、「備える(comprising)」、「含む(includes)、「含む(including)」、「有する(has)」、「有する(having)」という用語、またはこれらの任意の他の変形は、非排他的な含有を網羅することが意図される。例えば、プロセス(a process)、プロセス(process)、物品、または要素のリストを備える装置は、必ずしもこれらの要素に限定されず、明確にリストされていない、またはそのようなプロセス、物品、もしくは装置に内在する、他の要素を含んでもよい。さらに、そうではないと明確に述べられていない限り、「または」は、排他的な「または」ではなく、包括的な「または」を指す。例えば、条件AまたはBは、以下の、Aが真(または存在する)かつBが偽(または存在しない)、Aが偽(または存在しない)かつBが真(または存在する)、ならびにAおよびBの両方が真(または存在する)のいずれか1つによって満足される。
さらに、本明細書に与えられる任意の実施例または図解は、決して、それらと共に利用される、いかなる用語に対する制約としても、限定としても、またはいかなる用語の定義を表現するとも見なされない。代わりに、これらの実施例または図解は、1つの特定の実施形態に関して説明しており、一例にすぎないと見なされる。当業者は、これらの実施例または図解と共に利用される、いかなる用語も、それと共に、または明細書の他の場所に与えられている場合も与えられていない場合もある、他の実施形態を包含し、すべてのそのような実施形態は、その用語の範囲内に含まれることが意図されることを認識するであろう。そのような非限定的な実施例および図解を指定する言語には、「例えば(for example)、「例として(for instance)」、「例えば(e.g.)」、「一実施形態では」を含むが、これらに限定されない。
本願は、2009年6月5日に出願された、Gallowayらによる、名称が「Method and System for Data Migration in a Distributed RAID Implementation」の米国特許出願第________(PIVOT1110−1)号、2009年6月5日に出願された、Gallowayらによる、名称が「Method and System for Distributing Commands to Targets」の同第________(PIVOT1120−1)号、2009年6月5日に出願された、Gallowayらによる、名称が「Method and System for Initializing Storage in a Storage System」の同第________(PIVOT1130−1)号、2009年6月5日に出願された、Gallowayらによる、名称が「Method and System for Rebuilding Data in a Distributed RAID System」の同第________(PIVOT1140−1)号、および2009年6月5日に出願された、Gallowayらによる、名称が「Method and System for Placement of Data on a Storage Device」の同第________(PIVOT1150−1)号に関し、これらのすべては、本明細書に参考として援用される。
ここで、特に、データストレージに関する文脈の要約記述が有用であり得る。上述されるように、RAIDシステムは、信頼性を向上し、場合によっては、コンピューティングデバイス(ホストとして既知)の処理量を改善するために、ストレージにこれらのRAIDシステムを使用して、集合的にアレイと称される、複数のハードディスクドライブ(または他の種類のストレージ媒体)にわたって、データを分割および複製する。しかしながら、RAIDの現行の実装は、種々の問題を有する場合がある。これらの問題は、これらのRAIDシステムのアーキテクチャによって課される制限、RAIDシステムを備えるディスク上のデータの構成もしくは配置、またはこれらの解決策を実装するためにカスタムハードウェアもしくはソフトウェアを使用する必要性に起因し、そのような解決策の実装に関連する費用を引き上げる場合がある。中でも特に、これらの問題を実質的に改善することが望ましい。
そのために、今、本発明のシステムおよび方法が注目される。これらのシステムおよび方法の実施形態は、一組のデータバンクを備える、分散型RAIDシステムを提供する。より具体的には、分散型RAIDシステムの特定の実施形態では、各データバンクは、一組の関連ストレージ媒体を有し、同様の分散型RAIDアプリケーションを実行する。データバンクの各々の上の分散型RAIDアプリケーションは、それら自体の間で、データバンクの関連ストレージ媒体上に記録されるデータと併せた、RAIDのレベルの実装に関連するデータフローを分散し、制御するように協働する。
具体的に、特定の実施形態では、関連RAIDレベルを伴う容量は、分散型RAIDシステムを使用して作成されてもよい。次いで、分散型RAIDアプリケーションの各々は、その容量またはその容量と併せた所望のRAIDレベルの実装に関連付けられるデータが、分散型RAIDシステムの複数のデータバンク上に格納され得るように、その容量のデータに関連付けられる動作を協働することができる。
これらのデータバンクの各々の上で実行される同様の分散型RAIDアプリケーションを使用して、容量のデータおよびRAIDの実装に関連付けられるデータの両方を複数のデータバンク上に格納することによって、容量と併せたRAIDのレベルの実装を協働することによって、多数の利点が達成され得る。すなわち、異なるRAIDレベルと併せて実装される容量のうちの1つ以上に、異なるストレージ容量が割り振られてもよい。さらに、データバンクにわたるストレージの協働およびRAIDの実装が、実質的に同一の分散型RAIDアプリケーションを使用して達成される際、多くの場合において、標準x86ベースのサーバおよびストレージ媒体等の標準または既製のハードウェアが利用されてもよい。また、本明細書に提示される実施形態または他の実施形態を利用する、多くの他の利点も認識され得、具体的に詳細に指摘されている場合もない場合もある、そのような利点は、本開示を読んだ後に認識されるであろう。
ここで、図1を参照すると、分散型RAIDシステムの一実施形態を利用するシステムのアーキテクチャのブロック図が描写されている。分散型RAIDシステム100は、一組のデータバンク110を含み、各データバンク110は、スイッチ120の両方に通信可能に連結される。また、スイッチ120の各々も、ホスト102が特定のデータバンク110に対応する一組のパスを通して各データバンク110と通信し得るように、各ホスト102に通信可能に連結され、各パスは、スイッチ120のうちの1つを備える。
データバンク110と、スイッチ120と、ホスト102との間の通信可能な連結は、イーサネット(登録商標)、SCSI、iSCSI、ファイバーチャネル、シリアルアタッチドSCSI(「SAS」)、アドバンスドテクノロジーアタッチメント(「ATA」)、シリアルATA(「SATA」)、または当該技術分野において既知の他のプロトコルを含む、所望のほぼいかなる伝送媒体(有線または無線のいずれか)を使用しても達成され得る。さらに、通信可能な連結は、インターネット、LAN、WAN、無線ネットワーク、または当該技術分野において既知の任意の他の通信ネットワーク等の通信ネットワークと併せて実装されてもよい。
次いで、iSCSI、SCSI等のコマンドプロトコルを使用する一実施形態では、ホスト102は、データを操作するために、データバンク110と通信してもよい。より具体的には、データバンク110の各々は、ストレージ媒体(本明細書上で、後により詳細に説明される)を備える。集合的に、データバンク110内のストレージ媒体は、ストレージ、ストレージデバイス等の1つ以上の連続ブロックとして、ホスト102に対して仮想化され、提示されてもよい。例えば、iSCSIプロトコルが利用される時、データバンク110内のストレージ媒体は、一実施形態では、複数のポートを伴う、SCSIターゲットとして、ホスト102に提示されてもよい。
したがって、動作中、一実施形態では、ホスト102(またはホスト102側のユーザもしくはデータバンク110とインターフェースをとっているユーザ)は、容量の作成を要求し、その容量と併せて実装されるRAIDのレベルを指定してもよい。その容量およびその容量と関連した所望のレベルのRAIDの実装に関連付けられるデータは、データバンク110にわたって格納される。次いで、ホスト102は、容量またはその一部に対応する論理アドレスを使用して、この容量にアクセスしてもよい。このように、ホスト102は、作成されたストレージの容量を利用することができ、ホスト102に対して実質的に見えないように、これらの容量と併せて耐障害性を達成することができる。
ストレージの仮想化およびデータバンク110を利用したRAIDの実装は、分散型RAIDを実装するように動作可能なデータバンク110コンピュータの一実施形態のブロック図を描写する、図2Aを参照して、より理解され得る。ここで、データバンク110は、データストア250と、コンピュータ可読媒体上に格納された命令を実行するように動作可能なプロセッサ202とを備え、命令は、分散型RAIDアプリケーション210を実装するように動作可能である。分散型RAIDアプリケーション210は、そのデータバンク110に関する障害が存在しているかどうかを決定するために、他のデータバンク110上の分散型RAIDアプリケーション210にハートビート通信を周期的に発行してもよい。分散型RAIDアプリケーション210は、別のデータバンク110が障害を抱えていると決定する場合、そのデータバンク110に対応する、1つ以上の障害フラグを設定してもよい。各データバンク110上の各分散型RAIDアプリケーション210のこれらの障害フラグを使用して、特定の分散型RAIDアプリケーション210は、特定のデータバンク110に障害があるかどうかを決定してもよい。
また、分散型RAIDアプリケーション210は、例えば、SATA、PATA、FC等の既知のほぼいかなるプロトコルにも従って動作するディスク252であってもよい、1つ以上のストレージ媒体を備えるデータストア250へのアクセスを有してもよく(例えば、読み込む、書き込む、コマンドを発行する等のために)、ディスク252の各々は、同等のサイズであってもなくてもよい。データバンク110の各々の上で実行されている分散型RAIDアプリケーション210は、データバンク110にわたるデータストア250を使用した容量の割り当ておよび使用、ならびにすべてがメモリ230(データストア250または別のメモリ全体であってもよい)内に格納されていてもよい、データバンク110間で共有される一組のグローバルテーブル240、一組のローカルテーブル245、および書き込みキャッシュ260を利用した、これらの容量と併せたRAIDの実装を可能にすることができる。
図2Bは、分散型RAIDを実装するように動作可能なデータバンク110コンピュータを実装するために使用されてもよい、ハードウェアアーキテクチャの一実施形態のブロック図を描写する。この構造的実施例では、データバンク110は、Intel x86アーキテクチャまたはいくつかの他のアーキテクチャ全体に従い得る、1つ以上のプロセッサ202と、一実施形態では、サウスブリッジチップ等であってもよい、I/Oコントローラハブ212にバスを通して連結される、メモリ230とを備える。I/Oコントローラハブ212は、同様に、PCI−Xバス、PCI高速バス等のバス272に連結され、それを制御してもよい。例えば、LSI1068 SATA/SASコントローラ等の1つ以上のディスクコントローラ262が、このバス272に連結される。これらのディスクコントローラ262の各々は、1つ以上のディスク252に連結され、集合的に、これらのディスク252は、データストア250を構成してもよい。さらに、また、1つ以上のネットワークインターフェース282は、バス272に連結されてもよい。これらのネットワークインターフェース282は、マザーボード上に含まれるネットワークインターフェース(イーサネット(登録商標)等)であってもよく、イーサネット(登録商標)、ファイバーチャネル等の1つ以上のプロトコルを介してインターフェースをとるように構成された、1つ以上のネットワークインターフェースカードを備えてもよく、またはデータバンク110が、これらのネットワークインターフェース282を通してスイッチ120と通信し得るような、いくつかの他の種類のネットワークインターフェースであってもよい。
次に、図3に移ると、容量を割り当て、これらの容量に関連付けられるデータを、データバンク110にわたってデータストア250内に配置するための方法の一実施形態が示されている。初期に、データストア250のディスク252上に容量が割り当てられる前に、ディスク252は、ステップ305でフォーマットされてもよい。上述されるように、いかなる障害からも容易かつ簡単に回復する能力を有するために、冗長データは、任意の対応する格納されたデータに対して、正確である必要があり得る。多くの場合、これは、容量を格納するために利用されるディスク252が、ディスク252上の領域内の現行データから冗長データを計算することによってフォーマットされることを求め得、容量の部分は、これらの領域に格納されるデータが現在ゴミ値であり得る場合にさえ格納される。これらの計算は、望ましくない大量の時間を消費する場合がある。
さらに、図1に関して詳述されるもの等の分散型RAID環境では、それら自体に他の問題を提示する場合がある。より具体的には、容量の異なる部分が異なるデータバンク110上に格納され得、また、容量に対応する冗長データも種々のデータバンク110上に格納され得る際、この種類のフォーマッティングの達成はさらに、データバンク110上の分散型RAIDアプリケーション210間の相当量の通信を要求し、プロセッササイクルおよび通信バンド幅を消費する場合がある。
したがって、一実施形態では、容量のデータが格納されるディスクの領域に対応する冗長データが、容量のそのデータが格納されるディスク252の領域に対して正確であることを確実にするために、容量に対応するデータが格納されるディスク252上の領域、および冗長データが格納されるディスク252上の領域に、ゼロ値が書き込まれてもよい。容量のデータが格納されるディスク252の領域、および冗長データが格納されるディスク252の領域の両方をゼロ化することによって、容量の任意のデータがその対応する冗長データから再作成できることを保証することができる。
ディスク252のゼロ化は、他の利点を有し得る。すなわち、冗長データを決定するために、複雑な計算を実施することが必要とされない場合があり、容量が格納される領域と、これらの領域に対応する冗長データが格納される領域との間の相対精度を達成するために、分散型RAIDアプリケーション210間の通信が必要とされない場合があるということである。
重要なことに、容量およびその対応する冗長データと共に使用するためのディスク252の領域をゼロ化することによって、RAIDシステム100の使用可能性における大幅な遅延が回避され得る。これらの利点は、例えば、分散型RAIDシステム100の初期使用、新しいディスク252のインストール、容量の削除等から生じる、ディスク252の割り当てられていない領域を、動作中に実質的に継続的にゼロ化するプロセスを使用することによって達成されてもよい。これらの場合では、データバンク110の各々の上のディスク252の現在割り当てられていない(currently unallocated)(すなわち、現在割り当てられていない(not currently allocated))領域に、ゼロが書き込まれてもよい(領域の「ゼロ化」と称される)。
ゼロ化されている、ディスク252の割り当てられていない領域は、容量の一部に対応するコマンド、または容量の一部に関連付けられる冗長データが、その部分が割り付けられるデータバンク110で受信される時、分散型RAIDアプリケーション210が、その部分が割り付けられているデータバンク110上のディスク252の対応する領域に、その部分が割り付けられているかどうかを決定するために確認し得るように、追跡されてもよい。データバンク110上のディスク252の対応する領域が割り付けられていない場合、分散型RAIDアプリケーション210は、ゼロ化されているディスク252の領域を選択し、ディスク252のこの領域を、容量または対応する冗長データの部分に割り付けてもよい。
以前にゼロ化されていない、任意の割り付けられていない領域を同時にゼロ化し、容量または冗長データの一部に対応するコマンドが受信されるまで、ディスク252のゼロ化された領域をその部分に割り付けるのを待つことによって、分散型RAIDシステム100は、長時間を伴うフォーマッティングプロセスなく、実質的に即座に動作し得、分散型RAIDシステム100の動作に対して比較的邪魔にならないように、新しいディスク252が追加され、容量が削除または解放され得る。
したがって、上述を読んだ後、ディスク252がフォーマットされるステップ305は、分散型RAIDシステム100に関する容量の作成前、中、または後に達成されてもよく、ステップ305(および本明細書のフローチャート全体内のすべての他のステップ)の位置付けは、ステップの順序を示唆しないことが留意される。また、図3中の他のステップおよび本開示の残りを徹底的に概観した後に留意されるように、これらのデータバンク110上のディスク252上の物理領域が、容量または冗長データの一部を格納するように割り付けられる前に、容量が作成され、容量および容量に対応する冗長データの部分がデータバンク110に割り付けられてもよく、さらに、そのような部分に対応するデータを格納するために使用されるディスク252上の物理領域のゼロ化は、容量の作成前、または容量の作成後であるが、これらの物理領域が容量もしくは冗長データの対応する部分に割り付けられる前に実施されてもよい(後でより詳細に記載される)。
これらの位置は、分散型RAIDアプリケーション210の実施形態によって利用され得るセグメントの概念を参照して、よりよく説明され得、セグメントは、2048論理ブロックアドレス(LBA)のサイズ(またはいくつかの他のサイズ)であってもよく、論理ブロックアドレスのサイズは、ディスク252のセクタサイズに対応する。したがって、データバンク110の各々の上のデータストア250内のディスク252は、ステップ310で、同等サイズのセグメント(例えば、1MB)に分割されてもよい。これらのセグメントは、ディスクドライブ252の1つ以上の連続データブロックに対応してもよい。したがって、ユーザまたはホスト102が、ステップ320で、分散型RAIDアプリケーション210から容量の作成を要求し、ステップ330で、その容量と併せて使用されるRAIDのレベルを指定する時、ステップ340で、容量の要求されたサイズに対応する多数のこれらのセグメント、加えて、容量と併せたRAIDの所望のレベルを実装するのに所望されるセグメントの数が、容量に割り付けられてもよい。
したがって、容量は、多数のセグメント(また、論理セグメントとも称される)を備え、これらのセグメントの各々は、データバンク110が容量のそのセグメントを管理するように割り付けられ得るように、特定のデータバンク110に関連付けられてもよい。このセグメントは、例えば、2048論理ブロックアドレス(LBAs)のサイズであってもよく、論理ブロックアドレスのサイズは、ディスク252のセクタサイズに対応する(また、他の配列およびサイズも可能である)。ほとんどの場合、容量のそのセグメントを備える物理ストレージは、そのセグメントを管理する、データバンク110のデータストア250内に格納されるが、しかしながら、他の場合では、そのセグメントに対応するデータは、異なるデータバンク110のデータストア205内に格納されてもよい(言い換えると、特定の場合では、そのセグメントを管理する分散型RAIDアプリケーションを備えるデータバンク110は、そのセグメントに対応するデータを格納するデータストア250を備えるデータバンク110とは異なってもよい)。
一実施形態では、特定の容量に対応するデータバンク110へのセグメントの割り当ては、分散型RAIDシステム100に対応する一組のデータバンク110のランダム順列を決定することによって達成されてもよい。したがって、6つのデータバンクが存在する場合、ランダム順列がデータバンクの各々を備える、サイズ6のランダム順列は、セグメントがランダム順列の順序で連続してデータバンクの各々に割り付けられ得るように決定されてもよい。
例えば、分散型RAIDシステム内に4つのデータバンク110が存在すると仮定する(それらを、データバンク1、データバンク2等と呼ぶ)。データバンク2、データバンク4、データバンク1、およびデータバンク3のランダム順列が決定され得る。この場合、容量に対応する第1のセグメントは、データバンク2上にあり、第2のセグメントは、データバンク4上にあってもよく、第3のセグメントは、データバンク1上にあってもよく、第4のセグメントは、データバンク3上にあってもよく、第5のセグメントは、元に戻って、先と同様にデータバンク4上にあってもよい。この方法では、容量に対応する特定のセグメントの位置は、容量に対応するランダム順列が既知である場合、数学的に決定されてもよい。
言及されるように、ユーザは、ステップ330で、RAIDのレベルが容量と併せて実装されることを指定してもよい。この場合、分散型RAIDアプリケーション210は、確実にRAIDの所望のレベルが達成されるように、RAID情報がデータバンク110にわたって適切に分散型されるように、ステップ350で、容量と併せたRAIDの実装に対応する任意のデータが、適切な位置に格納されることを確実にしてもよい。
例えば、容量と併せてRAID5を実装することが望まれる場合、分散型RAIDアプリケーション210は、所望のRAIDパリティグループサイズを決定してもよい(例えば、ユーザが設定したRAIDセットに基づいて、ないしは別の方法で決定される)。この決定は、分散型RAIDシステム内のデータバンク110の数に基づいてもよく、一実施形態では、データバンク110の数より1つ少なくてもよい(加えて、パリティデータに相当する追加の1つ)。
説明のため、5つのデータバンク110が存在する場合、容量に関連付けられるデータを格納する、4つのセグメント(データセグメントと称される)毎に、1つのセグメントは、パリティ専用とされ、4つのセグメントのパリティは、計算され、このパリティセグメントに格納され、パリティセグメントは、データストア250が、パリティセグメントのパリティデータが計算されるデータセグメントを備えない、データバンク110専用とされる。
この時点で、論理容量に対応する各セグメントは、特定のデータバンク110に割り付けられており、また、容量に対応するRAIDデータを格納するために利用される任意のセグメント100(容量と併せたRAIDの任意のレベルの実装に関連付けられる、任意の種類の冗長データを格納するためのセグメントの使用に対する一般的適用性の損失なく、冗長セグメントまたはパリティセグメントとして交換可能に本明細書に参照される)も、データバンク110に割り付けられているが、しかしながら、データバンクのデータストア250のディスク252の物理セクタは、依然として、これらのセグメントに対応するデータを格納するように割り付けられていなくてもよい。したがって、ステップ360で、容量の論理セグメントが割り付けられている、データバンク110上のディスク252の物理セグメントが決定され、論理セグメントに割り付けられてもよい。このセグメントマッピングは、各データバンク110のローカルテーブル245内に格納されてもよい。この配列は、前述されるように、ある後の時点、例えば、コマンドが論理セグメントに書き込むことを最初に試みる時に行われてもよい。
この割り付けを行う時、一実施形態では、ディスク252の領域の異なる性能特性が、アクセスされる論理セグメントに対して考慮されてもよい。言い換えると、ディスク252は、同一のディスクの他のセグメントより効率的にアクセスされるセグメントを有してもよい。したがって、一実施形態では、ディスク252の物理セグメントを、論理セグメントに関連付けられる基準に基づいて割り付けることが望まれ得る。特性には、例えば、論理セグメントに対応する容量に関連付けられるサービスの品質指定、論理セグメントを備える容量への多数のアクセス等の事柄が含まれ得る。
次いで、ステップ370で、容量に対応する情報は、容量に対応するセグメントまたは容量と併せたRAIDの実装に対応するセグメントの位置が、この格納された情報から決定され得るように格納されてもよい。したがって、この格納された情報(集合的に、マッピングデータと称される)は、容量、容量に対応するランダム順列(例えば、セグメントが位置するデータバンク110の順序を示す)、および任意のRAID実装のパリティグループサイズ(例えば、容量が4+1RAIDセット、7+1RAIDセットに対応するかどうか、RAID1が実装されているかどうか等)の識別子を含んでもよい。このデータは、確実に、各分散型RAIDアプリケーション210に関連付けられる一組のテーブル240の少なくとも一部が、実質的に矛盾なく、その位置に残存するように、他のデータバンク110上の他の分散型RAIDアプリケーション210に通信することができるように、例えば、グローバルテーブル240内に格納されてもよい。
上記の説明は、5つのデータバンク110を伴う分散型RAIDシステムの一実施形態の一実施例を描写する、図4を参照して、よりよく理解され得る。ここで、各データバンク110の各データストア250は、一組の同等サイズのセグメント402として配置されており、これは、本実施例の目的のために、1MBのサイズであると仮定される。今、ホスト102が、データバンク110b上の分散型RAIDアプリケーション210bから、RAIDレベル5で8MBの容量を要求すると仮定する。この場合、分散型RAIDアプリケーション210bは、容量のデータ部分に8つのセグメント402が要求され、一方、容量の所望のRAIDレベルの実装と併せて容量の冗長データを格納するために、2つのセグメント402が要求され得ると決定してもよい。次いで、分散型RAIDアプリケーション210bは、容量のランダム順列を決定してもよい。本実施例の目的のため、ランダム順列は、データバンク110b、データバンク110d、データバンク110a、データバンク110c、およびデータバンク110eであると仮定する。したがって、データバンク110bに、セグメント402a、要求された容量のうちの第1のセグメントが割り付けられてもよく、データバンク110dに、セグメント402b、要求された容量のうちの第2のセグメントが割り付けられてもよく、データバンク110aに、セグメント402c、要求された容量のうちの第3のセグメントが割り付けられてもよく、データバンク110cに、セグメント402d、要求された容量のうちの第4のセグメントが割り付けられてもよく、データバンク110eに、セグメント402e、要求された容量のうちの第5のセグメントが割り付けられてもよい。次いで、割り付けは、データバンク110bに、セグメント402f、要求された容量のうちの第6のセグメントが割り付けられ得、データバンク110dに、セグメント402g、要求された容量のうちの第6のセグメントが割り付けられ得、データバンク110aに、セグメント402h、要求された容量のうちの第8のセグメントが割り付けられ得るように、ランダム順序の第1のデータバンク110で再び開始する。
一旦、容量に関連付けられるデータを格納するためのデータセグメント402a〜402hが割り付けられると、分散型RAIDアプリケーション210bは、そのRAIDレベルの実装に関連付けられる任意のデータのセグメント402を割り付けてもよい。本実施例では、容量に対してRAID5が望まれる際、分散型RAIDアプリケーション210bは、5つのデータバンク110が利用されている際、(4+1)パリティセットが望まれ得ると決定してもよい。次いで、分散型RAIDアプリケーション210bは、パリティを格納して、8つのセグメント402と併せてRAID5を実装するために、追加の2つのセグメント402が必要とされ得ることを決定してもよい。
さらに、特定の一組のデータセグメント402を利用して作成されたパリティが、そのデータストア内にこれらの一組のデータセグメント402のいずれかを有するデータバンク110上に格納されないことが望まれ得る。したがって、また、分散型RAIDアプリケーション210bは、パリティセグメントの各々が、決定されたRAIDパリティグループサイズに基づいて割り当てられる位置、第1のデータセグメント402aの位置等を決定してもよい。ここで、データセグメント402a、402b、402c、および402d内に格納されているデータに対応するパリティデータを格納する、パリティセグメント402iは、データバンク110cのデータストア250c内に割り当てられ、一方、データセグメント402e、402f、402g、および402h内に格納されているデータに対応するパリティデータを格納する、パリティセグメント402jは、データバンク110eのデータストア250e内に割り当てられる。ここで、データセグメント402a〜402hを備える容量と併せたRAIDの実装に関連付けられるパリティ情報を格納する、パリティセグメント402i、402jは、容量に関連付けられるデータを格納する、これらのセグメント402a〜402hと実質的に同一に配置され、サイズ化されることに留意されたい。
したがって、ホスト102が容量にアクセスする時、容量の第1のデータセグメントに対応する論理アドレスを伴う要求は、データバンク110b上のデータセグメント402aに対応してもよく、容量の第2のデータセグメントに対応する論理アドレスを伴う要求は、データバンク110d上のデータセグメント402bに対応してもよい等である。ここで、割り当てられたデータセグメント402a〜402hは、異なるデータバンク110上に存在し得ること、および任意の割り当てられたデータセグメント402a〜402hの位置は、その容量に関連付けられるランダム順列を使用して決定され得る(例えば、データバンク110のグローバルテーブル240内に格納される際)ことに留意されたい。上述されるように、しかしながら、データバンク110上のデータストア250は、仮想化されており、したがって、要求ホストは、データストア250内のデータセグメント402の位置、複数のデータストア250が存在すること、データストア250が複数のデータバンク110にわたって拡散されていること等を認識していなくてもよい。ホスト102は、単一組続容量をアドレス指定していると信じている。
本実施例におけるデータバンク110上のデータセグメント402の位置(およびデータバンク110の対応するランダム順列)は、説明のためのものであり、容量のデータセグメント402は、ほぼいかなるランダム順列または他の順列にも従って、いかなるデータバンク110上のいかなるデータストア250上にも位置し得ることが明らかとなるであろう。さらに、本実施例におけるセグメント402の各々は、1MBであるが、これらは、一般性を喪失することなく、任意のサイズであってもよいこと、および1MBサイズは、説明を容易にするためだけに選択されたことが留意されるであろう。
上記の説明から分かるように、その結果、特定のデータセグメント402またはパリティセグメント402の位置は、容量に関連付けられるランダム順列およびRAIDパリティグループサイズを使用して、アルゴリズムによって(例えば、容量にセグメントを割り付けるため、容量のパリティセグメントを見つけるため等に使用されるものと同一のランダム順列を使用して)決定することができる。したがって、情報は、例えば、一組のグローバルテーブル240内に、容量に対応する識別子と併せて格納されてもよい。さらに、これらのグローバルテーブル240は、データバンク110の各々内の一組のグローバルテーブル240の少なくとも部分が、実質的に矛盾のない状態に保たれるように、データバンク110間で通信されてもよく、ないしは別の方法で更新されてもよい。
ここで、分散型RAIDアプリケーション210に関連付けられるグローバルテーブル240に関して、より詳細に簡潔に掘り下げて考えることが有用であり得る。記載されるように、一実施形態では、グローバルテーブル240は、分散型RAIDアプリケーション210によって作成された容量に関連付けられる情報を格納してもよく、これらのテーブル240は、その容量内のデータセグメントに関連付けられるデータバンク110を決定するため、またはその容量に対応するデータセグメントに関連付けられるパリティセグメントがどこにあるかを決定するために使用することができる。したがって、グローバルテーブル240は、一組のテーブルを備え、各テーブルは、データバンク110に対して実装された容量に対応してもよい。特に、これらのテーブル240のうちの1つは、データストア250が容量の特定のセグメントを備えるデータバンク110を識別するために使用され得るデータを含有してもよい。具体的に、このテーブルは、容量に関連付けられる論理アドレスを、その論理アドレスに対応するセグメント(データ、冗長性等)が格納されるデータバンク110と相互に関連付けるために使用されてもよい。
図5は、この種類のテーブルの一実施形態の図式表示を描写し、各容量は、関連付けられるそのようなテーブルの関連インスタンスを有してもよい。テーブル550は、LV番号504、セグメントサイズ508、セグメント数512、サービスの品質(QOS)514、範囲数518のエントリ、描写される実施形態では、第1の範囲524aと、第2の範囲524bと、任意の追加範囲エントリ524nとを含む、範囲エントリの情報を含む。
LV番号504は、特定の容量を識別するために使用される一意の番号であり、セグメントサイズ508は、容量を実装するために使用されるセグメントのサイズに対応し、セグメント数512は、論理容量に対応するセグメントの数(例えば、データセグメントおよび冗長セグメントの両方の数、単にデータセグメントの数等)に対応し、QOS514は、容量に対して実装することが望まれるサービスの品質を示し(このQOSインジケータは、データバンク110上に格納される他の容量に対する、その容量に与えられる優先度を示してもよいことに留意されたい)、範囲数518は、容量に関連付けられる多数の範囲を示し、一方、範囲エントリ524は、各々、これらの範囲のうちの1つに対応する。
範囲は、特定のデータバンク110の順序およびRAID実装に対応してもよい。種々の理由から、容量を実装するために、複数の範囲が利用されてもよい。具体的に、異なるデータバンク110の異なるデータストア250が、データストア250内に、異なる量の使用することができるストレージを有し得るため、例えば、容量と併せて、複数の範囲が利用されてもよい。これは、例えば、容量の第1の範囲では、第1のRAID実装と併せて、すべてのデータバンク110が利用されてもよく、一方、容量の第2の範囲内では、第2のRAID実装と併せて、使用可能なすべてより少ないデータバンク110が利用されてもよい(第1および第2のRAID実装は、事実、互いとは異なるレベルであってもよい)という状況をもたらし得る。したがって、これらの範囲の各々は、異なるデータバンク110の順序(例えば、ランダム順列等)に従って配置されるセグメントに対応し、異なる数の使用可能なデータバンク110、異なる種類のRAID等を有してもよい。
具体的な実施例を使用して説明するために、再び簡単に図4を参照する。RAIDレベル5を伴う8MBの容量は、示されるように配置され、データセグメントは、データバンク110b、データバンク110d、データバンク110a、データバンク110c、およびデータバンク110eの順序に従って配置され、RAID5は、パリティセグメントが、データバンク110cのデータストア250cおよびデータバンク110eのデータストア250e内に割り付けられることが望まれ得る、(4+1)パリティセットを利用して、容量と併せて実装されると仮定する。
ここで、この容量に、追加の3MBを追加することが要求されたと仮定する。しかしながら、この場合では、データバンク110e、110c、および110dのデータストア250は、余地を有さないと仮定する。したがって、この場合、唯一の解決策は、データストア250内に残余ストレージを有する、データバンク110aとデータバンク110bとの間に追加の所望の3MBを割り当てることであり得る。さらに、2つのデータバンク110のみが使用可能なため、容量の最初の8MBと共に利用される際、RAID5の代わりに1のRAIDレベルを利用することのみが可能であり得る。したがって、この場合、容量の最初の8MBは、第1の範囲に対応し、容量に対応するテーブル内に、第1の一組の値と共に、第1の範囲エントリを有してもよく、一方、容量の次の3MBは、第2の範囲に対応し、容量に対応するテーブル内に、第2の一組の値と共に、第2の範囲エントリを有してもよい。本開示を読んだ後に明らかとなり得るように、この種類の発生は、ある頻度で生じ得る。
図5に戻ると、これらの種類の状況に対処するために、特に、容量の各範囲は、テーブル550内に、その特定の範囲内のセグメントの位置がその範囲に対応する範囲エントリから決定され得るようなエントリを有してもよい。テーブル550に対応する容量の範囲の各々のエントリ524は、範囲数518に関連付けられる。一実施形態では、範囲数518は、範囲エントリ524の数が範囲数518に対応するように、容量の範囲の数に対応してもよい。範囲エントリ524aおよび524bのみが示されているが、テーブル内の範囲エントリ524の数は、テーブルが対応する容量に対応する範囲の数に依存することが留意されるであろう。したがって、容量が3つの範囲に分割される場合、テーブル550に対応する容量の各範囲の情報を備える範囲エントリ524が存在するように、テーブル550内に3つの範囲エントリ524が存在する。
範囲エントリ524の情報は、種類526と、開始530と、終了534と、ネットワークRAID538と、ネットワークRAIDサイズ542と、ディスクRAID546と、ディスクRAIDサイズ550と、データバンク数554と、データバンク順序558と、範囲524に関連付けられるセグメントを格納するために使用される各データバンク110に対応するディスク数562およびディスク順序566(言い換えると、その範囲エントリ524のデータバンク数554と等しいディスク数562およびディスク順序566が存在する)とを含む。種類526は、範囲エントリ524の情報に対応する範囲の種類、例えば、正常、源(SRC)、目的地(DST)、または他の種類の範囲を説明する。開始230は、範囲エントリ524に対応する容量の範囲の最初の論理セグメントアドレスである。終了234は、範囲エントリ524に対応する容量の範囲の情報に対応する範囲の最後の論理セグメントアドレスである。また、例えば、終了524は、範囲内のセグメントまたはブロックの最大数の数であってもよい等、他の配列も可能である。
データバンク数554は、範囲エントリに対応する範囲が存在するデータバンク110の数に対応してもよく、データバンク順序558は、その範囲内のセグメントがデータバンク110に割り付けられる順序であってもよく、一方、ネットワークRAID538、ネットワークRAIDサイズ542、ディスクRAID546、およびディスクRAIDサイズ552は、範囲エントリ524に対応する容量の範囲と併せて実装されるRAIDの種類に対応してもよい。
ネットワークRAID538は、テーブル550に対応する容量と関連して実装されるRAIDの種類、例えば、RAID0、RAID1、もしくはRAID5、または他のRAID種類である。ネットワークRAIDサイズ542は、範囲内で使用されるRAID種類のパリティグループサイズである。ネットワークRAIDサイズ542は、範囲内のデータバンク110の数によって、範囲524の情報に対応する範囲内のデータバンクの数以下になるように制限されてもよい。ディスクRAID546は、範囲内のデータバンク内のディスクにわたって実装されるRAIDの種類である。ディスクRAIDサイズ552は、各データバンク110のデータストア250内のディスク252にわたって使用されるRAID種類のパリティグループサイズであってもよく、データバンク内のディスクの数以下になるように制限されてもよい。実施形態では、範囲内のデータバンク110内のディスクにわたるRAIDは、任意であり、使用されてもされなくてもよい。そのような実施形態では、ディスクRAID546、ディスクRAIDサイズ552のいずれか、または両方は、使用されなくてもよく、または省略されてもよい。
データバンク数554は、範囲内のデータバンクの数であり、データバンク順序558は、範囲内のデータバンク110にわたってRAIDが実装される順序(例えば、縞状)である。例えば、データバンク110は、特定の順序で保存された容量の論理アドレスに対応するデータを有してもよく、データバンク順序558は、この順序に対応する。ディスク数562は、範囲のデータバンク110内のディスクの数であり、ディスク順序566は、特定のデータバンク110のディスクにわたってRAIDが実装される順序である。例えば、ディスク252は、特定の順序でそれらに保存されたセグメントを有してもよく、ディスク順序566は、データバンク110内のディスク252にわたってセグメントが格納される順序である。したがって、範囲エントリ524に関連付けられる範囲のセグメントを格納するために使用される各データバンク110では、対応するディスク数562およびディスク順序566が存在する(言い換えると、一実施形態では、ディスク数562の数およびディスク順序566は、その範囲エントリ524のデータバンク数554と等しい)。実施形態では、データバンク110内のディスク252にわたるRAIDは、任意であり、使用されなくてもよい。テーブル550が具体的に記載されているが、この記載は、限定ではなく、一例であり、テーブル550の他の形態が利用されてもよいことが留意されるであろう。例えば、テーブル550の代わりに、仮想テーブルが使用されてもよく、各論理アドレスに対応するセグメント402およびデータバンク110を明確にリストアップしてもよい。
したがって、前述されるように、テーブル550内の情報は、論理アドレス(コマンドまたは任意の他の文脈において、ホスト102によって参照される)に対応するデータセグメント402を備えるデータバンク110を識別するために使用されてもよい。例えば、セグメント402のサイズが既知であり、開始530、終了534、アドレスに対応する範囲エントリ524等を使用すると、容量の論理アドレスに対応する特定のデータバンク110を決定することができる。
前述されるように、テーブル240の1つ以上の部分は、すべてのデータバンク110にわたって実質的に同一であってもよく、1つ以上のデータバンク110に及ぶ1つ以上の論理容量を説明してもよいが、データバンク110上の他のテーブル245は、それが対応するデータバンク110とは異なってもよい(例えば、テーブル245は、対応する分散型RAIDアプリケーション210が実行されるデータバンク110に特有であってもよい)。このテーブル245は、対応するデータバンク110のデータストア250内に含有され、情報を備え得る、各ディスク252に関連するデータを備えてもよく、情報は、データストア上またはデータストアのディスク252間、例えば、ディスク252のセクタに格納されてもよく、データバンク110に割り付けられるセグメント402は、データストア250内に位置する。
図6には、この種類のテーブルの一実施形態の図式表示が描写されている。テーブル660は、特定のデータバンク110に格納されてもよく、複数のディスクテーブル670を備えてもよく、ディスクテーブル670の各々は、そのデータバンク110内のデータストア250のディスク252に対応し、そのディスク252内に格納されるセグメントの位置をリストする。より具体的には、大抵の場合、ディスク252は、物理セクタに分割され、各物理セクタは、対応するアドレスまたはアドレスの範囲を有する。
ディスクテーブル670は、容量のセグメントが格納される、データバンク110のディスク252のセクタの位置を決定するために利用することができる、マッピングテーブルであってもよい。したがって、テーブル670を使用して、容量のセグメントに対応するディスク252上のセクタのアドレスを決定することができる。さらに、テーブルは、ディスクのセグメントまたはセクタに対応する1つのエントリ当たり、1つ以上のフラグまたは記述ビットを含有し、セクタまたはそのセクタに格納されたセグメントを説明してもよい。
ここで、図7を参照すると、ディスクテーブル670の一実施形態の図式表示が描写されている。ディスクテーブル670は、複数のエントリを有し、各エントリは、ディスクテーブル670のエントリがディスク252の物理セグメントを説明するように、対応するディスクの物理セグメントに対応する。また、ディスクテーブル670内の各エントリは、物理セグメントまたは対応するセクタに格納される容量のセグメントを説明する、1つ以上のフラグまたはビットフィールドを含んでもよい。より具体的には、図7に示されるように、一実施形態では、ディスクテーブル670内のエントリは、論理容量(LV)番号、論理セグメント番号、アドレス空間、およびセクタ状態のためのフィールドを含む。LV番号は、その物理セグメントに格納されるデータに対応する、論理容量を識別する。論理セグメント番号は、そのデータに対応する論理容量のセグメントを識別する。アドレス空間は、「データ」または「冗長性」として格納されるセグメントを識別する。「データ」の値は、データがエントリによって表されるセクタに格納されていることを示してもよく、一方、「冗長性」の値は、セクタに格納される情報が、RAIDデータ保護に使用され得ることを示し、RAIDレベルによって、冗長データ、ミラードデータ、またはパリティ情報であってもよい。セクタ状態は、セグメントの状態を、「割り当てられている」、「ゼロ化されている」、または「ダーティである(dirty)」として示す。「割り当てられている」は、セグメントが割り当てられており、有効なデータを備え得ることを示す。「ゼロ化されている」は、セグメントが、そのセグメントにゼロを書き込むことによってゼロ化されていることを示し、「ダーティである」は、セグメントが、ゴミか、そうでなければ使用不可能もしくは望ましくない値を備え得ること、例えば、セグメントがゼロ化されていない、または割り当てられていないため、ランダムビットまたはデータを格納している場合があることを示す。一実施形態では、例えば、新しいディスクでは、ディスクのすべてのセグメントが、新しい、または新しく追加されたディスクに対応するディスクテーブル内に「ダーティである」とマークされてもよい。
テーブルの上記の説明を読んだ後、分散型RAIDアプリケーション210は、どのセグメントが容量の論理アドレスに対応するか、容量に対応するセグメント(データまたは冗長セグメントのいずれか)がどのデータバンク110上に位置するか、容量のどのセグメントが容量の論理アドレスに対応するか、容量のセグメントに関連付けられるRAIDデータ(パリティデータ、ミラーデータ、他の種類の冗長データ等)がどこに位置するか、特定のデータバンク110上のどのディスク252が、その特定のデータバンク110に対応するセグメント、または容量、セグメント、もしくはディスク252に関する他の情報を備えるか、あるいは容量、セグメント402、データバンク110、RAIDデータ等に関する他の情報を決定するために、グローバルテーブル240を利用してもよいことが明らかとなるであろう。
同様に、各個々のデータバンク110上の分散型RAIDアプリケーション210は、そのデータバンク110上のどこ(ディスク252のどのセクタ等)に特定のセグメントが位置しているか、またはその特定のデータバンク110に対応する容量、セグメント、もしくはディスク252に関する他の情報を決定するために、そのデータバンク110上のローカルテーブル245を使用してもよい。
データバンク110と各個々のデータバンク110に対応するローカルテーブル245との間で共有されるグローバルテーブル240の組み合わせを使用することで、互いに協働しているデータバンク110上の分散型RAIDアプリケーション210によって、特定の動作が実施されてもよい。ここで、これらの種類の動作をより詳細に説明する。特に、ここで、容量と併せてRAIDレベル5が実装されている、容量上への読み込みコマンドおよび書き込みコマンドの実装の一実施形態がより詳細に記載され、例示的な分散型RAIDシステムに対する、これらのコマンドの実装の具体的な実施例が続く。本開示を徹底的に概観した後、どのように他の種類の実施形態、コマンド、RAIDレベル等が実装され得るかが留意されるであろう。
最初に、図8を見ると、分散型RAIDシステムに読み込みコマンドを実装するための方法の一実施形態のフローチャートが描写されている。この読み込みコマンドは、ホスト102によって、スイッチ120を通してデータバンク110に送信されてもよく、または1つのデータバンク110から別のデータバンク110に送信されてもよい。特定の実施形態では、ホスト102は、読み込みコマンドが、発行ホスト102と適切なデータバンク110との間のパスに沿って、コマンドを発行するホスト102から適切なデータバンク110に送られ得るように、1つ以上のアプリケーションおよび関連経路情報を備えてもよい。しかしながら、他の場合では、そのようなアプリケーションまたは経路情報がホスト102上に存在しない場合があり、したがって、ホスト102から発行される読み込みコマンドは、データバンク110のいずれかに送られてもよい。本実施形態では、後者の場合が説明される。しかしながら、本実施形態の説明を概観した後、どのステップが前者の場合に適用可能であるかも、当業者によって留意されるであろう。
ステップ810で、データバンク110で読み込みコマンドが受信されてもよい。データバンク110上の分散型RAIDアプリケーション210は、ステップ820で、受信された読み込みコマンドで参照される論理アドレスに対応する容量のセグメントを決定し、ステップ830で、どのデータバンク110上に容量のセグメントが格納されているかを決定してもよい。上述されるように、この情報は、分散型RAIDアプリケーション210に関連付けられるグローバルテーブル240を使用して決定されてもよい。セグメントを格納しているデータバンク110が、読み込みコマンドを受信したデータバンク110と同一である(ステップ832で決定される)場合、ステップ840で、受信データバンク110上のデータストア250の適切なディスク252から要求されたデータを入手し、ステップ850で、読み込みコマンドに応答することができる。上述されるように、セグメントが格納されているデータバンク110のデータストア250の特定のディスク252は、グローバルテーブル240を使用して決定することができ、一方、セグメントに対応するデータが格納されている、そのディスク252上の位置は、容量のセグメントをディスク252上の物理位置にマップするために使用され得る、ローカルテーブル245を使用して決定されてもよい。受信データバンク110がホスト102から読み込みコマンドを受信した場合、ホスト102が応答されてもよく、一方、受信データバンク110が別のデータバンク110から読み込みコマンドを受信した場合、応答は、読み込みコマンドを発行したデータバンク110上の分散型RAIDアプリケーション210に送信されてもよい。
しかしながら、セグメントが遠隔データバンク110(コマンドを受信したもの以外のデータバンク110)に格納されている場合、ステップ860で、読み込みコマンドは、遠隔データバンク110の分散型RAIDアプリケーション210に送信されてもよい。一実施形態では、この読み込みコマンドは、分散型RAIDアプリケーション210によって利用されるコマンドフォーマットを使用して、遠隔データバンク110の分散型RAIDアプリケーション210に通信されてもよい。このコマンドは、また、元の読み込みコマンドの関連情報を提供する一方で、分散型RAIDアプリケーションに、その読み込みコマンドを初めに受信したデータバンク110に読み込みコマンドの結果を返すように、または他の機能性を実施するように指示してもよい。したがって、読み込みコマンドが遠隔データバンク110に送信された後、ステップ870で、遠隔データバンク110から要求されたデータを備える応答が受信されてもよく、ステップ880で、受信された読み込みコマンドが、その応答で受信されたデータを使用して応答されてもよい。
ここで、図9Aおよび図9Bに移動すると、分散型RAIDシステムに書き込みコマンドを実装するための方法の一実施形態のフローチャートが描写されている。この書き込みコマンドは、ホスト102によって、スイッチ120を通してデータバンク110に送信されてもよく、または1つのデータバンク110から別のデータバンク110に送信されてもよい。特定の実施形態では、ホスト102は、書き込みコマンドが、発行ホスト102と適切なデータバンク110との間のパスに沿って、コマンドを発行するホスト102から適切なデータバンク110に送られ得るように、1つ以上のアプリケーションおよび関連経路情報を備えてもよい。しかしながら、他の場合では、そのようなアプリケーションまたは経路情報がホスト102上に存在しない場合があり、したがって、ホスト102から発行される書き込みコマンドは、データバンク110のいずれかに送られてもよい。本実施形態では、後者の場合が説明される。しかしながら、本実施形態の説明を概観した後、どのステップが前者の場合に適用可能であるかも、当業者によって留意されるであろう。
ステップ910で、受信データバンク110で書き込みコマンドが受信されてもよい。受信データバンク110上の分散型RAIDアプリケーション210は、次いで、ステップ920、930、および940で、書き込みコマンドによって参照される論理アドレスに対応する容量のセグメント、そのセグメントの位置(例えば、どのデータバンク110がそのセグメントに対応するデータを格納しているか)、およびそのセグメントに対応するパリティの位置(例えば、どのデータバンク110が、そのセグメントに対応するデータから作成されるパリティデータが格納されるセグメントを格納しているか)を決定してもよい。上述されるように、データセグメントおよびパリティセグメントの両方の位置は、受信データバンク110上に格納されるグローバルテーブル240を使用して決定されてもよい。
データセグメント(データを格納するセグメント)または冗長セグメント(言い換えると、データセグメントから作成されるパリティまたは他の種類の冗長データの場所)のいずれも受信データバンク110上に格納されていない(ステップ950および960で決定される)場合、書き込みコマンドは、ステップ964で、データセグメントが格納されている遠隔データバンク110上の分散型RAIDアプリケーション210に通信されてもよく、ステップ966で、パリティセグメントが格納されている遠隔パリティデータバンク110上の分散型RAIDアプリケーション210に通信されてもよい。一実施形態では、この書き込みコマンドは、遠隔データバンク110の分散型RAIDアプリケーション210に通信されてもよく、遠隔パリティデータバンク110は、分散型RAIDアプリケーション210によって利用されるコマンドフォーマットを使用する。このコマンドは、また、元の書き込みコマンドの関連情報を提供する一方で、分散型RAIDアプリケーション210に、他の所望の機能性を実施するように指示してもよい。
したがって、書き込みコマンドが遠隔データバンク110に送信された後、ステップ968および970で、遠隔データバンク110および遠隔パリティデータバンク110上の分散型RAIDアプリケーション210から遠隔パリティデータバンク完了通知が受信されてもよい。一旦、これらの確認応答が受信されると、書き込みコマンドは、受信データバンク110上の分散型RAIDアプリケーション210によって応答されてもよい。
しかしながら、ステップ950に戻って、データセグメントが受信データバンク110に格納されている場合、ステップ952で、書き込みコマンドがホスト102から受信されたか、または別のデータバンク110から受信されたかが決定されてもよい。書き込みコマンドがホスト102から受信された場合、書き込みコマンドは、ステップ976で、遠隔パリティデータバンク110上の分散型RAIDアプリケーション210に通信され、ステップ974で、受信データバンク110の書き込みキャッシュ内に置かれてもよい。ステップ978で、遠隔パリティデータバンク110上の分散型RAIDアプリケーション210から完了通知が受信された後、書き込みコマンドは、ステップ980で、受信データバンク110上の分散型RAIDアプリケーション210によって応答されてもよい(例えば、ホスト102に送信される応答)。さらに、書き込みコマンド自体は、ステップ982で処理されてもよい。このプロセスは、受信データバンク110上に格納されるデータセグメントへの書き込みコマンドに関連付けられるデータの格納、または他の機能性を求め得る。
一方、ステップ952で、書き込みコマンドがホストから受信されなかった場合、これは、書き込みコマンドが別のデータバンク110(多くの場合、ホスト102から書き込みコマンドを初めに受信したデータバンク110であり得る)から受信されたことを示してもよい。この場合、データバンク110は、ステップ984で、その書き込みキャッシュ内に受信された書き込みコマンドを置いてもよく、ステップ986で、発行データバンク110に完了通知を送信する。ある後の時点で、ステップ988で、書き込みコマンド自体が処理されてもよい。
再びステップ950に戻り、ステップ960で、データセグメントは受信データバンク110に格納されていないが、パリティセグメントは受信データバンク110に格納されていると決定される場合、ステップ962で、書き込みコマンドがホスト102から受信されたか、または別のデータバンク110から受信されたかが決定されてもよい。書き込みコマンドがホスト102から受信された場合、書き込みコマンドは、ステップ1002で、書き込みに対応するデータセグメントが格納されている遠隔データバンク110上の分散型RAIDアプリケーション210に通信され、ステップ1000で、受信データバンク110の書き込みキャッシュ内に置かれてもよい。ステップ1004で、遠隔データバンク110上の分散型RAIDアプリケーション210から完了通知を受信した後、書き込みコマンドは、ステップ1006で、受信データバンク110上の分散型RAIDアプリケーション210によって応答され、書き込みコマンドは、ステップ1008で、受信データバンク110によって処理されてもよい。
ここで、書き込みコマンドの処理は、受信データバンク110に格納されるパリティセグメントが書き込みコマンドに基づいて更新され得ることを求めてもよい。このパリティセグメントの更新は、当業者に既知の種々の方法で達成されてもよいが、すべてが本明細書に詳細に述べられるわけではない。例えば、パリティデータバンク110上の分散型RAIDアプリケーション210は、パリティセグメントを更新するために、バックアウト書き込みを実施してもよい。このバックアウト書き込みの実施は、パリティセグメントからデータセグメントを入手し、入手されたデータセグメントおよび書き込みコマンドに関連付けられて書き込まれるデータを使用して、論理演算(排他的OR(XOR)演算等)を実施することを求めてもよい。あるいは、受信データバンク110上の分散型RAIDアプリケーション210が、パリティセグメントが作成されたデータセグメントの各々に対応する、複数の書き込みコマンドを有する場合、新しいパリティセグメントが計算されてもよく、元のパリティセグメントは、新しく計算されたパリティセグメントで置換することによって更新されてもよい。本明細書の開示を概観することによって、パリティセグメントを更新するための他の方法が認識されてもよく、分散型RAIDアプリケーションによってパリティセグメントを更新するために利用される特定の方法は、設定パラメータ、特定のデータの有用性(例えば、パリティを作成するために使用される、すべてのデータセグメントに対応する書き込みコマンド等)、または多数の他の要因のいずれかを含む、種々の要因に依存してもよい。
ここで、ステップ962に戻り、書き込みコマンドがホストから受信されなかった場合、これは、書き込みコマンドが別のデータバンク110(多くの場合、ホスト102から書き込みコマンドを初めに受信したデータバンク110であり得る)から受信されたことを示してもよい。この場合、書き込みコマンドは、ステップ990で、受信データバンク110の書き込みキャッシュ内に置かれ、ステップ992で、発行データバンクに完了通知が送信されてもよい。次いで、書き込みコマンドは、ステップ994で処理されてもよい(例えば、上述されるように、パリティセグメントが更新されてもよい)。
上述を概観した後、多くの場合、特定のデータバンク110の分散型RAIDアプリケーション210は、パリティデータバンク110から通知が受信されるまで、受信された書き込みコマンドを処理することができなくてもよく、1つ以上の書き込みコマンドを格納すること、または一組のこれらの格納される書き込みコマンドを評価することが望まれ得る時、パリティデータバンクは、パリティもしくは多数の他のインスタンスのいずれかを更新するための方法を決定または実装するために、複数の受信された書き込みコマンドを評価する必要があってもよいことが留意されるであろう。書き込み(または他の)コマンドの格納および評価を容易にするために、各分散型RAIDアプリケーション210は、関連書き込みキャッシュ260を有してもよい。
書き込みキャッシュの一実施形態の表示を図10に描写する。分散型RAIDアプリケーション210によって書き込みコマンドが受信される際、それらは、書き込みキャッシュ1100内に置かれる。これらの書き込みコマンド1160の各々は、いつ書き込みコマンド1160が受信されたかを示す、関連タイムスタンプを有してもよい。したがって、一実施形態では、書き込みキャッシュ1100は、タイムスタンプの付けられた書き込みコマンド1160の待ち行列を備えてもよい。ある時点で、分散型RAIDアプリケーション210によって、タイムスタンプマーカが発行されてもよい。このタイムスタンプマーカは、時間を備え、分散型RAIDアプリケーション210の各々に通信されてもよい。書き込みキャッシュ1100が特定の割合いっぱいである時、特定の数の書き込みコマンド1160が受信された時、特定の時間間隔で、または種々の他の方法論等の種々の方法で、タイムスタンプマーカを発行するタイミングが決定されてもよい。
任意の事象において、このタイムスタンプマーカ1110は、分散型RAIDアプリケーション210の各々に関連付けられる書き込みキャッシュ1110の各々を、少なくとも2つのセグメント、タイムスタンプマーカ1110の前に受信された書き込みコマンド1160(本実施例では、書き込みコマンド1160a、1160b、1160c、および1160d)を備えるクローズドマーカ1150と、タイムスタンプマーカ1110の後に受信された書き込みコマンド1160(本実施例では、書き込みコマンド1160e、1160f、および1160g)を備えるオープンマーカ1140とにセグメント化する。次いで、分散型RAIDアプリケーション210は、どのようにこれらの書き込みコマンド1160が処理されるかを決定するために、クローズドマーカ1150内の一組の書き込みコマンド1160(本実施例では、書き込みコマンド1160a、1160b、1160c、および1160d)を評価してもよく、一方、受信された書き込みコマンドは、オープンマーカ1140に依然として追加されてもよい。
逆に、クローズドマーカ1150が、もはや変化しない一組の書き込みコマンドを備える際、分散型RAIDアプリケーションは、実行の順序を決定するため、パリティセグメントを更新するための方法論を決定するため(例えば、パリティを作成するために使用される各データセグメントに対応するクローズドマーカ1150内に書き込みコマンドが存在する場合)、または書き込みコマンド1160の処理に関連付けられる他の決定を行うために、この一組の書き込みコマンド1160を互い(または他の基準)に対して評価してもよい(およびしたがって、クローズドマーカ1160内の書き込みコマンド1160を並べ替えてもよい)。複数の理由のために、タイムスタンプマーカ1110がデータバンク110の各々の上の分散型RAIDアプリケーション210のいずれかによって発行される際、複数のクローズドマーカは、任意の時点、例えば、複数のタイムスタンプマーカ1110が、書き込みキャッシュが分散型RAIDアプリケーション210のうちのいずれか1つによって評価されている時間の間に分散型RAIDアプリケーション210によって発行される時に存在してもよい。
上記を概観した後、ここで読者は、仮想化ストレージおよびRAID実装を達成するために、どのようにデータバンク110上の分散型RAIDアプリケーション210が協力して動作するかを理解するであろう。しかしながら、障害が発生した後の分散型RAIDアプリケーション210の特定の実施形態の機能を記載することが、特定の実施形態の理解にさらに有用であり得る。上述されるように、分散型RAIDアプリケーション210は、障害のあるデータバンクを知っていてもよい(例えば、格納していてもよい)(言い換えると、これは、データバンク110が動作する、もしくはデータにアクセスする能力を阻害または妨害する、ハードウェア、ソフトウェア、通信、または他の障害を有し得る)。分散型RAIDアプリケーション210は、ホスト102からのコマンドを満たす一方で、そのような障害を明らかにすることができてもよい。
説明するために、図11は、分散型RAIDシステムに読み込みコマンドを実装するための方法の一実施形態のフローチャートを描写する。この方法は、容量の範囲と併せてRAID5が実装されている実施形態に適用し、その他の実施形態は、他のレベルのRAIDが実装されている(またはいかなるレベルのRAIDも実装されていない)場合、同様に適切に適用されてもよいことが理解されるであろう。読み込みコマンドは、ホスト102によって、スイッチ120を通してデータバンク110に送信されてもよく、または別のデータバンク110から受信データバンク110に送信されてもよい。ステップ1110で、次いで、データバンク110で読み込みコマンドが受信されてもよい。データバンク110上の分散型RAIDアプリケーション210は、ステップ1220で、受信された読み込みコマンドで参照される論理アドレスに対応するデータセグメントを決定し、ステップ1230で、どのデータバンク110上にデータセグメントが格納されているかを決定してもよい。データセグメントを格納しているデータバンク110が、読み込みコマンドを受信したデータバンク110と同一である(ステップ1240で決定される)場合、ステップ1250で、受信データバンク110上のデータストア250の適切なディスク252から要求されたデータを入手し、ステップ1252で、入手されたデータを使用して、受信された読み込みコマンドに応答することができる。受信データバンク110が、ホスト102から読み込みコマンドを受信した場合、ホスト102が応答されてもよく、一方、受信データバンク110が別のデータバンク110から読み込みコマンドを受信した場合、応答は、読み込みコマンドを発行したデータバンク110上の分散型RAIDアプリケーション210に送信されてもよい。
しかしながら、データセグメントが遠隔データバンク110(コマンドを受信したもの以外のデータバンク110)に格納されている場合、ステップ1254で、読み込まれるデータセグメントが格納されている遠隔データバンク110が障害を抱えているかどうかが決定されてもよい。そうでなければ、遠隔データバンク110の分散型RAIDアプリケーションに読み込みコマンドが送信されてもよい。ステップ1258で、遠隔データバンク110から要求されたデータを備える応答が受信された後、ステップ1260で、受信された読み込みコマンドは、そのデータを使用して応答されてもよい。
しかしながら、遠隔データバンク110が障害を抱えている場合、ステップ1254で、受信データバンク110が、読み込みコマンドに関連付けられるデータセグメントに対応するパリティセグメントを保持するかどうかが決定されてもよい。パリティセグメントが受信データバンク110に格納されている場合、読み込みコマンドに対応するデータセグメントは、受信データバンク110に格納されているパリティセグメントを使用して入手されてもよい。パリティデータからのデータセグメントの入手は、他のデータバンク110からの他のデータセグメント(読み込みコマンドに対応するもの以外のデータセグメント)の入手、および他のデータセグメントとパリティセグメントとの間で論理演算を実施することによる、所望のデータセグメントの入手を含む、より詳細には述べられない種々の方法で達成されてもよい。ステップ1268で、パリティデータを使用して、一旦、要求されたデータセグメントが入手されると、ステップ1270で、受信された読み込みコマンドが応答されてもよい。受信データバンク110が、ホスト102から読み込みコマンドを受信した場合、ホスト102が応答されてもよく、一方、受信データバンク110が、別のデータバンク110から読み込みコマンドを受信した場合、応答は、読み込みコマンドを発行したデータバンク110上の分散型RAIDアプリケーション210に送信されてもよい。
受信データバンク110がパリティブロックを格納しているデータバンク110ではない場合、読み込みコマンドは、ステップ1262で、読み込みコマンドで参照されるデータセグメントに対応するパリティセグメントが格納されている遠隔データバンク110に送信されてもよい。ステップ1264で、遠隔パリティデータバンク110から要求されたデータを備える応答が受信された後、読み込みコマンドは、ステップ1266で、そのデータを使用して応答されてもよい。
図12に移動すると、分散型RAIDシステムに書き込みコマンドを実装するための方法の一実施形態のフローチャートが描写されている。この書き込みコマンドは、ホスト102によって、スイッチ120を通してデータバンク110に送信されてもよく、1つのデータバンク110から別のデータバンク110に送信されてもよい。ステップ1310で、次いで、受信データバンク110で書き込みコマンドが受信されてもよい。受信データバンク110上の分散型RAIDアプリケーション210は、次いで、ステップ1312、1314、および1320で、書き込みコマンドによって参照される論理アドレスに対応するデータセグメント、そのデータセグメントの位置(例えば、どのデータバンク110がそのセグメントに対応するデータを格納しているか)、およびそのデータセグメントに対応するパリティセグメントの位置(例えば、どのデータバンク110が、そのセグメントに対応するデータから作成されたパリティデータが格納されているセグメントを格納しているか)を決定してもよい。上述されるように、データセグメントおよびパリティセグメントの両方の位置は、受信データバンク110上に格納される一組のテーブル240を使用して決定されてもよい。
次いで、データセグメントが格納されているデータバンク110またはパリティセグメントが格納されているデータバンク110のいずれかが、障害を抱えているかどうかを決定することができる。これらのデータバンク110のいずれも障害を抱えていない場合、ステップ1324で、分散型RAIDアプリケーションによって、通常の書き込み動作が行われてもよい。通常の書き込み動作は、図9Aおよび図9Bに関して前述されており、さらに記載はされない。
しかしながら、これらのデータバンク110のいずれかが障害を抱えている場合、ステップ1326で、障害のあるデータバンク110を考慮する書き込み動作が実施されてもよい。この書き込み動作は、書き込みコマンドがデータバンク110に送信される前に、書き込みが送信されるデータバンク110に障害があるかどうかが決定され、その場合、その書き込みコマンドは、障害のあるデータバンク110に送信されないことを除き、図9Aおよび図9Bに関して記載される書き込み動作と実質的に同一に同等であってもよい。すべての他の点において、書き込み動作は、実質的に同一である。
前述のフローチャートを概観した後、特定の実施形態の動作は、動作中の分散型RAIDシステムの一実施形態の特定の実施例を参照して、よりよく理解され得る。そのために、5つのデータバンク110を伴う分散型RAIDシステムの一実施形態を示す、図4が再び注目される。第1の実施例で開始するために、ホスト102bは、データバンク110cに読み込みコマンドを発行し、読み込みコマンドは、データバンク110a上のデータセグメント「2」402cに対応する論理アドレスを参照すると仮定する。ここで、データバンク110c上の分散型RAIDアプリケーション210cは、受信された読み込みコマンドの論理アドレスがデータセグメント「2」402cを参照すること、およびデータセグメント「2」402cがデータバンク110a上に格納されていることを決定してもよい。次いで、分散型RAIDアプリケーション210cは、データバンク110aに対応する読み込みコマンドを送信してもよい。
データバンク110a上の分散型RAIDアプリケーション210aは、この読み込みコマンドを受信し、読み込みコマンドがデータセグメント「2」402cに対応する論理アドレスを参照すること、およびデータセグメント「2」402cが、それが実行されているデータバンク110a上に位置することを決定してもよい。次いで、分散型RAIDアプリケーション210aは、データセグメント「2」402cから要求されたデータを入手するためにデータストア250aにアクセスし、この入手したデータを発行データバンク110cの分散型RAIDアプリケーション210cに返してもよい。データバンク110c上の分散型RAIDアプリケーション210cは、データバンク110a上の分散型RAIDアプリケーション210aからこの応答を受信し、ホスト102bから発行された元の読み込みコマンドに応答するために、この応答からのデータを使用してもよい。
ここで、ホスト102bは、データバンク110cに読み込みコマンドを発行し、読み込みコマンドは、データバンク110a上のデータセグメント「2」402cに対応する論理アドレスを参照するが、そのデータバンク110aは、障害を抱えており、もはや動作していないと仮定する。この場合、データバンク110c上の分散型RAIDアプリケーション210cは、受信された読み込みコマンドの論理アドレスがデータセグメント「2」402cを参照すること、およびデータセグメント「2」402cがデータバンク110a上に格納されていることを決定してもよい。さらに、また、データバンク110c上の分散型RAIDアプリケーション210cは、データバンク110aが障害を抱えていることを決定してもよい。
したがって、分散型RAIDアプリケーション210cは、データセグメント「2」402cに対応するパリティセグメント402jの位置は、データバンク110eであることを決定してもよい。次いで、分散型RAIDアプリケーション210cは、データバンク110eに読み込みコマンドを送信してもよい。データバンク110e上の分散型RAIDアプリケーション210eは、この読み込みコマンドを受信し、読み込みコマンドがデータセグメント「2」402cに対応する論理アドレスを参照すること、およびデータセグメント「2」402cに対応するパリティセグメント402jが、それが実行されているデータバンク110e上に位置することを決定してもよい。次いで、分散型RAIDアプリケーション210eは、パリティセグメント402jにアクセスし、パリティセグメント402jを使用して、データセグメント「2」402cから要求されたデータを入手するために、データストア250eにアクセスしてもよい。この入手されたデータは、発行データバンク110cの分散型RAIDアプリケーション210cに返されてもよい。分散型RAIDアプリケーション210eは、データセグメント「2」402cに要求されたデータを決定するために、他のデータを必要とし得ることが留意されるであろう。したがって、分散型RAIDアプリケーション210eは、パリティセグメント402jを作成するために、データセグメント「2」402cと併せて使用された、データセグメント「0」402a、データセグメント「1」402b、およびデータセグメント「3」402dの位置は、各々、データバンク110b、110d、および110c上に位置することを決定してもよい。したがって、分散型RAIDアプリケーション210eは、これらのデータバンク110b、110d、および110cに読み込み要求を送信することによって、データセグメント「0」402a、データセグメント「1」402b、およびデータセグメント「3」402dを入手し、データセグメント「2」402cから要求されたデータを入手するために、パリティセグメント402jと併せて、データセグメント「0」402a、データセグメント「1」402b、およびデータセグメント「3」402dを使用してもよい。
データバンク110c上の分散型RAIDアプリケーション210cは、データバンク110e上の分散型RAIDアプリケーション210eから応答を受信し、ホスト102bから発行された元の読み込みコマンドに応答するために、この応答からのデータを使用してもよい。このように、分散型RAIDシステム内での障害の発生にも関わらず、ホストによって、データセグメントに対応するデータを依然として読み込むことができる。
書き込みコマンドを続け、ホスト102bは、データバンク110cに書き込みコマンドを発行し、書き込みコマンドは、データバンク110a上のデータセグメント「2」402cに対応する論理アドレスを参照すると仮定する。ここで、データバンク110c上の分散型RAIDアプリケーション210cは、受信された書き込みコマンドの論理アドレスがデータセグメント「2」402cを参照すること、およびデータセグメント「2」402cがデータバンク110a上に格納されていることを決定してもよい。さらに、分散型RAIDアプリケーション210cは、データセグメント「2」402cに対応するパリティセグメント402jが、データバンク110e上に位置することを決定してもよい。次いで、分散型RAIDアプリケーション210cは、データバンク110aおよび110eに対応する書き込みコマンドを送信してもよい。分散型RAIDアプリケーション210aおよび210eから完了通知を受信すると、分散型RAIDアプリケーション210cは、初めに受信された書き込みコマンドに応答してもよい。
データバンク110e上の分散型RAIDアプリケーション210eは、その対応する書き込みコマンドを受信し、書き込みコマンドがデータセグメント「2」402cに対応する論理アドレスを参照すること、およびデータセグメント「2」402cに対応するパリティセグメント402jが、それが実行されているデータバンク110e上に位置することを決定してもよい。分散型RAIDアプリケーション210eは、その書き込みキャッシュ内に書き込みコマンドを置き、データバンク110cに完了通知を送信してもよい。次いで、分散型RAIDアプリケーション210eは、パリティセグメント402jにアクセスし、受信された書き込みコマンドで参照されるデータを使用して、パリティセグメント402jを更新するために、データストア250eにアクセスしてもよい。
データバンク110a上の分散型RAIDアプリケーション210aは、その対応する書き込みコマンドを受信し、書き込みコマンドがデータセグメント「2」402cに対応する論理アドレスを参照すること、およびデータセグメント「2」402cが、それが実行されているデータバンク110a上に位置することを決定してもよい。分散型RAIDアプリケーション210aは、その書き込みキャッシュ内に書き込みコマンドを置き、データバンク110cに完了通知を送信してもよい。次いで、分散型RAIDアプリケーション210aは、受信された書き込みコマンドで参照されるデータを使用して、データセグメント「2」402cを更新するために、データストア250aにアクセスしてもよい。
この場合も同様に、今、ホスト102bは、データバンク110cに書き込みコマンドを発行し、書き込みコマンドは、データバンク110a上のデータセグメント「2」402cに対応する論理アドレスを参照するが、データバンク110aは、障害を抱えており、もはや動作していないと仮定する。この場合、データバンク110c上の分散型RAIDアプリケーション210cは、受信された書き込みコマンドの論理アドレスがデータセグメント「2」402cを参照すること、およびデータセグメント「2」402cは、データバンク110a上に格納されていることを決定してもよい。さらに、また、データバンク110c上の分散型RAIDアプリケーション210cは、データバンク110aが障害を抱えていることを決定してもよい。さらに、分散型RAIDアプリケーション210cは、データセグメント「2」402cに対応するパリティセグメント402jがデータバンク110e上に位置することを決定してもよい。次いで、分散型RAIDアプリケーション210cは、対応する書き込みコマンドをデータバンク110eに送信してもよい。分散型RAIDアプリケーション210eから完了通知を受信すると、分散型RAIDアプリケーション210cは、初めに受信された書き込みコマンドに応答してもよい。
データバンク110e上の分散型RAIDアプリケーション210eは、対応する書き込みコマンドを受信し、書き込みコマンドがデータセグメント「2」402cに対応する論理アドレスを参照すること、およびデータセグメント「2」402cに対応するパリティセグメント402jが、それが実行されているデータバンク110e上に位置することを決定してもよい。分散型RAIDアプリケーション210eは、その書き込みキャッシュ内に書き込みコマンドを置き、データバンク110cに完了通知を送信してもよい。次いで、分散型RAIDアプリケーション210eは、パリティセグメント402jにアクセスし、受信された書き込みコマンドで参照されるデータを使用して、パリティセグメント402jを更新するために、データストア250eにアクセスしてもよい。このように、分散型RAIDシステム内での障害の発生にも関わらず、ホストによって、データセグメントに対応するデータを依然として書き込むことができる。
前述の明細書では、本発明は、特定の実施形態を参照して記載されてきた。しかしながら、当業者は、以下の特許請求の範囲に説明される、本発明の範囲から逸脱することなく、種々の修正および変更を行うことができることを理解する。したがって、本明細書および図面は、限定的な意味というよりは、実例と見なされ、すべてのそのような修正は、本発明の範囲内に含まれることが意図される。
利益、他の利点、および問題の解決策は、特定の実施形態に関して説明されてきた。しかしながら、利益、利点、問題の解決策、および任意の利益、利点、または解決策をもたらし得る、もしくはより顕著にし得る任意の構成要素は、任意の、もしくはすべての請求項の決定的に重要である、要求される、または必須の特徴あるいは構成要素であるとは解釈されない。

Claims (12)

  1. 複数の故障からRAIDシステムを保護する方法であって、該方法は、
    複数のデータバンクコンピュータを含むシステムを提供することであって、各データバンクコンピュータは、他の複数のデータバンクコンピュータの各々および1つ以上のホストにネットワークを介して連結され、各データバンクは、分散型RAIDアプリケーションを実行する、ことと、
    複数のデータバンク上に容量を確立することであって、該容量は、一組のセグメントを備え、該一組のセグメントは、該複数のデータバンク上に格納される、ことと、
    該容量と併せて第1のRAIDレベルを実装することであって、該第1のRAIDレベルを実装することは、一組の冗長セグメントを格納することを含み、各冗長セグメントは、該一組のセグメントのうちの1つ以上に対応し、その結果、各冗長セグメントは、該一組のセグメントのうちの対応する1つ以上と同一のデータバンク上に存在しない、ことと、
    該複数のデータバンク内に第2のRAIDレベルを実装することと
    を包含し、第1のデータバンクに対して該第2のRAIDレベルを実装することは、該第1のデータバンク上に格納された該一組のセグメントに対して、
    該第1のデータバンク上に該一組のセグメントのうちの1つ以上に関連するデータを格納することであって、その結果、該データは、該第1のデータバンク上の該一組のセグメントのうちの関連する1つ以上と同一のディスク上に存在しない、ことと、
    該第1のデータバンク上に該一組の冗長セグメントのうちの1つ以上に関連するデータを格納することであって、その結果、該データセグメントは、該データバンク上の該一組の冗長セグメントのうちの関連する1つ以上と同一のディスク上に存在しない、ことと
    を含む、方法。
  2. 前記容量の前記一組のセグメントの各々は、前記複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従ってデータバンクに割り当てられ、前記一組の冗長セグメントの各々は、該冗長セグメントに対応する前記1つ以上のセグメントのうちのいずれかに対応する、該複数のデータバンクの各々とは異なるデータバンクに割り当てられる、請求項1に記載の方法。
  3. 前記第1のコマンドが第1のセグメントに関連する書き込みコマンドであるかどうか、および該第1のコマンドが前記複数のデータバンクのうちの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第2のデータバンクは、前記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第1の冗長セグメントに対して該第1のコマンドを実行し、該第1のコマンドは、該第2のデータバンク上で実行される、請求項2に記載の方法。
  4. 前記第2のデータバンクを決定することは、該データバンクの前記順列および前記RAIDレベルを備えるグローバルテーブルにアクセスすることを含む、請求項3に記載の方法。
  5. 分散型RAIDを実装するためのシステムであって、
    1つ以上のホストと、
    複数のデータバンクコンピュータであって、各データバンクは、各ホストおよび他の複数のデータバンクの各々に連結され、各データバンクは、
    プロセッサと、
    一組のディスクを備えるデータストアと、
    コンピュータ読み取り可能媒体と
    を備え、該コンピュータ読み取り可能媒体は、
    該1つ以上のホストのうちの第1のホストから、容量の第1のセグメントに対応するコマンドを受信することであって、該容量および該容量と併せて実装される第1のRAIDレベルに対応する冗長データは、該複数のデータバンクの各々に格納され、該容量は、一組のセグメントを備え、該一組のセグメントは、該複数のデータバンク上に格納され、第1のRAIDレベルは、該容量と併せて実装され、
    該第1のRAIDレベルを実装することは、一組の冗長セグメントを格納することを含み、各冗長セグメントは、該一組のセグメントのうちの1つ以上に対応し、その結果、各冗長セグメントは、該一組のセグメントのうちの対応する1つ以上と同一のデータバンク上に存在しない、ことと、
    該複数のデータバンク内に第2のRAIDレベルを実装することと
    を包含し、第1のデータバンクに対して該第2のRAIDレベルを実装することは、該第1のデータバンク上に格納された該一組のセグメントに対して、
    該第1のデータバンク上に該一組のセグメントのうちの1つ以上に関連するデータを格納することであって、その結果、該データは、該第1のデータバンク上の該一組のセグメントのうちの関連する1つ以上と同一のディスク上に存在しない、ことと、
    該第1のデータバンク上に該一組の冗長セグメントのうちの1つ以上に関連するデータを格納することであって、その結果、該データセグメントは、該データバンク上の該一組の冗長セグメントのうちの関連する1つ以上と同一のディスク上に存在しない、ことと
    を行うように実行可能な命令を含む、システム。
  6. 前記容量の前記一組のセグメントの各々は、前記複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従ってデータバンクに割り当てられ、前記一組の冗長セグメントの各々は、該冗長セグメントに対応する前記1つ以上のセグメントのうちのいずれかに対応する、該複数のデータバンクの各々とは異なるデータバンクに割り当てられる、請求項5に記載のシステム。
  7. 前記第1のコマンドが第1のセグメントに関連する書き込みコマンドであるかどうか、および該第1のコマンドが前記複数のデータバンクのうちの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第2のデータバンクは、前記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第1の冗長セグメントに対して該第1のコマンドを実行し、該第1のコマンドは、該第2のデータバンク上で実行される、請求項6に記載のシステム。
  8. 前記第2のデータバンクを決定することは、該データバンクの前記順列および前記RAIDレベルを備えるグローバルテーブルにアクセスすることを含む、請求項7に記載のシステム。
  9. 分散型RAIDを実装するためのコンピュータ実行可能命令を備える、コンピュータ読み取り可能媒体であって、該コンピュータ命令は、
    複数のデータバンク上に容量を確立するために実行可能であって、該容量は、一組のセグメントを備え、該一組のセグメントは、該複数のデータバンク上に格納され、
    該容量と併せて第1のRAIDレベルを実装するために実行可能であって、該第1のRAIDレベルを実装することは、一組の冗長セグメントを格納することを含み、各冗長セグメントは、該一組のセグメントのうちの1つ以上に対応し、その結果、各冗長セグメントは、該一組のセグメントのうちの対応する1つ以上と同一のデータバンク上に存在せず、
    該複数のデータバンク内に第2のRAIDレベルを実装することと
    を包含し、第1のデータバンクに対して該第2のRAIDレベルを実装することは、該第1のデータバンク上に格納された該一組のセグメントに対して、
    該第1のデータバンク上に該一組のセグメントのうちの1つ以上に関連するデータを格納することであって、その結果、該データは、該第1のデータバンク上の該一組のセグメントのうちの関連する1つ以上と同一のディスク上に存在しない、ことと、
    該第1のデータバンク上に該一組の冗長セグメントのうちの1つ以上に関連するデータを格納することであって、その結果、該データセグメントは、該データバンク上の該一組の冗長セグメントのうちの関連する1つ以上と同一のディスク上に存在しない、ことと
    を行うように実行可能である、コンピュータ読み取り可能媒体。
  10. 前記容量の前記一組のセグメントの各々は、前記複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従ってデータバンクに割り当てられ、前記一組の冗長セグメントの各々は、該冗長セグメントに対応する前記1つ以上のセグメントのうちのいずれかに対応する、該複数のデータバンクの各々とは異なるデータバンクに割り当てられる、請求項9に記載のコンピュータ読み取り可能媒体。
  11. 前記第1のコマンドが第1のセグメントに関連する書き込みコマンドであるかどうか、および該第1のコマンドが前記複数のデータバンクのうちの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第2のデータバンクは、前記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第1の冗長セグメントに対して該第1のコマンドを実行し、該第1のコマンドは、該第2のデータバンク上で実行される、請求項10に記載のコンピュータ読み取り可能媒体。
  12. 前記第2のデータバンクを決定することは、該データバンクの前記順列および前記RAIDレベルを備えるグローバルテーブルにアクセスすることを含む、請求項11に記載のコンピュータ読み取り可能媒体。
JP2011107699A 2008-06-06 2011-05-12 分散型raid実装のための方法およびシステム Pending JP2011165212A (ja)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
US13129108P 2008-06-06 2008-06-06
US13129008P 2008-06-06 2008-06-06
US13131208P 2008-06-06 2008-06-06
US13137908P 2008-06-06 2008-06-06
US13131408P 2008-06-06 2008-06-06
US13127008P 2008-06-06 2008-06-06
US61/131,290 2008-06-06
US61/131,314 2008-06-06
US61/131,291 2008-06-06
US61/131,270 2008-06-06
US61/131,312 2008-06-06
US61/131,379 2008-06-06

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011512708A Division JP2011523144A (ja) 2008-06-06 2009-06-05 分散型raid実装のための方法およびシステム

Publications (2)

Publication Number Publication Date
JP2011165212A true JP2011165212A (ja) 2011-08-25
JP2011165212A5 JP2011165212A5 (ja) 2012-07-19

Family

ID=41398559

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011512708A Pending JP2011523144A (ja) 2008-06-06 2009-06-05 分散型raid実装のための方法およびシステム
JP2011107699A Pending JP2011165212A (ja) 2008-06-06 2011-05-12 分散型raid実装のための方法およびシステム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2011512708A Pending JP2011523144A (ja) 2008-06-06 2009-06-05 分散型raid実装のための方法およびシステム

Country Status (9)

Country Link
US (16) US8090909B2 (ja)
EP (2) EP2304568B1 (ja)
JP (2) JP2011523144A (ja)
KR (1) KR20110031441A (ja)
CN (1) CN102099792A (ja)
DK (1) DK2304568T3 (ja)
HK (1) HK1154969A1 (ja)
IL (1) IL209571A (ja)
WO (3) WO2009149386A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015207289A (ja) * 2014-04-21 2015-11-19 三星電子株式会社Samsung Electronics Co.,Ltd. ストレージシステム及びストレージコントローラの動作方法

Families Citing this family (307)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9632722B2 (en) * 2010-05-19 2017-04-25 International Business Machines Corporation Balancing storage unit utilization within a dispersed storage network
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
WO2008070813A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a front-end, distributed raid
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8886909B1 (en) 2008-03-31 2014-11-11 Emc Corporation Methods, systems, and computer readable medium for allocating portions of physical storage in a storage array based on current or anticipated utilization of storage array resources
US8090909B2 (en) 2008-06-06 2012-01-03 Pivot3 Method and system for distributed raid implementation
US8219750B2 (en) * 2008-06-30 2012-07-10 Pivot3 Method and system for execution of applications in conjunction with distributed RAID
US8176247B2 (en) * 2008-10-28 2012-05-08 Pivot3 Method and system for protecting against multiple failures in a RAID system
WO2011031796A2 (en) 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for caching data on a solid-state storage device
EP2476079A4 (en) * 2009-09-09 2013-07-03 Fusion Io Inc APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US20110078343A1 (en) * 2009-09-29 2011-03-31 Cleversafe, Inc. Distributed storage network including memory diversity
US8880843B2 (en) * 2010-02-10 2014-11-04 International Business Machines Corporation Providing redundancy in a virtualized storage system for a computer system
US9792181B2 (en) * 2010-02-22 2017-10-17 International Business Machines Corporation Pool of devices providing operating system redundancy
US8484536B1 (en) * 2010-03-26 2013-07-09 Google Inc. Techniques for data storage, access, and maintenance
US8924681B1 (en) * 2010-03-31 2014-12-30 Emc Corporation Systems, methods, and computer readable media for an adaptative block allocation mechanism
US9330105B1 (en) 2010-05-07 2016-05-03 Emc Corporation Systems, methods, and computer readable media for lazy compression of data incoming to a data storage entity
WO2011145137A1 (en) * 2010-05-18 2011-11-24 Hitachi, Ltd. Storage apparatus and control method thereof for dynamic migration of small storage areas
US8861727B2 (en) * 2010-05-19 2014-10-14 Cleversafe, Inc. Storage of sensitive data in a dispersed storage network
US8719675B1 (en) 2010-06-16 2014-05-06 Google Inc. Orthogonal coding for data storage, access, and maintenance
US9311002B1 (en) 2010-06-29 2016-04-12 Emc Corporation Systems, methods, and computer readable media for compressing data at a virtually provisioned storage entity
US8621271B2 (en) * 2010-08-26 2013-12-31 Cleversafe, Inc. Reprovisioning a memory device into a dispersed storage network memory
US8402230B2 (en) * 2010-09-10 2013-03-19 International Business Machines Corporation Recoverability while adding storage to a redirect-on-write storage pool
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
JP5614213B2 (ja) * 2010-10-01 2014-10-29 日本電気株式会社 記憶領域提供装置、記憶領域提供方法、及び、記憶領域提供プログラム
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9348515B2 (en) * 2011-01-17 2016-05-24 Hitachi, Ltd. Computer system, management computer and storage management method for managing data configuration based on statistical information
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US8966191B2 (en) 2011-03-18 2015-02-24 Fusion-Io, Inc. Logical interface for contextual storage
US8527699B2 (en) * 2011-04-25 2013-09-03 Pivot3, Inc. Method and system for distributed RAID implementation
US20120278552A1 (en) * 2011-04-28 2012-11-01 Lsi Corporation Remote execution of raid in large topologies
US9003101B1 (en) * 2011-06-29 2015-04-07 Western Digital Technologies, Inc. Prioritized access for media with heterogeneous access rates
US9335939B2 (en) 2011-07-12 2016-05-10 Violin Memory Inc. RAIDed memory system
US9417823B2 (en) 2011-07-12 2016-08-16 Violin Memory Inc. Memory system management
GB2492981B (en) * 2011-07-18 2014-03-26 Qando Service Inc Data reconstruction
US8621317B1 (en) 2011-07-25 2013-12-31 Google Inc. Modified orthogonal coding techniques for storing data
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
CN102955801B (zh) * 2011-08-25 2017-06-16 中兴通讯股份有限公司 基于分布式数据库系统的数据控制方法及系统
US8615698B1 (en) 2011-09-28 2013-12-24 Google Inc. Skewed orthogonal coding techniques
JP5744244B2 (ja) * 2011-10-19 2015-07-08 株式会社日立製作所 ストレージシステム
WO2013070800A1 (en) 2011-11-07 2013-05-16 Nexgen Storage, Inc. Primary data storage system with quality of service
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US9098200B2 (en) * 2012-02-10 2015-08-04 Hitachi, Ltd. Storage system with virtual volume having data arranged astride storage devices, and volume management method
US8856619B1 (en) 2012-03-09 2014-10-07 Google Inc. Storing data across groups of storage nodes
WO2013140492A1 (ja) * 2012-03-19 2013-09-26 富士通株式会社 データアクセス方法およびプログラム
US9110600B1 (en) 2012-03-19 2015-08-18 Amazon Technologies, Inc. Triggered data shelving to a different storage system and storage deallocation
US8954706B2 (en) * 2012-03-21 2015-02-10 Hitachi, Ltd. Storage apparatus, computer system, and control method for storage apparatus
WO2013157032A1 (en) * 2012-04-16 2013-10-24 Hitachi, Ltd. Storage subsystem and data management method of storage subsystem
US9823840B1 (en) * 2012-05-07 2017-11-21 Amazon Technologies, Inc. Data volume placement techniques
US9804993B1 (en) 2012-05-07 2017-10-31 Amazon Technologies, Inc. Data volume placement techniques
US9348769B2 (en) 2012-05-24 2016-05-24 Red Hat, Inc. Managing zeroed logical volume
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
TWI471241B (zh) * 2012-09-14 2015-02-01 Automotive Res & Testing Ct Brake back to charge control learning module, controller and controlled brake back to the car
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US9177177B1 (en) * 2012-10-04 2015-11-03 Symantec Corporation Systems and methods for securing storage space
US8782292B2 (en) * 2012-10-31 2014-07-15 Lsi Corporation Methods and structure for performing a rebuild of a logical volume with a serial attached SCSI expander
US8904119B2 (en) 2012-10-31 2014-12-02 Lsi Corporation Method and structures for performing a migration of a logical volume with a serial attached SCSI expander
US9135198B2 (en) 2012-10-31 2015-09-15 Avago Technologies General Ip (Singapore) Pte Ltd Methods and structure for serial attached SCSI expanders that self-configure by setting routing attributes of their ports based on SMP requests
US8904108B2 (en) 2012-10-31 2014-12-02 Lsi Corporation Methods and structure establishing nested Redundant Array of Independent Disks volumes with an expander
US9632889B2 (en) * 2012-11-12 2017-04-25 Oracle International Corporation Method for the optimization of performance, capacity and redundancy in digital data storage systems
CN103023992A (zh) * 2012-11-28 2013-04-03 江苏乐买到网络科技有限公司 海量数据的分布式存储方法
US9286163B2 (en) 2013-01-14 2016-03-15 International Business Machines Corporation Data recovery scheme based on data backup status
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US9235355B2 (en) 2013-04-04 2016-01-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Reverse mirroring in raid level 1
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US9104597B2 (en) * 2013-04-16 2015-08-11 International Business Machines Corporation Destaging cache data using a distributed freezer
US9619404B2 (en) 2013-04-16 2017-04-11 International Business Machines Corporation Backup cache with immediate availability
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US9329938B2 (en) 2013-04-16 2016-05-03 International Business Machines Corporation Essential metadata replication
US9298617B2 (en) 2013-04-16 2016-03-29 International Business Machines Corporation Parallel destaging with replicated cache pinning
US9104332B2 (en) 2013-04-16 2015-08-11 International Business Machines Corporation Managing metadata and data for a logical volume in a distributed and declustered system
US9298398B2 (en) 2013-04-16 2016-03-29 International Business Machines Corporation Fine-grained control of data placement
US9423981B2 (en) 2013-04-16 2016-08-23 International Business Machines Corporation Logical region allocation with immediate availability
US9542126B2 (en) 2013-04-22 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Redundant array of independent disks systems that utilize spans with different storage device counts for a logical volume
US10331375B1 (en) * 2013-06-21 2019-06-25 Amazon Technologies, Inc. Data storage area cleaner
US20150032798A1 (en) * 2013-07-24 2015-01-29 Alcatel-Lucent Canada Inc. Method And Apparatus For Providing Redundant Data Access
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
GB2519815A (en) 2013-10-31 2015-05-06 Ibm Writing data cross storage devices in an erasure-coded system
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9274901B2 (en) 2013-11-20 2016-03-01 Avago Technologies General Ip (Singapore) Pte. Ltd. I/O request mirroring in a clustered storage system
CN103605484B (zh) * 2013-11-26 2016-10-26 华为技术有限公司 一种数据存储的方法和存储服务器
US9612745B2 (en) * 2014-01-24 2017-04-04 Silicon Graphics International Corp. Raid set initialization
WO2015116197A1 (en) * 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Storing data based on a write allocation policy
US9547448B2 (en) * 2014-02-24 2017-01-17 Netapp, Inc. System and method for transposed storage in raid arrays
US9612952B2 (en) * 2014-06-04 2017-04-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9372630B2 (en) 2014-07-09 2016-06-21 International Business Machines Corporation Migration of newly allocated data to a storage tier
US9588843B2 (en) 2014-07-14 2017-03-07 International Business Machines Corporation System and method for transferring traditional RAID to distributed array
WO2016018383A1 (en) 2014-07-31 2016-02-04 Hewlett-Packard Development Company Live migration of data
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9298647B2 (en) * 2014-08-25 2016-03-29 HGST Netherlands B.V. Method and apparatus to generate zero content over garbage data when encryption parameters are changed
US10372627B2 (en) 2014-08-25 2019-08-06 Western Digital Technologies, Inc. Method to generate pattern data over garbage data when encryption parameters are changed
US10540109B2 (en) 2014-09-02 2020-01-21 Hewlett Packard Enterprise Development Lp Serializing access to fault tolerant memory
WO2016064417A1 (en) 2014-10-24 2016-04-28 Hewlett Packard Enterprise Development Lp End-to-end negative acknowledgment
CN105739909A (zh) 2014-12-11 2016-07-06 国际商业机器公司 分布式存储系统中基于时间的数据放置方法和装置
WO2016098202A1 (ja) * 2014-12-17 2016-06-23 株式会社日立製作所 ストレージ装置およびその制御方法
WO2016122610A1 (en) 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Preventing data corruption and single point of failure in a fault-tolerant memory
WO2016122642A1 (en) 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Determine failed components in fault-tolerant memory
US10409681B2 (en) 2015-01-30 2019-09-10 Hewlett Packard Enterprise Development Lp Non-idempotent primitives in fault-tolerant memory
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US9678665B2 (en) * 2015-03-06 2017-06-13 Western Digital Technologies, Inc. Methods and systems for memory page allocation
US10715460B2 (en) 2015-03-09 2020-07-14 Amazon Technologies, Inc. Opportunistic resource migration to optimize resource placement
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10402261B2 (en) 2015-03-31 2019-09-03 Hewlett Packard Enterprise Development Lp Preventing data corruption and single point of failure in fault-tolerant memory fabrics
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
CN106569728B (zh) * 2015-10-09 2021-02-23 中兴通讯股份有限公司 多磁盘阵列raid共享写缓存的处理方法及装置
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10482071B1 (en) * 2016-01-26 2019-11-19 Pure Storage, Inc. Systems and methods for providing metrics for a plurality of storage entities of a multi-array data storage system
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
CN109313593B (zh) * 2016-09-16 2022-03-01 株式会社日立制作所 存储系统
US10193634B2 (en) 2016-09-19 2019-01-29 Hewlett Packard Enterprise Development Lp Optical driver circuits
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US12039165B2 (en) 2016-10-04 2024-07-16 Pure Storage, Inc. Utilizing allocation shares to improve parallelism in a zoned drive storage system
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
KR102631351B1 (ko) 2016-10-07 2024-01-31 삼성전자주식회사 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
CN108228647B (zh) 2016-12-21 2022-05-24 伊姆西Ip控股有限责任公司 用于数据拷贝的方法和设备
US10089015B1 (en) * 2016-12-28 2018-10-02 EMC IP Holding Company LLC Per-drive memory resident zeroing maps for drive zeroing in a data storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10162531B2 (en) 2017-01-21 2018-12-25 International Business Machines Corporation Physical allocation unit optimization
US10459663B2 (en) 2017-01-23 2019-10-29 International Business Machines Corporation Thin provisioning of raid storage
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10210063B2 (en) 2017-02-05 2019-02-19 International Business Machines Corporation Disk array storage controller
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10409521B1 (en) * 2017-04-28 2019-09-10 EMC IP Holding Company LLC Block-based backups for large-scale volumes
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10389342B2 (en) 2017-06-28 2019-08-20 Hewlett Packard Enterprise Development Lp Comparator
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US11379155B2 (en) 2018-05-24 2022-07-05 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US11121981B1 (en) 2018-06-29 2021-09-14 Amazon Technologies, Inc. Optimistically granting permission to host computing resources
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US10901848B2 (en) 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US10649843B2 (en) 2018-08-03 2020-05-12 Western Digital Technologies, Inc. Storage systems with peer data scrub
US10824526B2 (en) 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
US10831603B2 (en) 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US10891066B2 (en) 2018-12-28 2021-01-12 Intelliflash By Ddn, Inc. Data redundancy reconfiguration using logical subunits
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11182258B2 (en) * 2019-01-04 2021-11-23 Western Digital Technologies, Inc. Data rebuild using dynamic peer work allocation
US11003559B2 (en) 2019-03-26 2021-05-11 International Business Machines Corporation Underperforming drive handling in redundant arrays
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
CN110321075B (zh) * 2019-05-31 2023-05-23 平安科技(深圳)有限公司 基于nbd设备的数据迁移方法、装置、设备及存储介质
CN110333823B (zh) * 2019-05-31 2023-07-07 平安科技(深圳)有限公司 基于nbd设备的数据迁移方法、装置、设备及存储介质
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11620233B1 (en) * 2019-09-30 2023-04-04 Amazon Technologies, Inc. Memory data migration hardware
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11055190B1 (en) * 2020-01-03 2021-07-06 Alibaba Group Holding Limited System and method for facilitating storage system operation with global mapping to provide maintenance without a service interrupt
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11379447B2 (en) 2020-02-06 2022-07-05 Alibaba Group Holding Limited Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11316917B2 (en) * 2020-03-04 2022-04-26 Samsung Electronics Co., Ltd. Methods and apparatus for peer-to-peer data channels for storage devices
US11449386B2 (en) 2020-03-20 2022-09-20 Alibaba Group Holding Limited Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11301173B2 (en) 2020-04-20 2022-04-12 Alibaba Group Holding Limited Method and system for facilitating evaluation of data access frequency and allocation of storage device resources
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
US12032848B2 (en) 2021-06-21 2024-07-09 Pure Storage, Inc. Intelligent block allocation in a heterogeneous storage system
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05257611A (ja) * 1991-12-23 1993-10-08 Ncr Internatl Inc ディスクアレーの区分け方法
JPH05324579A (ja) * 1992-05-25 1993-12-07 Hitachi Ltd 分散ファイルシステム及び記憶装置
JPH07261945A (ja) * 1994-03-17 1995-10-13 Hitachi Ltd ディスクアレイ装置およびディスクアレイの区分け方法
US20010044879A1 (en) * 2000-02-18 2001-11-22 Moulton Gregory Hagan System and method for distributed management of data storage
US20030159001A1 (en) * 2002-02-19 2003-08-21 Chalmer Steven R. Distributed, scalable data storage facility with cache memory
US20060129559A1 (en) * 2004-12-15 2006-06-15 Dell Products L.P. Concurrent access to RAID data in shared storage
JP2006331076A (ja) * 2005-05-26 2006-12-07 Hitachi Ltd データ記憶システム及び記憶方法

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2766424B2 (ja) 1992-06-04 1998-06-18 三菱電機株式会社 論理ボリューム装置
US6449730B2 (en) * 1995-10-24 2002-09-10 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
US6601138B2 (en) 1998-06-05 2003-07-29 International Business Machines Corporation Apparatus system and method for N-way RAID controller having improved performance and fault tolerance
JP3736134B2 (ja) 1998-08-28 2006-01-18 日本電信電話株式会社 分散記憶方法及び分散記憶システム及び分散記憶プログラムを記録した記録媒体
US6370605B1 (en) * 1999-03-04 2002-04-09 Sun Microsystems, Inc. Switch based scalable performance storage architecture
US7000069B2 (en) 1999-04-05 2006-02-14 Hewlett-Packard Development Company, L.P. Apparatus and method for providing very large virtual storage volumes using redundant arrays of disks
US6304942B1 (en) 1999-08-09 2001-10-16 Lsi Logic Corporation Providing an upgrade path for an existing data storage system
US6957313B2 (en) 2000-12-01 2005-10-18 Hsia James R Memory matrix and method of operating the same
US6895485B1 (en) 2000-12-07 2005-05-17 Lsi Logic Corporation Configuring and monitoring data volumes in a consolidated storage array using one storage array to configure the other storage arrays
US7058788B2 (en) * 2001-02-23 2006-06-06 Falconstor Software, Inc. Dynamic allocation of computer memory
US7076510B2 (en) * 2001-07-12 2006-07-11 Brown William P Software raid methods and apparatuses including server usage based write delegation
US7644136B2 (en) * 2001-11-28 2010-01-05 Interactive Content Engines, Llc. Virtual file system
US7096328B2 (en) 2002-01-25 2006-08-22 University Of Southern California Pseudorandom data storage
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US20040177218A1 (en) * 2002-11-06 2004-09-09 Meehan Thomas F. Multiple level raid architecture
AU2003291014A1 (en) 2002-11-14 2004-06-15 Isilon Systems, Inc. Systems and methods for restriping files in a distributed file system
US7032086B2 (en) 2003-02-28 2006-04-18 Hewlett-Packard Development Company, L.P. System and method for adjusting storage device layout with at least one status for the adjusting
US6952743B2 (en) * 2003-03-07 2005-10-04 Ivivity, Inc. Interface for distributed processing of SCSI tasks
US7111147B1 (en) * 2003-03-21 2006-09-19 Network Appliance, Inc. Location-independent RAID group virtual block management
US7096316B1 (en) 2003-06-30 2006-08-22 Veritas Operating Corporation Multi-host environment with coordinated distributed logging for writes to a raid storage volume
US7254754B2 (en) 2003-07-14 2007-08-07 International Business Machines Corporation Raid 3+3
US7523257B2 (en) 2003-08-27 2009-04-21 Adaptec, Inc. Method of managing raid level bad blocks in a networked storage system
US7366837B2 (en) 2003-11-24 2008-04-29 Network Appliance, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
JP2005316762A (ja) * 2004-04-28 2005-11-10 Toshiba Corp ディスク記憶装置及びraid構築方法
US8055745B2 (en) 2004-06-01 2011-11-08 Inmage Systems, Inc. Methods and apparatus for accessing data from a primary data storage system for secondary storage
US7516354B2 (en) * 2004-08-25 2009-04-07 International Business Machines Corporation Storing parity information for data recovery
CN100518061C (zh) * 2004-09-07 2009-07-22 北京邦诺存储科技有限公司 写一次读多次磁盘存储系统和设计方法
JP4555036B2 (ja) 2004-09-16 2010-09-29 株式会社日立製作所 ストレージ装置及びストレージ装置のデバイス切替制御方法
US7389393B1 (en) * 2004-10-21 2008-06-17 Symantec Operating Corporation System and method for write forwarding in a storage environment employing distributed virtualization
GB2419702A (en) 2004-10-29 2006-05-03 Hewlett Packard Development Co Virtual overlay infrastructures which can be suspended and later reactivated
US20070094348A1 (en) 2005-01-07 2007-04-26 Microsoft Corporation BITS/RDC integration and BITS enhancements
US7130960B1 (en) * 2005-04-21 2006-10-31 Hitachi, Ltd. System and method for managing disk space in a thin-provisioned storage subsystem
JP4690765B2 (ja) * 2005-04-26 2011-06-01 株式会社日立製作所 ストレージ管理システム、ストレージ管理サーバ、データ再配置制御方法およびデータ再配置制御プログラム
US7904649B2 (en) * 2005-04-29 2011-03-08 Netapp, Inc. System and method for restriping data across a plurality of volumes
US7617370B2 (en) * 2005-04-29 2009-11-10 Netapp, Inc. Data allocation within a storage system architecture
US7529816B2 (en) * 2005-06-03 2009-05-05 Hewlett-Packard Development Company, L.P. System for providing multi-path input/output in a clustered data storage network
US7437507B2 (en) * 2005-06-06 2008-10-14 Cisco Technology, Inc. Online restriping technique for distributed network based virtualization
US7418550B2 (en) 2005-07-30 2008-08-26 Lsi Corporation Methods and structure for improved import/export of raid level 6 volumes
US7844775B2 (en) 2005-09-23 2010-11-30 Avid Technology, Inc. Distribution of data in a distributed shared storage system
WO2007058617A1 (en) * 2005-11-17 2007-05-24 Chee Keng Chang A controller for non-volatile memories, and methods of operating the memory controller
US20070143541A1 (en) 2005-12-19 2007-06-21 Lsi Logic Corporation Methods and structure for improved migration of raid logical volumes
US8321377B2 (en) 2006-04-17 2012-11-27 Microsoft Corporation Creating host-level application-consistent backups of virtual machines
JP5124103B2 (ja) 2006-05-16 2013-01-23 株式会社日立製作所 計算機システム
US7886111B2 (en) 2006-05-24 2011-02-08 Compellent Technologies System and method for raid management, reallocation, and restriping
US7546398B2 (en) 2006-08-01 2009-06-09 International Business Machines Corporation System and method for distributing virtual input/output operations across multiple logical partitions
JP2008107896A (ja) 2006-10-23 2008-05-08 Nec Corp 物理資源制御管理システム、物理資源制御管理方法および物理資源制御管理用プログラム
JP5244332B2 (ja) 2006-10-30 2013-07-24 株式会社日立製作所 情報システム、データ転送方法及びデータ保護方法
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
WO2008070813A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a front-end, distributed raid
US20080155191A1 (en) * 2006-12-21 2008-06-26 Anderson Robert J Systems and methods for providing heterogeneous storage systems
JP5246388B2 (ja) 2007-03-08 2013-07-24 日本電気株式会社 仮想装置構成システム、及びその方法
US8117495B2 (en) 2007-11-26 2012-02-14 Stratus Technologies Bermuda Ltd Systems and methods of high availability cluster environment failover protection
US20090172335A1 (en) 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US8370833B2 (en) 2008-02-20 2013-02-05 Hewlett-Packard Development Company, L.P. Method and system for implementing a virtual storage pool in a virtual environment
US8090909B2 (en) 2008-06-06 2012-01-03 Pivot3 Method and system for distributed raid implementation
US8219750B2 (en) 2008-06-30 2012-07-10 Pivot3 Method and system for execution of applications in conjunction with distributed RAID
US8176247B2 (en) 2008-10-28 2012-05-08 Pivot3 Method and system for protecting against multiple failures in a RAID system
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US8527699B2 (en) 2011-04-25 2013-09-03 Pivot3, Inc. Method and system for distributed RAID implementation

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05257611A (ja) * 1991-12-23 1993-10-08 Ncr Internatl Inc ディスクアレーの区分け方法
JPH05324579A (ja) * 1992-05-25 1993-12-07 Hitachi Ltd 分散ファイルシステム及び記憶装置
JPH07261945A (ja) * 1994-03-17 1995-10-13 Hitachi Ltd ディスクアレイ装置およびディスクアレイの区分け方法
US20010044879A1 (en) * 2000-02-18 2001-11-22 Moulton Gregory Hagan System and method for distributed management of data storage
US20030159001A1 (en) * 2002-02-19 2003-08-21 Chalmer Steven R. Distributed, scalable data storage facility with cache memory
US20060129559A1 (en) * 2004-12-15 2006-06-15 Dell Products L.P. Concurrent access to RAID data in shared storage
JP2006331076A (ja) * 2005-05-26 2006-12-07 Hitachi Ltd データ記憶システム及び記憶方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015207289A (ja) * 2014-04-21 2015-11-19 三星電子株式会社Samsung Electronics Co.,Ltd. ストレージシステム及びストレージコントローラの動作方法

Also Published As

Publication number Publication date
US8621147B2 (en) 2013-12-31
US8127076B2 (en) 2012-02-28
US20090307424A1 (en) 2009-12-10
US20090307426A1 (en) 2009-12-10
US9535632B2 (en) 2017-01-03
US20120054432A1 (en) 2012-03-01
US8316181B2 (en) 2012-11-20
US8145841B2 (en) 2012-03-27
WO2009149386A1 (en) 2009-12-10
US8255625B2 (en) 2012-08-28
US9146695B2 (en) 2015-09-29
HK1154969A1 (en) 2012-05-04
US20120124286A1 (en) 2012-05-17
US8239624B2 (en) 2012-08-07
US20110320711A1 (en) 2011-12-29
WO2010011428A1 (en) 2010-01-28
US8090909B2 (en) 2012-01-03
WO2009149388A1 (en) 2009-12-10
US8261017B2 (en) 2012-09-04
US8271727B2 (en) 2012-09-18
US20120054431A1 (en) 2012-03-01
US8086797B2 (en) 2011-12-27
JP2011523144A (ja) 2011-08-04
US20120137069A1 (en) 2012-05-31
US20140143490A1 (en) 2014-05-22
KR20110031441A (ko) 2011-03-28
CN102099792A (zh) 2011-06-15
EP2645251A1 (en) 2013-10-02
US8316180B2 (en) 2012-11-20
US9465560B2 (en) 2016-10-11
US20120297137A1 (en) 2012-11-22
EP2304568A4 (en) 2012-05-09
US20090307423A1 (en) 2009-12-10
US20160048356A1 (en) 2016-02-18
IL209571A (en) 2015-11-30
US20120297136A1 (en) 2012-11-22
IL209571A0 (en) 2011-01-31
US8140753B2 (en) 2012-03-20
EP2304568A1 (en) 2011-04-06
US20090307421A1 (en) 2009-12-10
EP2304568B1 (en) 2013-08-14
US20090307425A1 (en) 2009-12-10
US20120054433A1 (en) 2012-03-01
DK2304568T3 (da) 2013-11-11
US20090307422A1 (en) 2009-12-10
US8082393B2 (en) 2011-12-20

Similar Documents

Publication Publication Date Title
US9535632B2 (en) Method and system for distributed raid implementation
US8386709B2 (en) Method and system for protecting against multiple failures in a raid system
US8527699B2 (en) Method and system for distributed RAID implementation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120601

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130510

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131204