(57)【要約】【課題】ディスクアレイ装置やミラーディスク装置等の高信頼性のＲＡＩＤ装置１において、キャッシュメモリを設けることなくライト性能を向上させる。【解決手段】ライトコマンドに基づくアドレス、データサイズおよび各ディスクへのデータライトの実行状態を保持する実行状態保持部５を設け、起動時に当該実行状態保持部５を参照し、一方のディスクがライト中で他方がライト済みのときは、他方のディスクのデータを読み込んで一方のライト中のディスクにライトするようにした。【選択図】図１
2010061591.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶デバイスを備え、ミラーリングを行うＲＡＩＤ装置において、
ライトアドレス、データサイズおよび各ディスクへのデータライトの実行状態を保持する実行状態保持部を設け、
起動時に当該実行状態保持部を参照し、一方のディスクがライト中で他方がライト済みのときは、他方のディスクのデータを読み込んで一方のライト中のディスクにライトするようにしたことを特徴とするＲＡＩＤ装置。
【請求項２】
ライトコマンドごとにライトアドレス、データサイズおよび各ディスクへのデータライトの実行状態をそれぞれ保持する実行状態保持部を設け、
起動時に当該実行状態保持部を参照し、一方のディスクがライト中で他方がライト済みのものがあるときは、当該行のアドレス、データサイズに基づき他方のディスクのデータを読み込んで一方のライト中のディスクにライトするようにし、ライトコマンドを受領したときに、空き状態のディスクに対してライト指示を行うようにしたことを特徴とする請求項１記載のＲＡＩＤ装置。
【請求項３】
ライトデータを一時格納する不揮発性バッファと、
ライトコマンドごとにライトアドレス、データサイズ、各ディスクへのデータライトの実行状態および前記不揮発性バッファにライトしたアドレス、データサイズを格納するバッファ管理部をそれぞれ保持する実行状態保持部を設け、
ディスク交換後の起動時において、コピーする正常なディスクのアドレスに相当する実行状態保持部の実行状態がライト中であったときは、前記不揮発性バッファのデータを正常なディスクおよび交換したディスクにコピーするようしたことを特徴とする請求項１記載のＲＡＩＤ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ディスクアレイ装置やミラーディスク装置等の信頼性の高いストレージ装置におけるライト性能を向上させる技術に関するものである。
【背景技術】
【０００２】
従来のディスクアレイ装置やミラーディスク装置等のＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）装置と称される信頼性の高いストレージ装置のライト性能を向上させるために、キャッシュメモリを複数のディスクの前段にバッファとして設け、ライトデータをキャッシュメモリにそのまま格納し、ハードディスクへのライト動作が終了したときに当該領域を解放する技術はあった（例えば、特許文献１および特許文献２参照。）。
【特許文献１】特開２００５−３０１４１９公報
【特許文献２】特開２００１−０４３０２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、安価なＰＣやエントリクラスのサーバに用いるＲＡＩＤ装置では低コスト化が必須であるが、性能向上を図るためにはキャッシュメモリの搭載量を多くする必要があり、前記従来のＲＡＩＤ装置では、コスト高となってしまうという問題があった。
【０００４】
さらに、近年では、ホスト装置側のＰＣやサーバでは、十分なキャッシュを搭載しており、前述のような単なるキャッシュをＲＡＩＤ装置側に設ける必要性もなくなってきている。
【課題を解決するための手段】
【０００５】
本発明は、前述の課題を解決するため次の手段を採用する。すなわち、本発明は、複数の記憶デバイスを備え、ミラーリングを行うＲＡＩＤ装置において、ライトアドレス、データサイズおよび各ディスクへのデータライトの実行状態を保持する実行状態保持部を設け、起動時に当該実行状態保持部を参照し、一方のディスクがライト中で他方がライト済みのときは、他方のディスクのデータを読み込んで一方のライト中のディスクにライトするようにした。
【発明の効果】
【０００６】
以上のように、本発明のＲＡＩＤ装置によれば、複数の記憶デバイスを備え、ミラーリングを行うＲＡＩＤ装置において、ライトアドレス、データサイズおよび各ディスクへのデータライトの実行状態を保持する実行状態保持部を設け、起動時に当該実行状態保持部を参照し、一方のディスクがライト中で他方がライト済みのときは、他方のディスクのデータを読み込んで一方のライト中のディスクにライトするようにしたので、いずれか早い方のディスクへのライトが終了したときにホスト装置にライト完了応答をすることができ、キャッシュメモリを設けることなくライト性能を向上させることができる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明に係る実施の形態例を、図面を用いて説明する。なお、図面に共通する要素には同一の符号を付す。
【実施例１】
【０００８】
（構成）
図１は、実施例１のＲＡＩＤ装置および当該システムの構成図である。同図に示したように、実施例１のＲＡＩＤ装置１の制御部２は、ホスト装置９とホストインタフェース部８を介してホストＩ／Ｆバス６で接続し、ホスト装置９からのコマンドの受領およびリード／ライトデータの送受信を行い、２つのディスク１およびディスク２（３ａおよび３ｂ）をミラーディスクとして管理する。
【０００９】
なお、制御部２は、図示していないが、ホストＩ／Ｆとのコントローラ、ディスクＩ／Ｆのコントローラ、及び全体を制御するためのＭＰＵとプログラムから構成されている。
【００１０】
ホスト装置９からのライトデータはディスク１とディスク２（３ａおよび３ｂ）とに同じデータが書き込まれる。
【００１１】
実行状態保持部５は不揮発性メモリで構成され、ディスク１（３ａ）とディスク２（３ｂ）へのライトの実行状態を保持する。
【００１２】
実行状態保持部５に保持されるフォーマットを図２に示す。なお、アドレス１０１はライトデータのアドレスを保持し、データサイズ１０２はライトコマンドのデータサイズを保持するものである。フラッグ１（１０３ａ）、フラッグ２（１０３ｂ）はそれぞれディスク１（３ａ）、ディスク２（３ｂ）の状態に対応し、「ライト中」、「ライト済み」、「無効」を表す値が保持される。
【００１３】
これらの値をセットすることにより、ディスク１（３ａ）およびディスク２（３ｂ）へのライトコマンドの実行状態を保持することができ、ライトの実行中の任意の状態において電源がオフしても、次回の起動時にその状態を知ることができる。なお、フラッグ１（１０３ａ）、フラッグ２（１０３ｂ）の初期状態は「無効」である。
【００１４】
（動作）
以上の構成により、実施例１のＲＡＩＤ装置は、以下のように動作する。この動作を、図３のホスト装置からライトコマンドを受領したときの動作フローチャートおよび図４の起動時の動作フローチャートを用いて以下説明する。
【００１５】
ホスト装置からライトコマンドを受領すると、制御部２は、図３の動作フローチャートに示したように、実行状態保持部５のアドレス１０１、データサイズ１０２に、受領したライトコマンドからライトするアドレス、データサイズを記録し、フラッグ１（１０３ａ）、フラッグ２（１０３ｂ）をそれぞれ「ライト中」に設定する（ステップＳ０１）。
【００１６】
次に、ディスク１（３ａ）とディスク２（３ｂ）に対して同じライト指示を行う（ステップＳ０２）。制御部２は、ディスク１（３ａ）およびディスク２（３ｂ）からの応答を待ち、一方のディスクから完了応答があったときは（ステップＳ０３）、当該ディスクに相当する実行状態保持部５のフラッグを「ライト済み」に変更し（ステップＳ０４〜Ｓ０６）、ホスト装置９にライトコマンドの完了応答を行う（ステップＳ０７）。
【００１７】
さらに、もう一方のディスクからの完了応答を受領したところで（ステップＳ０８）、実行状態保持部５のフラッグ１（１０３ａ）、フラッグ２（１０３ｂ）を「無効」に変更する（ステップＳ０９）。
【００１８】
次に、図４の起動時の動作フローチャートを用いて、起動時のアルゴリズムを説明する。起動時は、まず、フラッグ１（１０３ａ）、フラッグ２（１０３ｂ）の値を読み出し、どちらかのディスクにライトが完了していないことを確認する（ステップＳ１１）。
【００１９】
ライトが完了していない方のディスクに対して、ライトの完了したディスクから当該データをコピーし（ステップ１２、Ｓ１３）、コピーが完了し当該応答を受領すると（ステップＳ１４）、フラッグ１（１０３ａ）、フラッグ２（１０３ｂ）を初期状態の「無効」に変更する（ステップＳ１５）。  
【００２０】
一般に、ＲＡＩＤ装置では、ホスト装置９に完了応答を行ったライトコマンドについては、どのタイミングで電源がオフしても、書き込んだデータが保持されている必要があるが、実施例１のＲＡＩＤ装置１では、以上説明したように、不揮発性メモリにより構成される実行状態保持部５に保持したライト状態を起動時に参照して、いずれかのディスクに書き込めなかったデータを、もう一方のディスクからコピーすることによりデータの２重化を保障することができるようになっている。
【００２１】
次に、本発明の効果をさらに明確にするために、図５の従来および図６の実施例１のＲＡＩＤ装置のシーケンスチャートを用いて、ＲＡＩＤ装置１のライトコマンドを受領したときの動作を説明する。
【００２２】
まず、図５に示した従来のＲＡＩＤ装置におけるシーケンスでは、コマンドを受領後（シーケンスＳＱ１）、ディスク１及びディスク２にライト指示を行い（シーケンスＳＱ２）、両方のディスクからの完了報告が揃ったときに（シーケンスＳＱ３およびＳＱ４）、ホスト装置９に完了報告を行う（シーケンスＳＱ５）。一般に、図示したように、２つのディスクの応答時間が異なるため、ホスト装置９への応答は常に遅いほうのディスクの応答時間に依存する。
【００２３】
一方、実施例１のＲＡＩＤ装置１では、図６に示したように、コマンドを受領後（シーケンスＳＱ１）、ディスク１及びディスク２にライト指示を行い（シーケンスＳＱ２）、いずれか一方のディスクの完了報告（シーケンスＳＱ３）があったときに、ホスト装置９への完了報告（シーケンスＳＱ５ａ）を行う。
【００２４】
その結果、ホスト装置９からのコマンド発行（シーケンスＳＱ１）から完了応答までのレスポンス（シーケンスＳＱ５ａ）は、常に早いほうのディスクの応答時間に依存することになり、図中の時間短縮分Ｔｘ１の時間を短縮することができる。
【００２５】
（実施例１の効果）
以上のように、実施例１のＲＡＩＤ装置によれば、ライトコマンドに基づくアドレス、データサイズおよび各ディスクへのデータライトの実行状態を不揮発性に保持する実行状態保持部を設け、起動時に当該実行状態保持部を参照し、一方のディスクがライト中で他方がライト済みのときは、他方のディスクのデータを読み込んで一方のライト中のディスクにライトするようにしたので、いずれか早い方のディスクへのライトが終了したときにホスト装置にライト完了応答をすることができ、キャッシュメモリを設けることなくライト性能を向上させることができる。
【実施例２】
【００２６】
実施例１のＲＡＩＤ装置は、ホスト装置９から受領したライトコマンドに対するライト指示をディスクに行う場合は常に２つのディスクに同時に行っていた。従って、一方のディスクが先にライトの実行の終了した場合でも、もう一方のディスクの実行が終わるまでは、新たなライト指示が出せない。
【００２７】
実施例２のＲＡＩＤ装置では、ディスクへのライトの状態を複数管理できるようにし、一方のディスクが先にライトの実行を終了した場合、新たなライト指示を出せるようにしたものである。
【００２８】
（構成）
実施例２のＲＡＩＤ装置の構成は、図１の実施例１の構成と同様であるが、実行状態保持部５の構成が図７に示した構成となっている。
【００２９】
すなわち、実施例１ではアドレス１０１、データサイズ１０２、フラッグ１（１０３ａ）、フラッグ２（１０３ｂ）を１セットとして１行しか持たない構成であったが、実施例２のＲＡＩＤ装置では、複数セットをもつようにしており、これらの１つ１つの行が、ホストからのライトコマンド１つ１つに対応する。その他の構成は、実施例１のＲＡＩＤ装置の構成と同様であるので、簡略化のためにその説明を省略する。
【００３０】
（動作）
以上の構成により実施例２のＲＡＩＤ装置は以下のように動作する。この動作を、図８ないし図１０の動作フローチャートおよび図１１および図１２のシーケンスチャートを用いて以下説明する。
【００３１】
最初に、図８の動作フローチャートを用いて実施例２のＲＡＩＤ装置のライトコマンド受領時の動作を説明する。
【００３２】
まず、ホスト装置９からライトコマンドを受領後、実行状態保持部５で２つのフラッグが「無効」である行を見つけ（ステップＳ２１）、その行にライトコマンドのアドレス、データサイズをアドレス１０１、データサイズ１０２、フラッグ１（１０３ａ）、フラッグ２（１０３ｂ）に「ライト中」のセットを行う（ステップＳ２２）。
【００３３】
そして、制御部２はそれぞれのディスクの空き状態、すなわちリードまたはライト中でなくアクセス可能であるかの状態を確認し、「空き状態」且つ「ライト指示がまだ行われていない」場合にはライトの指示を行う（ステップＳ２３、ステップＳ２４）。
【００３４】
なお、ライト指示を行ったかどうかは、例えば、制御部２の主記憶メモリ上の変数として管理し、ライト指示を行った場合、実行状態保持部５の行番号ｉに対応付けてディスク１へのライト中フラッグにライト中である旨を設定しておく。
【００３５】
２つのディスクへのライト指示が完了した場合は、一旦処理を終了する（ステップＳ２５）。
【００３６】
次に、図９を用いて、ディスクからの完了応答があった場合のイベント処理ルーチンの動作を説明する。まず、ディスクからライト完了イベントを受領すると（ステップＳ３１）、いずれのディスクからの完了報告か確認し（ステップＳ３２）、完了報告のあったディスクにおける図８のステップＳ２３またはＳ２４にてライト中フラッグを設定した実行状態保持部５の行番号ｉを制御部２の主記憶メモリ上の変数から取得する（ステップＳ３３またはＳ３５）。
【００３７】
このｉ行について、完了報告のあったディスクに対応するフラッグ（１０３ａまたは１０３ｂ）を「ライト済み」に変更する（ステップＳ３４またはＳ３６）。
【００３８】
次に、ｉ行の両方のフラッグ（１０３ａおよび１０３ｂ）が「ライト済み」かどうかを確認し（ステップＳ３７）、「ライト済み」でない場合はホスト装置９への完了報告を行い（ステップＳ３９）、待ち状態に戻る。
【００３９】
両方のフラッグが「ライト済み」の場合は、当該フラッグを「無効」に変更して、待ち状態に戻る（ステップＳ３８）。
【００４０】
次に、図１０の動作フローチャートを用いて、実施例２のＲＡＩＤ装置の起動時の動作を説明する。まず、行番号ｉを初期値"１"とし（ステップＳ４１）、実行状態保持部５のｉ行、この場合、１行目のフラッグ１（１０３ａ）およびフラッグ２（１０３ｂ）を確認する（ステップＳ４２）。
【００４１】
そして、一方が「ライト済み」でもう一方が「ライト中」の場合は、「ライト中」に対応するディスクへのライトが完了していないため、当該行のアドレス１０１とデータサイズ１０２よりデータのアドレスとサイズを取得し、他方のディスクからデータをコピーする（ステップＳ４３またはＳ４４）。
【００４２】
そして、コピーが完了し当該応答を受領すると（ステップＳ４５）、ｉ行のフラッグ１（１０３ａ）、フラッグ２（１０３ｂ）を初期状態の「無効」に変更する（ステップＳ４６）。
【００４３】
そして、ｉを１加算して（ステップＳ４７）、すべての行について実行したかどうか判定し（ステップＳ４８）、終了していないときは、ステップＳ４２に戻り、ｉ行目のフラッグ１（１０３ａ）およびフラッグ２（１０３ｂ）を確認し、以降同様の動作を繰り返す。
【００４４】
以上のように、実行状態保持部５の全ての行について実施することにより、複数のライトコマンドに対するディスクへのライトが完了してない状態で電源オフされても、ディスク１（３ａ）およびディスク２（３ｂ）にデータを確実にライトすることができる。
【００４５】
さらに、本発明の効果を明確にするために、図１１の実施例１および図１２の実施例２のＲＡＩＤ装置のシーケンスチャートを用いて、ＲＡＩＤ装置１の動作を説明する。
【００４６】
まず、図１１に示した実施例１のシーケンスでは、第１回目のライトコマンドを受領後（シーケンスＳＱ１）、ディスク１及びディスク２にライト指示を行い（シーケンスＳＱ２）、いずれか一方のディスクの完了報告（シーケンスＳＱ３）があった場合、ホスト装置９への完了報告（シーケンスＳＱ５）を行う。
【００４７】
すると、第２回目のライトコマンドを受領後（シーケンスＳＱ６）、ディスク１及びディスク２から完了報告（シーケンスＳＱ４）があった後、ディスク１及びディスク２にライト指示を行い（シーケンスＳＱ７）、いずれか一方のディスクの完了報告（シーケンスＳＱ７）があった場合、ホスト装置９への完了報告（シーケンスＳＱ１０）を行う。
【００４８】
一方、実施例２のＲＡＩＤ装置１では、図１２に示したように、第１回目のライトコマンドを受領後（シーケンスＳＱ１）、ディスク１及びディスク２にライト指示を行い（シーケンスＳＱ２）、いずれか一方のディスクの完了報告（シーケンスＳＱ３）があった場合、ホスト装置９への完了報告（シーケンスＳＱ５）を行う。
【００４９】
次に、第２回目のライトコマンドを受領すると（シーケンスＳＱ６）、すでにライト動作を完了し空き状態となっているディスク１（３ａ）にライト指示を行う（シーケンスＳＱ７ａ）。このライト指示に対するディスク１（３ａ）からの完了応答があると（シーケンスＳＱ８）、ホスト装置に完了応答を行う（シーケンスＳＱ１０）。
【００５０】
この間に、第１回目のライト指示に対するディスク２（３ｂ）からの完了応答があると（シーケンスＳＱ４）、ディスク２（３ｂ）が空き状態となるので、２回目のライトコマンドをディスク２（３ｂ）に対し行い（シーケンスＳＱ７ｂ）、その後にディスク２（３ｂ）から完了応答がある（シーケンスＳＱ９）。
【００５１】
以上のように、実施例１のＲＡＩＤ装置では、第２回目のコマンド受領後（シーケンスＳＱ６）、第１回目のコマンドに対するディスク２へのライトの完了応答があり両方のディスクからの完了応答がある（シーケンスＳＱ４）まで、新しいライト指示（シーケンスＳＱ７）を行うことができなかったが、実施例２のＲＡＩＤ装置では、第２回目のコマンド受領後（シーケンスＳＱ６）、空いている方のディスクに対して直ちにライト指示（シーケンス７ａ）を行うことができ、その結果として、実施例１の図１１のタイミングＴａではなく図１２のタイミングＴｂにて完了応答ができ、ホスト装置への応答時間をＴｘ２の時間短縮分短くすることができる。
【００５２】
（実施例２の効果）
以上のように、実施例２のＲＡＩＤ装置によれば、ライトコマンドごとにライトアドレス、データサイズおよび各ディスクへのデータライトの実行状態をそれぞれ保持する実行状態保持部を設け、起動時に当該実行状態保持部を参照し、一方のディスクがライト中で他方がライト済みのものがあるときは、当該行のアドレス、データサイズに基づき他方のディスクのデータを読み込んで一方のライト中のディスクにライトするようにし、ライトコマンドを受領したときに、空き状態のディスクに対してライト指示を行うようにしたので、実施例１の効果に加え、ホスト装置への応答時間を短縮することができる。
【実施例３】
【００５３】
実施例１および実施例２のＲＡＩＤ装置では、ホスト装置にライト完了応答後、両方のディスクへのライト指示が完了するまでの間にディスクの故障が発生すると、そのデータが失われる可能性がある。実施例３のＲＡＩＤ装置は、実施例１および実施例２の効果を維持し、かつどのタイミングでディスクの故障が発生してもデータが失われないようにしたものである。
【００５４】
（構成）
図１３に実施例３のＲＡＩＤ装置の構成を示す。実施例３のＲＡＩＤ装置１は、実施例１および実施例２の構成に不揮発性バッファ７が付加されている。この不揮発性バッファ７にはホスト装置９からのライトデータが一時的に保存される。
【００５５】
図１４に実施例３のＲＡＩＤ装置の実行状態保持部５の構成を示す。実施例３のＲＡＩＤ装置では、実施例２のＲＡＩＤ装置１の実行状態保持部５の構成にバッファ管理部１０４が付加されている。バッファ管理部１０４は不揮発性バッファ７に一時的に保持されたライトデータに関するバッファ上のアドレスやサイズを保持する。
【００５６】
その他の構成は、実施例２のＲＡＩＤ装置の構成と同様であるので、簡略化のためにその説明を省略する。
【００５７】
（動作）
以上の構成により、実施例３のＲＡＩＤ装置は、以下のように動作する。この動作を、図１５および図１６の動作フローチャートを用いて以下説明する。
【００５８】
最初に、図１５の動作フローチャートを用いてライトコマンド受領時の動作を示す。先ず、ホスト装置９からライトコマンドを受領後、実行状態保持部５にて２つのフラッグが「無効」である行を見つけた後（ステップＳ５１）、ホスト装置９からのライトデータを不揮発性バッファ７に保存する（ステップＳ５２）。
【００５９】
このとき、実行状態保持部５の当該行にライトアドレスをアドレス１０１に、そのデータサイズをデータサイズ１０２に、フラッグ１（１０３ａ）、フラッグ２（１０３ｂ）に「ライト中」をセットし、不揮発性バッファ７に保存したデータに関するバッファアドレス、データサイズをバッファ管理部（１０４）にセットする（ステップＳ５３）。
【００６０】
以降の動作（ステップＳ５４〜Ｓ５６）は、図８に示した実施例２のＲＡＩＤ装置の動作（Ｓ２３〜Ｓ２５）と同じであり、また、イベント処理ルーチンの動作も図９に示した実施例２の動作と同様であるので、簡略化のためにその詳細な説明は省略する。
【００６１】
次に、ディスク２（３ｂ）が故障し、ディスク２（３ｂ）を修理または交換した後、データの復元（リビルド）を行う動作を図１６の動作フローチャートを用いて説明する。
【００６２】
まず、Ａｄｄｒｅｓｓレジスタを０にセットし（ステップＳ６１）、正常だったディスク１（３ａ）の先頭から交換したディスク２（３ｂ）に、順次、データをコピーする。このとき、実行状態保持部５の各行にコピーしようとするアドレスに相当するアドレスがあるか検索する。すなわち、実行状態保持部５のアドレス１０１の値〜アドレス１０１の値＋データサイズ１０２の値までの範囲にコピーしようとするアドレスがあるかどうかを判定する。
【００６３】
そして、該当する行が見つかった場合で、正常だったディスク１に対応するフラッグ１（１０３ａ）が「ライト中」だった場合は（ステップＳ６２）、正常だったディスク１（３ａ）のデータは不正なため、不揮発バッファ７からバッファ管理部（１０４）のデータを元に該当するデータを両方、すなわちディスク１（３ａ）およびディスク２（３ｂ）にライトを行う（ステップＳ６３）。このときのライトするアドレスは、前記Ａｄｒｅｓｓレジスタの値であり、データサイズは１バイトである。
【００６４】
それ以外の場合、すなわち正常だったディスク１に対応するフラッグ１（１０３ａ）が「ライト済み」或いは「無効」の場合は正常なディスク１（３ａ）のデータはライトを完了しており正常なデータであるので、正常なディスク１（３ａ）から交換したディスク２（３ｂ）へのデータのコピーを行う（ステップＳ６４）。
【００６５】
そして、それぞれのコピーにおいてディスク２（３ｂ）からコピー完了応答を受領すると（ステップＳ６５）、Ａｄｒｅｓｓレジスタ値を更新し（ステップＳ６６）、Ａｄｒｅｓｓレジスタ値がディスク１の全領域かどうかを判定し（ステップＳ６７）、全領域について実施していないときは、ステップＳ６２に戻り、同様にコピー動作を繰り返す。
【００６６】
以上の動作をディスク１の全領域について実施が完了した後、最後に実行状態保持部５のフラッグ１（１０３ａ）およびフラッグ２（１０３ｂ）を初期化、すなわちすべて「無効」として（ステップＳ６８）、リビルドを完了する。なお、起動時の動作は実施例２と同様であるので、簡略化のために詳細な動作の説明は省略する。
【００６７】
（実施例３の効果）
以上説明したように、実施例３のＲＡＩＤ装置によれば、ライトデータを一時格納する不揮発性バッファと、ライトコマンドごとにライトアドレス、データサイズ、各ディスクへのデータライトの実行状態および前記不揮発性バッファにライトしたアドレス、データサイズを格納するバッファ管理部をそれぞれ保持する実行状態保持部を設け、ディスク交換後の起動時において、コピーする正常なディスクのアドレスに相当する実行状態保持部の実行状態がライト中であったときは、前記不揮発性バッファのデータを正常なディスクおよび交換したディスクにコピーするようしたので、任意のタイミングでディスクの一方の故障が発生しても、ホストに完了応答をしたライトデータを失うことがない。
【００６８】
《その他の変形例》
以上の実施例の説明では、実行状態保持部５や不揮発性バッファ７として、新たな不揮発性メモリを設けるように説明したが、不揮発性メモリを搭載するシステムであれば、当該不揮発性メモリを実行状態保持部５や不揮発性バッファ７として使用するようにしてもよい。
【００６９】
また、以上の実施例の説明では、制御をＲＡＩＤ装置１の制御部２により制御するように説明したが、ホスト装置９により制御するようにしてもよい。
【００７０】
また、以上の実施例の説明では、ディスクの種類については、記述しなかったが、ハードディスクや半導体ディスクでもよいし、ＵＳＢメモリなどのメモリモジュールでもよい。
【００７１】
また、以上の実施例の説明では、２個のディスクからなるＲＡＩＤ装置として説明したが、３個以上のディスクからなるものでも、フラッグ１０３を当該個数分設けるようにすれば、容易に本発明を適用することができる。
【産業上の利用可能性】
【００７２】
以上述べたように、本発明は、ディスクアレイ装置やミラーディスク装置等の高信頼性のＲＡＩＤ装置に広く用いることができる。
【図面の簡単な説明】
【００７３】
【図１】実施例１のＲＡＩＤ装置の構成図である。
【図２】実施例１のＲＡＩＤ装置の実行状態保持部の構成図である。
【図３】実施例１のＲＡＩＤ装置の動作フローチャート図である。
【図４】実施例１のＲＡＩＤ装置の動作フローチャート図である。
【図５】従来のＲＡＩＤ装置のシーケンスの説明図である。
【図６】実施例１のＲＡＩＤ装置のシーケンスの説明図である。
【図７】実施例２のＲＡＩＤ装置の実行状態保持部の構成図である。
【図８】実施例２のＲＡＩＤ装置の動作フローチャート図である。
【図９】実施例２のＲＡＩＤ装置の動作フローチャート図である。
【図１０】実施例２のＲＡＩＤ装置の動作フローチャート図である。
【図１１】実施例１のＲＡＩＤ装置のシーケンスの説明である。
【図１２】実施例２のＲＡＩＤ装置のシーケンスの説明である。
【図１３】実施例３のＲＡＩＤ装置の構成図である。
【図１４】実施例３のＲＡＩＤ装置の実行状態保持部の構成図である。
【図１５】実施例３のＲＡＩＤ装置の動作フローチャート図である。
【図１６】実施例３のＲＡＩＤ装置の動作フローチャート図である。
【符号の説明】
【００７４】
１    ＲＡＩＤ装置
２    制御部
３ａ  ディスク１
３ｂ  ディスク２
５    実行状態保持部
７    不揮発性バッファ
９    ホスト装置
１０１  アドレス
１０２  データサイズ
１０３ａ  フラッグ１
１０３ｂ  フラッグ２
１０４  バッファ管理部
【図１】
2010061591.tif 000003
【図２】
2010061591.tif 000004
【図３】
2010061591.tif 000005
【図４】
2010061591.tif 000006
【図５】
2010061591.tif 000007
【図６】
2010061591.tif 000008
【図７】
2010061591.tif 000009
【図８】
2010061591.tif 000010
【図９】
2010061591.tif 000011
【図１０】
2010061591.tif 000012
【図１１】
2010061591.tif 000013
【図１２】
2010061591.tif 000014
【図１３】
2010061591.tif 000015
【図１４】
2010061591.tif 000016
【図１５】
2010061591.tif 000017
【図１６】
2010061591.tif 000018