(57)【特許請求の範囲】
【請求項１】
独立した複数個の記憶媒体を１組とし、データをビット、バイトあるいは任意の単位に分割して各記憶媒体に格納し、そこから並列にデータの読み書きを行うと共に、データの読み書き時にエラーチェックを行い、障害発生時にはこのエラーチェックにより障害を起こした記憶媒体を発見し、通常の読み書きの処理を行いながら、所定個数の記憶媒体の故障までは障害の発生した記憶媒体内のデータを修復し、修復したデータを予備記憶媒体に格納するに当たって、前記障害の状態に対応して通常の読み書き処理または障害回復処理を優先することを特徴とする記憶装置の障害回復方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、独立した複数個の記憶媒体を１組として並列に読み書きを行う記憶装置の障害回復方法に関する。
【０００２】
【従来の技術】
従来技術として、記憶装置の大容量化とデータの高速転送を達成する技術として、複数の記憶媒体を１組として、データをビット単位、バイト単位あるいは任意の単位に分割してそれぞれを各記憶媒体に分配して格納し、データ読み出し時には各記憶媒体から同時に読み出す方式が知られている。そして、この方式では、各記憶媒体に分配されたデータからパリティチェック用のデータを生成し、これを別の記憶媒体に格納する。障害発生時には正常な記憶媒体のデータとパリティチェック用のデータを用いてデータの修復を行うことにより、記憶装置の信頼性を向上させている。これらの技術は、特開平１−２５０１２８号公報に一例が記載されている。
さらに、記憶媒体に障害が発生した場合、通常の読み出しのためにデータ修復を行うだけでなく、別に用意された正常な記憶媒体に障害媒体の分のデータを回復する技術が知られている。この技術は、予備媒体に修復したデータを格納し、次回からのアクセスに対して予備媒体からデータを読みだすことにより、記憶装置の可用性を高めることが可能である。例えば、特開平２−１３５５５５号公報にこの種の記憶装置の例が記載されている。
【０００３】
【発明が解決しようとする課題】
上記公知の装置は、パリティデータを持つことにより一定数の記憶媒体の障害を修復することが可能であり、予備記憶媒体を持つことにより障害回復も行うことが出来る。しかし、障害回復動作は、正常な記憶媒体のデータとパリティチェック用のデータをすべて読み出し、障害データを修復し、予備の記憶媒体に書き込む操作が必要である。このため、障害回復の間は、各記憶媒体を占有してしまうこととなり、上位装置から通常の読み書きの処理要求が来ても待たされ、結果として記憶装置の性能低下になる。
また、上記公知の装置は、複数個の記憶媒体の障害に対して冗長性があるにもかかわらず、一個の記憶媒体の障害時と複数個の障害時の障害回復を区別なく扱っている。このため、障害回復に重点を置くと、１個の故障にもかかわらず通常の読み書きの処理が出来ないため、通常の読み書きの処理が低下する問題があり、一方、通常の読み書きを処理に重点を置くと、複数個の障害時には障害回復時間が保証されず、装置全体が故障する可能性が大きくなる問題がある。
【０００４】
本発明の課題は、２個以上の記憶媒体の障害に対して冗長性のある記憶装置に関して、障害時における通常の読み書きの処理低下を最小限に抑え、障害回復時間を一定時間内に納め、高信頼性を確保することにある。
【０００５】
【課題を解決するための手段】
上記課題を解決するために、独立した複数個の記憶媒体を１組とし、データをビット、バイトあるいは任意の単位に分割して各記憶媒体に格納し、そこから並列にデータの読み書きを行うと共に、データの読み書き時にエラーチェックを行い、障害発生時にはこのエラーチェックにより障害を起こした記憶媒体を発見し、通常の読み書きの処理を行いながら、所定個数の記憶媒体の故障までは障害の発生した記憶媒体内のデータを修復し、修復したデータを予備記憶媒体に格納するに当たって、前記障害の状態に対応して通常の読み書き処理または障害回復処理を優先する。
【０００６】
【発明の実施の形態】
以下、本発明の実施形態を詳細に説明する。実施形態では記憶媒体として磁気ディスクを例にとって説明する。
図１は、本発明の障害回復の処理手順を示すフローチャートである。図２は、本発明を２台のデータディスク故障に耐えられる記憶装置に適用した実施形態の構成図である。図３は、図２における障害発生ディスクの障害回復用テーブルである。図４は、図２の記憶装置における障害回復の処理手順を示すフローチャートである。図５、図６、図７、図８及び図９は、図４の処理手順における障害回復処理選択ブロックの詳細を示す図である。
【０００７】
図１の障害回復の処理手順を示すフローチャートを説明する。
記憶装置に障害が発生したとする（ステップ１０）。まず、発生した障害が回復可能なものであるのかを判断する（ステップ２０）。もし、修復が不可能であれば、そこで障害回復処理を終了し、データ損失となる（ステップ３０）。修理が可能ならば、記憶装置の冗長度、障害回復の経過時間、通常の読み書き処理の処理状態から障害回復に専念すべき状態であるかを判定する（ステップ４０）。もし、余裕が十分あり、障害回復の緊急度が低い場合で、読み書きなどの通常の処理要求が上位装置から来た時は、障害回復処理を止め、読み書きなどの通常の処理を先に処理する。障害回復処理は残りの時間で行い、障害回復処理途中の読み書きの処理はキャンセルまたはキューイングする（ステップ５０）。逆に、余裕がなく、障害回復の緊急度が高い場合、障害回復処理を優先させ、読み書きなどの通常の処理はすべてキャンセルまたはキューイングする（ステップ６０）。また、障害回復の緊急度と読み書き等の通常の処理の重要度に幾つかの組合せがある中間的な場合、各々の条件に対応した障害回復処理を前もってプログラムの形で用意し、条件が変化した場合、プログラムを入れ替えることにより適当な処理に移行できるようにする（ステップ７０）。次に、障害回復処理が終了または中断した場合、障害回復処理がまだ残っているか否か調べる（ステップ８０）。障害回復がすべて終了した場合、記憶装置は正常状態に復帰する。まだ障害回復処理が残っている場合、始め（２０）にもどり、以上のステップを障害回復が終了するまで繰り返す。
【０００８】
次に、図２の本発明の実施形態の構成図について説明する。
図２において、１５０は入出力−障害回復制御回路であり、上位装置からの入出力に関する命令を受取り、実行または上位装置に応答する。さらに記憶媒体に障害が発生している場合には、障害回復中のディスク数、障害回復にかかっている時間、及び、障害回復の頻度または障害回復量などから適切な障害回復方法を選択する。１５４は障害発生記憶媒体の障害回復用テーブルであり、詳細は図３で説明する。１５２は障害発生時刻、障害回復中の経過時間及び単位時間を知るためのタイマであり、ここで計った時間を一つの条件として障害回復方法を決める。１５６は障害データの発見、修復、予備記憶ディスクへの書き込みを行う障害データ修復回復回路であり、障害ディスクを除いたすべてのディスクよりデータを読みだし、それを使って障害データを修復し、上位装置にそのデータを転送したり、予備記憶ディスクに書き出しを行う。１５８から１６８までは分割したデータを格納するデータディスク群である。図２ではデータディスク数として６台のディスクを示したが、一般には任意の数である。１７０、１７２は１５８から１６８に分割したデータに対応するＥＣＣデータを格納するディスクである。障害発生時にはこのデータと１５８から１６８中の正常なデータを使って障害データを修復する。ただし、記憶装置の持つ冗長度より多くのデータディスクが故障した場合、データの修復は不可能となり、データ損失となる。図２ではＥＣＣデータが２個の場合、すなわち、２台のデータディスクが故障した場合でも、障害データを修復できることを示しているが、一般には２台以上のディスク故障に耐えられるＥＣＣ生成法もあり、データ損失に到らない故障ディスクの個数つまり冗長度はさらに多く取ることが可能である。ＥＣＣの生成法は具体的には多重消失訂正可能なリードソロモン符号を用いることによって実現される。リードソロモン符号及びそれを利用した誤り訂正方式については、従来の技術（例えば、土井、伊賀共著ラジオ技術社出版の”新版ディジタル・オーディオ”に記載されている。）であるので、説明を省略する。１７４、１７６は修復したデータを格納する予備記憶媒体であり、障害ディスクの内容が格納された場合、次回からそのデータへのアクセスは予備記憶媒体になる。このディスク数も一般に任意である。
【０００９】
図３の障害発生ディスクの障害回復用テーブルを説明する。
この障害回復用テーブル１５４は、予備記憶ディスクの識別番号（１）、障害発生ディスクの識別番号（２）、障害発生時刻（３）、障害データのアドレス（４）及び障害回復の有無を判定するフラグ（５）からなる。
【００１０】
次に、図４のフローチャートに基いて図２及び図３の動作を説明する。
まず、図２においてデータディスク１６２に障害が発生したとする（１００）。障害データ修復回復回路１５６が障害を発見し、入出力−障害回復制御回路１５０に障害発生を伝える。障害データ修復回復回路１５６から連絡を受けた入出力−障害回復制御回路１５０は障害回復用テーブル１５４を見て空きがあるかを確かめる（１０２）。次に、入出力−障害回復制御回路１５０はこの障害が新しい障害であることを確認する（１０４）。新しい障害であれば、入出力−障害回復制御回路１５０は障害データ修復回復回路１５６に対して障害回復用テーブル１５４の中の該当する欄に初期値を書き込むことを命ずる。障害データ修復回復回路１５６は障害回復用テーブル１５４内の予備記憶媒体の欄に予備ディスク１７４の識別番号Ｓ１を書き込み、障害発生記憶媒体の欄に障害を起こしたデータディスク１６２の識別番号＃２を書き込む。次にタイマ１５２から読み込んだ障害発生時刻を障害発生時刻の欄に書き込み、障害ディスク１６２のアドレスをアドレス欄に書き込む。最後に障害データ修復回復回路１５６は各アドレスの回復判定フラグを初期化する（１０６）。新しい障害でなければ、ステップ１０６の処理は行わず、次のステップに進む。次のステップでは、入出力−障害回復制御回路１５０が障害の状態を判別し、それに適した通常の読み書き処理または障害回復処理を選択し、実行する（１０８）。このステップの詳細は図５〜図９において述べる。次に障害回復処理が終了または中断した場合、障害回復処理がまだ残っているか否か調べる（１１０）。障害回復がすべて終了した場合記憶装置は正常状態に復帰する。まだ障害回復処理が残っている場合、始めにもどり（１０２）、以上のステップを障害回復が終了するまで繰り返す。どのような障害回復方法が採られても、障害データ修復回復回路１５６は障害回復の継続または終了の監視をしている。障害回復が終わらない間に次の障害が発生した場合、上記と同じように障害データ修復回復回路１５６が処理を開始するが（１０２）、障害回復が終わらない障害ディスク数が装置の冗長度を超えた場合、障害回復は不可能なので、入出力−障害回復制御回路１５０は上位装置にデータが損失したことを報告する（１１４）。もし、障害回復が終了した場合、障害回復用テーブル１５４内の不要なデータを消去し、正常状態に復帰する（１１２）。
【００１１】
次に、図４のステップ１０８について図５を用いて説明する。
図５において、入出力−障害回復制御回路１５０は、障害回復用テーブル１５４を見て障害回復の終わっていないディスク数を数え、障害ティスク数としきい値を比較する（ステップ１２０）。障害ディスク数が予め定められたしきい値より少なければ、入出力−障害回復制御回路１５０は冗長度に余裕があると判断し、通常の読み書きを優先し、その他の時間で障害回復の処理を行う。障害回復処理途中のものはキャンセルまたはキューイングする（ステップ１２２）。また、障害ディスク数がしきい値より多ければ、入出力−障害回復制御回路１５０は冗長度に余裕がないと判断し、障害回復処理を優先させ、読み書きなどの通常の処理はすべてキャンセルまたはキューイングする（ステップ１２４）。
障害回復を行う場合、１トラック等の比較的短時間で修復と格納が終わる単位で行い、終了後は記憶装置を通常処理のために開放する。ただし、障害回復中に通常の読み書きの処理命令がきた場合には、直ちに障害回復作業を中止し、通常の読み書き処理のために開放する。通常の読み書き処理中に障害回復の終わっていないデータを読む場合には、障害データはＥＣＣデータとそれを生成する際に使った正常なデータで修復し、上位装置へ送り、同時に予備ディスクの中に修復データを格納し、障害回復用テーブル１５４内の該当するアドレスの回復判定フラグを障害回復済みとする。このフラグが障害回復済みとなっていれば、次回のこのデータへのアクセスは予備ディスクに行うことになる。データ書き込みの場合は、ＥＣＣデータを作成後、障害ディスク内に格納すべきデータを予備ディスクに書き込み、回復判定フラグを障害回復済みとする。
しきい値は、図２の例においては冗長度が２台であるので必然的に１となる。しかし、２台以上の多重消失訂正可能なリードソロモン符号を使った場合、しきい値は冗長度以下の任意の整数を取ることが出来る。
障害回復は、入出力−障害回復制御回路１５０が前回修復したデータのアドレスを記憶しており、その次のアドレスから行う。障害回復時には先に記憶した前回修復済のデータアドレスを使い、その次のアドレスが障害回復用テーブル１５４でフラグが立ってなく、障害回復が終了していない場合は、そのアドレスのデータを修復する。データの修復は、ＥＣＣデータと正常なディスクよりＥＣＣデータを生成する際に使った正常なデータを読み出し、障害データ修復回復回路１５６を使って行う。修復したデータは予備のディスクに書き込み、障害回復テーブル１５４のフラグを障害回復済みにする。修復が終わったデータへのアクセスは予備ディスクに対して行うことになる。修復したデータのアドレスを障害データ修復回復回路１５６に記憶し、入出力−障害回復制御回路１５０は次の障害回復処理に移る。
この図５の実施形態では、障害ディスク数がしきい値以下の場合、障害回復より通常の読み書き処理を優先させるので、記憶装置の読み書きの性能低下を抑えることができる。また、障害回復に専念する状態では、最短時間で修復できるので、信頼性を保つことが出来る。
上の実施形態では障害ディスク数のみ注目して障害回復方法を選んだが、障害ディスク数の他に障害回復時間の累計を条件に含めることが出来る。
【００１２】
次に、図４内のステップ１０８について図６を用いて説明する。
図６において、入出力−障害回復制御回路１５０は障害回復用テーブル１５４を見て障害回復の終わっていないディスク数を数え、障害ティスク数としきい値を比較する（ステップ１３０）。それがしきい値以下ならば、次に入出力−障害回復制御回路１５０はタイマ１５２より現在時刻を読み、この現在時刻と障害回復テーブル１５４内の障害発生時刻とから算出できる障害回復時間の累計と予め設定していた制限時間を比較する（ステップ１３２）。そこで障害回復時間の累計が予め設定していた制限時間より小さいとき、障害回復に対して余裕があると見なせるので、入出力−障害回復制御回路１５０は、障害データ修復回復回路１５６に対して、通常の読み書きの処理を優先し、残りの時間で障害ディスク内のデータを修復し、予備ディスクに格納するように命令する。障害回復処理途中のものはキャンセルまたはキューイングする(ステップ１３４）。もし、障害回復が終了していないディスク数がしきい値より多いとき、または、現在時刻と障害発生時刻の差が予め設定していた制限時間より大きいとき、障害回復に余裕がないと見なせるので、障害回復制御回路１５０は、上位装置からの通常の読み書きはキャンセルまたはキューイングし、障害データ修復回復回路１５６に対して、障害回復を優先して行うように命令する（ステップ１３６）。
この図６の実施形態では、障害回復にかかる時間が制限時間を超過する場合、障害回復処理に専念するので、修復時間を一定時間内に納めることができ、信頼性を向上させることができる。
【００１３】
次に、図４のステップ１０８について図７を用いて説明する。
図７において、入出力−障害回復制御装置１５０は、タイマ１５２から現在時刻を取得し、その時刻が通常の読み書きの処理が多い時間帯か否か判定する（ステップ１４０）。もし、その時間帯でなければ、入出力−障害回復制御回路１５０は上位装置からの通常の読み書きはキャンセルまたはキューイングし、障害データ修復回復回路１５６に対して障害回復を優先して行うように命令する。また、その時間帯であってもステップ１４２の障害ディスク数がしきい値を超える場合、同様に障害回復処理を優先する（ステップ１４６）。通常の読み書きの処理が多くかつ障害ディスク数がしきい値以下の場合のみ、通常の読み書きを優先し、障害回復は残りの時間で行う（ステップ１４４）。
この図７の実施形態では、記憶装置の使われ方が時間帯によって異なっていることが前もって分かっている場合に、通常の読み書きの処理が少ない時間帯に障害回復を当てることができるので、通常の読み書きの処理が障害回復処理を妨げることなく、障害回復をスム−ズに実行できる。
以上の図５〜図７の実施形態では、障害回復を優先するかもしくは通常の読み書きを優先するかの２通りの障害回復処理であったが、状況に応じてこれを増やすことは差し支えない。
【００１４】
次に、図４のステップ１０８について図８を用いて説明する。
図８において、ステップ１５０の障害ディスク数がしきい値を超える場合は、障害回復を優先し、通常の読み書きは止める（ステップ１５８）。障害ディスク数がしきい値以下でかつステップ１５２の通常の読み書きの処理が多い時間帯でない場合、読み出しのみ処理して、その他の時間は障害回復を優先して行う（ステップ１５６）。障害ディスク数がしきい値以下でかつ通常の読み書きの処理が多い時間帯の場合、通常の読み書きの処理を優先し、その他の時間で障害回復を行う（ステップ１５４）。
この図８の実施形態では、障害ディスク数はしきい値以下であるが、通常の読み書きの処理が少ない時間帯、特に読み出しのみの時間帯の場合、読み出しの処理を例外的に許すことにより、障害回復処理を妨げずかつ記憶装置の性能低下を抑えることが可能になる。
【００１５】
次に、図４内のステップ１０８について図９を用いて説明する。
図９において、ステップ１６０の障害ディスク数がしきい値を超える場合、または、障害ディスク数がしきい値以下でかつステップ１６２の障害回復時間の累計が制限時間を超過する場合は障害回復を優先し、通常の読み書きを止める（ステップ１７２）。入出力−障害回復制御回路１５０は、障害ディスク数がしきい値以下でかつ障害回復時間の累計が制限時間より小さいとき、タイマ１５２から単位時間を読み、その時間内の通常の読み書きの処理頻度と予め設定したしきい値を比較する（ステップ１６４）。通常の読み書きの処理頻度がしきい値より大きい場合、制限時間内であり、障害回復に対して余裕があると見なせるので、通常の読み書きの処理を優先し、その他の時間で障害回復を行う（ステップ１６６）。一方、通常の読み書きの処理頻度がしきい値より小さいときであって、その頻度が限りなくしきい値に近い場合あるいは遠い場合等、その頻度には大小の差があるので、通常の読み書きの処理頻度の大小にあわせて動的に単位時間内の障害回復処理の頻度または障害回復量の比率を設定する（ステップ１６８）。この設定した障害回復処理の頻度または障害回復量の比率に応じて障害回復処理を実行する（ステップ１７０）。
この図９の実施形態では、通常の読み書きの処理頻度の大小にあわせて障害回復処理の頻度または障害回復量の比率を設定するので、障害回復処理が時間的に効率よく実行されることになる。
【００１６】
これら上述の実施形態では、記憶媒体として磁気ディスクを例に挙げたが、この他に光ディスク、フロッピーディスク、半導体メモリを記憶媒体として用いることが可能である。
また、障害回復方法を選択する条件として、上述の実施形態に替えて、上位装置のジョブ内容、記憶装置内のファイルの重要度などを条件としてもよい。これらの条件と障害回復方法の組合せにより柔軟な障害回復処理を行うことができる。
【００１７】
【発明の効果】
本発明によれば、障害を起こした記憶媒体の個数が記憶装置の冗長度に比べて小さい場合、障害回復より通常の読み書きの処理を優先するので、記憶装置の負荷が重くならず、通常の読み書きの処理における応答性能の低下を極力抑えることができる。また、冗長度に余裕がなくなってきた場合、自動的に通常の読み書きの処理を止めて障害回復の処理を優先するので、記憶装置の信頼性は低下しない。さらに、各障害発生記憶媒体の障害回復処理時間に関する累計によって障害回復処理方法を替えるので、さらに高信頼性の記憶装置を実現することができる。また、通常の読み書きの処理頻度の大小にあわせて障害回復処理の頻度または障害回復量の比率を設定するので、障害回復処理を時間的に効率よく実行することができる。
このように、本発明は、障害回復に関わる諸条件に対応して各々適切な障害回復方法を選択できるので、最適な障害回復処理の実行が可能である、という顕著な効果を奏する。
【図面の簡単な説明】
【図１】本発明の処理手順を示すフローチャートである。
【図２】本発明の記憶装置の構成図である。
【図３】本発明の障害発生ディスクの障害回復用テーブルの構成図である。
【図４】図２の処理手順を示すフローチャートである。
【図５】図４における障害回復処理選択ブロックのフローチャートを示す。
【図６】図４における障害回復処理選択ブロックの他のフローチャートを示す。
【図７】図４における障害回復処理選択ブロックの他のフローチャートを示す。
【図８】図４における障害回復処理選択ブロックの他のフローチャートを示す。
【図９】図４における障害回復処理選択ブロックの他のフローチャートを示す。
【符号の説明】
１５０…入出力−障害回復制御回路、１５４…障害回復用テーブル、１５２…タイマ、１５６…障害データ修復回復回路、１５８…データディスク＃０、１６０…データディスク＃１、１６２…データディスク＃２、１６４…データディスク＃３、１６６…データディスク＃４、１６８…データディスク＃５、１７０…ＥＣＣデータディスクＥ１、１７２…ＥＣＣデータディスクＥ２、１７４…予備ディスクＳ１、１７６…予備ディスクＳ２
【図１】
0003668810.tif 000002
【図２】
0003668810.tif 000003
【図３】
0003668810.tif 000004
【図４】
0003668810.tif 000005
【図５】
0003668810.tif 000006
【図６】
0003668810.tif 000007
【図７】
0003668810.tif 000008
【図８】
0003668810.tif 000009
【図９】
0003668810.tif 000010