(57)【要約】【課題】  データ及びパリティを安全に多重化冗長ストレージに書き込むための装置の構成を提供すること。【解決手段】  データ及びパリティを安全に多重化冗長ストレージに書き込むための装置の構成は、少なくとも１つの第１のマークをストレージ装置に格納して、少なくとも１つのデータ書き込みにより書き込まれるべきパターンを一意的に索引付けるように動作可能な第１ストレージ・コンポーネントと、該少なくとも１つのデータ書き込みを実行するように動作可能な書き込みコンポーネントと、少なくとも１つのさらに別のマークにより、該ストレージ内のマークを上書きして、パリティ書き込みにより書き込まれるべきパターンを一意的に索引付けするように動作可能なさらに別のストレージ・コンポーネントと、該パリティ書き込みを実行するように動作可能なさらに別の書き込みコンポーネントと、を含む。第１ストレージ・コンポーネントは、第２のマークにより、前述のストレージ内の前述の少なくとも１つの第１のマークを上書きして、第１のパリティ書き込みにより書き込まれるべきパターンを索引付けするように動作可能な第２ストレージ・コンポーネントを含み、書き込みコンポーネントは、さらに、該第１のパリティ書き込みを実行するように動作可能であることが好ましい。【選択図】      図３
2009514047.tif 000002
【特許請求の範囲】
【請求項１】
データ及びパリティを多重化冗長ストレージに書き込むための装置の構成であって、少なくとも１つの第１のマークをストレージ装置に格納して、少なくとも１つのデータ書き込みにより書き込まれるべきパターンを一意的に索引付けるように動作可能な第１ストレージ・コンポーネントと、前記少なくとも１つのデータ書き込みを実行するように動作可能な書き込みコンポーネントと、少なくとも１つのさらに別のマークにより、前記ストレージ装置内のマークを上書きして、パリティ書き込みにより書き込まれるべきパターンを一意的に索引付けするように動作可能なさらに別のストレージ・コンポーネントと、前記パリティ書き込みを実行するように動作可能なさらに別の書き込みコンポーネントと、を含む装置の構成。
【請求項２】
前記第１ストレージ・コンポーネントが、さらに、前記ストレージ装置内の前記少なくとも１つの第１のマークを第２のマークで上書きして、第１のパリティ書き込みにより書き込まれるべきパターンを索引付けするように動作可能な第２ストレージ・コンポーネントを含み、前記書き込みコンポーネントが、さらに、前記第１のパリティ書き込みを実行するように動作可能である、請求項１に記載の装置の構成。
【請求項３】
二重化冗長性より大きい冗長性を有する、請求項１又は請求項２に記載の装置の構成。
【請求項４】
各々のデータ及びパリティ書き込み動作を直列化するように適応された、請求項２に記載の装置の構成。
【請求項５】
データ及びパリティを安全に多重化冗長ストレージに書き込むための方法であって、少なくとも１つの第１のマークをストレージ装置に格納して、少なくとも１つのデータ書き込みにより書き込まれるべきパターンを一意的に索引付けするステップと、前記少なくとも１つのデータ書き込みを実行するステップと、少なくとも１つのさらに別のマークにより前記ストレージ装置内のマークを上書きして、パリティ書き込みにより書き込まれるべきパターンを一意的に索引付けするステップと、前記パリティ書き込みを実行するステップと、を含む方法。
【請求項６】
少なくとも１つの第１のマークをストレージ装置に格納して、少なくとも１つのデータ書き込みにより書き込まれるべきパターンを一意的に索引付けする前記ステップが、さらに、前記ストレージ装置内の前記少なくとも１つの第１のマークを第２のマークで上書きして、第１のパリティ書き込みにより書き込まれるべきパターンを索引付けするステップを含み、前記少なくとも１つのデータ書き込みを実行する前記ステップが、前記第１のパリティ書き込みを実行するステップを含む、請求項５に記載の方法。
【請求項７】
多重化冗長ストレージが二重化冗長性より大きい冗長性を有する、請求項５又は請求項６に記載の方法。
【請求項８】
書き込みの実行を含むすべてのステップが直列化される、請求項５から請求項７までのいずれか１項に記載の方法。
【請求項９】
前記多重化冗長ストレージがＲＡＩＤストレージを含む、請求項５から請求項８までのいずれか１項に記載の方法。
【請求項１０】
有形媒体に記録されるコンピュータ・プログラム・コードを含み、前記コンピュータ・プログラム・コードが、コンピュータ・システムに搭載され、そのシステムで実行された場合には、請求項５から請求項９までのいずれか１項に記載の方法のすべてのステップを実行する、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージの分野に関し、より具体的には、多重化冗長アレイの動作に関する。
【背景技術】
【０００２】
ストレージ・システムにおいては、独立したストレージ装置のアレイ（配列）は、ＲＡＩＤ（個々のディスクの冗長性アレイ）として知られる技術を用いて、単一の仮想ストレージ装置として動作するように構成することができる。ＲＡＩＤストレージ・システムにより動作するように構成されたコンピュータ・システムは、そのＲＡＩＤストレージ・システムが単一のストレージ装置であるかのように、該ＲＡＩＤストレージ・システム上で入出力（Ｉ／Ｏ）動作（読み取り及び書き込み動作）を実行することができる。ＲＡＩＤストレージ・システムは、独立したストレージ装置のアレイとＲＡＩＤコントローラとを含む。ＲＡＩＤコントローラは、独立のストレージ装置のアレイの仮想化ビュー（ｖｉｅｗ）を提供し、すなわち、これは、独立したストレージ装置のアレイが、ストレージ・エレメント（構成要素）の順次リストを備えた単一の仮想ストレージ装置のようにみえることを意味する。ストレージ・エレメントは、一般に、ストレージ・ブロックとして知られ、これらの中に格納されたデータは、データ・ブロックとして知られる。Ｉ／Ｏ動作は、仮想ストレージ装置内の１つ又はそれ以上のストレージ・ブロックに関してクオリファイされる。Ｉ／Ｏ動作が仮想ストレージ装置上で実行される場合には、ＲＡＩＤコントローラは、該Ｉ／Ｏ動作を独立したストレージ装置のアレイ上にマップする。ストレージ装置のアレイを仮想化し、かつＩ／Ｏ動作をマップするためには、ＲＡＩＤコントローラは、データ処理技術分野で周知の幾つかの標準的なＲＡＩＤ技術のいずれかを採用することができる。
【０００３】
ストレージ装置のアレイの仮想化ビューを単一の仮想ストレージ装置として提供する際、該仮想ストレージ装置内のデータ・ブロックを該アレイ全体に配布するのは、ＲＡＩＤコントローラの機能である。これを達成するための１つの方法は、ストライピング（ｓｔｒｉｐｉｎｇ）として知られる技術を用いることである。ストライピングは、ラウンド・ロビン法により、データ・ブロックをストレージ装置全体に配布することを含む。データ・ブロックをＲＡＩＤストレージ・システム内に格納する場合には、ストリップ（ｓｔｒｉｐ）として知られる多数のデータ・ブロックが各々のストレージ装置内に格納される。ストリップのサイズは、特定のＲＡＩＤ実装によって決定することができ、又は構成することができる。第１ストレージ装置に格納される第１ストリップ、及び、後続のストレージ装置に格納される後続ストリップを含むストリップの列は、ストライプ（ｓｔｒｉｐｅ）として知られる。ストライプのサイズは、ストライプを構成するすべてのストリップの合計サイズである。この方法によりデータ・ブロックを格納する多重化独立ストレージ装置を使用することは、多重化ストレージ装置が、Ｉ／Ｏ動作中に並行して作動することができるため、単一のストレージ装置と比較した場合には、高性能なＩ／Ｏ動作をもたらす。
【０００４】
ディスク・ストレージ装置といった物理的ストレージ装置は、信頼性が低いことで名高く、信頼できるストレージ・システムを提供することがＲＡＩＤコントローラのさらに別の機能である。信頼性を提供するための１つの技術は、独立したストレージ装置のアレイ内のデータと併せて、チェック情報を格納することを含む。チェック情報は、ストレージ装置のアレイ内における単一のストレージ装置の故障（ｆａｉｌｕｒｅ）といった単一の故障点のために読み取り不能になったデータの再生成（ｒｅｇｅｎｅｒａｔｉｏｎ）を可能にする冗長性情報である。読み取り不能データは、読み取り可能データと冗長性チェック情報の組み合わせから再生成される。チェック情報は、ストライプにおいて単一のストリップを占めるパリティ・データとして記録され、これは、排他的論理和（ＸＯＲ）論理演算子を該ストライプにおけるすべてのデータ・ストリップに対して適用することにより計算される。例えば、データ・ストリップＡ、Ｂ、及びＣを含むストライプは、さらに、Ａ  ＸＯＲ  Ｂ  ＸＯＲ  Ｃとして計算されるパリティ・ストリップによってさらに補完される。ストレージ・システム内の単一の故障点の場合には、パリティ・ストリップは、アクセス不能データ・ストリップの再生成のために使用される。例えば、データ・ストリップＡ、Ｂ、Ｃ及びＰＡＲＩＴＹ（パリティ）を含むストライプが、それぞれ４つの独立したストレージ装置Ｗ、Ｘ、Ｙ、及びＺにわたり格納されており、ストレージ装置Ｘが故障した場合には、該装置Ｘに格納されたストリップＢはアクセス不能となる。ストリップＢは、ＸＯＲ演算により、残りのデータ・ストリップ及びパリティ・ストリップから算出することができる。この回復（復元）計算は、Ａ  ＸＯＲ  Ｃ  ＸＯＲ  ＰＡＲＩＴＹ＝Ｂである。
【０００５】
多重化冗長ＲＡＩＤアレイは、構成要素であるハードディスク・ドライブの幾つかが故障しても該アレイに書き込まれたいずれのデータも失われることがないように、データ及びパリティ情報を格納する、独立したハードディスク・ドライブから構築されたストレージ装置である。簡単にするために、このことは、ここでは二重化冗長アレイという用語で説明されるが、本発明の好ましい実施形態の技術は、もっと冗長性の高いアレイに拡張することができる。
【０００６】
例えば、図１においては、４ディスク・アレイについて上述した回復（復元）ＸＯＲ技術をサポートする周知の方式が示される。この技術は以下を基にする。
１．各々の列はディスクを表す。
２．図中の各々のセルは、ディスク上のデータのストリップ（上の行）又はパリティのストリップ（下の行）を表す。
３．このパターンは、アレイ全体をカバーするように反復される。
４．各々のデータ・ストリップは、ちょうど２つのパリティ・ストリップを伴う。
５．各々のデータ・ストリップ及びその２つのパリティ・ストリップは、異なるディスク上に存在する。
６．２つのデータ・ストリップが、同じ２つのパリティ・ストリップを共有することはない。
７．いずれか２つのディスク（列）が除去された場合には、なくなったデータは残りの２つのディスクから回復することができる。
【０００７】
例えば、最初（左側）の２つのディスクを除去する。Ａは、Ｃ  ｘｏｒ  （Ａ  ｘｏｒ  Ｃ）から回復することが可能である。
次いで、Ｂは、Ａ  ｘｏｒ  （Ａ  ｘｏｒ  Ｂ）から回復することができる。
【０００８】
書き込み動作が割り込まれた場合には（例えば、停電、又はアレイ・コントローラのリセットによって）、該アレイ・コントローラは、パターンを再同期するための手段を講じなくてはならない。例えば、データＢをデータＢ＼により上書きすることを考える。これは、３つのストリップ（１つのデータ及び２つのパリティ）が書き込まれなければならないことを意味する。これらの書き込み中に電力が落ちた場合には、ディスク・ドライブは書き込みを完了せず、ストリップは新旧のデータ又はパリティが組み合わされたものを含む状態で残される。電力が回復した場合には、アレイ・コントローラは、パリティ・ストリップをデータ・ストリップに再同期する何らかの処置をとらなくてはならない。このことが行われなかった場合には、パターンは正確に再構築されず、データの損傷が生じる。
【０００９】
単一冗長性タイプのＲＡＩＤであるＲＡＩＤ−５を実施する現行のＲＡＩＤアダプタは、典型的には、書き込まれている各々のストライプのインデックスを、小さい不揮発性メモリ（ＮＶＲＡＭ）内に格納することによって、このことを管理する。アダプタが起動した場合には、そのＮＶＲＡＭを調べ、そのアレイにおける、どのパターンが再同期される必要があるか見つけ出す。この再同期は、データ・ストリップのすべてを読み取ること、及び、新しいパリティを算出することにより行われる。この手法は、同時に書き込まれる必要がある各々のパターンについて、−３２ビットのＮＶＲＡＭを必要とする。この技術は、データ・ストリップのすべてを読み取ることができる場合においてのみ機能する。１つのデータ・ストリップを読み取ることができない場合には（例えば、ディスクの損傷のために）、パリティ・ストリップを算出することができず、データは損失する。これは、単一の故障で生き残ることができるように設計されたＲＡＩＤ−５では許容される限界である（おそらく、ディスク損傷及び停電又はコントローラ・リセットといった２つの障害が存在した。）
【００１０】
この技術が、本来であればデータを損失することなく２つの障害を切り抜けなければならない二重化冗長アレイに適用された場合には、許容できるものではない。この問題に対する標準的な解決策（これはＲＡＩＤ−５の場合には強化し、二重化冗長の場合には解決するものである）は、アレイ・コントローラに大容量の不揮発性ストレージ（ここでは、ＮＶＲＡＭと区別するためにＮＶＳと呼ぶ）を装備することである。ディスクに書き込みを開始する前に、コントローラは、新規なデータ及びパリティを準備し、これらをＮＶＳ内に格納する。書き込み中に、コントローラがリセットされるか、又はディスクが電力を失った場合には、書き込みを試みてきたデータは依然としてＮＶＳに存在しているため、コントローラは再びその書き込みを試みることができる。書き込みが成功した場合には、そのパターンを再同期するさらに別の動作は必要ない。１つのディスク（又は、さらに、二重化冗長アレイにおいては２つのディスク）が損傷したとしても、問題はない。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
この手法の欠点は、コントローラが満足に機能するのに必要なだけの同時書き込みに対処するのに十分な大容量のＮＶＳが必要なことである。過去においては、単一のストレージ・コントローラが、典型的には、高速書き込みキャッシュ及びＲＡＩＤ機能の両方を与えるものであるため、このことは許容できるものであった、すなわち、２つのコンポーネントにより共有されるＮＶＳの１つだけが要求されるものであった。
【００１２】
しかしながら、ストレージ・エリア・ネットワーク（ＳＡＮ）環境においては、キャッシュとＲＡＩＤとは別々のボックスにあることが望ましい場合がある。ＲＡＩＤの更新にＮＶＳを用いることは、キャッシュ・ボックス及びＲＡＩＤボックスの両方に、それら自体のＮＶＳが必要であることを意味する。
【００１３】
典型的には、ＲＡＩＤアレイには少なくとも２つのコントローラがあり、１つのコントローラの故障は、アレイに対するアクセス損失の原因にならない。これらのコントローラは、ＲＡＩＤアレイに対するアクセスを同期させるように通信しなければならない。いかなる不揮発性の情報も、両方のコントローラに見えるものでなければならない。最も単純な場合には、コントローラはデバイス・ネットワークを用いて通信するが、ＮＶＳのコンテンツをシャドウィングしなければならない場合には、ネットワーク帯域幅が不利に消費され、さもなければこの帯域幅は、ユーザＩ／Ｏに利用可能である。
【００１４】
ＮＶＲＡＭ技術を用いてＲＡＩＤ−５アレイを管理するストレージ・アダプタ／コントローラが与えられるとすると、ハードウェアのアップグレードなしで、ＮＶＳ手法を用いて、許容できる二重化冗長ＲＡＩＤストレージを実装することは可能ではないということが、さらに別の欠点である。
【課題を解決するための手段】
【００１５】
したがって、本発明は、第１の態様において、データ及びパリティを安全に多重化冗長ストレージに書き込むための装置の構成を提供し、該装置の構成は、少なくとも１つの第１のマークをストレージ装置に格納して、少なくとも１つのデータ書き込みにより書き込まれるべきパターンを一意的に索引付けるように動作可能な第１ストレージ・コンポーネントと、前述の少なくとも１つのデータ書き込みを実行するように動作可能な書き込みコンポーネントと、少なくとも１つのさらに別のマークにより、前述のストレージ装置内のマークを上書きして、パリティ書き込みにより書き込まれるべきパターンを一意的に索引付けするように動作可能なさらに別のストレージ・コンポーネントと、前述のパリティ書き込みを実行するように動作可能なさらに別の書き込みコンポーネントと、を含む。
【００１６】
前述の第１ストレージ・コンポーネントは、さらに、第２のマークにより、前述のストレージ装置内の前述の少なくとも１つの第１のマークを上書きして、第１のパリティ書き込みにより書き込まれるべきパターンを索引付けするように動作可能な第２ストレージ・コンポーネントを含み、前述の書き込みコンポーネントは、さらに、前述の第１のパリティ書き込みを実行するように動作可能であることが好ましい。
【００１７】
第１の態様の構成は、二重化冗長性を有することが好ましいとすることができる。第１の態様の装置は、二重化冗長性より大きい冗長性を有することが好ましいとすることができる。
【００１８】
第１の態様の構成は、各々のデータ及びパリティ書き込み動作を直列化するように適応させることができる。
【００１９】
第１の態様の構成は、さらに、ＲＡＩＤ−５ストレージであることが好ましいＲＡＩＤストレージを含むことができる。
【００２０】
第１の態様の構成は、遅延パリティ更新を実行するように適応させることができる。
【００２１】
第１の態様の構成は、高速書き込みキャッシュをさらに含むことが好ましいとすることができる。
【００２２】
第２の態様においては、本発明は、データ及びパリティを安全に多重化冗長ストレージに書き込むための方法を提供し、この方法は、少なくとも１つの第１のマークをストレージ装置に格納して、少なくとも１つのデータ書き込みにより書き込まれるべきパターンを一意的に索引付けするステップと、前述の少なくとも１つのデータ書き込みを実行するステップと、少なくとも１つのさらに別のマークにより前述のストレージ装置内のマークを上書きして、パリティ書き込みにより書き込まれるべきパターンを一意的に索引付けするステップと、前述のパリティ書き込みを実行するステップと、を含む。
【００２３】
少なくとも１つの第１のマークをストレージ装置に格納して、少なくとも１つのデータ書き込みにより書き込まれるべきパターンを一意的に索引付けするステップが、さらに、第２のマークにより前述のストレージ装置内の前述の少なくとも１つの第１のマークを上書きして、第１のパリティ書き込みにより書き込まれるべきパターンを索引付けするステップを含み、前述の少なくとも１つのデータ書き込みを実行するステップが、前述の第１のパリティ書き込みを実行するステップを含むことが好ましい。
【００２４】
多重化冗長ストレージは、二重化冗長性であることが好ましい。
多重化冗長ストレージは、二重化冗長性より大きい冗長性を有することが好ましい。
書き込みの実行を含むすべてのステップは、直列化されることが好ましい。
前述の多重化冗長ストレージは、ＲＡＩＤストレージを含むことが好ましい。
前述のＲＡＩＤストレージは、ＲＡＩＤ−５ストレージであることが好ましい。
【００２５】
第２の態様の方法は、さらに、遅延パリティ（ｌａｚｙ  ｐａｒｉｔｙ）更新を実行するステップを含むことが好ましい。
【００２６】
第２の態様の方法は、さらに、高速書き込みキャッシング動作を実行するステップを含むことが好ましい。
【００２７】
第３の態様においては、本発明は、有形媒体に記録されるコンピュータ・プログラム・コードを含み、該コンピュータ・プログラム・コードが、コンピュータ・システムに搭載され、そのシステムで実行された場合には、第２の態様における方法のステップのすべてを実行するコンピュータ・プログラムを提供する。
【００２８】
本発明は、ディスク損傷と電源のリセットとの組み合わせ、又はディスク損傷とコントローラのリセットとの組み合わせに対する保護を提供するという利点がある。
【００２９】
さらに、本発明は、ユーザＩ／Ｏが利用可能な帯域幅を減少させる、帯域幅消費問題を軽減するという利点がある。
本発明のさらに別の利点は、これが、二重化冗長アレイより大きい冗長性を有するアレイに拡張が容易であることである。
【発明を実施するための最良の形態】
【００３０】
ここで、本発明の好ましい実施形態を、一例として、添付の図面を参照して説明する。
【００３１】
本発明の好ましい実施形態を理解するために、図１に示す既知のエンコード方式を再び検討する。このパターンに対する書き込みは、直列化されている。両方のストリップＡ及びＢに対する書き込みが同時にサブミット（発行）された場合には、アレイ・コントローラは、最初に一方を、次いで他方を処理する。
【００３２】
更新データＢ´を既存データＢに上書きするために、既知のディスクＩ／Ｏステップの手順が必要となる。この手順は、
１．旧データ、Ｂを読み取る。
２．パリティ・デルタ、Ｂ  ｘｏｒ  Ｂ１を計算する。
３．第１の旧パリティ、Ｂ  ｘｏｒ  Ｄを読み取る。
４．第１の新パリティを、第１の旧パリティとパリティ・デルタの排他的論理和により計算する、すなわち、（Ｂ  ｘｏｒ  Ｄ）  ｘｏｒ  （Ｂ  ｘｏｒ  Ｂ１）の計算により、Ｂ１ｘｏｒ  Ｄとなる。
５．第２の旧パリティ、Ａ  ｘｏｒ  Ｂを読み取る。
６．第２の新パリティを、第２の旧パリティと、パリティ・デルタの排他的論理和により計算する、すなわち、（Ａ  ｘｏｒ  Ｂ）  ｘｏｒ  （Ｂ  ｘｏｒ  Ｂ´）の計算によりＡ  ｘｏｒ  Ｂ´となる。
７．Ｂの上にＢ１を書き込む。←書き込み＃０（番号０）
８．第１の新パリティ、Ｂ´  ｘｏｒ  Ｄを書き込む。←書き込み＃１（番号１）
９．第２の新パリティ、Ａ  ｘｏｒ  Ｂ１を書き込む。←書き込み＃２（番号２）
（最終結果に影響を及ぼすことなく幾らかの再配列（ｒｅｏｒｄｅｒｉｎｇ）が可能であることは、当業者には明らかであろう。）
【００３３】
本発明の好ましい実施形態においては、書き込み＃０、＃１、及び＃２の各々に書き込まれているパターン内のストリップを一意的に識別するため、マークがＮＶＲＡＭに格納される。
【００３４】
図２を参照すると、データ及びパリティを、ライタ１０２を備えた第１書き込みコンポーネント１１２を含む多重化冗長ストレージに、安全に書き込むための装置１００の構成が示されており、該ライタは、第１ストレージ・コンポーネント１０８と連携してマークを格納して、データ書き込みにより書き込まれるべきパターンを一意的に索引付けし、次いで、ストレージ１１０に対する書き込み動作を実行する。さらに、書き込みコンポーネント１１２は、第２ライタ１０４を含み、該ライタもまた、第１ストレージ・コンポーネント１０８と連携してマークを格納して、第１のパリティ書き込みにより書き込まれるべきパターンを一意的に索引付けし、次いで、ストレージ１１０に対する書き込み動作を実行する。ストレージに対して非アトミックな（ｎｏｎ−ａｔｏｍｉｃ）書き込みをする場合には、データ及びパリティは、並行書き込み１１４が示すように、並行して書き込むことができる。一貫性（アトミック性）を保持しなくてはならない書き込みの場合には、コンポーネント１１２は、２つの独立したライタ１０２、１０４を提供するように事実上分解され、並行（同時）書き込みコンポーネント１１２に示される書き込みは、第１がデータの書き込み、第２が第１パリティの書き込みという直列化された書き込みの対に分解される（第２のパリティ書き込みもまた、直列化されねばならない）。
【００３５】
第３のライタ１０６は、ストレージ・コンポーネント１０８と連携して、少なくとも１つのさらに別のマークにより、ストレージ内のマークを上書きして、第２パリティ書き込みによって書き込まれるべきパターンを一意的に索引付けし、次いで、パリティをストレージ１１０に書き込む。
【００３６】
ＮＶＲＡＭであるストレージ・コンポーネント１０８内に格納された情報は、
書き込まれているパターンのインデックス（０から、パターンがアレイの下まで反復される回数の数）と、
書き込まれているデータ・ストリップのインデックス（４ディスク・アレイでは、０から３）と、
現在実行されている書き込みのインデックス（二重化冗長アレイについては、上記の＃０から＃２までのマークが付されている）と
である。
第２及び第３の項目は、パターン内のどのストリップが書き込まれているかを一意的に識別する。この情報を表す代替的な方法があり、これらに限られるものではないが、例えば、パターン内のＸ−Ｙ座標の使用を含む。多くの代替的表現が存在することは、データ処理分野の技術者（当業者）には明らかであろう。
【００３７】
このことは、ＮＶＲＡＭ内に格納されたデータは、各々の書き込みの前に変更されることを意味する。上述されたＮＶＲＡＭマークの使用は、上述のアルゴリズムに、以下のステップを加えることを含む。
６Ａ．ＮＶＲＡＭを｛パターンＰ、データＢ、書き込み０｝と設定する。
７．Ｂ１をＢの上に書き込む。
７Ａ．ＮＶＲＡＭを｛パターンＰ、データＢ、書き込み１｝と設定する。
８．第１の新パリティ、Ｂ´  ｘｏｒ  Ｄを書き込む。
８Ａ．ＮＶＲＡＭを｛パターンＰ、データＢ、書き込み２｝と設定する。
９．第２の新パリティ、Ａ  ｘｏｒ  Ｂ１を書き込む。
９Ａ．ＮＶＲＡＭマークを消去する。
アレイを共有するアダプタ／コントローラが１つより多くある環境においては、ＮＶＲＡＭマークの値は、アダプタ／コントローラのすべてに対して変更されねばならない。
【００３８】
図３を参照すると、本発明の好ましい実施形態による方法のステップのフロー図が示されている。
【００３９】
ステップ２０２においては、マークがＮＶＲＡＭに書き込まれて、データ書き込みのためにパターン・インデックス、ストリップ・インデックス及び書き込みインデックスを格納する。データが、ステップ２０４において書き込まれる。ステップ２０６においては、マークがＮＶＲＡＭに書き込まれて、第１パリティ書き込みのためにパターン・インデックス、ストリップ・インデックス、及び書き込みインデックスを格納する。第１パリティが、ステップ２０８において書き込まれる。非アトミック更新の場合には、これらの書き込みは並行して生じることができる。或いは別の場合には、これらは直列化されなければならず、第２パリティ書き込み（以下で説明する）もまた、直列化されなければならない。
【００４０】
ステップ２１０においては、マークがＮＶＲＡＭに書き込まれて、第２パリティ書き込みのためにパターン・インデックス、ストリップ・インデックス、及び書き込みインデックスを格納する。第２パリティが、ステップ２１２において書き込まれる。ステップ２１４においては、ＮＶＲＡＭが無効化される。
【００４１】
任意の時点で、ディスク損傷なしで、サブシステムの電源が落ちたり、又は、アダプタ／コントローラがリセットされた場合には、パターンは容易に再同期することができる。ディスク損傷があり、そのディスクがリセット時に書き込まれたデータ又はパリティ・ストリップを含んでいる場合は、残っているディスク上の全ストリップは既に同期状態であるため、パターンは再同期することができる。ディスク損傷があり、そのディスクがリセット時に書き込まれたデータ又はパリティ・ストリップを含んでいるディスクと異なる場合には、そのパターンは以下のように再同期することができる。
１．ＮＶＲＡＭが「書き込み０」と示す場合には、その状況は２つのディスク、すなわち、本当に損傷した１つのディスクと、書き込まれているデータ・ストリップを含む１つのディスク、が損傷した状況と同様である。このパターンは多重化冗長性であるため、すべてのデータを再構築して、該パターンを、書き込み開始前の状態に戻すことができる。
２．ＮＶＲＡＭが「書き込み２」と示す場合には、その状況は２つのディスク、すなわち、本当に損傷した１つのディスクと、第２パリティ・ストリップを含む１つのディスク、が損傷した状況と同様である。このパターンは多重化冗長性であるため、すべてのデータを再構築して、割り込まれた書き込みを完了することができる。
３．ＮＶＲＡＭが「書き込み１」と示す場合には、３つの場合がある。
Ａ）損傷したディスクが「書き込み０」中に書き込まれたデータ・ストリップを含む。
このことは、２つのディスク、すなわち、本当に損傷した１つのディスクと、「書き込み１」データを含む１つのディスク、の損傷と同じである。
パターンの冗長性は、全データを再構築して、該パターンを、書き込み開始前の状態に戻すことができることを保証する。
Ｂ）損傷したディスクが、「書き込み２」中に書き込まれるべきであった第２パリティ・ストリップを含む。
このことは、２つのディスク、本当に損傷した１つのディスクと、「書き込み１」データを含む１つのディスク、の損傷と同じである。
パターンの冗長性は、全データを再構築して、割り込まれた書き込みを完了させることができることを保証する。
Ｃ）損傷したディスクは異なるディスクである。
損傷したディスク上のデータ・ストリップは、常に再構築することができ、そのパターンを再同期して、割り込まれた書き込みを完了させることができる。
損傷したディスク上の各々のデータ・ストリップは、２つのパリティ・ストリップを有する。これらのいずれも損傷したディスク上にはない。
これらのパリティ・ストリップの多くて１つが「書き込み０」中に書き込まれたデータ・ストリップと共有されるため、データ・ストリップを再構築する少なくとも１つの方法が常に存在する。
【００４２】
本発明の第１の好ましい実施形態は、種々の読み取りを並行して発行できても、３つの書き込みは、逐次的に発行されねばならない、すなわち、書き込み＃２は書き込み＃１が完了するまでは開始されない、ことを要求する。
【００４３】
本実施形態の１つの欠点は、３つのディスク書き込みが直列化されることであり、これは、アレイに送られる書き込みが、３つのディスク書き込みが並行して発行されるＮＶＳ手法を用いる、等価なアレイに対する書き込みより長い時間がかかることを意味する。
このことは、ＲＡＩＤアレイが高速書き込みキャッシュの後にあり、そのために、少なくとも部分的にホスト応答時間から隔離されている場合には、或る程度軽減することができる。
【００４４】
この欠点を軽減する、付加的な、可能性のある方法は、ステップ８Ａの後で、ホスト書き込みＩ／Ｏに対して首尾よい完了を信号通知することによるものであり、これは、多くの場合、ＲＡＩＤ−５に適用される周知の「遅延パリティ更新」技術の等価物である。
【００４５】
本発明の第２の実施形態においては、アプリケーションが、ＲＡＩＤアレイに対する書き込みがアトミックであるべきとする付加的な特性を要求しない限りは、直列化は不要である。割り込まれた書き込みが、新データと旧データとの間の遷移部分（ｔｒａｎｓｉｔｉｏｎ）で終了することを許容できる場合には、最初の２つの書き込みは、第１のＮＶＲＡＭマークの下に生じ、次いで、１つの書き込みが第２のＮＶＲＡＭマークの下に生じることができる。
【００４６】
例えば、図１のデータＡに対する更新のステップを検討する。
１．全ての読み取りを行い、書き込まれるべき新パリティを計算する
２．Ａ及びＡ  ｘｏｒ  Ｂが更新されていることを示すＮＶＲＡＭマークを確立する
３．Ａ及びＡ  ｘｏｒ  Ｂを並行して書き込む
４．両方の書き込みが完了した場合には、Ａ  ｘｏｒ  Ｃが更新されていることを示すＮＶＲＡＭマークを確立する
５．Ａ  ｘｏｒ  Ｃを書き込む
６．ＮＶＲＡＭマークを消去する
【００４７】
したがって、並行書き込み（ステップ番号３）中において、コントローラのリセット、及び、ディスク損傷が生じる場合には、そのシナリオは、
１．ディスク１が損失する。「Ｂ」、「Ｃ」及び「Ｄ」は残り、「Ｃ」及び「Ａ  ｘ  ｏｒ  Ｃ」を用いて、「Ａ」の古いバージョンを再構築することができる。
２．ディスク２が損失する。「Ｃ」、「Ｄ」及び「Ａ」の半更新バージョンは残り、「Ｄ」及び「Ｂ  ｘｏｒ  Ｄ」を用いて、「Ｂ」を再構築することができる。必要であれば、「Ｃ」及び「Ａ  ｘｏｒ  Ｃ」を用いて、「Ａ」の古いバージョンを再構築することができる。
３．ディスク３が損失する。「Ｂ」、「Ｄ」及び「Ａ」の半更新バージョンは残る。「Ｄ」及び「Ｃ  ｘｏｒ  Ｄ」を用いて、「Ｃ」を再構築することができる。必要であれば、「Ｃ」及び「Ａ  ｘｏｒ  Ｃ」を用いて、「Ａ」の古いバージョンを再構築することができる。
４．ディスク４が損失する。「Ｂ」、「Ｃ」及び「Ａ」の半更新バージョンは残る。「Ｂ」及び「Ｂ  ｘｏｒ  Ｄ」を用いて「Ｄ」を再構築することができる。「Ａ」の古い、又は新しいバージョンは再構築できない。
【００４８】
この直列化の減少は、接近する現行のＲＡＩＤ−５アレイに対して、アレイ書き込み動作における待ち時間（ｌａｔｅｎｃｙ）を減少させるため、望ましいものである。
【００４９】
第２の好ましい実施形態をさらに冗長性をもったアレイに拡張するために、データ書き込みは、第１パリティの更新と並行して行うことができるが、後続するパリティの更新は直列化されねばならない。
【００５０】
しかしながら、３つの逐次的な書き込みを含む第１の好ましい実施形態におけるように、書き込みをアトミックにすることは、割り込まれた書き込みが可読であることを保証しないディスク・ドライブをもつ使用法（ＵＳＥ）にとって望ましいものとなる（例えば、不揮発性ストレージを用いることなくサブ・セクタ書き込みを可能にする４ＫＢのセクタ・サイズをもつドライブ）。
【００５１】
上述の方法は、典型的には、１つ又はそれ以上のプロセッサ（図示せず）上で稼動するソフトウェアにおいて実行され、該ソフトウェアは、磁気又は光学コンピュータ・ディスクといったあらゆる好適なデータ・キャリア（これも図示せず）上で実行されるコンピュータ・プログラム要素として与えられることができることが理解されるであろう。同様に、データ伝送のためのチャネルは、すべての記述によるストレージ媒体、並びに、有線又は無線信号媒体といった信号搬送媒体を含むことができる。
【００５２】
本発明は、コンピュータ・システムと併せて用いるためのコンピュータ・プログラムとして好適に実施することができる。この実施は、例えば、フレキシブル・ディスク、ＣＤ−ＲＯＭ、ＲＯＭ、又はハードディスクのようなコンピュータ可読媒体といった有形媒体上に固定されているか、又は、モデム又は他のインターフェース・デバイスにより、以下に限られるものではないが、光学又はアナログ通信回線を含む有形媒体上で、又は、以下に限られるものではないが、マイクロ波、赤外線又は他の伝送技術を含む無線技術を用いて、コンピュータ・システムに伝送可能な、一連のコンピュータ可読命令を含むことができる。一連のコンピュータ可読命令は、上述した機能のすべて又は一部を具体化する。
【００５３】
当業者であれば、このようなコンピュータ可読命令は、多くのコンピュータ・アーキテクチャ又はオペレーティング・システムと併せて用いるための多数のプログラミング言語により書くことができることを理解するであろう。さらに、このような命令は、以下に限られるものではないが、半導体、磁気、又は光学を含む現在又は将来のあらゆるメモリ技術を用いて格納することができ、又は、以下に限られるものではないが、光学、赤外線、又はマイクロ波を含む現在又は将来のあらゆる通信技術を用いて伝送することができる。このようなコンピュータ・プログラムは、例えば、ソフトウェア・パッケージ、コンピュータ・システムにより予め搭載された、例えば、システムＲＯＭ又は固定のディスク上の、又は、例えば、インターネット又はワールド・ワイド・ウェブのようなネットワーク上のサーバ又は電子掲示板から配布された、印刷又は電子文書を伴う取り外し可能媒体として配布することができる。
【００５４】
上述の実施形態に対する種々の修正は、当業者には明らかであることが理解されるであろう。
【図面の簡単な説明】
【００５５】
【図１】４ディスク・アレイの周知のエンコード方式を示す。
【図２】本発明の好ましい実施形態による装置の構成のブロック概略図を示す。
【図３】本発明の好ましい実施形態による方法のステップを示す。
【図１】
2009514047.tif 000003
【図２】
2009514047.tif 000004
【図３】
2009514047.tif 000005
【国際調査報告】
2009514047.tif 000006
2009514047.tif 000007