JP2006146833A - ディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法 - Google Patents

ディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法 Download PDF

Info

Publication number
JP2006146833A
JP2006146833A JP2004339723A JP2004339723A JP2006146833A JP 2006146833 A JP2006146833 A JP 2006146833A JP 2004339723 A JP2004339723 A JP 2004339723A JP 2004339723 A JP2004339723 A JP 2004339723A JP 2006146833 A JP2006146833 A JP 2006146833A
Authority
JP
Japan
Prior art keywords
read
disk
data
address
command
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.)
Pending
Application number
JP2004339723A
Other languages
English (en)
Inventor
Tetsuya Kamimura
上村  哲也
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.)
HGST Netherlands BV
Original Assignee
Hitachi Global Storage Technologies Netherlands BV
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 Hitachi Global Storage Technologies Netherlands BV filed Critical Hitachi Global Storage Technologies Netherlands BV
Priority to JP2004339723A priority Critical patent/JP2006146833A/ja
Priority to US11/274,571 priority patent/US7577897B2/en
Publication of JP2006146833A publication Critical patent/JP2006146833A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/1054Parity-fast hardware, i.e. dedicated fast hardware for RAID systems with parity
    • 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/1088Scrubbing in RAID systems with parity

Abstract

【課題】ディスク装置のインタフェース帯域を消費せずにディスクアレイ装置のデータの整合性検証を可能にするディスク装置の整合性検証支援方法を提供する。
【解決手段】データ検証のための演算をディスク装置内でも演算可能な第一段階演算とディスクアレイ装置内でなければ演算不可能な第二段階演算とに分割する。第一段階での演算は以下の手順で行う。ステップ113で記憶媒体からデータを読み出し、ステップ114で保存しておいた演算の中間結果を読み出し、ステップ115で二つのデータで演算を行い、ステップ116で演算結果を新たな中間結果として保存する。第二段階の演算では、各ディスク装置から第一段階の演算結果を読み出してそれらの演算結果どうしでさらに演算を行う。
【選択図】図1

Description

本発明は、ディスクアレイ装置の整合性検査方法に関し、特にディスクアレイ装置の内蔵するディスク装置内部の制御部で第一段階の演算を行い、ディスクアレイ装置内部のディスクアレイ制御部で第二段階の演算を行うことで、ディスク装置とのデータ通信量を削減しつつ整合性検査を行う、ディスクアレイ装置の整合性検査方法に関する。
最近のストレージサブシステムでは従来の大型ディスクに代わり Pattersonらの提案した RAID システム (D. A. Patterson, G. A. Gibson, R. H. Katz, ''A Case for Redundant Arrays of Inexpensive Disks (RAID)'', Proceedings of the International Conference on Management of Data (SIGMOD), June 1988,pp.109-116) を採用している。RAID-3, RAID-4, RAID-5 では複数のディスク装置(HDD) を使い、その中の一台にパリティデータを保存する。例えば四台の HDDを使用する場合、三台の HDD にデータを保存して一台の HDD にパリティデータを保存する。このような HDD の構成を 3D+1P と呼ぶ。
以下では RAID-5 を例に説明するが、その他の RAID-3 や RAID-4, RAID-6 などの他のRAID でも同様に理解できる。
RAID-5 ではホストコンピュータからのデータを 4KB や 8KB などのブロックサイズに分割し、複数の HDD に順番に書き込む。3D+1P の構成では三台の HDD にデータ Data1, Data2, Data3, を書き込んだ後に、残りの一台にパリティデータ Parity を書き込む。Parity は式(1)のように Data1, Data2, Data3, 期待値Expected Value との間で排他的論理和(XOR)を計算して生成する。
Figure 2006146833
奇数パリティの場合にはExpected Value の全てのビットが 1 になっている。任意のデータが壊れた場合でも残りのデータとパリティと期待値とで壊れたデータを再生できる。式(2)に Data1, Data2, Parity, Expected Value から Data3 を再生する場合を示す。このため、RAID-5 を構成する HDD の内の任意の一台が故障しても残りの HDDからデータを再生できる。つまり、RAID-5 は一点障碍から回復できるアーキテクチャになっている。
Figure 2006146833
図3に従来のディスクアレイ装置の構成を示す。図3において、300は従来のディスクアレイ装置、301はホストコンピュータとのインタフェース、302は内部接続バス、303はメモリコントローラ、304はプロセッサバス、305はマイクロプロセッサ、306はXOR演算器、307はメモリバス、308はキャッシュメモリ、309はディスク装置とのインタフェース、310はディスク装置との接続バス、311はディスク装置、321はホストコンピュータ、322はホストコンピュータとの接続バスである。
図3により、ディスクアレイ装置の動作の概要を説明する。ホストコンピュータ321は SCSI (Small Computer System Interface) や FC-AL (FibreChannel Arbitrated Loop) などからなるホストコンピュータとの接続バス322によってコマンドやデータをディスクアレイ装置300に送信する。ディスクアレイ装置300ではホストコンピュータ321からのコマンドやデータをホストコンピュータとのインタフェース(ホストインタフェース)301で受信する。ホストインタフェース301は、PCI バスなどの内部バス302を通してメモリコントローラ303とメモリバス307を通してキャッシュメモリ308に受信したコマンドやデータを保存する。マイクロプロセッサ305はプロセッサバス304を通してメモリコントローラ303経由でキャッシュメモリ307にアクセスする。
受信したコマンドが書き込み命令の場合には、マイクロプロセッサ305は、キャッシュメモリ308に保存された受信したデータとXOR演算器306とを使ってパリティデータを生成してキャッシュメモリ308に保存する。メモリコントローラ303と内部バス302で接続されたディスク装置とのインタフェース(ディスクインタフェース)309が、キャッシュメモリ308に保存された受信したデータとパリティデータとを読み出して複数のディスク装置311に書き込む。ディスクインタフェース309とディスク装置311とは SCSI や FC-ALなどからなるディスク装置との接続バス310により接続される。
受信したコマンドが読み出しの場合には、ディスクインタフェース309がディスク装置311からデータを読み出してキャッシュメモリ308に格納し、ホストインタフェース301がキャッシュメモリ308から格納されたデータを読み出しホストコンピュータ321に送信する。
ホストインタフェース301、メモリコントローラ303、マイクロプロセッサ305、キャッシュメモリ308、ディスクインタフェース309、などがディスクアレイ制御部である。
ディスク装置311に障碍が発生すると、ディスクインタフェース309がディスク装置の障碍をマイクロプロセッサ305に伝える。マイクロプロセッサ305はディスクアレイ装置300のコンソール(図3中に図示されていない)にディスク障碍の発生を表示し、ディスクアレイ装置300の管理者に障碍の発生したディスク装置311の正常なディスク装置311への交換を促す。そして正常なディスク装置311への交換後に、マイクロプロセッサ305はディスクインタフェース309を用いて正常に動作していたディスク装置311からデータを読み出す。次に、マイクロプロセッサ305は、XOR 演算器306によって交換したディスク装置311に格納すべきデータを生成し、ディスクインタフェース309により交換したディスク装置311にデータを書き込む。
RAID-5 ではパリティデータが一つであるので、ディスク装置が一台壊れる一点障碍からは回復できるが、ディスク装置が二台壊れる二点障碍からは回復できない。RAID-5 の障碍回復で最も問題となるのは、データ再生のためにディスク装置からデータを読み出している最中に今まで検出できていなかった障碍が発覚して二点障碍になる場合である。二点障碍からは回復できないため、データが消失してしまう。このような障碍の例として、ディスク装置の記憶媒体への書き込みヘッドが壊れており、ディスクアレイ制御部には書き込みコマンドへの正常応答を返すにも関わらずデータ書き込みに失敗する場合がある。ディスク装置の記憶媒体からの読み出しヘッドが故障していなければデータの読み出しを正常に実行できるため、このような障碍の検出は非常に困難である。ディスク装置単体で行う場合には、全てのデータを書き込んだ直後に読み出しテストをするしかないが、これではディスク装置の性能が大幅に劣化するため現実的ではない。このため、ディスク装置の整合性を検証するには、ディスクアレイ装置に搭載した全てのディスク装置から全てのデータを読み出して、整合性を検証する演算を行う必要がある。
図5と式(3)を使いデータ整合性の検証方法について説明する。図5は、RAID-5 のブロックアドレスの模式図である。図5において、501は第一のディスク装置のブロックアドレス、502は第二のディスク装置のブロックアドレス、503は第三のディスク装置のブロックアドレス、504は第四のディスク装置のブロックアドレス、505はブロックアドレス、である。式(3)は RAID-5 のデータ検証方法である。
Figure 2006146833
RAID-5 ではホストからのデータを 4KB や8KB などのブロックサイズに分割して複数のディスク装置に格納する。ディスク装置のセクタアドレスの先頭からブロックサイズ毎にアドレスを付ける。このアドレスをブロックアドレスと呼ぶ。さらに、ディスクの識別子もつけてどのディスク装置のブロックアドレスかを一意に指定できるようにする。例えば、ディスク装置の識別子が N で、ブロックアドレスが abc の場合には、そのブロックは505のように N-abc のように指定できる。501、502、503、504のように、各ディスク装置のブロックアドレスは、000 から xyz まで存在し、第一のディスク装置の識別子を 0、第二のディスク装置の識別子を 1、第三のディスク装置の識別子を 2、第四のディスク装置の識別子を 3 とする。
例えば、ブロックアドレスabc に書かれたデータの整合性を検証するためには、式(3)のように第一から第四のディスク装置の abc のブロックアドレスからデータを読み出して XOR 演算を行い XOR-abc を計算する。データが正常に記録されていれば、XOR-abc は期待値になる。
このようなデータ整合性の検証のためには、ディスク装置との接続バス310を使ってディスク装置311のデータをキャッシュメモリ308に読み込み、XOR演算器306で演算しなければならない。この処理にはディスク装置311のインタフェース帯域、ディスク装置との接続バス310の帯域、を消費するため、ディスクアレイ装置300のホストコンピュータ321の要求を処理する能力が低下する。同様に、ホストコンピュータ321の要求を処理するためのキャッシュメモリ308の容量やXOR演算器306の使用可能な時間が少なくなり、ディスクアレイ装置300の処理性能力が低下する。
このようなディスクアレイ装置の処理能力の低下を避けるため、特開2002-145903 に記載の「補助記憶装置の診断方法、情報処理装置、及び補助記憶部の診断手順を記憶した記憶媒体」では、プロセッサの空き時間を利用して補助記憶装置の診断を行う手法を提案している。
特開2002-145903 号公報 D. A. Patterson, G. A. Gibson, R. H. Katz, "A Case for Redundant Arrays of Inexpensive Disks (RAID)", Proceedings of the International Conference on Management of Data (SIGMOD), June 1988, pp.109-116
しかし、特開2002-145903 号公報の方法ではディスク装置のインタフェース帯域を使ってディスク装置に記憶した全てのデータを読み出すという問題が解決できていない。
本発明の第一の目的は、ディスク装置のインタフェース帯域を消費せずにディスクアレイ装置のデータの整合性検証を可能にするディスク装置の整合性検証支援方法を提供することである。
本発明の第二の目的は、アドレス範囲を指定して、ディスク装置のインタフェース帯域を消費せずにディスクアレイ装置のデータの整合性検証を可能にするディスク装置の整合性検証支援方法を提供することである。
本発明の第三の目的は、ブロックサイズを指定して、ディスク装置のインタフェース帯域を消費せずにディスクアレイ装置のデータの整合性検証を可能にするディスク装置の整合性検証支援方法を提供することである。
本発明の第四の目的は、上位装置からの書き込みが発生しても、ディスク装置のインタフェース帯域を消費せずにディスクアレイ装置のデータの整合性検証を可能にするディスク装置の整合性検証支援方法を提供することである。
本発明の第五の目的は、データ検証の優先順位を指定可能な、ディスク装置のインタフェース帯域を消費せずにディスクアレイ装置のデータの整合性検証を可能にするディスク装置の整合性検証支援方法を提供することである。
本発明の第六の目的は、どのアドレスまで演算を行ったかディスク装置で管理可能な、ディスク装置のインタフェース帯域を消費せずにディスクアレイ装置のデータの整合性検証を可能にするディスク装置の整合性検証支援方法を提供することである。
本発明の第七の目的は、あるアドレスの範囲毎に演算の中間結果を保存可能な、ディスク装置のインタフェース帯域を消費せずにディスクアレイ装置のデータの整合性検証を可能にするディスク装置の整合性検証支援方法を提供することである。
本発明の第八の目的は、整合性検証支援機能を備えるディスク装置を用いて、ディスク装置のインタフェース帯域を消費せずにディスクアレイ装置のデータの整合性検証を可能にするディスクアレイ装置の整合性検証方法を提供することである。
本発明の第九の目的は、ディスクアレイ装置の整合性が壊れている場合にどのディスク装置に障碍が発生しているか特定可能な、ディスク装置のインタフェース帯域を消費せずにディスクアレイ装置のデータの整合性検証を可能にするディスクアレイ装置の整合性検証方法を提供することである。
本発明によるディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法は、前記目的を達成するため、以下の手段を有する。
本発明によるディスク装置の整合性検査支援方法は、記憶媒体と、一時記憶用バッファと、上位装置との間でコマンドやデータの送受信を行い、記憶媒体ならびに一時記憶用バッファに対して書き込みまたは読み出し制御を行う制御部とを備えるディスク装置において、制御部が、記憶媒体の読み出しアドレスから所定のデータサイズ分の第一のデータを読み出すステップ、一時記憶用バッファから前記データサイズ分の第二のデータを読み出すステップ、第一のデータと第二のデータとで演算を行うステップ、演算により得られた演算結果を一時記憶用バッファに書き込むステップ、読み出しアドレスを更新するステップ、を繰り返し実行することを特徴とする。
制御部は、上位装置が発行したアドレス指定コマンドを受けて、データを読み出す記憶媒体の開始アドレス及び/又は終了アドレスを設定することができる。制御部は、また、上位装置が発行したデータサイズ指定コマンドを受けて、データサイズを指定することができる。前記演算は、排他的論理和とすることができる。
制御部は、上位装置から書き込みコマンドを受信した場合、書き込みコマンドの指定する記憶媒体のアドレスに対して前記データを読み出すステップを実行しているか検査するステップ、読み出すステップを実行済みの場合には、読み出し済みのアドレスに対して、データを読み出すステップと演算を行うステップを実行した後、書き込みコマンドを実行するステップ、書き込みコマンドを実行したアドレスに対して、前記データを読み出すステップと演算を行うステップ、を実行する。
制御部は、上位装置からのコマンドを受信すると、受信したコマンドの種別を判定するステップ、種別に応じて受信したコマンドの実行優先順位を設定するステップ、設定した実行優先順位により受信したコマンドを実行可能か判定するステップ、判定により実行可能な場合にコマンドを実行するステップ、判定により実行不可能な場合にコマンドをキューに積むステップ、キューに積まれたコマンドの実行優先順位を更新するステップ、実行優先順位の更新により実行可能になったコマンドを実行するステップ、を実行する。
制御部は、上位装置が発行する演算実行命令の解釈後に、ディスク装置の整合性検査支援のための処理の実行を開始するようにしてもよい。制御部は、上位装置が発行する演算実行命令の解釈後に、ディスク装置の整合性検査支援のための処理の実行優先順位を上げるようにしてもよい。
制御部は、上位装置が発行する演算結果読み出しコマンドを受信すると、一時記憶用バッファから演算結果を読み出し、それを演算結果読み出しコマンドの応答として上位装置に送信する。
本発明によるディスク装置の整合性検査支援方法は、また、記憶媒体と、一時記憶用バッファと、上位装置との間でコマンドやデータの送受信を行い、記憶媒体ならびに一時記憶用バッファに対して書き込みまたは読み出しを行う制御部とを備えるディスク装置において、制御部が、一時記憶用バッファもしくは記憶媒体に、記憶媒体のアドレスと読み出し状態との対応を管理する読み出し状態管理表を確保するステップ、を実行し、さらに、読み出し状態管理表の読み出し状態が全て読み出し済みになるまで各アドレスについて、記憶媒体から所定のデータサイズ分の第一のデータを読み出すステップ、一時記憶用バッファから前記データサイズ分の第二のデータを読み出すステップ、第一のデータと第二のデータとで演算を行うステップ、演算により得られた第一の演算結果を一時記憶用バッファに書き込むステップ、読み出し状態管理表の対応するアドレスの読み出し状態を読み出し済みに変更するステップ、を実行し、さらに、上位装置からの読み出しコマンドの要求するアドレスに対応する読み出し状態管理表の読み出し状態を調査し、読み出し状態が未読み出しの場合に読み出し状態を読み出し予約に変更するステップ、を実行し、さらに、読み出しコマンドを実行する際に、読み出しコマンドの要求するアドレスの読み出し状態が読み出し予約の場合に、記憶媒体から前記データサイズの第三のデータを読み出すステップ、一時記憶用バッファから前記データサイズ分の第四のデータを読み出すステップ、第三のデータと第四のデータとで演算を行うステップ、演算により得られた第二の演算結果を一時記憶用バッファに書き込むステップ、読み出し状態管理表の読み出しコマンドの要求するアドレスの読み出し状態を読み出し済みに変更するステップ、を実行することを特徴とする。
制御部は、上位装置からの書き込みコマンドを受信すると、書き込みコマンドの要求するアドレスに対応する前記読み出し状態管理表の読み出し状態を調査し、読み出し状態が未読み出しまたは読み出し予約の場合に読み出し状態を書き込み予約に変更し、読み出し状態が読み出し済みの場合に読み出し状態を読み出し無効に変更するステップ、を実行し、さらに、書き込みコマンドを実行する際に、書き込みコマンドの要求するアドレスの読み出し状態が書き込み予約の場合に、書き込みコマンドを実行するステップ、書き込みコマンドの要求するアドレスに対応する読み出し状態管理表の読み出し状態を未読み出しに変更するステップ、を実行し、書き込みコマンドの要求するアドレスの読み出し状態が読み出し無効の場合に、記憶媒体の書き込みコマンドの要求するアドレスから前記データサイズの第五のデータを読み出すステップ、一時記憶用バッファから前記データサイズ分の第六のデータを読み出すステップ、第五のデータと第六のデータとで演算を行うステップ、演算により得られた第三の演算結果を一時記憶用バッファに書き込むステップ、書き込みコマンドを実行するステップ、記憶媒体の書き込みコマンドの要求するアドレスから前記データサイズ分の第七のデータを読み出すステップ、一時記憶用バッファから前記データサイズ分の第八のデータを読み出すステップ、第七のデータと第八のデータとで演算を行うステップ、演算により得られた第四の演算結果を一時記憶用バッファに書き込むステップ、書き込みコマンドの要求するアドレスに対応する読み出し状態管理表の読み出し状態を読み出し済みに変更するステップ、を実行する。
本発明によるディスク装置の整合性検査支援方法は、また、記憶媒体と、一時記憶用バッファと、上位装置との間でコマンドやデータの送受信を行い、記憶媒体ならびに一時記憶用バッファに対して書き込みまたは読み出しを行う制御部とを備えるディスク装置において、制御部が、一時記憶用バッファもしくは記憶媒体に、記憶媒体のアドレス範囲と演算結果との対応を管理する演算結果管理表を確保するステップ、一時記憶用バッファもしくは記憶媒体に、記憶媒体のアドレスと読み出し状態との対応を管理する読み出し状態管理表を確保するステップ、を実行し、さらに、読み出し状態管理表の読み出し状態が全て読み出し済みになるまで各アドレスについて、演算結果管理表のアドレスに対応するエントリから演算結果を読み出すステップ、記憶媒体の前記アドレスから第一のデータを読み出すステップ、前記演算結果と第一のデータとから演算を行い新しい演算結果を算出するステップ、演算により得られた新しい演算結果を演算結果管理表の前記アドレスに対応するエントリに書き戻すステップ、読み出し状態管理表の前記アドレスに対応したエントリを読み出し済みに変更するステップ、を実行し、さらに、上位装置からの読み出しコマンドの要求するアドレスに対応する読み出し状態管理表の読み出し状態を調査し、読み出し状態が未読み出しの場合に読み出し状態を読み出し予約に変更するステップ、上位装置からの書き込みコマンドの要求するアドレスに対応する読み出し状態管理表の読み出し状態を調査し、読み出し状態が未読み出しまたは読み出し予約の場合に読み出し状態を書き込み予約に変更し、読み出し状態が読み出し済みの場合に読み出し状態を読み出し無効に変更するステップ、を実行し、さらに、記憶媒体からの読み出しを実行する場合に、読み出しの対象となるアドレスの読み出し状態管理表の読み出し状態が未読み出しまたは読み出し予約の場合に、読み出し状態管理表の読み出し対象アドレスに対応するエントリから演算結果を読み出すステップ、記憶媒体の読み出し対象アドレスから第二のデータを読み出すステップ、前記演算結果と第二のデータとから演算を行い新しい演算結果を算出するステップ、新しい演算結果を演算結果管理表の読み出し対象アドレスに対応するエントリに書き戻すステップ、読み出し状態管理表の読み出し対象アドレスに対応するエントリを読み出し済みに変更するステップ、読み出し対象アドレスの読み出し状態管理表の読み出し状態が未読み出しまたは読み出し予約以外の場合に、記憶媒体の読み出し対象アドレスから第二のデータを読み出すステップ、を実行し、さらに、記憶媒体への書き込みを実行する場合に、書き込みの対象となるアドレスの読み出し状態管理表の読み出し状態が未読み出しの場合に、記憶媒体の書き込み対象アドレスに第三のデータを書き込むステップ、書き込み対象アドレスの読み出し状態管理表の読み出し状態が書き込み予約の場合に、記憶媒体の書き込み対象アドレスに前記第三のデータを書き込むステップ、読み出し状態管理表の書き込み対象アドレスに対応したエントリを未読み出しに変更するステップ、書き込み対象アドレスの読み出し状態管理表の読み出し状態が読み出し無効の場合に、記憶媒体の書き込み対象アドレスに前記第三のデータを書き込むステップ、演算結果管理表の書き込み対象アドレスに対応するエントリを初期化するステップ、演算結果管理表の書き込み対象アドレスに対応するエントリが指定するアドレス範囲の全てのアドレスについて、読み出し状態管理表の対応するエントリを未読み出しに変更するステップ、を実行すること、を特徴とする。
制御部は、上位装置が発行する演算結果読み出しコマンドを受信すると、読み出し状態管理表に定義された全てのアドレスが読み出し済みになっていない場合に、読み出し状態を読み出し済みにするためのステップを優先的に実行するように設定するステップ、を実行し、さらに、演算結果管理表の最初のアドレス範囲から最後のアドレス範囲までの各アドレス範囲について、演算結果管理表のアドレス範囲に対応するエントリから演算結果を読み出すステップ、演算結果と前回のディスク装置全体の演算結果とから演算を行い新しいディスク装置全体の演算結果を算出するステップ、を繰り返し実行し、さらに演算結果管理表の全てのアドレス範囲について演算が終了した後に、ディスク装置全体の演算結果を演算結果読み出しコマンドの応答として上位装置に送信するステップ、を実行する。
本発明によるディスクアレイ装置の整合性検査方法は、複数の整合性検査支援機能を備えるディスク装置と、一時記憶用バッファと、ディスク装置および一時記憶用バッファに対して書き込みや読み出しの命令を発行するディスクアレイ制御部と、を備えるディスクアレイ装置において、ディスクアレイ制御部が、複数のディスク装置のそれぞれから演算結果を読み出し一時記憶用バッファに記録するステップ、一時記憶用バッファに記録したディスク装置の演算結果のそれぞれについて、ディスク装置の演算結果とディスクアレイ装置の演算結果とで演算を行い新しいディスクアレイ装置の演算結果を算出するステップ、ディスクアレイ装置の演算結果と期待値とを比較するステップ、比較が一致している場合に、複数のディスク装置の整合性が保たれていると判断するステップ、比較が一致していない場合に、複数のディスク装置の整合性が保たれていないと判断するステップ、を実行すること、を特徴とする。
ディスクアレイ制御部は、比較が一致しない場合に、複数のディスク装置のそれぞれに対して、ディスク装置が正常に動作しているかを検証するための一つもしくは複数のコマンドを発行するステップ、前記一つもしくは複数のコマンドに対するディスク装置の応答を受信するステップ、応答を調べ、ディスク装置が正常に動作しているかを判断するステップ、を実行する。ディスクアレイ装置はコンソールを備え、コンソールに、整合性に対する判断結果あるいは判断の途中での状態を表示するようにしてもよい。前記演算は排他的論理和とすることができる。
コンソールは、ディスク装置の演算結果を計算するための開始アドレスと終了アドレスを指定するための命令を、ディスクアレイ制御部が複数のディスク制御装置のそれぞれに対して発行するように、ディスクアレイ制御部に命令を発行するようにしてもよい。コンソールは、ディスク装置の演算結果を計算するためのデータサイズを指定するための命令を、ディスクアレイ制御部が複数のディスク装置のそれぞれに対して発行するように、ディスクアレイ制御部に命令を発行するようにしてもよい。
本発明によると、ディスク装置のインタフェース帯域ならびにディスクアレイ装置内のディスク接続用のバスのインタフェース帯域を消費せずにディスクアレイ装置に搭載したディスク装置に記録したデータの整合性を検査できる効果がある。
また同時に、ディスクアレイ装置のキャッシュメモリを消費せずにディスクアレイ装置に搭載したディスク装置に記録したデータの整合性を検査できる効果がある。
また同時に、ディスクアレイ装置の制御部の計算資源を消費せずにディスクアレイ装置に搭載したディスク装置に記録したデータの整合性を検査できる効果がある。
発明の実施例について図面を参照して説明する。なお、同一の参照番号は同一の構成要素を示す。以下の実施例では、特に RAID-5 の場合について記述しているが、RAID-3 などの他の RAID の形式にも容易に適用可能である。
図1は、本発明によるディスク装置の整合性検査支援方法の第一の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図である。図1において、101は開始アドレスを初期化するステップ、102は終了アドレスを初期化するステップ、103はデータサイズを初期化するステップ、104はバッファを初期化するステップ、110はアドレス範囲でのループ、111はコマンドの受信を確認するステップ、112はコマンドを受信しているか検査するステップ、113は記憶媒体を読み出すステップ、114はバッファを読み出すステップ、115はXOR演算を行うステップ、116はバッファに書き込むステップ、117はアドレスを更新するステップ、120は第一のコマンド実行のサブルーチン、である。
図2は、第一のコマンド実行のサブルーチンの PAD 図である。図2において、201は書き込みコマンドかを検査するステップ、202は読み出し済みのアドレスへの書き込みコマンドかを検査するステップ、203は受信したコマンドを実行するステップ、204は開始アドレスを調整するステップ、205は終了アドレスを調整するステップ、206は書き込みコマンドを実行するステップ、210は変更前のデータにより演算を行うステップ群、220は変更後のデータにより演算を行うステップ群、である。
図4は、本発明の第一の実施例による、ディスクアレイの構成図、である。図4において、400は本発明によるディスクアレイ装置、401は本発明によるディスク装置、402はディスク装置に内蔵したXOR演算器、である。
図6は、本発明の第一の実施例による、ディスク装置のブロック図、である。図6において、601はフラッシュロム、602は主記憶、603はキャッシュメモリ、604はメモリコントローラおよびマイクロプロセッサ、605はXOR演算器、606はハードディスクコントローラおよびSCSIプロトコルコントローラ、607はディスクインタフェース、608はサーボコントローラ、609はリードライトチャネル、である。
本実施例では、ディスクアレイ装置のデータ整合性検査を行うのに、ディスクアレイ装置に内蔵したディスク装置において第一段階の演算を行い、ディスクアレイ装置において第二段階の演算を行うところに特徴がある。ディスク装置で第一段階の演算を行うことで、ディスク装置との接続バス310を使ったディスクアレイ装置の制御部とディスク装置との間のデータ転送量を大幅に削減可能になる効果がある。
従来のディスクアレイ装置ではディスク装置に保存したデータの整合性の検査のために、式(3)のように全てのブロックアドレスからデータを読み出して排他的論理和(XOR)演算を行い、RAID-5 の期待値である Expected Value と一致しているかを検査する必要があった。Expected Value は偶数パリティでパリティデータを生成すれば全てのビットが 0 になっており、奇数パリティでパリティデータを生成すれば全てのビットが 1 になっている。従来の方式でのデータ整合性検査は、全てのディスク装置から全てのデータを読み出すことを意味する。これに対して本発明の方式では、整合性検査の演算を以下のようにディスク装置での第一段階の演算とディスクアレイ装置での第二段階の演算に分割する。これによりディスク装置から読み出すデータ量を削減する。
第一段階の演算では、式(4)のように一つのディスク装置内でブロックアドレス毎にXOR演算を行う。ここで、N はディスク装置の識別子、N-000, ..., N-xyzは識別子 N のディスク装置のブロックアドレスである。簡単のため、N-abc のブロックアドレスに格納されたデータも N-abc で表記する。演算により得られた値を、N-XOR とする。N-XOR の値には期待値や規則性が存在しない。
Figure 2006146833
第二段階の演算では、式(5)のように各ディスク装置内で演算した N-XOR の排他的論理和である、XOR-XOR を計算する。XOR-XOR の期待値は、ディスク装置のブロックアドレスの数だけ Expected Value の排他的論理和を計算した値である。
Figure 2006146833
本発明の方式では、ディスク装置からディスクアレイ制御部に転送するデータは N-XOR だけである。例えば、ディスク装置の容量が 100GB で、ブロックサイズが 4KB の場合には、従来の方式では 100GB のデータを転送しなければならないのに対して、本発明の方式では 4KB のデータのみを転送すれば良い。つまり、転送するデータ容量を 4KB/100GB = 1/25M に削減できる。
図6により、本発明によるディスク装置の構成を説明する。フラッシュメモリ601にはディスク装置の制御プログラムや後述する第一段階の演算プログラムが格納される。これらのプログラムは電源投入後に主記憶602に展開される。主記憶602にはフラッシュロム601に格納された各種プログラムが展開される他、ディスクアレイ装置の制御部などの上位装置から設定された各種パラメータが格納される。メモリコントローラおよびマイクロプロセッサ(MPU)604がディスク装置の制御部である。マイクロプロセッサは主記憶602に格納されたプログラムとパラメータによって、読み出し/書き込みなどの通常のディスク装置の動作の他に、第一段階の演算を行う。キャッシュメモリ603は、読み出しや書き込み時のデータの一時的格納場所として用いる他に、第一段階の演算での中間結果の保存場所としても用いる。ディスクインタフェース607はディスクアレイ装置の制御部などの上位装置とのデータの送受信を行う。主記憶602に保存するパラメータも上位装置からディスクインタフェース607を通してディスク装置に転送される。ハードディスクコントローラ(HDC)およびSCSIプロトコルコントローラ(SPC)606は、上位装置との通信に用いるプロトコルの解釈とディスク装置の記憶媒体に対してデータの読み書きを行うのに必要なサーボコントローラ608とリードライトチャネル609の制御を行う。例えば上位装置からデータの書き込みを行う場合には、ディスクインタフェース607がコマンドを受信した後に、SPC が受信したコマンドの中の記憶媒体に書き込むべきデータをメモリコントローラ経由でキャッシュメモリ603に記録し、MPU に書き込みコマンドを受信したことを伝える。MPU は HDC にキャッシュメモリ603に記録したデータをどのアドレス(セクタ)に書き込むかを指示し、HDC がサーボコントローラ608とリードライトチャネル609を制御して記憶媒体への書き込みを実行する。XOR演算器605では第一段階の演算で必要な XOR 演算を行う。
図4は本発明によるディスク装置を用いたディスクアレイ装置400の構成図である。従来の方式によるディスクアレイ装置300とは従来のディスク装置311の代わりに本発明によるディスク装置401を内蔵している点と、第二段階の演算を行うプログラムを内蔵している点が異なる。第二段階の演算を行うプログラムは図中に表示されていないディスクアレイ装置の制御部の主記憶中に展開される。
図1と図2とにより、第一段階の演算の方法について説明する。
ステップ101では第一段階の演算の開始セクタアドレスを指定する。ステップ101の終了後、ステップ102に進む。ステップ102では第一段階の演算の終了セクタアドレスを指定する。ステップ102の終了後、ステップ103に進む。ステップ103では、RAID-5 のブロックサイズを指定する。RAID-5 では4KB や 8KB などのブロックサイズ毎にパリティデータを生成するので、第一段階での演算でもディスクアレイ装置の RAID-5 の構成と同じブロックサイズを指定する。ステップ103の終了後、ステップ104に進む。
開始セクタアドレスの値、終了セクタアドレスの値、およびブロックサイズの値は、管理者がディスクアレイ装置のコンソールで指定する。コンソールではこれらの値をディスクアレイ装置の制御部に伝える。ディスクアレイ装置の制御部は、ベンダーユニークコマンドや S.M.A.R.T. などの手段によりディスクインタフェース607経由でこれらの値をディスク装置の主記憶602に書き込む。開始セクタアドレスと終了セクタアドレスが設定されない場合には、ディスク装置ではディスク装置の先頭セクタアドレスと最終セクタアドレスとを初期値として用いる。ブロックサイズが設定されない場合には有意な演算を行えないため、設定されるまで第一段階の演算を開始しない。
ステップ104では、ステップ103で指定されたブロックサイズによって、キャッシュメモリ603内に第一段階の演算結果の中間結果を保存する領域を確保して領域を初期化する。ステップ104の終了後ループ110に進む。ループ110ではステップ101とステップ102とで設定した開始セクタアドレスと終了セクタアドレスの範囲で以下の処理を繰り返す。まず最初にステップ111に進む。ステップ111では、ディスクアレイ装置の制御部からのコマンドを受信していないか確認を行う。ステップ111の終了後、ステップ112に進む。ステップ112では、ステップ111でのコマンドの受信の有無を検査する。もしもコマンドを受信している場合にはサブルーチン120に進む。ステップ112の終了後ステップ113に進む。ステップ113では、現在整合性検査の読み出し対象となっているセクタアドレスからステップ103で指定したブロックサイズ分だけディスク装置の記憶媒体からデータを読み出す。ステップ113の終了後、ステップ114に進む。ステップ114では、演算結果の中間結果の保存領域から中間結果を読み出す。ステップ114の終了後、ステップ115に進む。ステップ115では、記憶媒体から読み出したデータと保存領域から読み出した中間結果とで XOR 演算を行う。このステップは、式(4)のステップをループで実行していることに相当する。ステップ115の終了後、ステップ116に進む。ステップ116では、ステップ115で計算した中間結果を次回の演算のために保存領域に書き戻す。ステップ116の終了後、ステップ117に進む。ステップ117では、次回の演算のためにセクタアドレスをブロックサイズ分だけ進める。
サブルーチン120では、まずディスクアレイ装置の制御部からのコマンドが書き込みコマンドかどうかを検査する。書き込みコマンドの場合には、ステップ202に進み、それ以外の場合には、ステップ203に進む。ステップ202では、書き込みコマンドの対象となるアドレスがステップ113で既に読み出されているかを検査する。既に読み出されている場合にはステップ204に進み、まだ読み出されていない場合にはステップ206に進む。このように読み出されているかどうかで処理を変えるのは、XOR 演算を完了したセクタにデータを上書きすると正しい演算結果を得られないためである。
ステップ204は、一時的な開始セクタアドレスを設定するステップである。書き込みアドレスがブロックサイズの境界とずれている場合には、このステップでセクタアドレスの正規化を行い、ブロックサイズの境界と合わせる。ステップ204の終了後、ステップ205に進む。ステップ205では、一時的な終了セクタアドレスを設定するステップである。ステップ204と同様にセクタアドレスの正規化を行う。ステップ205の終了後ループ110に進む。ループ110では、ステップ204とステップ205で設定した開始セクタアドレスと終了セクタアドレスとの範囲で以下の処理を繰返し実行する。まずステップ113に進む。ステップ113では、対象となるセクタアドレスからブロックサイズ分のデータを読み込む。ステップ113の終了後、ステップ114に進む。ステップ114では、中間結果の保存領域から中間結果を読み出す。ステップ114の終了後、ステップ115に進む。ステップ115では、記憶媒体から読み出したデータと保存領域から読み出した中間結果とで XOR 演算を行う。ステップ115の終了後、ステップ116に進む。ステップ116では、ステップ115で計算した中間結果を次回の演算のために保存領域に書き戻す。変更前のデータにより演算を行うステップ群210は、一旦計算した XOR 演算を無効にするために行う。ステップ116の終了後、ステップ206に進む。ステップ206では、受信した書き込みコマンドを対象のアドレスの範囲で実行する。書き込みコマンドはブロックサイズよりも長大なデータサイズを指定可能であるが、このような書き込みを一括して行うと XOR 演算をできなくなるので、ブロックサイズ毎に分割して行う。正規化処理により開始セクタアドレスや終了セクタアドレスを調整する場合には、書き込みコマンドで指定されたアドレスにのみ行う。ステップ206の終了後、ステップ113に進む。ステップ113では、対象となるセクタアドレスからブロックサイズ分のデータを読み込む。ステップ113の終了後、ステップ114に進む。ステップ114では、中間結果の保存領域から中間結果を読み出す。ステップ114の終了後、ステップ115に進む。ステップ115では、記憶媒体から読み出したデータと保存領域から読み出した中間結果とで XOR 演算を行う。ステップ115の終了後、ステップ116に進む。ステップ116では、ステップ115で計算した中間結果を次回の演算のために保存領域に書き戻す。変更後のデータにより演算を行うステップ群220は、新たに書き込んだデータにより XOR 演算するために行う。ステップ116の終了後、ステップ117に進む。ステップ117では、次回の演算のためにセクタアドレスをブロックサイズ分だけ進める。
ステップ202でまだ読み出されていない場合には、ステップ206に進む。まだ読み出されていない場合には XOR 演算を無効にする必要がないので、そのまま書き込みコマンドを実行する。
ステップ201で書き込みコマンドでない場合には、ステップ203に進む。XOR 演算に影響を与えないコマンドは、ステップ203でそのまま実行する。
図1のループ110が終了した段階で、S.M.A.R.T. などの手段でディスクアレイ装置の制御部に第一段階の演算が終了したことを伝える。ディスクアレイ装置の制御部では、S.M.A.R.T. やベンダーユニークコマンドなどにより第一段階の演算の結果を読み出す。この時読み出すデータ量は、ブロックサイズである。そして、XOR 演算器306で各ディスク装置から読み出した値を使って式(5)の第二段階の演算を行う。そして、演算結果である XOR-XOR を期待値と比較する。この期待値はディスク装置内のブロックアドレスの数に応じて、全てのビットが 0 または1 になっている。XOR-XOR が期待値と一致すればディスクアレイ装置のデータ整合性が保たれているので、ディスクアレイ装置のコンソールに整合性が保たれているというメッセージを表示する。XOR-XOR が期待値と一致しない場合には、ディスクアレイ装置のデータ整合性が保たれていないので、ディスクアレイ装置のコンソールに整合性が保たれていないというメッセージを表示する。
図17は、ディスク装置がブロックアドレス群ごとに演算結果を計算する場合のディスクアレイ装置のコンソール表示例を示す図である。
1711にはブロック群のIDを表示する。各ディスク装置のブロック群の演算結果からディスクアレイ装置で演算した結果が期待値と一致しているかを1712に表示する。1712でOKは期待値と一致、NGは期待値と不一致、N/Aはまだディスク装置またはディスクアレイ装置で演算していないことを示す。
1721にはディスク装置のIDを表示する。1722にはディスク装置に対する診断結果を表示する。1722でOKは正常、NGは故障、WARNは警告、を示す。1723には故障モードを表示する。Write head failure は書き込みヘッドの故障、Retry threshold はディスク装置内でのリトライ回数が閾値に達したことを示す。
ディスク装置は、アドレス範囲ごとに計算し、ディスク装置全体の演算結果を返すようにすることもできるし、計算したアドレス範囲ごとの中間結果をそのままディスクアレイ装置に返すようにすることもできる。図17に示した例では、アドレス範囲ごとの中間結果をそのままディスクアレイ装置に返している。中間結果を返すので、アドレス範囲によっては演算が終了していない場合もあり、その場合には1712で N/A と表示される。
整合性が保たれていない場合には、ディスク装置に障碍が発生しているのでディスク装置の制御部は各ディスク装置の診断を行う。診断のためには、診断用のコマンドを発行したり、書き込みと読み込みを行ってデータを正常に書き込めているかを確認するなどの方法がある。
第一段階の演算は、ディスク装置が自発的に実行を開始する他に、上位装置からの指示により実行を開始することもできる。このような指示には、ベンダーユニークコマンドや S.M.A.R.T. などが使える。
第一の実施例では、整合性検査のための第一段階の演算をディスク装置内で行う。ディスク装置と上位装置とは SCSI や FC-AL などでバス接続されており、ディスク装置と上位装置とは常時通信を行えない。このような上位装置からコマンドが送られてこない時間を有効に使って第一段階の演算を行うため、上位装置から見た時に第一段階の演算による性能劣化が存在しない。さらに、第一段階の演算終了後に上位装置に送信すべきデータ量がブロックサイズなので、ディスク装置のインタフェース帯域の消費がほとんどなく、データ転送に要する時間も短い。
第一の実施例では、上位装置からディスク装置にコマンドが送られた場合には、ディスク装置ではそのコマンドを最優先で実行した。これに対して第二の実施例では、コマンドの優先順位を判断して第一段階の演算とコマンドのどちらを優先して処理するかを決定する。第一の実施例との相違点について説明する。
図7は、本発明によるディスク装置の整合性検査支援方法の第二の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図である。図7において、701は優先順位を更新するステップ、702は現在の優先順位の設定で実行可能なコマンドがある限り繰り返すループ、710は第一の受信したコマンドの確認を行うサブルーチン、である。
図8は、第一の受信したコマンドの確認を行うサブルーチンの PAD 図である。図8において、801は受信したコマンドの種別を判定するステップ、802は受信したコマンドの優先順位を設定するステップ、803は設定された優先順位に基づき受信したコマンドを直ちに実行可能か検査するステップ、804は受信したコマンドをキューに積むステップ、である。
第一の実施例ではコマンドを受信するとステップ112で第一のコマンド実行のサブルーチン120を実行するのに対し、第一の受信したコマンドの確認を行うサブルーチン710を実行する。サブルーチン710では、緊急度の高いコマンドの場合には直ちに実行し、そうでなければコマンドをキューに積む。
サブルーチン710では、最初にステップ801に進む。ステップ801では、受信したコマンドの種別を判定する。ステップ801の終了後、ステップ802に進む。ステップ802では、ディスク装置に設定されたポリシーに基づき受信したコマンドの優先順位を設定する。ポリシーの例としては、読み出しコマンドの実行が送れると上位装置の処理が止まるので最優先で行うが、書き込みコマンドは遅延実行しても上位装置の処理が止まらないので、優先順位を下げる、などがある。このようなポリシーは、ディスク装置の出荷時にデフォルト値を設定できる他に、ディスクアレイ装置の制御部などの上位装置からのベンダーユニークコマンドや S.M.A.R.T. などによっても設定可能である。ステップ802の終了後、ステップ803に進む。ステップ803では、ステップ802で設定された優先順位を調べ、受信したコマンドを直ちに実行する必要があるかを検査する。実行する必要がある場合には、サブルーチン120に進みコマンドを実行する。実行する必要がない場合には、ステップ804に進む。ステップ804ではコマンドをキューに積み遅延実行するための準備を行う。
図7のサブルーチン112以降、ステップ117までは第一の実施例と同じである。ステップ117の終了後に、ステップ701に進む。ステップ701では、キューに積まれたコマンドの優先順位の再評価を行い優先順位を上げる処理を行う。優先順位を上げる処理によって、キューに積まれたコマンドが必ず実行されることを保証する。ステップ701の終了後、ループ702に進む。ループ702では、優先順位の再評価によって実行可能になったコマンドがあるかぎり、サブルーチン120によりコマンドを実行する。
第一段階の演算を行う優先順位は、上位装置からのベンダーユニークコマンドや S.M.A.R.T. などにより変更可能である。例えば、ディスクアレイ装置の制御部が第一段階の演算結果を必要とする場合には、ディスク装置での第一段階の演算を最優先で行うように指定できる。
第一の実施例では上位装置のコマンドを最優先で実行するが、第二の実施例では優先順位を評価してコマンドの実行順序を変更する。このような仕組みは、SCSI, FC-AL, SAS, SATA などコマンドキューを持つプロトコルと親和性が高い。
第一の実施例と第二の実施例では、ディスク装置の先頭セクタアドレスから最終セクタアドレスに向かって第一段階の演算を行う。これに対して第三の実施例では、ディスク装置内でどこまで演算を行ったかの管理を行うことで、任意の順番で第一段階の演算を実行可能である。第一の実施例と第二の実施例との相違点について説明する。
図9は読み出し状態管理表である。図9において、901はブロックアドレス、902は読み出し状態、である。
図11は、本発明によるディスク装置の整合性支援方法の第三の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図である。図11において、1101は読み出し状態管理表を初期化するステップ、1102は読み出し状態管理表の状態が全て読み出し済みになるまで実行するループ、1103は読み出し状態を読み出し済みに変更するステップ、1110は第二の受信したコマンドの確認を行うサブルーチン、1120は第二のコマンド実行のサブルーチン、である。
図12は、第二の受信したコマンドの確認を行うサブルーチンの PAD 図である。図12において、1201は読み出しコマンドかを検査するステップ、1202はコマンドの要求するアドレスが読み出し状態管理表に存在するかを検査するステップ、1203は読み出し状態管理表から読み出し状態を読み出すステップ、1204は読み出し状態が未読み出しかを検査するステップ、1205は読み出し状態を読み出し予約に変更するステップ、1206は読み出し状態が読み出し予約か検査するステップ、1207は読み出し状態を書き込み予約に変更するステップ、1208は読み出し状態を読み出し無効に変更するステップ、である。
図13は、第二のコマンド実行のサブルーチンの PAD 図である。図13において、1301は読み出し状態が読み出し予約または未読み出しかを検査するステップ、1302は読み出しコマンドを実行するステップ、1303は読み出し状態が書き込み予約かを検査するステップ、1304は読み出し状態が読み出し無効かを検査するステップ、1305は読み出し状態を未読み出しに変更するステップ、1306は読み出しコマンドと書き込みコマンド以外のコマンドかを検査するステップ、である。
本実施例では、第一段階の演算をどこまで行ったかを読み出し状態管理表にて管理する。このため、ディスクアレイ装置の制御部からの読み出しコマンドによって記憶媒体からデータを読み出す場合にも第一段階の演算を行える。読み出し状態管理表では901のように、ブロックサイズでディスク装置の記憶媒体の領域を分割したブロックアドレスごとに読み出し状態を管理する。読み出し状態には902のように未読み出し(NONE)、読み出し済み(READ)、読み出し予約(R-QUE)、書き込み予約(W-QUE)、読み出し無効(DIRTY)、の五種類がある。読み出し状態管理表は、ディスク装置のキャッシュメモリ603もしくは記憶媒体上に確保する。どちらに確保するかは、読み出し状態管理表に必要な領域の大きさと、キャッシュメモリ603の容量に依存する。
第一の実施例や第二の実施例と異なり第三の実施例では読み出し状態管理表を用いるため、読み出し状態管理表を初期化するステップ1101が必要になる。ステップ1101では、キャッシュメモリ603もしくは記憶媒体上に読み出し状態管理表の領域を確保し、ブロックアドレス901を開始セクタアドレス、終了セクタアドレス、ブロックサイズを使って初期化し、読み出し状態902を全て未読み出し(NONE)に設定する。第一の実施例と第二の実施例ではループ110によって開始セクタアドレスと終了セクタアドレスの範囲でループをするのに対して、第三の実施例ではループ1102によって読み出し状態管理表の読み出し状態902が全て読み出し済み(READ)になるまで任意の順番でループする。
第二の実施例ではコマンドを受信するとステップ112で第一の受信したコマンドの確認を行うサブルーチン710を実行するのに対して、第三の実施例では第二の受信したコマンドの確認を行うサブルーチン1110を実行する。サブルーチン1110では、コマンドの優先順位の判定の他に読み出し状態管理表の参照や状態の登録を行う。第二の実施例ではループ702で第一のコマンド実行のサブルーチン120を実行するのに対し、第三の実施例では第二のコマンド実行のサブルーチン1120を実行する。サブルーチン1120では読み出し状態管理表に応じてコマンド実行方法を変更し、読み出し状態管理表の状態を更新する。第一の実施例と第二の実施例ではステップ116でバッファに書き込んだ後にステップ117でアドレスを更新するのに対し、第三の実施例では読み出し状態管理表でどのブロックを読んだかを管理しているため、ステップ116の後にステップ1103に進む。ステップ1103ではブロックの読み出し状態を読み出し済みに変更する。ステップ1103の終了後、ステップ117に進む。次に、サブルーチン1110、サブルーチン1120の動作について説明する。
サブルーチン1110では、最初にステップ801にて受信したコマンドの種別を判定し、ステップ802に進む。ステップ802では受信したコマンドの種別からコマンドの実行優先順位を設定し、ステップ1201に進む。ステップ1201は受信したコマンドが読み出しコマンドかを検査するステップである。読み出しコマンドである場合には、ステップ1202に進む。ステップ1201の終了後、ステップ201に進む。
ステップ1202では、読み出しコマンドの要求するアドレスが読み出し状態管理表に存在するかを検査するステップである。このような検査を設けることで、ディスク装置の全領域について一括してデータ整合性検査のための第一段階の演算を行うのではなく、特定の領域についてのみ第一段階の演算を行う場合に対応できる。読み出し管理表に存在するブロックアドレスの場合にはステップ1203に進む。ステップ1203では読み出し状態管理表の読み出し状態902を読み出す。ステップ1203の終了後、ステップ1204に進む。ステップ1204では読み出し状態が未読み出しかどうかを検査する。未読み出しの場合には、ステップ1205に進む。ステップ1205では、該当するブロックアドレスの読み出し状態902を読み出し予約に変更する。
ステップ201は、受信したコマンドが書き込みコマンドかを検査するステップである。書き込みコマンドである場合には、ステップ1202に進む。ステップ201の終了後、ステップ803に進む。
ステップ1202では、書き込みコマンドの要求するアドレスが読み出し状態管理表に存在するかを検査するステップである。読み出し管理表に存在するブロックアドレスの場合にはステップ1203に進む。ステップ1203では読み出し状態管理表の読み出し状態902を読み出す。ステップ1203の終了後、ステップ1206に進む。ステップ1206では読み出し状態が読み出し予約かどうかを検査する。読み出し予約の場合には、ステップ1207に進む。ステップ1207では、該当するブロックアドレスの読み出し状態902を書き込み予約に変更する。ステップ1206の終了後、ステップ1204に進む。ステップ1204では読み出し状態が未読み出しかどうかを検査する。未読み出しの場合には、ステップ1207に進み、未読み出しでない場合には、ステップ1208に進む。ステップ1207では、該当するブロックアドレスの読み出し状態902を書き込み予約に変更する。ステップ1208では、該当するブロックアドレスの読み出し状態902を書き込み無効に変更する。
ステップ803では、ステップ802で設定された優先順位を調べ、受信したコマンドを直ちに実行する必要があるかを検査する。実行する必要がある場合には、サブルーチン1210に進みコマンドを実行する。実行する必要がない場合には、ステップ804に進む。ステップ804ではコマンドをキューに積み遅延実行するための準備を行う。
サブルーチン1120では、最初にステップ801でコマンドの種別を判定し、ステップ1201に進む。ステップ1201では、コマンドの種別が読み出しコマンドかを検査し、読み出しコマンドである場合にはステップ1202に進む。ステップ1201の終了後、ステップ201に進む。ステップ1202では、読み出しコマンドが要求するアドレスが読み出し状態管理表に存在するかを検査する。存在する場合にはステップ1203に進み、存在しない場合にはステップ1302に進み、読み出しコマンドを実行する。ステップ1203では読み出し状態管理表の読み出し状態902を読み出す。ステップ1203の終了後、ステップ1301に進む。ステップ1301では読み出した読み出し状態902が読み出し予約もしくは未読み出しであるかを検査する。ステップ1301の条件判断が真であるのは、上位装置からの読み出しコマンドが読み出すブロックアドレスが第一段階の演算の対象となっている場合である。このため、読み出しコマンドを処理する際に第一段階の演算も行う。ステップ1301の条件判断が偽である場合には、単にステップ1302により読み出しコマンドを実行する。ステップ1301の条件判断が真の場合には以下のステップを実行する。まずステップ1302で読み出しコマンドを実行し、ステップ114に進む。ステップ114で演算結果の中間結果の保存領域から中間結果を読み出し、ステップ115に進む。ステップ115では、ステップ1302で記憶媒体から読み出したデータとステップ114で読み出した中間結果とで XOR 演算を行い、ステップ116に進む。ステップ116では、XOR 演算した結果を演算結果の中間結果の保存領域に書き戻し、ステップ1303に進む。ステップ1303では読み出し状態管理表の状態を読み出し済みに変更する。
ステップ201では、コマンドの種別が書き込みコマンドかを検査し、書き込みコマンドである場合にはステップ1202に進む。ステップ201の終了後、ステップ1306に進む。ステップ1202では、書き込みコマンドが要求するアドレスが読み出し状態管理表に存在するかを検査する。存在する場合にはステップ1203に進み、存在しない場合にはステップ206に進み、書き込みコマンドを実行する。ステップ1203では読み出し状態管理表の読み出し状態902を読み出す。ステップ1203の終了後、ステップ1303に進む。ステップ1303では、読み出し状態が書き込み予約かを検査する。ステップ1303の条件判断が真の場合には、ステップ206にて書き込みコマンドを実行し、ステップ1305に進む。ステップ1305では、読み出し状態管理表の状態を書き込み予約から未読み出しに変更する。これにより、書き込みを行ったブロックアドレスに対して第一段階の演算を行うことを保証できる。ステップ1303の終了後、ステップ1304に進む。ステップ1304では、読み出し状態が読み出し無効かを検査する。ステップ1304の条件判断が真になるのは、既に第一段階の演算を行ったブロックアドレスに対して書き込みを行う場合である。そこでステップ1304の条件が真になる場合には、第一の実施例と同様にステップ群210、ステップ206、ステップ群220の順番にコマンドを実行する。ステップ群220の終了後、ステップ1103に進む。ステップ1103では、第一段階の演算を行ったので読み出し状態管理表の読み出し状態を読み出し済みに変更する。
ステップ1306では、受信したコマンドが読み出しコマンドと書き込みコマンド以外であるかを検査する。ステップ1306の条件判断が真の場合には、ステップ203に進み受信したコマンドを実行する。
第一から第三の実施例では、第一段階の演算の中間結果を一つだけ保存していた。第四の実施例では、ブロックアドレスを複数の領域に分割し、それぞれの領域毎に独立して中間結果を保存する。第四の実施例は第三の実施例に対して、複数の第一段階の演算結果を保存する点が異なる。第三の実施例との相違点について説明する。
図10は、演算結果管理表である。図10において、1001はブロックアドレス群につけたグループ ID、1002はグループ ID ごとの第一段階演算の中間結果、である。
図14は、本発明によるディスク装置の整合性検査支援方法の第四の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図である。図14において、1401は演算結果管理表を初期化するステップ、1402は演算結果管理表から第一段階演算の中間結果を読み出すステップ、1403は演算結果管理表に第一段階演算の中間結果を書き込むステップ、1410は第三の受信したコマンドの確認を行うサブルーチン、1420は第三のコマンド実行のサブルーチン、である。
図15は、第三の受信したコマンドの確認を行うサブルーチンの PAD 図である。
図16は、第三のコマンド実行のサブルーチンの PAD 図である。図16において、1601は、演算結果を初期化するステップ、1602は、対象アドレスを全て未読み出しに変更するステップ、である。
本実施例では、ディスク装置の記憶媒体を複数の領域に分割し、それぞれの領域で第一段階演算の中間結果を保存する。ホストコンピュータからのアクセスパターンが局所性を持っている場合には、読み出し済みのブロックに書き込みが発生する毎に領域に対してステップ群210、220を実行するよりも、あるブロックアドレス範囲に対するアクセスが終了してから第一段階の演算を再開する方が効率的である。本実施例では、ディスク装置の記憶媒体を連続するブロックアドレスごとに分割し、各ブロックアドレス群ごとに第一段階演算の中間結果を保存する。記憶媒体の分割サイズはベンダユニークコマンドや S.M.A.R.T. などによって指定できる。ディスクアレイ装置の管理者がディスクアレイ装置のコンソールから分割サイズを指定すると、ディスクアレイ装置の制御部が各ディスク装置に対して設定を行う。各中間結果のサイズはブロックサイズになるため、演算結果管理表の大きさは、記憶媒体の分割数にブロックサイズを掛けた値になる。例えば、100GB の容量のディスク装置で、100MB ごとに分割し、ブロックサイズが 4KB だとすると、演算結果管理表のサイズは (100GB/100MB)*4KB = 4MB になる。演算結果管理表はディスク装置のキャッシュメモリ603もしくは記憶媒体上に置かれる。どちらに置くかはキャッシュメモリ603の大きさと演算管理結果表の大きさに依存する。
第三の実施例の第一段階演算と第四の実施例の第一段階演算とでは、演算の中間結果を保存する場所に関する処理が違っている。図11ではステップ104で、キャッシュメモリ603内に第一段階の演算結果の中間結果を保存する領域を確保して領域を初期化する。これに対して、図14ではステップ1401で、キャッシュメモリ603内もしくは記憶媒体上に図10の演算結果管理表の領域を確保して領域を初期化する。図11ではステップ114とステップ116とで、キャッシュメモリ603内の中間結果保存領域にアクセスする。これに対して、図14では、ステップ1402とステップ1403とで、演算結果管理表の演算対象となるエントリにアクセスする。図11ではステップ112の条件判断が真の場合にサブルーチン1110を実行し、ループ702ではサブルーチン1120を実行する。これに対して、図14ではステップ112の条件判断が真の場合にサブルーチン1410を実行し、ループ702ではサブルーチン1420を実行する。
次にサブルーチン1410について説明する。サブルーチン1410は基本的にサブルーチン1110と同じである。唯一の相違点は、ステップ803の条件判断が真の場合にステップ1120の代わりにステップ1420を実行する点である。
次にサブルーチン1420について説明する。サブルーチン1420はサブルーチン1120と演算結果管理表にアクセスする部分の処理が異なる。読み出しコマンドの処理では、サブルーチン1120ではステップ114とステップ116とでキャッシュメモリ603にある演算の中間結果保存場所に対してアクセスするのに対し、サブルーチン1420ではステップ1402とステップ1403とで演算結果管理表の演算対象となるエントリにアクセスする。書き込みコマンドの処理では、サブルーチン1120とサブルーチン1420とでは、書き込み無効の場合の処理が異なる。サブルーチン1120では、ステップ群210、220とにより書き込みコマンドの実行前後にブロックアドレスへの読み出しを行い、書き込みコマンド実行時に第一段階の演算を行う。これに対して、サブルーチン1420では、ステップ1304の条件判断が真の場合に、ステップ206により書き込みコマンドを実行した後に、ステップ1601に進む。ステップ1601では、演算結果管理表の書き込みコマンドを実行したブロックアドレスが含まれるブロックアドレス群のエントリの演算の中間結果を初期化する。これは記憶媒体に書き込みを行ったため、中間結果の整合性が取れなくなったからである。ステップ1601の終了後、ステップ1602に進む。ステップ1602では、書き込みを行ったブロックアドレスの所属するブロックアドレス群の全ての読み出し状態管理表の状態を未読み出しにする。これは、中堅結果を初期化したのにともない、該当するブロックアドレス群の第一段階の演算を最初からやり直すためである。
本実施例では、第一段階の演算結果はブロックアドレス群ごとに演算結果管理表に保存されている。この値は、ディスクアレイ装置の制御部などの上位装置からベンダユニークコマンドや S.M.A.R.T. などで要求があった時に、各ブロックアドレス群ごとに読み出し可能な他、ブロックアドレス群ごとにさらに演算を行い、単一の値としての読み出しも可能である。
RAID-5 を採用した大型ディスクアレイ装置など、大量のディスク装置を内蔵し、高い処理性能と高い信頼性を要求される場合に、本発明を用いることでディスク装置のインタフェース帯域やディスクアレイ装置の内部資源を消費せずにデータの整合性検査を行えるようになる。
本発明によるディスク装置の整合性検査支援方法の第一の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図。 第一のコマンド実行のサブルーチンの PAD 図。 従来のディスクアレイ装置の構成を示す図。 本発明の第一の実施例による、ディスクアレイの構成図。 RAID-5 のブロックアドレスの模式図。 本発明の第一の実施例による、ディスク装置のブロック図。 本発明によるディスク装置の整合性検査支援方法の第二の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図。 第一の受信したコマンドの確認を行うサブルーチンの PAD 図。 読み出し状態管理表の例を示す図。 演算結果管理表の例を示す図。 本発明によるディスク装置の整合性支援方法の第三の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図。 第二の受信したコマンドの確認を行うサブルーチンの PAD 図。 第二のコマンド実行のサブルーチンの PAD 図。 本発明によるディスク装置の整合性検査支援方法の第四の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図。 第三の受信したコマンドの確認を行うサブルーチンの PAD 図。 第三のコマンド実行のサブルーチンの PAD 図。 本発明によるディスクアレイ装置のコンソール表示部の例を示す図。
符号の説明
300 従来のディスクアレイ装置
301 ホストコンピュータとのインタフェース
302 内部接続バス
303 メモリコントローラ
304 プロセッサバス
305 マイクロプロセッサ
306 XOR演算器
307 メモリバス
308 キャッシュメモリ
309 ディスク装置とのインタフェース
310 ディスク装置との接続バス
311 ディスク制御装置
321 ホストコンピュータ
322 ホストコンピュータとの接続バス
400 本発明によるディスクアレイ装置
401 本発明によるディスク装置
402 ディスク装置に内蔵したXOR演算器
501 第一のディスク装置のブロックアドレス
502 第二のディスク装置のブロックアドレス
503 第三のディスク装置のブロックアドレス
504 第四のディスク装置のブロックアドレス
505 ブロックアドレス
601 フラッシュロム
602 主記憶
603 キャッシュメモリ
604 メモリコントローラおよびマイクロプロセッサ
605 XOR演算器
606 ハードディスクコントローラおよびSCSIプロトコルコントローラ
607 ディスクインタフェース
608 サーボコントローラ
609 リードライトチャネル
1710 ブロックアドレスグループの状態表示部
1711 ブロックアドレスグループのID表示部
1712 状態表示部
1720 ディスク装置の状態表示部
1721 ディスク装置のID表示部
1722 状態表示部
1723 故障モード表示部

Claims (20)

  1. 記憶媒体と、一時記憶用バッファと、上位装置との間でコマンドやデータの送受信を行い、前記記憶媒体ならびに前記一時記憶用バッファに対して書き込みまたは読み出し制御を行う制御部とを備えるディスク装置において、
    前記制御部が、
    前記記憶媒体の読み出しアドレスから所定のデータサイズ分の第一のデータを読み出すステップ、
    前記一時記憶用バッファから前記データサイズ分の第二のデータを読み出すステップ、
    前記第一のデータと前記第二のデータとで演算を行うステップ、
    前記演算により得られた演算結果を前記一時記憶用バッファに書き込むステップ、
    前記読み出しアドレスを更新するステップ、
    を繰り返し実行することを特徴とするディスク装置の整合性検査支援方法。
  2. 請求項1に記載のディスク装置の整合性検査支援方法において、
    前記制御部が、上位装置が発行したアドレス指定コマンドを受けて、前記データを読み出す前記記憶媒体の開始アドレス及び/又は終了アドレスを設定することを特徴とするディスク装置の整合性検査支援方法。
  3. 請求項1に記載のディスク装置の整合性検査支援方法において、
    前記制御部が、上位装置が発行したデータサイズ指定コマンドを受けて、前記データサイズを指定することを特徴とするディスク装置の整合性検査支援方法。
  4. 請求項1に記載のディスク装置の整合性検査支援方法において、
    前記演算が排他的論理和であることを特徴とするディスク装置の整合性検査支援方法。
  5. 請求項1に記載のディスク装置の整合性検査支援方法において、
    前記制御部が
    上位装置から書き込みコマンドを受信するステップ、
    前記書き込みコマンドの指定する前記記憶媒体のアドレスに対して前記データを読み出すステップを実行しているか検査するステップ、
    前記読み出すステップを実行済みの場合には、
    読み出し済みのアドレスに対して、前記データを読み出すステップと前記演算を行うステップを実行した後、
    前記書き込みコマンドを実行するステップ、
    前記書き込みコマンドを実行したアドレスに対して、前記データを読み出すステップと前記演算を行うステップ、
    を実行することを特徴とするディスク装置の整合性検査支援方法。
  6. 請求項1に記載のディスク装置の整合性検査支援方法において、
    前記制御部が
    上位装置からのコマンドを受信するステップ、
    前記受信したコマンドの種別を判定するステップ、
    前記種別に応じて前記受信したコマンドの実行優先順位を設定するステップ、
    前記設定した実行優先順位により前記受信したコマンドを実行可能か判定するステップ、
    前記判定により実行可能な場合にコマンドを実行するステップ、
    前記判定により実行不可能な場合にコマンドをキューに積むステップ、
    キューに積まれたコマンドの実行優先順位を更新するステップ、
    前記実行優先順位の更新により実行可能になったコマンドを実行するステップ、
    を実行することを特徴とするディスク装置の整合性検査支援方法。
  7. 請求項1に記載のディスク装置の整合性検査支援方法において、
    前記制御部が、上位装置が発行する演算実行命令の解釈後に請求項1に記載のステップの実行を開始することを特徴とするディスク装置の整合性検査支援方法。
  8. 請求項6に記載のディスク装置の整合性検査支援方法において、
    前記制御部が、上位装置が発行する演算実行命令の解釈後に請求項1に記載のステップの実行優先順位を上げることを特徴とするディスク装置の整合性検査支援方法。
  9. 請求項1に記載のディスク装置の整合性検査支援方法において、
    前記制御部が
    上位装置が発行する演算結果読み出しコマンドを受信するステップ、
    前記一時記憶用バッファから前記演算結果を読み出すステップ、
    前記読み出した演算結果を前記演算結果読み出しコマンドの応答として前記上位装置に送信するステップ、
    を実行する、ことを特徴とするディスク装置の整合性検査支援方法。
  10. 記憶媒体と、一時記憶用バッファと、上位装置との間でコマンドやデータの送受信を行い、前記記憶媒体ならびに前記一時記憶用バッファに対して書き込みまたは読み出しを行う制御部とを備えるディスク装置において、
    前記制御部が、
    前記一時記憶用バッファもしくは前記記憶媒体に、記憶媒体のアドレスと読み出し状態との対応を管理する読み出し状態管理表を確保するステップ、
    を実行し、さらに、
    前記読み出し状態管理表の読み出し状態が全て読み出し済みになるまで各アドレスについて、
    前記記憶媒体から所定のデータサイズ分の第一のデータを読み出すステップ、
    前記一時記憶用バッファから前記データサイズ分の第二のデータを読み出すステップ、
    前記第一のデータと前記第二のデータとで演算を行うステップ、
    前記演算により得られた第一の演算結果を前記一時記憶用バッファに書き込むステップ、
    前記読み出し状態管理表の対応するアドレスの読み出し状態を読み出し済みに変更するステップ、
    を実行し、さらに、
    上位装置からの読み出しコマンドの要求するアドレスに対応する前記読み出し状態管理表の読み出し状態を調査し、前記読み出し状態が未読み出しの場合に読み出し状態を読み出し予約に変更するステップ、
    を実行し、さらに、
    前記読み出しコマンドを実行する際に、
    前記読み出しコマンドの要求するアドレスの読み出し状態が読み出し予約の場合に、
    前記記憶媒体から前記データサイズの第三のデータを読み出すステップ、
    前記一時記憶用バッファから前記データサイズ分の第四のデータを読み出すステップ、
    前記第三のデータと前記第四のデータとで前記演算を行うステップ、
    前記演算により得られた第二の演算結果を前記一時記憶用バッファに書き込むステップ、
    前記読み出し状態管理表の前記読み出しコマンドの要求するアドレスの読み出し状態を読み出し済みに変更するステップ、
    を実行することを特徴とするディスク装置の整合性検査支援方法。
  11. 請求項10に記載のディスク装置の整合性検査支援方法において、
    前記制御部が、
    上位装置からの書き込みコマンドの要求するアドレスに対応する前記読み出し状態管理表の読み出し状態を調査し、前記読み出し状態が未読み出しまたは読み出し予約の場合に読み出し状態を書き込み予約に変更し、前記読み出し状態が読み出し済みの場合に読み出し状態を読み出し無効に変更するステップ、
    を実行し、さらに、
    前記書き込みコマンドを実行する際に、
    前記書き込みコマンドの要求するアドレスの読み出し状態が書き込み予約の場合に、
    前記書き込みコマンドを実行するステップ、
    前記書き込みコマンドの要求するアドレスに対応する前記読み出し状態管理表の読み出し状態を未読み出しに変更するステップ、
    を実行し、
    前記書き込みコマンドの要求するアドレスの読み出し状態が読み出し無効の場合に、
    前記記憶媒体の前記書き込みコマンドの要求するアドレスから前記データサイズの第五のデータを読み出すステップ、
    前記一時記憶用バッファから前記データサイズ分の第六のデータを読み出すステップ、
    前記第五のデータと前記第六のデータとで前記演算を行うステップ、
    前記演算により得られた第三の演算結果を前記一時記憶用バッファに書き込むステップ、
    前記書き込みコマンドを実行するステップ、
    前記記憶媒体の前記書き込みコマンドの要求するアドレスから前記データサイズ分の第七のデータを読み出すステップ、
    前記一時記憶用バッファから前記データサイズ分の第八のデータを読み出すステップ、
    前記第七のデータと前記第八のデータとで前記演算を行うステップ、
    前記演算により得られた第四の演算結果を前記一時記憶用バッファに書き込むステップ、
    前記書き込みコマンドの要求するアドレスに対応する前記読み出し状態管理表の読み出し状態を読み出し済みに変更するステップ、
    を実行すること、を特徴とするディスク装置の整合性検査支援方法。
  12. 記憶媒体と、一時記憶用バッファと、上位装置との間でコマンドやデータの送受信を行い、前記記憶媒体ならびに前記一時記憶用バッファに対して書き込みまたは読み出しを行う制御部とを備えるディスク装置において、
    前記制御部が、
    前記一時記憶用バッファもしくは前記記憶媒体に、記憶媒体のアドレス範囲と演算結果との対応を管理する演算結果管理表を確保するステップ、
    前記一時記憶用バッファもしくは前記記憶媒体に、記憶媒体のアドレスと読み出し状態との対応を管理する読み出し状態管理表を確保するステップ、
    を実行し、さらに、
    前記読み出し状態管理表の読み出し状態が全て読み出し済みになるまで各アドレスについて、
    前記演算結果管理表の前記アドレスに対応するエントリから演算結果を読み出すステップ、
    前記記憶媒体の前記アドレスから第一のデータを読み出すステップ、
    前記演算結果と前記第一のデータとから演算を行い新しい演算結果を算出するステップ、
    前記演算により得られた新しい演算結果を前記演算結果管理表の前記アドレスに対応するエントリに書き戻すステップ、
    前記読み出し状態管理表の前記アドレスに対応したエントリを読み出し済みに変更するステップ、
    を実行し、さらに、
    上位装置からの読み出しコマンドの要求するアドレスに対応する前記読み出し状態管理表の読み出し状態を調査し、前記読み出し状態が未読み出しの場合に読み出し状態を読み出し予約に変更するステップ、
    上位装置からの書き込みコマンドの要求するアドレスに対応する前記読み出し状態管理表の読み出し状態を調査し、前記読み出し状態が未読み出しまたは読み出し予約の場合に読み出し状態を書き込み予約に変更し、前記読み出し状態が読み出し済みの場合に読み出し状態を読み出し無効に変更するステップ、
    を実行し、さらに、
    前記記憶媒体からの読み出しを実行する場合に、
    前記読み出しの対象となるアドレスの前記読み出し状態管理表の読み出し状態が未読み出しまたは読み出し予約の場合に、
    前記読み出し状態管理表の前記読み出し対象アドレスに対応するエントリから前記演算結果を読み出すステップ、
    前記記憶媒体の前記読み出し対象アドレスから第二のデータを読み出すステップ、
    前記演算結果と前記第二のデータとから前記演算を行い新しい演算結果を算出するステップ、
    前記新しい演算結果を前記演算結果管理表の前記読み出し対象アドレスに対応するエントリに書き戻すステップ、
    前記読み出し状態管理表の前記読み出し対象アドレスに対応するエントリを読み出し済みに変更するステップ、
    前記読み出し対象アドレスの前記読み出し状態管理表の読み出し状態が未読み出しまたは読み出し予約以外の場合に、
    前記記憶媒体の前記読み出し対象アドレスから前記第二のデータを読み出すステップ、
    を実行し、さらに、
    前記記憶媒体への書き込みを実行する場合に、
    前記書き込みの対象となるアドレスの前記読み出し状態管理表の読み出し状態が未読み出しの場合に、
    前記記憶媒体の前記書き込み対象アドレスに第三のデータを書き込むステップ、
    前記書き込み対象アドレスの前記読み出し状態管理表の読み出し状態が書き込み予約の場合に、
    前記記憶媒体の前記書き込み対象アドレスに前記第三のデータを書き込むステップ、
    前記読み出し状態管理表の前記書き込み対象アドレスに対応したエントリを未読み出しに変更するステップ、
    前記書き込み対象アドレスの前記読み出し状態管理表の読み出し状態が読み出し無効の場合に、
    前記記憶媒体の前記書き込み対象アドレスに前記第三のデータを書き込むステップ、
    前記演算結果管理表の前記書き込み対象アドレスに対応するエントリを初期化するステップ、
    前記演算結果管理表の前記書き込み対象アドレスに対応するエントリが指定するアドレス範囲の全てのアドレスについて、前記読み出し状態管理表の対応するエントリを未読み出しに変更するステップ、
    を実行すること、を特徴とするディスク装置の整合性検査支援方法。
  13. 請求項12に記載のディスク装置の整合性検査支援方法において、
    前記制御部が、
    上位装置が発行する演算結果読み出しコマンドを受信するステップ、
    前記読み出し状態管理表に定義された全てのアドレスが読み出し済みになっていない場合に、読み出し状態を読み出し済みにするためのステップを優先的に実行するように設定するステップ、
    を実行し、さらに、
    前記演算結果管理表の最初のアドレス範囲から最後のアドレス範囲までの各アドレス範囲について、
    前記演算結果管理表の前記アドレス範囲に対応するエントリから前記演算結果を読み出すステップ、
    前記演算結果と前回のディスク装置全体の演算結果とから演算を行い新しい前記ディスク装置全体の演算結果を算出するステップ、
    を繰り返し実行し、さらに前記演算結果管理表の全てのアドレス範囲について前記演算が終了した後に、
    前記ディスク装置全体の演算結果を前記演算結果読み出しコマンドの応答として前記上位装置に送信するステップ、
    を実行すること、を特徴とするディスク装置の整合性検査支援方法。
  14. 複数の整合性検査支援機能を備えるディスク装置と、
    一時記憶用バッファと、
    前記ディスク装置および前記一時記憶用バッファに対して書き込みや読み出しの命令を発行するディスクアレイ制御部と、
    を備えるディスクアレイ装置において、
    前記ディスクアレイ制御部が、
    前記複数のディスク装置のそれぞれから演算結果を読み出し前記一時記憶用バッファに記録するステップ、
    前記一時記憶用バッファに記録した前記ディスク装置の演算結果のそれぞれについて、前記ディスク装置の演算結果とディスクアレイ装置の演算結果とで演算を行い新しいディスクアレイ装置の演算結果を算出するステップ、
    前記ディスクアレイ装置の演算結果と期待値とを比較するステップ、
    前記比較が一致している場合に、前記複数のディスク装置の整合性が保たれていると判断するステップ、
    前記比較が一致していない場合に、前記複数のディスク装置の整合性が保たれていないと判断するステップ、
    を実行すること、を特徴とするディスクアレイ装置の整合性検査方法。
  15. 請求項14に記載のディスクアレイ装置の整合性検査方法において、
    前記ディスクアレイ制御部が、
    前記比較が一致しない場合に、前記複数のディスク装置のそれぞれに対して、
    ディスク装置が正常に動作しているかを検証するための一つもしくは複数のコマンドを発行するステップ、
    前記一つもしくは複数のコマンドに対するディスク装置の応答を受信するステップ、
    前記応答を調べ、ディスク装置が正常に動作しているかを判断するステップ、
    を実行すること、を特徴とするディスクアレイ装置の整合性検査方法。
  16. 請求項14に記載のディスクアレイ装置の整合性検査方法において、
    前記ディスクアレイ装置がコンソールを備え、
    前記コンソールが、
    前記整合性が保たれていると判断するステップ、もしくは前記整合性が保たれていないと判断するステップでの、判断結果を表示すること、
    を特徴とするディスクアレイ装置の整合性検査方法。
  17. 請求項15に記載のディスクアレイ装置の整合性検査方法において、
    前記ディスクアレイ装置がコンソールを備え、
    前記コンソールが、
    前記ディスク装置が正常に動作しているかを判断するステップでの判断結果を表示すること、
    を特徴とするディスクアレイ装置の整合性検査方法。
  18. 請求項14に記載のディスクアレイ装置の整合性検査方法において、
    前記演算が排他的論理和であること、
    を特徴とするディスクアレイ装置の整合性検査方法。
  19. 請求項14に記載のディスクアレイ装置の整合性検査方法において、
    前記ディスクアレイ装置がコンソールを備え、
    ディスク装置の演算結果を計算するための開始アドレスと終了アドレスを指定するための命令を、前記ディスクアレイ制御部が前記複数のディスク制御装置のそれぞれに対して発行するように、前記コンソールが前記ディスクアレイ制御部に命令を発行すること、
    を特徴とするディスクアレイ装置の整合性検査方法。
  20. 請求項14に記載のディスクアレイ装置の整合性検査方法において、
    前記ディスクアレイ装置がコンソールを備え、
    ディスク装置の演算結果を計算するためのデータサイズを指定するための命令を、前記ディスクアレイ制御部が前記複数のディスク装置のそれぞれに対して発行するように、前記コンソールが前記ディスクアレイ制御部に命令を発行すること、
    を特徴とするディスクアレイ装置の整合性検査方法。
JP2004339723A 2004-11-25 2004-11-25 ディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法 Pending JP2006146833A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004339723A JP2006146833A (ja) 2004-11-25 2004-11-25 ディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法
US11/274,571 US7577897B2 (en) 2004-11-25 2005-11-14 Data integrity inspection support method for disk devices, and data integrity inspection method for disk devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004339723A JP2006146833A (ja) 2004-11-25 2004-11-25 ディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法

Publications (1)

Publication Number Publication Date
JP2006146833A true JP2006146833A (ja) 2006-06-08

Family

ID=36585470

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004339723A Pending JP2006146833A (ja) 2004-11-25 2004-11-25 ディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法

Country Status (2)

Country Link
US (1) US7577897B2 (ja)
JP (1) JP2006146833A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012175535A (ja) * 2011-02-23 2012-09-10 Brother Ind Ltd ノード装置、情報処理方法及びプログラム
JP2016148936A (ja) * 2015-02-10 2016-08-18 富士通株式会社 ストレージ制御装置、制御方法、および制御プログラム

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US7904756B2 (en) 2007-10-19 2011-03-08 Oracle International Corporation Repair planning engine for data corruptions
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US7788541B2 (en) * 2008-04-15 2010-08-31 Dot Hill Systems Corporation Apparatus and method for identifying disk drives with unreported data corruption
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
TW201225646A (en) * 2010-12-10 2012-06-16 Hon Hai Prec Ind Co Ltd Home multimedia device
JP5296041B2 (ja) * 2010-12-15 2013-09-25 株式会社東芝 メモリシステムおよびメモリシステムの制御方法
JP2012247817A (ja) * 2011-05-25 2012-12-13 Fujitsu Ltd ストレージ制御装置、ストレージ装置及びパトロール診断方法
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
US20130124805A1 (en) * 2011-11-10 2013-05-16 Advanced Micro Devices, Inc. Apparatus and method for servicing latency-sensitive memory requests
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US10120694B2 (en) 2013-03-15 2018-11-06 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9842024B1 (en) 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
US10817181B2 (en) * 2018-12-24 2020-10-27 EMC IP Holding Company LLC Host device with multi-path scheduling based at least in part on measured parameters
US11308004B1 (en) 2021-01-18 2022-04-19 EMC IP Holding Company LLC Multi-path layer configured for detection and mitigation of slow drain issues in a storage area network
US11467765B2 (en) 2021-01-20 2022-10-11 EMC IP Holding Company LLC Detection and mitigation of slow drain issues using response times and storage-side latency view
US11586356B1 (en) 2021-09-27 2023-02-21 Dell Products L.P. Multi-path layer configured for detection and mitigation of link performance issues in a storage area network

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761402A (en) * 1993-03-08 1998-06-02 Hitachi, Ltd. Array type disk system updating redundant data asynchronously with data access
US5745671A (en) * 1995-02-28 1998-04-28 International Business Machines Corporation Data storage system with localized XOR function
US6526477B1 (en) * 1999-09-03 2003-02-25 Adaptec, Inc. Host-memory based raid system, device, and method
JP2002149503A (ja) 2000-11-10 2002-05-24 Fujitsu Denso Ltd 補助記憶部の診断方法、情報処理装置、及び補助記憶部の診断手順を記憶した記憶媒体

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012175535A (ja) * 2011-02-23 2012-09-10 Brother Ind Ltd ノード装置、情報処理方法及びプログラム
JP2016148936A (ja) * 2015-02-10 2016-08-18 富士通株式会社 ストレージ制御装置、制御方法、および制御プログラム

Also Published As

Publication number Publication date
US20060129876A1 (en) 2006-06-15
US7577897B2 (en) 2009-08-18

Similar Documents

Publication Publication Date Title
JP2006146833A (ja) ディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法
US6467023B1 (en) Method for logical unit creation with immediate availability in a raid storage environment
US9542272B2 (en) Write redirection in redundant array of independent disks systems
US9442802B2 (en) Data access methods and storage subsystems thereof
US9047219B2 (en) Storage system, storage control device, and storage control method
KR100255847B1 (ko) 레이드 제어기에서의 스트라이프 기록 방법
US7421535B2 (en) Method for demoting tracks from cache
JP5768587B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
JP5807458B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
US8880843B2 (en) Providing redundancy in a virtualized storage system for a computer system
JP2981245B2 (ja) アレイ型ディスク駆動機構システム及び方法
US5951691A (en) Method and system for detection and reconstruction of corrupted data in a data storage subsystem
US7310745B2 (en) Efficient media scan operations for storage systems
US20090313617A1 (en) Method for Updating Control Program of Physical Storage Device in Storage Virtualization System and Storage Virtualization Controller and System Thereof
JPH05505264A (ja) データ記憶装置における書込みオペレーション識別子の不揮発性メモリ記憶
CN106168920B (zh) 控制包括只读闪速数据存储设备的独立磁盘冗余阵列
CN112181298B (zh) 阵列访问方法、装置、存储设备及机器可读存储介质
JP4114877B2 (ja) 不正データを検出するための装置、方法、及びプログラム
US7398448B2 (en) Storage system has the function of preventing drive write error
US7174476B2 (en) Methods and structure for improved fault tolerance during initialization of a RAID logical unit
US7117387B2 (en) Method and apparatus for writing data and validating data in a recording medium
JP6287613B2 (ja) 制御装置、および診断制御プログラム
JP5729043B2 (ja) ストレージ装置および制御装置
JP2013058169A (ja) ディスクアレイ装置及びディスクアレイ装置制御方法
US9639417B2 (en) Storage control apparatus and control method