(57)【特許請求の範囲】
【請求項１】
指定されたディスク装置の書込位置に格納されている旧データを読み出した後に上位装置から転送された新データを該書込位置に書き込むとともに、パリティ用ディスク装置の、前記新データのディスク書込位置に対応する位置に格納された旧パリティ、前記旧データおよび前記新データに基づいて生成した新パリティを、前記旧パリティのディスク格納位置に書き込み、書込処理が中断された場合には、該中断された書込処理が再開された時に、前記新データの書き込みを指定された第１のディスク装置およびパリティ用の第２のディスク装置を除く全ディスク装置の前記新データのディスク書込位置に対応する位置に格納された他のデータと前記新データとに基づいて生成した新パリティを前記旧パリティのディスク格納位置に書き込むディスクアレイ装置において、
上位装置から書込処理を命令された際に、故障状態のディスク装置がある場合にディスク装置に対して行う同時並列的な書込動作が実行される前に、ディスク装置に同時並列的に書き込まれる前記新データ、前記第１のディスク装置および前記第２のディスク装置を除く故障状態でない全ディスク装置の前記他のデータ、および、前記旧データと前記新データと前記旧パリティとから求められた新パリティを格納する不揮発性メモリと、
書込処理が中断された後、該中断された書込処理が再開された時に、故障状態のディスク装置がある場合に、前記不揮発性メモリに格納された前記新データ、前記他のデータおよび前記新パリティを対応するディスク装置に同時並列的に書き込むことにより復旧処理を行う特別書込実行手段と、
を具備することを特徴とするディスクアレイ装置。
【請求項２】
前記不揮発性メモリには、上位装置からの書込処理命令を受け取ってからディスク装置に対する書込動作が正常に終了するまでの間、書込処理中を表す書込中フラグおよび書込処理の進行状況を示す管理情報が格納されることを特徴とする請求項１に記載のディスクアレイ装置。
【請求項３】
ディスク装置に対してデータの書込動作および読出動作を実行するアレイコントローラと、該アレイコントローラを制御する制御装置を具備し、
前記制御装置が前記不揮発性メモリを具備することを特徴とする請求項１または２に記載のディスクアレイ装置。
【請求項４】
ディスク装置に対してデータの書込動作および読出動作を実行するアレイコントローラと、該アレイコントローラを制御する制御装置を具備し、
前記アレイコントローラが前記不揮発性メモリを具備することを特徴とする請求項１または２に記載のディスクアレイ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のディスク装置を並列的にアクセスしてデータ入出力処理を行うようにしたディスクアレイ装置に関し、特に書込み途中の電源ダウンなどにより書込処理が中断された時に保持したデータからデータ書込みの復旧処理を行うことによってデータの整合性を保持するようにされたディスクアレイ装置に関する。
【０００２】
計算機システムの外部記憶装置として、記録の不揮発性、大容量性、データ転送の高速性等の特長を持つ磁気ディスク装置、光ディスク装置等のディスク装置が広く用いられている。ディスク装置に対する要求は、高速データ転送、高信頼性、大容量性、低価格である。これらの要求を満たすものとして、ディスクアレイ装置が注目されてきている。ディスクアレイ装置とは、小型ディスク装置を複数台並べ、これらに分散してデータを記録して、並列的にアクセスする装置である。
【０００３】
ディスクアレイ装置で並列的に複数のディスク装置にデータ転送を行えば、一台のディスク装置の場合と比べて、ディスクの台数倍の高速データ転送が可能になる。また、データに加えて、パリティデータなどの冗長な情報を付け加えて記録しておくことで、ディスク装置の故障等を原因とするデータエラーの検出と訂正が可能となり、ディスク装置の内容を二重化して記録する方法と同程度の高信頼性を、二重化より低価格で実現することができる。
【０００４】
ディスクアレイ装置は、安価・高速・高信頼性の三つを同時に満たす新たな記憶媒体として社会に認識されている。それが故に、この三つの機能の内、どれ一つをも欠くことが許されない。そして、この三つの機能の内、最も重要でかつ最も維持が困難なものが高信頼性である。なぜならば、ディスクアレイを構成する単体ディスク自体には安価なものが使用されており、単体での信頼性は元来それほど要求されていないものだからである。従って、ディスクアレイ装置を実現するにあたっては、その高信頼性の維持にこそ最も注力する必要が有り、本発明はディスクアレイ装置に関するものであるからこそ、特に重要となるものである。
【０００５】
【従来の技術】
従来、カルフォルニア大学バークレイ校のデビット・Ａ・パターソン（Ｄａｖｉｄ  Ａ．  Ｐａｔｔｅｒｓｏｎ）らは、高速に大量のデータを多くのディスクにアクセスし、ディスク故障時におけるデータの冗長性を実現するディスクアレイ装置について、レベル１からレベル５までに分類付けを行って評価した論文を発表している（ＡＣＭ  ＳＩＧＭＯＤ  Ｃｏｎｆｅｒａｎｃｅ，  Ｃｈｉｃａｇｏ，  Ｉｌｌｉｎｏｉｓ，  Ｊｕｎｅ  １−３，  １９８８  Ｐ１０９−Ｐ１１６）。
【０００６】
このデビット・Ａ・パターソンらが提案したディスクアレイ装置を分類するレベル１〜５は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）１〜５と略称される。ＲＡＩＤ１〜５を簡単に説明するとつぎのようになる。
【０００７】
［ＲＡＩＤ０］
図３２はデータの冗長性をもたないディスクアレイ装置を示したもので、デビット・Ａ・パターソンらの分類には含まれていないが、これを仮にＲＡＩＤ０と呼ぶ。ＲＡＩＤ０のディスクアレイ装置では、データＡ〜Ｉに示すように、ディスクアレイ制御装置１０はホストコンピュータ１８からの入出力要求に基づきデータをディスク装置３２−１〜３２−３のそれぞれに分散させているだけであり、ディスク故障時におけるデータの冗長性はない。
【０００８】
［ＲＡＩＤ１］
ＲＡＩＤ１のディスクアレイ装置は、図３３に示すように、ディスク装置３２−１に格納したデータＡ〜ＣのコピーＡ´〜Ｃ´を格納したミラーディスク装置３２−２を備える。ＲＡＩＤ１はディスク装置の利用効率が低いが冗長性をもっており、簡単な制御で実現できるため、広く普及している。
【０００９】
［ＲＡＩＤ２］
ＲＡＩＤ２のディスクアレイ装置はデータをビットやバイト単位でストライピング（分割）し、それぞれのディスク装置に並列に読み書きを行う。ストライピングしたデータは全てのディスク装置で物理的に同じセクタに記録する。エラー訂正コードとしてはデータから生成したハミングコードを使用する。データ用ディスク装置の他にハミングコードを記録するためのディスク装置を持ち、ハミングコードから故障したディスク装置を特定して、データを復元する。このようにハミングコードによる冗長性を備えることでディスク装置が故障しても正しいデータを確保できるが、ディスク装置の利用効率が悪いために実用化されていない。
【００１０】
［ＲＡＩＤ３］
ＲＡＩＤ３のディスクアレイ装置は、図３４に示す構成をもつ。即ち、図３５に示すように例えばデータａ，ｂ，ｃをビットまたはセクタ単位にデータａ１〜ａ３，ｂ１〜ｂ３，ｃ１〜ｃ３に分割し、さらにデータａ１〜ａ３からパリティＰ１を計算し、データｂ１〜ｂ３からパリティＰ２を計算し、データｃ１〜ｃ３からパリティＰ３を計算し、図３４のディスク装置３２−１〜３２−４を同時並列的にアクセスして書き込む。
【００１１】
ＲＡＩＤ３では、データの冗長性はパリティにより保持される。また分割したデータの並列処理によりデータの書込み時間は短縮できる。しかし、１回の書込みまたは読出しのアクセスで、全てのディスク装置３２−１〜３２−４の並列的なシーク動作を必要とする。このため大量のデータを連続して扱う場合には有効であるが、少量のデータをランダムにアクセスするトランザクション処理のような場合には、データ転送の高速性が生かせず、効率が低下する。
【００１２】
［ＲＡＩＤ４］
ＲＡＩＤ４のディスクアレイ装置は、図３５に示すように、１つのデータをセクタ単位に分割して同じディスク装置に書き込む。例えばディスク装置３２−１をみると、データａをセクタデータａ１〜ａ４に分割して書き込んでいる。パリティは固定的に決めたディスク装置３２−４に格納している。ここでデータａ１，ｂ１，ｃ１からパリティＰ１が計算され、データａ２，ｂ２，ｃ２からパリティＰ２が計算され、データａ３，ｂ３，ｃ３からパリティＰ３が計算され、データａ４，ｂ４，ｃ４からパリティＰ４が計算されている。
【００１３】
データ読出しは、ディスク装置３２−１〜３２−３に対して並列して読み出しできる。データａ〜ｂの読出しは、データａを例にとると、ディスク装置３２−１のセクタ０〜３をアクセスしてセクタデー夕ａ１〜ａ４を順次読み出して合成する。データ書込みは、書き込み前のデータとパリティを読み出してから新パリティを計算して書き込むため、１度の書き込みについて、合計４回のアクセスが必要になる。
【００１４】
例えば、ディスク装置３２−１のセクタデータａ１を更新（書替え）する場合には、更新場所の旧データ（ａ１）ｏｌｄ  および対応するディスク装置３２−４の旧パリテイ（Ｐ１）ｏｌｄ  を読出し、新データ（ａ１）ｎｅｗ  と整合性のとれた新パリティ（Ｐ１）ｎｅｗ  を求めて書き込む動作を、更新のためのデータ書込み以外にも必要とする。
【００１５】
また書込みの際に必ずパリティ用のディスク装置３２−４へのアクセスが起きるため、複数のディスク装置の書込みを同時に実行できない。例えばディスク装置３２−１のデータａ１の書込みとディスク装置３２−２のデータｂ２の同時書込みを行なおうとしても、同じディスク装置３２−４からパリティＰ１，Ｐ２を読み出して計算後に書き込む必要があるため、同時に書込みはできない。
【００１６】
このようにＲＡＩＤ４の定義は行われているが、メリットが少ないため現在のところ実用化の動きは少ない。
【００１７】
［ＲＡＩＤ５］
ＲＡＩＤ５のディスクアレイ装置は、パリティ用のディスク装置を固定しないことで、並列の読書きを可能にしている。即ち、図３７に示すように、セクタごとにパリティの置かれるディスク装置が異なっている。ここでデータａ１，ｂ１，ｃ１からパリティＰ１が計算され、データａ２，ｂ２，ｄ２からパリティＰ２が計算され、データａ３，ｃ３，ｄ３からパリティＰ３が計算され、データｂ４，ｃ４，ｄ４からパリティＰ４が計算されている。
【００１８】
並列の読み書きについては、例えばディスク装置３２−１のセクタ０のデータａ１とディスク装置３２−２のセクタ１のデータｂ２が、パリティＰ１，Ｐ２が異なるディスク装置３２−４，３２−３に置かれているため重複せず、同時に読み書きができる。尚、書込み時に合計４回のアクセスを必要とするオーバーヘッドはＲＡＩＤ４と同じである。
【００１９】
このようにＲＡＩＤ５は、非同期に複数のディスク装置にアクセスして、リード／ライトを実行できるため、少量データをランダムにアクセスするトランザクション処理に向いている。
【００２０】
しかしながら、上述した従来のディスクアレイ装置にあっては、ディスク装置に対するデータ書込みの途中で何らかの原因によって電源の供給が途絶えた場合、ＲＡＩＤ１〜ＲＡＩＤ３迄のディスクアレイ装置では、電源復旧後に再び同じ書込作業を始めから行うことができたのに対し、ＲＡＩＤ４およびＲＡＩＤ５のディスクアレイ装置では、つぎの理由により電源復旧後に再び同じ書込作業を始めから行うことが許されない。
【００２１】
ＲＡＩＤ４およびＲＡＩＤ５のデータ書込み時には、つぎの（１）式により複数のディスク装置内のデータの排他的論理和（排他的論理和記号を（＋）で表す）を取ってパリティとし、パリティ用のディスク装置に保持する。
データａ（＋）データｂ（＋）・・・＝パリティＰ      （１）
【００２２】
データとパリティの格納場所は、ＲＡＩＤ４では図３６のように特定のディスク装置３２−１〜３２−４に固定している。これに対しＲＡＩＤ５では、図３７のようにパリティをディスク装置３２−１〜３２−４に分散させて、パリティ読み書き動作による特定のディスク装置へのアクセスの集中を解消している。
【００２３】
これらのＲＡＩＤ４およびＲＡＩＤ５のデータ読出し時は、ディスク装置３２−１〜３２−４内のデータが書き換えられないので、パリティの整合性は保持されるが、書込み時にはパリティもデータに合わせて変更する必要がある。
【００２４】
例えばディスク装置３２−１内の１つの旧データ（ａ１）ｏｌｄ  を新データ（ａ１）ｎｅｗ  に書き換えたとき、パリティＰ１の整合性を取るにはつぎの（２）式のような計算を行い、パリティを更新することでディスク装置のデータ全体のパリティの整合性を保つことができる。
旧データ（＋）旧パリティ（＋）新データ＝新パリティ      （２）
【００２５】
この（２）式から分かるように、データ書込処理では、ディスク装置内の旧データおよび旧パリティを先ず読み出す必要があり、この後に新データの書込みと、新パリティの生成および書込みを行う。
【００２６】
ここで、ＲＡＩＤ５でのデータ書換方法について、図３８を参照しながら詳細に説明する。図３８は、データ書換手順を説明するための模式図であり、同図では、５つのディスク装置（デバイス０，１，２，３，４）３２−１，３２−２，３２−３，３２−４，３２−５に、それらディスク装置３２−１〜３２−５を制御するアレイコントローラ５０が接続されており、そのアレイコントローラ５０に、アレイコントローラ５０を制御する制御装置１０を介してホストコンピュータ１８が接続された構成となっている。
【００２７】
例えば、ディスク装置３２−１のデータ（Ｄ０）を書き替える際には、まず、制御装置１０は、ライトコマンドをアレイコントローラ５０に発行し、書込みデータ（Ｄ０ｎｅｗ  ）４０をアレイコントローラ５０に転送する。アレイコントローラ５０は制御装置１０からライトコマンドを受け取り、ディスク装置３２−１から旧データ（Ｄ０ｏｌｄ  ）４０−１を読み出す。また、アレイコントローラ５０は、ディスク装置３２−５から旧パリティ（Ｄｐｏｌｄ  ）４８を読み出す。
【００２８】
その後、アレイコントローラ５０は、ディスク装置３２−１に新データ（Ｄ０ｎｅｗ  ）４０を書き込む。ついで、アレイコントローラ５０は、論路回路１２により旧パリティ（Ｄｐｏｌｄ  ）４８と旧データ（Ｄ０ｏｌｄ  ）４０−１と新データ（Ｄ０ｎｅｗ  ）４０の排他的論理和（ＥＯＲ）演算を行って新パリティ（Ｄｐｎｅｗ  ）４８−１を生成し、それをディスク装置３２−５に書き込む。そして、アレイコントローラ５０は、書込みが正常に終了したことを制御装置１０に通知し、制御装置１０がこれを確認してデータの更新が終了する。
【００２９】
ＲＡＩＤ４およびＲＡＩＤ５のデータ書込みの際に、新データあるいは新パリティの書き込み中に電源が切断されると、実際どこまでデータが正常に書かれているかが認識できなくなり、パリティの整合性が失われる。この状態で、電源復旧時に再び同じデータ書込処理を行うと、パリティの整合性の取れていないディスク装置から旧データ、旧パリティを読み込むので、整合性の取れていない新パリティを生成して書込作業を終了してしまうという問題があった。
【００３０】
そこで、本発明者らは、ＲＡＩＤ４およびＲＡＩＤ５のディスクアレイ装置において、新データあるいは新パリティの書き込み中に電源が切断されても、電源復旧後に中断したデータ書込処理を途中から再開して完了できるようにしたディスクアレイ装置について先に提案した（特開平６−１１９１２６号公報）。この先願発明に係るディスクアレイ装置を図３９に示す。
【００３１】
このディスクアレイ装置は、電源ダウンに備え、不揮発性メモリ３４に、書込手段６０およびパリティ更新手段７０の処理段階を示す処理段階データ３８および上位装置１８から転送された新データ４０を少なくとも格納しておき、電源投入時に、復旧手段８０が、不揮発性メモリ３４の処理段階データ３８を参照して書込処理が中断されていた場合には、不揮発性メモリ３４に保持されている新データ４０を用いて復旧処理を行うようにしたものである。
【００３２】
【発明が解決しようとする課題】
しかしながら、その後の我々の研究により、上記特開平６−１１９１２６号の発明においては、複数のディスク装置のうちの１つが故障状態にある場合には、復旧処理を行うことができないという問題点のあることが明らかとなった。すなわち、図３８に示す構成において、例えばディスク装置３２−２が故障している場合に、新データ（Ｄ０ｎｅｗ  ）または新パリティ（Ｄｐｎｅｗ  ）の書込み中に電源が遮断されて書込みが中断されると、ディスク装置３２−１のデータ（Ｄ０）とディスク装置３２−５のパリティ（Ｄｐ）が破壊されるだけでなく、故障したディスク装置３２−２の、同一パリティグループを構成するデータストライプ中のデータ（Ｄ１）を再構築することができず、データの喪失となってしまう。
【００３３】
また、複数のアレイコントローラを有するＲＡＩＤ５のディスクアレイ装置に対して、上記特開平６−１１９１２６号の発明を適用することが考えられる。すなわち、複数のアレイコントローラを有するディスクアレイ装置に不揮発性メモリを設け、その不揮発性メモリに新データおよび処理段階データを記憶させておき、電源断等によりデータの書込処理が正常に終了しなかった場合に、それらのデータを用いて復旧処理を行う。
【００３４】
しかし、独立した電源で駆動される複数のアレイコントローラの立ち上がりには、時間的なずれが生じる。そのため、複数のアレイコントローラのデータ書込処理が正常に終了しなかった後に電源が投入された際に、あるアレイコントローラによりデータ修復に続いてデータ更新がなされたパリティグループのデータに対して、別のアレイコントローラが不揮発性メモリに格納されていたデータで復旧処理を行ってしまい、最新のデータが消失するという不都合が生じる。
【００３５】
本発明は、上記問題点を解決するためになされたもので、データ書込みの処理中に電源ダウンが起きても、電源復旧後に中断したデータ書込処理を途中から再開して完了できるようにしたディスクアレイ装置、特に複数のディスク装置のうちの１つが故障した状態であっても、データの復旧を行うことができるディスクアレイ装置、またはデータ復旧が可能な複数のアレイコントローラを有するディスクアレイ装置を提供することを目的とする。
【００３６】
【課題を解決するための手段】
図１は本発明に係るディスクアレイ装置の原理説明図である。同図に示すように、ディスクアレイ装置は、ＲＡＩＤ４またはＲＡＩＤ５に属するもので、制御装置１０、アレイコントローラ５０および複数台（図１の例では例えば５台）のディスク装置３２−１，３２−２，３２−３，３２−４，３２−５を備えている。
【００３７】
制御装置１０には、チャネルインターフェースアダプタ１６、不揮発性メモリ３４、特別書込実行手段１１０およびデータ再現手段１２０が設けられている。ディスクアレイ装置には、チャネルインターフェースアダプタ１６を介してホストコンピュータ等の上位装置１８が接続される。不揮発性メモリ３４は、上位装置から転送された新データを格納する。
【００３８】
特別書込実行手段１１０は、書込処理が一旦中断された後に再開された時に、不揮発性メモリ３４に新データが格納されており、かつ新データの書込みを指定されたディスク装置（例えば３２−１）およびパリティ用ディスク装置（例えば３２−５）以外の第３のディスク装置（例えば３２−２）からデータを正常に読み出すことができないためにパリティの再生が不可能である場合に、不揮発性メモリ３４に格納されている新データを用いて新パリティを生成することにより復旧処理を行い、新データ、新パリティおよび他のデータを特別な書込処理によってディスク装置に書き込むようになっている。
【００３９】
すなわち、特別書込実行手段１１０はデータ書込手段１１３およびパリティ生成手段１１６を備えており、特別な書込処理の際にデータ書込手段１１３は、予め設定されてなる規定値、好ましくは不揮発性メモリ３４に格納されている新データを該当するディスク装置（例えば３２−１）の指定された書込位置に上書きするようになっている。
【００４０】
また、特別な書込処理の際にパリティ生成手段１１６は、新データの書込みを指定されたディスク装置（例えば３２−１）およびパリティ用ディスク装置（例えば３２−５）の、新データのディスク書込位置に対応する位置に格納されたデータおよびパリティと、不揮発性メモリ３４に格納されている新データとを用いて新パリティを生成し、それをパリティ用ディスク装置（例えば３２−５）に書き込むようになっている。
【００４１】
データ再現手段１２０は、復旧処理時に正常にデータを読み出せない第３のディスク装置（例えば３２−２）がある場合に、特別書込実行手段１１０に特別な書込処理モードへの移行を要求する通知を行うようになっている。
【００４２】
アレイコントローラ５０には、複数（図１の例では例えば５個）のデバイスインターフェースアダプタ５４−１，５４−２，５４−３，５４−４，５４−５が設けられている。各デバイスインターフェースアダプタ５４−１，５４−２，５４−３，５４−４，５４−５にはデータエラー検出手段１５４−１，１５４−２，１５４−３，１５４−４，１５４−５が設けられている。データエラー検出手段１５４−１，１５４−２，１５４−３，１５４−４，１５４−５は、それぞれ対応するディスク装置３２−１，３２−２，３２−３，３２−４，３２−５からデータを読み出す際にエラーが生じたことを検出し、データ再現手段１２０に通知するようになっている。
【００４３】
以上のように構成されたディスクアレイ装置においては、次のようにして復旧処理が行われる。新データの書込処理が電源断等により中断された後、電源再投入等により書込処理が再開された時に、まずパリティ用ディスク装置（例えば３２−５）の、新データのディスク書込位置に対応する位置に格納されたパリティが読み出される。その際、先の書込処理の中断によりデータとパリティの整合がとれていないため、データエラー検出手段（例えば１５４−５）によりリードエラーであることが検出される。
【００４４】
そして、データエラー検出手段（例えば１５４−５）はデータ再現手段１２０にエラーの発生を通知する。その通知を受け取るとデータ再現手段１２０は、パリティデータを再現するため、リードエラーの発生したパリティグループに属する、新データの書込対象ディスク装置（例えば３２−１）およびパリティ用ディスク装置（例えば３２−５）以外の残りのディスク装置（例えば３２−２，３２−３，３２−４）のデータを読み込む。
【００４５】
その際、データエラー検出手段（例えば１５４−２）により第３のディスク装置（例えば３２−２）からのデータ読出しに対してさらにリードエラーが検出された場合には、そのデータエラー検出手段はデータ再現手段１２０にエラーの発生を通知する。それによってデータ再現手段１２０は特別書込実行手段１１０に特別な書込処理モードへの移行を要求する通知を行う。
【００４６】
特別書込実行手段１１０が特別な書込処理モードへの移行要求通知を受け取ると、データ書込手段１１３は、予め設定されてなる規定値、好ましくは不揮発性メモリ３４に格納されている新データを該当するディスク装置（例えば３２−１）の指定された書込位置に上書きする。
【００４７】
また、パリティ生成手段１１６は、新データの書込み対象ディスク装置（例えば３２−１）およびパリティ用ディスク装置（例えば３２−５）の、指定された書込位置に対応する位置に格納されたデータおよびパリティと、不揮発性メモリ３４に格納されている新データとを用いて新パリティを生成し、それをパリティ用ディスク装置（例えば３２−５）に書き込む。そして、特別な書込処理モードを終了する。
【００４８】
なお、データ書込手段１１３が、予め設定されてなる規定値を該当するディスク装置（例えば３２−１）の指定された書込位置に上書きした場合（例えば不揮発性メモリ３４に新データが格納されていないような場合）には、メモリ内にフラグを立てるなどして規定値を上書きしたことを記憶しておき、そのデータに対してリードの要求があった場合には擬似的にリードエラーを通知するようにしておく。
【００４９】
従って、請求項１に係るディスクアレイ装置は、指定されたディスク装置の書込位置に格納されている旧データを読み出した後に上位装置から転送された新データを該書込位置に書き込むとともに、パリティ用ディスク装置の、前記新データのディスク書込位置に対応する位置に格納された旧パリティ、前記旧データおよび前記新データに基づいて生成した新パリティを、前記旧パリティのディスク格納位置に書き込み、書込処理が中断された場合には、該中断された書込処理が再開された時に、前記新データの書き込みを指定された第１のディスク装置およびパリティ用の第２のディスク装置を除く全ディスク装置の前記新データのディスク書込位置に対応する位置に格納された他のデータと前記新データとに基づいて生成した新パリティを前記旧パリティのディスク格納位置に書き込むディスクアレイ装置において、上位装置から書込処理を命令された際に、故障状態のディスク装置がある場合にディスク装置に対して行う同時並列的な書込動作が実行される前に、ディスク装置に同時並列的に書き込まれる前記新データ、前記第１のディスク装置および前記第２のディスク装置を除く故障状態でない全ディスク装置の前記他のデータ、および、前記旧データと前記新データと前記旧パリティとから求められた新パリティを格納する不揮発性メモリと、書込処理が中断された後、該中断された書込処理が再開された時に、故障状態のディスク装置がある場合に、前記不揮発性メモリに格納された前記新データ、前記他のデータおよび前記新パリティを対応するディスク装置に同時並列的に書き込むことにより復旧処理を行う特別書込実行手段と、を具備することを特徴とする。
【００５０】
請求項１に係る発明によれば、故障状態のディスク装置がある場合にディスク装置に対して行う同時並列的な書込動作が実行される前に、新データ（Ｄ０new ）、他のデータ（Ｄ２，Ｄ３）、および、旧データと新データと旧パリティとから求められた新パリティ（Ｄｐnew ）が不揮発性メモリに格納され、書込処理が中断され場合には、中断された書込処理が再開された時に、不揮発性メモリに格納された新データ（Ｄ０new ）、他のデータ（Ｄ２，Ｄ３）および新パリティ（Ｄｐnew ）を対応するディスク装置に同時並列的に書き込むことによって、故障しているディスク装置がある場合にも復旧処理が行われる。
【００５３】
請求項２に係るディスクアレイ装置は、請求項１に記載の発明において、前記不揮発性メモリには、上位装置からの書込処理命令を受け取ってからディスク装置に対する書込動作が正常に終了するまでの間、書込処理中を表す書込中フラグおよび書込処理の進行状況を示す管理情報が格納されることを特徴とする。
【００５４】
請求項２に係る発明によれば、不揮発性メモリに、ディスク装置に対する書込動作が正常に終了したか否かを識別する書込中フラグおよび書込処理の段階を示すステータスが格納されるため、書込処理が正常に終了しなかった後に、再び電源を投入した時に、書込中フラグを参照することによって正常に書き込まれなかったデータが残っているか否かが一目瞭然となるとともに、ステータスを参照することによって書込処理が中断した所から復旧処理を継続して行うことができるので、復旧処理が迅速に行われる。
【００５５】
請求項３に係るディスクアレイ装置は、請求項１または２に記載の発明において、ディスク装置に対してデータの書込動作および読出動作を実行するアレイコントローラと、該アレイコントローラを制御する制御装置を具備し、前記制御装置が前記不揮発性メモリを具備することを特徴とする。
【００５６】
請求項３に係る発明によれば、ディスク装置に対してデータの書込動作および読出動作を実行するアレイコントローラと、アレイコントローラを制御する制御装置を具備し、制御装置が不揮発性メモリを具備することによって、故障したディスク装置がある場合にも制御装置が新パリティを生成することができる。
【００５７】
請求項４に係るディスクアレイ装置は、請求項１または２に記載の発明において、ディスク装置に対してデータの書込動作および読出動作を実行するアレイコントローラと、該アレイコントローラを制御する制御装置を具備し、前記アレイコントローラが前記不揮発性メモリを具備することを特徴とする。
【００５８】
請求項４に係る発明によれば、ディスク装置に対してデータの書込動作および読出動作を実行するアレイコントローラと、アレイコントローラを制御する制御装置を具備し、アレイコントローラが不揮発性メモリを具備することによって、故障したディスク装置がある場合にもアレイコントローラが新パリティを生成することができる。
【００７０】
【発明の実施の形態】
以下に、本発明に係るディスクアレイ装置の実施の形態について図２〜図３１を参照しつつ詳細に説明する。
【００７１】
（実施の形態１）
図２は、本発明によるディスクアレイ装置の実施の形態１を示す構成図である。図２において、制御装置１０には、マイクロプロセッサ（以下、ＭＰＵと称する）１２が設けられている。このＭＰＵ１２の内部バスに、制御プログラムや固定データを格納したＲＯＭ２０、ＲＡＭを用いた揮発性メモリ２２、キャッシュファンクションエンジン２４を介して設けられたキャッシュメモリ２６、バックアップ電源３６により電源ダウン時にも動作可能な不揮発性メモリ３４、内部リソースや内部ジョブを管理するリソースマネージャモジュール１３、およびハードウェア環境を管理するサービスアダプタ１４が接続されている。
【００７２】
また、制御装置１０にはチャネルインターフェースアダプタ１６が設けられており、そのアダプタ１６を介して制御装置１０に、上位装置として機能するホストコンピュータ１８が接続されている。さらに、制御装置１０にはデバイスインターフェースアダプタ１７が設けられており、そのアダプタ１７を介して制御装置１０に、複数台（図２の例では例えば５台）のディスク装置３２−１，３２−２，３２−３，３２−４，３２−５を管理するアレイコントローラ５０が接続されている。
【００７３】
アレイコントローラ５０には、制御装置１０のデバイスインターフェースアダプタ１７に接続される上位インターフェース５２、および複数台のディスク装置３２−１〜３２−５を接続する下位インターフェースとなる複数（図２の例では例えば５個）のデバイスインターフェースアダプタ５４−１，５４−２，５４−３，５４−４，５４−５が設けられている。
【００７４】
５台のディスク装置３２−１〜３２−５のうち、例えば４台がデータ格納用であり、１台がパリティ用である。本発明のディスクアレイ装置にあっては、図３６に示したＲＡＩＤ４あるいは図３７に示したＲＡＩＤ５と同じ機能を実現することから、ＲＡＩＤ４の場合には、例えばディスク装置３２−１〜３２−４がデータ格納用に使用され、ディスク装置３２−５がパリティ用に使用される。一方、ＲＡＩＤ５の場合には、例えばディスク装置３２−１〜３２−５のそれぞれはＲＡＩＤ４の場合と同様、１つのディスク装置に同一のデータ単位をまとめて格納するが、パリティ用のディスク装置は固定されず、セクタに応じてパリティ用のディスク装置が所定の順番に従って切り替わる。
【００７５】
図３および図４は、図２の実施の形態１におけるディスクアレイ装置の機能ブロック図であり、図３は１台のディスク装置が故障状態にある場合、図４は故障しているディスク装置がない場合すなわち全ディスク装置が稼動状態にある場合をそれぞれ表している。
【００７６】
図３および図４において、複数台（図示例では例えば５台）のディスク装置３２−１〜３２−５のうち、例えばディスク装置３２−５がパリティ用として用いられているとする。勿論、ディスク装置３２−５はＲＡＩＤ４であれば固定的にパリティ用として定められており、ＲＡＩＤ５については、現時点のデータアクセスにおいてパリティ用として位置付けられていることになる。
【００７７】
１台のディスク装置３２−２が故障している状態で、指定されたディスク装置３２−１のデータ（Ｄ０）を新データ（Ｄ０ｎｅｗ  ）に更新する際には、図３に示すように、制御装置１０の不揮発性メモリ３４には、ホストコンピュータ１８から転送された新データ（Ｄ０ｎｅｗ  ）４０、書込処理の進行状況等を示す管理テーブル４１、書込み中を表す書込中フラグ４４、ディスク装置３２−１から読み出された旧データ（Ｄ０ｏｌｄ  ）４０−１、故障していない他のディスク装置５４−３，５４−４から読み出されたデータ（Ｄ２，Ｄ３）４６，４７、パリティ用ディスク装置３２−５から読み出された旧パリティ（Ｄｐｏｌｄ  ）４８、および旧データ（Ｄ０ｏｌｄ  ）４０−１と新データ（Ｄ０ｎｅｗ  ）４０と旧パリティ（Ｄｐｏｌｄ  ）４８を排他的論理和（ＥＯＲ）演算することにより求められた新パリティ（Ｄｐｎｅｗ  ）４８−１が記憶される。
【００７８】
新パリティ（Ｄｐｎｅｗ  ）４８−１の生成処理は特別書込実行手段１１０内のパリティ生成手段１１６（図１参照）により実行される。なお、特別書込実行手段１１０は図２に示すＭＰＵ１２により実現される。
【００７９】
そして、データロスとなるのを防ぐために、特別なデータ書込処理を行う。すなわち、不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０、他のデータ（Ｄ２，Ｄ３）４６，４７および新パリティ（Ｄｐｎｅｗ  ）４８−１をアレイコントローラ５０のデバイスインターフェースアダプタ５４−１，５４−３，５４−４，５４−５に送り格納する。
【００８０】
デバイスインターフェースアダプタ５４−１，５４−３，５４−４，５４−５に格納された新データ（Ｄ０ｎｅｗ  ）４０−２、他のデータ（Ｄ２，Ｄ３）４６−１，４７−１および新パリティ（Ｄｐｎｅｗ  ）４８−２をディスク装置３２−１，３２−３，３２−４，３２−５にＲＡＩＤ３方式により同時並列的に書き込む。書込が指定されたディスク装置３２−１に対する新データ（Ｄ０ｎｅｗ  ）の上書き処理は特別書込実行手段１１０内のデータ書込手段１１３により実行される。
【００８１】
管理テーブル４１には、書込処理の段階（ステータス）４２、および複数のアレイコントローラが設けられている場合にその書込処理が自系の書込処理であるか他系の書込処理であるかを識別する自系フラグ４３が格納される。
【００８２】
排他的論理和（ＥＯＲ）演算は、例えばＭＰＵ１２により行われる。
【００８３】
正常に終了しなかった書込処理の復旧を行う場合には、不揮発性メモリ３４に記憶されている新データ（Ｄ０ｎｅｗ  ）４０、他のデータ（Ｄ２，Ｄ３）４６，４７および新パリティ（Ｄｐｎｅｗ  ）４８−１を、アレイコントローラ５０のデバイスインターフェースアダプタ５４−１，５４−３，５４−４，５４−５を介して、ディスク装置３２−１，３２−３，３２−４，３２−５にＲＡＩＤ３方式により同時並列的に書き込む。
【００８４】
全ディスク装置３２−１，３２−２，３２−３，３２−４，３２−５が稼動している状態で、指定されたディスク装置３２−１のデータ（Ｄ０）を新データ（Ｄ０ｎｅｗ  ）に更新する際には、図４に示すように、制御装置１０の不揮発性メモリ３４には、ホストコンピュータ１８から転送された新データ（Ｄ０ｎｅｗ  ）４０、書込処理の進行状況等を示す管理テーブル４１、および書込み中を表す書込中フラグ４４が記憶される。
【００８５】
また、制御装置１０の揮発性メモリ２２には、ディスク装置３２−１から読み出された旧データ（Ｄ０ｏｌｄ  ）４０−１、パリティ用ディスク装置３２−５から読み出された旧パリティ（Ｄｐｏｌｄ  ）４８が記憶される。
【００８６】
そして、この場合には、通常のデータ書込処理を行う。すなわち、不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０は、アレイコントローラ５０のデバイスインターフェースアダプタ５４−１に送られて格納され、その格納された新データ（Ｄ０ｎｅｗ  ）４０−２がディスク装置３２−１に書き込まれる。
【００８７】
また、不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０と揮発性メモリ２２に記憶された旧データ（Ｄ０ｏｌｄ  ）４０−１および旧パリティ（Ｄｐｏｌｄ  ）４８とに基づいて、ＭＰＵ１２において排他的論理和（ＥＯＲ）演算が行われ、新パリティ（Ｄｐｎｅｗ  ）４８−１が求められ、制御装置１０の揮発性メモリ２２に記憶される。この新パリティ（Ｄｐｎｅｗ  ）４８−１はアレイコントローラ５０のデバイスインターフェースアダプタ５４−５に格納され、その格納された新パリティ（Ｄｐｎｅｗ  ）４８−２がディスク装置３２−５に書き込まれる。
【００８８】
正常に終了しなかった書込処理の復旧を行う場合には、不揮発性メモリ３４に記憶されている新データ（Ｄ０ｎｅｗ  ）４０は、アレイコントローラ５０のデバイスインターフェースアダプタ５４−１を介してディスク装置３２−１に書き込まれる。また、先に書込処理が正常に終了しなかったことにより、旧データ（Ｄ０ｏｌｄ  ）および旧パリティ（Ｄｐｏｌｄ  ）は不定となっているため、新パリティ（Ｄｐｎｅｗ  ）を生成するために、ディスク装置３２−２，３２−３，３２−４からデータ（Ｄ１，Ｄ２，Ｄ３）が読み出され、デバイスインターフェースアダプタ５４−２，５４−３，５４−５に格納される。
【００８９】
それら格納されたデータ（Ｄ１，Ｄ２，Ｄ３）４５−１，４６−１，４７−１は、制御装置１０の揮発性メモリ２２に送られて記憶される。そして、揮発性メモリ２２に記憶されたデータ（Ｄ１，Ｄ２，Ｄ３）４５，４６，４７と不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０とに基づいて新パリティ（Ｄｐｎｅｗ  ）４８−１が求められ、アレイコントローラ５０のデバイスインターフェースアダプタ５４−５を介してディスク装置３２−５に書き込まれる。
【００９０】
図５には、不揮発性メモリ３４に記憶される管理テーブル４１の記憶内容の一例が示されている。同図に示すように、管理テーブル４１には、例えば「ｏｐ−ｉｄ」、図３および図４におけるステータス４２に相当する「ステータス」、図３および図４における自系フラグ４３に相当する「自系／他系」および「アドレス」の項目が記憶される。
【００９１】
「ｏｐ−ｉｄ」は、アレイコントローラ５０が書込処理を管理するためのＩＤであり、「ステータス」は、書込処理がどの段階まで進んだかを示すステータスであり、「自系／他系」は、アレイコントローラ５０が複数ある場合に、ステータスに示された処理を行ったコントローラが自系であるか他系であるかを示すフラグであり、「アドレス」は、不揮発性メモリ３４に記憶されたデータやパリティの格納場所を示すアドレスである。
【００９２】
図６は、図３および図４に示すディスクアレイ装置における全体的な処理動作を示したフローチャートである。図６において、まずディスクアレイ装置の電源が投入されると、ステップＳ１でイニシャルプログラムルーチン（ＩＰＬ）に基づく所定のイニシャライズを行った後、ステップＳ２に進んで電源ダウンがあったか否かのチェックを行う。通常のログオフ操作による電源切断後にログオンによりパワーオンスタートした場合には電源ダウンなしと判定し、ステップＳ３に進み、ホストコンピュータ１８からのコマンド受領を待つ。
【００９３】
ステップＳ３でホストコンピュー夕１８からのコマンドを受領すると、ステップＳ４に進んでそのコマンドの解読を行う。ステップＳ５でライトアクセスの要求を判別すると、ステップＳ６に進んでデータ書込およびパリティ更新処理を実行し、一方、リードアクセスの要求を判別すると、ステップＳ７に進んでデータ続出処理を実行する。
【００９４】
一方、パワーオンスタートした際に、ステップＳ２で電源ダウンありと判別した場合には、ステップＳ８で復旧処理を行ってからステップＳ３以降の通常処理に入る。この一連の処理を行うためのプログラムは制御装置１０のＲＯＭ２０（図２参照）に記憶されており、そのプログラムはＭＰＵ１２（図２参照）によって実行される。
【００９５】
図７は、図６のステップＳ６に示したデータ書込およびパリティ更新処理の詳細を示したフローチャートである。図７において、ホストコンピュータ１８からのライトコマンドを受け取ると、まずステップＳ６１で制御装置１０の不揮発性メモリ３４に書込中フラグ４４を立てる。それからステップＳ６２へ進み、全ディスク装置３２−１，３２−２，３２−３，３２−４，３２−５の稼動状態をチェックする。
【００９６】
故障状態のディスク装置（図３では、３２−２のディスク装置）がある場合（ＮＦＴ）には、ステップＳ６３へ進んで特別なデータ書込処理を行い、一方、全ディスク装置３２−１，３２−２，３２−３，３２−４，３２−５が稼動している場合（ＦＴ）には、ステップＳ６７へ進んで通常のデータ書込処理を行う。
【００９７】
ステップＳ６３またはステップＳ６７でデータの書込みが終了したら、ステップＳ６４で制御装置１０はアレイコントローラ５０から書込みが正常に終了した旨の通知を受け取り、ステップＳ６５で書込中フラグ４４をおろし、ステップＳ６６で正常に書込処理が終了したことを確認する。これでデータ書込およびパリティ更新処理が終了する。
【００９８】
図８は、図７のステップＳ６３に示した特別なデータ書込処理の詳細を示したフローチャートである。なお、この図８に示す処理内容は、図３に示した機能ブロック図に対応している。図８において、ホストコンピュータ１８からのライトコマンドに伴ってディスク装置に書き込む新データが転送されてくることから、ステップＳ６３１でホストコンピュータ１８からの新データ（Ｄ０ｎｅｗ  ）４０を制御装置１０の不揮発性メモリ３４に格納する。
【００９９】
続いてステップＳ６３２で故障しているディスク装置（図３では、３２−２の装置）を除く全ディスク装置３２−１，３２−３，３２−４，３２−５から、デバイスインターフェースアダプタ５４−１，５４−３，５４−４，５４−５からの指示により、旧データ（Ｄ０ｏｌｄ  ）４０−３、他のデータ（Ｄ２，Ｄ３）４６−１，４７−１および旧パリティ（Ｄｐｏｌｄ  ）４８−３を読み取り、デバイスインターフェースアダプタ５４−１，５４−３，５４−４，５４−５内に格納する。格納された旧データ（Ｄ０ｏｌｄ  ）４０−３、他のデータ（Ｄ２，Ｄ３）４６−１，４７−１および旧パリティ（Ｄｐｏｌｄ  ）４８−３を、ステップＳ６３３で制御装置１０に転送して不揮発性メモリ３４内に格納する。
【０１００】
続いてステップＳ６３４に進み、不揮発性メモリに記憶された旧データ（Ｄ０ｏｌｄ  ）４０−１と旧パリティ（Ｄｐｏｌｄ  ）４８と新データ（Ｄ０ｎｅｗ  ）４０との排他的論理和から新パリティ（Ｄｐｎｅｗ  ）４８−１を生成し、それをステップＳ６３５で不揮発性メモリ３４に格納する。
【０１０１】
続いてステップＳ６３６に進み、不揮発性メモリ３４に格納された新データ（Ｄ０ｎｅｗ  ）４０と他のデータ（Ｄ２，Ｄ３）４６，４７と新パリティ（Ｄｐｎｅｗ  ）４８−１をデバイスインターフェースアダプタ５４−１，５４−３，５４−４，５４−５に転送して格納し、さらにステップＳ６３７で新データ（Ｄ０ｎｅｗ  ）４０−２と他のデータ（Ｄ２，Ｄ３）４６−１，４７−１と新パリティ（Ｄｐｎｅｗ  ）４８−２をディスク装置３２−１，３２−３，３２−４，３２−５に転送し、ステップＳ６３８で新データ（Ｄ０ｎｅｗ  ）４０−２と他のデータ（Ｄ２，Ｄ３）４６−１，４７−１と新パリティ（Ｄｐｎｅｗ  ）４８−２をディスク装置３２−１，３２−３，３２−４，３２−５の、新データ書込予定領域と同一領域にＲＡＩＤ３の方式により同時並列的に書き込む。これで特別なデータ書込処理が終了する。
【０１０２】
図９は、図７のステップＳ６７に示した通常のデータ書込処理の詳細を示したフローチャートである。なお、この図９に示す処理内容は、図４に示した機能ブロック図に対応している。図９において、まずステップＳ６７１でホストコンピュータ１８からライトコマンドに伴って転送されてきた新データ（Ｄ０ｎｅｗ  ）４０を制御装置１０の不揮発性メモリ３４に格納する。続いてステップＳ６７２で新データ（Ｄ０ｎｅｗ  ）４０を、例えばディスク装置３２−１が書込対象として指定されたとすると、デバイスインターフェースアダプタ５４−１に転送して格納する。
【０１０３】
続いてステップＳ６７３でデバイスインターフェースアダプタ５４−１からの指示により、ディスク装置３２−１の新データ書込予定領域の内容を旧データ（Ｄ０ｏｌｄ  ）４０−３として読み取り、ステップＳ６７４でデバイスインターフェースアダプタ５４−１内に格納する。
【０１０４】
旧データ（Ｄ０ｏｌｄ  ）４０−３の格納が済むと、ステップＳ６７５でデバイスインターフェースアダプタ５４−１内の新データ（Ｄ０ｎｅｗ  ）４０−２をディスク装置３２−１に転送し、ステップＳ６７６で新データ書込予定領域に新データ（Ｄ０ｎｅｗ  ）４０−２を書き込む。
【０１０５】
ついで、ステップＳ６７７でパリティ用のディスク装置３２−５の、ディスク装置３２−１における新データ書込予定領域と同一領域の内容を旧パリティ（Ｄｐｏｌｄ  ）４８−３として読み取り、ステップＳ６７８でその旧パリティ（Ｄｐｏｌｄ  ）４８−３をデバイスインターフェースアダプタ５４−５に格納する。
【０１０６】
続いてステップＳ６７９で、デバイスインターフェースアダプタ５４−１，５４−５に格納された旧データ（Ｄ０ｏｌｄ  ）４０−３および旧パリティ（Ｄｐｏｌｄ  ）４８−３を制御装置１０の揮発性メモリ２２に転送して格納し、さらにそれら格納された旧データ（Ｄ０ｏｌｄ  ）４０−１および旧パリティ（Ｄｐｏｌｄ  ）４８と不揮発性メモリ３４に格納された新データ（Ｄ０ｎｅｗ  ）４０との排他的論理和から新パリティ（Ｄｐｎｅｗ  ）４８−１を生成し、それを揮発性メモリ２２に格納する。
【０１０７】
続いて、ステップＳ６８０に進み、揮発性メモリ２２に格納された新パリティ（Ｄｐｎｅｗ  ）４８−１をデバイスインターフェースアダプ５４−５に転送して格納し、さらにステップＳ６８１で新パリティ（Ｄｐｎｅｗ  ）４８−２をディスク装置３２−５に転送し、ステップＳ６８２で新パリティ（Ｄｐｎｅｗ  ）４８−２をディスク装置３２−５の、ディスク装置３２−１における新データの書込領域と同じ領域に書き込む。これで通常のデータ書込処理が終了する。
【０１０８】
ここで、新パリティ（Ｄｐｎｅｗ  ）は、基本的には新データ（Ｄ０ｎｅｗ  ），旧データ（Ｄ０ｏｌｄ  ）および旧パリティ（Ｄｐｏｌｄ  ）の排他的論理和から生成されるものであるが、つぎの（１）〜（３）のように中間パリティを生成してから新パリティ（Ｄｐｎｅｗ  ）を生成することもできる。
【０１０９】
（１）新データ（Ｄ０ｎｅｗ  ）と旧デー夕（Ｄ０ｏｌｄ  ）の排他的論理和をとって中間パリティを生成し、その中間パリティと旧パリティ（Ｄｐｏｌｄ  ）との排他的論理和をとって新パリティ（Ｄｐｎｅｗ  ）を生成する。即ち、次式の処理を行う。
新データ（＋）旧データ＝中間パリティ
中間パリティ（＋）旧パリティ＝新パリティ
【０１１０】
（２）旧データ（Ｄ０ｏｌｄ  ）と旧パリティ（Ｄｐｏｌｄ  ）の排他的論理和をとって中間パリティを生成し、その中間パリティと新データ（Ｄ０ｎｅｗ  ）との排他的論理和をとって新パリティ（Ｄｐｎｅｗ  ）を生成する。即ち、次式の処理を行う。
旧データ（＋）旧パリティ＝中間パリティ
中間パリティ（＋）新データ＝新パリティ
【０１１１】
（３）旧パリティ（Ｄｐｏｌｄ  ）と新データ（Ｄ０ｎｅｗ  ）の排他的論理和をとって中間パリティを生成し、その中間パリティと旧データ（Ｄ０ｏｌｄ  ）との排他的論理和をとって新パリティ（Ｄｐｎｅｗ  ）を生成する。即ち、次式の処理を行う。
旧パリティ（＋）新データ＝中間パリティ
中間パリティ（＋）旧データ＝新パリティ
なお、生成された中間パリティは、制御装置１０の揮発性メモリ２２または不揮発性メモリ３４に格納される。
【０１１２】
図１０は、図６のステップＳ８に示した復旧処理の詳細を示したフローチャートである。図６のステップＳ２で電源ダウンがあったと判定されると、図１０に示すように、まずステップＳ８１で制御装置１０の不揮発性メモリ３４に書込中フラグ４４が立っているか否かのチェックを行う。書込中フラグ４４が立っていない場合には、電源ダウンの際に書込中のデータまたはパリティがなかったとして、そのまま復旧処理を終了する。
【０１１３】
ステップＳ８１で書込中フラグ４４が立っている場合には、ステップＳ８２へ進み、全ディスク装置３２−１，３２−２，３２−３，３２−４，３２−５の稼動状態をチェックする。故障状態のディスク装置（図３では、３２−２のディスク装置）がある場合（ＮＦＴ）には、ステップＳ８３へ進んでＮＦＴ時の特別な書込動作モードに移行して復旧処理を行い、一方、全ディスク装置３２−１，３２−２，３２−３，３２−４，３２−５が稼動している場合（ＦＴ）には、ステップＳ８６へ進んでＦＴ時の特別な書込動作モードに移行して復旧処理を行う。
【０１１４】
ステップＳ８３またはステップＳ８６で復旧処理が終了したら、ステップＳ８４へ進み、ホストコンピュータ１８は制御装置１０に、特別な書込動作モードから通常のモードへ移行する命令をアレイコントローラ５０に出すように指示し、それを受けて、制御装置１０はアレイコントローラ５０に通常のモードへ移行するように指示を出す。そして、ステップＳ８５でアレイコントローラ５０はそのコマンドを受け取って通常のモードに移行する。これで復旧処理が終了する。
【０１１５】
図１１は、図１０のステップＳ８３に示したＮＦＴ時の復旧処理の詳細を示したフローチャートである。なお、この図１１に示す処理内容は、図３に示した機能ブロック図に対応している。図１１において、まずステップＳ８３１で制御装置１０はアレイコントローラ５０にＮＦＴ時の特別な書込動作モードに移行するように指示を出す。アレイコントローラ５０は、ステップＳ８３２においてそのコマンドを受け取って特別な書込モードに移行する。
【０１１６】
続いてステップＳ８３３で制御装置１０の不揮発性メモリ３４から新データ（Ｄ０ｎｅｗ  ）４０と他のデータ（Ｄ２，Ｄ３）４６，４７と新パリティ（Ｄｐｎｅｗ  ）４８−１を読み出し、ステップＳ８３４で新データ（Ｄ０ｎｅｗ  ）４０と他のデータ（Ｄ２，Ｄ３）４６，４７と新パリティ（Ｄｐｎｅｗ  ）４８−１をデバイスインターフェースアダプタ５４−１，５４−３，５４−４，５４−５に転送して格納する。
【０１１７】
さらにステップＳ８３５で新データ（Ｄ０ｎｅｗ  ）４０−２と他のデータ（Ｄ２，Ｄ３）４６−１，４７−１と新パリティ（Ｄｐｎｅｗ  ）４８−２をディスク装置３２−１，３２−３，３２−４，３２−５に転送し、ステップＳ８３６で新データ（Ｄ０ｎｅｗ  ）４０−２と他のデータ（Ｄ２，Ｄ３）４６−１，４７−１と新パリティ（Ｄｐｎｅｗ  ）４８−２をディスク装置３２−１，３２−３，３２−４，３２−５の、新データ書込予定領域と同一領域にＲＡＩＤ３の方式により同時並列的に書き込む。
【０１１８】
続いてステップＳ８３７で制御装置１０はアレイコントローラ５０から書込みが正常に終了した旨の通知を受け取り、ステップＳ８３８で書込中フラグ４４をおろし、ステップＳ８３９で正常に書込処理が終了したことを確認する。そして、他の書込中のフラグ４４が立っているか否かのチェックを行い、立っている書込中フラグ４４がなくなるまで、上記ステップＳ８３３〜ステップＳ８３９の処理を繰り返し行い、全ての書込中フラグ４４がなくなったら、ＮＦＴ時の復旧処理が終了する。
【０１１９】
図１２は、図１０のステップＳ８６に示したＦＴ時の復旧処理の詳細を示したフローチャートである。なお、この図１２に示す処理内容は、図４に示した機能ブロック図に対応している。図１２において、まずステップＳ８６１で制御装置１０はアレイコントローラ５０にＦＴ時の特別な書込動作モードに移行するように指示を出す。アレイコントローラ５０は、ステップＳ８６２においてそのコマンドを受け取って特別な書込モードに移行する。
【０１２０】
続いてステップＳ８６３で制御装置１０の不揮発性メモリ３４から新データ（Ｄ０ｎｅｗ  ）４０を読み出し、それをデバイスインターフェースアダプタ５４−１に転送して格納する。また、ステップＳ８６４で、新データ（Ｄ０ｎｅｗ  ）を格納するディスク装置３２−１およびパリティ用のディスク装置３２−５以外のディスク装置３２−２，３２−３，３２−４からデータ（Ｄ１，Ｄ２，Ｄ３）を読み出し、それらデータ（Ｄ１，Ｄ２，Ｄ３）４５−１，４６−１，４７−１をデバイスインターフェースアダプタ５４−２，５４−３，５４−４に格納する。
【０１２１】
続いてステップＳ８６５でデバイスインターフェースアダプタ５４−１内の新データ（Ｄ０ｎｅｗ  ）４０−２をディスク装置３２−１に転送し、新データ書込予定領域に新データ（Ｄ０ｎｅｗ  ）４０−２を書き込む。
【０１２２】
続いてステップＳ８６６で、デバイスインターフェースアダプタ５４−２，５４−３，５４−４に格納されたデータ（Ｄ１，Ｄ２，Ｄ３）４５−１，４６−１，４７−１を制御装置１０の揮発性メモリ２２に転送して格納し、揮発性メモリ２２に格納された（Ｄ１，Ｄ２，Ｄ３）４５，４６，４７と不揮発性メモリ３４に格納された新データ（Ｄ０ｎｅｗ  ）４０との排他的論理和から新パリティ（Ｄｐｎｅｗ  ）４８−１を生成し、それを揮発性メモリ２２に格納する。
【０１２３】
続いて、ステップＳ８６７に進み、揮発性メモリ２２に格納された新パリティ（Ｄｐｎｅｗ  ）４８−１をデバイスインターフェースアダプ５４−５に転送して格納し、その格納された新パリティ（Ｄｐｎｅｗ  ）４８−２をディスク装置３２−５に転送してディスク装置３２−５の、ディスク装置３２−１における新データの書込領域と同じ領域に書き込む。
【０１２４】
続いてステップＳ８６８で制御装置１０はアレイコントローラ５０から書込みが正常に終了した旨の通知を受け取り、ステップＳ８６９で書込中フラグ４４をおろし、ステップＳ８７０で正常に書込処理が終了したことを確認する。そして、他の書込中のフラグ４４が立っているか否かのチェックを行い、立っている書込中フラグ４４がなくなるまで、上記ステップＳ８６３〜ステップＳ８７０の処理を繰り返し行い、全ての書込中フラグ４４がなくなったら、ＦＴ時の復旧処理が終了する。
【０１２５】
図１３は図６のステップＳ７に示したデータ読出処理の詳細を示したフローチャートである。図１３において、、ホストコンピュータ１８からのリードコマンドを解読すると、ステップＳ７１でデータ読出しの対象となったデバイスインターフェースアダプタを介してディスク装置からデータを読み出し、ステップＳ７２でデバイスインターフェースアダプタに格納した後に、ステップＳ７３でホストコンピスータ１８にデータ転送を行う。
【０１２６】
上記実施の形態によれば、制御装置１０内に不揮発性メモリ３４を設け、データの書込処理時に、故障しているディスク装置がある場合には、その不揮発性メモリ３４に、更新するためにホストコンピュータ１８から転送されてきた新データ（Ｄ０ｎｅｗ  ）４０、データ書込処理の進行状況を示すステータス４２、書込中フラグ４４、故障していないディスク装置から読み出されたデータ、すなわち旧データ（Ｄ０ｏｌｄ  ）４０−１と旧パリティ（Ｄｐｏｌｄ  ）４８と他のデータ（Ｄ２，Ｄ３）４６，４７、および新データ（Ｄ０ｎｅｗ  ）４０と旧データ（Ｄ０ｏｌｄ  ）４０−１と旧パリティ（Ｄｐｏｌｄ  ）４８とから生成された新パリティ（Ｄｐｎｅｗ  ）４８−１を記憶するようにしたため、データおよびパリティの書込動作中に電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、不揮発性メモリ３４に格納された新データ（Ｄ０ｎｅｗ  ）４０と他のデータ（Ｄ２，Ｄ３）４６，４７と新パリティ（Ｄｐｎｅｗ  ）４８−１とをディスク装置に書き込むことによって、容易にデータを復旧することができる。
【０１２７】
また、上記実施の形態によれば、制御装置１０内に不揮発性メモリ３４を設け、データの書込処理時に、故障しているディスク装置がない場合には、その不揮発性メモリ３４に、更新するためにホストコンピュータ１８から転送されてきた新データ（Ｄ０ｎｅｗ  ）４０、データ書込処理の進行状況を示すステータス４２、書込中フラグ４４を記憶するようにしたため、データおよびパリティの書込動作中に電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、データ更新されるディスク装置とパリティ用のディスク装置以外のディスク装置から同一パリティグループのデータ（Ｄ１，Ｄ２，Ｄ３）を読み出し、それらデータ（Ｄ１，Ｄ２，Ｄ３）と不揮発性メモリ３４に格納された新データ（Ｄ０ｎｅｗ  ）４０とから新パリティ（Ｄｐｎｅｗ  ）４８−１を生成し、その新パリティ（Ｄｐｎｅｗ  ）４８−１と不揮発性メモリ３４に格納された新データ（Ｄ０ｎｅｗ  ）４０を新たにディスク装置に書き込むことによって、容易にデータを復旧することができる。
【０１２８】
さらに、上記実施の形態によれば、不揮発性メモリ３４に書込中フラグ４４が格納されるため、書込処理が正常に終了しなかった後に、再び電源を投入した時に、書込中フラグ４４を参照することによって正常に書き込まれなかったデータが残っているか否かが一目瞭然となり、迅速にデータの復旧処理を行うことができる。
【０１２９】
また、上記実施の形態によれば、不揮発性メモリ３４にステータス４２が格納されるため、書込処理が正常に終了しなかった後に、再び電源を投入した時に、ステータス４２を参照することによって書込処理が中断した所から復旧処理を継続して行うことができ、より迅速にデータの復旧処理を行うことができる。
【０１３０】
（実施の形態２）
図１４は、本発明によるディスクアレイ装置の実施の形態２を示す構成図である。図１４に示すディスクアレイ装置が図１に示すディスクアレイ装置と異なるのは、バックアップ電源３６により電源ダウン時にも動作可能な不揮発性メモリ３４が制御装置１０に設けられておらず、その代わりに不揮発性メモリ３４とバックアップ電源３６がアレイコントローラ５０内に設けられている点と、アレイコントローラ５０内に揮発性メモリ２３と排他的論理和（ＥＯＲ）演算を行う論理回路３７が設けられている点である。その他の構成は上記実施の形態１と同じであるので、図１に示すディスクアレイ装置と同一の構成要素については同一の符号を付して詳細な説明を省略する。
【０１３１】
図１５および図１６は、図１４の実施の形態２におけるディスクアレイ装置の機能ブロック図であり、図１５は１台のディスク装置が故障状態にある場合、図１６は故障しているディスク装置がない場合すなわち全ディスク装置が稼動状態にある場合をそれぞれ表している。上記実施の形態１と同様に、図１５および図１６においては、複数台（図示例では例えば５台）のディスク装置３２−１〜３２−５のうち、例えばディスク装置３２−５がパリティ用として用いられているとする。
【０１３２】
１台のディスク装置３２−２が故障している状態で、指定されたディスク装置３２−１のデータ（Ｄ０）を新データ（Ｄ０ｎｅｗ  ）に更新する際には、図１５に示すように、アレイコントローラ５０の不揮発性メモリ３４には、上記実施の形態１と同様に、新データ（Ｄ０ｎｅｗ  ）４０、ステータス４２および自系フラグ４３が格納される管理テーブル４１、書込中フラグ４４、旧データ（Ｄ０ｏｌｄ  ）４０−１、他のデータ（Ｄ２，Ｄ３）４６，４７、旧パリティ（Ｄｐｏｌｄ  ）４８および新パリティ（Ｄｐｎｅｗ  ）４８−１が記憶される。
【０１３３】
新パリティ（Ｄｐｎｅｗ  ）４８−１は、アレイコントローラ５０内に設けられた論理回路３７において、旧データ（Ｄ０ｏｌｄ  ）４０−１と新データ（Ｄ０ｎｅｗ  ）４０と旧パリティ（Ｄｐｏｌｄ  ）４８を排他的論理和（ＥＯＲ）演算することにより求められる。
【０１３４】
そして、この実施の形態２においても、上記実施の形態１と同様に、データの書込処理を行う際には、新データ（Ｄ０ｎｅｗ  ）４０−２、他のデータ（Ｄ２，Ｄ３）４６−１，４７−１および新パリティ（Ｄｐｎｅｗ  ）４８−２をディスク装置３２−１，３２−３，３２−４，３２−５にＲＡＩＤ３方式により同時並列的に書き込む。
【０１３５】
また、正常に終了しなかった書込処理の復旧を行う場合には、不揮発性メモリ３４に記憶されている新データ（Ｄ０ｎｅｗ  ）４０、他のデータ（Ｄ２，Ｄ３）４６，４７および新パリティ（Ｄｐｎｅｗ  ）４８−１を、デバイスインターフェースアダプタ５４−１，５４−３，５４−４，５４−５を介して、ディスク装置３２−１，３２−３，３２−４，３２−５にＲＡＩＤ３方式により同時並列的に書き込む。
【０１３６】
全ディスク装置３２−１，３２−２，３２−３，３２−４，３２−５が稼動している状態で、指定されたディスク装置３２−１のデータ（Ｄ０）を新データ（Ｄ０ｎｅｗ  ）に更新する際には、図１６に示すように、アレイコントローラ５０の不揮発性メモリ３４に新データ（Ｄ０ｎｅｗ  ）４０、管理テーブル４１および書込中フラグ４４が記憶される。また、アレイコントローラ５０の揮発性メモリ２３には、旧データ（Ｄ０ｏｌｄ  ）４０−１および旧パリティ（Ｄｐｏｌｄ  ）４８が記憶される。
【０１３７】
不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０は、デバイスインターフェースアダプタ５４−１を介してディスク装置３２−１に書き込まれる。また、不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０と揮発性メモリ２３に記憶された旧データ（Ｄ０ｏｌｄ  ）４０−１および旧パリティ（Ｄｐｏｌｄ  ）４８とに基づいて、論理回路３７において排他的論理和（ＥＯＲ）演算が行われ、新パリティ（Ｄｐｎｅｗ  ）４８−１が求められ、揮発性メモリ２３に記憶される。この新パリティ（Ｄｐｎｅｗ  ）４８−１はデバイスインターフェースアダプタ５４−５を介してディスク装置３２−５に書き込まれる。
【０１３８】
正常に終了しなかった書込処理の復旧を行う場合には、不揮発性メモリ３４に記憶されている新データ（Ｄ０ｎｅｗ  ）４０は、デバイスインターフェースアダプタ５４−１を介してディスク装置３２−１に書き込まれる。また、ディスク装置３２−２，３２−３，３２−４からデータ（Ｄ１，Ｄ２，Ｄ３）が読み出され、揮発性メモリ２３に送られて記憶される。
【０１３９】
そして、揮発性メモリ２３に記憶されたデータ（Ｄ１，Ｄ２，Ｄ３）４５，４６，４７と不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０とに基づいて新パリティ（Ｄｐｎｅｗ  ）４８−１が生成され、デバイスインターフェースアダプタ５４−５を介してディスク装置３２−５に書き込まれる。
【０１４０】
図１５および図１６に示すディスクアレイ装置の処理動作は、図６〜図１３に示すフローチャートと同じである。従って、その説明を省略する。
【０１４１】
図１４〜図１６に示す実施の形態２によれば、アレイコントローラ５０内に不揮発性メモリ３４を設け、データの書込処理時に、故障しているディスク装置がある場合には、その不揮発性メモリ３４に新データ（Ｄ０ｎｅｗ  ）４０、ステータス４２、書込中フラグ４４、旧データ（Ｄ０ｏｌｄ  ）４０−１と旧パリティ（Ｄｐｏｌｄ  ）４８と他のデータ（Ｄ２，Ｄ３）４６，４７、および新パリティ（Ｄｐｎｅｗ  ）４８−１を記憶するようにしたため、データおよびパリティの書込動作中に電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、不揮発性メモリ３４に格納された新データ（Ｄ０ｎｅｗ  ）４０と他のデータ（Ｄ２，Ｄ３）４６，４７と新パリティ（Ｄｐｎｅｗ  ）４８−１とをディスク装置に書き込むことによって、容易にデータを復旧することができる。
【０１４２】
また、上記実施の形態２によれば、アレイコントローラ５０内に不揮発性メモリ３４を設け、データの書込処理時に、故障しているディスク装置がない場合には、その不揮発性メモリ３４に新データ（Ｄ０ｎｅｗ  ）４０、ステータス４２および書込中フラグ４４を記憶するようにしたため、データおよびパリティの書込動作中に電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、データ更新されるディスク装置とパリティ用のディスク装置以外のディスク装置から同一パリティグループのデータ（Ｄ１，Ｄ２，Ｄ３）を読み出し、それらデータ（Ｄ１，Ｄ２，Ｄ３）と不揮発性メモリ３４に格納された新データ（Ｄ０ｎｅｗ  ）４０とから新パリティ（Ｄｐｎｅｗ  ）４８−１を生成し、その新パリティ（Ｄｐｎｅｗ  ）４８−１と新データ（Ｄ０ｎｅｗ  ）４０を新たにディスク装置に書き込むことによって、容易にデータを復旧することができる。
【０１４３】
さらに、上記実施の形態２によれば、不揮発性メモリ３４に書込中フラグ４４が格納されるため、書込処理が正常に終了しなかった後に、再び電源を投入した時に、書込中フラグ４４を参照することによって正常に書き込まれなかったデータが残っているか否かが一目瞭然となり、迅速にデータの復旧処理を行うことができる。
【０１４４】
また、上記実施の形態２によれば、不揮発性メモリ３４にステータス４２が格納されるため、書込処理が正常に終了しなかった後に、再び電源を投入した時に、ステータス４２を参照することによって書込処理が中断した所から復旧処理を継続して行うことができ、より迅速にデータの復旧処理を行うことができる。
【０１４５】
（実施の形態３）
図１７は、本発明によるディスクアレイ装置の実施の形態３を示す構成図である。この実施の形態３のディスクアレイ装置では、図１７に示すように、ホストコンピュータ１８を接続してなる制御装置１０には、独立した電源６２，６４により駆動される２つのアレイコントローラＡ５０およびアレイコントローラＢ５１が接続されており、それらアレイコントローラＡ５０とアレイコントローラＢ５１とにより例えば５台のディスク装置３２−１，３２−２，３２−３，３２−４，３２−５が制御されている。なお、図１に示すディスクアレイ装置と同一の構成要素については同一の符号を付して詳細な説明を省略する。
【０１４６】
制御装置１０内には、実施の形態１と同様にＭＰＵ１２、ＲＯＭ２０、揮発性メモリ２２、キャッシュファンクションエンジン２４、キャッシュメモリ２６、不揮発性メモリ３４、バックアップ電源３６、リソースマネージャモジュール１３、サービスアダプタ１４、チャネルインターフェースアダプタ１６が設けられている。
【０１４７】
また、制御装置１０には、２つのアレイコントローラＡ５０およびアレイコントローラＢ５１を独立して制御するために、デバイスインターフェイスアダプタＡ１７およびデバイスアダプタモジュールＡ１１からなるグループＡと、デバイスインターフェイスアダプタＢ１５およびデバイスアダプタモジュールＢ１９からなるグループＢの２つのグループが設けられている。これら２つのグループＡ，Ｂは、独立した電源２７，２８により駆動されている。
【０１４８】
アレイコントローラＡ５０とアレイコントローラＢ５１は同様の構成のものであり、特に図示しないが、図１に示す実施の形態１と同様に、制御装置１０のデバイスインターフェースアダプタＡ１７またはデバイスインターフェースアダプタＢ１５に接続される上位インターフェース、および複数台のディスク装置３２−１〜３２−５を接続する下位インターフェースとなる複数のデバイスインターフェースアダプタが設けられている。
【０１４９】
図１８は、図１７の実施の形態３におけるディスクアレイ装置の機能ブロック図である。図１８において、複数台（図示例では例えば５台）のディスク装置３２−１〜３２−５のうち、例えばディスク装置３２−５がパリティ用として用いられているとする。勿論、ディスク装置３２−５はＲＡＩＤ４であれば固定的にパリティ用として定められており、ＲＡＩＤ５については、現時点のデータアクセスにおいてパリティ用として位置付けられていることになる。
【０１５０】
制御装置１０内の不揮発性メモリ３４は、デバイスインターフェイスアダプタＡ１７およびデバイスアダプタモジュールＡ１１からなるグループＡと、デバイスインターフェイスアダプタＢ１５およびデバイスアダプタモジュールＢ１９からなるグループＢの２つのグループに共有されている。すなわち、この不揮発性メモリ３４に記憶されたデータやパリティ等は、Ａ，Ｂ２つのアレイコントローラ５０，５１の何れを介してもディスク装置３２−１，３２−２，３２−３，３２−４，３２−５に書き込むことができる。
【０１５１】
全ディスク装置３２−１，３２−２，３２−３，３２−４，３２−５が稼動している状態で、指定されたディスク装置３２−１のデータ（Ｄ０）を新データ（Ｄ０ｎｅｗ  ）に更新する際には、図１８に示すように、制御装置１０の不揮発性メモリ３４には、ホストコンピュータ１８から転送された新データ（Ｄ０ｎｅｗ  ）４０、ディスク装置３２−１から読み出された旧データ（Ｄ０ｏｌｄ  ）４０−１、パリティ用ディスク装置３２−５から読み出された旧パリティ（Ｄｐｏｌｄ  ）４８、書込処理の進行状況等を示す管理テーブル４１、および書込み中を表す書込中フラグ４４が記憶される。特に限定しないが、図１８に示す例では、書込中フラグ４４は管理テーブル４１内に格納されるようになっている。
【０１５２】
また、制御装置１０は、不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０をディスク装置に書き戻すためのタスクを生成するタスク生成部７２を有している。タスク生成部７２は、例えば制御装置１０内のＭＰＵ１２により実現される。タスク生成部７２により生成されたタスク情報は、リソースマネージャモジュール１３内のメモリに記憶されたタスク情報テーブル７４に格納され、そのタスク情報に基づいてリソースマネージャにより適当なデバイスアダプタモジュール１１，１９に対してタスク処理の実行が指示される。
【０１５３】
また、タスク情報テーブル７４には、一方のアレイコントローラに異常が発生した場合に、異常が発生したアレイコントローラに代えて正常に稼動しているアレイコントローラを用いて書込処理を行うことを依頼したことを表す交代パス処理要求フラグ７６が格納される。
【０１５４】
デバイスアダプタモジュール１１，１９は、リソースマネージャにより指示されると、タスク情報テーブル７４からタスク情報を読み出し、それに基づいて不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０を読み出し、自系のアレイコントローラ５０，５１に対して書込命令を発行する。また、デバイスアダプタは、不揮発性メモリ３４に記憶された管理テーブル４１に書込中フラグ４４を立てる。
【０１５５】
アレイコントローラ５０，５１は、互いに電源監視部５５により相手のアレイコントローラ５１，５０の電源供給状態を監視しており、一方のアレイコントローラ５０（または５１）が他方のアレイコントローラ５１（または５０）の電源供給が停止したことを検出すると、電源供給停止通知部５６により、自系のデバイスインターフェースアダプタ１７（または１５）を介してデバイスアダプタモジュール１１（または１９）に、他方のアレイコントローラ５１（または５０）が電源供給停止状態にあることを通知する。電源監視部５５および電源供給停止通知部５６は、アレイコントローラ５０，５１内に設けられたマイクロプロセッサ（ＭＰＵ）等により実現される。
【０１５６】
また、アレイコントローラ５０，５１には、制御部１０の不揮発性メモリ３４から転送されてきた新データ（Ｄ０ｎｅｗ  ）４０と同じパリティグループ内の他のデータをディスク装置から読み出し、それらのデータと新データ（Ｄ０ｎｅｗ  ）４０に基づいて新パリティ（Ｄｐｎｅｗ  ）を生成するパリティ生成部５７が設けられている。
【０１５７】
このパリティ生成部５７によるパリティの再構築が実施されるのは、書込命令に対して、フラグによって特別なモードが設定された時である。パリティ生成部５７は、アレイコントローラ５０，５１内に設けられたマイクロプロセッサ（ＭＰＵ）等により実現される。
【０１５８】
図１８に示すディスクアレイ装置の処理動作の流れについて説明する。このディスクアレイ装置の全体的な処理動作の流れ、データ読出処理の流れおよび復旧処理の流れは、それぞれ図６、図１３および図１２に示すフローチャートと概ね同じである。従って、図１８に示すディスクアレイ装置における全体動作、復旧処理およびデータ読出処理の流れについての説明を省略する。
【０１５９】
図１９は、図１８に示すディスクアレイ装置の書込処理の詳細を示したフローチャートである。図１９において、ホストコンピュータ１８からのライトコマンドを受け取ると、まずステップＳ１６７１で制御装置１０内の一方のグループＡに属するデバイスアダプタモジュールＡ１１が、自系のアレイコントローラＡ５０に対してデータの書込命令を発行する。
【０１６０】
それによって、ステップＳ１６７２でアレイコントローラＡ５０は、図９に示す通常の書込処理に従って新データ（Ｄ０ｎｅｗ  ）４０をディスク装置３２−１に書き込むとともに、新データ（Ｄ０ｎｅｗ  ）４０と旧データ（Ｄ０ｏｌｄ  ）と旧パリティ（Ｄｐｏｌｄ  ）に基づいて新パリティ（Ｄｐｎｅｗ  ）を生成し、それをパリティ用のディスク装置３２−５に書き込む。
【０１６１】
ステップＳ１６７２の通常の書込処理中、すなわち制御装置１０がアレイコントローラＡ５０から書込完了信号を受領する前に、ステップＳ１６７３で異常終了信号を受領した場合、ステップＳ１６７４で異常終了の原因がアレイコントローラＡ５０への電源供給停止であれば、ステップＳ１６７５へ進む。
【０１６２】
ステップＳ１６７５では、異常を検出したデバイスアダプタモジュールＡ１１は、異常発生中の書込処理タスクを他方のデバイスパス、すなわちアレイコントローラＢ５１に代わりに実行させるために、タスク情報テーブル７４内に交代パス処理要求フラグ７６をセットする。そして、ステップＳ１６７６でデバイスアダプタモジュールＡ１１は、リソースマネージャに対してタスクの交代パス処理依頼を通知する。
【０１６３】
交代パス処理を依頼されたリソースマネージャは、ステップＳ１６７７で代わりのアレイコントローラＢ５１を制御するデバイスアダプタに対して、異常発生により中断された書込処理タスクの処理依頼を発行する。
【０１６４】
その依頼を受けたデバイスアダプタは、ステップＳ１６７８で、受領した処理内容が書込処理であり、かつ異常が発生したアレイコントローラＡ５０に代わる交代デバイスパス処理であることを認識し、ステップＳ１６７９で、パリテイデータを再構築するためのパリティ生成フラグという特別なフラグを書込命令に付加してアレイコントローラＢ５１に発行する。
【０１６５】
パリティ生成フラグが付加された書込命令を受領したアレイコントローラＢ５１は、ステップＳ１６８０で制御装置１０内の不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０を読み出し、その読み出したデータをディスク装置３２−１に書き込む。
【０１６６】
そして、ステップＳ１６８１で、アレイコントローラＢ５１は、データ更新を行うディスク装置３２−１とパリティ用のディスク装置３２−５を除く他のディスク装置３２−２，３２−３，３２−４から、更新するデータと同じパリティグループのデータ（Ｄ１，Ｄ２，Ｄ３）を読み出し、それら読み出されたデータ（Ｄ１，Ｄ２，Ｄ３）と新データ（Ｄ０ｎｅｗ  ）との排他的論理和（ＥＯＲ）演算により新パリティ（Ｄｐｎｅｗ  ）を生成し、それをパリティ用のディスク装置３２−５に書き込む。
【０１６７】
最後に、ステップＳ１６８２で交代パス処理要求フラグ７６を下げて、データ書込処理を終了する。
【０１６８】
ステップＳ１６７４で異常終了の原因がアレイコントローラＡ５０への電源供給停止でない場合には、ステップＳ１６８３へ進む。ステップＳ１６８３で異常終了の原因がアレイコントローラＡ５０のハングアップ等の異常動作である場合には、ステップＳ１６８４へ進んでデバイスインタフェースアダプタＡ１７およびアレイコントローラＡ５０のリセット処理を行ってから、ステップＳ１６８５でパリテイデータを再構築するためのパリティ生成フラグを書込命令に付加して再度アレイコントローラＡ５０に発行する。
【０１６９】
一方、ステップＳ１６８３で異常終了の原因がアレイコントローラＡ５０によるディスク装置への書込処理の中断である場合には、リセット処理を行わずにそのままステップＳ１６８５へ進んで、パリテイデータを再構築するためのパリティ生成フラグを書込命令に付加して再度アレイコントローラＡ５０に発行する。
【０１７０】
パリティ生成フラグが付加された書込命令を受領したアレイコントローラＡ５０は、ステップＳ１６８６で制御装置１０内の不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０を読み出し、その読み出したデータをディスク装置３２−１に書き込む。
【０１７１】
そして、ステップＳ１６８７で、アレイコントローラＡ５０は、データ更新を行うディスク装置３２−１とパリティ用のディスク装置３２−５を除く他のディスク装置３２−２，３２−３，３２−４から、更新するデータと同じパリティグループのデータ（Ｄ１，Ｄ２，Ｄ３）を読み出し、それら読み出されたデータ（Ｄ１，Ｄ２，Ｄ３）と新データ（Ｄ０ｎｅｗ  ）との排他的論理和（ＥＯＲ）演算により新パリティ（Ｄｐｎｅｗ  ）を生成し、それをパリティ用のディスク装置３２−５に書き込む。それによって、データ書込処理を終了する。
【０１７２】
図１、ステップＳ１６７３で異常終了信号を受領しなければ、アレイコントローラＡ５０によるデータ更新が正常に行われたことになり、そのまま書込処理を終了する。
【０１７３】
図２０は、図１８に示すディスクアレイ装置において、アレイコントローラＡ５０の異常を検出したデバイスアダプタが、それ以前にアレイコントローラＡ５０に対して発行している他機番に対しての書込命令に対する処理の詳細を示したフローチャートである。図２０において、ステップＳ１６９１で、アレイコントローラＡ５０から正常終了完了信号を受け取っていない書込命令があるか否かを判断し、受け取っていない命令がある場合には、ステップＳ１６９２でリソースマネージャのタスク処理実行時間監視論理により、タイムアウトを検出する。
【０１７４】
そして、ステップＳ１６９３でリソースマネージャは、正常終了完了信号を受け取っていない書込命令の書込処理タスクを他方のデバイスパス、すなわちアレイコントローラＢ５１に代わりに実行させるために、タスク情報テーブル７４内に交代パス処理要求フラグ７６をセットする。
【０１７５】
また、リソースマネージャは、ステップＳ１６９４で代わりのアレイコントローラＢ５１を制御するデバイスアダプタモジュールＢ１９に対して、正常終了完了信号を受け取っていない書込命令の書込処理タスクの処理依頼を発行する。その依頼を受けたデバイスアダプタは、ステップＳ１６９５で、受領した処理内容が書込処理であり、かつ異常が発生したアレイコントローラＡ５０に代わる交代デバイスパス処理であることを認識し、ステップＳ１６９６で、パリテイデータを再構築するためのパリティ生成フラグという特別なフラグを書込命令に付加してアレイコントローラＢ５１に発行する。
【０１７６】
パリティ生成フラグが付加された書込命令を受領したアレイコントローラＢ５１は、ステップＳ１６９７で制御装置１０内の不揮発性メモリ３４に記憶された当該書込処理における新データ（Ｄ０ｎｅｗ  ）４０を読み出し、その読み出したデータをディスク装置３２−１に書き込む。
【０１７７】
そして、ステップＳ１６９８で、アレイコントローラＢ５１は、データ更新を行うディスク装置３２−１とパリティ用のディスク装置３２−５を除く他のディスク装置３２−２，３２−３，３２−４から、更新するデータと同じパリティグループのデータ（Ｄ１，Ｄ２，Ｄ３）を読み出し、それら読み出されたデータ（Ｄ１，Ｄ２，Ｄ３）と新データ（Ｄ０ｎｅｗ  ）との排他的論理和（ＥＯＲ）演算により新パリティ（Ｄｐｎｅｗ  ）を生成し、それをパリティ用のディスク装置３２−５に書き込む。
【０１７８】
最後に、ステップＳ１６９９で交代パス処理要求フラグ７６を下げて、データ書込処理を終了する。
【０１７９】
ステップＳ１６９１でアレイコントローラＡ５０から正常終了完了信号を受け取っていない書込命令がない場合には、そのまま処理を終了する。
【０１８０】
図１７〜図２０に示す実施の形態３によれば、制御装置１０内に不揮発性メモリ３４を設け、データの書込処理時に、その不揮発性メモリ３４に新データ（Ｄ０ｎｅｗ  ）４０、書込処理の段階を示すステータスおよびそのステータスに示された処理を行ったアレイコントローラの識別フラグを格納した管理テーブル４１、旧データ（Ｄ０ｏｌｄ  ）４０−１および旧パリティ（Ｄｐｏｌｄ  ）４８を記憶するようにしたため、一方のアレイコントローラによる書込処理に異常が生じた場合に、もう一方のアレイコントローラが異常を生じたアレイコントローラに代わって書込処理を継続して行うことができるので、データの整合性を保つことができる。
【０１８１】
また、上記実施の形態３によれば、不揮発性メモリ３４に新データ（Ｄ０ｎｅｗ  ）４０、書込処理のステータスおよびアレイコントローラの識別フラグを格納した管理テーブル４１を記憶するようにしたため、データおよびパリティの書込動作中に電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、データ更新されるディスク装置とパリティ用のディスク装置以外のディスク装置から同一パリティグループのデータ（Ｄ１，Ｄ２，Ｄ３）を読み出し、それらデータ（Ｄ１，Ｄ２，Ｄ３）と不揮発性メモリ３４に格納された新データ（Ｄ０ｎｅｗ  ）４０とから新パリティ（Ｄｐｎｅｗ  ）４８−１を生成し、その新パリティ（Ｄｐｎｅｗ  ）４８−１と新データ（Ｄ０ｎｅｗ  ）４０を新たにディスク装置に書き込むことによって、容易にデータを復旧することができる。
【０１８２】
（実施の形態４）
図２１は、本発明によるディスクアレイ装置の実施の形態４を示す機能ブロック図である。この実施の形態４のディスクアレイ装置では、図２１に示すように、ホストコンピュータ１８を接続してなる制御装置１０には、独立した電源６２，６４により駆動される２つのアレイコントローラＡ５０およびアレイコントローラＢ５１が接続されており、それらアレイコントローラＡ５０とアレイコントローラＢ５１とにより例えば５台のディスク装置３２−１，３２−２，３２−３，３２−４，３２−５が制御されている。なお、図２に示すディスクアレイ装置と同一の構成要素については同一の符号を付して詳細な説明を省略する。
【０１８３】
制御装置１０内には、図示省略するが、実施の形態１と同様にＭＰＵ、ＲＯＭ、揮発性メモリ、キャッシュファンクションエンジン、キャッシュメモリ、リソースマネージャモジュール、サービスアダプタ、チャネルインターフェースアダプタが設けられている。
【０１８４】
アレイコントローラＡ５０とアレイコントローラＢ５１は同様の構成のものであり、特に図示しないが、図２に示す実施の形態１と同様に、制御装置１０の図示しないデバイスインターフェースアダプタに接続される上位インターフェース、および複数台のディスク装置３２−１〜３２−５を接続する下位インターフェースとなる複数のデバイスインターフェースアダプタが設けられている。
【０１８５】
また、アレイコントローラＡ５０およびアレイコントローラＢ５１には、不揮発性メモリ３４およびその不揮発性メモリ３４に電源を供給するバックアップ電源（図示せず）が設けられている。アレイコントローラＡ５０の不揮発性メモリ３４には、ディスク装置にデータを書き込む際に、例えば制御装置１０から転送されてきた新データ（Ｄ０ｎｅｗ  ）４０と、ディスク装置から読み出された旧データ（Ｄ０ｏｌｄ  ）４０−１および旧パリティ（Ｄｐｏｌｄ  ）４８と、新たに作成された新パリティ（Ｄｐｎｅｗ  ）４８−１と、書込処理段階を示すステータス４２およびそのステータスに示された処理を実行したアレイコントローラを識別する自系フラグを格納した管理テーブル４１が記憶される。
【０１８６】
アレイコントローラＢ５１の不揮発性メモリ３４には、例えば、少なくとも新データ（Ｄ０ｎｅｗ  ）４０−４、旧データ（Ｄ０ｏｌｄ  ）４０−５および旧パリティ（Ｄｐｏｌｄ  ）４８−４が記憶される。
【０１８７】
また、アレイコントローラＡ５０およびアレイコントローラＢ５１には、それぞれ相手のコントローラと通信するための通信部８２が設けられている。この通信部８２を介して、新データ（Ｄ０ｎｅｗ  ）、旧データ（Ｄ０ｏｌｄ  ）および旧パリティ（Ｄｐｏｌｄ  ）や書込処理の正常終了通知などの授受が行われる。通信部８２は、例えばパーソナルコンピュータ等で一般的に採用されているＰＣＩバスを介して相互に接続されている。
【０１８８】
また、アレイコントローラＡ５０およびアレイコントローラＢ５１には、新データ（Ｄ０ｎｅｗ  ）、旧データ（Ｄ０ｏｌｄ  ）および旧パリティ（Ｄｐｏｌｄ  ）に基づき、排他的論理和（ＥＯＲ）演算を行って新パリティ（Ｄｐｎｅｗ  ）を作成する論理回路３７が設けられている。
【０１８９】
Ａ，Ｂ２つのアレイコントローラ５０，５１は何れも、ディスク装置３２−１〜３２−５にデータやパリティ等を書き込むことができる。
【０１９０】
複数台（図示例では例えば５台）のディスク装置３２−１〜３２−５のうち、図２１に示す例では、例えばディスク装置３２−５がパリティ用として用いられているとする。勿論、ディスク装置３２−５はＲＡＩＤ４であれば固定的にパリティ用として定められており、ＲＡＩＤ５については、現時点のデータアクセスにおいてパリティ用として位置付けられていることになる。
【０１９１】
図２２には、アレイコントローラＡ５０内の不揮発性メモリ３４に、管理テーブル４１と新データ（Ｄ０ｎｅｗ  ）４０と新パリティ（Ｄｐｎｅｗ  ）４８−１を記憶させるようにした例が示されている。この場合には、特に図示しないが、アレイコントローラＢ５１内の不揮発性メモリ３４には、新データ（Ｄ０ｎｅｗ  ）と新パリティ（Ｄｐｎｅｗ  ）が記憶される。
【０１９２】
図２３には、アレイコントローラＡ５０内の不揮発性メモリ３４に、管理テーブル４１と新データ（Ｄ０ｎｅｗ  ）４０と、旧データ（Ｄ０ｏｌｄ  ）および旧パリティ（Ｄｐｏｌｄ  ）の排他的論理和（ＥＯＲ）演算により生成された中間パリティ（Ｄｐｉｎｔ  ）４８−５を記憶させるようにした例が示されている。この場合には、特に図示しないが、アレイコントローラＢ５１内の不揮発性メモリ３４には、新データ（Ｄ０ｎｅｗ  ）と中間パリティ（Ｄｐｉｎｔ  ）が記憶される。
【０１９３】
図２１に示すディスクアレイ装置の処理動作の流れについて説明する。このディスクアレイ装置の全体的な処理動作の流れ、データ読出処理の流れは、それぞれ図６および図１３に示すフローチャートと概ね同じである。従って、図２１に示すディスクアレイ装置における全体動作およびデータ読出処理の流れについての説明を省略する。
【０１９４】
図２４は、図２１に示すディスクアレイ装置の書込処理の詳細を示したフローチャートである。なお、図中右側に、各ステップのステータス（書込処理の段階）を併記した。図２４において、まずステップＳ２６７１でアレイコントローラＡ５０は、制御装置１０から書込命令とともに新データ（Ｄ０ｎｅｗ  ）を受け取ると、その新データ（Ｄ０ｎｅｗ  ）４０をアレイコントローラＡ５０内の不揮発性メモリ３４に記憶する。この時のステータスは「新データの受領（Ｒｅｃｅｉｖｅ
ｎｅｗ  ｄａｔａ）」である。
【０１９５】
そして、ステップＳ２６７２でアレイコントローラＡ５０は通信部８２を介して他方のアレイコントローラＢ５１に新データ（Ｄ０ｎｅｗ  ）を転送し、一方、アレイコントローラＢ５１は、転送されてきた新データ（Ｄ０ｎｅｗ  ）を受け取ってアレイコントローラＢ５１内の不揮発性メモリ３４内に記憶する。これで、アレイコントローラＢ５１に新データ（Ｄ０ｎｅｗ  ）４０−４がコピーされたことになる。この時のステータスは「新データの受領（Ｒｅｃｅｉｖｅ  ｎｅｗ  ｄａｔａ）」である。
【０１９６】
続いて、ステップＳ２６７３でアレイコントローラＡ５０はディスク装置３２−１，３２−５から旧データ（Ｄ０ｏｌｄ  ）および旧パリティ（Ｄｐｏｌｄ  ）を読み出し、それら旧データ（Ｄ０ｏｌｄ  ）４０−１および旧パリティ（Ｄｐｏｌｄ  ）４８をアレイコントローラＡ５０内の不揮発性メモリ３４に記憶する。この時のステータスは「旧データおよび旧パリティの読出し（Ｒｅａｄ  ｏｌｄ  ｄａｔａ  ＆  ｐａｒｉｔｙ）」である。
【０１９７】
そして、ステップＳ２６７４でアレイコントローラＡ５０は通信部８２を介して他方のアレイコントローラＢ５１に旧データ（Ｄ０ｏｌｄ  ）および旧パリティ（Ｄｐｏｌｄ  ）を転送し、一方、アレイコントローラＢ５１は、転送されてきた旧データ（Ｄ０ｏｌｄ  ）および旧パリティ（Ｄｐｏｌｄ  ）を受け取ってアレイコントローラＢ５１内の不揮発性メモリ３４内に記憶する。
【０１９８】
これで、アレイコントローラＢ５１に旧データ（Ｄ０ｏｌｄ  ）４０−５および旧パリティ（Ｄｐｏｌｄ  ）４８−４がコピーされたことになる。この時のステータスは「旧データおよび旧パリティの読出し（Ｒｅａｄ  ｏｌｄ  ｄａｔａ  ＆  ｐａｒｉｔｙ）」である。
【０１９９】
続いて、ステップＳ２６７５でアレイコントローラＡ５０は、アレイコントローラＡ５０内の不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０と旧データ（Ｄ０ｏｌｄ  ）４０−１と旧パリティ（Ｄｐｏｌｄ  ）４８に基づいて新パリティ（Ｄｐｎｅｗ  ）４８−１を生成し、それをアレイコントローラＡ５０内の不揮発性メモリ３４に記憶する。この時のステータスは「新パリティの作成（Ｇｅｎｅｒａｔｅ  ｎｅｗ  ｐａｒｉｔｙ）」である。
【０２００】
続いて、ステップＳ２６７６でアレイコントローラＡ５０は、新データ（Ｄ０ｎｅｗ  ）４０と新パリティ（Ｄｐｎｅｗ  ）４８−１をディスク装置３２−１，３２−５の該当箇所に書き込む。この時のステータスは「新データおよび新パリティの書込み（Ｗｒｉｔｅ  ｎｅｗ  ｄａｔａ  ＆  ｐａｒｉｔｙ）」である。
【０２０１】
続いて、ステップＳ２６７７でアレイコントローラＡ５０は制御装置１０に、書込処理が正常に終了したことを通知する。この時のステータスは「新データおよび新パリティの書込み（Ｗｒｉｔｅ  ｎｅｗ  ｄａｔａ  ＆  ｐａｒｉｔｙ）」から、正常終了通知の完了後に「終了（Ｆｉｎｉｓｈ）」となる。
【０２０２】
続いて、ステップＳ２６７８でアレイコントローラＡ５０はアレイコントローラＢ５１に、書込処理が正常に終了したことを通知する。この時のステータスは「終了（Ｆｉｎｉｓｈ）」となる。
【０２０３】
続いて、ステップＳ２６７９でアレイコントローラＡ５０は、アレイコントローラＡ５０内の不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０、旧データ（Ｄ０ｏｌｄ  ）４０−１、旧パリティ（Ｄｐｏｌｄ  ）４８、新パリティ（Ｄｐｎｅｗ  ）４８−１およびステータス４２の領域を解放する。この時のステータスは「終了（Ｆｉｎｉｓｈ）」となる。
【０２０４】
また、ステップＳ２６８０でアレイコントローラＢ５１は、アレイコントローラＡ５０からの正常終了通知を受け取ったことによって、アレイコントローラＢ５１内の不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）４０−４、旧データ（Ｄ０ｏｌｄ  ）４０−５、旧パリティ（Ｄｐｏｌｄ  ）４８−４の領域を解放する。この時のステータスは「終了（Ｆｉｎｉｓｈ）」となる。これで書込処理が終了する。
【０２０５】
なお、書込処理中に、アレイコントローラＡ５０への電源供給停止や、アレイコントローラＡ５０のハングアップ等の異常動作や、アレイコントローラＡ５０によるディスク装置への書込処理の中断などの異常が発生して書込処理が中断された場合、図１９に示す実施の形態３における書込処理のように、アレイコントローラＡ５０に代わって、アレイコントローラＢ５１に書込処理を継続して行わせるようにしてもよい。
【０２０６】
図２５は、図２１に示すディスクアレイ装置の復旧処理の詳細を示したフローチャートである。図２５において、電源が投入されると、まずステップＳ２８６１でアレイコントローラＡ５０（またはＢ５１）は、他系のコントローラすなわちアレイコントローラＢ５１（またはＡ５０）が稼働中であるか否かの判断を行う。
【０２０７】
アレイコントローラＢ５１（またはＡ５０）が稼働中の場合には、ステップＳ２８６２で自系すなわちアレイコントローラＡ５０（またはＢ５１）の書込処理がアレイコントローラＢ５１（またはＡ５０）によって既に終了しているかどうかの判断を行う。
【０２０８】
そして、自系の書込処理が終了していない場合には、ステップＳ２６８３で、終了していない書込処理をアレイコントローラＡ５０とアレイコントローラＢ５１の何れが行うかの調停を行う。この調停の方法については、例えばアレイコントローラＡ５０およびアレイコントローラＢ５１のうち先に起動したコントローラがマスターとなり、後から起動したコントローラがスレーブとなって（その逆でもよい）、マスターとなったコントローラが書込処理を行うようにしてもよい。あるいは、予めアレイコントローラＡ５０およびアレイコントローラＢ５１に対してプライマリおよびセカンダリの優先順位を付けておき、プライマリのコントローラが書込処理を行うようにしてもよい。
【０２０９】
調停により書込処理を行うコントローラが決まったら、それを担当するアレイコントローラは、ステップＳ２８６４で自己の不揮発性メモリ３４から新データ（Ｄ０ｎｅｗ  ）を読み出すとともに、アレイコントローラＡ５０内の不揮発性メモリ３４からステータス４２を読み出し、ステップＳ２８６５で、読み出されたステータスに基づいて書込処理を中断箇所から再開する。
【０２１０】
そして、書込処理が終了したら、ステップＳ２８６６で、書込処理の再開を担当したアレイコントローラは、制御装置１０に書込処理が正常に終了したことを通知するとともに、ステップＳ２８６７で他方のアレイコントローラにも書込処理が正常に終了したことを通知する。
【０２１１】
続いて、ステップＳ２８６８で、書込処理の再開を担当したアレイコントローラは、自己の不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）や旧データ（Ｄ０ｏｌｄ  ）や旧パリティ（Ｄｐｏｌｄ  ）、新パリティ（Ｄｐｎｅｗ  ）が記憶されている場合には新パリティ（Ｄｐｎｅｗ  ）、およびステータスが記憶されている場合にはステータスの領域を解放する。
【０２１２】
また、ステップＳ２８６９で、書込処理の再開を担当しなかったアレイコントローラも、自己の不揮発性メモリ３４に記憶された新データ（Ｄ０ｎｅｗ  ）や旧データ（Ｄ０ｏｌｄ  ）や旧パリティ（Ｄｐｏｌｄ  ）、新パリティ（Ｄｐｎｅｗ  ）が記憶されている場合には新パリティ（Ｄｐｎｅｗ  ）、およびステータスが記憶されている場合にはステータスの領域を解放する。これで復旧処理が終了する。
【０２１３】
ステップＳ２８６２で、自系の書込処理が終了している場合には、書込処理の再開を行わずに、ステップＳ２８６６へ進んで、書込処理の正常終了通知（ステップＳ２８６６〜Ｓ２８６７）および不揮発性メモリ３４の領域開放（ステップＳ２８６８〜Ｓ２８６９）を行い、復旧処理を終了する。
【０２１４】
また、ステップＳ２８６１で、他系のアレイコントローラＢ５１（またはＡ５０）が稼働していない場合には、ステップＳ２８６４へ進んで自系のアレイコントローラＡ５０（またはＢ５１）が書込処理を再開し、ステップＳ２８６４〜Ｓ２８６９の処理を行い、復旧処理を終了する。
【０２１５】
なお、図２２に示すように、不揮発性メモリ３４に管理テーブル４１と新データ（Ｄ０ｎｅｗ  ）４０と新パリティ（Ｄｐｎｅｗ  ）４８−１を記憶させる場合や、図２３に示すように、不揮発性メモリ３４に管理テーブル４１と新データ（Ｄ０ｎｅｗ  ）４０と中間パリティ（Ｄｐｉｎｔ  ）４８−５を記憶させる場合も同様である。
【０２１６】
図２１〜図２５に示す実施の形態４によれば、アレイコントローラＡ５０およびアレイコントローラＢ５１内に不揮発性メモリ３４を設け、データの書込処理時に、アレイコントローラＡ５０の不揮発性メモリ３４に新データ（Ｄ０ｎｅｗ  ）４０および書込処理の段階を示すステータス４２と、旧データ（Ｄ０ｏｌｄ  ）４０−１や旧パリティ（Ｄｐｏｌｄ  ）４８や新パリティ（Ｄｐｎｅｗ  ）４８−１などを記憶し、さらにそれら各データをアレイコントローラＢ５１内の不揮発性メモリ３４にコピーしておくようにしたため、データおよびパリティの書込動作中に電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、アレイコントローラＡ５０内の不揮発性メモリ３４またはアレイコントローラＢ５１内の不揮発性メモリ３４に格納された新データを用いることにより、容易にデータを復旧することができる。
【０２１７】
また、上記実施の形態４によれば、一方のアレイコントローラによる書込処理に異常が生じた場合に、もう一方のアレイコントローラが異常を生じたアレイコントローラに代わって書込処理を継続して行うことができるので、データの整合性を保つことができる。
【０２１８】
（実施の形態５）
図２６は、本発明によるディスクアレイ装置の実施の形態５を示す機能ブロック図である。この実施の形態５のディスクアレイ装置では、図２６に示すように、ホストコンピュータ１８を接続してなる制御装置１０には、独立した電源６２，６４により駆動される２つのアレイコントローラＡ５０およびアレイコントローラＢ５１が接続されており、それらアレイコントローラＡ５０とアレイコントローラＢ５１とにより例えば５台のディスク装置３２−１，３２−２，３２−３，３２−４，３２−５が制御されているとともに、アレイコントローラＡ５０とアレイコントローラＢ５１には、アレイコントローラＡ５０およびアレイコントローラＢ５１の何れからもデータの書込みおよび読出しを行うことができる不揮発性メモリ３４を備えた共有デバイス９０が接続されている。
【０２１９】
この不揮発性メモリ３４は、バックアップ電源９１により電源が供給されている。なお、図２に示すディスクアレイ装置と同一の構成要素については同一の符号を付して詳細な説明を省略する。
【０２２０】
制御装置１０内には、図示省略するが、実施の形態１と同様にＭＰＵ、ＲＯＭ、揮発性メモリ、キャッシュファンクションエンジン、キャッシュメモリ、リソースマネージャモジュール、サービスアダプタ、チャネルインターフェースアダプタが設けられている。
【０２２１】
アレイコントローラＡ５０とアレイコントローラＢ５１は同様の構成のものであり、特に図示しないが、図２に示す実施の形態１と同様に、制御装置１０の図示しないデバイスインターフェースアダプタに接続される上位インターフェース、および複数台のディスク装置３２−１〜３２−５を接続する下位インターフェースとなる複数のデバイスインターフェースアダプタが設けられている。
【０２２２】
また、アレイコントローラＡ５０およびアレイコントローラＢ５１には、新データ（Ｄ０ｎｅｗ  ）、旧データ（Ｄ０ｏｌｄ  ）および旧パリティ（Ｄｐｏｌｄ  ）に基づき、排他的論理和（ＥＯＲ）演算を行って新パリティ（Ｄｐｎｅｗ  ）を作成する論理回路（図示省略）が設けられている。
【０２２３】
Ａ，Ｂ２つのアレイコントローラ５０，５１は何れも、ディスク装置３２−１〜３２−５にデータやパリティ等を書き込むことができる。
【０２２４】
不揮発性メモリ３４には、ディスク装置にデータを書き込む際に、その書込処理を実行するアレイコントローラ（図示例では、アレイコントローラＡ５０）から転送されてきた新データ（Ｄ０ｎｅｗ  ）４０−６、旧データ（Ｄ０ｏｌｄ  ）４０−７、旧パリティ（Ｄｐｏｌｄ  ）４８−６およびステータス４２等の管理情報を格納した管理テーブル４１−１が記憶される。
【０２２５】
また、このディスクアレイ装置では、アレイコントローラＡ５０およびアレイコントローラＢ５１にそれぞれ他方のアレイコントローラの電源供給状態を監視する電源監視部９３が設けられており、書込動作中のアレイコントローラの電源供給状態を監視するようになっている。電源監視部９３は、例えば定期的に他方のアレイコントローラにメッセージを送り、それに対する応答を監視するようになっている。
【０２２６】
複数台（図示例では例えば５台）のディスク装置３２−１〜３２−５のうち、図２６に示す例では、例えばディスク装置３２−５がパリティ用として用いられているとする。勿論、ディスク装置３２−５はＲＡＩＤ４であれば固定的にパリティ用として定められており、ＲＡＩＤ５については、現時点のデータアクセスにおいてパリティ用として位置付けられていることになる。
【０２２７】
図２７には、共有デバイス９０内の不揮発性メモリ３４に記憶される管理テーブル４１−１の記憶内容の一例が示されている。同図に示すように、管理テーブル４１−１には、例えばそれぞれ書込処理を区別するための識別子を表す「ｏｐ＿ｉｄ」、当該書込処理が対象としているロジカルブロックアドレスを表す「ｄａｔａ  ＬＢＡ」、旧データ（Ｄ０ｏｌｄ  ）を一時的に格納するためのアドレスを表す「ｏｌｄ  ｄａｔａ  ａｄｄｒｅｓｓ」、新データ（Ｄ０ｎｅｗ  ）を一時的に格納するためのアドレスを表す「ｎｅｗ  ｄａｔａ  ａｄｄｒｅｓｓ」、旧パリティ（Ｄｐｏｌｄ  ）を一時的に格納するためのアドレスを表す「ｏｌｄ  ｐａｒｉｔｙ  ａｄｄｒｅｓｓ」、新パリティ（Ｄｐｎｅｗ  ）を一時的に格納するためのアドレスを表す「ｎｅｗ  ｐａｒｉｔｙ  ａｄｄｒｅｓｓ」、この管理テーブル４１−１を管理するアレイコントローラを識別する番号等の識別子を表す「ａｒｒａｙ  ｃｏｎｔｒｏｌｌｅｒ  ＃」、および書込処理の現在のステータスを表す「ｗｒｉｔｅ  ｓｔａｔｕｓ」が記憶される。
【０２２８】
図２６に示すディスクアレイ装置の処理動作の流れについて説明する。このディスクアレイ装置の全体的な処理動作の流れ、データ読出処理の流れおよび復旧処理の流れは、それぞれ図６、図１３および図１２に示すフローチャートと概ね同じである。従って、図２６に示すディスクアレイ装置における全体動作、復旧処理およびデータ読出処理の流れについての説明を省略する。
【０２２９】
図２８は、図２６に示すディスクアレイ装置の書込処理の詳細を示したフローチャートである。図２８において、ホストコンピュータ１８からのライトコマンドを受け取ると、まずステップＳ３６７１で制御装置１０はアレイコントローラＡ５０に対してデータの書込命令を発行する。
【０２３０】
アレイコントローラＡ５０は、書込命令とともに新データ（Ｄ０ｎｅｗ  ）４０を受け取ると、ステップＳ３６７２で共有デバイス９０内の不揮発性メモリ３４に新データ（Ｄ０ｎｅｗ  ）４０−６、旧データ（Ｄ０ｏｌｄ  ）４０−７、旧パリティ（Ｄｐｏｌｄ  ）４８−６および管理テーブル４１−１を格納してから、ステップＳ３６７３で、新データ（Ｄ０ｎｅｗ  ）４０をディスク装置３２−１に書き込むとともに、新データ（Ｄ０ｎｅｗ  ）４０と旧データ（Ｄ０ｏｌｄ  ）４０−１と旧パリティ（Ｄｐｏｌｄ  ）４８に基づいて新パリティ（Ｄｐｎｅｗ  ）を生成し、それをパリティ用のディスク装置３２−５に書き込むという通常の書込処理を開始する。
【０２３１】
この通常の書込処理中に、書込動作中のアレイコントローラ、すなわちアレイコントローラＡ５０の電源が遮断された場合、ステップＳ３６７４で電源監視部９３はその電源遮断を検知し、ステップＳ３６７５で電源監視部９３は他のアレイコントローラ、すなわちアレイコントローラＢ５１にアレイコントローラＡ５０の電源断を通知する。
【０２３２】
ステップＳ３６７６で、電源断の通知を受け取ったアレイコントローラＢ５１は、共有デバイス９０内の不揮発性メモリ３４から新データ（Ｄ０ｎｅｗ  ）４０−６と旧データ（Ｄ０ｏｌｄ  ）４０−７と旧パリティ（Ｄｐｏｌｄ  ）４８−６と管理テーブル４１−１内の管理情報を読み出し、ステップＳ３６７７で、アレイコントローラＢ５１はアレイコントローラＡ５０の中断された書込処理を継続して行う。
【０２３３】
そして、ステップＳ３６７８で、アレイコントローラＢ５１による書込処理の終了後、共有デバイス９０内の不揮発性メモリ３４の領域を解放し、書込処理を終了する。
【０２３４】
ステップＳ３６７４でアレイコントローラＡ５０の電源遮断が検知されなかった場合には、ステップＳ３６７８へ進んで共有デバイス９０内の不揮発性メモリ３４の領域を解放し、書込処理を終了する。
【０２３５】
図２９には、図２６に示すように電源監視部９３によりアレイコントローラの電源遮断を監視する代わりに、アレイコントローラ５０，５１に他のアレイコントローラを監視するコントローラ監視部９５を設け、このコントローラ監視部９５により所定時間おきに他のコントローラの電源供給状態を監視するようにした例が示されている。他の構成については図２６に示す装置と同じであるので、詳細な説明を省略する。
【０２３６】
コントローラ監視部９５は、例えば定期的に他方のアレイコントローラにメッセージを送り、それに対する応答を監視するようになっている。
【０２３７】
図２９に示すディスクアレイ装置の処理動作の流れについて説明する。このディスクアレイ装置の全体的な処理動作の流れ、データ読出処理の流れおよび復旧処理の流れは、図２６に示す装置と同じ、すなわちそれぞれ図６、図１３および図１２に示すフローチャートと概ね同じである。従って、図２９に示すディスクアレイ装置における全体動作、復旧処理およびデータ読出処理の流れについての説明を省略する。
【０２３８】
図３０は、図２９に示すディスクアレイ装置の書込処理の詳細を示したフローチャートである。図３０において、ホストコンピュータ１８からのライトコマンドを受け取ると、まずステップＳ３６８１で制御装置１０はアレイコントローラＡ５０に対してデータの書込命令を発行する。
【０２３９】
アレイコントローラＡ５０は、書込命令とともに新データ（Ｄ０ｎｅｗ  ）４０を受け取ると、ステップＳ３６８２で共有デバイス９０内の不揮発性メモリ３４に新データ（Ｄ０ｎｅｗ  ）４０−６、旧データ（Ｄ０ｏｌｄ  ）４０−７、旧パリティ（Ｄｐｏｌｄ  ）４８−６および管理テーブル４１−１を格納してから、ステップＳ３６８３で、新データ（Ｄ０ｎｅｗ  ）４０をディスク装置３２−１に書き込むとともに、新データ（Ｄ０ｎｅｗ  ）４０と旧データ（Ｄ０ｏｌｄ  ）４０−１と旧パリティ（Ｄｐｏｌｄ  ）４８に基づいて新パリティ（Ｄｐｎｅｗ  ）を生成し、それをパリティ用のディスク装置３２−５に書き込むという通常の書込処理を開始する。
【０２４０】
この通常の書込処理中に、書込動作中のアレイコントローラ、すなわちアレイコントローラＡ５０の電源が遮断された場合、ステップＳ３６８４で、所定時間おきにアレイコントローラＡ５０の状態を監視している、アレイコントローラＢ５１のコントローラ監視部９５はその電源遮断を検知する。そして、ステップＳ３６８５でアレイコントローラＢ５１は、共有デバイス９０内の不揮発性メモリ３４に格納された書込処理のステータスを参照し、アレイコントローラＡ５０の電源遮断時にアレイコントローラＡ５０が書込処理中であったか否かを判断する。
【０２４１】
書込途中の命令があれば、ステップＳ３６８６でアレイコントローラＢ５１は、共有デバイス９０内の不揮発性メモリ３４から新データ（Ｄ０ｎｅｗ  ）４０−６と旧データ（Ｄ０ｏｌｄ  ）４０−７と旧パリティ（Ｄｐｏｌｄ  ）４８−６と管理テーブル４１−１内の管理情報を読み出し、ステップＳ３６８７で、アレイコントローラＢ５１はアレイコントローラＡ５０の中断された書込処理を継続して行う。
【０２４２】
そして、ステップＳ３６８８で、アレイコントローラＢ５１による書込処理の終了後、共有デバイス９０内の不揮発性メモリ３４の領域を解放し、書込処理を終了する。
【０２４３】
ステップＳ３６８４でアレイコントローラＡ５０の電源遮断が検知されなかった場合、およびステップＳ３６８５で電源遮断時にアレイコントローラＡ５０が書込途中でなかった場合には、ステップＳ３６８８へ進んで共有デバイス９０内の不揮発性メモリ３４の領域を解放し、書込処理を終了する。
【０２４４】
図２６〜図３０に示す実施の形態５によれば、アレイコントローラＡ５０およびアレイコントローラＢ５１の何れからもアクセス可能な共有デバイス９０内に不揮発性メモリ３４を設け、データの書込処理の開始時に、その不揮発性メモリ３４に新データ（Ｄ０ｎｅｗ  ）４０−６、旧データ（Ｄ０ｏｌｄ  ）４０−７、旧パリティ（Ｄｐｏｌｄ  ）４８−６およびステータス等を含む管理テーブル４１−１を記憶しておくようにしたため、一方のアレイコントローラによる書込処理に異常が生じた場合に、もう一方のアレイコントローラが異常を生じたアレイコントローラに代わって書込処理を継続して行うことができるので、データの整合性を保つことができる。
【０２４５】
また、上記実施の形態５によれば、データおよびパリティの書込動作中に全体の電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、共有デバイス９０内の不揮発性メモリ３４に格納されたデータおよび管理情報を用いることにより、容易にデータを復旧することができる。
【０２４６】
（実施の形態６）
図３１は、本発明によるディスクアレイ装置の実施の形態６を示す機能ブロック図である。この実施の形態６のディスクアレイ装置では、図３１に示すように、ホストコンピュータ１８を接続してなる制御装置１０には、アレイコントローラ５０が接続されており、そのアレイコントローラ５０により例えば５台のディスク装置３２−１，３２−２，３２−３，３２−４，３２−５が制御されている。そして、アレイコントローラ５０および全ディスク装置３２−１〜３２−５は無停電電源供給ユニット９８により電源供給されている。なお、図２に示すディスクアレイ装置と同一の構成要素については同一の符号を付して詳細な説明を省略する。
【０２４７】
一般に、ディスク装置３２−１〜３２−５に格納されたデータの不整合は、ディスク装置に対して書込処理が行われている際にディスク装置３２−１〜３２−５やアレイコントローラ５０への電源供給が停止して書込処理が中断されることにより発生する。
【０２４８】
無停電電源供給ユニット９８は、バッテリを内蔵しており、停電等によりＡＣ電力の供給が停止した場合などに、停電発生時にアレイコントローラ５０が保持している仕掛かり中の書込動作が終了するまでの間、バッテリによりディスク装置３２−１〜３２−５やアレイコントローラ５０の電源をバックアップするようになっている。
【０２４９】
図３１に示す実施の形態６によれば、無停電電源供給ユニット９８によりアレイコントローラ５０の電源をバックアップしているため、電源へのＡＣ入力が停止した場合や、電源とアレイコントローラ５０と間の電源供給が何らかの障害により停止した場合でも電源供給が継続して行われるので、アレイコントローラ５０の書込動作が中断されずに済み、データ不整合の発生を防ぐことができる。
【０２５０】
また上記実施の形態６によれば、無停電電源供給ユニット９８によりディスク装置３２−１〜３２−５への電源供給をバックアップしているため、電源とディスク装置３２−１〜３２−５との間の電源供給が何らかの障害により停止した場合でも電源供給が継続して行われるので、アレイコントローラ５０による書込動作が中断されずに済み、データ不整合の発生を防ぐことができる。
【０２５１】
なお、本発明は、上記各実施の形態に限定されるものではなく、発明の要旨を逸脱しない範囲で、種々設計変更可能であるのはいうまでもない。
【０２５２】
また、上記各実施の形態においては、書込処理中に電源断が発生した後、再び電源を投入した時の復旧処理について説明したが、本発明は、電源断による障害の他に、書込処理中に他の致命的な障害が発生したことにより書込処理が正常に終了しなかった場合のデータ復旧処理にも適用することができる。
【０２５３】
【発明の効果】
本発明によれば、故障状態のディスク装置がある場合にディスク装置に対して行う同時並列的な書込動作が実行される前に、新データ（Ｄ０new ）、他のデータ（Ｄ２，Ｄ３）、および、旧データと新データと旧パリティとから求められた新パリティ（Ｄｐnew ）が不揮発性メモリに格納され、電源断等により書込処理が中断され場合には、中断された書込処理が再開された時に、不揮発性メモリに格納された新データ（Ｄ０new ）、他のデータ（Ｄ２，Ｄ３）および新パリティ（Ｄｐnew ）を対応するディスク装置に同時並列的に書き込むことによって復旧処理が行われるため、故障しているディスク装置がある場合でも容易にデータを復旧することができる。つまり、故障しているディスク装置がある状態で、中断された書込処理の再開時にパリティが整合していないために復旧処理を行おうとした場合、従来は、故障しているディスク装置から復旧に必要なデータを正常に読み出すことができないためパリティを再生することができない、すなわち復旧処理を行うことができかったが、本発明によればその不都合を回避することができる。
【図面の簡単な説明】
【図１】本発明によるディスクアレイ装置の原理説明図である。
【図２】本発明によるディスクアレイ装置の実施の形態１を示す構成図である。
【図３】本発明によるディスクアレイ装置の実施の形態１の、１台のディスク装置が故障状態にある場合の機能ブロック図である。
【図４】本発明によるディスクアレイ装置の実施の形態１の、故障しているディスク装置がない場合の機能ブロック図である。
【図５】実施の形態１において不揮発性メモリに記憶される管理テーブルの記憶内容の一例を示す模式図である。
【図６】本発明によるディスクアレイ装置の実施の形態１における全体的な処理動作を示すフローチャートである。
【図７】本発明によるディスクアレイ装置の実施の形態１におけるデータ書込およびパリティ更新処理の詳細を示すフローチャートである。
【図８】本発明によるディスクアレイ装置の実施の形態１における特別なデータ書込処理の詳細を示すフローチャートである。
【図９】本発明によるディスクアレイ装置の実施の形態１における通常のデータ書込処理の詳細を示すフローチャートである。
【図１０】本発明によるディスクアレイ装置の実施の形態１における復旧処理の詳細を示すフローチャートである。
【図１１】本発明によるディスクアレイ装置の実施の形態１におけるＮＦＴ時の復旧処理の詳細を示すフローチャートである。
【図１２】本発明によるディスクアレイ装置の実施の形態１におけるＦＴ時の復旧処理の詳細を示すフローチャートである。
【図１３】本発明によるディスクアレイ装置の実施の形態１におけるデータ読出処理の詳細を示すフローチャートである。
【図１４】本発明によるディスクアレイ装置の実施の形態２を示す構成図である。
【図１５】本発明によるディスクアレイ装置の実施の形態２の、１台のディスク装置が故障状態にある場合の機能ブロック図である。
【図１６】本発明によるディスクアレイ装置の実施の形態２の、故障しているディスク装置がない場合の機能ブロック図である。
【図１７】本発明によるディスクアレイ装置の実施の形態３を示す構成図である。
【図１８】本発明によるディスクアレイ装置の実施の形態３の機能ブロック図である。
【図１９】本発明によるディスクアレイ装置の実施の形態３における書込処理の詳細を示すフローチャートである。
【図２０】本発明によるディスクアレイ装置の実施の形態３において、異常が発生したアレイコントローラに対して異常発生前に発行している他機番に対しての書込命令に対する処理の詳細を示すフローチャートである。
【図２１】本発明によるディスクアレイ装置の実施の形態４を示す機能ブロック図である。
【図２２】実施の形態４において不揮発性メモリに管理テーブルと新データと新パリティを記憶させるようにした例を示す模式図である。
【図２３】実施の形態４において不揮発性メモリに管理テーブルと新データと中間パリティを記憶させるようにした例を示す模式図である。
【図２４】本発明によるディスクアレイ装置の実施の形態４における書込処理の詳細を示すフローチャートである。
【図２５】本発明によるディスクアレイ装置の実施の形態４における復旧処理の詳細を示すフローチャートである。
【図２６】本発明によるディスクアレイ装置の実施の形態５を示す機能ブロック図である。
【図２７】実施の形態５において不揮発性メモリに記憶される管理テーブルの記憶内容の一例を示す模式図である。
【図２８】本発明によるディスクアレイ装置の実施の形態５における書込処理の詳細を示すフローチャートである。
【図２９】本発明によるディスクアレイ装置の実施の形態５の変形例を示す機能ブロック図である。
【図３０】その変形例における書込処理の詳細を示すフローチャートである。
【図３１】本発明によるディスクアレイ装置の実施の形態６を示す機能ブロック図である。
【図３２】ＲＡＩＤ０によるディスクアレイ装置の説明図である。
【図３３】ＲＡＩＤ１によるディスクアレイ装置の説明図である。
【図３４】ＲＡＩＤ３によるディスクアレイ装置の説明図である。
【図３５】ＲＡＩＤ３におけるデータ分割の説明図である。
【図３６】ＲＡＩＤ４によるディスクアレイ装置の説明図である。
【図３７】ＲＡＩＤ５によるディスクアレイ装置の説明図である。
【図３８】ＲＡＩＤ５によるデータ書換手順の説明図である。
【図３９】本発明者らによる先願発明に係るディスクアレイ装置の機能ブロック図である。
【符号の説明】
Ｄ０ｏｌｄ    旧データ
Ｄ０ｎｅｗ    新データ
Ｄ２，Ｄ３  データ
Ｄｐｏｌｄ    旧パリティ
Ｄｐｎｅｗ    新パリティ
１０  制御装置
１８  上位装置（ホストコンピュータ）
３２−１〜３２−５  ディスク装置
３４  不揮発性メモリ
４１，４１−１  管理情報（管理テーブル）
４４  書込中フラグ
５０，５１  アレイコントローラ
５５  電源監視手段（電源監視部）
５６  電源供給停止通知手段（電源供給停止通知部）
５７  パリティ生成手段（パリティ生成部）
６２，６４  電源
７２  タスク生成手段（タスク生成部）
７４  タスク情報テーブル
８２  通信手段（通信部）
９０  共有デバイス
９１  バックアップ電源
９３  電源監視手段
９８  無停電電源供給手段（無停電電源供給ユニット）
１１０  特別書込実行手段
１１３  データ書込手段
１１６  パリティ生成手段
１２０  データ再現手段
１５４−１〜１５４−５  データエラー検出手段
【図１】
0003618529.tif 000002
【図２】
0003618529.tif 000003
【図３】
0003618529.tif 000004
【図４】
0003618529.tif 000005
【図５】
0003618529.tif 000006
【図６】
0003618529.tif 000007
【図７】
0003618529.tif 000008
【図８】
0003618529.tif 000009
【図９】
0003618529.tif 000010
【図１０】
0003618529.tif 000011
【図１１】
0003618529.tif 000012
【図１２】
0003618529.tif 000013
【図１３】
0003618529.tif 000014
【図１４】
0003618529.tif 000015
【図１５】
0003618529.tif 000016
【図１６】
0003618529.tif 000017
【図１７】
0003618529.tif 000018
【図１８】
0003618529.tif 000019
【図１９】
0003618529.tif 000020
【図２０】
0003618529.tif 000021
【図２１】
0003618529.tif 000022
【図２２】
0003618529.tif 000023
【図２３】
0003618529.tif 000024
【図２４】
0003618529.tif 000025
【図２５】
0003618529.tif 000026
【図２６】
0003618529.tif 000027
【図２７】
0003618529.tif 000028
【図２８】
0003618529.tif 000029
【図２９】
0003618529.tif 000030
【図３０】
0003618529.tif 000031
【図３１】
0003618529.tif 000032
【図３２】
0003618529.tif 000033
【図３３】
0003618529.tif 000034
【図３４】
0003618529.tif 000035
【図３５】
0003618529.tif 000036
【図３６】
0003618529.tif 000037
【図３７】
0003618529.tif 000038
【図３８】
0003618529.tif 000039
【図３９】
0003618529.tif 000040