データ組織化を管理するための方法、システム、及びプログラム
独立ディスク冗長アレイ(RAID)構成のような、例えばデータの再構築を可能にする1つのデータ構成タイプにおいて構成されたデータを再構築することを含む、データを構築するための方法、システム、及びプログラムが提供される。一実施形態において、複数のデータブロックは、RAIDアレイ内のディスクドライブのような複数のストレージユニットにわたって記憶された1つのデータストライプから、ストレージプロセッサのキャッシュメモリをバイパスして1つのストレージプロセッサの1つのロジックエンジンに伝送される。1つのストアキューは、ストライプからの1つのデータブロックを再構築すべく、複数のディスクドライブからデータが伝送されたときに排他的論理和のような1つの論理ファンクションをそれぞれのデータブロックについて実行する。RAIDアレイにわたるデータストライプ内の失われたデータブロックを置き換えるべく、又は旧パリティデータブロックを置き換えるべく、構築されたデータブロックは、続いてRAIDアレイの1つのディスクドライブに伝送される。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、RAIDシステムのような、データ組織化の1つのシステムにおいてデータを管理するための方法、システム、及びプログラムに関する。
【背景技術】
【0002】
ディスクドライブのようなデータ記憶デバイスに記憶されるデータを組織化するために様々な技術が提案されている。そのようなデータ記憶構成の1つは、独立(又は廉価)ディスク冗長アレイすなわち(RAID)と呼ばれる。RAID組織化においては、2以上のディスクドライブが、耐障害性又はパフォーマンス、或いはその両方を向上させるべく組み合わせて使用される。異なる複数のタイプのRAIDデータストレージ構成が存在しており、これらの異なる複数のタイプはしばしばRAIDレベル0、1、2、・・・と呼ばれる。
【0003】
RAIDレベル0のデータ構成においては、例えば、1つのユーザファイルのデータは"ストライプ"すなわちユーザデータの複数のブロックがパフォーマンスを向上させるべく複数のディスクにわたって分散される。しかしながら、RAIDレベル0のデータ構成においては、一般的に、もしドライブのうちの1つが機能しなくなった場合にデータのリカバリのために提供される冗長性は存在しない。RAIDレベル3のデータ構成は、RAIDレベル0に似ているが、1つのディスクは典型的にはエラー訂正データを記憶するためにリザーブされ、エラー訂正データはしばしば"パリティデータと呼ばれる。このパリティデータは、もしドライブのうちの1つが機能しなくなった場合に失われたデータ再構築するために使用され得る。RAIDレベル5のデータ構成においては、ディスクドライブアレイにわたるデータストライプのそれぞれについてパリティデータが提供され、パリティデータを記憶することに個別のディスクドライブは供されない。代わりに、パフォーマンスを向上させるべく、ユーザデータの複数のストライプのためのパリティデータの複数のブロックが、全てのディスクアレイにわたって分散される。
【0004】
1つのRAID5構成において、ディスクドライブアレイにわたるデータストライプのそれぞれについてパリティデータの1つのブロックが存在する。そのような配置は、1つのドライブが機能しなくなった場合にデータの容易な再構築を提供する。例えば、1つのデータストライプが4個のデータブロック及び1つのパリティデータブロックを含んでいる場合、ストライプの複数のブロックのうちの1つが、ドライブ傷害、データ破壊、またはほかのタイプの障害により失われた場合には、失われたブロックはストライプの残存している4個のブロックを用いて再構築される。
【0005】
図1は、失われたデータを再構築すべく実行され得る論理オペレーションの従来技術の一例を示す。データの1つのストライプnが4個のデータブロック及び1つのパリティデータブロックを持ち、ストライプnからの1つのブロックのデータが失われた場合に、失われたデータは、3つの正常なデータブロックからの正常なデータの1つのサブブロック及びストライプnの正常なパリティブロックからの正常なパリティデータの1つのサブブロックを用いて、再構築され得る。したがって、図1の例において、ストライプnからの1つの正常なデータブロックからの正常なデータの1つの第1サブブロック30、及び、ストライプnからの1つの正常な第2のデータブロックからの正常なデータの1つの第2サブブロック32について、排他的論理和ファンクションが実行される。排他的論理和論理オペレーションの結果は、ストライプnからの正常な1つの第3データブロックからの正常なデータの他の1つのサブブロック33と排他的論理和がとられる。失われたデータのサブブロックを置き換えるためのデータの1つのサブブロック36を再構築すべく、その排他的論理和論理オペレーションの結果が、ストライプnからの正常なパリティブロックからの正常なパリティデータの1つのサブブロック34と排他的論理和がとられる。1つのストライプからデータブロック全体が失われた場合、ブロックの全体は、ブロックのそれぞれのサブブロックについて図1のオペレーションを繰り返して再構築され得る。
【0006】
図2は、図1の論理ファンクションに従う、複数のRAIDストレージユニットの失われたデータを再構築するための、1つのRAIDストレージプロセッサのロジックエンジン50の従来技術の一例を示す。ロジックエンジン50は、矢印54によって表されるようなストアキュー52の内容及び矢印56によって表されるような入力に存在するデータについて排他的論理和論理ファンクションを実行することができる1つのストアキュー52を有する。Intel80303集積回路チップは、アプリケーションアクセラレータユニット(AAU)と呼ばれる1つの類似のロジックエンジンを持つ。
【0007】
データの再構築におけるロジックエンジン50を使用したデータの読み込み及び読み込まれたデータの処理のオペレーションが図3に表される。 ストアキュー52をリセット(ブロック60)すると、第1読み込みオペレーション63(図2)において1つのRAIDアレイ66の1つのディスクドライブ64aの1つのストライプnから正常なデータの1つのブロックが、1つのストレージプロセッサ又はコントローラの1つのローカルメモリ68に読み込まれる(プロセスブロック62)。第2読み込みオペレーション70において、RAIDアレイ66の1つのディスクドライブ64bのストライプnから正常なデータの他の1つのブロックが、1つのストレージプロセッサ又はコントローラのローカルメモリ68に読み込まれる(プロセスブロック62)。第3読み込みオペレーション72において、RAIDアレイ66の1つのディスクドライブ64cのストライプnから正常なデータの1つの第3ブロックが、ローカルメモリ68に読み込まれる(プロセスブロック62)。第4読み込みオペレーション74において、RAIDアレイ66の1つのディスクドライブ64eのストライプnから正常なパリティデータの1つのブロックが、ローカルメモリ68に読み込まれる(プロセスブロック62)。
【0008】
全ての正常な複数のデータブロック及びパリティデータがストライプからひとたび読み込まれると(プロセスブロック80)、第5読み込みオペレーション84の一部において、ディスクドライブ64aから読み込まれたデータの1つのサブブロックが、ローカルメモリ68から読み込まれ(プロセスブロック82)、ストアキュー52内に記憶される。このデータは、例えば図1のデータ30のサブブロックであってよい。ストアキュー52は予めリセットされたので、ドライブ64aに由来するデータ30が、ローカルメモリ68から読み込まれたデータ30とストアキュー52のリセット内容との排他的論理和ファンクションを実行することによってストアキュー52内に記憶され得る。ローカルメモリ68からロジックエンジン50への読み込みオペレーションのサイズは、典型的にはストアキュー52の容量に依存する。したがって、例えばストアキュー52の容量が1Kバイトである場合、読み込みオペレーションはストアキュー52が1Kバイトのデータ30で満たされるまで継続する。
【0009】
ストライプnからの次のデータブロックの1つのサブブロック、すなわち、ディスクドライブ64bから読み込まれたデータブロックの1つのサブブロックが、第6読み込みオペレーション90の一部において、ローカルメモリ68から読み込まれる(プロセスブロック86)。このデータは、例えば図1のデータのサブブロック32であってよい。ドライブ64bから読み込まれたデータブロックからのデータのサブブロック32は、ストアキュー52内に予め記憶されたデータのサブブロック30と排他的論理和がとられ、1つの中間結果としてストアキュー52内に記憶される。
【0010】
ストライプnからの次のデータブロックの1つのサブブロック33(図1)、すなわち、ディスクドライブ64cから読み込まれたデータブロックの1つのサブブロックが、第7読み込みオペレーション92の一部として、ローカルメモリ68から読み込まれる(プロセスブロック86)。ドライブ64cから読み込まれたデータブロックからのデータのサブブロック33は、ストアキュー52の内容と排他的論理和がとられ(プロセスブロック88)、ストアキュー52内に1つの中間結果として記憶される。
【0011】
ストライプnからの次のデータブロックの1つのサブブロック33(図1)、すなわち、ディスクドライブ64eから読み込まれたデータブロックの1つのサブブロックが、第8読み込みオペレーション94の一部として、ローカルメモリ68から読み込まれる(プロセスブロック86)。ドライブ64eから読み込まれたパリティブロックからのパリティデータのサブブロック34は、ストアキュー52の内容と排他的論理和がとられ(プロセスブロック88)、ストアキュー52内に1つの中間結果として記憶される。
【0012】
ストライプnのデータ及びパリティの正常な複数のブロックの、対応する複数のサブブロックの全てがひとたび受け取られて処理されると(プロセスブロック95)、ストアキュー52内に記憶された中間結果は、ストライプnの再構築されたサブブロック36であり、書き込みオペレーション96の一部においてローカルメモリ68に書き込まれ(プロセスブロック96)、失われたサブブロックを置き換えるために続く書き込みオペレーション97においてディスクドライブ64dに書き込まれる。
【0013】
図3のプロセスは、全てのサブブロックが受け取られ(プロセスブロック98)、必要であればストライプnのブロック全体が再構築されるロジックエンジン50によって処理されるまで、ストライプnの複数のブロックのサブブロックのそれぞれについて反復される。さらに、例えばドライブ64dの全データが失われた場合、損害を受けたディスクドライブ64dの全てのブロックが再構築されるまで、ディスクドライブアレイ66のストライプのそれぞれについてこのプロセスが繰り返される。RAIDタイプのデータ構成において旧データを新データで更新するときに新パリティデータを構築するプロセスは似ている。
【0014】
それにもかかわらず、データストレージ組織化におけるプロセッサのパフォーマンスを向上させるために、継続的な技術的必要性が存在する。
【図面の簡単な説明】
【0015】
同様の参照番号が全体にわたって対応する構成要素を表す図面を参照する。
【図1】RAIDデータの再構築の従来技術を示す。
【図2】RAIDデータの再構築のためのロジックエンジンの従来技術を示す。
【図3】図2のロジックエンジンの従来技術を用いてデータを再構築するオペレーションの従来技術を示す。
【図4】データ構成の複数の態様が実装されたコンピューティング環境の一実施形態を示す。
【図5】データ構成の複数の態様が実装されたストレージプロセッサ環境の一実施形態を示す。
【図6】データ構成の複数の態様に従う、図5のストレージプロセッサのためのロジックエンジンの一実施形態を示す。
【図7】データを再構築すべく実行されるオペレーションの一実施形態を示す。
【図8】1つのデータブロックを再構築するために使用される複数のデータブロックを示す。
【図9】データを再構築するために実行される複数のオペレーションの他の実施形態を示す。
【図10】パリティデータを構築するために実行されるオペレーションの他の実施形態を示す。
【図11】説明された実施形態で使用され得る一アーキテクチャを示す。
【発明を実施するための最良の形態】
【0016】
以下の説明において、この文書の一部を形成し、いくつかの実施形態を示す添付の図面に対して参照がなされる。他の実施形態が利用されてよく、構造的又は機能的変更がなされてよいことが理解される。
【0017】
図4は、データ構成の複数の態様が実装された1つのコンピューティング環境を示す。 1つのコンピュータ102は、1以上の中央処理装置(CPU104(1つだけ図示される)、1つのメモリ106、不揮発性ストレージ108、1つのストレージプロセッサ109、1つのオペレーティングシステム110、及び1つのネットワークアダプタ112を備える。さらに、アプリケーションプログラム114は、メモリ内で実行され、ストレージ108からデータを読み込み、ストレージ108にデータを書き込むことができる。 コンピュータ102は、メインフレーム、サーバ、パーソナルコンピュータ、ワークステーション、ラップトップ、ハンドヘルドコンピュータ、テレフォニーデバイス、ネットワークアプライアンス、仮想化デバイス、ストレージプロセッサ、ストレージコントローラ等のような、技術的に知られた任意のコンピューティングデバイスを含んでよい。技術的に知られた任意のCPU104及びオペレーティングシステム110が使用されてよい。メモリ管理オペレーションの一環として、メモリ106内の複数のプログラム及びデータはストレージ108にスワップされてよい。コンピュータ102は、ネットワークアダプタ112を介してネットワーク118と通信することができる。
【0018】
デバイスドライバ120は、メモリ106内で実行され、ストレージプロセッサ109と通信し、オペレーティングシステム110とストレージデバイス109との間を仲介するためのストレージプロセッサ特有の複数のコマンドを有する。ストレージ108は、例えばディスクドライブ150a、150b、・・・、150nである、データの再構築を可能にする1つの組織化タイプでデータが記録される複数のストレージユニットを有する。図示された実施形態において、ディスクドライブ150a、150b、・・・、150nは、1つのRAIDアレイ151に組織化される。
【0019】
いくつかの実施形態において、ストレージプロセッサ109は、ストレージ108からのデータの読み込み又はストレージ108へのデータの書き込みにおいてコンピュータ102をアシストするためのいくつかの機能を実行する。例えば、ストレージプロセッサ109は、コンピュータ102からのLBAアドレスを、ディスクドライブ150a、150b、・・・、150nのシリンダ、ヘッド、及びセクタ指定に変換するための、ソフトウェア、ファームウェア、又はハードウェア、或いはこれらの組合せを有してよい。さらに、ストレージプロセッサ109は、ドライブ障害又は他のデータロスが発生した場合のデータの再構築を管理するデータコンストラクションマネージャ130を有してよい。さらに、データコンストラクションマネージャ130は、旧データが新データに更新された場合の新パリティデータの構築を管理することができる。
【0020】
適切なストレージプロセッサ109の一例が図5に示される。ストレージプロセッサ109は、ホストコンピュータ102とストレージ108との間での大量のデータの高速移動を促進する。ストレージプロセッサ109は、ホストコンピュータ102の1つのプライマリバス162とストレージ108の1つのストレージコントローラ166に結合された1つのセカンダリバス164との間の1つのブリッジ160を有する。ブリッジ160は、例えばシリアルアドバンスドテクノロジアタッチメント(SATA)コントローラであり得るストレージコントローラ166が、プライマリバス162から物理的に分離されることを可能にする。コントローラ166は、ストレージプロセッサ109をストレージ108に接続するストレージインタフェースに、コンピュータ情報をコンバートしてもよい。ストレージコントローラ166がストレージプロセッサ109の一部として示されているが、ストレージコントローラ166はストレージ108の一部又は別個の1つのユニットであってよい。
【0021】
プライマリアドレス変換ユニット168は、プライマリバス162から1つのプロセッサユニット170及び1つのローカルメモリ172への1つのローカルバス174を介した1つの高スループットデータパスを提供する。複数のパリティブロックを生成するための排他的論理和演算を提供する1つのロジックエンジン176も、ローカルバス174に結合されている。セカンダリアドレス変換ユニット178は、プロセッサユニット170及びローカルメモリ172からセカンダリバス164への高スループットデータパスを提供する。図示された実施形態において、バス162、164はPCIバスであるが、他のタイプの周辺バスも使用され得る。
【0022】
ローカルメモリ172は、1つのメモリコントローラ180を有する。図示された実施形態において、ローカルメモリ172は揮発性のRAMタイプのメモリであり、ディスクドライブ150a、150b、・・・、150eに転送されている又は受信しているデータをキャッシュするために使用される。他の複数のタイプのメモリも使用され得る。例えば、データ転送の間にストレージプロセッサ109又はストレージ108の予期しないシャットダウンが生じた場合に不完全な複数のストライプを特定するリカバリ情報をストアするために、不揮発性のフラッシュメモリが使用され得る。ダイレクトメモリアクセス(DMA)コントローラ182、184は、ホストコンピュータ102からローカルメモリ172及びローカルメモリ172からドライブ150a・・・150nへの複数のダイレクトメモリ転送を可能にする。
【0023】
先に説明されたように、いくつかのRAIDデータ再構築プロセスは、1個のパリティブロックを含む5個のデータブロックを持つ1つのストライプに対して、1つのデータブロックを再構築するために少なくとも8個の読み込みオペレーションを利用する。示された実施形態の一態様に従って、コンストラクショマネージャ130は、いくつかの用途において、失われたデータの効率的な再構築又は1つのデータ更新において新パリティデータの効率的な構築を極めて促進する、1つのストレージプロセッサ109の1つのロジックエンジン176を有する。例えば、1つの用途において、1個のパリティブロックを含む5個のデータブロックを持つ1つのストライプに対して1つのデータブロックを再構築するための読み込みオペレーションの数は、4個の読み込みオペレーションに低減され得る。またさらに、再構築されたブロックを記憶するための書き込みオペレーションの数は、2個の書き込みオペレーションから1つの書き込みオペレーションに低減され得る。
【0024】
図6は、ストアキュー200を含むロジックエンジン176の一例を概略形式で示す。ストアキュー200は、矢印202によって表されるようなストアキュー200の内容及び矢印204によって表されるような入力に存在しているデータについて排他的論理和論理ファンクションを実行することができる。示された実施形態の一態様に従って、最初にローカルメモリ172内にキャッシュされることなく、1つの読み込みオペレーションにおいて、データがディスクドライブ150a、150b・・・150nのうちの1つから直接読み込まれ、ロジックエンジン176において処理される。示された実施形態の他の1つの態様に従って、ストアキュー200は、一度に全データブロックを受け入れることができる。より詳細に説明されたように、これら及び他の機能の1つ以上は、データ再構築を含むデータ構築を促進することができる。
【0025】
示された実施形態において、ロジックエンジン176は1つのストアキューを含むことが示された。複数のレジスタ並びに他のタイプの論理回路及びメモリを含む他のタイプの回路が使用され得る。
【0026】
図7は、プロセッサユニット170及びロジックエンジン176を含むデータコンストラクションマネージャ130の、データ再構築におけるオペレーションの一例を示す。本例において、1個のパリティブロックを含む5個のデータブロックを持つデータの1つのストライプn(図8)は、5個のディスクドライブ150a、150b、150c、150d、及び150eにわたってそれぞれ記憶される。ストライプのデータブロックのそれぞれはディスクドライブ150a、150b・・・150eのうちの1つに記憶される。また、ディスクドライブ150a、150b・・・150eのうちの1つ、本例においてディスクドライブ150dが故障し、それぞれのストライプの複数のデータブロックが失われたか他の場合には損なわれて、再構築される必要がある。
【0027】
ストアキュー200をリセットすると(プロセスブロック260)、特定のストライプの全ブロックについて読み込みオペレーションが開始される(プロセスブロック286)。一態様に従って、全ブロック又はサブブロックは、ストレージ108から読み込まれ、以下に説明されるようにパラレルに処理される。したがって、1つのストライプの対応する複数のブロックを読み込むべく、複数の読み込みコマンドがストレージプロセッサ109によって全てのディスクドライブ150a、150b・・・150eに同時に発行される。複数のディスクドライブに発行された複数の読み込みコマンドに応答してディスクドライブ150a、150b・・・150eのうちの1つから1つのブロック(又はサブブロック)がひとたび一度受け取られると(プロセスブロック292)、そのブロックはストアキュー200(図6)内に記憶され得る。ブロック1を持つディスクドライブが最初に発行された読み込みコマンドに応答した場合、このデータは、例えば図8に示されるようなデータの1つのストライプnのブロック1であってよい。ストアキュー200は予めリセットされているので、ドライブ150aから読み込まれたデータのブロック1は、例えば、ドライブ150aから読み込まれたブロック1データ及びストアキュー200のリセット内容で排他的論理和ファンクション(ブロック296)が実行されることによって、ストアキュー200内に記憶され得る。示された実施形態において、ストアキュー200の容量は、1つのディスクドライブストライプからのデータブロック全体を収容するのに十分である。したがって、例えば、ストアキュー200の容量が64Kバイトである場合、それぞれのブロックについての読み込みオペレーションは、ストアキュー200がブロック1データの全64Kバイトで満たされるまで続けることができる。ストアキュー200のサイズは、用途に応じて変えられ得ることが理解される。
【0028】
先に発行された複数の読み込みコマンド(プロセスブロック286)に応答して、ブロック2(図8)のようなストライプnからの他の1つのデータブロックが受信され得る(プロセスブロック292)。ドライブ150bからのデータブロック2は、ストアキュー200内に予め記憶されたデータブロック1と排他的論理和がとられ(プロセスブロック296)、ストアキュー200内に1つの中間結果として記憶される。
【0029】
先に発行された複数の読み込みコマンド(プロセスブロック286)に応答して、ブロック3(図8)のような、ストライプnからの他の1つのデータブロックが受信され得る(プロセスブロック292)。ドライブ150cからのデータブロック3は、ストアキュー200の内容と排他的論理和がとられ(プロセスブロック296)、ストアキュー200内に1つの中間結果として記憶される。
【0030】
先に発行された複数の読み込みコマンド(プロセスブロック286)に応答して、ブロック5(図8)のような、ストライプnからの他の1つのデータブロックが受信され得る(プロセスブロック292)。ドライブ150dからの(パリティ)データブロック5は、ストアキュー200の内容と排他的論理和がとられ(プロセスブロック296)、ストアキュー200内に1つの中間結果として記憶される。
【0031】
ストライプnの全ての正常な複数のデータブロックが、ディスクドライブ150a、150b・・・150eからひとたび受信されると(プロセスブロック302)、ストアキュー200内に記憶される中間結果が、ストライプnの再構築されたブロック4(図8)であり、ストライプnの失われたブロック4を置き換える第1書き込みオペレーション306においてディスクドライブ150dに書き込まれる(プロセスブロック304)。図7のプロセスは、損害を受けた全てのブロック(プロセスブロック310)が再構築されるまで、ディスクドライブ150a、150b・・・150eのアレイ151のそれぞれのストライプについて反復される。
【0032】
図7のプロセスブロック292は1つの"ブロック"の受け入れを示すが、ストライプnの1つのブロックの複数のサブブロックが同時に受信されそして処理される必要がないことが理解されるべきである。代わりに、複数のサブブロックが異なる時刻に受信され、受信したときにストアキュー200の内容と排他的論理和がとられてよい。したがって、ストライプnのそれぞれのブロックの複数のサブブロックは、ストアキュー200によって受け取られて処理されたときに、ストライプNの他の複数のブロックのサブブロックと混交される。このように、ストレージプロセッサ109は、複数の読み込みコマンドをディスクドライブ150a、150b・・・150eのそれぞれに同時に発行することができ、複数のディスクドライブは要求されたデータに同時に応答することができる。ストライプnのいくつかのブロックの複数のサブブロックが、それらが複数のディスクドライブからストレージプロセッサ109及びストアキュー200にバス164を通じて移動するにつれて共に混ざり合わされることができる。
【0033】
図9は、デグレードされたデータ読み込みオペレーションにおいて、ストアキュー200からホストメモリ106のようなホスト102に再構築されたデータが直接書き込まれる、コンストラクションマネージャ130のオペレーションの他の1つの実施形態を示す。本実施形態において、コンストラクションマネージャ130は、例えば1つのDMA書き込みオペレーション350においてストアキュー200からホストメモリ106への再構築されたデータのダイレクトメモリ転送を可能にする、ストレージプロセッサ109における1つのDMAファンクションを含む。DMAコントローラは例えば、図5のDMAコントローラ182であってよく、用途に応じてロジックエンジン176又はその他の回路内に実装されてよい。
【0034】
図10は、旧データを新データで更新するときに旧パリティデータを置き換えるべく新パリティデータが構築される、コンストラクションマネージャ130のオペレーションの他の1つの実施形態を示す。ストアキュー200をリセットすると、第1読み込みオペレーションにおいて、1つのストライプnについての新データの1つのブロックがホスト102から読み込まれ、ストアキュー200内に記憶される。前述のように一実施形態において、このデータ伝送は1つのDMA転送として達成されてよい。第1書き込みオペレーション402において、新データはストアキュー200からローカルメモリ172に伝送されてもよい。旧データは、第2読み込みオペレーション404において、ディスクドライブ150aのような1つのディスクドライブから伝送されてよい。ドライブ150aからの旧データのブロックは、ストアキュー200内に予め記憶された新データのブロックと排他的論理和がとられ、1つの中間結果としてストアキュー200内に記憶される。
【0035】
次のブロック、すなわちストライプnの旧パリティデータのブロックは、第3読み込みオペレーション406において、ディスクドライブ150bのような1つのディスクドライブから読み込まれる。ドライブ150bからの旧パリティデータのブロックは、ストアキュー200の内容と排他的論理和がとられ、1つの中間結果としてストアキュー200内に記憶される。
【0036】
ストライプnの旧データ及び旧パリティデータの複数のブロック及びストライプnについての新データが、それぞれディスクドライブ150a、150b、及びホスト102からひとたび受信されると、ストアキュー200内に記憶された中間結果がストライプnについての新パリティデータのブロックであり、ストライプnについての旧パリティデータを置き換えるべく第2書き込みオペレーション408においてディスクドライブ150bに書き込まれる。加えて、新データが、第3書き込みオペレーション410において旧データを置き換えるべく、ローカルメモリ172からディスクドライブ150aに書き込まれる。前述のように1つのデータ更新オペレーションにおいて読み込み及び書き込みオペレーションの数が著しく削減され得ることが理解される。
【0037】
繰り返すと、他の態様に従って、全てのブロック又はサブブロックは、ストレージ108及びホストメモリ106から読み込まれ、パラレルに処理されてよい。したがって、1つのストライプの対応する複数のブロックを読み込むことを目的として、複数の読み込みコマンドがストレージプロセッサ109によってホストメモリ及び全てのディスクドライブ150a、150b・・・150eに同時に発行されることができる。
追加の実施形態の詳細
【0038】
データ構築を管理するための説明された技術は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組み合わせを作り出す広く使われているプログラムミング及び/又はエンジニアリング技術を用いて、1つの方法、装置、又は製品として実装され得る。ここで使用される"製品"という用語は、ハードウェアロジック(集積回路チップ、プログラママブルゲートアレイ(PGA)、特定用途向け集積回路(ASIC)等)或いは磁気ストレージ媒体(例えば、複数のハードディスクドライブ、複数のフレキシブルディスク、テープ等)、光学ストレージ(複数のCD−ROM、複数の光ディスク等)、揮発性及び不揮発性メモリデバイス(例えば、複数のEEPROM、複数のROM、複数のPROM、複数のRAM、複数のDRAM、複数のSRAM、ファームウェア、プログラマブルロジック等)のような1つのコンピュータ可読メディアに実装されたコード又は論理を意味する。コンピュータ可読メディア内のコードは、1つのプロセッサによってアクセスされて実行される。好ましい実施形態が実装されたコードはさらに、1つの伝送メディアを通じて又は1つのネットワークをわたって1つのファイルサーバからアクセス可能であってよい。そのようなケースにおいて、コードが実装された製品は、1つのネットワーク伝送線、ワイヤレス伝送媒体、空間を伝搬する信号、無線波、赤外線信号等のような伝送メディアを備えてよい。したがって、"製品"は、コードが組み込まれたメディアを備えてよい。さらに、"製品"は、コードが組み込まれ、処理され、実行される、ハードウェア及びソフトウェアコンポーネントの1つの組み合わせを備えてよい。勿論、当業者は、多くの変形が本構成になされてよく、製品は、当業者に知られた情報を持つ任意の媒体を備えるということを理解するだろう。
【0039】
ロジックエンジンが排他的論理和オペレーションを実行するための1つのストアキュー又はレジスタを持つとして説明された。しかし、本出願の代理人にアサインされ、2003年12月29日に出願された、代理人番号P17729の" METHOD, SYSTEM, AND PROGRAM FOR GENERATING PARITY DATA"というタイトルの同時継続中の出願に記載されるように、特に複数のパリティブロックを有するデータ構成のために、ロジックエンジンは複数のストアキュー又はレジスタを持ってよいことが理解される。
【0040】
いくつかの実施形態において、ストレージプロセッサ109は、データの構築及び再構築を管理するデータコンストラクションマネージャ130を有してよい。ストレージプロセッサ109は、これら及び他の機能を実行するための、ソフトウェア、ファームウェア、又はハードウェア、或いはそれらの組合せを有してよい。例えば、一実施形態において、プロセッサ170及びロジックエンジン176は、ホストプロセッサから独立した1つのストレージプロセッサ109内のハードウェアに実装されてよい。他の実施形態において、データコンストラクションマネージャは、ド複数のライバ、1つのオペレーティングシステム又は1つのアプリケーション、或いはこれらの組み合わせを含むホストソフトウェアに実装されてよい。
【0041】
いくつかの実施形態において、1つのコンピュータシステムは、1つのドライバ、及び、シリアルアドバンスドテクノロジアタッチメント(SATA)、シリアルアタッチドSCSI(SAS)、独立ディスク冗長アレイ(RAID)等、1つの磁気ディスクドライブ、テープ媒体、光ディスク等のような1つの不揮発ストレージデバイスへのアクセスを管理するコントローラのような、1つのストレージコントローラを備えてよい。他の実装において、ストレージコントローラの実施形態は、1つのドライバを含まない1つのシステム内に含まれてよい。デバイス及びエキスパンダのためのSASアーキテクチャについてのさらなる詳細は、参照番号ISO/IEC 14776−150:200xの技術規格書" Information Technology - Serial Attached SCSI (SAS)"及びANSIによって発表されたANSI INCITS.***:200x PHYレイヤ(2003年7月9日)に記載されている。SATAアーキテクチャについての詳細は、技術規格書"Serial ATA: High Speed Serialized AT Attachment"リビジョン1.0A(2003年1月)に記載されている。
【0042】
ロジックエンジンが全データブロックを受信して処理するとして説明されたが、一度に1つのブロックの一部又は複数のブロックが受信して処理され得る。さらに、ロジックエンジンが1つのディスクドライブのような1つの不揮発性ストレージユニットから直接データを受信するとして説明されたが、いくつかの実施形態においてデータはRAMメモリのような揮発性メモリからロジックエンジンに伝送され得る。
【0043】
いくつかの実施形態において、デバイスドライバ及びストレージプロセッサの実施形態は、デスクトップ、ワークステーション、サーバ、メインフレーム、ラップトップ、ハンドヘルドコンピュータ等のような、デバイスドライバ及びネットワークアダプタを含むコンピュータシステムに結合された1つのモニタ上に表示する情報をレンダリングする1つのビデオコントローラを含む1つのコンピュータシステム内に実装されてよい。他にも、ストレージプロセッサ及びデバイスドライバの実施形態は、ビデオコントローラを含まない1つのコンピューティングデバイスに実装されてよい。
【0044】
いくつかの実施形態において、ネットワークアダプタは、ネットワークアダプタ上の1つのポートに接続された1つのケーブルをわたってデータを伝送すべく構成されてよい。他にも、ネットワークアダプタの実施形態は、ワイヤレスLAN、ブルートゥース等のような1つのワイヤレスネットワーク又は接続をわたってデータを伝送すべく構成されてよい。
【0045】
図7の図示されたロジックは、ある順番で発生するいくつかのイベントを示す。他の実施形態において、いくつかのオペレーションは、異なる順番で、変更又は削除されて、実行されてよい。さらに、複数のオペレーションが前述のロジックに追加されてよく、依然として説明された実施形態に従う。さらに、ここに説明されたオペレーションはシーケンシャルに発生してよいし、いくつかのオペレーションはパラレルに処理されてよい。またさらに、オペレーションは1つのプロセッシングユニット又は分散された複数のプロセッシングユニットによって実行されてよい。
【0046】
図11は、図4に示された複数のホスト及び複数のストレージデバイスのような、ネットワークコンポーネントの1つのコンピュータアーキテクチャ500の1つの実装を示す。アーキテクチャ500は、1つのプロセッサ502(例えば1つのマイクロプロセッサ)、1つのメモリ504(例えば1つの揮発性メモリデバイス)、及びストレージ506(例えば、複数の磁気ディスクドライブ、複数の光ディスクドライブ、1つのテープドライブ等のような1つの不揮発性ストレージ)を備える。ストレージ506は、1つの内部ストレージデバイス又は1つのアタッチされた又はネットワークアクセス可能なストレージを有する。ストレージ506内の複数のプログラムは、当業者に知られた方法で、メモリ504にロードされてプロセッサ502によって実行される。1つのストレージプロセッサ507はストレージ506をコントロールすることができる。アーキテクチャはさらに、イーサネット(登録商標)、ファイバチャネルアービトレイテッドループ等のような1つのネットワークとの通信を可能にする1つのネットワークアダプタ508を備える。ファイバチャネルアーキテクチャの詳細は、ドキュメント番号ISO/IEC AWI 14165−25の技術規格書" Fibre Channel Framing and Signaling Interface"に記載されている。
【0047】
さらに、アーキテクチャは、いくつかの実施形態において、ディスプレイモニタ上に情報をレンダリングする1つのビデオコントローラ509を備えてよい。ビデオコントローラ509は1つのビデオカード上に実装されてよく、或いはマザーボード上に実装された集積回路部品に集積されてよい。議論されたように、ネットワークデバイスのいくつかは、複数のストレージカード又は複数のコントローラを有してよい。1つの入力デバイス510は、ユーザ入力をプロセッサ502に供給するために使用され、1つのキーボード、マウス、ペンスタイラス、マイクロホン、タッチディスプレイスクリーン、或いは当業者に知られた任意のアクチベーション又は入力メカニズムを有してよい。出力デバイス512は、ディスプレイモニタ、プリンタ、ストレージ等のような、プロセッサ502から伝送される情報をレンダリングすることができ、又は他のコンポーネントである。
【0048】
ストレージプロセッサ506及びネットワークアダプタ508は、1つのペリフェラルコンポーネントインターコネクト(PCI)カード又はいくつかの他のI/Oカードのようなカード上、或いはマザーボード上に実装された集積回路コンポーネント上に、それぞれ実装されてよい。PCIアーキテクチャについての詳細は、PCI−SIGによって発表された" PCI Local Bus, Rev. 2.3"に記載されている。
【0049】
前述の様々な実施形態が、実例及び説明を目的として提示された。上の仕様、例及びデータは、構成の製作及び使用の1つの包括的な説明を提供する。完全であること又は開示された厳密な形に限定することが意図されていない。多くの変更及び変形が上の教示を考慮に入れると可能である。
【技術分野】
【0001】
実施形態は、RAIDシステムのような、データ組織化の1つのシステムにおいてデータを管理するための方法、システム、及びプログラムに関する。
【背景技術】
【0002】
ディスクドライブのようなデータ記憶デバイスに記憶されるデータを組織化するために様々な技術が提案されている。そのようなデータ記憶構成の1つは、独立(又は廉価)ディスク冗長アレイすなわち(RAID)と呼ばれる。RAID組織化においては、2以上のディスクドライブが、耐障害性又はパフォーマンス、或いはその両方を向上させるべく組み合わせて使用される。異なる複数のタイプのRAIDデータストレージ構成が存在しており、これらの異なる複数のタイプはしばしばRAIDレベル0、1、2、・・・と呼ばれる。
【0003】
RAIDレベル0のデータ構成においては、例えば、1つのユーザファイルのデータは"ストライプ"すなわちユーザデータの複数のブロックがパフォーマンスを向上させるべく複数のディスクにわたって分散される。しかしながら、RAIDレベル0のデータ構成においては、一般的に、もしドライブのうちの1つが機能しなくなった場合にデータのリカバリのために提供される冗長性は存在しない。RAIDレベル3のデータ構成は、RAIDレベル0に似ているが、1つのディスクは典型的にはエラー訂正データを記憶するためにリザーブされ、エラー訂正データはしばしば"パリティデータと呼ばれる。このパリティデータは、もしドライブのうちの1つが機能しなくなった場合に失われたデータ再構築するために使用され得る。RAIDレベル5のデータ構成においては、ディスクドライブアレイにわたるデータストライプのそれぞれについてパリティデータが提供され、パリティデータを記憶することに個別のディスクドライブは供されない。代わりに、パフォーマンスを向上させるべく、ユーザデータの複数のストライプのためのパリティデータの複数のブロックが、全てのディスクアレイにわたって分散される。
【0004】
1つのRAID5構成において、ディスクドライブアレイにわたるデータストライプのそれぞれについてパリティデータの1つのブロックが存在する。そのような配置は、1つのドライブが機能しなくなった場合にデータの容易な再構築を提供する。例えば、1つのデータストライプが4個のデータブロック及び1つのパリティデータブロックを含んでいる場合、ストライプの複数のブロックのうちの1つが、ドライブ傷害、データ破壊、またはほかのタイプの障害により失われた場合には、失われたブロックはストライプの残存している4個のブロックを用いて再構築される。
【0005】
図1は、失われたデータを再構築すべく実行され得る論理オペレーションの従来技術の一例を示す。データの1つのストライプnが4個のデータブロック及び1つのパリティデータブロックを持ち、ストライプnからの1つのブロックのデータが失われた場合に、失われたデータは、3つの正常なデータブロックからの正常なデータの1つのサブブロック及びストライプnの正常なパリティブロックからの正常なパリティデータの1つのサブブロックを用いて、再構築され得る。したがって、図1の例において、ストライプnからの1つの正常なデータブロックからの正常なデータの1つの第1サブブロック30、及び、ストライプnからの1つの正常な第2のデータブロックからの正常なデータの1つの第2サブブロック32について、排他的論理和ファンクションが実行される。排他的論理和論理オペレーションの結果は、ストライプnからの正常な1つの第3データブロックからの正常なデータの他の1つのサブブロック33と排他的論理和がとられる。失われたデータのサブブロックを置き換えるためのデータの1つのサブブロック36を再構築すべく、その排他的論理和論理オペレーションの結果が、ストライプnからの正常なパリティブロックからの正常なパリティデータの1つのサブブロック34と排他的論理和がとられる。1つのストライプからデータブロック全体が失われた場合、ブロックの全体は、ブロックのそれぞれのサブブロックについて図1のオペレーションを繰り返して再構築され得る。
【0006】
図2は、図1の論理ファンクションに従う、複数のRAIDストレージユニットの失われたデータを再構築するための、1つのRAIDストレージプロセッサのロジックエンジン50の従来技術の一例を示す。ロジックエンジン50は、矢印54によって表されるようなストアキュー52の内容及び矢印56によって表されるような入力に存在するデータについて排他的論理和論理ファンクションを実行することができる1つのストアキュー52を有する。Intel80303集積回路チップは、アプリケーションアクセラレータユニット(AAU)と呼ばれる1つの類似のロジックエンジンを持つ。
【0007】
データの再構築におけるロジックエンジン50を使用したデータの読み込み及び読み込まれたデータの処理のオペレーションが図3に表される。 ストアキュー52をリセット(ブロック60)すると、第1読み込みオペレーション63(図2)において1つのRAIDアレイ66の1つのディスクドライブ64aの1つのストライプnから正常なデータの1つのブロックが、1つのストレージプロセッサ又はコントローラの1つのローカルメモリ68に読み込まれる(プロセスブロック62)。第2読み込みオペレーション70において、RAIDアレイ66の1つのディスクドライブ64bのストライプnから正常なデータの他の1つのブロックが、1つのストレージプロセッサ又はコントローラのローカルメモリ68に読み込まれる(プロセスブロック62)。第3読み込みオペレーション72において、RAIDアレイ66の1つのディスクドライブ64cのストライプnから正常なデータの1つの第3ブロックが、ローカルメモリ68に読み込まれる(プロセスブロック62)。第4読み込みオペレーション74において、RAIDアレイ66の1つのディスクドライブ64eのストライプnから正常なパリティデータの1つのブロックが、ローカルメモリ68に読み込まれる(プロセスブロック62)。
【0008】
全ての正常な複数のデータブロック及びパリティデータがストライプからひとたび読み込まれると(プロセスブロック80)、第5読み込みオペレーション84の一部において、ディスクドライブ64aから読み込まれたデータの1つのサブブロックが、ローカルメモリ68から読み込まれ(プロセスブロック82)、ストアキュー52内に記憶される。このデータは、例えば図1のデータ30のサブブロックであってよい。ストアキュー52は予めリセットされたので、ドライブ64aに由来するデータ30が、ローカルメモリ68から読み込まれたデータ30とストアキュー52のリセット内容との排他的論理和ファンクションを実行することによってストアキュー52内に記憶され得る。ローカルメモリ68からロジックエンジン50への読み込みオペレーションのサイズは、典型的にはストアキュー52の容量に依存する。したがって、例えばストアキュー52の容量が1Kバイトである場合、読み込みオペレーションはストアキュー52が1Kバイトのデータ30で満たされるまで継続する。
【0009】
ストライプnからの次のデータブロックの1つのサブブロック、すなわち、ディスクドライブ64bから読み込まれたデータブロックの1つのサブブロックが、第6読み込みオペレーション90の一部において、ローカルメモリ68から読み込まれる(プロセスブロック86)。このデータは、例えば図1のデータのサブブロック32であってよい。ドライブ64bから読み込まれたデータブロックからのデータのサブブロック32は、ストアキュー52内に予め記憶されたデータのサブブロック30と排他的論理和がとられ、1つの中間結果としてストアキュー52内に記憶される。
【0010】
ストライプnからの次のデータブロックの1つのサブブロック33(図1)、すなわち、ディスクドライブ64cから読み込まれたデータブロックの1つのサブブロックが、第7読み込みオペレーション92の一部として、ローカルメモリ68から読み込まれる(プロセスブロック86)。ドライブ64cから読み込まれたデータブロックからのデータのサブブロック33は、ストアキュー52の内容と排他的論理和がとられ(プロセスブロック88)、ストアキュー52内に1つの中間結果として記憶される。
【0011】
ストライプnからの次のデータブロックの1つのサブブロック33(図1)、すなわち、ディスクドライブ64eから読み込まれたデータブロックの1つのサブブロックが、第8読み込みオペレーション94の一部として、ローカルメモリ68から読み込まれる(プロセスブロック86)。ドライブ64eから読み込まれたパリティブロックからのパリティデータのサブブロック34は、ストアキュー52の内容と排他的論理和がとられ(プロセスブロック88)、ストアキュー52内に1つの中間結果として記憶される。
【0012】
ストライプnのデータ及びパリティの正常な複数のブロックの、対応する複数のサブブロックの全てがひとたび受け取られて処理されると(プロセスブロック95)、ストアキュー52内に記憶された中間結果は、ストライプnの再構築されたサブブロック36であり、書き込みオペレーション96の一部においてローカルメモリ68に書き込まれ(プロセスブロック96)、失われたサブブロックを置き換えるために続く書き込みオペレーション97においてディスクドライブ64dに書き込まれる。
【0013】
図3のプロセスは、全てのサブブロックが受け取られ(プロセスブロック98)、必要であればストライプnのブロック全体が再構築されるロジックエンジン50によって処理されるまで、ストライプnの複数のブロックのサブブロックのそれぞれについて反復される。さらに、例えばドライブ64dの全データが失われた場合、損害を受けたディスクドライブ64dの全てのブロックが再構築されるまで、ディスクドライブアレイ66のストライプのそれぞれについてこのプロセスが繰り返される。RAIDタイプのデータ構成において旧データを新データで更新するときに新パリティデータを構築するプロセスは似ている。
【0014】
それにもかかわらず、データストレージ組織化におけるプロセッサのパフォーマンスを向上させるために、継続的な技術的必要性が存在する。
【図面の簡単な説明】
【0015】
同様の参照番号が全体にわたって対応する構成要素を表す図面を参照する。
【図1】RAIDデータの再構築の従来技術を示す。
【図2】RAIDデータの再構築のためのロジックエンジンの従来技術を示す。
【図3】図2のロジックエンジンの従来技術を用いてデータを再構築するオペレーションの従来技術を示す。
【図4】データ構成の複数の態様が実装されたコンピューティング環境の一実施形態を示す。
【図5】データ構成の複数の態様が実装されたストレージプロセッサ環境の一実施形態を示す。
【図6】データ構成の複数の態様に従う、図5のストレージプロセッサのためのロジックエンジンの一実施形態を示す。
【図7】データを再構築すべく実行されるオペレーションの一実施形態を示す。
【図8】1つのデータブロックを再構築するために使用される複数のデータブロックを示す。
【図9】データを再構築するために実行される複数のオペレーションの他の実施形態を示す。
【図10】パリティデータを構築するために実行されるオペレーションの他の実施形態を示す。
【図11】説明された実施形態で使用され得る一アーキテクチャを示す。
【発明を実施するための最良の形態】
【0016】
以下の説明において、この文書の一部を形成し、いくつかの実施形態を示す添付の図面に対して参照がなされる。他の実施形態が利用されてよく、構造的又は機能的変更がなされてよいことが理解される。
【0017】
図4は、データ構成の複数の態様が実装された1つのコンピューティング環境を示す。 1つのコンピュータ102は、1以上の中央処理装置(CPU104(1つだけ図示される)、1つのメモリ106、不揮発性ストレージ108、1つのストレージプロセッサ109、1つのオペレーティングシステム110、及び1つのネットワークアダプタ112を備える。さらに、アプリケーションプログラム114は、メモリ内で実行され、ストレージ108からデータを読み込み、ストレージ108にデータを書き込むことができる。 コンピュータ102は、メインフレーム、サーバ、パーソナルコンピュータ、ワークステーション、ラップトップ、ハンドヘルドコンピュータ、テレフォニーデバイス、ネットワークアプライアンス、仮想化デバイス、ストレージプロセッサ、ストレージコントローラ等のような、技術的に知られた任意のコンピューティングデバイスを含んでよい。技術的に知られた任意のCPU104及びオペレーティングシステム110が使用されてよい。メモリ管理オペレーションの一環として、メモリ106内の複数のプログラム及びデータはストレージ108にスワップされてよい。コンピュータ102は、ネットワークアダプタ112を介してネットワーク118と通信することができる。
【0018】
デバイスドライバ120は、メモリ106内で実行され、ストレージプロセッサ109と通信し、オペレーティングシステム110とストレージデバイス109との間を仲介するためのストレージプロセッサ特有の複数のコマンドを有する。ストレージ108は、例えばディスクドライブ150a、150b、・・・、150nである、データの再構築を可能にする1つの組織化タイプでデータが記録される複数のストレージユニットを有する。図示された実施形態において、ディスクドライブ150a、150b、・・・、150nは、1つのRAIDアレイ151に組織化される。
【0019】
いくつかの実施形態において、ストレージプロセッサ109は、ストレージ108からのデータの読み込み又はストレージ108へのデータの書き込みにおいてコンピュータ102をアシストするためのいくつかの機能を実行する。例えば、ストレージプロセッサ109は、コンピュータ102からのLBAアドレスを、ディスクドライブ150a、150b、・・・、150nのシリンダ、ヘッド、及びセクタ指定に変換するための、ソフトウェア、ファームウェア、又はハードウェア、或いはこれらの組合せを有してよい。さらに、ストレージプロセッサ109は、ドライブ障害又は他のデータロスが発生した場合のデータの再構築を管理するデータコンストラクションマネージャ130を有してよい。さらに、データコンストラクションマネージャ130は、旧データが新データに更新された場合の新パリティデータの構築を管理することができる。
【0020】
適切なストレージプロセッサ109の一例が図5に示される。ストレージプロセッサ109は、ホストコンピュータ102とストレージ108との間での大量のデータの高速移動を促進する。ストレージプロセッサ109は、ホストコンピュータ102の1つのプライマリバス162とストレージ108の1つのストレージコントローラ166に結合された1つのセカンダリバス164との間の1つのブリッジ160を有する。ブリッジ160は、例えばシリアルアドバンスドテクノロジアタッチメント(SATA)コントローラであり得るストレージコントローラ166が、プライマリバス162から物理的に分離されることを可能にする。コントローラ166は、ストレージプロセッサ109をストレージ108に接続するストレージインタフェースに、コンピュータ情報をコンバートしてもよい。ストレージコントローラ166がストレージプロセッサ109の一部として示されているが、ストレージコントローラ166はストレージ108の一部又は別個の1つのユニットであってよい。
【0021】
プライマリアドレス変換ユニット168は、プライマリバス162から1つのプロセッサユニット170及び1つのローカルメモリ172への1つのローカルバス174を介した1つの高スループットデータパスを提供する。複数のパリティブロックを生成するための排他的論理和演算を提供する1つのロジックエンジン176も、ローカルバス174に結合されている。セカンダリアドレス変換ユニット178は、プロセッサユニット170及びローカルメモリ172からセカンダリバス164への高スループットデータパスを提供する。図示された実施形態において、バス162、164はPCIバスであるが、他のタイプの周辺バスも使用され得る。
【0022】
ローカルメモリ172は、1つのメモリコントローラ180を有する。図示された実施形態において、ローカルメモリ172は揮発性のRAMタイプのメモリであり、ディスクドライブ150a、150b、・・・、150eに転送されている又は受信しているデータをキャッシュするために使用される。他の複数のタイプのメモリも使用され得る。例えば、データ転送の間にストレージプロセッサ109又はストレージ108の予期しないシャットダウンが生じた場合に不完全な複数のストライプを特定するリカバリ情報をストアするために、不揮発性のフラッシュメモリが使用され得る。ダイレクトメモリアクセス(DMA)コントローラ182、184は、ホストコンピュータ102からローカルメモリ172及びローカルメモリ172からドライブ150a・・・150nへの複数のダイレクトメモリ転送を可能にする。
【0023】
先に説明されたように、いくつかのRAIDデータ再構築プロセスは、1個のパリティブロックを含む5個のデータブロックを持つ1つのストライプに対して、1つのデータブロックを再構築するために少なくとも8個の読み込みオペレーションを利用する。示された実施形態の一態様に従って、コンストラクショマネージャ130は、いくつかの用途において、失われたデータの効率的な再構築又は1つのデータ更新において新パリティデータの効率的な構築を極めて促進する、1つのストレージプロセッサ109の1つのロジックエンジン176を有する。例えば、1つの用途において、1個のパリティブロックを含む5個のデータブロックを持つ1つのストライプに対して1つのデータブロックを再構築するための読み込みオペレーションの数は、4個の読み込みオペレーションに低減され得る。またさらに、再構築されたブロックを記憶するための書き込みオペレーションの数は、2個の書き込みオペレーションから1つの書き込みオペレーションに低減され得る。
【0024】
図6は、ストアキュー200を含むロジックエンジン176の一例を概略形式で示す。ストアキュー200は、矢印202によって表されるようなストアキュー200の内容及び矢印204によって表されるような入力に存在しているデータについて排他的論理和論理ファンクションを実行することができる。示された実施形態の一態様に従って、最初にローカルメモリ172内にキャッシュされることなく、1つの読み込みオペレーションにおいて、データがディスクドライブ150a、150b・・・150nのうちの1つから直接読み込まれ、ロジックエンジン176において処理される。示された実施形態の他の1つの態様に従って、ストアキュー200は、一度に全データブロックを受け入れることができる。より詳細に説明されたように、これら及び他の機能の1つ以上は、データ再構築を含むデータ構築を促進することができる。
【0025】
示された実施形態において、ロジックエンジン176は1つのストアキューを含むことが示された。複数のレジスタ並びに他のタイプの論理回路及びメモリを含む他のタイプの回路が使用され得る。
【0026】
図7は、プロセッサユニット170及びロジックエンジン176を含むデータコンストラクションマネージャ130の、データ再構築におけるオペレーションの一例を示す。本例において、1個のパリティブロックを含む5個のデータブロックを持つデータの1つのストライプn(図8)は、5個のディスクドライブ150a、150b、150c、150d、及び150eにわたってそれぞれ記憶される。ストライプのデータブロックのそれぞれはディスクドライブ150a、150b・・・150eのうちの1つに記憶される。また、ディスクドライブ150a、150b・・・150eのうちの1つ、本例においてディスクドライブ150dが故障し、それぞれのストライプの複数のデータブロックが失われたか他の場合には損なわれて、再構築される必要がある。
【0027】
ストアキュー200をリセットすると(プロセスブロック260)、特定のストライプの全ブロックについて読み込みオペレーションが開始される(プロセスブロック286)。一態様に従って、全ブロック又はサブブロックは、ストレージ108から読み込まれ、以下に説明されるようにパラレルに処理される。したがって、1つのストライプの対応する複数のブロックを読み込むべく、複数の読み込みコマンドがストレージプロセッサ109によって全てのディスクドライブ150a、150b・・・150eに同時に発行される。複数のディスクドライブに発行された複数の読み込みコマンドに応答してディスクドライブ150a、150b・・・150eのうちの1つから1つのブロック(又はサブブロック)がひとたび一度受け取られると(プロセスブロック292)、そのブロックはストアキュー200(図6)内に記憶され得る。ブロック1を持つディスクドライブが最初に発行された読み込みコマンドに応答した場合、このデータは、例えば図8に示されるようなデータの1つのストライプnのブロック1であってよい。ストアキュー200は予めリセットされているので、ドライブ150aから読み込まれたデータのブロック1は、例えば、ドライブ150aから読み込まれたブロック1データ及びストアキュー200のリセット内容で排他的論理和ファンクション(ブロック296)が実行されることによって、ストアキュー200内に記憶され得る。示された実施形態において、ストアキュー200の容量は、1つのディスクドライブストライプからのデータブロック全体を収容するのに十分である。したがって、例えば、ストアキュー200の容量が64Kバイトである場合、それぞれのブロックについての読み込みオペレーションは、ストアキュー200がブロック1データの全64Kバイトで満たされるまで続けることができる。ストアキュー200のサイズは、用途に応じて変えられ得ることが理解される。
【0028】
先に発行された複数の読み込みコマンド(プロセスブロック286)に応答して、ブロック2(図8)のようなストライプnからの他の1つのデータブロックが受信され得る(プロセスブロック292)。ドライブ150bからのデータブロック2は、ストアキュー200内に予め記憶されたデータブロック1と排他的論理和がとられ(プロセスブロック296)、ストアキュー200内に1つの中間結果として記憶される。
【0029】
先に発行された複数の読み込みコマンド(プロセスブロック286)に応答して、ブロック3(図8)のような、ストライプnからの他の1つのデータブロックが受信され得る(プロセスブロック292)。ドライブ150cからのデータブロック3は、ストアキュー200の内容と排他的論理和がとられ(プロセスブロック296)、ストアキュー200内に1つの中間結果として記憶される。
【0030】
先に発行された複数の読み込みコマンド(プロセスブロック286)に応答して、ブロック5(図8)のような、ストライプnからの他の1つのデータブロックが受信され得る(プロセスブロック292)。ドライブ150dからの(パリティ)データブロック5は、ストアキュー200の内容と排他的論理和がとられ(プロセスブロック296)、ストアキュー200内に1つの中間結果として記憶される。
【0031】
ストライプnの全ての正常な複数のデータブロックが、ディスクドライブ150a、150b・・・150eからひとたび受信されると(プロセスブロック302)、ストアキュー200内に記憶される中間結果が、ストライプnの再構築されたブロック4(図8)であり、ストライプnの失われたブロック4を置き換える第1書き込みオペレーション306においてディスクドライブ150dに書き込まれる(プロセスブロック304)。図7のプロセスは、損害を受けた全てのブロック(プロセスブロック310)が再構築されるまで、ディスクドライブ150a、150b・・・150eのアレイ151のそれぞれのストライプについて反復される。
【0032】
図7のプロセスブロック292は1つの"ブロック"の受け入れを示すが、ストライプnの1つのブロックの複数のサブブロックが同時に受信されそして処理される必要がないことが理解されるべきである。代わりに、複数のサブブロックが異なる時刻に受信され、受信したときにストアキュー200の内容と排他的論理和がとられてよい。したがって、ストライプnのそれぞれのブロックの複数のサブブロックは、ストアキュー200によって受け取られて処理されたときに、ストライプNの他の複数のブロックのサブブロックと混交される。このように、ストレージプロセッサ109は、複数の読み込みコマンドをディスクドライブ150a、150b・・・150eのそれぞれに同時に発行することができ、複数のディスクドライブは要求されたデータに同時に応答することができる。ストライプnのいくつかのブロックの複数のサブブロックが、それらが複数のディスクドライブからストレージプロセッサ109及びストアキュー200にバス164を通じて移動するにつれて共に混ざり合わされることができる。
【0033】
図9は、デグレードされたデータ読み込みオペレーションにおいて、ストアキュー200からホストメモリ106のようなホスト102に再構築されたデータが直接書き込まれる、コンストラクションマネージャ130のオペレーションの他の1つの実施形態を示す。本実施形態において、コンストラクションマネージャ130は、例えば1つのDMA書き込みオペレーション350においてストアキュー200からホストメモリ106への再構築されたデータのダイレクトメモリ転送を可能にする、ストレージプロセッサ109における1つのDMAファンクションを含む。DMAコントローラは例えば、図5のDMAコントローラ182であってよく、用途に応じてロジックエンジン176又はその他の回路内に実装されてよい。
【0034】
図10は、旧データを新データで更新するときに旧パリティデータを置き換えるべく新パリティデータが構築される、コンストラクションマネージャ130のオペレーションの他の1つの実施形態を示す。ストアキュー200をリセットすると、第1読み込みオペレーションにおいて、1つのストライプnについての新データの1つのブロックがホスト102から読み込まれ、ストアキュー200内に記憶される。前述のように一実施形態において、このデータ伝送は1つのDMA転送として達成されてよい。第1書き込みオペレーション402において、新データはストアキュー200からローカルメモリ172に伝送されてもよい。旧データは、第2読み込みオペレーション404において、ディスクドライブ150aのような1つのディスクドライブから伝送されてよい。ドライブ150aからの旧データのブロックは、ストアキュー200内に予め記憶された新データのブロックと排他的論理和がとられ、1つの中間結果としてストアキュー200内に記憶される。
【0035】
次のブロック、すなわちストライプnの旧パリティデータのブロックは、第3読み込みオペレーション406において、ディスクドライブ150bのような1つのディスクドライブから読み込まれる。ドライブ150bからの旧パリティデータのブロックは、ストアキュー200の内容と排他的論理和がとられ、1つの中間結果としてストアキュー200内に記憶される。
【0036】
ストライプnの旧データ及び旧パリティデータの複数のブロック及びストライプnについての新データが、それぞれディスクドライブ150a、150b、及びホスト102からひとたび受信されると、ストアキュー200内に記憶された中間結果がストライプnについての新パリティデータのブロックであり、ストライプnについての旧パリティデータを置き換えるべく第2書き込みオペレーション408においてディスクドライブ150bに書き込まれる。加えて、新データが、第3書き込みオペレーション410において旧データを置き換えるべく、ローカルメモリ172からディスクドライブ150aに書き込まれる。前述のように1つのデータ更新オペレーションにおいて読み込み及び書き込みオペレーションの数が著しく削減され得ることが理解される。
【0037】
繰り返すと、他の態様に従って、全てのブロック又はサブブロックは、ストレージ108及びホストメモリ106から読み込まれ、パラレルに処理されてよい。したがって、1つのストライプの対応する複数のブロックを読み込むことを目的として、複数の読み込みコマンドがストレージプロセッサ109によってホストメモリ及び全てのディスクドライブ150a、150b・・・150eに同時に発行されることができる。
追加の実施形態の詳細
【0038】
データ構築を管理するための説明された技術は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組み合わせを作り出す広く使われているプログラムミング及び/又はエンジニアリング技術を用いて、1つの方法、装置、又は製品として実装され得る。ここで使用される"製品"という用語は、ハードウェアロジック(集積回路チップ、プログラママブルゲートアレイ(PGA)、特定用途向け集積回路(ASIC)等)或いは磁気ストレージ媒体(例えば、複数のハードディスクドライブ、複数のフレキシブルディスク、テープ等)、光学ストレージ(複数のCD−ROM、複数の光ディスク等)、揮発性及び不揮発性メモリデバイス(例えば、複数のEEPROM、複数のROM、複数のPROM、複数のRAM、複数のDRAM、複数のSRAM、ファームウェア、プログラマブルロジック等)のような1つのコンピュータ可読メディアに実装されたコード又は論理を意味する。コンピュータ可読メディア内のコードは、1つのプロセッサによってアクセスされて実行される。好ましい実施形態が実装されたコードはさらに、1つの伝送メディアを通じて又は1つのネットワークをわたって1つのファイルサーバからアクセス可能であってよい。そのようなケースにおいて、コードが実装された製品は、1つのネットワーク伝送線、ワイヤレス伝送媒体、空間を伝搬する信号、無線波、赤外線信号等のような伝送メディアを備えてよい。したがって、"製品"は、コードが組み込まれたメディアを備えてよい。さらに、"製品"は、コードが組み込まれ、処理され、実行される、ハードウェア及びソフトウェアコンポーネントの1つの組み合わせを備えてよい。勿論、当業者は、多くの変形が本構成になされてよく、製品は、当業者に知られた情報を持つ任意の媒体を備えるということを理解するだろう。
【0039】
ロジックエンジンが排他的論理和オペレーションを実行するための1つのストアキュー又はレジスタを持つとして説明された。しかし、本出願の代理人にアサインされ、2003年12月29日に出願された、代理人番号P17729の" METHOD, SYSTEM, AND PROGRAM FOR GENERATING PARITY DATA"というタイトルの同時継続中の出願に記載されるように、特に複数のパリティブロックを有するデータ構成のために、ロジックエンジンは複数のストアキュー又はレジスタを持ってよいことが理解される。
【0040】
いくつかの実施形態において、ストレージプロセッサ109は、データの構築及び再構築を管理するデータコンストラクションマネージャ130を有してよい。ストレージプロセッサ109は、これら及び他の機能を実行するための、ソフトウェア、ファームウェア、又はハードウェア、或いはそれらの組合せを有してよい。例えば、一実施形態において、プロセッサ170及びロジックエンジン176は、ホストプロセッサから独立した1つのストレージプロセッサ109内のハードウェアに実装されてよい。他の実施形態において、データコンストラクションマネージャは、ド複数のライバ、1つのオペレーティングシステム又は1つのアプリケーション、或いはこれらの組み合わせを含むホストソフトウェアに実装されてよい。
【0041】
いくつかの実施形態において、1つのコンピュータシステムは、1つのドライバ、及び、シリアルアドバンスドテクノロジアタッチメント(SATA)、シリアルアタッチドSCSI(SAS)、独立ディスク冗長アレイ(RAID)等、1つの磁気ディスクドライブ、テープ媒体、光ディスク等のような1つの不揮発ストレージデバイスへのアクセスを管理するコントローラのような、1つのストレージコントローラを備えてよい。他の実装において、ストレージコントローラの実施形態は、1つのドライバを含まない1つのシステム内に含まれてよい。デバイス及びエキスパンダのためのSASアーキテクチャについてのさらなる詳細は、参照番号ISO/IEC 14776−150:200xの技術規格書" Information Technology - Serial Attached SCSI (SAS)"及びANSIによって発表されたANSI INCITS.***:200x PHYレイヤ(2003年7月9日)に記載されている。SATAアーキテクチャについての詳細は、技術規格書"Serial ATA: High Speed Serialized AT Attachment"リビジョン1.0A(2003年1月)に記載されている。
【0042】
ロジックエンジンが全データブロックを受信して処理するとして説明されたが、一度に1つのブロックの一部又は複数のブロックが受信して処理され得る。さらに、ロジックエンジンが1つのディスクドライブのような1つの不揮発性ストレージユニットから直接データを受信するとして説明されたが、いくつかの実施形態においてデータはRAMメモリのような揮発性メモリからロジックエンジンに伝送され得る。
【0043】
いくつかの実施形態において、デバイスドライバ及びストレージプロセッサの実施形態は、デスクトップ、ワークステーション、サーバ、メインフレーム、ラップトップ、ハンドヘルドコンピュータ等のような、デバイスドライバ及びネットワークアダプタを含むコンピュータシステムに結合された1つのモニタ上に表示する情報をレンダリングする1つのビデオコントローラを含む1つのコンピュータシステム内に実装されてよい。他にも、ストレージプロセッサ及びデバイスドライバの実施形態は、ビデオコントローラを含まない1つのコンピューティングデバイスに実装されてよい。
【0044】
いくつかの実施形態において、ネットワークアダプタは、ネットワークアダプタ上の1つのポートに接続された1つのケーブルをわたってデータを伝送すべく構成されてよい。他にも、ネットワークアダプタの実施形態は、ワイヤレスLAN、ブルートゥース等のような1つのワイヤレスネットワーク又は接続をわたってデータを伝送すべく構成されてよい。
【0045】
図7の図示されたロジックは、ある順番で発生するいくつかのイベントを示す。他の実施形態において、いくつかのオペレーションは、異なる順番で、変更又は削除されて、実行されてよい。さらに、複数のオペレーションが前述のロジックに追加されてよく、依然として説明された実施形態に従う。さらに、ここに説明されたオペレーションはシーケンシャルに発生してよいし、いくつかのオペレーションはパラレルに処理されてよい。またさらに、オペレーションは1つのプロセッシングユニット又は分散された複数のプロセッシングユニットによって実行されてよい。
【0046】
図11は、図4に示された複数のホスト及び複数のストレージデバイスのような、ネットワークコンポーネントの1つのコンピュータアーキテクチャ500の1つの実装を示す。アーキテクチャ500は、1つのプロセッサ502(例えば1つのマイクロプロセッサ)、1つのメモリ504(例えば1つの揮発性メモリデバイス)、及びストレージ506(例えば、複数の磁気ディスクドライブ、複数の光ディスクドライブ、1つのテープドライブ等のような1つの不揮発性ストレージ)を備える。ストレージ506は、1つの内部ストレージデバイス又は1つのアタッチされた又はネットワークアクセス可能なストレージを有する。ストレージ506内の複数のプログラムは、当業者に知られた方法で、メモリ504にロードされてプロセッサ502によって実行される。1つのストレージプロセッサ507はストレージ506をコントロールすることができる。アーキテクチャはさらに、イーサネット(登録商標)、ファイバチャネルアービトレイテッドループ等のような1つのネットワークとの通信を可能にする1つのネットワークアダプタ508を備える。ファイバチャネルアーキテクチャの詳細は、ドキュメント番号ISO/IEC AWI 14165−25の技術規格書" Fibre Channel Framing and Signaling Interface"に記載されている。
【0047】
さらに、アーキテクチャは、いくつかの実施形態において、ディスプレイモニタ上に情報をレンダリングする1つのビデオコントローラ509を備えてよい。ビデオコントローラ509は1つのビデオカード上に実装されてよく、或いはマザーボード上に実装された集積回路部品に集積されてよい。議論されたように、ネットワークデバイスのいくつかは、複数のストレージカード又は複数のコントローラを有してよい。1つの入力デバイス510は、ユーザ入力をプロセッサ502に供給するために使用され、1つのキーボード、マウス、ペンスタイラス、マイクロホン、タッチディスプレイスクリーン、或いは当業者に知られた任意のアクチベーション又は入力メカニズムを有してよい。出力デバイス512は、ディスプレイモニタ、プリンタ、ストレージ等のような、プロセッサ502から伝送される情報をレンダリングすることができ、又は他のコンポーネントである。
【0048】
ストレージプロセッサ506及びネットワークアダプタ508は、1つのペリフェラルコンポーネントインターコネクト(PCI)カード又はいくつかの他のI/Oカードのようなカード上、或いはマザーボード上に実装された集積回路コンポーネント上に、それぞれ実装されてよい。PCIアーキテクチャについての詳細は、PCI−SIGによって発表された" PCI Local Bus, Rev. 2.3"に記載されている。
【0049】
前述の様々な実施形態が、実例及び説明を目的として提示された。上の仕様、例及びデータは、構成の製作及び使用の1つの包括的な説明を提供する。完全であること又は開示された厳密な形に限定することが意図されていない。多くの変更及び変形が上の教示を考慮に入れると可能である。
【特許請求の範囲】
【請求項1】
複数の不揮発性ストレージユニットのうちの1つの第1不揮発性ストレージユニットから、1つのキャッシュメモリを有する1つのストレージプロセッサの1つのロジックエンジンに、前記キャッシュメモリをバイパスする第1伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットにわたる1つのストライプ内に記憶された1つの第1データユニットを伝送する段階と、
前記キャッシュメモリをバイパスする第2伝送オペレーションにおいて、複数の不揮発性ストレージユニットのうちの1つの第2不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第2データユニットを伝送する段階と、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニット及び前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを用いて、前記ロジックエンジンにおいて1つの第3データユニットを構築する段階と
を備える方法。
【請求項2】
第3伝送オペレーションにおいて、前記構築された第3データユニットを、前記複数の不揮発性ストレージユニットのうちの1つの第3不揮発性ストレージユニットに伝送し、前記構築された第3データユニットを前記ストライプに記憶する段階
をさらに備える請求項1に記載の方法。
【請求項3】
前記第3伝送オペレーションは前記キャッシュメモリをバイパスする
請求項2に記載の方法。
【請求項4】
前記複数の不揮発性ストレージユニットは、1つの独立ディスク冗長アレイ(RAID)構成で配置される
請求項2に記載の方法。
【請求項5】
前記第2データユニットはパリティデータである
請求項4に記載の方法。
【請求項6】
不揮発性ストレージユニットのそれぞれは1つのディスクドライブである
請求項5に記載の方法。
【請求項7】
前記ストライプは1つのパリティデータブロックを有する1つの独立ディスク冗長アレイ(RAID)ストライプのデータブロックとして構成され、それぞれの前記データユニットは前記独立ディスク冗長アレイ(RAID)ストライプの1つのデータブロックである
請求項6に記載の方法。
【請求項8】
前記ロジックエンジンは、前記独立ディスク冗長アレイ(RAID)ストライプからの1つのデータブロックを記憶することができる1つのストアキューを有する
請求項7に記載の方法。
【請求項9】
前記ロジックエンジンの前記キャッシュメモリは1つのランダムアクセスメモリである
請求項1に記載の方法。
【請求項10】
前記ロジックエンジンにおいて1つの第3データユニットを構築する前記段階は、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニットを前記ロジックエンジンの1つのストアキューに適用し、前記第1ストアキューの内容及び前記適用された第1データユニットに1つの排他的論理和論理ファンクションオペレーションを実行する段階と、
前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを前記ロジックエンジンの前記ストアキューに適用し、前記ストアキューの内容及び前記適用された第2データユニットに1つの排他的論理和論理ファンクションオペレーションを実行する段階と
を有する請求項1に記載の方法。
【請求項11】
前記キャッシュメモリをバイパスする第4伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの第4不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第4データユニットを伝送する段階と、
前記キャッシュメモリをバイパスする第5伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの第5不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第5データユニットを伝送する段階と
をさらに備え、
前記ロジックエンジンにおいて前記第3データユニットを構築する前記段階は、前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第4データユニットも使用し、前記第3伝送オペレーションにおいて前記第3不揮発性ストレージユニットに前記構築された第3データユニットを伝送する前記段階に先立って前記第5伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第5データユニットを使用する
請求項2に記載の方法。
【請求項12】
前記複数のストレージユニットの追加の不揮発性ストレージユニットのそれぞれについて、
前記キャッシュメモリをバイパスする追加の伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの追加の不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの追加のデータユニットを伝送する段階
をさらに備え、
前記ロジックエンジンにおいて前記第3データユニットを構築する前記段階は、前記第3伝送オペレーションにおいて前記第3不揮発性ストレージユニットに前記構築された第3データユニットを伝送する前記段階に先立って前記追加の伝送オペレーションにおいて前記ロジックエンジンに伝送された前記追加のデータユニットも使用する
請求項2に記載の方法。
【請求項13】
前記ストライプ内に記憶される新データである1つの第4データユニットを前記ロジックエンジンに伝送する段階であって、前記第1データユニットは前記ストライプにおいて前記新データによって置き換えられる旧データであり、前記第2データユニットは前記ストライプにおいて置き換えられる旧パリティデータであり、前記ロジックエンジンにおいて前記第3データユニットを構築する前記段階は、前記ロジックエンジンに伝送された前記新データを用いてパリティデータの1つの置き換えユニットを構築する段階と、
新パリティデータである前記第3ユニットを前記第2不揮発性ストレージユニットに伝送して旧パリティデータである前記第2ユニットを置き換える段階と
をさらに備える請求項1に記載の方法。
【請求項14】
前記構築された第3データユニットを、第3伝送オペレーションにおいて1つのホストに伝送する段階
をさらに備える請求項1に記載の方法。
【請求項15】
前記ストレージプロセッサは、前記第1及び第2データユニットが前記第1及び第2不揮発性ストレージユニットから少なくとも部分的にパラレルにアクセスされるよう、前記第1及び第2不揮発性ストレージユニットに複数の読み込みコマンドを発行する
請求項1に記載の方法。
【請求項16】
1つのストレージメディアを備える製品であって、前記ストレージメディアは、
複数の不揮発性ストレージユニットのうちの1つの第1不揮発性ストレージユニットから、1つのキャッシュメモリを有する1つのストレージプロセッサの1つのロジックエンジンに、前記キャッシュメモリをバイパスする第1伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットにわたる1つのストライプ内に記憶された1つの第1データユニットを伝送し、
前記キャッシュメモリをバイパスする第2伝送オペレーションにおいて、複数の不揮発性ストレージユニットのうちの1つの第2不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第2データユニットを伝送し、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニット及び前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを用いて、前記ロジックエンジンにおいて1つの第3データユニットを構築する
ための記憶された複数の機械可読命令を有する製品。
【請求項17】
前記ストレージメディアは、
第3伝送オペレーションにおいて、前記構築された第3データユニットを、前記複数の不揮発性ストレージユニットのうちの1つの第3不揮発性ストレージユニットに伝送し、前記構築された第3データユニットを前記ストライプに記憶するための記憶された複数の機械可読命令をさらに有する
請求項16に記載の製品。
【請求項18】
前記第3伝送オペレーションは前記キャッシュメモリをバイパスする
請求項17に記載の製品。
【請求項19】
前記複数の不揮発性ストレージユニットは、1つの独立ディスク冗長アレイ(RAID)構成で配置される
請求項17に記載の製品。
【請求項20】
前記第2データユニットはパリティデータである
請求項19に記載の製品。
【請求項21】
不揮発性ストレージユニットのそれぞれは1つのディスクドライブである
請求項20に記載の製品。
【請求項22】
前記ストライプは1つのパリティデータブロックを有する1つの独立ディスク冗長アレイ(RAID)ストライプのデータブロックとして構成され、それぞれの前記データユニットは前記独立ディスク冗長アレイ(RAID)ストライプの1つのデータブロックである
請求項21に記載の製品。
【請求項23】
前記ロジックエンジンは、前記独立ディスク冗長アレイ(RAID)ストライプからの1つのデータブロックを記憶することができる1つのストアキューを有する
請求項22に記載の製品。
【請求項24】
前記ロジックエンジンの前記キャッシュメモリは1つのランダムアクセスメモリである
請求項16に記載の製品。
【請求項25】
前記ロジックエンジンにおいて1つの第3データユニットを構築するための前記複数の機械可読命令は、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニットを前記ロジックエンジンの1つのストアキューに適用し、前記第1ストアキューの内容及び前記適用された第1データユニットに1つの排他的論理和論理ファンクションオペレーションを実行し、
前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを前記ロジックエンジンの前記ストアキューに適用し、前記ストアキューの内容及び前記適用された第2データユニットに1つの排他的論理和論理ファンクションオペレーションを実行する
ための記憶された複数の機械可読命令を有する請求項16に記載の製品。
【請求項26】
前記ストレージメディアは、
前記キャッシュメモリをバイパスする第4伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの第4不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第4データユニットを伝送し、
前記キャッシュメモリをバイパスする第5伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの第5不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第5データユニットを伝送する
ための記憶された複数の機械可読命令をさらに有し、
前記ロジックエンジンにおいて前記第3データユニットを構築するための前記複数の機械可読命令は、
前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第4データユニットも使用し、前記第3伝送オペレーションにおいて前記第3不揮発性ストレージユニットに前記構築された第3データユニットを前記伝送することに先立って前記第5伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第5データユニットを使用するための記憶された複数の機械可読命令
を含む請求項17に記載の製品。
【請求項27】
前記ストレージメディアは、
前記ストライプ内に記憶される新データである1つの第4データユニットを、前記ロジックエンジンに伝送するための記憶された複数の機械可読命令
をさらに有し、
前記第1データユニットは前記ストライプにおいて前記新データによって置き換えられる旧データであり、前記第2データユニットは前記ストライプにおいて置き換えられる旧パリティデータであり、
前記ロジックエンジンにおいて前記第3データユニットを構築するための前記複数の機械可読命令は、前記ロジックエンジンに伝送された前記新データを用いてパリティデータの1つの置き換えユニットを構築するための、前記ストレージメディアに記憶された複数の機械可読命令を含み、
前記ストレージメディアは、
新パリティデータである前記第3ユニットを前記第2不揮発性ストレージユニットに伝送して旧パリティデータである前記第2ユニットを置き換えるための記憶された複数の機械可読命令
をさらに含む請求項16に記載の製品。
【請求項28】
前記ストレージメディアは、
前記構築された第3データユニットを、第3伝送オペレーションにおいて1つのホストに伝送するための記憶された複数の機械可読命令
をさらに有する請求項16に記載の製品。
【請求項29】
前記ストレージメディアは、
前記第1及び第2データユニットが前記第1及び第2不揮発性ストレージユニットから、少なくとも部分的にパラレルにアクセスされるよう、前記第1及び第2不揮発性ストレージユニットに複数の読み込みコマンドを発行するための記憶された複数の機械可読命令
をさらに有する請求項16に記載の製品。
【請求項30】
1つのオペレーティングシステム及び1つのアプリケーションを有する少なくとも1つのメモリと、
前記メモリに結合された1つのプロセッサと、
複数の不揮発性ストレージユニットを有するデータストレージと、
前記データストレージへの入力/出力(I/O)アクセスを管理するべく構成され、1つのキャッシュメモリ及び1つのロジックエンジンを有する1つのデータストレージプロセッサと、
前記メモリ内で前記プロセッサによって実行可能な1つのデバイスドライバと
を備え、
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、
1つの第1不揮発性ストレージユニットから、前記ストレージプロセッサの前記ロジックエンジンに、前記キャッシュメモリをバイパスする第1伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットにわたる1つのストライプ内に記憶された1つの第1データユニットを伝送し、
前記キャッシュメモリをバイパスする第2伝送オペレーションにおいて、複数の不揮発性ストレージユニットのうちの1つの第2不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第2データユニットを伝送し、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニット及び前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを用いて、前記ロジックエンジンにおいて1つの第3データユニットを構築すべく構成される
システム。
【請求項31】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、さらに、
第3伝送オペレーションにおいて、前記構築された第3データユニットを、前記複数の不揮発性ストレージユニットのうちの1つの第3不揮発性ストレージユニットに伝送し、前記構築された第3データユニットを前記ストライプに記憶すべく構成される
請求項30に記載のシステム。
【請求項32】
前記第3伝送オペレーションは前記キャッシュメモリをバイパスする
請求項31に記載のシステム。
【請求項33】
前記複数の不揮発性ストレージユニットは、1つの独立ディスク冗長アレイ(RAID)構成で配置される
請求項31に記載のシステム。
【請求項34】
前記第2データユニットはパリティデータである
請求項33に記載のシステム。
【請求項35】
不揮発性ストレージユニットのそれぞれは1つのディスクドライブである
請求項34に記載のシステム。
【請求項36】
前記ストライプは1つのパリティデータブロックを有する1つの独立ディスク冗長アレイ(RAID)ストライプのデータブロックとして構成され、それぞれの前記データユニットは前記独立ディスク冗長アレイ(RAID)ストライプの1つのデータブロックである
請求項35に記載のシステム。
【請求項37】
前記ロジックエンジンは、前記独立ディスク冗長アレイ(RAID)ストライプからの1つのデータブロックを記憶することができる1つのストアキューを有する
請求項36に記載のシステム。
【請求項38】
前記ロジックエンジンの前記キャッシュメモリは1つのランダムアクセスメモリである
請求項30に記載のシステム。
【請求項39】
前記ロジックエンジンにおいて1つの第3データユニットを構築すべく、前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニットを前記ロジックエンジンの1つのストアキューに適用し、前記第1ストアキューの内容及び前記適用された第1データユニットに1つの排他的論理和論理ファンクションオペレーションを実行し、前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを前記ロジックエンジンの前記ストアキューに適用し、前記ストアキューの内容及び前記適用された第2データユニットに1つの排他的論理和論理ファンクションオペレーションを実行すべく構成される
請求項30に記載のシステム。
【請求項40】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、さらに、
前記キャッシュメモリをバイパスする第4伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの第4不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第4データユニットを伝送し、
前記キャッシュメモリをバイパスする第5伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの第5不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第5データユニットを伝送すべく構成され、
前記ロジックエンジンにおいて前記第3データユニットを構築すべく、前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、さらに、前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第4データユニットも使用し、前記第3伝送オペレーションにおいて前記第3不揮発性ストレージユニットに前記構築された第3データユニットを伝送することに先立って前記第5伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第5データユニットを使用すべく構成される
請求項31に記載のシステム。
【請求項41】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、さらに、
前記ストライプ内に記憶される新データである1つの第4データユニットを、前記ロジックエンジンに伝送すべく構成され、前記第1データユニットは前記ストライプにおいて前記新データによって置き換えられる旧データであり、前記第2データユニットは前記ストライプにおいて置き換えられる旧パリティデータであり、
前記ロジックエンジンにおいて前記第3データユニットを構築するための前記複数の機械可読命令は、前記ロジックエンジンに伝送された前記新データを用いてパリティデータの1つの置き換えユニットを構築するための、前記ストレージメディアに記憶された複数の機械可読命令を持ち、
前記ストレージメディアは、
新パリティデータである前記第3ユニットを前記第2不揮発性ストレージユニットに伝送して旧パリティデータである前記第2ユニットを置き換えるための記憶された複数の機械可読命令をさらに含む
請求項30に記載のシステム。
【請求項42】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、さらに、前記構築された第3データユニットを、第3伝送オペレーションにおいて1つのホストに伝送すべく構成される
請求項30に記載のシステム。
【請求項43】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、さらに、前記第1及び第2データユニットが前記第1及び第2不揮発性ストレージユニットから、少なくとも部分的にパラレルにアクセスされるよう、前記第1及び第2不揮発性ストレージユニットに複数の読み込みコマンドを発行すべく構成される
請求項30に記載のシステム。
【請求項44】
複数の不揮発性ストレージユニットを備える1つのデータストレージとともに使用される1つのデバイスであって、
前記データストレージへの入力/出力(I/O)アクセスを管理するべく構成され、1つのキャッシュメモリ及び1つのロジックエンジンを有する1つのデータストレージプロセッサ
を備え、
前記ストレージプロセッサはさらに、
1つの第1不揮発性ストレージユニットから、前記ストレージプロセッサの前記ロジックエンジンに、前記キャッシュメモリをバイパスする第1伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットにわたる1つのストライプ内に記憶された1つの第1データユニットを伝送し、
前記キャッシュメモリをバイパスする第2伝送オペレーションにおいて、複数の不揮発性ストレージユニットのうちの1つの第2不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第2データユニットを伝送し、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニット及び前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを用いて、前記ロジックエンジンにおいて1つの第3データユニットを構築すべく構成される
デバイス。
【請求項45】
前記デバイスは、第3伝送オペレーションにおいて、前記構築された第3データユニットを、前記複数の不揮発性ストレージユニットのうちの1つの第3不揮発性ストレージユニットに伝送し、前記構築された第3データユニットを前記ストライプに記憶すべく構成される
請求項44に記載のデバイス。
【請求項46】
前記第3伝送オペレーションは前記キャッシュメモリをバイパスする
請求項45に記載のデバイス。
【請求項47】
それぞれの不揮発性ストレージユニットは1つのディスクドライブであり、
前記複数の不揮発性ストレージユニットは、1つの独立ディスク冗長アレイ(RAID)構成で配置され、
前記ストライプは、1つのパリティデータブロックを有する1つの独立ディスク冗長アレイ(RAID)ストライプのデータブロックとして構成され、それぞれの前記データユニットは前記独立ディスク冗長アレイ(RAID)ストライプの1つのデータブロックである
請求項45に記載のデバイス。
【請求項48】
前記ロジックエンジンは、前記独立ディスク冗長アレイ(RAID)ストライプからの1つのデータブロックを記憶することができる1つのストアキューを有し、
前記ロジックエンジンの前記キャッシュメモリは1つのランダムアクセスメモリであり、
前記ロジックエンジンにおいて1つの第3データユニットを構築すべく、前記ストレージプロセッサは、前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニットを前記ロジックエンジンの1つのストアキューに適用し、前記第1ストアキューの内容及び前記適用された第1データユニットに1つの排他的論理和論理ファンクションオペレーションを実行し、前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを前記ロジックエンジンの前記ストアキューに適用し、前記ストアキューの内容及び前記適用された第2データユニットに1つの排他的論理和論理ファンクションオペレーションを実行すべく構成される
請求項47に記載のデバイス。
【請求項49】
前記構築された第3データユニットを、第3伝送オペレーションにおいて1つのホストに伝送すべく構成される
請求項44に記載のデバイス。
【請求項50】
前記ストレージプロセッサは、さらに、前記ストレージプロセッサは、前記第1及び第2データユニットが前記第1及び第2不揮発性ストレージユニットから、少なくとも部分的にパラレルにアクセスされるよう、前記第1及び第2不揮発性ストレージユニットに複数の読み込みコマンドを発行すべく構成される
請求項44に記載のデバイス。
【請求項1】
複数の不揮発性ストレージユニットのうちの1つの第1不揮発性ストレージユニットから、1つのキャッシュメモリを有する1つのストレージプロセッサの1つのロジックエンジンに、前記キャッシュメモリをバイパスする第1伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットにわたる1つのストライプ内に記憶された1つの第1データユニットを伝送する段階と、
前記キャッシュメモリをバイパスする第2伝送オペレーションにおいて、複数の不揮発性ストレージユニットのうちの1つの第2不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第2データユニットを伝送する段階と、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニット及び前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを用いて、前記ロジックエンジンにおいて1つの第3データユニットを構築する段階と
を備える方法。
【請求項2】
第3伝送オペレーションにおいて、前記構築された第3データユニットを、前記複数の不揮発性ストレージユニットのうちの1つの第3不揮発性ストレージユニットに伝送し、前記構築された第3データユニットを前記ストライプに記憶する段階
をさらに備える請求項1に記載の方法。
【請求項3】
前記第3伝送オペレーションは前記キャッシュメモリをバイパスする
請求項2に記載の方法。
【請求項4】
前記複数の不揮発性ストレージユニットは、1つの独立ディスク冗長アレイ(RAID)構成で配置される
請求項2に記載の方法。
【請求項5】
前記第2データユニットはパリティデータである
請求項4に記載の方法。
【請求項6】
不揮発性ストレージユニットのそれぞれは1つのディスクドライブである
請求項5に記載の方法。
【請求項7】
前記ストライプは1つのパリティデータブロックを有する1つの独立ディスク冗長アレイ(RAID)ストライプのデータブロックとして構成され、それぞれの前記データユニットは前記独立ディスク冗長アレイ(RAID)ストライプの1つのデータブロックである
請求項6に記載の方法。
【請求項8】
前記ロジックエンジンは、前記独立ディスク冗長アレイ(RAID)ストライプからの1つのデータブロックを記憶することができる1つのストアキューを有する
請求項7に記載の方法。
【請求項9】
前記ロジックエンジンの前記キャッシュメモリは1つのランダムアクセスメモリである
請求項1に記載の方法。
【請求項10】
前記ロジックエンジンにおいて1つの第3データユニットを構築する前記段階は、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニットを前記ロジックエンジンの1つのストアキューに適用し、前記第1ストアキューの内容及び前記適用された第1データユニットに1つの排他的論理和論理ファンクションオペレーションを実行する段階と、
前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを前記ロジックエンジンの前記ストアキューに適用し、前記ストアキューの内容及び前記適用された第2データユニットに1つの排他的論理和論理ファンクションオペレーションを実行する段階と
を有する請求項1に記載の方法。
【請求項11】
前記キャッシュメモリをバイパスする第4伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの第4不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第4データユニットを伝送する段階と、
前記キャッシュメモリをバイパスする第5伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの第5不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第5データユニットを伝送する段階と
をさらに備え、
前記ロジックエンジンにおいて前記第3データユニットを構築する前記段階は、前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第4データユニットも使用し、前記第3伝送オペレーションにおいて前記第3不揮発性ストレージユニットに前記構築された第3データユニットを伝送する前記段階に先立って前記第5伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第5データユニットを使用する
請求項2に記載の方法。
【請求項12】
前記複数のストレージユニットの追加の不揮発性ストレージユニットのそれぞれについて、
前記キャッシュメモリをバイパスする追加の伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの追加の不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの追加のデータユニットを伝送する段階
をさらに備え、
前記ロジックエンジンにおいて前記第3データユニットを構築する前記段階は、前記第3伝送オペレーションにおいて前記第3不揮発性ストレージユニットに前記構築された第3データユニットを伝送する前記段階に先立って前記追加の伝送オペレーションにおいて前記ロジックエンジンに伝送された前記追加のデータユニットも使用する
請求項2に記載の方法。
【請求項13】
前記ストライプ内に記憶される新データである1つの第4データユニットを前記ロジックエンジンに伝送する段階であって、前記第1データユニットは前記ストライプにおいて前記新データによって置き換えられる旧データであり、前記第2データユニットは前記ストライプにおいて置き換えられる旧パリティデータであり、前記ロジックエンジンにおいて前記第3データユニットを構築する前記段階は、前記ロジックエンジンに伝送された前記新データを用いてパリティデータの1つの置き換えユニットを構築する段階と、
新パリティデータである前記第3ユニットを前記第2不揮発性ストレージユニットに伝送して旧パリティデータである前記第2ユニットを置き換える段階と
をさらに備える請求項1に記載の方法。
【請求項14】
前記構築された第3データユニットを、第3伝送オペレーションにおいて1つのホストに伝送する段階
をさらに備える請求項1に記載の方法。
【請求項15】
前記ストレージプロセッサは、前記第1及び第2データユニットが前記第1及び第2不揮発性ストレージユニットから少なくとも部分的にパラレルにアクセスされるよう、前記第1及び第2不揮発性ストレージユニットに複数の読み込みコマンドを発行する
請求項1に記載の方法。
【請求項16】
1つのストレージメディアを備える製品であって、前記ストレージメディアは、
複数の不揮発性ストレージユニットのうちの1つの第1不揮発性ストレージユニットから、1つのキャッシュメモリを有する1つのストレージプロセッサの1つのロジックエンジンに、前記キャッシュメモリをバイパスする第1伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットにわたる1つのストライプ内に記憶された1つの第1データユニットを伝送し、
前記キャッシュメモリをバイパスする第2伝送オペレーションにおいて、複数の不揮発性ストレージユニットのうちの1つの第2不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第2データユニットを伝送し、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニット及び前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを用いて、前記ロジックエンジンにおいて1つの第3データユニットを構築する
ための記憶された複数の機械可読命令を有する製品。
【請求項17】
前記ストレージメディアは、
第3伝送オペレーションにおいて、前記構築された第3データユニットを、前記複数の不揮発性ストレージユニットのうちの1つの第3不揮発性ストレージユニットに伝送し、前記構築された第3データユニットを前記ストライプに記憶するための記憶された複数の機械可読命令をさらに有する
請求項16に記載の製品。
【請求項18】
前記第3伝送オペレーションは前記キャッシュメモリをバイパスする
請求項17に記載の製品。
【請求項19】
前記複数の不揮発性ストレージユニットは、1つの独立ディスク冗長アレイ(RAID)構成で配置される
請求項17に記載の製品。
【請求項20】
前記第2データユニットはパリティデータである
請求項19に記載の製品。
【請求項21】
不揮発性ストレージユニットのそれぞれは1つのディスクドライブである
請求項20に記載の製品。
【請求項22】
前記ストライプは1つのパリティデータブロックを有する1つの独立ディスク冗長アレイ(RAID)ストライプのデータブロックとして構成され、それぞれの前記データユニットは前記独立ディスク冗長アレイ(RAID)ストライプの1つのデータブロックである
請求項21に記載の製品。
【請求項23】
前記ロジックエンジンは、前記独立ディスク冗長アレイ(RAID)ストライプからの1つのデータブロックを記憶することができる1つのストアキューを有する
請求項22に記載の製品。
【請求項24】
前記ロジックエンジンの前記キャッシュメモリは1つのランダムアクセスメモリである
請求項16に記載の製品。
【請求項25】
前記ロジックエンジンにおいて1つの第3データユニットを構築するための前記複数の機械可読命令は、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニットを前記ロジックエンジンの1つのストアキューに適用し、前記第1ストアキューの内容及び前記適用された第1データユニットに1つの排他的論理和論理ファンクションオペレーションを実行し、
前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを前記ロジックエンジンの前記ストアキューに適用し、前記ストアキューの内容及び前記適用された第2データユニットに1つの排他的論理和論理ファンクションオペレーションを実行する
ための記憶された複数の機械可読命令を有する請求項16に記載の製品。
【請求項26】
前記ストレージメディアは、
前記キャッシュメモリをバイパスする第4伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの第4不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第4データユニットを伝送し、
前記キャッシュメモリをバイパスする第5伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの第5不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第5データユニットを伝送する
ための記憶された複数の機械可読命令をさらに有し、
前記ロジックエンジンにおいて前記第3データユニットを構築するための前記複数の機械可読命令は、
前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第4データユニットも使用し、前記第3伝送オペレーションにおいて前記第3不揮発性ストレージユニットに前記構築された第3データユニットを前記伝送することに先立って前記第5伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第5データユニットを使用するための記憶された複数の機械可読命令
を含む請求項17に記載の製品。
【請求項27】
前記ストレージメディアは、
前記ストライプ内に記憶される新データである1つの第4データユニットを、前記ロジックエンジンに伝送するための記憶された複数の機械可読命令
をさらに有し、
前記第1データユニットは前記ストライプにおいて前記新データによって置き換えられる旧データであり、前記第2データユニットは前記ストライプにおいて置き換えられる旧パリティデータであり、
前記ロジックエンジンにおいて前記第3データユニットを構築するための前記複数の機械可読命令は、前記ロジックエンジンに伝送された前記新データを用いてパリティデータの1つの置き換えユニットを構築するための、前記ストレージメディアに記憶された複数の機械可読命令を含み、
前記ストレージメディアは、
新パリティデータである前記第3ユニットを前記第2不揮発性ストレージユニットに伝送して旧パリティデータである前記第2ユニットを置き換えるための記憶された複数の機械可読命令
をさらに含む請求項16に記載の製品。
【請求項28】
前記ストレージメディアは、
前記構築された第3データユニットを、第3伝送オペレーションにおいて1つのホストに伝送するための記憶された複数の機械可読命令
をさらに有する請求項16に記載の製品。
【請求項29】
前記ストレージメディアは、
前記第1及び第2データユニットが前記第1及び第2不揮発性ストレージユニットから、少なくとも部分的にパラレルにアクセスされるよう、前記第1及び第2不揮発性ストレージユニットに複数の読み込みコマンドを発行するための記憶された複数の機械可読命令
をさらに有する請求項16に記載の製品。
【請求項30】
1つのオペレーティングシステム及び1つのアプリケーションを有する少なくとも1つのメモリと、
前記メモリに結合された1つのプロセッサと、
複数の不揮発性ストレージユニットを有するデータストレージと、
前記データストレージへの入力/出力(I/O)アクセスを管理するべく構成され、1つのキャッシュメモリ及び1つのロジックエンジンを有する1つのデータストレージプロセッサと、
前記メモリ内で前記プロセッサによって実行可能な1つのデバイスドライバと
を備え、
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、
1つの第1不揮発性ストレージユニットから、前記ストレージプロセッサの前記ロジックエンジンに、前記キャッシュメモリをバイパスする第1伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットにわたる1つのストライプ内に記憶された1つの第1データユニットを伝送し、
前記キャッシュメモリをバイパスする第2伝送オペレーションにおいて、複数の不揮発性ストレージユニットのうちの1つの第2不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第2データユニットを伝送し、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニット及び前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを用いて、前記ロジックエンジンにおいて1つの第3データユニットを構築すべく構成される
システム。
【請求項31】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、さらに、
第3伝送オペレーションにおいて、前記構築された第3データユニットを、前記複数の不揮発性ストレージユニットのうちの1つの第3不揮発性ストレージユニットに伝送し、前記構築された第3データユニットを前記ストライプに記憶すべく構成される
請求項30に記載のシステム。
【請求項32】
前記第3伝送オペレーションは前記キャッシュメモリをバイパスする
請求項31に記載のシステム。
【請求項33】
前記複数の不揮発性ストレージユニットは、1つの独立ディスク冗長アレイ(RAID)構成で配置される
請求項31に記載のシステム。
【請求項34】
前記第2データユニットはパリティデータである
請求項33に記載のシステム。
【請求項35】
不揮発性ストレージユニットのそれぞれは1つのディスクドライブである
請求項34に記載のシステム。
【請求項36】
前記ストライプは1つのパリティデータブロックを有する1つの独立ディスク冗長アレイ(RAID)ストライプのデータブロックとして構成され、それぞれの前記データユニットは前記独立ディスク冗長アレイ(RAID)ストライプの1つのデータブロックである
請求項35に記載のシステム。
【請求項37】
前記ロジックエンジンは、前記独立ディスク冗長アレイ(RAID)ストライプからの1つのデータブロックを記憶することができる1つのストアキューを有する
請求項36に記載のシステム。
【請求項38】
前記ロジックエンジンの前記キャッシュメモリは1つのランダムアクセスメモリである
請求項30に記載のシステム。
【請求項39】
前記ロジックエンジンにおいて1つの第3データユニットを構築すべく、前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニットを前記ロジックエンジンの1つのストアキューに適用し、前記第1ストアキューの内容及び前記適用された第1データユニットに1つの排他的論理和論理ファンクションオペレーションを実行し、前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを前記ロジックエンジンの前記ストアキューに適用し、前記ストアキューの内容及び前記適用された第2データユニットに1つの排他的論理和論理ファンクションオペレーションを実行すべく構成される
請求項30に記載のシステム。
【請求項40】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、さらに、
前記キャッシュメモリをバイパスする第4伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの第4不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第4データユニットを伝送し、
前記キャッシュメモリをバイパスする第5伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットのうちの1つの第5不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第5データユニットを伝送すべく構成され、
前記ロジックエンジンにおいて前記第3データユニットを構築すべく、前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、さらに、前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第4データユニットも使用し、前記第3伝送オペレーションにおいて前記第3不揮発性ストレージユニットに前記構築された第3データユニットを伝送することに先立って前記第5伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第5データユニットを使用すべく構成される
請求項31に記載のシステム。
【請求項41】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、さらに、
前記ストライプ内に記憶される新データである1つの第4データユニットを、前記ロジックエンジンに伝送すべく構成され、前記第1データユニットは前記ストライプにおいて前記新データによって置き換えられる旧データであり、前記第2データユニットは前記ストライプにおいて置き換えられる旧パリティデータであり、
前記ロジックエンジンにおいて前記第3データユニットを構築するための前記複数の機械可読命令は、前記ロジックエンジンに伝送された前記新データを用いてパリティデータの1つの置き換えユニットを構築するための、前記ストレージメディアに記憶された複数の機械可読命令を持ち、
前記ストレージメディアは、
新パリティデータである前記第3ユニットを前記第2不揮発性ストレージユニットに伝送して旧パリティデータである前記第2ユニットを置き換えるための記憶された複数の機械可読命令をさらに含む
請求項30に記載のシステム。
【請求項42】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、さらに、前記構築された第3データユニットを、第3伝送オペレーションにおいて1つのホストに伝送すべく構成される
請求項30に記載のシステム。
【請求項43】
前記アプリケーション、オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、さらに、前記第1及び第2データユニットが前記第1及び第2不揮発性ストレージユニットから、少なくとも部分的にパラレルにアクセスされるよう、前記第1及び第2不揮発性ストレージユニットに複数の読み込みコマンドを発行すべく構成される
請求項30に記載のシステム。
【請求項44】
複数の不揮発性ストレージユニットを備える1つのデータストレージとともに使用される1つのデバイスであって、
前記データストレージへの入力/出力(I/O)アクセスを管理するべく構成され、1つのキャッシュメモリ及び1つのロジックエンジンを有する1つのデータストレージプロセッサ
を備え、
前記ストレージプロセッサはさらに、
1つの第1不揮発性ストレージユニットから、前記ストレージプロセッサの前記ロジックエンジンに、前記キャッシュメモリをバイパスする第1伝送オペレーションにおいて、前記複数の不揮発性ストレージユニットにわたる1つのストライプ内に記憶された1つの第1データユニットを伝送し、
前記キャッシュメモリをバイパスする第2伝送オペレーションにおいて、複数の不揮発性ストレージユニットのうちの1つの第2不揮発性ストレージユニットから前記ロジックエンジンに、前記ストライプ内に記憶された1つの第2データユニットを伝送し、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニット及び前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを用いて、前記ロジックエンジンにおいて1つの第3データユニットを構築すべく構成される
デバイス。
【請求項45】
前記デバイスは、第3伝送オペレーションにおいて、前記構築された第3データユニットを、前記複数の不揮発性ストレージユニットのうちの1つの第3不揮発性ストレージユニットに伝送し、前記構築された第3データユニットを前記ストライプに記憶すべく構成される
請求項44に記載のデバイス。
【請求項46】
前記第3伝送オペレーションは前記キャッシュメモリをバイパスする
請求項45に記載のデバイス。
【請求項47】
それぞれの不揮発性ストレージユニットは1つのディスクドライブであり、
前記複数の不揮発性ストレージユニットは、1つの独立ディスク冗長アレイ(RAID)構成で配置され、
前記ストライプは、1つのパリティデータブロックを有する1つの独立ディスク冗長アレイ(RAID)ストライプのデータブロックとして構成され、それぞれの前記データユニットは前記独立ディスク冗長アレイ(RAID)ストライプの1つのデータブロックである
請求項45に記載のデバイス。
【請求項48】
前記ロジックエンジンは、前記独立ディスク冗長アレイ(RAID)ストライプからの1つのデータブロックを記憶することができる1つのストアキューを有し、
前記ロジックエンジンの前記キャッシュメモリは1つのランダムアクセスメモリであり、
前記ロジックエンジンにおいて1つの第3データユニットを構築すべく、前記ストレージプロセッサは、前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第1データユニットを前記ロジックエンジンの1つのストアキューに適用し、前記第1ストアキューの内容及び前記適用された第1データユニットに1つの排他的論理和論理ファンクションオペレーションを実行し、前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記第2データユニットを前記ロジックエンジンの前記ストアキューに適用し、前記ストアキューの内容及び前記適用された第2データユニットに1つの排他的論理和論理ファンクションオペレーションを実行すべく構成される
請求項47に記載のデバイス。
【請求項49】
前記構築された第3データユニットを、第3伝送オペレーションにおいて1つのホストに伝送すべく構成される
請求項44に記載のデバイス。
【請求項50】
前記ストレージプロセッサは、さらに、前記ストレージプロセッサは、前記第1及び第2データユニットが前記第1及び第2不揮発性ストレージユニットから、少なくとも部分的にパラレルにアクセスされるよう、前記第1及び第2不揮発性ストレージユニットに複数の読み込みコマンドを発行すべく構成される
請求項44に記載のデバイス。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公表番号】特表2007−513435(P2007−513435A)
【公表日】平成19年5月24日(2007.5.24)
【国際特許分類】
【出願番号】特願2006−542901(P2006−542901)
【出願日】平成16年12月20日(2004.12.20)
【国際出願番号】PCT/US2004/043041
【国際公開番号】WO2005/066761
【国際公開日】平成17年7月21日(2005.7.21)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】
【公表日】平成19年5月24日(2007.5.24)
【国際特許分類】
【出願日】平成16年12月20日(2004.12.20)
【国際出願番号】PCT/US2004/043041
【国際公開番号】WO2005/066761
【国際公開日】平成17年7月21日(2005.7.21)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】
[ Back to top ]