JP3618529B2 - ディスクアレイ装置 - Google Patents

ディスクアレイ装置 Download PDF

Info

Publication number
JP3618529B2
JP3618529B2 JP30223197A JP30223197A JP3618529B2 JP 3618529 B2 JP3618529 B2 JP 3618529B2 JP 30223197 A JP30223197 A JP 30223197A JP 30223197 A JP30223197 A JP 30223197A JP 3618529 B2 JP3618529 B2 JP 3618529B2
Authority
JP
Japan
Prior art keywords
data
parity
disk
writing
new
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP30223197A
Other languages
English (en)
Other versions
JPH11143649A (ja
Inventor
帥仁 武田
裕一 太郎田
達彦 町田
沢男 岩谷
圭一 依光
早苗 鎌倉
悟史 矢澤
拓弥 栗原
康良 菅沢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP30223197A priority Critical patent/JP3618529B2/ja
Priority to US09/064,780 priority patent/US6408400B2/en
Priority to EP98303316A priority patent/EP0915420A3/en
Publication of JPH11143649A publication Critical patent/JPH11143649A/ja
Application granted granted Critical
Publication of JP3618529B2 publication Critical patent/JP3618529B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems

Description

【0001】
【発明の属する技術分野】
本発明は、複数のディスク装置を並列的にアクセスしてデータ入出力処理を行うようにしたディスクアレイ装置に関し、特に書込み途中の電源ダウンなどにより書込処理が中断された時に保持したデータからデータ書込みの復旧処理を行うことによってデータの整合性を保持するようにされたディスクアレイ装置に関する。
【0002】
計算機システムの外部記憶装置として、記録の不揮発性、大容量性、データ転送の高速性等の特長を持つ磁気ディスク装置、光ディスク装置等のディスク装置が広く用いられている。ディスク装置に対する要求は、高速データ転送、高信頼性、大容量性、低価格である。これらの要求を満たすものとして、ディスクアレイ装置が注目されてきている。ディスクアレイ装置とは、小型ディスク装置を複数台並べ、これらに分散してデータを記録して、並列的にアクセスする装置である。
【0003】
ディスクアレイ装置で並列的に複数のディスク装置にデータ転送を行えば、一台のディスク装置の場合と比べて、ディスクの台数倍の高速データ転送が可能になる。また、データに加えて、パリティデータなどの冗長な情報を付け加えて記録しておくことで、ディスク装置の故障等を原因とするデータエラーの検出と訂正が可能となり、ディスク装置の内容を二重化して記録する方法と同程度の高信頼性を、二重化より低価格で実現することができる。
【0004】
ディスクアレイ装置は、安価・高速・高信頼性の三つを同時に満たす新たな記憶媒体として社会に認識されている。それが故に、この三つの機能の内、どれ一つをも欠くことが許されない。そして、この三つの機能の内、最も重要でかつ最も維持が困難なものが高信頼性である。なぜならば、ディスクアレイを構成する単体ディスク自体には安価なものが使用されており、単体での信頼性は元来それほど要求されていないものだからである。従って、ディスクアレイ装置を実現するにあたっては、その高信頼性の維持にこそ最も注力する必要が有り、本発明はディスクアレイ装置に関するものであるからこそ、特に重要となるものである。
【0005】
【従来の技術】
従来、カルフォルニア大学バークレイ校のデビット・A・パターソン(David A. Patterson)らは、高速に大量のデータを多くのディスクにアクセスし、ディスク故障時におけるデータの冗長性を実現するディスクアレイ装置について、レベル1からレベル5までに分類付けを行って評価した論文を発表している(ACM SIGMOD Conferance, Chicago, Illinois, June 1−3, 1988 P109−P116)。
【0006】
このデビット・A・パターソンらが提案したディスクアレイ装置を分類するレベル1〜5は、RAID(Redundant Arrays of Inexpensive Disks)1〜5と略称される。RAID1〜5を簡単に説明するとつぎのようになる。
【0007】
[RAID0]
図32はデータの冗長性をもたないディスクアレイ装置を示したもので、デビット・A・パターソンらの分類には含まれていないが、これを仮にRAID0と呼ぶ。RAID0のディスクアレイ装置では、データA〜Iに示すように、ディスクアレイ制御装置10はホストコンピュータ18からの入出力要求に基づきデータをディスク装置32−1〜32−3のそれぞれに分散させているだけであり、ディスク故障時におけるデータの冗長性はない。
【0008】
[RAID1]
RAID1のディスクアレイ装置は、図33に示すように、ディスク装置32−1に格納したデータA〜CのコピーA´〜C´を格納したミラーディスク装置32−2を備える。RAID1はディスク装置の利用効率が低いが冗長性をもっており、簡単な制御で実現できるため、広く普及している。
【0009】
[RAID2]
RAID2のディスクアレイ装置はデータをビットやバイト単位でストライピング(分割)し、それぞれのディスク装置に並列に読み書きを行う。ストライピングしたデータは全てのディスク装置で物理的に同じセクタに記録する。エラー訂正コードとしてはデータから生成したハミングコードを使用する。データ用ディスク装置の他にハミングコーを記録するためのディスク装置を持ち、ハミングコーから故障したディスク装置を特定して、データを復元する。このようにハミングコードによる冗長性を備えることでディスク装置が故障しても正しいデータを確保できるが、ディスク装置の利用効率が悪いために実用化されていない。
【0010】
[RAID3]
RAID3のディスクアレイ装置は、図34に示す構成をもつ。即ち、図35に示すように例えばデータa,b,cをビットまたはセクタ単位にデータa1〜a3,b1〜b3,c1〜c3に分割し、さらにデータa1〜a3からパリティP1を計算し、データb1〜b3からパリティP2を計算し、データc1〜c3からパリティP3を計算し、図34のディスク装置32−1〜32−4を同時並列的にアクセスして書き込む。
【0011】
RAID3では、データの冗長性はパリティにより保持される。また分割したデータの並列処理によりデータの書込み時間は短縮できる。しかし、1回の書込みまたは読出しのアクセスで、全てのディスク装置32−1〜32−4の並列的なシーク動作を必要とする。このため大量のデータを連続して扱う場合には有効であるが、少量のデータをランダムにアクセスするトランザクション処理のような場合には、データ転送の高速性が生かせず、効率が低下する。
【0012】
[RAID4]
RAID4のディスクアレイ装置は、図35に示すように、1つのデータをセクタ単位に分割して同じディスク装置に書き込む。例えばディスク装置32−1をみると、データaをセクタデータa1〜a4に分割して書き込んでいる。パリティは固定的に決めたディスク装置32−4に格納している。ここでデータa1,b1,c1からパリティP1が計算され、データa2,b2,c2からパリティP2が計算され、データa3,b3,c3からパリティP3が計算され、データa4,b4,c4からパリティP4が計算されている。
【0013】
データ読出しは、ディスク装置32−1〜32−3に対して並列して読み出しできる。データa〜bの読出しは、データaを例にとると、ディスク装置32−1のセクタ0〜3をアクセスしてセクタデー夕a1〜a4を順次読み出して合成する。データ書込みは、書き込み前のデータとパリティを読み出してから新パリティを計算して書き込むため、1度の書き込みについて、合計4回のアクセスが必要になる。
【0014】
例えば、ディスク装置32−1のセクタデータa1を更新(書替え)する場合には、更新場所の旧データ(a1)old および対応するディスク装置32−4の旧パリテイ(P1)old を読出し、新データ(a1)new と整合性のとれた新パリティ(P1)new を求めて書き込む動作を、更新のためのデータ書込み以外にも必要とする。
【0015】
また書込みの際に必ずパリティ用のディスク装置32−4へのアクセスが起きるため、複数のディスク装置の書込みを同時に実行できない。例えばディスク装置32−1のデータa1の書込みとディスク装置32−2のデータb2の同時書込みを行なおうとしても、同じディスク装置32−4からパリティP1,P2を読み出して計算後に書き込む必要があるため、同時に書込みはできない。
【0016】
このようにRAID4の定義は行われているが、メリットが少ないため現在のところ実用化の動きは少ない。
【0017】
[RAID5]
RAID5のディスクアレイ装置は、パリティ用のディスク装置を固定しないことで、並列の読書きを可能にしている。即ち、図37に示すように、セクタごとにパリティの置かれるディスク装置が異なっている。ここでデータa1,b1,c1からパリティP1が計算され、データa2,b2,d2からパリティP2が計算され、データa3,c3,d3からパリティP3が計算され、データb4,c4,d4からパリティP4が計算されている。
【0018】
並列の読み書きについては、例えばディスク装置32−1のセクタ0のデータa1とディスク装置32−2のセクタ1のデータb2が、パリティP1,P2が異なるディスク装置32−4,32−3に置かれているため重複せず、同時に読み書きができる。尚、書込み時に合計4回のアクセスを必要とするオーバーヘッドはRAID4と同じである。
【0019】
このようにRAID5は、非同期に複数のディスク装置にアクセスして、リード/ライトを実行できるため、少量データをランダムにアクセスするトランザクション処理に向いている。
【0020】
しかしながら、上述した従来のディスクアレイ装置にあっては、ディスク装置に対するデータ書込みの途中で何らかの原因によって電源の供給が途絶えた場合、RAID1〜RAID3迄のディスクアレイ装置では、電源復旧後に再び同じ書込作業を始めから行うことができたのに対し、RAID4およびRAID5のディスクアレイ装置では、つぎの理由により電源復旧後に再び同じ書込作業を始めから行うことが許されない。
【0021】
RAID4およびRAID5のデータ書込み時には、つぎの(1)式により複数のディスク装置内のデータの排他的論理和(排他的論理和記号を(+)で表す)を取ってパリティとし、パリティ用のディスク装置に保持する。
データa(+)データb(+)・・・=パリティP (1)
【0022】
データとパリティの格納場所は、RAID4では図36のように特定のディスク装置32−1〜32−4に固定している。これに対しRAID5では、図37のようにパリティをディスク装置32−1〜32−4に分散させて、パリティ読み書き動作による特定のディスク装置へのアクセスの集中を解消している。
【0023】
これらのRAID4およびRAID5のデータ読出し時は、ディスク装置32−1〜32−4内のデータが書き換えられないので、パリティの整合性は保持されるが、書込み時にはパリティもデータに合わせて変更する必要がある。
【0024】
例えばディスク装置32−1内の1つの旧データ(a1)old を新データ(a1)new に書き換えたとき、パリティP1の整合性を取るにはつぎの(2)式のような計算を行い、パリティを更新することでディスク装置のデータ全体のパリティの整合性を保つことができる。
旧データ(+)旧パリティ(+)新データ=新パリティ (2)
【0025】
この(2)式から分かるように、データ書込処理では、ディスク装置内の旧データおよび旧パリティを先ず読み出す必要があり、この後に新データの書込みと、新パリティの生成および書込みを行う。
【0026】
ここで、RAID5でのデータ書換方法について、図38を参照しながら詳細に説明する。図38は、データ書換手順を説明するための模式図であり、同図では、5つのディスク装置(デバイス0,1,2,3,4)32−1,32−2,32−3,32−4,32−5に、それらディスク装置32−1〜32−5を制御するアレイコントローラ50が接続されており、そのアレイコントローラ50に、アレイコントローラ50を制御する制御装置10を介してホストコンピュータ18が接続された構成となっている。
【0027】
例えば、ディスク装置32−1のデータ(D0)を書き替える際には、まず、制御装置10は、ライトコマンドをアレイコントローラ50に発行し、書込みデータ(D0new )40をアレイコントローラ50に転送する。アレイコントローラ50は制御装置10からライトコマンドを受け取り、ディスク装置32−1から旧データ(D0old )40−1を読み出す。また、アレイコントローラ50は、ディスク装置32−5から旧パリティ(Dpold )48を読み出す。
【0028】
その後、アレイコントローラ50は、ディスク装置32−1に新データ(D0new )40を書き込む。ついで、アレイコントローラ50は、論路回路12により旧パリティ(Dpold )48と旧データ(D0old )40−1と新データ(D0new )40の排他的論理和(EOR)演算を行って新パリティ(Dpnew )48−1を生成し、それをディスク装置32−5に書き込む。そして、アレイコントローラ50は、書込みが正常に終了したことを制御装置10に通知し、制御装置10がこれを確認してデータの更新が終了する。
【0029】
RAID4およびRAID5のデータ書込みの際に、新データあるいは新パリティの書き込み中に電源が切断されると、実際どこまでデータが正常に書かれているかが認識できなくなり、パリティの整合性が失われる。この状態で、電源復旧時に再び同じデータ書込処理を行うと、パリティの整合性の取れていないディスク装置から旧データ、旧パリティを読み込むので、整合性の取れていない新パリティを生成して書込作業を終了してしまうという問題があった。
【0030】
そこで、本発明者らは、RAID4およびRAID5のディスクアレイ装置において、新データあるいは新パリティの書き込み中に電源が切断されても、電源復旧後に中断したデータ書込処理を途中から再開して完了できるようにしたディスクアレイ装置について先に提案した(特開平6−119126号公報)。この先願発明に係るディスクアレイ装置を図39に示す。
【0031】
このディスクアレイ装置は、電源ダウンに備え、不揮発性メモリ34に、書込手段60およびパリティ更新手段70の処理段階を示す処理段階データ38および上位装置18から転送された新データ40を少なくとも格納しておき、電源投入時に、復旧手段80が、不揮発性メモリ34の処理段階データ38を参照して書込処理が中断されていた場合には、不揮発性メモリ34に保持されている新データ40を用いて復旧処理を行うようにしたものである。
【0032】
【発明が解決しようとする課題】
しかしながら、その後の我々の研究により、上記特開平6−119126号の発明においては、複数のディスク装置のうちの1つが故障状態にある場合には、復旧処理を行うことができないという問題点のあることが明らかとなった。すなわち、図38に示す構成において、例えばディスク装置32−2が故障している場合に、新データ(D0new )または新パリティ(Dpnew )の書込み中に電源が遮断されて書込みが中断されると、ディスク装置32−1のデータ(D0)とディスク装置32−5のパリティ(Dp)が破壊されるだけでなく、故障したディスク装置32−2の、同一パリティグループを構成するデータストライプ中のデータ(D1)を再構築することができず、データの喪失となってしまう。
【0033】
また、複数のアレイコントローラを有するRAID5のディスクアレイ装置に対して、上記特開平6−119126号の発明を適用することが考えられる。すなわち、複数のアレイコントローラを有するディスクアレイ装置に不揮発性メモリを設け、その不揮発性メモリに新データおよび処理段階データを記憶させておき、電源断等によりデータの書込処理が正常に終了しなかった場合に、それらのデータを用いて復旧処理を行う。
【0034】
しかし、独立した電源で駆動される複数のアレイコントローラの立ち上がりには、時間的なずれが生じる。そのため、複数のアレイコントローラのデータ書込処理が正常に終了しなかった後に電源が投入された際に、あるアレイコントローラによりデータ修復に続いてデータ更新がなされたパリティグループのデータに対して、別のアレイコントローラが不揮発性メモリに格納されていたデータで復旧処理を行ってしまい、最新のデータが消失するという不都合が生じる。
【0035】
本発明は、上記問題点を解決するためになされたもので、データ書込みの処理中に電源ダウンが起きても、電源復旧後に中断したデータ書込処理を途中から再開して完了できるようにしたディスクアレイ装置、特に複数のディスク装置のうちの1つが故障した状態であっても、データの復旧を行うことができるディスクアレイ装置、またはデータ復旧が可能な複数のアレイコントローラを有するディスクアレイ装置を提供することを目的とする。
【0036】
【課題を解決するための手段】
図1は本発明に係るディスクアレイ装置の原理説明図である。同図に示すように、ディスクアレイ装置は、RAID4またはRAID5に属するもので、制御装置10、アレイコントローラ50および複数台(図1の例では例えば5台)のディスク装置32−1,32−2,32−3,32−4,32−5を備えている。
【0037】
制御装置10には、チャネルインターフェースアダプタ16、不揮発性メモリ34、特別書込実行手段110およびデータ再現手段120が設けられている。ディスクアレイ装置には、チャネルインターフェースアダプタ16を介してホストコンピュータ等の上位装置18が接続される。不揮発性メモリ34は、上位装置から転送された新データを格納する。
【0038】
特別書込実行手段110は、書込処理が一旦中断された後に再開された時に、不揮発性メモリ34に新データが格納されており、かつ新データの書込みを指定されたディスク装置(例えば32−1)およびパリティ用ディスク装置(例えば32−5)以外の第3のディスク装置(例えば32−2)からデータを正常に読み出すことができないためにパリティの再生が不可能である場合に、不揮発性メモリ34に格納されている新データを用いて新パリティを生成することにより復旧処理を行い、新データ、新パリティおよび他のデータを特別な書込処理によってディスク装置に書き込むようになっている。
【0039】
すなわち、特別書込実行手段110はデータ書込手段113およびパリティ生成手段116を備えており、特別な書込処理の際にデータ書込手段113は、予め設定されてなる規定値、好ましくは不揮発性メモリ34に格納されている新データを該当するディスク装置(例えば32−1)の指定された書込位置に上書きするようになっている。
【0040】
また、特別な書込処理の際にパリティ生成手段116は、新データの書込みを指定されたディスク装置(例えば32−1)およびパリティ用ディスク装置(例えば32−5)の、新データのディスク書込位置に対応する位置に格納されたデータおよびパリティと、不揮発性メモリ34に格納されている新データとを用いて新パリティを生成し、それをパリティ用ディスク装置(例えば32−5)に書き込むようになっている。
【0041】
データ再現手段120は、復旧処理時に正常にデータを読み出せない第3のディスク装置(例えば32−2)がある場合に、特別書込実行手段110に特別な書込処理モードへの移行を要求する通知を行うようになっている。
【0042】
アレイコントローラ50には、複数(図1の例では例えば5個)のデバイスインターフェースアダプタ54−1,54−2,54−3,54−4,54−5が設けられている。各デバイスインターフェースアダプタ54−1,54−2,54−3,54−4,54−5にはデータエラー検出手段154−1,154−2,154−3,154−4,154−5が設けられている。データエラー検出手段154−1,154−2,154−3,154−4,154−5は、それぞれ対応するディスク装置32−1,32−2,32−3,32−4,32−5からデータを読み出す際にエラーが生じたことを検出し、データ再現手段120に通知するようになっている。
【0043】
以上のように構成されたディスクアレイ装置においては、次のようにして復旧処理が行われる。新データの書込処理が電源断等により中断された後、電源再投入等により書込処理が再開された時に、まずパリティ用ディスク装置(例えば32−5)の、新データのディスク書込位置に対応する位置に格納されたパリティが読み出される。その際、先の書込処理の中断によりデータとパリティの整合がとれていないため、データエラー検出手段(例えば154−5)によりリードエラーであることが検出される。
【0044】
そして、データエラー検出手段(例えば154−5)はデータ再現手段120にエラーの発生を通知する。その通知を受け取るとデータ再現手段120は、パリティデータを再現するため、リードエラーの発生したパリティグループに属する、新データの書込対象ディスク装置(例えば32−1)およびパリティ用ディスク装置(例えば32−5)以外の残りのディスク装置(例えば32−2,32−3,32−4)のデータを読み込む。
【0045】
その際、データエラー検出手段(例えば154−2)により第3のディスク装置(例えば32−2)からのデータ読出しに対してさらにリードエラーが検出された場合には、そのデータエラー検出手段はデータ再現手段120にエラーの発生を通知する。それによってデータ再現手段120は特別書込実行手段110に特別な書込処理モードへの移行を要求する通知を行う。
【0046】
特別書込実行手段110が特別な書込処理モードへの移行要求通知を受け取ると、データ書込手段113は、予め設定されてなる規定値、好ましくは不揮発性メモリ34に格納されている新データを該当するディスク装置(例えば32−1)の指定された書込位置に上書きする。
【0047】
また、パリティ生成手段116は、新データの書込み対象ディスク装置(例えば32−1)およびパリティ用ディスク装置(例えば32−5)の、指定された書込位置に対応する位置に格納されたデータおよびパリティと、不揮発性メモリ34に格納されている新データとを用いて新パリティを生成し、それをパリティ用ディスク装置(例えば32−5)に書き込む。そして、特別な書込処理モードを終了する。
【0048】
なお、データ書込手段113が、予め設定されてなる規定値を該当するディスク装置(例えば32−1)の指定された書込位置に上書きした場合(例えば不揮発性メモリ34に新データが格納されていないような場合)には、メモリ内にフラグを立てるなどして規定値を上書きしたことを記憶しておき、そのデータに対してリードの要求があった場合には擬似的にリードエラーを通知するようにしておく。
【0049】
従って、請求項1に係るディスクアレイ装置は、指定されたディスク装置の書込位置に格納されている旧データを読み出した後に上位装置から転送された新データを該書込位置に書き込むとともに、パリティ用ディスク装置の、前記新データのディスク書込位置に対応する位置に格納された旧パリティ、前記旧データおよび前記新データに基づいて生成した新パリティを、前記旧パリティのディスク格納位置に書き込み、書込処理が中断された場合には、該中断された書込処理が再開された時に、前記新データの書き込みを指定された第1のディスク装置およびパリティ用の第2のディスク装置を除く全ディスク装置の前記新データのディスク書込位置に対応する位置に格納された他のデータと前記新データとに基づいて生成した新パリティを前記旧パリティのディスク格納位置に書き込むディスクアレイ装置において、上位装置から書込処理を命令された際に、故障状態のディスク装置がある場合にディスク装置に対して行う同時並列的な書込動作が実行される前に、ディスク装置に同時並列的に書き込まれる前記新データ、前記第1のディスク装置および前記第2のディスク装置を除く故障状態でない全ディスク装置の前記他のデータ、および、前記旧データと前記新データと前記旧パリティとから求められた新パリティを格納する不揮発性メモリと、書込処理が中断された後、該中断された書込処理が再開された時に、故障状態のディスク装置がある場合に、前記不揮発性メモリに格納された前記新データ、前記他のデータおよび前記新パリティを対応するディスク装置に同時並列的に書き込むことにより復旧処理を行う特別書込実行手段と、を具備することを特徴とする。
【0050】
請求項1に係る発明によれば、故障状態のディスク装置がある場合にディスク装置に対して行う同時並列的な書込動作が実行される前に、新データ(D0 new )、他のデータ(D2,D3)、および、旧データと新データと旧パリティとから求められた新パリティ(Dp new )が不揮発性メモリに格納され、書込処理が中断され場合には、中断された書込処理が再開された時に、不揮発性メモリに格納された新データ(D0 new )、他のデータ(D2,D3)および新パリティ(Dp new )を対応するディスク装置に同時並列的に書き込むことによって、故障しているディスク装置がある場合にも復旧処理が行われる。
【0053】
請求項に係るディスクアレイ装置は、請求項1に記載の発明において、前記不揮発性メモリには、上位装置からの書込処理命令を受け取ってからディスク装置に対する書込動作が正常に終了するまでの間、書込処理中を表す書込中フラグおよび書込処理の進行状況を示す管理情報が格納されることを特徴とする。
【0054】
請求項に係る発明によれば、不揮発性メモリに、ディスク装置に対する書込動作が正常に終了したか否かを識別する書込中フラグおよび書込処理の段階を示すステータスが格納されるため、書込処理が正常に終了しなかった後に、再び電源を投入した時に、書込中フラグを参照することによって正常に書き込まれなかったデータが残っているか否かが一目瞭然となるとともに、ステータスを参照することによって書込処理が中断した所から復旧処理を継続して行うことができるので、復旧処理が迅速に行われる。
【0055】
請求項に係るディスクアレイ装置は、請求項1または2に記載の発明において、ディスク装置に対してデータの書込動作および読出動作を実行するアレイコントローラと、該アレイコントローラを制御する制御装置を具備し、前記制御装置が前記不揮発性メモリを具備することを特徴とする。
【0056】
請求項に係る発明によれば、ディスク装置に対してデータの書込動作および読出動作を実行するアレイコントローラと、アレイコントローラを制御する制御装置を具備し、制御装置が不揮発性メモリを具備することによって、故障したディスク装置がある場合にも制御装置が新パリティを生成することができる。
【0057】
請求項に係るディスクアレイ装置は、請求項1または2に記載の発明において、ディスク装置に対してデータの書込動作および読出動作を実行するアレイコントローラと、該アレイコントローラを制御する制御装置を具備し、前記アレイコントローラが前記不揮発性メモリを具備することを特徴とする。
【0058】
請求項に係る発明によれば、ディスク装置に対してデータの書込動作および読出動作を実行するアレイコントローラと、アレイコントローラを制御する制御装置を具備し、アレイコントローラが不揮発性メモリを具備することによって、故障したディスク装置がある場合にもアレイコントローラが新パリティを生成することができる。
【0070】
【発明の実施の形態】
以下に、本発明に係るディスクアレイ装置の実施の形態について図2〜図31を参照しつつ詳細に説明する。
【0071】
(実施の形態1)
図2は、本発明によるディスクアレイ装置の実施の形態1を示す構成図である。図2において、制御装置10には、マイクロプロセッサ(以下、MPUと称する)12が設けられている。このMPU12の内部バスに、制御プログラムや固定データを格納したROM20、RAMを用いた揮発性メモリ22、キャッシュファンクションエンジン24を介して設けられたキャッシュメモリ26、バックアップ電源36により電源ダウン時にも動作可能な不揮発性メモリ34、内部リソースや内部ジョブを管理するリソースマネージャモジュール13、およびハードウェア環境を管理するサービスアダプタ14が接続されている。
【0072】
また、制御装置10にはチャネルインターフェースアダプタ16が設けられており、そのアダプタ16を介して制御装置10に、上位装置として機能するホストコンピュータ18が接続されている。さらに、制御装置10にはデバイスインターフェースアダプタ17が設けられており、そのアダプタ17を介して制御装置10に、複数台(図2の例では例えば5台)のディスク装置32−1,32−2,32−3,32−4,32−5を管理するアレイコントローラ50が接続されている。
【0073】
アレイコントローラ50には、制御装置10のデバイスインターフェースアダプタ17に接続される上位インターフェース52、および複数台のディスク装置32−1〜32−5を接続する下位インターフェースとなる複数(図2の例では例えば5個)のデバイスインターフェースアダプタ54−1,54−2,54−3,54−4,54−5が設けられている。
【0074】
5台のディスク装置32−1〜32−5のうち、例えば4台がデータ格納用であり、1台がパリティ用である。本発明のディスクアレイ装置にあっては、図36に示したRAID4あるいは図37に示したRAID5と同じ機能を実現することから、RAID4の場合には、例えばディスク装置32−1〜32−4がデータ格納用に使用され、ディスク装置32−5がパリティ用に使用される。一方、RAID5の場合には、例えばディスク装置32−1〜32−5のそれぞれはRAID4の場合と同様、1つのディスク装置に同一のデータ単位をまとめて格納するが、パリティ用のディスク装置は固定されず、セクタに応じてパリティ用のディスク装置が所定の順番に従って切り替わる。
【0075】
図3および図4は、図2の実施の形態1におけるディスクアレイ装置の機能ブロック図であり、図3は1台のディスク装置が故障状態にある場合、図4は故障しているディスク装置がない場合すなわち全ディスク装置が稼動状態にある場合をそれぞれ表している。
【0076】
図3および図4において、複数台(図示例では例えば5台)のディスク装置32−1〜32−5のうち、例えばディスク装置32−5がパリティ用として用いられているとする。勿論、ディスク装置32−5はRAID4であれば固定的にパリティ用として定められており、RAID5については、現時点のデータアクセスにおいてパリティ用として位置付けられていることになる。
【0077】
1台のディスク装置32−2が故障している状態で、指定されたディスク装置32−1のデータ(D0)を新データ(D0new )に更新する際には、図3に示すように、制御装置10の不揮発性メモリ34には、ホストコンピュータ18から転送された新データ(D0new )40、書込処理の進行状況等を示す管理テーブル41、書込み中を表す書込中フラグ44、ディスク装置32−1から読み出された旧データ(D0old )40−1、故障していない他のディスク装置54−3,54−4から読み出されたデータ(D2,D3)46,47、パリティ用ディスク装置32−5から読み出された旧パリティ(Dpold )48、および旧データ(D0old )40−1と新データ(D0new )40と旧パリティ(Dpold )48を排他的論理和(EOR)演算することにより求められた新パリティ(Dpnew )48−1が記憶される。
【0078】
新パリティ(Dpnew )48−1の生成処理は特別書込実行手段110内のパリティ生成手段116(図1参照)により実行される。なお、特別書込実行手段110は図2に示すMPU12により実現される。
【0079】
そして、データロスとなるのを防ぐために、特別なデータ書込処理を行う。すなわち、不揮発性メモリ34に記憶された新データ(D0new )40、他のデータ(D2,D3)46,47および新パリティ(Dpnew )48−1をアレイコントローラ50のデバイスインターフェースアダプタ54−1,54−3,54−4,54−5に送り格納する。
【0080】
デバイスインターフェースアダプタ54−1,54−3,54−4,54−5に格納された新データ(D0new )40−2、他のデータ(D2,D3)46−1,47−1および新パリティ(Dpnew )48−2をディスク装置32−1,32−3,32−4,32−5にRAID3方式により同時並列的に書き込む。書込が指定されたディスク装置32−1に対する新データ(D0new )の上書き処理は特別書込実行手段110内のデータ書込手段113により実行される。
【0081】
管理テーブル41には、書込処理の段階(ステータス)42、および複数のアレイコントローラが設けられている場合にその書込処理が自系の書込処理であるか他系の書込処理であるかを識別する自系フラグ43が格納される。
【0082】
排他的論理和(EOR)演算は、例えばMPU12により行われる。
【0083】
正常に終了しなかった書込処理の復旧を行う場合には、不揮発性メモリ34に記憶されている新データ(D0new )40、他のデータ(D2,D3)46,47および新パリティ(Dpnew )48−1を、アレイコントローラ50のデバイスインターフェースアダプタ54−1,54−3,54−4,54−5を介して、ディスク装置32−1,32−3,32−4,32−5にRAID3方式により同時並列的に書き込む。
【0084】
全ディスク装置32−1,32−2,32−3,32−4,32−5が稼動している状態で、指定されたディスク装置32−1のデータ(D0)を新データ(D0new )に更新する際には、図4に示すように、制御装置10の不揮発性メモリ34には、ホストコンピュータ18から転送された新データ(D0new )40、書込処理の進行状況等を示す管理テーブル41、および書込み中を表す書込中フラグ44が記憶される。
【0085】
また、制御装置10の揮発性メモリ22には、ディスク装置32−1から読み出された旧データ(D0old )40−1、パリティ用ディスク装置32−5から読み出された旧パリティ(Dpold )48が記憶される。
【0086】
そして、この場合には、通常のデータ書込処理を行う。すなわち、不揮発性メモリ34に記憶された新データ(D0new )40は、アレイコントローラ50のデバイスインターフェースアダプタ54−1に送られて格納され、その格納された新データ(D0new )40−2がディスク装置32−1に書き込まれる。
【0087】
また、不揮発性メモリ34に記憶された新データ(D0new )40と揮発性メモリ22に記憶された旧データ(D0old )40−1および旧パリティ(Dpold )48とに基づいて、MPU12において排他的論理和(EOR)演算が行われ、新パリティ(Dpnew )48−1が求められ、制御装置10の揮発性メモリ22に記憶される。この新パリティ(Dpnew )48−1はアレイコントローラ50のデバイスインターフェースアダプタ54−5に格納され、その格納された新パリティ(Dpnew )48−2がディスク装置32−5に書き込まれる。
【0088】
正常に終了しなかった書込処理の復旧を行う場合には、不揮発性メモリ34に記憶されている新データ(D0new )40は、アレイコントローラ50のデバイスインターフェースアダプタ54−1を介してディスク装置32−1に書き込まれる。また、先に書込処理が正常に終了しなかったことにより、旧データ(D0old )および旧パリティ(Dpold )は不定となっているため、新パリティ(Dpnew )を生成するために、ディスク装置32−2,32−3,32−4からデータ(D1,D2,D3)が読み出され、デバイスインターフェースアダプタ54−2,54−3,54−5に格納される。
【0089】
それら格納されたデータ(D1,D2,D3)45−1,46−1,47−1は、制御装置10の揮発性メモリ22に送られて記憶される。そして、揮発性メモリ22に記憶されたデータ(D1,D2,D3)45,46,47と不揮発性メモリ34に記憶された新データ(D0new )40とに基づいて新パリティ(Dpnew )48−1が求められ、アレイコントローラ50のデバイスインターフェースアダプタ54−5を介してディスク装置32−5に書き込まれる。
【0090】
図5には、不揮発性メモリ34に記憶される管理テーブル41の記憶内容の一例が示されている。同図に示すように、管理テーブル41には、例えば「op−id」、図3および図4におけるステータス42に相当する「ステータス」、図3および図4における自系フラグ43に相当する「自系/他系」および「アドレス」の項目が記憶される。
【0091】
「op−id」は、アレイコントローラ50が書込処理を管理するためのIDであり、「ステータス」は、書込処理がどの段階まで進んだかを示すステータスであり、「自系/他系」は、アレイコントローラ50が複数ある場合に、ステータスに示された処理を行ったコントローラが自系であるか他系であるかを示すフラグであり、「アドレス」は、不揮発性メモリ34に記憶されたデータやパリティの格納場所を示すアドレスである。
【0092】
図6は、図3および図4に示すディスクアレイ装置における全体的な処理動作を示したフローチャートである。図6において、まずディスクアレイ装置の電源が投入されると、ステップS1でイニシャルプログラムルーチン(IPL)に基づく所定のイニシャライズを行った後、ステップS2に進んで電源ダウンがあったか否かのチェックを行う。通常のログオフ操作による電源切断後にログオンによりパワーオンスタートした場合には電源ダウンなしと判定し、ステップS3に進み、ホストコンピュータ18からのコマンド受領を待つ。
【0093】
ステップS3でホストコンピュー夕18からのコマンドを受領すると、ステップS4に進んでそのコマンドの解読を行う。ステップS5でライトアクセスの要求を判別すると、ステップS6に進んでデータ書込およびパリティ更新処理を実行し、一方、リードアクセスの要求を判別すると、ステップS7に進んでデータ続出処理を実行する。
【0094】
一方、パワーオンスタートした際に、ステップS2で電源ダウンありと判別した場合には、ステップS8で復旧処理を行ってからステップS3以降の通常処理に入る。この一連の処理を行うためのプログラムは制御装置10のROM20(図2参照)に記憶されており、そのプログラムはMPU12(図2参照)によって実行される。
【0095】
図7は、図6のステップS6に示したデータ書込およびパリティ更新処理の詳細を示したフローチャートである。図7において、ホストコンピュータ18からのライトコマンドを受け取ると、まずステップS61で制御装置10の不揮発性メモリ34に書込中フラグ44を立てる。それからステップS62へ進み、全ディスク装置32−1,32−2,32−3,32−4,32−5の稼動状態をチェックする。
【0096】
故障状態のディスク装置(図3では、32−2のディスク装置)がある場合(NFT)には、ステップS63へ進んで特別なデータ書込処理を行い、一方、全ディスク装置32−1,32−2,32−3,32−4,32−5が稼動している場合(FT)には、ステップS67へ進んで通常のデータ書込処理を行う。
【0097】
ステップS63またはステップS67でデータの書込みが終了したら、ステップS64で制御装置10はアレイコントローラ50から書込みが正常に終了した旨の通知を受け取り、ステップS65で書込中フラグ44をおろし、ステップS66で正常に書込処理が終了したことを確認する。これでデータ書込およびパリティ更新処理が終了する。
【0098】
図8は、図7のステップS63に示した特別なデータ書込処理の詳細を示したフローチャートである。なお、この図8に示す処理内容は、図3に示した機能ブロック図に対応している。図8において、ホストコンピュータ18からのライトコマンドに伴ってディスク装置に書き込む新データが転送されてくることから、ステップS631でホストコンピュータ18からの新データ(D0new )40を制御装置10の不揮発性メモリ34に格納する。
【0099】
続いてステップS632で故障しているディスク装置(図3では、32−2の装置)を除く全ディスク装置32−1,32−3,32−4,32−5から、デバイスインターフェースアダプタ54−1,54−3,54−4,54−5からの指示により、旧データ(D0old )40−3、他のデータ(D2,D3)46−1,47−1および旧パリティ(Dpold )48−3を読み取り、デバイスインターフェースアダプタ54−1,54−3,54−4,54−5内に格納する。格納された旧データ(D0old )40−3、他のデータ(D2,D3)46−1,47−1および旧パリティ(Dpold )48−3を、ステップS633で制御装置10に転送して不揮発性メモリ34内に格納する。
【0100】
続いてステップS634に進み、不揮発性メモリに記憶された旧データ(D0old )40−1と旧パリティ(Dpold )48と新データ(D0new )40との排他的論理和から新パリティ(Dpnew )48−1を生成し、それをステップS635で不揮発性メモリ34に格納する。
【0101】
続いてステップS636に進み、不揮発性メモリ34に格納された新データ(D0new )40と他のデータ(D2,D3)46,47と新パリティ(Dpnew )48−1をデバイスインターフェースアダプタ54−1,54−3,54−4,54−5に転送して格納し、さらにステップS637で新データ(D0new )40−2と他のデータ(D2,D3)46−1,47−1と新パリティ(Dpnew )48−2をディスク装置32−1,32−3,32−4,32−5に転送し、ステップS638で新データ(D0new )40−2と他のデータ(D2,D3)46−1,47−1と新パリティ(Dpnew )48−2をディスク装置32−1,32−3,32−4,32−5の、新データ書込予定領域と同一領域にRAID3の方式により同時並列的に書き込む。これで特別なデータ書込処理が終了する。
【0102】
図9は、図7のステップS67に示した通常のデータ書込処理の詳細を示したフローチャートである。なお、この図9に示す処理内容は、図4に示した機能ブロック図に対応している。図9において、まずステップS671でホストコンピュータ18からライトコマンドに伴って転送されてきた新データ(D0new )40を制御装置10の不揮発性メモリ34に格納する。続いてステップS672で新データ(D0new )40を、例えばディスク装置32−1が書込対象として指定されたとすると、デバイスインターフェースアダプタ54−1に転送して格納する。
【0103】
続いてステップS673でデバイスインターフェースアダプタ54−1からの指示により、ディスク装置32−1の新データ書込予定領域の内容を旧データ(D0old )40−3として読み取り、ステップS674でデバイスインターフェースアダプタ54−1内に格納する。
【0104】
旧データ(D0old )40−3の格納が済むと、ステップS675でデバイスインターフェースアダプタ54−1内の新データ(D0new )40−2をディスク装置32−1に転送し、ステップS676で新データ書込予定領域に新データ(D0new )40−2を書き込む。
【0105】
ついで、ステップS677でパリティ用のディスク装置32−5の、ディスク装置32−1における新データ書込予定領域と同一領域の内容を旧パリティ(Dpold )48−3として読み取り、ステップS678でその旧パリティ(Dpold )48−3をデバイスインターフェースアダプタ54−5に格納する。
【0106】
続いてステップS679で、デバイスインターフェースアダプタ54−1,54−5に格納された旧データ(D0old )40−3および旧パリティ(Dpold )48−3を制御装置10の揮発性メモリ22に転送して格納し、さらにそれら格納された旧データ(D0old )40−1および旧パリティ(Dpold )48と不揮発性メモリ34に格納された新データ(D0new )40との排他的論理和から新パリティ(Dpnew )48−1を生成し、それを揮発性メモリ22に格納する。
【0107】
続いて、ステップS680に進み、揮発性メモリ22に格納された新パリティ(Dpnew )48−1をデバイスインターフェースアダプ54−5に転送して格納し、さらにステップS681で新パリティ(Dpnew )48−2をディスク装置32−5に転送し、ステップS682で新パリティ(Dpnew )48−2をディスク装置32−5の、ディスク装置32−1における新データの書込領域と同じ領域に書き込む。これで通常のデータ書込処理が終了する。
【0108】
ここで、新パリティ(Dpnew )は、基本的には新データ(D0new ),旧データ(D0old )および旧パリティ(Dpold )の排他的論理和から生成されるものであるが、つぎの(1)〜(3)のように中間パリティを生成してから新パリティ(Dpnew )を生成することもできる。
【0109】
(1)新データ(D0new )と旧デー夕(D0old )の排他的論理和をとって中間パリティを生成し、その中間パリティと旧パリティ(Dpold )との排他的論理和をとって新パリティ(Dpnew )を生成する。即ち、次式の処理を行う。
新データ(+)旧データ=中間パリティ
中間パリティ(+)旧パリティ=新パリティ
【0110】
(2)旧データ(D0old )と旧パリティ(Dpold )の排他的論理和をとって中間パリティを生成し、その中間パリティと新データ(D0new )との排他的論理和をとって新パリティ(Dpnew )を生成する。即ち、次式の処理を行う。
旧データ(+)旧パリティ=中間パリティ
中間パリティ(+)新データ=新パリティ
【0111】
(3)旧パリティ(Dpold )と新データ(D0new )の排他的論理和をとって中間パリティを生成し、その中間パリティと旧データ(D0old )との排他的論理和をとって新パリティ(Dpnew )を生成する。即ち、次式の処理を行う。
旧パリティ(+)新データ=中間パリティ
中間パリティ(+)旧データ=新パリティ
なお、生成された中間パリティは、制御装置10の揮発性メモリ22または不揮発性メモリ34に格納される。
【0112】
図10は、図6のステップS8に示した復旧処理の詳細を示したフローチャートである。図6のステップS2で電源ダウンがあったと判定されると、図10に示すように、まずステップS81で制御装置10の不揮発性メモリ34に書込中フラグ44が立っているか否かのチェックを行う。書込中フラグ44が立っていない場合には、電源ダウンの際に書込中のデータまたはパリティがなかったとして、そのまま復旧処理を終了する。
【0113】
ステップS81で書込中フラグ44が立っている場合には、ステップS82へ進み、全ディスク装置32−1,32−2,32−3,32−4,32−5の稼動状態をチェックする。故障状態のディスク装置(図3では、32−2のディスク装置)がある場合(NFT)には、ステップS83へ進んでNFT時の特別な書込動作モードに移行して復旧処理を行い、一方、全ディスク装置32−1,32−2,32−3,32−4,32−5が稼動している場合(FT)には、ステップS86へ進んでFT時の特別な書込動作モードに移行して復旧処理を行う。
【0114】
ステップS83またはステップS86で復旧処理が終了したら、ステップS84へ進み、ホストコンピュータ18は制御装置10に、特別な書込動作モードから通常のモードへ移行する命令をアレイコントローラ50に出すように指示し、それを受けて、制御装置10はアレイコントローラ50に通常のモードへ移行するように指示を出す。そして、ステップS85でアレイコントローラ50はそのコマンドを受け取って通常のモードに移行する。これで復旧処理が終了する。
【0115】
図11は、図10のステップS83に示したNFT時の復旧処理の詳細を示したフローチャートである。なお、この図11に示す処理内容は、図3に示した機能ブロック図に対応している。図11において、まずステップS831で制御装置10はアレイコントローラ50にNFT時の特別な書込動作モードに移行するように指示を出す。アレイコントローラ50は、ステップS832においてそのコマンドを受け取って特別な書込モードに移行する。
【0116】
続いてステップS833で制御装置10の不揮発性メモリ34から新データ(D0new )40と他のデータ(D2,D3)46,47と新パリティ(Dpnew )48−1を読み出し、ステップS834で新データ(D0new )40と他のデータ(D2,D3)46,47と新パリティ(Dpnew )48−1をデバイスインターフェースアダプタ54−1,54−3,54−4,54−5に転送して格納する。
【0117】
さらにステップS835で新データ(D0new )40−2と他のデータ(D2,D3)46−1,47−1と新パリティ(Dpnew )48−2をディスク装置32−1,32−3,32−4,32−5に転送し、ステップS836で新データ(D0new )40−2と他のデータ(D2,D3)46−1,47−1と新パリティ(Dpnew )48−2をディスク装置32−1,32−3,32−4,32−5の、新データ書込予定領域と同一領域にRAID3の方式により同時並列的に書き込む。
【0118】
続いてステップS837で制御装置10はアレイコントローラ50から書込みが正常に終了した旨の通知を受け取り、ステップS838で書込中フラグ44をおろし、ステップS839で正常に書込処理が終了したことを確認する。そして、他の書込中のフラグ44が立っているか否かのチェックを行い、立っている書込中フラグ44がなくなるまで、上記ステップS833〜ステップS839の処理を繰り返し行い、全ての書込中フラグ44がなくなったら、NFT時の復旧処理が終了する。
【0119】
図12は、図10のステップS86に示したFT時の復旧処理の詳細を示したフローチャートである。なお、この図12に示す処理内容は、図4に示した機能ブロック図に対応している。図12において、まずステップS861で制御装置10はアレイコントローラ50にFT時の特別な書込動作モードに移行するように指示を出す。アレイコントローラ50は、ステップS862においてそのコマンドを受け取って特別な書込モードに移行する。
【0120】
続いてステップS863で制御装置10の不揮発性メモリ34から新データ(D0new )40を読み出し、それをデバイスインターフェースアダプタ54−1に転送して格納する。また、ステップS864で、新データ(D0new )を格納するディスク装置32−1およびパリティ用のディスク装置32−5以外のディスク装置32−2,32−3,32−4からデータ(D1,D2,D3)を読み出し、それらデータ(D1,D2,D3)45−1,46−1,47−1をデバイスインターフェースアダプタ54−2,54−3,54−4に格納する。
【0121】
続いてステップS865でデバイスインターフェースアダプタ54−1内の新データ(D0new )40−2をディスク装置32−1に転送し、新データ書込予定領域に新データ(D0new )40−2を書き込む。
【0122】
続いてステップS866で、デバイスインターフェースアダプタ54−2,54−3,54−4に格納されたデータ(D1,D2,D3)45−1,46−1,47−1を制御装置10の揮発性メモリ22に転送して格納し、揮発性メモリ22に格納された(D1,D2,D3)45,46,47と不揮発性メモリ34に格納された新データ(D0new )40との排他的論理和から新パリティ(Dpnew )48−1を生成し、それを揮発性メモリ22に格納する。
【0123】
続いて、ステップS867に進み、揮発性メモリ22に格納された新パリティ(Dpnew )48−1をデバイスインターフェースアダプ54−5に転送して格納し、その格納された新パリティ(Dpnew )48−2をディスク装置32−5に転送してディスク装置32−5の、ディスク装置32−1における新データの書込領域と同じ領域に書き込む。
【0124】
続いてステップS868で制御装置10はアレイコントローラ50から書込みが正常に終了した旨の通知を受け取り、ステップS869で書込中フラグ44をおろし、ステップS870で正常に書込処理が終了したことを確認する。そして、他の書込中のフラグ44が立っているか否かのチェックを行い、立っている書込中フラグ44がなくなるまで、上記ステップS863〜ステップS870の処理を繰り返し行い、全ての書込中フラグ44がなくなったら、FT時の復旧処理が終了する。
【0125】
図13は図6のステップS7に示したデータ読出処理の詳細を示したフローチャートである。図13において、、ホストコンピュータ18からのリードコマンドを解読すると、ステップS71でデータ読出しの対象となったデバイスインターフェースアダプタを介してディスク装置からデータを読み出し、ステップS72でデバイスインターフェースアダプタに格納した後に、ステップS73でホストコンピスータ18にデータ転送を行う。
【0126】
上記実施の形態によれば、制御装置10内に不揮発性メモリ34を設け、データの書込処理時に、故障しているディスク装置がある場合には、その不揮発性メモリ34に、更新するためにホストコンピュータ18から転送されてきた新データ(D0new )40、データ書込処理の進行状況を示すステータス42、書込中フラグ44、故障していないディスク装置から読み出されたデータ、すなわち旧データ(D0old )40−1と旧パリティ(Dpold )48と他のデータ(D2,D3)46,47、および新データ(D0new )40と旧データ(D0old )40−1と旧パリティ(Dpold )48とから生成された新パリティ(Dpnew )48−1を記憶するようにしたため、データおよびパリティの書込動作中に電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、不揮発性メモリ34に格納された新データ(D0new )40と他のデータ(D2,D3)46,47と新パリティ(Dpnew )48−1とをディスク装置に書き込むことによって、容易にデータを復旧することができる。
【0127】
また、上記実施の形態によれば、制御装置10内に不揮発性メモリ34を設け、データの書込処理時に、故障しているディスク装置がない場合には、その不揮発性メモリ34に、更新するためにホストコンピュータ18から転送されてきた新データ(D0new )40、データ書込処理の進行状況を示すステータス42、書込中フラグ44を記憶するようにしたため、データおよびパリティの書込動作中に電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、データ更新されるディスク装置とパリティ用のディスク装置以外のディスク装置から同一パリティグループのデータ(D1,D2,D3)を読み出し、それらデータ(D1,D2,D3)と不揮発性メモリ34に格納された新データ(D0new )40とから新パリティ(Dpnew )48−1を生成し、その新パリティ(Dpnew )48−1と不揮発性メモリ34に格納された新データ(D0new )40を新たにディスク装置に書き込むことによって、容易にデータを復旧することができる。
【0128】
さらに、上記実施の形態によれば、不揮発性メモリ34に書込中フラグ44が格納されるため、書込処理が正常に終了しなかった後に、再び電源を投入した時に、書込中フラグ44を参照することによって正常に書き込まれなかったデータが残っているか否かが一目瞭然となり、迅速にデータの復旧処理を行うことができる。
【0129】
また、上記実施の形態によれば、不揮発性メモリ34にステータス42が格納されるため、書込処理が正常に終了しなかった後に、再び電源を投入した時に、ステータス42を参照することによって書込処理が中断した所から復旧処理を継続して行うことができ、より迅速にデータの復旧処理を行うことができる。
【0130】
(実施の形態2)
図14は、本発明によるディスクアレイ装置の実施の形態2を示す構成図である。図14に示すディスクアレイ装置が図1に示すディスクアレイ装置と異なるのは、バックアップ電源36により電源ダウン時にも動作可能な不揮発性メモリ34が制御装置10に設けられておらず、その代わりに不揮発性メモリ34とバックアップ電源36がアレイコントローラ50内に設けられている点と、アレイコントローラ50内に揮発性メモリ23と排他的論理和(EOR)演算を行う論理回路37が設けられている点である。その他の構成は上記実施の形態1と同じであるので、図1に示すディスクアレイ装置と同一の構成要素については同一の符号を付して詳細な説明を省略する。
【0131】
図15および図16は、図14の実施の形態2におけるディスクアレイ装置の機能ブロック図であり、図15は1台のディスク装置が故障状態にある場合、図16は故障しているディスク装置がない場合すなわち全ディスク装置が稼動状態にある場合をそれぞれ表している。上記実施の形態1と同様に、図15および図16においては、複数台(図示例では例えば5台)のディスク装置32−1〜32−5のうち、例えばディスク装置32−5がパリティ用として用いられているとする。
【0132】
1台のディスク装置32−2が故障している状態で、指定されたディスク装置32−1のデータ(D0)を新データ(D0new )に更新する際には、図15に示すように、アレイコントローラ50の不揮発性メモリ34には、上記実施の形態1と同様に、新データ(D0new )40、ステータス42および自系フラグ43が格納される管理テーブル41、書込中フラグ44、旧データ(D0old )40−1、他のデータ(D2,D3)46,47、旧パリティ(Dpold )48および新パリティ(Dpnew )48−1が記憶される。
【0133】
新パリティ(Dpnew )48−1は、アレイコントローラ50内に設けられた論理回路37において、旧データ(D0old )40−1と新データ(D0new )40と旧パリティ(Dpold )48を排他的論理和(EOR)演算することにより求められる。
【0134】
そして、この実施の形態2においても、上記実施の形態1と同様に、データの書込処理を行う際には、新データ(D0new )40−2、他のデータ(D2,D3)46−1,47−1および新パリティ(Dpnew )48−2をディスク装置32−1,32−3,32−4,32−5にRAID3方式により同時並列的に書き込む。
【0135】
また、正常に終了しなかった書込処理の復旧を行う場合には、不揮発性メモリ34に記憶されている新データ(D0new )40、他のデータ(D2,D3)46,47および新パリティ(Dpnew )48−1を、デバイスインターフェースアダプタ54−1,54−3,54−4,54−5を介して、ディスク装置32−1,32−3,32−4,32−5にRAID3方式により同時並列的に書き込む。
【0136】
全ディスク装置32−1,32−2,32−3,32−4,32−5が稼動している状態で、指定されたディスク装置32−1のデータ(D0)を新データ(D0new )に更新する際には、図16に示すように、アレイコントローラ50の不揮発性メモリ34に新データ(D0new )40、管理テーブル41および書込中フラグ44が記憶される。また、アレイコントローラ50の揮発性メモリ23には、旧データ(D0old )40−1および旧パリティ(Dpold )48が記憶される。
【0137】
不揮発性メモリ34に記憶された新データ(D0new )40は、デバイスインターフェースアダプタ54−1を介してディスク装置32−1に書き込まれる。また、不揮発性メモリ34に記憶された新データ(D0new )40と揮発性メモリ23に記憶された旧データ(D0old )40−1および旧パリティ(Dpold )48とに基づいて、論理回路37において排他的論理和(EOR)演算が行われ、新パリティ(Dpnew )48−1が求められ、揮発性メモリ23に記憶される。この新パリティ(Dpnew )48−1はデバイスインターフェースアダプタ54−5を介してディスク装置32−5に書き込まれる。
【0138】
正常に終了しなかった書込処理の復旧を行う場合には、不揮発性メモリ34に記憶されている新データ(D0new )40は、デバイスインターフェースアダプタ54−1を介してディスク装置32−1に書き込まれる。また、ディスク装置32−2,32−3,32−4からデータ(D1,D2,D3)が読み出され、揮発性メモリ23に送られて記憶される。
【0139】
そして、揮発性メモリ23に記憶されたデータ(D1,D2,D3)45,46,47と不揮発性メモリ34に記憶された新データ(D0new )40とに基づいて新パリティ(Dpnew )48−1が生成され、デバイスインターフェースアダプタ54−5を介してディスク装置32−5に書き込まれる。
【0140】
図15および図16に示すディスクアレイ装置の処理動作は、図6〜図13に示すフローチャートと同じである。従って、その説明を省略する。
【0141】
図14〜図16に示す実施の形態2によれば、アレイコントローラ50内に不揮発性メモリ34を設け、データの書込処理時に、故障しているディスク装置がある場合には、その不揮発性メモリ34に新データ(D0new )40、ステータス42、書込中フラグ44、旧データ(D0old )40−1と旧パリティ(Dpold )48と他のデータ(D2,D3)46,47、および新パリティ(Dpnew )48−1を記憶するようにしたため、データおよびパリティの書込動作中に電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、不揮発性メモリ34に格納された新データ(D0new )40と他のデータ(D2,D3)46,47と新パリティ(Dpnew )48−1とをディスク装置に書き込むことによって、容易にデータを復旧することができる。
【0142】
また、上記実施の形態2によれば、アレイコントローラ50内に不揮発性メモリ34を設け、データの書込処理時に、故障しているディスク装置がない場合には、その不揮発性メモリ34に新データ(D0new )40、ステータス42および書込中フラグ44を記憶するようにしたため、データおよびパリティの書込動作中に電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、データ更新されるディスク装置とパリティ用のディスク装置以外のディスク装置から同一パリティグループのデータ(D1,D2,D3)を読み出し、それらデータ(D1,D2,D3)と不揮発性メモリ34に格納された新データ(D0new )40とから新パリティ(Dpnew )48−1を生成し、その新パリティ(Dpnew )48−1と新データ(D0new )40を新たにディスク装置に書き込むことによって、容易にデータを復旧することができる。
【0143】
さらに、上記実施の形態2によれば、不揮発性メモリ34に書込中フラグ44が格納されるため、書込処理が正常に終了しなかった後に、再び電源を投入した時に、書込中フラグ44を参照することによって正常に書き込まれなかったデータが残っているか否かが一目瞭然となり、迅速にデータの復旧処理を行うことができる。
【0144】
また、上記実施の形態2によれば、不揮発性メモリ34にステータス42が格納されるため、書込処理が正常に終了しなかった後に、再び電源を投入した時に、ステータス42を参照することによって書込処理が中断した所から復旧処理を継続して行うことができ、より迅速にデータの復旧処理を行うことができる。
【0145】
(実施の形態3)
図17は、本発明によるディスクアレイ装置の実施の形態3を示す構成図である。この実施の形態3のディスクアレイ装置では、図17に示すように、ホストコンピュータ18を接続してなる制御装置10には、独立した電源62,64により駆動される2つのアレイコントローラA50およびアレイコントローラB51が接続されており、それらアレイコントローラA50とアレイコントローラB51とにより例えば5台のディスク装置32−1,32−2,32−3,32−4,32−5が制御されている。なお、図1に示すディスクアレイ装置と同一の構成要素については同一の符号を付して詳細な説明を省略する。
【0146】
制御装置10内には、実施の形態1と同様にMPU12、ROM20、揮発性メモリ22、キャッシュファンクションエンジン24、キャッシュメモリ26、不揮発性メモリ34、バックアップ電源36、リソースマネージャモジュール13、サービスアダプタ14、チャネルインターフェースアダプタ16が設けられている。
【0147】
また、制御装置10には、2つのアレイコントローラA50およびアレイコントローラB51を独立して制御するために、デバイスインターフェイスアダプタA17およびデバイスアダプタモジュールA11からなるグループAと、デバイスインターフェイスアダプタB15およびデバイスアダプタモジュールB19からなるグループBの2つのグループが設けられている。これら2つのグループA,Bは、独立した電源27,28により駆動されている。
【0148】
アレイコントローラA50とアレイコントローラB51は同様の構成のものであり、特に図示しないが、図1に示す実施の形態1と同様に、制御装置10のデバイスインターフェースアダプタA17またはデバイスインターフェースアダプタB15に接続される上位インターフェース、および複数台のディスク装置32−1〜32−5を接続する下位インターフェースとなる複数のデバイスインターフェースアダプタが設けられている。
【0149】
図18は、図17の実施の形態3におけるディスクアレイ装置の機能ブロック図である。図18において、複数台(図示例では例えば5台)のディスク装置32−1〜32−5のうち、例えばディスク装置32−5がパリティ用として用いられているとする。勿論、ディスク装置32−5はRAID4であれば固定的にパリティ用として定められており、RAID5については、現時点のデータアクセスにおいてパリティ用として位置付けられていることになる。
【0150】
制御装置10内の不揮発性メモリ34は、デバイスインターフェイスアダプタA17およびデバイスアダプタモジュールA11からなるグループAと、デバイスインターフェイスアダプタB15およびデバイスアダプタモジュールB19からなるグループBの2つのグループに共有されている。すなわち、この不揮発性メモリ34に記憶されたデータやパリティ等は、A,B2つのアレイコントローラ50,51の何れを介してもディスク装置32−1,32−2,32−3,32−4,32−5に書き込むことができる。
【0151】
全ディスク装置32−1,32−2,32−3,32−4,32−5が稼動している状態で、指定されたディスク装置32−1のデータ(D0)を新データ(D0new )に更新する際には、図18に示すように、制御装置10の不揮発性メモリ34には、ホストコンピュータ18から転送された新データ(D0new )40、ディスク装置32−1から読み出された旧データ(D0old )40−1、パリティ用ディスク装置32−5から読み出された旧パリティ(Dpold )48、書込処理の進行状況等を示す管理テーブル41、および書込み中を表す書込中フラグ44が記憶される。特に限定しないが、図18に示す例では、書込中フラグ44は管理テーブル41内に格納されるようになっている。
【0152】
また、制御装置10は、不揮発性メモリ34に記憶された新データ(D0new )40をディスク装置に書き戻すためのタスクを生成するタスク生成部72を有している。タスク生成部72は、例えば制御装置10内のMPU12により実現される。タスク生成部72により生成されたタスク情報は、リソースマネージャモジュール13内のメモリに記憶されたタスク情報テーブル74に格納され、そのタスク情報に基づいてリソースマネージャにより適当なデバイスアダプタモジュール11,19に対してタスク処理の実行が指示される。
【0153】
また、タスク情報テーブル74には、一方のアレイコントローラに異常が発生した場合に、異常が発生したアレイコントローラに代えて正常に稼動しているアレイコントローラを用いて書込処理を行うことを依頼したことを表す交代パス処理要求フラグ76が格納される。
【0154】
デバイスアダプタモジュール11,19は、リソースマネージャにより指示されると、タスク情報テーブル74からタスク情報を読み出し、それに基づいて不揮発性メモリ34に記憶された新データ(D0new )40を読み出し、自系のアレイコントローラ50,51に対して書込命令を発行する。また、デバイスアダプタは、不揮発性メモリ34に記憶された管理テーブル41に書込中フラグ44を立てる。
【0155】
アレイコントローラ50,51は、互いに電源監視部55により相手のアレイコントローラ51,50の電源供給状態を監視しており、一方のアレイコントローラ50(または51)が他方のアレイコントローラ51(または50)の電源供給が停止したことを検出すると、電源供給停止通知部56により、自系のデバイスインターフェースアダプタ17(または15)を介してデバイスアダプタモジュール11(または19)に、他方のアレイコントローラ51(または50)が電源供給停止状態にあることを通知する。電源監視部55および電源供給停止通知部56は、アレイコントローラ50,51内に設けられたマイクロプロセッサ(MPU)等により実現される。
【0156】
また、アレイコントローラ50,51には、制御部10の不揮発性メモリ34から転送されてきた新データ(D0new )40と同じパリティグループ内の他のデータをディスク装置から読み出し、それらのデータと新データ(D0new )40に基づいて新パリティ(Dpnew )を生成するパリティ生成部57が設けられている。
【0157】
このパリティ生成部57によるパリティの再構築が実施されるのは、書込命令に対して、フラグによって特別なモードが設定された時である。パリティ生成部57は、アレイコントローラ50,51内に設けられたマイクロプロセッサ(MPU)等により実現される。
【0158】
図18に示すディスクアレイ装置の処理動作の流れについて説明する。このディスクアレイ装置の全体的な処理動作の流れ、データ読出処理の流れおよび復旧処理の流れは、それぞれ図6、図13および図12に示すフローチャートと概ね同じである。従って、図18に示すディスクアレイ装置における全体動作、復旧処理およびデータ読出処理の流れについての説明を省略する。
【0159】
図19は、図18に示すディスクアレイ装置の書込処理の詳細を示したフローチャートである。図19において、ホストコンピュータ18からのライトコマンドを受け取ると、まずステップS1671で制御装置10内の一方のグループAに属するデバイスアダプタモジュールA11が、自系のアレイコントローラA50に対してデータの書込命令を発行する。
【0160】
それによって、ステップS1672でアレイコントローラA50は、図9に示す通常の書込処理に従って新データ(D0new )40をディスク装置32−1に書き込むとともに、新データ(D0new )40と旧データ(D0old )と旧パリティ(Dpold )に基づいて新パリティ(Dpnew )を生成し、それをパリティ用のディスク装置32−5に書き込む。
【0161】
ステップS1672の通常の書込処理中、すなわち制御装置10がアレイコントローラA50から書込完了信号を受領する前に、ステップS1673で異常終了信号を受領した場合、ステップS1674で異常終了の原因がアレイコントローラA50への電源供給停止であれば、ステップS1675へ進む。
【0162】
ステップS1675では、異常を検出したデバイスアダプタモジュールA11は、異常発生中の書込処理タスクを他方のデバイスパス、すなわちアレイコントローラB51に代わりに実行させるために、タスク情報テーブル74内に交代パス処理要求フラグ76をセットする。そして、ステップS1676でデバイスアダプタモジュールA11は、リソースマネージャに対してタスクの交代パス処理依頼を通知する。
【0163】
交代パス処理を依頼されたリソースマネージャは、ステップS1677で代わりのアレイコントローラB51を制御するデバイスアダプタに対して、異常発生により中断された書込処理タスクの処理依頼を発行する。
【0164】
その依頼を受けたデバイスアダプタは、ステップS1678で、受領した処理内容が書込処理であり、かつ異常が発生したアレイコントローラA50に代わる交代デバイスパス処理であることを認識し、ステップS1679で、パリテイデータを再構築するためのパリティ生成フラグという特別なフラグを書込命令に付加してアレイコントローラB51に発行する。
【0165】
パリティ生成フラグが付加された書込命令を受領したアレイコントローラB51は、ステップS1680で制御装置10内の不揮発性メモリ34に記憶された新データ(D0new )40を読み出し、その読み出したデータをディスク装置32−1に書き込む。
【0166】
そして、ステップS1681で、アレイコントローラB51は、データ更新を行うディスク装置32−1とパリティ用のディスク装置32−5を除く他のディスク装置32−2,32−3,32−4から、更新するデータと同じパリティグループのデータ(D1,D2,D3)を読み出し、それら読み出されたデータ(D1,D2,D3)と新データ(D0new )との排他的論理和(EOR)演算により新パリティ(Dpnew )を生成し、それをパリティ用のディスク装置32−5に書き込む。
【0167】
最後に、ステップS1682で交代パス処理要求フラグ76を下げて、データ書込処理を終了する。
【0168】
ステップS1674で異常終了の原因がアレイコントローラA50への電源供給停止でない場合には、ステップS1683へ進む。ステップS1683で異常終了の原因がアレイコントローラA50のハングアップ等の異常動作である場合には、ステップS1684へ進んでデバイスインタフェースアダプタA17およびアレイコントローラA50のリセット処理を行ってから、ステップS1685でパリテイデータを再構築するためのパリティ生成フラグを書込命令に付加して再度アレイコントローラA50に発行する。
【0169】
一方、ステップS1683で異常終了の原因がアレイコントローラA50によるディスク装置への書込処理の中断である場合には、リセット処理を行わずにそのままステップS1685へ進んで、パリテイデータを再構築するためのパリティ生成フラグを書込命令に付加して再度アレイコントローラA50に発行する。
【0170】
パリティ生成フラグが付加された書込命令を受領したアレイコントローラA50は、ステップS1686で制御装置10内の不揮発性メモリ34に記憶された新データ(D0new )40を読み出し、その読み出したデータをディスク装置32−1に書き込む。
【0171】
そして、ステップS1687で、アレイコントローラA50は、データ更新を行うディスク装置32−1とパリティ用のディスク装置32−5を除く他のディスク装置32−2,32−3,32−4から、更新するデータと同じパリティグループのデータ(D1,D2,D3)を読み出し、それら読み出されたデータ(D1,D2,D3)と新データ(D0new )との排他的論理和(EOR)演算により新パリティ(Dpnew )を生成し、それをパリティ用のディスク装置32−5に書き込む。それによって、データ書込処理を終了する。
【0172】
図1、ステップS1673で異常終了信号を受領しなければ、アレイコントローラA50によるデータ更新が正常に行われたことになり、そのまま書込処理を終了する。
【0173】
図20は、図18に示すディスクアレイ装置において、アレイコントローラA50の異常を検出したデバイスアダプタが、それ以前にアレイコントローラA50に対して発行している他機番に対しての書込命令に対する処理の詳細を示したフローチャートである。図20において、ステップS1691で、アレイコントローラA50から正常終了完了信号を受け取っていない書込命令があるか否かを判断し、受け取っていない命令がある場合には、ステップS1692でリソースマネージャのタスク処理実行時間監視論理により、タイムアウトを検出する。
【0174】
そして、ステップS1693でリソースマネージャは、正常終了完了信号を受け取っていない書込命令の書込処理タスクを他方のデバイスパス、すなわちアレイコントローラB51に代わりに実行させるために、タスク情報テーブル74内に交代パス処理要求フラグ76をセットする。
【0175】
また、リソースマネージャは、ステップS1694で代わりのアレイコントローラB51を制御するデバイスアダプタモジュールB19に対して、正常終了完了信号を受け取っていない書込命令の書込処理タスクの処理依頼を発行する。その依頼を受けたデバイスアダプタは、ステップS1695で、受領した処理内容が書込処理であり、かつ異常が発生したアレイコントローラA50に代わる交代デバイスパス処理であることを認識し、ステップS1696で、パリテイデータを再構築するためのパリティ生成フラグという特別なフラグを書込命令に付加してアレイコントローラB51に発行する。
【0176】
パリティ生成フラグが付加された書込命令を受領したアレイコントローラB51は、ステップS1697で制御装置10内の不揮発性メモリ34に記憶された当該書込処理における新データ(D0new )40を読み出し、その読み出したデータをディスク装置32−1に書き込む。
【0177】
そして、ステップS1698で、アレイコントローラB51は、データ更新を行うディスク装置32−1とパリティ用のディスク装置32−5を除く他のディスク装置32−2,32−3,32−4から、更新するデータと同じパリティグループのデータ(D1,D2,D3)を読み出し、それら読み出されたデータ(D1,D2,D3)と新データ(D0new )との排他的論理和(EOR)演算により新パリティ(Dpnew )を生成し、それをパリティ用のディスク装置32−5に書き込む。
【0178】
最後に、ステップS1699で交代パス処理要求フラグ76を下げて、データ書込処理を終了する。
【0179】
ステップS1691でアレイコントローラA50から正常終了完了信号を受け取っていない書込命令がない場合には、そのまま処理を終了する。
【0180】
図17〜図20に示す実施の形態3によれば、制御装置10内に不揮発性メモリ34を設け、データの書込処理時に、その不揮発性メモリ34に新データ(D0new )40、書込処理の段階を示すステータスおよびそのステータスに示された処理を行ったアレイコントローラの識別フラグを格納した管理テーブル41、旧データ(D0old )40−1および旧パリティ(Dpold )48を記憶するようにしたため、一方のアレイコントローラによる書込処理に異常が生じた場合に、もう一方のアレイコントローラが異常を生じたアレイコントローラに代わって書込処理を継続して行うことができるので、データの整合性を保つことができる。
【0181】
また、上記実施の形態3によれば、不揮発性メモリ34に新データ(D0new )40、書込処理のステータスおよびアレイコントローラの識別フラグを格納した管理テーブル41を記憶するようにしたため、データおよびパリティの書込動作中に電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、データ更新されるディスク装置とパリティ用のディスク装置以外のディスク装置から同一パリティグループのデータ(D1,D2,D3)を読み出し、それらデータ(D1,D2,D3)と不揮発性メモリ34に格納された新データ(D0new )40とから新パリティ(Dpnew )48−1を生成し、その新パリティ(Dpnew )48−1と新データ(D0new )40を新たにディスク装置に書き込むことによって、容易にデータを復旧することができる。
【0182】
(実施の形態4)
図21は、本発明によるディスクアレイ装置の実施の形態4を示す機能ブロック図である。この実施の形態4のディスクアレイ装置では、図21に示すように、ホストコンピュータ18を接続してなる制御装置10には、独立した電源62,64により駆動される2つのアレイコントローラA50およびアレイコントローラB51が接続されており、それらアレイコントローラA50とアレイコントローラB51とにより例えば5台のディスク装置32−1,32−2,32−3,32−4,32−5が制御されている。なお、図2に示すディスクアレイ装置と同一の構成要素については同一の符号を付して詳細な説明を省略する。
【0183】
制御装置10内には、図示省略するが、実施の形態1と同様にMPU、ROM、揮発性メモリ、キャッシュファンクションエンジン、キャッシュメモリ、リソースマネージャモジュール、サービスアダプタ、チャネルインターフェースアダプタが設けられている。
【0184】
アレイコントローラA50とアレイコントローラB51は同様の構成のものであり、特に図示しないが、図2に示す実施の形態1と同様に、制御装置10の図示しないデバイスインターフェースアダプタに接続される上位インターフェース、および複数台のディスク装置32−1〜32−5を接続する下位インターフェースとなる複数のデバイスインターフェースアダプタが設けられている。
【0185】
また、アレイコントローラA50およびアレイコントローラB51には、不揮発性メモリ34およびその不揮発性メモリ34に電源を供給するバックアップ電源(図示せず)が設けられている。アレイコントローラA50の不揮発性メモリ34には、ディスク装置にデータを書き込む際に、例えば制御装置10から転送されてきた新データ(D0new )40と、ディスク装置から読み出された旧データ(D0old )40−1および旧パリティ(Dpold )48と、新たに作成された新パリティ(Dpnew )48−1と、書込処理段階を示すステータス42およびそのステータスに示された処理を実行したアレイコントローラを識別する自系フラグを格納した管理テーブル41が記憶される。
【0186】
アレイコントローラB51の不揮発性メモリ34には、例えば、少なくとも新データ(D0new )40−4、旧データ(D0old )40−5および旧パリティ(Dpold )48−4が記憶される。
【0187】
また、アレイコントローラA50およびアレイコントローラB51には、それぞれ相手のコントローラと通信するための通信部82が設けられている。この通信部82を介して、新データ(D0new )、旧データ(D0old )および旧パリティ(Dpold )や書込処理の正常終了通知などの授受が行われる。通信部82は、例えばパーソナルコンピュータ等で一般的に採用されているPCIバスを介して相互に接続されている。
【0188】
また、アレイコントローラA50およびアレイコントローラB51には、新データ(D0new )、旧データ(D0old )および旧パリティ(Dpold )に基づき、排他的論理和(EOR)演算を行って新パリティ(Dpnew )を作成する論理回路37が設けられている。
【0189】
A,B2つのアレイコントローラ50,51は何れも、ディスク装置32−1〜32−5にデータやパリティ等を書き込むことができる。
【0190】
複数台(図示例では例えば5台)のディスク装置32−1〜32−5のうち、図21に示す例では、例えばディスク装置32−5がパリティ用として用いられているとする。勿論、ディスク装置32−5はRAID4であれば固定的にパリティ用として定められており、RAID5については、現時点のデータアクセスにおいてパリティ用として位置付けられていることになる。
【0191】
図22には、アレイコントローラA50内の不揮発性メモリ34に、管理テーブル41と新データ(D0new )40と新パリティ(Dpnew )48−1を記憶させるようにした例が示されている。この場合には、特に図示しないが、アレイコントローラB51内の不揮発性メモリ34には、新データ(D0new )と新パリティ(Dpnew )が記憶される。
【0192】
図23には、アレイコントローラA50内の不揮発性メモリ34に、管理テーブル41と新データ(D0new )40と、旧データ(D0old )および旧パリティ(Dpold )の排他的論理和(EOR)演算により生成された中間パリティ(Dpint )48−5を記憶させるようにした例が示されている。この場合には、特に図示しないが、アレイコントローラB51内の不揮発性メモリ34には、新データ(D0new )と中間パリティ(Dpint )が記憶される。
【0193】
図21に示すディスクアレイ装置の処理動作の流れについて説明する。このディスクアレイ装置の全体的な処理動作の流れ、データ読出処理の流れは、それぞれ図6および図13に示すフローチャートと概ね同じである。従って、図21に示すディスクアレイ装置における全体動作およびデータ読出処理の流れについての説明を省略する。
【0194】
図24は、図21に示すディスクアレイ装置の書込処理の詳細を示したフローチャートである。なお、図中右側に、各ステップのステータス(書込処理の段階)を併記した。図24において、まずステップS2671でアレイコントローラA50は、制御装置10から書込命令とともに新データ(D0new )を受け取ると、その新データ(D0new )40をアレイコントローラA50内の不揮発性メモリ34に記憶する。この時のステータスは「新データの受領(Receive
new data)」である。
【0195】
そして、ステップS2672でアレイコントローラA50は通信部82を介して他方のアレイコントローラB51に新データ(D0new )を転送し、一方、アレイコントローラB51は、転送されてきた新データ(D0new )を受け取ってアレイコントローラB51内の不揮発性メモリ34内に記憶する。これで、アレイコントローラB51に新データ(D0new )40−4がコピーされたことになる。この時のステータスは「新データの受領(Receive new data)」である。
【0196】
続いて、ステップS2673でアレイコントローラA50はディスク装置32−1,32−5から旧データ(D0old )および旧パリティ(Dpold )を読み出し、それら旧データ(D0old )40−1および旧パリティ(Dpold )48をアレイコントローラA50内の不揮発性メモリ34に記憶する。この時のステータスは「旧データおよび旧パリティの読出し(Read old data & parity)」である。
【0197】
そして、ステップS2674でアレイコントローラA50は通信部82を介して他方のアレイコントローラB51に旧データ(D0old )および旧パリティ(Dpold )を転送し、一方、アレイコントローラB51は、転送されてきた旧データ(D0old )および旧パリティ(Dpold )を受け取ってアレイコントローラB51内の不揮発性メモリ34内に記憶する。
【0198】
これで、アレイコントローラB51に旧データ(D0old )40−5および旧パリティ(Dpold )48−4がコピーされたことになる。この時のステータスは「旧データおよび旧パリティの読出し(Read old data & parity)」である。
【0199】
続いて、ステップS2675でアレイコントローラA50は、アレイコントローラA50内の不揮発性メモリ34に記憶された新データ(D0new )40と旧データ(D0old )40−1と旧パリティ(Dpold )48に基づいて新パリティ(Dpnew )48−1を生成し、それをアレイコントローラA50内の不揮発性メモリ34に記憶する。この時のステータスは「新パリティの作成(Generate new parity)」である。
【0200】
続いて、ステップS2676でアレイコントローラA50は、新データ(D0new )40と新パリティ(Dpnew )48−1をディスク装置32−1,32−5の該当箇所に書き込む。この時のステータスは「新データおよび新パリティの書込み(Write new data & parity)」である。
【0201】
続いて、ステップS2677でアレイコントローラA50は制御装置10に、書込処理が正常に終了したことを通知する。この時のステータスは「新データおよび新パリティの書込み(Write new data & parity)」から、正常終了通知の完了後に「終了(Finish)」となる。
【0202】
続いて、ステップS2678でアレイコントローラA50はアレイコントローラB51に、書込処理が正常に終了したことを通知する。この時のステータスは「終了(Finish)」となる。
【0203】
続いて、ステップS2679でアレイコントローラA50は、アレイコントローラA50内の不揮発性メモリ34に記憶された新データ(D0new )40、旧データ(D0old )40−1、旧パリティ(Dpold )48、新パリティ(Dpnew )48−1およびステータス42の領域を解放する。この時のステータスは「終了(Finish)」となる。
【0204】
また、ステップS2680でアレイコントローラB51は、アレイコントローラA50からの正常終了通知を受け取ったことによって、アレイコントローラB51内の不揮発性メモリ34に記憶された新データ(D0new )40−4、旧データ(D0old )40−5、旧パリティ(Dpold )48−4の領域を解放する。この時のステータスは「終了(Finish)」となる。これで書込処理が終了する。
【0205】
なお、書込処理中に、アレイコントローラA50への電源供給停止や、アレイコントローラA50のハングアップ等の異常動作や、アレイコントローラA50によるディスク装置への書込処理の中断などの異常が発生して書込処理が中断された場合、図19に示す実施の形態3における書込処理のように、アレイコントローラA50に代わって、アレイコントローラB51に書込処理を継続して行わせるようにしてもよい。
【0206】
図25は、図21に示すディスクアレイ装置の復旧処理の詳細を示したフローチャートである。図25において、電源が投入されると、まずステップS2861でアレイコントローラA50(またはB51)は、他系のコントローラすなわちアレイコントローラB51(またはA50)が稼働中であるか否かの判断を行う。
【0207】
アレイコントローラB51(またはA50)が稼働中の場合には、ステップS2862で自系すなわちアレイコントローラA50(またはB51)の書込処理がアレイコントローラB51(またはA50)によって既に終了しているかどうかの判断を行う。
【0208】
そして、自系の書込処理が終了していない場合には、ステップS2683で、終了していない書込処理をアレイコントローラA50とアレイコントローラB51の何れが行うかの調停を行う。この調停の方法については、例えばアレイコントローラA50およびアレイコントローラB51のうち先に起動したコントローラがマスターとなり、後から起動したコントローラがスレーブとなって(その逆でもよい)、マスターとなったコントローラが書込処理を行うようにしてもよい。あるいは、予めアレイコントローラA50およびアレイコントローラB51に対してプライマリおよびセカンダリの優先順位を付けておき、プライマリのコントローラが書込処理を行うようにしてもよい。
【0209】
調停により書込処理を行うコントローラが決まったら、それを担当するアレイコントローラは、ステップS2864で自己の不揮発性メモリ34から新データ(D0new )を読み出すとともに、アレイコントローラA50内の不揮発性メモリ34からステータス42を読み出し、ステップS2865で、読み出されたステータスに基づいて書込処理を中断箇所から再開する。
【0210】
そして、書込処理が終了したら、ステップS2866で、書込処理の再開を担当したアレイコントローラは、制御装置10に書込処理が正常に終了したことを通知するとともに、ステップS2867で他方のアレイコントローラにも書込処理が正常に終了したことを通知する。
【0211】
続いて、ステップS2868で、書込処理の再開を担当したアレイコントローラは、自己の不揮発性メモリ34に記憶された新データ(D0new )や旧データ(D0old )や旧パリティ(Dpold )、新パリティ(Dpnew )が記憶されている場合には新パリティ(Dpnew )、およびステータスが記憶されている場合にはステータスの領域を解放する。
【0212】
また、ステップS2869で、書込処理の再開を担当しなかったアレイコントローラも、自己の不揮発性メモリ34に記憶された新データ(D0new )や旧データ(D0old )や旧パリティ(Dpold )、新パリティ(Dpnew )が記憶されている場合には新パリティ(Dpnew )、およびステータスが記憶されている場合にはステータスの領域を解放する。これで復旧処理が終了する。
【0213】
ステップS2862で、自系の書込処理が終了している場合には、書込処理の再開を行わずに、ステップS2866へ進んで、書込処理の正常終了通知(ステップS2866〜S2867)および不揮発性メモリ34の領域開放(ステップS2868〜S2869)を行い、復旧処理を終了する。
【0214】
また、ステップS2861で、他系のアレイコントローラB51(またはA50)が稼働していない場合には、ステップS2864へ進んで自系のアレイコントローラA50(またはB51)が書込処理を再開し、ステップS2864〜S2869の処理を行い、復旧処理を終了する。
【0215】
なお、図22に示すように、不揮発性メモリ34に管理テーブル41と新データ(D0new )40と新パリティ(Dpnew )48−1を記憶させる場合や、図23に示すように、不揮発性メモリ34に管理テーブル41と新データ(D0new )40と中間パリティ(Dpint )48−5を記憶させる場合も同様である。
【0216】
図21〜図25に示す実施の形態4によれば、アレイコントローラA50およびアレイコントローラB51内に不揮発性メモリ34を設け、データの書込処理時に、アレイコントローラA50の不揮発性メモリ34に新データ(D0new )40および書込処理の段階を示すステータス42と、旧データ(D0old )40−1や旧パリティ(Dpold )48や新パリティ(Dpnew )48−1などを記憶し、さらにそれら各データをアレイコントローラB51内の不揮発性メモリ34にコピーしておくようにしたため、データおよびパリティの書込動作中に電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、アレイコントローラA50内の不揮発性メモリ34またはアレイコントローラB51内の不揮発性メモリ34に格納された新データを用いることにより、容易にデータを復旧することができる。
【0217】
また、上記実施の形態4によれば、一方のアレイコントローラによる書込処理に異常が生じた場合に、もう一方のアレイコントローラが異常を生じたアレイコントローラに代わって書込処理を継続して行うことができるので、データの整合性を保つことができる。
【0218】
(実施の形態5)
図26は、本発明によるディスクアレイ装置の実施の形態5を示す機能ブロック図である。この実施の形態5のディスクアレイ装置では、図26に示すように、ホストコンピュータ18を接続してなる制御装置10には、独立した電源62,64により駆動される2つのアレイコントローラA50およびアレイコントローラB51が接続されており、それらアレイコントローラA50とアレイコントローラB51とにより例えば5台のディスク装置32−1,32−2,32−3,32−4,32−5が制御されているとともに、アレイコントローラA50とアレイコントローラB51には、アレイコントローラA50およびアレイコントローラB51の何れからもデータの書込みおよび読出しを行うことができる不揮発性メモリ34を備えた共有デバイス90が接続されている。
【0219】
この不揮発性メモリ34は、バックアップ電源91により電源が供給されている。なお、図2に示すディスクアレイ装置と同一の構成要素については同一の符号を付して詳細な説明を省略する。
【0220】
制御装置10内には、図示省略するが、実施の形態1と同様にMPU、ROM、揮発性メモリ、キャッシュファンクションエンジン、キャッシュメモリ、リソースマネージャモジュール、サービスアダプタ、チャネルインターフェースアダプタが設けられている。
【0221】
アレイコントローラA50とアレイコントローラB51は同様の構成のものであり、特に図示しないが、図2に示す実施の形態1と同様に、制御装置10の図示しないデバイスインターフェースアダプタに接続される上位インターフェース、および複数台のディスク装置32−1〜32−5を接続する下位インターフェースとなる複数のデバイスインターフェースアダプタが設けられている。
【0222】
また、アレイコントローラA50およびアレイコントローラB51には、新データ(D0new )、旧データ(D0old )および旧パリティ(Dpold )に基づき、排他的論理和(EOR)演算を行って新パリティ(Dpnew )を作成する論理回路(図示省略)が設けられている。
【0223】
A,B2つのアレイコントローラ50,51は何れも、ディスク装置32−1〜32−5にデータやパリティ等を書き込むことができる。
【0224】
不揮発性メモリ34には、ディスク装置にデータを書き込む際に、その書込処理を実行するアレイコントローラ(図示例では、アレイコントローラA50)から転送されてきた新データ(D0new )40−6、旧データ(D0old )40−7、旧パリティ(Dpold )48−6およびステータス42等の管理情報を格納した管理テーブル41−1が記憶される。
【0225】
また、このディスクアレイ装置では、アレイコントローラA50およびアレイコントローラB51にそれぞれ他方のアレイコントローラの電源供給状態を監視する電源監視部93が設けられており、書込動作中のアレイコントローラの電源供給状態を監視するようになっている。電源監視部93は、例えば定期的に他方のアレイコントローラにメッセージを送り、それに対する応答を監視するようになっている。
【0226】
複数台(図示例では例えば5台)のディスク装置32−1〜32−5のうち、図26に示す例では、例えばディスク装置32−5がパリティ用として用いられているとする。勿論、ディスク装置32−5はRAID4であれば固定的にパリティ用として定められており、RAID5については、現時点のデータアクセスにおいてパリティ用として位置付けられていることになる。
【0227】
図27には、共有デバイス90内の不揮発性メモリ34に記憶される管理テーブル41−1の記憶内容の一例が示されている。同図に示すように、管理テーブル41−1には、例えばそれぞれ書込処理を区別するための識別子を表す「op_id」、当該書込処理が対象としているロジカルブロックアドレスを表す「data LBA」、旧データ(D0old )を一時的に格納するためのアドレスを表す「old data address」、新データ(D0new )を一時的に格納するためのアドレスを表す「new data address」、旧パリティ(Dpold )を一時的に格納するためのアドレスを表す「old parity address」、新パリティ(Dpnew )を一時的に格納するためのアドレスを表す「new parity address」、この管理テーブル41−1を管理するアレイコントローラを識別する番号等の識別子を表す「array controller #」、および書込処理の現在のステータスを表す「write status」が記憶される。
【0228】
図26に示すディスクアレイ装置の処理動作の流れについて説明する。このディスクアレイ装置の全体的な処理動作の流れ、データ読出処理の流れおよび復旧処理の流れは、それぞれ図6、図13および図12に示すフローチャートと概ね同じである。従って、図26に示すディスクアレイ装置における全体動作、復旧処理およびデータ読出処理の流れについての説明を省略する。
【0229】
図28は、図26に示すディスクアレイ装置の書込処理の詳細を示したフローチャートである。図28において、ホストコンピュータ18からのライトコマンドを受け取ると、まずステップS3671で制御装置10はアレイコントローラA50に対してデータの書込命令を発行する。
【0230】
アレイコントローラA50は、書込命令とともに新データ(D0new )40を受け取ると、ステップS3672で共有デバイス90内の不揮発性メモリ34に新データ(D0new )40−6、旧データ(D0old )40−7、旧パリティ(Dpold )48−6および管理テーブル41−1を格納してから、ステップS3673で、新データ(D0new )40をディスク装置32−1に書き込むとともに、新データ(D0new )40と旧データ(D0old )40−1と旧パリティ(Dpold )48に基づいて新パリティ(Dpnew )を生成し、それをパリティ用のディスク装置32−5に書き込むという通常の書込処理を開始する。
【0231】
この通常の書込処理中に、書込動作中のアレイコントローラ、すなわちアレイコンローラA50の電源が遮断された場合、ステップS3674で電源監視部93はその電源遮断を検知し、ステップS3675で電源監視部93は他のアレイコントローラ、すなわちアレイコントローラB51にアレイコントローラA50の電源断を通知する。
【0232】
ステップS3676で、電源断の通知を受け取ったアレイコントローラB51は、共有デバイス90内の不揮発性メモリ34から新データ(D0new )40−6と旧データ(D0old )40−7と旧パリティ(Dpold )48−6と管理テーブル41−1内の管理情報を読み出し、ステップS3677で、アレイコントローラB51はアレイコントローラA50の中断された書込処理を継続して行う。
【0233】
そして、ステップS3678で、アレイコントローラB51による書込処理の終了後、共有デバイス90内の不揮発性メモリ34の領域を解放し、書込処理を終了する。
【0234】
ステップS3674でアレイコンローラA50の電源遮断が検知されなかった場合には、ステップS3678へ進んで共有デバイス90内の不揮発性メモリ34の領域を解放し、書込処理を終了する。
【0235】
図29には、図26に示すように電源監視部93によりアレイコントローラの電源遮断を監視する代わりに、アレイコントローラ50,51に他のアレイコントローラを監視するコントローラ監視部95を設け、このコントローラ監視部95により所定時間おきに他のコントローラの電源供給状態を監視するようにした例が示されている。他の構成については図26に示す装置と同じであるので、詳細な説明を省略する。
【0236】
コントローラ監視部95は、例えば定期的に他方のアレイコントローラにメッセージを送り、それに対する応答を監視するようになっている。
【0237】
図29に示すディスクアレイ装置の処理動作の流れについて説明する。このディスクアレイ装置の全体的な処理動作の流れ、データ読出処理の流れおよび復旧処理の流れは、図26に示す装置と同じ、すなわちそれぞれ図6、図13および図12に示すフローチャートと概ね同じである。従って、図29に示すディスクアレイ装置における全体動作、復旧処理およびデータ読出処理の流れについての説明を省略する。
【0238】
図30は、図29に示すディスクアレイ装置の書込処理の詳細を示したフローチャートである。図30において、ホストコンピュータ18からのライトコマンドを受け取ると、まずステップS3681で制御装置10はアレイコントローラA50に対してデータの書込命令を発行する。
【0239】
アレイコントローラA50は、書込命令とともに新データ(D0new )40を受け取ると、ステップS3682で共有デバイス90内の不揮発性メモリ34に新データ(D0new )40−6、旧データ(D0old )40−7、旧パリティ(Dpold )48−6および管理テーブル41−1を格納してから、ステップS3683で、新データ(D0new )40をディスク装置32−1に書き込むとともに、新データ(D0new )40と旧データ(D0old )40−1と旧パリティ(Dpold )48に基づいて新パリティ(Dpnew )を生成し、それをパリティ用のディスク装置32−5に書き込むという通常の書込処理を開始する。
【0240】
この通常の書込処理中に、書込動作中のアレイコントローラ、すなわちアレイコンローラA50の電源が遮断された場合、ステップS3684で、所定時間おきにアレイコントローラA50の状態を監視している、アレイコントローラB51のコントローラ監視部95はその電源遮断を検知する。そして、ステップS3685でアレイコントローラB51は、共有デバイス90内の不揮発性メモリ34に格納された書込処理のステータスを参照し、アレイコントローラA50の電源遮断時にアレイコントローラA50が書込処理中であったか否かを判断する。
【0241】
書込途中の命令があれば、ステップS3686でアレイコントローラB51は、共有デバイス90内の不揮発性メモリ34から新データ(D0new )40−6と旧データ(D0old )40−7と旧パリティ(Dpold )48−6と管理テーブル41−1内の管理情報を読み出し、ステップS3687で、アレイコントローラB51はアレイコントローラA50の中断された書込処理を継続して行う。
【0242】
そして、ステップS3688で、アレイコントローラB51による書込処理の終了後、共有デバイス90内の不揮発性メモリ34の領域を解放し、書込処理を終了する。
【0243】
ステップS3684でアレイコンローラA50の電源遮断が検知されなかった場合、およびステップS3685で電源遮断時にアレイコントローラA50が書込途中でなかった場合には、ステップS3688へ進んで共有デバイス90内の不揮発性メモリ34の領域を解放し、書込処理を終了する。
【0244】
図26〜図30に示す実施の形態5によれば、アレイコントローラA50およびアレイコントローラB51の何れからもアクセス可能な共有デバイス90内に不揮発性メモリ34を設け、データの書込処理の開始時に、その不揮発性メモリ34に新データ(D0new )40−6、旧データ(D0old )40−7、旧パリティ(Dpold )48−6およびステータス等を含む管理テーブル41−1を記憶しておくようにしたため、一方のアレイコントローラによる書込処理に異常が生じた場合に、もう一方のアレイコントローラが異常を生じたアレイコントローラに代わって書込処理を継続して行うことができるので、データの整合性を保つことができる。
【0245】
また、上記実施の形態5によれば、データおよびパリティの書込動作中に全体の電源断等により書込処理が正常に終了しなかった場合、再び電源を投入した時に、共有デバイス90内の不揮発性メモリ34に格納されたデータおよび管理情報を用いることにより、容易にデータを復旧することができる。
【0246】
(実施の形態6)
図31は、本発明によるディスクアレイ装置の実施の形態6を示す機能ブロック図である。この実施の形態6のディスクアレイ装置では、図31に示すように、ホストコンピュータ18を接続してなる制御装置10には、アレイコントローラ50が接続されており、そのアレイコントローラ50により例えば5台のディスク装置32−1,32−2,32−3,32−4,32−5が制御されている。そして、アレイコントローラ50および全ディスク装置32−1〜32−5は無停電電源供給ユニット98により電源供給されている。なお、図2に示すディスクアレイ装置と同一の構成要素については同一の符号を付して詳細な説明を省略する。
【0247】
一般に、ディスク装置32−1〜32−5に格納されたデータの不整合は、ディスク装置に対して書込処理が行われている際にディスク装置32−1〜32−5やアレイコントローラ50への電源供給が停止して書込処理が中断されることにより発生する。
【0248】
無停電電源供給ユニット98は、バッテリを内蔵しており、停電等によりAC電力の供給が停止した場合などに、停電発生時にアレイコントローラ50が保持している仕掛かり中の書込動作が終了するまでの間、バッテリによりディスク装置32−1〜32−5やアレイコントローラ50の電源をバックアップするようになっている。
【0249】
図31に示す実施の形態6によれば、無停電電源供給ユニット98によりアレイコントローラ50の電源をバックアップしているため、電源へのAC入力が停止した場合や、電源とアレイコントローラ50と間の電源供給が何らかの障害により停止した場合でも電源供給が継続して行われるので、アレイコントローラ50の書込動作が中断されずに済み、データ不整合の発生を防ぐことができる。
【0250】
また上記実施の形態6によれば、無停電電源供給ユニット98によりディスク装置32−1〜32−5への電源供給をバックアップしているため、電源とディスク装置32−1〜32−5との間の電源供給が何らかの障害により停止した場合でも電源供給が継続して行われるので、アレイコントローラ50による書込動作が中断されずに済み、データ不整合の発生を防ぐことができる。
【0251】
なお、本発明は、上記各実施の形態に限定されるものではなく、発明の要旨を逸脱しない範囲で、種々設計変更可能であるのはいうまでもない。
【0252】
また、上記各実施の形態においては、書込処理中に電源断が発生した後、再び電源を投入した時の復旧処理について説明したが、本発明は、電源断による障害の他に、書込処理中に他の致命的な障害が発生したことにより書込処理が正常に終了しなかった場合のデータ復旧処理にも適用することができる。
【0253】
【発明の効果】
本発明によれば、故障状態のディスク装置がある場合にディスク装置に対して行う同時並列的な書込動作が実行される前に、新データ(D0 new )、他のデータ(D2,D3)、および、旧データと新データと旧パリティとから求められた新パリティ(Dp new )が不揮発性メモリに格納され、電源断等により書込処理が中断され場合には、中断された書込処理が再開された時に、不揮発性メモリに格納された新データ(D0 new )、他のデータ(D2,D3)および新パリティ(Dp new )を対応するディスク装置に同時並列的に書き込むことによって復旧処理が行われるため、故障しているディスク装置がある場合でも容易にデータを復旧することができる。つまり、故障しているディスク装置がある状態で、中断された書込処理の再開時にパリティが整合していないために復旧処理を行おうとした場合、従来は、故障しているディスク装置から復旧に必要なデータを正常に読み出すことができないためパリティを再生することができない、すなわち復旧処理を行うことができかったが、本発明によればその不都合を回避することができる。
【図面の簡単な説明】
【図1】本発明によるディスクアレイ装置の原理説明図である。
【図2】本発明によるディスクアレイ装置の実施の形態1を示す構成図である。
【図3】本発明によるディスクアレイ装置の実施の形態1の、1台のディスク装置が故障状態にある場合の機能ブロック図である。
【図4】本発明によるディスクアレイ装置の実施の形態1の、故障しているディスク装置がない場合の機能ブロック図である。
【図5】実施の形態1において不揮発性メモリに記憶される管理テーブルの記憶内容の一例を示す模式図である。
【図6】本発明によるディスクアレイ装置の実施の形態1における全体的な処理動作を示すフローチャートである。
【図7】本発明によるディスクアレイ装置の実施の形態1におけるデータ書込およびパリティ更新処理の詳細を示すフローチャートである。
【図8】本発明によるディスクアレイ装置の実施の形態1における特別なデータ書込処理の詳細を示すフローチャートである。
【図9】本発明によるディスクアレイ装置の実施の形態1における通常のデータ書込処理の詳細を示すフローチャートである。
【図10】本発明によるディスクアレイ装置の実施の形態1における復旧処理の詳細を示すフローチャートである。
【図11】本発明によるディスクアレイ装置の実施の形態1におけるNFT時の復旧処理の詳細を示すフローチャートである。
【図12】本発明によるディスクアレイ装置の実施の形態1におけるFT時の復旧処理の詳細を示すフローチャートである。
【図13】本発明によるディスクアレイ装置の実施の形態1におけるデータ読出処理の詳細を示すフローチャートである。
【図14】本発明によるディスクアレイ装置の実施の形態2を示す構成図である。
【図15】本発明によるディスクアレイ装置の実施の形態2の、1台のディスク装置が故障状態にある場合の機能ブロック図である。
【図16】本発明によるディスクアレイ装置の実施の形態2の、故障しているディスク装置がない場合の機能ブロック図である。
【図17】本発明によるディスクアレイ装置の実施の形態3を示す構成図である。
【図18】本発明によるディスクアレイ装置の実施の形態3の機能ブロック図である。
【図19】本発明によるディスクアレイ装置の実施の形態3における書込処理の詳細を示すフローチャートである。
【図20】本発明によるディスクアレイ装置の実施の形態3において、異常が発生したアレイコントローラに対して異常発生前に発行している他機番に対しての書込命令に対する処理の詳細を示すフローチャートである。
【図21】本発明によるディスクアレイ装置の実施の形態4を示す機能ブロック図である。
【図22】実施の形態4において不揮発性メモリに管理テーブルと新データと新パリティを記憶させるようにした例を示す模式図である。
【図23】実施の形態4において不揮発性メモリに管理テーブルと新データと中間パリティを記憶させるようにした例を示す模式図である。
【図24】本発明によるディスクアレイ装置の実施の形態4における書込処理の詳細を示すフローチャートである。
【図25】本発明によるディスクアレイ装置の実施の形態4における復旧処理の詳細を示すフローチャートである。
【図26】本発明によるディスクアレイ装置の実施の形態5を示す機能ブロック図である。
【図27】実施の形態5において不揮発性メモリに記憶される管理テーブルの記憶内容の一例を示す模式図である。
【図28】本発明によるディスクアレイ装置の実施の形態5における書込処理の詳細を示すフローチャートである。
【図29】本発明によるディスクアレイ装置の実施の形態5の変形例を示す機能ブロック図である。
【図30】その変形例における書込処理の詳細を示すフローチャートである。
【図31】本発明によるディスクアレイ装置の実施の形態6を示す機能ブロック図である。
【図32】RAID0によるディスクアレイ装置の説明図である。
【図33】RAID1によるディスクアレイ装置の説明図である。
【図34】RAID3によるディスクアレイ装置の説明図である。
【図35】RAID3におけるデータ分割の説明図である。
【図36】RAID4によるディスクアレイ装置の説明図である。
【図37】RAID5によるディスクアレイ装置の説明図である。
【図38】RAID5によるデータ書換手順の説明図である。
【図39】本発明者らによる先願発明に係るディスクアレイ装置の機能ブロック図である。
【符号の説明】
D0old 旧データ
D0new 新データ
D2,D3 データ
Dpold 旧パリティ
Dpnew 新パリティ
10 制御装置
18 上位装置(ホストコンピュータ)
32−1〜32−5 ディスク装置
34 不揮発性メモリ
41,41−1 管理情報(管理テーブル)
44 書込中フラグ
50,51 アレイコントローラ
55 電源監視手段(電源監視部)
56 電源供給停止通知手段(電源供給停止通知部)
57 パリティ生成手段(パリティ生成部)
62,64 電源
72 タスク生成手段(タスク生成部)
74 タスク情報テーブル
82 通信手段(通信部)
90 共有デバイス
91 バックアップ電源
93 電源監視手段
98 無停電電源供給手段(無停電電源供給ユニット)
110 特別書込実行手段
113 データ書込手段
116 パリティ生成手段
120 データ再現手段
154−1〜154−5 データエラー検出手段

Claims (4)

  1. 指定されたディスク装置の書込位置に格納されている旧データを読み出した後に上位装置から転送された新データを該書込位置に書き込むとともに、パリティ用ディスク装置の、前記新データのディスク書込位置に対応する位置に格納された旧パリティ、前記旧データおよび前記新データに基づいて生成した新パリティを、前記旧パリティのディスク格納位置に書き込み、書込処理が中断された場合には、該中断された書込処理が再開された時に、前記新データの書き込みを指定された第1のディスク装置およびパリティ用の第2のディスク装置を除く全ディスク装置の前記新データのディスク書込位置に対応する位置に格納された他のデータと前記新データとに基づいて生成した新パリティを前記旧パリティのディスク格納位置に書き込むディスクアレイ装置において、
    上位装置から書込処理を命令された際に、故障状態のディスク装置がある場合にディスク装置に対して行う同時並列的な書込動作が実行される前に、ディスク装置に同時並列的に書き込まれる前記新データ、前記第1のディスク装置および前記第2のディスク装置を除く故障状態でない全ディスク装置の前記他のデータ、および、前記旧データと前記新データと前記旧パリティとから求められた新パリティを格納する不揮発性メモリと、
    書込処理が中断された後、該中断された書込処理が再開された時に、故障状態のディスク装置がある場合に、前記不揮発性メモリに格納された前記新データ、前記他のデータおよび前記新パリティを対応するディスク装置に同時並列的に書き込むことにより復旧処理を行う特別書込実行手段と、
    を具備することを特徴とするディスクアレイ装置。
  2. 前記不揮発性メモリには、上位装置からの書込処理命令を受け取ってからディスク装置に対する書込動作が正常に終了するまでの間、書込処理中を表す書込中フラグおよび書込処理の進行状況を示す管理情報が格納されることを特徴とする請求項1に記載のディスクアレイ装置。
  3. ディスク装置に対してデータの書込動作および読出動作を実行するアレイコントローラと、該アレイコントローラを制御する制御装置を具備し、
    前記制御装置が前記不揮発性メモリを具備することを特徴とする請求項1または2に記載のディスクアレイ装置。
  4. ディスク装置に対してデータの書込動作および読出動作を実行するアレイコントローラと、該アレイコントローラを制御する制御装置を具備し、
    前記アレイコントローラが前記不揮発性メモリを具備することを特徴とする請求項1または2に記載のディスクアレイ装置。
JP30223197A 1997-11-04 1997-11-04 ディスクアレイ装置 Expired - Fee Related JP3618529B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP30223197A JP3618529B2 (ja) 1997-11-04 1997-11-04 ディスクアレイ装置
US09/064,780 US6408400B2 (en) 1997-11-04 1998-04-23 Disk array device
EP98303316A EP0915420A3 (en) 1997-11-04 1998-04-28 Disk array device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP30223197A JP3618529B2 (ja) 1997-11-04 1997-11-04 ディスクアレイ装置

Publications (2)

Publication Number Publication Date
JPH11143649A JPH11143649A (ja) 1999-05-28
JP3618529B2 true JP3618529B2 (ja) 2005-02-09

Family

ID=17906536

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30223197A Expired - Fee Related JP3618529B2 (ja) 1997-11-04 1997-11-04 ディスクアレイ装置

Country Status (3)

Country Link
US (1) US6408400B2 (ja)
EP (1) EP0915420A3 (ja)
JP (1) JP3618529B2 (ja)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000152134A (ja) * 1998-11-11 2000-05-30 Mitsubishi Electric Corp 映像再生装置
JP2001034427A (ja) * 1999-07-23 2001-02-09 Fujitsu Ltd デバイス制御装置及び制御方法
US6546499B1 (en) * 1999-10-14 2003-04-08 International Business Machines Corporation Redundant array of inexpensive platters (RAIP)
US6654831B1 (en) * 2000-03-07 2003-11-25 International Business Machine Corporation Using multiple controllers together to create data spans
US20040181731A1 (en) * 2000-04-12 2004-09-16 Advantest Corporation Semiconductor test system storing pin calibration data, commands and other data in non-volatile memory
US6629166B1 (en) * 2000-06-29 2003-09-30 Intel Corporation Methods and systems for efficient connection of I/O devices to a channel-based switched fabric
EP1178390A3 (en) * 2000-08-04 2006-12-27 Hitachi, Ltd. Information storage system with increased reliability for continuous operation, and recording control method
US6702039B2 (en) 2001-03-30 2004-03-09 Schlumberger Technology Corporation Perforating gun carriers and their methods of manufacture
US6925529B2 (en) * 2001-07-12 2005-08-02 International Business Machines Corporation Data storage on a multi-tiered disk system
US6871263B2 (en) 2001-08-28 2005-03-22 Sedna Patent Services, Llc Method and apparatus for striping data onto a plurality of disk drives
EP1361516A3 (en) * 2002-04-30 2011-05-18 Hitachi, Ltd. Method and system for backing up power supply of disk array device
JP4230189B2 (ja) * 2002-10-03 2009-02-25 株式会社日立製作所 ディスクアレイ装置、及びその電源供給方法
JP4342804B2 (ja) * 2003-01-31 2009-10-14 株式会社日立製作所 ストレージシステムの制御方法、ストレージシステム、及びプログラム
JP2004234555A (ja) * 2003-01-31 2004-08-19 Hitachi Ltd ストレージシステムの制御方法、ストレージシステム、及びプログラム
JP2004234558A (ja) * 2003-01-31 2004-08-19 Hitachi Ltd 記憶デバイス制御装置、及びプログラム
JP4651913B2 (ja) 2003-02-17 2011-03-16 株式会社日立製作所 記憶装置システム
JP2004348464A (ja) * 2003-05-22 2004-12-09 Hitachi Ltd ストレージ装置、及び通信信号の整形回路
JP4060235B2 (ja) * 2003-05-22 2008-03-12 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の制御方法
GB0315157D0 (en) * 2003-06-28 2003-08-06 Ibm Safe write to multiply-redundant storage
US7254754B2 (en) * 2003-07-14 2007-08-07 International Business Machines Corporation Raid 3+3
US7281177B2 (en) * 2003-07-14 2007-10-09 International Business Machines Corporation Autonomic parity exchange
JP2005115771A (ja) * 2003-10-09 2005-04-28 Hitachi Ltd ディスクアレイ装置
JP4156499B2 (ja) * 2003-11-28 2008-09-24 株式会社日立製作所 ディスクアレイ装置
JP4497918B2 (ja) * 2003-12-25 2010-07-07 株式会社日立製作所 ストレージシステム
JP4634049B2 (ja) 2004-02-04 2011-02-16 株式会社日立製作所 ディスクアレイ装置における異常通知制御
JP2005227988A (ja) * 2004-02-12 2005-08-25 Hitachi Ltd ディスクアレイ装置、及びディスクアレイ装置の電源バックアップ方法
JP4933722B2 (ja) * 2004-06-16 2012-05-16 富士通株式会社 ディスク制御装置、ディスクパトロール方法およびディスクパトロールプログラム
US9043639B2 (en) * 2004-11-05 2015-05-26 Drobo, Inc. Dynamically expandable and contractible fault-tolerant storage system with virtual hot spare
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US8066515B2 (en) * 2004-11-17 2011-11-29 Nvidia Corporation Multiple graphics adapter connection systems
US7392428B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for recovering from abnormal interruption of a parity update operation in a disk array system
US7290199B2 (en) * 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
US20060123312A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation Method and system for increasing parallelism of disk accesses when restoring data in a disk array system
US20060123271A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation RAID environment incorporating hardware-based finite field multiplier for on-the-fly XOR
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
JP4435705B2 (ja) 2005-03-14 2010-03-24 富士通株式会社 記憶装置、その制御方法及びプログラム
JP2006268673A (ja) * 2005-03-25 2006-10-05 Hitachi Ltd 記憶制御装置及び記憶デバイスのエラー制御方法
US7711989B2 (en) * 2005-04-01 2010-05-04 Dot Hill Systems Corporation Storage system with automatic redundant code component failure detection, notification, and repair
US7523350B2 (en) * 2005-04-01 2009-04-21 Dot Hill Systems Corporation Timer-based apparatus and method for fault-tolerant booting of a storage controller
US9384818B2 (en) 2005-04-21 2016-07-05 Violin Memory Memory power management
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US20070103671A1 (en) * 2005-11-08 2007-05-10 Honeywell International Inc. Passive-optical locator
JP4577299B2 (ja) * 2006-11-15 2010-11-10 船井電機株式会社 光ディスク記録再生装置
JP2007200357A (ja) * 2007-04-20 2007-08-09 Hitachi Ltd ディスク制御装置
JP2009076172A (ja) * 2007-09-25 2009-04-09 Hitachi Ltd データ伝送方法、光ディスク記録方法及び光ディスク記録装置
JP2010033287A (ja) * 2008-07-28 2010-02-12 Hitachi Ltd ストレージサブシステム及びこれを用いたデータ検証方法
JP2010146625A (ja) * 2008-12-17 2010-07-01 Toshiba Storage Device Corp 記憶装置および記憶装置制御方法
JP5300496B2 (ja) * 2009-01-07 2013-09-25 パナソニック株式会社 半導体記憶装置、ホスト機器及び半導体記憶システム
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
WO2010137178A1 (en) 2009-05-25 2010-12-02 Hitachi,Ltd. Storage subsystem
JP5729746B2 (ja) * 2009-09-17 2015-06-03 日本電気株式会社 ストレージシステム及びディスクアレイ装置
US8214689B2 (en) * 2010-02-19 2012-07-03 Hitachi, Ltd. Disk array device and its control method
US8885969B2 (en) 2010-03-29 2014-11-11 Sony Corporation Method and apparatus for detecting coding artifacts in an image
WO2013089298A1 (ko) * 2011-12-16 2013-06-20 엘지전자 주식회사 디스크 어레이의 제어 장치 및 방법
JP2013131192A (ja) * 2011-12-22 2013-07-04 Fujitsu Ltd ストレージ装置及びストレージ装置の制御方法
EP2831735A1 (en) * 2012-04-27 2015-02-04 Hitachi, Ltd. Storage system and storage apparatus
US9665431B2 (en) * 2013-12-31 2017-05-30 Teredata Us, Inc. Interrupted write protection with generic storage
US10001947B1 (en) * 2015-05-08 2018-06-19 American Megatrends, Inc. Systems, methods and devices for performing efficient patrol read operations in a storage system
CN106708443B (zh) * 2017-01-03 2020-01-17 北京百度网讯科技有限公司 数据读写方法及装置
US10496335B2 (en) 2017-06-30 2019-12-03 Intel Corporation Method and apparatus for performing multi-object transformations on a storage device
CN110727611B (zh) * 2019-09-09 2022-01-07 无锡江南计算技术研究所 一种带状态监测的可配置一致性验证系统
JP7371483B2 (ja) 2019-12-18 2023-10-31 富士通株式会社 ストレージ制御装置及び制御プログラム
US20240012460A1 (en) * 2022-07-11 2024-01-11 Pure Storage, Inc. Monitoring a Power Connection Topology of a Data Center

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5379417A (en) * 1991-11-25 1995-01-03 Tandem Computers Incorporated System and method for ensuring write data integrity in a redundant array data storage system
EP0559488B1 (en) * 1992-03-06 1998-08-19 Data General Corporation Handling data in a system having a processor for controlling access to a plurality of data storage disks
US5325363A (en) * 1992-05-11 1994-06-28 Tandem Computers Incorporated Fault tolerant power supply for an array of storage devices
JP2857288B2 (ja) 1992-10-08 1999-02-17 富士通株式会社 ディスクアレイ装置
JP2888401B2 (ja) 1992-08-03 1999-05-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 冗長ディスクドライブアレイに対する同期方法
JPH08511368A (ja) * 1993-06-04 1996-11-26 ネットワーク・アプリアンス・コーポレーション 不揮発性メモリを用いてraidサブシステムにパリティを形成する方法
US5533190A (en) * 1994-12-21 1996-07-02 At&T Global Information Solutions Company Method for maintaining parity-data consistency in a disk array
EP0721162A2 (en) * 1995-01-06 1996-07-10 Hewlett-Packard Company Mirrored memory dual controller disk storage system
US5913927A (en) * 1995-12-15 1999-06-22 Mylex Corporation Method and apparatus for management of faulty data in a raid system
US5734814A (en) * 1996-04-15 1998-03-31 Sun Microsystems, Inc. Host-based RAID-5 and NV-RAM integration
US5889933A (en) * 1997-01-30 1999-03-30 Aiwa Co., Ltd. Adaptive power failure recovery

Also Published As

Publication number Publication date
EP0915420A2 (en) 1999-05-12
JPH11143649A (ja) 1999-05-28
US20020007469A1 (en) 2002-01-17
US6408400B2 (en) 2002-06-18
EP0915420A3 (en) 2010-02-10

Similar Documents

Publication Publication Date Title
JP3618529B2 (ja) ディスクアレイ装置
US6883112B2 (en) Storage device, backup and fault tolerant redundant method and computer program code of plurality storage devices
JP5768587B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
EP0608344B1 (en) System for backing-up data for rollback
AU710907B2 (en) Expansion of the number of drives in a raid set while maintaining integrity of migrated data
JP2501752B2 (ja) コンピユ―タ・システムのストレ―ジ装置及びデ―タのストア方法
KR100701563B1 (ko) 스토리지 제어 장치 및 방법
JP2743606B2 (ja) アレイ型記録装置
US7721143B2 (en) Method for reducing rebuild time on a RAID device
EP0521924B1 (en) Methods and apparatus for assigning signatures to members of a set of mass storage devices
US9081697B2 (en) Storage control apparatus and storage control method
JPH09231016A (ja) Raid記憶サブシステムにおけるデ−タのスナップショットコピ−作成方法とその装置
CN101523353A (zh) 在存在全局热备用磁盘的情况下用于故障驱动器的优化重建和向回复制的方法
JP2006252126A (ja) ディスクアレイ装置及びその再構築方法
JPH1049308A (ja) ホスト・ベースraid−5及びnv−ram統合システム
JP2001344076A (ja) ディスクアレイ装置
US6931519B1 (en) Method and apparatus for reliable booting device
JPH09269871A (ja) ディスクアレイ装置におけるデータ再冗長化方式
JP2857288B2 (ja) ディスクアレイ装置
JP2006079219A (ja) ディスクアレイ制御装置およびディスクアレイ制御方法
JP2002373059A (ja) ディスクアレイのエラー回復方法、ディスクアレイ制御装置及びディスクアレイ装置
US20050081088A1 (en) Array controller for disk array, and method for rebuilding disk array
JP2004102815A (ja) 論理ディスク間データコピー方法、論理ディスク間データコピー用プログラム、及びディスクコントローラ
JP2830840B2 (ja) ディスクアレイ修復処理方式及び方法
JP2002123372A (ja) キャッシュメモリ付きディスクアレイ装置及びそのエラー制御方法並びにその制御プログラムを記録した記録媒体

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040906

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20041109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041110

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081119

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081119

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091119

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101119

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101119

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111119

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111119

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121119

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121119

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131119

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees