(57)【要約】【課題】ディスクに障害が生じた場合であっても、データコヒーレンシを維持し、信頼性の高いディスクアレイ装置を提供すること。【解決手段】上位ホストからの指令により複数のディスクに対してデータを読み書き制御する制御部と、ディスクに対して読み書きするデータを一時的に記憶するキャッシュメモリとを備え、制御部が、キャッシュメモリ上において、上位ホストにて用いられる論理アドレスに関連付けたデータを物理アドレスに関連付けて前記ディスクに対して読み書き制御を行うディスクアレイ装置において、制御部が、ディスクに対して読み書き制御を行う際に、キャッシュメモリ上の物理アドレスに関連付けられたデータを当該物理アドレスに対応するディスク上のデータに対して優先して処理する。【選択図】        図１
2004213470.tif 000002
【特許請求の範囲】
【請求項１】
上位ホストからの指令により複数のディスクに対してデータを読み書き制御する制御部と、前記ディスクに対して読み書きするデータを一時的に記憶するキャッシュメモリとを備え、
前記制御部が、前記キャッシュメモリ上において、前記上位ホストにて用いられる論理アドレスに関連付けたデータを物理アドレスに関連付けて前記ディスクに対して読み書き制御を行うディスクアレイ装置において、
前記制御部が、前記ディスクに対して読み書き制御を行う際に、前記キャッシュメモリ上の前記物理アドレスに関連付けられたデータを当該物理アドレスに対応する前記ディスク上のデータに対して優先して処理する、ことを特徴とするディスクアレイ装置。
【請求項２】
前記制御部が、前記ディスクに対してデータの書き込み処理を行う前に、当該ディスクに書き込むデータを物理アドレスに関連付けて前記キャッシュメモリに格納する、ことを特徴とする請求項１記載のディスクアレイ装置。
【請求項３】
前記制御部が、前記ディスクにデータの書き込み処理を行うと共に当該書き込みが完了したことを確認した後に、前記キャッシュメモリ上で前記物理アドレスに関連付けられた書き込みデータを当該物理アドレスに関連付けられた状態から解除する、ことを特徴とする請求項２記載のディスクアレイ装置。
【請求項４】
前記制御部を、物理的に独立させて複数個備えたことを特徴とする請求項１，２又は３記載のディスクアレイ装置。
【請求項５】
前記キャッシュメモリは、不揮発メモリであることを特徴とする請求項１，２，３又は４記載のディスクアレイ装置。
【請求項６】
前記制御部は、前記いずれかのディスクに障害が生じても当該障害ディスクを縮退せずにデータ読み書き処理を行う、ことを特徴とする請求項１，２，３，４又は５記載のディスクアレイ装置。
【請求項７】
上位ホストからの指令により複数のディスクに対してデータを読み書きするディスクアレイ装置におけるデータ書き込み方法において、
上位ホストにて用いられる論理アドレスに関連付けられたデータを、前記ディスクに対してデータの書き込み処理を行う前に物理アドレスに関連付けて一時的にキャッシュメモリに格納し、
前記キャッシュメモリ上の前記物理アドレスに関連付けられたデータを、当該物理アドレスに対応する前記ディスク上のデータに対して優先して書き込み処理する、ことを特徴とするディスクアレイ装置を用いたデータ書き込み方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディスクアレイ装置にかかり、特に、上位ホストからの指令にて複数のディスクに対してデータを読み書きするディスクアレイ装置に関する。
【０００２】
【従来の技術】
ディスクアレイ装置では、複数のディスクをグループ化して、データに冗長性を持たせて格納するので、単一のディスク障害によってもデータが損失せず、データ処理を継続することができる。そして、データに冗長性を持たせる方法としては複数あり、ＲＡＩＤレベルと呼ばれる。複数のＲＡＩＤレベルのなかで、ＲＡＩＤ５は容量効率に優れているため、ＲＡＩＤ１と並んでとくに有用で普及している。ＲＡＩＤレベルについては、１９８７年カリフォルニア大学バークレイ校において論文化された、デビット．Ａ．パターソン、ガースギブソン、ランディカッツ教授による「Ａ  Ｃａｓｅ  ｆｏｒ  Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ」に詳細に解説されている。また、実用されているディスクアレイ装置の例として、特許文献１に開示されている。
【０００３】
ＲＡＩＤ技術によれば単一のディスク障害によってデータが損失することは無いが、ＲＡＩＤ制御を行うディスクアレイ装置内の制御部であるディレクタの障害に関してはＲＡＩＤ技術の範囲外である。従って、ディスク障害によってデータ損失がないので、ディレクタの障害によってもデータ損失せず、データ処理の継続が行われる装置が望ましい。そのために、ディレクタを二重化し、単一のディレクタ障害が発生しても、別のディレクタによって処理を継続できるようにするのが一般的である。但し、ＲＡＩＤ５においてディレクタ障害が発生したときに、データコヒーレンシ、すなわち、ディスクとメモリとのデータの同一性において問題が生じるので、それを図８を参照して説明する。
【０００４】
図８（ａ）、（ｂ）、（ｃ）を用いて、ＲＡＩＤ５における書き込み処理（ライト処理）を説明する。ディスク１０１〜１０５でＲＡＩＤ５を構成していて、データを記憶する領域（ストライプ）１１１〜１１５が形成されている。そして、領域１１１〜１１４にはユーザーデータが格納されていて、領域１１５には領域１１１〜１１４のパリティ情報が格納されている。
【０００５】
ここで、領域１１１に対してデータ１２１を書き込む（ライトする）場合について説明する。ライトする場合、領域１１１内を新しいデータに更新するだけでなく、領域１１５も新しいデータに対応したパリティに更新しなくてはならない。従って、まず、図８（ａ）で示すように、ライト動作に先立って、領域１１１と領域１１５から、旧データ１２２と旧パリティ１２３を読み出す。次に、図８（ｂ）で示すように、書き込みデータ１２１、旧データ１２２、旧パリティ１２３の３つのデータから新パリティ１２４を生成する。このようにパリティを生成するときには並列処理を可能とするためにディスク１１２〜１１４のアクセスを行わない方法で行う。最後に、図８（ｃ）で示すように、書き込みデータ１２１と新パリティ１２４を、それぞれディスク１０１，１０５に書き込む。
【０００６】
【特許文献１】
特開２００１−３４４０７６号公報
【０００７】
【発明が解決しようとする課題】
以上の処理過程において、障害が発生したときの回復処理を以下に説明する。図８（ｃ）において、書き込みデータが記憶されるデータディスク１０１とパリティデータが記憶されるパリティディスク１０５へのライト時に、いずれか一方には書き込むことができたが、他方には書き込めなかった場合に、単純に図８（ａ）〜（ｃ）の処理をすべて最初からやり直すとする。すると、パリティが不正な値になってしまうという不都合が生じる。パリティが不正な値になると、ディスクのいずれかが縮退した場合に、不正なパリティを用いてデータ普及することになり、データ化けとなってしまい、データ読み書きの信頼性の低下という問題が生じる。
【０００８】
そして、図８（ｃ）において一方のディスクに対しては書き込むことができたが、他方のディスクには書き込めなかった場合には、書き込めなかったディスクを縮退しなければならず、処理が遅延したり、ディスクの交換による運用コストが増大するという問題も生じる。
【０００９】
また、書き込み処理中にディレクタ（制御部）障害が発生したために書き込めなかった場合に、他のディレクタである代替ディレクタが書き込みデータ１２１を見つけて、図８（ａ）からの処理を行うことも考えられる。しかし、かかる場合には、上述したようにパリティ不正が発生してしまい、信頼性の低下という問題が生じる。
【００１０】
【発明の目的】
本発明は、上記従来例の有する不都合を改善し、特に、ディスクに障害が生じた場合であっても、データコヒーレンシを維持し、信頼性の高いディスクアレイ装置を提供することをその目的とする。
【００１１】
【課題を解決するための手段】
そこで、本発明では、上位ホストからの指令により複数のディスクに対してデータを読み書き制御する制御部と、ディスクに対して読み書きするデータを一時的に記憶するキャッシュメモリとを備え、制御部が、キャッシュメモリ上において、上位ホストにて用いられる論理アドレスに関連付けたデータを物理アドレスに関連付けて前記ディスクに対して読み書き制御を行うディスクアレイ装置において、制御部が、ディスクに対して読み書き制御を行う際に、キャッシュメモリ上の物理アドレスに関連付けられたデータを当該物理アドレスに対応するディスク上のデータに対して優先して処理する、という構成を採っている。
【００１２】
このような構成にすることにより、ディスクに対して書き込み、読み出し処理を行っている最中に、ディスク障害、あるいは、制御部に障害が発生し、ディスク上のデータが不定な状態になっても、物理アドレスに関連付けたられたデータを用いて読み書き処理を継続することで、データの安定性、具体的には、データコヒーレンシの維持を図ることができ、データの信頼性の向上を図ることができる。
【００１３】
また、制御部が、ディスクに対してデータの書き込み処理を行う前に、当該ディスクに書き込むデータを物理アドレスに関連付けてキャッシュメモリに格納する。
【００１４】
これにより、ディスクに書き込まれるデータは、書き込まれる前に物理アドレスに関連付けられてキャッシュメモリに記憶されるため、かかる状態で制御部に障害等が発生した場合であっても必ずキャッシュメモリに残ることとなる。従って、その後、当該キャッシュメモリ上の物理アドレスに関連付けられたデータがディスク上のデータに優先されて当該物理アドレスを参照してディスクに書き込まれるため、障害前と同様の書き込み処理を継続でき、データコヒーレンシの維持を図ることができる。
【００１５】
また、制御部が、ディスクにデータ書き込み処理を行うと共に当該書き込みが完了したことを確認した後に、キャッシュメモリ上で物理アドレスに関連付けられた書き込みデータを当該物理アドレスに関連付けられた状態から解除する。
【００１６】
これにより、確実に書き込み処理が完了したことを確認した後にキャッシュメモリ上にて物理アドレスに関連付けられた状態から解除されるため、完全にデータ書き込み処理が終了しない限りはキャッシュメモリに物理アドレスに関連付けられた書き込みデータが残ることとなる。従って、上述したように、当該データが後に優先して読み書き処理されるため、障害前の処理を継続でき、より信頼性の向上を図ることができる。
【００１７】
また、制御部を、物理的に独立させて複数個備えると望ましい。これにより、一つの制御部に障害が生じたとしても、別の制御部がキャッシュメモリ内の物理アドレスに関連付けられたデータの優先処理を引き継ぐことで、データコヒーレンシの維持を図ることができる。
【００１８】
また、キャッシュメモリは、不揮発メモリであると、障害によってディスクアレイ装置自体の動作が停止したとしても、キャッシュメモリには物理アドレスに関連付けられたデータが残っており、かかるデータに対して処理を継続することで、データコヒーレンシの維持を図ることができる。
【００１９】
さらに、制御部は、いずれかのディスクに障害が生じても当該障害ディスクを縮退せずにデータ読み書き処理を行う。これにより、障害ディスクをすぐに縮退することなくデータ処理を継続するため、発生した障害が一時的なもの、あるいは、局所的なものなどの軽障害である場合には、ディスク交換する必要がないため、運用コストの削減を図ることができる。
【００２０】
また、本発明では、上位ホストからの指令により複数のディスクに対してデータを読み書きするディスクアレイ装置におけるデータ書き込み方法であって、上位ホストにて用いられる論理アドレスに関連付けられたデータを、ディスクに対してデータの書き込み処理を行う前に物理アドレスに関連付けて一時的にキャッシュメモリに格納し、キャッシュメモリ上の物理アドレスに関連付けられたデータを、当該物理アドレスに対応するディスク上のデータに対して優先して書き込み処理する、というディスクアレイ装置を用いたデータ書き込み方法をも提供していている。
【００２１】
このようにしても、上述と同様の作用・効果を発揮し、上記目的を達成することができる。
【００２２】
【発明の実施の形態】
以下、本発明の一実施形態を、図１乃至図７を参照して説明する。図１は、本発明におけるデータ処理の概略を説明する説明図である。図２は、本発明の構成を示すブロック図であり、図３は、キャッシュメモリ内におけるデータ構成を示すブロック図である。図４乃至図７は、データ処理の動作を示すフローチャートである。
【００２３】
本発明におけるディスクアレイ装置は、パーソナルコンピュータやサーバコンピュータなどの上位ホストからの指令により、ＲＡＩＤ５によって複数のディスクに対してデータを読み書きするものである。このとき、ディスクアレイ装置は、データの読み書き処理を制御部であるディレクタにて制御し、また、ディスクに対して読み書きするデータをキャッシュメモリに一時的に記憶する。そして、キャッシュメモリ上においては、ディレクタが、上位ホストにて用いられる論理アドレスに関連付けたデータを物理アドレスに関連付け、そして、ディスクに対して読み書き制御を行っている。
【００２４】
まず、図１を参照して、上述したようなディスクアレイ装置における本発明の特徴を説明する。
【００２５】
図１では、ディスク１１〜１５によりＲＡＩＤ５を構成している。ここで、ＲＡＩＤ５とは、ＲＡＩＤ技術の１つであり、データをディスクに記録する際に、複数のディスクにデータを分散して書き込むと同時に、パリティを計算及び生成してディスクに書き込む。そして、パリティ用ディスクは特に決まっておらず、全ディスク分散して書き込む、というものである。そして、従来の技術において説明したように、データに冗長性を持たせたディスクへの書き込み方式の一つである。
【００２６】
また、ディスクに対して読み書きされるデータが一時的に記憶されるキャッシュメモリ３０上には、データを格納するための領域であるキャッシュページ（例えば、ライトデータ、新パリティデータなどが格納されている領域）が存在する。そして、キャッシュページは、論理ドメイン３１、物理ドメイン３２、ワークドメイン３３と名付けられたいずれかの領域に属している。ここで、論理ドメイン３１とは、論理アドレスに関連づけられたデータの属する場所であり、物理ドメインとは、物理アドレス３２に関連づけられたデータの属する場所である。また、ワークドメイン３３とは論理アドレスにも物理アドレスにも関連づけられていないデータの属する場所である。但し、後述するように、実際には図１のように各ドメイン毎に領域が分けられているわけではない。説明の便宜上、図１のように示したまでである。
【００２７】
今、キャッシュメモリ３０上に上位ホスト（図示せず）からのライトデータ４１が存在し、これをディスクに書き込むが、このデータは論理アドレスで検索可能なキャッシュページに格納されているので、論理ドメイン３１に属している。図１では、このデータをライトするのはディスク１１であり、対応するパリティはディスク１５に存在するので、ディスク１１と１５において上記論理アドレスに対応するアドレスから、あらかじめ旧データ４３と旧パリティ４４を読み出す（矢印Ａ１，Ａ２参照）。具体的には、旧データ４１は、ライトデータ４１が関連付けられている論理アドレスに対応するディスク１１上の領域（アドレス）２１に格納されているデータであり、同様に、旧パリティ４４は、ディスク１５の領域２５に格納されているデータであって、各ディスク１１，１５の領域２１，２５から読み出す。ちなみに、他のディスク１２〜１４にも、他のデータに対応する領域２２〜２４がそれぞれ形成されている。
【００２８】
そして、論理ドメイン３１内のライトデータ４１と、ワークドメイン３３内の旧データ４３、旧パリティ４４とから、新パリティ４５をワークドメイン３３内に生成する（矢印Ａ３，Ａ４，Ａ５参照）。ここで、旧データ４３、旧パリティ４４、新パリティ４５がワークドメイン３３のキャッシュページに属しているのは、読み書き処理のための一時的なデータであるからである。
【００２９】
次に、ライトデータ４１と新パリティ４５をディスク１１，１５に書き込む処理を行うが、本発明においてはディスクへの書き込み処理を行う前に、ライトデータ４１と新パリティ４５とをドメイン変換により、物理ドメイン３２のキャッシュページとする。すなわち、ライトデータ４１は、そもそも上位ホスト（図示せず）からの指令によりディスクアレイ装置に送られてきたため、論理ドメイン３１内では論理アドレスに関連付けられて管理されており、これを、物理アドレスに関連付けられるよう変換を行う（矢印Ａ６，Ａ７参照）。
【００３０】
その後、ディレクタは、物理ドメイン３２内のキャッシュページを、ディスク上の該当アドレスデータよりも優先して、書き込み処理を行う（矢印Ａ８，Ａ９参照）。すなわち、ディスクへの書き込み処理が行われる前か、実施中か、完了しているかに関わらず、ディスク上の該当アドレスのデータに対して、物理ドメインのキャッシュページが優先される。そのため、ディスク書き込み中にディレクタ障害が発生して、ディスク上のデータが不定な状態になっても、物理ドメイン３２のキャッシュページにライトデータが残っているため、かかるデータが再度書き込まれることにより、データコヒーレンシが維持されることになる。
【００３１】
次に、図２乃至図７を参照して、本発明の具体的な実施例を説明する。まず、図２に示すように、本発明であるディスクアレイ装置５０は、データの読み書きを制御する制御部であるディレクタ５１，５２を２つ備えている。このディレクタ５１，５２は、ＳＣＳＩなどの汎用インターフェースによって上位ホストであるホストコンピュータ６０に接続され、当該ホストコンピュータ６０から受領したコマンドを処理する。またディレクタ５１，５２は、やはり汎用インターフェースによってディスク５４〜５９に接続され、ホストコンピュータ６０から転送されたデータを、ディスクの適当な場所に格納したり、必要なデータを読み出したりする。ここで、ディレクタ５１，５２は、２つ備えてられていることを例示したが、必ずしもこの個数に限定されない。１つでもよく、３つ以上であってもよい。また、ディレクタ５１，５２は、それぞれ物理的に独立して形成されている。すなわち、一つのＣＰＵ内に２つの機能が存在するよう構成されているのではなく、図２の例では、２つの個別のハードウェアにて構成されている。
【００３２】
さらに、ディレクタ５１，５２は、同一の記憶手段である共有メモリ５３に接続されているが、この共有メモリ５３は、キャッシュメモリとして使用され、不揮発なメモリでもある。そして、ディレクタ５１，５２は、ホストコンピュータ６０とやりとりするデータを、共有メモリ５３に一旦格納することでホストからコマンドに高速に応答することができる。なお、共有メモリ５３は、不揮発なメモリにて構成されていなくてもよい。
【００３３】
次に、上記キャッシュメモリとして機能する共有メモリ５３内のデータ構造について、図３を参照して説明する。共有メモリ５３上には、論理ドメイン検索エントリテーブル７１、物理ドメイン検索エントリテーブル７２、キャッシュページ配列８０が存在する。そして、論理ドメイン検索エントリテーブル７１には、論理アドレスから一意に決まるポインタ７１ａ〜７１ｄであって、その参照先に当該論理アドレスに関連づけられるキャッシュページがある。従って、論理ドメイン検索エントリテーブル７１にて、いずれかのポインタ７１ａ〜７１ｄから、論理ドメイン３１に属するキャッシュページを検索することができる。同様に、物理ドメイン検索エントリテーブル７２には、物理アドレスから一意に決まるポインタ７２ａ〜７２ｄのいずれかのポインタから、当該物理アドレスに関連づけられるキャッシュページを検索することができる。すなわち、検索されたキャッシュページは、物理ドメイン３２に属しているキャッシュページである。
【００３４】
また、キャッシュページ配列８０には、複数のキャッシュページ８１〜９１と、各キャッシュページに対応する未書き込みフラグ８１ｆから９１ｆの領域とがある。そして、キャッシュページには、ディスクに対して読み書きされるデータ（ライトデータやパリティデータなど）が格納される。また、すべてのキャッシュページ８１〜９１は、上述した論理ドメイン３１、物理ドメイン３２、ワークドメイン３３のいずれかに属する。
【００３５】
ここで、図３の矢印に示すように、キャッシュページ８１，８２，８３，８７は論理ドメイン検索エントリテーブル７１から検索でき、従って、これらキャッシュページは、論理ドメイン３１に属している。また、物理ドメイン３２のキャッシュページ８４，９１は物理ドメイン検索エントリテーブル７２から検索できるようになっている。そして、残りのキャッシュページ、すなわち、論理アドレスにも物理アドレスにも関連づけられていないキャッシュページ８５，８６，８８，８９，９０，９１は、ワークドメイン３３に属するキャッシュページである。
【００３６】
また、図２に示すディレクタ５１，５２は、以下に説明する機能を有する。まず、ディスクに対して読み書き制御を行う際に、共有メモリ（キャッシュメモリ）５３上の物理アドレスに関連付けられたデータを当該物理アドレスに対応するディスク上のデータに対して優先して処理する機能を有する。従って、物理ドメイン３２に属するデータがある場合には、このデータに対する処理が、ディスクから読み出し処理や当該ディスクに対する他のデータの書き込み処理などよりも優先して行われる。
【００３７】
さらに、ディレクタ５１，５２には、ディスクに対する書き込み処理を行う前に、ディスクに書き込むデータを物理アドレスに関連付けて共有メモリ（キャッシュメモリ）５３に格納する機能を有する。従って、書き込み処理の対象となっているデータは、書き込み処理前に常に物理ドメイン３２内に格納されることとなる。そして、ディレクタ５１，５２は、ディスクにデータ書き込み処理を行なった後に、当該書き込みが完了したことを確認する機能を有し、この機能は、当該書き込み完了を確認した後に、当該書き込みデータをキャッシュメモリ上で物理アドレスに関連付けられた状態から開放する。すなわち、物理ドメイン３２から移動あるいは削除される。従って、書き込み対象のデータは、完全にディスクに書き込まれない限りは物理ドメイン３２に残ることとなり、その後、当該物理ドメイン３２内のデータが、ディスク上のデータよりも優先してディレクタ５１，５２にて処理される。
【００３８】
また、ディレクタ５１，５２には、いずれかのディスクに障害が生じても当該障害ディスクを縮退せずにデータ読み書き処理を行う機能を有する。すなわち、軽障害が発生した程度では読み書き処理を停止せずに読み書き処理を続行する。
【００３９】
そして、本実施形態では、ディレクタ５１，５２を２つ備えているが、このように複数のディレクタが備えられている構成においては、各ディレクタが他のディレクタの状況を監視し、当該他のディレクタに障害が生じたら、障害が生じたディレクタの処理を引き継いでディスクへの読み書き処理を行う。例えば、ディスクに共有メモリ５３内の物理ドメイン３２に格納されているデータを書き込む際に、一方のディレタ５１に障害が生じたら、他方のディレクタ５２は当該物理ドメイン３２のデータを優先的に処理し、障害前と同様にディスクへの書き込み処理を継続して実行する。
【００４０】
ここで、ディレクトリ５１，５２は、上述した機能の全てを必ずしも備えていることに限定されない。そのうちの一部の機能が備わっていなくてもよい。また、上記機能は、あらかじめ各機能用プログラムがＣＰＵであるディレクタ５１，５２に組み込まれており、あるいは、不揮発メモリなどの記憶手段に記憶されてこれを読み出すことにより、ディレクタ５１，５２内に各機能が構築され、これにより実現できる。なお、上記機能については、次の動作説明時に詳述する。
【００４１】
次に、図４乃至図７のフローチャートを参照して、本実施形態におけるディスクアレイ装置５０の動作を説明する。
【００４２】
まず、図４のリード処理について説明する。はじめに、ディスクアレイ装置５０のディレクタ５１，５２が、ホストコンピュータ６０からディスク上の所定のデータを読み出すようリードコマンドを受信する（ステップＳ１）と、共有メモリ５３内の論理ドメイン検索エントリテーブル７１を用いて、リード対象となる論理アドレスにデータがあるか、すなわち、論理ドメインキャッシュページがあるか否かを調べる（ステップＳ２）。以下、キャッシュページがあるか否かの判定をヒット判定と呼び、キャッシュページがあることをヒットするという。
【００４３】
そして、キャッシュページがヒットした場合、すなわち、対応するキャッシュページがある場合には（ステップＳ２で肯定判断）、当該キャッシュページからホストコンピュータ６０にデータ転送を行う（ステップＳ８）。逆に、キャッシュページがヒットしなかった場合には、論理アドレスからそれに対応する物理アドレスを算出してアドレス変換する（ステップＳ３）。そして、物理ドメイン検索エントリテーブル７２を用いて、変換した物理アドレスにデータがあるか、すなわち、物理ドメインキャッシュページのヒット判定を行う（ステップＳ４）。
【００４４】
ここで、キャッシュページがヒットした場合には（ステップＳ４にて肯定判断）、当該キャッシュページからワークドメイン３３のキャッシュページにデータコピーを行う（ステップＳ５）。また、キャッシュページがヒットしなかった場合には（ステップＳ４にて否定判断）、ディスクからワークドメイン３３のキャッシュページにデータをコピーする（ステップＳ６）。すると、いずれの場合にも、ワークドメイン３３のキャッシュページに必要なデータが格納されるので、データを格納したワークドメイン３３のキャッシュページを論理ドメイン３１のキャッシュページにドメイン変換する（ステップＳ７）。この処理は、具体的には、ワークドメイン３３のキャッシュページに、論理ドメイン検索エントリテーブル７１のポインタを参照させるよう、当該ポインタを書き換えることにより行う。これにより、当該キャッシュページを論理アドレスから検索できるようになる。その後、論理ドメインキャッシュページからホストコンピュータ６０にデータを転送する（ステップＳ８）。以上の処理によってリードコマンド処理は完了となる。
【００４５】
次に、図５のライト動作を説明する。まず、ディレクタ５１，５２が、ホストコンピュータ６０からデータをディスクに記録するというライトコマンドを受信すると（ステップＳ１１）、論理ドメイン検索エントリテーブル７１を用いて、その論理アドレスに対応する論理ドメインキャッシュページがあるか否かを判定する（ヒット判定、ステップＳ１２）。そして、キャッシュページがヒットした場合には（ステップＳ１２で肯定判断）、ホストコンピュータ６０からそのキャッシュページにライトデータを転送する（ステップＳ１４）。このとき、当該キャッシュページに付随する未書き込みフラグをセットする。
【００４６】
また、ステップＳ１２にてキャッシュページがヒットしなかった場合には、ホストコンピュータ６０からライトデータをワークドメイン３３のキャッシュページにデータ転送する（ステップＳ１３）。そして、データを格納したワークドメイン３３のキャッシュページを、論理ドメイン３１のキャッシュページにドメイン変換する（ステップＳ１５）。以上の処理によってライトコマンド処理は完了となる。
【００４７】
続いて、上記ライトコマンド処理によってキャッシュメモリに格納されたデータをディスクに書き込む処理を、図６のフローチャートを参照して説明する。ここで、ディレクタ５１，５２では、上述したコマンド処理動作とは非同期に、論理ドメイン３１の未書き込みデータの監視処理が、定期的に行われる（ステップＳ２１）。そして、監視処理は、具体的には、論理ドメイン３１の未書き込みフラグがセットされたキャッシュページを検索することにより行われる（ステップＳ２２）。
【００４８】
このとき、未書き込みフラグがセットされたキャッシュページが存在する場合には（ステップＳ２２で肯定判断）、そのキャッシュページの論理アドレスからそれに対応する物理アドレスを算出し、すなわち、アドレス変換し（ステップＳ２３）、その物理アドレスにおいて物理ドメイン検索エントリテーブル７２を用いて、物理ドメイン３２のキャッシュページのヒット判定を行う（ステップＳ２４）。
【００４９】
そして、キャッシュページがヒットした場合には、ライトデータは既に物理アドレスに関連付けられているため、このときには当該キャッシュページの書き込み処理は実行せず（ステップＳ２４にて肯定判断）、後の処理において書き込む（図７参照）。そして、物理ドメインキャッシュページがヒットしなかった場合には（ステップＳ２４にて否定判断）、ワークドメイン３３のキャッシュページに、該当するディスクから旧データと旧パリティデータを読み出す（ステップＳ２５、図１の符号４３，４４参照）。そして、旧データ、旧パリティ及びライトデータとを用いて、ワークドメイン３３のキャッシュページに新パリティデータを生成する（ステップＳ２６、図１の符号４５参照）。
【００５０】
続いて、ライトデータと新パリティを物理ドメイン３２にドメイン変換する（ステップＳ２７）。この処理は、具体的には、論理ドメイン検索エントリテーブル７１のポインタと物理ドメイン検索エントリテーブル７２のポインタを書き換えることで、ライトデータと新パリティデータを物理アドレスから検索できるようにする。また、同時に、そのキャッシュページの未書き込みフラグをリセットする。
【００５１】
その後、ドメイン変換したキャッシュページからディスクへデータ転送を行い、実際にライト処理を行う（ステップＳ２８）。そして、ディスクにライト処理を行った結果、エラーが発生していないかの判定を行い（エラー判定、ステップＳ２９）、エラーが発生していなければ（ステップＳ２９にて否定判断）、ライトデータ及び新パリティデータを削除する（ステップＳ３０）。この処理は、具体的には、物理ドメイン検索エントリテーブル７２のポインタを書き換えることで、当該キャッシュページをアドレスで検索できないようにし、ワークドメイン３３のキャッシュページとする処理である。すなわち、物理アドレスに関連付けられた状態から開放する処理である。一方、ライト処理にエラーがあった場合には（ステップＳ２９にて肯定判断）、ライトデータ及び新パリティデータを物理ドメイン３２に残したまま処理を終了する。
【００５２】
次に、ディスクライト処理において残った物理ドメインのキャッシュページをディスクに書き込む処理を、図７のフローチャートを用いて説明する。このとき、ディレクタ５１，５２では、コマンド処理動作とは非同期に、物理ドメイン３２のキャッシュページを定期的に監視している（ステップＳ３１）。具体的には、物理ドメイン３２のキャッシュページを検索する（ステップＳ３２）。
【００５３】
そして、物理ドメイン３２のキャッシュページが存在する場合には（ステップＳ３２にて肯定判断）、当該キャッシュページからディスクにデータ転送を行う（ステップＳ３３）。すなわち、物理ドメインに残ったライトデータ及び新パリティデータを、実際にディスクに書き込む。
【００５４】
その後、ディスクへのライト処理の結果をエラー判定し（ステップＳ３４）、エラーが発生していなければ（ステップＳ３４で否定判断）、当該キャッシュページを削除する（ステップＳ３５）。この処理は、具体的には上述と同様に、物理ドメイン検索エントリテーブル７２のポインタを書き換えることで、当該キャッシュページをアドレスで検索できなくし、ワークドメイン３３のキャッシュページとする処理である。一方で、エラーがあった場合には（ステップＳ３４にて肯定判断）、当該キャッシュページを物理ドメインに残したまま処理を終了する。
【００５５】
そして、上記図７に示す物理ドメインの監視処理が常に実行され、物理ドメインに残されているデータ、すなわち、物理アドレスに関連付けられているデータの優先的な書き込み処理が行われる。
【００５６】
このようにすることにより、ディスクへのライト処理において、書き込むライトデータと、それに伴って更新すべきパリティデータとを、ディスクへのライトを実行する前に、キャッシュメモリ上で物理アドレスによって検索可能な物理ドメインのキャッシュページとして管理することにより、書き込み処理中にディレクタが障害によりダウンした場合であっても、他の代替ディレクタで物理アドレスに関連付けられているデータの優先処理が継続されるため、障害発生前の書き込み処理を継続することができ、データコヒーレンシを維持することができる。その結果、ディスクアレイ装置の信頼性の向上を図ることができる。
【００５７】
また、ディレクタが二重化されてない場合に当該ディレクタ障害が発生したり、あるいは、二重化されていても電源障害のようにディスクアレイ装置全体が停止してしまうような障害が書き込み処理中に発生した場合であっても、キャッシュメモリを不揮発メモリとすることで、障害回復後の再起動後にも当該不揮発メモリに残されている物理アドレスに関連付けられたデータが優先的に処理されるため、障害発生前の書き込み処理を継続することができ、データコヒーレンシを維持できる。
【００５８】
さらに、ディスク障害によってエラーが発生したときでも、書き込めなかったデータを物理ドメインのキャッシュページとして管理することで、障害ディスクをすぐに縮退しなくてもデータ処理を継続することができる。そのため、発生したディスク障害が一時的な、または局部的な、軽障害である場合には、そのディスクを使い続けることが可能になり、そのためディスク交換の頻度が下がり、結果的に運用コストを削減することができる。
【００５９】
【発明の効果】
本発明は、以上のように構成され機能するので、これによると、ディスクに対するデータのリード・ライト処理中に、ディスクや制御部に障害が発生した場合であっても、ディスクに対する処理対象データが物理ドメインのキャッシュページ上に残り、リード・ライト処理において当該アドレスにアクセスする場合に、そのディスク上のデータよりも物理ドメインのキャッシュページ上のデータが優先されるので、データコヒーレンシを維持したまま処理を継続することができ、リード・ライト処理の信頼性の向上を図ることができる、という従来にない優れた効果を有する。
【００６０】
また、ライト処理中に電源障害が発生してディスクアレイ装置全体がダウンした場合でも、キャッシュメモリが不揮発なので書き込み中のデータが物理ドメインのキャッシュページ上に残る。障害が復旧してディスクアレイ装置が再起動するとディレクタはデータコヒーレンシを維持したまま処理を継続することができる。
【００６１】
また、物理ドメインのキャッシュページはいずれかのディレクタの定期監視によってディスクに書き込まれ削除されるが、ディスク障害によってデータの書き込みがエラーした場合には書き込めなかったデータが物理ドメインのキャッシュページ上に残るため、ディスク障害が一時的な障害である場合には、当該データが後で定期監視によってディスクに書き込まれ、また、局部的な障害である場合には、物理ドメインのキャッシュページとして残ることになり、ディスクを縮退せずに使い続けることができるため、ディスクの交換コストを削減することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態におけるデータ処理の概略を説明する説明図である。
【図２】本発明の一実施形態における構成を示すブロック図である。
【図３】図２に開示した共有メモリ（キャッシュメモリ）内のデータ構成を示すブロック図である。
【図４】ディスクアレイ装置によるリード処理の動作を示すフローチャートである。
【図５】ディスクアレイ装置によるライト処理の動作を示すフローチャートである。
【図６】図５に示すライト処理によってキャッシュメモリに格納されたデータをディスクに書き込む処理の動作を示すフローチャートである。
【図７】図６に示すライト処理においてキャッシュメモリの物理ドメインに残ったデータをディスクに書き込む処理の動作を示すフローチャートである。
【図８】図８（ａ）〜（ｃ）は、従来のディスクアレイ装置におけるデータの書き込み処理を説明する説明図である。
【符号の説明】
１１〜１５，５４〜５９  ディスク
２１〜２５  記憶領域（ディスク内）
３０  キャッシュメモリ
３１  論理ドメイン
３２  物理ドメイン
３３  ワークドメイン
４１，４２  ライトデータ
４３  旧データ
４４  旧パリティデータ
４５，４６  新パリティデータ
５０  ディスクアレイ装置
５１，５２  ディレクタ（制御部）
５３  共有メモリ（キャッシュメモリ）
６０  ホストコンピュータ
７１  論理ドメイン検索エントリテーブル
７２  物理ドメイン検索エントリテーブル
８０  キャッシュページ配列
８１〜９１  キャッシュページ
８１ｆ〜９１ｆ  未書き込みフラグ
【図１】
2004213470.tif 000003
【図２】
2004213470.tif 000004
【図３】
2004213470.tif 000005
【図４】
2004213470.tif 000006
【図５】
2004213470.tif 000007
【図６】
2004213470.tif 000008
【図７】
2004213470.tif 000009
【図８】
2004213470.tif 000010