(57)【要約】  クラスタベースの記憶システムにおいてデータをスクラビングするための技術について開示する。この技術は、複数の記憶装置に記憶されたデータオブジェクトの複製とデータオブジェクトのハッシュ値とを定期的に読み取り且つエラーを含むそれらのデータオブジェクトの複製を書き換えることにより、記憶装置の障害からデータを保護することができる。本開示は、データオブジェクトの複製とハッシュを書き込み、データオブジェクトの複製の有効性をチェックし、このチェック結果に基づいて、データスクラビングを実行する態様を対象とする。
2016526720.tif 000002
【特許請求の範囲】
【請求項１】
データスクラビングのためのコンピュータ実行方法であって、当該方法は：
複数の記憶装置を含むクラスタベースの記憶システムをメンテナンスするステップと；
データオブジェクトに関連付けられた複数の複製を所定数の記憶装置で、１つの記憶装置毎に１つの複製を記憶するステップと；
各複製に関連付けられた複数のハッシュ値を前記複数の記憶装置で、１つの記憶装置毎に１つのハッシュ値を記憶するステップと；
１つ又は複数のプロセッサによって、前記複数のハッシュ値のうちの第１のハッシュ値を前記複数の記憶装置のうちの１つからロードするステップと；
前記１つ又は複数のプロセッサによって、第１のハッシュ値に対応するデータオブジェクトの複製をロードして、ロードしたデータオブジェクトを取得するステップと；
前記１つ又は複数のプロセッサによって、前記ロードしたデータオブジェクトに対する第２のハッシュ値を計算するステップと；
前記１つ又は複数のプロセッサによって、第１のハッシュ値と第２のハッシュ値とを比較して、前記データオブジェクト又は第１のハッシュ値のいずれかの破損を特定するステップと；
前記比較に基づいて、前記１つ又は複数のプロセッサによって、前記複数の複製のうちの１つの複製に少なくとも部分的に基づいて、前記データオブジェクトと第１のハッシュ値とを復旧するステップと；を含む、
方法。
【請求項２】
ハッシュ値は、ハッシュ関数を用いて前記データオブジェクトに対して計算される、
請求項１に記載の方法。
【請求項３】
前記複数の記憶装置のそれぞれは、複数のインデックスセクション及びデータセクションに分割され、各インデックスセクションは、対応するデータセクションに記憶されたデータオブジェクトのハッシュ値及びサイズを含む、
請求項１に記載の方法。
【請求項４】
前記データオブジェクトのハッシュ値を生成するステップと；
前記データオブジェクトの所定数の複製と前記ハッシュ値とを前記複数の記憶装置に書き込むステップと；
前記データオブジェクトをデータセクションに記憶し、前記ハッシュ値をインデックスセクションに記憶するステップと；をさらに含む、
請求項１に記載の方法。
【請求項５】
第１のハッシュ値は、前記データオブジェクトのデジタル署名を表す、
請求項１に記載の方法。
【請求項６】
前記データオブジェクトに関連付けられた前記複数の複製を記憶する前記複数の記憶装置を定期的にスキャンするステップと；
前記複数の複製のそれぞれのハッシュ値を再計算して、再計算したハッシュ値を取得するステップと；
前記複数のハッシュ値のそれぞれを前記再計算したハッシュ値と比較するステップと；
該比較に基づいて、前記複数の複製のそれぞれの有効性を評価するステップと；
該評価に基づいて、前記複数の複製のうちの１つ又は複数を検証された複製と選択的に置換するステップと；をさらに含む、
請求項１に記載の方法。
【請求項７】
前記比較に基づいて、前記複数のハッシュ値のそれぞれの有効性を評価するステップと；
前記評価に基づいて、前記複数のハッシュ値のうちの１つ又は複数を検証されたハッシュ値と選択的に置換するステップと；を含む、
請求項６に記載の方法。
【請求項８】
前記スキャンの頻度は、１つ又は複数の所定の基準に基づいており、該所定の基準は、記憶装置の寿命、使用時間、記憶装置の健全性レポート、及び動作状態のうちの１つ又は複数を含む、
請求項６に記載の方法。
【請求項９】
全ての複製が破損していることを判定するステップと；
ハッシュ値の１ビットを反転することによって、調整したハッシュ値を生成するステップと；
前記調整したハッシュ値と前記再計算したハッシュ値とを比較するステップと；
該比較に基づいて、前記調整したハッシュ値と前記再計算したハッシュ値とが一致するか否かを判定するステップと；
前記調整したハッシュ値が前記再計算したハッシュ値と一致する場合に、全てのハッシュ値を検証されたハッシュ値に置換するステップと；
前記調整したハッシュ値が前記再計算したハッシュ値と不一致である場合に、前記ビットが復元され、更なるビットを反転するステップと；をさらに含む、
請求項６に記載の方法。
【請求項１０】
前記比較に基づいて、前記ハッシュ値においてどのビットが反転せずに、一致するハッシュ値をもたらしたかを判定するステップと、
前記データオブジェクトの１ビットを反転することにより、調整したデータオブジェクトを形成するステップと、
該調整したデータオブジェクトに対して調整したハッシュ値を計算するステップと、
該調整したハッシュ値を前記記憶装置に記憶したハッシュ値と比較するステップと、
該比較に基づいて、前記調整したハッシュ値と前記ハッシュ値のいずれかとが一致するか否かを判定するステップと、を含み、
前記調整したハッシュ値が前記ハッシュ値と一致する場合に、全てのデータオブジェクトの複製を前記調整したデータオブジェクトに置換し、
前記調整したハッシュ値が前記ハッシュ値と不一致である場合に、前記ビットが復元され、更なるビットを反転させる、
請求項９に記載の方法。
【請求項１１】
データスクラビングのためのシステムであって、当該システムは：
複数の記憶装置を含むクラスタベースの記憶システムをメンテナンスし；
データオブジェクトに関連付けられた複数の複製を所定数の記憶装置で、１つの記憶装置毎に１つの複製を記憶し；
各複製に関連付けられた複数のハッシュ値を複数の記憶装置で、１つの記憶装置毎に１つのハッシュ値を記憶し；
前記複数のハッシュ値のうちの第１のハッシュ値を前記複数の記憶装置のうちの１つからロードし；
第１のハッシュ値に対応するデータオブジェクトの複製をロードして、ロードしたデータオブジェクトを取得し；
該ロードしたデータオブジェクトに対する第２のハッシュ値を計算し；
第１のハッシュ値と第２のハッシュ値とを比較して、前記データオブジェクト又は第１のハッシュ値のいずれかの破損を特定し；
前記比較に基づいて、前記複数の複製のうちの１つの複製に少なくとも部分的に基づいて、前記データオブジェクトと第１のハッシュ値とを復元する；
ように構成された１つ又は複数のプロセッサを含む、
システム。
【請求項１２】
ハッシュ値は、ハッシュ関数を用いて前記データオブジェクトに対して計算される、
請求項１１に記載のシステム。
【請求項１３】
前記複数の記憶装置のそれぞれは、複数のインデックスセクション及びデータセクションに分割され、各インデックスセクションは、対応するデータセクションに記憶されたデータオブジェクトのハッシュ値及びサイズを含む、
請求項１１に記載のシステム。
【請求項１４】
１つ又は複数のプロセッサは：
前記データオブジェクトのハッシュ値を生成し；
前記データオブジェクトの所定数の複製と前記ハッシュ値とを所定数の記憶装置に書き込み；
前記記憶装置のそれぞれで、前記データオブジェクトをデータセクションに記憶し、前記ハッシュ値をインデックスセクションに記憶する；
ようにさらに構成される、
請求項１１に記載のシステム。
【請求項１５】
前記ハッシュ値は、前記データオブジェクトのデジタル署名を表す、
請求項１１に記載のシステム。
【請求項１６】
前記１つ又は複数のプロセッサは：
前記データオブジェクトに関連付けられた前記複数の複製を記憶する前記複数の記憶装置を定期的にスキャンし；
前記複数の複製のそれぞれのハッシュ値を再計算して、再計算したハッシュ値を取得し；
前記複数のハッシュ値のそれぞれを前記再計算したハッシュ値と比較し；
該比較に基づいて、前記複数の複製のそれぞれの有効性を評価し；
該評価に基づいて、前記複数の複製のうちの１つ又は複数を検証された複製と選択的に置換する；
ようにさらに構成される、
請求項１１に記載のシステム。
【請求項１７】
前記１つ又は複数のプロセッサは：
前記比較に基づいて、前記複数のハッシュ値のそれぞれの有効性を評価し；
前記評価に基づいて、前記複数のハッシュ値の１つ又は複数を検証されたハッシュ値と選択的に置換する；
ようにさらに構成される、
請求項１６に記載のシステム。
【請求項１８】
前記スキャンの頻度は、１つ又は複数の所定の基準に基づいており、該所定の基準は、記憶装置の寿命、使用時間、記憶装置の健全性レポート、及び動作状態のうちの１つ又は複数を含む、
請求項１６に記載のシステム。
【請求項１９】
前記１つ又は複数のプロセッサは：
全ての複製が破損していることを判定し；
ハッシュ値の１ビットを反転することによって、調整したハッシュ値を生成し；
該調整したハッシュ値と前記再計算したハッシュ値とを比較し；
該比較に基づいて、前記調整したハッシュ値と前記再計算したハッシュ値とが一致するか否かを判定し；
前記調整したハッシュ値が前記再計算したハッシュ値と一致する場合に、全てのハッシュ値を検証されたハッシュ値に置換し；
前記調整したハッシュ値が前記再計算したハッシュ値と不一致である場合に、前記ビットが復元され、更なるビットを反転する；
ようにさらに構成される、
請求項１６に記載のシステム。
【請求項２０】
前記１つ又は複数のプロセッサは：
前記比較に基づいて、前記ハッシュ値においてどのビットが反転せずに、一致するハッシュ値をもたらしたかを判定し；
前記データオブジェクトの１ビットを反転することにより、調整したデータオブジェクトを形成し；
該調整したデータオブジェクトに対して調整したハッシュ値を計算し；
該調整したハッシュ値を前記記憶装置に記憶したハッシュ値と比較し；
該比較に基づいて、前記調整したハッシュ値と前記ハッシュ値のいずれかとが一致するか否かを判定し；
前記調整したハッシュ値が前記ハッシュ値と一致する場合に、全てのデータオブジェクトの複製を前記調整したデータオブジェクトに置換し；
前記調整したハッシュ値が前記ハッシュ値と不一致である場合に、前記ビットが復元され、更なるビットを反転させる；
ようにさらに構成される、
請求項１９に記載のシステム。
【請求項２１】
非一時的な機械可読媒体であって、１つ又は複数のプロセッサによって実行されるとき、当該媒体は：
複数の記憶装置を含むクラスタベースの記憶システムをメンテナンスし；
データオブジェクトに関連付けられた複数の複製を所定数の記憶装置で、１つの記憶装置毎に１つの複製を記憶し；
各複製に関連付けられた複数のハッシュ値を複数の記憶装置で、１つの記憶装置毎に１つのハッシュ値を記憶し；
前記複数のハッシュ値のうちの第１のハッシュ値を前記複数の記憶装置のうちの１つからロードし；
第１のハッシュ値に対応するデータオブジェクトの複製をロードして、ロードしたデータオブジェクトを取得し；
該ロードしたデータオブジェクトに対する第２のハッシュ値を計算し；
第１のハッシュ値と第２のハッシュ値とを比較して、前記データオブジェクト又は第１のハッシュ値のいずれかの破損を特定し；
前記比較に基づいて、前記複数の複製のうちの１つの複製に少なくとも部分的に基づいて、前記データオブジェクトと第１のハッシュ値とを復元する；
ような動作を実行する命令を含む、
媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１３年６月１９日に出願された米国仮特許出願第６１／８３７，０７８号の利益を主張するものである。この仮出願の開示は、あらゆる目的で参照することにより本明細書に組み込まれる。
【０００２】
本開示は、概してデータ処理に関し、より具体的にはクラスタベースの記憶システムにおけるデータスクラビングに関する。
【背景技術】
【０００３】
このセクションで説明する手法を追求することができるが、この手法は、必ずしも以前に着想又は追求された手法ではない。従って、特に明記しない限り、このセクションで説明するいずれのアプローチも、単にこのセクションに含まれているという理由により、先行技術としての適格性を有するものと想定すべきでない。
【０００４】
典型的なコンピュータの記憶システムは、ソフトウェアに関連付けられたデジタルデータ、デジタル文書、及び他のリソースを記憶するように構成された１つ又は複数のメモリ装置を含む。例えば、メモリ装置は、機械的なハードディスクドライブ（HHD）、ＮＡＮＤ（Negated AND or NOT AND）フラッシュ等の固体状態ドライブ（SSD）、ランダムアクセスメモリ（RAM）、読み出し専用メモリ（ROM）、又は他のタイプのデバイスを含むことができる。各タイプのメモリ装置は、特定の目的、性能範囲、及び動作環境に適している。
【０００５】
一般に、メモリ装置は故障し、従って（磁気的、光学的、電子的な）様々なメモリ装置に記憶されたデータは、様々な壊変(decay)を受ける。例えば、（ＨＤＤに）磁気的に記憶されたデータは、磁場の低下によって失われることがある。さらに、（例えば、ＳＳＤの）材料構造を変更することによって記憶したデータが、その構造の更なる変化によって失われることがある。ＨＤＤ及びＳＳＤの両方は、物理的な損傷を受け易く、いくつかのセクションで完全及び部分的な障害が発生し易いことがある。このようなファームウェア及びソフトウェアのバグ等の他の問題は、様々な問題をメモリ装置に記憶されたデータに引き起こす可能性もある。
【０００６】
これらの問題を軽減するための１つの一般的な解決策は、冗長ディスクドライブ間でデータを複製することである。そのような冗長ドライブ手法の１つは、ＲＡＩＤ（Redundant Array of Independent Disks）によって促進される。複数の物理ディスクは、そのデータをアレイに記憶する前に、パリティデータをオリジナルデータに追加したアレイを含む。このパリティは、１つ又は複数のディスクの障害によってオリジナルデータが失われないように計算される。オリジナルデータは、１つ又は複数のディスクが故障した場合に、機能ディスクから再構成することができる。ＲＡＩＤは、複数のディスクのうちのいずれかによる障害からデータを保護するために、例えば３つ以上のディスクを使用し得る。
【０００７】
ＲＡＩＤは、データをストレージレベルで複製するステップを含むため、コピーされた時にこのコピーされたデータが既にエラーを有している場合には、複数のコピーに亘ってエラーを伝搬させ得る。従来のＲＡＩＤの解決策の他の欠点は、データをインプレース(in-place)で編集することに関連しており、このインプレースでの編集は、編集されるデータオブジェクトに追加のエラーを形成する、又はデータオブジェクトの近くにエラーを形成する恐れがある。例えば、ＳＳＤ装置への書き込みは、近くの材料の構造に影響を与え、他のデータセクタのエラーにつながる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従って、記憶装置の障害による悪影響を最小限にし、効率を改善し、データ損失に対する保護を強化するようなストレージ技術を開発する必要がある。
【課題を解決するための手段】
【０００９】
この概要は、概念の選択を簡略化した形態で紹介するために提供されており、その概念は、以下の詳細な説明でさらに説明する。この概要は、特許請求の範囲に記載された主題の主な特徴又は本質的な特徴を特定することを意図するものではなく、特許請求の範囲に記載された主題の範囲を決定する助けとして使用されることも意図していない。
【００１０】
本開示の一態様によれば、クラスタベースの記憶システムにおいてデータをスクラビングする方法が、提供される。この方法は、複数の記憶装置を有するクラスタベースの記憶システムをメンテナンスするステップを含むことができ、複数の記憶装置は、複数のデータオブジェクト及び関連する情報を本明細書で説明するメンテナンスをするように構成される。さらに、この方法は、データオブジェクトに関連付けられた複数の複製を所定数の記憶装置に、例えば記憶装置毎に１つの複製を記憶するステップを含むことができる。この方法は、各複製に関連付けられた複数のハッシュ値を複数の記憶装置に、例えば記憶装置毎に１つのハッシュ値を記憶するステップも含むことができる。
【００１１】
特定の実施形態では、異なるオブジェクト値が統計的に異なるハッシュとなることを保証するようなハッシュ関数を用いて、オブジェクトデータに対してハッシュ値を計算してもよい。例えば、暗号ハッシュ関数ＳＨＡ１を使用することができる。ＳＨＡ１は、２１６０の異なる値を有し得るハッシュ値を生成し、それにより異なるコンテンツを含む２つ以上のデータオブジェクトが同じハッシュ値をとなることが統計的に起こり得ないようにする。
【００１２】
特定の実施形態では、クラスタ内で破損が生じる前にハッシュ値を計算することを確実にするために、データオブジェクトをクラスタに受け渡す前に、各データオブジェクトのハッシュ値を計算してもよい。一般的に、ハッシュ値が、元のデータオブジェクトにより近くなるように計算されると、障害のタイプをより修正し易くすることができる。さらに他の実施形態では、各データオブジェクトのハッシュ値を計算し、次に、このハッシュ値を、対応するデータオブジェクトと一緒にクラスタベースの記憶システムに受け渡すことができる。この手法を用いて、クライアントからクラスタベースの記憶システムへの転送中に、データオブジェクトが破損していないことを保証することができる。
【００１３】
また、データスクラビング方法は、複数のハッシュ値のうちの第１のハッシュ値を複数の記憶装置のうちの１つからロードするステップを含むことができる。この方法は、第１のハッシュ値に対応するデータオブジェクトの複製をロードするステップをさらに含むことができる。この方法は、第１のデータオブジェクトに対する第２のハッシュ値を計算するステップも含むことができる。この方法は、第１のハッシュ値と第２のハッシュ値とを比較して、データオブジェクト又は第１のハッシュ値のいずれかの破損を特定するステップも含むことができる。この比較に基づいて（例えば、第１のハッシュ値が第２のハッシュ値と異なる場合に）、この方法は、１つ又は複数のプロセッサによって、複数の複製のうちの１つの複製に少なくとも部分的に基づいて、データオブジェクトを復元するステップに進むことができる。
【００１４】
特定の実施形態では、クラスタベースの記憶システムは、データオブジェクトを記憶するための複数の記憶装置を含んでもよい。また、各記憶装置は、複数のインデックスセクション及びデータセクションに分割することができ、ここでインデックスセクションは、データセクションに記憶された対応するデータオブジェクトのハッシュ値やサイズを記憶することができる。特定の実施形態では、データスクラビング方法は、データオブジェクトのハッシュ値を生成することから開始し、１つ又は複数のデータオブジェクトの複製及びハッシュ値を１つ又は複数の記憶装置に書き込み、１つ又は複数のデータオブジェクトをデータセクションに記憶するとともに、対応するハッシュ値をインデックスセクションに記憶することができる。
【００１５】
なお、ハッシュ値を生成すること及び１つ又は複数のデータオブジェクトを書き込むことは、特許請求の範囲に記載される本発明の目的を達成するために必ずしも厳密には必要ではないことを理解されたい。従って、ハッシュ値は、既に生成されており、データオブジェクトは書き込まれていてもよい。
【００１６】
特定の実施形態では、ハッシュ値は、データオブジェクトのデジタル署名を含んでもよい。デジタル署名が得られる署名アルゴリズムの例には、ＳＨＡ−１、ＳＨＡ−３、ＴＩＧＥＲ等が挙げられる。特定の実施形態では、この方法は、記憶装置を定期的にスキャンするステップを含んでもよい。スキャン中に、ハッシュ値及び対応するデータオブジェクトをロードする前述したステップが、全ての記憶装置内に記憶された各複製に対して実行される。従って、各データオブジェクトの複製は、ロードしたハッシュ値と再計算したハッシュ値とを比較することにより、その有効性について評価することができる。両者の間に差がない場合に、対応するデータオブジェクトを有効であるとみなす。そうでない場合、つまり第１のハッシュ値と第２のハッシュ値とが異なる場合に、データオブジェクトは、既に検証された複製に置換される。この点では、各データオブジェクトの複製が、既に検証されていることが重要である。
【００１７】
特定の実施形態では、特定のデータオブジェクトの複製が、破損を受けていることが検証されたときに、この方法は、コンピュータによる復旧プロセスを試みるように進めることができる。
【００１８】
具体的には、コンピュータによる第１の復旧プロセスによれば、上述した方法により生成された「強力な」デジタル署名を含むハッシュ値内に単一ビットエラーが、検出され、このエラーは、対応するデータオブジェクトにもエラーが存在するか否かの事前の知見無しに修正される。この目的のために、この方法は、最初に、データオブジェクトのハッシュ値を計算し、次に１つずつハッシュ値のビットをフリップ（反転）するステップを行うことによりハッシュ値を調整し、調整したハッシュ値と計算したハッシュ値とを比較する。このプロセスは、一致が存在するか、又は全ての単一ビットのフリップが試行されるまで、繰り返すことができる。一致が見つかった場合に、破損が検出され、新たなハッシュ値を対応する記憶装置に書き込むことができる。
【００１９】
あるいはまた、一致が見つからない場合に、コンピュータによる第２の復旧プロセスによれば、記憶装置から読み出されたハッシュ値を正確であるとみなすことができ、このアルゴリズムは、データオブジェクト内の単一ビットエラーについての復旧を試みるように進めることができる。この目的のために、この方法は、記憶したデータオブジェクト値のビットを１つずつフリップ（反転）させるステップを行うことにより、データオブジェクトを調整し、この調整したハッシュ値と記憶したハッシュ値とを比較することにより、調整したデータオブジェクトのハッシュ値を計算することができる。このプロセスは、一致が存在するか、又は全ての単一ビットのフリップが試行されるまで、繰り返すことができる。一致が見つかった場合に、破損が検出され、新しいデータオブジェクトを記憶装置に再び書きこむことができる。
【００２０】
特定の実施形態では、上述したコンピュータによる第１及び第２の復旧プロセスの両方において、一致を見つけられなかった場合に、これは、ハッシュ値又はデータオブジェクト内の複数のビットについて、エラーを特定するためにフリップする必要があり得ることを意味し、上記と同じスキームに続く。従って、特定の実施形態では、上述したコンピュータによる復旧プロセスを繰り返してもよいが、複数ビットを一度に反転してもよい。
【００２１】
特定の実施形態では、このアルゴリズムを並列に実行することができる。換言すれば、複数の並列に実行されるコンピュータによる復旧プロセスがあってもよく、各プロセスは、ハッシュ値及びデータオブジェクト内の特定数のビットをフリップさせる。
【００２２】
様々な実施形態では、記憶装置のスキャンを定期的に行ってもよいが、スキャンの頻度は、１つ又は複数の所定の規則又は基準を基づいてもよい。例示的な実施形態では、スキャン頻度は、記憶装置の寿命、使用時間、記憶装置の健全性レポート、動作状態（例えば、アイドル状態）等に依存してもよい。様々な実施形態では、記憶装置のスキャンは、無関係の読み出し動作中に実行されるような機会を見つけて(opportunistic)行われる。換言すれば、スキャンプロセスは、エンドユーザの要求に応じてオブジェクトを読み出す等の無関係なアクセスによって開始される読み出し動作を利用することができる。
【００２３】
本開示の更なる例示的な実施形態では、本明細書で説明する方法ステップを実施するように構成されたファイルシステムが提供される。本開示のさらに他の例示的な実施形態では、方法ステップは、１つ又は複数のプロセッサによって実行されるときに、上述したステップを行う命令を含む機械可読媒体上に格納される。さらに別の例示的実施形態では、ハードウェアシステム、又はデバイスは、上述したステップを実行するように構成することができる。他の特徴、実施例、及び実施形態について、以下で説明する。
【図面の簡単な説明】
【００２４】
【図１】本明細書で開示する実施形態を実施するのに適した例示的なシステムアーキテクチャの高レベルブロック図である。
【図２】データオブジェクトの書き込みプロセスを説明する例示的なシステムアーキテクチャの高レベルブロック図である。
【図３】記憶装置（複数可）の高レベルの図である。
【図４】データオブジェクトを記憶装置に書き込む方法を示すプロセスフロー図である。
【図５】データスクラビング方法のプロセスフロー図である。
【図６】ビットロットの影響を受けたデータを復旧する方法のプロセスフロー図である。
【図７】ビットロットの影響を受けたデータを復旧する方法のプロセスフロー図である。
【図８】コンピュータシステムの例示的な電子形態でのマシンについてのコンピュータ装置の概略図であり、このコンピュータシステム内で、マシンに本明細書で説明する方法のいずれか１つ又は複数を行わせるための命令セットを実行することができる。
【発明を実施するための形態】
【００２５】
実施形態が、添付の図面に、限定ではなく例として示されており、それら図面では、同様の参照符号は、同様の要素を指す。
以下の詳細な説明は、この詳細な説明の一部を形成する添付図面への参照を含む。図面は、例示的な実施形態に従った図を示す。「実施例」として本明細書中で参照されるこれらの例示的な実施形態について、当業者が本発明の主題を実践できるように十分に詳細に説明している。これらの実施形態を組み合わせることができ、他の実施形態を利用することができ、又は構造的、論理的、及び電気的な変更は、特許請求の範囲に記載される範囲から逸脱することなく行うことができる。従って、以下の詳細な説明は、限定的な意味で解釈すべきでなく、本発明の範囲は、添付の特許請求の範囲及びその均等物によって規定される。この文書では、用語「１つの(a, an)」は、特許文献において一般的であるように、１つ又は複数を含むように使用される。この文書では、用語「又は」は、非排他的であることを意味するように使用され、他に指示がない限り、「Ａ又はＢ」は、「ＡではなくＢ」、「ＢではなくＡ」、及び「Ａ及びＢ」を含む。
【００２６】
本明細書に開示される実施形態の技術は、様々な技術を用いて実施することができる。例えば、本明細書で説明する方法は、コンピュータシステムで実行されるソフトウェアで、或いはマイクロプロセッサの組合せ又は他の特別に設計された特定用途向け集積回路（ASIC）のいずれか、プログラマブル論理デバイス、又はそれらの様々な組合せを利用するハードウェアで実施することができる。特に、本明細書で説明する方法を、ディスクドライブ等の記憶媒体又はコンピュータ可読媒体に存在する一連のコンピュータ実行可能命令によって実施してもよい。本明細書で説明する方法は、コンピュータ（例えば、サーバ、デスクトップコンピュータ、タブレットコンピュータ、ラップトップコンピュータ）、ゲーム機、携帯ゲーム機、携帯電話、スマートフォン、スマートテレビシステム等によって実施できることに留意されたい。
【００２７】
本明細書で説明する技術は、クラスタベースの記憶システムにおけるデータスクラビングに関する。この技術は、複数の記憶装置内に記憶されたデータオブジェクトの複製を定期的に読み出し且つ損傷を受けたデータオブジェクトの複製を書き換えることにより、記憶装置の障害からデータを保護することを可能にする。本開示は、データオブジェクトの複製を書き込み、データオブジェクトの複製の有効性をチェックし、且つこのチェック結果に基づいて、データスクラビングを実行する態様を対象としている。
【００２８】
図１は、本明細書で開示する実施形態を実施するのに適した例示的なシステムアーキテクチャ１００の高レベルブロック図を示す。システムアーキテクチャ１００は、１つ又は複数のストレージノード１０５から構成される分散型ストレージネットワーク（DSN）を含むことができる。各ノード１０５は、ネットワークを介して他のノード１０５と通信することができ、アーキテクチャ１００をクラスタベースの記憶システムとして形成する。
【００２９】
図に示されるように、各ストレージノード１０５は、プロセッサ、コントローラ、マイクロプロセッサ、マイクロコントローラ、論理回路、中央演算処理装置（CPU）、又は任意の他の同様のコンピュータデバイス等の処理装置１１０を含む。特定の実施形態では、処理装置１１０は、ユーザ装置に又はネットワーク環境（例えば、サーバ内）に存在してもよい。各ストレージノード１０５は、データオブジェクトと、ハッシュ値及びデジタル署名等の関連情報とを記憶するように構成された複数の記憶装置１２０も含む。各ストレージノード１０５は、ファイル管理装置１３０を含んでもよい。ファイル管理装置１３０は、複数の記憶装置１２０におけるデータオブジェクトの転送及び記憶を管理するように構成することができる。しかしながら、さらに他の例では、システム１００全体で単に１つのファイル管理装置１３０があってもよい。
【００３０】
図２は、例示的な実施形態に係るデータオブジェクト２３０の書き込みプロセスを説明する例示的なシステムアーキテクチャ２００の高レベルブロック図を示す。図に示されるように、いくつかのシャーシ２１０Ａ−Ｃが示されている。例えば、各シャーシＡ−Ｃは、データオブジェクトを記憶するための複数の記憶装置１２０を含むことができる。記憶装置１２０は、機械的なハードディスクドライブ（HHD）、固体状態ドライブ（SSD）、ＮＡＮＤフラッシュ、ＲＡＭ、ＲＯＭ、又は他のタイプの記憶装置等の広範なコンピュータメモリから選択してもよい。シャーシ２１０Ａ−Ｃは、ハッシュ値、データオブジェクトのアドレス、デジタル署名等を記憶するデータベース２２０Ａ−Ｃも含むことができる。
【００３１】
本開示の様々な実施形態によれば、特定数のデータオブジェクト２３０の複製を複数のシャーシ２１０Ａ−Ｃで、シャーシ毎に１つのデータオブジェクト２３０を作成し且つ保存することができる。データオブジェクト２３０は、データオブジェクト２３０及びデータオブジェクトのハッシュを内部記憶装置１２０に記憶する責任がある各シャーシに複製される。所望の複製係数を達成するのに十分なシャーシがない場合に、シャーシは、他の内部記憶装置１２０に追加の複製を記憶してもよい。例えば、処理装置１１０は、このデータオブジェクト２３０の３つの複製を生成し、各シャーシ２１０Ｂ−Ｃに１つの複製を送信し、及び内部記憶装置１２０に１つの複製を記憶することができる。シャーシ２１０Ｂ−Ｃでデータオブジェクトを受信すると、これら各シャーシは、内部記憶装置１２０に１つの複製を記憶する。特定の実施形態では、処理装置１１０は、シャーシ２１０Ａ−Ｃの一部であってもよい。
【００３２】
本技術は、データオブジェクト２３０が決して上書きされないことを保証する。こうして、データオブジェクト２３０の新しいバージョンを、これまで未使用のディスク領域に書き込むことができ、古いバージョンの位置は、新しいバージョンが収容(commit)された後まで、その未使用の領域に追加することはできない。対照的に、従来の記憶システムは、データをインプレース(in-place)で編集することができ、それによって記憶したデータを上書きすることができる。
【００３３】
図３は、例示的な実施形態に係る記憶装置１２０に記憶されたデータ構造の高レベルの図を示す。具体的には、記憶装置１２０によって使用される例示的な構造３００が示されており、この構造３００は、インデックスセクション３１０とデータオブジェクトセクション３２０とを含むことができる。データオブジェクトセクション３２０は、ファイル、ファイルの一部、情報項目、ソフトウェアコード、又は他の任意のデジタル情報等の各種データオブジェクトを記憶することができる。インデックスセクション３１０は、ヘッダー、ハッシュ値、データオブジェクトセクション３２０に記憶された各データオブジェクトに関連付けられたサイズ、及びデジタル署名を含むことができる。ハッシュ値は、例えば、セキュアハッシュアルゴリズム（SHA）等の衝突(collision)に耐性を有する任意の適切なハッシュアルゴリズムを利用して計算することができる。特定の実施形態では、インデックスセクション３１０は、インデックスセクション３１０に関連付けられたデジタル署名を含んでもよい。特定の実施形態では、デジタル署名は、インデックスセクション３１０全体のコンテンツに亘って計算されたＳＨＡ値等のハッシュ値を含んでもよい。３つのデータオブジェクト及び３つのハッシュ値のみが示されているが、そのようなデータオブジェクト及びハッシュ値の数が変化し得ることは明らかである。
【００３４】
図４は、例示的な実施形態に係るデータオブジェクトをシャーシ２１０に書き込む方法４００を示すプロセスフロー図を示す。方法４００は、ハードウェア（例えば、意思決定ロジック、専用ロジック、プログラム可能ロジック、マイクロコード）、ソフトウェア（例えば、汎用コンピュータシステム又は専用マシン上で実行されるソフトウェア）、又は両方の組合せを含む処理ロジックによって実行することができる。特定の実施形態では、方法４００は、図１，２を参照して上述したシステムアーキテクチャ１００又は２００において実施することができる。
【００３５】
図４に示されるように、方法４００は、動作４１０で、記憶すべきデータオブジェクトのハッシュ値を（例えば、ＳＨＡを使用して）計算する処理装置１１０を用いて開始することができる。動作４２０で、ハッシュ値を、記憶装置１２０のインデックスセクション３１０内に記憶する。動作４３０で、処理装置１１０は、データオブジェクトをデータオブジェクトセクション３２０に記憶する。オプションの動作４４０で、処理装置１１０は、ハッシュ値と、データオブジェクトの位置アドレスとをデータベース２２０に記憶してもよい。さらに、動作４１０〜４４０は、複製を保持するように選択された各記憶装置１２０に対して繰り返される。例えば、３の複製係数を達成するために、動作４１０−４４０は、各シャーシ２１０Ａ−Ｃ内で１回、計３回実施される。
【００３６】
こうして、各記憶装置１２０は、データオブジェクトの複製と、対応するハッシュ値とを記憶することができる。各データベース２２０Ａ−２２０Ｃは、データオブジェクトのハッシュ値と、データオブジェクトの複製及びハッシュが記憶されてシャーシ内の対応する位置とを記憶することができる。この位置は、記憶装置と、この記憶装置内でのハッシュ及びデータオブジェクトが記憶された位置とを含む。
【００３７】
図５は、例示的な実施形態に係るデータスクラビング方法５００のプロセスフロー図を示す。方法５００は、ハードウェア（例えば、意思決定ロジック、専用ロジック、プログラム可能ロジック、マイクロコード）、ソフトウェア（例えば、汎用コンピュータシステム又は専用マシン上で実行されるソフトウェア）、又は両方の組合せ含む処理ロジックによって実行することができる。特定の実施形態では、方法５００は、図１，２を参照して上述したシステムアーキテクチャ１００又は２００において実施することができる。
【００３８】
方法５００は、動作５０５で、インデックスセクション３１０にアクセスし且つこれをスキャンする処理装置１１０を用いて開始することができる。動作５１０で、処理装置１１０は、記憶装置１２０からハッシュ値（以下、「第１のハッシュ値」と呼称する）をロードすることができる。動作５１５で、処理装置１１０は、同じ記憶装置１２０から記憶されたデータオブジェクトの複製をロードすることができる。動作５２０で、処理装置１１０は、ロードしたデータオブジェクトについて第２のハッシュ値を計算することができる。動作５３０で、処理装置１１０は、第１及び第２のハッシュ値を比較することができる。動作５４０に示されるように、第１のハッシュ値と第２のハッシュ値とが等しいと判定された場合に、記憶装置１２０に記憶されたデータオブジェクトの複製及びハッシュ値にはエラーが存在しない。これに対して、第１のハッシュ値と第２のハッシュ値とが異なると判定された場合に、記憶装置１２０に記憶されたデータオブジェクトの複製は、無効とみなされ、本方法は、動作５５０に進む。
【００３９】
動作５５０で、上述した同じプロセスを使用して、他の複製の対応するオブジェクトを確認することができる。動作５６０で、少なくとも１つの有効なオブジェクト又は破損していないハッシュが記憶装置１２０内に存在すると判定された場合に、動作５７０で、無効のデータオブジェクト又は破損したハッシュを修正バージョンに置換することができる。有効なオブジェクトが記憶装置１２０内に見つからない場合に、この方法は、次に、ビットロット（rot:時間経過による破損）を補正する技術を試行できるときに、動作５８０に進む。前述した技術は、図６及び図７を参照して以下でより詳細に説明する。
【００４０】
方法５００は、記憶装置１２０Ａ−１２０Ｃ内に記憶された各データオブジェクトの複製について独立して実行することができる。さらに、記憶装置に書き込まれたハッシュ値は、方法５００を用いて、そのハッシュ値自体を検証することができる。当業者であれば、方法５００を、全ての記憶装置１２０について定期的に繰り返してもよいことを理解するであろう。
【００４１】
本発明の様々な実施形態によれば、記憶装置１２０は、あらゆる変更を行うことができるような最小のデータサイズを有することができる。例えば、多くのＨＤＤは、５１２バイトのセクタに分割されており、こうして、あるセクタの単一のビットのみが使用できなくなった場合でも、全体のデータセクタに記憶されたデータを、他の位置に移動しなければならない。さらに、記憶装置１２０上でのいくつかのタイプのデータ破損によって、複数の連続したセクタが使用できなくなる可能性がある。この点で、複数のデータオブジェクト及び／又はハッシュが影響を受け得る。従って、本技術は、必要なときに、複数のデータセクタと、複数のハッシュと、複数のデータオブジェクトとを書き換えるステップを含むインテリジェントなデータオブジェクトスクラビングを可能にする。これは、複数のデータオブジェクト又は記憶装置間で、それらデータオブジェクトの望ましくない分割をすることなく、完全なデータオブジェクトを移動することを可能にする。
【００４２】
本開示の様々な実施形態によれば、修正されたデータオブジェクト及びこれに対応するインデックスセクションは、これまで未使用だった記憶装置１２０の新たな領域に書き込まれる。
【００４３】
さらに複数の実施形態では、統計情報が記録され、破損が繰り返されしきい値を超えたことを示す領域を使わないようにし、決して再び使用されることが無いようにすることができる。
【００４４】
本技術の別の態様によれば、既に上述したように、各インデックス領域は、インデックスセクションのデジタル署名（例えばＳＨＡ値等のハッシュ値）を含むことができる。こうして方法５００で説明したように、ハッシュ値が、再計算され且つ記憶されているハッシュと比較される前に、インデックス自体を検証することができ、前述したように同様にして、破損を修正する。
【００４５】
様々な実施形態では、方法５００を定期的に実行してもよいが、この方法を実行する頻度は、以下で説明するような所定の基準に基づいて決めてもよい。いくつかの実施例では、エラーが見つかったが修正できない場合に、記憶装置１２０がそれ自体のエラーを定期的に修正することができるので、本明細書で説明するデータスクラビング技術を、所定の時間延期してもよい。他の実施例では、例えばエンドユーザは破損を疑うので、スクラビング方法を、エンドユーザが手動で開始してもよい。
【００４６】
スキャン（動作５０５を参照）の頻度は、新たな問題がこのスキャンによって時々形成されるので、期待される利益に基づくことができる。定期的なスキャンに加えて、時期を見た（opportunistic）スキャンを行うことができる。例えば１つ又は複数のデータオブジェクトが無関係の動作中に読み出された場合に、本発明の技術は、これを利用して、このデータを読み出している間に、スキャン及びデータスクラビングを実行することができる。こうして、次回のデータスクラビングを実行し、これらのデータオブジェクトを再び読み出すことは必要としない。
【００４７】
様々な実施形態において、記憶装置１２０を複数の領域に分割することができ、様々な統計情報を各領域に保持することができる。いくつかの例には、エラーカウント、最後のスクラブをした時間、最後の書き込みをした時間、最後の読み出しをした時間、交換(retirement)までのしきい値等がある。これらの統計情報を使用して、各領域をいつ再スクラブするべきかについて将来の時間を計算することができる。一部の記憶装置１２０は、それ自体の健全性(health)に関する統計情報を報告することができ、それによってこの報告データに基づいて、データスクラビングをいつ実施するかについての決定をすることができる。例えば、装置の寿命、予想される有効期間、残りの有効期間、エラー検出率、誤り訂正率、リマップされたセクタの数等を報告することができる。ＨＤＤとは対照的に、ＳＳＤは、それ自体の障害をより良く予測することができる。従って、データスクラビングの頻度は、記憶装置のタイプと、この記憶装置によって提供される情報とに基づくことができる。
【００４８】
なお、方法５００を実行するとき、それらプロセスを遅くすることにより、記憶装置１２０を使用するプロセスに影響を与え得ることに言及しておく。そのため、所定の時点でスクラブされる記憶装置の数及びそれら記憶装置がどの様に「積極的に」スクラブされるかは、様々な要因に依存する。例えば、記憶装置は、それら記憶装置がアイドル状態である場合にのみ、全ての時間で、軽ロード時のみに、時期を見て（opportunistically）、又はシステム負荷及びユーザ応答時間に関する他のパラメータに依存して、スクラブすることができる。
【００４９】
図６及び図７は、ビットロットからデータを復旧するための方法６００，７００のプロセスフロー図を示す。既に上述したように、データスクラビングプロセスは、既に有効であると検証されたデータオブジェクトの対応する複製を使用してデータオブジェクト又はハッシュを書き換えるステップを含むことができる。しかしながら、全てのデータオブジェクトの複製が破損している又は他の問題を有している状況が存在し得る。この場合に、ビットロットが疑われ、対応する手法を用いることができる。図７に確認されるように、これらの技術は、データオブジェクト７０５内のビットを反転（フリップ）するステップと、変更されたデータオブジェクト７１０のハッシュ値を再計算するステップと、変更されたデータオブジェクトのハッシュ値と記憶されたハッシュ値７１５とを比較するステップとを含む。さらに、図６によれば、これらの技術は、データオブジェクト６０５のハッシュを計算するステップと、データオブジェクト６１０に対応する記憶されたハッシュ内のビットを反転（フリップ）するステップと、変更され記憶されたハッシュと計算されたハッシュ６１５とを比較するステップとを含む。一致が見つかった場合（６２０，７２０）に、方法６００及び７００は、前述したように、破損したバージョンをデータオブジェクト又はハッシュ値の修正されたバージョンに置換する動作５７０を継続することができる。一致が検出されない場合に、反転したビットを初期値（６３０，７３０）に復元させることができ、未だ反転していない別のビットを反転させる（６１０，７０５）ことができる。全てのビットが既に反転している場合に、他のビットロット技術を試行（６４０，７４０）してもよい。
【００５０】
様々な実施形態では、ビットロット技術は、各デバイスが異なる障害を含む可能性があるため、それぞれの記憶装置上で独立して実行してもよい。他の実施形態では、そのビットロット技術を一度実行することができ、破損したデータオブジェクト又はインデックスを含む全てのデバイスを正しいデータで書き換える。
【００５１】
図８は、コンピュータシステム８００の例示的な電子形態でのマシンについてのコンピュータ装置の概略図を示しており、このコンピュータ装置は、マシンに本明細書で議論した方法のいずれか１つ又は複数を行わせるための命令セットを実行することができる。様々な例示的な実施形態では、マシンは、スタンドアロン型装置として動作し、又は他のマシンに接続する（例えば、ネットワーク接続する）ことができる。ネットワーク化された配置では、マシンは、サーバ−クライアントネットワーク環境におけるサーバ又はクライアントマシンの能力(capacity)として、又はピアツーピア（又は分散型）ネットワーク環境におけるピアマシンとして、動作することができる。マシンは、パーソナルコンピュータ（PC）、タブレットＰＣ、セットトップボックス（STB）、携帯情報端末、携帯電話、携帯音楽プレーヤー（例えば、ＭＰＥＧ(Moving Picture Experts Group)オーディオレイヤー３（MP3）プレーヤー等のポータブルハードドライブオーディオ装置）、ゲームパッド、携帯ゲーム機、車載コンピュータ、スマートホームコンピュータ、専用機器、又はそのマシンが取るべき動作を指定する（シーケンシャル又はそれ以外の）命令セットを実行することができる任意のマシンとすることができる。さらに、単一のマシンのみが示されているが、用語「マシン」は、本明細書で議論した方法のいずれか１つ又は複数を行う命令セット（又は複数のセット）を個別に又は一緒に実行するマシンの集合も含むと解釈すべきである。
【００５２】
例示的なコンピュータシステム８００は、バス８２０を介して互いに通信するプロセッサ又は複数のプロセッサ（例えば、中央処理装置（CPU）、グラフィックス処理装置（GPU）、又は両方）、メインメモリ８１０、及びスタティックメモリ８１５を含む。コンピュータシステム８００は、英数字入力装置（例えば、キーボード）、カーソル制御装置（例えば、マウス）等の少なくとも１つの入力装置８３０も含むことができる。コンピュータシステム８００は、ディスクドライブ装置８３５及びネットワークインターフェイス装置８４５も含むことができる。
【００５３】
ディスクドライブ装置８３５は、本明細書で説明した方法又は機能のいずれか１つ又は複数を具体化する又はこれらによって利用される１つ又は複数の命令セット（例えば、命令８５５）及びデータ構造を記憶するコンピュータ可読媒体８５０を含む。命令８５５は、コンピュータシステム８００によるその命令の実行中に、メインメモリ８１０内に及び／又はプロセッサ８０５内に完全に又は少なくとも部分的に存在することもできる。メインメモリ８１０及びプロセッサ８０５は、機械可読媒体も構成する。
【００５４】
命令８５５は、さらに、多数の周知の転送プロトコル（例えば、ハイパーテキスト転送プロトコル（HTTP）、ＣＡＮ、Ｓｅｒｉａｌ、及びＭｏｄｂｕｓ等）のうちのいずれかを利用して、ネットワークインターフェイス装置８４５を介してネットワーク８６０上で送受信することができる。例えば、ネットワーク８６０は、インターネット、ローカルイントラネット、ＰＡＮ（パーソナルエリアネットワーク）、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（ワイドエリアネットワーク）、ＭＡＮ（メトロポリタンエリアネットワーク）、仮想プライベートネットワーク（VPN）、ストレージエリアネットワーク（SAN）、フレームリレー接続、高度インテリジェントネットワーク（AIN）接続、同期光ネットワーク（SONET）接続、デジタルＴ１，Ｔ３，Ｅ１又はＥ３回線、デジタルデータサービス（DDS）接続、ＤＳＬ（デジタル加入者回線）接続、イーサネット（登録商標）接続、ＩＳＤＮ（統合サービスデジタル網）回線、ケーブルモデム、ＡＴＭ（非同期転送モード）接続、又はＦＤＤＩ（ファイバ分散型データインターフェイス）又はＣＤＤＩ（銅線分散型データインターフェイス）接続のうちの１つ又は複数を含んでもよい。さらに、通信は、ＧＰＲＳ（汎用パケット無線サービス）、ＧＳＭ（登録商標）（移動通信用グローバルシステム）、ＣＤＭＡ（符号分割多重アクセス）又はＴＤＭＡ（時分割多重アクセス）携帯電話ネットワーク、ＧＰＳ、ＣＤＰＤ（セルラーデジタルパケットデータ）、ＲＩＭ（Research in Motion, limited）の二重通信方式ページングネットワーク、Ｂｌｕｅｔｏｏｔｈ（登録商標）無線、又はＩＥＥＥ８０２．１１ベースの無線周波数ネットワークを含む様々な無線ネットワークのうちのいずれかのリンクを含んでもよい。
【００５５】
コンピュータ可読媒体８５０が例示的な実施形態に単一の媒体として示されているが、「コンピュータ可読媒体」という用語は、１つ又は複数の命令セットを記憶する単一の媒体又は複数の媒体（例えば、中央集権型又は分散型データベース及び／又は関連するキャッシュ及びサーバ）を含むように解釈すべきである。用語「コンピュータ可読媒体」は、マシンによって実行される命令セットを保存、エンコード、又は搬送することができる任意の媒体、マシンに本願の方法のいずれか１つ又は複数を実行させる媒体、又はこのような命令セットによって利用される又は命令セットに関連するデータ構造を記憶、エンコード、又は搬送する媒体を含むと解釈すべきである。従って、用語「コンピュータ可読媒体」は、固体メモリ、光媒体及び磁気媒体を含むように解釈すべきであるが、これらに限定されるものではない。このような媒体は、限定するものではないが、ハードディスク、フロッピー（登録商標）ディスク、フラッシュメモリカード、デジタルビデオディスク（DVD）、ランダムアクセスメモリ（RAM）、読み出し専用メモリ（ROM）等も含むことができる。
【００５６】
本明細書で説明した例示的な実施形態は、コンピュータにハードウェア、又はソフトウェア及びハードウェアの組合せでインストールされたコンピュータ実行可能命令（例えば、ソフトウェア）を含む動作環境で実施することができる。コンピュータ実行可能命令は、コンピュータプログラミング言語で書くことができ、或いはファームウェアロジックで具現化することができる。認識された基準に準拠したプログラミング言語で書かれている場合に、そのような命令は、様々なハードウェア・プラットフォーム上で実行され、様々なオペレーティングシステムへのインターフェイスを実行することができる。これに限定されるものではないが、本発明の方法を実施するためのコンピュータソフトウェアプログラムは、例えば、ハイパーテキストマークアップ言語（HTML）、ダイナミックＨＴＭＬ、拡張マークアップ言語（XML）、拡張スタイルシート言語（XSL）、ドキュメントスタイル意味指定言語（DSSSL）、カスケーディング・スタイルシート（CSS）、同期マルチメディア統合言語（SMIL）、無線マークアップ言語（WML）、ＪａＶａ（登録商標）、Ｊｉｎｉ（登録商標）、Ｃ、Ｃ＋＋、Ｇｏ、Ｐｅｒｌ、ＵＮＩＸ（登録商標）シェル、Ｖｉｓｕａｌ
Ｂａｓｉｃ又はＶｉｓｕａｌ Ｂａｓｉｃスクリプト、仮想現実マークアップ言語（VRML）、ＣｏｌｄＦｕｓｉｏｎ（登録商標）又は他のコンパイラ、アセンブラ、インタープリタ又は他のコンピュータ言語やプラットフォーム等の多数の適切なプログラミング言語のいずれかで書き込むことができる。
【００５７】
このように、データスクラビングのための方法及びシステムが開示されている。実施形態について、特定の例示的な実施形態を参照して説明してきたが、様々な修正及び変更は、本出願の広範な精神及び範囲から逸脱することなく、これらの例示的な実施形態に対して行われ得ることは明らかであろう。従って、明細書及び図面は、限定的な意味ではなく例示としてみなすべきである。
【図１】
2016526720.tif 000003
【図２】
2016526720.tif 000004
【図３】
2016526720.tif 000005
【図４】
2016526720.tif 000006
【図５】
2016526720.tif 000007
【図６】
2016526720.tif 000008
【図７】
2016526720.tif 000009
【図８】
2016526720.tif 000010
【国際調査報告】
2016526720.tif 000011