プロセッサを有するコンピュータ上で、少なくとも一つの記憶装置によって提供される記憶セット内でペンディングの書き込みを記録する方法であって、前記プロセッサ上で:少なくとも一つの記憶装置上で、前記記憶装置上に記憶されている記憶セットを領域サイズに従って少なくとも二つの領域に配分する領域記述子を生成する段階と;前記記憶セット中のある位置に記憶されるべきデータセットを受領したら:前記データセットの位置を含んでいる前記記憶セット内の領域を同定し;前記領域記述子において前記領域をダーティーとしてマークし;前記記憶セット中の前記位置に前記データセットの記憶を開始する段階と;前記記憶セット中の前記位置に前記データセットを記憶したのちに、前記領域記述子において前記領域をクリーンとしてマークする段階とを実行するよう構成された命令を実行することを含む、方法。それぞれのダーティー領域が、前記記憶セットの記憶装置上の領域の物理的な位置を同定する物理的領域参照方式;および前記記憶セットの論理装置上の領域の論理的な位置を同定する論理的領域参照方式を含む領域参照方式から選択される領域参照方式に従って前記記憶装置中のそれぞれの領域を同定する、請求項1記載の方法。前記記憶セットが、領域からなる少なくとも二つの領域セットを有しており、それぞれの領域セットが前記領域セットの領域を表わす少なくとも一つの領域記述子を有する、請求項1記載の方法。前記記憶セットが、それぞれ更新シーケンスインジケーターを有する少なくとも二つの領域記述子を有しており、前記命令が、前記記憶セット中のある位置にデータセットを記憶したときに:前記領域記述子のうちで最も新しい更新シーケンスインジケーターを有していない古くなった領域記述子を選択する段階と;前記古くなった領域記述子において、前記データセットの前記位置を有する前記領域を、更新されたとマークする段階と;前記更新シーケンスインジケーターを、前記領域記述子のうちで最も新しい更新シーケンスインジケーターに更新する段階とを実行するよう構成されている、請求項1記載の方法。記憶装置上で前記領域記述子を生成する段階が:前記領域記述子のために前記記憶装置上に領域記述子スペースを割り当てる段階を含み;前記命令が、前記領域記述子スペースをダーティー領域で満たしたら、前記領域記述子スペースを拡張するよう構成されている、請求項1記載の方法。少なくとも一つの領域記述子において領域をダーティーとしてマークすることが:前記領域記述子において前記領域がクリーンとマークされているかどうかを判定し;前記領域記述子において前記領域がクリーンとマークされていると判定したら、前記領域をダーティーとマークすることを含む、請求項1記載の方法。少なくとも一つの領域記述子において領域をクリーンとしてマークすることが:前記領域内のある位置にデータセットを記憶することを完了したのちに、前記領域をクリーンと同定し;前記領域記述子においてクリーニングされた領域をクリーンとマークする要求を受領したら、前記領域記述子において少なくとも一つのクリーニングされた領域をクリーンとマークすることを含む、請求項1記載の方法。命令を有するコンピュータ可読媒体であって、前記命令は、少なくとも一つの記憶装置へのアクセスをもつコンピュータのプロセッサ上で実行されたときに、前記コンピュータに、個々のデータセットを有する、前記記憶装置によって記憶されている記憶セットをクリーニングすることを:少なくとも一つの記憶装置から、前記記憶装置上に記憶されている前記記憶セットを領域サイズに従って少なくとも二つの領域に配分する領域記述子を取得する段階と;前記領域記述子においてダーティーとマークされたそれぞれの領域について:前記領域内のデータセットをクリーニングすることを開始する段階と;前記領域内のデータセットをクリーニングすることを完了したら、その領域を前記領域記述子においてクリーンとマークする段階とを実行することによってさせるものである、コンピュータ可読媒体。前記記憶セットが、それぞれ更新シーケンスインジケーターを有する少なくとも二つの領域記述子を有しており、前記記憶セットにおける前記少なくとも一つのダーティーな領域を同定することが:前記領域記述子のうちで最も新しい更新シーケンスインジケーターを有する最も新しい領域記述子を選択し;前記領域記述子に従って前記記憶セットにおける前記少なくとも一つのダーティーな領域を同定することを含む、請求項8記載の方法。それぞれの領域記述子がその領域記述子の領域記述子検証子を有しており;前記ダーティーな領域を同定することが:前記領域記述子の前記領域記述子検証子を検証することを含み;前記命令は、前記領域記述子の前記領域記述子検証子の検証に失敗したとき、前記記憶セットの記憶装置のフルクリーニングを開始するよう構成されている、請求項8記載の方法。この概要は、詳細な説明においてさらに後述される概念のセレクションを簡略化された形で紹介するために設けられている。この概要は、特許請求される主題の鍵となる因子または本質的な特徴を特定することは意図されていないし、特許請求される主題の範囲を限定するために使われることも意図されていない。記憶装置上にデータの関連付けられた諸セットを書き込む際、該書き込み中に、関連付けられたデータセットの間の非一貫性を引き起こす問題が生じることがある。第一の例として、ミラーリングされたデータセットにおいて、ミラーの一つへの書き込み中にエラーが起こりうることがある。たとえば、宇宙線、物理的媒体中の欠陥または読み書きプロセスにおける論理的なエラーに起因する、データの意図しない変化である。結果として、データセットのそれらのミラーは一致しなくなり、データの正しいバージョンを選ぶことが難しいことがある。第二の例として、データセットと検証子の記憶の間の遅延またはその逆のために問題が生じることがある。たとえば、多くの記憶装置は一時に一つの位置たとえば、ハードディスクドライブの書き込みヘッドの下の位置または半導体記憶デバイスにおけるアドレスレジスタによって指定される位置への書き込みをサポートするだけであり、データのシーケンシャルな記憶は、検証子より前にデータセットを書き込むこと、あるいは逆にデータセットより前に検証子を書き込むことに関わる。もう一つの例として、データセットと検証子が異なる記憶装置上に記憶される場合、第一の記憶装置がデータセットを記憶する瞬間を第二の記憶装置がデータセットの検証子を記憶する瞬間と同期させることは難しいことがある。結果として、データセットおよび対応する検証子の記憶は、同期的な仕方ではなく、逐次的な仕方で行なわれる。電力喪失、ハードウェア障害、ソフトウェアクラッシュまたは予期されなかったアレイからの記憶装置の除去など、多くの障害源が記憶プロセスを中断させうる。そのような障害が、データセットの記憶後、検証子の記憶より前の瞬間に生じると、のちに読み込みの際に検証子エラーが生じ、データの正確さに対する信頼を危うくすることがありうる。データが能動的に記憶装置単数または複数によって書き込まれることに加えて、障害は、書き込みバッファ内に記憶されておりすぐにも書き込みするためにスケジューリングされているデータなどの、完了していない他の書き込みを攪乱することもある。これらおよび他のシナリオにおいて、データセットの一貫性は、検証プロセスを通じて検出されうる。それはたとえば、同一のデータセットを比較するまたは検証子を対応するデータと比較することによる。よって、破局的な障害を検出したら、一つまたは複数の記憶装置上のデータは、データを検証し、可能性としては非一貫性を訂正することによって、クリーニングされうる。しかしながら、障害の発生は簡単に検出できるかもしれないがたとえば不正なシャットダウンまたは故障した記憶装置の交換、書き込みの時点で記憶セットのどの部分が書き込まれており、障害によって損なわれている可能性があるかを決定することが可能でないことがある。そのような情報なしでは、記憶セット中の全データセットを検証するたとえばミラーリングされたデータセットの各コピーの全体を比較して非一貫性を検出するおよび記憶セット中の全データセットの検証子を試験することによって、記憶セット全体がクリーニングされる必要があることがある。記憶セット全体のクリーニングは、特に記憶セットの容量のペタバイト領域への成長に鑑み、長い時間がかかることがあり、結果として、たとえ短期間の破局的な障害後であっても長引く回復期間につながることがある。それに、この高価なクリーニングプロセスは記憶セットの完全性を保証するかもしれないが、ボリューム全体のクリーニングプロセスの広がりしばしば長期間書き込まれていないデータセットおよびさらには記憶装置さえ巻き込むは、障害の時点で進行中であったことがありうる比較的少数の書き込みに対して不相応であることがある。本稿では、記憶セットのクリーニングを、障害によって損なわれた可能性があるデータに集中させる技法が提示される。本技法によれば、記憶セット中のある位置に書き込む前に、記憶装置は、同じ不揮発性物理媒体上に、書き込みが行なわれようとしている位置を示す記述子を記憶してもよく、書き込みが完了したのちに該記述子を消去してもよい。このようにして、記憶装置は記憶セットのダーティーな領域を追跡でき、障害から回復したら、記憶セットのダーティーな領域のみのクリーニングを開始しうる。しかしながら、すべての書き込みの不揮発性物理媒体上でのアドレスを記憶およびフラッシュすることおよび物理媒体への書き込み完了を確認したのちに該アドレスを消去およびフラッシュすることは、各データセットを書き込むのに関わるシークおよび書き込みの数を著しくたとえば三倍に増大させ、それにより記憶セットのパフォーマンスたとえばレイテンシーおよびスループットが低下しうることは理解されうる。逆に、記憶装置、パーティションまたはボリュームごとなど、高いレベルでのみダーティー情報を追跡するのでは、クリーニングプロセスを集中させる効率が悪くなりうる。たとえば、ダーティー情報がボリュームごとに追跡される場合、クリーニングプロセスは書き込みの時点で使用中であった特定のボリュームに集中しうるが、ボリュームは何テラバイトものデータを含むこともあり、その結果、たった数メガバイトのデータが書き込み中だった場合でも、長期間のクリーニングプロセスとなってしまう。結果として、本稿に提示される技法によれば、記憶セットは、ある領域サイズの諸領域に分配され、ダーティー情報は、各領域について追跡されうる。たとえば、記憶セットを一ギガバイトの諸領域に配分すれば、ダーティー領域情報の更新の頻度を低下もさせながら、領域の比較的精密な追跡を可能にしうるたとえば、ある領域において書き込みが開始されるとき、その領域はダーティーとしてマークされ、その領域内での長大な逐次的な諸書き込みを通じてそのようにマークされたままでありうる。したがって、領域サイズの選択は、より集中した、より短いクリーニングプロセスにつながるダーティー領域情報における精密さと、ダーティー領域追跡プロセスを実装するパフォーマンスコストの削減との間のトレードオフと見なすことができる。さらなる技法は、ダーティー領域情報に対する更新の頻度をさらに低下させうる。第一の例として、書き込みが要求された領域についてダーティー領域記述子を書き込む前に、ある実施形態は、その領域が記憶媒体上ですでにダーティーとマークされているかどうかを判定してもよく、その領域を冗長にダーティーとしてマークすることを回避してもよい。第二の例として、書き込みが最近完了した領域は、同じ領域に対してすぐにもその後の書き込みがある可能性が高いことがある。したがって、書き込みの完了後にその領域をすぐにクリーンとしてマークするのではなく、クリーンのマーク付けは短期間遅らされてもよい。同じ領域に対するその後の書き込みが受領されたら、その領域をクリーンとマークしたすぐあとにその領域をダーティーとマークしなければならないのではなく、その領域はダーティーとマークされたままに留まりうる。一つのそのような実施形態では、そのような領域をダーティーまたはクリーンとしてマークするときを決定するために、ダーティー領域記述子の揮発性メモリ表現が生成され、使用されてもよい。たとえば、このメモリ内表現は、各領域への最後の書き込み要求の時刻を記録してもよく、ある定義された期間にわたって書き込まれなかった領域があればそれをクリーンとマークしてもよい。さらに、このメモリ内表現は、クリーン領域のバッチ記録を可能にしてもよく、ダーティー領域追跡プロセスに関わる記憶媒体書き込みの量をさらに減らす。ダーティー領域の作業セットのメモリ内追跡のこれらおよびその他の使用は、クリーニングプロセスの精密さを著しく低下させることなく、記憶装置へのアクセスの数を、よって不揮発性ダーティー領域追跡の実行コストを減らしうる。これらおよびその他の技法は、記憶セットの障害からの回復の際に、クリーニングプロセスを著しく長引かせることなく、ダーティー領域追跡を実装する実行コストをさらに低下させうる。上記および関係する目的の達成に向け、以下の記述および付属の図面はある種の例示的な側面および実装を記述する。これらは、一つまたは複数の側面が用いられうるさまざまな仕方のほんのいくつかを示す。本開示の他の側面、利点および新規な特徴は、付属の図面との関連で考慮されるとき、以下の詳細な記述から明白となるであろう。特許請求される主題についてここで図面を参照して述べる。図面を通じて、同様の要素を指すために同様の参照符号が使われる。以下の記述では、説明の目的で、特許請求される主題の十全な理解を与えるために、数多くの個別的詳細が記述される。しかしながら、特許請求される主題がそうした個別的詳細なしでも実施されうることは明白であろう。他方、特許請求される主題の記述を容易にするために、構造および装置がブロック図の形で示される。A.序コンピューティングの分野において、多くのシナリオは、一つまたは複数の不揮発性記憶装置たとえば円盤ベースの磁気および/または光ハードディスクドライブ、半導体記憶デバイスおよび不揮発性メモリ回路上に記憶セットをなすデータを保存することに関わる。語サイズ、アドレッシング方法、記憶装置の記憶スペースの一つまたは複数のパーティションへの分割および記憶装置内の割り当てられたスペースをコンピューティング環境内の一つまたは複数のボリュームとして露出させることなど、データ記憶の多くの詳細は変わりうる。さらに、記憶装置は、記憶セットを提供するために、独立して、またはゆるやかな協働をもって動作しうる。たとえば、RAID0方式に従って構成されたアレイでは、記憶セットは単に、それぞれが他のディスクとは独立して動作しうる各記憶装置によって提供される容量から総合されてもよい。あるいはまた、記憶装置はさまざまな度合いの緊密な協調を通じてさまざまな機能を提供するよう構成されてもよい。たとえば、RAID1方式に従って構成されたアレイでは、一組の記憶装置はそれぞれ記憶セット全体の同一のコピーを記憶してもよい。たとえば、一テラバイトの記憶セットが四つの一テラバイト記憶装置上で四つの同一のコピーとして記憶されてもよい。それら四つの記憶装置は、同期を維持するため、記憶セットを変更するいかなる要求も四つすべての記憶装置に等しく適用されることを保証するよう協働してもよい。この種のミラーされたアーカイブは改善されたアクセスレートを呈しうる。たとえば、異なるプロセスが異なる記憶装置を通じてその記憶セットにアクセスしうるので、潜在的には、その記憶セットへのアクセスレートを、どの単独の装置によって達成可能でありうるよりも四倍にしうる。さらに、この型のアレイは堅牢な耐久性を実証する。一つまたは複数のハードディスクドライブがたとえばデータ破損、損傷または喪失のため障害を起こす場合、記憶セットはそれでも他のハードディスクドライブを通じてアクセス可能であり、少なくとも一つの他のハードディスクドライブが有効かつアクセス可能に留まっている限り、無傷のままである。しかしながら、これらの特徴の利点は、RAID1アレイでは、かなりの容量の損失によって相殺されるたとえば、四テラバイトのハードディスクドライブスペースを一テラバイトのデータを記憶するために使う。他の記憶方式は、それよりは低い容量低減でこうしたセキュリティおよびパフォーマンス特徴のいくつかを提供しうるたとえば、RAID4方式では、スペースsのn個のドライブのセットが一つを除いた全ハードディスクドライブの記憶容量をフルに現わし、その一つはパリティ情報を記憶するためにリザーブされ、アレイ内のどの一つのハードディスクドライブの障害からも回復できる。これらおよび他のシナリオにおいて、データセットはさまざまな装置およびプロセスによって記憶セットに記憶されうる。しかしながら、記憶セットの使用中に、データの記憶を損ないうる多くの形の障害が起こりうる。たとえば、さまざまなプロセスのための記憶セットへの書き込みがデータセットにアクセスしている間に、当該書き込みプロセスにおいて、記憶セット管理プロセスにおいて、ソフトウェアのためのデバイスドライバにおいてまたはオペレーティングシステムにおいて、ソフトウェア障害が起こることがある;コンピュータは記憶装置との連絡を失うことがあるたとえば、記憶装置は接続を外されることがあり、あるいはコンピュータと記憶装置を接続する有線または無線のネットワークが障害を起こすことがある;あるいは記憶装置はハードウェア障害を経験することがあるたとえばハードディスクドライブにおけるヘッドクラッシュまたは電力中断。これらおよび他の形の障害は突然、警告なしに起こることがあり、記憶セットにデータを書き込むプロセスを中断することがある。一つまたは複数の書き込みの間の記憶セットの障害の場合、いくつかの型の障害は回復可能でありうるか、結果として生ずるデータの損失が取るに足りないものであることがある。たとえば、障害はデータが記憶セットに書き込まれたあとまもなく起こることがあり、それは回復可能である;再生成できるまたは貴重ではないデータの喪失を引き起こすことがある;または比較的大規模なデータセットにおける少量のデータの喪失、たとえば非常に大きな電子メールメッセージアーカイブにおける少数の電子メールメッセージの喪失を引き起こすことがある。しかしながら、他の型の障害は著しい問題を呈することがある。特に、記憶セットに書き込まれるデータの二つ以上のセットの間に何らかの関連づけが存在することがあり、第一のデータセットを書き込んでいる間に生じる障害は、関連付けられたデータセットにおける非一貫性につながることがある。そのような非一貫性は、障害の時点で書き込まれつつあったデータセットばかりでなく、関連付けられたデータセットの完全性をも損なうことがある。実際、いくつかのシナリオでは、書き込みの完全な失敗および書き込まれるべきデータの喪失は、記憶セットの不完全な書き込みよりも生じる問題が少ないことがある。第一の例として、ミラーされたデータセットの第一のコピーの更新の際に障害が起こる場合、このコピーと別のコピーとの間の検出される非一貫性は、両方のコピーの完全性に疑義を生じさせることがある。さらに、両方のコピーが障害の時点に更新されつつあってその後非一貫性が検出される場合には、どちらのコピーが障害前に書き込みを成功裏に完了させ、どちらのコピーがそうでなかったかを判別するのが難しいことがある。第二の例として、データセットとそのチェックサムとの間で非一貫性が検出される場合、データセットまたはチェックサムのどちらが誤っているかを判別するのが難しいことがある。さらに、チェックサムがいくつかのデータセットから計算されている場合、一つのデータセットへの書き込みを完了しないことは、正しくないチェックサムにつながることがあり、そのデータセットおよびチェックサムの完全性のみならず、そのチェックサムによって代表される他のデータセットすべての信頼性をも低下させることがある。これらおよびその他のシナリオにおいて、データセットへの書き込みを完了しないことは、不完全に書き込まれたデータセットにかする程度に関係しているだけの他のデータセットさえも含む、記憶セット中の広い範囲のデータの信頼性を損なう非一貫性を生じうる。図1および図2は、記憶セットへの書き込み中の障害の帰結を示す二つの異なるシナリオを示している。図1の例示的なシナリオ100では、さまざまなデータセット104たとえば、ビット、バイト、語、セクタ、ファイルまたはレコードを含む記憶セット102が記憶装置106のセットに記憶される。ここで、データセット104の間にはミラーリング関係が存在する。具体的には、この例示的なシナリオ100における記憶装置106は、RAID1方式のように、データセット104の同一コピーを記憶するよう構成される。ミラーリングは物理的な仕方で、たとえば、記憶装置106の同一サイズのセット上の各物理的位置に同じデータを書き込んで、実行されてもよいし、あるいは論理的な仕方で、たとえば、記憶セット102のある論理アドレスに対応する各記憶装置106の物理的位置にデータを書き込んで、実行されてもよい。よって、記憶セット102におけるある特定の位置108における特定のデータセット104に書き込み110が要求される第一の時点112において、記憶装置106はそれぞれ要求された位置108への書き込み110を実行してもよい。しかしながら、この例示的なシナリオ100においてさらに示されるように、記憶装置106の不完全な同期のために問題が生じることがある。たとえば、各記憶装置106への書き込み110が、異なる記憶装置106によって、異なる時刻に開始され、実行され、完了されることがある。そのようなタイミング差は、ハードウェアの相違のために生じることがあるたとえば、第一の記憶装置106はデータセット104をただちに物理媒体にコミットしうるが、第二の記憶装置106はデータセット104をまず書き込みバッファに記憶することがあるが、同一設備の記憶装置でさえ生じることがあるたとえば、異なる記憶装置106の入出力待ち行列における相違または書き込み要求の最初における異なるハードディスクドライブの書き込みヘッドの初期セクタ位置の相違。結果として、第二の時点114において、記憶装置106のうちの二つへの書き込み110は完了しているが、第三の記憶装置106は書き込み110を完了させようと継続していることがありうる実は記憶セット102にデータセット104をコミットすることを開始していないこともありうる。記憶装置106の同期のそのような喪失は、たとえば第一の記憶装置106による書き込み110の完了後かつ第二の記憶装置106による同じ書き込み110の完了前に障害が発生する場合、著しい問題を生ずることがある。たとえば、第三の書き込み110が記憶装置106に対して実行されつつある第三の時点116において、すべての記憶装置106への書き込み110を中断する障害118が生じる。障害118が一時的たとえば瞬間的な電源喪失、さらには短命であったとしても、障害118は、記憶装置106におけるタイミング差のため、非一貫性122を生じることがあるたとえば、書き込み110は第一および第二の記憶装置106上では障害118前に完了していたが、第三の記憶装置106上では完了していなかったことがありうる。障害118から回復する際に、同一であることが期待されるデータセット104の間で非一貫性122を同定するとき、どのデータセット108が正確であるかを判定するのが難しいことがありうる。この例示的なシナリオ100において、記憶装置106の過半数majorityに記憶されているデータセット108のバージョンを選ぶことが論理的であることがある。しかしながら、この例示的なシナリオ100の軽微な変形では、そのような選択がそれほど論理的ではなくなることがある。たとえば、非一貫性122は、偶数個の記憶装置106に関わるシナリオにおいて生じることがあり、多数決選択が利用可能でないことがある。図1の例示的なシナリオ100のようなシナリオでは、非一貫性122は、最近書き込まれたデータセット110のみにあてはまることがある。しかしながら、他のシナリオでは、同様の障害118は、長い間書き込まれていない、あるいはアクセスさえされていないデータセット104、さらには障害118の時点で使用されていなかった他の記憶装置106に記憶されているものの信頼性をも危うくすることがある。図2の例示的なシナリオ200では、四つの記憶装置106のセットがRAID4方式の仕方で構成されており、記憶セット102は三つの記憶装置106を横断して割り当てられ、第四の記憶装置106は、最初の三つの記憶装置106に記憶されているさまざまなデータセット104に対応する検証子202のセットを記憶するよう構成されている。検証子202は、他の記憶装置106のそれぞれの対応する位置に記憶されているビットを一緒にXORすることによって計算されるパリティビットのようなチェックサムであってもよい。たとえば、各記憶装置106の記憶セット102内のある特定の物理的または論理的な位置に記憶されている一メガバイトのデータセット104について、該一メガバイトのデータセット104のそれぞれが合わせてXORされて、一メガバイトのパリティデータを生成し、それが第四の記憶装置106に記憶されてもよい。この相互運用により、記憶装置106は、データ損失のいくつかの形を通じて、記憶セット102の完全性を維持できるようになりうる。たとえば、最初の三つの記憶装置106のうちのいずれか一つが失われる場合、失われた記憶装置106に記憶されていた記憶セット120の部分は、他の二つの記憶装置106に記憶されているデータと、第四の記憶装置106に記憶されている対応するパリティデータをXORすることによって再構成されてもよい。第四の記憶装置106が失われた場合には、パリティデータは単に、最初の三つの記憶装置に記憶されている対応するデータセット104から代わりの記憶装置106上に再生成されてもよい。このようにして、図2の例示的なシナリオ200に示したような記憶装置106の相互運用は、いずれか一つの記憶装置106が突然、恒久的に失われる場合においても故障耐性を可能にする。しかしながら、この例示的なシナリオ200における記憶装置106も、図1の例示的なシナリオ100において提示された不完全な同期を示す。たとえば、第一の時点204において、第二の記憶装置106に記憶されているデータセット104に対して書き込み110が開始されることがあり、この書き込みは第四の記憶装置106に記憶されている対応するデータセット104について検証子202を更新することに関わる。しかしながら、書き込み110は同時に完了しないことがある。たとえば、第二の時点206においては、第二の記憶装置106への書き込み110は完了していることがあるが、第四の記憶装置106上の検証子202の書き込み110は完了してないことがある。さらに、後者の書き込み110が完了する前に障害118が生じることがあり、第四の記憶装置106が正しくない検証子118を保持することがある。たとえ限定的で短期間だったとしても、この障害118は、第四の記憶装置106に不完全に書き込まれた検証子116および最近だが完全に書き込まれた第二の記憶装置106に記憶されたデータセット104のみならず、やはり検証子122によって代表されていている第一および第三の記憶装置106に記憶されているデータセット104をも危うくすることがある。たとえば、第三の時点208において、第三の記憶装置106が障害118を経験することがある。第四の時点210において、第一および第二の記憶装置106上の対応するデータセット104および第四の記憶装置106上の対応する検証子202を合わせてXORすることによって代替記憶装置118上にデータセット104を再構成するよう回復プロセスが開始されうる。しかしながら、第二の時点206における第四の記憶装置106への書き込み110の失敗118によって引き起こされた非一貫性122のため、XOR演算は、第三の記憶装置106上の正しくないデータ212の再構成につながりうる。この正しくないデータ212は、第三の記憶装置106上のこのデータセット104が書き込み110の障害118に関わっていなかったとしても、このデータセットが長期間書き込まれていなかったとしても、また第三の記憶装置106が第四の記憶装置106への書き込み110の障害118の際に使用中でなかったまたさらにはアクセス可能でさえなかったとしても、生成されうる。このように、書き込み202の単一の障害が、記憶セット102の故障耐性能力を損なうことがありうる。すなわち、RAID4方式の実装にもかかわらず、記憶セット102は単一の記憶装置106の障害118から回復する能力を失う。他のシナリオではさらに深刻な帰結が生じることがありうる。たとえば、失敗した書き込み110がマスターブートレコードを含むデータセット104に対して行なわれていた場合、可能性としては記憶セット106全体を含む、記憶セット106内のボリューム全体が損なわれ、アクセス不能となることがありうる。書き込み110の失敗118の潜在的に破局的な帰結のため、結果として生じる非一貫性122を検出し、訂正するための諸技法が利用されてもよい。第一のそのような技法として、記憶セット102中の非一貫性を検出するために、さまざまな型のクリーニングプロセスが利用されてもよい。たとえば、不一致を検出するためにデータセット104が検証子202と比較されてもよいし、あるいは同一であることが期待されるデータセット104のコピーどうしが比較されてもよい。他のデータセット104または検証子202と関連付けられていないデータセット104さえ、データ破損のような非一貫性について検査されることがあり、時として自動的に修復されることがある。しかしながら、記憶セット102全体のスキャンは、多くのシナリオにおいて、非効率的および/または禁止的でありうる。たとえば、スキャンは、記憶セット102のサイズのため、記憶セット102のスループットのためたとえば地理的に分散された記憶セット102は比較的低スループットのネットワーク接続を通じてアクセス可能であることがある、および/またはスキャンの複雑さのためたとえば、洗練されたパリティチェックの数学を集中的に使うmathintensive計算、長引くことがありうる。スキャン中、記憶セット102は可能性としては非一貫性があり、図2の例示的なシナリオ200に描かれているような記憶装置106の障害118の場合に脆弱であるままとなる。正しくないデータを与える可能性のため、記憶セット102にアクセスすることをプロセスに許容するのは賢明でないことがありうる。したがって、そのようなプロセスは、スキャンが完了するまであるいは少なくとも、当該プロセスによって利用されるデータセット104がクリーニング済みとなるまでブロックされる必要があることがある。その結果、サービスの中断またはダウンタイムが生じる。さらに、記憶セット102全体のこの長引く、コスト高なスキャンは、ほんの一つの記憶装置106の潜在的には短期間の障害118によってトリガーされることがあり、障害118の際のペンディングの書き込み110の数に対して不相応であることがありうる。実際、たとえ障害118の時点で進行中の書き込み110がなかったとしても、破局的な結果をもちうる非一貫性122の可能性のため、ペンディングの書き込み110の数が判別できなければ、記憶セット102全体のスキャンを呼び出す必要があることがある。これらの考察に鑑み、ハードウェアおよび/またはソフトウェアの突然の障害118に備えて、記憶セット102の通常の動作中に、ペンディングの書き込み110についての情報を記憶する機構を提供することが望ましいことがありうる。この情報は、障害が起こった場合に非一貫性122を呈しうる記憶セット102のダーティーな状態についての情報として記録されてもよい。さらに、電力障害の場合にその情報を保持するために、その情報を不揮発性メモリに記録することが望ましいことがありうる。この追跡は、障害118後に呼び出されるクリーニングプロセスであって、該クリーニングプロセスが、障害118の時点においてペンディングの書き込み110に関わっていた記憶セット102の領域のみをスキャンすることに限定されるようなものを可能にしうる。図3は、一組の記憶装置106によって提供される記憶セット102のための、不揮発性メモリにおいてダーティー状態を記録する二つの技法を提示している。第一の例示的な技法300として、記憶セット102に記憶されるデータの各ビットについて、そのビットへのペンディングの書き込み202を示すダーティー指示子302が記憶されてもよい。ビットについてのダーティー指示子302は、ビットへの書き込み202を開始する前にセットされてもよく、書き込み202が完了した後にクリアされてもよい。記憶セット102をクリーニングするために、ビットのダーティー指示子302が検査されてもよく、セットされているダーティー指示子302があればそれが関連付けられたビットのクリーニングを開始しうるたとえば、非一貫性のあるビットの上に、異なる記憶装置106に記憶されているデータセット102の同一のコピーから対応するビットをコピーすることによる。この第一の例示的な技法300は、いくつかの利点を呈しうる。たとえば、不揮発性記憶媒体におけるペンディングの書き込み104についての情報の記憶を達成しうるし、少量の追加的なハードウェアまたはソフトウェアに関わる比較的単純なクリーニングプロセスを伴いうるし、他の検出方法たとえばいくつかの記憶装置106から取得された大きなデータセット104に対してXOR演算を実行することに比べてクリーニングの計算量を低減しうる。しかしながら、この第一の例示的な技法300も多くの不都合な点を呈する。第一の例として、ダーティー指示子302は記憶セット102の記憶スペースの半分を費消してしまう。第二の例として、スキャンプロセスは相変わらず記憶セット102全体のスキャンに関わり、たとえスキャン検出の相対的な単純さのため、必要とされる計算パワーが低減されるとしても、記憶セット102全体へのアクセスはそれでも長引くクリーニングプロセスにつながりうる。さらに、記憶セット102へのアクセスレートがクリーニングプロセスにおけるボトルネックである場合には、クリーニングプロセスの継続時間は変わらないことがありうる。第三の例として、ダーティー指示子302が記憶装置106の追跡されるビットとの物理的な近傍にたとえば記憶装置106の物理媒体上の各ビットまたはバイトに後続して記憶されている場合、ビットの破損につながる障害108はダーティー指示子302の破損にもつながることがある。あるいはまた、ダーティー指示子302が同じ記憶装置106の異なる領域に記憶される場合、いかなる単一のビットの書き込み202も、記憶装置106の三つの異なる部分への三つのアクセスに関わる――たとえば、ビットをダーティーとしてマークするための、ダーティー指示子302を記憶する領域への第一のシークおよびアクセス;書き込み202を実行するための、ビットを記憶する領域への第二のシークおよびアクセス;およびビットをクリーンとしてマークするためのダーティー指示子302を記憶している領域への第三のシークおよびアクセスである。これら複数のアクセスは、記憶装置106のパフォーマンスたとえばレイテンシーおよびスループットを大幅に低下させることがありうる。さらに、ダーティービット追跡のこの変形によって引き起こされる記憶装置106の組織的な使用に関わる増大した物理的な摩滅は、意図せずして、記憶装置104の物理的障害118を早めることになりかねない。図3は、一組の記憶装置106によって提供される記憶セットstorageset102についてのダーティー情報を追跡するための第二の例示的な技法304をも描いている。この第二の例示的な技法304は、記憶セット102のそれぞれのバイトについてのダーティー指示子が記録されうる別個の不揮発性メモリ306、たとえば別個のバッテリー308を有する半導体記憶デバイスを含めることに関わる。たとえば、それぞれのデータセット104の書き込み202の要求はモニタリングされ、この別個の不揮発性メモリ306に記録され、書き込み202が完了したときにクリアされてもよい。この第二の例示的な技法304は、一般的に、また図3に示した第一の例示的な技法304に対して、いくつかの利点を呈する。第一の例として、別個の不揮発性メモリ306のアクセスは記憶セット102への書き込み202の実行と同時並行して起こりうるので、記憶装置106のパフォーマンスたとえばレイテンシーおよびスループットは、この技法を含めることによって減退しないことがありうる。第二の例として、ダーティー指示子306をメモリの別個の部分に記憶することは、記憶セット102の容量を減らすことを回避しうる。第三の例として、ダーティー指示子302の記憶を記憶装置106の物理的な媒体から分離することは、記憶セット102の障害118の場合にダーティー指示子302を保存しうる。たとえば、記憶装置106の一部における物理的な欠陥が、欠陥のある部分に記憶されたバイトについてのダーティー指示子302の記憶や取り出しに影響しないことがあり、電力障害の場合、別個の不揮発性メモリ306はバッテリー308を使って動作し続けることができる。第四の例として、別個の不揮発性メモリ306においてダーティーと示されているバイトのみに集中することによって、クリーニングプロセスが、かなり長引かされることができる。しかしながら、この第二の例示的な技法304も独特の不都合な点を呈する。第一の例として、別個のハードウェアを含めることは、記憶セット102のコストおよび複雑さを有意に高める。第二の例として、記憶装置106の障害の可能性に加えて、記憶セット102の管理は、別個の不揮発性メモリ306の障害にも対処しなければならないことがある。さらに、別個の不揮発性メモリ306は記憶セット102に記憶されていないので、記憶セット102の冗長性および故障耐性を増進するための機構には含まれず、別個の不揮発性メモリ306の単一の障害が記憶セット102全体についてのダーティー指示子302の喪失につながりうる。第三の例として、記憶セット102のそれぞれのバイトについてのダーティー指示子302の追跡は、このタスクを満たすために高いスループットおよび大きな容量を提供しなければならないことがありうる別個の不揮発性メモリ306のアクセスの数の多さおよびレートの高さにつながりうる。実際、別個の不揮発性メモリ306は、記憶セット102中の最高の記憶装置106についてのみならず、別個の不揮発性メモリ306によってサービスされる全記憶装置106の活動の組み合わされたレートについて書き込み活動を記録するための十分なスループットを提供しなければならないことがありうる。第四の例として、別個の不揮発性メモリ306が記憶装置106と統合されない場合たとえば、RAIDコントローラにおいて実装される場合、ダーティー指示子302は、記憶装置106ほどポータブルportableではないことがありうる。たとえば、RAIDコントローラの無関係な障害の場合、記憶装置106は異なるRAIDコントローラに再配置され、該異なるRAIDコントローラによってアクセスされてもよいが、ダーティー指示子302は、フルに動作している障害を起こしたRAIDコントローラの別個の不揮発性メモリ306内に留まることがありうる。実際、別個のRAIDコントローラ中に挿入されているときは、ユーザーにとって、RAIDコントローラの障害に関わっていなかった記憶装置106がなぜ非一貫でありえ、よってクリーニングされなければならないことがありうるのか、はっきりしないことがありうる。これらおよびその他の不都合な点は、記憶セット102への書き込み202の状態を追跡することによって障害118からの記憶セット102の回復を容易にする、図3のものに似た多くの技法によって示されることがある。B.提示される技法本稿に提示されるのは、故障耐性があり、高性能で、コスト効率のよい仕方で高速なクリーニングプロセスを可能にしうる、一組の記憶装置106によって提供される記憶セット102への書き込み202の状態を追跡するための技法である。これらの技法によれば、記憶セット102は、特定の領域サイズの諸領域たとえば一ギガバイトの領域に配分されてもよく、各領域内の一つまたは複数の位置108への書き込み110のペンディング状態を記録するために、領域記述子が生成されてもよい。領域記述子は、領域が位置しているのと同じ記憶装置106上に、または記憶セット102の異なる記憶装置106上に記憶されていてもよい。特定の位置108への書き込み110の要求が受領されると、本技法のある実施形態は、まず、位置108を含んでいる領域を同定してもよく、次いで、位置108を含んでいる領域の領域指示子がすでにダーティーとマークされているかどうかを判別してもよい。すでにダーティーとマークされていなければ、本実施形態は、まず、その領域をダーティーとマークするようその領域指示子を更新してもよい。だが、すでにダーティーとマークされていたら、本実施形態は、領域指示子を更新する必要なく書き込み110を進めてもよい。書き込み110が完了したのち、本実施形態は、その領域の領域指示子をクリーンとしてマークしてもよい。特に、本実施形態は、すぐにその領域をクリーンとして更新しないよう構成されていてもよく、そうする前に短期間待ってもよい。同じ領域に対する書き込み110同じ位置108の上書きまたはシーケンシャルに後続するデータセット104もしくは他の仕方で近くのデータセット104への書き込み110のいずれであれのその後の要求が最初の書き込み110のすぐあとに続く場合に備えてである。この遅延は、領域指示子のクリーンへの書き換えのすぐあとに領域指示子をダーティーに書き換えることを避けることができ、よって記憶装置106へのアクセスを節約し、記憶装置106のパフォーマンスおよび寿命を向上させることができる。図4は、本稿で提示される技法に基づく二つの記憶装置106によって提供される記憶装置102へのペンディングしている書き込み110の追跡を現わす例示的なシナリオの図解を示している。ここで、記憶装置106は協調して、記憶セット102の同一のコピーを記憶するたとえば、RAID1方式に基づく記憶セット102のミラーリング。この例示的なシナリオ400において、本技法によれば、記憶装置106によって提供される記憶セット102はある領域サイズの領域402たとえば、一ギガバイトの領域に配分される。各領域402は、記憶セット102内の位置108のあるセットたとえばある範囲のアドレス内に記憶されるデータセット104を含んでいる。各記憶装置106上で、領域記述部404が生成されてもよい。ここで、領域402は、その領域402をなすデータセット104に対して実行される書き込み110のペンディングまたは完了状態に従ってダーティーまたはクリーンとマークされてもよい。たとえば、第一の時点408では、記憶セット102内の第一の位置108に対して第一の書き込み110が要求され、記憶装置106は、まず、第一の位置108を含んでいる領域402を同定し、次いで領域記述子404においてその領域402をダーティーとマークすることによって、第一の書き込み110の実行を開始する。領域402をダーティーとマークしたら、記憶装置106は次いで記憶セット102内の位置108への第一の書き込み110を開始する。第二の時点410において、第一の記憶装置106は第一の書き込みを完了していることがありうるが、まだ領域記述子404において領域402をクリーンとマークしていなくてもよい。しかしながら、記憶装置106の不完全な同期のため、第二の時点410において、第二の記憶装置106がまだ第一の書き込み110を完了していないことがありうる。図4の例示的なシナリオにおいてさらに示されるように、第三の時点412において、記憶セット102内の異なる位置108に対して第二の書き込み110が要求されてもよい。したがって、記憶装置106は第二の書き込み110の位置106に関連付けられた領域402を同定し、この位置106も第一の領域402内であることを判別する。さらに、第一の領域402はすでに領域記述子404においてダーティーとマークされているので、記憶装置106は領域記述子404を冗長に更新することを控える。次いで、記憶装置106は書き込み110の実行を開始し、第二の記憶装置106は最終的には書き込み110を完了し、次いで可能性としては、第一の領域402へのさらなる書き込み110が要求されない短い遅延ののちに領域記述子404を更新して第一の領域402をクリーンとマークする。しかしながら、第一の記憶装置106によって実行された書き込み110は障害118たとえば、一時的な切断、ソフトウェアクラッシュまたは電力障害によって中断される。第四の時点414では、第一の記憶装置106は再びアクセス可能になり、障害118によって中断され、訂正されなければ記憶セット102中の潜在的には破局的な非一貫性122たとえば、記憶装置106上に記憶された記憶セット102の同一の諸コピーの乖離を呈しうる書き込み110の訂正を保証するよう、第一の記憶装置106をクリーニング416するタスクが開始される。しかしながら、データセット104のすべてを第二の記憶装置106の対応するデータセット104と比較するのではなく、クリーニング416は、領域記述子404を利用してもよく、ダーティーとマークされた領域402のみをクリーニングしてもよい。このように、第四の時点414においては、第一の記憶装置106の領域記述子404において第一の領域402のみがダーティーとマークされているので、クリーニング416は第一の領域402のデータセット102を第二の記憶装置106の対応するデータセット416と比較してもよく、非一貫性を見出したら、第一の記憶装置106上の正しくないデータセット104上にデータセット104をコピーしてもよい。このようにして、図4の例示的なシナリオ400に一例が描かれている本稿に提示される技法は、障害118後の記憶装置106のクリーニング416を可能にしうる。さらに、これらの技法は、図3に示したものを含め他の技法と比べて有利な仕方でこのクリーニング416を達成する。第一の例示的な例として、第一の記憶装置106のクリーニング416は、クラッシュ118の時点で少なくとも一回の書き込み110が最近発生していた領域402の部分集合に記憶されているデータセット104に限定される。たとえば、第二の領域402はしばらくの間書き込み110を経験していないので、第二の領域402はクリーニング416に含められない。第二の例示的な利点として、一組の領域402を含む領域406についてのダーティーおよびクリーン情報のマーク406ならびに書き込み110後にそのような領域402を遅れてクリーンとマークすることは、ダーティー領域の追跡によって引き起こされるパフォーマンス損失を著しく軽減しうる。たとえば、第一の書き込み110後に短期間にわたって第一の領域402のダーティーとのマーク付け406をそのままにしておくことにより、記憶装置106は、同じ領域402内の別の位置106への第二の書き込み110を受け取った際に再びダーティーとマークするだけのために領域402をダーティーとマークすること406を省略できる。それにより、領域記述子404への各記憶装置106によるアクセスが三回から一回に低減される。この効率性の利得は、ダーティー領域情報が位置108ごとに追跡されたり、あるいは記憶装置106が各書き込み110に続いて領域記述子404をすぐに更新したりしたとしたらたとえば図3の第一の例示的な技法300に示されるように、達成し得なかったものである。第三の例示的な利点として、単独位置108ではなく領域406についての領域記述子404の記憶は、記憶装置106の利用可能な容量を著しく縮小することはないこれは、記憶装置106の全容量の50が利用可能な容量のダーティーまたはクリーンを追跡するために使われる図3の第一の例示的な技法300とは対照的である。第四の例示的な利点として、ダーティー領域の追跡は、追加的なハードウェアなしで達成され、よって、図3の第二の例示的な技法304と比べ、コスト、複雑さ、電力消費および追跡技法の障害の機会を低減する。これらおよびその他の例示的な利点は、本稿に提示される技法に基づく、記憶セット102を提供する記憶装置106のためのダーティー領域情報の追跡を通じて達成可能でありうる。C.例示的実施形態図5は、記憶セット104へのペンディングの書き込みを記録する例示的な方法500として描かれている、これらの技法の第一の例示的な実施形態の図解を示している。例示的な方法500は、たとえば装置のメモリコンポーネントたとえば、メモリ回路、ハードディスクドライブの円盤、半導体メモリコンポーネントまたは磁気もしくは光ディスクに記憶された命令のセットであって、装置のプロセッサによって実行されたときに該装置に本稿に提示される技法を実行させるものとして実装されてもよい。例示的な方法500は、502において開始され、プロセッサ上で命令を実行する504ことに関わる。具体的には、前記命令は、少なくとも一つの記憶装置106上で、該記憶装置106上に記憶される記憶セット102を、ある領域サイズに従って少なくとも二つの領域402に配分して領域記述子404を生成する506よう構成されている。前記命令はまた、記憶セット102中の位置108に記憶されるべきデータセット104を受領508したら、データセット102の位置108を含んでいる記憶セット102内の領域402を同定し510;領域記述子404においてその領域402をダーティーとしてマークし512;記憶セット102中の位置108におけるデータセット104の記憶を開始する514ようにも構成される。前記命令はまた、記憶セット102中の位置108にデータセット104を記憶した後、領域記述子404において領域402をクリーンとしてマークする516ようにも構成される。このようにして、前記命令は、本稿に提示される技法に基づく、記憶セット102内でペンディングの書き込み110の記録を達成し、よって例示的な方法500は518において終了する。図6は、プロセッサを有するコンピュータにアクセス可能な少なくとも一つの記憶装置106によって記憶される記憶セット102をクリーニングする416例示的な方法600として描かれている、これらの技法の第二の例示的な実施形態の図解を示している。例示的な方法600は、たとえば装置のメモリコンポーネントたとえば、メモリ回路、ハードディスクドライブの円盤、半導体メモリコンポーネントまたは磁気もしくは光ディスクに記憶された命令のセットであって、装置のプロセッサによって実行されたときに該装置に本稿に提示される技法を実行させるものとして実装されてもよい。例示的な方法600は、602において開始され、プロセッサ上で命令を実行する604ことに関わる。具体的には、前記命令は、少なくとも一つの記憶装置106から、該記憶装置106上に記憶される記憶セット102をある領域サイズに従って少なくとも二つの領域402に配分する領域記述子404を取得する606よう構成されている。前記命令はまた、領域記述子404においてダーティーとマークされているそれぞれの領域402について608、それらの領域402内のデータセット104のクリーニング416を開始し、領域402内のデータセット104のクリーニングを完了したら、領域記述子404においてその領域402をクリーンとマークするようにも構成されている。このようにして、前記命令は、本稿に提示される技法に基づく、障害によって中断された書き込み110によって引き起こされた非一貫性122を訂正することによって記憶セット102のクリーニングを達成し、よって例示的な方法600は518において終了する。図7は、本稿に提示される技法を適用するよう構成されたプロセッサ実行可能命令702を有する例示的なコンピュータ可読媒体700として示される、これらの技法の第三の例示的な実施形態を提示している。そのようなコンピュータ可読媒体はたとえば、メモリ半導体たとえば、静的ランダムアクセスメモリSRAM、動的ランダムアクセスメモリDRAMおよび/または同期動的ランダムアクセスメモリSDRAM技術を利用した半導体、ハードディスクドライブの円盤、フラッシュメモリデバイスまたは磁気もしくは光ディスクたとえばCDR、DVDRまたはフロッピーディスクのような有体なデバイスに関わるコンピュータ可読記憶媒体を含んでいてもよく、装置710のプロセッサ712によって実行されたときに該装置710に本稿に提示される技法を実装させるコンピュータ可読命令のセットをエンコードしていてもよい。そのようなコンピュータ可読媒体は、さまざまな物理現象を通じて伝搬させられうる信号たとえば電磁信号、音波信号または光信号のようなさまざまな型の通信媒体をもコンピュータ可読記憶媒体とは異なる技術のクラスとして含みうる。そのような伝搬は、さまざまな有線シナリオたとえばイーサネット登録商標または光ファイバーケーブルを介するおよび/または無線シナリオたとえばWiFiのような無線ローカルエリアネットワークWLAN、ブルートゥースのようなパーソナルエリアネットワークPANまたはセルラーもしくは電波ネットワークにおいてでありうる。そのような媒体は、装置のプロセッサによって実行されたときに該装置に本稿に提示される技法を実装させるコンピュータ可読命令のセットをエンコードしていてもよい。あるそのような実施形態では、プロセッサ実行可能命令702は、図5の例示的な方法500のような記憶セットstorageset102をなす記憶装置106にペンディングの書き込み110を記録する方法を実行するよう構成されていてもよい。もう一つのそのような実施形態では、プロセッサ実行可能命令702は、図6の例示的な方法600のような記憶装置106のうちの少なくとも一つに記憶された領域記述子404を使って記憶セット102をなす記憶装置106をクリーニングする方法を実行するよう構成されていてもよい。本稿に提示される技法に基づいて動作するよう構成される、多くのそのようなコンピュータ可読媒体が当業者によって考案されうる。D.変形本稿で論じられる技法は、多くの側面における変形をもって考案されてもよい。いくつかの変形は、追加的な利点を提示し、および/またはこれらおよび他の技法の他の変形に関する不都合な点を軽減しうる。さらに、いくつかの変形は、組み合わせて実装されてもよく、いくつかの組み合わせは、相乗作用を通じて追加的な利点および/または軽減された不都合な点を特徴としうる。そうした変形は、さまざまな実施形態たとえば図5の例示的な方法500および図6の例示的な方法600に組み込まれてそのような実施形態に対して個別的および/または相乗的な利点を付与しうる。D1.シナリオこれらの技法の実施形態の間で変わりうる第一の側面は、そうした技法が利用されうるシナリオに関する。この第一の側面の第一の変形として、これらの技法は、さまざまな型のデータセット104を有する多くの型の記憶セット102との関連で使用されうる。それには、さまざまな型のバイナリーオブジェクトを記憶するバイナリー記憶システム;ファイルを記憶するファイルシステム;メディアオブジェクトを記憶するメディアライブラリ;多くの型のオブジェクトを記憶するオブジェクトシステム;レコードを記憶するデータベース;電子メールメッセージを記憶する電子メールシステムが含まれる。この第一の側面の第二の変形として、これらの技法は、ハードディスクドライブ、半導体記憶デバイス、不揮発性メモリ回路、テープベースの記憶デバイスおよび磁気および光ディスクを含む多くの型の記憶デバイス106とともに使用されうる。そのような記憶装置106は、本技法を実装するコンピュータのような装置710に直接接続されてもよいし;有線または無線のローカルエリアネットワークたとえば80211WiFiネットワークまたはアドホック接続または赤外線接続を通じてアクセス可能であってもよいし;および/または有線または無線の広域ネットワークたとえば、セルラーネットワークまたはインターネットを通じてアクセス可能であってもよい。さらに、これらの技法は二つ以上の記憶装置106とともに使われてもよいく、それら二つ以上の記憶装置106は、独立して動作するたとえば、ソフトウェアプロセスを通じて独立してアクセスされる記憶装置106;ゆるやかに協働しつつ動作するたとえば、独立して動作するが、記憶セット102を共有する他の記憶装置106について知らされており、これと通信してもよい記憶装置106;または緊密な協働をもって動作するたとえば、安価なディスクの冗長アレイRAIDコントローラがいくつかの記憶装置106を記憶システムのコンポーネントとして管理する。この側面の第四の変形として、これらの技法の一部または全部が、コンピューティング環境内の一つまたは複数のコンポーネント内で、記憶装置106へのアクセスをもつコンピュータまたは装置の揮発性または不揮発性に記憶されているソフトウェア命令のセットたとえば、オペレーティングシステムプロセスまたはハードウェアドライバのように;記憶装置106とインターフェースをもつよう構成された記憶システムたとえばRAIDコントローラによって;あるいは記憶セット102のそれぞれの記憶装置106において、実装されてもよい。この第一の側面の第五の変形として、領域102内のデータセット104をクリーニングするために多くの型のクリーニング技法が使用されうる。第一の例として、図1の例示的なシナリオ100において例示されているように、記憶セット102は同じ記憶装置106上におよび/または異なる記憶装置106上にデータセット104の同一のコピーを記憶してもよい。この変形では、データセット104のコピーを、非一貫性122を検出および訂正するために当該データセット104の別のコピーと比較することによってクリーニングするために、ミラーリングクリーニング技法が使用されてもよい。たとえば、記憶セット102の第二の領域402に記憶されているミラーデータセットに対応する領域402のそれぞれのデータセット104について、該データセット104をミラーデータセットと同期させる。第二の例として、図2の例示的なシナリオ200に示されるように、記憶セット102は同じ記憶装置106上におよび/または異なる記憶装置106上にチェックサムまたはハッシュコードのような、それぞれのデータセット104の検証子202を記憶してもよく、非一貫性122を検出するために、そうした検証子がデータセット104および可能性としては記憶セット102内の他のデータセット104の内容と比較されてもよい。そのようなシナリオでは、多くの型の検証子を含めることができる。たとえば、パリティビットのような比較的簡単な検証子202はデータセット104について効率的に計算されることができ、データセット104における非一貫性122の存在または不在の迅速な検出につながりうる。あるいはまた、向上した信頼性、向上した詳細さたとえば、データセット104のうち非一貫的である部分を示すおよび/または誤り訂正機能など、追加的な特徴を呈する複雑な検証子202が利用されてもよい。これらの変形では、非一貫性122を同定し、可能性としては訂正するために、データセット104の検証子を検証することによってデータセット104をクリーニングするために、検証子クリーニング技法が使用されてもよい。第三の例として、データセット104は、以前に存在していなかったデータセット104の破損など、単に内容を検査することによってクリーニングされてもよい。非一貫性122が検出されたとき、破損したデータを修復するおよび/またはデータセット104中の残りのデータをサルベージするために、再構成技法が利用されてもよい。当業者は、本稿に提示される技法が有用となりうるシナリオの多くの型および変形を識別しうる。D2.領域記述子構造の変形これらの技法の実施形態の間で変わりうる第二の側面は、領域記述子404の性質に関する。この第二の側面の第一の変形として、記憶セット102は、多くの仕方で、領域記述子404内で同定される諸領域402に配分されてもよい。この第一の変形の第一の例として、領域サイズの選択が、本技法のさまざまな側面に影響しうる。たとえば、記憶セット102中の全位置108のダーティーまたはクリーンな状態を追跡することは、記憶セット102の容量のかなりの――おそらくは50もの――損失につながることがあり、実際、クリーニングプロセスの継続時間を有意に改善しないことがありうることが理解されうる。各ビットについてダーティーおよびクリーンビットを読むために記憶セット102全体をスキャンすることは、非一貫性122を検出するために記憶セット102全体をスキャンするのと同じくらいかかることがありうるからである。各ボリューム、各パーティションまたは各記憶装置106について単一のクリーンまたはダーティーのマーク付け406を記憶するなど、記憶セット102の非常に大きな部分についてクリーンまたはダーティー状態を追跡することは、復旧がきわめて引き延ばされるという性質を、受け容れられるくらいには軽減しえないことも理解されうる。大きなボリュームまたは記憶装置106における単一位置206への書き込みがボリュームまたは記憶装置106全体のクリーニング416につながることがあるからである。これらの考察に鑑み、領域サイズの選択が本稿で提示される技法のパフォーマンスにかなり影響しうることが理解されうる。しかしながら、領域サイズについて、それぞれ何らかのトレードオフを呈しうる、受け容れ可能な選択肢の範囲が存在しうる。たとえば、より大きな領域サイズを選択することは、より粗い粒度レベルでダーティーおよびクリーン領域の追跡を可能にでき、これはペンディングの書き込み110の追跡の使用のための記憶セット102の容量の消費を軽減するとともに、領域記述子404が領域402をクリーンまたはダーティーとしてマークするために更新される頻度も低下させるが、障害118後のより長いクリーニング416を必要とすることがありうる。ある領域402がダーティーとしてマーク付け406されている場合により大きな領域402のクリーニング416につながるからである。逆に、より小さな領域サイズを選択することは、より細かい粒度でのペンディングの書き込み110の追跡となって、障害118後、クリーニングされるべきデータセット104の、より限定された、精密な指定のため、比較的迅速なクリーニング416を可能にしうるが、記憶セット102の容量のより大きな消費領域記述子404がより多くの領域402についての情報を含むためおよび/または記憶セット102のルーチン動作におけるより大きなパフォーマンスペナルティさまざまな位置108への書き込み110のセットが、それぞれ記憶セットのより小さな諸部分をカバーするより多くの領域402と関連付けられる可能性が高いためにつながりうる。これらの考察に鑑み、記憶セット102の領域402の領域サイズ単数または複数を選択または指定するために、多くの技法が使用されうる。たとえば、領域サイズは、特定の記憶セット102または記憶装置106について固定的に定義されてもよい。異なる領域サイズが、異なる記憶装置106についてたとえば、アーカイブ化のような、パフォーマンス特性がコンピューティング環境に有意に影響しない状況で使われる記憶装置106は、パフォーマンスをより著しく低下させるが、より速いクリーニング416および障害118からの復旧を提供するより小さな領域サイズを使ってもよい、および/または異なる記憶セット102についてたとえば、アクセシビリティが貴重であるデータは、より速いクリーニング416および障害118からの復旧を可能にする、より小さな領域サイズを使って追跡されてもよい選択されてもよい。同じデータセット102中の異なる領域402について異なる領域サイズを利用してもよい。領域サイズはまた、記憶装置106および/または記憶セット102のパフォーマンス特性に基づいて、および/またはユーザー選好に基づいて調整されてもよい。代替的または追加的に、ユーザーが領域サイズを選ぶことが許されてもよい。たとえば、ある実施形態は、領域サイズについてユーザーにいくつかの選択肢を提示してもよく、各領域サイズに鑑みての障害118からの復旧に係る回復時間を予測してもよい。もう一つの代替として、ユーザーが、最大の受け容れ可能な回復期間を指定してもよく、本技法のある実施形態は、最大の受け容れ可能な回復期間内で障害118からの回復を可能にする可能性が高い領域サイズを選択してもよい。この第二の側面の第二の変形として、領域記述子404はさまざまな仕方で、たとえばアレイ、連結リスト、テーブル、データベースまたはビットマップとして、構成されてもよい。さまざまなデータ構造は特定の利点を呈してもよい。一つのそのような例として、単一の次元をもつアドレッシングシステムをもってたとえば、アドレスの単一の数値シーケンスとして記憶されているアドレスを有する記憶セット102について、領域記述子404は、記憶セット102の諸領域402に逐次対応する諸アレイエントリーのセットを有するダーティー領域アレイとして実装されてもよく、単に該ダーティー領域アレイのアレイエントリーにアクセスすることによって領域402をダーティーまたはクリーンとしてマークしてもよい。これは、任意の領域402についてのマーク付け406へのOのアクセス時間を達成する。あるいはまた、領域記述子404は、シーケンシャルなジャーナルとして実装されてもよい。ここで、各マーク付け406は、マークされたデータセット104の記憶セット102中の位置108に関わりなく、以前にコミットされたマーク付け406にシーケンスにおいて続いて書き込まれる。この領域記述子404は、特定の領域402についてのマーク付け406に対してより遅い読み出しアクセスにつながりうるあるエントリーについての現在のマーク付け406を同定することは、エントリーを見出すためにジャーナルのかなりの部分、可能性としてはジャーナル全体をスキャンすることになるためが、領域記述子402へのシーケンシャルな諸書き込みのさらなるパフォーマンス利点を可能にしうる。さらに、領域記述子404の意味内容は種々の仕方で情報を含んでいてもよい。たとえば、領域術子404は、領域402を表わすレコードまたはビットを特定的にマークする406ことによって領域402をクリーンとしてマークしてもよいし、あるいは、クリーニングされた領域402についてのレコードを領域記述子404から放逐することによってそれを行なってもよい。これらの変形は、領域記述子404内にレコードをもたない領域402がクリーンとしてマークされたかおそらくは最近、あるいは単にダーティーともクリーンともマークされなかったのかたとえばかなりの時間の長さにわたって書き込み104を受けなかったについて内容的な差を表わす。この第二の側面の第三の変形として、領域記述子404はさまざまな仕方で記憶セット102内の領域402の位置108を示しうる。図8は、それぞれの領域402によって表わされる記憶セット102内の位置を指定するためのいくつかの異なる技法を備える例示的なシナリオ800の図解を示している。この例示的なシナリオ800では、ハードディスクドライブのような記憶装置106は、記憶セット102の少なくとも一部を含むデータを記憶するよう構成される。記憶装置106は、それぞれの物理アドレス802にデータを記憶するよう構成されており、該アドレスを記憶媒体たとえば、円盤、セクタおよびトラック上の物理位置に変換するハードウェアを含む。記憶装置106上に記憶されるデータは、標準化されたフォーマットに従って記憶されてもよい。たとえば、物理的な媒体上に記憶されるデータは、一つまたは複数のパーティション804の位置および記述を指定するパーティションテーブルで始まっていてもよい。各パーティションは一つまたは複数の論理ボリューム806たとえば、コンピュータの操作環境において提示されるドライブを含む。記憶セット102は、一つまたは複数の論理ボリューム806内に記憶されてもよく、ある論理ボリューム806において、あるいはいくつかの論理ボリューム806を横断して、データセット104を割り当ててもよい。よって、領域記述子404は、さまざまな仕方で記憶セット102内のさまざまな位置108について領域402を同定しうる。たとえば、領域記述子404は、記憶セット102の記憶装置106上のそれぞれの領域402の物理的な位置を同定する物理的領域参照方式を利用してもよい。第一のそのような例として、領域記述子404は、各領域402によって表わされる記憶装置106の記憶媒体上の物理的な諸位置106の範囲を示すレコードを含む第一の領域テーブル808として実装されてもよい。第二のそのような例として、領域記述子404は、それぞれの領域402について、パーティション804およびパーティション804内で各領域402が始まるところのオフセットを示すレコードを含む第二の領域テーブル810として実装されてもよい。領域記述子404はまた、一つまたは複数の領域の領域サイズ単数または複数を記憶し、表現してもよいたとえば、記憶セット102の領域レコードまたは別個の記述子として。第三の例として、領域記述子404は、領域ビットマップ812として実装されてもよい。領域ビットマップでは、諸パーティション804が特定の領域サイズの一連の領域402に配分されてもよく、該ビットマップは、領域402のダーティーまたはクリーン状態の一ビット指標を記憶してもよい。あるいはまた、領域記述子404は、記憶セット102中のデータの論理的な配置内でそれぞれの領域402の論理的な位置を同定する論理的領域参照方式を利用してもよい。一つのそのような例として、領域記述子404は、各領域402が始まる各論理ボリューム806内の論理的な位置を同定する第三の領域テーブル814として実装されてもよい。記憶装置106の記憶媒体上の物理的な位置106とより密接に同定されるアドレッシング技法は、記憶装置106にとってはほとんど計算を必要とせず、論理的に領域402にアクセスするプロセスにとってはより多くの計算を含み、逆もまたしかりであることが理解されうる。この第二の側面の第四の変形として、これらの技法の実施形態は、記憶装置106上のさまざまな位置において領域記述子404を記憶するよう構成されていてもよい。この第四の変形の第一の例として、領域記述子404は、記憶装置404上の特定の位置に記憶されてもよいたとえば、記憶セット102の諸データセット104を記憶しているあるパーティション804の上に、あるいは該諸データセット104を記憶している諸パーティション804の外部のある定義された位置に。この第四の変形の第二の例として、領域記述子404は、第二の記憶装置10の諸領域402へのペンディングの書き込み110を追跡するために第一の記憶装置106に記憶されてもよい。この第二の例の第五の変形として、これらの技法のある実施形態は、記憶セット102について二つ以上の領域記述子404を記憶するよう構成されていてもよい。この第五の変形の第一の例として、記憶セット102の領域402の同じセットを表わす領域記述子404の二つ以上の同一のコピーが、同じおよび/または異なる記憶装置106に記憶されてもよい。同一のコピーの記憶は、記憶セット102の故障耐性を改善しうるたとえば、記憶装置106の回復不能な障害、領域記述子404を記憶している記憶装置106の部分の障害または領域記述子404内のデータの破損、たとえば領域記述子404への書き込み110を実行している間の障害118の発生の場合。障害118からの回復は、領域記述子404の別のコピーの使用を通じて実行されてもよい。バックアップ施策として記憶セット102の完全クリーニング416が実行されうるので、領域記述子404の障害が破局的となる可能性は高くないものの、それでも、第一のコピーが破損または利用不能となっても回復をすみやかに行なうために、領域記述子404の第二のコピーを記憶しておくことが有利であることがあることは理解されうる。さらに、領域記述子404の同一のコピーを複数の記憶装置106上に、あるいは同じ記憶装置106の異なる領域に記憶することが有利でありうる。たとえば、ファイルシステムの第一の物理セクタまたは第一の部分など領域記述子404の第一のコピーが記憶されている記憶装置106の部分への損傷の場合、記憶装置106の異なる部分に記憶されていた当該領域記述子404の第二の同一のコピーが取得可能かつ使用可能でありうる。この第五の変形の第二の例として、領域402の特定のセットについての領域記述子404の複数のコピーが一つまたは複数の記憶装置106に記憶されてもよいが、常に同一であるのではなく、それらの領域記述子404は、種々の時点における記憶セット102のクリーンおよびダーティー状態を反映させるよう逐次更新されてもよい。この逐次的な更新は、たとえば領域記述子404のコピーを更新している間に障害118が発生して領域記述子404が非一貫的なまたは破損した状態となる場合に、有利でありうる。クリーニング416および回復において他方のコピーが利用可能でありうるからである。この第二の例についての第一のシナリオとして、いずれも領域402の同じセットを表わす、領域記述子404の二つのコピーが記憶装置104上で保持されてもよい。だが、それらの領域記述子404を更新するために、第一の更新は、領域記述子404の一方のコピーを上書きすることによって行なわれてもよく、次の更新は領域記述子404の他方のコピーを上書きすることによって行なわれてもよい。さらに、本技法のある技法が領域記述子404に上書きするとき、該実施形態は、領域記述子404のための検証子202たとえばチェックサムおよびシーケンスインジケーターたとえばインクリメントする整数または上書きの時刻をも書き込んでもよい。障害118に続いて、本実施形態は、利用可能な領域記述子404のすべてを検査してもよく、その検証子202に基づいて有効であるもののうち最高のシーケンスインジケーターたとえば、最高のインクリメントする整数または最新の書き込み時刻を有する領域記述子404を、クリーニングにおいて使うために選択してもよい。領域セットのわずかに古くなったバージョンを使ってクリーニング416を実行することが、非一貫性118をもつ領域402をクリーニングし損なうことたとえば、擬陰性につながらないことがあることは理解されうる。領域402への書き込み110は、該領域402のマーク付け406が、最高のシーケンスインジケーターおよび有効な検証子202をもつ完全に書き込まれた領域記述子404の形で記憶セット102にフルにコミットされたあとにのみ始まるからである。そのため、領域記述子406を書き込んでいる間の障害118はペンディングの書き込み110を記録し損なうことにつながらいのである。逆に、古くなった領域記述子402は擬陽性につながりうる。たとえば、ある領域記述子404の書き込みの際の障害118は、以前にダーティーだった領域404をクリーンとするマーク付け404が失われることにつながることがあり、領域404は、古くなった領域記述子404に見出されるマーク付け406のために回復の際に誤ってダーティーとして扱われることがありうる。だが、この不正確さは単に、クリーンであるとわかっていた領域404のクリーニング416に関わるわずかに引き延ばされた回復につながるのみである。代替的または追加的に、領域402のあるセットについての領域記述子404の二つ以上のコピーが、記憶セット102の記憶装置106のそれぞれに冗長に記憶されてもよい。記憶セット102について領域記述子404を更新するために、ある実施形態は、記憶装置106のすべてで並列に領域記述子404の上書きを開始してもよい。さらに、各記憶装置106は、記憶装置106の一つまたは複数が領域記述子106を更新している間に障害118が発生するといけないから、領域記述子404とともに検証子202およびシーケンスインジケーターを含んでいてもよい。記憶セット102の一つまたは複数の記憶装置106の障害118からの回復は、まず、それぞれの検証子202によって有効確認される全コピーのうちで最も大きなシーケンスインジケーターをもつコピーを同定するために、利用可能な領域記述子106全部を検査することを含んでいてもよい。実際、各記憶装置106上に領域記述子494の二つのコピーを記憶するよう記憶セット102を構成することが有利でありうる。たとえば、記憶装置106全部の上の領域記述子404を更新している間に障害118が発生する場合、いずれかの記憶装置106上のわずかに古くなったコピーが使用可能であることがある。あるいはまた、同様に、領域記述子404のすべてを同時に更新せず、領域記述子404の第一の更新を記憶装置106の第一の部分集合に記憶されているコピーに対して実行し、領域記述子404の後続の更新を記憶装置106の第二の部分集合に記憶されているコピーに対して実行することが有利であることがある。この第五の変形の第三の例として、記憶セット102は、該記憶セット102の異なる領域402に対する更新をそれぞれ記録する二つ以上の領域記述子404を含んでいてもよい。第一のそのような例として、第一の領域記述子404は、第一の記憶装置104に記憶されている記憶セット102の諸領域402についてダーティーおよびクリーン領域情報を記録してもよく、第二の領域記述子404は、第二の記憶装置104に記憶されている記憶セット102の諸領域402についてダーティーおよびクリーン領域情報を記録してもよい。第二のそのような例として、記憶セット102を諸領域402に配分したのち、本技法のある実施形態は、それぞれ領域402の記憶セット102の記憶装置106の間での物理的な位置に関わりなく領域402の部分集合を含む領域セットについてダーティーおよびクリーン情報を記憶する二つ以上の領域記述子404を生成してもよい。それは、生成され、一つまたは複数の記憶装置106に記憶されてもよい。諸領域402の諸記憶セットへの配分は、たとえば、それぞれのデータセット104の特性に鑑みて選択されてもよい。たとえば、第一の領域セットは、より貴重なまたはより機微なデータを記憶する領域402を含んでいてもよく、第二の領域セットはそれほど貴重でないデータを記憶する領域402を含んでいてもよい。代替的または追加的に、二つ以上の領域記述子404に対するそれらの領域の分配は、明示的に達成されてもよいしたとえば、それぞれ領域402の指定されたセットを表わす二つ以上の独立した領域記述子404を生成することによって、あるいは暗黙的に達成されてもよいたとえば、当該領域記述子404についての記憶スペースを、二つ以上の記憶装置106など二つ以上のスペース割り当てを横断して、分配することによって。さらに、いくつかのシナリオでは、記憶セット102の領域402のある部分集合についてのみダーティーおよびクリーン情報を追跡することが望ましいことがある。たとえば、キャッシュまたはインデックスのような、破損したら記憶セット102の他のデータから再生成できる、処分可能なデータを含む領域402は全く追跡されなくてもよい。この第二の側面の第六の変形として、領域記述子単数または複数404は、記憶セット102の同期技法に適合する仕方で記憶されてもよく、異なる記憶装置106上の領域記述子404のいずれかの同一のコピーにアクセスする機能および/または記憶セット102と同様の故障耐性を通じて、領域記述子404に対して、向上したパフォーマンスなど、さまざまな特徴および利点を提供してもよい。たとえば、記憶セット102が、記憶装置障害許容度の範囲内の記憶装置106の障害からの回復機能など、故障耐性のある記憶技法を実装する場合、領域記述子404は、同じ障害耐性のある記憶技法を使って記憶されてもよい。あるいはまた、領域記述子404は、別個の技法のセットを可能にする仕方で記憶されてもよい。たとえば、それぞれの領域記述子404は、該領域記述子404の領域記述子検証子とともに記憶されてもよく、領域402が該領域記述子404においてクリーンまたはダーティーとしてマークされるときに更新されてもよく、よって、領域記述子404の完全性の検証を可能にしてもよい。当業者は、本稿に提示される技法に基づいて生成および利用されうる領域記述子404の多くの型およびフォーマットを考案しうる。D3.領域記述子の使用の変形これらの技法の実施形態の間で変わりうる第三の側面は、記憶セット102の領域402をクリーンまたはダーティーとしてマークするための領域記述子404の使用に関する。この第三の側面の第一の変形として、領域記述子404の使用は、該領域記述子404の容量の管理を容易にするよう設計されてもよい。いくつかの型の領域記述子404では、図8の例示的なシナリオ800における領域ビットマップ814のように、領域402がマークされるときに容量は変わらなくてもよい。しかしながら、他のシナリオでは、図8の例示的なシナリオ800において描かれた領域テーブルにおけるように、領域402のマーク付け406が領域記述子404の容量に影響してもよい。たとえば、領域記述子404がそれぞれの領域402についてのレコードを記憶しており、領域記述子404がある領域402をクリーンとしてマークするのを、単に当該レコードを放逐することによって行なってもよい。あるいはまた、領域記述子404はクリーンとマーク付けされた領域402についてのレコードを記憶し続けてもよく、後刻たとえば、その領域402への別の書き込み110が行なわれることなく指定された時間期間が過ぎたのちに、あるいは領域記述子404の容量が尽きたときに、クリーン領域402についてのレコードを放逐してもよい。この第三の側面の第二の例として、領域記述子404の容量は静的にたとえば、固定サイズの領域記述子404または動的にたとえば初期にはある領域記述子スペースを割り当てられているが、領域記述子404が、合わせると領域記述子404の容量を使い果たす諸領域402についてのレコードで満たされる際に拡張されうるサイズ変更可能な領域記述子404割り当てられてもよい。この第三の側面の第二の変形として、領域記述子404の使用は、領域記述子404への書き込み110の数および頻度を減らすために選択されてもよい。たとえば、領域記述子404が一つまたは複数の記憶装置106の物理的な媒体上に記憶されるので、領域記述子404の更新は、データセット104の位置108へのシークおよび書き込み110に加えて、領域記述子404へのシークおよび書き込み110を追加しうる。このように、領域記述子404が、さまざまな領域402のダーティーおよびクリーンマーク付け406への変化を反映させるようすぐに自動的に更新されるとしたら、領域記述子404を含めることは、記憶装置106および記憶セット102のパフォーマンスをかなり低減させることがあり、可能性としては、各アクセスのコストを三倍まで増すことがありうる。本技法のある実施形態がそれぞれの領域402のクリーンおよびダーティー状態を読むために領域記述子404にアクセスするとしたらたとえば、領域402をダーティーとしてマークする406前にまず領域402がクリーンとしてマークされているかどうかを判定するために、さらなるパフォーマンス劣化が起こりうる。よって、領域記述子404へのアクセスを減らすことが望ましいことがありうる。この第二の変形の第一の例として、領域402をクリーンおよびダーティーとしてマーク付け406することの意味がいくらか非対称的であることが理解されうる。たとえば、領域記述子404をダーティーとマーク付けするために領域記述子404へのアクセスを遅らせることは受け容れ可能ではないことがある。その遅れの間に障害が起こる場合、そのような遅延は領域402を誤ってクリーンとしてリストしうるからであるそれにより、障害118の際の不完全な書き込み110のため非一貫的であるかもしれない領域402がクリーンとしてマークされ、よって障害118からの回復の際のクリーニング416から除外される擬陰性状況を呈する。しかしながら、書き込み完了後に領域402をクリーンとしてマークする406のを遅らせるのは受け容れ可能であることがある。このシナリオは単に、擬陽性結果につながる。その場合、障害118の時点でクリーンであるたとえばペンディングの書き込み110なしとわかっていた領域402が、回復の際にクリーニング416に含められる。だがこのスキャンは、クリーニング416の継続時間をわずかに増すだけでありえ特に領域サイズが小さい場合、記憶セット102の完全性を損なうものではない。さらに、書き込み110の完了後すぐに領域402をクリーンとマークする実施形態は、その後まもなく、同じ領域402内のデータセット104への書き込み110のもう一つの要求たとえばシーケンシャルに後続するデータセット104または同じデータセット104の上書きを受け取ることがあり、領域402をダーティーとマークし直す必要があることがある。領域402のクリーンとしてのマーク付け406を、領域402への切迫した二番目の書き込み110の可能性が高いことがありうる短い期間だけ遅らせることによって、それぞれ領域記述子404へのアクセスに関わる両方のマーク付け406が回避されうる。これらの考察に鑑み、本技法のある実施形態は、領域402に記憶されているデータセット104への書き込み110の完了後、領域402のクリーンとしてのマーク付け406を遅らせるよう構成されていてもよい。領域記述子404へのクリーンマーク付け406の遅らされたコミットの実装は、さまざまな仕方で達成されうる。第一のそのような例として、この遅れは、クリーンマーク付け406のみを記憶する不揮発性メモリ、書き込みバッファを提供し、定期的にまたは要求があったときにすべてのそのような書き込みを一つのバッチとしてコミットすることによって実装されてもよい。たとえば、本実施形態は、領域402内のある位置108におけるデータセット106の記憶を完了したときには領域402をクリーンとして同定するよう構成されていてもよく、領域記述子404においてクリーニングされた諸領域402をクリーンとしてマーク付けする要求を受領したときに、記憶装置106上の領域記述子404において、クリーニングされた領域402をクリーンとしてマーク付けしてもよい。この要求は、たとえば、マーク付け406をフラッシュするという、プロセス装置のオペレーティングシステムを含むによる特定的な要求を含んでいてもよく、あるいはさまざまな基準によってトリガーされてもよい。基準としては、クリーニングされた継続時間基準たとえば、定期的に領域402のマーク付け406をコミットするまたは領域記述子404のダーティー領域容量に関わる領域記述子容量基準たとえば、領域記述子404が、指定された数のクリーンマーク付け406または領域記述子404の全利用可能容量の閾値などの特定の容量に達したときに領域のマーク付け406をコミットし、これは、クリーンなレコード406の放逐を促しうるといったものがある。第二のそのような例として、上記遅れは、クリーンマーク付け406を短時間にわたってホールドして、短時間後、同じ領域402に対してその後の書き込み110が要求されなかったときにはじめて領域記述子404にクリーンマーク付け406をコミットすることに関わってもよい。このように、ある実施形態は、領域402内のある位置108へ書き込む110要求を受け取ると、まず、その領域402が領域記述子404においてすでにクリーンとしてマークされているかどうかを判別し、その領域492が領域記述子404において現在クリーンとマークされていると判別したときにのみ、その領域402をダーティーとマークしてもよい。この第二の変形の第三の例として、本技法のある実施形態は、領域記述子404の揮発性メモリ表現を実装することによって領域記述子404へのアクセスの数を減らしてもよい。たとえば、記憶装置106の物理的な媒体上にそれぞれの領域402のマーク付け406を記憶することに加えて、ある装置上で動作する本技法のある実施形態は、該装置の揮発性メモリにマーク付け406を記憶してもよい。この表現の使用は、クリーンマーク付け406のバッチの遅らされた書き込みならびに、クリーンとマークされるべき領域406が現在、媒体上の領域記述子404においてクリーンまたはダーティーのどちらにマーク付けされているかの判定を容易にすることがある。このように、前記表現は、記憶装置106上の領域記述子404においておよび前記揮発性メモリ表現においてクリーンとマークされている領域402ならびに記憶装置106上の領域記述子404においておよび前記揮発性メモリ表現においてダーティーとマークされている領域402に加えて、いくつかの領域402が領域記述子404ではダーティーとマークされているが前記揮発性メモリ表現では一時的にクリーンとマークされていることがありうることを示しうる。そのようなクリーンマーク付け406はのちに媒体上の領域記述子404にコミットされうる。図9は、領域記述子404の揮発性メモリ表現902の実装および使用を表わす例示的なシナリオ900の図解を示している。この例示的なシナリオ900では、二つの記憶装置106が、たとえばRAID1方式の仕方で記憶セット102のデータセット104の同一のコピーを記憶することによって、記憶セット102をミラーリングするよう構成されており、記憶装置106の不完全な同期によって引き起こされる潜在的な問題を克服するために、本稿に提示される技法に従って、記憶装置902たとえば、記憶セット102を記憶する記憶装置106の一方または両方および/または別の記憶装置106上で領域記述子404が生成され、記憶セット102のさまざまな領域402に対してペンディングの書き込み110を追跡するために利用されてもよい。しかしながら、これに加えて、揮発性メモリ904において、領域記述子404の表現906が生成されてもよく、記憶装置902に記憶されている領域記述子404と相互運用されてもよい。たとえば、第一の時点908において、記憶セット102の第二および第四の領域402内に配分されているデータセット104に対して書き込み110がペンディングであることがありうる。それらの書き込み110の要求を受け取ると、本技法のある実施形態は、記憶装置902に記憶されている領域記述子404において、また揮発性メモリ904内の表現906においては領域402をダーティーとマークしてもよく、領域402をすぐにダーティーとマークしてもよい。しかしながら、第四の領域402への書き込みが両方の記憶装置104上で完了した第二の時点910では、第四の領域402は、揮発性メモリ904内の表現906ではクリーンとマークされてもよいが、記憶装置902上の領域記述子404ではまだクリーンとマークされなくてもよい。同様に、第三の時点912では、第二の領域402への書き込み110が両方の記憶装置104において完了しており、第二の領域402は、揮発性メモリ904内の表現906ではクリーンとマークされてもよいが、記憶装置902上の領域記述子404ではまだで、第四の時点914まで遅らされてもよい。第四の時点では、記憶装置902上の領域記述子404において、両方の領域402がともにクリーンとしてマークされてもよい。揮発性メモリ904内の表現906のこの使用は、いくつかのパフォーマンス改善を呈しうる。たとえば、記憶装置902上に記憶されている領域記述子404にアクセスする判別よりも、どの領域402がクリーンまたはダーティーとしてマークされているかをより迅速に判別することを可能にする;記憶装置902に記憶されている領域記述子404に対する、クリーンマーク付け406のバッチ化したコミットを可能にする;そして、記憶装置902へのアクセスの数を減らす、たとえば、第三の時点912において第二の領域420への追加的な書き込み110が受領される場合、記憶装置902に記憶されている領域記述子404において領域402をクリーンとマークしてその後再びダーティーとマーク406するのではなく、領域402は単に揮発性メモリ904における表現906においてダーティーとマークされてもよい。図10は、決定論的な仕方で領域記述子404を更新する本技法のある実施形態によって利用されうる、例示的な状態図1000の図解を示している。最初、本技法のある実施形態は、クリーン状態1002にあってもよい。ここで、クリーンな領域402が領域記述子404においてクリーンとしてマークされている。そこであるとき、その領域402内のある位置108におけるデータセット102への書き込み110を実行するよう要求が受領され、本技法のある実施形態は、領域402をダーティーとマーク406しつつたとえば、記憶装置106上に記憶されている領域記述子404への書き込みを行ないながら、マーク付け状態1004に遷移してもよい。マーク付け406が完了すると、本実施形態は、領域402がダーティーとマークされたダーティー状態1004に遷移してもよく、領域402内の追加的な諸位置に書き込む110さらなる要求のため、本実施形態は、このダーティー状態1004に留まってもよい。ダーティー領域402をフラッシュするよう要求が受領されたら、記憶装置106がフラッシュの準備ができているかどうかについて判定がなされる。たとえば、記憶装置106が現在、記憶セットの同期を実行中である場合、あるいは記憶装置106が一時的にアクセス不能である場合には、ダーティー書き込みをフラッシュする要求は、記憶装置106の準備ができるまでホールドされる。記憶装置106がフラッシュの準備ができている場合には、本実施形態は、フラッシュ動作を開始しつつ、フラッシュ状態1008にはいってもよい。その領域104への書き込み110の別の要求を受け取ることなくフラッシュ動作が完了する場合には、本実施形態は、クリーンとマークされた状態1010にはいってもよい。ここで、領域102はすでにフラッシュされているたとえば、領域402への書き込み110が完了しているが、領域402は記憶装置106上の領域記述子404ではいまだダーティーとマークされているだが、装置のメモリ904内の揮発性メモリ表現906ではクリーンとマークされていてもよい。最後に、領域記述子404において、クリーニングされた領域402をクリーンとマークするよう要求が受領されると、本実施形態はそのマーク付け406を開始してもよく、このマーク付け406が完了すると、クリーン状態1002に戻ってもよい。しかしながら、フラッシュ中状態1008またはクリーンとマークされている状態1010の間に領域402に書き込む110何らかの要求が受領される場合には、本実施形態はダーティー状態1006に戻ることがある。このようにして、本技法のある実施形態は、ステートフルで、決定論的で、かつ比較的単純な仕方で、領域記述子404を更新しうる。本稿に提示される技法に適合しうる、領域記述子402の更新における多くの変形が、当業者によって考案されうる。D4.回復の変形これらの技法の実施形態の間で変わりうる第四の側面は、障害118の場合に記憶セット102の回復クリーニング416を含むを実行するために領域記述子404を使う仕方に関する。第一の変形では、前記回復は、障害118から生じる記憶セット102における非一貫性122を検出し、除去するために記憶セット102をクリーニング416する多くの型の技法に関わりうる。第一の例として、同一であることが期待される二つ以上のコピーとして記憶されている記憶セット102のあるデータセット104について、クリーニング416は、それらのコピーを比較して非一貫性122を検出することに関わってもよい。たとえば、実際の内容のビットごとの比較;内容の論理的な比較、たとえば同じファイルのセットを有するが該ファイルシステムを異なるビット毎構造で表わす二つのファイルシステムのような、非実質的な構造上の相違の場合でもデータセット104の間の等価性を検出するなど;あるいはデータセット104のホールマークhallmarkの比較、たとえば各コピーの内容に対して計算されたハッシュコードの比較。第二の例として、クリーニング416は、データセット104の内容の一貫性を検証するために、データセット104を表わす検証子202、たとえばチェックサムに対して一つまたは複数のデータセット104を検証することに関わっていてもよい。第三の例として、クリーニング416は、単にエラーがあるかどうかデータセット104を検査することに関わってもよい。たとえば、標準化された型のデータセット104のバイナリー内容が形式定義に従った有効な構造を呈することを検証するなど。さらに、クリーニング416は、非一貫性112の存在の単純な検出を可能にしてもよい;前記少なくとも一つの比較されるデータセット104内および/または該データセット104間での非一貫性の位置の同定を可能にしてもよいたとえば、エラーが存在することを検出するだけでなく、データセット104の特定の部分が非一貫的であるまたは期待されたとおりでないことを検出する;および/または、非一貫性122の訂正を可能にしてもよいたとえば、正しいデータの決定を可能にする、ハミング符号のような誤り訂正チェックサム、あるいはフォーマット上の非一貫性の訂正を可能にし、データ損失を回復または低減しうる、バイナリーオブジェクトに適用される修復技法。異なる型のクリーニング416が記憶セット102内の異なるデータセット104に適用されてもよい。たとえば、より貴重なデータセット102はより複雑だが洗練された誤り訂正技法に適合する仕方で記憶されてもよく、それほど貴重でないデータセット102は単純で比較的込み入っていない仕方で記憶されてもよい。さらに、呼び出されるクリーニング416の型は、それぞれのデータセット104の利用可能なコピーの数、検出された障害118の型、記憶装置106の型たとえば、装置上に実装されるRAID方式およびユーザーの関心たとえば、ユーザーは、クリーニング416の複雑さ、信頼性および継続時間の面で異なるさまざまなクリーニングオプションのうちから選択することが許されていてもよいに依存してもよい。いくつかのシナリオでは、複数の型のクリーニング416が実行されてもよい。たとえば、簡単に検出される非一貫性122の迅速な同定およびデータセット102へのアクセスの即座の回復に関わるクイッククリーニング416と、それに続く、訂正および修復するのがより難しい非一貫性122に対処するために記憶セット102の完全性を検証する複雑なクリーニング416。この第三の側面の第二の変形として、記憶セット102の回復は特定の順序で実行されてもよい。たとえば、記憶セット102は多くの記憶装置上に記憶されている多くの型のデータセット104を含んでいてもよい。いくつかのシナリオでは、素朴な回復は、クリーニング416を、任意の順序で記憶セット102に適用してもよい。一方、順序付けられた回復は、記憶セット102の、それほど貴重でないまたは頻繁に要求されないデータセット104たとえばアーカイブデータを含む他の部分にクリーニング416たとえば使用中のデータを適用する前にまず、記憶セット102の、貴重なまたはより多く使われるデータセット104を含むいくつかの部分にクリーニング416を適用してもよい。一つのそのような例として、記憶セット102のそれぞれの領域402は、それぞれ領域記述子404をもつ一つまたは複数の領域セットに配分されてもよく、回復は、第二の領域記述子404によって表わされる第二の領域セットの領域402をクリーニングする前に、第一の領域記述子404によって表わされる第一の領域セットの領域402をクリーニング416することに関わってもよい。この第三の側面の第三の変形として、回復は、領域記述子404に基づいてクリーニング416を開始する前に、たとえば領域記述子404とともに記憶されている検証子202に従って領域記述子404の完全性を検証することを含んでいてもよい。領域記述子404の一部が検証不能であるたとえば、領域記述子404の一部に書き込んでいる際の障害118のために非一貫的となっているまたは破損していることが見出される場合には、回復は、領域記述子404の検証可能な部分を使って、領域記述子404の破損した部分において表わされている領域402のフルクリーニング416を実行することに関わってもよい。あるいはまた、回復は、領域記述子404の別のコピーたとえば、記憶セット102の同じ記憶装置106の別のどこかまたは別の記憶装置106上に記憶されている領域記述子404の、同一のまたはやや古くなっているが検証可能なコピーを位置特定して使うことに関わっていてもよい。実際、二つ以上の領域記述子404がそれぞれ部分的に破損していることが見出される場合、回復は、それぞれの領域記述子404の有効な部分を使うことによってフルに達成できることがある。あるいはまた、領域記述子404の検証可能なコピーが利用可能でない場合には、回復は、記憶セット102のフルクリーニングたとえば、記憶セット102全体のフルスキャンおよび再同期を開始してもよい。これらの方法では、本技法のある実施形態は、記憶セット102の種々の型の障害118から回復するよう構成されうる。当業者は、本稿で提示される技法に基づく、記憶セット102の障害118から回復する多くの方法を考案しうる。E.コンピューティング環境図11は、本稿に提示される技法が実装されうるコンピューティング装置1102内の例示的なコンピューティング環境の図解を示している。例示的なコンピューティング装置は、これに限られないが、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルドもしくはラップトップ装置、モバイル装置携帯電話、携帯情報端末PDA、メディアプレーヤーなど、マルチプロセッサシステム、消費者電子装置、ミニコンピュータ、メインフレームコンピュータおよび上記のシステムもしくは装置のいずれかを含む分散式のコンピューティング環境を含む。図11は、本稿に提示される一つまたは複数の実施形態を実装するよう構成されているコンピューティング装置1102を有するシステム1100の例を示している。ある構成では、コンピューティング装置1102は少なくとも一つのプロセッサ1106および少なくとも一つのメモリコンポーネント1108を含む。コンピューティング装置の厳密な構成および型に依存して、メモリコンポーネント1108は揮発性たとえばRAM、不揮発性たとえばROM、フラッシュメモリなどまたは中間的もしくはハイブリッド型のメモリコンポーネントでありうる。この構成は、図11では破線1104によって示されている。いくつかの実施形態では、装置1102は追加的な特徴/機能を含んでいてもよい。たとえば、装置1102は、これに限られないがハードディスクドライブ、半導体記憶デバイスおよび/または他のリムーバブルもしくは非リムーバブルな磁気もしくは光学式媒体を含む一つまたは複数の追加的な記憶コンポーネント1110を含んでいてもよい。ある実施形態では、本稿で与えられる一つまたは複数の実施形態を実装するコンピュータ可読かつプロセッサ実行可能な命令が記憶コンポーネント1110に記憶される。記憶コンポーネント1110は、オペレーティングシステムのコンポーネント、一つまたは複数のアプリケーションをなす実行可能なバイナリー、プログラミングライブラリたとえば、アプリケーションプログラミングインターフェースAPI、メディアオブジェクトおよび文書類のような他のデータオブジェクトをも記憶していてもよい。コンピュータ可読命令は、プロセッサ1106による実行のためにメモリコンポーネント1108にロードされてもよい。コンピューティング装置1102はまた、コンピューティング装置1102に他の装置と通信することを許容する一つまたは複数の通信コンポーネント1116をも含んでいてもよい。一つまたは複数の通信コンポーネント1116はたとえばモデム、ネットワークインターフェースカードNIC、電波周波数送信機/受信機、赤外線ポートおよびユニバーサルシリアルバスUSBUSB接続を有していてもよい。そのような通信コンポーネント1116は有線接続物理的なコード、ケーブルまたはワイヤを通じてネットワークに接続するまたは無線接続可視光、赤外線または一つもしくは複数の電波周波数などを通じてネットワーキング装置と無線で通信するを有していてもよい。コンピューティング装置1102は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置、赤外線カメラまたはビデオ入力装置のような一つまたは複数の入力コンポーネント1114および/または一つまたは複数のディスプレイ、スピーカーおよびプリンターのような一つまたは複数の出力コンポーネント1112を含んでいてもよい。入力コンポーネント1114および/または出力コンポーネント1112は有線接続、無線接続またはそれらの任意の組み合わせを介してコンピューティング装置1102に接続されてもよい。ある実施形態では、別のコンピューティング装置からの入力コンポーネント1114または出力コンポーネント1112がコンピューティング装置1102のための入力コンポーネント1114および/または出力コンポーネント1112として使用されてもよい。コンピューティング装置1102のコンポーネントは、バスのようなさまざまな相互接続によって接続されてもよい。そのような相互接続は、PCIエクスプレスのような周辺コンポーネント相互接続PCI、ユニバーサルシリアルバスUSB、ファイアワイヤIEEE1394、光学式バス構造などを含みうる。別の実施形態では、コンピューティング装置1102のコンポーネントはネットワークによって相互接続されてもよい。たとえば、メモリコンポーネント1108は、ネットワークによって相互接続された種々の物理的位置に位置されている複数の物理的メモリユニットから構成されてもよい。当業者は、コンピュータ可読命令を記憶するために利用される記憶装置がネットワークを横断して分散されてもよいことを認識するであろう。たとえば、ネットワーク1118を介してアクセス可能なコンピューティング装置1120が本稿で与えられる一つまたは複数の実施形態を実装するためのコンピュータ可読命令を記憶してもよい。コンピューティング装置1102はコンピューティング装置1120にアクセスし、コンピュータ可読命令の一部または全部を実行のためにダウンロードしてもよい。あるいはまた、コンピューティング装置1102は必要に応じてコンピュータ可読命令の諸片をダウンロードしてもよく、あるいはいくつかの命令はコンピューティング装置1102において実行され、いくつかはコンピューティング装置1120において実行されてもよい。F.用語の用法本願での用法では、用語コンポーネント、モジュール、システム、インターフェースなどは、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェアまたは実行中のソフトウェアのいずれであれコンピュータ関係のエンティティを指すことが一般に意図されている。たとえば、コンポーネントは、これに限られないが、プロセッサ上で走っているプロセス、プロセッサ、オブジェクト、実行可能物、実行のスレッド、プログラムおよび/またはコンピュータであってもよい。例として、コントローラ上で走るアプリケーションおよび前記コントローラの両方がコンポーネントであることができる。一つまたは複数のコンポーネントがプロセスおよび/または実行のスレッド内に存在することができ、コンポーネントは一つのコンピュータ上に局在することもできるし、および/または二つ以上のコンピュータの間で分散させられることもできる。さらに、特許請求される主題は、開示される主題を実装するようコンピュータを制御するためのソフトウェア、ファームウェア、ハードウェアまたはそれらの任意の組み合わせを製造するための標準的なプログラミングおよび/またはエンジニアリング技法を使って、方法、装置または製造物として実装されてもよい。本稿で用いるところの用語製造物は、任意のコンピュータ可読デバイス、担体または媒体からアクセス可能なコンピュータプログラムを包含することが意図されている。むろん、当業者は、特許請求される主題の範囲および精神から外れることなく、この構成に多くの修正がなしうることを認識するであろう。本稿では諸実施形態のさまざまな動作が与えられている。ある実施形態では、記載される動作の一つまたは複数は、一つまたは複数のコンピュータ可読媒体上に記憶されているコンピュータ可読命令であって、コンピューティング装置によって実行されたら、記載される動作を該コンピューティング装置に実行させるものをなしてもよい。動作の一部または全部が記載される順序は、それらの動作が必ず順序依存であることを含意するものと解釈すべきではない。代替的な順序付けが、本稿の恩恵を受ける当業者によって理解されるであろう。さらに、すべての動作が本稿で与えられる各実施形態において必ず存在するわけではないことは理解されるであろう。主題は構造的な特徴および/または方法論的な工程に固有の言辞で記述されているが、付属の請求項において定義される主題は必ずしも上記で述べた個別的な特徴や工程に限定されるものではないことは理解しておくものとする。むしろ、上記の個別的な特徴および工程は請求項を実装する例示的な形として開示されているのである。さらに、例示的という語は、本稿では、例、事例または例解のはたらきをすることを意味するために使われる。本稿に例示的として記載される任意の側面または設計は、必ずしも、他の側面または設計に対して有利であると解釈されるものではない。むしろ、例示的という語の使用は、概念を具体的な仕方で提示することを意図したものである。本願での用法では、用語またはは排他的なまたはではなく包含的なまたはを意味することが意図されている。すなわち、特に断わりのない限りまたは文脈から明らかではない限り、XはAまたはBを用いるは自然な包含的な置換の任意のものを意味することが意図されている。すなわち、XがAを用いる;XがBを用いる;またはXがAおよびBの両方を用いるのであれば、XはAまたはBを用いるは上記の事例のいずれかのもとで満たされる。さらに、本願および付属の請求項で使われるところの冠詞aおよびanは、そうでないことが記載されているまたは単数形に向けられていることが文脈から明らかなのでない限り、一つまたは複数を意味する。また、本開示は、一つまたは複数の実装に関して図示され記述されたが、本明細書および付属の図面を読み、理解することに基づいて、他の当業者にも等価な変更および修正が思いつくであろう。本開示はそのようなすべての修正および変更を含み、付属の請求項の範囲によってのみ限定される。特に上記のコンポーネントたとえば要素、資源などによって実行されるさまざまな機能に関し、そのようなコンポーネントを記述するために使われる用語は、特にそうでないことが示されていない限り、本開示の本稿で例解された例示的な実装における当該機能を実行する開示された構造と構造的に等価でないとしても、記述されるコンポーネントの指定される機能たとえば、機能的に等価なを実行する任意のコンポーネントに対応することが意図されている。さらに、本開示の特定の特徴はいくつかの実装の一つのみに関して開示されたことがありうるが、そのような特徴は、任意の所与のまたは特定の応用のために所望されるまたは有利でありうるように、他の実装の一つまたは複数の他の特徴と組み合わされてもよい。さらに、用語含む有するもつまたはそれらの変形が詳細な説明または請求項において使用される限りにおいて、そのような用語は用語comprisingと同様の仕方で包含的であることが意図されている。