(57)【特許請求の範囲】
【請求項１】
データ格納方法であって、
第１のデータ・チャンクがストレージ・システム中の少なくとも第１のディスク・ドライブ上の１以上のセクタの論理表現であるとして、前記第１のデータ・チャンク中に、第１のデータを格納するステップと、
第１の付録情報が前記ストレージ・システム中の少なくとも前記第１のディスク・ドライブ上のセクタの少なくとも一部を含む領域の論理表現であるとして、前記第１の付録情報中に、前記第１のデータに関連する第１のアトミック性メタデータおよび第１の有効性メタデータを含む第１のメタデータを、前記第１のデータに関連付けて格納するステップと、
前記第１のディスク・ドライブより低レベルのレイテンシを有する１以上の不揮発性ストレージ装置中に、前記第１のデータに対する前記第１の有効性メタデータの１以上のコピーを格納するステップと、
前記１以上の不揮発性ストレージ装置に格納された前記第１の有効性メタデータの前記１以上のコピーを前記低レベルのレイテンシでもって読み込むステップと、
前記第１の有効性メタデータに関連してエラーがあると判定されたことに応答して、前記第１の付録情報に格納された前記第１の有効性メタデータおよび前記１以上の不揮発性ストレージ装置に格納された前記第１の有効性メタデータの前記１以上のコピーを解析して、前記第１のデータが壊れているのかを判定するステップと
を含むデータ格納方法。
【請求項２】
前記第１の有効性メタデータは、前記第１のデータが破壊されているかを判定するために使用される前記第１のデータについての情報を与える、請求項１に記載のデータ格納方法。
【請求項３】
前記第１のアトミック性メタデータは、前記第１のデータおよび前記第１の付録情報中に格納された対応する前記第１の有効性メタデータがともに更新フェーズ中に成功裡に書き込まれたタイミング情報を与える、請求項１に記載のデータ格納方法。
【請求項４】
前記第１のデータに対する動作を行うためのホスト・システムからのリクエストを受信したことに応答して、前記第１のアトミック性メタデータを検査して、前記第１の有効性メタデータの有効性を判定するステップをさらに含む、請求項１に記載のデータ格納方法。
【請求項５】
前記付録情報中の前記第１の有効性メタデータを、前記１以上の不揮発性ストレージ装置に格納された前記第１の有効性メタデータのコピーと比較して、前記付録情報中に格納された前記第１の有効性メタデータが破壊されているかを判定するステップをさらに含む、請求項１に記載のデータ格納方法。
【請求項６】
前記付録情報中の前記第１の有効性メタデータが破壊されていないと判定されたことに応答して、前記第１のデータを再構築するステップをさらに含む、請求項５に記載のデータ格納方法。
【請求項７】
前記付録情報中の前記第１の有効性メタデータが破壊されていると判定されたことに応答して、前記第１の有効性メタデータを再構築するステップをさらに含む、請求項５に記載のデータ格納方法。
【請求項８】
前記第１のアトミック性メタデータが破壊されていると判定されたことに応答して、前記第１のデータを再構築して第２のデータを生成するステップと、
前記第２のデータに関連する第２のアトミック性メタデータを決定するステップと、
前記第１のアトミック性メタデータを前記第２のアトミック性メタデータと比較して、前記第１のアトミック性メタデータおよび前記第２のアトミック性メタデータが一致するかを判定するステップと、
前記第１のアトミック性メタデータが前記第２のアトミック性メタデータと一致すると判定されたことに応答して、前記第１のチャンク中に格納される前記第１のデータを前記第２のデータと置き換えるステップと
を含む、請求項４に記載のデータ格納方法。
【請求項９】
前記第１のアトミック性メタデータおよび前記第２のアトミック性メタデータが一致しないと判定されたことに応答して、前記第１のアトミック性メタデータまたは前記第１の有効性メタデータを修復するステップをさらに含む、請求項８に記載のデータ格納方法。
【請求項１０】
第１のデータ・チャンクがストレージ・システム中の少なくとも第１のディスク・ドライブ上の１以上のセクタの論理表現であるとして、前記第１のデータ・チャンク中に第１のデータを格納するための当該第１のディスク・ドライブと、
前記第１のデータに関連付けられ、前記第１のデータに関連する第１のアトミック性メタデータおよび第１の有効性メタデータを含む第１のメタデータを格納し、前記ストレージ・システム中の少なくとも前記第１のディスク・ドライブ上のセクタの少なくとも一部を含む領域の論理表現である第１の付録情報と、
前記第１のディスク・ドライブより低レベルのレイテンシを有する１以上の不揮発性ストレージ装置であって、前記第１のデータに対する前記第１の有効性メタデータの１以上のコピーを格納し、前記第１の有効性メタデータに関連してエラーがあると判定されたときに、前記第１の付録情報に格納された前記第１の有効性メタデータとともにを解析して前記第１のデータが壊れているのかを判定するために、格納する前記第１の有効性メタデータの１以上のコピーを前記低レベルのレイテンシでもって提供する１以上の当該不揮発性ストレージ装置と
を含むデータ・ストレージ・システム。
【請求項１１】
前記第１の有効性メタデータは、前記第１のデータが破壊されるかを判定するために使用される前記第１のデータについての情報を与える、請求項１０に記載のデータ・ストレージ・システム。
【請求項１２】
前記第１のアトミック性メタデータは、前記第１のデータおよび前記第１の付録情報中に格納された対応する前記第１の有効性メタデータがともに更新フェーズ中に成功裡に書き込まれたタイミング情報を与える、請求項１０に記載のデータ・ストレージ・システム。
【請求項１３】
前記第１のデータに対する動作を行うためのホスト・システムからのリクエストを受信したことに応答して、前記第１のアトミック性メタデータを検査して、前記第１の有効性メタデータの有効性を判定する、請求項１０に記載のデータ・ストレージ・システム。
【請求項１４】
前記付録情報中の前記第１の有効性メタデータを、前記不揮発性ストレージ装置中に格納された前記第１の有効性メタデータのコピーと比較して、前記付録情報中に格納された前記第１の有効性メタデータが破壊されているかを判定する、請求項１０に記載のデータ・ストレージ・システム。
【請求項１５】
前記付録情報中の前記第１の有効性メタデータが破壊されていないと判定されたことに応答して、前記第１のデータを再構築する、請求項１４に記載のデータ・ストレージ・システム。
【請求項１６】
前記付録情報中の前記第１の有効性メタデータが破壊されていると判定されたことに応答して、前記第１の有効性メタデータを再構築する、請求項１４に記載のデータ・ストレージ・システム。
【請求項１７】
前記第１のアトミック性メタデータが破壊されていると判定されたことに応答して、前記第１のデータを再構築して、第２のデータを生成し、
前記第２のデータに関連する第２のＡＭＤを決定し、
前記第１のアトミック性メタデータを前記第２のアトミック性メタデータと比較して、前記第１のアトミック性メタデータおよび前記第２のアトミック性メタデータが一致するかを判定し、
前記第１のアトミック性メタデータが前記第２のアトミック性メタデータと一致すると判定されたことに応答して、前記第１のチャンク中に格納される前記第１のデータを前記第２のデータと置き換える、請求項１３に記載のデータ・ストレージ・システム。
【請求項１８】
コンピュータ実行可能なプログラムをコンピュータ可読に格納する記録媒体であって、前記コンピュータ実行可能なプログラムは、コンピュータ上で実行されて、コンピュータに対し、
第１のデータ・チャンクがストレージ・システム中の少なくとも第１のディスク・ドライブ上の１以上のセクタの論理表現であるとして、前記第１のデータ・チャンク中に、第１のデータを格納するステップと、
第１の付録情報が前記ストレージ・システム中の少なくとも前記第１のディスク・ドライブ上のセクタの少なくとも一部を含む領域の論理表現であるとして、前記第１の付録情報中に、前記第１のデータに関連する第１のアトミック性メタデータおよび第１の有効性メタデータを含む第１のメタデータを、前記第１のデータに関連付けて格納するステップと、
前記第１のディスク・ドライブより低レベルのレイテンシを有する１以上の不揮発性ストレージ装置中に、前記第１のデータに対する前記第１の有効性メタデータの１以上のコピーを格納するステップと、
前記１以上の不揮発性ストレージ装置に格納された前記第１の有効性メタデータの前記１以上のコピーを前記低レベルのレイテンシでもって読み込むステップと、
前記第１の有効性メタデータに関連してエラーがあると判定されたことに応答して、前記第１の付録情報に格納された前記第１の有効性メタデータおよび前記１以上の不揮発性ストレージ装置に格納された前記第１の有効性メタデータの前記１以上のコピーを解析して、前記第１のデータが壊れているのかを判定するステップと
を実行させ、前記第１のアトミック性メタデータは、１以上の巡回冗長検査メタデータおよび水平方向冗長検査を含む、記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスク・ストレージ・システムにおけるデータの完全性（Integrity）の検証処理に関し、より詳細には、ディスク・ストレージ・システムに格納されたデータの完全性を損なわせる可能性のある、起こりうる未検出ディスクエラー（Undetected
Disk Error）を、判定ないし決定するシステムおよび方法に関する。
【背景技術】
【０００２】
ディスク・ドライブは、データを格納し、また取り出せるように設計されている。容量が増大し密度が高くなると、ディスク・ドライブは、これらの機能を達成する際の信頼性が低くなってくる。
【０００３】
３つのディスクの振る舞いが、ディスク・ドライブに格納されているデータを破壊する一因となる。書き込み中、書き込みデータの新しい「ビット」を置くために、ディスク・アームおよびヘッドは、物理ブロックを含むトラック上で充分に高い精度で位置合わせされなければならない。書き込みの場合には、２つのトラッキングエラーが生じ得る。全く意図していないトラックにデータが書き込まれる程度にヘッドがひどく外れて位置合わせされている場合か、データが２つの隣接するトラック相互間のギャップに落ち込む程度にヘッドが外れて位置合わせされている場合かである。
【０００４】
前者の場合、「ファー・オフ・トラック書き込み（Far Off-track Write）」として参照され、２つの物理ブロックがエラー状態に置かれる。何故ならターゲット・ブロック（書き込み先ブロック）が上書きされない故に、古いデータを含み、そしてその上書きされたブロックがそこにあるべきデータを失ってしまうからである。後者の場合、「ニア・オフ・トラック書き込み（Near Off-track Write）」として参照され、そのターゲット・ブロックが上書きされない故に、１つのブロックがエラー状態に置かれる。
【０００５】
書き込み中に生じ得る第２のタイプのエラーは、ディスク上でビットが変更されない場合に生じる。例えば、プリアンプ（前置増幅）信号が、プラッタ（円盤状の記録媒体）上のビットの磁気的セッティングを変更するには弱すぎる場合に生じる。この場合、そのプラッタ上に残留するデータは、陳腐化する（すなわち、そのドライブに発行された書き込みコマンドにあわせて更新されていない）。これらのエラーは、ビットがプラッタ上に記録されないため、書き込み落ち（Dropped Write）と呼ばれる。
【０００６】
上述の両タイプの書き込みエラーは、「未検出書き込みエラー（Undetected Write error）」として参照される。この理由は、ディスクが書き込みデータを間違った箇所に落としてしまい、その問題をディスク自体で検出できないからである。文言上、「書き込み落ち（Dropped Write）」もしくは「ファントム書き込みPhantom Write」という用語は、しばしばこれらの状況の一部または全てを記述するために使用される。
【０００７】
第３のタイプのエラーは、データ読み出しの際のヘッド位置合わせミスである。この場合、ディスクは、全く意図しないトラックからデータ・ビットを読み出す可能性もある（すなわち、ファー・オフ・トラック読み出し；Far Off-track Read）し、２つのトラック相互間のギャップから読み出す可能性（すなわち、ニア・オフ・トラック読み出し；Near Off-track Read）もあり、これらのことによって不正確なデータをユーザまたはアプリケーションに返す可能性がある。これらのエラーは、いずれも概して一過性であり、その次に同一トラックに対する読み出しが発生したときに修正される。さらに、その読み出しトラックが正しくとも、ファー・オフ・トラック書き込みの意図しないターゲットである場合には、不正確なデータがユーザまたはアプリケーションに返されることになる。
【０００８】
上述した全てのシナリオでは、ドライブは、典型的には問題を検出せずに、ユーザ、ホストまたはアプリケーションに成功状況通知を返す。ユーザまたはアプリケーションが不正確なデータを得ているにも関わらずディスクが成功状況を返すという他のエラー・シナリオも生じ得る。このような書き込みエラーまたは読み出しエラーを、未検出ディスクエラー（ＵＤＥ；Undetected Disk Error）として参照することができる。ディスク・ドライブが独立にＵＤＥを検出できないため、そのようなエラーを検出する他の方法を提供する必要がある。ディスク・ドライブへのデータの読み書きの確かさを検証するための関連技術においては、２つの主要な解決策のクラスが利用可能である。
【０００９】
第１のクラスは、ファイル・システムまたはアプリケーション層である。例えば、いくつかのファイル・システムおよび多くのデータベース・システムは、データ・チャンク（データの塊；例えば、４ＫＢのチャンク）に対するチェックサムを使用し、このチェックサムは、データ・チャンク自体とは分離して格納される。このチェックサムは、データ・チャンクとともに読み出され、新しいチェックサムが、その読み出されたデータ・チャンクから再計算され、そのデータ・チャンクとともに読み出されたチェックサムと比較される。もしその新しいチェックサムがその古いものと一致する場合、その読み出されたデータ・チャンクが正しいものとみなされる。
【００１０】
上述の方法は、２つの根本的な限界を有する。第１に、上記の方法では、ＲＡＩＤ（Redundant Array of Independent Disk Drives）のような何らかの追加的なデータ冗長性に統合されなければ、検出されたエラーからは一般に復元することができない。第２に、上記の方法は、全てのディスク読み出しに対して常にそのソースとなるわけではなく、故にチェックも必要な頻度で発生しない可能性がある。
【００１１】
例えば、ディスク読み出しソースがファイル・システムまたはアプリケーション層ではない場合、ＲＡＩＤアーキテクチャにおける下位の（そして論理的に分離された）層が（例えば、読み出し−変更−書き込みシナリオにおいて）アプリケーション書き込みのコンテキストで読み出しを行う可能性がある。そのアプリケーション層は、これらのタイプの読み出しを確認しない。このような場合、その読み出しは、ディスクから不正確なデータを抽出して、この不正確なデータをＲＡＩＤ冗長データの更新のために使用する可能性がある。このように、アプリケーションにより検出されないエラーは、下位のＲＡＩＤ層においてエラーを伝播する可能性があり、ドライブにより生じる問題を一層ひどくする。
【００１２】
ＲＡＩＤは、パフォーマンスを向上させたり、耐故障性（フォールト・トレランス）を提供したり、または両方を与えるために使用されるディスク・サブシステムである。ＲＡＩＤアーキテクチャは、複数個のディスク・ドライブおよびひとつのディスク・コントローラ（アレイ・コントローラとしても知られている）を含む。ＲＡＩＤは、ディスク・ストライピングによってパフォーマンスを向上させる。このディスク・ストライピングでは、複数個のドライブにわたって、バイトまたはバイトのグループをインターリーブし、従って１より多いディスクが同時に読み出しおよび書き込みされる。またＲＡＩＤアーキテクチャにおいて耐故障性は、ミラーリングまたはパリティを実装することによっても達成される。
【００１３】
上述のようなシステムの例としては、”Efficient Mechanisms for Detecting Phantom Write Errors（ファントム書き込みエラーを検出するための効果的なメカニズム）”と題する米国特許第０７０２０８０５号明細書（特許文献１）、”Detection and Recovery of Dropped Writes in Storage Devices（ストレージ装置における書き込み落ちの検出および復元）」と題する米国特許出願公開第２００６／０２００４９７号明細書（特許文献２）、および”Proceedings of the seventh ACM symposium on Operating systems principles（オペレーティング・システム原理に関する第７回ＡＣＭシンポジウムの予稿集）”１９７９年の１８−２３頁の”A Client-based Transaction System to Maintain Data Integrity（データの整合性を維持するためのクライアント・ベースのトランザクション・システム）”と題されるウイリアム・パクストン（William Paxton）著の刊行論文（非特許文献１）がある。
【００１４】
ＵＤＥを検出する方法の第２のクラスは、読み出しまたは書き込みがアプリケーション層により発生しようと、ストレージ・システム層それ自体により発生しようとも、そのシステムにおいて発生する全てのディスクの読み書きが監視されるように、ハードウエア層に近い層でストレージ・システム自体に実装される。しかし、このクラスは、ストレージ・システムよりも上位の（例えば、ネットワークもしくは内部ホスト・バスにおける）システム層において生じるエラーを検出することはできない。問題を検出するだけでなく、エラーが生じた位置を特定することができ、そしてもし可能ならエラーを訂正することも可能な方法を有することが望ましい。
【００１５】
ＵＤＥの可能性のある位置の検出および訂正のためのストレージ・システム中で使用され得る方法のサブクラスが多数存在する。第１としては、パリティ・スクラビングに基づくものがある。ディスク障害から保護するＲＡＩＤシステム（ＲＡＩＤ１またはＲＡＩＤ５）は、「パリティ・スクラブ（Parity Scrub）」と呼ばれる方法を使用してこれらの種類のエラーを検出することができる。例えば、ＲＡＩＤ５システムでは、プロセスは、データおよび対応する冗長データ（すなわち、パリティ・データ）を読み出し、そのパリティ値を再計算し、そしてその再計算されたパリティ値をディスクから読み出されたパリティ値と比較する。
【００１６】
もしその２つのパリティ値が一致しないなら、エラーが生じたのである。あいにく、ＲＡＩＤ５は、上述のように検出されたエラーの位置を、特定または訂正する手段を提供しない。より重要なことに、これらのパリティ・スクラブ（parity scrubs）は、ＵＤＥの発生およびパリティ・スクラブ動作の間にデータに対して適用された他の動作によりマスク（隠蔽）されたエラーを検出しない可能性もある。
【００１７】
例えば、ＵＤＥは、４つのデータ・ディスクと１つのパリティ・ディスクとからなるＲＡＩＤ５アレイにおいて、第１のディスクへの書き込み中に生じるかもしれない。続いて、アレイに第２、第３および第４のディスクに対する書き込みが発行されるかもしれない。この場合に典型的には、アレイは、第１のディスクからデータを読み出し、パリティを計算し、第２、第３および第４のディスクならびにパリティ・ディスクに新しいデータを書き出すというように処理動作を進めて、完全な書き込みを行うであろう。この動作後、第１のディスク上のデータは、まだ不正確なものであり、そのパリティは、全てのデータと一致する（すなわちそのときパリティは、第１のディスク上の不良データを含んでいる。）。その結果として、その後のパリティ・スクラブでは、その不良データを検知しないであろう。
【００１８】
他の例のエラー伝播は、ＵＤＥに続き、同一位置に書き込みが成功裡に正しく発生する場合（例えば、読み出し−変更−書き込みの方法論を用いて）に生じる。このような動作は、不良データの影響による壊れたパリティを残すであろう。要するに、その不良データが、ＵＤＥを有するディスクからパリティ・ディスクへ移動する。このような移行（マイグレーション；migration）作用は、ストライプへの任意の書き込み動作を行うために不良データがディスクから読み出されるたびに生じ得る。
【００１９】
ＲＡＩＤ６のようなもっと高い耐故障性のＲＡＩＤアルゴリズムの場合でさえ、同様な、そしてもっと複雑なシナリオが生じる。ＲＡＩＤ６は、２個のストレージ装置の損害からも復元し得る耐故障性のデータ・ストレージ・アーキテクチャである。ＲＡＩＤ６は、同一データのセットのために、２つの独立した冗長値を格納することによって、その耐故障性を達成する。これに対してＲＡＩＤ５は、１つの冗長値、つまりパリティを格納するのみである。
【００２０】
ＲＡＩＤ６アレイ上のパリティ・スクラブは、ＵＤＥを移行させたり、または隠蔽したりする可能性のある如何なる動作もストライプ上に行われなかった場合のみではあるが、ＵＤＥを検出し、その位置を特定し、そして訂正することが可能である（どのディスクも実際には故障していないと仮定する）。パリティ・スクラブは、非常に高コストな動作であり、典型的には節約的に実施される。その結果として、スクラブの実施前に、ＵＤＥを移行または検出し損なうような動作が行われないという条件付の仮定は、実際には滅多に維持されない。
【００２１】
ＲＡＩＤ６（もしくはより高い耐故障性）における位置特定アルゴリズムが「Lost
Writes Detection in a Redundancy Group Based on RAID with Multiple Parity（多重パリティを備えたＲＡＩＤに基づく冗長グループにおける書き込み損ないの検出）」と題する米国特許出願公開第２００６／０２４８３７８号明細書（特許文献３）に開示されている。この位置特定アルゴリズムは、初期検出方法としてパリティ・スクラブと連結して使用されなければならない。ＲＡＩＤパリティ・スクラブ方法は、アレイにおけるＵＤＥの検出およびその位置の特定またはそれらの両方、および訂正を信頼性高く行うことができない。
【００２２】
ストレージ・システム中でＵＤＥの問題に対処する第２のサブクラスの方法は、そのシステムにおける書き込みキャッシュに基づく。「Detection and Recovery of Dropped Writes in Storage Devices（ストレージ装置における書き込み落ちの検出および復元）」と題する米国特許出願公開第２００６／０１７９３８１明細書（特許文献４）に記述された方法は、キャッシュをディスクに書き込まれるデータの保持場所として使用する。データがディスクから再読み出しされ検証された後のみ、キャッシュからのデータがクリアされる。これは多数の要因から高コストな方法である。
【００２３】
第１に、ここで議論されている方法は、システムの読み書きキャッシュのパフォーマンスを改良するために使用される高価なキャッシュ・スペースを用いる必要がある。第２に、上記方法は、そのディスク上のデータを検証するために、個別の読み出しコール（separate read call）（いくらかの不特定の時間に）を必要とする。データが書き込まれた直後にその読み出しが生じる場合、ヘッド・トラッキング・システムが移動していない可能性があるため、オフトラック書き込みエラーが検出されない可能性がある。
【００２４】
（例えば、他の動作のためのより多くのキャッシュ・スペースを得るために）システムがキャッシュをクリアする必要があるときに読み出しが生じる場合、仕掛中の動作は、その読み出しおよび比較動作が起こるまで遅延させられるであろう。あるいは、中間的な時間に読み出し動作を発生させることもできるが、それは余分の入出力（ＩＯ）に伴いシステムのパフォーマンスに影響を与えるであろう。
【００２５】
第３のサブクラスは、そのデータの確かさを取り扱うために、ある種の形式のメタデータを使用する。このメタデータは、メモリに格納され、そしておそらくはそのメタデータに対応するアレイから分離したディスクまたはアレイに格納される。例えば、「System and Method for Detecting Write Errors in a Storage Device（ストレージ装置における書き込みエラーを検出するためのシステムおよび方法）」と題する米国特許出願公開第２００５／０００５１９１Ａ１号明細書（特許文献５）は、ＵＤＥ検出のための方法を開示する。一組の連続するデータ・ブロックにおける各ブロック毎のチェックサムおよびシーケンス番号が、直後に付加される追加のデータ・ブロックに格納される。ディスク上のブロックの全体コレクションのために、第２のコピーがメモリに格納され、このコピーは、ディスク（これは必然的に異なるディスクである）に定期的にフラッシュされ、好適には耐故障性のために２つのディスク上に格納される。
【００２６】
関連する仕組みが、「Data Integrity Error Handling in a Redundant Storage Array（冗長ストレージ・アレイにおけるデータ完全性エラーハンドリング）」と題する米国特許第０６９３４９０４号明細書（特許文献６）に見られ、そこではチェックサムが使用されるだけであり、主チェックサムのストレージのための特定のルールは定義されていない。「Method for using CRC as Metadata to Protect Against Drive Anomaly Errors in a Storage Array（ストレージ・アレイにおけるドライブ異常エラーに対抗して保護するためのメタデータとしてＣＲＣを用いる方法）」と題する米国特許出願公開第２００３／０１４５２７９号明細書（特許文献７）は、位置特定アルゴリズムとともに検出するための同様のチェックサム・アルゴリズムを開示する。
【００２７】
上記の仕組みには、チェックサム／シーケンス番号データを維持および管理するために必要となる追加のＩＯおよび高いディスク・オーバーヘッドの難点がある。「Method and System for Striping Data to Accommodate Integrity Metadata（完全性メタデータを収容するためにデータをストライピングするための方法およびシステム）」と題する米国特許第０７０５１１５５号明細書（特許文献８）は、第３のサブクラスの他の例を開示する。
【００２８】
ストレージ・ベースのＵＤＥディテクタの第４のサブクラスは、ディスクから読み出されるデータの確かさを検証するために何らかの形式のメタデータを使用するという点で、第３のサブクラスと類似している。しかし第４のサブクラスでは、メタデータがアレイ中に保持され、そのアレイ中のデータまたはパリティと一緒に配置される。例えば、「Method and System for Striping Data to Accommodate Integrity Metadata（完全性メタデータを収容するためのデータをストライピングするための方法およびシステム）」と題する米国特許第０７０５１１５５号明細書（特許文献８）は、ストライプ・メタデータの１つのコピーがそのストライプ中に格納される実施形態を開示する。
【００２９】
上述の仕組みは、ストライプ中のデータを更新するためにシステムが読み出し―変更―書き込み動作を行う場合に、パフォーマンス上の大きな利点を提供する。「Method for Storing Integrity Metadata in Redundant Data Layouts （冗長データ・レイアウトにおいて完全性メタデータを格納する方法）」と題する米国特許出願公開第２００４／０１２３０３２号明細書（特許文献９）に記載された方法は、パリティ・ストライプのセクタに隣接する追加のセクタを用い、そのストライプ中にデータ・チャンクのためのメタデータを格納する。この方法は、メタデータの内容を検証するために、ＮＶＲＡＭに格納されるメタデータ上の世代番号の使用を含む。
【００３０】
第４のサブクラスの他の例は、「Parity Spreading to Enhance Storage Access（ストレージ・アクセスを増強するためのパリティ・スプレッディング）」と題する米国特許第０４７６１７８５号明細書（特許文献１０）、「Apparatus and Method to Check Data Integrity When Handling Data（データを処理するときのデータ完全性を検証する装置および方法）」と題する米国特許出願公開第２００６／０１０９７９２Ａ１号明細書（特許文献１１）、および「Method and System for Striping Data to Accommodate Integrity Metadata（完全性メタデータを収容するためにデータをストライピングする方法およびシステム）」と題する米国特許第０７０５１１５５号（特許文献８）に記述された、ＲＡＩＤ５アレイに適用可能な方法を含む。
【００３１】
いくつかのディスク・ストレージ・システムでは、メタデータが不揮発性読み出しアクセス・メモリ（ＮＶＲＡＭ）または回転ディスクに格納される。前者は、格納し管理すべきメタデータの全ボリュームを収容するためにかなりのコストおよびボード・レイアウトの問題が発生し、また不揮発性の状態にメモリを維持する手段を要する。さらに、このようなメモリは、マザーボードに多くの占有面積を取り、このことが問題になり得る。
【００３２】
特に、少なくとも２つの調和されたコントローラを備えている耐故障性のストレージ・システムでは、ＮＶＲＡＭが、その２つのコントローラ間で信頼性高く共有されていなければならない。これは実装が難しいか、もしくはパフォーマンスに難があるか、その両方に難がある複雑な共有メモリ・プロトコルを導入する。他方、回転ディスクには、パフォーマンス上大きな難があり、信頼性の問題もある。すなわち、回転ディスクは、メモリに比較して非常に低速のレイテンシ（遅延時間）を有するので、メタデータへのアクセス（例えば、読んだり書いたりする）が、全体のシステムにパフォーマンス上の重大な影響を及ぼす可能性がある。
【００３３】
その上、回転ディスクは、メモリに比較してかなり低い信頼性の記録を有する。結果として、不可欠なメタデータは、少なくともそれに対応するデータと同程度に確実に格納される必要がある。たとえば、データが２つのディスク損害が許容され得るＲＡＩＤ６アレイに格納される場合、メタデータも、同様に２つのディスク損害でも生き残ることができる態様で格納される必要がある。
【特許文献１】米国特許第０７０２０８０５号明細書
【特許文献２】米国特許出願公開第２００６／０２００４９７号明細書
【特許文献３】米国特許出願公開第２００６／０２４８３７８号明細書
【特許文献４】米国特許出願公開第２００６／０１７９３８１号明細書
【特許文献５】米国特許出願公開第２００５／０００５１９１Ａ１号明細書
【特許文献６】米国特許第０６９３４９０４号明細書
【特許文献７】米国特許出願公開第２００３／０１４５２７９号明細書
【特許文献８】米国特許第０７０５１１５５号明細書
【特許文献９】米国特許出願公開第２００４／０１２３０３２号明細書
【特許文献１０】米国特許第０４７６１７８５号明細書
【特許文献１１】米国特許出願公開第２００６／０１０９７９２Ａ１号明細書
【非特許文献１】「Proceedings of the seventh ACM symposium on Operating systems principles（オペレーティング・システム原理に関する第７回ＡＣＭシンポジウムの予稿集）」１９７９年の１８−２３頁に掲載のウイリアム・パクストン（William Paxton）著の刊行論文「A Client-based Transaction System to Maintain Data Integrity（データの整合性を維持するためのクライアント・ベースのトランザクション・システム）」
【発明の開示】
【発明が解決しようとする課題】
【００３４】
あいにく、ＵＤＥを検出して訂正するための上記クラスおよびサブクラスは、多くの状況下において問題を発見し、訂正することを支援するために、読出しまたは書き込みのエラーを充分詳細に明らかにする上で、効率が悪いか、あるいは効果的でないため、上記の要件は、多大な追加コストおよびパフォーマンスへの影響を負わせる。このように、上記欠点を克服することが可能なデータ復元方法およびシステムが必要とされる。
【課題を解決するための手段】
【００３５】
本発明の開示は、ディスク・ストレージ・システムにおけるデータの完全性の検証を支援するシステムおよび方法に関する。
【００３６】
要約すると、本明細書において、本発明のある種の側面、利点および新規な特徴が記述される。本発明のいずれか１つの特定の実施形態に従って、そのような全ての利点が達成され得るというわけではないことを理解されたい。従って、本明細書において教示され、示唆されるような全ての利点を達成することなく、１つの利点または一群の利点を達成または最適化する態様で本発明を実施することができる。
【００３７】
一実施形態によれば、データ格納方法が提供される。このデータ格納方法は、ストレージ・システム中の少なくとも１つの第１のディスク・ドライブ上の１以上のセクタの論理表現を与える少なくとも１つの第１のデータ・チャンク中に、第１のデータを格納するステップと、ストレージ・システム中の少なくとも１つの第１のディスク・ドライブ上のセクタ領域の論理表現を与える少なくとも１つの第１の付録情報中に、第１のデータに関連する第１のアトミック性メタデータおよび第１の有効性メタデータを含む第１のメタデータを、第１のデータに関連付けて格納するステップと、１以上の低レイテンシ不揮発性ストレージ装置中に、第１のデータに対する第１の有効性メタデータの１以上のコピーを、第１のチャンク中の内容または第１の付録情報に関連するエラーが検出された場合に、第１の付録情報に格納された第１の有効性メタデータと比較するために、低レイテンシ不揮発性ストレージ装置に格納された第１の有効性メタデータのコピーが低レベルのレイテンシでもってアクセスさせるように格納するステップとを含む。
【００３８】
本発明の他の実施形態によれば、データ・ストレージ・システムが提供される。このデータ・ストレージ・システムは、ストレージ・システム中の少なくとも１つの第１のディスク・ドライブ上の１以上のセクタの論理表現を与える少なくとも１つの第１のデータ・チャンク中に第１のデータを格納するための少なくとも１つの当該第１のディスク・ドライブと、第１のデータに関連付けられ、第１のデータに関連する第１のアトミック性メタデータおよび第１の有効性メタデータを含む第１のメタデータを格納し、ストレージ・システム中の少なくとも１つの第１のディスク・ドライブ上のセクタ領域の論理表現を与える第１の付録情報と、第１のデータに対する第１の有効性メタデータのコピーを格納し、第１のチャンク中の内容または第１の付録情報に関連するエラーが検出された場合に、第１の付録情報に格納された第１の有効性メタデータと比較するために、格納する第１の有効性メタデータのコピーが低レベルのレイテンシでもってアクセスされる１以上の低レイテンシ不揮発性ストレージ装置と
を含むデータ・ストレージ・システム。
【発明を実施するための最良の形態】
【００３９】
以下、１つまたは複数の上記に開示した実施形態ならびに代替の実施形態について、添付の図面を参照しながら、詳細に説明する。本発明は、しかしながら、開示するいずれか特定の実施形態に限定されるものではない。
【００４０】
１つまたは複数の実施形態に従って、異なる図面において同一符号により参照する本発明の特徴、要素および側面は、同一、等価または同様な特徴、要素または側面を示す。
【００４１】
以下では、本発明の種々の実施形態の完全な記述を提供するために、多数の具体的な細部について説明する。本発明のある種の実施形態は、これらの具体的な細部がなくとも実施できるか、または細部にいくらか変形を加えて実施することができる。いくつかの例では、本発明の他の側面を不明瞭にしないために、ある種の特徴についてあまり詳細には説明しない。各々の要素または特徴の詳細さの程度が、他の特徴部に対するひとつの特徴の新規性または重要度とみなすように解釈すべきではない。
【００４２】
１つまたは複数の実施形態によれば、ＵＤＥを検出し、その位置を特定し、訂正するためのシステムおよび方法が提供される。例として、ＲＡＩＤアーキテクチャに適用できるものとして、ある種の実施形態を本明細書に開示する。しかしながら、このような例示の実施形態は、本発明の範囲をＲＡＩＤシステムに限定するように解釈すべきでないことに留意されたい。本明細書で開示する原理および利点は、他のデータ・ストレージ環境にも等しく適用可能であろう。
【００４３】
一実施形態によれば、１以上のディスク・ドライブにデータが読み出しまたは書き込まれる場合にＵＤＥを検出するための方法が提供される。ＵＤＥの発生を迅速に判定することを可能とするために、例えば書き込み中であれば、パリティ情報、有効性メタデータ（ＶＭＤ）およびアトミック性メタデータ（ＡＭＤ）に連結されてデータがディスクに書き込まれる。ＶＭＤは、その書き込まれたデータが壊れたかを調べるために、ターゲット・データに関連するシーケンス番号のような情報を提供する。ＡＭＤは、更新フェーズ中にターゲット・データおよび対応するＶＭＤが成功裡に書き込まれたかどうかについての情報を提供する。ＶＭＤは、好適にはＡＭＤに比べてボリュームが小さい。
【００４４】
一実施形態では、各ディスクのためのＶＭＤ、および好適にはそのミラー・コピーが、１以上の低レイテンシ不揮発性ストレージ（ＬＬＮＶＳ）装置（例えばフラッシュ・デバイス）に書き込まれる。以下に詳細に示されるように、小さなＶＭＤのサイズ、およびＬＬＮＶＳ装置の迅速なアクセス性が相俟って、ストレージ・システムにおけるコントロール・ユニットがＵＤＥを迅速に検出することが可能となる。一実施形態では、検出されたエラーの位置をさらに正確に示すことが可能となるように、ＲＩＳＫアーキテクチャが上記のストレージ・システムのコンテキストにおいて実装されてもよい。
【００４５】
図１を参照すると、１つまたは複数の実施形態による、例示のデータ・ストレージ環境が提示されている。このデータ・ストレージ環境は、ホスト（例えばコンピューティング・システム）１００に接続されるストレージ・システム１１０を含んで構成される。ホスト１００は、ストレージ・システム１１０と通信して、ディスク・ドライブ１８０とデータの読み出しまたは書き込みする。一実施形態では、ストレージ・システム１１０にアレイ・コントローラ（すなわちディスク・コントローラ）１２０が設けられて、ホスト１００により送出される読み書きの要求を管理および供給し、またエラー検出およびデータ復元のサービスを提供している。
【００４６】
アレイ・コントローラ１２０は、ＲＡＩＤマネジャ１４０、ＩＯハンドラ１５０、メタデータ・マネジャ１３０およびエラー・ハンドラ１６０を含んで構成することができる。ＲＡＩＤマネジャ１４０は、耐故障性環境においてディスク・ドライブ１８０上のデータの維持に関連するタスクおよび動作を管理するように構成される。ＩＯハンドラ１５０は、ＲＡＩＤマネジャ１４０によって与えられる命令に従って、アレイ・コントローラ１２０へのデータの入出力を制御する。
【００４７】
メタデータ・マネジャ１３０は、ジェネレータ１３２およびチェッカ１３４を含んで構成される。ジェネレータ１３２は、データ付録、パリティ付録などに格納されるべきメタデータを生成するように構成される。このようなメタデータは、１つまたは複数の実施形態では、ディスク・ドライブ１８０上に格納されるデータ・チャンクに関連するＡＭＤおよびＶＭＤを含んで構成される。チェッカ１３４は、ＩＯリクエストに応答してディスク・ドライブ１８０上に格納されたメタデータの確かさを検証するように構成される。
【００４８】
上述したように、ＶＭＤおよびＡＭＤは、１つまたは複数の実施形態において、１以上のディスク・ドライブ１８０に読み出されるかまたは書き込まれたデータの有効性を検出することを支援するために用いることができる。一実施形態では、データの複数のセクタが、データ・チャンクに編成されてもよい。メタデータ・セクタまたはその一部を、対応するデータ・チャンクと一緒に配置して、データのＡＭＤおよびＶＭＤの両方を格納することができる。
【００４９】
ある種の実施形態では、ＬＬＮＶＳ装置１９０をＶＭＤの１以上の追加のコピーを格納するために使用して、このタイプのメタデータにアクセスするためのパフォーマンスを向上することができる。さらに、コンパクト・サイズのＶＭＤを使用して、この種のメタデータのための全体コストおよびストレージ・オーバーヘッドを低減する。例示の実施形態によれば、ＡＭＤは、１以上の巡回冗長検査（ＣＲＣ）メタデータを含んで構成することができる。このタイプのメタデータは、転送中またはストレージ中に偶発的なデータ改変を検出するためのチェックサムと同じように使用することができる。
【００５０】
一実施形態では、ＣＲＣは、例えばＳＣＳＩ（small computer system interface）データ完全性フィールドのコンテキストにおいて計算することができる。このＳＣＳＩ規格は、コマンド、プロトコル、ならびにハードディスクおよびテープ・ドライブで最も共通に使用される電気的および光学的なインタフェースを定義づけている。好適には、例示の実施形態では、ＳＣＳＩ規格に合致するような特別のハードウエアが実装されて、ＣＲＣを計算する効率的な手段を提供している。
【００５１】
いくつかの実施形態では、ＡＭＤは、ソフトウエアもしくはハードウエアにより計算される１以上の水平方向冗長検査（ＬＲＣ）を含んでもよい。このＬＲＣは、格納または転送されるデータの確かさを検証および判定するためにパリティ・ビットを用いることができる。上述したように、ストレージ・システム１１０は、メタデータがデータ自体と同程度に信頼性高く（ＲＡＩＤシステムにおいて）格納されるように、ＶＭＤの冗長性コピーを保持するための１以上のＬＬＮＶＳ装置１９０を使用して実装することができる。
【００５２】
一実施形態によれば、ディスク・ドライブ１８０のためのデバイス・ドライバは、下位のＲＡＩＤ層に新しいデータを書き込む目的など任意の目的でディスク・ドライブ１８０からデータを読み出し、またはディスク・ドライブ１８０に書き込む場合に、データの確かさを監視および検証するための論理コードを含んで構成される。その結果として、デバイス・ドライバは、例えばパリティ・スクラブが検出できないような壊れたデータの移行もしくは隠蔽を防止する助けとなる。
【００５３】
１つまたは複数の実施形態では、デバイス・ドライバは、ＲＡＩＤ層とは独立に実装されてもよく、その結果、ストレージ・システム１１０における１以上のＲＡＩＤアルゴリズムまたはフィルタとして働く単一のデータ完全性実装（Data Integrity Implementation）層が展開される。このデバイス・ドライバは（例えば、ＶＭＤまたはＡＭＤのいずれかが破壊されたと判定されるとき）潜在的なエラーを報告することによってＲＡＩＤ層と通信することができる。好適には、ＲＡＩＤ層は、しかし限定されるものではないが、パリティ・スクラブのような方法を採用して、エラーがデータ中にあるのか、メタデータ中にあるかを判定することができる。このＲＡＩＤ層は、破壊されたデータを訂正することが可能であってもよく、メタデータを修復するためにその結果がデータ完全性層に必要に応じかつ可能な場合に通信されてもよい。
【００５４】
図２および図３に示されるように、いくつかの実施形態では、例えば、ディスク・ドライブ上のデータは、それぞれデータ・チャンクおよび付録情報から構成される複数のメタデータ・チャンクに分割することができる。一実施形態では、データ・チャンクは、Ｘが少なくとも２であるとして、Ｘ個のディスク・セクタにわたることができる。この付録情報は、ひとつのセクタか、または部分的なセクタ（例えば１／２セクタ）にわたることができるこの付録情報は、データ・チャンクのための種々のタイプのメタデータ（例えば、ＡＭＤ、ＶＭＤ等）のコピーを保持することができる。
【００５５】
例を挙げると、上述のデータ付録との組み合わせをＸ／Ｘ＋１スキームとして参照する。ただし、Ｘはデータ・セクタの数を表し、「＋１」は例えば付録セクタを表す。いくつかの実施形態では、実装次第ではあるが、「＋１」が部分的なセクタを表してもよい。ある例示の実施形態では、Ｘの値を８または１６などとすることができる。
【００５６】
Ｘに割り当てる値は、多くの要因に依存する可能性がある。実装によっては、Ｘの値が大きくなればなるほどストレージ・システム１１０のストレージ効率は良くなる。一実施形態では、読み出しまたは書き込み動作中にデータ・セクタおよびその付録情報がともにアクセスされる場合に、Ｘの値が大きくなるにつれ、データ転送およびバンド幅コストが大きくなるかもしれない。
【００５７】
上述したように、一実施形態によれば、この付録情報は、ＡＭＤおよびＶＭＤの両方のタイプのメタデータのコピーを含むことができる。ＡＭＤは、データ・チャンク中のデータのある種類のチェックサムを含むことができる。チェックサムは、ＬＲＣまたはＣＲＣもしくはハッシュ値とすることができる。ＡＭＤは、データ・チャンクに関係する論理または物理ブロック・アドレスを計算する際に、適宜、種付けまたは包含することができる。代わりに、そのようなブロック・アドレスが、チェックサムとは別にＡＭＤに含まれてもよい。
【００５８】
ＡＭＤ中のチェックサムは、ユニットとしてＸ個のデータ・セクタに対して計算されても良いし、あるいは各セクタ毎といったようなより小さいサブチャンクのチェックサムの連結であってもよい。いくつかの実施形態では、ディスク・ドライブ１８０は、ＤＭＡエンジンにおいて、またはホストまたはディスク・インタフェースにおいて、セクタがシステムを通過するときに１以上のデータ・セクタに対してＳＣＳＩデータ完全性フィールド（ＤＩＦ）ＣＲＣを計算する能力を有していてもよい。このＣＲＣは、例えば２バイトであって、各セクタ毎のデータから計算されてもよい。
【００５９】
一実施形態では、データ・チャンク中のそれぞれのＸ個のセクタに対するＤＩＦが連結されて、チャンクのためのＡＭＤのチェックサム部分を提供することができる。代わりに、ディスク・ドライブ１８０が、ＤＭＡエンジンにおいて、データがメモリ・システムを移動する際に（ＬＢＡによって種付けされたものを伴って、または伴わずに）ＬＲＣを計算する能力を有していてもよい。ＬＲＣは、例えば１以上のバイトとすることができる。例示の実施形態では、ＬＲＣを２バイトもしくは４バイトとすることができる。
【００６０】
一実施形態によれば、Ｘ個のデータ・セクタからのＬＲＣの連結が、データ・チャンクにおいてそのチャンクに対するチェックサム部分として使用されてもよい。上述した実装は、本質的に例示であり、１つまたは複数の代替の実施形態において、上述の特徴の目的に適う任意の他の代替の実装が、同一の目的を達成するために使用されてもよいことは注目すべき点である。
【００６１】
一実施形態では、ＶＭＤは、ある種のタイム・スタンプまたはフェーズ・マーカ（Phase Marker）を含んで構成される。このような実装は、クロック・ベースであってもよいし、あるいはシーケンス番号に関連していてもよい。このタイム・スタンプまたはフェーズ・マーカは、ディスクに新しいデータが書き込まれるたびに変更されるであろう。例えば、シーケンス番号は、例えば古いデータの読み出し後、現在のシーケンス番号が既知であれば、増分することが可能である。
【００６２】
もしも現在の値が既知でなければ、特定の範囲内のランダムな値もしくは固定値を反復するといったような、他の直接的な割り当てアルゴリズムが適用され得る。ＶＭＤは、例えば物理または論理ブロック・アドレスの符号化されたコピーを適宜含んで構成することができる。以下、本発明は、ＶＭＤの実装にシーケンス番号を使用する例示の実施形態に適用できるものとして開示される。しかしながら、この適用例は、例示であり、本発明の範囲が開示される特定の実施形態に限定されるものと解釈すべきではない。
【００６３】
一実施形態によれば、ＶＭＤの値は小さく（例えば、１ないし２バイト）、またＶＭＤの値は、ＡＭＤのサイズとは独立であることが好ましい。ＶＭＤのサイズは、多数の要因によって決定することができる。例えば、ＶＭＤのサイズは、二次的な格納位置（例えば、ＬＬＮＶＳ装置１９０）にＶＭＤの１つまたは複数個のコピーを記憶するために専有されるストレージ・オーバーヘッド量によって制限されてもよい。
【００６４】
例えば、もしこのシステムが各々３００ＧＢの２５６個の物理ディスク・ドライブを有し、そしてチャンクのサイズをＸ＝１６とした場合、９４億の異なるＶＭＤの値が可能である。したがって、ＶＭＤのユニット・サイズは、一実施形態では、利用可能なストレージと大きなコピー（および必要ならその冗長コピー）のボリュームとがコスト効率の良い態様で適合し得るように選択することができる。上述のシナリオを考慮すると、もし各ＶＭＤのサイズが例えば２バイト（すなわちＶＭＤに対しては比較的大きい）であれば、全体のストレージ・システム１１０に対して、ＶＭＤを冗長的な態様で格納するために、２個の１０ＧＢのＬＬＮＶＳ装置１９０を使用することができる。
【００６５】
一実施形態では、ＬＬＮＶＳ装置１９０は、高速のストレージおよびアクセスのために、関連するメタデータを格納するために使用される。このＬＬＮＶＳ装置１９０は、例えば固体ディスク（Solid State Disk；ＳＳＤ）を含んで構成することができる。このＳＳＤは、ディスク・ドライブ１８０と同一のフォーム・ファクタおよびインタフェースを有することが好ましく、またストレージ・システム１１０のコンポーネントの回路設計レイアウトを大きく変更することなく、アレイ・コントローラ１２０と容易にインタフェースすることができる。
【００６６】
さらに、上記インタフェースは、１以上のアレイ・コントローラ１２０を調和させることによる共有のプロトコル・アクセスのための持ち前のメカニズムを提供することができる。いくつかの実施形態によれば、１以上のＬＬＮＶＳ装置１９０を使用して、ストレージ・システム１１０に対し、あるレベルの耐故障性を提供することができる。例えば、各ＬＬＮＶＳ装置１９０を使用して、ＶＭＤの単一のコピーを格納することができる。そのような例示の実装では、ストレージの要件は最小限であり、コスト効率もよい。
【００６７】
図２を参照すると、ディスク・ドライブ１８０の１以上のセクタが複数個の論理ユニット（以下、チャンク（例えば、チャンクＣ０ないしＣ７）と参照する。）として表された実施形態を示す。各チャンクは、ディスク・ドライブ１８０における１個のセクタまたは１個のセクタのうちの一部を表す他の論理ユニット（以下、付録情報と参照する。）と関連付けられてもよい。上述したように、各付録情報は、例えばＶＭＤおよびＡＭＤという２つのタイプのメタデータを含んで構成することができる。
【００６８】
図示のとおり、チャンクＣ０は、例えばＶＭＤ０おおよびＡＭＤ０を含んで構成される付録情報と関連付けられることができる。一実施形態では、ＶＭＤ０は、Ｃ０と関連してディスク・ドライブ１８０に格納され、また少なくとも１個のＬＬＮＶＳ装置１９０にも格納される。ストレージ・システム１１０において、複数のＬＬＮＶＳ装置１９０を使用して追加の冗長性を提供してもよい。ＬＬＮＶＳ装置１９０は、ディスク・ドライブ１８０とは独立の態様でストレージ・システム１１０に結合されることが好ましい。すなわち、メタデータ・マネジャ１３０およびエラー・ハンドラ１６０は、ディスク・ドライブ１８０がアクセス可能かどうかに関わらず、ＬＬＮＶＳ装置１９０に格納された情報へアクセスすることができる。
【００６９】
上述の例では、ＡＭＤ０は、チャンクＣ０に格納されたデータのためのアトミック性メタデータであり、ＶＭＤ０は、チャンクＣ０に格納されたデータのための有効性メタデータである。ＡＭＤ０は、チャンクＣ０およびＶＭＤ０間の関連付けを提供し、その結果、アトミック性メタデータＡＭＤ０に基づきエラー・ハンドラ１６０は、例えばチャンクＣ０および有効性メタデータＶＭＤ０が単一の書き込み動作で書き込まれたか否かを判定することができるようになっている。図示のとおり、チャンクＣ１ないしＣ７にそれぞれ関連付けられたＶＭＤ１ないしＶＭＤ７もまた、例えばＬＬＮＶＳ０およびＬＬＮＶＳ１にも格納されてもよい。
【００７０】
ＶＭＤ０は、ＬＬＮＶＳ装置１９０にコピーされる際に、データ・チャンクＣ０中のデータに関する情報を与える。例えば、Ｃ０が書き込まれるたびに（例えば、タイム・スタンプを押すかまたはそのデータに関係するバージョン番号を増分するようにして）ＶＭＤ０が変化する。データ・チャンクＣ０中のデータが同じままである場合でさえ（例えば、そのデータがホスト１００により２回書き込まれる場合）ＶＭＤ０が変化してもよい。もしバージョン番号がサイズに関して制限がなければ、ＶＭＤ０が書き込まれるごとにバージョン番号が増分されて、エラーがなかったとしたら、何回それが書き換えられたについての情報を与える。例えば、ＶＭＤ０は、データ・チャンクがＣ０のバージョン２７である（すなわちＣ０が２７回書き換えられた）ことを示す情報を与えることができる。タイム・スタンプについては、ＶＭＤ０は、例えば７／３１／０７の日付の１２：０７：１２という時刻に書き込まれたバージョンであることを表すことができる。図２に示す例示の実施形態では、ＡＭＤ０は、ＬＬＮＳＶ０またはＬＬＮＳＶ１にコピーされないことが注目に値する。その代わりに、ＡＭＤ０およびＣ０の両方におけるデータが単一の読み出し動作にて読み出されてもよいように、ＡＭＤ０は、Ｃ０に関連付けてディスク・ドライブ１８０に格納される。これについては、以下、詳細に述べる。
【００７１】
図３を参照すると、例示の実施形態がＲＡＩＤシステム・アーキテクチャ（例えば、ＲＡＩＤ４またはＲＡＩＤ５のストライプのコンテキストにおいて）に適用できるものとして説明されている。この例示の実施形態では、ストライプあたり２個のチャンクが描かれている。しかしながら、この実施形態は、本発明の範囲を開示された特定のストライプあたりのチャンク数に限定するものと解釈してはならない。実装次第では、ストライプあたりもっと少ないか、またはもっと多いチャンクにより構成することもできる。
【００７２】
図示のとおり、例えば、ひとつの行からのチャンクおよびメタデータが、ＲＡＩＤストライプのサブストライプを構成する。ストライプあたり２個のチャンクを備えた例示の実施形態では、論理的なホスト・アドレシングは、Ｃ０、Ｃ４、Ｃ１、Ｃ５などと相関する。実装次第では、１つまたは複数の実施形態は、ＲＡＩＤ１、ＲＡＩＤ３および任意のタイプのＲＡＩＤ６など、いかなるＲＡＩＤアーキテクチャ、あるいはリード・ソロモン（Reed-Solomon）に基づく符号などを含む、より高い耐故障性コードに対して適用するよう構成されてもよい。
【００７３】
図４ないし図６を参照すると、１つまたは複数の実施形態によるデータ検証およびエラー処理のための方法が提供される。以下に説明する方法では、１以上のＬＬＮＶＳ装置１９０に格納されるＶＭＤの複数のコピーをＲＡＩＤ層へのアプリケーションにおいて使用して、入出力（ＩＯ）動作のためのホスト・リクエストに関連した入出力（ＩＯ）エラーの位置を特定し、訂正することを支援している。
【００７４】
本発明のある側面および利点は、例示のホスト動作（例えば、読み出し動作）のコンテキストにおいて適用された例示的なアルゴリズムに適用できるものとして開示される。しかしながら、開示した原理および利点は、他の実施形態による他の動作に等しく適用されることに注目されたい。
【００７５】
図１および図４を参照すると、一実施形態によるホストの読み出し動作を実行するための方法が提示される。ホスト１００は、例えば、ディスク・ドライブ１８０からデータ・チャンクおよび関連する付録情報を読み出し（Ｓ４１０）、またひとつのＬＬＮＶＳ装置１９０から、データ・チャンクに対応するＶＭＤの少なくとも一つのコピーも読み出す（ステップＳ４２０）。
【００７６】
一実施形態では、チェッカ１３４は、ＡＭＤを検査して読み出しデータの完全性を検証する（ステップＳ４３０）。読み出しデータに対するＡＭＤがそのデータと矛盾する場合、チェッカ１３４は、データまたはその付録情報が破壊されてしまっていると判定して、チェッカ１３４は、エラー・ハンドラ１６０（例えば、図５の例示のＡＭＤエラー・ハンドラ・モジュールを参照のこと。）を呼び出し、そのエラーを処理させることができる（ステップＳ４４０）。
【００７７】
他方、読み出しデータに関連するＡＭＤが、そのデータと一致する場合、チェッカ１３４は、その読み出しデータに対するＶＭＤの完全性を検証することができる（ステップＳ４５０）。もしＶＭＤがその完全性チェック（例えば、データの付録情報に含まれるＶＭＤのコピーがＬＬＮＶＳ装置１９０に格納されるＶＭＤのコピーと一致する場合）をパスした場合、チェッカ１３４は、データが有効であるとみなし、ホスト１００がそのリクエストされたＩＯ動作（例えば、読み出し動作）を成功裡に完遂させる（ステップＳ４７０）。
【００７８】
一実施形態では、その付録情報およびＬＬＮＶＳ装置１９０のそれぞれに格納されたＶＭＤの２個のコピーが矛盾する場合、チェッカ１３４は、エラー・ハンドラ１６０を呼び出して、エラーを処理（図６の実施形態のＶＭＤエラー処理方法を参照のこと。）させることができる（ステップＳ４６０）。図５および図６に示すように、ＶＭＤおよびＡＭＤのための２つのエラー処理方法では、ＲＡＩＤ層と統合されて、１以上のＬＬＮＶＳ装置１９０に格納されるＶＭＤの複数のコピーを使用して、ディスク・ドライブ１８０上に格納される破壊されたデータを修復することができる。
【００７９】
図１および図５を参照すると、ＡＭＤエラーが検出される場合（例えば、ＶＭＤを検査せずに、チェッカ１３４が読み出しデータに対するＡＭＤが破壊されたと判定した場合）、そのデータまたは付録情報のいずれか、またはその両方が破壊されている可能性がある。
【００８０】
上述のシナリオでは、ＶＭＤの２つのコピー（すなわち、一方は付録情報に格納され、他方はＬＬＮＶＳ装置１９０に格納される）に一致するか否かに関わらず、その読み出しデータは、独立に有効なことを確認しなければならない可能性がある。結果として、一実施形態では、チェッカ１３４は、そのデータを再構築するためにＲＡＩＤ層を呼び出すことができる（ステップＳ５１０）。
【００８１】
エラー・ハンドラ１６０は、ＲＡＩＤ層がそのデータを成功裏に修復またはその有効性を確認できるか否かを判定する（ステップＳ５２０）。もしできない場合、ロガー１６５がエラーをログ記録し（ステップＳ５９１）、ホストＩＯ動作をフェイルにすなわち機能しないようにする（ステップＳ５９０）。もしＲＡＩＤ層が成功裡に再構築すれば、そのデータの２つのコピーが利用可能となる。ひとつはディスク・ドライブ１８０から直接読み出され、他方はその再構築動作の結果として生成されたものである。
【００８２】
一実施形態では、チェッカ１３４は、その再構築されたデータに関連するＡＭＤが付録情報中のデータに関連付けられるＡＭＤと一致するか否かを判定する（ステップＳ５３０）。もし一致する場合には、その再構築データは正しく、ディスク・ドライブ１８０から読み出されたデータが破壊されたものであり、かくして、エラー・ハンドラ１６０によってディスク・ドライブ１８０上のデータが修復される（ステップＳ５４０）。
【００８３】
いくつかの実施形態では、エラー・ハンドラ１６０は、そのデータに関連するメタデータ（例えば、ＡＭＤもしくはＶＭＤ）を修復または再生成することができ、そしてそのロガー１６５は、エラー状況をログ記録することができる（ステップＳ５５０）。従って、一旦エラー状況が判定され、その破壊されたデータが再構築されると、その再構築データがホスト１００に送出され、ＩＯ動作が成功裡に完遂される（ステップＳ５６０）。
【００８４】
ステップＳ５３０のブロックに戻って説明すると、チェッカ１３４がその再構築データに関連付けられるＡＭＤが、付録情報からのものと矛盾すると判定した場合、チェッカ１３４は、付録情報中のＶＭＤがＬＬＮＶＳ装置１９０に格納されたＶＭＤと一致するかどうか判定する（ステップＳ５７０）。もし一致する場合には、付録情報中のＶＭＤが正しいものの、その再構築データに対するＡＭＤがマッチしないため、ロガー１６５は、エラーをログ記録し（ステップＳ５９１）、ホスト１００によってリクエストされたＩＯ動作を機能させないようにすることができる（ステップＳ５９０）。
【００８５】
もしチェッカ１３４が、その付録情報中のＶＭＤが１つのＬＬＮＶＳ装置１９０上に格納されたＶＭＤと矛盾すると判定した場合、チェッカ１３４は、他のＬＬＮＶＳ装置１９０からミラーされたＶＭＤを適宜読み出そうと試みることができる（ステップＳ５９２）。このプロセスは、複数のＬＬＮＶＳ装置１９０に格納されたＶＭＤの複数のコピーが存在する場合に、ＶＭＤの有効性に関する結論的な結果に達するまで続行される。
【００８６】
上述のシナリオでは、付録情報中のＶＭＤが破壊され、ディスクから読み出されたデータがなおも有効であるかもしれないという推定を残している可能性がある。一実施形態では、そのデータが有効であるか検証するために、チェッカ１３４は、再構築データを調べて、それがディスク・ドライブ１８０から読み出されたデータと一致するかを判定する（ステップＳ５８０）。もしその２つが一致すれば、プロセスは、ステップＳ５５０およびステップＳ５６０のブロックで説明したように、メタデータの修復を続行することができ、そうでなければ、ステップＳ５９０およびステップＳ５９１のブロックを参照して説明したように、エラーをロガー１６５は、ログ記録することができる。
【００８７】
ディスク・ドライブ１８０中に格納されたデータに関連付けられるＡＭＤが付録情報からのＡＭＤにマッチするものの、その付録情報に格納されたＶＭＤが１つのＬＬＮＶＳ装置１９０に格納されたＶＭＤに一致する場合以外には、ＶＭＤエラーを検出することができる。
【００８８】
例示の実施形態では、ディスク・ドライブ１８０上のデータに関連付けられるシーケンス番号が、そのデータに対するＶＭＤを実装するために使用される。そのような実施形態では、そのデータのより古いバージョンのＶＭＤを検査して、２つの値のいずれかが正しいのかを判定することができる。
【００８９】
図１および図６を参照すると、一実施形態によるＶＭＤエラー処理方法が提示される。図示のとおり、ＶＭＤエラーが例えばターゲット・データに関連付けられるシーケンス番号に基づいて検出されると、そのターゲット・データに対するＶＭＤを解析して、その位置および番号におけるエラーを判定することができる（ステップＳ６１０）。例えば、ＶＭＤは、書き込み毎に増分されるシーケンス番号を記録することができる。もしそのデータが備えるＶＭＤが、ＬＬＮＶＳ装置１９０中に格納されたＶＭＤよりも１つ以上少なければ、そのデータは陳腐化している可能性が高い（すなわち、そのＶＭＤは、ＬＬＮＶＳ装置１９０中のＶＭＤが増分されたのと同じようにして増分されなかった）。小さい固定サイズのシーケンス番号（例えば１バイト）については、シーケンス番号が最大値に達するとき循環することにしてもよい。一実施形態では、冗長度を向上するために、ＶＭＤの追加のコピーが他のＬＬＮＶＳ装置１９０にあってもよい。このコンテキストにおいて、冗長コピーが一致するかを判定するために票決による手順（Voting Procedure）を採用してもよい。もしいくつかが矛盾せず、いくつかが矛盾していれば、矛盾するひとつを使用して、エラーの位置を決定することができる。
【００９０】
一実施形態において、エラー・ハンドラ１６０は、エラーの位置を特定するように構成されている（ステップＳ６２０）。もしエラーの位置が特定されていれば、エラー・ハンドラ１６０は、エラーがターゲット・データに関連付けられたものであるか否かを判定することができる（ステップＳ６５０）。もしターゲット・データに関連付けられたものであれば、エラー・ハンドラ１６０は、ＲＡＩＤ層にターゲット・データを再構築するよう要求することができる（ステップＳ６６０）。もしそのターゲット・データの再構築プロセスが成功裡に行われる場合（ステップＳ６７０）、ターゲット・データの対応するメタデータ（例えば、ＡＭＤ／ＶＭＤ）もまた修復され、ロガー１６５は、エラーをログ記録することができる（ステップＳ６９２）。実装次第では、その再構築データがホスト１００に送出されて、そのＩＯリクエストを完遂することができる（ステップＳ６９３）。
【００９１】
ステップＳ６７０のブロックに戻って説明すると、もしその再構築の試みが成功しなかった場合、ロガー１６５は、エラーをログ記録し（ステップＳ６８０）、そしてその送出されたＩＯリクエストに応答してＩＯ失敗がホスト１００に返される。
【００９２】
ステップＳ６５０のブロックに戻って説明すると、もしエラー・ハンドラ１６０が、その検出されたＶＭＤエラーに基づいてターゲット・データ中のエラーの位置を特定しない場合、ＬＬＮＶＳ装置１９０に格納されたＶＭＤが破壊されていると判定して、エラーが宣言される（ステップＳ６９１）。そのようなシナリオでは、ＶＭＤが修復され、ロガー１６５がエラーをログ記録し（ステップＳ６９２）、ホストＩＯリクエストが成功裡に完了される（ステップＳ６９３）。その際、好適にはＲＡＩＤの復元は行われない。
【００９３】
ステップＳ６２０のブロックに戻って説明すると、もしエラー・ハンドラ１６０がエラーの位置を特定しない場合、１以上のＬＬＮＶＳ装置１９０におけるＶＭＤが検査され（ステップＳ６３０）、ＶＭＤのミラー・コピーを格納しているかもしれないＬＬＮＶＳ装置１９０からＶＭＤの１以上の追加のコピーを読み出そうとする（ステップＳ６４０）。もしＶＭＤの追加のコピーが取り出される場合、エラー・ハンドラ１６０は、ステップＳ６１０のブロックに戻って、詳細を上述しまた図６に説明したように、エラーを解析することができる。
【００９４】
異なる実施形態においては、本発明は、全体をハードウエアの様態で、または全体をソフトウエアの様態で、あるいはハードウエア要素およびソフトウエア要素の両方を組み合わせて実装することが可能である。例えば、エラー・ハンドラは、本発明のシステムにより期待される結果を達成する方法を行うために実行されるソフトウエア・コードおよびハードウエア・コンポーネントによって多くが提供され得る、制御されたコンピューティング・システム環境を含んで構成することができる。
【００９５】
図７および図８を参照すると、例示の実施形態によるコンピューティング・システム環境は、ハードウエア環境７００およびソフトウエア環境８００から構成される。このハードウエア環境７００は、ソフトウエアのための実行環境を提供する機械装置および機材を含んで構成され、そのソフトウエアは、以下に提示するように、そのハードウエアのための制御命令を提供する。
【００９６】
ここに提示するように、図に示すハードウエア要素上で実行されるソフトウエア要素は、特定の論理的／機能的な関係によって説明される。しかしながら、ソフトウエアにより実装されるそれぞれの方法は、例えば、ＡＳＩＣｓ（特定用途向け集積回路）、ＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）およびＤＳＰｓ（ディジタル信号プロセッサ）など、構成およびプログラムされたプロセッサとしてハードウエアにより実装されてもよいことに留意されたい。
【００９７】
ソフトウエア環境８００は、システム・ソフトウエア８０２およびアプリケーション・ソフトウエア８０４を含む２つの主要なクラスに分割される。システム・ソフトウエア８０２は、情報をどのように機能させ処理するかをハードウエアに命令する情報管理システムおよびオペレーティング・システム（ＯＳ）など、制御プログラムを含んで構成される。
【００９８】
一実施形態では、上述のデータ検証およびエラー処理プロセスは、１以上のハードウエア環境で実行されるアプリケーション・ソフトウエア８０４として実装されて、ストレージ・システム１１０におけるエラー検出およびデータ復元を容易なものとすることができる。アプリケーション・ソフトウエア８０４は、次のものに限定されないが、プログラム・コード、データ構造、ファームウエア、常駐ソフトウエア、マイクロコード、またはマイクロコントローラにより読み出され、解析され、または実行され得るいかなる形式の情報またはルーチンを含んで構成することができる。
【００９９】
代替の実施形態では、本発明は、コンピュータまたは如何なる命令実行システムにより使用され、またはこれらに関連して、プログラム・コードを提供する、コンピュータにより利用可能なまたはコンピュータ可読な媒体からアクセス可能なコンピュータ・プログラム製品として実装することができる。説明の目的として、コンピュータにより利用可能なまたはコンピュータ可読な媒体は、命令実行システム、装置またはデバイスにより使用され、またはこれらに関連して、プログラムを包含し、格納し、通信し、伝播し、または移送することのできる如何なる装置とすることができる。
【０１００】
コンピュータ可読な媒体は、電子的な、磁気的な、光学的な、電磁気的な、赤外線または半導体システム（または装置、もしくはデバイス）または伝送媒体とすることができる。コンピュータ可読な媒体の例としては、半導体または固体メモリ、磁気テープ、リムーバブル・コンピュータ・ディスケット（フロッピー（登録商標）・ディスク）、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、ハード磁気ディスクおよび光ディスクを含む。現在における光ディスクの例としては、読み出し専用コンパクト・ディスク（ＣＤ−ＲＯＭ）、読み書き可能なコンパクト・ディスク（ＣＤ−Ｒ／Ｗ）およびディジタル・ビデオ・ディスク（ＤＶＤ）を含む。
【０１０１】
図７を参照すると、アプリケーション・ソフトウエア８０４の実施形態は、システム・バス７０４により１以上のメモリ素子に結合されるプロセッサ７０２を含んで構成されるハードウエア環境７００などのデータ処理システム上で実行されるコンピュータ可読なコードの形態で、コンピュータ・ソフトウエアとして実装することができる。メモリ素子は、例えば、ローカル・メモリ７０６、ストレージ媒体７０８およびキャッシュ・メモリ７１６を含んで構成することができる。プロセッサ７０２は、ストレージ媒体７０８からローカル・メモリ７０６に実行可能コードを読み込む。キャッシュ・メモリ７１６は、一時的なストレージを提供して、実行のためにストレージ媒体７０８からコードを読み込む回数を低減している。
【０１０２】
ユーザ・インタフェース装置７１２（例えば、キーボード、ポインティング・デバイスなど）およびディスプレイ・スクリーン７１４が、直接に、または介在するＩ／Ｏコントローラ７１０などを介して、そのコンピューティング・システムに結合されてもよい。ネットワーク・アダプタなどの通信インタフェース・ユニット７１８もまた、そのコンピューティング・システムに結合されて、そのデータ処理装置を、介在する専用または公衆ネットワークを介して他のデータ処理装置、リモート・プリンタまたはストレージ装置と通信可能にすることができる。有線または無線モデムおよびイーサーネット（登録商標）カードは、ネットワーク・アダプタのいくつかの例示タイプである。
【０１０３】
１つまたは複数の実施形態において、ハードウエア環境７００は、上記のすべてのコンポーネントを含まなくてもよいし、あるいは追加の機能またはユーティリティのために他のコンポーネントを含んでもよい。例えば、ハードウエア環境７００は、ラップトップ・コンピュータや、セット・トップ・ボックス、ＰＤＡ（パーソナル・データ・アシスタント）、モバイル通信ユニット（例えば携帯電話）、または情報処理およびデータ・ストレージ、またはこれらのいずれか一方、および通信の能力を有する他の同様なハードウエア・プラットフォームなど、組み込みシステムに具体化された他のポータブル・コンピューティング装置とすることができる。
【０１０４】
本システムの幾つかの実施形態では、通信インタフェース７０８が他のシステムと通信する。この通信は、プログラム・コードを含む種々のタイプの情報を表現するディジタル・データ・ストリームを搬送する電子的、電磁気的または光学的な信号を送受信することによって行われる。この通信は、リモート・ネットワーク（例えばインターネット）、または代替として搬送波上での伝送によって確立されてもよい。
【０１０５】
図８を参照すると、アプリケーション・ソフトウエア８０４は、ストレージ媒体７０８からローカル・メモリ７０２中に読み込まれた後にシステム・ソフトウエア８０２の上で実行される１以上のコンピュータ・プログラムを含んで構成することができる。クライアント・サーバー・アーキテクチャでは、アプリケーション・ソフトウエア８０４は、クライアント・ソフトウエアおよびサーバー・ソフトウエアを含んで構成することができる。例えば、本発明の一実施形態では、クライアント・ソフトウエアがホスト１００上で実行され、そしてサーバー・ソフトウエアがストレージ・システム１１０上で実行されてもよい。
【０１０６】
またソフトウエア環境８００は、ローカルもしくはリモートのコンピューティング・ネットワーク上で利用可能なデータにアクセスするためのブラウザ・ソフトウエア８０８を含んで構成することができる。さらに、ソフトウエア環境８００は、ユーザ・コマンドおよびデータを受け取るためのユーザ・インタフェース８０６（例えば、グラフィカル・ユーザ・インタフェース（ＧＵＩ））を含んで構成されてもよい。上述したハードウエアおよびソフトウエアのアーキテクチャおよび環境は、例示を目的とするものであり、本発明の１つまたは複数の実施形態は、如何なる種類のシステム・アーキテクチャまたは情報処理環境の上で実装できることに留意されたい。
【０１０７】
ここでの論理コード、プログラム、モジュール、プロセス、方法および各方法の個々のステップが実行される順序は、純粋に例示しただけであることに留意されたい。実装次第では、これらのステップは、本特許開示において特段の示唆をしない限り、いかなる順序で、または並行して実行することができる。さらに、ここでの論理コードは、任意の特定のプログラミング言語に関連または限定されるものではなく、そして分散環境、非分散環境またはマルチプロセッシング環境にある１以上のプロセッサ上で実行する１以上のモジュールを含んで構成することができる。
【０１０８】
したがって、本発明が、添付の特許請求の範囲の趣旨および範囲内で変形もしくは修正して実施され得ることに留意されたい。本説明は、余す所なく網羅したり、開示されたとおりの正確な様態に本発明を限定したりすることを意図するものではない。これら開示の実施形態、そしてこれらの種々の他の適用および組み合わせが、本発明の範囲内であり、かつ特許請求の範囲、およびその均等物の全ての範囲によってさらに定義されものである。
本発明の実施形態は、以下の添付図面を参照することによって理解されよう。
【図面の簡単な説明】
【０１０９】
【図１】１つまたは複数の実施形態による、データ・ストレージ環境およびそのコンポーネントの例示的なブロック図。
【図２】１つまたは複数の実施形態による、チャンク（該チャンクに格納されるデータに対応するメタデータを含む付録情報にそれぞれ関連付けられる）として示されるディスク・ドライブの１以上のセクタにデータを書き込むストレージ・システムにおけるディスク・ドライブの論理ブロック図。
【図３】１つまたは複数の実施形態による、チャンク（該チャンクに格納されたデータに対応するメタデータを含む付録情報にそれぞれ関連付けられる）として示されるディスク・ドライブの１以上のセクタにデータを書き込むストレージ・システムにおけるディスク・ドライブの論理ブロック図。
【図４】１つまたは複数の実施形態による、データ検証方法のフローチャート。
【図５】１つまたは複数の実施形態による、データ検証方法のフローチャート。
【図６】１つまたは複数の実施形態による、データ検証方法のフローチャート。
【図７】１つまたは複数の実施形態による、本発明のシステムが動作し得るハードウエアおよびソフトウエアの環境のブロック図。
【図８】１つまたは複数の実施形態による、本発明のシステムが動作し得るハードウエアおよびソフトウエアの環境のブロック図。
【符号の説明】
【０１１０】
１００…ホスト（コンピューティング・システム）、１１０…ストレージ・システム、１２０…アレイ・コントローラ、１３０…メタデータ・マネジャ、１３２…ジェネレータ、１３４…チェッカ、１４０…ＲＡＩＤマネジャ、１５０…ＩＯハンドラ、１６０…エラー・ハンドラ、１６５…ロガー、１８０…ディスク・ドライブ、１９０…ＬＬＮＶＳ装置（低レイテンシ不揮発性ストレージ装置）、７００…ハードウエア環境、７０２…プロセッサ、７０４…システム・バス、７０６…ローカル・メモリ、７０８…ストレージ媒体、７１０…Ｉ／Ｏコントローラ、７１２…ユーザ・インタフェース装置、７１４…ディスプレイ・スクリーン、７１６…キャッシュ・メモリ、７１８…通信インタフェース、８００…ソフトウエア環境、８０２…システム・ソフトウエア、８０４…アプリケーション・ソフトウエア、８０６…ユーザ・インタフェース、８０８…ブラウザ
【図１】
0004916033.tif 000002
【図２】
0004916033.tif 000003
【図３】
0004916033.tif 000004
【図４】
0004916033.tif 000005
【図５】
0004916033.tif 000006
【図６】
0004916033.tif 000007
【図７】
0004916033.tif 000008
【図８】
0004916033.tif 000009