[go: up one dir, main page]

JP4805660B2 - ディスクライト抜け検出装置 - Google Patents

ディスクライト抜け検出装置 Download PDF

Info

Publication number
JP4805660B2
JP4805660B2 JP2005333719A JP2005333719A JP4805660B2 JP 4805660 B2 JP4805660 B2 JP 4805660B2 JP 2005333719 A JP2005333719 A JP 2005333719A JP 2005333719 A JP2005333719 A JP 2005333719A JP 4805660 B2 JP4805660 B2 JP 4805660B2
Authority
JP
Japan
Prior art keywords
check code
disk
data
update
write
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
JP2005333719A
Other languages
English (en)
Other versions
JP2006252530A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2005333719A priority Critical patent/JP4805660B2/ja
Priority to US11/348,320 priority patent/US7487289B2/en
Publication of JP2006252530A publication Critical patent/JP2006252530A/ja
Application granted granted Critical
Publication of JP4805660B2 publication Critical patent/JP4805660B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は,ディスクにライトされたデータをチェックする技術に関し,特に,ディスクのライト抜けを精度よく検出するディスクライト抜け検出装置に関する。
従来,ディスクにライトされるデータのデータ保証を行う場合,ディスクへのI/O(Input/Output)単位であるブロック毎にチェックコードを設け,このチェックコードを用いてデータ保証を行なってきた。
図19は1ブロックのフォーマット例である。図19に示すフォーマット例では,データ512バイトについて,誤りを検出するためのチェックコードであるBCC(Block Check Code)8バイトを付加し,1ブロック520バイトとしている。
なお,下記の特許文献1に,磁気ディスクアレイ装置及び磁気ディスクアレイ装置に於けるデータチェック方法について記載されている。
特開平10−171608号公報
ホストコンピュータからのデータのライト要求によりディスク上のデータを更新する場合,ライト要求された範囲が実際には更新されないことがある。
ここで,ホストコンピュータからのデータのライト要求に対して,ディスクが,ライト要求された範囲を新しいデータで更新した旨の応答を返すが,実際は更新されず,古いデータのままの部分が存在することを,ディスクのライト抜けという。
ディスクのライト抜けが,例えば,図19に示す1ブロック内のデータ512バイトのうち先頭4バイトが更新されなかったというように,1ブロックの一部で発生した場合には,BCCとデータとの関係が崩れる。従って,この場合には,BCCを用いてデータチェックを行う従来技術によって,ディスクのライト抜けを検出できる。
しかし,ディスクのライト抜けが1ブロックの全部で発生した場合,図19の1ブロック全てが古いデータとなる。この場合,古い1ブロックとしてはBCCとデータとの関係が維持される。従って,BCCを用いてデータチェックを行う従来技術によってはディスクのライト抜けを検出できないという問題がある。
ディスクのライト抜けは,例えば,ディスクコントロールシステムが,ホストコンピュータからデータのライト要求を受けて,一旦システム内のキャッシュメモリに更新データを格納し,後にキャッシュメモリ内の更新データをディスクにライトバックするときにも問題となる。キャッシュメモリ内の更新データをディスクにライトバックする前に,ディスクのライト抜けが生じていないかを調べる必要がある。
また,ディスクのライト抜けは,例えば,ディスクコントロールシステムが,ディスク内のデータをキャッシュメモリにステージングするときにも問題となる。ディスク内のデータをキャッシュメモリにステージングする際にも,ディスクのライト抜けが生じていないかを調べて,データのステージングの正当性をチェックする必要がある。
ここで,上記の特許文献1に記載された技術は,複数の磁気ディスク装置のうち,どの磁気ディスク装置のどのアドレスから読み出されたデータが誤りであるかを検出することを目的としており,1ブロックの全部で発生したディスクのライト抜けを精度よく検出することは意図していない。
本発明は,上記従来技術の問題を解決し,ディスクのライト抜けが1ブロックの全部で発生した場合でも,精度よくディスクのライト抜けを検出することが可能なディスクライト抜け検出装置の提供を目的とする。
特に,本発明は,例えば,キャッシュメモリ内の更新データをディスクにライトバックする前に,ディスクのライト抜けが生じているかをチェックすることを目的とする。
また,本発明は,例えば,ディスク内のデータをキャッシュメモリにステージングする際に,ディスクのライト抜けが生じているかをチェックすることを目的とする。
上記課題を解決するため,本発明は,コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出装置であって,前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,更新前の更新状態値と異なる新しい更新状態値を生成し,その新しい更新状態値を更新状態確認値としてメモリに記憶し,前記更新データと前記新しい更新状態値とを含む1管理単位をディスクにライトする更新状態設定手段と,ディスクからリードした1管理単位中の前記更新状態値と,前記メモリに記憶した更新状態確認値とを比較し,一致しない場合にディスクのライト抜けが発生したことを検出する更新状態チェック手段とを備えることを特徴とするディスクライト抜け検出装置である。
前記のディスクライト抜け検出装置において,前記更新状態値として,例えば,更新世代数,更新の時刻,もしくは前記複数のブロックの更新データから一意に生成されるチェックコード,またはそれらの組み合わせを用いることができる。
本発明によれば,ディスクのライト抜けが管理単位の全部で発生した場合でも,ディスクのライト抜けを精度よく検出することができる。
また,本発明は,コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出装置であって,前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,前記1管理単位中の更新データによって定まる更新状態値を算出し,前記更新データと前記更新状態値とを含む1管理単位をディスクにライトする更新状態設定手段と,ディスクからリードした1管理単位中の更新データによって定まる更新状態値を算出し,算出した更新状態値を更新状態確認値として,ディスクからリードした1管理単位中の更新状態値と前記更新状態確認値とを比較し,一致しない場合にディスクのライト抜けが発生したことを検出する更新状態チェック手段とを備えることを特徴とするディスクライト抜け検出装置である。
本発明は,ディスクからリードした更新状態値と,ディスクからリードしたデータから算出した更新状態確認値とを比較して,ディスクのライト抜けを検出する。従って,本発明によれば,ディスクライト抜け検出装置内に更新状態確認値を予め記憶させておかなくても,ディスクのライト抜けを検出することができる。
また,本発明は,コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出装置であって,前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,更新前の更新状態値と異なる新しい更新状態値を生成し,前記更新データと前記新しい更新状態値とを含む1管理単位を複数のディスクに冗長にライトする更新状態設定手段と,前記複数のディスクのそれぞれからリードした1管理単位中の前記更新状態値を比較し,一致しない場合にディスクのライト抜けが発生したことを検出する更新状態チェック手段とを備えることを特徴とするディスクライト抜け検出装置である。
本発明は,複数のディスクのそれぞれからリードした更新状態値を比較して,ディスクのライト抜けを検出する。従って,本発明によれば,ディスクライト抜け検出装置内に更新状態確認値を予め記憶させておかなくても,管理単位の全部で発生したディスクのライト抜けを検出できる。
本発明において,前記更新状態設定手段は,前記1管理単位中の更新データを含むブロックと前記履歴ブロックとの間に今回更新対象外のブロックが存在するとき,その更新対象外のブロックのデータをディスクからリードし,前記更新データを含むブロックのデータとマージするデータマージ手段を備えるようにしてもよい。
本発明によれば,更新データが設定されるブロックと,更新状態値が設定されるブロックのディスクへのライトを,1つのライト処理で行うことが可能となる。
また,本発明は,コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出装置であって,前記コンピュータがライト/リードの対象とする更新データを格納するキャッシュメモリと,前記更新データを設定する複数のブロックをディスクのライト抜けの検出対象の管理単位とし,前記キャッシュメモリに格納された前記更新データをディスクにライトバックするときに,ライトバック要求範囲が含まれる前記管理単位毎に第1のチェックコードを生成して,生成した第1のチェックコードを記憶手段内に記憶するチェックコード生成手段と,前記ディスクから前記キャッシュメモリにデータをステージングするときに,ステージング要求範囲が含まれる前記管理単位を前記ディスクからリードし,前記リードされた管理単位のうち,前記ステージング要求範囲のデータを前記キャッシュメモリに格納し,前記キャッシュメモリに格納された前記ステージング要求範囲のデータと,前記リードされた管理単位のうち,前記ステージング要求範囲以外のデータとから,第2のチェックコードを生成し,前記生成された第2のチェックコードを,前記記憶手段内に記憶されている,前記ステージング要求範囲が含まれる管理単位に対応する第1のチェックコードと比較し,一致しない場合にディスクのライト抜けが発生したことを検出するディスクライト抜け検出手段とを備えることを特徴とするディスクライト抜け検出装置である。
本発明によれば,ディスク内のデータをキャッシュメモリにステージングする際に,ディスクのライト抜けが生じているかをチェックすることが可能となる。
前記のディスクライト抜け検出装置において,前記ディスクライト抜け検出手段が,前記更新データをディスクにライトバックするときに,前記ライトバック要求範囲が含まれる前記管理単位をディスクからリードし,前記リードされた前記管理単位から第3のチェックコードを生成し,前記生成された第3のチェックコードを,前記記憶手段内に記憶されている,前記ライトバック要求範囲が含まれる管理単位に対応する第1のチェックコードと比較し,前記チェックコード生成手段が,前記ディスクライト抜け検出手段による前記第3のチェックコードと前記第1のチェックコードとの比較結果が一致である場合に,ライトバック要求範囲の更新データと,前記ディスクライト抜け検出手段によってリードされた管理単位のうち,前記ライトバック要求範囲以外のデータとから,新たな第1のチェックコードを生成し,前記生成された新たな第1のチェックコードを前記ライトバック要求範囲が含まれる前記管理単位に対応する第1のチェックコードとして前記記憶手段内に記憶する構成を採ることができる。
上記の構成を採る本発明によれば,キャッシュメモリ内の更新データをディスクにライトバックする前に,ディスクのライト抜けが生じているかをチェックすることが可能となる。
本発明によれば,ディスクのライト抜けが管理単位の全部で発生した場合でも,精度よくディスクのライト抜けを検出することができる。
また,本発明によれば,キャッシュメモリ内の更新データをディスクにライトバックする前に,ディスクのライト抜けが生じているかをチェックすることが可能となる。
また,本発明によれば,ディスク内のデータをキャッシュメモリにステージングする際に,ディスクのライト抜けが生じているかをチェックすることが可能となる。
本発明は,更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当てる。そして,更新データを設定する複数のブロックと更新状態値を設定する履歴ブロックとを更新状態チェック対象の1管理単位とする。
更新データをディスクにライトするときに,更新前の更新状態値と異なる新しい更新状態値を生成し,その新しい更新状態値を更新状態確認値としてメモリに記憶する。更新状態確認値は,更新状態のチェックの際に更新状態値と比較するデータである。
そして,更新データが設定された複数のブロックと新しい更新状態値が設定された1ブロックとを,まとめて1管理単位としてディスクにライトする。
ディスクへ1管理単位をライトした後に,更新状態のチェックを行う。すなわち,ディスクからその1管理単位中の更新状態値をリードし,メモリに記憶された更新状態確認値と比較する。そして,更新状態確認値と更新状態値とが不一致であれば,ディスクのライト抜けが発生したと判断する。
更新状態のチェックのタイミングとして,例えば,ディスクへのライトの延長,ディスクへの非同期パトロール,ホストコンピュータの要求によってディスクからリードする時などがある。
本発明においては,更新データが設定されるブロックとは別に,ディスクへライトする更新状態値に1ブロックを割り当てる。これは,ホストコンピュータからのライト要求による更新データの全てを更新状態確認値としてメモリ上に保持するとともに,更新状態値としてディスク上に保持するのは,処理効率と記憶効率がよくないからである。
本発明においては,更新状態確認値と更新状態値とを効率的に記憶するため,更新データが設定される複数ブロックに対応して1つの更新状態確認値および1つの更新状態値を設定する。
更新データが設定される複数のブロックの単位は,例えばRAID装置において1つのディスクへ連続してI/Oを行なうストリップや,ホストI/O処理単位などとする。
図1(A)は,メモリ上に設定される更新状態確認値を示す図である。図1(B)は,ディスク上にライトする更新データおよび更新状態値を示す図である。図1(B)において,ブロック#(0)からブロック#(N−1)までのNブロックが,更新データが設定されるブロックである。ブロック#(N)は,ディスクにライトする更新状態値が設定されるブロックである。
本発明では,図1(A)に示すように,メモリ8上に更新状態確認値を設定する。図1(B)に示すBlock#(N)に,更新状態値としてメモリ8上の更新状態確認値を設定し,更新データが設定されたBlock#(0)からBlock#(N−1)に付加する。
そして,Block#(0)からBlock#(N)までのN+1ブロックを管理単位としてディスクにライトする。
ディスクに管理単位をライトした後に,ディスクから更新状態値をリードし,リードした更新状態値とメモリ8上に設定された更新状態確認値とを比較する。
更新状態値と更新状態確認値とが一致する場合は,ディスク上に更新データが正常にライトされたと判断し,更新状態値と更新状態確認値とが不一致である場合は,ディスクのライト抜けが生じたと判断する。
なお,本発明において,ディスクのライト抜けを検出する手法は,上述した手法に限られるものではない。例えば,後述する本発明の実施例7では,更新データを設定する複数のブロック(例えば,16ブロック(8KB))を,ディスクのライト抜けの検出対象の管理単位とし,キャッシュメモリに格納された前記更新データをディスクにライトバックするときに,ライトバック要求範囲が含まれる前記管理単位毎にチェックコードを生成して,生成したチェックコードを記憶手段内に記憶する。
そして,後述するように,実施例7では,ディスクからキャッシュメモリにデータをステージングするときに,ステージング要求範囲が含まれる管理単位をディスクからリードし,リードされた管理単位のうち,ステージング要求範囲のデータをキャッシュメモリに格納し,キャッシュメモリに格納されたステージング要求範囲のデータと,リードされた管理単位のうち,ステージング要求範囲以外のデータとから,チェックコードを生成し,生成したチェックコードを,前記記憶手段内に記憶されている,前記ステージング要求範囲が含まれる管理単位に対応するチェックコードと比較し,一致しない場合にディスクのライト抜けが発生したことを検出する。
図2は,本発明のシステム構成図の一例を示す図である。図2において,1はホストコンピュータ,2はコントローラ,3〜6はディスク,20はディスクライト抜け検出装置である。コントローラ2は,ホストコンピュータ1からのライト要求またはリード要求に基づいて各ディスクにデータをライトし,またはリードする。コントローラ2は,CPU,メモリ,キャッシュメモリといったハードウェアによって実現される。
ディスクライト抜け検出装置20は,ディスクのライト抜けを検出する。本システムでは,ディスクライト抜け検出装置20は,コントローラ2によって実現され,ディスクのライト抜け検出機能の他に,従来と同様なディスクコントロール機能を持ち,各ディスクに対して更新データを冗長にライトするRAID装置7を構成している。
ホストコンピュータ1は,ディスクライト抜け検出装置20に対して,ディスク3〜6へのデータのリード要求またはライト要求を行う。ディスクライト抜け検出装置20は,ディスク3〜6に対して更新データをライトした後,更新データが正常にライトされたかをチェックする。
図3は,本発明のシステム構成の別の例を示す図である。図3に示すシステムでは,ディスクライト抜け検出装置20はRAID装置を構成せず,1台のディスク3に対して更新データをライトするコントローラ2として実現されている。
本発明は,図2に示すシステム構成または図3に示すシステム構成のうち,いずれの構成も採ることができる。
図4は,ディスクライト抜け検出装置の機能ブロック図の一例を示す図である。ディスクライト抜け検出装置20は,更新状態設定部21,ディスクライト部22,ディスクリード部23,更新状態チェック部24,メモリ8を備える。
更新状態設定部21は,ホストコンピュータからのライト要求を受信して,ディスクへライトする管理単位中に更新データと更新状態値とを設定する。また,更新状態設定部21は,更新状態確認値をメモリ8に記憶する。
ディスクライト部22は,更新状態設定部21によって管理単位中に設定された更新データと更新状態値とをディスクにライトする。ディスクリード部23は,ディスクにライトされたデータをリードする。
更新状態チェック部24は,管理単位のディスクへのライト後に,ディスクからリードされた更新状態値と更新状態確認値とを比較して,ディスクのライト抜けを検出する。
ディスクのライト抜けの検出処理は,例えば,ディスクへのライトの直後,ホストコンピュータ1からのリード要求時,または一定周期などのタイミングで行われる。
メモリ8は,更新状態確認値が記憶される更新状態確認値管理テーブル25を備える。更新状態確認値管理テーブル25のデータ構成については後述する。
更新状態設定部21は,更新状態値算出部210と,更新状態確認値設定部211と,更新データ・更新状態値設定部212と,データマージ部213とを備える。更新状態値算出部210は,管理単位中に設定する更新状態値を算出する。更新状態確認値設定部211は,算出された更新状態値を更新状態確認値として更新状態確認値管理テーブル25に記憶する。
更新データ・更新状態値設定部212は,バッファメモリ内で更新データを管理単位中に設定するとともに,更新状態値算出部210によって算出された更新状態値を管理単位中に設定する。データマージ部213は,更新データを含むブロックのデータと,ディスクからリードされた更新対象外のブロックのデータとをマージする。
更新状態チェック部24は,更新状態比較部240と,ディスクライト抜け認知部241と,更新状態確認値算出部242とを備える。更新状態比較部240は,ディスクからリードされた更新状態値と更新状態確認値管理テーブル25内に記憶された更新状態確認値との比較,または,ディスクからリードされた更新状態値と更新状態確認値算出部242によって算出された更新状態確認値との比較を行う。
ディスクライト抜け認知部241は,更新状態比較部240による比較結果に基づいてディスクのライト抜けが発生したかを認知する。更新状態確認値算出部242は,ディスクからリードされたデータから更新状態確認値を算出する。
なお,更新状態比較部240は,ディスクライト抜け検出装置20がRAID装置を構成し,更新データおよび更新状態値が設定された管理単位を複数のディスクに冗長にライトする場合には,複数のディスクそれぞれからリードされた更新状態値同士を比較する。この場合には,更新状態確認値設定部211による,更新状態確認値管理テーブル25への更新状態確認値の記憶処理は不要となる。
図5は,更新状態確認値管理テーブルのデータ構成の一例を示す図である。更新状態確認値管理テーブル25は,管理単位番号が設定される領域と,チェック済フラグが立てられる領域と,更新状態確認値が設定される領域とから構成される。管理単位番号は,管理単位を一意に識別する番号である。チェック済フラグは,更新状態チェック部24が,ディスクへライトされた管理単位の更新状態値をチェックしたかを示すフラグである。チェック済フラグは,更新状態チェック部24が,管理単位の更新状態値を毎回チェックする場合は,不要となる。
なお,本発明においては,管理単位のディスクへのライト処理の前に,ディスクから更新状態値をリードし,リードした更新状態値をインクリメントして更新状態確認値とすれば,更新状態確認値管理テーブル25は不要となる。
以下に,本発明の実施例について説明する。以下に示す実施例1〜実施例5では,ディスクライト抜け検出装置20が,管理単位を1つのディスクにライトする構成を採る。また,実施例6では,ディスクライト抜け検出装置20が,RAID装置を構成し,管理単位を複数のディスクに冗長にライトする構成を採る。実施例7の構成については,後述する。
以下に,本発明の実施例1について説明する。実施例1では,更新状態値および更新状態確認値として,データの更新世代を示す更新世代数を用いる。N+1ブロックの管理単位がディスクへライトされるたびに,更新状態設定部21によって更新世代数がインクリメントされる。
更新状態チェック部24が,更新状態確認値管理テーブル25に記憶された更新状態確認値とディスクからリードされた更新状態値とを比較し,不一致であればディスクのライト抜けが生じたと判断する。
ここで,図6に示すように,例えば,Block#(0)〜Block#(N−1)までのN個のブロックのうち,ディスクへライトすることが必要な更新データが,更新データ(0)が設定されるBlock#(0)から更新データ(M−1)が設定されるBlock#(M−1)までのMブロックであるとする。また,更新対象外のデータであるデータ(M)からデータ(N−1)が設定されたブロックが,Block#(M)からBlock#(N−1)までのブロックであるとする。
このように,更新データが設定されるブロックが,Nブロックのうちの一部である場合,更新データが設定されるブロックと,更新状態値が設定されるブロック(Block#(N))とが離れることとなる。ディスクのライト抜けは,1つのライト処理で生じると考えられることから,更新データが設定されるブロックと,更新状態値が設定されるブロックのディスクへのライトを,1つのライト処理で行えるようにする必要がある。
そこで,実施例1では,ディスクリード部23が,更新対象外のブロックであるBlock#(M)からBlock#(N−1)までをディスクからリードする。そして,更新状態設定部21のデータマージ部213が,更新データを含むブロックのデータと,ディスクからリードされた更新対象外のブロックのデータとをマージする。更新データ・更新状態値設定部212は,データマージ部213によるマージ処理後のBlock#(0)からBlock#(N)までを,ディスクにライトする管理単位に設定する。
図7は,実施例1における,ライト処理フローの一例を示す図である。まず,更新データ・更新状態値設定部212が,ディスクへライトする管理単位に更新データを設定する(ステップS1)。
次に,ディスクリード部23が,ディスク上の管理単位のブロックのうち,更新対象外のブロックをリードし,更新データを含むブロックのデータとマージする(ステップS2)。
更新状態確認値設定部211が,更新状態確認値管理テーブル25中の該当する管理単位の現在の更新世代数をインクリメントする(ステップS3)。更新データ・更新状態値設定部212が,管理単位の更新状態値として更新世代数を設定する(ステップS4)。そして,ディスクライト部22が,管理単位全てをディスクへライトする(ステップS5)。
図8は,実施例1における,更新状態チェック処理フローの一例を示す図である。まず,ディスクリード部23が,チェック対象の管理単位の更新状態値(更新世代数)をディスクからリードする(ステップS11)。そして,更新状態チェック部24の更新状態比較部240が,更新状態確認値管理テーブル25の更新状態確認値と,更新状態値とを比較する(ステップS12)。ディスクライト抜け認知部241は,更新状態確認値と更新状態値とが不一致である場合は(ステップS13),ディスクのライト抜けが発生したと判断する(ステップS14)。ディスクライト抜け認知部241は,更新状態確認値と更新状態値とが一致する場合は,ディスクへのライトが正常であると判断する(ステップS15)。
以下に,本発明の実施例2について説明する。実施例2が実施例1と異なるのは,更新状態値および更新状態確認値として,データを更新する時刻を用いる点である。
実施例2では,同一時刻での複数回のディスクへのライトが発生する場合の対処が必要となるが,この場合は,例えば,同一時刻でのライト処理の前に更新状態のチェックをしたり,同一領域へのライト処理を同一時刻にならないようにスケジューリングする。
図9は,実施例2における,ライト処理フローの一例を示す図である。まず,更新データ・更新状態値設定部212が,ディスクへライトする管理単位に更新データを設定する(ステップS21)。
次に,ディスクリード部23が,ディスク上の管理単位のブロックのうち,更新対象外のブロックをリードし,更新データを含むブロックのデータとマージする(ステップS22)。
更新状態確認値設定部211が,更新状態確認値管理テーブル25中に,管理単位の更新状態確認値として現在時刻を設定する(ステップS23)。更新データ・更新状態値設定部212が,管理単位の更新状態値として更新状態確認値を設定する(ステップS24)。そして,ディスクライト部22が,管理単位全てをディスクへライトする(ステップS25)。
図10は,実施例2における,更新状態チェック処理フローの一例を示す図である。まず,ディスクリード部23が,チェック対象の管理単位の更新状態値(更新時刻)をディスクからリードする(ステップS31)。そして,更新状態チェック部24の更新状態比較部240が,更新状態確認値管理テーブル25の更新状態確認値と,更新状態値とを比較する(ステップS32)。ディスクライト抜け認知部241は,更新状態確認値と更新状態値とが不一致である場合は(ステップS33),ディスクのライト抜けが発生したと判断する(ステップS34)。ディスクライト抜け認知部241は,更新状態確認値と更新状態値とが一致する場合は,ディスクへのライトが正常であると判断する(ステップS35)。
以下に,本発明の実施例3について説明する。実施例3では,更新状態設定部21の更新状態値算出部210が,管理単位のデータ部(更新データおよびマージされた更新対象外のデータが割り当てられるブロック)に対して,CRCやXOR(排他的論理和)を用いた演算処理を施して,チェックコードを生成する。
更新状態確認値設定部211が,生成されたチェックコードを更新状態確認値として更新状態確認値管理テーブル25に設定し,更新データ・更新状態値設定部212が,管理単位の更新状態値としてチェックコードを設定する。
そして,ディスクライト部22が更新データと更新状態値とをディスクへライトした後に,ディスクリード部23が,ディスクから更新状態値をリードする。
更新状態チェック部24の更新状態比較部240が,リードされた更新状態値と更新状態確認値管理テーブル25中の更新状態確認値とを比較する。そして,更新状態値と更新状態確認値とが不一致なら,ディスクライト抜け認知部241が,ディスクのライト抜けが発生したと判断する。
図11は,実施例3における,ライト処理フローの一例を示す図である。まず,更新データ・更新状態値設定部212が,ディスクへライトする管理単位に更新データを設定する(ステップS41)。
次に,ディスクリード部23が,ディスク上の管理単位のブロックのうち,更新対象外のブロックをリードし,更新データを含むブロックのデータとマージする(ステップS42)。
更新状態値算出部210が,管理単位のデータ部からチェックコードを生成する(ステップS43)。そして,更新状態確認値設定部211が,生成したチェックコードを,更新状態確認値として更新状態確認値管理テーブル25に設定する(ステップS44)。
次に,更新データ・更新状態値設定部212が,管理単位の更新状態値としてチェックコードを設定する(ステップS45)。そして,ディスクライト部22が,管理単位全てをディスクへライトする(ステップS46)。
図12は,実施例3における,更新状態チェック処理フローの一例を示す図である。まず,ディスクリード部23が,チェック対象の管理単位の更新状態値(チェックコード)をディスクからリードする(ステップS51)。そして,更新状態チェック部24の更新状態比較部240が,更新状態確認値管理テーブル25の更新状態確認値と,更新状態値とを比較する(ステップS52)。ディスクライト抜け認知部241は,更新状態確認値と更新状態値とが不一致である場合は(ステップS53),ディスクのライト抜けが発生したと判断する(ステップS54)。更新状態確認値と更新状態値とが一致する場合は,ディスクライト抜け認知部241は,ディスクへのライトが正常であると判断する(ステップS55)。
以下に,本発明の実施例4について説明する。実施例4では,更新状態設定部21の更新状態値算出部210が,管理単位のデータ部(更新データおよびマージされた更新対象外のデータが割り当てられるブロック)に対して,CRCやXOR(排他的論理和)を用いた演算処理を施して,チェックコードを生成する。
そして,更新データ・更新状態値設定部212が,生成されたチェックコードを管理単位の更新状態値として設定する。
ディスクへの管理単位のライト後に,ディスクリード部23が,ディスクから管理単位の更新データと更新状態値とをリードする。更新状態チェック部24の更新状態確認値算出部242が,リードされた更新データに対して,CRCやXOR(排他的論理和)を用いた演算処理を施して,更新状態確認値として用いるチェックコードを生成する。
そして,更新状態比較部240が,リードされた更新状態値と生成されたチェックコードとを比較する。更新状態値とチェックコードとが不一致なら,ディスクライト抜け認知部241が,ディスクのライト抜けが発生したと判断する。
実施例4では,ディスクからリードした更新状態値と,ディスクからリードされた更新データから作成したチェックコードとの比較結果に基づいてディスクのライト抜けをチェックする。従って,実施例3と異なり,更新状態確認値管理テーブル25への更新状態確認値の設定処理を省略することができる。
ここで,実施例4では,更新データが設定されるブロックが,Nブロックのうちの一部である場合は,実施例1と同様に,ディスクからリードした更新対象外のデータを含むブロックを更新データを含むブロックとマージする手法を採ることができる。
また,実施例4では,更新されるデータブロックが,Nブロックのうちの一部である場合であっても,以下に説明するように,「更新データ」と,更新データと対応する「既存データ」および「既存の更新状態値」に,例えばXOR演算を施して,更新後の新更新状態値を算出することができる。
図13(A)の左図は,ディスク上の既存データおよび既存の更新状態値の例を示している。図13(A)の右図は,更新後のデータおよび新更新状態値の例を示している。この例では,説明をわかりやすくするため,各データおよび更新状態値を8ビットで表現して説明する。
図13(A)の左図に示すように,データD1〜データD4までの既存データのうち,例えばデータD1が「11100111」,データD2が「01001001」,データD3が「00001111」,データD4が「10101100」であるとする。
既存の更新状態値「00001101」は,データD1〜データD4についてデータ単位にXOR演算を施した演算結果である。
ここで,図13(A)の右図に示すように,データD2が,「11000011」というデータD2’に更新されたとする。図13(A)の右図に示す新更新状態値「10000111」は,データD2’と既存データ(データD1,データD3,データD4)についてデータ単位にXOR演算を施した演算結果である。
本発明の実施例4では,更新データと既存データの全てについてXOR演算を施すことなく新更新状態値を算出することができる。例えば,図13(B)に示すように,更新データであるデータD2’「11000011」と,データD2’と対応する既存データであるデータD2「01001001」および既存の更新状態値「00001101」について,データ単位にXOR演算を施すことによって,全てのデータD1,D2’,D3,D4に対してXOR演算を施した演算結果と同じ新更新状態値「10000111」を算出することができる。
図14は,実施例4における,更新状態チェック処理フローの一例を示す図である。まず,ディスクリード部23が,チェック対象の管理単位の更新状態値と更新データとをディスクからリードする(ステップS61)。更新状態チェック部24の更新状態確認値算出部242が,リードされた更新データから更新状態確認値として用いるチェックコードを生成する(ステップS62)。
更新状態比較部240が,生成されたチェックコードとリードされた更新状態値とを比較する(ステップS63)。ディスクライト抜け認知部241は,チェックコードと更新状態値とが不一致である場合は(ステップS64),ディスクのライト抜けが発生したと判断する(ステップS65)。チェックコードと更新状態値とが一致する場合は,ディスクライト抜け認知部241は,ディスクへのライトが正常であると判断する(ステップS66)。
以下に,本発明の実施例5について説明する。実施例5では,更新状態値および更新状態確認値は,図15に示すように,チェックコード部と世代部とから構成される。この更新状態確認値のうち,世代部は更新状態確認値管理テーブル25に設定され,チェックコード部は更新データからその都度生成される。
実施例5では,更新状態値算出部210が,管理単位のデータ部に対して,CRCやXOR(排他的論理和)を用いた演算処理を施して,チェックコードを生成する。更新状態確認値設定部211は,更新世代数を,更新状態確認値管理テーブル25の更新状態確認値の世代部に設定する。実施例5では,更新世代数の代わりに,データを更新する時刻を更新状態確認値の世代部に設定してもよい。
更新データ・更新状態値設定部212が,バッファメモリ内で,管理単位の更新状態値として,その世代部に更新状態確認値の世代部に設定された更新世代数を設定し,そのチェックコード部に更新状態値算出部210によって生成されたチェックコードを設定する。
ディスクへの管理単位のライト後に,更新状態確認値算出部242が,ディスクからリードされた更新データからチェックコードを生成する。
更新状態比較部240が,ディスクからリードされた更新状態値のチェックコード部と,更新状態確認値算出部242によって生成されたチェックコードとを比較する。ディスクライト抜け認知部241は,更新状態値のチェックコード部と更新状態確認値算出部242によって生成されたチェックコードとが不一致であれば,ディスクのライト抜けが発生したと判断する。
また,更新状態比較部240は,ディスクからリードされた更新状態値の世代部と更新状態確認値管理テーブル25の更新状態確認値の世代部とを比較する。ディスクライト抜け認知部241は,更新状態値の世代部と更新状態確認値管理テーブル25の更新状態確認値の世代部とが不一致であれば,ディスクのライト抜けが発生したと判断する。
実施例5では,ディスクからリードされた更新状態値のチェックコード部と,更新状態確認値算出部242によって生成されたチェックコードとの比較結果に基づいて,ディスクのライト抜けを検出する。従って実施例5によれば,管理単位の一部において発生したライト抜けを検出することができる。
また,実施例5では,ディスクからリードされた更新状態値の世代部と更新状態確認値管理テーブル25の更新状態確認値の世代部との比較結果に基づいて,ディスクのライト抜けを検出する。従って,実施例5によれば,管理単位の全部において発生したライト抜けを検出することもできる。
図16は,実施例5における,ライト処理フローの一例を示す図である。まず,更新データ・更新状態値設定部212が,ディスクへライトする管理単位に更新データを設定する(ステップS71)。
次に,ディスクリード部23が,ディスク上の管理単位のブロックのうち,更新対象外のブロックをリードし,更新データを含むブロックのデータとマージする(ステップS72)。
更新状態値算出部210が,管理単位のデータ部からチェックコードを生成する(ステップS73)。
また,更新状態確認値設定部211が,更新状態確認値管理テーブル25中の,該当する管理単位の更新状態確認値の世代部に設定された更新世代数をインクリメントする(ステップS74)。なお,ステップS74においては,更新状態確認値の世代部に現在時刻を設定してもよい。
更新データ・更新状態値設定部212が,管理単位の更新状態値として,その世代部に更新状態確認値の世代部に設定された更新世代数を設定し,そのチェックコード部に,生成されたチェックコードを設定する(ステップS75)。そして,ディスクライト部22が,管理単位全てをディスクへライトする(ステップS76)。
図17は,実施例5における,更新状態チェック処理フローの一例を示す図である。まず,ディスクリード部23が,チェック対象の管理単位の更新状態値と更新データとをディスクからリードする(ステップS81)。更新状態チェック部24の更新状態確認値算出部242が,リードされた更新データからチェックコードを生成する(ステップS82)。
更新状態比較部240が,生成されたチェックコードとリードされた更新状態値のチェックコード部とを比較する(ステップS83)。ディスクライト抜け認知部241は,生成されたチェックコードとリードされた更新状態値のチェックコード部とが不一致である場合は(ステップS84),ディスクのライト抜けが発生したと判断する(ステップS87)。
生成されたチェックコードとリードされた更新状態値のチェックコード部とが一致する場合は,更新状態比較部240が,更新状態確認値管理テーブル25の更新状態確認値の世代部とディスクからリードされた更新状態値の世代部とを比較する(ステップS85)。比較結果が不一致の場合は(ステップS86),ディスクライト抜け認知部241は,ディスクのライト抜けが発生したと判断する(ステップS87)。比較結果が一致なら,ディスクライト抜け認知部241は,ディスクへのライトが正常であると判断する(ステップS88)。
以下に,本発明の実施例6について説明する。実施例6は実施例1と異なり,ディスクライト抜け検出装置20が,RAID装置を構成し,管理単位を複数のディスクに冗長にライトする。
更新状態値が複数のディスクに冗長にライトされるRAIDの場合は,ミラー/パリティを問わず,同時に複数のディスクで同じようにライト抜けが起きる可能性は低い。
従って,実施例6においては,更新状態比較部240は,複数のディスクのそれぞれからリードされた更新状態値すなわち更新世代数を比較する。複数のディスクそれぞれからリードされた更新世代数が同じ世代数なら,ディスクライト抜け認知部241は,複数のディスクにおいて正常にライトされたと判断する。複数のディスクそれぞれからリードされた更新世代数が異なる場合,ディスクライト抜け認知部241は,更新世代数が古い世代のディスクにおいてディスクのライト抜けが発生したと判断する。
実施例6では,複数のディスクのそれぞれからリードされた更新世代数の比較結果に基づいてディスクのライト抜けを検出するため,更新状態確認値管理テーブル25への更新状態確認値の設定処理を省略することができる。
各ディスクにライトするときのライト処理フローは,図7と同様であるので,フローチャートを用いた説明は省略する。
図18は,本発明の実施例6における更新状態チェック処理フローの一例を示す図である。まず,ディスクリード部23が,複数のディスクのそれぞれから,チェック対象の管理単位の更新状態値をリードする(ステップS91)。
次に,更新状態チェック部24の更新状態比較部240が,リードされた複数の更新状態値を比較する(ステップS92)。ディスクライト抜け認知部241は,更新状態値が不一致である場合は(ステップS93),更新世代数が古いディスクにおいてディスクのライト抜けが発生したと判断する(ステップS94)。ディスクライト抜け認知部241は,更新状態値が一致する場合は,ディスクへのライトが正常であると判断する(ステップS95)。
実施例6において,更新状態値として更新世代数を用いる代わりに,実施例2,実施例3と同様に,データ更新時刻またはチェックコード等を用いてもよい。
以下に,本発明の実施例7について説明する。図20は,本発明の実施例7のシステム構成図の一例を示す図である。RAID装置9は,コントローラ90,CA(Channel Adapter)91,DA(Device Adapter)92,ディスク3〜6を備える。また,21はディスクライト抜け検出装置である。
コントローラ90は,CPU,メモリ,キャッシュメモリといったハードウェアによって実現される。コントローラ90は,ホストコンピュータ1からのライト要求を受信して,更新データを一旦キャッシュメモリ内に格納した後,キャッシュメモリ内の更新データをディスクにライトバックする。
また,コントローラ90は,ホストコンピュータ1からのリード要求を受信して,一旦ディスクからデータをキャッシュメモリ内にステージングした後,キャッシュメモリ内のデータをホストコンピュータ1に対して送信する。
ディスクライト抜け検出装置21は,ディスクのライト抜けを検出する。本実施例では,ディスクライト抜け検出装置21は,コントローラ90によって実現され,ディスクのライト抜け検出機能の他に,従来と同様なディスクコントロール機能を持っている。
CA91は,ホストコンピュータ1とコントローラ90との間の通信インタフェースである。DA92は,コントローラ90と各ディスクとの間の通信インタフェースである。
図21は,コントローラの構成の一例を示す図である。コントローラ90は,リソース制御部100,キャッシュ制御部101,RAID制御部102,キャッシュメモリ103,チェックコードメモリ104,チェックコードディスク105,データバッファ106,パリティバッファ107を備える。
リソース制御部100は,図20に示すRAID装置9内のリソース(例えば,CA91,DA92)を制御する。キャッシュ制御部101は,キャッシュメモリ103の管理を行う。例えば,キャッシュメモリ103内の更新データのHit,Miss判定を行う。また,キャッシュ制御部101は,RAID制御部102に対して,キャッシュメモリ103内のデータのディスクへのライトバック要求を行ったり,ディスク内のデータのキャッシュメモリ103へのステージング要求を行ったりする。
また,キャッシュ制御部101は,更新データを設定する複数のブロック(例えば,16ブロック(8KB))をディスクのライト抜けの検出対象の管理単位とし,キャッシュメモリ103に格納された前記更新データをディスクにライトバックするときに,ライトバック要求範囲が含まれる前記管理単位毎にチェックコードを生成して,生成したチェックコードをチェックコードメモリ104内に記憶するチェックコード生成手段である。ここで,本実施例においては,上記ディスクのライト抜けの検出対象の管理単位を,「チェックコード管理単位」と記述する。
また,キャッシュ制御部101は,例えば,更新データをディスクにライトバックするときに,ライトバック要求範囲が含まれる管理単位に対応するパリティデータについてチェックコードを生成して,チェックコードメモリ104内に記憶する。
また,キャッシュ制御部101は,チェックコードメモリ104内に格納したチェックコードを,LRU(Least Recent Used)に従って退避して,チェックコードディスク105内に格納する。
RAID制御部102は,ディスクアクセスをコントロールする。すなわち,RAID制御部102は,キャッシュ制御部101からライトバック要求を受けて,キャッシュメモリ103内の更新データをディスクにライトバックする。また,RAID制御部102は,キャッシュ制御部101からステージング要求を受けて,ディスクからデータをリードし,リードしたデータをキャッシュメモリ103にステージングする。
また,RAID制御部102は,キャッシュ制御部101からライトバック要求またはステージング要求を受けた時に,要求範囲が含まれるチェックコード管理単位に対応するチェックコードが,チェックコードメモリ104内に存在するか否かの判定(Hit/Miss判定)を行う。当該チェックコードがチェックコードメモリ104内に存在しない場合には,RAID制御部102は,チェックコードディスク105からチェックコードをリードし,リードしたチェックコードをチェックコードメモリ104内に格納する。
また,RAID制御部102は,ディスクからリードしたデータに基づいてチェックコードを生成し,生成したチェックコードとチェックコードメモリ104内のチェックコードとを比較して,チェックコードの正当性をチェックする。なお,本実施例においては,例えば,RAID制御部102は,ディスクからパリティデータをリードする構成を採ってもよい。
RAID制御部102は,生成されたチェックコードとチェックコードメモリ104内のチェックコードとが一致する場合は,ライトバック処理またはステージング処理を行い,キャッシュ制御部101にライトバックの完了報告またはステージングの完了報告を行う。RAID制御部102は,ディスクからリードしたデータに基づいて生成されたチェックコードとチェックコードメモリ104内のチェックコードとが一致しない場合には,ディスクのライト抜けが発生したと判断する。
より具体的には,RAID制御部102は,ディスクからキャッシュメモリ103にデータをステージングするときに,ステージング要求範囲が含まれるチェックコード管理単位をディスクからリードし,リードされたチェックコード管理単位のうち,ステージング要求範囲のデータをキャッシュメモリ103に格納し,キャッシュメモリ103に格納されたステージング要求範囲のデータと,リードされたチェックコード管理単位のうち,ステージング要求範囲以外のデータとから,チェックコードを生成し,生成したチェックコードを,チェックコードメモリ104内に記憶されている,前記ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードと比較し,一致しない場合にディスクのライト抜けが発生したことを検出するディスクライト抜け検出手段である。
キャッシュメモリ103には,更新対象となる更新データが一時的に格納される。キャッシュメモリ103は,あるまとまったサイズの単位であるキャッシュページ200に区切られている。なお,コントローラ90は,例えば,各キャッシュページ200の管理情報が格納された,図示しないキャッシュページ管理テーブルを備えている。
チェックコードメモリ104には,チェックコード管理単位(例えば,16ブロック)毎の更新データに対応するチェックコードが格納される。チェックコードメモリ104は,あるまとまったサイズを持つチェックコードページ201に区切られている。チェックコードメモリ104内の構成の詳細については,後述する。なお,コントローラ90は,例えば,各チェックコードページ201の管理情報が格納された,図示しないチェックコードページ管理テーブルを備えている。
チェックコードディスク105には,チェックコードメモリ104から退避されたチェックコードが格納される。データバッファ106には,ディスクからリードされたデータが一時的に格納される。パリティバッファ107には,ディスクから読み出されたパリティデータが一時的に格納される。
本実施例においては,例えば,キャッシュ制御部101からRAID制御部102に対して更新データのライトバック要求がされた時にチェックコードが生成される。また,本実施例においては,例えば,キャッシュ制御部101からRAID制御部102に対してステージング要求がされた時にチェックコードの正当性のチェックが行われる。
なお,本実施例においては,コントローラ90は,例えば,ディスクが故障した場合にディスクのRebuild(再構築)要求をRAID制御部102に対して行うRebuildモジュール(図21では図示を省略)を備える構成を採ることができる。また,本実施例においては,RAID制御部102が,RebuildモジュールからRebuild要求を受けて,ディスクのRebuild(再構築)処理を行う構成を採ることができる。
図22は,本実施例におけるチェックコードの生成を説明する図である。本実施例においては,コントローラ90は,例えば,図22に示すように,16個の各データにそれぞれ付加されたBCC16個について,CRCを用いた演算処理を施して,チェックコードを生成する。
次に,本実施例におけるチェックコードの管理方法について説明する。キャッシュ制御部101によって生成されたチェックコードは,チェックコードメモリ104内にしばらく留まる。そして,LRU(Least Recent Used)に従って,チェックコードの,チェックコードディスク105への追い出しが行われる。
チェックコードの正当性のチェックの際に,該当するチェックコードがチェックコードメモリ104内に存在しない場合には,チェックコードディスク105からチェックコードがチェックコードメモリ104に格納される。そして,チェックコードメモリ104内に格納されたチェックコードと,ディスクからリードされたデータから作成されたチェックコードとが比較される。
本実施例においては,図23に示すように,チェックコードメモリ104を多数のチェックコードページ201に区切る。各チェックコードページ201には,図24に示すように,連続した複数のチェックコードを格納する。各チェックコードページ201には,例えば,128個(512Byte)のチェックコードが格納される。
図25は,RAIDグループについて定義された論理ボリュームとチェックコードとチェックコードメモリとの関係例を説明する図である。RAIDグループは,例えば,「PLUN#0」と「PLUN#2」という2つのディスクから構成されるものとする。
図25に示すように,RAIDグループについて定義された論理ボリュームは,例えば,「0x00000000」,・・・「0x0000000f」といった,論理ブロックアドレス(LBA:Logical Block Address )を有する。
また,図25に示すチェックコードには,例えば,チェックコード毎に「#0」,「#1」といった番号が付けられている。また,図25に示すチェックコードメモリ104内のチェックコードページ201には,チェックコードページ201毎に「#0」,・・・「#m」といった番号が付けられている。
また,図25に示すチェックコードディスク105内の領域は,例えば,「PLUN#0」〜「PLUN#n」までのn個の各ディスクに対して割り当てられている。
図25に示すように,RAIDグループについて定義された論理ボリュームの16個のLBAに対応する16個のブロックは,図中の各チェックコードに対応している。例えば,「0x00000000」〜「0x0000000f」までのLBAに対応する16個のブロックは,番号「#0」が付けられたチェックコードに対応している。
また,例えば,図中に示す番号「#0」〜番号「#127」までの128個のチェックコードは,図中のチェックコードメモリ104内の,番号「#m」が付けられたチェックコードページ201内に格納される。
チェックコードページ201内に格納された128個のチェックコードは,LRUに従って,チェックコードディスク105内に退避される。
例えば,番号「#m」が付けられたチェックコードページ201内に格納されているチェックコードは,チェックコードディスク105内において,「PLUN#0」というディスクと「PLUN#2」というディスクとに対して割り当てられた領域に格納される。
図26は,チェックコードページ管理テーブルのフォーマット例を示す図である。なお,図26中,「16BE」は,チェックコードページ管理テーブルを意味し,「16CC」は,チェックコードを意味する。
「Dirty Bitmap」(オフセット0x00〜0x0F)は,更新されたチェックコードを管理するビットマップである。
「LUN LBA 」(オフセット0x10〜0x17)には,チェックコードの先頭LBAがセットされる。すなわち,「LUN LBA 」はチェックコード管理単位のバウンダリを示している。
「LUN 」(オフセット0x18〜0x19)は,論理ボリュームの番号を示す。「Keep Flag 」は,例えば,更新されたチェックコードを管理するビットマップを保持しているかを示す。また,「Keep Status 」は,例えば,ミラー(Mirror)を保持しているかを示す。
「Present Bitmap」(オフセット0x20〜0x2F)は,後述する「16CC Buffer Address 」に対応するチェックコードメモリ104内にチェックコードが存在しているか否かを管理するビットマップである。
「LRU NEXT 16BE ID」/ 「 LRU Previous 16BE ID 」は,LRUを行うリンク(LRUリンク)を管理するポインタである。例えば,図27に示すLRUリンクを管理するポインタは,MRU(Most Recently Used)ポインタとLRUポインタとから構成される。
チェックコードページ管理テーブルが使用されると,チェックコードページ管理テーブルは,MRUポインタに接続される。例えば,ライトバック動作時にチェックコードページ管理テーブルを用いてチェックコードが更新された場合や,ステージング動作時にチェックコードページ管理テーブルを用いてチェックコードがチェックされた場合に,MRUポインタに接続される。
また,チェックコードページ管理テーブルを開放する場合には,チェックコードページ管理テーブルは,LRUリンクから外される。LRUリンクから外す場合は,チェックコードページ管理テーブルが未使用状態になっていることを確認した上で行われる。LRUリンクから外されたチェックコードページ管理テーブルは,未使用状態のチェックコードページ管理テーブルを管理するためのリンクであるFreeリンクに繋がる。
「LUN NEXT 16BE ID」/ 「 LUN Previous 16BE ID 」は,論理ボリューム毎の,チェックコードページ管理テーブルリンク用のポインタである。
「Hash Group Next 16BE ID 」/ 「Hash Group Previous 16BE ID 」,「Hash Synonym Next 16BE ID 」/ 「Hash Synonym Previous 16BE ID 」は,ハッシュ制御用リンクのポインタである。すなわち,シノニムが発生した場合に当該ハッシュエントリに関連付けを行うためのリンク群である。シノニムが発生した場合には,このリンクを線形探索することにより,チェックコードに対するチェックコードページ管理テーブルが存在するか否かのHit/Miss判定を行う。
「Hash Entry Number 」は,ハッシュエントリの番号である。「Link List 」は,リンクの種類(例えば,「Unlinked」,「Free Link 」,「LRU Link」等) を示している。また,「16CC Buffer Address 」,「Mirror 16CC Buffer Address」は,チェックコードメモリ104のアドレスを示している。
本実施例では,チェックコードページ管理テーブルを管理するために複数のリンク制御を行っている。例えば,本実施例では,論理ボリューム毎に管理されたリンク,上述したハッシュエントリに関連付けられるリンクの他,チェックコードページ管理テーブルの状態を管理するためのリンク群であるチェックコード管理リンク群についてのリンク制御を行う。
全てのチェックコードページ管理テーブルは,チェックコード管理リンク群に属する,前述したLRUリンクとFreeリンクに接続されている。
次に,本実施例におけるライトバック要求時の処理の例について,図28乃至図31を用いて説明する。図28は,RAIDレベルがRAID−1であり,かつライトバック要求がランダムに行われる場合の処理の一例を説明する図である。図29は,RAIDレベルがRAID−1であり,かつライトバック要求がシーケンシャルに行われる場合の処理の一例を説明する図である。図30は,本実施例におけるライトバック処理フローの一例を示す図である。また,図31は,Hash管理の概念図である。
ここでは,ライトバック要求された範囲が,チェックコード管理単位(例えば,16ブロック(8KB)のデータ単位)のバウンダリと合わない場合について説明する。例えば,図28に示すキャッシュページ200中の,斜線部で示すライトバック要求された8KBの更新データは,先頭8KBのチェックコード管理単位と末尾8KBのチェックコード管理単位のバウンダリにまたがっている。
図30の処理フローにおいて,まず,キャッシュ制御部101が,RAID制御部102に対してライトバック要求を行う(ステップS101)。
RAID制御部102は,ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在するか否かの判定(Hit/Miss判定)を行う(ステップS102)。ここで,ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードとは,例えば,上述した図28のキャッシュページ200中の先頭8KBのチェックコード管理単位に対応するチェックコードと,末尾8KBのチェックコード管理単位に対応するチェックコードを指す。
RAID制御部102は,例えば,各チェックコードページ201の管理情報を格納しているチェックコードページ管理テーブルを検索することによって,ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在するかを判断する。
ステップS102におけるHit/Miss判定を,図31を用いて詳細に説明する。RAID制御部102は,例えば,ライトバック要求において指定されたLBAとLUNをHashのキー値として,Hash関数を通す。RAID制御部102は,Hash関数を通した結果,Hash EntryがHitしていれば,Hash Entry中に格納されているチェックコードページ管理テーブルへのポインタに従って,チェックコードページ管理テーブルにアクセスする。そして,RAID制御部102は,チェックコードページ管理テーブルの「Present Bitmap」を参照して,ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードの存在有無(Hit/Miss)を判定する。
ステップS102の処理の結果,ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在する場合は,ステップS104に進む。ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在しない場合は,RAID制御部102は,ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードをチェックコードディスク105から読み込んでチェックコードメモリ104に格納する(ステップS103)。
本実施例において,ライトバック要求範囲は,一度に2ページ分のチェックコードページ201を超えることがないとする。従って,上記ステップS103の処理においては,RAID制御部102は,例えば,チェックコードページ201を2ページ確保するために,チェックコードページ管理テーブル×2を獲得する。
そして,RAID制御部102は,ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードをチェックコードディスク105から読み込んで,獲得したチェックコードページ管理テーブルによって管理される2ページ分のチェックコードページ201へ格納する。
次に,RAID制御部102は,ライトバック要求範囲が含まれるチェックコード管理単位に対応するデータを,ディスクからリードして,データバッファ106に格納する(ステップS104)。例えば,RAID制御部102は,ディスク3から図28のキャッシュページ200中に示す先頭8KBのチェックコード管理単位のデータと末尾8KBのチェックコード管理単位のデータを読み込んで,データバッファ106に格納する。この時,先頭と末尾の合計16KBで連続データになるので,一回のコマンド起動でステップS104の処理を行うことができる。
次に,RAID制御部102は,ステップS104においてデータバッファ106に格納されたデータについて,チェックコードを生成し,生成したチェックコードを,チェックコードメモリ104内のチェックコードと比較する(ステップS105)。
例えば,RAID制御部102は,ディスク3から読み込んだ先頭8KBのチェックコード管理単位のデータと末尾8KBのチェックコード管理単位のデータのそれぞれについてチェックコードを生成する。そして,RAID制御部102は,先頭8KBのチェックコード管理単位のデータから生成したチェックコードを,チェックコードメモリ104内の,先頭8KBのチェックコード管理単位のデータと対応するチェックコードと比較する。また,RAID制御部102は,末尾8KBのチェックコード管理単位のデータから生成したチェックコードを,チェックコードメモリ104内の,末尾8KBのチェックコード管理単位のデータと対応するチェックコードと比較する。
比較結果が不一致である場合は(ステップS106),RAID制御部102は,ディスクライト抜けの発生を検知する(ステップS107)。
比較結果が一致である場合は,キャッシュ制御部101は,ライトバック要求範囲が含まれるチェックコード管理単位に対応する新たなチェックコードを生成し,チェックコードメモリ104内に格納する(ステップS108)。すなわち,キャッシュ制御部101は,例えば,図28のキャッシュページ200中に示す,先頭8KBのチェックコード管理単位のデータのうち,4KB分の更新データ以外の4KBのデータを,データバッファ106中の先頭8KBのデータから抽出し,抽出した4KBのデータを4KB分の更新データとマージして,8KBのデータとする。そして,キャッシュ制御部101は,マージ後の8KBのデータに対応するチェックコードを生成し,チェックコードメモリ104内に格納する。
また,キャッシュ制御部101は,例えば,図28のキャッシュページ200中に示す,末尾8KBのチェックコード管理単位のデータのうち,斜線で示す4KB分の更新データ以外の4KBのデータを,データバッファ106中の末尾8KBのデータから抽出し,抽出した4KBのデータを4KB分の更新データとマージして8KBのデータとする。そして,キャッシュ制御部101は,マージ後の8KBのデータに対応するチェックコードを生成し,チェックコードメモリ104内に格納する。
ステップS108の処理によって,生成された新たなチェックコードで,チェックコードメモリ104内の古いチェックコードが更新される。また,ステップS108の処理によって,チェックコードメモリ104内のチェックコードページ201が更新される。また,ステップS108の処理とともに,キャッシュ制御部101は,チェックコードページ管理テーブル内の管理情報を更新する。
次に,RAID制御部102は,ライトバック要求範囲である8KBの更新データをディスクへライトする(ステップS109)。
そして,RAID制御部102からキャッシュ制御部101に対して,ライトバック完了応答を行う(ステップS110)。
ライトバック要求がシーケンシャルに行われる場合も,キャッシュページ管理テーブルが複数用意される(図29では,8個)以外は,ライトバックがランダムに行われる場合と同様の処理が行われる。
次に,本実施例におけるライトバック要求時の処理の別の例について,図32乃至図34を用いて説明する。図32は,RAIDレベルがRAID−5であり,かつライトバック要求がランダムに行われる場合の処理の一例を説明する図である。図32に示す例では,キャッシュ制御部101は,ライトバック要求時に,ライトバック要求範囲が含まれるチェックコード管理単位に対応するパリティデータについてもチェックコードを生成して,チェックコードメモリ104内に格納する。
図32に示すパリティバッファ107には,ディスクから読み出された,ライトバック要求された範囲が含まれるチェックコード管理単位に対応するパリティデータが格納される。
また,図33または図34は,本実施例におけるライトバック処理フローの一例を示す図である。ここでは,ライトバック要求された範囲が,チェックコード管理単位のバウンダリと合わない場合について説明する。例えば,図32に示すキャッシュページ200中の,斜線部で示すライトバック要求された8KBの更新データは,先頭8KBのチェックコード管理単位と末尾8KBのチェックコード管理単位のバウンダリにまたがっている。
図33または図34の処理フローにおいて,まず,キャッシュ制御部101が,RAID制御部102に対してライトバック要求を行う(ステップS111)。
RAID制御部102は,ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在するか否かの判定(Hit/Miss判定)を行う(ステップS112)。ここで,ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードとは,例えば,上述した図32のキャッシュページ200中に示す先頭8KBのチェックコード管理単位に対応するチェックコードと,末尾8KBのチェックコード管理単位に対応するチェックコードを指す。
RAID制御部102は,例えば,各チェックコードページ201の管理情報を格納しているチェックコードページ管理テーブルを検索することによって,ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在するかを判断する。
ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在する場合は,ステップS114に進む。ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在しない場合は,RAID制御部102は,ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードをチェックコードディスク105から読み込んでチェックコードメモリ104に格納する(ステップS113)。
本実施例において,ライトバック要求範囲は,一度に2ページ分のチェックコードページ201を超えることがないとする。従って,上記ステップS113の処理においては,RAID制御部102は,例えば,チェックコードページ201を2ページ確保するために,チェックコードページ管理テーブル×2を獲得する。
そして,RAID制御部102は,ライトバック要求範囲が含まれるチェックコード管理単位に対応するチェックコードをチェックコードディスク105から読み込んで,獲得したチェックコードページ管理テーブルによって管理される2ページ分のチェックコードページ201へ格納する。
次に,RAID制御部102は,ライトバック要求範囲が含まれるチェックコード管理単位に対応するデータを,ディスクからリードして,データバッファ106に格納する(ステップS114)。例えば,RAID制御部102は,ディスク4から図32のキャッシュページ200中に示す先頭8KBのチェックコード管理単位に対応するデータと末尾8KBのチェックコード管理単位に対応するデータとを読み込んで,データバッファ106に格納する。この時,先頭と末尾の合計16KBで連続データになるので,一回のコマンド起動でステップS114の処理を行うことができる。
次に,RAID制御部102は,ステップS114においてデータバッファ106に格納されたデータについて,チェックコードを生成し,生成したチェックコードを,チェックコードメモリ104内のチェックコードと比較する(ステップS115)。
例えば,RAID制御部102は,ディスク4から読み込んだ先頭8KBのチェックコード管理単位のデータと末尾8KBのチェックコード管理単位のデータのそれぞれについてチェックコードを生成する。そして,RAID制御部102は,先頭8KBのチェックコード管理単位のデータから生成したチェックコードを,チェックコードメモリ104内の,先頭8KBのチェックコード管理単位のデータと対応するチェックコードと比較する。また,RAID制御部102は,末尾8KBのチェックコード管理単位のデータから生成したチェックコードを,チェックコードメモリ104内の,末尾8KBのチェックコード管理単位のデータと対応するチェックコードと比較する。
比較結果が不一致である場合は(ステップS116),RAID制御部102は,ディスクライト抜けの発生を検知する(ステップS117)。
比較結果が一致である場合は,キャッシュ制御部101は,ライトバック要求範囲が含まれるチェックコード管理単位に対応する新たなチェックコードを生成し,チェックコードメモリ104内に格納する(ステップS118)。すなわち,キャッシュ制御部101は,例えば,図32のキャッシュページ200中に示す,先頭8KBのチェックコード管理単位のデータのうち,斜線で示す4KB分の更新データ以外の4KBのデータを,データバッファ106中の先頭8KBのデータから抽出し,抽出した4KBのデータを4KB分の更新データとマージして8KBのデータとする。そして,キャッシュ制御部101は,マージ後の8KBのデータに対応するチェックコードを生成し,チェックコードメモリ104内に格納する。
また,キャッシュ制御部101は,例えば,図32のキャッシュページ200中に示す,末尾8KBのチェックコード管理単位のデータのうち,斜線で示す4KB分の更新データ以外の4KBのデータを,データバッファ106中の末尾8KBのデータから抽出し,抽出した4KBのデータを4KB分の更新データとマージして8KBのデータとする。そして,キャッシュ制御部101は,マージ後の8KBのデータに対応するチェックコードを生成し,チェックコードメモリ104内に格納する。
ステップS118の処理によって,生成された新たなチェックコードで,チェックコードメモリ104内の古いチェックコードが更新される。また,ステップS118の処理によって,チェックコードメモリ104内のチェックコードページ201が更新される。また,ステップS118の処理とともに,キャッシュ制御部101は,チェックコードページ管理テーブル内の管理情報を更新する。
次に,RAID制御部102は,上記のステップS114において行ったデータバッファ106へのデータの格納処理と同様に,ディスクから古いパリティデータをリードして,パリティバッファ107に格納する(ステップS119)。すなわち,RAID制御部102は,ライトバック要求範囲が含まれるチェックコード管理単位(先頭8KBと末尾8KB)のデータに対応するパリティデータをディスクからリードして,パリティバッファ107に格納する。
次に,RAID制御部102は,ステップS119においてパリティバッファ107に格納されたパリティデータについて,チェックコードを生成し,生成したチェックコードを,チェックコードメモリ104内のチェックコードと比較する(ステップS120)。
比較結果が不一致である場合は(ステップS121),RAID制御部102は,ディスクライト抜けの発生を検知する(ステップS122)。
比較結果が一致である場合は,キャッシュ制御部101が,新たなパリティデータを生成し,生成した新たなパリティデータに基づいて新たなチェックコードを生成し,チェックコードメモリ104内に格納する(ステップS123)。
すなわち,キャッシュ制御部101は,まず,古いデータと古いパリティデータと更新データとから,更新データに対応する新たなパリティデータを生成する。その後,生成された新たなパリティデータに基づいて,チェックコード管理単位に対応する新たなチェックコードを生成し,生成した新たなチェックコードで,チェックコードメモリ104中のチェックコードページを更新する。
次に,RAID制御部102は,ライトバック要求範囲のデータ(図32では,斜線で示す8KBの更新データ)をディスクへライトする(ステップS124)。ステップS124においては,ステップS123において生成された新たなパリティデータもディスクへライトされる。
そして,RAID制御部102からキャッシュ制御部101に対して,ライトバック完了応答を行う(ステップS125)。
ライトバック要求がシーケンシャルに行われる場合も,キャッシュページ管理テーブルが多数用意される以外は,ライトバックがランダムに行われる場合と同様の処理が行われる。
次に,本実施例におけるステージング要求時の処理の例について,図35および図36を用いて説明する。図35は,RAIDレベルがRAID−1であり,かつステージング要求がランダムに行われる場合の処理の一例を説明する図である。また,図36は,本実施例におけるステージング処理フローの一例を示す図である。
ここでは,ステージング要求された範囲が,チェックコード管理単位(例えば,16ブロック(8KB))のバウンダリと合わない場合について説明する。例えば,図35に示すキャッシュページ200内の,斜線部で示す8KBのステージング要求範囲は,先頭8KBのチェックコード管理単位と末尾8KBのチェックコード管理単位のバウンダリにまたがっている。
図36の処理フローに示すように,まず,キャッシュ制御部101が,RAID制御部102に対してステージング要求を行う(ステップS131)。
RAID制御部102は,ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在するか否かの判定(Hit/Miss判定)を行う(ステップS132)。ここで,ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードとは,例えば,図35のキャッシュページ200中に示す先頭8KBのチェックコード管理単位に対応するチェックコードと,末尾8KBのチェックコード管理単位に対応するチェックコードを指す。
RAID制御部102は,前述したライトバック要求時の処理の場合と同様に,例えば,各チェックコードページ201の管理情報を格納しているチェックコードページ管理テーブルを検索することによって,ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在するかを判断する。
ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在する場合は,ステップS134に進む。ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在しない場合は,RAID制御部102は,ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードをチェックコードディスク105から読み込んでチェックコードメモリ104に格納する(ステップS133)。
本実施例において,ステージング要求範囲は,一度に2ページ分のチェックコードページ201を超えることがないとする。従って,上記ステップS133の処理においては,RAID制御部102は,例えば,チェックコードページ201を2ページ確保するために,チェックコードページ管理テーブル×2を獲得する。
そして,RAID制御部102は,ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードをチェックコードディスク105から読み込んで,獲得したチェックコードページ管理テーブルによって管理される2ページ分のチェックコードページ201へ格納する。
次に,RAID制御部102は,ステージング要求範囲が含まれるチェックコード管理単位に対応するデータを,ディスクからリードする(ステップS134)。例えば,RAID制御部102は,ディスク3から図35のキャッシュページ200中に示す先頭8KBのチェックコード管理単位に対応するデータと末尾8KBのチェックコード管理単位に対応するデータをリードする。
そして,RAID制御部102は,ディスクからリードしたチェックコード管理単位に対応するデータをデータバッファ106に格納するとともに(ステップS135),ステージング要求範囲のデータをキャッシュメモリ103のキャッシュページ200に格納する(ステップS136)。例えば,RAID制御部102は,ディスク3からリードした先頭8KBと末尾8KBのデータをデータバッファ106に格納する。また,RAID制御部102は,ディスク3からリードした先頭8KBのデータのうち,4KB分のステージング要求範囲のデータをキャッシュページ200中に格納する。
また,RAID制御部102は,ディスクからリードした末尾8KBのデータのうち,4KB分のステージング要求範囲のデータをキャッシュページ200中に格納する。
その結果,図35に示すように,キャッシュページ200には,斜線で示す範囲(8KB)のデータがステージングされる。
次に,RAID制御部102は,キャッシュページ200に格納されたステージング範囲のデータが含まれるチェックコード管理単位に対応するチェックコードを生成し,生成したチェックコードを,チェックコードメモリ104内のチェックコードと比較する(ステップS137)。
例えば,RAID制御部102は,データバッファ106に格納された先頭8KBのデータ中のステージング要求範囲以外の4KBのデータと,キャッシュページ200中の先頭8KBのチェックコード管理単位に格納された4KBのステージング範囲のデータとから,チェックコードを生成し,生成したチェックコードを,チェックコードメモリ104内のチェックコードと比較する。
また,例えば,RAID制御部102は,データバッファ106に格納された末尾8KBのデータ中のステージング要求範囲以外の4KBのデータと,キャッシュページ200中の末尾8KBのチェックコード管理単位に格納された4KBのステージング範囲のデータとから,チェックコードを生成し,生成したチェックコードを,チェックコードメモリ104内のチェックコードと比較する。
比較結果が不一致である場合は(ステップS138),RAID制御部102は,ディスクライト抜けの発生を検知する(ステップS139)。
比較結果が一致である場合は,RAID制御部102からキャッシュ制御部101に対して,ステージング完了応答を行う(ステップS140)。
本実施例において,ステージング要求がシーケンシャルに行われる場合の処理は,上述した,ステージング要求がランダムに行われる場合の処理と同様である。
RAIDレベルがRAID−5であり,かつステージング要求がランダムに行われる場合の処理は,RAID制御部102が,ディスクからリードしたパリティデータからチェックコードを生成し,生成したチェックコードをチェックコードメモリ104内のチェックコードと比較することを通じてステージングの正当性をチェックする以外は,上述したRAIDレベルがRAID−1である場合の処理と同様である。
RAIDレベルがRAID−5であり,かつステージング要求がシーケンシャルに行われる場合の処理は,RAIDレベルがRAID−5であり,かつステージング要求がランダムに行われる場合の処理と同様である。
本実施例におけるステージング要求時の処理の別の例について,図37および図38を用いて説明する。図37は,RAIDレベルがRAID−5であり,かつ,あるディスクが故障して,エクスポーズド(Exposed)状態にある場合の処理の一例を説明する図である。また,図38は,本実施例におけるステージング処理フローの一例を示す図である。
本実施例においては,ステージング要求された範囲は,チェックコード管理単位(例えば,16ブロック(8KB))のデータ単位のバウンダリと合わないものとする。例えば,図37に示すキャッシュページ200内の,斜線部で示す8KBのステージング要求範囲は,先頭8KBのチェックコード管理単位と末尾8KBのチェックコード管理単位のバウンダリにまたがっている。
また,本実施例においては,例えば,末尾8KBのチェックコード管理単位のデータは,故障したディスク(図37に示す例では,ディスク5)内に格納されているものとする。
図37および図38に示すように,まず,キャッシュ制御部101が,RAID制御部102に対してステージング要求を行う(ステップS141)。
RAID制御部102は,ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在するか否かの判定(Hit/Miss判定)を行う(ステップS142)。ここで,ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードとは,例えば,図37のキャッシュページ200中に示す先頭8KBのチェックコード管理単位に対応するチェックコードと,末尾8KBのチェックコード管理単位に対応するチェックコードを指す。
RAID制御部102は,例えば,各チェックコードページ201の管理情報を格納しているチェックコードページ管理テーブルを検索して,ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在するかを判断する。
ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在する場合は,ステップS144に進む。ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードがチェックコードメモリ104に存在しない場合は,RAID制御部102は,ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードをチェックコードディスク105から読み込んでチェックコードメモリ104に格納する(ステップS143)。
本実施例において,ステージング要求範囲は,一度に2ページ分のチェックコードページ201を超えることがないとする。従って,上記ステップS143の処理においては,RAID制御部102は,例えば,チェックコードページ201を2ページ確保するために,チェックコードページ管理テーブル×2を獲得する。
そして,RAID制御部102は,ステージング要求範囲が含まれるチェックコード管理単位に対応するチェックコードをチェックコードディスク105から読み込んで,獲得したチェックコードページ管理テーブルによって管理される2ページ分のチェックコードページ201へ格納する。
次に,RAID制御部102は,ステージング要求範囲が含まれるチェックコード管理単位に対応するデータをリードするコマンドをディスクへ発行する(ステップS144)。ステップS144の処理によって,例えば,ディスク4におけるステージング要求範囲が含まれる先頭8KBのチェックコード単位に対応するデータが,データバッファ106に格納される。
RAID制御部102は,故障したディスクに格納されている,ステージング要求が含まれるチェックコード管理単位に対応するデータを復元する(ステップS145)。RAID制御部102は,例えば,故障したディスク5に格納されている,末尾8KBのチェックコード管理単位のデータを復元する。
そして,RAID制御部102は,ディスク4からリードしたデータと復元されたデータとをデータバッファ106に格納するとともに,ステージング要求範囲のデータをキャッシュメモリ103のキャッシュページ200に格納する(ステップS146)。
例えば,RAID制御部102は,ディスク4からリードした先頭8KBのデータと,復元した末尾8KBのデータとをデータバッファ106に格納する。また,RAID制御部102は,ディスク4からリードした先頭8KBのデータのうち,4KB分のステージング要求範囲のデータをキャッシュページ200中に格納する。
また,RAID制御部102は,復元した末尾8KBのデータのうち,4KB分のステージング要求範囲のデータをキャッシュページ200中に格納する。
その結果,図37に示すように,キャッシュページ200には,斜線で示す範囲(8KB)のデータがステージングされる。
次に,RAID制御部102は,キャッシュページ200に格納されたステージング範囲のデータが含まれるチェックコード管理単位に対応するチェックコードを生成し,生成したチェックコードを,チェックコードメモリ104内のチェックコードと比較する(ステップS147)。
例えば,RAID制御部102は,データバッファ106に格納された先頭8KBのデータ中のステージング要求範囲以外の4KBのデータと,キャッシュページ200中に格納された4KBのステージング範囲のデータとから,チェックコードを生成し,生成したチェックコードを,チェックコードメモリ104内のチェックコードと比較する。
また,例えば,RAID制御部102は,データバッファ106に格納された末尾8KBのデータ中のステージング要求範囲以外の4KBのデータと,キャッシュページ200中に格納された4KBのステージング範囲のデータとから,チェックコードを生成し,生成したチェックコードを,チェックコードメモリ104内のチェックコードと比較する。
比較結果が不一致である場合は(ステップS148),RAID制御部102は,ディスクライト抜けの発生を検知する(ステップS149)。
比較結果が一致である場合は,RAID制御部102からキャッシュ制御部101に対して,ステージング完了応答を行う(ステップS150)。
本実施例における,あるディスクが故障した場合のディスクのRebuild(再構築)処理の例について,図39および図40を用いて説明する。図39は,RAIDレベルがRAID−1であり,かつ,RAID−1の一方のディスク(図39では,ディスク4)が故障した場合のRebuild(再構築)処理の一例を説明する図である。図39中の202は,Rebuild要求された範囲のデータが書き込まれるスペアディスクである。また,203は,コントローラ90が備えるRebuildモジュールである。
また,図40は,本実施例における,Rebuild処理フローの一例を示す図である。
本実施例においては,一回のRebuild(再構築)処理範囲は,チェックコード管理単位とバウンダリが一致しているものとする。
まず,コントローラ90内のRebuildモジュール203からRAID制御部102に対してRebuild要求が行われる(ステップS151)。
次に,RAID制御部102は,Rebuild要求範囲に対応するチェックコードがチェックコードメモリ104に存在するか否かの判定(Hit/Miss判定)を行う(ステップS152)。
RAID制御部102は,例えば,前述したライトバック要求時の処理の場合と同様に,各チェックコードページ201の管理情報を格納しているチェックコードページ管理テーブルを検索することによって,上記のHit/Miss判定を行う。
Rebuild要求範囲に対応するチェックコードがチェックコードメモリ104に存在する場合は,ステップS154に進む。Rebuild要求範囲に対応するチェックコードがチェックコードメモリ104に存在しない場合は,RAID制御部102は,Rebuild要求範囲に対応するチェックコードをチェックコードディスク105から読み込んでチェックコードメモリ104に格納する(ステップS153)。
本実施例において,Rebuild要求範囲は,一度に2ページ分のチェックコードページ201を超えることがないとする。従って,上記ステップS153の処理においては,RAID制御部102は,例えば,チェックコードページ201を2ページ確保するために,チェックコードページ管理テーブル×2を獲得する。
そして,RAID制御部102は,Rebuild要求範囲に対応するチェックコードをチェックコードディスク105から読み込んで,獲得したチェックコードページ管理テーブルによって管理される2ページ分のチェックコードページ201へ格納する。
RAID制御部102は,一回のRebuild要求範囲のデータを,故障していない方のディスクからリードし,データバッファ106に格納する(ステップS154)。例えば,RAID制御部102は,一回のRebuild要求範囲のデータを,ディスク3からリードし,データバッファ106に格納する。
次に,RAID制御部102は,データバッファ106に格納された一回のRebuild要求範囲のデータを,スペアディスク202に書き込む(ステップS155)。
次に,RAID制御部102は,ステップS155においてスペアディスク202に書き込まれたデータを,スペアディスク202からリードし,データバッファ106に格納する(ステップS156)。
RAID制御部102は,ステップS156においてデータバッファ106に格納された一回のRebuild要求範囲のデータについて,チェックコードを生成して,生成したチェックコードを,チェックコードメモリ104内のチェックコードと比較する(ステップS157)。
比較結果が不一致である場合は(ステップS158),RAID制御部102は,ディスクライト抜けの発生を検知する(ステップS159)。
比較結果が一致である場合は,RAID制御部102からRebuildモジュール203に対して,Rebuild完了応答を行う(ステップS160)。
なお,本発明は,コンピュータにより読み取られ実行されるプログラムとして実施することもできる。本発明を実現するプログラムは,コンピュータが読み取り可能な,可搬媒体メモリ,半導体メモリ,ハードディスクなどの適当な記録媒体に格納することができ,これらの記録媒体に記録して提供され,または,通信インタフェースを介してネットワークを利用した送受信により提供されるものである。
以上から把握できるように,本発明の実施形態の特徴を述べると,以下のとおりである。
(付記1) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出装置であって,
前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,更新前の更新状態値と異なる新しい更新状態値を生成し,その新しい更新状態値を更新状態確認値としてメモリに記憶し,前記更新データと前記新しい更新状態値とを含む1管理単位をディスクにライトする更新状態設定手段と,
ディスクからリードした1管理単位中の前記更新状態値と,前記メモリに記憶した更新状態確認値とを比較し,一致しない場合にディスクのライト抜けが発生したことを検出する更新状態チェック手段とを備える
ことを特徴とするディスクライト抜け検出装置。
(付記2) 付記1に記載のディスクライト抜け検出装置において,
前記更新状態値は,更新世代数,更新の時刻,もしくは前記複数のブロックの更新データから一意に生成されるチェックコード,またはそれらの組み合わせである
ことを特徴とするディスクライト抜け検出装置。
(付記3) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出装置であって,
前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,前記1管理単位中の更新データによって定まる更新状態値を算出し,前記更新データと前記更新状態値とを含む1管理単位をディスクにライトする更新状態設定手段と,
ディスクからリードした1管理単位中の更新データによって定まる更新状態値を算出し,算出した更新状態値を更新状態確認値として,ディスクからリードした1管理単位中の更新状態値と前記更新状態確認値とを比較し,一致しない場合にディスクのライト抜けが発生したことを検出する更新状態チェック手段とを備える
ことを特徴とするディスクライト抜け検出装置。
(付記4) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出装置であって,
前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,更新前の更新状態値と異なる新しい更新状態値を生成し,前記更新データと前記新しい更新状態値とを含む1管理単位を複数のディスクに冗長にライトする更新状態設定手段と,
前記複数のディスクのそれぞれからリードした1管理単位中の前記更新状態値を比較し,一致しない場合にディスクのライト抜けが発生したことを検出する更新状態チェック手段とを備える
ことを特徴とするディスクライト抜け検出装置。
(付記5) 付記1乃至付記4のいずれかに記載のディスクライト抜け検出装置において,
前記更新状態設定手段は,
前記1管理単位中の今回内容が変更される更新データを含むブロックと前記履歴ブロックとの間に今回内容が変更されない更新対象外のブロックが存在するとき,その更新対象外のブロックのデータをディスクからリードし,前記更新データを含むブロックのデータとマージするデータマージ手段を備える
ことを特徴とするディスクライト抜け検出装置。
(付記6) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出方法であって,
前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,更新前の更新状態値と異なる新しい更新状態値を生成し,その新しい更新状態値を更新状態確認値としてメモリに記憶し,前記更新データと前記新しい更新状態値とを含む1管理単位をディスクにライトするステップと,
ディスクからリードした1管理単位中の前記更新状態値と,前記メモリに記憶した更新状態確認値とを比較し,一致しない場合にディスクのライト抜けが発生したことを検出するステップとを有する
ことを特徴とするディスクライト抜け検出方法。
(付記7) 付記6に記載のディスクライト抜け検出方法において,
前記更新状態値は,更新世代数,更新の時刻,もしくは前記複数のブロックの更新データから一意に生成されるチェックコード,またはそれらの組み合わせである
ことを特徴とするディスクライト抜け検出方法。
(付記8) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出方法であって,
前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,前記1管理単位中の更新データによって定まる更新状態値を算出し,前記更新データと前記更新状態値とを含む1管理単位をディスクにライトするステップと,
ディスクからリードした1管理単位中の更新データによって定まる更新状態値を算出し,算出した更新状態値を更新状態確認値として,ディスクからリードした1管理単位中の更新状態値と前記更新状態確認値とを比較し,一致しない場合にディスクのライト抜けが発生したことを検出するステップとを有する
ことを特徴とするディスクライト抜け検出方法。
(付記9) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出方法であって,
前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,更新前の更新状態値と異なる新しい更新状態値を生成し,前記更新データと前記新しい更新状態値とを含む1管理単位を複数のディスクに冗長にライトするステップと,
前記複数のディスクのそれぞれからリードした1管理単位中の前記更新状態値を比較し,一致しない場合にディスクのライト抜けが発生したことを検出するステップとを有する
ことを特徴とするディスクライト抜け検出方法。
(付記10) 付記6乃至付記9のいずれかに記載のディスクライト抜け検出方法において,
前記1管理単位中の今回内容が変更される更新データを含むブロックと前記履歴ブロックとの間に今回内容が変更されない更新対象外のブロックが存在するとき,その更新対象外のブロックのデータをディスクからリードし,前記更新データを含むブロックのデータとマージするステップを有する
ことを特徴とするディスクライト抜け検出方法。
(付記11) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出プログラムであって,
コンピュータを,
前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,更新前の更新状態値と異なる新しい更新状態値を生成し,その新しい更新状態値を更新状態確認値としてメモリに記憶し,前記更新データと前記新しい更新状態値とを含む1管理単位をディスクにライトする更新状態設定手段と,
ディスクからリードした1管理単位中の前記更新状態値と,前記メモリに記憶した更新状態確認値とを比較し,一致しない場合にディスクのライト抜けが発生したことを検出する更新状態チェック手段として機能させるためのディスクライト抜け検出プログラム。
(付記12) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出プログラムであって,
コンピュータを,
前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,前記1管理単位中の更新データによって定まる更新状態値を算出し,前記更新データと前記更新状態値とを含む1管理単位をディスクにライトする更新状態設定手段と,
ディスクからリードした1管理単位中の更新データによって定まる更新状態値を算出し,算出した更新状態値を更新状態確認値として,ディスクからリードした1管理単位中の更新状態値と前記更新状態確認値とを比較し,一致しない場合にディスクのライト抜けが発生したことを検出する更新状態チェック手段として機能させるためのディスクライト抜け検出プログラム。
(付記13) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出プログラムであって,
コンピュータを,
前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,更新前の更新状態値と異なる新しい更新状態値を生成し,前記更新データと前記新しい更新状態値とを含む1管理単位を複数のディスクに冗長にライトする更新状態設定手段と,
前記複数のディスクのそれぞれからリードした1管理単位中の前記更新状態値を比較し,一致しない場合にディスクのライト抜けが発生したことを検出する更新状態チェック手段として機能させるためのディスクライト抜け検出プログラム。
(付記14) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出プログラムを記録したコンピュータ読み取り可能な記録媒体であって,
コンピュータを,
前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,更新前の更新状態値と異なる新しい更新状態値を生成し,その新しい更新状態値を更新状態確認値としてメモリに記憶し,前記更新データと前記新しい更新状態値とを含む1管理単位をディスクにライトする更新状態設定手段と,
ディスクからリードした1管理単位中の前記更新状態値と,前記メモリに記憶した更新状態確認値とを比較し,一致しない場合にディスクのライト抜けが発生したことを検出する更新状態チェック手段として機能させるためのディスクライト抜け検出プログラムを記録した記録媒体。
(付記15) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出プログラムを記録したコンピュータ読み取り可能な記録媒体であって,
コンピュータを,
前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,前記1管理単位中の更新データによって定まる更新状態値を算出し,前記更新データと前記更新状態値とを含む1管理単位をディスクにライトする更新状態設定手段と,
ディスクからリードした1管理単位中の更新データによって定まる更新状態値を算出し,算出した更新状態値を更新状態確認値として,ディスクからリードした1管理単位中の更新状態値と前記更新状態確認値とを比較し,一致しない場合にディスクのライト抜けが発生したことを検出する更新状態チェック手段として機能させるためのディスクライト抜け検出プログラムを記録した記録媒体。
(付記16) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出プログラムを記録したコンピュータ読み取り可能な記録媒体であって,
コンピュータを,
前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックに対して,その更新状態を示す更新状態値を設定する履歴ブロックを1ブロック割り当て,前記複数のブロックと前記履歴ブロックとを更新状態チェック対象の1管理単位とし,更新データをディスクにライトするときに,更新前の更新状態値と異なる新しい更新状態値を生成し,前記更新データと前記新しい更新状態値とを含む1管理単位を複数のディスクに冗長にライトする更新状態設定手段と,
前記複数のディスクのそれぞれからリードした1管理単位中の前記更新状態値を比較し,一致しない場合にディスクのライト抜けが発生したことを検出する更新状態チェック手段として機能させるためのディスクライト抜け検出プログラムを記録した記録媒体。
(付記17) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出装置であって,
前記コンピュータがライト/リードの対象とする更新データを格納するキャッシュメモリと,
前記更新データを設定する複数のブロックをディスクのライト抜けの検出対象の管理単位とし,前記キャッシュメモリに格納された前記更新データをディスクにライトバックするときに,ライトバック要求範囲が含まれる前記管理単位毎に第1のチェックコードを生成して,生成した第1のチェックコードを記憶手段内に記憶するチェックコード生成手段と,
前記ディスクから前記キャッシュメモリにデータをステージングするときに,ステージング要求範囲が含まれる前記管理単位を前記ディスクからリードし,前記リードされた管理単位のうち,前記ステージング要求範囲のデータを前記キャッシュメモリに格納し,前記キャッシュメモリに格納された前記ステージング要求範囲のデータと,前記リードされた管理単位のうち,前記ステージング要求範囲以外のデータとから,第2のチェックコードを生成し,前記生成された第2のチェックコードを,前記記憶手段内に記憶されている,前記ステージング要求範囲が含まれる管理単位に対応する第1のチェックコードと比較し,一致しない場合にディスクのライト抜けが発生したことを検出するディスクライト抜け検出手段とを備える
ことを特徴とするディスクライト抜け検出装置。
(付記18) 付記17に記載のディスクライト抜け検出装置において,
前記ディスクライト抜け検出手段は,前記更新データをディスクにライトバックするときに,前記ライトバック要求範囲が含まれる前記管理単位をディスクからリードし,前記リードされた前記管理単位から第3のチェックコードを生成し,前記生成された第3のチェックコードを,前記記憶手段内に記憶されている,前記ライトバック要求範囲が含まれる管理単位に対応する第1のチェックコードと比較し,
前記チェックコード生成手段は,前記ディスクライト抜け検出手段による前記第3のチェックコードと前記第1のチェックコードとの比較結果が一致である場合に,前記ライトバック要求範囲の更新データと,前記ディスクライト抜け検出手段によってリードされた管理単位のうち,前記ライトバック要求範囲以外のデータとから,新たな第1のチェックコードを生成し,前記生成された新たな第1のチェックコードを,前記ライトバック要求範囲が含まれる前記管理単位に対応する第1のチェックコードとして前記記憶手段内に記憶する
ことを特徴とするディスクライト抜け検出装置。
(付記19) 付記17に記載のディスクライト抜け検出装置において,
前記チェックコード生成手段は,前記更新データをディスクにライトバックするときに,ライトバック要求範囲が含まれる前記管理単位に対応するパリティデータについてチェックコードを生成して,前記第1のチェックコードとして前記記憶手段内に記憶し,
前記ディスクライト抜け検出手段は,前記更新データをディスクにライトバックするときに,前記ライトバック要求範囲が含まれる前記管理単位に対応するパリティデータをディスクからリードし,前記リードされたパリティデータから第4のチェックコードを生成し,前記生成された第4のチェックコードを,前記記憶手段内に記憶されている,前記ライトバック要求範囲が含まれる管理単位に対応するパリティデータについて生成された前記第1のチェックコードと比較し,一致しない場合にディスクのライト抜けが発生したことを検出する
ことを特徴とするディスクライト抜け検出装置。
(付記20) コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出方法であって,
前記コンピュータがライト/リードの対象とする更新データを設定する複数のブロックをディスクのライト抜けの検出対象の管理単位とし,前記更新データが格納されたキャッシュメモリから前記更新データをディスクにライトバックするときに,ライトバック要求範囲が含まれる前記管理単位毎に第1のチェックコードを生成して,生成した第1のチェックコードを記憶手段内に記憶するステップと,
前記ディスクから前記キャッシュメモリにデータをステージングするときに,ステージング要求範囲が含まれる前記管理単位を前記ディスクからリードし,前記リードされた管理単位のうち,前記ステージング要求範囲のデータを前記キャッシュメモリに格納し,前記キャッシュメモリに格納された前記ステージング要求範囲のデータと,前記リードされた管理単位のうち,前記ステージング要求範囲以外のデータとから,第2のチェックコードを生成し,前記生成された第2のチェックコードを,前記記憶手段内に記憶されている,前記ステージング要求範囲が含まれる管理単位に対応する第1のチェックコードと比較し,一致しない場合にディスクのライト抜けが発生したことを検出するステップとを有する
ことを特徴とするディスクライト抜け検出方法。
更新状態確認値,更新データおよび更新状態値を示す図である。 本発明のシステム構成図の一例を示す図である。 本発明のシステム構成の別の例を示す図である。 ディスクライト抜け検出装置の機能ブロック図の一例を示す図である。 更新状態確認値管理テーブルのデータ構成の一例を示す図である。 Nブロックのうちの一部のブロックのデータ更新を示す図である。 ライト処理フローの一例を示す図である。 更新状態チェック処理フローの一例を示す図である。 ライト処理フローの一例を示す図である。 更新状態チェック処理フローの一例を示す図である。 ライト処理フローの一例を示す図である。 更新状態チェック処理フローの一例を示す図である。 新更新状態値の算出を説明する図である。 更新状態チェック処理フローの一例を示す図である。 更新状態値および更新状態確認値のデータ構成の一例を示す図である。 ライト処理フローの一例を示す図である。 更新状態チェック処理フローの一例を示す図である。 更新状態チェック処理フローの一例を示す図である。 1ブロックのフォーマット例を示す図である。 本発明の実施例7のシステム構成図の一例を示す図である。 コントローラの構成の一例を示す図である。 チェックコードの生成を説明する図である。 チェックコードメモリの構成例を示す図である。 チェックコードページの一例を示す図である。 RAIDグループについて定義された論理ボリュームとチェックコードとチェックコードメモリとの関係例を説明する図である。 チェックコードページ管理テーブルのフォーマット例を示す図である。 LRUリンクの例を示す図である。 ライトバック要求時の処理の例を説明する図である。 ライトバック要求時の処理の例を説明する図である。 ライトバック処理フローの一例を示す図である。 Hash管理の概念図である。 ライトバック要求時の処理の例を説明する図である。 ライトバック処理フローの一例を示す図である。 ライトバック処理フローの一例を示す図である。 ステージング要求時の処理の例を説明する図である。 ステージング処理フローの一例を示す図である。 ステージング要求時の処理の例を説明する図である。 ステージング処理フローの一例を示す図である。 ディスクのRebuild処理の例を説明する図である。 Rebuild処理フローの一例を示す図である。
符号の説明
1 ホストコンピュータ
2,90 コントローラ
3,4,5,6 ディスク
7,9 RAID装置
8 メモリ
20,21 ディスクライト抜け検出装置
21 更新状態設定部
22 ディスクライト部
23 ディスクリード部
24 更新状態チェック部
25 更新状態確認値管理テーブル
91 CA
92 DA
100 リソース制御部
101 キャッシュ制御部
102 RAID制御部
103 キャッシュメモリ
104 チェックコードメモリ
105 チェックコードディスク
106 データバッファ
107 パリティバッファ
200 キャッシュページ
201 チェックコードページ
202 スペアディスク
203 Rebuildモジュール
210 更新状態値算出部
211 更新状態確認値設定部
212 更新データ・更新状態値設定部
213 データマージ部
240 更新状態比較部
241 ディスクライト抜け認知部
242 更新状態確認値算出部

Claims (1)

  1. コンピュータの処理対象となる電子データを記憶するディスクのライト抜けを検出するディスクライト抜け検出装置であって,
    前記コンピュータがライト/リードの対象とする更新データを格納するキャッシュメモリと,
    前記更新データを設定する複数のブロックをディスクのライト抜けの検出対象の管理単位とし,前記キャッシュメモリに格納された前記更新データをディスクにライトバックするときに,ライトバック要求範囲が含まれる前記管理単位毎に第1のチェックコードを生成して,生成した第1のチェックコードを記憶手段内に記憶するチェックコード生成手段と,
    前記ディスクから前記キャッシュメモリにデータをステージングするときに,ステージング要求範囲が含まれる前記管理単位を前記ディスクからリードし,前記リードされた管理単位のうち,前記ステージング要求範囲のデータを前記キャッシュメモリに格納し,前記キャッシュメモリに格納された前記ステージング要求範囲のデータと,前記リードされた管理単位のうち,前記ステージング要求範囲以外のデータとから,第2のチェックコードを生成し,前記生成された第2のチェックコードを,前記記憶手段内に記憶されている,前記ステージング要求範囲が含まれる管理単位に対応する第1のチェックコードと比較し,一致しない場合にディスクのライト抜けが発生したことを検出するディスクライト抜け検出手段とを備える
    ことを特徴とするディスクライト抜け検出装置。
JP2005333719A 2005-02-08 2005-11-18 ディスクライト抜け検出装置 Expired - Fee Related JP4805660B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005333719A JP4805660B2 (ja) 2005-02-08 2005-11-18 ディスクライト抜け検出装置
US11/348,320 US7487289B2 (en) 2005-02-08 2006-02-07 Apparatus and method for detecting disk write omissions

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005031232 2005-02-08
JP2005031232 2005-02-08
JP2005333719A JP4805660B2 (ja) 2005-02-08 2005-11-18 ディスクライト抜け検出装置

Publications (2)

Publication Number Publication Date
JP2006252530A JP2006252530A (ja) 2006-09-21
JP4805660B2 true JP4805660B2 (ja) 2011-11-02

Family

ID=36781212

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005333719A Expired - Fee Related JP4805660B2 (ja) 2005-02-08 2005-11-18 ディスクライト抜け検出装置

Country Status (2)

Country Link
US (1) US7487289B2 (ja)
JP (1) JP4805660B2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007242207A (ja) * 2006-03-13 2007-09-20 Fujitsu Ltd ディスク装置の媒体スキャン方法
JP4425904B2 (ja) * 2006-12-21 2010-03-03 富士通株式会社 ライト抜け検出装置、ライト抜け検出方法およびライト抜け検出プログラム
US8468977B2 (en) * 2007-08-07 2013-06-25 The Kong Company, Llc Pet toy with noise making instrument
JP2009075675A (ja) * 2007-09-18 2009-04-09 Nec Computertechno Ltd 整合性チェック方法及び整合性チェックシステム
US7873878B2 (en) * 2007-09-24 2011-01-18 International Business Machines Corporation Data integrity validation in storage systems
JP4460596B2 (ja) * 2007-10-30 2010-05-12 富士通株式会社 ディスク管理方法、ディスク管理装置およびストレージシステム
JP5391712B2 (ja) * 2009-02-05 2014-01-15 富士通株式会社 ディスクアレイ装置
US8732396B2 (en) * 2009-06-08 2014-05-20 Lsi Corporation Method and apparatus for protecting the integrity of cached data in a direct-attached storage (DAS) system
US8230189B1 (en) * 2010-03-17 2012-07-24 Symantec Corporation Systems and methods for off-host backups of striped volumes
US7962959B1 (en) * 2010-12-01 2011-06-14 Kaspersky Lab Zao Computer resource optimization during malware detection using antivirus cache
US8424093B2 (en) * 2010-11-01 2013-04-16 Kaspersky Lab Zao System and method for updating antivirus cache
JP5673178B2 (ja) 2011-02-10 2015-02-18 富士通株式会社 ストレージ装置及びストレージ装置制御方法
JP2015138372A (ja) 2014-01-22 2015-07-30 富士通株式会社 書込検査プログラム,情報処理装置,及び書込検査方法
JP6142860B2 (ja) * 2014-11-05 2017-06-07 日本電気株式会社 ディスクアレイ装置、ディスク制御装置、ソリッドステートドライブ、ディスク制御方法、及びそのためのプログラム
US10884924B2 (en) * 2015-03-04 2021-01-05 Hitachi, Ltd. Storage system and data writing control method
US10552062B2 (en) * 2017-03-20 2020-02-04 Samsung Electronics Co., Ltd. System and method for storing very large key value objects
US11275762B2 (en) 2017-03-20 2022-03-15 Samsung Electronics Co., Ltd. System and method for hybrid data reliability for object storage devices
US10795760B2 (en) 2017-03-20 2020-10-06 Samsung Electronics Co., Ltd. Key value SSD
JP7056867B2 (ja) * 2017-12-18 2022-04-19 Necプラットフォームズ株式会社 制御装置、制御プログラム、及び制御方法
TWI750425B (zh) * 2018-01-19 2021-12-21 南韓商三星電子股份有限公司 資料儲存系統和用於寫入鍵值對的物件的方法
CN112599172B (zh) * 2020-12-24 2024-05-17 潍柴动力股份有限公司 电子控制单元的数据写入方法、装置及存储介质
CN115729444A (zh) * 2021-09-01 2023-03-03 华为技术有限公司 一种数据处理方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5195100A (en) * 1990-03-02 1993-03-16 Micro Technology, Inc. Non-volatile memory storage of write operation identifier in data sotrage device
JPH10171608A (ja) 1996-12-11 1998-06-26 Nec Corp 磁気ディスクアレイ装置及び磁気ディスクアレイ装置に於けるデータチェック方法
JP2002023966A (ja) * 2000-06-30 2002-01-25 Toshiba Corp 転送データを冗長化したディスクシステム
JP3964629B2 (ja) * 2001-04-27 2007-08-22 株式会社東芝 ディスクアレイ装置のパトロールによるデータパス異常検出方法及びディスクアレイ装置を備えたコンピュータシステム
US6742081B2 (en) * 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
JP4454204B2 (ja) * 2002-05-16 2010-04-21 日本電気株式会社 ディスクアレイ制御装置及び方法並びにディスクアレイ制御プログラム
US7577804B2 (en) * 2004-10-06 2009-08-18 International Business Machines Corporation Detecting data integrity

Also Published As

Publication number Publication date
US20060179217A1 (en) 2006-08-10
US7487289B2 (en) 2009-02-03
JP2006252530A (ja) 2006-09-21

Similar Documents

Publication Publication Date Title
JP4805660B2 (ja) ディスクライト抜け検出装置
JP5768587B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
CN102163458B (zh) 半导体存储器装置
JP6294518B2 (ja) 不揮発性メモリシステムにおける同期ミラーリング
US8209595B2 (en) Storage sub-system and method for controlling the same
CN110413205B (zh) 用于向磁盘阵列进行写入的方法、设备和计算机可读存储介质
US8453033B2 (en) Semiconductor memory device
US20150212752A1 (en) Storage system redundant array of solid state disk array
CN100377064C (zh) 存储系统
CN104598162A (zh) 用于跨存储设备写入数据的方法和系统
JP4324088B2 (ja) データ複製制御装置
US7849258B2 (en) Storage apparatus and data verification method for the same
US20140026013A1 (en) Storage control apparatus and error correction method
JP2007156597A (ja) ストレージ装置
JP2006139478A (ja) ディスクアレイシステム
CN110737395B (zh) I/o管理方法、电子设备和计算机可读存储介质
US20120260043A1 (en) Fabricating key fields
JP2012190331A (ja) データ記憶装置及びテーブル管理方法
US20150347224A1 (en) Storage control apparatus and method therefor
WO2012081058A1 (en) Storage subsystem and its logical unit processing method
CN104205097B (zh) 一种去重方法装置与系统
US9934093B2 (en) Control device, method of controlling a storage device, and storage system
US11822829B2 (en) Method, device, and program product for data rebuilding
JP7647078B2 (ja) 情報処理装置、重複除去方法及び重複除去プログラム
CN116048876A (zh) 数据存储方法、数据检测方法、装置及可读取存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100205

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100205

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101217

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: 20110809

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110811

R150 Certificate of patent or registration of utility model

Ref document number: 4805660

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140819

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees