(57)【特許請求の範囲】
【請求項１】
ｎ（ｎ＞２）個のキャッシュメモリを備え、処理装置からのライト要求に対してデータをキャッシュメモリに書き込んだ後、ライト要求の完了応答を返し、キャッシュメモリ上のライトデータをライト完了応答と非同期で１乃至複数のディスク装置に書き出す入出力制御装置であって、
上記入出力制御装置は、正常時、キャッシュメモリの障害時、キャッシュメモリ増設時のキャッシュメモリ構成情報を管理する構成情報管理部を備え、
正常時の上記キャッシュメモリの構成情報として、１乃至複数のディスクの領域をキャッシュメモリの個数ｎに分割し、ディスクのｋ（ｋ＝１〜ｎ）番目の領域に書き出すライトデータの１次データと２次データを、それぞれｋ番目のキャッシュメモリとｋ＋１番目のキャッシュメモリに保持し、ディスクのｎ番目の領域に書き出すライトデータの１次データと２次データをそれぞれｎ番目のキャッシュメモリと１番目のキャッシュメモリに保持するように構成情報を設定し、
キャッシュメモリの障害発生時の構成情報として、１乃至複数のディスクの領域を正常なキャッシュメモリの個数ｍ（ｍ＜ｎ）に分割し、ディスクのｋ（ｋ＝１〜ｍ）番目の領域に書き出すライトデータの１次データと２次データを、それぞれｋ番目のキャッシュメモリとｋ＋１番目のキャッシュメモリに保持し、ディスクのｍ番目の領域Ｒｍに書き出すライトデータの１次データと２次データをそれぞれｍ番目のキャッシュメモリと１番目のキャッシュメモリに保持するように構成情報を設定し、
キャッシュメモリに障害が発生したとき、障害の発生したキャッシュメモリに保持されていた一次データに対応する２次データを直ちにディスク装置に書き出した後、障害発生時の構成情報により、処理装置からのライト要求に対してデータをキャッシュメモリに書き込むとともに、キャッシュメモリからディスク装置にデータを書き出し、
キャッシュメモリ増設時の構成情報として、増設後のキャッシュメモリの個数をｐ個としたとき、１乃至複数のディスクの領域を正常なキャッシュメモリの個数ｐに分割し、ディスクのｋ（ｋ＝０〜ｐ）番目の領域に書き出すライトデータの１次データと２次データを、ｋ番目のキャッシュメモリとｋ＋１番目のキャッシュメモリに保持し、ディスクのｎ番目の領域に書き出すライトデータの１次データと２次データをそれぞれｐ番目のキャッシュメモリと１番目のキャッシュメモリに保持するように構成情報を設定し、
キャッシュメモリが増設されたとき、上記増設時の構成情報に基づき、キャッシュメモリに保持されたデータを移動させた後、増設後の構成情報により処理装置からのライト要求に対してデータをキャッシュメモリに書き込むとともに、キャッシュメモリからディスク装置にデータを書き出す
ことを特徴とする入出力制御装置。
【請求項２】
処理装置からのライト要求があったとき、ディスクの各領域にライトする１次データおよび２次データを上記割り当てられたキャッシュメモリに保持させたのち、処理装置にライト要求の完了応答を返し、
上記キャッシュメモリに保持された一次データをディスク装置に書き出した後、その２次データをキャッシュメモリから削除する
ことを特徴とする請求項１の入出力制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、多重化したキャッシュメモリにライトデータを保持する入出力制御装置に関する。
【０００２】
【従来の技術】
レイド（ＲＡＩＤ）制御装置（以下ＲＡＩＤ制御装置という）は、通常キャッシュメモリを持ち、サーバからのライト要求に対しては、データをキャッシュメモリに書き込んだだけでライト要求の完了応答をサーバに返す。キャッシュメモリ上のライトデータはサーバへのライト完了応答と非同期でディスク装置に書き出す。このような動作をライトバック動作と呼ぶ。キャッシュメモリを持ちライトバック動作を行うディスク装置のライト要求に対する応答時間はキャッシュメモリを持たないディスク装置に比べて格段（約１０倍) に短い。
【０００３】
ＲＡＩＤ制御装置においては、ライトデータの永続性保証のため、通常２つのキャッシュメモリを持ち、２つのキャッシュメモリにそれぞれライトデータを保持する（２のキャッシュメモリに保持するライトデータを以下では１次データ、２次データという）。このような構成にすることにより、一つのキャッシュメモリに障害が発生しても、もう一つのキャッシュメモリにライトデータが保持されているためデータを失うことはない。
そして、通常、ライトデータの永続性保証のため、キャッシュメモリに障害が発生し、キャッシュメモリが１つになった時点で、すみやかにキャッシュメモリ上のライトデータをディスクに書き戻し、その後はライトデータのデイスクへの書き込み同期を採ってライトデータ完了応答をサーバに返す動作となる。このような動作をライトスルー動作と呼ぶ。  キャッシュメモリ障害により、ライトバック動作からライトスルー動作に移行することにより、ライト要求に対する応答時間は長くなる（約１０倍）。
【０００４】
【発明が解決しようとする課題】
上記、キャッシュメモリ障害によりライトスルーに移行することによる性能劣化対策としては、予備のキャッシュメモリを準備しておき、キャッシュメモリ障害時にそれを使用する手法が考えられる。
すなわち、図１０（ａ）に示すように２つのキャッシュメモリＣａｃｈｅ１，Ｃａｃｈｅ２に加え、通常は使用されない予備のキャッシュメモリＣａｃｈｅＸを準備する。
そして、例えばキャッシュメモリＣａｃｈｅ１の障害時、図１０（ｂ）に示すように、予備のキャッシュメモリＣａｃｈｅＸにライトデータの一次データと２次データを保持させる。このような構成とすることにより、キャッシュメモリＣａｃｈｅ１またはＣａｃｈｅ２に障害が発生しても、ライトバック動作を行うことができる。上記手法をホットスペア方式と呼ぶ。
【０００５】
しかしながら、上記した従来方法には、以下の欠点がある。
（１）ホットスペア方式においては、図１１（ａ）に示すように通常使われないキャッシュメモリを用意する必要があり、全てのキャッシュメモリを有効に使用することができない。
（２）ライトデータの永続性保証のため、前記したように２つのキャッシュメモリを使用する場合には、キャッシュメモリを増設する際、図１１（ｂ）に示すように必ず２個ずつ増設する必要があり、ホットスペア方式を用いる場合には、さらに通常使用されないキャッシュメモリを用意する必要がある。
本発明は上記事情に鑑みなされたものであって、全てのキャッシュメモリを有効に使用することができ、キャッシュメモリの増設単位を１つとすることができる入出力制御装置を提供することである。
【０００６】
【課題を解決するための手段】
図１は本発明の概要を説明する図であり、図１（ａ）は本発明の入出力制御装置の概略構成を示し、図１（ｂ）はキャッシュメモリが正常時、障害時、およびキャッシュメモリ増設時における構成情報の一例を示す。
同図（ａ）において、１−１〜１−ｎはキャッシュメモリであり、各キャッシュメモリ１−１〜１−ｎは、ライトデータを２重化し１次データ、２次データとして保持する。
キャッシュメモリ正常時には、図１（ｂ）の正常時の構成情報に示すように、１乃至複数のディスクの領域をキャッシュメモリの個数ｎに分割し、例えば、ディスク装置２のｋ（ｋ＝１〜ｎ−１）番目の領域Ｒｋに書き出すライトデータの１次データと２次データを、それぞれｋ番目のキャッシュメモリとｋ＋１番目のキャッシュメモリに保持し、ディスクのｎ番目の領域Ｒｎに書き出すライトデータの１次データと２次データをそれぞれｎ番目のキャッシュメモリと１番目のキャッシュメモリに保持する。
そして、処理装置からのライト要求に対して、上記構成情報に基づきデータを各キャッシュメモリに書き込んだ後、ライト要求の完了応答を返し、キャッシュメモリ上のライトデータをライト完了応答と非同期で１乃至複数のディスク装置２に書き出す。
【０００７】
キャッシュメモリに障害が発生した場合は、障害が発生したキャッシュメモリが担当していた領域に書き出すライトデータを、残りのキャッシュメモリで分担する。
図１（ｂ）の障害時の構成情報に示すように、１乃至複数のディスクの領域を正常なキャッシュメモリの個数ｍ（ｍ＜ｎ）に分割し、例えば、ディスクのｋ（ｋ＝１〜ｍ）番目の領域Ｒ’ｋに書き出すライトデータの１次データと２次データを、それぞれｋ番目のキャッシュメモリとｋ＋１番目のキャッシュメモリに保持し、ディスクのｍ番目の領域Ｒ’ｍに書き出すライトデータの１次データと２次データをそれぞれｍ番目のキャッシュメモリと１番目のキャッシュメモリに保持する。
そして、キャッシュメモリに障害が発生したとき、障害の発生したキャッシュメモリに保持されていた一次データに対応する２次データを直ちにディスク装置に書き出した後、障害発生時の構成情報により、処理装置からのライト要求に対してデータをキャッシュメモリに書き込むとともに、キャッシュメモリからディスク装置にデータを書き出す。
また、キャッシュメモリを増設する場合には、増設時の構成情報に基づき、キャッシュメモリに保持されたデータを移動させた後、例えば図１（ｂ）に示す増設後の構成情報により処理装置からのライト要求に対してデータをキャッシュメモリに書き込むとともに、キャッシュメモリからディスク装置にデータを書き出す。
以上のように、本発明においては、３つ以上のキャッシュメモリで、ライトデータを循環しながら２重化して保持し、あるキャッシュメモリに障害が発生した場合は、障害が発生したキャッシュメモリが担当していた領域に書き出すライトデータを、残りのキャッシュメモリで分担するようにしたので、ｎ＞２個の任意の数でキャッシュメモリの構成が可能となる。また、通常使用されないキャッシュメモリを用意する必要がなく、全てのキャッシュメモリを有効に使用することができる。
【０００８】
【発明の実施の形態】
図２は本発明の実施例のシステムの全体構成を示す図である。同図において、１１はサーバ、１２は前記したＲＡＩＤ制御装置であり、前記したようにサーバ１１からのライト要求に対しては、データをキャッシュメモリに書き込んだだけでライト要求の完了応答をサーバに返し、キャッシュメモリ上のライトデータはサーバへのライト完了応答と非同期でディスク装置に書き出す（ライトバック動作）。
ＲＡＩＤ制御装置１２は、インタフェース制御部１２ａと、構成情報管理部１２ｂと、キャッシュ制御部１２ｃとキャッシュメモリ１２ｄと、ディスクを制御するディスク制御部１２ｅと、複数のディスク装置１２ｆから構成される。構成情報管理部１２ｂには、サーバ１１からのライトデータをどのキャッシュメモリに保持させるかを管理するための構成情報が格納されている。
【０００９】
図３に図２に示す装置のハードウェア構成例を示す。
同図において、サブシステム制御部１０１は、チャネルＩ／Ｆ部を介して上位装置に接続されており、サブシステム制御部１０１はメモリ１０１ａ、ＭＰＵ１０１ｂ、バスインタフェース部１０１ｃを備えており、上記ＭＰＵ１０１ｂはメモリ１０１ａに格納されているプログラムに従って動作する。また、メモリ１０１ａには、プログラムの他に、転送データや制御データが格納される。図３に示すサブシステム制御部１０１は、図２に示すキャッシュ制御部１２ｃ、キャッシュメモリ１２ｄを備えており、図３のサブシステム制御部１０１は、図２におけるインタフェース制御部１２ａ、構成情報管理部１２ｂ、キャッシュ制御部１２ｃ、キャッシュメモリ１２ｄから構成される部分に対応する。
１０３はデバイス制御部であり、デバイス制御部１０３は、バッファ１０３ａ、ＭＰＵ１０３ｂ、上記ＭＰＵ１０３ｂを動作させるプログラム等を格納したメモリ１０３ｃ、バスインタフェース部１０３ｄを備えている。
上記サブシステム制御部１０１とデバイス制御部１０３はバスＢＵＳを介して接続されており、デバイス制御部１０３はデバイスＩ／Ｆ部１０４を介してディスクドライブ群１０５に接続される。図３に示すデバイス制御部１０３は図２に示すディスク制御部に対応する
【００１０】
本実施例においては、キャッシュメモリは３つのキャッシュメモリ１２ｄ−１〜１２ｄ−３から構成され、各キャッシュメモリは、ライトデータを２重化して、１次データ、２次データとして保持する。
図４にキャッシュメモリが３つの場合の構成情報の一例を示す。また、図５（ａ）に通常時の各キャッシュメモリの担当論理ボリュームを、図５（ｂ）にキャッシュメモリ１２ｄ−１に障害が発生した場合の担当論理ボリュームを示す。
図４、図５（ａ）に示すように、通常時、キャッシュメモリ１２ｄ−１の担当論理ボリュームを１次データが１〜１０、２次データが２１〜３０とし、キャッシュメモリ１２ｄ−２の担当論理ボリュームを１次データが１１〜２０、２次データが１〜１０とし、キャッシュメモリ１２ｄ−３の担当論理ボリュームを１次データが２１〜３０、２次データが１１〜２０とする。
この状態で例えば、キャッシュメモリ１２ｄ−１に障害が発生すると、図４に示す構成情報により、キャッシュメモリ１２ｄ−１〜１２ｄ−３の担当論理ボリュームは、図５（ｂ）に示すように、キャッシュメモリ１２ｄ−２の担当論理ボリュームは１次データが１〜２０、２次データが２１〜３０となり、キャッシュメモリ１２ｄ−３の担当論理ボリュームは１次データが２１〜３０、２次データが１〜２０となる。
【００１１】
すなわち、３個のキャッシュメモリで、ライトデータを循環しながら２重化し、あるキャッシュメモリに障害が発生した場合は、障害が発生したキャッシュメモリが担当していた論理ボリュームを残りのキャッシュメモリで分担する。
そのため、構成情報には、通常時の各キャッシュメモリが担当する１次データと２次データの論理ボリューム名を定義しておき、さらに、各キャッシュメモリに障害が発生し、キャッシュメモリの数が減った場合の、各キャッシュメモリが担当する１次データおよび２次データの論理ボリューム名を定義しておく。
【００１２】
以上の例はキャッシュメモリが３個の場合であるが、一般的には、１〜複数のディスクの領域をキャッシュメモリの個数ｎに分割し、キャッシュメモリの構成情報として、ディスクのｋ（ｋ＝１〜ｎ−１）番目の領域に書き込むライトデータの１次データと２次データを、それぞれｋ番目のキャッシュメモリと、ｋ番目以外のキャッシュメモリに順次保持させるように設定する。
また、障害発生時の構成情報として、１乃至複数のディスクの領域を正常なキャッシュメモリの個数ｍ（ｎ＜ｍ）に分割し、ディスクのｋ（０＜ｋ≦ｍ−１）番目の領域にライトする１次データと２次データを、それぞれ、ｋ番目のキャッシュメモリと、ｋ番目以外のキャッシュメモリに順次に保持させるように構成情報を設定する。以上により、ｎ（ｎ≧３）個の任意の数のキャッシュメモリの構成が可能となる。さらに、キャッシュメモリ増設時の構成情報を定義しておけば、動作中にキャッシュメモリ増設を行うことができる。
【００１３】
次に図６〜図８により、全てのキャッシュメモリが正常に動作している通常時の動作、キャッシュメモリに障害が発生した時の動作、および、キャッシュメモリを増設する場合における動作について説明する。
（１）正常時
全てのキャッシュメモリが正常に動作している場合、図６に示すように、インタフェース制御部１２ａは、正常時の構成情報を参照し、サーバ１１から要求されたライトデータを、構成情報から決まる担当論理ボリュームに対応するキャッシュメモリ（１次データと２次データの両方) にライトし、サーバに完了応答を返す。
一方、各キャッシュ制御部１２ｃは図６に示すように正常時の構成情報を参照し、正常時の構成情報により決まる１次データを管理するキャッシュ制御部１２ｃよりキャッシュメモリ１２ｄ−１〜１２ｄ−３に書かれたデータをディスク装置１２ｆに書き出す。
【００１４】
例えば、論理ボリュームが１〜１０の範囲へのライト要求であれば、1 次データをキャッシュメモリ１２ｄ−１へ、２次データをキャッシュメモリ１２ｄ−２へライトする。キャッシュメモリ１２ｄ−１に書かれた１次データは、１次データを管理するキャッシュ制御部１２ｃによりディスク制御部１２ｅを通してディスク装置１２ｆに書き出される。ディスク装置１２ｆへの書き出しが完了すれば、キャッシュメモリ１２ｄ−２に書かれた上記２次データはキャッシュメモリ１２ｄ−２から削除される。
【００１５】
（２）キャッシュメモリに障害が発生した場合
キャッシュメモリｉ（キャッシュメモリが３個の場合、ｉ＝１〜３）に障害が発生すると、図７に示すように、構成情報管理部１２ｂは全インタフェース制御部１２ａと全キャッシュ制御部１２ｃに通知する。
障害の報告を受けたｉ＋１番目のキャッシュ制御部１２ｃは、ライトデータの永続性保証のため、正常時の構成情報に基づき、図７に示すように障害の発生したキャッシュメモリｉが保持していた１次データと同じデータを持つｉ＋１番目のキャッシュメモリ上にある２次データを、ディスク制御部１２ｅを通して、速やかに、ディスク装置１２ｆに書き出す。
一方、各インタフェース制御部１２ｂは、障害の発生が通知されると、キャッシュメモリｉ障害時の構成情報を参照し、１次データと２次データをキャッシュメモリｉ障害時の構成情報により決まるキャッシュメモリにライトし、サーバに完了応答を返す。
また、各キャッシュ制御部１２ｃ（上記ｉ＋１番目のキャッシュ制御部も含む）は、キャッシュメモリｉの障害時の構成情報に基づき、１次データを管理するキャッシュ制御部１２ｃよりキャッシュメモリに書かれた１次データをディスク装置１２ｆに書き出す。
【００１６】
例えば、前記図５（ｂ）に示すように、キャッシュメモリ１２ｄ−１に障害が発生した場合、キャッシュメモリ１２ｄ−２上にあるキャッシュメモリ１２ｄ−１が担当していた論理ボリューム１から１０に対応する２次データを、ディスク制御部１２ｅを通してすみやかにディスク装置１２ｆに書き出す。
また、インタフェース制御部１２ｂは、サーバ１１から要求されたライト要求が、例えば、論理ボリューム１〜１０の範囲へのライト要求であれば、１次データをキャッシュメモリ１２ｄ−２へ、２次データをキャッシュメモリ１２ｄ−３にライトし、サーバに完了応答を返す。そして、各キャッシュ制御部１２ｃは障害時の構成情報に基づき、１次データを管理するキャッシュ制御部１２ｃよりキャッシュメモリに書かれた１次データをディスク装置１２ｆに書き出す。
【００１７】
（３）キャッシュメモリ数を増設する場合
構成情報管理部１２ｂにはキャッシュ増設前の構成情報に加え、キャッシュ創設後の構成情報が設定され、キャッシュメモリが増設されると、図８に示すように構成情報管理部１２ｂはキャッシュメモリ数の増設を、全インタフェース制御部１２ａとキャッシュ制御部１２ｃに通知する。
各キャッシュ制御部１２ｃは、図８に示すようにキャッシュメモリ創設後の構成情報に従ったデータ配置になるように、キャッシュメモリ間でデータを移動させる。
そして、キャッシュメモリに書かれたデータは、キャッシュメモリ創設後の構成情報により決まる１次データを管理するキャッシュ制御部１２ｃよりディスク制御部１２ｅを通してディスク装置１２ｆに書き出される。
一方、各インタフェース制御部１２ａは、図８に示すように１次データと２次データをキャッシュメモリ創設後の構成情報より決まるキャッシュメモリにライトし、サーバ１１に完了応答を返す。
【００１８】
例えば、図９に示すように、２個のキャッシュメモリ１２ｄ−１，１２ｄ−２を３個に増設する場合、キャッシュメモリ１２ｄ−３の増設が、全インタフェース制御部１２ａと全キャッシュ制御部１２ｃに通知される。
これにより、各キャッシュ制御部１２ｃは、キャッシュメモリ１２ｄ−２の論理ボリューム１６〜２０に対応する１次データを、図９の点線矢印に示すようにキャッシュメモリ１２ｄ−３の論理ボリューム１６〜２０に対応する１次データに移動する。同時に、キャッシュメモリ１２ｄ−１の論理ボリューム１１〜１５に対応する２次データを、図９の点線矢印に示すようにキャッシュメモリ１２ｄ−３の論理ボリューム１１〜１５に対応する２次データに移動する。
当該キャッシュメモリ間のデータ移動中に発生するライトバツクは、前記したように新しい構成情報で１次データを管理するキャッシュ制御部により、ディスク制御部１２ｅを通してディスク装置１２ｆに書き出される。
【００１９】
即ち、論理ボリューム１〜１０はキャッシュメモリ１２ｄ−１のキャッシュ制御部が、論理ボリューム１１〜１５はキャッシュメモリ１２ｄ−２のキャッシュ制御部が、論理ボリューム１６〜２０はキャッシュメモリ１２ｄ−３のキャッシュ制御部がディスク制御部１２ｅを通してデータをディスク装置１２ｆに書き出す。ライトバックが完了すると、対応する二次データをキャッシュメモリより削除する。
論理ボリューム１１〜１５に対応するキャッシュメモリ１２ｄ−２の２次データは、キャッシュメモリ１２ｄ−１かキャッシュメモリ１２ｄ−３のいずれかにあるので、キャッシュメモリ１２ｄ−１とキャッシュメモリ１２ｄ−３の両方のキャッシュ制御部に、２次データ削除を依頼し、２次データがあればキャッシュメモリから削除する。
また、インタフェース制御部１２ａは、サーバ１１から要求されたライトデータを、新構成情報から決まる担当論理ボリュームのキャッシュメモリ（１次データと２次データの両方）にライトし、サーバ１１に完了応答を返す。
例えば、論理ボリュームが１１〜１５の範囲へのライト要求であれば、１次データをキャッシュメモリ１２ｄ−２へ、２次データをキャッシュメモリ１２ｄ−３へライトする。
【００２０】
【発明の効果】
以上説明したように、本発明においては、３つ以上のキャッシュメモリで、ライトデータを循環しながら２重化して保持し、あるキャッシュメモリに障害が発生した場合は、障害が発生したキャッシュメモリが担当していた領域に書き出すライトデータを、残りのキャッシュメモリで分担するようにしたので、キャッシュメモリの増設単位を１つとすることができ、また、従来のホットスペア方式に比して全てのキャッシュメモリを有効に活用できる。
【図面の簡単な説明】
【図１】本発明の概要を説明する図である。
【図２】本発明の実施例のシステムの全体構成を示す図である。
【図３】本発明の実施例のハードウェア構成例を示す図である。
【図４】キャッシュメモリが３つの場合の構成情報の一例を示す図である。
【図５】通常時および障害時に各キャッシュメモリが担当する論理ボリュームの一例を示す図である。
【図６】キャッシュメモリ正常時の処理フローを示す図である。
【図７】キャッシュメモリ障害発生時の処理フローを示す図である。
【図８】キャッシュメモリ数増設時の処理フローを示す図である。
【図９】キャッシュメモリ増設時の動作を説明する図である。
【図１０】従来のホットスペア方式を説明する図である。
【図１１】ホットスペア方式の問題点を説明する図である。
【符号の説明】
１−１〜１−ｎ  キャッシュメモリ
２              ディスク装置
１１            サーバ
１２            ＲＡＩＤ制御装置
１２ａ          インタフェース制御部
１２ｂ          構成情報管理部
１２ｃ          キャッシュ制御部
１２ｄ          キャッシュメモリ
１２ｅ          ディスク制御部
１２ｆ          ディスク装置
【図１】
0003705731.tif 000002
【図２】
0003705731.tif 000003
【図３】
0003705731.tif 000004
【図４】
0003705731.tif 000005
【図５】
0003705731.tif 000006
【図６】
0003705731.tif 000007
【図７】
0003705731.tif 000008
【図８】
0003705731.tif 000009
【図９】
0003705731.tif 000010
【図１０】
0003705731.tif 000011
【図１１】
0003705731.tif 000012