(57)【要約】データの完全性を保守するための方法および装置を提供する。この方法に従うと、物理的なチェックサム計算がデータのブロック上で実行される。物理的なチェックサム計算の実行後、論理チェックがデータのブロックに含まれるデータ上で実行される。データブロックが論理チェックをパスすると、データブロックが不揮発性メモリに書込まれ得る。その後、データブロックが不揮発性メモリから読出されると、物理的なチェックサム検証手順がデータブロック上で実行されて、データブロックに含まれるデータ上で論理チェックを実行した後にデータブロックが破損していたかどうかが判断される。
2005524144.tif 000002
【特許請求の範囲】
【請求項１】
データブロックを評価するための方法であって、前記方法はコンピュータによって実現される以下のステップを含み、前記以下のステップは、
前記データブロック上で物理的なチェックサム検証を実行するステップと、
前記データブロック内に含まれるアドレスデータが、前記データブロックが記憶されるべき不揮発性メモリにおける位置を特定するかどうかを検証するステップとを含む、方法。
【請求項２】
前記物理的なチェックサム検証は、前記データブロックに割当てられる特定のパターンまたは数を用いて実行される、請求項１に記載の方法。
【請求項３】
前記物理的なチェックサム検証は、前記データブロックに基づいて決定されるチェックサム値を用いて実行される、請求項１に記載の方法。
【請求項４】
前記データブロック内に含まれるアドレスデータが、前記データブロックが記憶されるべき不揮発性メモリにおける位置を特定するかどうかを検証する前記ステップは、前記データブロック内に含まれる前記アドレスデータと、前記データブロックを不揮発性メモリに記憶する動作が前記データブロックを記憶する前記不揮発性メモリにおける位置とを比較するステップを含む、請求項１に記載の方法。
【請求項５】
前記データブロックに含まれるデータ上で論理チェックを実行するステップをさらに含む、請求項１に記載の方法。
【請求項６】
データブロックを不揮発性メモリに記憶するための方法であって、前記方法はコンピュータによって実現される以下のステップを含み、前記以下のステップは、
前記データブロック上で物理的なチェックサム検証を実行するステップと、
前記データブロック上で前記物理的なチェックサム検証を実行した後、前記データブロックに含まれるデータ上で論理チェックを実行するステップと、
前記物理的なチェックサム検証および前記論理チェックがともに成功した場合、前記データブロックが前記不揮発性メモリに記憶されることを可能にするステップとを含む、方法。
【請求項７】
前記データブロックに関連して、前記物理的なチェックサム検証において用いられるチェックサムデータを前記不揮発性メモリに記憶するステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記データブロック上で第２の物理的なチェックサム検証を実行して、前記データブロックに含まれるデータが、前記先の物理的なチェックサム検証が実行された後に破損したかどうかを判断するステップをさらに含む、請求項６に記載の方法。
【請求項９】
前記物理的なチェックサム検証は、前記データブロックに基づいて計算されるチェックサム値を用いて実行される、請求項６に記載の方法。
【請求項１０】
前記物理的なチェックサム検証は、前記データブロックに割当てられる特定のパターンまたは数を用いて実行される、請求項６に記載の方法。
【請求項１１】
前記物理的なチェックサム検証と前記論理チェックとがデータベースアプリケーションプログラムによって実行される、請求項６に記載の方法。
【請求項１２】
データブロックを不揮発性メモリに記憶するための方法であって、前記方法はコンピュータによって実現される以下のステップを含み、前記以下のステップは、
前記データブロックを前記不揮発性メモリに記憶する動作が、前記データブロックに含まれるデータに基づいて決定される所望の記憶位置で前記データブロックを記憶するかどうかを判断するステップと、
前記データブロックを前記不揮発性メモリに記憶する前記動作が前記データブロックに関連する前記所望の記憶位置において前記データブロックを記憶する場合、前記データブロックを前記不揮発性メモリに単に記憶するステップとを含む、方法。
【請求項１３】
前記データブロックを前記不揮発性メモリに記憶する動作が、前記データブロックに関連する所望の記憶位置において前記データブロックを記憶するかどうかを判断する前記ステップは、前記動作が前記データブロックを前記不揮発性メモリに記憶するアドレスを前記所望の記憶位置と比較するステップを含む、請求項１２に記載の方法。
【請求項１４】
前記動作が前記データブロックを前記不揮発性メモリに記憶する前記アドレスは物理アドレスであり、
前記所望の記憶位置は論理アドレスであり、
前記方法はさらに、マッピングデータを用いて前記物理アドレスを前記論理アドレスと比較するステップを含む、請求項１３に記載の方法。
【請求項１５】
マッピングデータを用いて前記物理アドレスを前記論理アドレスと比較する前記ステップは、
前記論理アドレスおよび前記マッピングデータに基づいて、所望の物理アドレスを決定するステップと、
前記物理アドレスを前記所望の物理アドレスと比較するステップとを含む、請求項１４に記載の方法。
【請求項１６】
前記動作が前記データブロックを前記不揮発性メモリに記憶する前記アドレスは物理アドレスであり、
前記所望の記憶位置は論理アドレスであり、
前記方法はさらに、アルゴリズムを用いて前記物理アドレスを前記論理アドレスと比較するステップを含む、請求項１３に記載の方法。
【請求項１７】
アルゴリズムを用いて前記物理アドレスを前記論理アドレスと比較する前記ステップは、
前記論理アドレスおよび前記アルゴリズムに基づいて、所望の物理アドレスを決定するステップと、
前記物理アドレスを前記所望の物理アドレスと比較するステップとを含む、請求項１６に記載の方法。
【請求項１８】
前記データブロックから前記所望の記憶位置を読出すステップをさらに含む、請求項１２に記載の方法。
【請求項１９】
データブロックを不揮発性メモリに記憶するための方法であって、前記方法はコンピュータによって実現される以下のステップを含み、前記以下のステップは、
位置検証チェックが前記データブロックのために実行されるべきかどうかを判断するステップと、
位置検証チェックが前記データブロックのために実行されるべき場合、前記データブロックを前記不揮発性メモリに記憶する動作が前記データブロックに関連する所望の記憶位置で前記データブロックを記憶するかどうかを判断するステップと、
前記データブロックを前記不揮発性メモリに記憶する前記動作が前記データブロックに関連する前記所望の記憶位置で前記データブロックを記憶する場合、前記データブロックを前記不揮発性メモリに単に記憶するステップとを含む、方法。
【請求項２０】
データブロックを評価するためのコンピュータ読出可能な媒体であって、前記コンピュータ読出可能な媒体は、１つ以上のプロセッサによって実行される場合に前記１つ以上のプロセッサに以下のステップを実行させる１つ以上の命令の１つ以上のシーケンスを搬送し、前記以下のステップは、
前記データブロック上で物理的なチェックサム検証を実行するステップと、
前記データブロック内に含まれるアドレスデータが、前記データブロックが記憶されるべき不揮発性メモリにおける位置を特定するかどうかを検証するステップとを含む、コンピュータ読出可能な媒体。
【請求項２１】
前記物理的なチェックサム検証は、前記データブロックに割当てられる特定のパターンまたは数を用いて実行される、請求項２０に記載のコンピュータ読出可能な媒体。
【請求項２２】
前記物理的なチェックサム検証は、前記データブロックに基づいて決定されるチェックサム値を用いて実行される、請求項２０に記載のコンピュータ読出可能な媒体。
【請求項２３】
前記データブロック内に含まれるアドレスデータが、前記データブロックが記憶されるべき不揮発性メモリにおける位置を特定するかどうかを検証する前記ステップは、前記データブロック内に含まれる前記アドレスデータと、前記データブロックを不揮発性メモリに記憶する前記動作が前記データブロックを記憶する前記不揮発性メモリにおける位置とを比較するステップを含む、請求項２０に記載のコンピュータ読出可能な媒体。
【請求項２４】
前記データブロックに含まれるデータ上で論理チェックを実行するステップをさらに含む、請求項２０に記載のコンピュータ読出可能な媒体。
【請求項２５】
データブロックを不揮発性メモリに記憶するためのコンピュータ読出可能な媒体であって、前記コンピュータ読出可能な媒体は、１つ以上のプロセッサによって実行される場合に前記１つ以上のプロセッサに以下のステップを実行させる１つ以上の命令の１つ以上のシーケンスを搬送し、前記以下のステップは、
前記データブロック上で物理的なチェックサム検証を実行するステップと、
前記データブロック上で前記物理的なチェックサム検証を実行した後、前記データブロックに含まれるデータ上で論理チェックを実行するステップと、
前記物理的なチェックサム検証および前記論理チェックがともに成功した場合、前記データブロックが前記不揮発性メモリに記憶されることを可能にするステップとを含む、コンピュータ読出可能な媒体。
【請求項２６】
前記データブロックに関連して、前記物理的なチェックサム検証において用いられるチェックサムデータを前記不揮発性メモリに記憶するステップをさらに含む、請求項２５に記載のコンピュータ読出可能な媒体。
【請求項２７】
前記データブロック上で第２の物理的なチェックサム検証を実行して、前記先の物理的なチェックサム検証が実行された後に前記データブロックに含まれるデータが破損したかどうかを判断するステップをさらに含む、請求項２５に記載のコンピュータ読出可能な媒体。
【請求項２８】
前記物理的なチェックサム検証は、前記データブロックに基づいて計算されるチェックサム値を用いて実行される、請求項２５に記載のコンピュータ読出可能な媒体。
【請求項２９】
前記物理的なチェックサム検証は、前記データブロックに割当てられる特定のパターンまたは数を用いて実行される、請求項２５に記載のコンピュータ読出可能な媒体。
【請求項３０】
前記物理的なチェックサム検証および前記論理チェックはデータベースアプリケーションプログラムによって実行される、請求項２５に記載のコンピュータ読出可能な媒体。
【請求項３１】
データブロックを不揮発性メモリに記憶するためのコンピュータ読出可能な媒体であって、前記コンピュータ読出可能な媒体は、１つ以上のプロセッサによって実行される場合に前記１つ以上のプロセッサに以下のステップを実行させる１つ以上の命令の１つ以上のシーケンスを搬送し、前記以下のステップは、
前記データブロックを前記不揮発性メモリに記憶する動作が、前記データブロックに含まれるデータに基づいて決定される所望の記憶位置で前記データブロックを記憶するかどうかを判断するステップと、
前記データブロックを前記不揮発性メモリに記憶する前記動作が、前記データブロックに関連する前記所望の記憶位置で前記データブロックを記憶する場合、前記データブロックを前記不揮発性メモリに単に記憶するステップとを含む、コンピュータ読出可能な媒体。
【請求項３２】
前記データブロックを前記不揮発性メモリに記憶する動作が前記データブロックに関連する所望の記憶位置で前記データブロックを記憶するかどうかを判断する前記ステップは、前記動作が前記データブロックを前記不揮発性メモリに記憶するアドレスを前記所望の記憶位置と比較するステップを含む、請求項３１に記載のコンピュータ読出可能な媒体。
【請求項３３】
前記動作が前記データブロックを前記不揮発性メモリに記憶する前記アドレスは物理アドレスであり、
前記所望の記憶位置は論理アドレスであり、
前記コンピュータ読出可能な媒体はさらに、前記１つ以上のプロセッサによって実行される場合に前記１つ以上のプロセッサがマッピングデータを用いて前記物理アドレスを前記論理アドレスと比較するようにさせる付加的な命令の１つ以上のシーケンスを含む、請求項３２に記載のコンピュータ読出可能な媒体。
【請求項３４】
マッピングデータを用いて前記物理アドレスを前記論理アドレスと比較する前記ステップは、
前記論理アドレスおよび前記マッピングデータに基づいて所望の物理アドレスを決定するステップと、
前記物理アドレスを前記所望の物理アドレスと比較するステップとを含む、請求項３３に記載のコンピュータ読出可能な媒体。
【請求項３５】
前記動作が前記データブロックを前記不揮発性メモリに記憶する前記アドレスは物理アドレスであり、
前記所望の記憶位置は論理アドレスであり、
前記コンピュータ読出可能な媒体はさらに、前記１つ以上のプロセッサによって実行される場合に前記１つ以上のプロセッサがアルゴリズムを用いて前記物理アドレスを前記論理アドレスと比較するようにさせる付加的な命令の１つ以上のシーケンスを含む、請求項３２に記載のコンピュータ読出可能な媒体。
【請求項３６】
アルゴリズムを用いて前記物理アドレスを前記論理アドレスと比較する前記ステップは、
前記論理アドレスおよび前記アルゴリズムに基づいて所望の物理アドレスを決定するス
テップと、
前記物理アドレスを前記所望の物理アドレスと比較するステップとを含む、請求項３５に記載のコンピュータ読出可能な媒体。
【請求項３７】
前記データブロックから前記所望の記憶位置を読出すステップをさらに含む、請求項３１に記載のコンピュータ読出可能な媒体。
【請求項３８】
データブロックを不揮発性メモリに記憶するためのコンピュータ読出可能な媒体であって、前記コンピュータ読出可能な媒体は、１つ以上のプロセッサによって実行される場合に前記１つ以上のプロセッサに以下のステップを実行させる１つ以上の命令の１つ以上のシーケンスを搬送し、前記以下のステップは、
位置検証チェックが前記データブロックのために実行されるべきかどうかを判断するステップと、
位置検証チェックが前記データブロックのために実行されるべき場合、前記データブロックを前記不揮発性メモリに記憶する動作が、前記データブロックに関連する所望の記憶位置で前記データブロックを記憶するかどうかを判断するステップと、
前記データブロックを前記不揮発性メモリに記憶する前記動作が、前記データブロックに関連する前記所望の記憶位置で前記データブロックを記憶する場合、前記データブロックを前記不揮発性メモリに単に記憶するステップとを含む、コンピュータ読出可能な媒体。
【請求項３９】
データブロックを評価するための装置であって、
メモリと、
検証機構とを含み、前記検証機構は、
前記データブロック上で物理的なチェックサム検証を実行し、
前記データブロック内に含まれるアドレスデータが、前記データブロックが記憶されるべき不揮発性メモリにおける位置を特定するかどうかを検証するよう構成される、装置。
【請求項４０】
前記検証機構はさらに、前記データブロックに割当てられる特定のパターンまたは数を用いて前記物理的なチェックサム検証を実行するよう構成される、請求項３９に記載の装置。
【請求項４１】
前記検証機構はさらに、前記データブロックに基づいて決定されるチェックサム値を用いて前記物理的なチェックサム検証を実行するよう構成される、請求項３９に記載の装置。
【請求項４２】
前記検証機構はさらに、前記データブロック内に含まれるアドレスデータが、前記データブロックが記憶されるべき不揮発性メモリにおける位置を特定するかどうかを、前記データブロック内に含まれる前記アドレスデータと前記データブロックを不揮発性メモリに記憶する前記動作が前記データブロックを記憶する前記不揮発性メモリにおける位置とを比較することによって、検証するよう構成される、請求項３９に記載の装置。
【請求項４３】
前記検証機構はさらに、前記データブロックに含まれるデータ上で論理チェックを実行するよう構成される、請求項３９に記載の装置。
【請求項４４】
データブロックを不揮発性メモリに記憶するための装置であって、
メモリと、
検証機構とを含み、前記検証機構は、
前記データブロック上で物理的なチェックサム検証を実行し、
前記データブロック上で前記物理的なチェックサム検証を実行した後、前記データブロ
ックに含まれるデータ上で論理チェックを実行し、
前記物理的なチェックサム検証および前記論理チェックがともに成功した場合、前記データブロックが前記不揮発性メモリに記憶されることを可能にするよう構成される、装置。
【請求項４５】
前記検証機構はさらに、前記データブロックに関連して、前記物理的なチェックサム検証において用いられるチェックサムデータを前記不揮発性メモリに記憶することを可能にするよう構成される、請求項４４に記載の装置。
【請求項４６】
前記検証機構はさらに、前記データブロック上で第２の物理的なチェックサム検証を実行して、前記データブロックに含まれるデータが、前記データブロックが前記不揮発性メモリに記憶された後に破損したかどうかを判断するよう構成される、請求項４４に記載の装置。
【請求項４７】
前記検証機構はさらに、前記データブロックに基づいて計算されたチェックサム値を用いて前記物理的なチェックサム検証を実行するよう構成される、請求項４４に記載の装置。
【請求項４８】
前記検証機構はさらに、前記データブロックに割当てられる特定のパターンまたは数を用いて前記物理的なチェックサム検証を実行するよう構成される、請求項４４に記載の装置。
【請求項４９】
記憶装置であって、
不揮発性メモリと、
前記不揮発性メモリと通信するよう結合される記憶機構とを含み、前記記憶機構は、
データブロックを前記不揮発性メモリに記憶する動作が、前記データブロックに含まれるデータに基づいて決定される所望の記憶位置において前記データブロックを記憶するかどうかを判断し、
前記データブロックを前記不揮発性メモリに記憶する前記動作が、前記データブロックに関連する前記所望の記憶位置において前記データブロックを記憶する場合、前記データブロックを前記不揮発性メモリに単に記憶するよう構成される、記憶装置。
【請求項５０】
前記記憶機構はさらに、前記データブロックを前記不揮発性メモリに記憶する動作が前記データブロックに関連する所望の記憶位置で前記データブロックを記憶するかどうかを、前記動作が前記データブロックを前記不揮発性メモリに記憶するアドレスを前記所望の記憶位置と比較することによって、判断するよう構成される、請求項４９に記載の記憶装置。
【請求項５１】
前記動作が前記データブロックを前記不揮発性メモリに記憶する前記アドレスは物理アドレスであり、
前記所望の記憶位置は論理アドレスであり、
前記記憶機構はさらに、マッピングデータを用いて前記物理アドレスを前記論理アドレスと比較するよう構成される、請求項５０に記載の記憶装置。
【請求項５２】
前記記憶機構はさらに、以下のステップを実行することによって、マッピングデータを用いて前記物理アドレスを前記論理アドレスと比較するよう構成され、前記以下のステップは、
前記論理アドレスおよび前記マッピングデータに基づいて所望の物理アドレスを決定するステップと、
前記物理アドレスを前記所望の物理アドレスと比較するステップとを含む、請求項５１
に記載の記憶装置。
【請求項５３】
前記動作が前記データブロックを前記不揮発性メモリに記憶する前記アドレスは物理アドレスであり、
前記所望の記憶位置は論理アドレスであり、
前記記憶機構はさらに、アルゴリズムを用いて前記物理アドレスを前記論理アドレスと比較するよう構成される、請求項５０に記載の記憶装置。
【請求項５４】
前記記憶機構はさらに、以下のステップを実行することによって、アルゴリズムを用いて前記物理アドレスを前記論理アドレスと比較するよう構成され、前記以下のステップは、
前記論理アドレスおよび前記アルゴリズムに基づいて所望の物理アドレスを決定するステップと、
前記物理アドレスを前記所望の物理アドレスと比較するステップとを含む、請求項５３に記載の記憶装置。
【請求項５５】
前記記憶機構はさらに、前記所望の記憶位置を前記データブロックから読出すよう構成される、請求項４９に記載の記憶装置。
【請求項５６】
記憶装置であって、
不揮発性メモリと、
前記不揮発性メモリと通信するよう結合される記憶機構とを含み、前記記憶機構は、
位置検証チェックがデータブロックのために実行されるべきかどうかを判断し、
位置検証チェックが前記データブロックのために実行されるべき場合、前記データブロックを前記不揮発性メモリに記憶する動作が、前記データブロックに含まれるデータに基づいて決定される所望の記憶位置で前記データブロックを記憶するかどうかを判断し、
前記データブロックを前記不揮発性メモリに記憶する前記動作が前記データブロックに関連する前記所望の記憶位置で前記データブロックを記憶する場合、前記データブロックを前記不揮発性メモリに単に記憶するよう構成される、記憶装置。
【請求項５７】
記憶装置であって、記憶媒体上の位置にデータを記憶する要求を受信すると、
前記データが破損しているかどうかを判断し、
前記データにおいて特定される位置に対して、前記要求において特定される前記記憶媒体上の前記位置を確認するよう構成される、記憶装置。
【請求項５８】
記憶システムであって、
コンピュータと、
記憶装置とを含み、
前記コンピュータは、確認データを計算し、前記記憶装置上に記憶されるデータブロックに記憶するよう構成され、
前記記憶装置は、
前記データブロックを確認し、
前記データブロックの確認が成功した場合、前記データブロックが前記記憶装置に単に記憶されることを可能にするよう構成される、記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明は、概して、コンピュータアプリケーションにおけるデータの完全性に関し、より具体的には、データ完全性の検証機構に関する。
【背景技術】
【０００２】
発明の背景
社会はコンピュータに極めて依存するようになった。今日の世界では、コンピュータは、財政計画から企業の給料支払システム、さらに航空機の誘導装置に至るあらゆることに対して用いられる。コンピュータシステムの幅広い用途のために、データ破損はほとんどすべての個人に影響を及ぼすおそれのある問題であり、コンピュータハードウェア産業とコンピュータソフトウェア産業との両方を悩まし続ける問題である。
【０００３】
たとえば、データベースアプリケーションなどのソフトウェアアプリケーションは、それらのデータの完全性の保守に極めて依存している。データベースアプリケーションに関連するデータが破損すると、ユーザは不正確な結果を経験したり、場合によってはシステムクラッシュを経験したりするおそれがある。
【０００４】
データ破損は、さまざまな理由でさまざまな異なる原因から結果として起こり得る。たとえば、データベースアプリケーションにおけるソフトウェアの「バグ」自体によって、拒絶されるような社会保障番号または無効なポインタアドレスなどの無効なデータが表またはデータ構造に記憶される可能性がある。加えて、オペレーティングシステム自体を含む同じコンピュータシステム上で実行される他のプログラムが特定の変数、表、データ構造または他の同様の種類の情報に誤って上書きする可能性があり、したがって、ある特定のソフトウェアアプリケーションに関連したデータを破損するおそれがある。さらに、アプリケーションがデータのブロックを記憶媒体に書込むとき、データは典型的にはソフトウェアおよびハードウェアの多くの中間層を通ってから実際に記憶媒体に記憶される。したがって、データブロックが記憶媒体に書込まれる前、または記憶媒体に書込まれているときに該データブロックが破損するさらなる可能性さえもある。
【０００５】
たとえば、データブロックをディスクに書込むとき、データはソフトウェアアプリケーションからボリュームマネージャへと、ボリュームマネージャからデバイスドライバへと、デバイスドライバから記憶装置コントローラへと、さらに記憶装置コントローラからディスクアレイへと進んでディスクに記憶され得る。データブロックが後にディスクから読出されるとき、データは、ソフトウェアアプリケーションによって用いられ得る前に再び同じ組のソフトウェアおよびハードウェアの層を通らなければならない。したがって、これらの層のいずれかにおけるバグによってデータが破損するおそれがある。加えて、ディスクが不安定であり、このために、データがディスク書込まれた後にそのデータにエラーが導入されると、たとえ他の層が誤ってデータを変更しなくてもデータの完全性が損なわれる可能性がある。
【０００６】
従来、データ保持方式は、特定のアプリケーションに関連するデータの完全性を保守するための一方法を提供する。他のアプリケーションによるアクセスを拒絶するためにデータを保持することによって、オペレーティングシステムは、概して、あるアプリケーションに関連したデータが別のアプリケーションによって上書きされないかまたは破損しないことを保証することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の保持方式には、ディスクドライバまたは他の低レベルのファームウェアにおける媒体の故障またはバグなどの問題に対する備えがない。さらに、オペレーティングシステム自体が、データが誤って上書きおよび／または破損されることを引き起こすバグを含む可能性もある。したがって、従来の保持方式は、データの完全性が常に保守されること、または破損データが決して記憶媒体に記憶されないことを一貫して確実にすることはできない。
【０００８】
ディスクに記憶された破損データを識別するための一方法は、論理チェックおよび物理的なチェックサムを用いることによる。論理チェックは、データ値に関するであろうと予想される或る予め定められた特徴とデータとを比較することによってデータの完全性が判断される機構である。たとえば、表Ａ内の列が、表Ｂのある特定の行にインデックスを付けるべき１組のポインタを含み、ポインタのいずれかが、表Ｂの行に関連しないアドレス値を有する場合、そのポインタは破損したアドレス値を有するものとして識別され得る。同様に、表内のある特定の列が従業員の電話番号を記憶するように構成され、その列に対するいずれかの行内の値がネガティブであると判断される場合、その値は破損していると識別され得る。
【０００９】
図１は、アプリケーションによってディスクから検索されるデータの完全性を判断するための一方法を例示する。この例では、ユーザは、アプリケーション１０４と対話して、アプリケーション１０４に関連するデータのブロックを生成および／または更新した。たとえば、データのブロックは、或るデータベース表のための更新された情報を含み得る。データブロックをディスクに記憶するために、論理チェック１２０が最初にデータ上で実行されてその完全性が検証される。次に、物理的なチェックサム計算１２２が実行されてチェックサム値を計算し、データブロック内に記憶する。物理的なチェックサム計算１２２は、データがディスクから読出されたときにデータブロックのビットパターンに対する後続の変更が識別され得る機構を提供する。たとえば、チェックサム値が計算されてデータブロック内に記憶され得るので、排他的論理和（ＸＯＲ）演算などの論理演算がデータブロック内のビットに適用されると、ゼロなどのチェックサム定数が計算される。その後、データブロックは記憶装置コントローラ１０６に送られ、次に、場合によってはネットワーク１０８を介して記憶装置コントローラ１０６からディスクアレイ１１０へと送られて、１つ以上のディスク１１４〜１１８に記憶される。
【００１０】
その後、アプリケーション１０４がデータブロックに含まれる更新された情報を再び必要とする場合、それがアプリケーション１０４によって用いられ得る前に、データブロックは、いくつかの層を通って（すなわち、１つ以上のディスク１１４〜１１８からディスクアレイ１１０へと、そしてディスクアレイ１１０からネットワーク１０８を介して記憶装置コントローラ１０６へと）再び進まなければならない。データブロックの完全性を判断するために、物理的なチェックサム検証プロセスが実行されて、データブロックが依然として正しいチェックサム定数値を有することが検証される。データブロックが依然として正しいチェックサム定数値を有すると判断されるならば、論理チェック１２６がデータ上で実行されて、論理チェック１２０が実行された時間と、物理的なチェックサム計算１２２が実行された時間との間にデータブロックが破損しなかったことが検証される。
【００１１】
しかしながら、データブロックの完全性を検証するための上述の方法に関する欠点は、データブロック内の情報上で論理チェックを実行するのにかなりの量の時間およびリソース（オーバーヘッド）が必要とされることである。多数のデータブロックを連続的に書込みかつディスクから読出すことを必要とする多くのアプリケーション、たとえばデータベースアプリケーションにとって、追加のオーバーヘッドはアプリケーションの効率性およ
び応答時間に大きな影響を及ぼす可能性がある。
【００１２】
加えて、上述の方法に関する別の欠点は、それによって破損データがディスクに書込まれてしまうことである。たとえば、論理チェック１２０の実行後にデータが破損した場合、データは、物理的なチェックサム計算１２２が実行された後に依然としてディスクに書込まれるだろう。しかしながら、多くのアプリケーション、具体的にはノントランザクションベースのアプリケーションにとっては、破損データをディスクに書込むことによって破局的な影響が及ぼされる可能性がある。というのも、無効な変更を容易に取消すことができないからである。
【００１３】
上記に基づき、データの記憶およびディスクからのデータの検索に典型的に付随するオーバーヘッドを減じるための機構が必要とされる。
【００１４】
破損データがディスクに書込まれる可能性を減じる機構も必要とされる。
【００１５】
加えて、データがディスク上の正しい領域に書込まれる可能性を高める機構も必要とされる。
【課題を解決するための手段】
【００１６】
発明の概要
この発明の一局面に従うと、データの完全性を保守するための技術が提供される。１つの技術に従うと、物理的なチェックサム計算がデータブロック上で実行される。物理的なチェックサム計算の実行後、データブロックに含まれるデータ上で論理チェックが実行される。データブロックが論理チェックをパスする場合、データブロックは不揮発性メモリに書込まれ得る。
【００１７】
１つの特徴に従うと、データブロックが不揮発性メモリに書込まれるかまたはそこから読出されると、物理的なチェックサム検証手順がデータブロック上で実行されて、データブロックに含まれるデータ上で論理チェックを実行した後にデータブロックが破損したかどうかが判断される。物理的なチェックサム検証は、特定のアプリケーションの要件に応じて記憶装置または別の位置で実行されてもよい。
【００１８】
この発明の別の局面に従うと、データブロックを評価するための方法が提供される。当該方法はデータブロック上で物理的なチェックサム検証を実行するステップを含む。当該方法はまた、データブロック内に含まれるアドレスデータが、データブロックが記憶されるべき不揮発性メモリにおける位置を特定するかどうかを検証するステップを含む。
【００１９】
この発明の別の局面に従うと、データブロックを不揮発性メモリに記憶するための方法が提供される。当該方法は、データブロック上で物理的なチェックサム検証を実行するステップと、データブロック上で物理的なチェックサム検証を実行した後にデータブロックに含まれるデータ上で論理チェックを実行するステップとを含む。物理的なチェックサム検証と論理チェックとがともに成功した場合、データブロックを不揮発性メモリに記憶することが可能となる。
【００２０】
この発明の別の局面に従うと、データブロックを不揮発性メモリに記憶するための方法が提供される。当該方法は、データブロックを不揮発性メモリに記憶する動作が、データブロックに関連する所望の記憶位置でデータブロックを記憶するかどうかを判断するステップを含む。当該方法はまた、データブロックを不揮発性メモリに記憶する動作が、データブロックに関連する所望の記憶位置でデータブロックを記憶する場合、データブロックを不揮発性メモリに単に記憶するステップを含む。
【００２１】
この発明はまた、コンピュータ読出可能な媒体と、搬送波で具体化されるコンピュータデータ信号と、上述のステップを実行するよう構成される装置とを含む。他の特徴および局面は以下の説明および添付の特許請求の範囲から明らかとなるだろう。
【００２２】
この発明は、同じ参照番号が同様の要素を示す添付の図面において限定としてではなく例示として示される。
【発明を実施するための最良の形態】
【００２３】
発明の詳細な説明
アプリケーションに関連したデータの完全性を確認するためのデータ確認機構が提供される。以下の説明では、この発明を完全に理解できるようにするために、説明の目的で多くの具体的な詳細が示される。しかしながら、これらの具体的な詳細なしにこの発明が実施可能であることが当業者には明らかであるだろう。他の場合、この発明を不必要に曖昧にしないために周知の構造および装置がブロック図の形で示される。
【００２４】
動作状況
アプリケーションに関連したデータの完全性を確認するためのデータ確認機構が提供される。一実施例では、データブロックをディスクに書込む前に物理的なチェックサム計算プロセスがデータブロック上で実行される。物理的なチェックサム計算プロセスは、後続の物理的なチェックサム検証プロセスが実行されてデータブロックが後に変更されたかどうかが判断され得る機構を提供する。たとえば、物理的なチェックサム計算プロセスは、データブロック内のデータ上で論理演算を実行してチェックサム値を決定するステップと、チェックサム値をデータブロックに挿入し、こうして、一定のチェックサム値をデータブロックと関連させるステップとを含み得る。一方で、物理的なチェックサム検証プロセスは、後にデータブロック上で論理演算を実行するステップと、その結果を予め計算されたチェックサムと比較してデータブロックが依然として正しい一定のチェックサム値を有することを検証するステップとを含み得る。
【００２５】
物理的なチェックサム計算プロセスが実行された後、データブロックをディスクに記憶する前に、論理チェックがデータブロック内のデータ上で実行されて、或る予め定められた特徴がデータ値に関連していることが検証される。論理チェックによって或る予め定められた特徴がデータに関連していることが示される場合にのみ、データブロックがディスクに書込まれ得る。その後、物理的なチェックサム計算プロセスが論理チェックの前に実行されたため、データブロックがアプリケーションによって再び必要とされる場合、データブロックの完全性を検証するのに物理的なチェックサム検証プロセスのみが必要とされる。この発明のさまざまな実施例がこの明細書中にディスクアレイおよびディスクの文脈において記載されるが、この発明はこの文脈に限定されるものではない。この発明の実施例はいかなる種類の記憶媒体、たとえばテープ、光媒体または他のいかなる種類の記憶媒体にも適用可能である。
【００２６】
図２は、この発明が用いられ得るデータ確認機構２００のブロック図を示す。一般に、データ確認機構２００はホストコンピュータ２０２、ネットワーク１０８およびデータ記憶ユニット１１２を含む。
【００２７】
ネットワーク１０８は、ホスト２０２とデータ記憶ユニット１１２との間で通信するための通信媒体を提供するネットワークシステムである。ネットワーク１０８は、さまざまな異なる形の通信媒体を表わし得るが、これは、直列または並列媒体接続、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、インターネットとして知られる広域パケット交換網、無線伝送媒体、または参加者間で情報を交換するための
他のいかなる媒体をも含むがこれらに限定されるものではない。ネットワーク１０８は、ＳＣＳＩもしくはファイバチャネルなどの通信プロトコルを用いるディスクアレイ１００への直接のケーブル接続、または異なるネットワーク媒体の組合せ、たとえば記憶装置コントローラ１０６とディスクアレイ１１０とが通信することを可能にするよう構成される無線通信ネットワークとＬＡＮとの組合せを表わす。
【００２８】
データ記憶ユニット１１２は、アプリケーション２０４のためのデータを記憶するのに用いられる１つ以上の不揮発性メモリ構成要素を表わす。データ記憶ユニット１１２はいずれの特定の種類の記憶媒体にも限定されない。特に、この明細書中で用いられる不揮発性メモリという用語は、情報を持続的に記憶するために用いられ得るいずれの種類の持続的な記憶装置または持続的な媒体としても広く定義される。この例では、データ記憶ユニット１１２は、ディスクアレイユニット２１０および１つ以上のディスク１１４〜１１８を含む独立したディスクまたはドライブの冗長なアレイ（ＲＡＩＤ）を表わす。
【００２９】
ホストコンピュータ２０２はコンピュータであるか、または１つ以上のコンピュータシステムにおいて共働するかもしくは実行するハードウェアもしくはソフトウェア構成要素もしくはプロセスのグループである。この例では、ホストコンピュータ２０２はアプリケーション２０４、物理的なチェックサム計算プロセス２２０、論理チェックプロセス２２２、物理的なチェックサム検証プロセス２２４および記憶装置コントローラ２０６を含む。
【００３０】
アプリケーション２０４は、データの操作、データの記憶およびデータ記憶ユニット１１２からのデータの検索を行うよう構成されるさまざまな異なるソフトウェアアプリケーションを表わし得る。たとえば、アプリケーション２０４は、データベースアプリケーション、ワードプロセシングアプリケーション、ＣＡＤ設計アプリケーションまたは財政計画アプリケーションを含むがこれらには限定されないさまざまなアプリケーションを表わし得る。物理的なチェックサム計算プロセス２２０、論理チェックプロセス２２２および物理的なチェックサム検証プロセス２２４は、アプリケーション２０４内の埋込まれたコードを表わし得るか、またはアプリケーション２０４に静的または動的にリンクされ得る別個のプロセス、タスクもしくはプログラムであり得る。
【００３１】
一実施例では、データブロックがデータ記憶ユニット１１２に書込まれる前に、アプリケーション２０４は物理的なチェックサム計算プロセス２２０を開始して、データブロックへ挿入するためのチェックサム値を生成する。一実施例では、チェックサム値を生成するために、ＸＯＲまたはＡＤＤ演算等の論理演算がデータブロックに含まれるデータ上で実行される。論理演算を実行することによって結果として得られるベクトル、および所望のチェックサム定数に基づいて、チェックサム値が選択され、データブロックに挿入される。実際のチェックサム値自体を用いる必要がないことに留意されたい。むしろ、チェックサム値から得られるいずれの値を用いてもよい。その後、データブロックの完全性は、データブロック上で同じ論理演算を実行し、その結果とデータブロックに記憶されたチェックサム値とを比較することによって判断され得る。
【００３２】
この発明の一実施例に従うと、チェックサム値のために既知のパターンまたは数が用いられる。既知のパターンまたは数はランダムに選択されてもよく、用いられる特定の選択方策は時間とともに変わり得る。既知のパターンまたは数はまた、チェックサム値を決定するために論理演算と組合せて用いられてもよい。この発明の実施例は、この明細書中ではデータブロックに記憶されているデータブロックに対するチェックサム値の文脈において説明されるが、この発明はこの文脈に限定されるものではない。チェックサム値はデータブロックとは別個に保守され得、データブロック上でチェックサム検証を実行するエンティティにとって利用可能にされ得る。たとえば、チェックサム値は、ルーチンコールに
おいてパスされるかまたはルックアップテーブルもしくはデータベースにおいて維持されてから、必要に応じて検索され得る。
【００３３】
物理的なチェックサム計算プロセス２２０が実行された後、論理チェック２２２がデータブロック内のデータ上で実行されて、或る予め定められた特徴がデータ値と関連していることが検証される。論理チェックによって、或る予め定められた特徴がデータに関連していないことが示される場合、リカバリシーケンスが実行されてデータブロック内の不正確なデータまたは破損したデータを訂正および／または除去し得る。
【００３４】
代替的には、論理チェックによって、或る予め定められた特徴がデータと関連していることが示される場合、データブロックは記憶装置コントローラ２０６に送られる。次いで、記憶装置コントローラ２０６は、ネットワーク１０８を介してディスクアレイユニット２１０と通信して、データブロックを１つ以上のディスク１１４〜１１８に記憶させる。
【００３５】
その後、データブロックがアプリケーション２０４によって再び必要とされるとき、データブロックはデータ記憶ユニット１１２から検索され、記憶装置コントローラ２０６に送られる。次に、物理的なチェックサム検証プロセス２２４がデータブロック上で実行されて、物理的なチェックサム計算プロセス２２０が実行されて以来データが破損していないことが検証される。一実施例では、物理的なチェックサム検証プロセス２２４を実行するために、物理的なチェックサム計算プロセス２２０によって用いられる論理演算がデータブロック上で実行される。次いで、論理演算の結果がデータブロックに記憶されたチェックサムと比較されて、物理的なチェックサム計算プロセス２２０が実行されて以来データブロックの完全性が保守されているかどうかが判断される。有利なことには、物理的なチェックサム計算２２０が論理チェック２２２より前に実行されたため、データブロックの完全性を検証するのに追加の論理チェックは必要とされない。したがって、従来のシステムにおいて通常必要とされるデータ検索オーバーヘッドが大きく減じられ得る。
【００３６】
上述の方策はブロックに個々に適用されてもよく、または任意の数のブロックのグループに適用されてもよい。たとえば、チェックサム計算および検証プロセスはデータファイルのレベルで実行されてもよく、または他の何らかの論理的なブロックの組の上で実行されてもよい。用いられる特定の方策は特定の応用例の要件に応じて異なり得る。
【００３７】
マルチレベルのデータ検証
或る実施例では、データブロックの完全性は、ディスクに記憶される前に多数のレベルで検証される。図３Ａは、データブロックの完全性がディスクへの記憶の前に多数のレベルで検証され得るマルチレベルのデータ検証システムの例を示す。図３Ａは図２と同様であるので、同様の構成要素には同じ番号が付けられた。
【００３８】
この例では、オペレーティングシステム３０６は、ボリュームマネージャ３０２およびデバイスドライバ３０４を含む。ボリュームマネージャ３０２は、アプリケーション２０４等のアプリケーションプログラムとインターフェイスをとり、かつ不揮発性メモリ（ディスク１１４〜１１８）へのデータの記憶および不揮発性メモリ（ディスク１１４〜１１８）からのデータの検索を管理するように構成される。デバイスドライバ３０４は、オペレーティングシステム３０６と記憶装置コントローラ２０６との間で通信するためのインターフェイスを提供する。一実施例においては、ボリュームマネージャ３０２および／またはデバイスドライバ３０４は、物理的なチェックサム検証プロセスを実行して、物理的なチェックサム計算プロセス２２０（たとえば、物理的なチェックサム検証手順２２４）を実行して以来データブロックが破損していないことを検証するよう構成される。アプリケーションプロセス３０８とディスク１１４〜１１８との間の異なる処理レベルで物理的なチェックサム検証プロセスを実行することにより、データが実際にディスクに書込まれ
る前にデータの完全性をさらに検証することができる。加えて、上述のマルチレベルの検証方式は、データがどこで破損したかを識別する助けとなり得る。というのも、マルチレベルの検証テストは、データがどこで破損したのかを特定する助けとなるからである。さらに、或る実施例においては、マルチレベルの検証方式は、破損データを、それがディスクに書込まれる前に検出し、破損データを、それがディスクに書込まれる前に訂正する能力をアプリケーションまたは他のプロセスに与えるよう構成される。たとえば、破損していると識別されたデータがディスクに書込まれ得る場合、次にアプリケーションが破損データをディスクから読出す時、それは何日か後、何ヵ月か後、さらには何年か後であり得るが、アプリケーションは、破損データを訂正するための情報および／または能力を有さないかもしれない。しかしながら、破損していると識別されたデータをディスクに書込ませないようにすることにより、アプリケーションがディスクから破損データを読出す可能性を減じる検証方式が提供される。
【００３９】
或る実施例では、マルチレベルのデータ検証システムは、アプリケーション２０４とディスク１１４〜１１８との間の経路に沿った他の構成要素におけるデータ完全性チェックの実行を含み得る。たとえば、一実施例においては、記憶装置コントローラ２０６およびディスクアレイ２１０は、アプリケーション２０４に関連したデータ上でデータ完全性チェックを実行するよう構成され得る。たとえば、或る実施例では、記憶装置コントローラ２０６は、物理的なチェックサム検証プロセスを実行して、物理的なチェックサム計算プロセス２２０の実行以来データブロックが破損していないことを検証するよう構成される。記憶装置コントローラ２０６で物理的なチェックサム検証プロセスを実行することにより、検証システムは、アプリケーション２０４以外の構成要素、たとえばオペレーティングシステム３０６がデータの完全性を破損しなかったことを検証することができる。加えて、物理的なチェックサム検証プロセスを実行するようディスクアレイ２１０を構成することにより、検証システムは、ネットワーク１０８を含む他のいずれの構成要素によってもデータが破損されなかったことを検証することができる。さらに、物理的なチェックサム検証プロセスを実行するようディスクアレイ２１０を構成することにより、検証システムは、破損データがディスク１１４〜１１８に記憶される可能性を大きく減じることができる。
【００４０】
たとえば、図３Ｂは、データブロックをディスクに記憶する前に物理的なチェックサム検証手順を実行することによってデータブロックの完全性が検証されるマルチレベルのデータ検証システム３５０の例を示す。図３Ｂは図３Ａと同様であるので、同様の構成要素には同じ番号が付けられる。この例では、アプリケーション２０４が物理的なチェックサム計算２２０を実行した後、データブロック内のデータ上で論理チェックを実行することなく、データブロックが記憶装置コントローラ２０６に送られる。次いで、記憶装置コントローラ２０６は、ネットワーク１０８を介してデータブロックをディスクアレイ２１０に送って、データ記憶ユニット１１２内に記憶する。この例では、データブロックを受取ると、ディスクアレイ２１０は物理的なチェックサム検証プロセス３５２を実行して、アプリケーション２０４による物理的なチェックサム計算２２０の実行以来データが破損していないことを検証する。データブロックが破損していないと判断される場合、データブロックはディスクに書込まれる。代替的には、データブロックが破損していたと判断される場合、エラーフラグがセットされ、データブロックはディスクに書込まれない。物理的なチェックサム検証プロセスをディスクアレイ２１０で実行することにより、検証システム３５０は、データブロックをディスクに記憶する直前にデータの完全性を検証することができる。特に、検証システム３５０は、データブロックをディスクに記憶する前に、アプリケーション２０４以外の構成要素、たとえばオペレーティングシステム３０６または記憶装置コントローラ２０６がデータを破損しなかったことを検証することができる。
【００４１】
加えて、図３Ａについて前述されたように、追加のデータ完全性チェックは、アプリケ
ーション２０４とディスク１１４〜１１８との間の経路に沿った他の構成要素において実行され得る。たとえば、ボリュームマネージャ３０２、デバイスドライバ３０４および記憶装置コントローラ２０６はまた、ディスクに記憶されるべきデータブロック上でデータ完全性チェックを実行するよう構成され得る。さらに、データブロックが後にディスクから検索されるとき、アプリケーション２０４は物理的なチェックサム検証２２４を任意に実行し得る。
【００４２】
データを不揮発性メモリに書込むための検証シーケンス
図４Ａは、不揮発性メモリに書込まれるべきデータの完全性を検証するための、この発明の或る実施例に従ったマルチレベルの検証シーケンスの例を示すフロー図である。図４Ａは、説明の目的で図３Ａに関連して説明される。
【００４３】
ブロック４０２では、不揮発性メモリに書込まれるべきデータのブロックが識別される。たとえば、アプリケーション２０４によって更新されたデータのブロックが、１つ以上のディスク１１４〜１１８に書込まれることが必要となり得る。
【００４４】
ブロック４０４では、物理的なチェックサム計算プロセスがデータブロック上で実行される。たとえば、物理的なチェックサム計算プロセス２２０が開始されて、データブロックへ挿入するためのチェックサム値が決定され得る。
【００４５】
ブロック４０６では、論理チェックがデータブロック内のデータ上で任意に実行される。たとえば、論理チェックがデータ上で実行されて、或る予め定められた特徴がデータ値に関連していることが検証され得る。
【００４６】
ブロック４０８では、論理チェックが実行されたと仮定すると、データブロック内のデータが論理チェックをパスしたかどうかについての判断がなされる。データが論理チェックをパスするならば、プロセスはブロック４１０に進む。代替的には、データが論理チェックをパスしなかった場合、プロセスはブロック４１８に進む。
【００４７】
ブロック４１０では、データが送られて不揮発性メモリに記憶される。たとえば、データブロックは、オペレーティングシステム３０６に送られて１つ以上のディスク１１４〜１１６上に記憶され得る。この発明の一実施例に従うと、そのデータを不揮発性メモリに記憶する要求は、データと、データが不揮発性メモリに記憶されるべき位置とをともに識別するデータを含む。後により詳細に説明するように、データが不揮発性メモリに記憶されるべき位置を特定するデータを用いて、記憶されたデータの位置を検証し得る。
【００４８】
ブロック４１２では、１つ以上の構成要素が物理的なチェックサム検証手順を任意に実行してデータブロックのデータの完全性を検証し得る。たとえば、ボリュームマネージャ３０２、デバイスドライバ３０４、記憶装置コントローラ２０６およびディスクアレイ２１０などの構成要素は、物理的なチェックサム検証手順を実行して、チェックサム値に基づいてデータの完全性を検証するよう構成され得る。
【００４９】
任意の物理的なチェックサム検証手順が１つ以上の構成要素によって実行される場合、ブロック４１４で、実行される各チェックサム検証手順について、データブロック内のデータが物理的なチェックサム検証テストをパスしたかどうかについての判断がなされる。データが任意の物理的なチェックサム検証テストをパスする場合、ブロック４１６で、データブロックは不揮発性メモリに書込まれる。代替的には、データが任意の物理的なチェックサム検証テストのうちの１つ以上をパスしなかった場合、ブロック４１８で、データブロックには、破損データを含むというフラグが立てられ、したがって、データブロックはディスクに書込まれない。
【００５０】
不揮発性メモリからデータを検索するための検証シーケンス
図４Ｂは、不揮発性メモリから読出されるデータの完全性を検証するための、この発明の或る実施例に従ったマルチレベルの検証シーケンスの例を示すフロー図である。図４Ｂはまた、説明の目的で図３Ａに関連して説明される。
【００５１】
ブロック４５２では、不揮発性メモリに記憶されるデータのブロックが識別される。たとえば、事前にアプリケーション２０４によって更新されたデータのブロックが、１つ以上のディスク１１４〜１１８から読出されることが必要となり得る。
【００５２】
ブロック４５４では、データブロックの位置が突止められ、不揮発性メモリから検索される。
【００５３】
ブロック４５６では、１つ以上の構成要素が物理的なチェックサム検証手順を任意に実行して、検索されたデータブロックの完全性を検証し得る。たとえば、ディスクアレイ２１０、記憶装置コントローラ２０６、デバイスドライバ３０４およびボリュームマネージャ３０２等の構成要素は、物理的なチェックサム検証手順を実行して、検索されたデータの完全性を既知のチェックサム定数値に基づいて検証するよう構成され得る。
【００５４】
１つ以上の構成要素が任意の物理的なチェックサム検証手順を実行して、検索されたデータの完全性を検証する場合、ブロック４５８で、実行された各チェックサム検証手順について、データブロック内のデータが物理的なチェックサム検証テストをパスしたかどうかについての判断がなされ得る。データが任意の物理的なチェックサム検証テストのうちの１つ以上をパスしなかった場合、プロセスはブロック４６８に進む。
【００５５】
代替的には、データが任意の物理的なチェックサム検証テストをパスする場合、ブロック４６０で、データブロックは、要求を行なっているアプリケーションに送られる。
【００５６】
ブロック４６２では、要求を行なっているアプリケーションは、物理的なチェックサム検証手順を実行して、検索されたデータブロックの完全性を検証する。たとえば、アプリケーション２０４は、物理的なチェックサム検証手順２２４を実行して、検索されたデータの完全性を既知のチェックサム定数値に基づいて検証するよう構成され得る。
【００５７】
或る実施例では、検索されたデータブロックが、不揮発性メモリから読出されてから任意の物理的なチェックサム検証テストのうちの１つ以上をパスしたことが分かった場合、要求を行なっているアプリケーションは、ブロック４６２における物理的なチェックサム検証手順を任意にスキップし得る。
【００５８】
ブロック４６４では、データブロックが、アプリケーションによって実行されたチェックサム検証手順２２４をパスしたかどうかについての判断がなされる。データが物理的なチェックサム検証テストをパスしなかった場合、ブロック４６８で、データブロックには、破損データを含んでいるというフラグが立てられる。
【００５９】
代替的には、データが物理的なチェックサム検証手順２２４をパスする場合、ブロック４６６で、データブロック内のデータは、要求を行なっているアプリケーションによって用いられてもよい。
【００６０】
ブロック位置の検証
或る実施例では、特定のデータブロックを不揮発性メモリに記憶するために用いられるべきブロック位置（「所望のブロックアドレス」）を検証するための機構が提供される。
たとえば、所望のブロックアドレス（またはその一部）は各データブロックに記憶されて、データブロックが不揮発性メモリ内で記憶されるべき物理または論理アドレス（またはその一部）が識別され得る。図５は、ブロック位置識別子５０４がブロック５００内で保守される機構を例示する。一実施例では、ブロック位置識別子５０４は、データブロック５００が不揮発性メモリ内で記憶されるべき物理アドレスを表わす。ブロック位置識別子５０４をブロック５００内に記憶することにより、ディスクアレイ２１０などの構成要素は、データブロックが不揮発性メモリ内の正しい位置に記憶されることを検証することができる。この検証のためにアドレス全体を用いる必要がないことに留意されたい。たとえば、アドレスにおけるＮより低位のビット等のアドレスの一部が用いられてもよい。
【００６１】
或る実施例では、アプリケーション２０４、またはアプリケーション２０４に関連付けられる構成要素は、１つ以上のディスク１１４〜１１８のトポロジーを特定するマッピングデータを保守する。マッピングデータを用いることにより、ブロックが記憶されるべき物理アドレスが識別され、ブロック内に記憶され得る。データブロックを受取ると、ディスクアレイ２１０は、ブロック位置識別子５０４に関連する物理アドレスが、ブロックが不揮発性メモリにおいて記憶されるべき位置に正確に対応することを検証する。場合によっては、ブロック識別子５０４は、データブロック５００が記憶されるべきデータ記憶ユニット１１２における実際の物理的な位置を示さない可能性がある。これは、アプリケーション２０４がデータ記憶ユニット１１２とは異なるレベルでデータブロック上で動作する場合に起こり得る。たとえば、アプリケーション２０４は、特定のオペレーティングシステムプラットホームに基づいてファイルレベルでデータブロック上で動作し得る。この場合、アプリケーション２０４または対応するオペレーティングシステムは、データブロック５００内のブロック位置識別子５０４に対しデータブロック５００の論理的な位置を用いてもよい。代替的には、アプリケーション２０３は、データ記憶ユニット１１２とはサイズの異なるブロック上で動作してもよい。いずれの場合でも、位置検証を実行するエンティティは、ブロック位置識別子５０４によって特定される位置と、データブロック５００がデータ記憶ユニット１１２に記憶される位置との単純な比較を実行することができない。代わりに、位置検証を実行するエンティティ、たとえばデータ記憶ユニット１１２は、検証が実行され得るように、マッピングデータを用いてブロック位置識別子５０４に含まれる論理アドレスから物理アドレスを決定する。用いられるマッピングデータの種類は特定のアプリケーションの要件に応じて異なっていてもよく、この発明はいずれの特定のマッピングデータにも限定されない。たとえば、場合によっては、複数の論理「層」のために複数のマッピングが用いられてもよい。
【００６２】
論理アドレスと物理アドレスとの間の関係を規定するマッピングデータを生成しかつ保守する代替例として、アルゴリズムが用いられて論理アドレスから物理アドレスが決定され得る。この代替例は、マッピングデータを保守する必要をなくすが、追加の計算リソースおよび時間を必要とし得る決定が「実行中に」なされることを必要とする。マッピングデータと組合せてアルゴリズムが用いられて、論理アドレスに関連する物理アドレスが決定され得る。たとえば、アルゴリズムを用いて物理アドレスの一部分が決定され得、マッピングデータを用いて物理アドレスの別の部分が決定され得る。
【００６３】
ブロック位置検証は特定のアプリケーションの要件に応じてさまざまなやり方で開始されてもよく、この発明はブロック位置検証を開始するための特定のいずれの方策にも限定されない。たとえば、オペレーティングシステム３０６によって用いられるアプリケーションプログラムインターフェイス（ＡＰＩ）は、データ記憶ユニット１１２に対するデータの記憶または検索を行うためにルーチンコールに対する検証属性を含み得る。検証属性は、たとえば、ブロック位置検証が実行されるべきかどうか、もしそうされるべきである場合どんな条件下で実行されるべきか、といったブロック位置検証のいかなる属性をも特定し得る。検証属性はまた、ブロック位置検証が適用されるべき特定のブロックを特定し
得る。たとえば、アプリケーション２０４はルーチンコールを呼出してブロック５００をデータ記憶ユニット１１２に記憶する。呼出し（コール）は検証データを含み、これは、この場合、ブロック位置検証が実行されるべきであることを示す。ディスクアレイ２１０は呼出に関連する検証データを検査して、ブロック位置検証が実行されるべきかどうかを判断する。ブロック位置検証が実行されるべきであることを検証データが示すと判断した後、ディスクアレイ２１０は要求されたブロック位置検証を実行させる。
【００６４】
代替的には、ルーチンコールに検証属性を含むのではなく、属性データがブロック５００に含まれてもよく、検証を実行すべきエンティティ、たとえばデータ記憶ユニット１１２によって検査および評価されてもよい。属性データは、たとえば、ブロック位置検証が実行されるべきかどうか、もしそうされるべきである場合どんな条件下で実行されるべきか、といったブロック位置検証のいかなる所望の属性をも特定する。たとえば、アプリケーション２０４は検証データをブロック５００に挿入して、ブロック位置検証がブロック５００上で実行されるべきであることを示す。アプリケーション２０４はルーチンを呼出してブロック５００をデータ記憶ユニット１１２に記憶する。ディスクアレイ２１０はブロック５００の内容を検査して、ブロック５００が、ブロック位置検証が実行されるべきであることを示すいずれの検証データをも含むかどうかを判断する。この発明の例においては、ディスクアレイ２１０は、ブロック位置検証が実行されるべきであることを示す検証データをブロック５００が含むと判断し、ブロック位置検証を実行させる。
【００６５】
或る実施例では、ブロック位置識別子５０４が、ブロックが記憶されるべき位置に正確に対応していない場合、エラーにはフラグが立てられ、こうして、ブロックが不揮発性メモリに記憶されない。たとえば、ブロック位置識別子５０４が、ブロックが記憶されるべき位置に正確に対応していない場合、オペレーティングシステム３０６および／またはアプリケーション２０４に通知され得る。一実施例では、ブロック位置識別子５０４が用いられて、ブロックが不揮発性メモリ内の正しい位置から読出されることが検証される。たとえば、ブロック位置識別子５０４をデータが検索されたメモリ内の物理的な位置と比較することにより、ディスクアレイ２１０は、データブロックが不揮発性メモリ内の正しい位置から検索されたことを検証することができる。
【００６６】
或る実施例では、複数のブロック位置識別子はブロック内に記憶され得、ブロックが記憶されるべき複数の位置を識別する。たとえば、ミラーリングデータベースシステムに備えるために、複数のブロック位置識別子が各データブロックに記憶されて、データブロックが不揮発性メモリにおいて記憶されるべき複数の位置が識別され得る。代替的には、単一のブロック位置識別子５０４が各ブロックに含まれてもよく、ディスクアレイ２１０は、アドレスを検証し、かつ不揮発性メモリ内でデータブロックをミラーリングするために１つ以上の他のアドレスを決定するよう構成され得る。
【００６７】
バックアップを実行する際の検証シーケンス
或る実施例では、１つ以上のアプリケーションプログラムに関連したデータをバックアップするためのデータ確認機構が提供される。図６Ａは、データブロックをバックアップ装置６０４に記憶する前にホスト２０２上にあるバックアッププロセス６０２が物理的なチェックサム検証手順を実行するバックアップシステム６００を例示する。この例では、バックアップ装置６０４は、特定のいかなる種類のバックアップ機構または媒体にも限定されず、したがって、テープ駆動装置、ＺＩＰ駆動装置、ＤＶＤまたはＣＤ  ＲＯＭユニットおよびフロッピー（登録商標）ディスクユニットを含み得るがこれらに限定されないさまざまな異なる種類のバックアップ構成要素を含み得る。
【００６８】
一実施例では、１つ以上のデータブロックをバックアップする際に、バックアッププロセス６０２は、データブロックをデータ記憶ユニット１１２から検索し、各ブロック上で
物理的なチェックサム検証手順を実行してデータの完全性を検証する。前述したように、論理チェック２２２の前に物理的なチェックサム計算２２０が実行されたため、データブロックの完全性を検証するために追加の論理チェックは必要とされない。したがって、従来のバックアップシステムで通常必要とされるオーバーヘッドが大きく減じられ得る。加えて、バックアッププロセス６０２で物理的なチェックサム検証プロセスを実行することにより、破損データがバックアップ装置６０４に記憶される可能性を大きく減じることのできるバックアップ検証システムが提供される。
【００６９】
或る実施例では、データが破損したと判断されると、バックアッププロセス６０２は、破損データをバックアップ装置６０４に書込ませない。代わりに、バックアッププロセス６０２はアプリケーション２０４または他のプロセスと通信して、破損データを、それがバックアップ装置６０４に書込まれ得る前に訂正し得る。破損データをバックアップ装置６０４に書込ませないようにすることにより、破損データがバックアップ装置６０４に記憶される可能性を減じる検証方式が提供される。加えて、図６Ａは論理チェック２２２を表わすが、この発明はこのチェックが実行されることを必要とせず、或る実施例においては、システム６００は論理チェック２２２の実行を含まない可能性がある。たとえば、一実施例では、システム６００は論理チェック２２２を含まないが、代わりに、データ記憶ユニット１１２に書込まれかつデータ記憶ユニット１１２から検索されるデータ上でデータ完全性チェックを実行するために１つ以上の物理的なチェックサム検証プロセスに依拠する。
【００７０】
また、或る実施例では、記憶装置コントローラ２０６または他のオペレーティングシステム構成要素から直接データブロックを受取る代わりに、バックアッププロセス６０２は、アプリケーション２０４と通信してデータブロックを受取るよう構成され得る。データブロックを受取ると、バックアッププロセス６０２はさらに、物理的なチェックサム手順２２４を実行して、バックアップ装置６０４への書込みの前にデータが破損していないことを確実にするように構成され得る。
【００７１】
この発明は、ホスト２０２上で実行されている物理的なチェックサム検証手段に限定されない。たとえば、図６Ｂに示されるように、物理的なチェックサム検証６０６はバックアップ装置６０４で実行される。バックアップ装置６０４上での物理的なチェックサム検証の実行は、物理的なチェックサム検証２２４に加えて、または物理的なチェックサム検証２２４の代わりに行なわれてもよく、この発明は特定のいずれの方策にも限定されない。
【００７２】
応用例によっては、データのバックアップは、ホストではなくデータ記憶ユニット自体によって実行され得る。図６Ｃは、データのバックアップがデータ記憶ユニット１１２によって実行される構成を示す。具体的には、データ記憶ユニット１１２はデータをバックアップ装置６０４にコピーする。データ記憶ユニット１１２によって実行されるデータのバックアップはホスト２０２に完全にトランスペアレントに起こり得る。したがって、図６Ａおよび図６Ｂに示されるバックアッププロセス６０２は用いられない。代わりに、この発明の実施例に従うと、データ記憶ユニット１１２によって呼出されるバックアッププロセスにより、データがバックアップ装置６０４にバックアップされる。データ記憶ユニット１１２によって呼出されるバックアッププロセスは、特定の応用例の要件に応じて、データ記憶ユニット１１２上にあり得るかまたはデータ記憶ユニット１１２の外部にあり得る。
【００７３】
ハードウェアの例
図７は、この発明の実施例が実現され得るコンピュータシステム７００を示すブロック図である。コンピュータシステム７００は、情報の通信を行なうためのバス７０２または
他の通信機構と、バス７０２に結合され情報を処理するためのプロセッサ７０４とを含む。コンピュータシステム７００はまた、プロセッサ７０４によって実行されるべき情報および命令を記憶するための、バス７０２に結合されるランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置等のメインメモリ７０６を含む。メインメモリ７０６はまた、プロセッサ７０４によって実行されるべき命令の実行中に一時的数値変数または他の中間情報を記憶するために用いられ得る。コンピュータシステム７００はさらに、バス７０２に結合されプロセッサ７０４のための命令および静的情報を記憶するための読出専用メモリ（ＲＯＭ）７０８または他の静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置７１０が設けられ、情報および命令を記憶するためにバス７０２に結合される。
【００７４】
コンピュータシステム７００は、コンピュータユーザに情報を表示するための陰極線管（ＣＲＴ）等のディスプレイ７１２にバス７０２を介して結合され得る。英数字および他のキーを含む入力装置７１４がバス７０２に結合されて、情報およびコマンド選択をプロセッサ７０４に伝達する。別の種類のユーザ入力装置は、方向情報およびコマンド選択をプロセッサ７０４に伝達し、さらにはディスプレイ７１２上でのカーソルの動きを制御するための、マウス、トラックボールまたはカーソル方向キー等のカーソル制御７１６である。この入力装置は、典型的には、２本の軸、第１の軸（たとえば、ｘ）と第２の軸（たとえば、ｙ）とにおいて２自由度を有し、これによって、装置が平面において位置を特定することが可能となる。
【００７５】
この発明は、データ完全性検証機構を実現するためのコンピュータシステム７００の用途に関連する。この発明の一実施例に従うと、メインメモリ７０６に含まれる１つ以上の命令の１つ以上のシーケンスを実行するプロセッサ７０４に応答してコンピュータシステム７００によってデータ完全性検証機構が提供される。このような命令は、記憶装置７１０などの別のコンピュータ読出可能な媒体からメインメモリ７０６へと読出され得る。メインメモリ７０６に含まれる命令のシーケンスを実行することにより、この明細書中に説明されるプロセスステップをプロセッサ７０４に実行させる。多重処理構成における１つ以上のプロセッサを用いてメインメモリ７０６に含まれる命令のシーケンスを実行することもできる。代替的な実施例では、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せてハードワイヤード回路を用いてこの発明を実現することもできる。したがって、この発明の実施例は、ハードウェア回路とソフトウェアとの特定のいずれかの組合せに限定されない。
【００７６】
この明細書中で用いられる「コンピュータ読出可能な媒体」という用語は、プロセッサ７０４に命令を与えて実行させることに関わるいずれかの媒体を指す。このような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含むがそれらに限定されない多くの形をとり得る。不揮発性媒体は、たとえば、記憶装置７１０などの光ディスクまたは磁気ディスクを含む。揮発性媒体はメインメモリ７０６などのダイナミックメモリを含む。伝送媒体は、バス７０２を構成するワイヤを含んだ同軸ケーブル、銅ワイヤおよび光ファイバを含む。伝送媒体はまた、電波および赤外線データの通信中に生成されるような音波または光波の形をとり得る。
【００７７】
コンピュータ読出可能な媒体の一般的な形は、たとえば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープもしくは他のいずれかの磁気媒体、ＣＤ−ＲＯＭ、他のいずれかの光媒体、パンチカード、紙テープ、孔のパターンを備えた他のいずれかの物理的な媒体、ＲＡＭ、ＰＲＯＭおよびＥＰＲＯＭ、フラッシュＥＰＲＯＭ、他のいずれかのメモリチップもしくはカートリッジ、以下に説明される搬送波、またはコンピュータが読出可能な他のいずれかの媒体を含む。
【００７８】
さまざまな形のコンピュータ読出可能な媒体は、１つ以上の命令の１つ以上のシーケン
スを実行させるためにプロセッサ７０４に搬送することに関与し得る。たとえば、命令は、最初にリモートコンピュータの磁気ディスク上で搬送され得る。リモートコンピュータは、そのダイナミックメモリに命令をロードし得、モデムを用いて電話線を介し命令を送り得る。コンピュータシステム７００にとってローカルなモデムは電話線上のデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換し得る。バス７０２に結合される赤外検出器が、赤外線信号で搬送されたデータを受信し、データをバス７０２上に配置し得る。バス７０２はデータをメインメモリ７０６に搬送し、そこからプロセッサ７０４が命令を検索して実行する。メインメモリ７０６が受取る命令は、プロセッサ７０４による実行の前または後に、記憶装置７１０上に任意に記憶され得る。
【００７９】
コンピュータシステム７００はまた、バス７０２に結合される通信インターフェイス７１８を含む。通信インターフェイス７１８は、ローカルネットワーク７２２に接続されるネットワークリンク７２０に双方向データ通信結合を提供する。たとえば、通信インターフェイス７１８は、データ通信接続を対応する種類の電話線に提供する統合サービスデジタル通信網（ＩＳＤＮ）カードまたはモデムであってもよい。別の例として、通信インターフェイス７１８は、データ通信接続を互換性のあるＬＡＮに提供するローカルエリアネットワーク（ＬＡＮ）カードであってもよい。ワイヤレスリンクも実現され得る。このようないずれの実現例においても、通信インターフェイス７１８は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号または光信号を送受信する。
【００８０】
ネットワークリンク７２０は、典型的には、１つ以上のネットワークを介して他のデータ装置にデータ通信を提供する。たとえば、ネットワークリンク７２０は、ローカルネットワーク７２２を介してホストコンピュータ７２４へ、またはインターネットサービスプロバイダ（ＩＳＰ）７２６によって作動されるデータ装置へ接続を提供し得る。ＩＳＰ７２６は、次に、現在一般に「インターネット」７２８と呼ばれる全世界規模のパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク７２２およびインターネット７２８はともに、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を用いる。さまざまなネットワークを通る信号と、ネットワークリンク７２０上にあり通信インターフェイス７１８を通る信号とは、コンピュータシステム７００へ、およびコンピュータシステム７００からデジタルデータを搬送するが、情報を運ぶ搬送波の例示的な形である。
【００８１】
コンピュータシステム７００は、ネットワーク、ネットワークリンク７２０および通信インターフェイス７１８を介して、プログラムコードを含むメッセージを送信し、プログラムコードを含むデータを受信し得る。インターネットの例では、サーバ７３０は、インターネット７２８、ＩＳＰ７２６、ローカルネットワーク７２２および通信インターフェイス７１８を介して、アプリケーションプログラムのための要求されるコードを伝送し得る。この発明に従うと、そのような１つのダウンロードされたアプリケーションが、この明細書中に説明されるデータ完全性の検証に備える。
【００８２】
受信されたコードは、それが受信されるとプロセッサ７０４によって実行され得、および／または、後の実行のために記憶装置７１０または他の不揮発性記憶装置に記憶され得る。この態様で、コンピュータシステム７００は搬送波の形のアプリケーションコードを得ることができる。
【００８３】
代替例、発展例
この発明の或る実施例を説明する際に、説明の目的でいくつかの図が用いられた。しかしながら、この発明は、図面について示されるいかなる特定の文脈にも限定されず、この発明の精神および範囲は、この明細書中に説明された機構およびプロセスが他の機構、方
法、プログラムおよびプロセスにとって利用可能である他の文脈および応用例を含む。したがって、この明細書および図面は、限定的な意味ではなく例示的な意味で斟酌されるべきである。
【００８４】
加えて、この開示においては、或るプロセスステップが特定の順序で説明され、アルファベットおよび英数字のラベルを用いていくつかのステップを識別する。開示の中で具体的に示されない限り、この発明の実施例は、このようなステップを実行するいかなる特定の順序にも限定されない。特に、ラベルは、ステップを便宜的に識別するためにだけ用いられ、このようなステップを実行する特定の順序を暗示、特定または必要とすることを意図するものではない。
【図面の簡単な説明】
【００８５】
【図１】アプリケーションによってディスクから検索されるデータの完全性を判断するための従来の方法を示すブロック図である。
【図２】この発明が用いられ得るデータ完全性確認機構を示すブロック図である。
【図３Ａ】この発明が用いられ得るマルチレベルのデータ検証システムを示すブロック図である。
【図３Ｂ】この発明が用いられ得る別のデータ検証システムを示すブロック図である。
【図４Ａ】不揮発性メモリに書込まれるべきデータの完全性を検証するためのマルチレベルの検証シーケンスの例を示すフロー図である。
【図４Ｂ】不揮発性メモリから読出されるデータの完全性を検証するためのマルチレベルの検証シーケンスの例を示すフロー図である。
【図５】ブロックが不揮発性メモリに書込まれるべき位置を検証するための機構を示す図である。
【図６Ａ】この発明が用いられ得るバックアップシステムを示すブロック図である。
【図６Ｂ】この発明が用いられ得る別のバックアップシステムを示すブロック図である。
【図６Ｃ】この発明が用いられ得るさらに別のバックアップシステムを示すブロック図である。
【図７】実施例が実行され得るコンピュータシステムを示すブロック図である。
【図１】
2005524144.tif 000003
【図２】
2005524144.tif 000004
【図３Ａ】
2005524144.tif 000005
【図３Ｂ】
2005524144.tif 000006
【図４Ａ】
2005524144.tif 000007
【図４Ｂ】
2005524144.tif 000008
【図５】
2005524144.tif 000009
【図６Ａ】
2005524144.tif 000010
【図６Ｂ】
2005524144.tif 000011
【図６Ｃ】
2005524144.tif 000012
【図７】
2005524144.tif 000013
【国際調査報告】
2005524144.tif 000014
2005524144.tif 000015
2005524144.tif 000016
2005524144.tif 000017
2005524144.tif 000018