JP2011527047A - 分散型raidと関連するアプリケーションの実行のための方法およびシステム - Google Patents

分散型raidと関連するアプリケーションの実行のための方法およびシステム Download PDF

Info

Publication number
JP2011527047A
JP2011527047A JP2011516637A JP2011516637A JP2011527047A JP 2011527047 A JP2011527047 A JP 2011527047A JP 2011516637 A JP2011516637 A JP 2011516637A JP 2011516637 A JP2011516637 A JP 2011516637A JP 2011527047 A JP2011527047 A JP 2011527047A
Authority
JP
Japan
Prior art keywords
data
segment
data bank
command
banks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2011516637A
Other languages
English (en)
Inventor
ウィリアム シー. ギャロウェイ,
ライアン エー. カリソン,
Original Assignee
ピボット3
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ピボット3 filed Critical ピボット3
Publication of JP2011527047A publication Critical patent/JP2011527047A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1084Degraded mode, e.g. caused by single or multiple storage removals or disk failures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2035Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity

Abstract

分散型RAIDシステムを利用し得る種々のアプリケーション(または他の種類のアプリケーション)が、その分散型RAIDシステムを実装する同一の一連のコンピューティングデバイス上で実行されることを可能にする、システムおよび方法を開示する。より具体的には、特定の実施形態では、仮想化層が、データバンク上で実行され得る。一式の所望のアプリケーションプログラムが、この仮想化層を使用して実行されてもよく、仮想化層上で実行するアプリケーションの各インスタンスのコンテキストは、分散型RAIDシステムを利用して保持される容量内に格納され得る。

Description

(技術分野)
本発明は、概して、ストレージデバイスの使用に関する。より具体的には、本発明の実施形態は、ストレージデバイス上でRAIDを実装すること、このRAID機能性を利用し得るアプリケーションを実装することに関する。さらにより具体的には、本発明の特定の実施形態は、分散型RAIDおよび1つ以上のアプリケーションを、同一の一連のコンピューティングデバイス上に実装することに関する。
(背景)
データは、多くの実体にとっての有用な資産を表す。その結果、不慮であるか悪意のある行為によって引き起こされるものかにかかわらず、データ損失は、労働力の浪費、顧客からの信頼の喪失、時間の損失、および潜在的な法的責任の観点から、費用のかかるものとなり得る。商業上、法律上、または他の目的のためのデータの適切な保護を確実なものにするために、多くの実体は、データストレージ、冗長性、セキュリティ等を含む、種々の技術を使用して、そのデータを保護することを望み得る。しかしながら、これらの技術は、他の競合する制約、あるいはこのデータを処理もしくは格納するために使用されるコンピューティングデバイスの状態または設定によって課される要件と矛盾し得る。
これらの対立に対処するための一方法は、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システムを利用して保持される容量内に格納され得る。これらの仮想マシン(例えば、容量内に格納されるアプリケーションおよび任意の適用可能なコンテキスト情報)は、データバンクのうちのいずれか1つの上で、仮想化層と併せて実行され得る。このように、一連のコンピューティングデバイスは、分散型RAIDシステムを実装し、(特に)そのような分散型RAIDシステムを利用するアプリケーションを実行するために利用され得る。これらの種類のアプリケーションには、例えば、ビデオ監視アプリケーション、ゲーム、小売店または銀行取引アプリケーション、ビデオストリーミングアプリケーション、コンテンツホスティングアプリケーション等が挙げられる。
分散型RAIDシステムを実装するコンピューティングデバイスと併せて、これらのアプリケーションを実行することによって、数多くの利点が達成され得る。何よりもまず、より少ない空間、電力、冷却、予備等が必要とされ得るため、物理資源の統合が達成され、物理資源、ならびにそのような資源をインストールする、設定する、利用する、および維持するために要求される資源の両方に関連する費用が削減され得る。さらに、アプリケーションおよび分散型RAIDシステムの使用と併せて実施される通信が、より少ない場合がある、またはより迅速に実施され得るため、アプリケーションおよび分散型RAIDシステムの両方の実装において、より速い速度が達成され得る。
加えて、本願の残りの部分を検討した後により詳細が明らかとなるように、アプリケーションのインスタンスが仮想マシンとして保存され、分散型RAIDシステムを実装するデータバンク上の仮想化層上で実行される設定によって、耐障害性のレベルが導入され得る。簡潔に、この耐障害性のレベルは、各仮想マシン(例えば、仮想化層上で実行され得る、実行しているアプリケーションのインスタンス)が、分散型RAIDシステムの容量内に格納されるということは、仮想マシンが、データバンクのうちの1つの破損の場合に回復され得ることを意味し得るという事実からもたらされ得る。加えて、仮想マシンが、任意のデータバンクの仮想化層上で実行され得るため、耐障害性が導入されてもよく、したがって、単一のデータバンクが破損する場合にさえ、各仮想マシンは、依然として実行され得る。
本発明のこれらおよび他の態様は、以下の説明ならびに添付の図面と併せて熟考される時、より認識され、理解されるであろう。以下の説明は、本発明の種々の実施形態およびそれらの多数の具体的な詳細を示すが、制限としてではなく、例として与えられる。本発明の範囲内で、多くの置換、修正、追加、または再配設が行われてもよく、本発明は、すべてのそのような置換、修正、追加、または再配設を含む。
添付され、かつ本明細書の一部を構成する図面は、本発明の特定の態様を描写するために含まれている。本発明のより明確な効果、ならびに本発明に提供されるシステムの構成要素および動作は、同一の参照番号が同一の構成要素を指定する図面に図示される、例示であり、したがって、非制限的な実施形態を参照することによって、より容易に明らかとなるであろう。図面に図示される特徴は、必ずしも一定の縮尺で描写されているわけではないことに留意されたい。
図1は、分散型RAIDシステムを採用する、アーキテクチャの一実施形態のブロック図である。 図2Aは、データバンクの一実施形態のブロック図である。 図2Bは、データバンクのアーキテクチャの一実施形態のブロック図である。 図3は、データバンクの一実施形態のブロック図である。 図4Aは、データバンクのアーキテクチャの一実施形態の実施例のブロック図である。 図4Bは、データバンクのアーキテクチャの一実施形態の実施例のブロック図である。 図4Cは、データバンクのアーキテクチャの一実施形態の実施例のブロック図である。 図5は、上で他のアプリケーションが実行され得る、分散型RAIDシステムを採用する、アーキテクチャの一実施形態のブロック図である。 図6は、分散型RAIDシステム上でのアプリケーションの実行の一実施形態のフローチャートである。 図7は、分散型RAIDシステムと併せた仮想マシンの格納の一実施形態を描写する、ブロック図である。
本発明および種々の特徴ならびにそれらの有利な詳細は、添付の図面に図示される非制限的な実施形態を参照してより完全に説明され、以下の説明に詳細に記述される。本発明の詳細を不必要に不明瞭にしないように、周知の開始材料、処理技術、構成要素、および機器の説明は、省略されている。しかしながら、発明を実施するための形態および具体的な実施例は、本発明の好ましい実施形態を示すが、制限としてではなく、例としてのみ与えられていることを理解されたい。本開示から、根本的な発明の概念の趣旨および/または範囲内の種々の置換、修正、追加、および/または再配列が当業者に明らかとなるであろう。本明細書に記載される実施形態は、コンピュータ読み取り可能媒体(例えば、HD)、ハードウェア回路等、または任意の組み合わせ上に存在し得る、好適なコンピュータ実行可能命令に実装することができる。
具体的な実施形態を記載する前に、特定の実施形態を実装するためのハードウェアアーキテクチャの実施形態を本明細書に説明する。一実施形態は、ネットワークに通信可能に連結される、1つ以上のコンピュータを含むことができる。当業者に公知であるように、コンピュータは、中央演算処理装置(「CPU」)と、少なくとも1つの読み込み専用メモリ(「ROM」)と、少なくとも1つのランダムアクセスメモリ(「RAM」)と、少なくとも1つのハードドライブ(「HD」)と、1つ以上の入力/出力(「I/O」)デバイスとを含むことができる。I/Oデバイスには、キーボード、モニタ、プリンタ、電子指示デバイス(マウス、トラックボール、スタイリスト等)等を含むことができる。種々の実施形態では、コンピュータは、ネットワーク上の少なくとも1つのデータベースへのアクセスを有する。
ROM、RAM、およびHDは、CPUが実行可能なコンピュータ実行可能命令を格納するためのコンピュータメモリである。本開示内では、「コンピュータ読み取り可能媒体」という用語は、ROM、RAM、およびHDのみに制限されず、プロセッサが読み込むことができる任意の種類のデータストレージ媒体を含むことができる。いくつかの実施形態では、コンピュータ読み取り可能媒体は、データカートリッジ、データバックアップ磁気テープ、フロッピー(登録商標)ディスク、フラッシュメモリドライブ、光学データストレージドライブ、CD−ROM、ROM、RAM、HD等を指し得る。
本明細書に記載される機能性またはプロセスの少なくとも部分は、好適なコンピュータ実行可能命令に実装することができる。コンピュータ実行可能命令は、ソフトウェアコード構成要素またはモジュールとして、1つ以上のコンピュータ読み取り可能媒体(非揮発性メモリ、揮発性メモリ、DASDアレイ、磁気テープ、フロッピー(登録商標)ディスク、ハードドライブ、光学ストレージデバイス等、または任意の他の好適なコンピュータ読み取り可能媒体もしくはストレージデバイス等)上に格納され得る。一実施形態では、コンピュータ実行可能命令は、コンパイルされたC++、Java(登録商標)、HTML、または任意の他のプログラミングもしくはスクリプトコードのラインに含まれ得る。
さらに、開示される実施形態の機能は、1つのコンピュータ上に実装されてもよく、またはネットワーク内の、もしくはネットワークにわたる2つ以上のコンピュータ間で共有/分散され得る。実施形態を実装するコンピュータ間での通信は、任意の電子、光学、高周波信号、または公知のネットワークプロトコルに従う、通信の他の好適な方法およびツールを使用して達成することができる。
本明細書で使用される場合、「備える(comprises)」、「備える(comprising)」、「含む(includes)、「含む(including)」、「有する(has)」、「有する(having)」という用語、またはこれらの任意の他の変形は、非排他的な含有を網羅することが意図される。例えば、プロセス(a process)、プロセス(process)、物品、または要素のリストを備える装置は、必ずしもこれらの要素に制限されず、明確にリストされていない、またはそのようなプロセス、物品、もしくは装置に内在する、他の要素を含み得る。さらに、そうではないと明確に述べられていない限り、「または」は、排他的な「または」ではなく、包括的な「または」を指す。例えば、条件AまたはBは、以下の、Aが真(または存在する)かつBが偽(または存在しない)、Aが偽(または存在しない)かつBが真(または存在する)、ならびにAおよびBの両方が真(または存在する)のいずれか1つによって満足される。
さらに、本明細書に与えられる任意の実施例または図解は、決して、それらと共に利用される、いかなる用語に対する制約としても、制限としても、またはいかなる用語の定義を表現するとも見なされない。代わりに、これらの実施例または図解は、1つの特定の実施形態に関して説明しており、一例にすぎないと見なされる。当業者は、これらの実施例または図解と共に利用される、いかなる用語も、それと共に、または明細書の他の場所に与えられている場合も与えられていない場合もある、他の実施形態を包含し、すべてのそのような実施形態は、その用語の範囲内に含まれることが意図されることを認識するであろう。そのような非制限的な実施例および図解を指定する言語には、「例えば(例えば)、「例として(for instance)」、「例えば(e.g.)」、「一実施形態では」を含むが、これらに限定されない。
本願は、2009年6月5日にGallowayらによって出願された、名称が「Method and System for Rebuilding Data in a Distributed RAID System」の米国特許出願第12/479,319号、2009年6月5日にGallowayらによって出願された、名称が「Method and System for Data Migration in a Distributed RAID Implementation」の同第12/479,360号、2009年6月5日にGallowayらによって出願された、名称が「Method and System for Distributing Commands to Targets」の同第12/479,403号、2009年6月5日にGallowayらによって出願された、名称が「Method and System for Initializing Storage in a Storage System」の同第12/479,377号、2009年6月5日にGallowayらによって出願された、名称が「Method and System for Rebuilding Data in a Distributed RAID System」の同第12/479,434号、および2009年6月5日にGallowayらによって出願された、名称が「Method and System for Placement of Data on a Storage Device」の同第12/479,394号、ならびにGallowayによる、名称が「Method and System for Protecting Against Multiple Failures in a RAID System」の第__________(PIVOT1170−1)号に関し、これらのすべては、参照によって本明細書に完全に援用される。
ここで、特に、データストレージに関する文脈の要約記述が有用であり得る。上述されるように、RAIDシステムは、信頼性を向上し、場合によっては、コンピューティングデバイス(ホストとして公知)の処理量を改善するために、ストレージにこれらのRAIDシステムを使用して、集合的にアレイと称される、複数のハードディスクドライブ(または他の種類のストレージ媒体)にわたって、データを分割および複製する。しかしながら、RAIDの現行の実装は、種々の問題を有する場合がある。
特に、特定のこれらの問題は、多くの場合において、RAIDシステムとのすべての通信は、RAIDシステムを制御し、管理する、単一のサーバにアドレス指定されなければならない等、これらのRAIDシステムのアーキテクチャによって課される制限から生じる場合がある。このアーキテクチャは、RAIDシステムおよびRAIDシステムを実装するために使用されるコンピューティングデバイスを利用するホストを備える、物理的構成要素の冗長性をもたらし得る。物理的構成要素の冗長性に加えて、ホストおよびRAIDシステムはまた、動作中に、同一の資源の多くを消費し得る。ホストおよびRAIDシステムの両方が、電力、冷却、ラックスペース等を要求し得る。この状況は、ハードウェアの出費の増加、通信ボトルネック、ホストおよびRAIDシステムの両方を含有するための膨大な物理的空間の必要性等を含む、数多くの望ましくない問題を引き起こす可能性がある。
特定のRAIDシステムに関して、本発明の特定の実施形態を図示することが有用であるが、しかしながら、特定の実施形態が図示される特定のRAIDシステムは、本発明の他の実施形態の適用性または使用に制限を課さず、そのような実施形態は、他の種類のRAIDシステムまたは他の種類のストレージシステム全体を含む、種々の状況のいずれにも有用に採用され得ることに留意されたい。
これを前提として、特定の実施形態は、分散型RAIDシステムに関して有用に図示されてもよく、関連RAIDレベルを伴う容量は、分散型RAIDシステムを使用して作成され得る。次いで、分散型RAIDアプリケーションのそれぞれは、その容量またはその容量と併せた所望のRAIDレベルの実装に関連付けられるデータが、分散型RAIDシステムの複数のデータバンク上に格納され得るように、その容量のデータに関連付けられるここで、図1を参照すると、分散型RAIDシステムの一実施形態を利用するシステムのためのアーキテクチャのブロック図が描かれる。分散型RAIDシステム100は、一連のデータバンク110を含み、各データバンク110は、スイッチ120の両方に通信可能に結合される。スイッチ120の各々は、また、各ホスト102に通信可能に結合され、その結果、ホスト102は、特定のデータバンク110と対応する一連の経路を介して各データバンク110と通信し得、各経路は、スイッチ120のうちの1つを含む。
ここで、図1を参照すると、分散型RAIDシステムの一実施形態を利用するシステムのためのアーキテクチャのブロック図が描かれる。分散型RAIDシステム100は、一連のデータバンク110を含み、各データバンク110は、スイッチ120の両方に通信可能に結合される。スイッチ120の各々は、また、各ホスト102に通信可能に結合され、その結果、ホスト102は、特定のデータバンク110と対応する一連の経路を介して各データバンク110と通信し得、各経路は、スイッチ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と通信し得るような、いくつかの他の種類のネットワークインターフェースであり得る。
いくつかの実施形態では、データバンク110を実装するために使用される、コンピューティングデバイスの構成要素は、分散型RAIDアプリケーション210を実行するのに必要とされ得るより多くの演算能力を有し得る(または、有するように構築され得る)場合もある。多くの場合、したがって、データバンク110を実装するために使用されるコンピューティングデバイス(例えば、プロセッサ、キャッシュ、メモリ、基板等)は、分散型RAIDアプリケーション210のみを実行するために使用される時、未利用演算能力を有し得る。したがって、この余剰演算能力を、ホスト102上で実行するアプリケーションを実行するため、および分散型RAIDアプリケーション210を利用するために利用することが望まれる。これには、問題があり得るが、しかしながら、多くの場合、異なるホスト102上で実行する、多種多様なこれらのアプリケーションが存在し得、ホストのそれぞれは、異なるオペレーティングシステムを実行し得るため、アプリケーションは、1種類のオペレーティングシステム上でのみ実行するように構成され得る等である。
したがって、今、分散型RAIDシステム(または他の種類のアプリケーション)を利用し得る種々のアプリケーションが、その分散型RAIDシステムを実装する同一の一連のコンピューティングデバイス上で実行されることを可能にする、本発明のシステムおよび方法が注目される。分散型RAIDアプリケーションが、同一の一連のコンピューティングデバイス上の他のアプリケーションと併せて実行されることを可能にするために、仮想化層が、データバンク上で実行され得る。一式の所望のアプリケーションプログラムは、この仮想化層を使用して実行されてもよく、仮想化層上で実行するアプリケーションの各インスタンスのコンテキストは、分散型RAIDシステムを利用して保持される要領内に格納され得る。次いで、これらの仮想マシン(例えば、アプリケーションおよび容量内に格納される任意の適用可能なコンテキスト情報)は、データバンクのうちのいずれか1つの上の仮想化層と併せて実行され得る。このように、一連のコンピューティングデバイスは、分散型RAIDシステムを実装し、(特に)そのような分散型RAIDシステムを利用するアプリケーションを実行するために利用され得る。これらの種類のアプリケーションには、例えば、ビデオ監視アプリケーション、ゲーム、小売店または銀行取引アプリケーション、ビデオストリーミングアプリケーション、コンテンツホスティングアプリケーション等が挙げられる。
分散型RAIDシステムを実装するコンピューティングデバイスと併せて、何よりもまず、より少ない空間、電力、冷却、予備等が必要とされ得るため、物理資源の統合が達成され、物理資源、ならびにそのような資源をインストールする、設定する、利用する、および維持するために要求される資源の両方に関連付けられる費用が削減され得る。さらに、アプリケーションおよび分散型RAIDシステムの使用と併せて実施される通信が、より少ない場合がある、またはより迅速に実施され得るため、アプリケーションおよび分散型RAIDシステムの両方の実装において、より速い速度が達成され得る。
加えて、本願の残りの部分を検討した後により詳細が明らかとなるように、アプリケーションのインスタンスが仮想マシンとして保存され、分散型RAIDシステムを実装するデータバンク上の仮想化層上で実行される設定によって、耐障害性のレベルが導入され得る。簡潔に、この耐障害性のレベルは、各仮想マシン(例えば、仮想化層上で実行され得る、実行しているアプリケーションのインスタンス)が、分散型RAIDシステムの容量内に格納されるということは、仮想マシンが、データバンクのうちの1つの破損の場合に回復され得ることを意味し得るという事実からもたらされ得る。加えて、仮想マシンが、任意のデータバンクの仮想化層上で実行され得るため、耐障害性が導入されてもよく、したがって、単一のデータバンクが破損する場合にさえ、各仮想マシンは、依然として実行され得る。
ここで、図3を参照すると、分散型RAIDシステムを実装し、種々のアプリケーションの実行を可能にし得る、データバンクの一実施形態が描写されている。ここで、データバンク1110は、データストア350と、コンピュータ読み取り可能媒体上に格納される命令を実行するように動作可能なプロセッサ(図示せず)または他のハードウェアとを備える。このハードウェアは、例えば、x86プラットフォーム等であり得る。
コンピュータ読み取り可能媒体上に格納される命令は、仮想化層312および分散型RAIDアプリケーション310を実装するように動作可能であり得る。仮想化層312は、当該技術分野において公知であるように、例えば、Sun MicrosystemsのContainers、Linux KVM、Linux VServer、Oracle VM、Virtual PC、MicrosoftのVirtual Server、Sun MicrosystemsのIBM Logical DomainsのPowerVM、VMware Serve等、または任意の他の種類の仮想マシンもしくはエミュレーションマシンアプリケーションのうちの1つであり得る。分散型RAIDアプリケーション310は、上述されるものと同様の機能性を有し得る。これらの1つ以上の実装を助長するために、メモリ330内のテーブル340が、分散型RAIDシステムによって格納されるどの容量が仮想マシンであるか、およびどのデータバンク110が特定の仮想マシンに割り振られているか等の情報を追跡し得るようにする。
図4A、図4B、および図4Cを簡単に参照すると、仮想化層を伴うデータバンク1010のアーキテクチャの3つの実施形態が描写されている。そのようなアーキテクチャの他の実施形態が可能であり、利用され得ることに留意されたい。図4Aでは、仮想化層312は、分散型RAIDアプリケーション310および仮想マシン430(アプリケーションおよびそれらの対応するコンテキスト)が、仮想化層312上で実行され得るように、ハードウェア層402上に存在し得る。図4Bは、分散型RAIDアプリケーション310および仮想マシン430(アプリケーションおよびそれらの対応するコンテキスト)が、仮想化層312上で実行され得るように、オペレーティングシステム420(例えば、Windows(登録商標)、Solaris、MacOS等)が、オペレーティングシステム420上で実行する仮想化層312を伴うハードウェア層402上で実行され得る、実施形態を描写する。図4Cは、オペレーティングシステム420が、ハードウェア層402上で実行され得る、実施形態を描写する。分散型RAIDアプリケーション310および仮想化層312は、オペレーティングシステム420上で実行され得る。したがって、仮想マシン430は、仮想化層312上で実行され得る。
したがって、一連のデータバンク1110を使用して分散型RAIDシステムを実装し、同一のデータバンク1110の1つ以上の上のこの分散型RAIDシステムを利用し得る、1つ以上のアプリケーションを実行するように動作可能であり得る、システムの一実施形態が、図5に描写されている。
図6に移動すると、分散型RAIDアプリケーション310もまた実行している、データバンク1110上の1つ以上のアプリケーションを実行するための方法の一実施形態が描写されている。ステップ610で、アプリケーションは、データバンク1110の仮想化層312上で実行され得る。このインストレーションプロセスは、ステップ620で、仮想化層312によって実行される時に、特定のコンテキストと関連してアプリケーションを実行するように動作可能である、仮想マシンを作成し得る。より具体的には、一実施形態では、容量は、分散型RAIDアプリケーション310を使用して作成されてもよく、アプリケーションは、そのアプリケーションの実行からもたらされるコンテキストと共に、特定の時間、仮想化層312上のその容量内に格納され得る。
これは、どのように仮想マシン430のそれぞれがデータバンク1110のそれぞれのデータストア350内に格納される容量となり得るかを描写する、図7により明確に描写される。仮想マシンのそれぞれは、対応するコンテキストを伴うアプリケーションを起動するために、仮想マシン430が仮想化層312上で実行され得るように、アプリケーションの1つのインストールされたインスタンスおよび関連コンテキストに対応し得る。
図6に戻り、いったんアプリケーションがインストールされ、仮想マシンが作成されると、一実施形態では、ステップ630で、アプリケーションのインスタンスを備える仮想マシンは、特定のデータバンク1110上で実行するように割り振られてもよく、したがって、仮想マシンは、ステップ640で、割り振られたデータバンク1110の仮想化層312上で実行し得る。
何らかの理由のために、この仮想マシンの実行を停止することが望まれる場合は、どの時点であっても、仮想マシンは、仮想マシンの実行が、仮想マシンが割り振られている特定のデータバンク1110によって、同一の点から後に再開され得るように格納され得る。この格納は、必要に応じて、仮想マシン(仮想マシンに対応する容量)内にコンテキストを格納することを伴い得る。
各仮想マシン430が分散型RAIDシステムを備えるデータバンク1110にわたって格納される際、仮想マシンが割り振られているデータバンク1110は、各仮想マシンにアクセスし、実行し得ることが留意されるであろう。加えて、その仮想マシンが、分散型RAIDアプリケーション310に関連付けられる容量内に格納され得るため、RAIDのレベルは、その仮想マシンの格納と併せて実装され得ることが留意されるであろう。結果として、前述されるように、分散型RAIDアプリケーション310によって管理される容量として格納される仮想マシンを使用して、データバンク1110上でアプリケーションを実行することによって、分散型RAIDシステムのアーキテクチャによって、耐障害性が潜在的に達成され得る。
より具体的には、一実施形態では、各データバンク1110は、任意の仮想マシンにアクセスしてもよく、各仮想マシン430は、RAIDのレベルと併せて格納され得るため、特定のデータバンク1110が破損する場合にさえ、任意の仮想マシンに関連するすべてのデータが、残りの動作しているデータバンク1110によって、依然としてアクセス可能であり得るため、アプリケーションは、依然として実行されることが可能であり得る。事実、一実施形態では、特定のデータバンク1110が破損する場合、破損データバンク1110が検出されてもよく、破損データバンク110に割り振られた各VMは、破損データバンク1110上で実行していたすべてのVMが、今、別のデータバンク1100上で実行するように、別の動作可能なデータバンク1110に実質的に自動的に割り振られ得る。この割り振りは、不規則に行われてもよく、または、各データバンク1110に割り振られるVMの数等の1つ以上の基準に基づいて行われ得る。破損データバンク1110のVMを自動的に再度割り振ることによって、アプリケーションにあるレベルの耐障害性を与えることに加えて、中断時間が最小限になり得る。
前述の明細書では、本発明は、特定の実施形態を参照して記載されてきた。しかしながら、当業者は、以下の特許請求の範囲に説明される、本発明の範囲から逸脱することなく、種々の修正および変更を行うことができることを理解する。したがって、本明細書および図面は、制限的な意味というよりは、実例と見なされ、すべてのそのような修正は、本発明の範囲内に含まれることが意図される。
利益、他の利点、および問題の解決策は、特定の実施形態に関して説明されてきた。しかしながら、利益、利点、問題の解決策、および任意の利益、利点、または解決策をもたらし得る、もしくはより顕著にし得る任意の構成要素は、任意の、もしくはすべての請求項の決定的に重要である、要求される、または必須の特徴あるいは構成要素であるとは解釈されない。

Claims (24)

  1. 分散型RAIDを実装するためのシステムであって、
    複数のデータバンクコンピュータを備え、各データバンクは、各ホストおよび他の複数のデータバンクのそれぞれに連結され、各データバンクは、
    プロセッサと、
    データストアと、
    コンピュータ読み取り可能媒体と
    を含み、該コンピュータ読み取り可能媒体は、
    該データバンク上で第1のアプリケーションプログラムを実行するように実行可能な命令であって、該第1のアプリケーションプログラムは、第1の仮想マシンである、命令と、
    分散型RAIDアプリケーションを実装するように実行可能な命令と
    を含み、該分散型RAIDアプリケーションは、
    第1の容量の第1のセグメントに対応するコマンドを受信することであって、該コマンドは、該第1のアプリケーションプログラムによって発行され、該第1の容量および該第1の容量と関連して実装されるRAIDレベルに対応する冗長データは、該複数のデータバンクのそれぞれに格納されることによって、該第1の容量の各セグメントについて、該セグメントに関連付けられる該冗長データを備える対応する冗長セグメントが、該セグメントと同一のデータバンク上に存在しない、ことと、
    該複数のデータバンクの第1のデータバンクを決定することであって、該第1のデータバンクは、該第1のセグメントに対応する、ことと、
    該第1のデータバンクが該コマンドを受信したデータバンクである場合、該第1のセグメントに対する該第1のコマンドを実行し、該第1のデータバンクが該コマンドを受信したデータバンクでない場合、該第1のコマンドを該第1のデータバンクに転送することと
    を行うように動作可能である、システム。
  2. 前記アプリケーションプログラムを実行することは、前記データバンク上の仮想化層を用いて、前記第1の仮想マシンを実行することを含む、請求項1に記載のシステム。
  3. 前記第1の仮想マシンは、第2の容量に対応し、該第2の容量は、前記複数のデータバンクのそれぞれの上に格納される、請求項2に記載のシステム。
  4. 前記命令はさらに、
    前記複数のデータバンクのうちの破損データバンクを検出することと、
    該破損データバンクに割り振られた一連のVMを決定することと、
    該一連のVMを該複数のデータバンクのうちの別のデータバンクに再度割り振ることと
    を行うように実行可能である、請求項3に記載のシステム。
  5. 前記命令はさらに、前記第1のコマンドが書き込みコマンドであるかどうか、および該第1のコマンドが前記複数のデータバンクの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定するように実行可能であり、該第2のデータバンクは、前記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第2のデータバンクが前記コマンドを受信したデータバンクである場合、該第1の冗長セグメントに対して該前記第1のコマンドを実行し、該第2のデータバンクが該コマンドを受信したデータバンクでない場合、該第1のコマンドを該第2のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従って、前記複数のデータバンクのうちの1つに割り当てられ、該冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる前記容量のうちのいずれかのセグメントに対応する、該複数のデータバンクのそれぞれとは異なる、該複数のデータバンクのうちの1つに割り当てられる、請求項3に記載のシステム。
  6. プロセッサを有するコンピューティングデバイス上に、種々のアプリケーションプログラムと関連して実装される分散型RAIDのための方法であって、
    複数のデータバンク上に第1の容量を確立することであって、該第1の容量は、一連のセグメントを備え、該一連のセグメントは、該複数のデータバンク上に格納される、ことと、
    該複数のデータバンク上に第2の容量を確立することであって、該第2の容量は、仮想マシンとして格納されるアプリケーションプログラムに対応する、ことと、
    該複数のデータバンクのうちの少なくとも1つの上で、該アプリケーションプログラムを実行することと、
    該容量に関連してRAIDレベルを実装することであって、該RAIDレベルを実装するステップは、一連の冗長セグメントを格納することを含み、各冗長セグメントは、各冗長セグメントが、該一連のセグメントのうちの1つ以上のセグメントに対応することによって、各冗長セグメントが、該一連のセグメントのうちの1つ以上に対応するデータバンクと同一のデータバンク上に存在しない、ことと、
    該容量の該一連のセグメントの第1のセグメントに対応するコマンドを受信することであって、該コマンドは、該複数のデータバンクのうちの該少なくとも1つの上で実行する該アプリケーションプログラムから受信される、ことと、
    該複数のデータバンクの第1のデータバンクを決定することであって、該第1のデータバンクは、該第1のセグメントに対応する、ことと、
    該第1のセグメントに対する該第1のコマンドを実行することであって、該第1のコマンドは、該第1のデータバンク上で実行される、ことと
    を含む、方法。
  7. 前記アプリケーションプログラムを実行することは、前記複数のデータバンクのうちの前記少なくとも1つの上の仮想化層を使用して、前記仮想マシンを実行することを含む、請求項6に記載の方法。
  8. 前記第2の容量は、前記複数のデータバンクのそれぞれの上に格納される、請求項7に記載の方法。
  9. 前記複数のデータバンクのうちの破損データバンクを検出することと、
    該破損データバンクに割り振られた一連のVMを決定することと、
    該一連のVMを該複数のうちの別のデータバンクに再度割り振ることと
    をさらに含む、請求項8に記載の方法。
  10. 前記第1のコマンドが書き込みコマンドであるかどうか、および該第1のコマンドが前記複数のデータバンクの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第2のデータバンクは、前記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第2のデータバンクが前記コマンドを受信したデータバンクである場合、前記第1の冗長セグメントに対する該第1のコマンドを実行し、そうでない場合、該第1のコマンドを該第2のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従って、該複数のデータバンクのうちの1つに割り当てられ、前記冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる前記容量のうちのいずれかのセグメントに対応する、該複数のデータバンクのそれぞれとは異なる、該複数のデータバンクのうちの1つに割り当てられる、請求項9に記載の方法。
  11. アプリケーションプログラムと関連して1つ以上のデータバンクコンピュータに実装される分散型RAIDのための方法であって、
    アプリケーションプログラムから、第1の容量の第1のセグメントに対応するコマンドを受信することであって、該第1の容量および該容量と併せて実装されるRAIDレベルに対応する冗長データは、該容量の各セグメントについて、該セグメントに関連付けられる該冗長データを備える対応する冗長セグメントが、該セグメントと同一のデータバンク上に存在しないように、複数のデータバンクのそれぞれの上に格納され、該アプリケーションプログラムは、仮想マシンとして格納され、該複数のデータバンクのうちの少なくとも1つの上で実行される、ことと、
    該複数のデータバンクの第1のデータバンクを決定することであって、該第1のデータバンクは、該第1のセグメントに対応する、ことと、
    該第1のセグメントに対する該第1のコマンドを実行することであって
    該第1のコマンドは、該第1のデータバンク上で実行される、ことと
    を含む、方法。
  12. 前記アプリケーションプログラムを実行することは、前記データバンク上の仮想化層を使用して、前記仮想マシンを実行することを含む、請求項11に記載の方法。
  13. 前記アプリケーションプログラムを実行することは、前記データバンク上の仮想化層を使用して、前記仮想マシンを実行することを含む、請求項12に記載の方法。
  14. 前記複数のデータバンクのうちの破損データバンクを検出することと、
    前記破損データバンクに割り振られた一連のVMを決定することと、
    前記一連のVMを前記複数のデータバンクのうちの別のデータバンクに再度割り振ることと
    をさらに含む、請求項13に記載の方法。
  15. 前記第1のコマンドが書き込みコマンドであるかどうか、および該第1のコマンドが前記複数のデータバンクの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第2のデータバンクは、前記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第2のデータバンクが前記コマンドを受信した前記データバンクである場合、前記第1の冗長セグメントに対する該第1のコマンドを実行し、そうでない場合、該第1のコマンドを該第2のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従って、該複数のデータバンクのうちの1つに割り当てられ、前記冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる前記容量のうちのいずれかのセグメントに対応する該複数のデータバンクのそれぞれとは異なる、前記複数のデータバンクのうちの1つに割り当てられる、請求項14に記載の方法。
  16. 種々のアプリケーションプログラムと関連して分散型RAIDを実装するためのコンピュータ実行可能命令を備える、コンピュータ読み取り可能媒体であって、該コンピュータ命令は、
    複数のデータバンク上に第1の容量を確立することであって、該第1の容量は、一連のセグメントを備え、該一連のセグメントは、該複数のデータバンク上に格納される、ことと、
    該複数のデータバンク上に第2の容量を確立することであって、該第2の容量は、仮想マシンとして格納されるアプリケーションプログラムに対応する、ことと、
    該複数のデータバンクのうちの少なくとも1つの上で、該アプリケーションプログラムを実行することと、
    該容量と併せてRAIDレベルを実装することであって、該RAIDレベルを実装することは、一連の冗長セグメントを格納することを含み、各冗長セグメントは、各冗長セグメントが、該一連のセグメントのうちの対応する1つ以上と同一のデータバンク上に存在しないように、該一連のセグメントのうちの1つ以上に対応することと、
    該容量の該一連のセグメントの第1のセグメントに対応するコマンドを受信することであって、該コマンドは、該複数のデータバンクのうちの該少なくとも1つの上で実行する該アプリケーションプログラムから受信される、ことと、
    該複数のデータバンクの第1のデータバンクを決定することであって、該第1のデータバンクは、該第1のセグメントに対応する、ことと
    該第1のセグメントに対する該第1のコマンドを実行することであって、該第1のコマンドは、該第1のデータバンク上で実行される、ことと
    を行うように実行可能である、コンピュータ読み取り可能媒体。
  17. 前記アプリケーションプログラムを実行することは、前記複数のデータバンクのうちの前記少なくとも1つの上の仮想化層を使用して、前記仮想マシンを実行することを含む、請求項16に記載のコンピュータ読み取り可能媒体。
  18. 前記第2の容量は、前記複数のデータバンクのそれぞれの上に格納される、請求項17に記載のコンピュータ読み取り可能媒体。
  19. 前記命令はさらに、
    前記複数のデータバンクのうちの破損データバンクを検出することと、
    該破損データバンクに割り振られた一連のVMを決定することと、
    該一連のVMを該複数のデータバンクのうちの別のデータバンクに再度割り振ることと
    を行うように実行可能である、請求項18に記載のコンピュータ読み取り可能媒体。
  20. 前記命令はさらに、前記第1のコマンドが書き込みコマンドであるかどうか、および該第1のコマンドが前記複数のデータバンクの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定するように実行可能であり、該第2のデータバンクは、前記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第2のデータバンクが前記コマンドを受信したデータバンクである場合、該第1の冗長セグメントに対して前記第1のコマンドを実行し、そうでない場合、該第1のコマンドを前記第2のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従って、該複数のデータバンクのうちの1つに割り当てられ、前記冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる前記容量のうちのいずれかのセグメントに対応する、該複数のデータバンクのそれぞれとは異なる該複数のデータバンクのうちの1つに割り当てられる、請求項19に記載のコンピュータ読み取り可能媒体。
  21. アプリケーションプログラムと関連して1つ以上のデータバンクコンピュータに実装される、分散型RAIDのためのコンピュータ読み取り可能媒体であって、コンピュータ命令は、
    アプリケーションプログラムから、第1の容量の第1のセグメントに対応するコマンドを受信することであって、該第1の容量および該容量と併せて実装されるRAIDレベルに対応する冗長データは、該容量の各セグメントについて、そのセグメントに関連付けられる該冗長データを備える、対応する冗長セグメントが、該セグメントと同一のデータバンク上に存在しないように、複数のデータバンクのそれぞれの上に格納され、該アプリケーションプログラムは、仮想マシンとして格納され、該複数のデータバンクのうちの少なくとも1つの上で実行される、ことと
    該複数のデータバンクの第1のデータバンクを決定することであって、該第1のデータバンクは、該第1のセグメントに対応する、ことと
    該第1のセグメントに対する該第1のコマンドを実行することであって、該第1のコマンドは、該第1のデータバンク上で実行される、ことと
    を行うように実行可能である、コンピュータ読み取り可能媒体。
  22. 前記アプリケーションプログラムを実行することは、前記データバンク上の仮想化層を使用して、前記仮想マシンを実行することを含む、請求項21に記載のコンピュータ読み取り可能媒体。
  23. 前記アプリケーションプログラムを実行することは、前記データバンク上の仮想化層を使用して、前記仮想マシンを実行することを含む、請求項22に記載のコンピュータ読み取り可能媒体。
  24. 前記コンピュータ命令は、前記第1のコマンドが書き込みコマンドであるかどうか、および該第1のコマンドが前記複数のデータバンクの第2のデータバンクを決定する書き込みコマンドであるかどうかを決定するように実行可能であり、該第2のデータバンクは、前記第1のセグメントに関連付けられる第1の冗長セグメントに対応し、該第2のデータバンクが前記コマンドを受信した前記データバンクである場合、該第1の冗長セグメントに対する前記第1のコマンドを実行し、そうでない場合、該第1のコマンドを該第2のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの1つに対応し、各セグメントは、該複数のデータバンクの順列に従って、該複数のデータバンクのうちの1つに割り当てられ、前記冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる容量のうちのいずれかのセグメントに対応する該複数のデータバンクのそれぞれとは異なる該複数のデータバンクのうちの1つに割り当てられる、請求項23に記載のコンピュータ読み取り可能媒体。
JP2011516637A 2008-06-30 2009-06-25 分散型raidと関連するアプリケーションの実行のための方法およびシステム Pending JP2011527047A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13353408P 2008-06-30 2008-06-30
US61/133,534 2008-06-30
PCT/US2009/048570 WO2010002678A1 (en) 2008-06-30 2009-06-25 Method and system for execution of applications in conjunction with distributed raid

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011036454A Division JP2011154697A (ja) 2008-06-30 2011-02-22 Raidと関連するアプリケーションの実行のための方法およびシステム

Publications (1)

Publication Number Publication Date
JP2011527047A true JP2011527047A (ja) 2011-10-20

Family

ID=41448943

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011516637A Pending JP2011527047A (ja) 2008-06-30 2009-06-25 分散型raidと関連するアプリケーションの実行のための方法およびシステム
JP2011036454A Pending JP2011154697A (ja) 2008-06-30 2011-02-22 Raidと関連するアプリケーションの実行のための方法およびシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2011036454A Pending JP2011154697A (ja) 2008-06-30 2011-02-22 Raidと関連するアプリケーションの実行のための方法およびシステム

Country Status (7)

Country Link
US (3) US8219750B2 (ja)
EP (1) EP2313828A4 (ja)
JP (2) JP2011527047A (ja)
KR (2) KR20110044746A (ja)
CN (2) CN102077175A (ja)
IL (2) IL209992A0 (ja)
WO (1) WO2010002678A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8239624B2 (en) 2008-06-06 2012-08-07 Pivot3, Inc. Method and system for data migration in a 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
US8166478B2 (en) * 2009-04-28 2012-04-24 Lsi Corporation System and apparatus for utilizing a virtual machine to support redundancy in a virtual machine manager pair
US8484400B2 (en) * 2011-02-01 2013-07-09 Taejin Info Tech Co., Ltd. Raid-based storage control board
US8438324B2 (en) * 2011-02-01 2013-05-07 Taejin Info Tech Co., Ltd. RAID-based storage control board having fibre channel interface controller
US8527699B2 (en) 2011-04-25 2013-09-03 Pivot3, Inc. Method and system for distributed RAID implementation
JP5919529B2 (ja) * 2011-09-16 2016-05-18 パナソニックIpマネジメント株式会社 データ格納システム
CN103702057B (zh) * 2013-09-03 2017-04-12 成都竣泰科技有限公司 一种适应于多路并发写入流媒体数据的分块式存储算法
US20170031838A1 (en) * 2015-07-28 2017-02-02 Qualcomm Incorporated Method and apparatus for using context information to protect virtual machine security
US10838902B2 (en) * 2017-06-23 2020-11-17 Facebook, Inc. Apparatus, system, and method for performing hardware acceleration via expansion cards

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05334006A (ja) * 1992-06-04 1993-12-17 Mitsubishi Electric Corp 論理ボリュームシステム
JP2000076207A (ja) * 1998-08-28 2000-03-14 Nippon Telegr & Teleph Corp <Ntt> 分散記憶方法及び分散記憶システム及び分散記憶プログラムを記録した記録媒体
US20010044879A1 (en) * 2000-02-18 2001-11-22 Moulton Gregory Hagan System and method for distributed management of data storage
JP2002041305A (ja) * 2000-07-26 2002-02-08 Hitachi Ltd 仮想計算機システムにおける計算機資源の割当て方法および仮想計算機システム
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
JP2007510198A (ja) * 2003-10-08 2007-04-19 ユニシス コーポレーション ホストシステムのパーティション内に実装されているハイパーバイザを使用したコンピュータシステムの準仮想化
JP2008041093A (ja) * 2006-08-01 2008-02-21 Internatl Business Mach Corp <Ibm> 多数の論理パーティションにわたって仮想入力/出力操作を分散させるためのシステム及び方法
JP2008107896A (ja) * 2006-10-23 2008-05-08 Nec Corp 物理資源制御管理システム、物理資源制御管理方法および物理資源制御管理用プログラム

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US168018A (en) * 1875-09-21 Improvement in magneto-electric machines
US172335A (en) * 1876-01-18 Improvement in apparatus for the manufacture of gaseous liquids
US270680A (en) * 1883-01-16 Harness-buckle
JP3160106B2 (ja) 1991-12-23 2001-04-23 ヒュンダイ エレクトロニクス アメリカ ディスクアレーの区分け方法
JPH05324579A (ja) 1992-05-25 1993-12-07 Hitachi Ltd 分散ファイルシステム及び記憶装置
JPH07261945A (ja) 1994-03-17 1995-10-13 Hitachi Ltd ディスクアレイ装置およびディスクアレイの区分け方法
US6449730B2 (en) 1995-10-24 2002-09-10 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
AU4334099A (en) 1998-06-05 1999-12-20 Mylex Corporation Apparatus, system and method for n-way raid controller
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
US20020069317A1 (en) 2000-12-01 2002-06-06 Chow Yan Chiew E-RAID system 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
US6757790B2 (en) 2002-02-19 2004-06-29 Emc Corporation Distributed, scalable data storage facility with cache memory
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
EP1563411B1 (en) 2002-11-14 2013-06-19 EMC Corporation 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
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
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
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
US20060129559A1 (en) 2004-12-15 2006-06-15 Dell Products L.P. Concurrent access to RAID data in shared storage
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 株式会社日立製作所 ストレージ管理システム、ストレージ管理サーバ、データ再配置制御方法およびデータ再配置制御プログラム
US7617370B2 (en) 2005-04-29 2009-11-10 Netapp, Inc. Data allocation within a storage system architecture
US7904649B2 (en) 2005-04-29 2011-03-08 Netapp, Inc. System and method for restriping data across a plurality of volumes
JP2006331076A (ja) 2005-05-26 2006-12-07 Hitachi Ltd データ記憶システム及び記憶方法
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 株式会社日立製作所 計算機システム
JP5048760B2 (ja) 2006-05-24 2012-10-17 コンペレント・テクノロジーズ Raid管理、再割振り、およびリストライピングのためのシステムおよび方法
JP5244332B2 (ja) 2006-10-30 2013-07-24 株式会社日立製作所 情報システム、データ転送方法及びデータ保護方法
US8019940B2 (en) 2006-12-06 2011-09-13 Fusion-Io, Inc. Apparatus, system, and method for a front-end, distributed raid
US8706968B2 (en) * 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
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
US8239624B2 (en) 2008-06-06 2012-08-07 Pivot3, Inc. Method and system for data migration in a distributed RAID implementation
US8219750B2 (en) * 2008-06-30 2012-07-10 Pivot3 Method and system for execution of applications in conjunction with distributed RAID
US8176247B2 (en) * 2008-10-28 2012-05-08 Pivot3 Method and system for protecting against multiple failures in a RAID system
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US8527699B2 (en) * 2011-04-25 2013-09-03 Pivot3, Inc. Method and system for distributed RAID implementation

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05334006A (ja) * 1992-06-04 1993-12-17 Mitsubishi Electric Corp 論理ボリュームシステム
JP2000076207A (ja) * 1998-08-28 2000-03-14 Nippon Telegr & Teleph Corp <Ntt> 分散記憶方法及び分散記憶システム及び分散記憶プログラムを記録した記録媒体
US20010044879A1 (en) * 2000-02-18 2001-11-22 Moulton Gregory Hagan System and method for distributed management of data storage
JP2002041305A (ja) * 2000-07-26 2002-02-08 Hitachi Ltd 仮想計算機システムにおける計算機資源の割当て方法および仮想計算機システム
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
JP2007510198A (ja) * 2003-10-08 2007-04-19 ユニシス コーポレーション ホストシステムのパーティション内に実装されているハイパーバイザを使用したコンピュータシステムの準仮想化
JP2008041093A (ja) * 2006-08-01 2008-02-21 Internatl Business Mach Corp <Ibm> 多数の論理パーティションにわたって仮想入力/出力操作を分散させるためのシステム及び方法
JP2008107896A (ja) * 2006-10-23 2008-05-08 Nec Corp 物理資源制御管理システム、物理資源制御管理方法および物理資源制御管理用プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNJ200710044066; 加美伸治他: 'IT/NWシステムにおけるマルチレイヤー連携によるIn-service構成変更方式の検討' 電子情報通信学会2007年総合大会講演論文集 情報・システム1 , 20070307, 66ページ, 社団法人電子情報通信学会 *
JPN6013022289; 加美伸治他: 'IT/NWシステムにおけるマルチレイヤー連携によるIn-service構成変更方式の検討' 電子情報通信学会2007年総合大会講演論文集 情報・システム1 , 20070307, 66ページ, 社団法人電子情報通信学会 *

Also Published As

Publication number Publication date
IL209992A0 (en) 2011-02-28
KR20110048515A (ko) 2011-05-11
WO2010002678A1 (en) 2010-01-07
JP2011154697A (ja) 2011-08-11
US20110040936A1 (en) 2011-02-17
US9086821B2 (en) 2015-07-21
CN102077175A (zh) 2011-05-25
KR20110044746A (ko) 2011-04-29
IL209991A0 (en) 2011-02-28
EP2313828A4 (en) 2016-07-27
US8417888B2 (en) 2013-04-09
US8219750B2 (en) 2012-07-10
CN102176198A (zh) 2011-09-07
US20090327606A1 (en) 2009-12-31
EP2313828A1 (en) 2011-04-27
US20130219120A1 (en) 2013-08-22

Similar Documents

Publication Publication Date Title
JP2011527047A (ja) 分散型raidと関連するアプリケーションの実行のための方法およびシステム
US9798682B2 (en) Completion notification for a storage device
US9304878B2 (en) Providing multiple IO paths in a virtualized environment to support for high availability of virtual machines
US8166478B2 (en) System and apparatus for utilizing a virtual machine to support redundancy in a virtual machine manager pair
US8677064B2 (en) Virtual port mapped RAID volumes
US20170031699A1 (en) Multiprocessing Within a Storage Array System Executing Controller Firmware Designed for a Uniprocessor Environment
US8301848B2 (en) Virtualizing storage for WPAR clients using node port ID virtualization
JP5373893B2 (ja) 異なるサイズを有するデータのブロックを格納し、取り出すための構成
US8527699B2 (en) Method and system for distributed RAID implementation
US10346065B2 (en) Method for performing hot-swap of a storage device in a virtualization environment
US20100275203A1 (en) Storage management system and storage management method in virtualization environment
US20170109185A1 (en) Systems and methods for multi-root input/output virtualization-based management by single service processor
US10509662B1 (en) Virtual devices in a reliable distributed computing system
US11016795B2 (en) System and method for virtualizing hot-swappable PCIe devices for virtual machines
JP2013254354A (ja) コンピュータ装置及びソフトウェア管理方法及びプログラム
US20240118838A1 (en) Computer-readable recording medium having stored therein information processing program, information processing method, and information processing apparatus

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120425

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