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