(57)【要約】【課題】ディスク装置のインタフェース帯域を消費せずにディスクアレイ装置のデータの整合性検証を可能にするディスク装置の整合性検証支援方法を提供する。【解決手段】データ検証のための演算をディスク装置内でも演算可能な第一段階演算とディスクアレイ装置内でなければ演算不可能な第二段階演算とに分割する。第一段階での演算は以下の手順で行う。ステップ１１３で記憶媒体からデータを読み出し、ステップ１１４で保存しておいた演算の中間結果を読み出し、ステップ１１５で二つのデータで演算を行い、ステップ１１６で演算結果を新たな中間結果として保存する。第二段階の演算では、各ディスク装置から第一段階の演算結果を読み出してそれらの演算結果どうしでさらに演算を行う。【選択図】図１
2006146833.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体と、一時記憶用バッファと、上位装置との間でコマンドやデータの送受信を行い、前記記憶媒体ならびに前記一時記憶用バッファに対して書き込みまたは読み出し制御を行う制御部とを備えるディスク装置において、
前記制御部が、
前記記憶媒体の読み出しアドレスから所定のデータサイズ分の第一のデータを読み出すステップ、
前記一時記憶用バッファから前記データサイズ分の第二のデータを読み出すステップ、
前記第一のデータと前記第二のデータとで演算を行うステップ、
前記演算により得られた演算結果を前記一時記憶用バッファに書き込むステップ、
前記読み出しアドレスを更新するステップ、
を繰り返し実行することを特徴とするディスク装置の整合性検査支援方法。
【請求項２】
請求項１に記載のディスク装置の整合性検査支援方法において、
前記制御部が、上位装置が発行したアドレス指定コマンドを受けて、前記データを読み出す前記記憶媒体の開始アドレス及び／又は終了アドレスを設定することを特徴とするディスク装置の整合性検査支援方法。
【請求項３】
請求項１に記載のディスク装置の整合性検査支援方法において、
前記制御部が、上位装置が発行したデータサイズ指定コマンドを受けて、前記データサイズを指定することを特徴とするディスク装置の整合性検査支援方法。
【請求項４】
請求項１に記載のディスク装置の整合性検査支援方法において、
前記演算が排他的論理和であることを特徴とするディスク装置の整合性検査支援方法。
【請求項５】
請求項１に記載のディスク装置の整合性検査支援方法において、
前記制御部が
上位装置から書き込みコマンドを受信するステップ、
前記書き込みコマンドの指定する前記記憶媒体のアドレスに対して前記データを読み出すステップを実行しているか検査するステップ、
前記読み出すステップを実行済みの場合には、
読み出し済みのアドレスに対して、前記データを読み出すステップと前記演算を行うステップを実行した後、
前記書き込みコマンドを実行するステップ、
前記書き込みコマンドを実行したアドレスに対して、前記データを読み出すステップと前記演算を行うステップ、
を実行することを特徴とするディスク装置の整合性検査支援方法。
【請求項６】
請求項１に記載のディスク装置の整合性検査支援方法において、
前記制御部が
上位装置からのコマンドを受信するステップ、
前記受信したコマンドの種別を判定するステップ、
前記種別に応じて前記受信したコマンドの実行優先順位を設定するステップ、
前記設定した実行優先順位により前記受信したコマンドを実行可能か判定するステップ、
前記判定により実行可能な場合にコマンドを実行するステップ、
前記判定により実行不可能な場合にコマンドをキューに積むステップ、
キューに積まれたコマンドの実行優先順位を更新するステップ、
前記実行優先順位の更新により実行可能になったコマンドを実行するステップ、
を実行することを特徴とするディスク装置の整合性検査支援方法。
【請求項７】
請求項１に記載のディスク装置の整合性検査支援方法において、
前記制御部が、上位装置が発行する演算実行命令の解釈後に請求項１に記載のステップの実行を開始することを特徴とするディスク装置の整合性検査支援方法。
【請求項８】
請求項６に記載のディスク装置の整合性検査支援方法において、
前記制御部が、上位装置が発行する演算実行命令の解釈後に請求項１に記載のステップの実行優先順位を上げることを特徴とするディスク装置の整合性検査支援方法。
【請求項９】
請求項１に記載のディスク装置の整合性検査支援方法において、
前記制御部が
上位装置が発行する演算結果読み出しコマンドを受信するステップ、
前記一時記憶用バッファから前記演算結果を読み出すステップ、
前記読み出した演算結果を前記演算結果読み出しコマンドの応答として前記上位装置に送信するステップ、
を実行する、ことを特徴とするディスク装置の整合性検査支援方法。
【請求項１０】
記憶媒体と、一時記憶用バッファと、上位装置との間でコマンドやデータの送受信を行い、前記記憶媒体ならびに前記一時記憶用バッファに対して書き込みまたは読み出しを行う制御部とを備えるディスク装置において、
前記制御部が、
前記一時記憶用バッファもしくは前記記憶媒体に、記憶媒体のアドレスと読み出し状態との対応を管理する読み出し状態管理表を確保するステップ、
を実行し、さらに、
前記読み出し状態管理表の読み出し状態が全て読み出し済みになるまで各アドレスについて、
前記記憶媒体から所定のデータサイズ分の第一のデータを読み出すステップ、
前記一時記憶用バッファから前記データサイズ分の第二のデータを読み出すステップ、
前記第一のデータと前記第二のデータとで演算を行うステップ、
前記演算により得られた第一の演算結果を前記一時記憶用バッファに書き込むステップ、
前記読み出し状態管理表の対応するアドレスの読み出し状態を読み出し済みに変更するステップ、
を実行し、さらに、
上位装置からの読み出しコマンドの要求するアドレスに対応する前記読み出し状態管理表の読み出し状態を調査し、前記読み出し状態が未読み出しの場合に読み出し状態を読み出し予約に変更するステップ、
を実行し、さらに、
前記読み出しコマンドを実行する際に、
前記読み出しコマンドの要求するアドレスの読み出し状態が読み出し予約の場合に、
前記記憶媒体から前記データサイズの第三のデータを読み出すステップ、
前記一時記憶用バッファから前記データサイズ分の第四のデータを読み出すステップ、
前記第三のデータと前記第四のデータとで前記演算を行うステップ、
前記演算により得られた第二の演算結果を前記一時記憶用バッファに書き込むステップ、
前記読み出し状態管理表の前記読み出しコマンドの要求するアドレスの読み出し状態を読み出し済みに変更するステップ、
を実行することを特徴とするディスク装置の整合性検査支援方法。
【請求項１１】
請求項１０に記載のディスク装置の整合性検査支援方法において、
前記制御部が、
上位装置からの書き込みコマンドの要求するアドレスに対応する前記読み出し状態管理表の読み出し状態を調査し、前記読み出し状態が未読み出しまたは読み出し予約の場合に読み出し状態を書き込み予約に変更し、前記読み出し状態が読み出し済みの場合に読み出し状態を読み出し無効に変更するステップ、
を実行し、さらに、
前記書き込みコマンドを実行する際に、
前記書き込みコマンドの要求するアドレスの読み出し状態が書き込み予約の場合に、
前記書き込みコマンドを実行するステップ、
前記書き込みコマンドの要求するアドレスに対応する前記読み出し状態管理表の読み出し状態を未読み出しに変更するステップ、
を実行し、
前記書き込みコマンドの要求するアドレスの読み出し状態が読み出し無効の場合に、
前記記憶媒体の前記書き込みコマンドの要求するアドレスから前記データサイズの第五のデータを読み出すステップ、
前記一時記憶用バッファから前記データサイズ分の第六のデータを読み出すステップ、
前記第五のデータと前記第六のデータとで前記演算を行うステップ、
前記演算により得られた第三の演算結果を前記一時記憶用バッファに書き込むステップ、
前記書き込みコマンドを実行するステップ、
前記記憶媒体の前記書き込みコマンドの要求するアドレスから前記データサイズ分の第七のデータを読み出すステップ、
前記一時記憶用バッファから前記データサイズ分の第八のデータを読み出すステップ、
前記第七のデータと前記第八のデータとで前記演算を行うステップ、
前記演算により得られた第四の演算結果を前記一時記憶用バッファに書き込むステップ、
前記書き込みコマンドの要求するアドレスに対応する前記読み出し状態管理表の読み出し状態を読み出し済みに変更するステップ、
を実行すること、を特徴とするディスク装置の整合性検査支援方法。
【請求項１２】
記憶媒体と、一時記憶用バッファと、上位装置との間でコマンドやデータの送受信を行い、前記記憶媒体ならびに前記一時記憶用バッファに対して書き込みまたは読み出しを行う制御部とを備えるディスク装置において、
前記制御部が、
前記一時記憶用バッファもしくは前記記憶媒体に、記憶媒体のアドレス範囲と演算結果との対応を管理する演算結果管理表を確保するステップ、
前記一時記憶用バッファもしくは前記記憶媒体に、記憶媒体のアドレスと読み出し状態との対応を管理する読み出し状態管理表を確保するステップ、
を実行し、さらに、
前記読み出し状態管理表の読み出し状態が全て読み出し済みになるまで各アドレスについて、
前記演算結果管理表の前記アドレスに対応するエントリから演算結果を読み出すステップ、
前記記憶媒体の前記アドレスから第一のデータを読み出すステップ、
前記演算結果と前記第一のデータとから演算を行い新しい演算結果を算出するステップ、
前記演算により得られた新しい演算結果を前記演算結果管理表の前記アドレスに対応するエントリに書き戻すステップ、
前記読み出し状態管理表の前記アドレスに対応したエントリを読み出し済みに変更するステップ、
を実行し、さらに、
上位装置からの読み出しコマンドの要求するアドレスに対応する前記読み出し状態管理表の読み出し状態を調査し、前記読み出し状態が未読み出しの場合に読み出し状態を読み出し予約に変更するステップ、
上位装置からの書き込みコマンドの要求するアドレスに対応する前記読み出し状態管理表の読み出し状態を調査し、前記読み出し状態が未読み出しまたは読み出し予約の場合に読み出し状態を書き込み予約に変更し、前記読み出し状態が読み出し済みの場合に読み出し状態を読み出し無効に変更するステップ、
を実行し、さらに、
前記記憶媒体からの読み出しを実行する場合に、
前記読み出しの対象となるアドレスの前記読み出し状態管理表の読み出し状態が未読み出しまたは読み出し予約の場合に、
前記読み出し状態管理表の前記読み出し対象アドレスに対応するエントリから前記演算結果を読み出すステップ、
前記記憶媒体の前記読み出し対象アドレスから第二のデータを読み出すステップ、
前記演算結果と前記第二のデータとから前記演算を行い新しい演算結果を算出するステップ、
前記新しい演算結果を前記演算結果管理表の前記読み出し対象アドレスに対応するエントリに書き戻すステップ、
前記読み出し状態管理表の前記読み出し対象アドレスに対応するエントリを読み出し済みに変更するステップ、
前記読み出し対象アドレスの前記読み出し状態管理表の読み出し状態が未読み出しまたは読み出し予約以外の場合に、
前記記憶媒体の前記読み出し対象アドレスから前記第二のデータを読み出すステップ、
を実行し、さらに、
前記記憶媒体への書き込みを実行する場合に、
前記書き込みの対象となるアドレスの前記読み出し状態管理表の読み出し状態が未読み出しの場合に、
前記記憶媒体の前記書き込み対象アドレスに第三のデータを書き込むステップ、
前記書き込み対象アドレスの前記読み出し状態管理表の読み出し状態が書き込み予約の場合に、
前記記憶媒体の前記書き込み対象アドレスに前記第三のデータを書き込むステップ、
前記読み出し状態管理表の前記書き込み対象アドレスに対応したエントリを未読み出しに変更するステップ、
前記書き込み対象アドレスの前記読み出し状態管理表の読み出し状態が読み出し無効の場合に、
前記記憶媒体の前記書き込み対象アドレスに前記第三のデータを書き込むステップ、
前記演算結果管理表の前記書き込み対象アドレスに対応するエントリを初期化するステップ、
前記演算結果管理表の前記書き込み対象アドレスに対応するエントリが指定するアドレス範囲の全てのアドレスについて、前記読み出し状態管理表の対応するエントリを未読み出しに変更するステップ、
を実行すること、を特徴とするディスク装置の整合性検査支援方法。
【請求項１３】
請求項１２に記載のディスク装置の整合性検査支援方法において、
前記制御部が、
上位装置が発行する演算結果読み出しコマンドを受信するステップ、
前記読み出し状態管理表に定義された全てのアドレスが読み出し済みになっていない場合に、読み出し状態を読み出し済みにするためのステップを優先的に実行するように設定するステップ、
を実行し、さらに、
前記演算結果管理表の最初のアドレス範囲から最後のアドレス範囲までの各アドレス範囲について、
前記演算結果管理表の前記アドレス範囲に対応するエントリから前記演算結果を読み出すステップ、
前記演算結果と前回のディスク装置全体の演算結果とから演算を行い新しい前記ディスク装置全体の演算結果を算出するステップ、
を繰り返し実行し、さらに前記演算結果管理表の全てのアドレス範囲について前記演算が終了した後に、
前記ディスク装置全体の演算結果を前記演算結果読み出しコマンドの応答として前記上位装置に送信するステップ、
を実行すること、を特徴とするディスク装置の整合性検査支援方法。
【請求項１４】
複数の整合性検査支援機能を備えるディスク装置と、
一時記憶用バッファと、
前記ディスク装置および前記一時記憶用バッファに対して書き込みや読み出しの命令を発行するディスクアレイ制御部と、
を備えるディスクアレイ装置において、
前記ディスクアレイ制御部が、
前記複数のディスク装置のそれぞれから演算結果を読み出し前記一時記憶用バッファに記録するステップ、
前記一時記憶用バッファに記録した前記ディスク装置の演算結果のそれぞれについて、前記ディスク装置の演算結果とディスクアレイ装置の演算結果とで演算を行い新しいディスクアレイ装置の演算結果を算出するステップ、
前記ディスクアレイ装置の演算結果と期待値とを比較するステップ、
前記比較が一致している場合に、前記複数のディスク装置の整合性が保たれていると判断するステップ、
前記比較が一致していない場合に、前記複数のディスク装置の整合性が保たれていないと判断するステップ、
を実行すること、を特徴とするディスクアレイ装置の整合性検査方法。
【請求項１５】
請求項１４に記載のディスクアレイ装置の整合性検査方法において、
前記ディスクアレイ制御部が、
前記比較が一致しない場合に、前記複数のディスク装置のそれぞれに対して、
ディスク装置が正常に動作しているかを検証するための一つもしくは複数のコマンドを発行するステップ、
前記一つもしくは複数のコマンドに対するディスク装置の応答を受信するステップ、
前記応答を調べ、ディスク装置が正常に動作しているかを判断するステップ、
を実行すること、を特徴とするディスクアレイ装置の整合性検査方法。
【請求項１６】
請求項１４に記載のディスクアレイ装置の整合性検査方法において、
前記ディスクアレイ装置がコンソールを備え、
前記コンソールが、
前記整合性が保たれていると判断するステップ、もしくは前記整合性が保たれていないと判断するステップでの、判断結果を表示すること、
を特徴とするディスクアレイ装置の整合性検査方法。
【請求項１７】
請求項１５に記載のディスクアレイ装置の整合性検査方法において、
前記ディスクアレイ装置がコンソールを備え、
前記コンソールが、
前記ディスク装置が正常に動作しているかを判断するステップでの判断結果を表示すること、
を特徴とするディスクアレイ装置の整合性検査方法。
【請求項１８】
請求項１４に記載のディスクアレイ装置の整合性検査方法において、
前記演算が排他的論理和であること、
を特徴とするディスクアレイ装置の整合性検査方法。
【請求項１９】
請求項１４に記載のディスクアレイ装置の整合性検査方法において、
前記ディスクアレイ装置がコンソールを備え、
ディスク装置の演算結果を計算するための開始アドレスと終了アドレスを指定するための命令を、前記ディスクアレイ制御部が前記複数のディスク制御装置のそれぞれに対して発行するように、前記コンソールが前記ディスクアレイ制御部に命令を発行すること、
を特徴とするディスクアレイ装置の整合性検査方法。
【請求項２０】
請求項１４に記載のディスクアレイ装置の整合性検査方法において、
前記ディスクアレイ装置がコンソールを備え、
ディスク装置の演算結果を計算するためのデータサイズを指定するための命令を、前記ディスクアレイ制御部が前記複数のディスク装置のそれぞれに対して発行するように、前記コンソールが前記ディスクアレイ制御部に命令を発行すること、
を特徴とするディスクアレイ装置の整合性検査方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイ装置の整合性検査方法に関し、特にディスクアレイ装置の内蔵するディスク装置内部の制御部で第一段階の演算を行い、ディスクアレイ装置内部のディスクアレイ制御部で第二段階の演算を行うことで、ディスク装置とのデータ通信量を削減しつつ整合性検査を行う、ディスクアレイ装置の整合性検査方法に関する。
【背景技術】
【０００２】
最近のストレージサブシステムでは従来の大型ディスクに代わり 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)を計算して生成する。
【０００５】
【数１】
2006146833.tif 000003
【０００６】
奇数パリティの場合にはExpected Value の全てのビットが 1 になっている。任意のデータが壊れた場合でも残りのデータとパリティと期待値とで壊れたデータを再生できる。式(2)に Data1, Data2, Parity, Expected Value から Data3 を再生する場合を示す。このため、RAID-5 を構成する HDD の内の任意の一台が故障しても残りの HDDからデータを再生できる。つまり、RAID-5 は一点障碍から回復できるアーキテクチャになっている。
【０００７】
【数２】
2006146833.tif 000004
【０００８】
図３に従来のディスクアレイ装置の構成を示す。図３において、３００は従来のディスクアレイ装置、３０１はホストコンピュータとのインタフェース、３０２は内部接続バス、３０３はメモリコントローラ、３０４はプロセッサバス、３０５はマイクロプロセッサ、３０６はXOR演算器、３０７はメモリバス、３０８はキャッシュメモリ、３０９はディスク装置とのインタフェース、３１０はディスク装置との接続バス、３１１はディスク装置、３２１はホストコンピュータ、３２２はホストコンピュータとの接続バスである。
【０００９】
図３により、ディスクアレイ装置の動作の概要を説明する。ホストコンピュータ３２１は SCSI (Small Computer System Interface) や FC-AL (FibreChannel Arbitrated Loop) などからなるホストコンピュータとの接続バス３２２によってコマンドやデータをディスクアレイ装置３００に送信する。ディスクアレイ装置３００ではホストコンピュータ３２１からのコマンドやデータをホストコンピュータとのインタフェース（ホストインタフェース）３０１で受信する。ホストインタフェース３０１は、PCI バスなどの内部バス３０２を通してメモリコントローラ３０３とメモリバス３０７を通してキャッシュメモリ３０８に受信したコマンドやデータを保存する。マイクロプロセッサ３０５はプロセッサバス３０４を通してメモリコントローラ３０３経由でキャッシュメモリ３０７にアクセスする。
【００１０】
受信したコマンドが書き込み命令の場合には、マイクロプロセッサ３０５は、キャッシュメモリ３０８に保存された受信したデータとXOR演算器３０６とを使ってパリティデータを生成してキャッシュメモリ３０８に保存する。メモリコントローラ３０３と内部バス３０２で接続されたディスク装置とのインタフェース（ディスクインタフェース）３０９が、キャッシュメモリ３０８に保存された受信したデータとパリティデータとを読み出して複数のディスク装置３１１に書き込む。ディスクインタフェース３０９とディスク装置３１１とは SCSI や FC-ALなどからなるディスク装置との接続バス３１０により接続される。
【００１１】
受信したコマンドが読み出しの場合には、ディスクインタフェース３０９がディスク装置３１１からデータを読み出してキャッシュメモリ３０８に格納し、ホストインタフェース３０１がキャッシュメモリ３０８から格納されたデータを読み出しホストコンピュータ３２１に送信する。
【００１２】
ホストインタフェース３０１、メモリコントローラ３０３、マイクロプロセッサ３０５、キャッシュメモリ３０８、ディスクインタフェース３０９、などがディスクアレイ制御部である。
【００１３】
ディスク装置３１１に障碍が発生すると、ディスクインタフェース３０９がディスク装置の障碍をマイクロプロセッサ３０５に伝える。マイクロプロセッサ３０５はディスクアレイ装置３００のコンソール（図３中に図示されていない）にディスク障碍の発生を表示し、ディスクアレイ装置３００の管理者に障碍の発生したディスク装置３１１の正常なディスク装置３１１への交換を促す。そして正常なディスク装置３１１への交換後に、マイクロプロセッサ３０５はディスクインタフェース３０９を用いて正常に動作していたディスク装置３１１からデータを読み出す。次に、マイクロプロセッサ３０５は、XOR 演算器３０６によって交換したディスク装置３１１に格納すべきデータを生成し、ディスクインタフェース３０９により交換したディスク装置３１１にデータを書き込む。
【００１４】
RAID-5 ではパリティデータが一つであるので、ディスク装置が一台壊れる一点障碍からは回復できるが、ディスク装置が二台壊れる二点障碍からは回復できない。RAID-5 の障碍回復で最も問題となるのは、データ再生のためにディスク装置からデータを読み出している最中に今まで検出できていなかった障碍が発覚して二点障碍になる場合である。二点障碍からは回復できないため、データが消失してしまう。このような障碍の例として、ディスク装置の記憶媒体への書き込みヘッドが壊れており、ディスクアレイ制御部には書き込みコマンドへの正常応答を返すにも関わらずデータ書き込みに失敗する場合がある。ディスク装置の記憶媒体からの読み出しヘッドが故障していなければデータの読み出しを正常に実行できるため、このような障碍の検出は非常に困難である。ディスク装置単体で行う場合には、全てのデータを書き込んだ直後に読み出しテストをするしかないが、これではディスク装置の性能が大幅に劣化するため現実的ではない。このため、ディスク装置の整合性を検証するには、ディスクアレイ装置に搭載した全てのディスク装置から全てのデータを読み出して、整合性を検証する演算を行う必要がある。
【００１５】
図５と式(3)を使いデータ整合性の検証方法について説明する。図５は、RAID-5 のブロックアドレスの模式図である。図５において、５０１は第一のディスク装置のブロックアドレス、５０２は第二のディスク装置のブロックアドレス、５０３は第三のディスク装置のブロックアドレス、５０４は第四のディスク装置のブロックアドレス、５０５はブロックアドレス、である。式(3)は RAID-5 のデータ検証方法である。
【００１６】
【数３】
2006146833.tif 000005
【００１７】
RAID-5 ではホストからのデータを 4KB や8KB などのブロックサイズに分割して複数のディスク装置に格納する。ディスク装置のセクタアドレスの先頭からブロックサイズ毎にアドレスを付ける。このアドレスをブロックアドレスと呼ぶ。さらに、ディスクの識別子もつけてどのディスク装置のブロックアドレスかを一意に指定できるようにする。例えば、ディスク装置の識別子が N で、ブロックアドレスが abc の場合には、そのブロックは５０５のように N-abc のように指定できる。５０１、５０２、５０３、５０４のように、各ディスク装置のブロックアドレスは、000 から xyz まで存在し、第一のディスク装置の識別子を 0、第二のディスク装置の識別子を 1、第三のディスク装置の識別子を 2、第四のディスク装置の識別子を 3 とする。
【００１８】
例えば、ブロックアドレスabc に書かれたデータの整合性を検証するためには、式(3)のように第一から第四のディスク装置の abc のブロックアドレスからデータを読み出して XOR 演算を行い XOR-abc を計算する。データが正常に記録されていれば、XOR-abc は期待値になる。
【００１９】
このようなデータ整合性の検証のためには、ディスク装置との接続バス３１０を使ってディスク装置３１１のデータをキャッシュメモリ３０８に読み込み、XOR演算器３０６で演算しなければならない。この処理にはディスク装置３１１のインタフェース帯域、ディスク装置との接続バス３１０の帯域、を消費するため、ディスクアレイ装置３００のホストコンピュータ３２１の要求を処理する能力が低下する。同様に、ホストコンピュータ３２１の要求を処理するためのキャッシュメモリ３０８の容量やXOR演算器３０６の使用可能な時間が少なくなり、ディスクアレイ装置３００の処理性能力が低下する。
【００２０】
このようなディスクアレイ装置の処理能力の低下を避けるため、特開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 の形式にも容易に適用可能である。
【実施例１】
【００４９】
図１は、本発明によるディスク装置の整合性検査支援方法の第一の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図である。図１において、１０１は開始アドレスを初期化するステップ、１０２は終了アドレスを初期化するステップ、１０３はデータサイズを初期化するステップ、１０４はバッファを初期化するステップ、１１０はアドレス範囲でのループ、１１１はコマンドの受信を確認するステップ、１１２はコマンドを受信しているか検査するステップ、１１３は記憶媒体を読み出すステップ、１１４はバッファを読み出すステップ、１１５はXOR演算を行うステップ、１１６はバッファに書き込むステップ、１１７はアドレスを更新するステップ、１２０は第一のコマンド実行のサブルーチン、である。
【００５０】
図２は、第一のコマンド実行のサブルーチンの PAD 図である。図２において、２０１は書き込みコマンドかを検査するステップ、２０２は読み出し済みのアドレスへの書き込みコマンドかを検査するステップ、２０３は受信したコマンドを実行するステップ、２０４は開始アドレスを調整するステップ、２０５は終了アドレスを調整するステップ、２０６は書き込みコマンドを実行するステップ、２１０は変更前のデータにより演算を行うステップ群、２２０は変更後のデータにより演算を行うステップ群、である。
【００５１】
図４は、本発明の第一の実施例による、ディスクアレイの構成図、である。図４において、４００は本発明によるディスクアレイ装置、４０１は本発明によるディスク装置、４０２はディスク装置に内蔵したXOR演算器、である。
【００５２】
図６は、本発明の第一の実施例による、ディスク装置のブロック図、である。図６において、６０１はフラッシュロム、６０２は主記憶、６０３はキャッシュメモリ、６０４はメモリコントローラおよびマイクロプロセッサ、６０５はXOR演算器、６０６はハードディスクコントローラおよびSCSIプロトコルコントローラ、６０７はディスクインタフェース、６０８はサーボコントローラ、６０９はリードライトチャネル、である。
【００５３】
本実施例では、ディスクアレイ装置のデータ整合性検査を行うのに、ディスクアレイ装置に内蔵したディスク装置において第一段階の演算を行い、ディスクアレイ装置において第二段階の演算を行うところに特徴がある。ディスク装置で第一段階の演算を行うことで、ディスク装置との接続バス３１０を使ったディスクアレイ装置の制御部とディスク装置との間のデータ転送量を大幅に削減可能になる効果がある。
【００５４】
従来のディスクアレイ装置ではディスク装置に保存したデータの整合性の検査のために、式(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 の値には期待値や規則性が存在しない。
【００５６】
【数４】
2006146833.tif 000006
【００５７】
第二段階の演算では、式(5)のように各ディスク装置内で演算した N-XOR の排他的論理和である、XOR-XOR を計算する。XOR-XOR の期待値は、ディスク装置のブロックアドレスの数だけ Expected Value の排他的論理和を計算した値である。
【００５８】
【数５】
2006146833.tif 000007
【００５９】
本発明の方式では、ディスク装置からディスクアレイ制御部に転送するデータは N-XOR だけである。例えば、ディスク装置の容量が 100GB で、ブロックサイズが 4KB の場合には、従来の方式では 100GB のデータを転送しなければならないのに対して、本発明の方式では 4KB のデータのみを転送すれば良い。つまり、転送するデータ容量を 4KB/100GB = 1/25M に削減できる。
【００６０】
図６により、本発明によるディスク装置の構成を説明する。フラッシュメモリ６０１にはディスク装置の制御プログラムや後述する第一段階の演算プログラムが格納される。これらのプログラムは電源投入後に主記憶６０２に展開される。主記憶６０２にはフラッシュロム６０１に格納された各種プログラムが展開される他、ディスクアレイ装置の制御部などの上位装置から設定された各種パラメータが格納される。メモリコントローラおよびマイクロプロセッサ(MPU)６０４がディスク装置の制御部である。マイクロプロセッサは主記憶６０２に格納されたプログラムとパラメータによって、読み出し／書き込みなどの通常のディスク装置の動作の他に、第一段階の演算を行う。キャッシュメモリ６０３は、読み出しや書き込み時のデータの一時的格納場所として用いる他に、第一段階の演算での中間結果の保存場所としても用いる。ディスクインタフェース６０７はディスクアレイ装置の制御部などの上位装置とのデータの送受信を行う。主記憶６０２に保存するパラメータも上位装置からディスクインタフェース６０７を通してディスク装置に転送される。ハードディスクコントローラ(HDC)およびSCSIプロトコルコントローラ(SPC)６０６は、上位装置との通信に用いるプロトコルの解釈とディスク装置の記憶媒体に対してデータの読み書きを行うのに必要なサーボコントローラ６０８とリードライトチャネル６０９の制御を行う。例えば上位装置からデータの書き込みを行う場合には、ディスクインタフェース６０７がコマンドを受信した後に、SPC が受信したコマンドの中の記憶媒体に書き込むべきデータをメモリコントローラ経由でキャッシュメモリ６０３に記録し、MPU に書き込みコマンドを受信したことを伝える。MPU は HDC にキャッシュメモリ６０３に記録したデータをどのアドレス（セクタ）に書き込むかを指示し、HDC がサーボコントローラ６０８とリードライトチャネル６０９を制御して記憶媒体への書き込みを実行する。XOR演算器６０５では第一段階の演算で必要な XOR 演算を行う。
【００６１】
図４は本発明によるディスク装置を用いたディスクアレイ装置４００の構成図である。従来の方式によるディスクアレイ装置３００とは従来のディスク装置３１１の代わりに本発明によるディスク装置４０１を内蔵している点と、第二段階の演算を行うプログラムを内蔵している点が異なる。第二段階の演算を行うプログラムは図中に表示されていないディスクアレイ装置の制御部の主記憶中に展開される。
【００６２】
図１と図２とにより、第一段階の演算の方法について説明する。
ステップ１０１では第一段階の演算の開始セクタアドレスを指定する。ステップ１０１の終了後、ステップ１０２に進む。ステップ１０２では第一段階の演算の終了セクタアドレスを指定する。ステップ１０２の終了後、ステップ１０３に進む。ステップ１０３では、RAID-5 のブロックサイズを指定する。RAID-5 では4KB や 8KB などのブロックサイズ毎にパリティデータを生成するので、第一段階での演算でもディスクアレイ装置の RAID-5 の構成と同じブロックサイズを指定する。ステップ１０３の終了後、ステップ１０４に進む。
【００６３】
開始セクタアドレスの値、終了セクタアドレスの値、およびブロックサイズの値は、管理者がディスクアレイ装置のコンソールで指定する。コンソールではこれらの値をディスクアレイ装置の制御部に伝える。ディスクアレイ装置の制御部は、ベンダーユニークコマンドや S.M.A.R.T. などの手段によりディスクインタフェース６０７経由でこれらの値をディスク装置の主記憶６０２に書き込む。開始セクタアドレスと終了セクタアドレスが設定されない場合には、ディスク装置ではディスク装置の先頭セクタアドレスと最終セクタアドレスとを初期値として用いる。ブロックサイズが設定されない場合には有意な演算を行えないため、設定されるまで第一段階の演算を開始しない。
【００６４】
ステップ１０４では、ステップ１０３で指定されたブロックサイズによって、キャッシュメモリ６０３内に第一段階の演算結果の中間結果を保存する領域を確保して領域を初期化する。ステップ１０４の終了後ループ１１０に進む。ループ１１０ではステップ１０１とステップ１０２とで設定した開始セクタアドレスと終了セクタアドレスの範囲で以下の処理を繰り返す。まず最初にステップ１１１に進む。ステップ１１１では、ディスクアレイ装置の制御部からのコマンドを受信していないか確認を行う。ステップ１１１の終了後、ステップ１１２に進む。ステップ１１２では、ステップ１１１でのコマンドの受信の有無を検査する。もしもコマンドを受信している場合にはサブルーチン１２０に進む。ステップ１１２の終了後ステップ１１３に進む。ステップ１１３では、現在整合性検査の読み出し対象となっているセクタアドレスからステップ１０３で指定したブロックサイズ分だけディスク装置の記憶媒体からデータを読み出す。ステップ１１３の終了後、ステップ１１４に進む。ステップ１１４では、演算結果の中間結果の保存領域から中間結果を読み出す。ステップ１１４の終了後、ステップ１１５に進む。ステップ１１５では、記憶媒体から読み出したデータと保存領域から読み出した中間結果とで XOR 演算を行う。このステップは、式(4)のステップをループで実行していることに相当する。ステップ１１５の終了後、ステップ１１６に進む。ステップ１１６では、ステップ１１５で計算した中間結果を次回の演算のために保存領域に書き戻す。ステップ１１６の終了後、ステップ１１７に進む。ステップ１１７では、次回の演算のためにセクタアドレスをブロックサイズ分だけ進める。
【００６５】
サブルーチン１２０では、まずディスクアレイ装置の制御部からのコマンドが書き込みコマンドかどうかを検査する。書き込みコマンドの場合には、ステップ２０２に進み、それ以外の場合には、ステップ２０３に進む。ステップ２０２では、書き込みコマンドの対象となるアドレスがステップ１１３で既に読み出されているかを検査する。既に読み出されている場合にはステップ２０４に進み、まだ読み出されていない場合にはステップ２０６に進む。このように読み出されているかどうかで処理を変えるのは、XOR 演算を完了したセクタにデータを上書きすると正しい演算結果を得られないためである。
【００６６】
ステップ２０４は、一時的な開始セクタアドレスを設定するステップである。書き込みアドレスがブロックサイズの境界とずれている場合には、このステップでセクタアドレスの正規化を行い、ブロックサイズの境界と合わせる。ステップ２０４の終了後、ステップ２０５に進む。ステップ２０５では、一時的な終了セクタアドレスを設定するステップである。ステップ２０４と同様にセクタアドレスの正規化を行う。ステップ２０５の終了後ループ１１０に進む。ループ１１０では、ステップ２０４とステップ２０５で設定した開始セクタアドレスと終了セクタアドレスとの範囲で以下の処理を繰返し実行する。まずステップ１１３に進む。ステップ１１３では、対象となるセクタアドレスからブロックサイズ分のデータを読み込む。ステップ１１３の終了後、ステップ１１４に進む。ステップ１１４では、中間結果の保存領域から中間結果を読み出す。ステップ１１４の終了後、ステップ１１５に進む。ステップ１１５では、記憶媒体から読み出したデータと保存領域から読み出した中間結果とで XOR 演算を行う。ステップ１１５の終了後、ステップ１１６に進む。ステップ１１６では、ステップ１１５で計算した中間結果を次回の演算のために保存領域に書き戻す。変更前のデータにより演算を行うステップ群２１０は、一旦計算した XOR 演算を無効にするために行う。ステップ１１６の終了後、ステップ２０６に進む。ステップ２０６では、受信した書き込みコマンドを対象のアドレスの範囲で実行する。書き込みコマンドはブロックサイズよりも長大なデータサイズを指定可能であるが、このような書き込みを一括して行うと XOR 演算をできなくなるので、ブロックサイズ毎に分割して行う。正規化処理により開始セクタアドレスや終了セクタアドレスを調整する場合には、書き込みコマンドで指定されたアドレスにのみ行う。ステップ２０６の終了後、ステップ１１３に進む。ステップ１１３では、対象となるセクタアドレスからブロックサイズ分のデータを読み込む。ステップ１１３の終了後、ステップ１１４に進む。ステップ１１４では、中間結果の保存領域から中間結果を読み出す。ステップ１１４の終了後、ステップ１１５に進む。ステップ１１５では、記憶媒体から読み出したデータと保存領域から読み出した中間結果とで XOR 演算を行う。ステップ１１５の終了後、ステップ１１６に進む。ステップ１１６では、ステップ１１５で計算した中間結果を次回の演算のために保存領域に書き戻す。変更後のデータにより演算を行うステップ群２２０は、新たに書き込んだデータにより XOR 演算するために行う。ステップ１１６の終了後、ステップ１１７に進む。ステップ１１７では、次回の演算のためにセクタアドレスをブロックサイズ分だけ進める。
【００６７】
ステップ２０２でまだ読み出されていない場合には、ステップ２０６に進む。まだ読み出されていない場合には XOR 演算を無効にする必要がないので、そのまま書き込みコマンドを実行する。
【００６８】
ステップ２０１で書き込みコマンドでない場合には、ステップ２０３に進む。XOR 演算に影響を与えないコマンドは、ステップ２０３でそのまま実行する。
【００６９】
図１のループ１１０が終了した段階で、S.M.A.R.T. などの手段でディスクアレイ装置の制御部に第一段階の演算が終了したことを伝える。ディスクアレイ装置の制御部では、S.M.A.R.T. やベンダーユニークコマンドなどにより第一段階の演算の結果を読み出す。この時読み出すデータ量は、ブロックサイズである。そして、XOR 演算器３０６で各ディスク装置から読み出した値を使って式(5)の第二段階の演算を行う。そして、演算結果である XOR-XOR を期待値と比較する。この期待値はディスク装置内のブロックアドレスの数に応じて、全てのビットが 0 または1 になっている。XOR-XOR が期待値と一致すればディスクアレイ装置のデータ整合性が保たれているので、ディスクアレイ装置のコンソールに整合性が保たれているというメッセージを表示する。XOR-XOR が期待値と一致しない場合には、ディスクアレイ装置のデータ整合性が保たれていないので、ディスクアレイ装置のコンソールに整合性が保たれていないというメッセージを表示する。
【００７０】
図１７は、ディスク装置がブロックアドレス群ごとに演算結果を計算する場合のディスクアレイ装置のコンソール表示例を示す図である。
【００７１】
１７１１にはブロック群のIDを表示する。各ディスク装置のブロック群の演算結果からディスクアレイ装置で演算した結果が期待値と一致しているかを１７１２に表示する。１７１２でOKは期待値と一致、NGは期待値と不一致、N/Aはまだディスク装置またはディスクアレイ装置で演算していないことを示す。
【００７２】
１７２１にはディスク装置のIDを表示する。１７２２にはディスク装置に対する診断結果を表示する。１７２２でOKは正常、NGは故障、WARNは警告、を示す。１７２３には故障モードを表示する。Write head failure は書き込みヘッドの故障、Retry threshold はディスク装置内でのリトライ回数が閾値に達したことを示す。
【００７３】
ディスク装置は、アドレス範囲ごとに計算し、ディスク装置全体の演算結果を返すようにすることもできるし、計算したアドレス範囲ごとの中間結果をそのままディスクアレイ装置に返すようにすることもできる。図１７に示した例では、アドレス範囲ごとの中間結果をそのままディスクアレイ装置に返している。中間結果を返すので、アドレス範囲によっては演算が終了していない場合もあり、その場合には１７１２で N/A と表示される。
【００７４】
整合性が保たれていない場合には、ディスク装置に障碍が発生しているのでディスク装置の制御部は各ディスク装置の診断を行う。診断のためには、診断用のコマンドを発行したり、書き込みと読み込みを行ってデータを正常に書き込めているかを確認するなどの方法がある。
【００７５】
第一段階の演算は、ディスク装置が自発的に実行を開始する他に、上位装置からの指示により実行を開始することもできる。このような指示には、ベンダーユニークコマンドや S.M.A.R.T. などが使える。
【００７６】
第一の実施例では、整合性検査のための第一段階の演算をディスク装置内で行う。ディスク装置と上位装置とは SCSI や FC-AL などでバス接続されており、ディスク装置と上位装置とは常時通信を行えない。このような上位装置からコマンドが送られてこない時間を有効に使って第一段階の演算を行うため、上位装置から見た時に第一段階の演算による性能劣化が存在しない。さらに、第一段階の演算終了後に上位装置に送信すべきデータ量がブロックサイズなので、ディスク装置のインタフェース帯域の消費がほとんどなく、データ転送に要する時間も短い。
【実施例２】
【００７７】
第一の実施例では、上位装置からディスク装置にコマンドが送られた場合には、ディスク装置ではそのコマンドを最優先で実行した。これに対して第二の実施例では、コマンドの優先順位を判断して第一段階の演算とコマンドのどちらを優先して処理するかを決定する。第一の実施例との相違点について説明する。
【００７８】
図７は、本発明によるディスク装置の整合性検査支援方法の第二の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図である。図７において、７０１は優先順位を更新するステップ、７０２は現在の優先順位の設定で実行可能なコマンドがある限り繰り返すループ、７１０は第一の受信したコマンドの確認を行うサブルーチン、である。
【００７９】
図８は、第一の受信したコマンドの確認を行うサブルーチンの PAD 図である。図８において、８０１は受信したコマンドの種別を判定するステップ、８０２は受信したコマンドの優先順位を設定するステップ、８０３は設定された優先順位に基づき受信したコマンドを直ちに実行可能か検査するステップ、８０４は受信したコマンドをキューに積むステップ、である。
【００８０】
第一の実施例ではコマンドを受信するとステップ１１２で第一のコマンド実行のサブルーチン１２０を実行するのに対し、第一の受信したコマンドの確認を行うサブルーチン７１０を実行する。サブルーチン７１０では、緊急度の高いコマンドの場合には直ちに実行し、そうでなければコマンドをキューに積む。
【００８１】
サブルーチン７１０では、最初にステップ８０１に進む。ステップ８０１では、受信したコマンドの種別を判定する。ステップ８０１の終了後、ステップ８０２に進む。ステップ８０２では、ディスク装置に設定されたポリシーに基づき受信したコマンドの優先順位を設定する。ポリシーの例としては、読み出しコマンドの実行が送れると上位装置の処理が止まるので最優先で行うが、書き込みコマンドは遅延実行しても上位装置の処理が止まらないので、優先順位を下げる、などがある。このようなポリシーは、ディスク装置の出荷時にデフォルト値を設定できる他に、ディスクアレイ装置の制御部などの上位装置からのベンダーユニークコマンドや S.M.A.R.T. などによっても設定可能である。ステップ８０２の終了後、ステップ８０３に進む。ステップ８０３では、ステップ８０２で設定された優先順位を調べ、受信したコマンドを直ちに実行する必要があるかを検査する。実行する必要がある場合には、サブルーチン１２０に進みコマンドを実行する。実行する必要がない場合には、ステップ８０４に進む。ステップ８０４ではコマンドをキューに積み遅延実行するための準備を行う。
【００８２】
図７のサブルーチン１１２以降、ステップ１１７までは第一の実施例と同じである。ステップ１１７の終了後に、ステップ７０１に進む。ステップ７０１では、キューに積まれたコマンドの優先順位の再評価を行い優先順位を上げる処理を行う。優先順位を上げる処理によって、キューに積まれたコマンドが必ず実行されることを保証する。ステップ７０１の終了後、ループ７０２に進む。ループ７０２では、優先順位の再評価によって実行可能になったコマンドがあるかぎり、サブルーチン１２０によりコマンドを実行する。
【００８３】
第一段階の演算を行う優先順位は、上位装置からのベンダーユニークコマンドや S.M.A.R.T. などにより変更可能である。例えば、ディスクアレイ装置の制御部が第一段階の演算結果を必要とする場合には、ディスク装置での第一段階の演算を最優先で行うように指定できる。
【００８４】
第一の実施例では上位装置のコマンドを最優先で実行するが、第二の実施例では優先順位を評価してコマンドの実行順序を変更する。このような仕組みは、SCSI, FC-AL, SAS, SATA などコマンドキューを持つプロトコルと親和性が高い。
【実施例３】
【００８５】
第一の実施例と第二の実施例では、ディスク装置の先頭セクタアドレスから最終セクタアドレスに向かって第一段階の演算を行う。これに対して第三の実施例では、ディスク装置内でどこまで演算を行ったかの管理を行うことで、任意の順番で第一段階の演算を実行可能である。第一の実施例と第二の実施例との相違点について説明する。
【００８６】
図９は読み出し状態管理表である。図９において、９０１はブロックアドレス、９０２は読み出し状態、である。
【００８７】
図１１は、本発明によるディスク装置の整合性支援方法の第三の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図である。図１１において、１１０１は読み出し状態管理表を初期化するステップ、１１０２は読み出し状態管理表の状態が全て読み出し済みになるまで実行するループ、１１０３は読み出し状態を読み出し済みに変更するステップ、１１１０は第二の受信したコマンドの確認を行うサブルーチン、１１２０は第二のコマンド実行のサブルーチン、である。
【００８８】
図１２は、第二の受信したコマンドの確認を行うサブルーチンの PAD 図である。図１２において、１２０１は読み出しコマンドかを検査するステップ、１２０２はコマンドの要求するアドレスが読み出し状態管理表に存在するかを検査するステップ、１２０３は読み出し状態管理表から読み出し状態を読み出すステップ、１２０４は読み出し状態が未読み出しかを検査するステップ、１２０５は読み出し状態を読み出し予約に変更するステップ、１２０６は読み出し状態が読み出し予約か検査するステップ、１２０７は読み出し状態を書き込み予約に変更するステップ、１２０８は読み出し状態を読み出し無効に変更するステップ、である。
【００８９】
図１３は、第二のコマンド実行のサブルーチンの PAD 図である。図１３において、１３０１は読み出し状態が読み出し予約または未読み出しかを検査するステップ、１３０２は読み出しコマンドを実行するステップ、１３０３は読み出し状態が書き込み予約かを検査するステップ、１３０４は読み出し状態が読み出し無効かを検査するステップ、１３０５は読み出し状態を未読み出しに変更するステップ、１３０６は読み出しコマンドと書き込みコマンド以外のコマンドかを検査するステップ、である。
【００９０】
本実施例では、第一段階の演算をどこまで行ったかを読み出し状態管理表にて管理する。このため、ディスクアレイ装置の制御部からの読み出しコマンドによって記憶媒体からデータを読み出す場合にも第一段階の演算を行える。読み出し状態管理表では９０１のように、ブロックサイズでディスク装置の記憶媒体の領域を分割したブロックアドレスごとに読み出し状態を管理する。読み出し状態には９０２のように未読み出し(NONE)、読み出し済み(READ)、読み出し予約(R-QUE)、書き込み予約(W-QUE)、読み出し無効(DIRTY)、の五種類がある。読み出し状態管理表は、ディスク装置のキャッシュメモリ６０３もしくは記憶媒体上に確保する。どちらに確保するかは、読み出し状態管理表に必要な領域の大きさと、キャッシュメモリ６０３の容量に依存する。
【００９１】
第一の実施例や第二の実施例と異なり第三の実施例では読み出し状態管理表を用いるため、読み出し状態管理表を初期化するステップ１１０１が必要になる。ステップ１１０１では、キャッシュメモリ６０３もしくは記憶媒体上に読み出し状態管理表の領域を確保し、ブロックアドレス９０１を開始セクタアドレス、終了セクタアドレス、ブロックサイズを使って初期化し、読み出し状態９０２を全て未読み出し(NONE)に設定する。第一の実施例と第二の実施例ではループ１１０によって開始セクタアドレスと終了セクタアドレスの範囲でループをするのに対して、第三の実施例ではループ１１０２によって読み出し状態管理表の読み出し状態９０２が全て読み出し済み(READ)になるまで任意の順番でループする。
【００９２】
第二の実施例ではコマンドを受信するとステップ１１２で第一の受信したコマンドの確認を行うサブルーチン７１０を実行するのに対して、第三の実施例では第二の受信したコマンドの確認を行うサブルーチン１１１０を実行する。サブルーチン１１１０では、コマンドの優先順位の判定の他に読み出し状態管理表の参照や状態の登録を行う。第二の実施例ではループ７０２で第一のコマンド実行のサブルーチン１２０を実行するのに対し、第三の実施例では第二のコマンド実行のサブルーチン１１２０を実行する。サブルーチン１１２０では読み出し状態管理表に応じてコマンド実行方法を変更し、読み出し状態管理表の状態を更新する。第一の実施例と第二の実施例ではステップ１１６でバッファに書き込んだ後にステップ１１７でアドレスを更新するのに対し、第三の実施例では読み出し状態管理表でどのブロックを読んだかを管理しているため、ステップ１１６の後にステップ１１０３に進む。ステップ１１０３ではブロックの読み出し状態を読み出し済みに変更する。ステップ１１０３の終了後、ステップ１１７に進む。次に、サブルーチン１１１０、サブルーチン１１２０の動作について説明する。
【００９３】
サブルーチン１１１０では、最初にステップ８０１にて受信したコマンドの種別を判定し、ステップ８０２に進む。ステップ８０２では受信したコマンドの種別からコマンドの実行優先順位を設定し、ステップ１２０１に進む。ステップ１２０１は受信したコマンドが読み出しコマンドかを検査するステップである。読み出しコマンドである場合には、ステップ１２０２に進む。ステップ１２０１の終了後、ステップ２０１に進む。
【００９４】
ステップ１２０２では、読み出しコマンドの要求するアドレスが読み出し状態管理表に存在するかを検査するステップである。このような検査を設けることで、ディスク装置の全領域について一括してデータ整合性検査のための第一段階の演算を行うのではなく、特定の領域についてのみ第一段階の演算を行う場合に対応できる。読み出し管理表に存在するブロックアドレスの場合にはステップ１２０３に進む。ステップ１２０３では読み出し状態管理表の読み出し状態９０２を読み出す。ステップ１２０３の終了後、ステップ１２０４に進む。ステップ１２０４では読み出し状態が未読み出しかどうかを検査する。未読み出しの場合には、ステップ１２０５に進む。ステップ１２０５では、該当するブロックアドレスの読み出し状態９０２を読み出し予約に変更する。
【００９５】
ステップ２０１は、受信したコマンドが書き込みコマンドかを検査するステップである。書き込みコマンドである場合には、ステップ１２０２に進む。ステップ２０１の終了後、ステップ８０３に進む。
【００９６】
ステップ１２０２では、書き込みコマンドの要求するアドレスが読み出し状態管理表に存在するかを検査するステップである。読み出し管理表に存在するブロックアドレスの場合にはステップ１２０３に進む。ステップ１２０３では読み出し状態管理表の読み出し状態９０２を読み出す。ステップ１２０３の終了後、ステップ１２０６に進む。ステップ１２０６では読み出し状態が読み出し予約かどうかを検査する。読み出し予約の場合には、ステップ１２０７に進む。ステップ１２０７では、該当するブロックアドレスの読み出し状態９０２を書き込み予約に変更する。ステップ１２０６の終了後、ステップ１２０４に進む。ステップ１２０４では読み出し状態が未読み出しかどうかを検査する。未読み出しの場合には、ステップ１２０７に進み、未読み出しでない場合には、ステップ１２０８に進む。ステップ１２０７では、該当するブロックアドレスの読み出し状態９０２を書き込み予約に変更する。ステップ１２０８では、該当するブロックアドレスの読み出し状態９０２を書き込み無効に変更する。
【００９７】
ステップ８０３では、ステップ８０２で設定された優先順位を調べ、受信したコマンドを直ちに実行する必要があるかを検査する。実行する必要がある場合には、サブルーチン１２１０に進みコマンドを実行する。実行する必要がない場合には、ステップ８０４に進む。ステップ８０４ではコマンドをキューに積み遅延実行するための準備を行う。
【００９８】
サブルーチン１１２０では、最初にステップ８０１でコマンドの種別を判定し、ステップ１２０１に進む。ステップ１２０１では、コマンドの種別が読み出しコマンドかを検査し、読み出しコマンドである場合にはステップ１２０２に進む。ステップ１２０１の終了後、ステップ２０１に進む。ステップ１２０２では、読み出しコマンドが要求するアドレスが読み出し状態管理表に存在するかを検査する。存在する場合にはステップ１２０３に進み、存在しない場合にはステップ１３０２に進み、読み出しコマンドを実行する。ステップ１２０３では読み出し状態管理表の読み出し状態９０２を読み出す。ステップ１２０３の終了後、ステップ１３０１に進む。ステップ１３０１では読み出した読み出し状態９０２が読み出し予約もしくは未読み出しであるかを検査する。ステップ１３０１の条件判断が真であるのは、上位装置からの読み出しコマンドが読み出すブロックアドレスが第一段階の演算の対象となっている場合である。このため、読み出しコマンドを処理する際に第一段階の演算も行う。ステップ１３０１の条件判断が偽である場合には、単にステップ１３０２により読み出しコマンドを実行する。ステップ１３０１の条件判断が真の場合には以下のステップを実行する。まずステップ１３０２で読み出しコマンドを実行し、ステップ１１４に進む。ステップ１１４で演算結果の中間結果の保存領域から中間結果を読み出し、ステップ１１５に進む。ステップ１１５では、ステップ１３０２で記憶媒体から読み出したデータとステップ１１４で読み出した中間結果とで XOR 演算を行い、ステップ１１６に進む。ステップ１１６では、XOR 演算した結果を演算結果の中間結果の保存領域に書き戻し、ステップ１３０３に進む。ステップ１３０３では読み出し状態管理表の状態を読み出し済みに変更する。
【００９９】
ステップ２０１では、コマンドの種別が書き込みコマンドかを検査し、書き込みコマンドである場合にはステップ１２０２に進む。ステップ２０１の終了後、ステップ１３０６に進む。ステップ１２０２では、書き込みコマンドが要求するアドレスが読み出し状態管理表に存在するかを検査する。存在する場合にはステップ１２０３に進み、存在しない場合にはステップ２０６に進み、書き込みコマンドを実行する。ステップ１２０３では読み出し状態管理表の読み出し状態９０２を読み出す。ステップ１２０３の終了後、ステップ１３０３に進む。ステップ１３０３では、読み出し状態が書き込み予約かを検査する。ステップ１３０３の条件判断が真の場合には、ステップ２０６にて書き込みコマンドを実行し、ステップ１３０５に進む。ステップ１３０５では、読み出し状態管理表の状態を書き込み予約から未読み出しに変更する。これにより、書き込みを行ったブロックアドレスに対して第一段階の演算を行うことを保証できる。ステップ１３０３の終了後、ステップ１３０４に進む。ステップ１３０４では、読み出し状態が読み出し無効かを検査する。ステップ１３０４の条件判断が真になるのは、既に第一段階の演算を行ったブロックアドレスに対して書き込みを行う場合である。そこでステップ１３０４の条件が真になる場合には、第一の実施例と同様にステップ群２１０、ステップ２０６、ステップ群２２０の順番にコマンドを実行する。ステップ群２２０の終了後、ステップ１１０３に進む。ステップ１１０３では、第一段階の演算を行ったので読み出し状態管理表の読み出し状態を読み出し済みに変更する。
【０１００】
ステップ１３０６では、受信したコマンドが読み出しコマンドと書き込みコマンド以外であるかを検査する。ステップ１３０６の条件判断が真の場合には、ステップ２０３に進み受信したコマンドを実行する。
【実施例４】
【０１０１】
第一から第三の実施例では、第一段階の演算の中間結果を一つだけ保存していた。第四の実施例では、ブロックアドレスを複数の領域に分割し、それぞれの領域毎に独立して中間結果を保存する。第四の実施例は第三の実施例に対して、複数の第一段階の演算結果を保存する点が異なる。第三の実施例との相違点について説明する。
【０１０２】
図１０は、演算結果管理表である。図１０において、１００１はブロックアドレス群につけたグループ ID、１００２はグループ ID ごとの第一段階演算の中間結果、である。
【０１０３】
図１４は、本発明によるディスク装置の整合性検査支援方法の第四の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図である。図１４において、１４０１は演算結果管理表を初期化するステップ、１４０２は演算結果管理表から第一段階演算の中間結果を読み出すステップ、１４０３は演算結果管理表に第一段階演算の中間結果を書き込むステップ、１４１０は第三の受信したコマンドの確認を行うサブルーチン、１４２０は第三のコマンド実行のサブルーチン、である。
【０１０４】
図１５は、第三の受信したコマンドの確認を行うサブルーチンの PAD 図である。
図１６は、第三のコマンド実行のサブルーチンの PAD 図である。図１６において、１６０１は、演算結果を初期化するステップ、１６０２は、対象アドレスを全て未読み出しに変更するステップ、である。
【０１０５】
本実施例では、ディスク装置の記憶媒体を複数の領域に分割し、それぞれの領域で第一段階演算の中間結果を保存する。ホストコンピュータからのアクセスパターンが局所性を持っている場合には、読み出し済みのブロックに書き込みが発生する毎に領域に対してステップ群２１０、２２０を実行するよりも、あるブロックアドレス範囲に対するアクセスが終了してから第一段階の演算を再開する方が効率的である。本実施例では、ディスク装置の記憶媒体を連続するブロックアドレスごとに分割し、各ブロックアドレス群ごとに第一段階演算の中間結果を保存する。記憶媒体の分割サイズはベンダユニークコマンドや S.M.A.R.T. などによって指定できる。ディスクアレイ装置の管理者がディスクアレイ装置のコンソールから分割サイズを指定すると、ディスクアレイ装置の制御部が各ディスク装置に対して設定を行う。各中間結果のサイズはブロックサイズになるため、演算結果管理表の大きさは、記憶媒体の分割数にブロックサイズを掛けた値になる。例えば、100GB の容量のディスク装置で、100MB ごとに分割し、ブロックサイズが 4KB だとすると、演算結果管理表のサイズは (100GB/100MB)*4KB = 4MB になる。演算結果管理表はディスク装置のキャッシュメモリ６０３もしくは記憶媒体上に置かれる。どちらに置くかはキャッシュメモリ６０３の大きさと演算管理結果表の大きさに依存する。
【０１０６】
第三の実施例の第一段階演算と第四の実施例の第一段階演算とでは、演算の中間結果を保存する場所に関する処理が違っている。図１１ではステップ１０４で、キャッシュメモリ６０３内に第一段階の演算結果の中間結果を保存する領域を確保して領域を初期化する。これに対して、図１４ではステップ１４０１で、キャッシュメモリ６０３内もしくは記憶媒体上に図１０の演算結果管理表の領域を確保して領域を初期化する。図１１ではステップ１１４とステップ１１６とで、キャッシュメモリ６０３内の中間結果保存領域にアクセスする。これに対して、図１４では、ステップ１４０２とステップ１４０３とで、演算結果管理表の演算対象となるエントリにアクセスする。図１１ではステップ１１２の条件判断が真の場合にサブルーチン１１１０を実行し、ループ７０２ではサブルーチン１１２０を実行する。これに対して、図１４ではステップ１１２の条件判断が真の場合にサブルーチン１４１０を実行し、ループ７０２ではサブルーチン１４２０を実行する。
【０１０７】
次にサブルーチン１４１０について説明する。サブルーチン１４１０は基本的にサブルーチン１１１０と同じである。唯一の相違点は、ステップ８０３の条件判断が真の場合にステップ１１２０の代わりにステップ１４２０を実行する点である。
【０１０８】
次にサブルーチン１４２０について説明する。サブルーチン１４２０はサブルーチン１１２０と演算結果管理表にアクセスする部分の処理が異なる。読み出しコマンドの処理では、サブルーチン１１２０ではステップ１１４とステップ１１６とでキャッシュメモリ６０３にある演算の中間結果保存場所に対してアクセスするのに対し、サブルーチン１４２０ではステップ１４０２とステップ１４０３とで演算結果管理表の演算対象となるエントリにアクセスする。書き込みコマンドの処理では、サブルーチン１１２０とサブルーチン１４２０とでは、書き込み無効の場合の処理が異なる。サブルーチン１１２０では、ステップ群２１０、２２０とにより書き込みコマンドの実行前後にブロックアドレスへの読み出しを行い、書き込みコマンド実行時に第一段階の演算を行う。これに対して、サブルーチン１４２０では、ステップ１３０４の条件判断が真の場合に、ステップ２０６により書き込みコマンドを実行した後に、ステップ１６０１に進む。ステップ１６０１では、演算結果管理表の書き込みコマンドを実行したブロックアドレスが含まれるブロックアドレス群のエントリの演算の中間結果を初期化する。これは記憶媒体に書き込みを行ったため、中間結果の整合性が取れなくなったからである。ステップ１６０１の終了後、ステップ１６０２に進む。ステップ１６０２では、書き込みを行ったブロックアドレスの所属するブロックアドレス群の全ての読み出し状態管理表の状態を未読み出しにする。これは、中堅結果を初期化したのにともない、該当するブロックアドレス群の第一段階の演算を最初からやり直すためである。
【０１０９】
本実施例では、第一段階の演算結果はブロックアドレス群ごとに演算結果管理表に保存されている。この値は、ディスクアレイ装置の制御部などの上位装置からベンダユニークコマンドや S.M.A.R.T. などで要求があった時に、各ブロックアドレス群ごとに読み出し可能な他、ブロックアドレス群ごとにさらに演算を行い、単一の値としての読み出しも可能である。
【０１１０】
RAID-5 を採用した大型ディスクアレイ装置など、大量のディスク装置を内蔵し、高い処理性能と高い信頼性を要求される場合に、本発明を用いることでディスク装置のインタフェース帯域やディスクアレイ装置の内部資源を消費せずにデータの整合性検査を行えるようになる。
【図面の簡単な説明】
【０１１１】
【図１】本発明によるディスク装置の整合性検査支援方法の第一の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図。
【図２】第一のコマンド実行のサブルーチンの PAD 図。
【図３】従来のディスクアレイ装置の構成を示す図。
【図４】本発明の第一の実施例による、ディスクアレイの構成図。
【図５】RAID-5 のブロックアドレスの模式図。
【図６】本発明の第一の実施例による、ディスク装置のブロック図。
【図７】本発明によるディスク装置の整合性検査支援方法の第二の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図。
【図８】第一の受信したコマンドの確認を行うサブルーチンの PAD 図。
【図９】読み出し状態管理表の例を示す図。
【図１０】演算結果管理表の例を示す図。
【図１１】本発明によるディスク装置の整合性支援方法の第三の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図。
【図１２】第二の受信したコマンドの確認を行うサブルーチンの PAD 図。
【図１３】第二のコマンド実行のサブルーチンの PAD 図。
【図１４】本発明によるディスク装置の整合性検査支援方法の第四の実施例による、ディスク装置による整合性検査の第一段階演算の PAD 図。
【図１５】第三の受信したコマンドの確認を行うサブルーチンの PAD 図。
【図１６】第三のコマンド実行のサブルーチンの PAD 図。
【図１７】本発明によるディスクアレイ装置のコンソール表示部の例を示す図。
【符号の説明】
【０１１２】
３００ 従来のディスクアレイ装置
３０１ ホストコンピュータとのインタフェース
３０２ 内部接続バス
３０３ メモリコントローラ
３０４ プロセッサバス
３０５ マイクロプロセッサ
３０６ XOR演算器
３０７ メモリバス
３０８ キャッシュメモリ
３０９ ディスク装置とのインタフェース
３１０ ディスク装置との接続バス
３１１ ディスク制御装置
３２１ ホストコンピュータ
３２２ ホストコンピュータとの接続バス
４００ 本発明によるディスクアレイ装置
４０１ 本発明によるディスク装置
４０２ ディスク装置に内蔵したXOR演算器
５０１ 第一のディスク装置のブロックアドレス
５０２ 第二のディスク装置のブロックアドレス
５０３ 第三のディスク装置のブロックアドレス
５０４ 第四のディスク装置のブロックアドレス
５０５ ブロックアドレス
６０１ フラッシュロム
６０２ 主記憶
６０３ キャッシュメモリ
６０４ メモリコントローラおよびマイクロプロセッサ
６０５ XOR演算器
６０６ ハードディスクコントローラおよびSCSIプロトコルコントローラ
６０７ ディスクインタフェース
６０８ サーボコントローラ
６０９ リードライトチャネル
１７１０ ブロックアドレスグループの状態表示部
１７１１ ブロックアドレスグループのID表示部
１７１２ 状態表示部
１７２０ ディスク装置の状態表示部
１７２１ ディスク装置のID表示部
１７２２ 状態表示部
１７２３ 故障モード表示部
【図１】
2006146833.tif 000008
【図２】
2006146833.tif 000009
【図３】
2006146833.tif 000010
【図４】
2006146833.tif 000011
【図５】
2006146833.tif 000012
【図６】
2006146833.tif 000013
【図７】
2006146833.tif 000014
【図８】
2006146833.tif 000015
【図９】
2006146833.tif 000016
【図１０】
2006146833.tif 000017
【図１１】
2006146833.tif 000018
【図１２】
2006146833.tif 000019
【図１３】
2006146833.tif 000020
【図１４】
2006146833.tif 000021
【図１５】
2006146833.tif 000022
【図１６】
2006146833.tif 000023
【図１７】
2006146833.tif 000024