JP2005004753A - データのバージョンチェックを行う方法及び装置 - Google Patents

データのバージョンチェックを行う方法及び装置 Download PDF

Info

Publication number
JP2005004753A
JP2005004753A JP2004167467A JP2004167467A JP2005004753A JP 2005004753 A JP2005004753 A JP 2005004753A JP 2004167467 A JP2004167467 A JP 2004167467A JP 2004167467 A JP2004167467 A JP 2004167467A JP 2005004753 A JP2005004753 A JP 2005004753A
Authority
JP
Japan
Prior art keywords
data
storage system
version
storage
version check
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.)
Withdrawn
Application number
JP2004167467A
Other languages
English (en)
Inventor
Rodger D Daniels
ロジャー・ディー・ダニエルス
Brian Patterson
ブライアン・パターソン
Aaron Lindemann
アーロン・リンデマン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2005004753A publication Critical patent/JP2005004753A/ja
Withdrawn 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/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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1007Addressing errors, i.e. silent errors in RAID, e.g. sector slipping and addressing errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/104Metadata, i.e. metadata associated with RAID systems with parity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データの妥当性を検査する改善されたシステム及び方法を提供すること
【解決手段】第1のストレージシステム(以下「SS」と称す)(102)上の特定位置にデータブロックを書き込む(304)。所定の初期値を有し前記データブロックに関するバージョンチェックデータを前記第1のSS(102)に書き込む(310)。該バージョンチェックデータを第2のSS(210)に書き込む(312)。第1のSS上の同一位置への後続のデータ書き込みの際に、第1のSS(102)上のバージョンチェックデータをインクリメントし(318)、該インクリメントしたバージョンチェックデータを前記第2のSS(210)に格納する(320)。第1のSS(102)から1グループのデータを読み出す際、該第1のSS(102)上のバージョンチェックデータを第2のSS(210)上のバージョンチェックデータと比較する(416)ことによりデータの妥当性が検査される。
【選択図】図3

Description

本発明は、バージョンチェックデータに基づきデータが有効か否かを判定するシステム及び方法に関するものである。
複数の記憶装置を使用してその個々の記憶装置と比較して改善された性能及び信頼性を有するデータ記憶装置を提供するストレージシステム(storage system)が現在利用可能である。例えば、RAID(Redundant Array of Independent Disks)システムは、データを格納する複数のディスクを含む。RAIDシステムその他の複数の記憶装置を用いるストレージシステムは、チェックサム情報を用いて信頼性を向上させることができる。チェックサム情報は、複数の記憶装置に書き込まれる特定のデータブロックの妥当性を保証するために算出され記録される付加データである。
チェックサム情報はデータブロックの内容に基づいて算出される。チェックサム情報は、データ破損の検出を可能にすべくデータブロックと共に格納される。データブロックを読み出す際に、記憶装置から読み出されたデータに基づいて新たなチェックサムを算出する。この新たなチェックサムは、データブロックと共に格納されたチェックサム情報と同じ数式を用いて算出される。この新たなチェックサムは、データブロックと共に格納されたチェックサムと比較される。これら2つのチェックサムの情報が一致する場合、記憶装置から読み出されたデータは正しいと見なされる。これら2つのチェックサムの情報が一致しない場合には、当該データは破損している。
チェックサム情報はまた、特定のデータブロックと共に送信され、これにより、データが送信プロセス中に破損しなかったことを受信側システムが検証することが可能となる。チェックサム情報は、任意数のビットを含むことが可能であり、また様々な技法を使って算出することが可能である。チェックサム算出技法としては、例えば、データブロックのバイト又はワードを(オーバーフローを無視して)合計すること、又は特定の位置にあるバイトの各ビットにビット単位のXOR演算を行って8個のチェックサムビット(すなわち、該バイトの各ビット毎に1つ)を得ることが挙げられる。
チェックサムの算出に伴う問題は、チェックサムの算出結果が、ディスクその他の記憶媒体といった記憶装置上に書き込まれている内容に基づいていることである。記憶装置に格納されているデータは、同一の記憶装置から読み出されたチェックサム情報と比較される。かかる手法は、記憶装置に格納されているデータが、現在のデータであるか旧いデータであるかを判定することができない。このため、記憶装置は、もはや有効でないが正しいチェックサム情報を提供する旧いデータを含んでいる可能性がある。例えば、1データブロック及びそれに関連するチェックサムが記憶装置に書き込まれる。記憶装置上に格納されているチェックサムは、該記憶装置に格納されているデータブロックについては有効なものである。次いで、データブロックが新たなデータに書き換えられた場合、その新たなデータに基づいて新たなチェックサムが算出され、該新たなチェックサムが該新たなデータと共に記憶装置に格納される。しかし、新たなデータ及び新たなチェックサム情報を書き込んでいる間にエラーが発生すると、該データも該チェックサム情報も実際には記憶装置に書き込まれない。エラーが発生したものの、書き込み動作が成功したことを誤って示すステータス情報が記憶装置から返される。このため、データを書き込む(又はデータの書き込みを制御する)システムは、かかるエラーには気づかない。記憶装置上の誤った位置にデータが書き込まれる場合にも、同様の問題が発生する。
データを書き込むシステムは、記憶装置に新しいデータが収容されていると思っているが、実際には記憶装置には旧いデータと旧いチェックサム情報が収容されている。かかる状況は問題を呈するものとなる。なぜなら、記憶装置上のデータとそれに関連するチェックサム情報との間に矛盾がなく、有効であるように見えるからである。このため、旧いデータ及びそれに関連するチェックサムを読み出すシステムは、記憶装置上のチェックサム情報と一致するチェックサム情報を算出し、これは、データが有効であることを示すものとなる。
したがって、データの妥当性を検査する改善されたシステム及び方法が必要である。
本書で解説するシステム及び方法は、第1のストレージシステム上の特定位置にデータブロックを書き込む。該データブロックに関連し及び所定の初期値を有するバージョンチェックデータが、第1のストレージシステムに書き込まれる。このデータブロックに関連するバージョンチェックデータは、第2のストレージシステムにも書き込まれる。その後に第1のストレージシステム上の前記位置にデータが書き込まれる際に、第1のストレージシステム上のバージョンチェックデータがインクリメントされ、該インクリメントされたバージョンチェックデータが第2のストレージシステムに格納される。
一実施形態では、データは第1のストレージシステムから読み出される。第1のバージョンチェックデータは第1のストレージシステムから読み出される。第1のバージョンチェックデータは、第1のストレージシステムから読み出されたデータに関連するものである。第1のバージョンチェックデータは、第2のストレージシステム上に格納された第2のバージョンチェックデータを用いて、その妥当性が検査される。
本発明を限定的な意味でなく例示として図示する。これら図面は単に本発明の1つ又は2つ以上の考え得る実施形態を示したものである。同様の構成要素及び/又は特徴を参照するために全図を通して同じ符号を使用する。
本書で解説するシステム及び方法は、特定グループのデータと共に格納され及び第2のストレージシステムにも格納されたバージョンチェック情報に含まれる情報に基づいて、該データが正しいか否かを判定する。データを読み出すときに、該データと共に格納されたバージョンチェック情報を、第2のストレージシステムに格納されたバージョンチェック情報と比較する。これらのバージョンチェック情報が一致する場合には、データは有効であると見なされる。該バージョンチェック情報は、単独で使用すること、又はチェックサム情報と組み合わせて使用することが可能である。
本書に記載する特定の例は、複数のディスクと様々な誤り検出手順とを利用するストレージシステムを説明したものである。しかし、本書で解説するシステム及び方法は、如何なるタイプの記憶装置にも、また如何なるデータ記憶技法にも適用することができる。例えば、記憶装置は、ディスク、メモリ素子、又は他の任意のデータ記憶機構を含むことが可能である。更に、本書で解説するシステム及び方法に、任意のパリティ及び/又はデータストライピング技法を利用して、障害が発生した記憶装置からのデータを復元できるようにすることも可能である。ストレージシステムによっては、複数の記憶装置にまたがってデータを格納する1つ又は2つ以上のRAID技法を実施することが可能である。本書中で用いる「バージョンチェックデータ」、「バージョンチェック情報」、「バージョンデータ」、及び「バージョン情報」なる用語は、互いに置き換えて用いることが可能なものである。
図1は、ストレージコントローラ100が様々なデータ記憶及びデータ読出操作を管理する例示的な環境を示している。ストレージコントローラ100は、1つ又は2つ以上のホスト110,112からデータ読出要求及びデータ書込要求を受け取る。ホストは、ワークステーション、ラップトップコンピュータ、ハンドヘルドコンピュータ、又はサーバーといった、あらゆるタイプのコンピュータとすることが可能である。代替的に、ホストは、他のあらゆるタイプのコンピューティング装置とすることが可能である。図1には2つのホスト110,112が示されているが、特定のストレージコントローラ100は、任意の数のホストに結合することが可能である。
ストレージコントローラ100は、複数のディスク102,104,106,108にも結合される。特定のストレージコントローラに結合するディスク又は他の記憶装置はいくつあってもよい。既存のディスクに障害が発生した場合又は同ディスクがシステムから取り外された場合に、アクティブなディスクの数を変更することが可能である。また、(例えば、記憶容量を増やすため、障害が発生したディスクを取り替えるため、又は追加の予備ディスクを提供するために)システムアドミニストレータが新たなディスクをシステムに追加することが可能である。
本書で解説するように、ストレージコントローラ100は、複数のディスク102〜108上のデータの記憶及び読出を取り扱う。特定の実施形態では、ストレージコントローラ100は、様々なタイプのRAID(Redundant Array of Independent Disk)技術を実施することが可能である。代替的に、ストレージコントローラ100は、記憶装置に障害が発生した後にデータを復元することを可能にする他の技術又は手順を実施することが可能である。ストレージコントローラ100はまた、様々なデータ検証技法を用いて、複数のディスク102〜108から読み出されたデータを検証する。ストレージコントローラ100は、個別の装置とすること、又はサーバー等のコンピュータシステムの一部とすることが可能である。更に、ディスク102〜108は、ストレージコントローラ100と同じ装置内に配置すること、又はストレージコントローラ100に結合された別の装置内に配置することが可能である。一実施形態では、ディスク102〜108は、互いにほぼ等しい記憶容量を有するものである。
図2は、本書で解説する手順を実施することのできるストレージコントローラ100を示すブロック図である。プロセッサ202は、ホスト110,112から受け取った様々なデータ記憶要求及びデータ読出要求を管理するのに必要な様々な処理及びタスクを実行する(図1)。更に、プロセッサ202は、本書で解説するように、データの妥当性を検査し、バージョンチェック情報を管理し、及び失われたデータを復元するための、様々な機能を実行する。
プロセッサ202は、双方向データ通信インタフェイスを1つ又は2つ以上のホストに提供するホストインタフェイス204に結合される。プロセッサ202はまた、双方向データ通信インタフェイスを複数のディスク又は他の記憶装置に提供するストレージインタフェイス206にも結合される。チェックサムロジック208は、プロセッサ202に結合され、チェックサム情報を算出して、該チェックサム情報に基づいてデータの妥当性を検査するのに必要なロジックをプロセッサ202に提供する。チェックサムロジック208は、ストレージコントローラ100によりサポートされるチェックサム算出のタイプに応じて複数のチェックサムアルゴリズム又は公式を含むことが可能である。他の実施形態では、チェックサムロジック208は、ホストインタフェイス204、ストレージインタフェイス206、1つ又は2つ以上のホスト、又は記憶装置(例えばバックエンドディスクドライブ)に結合される。ストレージコントローラ100の代替的な実施形態では、チェックサムロジック208が省略されている。
メモリ210もまた、プロセッサ202に結合され、プロセッサ202がそのタスクを実行する際に該プロセッサにより使用される様々な情報を格納する。メモリ210は、揮発性メモリ、不揮発性メモリ、又は揮発性メモリと不揮発性メモリとの組み合わせを含むことが可能である。メモリ210は、ディスク上にデータと共に格納されたバージョンチェック情報に対して検証されるバージョンチェック情報を格納する。プロセッサ202は更にバージョンチェックロジック212にも結合され、該バージョンチェックロジック212は、本書で解説するように、バージョンチェック情報を利用して無効なデータを識別するための1つ又は2つ以上の技法を収容している。
図2の実施形態は、ストレージコントローラ100の1つの考え得る構成を表している。他の様々なストレージコントローラ100の構成を使用して本書で解説する手順を実施することが可能であることが理解されよう。
上述のように、特定の実施形態では、ストレージコントローラ100は、RAID技術を実施することができる。RAIDシステムは、複数の記憶装置(例えばディスク)をパリティデータと組み合わせて使用して、信頼性及びフォールトトレランスを向上させる。
図3は、データをストレージシステムに書き込む手順300の一実施形態を示すフローチャートである。最初に、手順300は、1つ又は2つ以上の記憶装置を収容するストレージシステムに格納すべきデータブロックを特定する(ブロック302)。1データブロックは、1ビットのデータ、数バイトのデータ、又は数千バイトのデータといった任意量のデータとすることが可能である。特定の1「ブロック」中のデータは、記憶装置上の隣接する記憶位置に格納すること、又は記憶装置上の複数の位置に格納することが可能である。他の実施形態では、1「ブロック」中のデータは、(例えばRAID技法その他のデータ記憶手順を用いて)複数の記憶装置にまたがる複数の位置に格納することが可能である。
手順300は、次に、該受容したデータブロックを第1のストレージシステム上の特定の位置に書き込む(ブロック304)。この例では、第1のストレージシステムはストレージディスクである。次に、手順300は、このデータブロックに関連するチェックサム情報を算出する(ブロック306)。このチェックサム情報を算出するために様々な異なるアルゴリズムを用いることが可能である。特定の実施形態では、ビット単位のXOR演算を用いてチェックサム情報を作成する。次いで、このチェックサム情報を第1のストレージシステムに書き込む(ブロック308)。
ブロック310で、バージョンチェックビットを第1のストレージシステムに書き込む。これと同一のバージョンチェックビットを、ストレージコントローラ内のメモリ素子等の第2のストレージシステムに書き込む(ブロック312)。代替的に、このバージョンチェックビットの第2のコピーは、第1のストレージシステムの異なる位置に、異なるストレージコントローラに、又はこのストレージコントローラの外部の記憶装置に、格納することが可能である。
このバージョンチェックビットは「1」等の所定の初期値を有する。図3に示す実施形態は、単一のバージョンチェックビットを使用するものではあるが、代替的な実施形態は、後述するように任意数のバージョンチェックビットを使用することができる。
次に、手順300は、第1のストレージシステム上の同一位置に新しい(又は更新された)データブロックを書き込むための要求に関して第1のストレージシステムを監視する(ブロック314)。かかる要求を受容すると、手順300は、この新しい(又は、更新された)データに関連するチェックサム情報を算出し、該チェックサム情報を新データと共に第1のストレージシステムに書き込む(ブロック316)。次に、手順300は、第1のストレージシステム上のバージョンチェックビットの値をインクリメントし(ブロック318)、そのインクリメントされたバージョンチェックビットを第2のストレージシステムに格納する(ブロック320)。例えば、バージョンチェックビットが、以前に「1」にセットされた場合には、このバージョンチェックビットをインクリメントすることにより、その値が「0」に変更される。同様に、バージョンチェックビットが、以前に「0」にセットされた場合には、このバージョンチェックビットをインクリメントすることにより、その値が「1」に変更される。代替的な実施形態では、手順300は、第1のストレージシステムに格納されているインクリメントされたバージョンチェックビットの値を格納するのではなく、ブロック320で、第2のストレージシステム上のバージョンチェックビットの値をインクリメントする。
バージョンチェックビットをインクリメントすることにより、ストレージコントローラ等の装置が無効なデータを識別することが可能となる。例えば、初めてデータを第1のストレージシステムに書き込む際に、バージョンチェックビットも第1のストレージシステムに書き込む。更に、第1のストレージシステムとは異なる第2のストレージシステムにも該バージョンチェックビットを書き込む。新しいデータ又は更新されたデータを第1のストレージシステム上の同一位置に書き込む場合に、第1のストレージシステム上のバージョンチェックビットをインクリメントし、該インクリメントされた値を第2のストレージシステムにも格納する。新しいデータが第1のストレージシステムに正しく格納された場合には、これら2つのバージョンチェックビットは一致するはずである。しかし、新しいデータが第1のストレージシステムに正しく格納されなかった場合には、第1のストレージシステム上のバージョンチェックビットはインクリメントされなかったことになる。このため、これら2つのバージョンチェックビットは一致せず、これによりデータが無効であることが示される。これらのバージョンチェックビットの使用に関する更なる詳細を以下で説明する。
第1のストレージシステムへの、データブロックの書き込み、チェックサム情報の書き込み、及びバージョンチェックビットの書き込みが、図3に別個のブロックとして示されているが、典型的には該3つの項目の全てが単一の書き込み動作で第1のストレージシステムに書き込まれる。同様に、新しいデータの書き込み、新しいチェックサム情報の書き込み、及びバージョンチェックビットのインクリメントは、典型的には単一の書き込み動作で行われる。
本書には、チェックサム情報とバージョンチェック情報を両方とも使用するものとして、個々の例が説明されているが、代替的な実施形態では、システム及び方法は、本書で解説するバージョンチェック技法をチェックサム情報を使用しないで実施することが可能である。
図4は、ストレージシステムからデータを読み出す手順400の一実施形態を示すフローチャートである。最初に、手順400は、データブロックを読み出す要求を受け取る(ブロック402)。この要求されたデータブロックを第1のストレージシステムから読み出す(ブロック404)。更に、このデータブロックに関連するチェックサム情報も第1のストレージシステムから読み出す(ブロック406)。次に、手順400は、このデータブロックに関連する第1のバージョンチェックビットを第1のストレージシステムから読み出す(ブロック408)。次に、手順400は、このデータブロックに関連する第2のバージョンチェックビットを第2のストレージシステムから読み出す(ブロック410)。
ブロック412で、手順400は、第1のストレージシステムから読み出されたチェックサム情報が正しいか否かを判定する。例えば、第1のストレージシステムから読み出されたデータブロックにチェックサムアルゴリズムを適用することが可能である。このチェックサムアルゴリズムの結果と、第1のストレージシステムから読み出されたチェックサム情報とが一致しない場合には、データは破損している。ブロック412の判定により、チェックサム情報が正しくないと判定された場合には、手順400は、チェックサムエラーメッセージを作成する(ブロック414)。
チェックサム情報の妥当性を検査する場合に、手順400は、ブロック416に進んでバージョンチェックビットが一致するか否かを判定する。手順400は、第1のストレージシステムから読み出されたバージョンチェックビットの値を第2のストレージシステムから読み出されたバージョンチェックビットの値と比較する。これらのバージョンチェックビットが一致しない場合には、手順400は、データバージョンエラーメッセージを作成する(ブロック418)。更に、これらバージョンチェックビットが一致しない場合には、手順400は、データ復元プロセスを開始して、第1のストレージシステムから読み出されたはずのデータブロックの復元を試行することが可能である。例えば、RAID1のデータストライプにおいて、そのデータの一方のコピーがバージョンデータと整合したが別のコピーがバージョンデータと整合しなかった場合に、第2のメモリシステム内のバージョンデータと整合したデータを有効と見なし、次いで該データを用いて無効なデータを訂正することが可能である。
ブロック416で、バージョンチェックビットが一致する場合には、第1のストレージシステムから読み出されたデータブロックを有効と見なし、該データブロックを、データを読み出す要求を出したホストに提供する(ブロック420)。第1のストレージシステムからデータを読み出す後続する要求に対して、手順400を繰り返す。
手順400の代替的な実施形態では、チェックサム情報の妥当性を検査する前にバージョンチェックビットを比較する(ブロック416)ことが可能である。かかる順序は、チェックサムを算出してその妥当性を検査するよりもバージョンチェックビットを準備する方が速い場合に特に役に立つ。更に、手順400の別の実施形態では、バージョンチェックビットを比較した(ブロック416)後、要求されたデータブロックを第1のストレージシステムから読み出し(ブロック404)、これにより、バージョンチェックビットが一致しない場合にデータ読出し時間を節約することが可能である。
図5は、チェックサム情報及びバージョンチェック情報を含むデータの例示的な配置を示している。図5に示すデータブロックは5バイトを有し、各バイトが8ビットを有している。したがって、このデータブロックは40ビットのデータに相当する。図5に示す配置は、本発明の解説を目的として提供したものである。代替的な実施形態では、1データブロックは、任意の構成で配置された任意数のデータビットを含むことが可能である。特定のデータブロックは512バイトのデータを含み、各データバイトが8ビットを含む。
図5に示すチェックサム情報は、各ビット列について行われたビット単位のXOR演算の結果を表している。各ビット列は、各バイト中の特定のビット位置(例えば「ビット1」、「ビット2」等)を表している。例えば、位置「ビット1」を表す第1のビット列は、チェックサム値「0」を有している。このチェックサムは、ビット列中の最初の2ビットにXOR演算を実行して算出されたものである。すなわち、1XOR1=0である。その結果(0)と、「0」である次のビット(すなわち「バイト3」に関連するビット)とに別のXOR演算が実行される。したがって、0XOR0=0である。この結果(0)を、次のビット(1)と共に用いて、0XOR1=1となる。その結果(1)を、ビット列(1)中の最後のビットと共に用いて、1XOR1=0となる。このため、第1のビット列についてのチェックサム値は「0」である。同様の手順を各ビット列について実行して、8ビットのチェックサム情報を作成する。
図5に示すように、チェックサム情報の隣りにバージョンビット502が格納される。代替的な実施形態では、バージョンビット502は、それに関連するデータと共にストレージシステム上の任意の位置に格納することが可能である。図5に示す別のバージョンビット504は、第2のストレージシステムに格納される。例えば、データ、チェックサム情報、及びバージョンビット502は、特定のストレージシステム(第1のストレージシステムとも称す)に格納される。第2のバージョンビット504は、例えば、第1のストレージシステムを制御するストレージコントローラ内のメモリ素子に格納される。第2のバージョンビット504は、説明の便宜上、第1のストレージシステムに格納された情報の近くに示されている。図5は、データを第1のストレージシステムに書き込んだ後のデータ、チェックサム情報、及びバージョンビットのステータスを表している。
図6は、図5に示すものと同じ記憶位置に新しいデータを書き込んだ後の意図するデータの配置を示している。新しいデータが第1のストレージシステムに正しく書き込まれた場合、図6に示す情報は精確なものとなる。例えば、チェックサム情報が該新しいデータに基づいて更新されることになる。更に、バージョンビット502及びバージョンビット504の両者が更新されて、それらの値が「1」から「0」にインクリメントされることになる。しかし、データ書き込み動作に失敗した場合には、図6に示すデータ配置を実現することができなくなる。
図7は、図5に示すものと同じ記憶位置にデータを書き込めなかった後の実際のデータ配置を示している。図7に示すように、第1のストレージシステム上のデータ及びチェックサム情報は変化していない(すなわちデータ及びチェックサム情報は図5に示すものと同じである)。しかし、第1のストレージシステムは、新しいデータが第1のストレージシステムに正しく記録されたとストレージコントローラに誤って報告している。このため、ストレージコントローラは、新しいデータが第1のストレージシステムに書き込まなかった考える理由がない。
図7に示すように、第1のストレージシステムに格納されたチェックサム情報は、旧いデータについては有効なままとなっている。この旧いデータは「古い(stale)」データと呼ぶことができる。しかし、新しいデータが第1のストレージシステムに正しく書き込まれなかったため、バージョンビット502はインクリメントされなかった。このため、バージョンビット502は不変でもとのままであって値「1」を有しており、これは、図5に示すものと同じ値である。ストレージコントローラは、新しいデータが第1のストレージシステムに正しく書き込まれたと信じているため、バージョンビット504の値が「0」に変更されて、バージョンビット502をインクリメントした値と一致する。このため、図7上の2つのバージョンビット502,504の値は一致しない。このバージョンビット値の不一致は、データを読み出すシステム又は装置に該データが有効でないことを知らせるものとなる。例えば、第1のストレージシステムからデータを読み出すストレージコントローラは、第1のストレージシステム上のバージョンビット502の値と、ストレージコントローラ内のメモリ素子に格納されたバージョンビット504の値とが一致しないことを認識することになる。
したがって、図7に示すチェックサム情報は、図7に示すデータについては有効であるが、その古いデータは有効ではない。かかる場合には、本書で解説するようなバージョンチェックビットを使用することにより、無効なデータを検出し、データ復元プロセスを開始させることにより、有効なデータを取り出すことが可能となる。
本書で解説するように、実施形態によっては、2つの異なる記憶装置上、又は同一記憶装置の2つの異なる位置にある、バージョンチェックデータの2つのコピーをインクリメントする。別の実施形態は、バージョンチェックデータの1つのコピーをインクリメントし、該インクリメントされたデータの第2のコピーを、異なる記憶装置、又は同一記憶装置上の異なる位置に格納する。本書で解説する例は、第1の記憶装置上のバージョンチェックデータ値をインクリメントし、該インクリメントされた値を第2の記憶装置に格納する。代替的な実施形態では、第2の記憶装置に格納されたバージョンチェックデータ値をインクリメントし、そのインクリメントされた値を第1の記憶装置に格納する。この代替的な実施形態では、データは典型的には第2の記憶装置から一層速く読み出され、このため、システムは該データを読み出してインクリメントし、これによりシステムの全体的な速度が向上することになる。
第1の記憶装置及び第2の記憶装置が両方ともほぼ等しいデータアクセスタイムを提供するシステムでは、バージョンチェックデータは、その読み出しを行う時点で最もビジーでない記憶装置から読み出される。このため、バージョンチェックデータは、記憶装置の利用度が変化すると、異なる記憶装置から読み出される可能性がある。
特定の実施形態では、不揮発性のランダムアクセスメモリ(RAM)に格納されたバージョンチェックデータが最初に読み出されてインクリメントされる。次いで、新しいバージョンチェックデータ値が新しいデータ及びそれに関連するチェックサム値と共に不揮発性RAM及びストレージディスクの両者に書き込まれる。
上述した例は、単一ビットのバージョンデータを含む。同一のデータ記憶位置への連続する2回の書き込み動作が失敗した後に、1グループのデータをストレージシステムから読み出す場合には、バージョンデータは、そのデータが古い場合であっても有効なデータを示すことになる。この連続する2回の書き込み動作は、第2のストレージシステム上のバージョンデータを2回変更させるものとなり、これにより、その1ビット値が、第1のストレージシステムに格納されたものと同じ値に戻される。かかる事態は起こりそうもないとはいえ、かかる事態は、無効なデータを誤って読み出すものとなる。
データが旧い場合に等しいバージョンチェックデータが得られる可能性を低減させるために、複数のビットを使用してバージョンチェックデータを表すことができる。例えば、2個のバージョンチェックデータビットを使用する場合、無効なデータを生成するためには、同一グループのデータの読み出し動作の前に、連続して4(22)回書き込み動作に失敗する必要がある。同様に、3個のバージョンチェックデータビットを使用する場合には、無効なデータを生成するためには、同一グループのデータの読み出し動作の前に、連続して8(23)回書き込み動作に失敗する必要がある。
図8は、ストレージシステム内の様々なデータ記憶位置に関連するバージョンデータが収容されているバージョンアレイ800を示している。該バージョンアレイ800に格納されたバージョンデータには2ビットのデータが収容されている。バージョンアレイ800の代替的な実施形態は、任意のビット数を有するバージョンデータを収容することが可能である。バージョンアレイ800内の各エントリは、ストレージシステムに格納された特定のデータブロックに関連づけされている。対応するバージョンデータは各データブロックと共に格納される。ストレージシステムからデータが読み出されるときに、このデータブロックと共に格納されたバージョンデータを、バージョンアレイ800に格納された対応するバージョンデータと比較する。これら2つのバージョンデータ値が一致する場合には、ストレージシステムから読み出されたデータは有効と見なされる。バージョンアレイ800は、関連するデータブロックとは別のストレージシステムに格納される。一実施形態では、バージョンアレイ800は、これらのデータブロックの記憶及び読出を取り扱うストレージコントローラ内のメモリ素子に格納される。バージョンアレイ800は、8列及び8行を含む。バージョンアレイ800の代替的な実施形態は、バージョンアレイ800に関連するデータブロックの数及び配置に応じて、任意数の列及び行を含むことが可能である。
バージョンアレイ800の特定の実施形態は、各データブロックについてのバージョンデータを関連するストレージシステムに格納することができる。該バージョンアレイ800は、データブロックの識別に用いられるデータブロックアドレスによりアドレス指定される。
図9は、ストレージシステム内の同一位置への各書き込みの後にバージョンデータをインクリメントする一連の動作900の一実施形態を示す状態図である。該一連の動作900は、関連するデータと共にストレージシステムに格納されたバージョンデータをインクリメントするために使用される。これと同じバージョンデータを、第2のストレージシステム(例えばストレージコントローラ)にも格納する。
最初に、ストレージシステム上の特定の位置にデータが書き込まれた際に、該データに関連するバージョンデータを状態902で表す「11」等の所定の値に設定する。この初期の所定の値は、一連の動作900中の任意の状態とすることが可能である。現在の状態が902である場合には、同一記憶位置への次のデータ書き込み動作は、状態を状態904に進ませ、これにより関連するバージョンデータが「00」にインクリメントされる。データと共に記憶装置に格納されたバージョンデータと第2の記憶装置に格納されたバージョンデータとは両方とも「00」に更新される。同一記憶位置への次の書き込み動作は、状態を状態906に進ませ、これによりバージョンデータが「01」にインクリメントされる。同一記憶位置への別の書き込み動作は、状態を状態908に進ませ、これによりバージョンデータが「10」にインクリメントされる。同一記憶位置への次の書き込み動作は、状態を状態902に進ませ、これによりバージョンデータが「11」にインクリメントされる。この一連の動作は、同一記憶位置への連続する各書き込み動作の後に、上述のように続行される。
本書で解説する様々な実施形態は、バージョンチェックデータのコピーを2つの異なる記憶装置に格納する。他の実施形態では、バージョンチェックデータのこれら2つのコピーは、同一の記憶装置(例えば、ディスク、メモリ、又はデータを格納できる他の装置)に格納することが可能である。例えば、バージョンチェックデータのこれら2つのコピーは、記憶装置の異なる位置に格納され、及び2つの別個の操作で書き込まれる。記憶装置上でバージョンチェックデータをインクリメントし更新する態様は、2つの異なる記憶装置を用いることに関して本書で解説した手順と同様(又は同一)である。同一の記憶装置上の異なる位置にバージョンチェックデータの2つのコピーを書き込む際に、2つの別個の書き込み動作を実行し、これにより何れかの書き込み動作中の失敗が切り離される。
本書で解説する特定の例は、ディスクアレイ等のストレージシステムにおけるデータ誤り検出に関するものである。しかし、本書で解説するシステム及び方法は、ホスト/アレイ対話(インタラクション)等の他の環境において利用することが可能である。ホスト/アレイ環境では、バージョンアレイはホスト装置上に置かれ、バージョンデータはデータと共にストレージアレイに書き込まれることになる。ホストがストレージアレイからデータを読み出す際に、ホストは、バージョンアレイ中のバージョンデータと、データと共にストレージアレイから読み出されたバージョンデータとが一致することをチェックすることになる。
上記説明は、構造上の特徴及び/又は方法論的な行為に固有の言葉を使用しているが、併記の特許請求の範囲において定義されるデータ誤り検出用の方法及び装置は、述べられる特定の特徴又は行為に限定されないものとする。もっと適切に言えば、前記の特定の特徴及び行為は、本書に述べられるシステム及び方法を実施する例示的な形態として開示されている。
ストレージコントローラが様々なデータ記憶及びデータ読出操作を管理する例示的な環境を示す説明図である。 本書で解説する手順を実施することのできる例示的なストレージコントローラを示すブロック図である。 データをストレージシステムに書き込む手順の一実施形態を示すフローチャートである。 ストレージシステムからデータを読み出す手順の一実施形態を示すフローチャートである。 チェックサム情報及びバージョンチェック情報を含むデータの例示的な配置を示す説明図である。 図5に示すものと同じ記憶位置に新しいデータを書き込んだ後の意図するデータの配置を示す説明図である。 図5に示すものと同じ記憶位置にデータを書き込めなかった後の実際のデータの配置を示す説明図である。 ストレージシステム内の様々なデータ記憶位置に関連するバージョンデータを収容するバージョンアレイを示す説明図である。 ストレージシステム内の同一位置に対する各書き込みの後にバージョン情報をインクリメントする一連の動作の一実施形態を示す状態図である。
符号の説明
100 ストレージコントローラ
102 第1のストレージシステム
210 第2のストレージシステム

Claims (10)

  1. 第1のストレージシステム(102)上の特定の位置にデータブロックを書き込み(304)、
    前記データブロックに関するバージョンチェックデータを前記第1のストレージシステム(102)に書き込み(310)、該バージョンチェックデータが所定の初期値を有し、
    前記データブロックに関するバージョンチェックデータを第2のストレージシステム(210)に書き込み(312)、
    前記第1のストレージシステム上の前記位置に対するデータの後続の書き込みの際に、
    前記第1のストレージシステム(102)上の前記バージョンチェックデータをインクリメントし(318)、
    該インクリメントされたバージョンチェックデータを前記第2のストレージシステム(210)に格納する(320)、
    という各ステップを有する方法。
  2. 前記データブロックに関するチェックサム情報を前記第1のストレージシステム(102)に書き込むステップ(308)を更に有する、請求項1に記載の方法。
  3. 前記第1のストレージシステム(102)に対して前記データブロックを書き込むステップ(304)と前記バージョンチェックデータを書き込むステップ(310)とが単一操作で行われる、請求項1に記載の方法。
  4. 前記第2のストレージシステム(210)が、前記第1のストレージシステム(102)に結合されたストレージコントローラ(100)内のメモリ素子である、請求項1に記載の方法。
  5. 前記第2のストレージシステム(210)が不揮発性メモリ素子である、請求項1に記載の方法。
  6. 第1のストレージシステム(102)からデータを読み出し(404)、
    前記第1のストレージシステム(102)から読み出された前記データに関する第1のバージョンチェックデータを該第1のストレージシステム(102)から読み出し(408)、
    第2のストレージシステム(210)に格納されている第2のバージョンチェックデータを用いて前記第1のバージョンチェックデータの妥当性を検査する(416)、
    という各ステップを有する方法。
  7. 前記バージョンチェックデータの妥当性が確認されなかった場合にバージョンエラーメッセージを作成するステップ(418)を更に有する、請求項6に記載の方法。
  8. 前記第1のストレージシステム(102)から読み出された前記データに関するチェックサム情報を該第1のストレージシステム(102)から読み出すステップ(406)を更に有する、請求項6に記載の方法。
  9. 前記第1のストレージシステム(102)から読み出されたデータを用いて前記チェックサム情報の妥当性を検査するステップ(412)を更に有する、請求項8に記載の方法。
  10. 前記第1のストレージシステム(102)がディスクであり、前記第2のストレージシステム(210)が、前記第1のストレージシステム(102)に結合されたストレージコントローラ(100)内のメモリ素子である、請求項6に記載の方法。
JP2004167467A 2003-06-09 2004-06-04 データのバージョンチェックを行う方法及び装置 Withdrawn JP2005004753A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/457,895 US20040250028A1 (en) 2003-06-09 2003-06-09 Method and apparatus for data version checking

Publications (1)

Publication Number Publication Date
JP2005004753A true JP2005004753A (ja) 2005-01-06

Family

ID=32713605

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004167467A Withdrawn JP2005004753A (ja) 2003-06-09 2004-06-04 データのバージョンチェックを行う方法及び装置

Country Status (3)

Country Link
US (1) US20040250028A1 (ja)
JP (1) JP2005004753A (ja)
GB (1) GB2402770A (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE0303551L (sv) * 2003-12-29 2004-12-07 Tagmaster Ab Förfarande vid identifikationssystem med transponder samt transponder
US20060075281A1 (en) * 2004-09-27 2006-04-06 Kimmel Jeffrey S Use of application-level context information to detect corrupted data in a storage system
US20090240717A1 (en) * 2008-03-20 2009-09-24 Hitachi, Ltd. Method and apparatus for verifying archived data integrity in integrated storage systems
TWI587139B (zh) * 2010-01-20 2017-06-11 旺玖科技股份有限公司 驅動裝置及其取得資料之方法
US8898269B2 (en) * 2011-03-14 2014-11-25 International Business Machines Corporation Reconciling network management data
US9043559B2 (en) * 2012-10-23 2015-05-26 Oracle International Corporation Block memory engine with memory corruption detection
US9367394B2 (en) * 2012-12-07 2016-06-14 Netapp, Inc. Decoupled reliability groups
GB2514611A (en) * 2013-05-31 2014-12-03 Ibm Storage integrity validator
US9672298B2 (en) 2014-05-01 2017-06-06 Oracle International Corporation Precise excecution of versioned store instructions
US9195593B1 (en) 2014-09-27 2015-11-24 Oracle International Corporation Hardware assisted object memory migration
US20170068955A1 (en) * 2015-09-04 2017-03-09 Ca, Inc. Verification and provisioning of mobile payment applications
US10921974B2 (en) * 2016-03-30 2021-02-16 Microsoft Technology Licensing, Llc Using drag and drop to apply metadata
JP2019207524A (ja) * 2018-05-29 2019-12-05 セイコーエプソン株式会社 回路装置、電気光学装置、電子機器及び移動体
CN110600070B (zh) * 2019-09-18 2021-11-05 南威软件股份有限公司 一种提升固态硬盘阵列系统修复性能的编码和修复方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
JPH03180945A (ja) * 1989-12-08 1991-08-06 Nec Corp ソースファイル版数管理方式
US5150368A (en) * 1990-04-10 1992-09-22 Rolm Systems Minimization of modem retransmissions
JP3183719B2 (ja) * 1992-08-26 2001-07-09 三菱電機株式会社 アレイ型記録装置
JP3093541B2 (ja) * 1993-11-19 2000-10-03 富士通株式会社 プログラムおよびデータの版数管理を行う端末装置およびオンラインシステム
US5574882A (en) * 1995-03-03 1996-11-12 International Business Machines Corporation System and method for identifying inconsistent parity in an array of storage
US5960169A (en) * 1997-02-27 1999-09-28 International Business Machines Corporation Transformational raid for hierarchical storage management system
US6269374B1 (en) * 1998-05-26 2001-07-31 International Business Machines Corporation Method and apparatus for updating checksums of data structures
US6502108B1 (en) * 1999-10-25 2002-12-31 International Business Machines Corporation Cache-failure-tolerant data storage system storing data objects with version code equipped metadata tokens
US6601216B1 (en) * 2000-03-31 2003-07-29 Microsoft Corporation Differential cyclic redundancy check
US7020805B2 (en) * 2002-08-15 2006-03-28 Sun Microsystems, Inc. Efficient mechanisms for detecting phantom write errors

Also Published As

Publication number Publication date
US20040250028A1 (en) 2004-12-09
GB2402770A (en) 2004-12-15
GB0412271D0 (en) 2004-07-07

Similar Documents

Publication Publication Date Title
US7146461B1 (en) Automated recovery from data corruption of data volumes in parity RAID storage systems
US9430329B2 (en) Data integrity management in a data storage device
US8601348B2 (en) Error checking addressable blocks in storage
US7308599B2 (en) Method and apparatus for data reconstruction after failure of a storage device in a storage array
JP4916033B2 (ja) データ格納方法、データ・ストレージ・システムおよびプログラム(ストレージ・システムにおけるデータ完全性の検証)(著作権および商標登録表示本特許文書の開示の一部は、著作権保護を受ける内容を含む。本所有権者は、特許文書または特許開示書のいずれか一つによるファクシミリ複写物には、複写物が特許商標庁の特許ファイルまたは記録として世に出現している限り異論はないが、他の場合に全ての著作権は完全に留保する。)(本明細書で参照するある種のマークについては、出願人またはその譲受人と提携しまたは提携しない第三者の、慣習法上の、または登録された商標である可能性がある。これらのマークを使用するのは、例示によって実施可能な開示を提供するためであり、そのようなマークに関連するもののみに本発明の範囲を制限するように解釈されるべきではない。)
US7206991B2 (en) Method, apparatus and program for migrating between striped storage and parity striped storage
US6854071B2 (en) Method and apparatus for providing write recovery of faulty data in a non-redundant raid system
US7315976B2 (en) Method for using CRC as metadata to protect against drive anomaly errors in a storage array
US7058762B2 (en) Method and apparatus for selecting among multiple data reconstruction techniques
US7689890B2 (en) System and method for handling write commands to prevent corrupted parity information in a storage array
US7103811B2 (en) Mechanisms for detecting silent errors in streaming media devices
US7409499B1 (en) Automated recovery from data corruption of data volumes in RAID storage
US20050283654A1 (en) Method and apparatus for decreasing failed disk reconstruction time in a raid data storage system
JP2010033287A (ja) ストレージサブシステム及びこれを用いたデータ検証方法
US7380198B2 (en) System and method for detecting write errors in a storage device
JP4114877B2 (ja) 不正データを検出するための装置、方法、及びプログラム
US7549112B2 (en) Unique response for puncture drive media error
JP2005004753A (ja) データのバージョンチェックを行う方法及び装置
US7818609B2 (en) Methods and systems for managing corrupted meta-data in a computer system or network
JP2006139478A (ja) ディスクアレイシステム
WO2024113685A1 (zh) 一种raid阵列的数据恢复方法及相关装置
US7730370B2 (en) Apparatus and method for disk read checking
US20100138603A1 (en) System and method for preventing data corruption after power failure
US7577804B2 (en) Detecting data integrity
US20030163757A1 (en) RAID subsystem and data input/output and recovery method in disk error mode

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050920

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20060113