(57)【要約】【課題】ストレージ装置のデータの一部を格納するキャッシュメモリを備えたコントローラにおけるキャッシュの有効利用を図る構成のシステムの提供。【解決手段】ホストコンピュータに接続され、対応する磁気ディスク装置にアクセスされ、相互に通信接続されるコントローラ０、１は、キャッシュメモリ（２０９ａ、２０９ｂ）、キャッシュメモリの構成情報を管理するためのキャッシュ構成情報（２０８ａ、２０８ｂ）、キャッシュメモリの領域と、マスタコントローラとの対応を格納した装置構成情報（２１１ａ、２１１ｂ）、プロセッサ（２１０ａ、２１０ｂ）とを備え、コントローラ毎に、個別にキャッシュメモリの排他、領域確保を管理し、同一のキャッシュメモリ上の任意の領域にライトキャッシュデータ及びライトキャッシュデータ冗長化データ、リードキャッシュデータを配置できるため、キャッシュメモリの有効利用が可能となる。【選択図】図２
2008047029.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが、対応する上位装置に接続されるとともに、相互に通信接続し、対応するストレージ装置にアクセス自在とされる、複数のコントローラを含むストレージシステムであって、
前記複数のコントローラのそれぞれが、
前記ストレージ装置のデータの一部を格納するためのキャッシュメモリと、
前記キャッシュメモリのアクセス制御を行うキャッシュ処理手段と、
を備え、
前記複数のコントローラのそれぞれは、さらに、
前記上位装置からの論理アドレスの領域と、該領域に対して割り付けられたマスタのコントローラとの対応関係を規定する装置構成情報を記憶保持し、
前記装置構成情報は、前記複数のコントローラ間で、同一の内容とされ、
前記上位装置からのアクセス要求を受けたコントローラにおいて、前記キャッシュ処理手段は、前記コントローラ内の前記装置構成情報を参照して、前記アクセス要求のアドレスに対応するデータを格納する領域に関してマスタとなるコントローラを決定し、
前記マスタのコントローラの前記キャッシュ処理手段は、前記データに関してこれを冗長化して格納するキャッシュメモリを持つ冗長先のコントローラが存在する場合に前記冗長先のコントローラでのキャッシュメモリの排他処理が行われる前に、前記マスタのコントローラのキャッシュメモリの排他処理を行う、ことを特徴とするストレージシステム。
【請求項２】
前記上位装置からのライト要求を受けたコントローラにおいて、前記キャッシュ処理手段は、前記コントローラ内の前記装置構成情報を参照して、ライトデータを格納する領域に関してマスタとなるコントローラを決定し、
前記マスタのコントローラの前記キャッシュ処理手段は、前記マスタのコントローラの前記キャッシュメモリの前記ライトデータの格納先の領域が既に排他されているか否かを確認し、前記領域が排他されている場合には、前記領域の排他が解除されるまで待ってから排他を行い、前記領域が排他されていない場合には、前記領域の排他を行い、
前記ライトデータに関してこれを冗長化して格納すべきキャッシュメモリを持つ冗長先のコントローラが存在する場合には、前記冗長先のコントローラでのキャッシュメモリの排他処理に先んじて、前記マスタのコントローラでのキャッシュメモリの排他処理が行われる、ことを特徴とする請求項１記載のストレージシステム。
【請求項３】
前記ライトデータに関して前記冗長先のコントローラが存在する場合に、前記マスタのコントローラでの前記キャッシメモリの領域の排他処理の完了に基づき、前記冗長先のコントローラの前記キャッシュ処理手段が、前記冗長先のコントローラの前記キャッシメモリの前記ライトデータの格納領域の排他を行い、
前記冗長先のコントローラでの前記排他処理の完了に基づき、前記マスタのコントローラのキャッシュメモリと、前記冗長先のコントローラのキャッシュメモリへの前記ライトデータの書き込みが行われる、ことを特徴とする請求項２記載のストレージシステム。
【請求項４】
前記上位装置からのライト要求を受けた前記コントローラの前記キャッシュ処理手段は、ライトデータを格納する領域に関して、マスタとなるコントローラが、自コントローラでない場合には、前記マスタのコントローラに対して、キャッシュサーチを指示し、
前記マスタのコントローラからキャッシュサーチの完了を受け取った場合、前記上位装置からのライト要求を受けた前記コントローラの前記キャッシュ処理手段、及び、冗長先の他のコントローラがある場合には、前記冗長先の他のコントローラの前記キャッシュ処理手段にてキャッシュサーチをそれぞれ行い、それぞれの前記コントローラのキャッシュメモリの該当領域に、ライトデータの書き込みを行う、ことを特徴とする請求項１又は２記載のストレージシステム。
【請求項５】
前記複数のコントローラは、それぞれ、前記キャッシュメモリの領域の構成情報を管理するためのキャッシュ構成情報を備え、
前記キャッシュ構成情報に関して、前記複数のコントローラは、同一の内容を参照する構成とされてなる、ことを特徴とする請求項１又は２記載のストレージシステム。
【請求項６】
前記上位装置からのライト要求を受けたコントローラの前記キャッシュ処理手段は、前記ライト要求の論理アドレスに基づき、前記装置構成情報を参照して、前記ライト要求のデータの格納用のキャッシュメモリ上での該当領域の排他を行うためのマスタのコントローラを決定し、決定したマスタのコントローラのキャッシュ処理手段に対して、前記領域の排他処理を依頼し、
前記マスタのコントローラのキャッシュ処理手段は、
指定された領域が既に自身のキャッシュメモリ上に存在する場合、他のアクセス要求で排他されているか否かを確認し、
前記領域が他のアクセス要求によって排他されている場合には、前記領域の排他処理が終了するまで待ち、
前記領域が他のアクセス要求で排他されていない場合には、前記領域の排他を行い、
一方、前記指定された領域が、前記キャッシュメモリ上になく新たに確保すべきである場合、前記キャッシュメモリ上に新たに領域を確保した後、前記新たに確保した領域の排他を行い、
前記マスタのコントローラでの排他処理が完了したことを、前記上位装置からのライト要求を受けた前記コントローラに通知する、ことを特徴とする請求項１記載のストレージシステム。
【請求項７】
前記ライト要求を受けたコントローラの前記キャッシュ処理手段は、
前記ライト要求に対して冗長化すべきキャッシュメモリを持つ少なくとも１つの冗長先のコントローラを決定し、
前記冗長先のコントローラのキャッシュ処理手段に対して、ライト要求で冗長化を行うための領域の排他処理の依頼を行い、
前記冗長先のコントローラのキャッシュ処理手段は、
前記冗長化を行うための領域が他で排他されている場合、前記排他が解除されるまで待った後に排他を行い、他で排他されていない場合、前記冗長化を行うための領域の排他を行い、
前記冗長化を行うための領域が新たなものであれば、前記冗長化を行うための領域を新たに確保して排他を行い、
前記冗長先のコントローラのキャッシュ処理手段は、
前記上位装置からのライト要求を受けたコントローラのキャッシュ処理手段に対して排他処理が完了したことを通知し、
前記上位装置からのライト要求を受けたコントローラのキャッシュ処理手段は、
冗長化のための領域の排他処理の依頼を発行したコントローラからの排他完了の応答を待ち合わせ、各コントローラにおいてキャッシュメモリの該当領域の排他処理が完了してから、マスタのコントローラ、および冗長先のコントローラのキャッシュメモリの該当領域に、前記上位装置から受けたライトデータの書き込みを行い、ライトデータに対する複数のコントローラに対する冗長化を実現する、ことを特徴とする請求項１記載のストレージシステム。
【請求項８】
前記複数コントローラが同一領域へのライト要求を受けた際に、最初に、マスタのコントローラでキャッシュメモリにおけるライトデータを格納する領域の排他を行うことにより、同一領域に対する他のライト要求は、前記マスタのコントローラのキャッシュ処理手段で待ち、他の冗長化されたコントローラに対する同一の領域に対するライトを行わせないように制御する、ことを特徴とする請求項１記載のストレージシステム。
【請求項９】
前記上位装置からのリード要求を受けたコントローラの前記キャッシュ処理手段は、前記リード要求のデータを格納する領域に対して、自コントローラが、前記領域のマスタ又は冗長先のコントローラであるか否かの判断を行い、
自コントローラが、マスタ又は冗長先のコントローラの場合、前記キャッシュメモリに前記リード要求のデータの格納領域が存在するか否かを確認し、
前記キャッシュメモリに前記データを格納した領域が存在する場合には、前記領域が排他されてるか否かを確認し、
前記領域が他の要求によって排他されている場合、前記領域が解放されるまで待った後に排他を行い、
前記領域が他の要求によって排他されていなければ、前記領域の排他を行った上で、前記キャッシュメモリの前記領域のデータを前記上位装置に送信し、
リード要求のデータの領域が前記キャッシュメモリ上に存在しない場合には、前記キャッシュメモリ上に新たに領域を確保し、前記新たに確保した領域の排他を行った後に、前記ストレージ装置からデータを読み込み前記新たに確保した領域に格納した上で、前記上位装置にデータを送信する、ことを特徴とする請求項１記載のストレージシステム。
【請求項１０】
前記上位装置よりリード要求を受けたコントローラの前記キャッシュ処理手段は、自身のコントローラが、前記リード要求のデータを格納する領域に関してマスタ又は冗長先のコントローラでない場合には、前記領域に関してマスタ又は冗長先のコントローラのうちのいずれか１つに前記領域の排他処理を依頼し、
前記排他処理の依頼を受けたコントローラのキャッシュ処理手段は、
前記コントローラのキャッシュメモリ上にリード要求のデータを格納する領域が存在するか確認を行い、
前記キャッシュメモリ上に前記リード要求のデータを格納する領域が存在する場合には、前記領域が排他されているか否かを確認し、
前記領域が他の要求によって排他されている場合、前記領域が解放されるまで待った後に排他を行い、
前記領域が他の要求によって排他されていなければ、前記領域の排他を行い、前記領域の排他の完了を、前記上位装置よりリード要求を受けたコントローラに通知し、
前記コントローラのキャッシュ処理手段は、排他が行われているコントローラのキャッシュメモリ上の領域のデータを読み込み、前記上位装置に送信する、ことを特徴とする請求項９記載のストレージシステム。
【請求項１１】
前記排他要求を受け取ったコントローラにおいて、前記リード要求のデータがキャッシュメモリ上に存在しない場合には、前記キャッシュメモリ上に新たに領域を確保し、
前記新たに確保した領域の排他を行った後に、前記ストレージ装置からデータを読み込んで前記新たに確保した領域に格納し、前記新たに確保した領域の排他の完了を、前記上位装置よりリード要求を受けたコントローラに通知し、
前記コントローラのキャッシュ処理手段は、排他が行われているコントローラのキャッシュメモリ上の領域のデータを読み込み、前記データを前記上位装置に送信する、ことを特徴とする請求項１０記載のストレージシステム。
【請求項１２】
前記上位装置よりライト要求を受けたコントローラの前記キャッシュ処理手段は、
前記コントローラの内の前記装置構成情報を参照して、ライト要求のライトデータに対応するキャッシュメモリの領域のマスタとなるコントローラを決定し、前記上位装置よりライト要求を受けたコントローラがマスタのコントローラである場合、キャッシュサーチ及びキャッシュメモリにおいてライトデータを格納する領域の排他を行い、
前記上位装置よりアクセス要求を受けたコントローラがマスタでない場合、マスタのコントローラに対してキャッシュサーチ指示を送信し、
前記マスタのコントローラは、キャッシュサーチ及び前記キャッシュメモリにおいてライトデータを格納する領域の排他を行い、
つづいて、冗長先のコントローラがある場合に、前記冗長先のコントローラの前記キャッシュ処理手段は、キャッシュサーチ及び前記キャッシュメモリにおいて、ライトデータを格納する領域の排他を行い、
つづいて、マスタ、及び冗長先のコントローラのそれぞれのキャッシュメモリに、前記上位装置からのライトデータの書き込みが行われ、
その後、前記マスタのコントローラ、冗長先のコントローラの前記キャッシュ処理手段は、前記キャッシュメモリの前記領域の排他を解除する、ことを特徴とする請求項１記載のストレージシステム。
【請求項１３】
前記コントローラのキャッシュ処理手段は、前記キャッシュサーチの直前に、前記キャッシュメモリの領域の構成情報を管理するためのキャッシュ構成情報をロックし、前記キャッシュメモリの前記領域の排他の後に、前記キャッシュ構成情報をアンロックする、ことを特徴とする請求項１２に記載のストレージシステム。
【請求項１４】
前記コントローラのキャッシュ処理手段は、前記キャッシュメモリの前記領域の排他の解除の直前に、前記キャッシュメモリの領域の構成情報を管理するためのキャッシュ構成情報をロックし、前記キャッシュメモリの前記領域の排他の解除の後、前記キャッシュ構成情報をアンロックする、ことを特徴とする請求項１３に記載のストレージシステム。
【請求項１５】
それぞれが、対応する上位装置に接続されるとともに、相互に通信接続し、対応するストレージ装置の一部のデータを保持するキャッシュメモリを備えた複数のコントローラを含むストレージシステムのキャッシュ冗長化方法であって、
前記複数のコントローラのそれぞれは、前記上位装置からの論理アドレスの領域と、該領域に対して割り付けられたマスタのコントローラとの対応関係を規定する装置構成情報を記憶保持し、前記装置構成情報は、前記複数のコントローラは、同一の内容とされ、
前記上位装置からのアクセス要求を受けたコントローラは、前記コントローラ内の前記装置構成情報を参照して、前記アクセス要求のアドレスに対応するデータを格納する領域に関してマスタとなるコントローラを決定し、
前記マスタのコントローラは、前記マスタのコントローラの前記キャッシュメモリの前記データの格納先の領域の排他処理を行い、前記データに関してこれを冗長化して格納するキャッシュメモリを持つ冗長先のコントローラが存在する場合に、前記冗長先のコントローラでのキャッシュメモリの排他処理に先んじて、前記マスタのコントローラでのキャッシュメモリの排他処理が行われる、ことを特徴とするキャッシュ冗長化方法。
【請求項１６】
それぞれが、対応する上位装置に接続されるとともに、相互に通信接続し、対応するストレージ装置の一部のデータを保持するキャッシュメモリと、プロセッサを備えた、複数のコントローラを含み、
前記複数のコントローラのそれぞれは、前記上位装置からの論理アドレスの領域と、該領域に対して割り付けられたマスタのコントローラとの対応関係を規定する装置構成情報を記憶保持し、前記装置構成情報は、前記複数のコントローラにおいて同一の内容とされ、
前記コントローラのプロセッサに、
前記上位装置からのライト要求を受けた際に、前記コントローラ内の前記装置構成情報を参照して、ライト要求のアドレスのデータに関してマスタとなるコントローラを決定する処理と、
前記コントローラがマスタでない場合、前記マスタのコントローラにキャッシュメモリの排他を行うように指示する処理と、
前記マスタのコントローラでキャッシュメモリの領域の排他処理が終わったのち、前記コントローラ内のキャッシュメモリの領域を排他する処理と、
前記上記装置からのライト要求のデータを、前記コントローラ内のキャッシュメモリの領域に書き込むとともに、ライト要求のデータを前記マスタのコントローラに転送する処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムに関し、特に、複数のコントローラで個々にキャッシュメモリを持ち、データの喪失を防ぐため、それぞれのコントローラに同一のデータの保持を行うキャッシュ制御に適用した場合に好適とされるシステム及びキャッシュの冗長化方法並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
ディスクアレイ装置に代表されるストレージシステムでは、物理ディスク装置などのストレージ装置のアクセス速度の遅さを緩衝し、単位時間当りの入出力数やスループットなどの性能向上のために、キャッシュメモリが備えられている。
【０００３】
一般に、ディスクアレイ装置の全容量の中でアクセス頻度の高い領域は限られていることから、アクセス頻度の高い領域のデータをキャッシュメモリ上に一時保存しておくことにより、ホストコンピュータ等上位装置への応答の高速化を図ることができる。
【０００４】
ホストコンピュータからのリード要求の場合、キャッシュメモリの該リード要求のデータがキャッシュメモリに存在する（キャッシュヒット）か否か（キャッシュミス）の検索を行い、リード要求のデータがキャッシュメモリ上にあれば、ホストコンピュータにそのデータを返す。一方、リード要求のデータがなければ、磁気ディスク装置から該リード要求に相当するデータを読み込み、キャッシュメモリ上に書き込むと同時に、読み込んだデータをホストコンピュータに返す。
【０００５】
一方、ホストコンピュータからの要求がライト要求であれば、ホストから受け取ったライトデータを、キャッシュメモリにデータを書き込んだ時点で、ライト処理の完了をホストコンピュータに返し、処理時間を要する磁気ディスク装置への書き込みを、後でまとめて処理することで、ライト要求に対する応答性能を改善する制御が行われる。
【０００６】
この場合、キャッシュメモリの故障などにより、キャッシュメモリのデータが破壊されると、該当データの磁気ディスクへの書き込みは行えないことになる。
【０００７】
同様に、ホストコンピュータへはライト処理の終了が既に完了している旨の応答を報告しているため、ライト処理のリトライを行わない。その結果、該当データは失われてしまう。
【０００８】
そこで、ストレージでは、キャッシュメモリの破壊によるライトデータの喪失を防ぐため、キャッシュメモリの冗長化がなされており、ストレージは、ホストコンピュータからのライト処理を受け取ると、複数のキャッシュメモリに書き込みを行う。キャッシュメモリが１つ故障しても、もう一方のキャッシュメモリからライトデータの書き込みが行われ、データは失われない。
【０００９】
なお、冗長化を行うストレージに関する刊行物として、後記特許文献１や特許文献２や特許文献３等の記載が参照される。
【００１０】
【特許文献１】特開２００３−１６７７８２号公報
【特許文献２】特開平９−１４６８４２号公報
【特許文献３】特表２００４―５３８５３２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
近時、磁気ディスク装置の容量の増加に伴い、ストレージに対するアクセスが多く、磁気ディスク装置の性能差を埋めるためのキャッシュの効率化、とりわけ、ストレージへのアクセスの多くを占めるリード要求に対する、キャッシュの有効利用が必要になってきている。
【００１２】
また、ストレージに対する要求として、複数のコントローラから、同一領域に対するライトが重なった場合には、いずれかのライトデータがそれぞれのキャッシュメモリ上に書き込まれ、それぞれのキャッシュメモリ上の領域を読み出した時に、同一のデータであることが要求される。これは、「データの一貫性の保証」と呼ばれている。冗長化とデータの一貫性を保証するストレージのキャッシュ制御方式としては、上記特許文献１、特許文献２、特許文献３の記載が参照される。
【００１３】
しかしながら、上記特許文献１に開示されるストレージは、リード／ライトのデータに関係なく、冗長化を行ったキャッシュメモリの同一アドレスにデータの冗長化を行うものであり、このため、冗長化の必要のないリードデータであっても、それぞれのキャッシュメモリを消費し、無駄が生じる。
【００１４】
また、上記特許文献２に記載されたシステムでは、各コントローラのプロセッサ毎に冗長先のコントローラにキャッシュの領域を保持し、そのキャッシュの領域に対して、通常は冗長先のコントローラのプロセッサによるキャッシュのアクセスを禁じることで、一貫性を保証するための排他処理を不要にしている。しかしながら、各コントローラは、他のコントローラの冗長化データ領域を保持しなければならない。このため、冗長化データ領域に空きがあっても使用できず、キャッシュメモリを有効に利用することが出来ない。
【００１５】
さらに、上記特許文献３に記載されたシステムでは、冗長化と一貫性処理を行うが、それぞれのコントローラに、読み取り用キャッシュ、書き込み用キャッシュ、ミラー用キャッシュを具備することを要する。すなわち、各コントローラにおいて、異なる用途のキャッシュメモリを用意する必要があり、専用のキャッシュメモリを用意しなければならないため、キャッシュメモリの有効利用が出来ない。
【００１６】
したがって、本発明の主たる目的は、ストレージ装置のデータの一部を格納するキャッシュメモリを備えたコントローラにおけるキャッシュメモリの有効利用を図ることを可能とするシステムと方法及びプログラムを提供することにある。
【００１７】
本発明の他の目的は、ライトデータの冗長化を行う際に、多重冗長化を実現するシステムと方法及びプログラムを提供することにある。
【００１８】
本発明のさらに他の目的は、ライトデータの冗長化を行うために転送される制御情報の転送効率を向上するシステムと方法及びプログラムを提供することにある。
【課題を解決するための手段】
【００１９】
本願で開示される発明は、該略以下の構成とされる。
【００２０】
本発明の第１のアスペクト（側面）に係るシステムは、それぞれが、対応する上位装置に接続されるとともに、相互に通信接続し、対応するストレージ装置にアクセス自在とされる、複数のコントローラを含むストレージシステムであって、前記複数のコントローラのそれぞれが、前記ストレージ装置のデータの一部を格納するためのキャッシュメモリと、前記キャッシュメモリのアクセス制御を行うキャッシュ処理手段と、を備え、前記複数のコントローラのそれぞれは、さらに、前記上位装置からの論理アドレスの領域と、該領域に対して割り付けられたマスタのコントローラとの対応関係を規定する装置構成情報を記憶保持し、前記装置構成情報は、前記複数のコントローラ間で、同一の内容とされる。本発明において、前記上位装置からのアクセス要求を受けたコントローラにおいて、前記キャッシュ処理手段は、前記コントローラ内の前記装置構成情報を参照して、前記アクセス要求のアドレスに対応するデータを格納する領域に関してマスタとなるコントローラを決定し、前記マスタのコントローラの前記キャッシュ処理手段は、前記マスタのコントローラの前記キャッシュメモリの前記データの格納先の領域の排他処理を行い、前記データに関してこれを冗長化して格納するキャッシュメモリを持つ冗長先のコントローラが存在する場合に、前記冗長先のコントローラでのキャッシュメモリの排他処理に先んじて、前記マスタのコントローラでのキャッシュメモリの排他処理が行われる。前記領域の排他処理において、前記領域が排他されているか否かを確認し、前記領域が既に排他されている場合には、前記領域の排他の解除を待って排他を行い、前記領域が排他されていない場合には前記領域の排他を行う。
【００２１】
本発明においては、前記上位装置からのライト要求を受けたコントローラにおいて、前記キャッシュ処理手段は、前記コントローラ内の前記装置構成情報を参照して、ライトデータを格納する領域に関してマスタとなるコントローラを決定し、前記マスタのコントローラの前記キャッシュ処理手段は、前記マスタのコントローラの前記キャッシュメモリの前記ライトデータの格納先の領域が既に排他されているか否かを確認し、前記領域が排他されている場合には、前記領域の排他が解除されるまで待ってから排他を行い、前記領域が排他されていない場合には、前記領域の排他を行い、前記ライトデータに関してこれを冗長化して格納すべきキャッシュメモリを持つ冗長先のコントローラが存在する場合に、前記冗長先のコントローラでのキャッシュメモリの排他処理に先んじて、前記マスタのコントローラでのキャッシュメモリの排他処理が行われる。
【００２２】
本発明において、前記上位装置からのライト要求を受けた前記コントローラの前記キャッシュ処理手段は、前記ライト要求に対応するキャッシュメモリの領域に関してマスタとなるコントローラが、自コントローラでない場合には、前記マスタのコントローラに対して、キャッシュサーチを指示し、前記マスタのコントローラからキャッシュサーチの完了を受け取った場合、前記上位装置からのライト要求を受けた前記コントローラの前記キャッシュ処理手段、及び、冗長先の他のコントローラがある場合には、前記冗長先の他のコントローラの前記キャッシュ処理手段にてキャッシュサーチをそれぞれ行い、それぞれの前記コントローラのキャッシュメモリの領域に、ライトデータの書き込みを行う。
【００２３】
本発明において、前記複数のコントローラは、それぞれ、前記キャッシュメモリの領域の構成情報を管理するためのキャッシュ構成情報を備え、前記キャッシュ構成情報に関して、前記複数のコントローラは、同一の内容を参照する構成としてもよい。
【００２４】
本発明においては、前記上位装置からのライト要求を受けたコントローラの前記キャッシュ処理手段は、前記ライト要求の論理アドレスに基づき、前記装置構成情報を参照して、前記ライト要求のデータの格納用のキャッシュメモリ上での該当領域の排他を行うためのマスタのコントローラを決定し、決定したマスタのコントローラのキャッシュ処理手段に対して、前記領域の排他処理を依頼し、
前記マスタのコントローラのキャッシュ処理手段は、指定された領域が既に自身のキャッシュメモリ上に存在する場合、他のアクセス要求で排他されているか否かを確認し、
前記領域が他のアクセス要求によって排他されている場合には、前記領域の排他処理が終了するまで待ち、
前記領域が他のアクセス要求で排他されていない場合には、前記領域の排他を行い、
一方、前記指定された領域が、前記キャッシュメモリ上になく新たに確保すべきである場合、前記キャッシュメモリ上に新たに領域を確保した後、前記新たに確保した領域の排他を行い、
前記マスタのコントローラでの排他処理が完了したことを、前記上位装置からのライト要求を受けた前記コントローラに通知する、構成としてもよい。
【００２５】
本発明においては、前記ライト要求を受けたコントローラの前記キャッシュ処理手段は、前記ライト要求に対して冗長化すべきキャッシュメモリを持つ少なくとも１つの冗長先のコントローラを決定し、前記冗長先のコントローラのキャッシュ処理手段に対して、ライト要求で冗長化を行うための領域の排他処理の依頼を行い、
前記冗長先のコントローラのキャッシュ処理手段は、前記冗長化を行うための領域が他で排他されている場合、前記排他が解除されるまで待った後に排他を行い、
他で排他されていない場合、前記冗長化を行うための領域の排他を行い、
前記冗長化を行うための領域が新たなものであれば、前記冗長化を行うための領域を新たに確保して排他を行い、
前記冗長先のコントローラのキャッシュ処理手段は、前記上位装置からのライト要求を受けたコントローラのキャッシュ処理手段に対して排他処理が完了したことを通知し、
前記上位装置からのライト要求を受けたコントローラのキャッシュ処理手段は、
冗長化のための領域の排他処理の依頼を発行したコントローラからの排他完了の応答を待ち合わせ、各コントローラにおいてキャッシュメモリの該当領域の排他処理が完了してから、マスタのコントローラ、および冗長先のコントローラのキャッシュメモリの該当領域に、前記上位装置から受けたライトデータの書き込みを行い、ライトデータに対する複数のコントローラに対する冗長化を実現する構成としてもよい。
【００２６】
本発明においては、前記複数コントローラが同一領域へのライト要求を受けた際に、最初に、マスタのコントローラでキャッシュメモリの領域の排他を行うことにより、同一領域に対する他のライト要求は、前記マスタのコントローラのキャッシュ処理手段で待ち、他の冗長化されたコントローラに対する同一の領域に対するライトを行わせないように制御するようにしてもよい。
【００２７】
本発明においては、前記上位装置からのリード要求を受けたコントローラの前記キャッシュ処理手段は、前記リード要求のデータを格納する領域に対して、自コントローラが、前記領域のマスタ又は冗長先のコントローラであるか否かの判断を行い、
マスタ又は冗長先のコントローラの場合、前記キャッシュメモリに前記リード要求のデータの格納領域が存在するか否かを確認し、
前記キャッシュメモリに前記データを格納した領域が存在する場合には、前記領域が排他されてるか否かを確認し、
前記領域が他の要求によって排他されている場合、前記領域が解放されるまで待った後に排他を行い、
前記領域が他の要求によって排他されていなければ、前記領域の排他を行った上で、前記キャッシュメモリの前記領域のデータを前記上位装置に送信するようにしてもよい。
【００２８】
本発明においては、リード要求のデータの領域が前記キャッシュメモリ上に存在しない場合には、前記キャッシュメモリ上に新たに領域を確保し、前記新たに確保した領域の排他を行った後に、前記ストレージ装置からデータを読み込み前記新たに確保した領域に格納した上で、前記上位装置にデータを送信する、ようにしてもよい。
前記上位装置よりリード要求を受けたコントローラの前記キャッシュ処理手段は、自身のコントローラが、前記リード要求のデータを格納する領域に関してマスタ又は冗長先のコントローラでない場合には、前記領域に関してマスタ又は冗長先のコントローラのうちのいずれか１つに前記領域の排他処理を依頼し、
前記排他処理の依頼を受けたコントローラのキャッシュ処理手段は、
前記コントローラのキャッシュメモリ上にリード要求のデータを格納する領域が存在するか確認を行い、
前記キャッシュメモリ上に前記リード要求のデータを格納する領域が存在する場合には、前記領域が排他されているか否かを確認し、
前記領域が他の要求によって排他されている場合、前記領域が解放されるまで待った後に排他を行い、
前記領域が他の要求によって排他されていなければ、前記領域の排他を行い、前記領域の排他の完了を、前記上位装置よりリード要求を受けたコントローラに通知し、
前記コントローラのキャッシュ処理手段は、排他が行われているコントローラのキャッシュメモリ上の領域のデータを読み込み、前記上位装置に送信する、ようにしてもよい。
【００２９】
本発明においては、前記排他要求を受け取ったコントローラにおいて、前記リード要求のデータがキャッシュメモリ上に存在しない場合には、前記キャッシュメモリ上に新たに領域を確保し、前記新たに確保した領域の排他を行った後に、前記ストレージ装置からデータを読み込んで前記新たに確保した領域に格納し、前記新たに確保した領域の排他の完了を、前記上位装置よりリード要求を受けたコントローラに通知し、
前記コントローラのキャッシュ処理手段は、排他が行われているコントローラのキャッシュメモリ上の領域のデータを読み込み、前記データを前記上位装置に送信する、ようにしてもよい。
【００３０】
本発明においては、前記上位装置よりライト要求を受けたコントローラの前記キャッシュ処理手段は、前記コントローラの内の前記装置構成情報を参照して、ライト要求のライトデータに対応するキャッシュメモリの領域のマスタとなるコントローラを決定し、前記上位装置よりライト要求を受けたコントローラがマスタのコントローラである場合、キャッシュサーチ及びキャッシュメモリにおいてライトデータを格納する領域の排他を行い、
前記上位装置よりアクセス要求を受けたコントローラがマスタでない場合、マスタのコントローラに対してキャッシュサーチ指示を送信し、
前記マスタのコントローラは、キャッシュサーチ及び前記キャッシュメモリにおいてライトデータを格納する領域の排他を行い、
つづいて、冗長先のコントローラがある場合に、前記冗長先のコントローラの前記キャッシュ処理手段は、キャッシュサーチ及び前記キャッシュメモリにおいて、ライトデータを格納する領域の排他を行い、
つづいて、マスタ、及び冗長先のコントローラのそれぞれのキャッシュメモリに、前記上位装置からのライトデータの書き込みが行われ、
その後、前記マスタのコントローラ、冗長先のコントローラの前記キャッシュ処理手段は、前記キャッシュメモリの前記領域の排他を解除する、構成としてもよい。
【００３１】
本発明においては、前記コントローラのキャッシュ処理手段は、前記キャッシュサーチの直前に、前記キャッシュメモリの領域の構成情報を管理するためのキャッシュ構成情報をロックし、前記キャッシュメモリの領域の排他の後、前記キャッシュ構成情報をアンロックする。本発明においては、前記コントローラのキャッシュ処理手段は、前記キャッシュメモリの領域の排他の解除の前に、前記キャッシュメモリの領域の構成情報を管理するためのキャッシュ構成情報をロックし、前記キャッシュメモリの領域の排他の解除の後、前記キャッシュ構成情報をアンロックする。
【００３２】
本発明の別のアスペクトに係る方法においては、それぞれが、対応する上位装置に接続されるとともに、相互に通信接続し、対応するストレージ装置の一部のデータを保持するキャッシュメモリを備えた複数のコントローラを含むストレージシステムのキャッシュメモリの制御方法であって、
前記複数のコントローラのそれぞれは、前記上位装置からの論理アドレスの領域と、該領域に対して割り付けられたマスタのコントローラとの対応関係を規定する装置構成情報を記憶保持し、前記装置構成情報は、前記複数のコントローラにおいて同一の内容とされ、前記上位装置からのアクセス要求を受けたコントローラは、前記コントローラ内の前記装置構成情報を参照して、前記アクセス要求のアドレスに対応するデータを格納する領域に関してマスタとなるコントローラを決定し、
前記マスタのコントローラは、前記マスタのコントローラの前記キャッシュメモリの前記データの格納先の領域の排他処理を行い（その際、前記領域が排他されているか否かを確認し、前記領域が既に排他されている場合には、前記領域の排他の解除を待って排他を行い、前記領域が排他されていない場合には、前記領域の排他を行う）、前記データに関してこれを冗長化して格納するキャッシュメモリを持つ冗長先のコントローラが存在する場合に、前記冗長先のコントローラでのキャッシュメモリの排他処理に先んじて、前記マスタのコントローラでのキャッシュメモリの排他処理が行われる、上記工程を含む。
【００３３】
本発明の別のアスペクトに係るプログラムにおいては、
それぞれが、対応する上位装置に接続されるとともに、相互に通信接続し、対応するストレージ装置の一部のデータを保持するキャッシュメモリと、プロセッサを備えた、複数のコントローラを含み、
前記複数のコントローラのそれぞれは、前記上位装置からの論理アドレスの領域と、該領域に対して割り付けられたマスタのコントローラとの対応関係を規定する装置構成情報を記憶保持し、前記装置構成情報は、前記複数のコントローラは、同一の内容とされ、
前記コントローラのプロセッサに、
前記上位装置からのライト要求を受けた際に、前記コントローラ内の前記装置構成情報を参照して、ライト要求のアドレスのデータに関してマスタとなるコントローラを決定する処理と、
前記コントローラがマスタでない場合、前記マスタのコントローラにキャッシュメモリの排他を行うように指示する処理と、
前記マスタのコントローラでキャッシュメモリの領域の排他処理が終わったのち、前記コントローラ内のキャッシュメモリの領域を排他する処理と、
前記上記装置からのライト要求のデータを、前記コントローラ内のキャッシュメモリの領域に書き込むとともに、ライト要求のデータを前記マスタのコントローラに転送する処理と、を実行させるプログラムよりなる。
【発明の効果】
【００３４】
本発明によれば、複数のコントローラのそれぞれがキャッシュ処理手段を具備し、各キャッシュ処理手段で、個別に、キャッシュメモリの排他、領域確保を管理することで、同一キャッシュメモリ上の任意の領域に、ライトデータ、及びライトの冗長化データ、リードデータの配置を可能としており、キャッシュメモリの有効利用を図ることができる。
【００３５】
本発明によれば、システムに共通に、マスタのコントローラと、冗長先のコントローラを規定しておき、ライトのデータの冗長化の際は、最初にマスタのコントローラの領域を排他処理することにより、データの一貫性を保証し、その後、冗長先のコントローラにデータを書き込むことで、三重以上の冗長化ができることにある。
【００３６】
本発明によれば、マスタでキャッシュサーチとキャッシュ領域の排他を行ったのと、冗長先のコントローラ等でキャッシュサーチとキャッシュ領域の排他を行って、ライトデータのキャッシュ領域への書き込みを行うことで、冗長先のコントローラ間で転送される情報を効率化している。
【発明を実施するための最良の形態】
【００３７】
上記した本発明についてさらに詳細に説述する。本発明の１つの側面に係るストレージシステムは、上位装置に接続されるとともに、それぞれがストレージ装置を備え、相互に通信接続する、複数のコントローラを含むストレージシステムであって、前記複数のコントローラのそれぞれが、キャッシュメモリと、プロセッサ（図２の２１０ａ、２１０ｂ）等よりなるキャッシュ処理手段を備え、キャッシュ処理手段は、
・キャッシュメモリの部分領域（例えばページ）の排他処理を行うコントローラ（「マスタのコントローラ」という）を決定する処理、
・各コントローラに備えられるキャッシュメモリの一部の領域の排他処理、及び、該領域がホストコンピュータから要求されるどのデータで相当するかを検索し、該要求対象のデータが存在しない場合、新たに領域を確保する処理、
・該領域が既に排他されていれば、該領域の排他が解除されるまで待つ制御を行う処理、
・キャッシュメモリに格納するデータの冗長化を行う際に、該領域がいずれのコントローラで冗長化されているかを決定する処理、
上記各処理を実行する。
【００３８】
本発明においては、好ましくは、コントローラの上位装置をなすホストコンピュータからの要求で決定するキャッシュメモリ（図２の２０９ａ、２０９ｂ）の部分領域のマスタのコントローラが何れのコントローラであるか示す情報（図２の２１１ａ、２１１ｂ）と、キャッシュメモリの該領域がどのコントローラで冗長化されているかを示す情報（図２の２０８ａ、２０８ｂ）に関して、各コントローラのキャッシュ処理手段は、同一の内容を参照することができる構成とされている。
【００３９】
ホストコンピュータからのアクセス要求がライトである場合には、キャッシュ処理手段を用いて、ライト要求のデータの格納用のキャッシュメモリ上での該当領域の排他処理を行うためのマスタのコントローラを決定する。
【００４０】
その後、該キャッシュ処理手段は、マスタのコントローラのキャッシュ処理手段に対して、該領域の排他処理を依頼する。
【００４１】
これを受けたマスタのコントローラのキャッシュ処理手段は、指定された領域が既に自身のキャッシュメモリ上に存在する場合、他のアクセス要求で排他されているか否かを確認する。
【００４２】
確認の結果、該領域が他のアクセス要求によって排他されていれば、該排他が終了するまで待つ。一方、該領域が他のアクセス要求で排他されていなければ、排他処理を行う。
【００４３】
また、指定された領域が用意されていず、新たに確保すべきである場合、新たに領域を確保して排他処理を行う。
【００４４】
そして、マスタのコントローラでの排他処理が完了したことを、ホストからのライト要求を受けたコントローラに通知する。
【００４５】
ライト要求を受けたコントローラは、キャッシュ処理手段により、該ライト要求で冗長化すべきキャッシュメモリを持つコントローラを決定し、それぞれのコントローラのキャッシュ処理手段に対して、ライト要求で冗長化を行うための領域の排他処理の依頼を行う。
【００４６】
それぞれのコントローラのキャッシュ処理手段は、該領域が他で排他されていれば、解除されるまで待った後に排他処理を行い、他で排他されていなければ、排他処理を行う。
【００４７】
また、該領域が新たなものであれば、新たに確保して排他処理を行う。それぞれのコントローラのキャッシュ処理手段は、排他処理が完了したこと、最初にホストコンピュータからのライト要求を受けたコントローラのキャッシュ処理手段に対して排他処理が完了したことを通知する。
【００４８】
ホストコンピュータからのライト要求を受けたコントローラのキャッシュ処理手段は、冗長化のための領域の排他処理の依頼を発行したコントローラからの排他完了の応答（報告）を待ち合わせる。
【００４９】
そして、すべての領域の排他処理が完了してから、マスタのコントローラおよび冗長先のコントローラのキャッシュメモリの領域に、ホストコンピュータから受けたライトデータの書き込みを行うことで、ライトデータに対する複数のコントローラに対する冗長化を実現する。
【００５０】
そして、複数のホストコンピュータからの異なるコントローラへの、同一領域に対するライト要求を受けた際にでも、最初にマスタのコントローラで排他を行うことにより、同領域に対する他のライト要求は、マスタのコントローラのキャッシュ処理手段で待つことになり、他の冗長化されたコントローラに対する、同領域に対するライトを行わせないことで、冗長化されたデータに対する一貫性の保証を実現する。
【００５１】
さらに、ホストコンピュータからの要求がリードの場合には、該リード要求を受けたコントローラのキャッシュ処理手段は、該リード要求のリードデータを格納するための領域を、どのコントローラで行うか決定する。
【００５２】
該リード要求を受けたコントローラのキャッシュ処理手段は、まず、自身のコントローラが該領域に対してマスタ又は冗長先のコントローラであるか判断を行う。
【００５３】
自身のコントローラがマスタ又は冗長先のコントローラである場合、該リード要求を受けたコントローラのキャッシュ処理手段は、キャッシュメモリの該データの格納領域が存在するか否かの確認を行う。
【００５４】
その結果、該データの格納領域が存在することが確認されると、該リード要求を受けたコントローラのキャッシュ処理手段は、キャッシュメモリの該領域が排他されているか否かの確認を行う。
【００５５】
キャッシュメモリの該領域が他の要求で排他されている場合には、ライト要求の場合と同様に、該リード要求を受けたコントローラのキャッシュ処理手段は、該領域が解放されるまで待った後に排他を行い、該領域が他の要求で排他されていなければ、そのまま排他を行う。その後、該リード要求を受けたコントローラのキャッシュ処理手段は、該領域のデータをホストコンピュータに送信し、リード要求に対する処理を終える。
【００５６】
また、要求されたデータの領域がキャッシュメモリ上に存在しない場合、該リード要求を受けたコントローラのキャッシュ処理手段は、新たに領域を確保し、排他を行った後に、ディスクからデータを読み込み、該領域に格納し、その後、ホストコンピュータにデータを送信し、リード要求の処理を終える。
【００５７】
また、リード要求を受けた際に、自身のコントローラが該領域に対してマスタ又は冗長先のコントローラでない場合には、該リード要求を受けたコントローラのキャッシュ処理手段は、マスタ又は冗長先のコントローラのうちのいずれか１つに、該領域の排他処理を依頼する。
【００５８】
該排他処理を受けたコントローラのキャッシュ処理手段は、同様に、リード要求のデータの格納領域が存在するか確認を行う。
【００５９】
該排他処理を受けたコントローラのキャッシュ処理手段は、確認の結果、該リード要求のデータの格納領域が存在する場合、排他されているか否かの確認を行う。確認の結果、他の要求で排他されている場合、該排他処理を受けたコントローラのキャッシュ処理手段は、ライト要求の時と同様に、該領域が解放されるまで待った後に排他を行い、他の要求で排他されていなければ、該領域の排他を行う。
【００６０】
その後、該排他処理を受けたコントローラのキャッシュ処理手段は、該領域の排他の完了を、リード要求を受けたコントローラに通知し、該コントローラのキャッシュ処理手段は、排他が行われているコントローラのキャッシュメモリ上の領域のデータの読み込みを行い、ホストコンピュータに送信し、リード要求の処理を終える。
【００６１】
また、該排他要求を受け取ったコントローラのキャッシュ処理手段は、要求されたデータがキャッシュメモリ上に存在しない場合には、新たに領域を確保し、新たに確保した領域の排他を行った後に、ディスクからデータを読み込み、該領域に格納する。
【００６２】
その後、該排他要求を受け取ったコントローラのキャッシュ処理手段は、該領域の排他の完了を、リード要求を受けたコントローラに通知し、該コントローラのキャッシュ処理手段は、排他が行われているコントローラのキャッシュメモリ上の領域のデータの読み込みを行い、該データをホストコンピュータに送信し、リード要求の処理を終える。
【００６３】
本発明によれば、それぞれのコントローラで、キャッシュ処理手段を備え、各キャッシュ処理手段で、個別に、キャッシュメモリの排他、領域確保の管理することで、同一キャッシュメモリ上の任意の領域にライトデータ及びライトの冗長化データ、リードデータの配置が可能となるため、キャッシュメモリの有効利用が可能となり、本発明の目的を達成できる。
【００６４】
また、二重以上のライトデータの冗長化に関しても、システム共通でマスタのコントローラと冗長先のコントローラを設定し、ライトのデータの冗長化の際は、最初に、マスタのコントローラの領域を排他処理することにより、データの一貫性の保証と三重以上の冗長化を実現している。以下、実施例に即して詳細に説明する。
【実施例】
【００６５】
図１は、本発明の第１の実施例の構成を示す図である。図１には、ストレージを構成する１つのコントローラ１０１の構成が示されている。
【００６６】
図１を参照すると、コントローラ１０１は、プロセッサ１１０と、ホストコンピュータ（不図示）と接続し、コマンドやデータのやりとりを行うためのホストインターフェイス１０２と、ホストインターフェイス１０２に接続され、コマンドの受信とコマンド受信時のプロセッサ１１０への通知やキャッシュメモリ１０９のデータをホストインターフェイス１０２を介してホストコンピュータ間とやりとりを行うコマンド処理部１０３と、コントローラ１０１同士を複数相互に接続し、キャッシュデータやコントローラ間の通信を行うためのインターフェイスである接続インターフェイス１０４と、接続インターフェイス１０４を通して、通信されるデータやコマンドの制御を行い、プロセッサ１１０にホストコンピュータからのコマンドの受領の通知等を行う通信制御部１０５と、磁気ディスク装置（不図示）とコントローラ間を相互に接続するディスクインターフェイス１０６と、ディスクインターフェイス１０６を介して磁気ディスク装置へのデータの書き込みや磁気ディスク装置からのデータの読み出し、磁気ディスク装置へ所望のアクセスの要求を行う等の制御を行うディスク制御部１０７と、磁気ディスク装置からの読み込んだデータや、ホストコンピュータから受け取ったライトデータを一時的に格納するキャッシュメモリ１０９と、ホストコンピュータからの要求により、該当するデータがキャッシュメモリ１０９に存在するか否かを検索をするためのキャッシュ構成情報１０８と、領域情報とマスタコントローラとの対応関係を格納した装置構成情報１１１を備えている。
【００６７】
プロセッサ１１０は、コマンド処理部１０３がホストコンピュータから受けたコマンドの通知を受け、該コマンドの内容に従い、それがリードである場合、キャッシュ構成情報１０８を検索する。
【００６８】
検索の結果、キャッシュメモリ１０９にデータが存在する場合、キャッシュメモリ１０９のデータを、コマンド処理部１０３を介してホストコンピュータに送信し、キャッシュ構成情報１０８の検索の結果、キャッシュメモリ１０９にデータが存在しない場合、ディスク制御部１０７に磁気ディスク装置に存在するデータの読み込みを指示し、磁気ディスクからの読出データをキャッシュメモリ１０９に格納した後、読出データをコマンド処理部１０３を介してホストコンピュータに送信する。
【００６９】
また、プロセッサ１１０は、コマンド処理部１０３がホストコンピュータから受けたコマンドの結果がライトである場合、ホストコンピュータから受信したライトコマンドで示される論理アドレスと装置構成情報１１１上のテーブルを検索し、該コマンドの論理アドレスで指定されるライトのデータのマスタ、即ち、最初に、キャッシュ構成情報１０８を検索すべきコントローラが、システム内のどのコントローラであるか決定する。
【００７０】
ここで、自コントローラがマスタである場合には、自コントローラのキャッシュ構成情報１０８の検索を行い、キャッシュメモリ１０９上に該データが存在するか判定を行う。
【００７１】
その結果、存在する場合、キャッシュメモリ上の領域の排他を行う。
【００７２】
また、該データがキャッシュメモリ１０９上に存在しない場合、新たにキャッシュメモリ１０９上に、領域を確保し、該領域の排他を行う。
【００７３】
その後、冗長化を行っている他のコントローラに対して、通信制御部１０５を通じて、キャッシュ構成情報１０８の検索を指示する。
【００７４】
冗長化を行っている他のコントローラからの検索が完了し、該データ領域の排他完了、及び、書き込むべきキャッシュメモリ上のアドレスの通知を受け取った後に、コマンド処理部１０３を介して、ライトデータを、自コントローラ内のキャッシュメモリ１０９と、他コントローラのキャッシュメモリ上に書き込み、ライトを完了する。
【００７５】
図３は、図１で示される装置構成情報１１１の一構成を示す図である。図３を参照すると、装置構成情報１１１は、ホストコンピュータが指定する論理アドレスから、どのコントローラがキャッシュ構成情報を検索する際に、マスタとなり、最初に検索を行うべきかを示す情報を備えている。装置構成情報１１１は、領域情報３０１と、マスタのコントローラ番号３０２との対応（対）を表形式で備えており、ホストコンピュータが指定する論理アドレスと、装置構成情報１１１の領域情報３０１との比較を行い、該論理アドレスが領域情報３０１の範囲内に含まれれば、該領域情報３０１に相当するマスタのコントローラ番号３０２が、最初に検索を行うべきコントローラの番号となる。
【００７６】
図４は、図１のキャッシュ構成情報１０８の内容の一例を示す図である。図４を参照すると、キャッシュ構成情報１０８は、キャッシュ構成情報の検索（キャッシュヒット／ミスヒットの判定）時の処理の高速化を図るため、ハッシュテーブル４０１とハッシュテーブル４０１からリンク構造で構成されるページタグ４０２を備えている。
【００７７】
ページタグ４０２はそれぞれ、
ページタグ４０２同士でリンク構造を構成するためのポインタ４０３と、
ページタグ４０２で示されるキャッシュメモリ上の領域（以下、「ページ」という）が、ホストコンピュータから指定されたどの領域であるかを示すページ識別子４０４と、
キャッシュメモリ（図１のキャッシュメモリ１０９）上のどのページに存在するかを示すアドレス情報のページアドレス４０６と、
磁気ディスク装置上へ保存されていない書き込みデータがあるページを示すページ情報４０５と、を有する。ページ情報４０５は、空ページ等を示す情報や、当該ページを排他制御するための排他情報（フラグ）等（不図示）も含まれる。
【００７８】
図２は、本発明の第１の実施例のシステムの全体構成を模式的に示す図である。図２では、簡単のため、図１のコントローラ１０１を２つ備えたシステムが例示されているが、本発明において、コントローラは２つに制限されるものでないことは勿論である。
【００７９】
コントローラ０（２０１ａ）、コントローラ１（２０１ｂ）は、図１に示した構成と同一の要素を備えている。
【００８０】
ホストインターフェイス２０２ａ、２０２ｂは、図１のホストインターフェイス１０２に対応し、接続インターフェイス２０４は、図１の接続インターフェイス１０４に対応する。ディスクインターフェイス２０６ａ、２０６ｂ、２１３ａ、２１３ｂは、図１のディスクインターフェイス１０６に対応する。
【００８１】
コントローラ２０１ａとコントローラ２０１ｂ間は、接続インターフェイス２０４で接続され、双方のコントローラ間でのキャッシュデータ等の通信を行う。
【００８２】
コントローラ２０１ａからディスクインターフェイス２０６ａを介して磁気ディスク装置２１２ａ、ディスクインターフェイス２１３ａを介して磁気ディスク装置２１２ｂに接続され、コントローラ２０１ｂからは、ディスクインターフェイス２０６ｂを介して磁気ディスク装置２１２ｂ、ディスクインターフェイス２１３ｂを介して磁気ディスク装置２１２ａに接続される。すなわち、コントローラのディスク制御部は、自コントローラの磁気ディスク装置のみならず、他のコントローラの磁気ディスク装置にも、ディスクインターフェイスを介してアクセスすることができる。
【００８３】
こうすることで、コントローラ２０１ａおよびコントローラ２０１ｂから、相互に磁気ディスク装置２１２ａ、及び、磁気ディスク装置２１２ｂにアクセス可能としており、片方のコントローラが使用不能になった時でも、双方のコントローラに冗長化されたデータの磁気ディスク装置への書き込みを可能としている。
【００８４】
また、コントローラ２０１ａ、２０１ｂ上の装置構成情報２１１ａ、２１１ｂには、予め同一の情報が書き込まれており、それぞれのコントローラが他のコントローラに問い合わせることなく、コントローラ２０１ａ、２０１ｂのプロセッサ２１０ａ、２１０ｂによる参照を可能としている。コントローラ２０１ａの装置構成情報２１１ａとコントローラ２０１ｂの装置構成情報２１１ｂとは同一内容でありさえすればよく、その書き込み（更新）形態等は任意である。
【００８５】
次に、図５乃至図７のフローチャートと、図２乃至図４を参照して、本実施例の動作の一例を具体的に説明する。図５は、システムの全体の動作、図６、図７は、図５のステップＳ５、Ｓ１１の自コントローラのサーチと、ステップＳ６、Ｓ１０の他コントローラのサーチの詳細を示すフローチャートである。
【００８６】
図２のホストインターフェイス２０２ａがホストコンピュータからのコマンドをコマンド処理部２０３ａで受信すると、コマンド処理部２０３ａは、プロセッサ２１０ａに対し、コマンドの受信を行ったことを通知する（図５のステップＳ１）。
【００８７】
プロセッサ２１０ａは、コマンド処理部２０３ａで受け取ったコマンドの内容から、そのコマンドで示される処理を判断する（図５のステップＳ２）。
【００８８】
受信したコマンドがライト動作であれば、プロセッサ２１０ａは、装置構成情報２１１ａを参照し（図５のステップＳ３）、ホストコンピュータから受信したコマンドで示される論理アドレスのデータがどのコントローラがマスタになる、即ち、最初にキャッシュ構成情報を検索すべきデータか判定を行う（図５のステップＳ４）。
【００８９】
ここで、ホストコンピュータから指定された論理アドレスが１０のライトコマンドである場合には、プロセッサ２１０ａは、装置構成情報２１１ａの検索を行う（図５のステップＳ５）。装置構成情報２１１ａとしては、コントローラ２０１ｂの装置構成情報２１１ｂと同じものが用意されている。
【００９０】
装置構成情報２１１ａ、２１１ｂの内容が、図３で示される内容であるものとして以下説明する。また、図３において、マスタのコントローラ番号３０２は、それぞれ、マスタとなるコントローラの番号を示しており、番号０がコントローラ２０１ａ、番号１がコントローラ２０１ｂとする。
【００９１】
プロセッサ２１０ａは、論理アドレス１０と、装置構成情報２１１ａの領域情報３０１の項目を比較する。論理アドレス１０が０〜９９の範囲であるため、領域情報が０〜９９に相当するマスタのコントローラ番号３０２の値を読み出す。マスタのコントローラ番号が０であるため、該コマンドで指定される論理アドレスは、コントローラ２０１ａがマスタであることが判定できる（図６のステップＳ１０１）。
【００９２】
プロセッサ２１０ａは、該ライトコマンドのマスタがコントローラ２０１ａであることが判定されたため、マスタのコントローラ２０１ａのキャッシュ構成情報２０８ａの検索を行い、該当するライトコマンドで指定されるページがキャッシュメモリ２０９ａに存在するか否かの判定を行う（図６のステップＳ１０２）。なお、マスタのコントローラ２０１ａのキャッシュ構成情報２０８ａを排他処理（ＬＯＣＫ）してから、キャッシュのページサーチを行う。他の要求等により、キャッシュ構成情報２０８ａ、キャッシュメモリ２０９ａを更新する場合、キャッシュ構成情報２０８ａの排他が解除（アンロック）されるまで、待ちとされる。通常、キャッシュ構成情報２０８ａの排他の解除は、キャッシュメモリの該当ページがヒットするか、あるいはミスヒットの場合新たに該当ページが確保された状態において、該当ページの排他が行われリード／ライトが行われたのち、該当ページの排他の解除が行われたのち、行われる。
【００９３】
ステップＳ１０２で、ライトコマンドで指定されるページがキャッシュメモリ２０９ａ上に存在しないと判定されると、プロセッサ２１０ａは、キャッシュ構成情報２０８ａを参照し、新たに確保可能なキャッシュメモリ２０９ａ上のページを検索し、該ページを新たに格納するページとして、キャッシュ構成情報２０８ａのページアドレス４０６にページのアドレスの登録を行うと共に、当該ページの排他処理を行う。この排他処理は、他のコマンドや他のコントローラからページに対する読み込みによるデータ化け防止と、冗長化を行ったライトデータに対する書き込みによる一貫性の崩れを防ぐためのものである。
【００９４】
この排他処理は、プロセッサ２１０ａが、キャッシュ構成情報２０８ａにおいて、図４のページ情報４０５に、該ページが実行中のコマンドにより使用中である旨を示す排他情報を書き込むことで実現する（図６のステップＳ１０３）。
【００９５】
ライトコマンドで指定されるページがキャッシュメモリ２０９ａ上に存在する場合には、プロセッサ２１０ａは、他のコマンドや他のコントローラで使用されていないか、排他の確認を行う。
【００９６】
より具体的には、プロセッサ２１０ａは、キャッシュ構成情報２０８ａのページ情報４０５（図４参照）にある排他情報の参照を行い、排他状態の確認を行う（図６のステップＳ１０４）。
【００９７】
プロセッサ２１０ａは、該ページが排他状態でなければ、キャッシュ構成情報２０８ａのページアドレス４０６を取得すると共に、該ページの排他処理を行い、次のステップに進む（図６のステップＳ１０６）。
【００９８】
該ページが排他状態の場合、該ライトコマンドの処理は、他のコマンドあるいは他のコントローラの処理実行中による該ページの排他が解除されるまで待ち状態に入る。そして排他が解除されれば、排他処理を行い、他のコマンドや他のコントローラが使用できないようにし、次のステップに進む（図６のステップＳ１０５）。なお、図６の自コントローラサーチ処理において、キャッシュメモリのページの排他処理の後、キャッシュ構成情報の排他を解除（ＵＮＬＯＣＫ）する。
【００９９】
次に、冗長化が行われているコントローラ２０１ｂに対してキャッシュ構成情報２０８ｂの検索を行う（図５のステップＳ６）。
【０１００】
まず、プロセッサ２１０ａは、通信制御部２０５ａに対して、マスタであるコントローラ２０１ｂに対するキャッシュ制御情報の検索指示を行う。
【０１０１】
通信制御部２０５ａは、接続インターフェイス２０４を通じて、コントローラ２０１ｂの通信制御部２０５ｂに対して、コマンドのキャッシュ制御情報の検索指示を伝える（図７のステップＳ２０１）。
【０１０２】
通信制御部２０５ｂは、受信した検索指示をプロセッサ２１０ｂに伝え、プロセッサ２１０ｂは自身のキャッシュ構成情報２０８ｂの検索を行う（図７のステップＳ２０２）。
【０１０３】
検索の結果、該ライトコマンドで示された領域のページが存在しない場合（図７のステップＳ２０３のＮｏ分岐）、新たにキャッシュメモリ２０９ｂ上にページを確保し、ページの排他処理を行い、そのページのアドレス情報を取得しキャッシュ構成情報２０８ｂのページアドレス４０６に登録する（図７のステップＳ２０４）。
【０１０４】
また、ライトコマンドで指定されるページがキャッシュメモリ２０９ｂに存在する場合には（図７のステップＳ２０３のＹｅｓ分岐）、他のコマンドや他のコントローラで使用されていないか、排他の確認を行う。より具体的には、キャッシュ構成情報２０８ｂのページ情報４０５にある排他情報の参照を行い、既に排他状態にあるか否かに確認を行う（図７のステップＳ２０６）。
【０１０５】
該ページが排他状態でなければ（図７のステップＳ２０６のＮｏ分岐）、キャッシュ構成情報２０８ｂのページアドレス４０６（図４参照）を取得すると共に、該ページの排他処理を行い、次のステップに進む（図７のステップＳ２０８）。
【０１０６】
該ページが排他状態にある場合（図７のステップＳ２０６のＹｅｓ分岐）、該ライトコマンドの処理は、他のコマンドあるいは他のコントローラの処理実行中による該ページの排他が解除されるまで待ち状態に入る。排他が解除されれば、排他処理を行い、他のコマンドや他のコントローラが使用できないようにし、次のステップに進む（図７のステップＳ２０７）。
【０１０７】
次に、プロセッサ２１０ｂは取得したページアドレス４０６を通信制御部２０５ｂに伝え、接続インターフェイス２０４を通して、コントローラ２０１ａの通信制御部２０５ａにページの確保が出来たことを通知する（図７のステップＳ２０５）。
【０１０８】
通信制御部２０５ａは、プロセッサ２１０ａにコントローラ２０１ｂからのページを確保した通知を受け取ると、ホストコンピュータからライトデータを、コマンド処理部２０３ａを通じて、コントローラ２０１ａのキャッシュ構成情報２０８ａで示されるページアドレス４０６（図４参照）のアドレスのキャッシュメモリ２０９ａ上のページに書き込む。これと同時に、コントローラ２０１ｂのキャッシュメモリ２０９ｂに対しても、通信制御部２０５ａ、接続インターフェイス２０４と通信制御部２０５ｂを通じて、既に受領しているコントローラ２０１ｂのキャッシュメモリ２０９ｂのページアドレスにデータの書き込みを行いライトデータのキャッシュへの書き込みと冗長化を行い、コマンド処理部２０３ａを通じてライトコマンドの終了をホストコンピュータに通知する（図５のステップＳ７）。
【０１０９】
その後、プロセッサ２１０ａは、通信制御部２０５ａを通じて、ページの排他解除の指示をコントローラ２０１ｂに対して行う。
【０１１０】
プロセッサ２１０ｂは、該指示を接続インターフェイス２０４と通信制御部２０５ｂを通じて受け取る。
【０１１１】
そして、プロセッサ２１０ｂは、コントローラ２０１ｂのキャッシュ構成情報２０８ｂのページ情報の排他の解除を行う。
【０１１２】
プロセッサ２１０ｂは、排他の解除（ＵＮＬＯＣＫ）を完了すると、コントローラ２０１ａに対して、ページの排他完了の通知を、通信制御部２０５ｂを通じて行う（図５のステップＳ８）。
【０１１３】
プロセッサ２１０ａが、コントローラ２０１ｂからの排他解除の通知を受け取ると、プロセッサ２１０ａは、コントローラ２０１ａのキャッシュ構成情報２０８ａのページ情報４０５の排他の解除を行い、ライトコマンドに対する処理を完了する（図５のステップＳ９）。
【０１１４】
さらに、該ライトコマンドの論理アドレスが「１５０」であった場合、コントローラ２０１ｂがマスタとなるため、プロセッサ２１０ａは、通信制御部２０５ａに対して、マスタであるコントローラ２０１ｂに対するキャッシュ制御情報の検索指示を行う（図５のステップＳ１０）。
【０１１５】
通信制御部２０５ａは、接続インターフェイス２０４を通じて、コントローラ２０１ｂの通信制御部２０５ｂにコマンドのキャッシュ制御情報の検索指示を伝える（図７のステップＳ２０１）。
【０１１６】
通信制御部２０５ｂは、受信した検索指示をプロセッサ２１０ｂに伝え、プロセッサ２１０ｂは自身のキャッシュ構成情報２０８ｂの検索を行い（図７のステップＳ２０２）、その結果、該ライトコマンドで示された領域のページが存在しない場合（図７のステップＳ２０３のＮｏ）、新たにキャッシュメモリ２０９ｂ上にページを確保し、ページの排他処理を行い、そのページのアドレスをキャッシュ構成情報２０８ｂ上のページアドレス４０６に登録する（図７のステップＳ２０４）。
【０１１７】
また、ライトコマンドで指定されるページがキャッシュメモリ２０９ｂに存在する場合には（図７のステップＳ２０３のＹｅｓ）、他のコマンドや他のコントローラで使用されていないか、排他の確認を行う。より具体的には、キャッシュ構成情報２０８ｂのページ情報４０５にある排他情報の参照を行い、排他状態の確認を行う（図７のステップＳ２０６）。
【０１１８】
該ページが排他状態でなければ（図７のステップＳ２０６のＮｏ）、キャッシュ構成情報２０８ｂのページアドレス４０６を取得すると共に、該ページの排他処理を行い、次のステップに進む（図７のステップＳ２０８）。
【０１１９】
該ページが排他状態の場合（図７のステップＳ２０６のＹｅｓ）、該ライトコマンドの処理は、他のコマンド、あるいは他のコントローラの処理実行中による該ページの排他が解除されるまで待ち状態に入る。該ページの排他が解除されると、排他処理を行い、他のコマンドや他のコントローラが使用できないようにし、次のステップに進む（図７のステップＳ２０７）。
【０１２０】
次に、プロセッサ２１０ｂは、取得したページアドレス４０６を通信制御部２０５ｂに伝え、接続インターフェイス２０４を通してコントローラ２０１ａの通信制御部２０５ａにページの確保が出来たことを通知する（図７のステップＳ２０５）。
【０１２１】
コントローラ２０１ａの通信制御部２０５ａは、ページ確保の通知をプロセッサ２１０ａに対して行う。
【０１２２】
次に、コントローラ２０１ａのキャッシュ構成情報２０８ａの検索を行い（図６のステップＳ１０１）、該当するライトコマンドで指定されるページが、キャッシュメモリ２０９ａに存在しないか判定を行う（図６のステップＳ１０２）。
【０１２３】
その結果、ライトコマンドで指定されるページがキャッシュメモリ２０９ａ上にないと判定されれば、プロセッサ２１０ａは、キャッシュ構成情報２０８ａを参照し、新たに確保可能なキャッシュメモリ２０９ａ上のページを検索し、該ページを新たに格納するページとしてキャッシュ構成情報２０８ａのページアドレス４０６にページのアドレスの登録を行うと共に、排他処理を行う（図６のステップＳ１０３）。
【０１２４】
また、ライトコマンドで指定されるページがキャッシュメモリ２０９ａに存在する場合には、他のコマンドや他のコントローラで使用されていないか、排他の確認を行う。より具体的には、キャッシュ構成情報２０８ａのページ情報４０５にある排他情報の参照を行い、排他状態の確認を行う（図６のステップＳ１０４）。
【０１２５】
該ページが排他状態でない場合（図６のステップＳ１０４のＮｏ）、キャッシュ構成情報２０８ａのページアドレス４０６を取得すると共に、該ページの排他処理を行い、次のステップに進む（図６のステップＳ１０６）。
【０１２６】
該ページが排他状態の場合（図６のステップＳ１０４のＹｅｓ）、該ライトコマンドの処理は、他のコマンドあるいは他のコントローラの処理実行中による該ページの排他が解除されるまで待ち状態に入る。該ページの排他が解除されれば、排他処理を行い、他のコマンドや他のコントローラが使用できないようにし、次のステップに進む（図６のステップＳ１０５）。
【０１２７】
次に、プロセッサ２１０ａは、ホストコンピュータからライトデータを、コマンド処理部２０３ａを通じて、コントローラ２０１ａのキャッシュ構成情報２０８ａで示されるページアドレス４０６のページに書き込むと同時に、コントローラ２０１ｂのキャッシュメモリ２０９ｂに対しても、通信制御部２０５ａ、接続インターフェイス２０４と通信制御部２０５ｂを通じて、既に受領しているコントローラ２０１ｂのキャッシュメモリ２０９ｂのページアドレスにデータの書き込みと、ライトコマンドの終了を、ホストコンピュータに通知する（図５のステップＳ１２）。
【０１２８】
さらに、プロセッサ２１０ａは、キャッシュ構成情報２０８ａのページの排他解除を行う（図５のステップＳ１３）。
【０１２９】
その後、プロセッサ２１０ａは、通信制御部２０５ａを通じて、ページ解放（ページＵＮＬＯＣＫ）の指示をコントローラ２０１ｂに対して行う。
【０１３０】
プロセッサ２１０ｂは、該指示を接続インターフェイス２０４と通信制御部２０５ｂを通じて受け取り、コントローラ２０１ｂのキャッシュ構成情報２０８ｂのページ情報の排他の解除を行う（図５のステップＳ１４）。
【０１３１】
プロセッサ２１０ｂは、排他の解除を完了すると、コントローラ２０１ａに対して、ページの排他解除の通知を、通信制御部２０５ｂを通じて行う。
【０１３２】
プロセッサ２１０ａが、コントローラ２０１ｂからの排他解除の通知を受け取ると、ライトコマンドに対する処理を完了する。
【０１３３】
いずれの場合も、キャッシュメモリに書き込まれたデータは、適宜、磁気ディスク装置に書き込まれ、キャッシュメモリと磁気ディスク装置の一致化が行われる。
【０１３４】
ステップＳ２の判定でホストコンピュータから受信したコマンドがリードの場合は（図５のステップＳ２のＮｏ）、プロセッサ２１０ａは、装置構成情報２１１ａのマスタのコントローラを示す情報とは関係なく、キャッシュ構成情報２０８ａの検索を行う（図５のステップＳ１５）。
【０１３５】
該リードコマンドのデータがキャッシュメモリ２０９ａ上に存在するか否かを判定する（図５のステップＳ１６）。
【０１３６】
判定の結果、該リードコマンドのデータに相当するページがキャッシュメモリ２０９ａ上に存在する場合（図５のステップＳ１６のＹｅｓ）、他のコマンドや他のコントローラで使用されていないか否か排他の確認を行う。具体的には、キャッシュ構成情報２０８ａのページ情報４０５にある排他情報の参照を行い、排他状態の確認を行う（図５のステップＳ２１）。
【０１３７】
確認の結果、該ページが排他状態でなければ（図５のステップＳ２１のＮｏ）、キャッシュ構成情報２０８ａのページアドレス４０６を取得すると共に、該ページの排他処理を行い、次のステップに進む（図５のステップＳ２３）。
【０１３８】
確認の結果、該ページが排他状態の場合（図５のステップＳ２１のＹｅｓ）、該リードコマンドの処理は、他のコマンドあるいは他のコントローラの処理実行中による該ページの排他が解除されるまで待ち状態に入る。排他が解除されれば、キャッシュ構成情報２０８ａのページ情報４０５に排他の情報を書き込み、ページに対する排他処理を行う（図５のステップＳ２２）。
【０１３９】
次に、検索の結果得られたページアドレス４０６のアドレスで示されるページのデータをキャッシュメモリ２０９ａから読み出し、コマンド処理部２０３ａを通じてホストコンピュータに転送を行う（図５のステップＳ１９）。
【０１４０】
その後に、ホストコンピュータにリードコマンドの終了を報告すると同時に、該キャッシュ構成情報２０８ａのページ情報４０５の排他の解除を行いリードコマンドに対する処理を完了する（図５のステップＳ２０）。
【０１４１】
該リードコマンドのデータに相当するページがキャッシュメモリ２０９ａ上に存在しない場合（図５のステップＳ１６のＮｏ）、プロセッサ２１０ａは、新たに確保可能なキャッシュメモリ２０９ａ上のページを検索し、該ページを新たに格納するページとしてキャッシュ構成情報２０８ａのページアドレス４０６にページのアドレスの登録を行うと共に、ページ情報４０５に排他の情報を書き込み、排他処理を行う（図５のステップＳ１７）。
【０１４２】
その後、プロセッサ２１０ａは、ディスク制御部２０７ａに対して、磁気ディスク装置上のデータの読み込みを指示し、ディスク制御部２０７ａは、ディスクインタフェース２０６ａあるいは２１３ａを通じて、磁気ディスク装置２１２ａあるいは磁気ディスク装置２１２ｂ上のデータを読み込み、キャッシュメモリ２０９ａ上のページへの書き込みを行う（図５のステップＳ１８）。
【０１４３】
キャッシュメモリ２０９ａ上への書き込みが完了すると、プロセッサ２１０ａは、キャッシュメモリ２０９ａ上のデータをコマンド処理部２０３ａとホストインターフェイス２０２ａを通じてホストコンピュータに転送を行う（図５のステップＳ１９）。
【０１４４】
その後、プロセッサ２１０ａは、ホストコンピュータにリードコマンドの終了を報告すると同時に、該キャッシュ構成情報２０８ａのページ情報４０５の排他の解除を行い、リードコマンドに対する処理を完了する（図５のステップＳ２０）。
【０１４５】
次に本実施例の作用効果について説明する。
【０１４６】
キャッシュメモリ上のページへのアクセスの手順として、同一の論理アドレスのリード／ライトであれば、必ずマスタのコントローラで既存のページであれば排他が行われているか否かの判定を行い、その後、ページの排他制御を行い、その後、冗長化が行われているコントローラのキャッシュメモリ上のページにアクセスを行う。
【０１４７】
かかる構成により、同一ページにリード／ライトを行う後続のコマンドは、該当ページの排他の解除待ちになり、該当ページのデータに対する一貫性は保証される。
【０１４８】
また、それぞれのコントローラで、キャッシュメモリの管理、即ち、ページの管理がキャッシュ構成情報によって行われ、リードデータのキャッシュは、それぞれの個別のコントローラのキャッシュメモリのみでのキャッシュが可能となるため、キャッシュメモリの利用効率が高い。
【０１４９】
さらに、キャッシュ構成情報の全体、或いは一部を排他処理する方式に較べて、リードもしくはライトを行うための排他処理がページという最小単位のみで済むため、他のコマンドによるリード／ライトや他のコントローラのリード／ライトの競合が少なく、性能向上を容易化している。
【０１５０】
本発明によれば、ホストコンピュータから、情報の蓄積を行うストレージの用途や、ホストコンピュータとストレージの中間にネットワークを介して接続されるキャッシュ装置の冗長化による対故障性に対する対策に適用できる。また、本発明の機能をホストコンピュータに内蔵し、ホストコンピュータ間のクラスタ接続の際のデータの冗長化といった用途にも適用可能である。
【０１５１】
なお、上記図５乃至図７を参照して説明した動作手順は、好ましくはコントローラのプロセッサ上で実行されるコンピュータプログラムによりその処理が実現される。
【０１５２】
図８には、本発明に係るコントローラを４つ備えたシステム（４ノードシステム）が例示されている。コントローラ０−３（５０１ａ−５０１ｄ）は、図１に示した実施例の構成と同一の要素を備えている。
【０１５３】
ホストインターフェイス５０２は、図１のホストインターフェイス１０２に対応し、相互接続網５０４は、図１の接続インターフェイス１０４に対応する。ディスク制御部５０７は、図１のディスク制御部１０７に対応する。コントローラ０、１は、図２の２ノード構成に対応し、コントローラ０のディスク制御部は、対応するディスクインタフェースを介して磁気ディスク装置５１２ａ、５１２ｂにそれぞれアクセス自在とされ、コントローラ１のディスク制御部は、対応するディスクインタフェースを介して磁気ディスク装置５１２ｂ、５１２ａにそれぞれアクセス自在とされる。コントローラ２、３は、図２の２ノード構成に対応し、コントローラ２のディスク制御部は、対応するディスクインタフェースを介して磁気ディスク装置５１２ｃ、５１２ｄにそれぞれアクセス自在とされ、コントローラ３のディスク制御部は、対応するディスクインタフェースを介して磁気ディスク装置５１２ｄ、５１２ｃにそれぞれアクセス自在とされる。
【０１５４】
コントローラ０−３は、各コントローラ内の通信制御部と、相互接続網５０４とを介して相互に接続され、コントローラ間でキャッシュデータ等の転送を行う。コントローラ０と１は、相互接続網５０４を介してコントローラ２又は３と通信し、そのディスク制御部を介して磁気ディスク装置５１２ｃ、５１２ｄにアクセス自在とされ、コントローラ２と３は、相互接続網５０４を介して、コントローラ０又は１と通信しそのディスク制御部を介して、磁気ディスク装置５１２ａ、５１２ｂにアクセス自在とされ、４つのコントローラ０−３の各々から、磁気ディスク装置５１２ａ乃至５１２ｄにアクセス可能としている。かかる構成により、例えばコントローラ０が使用不能になった時でも、コントローラ１を介して冗長化されたデータの磁気ディスク装置への書き込みを可能としている。また例えばコントローラ２が使用不能になった時でも、コントローラ３を介して冗長化されたデータの磁気ディスク装置への書き込みを可能としている。なお、各コントローラのディスク制御部と、磁気ディスク装置５１２ａ乃至５１２ｄの接続形態は、図８に示した構成に限定されるものではなく、各コントローラのディスク制御部が、バスを介して磁気ディスク装置５１２ａ乃至５１２ｄに接続される構成にもしてもよいことは勿論である。
【０１５５】
また、コントローラ０−３の各装置構成情報５１１には、予め同一の情報が書き込まれており、それぞれのコントローラが他のコントローラに問い合わせることなく、コントローラのプロセッサによる参照を可能としている。
【０１５６】
図９は、本発明の比較例として、本発明の構成をとらないコントローラを４台備えた場合のライトアクセス制御の一例を示すシーケンス図である。図９の比較例の場合、キャッシュページを管理するマスタのコントローラは存在しない。図９のコントローラ０−３は、図８のコントローラ０−３において、装置構成情報５１１を各コントローラが保持しない構成とされる。なお、図９の比較例では、コントローラ０、１、３が、上位装置からのライトデータを、それぞれのキャッシュメモリに冗長に書き込む三重冗長セットを構成しており、例えばコントローラ０へのＷｒｉｔｅコマンドに対して、コントローラ０、１、３のキャッシュメモリへライトデータが書き込まれる。
【０１５７】
図９を参照すると、コントローラ０のコマンド処理部は、そのホストインタフェースを介してホスト（不図示）からのライト（Ｗｒｉｔｅ）コマンドを受信すると、三重冗長セットを構成する他のコントーラ１、３に対して、キャッシュ構成情報の排他処理（ＬＯＣＫ）を指示する。コントローラ０と、コントローラ０からの指示（キャッシュ構成情報の排他指示）を受けたコントローラ１と３は、それぞれのキャッシュ構成情報（図４参照）をロック（ＬＯＣＫ）する。なお、各コントローラにおける、これらの排他処理、及び通信処理は、各コントローラのプロセッサ、通信制御部、相互通信網等を通して行われる。
【０１５８】
コントローラ０と、コントローラ１と３におけるキャッシュ構成情報のロックの完了通知を受け、コントローラ０は、他のコントローラ１、３に、キャッシュサーチとページのロックを指示するとともに、自コントローラ内でのキャッシュサーチとページのロックを行う。またコントローラ０からのキャッシュサーチとページのロック指示を受けて、コントローラ１、３も、キャッシュサーチとキャッシュページのロックを行う。なお、前述したように、コントローラ０、１、３は、キャッシュサーチにおいて、ライトコマンドで指定されるページがキャッシュメモリ上に存在しないと判定されると、プロセッサは、キャッシュ構成情報を参照し、新たに確保可能なキャッシュメモリのページを検索し、該ページを新たに格納するページとして、キャッシュ構成情報のページアドレスにページのアドレスの登録を行う。そして、当該ページの排他処理を行う。ページの排他処理は、キャッシュ構成情報のページ情報の排他情報にロックを設定することで行われる。
【０１５９】
つづいて、コントローラ０は、コントローラ０、１、３におけるキャッシュサーチとページロックの完了を待って、コントローラ１、３に、キャッシュ構成情報のアンロック（ＵＮＬＯＣＫ；ロック解除）を指示し、コントローラ０と、コントローラ０からキャッシュ構成情報のＵＮＬＯＣＫの指示を受けたコントローラ１、３は、それぞれのキャッシュ構成情報をアンロックする。
【０１６０】
コントローラ０のコマンド処理部は、ホストインタフェースからＷｒｉｔｅデータを受け取り、コントローラ１、３に対して、Ｗｒｉｔｅデータを転送し、コントローラ０、１、３におけるＷｒｉｔｅデータのキャッシュページへの書き込み完了応答を待ち合わせる。
【０１６１】
コントローラ０、１、３のＷｒｉｔｅデータのキャッシュメモリの該当ページへの書き込みが完了すると、コントローラ０は、Ｗｒｉｔｅコマンドに対する応答として、書き込みの状態（Ｗｒｉｔｅ  Ｓｔａｔｅ）を、ホストインターフェースを介してホストに返す。
【０１６２】
次に、コントローラ０は、コントーラ１、３に対して、キャッシュ構成情報の排他処理（ＬＯＣＫ）を指示し、各コントローラ０、１、３は、それぞれのキャッシュ構成情報（図４参照）をロック（ＬＯＣＫ）する。
【０１６３】
コントローラ０は、各コントローラ０、１、３におけるキャッシュ構成情報のロックが完了すると、キャッシュサーチとページのアンロックを行い、また、コントローラ０からのアンロックの指示を受けて、コントローラ１、３もキャッシュページのアンロックを行う。
【０１６４】
コントローラ０、１、３におけるキャッシュ構成情報のアンロック後、コントローラ０、１、３はキャッシュ構成情報をアンロック（ＵＮＬＯＣＫ）する。
【０１６５】
図１０は、コントローラ０−３として、図８に示した本実施例のコントローラ０−３を備えた場合のライトアクセスの制御の一例を示すシーケンス図である。なお、各コントローラでは、キャッシュメモリの部分領域のマスタのコントローラが何れのコントローラであるかを示す装置構成情報（図８の５１１）と、キャッシュメモリの該領域がどのコントローラで冗長化されているかを示すキャッシュ構成情報（図８の５０８）に関して、各コントローラは、同一の内容を参照することができる構成とされている。なお、図１０に示す本実施例では、コントローラ０、１、３は三重冗長セットを構成しており、例えばコントローラ０へライト（Ｗｒｉｔｅ）コマンドに対して、コントローラ０、１、３のキャッシュメモリへデータの冗長書き込みが行われる。
【０１６６】
コントローラ０のコマンド処理部は、ホストコンピュータからのライト（Ｗｒｉｔｅ）コマンドを受信し、装置構成情報（図８の５１１）から、ＷｒｉｔｅコマンドのＷｒｉｔｅデータの格納用のキャッシュメモリ上での該当領域の排他処理を行うためのマスタのコントローラを決定する。この場合、キャッシュメモリ上での該当ページのマスタはコントローラ１であることが判明する。
【０１６７】
コントローラ０は、マスタであるコントローラ１に対して、キャッシュサーチ指示を送信し、該ページの排他処理の依頼を送信する。この依頼を受けたコントローラ１のプロセッサは、まず、キャッシュ構成情報をロック（ＬＯＣＫ）し、キャッシュサーチ及びページのロックを行い、つづいて、キャッシュ構成情報をアンロック（ＵＮＬＯＣＫ）する。その際、キャッシュサーチにおいて、指定されたページ領域が既にマスタコントローラ１のキャッシュメモリ上に存在する場合、他のアクセス要求で排他されているか否かを確認し、確認の結果、該ページ領域が他のアクセス要求によって排他されていれば、該排他が終了するまで待ち、一方、該ページ領域が他のアクセス要求で排他されていなければ、排他処理を行う。また、マスタコントローラ１において、指定されたページ領域がキャッシュメモリ上に用意されていず（ミスヒット）、新たに確保すべきである場合、新たにページ領域を確保してページのロックを行い、キャッシュ構成情報をアンロック（ＵＮＬＯＣＫ）し、当該ページ領域のマスタであるコントローラ１は、キャッシュサーチが完了したことを、コントローラ０に通知する。なお、各コントローラにおける、これらの排他処理、及び通信処理は、各コントローラのプロセッサ、通信制御部、相互通信網等を通して行われる。
【０１６８】
次に、コントローラ０は、該ライト要求で冗長化すべきキャッシュメモリを持つ冗長先コントローラ０と３を決定し、この場合、冗長先のコントローラ３に対して、ライト要求で冗長化を行うための領域の排他処理（キャッシュサーチ指示）の依頼を送信する。
【０１６９】
それぞれのコントローラ０、１、３では、キャッシュ構成情報を一旦、排他処理（ロック）を行う。この場合、該ページ領域が他で排他されていれば、解除されるまで待った後に排他処理を行い、他で排他されていなければ、ロックを行い、キャッシュ構成情報のアンロックを行う。また、該ページ領域が新たなものであれば、新たに確保して排他処理を行う。コントローラ１、３は、キャッシュサーチとページのロック、及びキャッシュ構成情報のアンロック（ＵＮＬＯＣＫ）が完了したことをコントローラ０に通知する。
【０１７０】
コントローラ０は、冗長化のための領域の排他処理の依頼の送信先のコントローラ３からの完了の応答（報告）を待ち合わせる。すなわち、コントローラ０での冗長化のための領域の排他処理が完了しても、冗長先の他のコントローラ３からの排他処理の完了の応答（報告）を受けるまで、次に進まない。
【０１７１】
そして、冗長先の他のコントローラ３からの完了の応答を受信すると、コントローラ０は、コントローラ０のキャッシュメモリの該当ページ領域に、ホストから受けたライトデータの書き込みを行う。また、コントローラ０は、通信制御部５０５、相互接続網５０４を介して、コントローラ１、３に、ホストから受けたライトデータを転送し、コントローラ１、３のキャッシュメモリの該当ページ領域に、ホストから受けたライトデータの書き込みを行う。ライトデータに対する複数のコントローラに対する冗長化を実現する。なお、冗長化は三重に制限されるものでなく二重化であってもよい。
【０１７２】
コントローラ０、１、３のＷｒｉｔｅデータの書き込みが完了すると、コントローラ０は、書き込み結果（Ｗｒｉｔｅ  Ｓｔａｔｅ）をホストに返し、コントローラ０、１、３のそれぞれも、キャッシュ構成情報のロック（ＬＯＣＫ）を行い、当該キャッシュページのロックを解除し（ＵＮＬＯＣＫ）した後、キャッシュ構成情報をアンロックする。なお、各コントローラのキャッシュメモリに書き込まれたライトデータは、例えばライトバック方式等で、適宜、対応するディスク装置（ストレージ）に書き込まれる。
【０１７３】
本実施例によれば、マスタのコントローラでキャッシュ・ページの排他制御を行い、その後、冗長化が行われているコントローラのキャッシュメモリ上のページにアクセスを行うため、同一ページにリード／ライトを行う後続のコマンドは、該当ページの排他の解除待ちになり、該当ページのデータに対する一貫性が保証される。これに対して、比較例の図９のシーケンス図の場合、かかる制御は行われていない。
【０１７４】
また、図１０のシーケンス図と、比較例の図９のシーケンス図とから分かるように、本発明によれば、コントローラ間の指示（コマンド）、応答（報告）のやり取りを大幅に縮減している。
【０１７５】
また上記実施例では、キャッシュメモリの管理単位の領域としてページ単位に管理する例を説明したが、本発明はかかる構成に限定されるものでないことは勿論である。
【０１７６】
以上、本発明を上記実施例に即して説明したが、本発明は上記実施例の構成にのみに制限されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図面の簡単な説明】
【０１７７】
【図１】本発明の一実施例のコントローラの構成を示すブロック図である。
【図２】本発明の一実施例のシステム構成（コントローラ２台）を示す図である。
【図３】本発明の一実施例における装置構成情報の内容を示す図である。
【図４】本発明の一実施例におけるキャッシュ構成情報を示す図である。
【図５】本発明の一実施例の動作を説明するためのフローチャートである。
【図６】本発明の一実施例において自コントローラのサーチ処理を説明するためのフローチャートである。
【図７】本発明の一実施例において他コントローラのサーチ処理を説明するためのフローチャートである。
【図８】本発明の他の実施例のシステム構成（コントローラ４台）を示す図である。
【図９】比較例の動作の一例を説明するシーケンス図である。
【図１０】本発明の他の実施例の動作の一例を説明するシーケンス図である。
【符号の説明】
【０１７８】
１０１  コントローラ
１０２  ホストインターフェイス
１０３  コマンド処理部
１０４  接続インターフェイス
１０５  通信制御部
１０６  ディスクインターフェイス
１０７  ディスク制御部
１０８  キャッシュ構成情報
１０９  キャッシュメモリ
１１０  プロセッサ
１１１  装置構成情報
２０１ａ、２０１ｂ、５０１ａ、５０１ｂ、５０１ｃ、５０１ｄ  コントローラ
２０２ａ、２０２ｂ、５０２  ホストインターフェイス
２０３ａ、２０３ｂ、５０３  コマンド処理部
２０４  接続インターフェイス
２０５ａ、２０５ｂ、５０５  通信制御部
２０６ａ、２０６ｂ、５０６  ディスクインターフェイス
２０７ａ、２０７ｂ、５０７  ディスク制御部
２０８ａ、２０８ｂ、５０８  キャッシュ構成情報
２０９ａ、２０９ｂ、５０９  キャッシュメモリ
２１０ａ、２１０ｂ、５１０  プロセッサ
２１１ａ、２１１ｂ、５１１  装置構成情報
２１２ａ、２１２ｂ、５１２ａ、５１２ｂ、５１２ｃ、５１２ｄ  磁気ディスク装置
２１３ａ、２１３ｂ  ディスクインターフェイス
３０１  領域情報
３０２  マスタのコントローラ番号
４０１  ハッシュテーブル
４０２  ページタグ
４０３  ポインタ
４０４  ページ識別子
４０５  ページ情報
４０６  ページアドレス
５０４  相互接続網
【図１】
2008047029.tif 000003
【図２】
2008047029.tif 000004
【図３】
2008047029.tif 000005
【図４】
2008047029.tif 000006
【図５】
2008047029.tif 000007
【図６】
2008047029.tif 000008
【図７】
2008047029.tif 000009
【図８】
2008047029.tif 000010
【図９】
2008047029.tif 000011
【図１０】
2008047029.tif 000012