(57)【特許請求の範囲】
【請求項１】
第１論理ボリューム(B)の複数のボリューム・ピースをドライブ・グループのドライブの第１セットに関連付けることと、
第２論理ボリューム(A)の複数のボリューム・ピースを前記ドライブ・グループのドライブの第２セットに関連付けることと、前記ドライブの第１セットは、前記ドライブの第２セットとは異なり、すべてのボリューム・ピースは、各ドライブが前記ドライブ・グループにおけるいずれの他のドライブとも異なる組み合わせのボリューム・ピースを含むように分配され、前記ドライブ・グループにおけるドライブの前記第１セット及び前記ドライブ・グループにおけるドライブの前記第２セットが、少なくとも１つの共通ドライブ(2)を有することと、及び、
前記少なくとも１つの共通ドライブの何れかが故障したときに、前記故障した共通ドライブ上にあった前記第１論理ボリューム(B)のボリューム・ピース(B-2)を前記ドライブ・グループ内の前記第２論理ボリューム(A)のボリューム・ピースのみを含むドライブ(0, 1)のいずれか(1)に再構築することとを含む方法。
【請求項２】
第１論理ボリュームの１つまたは複数のボリューム・ピースをドライブ・グループのドライブの第１セットに関連付けることは、
ドライブの前記第１セット上のストレージ・スペースを前記第１論理ボリュームに割り振ること
をさらに含む、請求項１に記載の方法。
【請求項３】
ドライブの前記第１セット上のストレージ・スペースを前記第１論理ボリュームに割り振ることは、
ボリューム・ピース・サイズを前記第１論理ボリュームの前記１つまたは複数のボリューム・ピースに割り当てることと、
物理ドライブ・オフセットを前記第１論理ボリュームの前記１つまたは複数のボリューム・ピースに割り当てることと
をさらに含む、請求項２に記載の方法。
【請求項４】
前記第１論理ボリュームの前記１つまたは複数のボリューム・ピースの第１ボリューム・ピースの物理ドライブ・オフセットは、前記第１論理ボリュームの前記１つまたは複数のボリューム・ピースの第２ボリューム・ピースの物理ドライブ・オフセットとは異なる、請求項３に記載の方法。
【請求項５】
第１論理ボリューム(B)の複数のボリューム・ピースをドライブ・グループのドライブの第１セットに関連付けることと、
第２論理ボリューム(A)の複数のボリューム・ピースを前記ドライブ・グループのドライブの第２セットに関連付けることと、前記ドライブの第１セットは、前記ドライブの第２セットとは異なり、すべてのボリューム・ピースは、各ドライブが前記ドライブ・グループにおけるいずれの他のドライブとも異なる組み合わせのボリューム・ピースを含むように分配され、前記ドライブ・グループにおけるドライブの前記第１セット及び前記ドライブ・グループにおけるドライブの前記第２セットが、少なくとも１つの共通ドライブ(2)を有することと、及び、
前記少なくとも１つの共通ドライブの何れかが故障したときに、前記故障した共通ドライブ上にあった前記第１論理ボリューム(B)のボリューム・ピース(B-2)をドライブの前記第１セット(2,3,4)またはドライブの前記第２セット(0,1,2)に含まれない前記ドライブ・グループ内のドライブ(5,6)のいずか(6)に再構築することとを含む方法。
【請求項６】
第１論理ボリューム(B)の複数のボリューム・ピースをドライブ・グループのドライブの第１セットに関連付ける手段と、
第２論理ボリューム(A)の複数のボリューム・ピースを前記ドライブ・グループのドライブの第２セットに関連付ける手段とを含み、前記ドライブの第１セットは、前記ドライブの第２セットとは異なり、
すべてのボリューム・ピースは、各ドライブが前記ドライブ・グループにおけるいずれの他のドライブとも異なる組み合わせのボリューム・ピースを含むように分配され、前記ドライブ・グループにおけるドライブの前記第１セット及び前記ドライブ・グループにおけるドライブの前記第２セットが、少なくとも１つの共通ドライブ(2)を有し、及び、
前記少なくとも１つの共通ドライブの何れかが故障したときに、前記故障した共通ドライブ上にあった前記第１論理ボリューム(B)のボリューム・ピース(B-2)を前記ドライブ・グループ内の前記第２論理ボリューム(A)のボリューム・ピースのみを含むドライブ(0,1)のいずれか(1)に再構築するための手段、又は
前記少なくとも１つの共通ドライブの何れかが故障したときに、前記故障した共通ドライブ上にあった前記第１論理ボリューム(B)のボリューム・ピース(B-2)をドライブの前記第１セット(2,3,4)またはドライブの前記第２セット(0,1,2)に含まれない前記ドライブ・グループ内のドライブ(5,6)のいずれか(6)に再構築するための手段をさらに含むシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡＩＤおよびＲＡＩＤにまたがってボリューム・ピースを割り振る方法に関する。
【背景技術】
【０００２】
ドライブ・グループは、ボリューム・データを格納するのに使用される関連するドライブの集まりとすることができる。ドライブ・グループに、ＲＡＩＤレベルを割り当てることができ、ＲＡＩＤレベルは、データ編成および冗長性モデルを定義する。ＲＡＩＤボリュームは、データＩ／Ｏのターゲットにされる、ホストがアクセス可能な論理ユニットとすることができる。１つのドライブ・グループが、複数のボリュームを含むことができる。ドライブ・グループ内のすべてのボリュームは、物理ドライブの同一のセットを使用し、同一のＲＡＩＤレベルで機能する。
【０００３】
ドライブ・グループのドライブが、異なる容量を含む場合がある。ボリューム・グループの使用可能容量は、ストレージ・アレイ構成データに予約された領域を除く、グループ内の最小のドライブに基づくＲＡＩＤファクタ容量（ＲＡＩＤ  ｆａｃｔｏｒ  ｃａｐａｃｉｔｙ）とすることができる。ドライブ・グループの空き容量は、使用可能容量からすべての定義されたボリュームの容量を引いたものとすることができる。空きドライブ・グループ容量は、追加ボリュームの作成または既存ボリュームの容量の拡大に使用することができる。
【０００４】
ＲＡＩＤボリュームは、ドライブ・グループ内の各ドライブ上で１つの領域を占めることができる。ＲＡＩＤボリュームの領域は、すべてが、ドライブの先頭からの論理ブロック・アドレス（ＬＢＡ）単位の同一のオフセットおよびＬＢＡ単位の同一の長さを有することができる。所与のボリュームの一部とすることができる各そのような領域を、ピース（ｐｉｅｃｅ）と呼ぶ場合がある。あるボリュームのピースの集まりを、ボリューム・エクステントと呼ぶ場合がある。ドライブ・グループは、それぞれが同一のオフセットおよび長さを有するドライブ上の未使用容量の領域からなる１つまたは複数の空きエクステントを有することもできる。
【０００５】
ドライブ・グループ内の物理ドライブの個数を、ドライブ・グループ幅と呼ぶ場合がある。幅は、ドライブ・グループ内のＲＡＩＤボリュームの性能とアクセシビリティとの両方に影響する。ドライブ・グループの幅が広ければ広いほど、より多くの物理スピンドルを並列に使用できるようになり、これは、ある種のホストＩ／Ｏプロファイルに関する性能を高める。しかし、ドライブ・グループの幅が広ければ広いほど、その物理ドライブのうちの１つが故障する危険性が高くなる可能性がある。
【０００６】
セグメント・サイズは、ドライブ・グループの次のドライブにデータを書き込む前にコントローラが単一のドライブに書き込むデータの量とすることができる。ストライプは、ドライブ・グループの各ドライブ上に１つの、すべてがそのドライブの先頭からの同一オフセットを有する、セグメントの集まりとすることができる。その結果、１つのボリュームを、ストライプの集まりとみなすこともできる。
【０００７】
図１および２に、ｎ＋１個のドライブからなるドライブ・グループを示す。ボリュームＢは、ｎ＋１個のピース、Ｂ−０、Ｂ−１…Ｂ−ｎからなるものとすることができる。各ピースは、複数のセグメントを含む。たとえば、ピースＢ−０は、Ｓｅｇ−Ｂ００、Ｓｅｇ−Ｂ０１…Ｓｅｇ−Ｂ０ｋを含むことができる。ストライプは、ドライブにまたがり、たとえば、セグメントＳｅｇ−Ｂ０２、Ｓｅｇ−Ｂ１２…ＳｅｇＢｎ２が、ストライプＢ２を形成する。ボリュームＢは、ｋ＋１個のストライプからなるものとすることができる。
【０００８】
そのようなＲＡＩＤレイアウトは、ドライブ・グループ内のどのドライブ上のどの物理ドライブＬＢＡが特定のＲＡＩＤボリューム仮想ＬＢＡに対応するのかを判定することが単純な計算になり得るという意味で、アルゴリズム的とすることができる。ＲＡＩＤボリュームは、ドライブ・グループの幅がＲＡＩＤボリュームの幅を定義するので、ドライブ・グループに密に結合されると言うこともできる。
【０００９】
ドライブ・グループ内の物理ドライブが、完全に故障し、したがって、そのドライブ上のデータがもはやアクセス可能ではなくなる場合がある。ドライブ・グループが、冗長性を有するＲＡＩＤレベルを含む（すなわち非ＲＡＩＤ  ０ドライブ・グループ）場合には、ホストがまだそのデータにアクセスできるのに十分なデータが、残りのドライブに残されている可能性がある。しかし、ＲＡＩＤ  ６および一部の固有のＲＡＩＤ  １／１０の事例を除いて、ドライブ・グループは、故障したドライブが交換され、データが再構築されるまでは、もはや冗長性を含まない可能性がある。
【００１０】
ＲＡＩＤ  １／１０について、再構築は、すべてのデータをミラー・ドライブから交換ドライブにコピーすることからなるものとすることができる。ＲＡＩＤ  ５について、この再構築は、ドライブ・グループ内の生き残っているドライブから各ストライプを読み取ること（すなわち、ドライブ・グループ幅−１個のセグメント）、パリティを使用して欠けているセグメントを計算すること、および回復されたセグメントを交換ドライブに書き込むことからなるものとすることができる。
【００１１】
二重冗長性情報に起因して、欠けているセグメントをドライブ・グループ幅−２個のセグメントから計算できることを除いて、ＲＡＩＤ  ６  Ｐ＋Ｑドライブ・グループでの単一ドライブ故障について、同一の手法に従うことができる。
【００１２】
故障したドライブが交換され、再構築が完了するまでは、第２のドライブ故障は、ドライブ・グループが複数のドライブ故障を許容するように構成（たとえば、ＲＡＩＤ  ６）されない限り、ドライブ・グループ内のデータの完全な消失をもたらす。
【００１３】
ストレージ・アレイは、ストレージ・アレイ内の未使用物理ドライブのプールをホット・スペアとして取り分けることができる。物理ドライブが、冗長ＲＡＩＤレベル（すなわち、非ＲＡＩＤ  ０）を有するドライブ・グループ内で故障する時には、ストレージ・アレイは、ホット・スペア・ドライブのプールから交換ドライブを自動的に割り振り、ホット・スペア・ドライブ上で失われたデータの再構築を実行することができる。
【００１４】
故障したドライブが交換された後に、ホット・スペア・ドライブの内容を、単純に交換ドライブにコピーすることができ、これは、コピーバックと呼ばれるプロセスである。コピーバックが完了した時に、ホット・スペアをホット・スペア・プールに戻すことができる。
【００１５】
再構築を受けつつあるドライブに向けられたすべての書込は、そのプロセスの性能ボトルネックを生じる。その結果、影響を受けるドライブ・グループ内のすべてのＲＡＩＤボリュームに関するドライブ再構築中に、顕著な性能劣化がある可能性がある。
【００１６】
さらに、物理ドライブ・サイズが増加し続けるので、単一のドライブの再構築時間は、劇的に増える。ＳＡＴＡドライブは、現在、１ＴＢを超える容量を有する場合があり、そのデータのすべてが、再構築され、単一のホット・スペア／交換ドライブに書き込まれなければならない。これは、ホストが、影響を受けるドライブ・グループ内のＲＡＩＤボリュームについて経験する性能劣化を長くし、ドライブ・グループが冗長性を有しない可能性がある時間（たとえば、ＲＡＩＤ  ５ドライブ・グループについて）をも長くする。
【発明の概要】
【課題を解決するための手段】
【００１７】
本開示は、ＲＡＩＤ（ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｅｘｐｅｎｓｉｖｅ  ｄｉｓｃｓ）にまたがってボリューム・ピースを割り振るシステムおよび方法を説明する。
【００１８】
ＲＡＩＤ（ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｅｘｐｅｎｓｉｖｅ  ｄｉｓｃｓ）にまたがってボリューム・ピースを割り振る方法は、（ａ）第１論理ボリュームの１つまたは複数のボリューム・ピースをドライブ・グループ内のドライブの第１セットに関連付けることと、（ｂ）第２論理ボリュームの１つまたは複数のボリューム・ピースをドライブ・グループ内のドライブの第２セットに関連付けることとを含むことができ、ドライブ・グループ内のドライブの第１セットは、ドライブ・グループ内のドライブの第２セットのメンバではない少なくとも１つのドライブを含む。
【００１９】
ＲＡＩＤ（ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｅｘｐｅｎｓｉｖｅ  ｄｉｓｃｓ）にまたがってボリューム・ピースを割り振るシステムは、（ａ）第１論理ボリュームの１つまたは複数のボリューム・ピースをドライブ・グループ内のドライブの第１セットに関連付ける手段と、（ｂ）第２論理ボリュームの１つまたは複数のボリューム・ピースをドライブ・グループ内のドライブの第２セットに関連付ける手段とを含むことができ、ドライブ・グループ内のドライブの第１セットは、ドライブ・グループ内のドライブの第２セットのメンバではない少なくとも１つのドライブを含む。
【００２０】
前述の全般的な説明と後続の詳細な説明との両方が、例示的かつ説明的であるのみであって、必ずしも特許請求の範囲について制限的ではない可能性があることを理解されたい。本明細書に組み込まれ、その一部を構成することができる添付図面は、例を示し、この全般的な説明と一緒に、本開示の原理を説明するように働く。
【００２１】
本開示の多数の利益は、添付図面を参照することによって当業者によってよりよく理解され得る。
【図面の簡単な説明】
【００２２】
【図１】ＲＡＩＤを示す高水準システム図である。
【図２】ＲＡＩＤを示す高水準システム図である。
【図３】ＲＡＩＤへのボリューム・ピースの割振りを示す高水準システム図である。
【図４】ＲＡＩＤを示す高水準システム図である。
【図５】ＲＡＩＤを示す高水準システム図である。
【図６】ＲＡＩＤを示す高水準システム図である。
【図７】高水準動作流れ図である。
【図８】高水準動作流れ図である。
【図９】高水準動作流れ図である。
【図１０】高水準動作流れ図である。
【図１１】高水準動作流れ図である。
【図１２】高水準動作流れ図である。
【図１３】高水準動作流れ図である。
【図１４】高水準動作流れ図である。
【図１５】高水準動作流れ図である。
【発明を実施するための形態】
【００２３】
次の詳細な説明では、その一部を形成する添付図面を参照する場合がある。図面では、文脈がそうではないと規定しない限り、同様の記号が、通常は同様のコンポーネントを識別する。詳細な説明、図面、および特許請求の範囲で説明される例示的実施形態は、限定的であることを意図されていない場合がある。本明細書で提示される主題の趣旨または範囲から逸脱せずに、他の実施形態を利用することができ、他の変更を行うことができる。
【００２４】
図３を参照すると、コンピューティング・デバイス３０１、ＲＡＩＤコントローラ３０２、およびＲＡＩＤ  ３０３を含むマス・ストレージ・システム３００の例示的表現が示されている。ＲＡＩＤコントローラ３０２は、ボリューム管理回路網／ソフトウェアを含むことができ、これによって、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３上で構成されたさまざまな論理ボリュームにアクセスするコンピューティング・デバイス３０１の読取要求／書込要求を処理することができる。ＲＡＩＤ  ３０３は、ｎ個のドライブを有するドライブ・グループを含むことができる。
【００２５】
ＲＡＩＤ  ３０３のＲＡＩＤボリューム・ピースを、前に説明した１：１結合ではなく、ドライブ・グループに疎結合することができる。これを、下の例で例示することができる。
【００２６】
図４を参照すると、３つのＲＡＩＤボリューム（たとえば、ボリュームＡ、Ｂ、およびＣ）を、６つのドライブのドライブ・グループ上に配置することができる。各ＲＡＩＤボリュームは、３つのボリューム・ピース（たとえば、それぞれボリューム・ピースＡ−０、Ａ−１、およびＡ−２、ボリューム・ピースＢ−０、Ｂ−１、およびＢ−２、ならびにボリューム・ピースＣ−０、Ｃ−１、およびＣ−２）を含むことができる。
【００２７】
各ＲＡＩＤボリュームは、関連するＲＡＩＤボリューム幅を有することができる。ＲＡＩＤボリューム幅は、ドライブ・グループ内のドライブの個数に関わりなく、ＲＡＩＤボリューム内のピースの個数として定義することができる。
幅（ＲＡＩＤボリューム）≦幅（ドライブ・グループ）
である場合がある。
【００２８】
たとえば、図３に示されているように、ＲＡＩＤ  ３０３は、６のドライブ・グループ幅（たとえば、ドライブ０から６まで）および３のボリューム幅を有することができる。
【００２９】
ＲＡＩＤ  ３０３は、アルゴリズム的レイアウトとすることができる。伝統的なドライブ・グループ関連付けのほかに、ＲＡＩＤボリュームを、そのＲＡＩＤボリュームがその上でピースを含むことのできる各物理ドライブに関連付けることができる。たとえば、図３に示されているように、ＲＡＩＤボリュームＡを、ドライブ０、ドライブ１、およびドライブ２に関連付けることができ、ボリュームＢを、ドライブ２、ドライブ３、およびドライブ４に関連付けることができる。
【００３０】
各ピースを、そのそれぞれの物理ドライブの先頭からのそれ自体のオフセットに関連付けることもできる。ＲＡＩＤボリューム内のさまざまな異なるピースは、ＲＡＩＤボリューム・サイズの増分で、それに関連する物理ドライブの先頭からの異なるオフセットを有することができる。たとえば、図３に示されているように、１Ｍｂなどの所与のボリューム・ピース・サイズを有するボリューム・ピースＢ−０、ボリューム・ピースＢ−１、およびボリューム・ピースＢ−２は、それぞれドライブ３、４、および２内で０、０、および１Ｍｂのオフセットを有することができる。
【００３１】
さらに、同一ドライブ・グループ内のさまざまなボリュームは、異なるピース・サイズを有することができる。たとえば、ボリュームＡは、サイズが１Ｍｂのボリューム・ピースを含むことができ、ボリュームＢは、サイズが２Ｍｂのボリューム・ピースを含むことができる。したがって、ボリューム・ピースＣ−１は、１Ｍｂのオフセットを有することができ、ボリューム・ピースＣ−２は、２Ｍｂのオフセットを有することができる。
【００３２】
このオフセット情報から、特定のＲＡＩＤボリューム仮想ＬＢＡに対応する特定の物理ドライブ上の物理ＬＢＡを計算することができる。
【００３３】
そのようなピース分配は、ユーザが、ドライブ・グループ幅以下の可変幅のＲＡＩＤボリュームをサポートできる所与のＲＡＩＤレベルを有するより幅広いドライブ・グループを定義することを可能にすることができる。ＲＡＩＤボリューム幅とドライブ・グループ幅との間の差が大きければ大きいほど、ドライブ・グループにわたるＲＡＩＤボリューム・ピースの分配をよりよいものにすることができる。
【００３４】
ＲＡＩＤボリュームが作成される時に、各物理ドライブがドライブ・グループ内の任意の他のドライブとは異なるピースの組合せを含むことができるように、ピースを分配することができる。より形式的には、あるドライブ上の各ピースを、そのＲＡＩＤボリューム内の残りのピースを含むドライブのセットとすることができるその再構築セット（ＲＳ）に関連付けることができる。ドライブ内のピースのすべての再構築セットが互いに素である場合には、対象のドライブ内の各ピースを、そのドライブ上の他のピースとは独立に再構築することができる（すなわち、ドライブ再構築を並列に行うことができる）。
【００３５】
ドライブ・グループ内の各ドライブ上のすべてのピースが、互いに素の再構築セットを有する場合には、そのドライブ・グループは再構築に関して完全に互いに素であると言うことができる。これは、どのドライブが故障するかに関わりなく、そのピースのすべてを、ドライブの互いに素のセットから再構築できることを意味する。
【００３６】
もう一度図４を参照すると、ピースの理想的な分配が提示されている。そのような分配では、物理ドライブは、ドライブ・グループ内のすべての他のドライブと同一のピースの組合せを含まないものとすることができる。そのような構成でドライブが故障する場合には、ピースを再構築するために読み取られるドライブの個数は、ＲＡＩＤボリューム幅よりはるかに多い。たとえば、ドライブ２が故障する場合に、ドライブ０およびドライブ１は、ピースＡ−２を再構築するためのピース（すなわち、ピースＡ−０およびＡ−１）を含むことができ、ドライブ３およびドライブ４は、ピースＢ−２を再構築するためのピース（すなわち、ピースＢ−０およびＢ−１）を含むことができる。したがって、ストレージ・アレイは、再構築を実行している間に２つではなく４つのドライブから読み取ることができる。
【００３７】
そのような構成は、ドライブ２上で維持されるピースＡ−２およびＢ−２のそれぞれの再構築セット（ＲＳ）によって定義することができる。
ＲＳ（Ａ−２）＝｛ドライブ０，ドライブ１｝
ＲＳ（Ｂ−２）＝｛ドライブ３，ドライブ４｝
【００３８】
さらなる実施形態では、前に提示した専用のホット・スペア手法の使用を変更することができる。たとえば、あるドライブ・グループ内のドライブが故障する時に、そのピースを、単一の専用ホット・スペアではなくそのドライブ・グループ内の残りのドライブにまたがって再分配することができる。これは、複数のボリュームからのピースが同一のホット・スペア上で再構築される必要がある専用のホット・スペアに関連するボトルネックを回避するように働くことができる。本発明を用いると、可能なときに、ピースを別々のドライブ上で再構築することができる。さらに、そのような再分配は、同一のＲＡＩＤボリュームからの２つのピースが同一の物理ドライブ上に行き着かないことを保証する。
【００３９】
ドライブ・グループは、そのドライブ・グループ内の任意のドライブが故障し、それでも、そのドライブ・グループ内のいずれかのドライブに故障したドライブのピースを保持するのに十分な空きエクステントがあるものとすることができるのに十分な空き容量がそのドライブ・グループにあるものとすることができるときに、１のホット・スペア・カバレージを有すると言うことができる。言い換えると、最大の使用済み容量を有するドライブが故障する場合に、システムは、それでもドライブ・グループ内の残りのドライブ上でそのピースを再構築することができる（すなわち、そのドライブ上のすべてのピースを保持するのに十分な空きエクステントが、ドライブ・グループ内のドライブにある）。さらに、ドライブ・グループ内の最大のピースを保持するのに十分に大きい空きエクステント（そのピースがある可能性があるドライブには関わりなく）が、維持されなければならない。
【００４０】
ドライブ・グループは、そのドライブ・グループ内のｎ個のドライブが故障し、それでも、故障したドライブ内のすべてのピースをそのドライブ・グループ内の空きエクステント内で再構築できるのに十分な容量がそのドライブ・グループにあるときに、ｎのホット・スペア・カバレージを有すると言うことができる。これが、必ずしも、データ消失なしでｎ個のドライブが同時に故障し得ることを意味しないことに留意されたい。たとえば、ＲＡＩＤ  ５ドライブ・グループが、２のホット・スペア・カバレージを含むが、２つの最も負荷の重いドライブが、同一ＲＡＩＤボリュームからのピースを含み、両方のドライブが故障する場合には、そのＲＡＩＤボリュームは、そのドライブ・グループがどれほどの空き容量を有するかに関わりなく、もはやアクセス可能ではなくなる可能性がある。
【００４１】
ユーザは、ドライブ・グループの所望のホット・スペア・カバレージ、すなわち１、２…ｎを定義することができる。あるボリュームを作成できるときに、ストレージ・アレイは、構成されたホット・スペア・カバレージを維持できるという制約を伴ってではあるが、分配ができる限り理想に近くなることができるように、ピースを分配することができる。ＲＡＩＤボリュームの作成が、ホット・スペア・カバレージを減らす場合には、ユーザに警告し、ＲＡＩＤボリューム作成を進めることに付随する結果を明示的に確認するように要求することができる。
【００４２】
さらに、再構築がＲＡＩＤボリュームに課す性能劣化は、再構築を実行することからの負荷を伝統的な手法よりも多数のドライブにまたがって分散させることができ、その結果、再構築を並列の形で実行できるようになるので、かなり減らされる。
【００４３】
ドライブ再構築は、そのすべてのピースの再構築がドライブ・グループ内の別々のドライブで発生し得る場合に、並列であると言うことができる。ドライブ再構築は、それを並列にすることができ、ピースがその上で再構築されるドライブのどれもがそのドライブのピースの再構築セットに含まれるドライブとオーバーラップしない場合に、完全に並列と言うことができる。これは、ドライブが故障する場合に、各ピースを、読取と書込との両方に関してドライブ上の他のすべてのピースと独立に再構築できることを意味する。
【００４４】
たとえば、図５を参照すると、完全に並列の分配の例が提示されている。ドライブ２の故障の場合には、ピースＡ−２を、すべての他の進行中のピース再構築に参加しないドライブ５上でピースＡ−０およびＡ−２（それぞれドライブ０およびドライブ１に常駐する）から再構築することができる。同様に、ピースＢ−２を、ドライブ６上でピースＢ−０およびＢ−１（それぞれドライブ３および４に常駐する）から再構築することができる。そのような構成では、所与のドライブは、読取動作または書込動作のいずれかだけの対象になる。
【００４５】
図６を参照すると、部分的に並列の分配の例が提示されている。ドライブ２の故障の場合には、ピースＡ−２を、すべての他の進行中のピース再構築に参加しないドライブ５上で、ピースＡ−０およびＡ−１（それぞれドライブ０およびドライブ１に常駐する）から再構築することができる。同様に、ピースＢ−２を、ドライブ１上でピースＢ−０およびＢ−１（それぞれドライブ３およびドライブ４に常駐する）から再構築することができる。しかし、ドライブ１は、ピースＡ−２を再構築するために読み取られつつもあり、したがって、この分配での再構築は、部分的に並列であるに過ぎない。
【００４６】
ＲＡＩＤボリューム幅とドライブ・グループ幅との間の差が大きければ大きいほど、完全に並列のドライブ再構築を可能にする構成がある可能性がより高くなる。余分のドライブをドライブ・グループに追加して、容量および幅を増やすことができ、したがって、再構築をできる限り速く発生させることができる。
【００４７】
あるドライブがドライブ・グループに追加される時には、必ず、ストレージ・アレイは、ユーザ定義のホット・スぺア・カバレージを維持しながら完全に並列の特性を示すピースの理想的分配により近くなるために、既存ドライブからピースを選択し、それらを新しいドライブに移動することができる。
【００４８】
そのレイアウトがオリジナルの密結合されたＲＡＩＤレイアウトに戻って劣化するようにＲＡＩＤボリュームを定義することが可能である場合があることに留意されたい。たとえば、ＲＡＩＤ  ５ドライブ・グループが、３つの未使用の１ＴＢドライブを含むことができ、ユーザが、幅３および容量＝３×１ＴＢ−３×構成データ用に予約される容量のＲＡＩＤボリュームを定義する場合である。この場合には、ストレージ・アレイは、１つのボリューム・ピースを各１ＴＢドライブに割り振ることができ、すべての再構築は、伝統的なレイアウトと正確に同様に発生する。その結果、発明的特徴を十分に利用するために、ユーザは、各ピースが他のボリュームからの他のピースとドライブを共有するのに十分に小さくなることができるようになる幅を有するボリュームを定義しなければならない。
【００４９】
図７に、ＲＡＩＤにまたがってボリューム・ピースを割り振ることに関連する例の動作を表す動作フロー７００を示す。図７および動作フローのさまざまな例を含む後続の図では、議論および説明が、図３〜６の上で説明した例に関しておよび／または他の例および文脈に関して提供される場合がある。しかし、動作フローを、複数の他の環境および文脈で、ならびに／または図３〜６の変更された版で実行できることを理解されたい。また、さまざまな動作フローが、図示のシーケンス（１つまたは複数）で提示されるが、さまざまな動作を、図示された順序とは異なる順序で実行することができ、あるいは、同時に実行できることを理解されたい。
【００５０】
開始動作の後に、動作７１０は、第１論理ボリュームの１つまたは複数のボリューム・ピースをドライブ・グループ内のドライブの第１セットに関連付けることを示す。たとえば、図３〜６に示されているように、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、１つまたは複数のボリューム・ピース（たとえば、ボリューム・ピースＡ−０、Ａ−１、およびＡ−２）をドライブの第１セット（たとえば、それぞれドライブ０、ドライブ１、およびドライブ２）に関連付けさせることができる。
【００５１】
動作７２０は、第２論理ボリュームの１つまたは複数のボリューム・ピースをドライブ・グループ内のドライブの第２セットに関連付けることを示す。たとえば、図３〜６に示されているように、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、１つまたは複数のボリューム・ピース（たとえば、ボリューム・ピースＢ−０、Ｂ−１、およびＢ−２）をドライブの第２セット（たとえば、それぞれドライブ３、ドライブ４、およびドライブ２）に関連付けさせることができる。
【００５２】
ドライブの第１セット（たとえば、ボリュームＢに関連するドライブ０、ドライブ１、およびドライブ２）は、ドライブ・グループ内のドライブの第２セット（たとえば、ボリュームＢに関連するドライブ３、ドライブ４、およびドライブ２）のメンバではない少なくとも１つのドライブ（たとえば、ドライブ０）を含むことができる。
【００５３】
図８に、図７の例の動作フロー７００の代替実施形態を示す。図８は、関連付ける動作７１０が少なくとも１つの追加の動作を含むことができる例の実施形態を示す。追加の動作は、動作８０２、動作８０４、および／または動作８０６を含むことができる。
【００５４】
動作８０２は、ドライブの第１セット上のストレージ・スペースを第１論理ボリュームに割り振ることを示す。たとえば、図３〜６に示されているように、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、ドライブの第１セット（たとえば、ドライブ０、ドライブ１、およびドライブ２）上のストレージ・スペースを、所与の論理ボリューム（たとえば、ボリュームＡ）に関連するデータを格納するために割り振らせることができる。ＲＡＩＤコントローラ３０２は、さまざまなメモリ・アドレスを所与のボリュームのメンバ・アドレスとして割り当てることができる。
【００５５】
動作８０４は、第１論理ボリュームの１つまたは複数のボリューム・ピースにボリューム・ピース・サイズを割り当てることを示す。たとえば、図３〜６に示されているように、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、ボリューム・ピース（たとえば、ボリューム・ピースＢ−２）にメモリ・サイズ（たとえば、１Ｍｂ）を割り当てさせることができる。特定のボリューム内の１つまたは複数のボリューム・ピースのボリューム・ピース・サイズは、共通のサイズ（たとえば、１Ｍｂ）を有することができる。すべてのボリューム（たとえば、ボリュームＡ、ボリュームＢ、およびボリュームＣ）のボリューム・ピース・サイズは、すべてが共通のサイズ（たとえば、１Ｍｂ）を有することができる。
【００５６】
その代わりに、同一ドライブ・グループ内の異なるボリュームが、異なるサイズを与えられたピースを有することができる（たとえば、ボリュームＡが１Ｍｂのサイズのボリューム・ピースを有することができ、ボリュームＢが２Ｍｂのサイズのボリューム・ピースを有することができる）。ＲＡＩＤコントローラ３０２は、ボリュームのそれぞれのピースを追跡するボリュームごとのメタデータと、各ピースのサイズおよびドライブの先頭からのオフセット（セクタ／論理ブロック単位）とを維持することができる。
【００５７】
動作８０６は、第１論理ボリュームの１つまたは複数のボリューム・ピースに物理ドライブ・オフセットを割り当てることを示す。たとえば、図３〜６に示されているように、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、ボリューム・ピースに物理ドライブ・オフセットを割り当てさせることができる。オフセットは、ドライブの物理的先頭からのボリューム・ピースの最初のアドレスのオフセットを定義することができる。オフセットは、ボリューム・ピースの最初のアドレスが物理ドライブの先頭からそれだけオフセットされる、複数のボリューム・ピースのサイズの増分を含むことができる。たとえば、図３に示されているように、ボリューム・ピースＢ−２は、ドライブ２の先頭に関して１Ｍｂのオフセットを有することができる。
【００５８】
所与の論理ボリュームの第１ボリューム・ピースの物理ドライブ・オフセット（たとえば、ボリューム・ピースＢ−０は、０の物理ドライブ・オフセットを有することができる）は、その論理ボリュームの第２ボリューム・ピースの物理ドライブ・オフセットと異なるものとすることができる（たとえば、ボリューム・ピースＢ−２は、１の物理ドライブ・オフセットを有することができる）。
【００５９】
図９に、図７の例の動作フロー７００の代替実施形態を示す。図９は、動作フロー７００が少なくとも１つの追加の動作を含むことができる例の実施形態を示す。追加の動作は、動作９１０を含むことができる。
【００６０】
動作９１０は、ドライブ・グループ内のドライブの第２セットの１つまたは複数のドライブに第１論理ボリュームの１つまたは複数のボリューム・ピースを再構築することを示す。たとえば、図３〜６に示されているように、１つまたは複数のボリューム（たとえば、ボリュームＢ）のボリューム・ピースを含むドライブ（たとえば、ドライブ２）故障時に、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、１つまたは複数のボリューム・ピース（たとえば、ボリューム・ピースＢ−２）を対象ボリュームの別のピースを含まないドライブ（たとえば、ボリュームＡのピースだけを含むドライブ１）に再構築させることができる。
【００６１】
図１０に、図７の例の動作フロー７００の代替実施形態を示す。図１０は、動作フロー７００が少なくとも１つの追加の動作を含むことができる例の実施形態を示す。追加の動作は、動作１０１０を含むことができる。
【００６２】
動作１０１０は、第１論理ボリュームの１つまたは複数のボリューム・ピースをドライブの第１セットまたはドライブの第２セットに含まれない１つまたは複数のドライブに再構築することを示す。たとえば、図３〜６に示されているように、１つまたは複数のボリューム（たとえば、ボリュームＡおよびボリュームＢ）のボリューム・ピースを含むドライブ（たとえば、ドライブ２）故障時に、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、故障したドライブの１つまたは複数のボリューム・ピース（たとえば、ボリューム・ピースＡ−２およびボリューム・ピースＢ−２）を、故障したドライブのボリュームの別のピースを含まないドライブに再構築させることができる（たとえば、１つまたは複数のボリューム・ピースＡ−２およびボリューム・ピースＢ−２を、ボリュームＣのピースだけを含むドライブ５に再構築することができる）。
【００６３】
図１１に、図７の例の動作フロー７００の代替実施形態を示す。図１１は、動作フロー７００が少なくとも１つの追加の動作を含むことができる例の実施形態を示す。追加の動作は、動作１１１０を含むことができる。
【００６４】
動作１１１０は、ホット・スペア・カバレージ値を定義することを示す。たとえば、図３〜６に示されているように、ＲＡＩＤコントローラ３０２は、コンピューティング・デバイス３０１から入力（たとえば、ユーザ入力）を受け取ることができ、あるいは、ホット・スペア・カバレージ値を自動的に定義する内部回路網を含むことができる。ドライブ・グループは、そのドライブ・グループ内のｎ個のドライブが故障し、それでも、故障したドライブのすべてのピースをそのドライブ・グループ内の空きエクステント内で再構築できるのに十分な容量がそのドライブ・グループにあるときに、ｎのホット・スペア・カバレージを有すると言うことができる。たとえば、図３〜６に示されているように、ＲＡＩＤ  ３０３は、最大の使用済み容量を有するドライブ（たとえば、ドライブ０、ドライブ２、およびドライブ３）が残りのドライブに再構築されるのに十分なドライブ・スペースが存在する時に、１のホット・スペア・カバレージ値を有することができる（たとえば、ドライブ１、ドライブ４、またはドライブ５は、ドライブ０、ドライブ２、またはドライブ３の再構築に対処するのに十分なストレージ・スペースを有しなければならない）。さらに、ドライブ・グループ内で最大のピースを保持するのに十分に大きい空きエクステントを維持することができる（たとえば、ボリューム・ピースＡ−０がボリューム・ピースＣ−１より大きい場合に、少なくともボリューム・ピースＡと同程度に大きい空きエクステントが必要である可能性がある）。ドライブ・グループは、そのドライブ・グループ内のｎ個のドライブが故障し、それでも、故障したドライブのすべてのピースをそのドライブ・グループ内の空きエクステント内で再構築できるのに十分な容量がそのドライブ・グループにあるときに、ｎのホット・スペア・カバレージを有すると言うことができる。
【００６５】
図１２に、ＲＡＩＤにまたがってボリューム・ピースを割り振ることに関連する例の動作を表す動作流れ図１２００を示す。図１２および動作フローのさまざまな例を含む後続の図では、議論および説明が、図３〜６の上で説明した例に関してならびに／または他の例および文脈に関して提供される場合がある。しかし、動作フローを、複数の他の環境および文脈で、ならびに／または図３〜６の変更された版で実行できることを理解されたい。また、さまざまな動作フローが、図示のシーケンス（１つまたは複数）で提示されるが、さまざまな動作を、図示された順序とは異なる順序で実行することができ、あるいは、同時に実行できることを理解されたい。
【００６６】
開始動作の後に、動作１２１０は、第１論理ボリュームの第１ボリューム・ピースについて再構築セットを定義することを示す。たとえば、図３〜６に示されているように、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、第１論理ボリュームの第１ボリューム・ピースについて再構築セットを定義させることができる。再構築セットは、そのＲＡＩＤボリューム内の残りのピースを含むドライブのセットを含むことができる。たとえば、ボリューム・ピースＡ−２の再構築セットを、ドライブ０およびドライブ１とすることができる。
【００６７】
動作１２２０は、第１論理ボリュームのボリューム・ピースに関する再構築セットに従って、第２論理ボリュームのボリューム・ピースをドライブ・グループ内のドライブに割り当てることを示す。たとえば、図３〜６に示されているように、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、第１論理ボリュームの１つまたは複数のボリューム・ピース（たとえば、ボリューム・ピースＡ−０、ボリューム・ピースＡ−１、およびボリューム・ピースＡ−２）を１つまたは複数のドライブ（たとえば、それぞれドライブ０、ドライブ１、およびドライブ２）に割り当てさせることができる。ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、第１論理ボリュームのボリューム・ピースと第２論理ボリュームのボリューム・ピースとのオーバーラップが最小化されるように、第２論理ボリュームの１つまたは複数のボリューム・ピース（たとえば、ボリューム・ピースＢ−０、ボリューム・ピースＢ−１、および／またはボリューム・ピースＢ−２）を１つまたは複数のドライブに割り当てさせることができる。
【００６８】
図１３に、図１２の例の動作フロー１２００の代替実施形態を示す。図１３は、定義する動作１２１０が少なくとも１つの追加の動作を含むことができる例の実施形態を示す。追加の動作は、動作１３０２を含むことができる。
【００６９】
動作１３０２は、第１論理ボリュームの第１ボリューム・ピースとは別個の第１論理ボリュームの１つまたは複数のボリューム・ピースを含むドライブ・グループ内のドライブのセットを定義することを示す。たとえば、図３〜６に示されているように、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、第１論理ボリュームの第１ボリューム・ピースに関する再構築セットを定義させることができる。再構築セットは、そのＲＡＩＤボリューム内の残りのピースを含むドライブのセットを含むことができる。たとえば、ボリューム・ピースＡ−２の再構築セットを、ドライブ０およびドライブ１とすることができる。
【００７０】
さらに、あるドライブ・グループ内の複数のボリュームのボリューム・ピースに関する再構築セットを、互いに素とすることができる（たとえば、そのドライブ・グループ内のすべてのドライブが、特定のボリュームからの多くとも１つのボリューム・ピースを含む）。
【００７１】
図１４は、図１２の例の動作フロー１２００の代替実施形態を示す。図１４は、動作フロー１２００が少なくとも１つの追加の動作を含むことができる例の実施形態を示す。追加の動作は、動作１４１０、動作１４１２、および／または動作１４１４を含むことができる。
【００７２】
動作１４１０は、第１論理ボリュームのボリューム・ピースの再構築セットに従って第１論理ボリュームのボリューム・ピースを再構築することを示す。たとえば、図３〜６に示されているように、１つまたは複数のボリューム（たとえば、ボリュームＢ）のボリューム・ピースを含むドライブ（たとえば、ドライブ２）故障時に、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、１つまたは複数のボリューム・ピース（たとえば、ボリューム・ピースＢ−２）を対象ボリュームの別のピースを含まないドライブ（たとえば、その再構築セットに含まれないドライブ）に再構築させることができる。
【００７３】
動作１４１２は、第１論理ボリュームの１つまたは複数のボリューム・ピースをドライブ・グループ内のドライブの第２セットの１つまたは複数のドライブに再構築することを示す。たとえば、図３〜６に示されているように、１つまたは複数のボリューム（たとえば、ボリュームＢ）のボリューム・ピースを含むドライブ（たとえば、ドライブ２）故障時に、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、１つまたは複数のボリューム・ピース（たとえば、ボリューム・ピースＢ−２）を対象ボリュームの別のピースを含まないドライブ（たとえば、ボリュームＡのピースだけを含むドライブ１）に再構築させることができる。
【００７４】
動作１４１４は、第１論理ボリュームの１つまたは複数のボリューム・ピースをドライブの第１セットまたはドライブの第２セットに含まれない１つまたは複数のドライブに再構築することを示す。たとえば、図３〜６に示されているように、１つまたは複数のボリューム（たとえば、ボリュームＡおよびボリュームＢ）のボリューム・ピースを含むドライブ（たとえば、ドライブ２）故障時に、ＲＡＩＤコントローラ３０２は、ＲＡＩＤ  ３０３に、故障したドライブの１つまたは複数のボリューム・ピース（たとえば、ボリューム・ピースＡ−２およびボリューム・ピースＢ−２）を、故障したドライブのボリュームの別のピースを含まないドライブに再構築させることができる（たとえば、１つまたは複数のボリューム・ピースＡ−２およびボリューム・ピースＢ−２を、ボリュームＣのピースだけを含むドライブ５に再構築することができる）。
【００７５】
図１５は、図１２の例の動作フロー１２００の代替実施形態を示す。図１５は、動作フロー１２００が少なくとも１つの追加の動作を含むことができる例の実施形態を示す。追加の動作は、動作１５１０を含むことができる。
【００７６】
動作１５１０は、ホット・スペア・カバレージ値を定義することを示す。たとえば、図３〜６に示されているように、ＲＡＩＤコントローラ３０２は、コンピューティング・デバイス３０１から入力（たとえば、ユーザ入力）を受け取ることができ、あるいは、ホット・スペア・カバレージ値を自動的に定義する内部回路網を含むことができる。ドライブ・グループは、そのドライブ・グループ内のｎ個のドライブが故障し、それでも、故障したドライブのすべてのピースをそのドライブ・グループ内の空きエクステント内で再構築できるのに十分な容量がそのドライブ・グループにあるときに、ｎのホット・スペア・カバレージを有すると言うことができる。たとえば、図３〜６に示されているように、ＲＡＩＤ  ３０３は、最大の使用済み容量を有するドライブ（たとえば、ドライブ０、ドライブ２、およびドライブ３）が残りのドライブに再構築されるのに十分なドライブ・スペースが存在する時に、１のホット・スペア・カバレージ値を有することができる（たとえば、ドライブ１、ドライブ４、またはドライブ５は、ドライブ０、ドライブ２、またはドライブ３の再構築に対処するのに十分なストレージ・スペースを有しなければならない）。さらに、ドライブ・グループ内で最大のピースを保持するのに十分に大きい空きエクステントを維持することができる（たとえば、ボリューム・ピースＡ−０がボリューム・ピースＣ−１より大きい場合に、少なくともボリューム・ピースＡと同程度に大きい空きエクステントが必要である可能性がある）。ドライブ・グループは、そのドライブ・グループ内のｎ個のドライブが故障し、それでも、故障したドライブのすべてのピースをそのドライブ・グループ内の空きエクステント内で再構築できるのに十分な容量がそのドライブ・グループにあるときに、ｎのホット・スペア・カバレージを有すると言うことができる。
【００７７】
本発明およびそれに付随する利益の多くが、前述の説明によって理解されると思われる。また、本発明の趣旨および範囲から逸脱せずに、あるいはその本質的利益のすべてを犠牲にすることなく、さまざまな変更を、本発明のコンポーネントの形態、構成、および配置において行えることが明白であると思われる。本明細書で前に説明された形態は、単にその例示的実施形態である。そのような変更を包含し、含むことを、後続の特許請求の範囲の意図とすることができる。
【００７８】
前述の詳細な説明は、ブロック図、流れ図、および／または例の使用を介するデバイスおよび／またはプロセスのさまざまな実施形態を含む場合がある。そのようなブロック図、流れ図、および／または例が、１つまたは複数の機能および／または動作を含む限り、当業者は、そのようなブロック図、流れ図、または例の中の各機能および／または動作を、個別におよび／または集合的に、さまざまなハードウェア、ソフトウェア、ファームウェア、または事実上すべてのその組合せによって実施できることを理解するであろう。一実施形態では、本明細書で説明される主題の複数の部分を、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、ディジタル信号プロセッサ（ＤＳＰ）、または他の集積フォーマットを介して実施することができる。しかし、当業者は、本明細書で開示される実施形態のいくつかの態様を、全体的にまたは部分的に、集積回路内で、１つまたは複数のコンピュータ上で動作する１つまたは複数のコンピュータ・プログラムとして（たとえば、１つまたは複数のコンピュータ・システム上で動作する１つまたは複数のプログラムとして）、１つまたは複数のプロセッサ上で動作する１つまたは複数のプログラムとして（たとえば、１つまたは複数のマイクロプロセッサ上で動作する１つまたは複数のプログラムとして）、ファームウェアとして、あるいは事実上すべてのその組合せとして、同等に実施できることと、回路を設計することならびに／あるいはソフトウェアおよび／またはファームウェアのコードを記述することが、本開示に照らして、十分に当業者の技量に含まれることとを認めるであろう。
【００７９】
さらに、当業者は、本明細書で説明される主題の機構を、さまざまな形のプログラム製品として配布され得るものとすることができることと、本明細書で説明される主題の例示的実施形態が、配布を実際に実行するのに使用される信号担持媒体の特定のタイプに関わりなく適用されることとを了解するであろう。信号担持媒体の例は、フロッピ・ディスク、ハード・ディスク・ドライブ、コンパクト・ディスク（ＣＤ）、ディジタル・ビデオ・ディスク（ＤＶＤ）、ディジタル・テープ、コンピュータ・メモリ、その他などの記録可能型媒体と、ディジタル通信媒体および／またはアナログ通信媒体（たとえば、光ファイバ・ケーブル、導波管、有線通信リンク、無線通信リンク（たとえば、送信器、受信器、送信論理、受信論理、その他）、その他）などの伝送型媒体とを含むが、これらに限定はされない可能性がある。
【００８０】
当業者は、技術的現状が、システムの諸態様のハードウェア実施態様、ソフトウェア実施態様、および／またはファームウェア実施態様の間に差がほとんど残されていない可能性がある点まで進歩した可能性があり、ハードウェア、ソフトウェア、および／またはファームウェアの使用を、一般に（しかし、ある種の文脈でハードウェアとソフトウェアとの間の選択が重要になる場合があるという点で必ずではない）、費用対効率のトレードオフを表す設計選択とすることができることを認めるであろう。当業者は、本明細書で説明されたプロセスおよび／またはシステムおよび／または他のテクノロジを実現できるさまざまな手段（たとえば、ハードウェア、ソフトウェア、および／またはファームウェア）がある可能性があることと、好ましい手段が、そのプロセスおよび／またはシステムおよび／または他のテクノロジを展開できる文脈に伴って変化することとを了解するであろう。たとえば、ある実装者が、速度および正確さが主要である可能性があると判定する場合に、その実装者は、主にハードウェアおよび／またはファームウェアの手段を選ぶことができ、その代わりに、柔軟性が主要である可能性がある場合には、実装者は、主にソフトウェアの実施態様を選ぶことができ、あるいは、その代わりに、実装者は、ハードウェア、ソフトウェア、および／またはファームウェアのある組合せを選ぶことができる。したがって、本明細書で説明されたプロセスおよび／またはデバイスおよび／または他のテクノロジをそれによって実現できる複数の可能な手段がある場合があり、それらの手段のどれもが、利用される任意の手段をその手段が展開される文脈および実装者の特定の懸念（たとえば、速度、柔軟性、または予測可能性）（このいずれもが変化し得る）に依存する選択とすることができるという点で、他の手段より本質的に優れるものではない可能性がある。当業者は、実施態様の光学的態様が、通常は光学指向のハードウェア、ソフトウェア、および／またはファームウェアを使用することを認めるであろう。
【図１】
0005722225.tif 000002
【図２】
0005722225.tif 000003
【図３】
0005722225.tif 000004
【図４】
0005722225.tif 000005
【図５】
0005722225.tif 000006
【図６】
0005722225.tif 000007
【図７】
0005722225.tif 000008
【図８】
0005722225.tif 000009
【図９】
0005722225.tif 000010
【図１０】
0005722225.tif 000011
【図１１】
0005722225.tif 000012
【図１２】
0005722225.tif 000013
【図１３】
0005722225.tif 000014
【図１４】
0005722225.tif 000015
【図１５】
0005722225.tif 000016