JP4647021B2 - データ完全性検証メカニズム - Google Patents

データ完全性検証メカニズム Download PDF

Info

Publication number
JP4647021B2
JP4647021B2 JP2009183421A JP2009183421A JP4647021B2 JP 4647021 B2 JP4647021 B2 JP 4647021B2 JP 2009183421 A JP2009183421 A JP 2009183421A JP 2009183421 A JP2009183421 A JP 2009183421A JP 4647021 B2 JP4647021 B2 JP 4647021B2
Authority
JP
Japan
Prior art keywords
data
data block
checksum
volatile memory
software application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2009183421A
Other languages
English (en)
Other versions
JP2009259286A (ja
Inventor
ロアイザ,ファン
フ,ウェイ−ミン
リー,ジンリン
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2009259286A publication Critical patent/JP2009259286A/ja
Application granted granted Critical
Publication of JP4647021B2 publication Critical patent/JP4647021B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Description

この発明は、一般に、コンピュータアプリケーションにおけるデータの完全性に関し、より具体的には、データ完全性検証メカニズムに関する。
社会はコンピュータに非常に大きく依存するようになった。今日の世界では、コンピュータは、ファイナンシャルプラニングから企業の給料支払システム、航空機誘導装置に至るまで、あらゆることのために用いられる。コンピュータシステムが広く用いられるため、データ破損は、ほとんどの個人に影響を及ぼし得る問題であり、コンピュータハードウェア産業とコンピュータソフトウェア産業との両方を悩まし続ける問題である。
たとえば、データベースアプリケーション等のソフトウェアアプリケーションは、それらのデータの完全性の保守に非常に大きく依存している。データベースアプリケーションに関連するデータが破損すると、ユーザは、正確ではない結果を、場合によってはシステムクラッシュを経験する恐れがある。
データ破損は、さまざまな理由により、さまざまな異なるソースから結果として起こり得る。たとえば、データベースアプリケーションにおけるソフトウェア「バグ」それ自体によって、拒絶されるような社会保障番号または無効なポインタアドレス等の無効なデータが表またはデータ構造に記憶され得る。加えて、オペレーティングシステムそのものを含んだ、同じコンピュータシステム上で実行される他のプログラムが、特定の変数、表、データ構造、または他の同様の種類の情報に誤って上書きする恐れがあり、したがって、ある特定のソフトウェアアプリケーションに関連したデータを破損する。さらに、アプリケーションがデータブロックをディスクに書込むとき、データは、通例、多くのソフトウェアおよびハードウェア中間層を通ってから実際にディスクに記憶される。したがって、データブロックがディスクに書込まれる前に、またはそれがディスクに書込まれているときに、データブロックが破損するさらなる恐れさえもある。
たとえば、データブロックをディスクに書込むとき、データは、ソフトウェアアプリケーションからボリュームマネージャへと、ボリュームマネージャからデバイスドライバへと、デバイスドライバからディスクコントローラへと、さらにはディスクコントローラからディスクアレイへと進んでディスクに記憶され得る。データブロックが後にディスクから読出されるとき、データがソフトウェアアプリケーションによって用いられ得る前に、データは再び同じソフトウェアおよびハードウェア層セットを通らなければならない。したがって、これらの層のいずれかにおけるバグによって、データが破損する恐れがある。加えて、ディスクが不安定であって、したがって、データがディスクに書込まれた後にエラーがデータに導入されると、たとえ他の層がデータを誤って変更しなくても、データの完全性が損なわれ得る。
従来、データロッキング方式は、ある特定のアプリケーションに関連するデータの完全性を保守するための1つの方法を提供する。他のアプリケーションによるアクセスを拒絶するためにデータをロッキングすることによって、オペレーティングシステムは、一般に、あるアプリケーションに関連したデータが別のアプリケーションによって上書きされないこと、または破損しないことを保証することができる。
しかし、従来のロッキング方式には、ディスクドライバまたは他のローレベルファームウェアにおける媒体の故障またはバグ等の問題に対する備えがない。さらに、オペレーティングシステムそのものが、データが誤って上書きおよび/または破損されることを引き起こすバグを含む恐れもある。したがって、従来のロッキング方式は、データの完全性が常に保守されること、または破損データが決してディスクに記憶されないことを堅実に保証することはできない。
ディスクに記憶された破損データを識別するための1つの方法は、論理チェックおよび物理的なチェックサムを用いることによる。論理チェックは、データを、データ値に関連するであろうと予想される特定の予め定められた特徴と比較することによってデータの完全性が判断されるメカニズムである。たとえば、表A内の列が、表Bのある特定の行にインデックスをつけるべき1組のポインタを含み、ポインタのいずれかが、表Bの行に関連しないアドレス値を有するならば、そのポインタは、破損アドレス値を有するものとして識別され得る。同様に、表内のある特定の列が従業員の電話番号を記憶するように構成され、その列のいずれかの行内の値がネガティブであると判断されるならば、その値は破損していると識別され得る。
図1は、アプリケーションによってディスクから取出されるデータの完全性を判断するための1つの方法を例示する。この例では、ユーザは、アプリケーション104と対話してアプリケーション104に関連するデータのブロックを生成および/または更新した。たとえば、データブロックは、特定のデータベース表のための更新された情報を含み得る。データブロックをディスクに記憶するために、論理チェック120が、まずデータ上で実行されてその完全性を検証する。次に、物理的なチェックサム計算122が行なわれてチェックサム値を計算し、データブロック内に記憶する。物理的なチェックサム計算122は、データがディスクから読出されたときに、データブロックのビットパターンに対する後続の変更が識別され得るメカニズムを提供する。たとえば、チェックサム値は、計算され、データブロック内に記憶され得、排他的論理和(XOR)演算等の論理演算がデータブロック内のビットに適用されると、ゼロ等のチェックサム定数が計算される。その後、データブロックは、ディスクコントローラ106に送られ、次に、場合によってはネットワーク108を介してディスクコントローラ106からディスクアレイ110へと送られ、1つ以上のディスク114−118に記憶される。
その後、アプリケーション104がデータブロック内に含まれる更新情報を再び必要とするならば、それがアプリケーション104によって用いられ得る前に、データブロックは、いくつかの層を(つまり、1つ以上のディスク114−118からディスクアレイ110へと、ディスクアレイ110からネットワーク108を通してディスクコントローラ106へと)再び進まなければならない。データブロックの完全性を判断するために、物理的なチェックサム検証プロセスが行なわれて、データブロックが依然として正しいチェックサム定数値を有することが検証される。データブロックが依然として正しいチェックサム定数値を有すると判断されると、論理チェック126がデータ上で行なわれて、論理チェック120が行なわれた時間と、物理的なチェックサム計算122が行なわれた時間との間でデータブロックが破損しなかったことが検証される。
しかし、データブロックの完全性を検証するための、この説明された方法に関する欠点は、データブロック内の情報上で論理チェックを行なうことが、かなりの量の時間およびリソース(オーバーヘッド)を必要とすることである。多数のデータブロックが連続的に書込まれ、ディスクから読出されることを必要とする多くのアプリケーション、たとえば、データベースアプリケーションにとって、追加的なオーバーヘッドは、アプリケーションの効率性および応答時間に大きな影響を及ぼし得る。
加えて、説明された方法に関する別の欠点は、それによって破損データがディスクに書込まれることが可能になってしまうことである。たとえば、論理チェック120が行なわれた後にデータが破損した場合、データは、物理的なチェックサム計算122が行なわれた後に依然としてディスクに書込まれる。しかし、多くのアプリケーション、具体的には、ノントランザクションベースのアプリケーションにとって、破損データをディスクに書込むことは、破局的な効果を持つ恐れがある。なぜならば、無効な変更を容易にバックアウトできないためである。
上に基づくと、データの記憶およびディスクからのデータの取出に通例付随するオーバーヘッドを減じるためのメカニズムが必要とされる。
破損データがディスクに書込まれる恐れを減じるメカニズムも必要とされる。
加えて、データがディスク上の正しい領域に書込まれる可能性を高めるメカニズムも必要とされる。
この発明の1つの局面に従うと、データの完全性を保守するための技術が提供される。1つの技術によると、物理的なチェックサム計算がデータブロック上で行なわれる。物理的なチェックサム計算を行なった後、データブロック内に含まれるデータ上で論理チェックが行われる。データブロックが論理チェックをパスすると、データブロックは不揮発性メモリに書込まれ得る。
1つの特徴によると、データブロックが不揮発性メモリに書込まれるか、またはそこから読出されるとき、物理的なチェックサム検証手順がデータブロック上で行なわれて、データブロック内に含まれるデータ上で論理チェックを行なった後にデータブロックが破損したかが判断される。物理的なチェックサム検証手順は、ある特定のアプリケーションの要件に応じて、記憶装置または他の場所で行なわれ得る。
この発明は、コンピュータ読出可能な媒体、搬送波で具体化されるコンピュータデータ信号、および上述のステップを行なうように構成される装置も含む。他の特徴および局面は、以下の説明および添付の請求項から明らかとなるだろう。
この発明は、同じ参照番号が同様の要素を示す添付の図において、限定としてではなく、例として示される。
アプリケーションによってディスクから取出されるデータの完全性を判断するための従来の方法を例示するブロック図である。 この発明が用いられ得るデータ完全性確認メカニズムのブロック図である。 この発明が用いられ得る多レベルデータ検証システムのブロック図である。 この発明が用いられ得る別のデータ検証システムのブロック図である。 不揮発性メモリに書込まれるべきデータの完全性を検証するための多レベル検証シーケンスの例を示すフロー図である。 不揮発性メモリから読出されるデータの完全性を検証するための多レベル検証シーケンスの例を示すフロー図である。 ブロックが不揮発性メモリに書込まれるべき位置を検証するためのメカニズムを例示する図である。 この発明が用いられ得るバックアップシステムのブロック図である。 実施例が実施され得るコンピュータシステムのブロック図である。
アプリケーションに関連したデータの完全性を確認するためのデータ確認メカニズムが提供される。以下の説明では、この発明の完全な理解を提供するために、説明上、多くの具体的な詳細事項が示される。しかし、この発明は、これらの具体的な詳細事項なしに実施され得ることは当業者には明らかであろう。他の例では、この発明を不必要に曖昧なものにしないために、周知の構造および装置がブロック図の形で示される。
動作状況
アプリケーションに関連したデータの完全性を確認するためのデータ確認メカニズムが提供される。1つの実施例では、データブロックをディスクに書込む前に、物理的なチェックサム計算プロセスがデータブロック上で行なわれる。物理的なチェックサム計算プロセスは、後続の物理的なチェックサム検証プロセスが行なわれてデータブロックが後に変更されたかが判断され得るメカニズムを提供する。たとえば、物理的なチェックサム計算プロセスは、データブロック内のデータ上で論理演算を行なってチェックサム値を決定することと、チェックサム値をデータブロックに挿入することとを含み得、したがって、一定のチェックサム値をデータブロックと関連させる。一方で、物理的なチェックサム検証プロセスは、データブロック上で論理演算を後に行なうことと、結果を予め計算されたチェックサムと比較してデータブロックが依然として正しい一定のチェックサム値を有することを検証することとを含み得る。
物理的なチェックサム計算プロセスが行なわれた後、データブロックをディスクに記憶する前に、論理チェックがデータブロック内のデータ上で行なわれて、特定の予め定められた特徴がデータ値に関連していることを検証する。論理チェックによって、特定の予め定められた特徴がデータに関連していることが示される場合、その場合にのみ、データブロックはディスクに書込まれ得る。その後は、物理的なチェックサム計算プロセスが論理チェックの前に行なわれたため、データブロックがアプリケーションによって再び必要とされる場合、物理的なチェックサム検証プロセスのみが必要とされてデータブロックの完全性を検証する。
図2は、この発明が用いられ得るデータ確認メカニズム200のブロック図を示す。一般に、データ確認メカニズム200は、ホストコンピュータ202、ネットワーク108、およびデータ記憶装置112を含む。
ネットワーク108は、ホスト202とデータ記憶装置112との間の通信のための通信媒体を提供するネットワークシステムである。ネットワーク108は、さまざまな異なる形の通信媒体を表わし得るが、これらは、直列または並列媒体接続、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネットとして知られているグローバルパケット交換網、ワイヤレス送信媒体、またはパーティシパント間で情報を交換するためのいずれかの他の媒体を含むが、これらに限定されているわけではない。ネットワーク108は、SCSIまたはファイバチャネル等の通信プロトコルを用いるディスクアレイ100への直接のケーブル接続、または異なるネットワーク媒体の組合せ、たとえば、ディスクコントローラ106とディスクアレイ110とが通信することを可能にするように構成されたワイヤレス通信ネットワークとLANとの組合せを表わす。
データ記憶装置112は、アプリケーション204のためのデータを記憶するために用いられる1つ以上の不揮発性メモリ構成要素を表わす。データ記憶装置112は、特定のいずれかの種類の記憶媒体に限定されない。特に、ここで用いられるような不揮発性メモリという用語は、情報を持続的に記憶するために用いられ得るいずれの種類の持続的な記
憶装置または持続的な媒体として広く定義される。この例では、データ記憶装置112は、ディスクアレイユニット210および1つ以上のディスク114−118を含む、独立したディスクまたはドライブの重複したアレイ(Redundant Array of Independent Disks
or Drives)(RAID)を表わす。
ホストコンピュータ202は、コンピュータであるか、または1つ以上のコンピュータシステム内で共働または実行するハードウェアまたはソフトウェア構成要素またはプロセスのグループである。この例では、ホストコンピュータ202は、アプリケーション204、物理的なチェックサム計算プロセス220、論理チェックプロセス222、論理的なチェックサム検証プロセス224、およびディスクコントローラ206を含む。
アプリケーション204は、データを操作し、さらにはデータを記憶し、データ記憶装置112からデータを取出すように構成されるさまざまな異なるソフトウェアアプリケーションを表わし得る。たとえば、アプリケーション204は、データベースアプリケーション、ワードプロセシングアプリケーション、CAD設計アプリケーション、またはファイナンシャルプラニングアプリケーションを含むが、それらに限定されていない種々のアプリケーションを表わし得る。物理的なチェックサム計算プロセス220、論理チェックプロセス222、および物理的なチェックサム検証プロセス224は、アプリケーション204内の埋込まれたコードを表わし得るか、またはアプリケーション204に静的または動的にリンクされ得る別個のプロセス、タスク、またはプログラムであり得る。
1つの実施例では、データブロックがデータ記憶装置112に書込まれる前に、アプリケーション204は、物理的なチェックサム計算プロセス220を開始してデータブロックへの挿入のためのチェックサム値を生成する。1つの実施例では、チェックサム値を生成するために、XORまたはADD演算等の論理演算が、データブロック内に含まれるデータ上で行なわれる。論理演算を行なうことから結果として得られるベクトル、および所望のチェックサム定数に基づいて、チェックサム値が、選択され、データブロックに挿入される。その後、データブロックの完全性は、データブロック上で同じ論理演算を行ない、結果をデータブロックに記憶されたチェックサム値と比較することによって、判断され得る。
物理的なチェックサム計算プロセス220が行なわれた後、論理チェック222がデータブロック内のデータ上で行なわれて、特定の予め定められた特徴がデータ値と関連していることが検証される。論理チェックによって、特定の予め定められた特徴がデータに関連していないことが表わされると、リカバリシーケンスが行なわれてデータブロック内の正確でない、または破損したデータを訂正および/または除去し得る。
代替的には、論理チェックによって、特定の予め定められた特徴がデータと関連していることが表わされると、データブロックは、次に、ディスクコントローラ206に送られる。ディスクコントローラ206は、次に、ネットワーク108を介してディスクアレイユニット210と通信して、データブロックを1つ以上のディスク114−118に記憶する。
その後、データブロックがアプリケーション204によって再び必要とされると、データブロックは、データ記憶装置112から取出され、ディスクコントローラ206に送られる。次に、物理的なチェックサム検証プロセス224がデータブロック上で行なわれて、物理的なチェックサム計算プロセス220が行なわれてからデータが破損していないことが検証される。1つの実施例では、物理的なチェックサム検証プロセス224を実行するために、物理的なチェックサム計算プロセス220が用いる論理演算がデータブロック上で行なわれる。論理演算の結果は、次に、データブロックに記憶されたチェックサムと
比較されて、物理的なチェックサム計算プロセス220が行なわれてからデータブロックの完全性が保守されているかが判断される。有利なことには、物理的なチェックサム計算220は論理チェック222の前に行なわれたため、データブロックの完全性を検証するために追加の論理チェックは必要とされない。したがって、従来のシステムでは通例必要とされるデータ取出オーバーヘッドが、大きく減じられ得る。
多レベルデータ検証
特定の実施例では、データブロックの完全性は、ディスクへの記憶の前に多数のレベルで検証される。図3Aは、データブロックの完全性がディスクへの記憶の前に多数のレベルで検証される多レベルデータ検証システムの例を示す。図3Aは、図2と同様であり、したがって、同様の構成要素には同じ番号が付けられた。
この例では、オペレーティングシステム306は、ボリュームマネージャ302およびデバイスドライバ304を含む。ボリュームマネージャ302は、アプリケーション204等のアプリケーションプログラムとインターフェイスをとるように、さらには不揮発性メモリ(ディスク114−118)へのデータの記憶および不揮発性メモリ(ディスク114−118)からのデータの取出を管理するように構成される。デバイスドライバ304は、オペレーティングシステム306とディスクコントローラ206との間で通信するためのインターフェイスを提供する。1つの実施例では、ボリュームマネージャ302および/またはデバイスドライバ304は、物理的なチェックサム検証プロセスを実行して、物理的なチェックサム計算プロセス220(たとえば、物理的なチェックサム検証手順224)を行なってからデータブロックが破損していないことを検証するように構成される。アプリケーションプロセス308とディスク114−118との間の異なる処理レベルで物理的なチェックサム検証プロセスを行なうことによって、データが実際にディスクに書込まれる前に、データの完全性をさらに検証することができる。加えて、説明される多レベル検証方式は、データがどこで破損したかを識別する助けとなり得る。なぜならば、多レベル検証テストは、データがどこで破損したのかを特定する助けとなるためである。さらに、特定の実施例では、多レベル検証方式は、破損データを、それがディスクに書込まれる前に検出し、それがディスクに書込まれる前に破損データを訂正する能力をアプリケーションまたは他のプロセスに提供するように構成される。たとえば、破損していると識別されたデータがディスクに書込まれ得ると、次にアプリケーションが破損データをディスクから読出す時、それは、何日か後、何ヵ月か後、さらには何年か後でさえあり得るが、アプリケーションは、破損データを訂正するための情報および/または能力を有さないかもしれない。しかし、破損していると識別されたデータをディスクに書込ませないことによって、アプリケーションが破損データをディスクから読出す恐れを減じる検証方式が提供される。
特定の実施例では、多レベルデータ検証システムは、アプリケーション204とディスク114−118との間の経路に沿った他の構成要素でのデータ完全性チェックの実行を含み得る。たとえば、1つの実施例では、ディスクコントローラ206およびディスクアレイ210は、アプリケーション204に関連したデータ上でデータ完全性チェックを行なうように構成され得る。たとえば、特定の実施例では、ディスクコントローラ206は、物理的なチェックサム検証プロセスを実行して、物理的なチェックサム計算プロセス220が行なわれてからデータブロックが破損していないことを検証するように構成される。ディスクコントローラ206で物理的なチェックサム検証プロセスを行なうことによって、検証システムは、アプリケーション204以外の構成要素、たとえば、オペレーティングシステム306が、データの完全性を破損しなかったことを検証することができる。加えて、物理的なチェックサム検証プロセスを実行するようにディスクアレイ210を構成することによって、検証システムは、ネットワーク108を含む他のいずれかの構成要素によってデータが破損されなかったことを検証することができる。さらに、物理的なチ
ェックサム検証プロセスを実行するようにディスクアレイ210を構成することによって、検証システムは、破損データがディスク114−118上に記憶される恐れを大きく減じることができる。
たとえば、図3Bは、データブロックをディスクに記憶する前に物理的なチェックサム検証手順を行なうことによってデータブロックの完全性が検証される多レベルデータ検証システム350の例を示す。図3Bは、図3Aと同様であるため、同様の構成要素には同じ番号が付けられる。この例では、アプリケーション204が物理的なチェックサム計算220を行なった後、データブロック内のデータ上で論理チェックを行なうことなく、データブロックは、ディスクコントローラ206に送られる。ディスクコントローラ206は、次に、データブロックをネットワーク108を介してディスクアレイ210に送って、データ記憶装置112内に記憶する。この例では、データブロックの受信時に、ディスクアレイ210は物理的なチェックサム検証プロセス352を行なって、物理的なチェックサム計算220がアプリケーション204によって行なわれてからデータが破損していないことが検証される。データブロックが破損していないと判断されると、データブロックはディスクに書込まれる。代替的には、データブロックが破損していたと判断されると、誤りフラグがセットされ、データブロックはディスクに書込まれない。物理的なチェックサム検証プロセスをディスクアレイ210で行なうことによって、検証システム350は、データブロックをディスクに記憶する直前にデータの完全性を検証することができる。特に、検証システム350は、データブロックをディスクに記憶する前に、アプリケーション204以外の構成要素、たとえば、オペレーティングシステム306またはディスクコントローラ206がデータを破損しなかったことを検証することができる。
加えて、上で図3Aにおいて説明されたように、追加のデータ完全性チェックは、アプリケーション204とディスク114−118との間の経路に沿った他の構成要素において行なわれ得る。たとえば、ボリュームマネージャ302、デバイスドライバ304、およびディスクコントローラ206はまた、ディスクに記憶されるべきデータブロック上でデータ完全性チェックを行なうように構成され得る。さらに、データブロックが後にディスクから取出されるとき、アプリケーション204は、任意で、物理的なチェックサム検証224を行なってもよい。
データを不揮発性メモリに書込むための検証シーケンス
図4Aは、この発明の特定の実施例に従った、不揮発性メモリに書込まれるべきデータの完全性を検証するための多レベル検証シーケンスの例を示すフロー図である。説明のため、図4Aは、図3Aに関連して説明される。
ブロック402では、不揮発性メモリに書込まれるべきデータのブロックが識別される。たとえば、アプリケーション204によって更新されたデータのブロックが、1つ以上のディスク114−118に書込まれることが必要となり得る。
ブロック404では、物理的なチェックサム計算プロセスがデータブロック上で行なわれる。たとえば、物理的なチェックサム計算プロセス220が開始されて、データブロックへの挿入のためのチェックサム値が決定され得る。
ブロック406では、論理チェックが、任意で、データブロック内のデータ上で行なわれる。たとえば、論理チェックがデータ上で行なわれて、特定の予め定められた特徴がデータ値と関連していることが検証され得る。
ブロック408では、論理チェックが行なわれたと仮定すると、データブロック内のデータが論理チェックをパスしたかについての判断がなされる。データが論理チェックをパ
スするならば、プロセスはブロック410へと進む。代替的には、データが論理チェックをパスしなかった場合には、プロセスはブロック418に進む。
ブロック410では、データが送られて不揮発性メモリに記憶される。たとえば、データブロックは、オペレーティングシステム306に送られて1つ以上のディスク114−116上に記憶され得る。
ブロック412では、1つ以上の構成要素が、任意で、物理的なチェックサム検証手順を行なってデータブロック内のデータの完全性を検証し得る。たとえば、ボリュームマネージャ302、デバイスドライバ304、ディスクコントローラ206、およびディスクアレイ210等の構成要素が、物理的なチェックサム検証手順を行なってチェックサム値に基づいてデータの完全性を検証するように構成され得る。
任意の物理的なチェックサム検証手順が1つ以上の構成要素によって行なわれる場合、ブロック414で、実行される各チェックサム検証手順について、データブロック内のデータが物理的なチェックサム検証テストをパスしたかについての判断がなされる。データが任意の物理的なチェックサム検証テストをパスするならば、ブロック416で、データブロックは不揮発性メモリに書込まれる。代替的には、データが任意の物理的なチェックサム検証テストのうちの1つ以上をパスしなかった場合、ブロック418で、データブロックには、破損データを含むというフラグが立てられ、したがって、データブロックはディスクに書込まれない。
不揮発性メモリからデータを取出すための検証シーケンス
図4Bは、この発明の特定の実施例に従った、不揮発性メモリから読出されるデータの完全性を検証するための多レベル検証シーケンスの例を示すフロー図である。説明のため、図4Bも、図3Aと関連して説明される。
ブロック452では、不揮発性メモリに記憶されるデータのブロックが識別される。たとえば、以前にアプリケーション204によって更新されたデータのブロックが、1つ以上のディスク114−118から読出されることが必要となり得る。
ブロック454では、データブロックが見つけられ、不揮発性メモリから取出される。
ブロック456では、1つ以上の構成要素が任意で物理的なチェックサム検証手順を実行して、取出されたデータブロックの完全性を検証し得る。たとえば、ディスクアレイ210、ディスクコントローラ206、デバイスドライバ304、およびボリュームマネージャ302等の構成要素は、物理的なチェックサム検証手順を行なって、既知のチェックサム定数値に基づいて取出されたデータの完全性を検証するように構成され得る。
1つ以上の構成要素が任意の物理的なチェックサム検証手順を行なって取出されたデータの完全性を検証する場合、ブロック458で、実行された各チェックサム検証手順について、データブロック内のデータが物理的なチェックサム検証テストをパスしたかについての判断がなされ得る。データが任意の物理的なチェックサム検証テストのうちの1つ以上をパスしなかった場合、プロセスはブロック468に進む。
代替的には、データが任意の物理的なチェックサム検証テストをパスするならば、ブロック460で、データブロックは、要求を行なっているアプリケーションに送られる。
ブロック462では、要求を行なっているアプリケーションは、物理的なチェックサム検証手順を行なって、取出されたデータブロックの完全性を検証する。たとえば、アプリケーション204は、物理的なチェックサム検証手順224を実行して、取出されたデー
タの完全性を既知のチェックサム定数値に基づいて検証するように構成され得る。
特定の実施例では、取出されたデータブロックが、不揮発性メモリから読出されてから任意の物理的なチェックサム検証テストのうちの1つ以上をパスしたことがわかった場合、要求を行なっているアプリケーションは、ブロック462での物理的なチェックサム検証手順を任意でスキップし得る。
ブロック464では、データブロックが、アプリケーションによって行なわれたチェックサム検証手順224をパスしたかについての判断がなされる。データが物理的なチェックサム検証テストをパスしなかった場合、ブロック468で、データブロックには、破損データを含んでいるというフラグが立てられる。
代替的には、データが物理的なチェックサム検証手順224をパスする場合、ブロック466で、データブロック内のデータは、要求を行なっているアプリケーションによって用いられ得る。
ブロック位置検証
特定の実施例では、ある特定のデータブロックを不揮発性メモリに記憶するために用いられるべきブロック位置(「所望のブロックアドレス」)を識別するためのメカニズムが提供される。たとえば、所望のブロックアドレスは、各データブロック内に記憶されて、データブロックが不揮発性メモリ内で記憶されるべき物理アドレスが識別され得る。図5は、ブロック位置識別子504がブロック500内で維持されるメカニズムを例示する。1つの実施例では、ブロック位置識別子504は、データブロック500が不揮発性メモリ内でどこに記憶されるべきかについての物理アドレスを表わす。ブロック500内にブロック位置識別子504を記憶することによって、ディスクアレイ210等の構成要素は、データブロックが不揮発性メモリ内の正しい位置に記憶されることを検証することができる。
特定の実施例では、アプリケーション204、またはアプリケーション204に関連した構成要素は、1つ以上のディスク114−118のトポロジーのマッピングを保守する。マッピングを用いることによって、ブロックが記憶されるべき物理アドレスが、識別され、ブロック内に記憶され得る。データブロックの受信時、ディスクアレイ210は、ブロック位置識別子504に関連した物理アドレスが、ブロックが不揮発性メモリ内で記憶されるべき位置に正確に対応することを検証する。特定の実施例では、ブロック位置識別子504が、ブロックが記憶されるべき位置に正確に対応していない場合、エラーにフラグが立てられ、したがって、ブロックは不揮発性メモリに記憶されない。たとえば、ブロック位置識別子504が、ブロックが記憶されるべき位置に正確に対応していない場合、オペレーティングシステム306および/またはアプリケーション204に通知され得る。1つの実施例では、ブロック位置識別子504を用いて、ブロックが不揮発性メモリ内の正しい位置から読出されることが検証される。たとえば、ブロック位置識別子504をデータが取出されたメモリ内の物理的な位置と比較することによって、ディスクアレイ210は、データブロックが不揮発性メモリ内の正しい位置から取出されたことを検証することができる。
特定の実施例では、多数のブロック位置識別子がブロック内に記憶され得、これらは、ブロックが記憶されるべき多数の位置を識別する。たとえば、ミラーリングデータベースシステムに備えるために、多数のブロック位置識別子が各データブロックに記憶されて、データブロックが不揮発性メモリ内で記憶されるべき多数の位置が識別され得る。代替的には、単一のブロック位置識別子504が各ブロック内に含まれ得、ディスクアレイ210は、アドレスを検証し、不揮発性メモリ内でデータブロックをミラーリングするために
1つ以上の他のアドレスを決定するように構成され得る。
バックアップ実行時の検証シーケンス
特定の実施例では、1つ以上のアプリケーションプログラムに関連したデータをバックアップするためのデータ確認メカニズムが提供される。図6は、データブロックをバックアップ装置604に記憶する前にバックアッププロセス602が物理的なチェックサム検証手順を行なうバックアップシステム600を例示する。この例では、バックアップ装置604は、特定のいずれの種類のバックアップメカニズムまたは媒体にも限定されておらず、したがって、テープ駆動装置、ZIP駆動装置、DVDまたはCD ROMユニット、およびフロッピー(登録商標)ディスクユニットを含み得るが、これらに限定されないさまざまな異なる種類のバックアップ構成要素を含み得る。
1つの実施例では、1つ以上のデータブロックをバックアップするとき、バックアッププロセス602は、データブロックをデータ記憶装置112から取出し、各ブロック上で物理的なチェックサム検証手順を行なってデータの完全性を検証する。上で既に示されたように、論理チェック222の前に物理的なチェックサム計算220が行なわれたため、データブロックの完全性を検証するために追加の論理チェックは必要とされない。したがって、従来のバックアップシステムで通例必要とされるオーバーヘッドが大きく減じられ得る。加えて、バックアッププロセス602で物理的なチェックサム検証プロセスを行なうことによって、破損データがバックアップ装置604上に記憶される恐れを大きく減じることのできるバックアップ検証システムが提供される。
特定の実施例では、データが破損したと判断される時、バックアッププロセス602は、破損データをバックアップ装置604に書込ませない。バックアッププロセス602は、代わりに、アプリケーション204または他のプロセスと通信して、破損データを、それがバックアップ装置604に書込まれ得る前に、訂正し得る。破損データをバックアップ装置604に書込ませないことによって、破損データがバックアップ装置604に記憶される恐れを減じる検証方式が提供される。加えて、図6は論理チェック222を表わすが、特定の実施例では、システム600は、論理チェック222の実行を含まない場合もある。たとえば、1つの実施例では、システム600は、論理チェック222を含まず、代わりに、1つ以上の物理的なチェックサム検証プロセスに依存して、データ記憶装置112に書込まれ、かつデータ記憶装置112から取出されるデータ上でデータ完全性チェックを行なう。
また、特定の実施例では、ディスクコントローラ206または他のオペレーティングシステム構成要素から直接データブロックを受け取る代わりに、バックアッププロセス602は、アプリケーション204と通信してデータブロックを受け取るように構成され得る。データブロックを受け取るとき、バックアッププロセス602は依然として、物理的なチェックサム手順224を行なってバックアップ装置604への書込の前にデータが破損していないことを保証するように構成され得る。
ハードウェア例
図7は、この発明の実施例が実現され得るコンピュータシステム700を例示したブロック図である。コンピュータシステム700は、情報の通信を行なうためのバス702または他の通信メカニズム、および、情報を処理するための、バス702に結合されるプロセッサ704を含む。コンピュータシステム700はまた、プロセッサ704によって実行されるべき情報および命令の記憶のための、バス702に結合されるランダムアクセスメモリ(RAM)または他の動的記憶装置等のメインメモリ706を含む。メインメモリ706はまた、プロセッサ704によって実行されるべき命令の実行中に一時変数または他の中間情報を記憶するために用いられ得る。コンピュータシステム700はさらに、プ
ロセッサ704のための命令および静的情報を記憶するための、バス702に結合される読出専用メモリ(ROM)708または他の静的記憶装置を含む。磁気ディスクまたは光学ディスク等の記憶装置710が、設けられ、情報および命令を記憶するためにバス702に結合される。
コンピュータシステム700は、コンピュータユーザに情報を表示するための、陰極線管(CRT)等のディスプレイ712にバス702を介して結合され得る。英数字および他のキーを含む入力装置714がバス702に結合されて、情報およびコマンド選択をプロセッサ704に伝達する。別の種類のユーザ入力装置は、方向情報およびコマンド選択をプロセッサ704に伝達し、さらにはディスプレイ712上でのカーソルの動きを制御するための、マウス、トラックボール、またはカーソル方向キー等のカーソル制御716である。この入力装置は、典型的には、2つの軸、第1の軸(たとえば、x)と第2の軸(たとえば、y)とにおいて2自由度を有し、これによって、装置が平面で位置を特定することが可能となる。
この発明は、データ完全性検証メカニズムを実現するためのコンピュータシステム700の用途に関連する。この発明の1つの実施例に従うと、プロセッサ704が、メインメモリ706内に含まれる1つ以上の命令の1つ以上のシーケンスを実行することに応答して、データ完全性検証メカニズムがコンピュータシステム700によって提供される。このような命令は、記憶装置710等の別のコンピュータ読出可能な媒体からメインメモリ706へと読出され得る。メインメモリ706内に含まれる命令シーケンスの実行によって、プロセッサ704がここで説明されるプロセスステップを実行させられる。多重処理構成における1つ以上のプロセッサを用いてメインメモリ706内に含まれる命令シーケンスを実行することもできる。代替的な実施例では、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せてハードワイヤード回路を用いてこの発明を実現することもできる。したがって、この発明の実施例は、ハードウェア回路とソフトウェアとの特定のいずれかの組合せに限定されない。
ここで用いられるような用語「コンピュータ読出可能な媒体」は、実行のために命令をプロセッサ704に提供するいずれかの媒体を指す。このような媒体は、不揮発性媒体、揮発性媒体、および送信媒体を含むがそれらに限定されない多くの形をとり得る。不揮発性媒体は、たとえば、記憶装置710等の光学ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ706等のダイナミックメモリを含む。送信媒体は、バス702を含むワイヤを含んだ、同軸ケーブル、銅ワイヤ、および光ファイバを含む。送信媒体はまた、電波および赤外線データ通信中に生成されるような音波または光波の形をとり得る。
コンピュータ読出可能な媒体の一般的な形は、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、または他のいずれかの磁気媒体、CD−ROM、他のいずれかの光学媒体、パンチカード、ペーパーテープ、ホールパターンを備えた他のいずれかの物理的な媒体、RAM、PROM、EPROM、フラッシュEPROM、他のいずれかのメモリチップまたはカートリッジ、以下で説明されるような搬送波、またはコンピュータが読出可能な他のいずれかの媒体を含む。
種々の形のコンピュータ読出可能な媒体は、実行のために1つ以上の命令の1つ以上のシーケンスをプロセッサ704に搬送することに関与し得る。たとえば、命令は、最初リモートコンピュータの磁気ディスク上で搬送され得る。リモートコンピュータは、命令をそのダイナミックメモリにロードし、モデムを用いて電話線上で命令を送信し得る。コンピュータシステム700にとってローカルなモデムは、電話線上のデータを受信し、赤外線トランスミッタを用いてデータを赤外線信号に変換し得る。バス702に結合される赤
外検出器が、赤外線信号で搬送されたデータを受信し、データをバス702上に置き得る。バス702は、データをメインメモリ706へと搬送し、ここから、プロセッサ704は命令を取出し、実行する。メインメモリ706が受取る命令は、任意で、プロセッサ704による実行の前に、またはその後に、記憶装置710上に記憶され得る。
コンピュータシステム700はまた、バス702に結合される通信インターフェイス718を含む。通信インターフェイス718は、ローカルネットワーク722に接続されるネットワークリンク720に結合される双方向データ通信を提供する。たとえば、通信インターフェイス718は、統合サービスデジタル通信網(ISDN)カードまたはモデムであってデータ通信接続を対応する種類の電話線に提供し得る。別の例として、通信インターフェイス718は、ローカルエリアネットワーク(LAN)カードであってデータ通信接続を適合したLANに提供し得る。ワイヤレスリンクも実現され得る。このようないずれの実現例でも、通信インターフェイス718は、種々の種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号、または光信号を送受信する。
ネットワークリンク720は、典型的には、1つ以上のネットワークを通して他のデータ装置にデータ通信を提供する。たとえば、ネットワークリンク720は、ローカルネットワーク722を通してホストコンピュータ724へと、またはインターネットサービスプロバイダ(ISP)726によって動作されるデータ装置へと、接続を提供し得る。ISP726は、次に、現在「インターネット」728と通例呼ばれるワールドワイドパケットデータ通信ネットワークを通してデータ通信サービスを提供する。ローカルネットワーク722およびインターネット728の両方は、デジタルデータストリームを搬送する電気信号、電磁信号、または光信号を用いる。コンピュータシステム700へと、およびコンピュータシステム700からデジタルデータを搬送する、ネットワークリンク720上にあり通信インターフェイス718を通る信号および種々のネットワークを通る信号は、情報を運ぶ搬送波の例示的な形である。
コンピュータシステム700は、ネットワーク、ネットワークリンク720、および通信インターフェイス718を通して、プログラムコードを含むメッセージを送信し、プログラムコードを含むデータを受信し得る。インターネットの例では、サーバ730は、インターネット728、ISP726、ローカルネットワーク722、および通信インターフェイス718を通して、アプリケーションプログラムのための要求されるコードを送り得る。この発明に従うと、アプリケーションをダウンロードしたものが、ここで説明されるようなデータ完全性検証に備える。
受信されたコードは、それが受信される時にプロセッサ704によって実行され得、および/または、後の実行のために記憶装置710に、または他の不揮発性記憶装置に記憶され得る。この様態で、コンピュータシステム700は、搬送波の形のアプリケーションコードを得ることができる。
代替例、発展例
この発明の特定の実施例を説明するとき、いくつかの図が説明目的のために用いられた。しかし、この発明は、図示されたような特定のいずれのコンテキストにも限定されておらず、この発明の思想および範囲は、ここで説明されたメカニズムおよびプロセスが他のメカニズム、方法、プログラム、およびプロセスにとって利用可能である他のコンテキストおよびアプリケーションを含む。したがって、この明細書および図は、限定的な意味ではなく例示的な意味で認識されるべきである。
加えて、この開示では、特定のプロセスステップがある特定の順序で示され、アルファベットおよび英数字ラベルを用いて特定のステップを識別する。開示の中で特に指示され
ない限り、この発明の実施例は、このようなステップを行なうためのいずれかの特定の順序に限定されない。特に、ラベルは、便宜的なステップ識別のためだけに用いられ、このようなステップを実行するある特定の順序を暗示、特定、または必要とすることを意図しない。

Claims (27)

  1. データの完全性を保守するための方法であって、
    ソフトウェアアプリケーションが、揮発性メモリ内のデータブロック上で物理的なチェックサム計算を行なうことによってチェックサムデータを生成する、コンピュータによって実現されるステップと、
    前記ソフトウェアアプリケーションが前記チェックサムデータを生成した後、かつ、前記生成されたチェックサムデータに基づく任意の物理的なチェックサム検証の実行の前に、前記ソフトウェアアプリケーションが、前記データブロックの完全性を検証するために、データブロック内に含まれるデータ上で論理チェックを行なう、コンピュータによって実現されるステップと、
    データブロックが前記論理チェックをパスするならば、前記ソフトウェアアプリケーションが、データブロックを不揮発性メモリに書込ませる、コンピュータによって実現されるステップとを含む、方法。
  2. チェックサムデータを生成するステップと論理チェックを行なうステップとは、前記データブロックを不揮発性メモリに書込む要求に応答して行なわれる、請求項1に記載の方法。
  3. 前記ソフトウェアアプリケーションが、前記データブロックを不揮発性メモリに書込むステップに関連して、チェックサムデータを不揮発性メモリに書込むことを引き起こすステップをさらに含む、請求項1に記載の方法。
  4. データブロックを不揮発性メモリに書込んだ後、
    前記ソフトウェアアプリケーションが、データブロックおよび前記チェックサムデータを不揮発性メモリから読出すステップと、
    前記データブロックおよび前記チェックサムデータが不揮発性メモリから読み出された後に、前記チェックサムデータに基づいて前記データブロック上で物理的なチェックサム検証手順を行なうステップとをさらに含み、物理的なチェックサム検証手順は、データブロック内に含まれるデータ上で論理チェックを行なった後にデータブロックが破損したかを表わす、請求項3に記載の方法。
  5. 前記ソフトウェアアプリケーションが、データブロックを不揮発性メモリに書込ませる前に、前記ソフトウェアアプリケーションが、前記データブロックに関連付けて前記チェックサムデータを格納するステップをさらに含み、
    前記データブロックを不揮発メモリに書込ませることは、データブロックを不揮発性メモリに書込む前に1つ以上の物理的なチェックサム検証手順の実行を引き起こし、
    1つ以上の物理的なチェックサム検証手順を引き起こすことは、前記データブロックに関連付けられるソフトウェアアプリケーションによって格納される前記チェックサムデータに基づいており、
    1つ以上の物理的なチェックサム検証手順は、前記チェックサムデータの生成後にデータブロックが破損したかを表わす、請求項1に記載の方法。
  6. 前記データブロックおよび前記チェックサムデータが不揮発性メモリから読み出された後に、前記データブロック上で行われる物理的なチェックサム検証手順に基づいて、前記ソフトウェアアプリケーションが、前記データブロック内に含まれるデータ上で追加の論理チェックを行なうことなく、前記データブロック内に含まれるデータの論理的な完全性を検証するステップをさらに含む、請求項4に記載の方法。
  7. 前記データブロック上で物理的なチェックサム検証手順を行なうステップは、前記ソフトウェアアプリケーションが、前記データブロック上で物理的なチェックサム検証手順を行なうステップを含む、請求項4に記載の方法。
  8. 前記1つ以上の物理的なチェックサム検証手順は、前記ソフトウェアアプリケーション以外の1つ以上の要素によって行なわれ、前記ソフトウェアアプリケーション以外の前記1つ以上の要素は、ボリュームマネジャーと、ディスクドライバと、ディスクコントローラと、ディスクアレイとを少なくとも含む一組の要素から選択される、請求項5に記載の方法。
  9. 前記データブロック上で物理的なチェックサム検証手順を行なった後に、データブロックをデータブロックのバックアップバージョンとして記憶するステップをさらに含み、データブロックのバックアップバージョンは、前記不揮発性メモリ内の前記データブロックとは別に維持される、請求項4に記載の方法。
  10. データの完全性を保守するための装置としてコンピュータを機能させるためのプログラムを格納したコンピュータ読み取り可能な媒体であって、前記プログラムは前記コンピュータのプロセッサに、
    ソフトウェアアプリケーションが、揮発性メモリ内のデータブロック上で物理的なチェックサム計算を行なうことによってチェックサムデータを生成するステップと、
    前記ソフトウェアアプリケーションが前記チェックサムデータを生成した後、かつ、前記生成されたチェックサムデータに基づく任意の物理的なチェックサム検証の実行の前に、前記ソフトウェアアプリケーションが、前記データブロックの完全性を検証するために、データブロック内に含まれるデータ上で論理チェックを行なうステップと、
    データブロックが前記論理チェックをパスするならば、前記ソフトウェアアプリケーションが、データブロックを不揮発性メモリに書込ませるステップとを実行させる、コンピュータ読み取り可能な記録媒体。
  11. チェックサムデータを生成するステップと論理チェックを行なうステップとは、前記データブロックを不揮発性メモリに書込む要求に応答して行なわれる、請求項10に記載のコンピュータ読み取り可能な記録媒体。
  12. 前記プログラムは、前記プロセッサに、データブロックを不揮発性メモリに書込むステップに関連して、チェックサムデータを不揮発性メモリに書込むステップを実行させる、請求項10に記載のコンピュータ読み取り可能な記録媒体。
  13. データブロックを不揮発性メモリに書込んだ後、
    データブロックおよび前記チェックサムデータを不揮発性メモリから読出すステップと、
    前記データブロックおよび前記チェックサムデータが不揮発性メモリから読み出された後に、前記チェックサムデータに基づいて前記データブロック上で物理的なチェックサム検証手順を行なうステップとをさらに含み、物理的なチェックサム検証手順は、データブロック内に含まれるデータ上で論理チェックを行なった後にデータブロックが破損したかを表わす、請求項12に記載のコンピュータ読み取り可能な記録媒体。
  14. 前記プログラムは、前記プロセッサに、データブロックを不揮発性メモリに書込ませる前に、前記ソフトウェアアプリケーションによって、前記データブロックに関連付けて前記チェックサムデータを格納するステップを実行させ、
    前記データブロックを不揮発メモリに書込ませることは、データブロックを不揮発性メモリに書込む前に1つ以上の物理的なチェックサム検証手順の実行を引き起こし、
    1つ以上の物理的なチェックサム検証手順を引き起こすことは、前記データブロックに関連付けられるソフトウェアアプリケーションによって格納される前記チェックサムデータに基づいており、
    1つ以上の物理的なチェックサム検証手順は、前記チェックサムデータの生成後にデータブロックが破損したかを表わす、請求項10に記載のコンピュータ読み取り可能な記録媒体。
  15. 前記データブロックおよび前記チェックサムデータが不揮発性メモリから読み出された後に、前記データブロック上で行われる物理的なチェックサム検証手順に基づいて、前記ソフトウェアアプリケーションが、前記データブロック内に含まれるデータ上で追加の論理チェックを行なうことなく、前記データブロック内に含まれるデータの論理的な完全性を検証するステップをさらに含む、請求項13に記載のコンピュータ読み取り可能な記録媒体。
  16. 前記データブロック上で物理的なチェックサム検証手順を行なうステップは、前記ソフトウェアアプリケーションが、前記データブロック上で物理的なチェックサム検証手順を行なうステップを含む、請求項13に記載のコンピュータ読み取り可能な記録媒体。
  17. 前記1つ以上の物理的なチェックサム検証手順は、前記ソフトウェアアプリケーション以外の1つ以上の要素によって行なわれ、前記ソフトウェアアプリケーション以外の前記1つ以上の要素は、ボリュームマネジャーと、ディスクドライバと、ディスクコントローラと、ディスクアレイとを少なくとも含む一組の要素から選択される、請求項14に記載のコンピュータ読み取り可能な記録媒体。
  18. 前記データブロック上で物理的なチェックサム検証手順を行なった後に、データブロックをデータブロックのバックアップバージョンとして記憶するステップをさらに含み、データブロックのバックアップバージョンは、前記不揮発性メモリ内の前記データブロックとは別に維持される、請求項13に記載のコンピュータ読み取り可能な記録媒体。
  19. データの完全性を保守するための装置であって、
    揮発性メモリと、
    不揮発性メモリと、
    ソフトウェアアプリケーションによって、前記揮発性メモリ内のデータブロック上で物理的なチェックサム計算を行なうことによってチェックサムデータを生成するための生成手段と、
    前記チェックサムデータが前記ソフトウェアアプリケーションによって生成された後、かつ、前記生成されたチェックサムデータに基づく任意の物理的なチェックサム検証の実行の前に、前記データブロックの完全性を検証するために、前記ソフトウェアアプリケーションによって、前記データブロック内に含まれるデータ上で論理チェックを行なうためのチェック手段と、
    前記データブロックが前記論理チェックをパスすると、前記ソフトウェアアプリケーションによって、前記データブロックを前記不揮発性メモリに書込ませるための手段とを備
    える、装置。
  20. 前記生成手段は、前記データブロックを不揮発性メモリに書込む要求に応答して、前記チェックサムデータを生成する、請求項19に記載の装置。
  21. 前記データブロックを前記不揮発性メモリに書き込むことに関連して、前記チェックサムデータを前記不揮発性メモリに書き込むための手段をさらに備える、請求項19に記載の装置。
  22. 前記データブロックを前記不揮発性メモリに書込んだ後に、前記データブロックおよび前記チェックサムデータを前記不揮発性メモリから読み出すための手段と、
    前記データブロックおよび前記チェックサムデータが不揮発性メモリから読み出された後に、前記チェックサムデータに基づいて前記データブロック上で物理的なチェックサム検証手順を行なうための検証手段とをさらに備え、
    前記チェックサム検証手順は、前記データブロック内に含まれるデータ上で論理チェックを行なった後にデータブロックが破損したかを表わす、請求項19に記載の装置。
  23. 前記ソフトウェアアプリケーションが、データブロックを不揮発性メモリに書込ませる前に、前記ソフトウェアアプリケーションが、前記データブロックに関連付けて前記チェックサムデータを格納するための手段をさらに備え、
    前記データブロックを不揮発メモリに書込ませることは、データブロックを不揮発性メモリに書込む前に1つ以上の物理的なチェックサム検証手順の実行を引き起こし、
    1つ以上の物理的なチェックサム検証手順を引き起こすことは、前記データブロックに関連付けられるソフトウェアアプリケーションによって格納される前記チェックサムデータに基づいており、
    1つ以上の物理的なチェックサム検証手順は、前記チェックサムデータの生成後にデータブロックが破損したかを表わす、請求項19に記載の装置。
  24. 前記データブロックおよび前記チェックサムデータが不揮発性メモリから読み出された後に、前記データブロック上で行われる物理的なチェックサム検証手順に基づいて、前記ソフトウェアアプリケーションは、前記データブロック内に含まれるデータ上で追加の論理チェックを行なうことなく、前記データブロック内に含まれるデータの論理的な完全性を検証する、請求項22に記載の装置。
  25. 前記検証手段は、前記ソフトウェアアプリケーションを実行することによって、前記データブロック上で物理的なチェックサム検証手順を行なう、請求項22に記載の装置。
  26. 前記1つ以上の物理的なチェックサム検証手順は、前記ソフトウェアアプリケーション以外の1つ以上の要素によって行なわれ、前記ソフトウェアアプリケーション以外の前記1つ以上の要素は、ボリュームマネジャーと、ディスクドライバと、ディスクコントローラと、ディスクアレイとを少なくとも含む一組の要素から選択される、請求項23に記載の装置。
  27. 前記データブロック上で物理的なチェックサム検証手順を行なった後に、データブロックをデータブロックのバックアップバージョンとして記憶するための手段をさらに含み、データブロックのバックアップバージョンは、前記不揮発性メモリ内の前記データブロックとは別に維持される、請求項22に記載の装置。
JP2009183421A 2000-10-19 2009-08-06 データ完全性検証メカニズム Expired - Lifetime JP4647021B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US24195900P 2000-10-19 2000-10-19
US09/765,680 US6928607B2 (en) 2000-10-19 2001-01-18 Data integrity verification mechanism

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2002558135A Division JP2004530964A (ja) 2000-10-19 2001-10-19 データ完全性検証メカニズム

Publications (2)

Publication Number Publication Date
JP2009259286A JP2009259286A (ja) 2009-11-05
JP4647021B2 true JP4647021B2 (ja) 2011-03-09

Family

ID=26934722

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2002558135A Pending JP2004530964A (ja) 2000-10-19 2001-10-19 データ完全性検証メカニズム
JP2009183421A Expired - Lifetime JP4647021B2 (ja) 2000-10-19 2009-08-06 データ完全性検証メカニズム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2002558135A Pending JP2004530964A (ja) 2000-10-19 2001-10-19 データ完全性検証メカニズム

Country Status (6)

Country Link
US (2) US6928607B2 (ja)
EP (2) EP2369484B1 (ja)
JP (2) JP2004530964A (ja)
AU (1) AU2002246772B2 (ja)
CA (1) CA2424988C (ja)
WO (1) WO2002057918A2 (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020835B2 (en) * 2000-10-19 2006-03-28 Oracle International Corporation Enhancements to data integrity verification mechanism
US6928607B2 (en) * 2000-10-19 2005-08-09 Oracle International Corporation Data integrity verification mechanism
JP2002358245A (ja) * 2001-06-01 2002-12-13 Toshiba It Solution Corp バックアップシステム、バックアップ方法、バックアップするためのプログラム、バックアップサービス提供システム
FR2848327B1 (fr) * 2002-12-06 2005-02-25 Thales Sa Procede de gestion de l'ecriture dans une memoire
US7725760B2 (en) 2003-09-23 2010-05-25 Symantec Operating Corporation Data storage system
US7904428B2 (en) 2003-09-23 2011-03-08 Symantec Corporation Methods and apparatus for recording write requests directed to a data store
US7409587B2 (en) * 2004-08-24 2008-08-05 Symantec Operating Corporation Recovering from storage transaction failures using checkpoints
US7631120B2 (en) * 2004-08-24 2009-12-08 Symantec Operating Corporation Methods and apparatus for optimally selecting a storage buffer for the storage of data
US7991748B2 (en) 2003-09-23 2011-08-02 Symantec Corporation Virtual data store creation and use
US7577806B2 (en) * 2003-09-23 2009-08-18 Symantec Operating Corporation Systems and methods for time dependent data storage and recovery
US7730222B2 (en) * 2004-08-24 2010-06-01 Symantec Operating System Processing storage-related I/O requests using binary tree data structures
US7287133B2 (en) * 2004-08-24 2007-10-23 Symantec Operating Corporation Systems and methods for providing a modification history for a location within a data store
US7239581B2 (en) * 2004-08-24 2007-07-03 Symantec Operating Corporation Systems and methods for synchronizing the internal clocks of a plurality of processor modules
US7827362B2 (en) 2004-08-24 2010-11-02 Symantec Corporation Systems, apparatus, and methods for processing I/O requests
US7246289B2 (en) * 2003-09-30 2007-07-17 Nortel Networks Limited Memory integrity self checking in VT/TU cross-connect
US7302603B2 (en) * 2003-11-20 2007-11-27 International Business Machines Corporation Host-initiated data reconstruction for improved RAID read operations
US7496586B1 (en) * 2004-05-26 2009-02-24 Sun Microsystems, Inc. Method and apparatus for compressing data in a file system
FR2874440B1 (fr) * 2004-08-17 2008-04-25 Oberthur Card Syst Sa Procede et dispositif de traitement de donnees
US7681069B1 (en) * 2004-08-30 2010-03-16 Netapp, Inc. Corruption checking during backup
US7627614B2 (en) * 2005-03-03 2009-12-01 Oracle International Corporation Lost write detection and repair
US7552357B2 (en) * 2005-04-29 2009-06-23 Network Appliance, Inc. Lost writes detection in a redundancy group based on RAID with multiple parity
WO2007047346A2 (en) * 2005-10-14 2007-04-26 Symantec Operating Corporation Technique for timeline compression in a data store
US7516246B2 (en) * 2005-10-27 2009-04-07 International Business Machines Corporation Communications channel method for verifying integrity of untrusted subsystem responses to a request
US7986480B2 (en) * 2005-11-03 2011-07-26 Hitachi Global Storage Technologies Netherlands B.V. Micro-journaling of data on a storage device
JP4852315B2 (ja) 2006-02-03 2012-01-11 株式会社日立製作所 データ信頼性向上方法及びその方法を用いた情報処理装置
US7761657B2 (en) 2006-07-10 2010-07-20 Hitachi, Ltd. Storage control system, control method for storage control system, port selector, and controller
JP2008077783A (ja) * 2006-09-22 2008-04-03 Fujitsu Ltd 記憶データ処理装置、記憶装置、記憶データ処理プログラム
US8224813B2 (en) * 2006-10-20 2012-07-17 Oracle International Corporation Cost based analysis of direct I/O access
JP2008112343A (ja) * 2006-10-31 2008-05-15 Hitachi Ltd 計算機システム、アクセス制御方法及びホスト計算機
US7716166B2 (en) * 2007-01-07 2010-05-11 Apple Inc. Method and apparatus for simplifying the decoding of data
US9104662B2 (en) * 2008-08-08 2015-08-11 Oracle International Corporation Method and system for implementing parallel transformations of records
JP2010055210A (ja) * 2008-08-26 2010-03-11 Hitachi Ltd ストレージシステム及びデータ保証方法
US8566689B2 (en) * 2009-10-22 2013-10-22 Microsoft Corporation Data integrity units in nonvolatile memory
TWI451425B (zh) * 2011-04-25 2014-09-01 Silicon Motion Inc 快閃記憶裝置及其資料保護方法
KR101889503B1 (ko) * 2013-02-28 2018-08-17 한국전자통신연구원 비행자료 보호 장치 및 비행자료 보호 방법
US10152500B2 (en) 2013-03-14 2018-12-11 Oracle International Corporation Read mostly instances
US9477557B2 (en) * 2013-03-28 2016-10-25 Microsoft Technology Licensing, Llc Transaction processing using torn write detection
US9632878B1 (en) * 2013-09-20 2017-04-25 Amazon Technologies, Inc. Verification of database table partitions during backup
US9633051B1 (en) 2013-09-20 2017-04-25 Amazon Technologies, Inc. Backup of partitioned database tables
US9767178B2 (en) 2013-10-30 2017-09-19 Oracle International Corporation Multi-instance redo apply
US9892153B2 (en) 2014-12-19 2018-02-13 Oracle International Corporation Detecting lost writes
US10747752B2 (en) 2015-10-23 2020-08-18 Oracle International Corporation Space management for transactional consistency of in-memory objects on a standby database
US11657037B2 (en) 2015-10-23 2023-05-23 Oracle International Corporation Query execution against an in-memory standby database
US10105189B2 (en) * 2015-11-10 2018-10-23 Mako Surgical Corp. Techniques for correcting an error in a nonvolatile memory of an embedded component for an end effector in a robotic surgical system
US10698771B2 (en) 2016-09-15 2020-06-30 Oracle International Corporation Zero-data-loss with asynchronous redo shipping to a standby database
US10891291B2 (en) 2016-10-31 2021-01-12 Oracle International Corporation Facilitating operations on pluggable databases using separate logical timestamp services
US11475006B2 (en) 2016-12-02 2022-10-18 Oracle International Corporation Query and change propagation scheduling for heterogeneous database systems
US10691722B2 (en) 2017-05-31 2020-06-23 Oracle International Corporation Consistent query execution for big data analytics in a hybrid database
US10282129B1 (en) * 2017-10-24 2019-05-07 Bottomline Technologies (De), Inc. Tenant aware, variable length, deduplication of stored data
CN108021468A (zh) * 2017-12-08 2018-05-11 泰康保险集团股份有限公司 医疗养老协同系统中业务数据的校验方法及装置
CN110413441A (zh) * 2019-06-18 2019-11-05 平安科技(深圳)有限公司 主备存储卷同步数据校验方法、装置、设备及存储介质
US11048425B2 (en) 2019-08-30 2021-06-29 Hewlett Packard Enterprise Development Lp Data integrity verification
CN112713964B (zh) * 2020-12-22 2022-08-05 潍柴动力股份有限公司 数据校验加速方法、装置、计算机设备及存储介质
CN112767767B (zh) * 2021-01-29 2022-12-23 重庆子元科技有限公司 一种虚拟训练系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004530964A (ja) * 2000-10-19 2004-10-07 オラクル・インターナショナル・コーポレイション データ完全性検証メカニズム

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4602368A (en) * 1983-04-15 1986-07-22 Honeywell Information Systems Inc. Dual validity bit arrays
CH667543A5 (en) * 1985-04-19 1988-10-14 Bbc Brown Boveri & Cie Data communication for processing network - using stored table in communication unit for each node defining data segment storage location
US5146571A (en) * 1988-03-28 1992-09-08 Emc Corporation Remapping defects in a storage system through the use of a tree structure
US5233618A (en) * 1990-03-02 1993-08-03 Micro Technology, Inc. Data correcting applicable to redundant arrays of independent disks
US5182752A (en) * 1990-06-29 1993-01-26 Digital Equipment Corporation Method and apparatus for transferring data between a data bus and a data storage device
US5289478A (en) 1991-03-11 1994-02-22 Fujitsu Limited Method and means for verification of write data
US5524250A (en) * 1991-08-23 1996-06-04 Silicon Graphics, Inc. Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers
JP2855019B2 (ja) * 1992-02-10 1999-02-10 富士通株式会社 外部記憶装置のデータ保証方法及び外部記憶装置
US5696775A (en) 1994-09-23 1997-12-09 Cirrus Logic, Inc. Method and apparatus for detecting the transfer of a wrong sector
US5586253A (en) * 1994-12-15 1996-12-17 Stratus Computer Method and apparatus for validating I/O addresses in a fault-tolerant computer system
JPH08190796A (ja) * 1995-01-09 1996-07-23 Mitsubishi Denki Semiconductor Software Kk データリフレッシュ機能を有するフラッシュメモリ及びフラッシュメモリのデータリフレッシュ方法
US5619461A (en) * 1995-07-28 1997-04-08 Micron Quantum Devices, Inc. Memory system having internal state monitoring circuit
US5805799A (en) 1995-12-01 1998-09-08 Quantum Corporation Data integrity and cross-check code with logical block address
US5689514A (en) * 1996-09-30 1997-11-18 International Business Machines Corporation Method and apparatus for testing the address system of a memory system
FR2754926B1 (fr) * 1996-10-23 1998-11-20 Schlumberger Ind Sa Procede de gestion de defauts d'integrite de donnees dans une memoire reinscriptible
JP3196925B2 (ja) * 1997-01-13 2001-08-06 日本電気株式会社 関係データベース遅延制約チェック方式
US6237124B1 (en) * 1998-03-16 2001-05-22 Actel Corporation Methods for errors checking the configuration SRAM and user assignable SRAM data in a field programmable gate array
US6009542A (en) 1998-03-31 1999-12-28 Quantum Corporation Method for preventing transfer of data to corrupt addresses
US6098190A (en) * 1998-08-04 2000-08-01 Hewlett-Packard Co. Method and apparatus for use of a host address to validate accessed data
US6438724B1 (en) * 1999-03-16 2002-08-20 International Business Machines Corporation Method and apparatus for deterministically altering cyclic redundancy check information for data storage
US6446234B1 (en) * 1999-03-16 2002-09-03 International Business Machines Corporation Method and apparatus for updating cyclic redundancy check information for data storage
US7020835B2 (en) * 2000-10-19 2006-03-28 Oracle International Corporation Enhancements to data integrity verification mechanism
US6751757B2 (en) * 2000-12-07 2004-06-15 3Ware Disk drive data protection using clusters containing error detection sectors
US7627614B2 (en) * 2005-03-03 2009-12-01 Oracle International Corporation Lost write detection and repair

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004530964A (ja) * 2000-10-19 2004-10-07 オラクル・インターナショナル・コーポレイション データ完全性検証メカニズム

Also Published As

Publication number Publication date
US20020049950A1 (en) 2002-04-25
CA2424988C (en) 2009-07-07
EP1472603A2 (en) 2004-11-03
JP2009259286A (ja) 2009-11-05
US7231564B2 (en) 2007-06-12
CA2424988A1 (en) 2002-07-25
US6928607B2 (en) 2005-08-09
EP1472603B1 (en) 2017-05-17
US20040199743A1 (en) 2004-10-07
JP2004530964A (ja) 2004-10-07
EP2369484A3 (en) 2012-04-04
EP2369484B1 (en) 2016-12-14
EP2369484A2 (en) 2011-09-28
WO2002057918A3 (en) 2004-08-19
WO2002057918A2 (en) 2002-07-25
AU2002246772B2 (en) 2007-05-17

Similar Documents

Publication Publication Date Title
JP4647021B2 (ja) データ完全性検証メカニズム
US7246281B2 (en) Enhancements to data integrity verification mechanism
AU2002246772A1 (en) Data integrity verification mechanism
US7627614B2 (en) Lost write detection and repair
US7444360B2 (en) Method, system, and program for storing and using metadata in multiple storage locations
US7036066B2 (en) Error detection using data block mapping
US7546436B2 (en) Storage device with SCSI formatting
US20020169996A1 (en) Method and apparatus for providing write recovery of faulty data in a non-redundant raid system
US6636954B2 (en) Method and apparatus for inter-disk copy processing, and a computer product
CN113259410B (zh) 一种基于分布式存储的数据传输校验方法及系统
JP2005004753A (ja) データのバージョンチェックを行う方法及び装置
US7461217B2 (en) Arrangement and method for update of configuration cache data
US6678107B1 (en) System and method for reading and writing N-way mirrored storage devices
US11366719B1 (en) Method, device and computer program product for storage management
AU2007201802B2 (en) Data integrity verification mechanism
US7260658B2 (en) Verifying input/output command data by separately sending data to be written and information about contents of the data

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090904

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A132

Effective date: 20100105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100615

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100914

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100917

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101015

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101130

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101207

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4647021

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250