説明

パリティデータを生成するための方法、システム、及びプログラム

パリティデータを使用する1つのデータ組織化形式で1つのストレージデバイスアレイ内に記憶された旧データを更新する場合の、パリティデータを生成するための1つの方法、システム、及びプログラムが提供される。一実施形態において、1つのロジックエンジンは、1つの読み込みオペレーションにおいて取得された新データが記憶される複数のレジスタ又は複数のストアキューを有する。排他的論理和ファンクションのような1つの論理ファンクションが、他の1つの読み込みオペレーションにおいて取得された旧データを用いて、複数のレジスタのそれぞれの新データに対して実行される。第1タイプの新パリティデータを生成すべく、排他的論理和ファンクションのような1つのロジックファンクションが、他の1つの読み込みオペレーションにおいて取得された第1タイプの旧パリティデータを用いて、複数のレジスタのうちの1つの中の中間データに対して実行される。第2タイプの新パリティデータを生成すべく、排他的論理和ファンクションのような1つのロジックファンクションが、他の1つの読み込みオペレーションにおいて取得された第2タイプの旧パリティデータを用いて、複数のレジスタのうちの他の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つのドライブが機能しなくなった場合にデータの容易な復元を提供する。2以上のドライブが機能しなくなった場合に、いくつかのストレージアプリケーションは、よりロバストなデータ保護から利益を得ることができる。一般的にそれぞれのデータストライプについてパリティデータの2つのブロックを持つ追加のRAIDスキームが開発されている。1つの知られたパリティスキームは、"水平"パリティブロック及び"対角"パリティブロックを含む。RAID−5DP(デュアルパリティ)又はRAID6のような用語が、これら又は類似のデータ組織化構成のためにストレージ業界で使用される。
【0005】
図1は、RAIDシステムにおけるストライプnのような1つのストライプ上の旧データを新データで更新する場合に、新パリティデータを生成すべく実行され得る論理オペレーションを示す。図1に示されるように、1つの排他的論理和ファンクションが、新データ30及びストライプnの旧データ32上で実行される。ストライプnについての新パリティデータ36を生成すべく、排他的論理和ファンクションの結果が、ストライプnの旧パリティデータ34と排他的論理和がとられる。新パリティデータ36は適切なRAIDストレージユニット上の旧パリティデータ34を上書きするために使用され、新データ30は適切なRAIDストレージユニット上の旧データ32を上書きするために使用される。
【0006】
図2は、図1の論理機能に従って、新データを複数のRAIDストレージユニットに書き込む場合に新パリティデータを生成するRAIDストレージプロセッサのロジックエンジン50の従来技術の一例を示す。ロジックエンジン50は、矢印54によって表されるようなストアキュー52の内容及び矢印56によって表されるような入力に存在するデータについて排他的論理和の論理ファンクションを実行することができる1つのストアキュー52を有する。Intel80303集積回路チップは、アプリケーションアクセラレータユニット(AAU)と呼ばれる1つの類似のロジックエンジンを持つ。
【0007】
新パリティデータの生成における図2のロジックエンジン50のオペレーションは図3に表される。ストアキュー52をリセット(ブロック60)すると、新データ30がローカルメモリ64(図2)読み込まれ(ブロック62)、ストアキュー52に記憶される。ストアキュー52が予めリセットされているので、ローカルメモリ64から読み込まれた新データ30及びストアキュー52のリセット内容を排他的論理和ファンクションを実行することによって、新データ30がストアキュー52に記憶される。読み込みオペレーションのサイズは、典型的にはストアキュー52の容量に依存する。したがって、例えばストアキュー52の容量が1Kバイトである場合、一般的に、読み込みオペレーションはストアキュー52が1Kバイトの新データ30で満たされるまで継続する。
【0008】
新データ30によって置き換えられるべき旧データ32がローカルメモリ64から読み込まれ(ブロック64)、ストアキュー52に予め記憶された新データ30と排他的論理和がとられ(ブロック66)、ストアキュー52内に中間結果として記憶される。第3読み込みオペレーションにおいて、ローカルメモリ64から旧パリティデータ34が読み込まれ(ブロック68)、ストアキュー52に予め記憶されている中間結果と排他的論理和がとられる(ブロック70)。最後の排他的論理和オペレーションの結果が、続くローカルメモリ64及び複数のストレージデバイスのストライプnへの転送のためにストアキュー52に記憶される新パリティデータ36となる。
【0009】
それにもかかわらず、データストレージ構成におけるプロセッサのパフォーマンスを向上させるために、継続的な技術的必要性が存在する。
【図面の簡単な説明】
【0010】
全体にわたり同様の参照番号が対応する構成要素を表す図面を参照する。
【図1】RAIDパリティデータを生成する従来技術を示す。
【図2】RAIDパリティデータの生成のためのロジックエンジンの従来技術を示す。
【図3】図2のロジックエンジンの従来技術を用いてパリティデータを生成するオペレーションの従来技術を示す。
【図4】複数の態様が実装されたコンピューティング環境の一実施形態を示す。
【図5】RAIDパリティデータの生成のための複数の態様に従う、ストレージプロセッサの一実施形態を示す。
【図6】RAIDパリティデータの生成のための複数の態様に従う、図5のストレージプロセッサのためのロジックエンジンの一実施形態を示す。
【図7A】パリティデータを生成するために実行される複数のオペレーションの一実施形態を示す。
【図7B】パリティデータを生成するために実行される複数のオペレーションの一実施形態を示す。
【図8A】パリティデータを生成する複数のオペレーションの一実施形態における、図6のロジックエンジンのストアキューの内容を示す。
【図8B】パリティデータを生成する複数のオペレーションの一実施形態における、図6のロジックエンジンのストアキューの内容を示す。
【図9】記載された複数の実施形態で使用され得る一アーキテクチャを示す。
【発明を実施するための最良の形態】
【0011】
以下の説明において、この文書の一部を形成し、いくつかの実施形態を示す添付の図面に対して参照がなされる。他の実施形態が利用されてよく、構造的又は機能的変更がなされてよいことが理解される。
【0012】
図4は、複数の態様が実装された1つのコンピューティング環境を示す。1つのコンピュータ102は、1以上の中央処理装置(CPU104(1つだけ図示される)、1つのメモリ106、不揮発性ストレージ108、1つのストレージプロセッサ109、1つのオペレーティングシステム110、及び1つのネットワークアダプタ112を備える。さらに、アプリケーションプログラム114は、メモリ内で実行され、ストレージ108からデータを読み込み、ストレージ108にデータを書き込むことができる。コンピュータ102は、メインフレーム、サーバ、パーソナルコンピュータ、ワークステーション、ラップトップ、ハンドヘルドコンピュータ、テレフォニーデバイス、ネットワークアプライアンス、仮想化デバイス、ストレージプロセッサ、ストレージコントローラ等のような、技術的に知られた任意のコンピューティングデバイスを備えてよい。技術的に知られた任意のCPU104及びオペレーティングシステム110が使用されてよい。メモリ管理オペレーションの一環として、メモリ106内の複数のプログラム及びデータはストレージ108にスワップされてよい。
【0013】
デバイスドライバ120は、メモリ106内で実行され、ストレージプロセッサ109と通信し、オペレーティングシステム110とストレージデバイス109との間を仲介するためのストレージプロセッサ特有のコマンドを有する。例えば、ストレージ108は、ディスクドライブ150a、150b、・・・、150nを有してよく、データは、1つのRAID構成タイプにおける1以上のディスクドライブ150a、150b、・・・、150nに最初に記録される。このストレージプロセッサ109は、コンピュータ102の一部であってよく、或いは、例えば1つのストレージプロセッサ154及びディスクドライブ150a、150b、・・・、150nの他のセットを有する1つのストレージ156で示されるように、ネットワークアダプタ112を介してネットワーク152によりコンピュータ102に接続されてよい。そのようなネットワーク接続されたストレージプロセッサ154のために、デバイスドライバ120は、ネットワークストレージ156にデータを書き込むためにストレージプロセッサ154にデータを伝送すべくネットワークアダプタ112と通信するための、ネットワークアダプタ特有の複数のコマンドを有する。
【0014】
いくつかの実施形態において、ストレージプロセッサ109は、ストレージ108からのデータの読み込み又はストレージ108へのデータの書き込みにおいてコンピュータ102をアシストするためのいくつかの機能を実行する。例えば、ストレージプロセッサ109は、データ更新及び他のデータオペレーションの間にパリティデータの生成を管理する1つのパリティデータマネージャ130を有してよい。このように、データパリティマネージャ130は、ディスクドライブ150a、・・・、150n上のユーザデータを更新する場合にパリティデータを更新するために使用され得る。ストレージプロセッサ109は、これら及び他の機能を実行するための、ソフトウェア、ファームウェア、又はハードウェア、或いはそれらの組合せを有してよい。
【0015】
適切なストレージプロセッサ109の一例が図5に示される。ストレージプロセッサ109は、ホストコンピュータ102とストレージ108との間での大量のデータの高速移動を促進する。ストレージプロセッサ109は、ホストコンピュータ102の1つのプライマリバス162とストレージ108の1つのアタッチメントコントローラ166に結合された1つのセカンダリバス164との間の1つのブリッジ160を有する。ブリッジ160は、例えばシリアルアドバンスドテクノロジアタッチメント(SATA)コントローラであり得るアタッチメントコントローラ166が、プライマリバス162から物理的に分離されることを可能にする。
【0016】
プライマリアドレス変換ユニット168は、プライマリバス162から1つのプロセッサ170及び1つのローカルメモリ172への1つのローカルバス174を介した1つの高スループットデータパスを提供する。複数のパリティブロックを生成するための排他的論理和演算を提供する1つのロジックエンジン176も、ローカルバス174に結合されている。セカンダリアドレス変換ユニット178は、プロセッサ170及びローカルメモリ172からセカンダリバス164への高スループットデータパスを提供する。図示された実施形態において、バス162、164はPCIバスであるが、他のタイプの周辺バスも使用され得る。
【0017】
ローカルメモリ172は、1つのメモリコントローラ180を有する。図示された実施形態において、ローカルメモリ172は揮発性のRAMタイプのメモリであり、データをキャッシュするために使用される。他の複数のタイプのメモリも使用され得る。ダイレクトメモリアクセス(DMA)コントローラ182、184は、ホストコンピュータ102からローカルメモリ172及びローカルメモリ172からドライブ150a・・・150nへの複数のダイレクトメモリ転送を可能にする。
【0018】
先に説明されたように、いくつかのRAIDスキームは、それぞれのデータストライプについて1つの水平パリティブロック及び1つの対角パリティブロックのようなパリティデータの2つのブロックを利用する。新データがストライプに書き込まれた場合、新たな水平パリティデータ及び新たな対角パリティデータも共に生成され得る。ロジックエンジン50及び上で説明されたパリティ生成オペレーションを利用するために、6つの読み込みオペレーション、すなわち、新パリティデータの生成について先に説明されたような水平パリティデータを生成するための3つの読み込みオペレーション及び対角パリティデータを生成するための3つの読み込みオペレーションが利用されると信じられている。
【0019】
図示された実施形態の1態様に従って、ストレージプロセッサ109のロジックエンジン176のような1つのロジックエンジンが、いくつかの用途において、パリティデータの複数のブロックの効率的な生成を著しく促進する。例えば、1つの用途において、RAIDで構成されたデータを更新する場合に複数のパリティブロックを生成するための読み込みオペレーションの数が著しく低減される。
【0020】
図6は、ここでそれぞれストアキュー1、ストアキュー2と呼ばれるストアキュー200a、200bのペアを含むロジックエンジン176の一例を概略形式で示す。ストアキュー1は、矢印202で表されるようなストアキュー1の内容及び矢印204によって表されるような入力に存在するデータに排他的論理和の論理ファンクションを実行することができる。同様に、ストアキュー2は、矢印206で表されるようなストアキュー2の内容及び矢印208によって表されるような入力に存在するデータに排他的論理和の論理ファンクションを実行することができる。図示された実施形態の一態様に従って、ローカルメモリ172のような1つのソースから1つの読み込みオペレーションで読み込まれたデータは、ストアキュー1、2のうちの1つ又は両方の内容と、追加の読み込みオペレーションなしで選択的に排他的論理和がとられる。以下により詳細に説明されるが、そのような一構成は、パリティデータ生成を促進することができる。
【0021】
図示された実施形態において、ロジックエンジン176が複数のストアキューを含むことが示される。複数のレジスタ並びに他のタイプのメモリ及び複数の論理回路を含む他のタイプの複数の回路が使用され得る。
【0022】
図7a、7b、及び8a、8bは、ストレージ108に記憶されたデータを新データで更新する場合に二重のパリティデータを生成するための、プロセッサ170及びロジックエンジン176を含むことができる1つのパリティデータマネージャ130のオペレーションの一例を示す。本例において、水平及び対角パリティブロックは、新データで更新されるべきそれぞれのストライプについて生成される。ここで説明される方法及び構造を利用して他のタイプの複数のパリティブロックが生成されてもよいことが理解される。
【0023】
本例において、ディスクドライブ150a・・・150n上のストライプnの1つのブロック内の旧データを置き換えるべき新データは、ホストコンピュータ102によってローカルメモリ172内に予め記憶されていた。ホストコンピュータ102からのローカルメモリ172へのこのデータ転送は、いくつかの実施形態において、DMAコントローラ182を使用した1つのDMA転送であってよい。ローカルメモリ内に一度に記憶される新データの量は、ローカルメモリ172の容量に依存するだろう。本実施形態において、新データに加えて、新データによって置き換えられている旧データは、ストレージ108から転送され、ローカルメモリ172内に記憶される。同様に、以下に説明されるように生成される新たな水平パリティデータによって置き換えられる古い水平パリティデータも、ストレージ108から転送されて、ローカルメモリ172内に記憶される。さらに、以下に説明されるように生成される新たな対角パリティデータによって置き換えられる古い対角パリティデータも、ストレージ108から転送されて、ローカルメモリ172内に記憶される。
【0024】
図8a、対向する図7aのブロック220に示されるように、ストアキュー1及びストアキュー2を共にリセット(ブロック220)するとストアキュー1及びストアキュー2の内容は共に空になる。図8a、図7aの対向するブロック222に示されるように、新データがストレージプロセッサ109のローカルメモリ172から読み込まれ(ブロック222)ストアキュー1及びストアキュー2の両方に記憶される。
【0025】
ストアキュー1が予めリセットされたので、新データは、ローカルメモリ172から読み込まれた新データ及びストアキューのリセット内容と排他的論理和ファンクション(図6)を実行することによって、ストアキュー1内に記録され得る。ストアキュー1内の新データの記憶とともに、同じ新データが、ストアキュー2のリセット内容と排他的論理和ファンクション(図6)を実行することによってストアキュー2に記憶されて得る。同じ新データが、ローカルメモリ172からの1つの読み込みオペレーションを利用してストアキュー1、2の両方の中に記憶され得ることが理解される。ローカルメモリ172からの新データ読み込みオペレーションのサイズは、典型的にはストアキュー1、2の容量に依存するだろう。したがって、例えば、ストアキュー1、2のそれぞれの容量が1Kバイトである場合、ストアキュー1、2のそれぞれが、ブロックnのような、ディスクドライブ150a、150b・・・150nのストライプnの1つのブロックについての1Kバイトの新データで満たされるまで読み込みオペレーションが継続する。
【0026】
新データによって置き換えられる旧データも、ローカルメモリ172から読み込まれる(ブロック224)。図8a、図7aの対向するブロック226に示されるように、旧データがストアキュー1内に予め記憶された新データと排他的論理和がとられ(ブロック226)ストアキュー1内に1つの中間結果として記憶される。図8a、図7aの対向するブロック226に示されるように、ストアキュー1の内容との旧データの排他的論理和ファンクションとともに、旧データはストアキュー2内に予め記憶された新データと排他的論理和もとられ(ブロック226)、ストアキュー2内に1つの中間結果として記憶される。同じ旧データが、ローカルメモリ172からの1つの読み込みオペレーションを利用してストアキュー1、2の両方の内容と排他的論理和がとられ得ることが理解される。
【0027】
第3の読み込みオペレーションにおいて、古い水平パリティデータがローカルメモリ172から読み込まれ(図7bのブロック228)、ストアキュー1内に予め記憶された中間結果と排他的論理和がとられる。図8b、図7bの対向するブロック230に示されるように、ストアキュー1についてのこの最後の排他的論理和オペレーションの結果が、ストアキュー1内に記憶される新たな水平パリティデータになる。ストレージプロセッサ109によるストレージデバイス150a・・・50nのストライプnの水平パリティブロックへの続く転送のために、矢印231(図6)によって示されるように、新たな水平パリティデータがストアキュー1からローカルメモリ172に書き込まれる。
【0028】
第4の読み込みオペレーションにおいて、古い対角パリティデータがローカルメモリ172から読み込まれ(ブロック232)ストアキュー2内に予め記憶された中間結果と排他的論理和がとられる(ブロック234)。図8b、図7bの対向するブロック234に示されるように、ストアキュー2についてのこの最後の排他的論理和オペレーションの結果が、ストアキュー1内に記憶される新たな対角パリティデータになる。ストレージプロセッサ109によるストレージデバイス150a・・・50nのストライプnの対角パリティブロックへの続く転送のために、矢印235(図6)によって示されるように、新たな対角パリティデータがストアキュー2からローカルメモリ172に書き込まれる。
【0029】
ディスクドライブ150a、150b・・・150nのストライプnへの新たな水平パリティデータ及び新たな対角パリティデータの書き込みとともに、新データもまたストライプnの1つのブロックに書き込まれる。新データについて新たな水平及び対角パリティデータが生成され、新データ並びに新たな水平パリティ及び対角パリティデータが、ディスクドライブ150a、150b・・・150nのストライプnの、関連する複数のブロックに書き込まれるまで、図7a、7bの複数のオペレーションが反復される。
【0030】
示された実施形態において、新データ、旧データ、及び古いパリティの読み込みオペレーションは、ローカルメモリ172からロジックエンジン176へのデータの複数の転送を持つ。他の実施形態において、本出願の代理人にアサインされ、2003年12月29日に出願され、代理人番号P17732、タイトル"データ構成を管理するための方法、システム、及びプログラム"の対応する出願に記載されるように、データは、ストレージ108のようなストレージからロジックエンジン176のような1つのロジックエンジンに直接転送され得る。
追加の実施形態の詳細
【0031】
パリティデータ生成を管理するための説明された技術は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組み合わせを作り出す広く使われているプログラムミング及び/又はエンジニアリング技術を用いて、1つの方法、装置、又は製品として実装され得る。ここで使用される"製品"という用語は、ハードウェアロジック(集積回路チップ、プログラママブルゲートアレイ(PGA)、特定用途向け集積回路(ASIC)等)、或いは磁気ストレージ媒体(例えば、複数のハードディスクドライブ、複数のフレキシブルディスク、テープ等)、光学ストレージ(複数のCD−ROM、複数の光ディスク等)、揮発性及び不揮発性メモリデバイス(例えば、複数のEEPROM、複数のROM、複数のPROM、複数のRAM、複数のDRAM、複数のSRAM、ファームウェア、プログラマブルロジック等)のような1つのコンピュータ可読メディアに実装されたコード又は論理を意味する。コンピュータ可読メディア内のコードは、1つのプロセッサによってアクセスされて実行される。好ましい実施形態が実装されたコードはさらに、1つの伝送メディアを通じて又は1つのネットワークをわたって1つのファイルサーバからアクセス可能であってよい。そのようなケースにおいて、コードが実装された製品は、1つのネットワーク伝送線、ワイヤレス伝送媒体、空間を伝搬する信号、無線波、赤外線信号等のような伝送メディアを備えてよい。したがって、"製品"は、コードが組み込まれたメディアを備えてよい。さらに、"製品"は、コードが組み込まれ、処理され、実行される、ハードウェア及びソフトウェアコンポーネントの1つの組み合わせを備えてよい。勿論、当業者は、多くの変形が本構成になされてよく、製品は、当業者に知られた情報を担う任意の媒体備えるということを理解するだろう。
【0032】
いくつかの実施形態において、ストレージプロセッサ109は、データ更新及び他のデータオペレーションの間にパリティデータの生成を管理する1つのパリティデータマネージャ130を有してよい。ストレージプロセッサ109は、これら及び他の機能を実行するための、ソフトウェア、ファームウェア、又はハードウェア、或いはそれらの組合せを有してよい。例えば、一実施形態において、プロセッサ170及びロジックエンジン176は、ホストプロセッサから独立した1つのストレージプロセッサ109内のハードウェアに実装されてよい。他の実施形態において、パリティデータマネージャは、ド複数のライバ、1つのオペレーティングシステム又は1つのアプリケーション、或いはこれらの組み合わせを含むホストソフトウェアに実装されてよい。
【0033】
いくつかの実施形態において、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月)に記載されている。
【0034】
いくつかの実施形態において、デバイスドライバ及びストレージプロセッサの実施形態は、デスクトップ、ワークステーション、サーバ、メインフレーム、ラップトップ、ハンドヘルドコンピュータ等のような、デバイスドライバ及びネットワークアダプタを含むコンピュータシステムに結合された1つのモニタ上に表示する情報をレンダリングする1つのビデオコントローラを含む1つのコンピュータシステム内に実装されてよい。他にも、ストレージプロセッサ及びデバイスドライバの実施形態は、ビデオコントローラを含まない1つのコンピューティングデバイスに実装されてよい。
【0035】
いくつかの実施形態において、ロジックエンジンが、2つのストアキュー1、2、又はレジスタ200a、200bを持つとして示された。他にも、ロジックエンジンは、2つより多くのタイプのパリティデータが生成される場合には、追加の複数のストアキュー又は複数のレジスタを持つこともできる。
【0036】
いくつかの実施形態において、ネットワークアダプタは、ネットワークアダプタ上の1つのポートに接続された1つのケーブルをわたってデータを伝送すべく構成されてよい。他にも、ネットワークアダプタの実施形態は、ワイヤレスLAN、ブルートゥース等のような1つのワイヤレスネットワーク又は接続にわたってデータを伝送すべく構成されてよい。
【0037】
図7a−b、8a、8bの図示されたロジックは、ある順番で発生するいくつかのイベントを示す。他の実施形態において、いくつかのオペレーションは、異なる順番で、変更又は削除されて、実行されてよい。さらに、複数のオペレーションが前述のロジックに追加されてよく、依然として説明された実施形態に従う。さらに、ここに説明されたオペレーションはシーケンシャルに発生してよいし、いくつかのオペレーションはパラレルに処理されてよい。またさらに、オペレーションは1つのプロセッシングユニット又は分散された複数のプロセッシングユニットによって実行されてよい。
【0038】
図9は、図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"に記載されている。
【0039】
さらに、アーキテクチャは、いくつかの実施形態において、ディスプレイモニタ上に情報をレンダリングする1つのビデオコントローラ509を備えてよい。ビデオコントローラ509は1つのビデオカード上に実装されてよく、或いはマザーボード上に実装された集積回路部品に集積されてよい。議論されたように、ネットワークデバイスのいくつかは、複数のストレージカード又は複数のコントローラを有してよい。1つの入力デバイス510は、ユーザ入力をプロセッサ502に供給するために使用され、1つのキーボード、マウス、ペンスタイラス、マイクロホン、タッチディスプレイスクリーン、或いは当業者に知られた任意のアクチベーション又は入力メカニズムを有してよい。出力デバイス512は、ディスプレイモニタ、プリンタ、ストレージ等のような、プロセッサ502から伝送される情報をレンダリングすることができ、又は他のコンポーネントである。
【0040】
ストレージコントローラ506及びネットワークアダプタ508は、1つのペリフェラルコンポーネントインターコネクト(PCI)カード又はいくつかの他のI/Oカードのようなカード上、或いはマザーボード上に実装された集積回路部品上に、それぞれ実装されてよい。PCIアーキテクチャについての詳細は、PCI−SIGによって発表された" PCI Local Bus, Rev. 2.3"に記載されている。
【0041】
前述の様々な実施形態が、実例及び説明を目的として提示された。上の細目、例、及びデータは、ある実施形態の構成の製作及び使用の1つの包括的な説明を提供する。完全であること又は開示された厳密な形に限定することは意図されていない。多くの変更及び変形が上の教示を考慮に入れると可能である。

【特許請求の範囲】
【請求項1】
旧データを変更する方法であって、
第1伝送オペレーションにおいて新データを、第2伝送オペレーションにおいて旧データを、第3伝送オペレーションにおいて旧第1パリティデータを、第4伝送オペレーションにおいて旧第2パリティデータを、1つのロジックエンジンに伝送する段階と、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データ、前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データ、前記第3伝送オペレーションにおいて前記ロジックエンジンに伝送された旧第1パリティデータを用いて、前記ロジックエンジンにおいて1つの新第1パリティデータを生成する段階と、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データ、前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データ、前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された旧第2パリティデータを用いて、前記ロジックエンジンにおいて1つの新第2パリティデータを生成する段階と
を備える方法。
【請求項2】
前記旧データ、旧第1パリティデータ、及び旧第2パリティデータは、複数のストレージデバイスにわたって記憶されるデータの1つのストライプ内に記憶される
請求項1に記載の方法。
【請求項3】
前記複数のストレージデバイスは、独立ディスク冗長アレイ(RAID)構成で配置される
請求項2に記載の方法。
【請求項4】
前記新第1パリティデータは水平パリティデータである
請求項3に記載の方法。
【請求項5】
前記新第2パリティデータは対角パリティデータである
請求項4に記載の方法。
【請求項6】
前記ロジックエンジンにおいて1つの新第1パリティデータを生成する前記段階は、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データを、前記ロジックエンジンの1つの第1ストアキューに適用し、前記第1ストアキューの内容及び前記適用された新データに対して1つの排他的論理和の論理ファンクションオペレーションを実行する段階
を有し、
前記ロジックエンジンにおいて新第2パリティデータを生成する前記段階は、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データを、前記ロジックエンジンの1つの第2ストアキューに適用し、前記第2ストアキューの内容及び前記適用された新データに対して1つの排他的論理和の論理ファンクションオペレーションを実行する段階
を有する
請求項1に記載の方法。
【請求項7】
前記ロジックエンジンにおいて1つの新第1パリティデータを生成する前記段階は、
前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データを、前記ロジックエンジンの前記第1ストアキューに適用し、前記第1ストアキューの内容及び前記適用された旧データに対して1つの排他的論理和の論理ファンクションオペレーションを実行する段階
を有し、
前記ロジックエンジンにおいて新第2パリティデータを生成する前記段階は、
前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データを、前記ロジックエンジンの前記第2ストアキューに適用し、前記第2ストアキューの内容及び前記旧データに対して1つの排他的論理和の論理ファンクションオペレーションを実行する段階
を有する
請求項6に記載の方法。
【請求項8】
前記ロジックエンジンにおいて1つの新第1パリティデータを生成する前記段階は、
前記第3伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧第1パリティデータを、前記ロジックエンジンの前記第1ストアキューに適用し、前記第1ストアキューの内容及び前記適用された旧第1パリティデータに対して1つの排他的論理和の論理ファンクションオペレーションを実行する段階
を有し、
前記ロジックエンジンにおいて新第2パリティデータを生成する前記段階は、
前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧第2パリティデータを、前記ロジックエンジンの前記第2ストアキューに適用し、前記第2ストアキューの内容及び前記旧第2パリティデータに対して1つの排他的論理和の論理ファンクションオペレーションを実行する段階
を有する
請求項7に記載の方法。
【請求項9】
旧データが1つの揮発性メモリから前記ロジックエンジンに伝送される
請求項1に記載の方法。
【請求項10】
前記ストライプ内の前記旧データを前記新データで上書きし、前記旧第1パリティデータを前記新第1パリティデータで上書きし、前記旧第2パリティデータを前記新第2パリティデータで上書きする段階
をさらに備える請求項2に記載の方法。
【請求項11】
1つのストレージメディアを備える製品であって、前記ストレージメディアは、
第1伝送オペレーションにおいて新データを、第2伝送オペレーションにおいて旧データを、第3伝送オペレーションにおいて旧第1パリティデータを、第4伝送オペレーションにおいて旧第2パリティデータを、1つのロジックエンジンに伝送し、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データ、前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データ、前記第3伝送オペレーションにおいて前記ロジックエンジンに伝送された旧第1パリティデータを用いて、前記ロジックエンジンにおいて1つの新第1パリティデータを生成し、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データ、前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データ、前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された旧第2パリティデータを用いて、前記ロジックエンジンにおいて1つの新第2パリティデータを生成する
ための記憶された複数の機械可読命令を有する製品。
【請求項12】
前記旧データ、旧第1パリティデータ、及び旧第2パリティデータは、複数のストレージデバイスにわたって記憶されるデータの1つのストライプ内に記憶される
請求項11に記載の製品。
【請求項13】
前記複数のストレージデバイスは、独立ディスク冗長アレイ構成(RAID)で配置される
請求項12に記載の製品。
【請求項14】
前記新第1パリティデータは水平パリティデータである
請求項13に記載の製品。
【請求項15】
前記新第2パリティデータは対角パリティデータである
請求項14に記載の製品。
【請求項16】
前記ロジックエンジンにおいて1つの新第1パリティデータを生成するための前記複数の機械可読命令は、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データを、前記ロジックエンジンの1つの第1ストアキューに適用し、前記第1ストアキューの内容及び前記適用された新データに対して1つの排他的論理和の論理ファンクションオペレーションを実行するための、前記ストレージメディアに記憶された複数の機械可読命令
を有し、
前記ロジックエンジンにおいて新第2パリティデータを生成するための前記複数の機械可読命令は、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データを、前記ロジックエンジンの1つの第2ストアキューに適用し、前記第2ストアキューの内容及び前記適用された新データに対して1つの排他的論理和の論理ファンクションオペレーションを実行するための、前記ストレージメディアに記憶された複数の機械可読命令
を有する
請求項11に記載の製品。
【請求項17】
前記ロジックエンジンにおいて1つの新第1パリティデータを生成するための前記複数の機械可読命令は、
前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データを、前記ロジックエンジンの前記第1ストアキューに適用し、前記第1ストアキューの内容及び前記適用された旧データに対して1つの排他的論理和の論理ファンクションオペレーションを実行するための、前記ストレージメディアに記憶された複数の機械可読命令
を有し、
前記ロジックエンジンにおいて新第2パリティデータを生成するための前記複数の機械可読命令は、
前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データを、前記ロジックエンジンの前記第2ストアキューに適用し、前記第2ストアキューの内容及び前記旧データに対して1つの排他的論理和の論理ファンクションオペレーションを実行するための、前記ストレージメディアに記憶された複数の機械可読命令
を有する請求項16に記載の製品。
【請求項18】
前記ロジックエンジンにおいて1つの新第1パリティデータを生成するための前記複数の機械可読命令は、
前記第3伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧第1パリティデータを、前記ロジックエンジンの前記第1ストアキューに適用し、前記第1ストアキューの内容及び前記適用された旧第1パリティデータに対して1つの排他的論理和の論理ファンクションオペレーションを実行するための、前記ストレージメディアに記憶された複数の機械可読命令
を有し、
前記ロジックエンジンにおいて新第2パリティデータを生成するための前記複数の機械可読命令は、
前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧第2パリティデータを、前記ロジックエンジンの前記第2ストアキューに適用し、前記第2ストアキューの内容及び前記旧第2パリティデータに対して1つの排他的論理和の論理ファンクションオペレーションを実行するための、前記ストレージメディアに記憶された複数の機械可読命令
を有する
請求項17に記載の製品。
【請求項19】
旧データが1つの揮発性メモリから前記ロジックエンジンに伝送される
請求項11に記載の製品。
【請求項20】
前記ストレージメディアは、
前記ストライプ内の前記旧データを前記新データで上書きし、前記旧第1パリティデータを前記新第1パリティデータで上書きし、前記旧第2パリティデータを前記新第2パリティデータで上書きするための、記憶された複数の機械可読命令
をさらに有する請求項12に記載の製品。
【請求項21】
1つのオペレーティングシステム及び1つのアプリケーションを有する少なくとも1つのメモリと、
前記メモリに結合された1つのプロセッサと、
複数のストレージデバイスを有するデータストレージと、
前記データストレージに対する入出力(I/O)アクセスを管理すべく構成され、1つのロジックエンジンを有する1つのデータストレージプロセッサと、
プロセッサによって実行可能な、前記メモリ内の1つのデバイスドライバと
を備え、
前記オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサのうちの少なくとも1つは、
第1伝送オペレーションにおいて新データを、第2伝送オペレーションにおいて旧データを、第3伝送オペレーションにおいて旧第1パリティデータを、第4伝送オペレーションにおいて旧第2パリティデータを、前記ロジックエンジンに伝送し、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データ、前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データ、前記第3伝送オペレーションにおいて前記ロジックエンジンに伝送された旧第1パリティデータを用いて、前記ロジックエンジンにおいて1つの新第1パリティデータを生成し、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データ、前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データ、前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された旧第2パリティデータを用いて、前記ロジックエンジンにおいて1つの新第2パリティデータを生成すべく構成された
システム。
【請求項22】
前記旧データ、旧第1パリティデータ、及び旧第2パリティデータは、複数のストレージデバイスにわたって記憶されるデータの1つのストライプ内に記憶される
請求項21に記載のシステム。
【請求項23】
前記複数のストレージデバイスは、独立ディスク冗長アレイ(RAID)構成で配置される
請求項22に記載のシステム。
【請求項24】
前記新第1パリティデータは水平パリティデータである
請求項23に記載のシステム。
【請求項25】
前記新第2パリティデータは対角パリティデータである
請求項24に記載のシステム。
【請求項26】
前記ロジックエンジンにおいて1つの新第1パリティデータを前記生成することは、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データを、前記ロジックエンジンの1つの第1ストアキューに適用し、前記第1ストアキューの内容及び前記適用された新データに対して1つの排他的論理和の論理ファンクションオペレーションを実行し、
前記ロジックエンジンにおいて新第2パリティデータを前記生成することは、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データを、前記ロジックエンジンの1つの第2ストアキューに適用し、前記第2ストアキューの内容及び前記適用された新データに対して1つの排他的論理和の論理ファンクションオペレーションを実行する
請求項21に記載のシステム。
【請求項27】
前記ロジックエンジンにおいて1つの新第1パリティデータを前記生成することは、
前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データを、前記ロジックエンジンの前記第1ストアキューに適用し、前記第1ストアキューの内容及び前記適用された旧データに対して1つの排他的論理和の論理ファンクションオペレーションを実行し、
前記ロジックエンジンにおいて新第2パリティデータを前記生成することは、
前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データを、前記ロジックエンジンの前記第2ストアキューに適用し、前記第2ストアキューの内容及び前記旧データに対して1つの排他的論理和の論理ファンクションオペレーションを実行する
請求項26に記載のシステム。
【請求項28】
前記ロジックエンジンにおいて1つの新第1パリティデータを前記生成することは、
前記第3伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧第1パリティデータを、前記ロジックエンジンの前記第1ストアキューに適用し、前記第1ストアキューの内容及び前記適用された旧第1パリティデータに対して1つの排他的論理和の論理ファンクションオペレーションを実行し、
前記ロジックエンジンにおいて新第2パリティデータを前記生成することは、
前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧第2パリティデータを、前記ロジックエンジンの前記第2ストアキューに適用し、前記第2ストアキューの内容及び前記旧第2パリティデータに対して1つの排他的論理和の論理ファンクションオペレーションを実行する
請求項27に記載のシステム。
【請求項29】
前記プロセッサに結合された1つのビデオコントローラ
をさらに備える請求項21に記載のシステム。
【請求項30】
前記オペレーティングシステム、デバイスドライバ、及び前記ストレージプロセッサはのうちの前記少なくとも1つは、さらに、
前記ストライプ内の前記旧データを前記新データで上書きし、前記旧第1パリティデータを前記新第1パリティデータで上書きし、前記旧第2パリティデータを前記新第2パリティデータで上書きすべく構成される
請求項22に記載のシステム。
【請求項31】
複数のデータストレージユニットを有する1つのデータストレージ用の1つのストレージプロセッサであって、
1つのメモリと、
1つのロジックエンジンと
1つのプロセッシングユニットであって、
第1伝送オペレーションにおいて新データを、第2伝送オペレーションにおいて旧データを、第3伝送オペレーションにおいて旧第1パリティデータを、第4伝送オペレーションにおいて旧第2パリティデータを、前記ロジックエンジンに伝送し、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データ、前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データ、前記第3伝送オペレーションにおいて前記ロジックエンジンに伝送された旧第1パリティデータを用いて、前記ロジックエンジンにおいて1つの新第1パリティデータを生成し、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データ、前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データ、前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された旧第2パリティデータを用いて、前記ロジックエンジンにおいて1つの新第2パリティデータを生成すべく構成される、1つのプロセッシングユニットと
を備えるストレージプロセッサ。
【請求項32】
前記旧データ、旧第1パリティデータ、及び旧第2パリティデータは、複数のストレージデバイスにわたって記憶されるデータの1つのストライプ内に記憶される
請求項31に記載のストレージプロセッサ。
【請求項33】
前記複数のストレージデバイスは、独立ディスク冗長アレイ(RAID)構成で配置される
請求項32に記載のストレージプロセッサ。
【請求項34】
前記新第1パリティデータは水平パリティデータである
請求項33に記載のストレージプロセッサ。
【請求項35】
前記新第2パリティデータは対角パリティデータである
請求項34に記載のストレージプロセッサ。
【請求項36】
前記ロジックエンジンにおいて1つの新第1パリティデータを前記生成することは、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データを、前記ロジックエンジンの1つの第1ストアキューに適用し、前記第1ストアキューの内容及び前記適用された新データに対して1つの排他的論理和の論理ファンクションオペレーションを実行し、
前記ロジックエンジンにおいて新第2パリティデータを前記生成することは、
前記第1伝送オペレーションにおいて前記ロジックエンジンに伝送された前記新データを、前記ロジックエンジンの1つの第2ストアキューに適用し、前記第2ストアキューの内容及び前記適用された新データに対して1つの排他的論理和の論理ファンクションオペレーションを実行する
請求項31に記載のストレージプロセッサ。
【請求項37】
前記ロジックエンジンにおいて1つの新第1パリティデータを前記生成することは、
前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データを、前記ロジックエンジンの前記第1ストアキューに適用し、前記第1ストアキューの内容及び前記適用された旧データに対して1つの排他的論理和の論理ファンクションオペレーションを実行し、
前記ロジックエンジンにおいて新第2パリティデータを前記生成することは、
前記第2伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧データを、前記ロジックエンジンの前記第2ストアキューに適用し、前記第2ストアキューの内容及び前記旧データに対して1つの排他的論理和の論理ファンクションオペレーションを実行する
請求項36に記載のストレージプロセッサ。
【請求項38】
前記ロジックエンジンにおいて1つの新第1パリティデータを前記生成することは、
前記第3伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧第1パリティデータを、前記ロジックエンジンの前記第1ストアキューに適用し、前記第1ストアキューの内容及び前記適用された旧第1パリティデータに対して1つの排他的論理和の論理ファンクションオペレーションを実行し、
前記ロジックエンジンにおいて新第2パリティデータを前記生成することは、
前記第4伝送オペレーションにおいて前記ロジックエンジンに伝送された前記旧第2パリティデータを、前記ロジックエンジンの前記第2ストアキューに適用し、前記第2ストアキューの内容及び前記旧第2パリティデータに対して1つの排他的論理和の論理ファンクションオペレーションを実行する
請求項37に記載のストレージプロセッサ。
【請求項39】
前記プロセッシングユニットは、さらに、
前記ストライプ内の前記旧データを前記新データで上書きし、前記旧第1パリティデータを前記新第1パリティデータで上書きし、前記旧第2パリティデータを前記新第2パリティデータで上書きすべく構成される
請求項32に記載のストレージプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図9】
image rotate


【公表番号】特表2007−524932(P2007−524932A)
【公表日】平成19年8月30日(2007.8.30)
【国際特許分類】
【出願番号】特願2006−542900(P2006−542900)
【出願日】平成16年12月20日(2004.12.20)
【国際出願番号】PCT/US2004/043040
【国際公開番号】WO2005/066760
【国際公開日】平成17年7月21日(2005.7.21)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】