(57)【要約】キャッシュ装置およびディスク装置とともにネットワーク上に分散配置されてストレージシステムを形成し、クライアントからのアクセス要求を受け付け、キャッシュ制御装置および実ディスク制御装置にアクセス要求に応じた処理を実行させるストレージ制御装置であって、クライアントが書き込みを要求したデータを２台のキャッシュ制御装置のキャッシュメモリに書き込むように制御するデータ書き込み処理部と、クライアントが読み出しを要求したデータが２台のキャッシュ制御装置のどちらにもない場合に、ディスク制御装置からデータを読み出し、読み出したデータを１台のキャッシュ制御装置だけに記憶させるように制御するデータ読み出し処理部とを備える。
2004027625.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュ装置およびディスク装置とともにネットワーク上に分散配置されてストレージシステムを形成し、クライアントからのアクセス要求を受け付け、該キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御装置であって、
前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御する書き込み制御手段と、
前記クライアントが読み出しを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、前記ディスク装置から該データを読み出し、該読み出したデータをあるキャッシュ装置だけに記憶させるとともに前記クライアントに送信するように制御する読み出し制御手段と、
を備えたことを特徴とするストレージ制御装置。
【請求項２】
前記書き込み制御手段により前記所定の数のキャッシュ装置に多重化して書き込まれたデータを前記ディスク装置に書き込む際に、該所定の数のキャッシュ装置のうちのあるキャッシュ装置だけが該データを引き続き記憶し、他のキャッシュ装置は該データの記憶領域を開放するように制御するフラッシュ制御手段をさらに備えたことを特徴とする請求の範囲第１項に記載のストレージ制御装置。
【請求項３】
前記書き込み制御手段は、前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの２台のキャッシュ装置に二重化して書き込むように制御することを特徴とする請求の範囲第１項または第２項に記載のストレージ制御装置。
【請求項４】
前記書き込み制御手段は、前記クライアントが書き込みを要求したデータを前記ネットワークに配置された全てのキャッシュ装置に多重化して書き込むように制御することを特徴とする請求の範囲第１項または第２項に記載のストレージ制御装置。
【請求項５】
前記書き込み制御手段は、前記所定の数のキャッシュ装置に対して、該所定の数を前記データの書き込み完了通知とともに前記クライアントに送信するよう指示することを特徴とする請求の範囲第１項または第２項に記載のストレージ制御装置。
【請求項６】
前記クライアントがアクセスを要求するデータの格納領域について、該クライアントが指定する論理的位置と、キャッシュ装置における記憶位置と、ディスク装置における格納位置との対応付けを記憶した位置情報記憶手段と、
前記位置情報記憶手段に記憶された対応付けに対して更新がおこなわれるごとに、該更新に関する情報を前記ネットワーク上に配置された他のストレージ制御装置に送信する更新情報送信手段と、
をさらに備えたことを特徴とする請求の範囲第１項または第２項に記載のストレージ制御装置。
【請求項７】
キャッシュ装置およびディスク装置をネットワーク上に分散配置したストレージシステムで用いられ、クライアントからのアクセス要求を受け付け、該キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御プログラムであって、
前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御する書き込み制御手順と、
前記クライアントが読み出しを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、前記ディスク装置から該データを読み出し、該読み出したデータをあるキャッシュ装置だけに記憶させるとともに前記クライアントに送信するように制御する読み出し制御手順と、
をコンピュータで実行することを特徴とするストレージ制御プログラム。
【請求項８】
前記書き込み制御手順により前記所定の数のキャッシュ装置に多重化して書き込まれたデータを前記ディスク装置に書き込む際に、該所定の数のキャッシュ装置のうちのあるキャッシュ装置だけが該データを引き続き記憶し、他のキャッシュ装置は該データの記憶領域を開放するように制御するフラッシュ制御手順をさらにコンピュータで実行することを特徴とする請求の範囲第７項に記載のストレージ制御プログラム。
【請求項９】
前記書き込み制御手順は、前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの２台のキャッシュ装置に二重化して書き込むように制御することを特徴とする請求の範囲第７項または第８項に記載のストレージ制御プログラム。
【請求項１０】
前記書き込み制御手順は、前記クライアントが書き込みを要求したデータを前記ネットワークに配置された全てのキャッシュ装置に多重化して書き込むように制御することを特徴とする請求の範囲第７項または第８項に記載のストレージ制御プログラム。
【請求項１１】
前記書き込み制御手順は、前記所定の数のキャッシュ装置に対して、該所定の数を前記データの書き込み完了通知とともに前記クライアントに送信するよう指示することを特徴とする請求の範囲第７項または第８項に記載のストレージ制御プログラム。
【請求項１２】
前記クライアントがアクセスを要求するデータの格納領域について、該クライアントが指定する論理的位置と、キャッシュ装置における記憶位置と、ディスク装置における格納位置との対応付けを記憶し、記憶した対応付けに対して更新がおこなわれるごとに、該更新に関する情報を前記ネットワーク上に配置された他のコンピュータで実行されるストレージ制御プログラムに送信する更新情報送信手順をさらにコンピュータで実行することを特徴とする請求の範囲第７項または第８項に記載のストレージ制御プログラム。
【請求項１３】
キャッシュ装置およびディスク装置をネットワーク上に分散配置したストレージシステムで用いられ、クライアントからのアクセス要求を受け付け、該キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御方法であって、
前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御する書き込み制御工程と、
前記クライアントが読み出しを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、前記ディスク装置から該データを読み出し、該読み出したデータをあるキャッシュ装置だけに記憶させるとともに前記クライアントに送信するように制御する読み出し制御工程と、
を含んだことを特徴とするストレージ制御方法。
【請求項１４】
前記書き込み制御工程により前記所定の数のキャッシュ装置に多重化して書き込まれたデータを前記ディスク装置に書き込む際に、該所定の数のキャッシュ装置のうちのあるキャッシュ装置だけが該データを引き続き記憶し、他のキャッシュ装置は該データの記憶領域を開放するように制御するフラッシュ制御工程をさらに含んだことを特徴とする請求の範囲第１３項に記載のストレージ制御方法。
【請求項１５】
前記書き込み制御工程は、前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの２台のキャッシュ装置に二重化して書き込むように制御することを特徴とする請求の範囲第１３項または第１４項に記載のストレージ制御方法。
【請求項１６】
前記書き込み制御工程は、前記クライアントが書き込みを要求したデータを前記ネットワークに配置された全てのキャッシュ装置に多重化して書き込むように制御することを特徴とする請求の範囲第１３項または第１４項に記載のストレージ制御方法。
【請求項１７】
前記書き込み制御工程は、前記所定の数のキャッシュ装置に対して、該所定の数をデータの書き込み完了通知とともに前記クライアントに送信するよう指示することを特徴とする請求の範囲第１３項または第１４項に記載のストレージ制御方法。
【発明の詳細な説明】
【技術分野】  この発明は、キャッシュ装置およびディスク装置をネットワーク上に分散配置したストレージシステムで用いられ、クライアントからのアクセス要求を受け付け、キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御装置、ストレージ制御プログラムおよびストレージ制御方法に関し、特に、個々の装置の故障に起因するストレージシステム全体の稼動停止を防ぎ、もって信頼性の高いストレージシステムを構築することができるストレージ制御装置、ストレージ制御プログラムおよびストレージ制御方法に関するものである。
【背景技術】  近年、マルチメディアデータの利用などによる処理データ量の急増にともない、ネットワークに接続された大容量ディスクを利用して大規模なデータを統合運用管理するストレージシステムが急速に普及している。このストレージシステムでは、ネットワークのデータ転送速度と比較してディスクのアクセス速度が遅いことから、ディスクのアクセス性能が、システム全体のボトルネックとなっている。このため、ストレージシステムでは、高速アクセスが可能なキャッシュメモリを使用し、ディスクへのアクセス回数を減らすことによって、ディスクのアクセス性能の改善を図っている。
通常、キャッシュメモリを用いる場合には、アクセス要求のあったデータがキャッシュメモリに存在する率を示すキャッシュヒット率がシステム性能に大きく影響することから、できるだけ大きなキャッシュメモリを用いる必要がある。しかし、従来のストレージ装置では、ストレージシステム全体の制御、ディスクの制御、キャッシュメモリの制御などを一つの装置として実現しているため、キャッシュメモリの容量を拡張することが容易でなく、ストレージシステムの増強によってディスクの容量が拡張されると、キャッシュメモリの相対的容量が少なくなり、キャッシュヒット率が低下するという事態が発生していた。
このようなことから、キャッシュメモリの容量の拡張を容易にするために、ストレージシステム全体の制御、ディスクの制御、キャッシュメモリの制御をそれぞれ別の装置として実現し、これらの装置をネットワークに接続して分散配置した分散型ストレージシステムが利用されるようになった。この分散型ストレージシステムでは、キャッシュメモリおよびその制御だけを独立のキャッシュ装置としているため、キャッシュ装置を追加することによってキャッシュメモリの容量を容易に拡張することができる。
しかしながら、この分散型ストレージシステムには、各装置が独立して配置されることから、各装置が別々に故障するという問題点がある。また、各装置が独立にネットワークに接続されるため、各装置を接続する個別ネットワークに故障が発生し、個々の装置が利用できなくなるという問題点がある。
すなわち、従来の一体型ストレージ装置では、ストレージ装置全体として故障が発生するため、ストレージ装置全体の故障を考慮したＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）制御などをおこなえば十分であったが、分散型ストレージシステムでは、分散配置された個別の装置ごとに故障を考慮することが必要となっている。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、個々の装置の故障に起因するストレージシステム全体の稼動停止を防ぎ、もって信頼性の高いストレージシステムを構築することができるストレージ制御装置、ストレージ制御プログラムおよびストレージ制御方法を提供することを目的としている。
【発明の開示】
上述した課題を解決し、目的を達成するため、本発明は、キャッシュ装置およびディスク装置とともにネットワーク上に分散配置されてストレージシステムを形成し、クライアントからのアクセス要求を受け付け、該キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御装置であって、前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御する書き込み制御手段と、前記クライアントが読み出しを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、前記ディスク装置から該データを読み出し、該読み出したデータをあるキャッシュ装置だけに記憶させるとともに前記クライアントに送信するように制御する読み出し制御手段と、を備えたことを特徴とする。
また、本発明は、キャッシュ装置およびディスク装置をネットワーク上に分散配置したストレージシステムで用いられ、クライアントからのアクセス要求を受け付け、該キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御プログラムであって、前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御する書き込み制御手順と、前記クライアントが読み出しを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、前記ディスク装置から該データを読み出し、該読み出したデータをあるキャッシュ装置だけに記憶させるとともに前記クライアントに送信するように制御する読み出し制御手順と、をコンピュータで実行することを特徴とする。
また、本発明は、キャッシュ装置およびディスク装置をネットワーク上に分散配置したストレージシステムで用いられ、クライアントからのアクセス要求を受け付け、該キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御方法であって、前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御する書き込み制御工程と、前記クライアントが読み出しを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、前記ディスク装置から該データを読み出し、該読み出したデータをあるキャッシュ装置だけに記憶させるとともに前記クライアントに送信するように制御する読み出し制御工程と、を含んだことを特徴とする。
かかる発明によれば、クライアントが書き込みを要求したデータをネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御し、クライアントが読み出しを要求したデータをネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、ディスク装置からデータを読み出し、読み出したデータをあるキャッシュ装置だけに記憶させるとともにクライアントに送信するように制御することとしたので、キャッシュメモリを効率よく使用するとともに、いずれかのキャッシュ装置の故障に起因するストレージシステム全体の稼動停止を防ぎ、信頼性の高いストレージシステムを構築することができる。
【図面の簡単な説明】  第１図は、本実施の形態１に係るストレージシステムのシステム構成を示すブロック図であり、第２図は、第１図に示したストレージ制御装置の構成を示す機能ブロック図であり、第３図は、位置情報テーブルの一例を示す図であり、第４図は、第１図に示したキャッシュ制御装置の構成を示す機能ブロック図であり、第５図は、ストレージ制御装置が送信するメッセージの一例を示す図であり、第６図は、キャッシュ制御装置が送信するメッセージの一例を示す図であり、第７図は、実ディスク制御装置が送信するメッセージの一例を示す図であり、第８図は、第２図に示したデータ書き込み処理部の処理手順を示すフローチャートであり、第９図は、クライアントがストレージシステムへのデータ書き込み完了を判定する手法を説明するための説明図であり、第１０図は、本実施の形態１に係るキャッシュメモリへのデータ書き込み処理手順を示すフローチャートであり、第１１図は、第２図に示したデータ読み出し処理部の処理手順を示すフローチャートであり、第１２図は、第２図に示したＦｅｔｃｈ処理部の処理手順を示すフローチャートであり、第１３図は、第２図に示したＦｌｕｓｈ処理部の処理手順を示すフローチャートであり、第１４図は、本実施の形態２に係るストレージ制御装置の二重化の概念を説明するための説明図であり、第１５図は、本実施の形態２に係るストレージシステムのシステム構成を示すブロック図であり、第１６図は、位置情報更新メッセージの一例を示す図であり、第１７図は、第１５図に示した位置情報テーブル更新部の処理手順を示すフローチャートであり、第１８図は、本実施の形態２に係るストレージ制御装置の二重化の変形例を説明するための説明図であり、第１９図は、本実施の形態３に係るストレージシステムのシステム構成を示すブロック図であり、第２０図は、ストレージ制御プログラムおよびキャッシュ制御プログラムを実行するコンピュータシステムの一例を示す図である。
【発明を実施するための最良の形態】  以下、添付図面を参照して、この発明に係るストレージ制御装置、ストレージ制御プログラムおよびストレージ制御方法の好適な実施の形態を詳細に説明する。
実施の形態１．
まず、本実施の形態１に係るストレージシステムのシステム構成について説明する。第１図は、本実施の形態１に係るストレージシステムのシステム構成を示すブロック図である。同図に示すように、このストレージシステムは、ストレージ制御装置１１０、実ディスク制御装置１２０、二重化されたキャッシュ制御装置１３０および１４０がネットワーク４０上に分散配置されて構成され、ネットワーク４０を介してクライアント１０〜３０から利用される。なお、ここでは説明の便宜上、３台のクライアント１０〜３０のみを示したが、このストレージシステムは、ネットワーク４０を介して任意の台数のクライアントから利用される。また、ここでは、クライアント１０がこのストレージシステムを利用する場合について説明するが、他のクライアント２０および３０も同様にこのストレージシステムを利用することができる。
ストレージ制御装置１１０は、ネットワーク４０を介してクライアント１０からのアクセス要求を受け付け、実ディスク制御装置１２０、キャッシュ制御装置１３０および１４０に、アクセス要求に応じた処理を実行させる装置である。また、このストレージ制御装置１１０は、キャッシュ制御装置１３０および１４０が有するキャッシュメモリに記憶されるデータを管理する。
実ディスク制御装置１２０は、大容量記憶媒体としてのディスク１２１を有し、ストレージ制御装置１１０の指示に基づいてディスク１２１からのデータの読み出しおよびディスク１２１へのデータの書き込みをおこなう装置である。なお、ここでは説明の便宜上、１台の実ディスク制御装置１２０のみを示したが、このストレージシステムでは、格納するデータの規模に応じて、複数の実ディスク制御装置をネットワーク４０上に配置することができる。また、１台の実ディスク制御装置には、複数台のディスクを接続することができる。
キャッシュ制御装置１３０および１４０は、高速アクセス記録媒体としてのキャッシュメモリを有し、ストレージ制御装置１１０の指示に基づいてキャッシュメモリからのデータの読み出しおよびキャッシュメモリへのデータの書き込みをおこなう装置である。
このように、このストレージシステムでは、キャッシュ制御装置を二重化し、同一のデータをキャッシュ制御装置１３０および１４０が有するキャッシュメモリに記憶することとしている。ただし、全てのデータを二重化するのではなく、ディスク１２１に格納されたデータとキャッシュメモリに記憶されたデータが一致する場合、すなわちデータがｃｏｈｅｒｅｎｔな状態にある場合には、そのデータはいずれかのキャッシュメモリのみに記憶され、ディスク１２１に格納されたデータとキャッシュメモリに記憶されたデータが異なる場合、すなわちデータがｄｉｒｔｙな状態にある場合には、そのデータは両方のキャッシュメモリに記憶される。
たとえば、第１図において、データＭは、ディスク１２１上のデータＭ’が書き換えられたデータであり、ｄｉｒｔｙな状態にあるので、キャッシュ制御装置１３０およびキャッシュ制御装置１４０が有する二つのキャッシュメモリに記憶されている。また、データＮは、同一データがディスク１２１上に存在するので、キャッシュ制御装置１３０が有するキャッシュメモリのみに記憶されている。
このように、このストレージシステムでは、キャッシュ制御装置を二重化し、同一のデータを二つのキャッシュメモリに記憶することとしたので、キャッシュ制御装置１３０または１４０のいずれかが故障した場合にも、他のキャッシュ制御装置を用いてストレージシステムを稼動させることができ、信頼性の高いストレージシステムを実現することができる。また、このストレージシステムでは、ディスク１２１とキャシュメモリに記憶されたデータが同一である場合には、片方のキャッシュメモリのみにデータを記憶することとしたので、キャッシュメモリを有効に使うことができ、キャッシュヒット率を向上させることができる。
次に、第１図に示したストレージ制御装置１１０の構成について説明する。第２図は、第１図に示したストレージ制御装置１１０の構成を示す機能ブロック図である。同図に示すように、このストレージ制御装置１１０は、位置情報テーブル１１１と、制御部１１２と、ネットワークインタフェース部１１３と、データ読み出し処理部１１４と、データ書き込み処理部１１５と、Ｆｅｔｃｈ処理部１１６と、Ｆｌｕｓｈ処理部１１７とを有する。
位置情報テーブル１１１は、クライアント１０がストレージシステムにアクセスを要求するデータについて、クライアント１０が指定する論理位置と、実際にデータが格納されたディスク１２１の物理位置およびキャッシュメモリの物理位置と、そのデータの状態（すなわちデータがｃｏｈｅｒｅｎｔであるかｄｉｒｔｙであるかの区別）とを対応させて記憶した表である。
第３図は、位置情報テーブル１１１の一例を示す図である。同図は、論理位置が装置番号０番のストレージの０〜７であるデータは、装置番号０番のディスク１２１の０〜７および装置番号０番のキャッシュ制御装置１３０が有するキャッシュメモリの０〜７に記憶され、ｃｏｈｅｒｅｎｔな状態にあることを示している。また、論理位置が装置番号１番のストレージの８〜１５であるデータは、装置番号０番のディスク１２１の８〜１５、装置番号０番のキャッシュ制御装置１３０が有するキャッシュメモリの８〜１５および装置番号１番のキャッシュ制御装置１４０が有するキャッシュメモリの０〜７に記憶され、ｄｉｒｔｙな状態にあることを示している。
このように、この位置情報テーブル１１１が２台のキャッシュ制御装置１３０および１４０が有するキャッシュメモリに記憶されているデータの物理位置をそのデータの論理位置と対応させて記憶することにより、ストレージ制御装置１１０がキャッシュ制御装置の二重化に対応した処理をおこなうことができる。
制御部１１２は、ストレージ制御装置１１０全体を制御する処理部であり、また、ネットワークインタフェース部１１３は、所定の通信プロトコルを用いてクライアント１０、実ディスク制御装置１２０、キャッシュ制御装置１３０および１４０と通信をおこなう処理部である。
データ読み出し処理部１１４は、クライアント１０からのデータ読み出し要求に応答してストレージシステムからデータの読み出しをおこなう処理部であり、位置情報テーブル１１１を用いてデータの論理位置から物理位置を求め、データがキャッシュメモリに記憶されている場合には、データを記憶したキャシュメモリを有するキャッシュ制御装置に対してクライアント１０へのデータ転送を指示する。一方、データがキャッシュメモリに記憶されていない場合には、Ｆｅｔｃｈ処理部１１６に実ディスク制御装置１２０からキャッシュ制御装置へのデータ転送を依頼する。そして、実ディスク制御装置１２０からキャッシュ制御装置にデータが転送された後、データが転送されたキャッシュ制御装置に対してクライアント１０へのデータ転送を指示する。
データ書き込み処理部１１５は、クライアント１０からのデータ書き込み要求に応答してストレージシステムへのデータの書き込みをおこなう処理部であり、位置情報テーブル１１１に基づいて必ず両方のキャッシュ制御装置１３０および１４０に対してキャッシュメモリへのデータの書き込みを指示する。すなわち、位置情報テーブル１１１にキャッシュメモリでのデータの記憶位置が登録されている場合には、その記憶位置にデータの書き込みを指示し、位置情報テーブル１１１にキャッシュメモリでのデータの記憶位置が登録されていない場合には、新たにキャッシュメモリを割り当て、割り当てたキャッシュメモリの位置にデータの書き込みを指示する。
このように、このデータ書き込み処理部１１５が、クライアント１０からのデータ書き込み要求に対して、両方のキャッシュメモリに同じデータを書き込むこととしたので、いずれかのキャッシュ制御装置が故障した場合にも、ストレージシステムの稼動停止を防ぐことができ、ストレージシステムの信頼性を向上することができる。
Ｆｅｔｃｈ処理部１１６は、クライアント１０から読み出し要求のあったデータがキャッシュメモリに記憶されていない場合に、新たにデータを記憶させるキャッシュ制御装置を選択し、実ディスク制御装置１２０に対して、選択したキャッシュ制御装置へのデータの転送を指示する処理部である。
Ｆｌｕｓｈ処理部１１７は、キャッシュメモリに記憶されたデータのうちｄｉｒｔｙな状態にあるデータをディスク１２１に書き込む処理部であり、キャッシュメモリにデータを書き込む際に、空領域が不足した場合、あるいは、キャッシュメモリの使用領域が所定の割合を超えた場合に、キャッシュメモリに空領域を作るために使用される。キャッシュメモリに空領域を作る場合に、どのデータをキャッシュメモリから削除するかの選択は、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）などの手法を用いて決定し、キャッシュメモリから削除することが決定されたデータがｄｉｒｔｙな状態である場合に、このＦｌｕｓｈ処理部１１７が使用される。
次に、第１図に示したキャッシュ制御装置１３０および１４０の構成について説明する。なお、キャシュ制御装置１３０および１４０は、同一の構成を有するので、ここでは、キャッシュ制御装置１３０を例にとって説明する。第４図は、第１図に示したキャッシュ制御装置１３０の構成を示す機能ブロック図である。同図に示すように、このキャッシュ制御装置１３０は、キャッシュメモリ１３１と、制御部１３２と、ネットワークインタフェース部１３３と、キャッシュ読み出し処理部１３４と、キャッシュ書き込み処理部１３５と、Ｆｅｔｃｈ対応部１３６と、Ｆｌｕｓｈ対応部１３７とを有する。
キャッシュメモリ１３１は、ストレージシステムへのアクセスを高速化するために、ディスク１２１に格納されたデータの一部およびディスク１２１に格納されるデータを記憶した記憶部であり、ディスク１２１と比較して、アクセス時間が短く、容量が小さいという特徴を有する。このキャッシュメモリ１３１に記憶されるデータおよびその記憶位置は、ストレージ制御装置１１０が有する位置情報テーブル１１１に記憶される。
制御部１３２は、キャッシュ制御装置１３０全体を制御する処理部であり、また、ネットワークインタフェース部１３３は、所定の通信プロトコルを用いてクライアント１０、ストレージ制御装置１１０および実ディスク制御装置１２０と通信をおこなう処理部である。
キャッシュ読み出し処理部１３４は、ストレージ制御装置１１０からのデータ読み出し指示に基づいてキャッシュメモリ１３１からデータを読み出し、読み出したデータをクライアント１０へ転送する処理部である。
キャッシュ書き込み処理部１３５は、ストレージ制御装置１１０からのデータ書き込み指示に基づいてクライアント１０のバッファからデータを読み出し、読み出したデータをキャッシュメモリ１３１に書き込む処理部である。また、このキャッシュ書き込み処理部１３５は、キャッシュメモリ１３１へのデータの書き込みが完了すると、クライアント１０にデータ書き込み完了を通知する。そして、この完了通知は、キャッシュ制御装置の二重化に対応したものとなっており、その詳細については後述する。
Ｆｅｔｃｈ対応部１３６は、ストレージ制御装置１１０のＦｅｔｃｈ処理部１１６の指示に基づいて実ディスク制御装置１２０がキャッシュ制御装置１３０に転送するデータをキャッシュメモリ１３１に書き込む処理部である。
Ｆｌｕｓｈ対応部１３７は、ストレージ制御装置１１０のＦｌｕｓｈ処理部１１７の指示に基づいてキャッシュメモリ１３１からデータを読み出し、実ディスク制御装置１２０に転送する処理部である。
次に、ストレージ制御装置１１０がキャッシュ制御装置１３０および１４０ならびに実ディスク制御装置１２０に対して処理を指示するために送信するメッセージについて説明する。第５図は、ストレージ制御装置１１０が送信するメッセージの一例を示す図である。同図（ａ）は、ストレージ制御装置１１０がキャッシュ制御装置１３０および１４０に送信するキャッシュメモリへのデータアクセス指示メッセージを示し、同図（ｂ）は、ストレージ制御装置１１０が実ディスク制御装置１２０に送信するデータ転送指示メッセージを示している。
同図（ａ）に示すように、ストレージ制御装置１１０がキャッシュ制御装置１３０および１４０に送信するキャッシュメモリへのデータアクセス指示メッセージ５１０は、内部ヘッダ５１１と、応答ヘッダ５１２とデータ位置５１３とを有する。
内部ヘッダ５１１には、キャッシュ制御装置１３０および１４０がデータ送受信をおこなうクライアント１０または実ディスク制御装置１２０のアドレスと、キャッシュメモリからのデータ読み出し指示（「読み出し」）であるか、キャッシュメモリへのデータ書き込み指示（「書き込み」）であるかの区別を示すコマンド種別が含まれる。
すなわち、データアクセス指示メッセージ５１０がキャッシュメモリへのデータ書き込み指示である場合には、アドレスはデータ書き込み要求をおこなったクライアント１０のアドレスであり、コマンド種別は「書き込み」である。また、データアクセス指示メッセージ５１０がキャッシュメモリからのデータ読み出し指示である場合には、アドレスはデータ読み出し要求をおこなったクライアント１０のアドレスであり、コマンド種別は「読み出し」である。その他、データアクセス指示メッセージ５１０がキャッシュメモリからディスク１２１へのデータ転送指示である場合には、アドレスはデータ転送先の実ディスク制御装置１２０のアドレスであり、コマンド種別は「読み出し」である。
応答ヘッダ５１２は、キャッシュ制御装置１３０および１４０がストレージ制御装置１１０に指示された処理を実行した結果をクライアント１０またはストレージ制御装置１１０へ伝えるためのヘッダフォーマットであり、この応答ヘッダ５１２には、クライアント１０からの要求などを識別するコマンドＩＤおよび実行が成功したか失敗したかを示す実行結果が含まれる。なお、キャッシュメモリへのデータ書き込みを指示するデータアクセス指示メッセージ５１０の応答ヘッダ５１２に含まれるデータについては後述する。
データ位置５１３には、データを記憶するディスク１２１ならびにキャッシュメモリの物理位置が含まれる。ただし、データがキャッシュメモリに記憶されていない場合には、ディスク１２１の物理位置だけが含まれる。
また、第５図（ｂ）に示すように、ストレージ制御装置１１０が実ディスク制御装置１２０に送信するデータ転送指示メッセージ５２０も、内部ヘッダ５２１と、応答ヘッダ５２２とデータ位置５２３とを有する。
内部ヘッダ５２１には、データの転送先であるキャッシュ制御装置１３０または１４０のアドレスと、コマンド種別として「読み出し」が含まれる。応答ヘッダ５２２は、実ディスク制御装置１２０がデータ転送の結果（成功または失敗）をストレージ制御装置１１０に伝えるためのヘッダフォーマットである。また、データ位置５２３には、転送するデータを格納したディスク１２１でのデータの位置を指定する物理位置およびデータの書き込み先であるキャッシュメモリでのデータの記憶位置が含まれる。
次に、キャッシュ制御装置１３０および１４０がストレージ制御装置１１０からの指示に応答して、クライアント１０、ストレージ制御装置１１０および実ディスク制御装置１２０に送信するメッセージについて説明する。第６図は、キャッシュ制御装置１３０および１４０が送信するメッセージの一例を示す図である。同図（ａ）は、クライアント１０の要求に基づいてキャッシュメモリからのデータの読み出し処理またはキャッシュメモリへのデータの書き込み処理を実行した結果をクライアント１０に送信する応答メッセージ６１０を示し、同図（ｂ）は、Ｆｌｕｓｈ処理に基づいてキャッシュメモリのデータを実ディスク制御装置１２０に転送するデータ転送メッセージ６２０を示し、同図（ｃ）は、実ディスク制御装置１２０へのデータの転送が完了した場合に、ストレージ制御装置１１０に送信するデータ転送完了メッセージを示している。
同図（ａ）に示すように、キャッシュ制御装置１３０および１４０がクライアント１０に送信する応答メッセージ６１０は、応答ヘッダ６１１と応答データ６１２とを有する。応答ヘッダ６１１には、クライアント１０からの要求を識別するコマンドＩＤおよび指示された処理の実行結果が含まれる。また、クライアント１０からの要求がデータの読み出しである場合には、キャッシュメモリから読み出されたデータが応答データ６１２となる。一方、クライアントからの要求がデータの書き込みである場合には、応答データ６１２はない。
また、同図（ｂ）に示すように、キャッシュ制御装置１３０および１４０が実ディスク制御装置１２０に送信するデータ転送メッセージ６２０は、応答ヘッダ６２１と、データ位置６２２と、応答データ６２３とを有する。応答ヘッダ６２１には、このデータ転送メッセージ６２０がＦｌｕｓｈ処理に基づくデータ転送であることを識別するためのコマンドＩＤが含まれ、データ位置６２２には、送信するデータのディスク１２１での書き込み位置を指定する物理位置が含まれ、応答データ６２３は、キャッシュメモリから読み出され、ディスク１２１に格納されるＦｌｕｓｈデータである。
また、同図（ｃ）に示すように、キャッシュ制御装置１３０および１４０がストレージ制御装置１１０に送信するデータ転送完了メッセージ６３０は、応答ヘッダ６３１を有する。この応答ヘッダ６３１には、この応答に対応するストレージ制御装置１１０からの指示メッセージに含まれたコマンドＩＤおよび指示された処理の実行結果が含まれる。
次に、実ディスク制御装置１２０がストレージ制御装置１１０からの指示に応答して、キャッシュ制御装置１３０および１４０ならびにストレージ制御装置１１０に送信するメッセージについて説明する。第７図は、実ディスク制御装置１２０が送信するメッセージの一例を示す図である。同図（ａ）は、Ｆｅｔｃｈ処理に基づいて実ディスク制御装置１２０がディスク１２１に格納されたデータをキャッシュ制御装置１３０または１４０に転送するデータ転送メッセージ７１０を示し、同図（ｂ）は、キャッシュ制御装置１３０または１４０へのデータの転送が完了した場合に、実ディスク制御装置１２０がストレージ制御装置１１０に送信するデータ転送完了メッセージ７２０を示している。
同図（ａ）に示すように、実ディスク制御装置１２０がキャッシュ制御装置１３０または１４０に送信するデータ転送メッセージ７１０は、応答ヘッダ７１１と、データ位置７１２と、応答データ７１３とを有する。応答ヘッダ７１１には、このデータ転送メッセージ７１０がＦｅｔｃｈ処理に基づくデータ転送であることを識別するためのコマンドＩＤが含まれ、データ位置７１２には、転送するデータのキャッシュメモリでの書き込み位置を指定する物理位置が含まれ、応答データ７１３は、ディスク１２１から読み出され、キャッシュメモリに書き込まれるＦｅｔｃｈデータである。
また、同図（ｂ）に示すように、ストレージ制御装置１１０に送信するデータ転送完了メッセージ７２０は、応答ヘッダ７２１を有する。この応答ヘッダ７２１には、この応答に対応するストレージ制御装置１１０からの指示メッセージに含まれたコマンドＩＤおよび指示された処理の実行結果が含まれる。
次に、第２図に示したストレージ制御装置１１０のデータ書き込み処理部１１５の処理について説明する。第８図は、第２図に示したストレージ制御装置１１０のデータ書き込み処理部１１５の処理手順を示すフローチャートである。
同図に示すように、このデータ書き込み処理部１１５は、クライアント１０が指定した書き込みデータの論理位置を用いて位置情報テーブル１１１を検索し（ステップＳ８０１）、キャッシュメモリにデータが有りその状態がｄｉｒｔｙであるか、キャッシュメモリにデータが有りその状態がｃｏｈｅｒｅｎｔであるか、またはキャッシュメモリにデータがないかを調べる（ステップＳ８０２）。
そして、両方のキャッシュメモリにデータが有り、そのデータの状態がｄｉｒｔｙである場合には、両方のキャッシュ制御装置１３０および１４０に対して、コマンド種別を「書き込み」としてデータアクセス指示メッセージ５１０を送信し、クライアント１０の指定するデータをキャッシュメモリへ書き込む指示をおこなう（ステップＳ８０３）。
また、キャッシュメモリのいずれかにデータが有り、そのデータの状態がｃｏｈｅｒｅｎｔである場合には、データのないキャッシュメモリにデータを記憶するための領域を確保し、両方のキャッシュ制御装置１３０および１４０に対して、コマンド種別を「書き込み」としてデータアクセス指示メッセージ５１０を送信する（ステップＳ８０６）。そして、新たに確保したキャッシュメモリの領域について位置情報テーブル１１１を更新する（ステップＳ８０７）。
また、両方のキャッシュメモリにデータがない場合には、両方のキャッシュメモリにデータを記憶するための領域を確保し（ステップＳ８０５）、両方のキャッシュ制御装置１３０および１４０に対して、コマンド種別を「書き込み」としてデータアクセス指示メッセージ５１０を送信する（ステップＳ８０６）。そして、新たに確保したキャッシュメモリの領域について位置情報テーブル１１１を更新する（ステップＳ８０７）。
このように、このデータ書き込み処理部１１５が、クライアント１０が書き込みを要求したデータを常に両方のキャッシュメモリに書き込むこととしたので、いずれかのキャッシュ制御装置が故障した場合にも、データの消失を防ぐことができる。
次に、クライアント１０がストレージシステムへのデータ書き込み完了を判定する手法について説明する。このストレージシステムでは、２台のキャッシュ制御装置１３０および１４０を使用しており、データの書き込みは、２台のキャッシュ制御装置１３０および１４０が有するキャッシュメモリに対しておこなう必要がある。したがって、データの書き込み完了は、両方のキャッシュ制御装置１３０および１４０がキャッシュメモリへのデータの書き込みを完了した時点となる。第９図は、クライアント１０がストレージシステムへのデータ書き込み完了を判定する手法を説明するための説明図である。
同図に示すように、ストレージ制御装置１１０は、クライアント１０からのデータ書き込み要求（コマンドＩＤを「コマンド１」とする）を受け付けると、両方のキャッシュ制御装置１３０および１４０に対して、データアクセス指示メッセージ５１０を送信する。なお、このデータアクセス指示メッセージ５１０では、内部ヘッダ５１１にデータ書き込み要求元であるクライアント１０のアドレスおよびコマンド種別である「書き込み」が含まれ、応答ヘッダ５１２に「コマンド１」への応答は２個であることを指定するデータ（応答１：２個）が含まれ、データ位置５１３にキャッシュメモリでのデータ書き込み位置であるデータ位置Ｐおよびデータ位置Ｑが含まれる。
データ書き込みメッセージ５１０を受信したキャッシュ制御装置１３０および１４０は、クライアント１０のバッファからデータを読み出し、キャッシュ制御装置１３０はキャッシュメモリのデータ位置Ｐに、キャッシュ制御装置１４０はキャッシュメモリのデータ位置Ｑにそれぞれデータを書き込む。そして、データの書き込みが完了すると、応答ヘッダ５１２をもとにして作成した応答メッセージ６１０をクライアント１０へ送信する。この応答メッセージ６１０には、「コマンド１」への応答は２個であることを指定するデータ（応答１：２個）が含まれる。
キャッシュ制御装置１３０または１４０からの応答メッセージ６１０を受信したクライアント１０は、「コマンド１」への応答は２個であることを確認し、他のキャッシュ制御装置からの応答メッセージ６１０を待ち、他のキャッシュ制御装置からの応答メッセージ６１０を受信すると、ストレージシステムへのデータの書き込みが完了したと判定する。
このように、ストレージ制御装置１１０が応答ヘッダ５１２を用いて、データの書き込み要求に対する応答メッセージ６１０が２個であることを指定し、クライアント１０がキャッシュ制御装置からの応答メッセージ６１０の数を数え、応答メッセージ６１０を２個受信した時点で始めてストレージシステムへのデータの書き込みが完了したと判定することとしたので、２台のキャッシュ制御装置１３０および１４０が有するキャッシュメモリに同一のデータが書き込まれることを保障することができる。
次に、本実施の形態１に係るキャッシュメモリへのデータ書き込み手順について説明する。第１０図は、本実施の形態１に係るキャッシュメモリへのデータ書き込み手順を示すフローチャートである。なお、ここでは、キャッシュ制御装置１３０がキャッシュ制御装置１４０より先にキャッシュメモリへのデータの書き込みを完了するものとする。
同図に示すように、キャッシュ制御装置１３０は、ストレージ制御装置１１０が送信したデータアクセス指示メッセージ５１０を受信すると（ステップＳ１００１）、クライアント１０のバッファからデータを読み込み（ステップＳ１００２）、読み込んだデータをキャッシュメモリに書き込む。キャッシュメモリでのデータの書き込み位置は、データアクセス指示メッセージ５１０が有するデータ位置５１３で指定される。そして、キャッシュメモリへのデータの書き込みが完了すると、応答メッセージ６１０をクライアント１０に送信する（ステップＳ１００３）。
一方、他のキャッシュ制御装置１４０も同様に、ストレージ制御装置１１０が送信したデータアクセス指示メッセージ５１０を受信し（ステップＳ１００５）、クライアント１０のバッファからデータを読み込み（ステップＳ１００６）、読み込んだデータをキャッシュメモリに書き込む。そして、キャッシュメモリへのデータの書き込みが完了すると、応答メッセージ６１０をクライアント１０に送信する（ステップＳ１００７）。
また、クライアント１０は、まず、キャッシュ制御装置１３０が送信した応答メッセージ６１０を受信し（ステップＳ１００４）、応答ヘッダ６１１を解読して応答メッセージ６１０を２個受信する必要があることを認識し、次の応答メッセージ６１０を待つ。そして、キャシュ制御装置１４０からの応答メッセージ６１０を受信すると（ステップＳ１００８）、両方のキャッシュ制御装置１３０および１４０でデータの書き込み処理が完了したと判定する。
なお、ここでは、キャッシュ制御装置１３０および１４０がキャッシュメモリへのデータの書き込みを完了すると、クライアント１０に応答メッセージ６１０を送信することとしたが、キャッシュ制御装置１３０および１４０は、キャッシュメモリへの書き込みが完了した場合に、クライアント１０のかわりにストレージ制御装置１１０にデータの書き込み完了を通知することもできる。この場合、ストレージ制御装置１１０は、２台のキャッシュ制御装置１３０および１４０にデータ書き込み指示をおこなっているので、指示をおこなったキャッシュ制御装置１３０および１４０からのデータ書き込み完了通知を受け取った後に、クライアント１０に対してデータ書き込み完了を通知することができる。
次に、第２図に示したストレージ制御装置１１０のデータ読み出し処理部１１４の処理手順について説明する。第１１図は、第２図に示したストレージ制御装置１１０のデータ読み出し処理部１１４の処理手順を示すフローチャートである。
同図に示すように、このデータ読み出し処理部１１４は、位置情報テーブル１１１を用いて、クライアント１０が読み出しを要求したデータが０番のキャッシュ制御装置１３０に有るか否かを調べる（ステップＳ１１０１）。そして、０番のキャッシュ制御装置１３０にデータが有る場合には、０番のキャッシュ制御装置１３０に対して、コマンド種別を「読み出し」としてデータアクセス指示メッセージ５１０を送信し（ステップＳ１１０２）、キャッシュメモリに記憶されたデータのクライアント１０への送信を指示する。
一方、クライアント１０が読み出しを要求したデータが０番のキャッシュ制御装置１３０にない場合には、そのデータが１番のキャッシュ制御装置１４０に有るか否かを調べる（ステップＳ１１０３）。また、０番のキャッシュ制御装置１３０に、クライアント１０が読み出しを要求した全てのデータがなかった場合にも、残りのデータが１番のキャッシュ制御装置１４０に有るか否かを調べる（ステップＳ１１０３）。そして、１番のキャッシュ制御装置１４０に求めるデータが有る場合には、１番のキャッシュ制御装置１４０に対して、コマンド種別を「読み出し」としてデータアクセス指示メッセージ５１０を送信し（ステップＳ１１０４）、キャッシュメモリに記憶されたデータのクライアント１０への送信を指示する。
一方、クライアント１０が読み出しを要求したデータが１番のキャッシュ制御装置１４０にない場合には、データがディスク１２１に有るか否かを調べる（ステップＳ１１０５）。また、０番および１番のキャッシュ制御装置１４０に、クライアント１０が読み出しを要求した全てのデータがない場合にも、残りのデータがディスク１２１に有るか否かを調べる（ステップＳ１１０５）。そして、求めるデータがディスク１２１にある場合には、Ｆｅｔｃｈ処理を用いてディスク１２１からデータを読み出し、キャッシュメモリに書き込む（ステップＳ１１０６）。そして、データを書き込んだキャッシュメモリを有するキャッシュ制御装置に対して、コマンド種別を「読み出し」としてデータアクセス指示メッセージ５１０を送信し（ステップＳ１１０７）、キャッシュメモリに記憶されたデータのクライアント１０への送信を指示する。
このように、この読み出し処理部１１４は、クライアント１０が読み出しを要求したデータの記憶位置を、位置情報テーブル１１１を用いて調べ、そのデータが２台のキャッシュ制御装置１３０および１４０のいずれかに有る場合には、そのデータをクライアント１０に送信するように指示を出すことによって、キャッシュの二重化に対応したデータ読み出しをおこなっている。
次に、第２図に示したストレージ制御装置１１０のＦｅｔｃｈ処理部１１６の処理手順について説明する。なお、このＦｅｔｃｈ処理部１１６の処理は、第１１図に示したＦｅｔｃｈ処理（ステップＳ１１０６）に対応した処理となっている。第１２図は、第２図に示したストレージ制御装置１１０のＦｅｔｃｈ処理部１１６の処理手順を示すフローチャートである。
同図に示すように、このＦｅｔｃｈ処理部１１６は、データを記憶するキャッシュメモリ領域を、位置情報テーブル１１１を用いて確保し（ステップＳ１２０１）、データ転送指示メッセージ５２０を用いて、確保したキャッシュメモリ領域を有するキャッシュ制御装置へのデータ転送を実ディスク制御装置１２０に対して指示する（ステップＳ１２０２）。そして、実ディスク制御装置１２０からキャッシュ制御装置へのデータ転送の完了を待ち（ステップＳ１２０３）、実ディスク制御装置１２０からデータ転送完了メッセージ７２０を受信すると（ステップＳ１２０４）、新たに確保したキャッシュメモリ領域について位置情報テーブル１１１を更新する（ステップＳ１２０５）。
次に、第２図に示したストレージ制御装置１１０のＦｌｕｓｈ処理部１１７の処理手順について説明する。第１３図は、第２図に示したストレージ制御装置１１０のＦｌｕｓｈ処理部１１７の処理手順を示すフローチャートである。
同図に示すように、このＦｌｕｓｈ処理部１１７は、ディスク１２１に転送するデータを記憶したキャッシュ制御装置に対して、実ディスク制御装置１２０へのデータ転送を指示するメッセージを送信する。すなわち、内部ヘッダ５１１のアドレスを実ディスク制御装置１２０のアドレスとし、コマンド種別を「読み出し」として、データアクセス指示メッセージ５１０を送信し、実ディスク制御装置１２０へのデータ転送を指示する（ステップＳ１３０１）。
そして、キャッシュ制御装置から実ディスク制御装置１２０へのデータ転送の完了を待ち（ステップＳ１３０２）、キャッシュ制御装置からデータ転送完了メッセージ６３０を受信すると（ステップＳ１３０３）、転送したデータを記憶していたキャッシュメモリ領域を開放し、開放されたキャッシュメモリ領域について位置情報テーブル１１１を更新する（ステップＳ１３０４）。
上述したように、本実施の形態１では、ストレージシステムに２台のキャッシュ制御装置１３０および１４０を設け、両方のキャッシュ制御装置１３０および１４０に同一のデータを記憶することとしたので、いずれかのキャッシュ制御装置が故障した場合にも、他のキャッシュ制御装置を用いてストレージシステムを稼動することができ、信頼性の高いストレージシステムを実現することができる。
また、ディスク１２１に格納されたデータとキャッシュ制御装置１３０および１４０に記憶されたデータが同一である（ｃｏｈｅｒｅｎｔ）場合には、いずれかのキャッシュ制御装置のキャッシュメモリを開放し、ディスク１２１に記憶されたデータとキャッシュ制御装置に記憶されたデータが異なる（ｄｉｒｔｙ）場合にだけ、両方のキャッシュ制御装置１３０および１４０に同一データを記憶することとしたので、キャッシュメモリを効率よく使用することができ、キャッシュヒット率を向上することができる。
実施の形態２．
ところで、上記実施の形態１では、キャッシュ制御装置を二重化することによって、ストレージシステムの信頼性を向上させる場合について説明したが、キャッシュ制御装置を二重化することに加えて、ストレージ制御装置も二重化することによって、さらにストレージシステムの信頼性を向上させることができる。そこで、本実施の形態２では、キャッシュ制御装置の二重化に加えて、ストレージ制御装置を二重化したストレージシステムについて説明する。
まず、本実施の形態２に係るストレージ制御装置の二重化の概念について説明する。第１４図は、本実施の形態２に係るストレージ制御装置の二重化の概念について説明するための説明図である。同図に示すように、このストレージシステムは、メイン系ストレージ制御装置とバックアップ系ストレージ制御装置の２台のストレージ制御装置を有する。
そして、通常の運用では、これらの２台のストレージ制御装置のうちメイン系ストレージ制御装置がストレージシステムのストレージ制御装置として機能する。ただし、メイン系ストレージ制御装置およびバックアップ系ストレージ制御装置の両方が位置情報テーブルを有し、メイン系ストレージ制御装置は、位置情報テーブルを更新するごとに、その更新情報をバックアップストレージ制御装置に送信する。そして、この更新情報を受信したバックアプ系ストレージ制御装置は、自分が有する位置情報テーブルを更新し、位置情報テーブルを常に最新の状態に保つこととしている。
このように、本実施の形態２に係るストレージシステムでは、メイン系ストレージ制御装置が有する位置情報テーブルとバックアップ系ストレージ制御装置が有する位置情報テーブルを常に同じ状態に保つことにより、メイン系ストレージ制御装置が故障した場合にも、バックアップ系ストレージ制御装置を用いてストレージシステムを稼動することができ、信頼性の高いストレージシステムを実現することができる。
次に、本実施の形態２に係るストレージシステムのシステム構成について説明する。第１５図は、本実施の形態２に係るストレージシステムのシステム構成を示すブロック図である。なお、ここでは説明の便宜上、第１図に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
同図に示すように、このストレージシステムでは、ネットワーク４０上にメイン系ストレージ制御装置１５１０と、バックアップ系ストレージ制御装置１５２０と、実ディスク制御装置１２０と、２台のキャッシュ制御装置１３０および１４０が分散配置される。
メイン系ストレージ制御装置１５１０は、通常の運用において、ネットワーク４０を介してクライアント１０からのアクセス要求を受け付け、実ディスク制御装置１２０、キャシュ制御装置１３０および１４０に対して、アクセス要求に応じた処理を実行させる装置である。このメイン系ストレージ制御装置１５１０は、位置情報テーブル１５１１と、更新情報送信部１５１２とを有する。
位置情報テーブル１５１１は、クライアント１０がストレージシステムにアクセスを要求するデータについて、クライアント１０が指定する論理位置と、実際にデータが格納されたディスク１２１の物理位置およびキャッシュメモリの物理位置と、そのデータの状態すなわちデータがｃｏｈｅｒｅｎｔであるかｄｉｒｔｙであるかの区別を対応させて記憶した表である。
更新情報送信部１５１２は、位置情報テーブル１５１１が更新されるごとに、更新情報をバックアップ系ストレージ制御装置１５２０に送信する処理部である。位置情報テーブル１５１１の更新は、Ｆｌｕｓｈ処理によってキャッシュメモリに記憶されたデータが不要になった場合、Ｆｅｔｃｈ処理によって新たなキャッシュメモリが割り当てられた場合およびデータ書き込み処理において新たなキャッシュメモリが割り当てられた場合などにおこなわれる。
バックアップ系ストレージ制御装置１５２０は、メイン系ストレージ制御装置１５１０が故障した場合に、その処理を引き継いで実行する装置であり、位置情報テーブル１５２１と位置情報テーブル更新部１５２２とを有する。
位置情報テーブル１５２１は、メイン系ストレージ制御装置１５１０が有する位置情報テーブル１５１１と同一のデータを記憶する表である。この位置情報テーブル１５２１が位置情報テーブル１５１１と同一のデータを記憶することにより、メイン系ストレージ制御装置１５１０が故障した場合に、その処理をバックアップ系ストレージ制御装置１５２０が引き継いで実行することが可能となる。
位置情報テーブル更新部１５２２は、メイン系ストレージ制御装置１５１０の更新情報送信部１５１２が送信する位置情報テーブル１５１１の更新情報を受け取り、バックアップ系ストレージ制御装置１５２０の位置情報テーブル１５２１を更新する処理部である。この位置情報テーブル更新部１５２２が位置情報テーブル１５２１を更新することによって、位置情報テーブル１５２１を常に最新の状態に保つことができ、メイン系ストレージ制御装置１５１０が故障した場合に、その処理をバックアップ系ストレージ制御装置１５２０が引き継いで実行することを可能としている。
次に、メイン系ストレージ制御装置１５１０の更新情報送信部１５１２がバックアップ系ストレージ制御装置１５２０に更新情報として送信する位置情報更新メッセージについて説明する。第１６図は、位置情報更新メッセージの一例を示す図である。同図に示すように、この位置情報更新メッセージ１６１０は、種類１６１１と、論理位置情報１６１２と、物理位置情報１６１３と、状態１６１４とを有する。
種類１６１１は、位置情報テーブルの更新の種別を示し、キャッシュメモリの新規割当（ａｌｌｏｃ）、二重化されているキャッシュメモリの一部開放（ｆｒｅｅｌ）またはキャッシュメモリの全部開放（ｆｒｅｅ）のいずれかである。
また、論理位置情報１６１２、物理位置情報１６１３および状態１６１４は、位置情報テーブルの論理位置、物理位置および状態にそれぞれ対応する情報である。すなわち、論理位置情報１６１２は、クライアント１０がストレージシステムのアクセスに利用するデータ格納位置である論理位置に関する情報であり、物理位置情報１６１３は、データを記憶するディスク１２１およびキャッシュメモリでのデータ記憶位置である物理位置に関する情報であり、状態１６１４は、ディスク１２１に格納されたデータとキャッシュメモリに記憶されたデータが同一であるか否かを示す情報である。
次に、第１５図に示したバックアップ系ストレージ制御装置１５２０の位置情報テーブル更新部１５２２の処理手順について説明する。第１７図は、第１５図に示したバックアップ系ストレージ制御装置１５２０の位置情報テーブル更新部１５２２の処理手順を示すフローチャートである。
同図に示すように、この位置情報テーブル更新部１５２２は、メイン系ストレージ制御装置１５１０の更新情報送信部１５１２がバックアップ系ストレージ制御装置１５２０に送信する位置情報更新メッセージ１６１０をネットワーク４０を介して受け取る（ステップＳ１７０１）。
そして、この位置情報更新メッセージ１６１０が有する種類１６１１を調べ（ステップＳ１７０２）、種類１６１１が「ｆｒｅｅ」である場合には、開放されたキャッシュメモリの領域に対応する情報を位置情報テーブル１５２１から削除し（ステップＳ１７０３）、種類１６１１が「ｆｒｅｅｌ」である場合には、一部開放されたキャッシュメモリの領域に対応する位置情報テーブル１５２１の情報を更新する（ステップＳ１７０４）。また、位置情報更新メッセージ１６１０の有する種類１６１１が「ａｌｌｏｃ」である場合には、新規に割り当てられたキャッシュメモリの領域に対応する情報が位置情報テーブル１５２１にあれば、その情報を更新し、新規に割り当てられたキャッシュメモリの領域に対応する情報が位置情報テーブル１５２１になければ、新たな対応情報を作成し、位置情報テーブル１５２１に追加する（ステップＳ１７０５）。
上述したように、本実施の形態２では、メイン系ストレージ制御装置１５１０およびバックアップ系ストレージ制御装置１５２０を用いてストレージ制御装置を二重化し、両方のストレージ制御装置１５１０および１５２０に位置情報テーブル１５１１および１５２１を備え、メイン系ストレージ制御装置１５１０の更新情報送信部１５１２が位置情報テーブル１５１１が更新されるごとに、位置情報更新メッセージ１６１０をバックアップ系ストレージ制御装置１５２０に送信し、バックアップ系ストレージ制御装置１５２０の位置情報テーブル更新部１５２２が位置情報テーブル１５２１を直ちに更新することとしたので、メイン系ストレージ制御装置１５１０が故障した場合にも、バックアップ系ストレージ制御装置１５２０がその処理を引き継いでストレージシステムを稼動させることができ、信頼性の高いストレージシステムを実現することができる。
ところで、上記実施の形態２では、メイン系ストレージ制御装置１５１０の更新情報送信部１５１２がバックアップ系ストレージ制御装置１５２０に位置情報更新メッセージ１６１０を送信し、バックアップ系ストレージ制御装置１５２０が位置情報更新メッセージ１６１０を用いて位置情報テーブル１５２１を直ちに更新する場合について説明したが、バックアップ系ストレージ制御装置１５２０は、位置情報テーブル１５２１を直ちに更新することなく、位置情報更新メッセージ１６１０を更新ログとして保存し、メイン系ストレージ制御装置１５１０が故障してその処理を引き継いだ時点で位置情報テーブル１５２１を更新することもできる。
そこで、位置情報更新メッセージ１６１０を更新ログとして保存し、メイン系ストレージ制御装置１５１０が故障してその処理を引き継いだ時点で位置情報テーブル１５２１を更新するバックアップ系ストレージ制御装置について説明する。
第１８図は、本実施の形態２に係るストレージ制御装置の二重化の変形例の概念について説明するための説明図である。同図に示すように、このストレージ制御装置の二重化の変形例では、メイン系ストレージ制御装置は、位置情報テーブルを更新するごとに、更新情報をバックアップ系ストレージ制御装置に送信する。また、更新情報を受信したバックアプ系ストレージ制御装置は、位置情報テーブルを直ちに更新するかわりに、更新情報を更新ログとして保存する。そして、バックアップ系ストレージ制御装置は、メイン系ストレージ制御装置が故障してその処理を引き継いだ時に、保存した更新ログを用いて位置情報テーブルを更新する。
このように、この変形例では、バックアップ系ストレージ制御装置が更新情報を受け取った時点で直ちに位置情報テーブルを更新するかわりに、更新情報を更新ログとして保存することとしたので、バックアップ系ストレージ制御装置の処理負荷を低減することができ、バックアップ系ストレージ制御装置を他の処理に有効に使うことができる。
実施の形態３．
上記の実施の形態１および２では、２台のキャッシュ制御装置を用いた場合について説明したが、キャッシュ制御装置の台数は、ディスク１２１の増強などにともなうキャッシュヒット率の低下を避けるために、順次増やしていく必要がある。そこで、本実施の形態３では、ｎ台のキャッシュ制御装置を用いたストレージシステムについて説明する。
第１９図は、本実施の形態３に係るストレージシステムのシステム構成を示すブロック図である。なお、ここでは説明の便宜上、第１図に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
同図に示すように、このストレージシステムでは、ネットワーク４０上にストレージ制御装置１９１０と、実ディスク制御装置１２０および１９２０と、キャッシュ制御装置１３０、１４０および１９３０が分散配置される。なお、ここでは、説明の便宜上、２台の実ディスク制御装置１２０および１９２０ならびに３台のキャッシュ制御装置１３０、１４０および１９３０を示したが、このストレージシステムは、ｍ台の実ディスク制御装置とｎ台のキャッシュ制御装置とを有する。
ストレージ制御装置１９１０は、ｄｉｒｔｙな状態にあるデータをｎ台のキャッシュ制御装置のうちの２台が記憶するように制御する。すなわち、このストレージ制御装置１９１０は、ｎ台のキャッシュ制御装置のうち１台のキャッシュ制御装置が故障した場合にも、故障したキャッシュ制御装置のデータは、他のキャッシュ制御装置かディスクに必ず存在するようにキャッシュ制御装置を制御することにより、効率の良いキャッシュメモリの利用と信頼性の高いストレージシステムを実現している。
実ディスク制御装置１９２０およびキャッシュ制御装置１９３０は、より大規模なデータを扱うために、新たにストレージシステムに追加した装置である。ただし、このキャッシュ制御装置１９３０は、たとえば、第１９図において、ｄｉｒｔｙな状態にあるデータＭを記憶する必要はない。その理由は、２台のキャッシュ制御装置１３０および１４０がデータＭを記憶しており、３台以上のキャッシュ制御装置が同一データを記憶する必要はないためである。
上述したように、本実施の形態３では、ストレージシステムにｎ台のキャッシュ制御装置を設け、ディスクに格納されていないｄｉｒｔｙな状態のデータについては、ｎ台のキャッシュ制御装置のうち２台のキャッシュ制御装置に同一データを記憶することとしたので、キャッシュメモリを効率的に使用するとともに、ｎ台のキャッシュ制御装置のうち１台のキャッシュ制御装置が故障した場合にも、残りのキャッシュ制御装置を用いてストレージシステムを稼動することができ、信頼性の高いストレージシステムを実現することができる。
なお、上記実施の形態３では、ｎ台のキャッシュ制御装置のうち２台のキャッシュ制御装置に同一データを記憶する場合について説明したが、本発明はこれに限定されるものではなく、さらに信頼性の高いストレージシステムを得るために、同一データを記憶するキャッシュ制御装置の台数を３台以上に増や場合にも同様に適用することができる。したがって、同一のデータを記憶するキャッシュ制御装置の台数は、システムの運用環境、キャッシュメモリのヒット率、データのアクセス性能、システムの信頼性に対する要求度などに基づいて決定することができる。
さらに、本発明は、ストレージステムの運用環境の変化などにともなって、同一のデータを記憶するキャッシュ制御装置の台数を随時変更することによって、より柔軟なストレージシステムとする場合にも適用することができる。
また、上記実施の形態３では、同一のデータを任意の２台のキャッシュ制御装置に記憶する場合について説明したが、本発明はこれに限定されるものではなく、各キャッシュ制御装置に対して同一のデータを記憶するキャッシュ制御装置を定め、各キャッシュ制御装置のバックアップおこなうストレージシステムにも同様に適用することができる。
また、上記実施の形態１、２および３では、ストレージ制御装置およびキャッシュ制御装置について説明したが、これらの装置が有する構成をソフトウェアによって実現することで、同様の機能を有するストレージ制御プログラムおよびキャッシュ制御プログラムを得ることができる。そこで、これらのストレージ制御プログラムおよびキャッシュ制御プログラムを実行するコンピュータシステムについて説明する。
第２０図は、ストレージ制御プログラムおよびキャッシュ制御プログラムを実行するコンピュータシステム２０００の一例を示す図である。同図に示すように、このコンピュータシステム２０００は、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２００１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２００２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２００３と、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）２００４と、入出力装置２００５と、ＰＣインタフェース２００６とを有する。
ＭＰＵ２００１は、プログラムを実行する演算装置であり、ここでは、ＲＯＭ２００２に記憶されたストレージ制御プログラムおよびキャッシュ制御プログラムを実行する。
ＲＯＭ２００２は、読み出し専用のプログラムおよびデータを記憶したメモリであり、プログラムの実行に先立って、ストレージ制御プログラムおよびキャッシュ制御プログラムを記憶する。
ＲＡＭ２００３は、データの書き込みが可能なメモリであり、ＭＰＵ２００１がプログラムの実行にともなって作成する一時的なデータ等を記憶する。また、このＲＡＭ２００３には、位置情報テーブルが記憶される。
ＮＩＣ２００４は、所定の通信プロトコルを用いてクライアント等と通信をおこなう装置であり、第２図に示したネットワークインタフェース部１１３および第４図に示したネットワークインタフェース部１３３の処理を実行する。
入出力装置２００５は、キーボード、マウスおよびディスプレイなどの装置であり、キーボードおよびマウスは、コンピュータシステム２０００への指示およびデータの入力に使用され、ディスプレイはコンピュータの実行状態の表示等に使用される。
ＰＣインタフェース２００６は、プログラムの開発等に使用するパーソナルコンピュータとのインタフェースであり、パーソナルコンピュータで開発したプログラムのローディングや、パーソナルコンピュータとのデバッグ情報の授受などに使用される。
以上説明したように、本発明によれば、クライアントが書き込みを要求したデータをネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御し、クライアントが読み出しを要求したデータをネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、ディスク装置からデータを読み出し、読み出したデータをあるキャッシュ装置だけに記憶させるとともにクライアントに送信するように制御することとしたので、キャッシュメモリを効率よく使用するとともに、いずれかのキャッシュ装置の故障に起因するストレージシステム全体の稼動停止を防ぎ、信頼性の高いストレージシステムを構築することができるという効果を奏する。
【産業上の利用可能性】  以上のように、本発明に係るストレージ制御装置、ストレージ制御プログラム、ストレージ制御方法およびストレージシステムは、一部の装置が故障した場合にもシステムの稼動を停止することなくサービスを提供する必要がある高信頼性ストレージシステムに適している。
【図１】
2004027625.tif 000003
【図２】
2004027625.tif 000004
【図３】
2004027625.tif 000005
【図４】
2004027625.tif 000006
【図５】
2004027625.tif 000007
【図６】
2004027625.tif 000008
【図７】
2004027625.tif 000009
【図８】
2004027625.tif 000010
【図９】
2004027625.tif 000011
【図１０】
2004027625.tif 000012
【図１１】
2004027625.tif 000013
【図１２】
2004027625.tif 000014
【図１３】
2004027625.tif 000015
【図１４】
2004027625.tif 000016
【図１５】
2004027625.tif 000017
【図１６】
2004027625.tif 000018
【図１７】
2004027625.tif 000019
【図１８】
2004027625.tif 000020
【図１９】
2004027625.tif 000021
【図２０】
2004027625.tif 000022
【手続補正書】
【提出日】平成17年3月16日(2005.3.16)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】      明細書
【特許請求の範囲】
【請求項１】  キャッシュ装置およびディスク装置とともにネットワーク上に分散配置されてストレージシステムを形成し、クライアントからのアクセス要求を受け付け、該キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御装置であって、
前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御する書き込み制御手段と、
前記クライアントが読み出しを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、前記ディスク装置から該データを読み出し、該読み出したデータをあるキャッシュ装置だけに記憶させるとともに前記クライアントに送信するように制御する読み出し制御手段と、
を備えたことを特徴とするストレージ制御装置。
【請求項２】  キャッシュ装置およびディスク装置をネットワーク上に分散配置したストレージシステムで用いられ、クライアントからのアクセス要求を受け付け、該キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御プログラムであって、
前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御する書き込み制御手順と、
前記クライアントが読み出しを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、前記ディスク装置から該データを読み出し、該読み出したデータをあるキャッシュ装置だけに記憶させるとともに前記クライアントに送信するように制御する読み出し制御手順と、
をコンピュータで実行することを特徴とするストレージ制御プログラム。
【請求項３】  前記書き込み制御手順により前記所定の数のキャッシュ装置に多重化して書き込まれたデータを前記ディスク装置に書き込む際に、該所定の数のキャッシュ装置のうちのあるキャッシュ装置だけが該データを引き続き記憶し、他のキャッシュ装置は該データの記憶領域を開放するように制御するフラッシュ制御手順をさらにコンピュータで実行することを特徴とする請求の範囲第２項に記載のストレージ制御プログラム。
【請求項４】  前記書き込み制御手順は、前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの２台のキャッシュ装置に二重化して書き込むように制御することを特徴とする請求の範囲第２項または第３項に記載のストレージ制御プログラム。
【請求項５】  前記書き込み制御手順は、前記クライアントが書き込みを要求したデータを前記ネットワークに配置された全てのキャッシュ装置に多重化して書き込むように制御することを特徴とする請求の範囲第２項または第３項に記載のストレージ制御プログラム。
【請求項６】  前記書き込み制御手順は、前記所定の数のキャッシュ装置に対して、該所定の数を前記データの書き込み完了通知とともに前記クライアントに送信するよう指示することを特徴とする請求の範囲第２項または第３項に記載のストレージ制御プログラム。
【請求項７】  前記クライアントがアクセスを要求するデータの格納領域について、該クライアントが指定する論理的位置と、キャッシュ装置における記憶位置と、ディスク装置における格納位置との対応付けを記憶し、記憶した対応付けに対して更新がおこなわれるごとに、該更新に関する情報を前記ネットワーク上に配置された他のコンピュータで実行されるストレージ制御プログラムに送信する更新情報送信手順をさらにコンピュータで実行することを特徴とする請求の範囲第２項または第３項に記載のストレージ制御プログラム。
【請求項８】  キャッシュ装置およびディスク装置をネットワーク上に分散配置したストレージシステムで用いられ、クライアントからのアクセス要求を受け付け、該キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御方法であって、
前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御する書き込み制御工程と、
前記クライアントが読み出しを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、前記ディスク装置から該データを読み出し、該読み出したデータをあるキャッシュ装置だけに記憶させるとともに前記クライアントに送信するように制御する読み出し制御工程と、
を含んだことを特徴とするストレージ制御方法。
【発明の詳細な説明】
【０００１】
【技術分野】
この発明は、キャッシュ装置およびディスク装置をネットワーク上に分散配置したストレージシステムで用いられ、クライアントからのアクセス要求を受け付け、キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御装置、ストレージ制御プログラムおよびストレージ制御方法に関し、特に、個々の装置の故障に起因するストレージシステム全体の稼動停止を防ぎ、もって信頼性の高いストレージシステムを構築することができるストレージ制御装置、ストレージ制御プログラムおよびストレージ制御方法に関するものである。
【０００２】
【背景技術】
近年、マルチメディアデータの利用などによる処理データ量の急増にともない、ネットワークに接続された大容量ディスクを利用して大規模なデータを統合運用管理するストレージシステムが急速に普及している。このストレージシステムでは、ネットワークのデータ転送速度と比較してディスクのアクセス速度が遅いことから、ディスクのアクセス性能が、システム全体のボトルネックとなっている。このため、ストレージシステムでは、高速アクセスが可能なキャッシュメモリを使用し、ディスクへのアクセス回数を減らすことによって、ディスクのアクセス性能の改善を図っている。
【０００３】
通常、キャッシュメモリを用いる場合には、アクセス要求のあったデータがキャッシュメモリに存在する率を示すキャッシュヒット率がシステム性能に大きく影響することから、できるだけ大きなキャッシュメモリを用いる必要がある。しかし、従来のストレージ装置では、ストレージシステム全体の制御、ディスクの制御、キャッシュメモリの制御などを一つの装置として実現しているため、キャッシュメモリの容量を拡張することが容易でなく、ストレージシステムの増強によってディスクの容量が拡張されると、キャッシュメモリの相対的容量が少なくなり、キャッシュヒット率が低下するという事態が発生していた。
【０００４】
このようなことから、キャッシュメモリの容量の拡張を容易にするために、ストレージシステム全体の制御、ディスクの制御、キャッシュメモリの制御をそれぞれ別の装置として実現し、これらの装置をネットワークに接続して分散配置した分散型ストレージシステムが利用されるようになった。この分散型ストレージシステムでは、キャッシュメモリおよびその制御だけを独立のキャッシュ装置としているため、キャッシュ装置を追加することによってキャッシュメモリの容量を容易に拡張することができる。
【０００５】
しかしながら、この分散型ストレージシステムには、各装置が独立して配置されることから、各装置が別々に故障するという問題点がある。また、各装置が独立にネットワークに接続されるため、各装置を接続する個別ネットワークに故障が発生し、個々の装置が利用できなくなるという問題点がある。
【０００６】
すなわち、従来の一体型ストレージ装置では、ストレージ装置全体として故障が発生するため、ストレージ装置全体の故障を考慮したＲＡＩＤ（Redundant Array of Independent Disks）制御などをおこなえば十分であったが、分散型ストレージシステムでは、分散配置された個別の装置ごとに故障を考慮することが必要となっている。
【０００７】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、個々の装置の故障に起因するストレージシステム全体の稼動停止を防ぎ、もって信頼性の高いストレージシステムを構築することができるストレージ制御装置、ストレージ制御プログラムおよびストレージ制御方法を提供することを目的としている。
【０００８】
【発明の開示】
上述した課題を解決し、目的を達成するため、本発明は、キャッシュ装置およびディスク装置とともにネットワーク上に分散配置されてストレージシステムを形成し、クライアントからのアクセス要求を受け付け、該キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御装置であって、前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御する書き込み制御手段と、前記クライアントが読み出しを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、前記ディスク装置から該データを読み出し、該読み出したデータをあるキャッシュ装置だけに記憶させるとともに前記クライアントに送信するように制御する読み出し制御手段と、を備えたことを特徴とする。
【０００９】
また、本発明は、キャッシュ装置およびディスク装置をネットワーク上に分散配置したストレージシステムで用いられ、クライアントからのアクセス要求を受け付け、該キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御プログラムであって、前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御する書き込み制御手順と、前記クライアントが読み出しを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、前記ディスク装置から該データを読み出し、該読み出したデータをあるキャッシュ装置だけに記憶させるとともに前記クライアントに送信するように制御する読み出し制御手順と、をコンピュータで実行することを特徴とする。
【００１０】
また、本発明は、キャッシュ装置およびディスク装置をネットワーク上に分散配置したストレージシステムで用いられ、クライアントからのアクセス要求を受け付け、該キャッシュ装置およびディスク装置にアクセス要求に応じた処理を実行させるストレージ制御方法であって、前記クライアントが書き込みを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御する書き込み制御工程と、前記クライアントが読み出しを要求したデータを前記ネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、前記ディスク装置から該データを読み出し、該読み出したデータをあるキャッシュ装置だけに記憶させるとともに前記クライアントに送信するように制御する読み出し制御工程と、を含んだことを特徴とする。
【００１１】
かかる発明によれば、クライアントが書き込みを要求したデータをネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御し、クライアントが読み出しを要求したデータをネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、ディスク装置からデータを読み出し、読み出したデータをあるキャッシュ装置だけに記憶させるとともにクライアントに送信するように制御することとしたので、キャッシュメモリを効率よく使用するとともに、いずれかのキャッシュ装置の故障に起因するストレージシステム全体の稼動停止を防ぎ、信頼性の高いストレージシステムを構築することができる。
【００１２】
【発明を実施するための最良の形態】
以下、添付図面を参照して、この発明に係るストレージ制御装置、ストレージ制御プログラムおよびストレージ制御方法の好適な実施の形態を詳細に説明する。
【００１３】
実施の形態１．
まず、本実施の形態１に係るストレージシステムのシステム構成について説明する。第１図は、本実施の形態１に係るストレージシステムのシステム構成を示すブロック図である。同図に示すように、このストレージシステムは、ストレージ制御装置１１０、実ディスク制御装置１２０、二重化されたキャッシュ制御装置１３０および１４０がネットワーク４０上に分散配置されて構成され、ネットワーク４０を介してクライアント１０〜３０から利用される。なお、ここでは説明の便宜上、３台のクライアント１０〜３０のみを示したが、このストレージシステムは、ネットワーク４０を介して任意の台数のクライアントから利用される。また、ここでは、クライアント１０がこのストレージシステムを利用する場合について説明するが、他のクライアント２０および３０も同様にこのストレージシステムを利用することができる。
【００１４】
ストレージ制御装置１１０は、ネットワーク４０を介してクライアント１０からのアクセス要求を受け付け、実ディスク制御装置１２０、キャッシュ制御装置１３０および１４０に、アクセス要求に応じた処理を実行させる装置である。また、このストレージ制御装置１１０は、キャッシュ制御装置１３０および１４０が有するキャッシュメモリに記憶されるデータを管理する。
【００１５】
実ディスク制御装置１２０は、大容量記憶媒体としてのディスク１２１を有し、ストレージ制御装置１１０の指示に基づいてディスク１２１からのデータの読み出しおよびディスク１２１へのデータの書き込みをおこなう装置である。なお、ここでは説明の便宜上、１台の実ディスク制御装置１２０のみを示したが、このストレージシステムでは、格納するデータの規模に応じて、複数の実ディスク制御装置をネットワーク４０上に配置することができる。また、１台の実ディスク制御装置には、複数台のディスクを接続することができる。
【００１６】
キャッシュ制御装置１３０および１４０は、高速アクセス記録媒体としてのキャッシュメモリを有し、ストレージ制御装置１１０の指示に基づいてキャッシュメモリからのデータの読み出しおよびキャッシュメモリへのデータの書き込みをおこなう装置である。
【００１７】
このように、このストレージシステムでは、キャッシュ制御装置を二重化し、同一のデータをキャッシュ制御装置１３０および１４０が有するキャッシュメモリに記憶することとしている。ただし、全てのデータを二重化するのではなく、ディスク１２１に格納されたデータとキャッシュメモリに記憶されたデータが一致する場合、すなわちデータがcoherentな状態にある場合には、そのデータはいずれかのキャッシュメモリのみに記憶され、ディスク１２１に格納されたデータとキャッシュメモリに記憶されたデータが異なる場合、すなわちデータがdirtyな状態にある場合には、そのデータは両方のキャッシュメモリに記憶される。
【００１８】
たとえば、第１図において、データＭは、ディスク１２１上のデータＭ'が書き換えられたデータであり、dirtyな状態にあるので、キャッシュ制御装置１３０およびキャッシュ制御装置１４０が有する二つのキャッシュメモリに記憶されている。また、データＮは、同一データがディスク１２１上に存在するので、キャッシュ制御装置１３０が有するキャッシュメモリのみに記憶されている。
【００１９】
このように、このストレージシステムでは、キャッシュ制御装置を二重化し、同一のデータを二つのキャッシュメモリに記憶することとしたので、キャッシュ制御装置１３０または１４０のいずれかが故障した場合にも、他のキャッシュ制御装置を用いてストレージシステムを稼動させることができ、信頼性の高いストレージシステムを実現することができる。また、このストレージシステムでは、ディスク１２１とキャシュメモリに記憶されたデータが同一である場合には、片方のキャッシュメモリのみにデータを記憶することとしたので、キャッシュメモリを有効に使うことができ、キャッシュヒット率を向上させることができる。
【００２０】
次に、第１図に示したストレージ制御装置１１０の構成について説明する。第２図は、第１図に示したストレージ制御装置１１０の構成を示す機能ブロック図である。同図に示すように、このストレージ制御装置１１０は、位置情報テーブル１１１と、制御部１１２と、ネットワークインタフェース部１１３と、データ読み出し処理部１１４と、データ書き込み処理部１１５と、Ｆｅｔｃｈ処理部１１６と、Ｆｌｕｓｈ処理部１１７とを有する。
【００２１】
位置情報テーブル１１１は、クライアント１０がストレージシステムにアクセスを要求するデータについて、クライアント１０が指定する論理位置と、実際にデータが格納されたディスク１２１の物理位置およびキャッシュメモリの物理位置と、そのデータの状態（すなわちデータがcoherentであるかdirtyであるかの区別）とを対応させて記憶した表である。
【００２２】
第３図は、位置情報テーブル１１１の一例を示す図である。同図は、論理位置が装置番号０番のストレージの０〜７であるデータは、装置番号０番のディスク１２１の０〜７および装置番号０番のキャッシュ制御装置１３０が有するキャッシュメモリの０〜７に記憶され、coherentな状態にあることを示している。また、論理位置が装置番号１番のストレージの８〜１５であるデータは、装置番号０番のディスク１２１の８〜１５、装置番号０番のキャッシュ制御装置１３０が有するキャッシュメモリの８〜１５および装置番号１番のキャッシュ制御装置１４０が有するキャッシュメモリの０〜７に記憶され、dirtyな状態にあることを示している。
【００２３】
このように、この位置情報テーブル１１１が２台のキャッシュ制御装置１３０および１４０が有するキャッシュメモリに記憶されているデータの物理位置をそのデータの論理位置と対応させて記憶することにより、ストレージ制御装置１１０がキャッシュ制御装置の二重化に対応した処理をおこなうことができる。
【００２４】
制御部１１２は、ストレージ制御装置１１０全体を制御する処理部であり、また、ネットワークインタフェース部１１３は、所定の通信プロトコルを用いてクライアント１０、実ディスク制御装置１２０、キャッシュ制御装置１３０および１４０と通信をおこなう処理部である。
【００２５】
データ読み出し処理部１１４は、クライアント１０からのデータ読み出し要求に応答してストレージシステムからデータの読み出しをおこなう処理部であり、位置情報テーブル１１１を用いてデータの論理位置から物理位置を求め、データがキャッシュメモリに記憶されている場合には、データを記憶したキャシュメモリを有するキャッシュ制御装置に対してクライアント１０へのデータ転送を指示する。一方、データがキャッシュメモリに記憶されていない場合には、Ｆｅｔｃｈ処理部１１６に実ディスク制御装置１２０からキャッシュ制御装置へのデータ転送を依頼する。そして、実ディスク制御装置１２０からキャッシュ制御装置にデータが転送された後、データが転送されたキャッシュ制御装置に対してクライアント１０へのデータ転送を指示する。
【００２６】
データ書き込み処理部１１５は、クライアント１０からのデータ書き込み要求に応答してストレージシステムへのデータの書き込みをおこなう処理部であり、位置情報テーブル１１１に基づいて必ず両方のキャッシュ制御装置１３０および１４０に対してキャッシュメモリへのデータの書き込みを指示する。すなわち、位置情報テーブル１１１にキャッシュメモリでのデータの記憶位置が登録されている場合には、その記憶位置にデータの書き込みを指示し、位置情報テーブル１１１にキャッシュメモリでのデータの記憶位置が登録されていない場合には、新たにキャッシュメモリを割り当て、割り当てたキャッシュメモリの位置にデータの書き込みを指示する。
【００２７】
このように、このデータ書き込み処理部１１５が、クライアント１０からのデータ書き込み要求に対して、両方のキャッシュメモリに同じデータを書き込むこととしたので、いずれかのキャッシュ制御装置が故障した場合にも、ストレージシステムの稼動停止を防ぐことができ、ストレージシステムの信頼性を向上することができる。
【００２８】
Ｆｅｔｃｈ処理部１１６は、クライアント１０から読み出し要求のあったデータがキャッシュメモリに記憶されていない場合に、新たにデータを記憶させるキャッシュ制御装置を選択し、実ディスク制御装置１２０に対して、選択したキャッシュ制御装置へのデータの転送を指示する処理部である。
【００２９】
Ｆｌｕｓｈ処理部１１７は、キャッシュメモリに記憶されたデータのうちdirtyな状態にあるデータをディスク１２１に書き込む処理部であり、キャッシュメモリにデータを書き込む際に、空領域が不足した場合、あるいは、キャッシュメモリの使用領域が所定の割合を超えた場合に、キャッシュメモリに空領域を作るために使用される。キャッシュメモリに空領域を作る場合に、どのデータをキャッシュメモリから削除するかの選択は、ＬＲＵ(Least Recently Used)などの手法を用いて決定し、キャッシュメモリから削除することが決定されたデータがdirtyな状態である場合に、このＦｌｕｓｈ処理部１１７が使用される。
【００３０】
次に、第１図に示したキャッシュ制御装置１３０および１４０の構成について説明する。なお、キャシュ制御装置１３０および１４０は、同一の構成を有するので、ここでは、キャッシュ制御装置１３０を例にとって説明する。第４図は、第１図に示したキャッシュ制御装置１３０の構成を示す機能ブロック図である。同図に示すように、このキャッシュ制御装置１３０は、キャッシュメモリ１３１と、制御部１３２と、ネットワークインタフェース部１３３と、キャッシュ読み出し処理部１３４と、キャッシュ書き込み処理部１３５と、Ｆｅｔｃｈ対応部１３６と、Ｆｌｕｓｈ対応部１３７とを有する。
【００３１】
キャッシュメモリ１３１は、ストレージシステムへのアクセスを高速化するために、ディスク１２１に格納されたデータの一部およびディスク１２１に格納されるデータを記憶した記憶部であり、ディスク１２１と比較して、アクセス時間が短く、容量が小さいという特徴を有する。このキャッシュメモリ１３１に記憶されるデータおよびその記憶位置は、ストレージ制御装置１１０が有する位置情報テーブル１１１に記憶される。
【００３２】
制御部１３２は、キャッシュ制御装置１３０全体を制御する処理部であり、また、ネットワークインタフェース部１３３は、所定の通信プロトコルを用いてクライアント１０、ストレージ制御装置１１０および実ディスク制御装置１２０と通信をおこなう処理部である。
【００３３】
キャッシュ読み出し処理部１３４は、ストレージ制御装置１１０からのデータ読み出し指示に基づいてキャッシュメモリ１３１からデータを読み出し、読み出したデータをクライアント１０へ転送する処理部である。
【００３４】
キャッシュ書き込み処理部１３５は、ストレージ制御装置１１０からのデータ書き込み指示に基づいてクライアント１０のバッファからデータを読み出し、読み出したデータをキャッシュメモリ１３１に書き込む処理部である。また、このキャッシュ書き込み処理部１３５は、キャッシュメモリ１３１へのデータの書き込みが完了すると、クライアント１０にデータ書き込み完了を通知する。そして、この完了通知は、キャッシュ制御装置の二重化に対応したものとなっており、その詳細については後述する。
【００３５】
Ｆｅｔｃｈ対応部１３６は、ストレージ制御装置１１０のＦｅｔｃｈ処理部１１６の指示に基づいて実ディスク制御装置１２０がキャッシュ制御装置１３０に転送するデータをキャッシュメモリ１３１に書き込む処理部である。
【００３６】
Ｆｌｕｓｈ対応部１３７は、ストレージ制御装置１１０のＦｌｕｓｈ処理部１１７の指示に基づいてキャッシュメモリ１３１からデータを読み出し、実ディスク制御装置１２０に転送する処理部である。
【００３７】
次に、ストレージ制御装置１１０がキャッシュ制御装置１３０および１４０ならびに実ディスク制御装置１２０に対して処理を指示するために送信するメッセージについて説明する。第５図は、ストレージ制御装置１１０が送信するメッセージの一例を示す図である。同図（ａ）は、ストレージ制御装置１１０がキャッシュ制御装置１３０および１４０に送信するキャッシュメモリへのデータアクセス指示メッセージを示し、同図（ｂ）は、ストレージ制御装置１１０が実ディスク制御装置１２０に送信するデータ転送指示メッセージを示している。
【００３８】
同図（ａ）に示すように、ストレージ制御装置１１０がキャッシュ制御装置１３０および１４０に送信するキャッシュメモリへのデータアクセス指示メッセージ５１０は、内部ヘッダ５１１と、応答ヘッダ５１２とデータ位置５１３とを有する。
【００３９】
内部ヘッダ５１１には、キャッシュ制御装置１３０および１４０がデータ送受信をおこなうクライアント１０または実ディスク制御装置１２０のアドレスと、キャッシュメモリからのデータ読み出し指示（「読み出し」）であるか、キャッシュメモリへのデータ書き込み指示（「書き込み」）であるかの区別を示すコマンド種別が含まれる。
【００４０】
すなわち、データアクセス指示メッセージ５１０がキャッシュメモリへのデータ書き込み指示である場合には、アドレスはデータ書き込み要求をおこなったクライアント１０のアドレスであり、コマンド種別は「書き込み」である。また、データアクセス指示メッセージ５１０がキャッシュメモリからのデータ読み出し指示である場合には、アドレスはデータ読み出し要求をおこなったクライアント１０のアドレスであり、コマンド種別は「読み出し」である。その他、データアクセス指示メッセージ５１０がキャッシュメモリからディスク１２１へのデータ転送指示である場合には、アドレスはデータ転送先の実ディスク制御装置１２０のアドレスであり、コマンド種別は「読み出し」である。
【００４１】
応答ヘッダ５１２は、キャッシュ制御装置１３０および１４０がストレージ制御装置１１０に指示された処理を実行した結果をクライアント１０またはストレージ制御装置１１０へ伝えるためのヘッダフォーマットであり、この応答ヘッダ５１２には、クライアント１０からの要求などを識別するコマンドＩＤおよび実行が成功したか失敗したかを示す実行結果が含まれる。なお、キャッシュメモリへのデータ書き込みを指示するデータアクセス指示メッセージ５１０の応答ヘッダ５１２に含まれるデータについては後述する。
【００４２】
データ位置５１３には、データを記憶するディスク１２１ならびにキャッシュメモリの物理位置が含まれる。ただし、データがキャッシュメモリに記憶されていない場合には、ディスク１２１の物理位置だけが含まれる。
【００４３】
また、第５図（ｂ）に示すように、ストレージ制御装置１１０が実ディスク制御装置１２０に送信するデータ転送指示メッセージ５２０も、内部ヘッダ５２１と、応答ヘッダ５２２とデータ位置５２３とを有する。
【００４４】
内部ヘッダ５２１には、データの転送先であるキャッシュ制御装置１３０または１４０のアドレスと、コマンド種別として「読み出し」が含まれる。応答ヘッダ５２２は、実ディスク制御装置１２０がデータ転送の結果（成功または失敗）をストレージ制御装置１１０に伝えるためのヘッダフォーマットである。また、データ位置５２３には、転送するデータを格納したディスク１２１でのデータの位置を指定する物理位置およびデータの書き込み先であるキャッシュメモリでのデータの記憶位置が含まれる。
【００４５】
次に、キャッシュ制御装置１３０および１４０がストレージ制御装置１１０からの指示に応答して、クライアント１０、ストレージ制御装置１１０および実ディスク制御装置１２０に送信するメッセージについて説明する。第６図は、キャッシュ制御装置１３０および１４０が送信するメッセージの一例を示す図である。同図（ａ）は、クライアント１０の要求に基づいてキャッシュメモリからのデータの読み出し処理またはキャッシュメモリへのデータの書き込み処理を実行した結果をクライアント１０に送信する応答メッセージ６１０を示し、同図（ｂ）は、Ｆｌｕｓｈ処理に基づいてキャッシュメモリのデータを実ディスク制御装置１２０に転送するデータ転送メッセージ６２０を示し、同図（ｃ）は、実ディスク制御装置１２０へのデータの転送が完了した場合に、ストレージ制御装置１１０に送信するデータ転送完了メッセージを示している。
【００４６】
同図（ａ）に示すように、キャッシュ制御装置１３０および１４０がクライアント１０に送信する応答メッセージ６１０は、応答ヘッダ６１１と応答データ６１２とを有する。応答ヘッダ６１１には、クライアント１０からの要求を識別するコマンドＩＤおよび指示された処理の実行結果が含まれる。また、クライアント１０からの要求がデータの読み出しである場合には、キャッシュメモリから読み出されたデータが応答データ６１２となる。一方、クライアントからの要求がデータの書き込みである場合には、応答データ６１２はない。
【００４７】
また、同図（ｂ）に示すように、キャッシュ制御装置１３０および１４０が実ディスク制御装置１２０に送信するデータ転送メッセージ６２０は、応答ヘッダ６２１と、データ位置６２２と、応答データ６２３とを有する。応答ヘッダ６２１には、このデータ転送メッセージ６２０がＦｌｕｓｈ処理に基づくデータ転送であることを識別するためのコマンドＩＤが含まれ、データ位置６２２には、送信するデータのディスク１２１での書き込み位置を指定する物理位置が含まれ、応答データ６２３は、キャッシュメモリから読み出され、ディスク１２１に格納されるＦｌｕｓｈデータである。
【００４８】
また、同図（ｃ）に示すように、キャッシュ制御装置１３０および１４０がストレージ制御装置１１０に送信するデータ転送完了メッセージ６３０は、応答ヘッダ６３１を有する。この応答ヘッダ６３１には、この応答に対応するストレージ制御装置１１０からの指示メッセージに含まれたコマンドＩＤおよび指示された処理の実行結果が含まれる。
【００４９】
次に、実ディスク制御装置１２０がストレージ制御装置１１０からの指示に応答して、キャッシュ制御装置１３０および１４０ならびにストレージ制御装置１１０に送信するメッセージについて説明する。第７図は、実ディスク制御装置１２０が送信するメッセージの一例を示す図である。同図（ａ）は、Ｆｅｔｃｈ処理に基づいて実ディスク制御装置１２０がディスク１２１に格納されたデータをキャッシュ制御装置１３０または１４０に転送するデータ転送メッセージ７１０を示し、同図（ｂ）は、キャッシュ制御装置１３０または１４０へのデータの転送が完了した場合に、実ディスク制御装置１２０がストレージ制御装置１１０に送信するデータ転送完了メッセージ７２０を示している。
【００５０】
同図（ａ）に示すように、実ディスク制御装置１２０がキャッシュ制御装置１３０または１４０に送信するデータ転送メッセージ７１０は、応答ヘッダ７１１と、データ位置７１２と、応答データ７１３とを有する。応答ヘッダ７１１には、このデータ転送メッセージ７１０がＦｅｔｃｈ処理に基づくデータ転送であることを識別するためのコマンドＩＤが含まれ、データ位置７１２には、転送するデータのキャッシュメモリでの書き込み位置を指定する物理位置が含まれ、応答データ７１３は、ディスク１２１から読み出され、キャッシュメモリに書き込まれるＦｅｔｃｈデータである。
【００５１】
また、同図（ｂ）に示すように、ストレージ制御装置１１０に送信するデータ転送完了メッセージ７２０は、応答ヘッダ７２１を有する。この応答ヘッダ７２１には、この応答に対応するストレージ制御装置１１０からの指示メッセージに含まれたコマンドＩＤおよび指示された処理の実行結果が含まれる。
【００５２】
次に、第２図に示したストレージ制御装置１１０のデータ書き込み処理部１１５の処理について説明する。第８図は、第２図に示したストレージ制御装置１１０のデータ書き込み処理部１１５の処理手順を示すフローチャートである。
【００５３】
同図に示すように、このデータ書き込み処理部１１５は、クライアント１０が指定した書き込みデータの論理位置を用いて位置情報テーブル１１１を検索し（ステップＳ８０１）、キャッシュメモリにデータが有りその状態がdirtyであるか、キャッシュメモリにデータが有りその状態がcoherentであるか、またはキャッシュメモリにデータがないかを調べる（ステップＳ８０２）。
【００５４】
そして、両方のキャッシュメモリにデータが有り、そのデータの状態がdirtyである場合には、両方のキャッシュ制御装置１３０および１４０に対して、コマンド種別を「書き込み」としてデータアクセス指示メッセージ５１０を送信し、クライアント１０の指定するデータをキャッシュメモリへ書き込む指示をおこなう（ステップＳ８０３）。
【００５５】
また、キャッシュメモリのいずれかにデータが有り、そのデータの状態がcoherentである場合には、データのないキャッシュメモリにデータを記憶するための領域を確保し、両方のキャッシュ制御装置１３０および１４０に対して、コマンド種別を「書き込み」としてデータアクセス指示メッセージ５１０を送信する（ステップＳ８０６）。そして、新たに確保したキャッシュメモリの領域について位置情報テーブル１１１を更新する（ステップＳ８０７）。
【００５６】
また、両方のキャッシュメモリにデータがない場合には、両方のキャッシュメモリにデータを記憶するための領域を確保し（ステップＳ８０５）、両方のキャッシュ制御装置１３０および１４０に対して、コマンド種別を「書き込み」としてデータアクセス指示メッセージ５１０を送信する（ステップＳ８０６）。そして、新たに確保したキャッシュメモリの領域について位置情報テーブル１１１を更新する（ステップＳ８０７）。
【００５７】
このように、このデータ書き込み処理部１１５が、クライアント１０が書き込みを要求したデータを常に両方のキャッシュメモリに書き込むこととしたので、いずれかのキャッシュ制御装置が故障した場合にも、データの消失を防ぐことができる。
【００５８】
次に、クライアント１０がストレージシステムへのデータ書き込み完了を判定する手法について説明する。このストレージシステムでは、２台のキャッシュ制御装置１３０および１４０を使用しており、データの書き込みは、２台のキャッシュ制御装置１３０および１４０が有するキャッシュメモリに対しておこなう必要がある。したがって、データの書き込み完了は、両方のキャッシュ制御装置１３０および１４０がキャッシュメモリへのデータの書き込みを完了した時点となる。第９図は、クライアント１０がストレージシステムへのデータ書き込み完了を判定する手法を説明するための説明図である。
【００５９】
同図に示すように、ストレージ制御装置１１０は、クライアント１０からのデータ書き込み要求（コマンドＩＤを「コマンド１」とする）を受け付けると、両方のキャッシュ制御装置１３０および１４０に対して、データアクセス指示メッセージ５１０を送信する。なお、このデータアクセス指示メッセージ５１０では、内部ヘッダ５１１にデータ書き込み要求元であるクライアント１０のアドレスおよびコマンド種別である「書き込み」が含まれ、応答ヘッダ５１２に「コマンド１」への応答は２個であることを指定するデータ（応答１：２個）が含まれ、データ位置５１３にキャッシュメモリでのデータ書き込み位置であるデータ位置Ｐおよびデータ位置Ｑが含まれる。
【００６０】
データ書き込みメッセージ５１０を受信したキャッシュ制御装置１３０および１４０は、クライアント１０のバッファからデータを読み出し、キャッシュ制御装置１３０はキャッシュメモリのデータ位置Ｐに、キャッシュ制御装置１４０はキャッシュメモリのデータ位置Ｑにそれぞれデータを書き込む。そして、データの書き込みが完了すると、応答ヘッダ５１２をもとにして作成した応答メッセージ６１０をクライアント１０へ送信する。この応答メッセージ６１０には、「コマンド１」への応答は２個であることを指定するデータ（応答１：２個）が含まれる。
【００６１】
キャッシュ制御装置１３０または１４０からの応答メッセージ６１０を受信したクライアント１０は、「コマンド１」への応答は２個であることを確認し、他のキャッシュ制御装置からの応答メッセージ６１０を待ち、他のキャッシュ制御装置からの応答メッセージ６１０を受信すると、ストレージシステムへのデータの書き込みが完了したと判定する。
【００６２】
このように、ストレージ制御装置１１０が応答ヘッダ５１２を用いて、データの書き込み要求に対する応答メッセージ６１０が２個であることを指定し、クライアント１０がキャッシュ制御装置からの応答メッセージ６１０の数を数え、応答メッセージ６１０を２個受信した時点で始めてストレージシステムへのデータの書き込みが完了したと判定することとしたので、２台のキャッシュ制御装置１３０および１４０が有するキャッシュメモリに同一のデータが書き込まれることを保障することができる。
【００６３】
次に、本実施の形態１に係るキャッシュメモリへのデータ書き込み手順について説明する。第１０図は、本実施の形態１に係るキャッシュメモリへのデータ書き込み手順を示すフローチャートである。なお、ここでは、キャッシュ制御装置１３０がキャッシュ制御装置１４０より先にキャッシュメモリへのデータの書き込みを完了するものとする。
【００６４】
同図に示すように、キャッシュ制御装置１３０は、ストレージ制御装置１１０が送信したデータアクセス指示メッセージ５１０を受信すると（ステップS１００１）、クライアント１０のバッファからデータを読み込み（ステップS１００２）、読み込んだデータをキャッシュメモリに書き込む。キャッシュメモリでのデータの書き込み位置は、データアクセス指示メッセージ５１０が有するデータ位置５１３で指定される。そして、キャッシュメモリへのデータの書き込みが完了すると、応答メッセージ６１０をクライアント１０に送信する（ステップS１００３）。
【００６５】
一方、他のキャッシュ制御装置１４０も同様に、ストレージ制御装置１１０が送信したデータアクセス指示メッセージ５１０を受信し（ステップS１００５）、クライアント１０のバッファからデータを読み込み（ステップS１００６）、読み込んだデータをキャッシュメモリに書き込む。そして、キャッシュメモリへのデータの書き込みが完了すると、応答メッセージ６１０をクライアント１０に送信する（ステップS１００７）。
【００６６】
また、クライアント１０は、まず、キャッシュ制御装置１３０が送信した応答メッセージ６１０を受信し（ステップS１００４）、応答ヘッダ６１１を解読して応答メッセージ６１０を２個受信する必要があることを認識し、次の応答メッセージ６１０を待つ。そして、キャシュ制御装置１４０からの応答メッセージ６１０を受信すると（ステップS１００８）、両方のキャッシュ制御装置１３０および１４０でデータの書き込み処理が完了したと判定する。
【００６７】
なお、ここでは、キャッシュ制御装置１３０および１４０がキャッシュメモリへのデータの書き込みを完了すると、クライアント１０に応答メッセージ６１０を送信することとしたが、キャッシュ制御装置１３０および１４０は、キャッシュメモリへの書き込みが完了した場合に、クライアント１０のかわりにストレージ制御装置１１０にデータの書き込み完了を通知することもできる。この場合、ストレージ制御装置１１０は、２台のキャッシュ制御装置１３０および１４０にデータ書き込み指示をおこなっているので、指示をおこなったキャッシュ制御装置１３０および１４０からのデータ書き込み完了通知を受け取った後に、クライアント１０に対してデータ書き込み完了を通知することができる。
【００６８】
次に、第２図に示したストレージ制御装置１１０のデータ読み出し処理部１１４の処理手順について説明する。第１１図は、第２図に示したストレージ制御装置１１０のデータ読み出し処理部１１４の処理手順を示すフローチャートである。
【００６９】
同図に示すように、このデータ読み出し処理部１１４は、位置情報テーブル１１１を用いて、クライアント１０が読み出しを要求したデータが０番のキャッシュ制御装置１３０に有るか否かを調べる（ステップＳ１１０１）。そして、０番のキャッシュ制御装置１３０にデータが有る場合には、０番のキャッシュ制御装置１３０に対して、コマンド種別を「読み出し」としてデータアクセス指示メッセージ５１０を送信し（ステップＳ１１０２）、キャッシュメモリに記憶されたデータのクライアント１０への送信を指示する。
【００７０】
一方、クライアント１０が読み出しを要求したデータが０番のキャッシュ制御装置１３０にない場合には、そのデータが１番のキャッシュ制御装置１４０に有るか否かを調べる（ステップＳ１１０３）。また、０番のキャッシュ制御装置１３０に、クライアント１０が読み出しを要求した全てのデータがなかった場合にも、残りのデータが１番のキャッシュ制御装置１４０に有るか否かを調べる（ステップＳ１１０３）。そして、１番のキャッシュ制御装置１４０に求めるデータが有る場合には、１番のキャッシュ制御装置１４０に対して、コマンド種別を「読み出し」としてデータアクセス指示メッセージ５１０を送信し（ステップＳ１１０４）、キャッシュメモリに記憶されたデータのクライアント１０への送信を指示する。
【００７１】
一方、クライアント１０が読み出しを要求したデータが１番のキャッシュ制御装置１４０にない場合には、データがディスク１２１に有るか否かを調べる（ステップＳ１１０５）。また、０番および１番のキャッシュ制御装置１４０に、クライアント１０が読み出しを要求した全てのデータがない場合にも、残りのデータがディスク１２１に有るか否かを調べる（ステップＳ１１０５）。そして、求めるデータがディスク１２１にある場合には、Ｆｅｔｃｈ処理を用いてディスク１２１からデータを読み出し、キャッシュメモリに書き込む（ステップＳ１１０６）。そして、データを書き込んだキャッシュメモリを有するキャッシュ制御装置に対して、コマンド種別を「読み出し」としてデータアクセス指示メッセージ５１０を送信し（ステップＳ１１０７）、キャッシュメモリに記憶されたデータのクライアント１０への送信を指示する。
【００７２】
このように、この読み出し処理部１１４は、クライアント１０が読み出しを要求したデータの記憶位置を、位置情報テーブル１１１を用いて調べ、そのデータが２台のキャッシュ制御装置１３０および１４０のいずれかに有る場合には、そのデータをクライアント１０に送信するように指示を出すことによって、キャッシュの二重化に対応したデータ読み出しをおこなっている。
【００７３】
次に、第２図に示したストレージ制御装置１１０のＦｅｔｃｈ処理部１１６の処理手順について説明する。なお、このＦｅｔｃｈ処理部１１６の処理は、第１１図に示したＦｅｔｃｈ処理（ステップＳ１１０６）に対応した処理となっている。第１２図は、第２図に示したストレージ制御装置１１０のＦｅｔｃｈ処理部１１６の処理手順を示すフローチャートである。
【００７４】
同図に示すように、このＦｅｔｃｈ処理部１１６は、データを記憶するキャッシュメモリ領域を、位置情報テーブル１１１を用いて確保し（ステップＳ１２０１）、データ転送指示メッセージ５２０を用いて、確保したキャッシュメモリ領域を有するキャッシュ制御装置へのデータ転送を実ディスク制御装置１２０に対して指示する（ステップＳ１２０２）。そして、実ディスク制御装置１２０からキャッシュ制御装置へのデータ転送の完了を待ち（ステップＳ１２０３）、実ディスク制御装置１２０からデータ転送完了メッセージ７２０を受信すると（ステップＳ１２０４）、新たに確保したキャッシュメモリ領域について位置情報テーブル１１１を更新する（ステップＳ１２０５）。
【００７５】
次に、第２図に示したストレージ制御装置１１０のＦｌｕｓｈ処理部１１７の処理手順について説明する。第１３図は、第２図に示したストレージ制御装置１１０のＦｌｕｓｈ処理部１１７の処理手順を示すフローチャートである。
【００７６】
同図に示すように、このＦｌｕｓｈ処理部１１７は、ディスク１２１に転送するデータを記憶したキャッシュ制御装置に対して、実ディスク制御装置１２０へのデータ転送を指示するメッセージを送信する。すなわち、内部ヘッダ５１１のアドレスを実ディスク制御装置１２０のアドレスとし、コマンド種別を「読み出し」として、データアクセス指示メッセージ５１０を送信し、実ディスク制御装置１２０へのデータ転送を指示する（ステップＳ１３０１）。
【００７７】
そして、キャッシュ制御装置から実ディスク制御装置１２０へのデータ転送の完了を待ち（ステップＳ１３０２）、キャッシュ制御装置からデータ転送完了メッセージ６３０を受信すると（ステップＳ１３０３）、転送したデータを記憶していたキャッシュメモリ領域を開放し、開放されたキャッシュメモリ領域について位置情報テーブル１１１を更新する（ステップＳ１３０４）。
【００７８】
上述したように、本実施の形態１では、ストレージシステムに２台のキャッシュ制御装置１３０および１４０を設け、両方のキャッシュ制御装置１３０および１４０に同一のデータを記憶することとしたので、いずれかのキャッシュ制御装置が故障した場合にも、他のキャッシュ制御装置を用いてストレージシステムを稼動することができ、信頼性の高いストレージシステムを実現することができる。
【００７９】
また、ディスク１２１に格納されたデータとキャッシュ制御装置１３０および１４０に記憶されたデータが同一である（coherent）場合には、いずれかのキャッシュ制御装置のキャッシュメモリを開放し、ディスク１２１に記憶されたデータとキャッシュ制御装置に記憶されたデータが異なる（dirty）場合にだけ、両方のキャッシュ制御装置１３０および１４０に同一データを記憶することとしたので、キャッシュメモリを効率よく使用することができ、キャッシュヒット率を向上することができる。
【００８０】
実施の形態２．
ところで、上記実施の形態１では、キャッシュ制御装置を二重化することによって、ストレージシステムの信頼性を向上させる場合について説明したが、キャッシュ制御装置を二重化することに加えて、ストレージ制御装置も二重化することによって、さらにストレージシステムの信頼性を向上させることができる。そこで、本実施の形態２では、キャッシュ制御装置の二重化に加えて、ストレージ制御装置を二重化したストレージシステムについて説明する。
【００８１】
まず、本実施の形態２に係るストレージ制御装置の二重化の概念について説明する。第１４図は、本実施の形態２に係るストレージ制御装置の二重化の概念について説明するための説明図である。同図に示すように、このストレージシステムは、メイン系ストレージ制御装置とバックアップ系ストレージ制御装置の２台のストレージ制御装置を有する。
【００８２】
そして、通常の運用では、これらの２台のストレージ制御装置のうちメイン系ストレージ制御装置がストレージシステムのストレージ制御装置として機能する。ただし、メイン系ストレージ制御装置およびバックアップ系ストレージ制御装置の両方が位置情報テーブルを有し、メイン系ストレージ制御装置は、位置情報テーブルを更新するごとに、その更新情報をバックアップストレージ制御装置に送信する。そして、この更新情報を受信したバックアプ系ストレージ制御装置は、自分が有する位置情報テーブルを更新し、位置情報テーブルを常に最新の状態に保つこととしている。
【００８３】
このように、本実施の形態２に係るストレージシステムでは、メイン系ストレージ制御装置が有する位置情報テーブルとバックアップ系ストレージ制御装置が有する位置情報テーブルを常に同じ状態に保つことにより、メイン系ストレージ制御装置が故障した場合にも、バックアップ系ストレージ制御装置を用いてストレージシステムを稼動することができ、信頼性の高いストレージシステムを実現することができる。
【００８４】
次に、本実施の形態２に係るストレージシステムのシステム構成について説明する。第１５図は、本実施の形態２に係るストレージシステムのシステム構成を示すブロック図である。なお、ここでは説明の便宜上、第１図に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
【００８５】
同図に示すように、このストレージシステムでは、ネットワーク４０上にメイン系ストレージ制御装置１５１０と、バックアップ系ストレージ制御装置１５２０と、実ディスク制御装置１２０と、２台のキャッシュ制御装置１３０および１４０が分散配置される。
【００８６】
メイン系ストレージ制御装置１５１０は、通常の運用において、ネットワーク４０を介してクライアント１０からのアクセス要求を受け付け、実ディスク制御装置１２０、キャシュ制御装置１３０および１４０に対して、アクセス要求に応じた処理を実行させる装置である。このメイン系ストレージ制御装置１５１０は、位置情報テーブル１５１１と、更新情報送信部１５１２とを有する。
【００８７】
位置情報テーブル１５１１は、クライアント１０がストレージシステムにアクセスを要求するデータについて、クライアント１０が指定する論理位置と、実際にデータが格納されたディスク１２１の物理位置およびキャッシュメモリの物理位置と、そのデータの状態すなわちデータがcoherentであるかdirtyであるかの区別を対応させて記憶した表である。
【００８８】
更新情報送信部１５１２は、位置情報テーブル１５１１が更新されるごとに、更新情報をバックアップ系ストレージ制御装置１５２０に送信する処理部である。位置情報テーブル１５１１の更新は、Ｆｌｕｓｈ処理によってキャッシュメモリに記憶されたデータが不要になった場合、Ｆｅｔｃｈ処理によって新たなキャッシュメモリが割り当てられた場合およびデータ書き込み処理において新たなキャッシュメモリが割り当てられた場合などにおこなわれる。
【００８９】
バックアップ系ストレージ制御装置１５２０は、メイン系ストレージ制御装置１５１０が故障した場合に、その処理を引き継いで実行する装置であり、位置情報テーブル１５２１と位置情報テーブル更新部１５２２とを有する。
【００９０】
位置情報テーブル１５２１は、メイン系ストレージ制御装置１５１０が有する位置情報テーブル１５１１と同一のデータを記憶する表である。この位置情報テーブル１５２１が位置情報テーブル１５１１と同一のデータを記憶することにより、メイン系ストレージ制御装置１５１０が故障した場合に、その処理をバックアップ系ストレージ制御装置１５２０が引き継いで実行することが可能となる。
【００９１】
位置情報テーブル更新部１５２２は、メイン系ストレージ制御装置１５１０の更新情報送信部１５１２が送信する位置情報テーブル１５１１の更新情報を受け取り、バックアップ系ストレージ制御装置１５２０の位置情報テーブル１５２１を更新する処理部である。この位置情報テーブル更新部１５２２が位置情報テーブル１５２１を更新することによって、位置情報テーブル１５２１を常に最新の状態に保つことができ、メイン系ストレージ制御装置１５１０が故障した場合に、その処理をバックアップ系ストレージ制御装置１５２０が引き継いで実行することを可能としている。
【００９２】
次に、メイン系ストレージ制御装置１５１０の更新情報送信部１５１２がバックアップ系ストレージ制御装置１５２０に更新情報として送信する位置情報更新メッセージについて説明する。第１６図は、位置情報更新メッセージの一例を示す図である。同図に示すように、この位置情報更新メッセージ１６１０は、種類１６１１と、論理位置情報１６１２と、物理位置情報１６１３と、状態１６１４とを有する。
【００９３】
種類１６１１は、位置情報テーブルの更新の種別を示し、キャッシュメモリの新規割当（alloc)、二重化されているキャッシュメモリの一部開放（free1）またはキャッシュメモリの全部開放（free）のいずれかである。
【００９４】
また、論理位置情報１６１２、物理位置情報１６１３および状態１６１４は、位置情報テーブルの論理位置、物理位置および状態にそれぞれ対応する情報である。すなわち、論理位置情報１６１２は、クライアント１０がストレージシステムのアクセスに利用するデータ格納位置である論理位置に関する情報であり、物理位置情報１６１３は、データを記憶するディスク１２１およびキャッシュメモリでのデータ記憶位置である物理位置に関する情報であり、状態１６１４は、ディスク１２１に格納されたデータとキャッシュメモリに記憶されたデータが同一であるか否かを示す情報である。
【００９５】
次に、第１５図に示したバックアップ系ストレージ制御装置１５２０の位置情報テーブル更新部１５２２の処理手順について説明する。第１７図は、第１５図に示したバックアップ系ストレージ制御装置１５２０の位置情報テーブル更新部１５２２の処理手順を示すフローチャートである。
【００９６】
同図に示すように、この位置情報テーブル更新部１５２２は、メイン系ストレージ制御装置１５１０の更新情報送信部１５１２がバックアップ系ストレージ制御装置１５２０に送信する位置情報更新メッセージ１６１０をネットワ−ク４０を介して受け取る（ステップＳ１７０１）。
【００９７】
そして、この位置情報更新メッセージ１６１０が有する種類１６１１を調べ（ステップＳ１７０２）、種類１６１１が「free」である場合には、開放されたキャッシュメモリの領域に対応する情報を位置情報テーブル１５２１から削除し（ステップＳ１７０３）、種類１６１１が「free1」である場合には、一部開放されたキャッシュメモリの領域に対応する位置情報テーブル１５２１の情報を更新する（ステップＳ１７０４）。また、位置情報更新メッセージ１６１０の有する種類１６１１が「alloc」である場合には、新規に割り当てられたキャッシュメモリの領域に対応する情報が位置情報テーブル１５２１にあれば、その情報を更新し、新規に割り当てられたキャッシュメモリの領域に対応する情報が位置情報テーブル１５２１になければ、新たな対応情報を作成し、位置情報テーブル１５２１に追加する（ステップＳ１７０５）。
【００９８】
上述したように、本実施の形態２では、メイン系ストレージ制御装置１５１０およびバックアップ系ストレージ制御装置１５２０を用いてストレージ制御装置を二重化し、両方のストレージ制御装置１５１０および１５２０に位置情報テーブル１５１１および１５２１を備え、メイン系ストレージ制御装置１５１０の更新情報送信部１５１２が位置情報テーブル１５１１が更新されるごとに、位置情報更新メッセージ１６１０をバックアップ系ストレージ制御装置１５２０に送信し、バックアップ系ストレージ制御装置１５２０の位置情報テーブル更新部１５２２が位置情報テーブル１５２１を直ちに更新することとしたので、メイン系ストレージ制御装置１５１０が故障した場合にも、バックアップ系ストレージ制御装置１５２０がその処理を引き継いでストレージシステムを稼動させることができ、信頼性の高いストレージシステムを実現することができる。
【００９９】
ところで、上記実施の形態２では、メイン系ストレージ制御装置１５１０の更新情報送信部１５１２がバックアップ系ストレージ制御装置１５２０に位置情報更新メッセージ１６１０を送信し、バックアップ系ストレージ制御装置１５２０が位置情報更新メッセージ１６１０を用いて位置情報テーブル１５２１を直ちに更新する場合について説明したが、バックアップ系ストレージ制御装置１５２０は、位置情報テーブル１５２１を直ちに更新することなく、位置情報更新メッセージ１６１０を更新ログとして保存し、メイン系ストレージ制御装置１５１０が故障してその処理を引き継いだ時点で位置情報テーブル１５２１を更新することもできる。
【０１００】
そこで、位置情報更新メッセージ１６１０を更新ログとして保存し、メイン系ストレージ制御装置１５１０が故障してその処理を引き継いだ時点で位置情報テーブル１５２１を更新するバックアップ系ストレージ制御装置について説明する。
【０１０１】
第１８図は、本実施の形態２に係るストレージ制御装置の二重化の変形例の概念について説明するための説明図である。同図に示すように、このストレージ制御装置の二重化の変形例では、メイン系ストレージ制御装置は、位置情報テーブルを更新するごとに、更新情報をバックアップ系ストレージ制御装置に送信する。また、更新情報を受信したバックアプ系ストレージ制御装置は、位置情報テーブルを直ちに更新するかわりに、更新情報を更新ログとして保存する。そして、バックアップ系ストレージ制御装置は、メイン系ストレージ制御装置が故障してその処理を引き継いだ時に、保存した更新ログを用いて位置情報テーブルを更新する。
【０１０２】
このように、この変形例では、バックアップ系ストレージ制御装置が更新情報を受け取った時点で直ちに位置情報テーブルを更新するかわりに、更新情報を更新ログとして保存することとしたので、バックアップ系ストレージ制御装置の処理負荷を低減することができ、バックアップ系ストレージ制御装置を他の処理に有効に使うことができる。
【０１０３】
実施の形態３．
上記の実施の形態１および２では、２台のキャッシュ制御装置を用いた場合について説明したが、キャッシュ制御装置の台数は、ディスク１２１の増強などにともなうキャッシュヒット率の低下を避けるために、順次増やしていく必要がある。そこで、本実施の形態３では、ｎ台のキャッシュ制御装置を用いたストレージシステムについて説明する。
【０１０４】
第１９図は、本実施の形態３に係るストレージシステムのシステム構成を示すブロック図である。なお、ここでは説明の便宜上、第１図に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
【０１０５】
同図に示すように、このストレージシステムでは、ネットワーク４０上にストレージ制御装置１９１０と、実ディスク制御装置１２０および１９２０と、キャッシュ制御装置１３０、１４０および１９３０が分散配置される。なお、ここでは、説明の便宜上、２台の実ディスク制御装置１２０および１９２０ならびに３台のキャッシュ制御装置１３０、１４０および１９３０を示したが、このストレージシステムは、ｍ台の実ディスク制御装置とｎ台のキャッシュ制御装置とを有する。
【０１０６】
ストレージ制御装置１９１０は、dirtyな状態にあるデータをｎ台のキャッシュ制御装置のうちの２台が記憶するように制御する。すなわち、このストレージ制御装置１９１０は、ｎ台のキャッシュ制御装置のうち１台のキャッシュ制御装置が故障した場合にも、故障したキャッシュ制御装置のデータは、他のキャッシュ制御装置かディスクに必ず存在するようにキャッシュ制御装置を制御することにより、効率の良いキャッシュメモリの利用と信頼性の高いストレージシステムを実現している。
【０１０７】
実ディスク制御装置１９２０およびキャッシュ制御装置１９３０は、より大規模なデータを扱うために、新たにストレージシステムに追加した装置である。ただし、このキャッシュ制御装置１９３０は、たとえば、第１９図において、dirtyな状態にあるデータＭを記憶する必要はない。その理由は、２台のキャッシュ制御装置１３０および１４０がデータＭを記憶しており、３台以上のキャッシュ制御装置が同一データを記憶する必要はないためである。
【０１０８】
上述したように、本実施の形態３では、ストレージシステムにｎ台のキャッシュ制御装置を設け、ディスクに格納されていないdirtyな状態のデータについては、ｎ台のキャッシュ制御装置のうち２台のキャッシュ制御装置に同一データを記憶することとしたので、キャッシュメモリを効率的に使用するとともに、ｎ台のキャッシュ制御装置のうち１台のキャッシュ制御装置が故障した場合にも、残りのキャッシュ制御装置を用いてストレージシステムを稼動することができ、信頼性の高いストレージシステムを実現することができる。
【０１０９】
なお、上記実施の形態３では、ｎ台のキャッシュ制御装置のうち２台のキャッシュ制御装置に同一データを記憶する場合について説明したが、本発明はこれに限定されるものではなく、さらに信頼性の高いストレージシステムを得るために、同一データを記憶するキャッシュ制御装置の台数を３台以上に増や場合にも同様に適用することができる。したがって、同一のデータを記憶するキャッシュ制御装置の台数は、システムの運用環境、キャッシュメモリのヒット率、データのアクセス性能、システムの信頼性に対する要求度などに基づいて決定することができる。
【０１１０】
さらに、本発明は、ストレージステムの運用環境の変化などにともなって、同一のデータを記憶するキャッシュ制御装置の台数を随時変更することによって、より柔軟なストレージシステムとする場合にも適用することができる。
【０１１１】
また、上記実施の形態３では、同一のデータを任意の２台のキャッシュ制御装置に記憶する場合について説明したが、本発明はこれに限定されるものではなく、各キャッシュ制御装置に対して同一のデータを記憶するキャッシュ制御装置を定め、各キャッシュ制御装置のバックアップおこなうストレージシステムにも同様に適用することができる。
【０１１２】
また、上記実施の形態１、２および３では、ストレージ制御装置およびキャッシュ制御装置について説明したが、これらの装置が有する構成をソフトウェアによって実現することで、同様の機能を有するストレージ制御プログラムおよびキャッシュ制御プログラムを得ることができる。そこで、これらのストレージ制御プログラムおよびキャッシュ制御プログラムを実行するコンピュータシステムについて説明する。
【０１１３】
第２０図は、ストレージ制御プログラムおよびキャッシュ制御プログラムを実行するコンピュータシステム２０００の一例を示す図である。同図に示すように、このコンピュータシステム２０００は、ＭＰＵ（Micro Processing Unit）２００１と、ＲＯＭ（Read Only Memory）２００２と、ＲＡＭ（Random Access Memory）２００３と、ＮＩＣ(Network Interface Card)２００４と、入出力装置２００５と、ＰＣインタフェース２００６とを有する。
【０１１４】
ＭＰＵ２００１は、プログラムを実行する演算装置であり、ここでは、ＲＯＭ２００２に記憶されたストレージ制御プログラムおよびキャッシュ制御プログラムを実行する。
【０１１５】
ＲＯＭ２００２は、読み出し専用のプログラムおよびデータを記憶したメモリであり、プログラムの実行に先立って、ストレージ制御プログラムおよびキャッシュ制御プログラムを記憶する。
【０１１６】
ＲＡＭ２００３は、データの書き込みが可能なメモリであり、ＭＰＵ２００１がプログラムの実行にともなって作成する一時的なデータ等を記憶する。また、このＲＡＭ２００３には、位置情報テーブルが記憶される。
【０１１７】
ＮＩＣ２００４は、所定の通信プロトコルを用いてクライアント等と通信をおこなう装置であり、第２図に示したネットワークインタフェース部１１３および第４図に示したネットワークインタフェース部１３３の処理を実行する。
【０１１８】
入出力装置２００５は、キーボード、マウスおよびディスプレイなどの装置であり、キーボードおよびマウスは、コンピュータシステム２０００への指示およびデータの入力に使用され、ディスプレイはコンピュータの実行状態の表示等に使用される。
【０１１９】
ＰＣインタフェース２００６は、プログラムの開発等に使用するパーソナルコンピュータとのインタフェースであり、パーソナルコンピュータで開発したプログラムのローディングや、パーソナルコンピュータとのデバッグ情報の授受などに使用される。
【０１２０】
以上説明したように、本発明によれば、クライアントが書き込みを要求したデータをネットワークに配置されたキャッシュ装置のうちの所定の数のキャッシュ装置に多重化して書き込むように制御し、クライアントが読み出しを要求したデータをネットワークに配置されたキャッシュ装置のうちのいずれのキャッシュ装置も有しない場合に、ディスク装置からデータを読み出し、読み出したデータをあるキャッシュ装置だけに記憶させるとともにクライアントに送信するように制御することとしたので、キャッシュメモリを効率よく使用するとともに、いずれかのキャッシュ装置の故障に起因するストレージシステム全体の稼動停止を防ぎ、信頼性の高いストレージシステムを構築することができるという効果を奏する。
【０１２１】
【産業上の利用可能性】
以上のように、本発明に係るストレージ制御装置、ストレージ制御プログラム、ストレージ制御方法およびストレージシステムは、一部の装置が故障した場合にもシステムの稼動を停止することなくサービスを提供する必要がある高信頼性ストレージシステムに適している。
【図面の簡単な説明】
【図１】
第１図は、本実施の形態１に係るストレージシステムのシステム構成を示すブロック図である。
【図２】
第２図は、第１図に示したストレージ制御装置の構成を示す機能ブロック図である。
【図３】
第３図は、位置情報テーブルの一例を示す図である。
【図４】
第４図は、第１図に示したキャッシュ制御装置の構成を示す機能ブロック図である。
【図５】
第５図は、ストレージ制御装置が送信するメッセージの一例を示す図である。
【図６】
第６図は、キャッシュ制御装置が送信するメッセージの一例を示す図である。
【図７】
第７図は、実ディスク制御装置が送信するメッセージの一例を示す図である。
【図８】
第８図は、第２図に示したデータ書き込み処理部の処理手順を示すフローチャートである。
【図９】
第９図は、クライアントがストレージシステムへのデータ書き込み完了を判定する手法を説明するための説明図である。
【図１０】
第１０図は、本実施の形態１に係るキャッシュメモリへのデータ書き込み処理手順を示すフローチャートである。
【図１１】
第１１図は、第２図に示したデータ読み出し処理部の処理手順を示すフローチャートである。
【図１２】
第１２図は、第２図に示したＦｅｔｃｈ処理部の処理手順を示すフローチャートである。
【図１３】
第１３図は、第２図に示したＦｌｕｓｈ処理部の処理手順を示すフローチャートである。
【図１４】
第１４図は、本実施の形態２に係るストレージ制御装置の二重化の概念を説明するための説明図である。
【図１５】
第１５図は、本実施の形態２に係るストレージシステムのシステム構成を示すブロック図である。
【図１６】
第１６図は、位置情報更新メッセージの一例を示す図である。
【図１７】
第１７図は、第１５図に示した位置情報テーブル更新部の処理手順を示すフローチャートである。
【図１８】
第１８図は、本実施の形態２に係るストレージ制御装置の二重化の変形例を説明するための説明図である。
【図１９】
第１９図は、本実施の形態３に係るストレージシステムのシステム構成を示すブロック図である。
【図２０】
第２０図は、ストレージ制御プログラムおよびキャッシュ制御プログラムを実行するコンピュータシステムの一例を示す図である。
【国際調査報告】
2004027625.tif 000023
2004027625.tif 000024
2004027625.tif 000025
2004027625.tif 000026