(57)【特許請求の範囲】
【請求項１】
それぞれディスクキャッシュを有する複数のホスト装置がディスク装置を共有し、前記複数のホスト装置と前記ディスク装置とがネットワークを介して互いに結合されているディスクキャッシュシステムであって、
前記複数のホスト装置はそれぞれ、
自己が有するディスクキャッシュにデータを書き込む場合に、データを更新した旨及び書き込むデータを含むブロックに関する情報を、他のホスト装置と前記ディスク装置とに通知する書込通知手段と、
他のホスト装置の前記書込通知手段から通知があった場合に、自己のディスクキャッシュ内の当該ブロックのデータを破棄するデータ破棄手段と、
データを読み出す場合に、自己のディスクキャッシュをアクセスし、ミスヒットが発生すれば、前記ディスク装置に、当該ブロックのデータの転送を要求するキャッシュミスデータ要求手段と、
前記キャッシュミスデータ要求手段の要求に対して、前記ディスク装置から送信されて来た当該ブロックを自己のディスクキャッシュに書き込むディスクキャッシュ書き込み手段と、
前記ディスクキャッシュ書き込み手段により更新された前記ディスクキャッシュから当該ブロックのデータを読み出すデータ読み出し手段と、
を備え、
前記ディスク装置は、
各ホスト装置の前記書込通知手段からのデータを更新した旨の通知に応答して、通知した前記ホスト装置を示すデータを保存する通知先保存手段と、
各ホスト装置の前記キャッシュミスデータ要求手段からのデータ転送の要求に応答して、前記通知先保存手段に保存されたデータに基づいて、データの更新を通知したホスト装置のディスクキャッシュから、要求のあったブロックのデータを書き戻すキャッシュミスデータ書き戻し手段と、
前記キャッシュミスデータ書き戻し手段によって当該ブロックのデータが書き戻された後、前記キャッシュミスデータ要求手段がデータ転送を要求したホスト装置のディスクキャッシュに、当該ブロックのデータを転送するデータ転送手段と、
を備えることを特徴とするディスクキャッシュシステム。
【請求項２】
前記キャッシュミスデータ書き戻し手段と前記データ転送手段とは、
各ホスト装置の前記キャッシュミスデータ要求手段からのデータ転送の要求に応答して、前記通知先保存手段に保存されたデータに基づいて、自己が記憶しているデータが最新のデータであるか否かを判別し、最新のデータである場合には、記憶しているブロックのデータをデータ転送を要求したホスト装置に転送して、最新のデータではない場合に、データの更新を通知したホスト装置のディスクキャッシュから、要求のあったブロックのデータを書き戻し、書き戻した後のデータを、データ転送を要求したホスト装置に転送する、
ことを特徴とする請求項１に記載のディスクキャッシュシステム。
【請求項３】
前記ホスト装置同士の間、および前記ホスト装置と前記ディスク装置との間でやりとりされる情報は、ファイル名とレコード番号とである
ことを特徴とする請求項１または２に記載のディスクキャッシュシステム。
【請求項４】
それぞれディスクキャッシュを有する複数のホスト装置がディスク装置を共有し、前記ディスク装置と前記複数のホスト装置とがネットワークを介して互いに結合されているシステムにおいて、各ディスクキャッシュ及び前記ディスク装置のコヒーレンシーを維持するための制御方法であって、
一のホスト装置が、そのホスト装置が有するディスクキャッシュにデータを書き込む場合に、データを更新した旨及び書き込むデータを含むブロックに関する情報を、他のホスト装置と前記ディスク装置とに通知するステップと、
前記他のホスト装置において、前記一のホスト装置から書き込むデータを含むブロックに関する情報の通知があった場合に、自己のディスクキャッシュ内の当該ブロックのデータを破棄するステップと、
前記ディスク装置において、前記一のホスト装置からそのホスト装置が有するディスクキャッシュにデータを書き込む旨の通知を受けた場合に、通知をした前記一のホスト装置を示すデータを保存するステップと、
前記ホスト装置のいずれかにおいて、データを読み出す場合に、自己のディスクキャッシュをアクセスし、ミスヒットが発生すれば、前記ディスク装置に当該ブロックのデータの転送を要求するステップと、
前記ディスク装置において、データ転送の要求があった場合に、既に保存したホスト装置を示すデータに基づいて、データの更新を通知したホスト装置のディスクキャッシュから、要求のあったブロックのデータを書き戻すステップと、
前記ディスク装置において、書き戻された当該ブロックのデータを、前記データ転送の要求をしたホスト装置のディスクキャッシュに転送するステップと、
前記データ転送の要求をしたホスト装置において、前記ディスク装置から送信されてきたブロックを自己のディスクキャッシュに書き込むステップと、
前記データ転送の要求をしたホスト装置において、ブロックを書き込まれて更新された自己のディスクキャッシュから、当該ブロックのデータを読み出すステップと、
を含むことを特徴とするディスクキャッシュ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディスクキャッシュシステムに関し、特に複数のホストが共有するディスクに対して、各ホストに設けたディスクキャッシュの制御に関するものである。
【０００２】
【従来の技術】
ディスクキャッシュは、磁気ディスク装置とメモリとの間のアクセス速度の違いを緩衝するため、ディスク上に記録されているデータの一部をメモリに保持させておくものである。例えば、ディスク上のデータの読み出し命令に対して、その命令が示すデータがメモリ上にあれば、ディスクからデータを読み出すのではなく、メモリからデータを読み出すようにして、平均的なアクセス速度の向上を図るものである。
【０００３】
ディスクキャッシュには、複数のホストが共有するディスクに対して設けるものもある。このような共有ディスクに対して、各ホストにディスクキャッシュを設けるための技術が、例えば、特開昭６１−１７３３５５号公報と特開昭６４−７６３４５号公報に開示されている。前者は、各ホストのディスクキャッシュに記憶されるデータは、読み出し専用で変更されないものであることが前提であり、コヒーレンシーの問題は生じない。
【０００４】
一方、後者は、各ホストのディスクキャッシュへのデータの書き込みも行っており、コヒーレンシーの維持のために、次のような制御を行っている。すなわち、ある１のホストがディスクキャッシュにデータの書き込みを行う場合、他のホストに通知して当該ホストが共有ディスクをリザーブする。そして、当該１のホストがディスクキャッシュへのデータの書き込みと同時に共有ディスクにもデータを書き込むと共に、他のホストがディスクキャッシュに保持している同一ブロックのデータを捨てさせる。
【０００５】
【発明が解決しようとする課題】
しかしながら、この方法では、例えば、ある１のホストでディスクキャッシュの連続した領域にデータの書き込んでいく場合には、１アドレスのデータの書き込みの都度、上記のようなコヒーレンシーを維持するための制御が必要となる。つまり、コヒーレンシーを維持するための処理のオーバーヘッドが大きく、ファイルアクセスのために要する平均的な時間が長くなるという問題点があった。
【０００６】
本発明は、複数のホストに含まれるディスクキャッシュについて、共有ディスクとのコヒーレンシーを維持しつつ、データアクセスに要する平均的な時間を短くするディスクキャッシュシステム、及びその制御方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成するため、本発明の第１の観点にかかるディスクキャッシュシステムは、
それぞれディスクキャッシュを有する複数のホスト装置がディスク装置を共有し、前記ディスク装置と前記複数のホスト装置とがネットワークを介して互いに結合されているディスクキャッシュシステムであって、
前記複数のホスト装置はそれぞれ、
自己が有するディスクキャッシュにデータを書き込む場合に、データを更新した旨及び書き込むデータを含むブロックに関する情報を、他のホスト装置と前記ディスク装置とに通知する書込通知手段と、
他のホスト装置の前記書込通知手段から通知があった場合に、自己のディスクキャッシュ内の当該ブロックのデータを破棄するデータ破棄手段と、
データを読み出す場合に、自己のディスクキャッシュをアクセスし、ミスヒットが発生すれば、前記ディスク装置に、当該ブロックのデータの転送を要求するキャッシュミスデータ要求手段と、
前記キャッシュミスデータ要求手段の要求に対して、前記ディスク装置から送信されて来た当該ブロックを自己のディスクキャッシュに書き込むディスクキャッシュ書き込み手段と、
前記ディスクキャッシュ書き込み手段により更新された前記ディスクキャッシュから当該ブロックのデータを読み出すデータ読み出し手段と、
を備え、
前記ディスク装置は、
各ホスト装置の前記書込通知手段からのデータを更新した旨の通知に応答して、通知した前記ホスト装置を示すデータを保存する通知先保存手段と、
各ホスト装置の前記キャッシュミスデータ要求手段からのデータ転送の要求に応答して、前記通知先保存手段に保存されたデータに基づいて、データの更新を通知したホスト装置のディスクキャッシュから、要求のあったブロックのデータを書き戻すキャッシュミスデータ書き戻し手段と、
前記キャッシュミスデータ書き戻し手段によって当該ブロックのデータが書き戻された後、前記キャッシュミスデータ要求手段がデータ転送を要求したホスト装置のディスクキャッシュに、当該ブロックのデータを転送するデータ転送手段と、
を備えることを特徴とする。
【０００８】
前記キャッシュミスデータ書き戻し手段と前記データ転送手段とは、
各ホスト装置の前記キャッシュミスデータ要求手段からのデータ転送の要求に応答して、前記通知先保存手段に保存されたデータに基づいて、自己が記憶しているデータが最新のデータであるか否かを判別し、最新のデータである場合には、記憶しているブロックのデータをデータ転送を要求したホスト装置に転送して、最新のデータではない場合に、データの更新を通知したホスト装置のディスクキャッシュから、要求のあったブロックのデータを書き戻し、書き戻した後のデータを、データ転送を要求したホスト装置に転送する、
ことを特徴としてもよい。
【０００９】
前記ホスト装置同士の間、および前記ホスト装置と前記ディスク装置との間でやりとりされる情報は、ファイル名とレコード番号とである
ことを特徴としてもよい。
【００１０】
上記目的を達成するため、本発明の第２の観点にかかるディスクキャッシュ制御方法は、
それぞれディスクキャッシュを有する複数のホスト装置がディスク装置を共有し、前記ディスク装置と前記複数のホスト装置とがネットワークを介して互いに結合されているシステムにおいて、各ディスクキャッシュ及び前記ディスク装置のコヒーレンシーを維持するための制御方法であって、
一のホスト装置が、そのホスト装置が有するディスクキャッシュにデータを書き込む場合に、データを更新した旨及び書き込むデータを含むブロックに関する情報を、他のホスト装置と前記ディスク装置とに通知するステップと、
前記他のホスト装置において、前記一のホスト装置から書き込むデータを含むブロックに関する情報の通知があった場合に、自己のディスクキャッシュ内の当該ブロックのデータを破棄するステップと、
前記ディスク装置において、前記一のホスト装置からそのホスト装置が有するディスクキャッシュにデータを書き込む旨の通知を受けた場合に、通知をした前記一のホスト装置を示すデータを保存するステップと、
前記ホスト装置のいずれかにおいて、データを読み出す場合に、自己のディスクキャッシュをアクセスし、ミスヒットが発生すれば、前記ディスク装置に当該ブロックのデータの転送を要求するステップと、
前記ディスク装置において、データ転送の要求があった場合に、既に保存したホスト装置を示すデータに基づいて、データの更新を通知したホスト装置のディスクキャッシュから、要求のあったブロックのデータを書き戻すステップと、
前記ディスク装置において、書き戻された当該ブロックのデータを、前記データ転送の要求をしたホスト装置のディスクキャッシュに転送するステップと、
前記データ転送の要求をしたホスト装置において、前記ディスク装置から送信されてきたブロックを自己のディスクキャッシュに書き込むステップと、
前記データ転送の要求をしたホスト装置において、ブロックを書き込まれて更新された自己のディスクキャッシュから、当該ブロックのデータを読み出すステップと、
を含むことを特徴とする。
【００１３】
【発明の実施の形態】
以下、添付図面を参照して、本発明の実施の形態について説明する。
【００１４】
図１は、この実施の形態にかかるディスクキャッシュシステムの構成を示す図である。図示するように、ストレージエリアネットワーク１を介して相互に接続された、共有ディスク２と、複数のホスト３１〜３ｎとから構成されている。共有ディスク２及びホスト３１〜３ｎは、コヒーレンシーを維持するために、ストレージエリアネットワーク１を介して互いに制御データをやり取りする。
【００１５】
共有ディスク２は、制御装置及び制御データ格納用のレジスタを含む。ホスト３１〜３ｎは、それぞれがプロセッサとメモリとを有しており、このメモリの一部の領域がローカルなディスクキャッシュ４１〜４ｎとして用いられる。ディスクキャッシュ４１〜４ｎは、それぞれ所定の大きさのブロックを単位として、共有ディスク２に書き込まれているデータの一部を保持する。また、ホスト３１〜３ｎのそれぞれにおけるメモリの一部は、制御データ格納用のレジスタとして使用される。
【００１６】
以下、この実施の形態にかかるディスクキャッシュシステムの動作について、具体的な例を参照しながら説明する。
【００１７】
まず、ホスト３１がファイルへ１レコード分のデータ（例えば、１つのアドレスが示すデータ）を書き込むものとする。この場合において、ホスト３１は、ストレージエリアネットワーク１を介して共有ディスク２及び他のホスト３２〜３ｎに、その旨をデータを書き込むファイル名及びレコード番号と共に通知する。なお、ファイル名及びレコード番号を明らかにすることによってアドレスがわかるので、共有ディスク２及びホスト３２〜３ｎでは、共有ディスク２のアドレス空間内のどのブロックに属するものであるかを知ることができる。
【００１８】
次に、ホスト３１は、当該データを自己のディスクキャッシュ４１の対応するアドレスに書き込む。また、ホスト３１からの通知を受けた共有ディスク２は、通知先がホスト３１であることを示すデータと共に、通知された内容をそれぞれの制御データ格納用のレジスタに一時的に保存する。また、ホスト３２〜３ｎのうちでそれぞれのディスクキャッシュ４２〜４ｎに当該ブロックのデータを保持しているもの（少なくともホスト３２、３ｎを含む）は、ホスト３１からの通知に従って当該ブロックのデータを破棄する。
【００１９】
その後、ホスト３２がファイル中の１レコード分のデータで、ホスト３１から通知のあったデータと同一のブロックに属するデータを読み出すものとする。この場合において、ディスクキャッシュ４２内の当該ブロックのデータが破棄されていてミスヒットとなるため、ホスト３２は、必要なデータの読み出しを共有ディスク２に要求すると共に、このブロック全体の転送をストレージエリアネットワーク１を介して共有ディスク２に要求する。これらの要求は、共有ディスク２内の制御データ格納用レジスタに一時的に保存される。
【００２０】
共有ディスク２は、ホスト３１から通知され、制御データ格納用のレジスタに保存したデータに基づいて、自己内にある当該ブロックのデータが最新のデータでないこと、また、最新のデータを保持しているのがホスト３１内のディスクキャッシュ４１であることが分かる。そこで、共有ディスク２は、ホスト３１に所定の制御データを送り、ディスクキャッシュ４１に保持されている当該ブロックの最新のデータを、ストレージエリアネットワーク１を介して自己内の当該ブロックの領域に書き戻す。
【００２１】
ブロックのデータが書き戻された後、共有ディスク２は、ホスト３２からの読み出し要求がされていたデータを、ストレージエリアネットワーク１を介して要求元のホスト３２に渡す。さらに、ホスト３２からのデータ転送要求に基づいて、書き戻した当該ブロック全体の最新のデータをストレージエリアネットワーク１を介してホスト３２のディスクキャッシュ４２に転送する。
【００２２】
以後、ホスト３２において当該ブロックに含まれるデータを読み出す場合には、ホスト３１〜３ｎのいずれかにおいて当該ブロックへデータの書き込みが再びされるまで、ディスクキャッシュ４２から読み出されることとなる。
【００２３】
さらにその後、当該ブロックへのデータの書き込みがある前に、ホスト３ｎが同一のブロックに属するデータを読み出すものとする。この場合において、ディスクキャッシュ４ｎ内の当該ブロックのデータが破棄されていてミスヒットとなるため、ホスト３ｎは、ホスト３２の場合と同様に、必要なデータの読み出しと、当該データを含むブロック全体の転送とを共有ディスク２に要求する。
【００２４】
今度は、共有ディスク２は、当該ブロックについて自己が保持しているデータが最新のものであることが分かるので、ホスト３ｎからの読み出し要求がされていたデータを、ストレージエリアネットワーク１を介して要求元のホスト３ｎに渡す。さらに、ホスト３ｎからのデータ転送要求に基づいて、自己が保持する当該ブロックのデータをストレージエリアネットワーク１を介してホスト３ｎのディスクキャッシュ４ｎに転送する。
【００２５】
以上説明したように、この実施の形態にかかるディスクキャッシュシステムでは、ホスト３１〜３ｎのいずれかにおいてディスクキャッシュ４１〜４ｎへのデータの書き込みがあったとしても、書き込み後の内容が共有ディスクに反映されるのは、他のホスト３１〜３ｎにおいて当該ブロックのデータが必要になったときである。これにより、例えば、ホスト装置が連続したアドレスにデータを順次書き込んでいくような場合でも、その内容を共有ディスク２に書き込む必要がない。
【００２６】
一方、この例で言えば、他のホスト装置３２で当該ブロックのデータが必要になったとき、最新のデータが共有ディスク２でなく、ディスクキャッシュ４１に保持されていれば、共有ディスク２は、まずディスクキャッシュ４１に保持されている最新のデータを書き戻す。その後、他のホスト装置３２は、最新のデータを共有ディスク２から取り出すこととなるので、コヒーレンシーの問題を生じさせることがない。
【００２７】
つまり、このディスクキャッシュシステムでは、共有ディスク２及びディスクキャッシュ４１〜４ｎのコヒーレンシーを維持させつつ、コヒーレンシーの維持のために要する処理のオーバーヘッドを小さくすることができる。このため、ホスト３１〜３ｎが、本来的に共有ディスク２に格納されるデータのアクセスに要する平均的な時間を短くすることができる。
【００２８】
本発明は、上記の実施の形態に限られず、種々の変形、応用が可能である。以下、本発明に適用可能な上記の実施の形態の変形態様について説明する。
【００２９】
上記の実施の形態では、ホスト３１がデータの書き込みを行った後、ホスト３２は、データの読み出しを行うものとしていたが、書き込みを行う場合もあり得る。この場合は、次の２通りに制御することができる。第１の方法として、ホスト３２は、ディスクキャッシュ４２にミスヒットするので、共有ディスク２に当該ブロックのデータ転送を要求する。共有ディスク２は、ディスクキャッシュ４１から当該ブロックのデータを書き戻した後、ディスクキャッシュ４２に転送する。そして、ディスクキャッシュ４２に当該ブロックのデータが転送された後、データの書き込みを行うと共に、その旨等を共有ディスク２と他のホスト３１〜３ｎにストレージエリアネットワーク１を介して通知する。
【００３０】
また、第２の方法として、ホスト３２は、ディスクキャッシュ４２にミスヒットした後、データの書き込みと当該ブロックのデータ転送を共有ディスク２に要求する。共有ディスク２は、ディスクキャッシュ４１から当該ブロックのデータを書き戻した後、ホスト３２から要求のあったデータを書き込む。その後、共有ディスク２は、当該ブロックのデータをディスクキャッシュ４２に転送する。
【００３１】
上記の実施の形態では、ホスト３２が読み出すデータのブロックがディスクキャッシュ４２から破棄されていたときに、ディスクキャッシュ４１から共有ディスク２に書き戻した当該ブロックのデータを、ディスクキャッシュ４２にのみ転送していた。そして、ホスト３ｎで同じブロックのデータが必要になったときは、再び共有ディスク２からディスクキャッシュ４ｎに転送していた。これに対して、ホスト３１からの通知に対してデータのブロックを破棄したディスクキャッシュ４２〜４ｎのうちの可能なもの全てに、同報で当該ブロックのデータを転送することもできる。
【００３２】
上記の実施の形態では、共有ディスク２及びホスト３１〜３ｎは、ストレージエリアネットワーク１を介して互いに制御データをやり取りしていた。しかしながら、共有ディスク２及びホスト３１〜３ｎの各２点間を接続する信号線を設け、この信号線を介して制御データをやり取りしてもよい。
【００３３】
【発明の効果】
以上説明したように、本発明によれば、各ホスト装置のディスクキャッシュ及びディスク装置のコヒーレンシーを維持しつつ、平均的なデータアクセス時間を短くすることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態にかかるディスクキャッシュシステムを示す図である。
【符号の説明】
１  ストレージエリアネットワーク
２  共有ディスク
３１〜３ｎ  ホスト
４１〜４ｎ  ディスクキャッシュ
【図１】
0003736305.tif 000002