JP3849648B2 - 記憶装置制御方法および記憶装置サブシステム - Google Patents

記憶装置制御方法および記憶装置サブシステム Download PDF

Info

Publication number
JP3849648B2
JP3849648B2 JP2003016869A JP2003016869A JP3849648B2 JP 3849648 B2 JP3849648 B2 JP 3849648B2 JP 2003016869 A JP2003016869 A JP 2003016869A JP 2003016869 A JP2003016869 A JP 2003016869A JP 3849648 B2 JP3849648 B2 JP 3849648B2
Authority
JP
Japan
Prior art keywords
data
parity
write
record
records
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 - Lifetime
Application number
JP2003016869A
Other languages
English (en)
Other versions
JP2003263365A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2003016869A priority Critical patent/JP3849648B2/ja
Publication of JP2003263365A publication Critical patent/JP2003263365A/ja
Application granted granted Critical
Publication of JP3849648B2 publication Critical patent/JP3849648B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Description

【0001】
【産業上の利用分野】
本発明は、ディスクアレイ向きのキャッシュメモリ付き制御装置の制御方法、および、ディスクアレイとキャッシュメモリ付き制御装置により構成される記憶装置サブシステムに関する。
【0002】
【従来の技術】
発明に最も近い公知例として、以下に示すPattersonの論文が知られている。
【0003】
エ−.シ−.エム.シグモッド コンファレンス プロシ−ディング,1988年,6月,ペ−ジ109−116(D.Patterson,et al:A Case for Redundant Arrays of Inexpensive Disks(RAID),ACM SIGMOD conference proceeding,Chicago,IL,June1-3,1988,pp.109-116)
Pattersonの論文は、ディスクアレイ上のデ−タ配置に関する技術を開示したものである
ディスクアレイは、物理的には複数の小容量のディスク装置を、処理装置には1台のディスク装置に見せかけ、高性能化/高信頼化を図るための機構である。
Pattersonの論文では、いくつかのデ−タ配置方法が提案されているが、代表的な1つのデ−タ配置方法に次のような配置方法がある。
【0004】
この配置方法は、処理装置とのリ−ド/ライト単位であるレコ−ドは、そのままの形でディスク装置上に配置であり以下、レコ−ド単位配置と呼ぶ。(Pattersonの論文で提案されているデ−タ配置方法の中には、1つのレコ−ドを分割して、複数のディスク装置に配置するという配置方法も提案されている。)レコ−ド単位配置の特長は、ディスクアレイを構成するそれぞれのディスク装置ごとにリ−ド/ライト処理が実行可能な点である。(レコ−ドを複数のディスク装置に分割すると、レコ−ドをリ−ド/ライトのために複数のディスク装置を専有する必要がある。)したがって、レコ−ド単位配置方法をとると、ディスクアレイ内で実行できるリ−ド/ライト処理の多重度を向上させることが可能となり、性能向上を実現できる。
【0005】
一方、ディスクアレイの高信頼化は、パリティデ−タと呼ばれる冗長デ−タをディスク装置に格納することにより実現する。レコ−ド単位配置においては、一定数の異なったディスク装置上の1つずつのレコ−ドから、1レコ−ドに相当するデ−タ量のパリティデ−タを作成し、1つのレコ−ドとして、ディスク装置上に格納する。これをパリティレコ−ドと呼ぶ。一方、パリテイレコ−ドとそれを生成したレコ−ドの集合をパリティグル−プと呼ぶ。さらに、パリティレコ−ド以外の処理装置から直接リ−ド/ライトされるレコ−ドをデ−タレコ−ドとよぶ。通常、同一パリティグル−プの各レコ−ドはそれぞれ別のディスク装置に格納される。また、パリティグル−プ内のパリティレコ−ドの数は特に1つには限定されない。
【0006】
パリティレコ−ドの内容は、パリティレコ−ドを生成したデ−タレコ−ドのうちのどの1つのレコ−ドに障害が発生しても、パリティレコ−ドとそれ以外のレコ−ドの内容から障害レコ−ドの内容が復元可能となるような内容である。したがって、あるパリティグル−プが格納されているディスク装置の集合のうちのどのディスク装置に障害が発生した場合にも、デ−タの回復が可能となる。通常、パリティグル−プ内のパリティレコ−ドの数がn個であれば、n台までのディスク装置に障害が発生してもそのパリティグル−プのデ−タは回復可能である。
【0007】
以上のレコ−ド単位配置をとった場合、ライト処理の性能が、従来のディスク装置の性能に比較して劣化するという問題が発生する。これは、ライト処理が発生したデ−タレコ−ドの内容が変更されると、パリティレコ−ドの更新も必要となるためである。しかも、パリティレコ−ドの更新値を決定するためには、ライト処理が発生したデ−タレコ−ドの更新値以外に以下の値の集合を得る前処理の実行が必要となる。
【0008】
(1)ライト処理が発生したレコ−ドの更新前の値、パリテイレコ−ドの更新前の値。
【0009】
(2)ライト処理が発生したレコ−ドが属するパリティグル−プ内の他のすべてのパリティレコ−ド以外のレコ−ドの値
通常、(1)に示した値を得る方が、オ−バヘッドが小さいため、ライト処理が発生した場合、(1)に示した値を得る方法がとられる。(1)に示した値を得るためには、パリティグル−プ内のパリティレコ−ドが1つでも、ディスク装置に2回のアクセスが必要となる。さらに、ライト処理が発生したレコ−ドの更新値、パリティレコ−ドの更新値を書き込むため、2回のディスク装置へのアクセスが必要となり、合わせて4回のディスクアクセスが必要となる。従来ディスクの場合、単純に、ライト処理が発生したレコ−ドの更新値をディスク装置に書き込むだけである。したがって、レコ−ド単位のディスクアレイでは、ライト要求に対するデイスクアクセス回数が4倍に増加することになる。
【0010】
レコ−ド単位配置をとったディスクアレイにおいては、特に、ライト処理を高速化する技術は開示さていない。しかし、ディスクアレイではなく、一般のディスク装置のライト処理の高速化に関しては、ディスクキャッシュを利用した以下のような技術が開示されている。
【0011】
特開昭55−157053では、ディスクキャッシュを有する制御装置において、ライトアフタ処理を利用してライト要求を高速化に関する技術が開示されている。
【0012】
具体的には、制御装置は、処理装置から受け付けたライトデ−タをキャッシュ内に書き込んだ段階で、ライト処理を完了させる。処理装置から受け付け、キャッシュ内に格納したデ−タのディスク装置への書き込みは、後から、制御装置のライトアフタ処理によって実行される。
【0013】
特開昭59−135563では、高信頼性を保証しながらライト処理を高速化する制御装置に関する技術が開示されている。
【0014】
特開昭59−135563では、制御装置内にキャッシュメモリ以外に不揮発性メモリを有し、処理装置から受け取ったライトデ−タをキャッシュメモリと不揮発性メモリに格納する。ディスク装置へのライトデ−タの書き込みは、制御装置が、ライトアフタ処理によって実行する。これにより、ライトアフタ処理の高信頼化を図る。
【0015】
一方、特開昭60−114947では、2重書きディスク装置を制御するディスクキャッシュを有する制御装置に関する技術が開示されている。
【0016】
特開昭60−114947では、制御装置は、処理装置から受け取ったライト要求に対し、一方のディスク装置とキャッシュメモリに、処理装置から受け取ったライトデ−タを書き込む。もう一方のディスク装置には、制御装置が、処理装置からのリ−ド/ライト要求とは非同期に、キャッシュメモリに格納したライトデ−タを後から書き込む。制御装置が、処理装置からのリ−ド/ライト要求とは非同期に、キャッシュメモリに格納したライトデ−タをディスク装置に後から書き込む動作をライトアフタ処理と呼ぶ。
【0017】
特開平2−37418では、2重書きディスク装置をディスクキャッシュを利用した高性能化に関する技術が開示されている。
【0018】
特開平2−37418でも、制御装置内にキャッシュメモリ以外に不揮発性メモリを有し、処理装置から受け取ったライトデ−タをキャッシュメモリと不揮発性メモリに格納する。2つのディスク装置へのライトデ−タの書き込みは、制御装置が、ライトアフタ処理によって実行する。
【0019】
特願平1−171812では、ディスクキャッシュを有し、ライトアフタ処理を実行する制御装置において、ライトアフタ処理を効率よく実行することを目的としたディスクキャッシュ内のライトアフタデ−タの管理デ−タ構造についての技術が開示されている。
【0020】
【発明が解決しようとする課題】
従来、レコ−ド単位配置のディスクアレイではなく、一般のディスク装置向けのディスクキャッシュ(以下、単にキャッシュと略す。)を利用したライトアフタ処理に関して開示されている技術は、いずれも、処理装置から受け付けキャッシュに格納したライトデ−タをディスク装置に書き込むという単純な技術であった。しかし、レコ−ド単位配置のディスクアレイに対するライト処理が、従来のディスク装置に比較して、処理オ−バヘッドが大きくなるのは、すでに、述べたように、パリティレコ−ドの更新値を作成しなければならないためである。したがって、パリティレコ−ドの更新値をどのように作成するかが、レコ−ド単位配置のディスクアレイのライト処理の高速化の鍵となる。これに対し、一般のディスク装置では、パリティレコ−ドの更新値の必要性はまったくなかったため、このような配慮はなかった。
【0021】
本発明の目的は、パリティレコ−ドの更新値の作成を効率化することにより、レコ−ド単位配置のディスクアレイのライト処理の高性能化を実現する点にある。基本的には、本発明でも特開昭60−114947、特開昭55−157053などの従来技術と同様に、制御装置は、キャッシュを利用したライトアフタ処理を用いる。しかし、すでに述べたように、本発明で解決すべき課題は、従来技術では開示されていない、パリティレコ−ドの更新値の作成を効率化にある。ここでは、パリティレコ−ドの更新値の作成を効率化という課題を、以下に示す課題1から課題3までの3つの課題にブレイクダウンする。以下、その具体内容を示す。
【0022】
課題1…パリティレコ−ドの更新値の作成のために用いる情報の選択方式。すなわち、どのような情報を用いて、パリティレコ−ドの更新値を作成するかということである。
【0023】
パリティレコ−ドの更新値を得るためには、以下の(1)内に示した値のセット、あるいは、(2)内に示した値のセットいずれかが必要となる。
【0024】
(1)ライト処理が発生したレコ−ドの更新前の値、パリテイレコ−ドの更新前の値。
【0025】
(2)ライト処理が発生したレコ−ドが属するパリティグル−プ内の他のすべてのパリティレコ−ド以外のレコ−ドの値
キャッシュがない場合、(2)に示したデ−タにより、パリティレコ−ドの更新値を作成する場合、パリティグル−プ内のライト対象デ−タレコ−ド以外のすべてのデ−タレコ−ドを読み出す必要があり、処理量が大きくなってしまう。このため、パリティレコ−ドの更新値を得るためには、ライト処理が発生したレコ−ドの更新前の値、パリテイレコ−ドの更新前の値を使用するのが通常の方法であると考えられる。
【0026】
しかし、キャッシュを利用する場合には、キャッシュ内にライト対象レコ−ドとパリティレコ−ドが存在する可能性がある点に着目すべきである。したがって、この特徴を活かすとさらに高速化が可能になる。
【0027】
課題2…パリティレコ−ド更新値の作成に関連した処理の非同期化。パリティレコ−ド更新値の作成に関連した処理を、処理装置から見て、非同期化することにより、パリティレコ−ド更新値の作成に関連した処理を処理装置から見た応答時間に含ませないようにし、応答時間の短縮を図る。
【0028】
課題3…パリティレコ−ドの更新値の作成契機。すなわち、どの契機で、パリティレコ−ドの更新値を作成するかということである。キャッシュを利用した場合、パリティレコ−ドの更新値の作成のために用いる情報のキャッシュ内の存在状況により、制御装置が、実行すべきデ−タ転送が異なってくる。したがって、以上の状況に応じて、パリティレコ−ドの更新後の値の作成契機を最適化する必要がある。
【0029】
【課題を解決するための手段】
以下、本発明が、以上述べてきた課題をいかに解決するかについて述べる。
【0030】
まず、課題1、すなわち、パリティレコ−ドの更新値を得るために用いる情報の選択方式について述べる。
【0031】
パリティグル−プヒット/ミス判定機能1…本機能では、パリティレコ−ドの更新値を得るために、ライト対象として指定されたデ−タレコ−ドの更新前の値とパリティレコ−ドの更新前の値を用いる。したがって、処理装置からライト対象として指定されたデ−タレコ−ドとパリティレコ−ドがキャッシュ内に存在している(以下、ヒットしていると呼ぶ。)か、存在しない(以下、ミスしていると呼ぶ)かどうかを判別する。この時、これらのレコ−ドのうちミスしているレコ−ドをキャッシュにロ−ドすることを決定する。
【0032】
パリティグル−プヒット/ミス判定機能2…本機能では、パリティレコ−ドの更新値を得るために、ライト対象として指定されたデ−タレコ−ドが属するパリティグル−プ内の他のデ−タレコ−ドを用いる。したがって、処理装置からライト対象として指定されたデ−タレコ−ドが属するパリティグル−プ内の他のデ−タレコ−ドがキャッシュ内にヒットしているか、ミスしているかどうかを判別する。この時、これらのレコ−ドのうちミスしているレコ−ドをキャッシュにロ−ドすることを決定する。
【0033】
パリティグル−プヒット/ミス判定機能3…本機能では、パリティレコ−ドの更新値を得るために用いる情報として、ライト対象として指定されたデ−タレコ−ドの更新前の値とパリティレコ−ドの更新前の値のキャッシュ内の存在状況と、ライト対象として指定されたデ−タレコ−ドが属するパリティグル−プ内の他のデ−タレコ−ドキャッシュ内の存在状況とを比較して、性能的に有利な方の情報を用いる。
【0034】
したがって、パリティグル−プヒット/ミス判定機能3は、処理装置からライト対象として指定されたデ−タレコ−ドが属するパリティグル−プ内のレコ−ド(デ−タレコ−ド、パリティレコ−ドを含む。)がキャッシュ内にヒットしているか、ミスしているどうかを判別する。
【0035】
この結果、パリティグル−プヒット/ミス判定機能1、パリティグル−プヒット/ミス判定機能2うち、性能的に有利な方を選択し、制御を移す。例えば、ライト対象として指定されたデ−タレコ−ドのパリティグル−プ内の他のすべてのデ−タレコ−ドがキャッシュに存在し、パリティレコ−ドが存在しない場合、パリティグル−プヒット/ミス判定機能2を選択した方が効率的である。一方、ライト対象として指定されたデ−タレコ−ドとパリティレコ−ドが、キャッシュに存在すれば、パリティグル−プヒット/ミス判定機能1を選択した方が、効果的である。
【0036】
次に、課題2に対応した非同期処理化について説明する。非同期処理化すべき処理は、処理装置から受け取ったライト要求に伴って実行する処理によって異なる。すなわち、パリティレコ−ドの更新値を作成するために、ライト対象として指定されたデ−タレコ−ドとパリティレコ−ドを利用するのか(パリティグル−プヒット/ミス判定機能1を利用するのか)、ライト対象として指定されたデ−タレコ−ドのパリティグル−プ内の他のデ−タレコ−ドを利用するのか(パリティグル−プヒット/ミス判定機能2を利用するのか)によって実行すべき非同期処理が異なってくる。
【0037】
さらに、特開昭60−114947のように、ライト対象として指定されたデ−タレコ−ドをディスク装置上で更新する処理を非同期化しない場合もある。一方、特開昭55−157053、特開昭59−135563のように、ライト対象として指定されたデ−タレコ−ドの更新値をキャッシュ(および、不揮発性メモリ)に書き込んだ段階で完了させ、ディスク装置への書き込みは非同期化する場合もある。
【0038】
本発明では、以下の4種類の非同期化機能を設ける。
【0039】
非同期化機能1…本機能は、パリティレコ−ドの更新値を作成するために、ライト対象として指定されたデ−タレコ−ドとパリティレコ−ドをキャッシュにロ−ドする場合に、使用する。したがって、本機能は、パリティグル−プヒット/ミス判定機能1と組み合わせて、用いられる。さらに、本機能は、ライト対象として指定されたデ−タレコ−ドをディスク装置上で更新する処理を、処理装置からのライト要求と同期化して実行する場合に用いられる。
【0040】
この場合、ライト対象として指定されたデ−タレコ−ドがキャッシュになかった時、ライト対象として指定されたデ−タレコ−ドをディスク装置上で更新する処理を実行する前に、前記のデ−タレコ−ドの更新前の値をキャッシュにロ−ドする処理を実行せざるを得ない。したがって、デ−タレコ−ドの更新前の値をキャッシュにロ−ドする処理は、処理装置からのライト要求と同期化して実行することになる。以上より、この場合、非同期化可能な処理は、以下の(1)と(2)に示した処理となる。
【0041】
(1)パリティレコ−ドがキャッシュに存在しない場合のロ−ド処理
(2)パリティレコ−ドの更新値のディスク装置への書き込み処理
非同期化機能2…本機能も、パリティレコ−ドの更新値を作成するために、ライト対象として指定されたデ−タレコ−ドとパリティレコ−ドをキャッシュにロ−ドする場合に、使用する。したがって、本機能も、パリティグル−プヒット/ミス判定機能1と組み合わせて、用いられる。ただし、本機能は、ライト対象として指定されたデ−タレコ−ドをディスク装置上で更新する処理を、処理装置からのライト要求とは非同期に実行する場合に用いられる。
【0042】
この場合、ライト対象として指定されたデ−タレコ−ドをディスク装置上で更新する処理を非同期化できるので、以下の(1)から(4)までに示したすべての処理を非同期化できる。
【0043】
(1)ライト対象として指定されたデ−タレコ−ドが、キャッシュにない場合、上記デ−タレコ−ドのロ−ド処理
(2)ライト対象として指定されたデ−タレコ−ドの更新値のディスク装置への書き込み処理
(3)パリティレコ−ドがキャッシュに存在しない場合のロ−ド処理
(4)パリティレコ−ドの更新値のディスク装置への書き込み処理
非同期化機能3…本機能は、パリティレコ−ドの更新値を作成するために、ライト対象として指定されたデ−タレコ−ドのパリティグル−プ内の他のデ−タレコ−ドをキャッシュにロ−ドする場合に、使用する。したがって、本機能は、パリティグル−プヒット/ミス判定機能2と組み合わせて、用いられる。さらに、本機能は、ライト対象として指定されたデ−タレコ−ドをディスク装置上で更新する処理を処理装置からのライト要求とは同期化して実行する場合に用いられる。 ライト対象として指定されたデ−タレコ−ドのパリティグル−プ内の他のデ−タレコ−ドは、ライト対象として指定されたデ−タレコ−ドをディスク装置に書き込んだ後でも、得ることができる。したがって、以下の(1)から(3)までに示したのすべての処理を非同期化することができる。
【0044】
(1)キャッシュに存在しないライト対象として指定されたデ−タレコ−ドのパリティグル−プ内の他のデ−タレコ−ドのキャッシュへのロ−ド処理
(2)パリティレコ−ドがキャッシュに存在しない場合のロ−ド処理
(3)パリティレコ−ドの更新値のディスク装置への書き込み処理
非同期化機能4…本機能も、パリティレコ−ドの更新値を作成するために、ライト対象として指定されたデ−タレコ−ドのパリティグル−プ内の他のデ−タレコ−ドをキャッシュにロ−ドする場合に、使用する。したがって、本機能も、パリティグル−プヒット/ミス判定機能2と組み合わせて、用いられる。ただし、本機能は、ライト対象として指定されたデ−タレコ−ドをディスク装置上で更新する処理を処理装置からのライト要求と非同期化する場合に用いられる。
【0045】
この場合、ライト対象として指定されたデ−タレコ−ドをディスク装置上で更新する処理を非同期化できるので、(1)から(4)までに示したすべての処理を非同期化できる。
【0046】
(1)キャッシュに存在しないライト対象として指定されたデ−タレコ−ドのパリティグル−プ内の他のデ−タレコ−ドのキャッシュへのロ−ド処理
(2)ライト対象として指定されたデ−タレコ−ドの更新値のディスク装置への書き込み処理
(3)パリティレコ−ドがキャッシュに存在しない場合のロ−ド処理
(4)パリティレコ−ドの更新値のディスク装置への書き込み処理
次に、課題3の解決、すなわち、パリティレコ−ドの更新後の値の作成契機について説明する。
【0047】
パリティレコ−ドの更新後の値の作成契機は、4種類の契機が考えられる。それぞれの作成契機に対応したそれぞれの機能について説明する。
【0048】
パリティ作成機能1…まず、第1に考えられるパリティレコ−ドの更新後の値の作成契機は、処理装置から指定されたデ−タレコ−ドに対する更新値を、制御装置が処理装置との間で転送する契機である。この場合、パリティレコ−ドの更新値を作成するために必要なレコ−ドはすべてキャッシュに格納しておく必要がある。すなわち、次の(1)、(2)に示したいずれかの情報である。
【0049】
(1)ライト対象として指定されたデ−タレコ−ド(この場合、処理装置から指定されたデ−タレコ−ドに対する更新値をキャッシュの別領域に格納する。)とパリティレコ−ド
(2)ライト対象として指定されたデ−タレコ−ドのパリティグル−プ内の他のすべてのデ−タレコ−ド
パリティ作成機能2…次に考えられるパリティレコ−ドの更新後の値の作成契機は、処理装置から指定されたデ−タレコ−ドに対する更新値以外に、パリティレコ−ドの更新値を得るために必要な情報(パリティ作成機能1で説明した(1)あるいは(2)の情報)をキャッシュにロ−ドする契機である。本パリティ作成契機においては、処理装置から受け付けたデ−タレコ−ドに対する更新値は、すでに、キャッシュに格納されていることになる。
【0050】
パリティ作成機能3…第3番目に考えられるパリティレコ−ドの更新後の値の作成契機は、キャッシュ内に格納したパリティレコ−ドの更新値を得るために必要な情報から、パリティレコ−ドの更新値を作成しながらディスク装置に作成値を書き込むという契機である。
【0051】
パリティ作成機能4…最後に考えられるパリティレコ−ドの更新後の値の作成契機は、パリティレコ−ドの更新値の作成を、制御装置のデ−タ転送処理とは非同期に行うという方法である。すなわち、制御装置は、パリティレコ−ドの更新値を作成するのに必要なすべての情報をキャッシュに格納した後、パリティレコ−ドの更新値を作成する処理を、デ−タ転送処理とは、非同期に実行する。
【0052】
【作用】
以下、本発明の作用について述べる。
【0053】
本発明においては、課題1、課題2、および、課題3を解決するために設ける機能についてそれぞれ、いくつかの代替案をあげた。したがって、本発明における作用は、課題1、課題2、および、課題3をそれぞれ解決する機能の組合せにより、表現される。
【0054】
まず、課題1のパリティレコ−ドの更新値を作成する情報の選択機能として、パリティ情報ヒット/ミス判定機能1、課題2の非同期化の機能として非同期化機能1を組み合わせた第1の組合せの作用について説明する。
【0055】
制御装置が、処理装置からライト要求を受け取ると、パリティ情報ヒット/ミス判定機能1により、ライト対象として指定されたデ−タレコ−ドとパリティレコ−ドの更新前の値がキャッシュ上に格納されているかどうかを調べる。
【0056】
まず、双方のレコ−ドがキャッシュに格納されている場合について説明する。非同期化機能1を用いた場合には、処理装置から指定されたデ−タレコ−ドの更新値のディスク装置上への書き込みは、処理装置からのライト要求に同期して実行する。したがって、制御装置は、処理装置から指定されたデ−タレコ−ドの更新値のディスク装置上への書き込みを実行する。この時、制御装置は、処理装置から受け取ったデ−タレコ−ドの更新値をキャッシュに書き込む。処理装置から受け取ったライト要求は、この段階で完了させることができるため、以上の手順により、ライト処理の高速化が図れる。
【0057】
パリティレコ−ドの更新値の作成する機能としてパリティ作成機能1を用いる場合には、処理装置から受け取ったデ−タレコ−ドの更新値をキャッシュに書き込む契機で、キャッシュ内のデ−タレコ−ドとパリティレコ−ドの更新前の値と処理装置から受け取ったデ−タレコ−ドの更新値により、パリティレコ−ドの更新値を作成する。
【0058】
一方、パリティレコ−ドの更新値の作成する機能としてパリティ作成機能4を用いる場合には、処理装置から受け取ったデ−タレコ−ドの更新値をキャッシュに書き込んだ後で、パリティレコ−ドの更新値を作成する。
【0059】
パリティレコ−ドの更新値のディスク装置への書き込みは、非同期化機能1により、制御装置が処理装置からのリ−ド/ライト要求とは非同期に実行する。一方、パリティ作成機能3を用いる場合、キャッシュ内のデ−タレコ−ドとパリティレコ−ドの更新前の値とデ−タレコ−ドの更新値により、パリティレコ−ド更新値を作成しつつディスク装置に作成値を書き込む。
【0060】
次に、デ−タレコ−ドの更新前の値がキャッシュに存在せず、パリティレコ−ドの更新前の値が、キャッシュに存在する場合について述べる。
【0061】
この場合、まず、制御装置は、処理装置からデ−タレコ−ドの更新値を受け取る前に、デ−タレコ−ドの更新前の値をキャッシュにロ−ドする。それ以降の作用は、デ−タレコ−ドとパリティレコ−ドの更新前の値がキャッシュ上に格納されている場合と同様である。
【0062】
この場合、デ−タレコ−ドの更新前の値をキャッシュにロ−ドする処理は、処理装置からのライト要求の応答時間内に含まれる。しかし、パリティレコ−ドの書き込み時間などは、ライト要求の応答時間内に含まれないため、従来に比べ高速なライト処理の高速化が図れる。
【0063】
次に、デ−タレコ−ドの更新前の値がキャッシュに存在し、パリティレコ−ドの更新前の値が、キャッシュに存在しない場合について述べる。
【0064】
この場合、制御装置は、処理装置から受け取ったデ−タレコ−ドの更新値を、ディスク装置とキャッシュに書き込む。この場合も処理装置から受け取ったライト要求は、この段階で、完了させることができるため、ライト処理の高速化が図れる。
【0065】
パリティレコ−ドの更新前の値のキャッシュへのロ−ド処理とパリティレコ−ドの更新値のディスク装置への書き込みは、非同期化機能1により、制御装置が、非同期に実行する。パリティレコ−ドの更新値の作成は、パリティ作成機能2を用いる場合、パリティレコ−ドの更新前の値をキャッシュへロードするロ−ド処理実行時に行うことになる。
【0066】
一方、パリティ作成機能4を用いる場合には、パリティレコ−ドの更新前の値をキャッシュへのロードするロ−ド処理が終了した後で、パリティレコ−ドの更新値を作成する。
【0067】
パリティ作成機能3を用いる場合、キャッシュ内のデ−タレコ−ドとパリティレコ−ドの更新前の値とデ−タレコ−ドの更新値により、パリティレコ−ド更新値を作成しつつディスク装置に作成値を書き込む。
【0068】
最後に、デ−タレコ−ドの更新前の値とパリティレコ−ドの更新前の値がキャッシュに存在しない場合について述べる。この場合、まず、非同期化機能1により、まず、デ−タレコ−ドの更新前の値をキャッシュにロ−ドする。これ以降の処理は、デ−タレコ−ドの更新前の値がキャッシュに存在し、パリティレコ−ドの更新前の値が、キャッシュに存在しない場合と同様である。この場合も、デ−タレコ−ドの更新前の値をキャッシュにロ−ドする処理は、処理装置からのライト要求の応答時間内に含まれる。しかし、パリティレコ−ドの書き込み時間などは、ライト要求の応答時間内に含まれないため、従来に比べ高速なライト処理の高速化が図れる。
【0069】
第2の組合せとして、課題1のパリティレコ−ドの更新値を作成する情報の選択機能として、パリティ情報ヒット/ミス判定機能1、課題2の非同期化の機能として非同期化機能2を組み合わせた場合の作用について説明する。
【0070】
制御装置が、処理装置からライト要求を受け取ると、パリティヒット/ミス判定機能1により、ライト対象として指定されたデ−タレコ−ドとパリティレコ−ドの更新前の値がキャッシュ上に格納されているかどうかを調べるのは第1の組合せの場合と同様である。
【0071】
まず、双方のレコ−ドがキャッシュに格納されている場合について説明する。非同期化機能2を用いた場合には、処理装置から指定されたデ−タレコ−ドの更新値のディスク装置上への書き込みは、処理装置からのライト要求とは非同期に実行する。したがって、制御装置は、処理装置から指定されたデ−タレコ−ドの更新値をキャッシュに書き込む。
【0072】
パリティレコ−ドの更新値の作成するパリティ作成機能1を用いた場合、処理装置から受け取ったデ−タレコ−ドの更新値をキャッシュに書き込む契機で、キャッシュ内のデ−タレコ−ドとパリティレコ−ドの更新前の値と処理装置から受け取ったデ−タレコ−ドの更新値により、パリティレコ−ドの更新値を作成する。 一方、パリティレコ−ドの更新値の作成する機能としてパリティ作成機能4を用いる場合には、処理装置から受け取ったデ−タレコ−ドの更新値をキャッシュに書き込んだ後で、パリティレコ−ドの更新値を作成する。
【0073】
パリティレコ−ドの更新値のディスク装置への書き込みは、非同期化機能2により、制御装置が非同期に実行する。一方、パリティ作成機能3を用いる場合、キャッシュ内のデ−タレコ−ドとパリティレコ−ドの更新前の値とデ−タレコ−ドの更新値により、パリティレコ−ド更新値を作成しつつディスク装置に作成値を書き込む。同様に、デ−タレコ−ドの更新値の書き込みも、非同期化機能2により、制御装置が非同期に実行する。
【0074】
次に、デ−タレコ−ドとパリティレコ−ドの更新前の値の中にキャッシュ上に格納されていないものがある場合について説明する。
【0075】
制御装置は、非同期化機能2にしたがって、キャッシュにないこれらの情報を非同期にロ−ドする。パリティ作成機能2を用いる場合、パリティレコ−ドの更新値の作成契機は、キャッシュになかったこれらの情報の中の最後の情報を、キャッシュにロ−ドする契機となる。また、パリティ作成機能3を用いる場合は、パリティレコ−ド更新値を作成しつつディスク装置に作成値を書き込む。一方、パリティ作成機能4を用いる場合には、パリティレコ−ドの更新前の値をキャッシュへロードするロ−ド処理が終了した後で、パリティレコ−ドの更新値を作成する。
【0076】
第2の組合せにおいては、常に、処理装置から受け取ったライト要求は、制御装置が、処理装置から指定されたデ−タレコ−ドの更新値をキャッシュに書き込んだ段階で、完了させることができる。以上により、ライト処理の高速化が図れる。
【0077】
次に、第3の組合せとして、課題1のパリティレコ−ドの更新値を作成する情報の選択機能として、パリティ情報ヒット/ミス判定機能2、課題2の非同期化の機能として非同期化機能3を組み合わせた場合の作用について説明する。
【0078】
制御装置が、処理装置からライト要求を受け取ると、パリティ情報ヒット/ミス判定機能2により、ライト対象として指定されたデ−タレコ−ドのパリティグル−プ内の他のデ−タレコ−ドがキャッシュ上に格納されているかどうかを調べる。
【0079】
まず、これらの情報がすべて格納されている場合について述べる。この場合には、パリティ情報ヒット/ミス判定機能1、非同期化機能1を第1の組合せの作用と類似しているため説明を省略する。
【0080】
次に、これらの情報のうちキャッシュに格納されていない情報がある場合の作用について述べる。
【0081】
制御装置は、非同期化機能3を用いて、非同期化機能1を用いた時と同様、処理装置から指定されたデ−タレコ−ドの更新値を、キャッシュとディスク装置にの書き込む。さらに、制御装置は、非同期化機能3にしたがって、キャッシュにないパリティグル−プ内の他のデ−タレコ−ドを非同期にロ−ドする。
【0082】
パリティレコ−ドの更新値の作成については、第2の組合せにおいて、パリティレコ−ドの更新値を作成するために用いる情報がキャッシュにない場合の作用と類似しているため、説明を省略する。
【0083】
第3の組合せにおいては、常に、処理装置から受け取ったライト要求は、制御装置が、処理装置から指定されたデ−タレコ−ドの更新値をキャッシュとディスク装置に書き込んだ段階で、完了させることができる。以上により、ライト処理の高速化が図れる。
【0084】
次に、第4の組合せとして、課題1のパリティレコ−ドの更新値を作成する情報の選択機能として、パリティ情報ヒット/ミス判定機能2、課題2の非同期化の機能として非同期化機能4を組み合わせた場合の作用について説明する。
【0085】
制御装置が、処理装置からライト要求を受け取ると、パリティ情報ヒット/ミス判定機能2により、ライト対象として指定されたデ−タレコ−ドのパリティグル−プ内の他のデ−タレコ−ドがキャッシュ上に格納されているかどうかを調べるのは、第3の組合せと同様である。
【0086】
この後のデ−タレコ−ドの更新値、パリティレコ−ドの更新値のディスク装置への書き込みは、第2の組合せの作用と類似しているため説明を省略する。
【0087】
第4の組合せにおいても、第2の組合せと同様、常に、処理装置から受け取ったライト要求は、制御装置が、処理装置から指定されたデ−タレコ−ドの更新値をキャッシュとディスク装置に書き込んだ段階で、完了させることができる。以上により、ライト処理の高速化が図れる。
【0088】
第5の組合せとして、パリティ情報ヒット/ミス判定機能3を用いた場合の作用について述べる。
【0089】
制御装置が、処理装置からライト要求を受け取ると、パリティ情報ヒット/ミス判定機能3により、ライト対象として指定されたデ−タレコ−ドとパリティレコ−ドの更新前の値、および、パリティグル−プ内の他のデ−タレコ−ドがキャッシュ上に格納されているかどうかを調べる。そして、下記の(1)、(2)のどちらのレコ−ドのセットを用いて、パリティレコ−ドの更新値を作成したら性能的に有利かを判断し、性能的に有利な方のレコ−ドのセットを用いることを決定する。
【0090】
(1)ライト対象として指定されたデ−タレコ−ドとパリティレコ−ドの更新前の値
(2)パリティグル−プ内の他のデ−タレコ−ド
(1)のレコ−ドのセットを用いることを決定し、パリティ情報ヒット/ミス判定機能1と非同期化機能1を用いた場合には、第1の組合せで説明した作用と同様の作用となる。また、パリティ情報ヒット/ミス判定機能1と非同期化機能2を用いた場合には、第2の組合せで説明した作用と同様の作用となる。
【0091】
(2)のレコ−ドのセットを用いることを決定し、パリティ情報ヒット/ミス判定機能2と非同期化機能3を用いた場合には、第3の組合せで説明した作用と同様の作用となる。また、パリティ情報ヒット/ミス判定機能2と非同期化機能4を用いた場合には、第4の組合せで説明した作用と同様の作用となる。
【0092】
パリティ情報ヒット/ミス判定機能3により、キャッシュ内の各レコ−ドの存在状況により、性能的に有利なレコ−ドのセットにより、パリティレコ−ドの更新値を作成することができる。
【0093】
【0094】
【実施例】
以下、本発明の実施例を説明する。本発明は、レコ−ド単位配置を行ったディスクアレイに対し、ディスクキャッシュを用いたライト動作に関する。したがって、以下の実施例では、ライト動作に関する記述のみを行う。
【0095】
まず、各実施例に共通する内容について説明する。図13は、本発明の対象となる計算機システムの構成である。計算機システムは、処理装置1300、制御装置1305、1台以上のディスク装置1304により構成する。処理装置1300は、CPU1301、主記憶1302、チャネル1303により構成される場合があってもよい。制御装置1305は、キャッシュメモリ1308、ディレクトリ1309を含む。キャッシュメモリ(以下、単にキャッシュと略す。)1308は、ディスク装置1304の中のアクセス頻度の高いデ−タをロ−ドしておく。ディレクトリ1309には、キャッシュ1308の管理情報を格納する。制御装置1305は、処理装置1300からのリ−ド/ライト要求にしたがって、処理装置1300とディスク装置1304、あるいは、キャッシュ1308との転送を行う。さらに、制御装置1305は、処理装置1300からのリ−ド/ライト要求とは、非同期に、ディスク装置205とキャッシュ1308との間で、リ−ド/ライト動作を実行する。ただし、図17に示したように、制御装置内に2つ以上のディレクタ1307を含み、それぞれのディレクタ1307が処理装置1300からリ−ド/ライト要求を受け付け、リ−ド/ライト動作を実行するような構成でも本発明は有効である。
【0096】
図14は、本発明の対象となる別の計算機システムの構成である。図13に示した構成との差異は、制御装置1305が、さらに、不揮発性メモリ1400と不揮発性メモリ管理情報1401を含む点である。不揮発性メモリ1400は、不揮発の媒体であり、キャッシュ1308と同様に、ディスク装置1304の中のアクセス頻度の高いデ−タをロ−ドしておく。不揮発性メモリ管理情報1401も不揮発の媒体であり、不揮発性メモリ1400の管理情報を格納する。
【0097】
図13、および、図14に示した計算機システムにおいては、制御装置1305は、処理装置1300から受け付けたライト要求に対する動作として、2つの動作のいずれかを選択できる。
【0098】
まず、第1の動作を説明する。第1の方法は、ライトスル−動作1310と呼ばれる。制御装置1305は、ライトスル−動作1310を実行する場合、処理装置1300から受け取ったライトデ−タ1311を、ディスク装置205に書き込む。ただし、制御装置1305は、キャッシュ1308内にもそのライトデ−タ1312を書き込む。図14においては、ライトスル−動作1310は記載していないが、本構成においても、制御装置1305は、ライトスル−動作1310を実行できる。
【0099】
次に、第2の方法を示す。第2の方法は、高速ライト1311と呼ばれる。制御装置1305は、高速ライト1311を実行する場合、処理装置1300から受け取ったライトデ−タ1312をキャッシュ208に書き込んだ段階で、ライト処理を完了させる。この場合、ディスク装置1304にアクセスすることなく、ライト要求を完了させることができるため、高速な処理が実現することができる。キャッシュ1308に書き込んだライトデ−タ1312は、制御装置1305が、空いた時間を利用して、処理装置1300からの要求とは、非同期に、ディスク装置1304に書き込む。以上のライト処理を、ライトアフタ処理1313と呼ぶ。
【0100】
図14の計算機システムにおいては、さらに、制御装置1305は、高信頼/高速ライト1402を実行できる。高速ライト1311との相違は、ライトデ−タ1312を不揮発性メモリ1400にも書き込む点である。これにより、制御装置1305が、ライトアフタ処理1313を実行する前に、キャッシュ1308がダウンしても、ライトデ−タ1311の保障を行うことができる。
【0101】
次に、図15と図16を用いて、本発明の対象となるレコ−ド単位配置を行ったディスクアレイのデ−タの記録形式について説明する。
【0102】
図15に示すように、ディスク装置1304において、リ−ド/ライトされる単位は、レコ−ド1502と呼ばれる。本発明においては、ディスク装置1304上には、レコ−ド1502は2種類存在し、デ−タレコ−ド1500とパリティレコ−ド1501が格納される。デ−タレコ−ド1500は、処理装置1300がリ−ド/ライトするデ−タを格納したレコ−ドである。(すなわち、デ−タレコ−ド1500が通常のレコ−ド1502ということになる。)一方、パリティレコ−ド1501は、ディスク装置1304に障害が発生した時、その回復処理に用いるレコ−ドである。
【0103】
図16は、レコ−ド単位配置を行ったディスクアレイにおけるパリティグル−プ1600の構成である。ディスク装置a1601からディスク装置d1604までのm個のディスク装置1304上に、それぞれ対応するデ−タレコ−ド1501が格納されている。これらのm個のデ−タレコ−ド1501から、n個のパリティレコ−ド1501が作成され、それぞれ対応するディスク装置e1605からディスク装置f1606に格納される。以上、図16では、m個のデ−タレコ−ド1500とn個のパリティレコ−ド1501から、パリティグル−プ1600が構成されている。一般に、n個のパリティレコ−ド1501を含むパリティグル−プ1600においては、そのパリティグル−プ1600内のレコ−ド1502が格納されているm+n個ディスク装置のうち、n台のディスク装置1304が故障しても、パリティグル−プ1600内のすべてのレコ−ド1502の内容を回復することができる。
【0104】
図16のパリティグル−プ1600においては、ディスク装置a1601からディスク装置d1604にデ−タレコ−ド1500が、ディスク装置e1605からディスク装置f1606に格納されている。ただし、ディスク装置a1601からディスク装置d1604までのディスク装置1304上に格納するすべてのレコ−ド1502を、デ−タレコ−ド1500とする必要はない。同様に、ディスク装置e1605からディスク装置f1606までのディスク装置1304上のすべてのレコ−ド1502が、パリティレコ−ド1500というわけではない。
【0105】
また、図16においては、パリティグル−プ1600が、ディスク装置a1601からディスク装置f上に作成されているが、パリティグル−プ1600が作成されるディスク装置1304の集合は、各パリティグル−プ1600が異なったディスク装置1304上に存在してもよい。例えば、別のパリティグル−プ1600がディスク装置b1602からディスク装置g1607に作成されてもよい。同様に、パリティグル−プ1600を構成するレコ−ド1502の数もm+n個には限定されない。
【0106】
ただし、以下の実施例においては、簡略化のため、パリティグル−プ1600の構成を、図16に示したように、m個のデ−タレコ−ド1500とn個のパリティレコ−ド1501からなる構成とする。
【0107】
図18は、キャッシュ1308の構成である。キャッシュ1308は、セグメント1800により構成される。セグメント1800は、ディスク装置1304上の1つのレコ−ド1502を格納する。
【0108】
図19は、セグメント1800の構成である。セグメント1800は、ポインタ1900とデ−タ領域1901により構成される。ポインタ1900は、セグメント1800が空いている時、他の空いたセグメント1800とリンクするため用いる。デ−タ領域1901は、レコ−ド1502を格納する領域である。
【0109】
図20は、ディレクトリ1309の構成である。レコ−ド票2000は、レコ−ド1502がキャッシュ208上に格納されているか否かを確かめるため用いる。
【0110】
PG(Parity Group)管理情報2001は、キャッシュ1308に格納されたパリティグル−プ1600内のレコ−ド1502を管理するための情報である。
【0111】
空きセグメントキュ−管理ポインタ2002、空きPG管理情報ポインタ2003は、それぞれ空いた状態にあるセグメント1800とPG管理情報2001を管理するポインタである。
【0112】
ディスク装置占有情報2004は、ディスク装置1304対応にもつ情報であり、対応するディスク装置1304が占有状態にあること、すなわち、動作中であることを示す。
【0113】
ディスク装置待ち情報2005も、ディスク装置1304対応にもつ情報であり、対応するディスク装置1304に対する処理装置1300からのリ−ド/ライト要求が待ち状態にあることを示す。
【0114】
図21は、レコ−ド票2000の構成である。レコ−ド票2000は、各ディスク装置1304上のレコ−ド1502対応にエントリをもつ。エントリは、ディスク装置1304の番号順、同一ディスク装置1304はレコ−ド1502の番号順に並べられる。エントリの内容は、当該レコ−ドに対応するパリティグル−プ1600に属するレコ−ド1502がキャッシュ1308上にまったく格納されていない場合、null値をとる。一方、当該レコ−ドに対応するパリティグル−プ1600に属するレコ−ド1502がキャッシュ1308上に格納されている場合、対応するPG管理情報2001を指す。
【0115】
図22は、PG管理情報2001の構成である。
【0116】
空きポインタ2206は、当該PG管理情報2202が、空いている時、他の空いたPG管理情報2202とリンクするため用いる。
【0117】
更新前セグメントポインタ2200は、対応するレコ−ド1502の更新前の内容が格納されているセグメント1800を表す。一方、更新後セグメントポインタ2201は、対応するレコ−ド1502の更新後の内容が格納されているセグメント1800を表す。更新前セグメントポインタ2200、更新後セグメントポインタ2201の双方が、null値の場合、当該レコ−ド1502はキャッシュ1308に格納されていないことになる。
【0118】
ライトアフタビット2202は、対応するレコ−ド1502のライトアフタ処理1313を実行すべきことを示す情報である。
【0119】
ロ−ド要求ビット2203は、対応するレコ−ド1502をキャッシュ1308にロ−ドすべきことを示す情報である。
【0120】
更新前セグメントポインタ2200、更新後セグメントポインタ2201、ライトアフタビット2202、ロ−ド要求ビット2203は、レコ−ド1502に対応に存在するため、PG管理情報2001内には、それぞれm+n個存在する。(本実施例では、パリティグル−プ1600は、m+n個のレコ−ド1502で構成されることを前提としているため。)
ロック情報2204は、当該PG管理情報2001に対応するパリティグル−プ1600に対応するレコ−ド1502を操作中であることを示す。レコ−ド単位配置を行ったディスクアレイにおいて、ライト動作は、デ−タレコ−ド1501だけでなく、すべてのパリティレコ−ド1501を更新する。したがって、同一パリティグル−プ1600内のライト動作は、ロック情報2204に従って、順次実行する(シリアライズする)必要がある。
【0121】
ロック待ち情報2205は、ライト動作を順次実行することを保証するため、待ち状態に入った処理装置1300からのリ−ド/ライト要求が待ち状態にあることを示す。
【0122】
パリティ作成ビット2206は、当該PG管理情報2001内に、パリティレコ−ド1501の更新値を作成するのに必要なレコ−ド1502が、キャッシュ1308に格納されたことを意味する。
【0123】
図23は、空きセグメントキュ−2300の構成を表す。先頭の空いた状態にあるセグメント1800は、空きセグメントキュ−管理ポインタ2002がポイントする。以降、それぞれのセグメント1800内のポインタ1900によってポイントされる。
【0124】
図24は、空きPG管理情報キュ−2400の構成を表す。先頭の空いた状態にあるPG管理情報2001は、空きPG管理情報ポインタ2003がポイントする。以降、それぞれのPG管理情報2001内の空きポインタ2206によってポイントされる。
【0125】
図25は、不揮発性メモリ1400の構成である。不揮発性メモリ1400は、不揮発性セグメント2500により構成される。不揮発性セグメント2500の構成は、セグメント1800と同様の構成であるため、説明を省略する。
【0126】
また、不揮発性メモリ管理情報1401の構成は、ディレクトリ1309と同様であるため説明を省略する。
【0127】
すでに述べたように、本発明の目的は、パリティレコ−ド1501の更新値の作成を効率化することにより、レコ−ド単位配置のディスクアレイのライト処理の高性能化を実現する点にある。ここでは、パリティレコ−ドの更新値の作成を効率化という課題を、3つの課題にブレイクダウンする。以下、その概要を示す。 課題1…パリティレコ−ド1501の更新値の作成のために用いる情報の選択方式。すなわち、どのような情報を用いて、パリティレコ−ド1501の更新値を作成するかということである。
【0128】
課題2…パリティレコ−ド更新値の作成に関連した処理の非同期化。パリティレコ−ド更新値の作成に関連した処理を、処理装置から見て、非同期化することにより、パリティレコ−ド更新値の作成に関連した処理を処理装置から見た応答時間に含ませないようにする。
【0129】
課題3…パリティレコ−ドの更新値の作成契機。すなわち、どの契機で、パリティレコ−ドの更新値を作成するかということである。
【0130】
以下、本発明が、以上述べてきた課題をいかに解決するかを簡単に説明する。まず、課題1、すなわち、パリティレコ−ドの更新値を得るために用いる情報の選択方式について述べる。
【0131】
パリティグル−プヒット/ミス判定処理a6500…本処理の概要を図65を用いて説明する。
【0132】
パリティグル−プヒット/ミス判定処理a6500は、パリティレコ−ド1501の更新値を得るために、ライト対象として指定されたデ−タレコ−ド1500の更新前の値とパリティレコ−ド1501の更新前の値を用いる。したがって、処理装置1300からライト対象として指定されたデ−タレコ−ドのヒット/ミス状態(キャッシュ1308内の存在状況)6501とパリティレコ−ド1501のヒット/ミス状態6502を、ディレクトリ1309を参照して判断する(6503)。この時、これらのレコ−ドのうちミスしているレコ−ドをキャッシュにロ−ドすることを決定する(6504)。
【0133】
パリティグル−プヒット/ミス判定処理b6600…本処理の概要を図66を用いて説明する。
【0134】
パリティグル−プヒット/ミス判定処理b6600は、パリティレコ−ド1501の更新値を得るために、ライト対象として指定されたデ−タレコ−ドが属するパリティグル−プ1600内の他のデ−タレコ−ド1500を用いる。したがって、処理装置1300からライト対象として指定されたデ−タレコ−ド1500が属するパリティグル−プ内の他のデ−タレコ−ドのヒット/ミス状態6601を、ディレクトリ1309を参照して判断する(6602)。この時、これらのレコ−ドのうちミスしているレコ−ドをキャッシュにロ−ドすることを決定する。(6603)
パリティグル−プヒット/ミス判定処理c6700…本処理の概要を図67を用いて説明する。
【0135】
パリティグル−プヒット/ミス判定処理c6700は、ライト対象として指定されたデ−タレコ−ド1500の更新前の値のヒット/ミス状態6501とパリティレコ−ドの更新前の値のヒット/ミス状態6502と、パリティグル−プ内の他のデ−タレコ−ドのヒット/ミス状態6601を判別する。
【0136】
この結果、パリティグル−プヒット/ミス判定処理a6500、パリティグル−プヒット/ミス判定処理b6600のうち、性能的に有利な方を選択し、制御を移す。例えば、ライト対象として指定されたデ−タレコ−ド1500のパリティグル−プ1600内の他のすべてのデ−タレコ−ド1500がキャッシュに存在し、パリティレコ−ド1501が存在しない場合、パリティグル−プヒット/ミス判定処理b6600を選択した方が効率的である。
【0137】
次に、課題2に対応した非同期処理化について説明する。本発明では、以下の4種類の非同期処理を設ける。
【0138】
非同期処理a6800…本処理の概要を図68に示す。
【0139】
非同期処理a6800は、更新後パリティレコ−ド108(パリティレコ−ドの更新後の値)を作成するために、更新前デ−タレコ−ド105(デ−タレコ−ドの更新前の値)と更新前パリティレコ−ド107(パリティレコ−ドの更新前の値6803)を用いる場合に、実行される。したがって、本処理は、パリティグル−プヒット/ミス判定処理a6500と組み合わせて、用いられる。さらに、本処理は、更新後デ−タレコ−ド106(ライト対象として指定されたデ−タレコ−ド1500の更新値)をディスク装置1304上で更新する処理を、処理装置1300からのライト要求と同期化して実行する場合に用いられる。
【0140】
この場合、更新前デ−タレコ−ド105がキャッシュ1308になかった場合、更新前デ−タレコ−ド105をキャッシュ1308にロ−ドする処理は、処理装置1300からのライト要求と同期化して実行せざるを得ない(6804)。以上より、この場合、非同期化可能な処理は、以下の(1)と(2)に示した処理となる。
【0141】
(1)更新前パリティレコ−ド107がキャッシュ1308に存在しない場合のロ−ド処理(6805)
(2)更新後パリティレコ−ド108のディスク装置1304への書き込み処理(6805)
非同期処理b6900…本処理の概要を図69に示す。
【0142】
非同期処理b6900も、更新後パリティレコ−ド108を作成するために、更新前デ−タレコ−ド105と更新前パリティレコ−ド107を用いる場合に、実行される。したがって、本処理も、パリティグル−プヒット/ミス判定処理aと組み合わせて、用いられる。ただし、本処理は、更新後デ−タレコ−ド106をディスク装置1304上で更新する処理を、処理装置1300からのライト要求と同期化して実行する場合に用いられる。
【0143】
したがって、以下の(1)から(4)までに示したすべての処理を非同期化できる。
【0144】
(1)更新前デ−タレコ−ド105が、キャッシュ1308にない場合のロ−ド処理(6805)
(2)更新後デ−タレコ−ド106ディスク装置1304への書き込み処理(6805)
(3)更新前パリティレコ−ド107がキャッシュ1308に存在しない場合のロ−ド処理(6805)
(4)更新後パリティレコ−ド108のディスク装置1304への書き込み処理(6805)
非同期処理c7000…本処理の概要を図70に示す。
【0145】
非同期処理c7000は、更新後パリティレコ−ド108を作成するために、グル−プ内他デ−タレコ−ド702(ライト対象として指定されたデ−タレコ−ド1500のパリティグル−プ1600内の他のデ−タレコ−ド1500)を用いる場合に使用する。したがって、本処理は、パリティグル−プヒット/ミス判定機能2と組み合わせて、用いられる。さらに、非同期処理c7000は、更新後デ−タレコ−ド106を、ディスク装置1304上で更新する処理を処理装置1300からのライト要求と同期化して実行する場合に用いられる。
【0146】
グル−プ内他デ−タレコ−ド702は、更新後デ−タレコ−ド106を、ディスク装置1304上に書き込んだ後でも、得ることができる。したがって、以下の(1)から(3)までに示したのすべての処理を非同期化することができる。
(1)キャッシュ1308に存在しないグル−プ内他デ−タレコ−ド702をキャッシュ1308へロ−ドする処理(6805)
(2)更新前パリティレコ−ド107がキャッシュ1308に存在しない場合のロ−ド処理(6805)
(3)更新後パリティレコ−ド108のディスク装置1304への書き込み処理(6805)
非同期化処理d7100……本処理の概要を図71に示す。
【0147】
非同期処理d7100は、更新後パリティレコ−ド108を作成するために、グル−プ内他デ−タレコ−ド702をキャッシュ1308にロ−ドする場合に、使用する。したがって、本機能は、パリティグル−プヒット/ミス判定機能2と組み合わせて、用いられる。さらに、更新後デ−タレコ−ド108を、ディスク装置1304上で更新する処理を処理装置1300からのライト要求と非同期に実行する場合に用いられる。
【0148】
この場合、更新後デ−タレコ−ド106を、ディスク装置1304上で更新する処理を非同期化するため、(1)から(4)までに示したすべての処理を非同期化できる。
【0149】
(1)キャッシュ1308に存在しないグル−プ内他デ−タレコ−ド702をキャッシュ1308へロ−ドする処理(6805)
(2)更新後デ−タレコ−ド106ディスク装置1304への書き込み処理(6805)
(3)更新前パリティレコ−ド107がキャッシュ1308に存在しない場合のロ−ド処理(6805)
(4)更新後パリティレコ−ド108のディスク装置1304への書き込み処理(6805)
次に、課題3の解決、すなわち、更新後パリティレコ−ド108の作成契機について説明する。
【0150】
更新後パリティレコ−ド108の作成契機は、3種類の契機が考えられる。それぞれの作成契機について説明する。
【0151】
パリティ作成契機a…まず、第1に考えられる更新後パリティレコ−ド108の作成契機は、図72に示すように、処理装置1300から指定された更新後デ−タレコ−ド106を、制御装置1305が処理装置1300との間で転送する(7202)契機である。この場合、更新後パリティレコ−ドを作成するために必要な情報7201は、すべてキャッシュに格納されていなければならない。また、図72に示すように、更新後パリティレコ−ド108の作成そのものは、パリティ作成装置7200が実行する。
【0152】
パリティ作成契機b…次に考えられる更新後パリティレコ−ド108の作成契機は、図73に示すように、更新後パリティレコ−ドを作成するために必要な情報7201の中の最後の情報を、キャッシュ1308にロ−ドする(7300)契機である。本パリティ作成契機においては、処理装置から指定されたデ−タレコ−ドに対する更新値は、すでに、キャッシュに格納されていることになる。
【0153】
パリティ作成契機c…第3に考えられる更新後パリティレコ−ド108の作成契機は、図74に示すように、更新後パリティレコ−ドを作成するために必要な情報7201から、パリティレコ−ドの更新値を作成しながらディスク装置に作成値を書き込むという契機である。(7400)
パリティ作成契機d…最後の考え方は、図86に示すように、更新後パリティレコ−ド108を作成する契機を、制御装置1305のデ−タ転送処理とは、非同期に行うというものである。
【0154】
まず、本発明の概要を図1を用いて、説明する。
【0155】
制御装置1305は、処理装置1300からライト要求を受け取ると、ヒット/ミス判定部h1700を用い、ディレクトリ1309を参照して、パリティレコ−ド1501の更新値(更新後パリティレコ−ド108)を作成するのに必要な情報がキャッシュ1308に存在するかをチェックする。(1705)
この場合、ライト要求と同期して、パリティレコ−ド1501の更新値を作成するのに必要な情報を用意しなければならない場合、制御装置1305は、まず、同期レコ−ドロ−ド部b1702により、必要な情報をキャッシュ1308にロ−ドする。(1707)
次に、制御装置1305は、同期デ−タライト部m1701を用いて、処理装置1300から、デ−タレコ−ド1501に対するライトデ−タ1312を受け取る。この場合、ライト要求に対しては、ライトスル−処理1310、高速ライト処理1311、高信頼/高速ライト処理1402のどの処理を適用してもよい。この時、キャッシュ1308内にパリティレコ−ド1501の更新値を作成するのに必要な情報が揃っていれば、パリティレコ−ド1501の更新値の作成を行ってよい。(1706)
一方、パリティレコ−ド1501の更新値の作成を、パリティ作成部c1710によって、処理装置1300からのライト要求を完了させた後、実行してもよい。(1711)
パリティレコ−ド1501の更新値を作成するのに必要な情報を、処理装置1300からのライト要求とは、非同期に用意してよい場合、制御装置1305は、非同期レコ−ドロ−ド部e1703により、必要な情報をキャッシュ1308にロ−ドする。当該ロ−ド処理により、キャッシュ1308内にパリティレコ−ド1501の更新値を作成するのに必要な情報が揃う契機で、パリティレコ−ド1501の作成を行ってよい。(1708)
この場合も、パリティレコ−ド1501の更新値の作成を、パリティ作成部c1710によって、キャッシュ1308内にパリティレコ−ド1501の更新値を作成するのに必要な情報をロ−ドする処理が完了した後、実行してもよい。(1711)
制御装置1305は、非同期レコ−ドライト部d1704を用いて、パリティレコ−ド1501の更新値、高速ライト処理1311、高信頼/高速ライト処理1402を適用した場合のデ−タレコ−ド1500のライトアフタ処理1313を実行する。この時、パリティレコ−ド1501の更新値を作成するのに必要な情報から、パリティレコ−ド1501の更新値を作成しながら、この値をディスク装置1304に書き込んでもよい。(1709)
本発明では、5つの実施例を説明する。以下、各実施例の内容について説明する。図13、図14、および、図17に示した制御装置1305には、パリティレコ−ド1501を作成する装置を特に明示しなかったが、以下の実施例では、制御装置1305はパリティレコ−ドの更新値を作成する装置を含む。また、図87には、図65から図74までに示した各課題を解決するための機構と、以下説明する各実施例との関係をまとめた。
【0156】
まず、第1の実施例について説明する。第1の実施例は、図87に示したように、パリティグル−プヒット/ミス判定処理a6500と非同期処理a6800、を組み合わせた内容である。パリティ作成契機に関しては、すべてのパリティ作成契機、すなわち、パリティ作成契機a、パリティ作成契機b、パリティ作成契機c、パリティ作成契機dが関係する。
【0157】
したがって、第1の実施例の特長は以下のようである。
【0158】
(1)パリティレコ−ド1501の更新値(更新後パリティレコ−ド108)を作成するため、パリティグル−プヒット/ミス判定処理a6500を用いる。具体的に用いる情報は、処理装置1300からライト対象として指定されたデ−タレコ−ド1500の更新前の値(更新前デ−タレコ−ド105)、処理装置1300から受け取り、デ−タレコ−ド1500に対し書き込むデ−タ(更新後デ−タレコ−ド106)とパリティレコ−ド1501の更新前の値(更新前パリティレコ−ド107)である。
【0159】
(2)また、パリティレコ−ド1501の更新値(更新後パリティレコ−ド108)を作成に伴う処理の非同期化処理については、非同期処理a6800を用いる。すなわち、更新後デ−タレコ−ド106をディスク装置1304に書き込む処理を非同期化しない。すなわち、ライトスル−動作1310を実行する。
【0160】
(3)第1の実施例においては、パリティ作成契機に関して、パリティ作成契機a、パリティ作成契機b、パリティ作成契機c、パリティ作成契機dをすべての作成契機が組み合わされる。
【0161】
以下、第1の実施例の概要を、図62、図2を用いて説明する。
【0162】
図62は、第1の実施例において、ライト対象とするデ−タレコ−ド1500が属するパリティグル−プ1600内のすべての更新前パリティレコ−ド107が、キャッシュ1308に存在する場合の制御装置1305の動作を示したものである。すなわち、図62は、第1の実施例において、パリティ作成契機として、図72に示したパリティ作成契機aが用いられた場合の、制御装置1305の動作を示したものである。
【0163】
この場合、更新後パリティレコ−ド108の作成契機は、更新後デ−タレコ−ド106を、ディスク装置1304に書き込む契機、すなわち、パリティ作成契機aとなる。具体的には、制御装置1305が、同期デ−タライト部a101を用いて実行する。(109)更新後パリティレコ−ド108そのものの作成は、パリティ作成装置a104が実行する。
【0164】
更新後パリティレコ−ド108を作成する際には、更新前デ−タレコ−ド105が必要であるため、キャッシュ1308に格納されていない場合、更新後デ−タレコ−ド106を、ディスク装置1304に書き込む前に、制御装置1305は、同期デ−タロ−ド部a102を用いて、キャッシュ1308にロ−ドする。(110)
更新後パリティレコ−ド108は、非同期レコ−ドライト部a103を用いて、処理装置1300のリ−ド/ライト要求とは、非同期に、ディスク装置1304に書き込む。(111)本実施例では、非同期レコ−ドライト部a103は、パリティレコ−ド1501を書き込むが、他の実施例においては、デ−タレコ−ド1500を書き込む場合もある。
【0165】
図2は、第1の実施例において、ライト対象とするデ−タレコ−ド1500が属するパリティグル−プ1600内の更新前パリティレコ−ド107の中に、キャッシュ1308に存在しないものがある場合の制御装置1305の動作を示したものである。すなわち、図2は、第1の実施例において、パリティ作成契機として、図73に示したパリティ作成契機bが用いられた場合の、制御装置1305の動作を示したものである。
【0166】
制御装置1305は、非同期レコ−ドロ−ド部a201を用いて、処理装置1300からのリ−ド/ライト要求とは非同期に、キャッシュ1308に存在しない更新前パリティレコ−ド107をキャッシュ1308にロ−ドする。この場合、更新後パリティレコ−ド108の作成契機は、キャッシュ1308に存在しない最後の更新前パリティレコ−ド107をキャッシュ1308にロ−ドした時、すなわち、パリティ作成契機bとなる。(203)
本実施例では、非同期レコ−ドロ−ド部a201は、パリティレコ−ド1501をロ−ドするが、他の実施例においては、デ−タレコ−ド1500をロ−ドする場合もある。
【0167】
更新後デ−タレコ−ド106は、図62に示したように、制御装置1305が、同期デ−タライト部b200を用いて、ディスク装置1304へ書き込むが、この契機には、更新後パリティレコ−ド108は作成しない。(202)
同期デ−タロ−ド部a102と非同期レコ−ドライト部a103の動作は図62の動作と同様であるため、説明を省略する。
【0168】
次に、図62と図2に示した各処理部の詳細について説明する。
【0169】
まず、ヒット/ミス判定部a100の動作を説明する。
【0170】
図26、および、図27は、ヒット/ミス判定部a100の処理フロ−である。ヒット/ミス判定部a100は、3つの実行開始点をもつ。
【0171】
第1の開始点は、図26に示された開始点(a)であり、処理装置1300からのライト要求を受け取った時、実行開始される開始点である。第2の開始点は、図26に示された開始点(b)であり、同期デ−タロ−ド部a102の処理が完了した時、実行開始される開始点である。第3の開始点は、図27に示した待ち状態が開放された時の開始点である。まず、図26の処理フロ−を説明を行う。
【0172】
まず、制御装置1305は、ライト対象となるディスク装置1304が空いているかを、ディスク装置占有情報2004を見て判断する。ディスク装置が空いた状態にないとステップ2613へジャンプする。
【0173】
ディスク装置が空いた状態にあると、制御装置1305は、ステップ2601で、ディスク装置占有情報2004を設定し、ライト対象となる更新前デ−タレコ−ド105のPG管理情報2001を見出す。PG管理情報2001がなければ、空きPG管理情報キュ−2400を探索し、新たなPG管理情報2001を割り当てる。
【0174】
ステップ2602では、ロック情報2204を参照し、ライト処理の開始が可能かをチェックする。可能であれば、ステップ2603で、ロック情報を設定する。そうなければ、ステップ2611へジャンプする。
【0175】
ステップ2604では、制御装置1305は、一度処理装置1300との接続を切り離す。
【0176】
ステップ2605では、制御装置1305は、更新前デ−タレコ−ド105がキャッシュに存在するかをチェックする。存在しない場合、ステップ2606で、同期デ−タロ−ド部a102をコ−ルし、一度処理を終了する。
【0177】
存在する場合、ステップ2607では、パリティグル−プ1600内の更新前パリティレコ−ド107の中に、キャッシュ1308に存在しないものがあるかをチェックする。すべて存在すれば、ステップ2610へジャンプする。
【0178】
存在しないものがあれば、ステップ2608で、その更新前パリティレコ−ド107に対応するロ−ド要求ビット2204をオンにする。次に、ステップ2609では、制御装置1305は、同期デ−タライト部b102を起動する。この後処理を終了する。
【0179】
ステップ2610では、制御装置1305は、同期デ−タライト部a101を起動する。この後処理を終了する。
【0180】
ステップ2611では、制御装置1305は、ロック待ち状情報2205をセットし、ディスク装置占有情報2003をリセットする。そして、ステップ2612で、制御装置1305は、処理装置1300との接続関係を一度切り、受け付けたライト要求を待ち状態にする。
【0181】
そして、ステップ2613で、制御装置1305は、ディスク待ち状情報2004をセットする。この後、ステップ2612にジャンプする。
【0182】
同期ロ−ド転送部a102からの完了報告を受けると、図26開始(b)の処理から実行に入る。図26の開始(b)においては、制御装置1305は、ステップ2607から実行を開始する。ステップ2607以降の処理はすでに説明したため、以下の説明を省略する。
【0183】
図27は、制御装置1305の待ち状態が開放された時、実行される処理フロ−である。ステップ2700では、制御装置1305は、処理装置1300と接続する。ステップ2701では、制御装置1305は、処理装置1300に、ライト要求を再発行するように要求する。
【0184】
図28、および、図29は、同期デ−タロ−ド部a102の処理フロ−である。図29は、ヒットミス判定部a100からコ−ルされた時に実行される処理フロ−である。図29は、ディスク装置1304の位置付け処理が完了した時に実行される処理フロ−である。
【0185】
まず、図28の処理を説明する。
【0186】
ステップ2800では、制御装置1305は、空きセグメントキュ−2400等を探索し、セグメント1800を確保し、更新前セグメントポインタ2200に設定する。
【0187】
ステップ2801では、制御装置1305は、ディスク装置1304に対する位置付け要求を発行する。この後、処理を終了する。
【0188】
図29は、ディスク装置1304の位置付け処理が完了した時に実行される。
ステップ2900は、ディスク装置1304上のデ−タレコ−ド1500を、更新前セグメントポインタ2200で示されたセグメント1800を、更新前デ−タレコ−ド105としてロ−ドする。
【0189】
ステップ2901では、制御装置1305は、ヒットミス判定部a100の図26図の開始点bに制御を移す。
【0190】
図30、および、図31は、同期デ−タライト部a101の処理フロ−である。図30は、同期ロ−ド部a101が、ヒットミス判定部a100からコ−ルされた時に実行される処理フロ−である。図31は、ディスク装置1304の位置付け処理が完了した時に実行される処理フロ−である。
【0191】
まず、図30の処理を説明する。
【0192】
ステップ3000では、制御装置1305は、更新後デ−タレコ−ド106を格納するためのセグメント1800が、確保されていない場合、次の処理を実行する。すなわち、空きセグメントキュ−2400等を探索し、セグメント1800を確保し、更新後セグメントポインタ2200に設定する。
【0193】
ステップ3001では、すべての更新後パリティレコ−ド108を格納するためのセグメント1800が確保されていなければ、以下の処理を実行する。すなわち、空きセグメントキュ−2400等を探索し、セグメント1800を確保し、パリティレコ−ド1501用の更新後セグメントポインタ2200に設定する。
【0194】
ステップ3002では、制御装置1305は、ディスク装置1304に対する位置付け要求を発行する。この後、処理を終了する。
【0195】
図31は、ディスク装置1304の位置付け処理が完了した時に実行される。
ステップ3100では、制御装置1305は、処理装置1300と再接続を行う。ステップ3101では、制御装置1305は、処理装置1300から受け取ったデ−タをディスク装置1304を書き込むと同時に、さらに、以下の動作を実行する。
【0196】
(1)処理装置1300から受け取ったデ−タを、更新後デ−タレコ−ド105として、更新後セグメントポインタ2201で示されたセグメント3000に格納する。
【0197】
(2)更新前デ−タレコ−ド105、処理装置1300から受け取ったデ−タとすべての更新前パリティレコ−ド107より、すべての更新後パリティレコ−ド108を作成し、対応する更新後セグメントポインタ2201で示されたセグメント1800に格納する。
【0198】
ステップ3102では、制御装置1305では、ライト対象となったデ−タレコ−ド1501に対応する更新後デ−タレコ−ド106、および、すべての更新後パリティレコ−ド108を、それぞれ、更新前デ−タレコ−ド105、更新前パリティレコ−ド107に切り換える。具体的には、それまで対応する更新前セグメントポインタ2200が示していたセグメント1800を開放し、それまで対応する更新後セグメントポインタ2201が示していたセグメント1800を、更新前セグメントポインタ2200が示すようにする。そして、対応する更新後セグメントポインタ2201にはヌル値を設定する。
【0199】
さらに、制御装置1305は、ステップ3103で、すべてのパリティレコ−ド1501に対応するライトアフタビット2202を設定する。
【0200】
この後、ステップ3104で、ロック情報2204、ディスク装置占有情報2004をリセットする。ステップ3105で、制御装置1305は、処理装置1300は、完了を報告する。
【0201】
図32、および、図33は、同期デ−タライト部b200の処理フロ−である。図32は、同期デ−タライト部b200が、ヒットミス判定部a100からコ−ルされた時に実行される処理フロ−である。図33は、ディスク装置1304の位置付け処理が完了した時に実行される処理フロ−である。
【0202】
まず、図32の処理を説明する。
【0203】
ステップ3200では、制御装置1305は、更新後デ−タレコ−ド107を格納するためのセグメント1800が、確保されていない場合、次の処理を実行する。すなわち、空きセグメントキュ−2400等を探索し、セグメント1800を確保し、更新後セグメントポインタ2200に設定する。
【0204】
ステップ3201では、制御装置1305は、ディスク装置1304に対する位置付け要求を発行する。この後、処理を終了する。
【0205】
図33は、ディスク装置1304の位置付け処理が完了した時に実行される。
ステップ3300では、制御装置1305は、処理装置1300と再接続を行う。ステップ3301では、制御装置1305は、処理装置1300から受け取ったデ−タをディスク装置1304を書き込むと同時に、さらに、以下の動作を実行する。すなわち、処理装置1300から受け取ったデ−タを、更新後デ−タレコ−ド105として、更新後セグメントポインタ2201で示されたセグメント1800に格納する。
【0206】
処理装置1300からあるデ−タレコ−ド1500に対し、ライト要求を受け付けた時、キャッシュ1308内に、更新後デ−タレコ−ド105と更新前デ−タレコ−ド106の双方が格納されている場合がある。これを、図63と図64に示す。すなわち、この前にそのデ−タレコ−ドにライト要求、すなわち、前回ライト要求6300を受け付けたとき、更新前パリティレコ−ド107の中にキャッシュ1308にロ−ドされていないもの(パリティレコ−ドa6301)があったとする。この場合、前回ライト要求6300で受け付けたライトデ−タを更新後デ−タレコ−ドa6303として、キャッシュ1308に格納する。更新前デ−タレコ−ドa6302は、さらに以前のライト要求で受け付けたライトデ−タに相当する。この場合、更新後デ−タレコ−ドa6303(デ−タ内容B)を反映したパリティレコ−ド1501の更新値を作成していないため、ディスク装置1304上パリティレコ−ドa6301のデ−タ内容Cは、明らかに、更新前デ−タレコ−ドa6302(デ−タ内容A)の内容から作成されていることになる。
【0207】
図64は、以上のような状況で、更新前パリティレコ−ド107をロ−ド処理を行おうとした所、その処理の開始する前に、同じデ−タレコ−ド1500にライト要求、すなわち、今回のライト要求6400を受け付けた場合である。この時、今回のライト要求6400で受け付けたデ−タを反映したパリティレコ−ド1501の更新値を作成するためには、更新前デ−タレコ−ドa6302(デ−タ内容A)を作成した時のデ−タレコ−ド1500の値、すなわち、パリティレコ−ド1501の値を作成した時に用いたデ−タレコ−ド1500の値、すなわち、更新前デ−タレコ−ドa6302(デ−タ内容A)が必要となる。したがって、図64に示すように、更新前デ−タレコ−ドa6302をキャッシュ1309内にそれまでどおり保持し、今回のライト要求6400で受け付けたライトデ−タを、更新後デ−タレコ−ドb6401(デ−タ内容D)をキャッシュ1308に格納する。
【0208】
以上より、ステップ3301では、更新前デ−タレコ−ド107の方をキャッシュ1308に保持して、それまで更新後デ−タレコ−ド108を格納していたセグメント1800(更新前デ−タレコ−ドa6302に相当)更新後ポインタ2201で示したセグメント1800に受け付けたライトデ−タ(更新後デ−タレコ−ドb6401に相当)を格納する。
【0209】
ステップ3302では、キャッシュ1308にロ−ドされていない更新前パリティレコ−ド107に対応するロ−ド要求ビット2203をオンにする。
【0210】
ステップ3303では、ロック情報2204、ディスク装置占有情報2004をリセットする。
【0211】
この後、ステップ3304で、制御装置1305は、処理装置1300に、完了を報告する。
【0212】
図34、および、図35は非同期レコ−ドロ−ド部a201の処理フロ−である。図34は、制御装置1305の空いた時間を利用して実行される処理である。図35は、ディスク装置1304からの位置付け処理が完了した時に実行される処理フロ−である。
【0213】
ステップ3400で、制御装置1305は、デイスク装置占有情報2004を参照して、空いた状態にあるディスク装置1304を見出す。
【0214】
ステップ3401では、制御装置1305は、見出したディスク装置1304の中で、ロ−ド要求ビット2203がオンのレコ−ド1502をもち、かつ、ロック情報2204がオフのPG管理情報2001を見出す。そして、制御装置1305はロック情報2204をオンにする。
【0215】
次に、制御装置1305は、見出したレコ−ド1502のロ−ド処理を行うことを決定し、ステップ3402で、セグメント1800を確保し、ロ−ドするパリティレコ−ド1501に対応する更新前セグメントポインタ2200に設定する。
【0216】
ステップ3403では、ディスク装置1304に位置付け要求を発行する。
【0217】
図35では、制御装置1305は、まず、このレコ−ド1502のロ−ド処理によって、PG管理情報2001内のロ−ド要求ビット2203がすべてオフになるかをチェックする。
【0218】
そうであれば、ステップ3502へジャンプする。そうでなければ、制御装置1305は、ステップ3501で、レコ−ド1502を更新前パリティレコ−ド107として、対応する更新前セグメントポインタ2200が示すセグメント1800にロ−ドし、ステップ3507にジャンプする。 当該ロ−ド処理により、PG管理情報2001内のロ−ド要求ビット2203がすべてオフになる場合、この契機で、すべてのパリティレコ−ド1501の更新後パリティレコ−ド108を作成する。ステップ3502では、制御装置1305は、このためのセグメント1800を確保し、各パリティレコ−ド1501に対応する更新後セグメントポインタ2201にポインタを設定する。
【0219】
ステップ3503では、制御装置1305は、当該パリティグル−プ1600のデ−タレコ−ド1500の中で、更新値をパリティグレコ−ド1501に反映していないすべてのデ−タレコ−ド1500を探す。具体的には、更新前デ−タレコ−ド105と更新後デ−タレコ−ド106の内容をペアでキャッシュ内に保有しているデ−タレコ−ド、すなわち、更新前セグメントポインタ2200と更新後セグメントポインタ2201がともにヌル値でないペアを探す。さらに、すべての更新前パリティレコ−ド107を探す。(したがって、当該ロ−ド処理が、デ−タレコ−ド1500、パリティレコ−ド1500、いずれのロ−ド処理であれ、当該ロ−ド処理でロ−ドされるレコ−ド1500はパリティレコ−ド1501の作成に使用されることになる。)
ステップ3504では、当該レコ−ド1501を、対応する更新前セグメントポインタ2200が示すセグメント1800にロ−ドしながら、以下の操作を実行する。すなわち、パリティ作成装置a109により、ステップ3503で、見出した更新前デ−タレコ−ド105と更新後デ−タレコ−ド106とすべての更新前パリティレコ−ド107より、すべてのパリティレコ−ド1501の更新後パリティレコ−ド108を作成する。作成した更新後パリティレコ−ド108は、対応する更新後セグメントポインタ2201が示すセグメント1800に格納する。
【0220】
ステップ3505では、制御装置1305は、ライト対象となったデ−タレコ−ド1501に対応する更新後デ−タレコ−ド106、および、すべての更新後パリティレコ−ド108を、それぞれ、更新前デ−タレコ−ド105、更新前パリティレコ−ド107に切り換える。具体的な処理内容は、ステップ3102で説明したため、ここでは省略する。
【0221】
さらに、制御装置1305は、ステップ3506で、すべてのパリティレコ−ド1501に対応するライトアフタビット2202を設定する。
【0222】
最後に、ステップ3507で、当該パリティレコ−ド1501に対応するロ−ド要求ビット2203をオフにする。さらに、ロック情報2204、ディスク装置占有情報2004をリセットする。
【0223】
最後に、ステップ3508で、ディスク装置待ち情報2005、ロック待ち情報2205をリセットし、待ち状態になっている処理装置からのリ−ド/ライト要求を解放する。この後、処理を終了する。
【0224】
図36と図37は、非同期レコ−ドライト部a104の処理フロ−である。図36は、制御装置1305の空いた時間を利用して実行される処理である。図37は、ディスク装置1304からの位置付け処理が完了した時に実行される処理フロ−である。
【0225】
ステップ3600で、制御装置1305は、デイスク装置占有情報2004を参照して、空いた状態にあるディスク装置1304を見出す。
【0226】
ステップ3601では、制御装置1305は、見出したディスク装置1304の中で、ライトアフタビット2202がオンで、ロ−ド要求ビット2202がオフのレコ−ド1502をもち、かつ、ロック情報2204がオフのPG管理情報2001を見出す。そして、制御装置1305は、ロック情報2204をオンにする。
【0227】
制御装置1305は、ステップ3602で、見出したレコ−ド1502のライトアフタ処理を行うことを決定し、ディスク装置1304に位置付け要求を発行する。
【0228】
図37では、制御装置1305は、ステップ3700で、当該レコ−ド1502に対応する更新前セグメントポインタ2200と更新後セグメントポインタ2201を参照する。双方のポインタがヌル値でない場合、更新後セグメントポインタ2201が示すセグメント1800内のデ−タをディスク装置1304に書き込む。更新後セグメントポインタ2201がヌル値の場合、更新前セグメントポインタ2200が示すセグメント1800内のデ−タをディスク装置1304に書き込む。(更新前セグメントポインタ2200と更新後セグメントポインタ2201ともにヌル値でない場合、最近受け付けた更新後セグメントポインタ2201が示すセグメント1800内のデ−タをディスク装置1304を書き込む。)
ステップ3701では、対応するライトアフタビット2202をオフする。さらに、ロック情報2204、ディスク装置占有情報2004をリセットする。
【0229】
最後に、ステップ3702で、ディスク装置待ち情報2005、ロック待ち情報2205をリセットし、待ち状態になっている処理装置からのリ−ド/ライト要求を解放する。この後、処理を終了する。
【0230】
図3は、第1の実施例の別の実現方法である。図1、図2で示した内容との相違は、更新後パリティレコ−ド108を作成する契機が、更新後パリティレコ−ド108そのものをディスク装置1304に書き込む契機であるという点である。すなわち、図3は、第1の実施例において、パリティ作成契機として、図74に示したパリティ作成契機aが用いられた場合の、制御装置1305の動作を示したものである。
【0231】
図3に示すように、非同期レコ−ドライト部b303により、更新前デ−タレコ−ド105、更新後デ−タレコ−ド106、更新前パリティレコ−ド107から、パリティ作成装置a104から更新後デ−タレコ−ド107を作成しながら、これをディスク装置1304に書き込む。
【0232】
したがって、図3に示したように、同期デ−タライト部c301と非同期レコ−ドロ−ド部b302には、更新後パリティレコ−ド108を作成する機能はない。
【0233】
以下、詳細な動作を説明する。
【0234】
図38は、ヒットミス判定部b300の処理フロ−図である。ヒット/ミス判定部b300は、3つの実行開始点をもつ。
【0235】
第1の開始点は、図38に示された開始点aであり、処理装置1300からのライト要求を受け取った時、実行される開始点である。第2の開始点は、図38に示された開始点bであり、同期デ−タロ−ド部a102の処理が完了した時、実行される開始点である。ただし、第3の開始点は、待ち状態が開放された時の開始点であり、図27に示したヒットミス判定部a100の処理フロ−と同様となる。図27は、すでに説明したため、ここでは、説明を省略する。以下、図38の説明を行う。図38に示したヒットミス判定b300の処理フロ−は、ヒットミス判定部a100の図26の処理フロ−に相当する。したがって、図26との相違について説明する。図38の中で、図26と同様のステップ番号の処理は、図26の処理と同様である。
【0236】
更新前デ−タレコ−ド105がキャッシュ1308に格納された後、ヒットミス判定部b300においては、必ず、ステップ3800で、同期デ−タライト部c301を起動する処理を実行される。以上の処理以外は、図38の処理フロ−は、図26の処理フロ−に含まれることになる。
【0237】
図39は、同期デ−タライト部c301が、ディスク装置1304の位置付け処理が完了した時に実行される処理フロ−である。ヒットミス判定部b300からコ−ルされた時に実行される処理フロ−は、図32に示した処理フロ−であるため、ここでの説明を省略する。以下、図39の説明を行う。図39に示した同期デ−タライト部c301の処理フロ−は、同期デ−タライト部b200の図33の処理フロ−に相当する。したがって、図33との相違について説明する。図39の中で、図33と同様のステップ番号の処理は、図33の処理と同様である。 ステップ3900で、制御装置1305は、すべての更新前パリティレコ−ド107が、キャッシュ1308内に格納されているかをチェックする。そうでなければ、ステップ3301へジャンプする。そうであれば、ステップ3901で、制御装置1305は、すべての更新前パリティレコ−ド107に対応するライトアフタビット2202をオンにする。この後、ステップ3302へジャンプする。これ以外の図39の処理は、図33に含まれるため、説明を省略する。
【0238】
図40は、非同期レコ−ドロ−ド部b302が、ディスク装置1304の位置付け処理が完了した時に実行される処理フロ−である。制御装置1305の空いた時間を利用して実行する処理処理フロ−は、図34に示した処理フロ−であるため、ここでの説明を省略する。以下、図40の説明を行う。図40に示した非同期レコ−ドロ−ド部b302の処理フロ−は、非同期レコ−ドロ−ド部a103の図35の処理フロ−に相当する。図40の処理フロ−は、図35に示した処理フロ−に含まれる。これは、図40では、更新後パリティレコ−ド108を作成する処理を含まない点以外は、図35の処理と同様であるためである。図40の内の各ステップの処理はすでに説明したため、ここでの説明は省略する。
【0239】
図41と図42は、非同期レコ−ドライト部b302の処理フロ−である。図41は、制御装置1305の空いた時間を利用して実行する処理処理フロ−である。図42は、ディスク装置1304の位置付け処理が完了した時に実行される処理フロ−である。以下、図41の説明を行う。図41は、図36に対応する処理フロ−である。したがって、図36との相違について説明する。図41の中で、図36と同様のステップ番号の処理は、図36の処理と同様である。
【0240】
ステップ4100では、ライトするレコ−ド1502が、デ−タレコ−ド1501かパリティレコ−ド1501であるかどうかを判断する。
【0241】
ライトするレコ−ドが、パリティレコ−ド1501の場合、ステップ4101で、制御装置1305は、更新後パリティレコ−ド108を格納するためのセグメント1800を確保する。そして、対応する更新後セグメントポインタ2201にそのポインタを設定する。これ以外の点は、図41の処理フロ−は、図36の処理フロ−と同様である。
【0242】
図42は、図37に対応する処理フロ−である。したがって、図37との相違について説明する。図42の中で、図37と同様のステップ番号の処理は、図37の処理と同様である。以下、図42の説明を行う。
【0243】
図42においては、まず、制御装置1305は、以下の処理を実行する。
【0244】
まず、ステップ4200で、ライトするレコ−ド1502が、デ−タレコ−ド1501かパリティレコ−ド1501であるかどうかを判断する。
【0245】
デ−タレコ−ド1500の場合、ステップ4201で、ステップ3700で示した処理を実行する。
【0246】
パリティレコ−ド1501の場合、以下の処理を実行する。すなわち、まず、ステップ4201において、更新後デ−タレコ−ド106、更新前パリティレコ−ド107から、パリティ作成装置a104から更新後デ−タレコ−ド107を作成しながら、これをディスク装置1304に書き込む。さらに、この値を対応する更新後セグメントポインタ2201が示すセグメント1800に格納する。ステップ4202では、すべてのライトアフタビット2201がオフであるかをチェックする。そうなければ、処理を終了する。
【0247】
そうであれば、ステップ4203で、制御装置1305は、ライト対象となったデ−タレコ−ド1501に対応する更新後デ−タレコ−ド106、および、すべての更新後パリティレコ−ド108を、それぞれ、更新前デ−タレコ−ド105、更新前パリティレコ−ド107に切り換える。具体的な処理内容は、ステップ3102で説明したため、ここでは省略する。これ以外の点は、図42の処理フロ−は、図37の処理フロ−と同様である。
【0248】
図75は、第1の実施例の別の実現方法である。図76の特徴は、更新後パリティレコ−ド108を作成する契機が、制御装置1305のデ−タ転送処理とは、非同期化している点である。すなわち、図75は、第1の実施例において、パリティ作成契機として、図86に示したパリティ作成契機dが用いられた場合の、制御装置1305の動作を示したものである。
【0249】
図75に示すように、制御装置1305は、パリティ作成部a7501を用いて、更新前デ−タレコ−ド105、更新後デ−タレコ−ド106、更新前パリティレコ−ド107から、更新後デ−タレコ−ド108を作成する。(7504)以下、詳細な動作を説明する。ただし、ヒット/ミス判定部j7500以外の各処理部の説明はすでに行っているため、説明を省略する。
【0250】
図79は、図75のヒットミス判定部j7500の処理フロ−図である。ヒット/ミス判定部j7500は、3つの実行開始点をもつ。
【0251】
第1の開始点は、図79に示された開始点aであり、処理装置1300からのライト要求を受け取った時、実行される開始点である。第2の開始点は、図79に示された開始点bであり、同期デ−タロ−ド部a102の処理が完了した時、実行される開始点である。ただし、第3の開始点は、待ち状態が開放された時の開始点であり、図27に示したヒットミス判定部a100の処理フロ−と同様となる。図27は、すでに説明したため、ここでは、説明を省略する。以下、図79の説明を行う。図79に示したヒットミス判定b300の処理フロ−は、ヒットミス判定部a100の図26の処理フロ−に相当する。したがって、図26との相違について説明する。図79の中で、図26と同様のステップ番号の処理は、図26の処理と同様である。
【0252】
図79の処理フロ−では、制御装置1305は、ステップ2607で、更新前パリティレコ−ド107の中にキャッシュ1308に存在しないものがあるかを、チェックする。すべて存在する場合、ステップ7900で、パリティ作成ビット2206をオンにする。この後、ステップ2609へジャンプする。以上の処理以外は、図79の処理フロ−は、図26の処理フロ−に含まれることになる。
図83は、図76の非同期レコ−ドロ−ド部f7502が、ディスク装置1304の位置付け処理が完了した時に実行される処理フロ−である。制御装置1305の空いた時間を利用して実行する処理処理フロ−は、図34に示した処理フロ−そのものであるため、ここでの説明を省略する。以下、図83の説明を行う。図83に示した非同期レコ−ドロ−ド部f7502の処理フロ−は、非同期レコ−ドロ−ド部a103の図35の処理フロ−に相当する。したがって、図35との相違について説明する。図83の中で、図35と同様のステップ番号の処理は、図35の処理と同様である。
【0253】
図83の処理フロ−では、制御装置1305は、ステップ7900で、当該ロ−ド処理で、ロ−ド要求ビット22003がすべてオフになる場合、パリティ作成ビット2206をオンにする。以上の処理以外は、図79の処理フロ−は、図26の処理フロ−に含まれることになる。
【0254】
図84は、図75のパリティ作成部a7501の処理フロ−である。
【0255】
ステップ8400で、制御装置1305は、デイスク装置占有情報2004を参照して、空いた状態にあるディスク装置1304を見出す。
【0256】
ステップ8401では、制御装置1305は、見出したディスク装置1304の中で、パリティ作成ビット2206がオンで、かつ、ロック情報2204がオフのPG管理情報2001を見出す。そして、制御装置1305はロック情報2204をオンにする。
【0257】
ステップ8403では、制御装置1305は、更新前デ−タレコ−ド105、更新後デ−タレコ−ド、更新前パリティレコ−ド107より、更新後パリティレコ−ド108を作成する。詳細は、図35のステップ3504等を参照されたい。
【0258】
ステップ8404では、制御装置1305は、ライト対象となったデ−タレコ−ド1501に対応する更新後デ−タレコ−ド106、および、すべての更新後パリティレコ−ド108を、それぞれ、更新前デ−タレコ−ド105、更新前パリティレコ−ド107に切り換える。具体的な処理内容は、ステップ3102で説明したため、ここでは省略する。
【0259】
さらに、ステップ8405で、制御装置1305は、すべてのパリティレコ−ド1501に対応するライトアフタビット2202を設定する。さらに、パリティ作成ビット2206、ロック情報2204、ディスク装置占有情報2004をリセットする。
【0260】
最後に、ステップ8406で、制御装置1305は、ロック待ち情報2205、ディスク装置待ち情報2005を参照して、待ち状態になっている処理装置1300からのリ−ドライト要求の待ちを解放する。
【0261】
次に、第2の実施例について説明する。第2の実施例は、図87に示したように、パリティグル−プヒット/ミス判定処理a6500、非同期処理b69000を組み合わせた実施例である。ただし、パリティ作成契機に関しては、パリティ作成契機a、パリティ作成契機b、パリティ作成契機c、パリティ作成契機dが関係する。
【0262】
第2の実施例の特長を説明する。
【0263】
(1)パリティレコ−ド1501の更新値(更新後パリティレコ−ド108)を作成するため、パリティグル−プヒット/ミス判定処理a6500を用いる。具体的に用いる情報は、ライト対象として指定されたデ−タレコ−ド1500の更新前後の値(更新前デ−タレコ−ド105/更新後デ−タレコ−ド106)とパリティレコ−ド1501の更新前の値(更新前パリティレコ−ド107)である。(2)また、パリティレコ−ド1501の更新値(更新後パリティレコ−ド108)を作成に伴う処理の非同期化処理については、非同期処理b6900を用いる。すなわち、処理装置1300から受け付けたライト要求に対して、制御装置1305に対して、高速ライト処理1313、あるいは、高信頼/高速ライト処理1402を適用する。
【0264】
(3)第2の実施例においても、パリティ作成契機に関しては、パリティ作成契機a、パリティ作成契機b、パリティ作成契機c、パリティ作成契機dをすべての作成契機が組み合わされる。
【0265】
図4は、第2の実施例において、ライト対象とするデ−タレコ−ド1500の更新前デ−タレコ−ド105、および、対応するパリティグル−プ1600内のすべての更新前パリティレコ−ド107が、キャッシュ1308に存在する場合の制御装置1305の動作を示したものである。すなわち、図4は、第2の実施例において、パリティ作成契機として、図72に示したパリティ作成契機aが用いられた場合の、制御装置1305の動作を示したものである。
【0266】
この場合、更新後パリティレコ−ド108の更新値の作成は、更新後デ−タレコ−ド106を、キャッシュ1308(および、不揮発性メモリ1400)に書き込む際に、制御装置1305が、同期デ−タライト部d401を用いて実行する。図4には示していないが、高信頼/高速ライト処理1402を適用する場合には、同期デ−タライト部d401は、処理装置1300から受け取ったデ−タを不揮発性メモリ1400に書き込む機能も有することになる。(402)
更新後デ−タレコ−ド106、および、更新後パリティレコ−ド108は、非同期レコ−ドライト部a103を用いて、処理装置1300のリ−ド/ライト要求とは非同期に、ディスク装置1305に書き込む。(111)
図5は、第2の実施例において、ライト対象とするデ−タレコ−ド1500の更新前デ−タレコ−ド105、および、対応するパリティグル−プ1600内のすべての更新前パリティレコ−ド107の中に、キャッシュ1308に存在しないものがある場合の制御装置1305の動作を示したものである。すなわち、図5は、第2の実施例において、パリティ作成契機として、図73に示したパリティ作成契機bが用いられた場合の、制御装置1305の動作を示したものである。 この場合、制御装置1305が、同期レコ−ドロ−ド部a201を用いて、処理装置1300からのリ−ド/ライト要求とは非同期に、キャッシュ1308に存在しない更新前デ−タレコ−ド105、あるいは、更新前パリティレコ−ド107にキャッシュ1308にロ−ドする。キャッシュ1308に存在しない更新前デ−タレコ−ド105、更新前パリティレコ−ド107の集合の中で、最後にキャッシュ1308に転送を行う契機で、すべてのパリティレコ−ド1502に関し、更新後パリティレコ−ド108を作成する。(203)
更新後デ−タレコ−ド106は、図5に示したように、同期デ−タライト部e500を用いて、ディスク装置1305へ書き込むが、この契機には、更新後パリティレコ−ド108は作成しない。(501)
非同期レコ−ドライト部a103の動作は図4の動作と同様であるため、説明を省略する。
【0267】
次に、図4と図5に示した各処理部の詳細について説明する。
【0268】
まず、ヒット/ミス判定部c400の動作を説明する。
【0269】
図43は、ヒット/ミス判定部c400の処理フロ−である。図43は、処理装置1300からのライト要求を受け取った時、実行される処理フロ−である。一方、ヒット/ミス判定部c400の待ち状態が開放された時に実行開始される処理は、図27に示した処理フロ−となる。図27は、すでに説明したため、ここでは、説明を省略する。以下、図43の説明を行う。図43に示したヒット/ミス判定部c400の処理フロ−は、ヒット/ミス判定部a100の第26図の処理フロ−に相当する。したがって、図26との相違について説明する。図43の中で、図26と同様のステップ番号の処理は、図26の処理と同様である。
【0270】
ステップ4302で、更新前デ−タレコ−ド105、および、対応するパリティグル−プ1600内のすべての更新前パリティレコ−ド107が、キャッシュ1308に存在するかをチェックした後、存在する場合、制御装置1305は、ステップ4300で、同期デ−タライト部d401をコ−ルし、処理を終了する。 存在しない場合、制御装置1305は、ステップ4301で、同期デ−タライト部e500をコ−ルし、処理を終了する。以上の処理以外は、図43の処理フロ−は、図26の処理フロ−に含まれるため、説明は省略する。
【0271】
図44は、同期デ−タライト部d401の処理フロ−である。図44は、同期デ−タライト部d401が、ヒット/ミス判定部c400からコ−ルされた時に実行される処理フロ−である。図44に示した同期デ−タライト部d301の処理フロ−は、同期デ−タライト部a101の図30と図31の処理フロ−に相当する。したがって、図30と図31との相違について説明する。図44の中で、図30と図31と同様のステップ番号の処理は、図30と図31の処理と同様である。
【0272】
まず、制御装置1305は、ステップ4400で、更新後デ−タレコ−ド106を格納するためのセグメント1800、(不揮発性メモリ1400にも格納する場合、不揮発性セグメント2500も確保する。)
次に、ステップ4401で、制御装置1305は、すべての更新後パリティレコ−ド108を格納するためのセグメント1800を確保する。(不揮発性メモリ1400にも格納する場合、不揮発性セグメント2500も確保する。)
ステップ4402では、制御装置1305は、以下の処理を実行する。
【0273】
(1)処理装置1300から受け取ったデ−タを、更新後デ−タレコ−ド106として、更新後セグメントポインタ2201で示されたセグメント1800に格納する。(不揮発性メモリ1400にも格納する場合、不揮発性セグメント2500にも格納する。)
(2)更新前デ−タレコ−ド105、処理装置1300から受け取ったデ−タとすべての更新前パリティレコ−ド107より、すべての更新後パリティレコ−ド108を作成し、対応する更新後セグメントポインタ2201で示されたセグメント1800に格納する。(不揮発性メモリ1400にも格納する場合、不揮発性セグメント2500格納する。)
さらに、ステップ4403では、制御装置1305は、その時、ライト要求を受け付けたデ−タレコ−ド1500とすべてのパリティレコ−ド1501に対応するライトアフタビット2202を設定する。
【0274】
以上の処理以外は、図44の処理は、図30と図31の処理に含まれるため説明を省略する。
【0275】
図45は、同期デ−タライト部e500の処理フロ−である。図45は、同期デ−タライト部b200が、ヒット/ミス判定部a100からコ−ルされた時に実行される処理フロ−である。図45に示した同期デ−タライト部e500の処理フロ−は、同期デ−タライト部b200の図32と図33の処理フロ−に相当する。したがって、図32と図33との相違について説明する。図45の中で、図32と図33と同様のステップ番号の処理は、図32と図33の処理と同様である。
【0276】
以下、図45の処理を説明する。
【0277】
まず、制御装置1305は、ステップ4500で、更新後デ−タレコ−ド106を格納するためのセグメント1800、(不揮発性メモリ1400にも格納する場合、不揮発性セグメント2500も確保する。)
ステップ4501では、制御装置1305は、処理装置1300から受け取ったデ−タを、更新後セグメントポインタ2201で示されたセグメント1800に格納する。(不揮発性メモリ1400にも格納する場合、不揮発性セグメント2500にも格納する。)さらに、対応するライトアフタビット2202をオンにする。更新前セグメントポインタ2200で示されたセグメント1800内のデ−タを保持する理由は、第1の実施例と同様である。理由については、ステップ3301で説明したため、省略する。
【0278】
ステップ4502では、制御装置1305は、ライト要求を受け付けたデ−タレコ−ド1500に対応するライトアフタビット2202をオンにする。さらに、ライト要求を受け付けたデ−タレコ−ド1500の更新前デ−タレコ−ド106がキャッシュに存在しない場合、対応するロ−ド要求ビットをセットする。
【0279】
以上の処理以外は、図45の処理は、図32と図33の処理に含まれるため説明を省略する。
【0280】
非同期レコ−ドロ−ド部a201、非同期レコ−ドライト部a103の処理フロ−は、第1の実施例で説明したため、ここでは、説明を省略する。
【0281】
図6は、第2の実施例の別の実現方法である。図4、図5で示した内容との相違は、更新後パリティレコ−ド108を作成する契機が、更新後パリティレコ−ド108そのものをディスク装置1304に書き込む契機であるという点である。すなわち、図6は、第2の実施例において、パリティ作成契機として、図74に示したパリティ作成契機cが用いられた場合の、制御装置1305の動作を示したものである。
【0282】
第1の実施例で図3に示した動作と同様、図6の動作でも、制御装置1305は、非同期レコ−ドライト部b303により更新後パリティレコ−ド108の作成処理を行う。(602)
以下、詳細な動作を説明する。
【0283】
図46は、ヒット/ミス判定部d600の処理フロ−である。図46は、処理装置1300からのライト要求を受け取った時、実行される処理フロ−である。一方、ヒット/ミス判定部d600の待ち状態が開放された時に実行開始される処理は、図27に示した処理フロ−となる。図27は、すでに説明したため、ここでは、説明を省略する。以下、図46の説明を行う。図46に示したヒット/ミス判定部d600の処理フロ−は、ヒット/ミス判定部c400の図48の処理フロ−に相当する。したがって、図46との相違について説明する。図46の中で、図46と同様のステップ番号の処理は、図26の処理と同様である。
【0284】
ステップ4600で、制御装置1305は、処理装置1300から、ライト対象となるデ−タレコ−ド1500に対するデ−タを受け取るために、無条件に、同期デ−タライト部f601をコ−ルする。以上の処理以外は、図46の処理フロ−は、図43の処理フロ−に含まれる。
【0285】
図47は、同期デ−タライト部f601の処理フロ−である。本処理フロ−は、ヒット/ミス判定部d600からコ−ルされた時に実行される処理フロ−である。図47に示した同期デ−タライト部f601の処理フロ−は、同期デ−タライト部e500の図45の処理フロ−に類似している。したがって、図45との相違について説明する。図47の中で、図45と同じステップ番号の処理は、図45の処理と同じである。
【0286】
ステップ4700で、制御装置1305は、すべての更新前パリティレコ−ド107が、キャッシュ1308内に格納されているかをチェックする。そうでなければ、ステップ3301へジャンプする。そうであれば、ステップ4701で、制御装置1305は、すべての更新前パリティレコ−ド107に対応するライトアフタビット2202をオンにする。この後、ステップ3302へジャンプする。これ以外の図47の処理は、図45に含まれるため、説明を省略する。
【0287】
図76は、第2の実施例の別の実現方法である。図76の特徴は、更新後パリティレコ−ド108を作成する契機が、制御装置1305のデ−タ転送処理とは、非同期化している点である。すなわち、図76は、第2の実施例において、パリティ作成契機として、図86に示したパリティ作成契機dが用いられた場合の、制御装置1305の動作を示したものである。
【0288】
図76に示すように、制御装置1305は、パリティ作成部a7501を用いて、更新前デ−タレコ−ド105、更新後デ−タレコ−ド106、更新前パリティレコ−ド107から、更新後デ−タレコ−ド108を作成する。(7504)以下、詳細な動作を説明する。ただし、ヒット/ミス判定部k7600以外の各処理部の説明はすでに行っているため、説明を省略する。
【0289】
図80は、ヒット/ミス判定部k8000の処理フロ−図である。ヒット/ミス判定部b300は、2つの実行開始点をもつ。
【0290】
第1の開始点は、図80に示された開始点であり、処理装置1300からのライト要求を受け取った時、実行開始される開始点である。第2の開始点は、待ち状態が開放された時の開始点であり、ヒット/ミス判定部a100の処理フロ−と同様であるため、図27に示した処理フロ−となる。図27は、すでに説明したため、ここでは、説明を省略する。以下、図80の説明を行う。図80に示したヒット/ミス判定k8000の処理フロ−は、ヒット/ミス判定部a100の図43の処理フロ−に相当する。したがって、図43との相違について説明する。図80の中で、図43と同様のステップ番号の処理は、図43の処理と同様である。
【0291】
図80の処理フロ−では、制御装置1305は、ステップ4302で、更新前デ−タレコ−ド105、更新前パリティレコ−ド107の中にキャッシュ1308に存在しないものがあるかを、チェックする。すべて存在する場合、ステップ7900で、パリティ作成ビット2206をオンにする。この後、ステップ4301へジャンプする。以上の処理以外は、図80の処理フロ−は、図43の処理フロ−に含まれることになる。
【0292】
次に、第3の実施例について説明する。第3の実施例は、図87に示したように、第3の実施例は、パリティグル−プヒット/ミス判定処理b6600、非同期処理c7000の組合せである。ただし、パリティ作成契機に関しては、パリティ作成契機a、パリティ作成契機b、パリティ作成契機c、パリティ作成契機dが関係する。
【0293】
第3の実施例の特長を説明する。
【0294】
(1)パリティレコ−ド1501の更新値(更新後パリティレコ−ド108)を作成するため、パリティグル−プヒット/ミス判定処理b6600を用いる。具体的に用いる情報は、ライト対象として指定されたデ−タレコ−ド1500の更新後の値と同一パリティグル−プ1600内の他のすべてのデ−タレコ−ド1500の値(グル−プ内他デ−タレコ−ド702)である。
【0295】
(2)また、パリティレコ−ド1501の更新値(更新後パリティレコ−ド108)を作成に伴う処理の非同期化処理については、非同期処理c7000を用いる。すなわち、更新後デ−タレコ−ド106をディスク装置1305に書き込む処理を非同期化しない。すなわち、ライトスル−処理1312を実行する。
【0296】
(3)第3の実施例においても、パリティ作成契機に関しては、パリティ作成契機a、パリティ作成契機b、パリティ作成契機c、パリティ作成契機dをすべての作成契機が組み合わされる。
【0297】
図7は、第3の実施例において、ライト対象とするデ−タレコ−ド1500が属するパリティグル−プ1600内のすべてのグル−プ内他デ−タレコ−ド702の中に、キャッシュ1308に存在しないものがない場合の制御装置1305の動作を示したものである。すなわち、図7は、第3の実施例において、パリティ作成契機として、図72に示したパリティ作成契機aが用いられた場合の、制御装置1305の動作を示したものである。
【0298】
この場合、更新後パリティレコ−ド108の更新値の作成は、更新後デ−タレコ−ド106を、ディスク装置1305に書き込む際に制御装置1305が、同期デ−タライト部g701を用いて作成する。(704)ただし、パリティレコ−ド1501の更新値は、パリティ作成装置b703を用いて実行する。
【0299】
更新後パリティレコ−ド108は、制御装置1305が、非同期レコ−ドライト部a103を用いて、処理装置1300のリ−ド/ライト要求とは、非同期にディスク装置1305に書き込む。(111)
図8は、第3の実施例において、ライト対象とするデ−タレコ−ド1500が属するパリティグル−プ1600内のすべてのグル−プ内他デ−タレコ−ド702の中に、キャッシュ1308に存在しないものがある場合の制御装置1305の動作を示したものである。すなわち、図8は、第3の実施例において、パリティ作成契機として、図73に示したパリティ作成契機bが用いられた場合の、制御装置1305の動作を示したものである。
【0300】
この場合、制御装置1305が、非同期レコ−ドロ−ド部c801を用いて、処理装置1300からのリ−ド/ライト要求とは非同期に、キャッシュ1308に存在しないグル−プ内他デ−タレコ−ド702にキャッシュ1308にロ−ドする。(803)キャッシュ1308に存在しない最後のグル−プ内他デ−タレコ−ド702をキャッシュ1308にロ−ドした時、すべてのパリティレコ−ド1502に関し、更新後パリティレコ−ド108を作成する。
【0301】
更新後デ−タレコ−ド106は、第1図に示したように、同期デ−タライト部h800が、ディスク装置1305へ書き込むが、この契機には、更新後パリティレコ−ド108は作成しない。(802)
非同期レコ−ドライト部a103の動作は図7の動作と同様であるため、説明を省略する。
【0302】
次に、図7と図8に示した各処理部の詳細について説明する。
【0303】
まず、ヒット/ミス判定部e700の動作を説明する。
【0304】
図48は、ヒット/ミス判定部e700の処理フロ−である。図48は、処理装置1300からのライト要求を受け取った時、実行される処理フロ−である。一方、ヒット/ミス判定部e700の待ち状態が開放された時に実行開始される処理は、図27に示した処理フロ−となる。図27は、すでに説明したため、ここでは、説明を省略する。以下、図48の説明を行う。図48に示したヒット/ミス判定部e700の処理フロ−は、ヒット/ミス判定部e700の図26の処理フロ−に類似している。したがって、図26との相違について説明する。図48の中で、図26と同様のステップ番号の処理は、図26の処理と同様である。ステップ4800では、制御装置1305は、ライト対象となるデ−タレコ−ド1500が属するパリティグル−プ1600内のすべてのグル−プ内他デ−タレコ−ド702の中に、キャッシュ1308に存在しないものがあるかどうかををチェックする。存在する場合、制御装置1305は、ステップ4801で、同期デ−タライト部g701をコ−ルし、処理を終了する。
【0305】
存在しないものがある場合、制御装置1305は、ステップ4802で、同期デ−タライト部g800をコ−ルし、処理を終了する。以上の処理以外は、図48の処理フロ−は、図26の処理フロ−に含まれるため、説明は省略する。
【0306】
図49は、同期デ−タライト部g701が、ディスク装置1305の位置付け処理が完了した時に実行される処理フロ−である。ヒット/ミス判定部e700からコ−ルされた時に実行される処理フロ−は、図30に示した処理フロ−であるため、ここでの説明を省略する。以下、図49の説明を行う。図49に示した同期デ−タライト部g701の処理フロ−は、同期デ−タライト部a101の図31の処理フロ−に類似している。したがって、図31との相違について説明する。図49の中で、図31と同様のステップ番号の処理は、図31の処理と同様である。
【0307】
ステップ4900で、制御装置1305は、処理装置1300から受け取ったデ−タをディスク装置1305を書き込むと同時に、さらに、以下の動作を実行する。
【0308】
(1)処理装置1300から受け取ったデ−タを、更新後デ−タレコ−ド105として、更新後セグメントポインタ2201で示されたセグメント1800に格納する。
【0309】
(2)処理装置1300から受け取った更新後デ−タレコ−ド105とそれ以外のグル−プ内他デ−タレコ−ド702より、すべての更新後パリティレコ−ド108を作成し、対応する更新後セグメントポインタ2201で示されたセグメント1800に格納する。
【0310】
ステップ4901では、制御装置1305は、ライト対象となったデ−タレコ−ド1500、および、すべてのパリティレコ−ド1501に対応する更新後セグメントポインタ2201が示していたセグメント1800を、更新前セグメントポインタ2200が示すようにする。そして、対応する更新後セグメントポインタ2201にはヌル値を設定する。すなわち、更新後デ−タレコ−ド106、更新後パリティレコ−ド108を、更新前デ−タレコ−ド105と更新前パリティレコ−ド107に切り換える。以上の処理以外は、図49の処理フロ−は、図31の処理フロ−に含まれるため、説明は省略する。
【0311】
図50は、同期デ−タライト部h800の処理フロ−である。ディスク装置1305の位置付け処理が完了した時に実行される処理フロ−である。ヒット/ミス判定部e700からコ−ルされた時に実行される処理フロ−は、図32に示した処理フロ−であるため、ここでの説明を省略する。図50に示した同期デ−タライト部h800の処理フロ−は、同期デ−タライト部b200の図33の処理フロ−に類似している。したがって、図33との相違について説明する。図50の中で、図33と同じステップ番号の処理は、図33の処理と同じである。以下、図50の処理を説明する。
【0312】
ステップ5000では、制御装置1305は、キャッシュ1308に格納されていないデ−タレコ−ド1500に対応するロ−ド要求ビット2203をオンにする。(ライト対象となったデ−タレコ−ド1500に対応するロ−ド要求ビット2203がオンの場合、これをオフする。)
以上の処理以外は、図50の処理は、図33の処理に含まれるため説明を省略する。
【0313】
図51は、非同期レコ−ドロ−ド部c801が、ディスク装置1304からの位置付け処理が完了した時に実行される処理フロ−である。制御装置1305の空いた時間を利用して実行される処理フロ−は、図34に示した処理フロ−であるため、ここでは説明を省略する。図51は、同期レコ−ドロ−ド部c201の図35の処理フロ−に類似している。したがって、図35との相違について説明する。図51の中で、図35と同じステップ番号の処理は、図35の処理と同じである。以下、図51の処理を説明する。
【0314】
ステップ3500で、当該ロ−ド処理により、PG管理情報2001内のロ−ド要求ビット2203がすべてオフになる場合、この契機で、すべてのパリティレコ−ド1501の更新後パリティレコ−ド108を作成するため、以下の処理を実行する。。
【0315】
ステップ5100では、制御装置1305は、当該パリティグル−プ1600のロ−ド処理対象とするデ−タレコ−ド1500以外のすべてのデ−タレコ−ド1500に対応するセグメント1800を探す。この場合、更新後デ−タレコ−ド108と更新前デ−タレコ−ド107の両方が存在する場合は、更新後デ−タレコ−ド108を選択する。どちらか一方しか存在しない場合、存在しているものを選択する。
【0316】
ステップ5101では、ロ−ドしてきた当該デ−タ1501を更新前セグメントポインタ2200が示すセグメント1800にロ−ドしながら、以下の操作を実行する。すなわち、パリティ作成装置b703により、ステップ5100で、見出したデ−タレコ−ド1500とロ−ド中のデ−タレコ−ド1500より、すべてのパリティレコ−ド1501の更新後パリティレコ−ド108を作成する。作成した更新後パリティレコ−ド108は、対応する更新後セグメントポインタ2201が示すセグメント1800に格納する。
【0317】
ステップ5102では、制御装置1305は、ライト対象となったデ−タレコ−ド1500、および、すべてのパリティレコ−ド1501に対応する更新後セグメントポインタ2201が示していたセグメント1800を、更新前セグメントポインタ2200が示すようにする。そして、対応する更新後セグメントポインタ2201にはヌル値を設定する。すなわち、更新後デ−タレコ−ド106、更新後パリティレコ−ド108を、更新前デ−タレコ−ド105と更新前パリティレコ−ド107に切り換える。
【0318】
以上の処理以外は、図51の処理は、図35の処理に含まれるため説明を省略する。
【0319】
非同期レコ−ドライト部a103は、すでに説明済みであるため、説明を省略する。
【0320】
図9は、第3の実施例のもう1つの実現方法である。図7、図8で示した内容との相違は、更新後パリティレコ−ド108を作成する契機が、更新後パリティレコ−ド108そのものをディスク装置1304に書き込む契機であるという点である。(906)すなわち、図9は、第3の実施例において、パリティ作成契機として、図74に示したパリティ作成契機cが用いられた場合の、制御装置1305の動作を示したものである。
【0321】
第1の実施例で図3に示した動作と同様に、図9の動作でも、制御装置1308は、非同期レコ−ドライト部c903を用いて、更新後パリティレコ−ド108の作成処理を行いながら、これをディスク装置1304に書き込む。
【0322】
したがって、同期デ−タライト部i901、非同期レコ−ドロ−ド部d902には、更新後パリティレコ−ド108を作成する機能はない。
【0323】
以下、詳細な動作を説明する。
【0324】
図52は、ヒット/ミス判定部f900の処理フロ−である。図52は、処理装置1300からのライト要求を受け取った時、実行される処理フロ−である。一方、ヒット/ミス判定部f900の待ち状態が開放された時に実行開始される処理は、図27に示した処理フロ−となる。図27は、すでに説明したため、ここでは、説明を省略する。以下、図52の説明を行う。図52に示したヒットミス判定部f900の処理フロ−は、ヒットミス判定部b300の図38の処理フロ−に類似している。したがって、第38図との相違について説明する。図52の中で、図38と同様のステップ番号の処理は、図38の処理と同様である。
【0325】
ステップ5200で、制御装置1305は、処理装置1300から、ライト対象となるデ−タレコ−ド1500に対するデ−タを受け取るために、無条件に、同期デ−タライト部i901をコ−ルする。以上の処理以外は、図52の処理フロ−は、第38図の処理フロ−に含まれるため、説明を省略する。
【0326】
図53は、同期デ−タライト部i901が、ディスク装置1305の位置付け処理が完了した時に実行される処理フロ−である。ヒット/ミス判定部b300からコ−ルされた時に実行される処理フロ−は、図32に示した処理フロ−であるため、ここでの説明を省略する。以下、図53の説明を行う。図53に示した同期デ−タライト部i901の処理フロ−は、同期デ−タライト部h801の図50の処理フロ−に類似している。したがって、図50との相違について説明する。図50の中で、図50と同様のステップ番号の処理は、図50の処理と同様である。
【0327】
ステップ5300では、制御装置1305は、グル−プ内他デ−タレコ−ド702(他のデ−タレコ−ド1500)が、キャッシュ1308内に格納されているかをチェックする。そうでない場合、ステップ5000へジャンプする。そうあれれば、ステップ5301で、制御装置1305は、すべての更新前パリティレコ−ド107に対応するライトアフタビット2202をオンにする。この後、ステップ3302へジャンプする。これ以外の図53の処理は、図50に含まれるため、説明を省略する。
【0328】
図54は、非同期レコ−ドロ−ド部d902が、ディスク装置1305の位置付け処理が完了した時に実行される処理フロ−である。制御装置1305の空いた時間を利用して実行する処理フロ−は、図34に示した処理フロ−であるため、ここでの説明を省略する。以下、図54の説明を行う。図54に示した非同期レコ−ドロ−ド部d902の処理フロ−は、非同期レコ−ドロ−ド部c801の第51図の処理フロ−に類似している。図54の処理フロ−は、図51に示した処理フロ−に含まれる。これは、図54では、更新後パリティレコ−ド108を作成する処理を含まない点以外は、図51の処理と同様であるためである。図51の内の各ステップの処理はすでに説明したため、ここでの説明は省略する。
【0329】
図55は、非同期レコ−ドライト部c903の処理フロ−である。制御装置1305の空いた時間を利用して実行される処理フロ−は、図41に示した処理フロ−であるため、ここでは説明を省略する。図55は、非同期レコ−ドライト部b302の図42の処理フロ−に類似している。したがって、図42との相違について説明する。図55の中で、図42と同じステップ番号の処理は、図42の処理と同じである。以下、図55の処理を説明する。
【0330】
ステップ5500では、制御装置1305は、以下の処理を実行する。すなわち、キャッシュ内のパリティグル−プ1600内のすべてのデ−タレコ−ド1500から、パリティ作成装置b703を用いて更新後デ−タレコ−ド107を作成しながら、これをディスク装置1304に書き込む。(キャッシュ1308内のデ−タレコ−ド1500の具体的な選択方法については、ステップ5100で説明したとおりである。)さらに、この値を更新後セグメントポインタ2201が示すセグメント1800に格納する。
【0331】
すべてのライトアフタビット2202がオフになった場合には、ステップ5501で、制御装置1305は、ライト対象となったデ−タレコ−ド1500、および、すべてのパリティレコ−ド1501に対応する更新後セグメントポインタ2201が示していたセグメント1800を、更新前セグメントポインタ2200が示すようにする。そして、対応する更新後セグメントポインタ2201にはヌル値を設定する。
【0332】
以上の点以外は、図55の処理フロ−は図42の処理フロ−と同様である。
【0333】
図77は、第3の実施例の別の実現方法である。図77の特徴は、更新後パリティレコ−ド108を作成する契機が、制御装置1305のデ−タ転送処理とは、非同期化している点である。すなわち、図77は、第3の実施例において、パリティ作成契機として、図86に示したパリティ作成契機dが用いられた場合の、制御装置1305の動作を示したものである。
【0334】
図77に示すように、制御装置1305は、パリティ作成部b7701により、更新後デ−タレコ−ド106とグル−プ内他デ−タレコ−ド702から、パリティ作成装置b703を用いて更新後デ−タレコ−ド108を作成する。(7702)
以下、詳細な動作を説明する。ただし、ヒット/ミス判定部l7700、パリティ作成部b7701以外の各処理部の説明はすでに行っているため、説明を省略する。
【0335】
図81は、ヒット/ミス判定部l8100の処理フロ−図である。ヒット/ミス判定部l8100は、2つの実行開始点をもつ。
【0336】
第1の開始点は、図81に示された開始点であり、処理装置1300からのライト要求を受け取った時、実行開始される開始点である。第2の開始点は、待ち状態が開放された時の開始点であり、ヒット/ミス判定部a100の処理フロ−と同様であるため、図27に示した処理フロ−となる。図27は、すでに説明したため、ここでは、説明を省略する。以下、図81の説明を行う。図81に示したヒット/ミス判定l8100の処理フロ−は、ヒット/ミス判定部a100の図48の処理フロ−に相当する。したがって、図48との相違について説明する。図81の中で、図48と同様のステップ番号の処理は、図48の処理と同様である。
【0337】
図81の処理フロ−では、制御装置1305は、ステップ4800、パリティグル−プ1600内の他のデ−タレコ−ド1500の中に存在しないものがあるかを、チェックする。すべて存在する場合、ステップ7900で、パリティ作成ビット2206をオンにする。この後、ステップ4802へジャンプする。以上の処理以外は、図81の処理フロ−は、図48の処理フロ−に含まれることになる。
【0338】
図85は、パリティ作成部b7701の処理フロ−図である。図85に示したパリティ作成部b7701の処理フロ−は、パリティ作成部a7501の図84の処理フロ−に相当する。したがって、図84との相違について説明する。図85の中で、図84と同様のステップ番号の処理は、図84の処理と同様である。ステップ8500では、制御装置1305は、更新後デ−タレコ−ド106とグル−プ内他デ−タレコ−ド702から、更新後デ−タレコ−ド108を作成する。更新後パリティレコ−ド108を作成する。詳細は、ステップ3504等を参照されたい。以上の処理以外は、図85の処理フロ−は、図84の処理フロ−に含まれることになる。
【0339】
次に、第4の実施例について説明する。第4の実施例は、図87に示したように、パリティグル−プヒット/ミス判定処理b6600、非同期処理d7100の組合せである。ただし、パリティ作成契機に関しては、パリティ作成契機a、パリティ作成契機b、パリティ作成契機c、パリティ作成契機dが関係する。
【0340】
まず、第4の実施例の特長を説明する。
【0341】
(1)パリティレコ−ド1501の更新値(更新後パリティレコ−ド108)を作成するため、パリティグル−プヒット/ミス判定処理b6600を用いる。具体的に用いる情報は、ライト対象として指定されたデ−タレコ−ド1500の更新後の値と同一パリティグル−プ1600内の他のすべてのデ−タレコ−ド1500の値(グル−プ内他デ−タレコ−ド702)である。
【0342】
(2)また、パリティレコ−ド1501の更新値(更新後パリティレコ−ド108)を作成に伴う処理の非同期化処理については、非同期処理d7100を用いる。すなわち、高速ライト処理1313、あるいは、高信頼/高速ライト処理1402を実行する。
【0343】
(3)第4の実施例においても、パリティ作成契機に関しては、パリティ作成契機a、パリティ作成契機b、パリティ作成契機c、パリティ作成契機dをすべての作成契機が組み合わされる。
【0344】
図10は、第4の実施例において、ライト対象とするデ−タレコ−ド1500が属するパリティグル−プ1600内のすべてのグル−プ内他デ−タレコ−ド702が、キャッシュ1308に、存在する場合の制御装置1305の動作を示したものである。すなわち、図10は、第4の実施例において、パリティ作成契機として、図72に示したパリティ作成契機aが用いられた場合の、制御装置1305の動作を示したものである。
【0345】
この場合、更新後パリティレコ−ド108の更新値の作成は、更新後デ−タレコ−ド106を、キャッシュ1308(および、不揮発性メモリ1400)に書き込む際に、制御装置1305が、同期デ−タライト部j1001を用いて実行する。(1002)この際、パリティ作成装置b703を使用する。
【0346】
更新後デ−タレコ−ド106、および、更新後パリティレコ−ド108は、制御装置1305が、非同期レコ−ドライト部a103を用いて、処理装置1300のリ−ド/ライト要求とは非同期に、ディスク装置1305に書き込む。(111)
図11は、第4の実施例において、ライト対象とするデ−タレコ−ド1500が属するパリティグル−プ1600内のすべてのグル−プ内他デ−タレコ−ド702の中に、キャッシュ1308に存在しないものがある場合の制御装置1305の動作を示したものである。すなわち、図11は、第4の実施例において、パリティ作成契機として、図73に示したパリティ作成契機aが用いられた場合の、制御装置1305の動作を示したものである。
【0347】
この場合、制御装置1305が、非同期レコ−ドロ−ド部c901を用いて、処理装置1300からのリ−ド/ライト要求とは非同期に、キャッシュ1308に存在しない更新前デ−タレコ−ド107にキャッシュ1308にロ−ドする。キャッシュ1308に存在しない最後の更新前パリティレコ−ド107をキャッシュ1308にロ−ドした時、すべてのパリティレコ−ド1502に関し、更新後パリティレコ−ド108を作成する。(804)
更新後デ−タレコ−ド106は、図11に示したように、同期デ−タライト部k1100により、キャッシュ1308(不揮発性メモリ1400に書き込む場合もある。)へ書き込むが、この契機には、更新後パリティレコ−ド108は作成しない。(111)
非同期レコ−ドライト部a302の動作は図10の動作と同様であるため、説明を省略する。
【0348】
次に、図10と図11に示した各処理部の詳細について説明する。
【0349】
まず、ヒット/ミス判定部g1000の動作を説明する。
【0350】
図56は、ヒット/ミス判定部g1000の処理フロ−である。図56は、処理装置1300からのライト要求を受け取った時、実行される処理フロ−である。一方、ヒット/ミス判定部g1000の待ち状態が開放された時に実行開始される処理は、図27に示した処理フロ−となる。図27は、すでに説明したため、ここでは、説明を省略する。以下、図56の説明を行う。図56に示したヒット/ミス判定部g1000の処理フロ−は、ヒット/ミス判定部e700の図48の処理フロ−に類似している。したがって、図48との相違について説明する。図56の中で、図48と同様のステップ番号の処理は、図48の処理と同様である。
【0351】
ステップ5600では、ライト対象となるデ−タレコ−ド1500が属するパリティグル−プ1600内のすべてのグル−プ内他デ−タレコ−ド702の中に、キャッシュ1308に存在する場合、制御装置1305は、ステップ5600で、同期デ−タライト部j1001をコ−ルし、処理を終了する。
【0352】
存在しない場合、制御装置1305は、ステップ5601で、同期デ−タライト部k1100をコ−ルし、処理を終了する。以上の処理以外は、図56の処理フロ−は、図48の処理フロ−に含まれるため、説明は省略する。
【0353】
図57は、同期デ−タライト部j1001の処理フロ−である。図57は、同期デ−タライト部j1001が、ヒット/ミス判定部g1000からコ−ルされた時に実行される処理フロ−である。図57に示した同期デ−タライト部j1001の処理フロ−は、図44の同期デ−タライト部d401の処理フロ−に類似している。したがって、図44との相違について説明する。図57の中で、図44と同様のステップ番号の処理は、図44の処理と同様である。
【0354】
ステップ5700で、制御装置1305は、処理装置1300から受け取ったデ−タを、更新後デ−タレコ−ド105として、更新後セグメントポインタ2201で示されたセグメント1800に格納する。(不揮発性メモリ1400に格納する場合、不揮発性セグメント2500にも転送する。)さらに、以下の処理を実行する。
【0355】
処理装置1300から受け取った更新後デ−タレコ−ド105とそれ以外のグル−プ内他デ−タレコ−ド702より、すべての更新後パリティレコ−ド108を作成し、対応する更新後セグメントポインタ2201で示されたセグメント1800に格納する。
【0356】
ステップ5701では、制御装置1305は、ライト対象となったデ−タレコ−ド1500、および、すべてのパリティレコ−ド1501に対応する更新後セグメントポインタ2201が示していたセグメント1800を、更新前セグメントポインタ2200が示すようにする。そして、対応する更新後セグメントポインタ2201にはヌル値を設定する。
【0357】
以上の処理以外は、図57の処理は、図44の処理に含まれるため説明を省略する。
【0358】
図58は、同期デ−タライト部k1100の処理フロ−である。図58は、同期デ−タライト部b200が、ヒット/ミス判定部g1000からコ−ルされた時に実行される処理フロ−である。図58に示した同期デ−タライト部k1100の処理フロ−は、同期デ−タライト部e500の図45の処理フロ−に相当する。したがって、図45との相違について説明する。図45の中で、図45と同様のステップ番号の処理は、図45の処理と同様である。
【0359】
以下、図58の処理を説明する。
【0360】
ステップ5800では、制御装置1305は、キャッシュ1308に格納されていないデ−タレコ−ド1500に対応するロ−ド要求ビット2203をオンにする。(この場合、ライト対象となったデ−タレコ−ド1500に対応するロ−ド要求ビット2203がオンの場合、オフする。)
以上の処理以外は、図58の処理は、図45の処理に含まれるため説明を省略する。
【0361】
非同期レコ−ドロ−ド部c201、非同期レコ−ドライト部a103の処理フロ−は、すでに説明したため、ここでは、説明を省略する。
【0362】
図12は、第4の実施例の別の実現方法である。図10、図11で示した内容との相違は、更新後パリティレコ−ド108を作成する契機が、更新後パリティレコ−ド108そのものをディスク装置1304に書き込む契機であるという点である。すなわち、図12は、第4の実施例において、パリティ作成契機として、図73に示したパリティ作成契機aが用いられた場合の、制御装置1305の動作を示したものである。
【0363】
第1の実施例で第3図に示した動作と同様、制御装置1305は、図12の動作でも、非同期レコ−ドライト部b303により更新後パリティレコ−ド108の作成しながら、これをディスク装置1304に書き込む。(1203)
以下、詳細な動作を説明する。
【0364】
図59は、ヒット/ミス判定部h1200の処理フロ−である。図59は、処理装置1300からのライト要求を受け取った時、実行される処理フロ−である。一方、ヒット/ミス判定部h1200の待ち状態が開放された時に実行開始される処理は、図27に示した処理フロ−となる。図27は、すでに説明したため、ここでは、説明を省略する。以下、図59の説明を行う。図59に示したヒット/ミス判定部h1200の処理フロ−は、ヒット/ミス判定部f900の図52の処理フロ−に相当する。したがって、図52との相違について説明する。図59の中で、図52と同様のステップ番号の処理は、図52の処理と同様である。
【0365】
ステップ5900で、制御装置1305は、処理装置1300から、ライト対象となるデ−タレコ−ド1500に対するデ−タを受け取るために、無条件に、同期デ−タライト部l1201をコ−ルする。以上の処理以外は、図59の処理フロ−は、図52の処理フロ−に含まれるため、説明を省略する。
【0366】
図60は、同期デ−タライト部l1201の処理フロ−である。本処理フロ−は、ヒット/ミス判定部h1200からコ−ルされた時に実行される処理フロ−である。図60に示した同期デ−タライト部l201の処理フロ−は、同期デ−タライト部k1100の図58の処理フロ−に類似している。したがって、図58との相違について説明する。図60の中で、図58と同じステップ番号の処理は、図58の処理と同じである。
【0367】
ステップ6000では、制御装置1305は、すべてのグル−プ内他デ−タレコ−ド702が、キャッシュ1308内に格納されているかをチェックする。そうでない場合、ステップ5800へジャンプする。そうあれば、ステップ6001で、制御装置1305は、すべての更新前パリティレコ−ド107に対応するライトアフタビット2202をオンにする。この後、ステップ3302へジャンプする。これ以外の図60の処理は、図58に含まれるため、説明を省略する。非同期レコ−ドロ−ド部d902、非同期レコ−ドライト部c903の処理についてはすでに説明を行ったため、説明を省略する。
【0368】
図78は、第4の実施例の別の実現方法である。図78の特徴は、更新後パリティレコ−ド108を作成する契機が、制御装置1305のデ−タ転送処理とは、非同期化している点である。すなわち、図78は、第4の実施例において、パリティ作成契機として、図86に示したパリティ作成契機dが用いられた場合の、制御装置1305の動作を示したものである。
【0369】
図78に示すように、制御装置1305は、パリティ作成部b7701により、更新後デ−タレコ−ド106とグル−プ内他デ−タレコ−ド702から、パリティ作成装置b703を用いて更新後デ−タレコ−ド108を作成する。(7702)
以下、詳細な動作を説明する。ただし、ヒット/ミス判定部m7800以外の各処理部の説明はすでに行っているため、説明を省略する。
【0370】
図82は、ヒット/ミス判定部m8200の処理フロ−図である。ヒット/ミス判定部m8200は、2つの実行開始点をもつ。
【0371】
第1の開始点は、図82に示された開始点であり、処理装置1300からのライト要求を受け取った時、実行開始される開始点である。第2の開始点は、待ち状態が開放された時の開始点であり、ヒット/ミス判定部a100の処理フロ−と同様であるため、図27に示した処理フロ−となる。図27は、すでに説明したため、ここでは、説明を省略する。以下、図82の説明を行う。図82に示したヒット/ミス判定l8100の処理フロ−は、ヒット/ミス判定部a100の図56の処理フロ−に相当する。したがって、図56との相違について説明する。図82の中で、図56と同様のステップ番号の処理は、図56の処理と同様である。
【0372】
図81の処理フロ−では、制御装置1305は、ステップ4800、パリティグル−プ1600内の他のデ−タレコ−ド1500の中に存在しないものがあるかを、チェックする。すべて存在する場合、ステップ7900で、パリティ作成ビット2206をオンにする。この後、ステップ5602へジャンプする。以上の処理以外は、図82の処理フロ−は、図56の処理フロ−に含まれることになる。
【0373】
最後に、第5の実施例について説明する。第5の実施例は、パリティグル−プヒット/ミス判定機能c6700を用いた実施例である。ただし、第5の実施例は、図87に示すように、パリティレコ−ドヒット/ミス判定機能a6500、パリティレコ−ドヒット/ミス判定機能b6600、非同期処理a6800、非同期処理b6900、非同期処理c7000、非同期処理d7100、パリティ作成契機a、パリティ作成契機b、パリティ作成契機c、パリティ作成契機dも関係する。以下、詳細に説明する。
【0374】
パリティレコ−ド1501の更新値を作成するための情報は、すでに述べたように以下の2種類ある。
【0375】
(1)デ−タレコ−ド1500の更新前の値と更新後の値、および、パリティレコ−ド1501の更新前の値。
【0376】
(2)デ−タレコ−ド1500の更新後の値と同一パリティグル−プ1600他のすべてのデ−タレコ−ド1501の値。
【0377】
第5の実施例の特長は、以上のレコ−ド1502のキャッシュ1308の格納状況により、(1)、(2)のどちらのレコ−ド1502の集合を用いてパリティレコ−ド1501の更新値を作成するかを、制御装置1305が選択する点である。
【0378】
図61は、第5の実施例における制御装置1305の動作を、処理フロ−で表したものである。
【0379】
制御装置1305は、処理装置1300からライト要求を受け取ると、ステップ6100で、更新前パリティレコ−ド107とライト対象となるデ−タレコ−ド1501の更新前デ−タレコ−ド105の中で、キャッシュ1308にない数をチェックする。
【0380】
制御装置1308は、ステップ6101で、ライト対象となるデ−タレコ−ド1501と同一パリティグル−プのグル−プ内他デ−タレコ−ド702(他のデ−タレコ−ド1501)の中で、キャッシュ1308に存在しないものの数をチェックする。(この場合、更新前セグメント2200も更新後セグメント2201のいずれもヌル値であるデ−タレコ−ド1500の数である。)
ステップ6102では、制御装置1305は、ステップ6100でチェックした数、ステップ6101でチェックした数のうち、どちらが小さいかをチェックする。この場合小さい方を選んだ方がロ−ドすべきレコ−ド1502の数が小さいため、オ−バヘッドが少ない。したがって、ステップ6100でチェックした数の方が小さい場合、ライト対象となるデ−タレコ−ド1500の更新前の値、パリティレコ−ド1501の更新前の値から、パリティレコ−ド1501の更新値を作成するため、ステップ6103へジァンプする。ステップ6103へのジャンプは、パリティグル−プヒット/ミス判定処理a6600の実行に入ることを意味する。
【0381】
一方、そうでない場合、他のすべてのデ−タレコ−ド1501の値からパリティレコ−ド1501の更新値を作成するため、ステップ6106へジァンプする。ステップ6106へのジャンプは、パリティグル−プヒット/ミス判定処理b6700の実行に入ることを意味する。
【0382】
ステップ6103では、デ−タレコ−ド1501のディスク装置への書き込みを同期化するかを判断する。同期化する場合、非同期処理a6800を選択したことになる。ステップ6104では、ヒット/ミス判定部a100をコ−ルする。ヒット/ミス判定部a100をコ−ルしたことは、パリティ作成契機としては、パリティ作成契機a、パリティ作成契機bを選択したことになる。この場合、パリティ作成契機cを選択するのであれば、代わりにヒット/ミス判定部b300をコ−ルしてもよい。また、パリティ作成契機dを選択するのであれば、代わりにヒット/ミス判定部j7900をコ−ルしてもよい。
【0383】
非同期化する場合、非同期処理b6900を選択したことになる。ステップ6105では、ヒット/ミス判定部c400をコ−ルする。ヒット/ミス判定部c400をコ−ルしたことは、パリティ作成契機としては、パリティ作成契機a、パリティ作成契機bを選択したことになる。この場合、パリティ作成契機cを選択するのであれば、代わりにヒット/ミス判定部d600をコ−ルしてもよい。また、パリティ作成契機dを選択するのであれば、代わりにヒット/ミス判定部k8000をコ−ルしてもよい。
【0384】
ステップ6106では、デ−タレコ−ド1501のディスク装置への書き込みを同期化するかを判断する。同期化する場合、非同期処理c7000を選択したことになる。ステップ6107では、ヒット/ミス判定部e700をコ−ルする。ヒット/ミス判定部e700をコ−ルしたことは、パリティ作成契機としては、パリティ作成契機a、パリティ作成契機bを選択したことになる。この場合、パリティ作成契機cを選択するのであれば、代わりにヒット/ミス判定部f900をコ−ルしてもよい。また、パリティ作成契機dを選択するのであれば、代わりにヒット/ミス判定部l8100をコ−ルしてもよい。
【0385】
非同期化する場合、非同期処理d7100を選択したことになる。ステップ6105では、ヒット/ミス判定部g1000をコ−ルする。ヒット/ミス判定部c400をコ−ルしたことは、パリティ作成契機としては、パリティ作成契機a、パリティ作成契機bを選択したことになる。この場合、パリティ作成契機cを選択するのであれば、代わりにヒット/ミス判定部h1200をコ−ルしてもよい。また、パリティ作成契機dを選択するのであれば、代わりにヒット/ミス判定部m8100をコ−ルしてもよい。
【0386】
【発明の効果】
本発明は、レコ−ド単位配置のディスクアレイ(Pattersonの論文におけるレベル4、レベル5のディスクアレイ)において、処理装置から発行されたライト要求に対する処理の高速化に関する。具体的には、制御装置内のディスクキャッシュを利用して、(1)パリティレコ−ドの更新値を作成するために必要な情報を獲得する処理時間の短縮、(2)ライト要求に伴って発生する処理を可能な限り非同期化することにる処理装置から見た応答時間の短縮を実現する。
【図面の簡単な説明】
【図1】本発明の概要を表す。
【図2】本発明の第1の実施例において、処理装置からライト要求を受け取った時、パリティレコ−ドの更新値を作成するために必要なデ−タがキャッシュに格納されていない場合の制御装置の動作の概要を表す。
【図3】本発明の第1の実施例において、パリティレコ−ドの更新値の作成しながら、更新値をディスク装置に書き込む場合の制御装置の動作の概要を表す。
【図4】本発明の第2の実施例において、処理装置からライト要求を受け取った時、パリティレコ−ドの更新値を作成するために必要なデ−タがキャッシュに格納されている場合の制御装置の動作の概要を表す。
【図5】本発明の第2の実施例において、処理装置からライト要求を受け取った時、パリティレコ−ドの更新値を作成するために必要なデ−タがキャッシュに格納されていない場合の制御装置の動作の概要を表す。
【図6】本発明の第2の実施例において、パリティレコ−ドの更新値の作成しながら、更新値をディスク装置に書き込む場合の制御装置の動作の概要を表す。
【図7】本発明の第3の実施例において、処理装置からライト要求を受け取った時、パリティレコ−ドの更新値を作成するために必要なデ−タがキャッシュに格納されている場合の制御装置の動作の概要を表す。
【図8】本発明の第3の実施例において、処理装置からライト要求を受け取った時、パリティレコ−ドの更新値を作成するために必要なデ−タがキャッシュに格納されていない場合の制御装置の動作の概要を表す。
【図9】本発明の第3の実施例において、パリティレコ−ドの更新値の作成しながら、更新値をディスク装置に書き込む場合の制御装置の動作の概要を表す。
【図10】本発明の第4の実施例において、処理装置からライト要求を受け取った時、パリティレコ−ドの更新値を作成するために必要なデ−タがキャッシュに格納されている場合の制御装置の動作の概要を表す。
【図11】本発明の第4の実施例において、処理装置からライト要求を受け取った時、パリティレコ−ドの更新値を作成するために必要なデ−タがキャッシュに格納されていない場合の制御装置の動作の概要を表す。
【図12】本発明の第4の実施例において、パリティレコ−ドの更新値の作成しながら、更新値をディスク装置に書き込む場合の制御装置の動作の概要を表す。
【図13】本発明の対象となる計算機システムの構成を表す。
【図14】本発明の対象となるもう1つの計算機システムの構成を表す。
【図15】ディスク装置上に存在するレコ−ドの種類を表す。
【図16】パリティグル−プを構成するレコ−ドを表す。
【図17】本発明の対象となる第3の計算機システムの構成を表す。
【図18】キャッシュの構成を表す。
【図19】セグメントの構成を表す。
【図20】ディレクトリの構成を表す。
【図21】トラック票の構成を表す。
【図22】パリティグル−プ(PG)管理情報の構成を表す。
【図23】空きセグメントキュ−の構造を表す。
【図24】空きPG管理情報キュ−の構成を表す。
【図25】不揮発メモリの構成を表す。
【図26】ヒット/ミス判定部aの処理フロ−を表す。
【図27】待ち状態が開放された時のヒット/ミス判定部aの処理フロ−を表す。
【図28】同期デ−タロ−ド部aの処理フロ−を表す。
【図29】ディスク装置の位置付け処理が完了した時の、同期デ−タロ−ド部aの処理フロ−を表す。
【図30】同期デ−タライト部aの処理フロ−を表す。
【図31】ディスク装置の位置付け処理が完了した時の、同期デ−タライト部aの処理フロ−を表す。
【図32】同期デ−タライト部aの処理フロ−を表す。
【図33】ディスク装置の位置付け処理が完了した時の、同期デ−タライト部aの処理フロ−を表す。
【図34】非同期レコ−ドロ−ド部aの処理フロ−を表す。
【図35】ディスク装置の位置付け処理が完了した時の、非同期レコ−ドロ−ド部aの処理フロ−を表す。
【図36】非同期レコ−ドライト部aの処理フロ−を表す。
【図37】ディスク装置の位置付け処理が完了した時の、非同期レコ−ドライト部aの処理フロ−を表す。
【図38】ヒット/ミス判定部bの処理フロ−を表す。
【図39】同期デ−タライト部cの処理フロ−を表す。
【図40】非同期レコ−ドロ−ド部bの処理フロ−を表す。
【図41】非同期レコ−ドライト部bの処理フロ−を表す。
【図42】ディスク装置の位置付け処理が完了した時の、非同期レコ−ドライト部bの処理フロ−を表す。
【図43】ヒット/ミス判定部cの処理フロ−を表す。
【図44】同期デ−タライト部dの処理フロ−を表す。
【図45】同期デ−タライト部eの処理フロ−を表す。
【図46】ヒット/ミス判定部dの処理フロ−を表す。
【図47】同期デ−タライト部fの処理フロ−を表す。
【図48】ヒット/ミス判定部eの処理フロ−を表す。
【図49】同期デ−タライト部gの処理フロ−を表す。
【図50】同期デ−タライト部hの処理フロ−を表す。
【図51】非同期レコ−ドロ−ド部cの処理フロ−を表す。
【図52】ヒット/ミス判定部fの処理フロ−を表す。
【図53】同期デ−タライト部iの処理フロ−を表す。
【図54】非同期レコ−ドロ−ド部dの処理フロ−を表す。
【図55】非同期レコ−ドライト部cの処理フロ−を表す。
【図56】ヒット/ミス判定部gの処理フロ−を表す。
【図57】同期デ−タライト部jの処理フロ−を表す。
【図58】同期デ−タライト部kの処理フロ−を表す。
【図59】ヒット/ミス判定部dの処理フロ−を表す。
【図60】同期デ−タライト部kの処理フロ−を表す。
【図61】第5の実施例における制御装置の動作に関する処理フロ−を表す。
【図62】本発明の第1の実施例において、処理装置からライト要求を受け取った時、パリティレコ−ドの更新値を作成するために必要なデ−タがキャッシュに格納されている場合の制御装置の動作の概要を表す。
【図63】その前のライト要求で必要となったパリティレコ−ドのロ−ド処理が完了しない場合、同じデ−タレコ−ドにライト要求を受け付けた時のキャッシュの状態を表す。
【図64】その前のライト要求で必要となったパリティレコ−ドのロ−ド処理が完了しない場合、同じデ−タレコ−ドにライト要求を受け付けた後のキャッシュの状態を表す。
【図65】パリティグル−プヒット/ミ判定処理aの概要を表す。
【図66】パリティグル−プヒット/ミ判定処理bの概要を表す。
【図67】パリティグル−プヒット/ミ判定処理cの概要を表す。
【図68】非同期処理aの概要を表す。
【図69】非同期処理bの概要を表す。
【図70】非同期処理cの概要を表す。
【図71】非同期処理dの概要を表す。
【図72】パリティ作成契機aの概要を表す。
【図73】パリティ作成契機bの概要を表す。
【図74】パリティ作成契機cの概要を表す。
【図75】本発明の第1の実施例において、パリティレコ−ドの更新値の作成を制御装置のデ−タ転送とは、非同期に実行する場合の制御装置の動作の概要を表す。
【図76】本発明の第2の実施例において、パリティレコ−ドの更新値の作成を制御装置のデ−タ転送とは、非同期に実行する場合の制御装置の動作の概要を表す。
【図77】本発明の第3の実施例において、パリティレコ−ドの更新値の作成を制御装置のデ−タ転送とは、非同期に実行する場合の制御装置の動作の概要を表す。
【図78】本発明の第4の実施例において、パリティレコ−ドの更新値の作成を制御装置のデ−タ転送とは、非同期に実行する場合の制御装置の動作の概要を表す。
【図79】ヒット/ミス判定部jの処理フロ−を表す。
【図80】ヒット/ミス判定部kの処理フロ−を表す。
【図81】ヒット/ミス判定部lの処理フロ−を表す。
【図82】ヒット/ミス判定部mの処理フロ−を表す。
【図83】非同期レコ−ドロ−ド部fの処理フロ−を表す。
【図84】パリティ作成部aの処理フロ−を表す。
【図85】パリティ作成部aの処理フロ−を表す。
【図86】パリティ作成契機dの概要を表す。
【図87】本発明の課題を解決する機構と、各実施例との関係を表す。
【符号の説明】
100…ヒット/ミス判定部a、101…同期デ−タライト部a、102…同期デ−タロ−ド部a、103…同期レコ−ドライト部a、105…更新前デ−タレコ−ド、106…更新後デ−タレコ−ド、107…更新前パリティレコ−ド、108…更新後パリティレコ−ド、200…同期デ−タライト部b、201…非同期レコ−ドライト部a、300…ヒット/ミス判定部b、301…同期デ−タライト部c、302…非同期レコ−ドロ−ド部b、303…同期レコ−ドライト部b、400…ヒット/ミス判定部c、401…同期デ−タライト部d、500…同期デ−タライト部e、600…ヒット/ミス判定部d、601…同期デ−タライト部f、700…ヒット/ミス判定部e、701…同期デ−タライト部i、702…グル−プ内デ−タレコ−ド、800…同期デ−タライト部h、801…非同期レコ−ド部c、900…ヒット/ミス判定部f、901…同期デ−タライト部i、902…非同期レコ−ド部d、903…同期レコ−ドライト部c、1000…ヒット/ミス判定部g、1001…同期デ−タライト部j、1100…同期デ−タライト部k、1200…ヒット/ミス判定部h、1201…同期デ−タライト部l、1700…ヒット/ミス判定部i、1701…同期デ−タライト部m、1702…同期レコ−ドロ−ド部b、1703…非同期レコ−ドライト部e、1704…同期レコ−ドライト部d

Claims (18)

  1. パリティグループに含まれる各々データを有する一以上のデータレコードと、前記一以上のデータレコードと同じパリティグループに含まれ、該一以上のデータレコードのデータを復元するために用いられる冗長データを有する、パリティレコードとが格納される、複数のディスク装置と、
    キャッシュメモリを有する制御装置とを有し、
    前記パリティグループに含まれる一以上のデータレコード及びパリティレコードは、各々異なるディスク装置に格納されており、
    前記制御装置は、
    該制御装置に接続される処理装置から、データレコードのデータとして前記複数のディスク装置のいずれかに格納されるライトデータを受信し、
    前記ライトデータを前記キャッシュメモリに格納し、
    ライト処理が終了した旨を前記処理装置に報告し、
    ライト処理が終了した旨を報告した後に、前記ライトデータを前記複数のディスク装置のいずれかに格納し、
    前記制御装置は更に、前記ライト処理が終了した旨を報告するタイミングとは非同期に、前記ライトデータに対応するデータレコードの旧データが、前記キャッシュメモリに格納されているかを確認し、
    前記旧データが、前記キャッシュメモリに格納されていない場合に、該旧データをディスク装置から前記キャッシュメモリにロードすることを特徴とする記憶装置システム。
  2. パリティグループに含まれる各々データを有する一以上のデータレコードと、前記一以上のデータレコードと同じパリティグループに含まれ、該一以上のデータレコードのデータを復元するために用いられる冗長データを有する、パリティレコードとが格納される、複数のディスク装置と、
    キャッシュメモリを有する制御装置とを有し、
    前記パリティグループに含まれる一以上のデータレコード及びパリティレコードは、各々異なるディスク装置に格納されており、
    前記制御装置は、
    該制御装置に接続される処理装置から、データレコードのデータとして前記複数のディスク装置のいずれかに格納されるライトデータを受信し、
    前記ライトデータを前記キャッシュメモリに格納し、
    ライト処理が終了した旨を前記処理装置に報告し、
    ライト処理が終了した旨を報告した後に、前記ライトデータを前記複数のディスク装置のいずれかに格納し、
    前記制御装置は更に、
    前記ライト処理が終了した旨を報告するタイミングとは非同期に、前記ライトデータに対応するデータレコードと同じパリティグループに含まれるパリティレコードの冗長データを更新するために必要なデータが、前記キャッシュメモリに格納されているか否かを判断し、
    前記必要なデータのうち、前記キャッシュメモリに格納されていないデータをディスク装置から前記キャッシュメモリにロードすることを特徴とする記憶装置システム。
  3. 請求項2記載の記憶装置システムにおいて、
    前記冗長データを更新するために必要なデータは、前記ライトデータに対応するデータレコードの旧データと、該データレコードと同じパリティグループに含まれるパリティレコードの旧冗長データであることを特徴とする記憶装置システム。
  4. 請求項2記載の記憶装置システムにおいて、
    前記冗長データを更新するために必要なデータは、前記ライトデータに対応するデータレコードと同じパリティグループに含まれる他のデータレコードのデータであることを特徴とする記憶装置システム。
  5. パリティグループに含まれる各々データを有する一以上のデータレコードと、前記一以上のデータレコードと同じパリティグループに含まれ、該一以上のデータレコードのデータを復元するために用いられる冗長データを有する、パリティレコードとが格納される、複数のディスク装置と、
    キャッシュメモリを有する制御装置とを有し、
    前記パリティグループに含まれる一以上のデータレコード及びパリティレコードは、各々異なるディスク装置に格納されており、
    前記制御装置は、
    該制御装置に接続される処理装置から、データレコードのデータとして前記複数のディスク装置のいずれかに格納されるライトデータを受信し、
    前記ライトデータを前記キャッシュメモリに格納し、
    ライト処理が終了した旨を前記処理装置に報告し、
    ライト処理が終了した旨を報告した後に、前記ライトデータを前記複数のディスク装置のいずれかに格納し、
    前記制御装置は更に、
    前記ライトデータを前記複数のディスク装置のいずれかに格納する処理とは非同期に、前記ライトデータが格納されるデータレコードと同じパリティグループに含まれるパリティレコードの冗長データを生成することを特徴とする記憶装置システム。
  6. パリティグループに含まれる各々データを有する一以上のデータレコードと、前記一以上のデータレコードと同じパリティグループに含まれ、該一以上のデータレコードのデータを復元するために用いられる冗長データを有する、パリティレコードとが格納される、複数のディスク装置と、
    キャッシュメモリを有する制御装置とを有し、
    前記パリティグループに含まれる一以上のデータレコード及びパリティレコードは、各々異なるディスク装置に格納されており、
    前記制御装置は、
    該制御装置に接続される処理装置から、データレコードのデータとして前記複数のディスク装置のいずれかに格納されるライトデータを受信し、
    前記ライトデータを前記キャッシュメモリに格納し、
    ライト処理が終了した旨を前記処理装置に報告し、
    ライト処理が終了した旨を報告した後に、前記ライトデータを前記複数のディスク装置のいずれかに格納し、
    前記制御装置は更に、ライト処理が終了した旨を報告するタイミングとは非同期に、前記ライトデータが格納されるデータレコードと同じパリティグループに含まれるパリティレコードの冗長データを生成し、
    前記冗長データを生成する処理とは非同期に、生成された冗長データを前記複数のディスク装置のいずれかに格納することを特徴とする記憶装置システム。
  7. データを有するデータレコードと冗長データを有するパリティレコードとが格納される複数のディスク装置と、
    キャッシュメモリと、
    前記複数のディスク装置と接続される制御装置とを有し、
    一以上のデータレコードと一以上のパリティレコードはパリティグループを構成し、
    前記パリティグループに含まれるレコードは、各々異なるディスク装置に格納されており、
    前記制御装置は、
    該制御装置に接続される処理装置から、データレコードのデータとして前記複数のディスク装置のいずれかに格納されるライトデータを受信し、
    受信した前記ライトデータを前記キャッシュメモリに格納した後、前記処理装置にライト処理の終了報告を送信し、
    前記終了報告の送信とは非同期に、前記ライトデータを前記複数のディスク装置のいずれかに格納し、
    前記ライトデータを前記複数のディスク装置のいずれかに格納する処理とは非同期に、前記ライトデータに対応するデータレコードと同じパリティグループに属するパリティレコードの冗長データを前記複数のディスク装置のいずれかに格納することを特徴とする記憶装置システム。
  8. データを有するデータレコードと冗長データを有するパリティレコードとが格納される複数のディスク装置と、
    キャッシュメモリと、
    前記複数のディスク装置と接続される制御装置とを有し、
    一以上のデータレコードと一以上のパリティレコードはパリティグループを構成し、
    前記パリティグループに含まれるレコードは、各々異なるディスク装置に格納されており、
    前記制御装置は、
    該制御装置に接続される処理装置から、データレコードのデータとして前記複数のディスク装置のいずれかに格納されるライトデータを受信し、
    受信した前記ライトデータを前記キャッシュメモリに格納し、更に、前記ライトデータを前記複数のディスク装置のいずれかに格納した後に、前記処理装置にライト処理の終了報告を送信し、
    前記ライトデータを前記複数のディスク装置のいずれかに格納する処理とは非同期に、前記ライトデータに対応するデータレコードと同じパリティグループに属するパリティレコードの冗長データを前記複数のディスク装置のいずれかに格納することを特徴とする記憶装置システム。
  9. データを有する一以上のデータレコードを格納する一以上の第一のディスク装置と、
    前記一以上のデータレコードのデータを回復するために用いられる冗長データを有する一以上のパリティレコードが格納される一以上の第二のディスク装置と、
    キャッシュメモリと、
    制御部とを有する記憶装置システムであって、
    前記制御部は、
    前記記憶装置システムに接続される処理装置から、ライトデータを有するライト要求を受信し、
    前記ライトデータを前記キャッシュメモリに書込み、
    前記処理装置にライト処理が終了した旨を示す終了報告を送信し、
    前記終了報告の送信後に、
    前記冗長データの更新値を生成するために必要なデータが、前記キャッシュメモリに格納されているか否かを判断し、
    前記判断結果に基づいて、前記冗長データの更新値を生成するために必要なデータを第一のディスク装置若しくは第二のディスク装置から、前記キャッシュメモリにロードし、前記一以上の第二のディスク装置に格納される冗長データの更新値を生成することを特徴とする記憶装置システム。
  10. 請求項9記載の記憶装置システムにおいて、
    前記冗長データの更新値を生成するために必要なデータは、前記一以上のデータレコードのデータのうち、前記ライトデータによって更新されるデータ以外のデータであることを特徴とする記憶装置システム。
  11. 請求項9記載の記憶装置システムにおいて、
    前記冗長データの更新値を生成するために必要なデータは、更新前の冗長データと、前記一以上のデータレコードのデータのうち、前記ライトデータによって更新されるデータであることを特徴とする記憶装置システム。
  12. データを有する一以上のデータレコードを格納する一以上の第一のディスク装置と、
    前記一以上のデータレコードのデータを回復するために用いられる冗長データを有する一以上のパリティレコードが格納される一以上の第二のディスク装置と、
    キャッシュメモリを有する制御装置とを有する記憶装置システムであって、
    前記制御装置は、
    前記記憶装置システムに接続される処理装置から、第一のディスク装置のいずれかに格納されるライトデータを受信し、
    前記ライトデータを前記キャッシュメモリに書込み、
    前記処理装置にライト処理が終了した旨の終了報告を送信し、
    前記終了報告の送信後に、前記ライトデータによって更新されるデータレコードが有する旧データが、前記キャッシュメモリに格納されているか否かを判断し、
    該旧データが前記キャッシュメモリに格納されていない場合には、第一のディスク装置のいずれかから、該旧データを前記キャッシュメモリにロードすることを特徴とする記憶装置システム。
  13. データを格納する一以上のデータレコードと、前記一以上のデータレコード各々のデータを回復するために用いられる冗長データを格納する一以上のパリティレコードとが格納される、複数のディスク装置と、
    キャッシュメモリと、
    前記複数のディスク装置及び前記キャッシュメモリに対するデータ若しくは冗長データの入出力を制御する制御部とを有する記憶装置システムであって、
    前記制御部は、
    前記記憶装置システムに接続される処理装置から、ライトデータを有するライト要求を受信し、
    前記ライトデータを前記キャッシュメモリに書込み、
    前記処理装置にライト処理が終了した旨を示す終了報告を送信し、
    前記終了報告の送信後に、前記冗長データの更新値を前記一以上のパリティレコードが格納されているディスク装置に格納し、
    ここで、前記制御部は、前記ライトデータを前記複数のディスク装置のいずれかに格納した後に、前記冗長データの更新値を生成することを特徴とする記憶装置システム。
  14. データを有する一以上のデータレコードを格納する一以上の第一のディスク装置と、
    前記一以上のデータレコードのデータを回復するために用いられる冗長データを有する一以上のパリティレコードが格納される一以上の第二のディスク装置と、
    キャッシュメモリを有する制御装置とを有する記憶装置システムであって、
    前記制御装置は、
    前記記憶装置システムに接続される処理装置から、第一のディスク装置のいずれかに格納されるライトデータを受信し、
    前記ライトデータを前記キャッシュメモリに格納した後、前記処理装置にライト処理が終了した旨を伝えるための終了報告を送信し、
    前記終了報告の送信後、前記ライトデータを前記第一のディスク装置のいずれかに格納し、
    前記ライトデータを前記第一のディスク装置のいずれかに格納した後、前記一以上の第二のディスク装置に冗長データの更新値を格納することを特徴とする記憶装置システム。
  15. データを有する一以上のデータレコードを格納する一以上の第一のディスク装置と、
    前記一以上のデータレコードのデータを回復するために用いられる冗長データを有する一以上のパリティレコードが格納される一以上の第二のディスク装置と、
    キャッシュメモリを有する制御装置とを有する記憶装置システムであって、
    前記制御装置は、
    前記記憶装置システムに接続される処理装置から、第一のディスク装置のいずれかに格納されるライトデータを受信し、
    前記ライトデータを前記キャッシュメモリに格納し、更に、前記ライトデータを前記第一のディスク装置のいずれかに格納した後に、前記処理装置にライト処理が終了した旨を伝えるための終了報告を送信し、
    前記ライトデータを前記第一のディスク装置のいずれかに格納した後、前記一以上の第二のディスク装置に冗長データの更新値を格納することを特徴とする記憶装置システム。
  16. データを有する一以上のデータレコードを格納する一以上の第一のディスク装置と、
    前記一以上のデータレコードのデータを回復するために用いられる冗長データを有する一以上のパリティレコードが格納される一以上の第二のディスク装置と、
    キャッシュメモリを有する制御装置とを有する記憶装置システムであって、
    前記制御装置は、
    前記記憶装置システムに接続される処理装置から、第一のディスク装置のいずれかに格納されるライトデータを受信し、
    前記ライトデータによって更新される旧データが前記キャッシュメモリに格納されていない場合に、該旧データを第一のディスク装置のいずれかから前記キャッシュメモリにロードし、
    前記旧データを前記キャッシュメモリにロードした後に、前記ライトデータを第一のディスク装置のいずれかに格納し、
    前記ライトデータを第一のディスク装置のいずれかに格納した後に前記処理装置にライト処理の終了報告を送信することを特徴とする記憶装置システム。
  17. 処理装置に接続され、該処理装置から受信したデータを格納する記憶装置システムであって、
    データを有する一以上のデータレコードを格納する一以上の第一のディスク装置と、
    前記一以上のデータレコードのデータを回復するために用いられる冗長データを有する一以上のパリティレコードが格納される一以上の第二のディスク装置と、
    キャッシュメモリと、
    前記処理装置から受信した、前記第一のディスク装置のいずれかに格納されるライトデータを前記キャッシュメモリに格納する第一の手段と、
    前記処理装置にライト処理の終了報告を送信する送信手段と、
    データ若しくは冗長データを、第一のディスク装置若しくは第二のディスク装置に格納する第二の手段とを有し、
    前記送信手段は、前記第一の手段がライトデータを前記キャッシュメモリに格納した後に終了報告を送信し、
    前記第二の手段は、前記送信手段が前記終了報告を送信した後に、前記ライトデータを第一のディスク装置のいずれかに格納し、前記一以上の第二のディスク装置に格納される冗長データを生成し、生成された冗長データを前記一以上の第二のディスク装置に格納し、
    ここで、前記第二の手段は、前記送信手段が前記終了報告を送信した後に冗長データを生成するために必要なデータが前記キャッシュメモリに格納されているか否か判断し、判断結果に基づいて、冗長データを生成するために必要なデータを第一のディスク装置若しくは第二のディスク装置から前記キャッシュメモリにロードすることを特徴とする記憶装置システム。
  18. 処理装置に接続され、該処理装置から受信したデータを格納する記憶装置システムであって、
    データを有する一以上のデータレコードを格納する一以上の第一のディスク装置と、
    前記一以上のデータレコードのデータを回復するために用いられる冗長データを有する一以上のパリティレコードが格納される一以上の第二のディスク装置と、
    キャッシュメモリと、
    前記処理装置から受信した、前記第一のディスク装置のいずれかに格納されるライトデータを前記キャッシュメモリに格納する第一の手段と、
    前記処理装置にライト処理の終了報告を送信する送信手段と、
    データ若しくは冗長データを、第一のディスク装置若しくは第二のディスク装置に格納する第二の手段とを有し、
    前記送信手段は、前記第一の手段がライトデータを前記キャッシュメモリに格納した後に終了報告を送信し、
    前記第二の手段は、前記送信手段が前記終了報告を送信した後に、前記ライトデータを第一のディスク装置のいずれかに格納し、前記一以上の第二のディスク装置に格納される冗長データを生成し、生成された冗長データを前記一以上の第二のディスク装置に格納し、
    ここで、前記第二の手段は、前記ライトデータを第一のディスク装置のいずれかに格納した後に、前記冗長データを生成することを特徴とする記憶装置システム。
JP2003016869A 2003-01-27 2003-01-27 記憶装置制御方法および記憶装置サブシステム Expired - Lifetime JP3849648B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003016869A JP3849648B2 (ja) 2003-01-27 2003-01-27 記憶装置制御方法および記憶装置サブシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003016869A JP3849648B2 (ja) 2003-01-27 2003-01-27 記憶装置制御方法および記憶装置サブシステム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP01057491A Division JP3409859B2 (ja) 1991-01-31 1991-01-31 制御装置の制御方法

Publications (2)

Publication Number Publication Date
JP2003263365A JP2003263365A (ja) 2003-09-19
JP3849648B2 true JP3849648B2 (ja) 2006-11-22

Family

ID=29208369

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003016869A Expired - Lifetime JP3849648B2 (ja) 2003-01-27 2003-01-27 記憶装置制御方法および記憶装置サブシステム

Country Status (1)

Country Link
JP (1) JP3849648B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6928247B2 (ja) 2017-09-11 2021-09-01 富士通株式会社 ストレージ制御装置およびストレージ制御プログラム

Also Published As

Publication number Publication date
JP2003263365A (ja) 2003-09-19

Similar Documents

Publication Publication Date Title
JP3409859B2 (ja) 制御装置の制御方法
US6912669B2 (en) Method and apparatus for maintaining cache coherency in a storage system
US6738863B2 (en) Method for rebuilding meta-data in a data storage system and a data storage system
JP4809040B2 (ja) ストレージ装置及びスナップショットのリストア方法
JP3422370B2 (ja) ディスクキャッシュ制御装置
US6502174B1 (en) Method and system for managing meta data
US6330642B1 (en) Three interconnected raid disk controller data processing system architecture
US7631219B2 (en) Method and computer program product for marking errors in BIOS on a RAID controller
US6886075B2 (en) Memory device system and method for copying data in memory device system
JP2002323959A (ja) 磁気ディスク制御装置のログ主体不揮発性書き込みキャッシュ・システム及び方法
JPH0619632A (ja) コンピユータ・システムのストレージ装置及びデータのストア方法
JPH06202817A (ja) ディスクアレイ装置及びそのデータ更新方法
JP4131894B2 (ja) ランダムディスクライトに好適なディスク制御機構
JP4911198B2 (ja) ストレージ制御装置、ストレージシステムおよびストレージ制御方法
JPH09231015A (ja) 記憶装置および記憶装置システム
JP2023055998A (ja) ストレージシステム及びストレージシステムの制御方法
US7099995B2 (en) Metadata access during error handling routines
US6874101B2 (en) Storage unit subsystem
JP3849648B2 (ja) 記憶装置制御方法および記憶装置サブシステム
US20060090032A1 (en) Method and computer program product of obtaining temporary conventional memory usage in BIOS
US7478269B2 (en) Method and computer program product of keeping configuration data history using duplicated ring buffers
JP2003263277A (ja) 記憶装置制御方法および記憶装置サブシステム
JP2003271315A (ja) ディスクキャッシュ制御装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060314

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20060420

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060523

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060718

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: 20060808

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060821

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

Free format text: PAYMENT UNTIL: 20090908

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100908

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100908

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110908

Year of fee payment: 5

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110908

Year of fee payment: 5