(57)【要約】【課題】ストレージシステムの動作を高速化しながら、多数のホスト計算機を接続してもキャッシュメモリをあまり大きくせず、データ２重化を容易にすること。【解決手段】チャネルアダプタ１０ａ〜１０ｄ、ディスクドライブ群１５ａ〜１５ｄ、ディスクアダプタ１３ａ〜１３ｄ、ネットワークスイッチ１２ａ及び１２ｂを備え、チャネルアダプタ１０ａ〜１０ｄに接続するフロントサイドキャッシュ１１ａ〜１１ｄ、ディスクアダプタ１３ａ〜１３ｄに接続するバックサイドキャッシュ１４ａ〜１４ｄの２階層のキャッシュメモリを持つ。データの書き込みを要求されたとき、フロントサイドキャッシュ１１ａ〜１１ｄとバックサイドキャッシュ１４ａ〜１４ｄの両方に書く。書き込みデータはフロントサイドキャッシュ１１ａ〜１１ｄの一つとバックサイドキャッシュ１４ａ〜１４ｄの一つ又はバックサイドキャッシュ１４ａ〜１４ｄの二つに置くことで２重化される。【選択図】図１
2005258918.tif 000002
【特許請求の範囲】
【請求項１】
上位装置と接続する複数のチャネルアダプタと、
前記チャネルアダプタごとに接続して前記上位装置が読み書きするデータを一時的に蓄える第１のキャッシュメモリと、
複数のディスクドライブと、
前記ディスクドライブに接続する１または複数のディスクアダプタと、
前記ディスクアダプタごとに接続して前記ディスクドライブに読み書きされるデータを一時的に蓄える第２のキャッシュメモリと、
前記チャネルアダプタと前記ディスクアダプタの間を接続する１または複数のネットワークと、を備える
ことを特徴とするストレージシステム。
【請求項２】
上位装置と接続する複数のチャネルアダプタと、
前記チャネルアダプタごとに接続して前記上位装置が読み書きするデータを一時的に蓄える第１のキャッシュメモリと、
複数のディスクドライブと、
前記ディスクドライブに接続する１または複数のディスクアダプタと、
前記ディスクドライブに読み書きされるデータを一時的に蓄える１または複数の第２のキャッシュメモリと、
前記チャネルアダプタと前記ディスクアダプタと前記第２のキャッシュメモリの間を互いに接続する１または複数のネットワークと、を備える
ことを特徴とするストレージシステム。
【請求項３】
上位装置と接続する複数のチャネルアダプタと、
前記チャネルアダプタごとに接続して前記上位装置が読み書きするデータを一時的に蓄える第１のキャッシュメモリと、
複数のディスクドライブと、
前記ディスクドライブに接続する１または複数のディスクアダプタと、
前記ディスクドライブに読み書きされるデータを一時的に蓄える１または複数の第２のキャッシュメモリと、
前記チャネルアダプタおよび前記ディスクアダプタの制御を行う１または複数の統合制御部と、
前記統合制御部が、前記チャネルアダプタ、前記ディスクアダプタ、前記第２のキャッシュメモリを制御できるように互いを接続する１または複数のネットワークと、を備える
ことを特徴とするストレージシステム。
【請求項４】
請求項１又は２において、
前記前記チャネルアダプタと前記ディスクアダプタは、前記読み書きの制御を行うプロセッサをそれぞれ有することを特徴とするストレージシステム。
【請求項５】
請求項３において、
前記統合制御部は、前記読み書きの制御を行うプロセッサを有することを特徴とするストレージシステム。
【請求項６】
請求項１又は２又は３において、
前記上位装置から書き込みされるデータは、前記第１のキャッシュメモリと前記第２のキャッシュメモリとに２重化して書き込まれる
ことを特徴とするストレージシステム。
【請求項７】
請求項１又は２又は３において、
前記上位装置から書き込みされるデータは、前記第２のキャッシュメモリの内の２個のキャッシュメモリに２重化して書き込まれる
ことを特徴とするストレージシステム。
【請求項８】
請求項７において、
前記上位装置から書き込みされるデータは、前記第２のキャッシュメモリの内の２個のキャッシュメモリに書き込まれるとともに、前記第１のキャッシュメモリにも書き込まれる
ことを特徴とするストレージシステム。
【請求項９】
請求項６において、
前記チャネルアダプタは、前記上位装置から読み書きされるデータがどのディスクアダプタに接続されたディスクドライブのデータであるかを決定するディスクアダプタ決定部を有する
ことを特徴とするストレージシステム。
【請求項１０】
上位装置と接続する複数のチャネルアダプタと、
前記チャネルアダプタごとに接続して前記上位装置が読み書きするデータを一時的に蓄える第１のキャッシュメモリと、
複数のディスクドライブと、
前記ディスクドライブに接続する１または複数のディスクアダプタと、
前記ディスクアダプタごとに接続して前記ディスクドライブに読み書きされるデータを一時的に蓄える第２のキャッシュメモリと、
前記チャネルアダプタと前記ディスクアダプタの間を接続する１または複数のネットワークと、を備えるストレージシステムであって、
前記チャネルアダプタは、前記上位装置から書き込みされるデータがどのディスクアダプタに接続されたディスクドライブのデータであるかを決定するディスクアダプタ決定部を有し、
前記チャネルアダプタのディスクアダプタ決定部は、前記上位装置から書き込みされるデータが前記第２のキャッシュメモリの内の２個のキャッシュメモリに２重化して書き込まれるように、ディスクドライブに接続する主となるディスクアダプタを決定する主ディスクアダプタ決定部と、第２個目の前記第２のキャッシュメモリに接続する副ディスクアダプタ決定部と、を有する
ことを特徴とするストレージシステム。
【請求項１１】
上位装置と接続する複数のチャネルアダプタと、
前記チャネルアダプタごとに接続して前記上位装置が読み書きするデータを一時的に蓄える第１のキャッシュメモリと、
複数のディスクドライブと、
前記ディスクドライブに接続する１または複数のディスクアダプタと、
前記ディスクドライブに読み書きされるデータを一時的に蓄える１または複数の第２のキャッシュメモリと、
前記チャネルアダプタと前記ディスクアダプタと前記第２のキャッシュメモリの間を互いに接続する１または複数のネットワークと、を備えるストレージシステムであって、
前記チャネルアダプタは、前記上位装置から書き込みされるデータがどのディスクアダプタに接続されたディスクドライブのデータであるかを決定するディスクアダプタ決定部を有し、
前記チャネルアダプタのディスクアダプタ決定部は、前記上位装置から書き込みされるデータが前記第２のキャッシュメモリの内の２個のキャッシュメモリに２重化して書き込まれるように、ディスクドライブに接続する主となるディスクアダプタを決定する主ディスクアダプタ決定部と、第２個目の前記第２のキャッシュメモリに接続する副ディスクアダプタ決定部と、を有する
ことを特徴とするストレージシステム。
【請求項１２】
上位装置と接続する複数のチャネルアダプタと、
前記チャネルアダプタごとに接続して前記上位装置が読み書きするデータを一時的に蓄える第１のキャッシュメモリと、
複数のディスクドライブと、
前記ディスクドライブに接続する１または複数のディスクアダプタと、
前記ディスクドライブに読み書きされるデータを一時的に蓄える１または複数の第２のキャッシュメモリと、
前記チャネルアダプタおよび前記ディスクアダプタの制御を行う１または複数の統合制御部と、
前記統合制御部が、前記チャネルアダプタ、前記ディスクアダプタ、前記第２のキャッシュメモリを制御できるように互いを接続する１または複数のネットワークと、を備えるストレージシステムであって、
前記統合制御部は、前記上位装置から書き込みされるデータがどのディスクアダプタに接続されたディスクドライブのデータであるかを決定するディスクアダプタ決定部を有し、
前記統合制御部のディスクアダプタ決定部は、前記上位装置から書き込みされるデータが前記第２のキャッシュメモリの内の２個のキャッシュメモリに２重化して書き込まれるように、ディスクドライブに接続する主となるディスクアダプタを決定する主ディスクアダプタ決定部と、第２個目の前記第２のキャッシュメモリに接続する副ディスクアダプタ決定部と、を有する
ことを特徴とするストレージシステム。
【請求項１３】
請求項９において、
前記ディスクアダプタは、前記ディスクドライブとの間で読み書きするデータをどのチャネルアダプタに送付したかを記録する送付先チャネルアダプタ記録部を有する
ことを特徴とするストレージシステム。
【請求項１４】
請求項１３において、
前記ディスクアダプタは、前記上位装置から書き込みされたデータが前記第２のキャッシュメモリより前記ディスクドライブに書き込まれたことを、前記送付先チャネルアダプタ記録部により記録された前記チャネルアダプタに通知する書き込み完了通知部を備え、
前記チャネルアダプタは、前記書き込み完了通知部により前記ディスクドライブへ書き込まれたことが通知されるまで、前記上位装置から書き込まれたデータを前記第１のキャッシュメモリに保持する
ことを特徴とするストレージシステム。
【請求項１５】
請求項１０又は１１において、
前記主となるディスクアダプタは、前記ディスクドライブとの間で読み書きするデータをどのチャネルアダプタに送付したかを記録する送付先チャネルアダプタ記録部を有する
ことを特徴とするストレージシステム。
【請求項１６】
上位装置から読み書きされるデータを一時的に蓄える１または複数の第１のキャッシュメモリと、１または複数のディスクドライブと、前記ディスクドライブに読み書きされるデータを一時的に蓄える１または複数の第２のキャッシュメモリと、を備えるストレージシステムのキャッシュメモリを制御するキャッシュメモリ制御方法であって、
前記上位装置からの書き込みデータを前記第１のキャッシュメモリに書き込むとともに前記第２のキャッシュメモリに書き込み、
前記書き込まれた第１のキャッシュメモリ以外の他の第１のキャッシュメモリに前記書き込みデータ以前の旧データがあれば、前記第２のキャッシュメモリに書き込まれたデータを前記他の第１のキャッシュメモリに送付して更新し、
前記第２のキャッシュメモリから前記ディスクドライブに前記書き込みデータを書き込むまで前記第１のキャッシュメモリに書き込まれた前記書き込みデータを保持する
ことを特徴とするキャッシュメモリ制御方法。
【請求項１７】
請求項１６において、
前記第２のキャッシュメモリから前記ディスクドライブに新たに書き込まれたデータを書き戻すまで、前記第１のキャッシュメモリに書き込まれた前記書き込みデータの最新の一つのみを保持し、
前記他の第１のキャッシュメモリの前記書き込みデータは任意に破棄する
ことを特徴とするキャッシュメモリ制御方法。
【請求項１８】
上位装置から読み書きされるデータを一時的に蓄える１または複数の第１のキャッシュメモリと、１または複数のディスクドライブと、前記ディスクドライブに読み書きされるデータを一時的に蓄える１または複数の第２のキャッシュメモリと、を備えるストレージシステムのキャッシュメモリを制御するキャッシュメモリ制御方法であって、
前記上位装置からの書き込みデータを前記第１のキャッシュメモリに書き込むとともに前記第２のキャッシュメモリに書き込み、
前記書き込まれた第１のキャッシュメモリ以外の他の第１のキャッシュメモリに前記書き込みデータ以前の旧データがあれば、前記旧データを削除して無効化し、
前記第２のキャッシュメモリから前記ディスクドライブに前記書き込みデータを書き込むまで前記第１のキャッシュメモリに書き込まれた前記書き込みデータを保持する
ことを特徴とするキャッシュメモリ制御方法。
【請求項１９】
上位装置から読み書きされるデータを一時的に蓄える１または複数の第１のキャッシュメモリと、１または複数のディスクドライブと、前記ディスクドライブに読み書きされるデータを一時的に蓄える１または複数の第２のキャッシュメモリと、を備えるストレージシステムのキャッシュメモリを制御するキャッシュメモリ制御方法であって、
前記上位装置からの書き込みデータを、前記第１のキャッシュメモリに書き込むとともに、前記第２のキャッシュメモリのうちの２個の第２のキャッシュメモリに書き込み、
前記書き込まれた第１のキャッシュメモリ以外の他の第１のキャッシュメモリに前記書き込みデータ以前の旧データがあれば、前記第２のキャッシュメモリに書き込まれたデータを前記他の第１のキャッシュメモリに送付して更新する
ことを特徴とするキャッシュメモリ制御方法。
【請求項２０】
上位装置から読み書きされるデータを一時的に蓄える１または複数の第１のキャッシュメモリと、１または複数のディスクドライブと、前記ディスクドライブに読み書きされるデータを一時的に蓄える１または複数の第２のキャッシュメモリと、を備えるストレージシステムのキャッシュメモリを制御するキャッシュメモリ制御方法であって、
前記上位装置からの書き込みデータを、前記第１のキャッシュメモリに書き込むとともに、前記第２のキャッシュメモリのうちの２個の第２のキャッシュメモリに書き込み、
前記書き込まれた第１のキャッシュメモリ以外の他の第１のキャッシュメモリに前記書き込みデータ以前の旧データがあれば、前記旧データを破棄して無効化する
ことを特徴とするキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクドライブを備えるストレージシステムに係り、特にストレージシステムのキャッシュ制御方法に関する。
【背景技術】
【０００２】
従来、ディスクドライブを備えるストレージシステム、または特に複数のディスクドライブを備えるディスクアレイ装置は、上位装置（ホスト計算機）からのデータの入出力動作を高速化するため、ストレージシステムやディスクアレイ装置内にディスクドライブより格段に高速な半導体メモリにより構成されるキャッシュメモリを備え、ホスト計算機から読み書きされるデータを一時的に蓄えることが行われてきた。例えば特許文献１にはこのような技術が開示されている。
【０００３】
上記特許文献１に示すような技術においては、キャッシュメモリの制御を容易にし、複数のホスト計算機との間でキャッシュメモリの共有化を行うため、キャッシュメモリに格納するデータは特に書き込みデータについて、ディスクドライブに対応する形で管理・制御されていた。即ち、キャッシュメモリ上のデータはどのディスクドライブのどの位置から読み書きされているかが記録され、もし複数のホスト計算機が同一のディスクドライブのデータを読み書きした場合には、同一のキャッシュメモリが共有されてキャッシュメモリ上の同一の領域を用いるように制御されていた。
【０００４】
また、従来技術として、特許文献２には、キャッシュメモリをホスト計算機対応に制御し、共有ネットワークをキャッシュメモリとディスクドライブの間においた構成のストレージシステムの例が開示されている。この特許文献２の技術によると、ホスト計算機から見た動作は、共有ネットワークの通過時間がなく、仮想的なボリュームを物理的なディスクドライブに変換しなくともキャッシュメモリをアクセスできるため、高速化することが可能である。
【０００５】
また、ストレージシステムを階層化する従来技術が、例えば特許文献３または特許文献４に開示されている。
【特許文献１】特開平１１−２０３２０１号公報
【特許文献２】特開２００３−３４５５２０
【特許文献３】特開平１０−６３５７６号公報
【特許文献４】特開平７−２００１８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記の特許文献１に示すようなシステムにおいては、特に書き込みデータに関して、当該ストレージ内のすべてのキャッシュメモリを、当該ストレージシステムに接続するすべてのホスト計算機から物理的に共有可能とする必要があるため、ホスト計算機と接続するホストインターフェース部と、キャッシュメモリとの間になんらかの共有ネットワークが備えられている。このため、ホスト計算機から見るとキャッシュメモリとのデータのやり取りは共有ネットワークを通過するための通過時間が必要であり、高速化に限界がある。
【０００７】
さらに、ホスト計算機に対してはディスクドライブを仮想化し、仮想的なボリュームを見せ、ストレージシステム内において、この仮想的なボリュームを物理的なディスクドライブに変換することも行われる場合も多い。このとき、キャッシュメモリをアクセスするためには、仮想的なボリュームを物理的なディスクドライブに変換した後、そのディスクドライブに対応するキャッシュメモリをアクセスする必要があるため、変換処理の時間がかかり、さらに高速化が困難である。
【０００８】
また、上記の特許文献２に開示されているように、多数のホスト計算機の接続を可能とすると、キャッシュメモリが異なるホスト計算機の間で共有されずその都度別個に設けなければならないので、キャッシュメモリが物理的に大量に必要である。さらには、信頼性を向上させるため、ホスト計算機から書き込んだデータをキャッシュメモリの別々の２箇所で２重化しようとすると、さらに２倍キャッシュメモリを設けるか、それぞれ２台程度ずつのホスト計算機で共有させて用いる複雑な制御を行うなど、簡単に実現することができない。
【０００９】
さらに、上記の特許文献３または特許文献４の開示技術は、上位階層のキャッシュメモリと下位階層のキャッシュメモリのコヒーレンス制御を簡単化するために、ホスト計算機に接続される上位階層キャッシュメモリが単一の構成であり、このため、多数のホスト計算機を接続しようとすると、上位階層の構成が巨大化し、上位階層のキャッシュメモリを極大にしなければならず、コスト低減や性能向上が困難である。
【００１０】
本発明が解決しようとする課題は、ホスト計算機からみた動作を高速化しながら、多数のホスト計算機を接続してもキャッシュメモリをあまり大きくさせず、信頼性向上のための２重化も容易にするストレージシステムを提供することにある。
【課題を解決するための手段】
【００１１】
前記課題を解決するために、本発明は主として次のような構成を採用する。  
上位装置と接続する複数のチャネルアダプタと、
前記チャネルアダプタごとに接続して前記上位装置が読み書きするデータを一時的に蓄える第１のキャッシュメモリと、
複数のディスクドライブと、
前記ディスクドライブに接続する１または複数のディスクアダプタと、
前記ディスクアダプタごとに接続して前記ディスクドライブに読み書きされるデータを一時的に蓄える１または複数の第２のキャッシュメモリと、
前記チャネルアダプタと前記ディスクアダプタの間を接続する１または複数のネットワークと、を備えるストレージシステム。
【００１２】
また、前記ストレージシステムにおいて、前記上位装置から書き込みされるデータは、前記第１のキャッシュメモリと前記第２のキャッシュメモリとに２重化して書き込まれるストレージシステム。
【００１３】
また、前記第２のキャッシュメモリのうちの２個の第２のキャッシュメモリにより２重化するストレージシステム。
【００１４】
また、上位装置から読み書きされるデータを一時的に蓄える１または複数の第１のキャッシュメモリと、１または複数のディスクドライブと、前記ディスクドライブに読み書きされるデータを一時的に蓄える１または複数の第２のキャッシュメモリと、を備えるストレージシステムのキャッシュメモリを制御するキャッシュメモリ制御方法であって、
前記上位装置からの書き込みデータを前記第１のキャッシュメモリに書き込むとともに前記第２のキャッシュメモリに書き込み、
前記書き込まれた第１のキャッシュメモリ以外の他の第１のキャッシュメモリに前記書き込みデータ以前の旧データがあれば、前記第２のキャッシュメモリに書き込まれたデータを前記他の第１のキャッシュメモリに送付して更新し、
前記第２のキャッシュメモリから前記ディスクドライブに前記書き込みデータを書き込むまで前記第１のキャッシュメモリに書き込まれた前記書き込みデータを保持するキャッシュメモリ制御方法。
【発明の効果】
【００１５】
本発明によれば、第１のキャッシュメモリを用いてホスト計算機に対するレスポンス性能を向上しながら、第２のキャッシュメモリを複数のホスト計算機に共有させることでストレージシステムのコストを低減し、第２のキャッシュメモリを用いた２重化により信頼性も向上させることができる。
【発明を実施するための最良の形態】
【００１６】
本発明のストレージシステムに係る実施の形態について、実施例１〜実施例４を例示し図面を参照しながら以下詳細に説明する。本発明のストレージシステムに係る実施の形態の概要は、第１のキャッシュメモリとしてフロントサイドキャッシュ、第２のキャッシュメモリとしてバックサイドキャッシュの２種類のキャッシュメモリを備えることを特徴とする。さらに、ストレージシステムのキャッシュを制御する制御方法としては、この２種類のキャッシュメモリを連携させた制御方法が特徴である。なお、以下の説明は、本発明のストレージシステムに係る実施の形態における実施例を示すものであり、本発明は、この実施例に限るものでなく、本発明の具備する技術的思想の範囲内のものを含むものである。
【実施例１】
【００１７】
図１は、本発明のストレージシステムに係る実施例１の全体構成を示すブロック図である。図１において、ストレージシステム１は、ホスト計算機と接続して接続制御を行うチャネルアダプタ１０ａ〜１０ｄ、ディスクドライブ群１５ａ〜１５ｄ、ディスクドライブ群１５ａ〜１５ｄに接続しディスクドライブへの読み書きの制御を行うディスクアダプタ１３ａ〜１３ｄ、チャネルアダプタ１０ａ〜１０ｄとディスクアダプタ１３ａ〜１３ｄを接続するネットワークスイッチ１２ａ及び１２ｂ、を含む。さらに、ストレージシステム１は、チャネルアダプタ１０ａ〜１０ｄのそれぞれに第１の種類のキャッシュメモリであるフロントサイドキャッシュ１１ａ〜１１ｄ、ディスクアダプタ１３ａ〜１３ｄのそれぞれに接続する第２の種類のキャッシュメモリであるバックサイドキャッシュ１４ａ〜１４ｄ、を備える。なお、ホスト計算機は、図１に示すチャネルアダプタと１対１の接続関係であってもよく、また任意のネットワークを通じてどのチャネルアダプタにも接続可能であっても良い。
【００１８】
ストレージシステム１は、ホスト計算機からデータの読み書きの要求をチャネルアダプタ１０ａ〜１０ｄにて受信すると、まず読み出し要求の場合には、それぞれに接続されたフロントサイドキャッシュ１１ａ〜１１ｄを検索し、当該データが格納されていないかどうか調べる。もし当該データが格納されていれば、当該データをフロントサイドキャッシュ１１ａ〜１１ｄの該当する位置より読み出してホスト計算機に返送する。もし当該データが格納されていない場合には、当該データを格納しているべきディスクドライブに接続し制御しているディスクアダプタ１３ａ〜１３ｄを特定し、読み出し要求を当該ディスクアダプタに送付する。当該ディスクアダプタでは、まずそれぞれに接続されているバックサイドキャッシュ１４ａ〜１４ｄを検索し、要求されたデータが格納されていないかどうか調べる。
【００１９】
もし当該データがバックサイドキャッシュに格納されていれば、これを読み出してチャネルアダプタに返送する。もし当該データがバックサイドキャッシュにも格納されていない場合には、当該データが格納されているディスクドライブとその位置を特定し、当該ディスクドライブからデータを読み出して、バックサイドキャッシュに格納する。さらに当該データをチャネルアダプタに返送する。チャネルアダプタでは、ディスクアダプタより送付されてきたデータをフロントサイドキャッシュに書き込むと共に、ホスト計算機に返送する。
【００２０】
また、書き込みの場合には、まずチャネルアダプタにおいて、ホスト計算機より新たな書き込みデータを受信し、フロントサイドキャッシュ上にまず保持する。次に当該データが記録されるべきディスクドライブを制御しているディスクアダプタ１３ａ〜１３ｄを特定し、新しい書き込みデータを当該ディスクアダプタに送付して、それに接続するバックサイドキャッシュ１４ａ〜１４ｄに書き込ませる。バックサイドキャッシュ１４ａ〜１４ｄに書き込まれた新しい書き込みデータは、後述する方法により然るべき契機でディスクドライブ群１５ａ〜１５ｄに書き込まれる。
【００２１】
またチャネルアダプタでは、新しく書き込まれたデータに対応する書き込み前の旧データがフロントサイドキャッシュに格納されていないかどうか検索し、もし格納されていれば、新たに保持した新しい書き込みデータでそれを置き換える。もし格納されていなければ、新しい書き込みデータを当該データの最新値として登録する。
【００２２】
以上のような動作は、チャネルアダプタ１０ａ〜１０ｄ、ディスクアダプタ１３ａ〜１３ｄがそれぞれ制御機能を備えることにより実現される。より詳細には、チャネルアダプタ１０ａ〜１０ｄ、ディスクアダプタ１３ａ〜１３ｄがそれぞれプロセッサを備え、ソフトウェアのプログラムを搭載して制御してもよい。
【００２３】
図２は、本発明のストレージシステムに係る実施例１におけるチャネルアダプタ１０ａ〜１０ｄがプロセッサを備えた構成である例を示した図である。チャネルアダプタ１０ａ〜１０ｄは、それぞれ図示するように、プロセッサ２０１とローカルメモリ２０２、ホスト計算機と接続するホストＩ／Ｆ回路２０４、ネットワークスイッチ１２ａ及び１２ｂに接続するネットワーク接続回路２０３ａ及び２０３ｂ、を持つ。図２では、プロセッサ２０１、ローカルメモリ２０２、ホストＩ／Ｆ回路２０４、ネットワーク接続回路２０３ａ及び２０３ｂ、をプロセッサバス２０５で接続する構成を採る。更にフロントサイドキャッシュ１１ａ〜１１ｄもプロセッサバス２０５に接続される。
【００２４】
プロセッサバス２０５は、同時に一つのデータ送受しか行えないバスのほかに、送受元が異なれば同時に複数のデータ送受が可能であるスイッチで構成してもよい。ローカルメモリ２０２は、プロセッサ２０１で動作するプログラムを格納するほかに、ホストＩ／Ｆ回路２０４により送受するホストへの制御コマンドを一時的に格納したり、ネットワーク接続回路２０３ａ及び２０３ｂを通してディスクアダプタ１３ａ〜１３ｄと送受する制御情報の一時的な格納に用いることができる。
【００２５】
図３は、本発明のストレージシステムに係る実施例１におけるディスクアダプタ１３ａ〜１３ｄがプロセッサを備えた構成である例を示した図である。ディスクアダプタ１３ａ〜１３ｄは、それぞれ図示するように、プロセッサ２１１とローカルメモリ２１２、ディスクドライブ群１５ａ〜１５ｄに接続するディスクドライブＩ／Ｆ回路２１４、ネットワークスイッチ１２ａ及び１２ｂに接続するネットワーク接続回路２１３ａ及び２１３ｂ、を持つ。図３では、プロセッサ２１１、ローカルメモリ２１２、ディスクドライブＩ／Ｆ回路２１４、ネットワーク接続回路２１３ａ及び２１３ｂをプロセッサバス２１５で接続する構成を採る。更にバックサイドキャッシュ１４ａ〜１４ｄもプロセッサバス２１５に接続される。
【００２６】
プロセッサバス２１５は、同様に、同時に一つのデータ送受しか行えないバスのほかに、送受元が異なれば同時に複数のデータ送受が可能であるスイッチで構成してもよい。ローカルメモリ２１２も同じく、プロセッサ２１１で動作するプログラムを格納するほかに、ディスクドライブＩ／Ｆ回路２１４により送受するディスクドライブへの制御コマンドを一時的に格納したり、ネットワーク接続回路２１３ａ及び２１３ｂを通してチャネルアダプタ１１ａ〜１１ｄと送受する制御情報の一時的な格納に用いることができる。なお、図２と図３のチャネルアダプタとディスクアダプタは後述する本発明の実施例２にも適用できるものである。
【００２７】
フロントサイドキャッシュ１１ａ〜１１ｄには、読み書きされるデータ自体に加えて、どのホスト計算機のどの論理ボリュームのどの位置のデータであったかを記録しておく必要がある。図４はそのためのデータ構造の例を示す図である。ここで論理ボリュームとは、ストレージシステムがホスト計算機に仮想的に提供する記憶領域である。ストレージシステムは、自身が有するディスクドライブが有する物理的な記憶領域を用いて論理ボリュームを構成する。図１のようなストレージシステム１において、データの入出力はある一定のまとまり（ブロック）を単位として行われるので、図４におけるデータ構造もブロック単位に構成することができる。すなわち、図４において、データ構造は、データが有効であることを示すマーク情報Ｖ、ホスト計算機を識別するためのホストＩＤ、論理ボリュームを識別するための論理ボリューム番号ＬＵＮ、論理ボリュームの中でブロックを識別する論理ブロックアドレス、及びブロックデータの組で構成されている。
【００２８】
ホスト計算機はストレージシステム１に対して論理ボリューム番号ＬＵＮと論理ブロックアドレスで読み書きするデータを特定してくるので、チャネルアダプタ１１ａ〜１１ｄのプロセッサ２０１による制御によって、あるホスト計算機からの要求に対し、要求元のホスト計算機を識別するホストＩＤを付加するだけで、フロントサイドキャッシュ１１ａ〜１１ｄ内の図４のようなデータ構造を検索してデータのあるなしを求めることができる。ホスト計算機からもたらされた要求に含まれる情報をなんら変換処理を行うことなく用いることが可能であるので、処理を高速化することができる。ホストＩＤについては、通常はホスト計算機をストレージシステム１に接続する時にストレージシステム１によってそれぞれのホスト計算機ごとに付与されるので、これをチャネルアダプタ１０ａ〜１０ｄごとに記録して管理しておくことができる。
【００２９】
ホスト計算機より要求されたデータがフロントサイドキャッシュ１１ａ〜１１ｄに存在しないときは、データ要求をディスクアダプタ１３ａ〜１３ｄを特定して送付する必要がある。このため、チャネルアダプタ１０ａ〜１０ｄでは、どのデータ要求をどのディスクアダプタに送るかという情報を保持しておく。図５及び図６は、このためのデータ構造の例である。図５および図６のデータ構造は、チャネルアダプタ１０ａ〜１０ｄのそれぞれに接続されたフロントサイドキャッシュ１１ａ〜１１ｄに図４のデータ構造と併せて格納しても良いし、あるいはチャネルアダプタ１０ａ〜１０ｄのそれぞれのローカルメモリ２０２に格納しても良い。
【００３０】
図５のデータ構造は、ホストＩＤ、ＬＵＮ、論理ブロックアドレスで識別されるホスト計算機からのデータ要求が、ディスクアダプタ１３ａ〜１３ｄにおける管理単位であるＲＡＩＤグループＩＤ、ブロックアドレスでどのように対応するかを示す構造である。ここで管理単位とは、ストレージシステム（ディスクアダプタ）が、自己が有する物理的な記憶領域を管理する単位を指す。物理的な記憶領域はブロックで管理される。ストレージシステムは、複数のブロックから一つの管理単位を作成する。図５のデータ構造の左端には、データ構造の各エントリが有効なデータであることを示す有効マークＶがある。図５ではデータ構造に示される論理ブロックアドレスを開始アドレスとして、右端のブロック長で示されるブロック数分が同様にＲＡＩＤグループＩＤで示される管理単位内のブロックアドレスを開始アドレスとするデータブロックに変換される。
【００３１】
図６は、どのＲＡＩＤグループＩＤで示される管理単位がどのディスクアダプタによって制御されているかを示すデータ構造である。同じく、データ構造の各エントリのデータが有効であるかどうかを示す有効マークＶを含む。
【００３２】
チャネルアダプタ１０ａ〜１０ｄ（より詳細には、チャネルアダプタ１０ａ〜１０ｄ内のプロセッサ２０１）は、データがフロントサイドキャッシュ１１ａ〜１１ｄに存在しないときは、まず図５のデータ構造を用いて、ホストＩＤ、ＬＵＮ、論理ブロックアドレスの組をＲＡＩＤグループＩＤ、ブロックアドレスの組に変換する。次に図６のデータ構造を用いて、データ要求を送付すべきディスクアダプタ１３ａ〜１３ｄを特定する。
【００３３】
ここで、ホスト計算機からの要求がデータの書き込みである場合には、書込みデータをフロントサイドキャッシュ１１ａ〜１１ｄに格納した後、常に書き込みデータをチャネルアダプタ１０ａ〜１０ｄよりディスクアダプタ１３ａ〜１３ｄに送付し、バックサイドキャッシュ１４ａ〜１４ｄにも書き込ませる。このため、書き込み時には図５および図６のデータ構造が毎回用いられる。このとき、書き込みデータの信頼性向上のために書き込みデータの２重化を行うことが考えられるが、その方法は次に示す第１の方法と第２の方法がある。ここで云うデータの２重化はデータをディスクドライブに書き込むまでのデータの２重化である。なお、読み出したデータをホスト計算機が変更して書き込むことを書き戻しと称するが、新たな書き込みと同様な手順で書き込み処理される。本実施形態では、新たな書き込みも書き戻しも両方適用可能である。
【００３４】
まず、第１の方法は、書き込みデータをバックサイドキャッシュ１４ａ〜１４ｄからディスクドライブ群１５ａ〜１５ｄのディスクドライブに書き込む（又は書き戻す）まで、フロントサイドキャッシュ１１ａ〜１１ｄにも保持することにより、フロントサイドキャッシュ１１ａ〜１１ｄとバックサイドキャッシュ１４ａ〜１４ｄの間で２重化する方法である。この方法では、データを２重化に必要な量だけしか置かないので、ストレージシステム１全体としてはキャッシュメモリの有効活用が可能である。しかし、フロントサイドキャッシュ１１ａ〜１１ｄにデータを保持しなければならないので、その分フロントサイドキャッシュ１１ａ〜１１ｄの使用量が制限される。
【００３５】
図７は、第１の方法に対応するため、フロントサイドキャッシュ１１ａ〜１１ｄに格納される図４のデータ構造に加えて、既に当該データがディスクドライブに書き戻されたか（書き込まれたか）どうかを管理する書き込みマークＤを付加した例である。チャネルアダプタ１０ａ〜１０ｄは、フロントサイドキャッシュ１１ａ〜１１ｄの容量が不足してきたとき、図７のようなデータ構造を参照し、書き込みマークＤがまだディスクドライブに書き戻されていないことを示す状態の時には、当該データ構造のエントリを保持しなければならない。
【００３６】
図７のデータ構造において書き込みマークＤがディスクドライブ書き戻し済みを示す状態の時に、当該データ構造のエントリを破棄し、フロントサイドキャッシュの書き込みデータの領域を未使用領域に戻すことができる。ディスクアダプタ１３ａ〜１３ｄは、バックサイドキャッシュ１４ａ〜１４ｄより書き込まれたデータをディスクドライブ群１５ａ〜１５ｄのディスクドライブに書き戻したら、後述するように、チャネルアダプタ１０ａ〜１０ｄに通知し、図７のデータ構造における書き込みマークＤをディスクドライブ書き込み済みに変更させる。
【００３７】
書き込みデータの２重化を行う第２の方法は、バックサイドキャッシュ１４ａ〜１４ｄのうちの２個を使って２重化する方法である。この第２の方法では、書き込みデータはバックサイドキャッシュ２個に置かれるほか、フロントサイドキャッシュにも置かれる可能性があるので、ストレージシステム１全体としてはキャッシュメモリの使用効率が悪くなる。しかし、バックサイドキャッシュからディスクドライブへの書き戻しの有無に関わらずフロントサイドキャッシュ内に格納された図４のデータ構造のそれぞれのエントリを再利用することが可能である。
【００３８】
第２の方法においては、チャネルアダプタ１０ａ〜１０ｄでは、データの書き込み時には、当該データをディスクドライブに書き込む（又は書き戻す）べきディスクアダプタに加えて、２重化する２個目のバックサイドキャッシュと接続するディスクアダプタを特定する必要がある。図８は、そのための図６に替わるデータ構造の例である。図８に示すデータ構造は、図６のデータ構造に加えて、それぞれのＲＡＩＤグループＩＤごとに、２個目のペアとなるペアディスクアダプタの番号も保持される。
【００３９】
チャネルアダプタは、書き込みデータの複製を行って、図８のデータ構造に示される二つのディスクアダプタに送付する。それぞれのディスクアダプタでは当該書き込みデータをそれぞれのバックサイドキャッシュに書き込むが、更に然るべき契機でディスクドライブ群１５ａ〜１５ｄのディスクドライブに書き込むのは、１個目のディスクアダプタのみで、２個目のペアディスクアダプタは通常ではディスクドライブへの書き込みデータの書き込みは行わない。通常は２個目のペアディスクアダプタのバックサイドキャッシュに格納されたホスト計算機からの書き込みデータ（又はその複製）は、１個目のディスクアダプタにおいて、１個目のディスクアダプタのバックサイドキャッシュからディスクドライブへの書き込みが正しく行われた時点で破棄される。もし１個目のディスクアダプタにおけるディスクドライブへのデータの書き込みが何らかの障害で行えなくなった場合には、２個目のペアディスクアダプタから書き込まれる。
【００４０】
図９は、バックサイドキャッシュ１４ａ〜１４ｄに格納されるデータ構造の例である。フロントサイドキャッシュの場合の図４と同様に、データが有効であることを示すマーク情報Ｖ、管理単位を識別するためのＲＡＩＤグループＩＤ、管理単位中でのブロックを識別するブロックアドレス、及びブロックデータの組で構成されている。また更に、図９に示すデータ構造には、チャネルアダプタよりホスト計算機からのデータの書き込みが行われた場合には、当該書き込みデータをディスクドライブへの書き戻しを行ったかどうかを示す書き込みマークＤを含む。ディスクアダプタ１３ａ〜１３ｄ（より詳細にはディスクアダプタ１３ａ〜１３ｄのそれぞれのプロセッサ２１１）は、バックサイドキャッシュ１４ａ〜１４ｄに格納される図９のようなデータ構造を参照して、バックサイドキャッシュにどのようなデータが書き込まれているか管理し制御を行うことができる。
【００４１】
また、実際のディスクドライブの読み書きに関しては、どのＲＡＩＤグループＩＤで管理される管理単位がどのディスクドライブに格納されるかを示す情報を参照する必要がある。図１０はこの情報のためのデータ構造の例である。図１０のデータ構造は、図９のデータ構造と併せてバックサイドキャッシュ１４ａ〜１４ｄに格納しても良いし、あるいはディスクアダプタ１３ａ〜１３ｄのそれぞれのローカルメモリ２１２に格納しても良い。
【００４２】
図１０に示したデータ構造では、データ構造のそれぞれのエントリが有効なデータであることを示す有効マークＶと、管理単位を識別するＲＡＩＤグループＩＤと、ＲＡＩＤタイプと、各管理単位ごとに４個のディスクドライブを識別するドライブ番号０〜３が組みとなっている。ＲＡＩＤタイプでは、例えばＲＡＩＤのレベル（ＲＡＩＤ１、ＲＡＩＤ５）の識別を行うことができる。またＲＡＩＤのパリティ生成方法の識別などの付加情報として用いることも考えられる。例えば次のようなＲＡＩＤ構成の識別に用いることも考えられる。すなわち、ディスクドライブは図１０の例では１管理単位当り４個としたが、４個のドライブでＲＡＩＤ５を構成した場合、データドライブ３に対し、パリティドライブ１という構成が考えら得る。これに対し、１管理単位にディスクドライブを８個とすることも考えられ、データドライブ７個に対しパリティドライブ１個、もしくはデータドライブ６個に対しパリティドライブ２個という構成も考えられる。このほか、さまざまなＲＡＩＤ構成も可能である。
【００４３】
ホスト計算機からデータの書き込みが行われたとき、当該書き込み要求を受け付けたチャネルアダプタ以外の他のチャネルアダプタでも、当該データを参照している場合も考えられる。このとき、他のチャネルアダプタのフロントサイドキャッシュには当該書き込みデータに対して、書き込み前の古いデータ（更新前のデータ）が保持されている。このような古いデータは更新するか、破棄させて用いないようにさせる必要がある。このような複数のフロントサイドキャッシュにおける一貫性の保証を行うため、各ディスクアダプタでは、どのチャネルアダプタのフロントサイドキャッシュにどのデータを送付したかを記録しておくことが考えられる。そのようにすれば、あるチャネルアダプタを通じてデータの更新の書き込みがあった場合には、記録された他のチャネルアダプタに書き込みのあったことを通知し、データの更新か破棄をさせることができる。
【００４４】
図１１は、ディスクアダプタ１３ａ〜１３ｄにおいて、それぞれのデータをどのチャネルアダプタに送付したかを記録しておくためのデータ構造の例である。図１１のようなデータ構造は、図１０のデータ構造と同様に、図９のデータ構造と併せてバックサイドキャッシュ１４ａ〜１４ｄに格納しても良いし、あるいはディスクアダプタ１３ａ〜１３ｄのそれぞれのローカルメモリ２１２に格納しても良い。
【００４５】
図１１に示した第１のデータ構造では（第２のデータ構造は後述する図３１に示す）、データ構造のそれぞれのエントリが有効なデータであることを示す有効マークＶと、管理単位を識別するＲＡＩＤグループＩＤと、管理単位内のデータブロックを識別するブロックアドレスと、送出先チャネルアダプタの番号の組みとなっている。あるデータが複数のチャネルアダプタに送付された場合には、同一のＲＡＩＤグループＩＤとブロックアドレスを持ち、送出先チャネルアダプタ番号にそれぞれのチャネルアダプタを記録したエントリをその数だけ備えることが考えられる。また、図１１のようなデータ構造を拡張し、１エントリにある程度の数の送出先チャネルアダプタ番号を記録するようにすることも考えられる。
【００４６】
ディスクアダプタ１３ａ〜１３ｄでは、あるチャネルアダプタよりホスト計算機からの書き込みデータを受信した場合には、図１１のようなデータ構造を参照し、当該データを参照する他のチャネルアダプタを検索し、記録された他のチャネルアダプタについて書き込みがあったことを通知して、それぞれのフロントサイドキャッシュ上の当該書き込みデータに対する旧データを更新させるか、破棄させる。
【００４７】
書き込みデータの２重化について、２個のバックサイドキャッシュで２重化する第２の方法では、１個目のディスクアダプタでバックサイドキャッシュより書き込まれたデータをディスクドライブへ書き込んだ場合にはこれを２個目のディスクアダプタに通知し、２個目のディスクアダプタのバックサイドキャッシュ上の複製データを破棄させる。この通知を行うために、各ディスクアダプタにおいて、それぞれのデータごとに２個目のディスクアダプタを記録しておく必要がある。
【００４８】
図１２は、このためのデータ構造の例である。図１１のデータ構造を拡張し、送出先チャネルアダプタ番号のほかに、２個目のペアとなるペアディスクアダプタ番号の記録が行えるようにしておく。このようなデータ構造は、図１１と同じく、図９のデータ構造と併せてバックサイドキャッシュ１４ａ〜１４ｄに格納しても良いし、あるいはディスクアダプタ１３ａ〜１３ｄのそれぞれのローカルメモリ２１２に格納しても良い。
【実施例２】
【００４９】
図１３は、本発明のストレージシステムに係る実施例２の全体構成を示すブロック図である。図１３において、図１と同様に、ストレージシステム１は、ホスト計算機と接続して接続制御を行うチャネルアダプタ１０ａ〜１０ｄ、ディスクドライブ群１５ａ〜１５ｄ、ディスクドライブ群１５ａ〜１５ｄに接続しディスクドライブへの読み書きの制御を行うディスクアダプタ１３ａ〜１３ｄ、チャネルアダプタ１０ａ〜１０ｄとディスクアダプタ１３ａ〜１３ｄを接続するネットワークスイッチ２１ａ及び２１ｂ、を含む。ストレージシステム１は、更に、チャネルアダプタ１０ａ〜１０ｄのそれぞれに第１の種類のキャッシュメモリであるフロントサイドキャッシュ１１ａ〜１１ｄを持つ。
【００５０】
また、本発明の実施例２では、図１に示す実施例１とは異なり、第２の種類のキャッシュメモリであるバックサイドキャッシュ１４ａ〜１４ｄが、ディスクアダプタ１３ａ〜１３ｄのそれぞれに直接接続されるのではなく、ネットワークスイッチ２１ａおよび２１ｂに接続される。ディスクアダプタ１３とバックサイドキャッシュ１４とチャネルアダプタとは、ネットワークスイッチ２１によって互いに他に接続される接続構成である。バックサイドキャッシュ１４ａ〜１４ｄは、ディスクアダプタ１３ａ〜１３ｄのそれぞれにネットワークスイッチ２１ａおよび２１ｂを通して論理的に割り当てられて用いられる。このバックサイドキャッシュの割り当ては、ディスクアダプタ１３内のプロセッサによって制御される。
【００５１】
図１３に示す接続構成を採用すると、バックサイドキャッシュ１４ａ〜１４ｄがそれぞれのディスクアダプタ１３ａ〜１３ｄに物理的に固定化しないので、バックサイドキャッシュ１４ａ〜１４ｄをストレージシステム１内全体で柔軟に運用することができる。例えばディスクアダプタ１３ａで大量のデータを格納する必要があり、ディスクアダプタ１３ｃではあまり大量のデータを格納する必要がなければ、バックサイドキャッシュ１４ａ〜１４ｄの中でディスクアダプタ１３ａへの割り当てを増やし、ディスクアダプタ１３ｃへの割り当てを減らして用いればよい。
【００５２】
図１３におけるチャネルアダプタ１０ａ〜１０ｄ、フロントサイドキャッシュ１１ａ〜１１ｄ、ネットワークスイッチ２１ａおよび２１ｂ、ディスクアダプタ１３ａ〜１３ｄ、バックサイドキャッシュ１４ａ〜１４ｄ、ディスクドライブ群１５ａ〜１５ｄの構成とその動作は図１に示した実施例１のものと同様である。
【実施例３】
【００５３】
図１４は、本発明のストレージシステムに係る実施例３の全体構成を示すブロック図である。図１４において、ストレージシステム１は、ホスト計算機と接続するフロントエンド（ＦＥ）アダプタ２０ａ〜２０ｄ、ディスクドライブ群１５ａ〜１５ｄ、ディスクドライブ群１５ａ〜１５ｄに接続するバックエンド（ＢＥ）アダプタ２３ａ〜２３ｄ、ＦＥアダプタ２０ａ〜２０ｄとＢＥアダプタ２３ａ〜２３ｄを接続するネットワークスイッチ２２ａ及び２２ｂ、を含む。ストレージシステム１は、更に、ＦＥアダプタ２０ａ〜２０ｄのそれぞれに第１の種類のキャッシュメモリであるフロントサイドキャッシュ１１ａ〜１１ｄを持つ。また、第２の種類のキャッシュメモリであるバックサイドキャッシュ１４ａ〜１４ｄを持ち、ネットワークスイッチ２２ａおよび２２ｂに接続される。
【００５４】
更に、本発明の実施例３では、ストレージシステム全体の制御を行うための統合制御部２４ａ〜２４ｄを備えることを特徴の１つとしている。統合制御部２４ａ〜２４ｄは、ネットワークスイッチ２２ａおよび２２ｂに接続し、ネットワークスイッチ２２ａおよび２２ｂを経由して、ＦＥアダプタ２０ａ〜２０ｄ、ＢＥアダプタ２３ａ〜２３ｄ、バックサイドキャッシュ１４ａ〜１４ｄに論理的に割り当てられてそれぞれの制御を行う。なお、本実施例３では、図１に示す実施例１におけるチャネルアダプタに対応するものとして、符号２０をＦＥアダプタと称しているが、後述するように、ＦＥアダプタは図１のチャネルアダプタからプロセッサ機能を取り除いたものであるので、符号２０の名称をチャネルアダプタではなくて、ＦＥアダプタと称している。
【００５５】
図１４に示す実施例３とすることにより、ストレージシステム内でより性能が必要な部分に統合制御部２４ａ〜２４ｄを複数割り当てて並列処理させることにより性能要求を満たし、あまり性能が必要でない部分では逆に統合制御部２４ａ〜２４ｄの一つを他と共有させて用いるようにすることができるなど、ストレージシステム１内で柔軟な運用が可能である。これにより、統合制御部２４ａ〜２４ｄの数や制御能力・性能をストレージシステム１内で必要最小限にすることができ、コスト低減をさらに図ることができる。このようなコスト低減を図るためには、必要な制御能力はできるだけ統合制御部２４ａ〜２４ｄに集め、ＦＥアダプタ２０ａ〜２０ｄ、ＢＥアダプタ２３ａ〜２３ｄからはなるべく制御能力を取り除いて簡単な構成とする必要がある。
【００５６】
図１５は、本実施例３におけるＦＥアダプタ２０ａ〜２０ｄのより詳細な構成の例である。図において、ＦＥアダプタ２０ａ〜２０ｄは、ホスト計算機と接続するホストＩ／Ｆ回路２２０、ホスト計算機とやり取りするデータや制御コマンドを一時的にバッファするコマンド・データ・バッファ２２２、ホスト計算機から受信したコマンド・データ・バッファ２２２内の制御コマンドを解析しＦＥアダプタ内の一次的な制御を行うコマンド一次解析部２２３、ネットワークスイッチ２２ａへ接続するネットワーク接続回路２２１ａおよび２２１ｂ、コマンド・データ・バッファ２２２とコマンド一次解析部２２３とネットワーク接続回路２２１ａおよび２２１ｂと更にフロントサイドキャッシュ１１ａ〜１１ｄのそれぞれを接続するローカルスイッチ部２２４、を備える。
【００５７】
コマンド一次解析部２２３は、簡単化するため、フロントサイドキャッシュ１１ａ〜１１ｄの制御については、ホスト計算機からの要求がデータの読み出しであり、かつデータがフロントサイドキャッシュ１１ａ〜１１ｄ内に存在するかどうか判定し、存在した場合にホスト計算機へデータを返送する動作に限り制御を行うことが考えられる。バックサイドキャッシュ１４ａ〜１４ｄへのデータの読み出し・書き込みが必要となるデータがフロントサイドキャッシュ１１ａ〜１１ｄになかった場合、およびホスト計算機からの要求が書き込み要求であった場合には、コマンド一次解析部２２３は、当該ＦＥアダプタに割り当てられた統合制御部２４ａ〜２４ｄへ通知を行い、以降の制御はその統合制御部が行う。
【００５８】
ほかに、コマンド一次解析部２２３の制御能力を高め、ＦＥアダプタ２０ａ〜２０ｄ、フロントサイドキャッシュ１１ａ〜１１ｄが関わる処理をすべて制御させることも考えられるが、その場合は処理が複雑化するので、コマンド一次解析部２２３がそれに対応するように肥大化し、コスト低減が困難になると考えられる。
【００５９】
図１６は、図１４に示すストレージシステムの実施例３で用いることのできるＢＥアダプタ２３ａ〜２３ｄの構成例である。図１６において、ＢＥアダプタ２３ａ〜２３ｄは、ディスクドライブ群１５ａ〜１５ｄへ接続するディスクドライブＩ／Ｆ回路２３１、ディスクドライブ群１５ａ〜１５ｄへ読み書きするデータや制御コマンドを一時的に蓄えるコマンド・データ・バッファ２３２、コマンド・データ・バッファ内の制御コマンドを解析しディスクドライブＩ／Ｆ回路２３１の制御やディスクドライブ群１５ａ〜１５ｄからのエラーステータスの検出を行って統合制御部２４ａ〜２４ｄへ通知を行うコマンド／ステータス制御部２３３、ネットワークスイッチ２２ａおよび２２ｂに接続するネットワーク接続回路２３０ａおよび２３０ｂ、を備える。
【００６０】
図１６に示す構成例では、ＢＥアダプタ全体の制御や、ネットワークスイッチ２２ａおよび２２ｂを通じて論理的に接続されるバックサイドキャッシュ１４ａ〜１４ｄの制御は、統合制御部２４ａ〜２４ｄで行う。それぞれのＢＥアダプタ内のコマンド／ステータス制御部２３３は、制御コマンドに関わる低レベルの簡単な制御やディスクドライブＩＦ回路２３１からのエラーステータスの検出など、簡単な制御を行うのに止まる。このようにすることにより、ＢＥアダプタの構成を簡単化し、ストレージシステム１のコスト低減を行うことが可能である。
【００６１】
統合制御部２４ａ〜２４ｄは、複雑な制御機能と高い制御能力を備える必要があるので、例えばプロセッサと、ソフトウェアのプログラムによって実現することが考えられる。図１７は本実施例３における統合制御部の構成例を示す図である。図１７において、統合制御部２４ａ〜２４ｄはそれぞれ、プロセッサ２４１、ローカルメモリ２４２、ネットワークスイッチ２２ａおよび２２ｂへそれぞれ接続するネットワーク接続回路２４４ａおよび２４４ｂ、を備える。ローカルメモリ２４２にはプロセッサ２４１で動作する制御プログラムを格納するほか、図５、図６、図８、図１０、図１１および図１２に示したようなデータ構造を格納しても良い。
【００６２】
図１４に示した本発明のストレージシステムに係る実施例３の動作は、図１に示した実施例１、図１３に示した実施例２とほぼ同様である。図５、図６、図８、図１０、図１１および図１２に掲げたような制御用のデータ構造については、チャネルアダプタ番号をＦＥアダプタ番号に、ディスクアダプタ番号をＢＥアダプタ番号と読み替えて、そのまま用いることが可能である。
【００６３】
「キャッシュメモリ制御処理手法１」
次に、本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法１のうち、第１の種類のキャッシュメモリであるフロントサイドキャッシュの読み出しを制御する制御方法について、図１８〜図２１を参照しながら以下説明する。図１８は、本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法１のうち、第１の種類のキャッシュメモリであるフロントサイドキャッシュの読み出しを制御する制御方法を示すフローチャートである。図１９は、本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法１のうち、フロントサイドキャッシュの書き込みを制御する第１の制御方法を示すフローチャートである。すなわち、図１８はホスト計算機からの要求が読み出しである場合、図１９はホスト計算機からの要求が書き込みである場合にそれぞれ対応する動作フローを示している。以下に説明するキャッシュメモリの制御方法は、図１に示す実施例１、図１３に示す実施例２、図１４に示す実施例３のストレージシステムに共通して適用され得る。
【００６４】
図１８において、まずステップ３０１にてホスト計算機からの要求が受信される。次にステップ３０２においてホスト計算機からの要求がデータの読み出し要求であるか、データの書き込み要求であるか判定される。ホスト計算機からの要求が書き込み要求である場合には、図１９の（１）へ移る。
【００６５】
ホスト計算機からの要求がデータの読み出し要求である場合には、ステップ３０３に進み、当該ホスト計算機の要求を受信したチャネルアダプタもしくはＦＥアダプタに接続されるフロントサイドキャッシュが検索され、検索された結果が次のステップ３０４にて判定される。すなわち、要求されたデータが当該フロントサイドキャッシュに存在した場合には、ステップ３１４に進み、チャネルアダプタ（もしくはフロントサイドキャッシュを制御する統合制御部、以下同じ）は、要求されたデータをホスト計算機に返送して終了する。
【００６６】
ステップ３０４にて当該フロントサイドキャッシュにデータが格納されていないと判定された場合には、ステップ３０５に進み、チャネルアダプタは、当該フロントサイドキャッシュ内にまず新しくデータを格納するのに必要な領域の確保を行う。この処理の詳細は後述する。正しく領域確保されたかどうかはステップ３０６にて判定され、当該フロントサイドキャッシュにおいて領域確保に失敗した場合には、ステップ３０７にて、チャネルアダプタはホスト計算機にエラーを報告し、終了する。
【００６７】
領域確保に成功した場合には、ステップ３０８に進み、チャネルアダプタは、ホスト計算機からの読み出し要求に含まれる論理ボリューム番号ＬＵＮ、論理ブロックアドレスをディスクアダプタもしくはＢＥアダプタにおける管理単位であるＲＡＩＤグループＩＤおよびブロックアドレスに変換する。この変換のとき、先に図５に示したようなデータ構造で表現される変換情報が用いられる。
【００６８】
次に、ステップ３０９にて、先に図６に示したようなデータ構造で表現される制御情報を用いることにより、チャネルアダプタは、ＲＡＩＤグループＩＤから読み出し要求を送付するべきディスクアダプタもしくはＢＥアダプタ（より詳細にはバックサイドキャッシュ）を特定する。ステップ３１０では特定されたディスクアダプタもしくはＢＥアダプタ（より詳細にはバックサイドキャッシュ）にデータ読み出し要求を送付し、ホスト計算機が要求したデータを取得する。
【００６９】
ステップ３１１ではステップ３１０で正しく当該データが取得されたかどうかが判定され、もしデータの取得に関しエラーがあれば、ステップ３１２に進んで、ホスト計算機にエラー報告が行われ、終了する。ステップ３１１でエラーなしと判定された場合には、ステップ３１３に進み、ステップ３０５で新たに確保した領域に、ステップ３１０でディスクアダプタまたはＢＥアダプタ（より詳細にはバックサイドキャッシュ）より取得したデータを格納する。この後、当該データが当該フロントサイドキャッシュに初めから格納されていた場合と同様に、ステップ３１４において、チャネルアダプタは、フロントサイドキャッシュ上の当該データをホスト計算機に返送し、終了する。
【００７０】
次に、ホスト計算機からの要求が書き込みであった場合には、図１８のステップ３０２から図１９の（１）へと移る。図１９において、（１）から次にステップ３２１へと進み、読み出しの場合の図１８のステップ３０５と同様にして、チャネルアダプタは、当該フロントサイドキャッシュ上に新たな書き込みデータを格納するための領域の確保を行う。次のステップ３２２では領域確保に成功したかどうかが判定される。領域確保に失敗した場合には、ステップ３２３に進み、ホスト計算機に書き込みエラーを報告して終了する。領域確保に成功した場合にはステップ３２４に進み、ホスト計算機より新しい書き込みデータを受信して、ステップ３２１で確保した当該フロントサイドキャッシュ上の領域に格納する。
【００７１】
次にステップ３２５に進み、図１８のステップ３０８と同様にして、チャネルアダプタは、ホスト計算機からの書き込み要求に含まれる論理ボリューム番号ＬＵＮ、論理ブロックアドレスをディスクアダプタもしくはＢＥアダプタにおける管理単位であるＲＡＩＤグループＩＤおよびブロックアドレスに変換する。ステップ３２６では図１８のステップ３０９と同様にして、チャネルアダプタは、ステップ３２５で変換したＲＡＩＤグループＩＤを基に、先に図６に示したようなデータ構造による制御情報を参照して、書き込んだデータを送付するディスクアダプタもしくはＢＥアダプタ（より詳細にはバックサイドキャッシュ）を決定する。
【００７２】
このとき、もし書き込みデータの２重化をバックサイドキャッシュを２個用いて行う場合には、２個目のバックサイドキャッシュに接続するディスクアダプタ番号もしくはＢＥアダプタ番号の決定も行う。このためには、図６のデータ構造に換えて、先に図８で示したようなデータ構造で表現される制御情報を用いる。
【００７３】
ステップ３２７では、チャネルアダプタは、ステップ３２６で決定された結果に従ってディスクアダプタもしくはＢＥアダプタ（より詳細にはバックサイドキャッシュ）に、ステップ３２４でフロントサイドキャッシュに格納したホスト計算機からの書き込みデータを読み出して送付し、書き込ませる。このとき、書き込みが正しくできたかどうかを示す書き込みステータスも返送させる。さらに、もし書き込みデータの２重化をバックサイドキャッシュを２個用いて行う場合には、チャネルアダプタは、２個目のバックサイドキャッシュにも当該フロントサイドキャッシュ上の書き込みデータを複製して送付し、書き込ませる。書き込みステータスも取得して、１個目のバックサイドキャッシュに対する書き込みステータスと併せて用いる。
【００７４】
ステップ３２８では、チャネルアダプタは、ステップ３２７において取得した書き込みステータスを判定する。書き込みステータスが書き込みエラー示す場合には、ステップ３２９に進み、フロントサイドキャッシュにステップ３２４で格納した書き込みデータを廃棄し、当該領域を未使用領域とする。さらに、チャネルアダプタは、ステップ３３０で書き込みエラーの発生をホスト計算機に報告し、終了する。
【００７５】
ステップ３２８で書き込みエラーステータスがエラーなしと判定された場合にはステップ３３１に進み、チャネルアダプタは、ステップ３２４で格納したホスト計算機からの書き込みデータに対応する旧データが当該フロントサイドキャッシュ上に登録されていないかどうか、検索する。次にステップ３３２では、ステップ３３１で検索した結果が判定される。判定の結果、もし当該フロントサイドキャッシュ上に当該書き込みデータに対する旧データが格納されていれば、チャネルアダプタは、それを破棄させ、当該領域を未使用領域とさせる。その後ステップ３３４に進む。もしステップ３３２において当該フロントサイドキャッシュに旧データが格納されていなければ、直接ステップ３３４に進む。
【００７６】
ステップ３３４では、チャネルアダプタは、当該フロントサイドキャッシュ上にステップ３２４で格納したホスト計算機からの書き込みデータを、当該データの最新値として登録する。その後、ステップ３３５にて書き込み完了を要求元のホスト計算機に報告して終了する。
【００７７】
図２０は、本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリの制御処理手法１のうち、バックサイドキャッシュの読み出しを制御する制御方法を示すフローチャートであり、図２１は、本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリの制御処理手法１のうち、バックサイドキャッシュの書き込みを制御する第１の制御方法を示すフローチャートである。図２０はチャネルアダプタ（もしくはＦＥアダプタ、以下同じ）へのデータ読み出しの制御方法に対応し、図２１はチャネルアダプタからのデータの書き込み、すなわちバックサイドキャッシュへの書き込みを制御する第１の制御方法に対応する。
【００７８】
図２０において、まずディスクアダプタ（もしくはバックサイドキャッシュを制御する統合制御部、以下同じ）はステップ４０１にてチャネルアダプタからの要求を受け付ける。ステップ４０２にて要求が読み出しか書き込みかが判定される。要求が読み出しであれば、図２１の（２）へ移る。
【００７９】
チャネルアダプタからの要求が読み出しであれば、ステップ４０３に進み、ディスクアダプタは、要求されたデータが当該バックサイドキャッシュにあるかどうか検索し、ステップ４０４にて検索の結果が判定される。検索の結果、要求されたデータが当該バックサイドキャッシュに存在すればステップ４１４に進む。要求されたデータが当該バックサイドキャッシュに存在しない場合、ステップ４０５に進む。
【００８０】
ステップ４０５では、ディスクアダプタは、当該バックサイドキャッシュ上に新たに要求されたデータを格納するための領域を確保する。この処理の詳細は後述する。正しく領域確保されたかどうかはステップ４０６にて判定され、当該バックサイドキャッシュにおいて領域確保に失敗した場合には、ディスクアダプタは、ステップ４０７にて要求元のチャネルアダプタにエラーを報告し、終了する。領域確保に成功した場合には、ステップ４０８に進み、ディスクアダプタは、要求されたデータのＲＡＩＤグループＩＤより、先に図１０に示したような制御情報を参照して、ＲＡＩＤタイプを調べ、当該データの存在するディスクドライブを決定する。
【００８１】
次にステップ４０９において、ディスクアダプタは、ディスクドライブより当該データを読み出し、ステップ４１０においてディスクドライブよりの読み出しにエラーがなかったかどうか判定する。もしディスクドライブの読み出しにおいてエラーが発生した場合には、ディスクアダプタは、ステップ４１１にて先にステップ４０５で確保した当該バックサイドキャッシュ上の領域を開放し、ステップ４１２にてチャネルアダプタにエラーを報告し、終了する。
【００８２】
ディスクドライブからの読み出しにエラーがなければ、ディスクアダプタは、ステップ４１３にて読み出したデータを先にステップ４０５で確保した当該バックサイドキャッシュ上の領域に格納し、ステップ４１４に進む。ステップ４１４では、バックサイドキャッシュ上の当該データを要求元のチャネルアダプタに返送する。次にステップ４１５において、ディスクアダプタは、返送したチャネルアダプタを当該データの送付先として記録する。これは、例えば先に図１１に示したようなデータ構造の制御情報を用いて、バックサイドキャッシュ、もしくはディスクアダプタまたは統合制御部のローカルメモリに記録すればよい。
【００８３】
次に、チャネルアダプタからの要求が書き込みであった場合には、図２０のステップ４０２から図２１の（２）へと移る。図２１において、（２）から次にステップ４２０へと進み、図２０のステップ４０３と同様にして、ディスクアダプタは、当該バックサイドキャッシュ上に新たに書き込むデータに対応する旧データが存在するかどうか、検索する。
【００８４】
次にステップ４２１において、その検索の結果が判定され、検索の結果、旧データが当該バックサイドキャッシュ上に存在すれば、ステップ４２６に進み、ディスクアダプタは、その旧データをチャネルアダプタから送信されてくる書き込みデータで上書きし、ステップ４２７に進む。ステップ４２１において、検索の結果、旧データが当該バックサイドキャッシュ上に存在しない場合には、ステップ４２２に進み、図２０のステップ４０５と同様にして、ディスクアダプタは、当該バックサイドキャッシュ上に新たに書き込みデータを格納するための領域を確保する。領域確保に成功したかどうかは次のステップ４２３で判定され、領域確保に失敗した場合には、ステップ４２４に進み、ディスクアダプタは、要求元のチャネルアダプタに書き込みエラーを報告し、終了する。
【００８５】
ステップ４２３で判定の結果、領域確保に成功した場合には、ステップ４２５に進み、ディスクアダプタは、チャネルアダプタより書き込みデータを受信して、当該バックサイドキャッシュ上の確保した領域に格納する。その後ステップ４２７へ進む。
【００８６】
ステップ４２７では、ディスクアダプタは、要求元のチャネルアダプタが当該データの送付先として登録されているかどうか、検索する。これは、例えば先に図１１に示したようなデータ構造を検索することで実現される。ステップ４２８では、ステップ４２７の検索の結果が判定され、要求元のチャネルアダプタが既に当該データの送付先として登録済みであれば、ステップ４３０に進む。要求元のチャネルアダプタが当該データの送付先としてまだ登録されていなければ、ディスクアダプタは、ステップ４２９にて送付先として登録する。これも同じく、例えば図１１に示したようなデータ構造の制御情報のエントリを追加することで行うことができる。その後ステップ４３０に進む。
【００８７】
ステップ４３０では、ディスクアダプタは、当該データに対し、他のチャネルアダプタが送付先として登録されているかどうか検索する。これも例えば図１１に示したようなデータ構造の制御情報を検索することで行うことができる。ステップ４３１では、ステップ４３０の検索の結果が判定され、他のチャネルアダプタの登録がなければ、ステップ４３４に進む。もし他のチャネルアダプタの登録があれば、ステップ４３２に進み、ディスクアダプタは、新たにステップ４２６もしくは４２５でバックサイドキャッシュ上に書き込まれた書き込みデータをそのチャネルアダプタに送付し、そのチャネルアダプタに接続されているフロントサイドキャッシュ上の旧データを更新させる。
【００８８】
次にステップ４３３において、ディスクアダプタは、登録されたすべてのチャネルアダプタについて、新たに書き込まれた書き込みデータを送付したどうかを判定する。もしまだ送付していないチャネルアダプタがあれば、ステップ４３２に戻って繰り返す。当該データの送付先として登録されたすべてのチャネルアダプタに新たに書き込まれたデータの送付が終わればステップ４３４に進む。ステップ４３４では、ディスクアダプタは、書き込み完了を書き込み要求元のチャネルアダプタに報告し、終了する。
【００８９】
次に、図１８のステップ３０５及び図１９のステップ３２１で行われるフロントサイドキャッシュの領域確保を行う方法の詳細を説明する。図２２がフロントサイドキャッシュの領域確保を行う第１の制御方法を説明した図である。
【００９０】
図２２において、まず、チャネルアダプタは、ステップ３６０にて当該フロントサイドキャッシュ上の未使用領域が必要なだけ残っているかチェックする。ステップ３６１にてそのチェック結果が判定され、必要なだけ未使用領域が残っていた場合には、ステップ３６２に進み、未使用領域より必要なだけ領域を割り当てて、領域確保に成功したとする。ステップ３６１の判定の結果、未使用領域が充分に残っていなかった場合にはステップ３６３に進む。
【００９１】
ステップ３６３では、チャネルアダプタは、予め定める一定回数以上繰り返したどうか、繰り返し回数を数えてチェックする。すなわち、ホスト計算機から求められる書き込むべきブロック数が未使用領域に書き込めるかどうかが繰り返してチェックされる（ディスクドライブにデータが書き込まれればフロントサイドキャッシュ上のデータは消去可能であって未使用領域は拡大するので、未使用領域がホスト計算機からの書き込みブロック数よりも大きくなるまで繰り返す）。ステップ３６４でそのチェック結果が判定され、既に予め定める一定回数以上繰り返していれば、領域確保失敗とする。まだ一定回数以上繰り返していなければ、ステップ３６５に進み、当該フロントサイドキャッシュ上で最も古いデータの領域を決定する。
【００９２】
次に、ステップ３６６にて、チャネルアダプタは、そのデータ領域のデータが既にディスクドライブに書き戻されているかどうかを判定する。これには、例えば先に図７に示したようなデータ構造を用いて、フロントサイドキャッシュにデータを格納しておけばよい。ステップ３６５では、図７のようなデータ構造の各エントリの書き込みマークＤを参照して、まだデータがディスクドライブに書き戻されていないかどうか判定することができる。
【００９３】
ステップ３６６における判定の結果、まだディスクドライブに書き戻されていなかった場合にはステップ３６７に進み、チャネルアダプタは、次に古いデータ領域を決定する。次にステップ３６８においてそのようなデータ領域がまだあるかどうか判定され、まだ次に古いデータ領域があれば、ステップ３６６に戻って繰り返す。もしもう次に古いデータ領域がもうなければ、領域確保は失敗となる。
【００９４】
またステップ３６６における判定の結果、そのデータ領域のデータが既にディスクドライブに書き戻し済みであれば、ステップ３６９に進む。ステップ３６９では、チャネルアダプタは、そのデータ領域のデータに対応する論理ボリューム番号ＬＵＮと論理ブロックアドレスを、例えば先に図５に示したようなデータ構造の変換情報を用いて、ＲＡＩＤグループＩＤ、ブロックアドレスに変換する。次にステップ３７０において、チャネルアダプタは、ＲＡＩＤグループＩＤより、同じく先に図６に示したようなデータ構造の制御情報を用いて、ディスクアダプタを特定する。
【００９５】
その後ステップ３７１において、チャネルアダプタは、フロントサイドキャッシュ上の当該データ領域を破棄して未使用領域とし、ステップ３７２において当該データ領域を破棄したことをステップ３７０において特定したディスクアダプタに通知し、そのディスクアダプタの当該データの送付先の登録から、当該チャネルアダプタを削除させる。そして、ステップ３６０に戻り、全体の処理を繰り返す。
【００９６】
次に、図２０のステップ４０５及び図２１のステップ４２２で行われるバックサイドキャッシュの領域確保を行う方法の詳細を説明する。図２３がバックサイドキャッシュの領域確保を行う第１の制御方法を説明した図である。
【００９７】
図２３において、まず、ディスクアダプタは、ステップ５０１にて当該バックサイドキャッシュ上の未使用領域が必要なだけ残っているかチェックする。ステップ５０２にてそのチェック結果が判定され、必要なだけ未使用領域が残っていた場合には、ステップ５０３に進み、未使用領域より必要なだけ領域を割り当てて、領域確保に成功したとする。
【００９８】
ステップ５０２の判定の結果、未使用領域が充分に残っていなかった場合にはステップ５０４に進む。ステップ５０４では、ディスクアダプタは、予め定める一定回数以上繰り返したどうか、繰り返し回数を数えてチェックする。ステップ５０５でそのチェック結果が判定され、既に予め定める一定回数以上繰り返していれば、領域確保失敗とする。まだ一定回数以上繰り返していなければ、ステップ５０６に進み、ディスクアダプタは、当該バックサイドキャッシュ上で最も古いデータの領域を決定する。
【００９９】
次に、ディスクアダプタは、ステップ５０７にてそのデータ領域のデータが既にディスクドライブに書き戻されているかどうかをチェックする。これには、例えば先に図９に示したようなデータ構造を用いて、バックサイドキャッシュにデータを格納しておけばよい。ステップ５０７では、図９のようなデータ構造の各エントリの書き込みマークＤを参照して、まだデータがディスクドライブに書き戻されていないかどうかチェックすることができる。
【０１００】
ステップ５０７のチェックの結果をステップ５０８において判定する。判定の結果、既にディスクドライブに書き戻されていた場合にはステップ５１３に進む。ステップ５０８における判定の結果、まだディスクドライブに書き戻されていない場合には、ステップ５０９に進み、ディスクアダプタは、当該データ領域のデータのＲＡＩＤグループＩＤに基づいて、先に図１０に示したような制御情報を用いてＲＡＩＤタイプを調べ、当該データを書き戻すディスクドライブを決定する。次にステップ５１０にて、ディスクアダプタは、当該データをディスクドライブに書き戻す。
【０１０１】
次にステップ５１１にて、ディスクアダプタは、当該データをディスクドライブに書き戻したことを、当該データの送付先として登録されているチャネルアダプタに通知し、チャネルアダプタにおいて、先の図７のようなデータ構造に含まる書き込みマークＤを書き込み済みに変更させる。ステップ５１２において、当該データの送付先として登録されているすべてのチャネルアダプタに通知したかどうか判定し、もしまだすべてのチャネルアダプタに通知していなければ、ステップ５１１に戻って繰り返す。
【０１０２】
ディスクアダプタは、当該データの送付先として登録されているすべてのチャネルアダプタへ通知したらステップ５１３に進む。ステップ５１３では、ディスクアダプタは、バックサイドキャッシュ上の当該データ領域を破棄し、未使用領域とする。その後、ステップ５０１に戻って全体の処理を繰り返す。なお、ディスクアダプタにおけるバックサイドキャッシュからのディスクドライブへのデータの書き込み（書き戻し）は、図２３に示したバックサイドキャッシュ上での領域確保だけではなく、データをバックサイドキャッシュに書き込んでからの経過時間やバックサイドキャッシュにおける未使用領域の残量などを契機として行う。
【０１０３】
図２４は、このようなバックサイドキャッシュの書き込み制御の第１の制御方法を説明する図である。すなわち、図２４は、本制御処理手法１におけるバックサイドキャッシュの書き込みデータをディスクドライブへ書き戻し（書き込み）制御する第１の制御方法を示すフローチャートである。
【０１０４】
図２４において、まず、ディスクアダプタは、ステップ５２０にて、バックサイドキャッシュの未使用領域の残量（空き容量）が、予め定めた一定値以下かどうかチェックする。ステップ５２１にてその結果を判定し、もし空き容量が充分になければ、ステップ５２２に進む。ステップ５２２では、まだディスクドライブに書き戻していないデータの量が予め定めた一定値以上かどうかチェックする。ステップ５２３で、ディスクアダプタは、そのチェックの結果を判定し、もし書き戻していないデータの量が予め定める一定値以下なら、処理を終了する。また、書き込んで（書き戻して）いないデータの量が予め定める一定値以上であれば、ステップ５２４に進み、ディスクアダプタは、まだ書き込んでいないデータの中で最も古い書き込みデータの領域を決定する。その後ステップ５２７に進む。
【０１０５】
また、ステップ５２１の判定において、バックサイドキャッシュの空き容量が予め定める一定値以上であった場合には、ステップ５２５に進み、ディスクアダプタは、バックサイドキャッシュ上でまだディスクドライブに書き戻していない書き込みデータの中で、バックサイドキャッシュに書き込まれてから、予め定める一定時間以上経過したデータ領域があるかどうか検索する。その検索結果をステップ５２６で判定する。ディスクアダプタは、もし予め定める一定時間以上経過したデータ領域がなければ、処理を終了する。
【０１０６】
ステップ５２６の判定の結果、予め定める一定時間以上経過したデータ領域があれば、ステップ５２７に進む。ステップ５２７では、ディスクアダプタは、ステップ５２４で決定された最も古い書き込みデータのデータ領域もしくはステップ５２６で予め定める一定時間以上経過した書き込みデータのデータ領域について、図２３のステップ５０９と同様にして、当該データのＲＡＩＤグループＩＤに基づき、先に図１０に示したような制御情報を用いてＲＡＩＤタイプを調べ、当該データを書き戻すディスクドライブを決定する。次にステップ５２８にて当該データをディスクドライブに書き戻す。
【０１０７】
その後、ステップ５２９にて、ディスクアダプタは、当該データをディスクドライブに書き戻したことを、当該データの送付先として登録されているチャネルアダプタに通知し、チャネルアダプタにおいて、先の図７のようなデータ構造に含まる書き込みマークＤを書き込み済みに変更させる。ステップ５３０において、ディスクアダプタは、当該データの送付先として登録されているすべてのチャネルアダプタに通知したかどうか判定し、もしまだすべてのチャネルアダプタに通知していなければ、ステップ５２９に戻って繰り返す。
【０１０８】
ディスクアダプタは、当該データの送付先として登録されているすべてのチャネルアダプタへ通知したらステップ５３１に進む。ステップ５３１では、バックサイドキャッシュ上の図９のようなデータ構造における当該データ領域の書き込みマークＤを書き戻し済みとして、当該データが書き込み終了であることを示し、処理を終了する。
【０１０９】
「キャッシュメモリ制御処理手法２」
次に、本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法２のうち、特にバックサイドキャッシュの書き込みを制御する第２の制御方法について、図２５を参照しながら以下説明する。
【０１１０】
前述したキャッシュメモリ制御処理手法１では、バックサイドキャッシュの書き込み制御方法において、ホスト計算機からデータの書き込みが行われた時、その書き込み要求を受けたチャネルアダプタより書き込みデータがバックサイドキャッシュに書き込まれた後、当該書き込みデータに対する旧データがもしほかのチャネルアダプタのフロントサイドキャッシュにも格納されていた場合には、それらの旧データをすべて更新するように、バックサイドキャッシュより新たに書き込まれたデータを送付する（図２１参照）。このような制御方法は、他のチャネルアダプタにおいても当該データ領域がさらに頻繁にホスト計算機からアクセスされる場合では、常にすべてのフロントサイドキャッシュに最新データを送付してしまうことになるので非常に有効である。
【０１１１】
しかし、他のチャネルアダプタにおいて当該データがあまり頻繁にアクセスされない、もしくはアクセスされてもほとんど新たな書き込みである場合には、書き込みが生じる度にすべてのフロントサイドキャッシュに最新データを送付して更新するのは、バックサイドキャッシュとフロントサイドキャッシュの間の通信能力を消費し、フロントサイドキャッシュの領域も無駄に使うことになるので、有効性が損なわれる。
【０１１２】
そこで、そのような場合には、常に最新のデータをすべてのフロントサイドキャッシュに送付するのではなくて、書き込みが起こったら、他のフロントサイドキャッシュ上の旧データを削除して単に用いられないようにすることが考えられる。このようにした場合、他のフロントサイドキャッシュに接続するチャネルアダプタは、当該データがホスト計算機よりそのチャネルアダプタを通して再びアクセスされた時にあらためてバックサイドキャッシュを参照し、最新データを取り込むようにする。
【０１１３】
図２５は、バックサイドキャッシュの書き込みの制御について、上述したような制御を行うために、図２１の第１の制御方法とは異なる第２の制御方法を示した図である。図２５に示すバックサイドキャッシュの第２の制御方法（キャッシュメモリ制御処理手法２）において、チャネルアダプタからの要求の受信と判定、読み出しであった場合の制御の方法は先の制御方法を示した図２０と同様である。すなわち、チャネルアダプタからの要求を受信し、読み出しであれば図２０と同様の制御を行う。書き込みである場合には、図２０の（２）より図２５の（２）に進む。
【０１１４】
図２５において、（２）よりステップ４２０からステップ４３１までの制御も、先のキャッシュメモリ制御処理手法１における制御方法を示す図２１と同様である。そのため、ここではステップ４３１以降について説明する。
【０１１５】
ステップ４３１では、ディスクアダプタは、書き込み要求元のチャネルアダプタ以外の他のチャネルアダプタが当該データの送付先として登録されていないかどうか判定する。判定の結果登録されていなければ、図２１と同様にステップ４３４に進む。判定の結果、他のチャネルアダプタが登録されていれば、ステップ４３５に進む。ステップ４３５においては、ディスクアダプタは、登録されている他のチャネルアダプタに対し、当該データ領域の書き込みが行われたことを通知し、そのチャネルアダプタに接続しているフロントサイドキャッシュ上の当該書き込みデータに対する旧データを削除させ、無効化させる。
【０１１６】
次に、ステップ４３６において、ディスクアダプタは、無効化させたチャネルアダプタを当該データの送付先の登録から削除する。その後、ステップ４３７にて当該データの送付先として登録されたすべての他のチャネルアダプタについて、無効化させたかどうか判定する。また無効化させていないチャネルアダプタがある場合にはステップ４３５に戻って繰り返す。
【０１１７】
ステップ４３７にて他のすべてのチャネルアダプタに接続するフロントサイドキャッシュの当該データの無効化が終了したと判定されたら、次にステップ４３４に進む。ステップ４３４では、ディスクアダプタは、書き込み終了を書き込み要求元のチャネルアダプタに報告して、終了する。
【０１１８】
図２５に示すバックサイドキャッシュの第２の制御方法（キャッシュメモリ制御処理手法２）において、他のフロントサイドキャッシュの読み出しおよび書き込みの制御については、前述した図１８、図１９の方法と同じである。またフロントサイドキャッシュの領域確保、バックサイドキャッシュの領域確保、バックサイドキャッシュのデータのディスクドライブへの書き戻しの制御の方法も前述した図２２、図２３、図２４の方法と同じである。
【０１１９】
「キャッシュメモリ制御処理手法３」 
次に、本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法３のうち、フロントサイドキャッシュの書き込みを制御する第２の制御方法について、図２６を参照しながら以下説明する。
【０１２０】
ストレージシステムのキャッシュメモリを制御する制御方法において、上述したキャッシュメモリ制御処理手法１とキャッシュメモリ制御処理手法２の制御方法では、ホスト計算機からデータの書き込みが行われた時、信頼性の向上のためのその書き込みデータの２重化は、フロントサイドキャッシュとバックサイドキャッシュを用いて行われている。このとき、フロントサイドキャッシュ上のホスト計算機からの書き込みデータは、同じデータがバックサイドキャッシュよりディスクドライブに書き戻されるまで破棄することができず、フロントサイドキャッシュの容量を圧迫することがある。
【０１２１】
そこで、図２６に示すキャッシュメモリの制御方法においては、バックサイドキャッシュを２個用いて書き込みデータの２重化を行うように制御するものであり、この制御方法によると、書き込みデータに関してバックサイドキャッシュを２倍使用するが、バックサイドキャッシュからのディスクドライブへのデータの書き戻しの有無に関わらずフロントサイドキャッシュのデータを必要に応じて破棄し、データ領域を再利用することが可能となる。
【０１２２】
図２６は、本発明によるストレージシステムのフロントサイドキャッシュの書き込みを制御する第２の制御方法を説明する図である。本キャッシュメモリ制御処理手法３の制御方法において、ホスト計算機からの要求の受信と判定、読み出しであった場合の制御の方法は、先のキャッシュメモリ制御処理手法１の図１８の方法と同じである。すなわち、ホスト計算機からの要求を受信し、読み出しであれば図１８と同様の制御を行う。書き込みである場合には、図１８の（１）より図２６の（１）に進む。図２６において、（１）よりステップ３２１からステップ３２５までの制御も、先の図１９と同様である。そのため、本キャッシュメモリ制御処理手法３の制御方法ではステップ３２５以降について説明する。
【０１２３】
図２６にて、ステップ３２５では、先のキャッシュメモリ制御処理手法１の図１９と同じく、チャネルアダプタは、論理ボリューム番号ＬＵＮ及び論理ブロックアドレスをＲＡＩＤグループＩＤ、ブロックアドレスに変換する。次にステップ３８０に進み、チャネルアダプタは、ＲＡＩＤグループＩＤに基づいて、書き込んだデータを送出する１個目のディスクアダプタと２個目のペアとなるディスクアダプタを特定する。これには例えば図８に示したようなデータ構造からなる制御情報を用いればよい。
【０１２４】
次にステップ３８１において、チャネルアダプタは、ディスクアダプタ、ペアディスクアダプタの双方にデータ書き込み要求を行い、フロントサイドキャッシュに書き込んだホスト計算機からの書き込みデータを送出して、それぞれのバックサイドキャッシュに書き込ませる。そして、書き込みステータスを双方から計２個取得する。ステップ３８２において、チャネルアダプタは、２個の書き込みステータスが両方ともエラーなしであるかどうか判定する。判定の結果、どちらかにエラーがあればステップ３８３に進み、フロントサイドキャッシュ上のホスト計算機からの書き込みデータを破棄する。またステップ３８４に進み、２個の書き込みステータスのうち、どちらか一方はエラーなしであったかどうか判定する。２個ともエラーであった場合には、ステップ３８６に進む。
【０１２５】
ステップ３８４において、もしどちらか一方の書き込みステータスがエラーなしであった場合には、ステップ３８５に進み、チャネルアダプタは、エラーのなかった方のディスクアダプタに書き込みのキャンセルを通知し、そのバックサイドキャッシュに書き込んだデータを破棄させる。またもしこのバックサイドキャッシュにおいてキャンセルされた書き込みにより、当該チャネルアダプタが新たに当該データの送付先として登録されたのであれば、その登録もキャンセルさせる。その後、ステップ３８６に進み、チャネルアダプタは、書き込みエラーをホスト計算機に報告して終了する。
【０１２６】
ステップ３８２において、２個の書き込みステータスの両方ともエラーなしである場合は、以降のステップ３３１からの制御の方法は先の図１９の同じくステップ３３１以降の制御の方法と同じである。
【０１２７】
次に、本キャッシュメモリ制御処理手法３におけるバックサイドキャッシュの制御の方法を説明する。バックサイドキャッシュの制御方法のうち、１個目のバックサイドキャッシュの制御の方法は、先のキャッシュメモリ制御処理手法１の図２０及び図２１、または先のキャッシュメモリ制御処理手法２の図２５と同じでよい。このため、ここでは２個目の書き込みのみを行うバックサイドキャッシュの制御方法を説明する。
【０１２８】
図２７は、２個目の書き込みのみを行うバックサイドキャッシュの制御方法を説明する図である。図２７において、まずステップ４４１にて２個目のペアディスクアダプタがチャネルアダプタより書き込み要求を受信する。次にステップ４４２において、ディスクアダプタは、当該バックサイドキャッシュ上に新たに書き込むデータに対応する旧データが存在するかどうか検索する。
【０１２９】
次にステップ４４３において、その検索の結果が判定され、検索の結果、旧データが当該バックサイドキャッシュ上に存在すれば、ステップ４４８に進み、その旧データをチャネルアダプタから送信されてくる書き込みデータで上書きし、ステップ４４９に進む。ステップ４４３において、検索の結果、旧データが当該バックサイドキャッシュ上に存在しない場合には、ステップ４４４に進み、ディスクアダプタは、当該バックサイドキャッシュ上に新たに書き込みデータを格納するための領域を確保する。
【０１３０】
領域確保に成功したかどうかは次のステップ４４５で判定され、領域確保に失敗した場合には、ステップ４４６に進み、ディスクアダプタは、要求元のチャネルアダプタに書き込みエラーを報告し、終了する。ステップ４４５で判定の結果、領域確保に成功した場合には、ステップ４４７に進み、ディスクアダプタは、チャネルアダプタより書き込みデータを受信して、当該バックサイドキャッシュ上の確保した領域に格納する。その後ステップ４４９へ進む。ステップ４４９では、ディスクアダプタは、要求元のチャネルアダプタが、当該データの送付先として登録されているかどうか、検索する。これは、例えば先に図１１に示したようなデータ構造を検索することで実現される。
【０１３１】
次にステップ４５０では、ステップ４４９の検索の結果が判定され、要求元のチャネルアダプタが既に当該データの送付先として登録済みであれば、ステップ４５２に進む。要求元のチャネルアダプタが当該データの送付先としてまだ登録されていなければ、ディスクアダプタは、ステップ４５１にて送付先として登録する。これも同じく、例えば図１１に示したようなデータ構造の制御情報のエントリを追加することで行うことができる。その後ステップ４５２に進む。ステップ４５２では、ディスクアダプタは、書き込み完了を書き込み要求元のチャネルアダプタに報告し、終了する。
【０１３２】
このとき、図２１または図２５に示される１個目のバックサイドキャッシュの制御の方法とは異なり、図２７の２個目のバックサイドキャッシュの制御においては、ディスクアダプタは、新たな書き込みがあったことを当該データの他のチャネルアダプタに通知する必要はない。新たな書き込みがあったことを当該書き込みデータに対する旧データを持つ他のチャネルアダプタに通知することは、図２１または図２５の制御の方法により、１個目のバックサイドキャッシュに接続する１個目のディスクアダプタより行われる。なお、ステップ４５１における要求元のチャネルアダプタを当該データの送付先として登録する制御は、１個目のバックサイドキャッシュが障害により使用不能になった場合には、その処理を引き継げるようにするために行うものである。
【０１３３】
そして、本キャッシュメモリ制御処理手法３において、フロントエンドキャッシュの領域確保の制御方法、バックエンドキャッシュの制御方法は、それぞれ先のキャッシュメモリ制御処理手法１の図２２、図２３に示した制御方法と若干異なる。より詳細には、フロントサイドキャッシュの領域の再利用はバックサイドキャッシュからのディスクドライブへの書き込み（書き戻し）の有無に関わらず行えること、１個のチャネルアダプタは２個のディスクアダプタと連携して制御されること、及び２個のディスクアダプタの間も連携して制御されること、による。
【０１３４】
図２８は、先のキャッシュメモリ制御処理手法１の図２２に替わる、本発明のストレージシステムに係るキャッシュメモリ制御処理手法３のフロントサイドキャッシュの領域確保を制御する第２の制御方法を示すフローチャートである。図２８において、チャネルアダプタは、まずステップ３４０にて当該フロントサイドキャッシュ上の未使用領域が必要なだけ残っているかチェックする。ステップ３４１にてそのチェック結果が判定され、必要なだけ未使用領域が残っていた場合には、ステップ３４２に進み、未使用領域より必要なだけ領域を割り当てて、領域確保に成功したとする。
【０１３５】
ステップ３４１の判定の結果、未使用領域が充分に残っていなかった場合にはステップ３４３に進む。ステップ３４３では、チャネルアダプタは、予め定める一定回数以上繰り返したどうか、繰り返し回数を数えてチェックする。ステップ３４４でそのチェック結果が判定され、既に予め定める一定回数以上繰り返していれば、領域確保失敗とする。まだ一定回数以上繰り返していなければ、ステップ３４５に進み、チャネルアダプタは、当該フロントサイドキャッシュ上で最も古いデータの領域を決定する。
【０１３６】
次にステップ３４６で、チャネルアダプタは、そのデータ領域のデータに対応する論理ボリューム番号ＬＵＮと論理ブロックアドレスを、例えば先に図５に示したようなデータ構造の変換情報を用いて、ＲＡＩＤグループＩＤ、ブロックアドレスに変換する。次にステップ３４７において、チャネルアダプタは、ＲＡＩＤグループＩＤより、同じく先に図８に示したようなデータ構造の制御情報を用いて、１個目のディスクアダプタ及び２個目のペアディスクアダプタを特定する。
【０１３７】
その後ステップ３４８において、チャネルアダプタは、フロントサイドキャッシュ上の当該データ領域を破棄して未使用領域とする。次にステップ３４９において、チャネルアダプタは、当該データ領域を破棄したことをステップ３４７において特定したディスクアダプタ、ペアディスクアダプタに通知し、両者の当該データの送付先の登録から、当該チャネルアダプタを削除させる。そして、ステップ３４０に戻り、全体の処理を繰り返す。
【０１３８】
次に、図２０のステップ４０５及び図２１のステップ４２２で行われるバックサイドキャッシュの領域確保を行う方法の詳細を説明する。図２９は、先のキャッシュメモリ制御処理手法１の図２３に替わる、本発明のストレージシステムに係るキャッシュメモリ制御処理手法３のバックサイドキャッシュの領域確保を制御する第２の制御方法を示すフローである。なお、図２９において説明するバックエンドキャッシュの領域確保を制御する方法は、１個目のバックエンドキャッシュについてのみ適用される。
【０１３９】
図２７のステップ４４４における２個目のバックエンドキャッシュの領域確保は、単純に未使用領域から必要なだけ割り当てることで行われる。なお、１個目のバックエンドキャッシュと２個目のバックエンドキャッシュは、それぞれのバックエンドキャッシュへの負荷を平均化するため、管理単位（ＲＡＩＤグループＩＤ）の異なるデータに関しては役割を交代することも考えられる。このときは、図２９に説明するバックエンドキャッシュの領域確保を制御する方法は、当該バックエンドキャッシュが１個目のバックエンドキャッシュとして動作したデータ領域についてのみ適用される。
【０１４０】
図２９において、ディスクアダプタは、まずステップ４６０にて当該バックサイドキャッシュ上の未使用領域が必要なだけ残っているかチェックする。ステップ４６１にてそのチェック結果が判定され、必要なだけ未使用領域が残っていた場合には、ステップ４６２に進み、未使用領域より必要なだけ領域を割り当てて、領域確保に成功したとする。ステップ４６１の判定の結果、未使用領域が充分に残っていなかった場合にはステップ４６３に進む。
【０１４１】
ステップ４６３では、ディスクアダプタは、予め定める一定回数以上繰り返したどうか、繰り返し回数を数えてチェックする。ステップ４６４でそのチェック結果が判定され、既に予め定める一定回数以上繰り返していれば、領域確保失敗とする。まだ一定回数以上繰り返していなければ、ステップ４６５に進み、ディスクアダプタは、当該バックサイドキャッシュ上で最も古いデータの領域を決定する。
【０１４２】
次に、ステップ４６６にて、ディスクアダプタは、そのデータ領域のデータが既にディスクドライブに書き戻されているかどうかをチェックする。これには、例えば先に図９に示したようなデータ構造を用いて、バックサイドキャッシュにデータを格納しておけばよい。ステップ４６６では、図９のようなデータ構造の各エントリの書き込みマークＤを参照して、まだデータがディスクドライブに書き戻されていないかどうかチェックすることができる。
【０１４３】
ステップ４６６のチェックの結果をステップ４６７において判定する。判定の結果、既にディスクドライブに書き戻されていた場合にはステップ４７１に進む。ステップ４６７における判定の結果、まだディスクドライブに書き戻されていない場合には、ステップ４６８に進み、ディスクアダプタは、当該データ領域のデータのＲＡＩＤグループＩＤに基づいて、先に図１０に示したような制御情報を用いてＲＡＩＤタイプを調べ、当該データを書き戻すディスクドライブを決定する。次にステップ４６９にて当該データをディスクに書き戻す。
【０１４４】
次にステップ４７０にて、ディスクアダプタは、当該データをディスクドライブに書き戻したことを、当該データの２個目のバックエンドキャッシュに接続するディスクアダプタとして登録されているディスクアダプタに通知し、当該書き込みデータを破棄させ、そのデータ領域を未使用領域とする。このような２個目のディスクアダプタの検索は、図１２に示したようなデータ構造を用いた制御情報を検索することで行うことができる。次にステップ４７１にて、ディスクアダプタは、バックサイドキャッシュ上の当該データ領域を破棄し、未使用領域とする。その後、ステップ４６０に戻って全体の処理を繰り返す。
【０１４５】
次に、図３０は、先のキャッシュメモリ制御処理手法１の図２４に示す制御方法に替わる、本発明のストレージシステムに係るキャッシュメモリ制御処理手法３のバックサイドキャッシュの書き込みデータをディスクドライブへ書き戻し制御する第２の制御方法を示すフローである。図３０に示すように、データの書き戻しを制御する方法も、先のキャッシュメモリ制御処理手法１の図２４に示した方法と若干異なる。２個のディスクアダプタの間も連携して制御されることによる。
【０１４６】
図３０において、まずステップ４８０にて、ディスクアダプタは、バックサイドキャッシュの未使用領域の残量（空き容量）が、予め定めた一定値以下かどうかチェックする。ステップ４８１にてその結果を判定し、もし空き容量が充分になければ、ステップ４８２に進む。ステップ４８２では、ディスクアダプタは、まだディスクドライブに書き戻していないデータの量が予め定めた一定値以上かどうかチェックする。ステップ４８３でそのチェックの結果を判定し、もし書き戻していないデータの量が予め定める一定値以下なら、処理を終了する。また書き戻していないデータの量が予め定める一定値以上であれば、ステップ４８４に進み、ディスクアダプタは、まだ書き戻していないデータの中で最も古い書き込みデータの領域を決定する。その後ステップ４８７に進む。
【０１４７】
また、ステップ４８１の判定において、バックサイドキャッシュの空き容量が予め定める一定値以上であった場合には、ステップ４８５に進み、ディスクアダプタは、バックサイドキャッシュ上でまだディスクドライブに書き戻していない書き込みデータの中で、バックサイドキャッシュに書き込まれてから、予め定める一定時間以上経過したデータ領域があるかどうか検索する。その検索結果をステップ４８６で判定する。もし予め定める一定時間以上経過したデータ領域がなければ、処理を終了する。
【０１４８】
ステップ４８６の判定の結果、予め定める一定時間以上経過したデータ領域があれば、ステップ４８７に進む。ステップ４８７では、ディスクアダプタは、ステップ４８４で決定された最も古い書き込みデータのデータ領域もしくはステップ４８６で予め定める一定時間以上経過した書き込みデータのデータ領域について、当該データのＲＡＩＤグループＩＤに基づき、図１０に示したような制御情報を用いてＲＡＩＤタイプを調べ、当該データを書き戻すディスクドライブを決定する。
【０１４９】
次にステップ４８８にて、ディスクアダプタは、当該データをディスクに書き戻す。その後、ステップ４８９にて、当該データの２個目のバックエンドキャッシュに接続するディスクアダプタとして登録されているディスクアダプタにディスクドライブへ書き戻したことを通知し、当該書き込みデータを破棄させ、そのデータ領域を未使用領域とする。このような２個目のディスクアダプタの検索は、先の図２９のステップ４７０と同じく、図１２に示したようなデータ構造を用いた制御情報を検索することで行うことができる。最後にステップ４９０に進み、ディスクアダプタは、当該バックサイドキャッシュ上の図９のようなデータ構造における当該データ領域の書き込みマークＤを書き戻し済みとして、当該データが書き込み終了であることを示し、処理を終了する。
【０１５０】
「キャッシュメモリ制御処理手法４」
本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法において、先のキャッシュメモリ制御処理手法１では、ホスト計算機よりフロントサイドキャッシュに書き込まれたデータは、バックサイドキャッシュにも書き込まれるが、バックサイドキャッシュからディスクドライブに当該書き込みデータが書き戻されるまで、フロントサイドキャッシュの書き込みデータ領域は再利用することができない。これは複数のフロントサイドキャッシュに当該データが格納される場合も同じである。しかし、もともとこの制御は、フロントサイドキャッシュとバックサイドキャッシュで書き込みデータを２重化するための制御の方法であり、複数のフロントサイドキャッシュに当該書き込みデータが格納される場合には、本来は当該書き込みデータをバックサイドキャッシュからディスクドライブに書き戻すまで保持するのは、そのうち一つのフロントサイドキャッシュの書き込みデータだけでよい。
【０１５１】
本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法４においては、複数のフロンサイドキャッシュのすべてで書き込みデータを保持しなくても良いようにする。
【０１５２】
本キャッシュメモリ制御処理手法４では、まずディスクアダプタにおいて各データ毎に送付したチャネルアダプタを記録する際に、最新の書き込みを行ったチャネルアダプタにマークを付与するようにする。図３１は、このために、先のキャッシュメモリ制御処理手法１で用いる図１１に示すデータ構造に替えて用いる制御情報のデータ構造を示す図である。
【０１５３】
図３１に示すデータ構造は、データ構造のそれぞれのエントリが有効なデータであることを示す有効マークＶと、管理単位を識別するＲＡＩＤグループＩＤと、管理単位内のデータブロックを識別するブロックアドレスと、送出先チャネルアダプタの番号と、最新の書き込みを行ったチャネルアダプタを示すマークと、からなっている。このようなデータ構造を持つ制御情報を用いることにより、上述のような制御が可能となる。
【０１５４】
本キャッシュメモリ制御処理手法４において、フロントサイドキャッシュの読み出し、書き込みを制御する方法、バックサイドキャッシュの読み出しを制御する方法は、先のキャッシュメモリ制御処理手法１の、それぞれ図１８、図１９、図２０に説明した方法と同じである。バックサイドキャッシュの書き込みを制御する方法は、若干異なる。
【０１５５】
図３２は、本キャッシュメモリ制御処理手法４におけるバックサイドキャッシュにおける書き込みを制御する第３の制御方法を示す図である。図３２は、ステップ４２０から、ステップ４２６までは、先のキャッシュメモリ制御処理手法１の図２１と同じである。このため、ここではステップ４２６の後から説明する。
【０１５６】
図３２において、ステップ４２６もしくはステップ４２５の後は、ステップ５５０に進む。ステップ５５０では、ディスクアダプタは、図３１に示したようなデータ構造によって、書き込み要求元のチャネルアダプタを、当該データの最新の書き込みデータ先として、登録する。次にステップ４３０では、当該データに対し、他のチャネルアダプタが送付先として登録されているかどうか検索する。これも図３１に示したようなデータ構造の制御情報を検索することで行うことができる。
【０１５７】
ステップ４３１では、ステップ４３０の検索の結果が判定され、他のチャネルアダプタの登録がなければ、ステップ４３４に進む。もし他のチャネルアダプタの登録があれば、ステップ４３２に進み、ディスクアダプタは、新たにステップ４２６もしくは４２５でバックサイドキャッシュ上に書き込まれた書き込みデータをそのチャネルアダプタに送付し、そのチャネルアダプタに接続されているフロントサイドキャッシュ上の旧データを更新させる。
【０１５８】
次にステップ５５１において、登録されている他のチャネルアダプタに接続されたフロントサイドキャッシュに関し、図７のようなデータ構造に含まる書き込みマークＤを書き込み済みに変更させ、任意の時点で当該データ領域の再利用ができるようにする。次にステップ４３３において、ディスクアダプタは、登録されたすべてのチャネルアダプタについて、新たに書き込まれた書き込みデータを送付したどうかを判定する。もしまだ送付していないチャネルアダプタがあれば、ステップ４３２に戻って繰り返す。当該データの送付先として登録されたすべてのチャネルアダプタに新たに書き込まれたデータの送付が終わればステップ４３４に進む。ステップ４３４では、ディスクアダプタは、書き込み完了を書き込み要求元のチャネルアダプタに報告し、終了する。
【０１５９】
以上のようにして、本キャッシュメモリ制御処理手法４においても、最新の書き込みデータ先として登録されたチャネルアダプタ以外のチャネルアダプタに関して、フロントサイドキャッシュ上の当該データを書き込み完了に見せることにより、フロントサイドキャッシュの領域確保を制御する方法も先のキャッシュメモリ制御処理手法１の図２２と同じとすることができる。また、バックサイドキャッシュの領域確保を制御する方法は、先のキャッシュメモリ制御処理手法１の図２３と一部異なる。
【０１６０】
図３３は、本キャッシュメモリ制御処理手法４におけるバックサイドキャッシュの領域確保を制御する第３の制御方法を説明する図である。図３３において、ステップ５０１からステップ５１０までは、図２３に説明した制御の方法と同じである。ここでは、ステップ５１０以降について説明する。ステップ５１０では、図２３に説明した制御の方法と同じく、ディスクアダプタは、ステップ５０６で決定した最も古いデータ領域について、まだディスクドライブに書き戻していない書き込みデータをディスクドライブに書き戻す。
【０１６１】
次にステップ５４０にて、ディスクアダプタは、当該データをディスクドライブに書き戻したことを、当該データの最新の書き込みデータ先として登録されているチャネルアダプタに通知し、当該チャネルアダプタにおいて、図７のようなデータ構造に含まる書き込みマークＤを書き込み済みに変更させる。このとき、図２３に説明した制御の方法とは異なり、他のチャネルアダプタには何の通知も行わない。次にステップ５１３に進み、ディスクアダプタは、バックサイドキャッシュ上の当該データ領域を破棄し、未使用領域とする。その後、ステップ５０１に戻って全体の処理を繰り返す。
【０１６２】
本キャッシュメモリ制御処理手法４におけるバックサイドキャッシュからディスクドライブへのデータの書き戻しを制御する方法についても、先のキャッシュメモリ制御処理手法１において図２４で説明した方法とは一部異なる。
【０１６３】
図３４は、本キャッシュメモリ制御処理手法４におけるバックサイドキャッシュの書き戻しの制御の方法を説明する図である。図３４において、ステップ５２０からステップ５２８までは、図２４に説明した制御の方法と同じである。ここでは、ステップ５２８以降について説明する。ステップ５２８では、図２４と同じく、書き込みデータのディスクドライブへの書き戻しを行う。
【０１６４】
次にステップ５４１にて、ディスクアダプタは、当該データをディスクドライブに書き戻したことを、当該データの最新の書き込みデータ先として登録されているチャネルアダプタに通知し、当該チャネルアダプタにおいて、図７のようなデータ構造に含まる書き込みマークＤを書き込み済みに変更させる。このとき、図２４に説明した制御の方法とは異なり、他のチャネルアダプタには何の通知も行わない。次にステップ５３１に進み、バックサイドキャッシュ上の図９のようなデータ構造における当該データ領域の書き込みマークＤを書き戻し済みとして、当該データが書き込み終了であることを示し、処理を終了する。
【実施例４】
【０１６５】
図３５は、本発明のストレージシステムに係る実施例４の全体構成を示すブロック図である。図３５に示す実施例４のストレージシステム１は、先の実施例１、２、３とは異なり、チャネルアダプタやＦＥアダプタ、ディスクアダプタやＢＥアダプタとして開示しておらず、ホスト計算機側との間で２つの系統で接続された具体的構成、並びにそれらの関連構成を示す実施例である。
【０１６６】
図３５において、ストレージシステム１は、ホスト計算機と接続するホストＩ／Ｆ回路６０１ａ及び６０１ｂ、ホスト計算機と送受するデータや制御コマンドを一時的にバッファするコマンド・データ・バッファ６０２ａ及び６０２ｂ、第１の種類のキャッシュメモリであるフロントサイドキャッシュ１１ａ及び１１ｂ、フロントサイドキャッシュ１１ａ及び１１ｂにそれぞれ接続して制御を行うフロントエンド制御部６０３ａ及び６０３ｂ、プロセッサ６０５ａ及び６０５ｂ、ローカルメモリ６０６ａ及び６０６ｂ、第２の種類のキャッシュメモリであるバックサイドキャッシュ１４ａ及び１４ｂ、ディスクドライブ群１５ａ及び１５ｂ、ディスクドライブ群１５ａ及び１５ｂに接続するディスクドライブＩ／Ｆ回路６０７ａ及び６０７ｂ、プロセッサ６０５ａ及び６０５ｂとローカルメモリ６０６ａ及び６０６ｂとバックサイドキャッシュ１４ａ及び１４ｂとディスクドライブＩ／Ｆ回路６０７ａ及び６０７ｂをそれぞれ接続するローカル接続部６０８ａ及び６０８ｂ、二つのフロントエンド制御部６０３ａ及び６０３ｂと二つのローカル接続部６０８ａ及び６０８ｂを接続する相互接続部６０４、から構成される。ホストＩ／Ｆ回路、コマンド・データ・バッファ、フロントエンド制御部の三つをまとめてチャネルアダプタ相当となり、プロセッサ、ローカルメモリ、ローカル接続部、ディスクドライブＩ／Ｆ回路の四つをまとめてディスクアダプタ相当となる。
【０１６７】
図３５において、フロントエンド制御部６０３ａ及び６０３ｂは、それぞれコマンド・データ・バッファ６０２ａ及び６０２ｂに一時的に格納されるホスト計算機からの制御コマンドの一次解析を行い、ホスト計算機から受信したコマンドがデータの読み出し要求であるか、書き込み要求であるか判定する。またその判定結果を基にフロントサイドキャッシュ１１ａ及び１１ｂの制御を行うが、これについては、ホスト計算機からの要求がデータの読み出しであり、かつデータがフロントサイドキャッシュ１１ａ及び１１ｂ内に存在するかどうか判定し、存在した場合にホスト計算機へデータを返送する動作に限り制御を行うことが考えられる。
【０１６８】
バックサイドキャッシュ１４ａ〜１４ｄへのデータの読み出し・書き込みが必要となるデータがフロントサイドキャッシュ１１ａ〜１１ｄになかった場合、およびホスト計算機からの要求が書き込み要求であった場合には、フロントエンド制御部６０３ａ及び６０３ｂは、それぞれプロセッサ６０５ａ及び６０５ｂへ通知を行い、以降の制御はプロセッサ６０５ａ及び６０５ｂにより行われる。ローカルメモリ６０６ａ及び６０６ｂにはそれぞれプロセッサ６０５ａ及び６０５ｂで動作する制御プログラムを格納するほか、図５、図６、図８、図１０、図１１および図１２に示したようなデータ構造を格納しても良い。
【０１６９】
以上のような構成とすることにより、ストレージシステム１全体の規模は小さくなるが、先の実施例１、２及び３に比べて構成要素も少なく、２個のネットワークスイッチが図３５では接続数が大幅に小さい相互接続部６０４一つに置き換わる構成であるので、システム規模の縮小を上回る大きなコスト低減が可能である。
【０１７０】
図３５に示したストレージシステムの実施例の動作は、図１、図１３、図１４にそれぞれ示した実施例１、実施例２、実施例３のそれぞれとほぼ同様である。図５、図６、図８、図１０、図１１および図１２に掲げたような制御用のデータ構造については、チャネルアダプタ番号をフロントエンド制御部６０３ａ及び６０３ｂの番号（０又は１の２種）に、ディスクアダプタ番号をプロセッサ６０５ａ及び６０５ｂの番号（同じく０と１の２種）と読み替えて、そのまま用いることが可能である。
【０１７１】
また、本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリの制御処理手法１、２、３、４は、本実施例４にも基本的に採用可能である。
【図面の簡単な説明】
【０１７２】
【図１】本発明のストレージシステムに係る実施例１の全体構成を示すブロック図である。
【図２】本実施例１におけるチャネルアダプタがプロセッサを備えた構成である例を示した図である。
【図３】本実施例１におけるディスクアダプタがプロセッサを備えた構成である例を示した図である。
【図４】本実施例１におけるフロントサイドキャッシュ内に格納されるブロックデータのデータ構造の第１の例を示す図である。
【図５】チャネルアダプタにおける論理ボリューム番号、論理ブロックアドレスをディスクアダプタにおけるＲＡＩＤグループＩＤ、ブロックアドレスに変換する変換情報のデータ構造を示す図である。
【図６】ＲＡＩＤグループＩＤよりディスクアダプタを特定するための制御情報のデータ構造を示す図である。
【図７】フロントサイドキャッシュ内に格納されるブロックデータのデータ構造の第２の例を示す図である。
【図８】ＲＡＩＤグループＩＤよりディスクアダプタ、ペアディスクアダプタを特定するための制御情報のデータ構造を示す図である。
【図９】バックサイドキャッシュ内に格納されるブロックデータのデータ構造を示す図である。
【図１０】ＲＡＩＤグループＩＤからディスクドライブを特定するための制御情報のデータ構造を示す図である。
【図１１】データを送付したチャネルアダプタを記録する制御情報の第１のデータ構造を示す図である。
【図１２】データを送付したチャネルアダプタおよびペアとなるディスクアダプタを記録する制御情報のデータ構造を示す図である。
【図１３】本発明のストレージシステムに係る実施例２の全体構成を示すブロック図である。
【図１４】本発明のストレージシステムに係る実施例３の全体構成を示すブロック図である。
【図１５】本実施例３におけるＦＥアダプタの構成例を示す図である。
【図１６】本実施例３におけるＢＥアダプタの構成例を示す図である。
【図１７】本実施例３における統合制御部の構成例を示す図である。
【図１８】本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法１のうち、第１の種類のキャッシュメモリであるフロントサイドキャッシュの読み出しを制御する制御方法を示すフローチャートである。
【図１９】本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法１のうち、フロントサイドキャッシュの書き込みを制御する第１の制御方法を示すフローチャートである。
【図２０】本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法１のうち、バックサイドキャッシュの読み出しを制御する制御方法を示すフローチャートである。
【図２１】本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法１のうち、バックサイドキャッシュの書き込みを制御する第１の制御方法を示すフローチャートである。
【図２２】本キャッシュメモリ制御処理手法１におけるフロントサイドキャッシュの領域確保を制御する第１の制御方法を示すフローチャートである。
【図２３】本キャッシュメモリ制御処理手法１におけるバックサイドキャッシュの領域確保を制御する第１の制御方法を示すフローチャートである。
【図２４】本キャッシュメモリ制御処理手法１におけるバックサイドキャッシュの書き込みデータをディスクドライブへ書き戻し（書き込み）制御する第１の制御方法を示すフローチャートである。
【図２５】本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法２のうち、バックサイドキャッシュの書き込みを制御する第２の制御方法を示すフローチャートである。
【図２６】本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法３のうち、フロントサイドキャッシュの書き込みを制御する第２の制御方法を示すフローチャートである。
【図２７】本キャッシュメモリ制御処理手法３における２個目のバックサイドキャッシュの書き込みを制御する制御方法を示すフローチャートである。
【図２８】本キャッシュメモリ制御処理手法３におけるフロントサイドキャッシュの領域確保を制御する第２の制御方法を示すフローチャートである。
【図２９】本キャッシュメモリ制御処理手法３におけるバックサイドキャッシュの領域確保を制御する第２の制御方法を示すフローチャートである。
【図３０】本キャッシュメモリ制御処理手法３におけるバックサイドキャッシュの書き込みデータをディスクドライブへ書き戻し制御する第２の制御方法を示すフローチャートである。
【図３１】本発明のストレージシステムに係る実施例１〜３に適用されるキャッシュメモリ制御処理手法４におけるデータを送付したチャネルアダプタを記録する制御情報の第２のデータ構造を示す図である。
【図３２】本キャッシュメモリ制御処理手法４におけるバックサイドキャッシュの書き込みを制御する第３の制御方法を示すフローチャートである。
【図３３】本キャッシュメモリ制御処理手法４におけるバックサイドキャッシュの領域確保を制御する第３の制御方法を示すフローチャートである。
【図３４】本キャッシュメモリ制御処理手法４におけるバックサイドキャッシュの書き込みデータをディスクドライブへ書き戻し（書き込み）制御する第３の制御方法を示すフローチャートである。
【図３５】本発明のストレージシステムに係る実施例４の全体構成を示すブロック図である。
【符号の説明】
【０１７３】
１  ストレージシステム
１０ａ，１０ｂ，１０ｃ，１０ｄ  チャネルアダプタ
１１ａ，１１ｂ，１１ｃ，１１ｄ  フロントサイドキャッシュ
１２ａ，１２ｂ，２１ａ，２１ｂ，２２ａ，２２ｂ，２４ａ，２４ｂ  ネットワークスイッチ
１３ａ，１３ｂ，１３ｃ，１３ｄ  ディスクアダプタ
１４ａ，１４ｂ，１４ｃ，１４ｄ  バックサイドキャッシュ
１５ａ，１５ｂ，１５ｃ，１５ｄ  ディスクドライブ群
２０ａ，２０ｂ，２０ｃ，２０ｄ  ＦＥアダプタ
２３ａ，２３ｂ，２３ｃ，２３ｄ  ＢＥアダプタ
２０１，２１１，２４１，６０５ａ，６０５ｂ  プロセッサ
２０２，２１２，２４２，６０６ａ，６０６ｂ  ローカルメモリ
２０３ａ，２０３ｂ，２１３ａ，２１３ｂ，２２１ａ，２２１ｂ，２３０ａ，２３０ｂ，２４４ａ，２４４ｂ  ネットワーク接続回路
２０４，２２０，６０１ａ，６０１ｂ  ホストＩ／Ｆ回路
２０５，２１５，２４３  プロセッサバス
２１４，２３１，６０７ａ，６０７ｂ  ディスクドライブＩ／Ｆ回路
２２２，２３２，６０２ａ，６０２ｂ  コマンド・データ・バッファ
２２３  コマンド一次解析部
２２４  ローカルスイッチ部
２３３  コマンド／ステータス制御部
６０３ａ，６０３ｂ  フロントエンド制御部
６０４  相互接続部
６０８  ローカル接続部
【図１】
2005258918.tif 000003
【図２】
2005258918.tif 000004
【図３】
2005258918.tif 000005
【図４】
2005258918.tif 000006
【図５】
2005258918.tif 000007
【図６】
2005258918.tif 000008
【図７】
2005258918.tif 000009
【図８】
2005258918.tif 000010
【図９】
2005258918.tif 000011
【図１０】
2005258918.tif 000012
【図１１】
2005258918.tif 000013
【図１２】
2005258918.tif 000014
【図１３】
2005258918.tif 000015
【図１４】
2005258918.tif 000016
【図１５】
2005258918.tif 000017
【図１６】
2005258918.tif 000018
【図１７】
2005258918.tif 000019
【図１８】
2005258918.tif 000020
【図１９】
2005258918.tif 000021
【図２０】
2005258918.tif 000022
【図２１】
2005258918.tif 000023
【図２２】
2005258918.tif 000024
【図２３】
2005258918.tif 000025
【図２４】
2005258918.tif 000026
【図２５】
2005258918.tif 000027
【図２６】
2005258918.tif 000028
【図２７】
2005258918.tif 000029
【図２８】
2005258918.tif 000030
【図２９】
2005258918.tif 000031
【図３０】
2005258918.tif 000032
【図３１】
2005258918.tif 000033
【図３２】
2005258918.tif 000034
【図３３】
2005258918.tif 000035
【図３４】
2005258918.tif 000036
【図３５】
2005258918.tif 000037