(57)【要約】      （修正有）【課題】ＲＡＩＤを実装するためのシステムを提供する。【解決手段】ＲＡＩＤシステムを利用し得る種々のアプリケーション（または他の種類のアプリケーション）が、そのＲＡＩＤシステムを実装する同一の一連のコンピューティングデバイス上で実行されることを可能にする、システムおよび方法を開示する。より具体的には、仮想化層が、データバンク上で実行され得る。一式の所望のアプリケーションプログラムが、この仮想化層を使用して実行されてもよく、仮想化層上で実行するアプリケーションの各インスタンスのコンテキストは、ＲＡＩＤシステムを利用して保持される容量内に格納され得る。【選択図】図１
2011154697.tif 000002
【特許請求の範囲】
【請求項１】
ＲＡＩＤを実装するためのシステムであって、
一連のホストに結合されているコンピューティングデバイスを備え、該コンピューティングデバイスは、
プロセッサと、
データストアと、
複数の命令を含むコンピュータ読み取り可能媒体と
を備え、該複数の命令は、
該コンピューティングデバイス上でアプリケーションプログラムを実行することであって、該アプリケーションプログラムは、仮想マシンである、ことと、
該コンピューティングデバイスに関連するＲＡＩＤアプリケーションを実装することと
を行うように実行可能であり、該ＲＡＩＤアプリケーションは、
容量のセグメントに対応するコマンドを受信することであって、該コマンドは、該アプリケーションプログラムによって発行され、該容量および該容量に関連して実装されるＲＡＩＤレベルに対応する冗長データは、該コンピューティングデバイスと関連して格納される、ことと、
該コンピューティングデバイスに関連して格納された第１のセグメントに対して第１のコマンドを実行することと
を行うように動作可能である、システム。
【請求項２】
前記アプリケーションプログラムを実行することは、前記コンピューティングデバイス上の仮想化層を用いて、前記仮想マシンを実行することを含む、請求項１に記載のシステム。
【請求項３】
前記仮想マシンは、第２の容量に対応し、該第２の容量は、前記コンピューティングデバイスに関連して格納される、請求項２に記載のシステム。
【請求項４】
前記コンピューティング読み取り可能媒体は、ＲＡＩＤコントローラ上で実装される、請求項３に記載のシステム。
【請求項５】
前記ＲＡＩＤコントローラは、前記仮想マシンを管理するように動作可能である、請求項４に記載のシステム。
【請求項６】
プロセッサを有するコンピューティングデバイス上で種々のアプリケーションプログラムに関連して実装されるＲＡＩＤのための方法であって、該方法は、
コンピューティングデバイス上に第１の容量を確立することであって、該第１の容量は、一連のセグメントを含み、該一連のセグメントは、該コンピューティングデバイスに関連して格納される、ことと、
該コンピューティングデバイスに関連する第２の容量を確立することであって、該第２の容量は、仮想マシンとして格納されるアプリケーションプログラムに対応する、ことと、
該コンピューティングデバイス上で該アプリケーションプログラムを実行することと、
該容量に関連してＲＡＩＤレベルを実装することであって、該ＲＡＩＤレベルを実装することは、一連の冗長セグメントを格納することを含む、ことと、
該容量の一連のセグメントの第１のセグメントに対応するコマンドを受信することであって、該コマンドは、該コンピューティングデバイス上で実行する該アプリケーションプログラムから受信される、ことと、
該第１のセグメントに対して該第１のコマンドを実行することであって、該第１のコマンドは、該コンピューティングデバイス上で実行する、ことと
を含む、方法。
【請求項７】
前記アプリケーションプログラムを実行することは、前記コンピューティングデバイス上の仮想化層を用いて、前記仮想マシンを実行することを含む、請求項６に記載の方法。
【請求項８】
前記仮想マシンは、第２の容量に対応し、該第２の容量は、前記コンピューティングデバイスに関連して格納される、請求項７に記載の方法。
【請求項９】
前記方法は、ＲＡＩＤコントローラ上で実装される、請求項８に記載の方法。
【請求項１０】
前記ＲＡＩＤコントローラは、前記仮想マシンを管理するように動作可能である、請求項９に記載の方法。
【請求項１１】
種々のアプリケーションプログラムに関連してＲＡＩＤを実装するためのコンピュータ実行可能な命令を含むコンピュータ読み取り可能媒体であって、該コンピュータ命令は、
コンピューティングデバイス上に第１の容量を確立することであって、該第１の容量は、一連のセグメントを含み、該一連のセグメントは、該コンピューティングデバイス上に格納される、ことと、
該コンピューティングデバイス上に第２の容量を確立することであって、該第２の容量は、仮想マシンとして格納されるアプリケーションプログラムに対応する、ことと、
該コンピューティングデバイス上で該アプリケーションプログラムを実行することと、
該容量に関連してＲＡＩＤレベルを実装することであって、該ＲＡＩＤレベルを実装することは、一連の冗長セグメントを格納することを含む、ことと、
該容量の一連のセグメントの第１のセグメントに対応するコマンドを受信することであって、該コマンドは、該コンピューティングデバイス上で実行する該アプリケーションプログラムから受信される、ことと、
該コンピューティングデバイスに関連して格納される該第１のセグメントに対して該第１のコマンドを実行することと
を含む、コンピュータ読み取り可能媒体。
【請求項１２】
前記アプリケーションプログラムを実行することは、前記コンピューティングデバイス上の仮想化層を用いて、前記仮想マシンを実行することを含む、請求項１１に記載のコンピュータ読み取り可能媒体。
【請求項１３】
前記仮想マシンは、第２の容量に対応し、該第２の容量は、前記コンピューティングデバイスに関連して格納される、請求項１２に記載のコンピュータ読み取り可能媒体。
【請求項１４】
前記方法は、ＲＡＩＤコントローラ上で実装される、請求項１２に記載のコンピュータ読み取り可能媒体。
【請求項１５】
前記ＲＡＩＤコントローラは、前記仮想マシンを管理するように動作可能である、請求項１４に記載のコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（技術分野）
本発明は、概して、ストレージデバイスの使用に関する。より具体的には、本発明の実施形態は、ストレージデバイス上でＲＡＩＤを実装すること、このＲＡＩＤ機能性を利用し得るアプリケーションを実装することに関する。さらにより具体的には、本発明の特定の実施形態は、分散型ＲＡＩＤおよび１つ以上のアプリケーションを、同一の一連のコンピューティングデバイス上に実装することに関する。
【背景技術】
【０００２】
（背景）
データは、多くの実体にとっての有用な資産を表す。その結果、不慮であるか悪意のある行為によって引き起こされるものかにかかわらず、データ損失は、労働力の浪費、顧客からの信頼の喪失、時間の損失、および潜在的な法的責任の観点から、費用のかかるものとなり得る。商業上、法律上、または他の目的のためのデータの適切な保護を確実なものにするために、多くの実体は、データストレージ、冗長性、セキュリティ等を含む、種々の技術を使用して、そのデータを保護することを望み得る。しかしながら、これらの技術は、他の競合する制約、あるいはこのデータを処理もしくは格納するために使用されるコンピューティングデバイスの状態または設定によって課される要件と矛盾し得る。
【０００３】
これらの対立に対処するための一方法は、Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋ（ＲＡＩＤ）を実装することである。一般に、ＲＡＩＤシステムは、信頼性を高めるため、および場合によっては、ストレージにこれらのＲＡＩＤシステムを使用するコンピューティングデバイス（ホストとして公知）の処理量を改善するために、集合的にアレイと称される、複数のハードディスクドライブ（または他の種類のストレージ媒体）にわたって、データを分割および複製する。その結果、ＲＡＩＤアレイは、ホストに対して１つ以上のモノリシックストレージ領域のように見え得る。ホストがＲＡＩＤシステムと通信すること（読み込み、書き込み等）を要求するとき、ホストは、ＲＡＩＤアレイが単一ディスクであるかのように通信する。言い換えると、ＲＡＩＤシステムは、そのような通信と併せて特定のＲＡＩＤレベルを実装するように、これらの通信を処理する。これらのＲＡＩＤレベルは、信頼性、能力、速度等の種々のトレードオフ間のある所望のバランスを達成するように設計され得る。例えば、ＲＡＩＤ（レベル）０は、速度の改善をもたらすように、いくつかのディスクにわたってデータを分散し、ディスクの実質的に全容量を利用するが、ディスクが故障した場合、ディスク上のすべてのデータが損失され、ＲＡＩＤ（レベル）１は、それぞれが同一のデータを格納する、２つ（またはそれ以上）のディスクを使用するため、１つのディスクが生存している限り、データは損失されない。アレイの総容量は、実質的に、単一ディスクの容量であり、ＲＡＩＤ（レベル）５は、いずれか１つのディスクの損失からデータを保護するように３つ以上のディスクを組み合わせ、アレイのストレージ容量は、１つのディスク分だけ減少される。
【０００４】
多くの場合、現代のコンピューティングデバイスの演算能力を考えると、ＲＡＩＤシステムを利用するホストを実装するコンピューティングデバイスとＲＡＩＤシステム自体を実装するコンピューティングデバイスとの間に、ある程度の冗長性が存在し得る。物理的構成要素の冗長性に加えて、ホストおよびＲＡＩＤシステムはまた、動作中に、同一の資源の多くを消費し得る。両方が、電力、冷却、ラックスペース等を要求し得る。さらに、ホストおよびＲＡＩＤシステムは、個々のパスに沿って通信するため、ＲＡＩＤシステムを実装するために、特定のネットワーク構成要素および経路を利用する必要があり得る。この状況は、ハードウェアの出費の増加、通信ボトルネック、ホストおよびＲＡＩＤシステムの両方を含有するための膨大な物理的空間の必要性等を含む、数多くの望ましくない問題を引き起こす可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
結果として、これらの問題を改善することが望ましい。
【課題を解決するための手段】
【０００６】
種々のアプリケーションが、分散型ＲＡＩＤシステムを実装する同一の一連のコンピューティングデバイス上で実行されることを可能にする、システムおよび方法の実施形態を提示する。具体的には、一実施形態では、分散型ＲＡＩＤアプリケーションが、他のアプリケーションと併せて、同一の一連のコンピューティングデバイス上で実行されることを可能にするために、データバンク上で仮想化層が実行され得る。一式の所望のアプリケーションプログラムが、この仮想化層を使用して実行されてもよく、仮想化層上で実行するアプリケーションのコンテキストは、分散型ＲＡＩＤシステムを利用して保持される容量内に格納され得る。これらの仮想マシン（例えば、容量内に格納されるアプリケーションおよび任意の適用可能なコンテキスト情報）は、データバンクのうちのいずれか１つの上で、仮想化層と併せて実行され得る。このように、一連のコンピューティングデバイスは、分散型ＲＡＩＤシステムを実装し、（特に）そのような分散型ＲＡＩＤシステムを利用するアプリケーションを実行するために利用され得る。これらの種類のアプリケーションには、例えば、ビデオ監視アプリケーション、ゲーム、小売店または銀行取引アプリケーション、ビデオストリーミングアプリケーション、コンテンツホスティングアプリケーション等が挙げられる。
【０００７】
分散型ＲＡＩＤシステムを実装するコンピューティングデバイスと併せて、これらのアプリケーションを実行することによって、数多くの利点が達成され得る。何よりもまず、より少ない空間、電力、冷却、予備等が必要とされ得るため、物理資源の統合が達成され、物理資源、ならびにそのような資源をインストールする、設定する、利用する、および維持するために要求される資源の両方に関連する費用が削減され得る。さらに、アプリケーションおよび分散型ＲＡＩＤシステムの使用と併せて実施される通信が、より少ない場合がある、またはより迅速に実施され得るため、アプリケーションおよび分散型ＲＡＩＤシステムの両方の実装において、より速い速度が達成され得る。
【０００８】
加えて、本願の残りの部分を検討した後により詳細が明らかとなるように、アプリケーションのインスタンスが仮想マシンとして保存され、分散型ＲＡＩＤシステムを実装するデータバンク上の仮想化層上で実行される設定によって、耐障害性のレベルが導入され得る。簡潔に、この耐障害性のレベルは、各仮想マシン（例えば、仮想化層上で実行され得る、実行しているアプリケーションのインスタンス）が、分散型ＲＡＩＤシステムの容量内に格納されるということは、仮想マシンが、データバンクのうちの１つの破損の場合に回復され得ることを意味し得るという事実からもたらされ得る。加えて、仮想マシンが、任意のデータバンクの仮想化層上で実行され得るため、耐障害性が導入されてもよく、したがって、単一のデータバンクが破損する場合にさえ、各仮想マシンは、依然として実行され得る。
【０００９】
本発明のこれらおよび他の態様は、以下の説明ならびに添付の図面と併せて熟考される時、より認識され、理解されるであろう。以下の説明は、本発明の種々の実施形態およびそれらの多数の具体的な詳細を示すが、制限としてではなく、例として与えられる。本発明の範囲内で、多くの置換、修正、追加、または再配設が行われてもよく、本発明は、すべてのそのような置換、修正、追加、または再配設を含む。
【００１０】
添付され、かつ本明細書の一部を構成する図面は、本発明の特定の態様を描写するために含まれている。本発明のより明確な効果、ならびに本発明に提供されるシステムの構成要素および動作は、同一の参照番号が同一の構成要素を指定する図面に図示される、例示であり、したがって、非制限的な実施形態を参照することによって、より容易に明らかとなるであろう。図面に図示される特徴は、必ずしも一定の縮尺で描写されているわけではないことに留意されたい。
例えば、本発明は以下の項目を提供する。
（項目１）
分散型ＲＡＩＤを実装するためのシステムであって、
複数のデータバンクコンピュータを備え、各データバンクは、各ホストおよび他の複数のデータバンクのそれぞれに連結され、各データバンクは、
プロセッサと、
データストアと、
コンピュータ読み取り可能媒体と
を含み、該コンピュータ読み取り可能媒体は、
該データバンク上で第１のアプリケーションプログラムを実行するように実行可能な命令であって、該第１のアプリケーションプログラムは、第１の仮想マシンである、命令と、
分散型ＲＡＩＤアプリケーションを実装するように実行可能な命令と
を含み、該分散型ＲＡＩＤアプリケーションは、
第１の容量の第１のセグメントに対応するコマンドを受信することであって、該コマンドは、該第１のアプリケーションプログラムによって発行され、該第１の容量および該第１の容量と関連して実装されるＲＡＩＤレベルに対応する冗長データは、該複数のデータバンクのそれぞれに格納されることによって、該第１の容量の各セグメントについて、該セグメントに関連付けられる該冗長データを備える対応する冗長セグメントが、該セグメントと同一のデータバンク上に存在しない、ことと、
該複数のデータバンクの第１のデータバンクを決定することであって、該第１のデータバンクは、該第１のセグメントに対応する、ことと、
該第１のデータバンクが該コマンドを受信したデータバンクである場合、該第１のセグメントに対する該第１のコマンドを実行し、該第１のデータバンクが該コマンドを受信したデータバンクでない場合、該第１のコマンドを該第１のデータバンクに転送することと
を行うように動作可能である、システム。
（項目２）
上記アプリケーションプログラムを実行することは、上記データバンク上の仮想化層を用いて、上記第１の仮想マシンを実行することを含む、項目１に記載のシステム。
（項目３）
上記第１の仮想マシンは、第２の容量に対応し、該第２の容量は、上記複数のデータバンクのそれぞれの上に格納される、項目２に記載のシステム。
（項目４）
上記命令はさらに、
上記複数のデータバンクのうちの破損データバンクを検出することと、
該破損データバンクに割り振られた一連のＶＭを決定することと、
該一連のＶＭを該複数のデータバンクのうちの別のデータバンクに再度割り振ることと
を行うように実行可能である、項目３に記載のシステム。
（項目５）
上記命令はさらに、上記第１のコマンドが書き込みコマンドであるかどうか、および該第１のコマンドが上記複数のデータバンクの第２のデータバンクを決定する書き込みコマンドであるかどうかを決定するように実行可能であり、該第２のデータバンクは、上記第１のセグメントに関連付けられる第１の冗長セグメントに対応し、該第２のデータバンクが上記コマンドを受信したデータバンクである場合、該第１の冗長セグメントに対して該上記第１のコマンドを実行し、該第２のデータバンクが該コマンドを受信したデータバンクでない場合、該第１のコマンドを該第２のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの１つに対応し、各セグメントは、該複数のデータバンクの順列に従って、上記複数のデータバンクのうちの１つに割り当てられ、該冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる上記容量のうちのいずれかのセグメントに対応する、該複数のデータバンクのそれぞれとは異なる、該複数のデータバンクのうちの１つに割り当てられる、項目３に記載のシステム。
（項目６）
プロセッサを有するコンピューティングデバイス上に、種々のアプリケーションプログラムと関連して実装される分散型ＲＡＩＤのための方法であって、
複数のデータバンク上に第１の容量を確立することであって、該第１の容量は、一連のセグメントを備え、該一連のセグメントは、該複数のデータバンク上に格納される、ことと、
該複数のデータバンク上に第２の容量を確立することであって、該第２の容量は、仮想マシンとして格納されるアプリケーションプログラムに対応する、ことと、
該複数のデータバンクのうちの少なくとも１つの上で、該アプリケーションプログラムを実行することと、
該容量に関連してＲＡＩＤレベルを実装することであって、該ＲＡＩＤレベルを実装するステップは、一連の冗長セグメントを格納することを含み、各冗長セグメントは、各冗長セグメントが、該一連のセグメントのうちの１つ以上のセグメントに対応することによって、各冗長セグメントが、該一連のセグメントのうちの１つ以上に対応するデータバンクと同一のデータバンク上に存在しない、ことと、
該容量の該一連のセグメントの第１のセグメントに対応するコマンドを受信することであって、該コマンドは、該複数のデータバンクのうちの該少なくとも１つの上で実行する該アプリケーションプログラムから受信される、ことと、
該複数のデータバンクの第１のデータバンクを決定することであって、該第１のデータバンクは、該第１のセグメントに対応する、ことと、
該第１のセグメントに対する該第１のコマンドを実行することであって、該第１のコマンドは、該第１のデータバンク上で実行される、ことと
を含む、方法。
（項目７）
上記アプリケーションプログラムを実行することは、上記複数のデータバンクのうちの上記少なくとも１つの上の仮想化層を使用して、上記仮想マシンを実行することを含む、項目６に記載の方法。
（項目８）
上記第２の容量は、上記複数のデータバンクのそれぞれの上に格納される、項目７に記載の方法。
（項目９）
上記複数のデータバンクのうちの破損データバンクを検出することと、
該破損データバンクに割り振られた一連のＶＭを決定することと、
該一連のＶＭを該複数のうちの別のデータバンクに再度割り振ることと
をさらに含む、項目８に記載の方法。
（項目１０）
上記第１のコマンドが書き込みコマンドであるかどうか、および該第１のコマンドが上記複数のデータバンクの第２のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第２のデータバンクは、上記第１のセグメントに関連付けられる第１の冗長セグメントに対応し、該第２のデータバンクが上記コマンドを受信したデータバンクである場合、上記第１の冗長セグメントに対する該第１のコマンドを実行し、そうでない場合、該第１のコマンドを該第２のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの１つに対応し、各セグメントは、該複数のデータバンクの順列に従って、該複数のデータバンクのうちの１つに割り当てられ、上記冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる上記容量のうちのいずれかのセグメントに対応する、該複数のデータバンクのそれぞれとは異なる、該複数のデータバンクのうちの１つに割り当てられる、項目９に記載の方法。
（項目１１）
アプリケーションプログラムと関連して１つ以上のデータバンクコンピュータに実装される分散型ＲＡＩＤのための方法であって、
アプリケーションプログラムから、第１の容量の第１のセグメントに対応するコマンドを受信することであって、該第１の容量および該容量と併せて実装されるＲＡＩＤレベルに対応する冗長データは、該容量の各セグメントについて、該セグメントに関連付けられる該冗長データを備える対応する冗長セグメントが、該セグメントと同一のデータバンク上に存在しないように、複数のデータバンクのそれぞれの上に格納され、該アプリケーションプログラムは、仮想マシンとして格納され、該複数のデータバンクのうちの少なくとも１つの上で実行される、ことと、
該複数のデータバンクの第１のデータバンクを決定することであって、該第１のデータバンクは、該第１のセグメントに対応する、ことと、
該第１のセグメントに対する該第１のコマンドを実行することであって
該第１のコマンドは、該第１のデータバンク上で実行される、ことと
を含む、方法。
（項目１２）
上記アプリケーションプログラムを実行することは、上記データバンク上の仮想化層を使用して、上記仮想マシンを実行することを含む、項目１１に記載の方法。
（項目１３）
上記アプリケーションプログラムを実行することは、上記データバンク上の仮想化層を使用して、上記仮想マシンを実行することを含む、項目１２に記載の方法。
（項目１４）
上記複数のデータバンクのうちの破損データバンクを検出することと、
上記破損データバンクに割り振られた一連のＶＭを決定することと、
上記一連のＶＭを上記複数のデータバンクのうちの別のデータバンクに再度割り振ることと
をさらに含む、項目１３に記載の方法。
（項目１５）
上記第１のコマンドが書き込みコマンドであるかどうか、および該第１のコマンドが上記複数のデータバンクの第２のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第２のデータバンクは、上記第１のセグメントに関連付けられる第１の冗長セグメントに対応し、該第２のデータバンクが上記コマンドを受信した上記データバンクである場合、上記第１の冗長セグメントに対する該第１のコマンドを実行し、そうでない場合、該第１のコマンドを該第２のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの１つに対応し、各セグメントは、該複数のデータバンクの順列に従って、該複数のデータバンクのうちの１つに割り当てられ、上記冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる上記容量のうちのいずれかのセグメントに対応する該複数のデータバンクのそれぞれとは異なる、上記複数のデータバンクのうちの１つに割り当てられる、項目１４に記載の方法。
（項目１６）
種々のアプリケーションプログラムと関連して分散型ＲＡＩＤを実装するためのコンピュータ実行可能命令を備える、コンピュータ読み取り可能媒体であって、該コンピュータ命令は、
複数のデータバンク上に第１の容量を確立することであって、該第１の容量は、一連のセグメントを備え、該一連のセグメントは、該複数のデータバンク上に格納される、ことと、
該複数のデータバンク上に第２の容量を確立することであって、該第２の容量は、仮想マシンとして格納されるアプリケーションプログラムに対応する、ことと、
該複数のデータバンクのうちの少なくとも１つの上で、該アプリケーションプログラムを実行することと、
該容量と併せてＲＡＩＤレベルを実装することであって、該ＲＡＩＤレベルを実装することは、一連の冗長セグメントを格納することを含み、各冗長セグメントは、各冗長セグメントが、該一連のセグメントのうちの対応する１つ以上と同一のデータバンク上に存在しないように、該一連のセグメントのうちの１つ以上に対応することと、
該容量の該一連のセグメントの第１のセグメントに対応するコマンドを受信することであって、該コマンドは、該複数のデータバンクのうちの該少なくとも１つの上で実行する該アプリケーションプログラムから受信される、ことと、
該複数のデータバンクの第１のデータバンクを決定することであって、該第１のデータバンクは、該第１のセグメントに対応する、ことと
該第１のセグメントに対する該第１のコマンドを実行することであって、該第１のコマンドは、該第１のデータバンク上で実行される、ことと
を行うように実行可能である、コンピュータ読み取り可能媒体。
（項目１７）
上記アプリケーションプログラムを実行することは、上記複数のデータバンクのうちの上記少なくとも１つの上の仮想化層を使用して、上記仮想マシンを実行することを含む、項目１６に記載のコンピュータ読み取り可能媒体。
（項目１８）
上記第２の容量は、上記複数のデータバンクのそれぞれの上に格納される、項目１７に記載のコンピュータ読み取り可能媒体。
（項目１９）
上記命令はさらに、
上記複数のデータバンクのうちの破損データバンクを検出することと、
該破損データバンクに割り振られた一連のＶＭを決定することと、
該一連のＶＭを該複数のデータバンクのうちの別のデータバンクに再度割り振ることと
を行うように実行可能である、項目１８に記載のコンピュータ読み取り可能媒体。
（項目２０）
上記命令はさらに、上記第１のコマンドが書き込みコマンドであるかどうか、および該第１のコマンドが上記複数のデータバンクの第２のデータバンクを決定する書き込みコマンドであるかどうかを決定するように実行可能であり、該第２のデータバンクは、上記第１のセグメントに関連付けられる第１の冗長セグメントに対応し、該第２のデータバンクが上記コマンドを受信したデータバンクである場合、該第１の冗長セグメントに対して上記第１のコマンドを実行し、そうでない場合、該第１のコマンドを上記第２のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの１つに対応し、各セグメントは、該複数のデータバンクの順列に従って、該複数のデータバンクのうちの１つに割り当てられ、上記冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる上記容量のうちのいずれかのセグメントに対応する、該複数のデータバンクのそれぞれとは異なる該複数のデータバンクのうちの１つに割り当てられる、項目１９に記載のコンピュータ読み取り可能媒体。
（項目２１）
アプリケーションプログラムと関連して１つ以上のデータバンクコンピュータに実装される、分散型ＲＡＩＤのためのコンピュータ読み取り可能媒体であって、コンピュータ命令は、
アプリケーションプログラムから、第１の容量の第１のセグメントに対応するコマンドを受信することであって、該第１の容量および該容量と併せて実装されるＲＡＩＤレベルに対応する冗長データは、該容量の各セグメントについて、そのセグメントに関連付けられる該冗長データを備える、対応する冗長セグメントが、該セグメントと同一のデータバンク上に存在しないように、複数のデータバンクのそれぞれの上に格納され、該アプリケーションプログラムは、仮想マシンとして格納され、該複数のデータバンクのうちの少なくとも１つの上で実行される、ことと
該複数のデータバンクの第１のデータバンクを決定することであって、該第１のデータバンクは、該第１のセグメントに対応する、ことと
該第１のセグメントに対する該第１のコマンドを実行することであって、該第１のコマンドは、該第１のデータバンク上で実行される、ことと
を行うように実行可能である、コンピュータ読み取り可能媒体。
（項目２２）
上記アプリケーションプログラムを実行することは、上記データバンク上の仮想化層を使用して、上記仮想マシンを実行することを含む、項目２１に記載のコンピュータ読み取り可能媒体。
（項目２３）
上記アプリケーションプログラムを実行することは、上記データバンク上の仮想化層を使用して、上記仮想マシンを実行することを含む、項目２２に記載のコンピュータ読み取り可能媒体。
（項目２４）
上記コンピュータ命令は、上記第１のコマンドが書き込みコマンドであるかどうか、および該第１のコマンドが上記複数のデータバンクの第２のデータバンクを決定する書き込みコマンドであるかどうかを決定するように実行可能であり、該第２のデータバンクは、上記第１のセグメントに関連付けられる第１の冗長セグメントに対応し、該第２のデータバンクが上記コマンドを受信した上記データバンクである場合、該第１の冗長セグメントに対する上記第１のコマンドを実行し、そうでない場合、該第１のコマンドを該第２のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの１つに対応し、各セグメントは、該複数のデータバンクの順列に従って、該複数のデータバンクのうちの１つに割り当てられ、上記冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる容量のうちのいずれかのセグメントに対応する該複数のデータバンクのそれぞれとは異なる該複数のデータバンクのうちの１つに割り当てられる、項目２３に記載のコンピュータ読み取り可能媒体。
【図面の簡単な説明】
【００１１】
【図１】図１は、分散型ＲＡＩＤシステムを採用する、アーキテクチャの一実施形態のブロック図である。
【図２Ａ】図２Ａは、データバンクの一実施形態のブロック図である。
【図２Ｂ】図２Ｂは、データバンクのアーキテクチャの一実施形態のブロック図である。
【図３】図３は、データバンクの一実施形態のブロック図である。
【図４Ａ】図４Ａは、データバンクのアーキテクチャの一実施形態の実施例のブロック図である。
【図４Ｂ】図４Ｂは、データバンクのアーキテクチャの一実施形態の実施例のブロック図である。
【図４Ｃ】図４Ｃは、データバンクのアーキテクチャの一実施形態の実施例のブロック図である。
【図５】図５は、上で他のアプリケーションが実行され得る、分散型ＲＡＩＤシステムを採用する、アーキテクチャの一実施形態のブロック図である。
【図６】図６は、分散型ＲＡＩＤシステム上でのアプリケーションの実行の一実施形態のフローチャートである。
【図７】図７は、分散型ＲＡＩＤシステムと併せた仮想マシンの格納の一実施形態を描写する、ブロック図である。
【発明を実施するための形態】
【００１２】
本発明および種々の特徴ならびにそれらの有利な詳細は、添付の図面に図示される非制限的な実施形態を参照してより完全に説明され、以下の説明に詳細に記述される。本発明の詳細を不必要に不明瞭にしないように、周知の開始材料、処理技術、構成要素、および機器の説明は、省略されている。しかしながら、発明を実施するための形態および具体的な実施例は、本発明の好ましい実施形態を示すが、制限としてではなく、例としてのみ与えられていることを理解されたい。本開示から、根本的な発明の概念の趣旨および／または範囲内の種々の置換、修正、追加、および／または再配列が当業者に明らかとなるであろう。本明細書に記載される実施形態は、コンピュータ読み取り可能媒体（例えば、ＨＤ）、ハードウェア回路等、または任意の組み合わせ上に存在し得る、好適なコンピュータ実行可能命令に実装することができる。
【００１３】
具体的な実施形態を記載する前に、特定の実施形態を実装するためのハードウェアアーキテクチャの実施形態を本明細書に説明する。一実施形態は、ネットワークに通信可能に連結される、１つ以上のコンピュータを含むことができる。当業者に公知であるように、コンピュータは、中央演算処理装置（「ＣＰＵ」）と、少なくとも１つの読み込み専用メモリ（「ＲＯＭ」）と、少なくとも１つのランダムアクセスメモリ（「ＲＡＭ」）と、少なくとも１つのハードドライブ（「ＨＤ」）と、１つ以上の入力／出力（「Ｉ／Ｏ」）デバイスとを含むことができる。Ｉ／Ｏデバイスには、キーボード、モニタ、プリンタ、電子指示デバイス（マウス、トラックボール、スタイリスト等）等を含むことができる。種々の実施形態では、コンピュータは、ネットワーク上の少なくとも１つのデータベースへのアクセスを有する。
【００１４】
ＲＯＭ、ＲＡＭ、およびＨＤは、ＣＰＵが実行可能なコンピュータ実行可能命令を格納するためのコンピュータメモリである。本開示内では、「コンピュータ読み取り可能媒体」という用語は、ＲＯＭ、ＲＡＭ、およびＨＤのみに制限されず、プロセッサが読み込むことができる任意の種類のデータストレージ媒体を含むことができる。いくつかの実施形態では、コンピュータ読み取り可能媒体は、データカートリッジ、データバックアップ磁気テープ、フロッピー（登録商標）ディスク、フラッシュメモリドライブ、光学データストレージドライブ、ＣＤ−ＲＯＭ、ＲＯＭ、ＲＡＭ、ＨＤ等を指し得る。
【００１５】
本明細書に記載される機能性またはプロセスの少なくとも部分は、好適なコンピュータ実行可能命令に実装することができる。コンピュータ実行可能命令は、ソフトウェアコード構成要素またはモジュールとして、１つ以上のコンピュータ読み取り可能媒体（非揮発性メモリ、揮発性メモリ、ＤＡＳＤアレイ、磁気テープ、フロッピー（登録商標）ディスク、ハードドライブ、光学ストレージデバイス等、または任意の他の好適なコンピュータ読み取り可能媒体もしくはストレージデバイス等）上に格納され得る。一実施形態では、コンピュータ実行可能命令は、コンパイルされたＣ＋＋、Ｊａｖａ（登録商標）、ＨＴＭＬ、または任意の他のプログラミングもしくはスクリプトコードのラインに含まれ得る。
【００１６】
さらに、開示される実施形態の機能は、１つのコンピュータ上に実装されてもよく、またはネットワーク内の、もしくはネットワークにわたる２つ以上のコンピュータ間で共有／分散され得る。実施形態を実装するコンピュータ間での通信は、任意の電子、光学、高周波信号、または公知のネットワークプロトコルに従う、通信の他の好適な方法およびツールを使用して達成することができる。
【００１７】
本明細書で使用される場合、「備える（ｃｏｍｐｒｉｓｅｓ）」、「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｅｓ）、「含む（ｉｎｃｌｕｄｉｎｇ）」、「有する（ｈａｓ）」、「有する（ｈａｖｉｎｇ）」という用語、またはこれらの任意の他の変形は、非排他的な含有を網羅することが意図される。例えば、プロセス（ａ  ｐｒｏｃｅｓｓ）、プロセス（ｐｒｏｃｅｓｓ）、物品、または要素のリストを備える装置は、必ずしもこれらの要素に制限されず、明確にリストされていない、またはそのようなプロセス、物品、もしくは装置に内在する、他の要素を含み得る。さらに、そうではないと明確に述べられていない限り、「または」は、排他的な「または」ではなく、包括的な「または」を指す。例えば、条件ＡまたはＢは、以下の、Ａが真（または存在する）かつＢが偽（または存在しない）、Ａが偽（または存在しない）かつＢが真（または存在する）、ならびにＡおよびＢの両方が真（または存在する）のいずれか１つによって満足される。
【００１８】
さらに、本明細書に与えられる任意の実施例または図解は、決して、それらと共に利用される、いかなる用語に対する制約としても、制限としても、またはいかなる用語の定義を表現するとも見なされない。代わりに、これらの実施例または図解は、１つの特定の実施形態に関して説明しており、一例にすぎないと見なされる。当業者は、これらの実施例または図解と共に利用される、いかなる用語も、それと共に、または明細書の他の場所に与えられている場合も与えられていない場合もある、他の実施形態を包含し、すべてのそのような実施形態は、その用語の範囲内に含まれることが意図されることを認識するであろう。そのような非制限的な実施例および図解を指定する言語には、「例えば（例えば）、「例として（ｆｏｒ  ｉｎｓｔａｎｃｅ）」、「例えば（ｅ．ｇ．）」、「一実施形態では」を含むが、これらに限定されない。
【００１９】
本願は、２００９年６月５日にＧａｌｌｏｗａｙらによって出願された、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｒｅｂｕｉｌｄｉｎｇ  Ｄａｔａ  ｉｎ  ａ  Ｄｉｓｔｒｉｂｕｔｅｄ  ＲＡＩＤ  Ｓｙｓｔｅｍ」の米国特許出願第１２／４７９，３１９号、２００９年６月５日にＧａｌｌｏｗａｙらによって出願された、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｄａｔａ  Ｍｉｇｒａｔｉｏｎ  ｉｎ  ａ  Ｄｉｓｔｒｉｂｕｔｅｄ  ＲＡＩＤ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ」の同第１２／４７９，３６０号、２００９年６月５日にＧａｌｌｏｗａｙらによって出願された、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｄｉｓｔｒｉｂｕｔｉｎｇ  Ｃｏｍｍａｎｄｓ  ｔｏ  Ｔａｒｇｅｔｓ」の同第１２／４７９，４０３号、２００９年６月５日にＧａｌｌｏｗａｙらによって出願された、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ
ｆｏｒ  Ｉｎｉｔｉａｌｉｚｉｎｇ  Ｓｔｏｒａｇｅ  ｉｎ  ａ  Ｓｔｏｒａｇｅ  Ｓｙｓｔｅｍ」の同第１２／４７９，３７７号、２００９年６月５日にＧａｌｌｏｗａｙらによって出願された、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｒｅｂｕｉｌｄｉｎｇ  Ｄａｔａ  ｉｎ  ａ  Ｄｉｓｔｒｉｂｕｔｅｄ  ＲＡＩＤ  Ｓｙｓｔｅｍ」の同第１２／４７９，４３４号、および２００９年６月５日にＧａｌｌｏｗａｙらによって出願された、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｐｌａｃｅｍｅｎｔ  ｏｆ  Ｄａｔａ  ｏｎ  ａ  Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅ」の同第１２／４７９，３９４号、ならびにＧａｌｌｏｗａｙによる、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｐｒｏｔｅｃｔｉｎｇ  Ａｇａｉｎｓｔ  Ｍｕｌｔｉｐｌｅ  Ｆａｉｌｕｒｅｓ  ｉｎ  ａ  ＲＡＩＤ  Ｓｙｓｔｅｍ」の第＿＿＿＿＿＿＿＿＿＿（ＰＩＶＯＴ１１７０−１）号に関し、これらのすべては、参照によって本明細書に完全に援用される。
【００２０】
ここで、特に、データストレージに関する文脈の要約記述が有用であり得る。上述されるように、ＲＡＩＤシステムは、信頼性を向上し、場合によっては、コンピューティングデバイス（ホストとして公知）の処理量を改善するために、ストレージにこれらのＲＡＩＤシステムを使用して、集合的にアレイと称される、複数のハードディスクドライブ（または他の種類のストレージ媒体）にわたって、データを分割および複製する。しかしながら、ＲＡＩＤの現行の実装は、種々の問題を有する場合がある。
【００２１】
特に、特定のこれらの問題は、多くの場合において、ＲＡＩＤシステムとのすべての通信は、ＲＡＩＤシステムを制御し、管理する、単一のサーバにアドレス指定されなければならない等、これらのＲＡＩＤシステムのアーキテクチャによって課される制限から生じる場合がある。このアーキテクチャは、ＲＡＩＤシステムおよびＲＡＩＤシステムを実装するために使用されるコンピューティングデバイスを利用するホストを備える、物理的構成要素の冗長性をもたらし得る。物理的構成要素の冗長性に加えて、ホストおよびＲＡＩＤシステムはまた、動作中に、同一の資源の多くを消費し得る。ホストおよびＲＡＩＤシステムの両方が、電力、冷却、ラックスペース等を要求し得る。この状況は、ハードウェアの出費の増加、通信ボトルネック、ホストおよびＲＡＩＤシステムの両方を含有するための膨大な物理的空間の必要性等を含む、数多くの望ましくない問題を引き起こす可能性がある。
【００２２】
特定のＲＡＩＤシステムに関して、本発明の特定の実施形態を図示することが有用であるが、しかしながら、特定の実施形態が図示される特定のＲＡＩＤシステムは、本発明の他の実施形態の適用性または使用に制限を課さず、そのような実施形態は、他の種類のＲＡＩＤシステムまたは他の種類のストレージシステム全体を含む、種々の状況のいずれにも有用に採用され得ることに留意されたい。
【００２３】
これを前提として、特定の実施形態は、分散型ＲＡＩＤシステムに関して有用に図示されてもよく、関連ＲＡＩＤレベルを伴う容量は、分散型ＲＡＩＤシステムを使用して作成され得る。次いで、分散型ＲＡＩＤアプリケーションのそれぞれは、その容量またはその容量と併せた所望のＲＡＩＤレベルの実装に関連付けられるデータが、分散型ＲＡＩＤシステムの複数のデータバンク上に格納され得るように、その容量のデータに関連付けられるここで、図１を参照すると、分散型ＲＡＩＤシステムの一実施形態を利用するシステムのためのアーキテクチャのブロック図が描かれる。分散型ＲＡＩＤシステム１００は、一連のデータバンク１１０を含み、各データバンク１１０は、スイッチ１２０の両方に通信可能に結合される。スイッチ１２０の各々は、また、各ホスト１０２に通信可能に結合され、その結果、ホスト１０２は、特定のデータバンク１１０と対応する一連の経路を介して各データバンク１１０と通信し得、各経路は、スイッチ１２０のうちの１つを含む。
ここで、図１を参照すると、分散型ＲＡＩＤシステムの一実施形態を利用するシステムのためのアーキテクチャのブロック図が描かれる。分散型ＲＡＩＤシステム１００は、一連のデータバンク１１０を含み、各データバンク１１０は、スイッチ１２０の両方に通信可能に結合される。スイッチ１２０の各々は、また、各ホスト１０２に通信可能に結合され、その結果、ホスト１０２は、特定のデータバンク１１０と対応する一連の経路を介して各データバンク１１０と通信し得、各経路は、スイッチ１２０のうちの１つを含む。
【００２４】
データバンク１１０と、スイッチ１２０と、ホスト１０２との間の通信可能な連結は、イーサネット（登録商標）、ＳＣＳＩ、ｉＳＣＳＩ、ファイバーチャネル、シリアルアタッチドＳＣＳＩ（「ＳＡＳ」）、アドバンスドテクノロジーアタッチメント（「ＡＴＡ」）、シリアルＡＴＡ（「ＳＡＴＡ」）、または当該技術分野において公知の他のプロトコルを含む、所望のほぼいかなる伝送媒体（有線または無線のいずれか）を使用しても達成され得る。さらに、通信可能な連結は、インターネット、ＬＡＮ、ＷＡＮ、無線ネットワーク、または当該技術分野において公知の任意の他の通信ネットワーク等の通信ネットワークと併せて実装され得る。
【００２５】
次いで、ｉＳＣＳＩ、ＳＣＳＩ等のコマンドプロトコルを使用する一実施形態では、ホスト１０２は、データを操作するために、データバンク１１０と通信し得る。より具体的には、データバンク１１０のそれぞれは、ストレージ媒体（本明細書上で、後により詳細に説明される）を備える。集合的に、データバンク１１０内のストレージ媒体は、ストレージ、ストレージデバイス等の１つ以上の連続ブロックとして、ホスト１０２に対して仮想化され、提示され得る。例えば、ｉＳＣＳＩプロトコルが利用される時、データバンク１１０内のストレージ媒体は、一実施形態では、複数のポートを伴う、ＳＣＳＩターゲットとして、ホスト１０２に提示され得る。
【００２６】
したがって、動作中、一実施形態では、ホスト１０２（またはホスト１０２側のユーザもしくはデータバンク１１０とインターフェースをとっているユーザ）は、容量の作成を要求し、その容量と併せて実装されるＲＡＩＤのレベルを指定し得る。その容量およびその容量と関連した所望のレベルのＲＡＩＤの実装に関連付けられるデータは、データバンク１１０にわたって格納される。次いで、ホスト１０２は、容量またはその一部に対応する論理アドレスを使用して、この容量にアクセスし得る。このように、ホスト１０２は、作成されたストレージの容量を利用することができ、ホスト１０２に対して実質的に見えないように、これらの容量と併せて耐障害性を達成することができる。
【００２７】
ストレージの仮想化およびデータバンク１１０を利用したＲＡＩＤの実装は、分散型ＲＡＩＤを実装するように動作可能なデータバンク１１０コンピュータの一実施形態のブロック図を描写する、図２Ａを参照して、より理解され得る。ここで、データバンク１１０は、データストア２５０と、コンピュータ読み取り可能媒体上に格納された命令を実行するように動作可能なプロセッサ２０２とを備え、命令は、分散型ＲＡＩＤアプリケーション２１０を実装するように動作可能である。分散型ＲＡＩＤアプリケーション２１０は、そのデータバンク１１０に関する障害が存在しているかどうかを決定するために、他のデータバンク１１０上の分散型ＲＡＩＤアプリケーション２１０にハートビート通信を周期的に発行し得る。分散型ＲＡＩＤアプリケーション２１０は、別のデータバンク１１０が障害を抱えていると決定する場合、そのデータバンク１１０に対応する、１つ以上の障害フラグを設定し得る。各データバンク１１０上の各分散型ＲＡＩＤアプリケーション２１０のこれらの障害フラグを使用して、特定の分散型ＲＡＩＤアプリケーション２１０は、特定のデータバンク１１０に障害があるかどうかを決定し得る。
【００２８】
また、分散型ＲＡＩＤアプリケーション２１０は、例えば、ＳＡＴＡ、ＰＡＴＡ、ＦＣ等の公知のほぼいかなるプロトコルにも従って動作するディスク２５２であり得る、１つ以上のストレージ媒体を備えるデータストア２５０へのアクセスを有してもよく（例えば、読み込む、書き込む、コマンドを発行する等のために）、ディスク２５２のそれぞれは、同等のサイズであったり、そうでなかったりし得る。データバンク１１０のそれぞれの上で実行する分散型ＲＡＩＤアプリケーション２１０は、データバンク１１０にわたるデータストア２５０を使用した容量の割り当ておよび使用、ならびにすべてがメモリ２３０（データストア２５０または別のメモリ全体であり得る）内に格納され得る、データバンク１１０間で共有される一連のグローバルテーブル２４０、一連のローカルテーブル２４５、および書き込みキャッシュ２６０を利用した、これらの容量と併せたＲＡＩＤの実装を可能にすることができる。
【００２９】
図２Ｂは、分散型ＲＡＩＤを実装するように動作可能なデータバンク１１０コンピュータを実装するために使用され得る、ハードウェアアーキテクチャの一実施形態のブロック図を描写する。この構造的実施例では、データバンク１１０は、Ｉｎｔｅｌ  ｘ８６アーキテクチャまたはいくつかの他のアーキテクチャ全体に従い得る、１つ以上のプロセッサ２０２と、一実施形態では、サウスブリッジチップ等であり得る、バスを通してＩ／Ｏコントローラハブ２１２に連結される、メモリ２３０とを備える。Ｉ／Ｏコントローラハブ２１２は、同様に、ＰＣＩ−Ｘバス、ＰＣＩ高速バス等のバス２７２に連結され、それを制御し得る。例えば、ＬＳＩ１０６８  ＳＡＴＡ／ＳＡＳコントローラ等の１つ以上のディスクコントローラ２６２が、このバス２７２に連結される。これらのディスクコントローラ２６２のそれぞれは、１つ以上のディスク２５２に連結され、集合的に、これらのディスク２５２は、データストア２５０を構成し得る。さらに、また、１つ以上のネットワークインターフェース２８２は、バス２７２に連結され得る。これらのネットワークインターフェース２８２は、マザーボード上に含まれるネットワークインターフェース（イーサネット（登録商標）等）であってもよく、イーサネット（登録商標）、ファイバーチャネル等の１つ以上のプロトコルを介してインターフェースをとるように構成された、１つ以上のネットワークインターフェースカードを備えてもよく、またはデータバンク１１０が、これらのネットワークインターフェース２８２を通してスイッチ１２０と通信し得るような、いくつかの他の種類のネットワークインターフェースであり得る。
【００３０】
いくつかの実施形態では、データバンク１１０を実装するために使用される、コンピューティングデバイスの構成要素は、分散型ＲＡＩＤアプリケーション２１０を実行するのに必要とされ得るより多くの演算能力を有し得る（または、有するように構築され得る）場合もある。多くの場合、したがって、データバンク１１０を実装するために使用されるコンピューティングデバイス（例えば、プロセッサ、キャッシュ、メモリ、基板等）は、分散型ＲＡＩＤアプリケーション２１０のみを実行するために使用される時、未利用演算能力を有し得る。したがって、この余剰演算能力を、ホスト１０２上で実行するアプリケーションを実行するため、および分散型ＲＡＩＤアプリケーション２１０を利用するために利用することが望まれる。これには、問題があり得るが、しかしながら、多くの場合、異なるホスト１０２上で実行する、多種多様なこれらのアプリケーションが存在し得、ホストのそれぞれは、異なるオペレーティングシステムを実行し得るため、アプリケーションは、１種類のオペレーティングシステム上でのみ実行するように構成され得る等である。
【００３１】
したがって、今、分散型ＲＡＩＤシステム（または他の種類のアプリケーション）を利用し得る種々のアプリケーションが、その分散型ＲＡＩＤシステムを実装する同一の一連のコンピューティングデバイス上で実行されることを可能にする、本発明のシステムおよび方法が注目される。分散型ＲＡＩＤアプリケーションが、同一の一連のコンピューティングデバイス上の他のアプリケーションと併せて実行されることを可能にするために、仮想化層が、データバンク上で実行され得る。一式の所望のアプリケーションプログラムは、この仮想化層を使用して実行されてもよく、仮想化層上で実行するアプリケーションの各インスタンスのコンテキストは、分散型ＲＡＩＤシステムを利用して保持される要領内に格納され得る。次いで、これらの仮想マシン（例えば、アプリケーションおよび容量内に格納される任意の適用可能なコンテキスト情報）は、データバンクのうちのいずれか１つの上の仮想化層と併せて実行され得る。このように、一連のコンピューティングデバイスは、分散型ＲＡＩＤシステムを実装し、（特に）そのような分散型ＲＡＩＤシステムを利用するアプリケーションを実行するために利用され得る。これらの種類のアプリケーションには、例えば、ビデオ監視アプリケーション、ゲーム、小売店または銀行取引アプリケーション、ビデオストリーミングアプリケーション、コンテンツホスティングアプリケーション等が挙げられる。
【００３２】
分散型ＲＡＩＤシステムを実装するコンピューティングデバイスと併せて、何よりもまず、より少ない空間、電力、冷却、予備等が必要とされ得るため、物理資源の統合が達成され、物理資源、ならびにそのような資源をインストールする、設定する、利用する、および維持するために要求される資源の両方に関連付けられる費用が削減され得る。さらに、アプリケーションおよび分散型ＲＡＩＤシステムの使用と併せて実施される通信が、より少ない場合がある、またはより迅速に実施され得るため、アプリケーションおよび分散型ＲＡＩＤシステムの両方の実装において、より速い速度が達成され得る。
【００３３】
加えて、本願の残りの部分を検討した後により詳細が明らかとなるように、アプリケーションのインスタンスが仮想マシンとして保存され、分散型ＲＡＩＤシステムを実装するデータバンク上の仮想化層上で実行される設定によって、耐障害性のレベルが導入され得る。簡潔に、この耐障害性のレベルは、各仮想マシン（例えば、仮想化層上で実行され得る、実行しているアプリケーションのインスタンス）が、分散型ＲＡＩＤシステムの容量内に格納されるということは、仮想マシンが、データバンクのうちの１つの破損の場合に回復され得ることを意味し得るという事実からもたらされ得る。加えて、仮想マシンが、任意のデータバンクの仮想化層上で実行され得るため、耐障害性が導入されてもよく、したがって、単一のデータバンクが破損する場合にさえ、各仮想マシンは、依然として実行され得る。
【００３４】
ここで、図３を参照すると、分散型ＲＡＩＤシステムを実装し、種々のアプリケーションの実行を可能にし得る、データバンクの一実施形態が描写されている。ここで、データバンク１１１０は、データストア３５０と、コンピュータ読み取り可能媒体上に格納される命令を実行するように動作可能なプロセッサ（図示せず）または他のハードウェアとを備える。このハードウェアは、例えば、ｘ８６プラットフォーム等であり得る。
【００３５】
コンピュータ読み取り可能媒体上に格納される命令は、仮想化層３１２および分散型ＲＡＩＤアプリケーション３１０を実装するように動作可能であり得る。仮想化層３１２は、当該技術分野において公知であるように、例えば、Ｓｕｎ  ＭｉｃｒｏｓｙｓｔｅｍｓのＣｏｎｔａｉｎｅｒｓ、Ｌｉｎｕｘ  ＫＶＭ、Ｌｉｎｕｘ  ＶＳｅｒｖｅｒ、Ｏｒａｃｌｅ  ＶＭ、Ｖｉｒｔｕａｌ  ＰＣ、ＭｉｃｒｏｓｏｆｔのＶｉｒｔｕａｌ  Ｓｅｒｖｅｒ、Ｓｕｎ  ＭｉｃｒｏｓｙｓｔｅｍｓのＩＢＭ  Ｌｏｇｉｃａｌ  ＤｏｍａｉｎｓのＰｏｗｅｒＶＭ、ＶＭｗａｒｅ  Ｓｅｒｖｅ等、または任意の他の種類の仮想マシンもしくはエミュレーションマシンアプリケーションのうちの１つであり得る。分散型ＲＡＩＤアプリケーション３１０は、上述されるものと同様の機能性を有し得る。これらの１つ以上の実装を助長するために、メモリ３３０内のテーブル３４０が、分散型ＲＡＩＤシステムによって格納されるどの容量が仮想マシンであるか、およびどのデータバンク１１０が特定の仮想マシンに割り振られているか等の情報を追跡し得るようにする。
【００３６】
図４Ａ、図４Ｂ、および図４Ｃを簡単に参照すると、仮想化層を伴うデータバンク１０１０のアーキテクチャの３つの実施形態が描写されている。そのようなアーキテクチャの他の実施形態が可能であり、利用され得ることに留意されたい。図４Ａでは、仮想化層３１２は、分散型ＲＡＩＤアプリケーション３１０および仮想マシン４３０（アプリケーションおよびそれらの対応するコンテキスト）が、仮想化層３１２上で実行され得るように、ハードウェア層４０２上に存在し得る。図４Ｂは、分散型ＲＡＩＤアプリケーション３１０および仮想マシン４３０（アプリケーションおよびそれらの対応するコンテキスト）が、仮想化層３１２上で実行され得るように、オペレーティングシステム４２０（例えば、Ｗｉｎｄｏｗｓ（登録商標）、Ｓｏｌａｒｉｓ、ＭａｃＯＳ等）が、オペレーティングシステム４２０上で実行する仮想化層３１２を伴うハードウェア層４０２上で実行され得る、実施形態を描写する。図４Ｃは、オペレーティングシステム４２０が、ハードウェア層４０２上で実行され得る、実施形態を描写する。分散型ＲＡＩＤアプリケーション３１０および仮想化層３１２は、オペレーティングシステム４２０上で実行され得る。したがって、仮想マシン４３０は、仮想化層３１２上で実行され得る。
【００３７】
したがって、一連のデータバンク１１１０を使用して分散型ＲＡＩＤシステムを実装し、同一のデータバンク１１１０の１つ以上の上のこの分散型ＲＡＩＤシステムを利用し得る、１つ以上のアプリケーションを実行するように動作可能であり得る、システムの一実施形態が、図５に描写されている。
【００３８】
図６に移動すると、分散型ＲＡＩＤアプリケーション３１０もまた実行している、データバンク１１１０上の１つ以上のアプリケーションを実行するための方法の一実施形態が描写されている。ステップ６１０で、アプリケーションは、データバンク１１１０の仮想化層３１２上で実行され得る。このインストレーションプロセスは、ステップ６２０で、仮想化層３１２によって実行される時に、特定のコンテキストと関連してアプリケーションを実行するように動作可能である、仮想マシンを作成し得る。より具体的には、一実施形態では、容量は、分散型ＲＡＩＤアプリケーション３１０を使用して作成されてもよく、アプリケーションは、そのアプリケーションの実行からもたらされるコンテキストと共に、特定の時間、仮想化層３１２上のその容量内に格納され得る。
【００３９】
これは、どのように仮想マシン４３０のそれぞれがデータバンク１１１０のそれぞれのデータストア３５０内に格納される容量となり得るかを描写する、図７により明確に描写される。仮想マシンのそれぞれは、対応するコンテキストを伴うアプリケーションを起動するために、仮想マシン４３０が仮想化層３１２上で実行され得るように、アプリケーションの１つのインストールされたインスタンスおよび関連コンテキストに対応し得る。
【００４０】
図６に戻り、いったんアプリケーションがインストールされ、仮想マシンが作成されると、一実施形態では、ステップ６３０で、アプリケーションのインスタンスを備える仮想マシンは、特定のデータバンク１１１０上で実行するように割り振られてもよく、したがって、仮想マシンは、ステップ６４０で、割り振られたデータバンク１１１０の仮想化層３１２上で実行し得る。
【００４１】
何らかの理由のために、この仮想マシンの実行を停止することが望まれる場合は、どの時点であっても、仮想マシンは、仮想マシンの実行が、仮想マシンが割り振られている特定のデータバンク１１１０によって、同一の点から後に再開され得るように格納され得る。この格納は、必要に応じて、仮想マシン（仮想マシンに対応する容量）内にコンテキストを格納することを伴い得る。
【００４２】
各仮想マシン４３０が分散型ＲＡＩＤシステムを備えるデータバンク１１１０にわたって格納される際、仮想マシンが割り振られているデータバンク１１１０は、各仮想マシンにアクセスし、実行し得ることが留意されるであろう。加えて、その仮想マシンが、分散型ＲＡＩＤアプリケーション３１０に関連付けられる容量内に格納され得るため、ＲＡＩＤのレベルは、その仮想マシンの格納と併せて実装され得ることが留意されるであろう。結果として、前述されるように、分散型ＲＡＩＤアプリケーション３１０によって管理される容量として格納される仮想マシンを使用して、データバンク１１１０上でアプリケーションを実行することによって、分散型ＲＡＩＤシステムのアーキテクチャによって、耐障害性が潜在的に達成され得る。
【００４３】
より具体的には、一実施形態では、各データバンク１１１０は、任意の仮想マシンにアクセスしてもよく、各仮想マシン４３０は、ＲＡＩＤのレベルと併せて格納され得るため、特定のデータバンク１１１０が破損する場合にさえ、任意の仮想マシンに関連するすべてのデータが、残りの動作しているデータバンク１１１０によって、依然としてアクセス可能であり得るため、アプリケーションは、依然として実行されることが可能であり得る。事実、一実施形態では、特定のデータバンク１１１０が破損する場合、破損データバンク１１１０が検出されてもよく、破損データバンク１１０に割り振られた各ＶＭは、破損データバンク１１１０上で実行していたすべてのＶＭが、今、別のデータバンク１１００上で実行するように、別の動作可能なデータバンク１１１０に実質的に自動的に割り振られ得る。この割り振りは、不規則に行われてもよく、または、各データバンク１１１０に割り振られるＶＭの数等の１つ以上の基準に基づいて行われ得る。破損データバンク１１１０のＶＭを自動的に再度割り振ることによって、アプリケーションにあるレベルの耐障害性を与えることに加えて、中断時間が最小限になり得る。
【００４４】
前述の明細書では、本発明は、特定の実施形態を参照して記載されてきた。しかしながら、当業者は、以下の特許請求の範囲に説明される、本発明の範囲から逸脱することなく、種々の修正および変更を行うことができることを理解する。したがって、本明細書および図面は、制限的な意味というよりは、実例と見なされ、すべてのそのような修正は、本発明の範囲内に含まれることが意図される。
【００４５】
利益、他の利点、および問題の解決策は、特定の実施形態に関して説明されてきた。しかしながら、利益、利点、問題の解決策、および任意の利益、利点、または解決策をもたらし得る、もしくはより顕著にし得る任意の構成要素は、任意の、もしくはすべての請求項の決定的に重要である、要求される、または必須の特徴あるいは構成要素であるとは解釈されない。
【図１】
2011154697.tif 000003
【図２Ａ】
2011154697.tif 000004
【図２Ｂ】
2011154697.tif 000005
【図３】
2011154697.tif 000006
【図４Ａ】
2011154697.tif 000007
【図４Ｂ】
2011154697.tif 000008
【図４Ｃ】
2011154697.tif 000009
【図５】
2011154697.tif 000010
【図６】
2011154697.tif 000011
【図７】
2011154697.tif 000012
【手続補正書】
【提出日】平成23年2月22日(2011.2.22)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
（技術分野）
本発明は、概して、ストレージデバイスの使用に関する。より具体的には、本発明の実施形態は、ストレージデバイス上でＲＡＩＤを実装すること、このＲＡＩＤ機能性を利用し得るアプリケーションを実装することに関する。さらにより具体的には、本発明の特定の実施形態は、ＲＡＩＤおよび１つ以上のアプリケーションを、同一の一連のコンピューティングデバイス上に実装することに関する。
【背景技術】
【０００２】
（背景）
データは、多くの実体にとっての有用な資産を表す。その結果、不慮であるか悪意のある行為によって引き起こされるものかにかかわらず、データ損失は、労働力の浪費、顧客からの信頼の喪失、時間の損失、および潜在的な法的責任の観点から、費用のかかるものとなり得る。商業上、法律上、または他の目的のためのデータの適切な保護を確実なものにするために、多くの実体は、データストレージ、冗長性、セキュリティ等を含む、種々の技術を使用して、そのデータを保護することを望み得る。しかしながら、これらの技術は、他の競合する制約、あるいはこのデータを処理もしくは格納するために使用されるコンピューティングデバイスの状態または設定によって課される要件と矛盾し得る。
【０００３】
これらの対立に対処するための一方法は、Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋ（ＲＡＩＤ）を実装することである。一般に、ＲＡＩＤシステムは、信頼性を高めるため、および場合によっては、ストレージにこれらのＲＡＩＤシステムを使用するコンピューティングデバイス（ホストとして公知）の処理量を改善するために、集合的にアレイと称される、複数のハードディスクドライブ（または他の種類のストレージ媒体）にわたって、データを分割および複製する。その結果、ＲＡＩＤアレイは、ホストに対して１つ以上のモノリシックストレージ領域のように見え得る。ホストがＲＡＩＤシステムと通信すること（読み込み、書き込み等）を要求するとき、ホストは、ＲＡＩＤアレイが単一ディスクであるかのように通信する。言い換えると、ＲＡＩＤシステムは、そのような通信と併せて特定のＲＡＩＤレベルを実装するように、これらの通信を処理する。これらのＲＡＩＤレベルは、信頼性、能力、速度等の種々のトレードオフ間のある所望のバランスを達成するように設計され得る。例えば、ＲＡＩＤ（レベル）０は、速度の改善をもたらすように、いくつかのディスクにわたってデータを分散し、ディスクの実質的に全容量を利用するが、ディスクが故障した場合、ディスク上のすべてのデータが損失され、ＲＡＩＤ（レベル）１は、それぞれが同一のデータを格納する、２つ（またはそれ以上）のディスクを使用するため、１つのディスクが生存している限り、データは損失されない。アレイの総容量は、実質的に、単一ディスクの容量であり、ＲＡＩＤ（レベル）５は、いずれか１つのディスクの損失からデータを保護するように３つ以上のディスクを組み合わせ、アレイのストレージ容量は、１つのディスク分だけ減少される。
【０００４】
多くの場合、現代のコンピューティングデバイスの演算能力を考えると、ＲＡＩＤシステムを利用するホストを実装するコンピューティングデバイスとＲＡＩＤシステム自体を実装するコンピューティングデバイスとの間に、ある程度の冗長性が存在し得る。物理的構成要素の冗長性に加えて、ホストおよびＲＡＩＤシステムはまた、動作中に、同一の資源の多くを消費し得る。両方が、電力、冷却、ラックスペース等を要求し得る。さらに、ホストおよびＲＡＩＤシステムは、個々のパスに沿って通信するため、ＲＡＩＤシステムを実装するために、特定のネットワーク構成要素および経路を利用する必要があり得る。この状況は、ハードウェアの出費の増加、通信ボトルネック、ホストおよびＲＡＩＤシステムの両方を含有するための膨大な物理的空間の必要性等を含む、数多くの望ましくない問題を引き起こす可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
結果として、これらの問題を改善することが望ましい。
【課題を解決するための手段】
【０００６】
種々のアプリケーションが、ＲＡＩＤシステムを実装する同一の一連のコンピューティングデバイス上で実行されることを可能にする、システムおよび方法の実施形態を提示する。具体的には、一実施形態では、ＲＡＩＤアプリケーションが、他のアプリケーションと併せて、同一の一連のコンピューティングデバイス上で実行されることを可能にするために、データバンク上で仮想化層が実行され得る。一式の所望のアプリケーションプログラムが、この仮想化層を使用して実行されてもよく、仮想化層上で実行するアプリケーションのコンテキストは、ＲＡＩＤシステムを利用して保持される容量内に格納され得る。これらの仮想マシン（例えば、容量内に格納されるアプリケーションおよび任意の適用可能なコンテキスト情報）は、データバンクのうちのいずれか１つの上で、仮想化層と併せて実行され得る。このように、一連のコンピューティングデバイスは、ＲＡＩＤシステムを実装し、（特に）そのようなＲＡＩＤシステムを利用するアプリケーションを実行するために利用され得る。これらの種類のアプリケーションには、例えば、ビデオ監視アプリケーション、ゲーム、小売店または銀行取引アプリケーション、ビデオストリーミングアプリケーション、コンテンツホスティングアプリケーション等が挙げられる。
【０００７】
ＲＡＩＤシステムを実装するコンピューティングデバイスと併せて、これらのアプリケーションを実行することによって、数多くの利点が達成され得る。何よりもまず、より少ない空間、電力、冷却、予備等が必要とされ得るため、物理資源の統合が達成され、物理資源、ならびにそのような資源をインストールする、設定する、利用する、および維持するために要求される資源の両方に関連する費用が削減され得る。さらに、アプリケーションおよびＲＡＩＤシステムの使用と併せて実施される通信が、より少ない場合がある、またはより迅速に実施され得るため、アプリケーションおよびＲＡＩＤシステムの両方の実装において、より速い速度が達成され得る。
【０００８】
加えて、本願の残りの部分を検討した後により詳細が明らかとなるように、アプリケーションのインスタンスが仮想マシンとして保存され、ＲＡＩＤシステムを実装するデータバンク上の仮想化層上で実行される設定によって、耐障害性のレベルが導入され得る。簡潔に、この耐障害性のレベルは、各仮想マシン（例えば、仮想化層上で実行され得る、実行しているアプリケーションのインスタンス）が、ＲＡＩＤシステムの容量内に格納されるということは、仮想マシンが、データバンクのうちの１つの破損の場合に回復され得ることを意味し得るという事実からもたらされ得る。加えて、仮想マシンが、任意のデータバンクの仮想化層上で実行され得るため、耐障害性が導入されてもよく、したがって、単一のデータバンクが破損する場合にさえ、各仮想マシンは、依然として実行され得る。
【０００９】
本発明のこれらおよび他の態様は、以下の説明ならびに添付の図面と併せて熟考される時、より認識され、理解されるであろう。以下の説明は、本発明の種々の実施形態およびそれらの多数の具体的な詳細を示すが、制限としてではなく、例として与えられる。本発明の範囲内で、多くの置換、修正、追加、または再配設が行われてもよく、本発明は、すべてのそのような置換、修正、追加、または再配設を含む。
【００１０】
添付され、かつ本明細書の一部を構成する図面は、本発明の特定の態様を描写するために含まれている。本発明のより明確な効果、ならびに本発明に提供されるシステムの構成要素および動作は、同一の参照番号が同一の構成要素を指定する図面に図示される、例示であり、したがって、非制限的な実施形態を参照することによって、より容易に明らかとなるであろう。図面に図示される特徴は、必ずしも一定の縮尺で描写されているわけではないことに留意されたい。
例えば、本発明は以下の項目を提供する。
（項目１）
分散型ＲＡＩＤを実装するためのシステムであって、
複数のデータバンクコンピュータを備え、各データバンクは、各ホストおよび他の複数のデータバンクのそれぞれに連結され、各データバンクは、
プロセッサと、
データストアと、
コンピュータ読み取り可能媒体と
を含み、該コンピュータ読み取り可能媒体は、
該データバンク上で第１のアプリケーションプログラムを実行するように実行可能な命令であって、該第１のアプリケーションプログラムは、第１の仮想マシンである、命令と、
分散型ＲＡＩＤアプリケーションを実装するように実行可能な命令と
を含み、該分散型ＲＡＩＤアプリケーションは、
第１の容量の第１のセグメントに対応するコマンドを受信することであって、該コマンドは、該第１のアプリケーションプログラムによって発行され、該第１の容量および該第１の容量と関連して実装されるＲＡＩＤレベルに対応する冗長データは、該複数のデータバンクのそれぞれに格納されることによって、該第１の容量の各セグメントについて、該セグメントに関連付けられる該冗長データを備える対応する冗長セグメントが、該セグメントと同一のデータバンク上に存在しない、ことと、
該複数のデータバンクの第１のデータバンクを決定することであって、該第１のデータバンクは、該第１のセグメントに対応する、ことと、
該第１のデータバンクが該コマンドを受信したデータバンクである場合、該第１のセグメントに対する該第１のコマンドを実行し、該第１のデータバンクが該コマンドを受信したデータバンクでない場合、該第１のコマンドを該第１のデータバンクに転送することと
を行うように動作可能である、システム。
（項目２）
上記アプリケーションプログラムを実行することは、上記データバンク上の仮想化層を用いて、上記第１の仮想マシンを実行することを含む、項目１に記載のシステム。
（項目３）
上記第１の仮想マシンは、第２の容量に対応し、該第２の容量は、上記複数のデータバンクのそれぞれの上に格納される、項目２に記載のシステム。
（項目４）
上記命令はさらに、
上記複数のデータバンクのうちの破損データバンクを検出することと、
該破損データバンクに割り振られた一連のＶＭを決定することと、
該一連のＶＭを該複数のデータバンクのうちの別のデータバンクに再度割り振ることと
を行うように実行可能である、項目３に記載のシステム。
（項目５）
上記命令はさらに、上記第１のコマンドが書き込みコマンドであるかどうか、および該第１のコマンドが上記複数のデータバンクの第２のデータバンクを決定する書き込みコマンドであるかどうかを決定するように実行可能であり、該第２のデータバンクは、上記第１のセグメントに関連付けられる第１の冗長セグメントに対応し、該第２のデータバンクが上記コマンドを受信したデータバンクである場合、該第１の冗長セグメントに対して該上記第１のコマンドを実行し、該第２のデータバンクが該コマンドを受信したデータバンクでない場合、該第１のコマンドを該第２のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの１つに対応し、各セグメントは、該複数のデータバンクの順列に従って、上記複数のデータバンクのうちの１つに割り当てられ、該冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる上記容量のうちのいずれかのセグメントに対応する、該複数のデータバンクのそれぞれとは異なる、該複数のデータバンクのうちの１つに割り当てられる、項目３に記載のシステム。
（項目６）
プロセッサを有するコンピューティングデバイス上に、種々のアプリケーションプログラムと関連して実装される分散型ＲＡＩＤのための方法であって、
複数のデータバンク上に第１の容量を確立することであって、該第１の容量は、一連のセグメントを備え、該一連のセグメントは、該複数のデータバンク上に格納される、ことと、
該複数のデータバンク上に第２の容量を確立することであって、該第２の容量は、仮想マシンとして格納されるアプリケーションプログラムに対応する、ことと、
該複数のデータバンクのうちの少なくとも１つの上で、該アプリケーションプログラムを実行することと、
該容量に関連してＲＡＩＤレベルを実装することであって、該ＲＡＩＤレベルを実装するステップは、一連の冗長セグメントを格納することを含み、各冗長セグメントは、各冗長セグメントが、該一連のセグメントのうちの１つ以上のセグメントに対応することによって、各冗長セグメントが、該一連のセグメントのうちの１つ以上に対応するデータバンクと同一のデータバンク上に存在しない、ことと、
該容量の該一連のセグメントの第１のセグメントに対応するコマンドを受信することであって、該コマンドは、該複数のデータバンクのうちの該少なくとも１つの上で実行する該アプリケーションプログラムから受信される、ことと、
該複数のデータバンクの第１のデータバンクを決定することであって、該第１のデータバンクは、該第１のセグメントに対応する、ことと、
該第１のセグメントに対する該第１のコマンドを実行することであって、該第１のコマンドは、該第１のデータバンク上で実行される、ことと
を含む、方法。
（項目７）
上記アプリケーションプログラムを実行することは、上記複数のデータバンクのうちの上記少なくとも１つの上の仮想化層を使用して、上記仮想マシンを実行することを含む、項目６に記載の方法。
（項目８）
上記第２の容量は、上記複数のデータバンクのそれぞれの上に格納される、項目７に記載の方法。
（項目９）
上記複数のデータバンクのうちの破損データバンクを検出することと、
該破損データバンクに割り振られた一連のＶＭを決定することと、
該一連のＶＭを該複数のうちの別のデータバンクに再度割り振ることと
をさらに含む、項目８に記載の方法。
（項目１０）
上記第１のコマンドが書き込みコマンドであるかどうか、および該第１のコマンドが上記複数のデータバンクの第２のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第２のデータバンクは、上記第１のセグメントに関連付けられる第１の冗長セグメントに対応し、該第２のデータバンクが上記コマンドを受信したデータバンクである場合、上記第１の冗長セグメントに対する該第１のコマンドを実行し、そうでない場合、該第１のコマンドを該第２のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの１つに対応し、各セグメントは、該複数のデータバンクの順列に従って、該複数のデータバンクのうちの１つに割り当てられ、上記冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる上記容量のうちのいずれかのセグメントに対応する、該複数のデータバンクのそれぞれとは異なる、該複数のデータバンクのうちの１つに割り当てられる、項目９に記載の方法。
（項目１１）
アプリケーションプログラムと関連して１つ以上のデータバンクコンピュータに実装される分散型ＲＡＩＤのための方法であって、
アプリケーションプログラムから、第１の容量の第１のセグメントに対応するコマンドを受信することであって、該第１の容量および該容量と併せて実装されるＲＡＩＤレベルに対応する冗長データは、該容量の各セグメントについて、該セグメントに関連付けられる該冗長データを備える対応する冗長セグメントが、該セグメントと同一のデータバンク上に存在しないように、複数のデータバンクのそれぞれの上に格納され、該アプリケーションプログラムは、仮想マシンとして格納され、該複数のデータバンクのうちの少なくとも１つの上で実行される、ことと、
該複数のデータバンクの第１のデータバンクを決定することであって、該第１のデータバンクは、該第１のセグメントに対応する、ことと、
該第１のセグメントに対する該第１のコマンドを実行することであって
該第１のコマンドは、該第１のデータバンク上で実行される、ことと
を含む、方法。
（項目１２）
上記アプリケーションプログラムを実行することは、上記データバンク上の仮想化層を使用して、上記仮想マシンを実行することを含む、項目１１に記載の方法。
（項目１３）
上記アプリケーションプログラムを実行することは、上記データバンク上の仮想化層を使用して、上記仮想マシンを実行することを含む、項目１２に記載の方法。
（項目１４）
上記複数のデータバンクのうちの破損データバンクを検出することと、
上記破損データバンクに割り振られた一連のＶＭを決定することと、
上記一連のＶＭを上記複数のデータバンクのうちの別のデータバンクに再度割り振ることと
をさらに含む、項目１３に記載の方法。
（項目１５）
上記第１のコマンドが書き込みコマンドであるかどうか、および該第１のコマンドが上記複数のデータバンクの第２のデータバンクを決定する書き込みコマンドであるかどうかを決定することをさらに含み、該第２のデータバンクは、上記第１のセグメントに関連付けられる第１の冗長セグメントに対応し、該第２のデータバンクが上記コマンドを受信した上記データバンクである場合、上記第１の冗長セグメントに対する該第１のコマンドを実行し、そうでない場合、該第１のコマンドを該第２のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの１つに対応し、各セグメントは、該複数のデータバンクの順列に従って、該複数のデータバンクのうちの１つに割り当てられ、上記冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる上記容量のうちのいずれかのセグメントに対応する該複数のデータバンクのそれぞれとは異なる、上記複数のデータバンクのうちの１つに割り当てられる、項目１４に記載の方法。
（項目１６）
種々のアプリケーションプログラムと関連して分散型ＲＡＩＤを実装するためのコンピュータ実行可能命令を備える、コンピュータ読み取り可能媒体であって、該コンピュータ命令は、
複数のデータバンク上に第１の容量を確立することであって、該第１の容量は、一連のセグメントを備え、該一連のセグメントは、該複数のデータバンク上に格納される、ことと、
該複数のデータバンク上に第２の容量を確立することであって、該第２の容量は、仮想マシンとして格納されるアプリケーションプログラムに対応する、ことと、
該複数のデータバンクのうちの少なくとも１つの上で、該アプリケーションプログラムを実行することと、
該容量と併せてＲＡＩＤレベルを実装することであって、該ＲＡＩＤレベルを実装することは、一連の冗長セグメントを格納することを含み、各冗長セグメントは、各冗長セグメントが、該一連のセグメントのうちの対応する１つ以上と同一のデータバンク上に存在しないように、該一連のセグメントのうちの１つ以上に対応することと、
該容量の該一連のセグメントの第１のセグメントに対応するコマンドを受信することであって、該コマンドは、該複数のデータバンクのうちの該少なくとも１つの上で実行する該アプリケーションプログラムから受信される、ことと、
該複数のデータバンクの第１のデータバンクを決定することであって、該第１のデータバンクは、該第１のセグメントに対応する、ことと
該第１のセグメントに対する該第１のコマンドを実行することであって、該第１のコマンドは、該第１のデータバンク上で実行される、ことと
を行うように実行可能である、コンピュータ読み取り可能媒体。
（項目１７）
上記アプリケーションプログラムを実行することは、上記複数のデータバンクのうちの上記少なくとも１つの上の仮想化層を使用して、上記仮想マシンを実行することを含む、項目１６に記載のコンピュータ読み取り可能媒体。
（項目１８）
上記第２の容量は、上記複数のデータバンクのそれぞれの上に格納される、項目１７に記載のコンピュータ読み取り可能媒体。
（項目１９）
上記命令はさらに、
上記複数のデータバンクのうちの破損データバンクを検出することと、
該破損データバンクに割り振られた一連のＶＭを決定することと、
該一連のＶＭを該複数のデータバンクのうちの別のデータバンクに再度割り振ることと
を行うように実行可能である、項目１８に記載のコンピュータ読み取り可能媒体。
（項目２０）
上記命令はさらに、上記第１のコマンドが書き込みコマンドであるかどうか、および該第１のコマンドが上記複数のデータバンクの第２のデータバンクを決定する書き込みコマンドであるかどうかを決定するように実行可能であり、該第２のデータバンクは、上記第１のセグメントに関連付けられる第１の冗長セグメントに対応し、該第２のデータバンクが上記コマンドを受信したデータバンクである場合、該第１の冗長セグメントに対して上記第１のコマンドを実行し、そうでない場合、該第１のコマンドを上記第２のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの１つに対応し、各セグメントは、該複数のデータバンクの順列に従って、該複数のデータバンクのうちの１つに割り当てられ、上記冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる上記容量のうちのいずれかのセグメントに対応する、該複数のデータバンクのそれぞれとは異なる該複数のデータバンクのうちの１つに割り当てられる、項目１９に記載のコンピュータ読み取り可能媒体。
（項目２１）
アプリケーションプログラムと関連して１つ以上のデータバンクコンピュータに実装される、分散型ＲＡＩＤのためのコンピュータ読み取り可能媒体であって、コンピュータ命令は、
アプリケーションプログラムから、第１の容量の第１のセグメントに対応するコマンドを受信することであって、該第１の容量および該容量と併せて実装されるＲＡＩＤレベルに対応する冗長データは、該容量の各セグメントについて、そのセグメントに関連付けられる該冗長データを備える、対応する冗長セグメントが、該セグメントと同一のデータバンク上に存在しないように、複数のデータバンクのそれぞれの上に格納され、該アプリケーションプログラムは、仮想マシンとして格納され、該複数のデータバンクのうちの少なくとも１つの上で実行される、ことと
該複数のデータバンクの第１のデータバンクを決定することであって、該第１のデータバンクは、該第１のセグメントに対応する、ことと
該第１のセグメントに対する該第１のコマンドを実行することであって、該第１のコマンドは、該第１のデータバンク上で実行される、ことと
を行うように実行可能である、コンピュータ読み取り可能媒体。
（項目２２）
上記アプリケーションプログラムを実行することは、上記データバンク上の仮想化層を使用して、上記仮想マシンを実行することを含む、項目２１に記載のコンピュータ読み取り可能媒体。
（項目２３）
上記アプリケーションプログラムを実行することは、上記データバンク上の仮想化層を使用して、上記仮想マシンを実行することを含む、項目２２に記載のコンピュータ読み取り可能媒体。
（項目２４）
上記コンピュータ命令は、上記第１のコマンドが書き込みコマンドであるかどうか、および該第１のコマンドが上記複数のデータバンクの第２のデータバンクを決定する書き込みコマンドであるかどうかを決定するように実行可能であり、該第２のデータバンクは、上記第１のセグメントに関連付けられる第１の冗長セグメントに対応し、該第２のデータバンクが上記コマンドを受信した上記データバンクである場合、該第１の冗長セグメントに対する上記第１のコマンドを実行し、そうでない場合、該第１のコマンドを該第２のデータバンクに転送し、各容量の各セグメントは、該複数のデータバンクのうちの１つに対応し、各セグメントは、該複数のデータバンクの順列に従って、該複数のデータバンクのうちの１つに割り当てられ、上記冗長セグメントのそれぞれは、該冗長セグメントに関連付けられる容量のうちのいずれかのセグメントに対応する該複数のデータバンクのそれぞれとは異なる該複数のデータバンクのうちの１つに割り当てられる、項目２３に記載のコンピュータ読み取り可能媒体。
【図面の簡単な説明】
【００１１】
【図１】図１は、ＲＡＩＤシステムを採用する、アーキテクチャの一実施形態のブロック図である。
【図２Ａ】図２Ａは、データバンクの一実施形態のブロック図である。
【図２Ｂ】図２Ｂは、データバンクのアーキテクチャの一実施形態のブロック図である。
【図３】図３は、データバンクの一実施形態のブロック図である。
【図４Ａ】図４Ａは、データバンクのアーキテクチャの一実施形態の実施例のブロック図である。
【図４Ｂ】図４Ｂは、データバンクのアーキテクチャの一実施形態の実施例のブロック図である。
【図４Ｃ】図４Ｃは、データバンクのアーキテクチャの一実施形態の実施例のブロック図である。
【図５】図５は、上で他のアプリケーションが実行され得る、ＲＡＩＤシステムを採用する、アーキテクチャの一実施形態のブロック図である。
【図６】図６は、ＲＡＩＤシステム上でのアプリケーションの実行の一実施形態のフローチャートである。
【図７】図７は、ＲＡＩＤシステムと併せた仮想マシンの格納の一実施形態を描写する、ブロック図である。
【発明を実施するための形態】
【００１２】
本発明および種々の特徴ならびにそれらの有利な詳細は、添付の図面に図示される非制限的な実施形態を参照してより完全に説明され、以下の説明に詳細に記述される。本発明の詳細を不必要に不明瞭にしないように、周知の開始材料、処理技術、構成要素、および機器の説明は、省略されている。しかしながら、発明を実施するための形態および具体的な実施例は、本発明の好ましい実施形態を示すが、制限としてではなく、例としてのみ与えられていることを理解されたい。本開示から、根本的な発明の概念の趣旨および／または範囲内の種々の置換、修正、追加、および／または再配列が当業者に明らかとなるであろう。本明細書に記載される実施形態は、コンピュータ読み取り可能媒体（例えば、ＨＤ）、ハードウェア回路等、または任意の組み合わせ上に存在し得る、好適なコンピュータ実行可能命令に実装することができる。
【００１３】
具体的な実施形態を記載する前に、特定の実施形態を実装するためのハードウェアアーキテクチャの実施形態を本明細書に説明する。一実施形態は、ネットワークに通信可能に連結される、１つ以上のコンピュータを含むことができる。当業者に公知であるように、コンピュータは、中央演算処理装置（「ＣＰＵ」）と、少なくとも１つの読み込み専用メモリ（「ＲＯＭ」）と、少なくとも１つのランダムアクセスメモリ（「ＲＡＭ」）と、少なくとも１つのハードドライブ（「ＨＤ」）と、１つ以上の入力／出力（「Ｉ／Ｏ」）デバイスとを含むことができる。Ｉ／Ｏデバイスには、キーボード、モニタ、プリンタ、電子指示デバイス（マウス、トラックボール、スタイリスト等）等を含むことができる。種々の実施形態では、コンピュータは、ネットワーク上の少なくとも１つのデータベースへのアクセスを有する。
【００１４】
ＲＯＭ、ＲＡＭ、およびＨＤは、ＣＰＵが実行可能なコンピュータ実行可能命令を格納するためのコンピュータメモリである。本開示内では、「コンピュータ読み取り可能媒体」という用語は、ＲＯＭ、ＲＡＭ、およびＨＤのみに制限されず、プロセッサが読み込むことができる任意の種類のデータストレージ媒体を含むことができる。いくつかの実施形態では、コンピュータ読み取り可能媒体は、データカートリッジ、データバックアップ磁気テープ、フロッピー（登録商標）ディスク、フラッシュメモリドライブ、光学データストレージドライブ、ＣＤ−ＲＯＭ、ＲＯＭ、ＲＡＭ、ＨＤ等を指し得る。
【００１５】
本明細書に記載される機能性またはプロセスの少なくとも部分は、好適なコンピュータ実行可能命令に実装することができる。コンピュータ実行可能命令は、ソフトウェアコード構成要素またはモジュールとして、１つ以上のコンピュータ読み取り可能媒体（非揮発性メモリ、揮発性メモリ、ＤＡＳＤアレイ、磁気テープ、フロッピー（登録商標）ディスク、ハードドライブ、光学ストレージデバイス等、または任意の他の好適なコンピュータ読み取り可能媒体もしくはストレージデバイス等）上に格納され得る。一実施形態では、コンピュータ実行可能命令は、コンパイルされたＣ＋＋、Ｊａｖａ（登録商標）、ＨＴＭＬ、または任意の他のプログラミングもしくはスクリプトコードのラインに含まれ得る。
【００１６】
さらに、開示される実施形態の機能は、１つのコンピュータ上に実装されてもよく、またはネットワーク内の、もしくはネットワークにわたる２つ以上のコンピュータ間で共有／分散され得る。実施形態を実装するコンピュータ間での通信は、任意の電子、光学、高周波信号、または公知のネットワークプロトコルに従う、通信の他の好適な方法およびツールを使用して達成することができる。
【００１７】
本明細書で使用される場合、「備える（ｃｏｍｐｒｉｓｅｓ）」、「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｅｓ）、「含む（ｉｎｃｌｕｄｉｎｇ）」、「有する（ｈａｓ）」、「有する（ｈａｖｉｎｇ）」という用語、またはこれらの任意の他の変形は、非排他的な含有を網羅することが意図される。例えば、プロセス（ａ  ｐｒｏｃｅｓｓ）、プロセス（ｐｒｏｃｅｓｓ）、物品、または要素のリストを備える装置は、必ずしもこれらの要素に制限されず、明確にリストされていない、またはそのようなプロセス、物品、もしくは装置に内在する、他の要素を含み得る。さらに、そうではないと明確に述べられていない限り、「または」は、排他的な「または」ではなく、包括的な「または」を指す。例えば、条件ＡまたはＢは、以下の、Ａが真（または存在する）かつＢが偽（または存在しない）、Ａが偽（または存在しない）かつＢが真（または存在する）、ならびにＡおよびＢの両方が真（または存在する）のいずれか１つによって満足される。
【００１８】
さらに、本明細書に与えられる任意の実施例または図解は、決して、それらと共に利用される、いかなる用語に対する制約としても、制限としても、またはいかなる用語の定義を表現するとも見なされない。代わりに、これらの実施例または図解は、１つの特定の実施形態に関して説明しており、一例にすぎないと見なされる。当業者は、これらの実施例または図解と共に利用される、いかなる用語も、それと共に、または明細書の他の場所に与えられている場合も与えられていない場合もある、他の実施形態を包含し、すべてのそのような実施形態は、その用語の範囲内に含まれることが意図されることを認識するであろう。そのような非制限的な実施例および図解を指定する言語には、「例えば（例えば）、「例として（ｆｏｒ  ｉｎｓｔａｎｃｅ）」、「例えば（ｅ．ｇ．）」、「一実施形態では」を含むが、これらに限定されない。
【００１９】
本願は、２００９年６月５日にＧａｌｌｏｗａｙらによって出願された、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｒｅｂｕｉｌｄｉｎｇ  Ｄａｔａ  ｉｎ  ａ  Ｄｉｓｔｒｉｂｕｔｅｄ  ＲＡＩＤ  Ｓｙｓｔｅｍ」の米国特許出願第１２／４７９，３１９号、２００９年６月５日にＧａｌｌｏｗａｙらによって出願された、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｄａｔａ  Ｍｉｇｒａｔｉｏｎ  ｉｎ  ａ  Ｄｉｓｔｒｉｂｕｔｅｄ  ＲＡＩＤ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ」の同第１２／４７９，３６０号、２００９年６月５日にＧａｌｌｏｗａｙらによって出願された、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｄｉｓｔｒｉｂｕｔｉｎｇ  Ｃｏｍｍａｎｄｓ  ｔｏ  Ｔａｒｇｅｔｓ」の同第１２／４７９，４０３号、２００９年６月５日にＧａｌｌｏｗａｙらによって出願された、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ
ｆｏｒ  Ｉｎｉｔｉａｌｉｚｉｎｇ  Ｓｔｏｒａｇｅ  ｉｎ  ａ  Ｓｔｏｒａｇｅ  Ｓｙｓｔｅｍ」の同第１２／４７９，３７７号、２００９年６月５日にＧａｌｌｏｗａｙらによって出願された、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｒｅｂｕｉｌｄｉｎｇ  Ｄａｔａ  ｉｎ  ａ  Ｄｉｓｔｒｉｂｕｔｅｄ  ＲＡＩＤ  Ｓｙｓｔｅｍ」の同第１２／４７９，４３４号、および２００９年６月５日にＧａｌｌｏｗａｙらによって出願された、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｐｌａｃｅｍｅｎｔ  ｏｆ  Ｄａｔａ  ｏｎ  ａ  Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅ」の同第１２／４７９，３９４号、ならびにＧａｌｌｏｗａｙによる、名称が「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｐｒｏｔｅｃｔｉｎｇ  Ａｇａｉｎｓｔ  Ｍｕｌｔｉｐｌｅ  Ｆａｉｌｕｒｅｓ  ｉｎ  ａ  ＲＡＩＤ  Ｓｙｓｔｅｍ」の第＿＿＿＿＿＿＿＿＿＿（ＰＩＶＯＴ１１７０−１）号に関し、これらのすべては、参照によって本明細書に完全に援用される。
【００２０】
ここで、特に、データストレージに関する文脈の要約記述が有用であり得る。上述されるように、ＲＡＩＤシステムは、信頼性を向上し、場合によっては、コンピューティングデバイス（ホストとして公知）の処理量を改善するために、ストレージにこれらのＲＡＩＤシステムを使用して、集合的にアレイと称される、複数のハードディスクドライブ（または他の種類のストレージ媒体）にわたって、データを分割および複製する。しかしながら、ＲＡＩＤの現行の実装は、種々の問題を有する場合がある。
【００２１】
特に、特定のこれらの問題は、多くの場合において、ＲＡＩＤシステムとのすべての通信は、ＲＡＩＤシステムを制御し、管理する、単一のサーバにアドレス指定されなければならない等、これらのＲＡＩＤシステムのアーキテクチャによって課される制限から生じる場合がある。このアーキテクチャは、ＲＡＩＤシステムおよびＲＡＩＤシステムを実装するために使用されるコンピューティングデバイスを利用するホストを備える、物理的構成要素の冗長性をもたらし得る。物理的構成要素の冗長性に加えて、ホストおよびＲＡＩＤシステムはまた、動作中に、同一の資源の多くを消費し得る。ホストおよびＲＡＩＤシステムの両方が、電力、冷却、ラックスペース等を要求し得る。この状況は、ハードウェアの出費の増加、通信ボトルネック、ホストおよびＲＡＩＤシステムの両方を含有するための膨大な物理的空間の必要性等を含む、数多くの望ましくない問題を引き起こす可能性がある。
【００２２】
特定のＲＡＩＤシステムに関して、本発明の特定の実施形態を図示することが有用であるが、しかしながら、特定の実施形態が図示される特定のＲＡＩＤシステムは、本発明の他の実施形態の適用性または使用に制限を課さず、そのような実施形態は、他の種類のＲＡＩＤシステムまたは他の種類のストレージシステム全体を含む、種々の状況のいずれにも有用に採用され得ることに留意されたい。
【００２３】
これを前提として、特定の実施形態は、ＲＡＩＤシステムに関して有用に図示されてもよく、関連ＲＡＩＤレベルを伴う容量は、ＲＡＩＤシステムを使用して作成され得る。次いで、ＲＡＩＤアプリケーションのそれぞれは、その容量またはその容量と併せた所望のＲＡＩＤレベルの実装に関連付けられるデータが、ＲＡＩＤシステムの複数のデータバンク上に格納され得るように、その容量のデータに関連付けられるここで、図１を参照すると、ＲＡＩＤシステムの一実施形態を利用するシステムのためのアーキテクチャのブロック図が描かれる。ＲＡＩＤシステム１００は、一連のデータバンク１１０を含み、各データバンク１１０は、スイッチ１２０の両方に通信可能に結合される。スイッチ１２０の各々は、また、各ホスト１０２に通信可能に結合され、その結果、ホスト１０２は、特定のデータバンク１１０と対応する一連の経路を介して各データバンク１１０と通信し得、各経路は、スイッチ１２０のうちの１つを含む。
ここで、図１を参照すると、ＲＡＩＤシステムの一実施形態を利用するシステムのためのアーキテクチャのブロック図が描かれる。ＲＡＩＤシステム１００は、一連のデータバンク１１０を含み、各データバンク１１０は、スイッチ１２０の両方に通信可能に結合される。スイッチ１２０の各々は、また、各ホスト１０２に通信可能に結合され、その結果、ホスト１０２は、特定のデータバンク１１０と対応する一連の経路を介して各データバンク１１０と通信し得、各経路は、スイッチ１２０のうちの１つを含む。
【００２４】
データバンク１１０と、スイッチ１２０と、ホスト１０２との間の通信可能な連結は、イーサネット（登録商標）、ＳＣＳＩ、ｉＳＣＳＩ、ファイバーチャネル、シリアルアタッチドＳＣＳＩ（「ＳＡＳ」）、アドバンスドテクノロジーアタッチメント（「ＡＴＡ」）、シリアルＡＴＡ（「ＳＡＴＡ」）、または当該技術分野において公知の他のプロトコルを含む、所望のほぼいかなる伝送媒体（有線または無線のいずれか）を使用しても達成され得る。さらに、通信可能な連結は、インターネット、ＬＡＮ、ＷＡＮ、無線ネットワーク、または当該技術分野において公知の任意の他の通信ネットワーク等の通信ネットワークと併せて実装され得る。
【００２５】
次いで、ｉＳＣＳＩ、ＳＣＳＩ等のコマンドプロトコルを使用する一実施形態では、ホスト１０２は、データを操作するために、データバンク１１０と通信し得る。より具体的には、データバンク１１０のそれぞれは、ストレージ媒体（本明細書上で、後により詳細に説明される）を備える。集合的に、データバンク１１０内のストレージ媒体は、ストレージ、ストレージデバイス等の１つ以上の連続ブロックとして、ホスト１０２に対して仮想化され、提示され得る。例えば、ｉＳＣＳＩプロトコルが利用される時、データバンク１１０内のストレージ媒体は、一実施形態では、複数のポートを伴う、ＳＣＳＩターゲットとして、ホスト１０２に提示され得る。
【００２６】
したがって、動作中、一実施形態では、ホスト１０２（またはホスト１０２側のユーザもしくはデータバンク１１０とインターフェースをとっているユーザ）は、容量の作成を要求し、その容量と併せて実装されるＲＡＩＤのレベルを指定し得る。その容量およびその容量と関連した所望のレベルのＲＡＩＤの実装に関連付けられるデータは、データバンク１１０にわたって格納される。次いで、ホスト１０２は、容量またはその一部に対応する論理アドレスを使用して、この容量にアクセスし得る。このように、ホスト１０２は、作成されたストレージの容量を利用することができ、ホスト１０２に対して実質的に見えないように、これらの容量と併せて耐障害性を達成することができる。
【００２７】
ストレージの仮想化およびデータバンク１１０を利用したＲＡＩＤの実装は、ＲＡＩＤを実装するように動作可能なデータバンク１１０コンピュータの一実施形態のブロック図を描写する、図２Ａを参照して、より理解され得る。ここで、データバンク１１０は、データストア２５０と、コンピュータ読み取り可能媒体上に格納された命令を実行するように動作可能なプロセッサ２０２とを備え、命令は、ＲＡＩＤアプリケーション２１０を実装するように動作可能である。ＲＡＩＤアプリケーション２１０は、そのデータバンク１１０に関する障害が存在しているかどうかを決定するために、他のデータバンク１１０上のＲＡＩＤアプリケーション２１０にハートビート通信を周期的に発行し得る。ＲＡＩＤアプリケーション２１０は、別のデータバンク１１０が障害を抱えていると決定する場合、そのデータバンク１１０に対応する、１つ以上の障害フラグを設定し得る。各データバンク１１０上の各ＲＡＩＤアプリケーション２１０のこれらの障害フラグを使用して、特定のＲＡＩＤアプリケーション２１０は、特定のデータバンク１１０に障害があるかどうかを決定し得る。
【００２８】
また、ＲＡＩＤアプリケーション２１０は、例えば、ＳＡＴＡ、ＰＡＴＡ、ＦＣ等の公知のほぼいかなるプロトコルにも従って動作するディスク２５２であり得る、１つ以上のストレージ媒体を備えるデータストア２５０へのアクセスを有してもよく（例えば、読み込む、書き込む、コマンドを発行する等のために）、ディスク２５２のそれぞれは、同等のサイズであったり、そうでなかったりし得る。データバンク１１０のそれぞれの上で実行するＲＡＩＤアプリケーション２１０は、データバンク１１０にわたるデータストア２５０を使用した容量の割り当ておよび使用、ならびにすべてがメモリ２３０（データストア２５０または別のメモリ全体であり得る）内に格納され得る、データバンク１１０間で共有される一連のグローバルテーブル２４０、一連のローカルテーブル２４５、および書き込みキャッシュ２６０を利用した、これらの容量と併せたＲＡＩＤの実装を可能にすることができる。
【００２９】
図２Ｂは、ＲＡＩＤを実装するように動作可能なデータバンク１１０コンピュータを実装するために使用され得る、ハードウェアアーキテクチャの一実施形態のブロック図を描写する。この構造的実施例では、データバンク１１０は、Ｉｎｔｅｌ  ｘ８６アーキテクチャまたはいくつかの他のアーキテクチャ全体に従い得る、１つ以上のプロセッサ２０２と、一実施形態では、サウスブリッジチップ等であり得る、バスを通してＩ／Ｏコントローラハブ２１２に連結される、メモリ２３０とを備える。Ｉ／Ｏコントローラハブ２１２は、同様に、ＰＣＩ−Ｘバス、ＰＣＩ高速バス等のバス２７２に連結され、それを制御し得る。例えば、ＬＳＩ１０６８  ＳＡＴＡ／ＳＡＳコントローラ等の１つ以上のディスクコントローラ２６２が、このバス２７２に連結される。これらのディスクコントローラ２６２のそれぞれは、１つ以上のディスク２５２に連結され、集合的に、これらのディスク２５２は、データストア２５０を構成し得る。さらに、また、１つ以上のネットワークインターフェース２８２は、バス２７２に連結され得る。これらのネットワークインターフェース２８２は、マザーボード上に含まれるネットワークインターフェース（イーサネット（登録商標）等）であってもよく、イーサネット（登録商標）、ファイバーチャネル等の１つ以上のプロトコルを介してインターフェースをとるように構成された、１つ以上のネットワークインターフェースカードを備えてもよく、またはデータバンク１１０が、これらのネットワークインターフェース２８２を通してスイッチ１２０と通信し得るような、いくつかの他の種類のネットワークインターフェースであり得る。
【００３０】
いくつかの実施形態では、データバンク１１０を実装するために使用される、コンピューティングデバイスの構成要素は、ＲＡＩＤアプリケーション２１０を実行するのに必要とされ得るより多くの演算能力を有し得る（または、有するように構築され得る）場合もある。多くの場合、したがって、データバンク１１０を実装するために使用されるコンピューティングデバイス（例えば、プロセッサ、キャッシュ、メモリ、基板等）は、ＲＡＩＤアプリケーション２１０のみを実行するために使用される時、未利用演算能力を有し得る。したがって、この余剰演算能力を、ホスト１０２上で実行するアプリケーションを実行するため、およびＲＡＩＤアプリケーション２１０を利用するために利用することが望まれる。これには、問題があり得るが、しかしながら、多くの場合、異なるホスト１０２上で実行する、多種多様なこれらのアプリケーションが存在し得、ホストのそれぞれは、異なるオペレーティングシステムを実行し得るため、アプリケーションは、１種類のオペレーティングシステム上でのみ実行するように構成され得る等である。
【００３１】
したがって、今、ＲＡＩＤシステム（または他の種類のアプリケーション）を利用し得る種々のアプリケーションが、そのＲＡＩＤシステムを実装する同一の一連のコンピューティングデバイス上で実行されることを可能にする、本発明のシステムおよび方法が注目される。ＲＡＩＤアプリケーションが、同一の一連のコンピューティングデバイス上の他のアプリケーションと併せて実行されることを可能にするために、仮想化層が、データバンク上で実行され得る。一式の所望のアプリケーションプログラムは、この仮想化層を使用して実行されてもよく、仮想化層上で実行するアプリケーションの各インスタンスのコンテキストは、ＲＡＩＤシステムを利用して保持される要領内に格納され得る。次いで、これらの仮想マシン（例えば、アプリケーションおよび容量内に格納される任意の適用可能なコンテキスト情報）は、データバンクのうちのいずれか１つの上の仮想化層と併せて実行され得る。このように、一連のコンピューティングデバイスは、ＲＡＩＤシステムを実装し、（特に）そのようなＲＡＩＤシステムを利用するアプリケーションを実行するために利用され得る。これらの種類のアプリケーションには、例えば、ビデオ監視アプリケーション、ゲーム、小売店または銀行取引アプリケーション、ビデオストリーミングアプリケーション、コンテンツホスティングアプリケーション等が挙げられる。
【００３２】
ＲＡＩＤシステムを実装するコンピューティングデバイスと併せて、何よりもまず、より少ない空間、電力、冷却、予備等が必要とされ得るため、物理資源の統合が達成され、物理資源、ならびにそのような資源をインストールする、設定する、利用する、および維持するために要求される資源の両方に関連付けられる費用が削減され得る。さらに、アプリケーションおよびＲＡＩＤシステムの使用と併せて実施される通信が、より少ない場合がある、またはより迅速に実施され得るため、アプリケーションおよびＲＡＩＤシステムの両方の実装において、より速い速度が達成され得る。
【００３３】
加えて、本願の残りの部分を検討した後により詳細が明らかとなるように、アプリケーションのインスタンスが仮想マシンとして保存され、ＲＡＩＤシステムを実装するデータバンク上の仮想化層上で実行される設定によって、耐障害性のレベルが導入され得る。簡潔に、この耐障害性のレベルは、各仮想マシン（例えば、仮想化層上で実行され得る、実行しているアプリケーションのインスタンス）が、ＲＡＩＤシステムの容量内に格納されるということは、仮想マシンが、データバンクのうちの１つの破損の場合に回復され得ることを意味し得るという事実からもたらされ得る。加えて、仮想マシンが、任意のデータバンクの仮想化層上で実行され得るため、耐障害性が導入されてもよく、したがって、単一のデータバンクが破損する場合にさえ、各仮想マシンは、依然として実行され得る。
【００３４】
ここで、図３を参照すると、ＲＡＩＤシステムを実装し、種々のアプリケーションの実行を可能にし得る、データバンクの一実施形態が描写されている。ここで、データバンク１１１０は、データストア３５０と、コンピュータ読み取り可能媒体上に格納される命令を実行するように動作可能なプロセッサ（図示せず）または他のハードウェアとを備える。このハードウェアは、例えば、ｘ８６プラットフォーム等であり得る。
【００３５】
コンピュータ読み取り可能媒体上に格納される命令は、仮想化層３１２およびＲＡＩＤアプリケーション３１０を実装するように動作可能であり得る。仮想化層３１２は、当該技術分野において公知であるように、例えば、Ｓｕｎ  ＭｉｃｒｏｓｙｓｔｅｍｓのＣｏｎｔａｉｎｅｒｓ、Ｌｉｎｕｘ  ＫＶＭ、Ｌｉｎｕｘ  ＶＳｅｒｖｅｒ、Ｏｒａｃｌｅ  ＶＭ、Ｖｉｒｔｕａｌ  ＰＣ、ＭｉｃｒｏｓｏｆｔのＶｉｒｔｕａｌ  Ｓｅｒｖｅｒ、Ｓｕｎ  ＭｉｃｒｏｓｙｓｔｅｍｓのＩＢＭ  Ｌｏｇｉｃａｌ  ＤｏｍａｉｎｓのＰｏｗｅｒＶＭ、ＶＭｗａｒｅ  Ｓｅｒｖｅ等、または任意の他の種類の仮想マシンもしくはエミュレーションマシンアプリケーションのうちの１つであり得る。ＲＡＩＤアプリケーション３１０は、上述されるものと同様の機能性を有し得る。これらの１つ以上の実装を助長するために、メモリ３３０内のテーブル３４０が、ＲＡＩＤシステムによって格納されるどの容量が仮想マシンであるか、およびどのデータバンク１１０が特定の仮想マシンに割り振られているか等の情報を追跡し得るようにする。
【００３６】
図４Ａ、図４Ｂ、および図４Ｃを簡単に参照すると、仮想化層を伴うデータバンク１０１０のアーキテクチャの３つの実施形態が描写されている。そのようなアーキテクチャの他の実施形態が可能であり、利用され得ることに留意されたい。図４Ａでは、仮想化層３１２は、ＲＡＩＤアプリケーション３１０および仮想マシン４３０（アプリケーションおよびそれらの対応するコンテキスト）が、仮想化層３１２上で実行され得るように、ハードウェア層４０２上に存在し得る。図４Ｂは、ＲＡＩＤアプリケーション３１０および仮想マシン４３０（アプリケーションおよびそれらの対応するコンテキスト）が、仮想化層３１２上で実行され得るように、オペレーティングシステム４２０（例えば、Ｗｉｎｄｏｗｓ（登録商標）、Ｓｏｌａｒｉｓ、ＭａｃＯＳ等）が、オペレーティングシステム４２０上で実行する仮想化層３１２を伴うハードウェア層４０２上で実行され得る、実施形態を描写する。図４Ｃは、オペレーティングシステム４２０が、ハードウェア層４０２上で実行され得る、実施形態を描写する。ＲＡＩＤアプリケーション３１０および仮想化層３１２は、オペレーティングシステム４２０上で実行され得る。したがって、仮想マシン４３０は、仮想化層３１２上で実行され得る。
【００３７】
したがって、一連のデータバンク１１１０を使用してＲＡＩＤシステムを実装し、同一のデータバンク１１１０の１つ以上の上のこのＲＡＩＤシステムを利用し得る、１つ以上のアプリケーションを実行するように動作可能であり得る、システムの一実施形態が、図５に描写されている。
【００３８】
図６に移動すると、ＲＡＩＤアプリケーション３１０もまた実行している、データバンク１１１０上の１つ以上のアプリケーションを実行するための方法の一実施形態が描写されている。ステップ６１０で、アプリケーションは、データバンク１１１０の仮想化層３１２上で実行され得る。このインストレーションプロセスは、ステップ６２０で、仮想化層３１２によって実行される時に、特定のコンテキストと関連してアプリケーションを実行するように動作可能である、仮想マシンを作成し得る。より具体的には、一実施形態では、容量は、ＲＡＩＤアプリケーション３１０を使用して作成されてもよく、アプリケーションは、そのアプリケーションの実行からもたらされるコンテキストと共に、特定の時間、仮想化層３１２上のその容量内に格納され得る。
【００３９】
これは、どのように仮想マシン４３０のそれぞれがデータバンク１１１０のそれぞれのデータストア３５０内に格納される容量となり得るかを描写する、図７により明確に描写される。仮想マシンのそれぞれは、対応するコンテキストを伴うアプリケーションを起動するために、仮想マシン４３０が仮想化層３１２上で実行され得るように、アプリケーションの１つのインストールされたインスタンスおよび関連コンテキストに対応し得る。
【００４０】
図６に戻り、いったんアプリケーションがインストールされ、仮想マシンが作成されると、一実施形態では、ステップ６３０で、アプリケーションのインスタンスを備える仮想マシンは、特定のデータバンク１１１０上で実行するように割り振られてもよく、したがって、仮想マシンは、ステップ６４０で、割り振られたデータバンク１１１０の仮想化層３１２上で実行し得る。
【００４１】
何らかの理由のために、この仮想マシンの実行を停止することが望まれる場合は、どの時点であっても、仮想マシンは、仮想マシンの実行が、仮想マシンが割り振られている特定のデータバンク１１１０によって、同一の点から後に再開され得るように格納され得る。この格納は、必要に応じて、仮想マシン（仮想マシンに対応する容量）内にコンテキストを格納することを伴い得る。
【００４２】
各仮想マシン４３０がＲＡＩＤシステムを備えるデータバンク１１１０にわたって格納される際、仮想マシンが割り振られているデータバンク１１１０は、各仮想マシンにアクセスし、実行し得ることが留意されるであろう。加えて、その仮想マシンが、ＲＡＩＤアプリケーション３１０に関連付けられる容量内に格納され得るため、ＲＡＩＤのレベルは、その仮想マシンの格納と併せて実装され得ることが留意されるであろう。結果として、前述されるように、ＲＡＩＤアプリケーション３１０によって管理される容量として格納される仮想マシンを使用して、データバンク１１１０上でアプリケーションを実行することによって、ＲＡＩＤシステムのアーキテクチャによって、耐障害性が潜在的に達成され得る。
【００４３】
より具体的には、一実施形態では、各データバンク１１１０は、任意の仮想マシンにアクセスしてもよく、各仮想マシン４３０は、ＲＡＩＤのレベルと併せて格納され得るため、特定のデータバンク１１１０が破損する場合にさえ、任意の仮想マシンに関連するすべてのデータが、残りの動作しているデータバンク１１１０によって、依然としてアクセス可能であり得るため、アプリケーションは、依然として実行されることが可能であり得る。事実、一実施形態では、特定のデータバンク１１１０が破損する場合、破損データバンク１１１０が検出されてもよく、破損データバンク１１０に割り振られた各ＶＭは、破損データバンク１１１０上で実行していたすべてのＶＭが、今、別のデータバンク１１００上で実行するように、別の動作可能なデータバンク１１１０に実質的に自動的に割り振られ得る。この割り振りは、不規則に行われてもよく、または、各データバンク１１１０に割り振られるＶＭの数等の１つ以上の基準に基づいて行われ得る。破損データバンク１１１０のＶＭを自動的に再度割り振ることによって、アプリケーションにあるレベルの耐障害性を与えることに加えて、中断時間が最小限になり得る。
【００４４】
前述の明細書では、本発明は、特定の実施形態を参照して記載されてきた。しかしながら、当業者は、以下の特許請求の範囲に説明される、本発明の範囲から逸脱することなく、種々の修正および変更を行うことができることを理解する。したがって、本明細書および図面は、制限的な意味というよりは、実例と見なされ、すべてのそのような修正は、本発明の範囲内に含まれることが意図される。
【００４５】
利益、他の利点、および問題の解決策は、特定の実施形態に関して説明されてきた。しかしながら、利益、利点、問題の解決策、および任意の利益、利点、または解決策をもたらし得る、もしくはより顕著にし得る任意の構成要素は、任意の、もしくはすべての請求項の決定的に重要である、要求される、または必須の特徴あるいは構成要素であるとは解釈されない。
【外国語明細書】
2011154697000001.pdf