JP2011165212A - 分散型raid実装のための方法およびシステム - Google Patents
分散型raid実装のための方法およびシステム Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1028—Distributed, 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
【解決手段】開示されるシステムおよび方法の実施形態は、一組のデータバンクを備える、分散型RAIDシステムを提供する。より具体的には、分散型RAIDシステムの特定の実施形態では、各データバンクは、一組の関連ストレージ媒体を有し、同様の分散型RAIDアプリケーションを実行する。データバンクの各々の上の分散型RAIDアプリケーションは、それら自体の間で、データバンクの関連ストレージ媒体上に格納されるデータと併せた、RAIDのレベルの実装に関連するデータフローを分散し、制御するように協働する。
【選択図】図1
Description
(技術分野)
本発明は、概して、ストレージデバイスの使用に関する。より具体的には、本発明の実施形態は、ストレージデバイス上にRAIDを実装するステップに関する。さらにより具体的には、本発明の特定の実施形態は、RAIDの分散型実装に関する。
本発明は、概して、ストレージデバイスの使用に関する。より具体的には、本発明の実施形態は、ストレージデバイス上に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アプリケーションの各々は、その容量またはその容量と併せた所望の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を実装するためのシステムであって、
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)、ハードウェア回路等、または任意の組み合わせ上に存在してもよい、好適なコンピュータ実行可能命令に実装することができる。
本発明および種々の特徴ならびにそれらの有利な詳細は、添付の図面に示される非限定的な実施形態を参照してより完全に説明され、以下の説明に詳細に記述される。本発明の詳細を不必要に不明瞭にしないように、周知の開始材料、処理技術、構成要素、および機器の説明は、省略されている。しかしながら、発明を実施するための形態および具体的な実施例は、本発明の好ましい実施形態を示すが、限定としてではなく、例としてのみ与えられていることを理解されたい。本開示から、根本的な発明の概念の趣旨および/または範囲内の種々の置換、修正、追加、および/または再配列が当業者に明らかとなるであろう。本明細書に記載される実施形態は、コンピュータ可読媒体(例えば、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)
- 複数の故障からRAIDシステムを保護する方法であって、該方法は、
複数のデータバンクコンピュータを含むシステムを提供することであって、各データバンクコンピュータは、他の複数のデータバンクコンピュータの各々および1つ以上のホストにネットワークを介して連結され、各データバンクは、分散型RAIDアプリケーションを実行する、ことと、
複数のデータバンク上に容量を確立することであって、該容量は、一組のセグメントを備え、該一組のセグメントは、該複数のデータバンク上に格納される、ことと、
該容量と併せて第1のRAIDレベルを実装することであって、該第1のRAIDレベルを実装することは、一組の冗長セグメントを格納することを含み、各冗長セグメントは、該一組のセグメントのうちの1つ以上に対応し、その結果、各冗長セグメントは、該一組のセグメントのうちの対応する1つ以上と同一のデータバンク上に存在しない、ことと、
該複数のデータバンク内に第2のRAIDレベルを実装することと
を包含し、第1のデータバンクに対して該第2のRAIDレベルを実装することは、該第1のデータバンク上に格納された該一組のセグメントに対して、
該第1のデータバンク上に該一組のセグメントのうちの1つ以上に関連するデータを格納することであって、その結果、該データは、該第1のデータバンク上の該一組のセグメントのうちの関連する1つ以上と同一のディスク上に存在しない、ことと、
該第1のデータバンク上に該一組の冗長セグメントのうちの1つ以上に関連するデータを格納することであって、その結果、該データセグメントは、該データバンク上の該一組の冗長セグメントのうちの関連する1つ以上と同一のディスク上に存在しない、ことと
を含む、方法。 - 前記容量の前記一組のセグメントの各々は、前記複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従ってデータバンクに割り当てられ、前記一組の冗長セグメントの各々は、該冗長セグメントに対応する前記1つ以上のセグメントのうちのいずれかに対応する、該複数のデータバンクの各々とは異なるデータバンクに割り当てられる、請求項1に記載の方法。
- 前記第1のコマンドが第1のセグメントに関連する書き込みコマンドであるかどうか、および該第1のコマンドが前記複数のデータバンクのうちの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第2のデータバンクは、前記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第1の冗長セグメントに対して該第1のコマンドを実行し、該第1のコマンドは、該第2のデータバンク上で実行される、請求項2に記載の方法。
- 前記第2のデータバンクを決定することは、該データバンクの前記順列および前記RAIDレベルを備えるグローバルテーブルにアクセスすることを含む、請求項3に記載の方法。
- 分散型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つ以上と同一のディスク上に存在しない、ことと
を行うように実行可能な命令を含む、システム。 - 前記容量の前記一組のセグメントの各々は、前記複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従ってデータバンクに割り当てられ、前記一組の冗長セグメントの各々は、該冗長セグメントに対応する前記1つ以上のセグメントのうちのいずれかに対応する、該複数のデータバンクの各々とは異なるデータバンクに割り当てられる、請求項5に記載のシステム。
- 前記第1のコマンドが第1のセグメントに関連する書き込みコマンドであるかどうか、および該第1のコマンドが前記複数のデータバンクのうちの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第2のデータバンクは、前記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第1の冗長セグメントに対して該第1のコマンドを実行し、該第1のコマンドは、該第2のデータバンク上で実行される、請求項6に記載のシステム。
- 前記第2のデータバンクを決定することは、該データバンクの前記順列および前記RAIDレベルを備えるグローバルテーブルにアクセスすることを含む、請求項7に記載のシステム。
- 分散型RAIDを実装するためのコンピュータ実行可能命令を備える、コンピュータ読み取り可能媒体であって、該コンピュータ命令は、
複数のデータバンク上に容量を確立するために実行可能であって、該容量は、一組のセグメントを備え、該一組のセグメントは、該複数のデータバンク上に格納され、
該容量と併せて第1のRAIDレベルを実装するために実行可能であって、該第1のRAIDレベルを実装することは、一組の冗長セグメントを格納することを含み、各冗長セグメントは、該一組のセグメントのうちの1つ以上に対応し、その結果、各冗長セグメントは、該一組のセグメントのうちの対応する1つ以上と同一のデータバンク上に存在せず、
該複数のデータバンク内に第2のRAIDレベルを実装することと
を包含し、第1のデータバンクに対して該第2のRAIDレベルを実装することは、該第1のデータバンク上に格納された該一組のセグメントに対して、
該第1のデータバンク上に該一組のセグメントのうちの1つ以上に関連するデータを格納することであって、その結果、該データは、該第1のデータバンク上の該一組のセグメントのうちの関連する1つ以上と同一のディスク上に存在しない、ことと、
該第1のデータバンク上に該一組の冗長セグメントのうちの1つ以上に関連するデータを格納することであって、その結果、該データセグメントは、該データバンク上の該一組の冗長セグメントのうちの関連する1つ以上と同一のディスク上に存在しない、ことと
を行うように実行可能である、コンピュータ読み取り可能媒体。 - 前記容量の前記一組のセグメントの各々は、前記複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従ってデータバンクに割り当てられ、前記一組の冗長セグメントの各々は、該冗長セグメントに対応する前記1つ以上のセグメントのうちのいずれかに対応する、該複数のデータバンクの各々とは異なるデータバンクに割り当てられる、請求項9に記載のコンピュータ読み取り可能媒体。
- 前記第1のコマンドが第1のセグメントに関連する書き込みコマンドであるかどうか、および該第1のコマンドが前記複数のデータバンクのうちの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第2のデータバンクは、前記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第1の冗長セグメントに対して該第1のコマンドを実行し、該第1のコマンドは、該第2のデータバンク上で実行される、請求項10に記載のコンピュータ読み取り可能媒体。
- 前記第2のデータバンクを決定することは、該データバンクの前記順列および前記RAIDレベルを備えるグローバルテーブルにアクセスすることを含む、請求項11に記載のコンピュータ読み取り可能媒体。
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)
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)
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)
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)
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 |
-
2009
- 2009-06-05 US US12/479,319 patent/US8090909B2/en active Active
- 2009-06-05 WO PCT/US2009/046470 patent/WO2009149386A1/en active Application Filing
- 2009-06-05 EP EP09759544.1A patent/EP2304568B1/en active Active
- 2009-06-05 KR KR1020107029904A patent/KR20110031441A/ko not_active Application Discontinuation
- 2009-06-05 WO PCT/US2009/046471 patent/WO2010011428A1/en active Application Filing
- 2009-06-05 US US12/479,403 patent/US8086797B2/en active Active
- 2009-06-05 US US12/479,434 patent/US8082393B2/en active Active
- 2009-06-05 CN CN2009801275899A patent/CN102099792A/zh active Pending
- 2009-06-05 US US12/479,377 patent/US8145841B2/en active Active
- 2009-06-05 EP EP13167831.0A patent/EP2645251A1/en not_active Withdrawn
- 2009-06-05 US US12/479,394 patent/US8127076B2/en active Active
- 2009-06-05 DK DK09759544.1T patent/DK2304568T3/da active
- 2009-06-05 JP JP2011512708A patent/JP2011523144A/ja active Pending
- 2009-06-05 WO PCT/US2009/046473 patent/WO2009149388A1/en active Application Filing
- 2009-06-05 US US12/479,360 patent/US8239624B2/en active Active
-
2010
- 2010-11-25 IL IL209571A patent/IL209571A/en active IP Right Grant
-
2011
- 2011-05-12 JP JP2011107699A patent/JP2011165212A/ja active Pending
- 2011-08-30 HK HK11109154.0A patent/HK1154969A1/xx unknown
- 2011-09-02 US US13/224,936 patent/US8140753B2/en active Active
- 2011-11-08 US US13/291,309 patent/US8261017B2/en active Active
- 2011-11-08 US US13/291,311 patent/US8271727B2/en active Active
- 2011-11-09 US US13/292,388 patent/US8255625B2/en active Active
-
2012
- 2012-01-25 US US13/358,306 patent/US8316180B2/en active Active
- 2012-02-03 US US13/366,069 patent/US8316181B2/en active Active
- 2012-07-06 US US13/543,561 patent/US8621147B2/en active Active
- 2012-07-06 US US13/543,565 patent/US9465560B2/en active Active
-
2013
- 2013-09-16 US US14/028,286 patent/US9146695B2/en active Active
-
2015
- 2015-08-20 US US14/831,601 patent/US9535632B2/en active Active
Patent Citations (7)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015207289A (ja) * | 2014-04-21 | 2015-11-19 | 三星電子株式会社Samsung Electronics Co.,Ltd. | ストレージシステム及びストレージコントローラの動作方法 |
Also Published As
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 |