JP4114877B2 - 不正データを検出するための装置、方法、及びプログラム - Google Patents

不正データを検出するための装置、方法、及びプログラム Download PDF

Info

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
Application number
JP2004349947A
Other languages
English (en)
Other versions
JP2006164319A (ja
Inventor
善彦 寺下
徹 住吉
浩之 三好
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2004349947A priority Critical patent/JP4114877B2/ja
Priority to CN200510127040.3A priority patent/CN1808611B/zh
Priority to US11/292,563 priority patent/US7689869B2/en
Publication of JP2006164319A publication Critical patent/JP2006164319A/ja
Application granted granted Critical
Publication of JP4114877B2 publication Critical patent/JP4114877B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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

Description

本発明は、例えば、書き込むべきアドレスの誤りによって発生した、記憶装置上の不正データを検出するための装置等に関する。
ストレージサブシステムがホストシステムからのREADコマンドに対して不正なデータを返すことは、ユーザデータの喪失のみならず、システムダウン等の重大な障害を発生させる原因となる。このため、一般に、ストレージサブシステムでは、パリティ、ECC(Error Correcting Code)、CRC(Cyclic Redundancy Check)コード等の冗長データを各データに付加し、各データの読み出し時にその冗長データを検査することにより、不正なデータがホストシステムに返されることを防いでいる。
例えば、ミドルレンジ以上のRAIDサブシステムでは、キャッシュからディスクドライブへの書込み(デステージング)に際して、ユーザデータの最小単位である512バイトのセクタデータに対して8から16バイトの冗長コードを付加する。そして、ディスクドライブからキャッシュへの読込み(ステージング)に際して、この冗長コードを検査するようにしている。これにより、RAIDコントローラのバックエンドインターフェース以降のデータパスにおけるエラー検出を行っている。尚、この場合、冗長コードは、512バイトのセクタデータから一意に求められるデータであり、LRC(Longitudinal Redundancy Check)やCRC(Cyclical Redundancy Check)等に基づくコードが一般的に使用されている。
ところで、実際のディスクドライブへの書込みにおいては、振動等の外因によりヘッドシークに一時的な異常が発生し、ドライブがWRITE要求で指定されたLBA(Logical Block Address)とは異なるLBAにデータを書き込む場合がある。しかし、このような場合、上記の冗長コードでは、ストレージサブシステム側でこの書込み位置の誤りを検知できないことがある。
このことを、図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に書き込むことになる。
ところが、図示するように、ドライブのシークエラー等により、LBA1に書き込むべきデータがLBA2に書き込まれたとする。即ち、LBA1には、本来、手順5で上書きされるはずであったセクタデータ1及びLRC1が記憶されたままになっているとする。
このような状況において、手順6で、LBA1からセクタデータ1及びLRC1を読み込み、手順7で、LRC1を検査すると、セクタデータ1とLRC1との整合はとれていると判断されることになる。即ち、手順6で本来返されるべきではない不正なデータが返されたにもかかわらず、手順7でそのことが検出できないのである。
また、このような状況において、図示しないが、LBA2からセクタデータ1’及びLRC1’を読み込んだとする。この場合も、本来LBA1に書き込まれるはずであったデータが読み出され、しかも、セクタデータ1’とLRC1’との整合はとれているので、書込み位置の誤りは検出できないのである。
このようにして、ストレージサブシステムがホストシステムからのREADコマンドに対して不正なデータを返してしまうという問題(以下、「本問題」という)が発生する。
そこで、本問題に対し、LBA情報を冗長コードに含めることにより、ドライブが誤ったアドレスからデータを読み出したことを検知できるようにすることもある。この方法を採用すれば、書き込むべきLBAと実際に書込みが行われたLBAとが異なるデータについては、誤りを検出することが可能である。図8の例で言えば、手順5の後にLBA2からデータを読み込もうとした場合である。
しかしながら、この方法を採用しても、手順5の後にLBA1からデータを読み込もうとした場合には、誤りを検出することはできない。なぜなら、手順5で上書きされるはずであったが実際には上書きされなかったデータの冗長コードには、LBA1の情報が含まれるためである。従って、かかる方法を採用した場合も、本問題が発生する可能性は依然として残されている。
本問題の発生を検知する従来技術としては、ディクスドライブ装置やホストシステムが、データの書込み時に、書込み履歴情報をそのデータ及びディスク内の別の場所に記録しておき、データの読込み時に、それらの記録された書込み履歴情報を比較検証する方法があった(例えば、特許文献1参照。)。
特開2001−338468号公報(第5−6頁、第5−6図)
しかしながら、特許文献1の発明では、書込み履歴をセクタデータとは無関係な場所に保存することとなり、ドライブの容量を消費するという問題点がある。また、セクタデータとは別に書込み履歴を読み出す必要があるため、読出しパフォーマンスに影響を与えるという問題点もある。
本発明は、以上のような技術的課題を解決するためになされたものであって、その目的は、ドライブの容量を消費することなく、ストレージサブシステムがホストシステムに対して不正なデータを返してしまうという問題を回避することにある。
また本発明の他の目的は、ドライブからの読出しパフォーマンスに影響を与えることなく、ストレージサブシステムがホストシステムに対して不正なデータを返してしまうという問題を回避することにある。
かかる目的のもと、本発明では、あるセクタデータについての書込み履歴を他のセクタデータに付加して読出し時にそれらを検証するようにしている。即ち、本発明の装置は、記憶装置上の不正データを検出するためのものであり、記憶装置の第1のセクタに記憶されるべきデータの更新に伴って更新される履歴情報を、そのデータと、記憶装置の第2のセクタに記憶されるべきデータとに付加する付加手段と、第1のセクタに記憶されているデータに付加された履歴情報と、第2のセクタに記憶されているデータに付加された履歴情報とを照合することにより、第1のセクタに記憶されているデータ及び第2のセクタに記憶されているデータを検証する検証手段とを備えている。
また、本発明は、あるセクタデータについての書込み履歴を他のセクタデータに付加して読出し時にそれらを検証する方法として捉えることもできる。その場合、本発明の方法は、同期して処理される複数のデータを分散して記憶する複数の記憶装置上の不正データを検出するためのものであり、複数のデータのうち一のデータの更新に伴って更新される履歴情報を、その一のデータと、複数のデータのうちの他のデータに付加するステップと、その一のデータを記憶装置の第1のセクタに書き込み、他のデータを記憶装置の第2のセクタに書き込むステップと、第1のセクタに記憶されているデータと第2のセクタに記憶されているデータとを読み出すステップと、読み出された2つのデータにそれぞれ付加された履歴情報を照合することにより、その2つのデータを検証するステップとを含んでいる。
一方、本発明は、コンピュータに所定の機能を実現させるプログラムとして捉えることもできる。その場合、本発明のプログラムは、記憶装置に接続されたコンピュータに、記憶装置の第1のセクタに記憶された第1のデータの更新に伴って更新される第1の履歴情報をその第1のデータから取得し、記憶装置の第2のセクタに記憶された第2のデータの更新に伴って更新される第2の履歴情報をその第2のデータから取得する機能と、第1の履歴情報と第2の履歴情報とを照合することにより、第1のデータ又は第2のデータを検証する機能とを実現させるものである。
本発明によれば、ドライブの容量を消費することなく、ストレージサブシステムがホストシステムに対して不正なデータを返してしまうという問題を回避することができるようになる。
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。
本実施の形態は、RAID5等のパリティによるデータプロテクションを行うディスクアレイシステムに本発明を適用したものである。このようなディスクアレイシステムでは、ホストシステムから送られたデータをセクタの大きさで区切ることによって得られる複数のセクタデータ(以下、「ユーザデータ」という)と、これらのユーザデータの不正を検出し修復するためのセクタデータ(以下、「パリティデータ」という)とが、複数のディスクに分散して記録される。また、ユーザデータが記録されるセクタ(以下、「データセクタ」という)には、そのユーザデータが正しいかどうかを検査するための冗長コードを記録す領域が付随して設けられ、パリティデータが記録されるセクタ(以下、「パリティセクタ」という)には、そのパリティデータが正しいかどうかを検査するための冗長コードを記録する領域が付随して設けられている。
本実施の形態では、このようなディスクアレイシステムの構成に着目し、ユーザデータの更新に伴って更新される書込み履歴情報を、そのユーザデータが記録されるデータセクタの冗長コード領域と、そのユーザデータに対するパリティデータが記録されるパリティセクタの冗長コード領域とに設けるようにしている。
ここで、書込み履歴情報としては、いかなる情報を採用してもよいが、本実施の形態では、ユーザデータの更新時に1インクリメントされるカウンタを採用することとする。その場合、書込み履歴情報は、ユーザデータのデステージングの回数を示すカウンタとして把握することができるので、以下では、そのようなカウンタをDC(Destaging Counter)と呼び、DCに設定された値のことをDC値と呼ぶこととする。
次に、図1及び図2を参照しながら、本実施の形態で想定するRAIDの構成におけるユーザデータ、パリティデータ、DC値の配置について詳しく説明する。
尚、本実施の形態では、便宜上、データセクタの冗長コード領域に設けられるDCをDDC(Data DC)と称し、DDCに設定された値をDDC値と称する。
また、着目するユーザデータに関連付けられたパリティデータの中から、第1優先のパリティデータ(プライマリパリティデータ)及び第2優先のパリティデータ(セカンダリパリティデータ)を決めておく。そして、プライマリパリティデータが記録されたパリティセクタ(プライマリパリティセクタ)の冗長コード領域に設けられたDCをPDC(Primary DC)と称し、PDCに設定された値をPDC値と称する。一方、セカンダリパリティデータが記録されたパリティセクタ(セカンダリパリティセクタ)の冗長コード領域に設けられたDCをSDC(Secondary DC)と称し、SDCに設定された値をSDC値と称する。
例えば、RAID5等であれば、着目するユーザデータが記録されたデータセクタと同一スライスに存在するパリティセクタをプライマリパリティセクタとし、その冗長コード領域に保持されるDCをPDCとする。そして、着目するユーザデータが記録されたデータセクタと異なるスライスに存在するパリティセクタをセカンダリパリティセクタとし、その冗長コード領域に保持されるDCをSDCとすることが考えられる。
また、RAID50等であれば、ミラーリングされたスライスの一方に存在するパリティセクタをプライマリパリティセクタとし、その冗長コード領域に保持されるDCをPDCとする。そして、ミラーリングされたスライスの他方に存在するパリティセクタをセカンダリパリティセクタとし、その冗長コード領域に保持されるDCをSDCとすることが考えられる。
図1は、RAID5構成について示した図である。
図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は、RAID50構成について示した図である。
図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が保持されている。
次に、図3を参照しながら、冗長コード領域へのDC値の格納方法について説明する。尚、図3は、図1のRAID5の構成におけるDC値の格納方法を示している。
既に述べたように、各ユーザデータのDC値は、そのユーザデータの冗長コード(RCx)、及び、そのユーザデータに対応するパリティデータの冗長コード(RCpx)として、各セクタの冗長コード領域に格納される。具体的には、まず、RCG(Redundant Code Generator)が、既存の手法により各セクタデータから冗長コードを生成する。そして、この生成された冗長コードと格納すべきDC値とをXOR演算して得られる新たな冗長コードが各セクタの冗長コード領域に格納される。
例えば、ユーザデータ2−1の冗長コードRC2−1にDC値を格納する場合は、次のようになる。
まず、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の場合と同様にして行われる。
次に、このようなDC値を含む冗長コードの生成及び検証を行うストレージサブシステムの構成及び動作の例について詳細に説明する。
図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とを備える。
尚、図4は本実施の形態を実現するコンピュータのハードウェア構成を例示するに過ぎず、本実施の形態を適用可能であれば、他の種々の構成を取ることができる。例えば、ビデオカード10dを設ける代わりに、ビデオメモリのみを搭載し、CPU10aにてイメージデータを処理する構成としてもよいし、外部記憶装置として、ATA(AT Attachment)やSCSI(Small Computer System Interface)等のインターフェースを介してCD−R(Compact Disc Recordable)やDVD−RAM(Digital Versatile Disc Random Access Memory)のドライブを設けてもよい。
図5は、本実施の形態におけるストレージサブシステムの構成を示した図である。このストレージサブシステムは、コントロール部11と、フロントエンドインターフェース部(以下、「フロントエンドI/F部」という)12と、データパス制御部13と、バックエンドインターフェース部(以下、「バックエンドI/F部」という)14と、キャッシュ部15と、ディスクドライブ16、16、…、16とから構成されている。
コントロール部11は、ストレージサブシステム全体を制御する部分である。尚、コントロール部11は、データパス制御部13から渡された情報に基づいて、データセクタ、プライマリパリティセクタ、セカンダリパリティセクタのうち、本問題が発生したセクタを特定する機能も有しており、この機能は「特定手段」として把握することができる。
フロントエンドI/F部12は、ホストシステムとストレージサブシステムとの間のインターフェースとして機能する部分である。
また、データパス制御部13は、バックエンドI/F部14とキャッシュ部15との間のデータパスを制御する部分であり、冗長コード生成部13a、冗長コード検証部13b、DDC記憶領域13c、SDC記憶領域13d、オールドデータ記憶領域13eを更に含んでいる。尚、データパス制御部13は、冗長コード生成部13aにより生成された冗長コードをデータに付加する機能も有しており、この機能は「付加手段」として把握することができる。また、冗長コード検証部13bは、「検証手段」として把握することができる。
バックエンドI/F部14は、ストレージサブシステムとディスクドライブ16、16、…、16との間のインターフェースとして機能する部分である。
更に、キャッシュ部15は、ディスクドライブ16、16、…、16から読み込まれたユーザデータ、パリティデータ、DC値をキャッシュする部分であり、キャッシュ制御部15a、ユーザデータ記憶領域15b、パリティデータ記憶領域15c、DCバッファ15dを更に含んでいる。
ディスクドライブ16、16、…、16は、ストレージサブシステムによる処理対象となるユーザデータ及びパリティデータを記憶するための記憶装置であり、図1のディスク1〜3、図2のディスク1〜6に相当する。
次に、データパス制御部13内部の構成について説明する。
冗長コード生成部13aは、ドライブへのWRITE要求に応じてキャッシュ部15からバックエンドI/F部14へユーザデータを転送する際に、冗長コードを計算する機能を有する。冗長コードの計算は、DCバッファ15d内の該当するDC値を読み出し、ユーザデータから従来の方法で求めた冗長コードとその読み出されたDC値とをXOR演算することにより行う。
また、冗長コード検証部13bは、ドライブへのREAD要求に応じてバックエンドI/F部14からキャッシュ部15へユーザデータを転送する際に、冗長コードを検証する機能を有する。冗長コードの検証は、ユーザデータから従来の方法で求めた冗長コードとドライブから読み出された冗長コードとをXOR演算することによりDC値を求め、このDC値とDCバッファ15d内のDC値とを比較することにより行う。
DDC記憶領域13cは、ユーザデータの冗長コードから取得したDDC値を一時的に記憶する領域であり、SDC記憶領域13dは、セカンダリパリティデータの冗長コードから取得したSDC値を一時的に記憶する領域である。オールドデータ記憶領域13eは、デステージングに先立って読み出された変更前のデータ(以下、「オールドデータ」という)を一時的に記憶する領域である。
尚、これらの機能部分は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、ストレージサブシステムを実現するコンピュータのCPU10aが、冗長コード生成部13a、冗長コード検証部13bの機能を実現するプログラムを外部記憶装置からメインメモリ10cに読み込み、メインメモリ10c上のDDC記憶領域13c、SDC記憶領域13d、オールドデータ記憶領域13eに記憶された情報を必要に応じて参照しながら処理を行う。
次に、キャッシュ部15内部の構成について説明する。
キャッシュ制御部15aは、ユーザデータ記憶領域15b、パリティデータ記憶領域15c、DCバッファ15dへの情報の出し入れ等を制御する機能を有する。例えば、ユーザデータ記憶領域15b、パリティデータ記憶領域15c、DCバッファ15dにどのような情報が保持されているか、及び、DCバッファ15dに記憶されたDC値が検証済かどうかについても、キャッシュ制御部15aが管理する。
ユーザデータ記憶領域15bは、ディスクドライブ16、16、…、16から読み込まれたユーザデータを記憶するための領域であり、パリティデータ記憶領域15cは、ディスクドライブ16、16、…、16から読み込まれたパリティデータを記憶するための領域である。
DCバッファ15dは、プライマリパリティデータの冗長コードから取得したDC値を、ユーザデータの冗長コードから取得したDC値の比較対象として記憶しておく領域である。尚、DCバッファ15dに保持できるDC値は、RAID5等の場合であれば、ユーザデータ記憶領域15bに保持できるユーザデータのブロック数の2倍であり、RAID50等の場合であれば、ユーザデータ記憶領域15bに保持できるユーザデータのブロック数と同数である。また、DCバッファ15dは、キャッシュ部15にユーザデータ記憶領域15bを確保する時に、コントロール部11からの要求により、キャッシュ制御部15aにより設定される。
次に、本実施の形態におけるストレージサブシステムの動作について説明する。
ストレージサブシステムにおけるDC値の操作は、ディスクドライブ16〜16からキャッシュ部15へのセクタデータの読込み(ステージング)の際、及び、キャッシュ部15からディスクドライブ16〜16へのセクタデータの書出し(デステージング)の際に行われる。従って、以下では、ステージング時の動作と、デステージング時の動作とを分けて説明する。
まず、図6を参照して、ステージング時の動作を説明する。尚、図6は、1つのユーザデータをステージングする際の動作について示している。一般には、ホストシステムからのREADコマンドに対し、少なくとも1つのスライスに含まれる複数のユーザデータを返すことになるが、その場合は、それら複数のユーザデータの全てについて図6の動作を行うものと考えればよい。また、パリティデータは、ユーザデータが保持するDC値の照合対象となるDC値を保持するものであるので、図6の動作はパリティデータについては行われない。
まず、コントロール部11は、ステージングを行うユーザデータのDC値がDCバッファ15d内に存在するかどうかを判定する(ステップ101)。DCバッファ15dには、プライマリパリティデータから過去に取得したことのあるDC値が格納されているので、その中に今回比較対象とすべきDC値が存在するかどうかを判定するのである。
その結果、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値は、検証済とはしない。
次に、コントロール部11は、ステージングを行うユーザデータの読込みをバックエンドI/F部14に指示する。これに従い、バックエンドI/F部14は、ドライブに対し、ユーザデータのREAD要求を行う。そして、読み込まれたユーザデータは、データパス制御部13を介して、キャッシュ部15のユーザデータ記憶領域15bに転送される(ステップ104)。
このデータ転送時に、冗長コード検証部13bは、読み出されたユーザデータから冗長コードを生成する。そして、この生成された冗長コードとユーザデータに付加された冗長コードとをXOR演算することによりDDC値を取得し、これをDCバッファ15d内のPDC値と比較する(ステップ105)。
その結果、PDC値とDDC値とが一致した場合、PDC値を検証済とする(ステップ106)。即ち、DCバッファ15dに記憶されたPDC値が、次回以降のDDC値との比較対象として信頼できるものであることを、キャッシュ制御部15aに把握させておくのである。この場合は、そのままステージング処理を完了する。
一方、PDC値とDDC値とが一致しない場合、冗長コード検証部13bは、取得したDDC値をDDC記憶領域13cに一時保存し(ステップ108)、DC値の不一致の発生をコントロール部11に通知する。
これに応じて、コントロール部11は、PDC値が検証済かどうかを調べる(ステップ109)。
その結果、PDC値が検証済の場合、コントロール部11は、ステップ104で読み込まれたユーザデータが記録されていたデータセクタにおいて本問題が発生したことを検知し、その旨をフロントエンドI/F部12を介してホストシステムへ通知する(ステップ110)。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
一方、PDC値が検証済でない場合、コントロール部11は、バックエンドI/F部14に対し、セカンダリパリティデータの読込みを指示する。これに従い、バックエンドI/F部14は、ドライブに対し、セカンダリパリティデータのREAD要求を行う。そして、読み込まれたセカンダリパリティデータは、データパス制御部13に転送される(ステップ111)。
このデータ転送時に、冗長コード検証部13bは、読み出されたセカンダリパリティデータから冗長コードを生成する。そして、この生成された冗長コードとセカンダリパリティデータに付加された冗長コードとをXOR演算することによりSDC値を取得し、これを、SDC記憶領域13dに一時保存すると共に、DCバッファ15d内のPDC値と比較する(ステップ112)。
その結果、PDC値とSDC値とが一致した場合、冗長コード検証部13bは、PDC値を検証済みとする(ステップ113)。そして、ステップ104で読み込まれたユーザデータが記録されていたデータセクタにおいて本問題が発生したことを検知し、その旨をフロントエンドI/F部12を介してホストシステムへ通知する(ステップ110)。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
一方、PDC値とSDC値とが一致しない場合、SDC記憶領域13dに一時保存されSDC値とDDC記憶領域13cに一時保存されたDDC値とを比較する(ステップ114)。
その結果、SDC値とDDC値とが一致した場合、冗長コード検証部13bは、DDC記憶領域13cに一時保存されたDDC値によってDCバッファ15d内のPDC値を上書きし、PDC値を検証済とする(ステップ115)。そして、プライマリパリティセクタにおいて本問題が発生したことを検知し、その旨をフロントエンドI/F部12を介してホストシステムへ通知する(ステップ116)。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
一方、SDC値とDDC値とが一致しない場合、コントロール部11は、PDC値をDCバッファ15dから削除する(ステップ117)。そして、二重障害(Double Fault)の発生を検知し、その旨をフロントエンドI/F部12を介してホストシステムへ通知する(ステップ118)。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
次に、図7−1及び図7−2を参照して、デステージング時の動作を説明する。尚、図7−1及び図7−2は、スライス単位でデステージングする際の動作について示している。例えば、複数のユーザデータの一部しか変更しない場合であっても、その変更によってパリティデータも変更されるため、スライス単位で処理を行う必要があるのである。
まず、コントロール部11は、デステージング対象のスライスに存在するプライマリパリティデータがキャッシュ部15のパリティデータ記憶領域15cに存在するかどうかを判定する(ステップ201)。
その結果、プライマリパリティデータがパリティデータ記憶領域15cに存在すると判定された場合、処理はステップ211へ進む。
一方、プライマリパリティデータがパリティデータ記憶領域15cに存在しないと判定された場合、コントロール部11は、バックエンドI/F部14に対し、プライマリパリティデータの読込みを指示する。これに従い、バックエンドI/F部14は、ドライブに対し、プライマリパリティデータのREAD要求を行う。そして、読み込まれたプライマリパリティデータは、データパス制御部13を介して、キャッシュ部15のパリティデータ記憶領域15cに転送される(ステップ202)。
このデータ転送時に、冗長コード検証部13bは、読み出されたプライマリパリティデータから冗長コードを生成する。そして、この生成された冗長コードとプライマリパリティデータに付加された冗長コードとをXOR演算することによりPDC値を取得する(ステップ203)。
次に、コントロール部11は、このプライマリパリティデータが記録されていたプライマリパリティセクタの冗長コード領域に保持されていたPDC値がDCバッファ15d内に既に存在するかどうかを判定する(ステップ204)。ここで、冗長コード領域に複数のPDC値が保持されていれば、それらをまとめて判定の対象とする。例えば、図1のパリティデータ1であれば、PDC1−1、1−2がまとめて判定の対象となる。
尚、ステップ201でパリティデータが存在しないと判定されたにも関わらず、ステップ204でPDC値が存在すると判定されるのは、RAID5等の場合に限られ、RAID50等の場合には、このようなことは起こらない。RAID5等では、ユーザデータのDC値が、異なるスライスのパリティセクタの冗長コード領域にも存在しているのに対し、RAID50等では、ユーザデータのDC値が、同一のスライスのパリティセクタの冗長コード領域にしか存在しないためである。
ステップ204において、PDC値が存在しないと判定された場合は、ステップ203で取得したPDC値を単にDCバッファ15dに転送し(ステップ205)、ステップ211へ進む。この時、PDC値は検証済としない。
一方、PDC値が存在すると判定された場合は、ステップ203で取得したPDC値をDCバッファ15d内の対応するPDC値と比較する(ステップ206)。
その結果、ステップ203で取得したPDC値がDCバッファ15d内のPDC値と一致する場合は、PDC値を検証済とし(ステップ207)、ステップ211へ進む。
一方、ステップ203で取得したPDC値がDCバッファ15d内のPDC値と一致しない場合は、PDC値が検証済かどうかを調べる(ステップ208)。
その結果、PDC値が検証済の場合は、プライマリパリティセクタにおいて本問題が発生したことを検知し、その旨をフロントエンドI/F部12を介してホストシステムに通知し(ステップ210)、処理を終了する。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
一方、PDC値が検証済でない場合は、DCバッファ15d内のPDC値を、ステップ203で取得されたPDC値で上書きし(ステップ209)、ステップ211へ進む。この時、PDC値は検証済としない。
次に、コントロール部11は、デステージングを行うユーザデータの読込みをバックエンドI/F部14に指示する。これに従い、バックエンドI/F部14は、ドライブに対し、ユーザデータのREAD要求を行う。そして、読み込まれたユーザデータは、データパス制御部13のオールドデータ記憶領域13eに転送される(ステップ211)。
このデータ転送時に、冗長コード検証部13bは、読み出されたユーザデータから冗長コードを生成する。そして、この生成された冗長コードとユーザデータに付加された冗長コードとをXOR演算することによりDDC値を取得し、これをDCバッファ15d内のPDC値と比較する(ステップ221)。
その結果、PDC値とDDC値とが一致しない場合、冗長コード検証部13bは、取得したDDC値をDDC記憶領域13cに一時保存し(ステップ228)、DC値の不一致の発生をコントロール部11に通知する。
これに応じて、コントロール部11は、PDC値が検証済かどうかを調べる(ステップ229)。
その結果、PDC値が検証済の場合、コントロール部11は、ステップ104で読み込まれたユーザデータが記録されていたデータセクタにおいて本問題が発生したことを検知し、その旨をフロントエンドI/F部12を介してホストシステムへ通知する(ステップ230)。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
一方、PDC値が検証済でない場合、コントロール部11は、バックエンドI/F部14に対し、セカンダリパリティデータの読込みを指示する。これに従い、バックエンドI/F部14は、ドライブに対し、セカンダリパリティデータのREAD要求を行う。そして、読み込まれたセカンダリパリティデータは、データパス制御部13に転送される(ステップ231)。
このデータ転送時に、冗長コード検証部13bは、読み出されたセカンダリパリティデータから冗長コードを生成する。そして、この生成された冗長コードとセカンダリパリティデータに付加された冗長コードとをXOR演算することによりSDC値を取得し、これを、SDC記憶領域13dに一時保存すると共に、DCバッファ15d内のPDC値と比較する(ステップ232)。
その結果、PDC値とSDC値とが一致した場合、冗長コード検証部13bは、PDC値を検証済みとする(ステップ233)。そして、ステップ211で読み込まれたユーザデータが記録されていたデータセクタにおいて本問題が発生したことを検知し、その旨をフロントエンドI/F部12を介してホストシステムへ通知する(ステップ230)。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
一方、PDC値とSDC値とが一致しない場合、SDC記憶領域13dに一時保存されSDC値とDDC記憶領域13cに一時保存されたDDC値とを比較する(ステップ234)。
その結果、SDC値とDDC値とが一致した場合、冗長コード検証部13bは、DDC記憶領域13cに一時保存されたDDC値によってDCバッファ15d内のPDC値を上書きし、PDC値を検証済とする(ステップ235)。そして、プライマリパリティセクタにおいて本問題が発生したことを検知し、その旨をフロントエンドI/F部12を介してホストシステムへ通知する(ステップ236)。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
一方、SDC値とDDC値とが一致しない場合、コントロール部11は、PDC値をDCバッファ15dから削除する(ステップ237)。そして、二重障害(Double Fault)の発生を検知し、その旨をフロントエンドI/F部12を介してホストシステムへ通知する(ステップ238)。尚、その後、自律的、もしくは、ホストシステムからの指示により復旧処理が行われるが、その手順は、通常のRAIDシステムと同様であるのでここでは言及しない。
また、ステップ221において、PDC値とDDC値とが一致した場合、データパス制御部13は、オールドデータ記憶領域13eに記憶されたオールドデータと、パリティデータ領域15cに記憶されたパリティデータと、新しいユーザデータとのXOR演算を行い、新しいパリティデータを算出する(ステップ222)。尚、新しいパリティデータの算出は、ドライブからのデータ読込み時、データ転送を行いながらのXOR演算(オン・ザ・フライXOR)により行ってもよい。
次に、データパス制御部13は、DCバッファ15d内のこのユーザデータのDC値を1インクリメントする(ステップ223)。
その後、デステージングを行うユーザデータが他にあるかどうかを判定する(ステップ224)。
その結果、デステージングを行うユーザデータが他にあると判定された場合は、ステップ211に戻り、デステージングを行う全てのユーザデータについて同じ処理を行う。
一方、デステージングを行うユーザデータが他にないと判定された場合、コントロール部11は、バックエンドI/F部14に対し、新しいユーザデータ及び新しいパリティデータのドライブへの書込みを指示する。これに従い、バックエンドI/F部14は、ドライブに対し、WRITE要求を行う。そして、新しいユーザデータ及び新しいパリティデータは、データパス制御部13を介して、ドライブへ転送される。
このデータ転送時に、冗長コード生成部13aは、ユーザデータ及びパリティデータからそれぞれに対する冗長コードを生成する。そして、ユーザデータから生成された冗長コードとDCバッファ15d内のDC値とをXOR演算したものを新しい冗長コードとしてユーザデータに付加すると共に、パリティデータから生成された冗長コードとDCバッファ15d内のDC値とをXOR演算したものを新しい冗長コードとしてパリティデータに付加する(ステップ225)。尚、ユーザデータに付加する冗長コードを生成する際には、そのユーザデータのDC値のみを参照し、パリティデータに付加する冗長コードを生成する際には、そのパリティデータに対応する全てのユーザデータのDC値を参照する。
以上により、本実施の形態の動作は終了する。
尚、本実施の形態では、ステージング時の処理はセクタを単位として行い、デステージング時の処理はスライスを単位として行うようにした。しかしながら、ステージング時の処理を、同じディスク内の複数のセクタからなるストリップを単位として行い、デステージング時の処理を、複数のスライスの集合であるストライプを単位として行うようにしてもよい。
また、本実施の形態では、冗長コードとDC値とをXOR演算することにより、DC値をセクタデータに付加するようにした。しかしながら、DC値は、冗長コード以外の部分に埋め込むことにより、セクタデータに付加してもよい。また、DC値の埋め込み方法としても、XOR演算に限らず、種々の方法を採用することができる。
更に、本実施の形態では、ユーザデータのDC値をそのユーザデータに対応するパリティデータに付加するようにした。しかしながら、必ずしもそのような形態に限られず、例えば、他のユーザデータに付加するような形態であっても構わない。
更にまた、本実施の形態では、PDC値とDDC値とが一致しない場合には、次に、PDC値とSDC値とが一致するかどうかを判定するようにした。しかしながら、PDC値とDDC値とが一致しない場合には、次に、SDC値とDDC値とが一致するかどうかを判定するようにしてもよい。この場合、SDC値とDDC値とが一致すれば、プライマリパリティセクタにおいて本問題が発生したと判定することができ、SDC値とDDC値とが一致しなければ、データセクタにおいて本問題が発生したと判定することができる。
また、本実施の形態では、PDC値とDDC値とが一致する場合は、どこにも本問題は発生していないものとして処理していた。しかしながら、このような場合に、セカンダリパリティセクタにおいて本問題が発生しているかどうかを検証するようにしてもよい。具体的には、ステップ221でPDC値とDDC値とが一致すると判定され、かつ、ステップ206でDCバッファ15d内のPDC値とプライマリパリティセクタから読み込まれたPDC値とが一致しないと判定され、しかも、ステップ208でPDC値が未検証であると判定されたような場合である。この場合において、セカンダリパリティデータを読み込み、セカンダリパリティデータから取得したSDC値をDCバッファ15d内のPDC値と比較することにより、本問題の発生を検知してもよい。また、本問題の発生が検知された場合には、復旧処理を行うようにしてもよい。
更には、PDC値、SDC値、DDC値を同時に照合するような形態であってもよい。この場合、これら3つの値の中で1つだけ他の2つと値が異なるものがあれば、その値の取得元のセクタにおいて本問題が発生したと判定することができる。
以上述べたように、本実施の形態では、ユーザデータの更新に伴って更新されるDCをユーザデータに付加し、その比較対象となるDC値は、そのユーザデータを記録するに際して必ず記録することが必要となるデータ(例えば、そのユーザデータに対するパリティデータ)に付加するようにした。このような構成により、ドライブの容量を消費することなく、ストレージサブシステムがホストシステムに対して不正なデータを返してしまうという問題を回避することができるようになった。
また、比較対象となるDC値を、そのユーザデータの書込み/読出しと同期して書込み/読出しが行われるデータ(例えば、そのユーザデータに対するパリティデータ)に付加するようにした。このような構成により、ドライブからの読出しパフォーマンスに影響を与えることなく、ストレージサブシステムがホストシステムに対して不正なデータを返してしまうという問題を回避することもできるようになった。
本発明の実施の形態におけるユーザデータ、パリティデータ、DC値の配置の第1の例を示した図である。 本発明の実施の形態におけるユーザデータ、パリティデータ、DC値の配置の第2の例を示した図である。 本発明の実施の形態における冗長コードへのDC値の格納方法の例を示した図である。 本発明の実施の形態におけるストレージサブシステムを実現するコンピュータのハードウェア構成を示したブロック図である。 本発明の実施の形態におけるストレージサブシステムの機能構成を示したブロック図である。 本発明の実施の形態におけるステージング時の処理動作の例を示したフローチャートである。 本発明の実施の形態におけるデステージング時の処理動作の例を示したフローチャートである。 本発明の実施の形態におけるデステージング時の処理動作の例を示したフローチャートである。 従来技術における問題点を説明するための図である。
符号の説明
11…コントロール部、12…フロントエンドI/F部、13…データパス制御部、13a…冗長コード生成部、13b…冗長コード検証部、13c…DDC記憶領域、13d…SDC記憶領域、13e…オールドデータ記憶領域、14…バックエンドI/F部、15…キャッシュ部、15a…キャッシュ制御部、15b…ユーザデータ記憶領域、15c…パリティデータ記憶領域、15d…DCバッファ、16〜16…ディスクドライブ

Claims (11)

  1. 記憶装置上の不正データを検出するための装置であって、
    前記記憶装置の第1のセクタに記憶されるべきデータの更新に伴って更新される履歴情報を、当該データと、前記記憶装置の第2のセクタに記憶されるべきデータと、前記記憶装置の第3のセクタに記憶されるべきデータとに付加する付加手段と、
    前記第1のセクタ、前記第2のセクタ、前記第3のセクタにそれぞれ記憶されているデータに付加された履歴情報を照合することにより、当該第1のセクタ、当該第2のセクタ、当該第3のセクタにそれぞれ記憶されているデータを検証する検証手段と
    を備えた、装置。
  2. 前記付加手段は、前記第1のセクタに記憶されるべきデータの更新に伴って更新される履歴情報を、当該データの誤りを検出するための冗長コード前記第2のセクタに記憶されるべきデータの誤りを検出するための冗長コード、及び、前記第3のセクタに記憶されるべきデータの誤りを検出するための冗長コードに埋め込む、請求項1記載の装置。
  3. 前記第1のセクタへのアクセスに伴って、前記第2のセクタへのアクセスが行われる、請求項1記載の装置。
  4. 前記第1のセクタに記憶されるデータの誤りを検出するためのパリティが、前記第2のセクタに記憶される、請求項1記載の装置。
  5. 前記第1のセクタ、前記第2のセクタ、前記第3のセクタにそれぞれ記憶されているデータに付加された履歴情報のうち、1つだけ異なる履歴情報が付加されたデータを、不正データとして特定する特定手段を更に備えた、請求項1記載の装置。
  6. 同期して処理される複数のデータを分散して記憶する複数の記憶装置上の不正データを検出するための方法であって、
    前記複数のデータのうち一のデータの更新に伴って更新される履歴情報を、当該一のデータと、前記複数のデータのうちの他のデータと、前記複数のデータのうちの更に他のデータとに付加するステップと、
    前記一のデータを前記記憶装置の第1のセクタに書き込み、前記他のデータを前記記憶装置の第2のセクタに書き込み、前記更に他のデータを前記記憶装置の第3のセクタに書き込むステップと、
    前記第1のセクタに記憶されているデータと前記第2のセクタに記憶されているデータと前記第3のセクタに記憶されているデータとを読み出すステップと、
    前記第1のセクタに記憶されているデータに付加された履歴情報と前記第2のセクタに記憶されているデータに付加された履歴情報とが整合しない場合に、これらの履歴情報のいずれかと前記第3のセクタに記憶されているデータに付加された履歴情報とを照合することにより、前記第1のセクタ、前記第2のセクタ、前記第3のセクタにそれぞれ記憶されているデータを検証するステップと
    を含む、方法。
  7. 前記付加するステップでは、前記一のデータの更新に伴って更新される履歴情報を、当該一のデータの誤りを検出するための冗長コード前記他のデータの誤りを検出するための冗長コード、及び、前記更に他のデータの誤りを検出するための冗長コードに埋め込む、請求項6記載の方法。
  8. 前記第1のセクタに記憶されるデータの誤りを検出するためのパリティが、前記第2のセクタに記憶される、請求項6記載の方法。
  9. 記憶装置に接続されたコンピュータに、
    複数のデータのうちの第1のデータの更新に伴って更新される履歴情報を取得する機能と、
    前記履歴情報を、前記第1のデータと、前記複数のデータのうちの第2のデータと、前記複数のデータのうちの第3のデータとに付加する機能と、
    前記第1のデータを前記記憶装置の第1のセクタに書き込み、前記第2のデータを前記記憶装置の第2のセクタに書き込み、前記第3のデータを前記記憶装置の第3のセクタに書き込む機能と
    を実現させるためのプログラム。
  10. 前記付加する機能では、前記履歴情報を、前記第1のデータの誤りを検出するための冗長コード、前記第2のデータの誤りを検出するための冗長コード、及び、前記第3のデータの誤りを検出するための冗長コードに埋め込む請求項9記載のプログラム。
  11. 前記第2のデータは、前記第1のデータの誤りを検出するためのパリティである、請求項9記載のプログラム。
JP2004349947A 2004-12-02 2004-12-02 不正データを検出するための装置、方法、及びプログラム Expired - Fee Related JP4114877B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 株式会社日立製作所 データ転送装置の制御方法、データ転送回路、及びディスクアレイ装置

Also Published As

Publication number Publication date
JP2006164319A (ja) 2006-06-22
CN1808611A (zh) 2006-07-26
US20060136777A1 (en) 2006-06-22
US7689869B2 (en) 2010-03-30
CN1808611B (zh) 2010-07-21

Similar Documents

Publication Publication Date Title
US7689869B2 (en) Unit, method and program for detecting imprecise data
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
US8370715B2 (en) Error checking addressable blocks in storage
US7565573B2 (en) Data-duplication control apparatus
US7131050B2 (en) Optimized read performance method using metadata to protect against drive anomaly errors in a storage array
JP4409483B2 (ja) ストレージシステム、ストレージ制御装置及びストレージ制御方法
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
CN106168920B (zh) 控制包括只读闪速数据存储设备的独立磁盘冗余阵列
JPH05505264A (ja) データ記憶装置における書込みオペレーション識別子の不揮発性メモリ記憶
JP2006146833A (ja) ディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法
US7302603B2 (en) Host-initiated data reconstruction for improved RAID read operations
JP4491330B2 (ja) ディスクアレイ装置とそのデータのリカバリ方法およびデータリカバリプログラム
US20070036055A1 (en) Device, method and program for recovering from media error in disk array device
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) ディスクアレイ装置およびディスクアレイ装置のデータ管理方法
US7174476B2 (en) Methods and structure for improved fault tolerance during initialization of a RAID logical unit
JP2003036146A (ja) ディスクアレイ制御方式
JP2005293119A (ja) ディスクアレイ制御装置、同装置に適用されるデータ欠損検出時の処理方法及びプログラム

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