JP4114877B2 - 不正データを検出するための装置、方法、及びプログラム - Google Patents
不正データを検出するための装置、方法、及びプログラム Download PDFInfo
- Publication number
- JP4114877B2 JP4114877B2 JP2004349947A JP2004349947A JP4114877B2 JP 4114877 B2 JP4114877 B2 JP 4114877B2 JP 2004349947 A JP2004349947 A JP 2004349947A JP 2004349947 A JP2004349947 A JP 2004349947A JP 4114877 B2 JP4114877 B2 JP 4114877B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- sector
- value
- stored
- redundant code
- 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 - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1007—Addressing errors, i.e. silent errors in RAID, e.g. sector slipping and addressing errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/104—Metadata, 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)
Description
例えば、ミドルレンジ以上のRAIDサブシステムでは、キャッシュからディスクドライブへの書込み(デステージング)に際して、ユーザデータの最小単位である512バイトのセクタデータに対して8から16バイトの冗長コードを付加する。そして、ディスクドライブからキャッシュへの読込み(ステージング)に際して、この冗長コードを検査するようにしている。これにより、RAIDコントローラのバックエンドインターフェース以降のデータパスにおけるエラー検出を行っている。尚、この場合、冗長コードは、512バイトのセクタデータから一意に求められるデータであり、LRC(Longitudinal Redundancy Check)やCRC(Cyclical Redundancy Check)等に基づくコードが一般的に使用されている。
このことを、図8を参照して、具体的に説明する。
図示するように、LBA1に、セクタデータ1(512バイト)とこれに対する冗長コードであるLRC1とが記憶され、LBA2に、セクタデータ2(512バイト)とこれに対する冗長コードであるLRC2とが記憶されているものとする。このような状況において、手順1で、LBA1からセクタデータ1及びLRC1を読み込み、手順2で、LRC1を検査する。そして、その結果、セクタデータ1とLRC1との整合がとれていれば、手順3で、セクタデータ1を修正し、手順4で、新たなLRC(LRC1’)を計算し、手順5で、修正後のセクタデータ1’及びLRC1’をLBA1に書き込むことになる。
このような状況において、手順6で、LBA1からセクタデータ1及びLRC1を読み込み、手順7で、LRC1を検査すると、セクタデータ1とLRC1との整合はとれていると判断されることになる。即ち、手順6で本来返されるべきではない不正なデータが返されたにもかかわらず、手順7でそのことが検出できないのである。
また、このような状況において、図示しないが、LBA2からセクタデータ1’及びLRC1’を読み込んだとする。この場合も、本来LBA1に書き込まれるはずであったデータが読み出され、しかも、セクタデータ1’とLRC1’との整合はとれているので、書込み位置の誤りは検出できないのである。
このようにして、ストレージサブシステムがホストシステムからのREADコマンドに対して不正なデータを返してしまうという問題(以下、「本問題」という)が発生する。
しかしながら、この方法を採用しても、手順5の後にLBA1からデータを読み込もうとした場合には、誤りを検出することはできない。なぜなら、手順5で上書きされるはずであったが実際には上書きされなかったデータの冗長コードには、LBA1の情報が含まれるためである。従って、かかる方法を採用した場合も、本問題が発生する可能性は依然として残されている。
また本発明の他の目的は、ドライブからの読出しパフォーマンスに影響を与えることなく、ストレージサブシステムがホストシステムに対して不正なデータを返してしまうという問題を回避することにある。
本実施の形態は、RAID5等のパリティによるデータプロテクションを行うディスクアレイシステムに本発明を適用したものである。このようなディスクアレイシステムでは、ホストシステムから送られたデータをセクタの大きさで区切ることによって得られる複数のセクタデータ(以下、「ユーザデータ」という)と、これらのユーザデータの不正を検出し修復するためのセクタデータ(以下、「パリティデータ」という)とが、複数のディスクに分散して記録される。また、ユーザデータが記録されるセクタ(以下、「データセクタ」という)には、そのユーザデータが正しいかどうかを検査するための冗長コードを記録す領域が付随して設けられ、パリティデータが記録されるセクタ(以下、「パリティセクタ」という)には、そのパリティデータが正しいかどうかを検査するための冗長コードを記録する領域が付随して設けられている。
ここで、書込み履歴情報としては、いかなる情報を採用してもよいが、本実施の形態では、ユーザデータの更新時に1インクリメントされるカウンタを採用することとする。その場合、書込み履歴情報は、ユーザデータのデステージングの回数を示すカウンタとして把握することができるので、以下では、そのようなカウンタをDC(Destaging Counter)と呼び、DCに設定された値のことをDC値と呼ぶこととする。
尚、本実施の形態では、便宜上、データセクタの冗長コード領域に設けられるDCをDDC(Data DC)と称し、DDCに設定された値をDDC値と称する。
また、着目するユーザデータに関連付けられたパリティデータの中から、第1優先のパリティデータ(プライマリパリティデータ)及び第2優先のパリティデータ(セカンダリパリティデータ)を決めておく。そして、プライマリパリティデータが記録されたパリティセクタ(プライマリパリティセクタ)の冗長コード領域に設けられたDCをPDC(Primary DC)と称し、PDCに設定された値をPDC値と称する。一方、セカンダリパリティデータが記録されたパリティセクタ(セカンダリパリティセクタ)の冗長コード領域に設けられたDCをSDC(Secondary DC)と称し、SDCに設定された値をSDC値と称する。
また、RAID50等であれば、ミラーリングされたスライスの一方に存在するパリティセクタをプライマリパリティセクタとし、その冗長コード領域に保持されるDCをPDCとする。そして、ミラーリングされたスライスの他方に存在するパリティセクタをセカンダリパリティセクタとし、その冗長コード領域に保持されるDCをSDCとすることが考えられる。
図1では、3つのディスクが用意され、各ディスクには、512バイトのセクタデータ領域と、4〜16バイトの冗長コード領域とが設けられている。そして、任意に選択された2つのスライスに、図示するように、ユーザデータ(図では、「データ」と表記)、パリティデータ(図では、「パリティ」と表記)、DDC値(図では、「DDC」と表記)、PDC値(図では、「PDC」と表記)、SDC値(図では、「SDC」と表記)を保持する。即ち、ユーザデータ1−1、1−2、2−1、2−2が記録されたデータセクタの冗長コード領域には、各ユーザデータのDC値であるDDC1−1、1−2、2−1、2−2が保持されている。また、パリティデータ1は、ユーザデータ1−1、1−2にとってのプライマリパリティデータであると共に、ユーザデータ2−1、2−2にとってのセカンダリパリティデータである。従って、パリティデータ1が記録されたパリティセクタの冗長コード領域には、DDC1−1、1−2に対応するPDC1−1、1−2が保持されると共に、DDC2−1、2−2に対応するSDC2−1、2−2が保持されている。一方、パリティデータ2は、ユーザデータ2−1、2−2にとってのプライマリパリティデータであると共に、ユーザデータ1−1、1−2にとってのセカンダリパリティデータである。従って、パリティデータ2が記録されたパリティセクタの冗長コード領域には、DDC2−1、2−2に対応するPDC2−1、2−2が保持されると共に、DDC1−1、1−2に対応するSDC1−1、1−2が保持されている。
図2でも、図1と同様、3つのディスクが用意され、各ディスクには、図示しないが、512バイトのセクタデータ領域と、4〜16バイトの冗長コード領域とが設けられている。そして、このRAID50構成は、RAID5構成をミラーリングしたものであり、ディスク1、2、3に記録されたデータは、それぞれ、ディスク4、5、6にも記録されるようになっている。そして、このミラーリングされたスライスに、図示するように、ユーザデータ(図では、「データ」と表記)、パリティデータ(図では、「パリティ」と表記)、DDC値(図では、「DDC」と表記)、PDC値(図では、「PDC」と表記)、SDC値(図では、「SDC」と表記)を保持する。即ち、ユーザデータ1、2が記録されたデータセクタの冗長コード領域には、各ユーザデータのDC値であるDDC1、2が保持されている。また、ディスク3に記録されるパリティデータは、ユーザデータ1、2にとってのプライマリパリティデータであるので、このパリティデータが記録されたパリティセクタの冗長コード領域には、DDC1、2に対応するPDC1、2が保持されている。一方、ディスク6に記録されるパリティデータは、ユーザデータ1、2にとってのセカンダリパリティデータであるので、このパリティデータが記録されたパリティセクタの冗長コード領域には、DDC1、2に対応するSDC1、2が保持されている。
既に述べたように、各ユーザデータのDC値は、そのユーザデータの冗長コード(RCx)、及び、そのユーザデータに対応するパリティデータの冗長コード(RCpx)として、各セクタの冗長コード領域に格納される。具体的には、まず、RCG(Redundant Code Generator)が、既存の手法により各セクタデータから冗長コードを生成する。そして、この生成された冗長コードと格納すべきDC値とをXOR演算して得られる新たな冗長コードが各セクタの冗長コード領域に格納される。
まず、RCGが、ユーザデータ2−1から従来の手法により冗長コードRC2−1−を生成する。そして、XOR演算器がRC2−1−とDC2−1とをXOR演算することにより新たな冗長コードRC2−1を求め、この冗長コードが冗長コード領域に格納される。
また、パリティデータ2の冗長コードRCp2にDC値を格納する場合は、次のようになる。
まず、RCGが、パリティデータ2から従来の手法により冗長コードRCp2−を生成する。そして、XOR演算器がRCp2−と、DC2−1、2−2、1−1、1−2からなるビット列とをXOR演算することにより新たな冗長コードRCp2を求め、この冗長コードが冗長コード領域に格納される。
更に、ユーザデータ2−2の冗長コードRC2−2へのDC値の格納も、ユーザデータ2−1の場合と同様にして行われる。
図4は、このようなストレージサブシステムとして用いるのに好適なコンピュータのハードウェア構成の例を模式的に示した図である。
図4に示すコンピュータは、演算手段であるCPU(Central Processing Unit)10aと、M/B(マザーボード)チップセット10b及びCPUバスを介してCPU10aに接続されたメインメモリ10cと、同じくM/Bチップセット10b及びAGP(Accelerated Graphics Port)を介してCPU10aに接続されたビデオカード10d及びディスプレイ10jとを備える。また、PCI(Peripheral Component Interconnect)バスを介してM/Bチップセット10bに接続された磁気ディスク装置(HDD)10eと、ネットワークインターフェース10gとを備える。更に、このPCIバスからブリッジ回路10f及びISA(Industry Standard Architecture)バス等の低速なバスを介してM/Bチップセット10bに接続されたフレキシブルディスクドライブ10hとキーボード/マウス10iとを備える。
コントロール部11は、ストレージサブシステム全体を制御する部分である。尚、コントロール部11は、データパス制御部13から渡された情報に基づいて、データセクタ、プライマリパリティセクタ、セカンダリパリティセクタのうち、本問題が発生したセクタを特定する機能も有しており、この機能は「特定手段」として把握することができる。
フロントエンドI/F部12は、ホストシステムとストレージサブシステムとの間のインターフェースとして機能する部分である。
バックエンドI/F部14は、ストレージサブシステムとディスクドライブ161、162、…、16nとの間のインターフェースとして機能する部分である。
ディスクドライブ161、162、…、16nは、ストレージサブシステムによる処理対象となるユーザデータ及びパリティデータを記憶するための記憶装置であり、図1のディスク1〜3、図2のディスク1〜6に相当する。
冗長コード生成部13aは、ドライブへのWRITE要求に応じてキャッシュ部15からバックエンドI/F部14へユーザデータを転送する際に、冗長コードを計算する機能を有する。冗長コードの計算は、DCバッファ15d内の該当するDC値を読み出し、ユーザデータから従来の方法で求めた冗長コードとその読み出されたDC値とをXOR演算することにより行う。
また、冗長コード検証部13bは、ドライブへのREAD要求に応じてバックエンドI/F部14からキャッシュ部15へユーザデータを転送する際に、冗長コードを検証する機能を有する。冗長コードの検証は、ユーザデータから従来の方法で求めた冗長コードとドライブから読み出された冗長コードとをXOR演算することによりDC値を求め、このDC値とDCバッファ15d内のDC値とを比較することにより行う。
キャッシュ制御部15aは、ユーザデータ記憶領域15b、パリティデータ記憶領域15c、DCバッファ15dへの情報の出し入れ等を制御する機能を有する。例えば、ユーザデータ記憶領域15b、パリティデータ記憶領域15c、DCバッファ15dにどのような情報が保持されているか、及び、DCバッファ15dに記憶されたDC値が検証済かどうかについても、キャッシュ制御部15aが管理する。
DCバッファ15dは、プライマリパリティデータの冗長コードから取得したDC値を、ユーザデータの冗長コードから取得したDC値の比較対象として記憶しておく領域である。尚、DCバッファ15dに保持できるDC値は、RAID5等の場合であれば、ユーザデータ記憶領域15bに保持できるユーザデータのブロック数の2倍であり、RAID50等の場合であれば、ユーザデータ記憶領域15bに保持できるユーザデータのブロック数と同数である。また、DCバッファ15dは、キャッシュ部15にユーザデータ記憶領域15bを確保する時に、コントロール部11からの要求により、キャッシュ制御部15aにより設定される。
ストレージサブシステムにおけるDC値の操作は、ディスクドライブ161〜16nからキャッシュ部15へのセクタデータの読込み(ステージング)の際、及び、キャッシュ部15からディスクドライブ161〜16nへのセクタデータの書出し(デステージング)の際に行われる。従って、以下では、ステージング時の動作と、デステージング時の動作とを分けて説明する。
その結果、DC値がDCバッファ15d内に存在すると判定された場合、処理はステップ104へ進む。
一方、DC値がDCバッファ15d内に存在しないと判定された場合、コントロール部11は、このユーザデータに対応するプライマリパリティデータの読込みをバックエンドI/F部14に指示する。これに従い、バックエンドI/F部14は、ドライブに対し、プライマリパリティデータのREAD要求を行う。そして、読み込まれたプライマリパリティデータは、データパス制御部13を介して、キャッシュ部15のパリティデータ記憶領域15cに転送される(ステップ102)。
このデータ転送時に、冗長コード検証部13bは、読み出されたプライマリパリティデータから冗長コードを生成する。そして、この生成された冗長コードとプライマリパリティデータに付加された冗長コードとをXOR演算することによりPDC値を取得し、これをDCバッファ15dへ転送する(ステップ103)。尚、この時、PDC値は、検証済とはしない。
このデータ転送時に、冗長コード検証部13bは、読み出されたユーザデータから冗長コードを生成する。そして、この生成された冗長コードとユーザデータに付加された冗長コードとをXOR演算することによりDDC値を取得し、これをDCバッファ15d内のPDC値と比較する(ステップ105)。
一方、PDC値とDDC値とが一致しない場合、冗長コード検証部13bは、取得したDDC値をDDC記憶領域13cに一時保存し(ステップ108)、DC値の不一致の発生をコントロール部11に通知する。
その結果、PDC値が検証済の場合、コントロール部11は、ステップ104で読み込まれたユーザデータが記録されていたデータセクタにおいて本問題が発生したことを検知し、その旨をフロントエンドI/F部12を介してホストシステムへ通知する(ステップ110)。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
このデータ転送時に、冗長コード検証部13bは、読み出されたセカンダリパリティデータから冗長コードを生成する。そして、この生成された冗長コードとセカンダリパリティデータに付加された冗長コードとをXOR演算することによりSDC値を取得し、これを、SDC記憶領域13dに一時保存すると共に、DCバッファ15d内のPDC値と比較する(ステップ112)。
一方、PDC値とSDC値とが一致しない場合、SDC記憶領域13dに一時保存されSDC値とDDC記憶領域13cに一時保存されたDDC値とを比較する(ステップ114)。
一方、SDC値とDDC値とが一致しない場合、コントロール部11は、PDC値をDCバッファ15dから削除する(ステップ117)。そして、二重障害(Double Fault)の発生を検知し、その旨をフロントエンドI/F部12を介してホストシステムへ通知する(ステップ118)。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
その結果、プライマリパリティデータがパリティデータ記憶領域15cに存在すると判定された場合、処理はステップ211へ進む。
一方、プライマリパリティデータがパリティデータ記憶領域15cに存在しないと判定された場合、コントロール部11は、バックエンドI/F部14に対し、プライマリパリティデータの読込みを指示する。これに従い、バックエンドI/F部14は、ドライブに対し、プライマリパリティデータのREAD要求を行う。そして、読み込まれたプライマリパリティデータは、データパス制御部13を介して、キャッシュ部15のパリティデータ記憶領域15cに転送される(ステップ202)。
このデータ転送時に、冗長コード検証部13bは、読み出されたプライマリパリティデータから冗長コードを生成する。そして、この生成された冗長コードとプライマリパリティデータに付加された冗長コードとをXOR演算することによりPDC値を取得する(ステップ203)。
尚、ステップ201でパリティデータが存在しないと判定されたにも関わらず、ステップ204でPDC値が存在すると判定されるのは、RAID5等の場合に限られ、RAID50等の場合には、このようなことは起こらない。RAID5等では、ユーザデータのDC値が、異なるスライスのパリティセクタの冗長コード領域にも存在しているのに対し、RAID50等では、ユーザデータのDC値が、同一のスライスのパリティセクタの冗長コード領域にしか存在しないためである。
一方、PDC値が存在すると判定された場合は、ステップ203で取得したPDC値をDCバッファ15d内の対応するPDC値と比較する(ステップ206)。
一方、ステップ203で取得したPDC値がDCバッファ15d内のPDC値と一致しない場合は、PDC値が検証済かどうかを調べる(ステップ208)。
その結果、PDC値が検証済の場合は、プライマリパリティセクタにおいて本問題が発生したことを検知し、その旨をフロントエンドI/F部12を介してホストシステムに通知し(ステップ210)、処理を終了する。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
一方、PDC値が検証済でない場合は、DCバッファ15d内のPDC値を、ステップ203で取得されたPDC値で上書きし(ステップ209)、ステップ211へ進む。この時、PDC値は検証済としない。
このデータ転送時に、冗長コード検証部13bは、読み出されたユーザデータから冗長コードを生成する。そして、この生成された冗長コードとユーザデータに付加された冗長コードとをXOR演算することによりDDC値を取得し、これをDCバッファ15d内のPDC値と比較する(ステップ221)。
その結果、PDC値とDDC値とが一致しない場合、冗長コード検証部13bは、取得したDDC値をDDC記憶領域13cに一時保存し(ステップ228)、DC値の不一致の発生をコントロール部11に通知する。
その結果、PDC値が検証済の場合、コントロール部11は、ステップ104で読み込まれたユーザデータが記録されていたデータセクタにおいて本問題が発生したことを検知し、その旨をフロントエンドI/F部12を介してホストシステムへ通知する(ステップ230)。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
このデータ転送時に、冗長コード検証部13bは、読み出されたセカンダリパリティデータから冗長コードを生成する。そして、この生成された冗長コードとセカンダリパリティデータに付加された冗長コードとをXOR演算することによりSDC値を取得し、これを、SDC記憶領域13dに一時保存すると共に、DCバッファ15d内のPDC値と比較する(ステップ232)。
一方、PDC値とSDC値とが一致しない場合、SDC記憶領域13dに一時保存されSDC値とDDC記憶領域13cに一時保存されたDDC値とを比較する(ステップ234)。
一方、SDC値とDDC値とが一致しない場合、コントロール部11は、PDC値をDCバッファ15dから削除する(ステップ237)。そして、二重障害(Double Fault)の発生を検知し、その旨をフロントエンドI/F部12を介してホストシステムへ通知する(ステップ238)。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
次に、データパス制御部13は、DCバッファ15d内のこのユーザデータのDC値を1インクリメントする(ステップ223)。
その後、デステージングを行うユーザデータが他にあるかどうかを判定する(ステップ224)。
一方、デステージングを行うユーザデータが他にないと判定された場合、コントロール部11は、バックエンドI/F部14に対し、新しいユーザデータ及び新しいパリティデータのドライブへの書込みを指示する。これに従い、バックエンドI/F部14は、ドライブに対し、WRITE要求を行う。そして、新しいユーザデータ及び新しいパリティデータは、データパス制御部13を介して、ドライブへ転送される。
尚、本実施の形態では、ステージング時の処理はセクタを単位として行い、デステージング時の処理はスライスを単位として行うようにした。しかしながら、ステージング時の処理を、同じディスク内の複数のセクタからなるストリップを単位として行い、デステージング時の処理を、複数のスライスの集合であるストライプを単位として行うようにしてもよい。
また、本実施の形態では、冗長コードとDC値とをXOR演算することにより、DC値をセクタデータに付加するようにした。しかしながら、DC値は、冗長コード以外の部分に埋め込むことにより、セクタデータに付加してもよい。また、DC値の埋め込み方法としても、XOR演算に限らず、種々の方法を採用することができる。
更に、本実施の形態では、ユーザデータのDC値をそのユーザデータに対応するパリティデータに付加するようにした。しかしながら、必ずしもそのような形態に限られず、例えば、他のユーザデータに付加するような形態であっても構わない。
また、本実施の形態では、PDC値とDDC値とが一致する場合は、どこにも本問題は発生していないものとして処理していた。しかしながら、このような場合に、セカンダリパリティセクタにおいて本問題が発生しているかどうかを検証するようにしてもよい。具体的には、ステップ221でPDC値とDDC値とが一致すると判定され、かつ、ステップ206でDCバッファ15d内のPDC値とプライマリパリティセクタから読み込まれたPDC値とが一致しないと判定され、しかも、ステップ208でPDC値が未検証であると判定されたような場合である。この場合において、セカンダリパリティデータを読み込み、セカンダリパリティデータから取得したSDC値をDCバッファ15d内のPDC値と比較することにより、本問題の発生を検知してもよい。また、本問題の発生が検知された場合には、復旧処理を行うようにしてもよい。
更には、PDC値、SDC値、DDC値を同時に照合するような形態であってもよい。この場合、これら3つの値の中で1つだけ他の2つと値が異なるものがあれば、その値の取得元のセクタにおいて本問題が発生したと判定することができる。
また、比較対象となるDC値を、そのユーザデータの書込み/読出しと同期して書込み/読出しが行われるデータ(例えば、そのユーザデータに対するパリティデータ)に付加するようにした。このような構成により、ドライブからの読出しパフォーマンスに影響を与えることなく、ストレージサブシステムがホストシステムに対して不正なデータを返してしまうという問題を回避することもできるようになった。
Claims (11)
- 記憶装置上の不正データを検出するための装置であって、
前記記憶装置の第1のセクタに記憶されるべきデータの更新に伴って更新される履歴情報を、当該データと、前記記憶装置の第2のセクタに記憶されるべきデータと、前記記憶装置の第3のセクタに記憶されるべきデータとに付加する付加手段と、
前記第1のセクタ、前記第2のセクタ、前記第3のセクタにそれぞれ記憶されているデータに付加された履歴情報を照合することにより、当該第1のセクタ、当該第2のセクタ、当該第3のセクタにそれぞれ記憶されているデータを検証する検証手段と
を備えた、装置。 - 前記付加手段は、前記第1のセクタに記憶されるべきデータの更新に伴って更新される履歴情報を、当該データの誤りを検出するための冗長コード、前記第2のセクタに記憶されるべきデータの誤りを検出するための冗長コード、及び、前記第3のセクタに記憶されるべきデータの誤りを検出するための冗長コードに埋め込む、請求項1記載の装置。
- 前記第1のセクタへのアクセスに伴って、前記第2のセクタへのアクセスが行われる、請求項1記載の装置。
- 前記第1のセクタに記憶されるデータの誤りを検出するためのパリティが、前記第2のセクタに記憶される、請求項1記載の装置。
- 前記第1のセクタ、前記第2のセクタ、前記第3のセクタにそれぞれ記憶されているデータに付加された履歴情報のうち、1つだけ異なる履歴情報が付加されたデータを、不正データとして特定する特定手段を更に備えた、請求項1記載の装置。
- 同期して処理される複数のデータを分散して記憶する複数の記憶装置上の不正データを検出するための方法であって、
前記複数のデータのうち一のデータの更新に伴って更新される履歴情報を、当該一のデータと、前記複数のデータのうちの他のデータと、前記複数のデータのうちの更に他のデータとに付加するステップと、
前記一のデータを前記記憶装置の第1のセクタに書き込み、前記他のデータを前記記憶装置の第2のセクタに書き込み、前記更に他のデータを前記記憶装置の第3のセクタに書き込むステップと、
前記第1のセクタに記憶されているデータと前記第2のセクタに記憶されているデータと前記第3のセクタに記憶されているデータとを読み出すステップと、
前記第1のセクタに記憶されているデータに付加された履歴情報と前記第2のセクタに記憶されているデータに付加された履歴情報とが整合しない場合に、これらの履歴情報のいずれかと前記第3のセクタに記憶されているデータに付加された履歴情報とを照合することにより、前記第1のセクタ、前記第2のセクタ、前記第3のセクタにそれぞれ記憶されているデータを検証するステップと
を含む、方法。 - 前記付加するステップでは、前記一のデータの更新に伴って更新される履歴情報を、当該一のデータの誤りを検出するための冗長コード、前記他のデータの誤りを検出するための冗長コード、及び、前記更に他のデータの誤りを検出するための冗長コードに埋め込む、請求項6記載の方法。
- 前記第1のセクタに記憶されるデータの誤りを検出するためのパリティが、前記第2のセクタに記憶される、請求項6記載の方法。
- 記憶装置に接続されたコンピュータに、
複数のデータのうちの第1のデータの更新に伴って更新される履歴情報を取得する機能と、
前記履歴情報を、前記第1のデータと、前記複数のデータのうちの第2のデータと、前記複数のデータのうちの第3のデータとに付加する機能と、
前記第1のデータを前記記憶装置の第1のセクタに書き込み、前記第2のデータを前記記憶装置の第2のセクタに書き込み、前記第3のデータを前記記憶装置の第3のセクタに書き込む機能と
を実現させるためのプログラム。 - 前記付加する機能では、前記履歴情報を、前記第1のデータの誤りを検出するための冗長コード、前記第2のデータの誤りを検出するための冗長コード、及び、前記第3のデータの誤りを検出するための冗長コードに埋め込む、請求項9記載のプログラム。
- 前記第2のデータは、前記第1のデータの誤りを検出するためのパリティである、請求項9記載のプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004349947A JP4114877B2 (ja) | 2004-12-02 | 2004-12-02 | 不正データを検出するための装置、方法、及びプログラム |
CN200510127040.3A CN1808611B (zh) | 2004-12-02 | 2005-11-29 | 检测不准确数据的设备和方法 |
US11/292,563 US7689869B2 (en) | 2004-12-02 | 2005-12-02 | Unit, method and program for detecting imprecise data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004349947A JP4114877B2 (ja) | 2004-12-02 | 2004-12-02 | 不正データを検出するための装置、方法、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006164319A JP2006164319A (ja) | 2006-06-22 |
JP4114877B2 true JP4114877B2 (ja) | 2008-07-09 |
Family
ID=36597608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004349947A Expired - Fee Related JP4114877B2 (ja) | 2004-12-02 | 2004-12-02 | 不正データを検出するための装置、方法、及びプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US7689869B2 (ja) |
JP (1) | JP4114877B2 (ja) |
CN (1) | CN1808611B (ja) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006268524A (ja) * | 2005-03-24 | 2006-10-05 | Fujitsu Ltd | 記憶装置、その制御方法及びプログラム |
JP4920291B2 (ja) * | 2006-04-18 | 2012-04-18 | 株式会社日立製作所 | 計算機システム、アクセス制御方法及び管理計算機 |
JP4425904B2 (ja) | 2006-12-21 | 2010-03-03 | 富士通株式会社 | ライト抜け検出装置、ライト抜け検出方法およびライト抜け検出プログラム |
JP2008165582A (ja) * | 2006-12-28 | 2008-07-17 | Hitachi Ltd | 記憶システム及びデータ保証方法 |
JP5331323B2 (ja) * | 2007-09-26 | 2013-10-30 | 株式会社日立製作所 | ストレージサブシステム及びその制御方法 |
JP2009104420A (ja) | 2007-10-23 | 2009-05-14 | Hitachi Ltd | 記憶制御装置及び記憶装置の障害検出方法 |
US8140909B2 (en) * | 2008-02-22 | 2012-03-20 | International Business Machines Corporation | Efficient method to detect disk write errors |
JP4959630B2 (ja) * | 2008-05-23 | 2012-06-27 | 株式会社東芝 | データ記憶装置 |
US9411810B2 (en) * | 2009-08-27 | 2016-08-09 | International Business Machines Corporation | Method and apparatus for identifying data inconsistency in a dispersed storage network |
GB0915598D0 (en) * | 2009-09-07 | 2009-10-07 | St Microelectronics Res & Dev | Error detection |
US8554741B1 (en) | 2010-06-16 | 2013-10-08 | Western Digital Technologies, Inc. | Timeline application for log structured storage devices |
US8850114B2 (en) | 2010-09-07 | 2014-09-30 | Daniel L Rosenband | Storage array controller for flash-based storage devices |
JP5849400B2 (ja) * | 2011-02-08 | 2016-01-27 | コニカミノルタ株式会社 | 画像形成方法および画像形成装置 |
AT513305A1 (de) * | 2012-09-13 | 2014-03-15 | Anton Matev | Verfahren zur Prüfung einzelner Zahlungsbelege und Handelsrechnungen |
JP6140093B2 (ja) * | 2014-03-18 | 2017-05-31 | 株式会社東芝 | キャッシュメモリ、誤り訂正回路およびプロセッサシステム |
US9619326B2 (en) * | 2014-12-09 | 2017-04-11 | Western Digital Technologies, Inc. | Methods and systems for implementing redundancy in memory controllers |
KR102227636B1 (ko) * | 2014-12-31 | 2021-03-16 | 삼성디스플레이 주식회사 | 표시 장치용 데이터 저장 장치 및 이의 저장 방법 |
JP2019003163A (ja) * | 2017-06-20 | 2019-01-10 | 富士通株式会社 | 情報処理装置、情報処理方法、及びプログラム |
CN110244684A (zh) * | 2019-04-24 | 2019-09-17 | 四川中鼎智能技术有限公司 | 基于空压机储气罐压力数据关联的诊断控制方法、系统、存储介质和终端 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002025188A (ja) * | 2000-07-04 | 2002-01-25 | Hitachi Ltd | 情報記憶装置、信号処理回路 |
JP2001338468A (ja) | 2000-05-26 | 2001-12-07 | Hitachi Ltd | 記憶装置の制御方法および記憶装置 |
JP2003271909A (ja) * | 2002-03-18 | 2003-09-26 | Sankyo Seiki Mfg Co Ltd | メモリ内容の書き込み方法およびカードリーダにおけるメモリ内容の書き込み方法 |
US6985996B1 (en) * | 2002-12-13 | 2006-01-10 | Adaptec, Inc. | Method and apparatus for relocating RAID meta data |
JP4391170B2 (ja) * | 2003-09-05 | 2009-12-24 | 株式会社日立製作所 | データ転送装置の制御方法、データ転送回路、及びディスクアレイ装置 |
-
2004
- 2004-12-02 JP JP2004349947A patent/JP4114877B2/ja not_active Expired - Fee Related
-
2005
- 2005-11-29 CN CN200510127040.3A patent/CN1808611B/zh not_active Expired - Fee Related
- 2005-12-02 US US11/292,563 patent/US7689869B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1808611A (zh) | 2006-07-26 |
US20060136777A1 (en) | 2006-06-22 |
US7689869B2 (en) | 2010-03-30 |
CN1808611B (zh) | 2010-07-21 |
JP2006164319A (ja) | 2006-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4114877B2 (ja) | 不正データを検出するための装置、方法、及びプログラム | |
US7873878B2 (en) | Data integrity validation in storage systems | |
JP5768587B2 (ja) | ストレージシステム、ストレージ制御装置およびストレージ制御方法 | |
US7783922B2 (en) | Storage controller, and storage device failure detection method | |
US7421535B2 (en) | Method for demoting tracks from cache | |
US6467023B1 (en) | Method for logical unit creation with immediate availability in a raid storage environment | |
US7131050B2 (en) | Optimized read performance method using metadata to protect against drive anomaly errors in a storage array | |
US20090083584A1 (en) | Method for maintaining track data integrity in magnetic disk storage devices | |
US20090228744A1 (en) | Method and system for cache-based dropped write protection in data storage systems | |
US7302603B2 (en) | Host-initiated data reconstruction for improved RAID read operations | |
JP2006146833A (ja) | ディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法 | |
JPH05505264A (ja) | データ記憶装置における書込みオペレーション識別子の不揮発性メモリ記憶 | |
JP4324088B2 (ja) | データ複製制御装置 | |
CN106168920B (zh) | 控制包括只读闪速数据存储设备的独立磁盘冗余阵列 | |
JP2007011687A (ja) | ストレージシステム、ストレージ制御装置及びストレージ制御方法 | |
JP4491330B2 (ja) | ディスクアレイ装置とそのデータのリカバリ方法およびデータリカバリプログラム | |
US7730370B2 (en) | Apparatus and method for disk read checking | |
GB2402770A (en) | Writing version checking data for a data file onto two data storage systems. | |
US8418029B2 (en) | Storage control device and storage control method | |
JP4469822B2 (ja) | ディスクアレイ装置およびディスクアレイ装置のデータ管理方法 | |
JP2006072435A (ja) | ストレージシステムおよびデータ記録方法 | |
US7174476B2 (en) | Methods and structure for improved fault tolerance during initialization of a RAID logical unit | |
JP2003036146A (ja) | ディスクアレイ制御方式 | |
JP2005293119A (ja) | ディスクアレイ制御装置、同装置に適用されるデータ欠損検出時の処理方法及びプログラム | |
US20050081088A1 (en) | Array controller for disk array, and method for rebuilding disk array |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071029 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20071227 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20080122 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080129 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080304 |
|
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: 20080408 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20080411 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080411 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110425 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110425 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110425 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120425 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130425 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130425 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140425 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |