(57)【要約】【課題】  参照と更新の競合はなくなるが、更新用ファイルから参照用ファイルへのコピー処理を行うため、トータルで入出力回数は２倍程度に増える。【解決手段】  第１の領域と第２の領域とを有するキャッシュメモリとキャッシュメモリのデータを格納するディスク装置とを備えたストレージ装置と、第１のプログラムと第２のプログラムを実行する計算機とを備えたデータ処理システムを以下のように動作させる。前記ストレージ装置は、該データ格納要求の入力に応じてデータ格納要求に含まれる該領域識別情報に対応する第１の領域に該データを書き込み、該データ格納要求の入力に応じてデータ格納要求に含まれる該領域識別情報に対応する第２の領域に該データを書き込み、前記第２の領域のデータを前記第１の領域へ反映するためのコピー要求の入力に応じて、第２の領域に格納されたデータを前記第１の領域にコピーする。【選択図】  図１
2005352711.tif 000002
【特許請求の範囲】
【請求項１】
第１の領域と第２の領域とを有するキャッシュメモリとキャッシュメモリのデータを格納するディスク装置とを備えたストレージ装置と、第１のプログラムと第２のプログラムを実行する計算機とを備えたデータ処理システムにおけるキャッシュ制御方法において、
前記ストレージ装置は、前記第１のプログラムの実行により生成されるデータ格納要求には前記第１の領域を特定するための領域識別情報を含み、該データ格納要求の入力に応じてデータ格納要求に含まれる該領域識別情報に対応する第１の領域に該データを書き込み、前記第２のプログラムの実行により生成されるデータ格納要求には前記第２の領域を特定するための領域識別情報を含み、該データ格納要求の入力に応じてデータ格納要求に含まれる該領域識別情報に対応する第２の領域に該データを書き込み、前記第２の領域のデータを前記第１の領域へ反映するためのコピー要求の入力に応じて、第２の領域に格納されたデータを前記第１の領域にコピーすることを特徴とするキャッシュ制御方法。
【請求項２】
前記第２の領域に格納されたデータを前記第１の領域にコピーする場合、前記第１の領域への格納を禁止することを特徴とする請求項１記載のキャッシュ制御方法。
【請求項３】
前記第２の領域に格納されたデータは、前記ディスク装置へはフラッシュしないことを特徴とする請求項１記載のキャッシュ制御方法。
【請求項４】
前記第２の領域に格納されたデータを前記第１の領域にコピーが終了した後、第１の格納禁止を解除することを特徴とする請求項２記載のキャッシュ制御方法。
【請求項５】
前記受信したコマンドの識別番号に対して、キャッシュからデータをリードすることを特徴とする請求項１記載のキャッシュ制御方法。
【請求項６】
前記ストレージ装置は、第１の領域と第２の領域の論理的な対応付けを示す領域対応テーブルを有し、前記第２の領域に格納されたデータを前記第１の領域にコピーするときに前記対応テーブルを参照し、第２の領域のデータを第１のデータと対応付けて前記データをコピーすることを特徴とする請求項１記載のキャッシュ制御方法。
【請求項７】
前記第１の領域と第２の領域の論理的な対応付けを示す領域対応テーブルは、データベースの論理的な位置情報と物理的な位置情報を対応付けることを特徴とする請求項６記載のキャッシュ制御方法。
【請求項８】
第１の領域と第２の領域とを有するキャッシュメモリとキャッシュメモリのデータを格納するディスク装置とを備えたストレージ装置と、第１のプログラムと第２のプログラムを実行する計算機とを備えたデータ処理システムにおいて、
前記ストレージ装置は、前記第１のプログラムの実行により生成されるデータ格納要求には前記第１の領域を特定するための領域識別情報を含み、該データ格納要求の入力に応じてデータ格納要求に含まれる該領域識別情報に対応する第１の領域に該データを書き込む手段と、前記第２のプログラムの実行により生成されるデータ格納要求には前記第２の領域を特定するための領域識別情報を含み、該データ格納要求の入力に応じてデータ格納要求に含まれる該領域識別情報に対応する第２の領域に該データを書き込む手段と、前記第２の領域のデータを前記第１の領域へ反映するためのコピー要求の入力に応じて、第２の領域に格納されたデータを前記第１の領域にコピーする手段とを備えたことを特徴とするデータ処理システム。
【請求項９】
前記第２の領域に格納されたデータを前記第１の領域にコピーする場合、前記第１の領域への格納を禁止することを特徴とする請求項８記載のキャッシュ制御方法。
【請求項１０】
前記第２の領域に格納されたデータは、前記ディスク装置へはフラッシュしないことを特徴とする請求項８記載のデータ処理システム。
【請求項１１】
前記第２の領域に格納されたデータを前記第１の領域にコピーが終了した後、第１の格納禁止を解除することを特徴とする請求項９記載のキャッシュ制御方法。
【請求項１２】
前記受信したコマンドの識別番号に対して、キャッシュからデータをリードすることを特徴とする請求項７記載のデータ処理システム。
【請求項１３】
前記ストレージ装置は、第１の領域と第２の領域の論理的な対応付けを示す領域対応テーブルを有し、前記第２の領域に格納されたデータを前記第１の領域にコピーするときに前記対応テーブルを参照し、第２の領域のデータを第１のデータと対応付けて前記データをコピーすることを特徴とする請求項７記載のデータ処理システム。
【請求項１４】
第１の領域と第２の領域とを有するキャッシュメモリとキャッシュメモリのデータを格納するディスク装置とを備えたストレージ装置と、第１のプログラムと第２のプログラムを実行する計算機とを備えたデータ処理システムを機能するためのデータ処理プログラムにおいて、
前記ストレージ装置では、前記第１のプログラムの実行により生成されるデータ格納要求には前記第１の領域を特定するための領域識別情報を含み、該データ格納要求の入力に応じてデータ格納要求に含まれる該領域識別情報に対応する第１の領域に該データを書き込むステップと、前記第２のプログラムの実行により生成されるデータ格納要求には前記第２の領域を特定するための領域識別情報を含み、該データ格納要求の入力に応じてデータ格納要求に含まれる該領域識別情報に対応する第２の領域に該データを書き込むステップと、前記第２の領域のデータを前記第１の領域へ反映するためのコピー要求の入力に応じて、第２の領域に格納されたデータを前記第１の領域にコピーするステップとを有することを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージシステムのキャッシュ制御方法に関し、特に計算機、又は、プログラムのアクセスに応じた効果的なキャッシング制御技術に関する。
【背景技術】
【０００２】
従来、異なる業務を行う計算機、又は、プログラムで同一なファイル（論理ブロックアドレス）を使用する場合、論理的な不整合が発生することを防止するため、共有なファイルを排他的に使用する排他制御が行われている。この技術によると、特定の計算機、又は、プログラムによるファイルに対するデータ更新要求等の処理の実行が終了するまで、他のプログラムによる当該ファイルへのアクセスは抑止される。そこで、特許文献１に開示されているような、ファイルを二重化し、参照用と更新用に交互に切替えて使用する方式がある。
【０００３】
【特許文献１】特開平３−２６６０４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
参照と更新の競合はなくなるが、更新用ファイルから参照用ファイルへのコピー処理を行うため、トータルで入出力回数は２倍程度増える。さらに、更新用ファイルから参照用ファイルへのコピー処理中は、参照用ファイルへのアクセスは抑止される可能性が高く参照用ファイルをアクセスするプログラムのレスポンスが悪化する。さらに、更新したファールのデータにより、ストレージのキャッシュの情報に影響を与え、他のプログラムのレスポンスが悪化する。
【課題を解決するための手段】
【０００５】
本発明は、計算機からストレージシステムのキャッシュを制御し、データの参照を行いながら、並行して、データを更新するものである。さらに、計算機からストレージシステムのキャッシュに識別番号を付加してキャッシュの確保、解放を行うものである。さらに、ストレージシステムのキャッシュから、ドライブへの書き込みを計算機から制御するものである。さらに、識別番号を付加したコマンドでストレージシステムを制御するものである。さらに、識別番号毎にキャッシュを制御するストレージシステムである。
【発明の効果】
【０００６】
本発明によれば、更新用ファイルから参照用ファイルへのコピー処理をストレージシステムで行うため、ストレージシステムへのアクセスを削減することが可能となる。
【発明を実施するための最良の形態】
【０００７】
以下，本発明の実施例を図面に基づいて詳細に説明する。
図1は、発明実施例の構成を示す図である。１０１，１０２は計算機であり、ストレージシステム１０３を制御してデータの参照、及び、更新を行なう。ディスク１０７は、データが格納される装置であり、低速な装置であるため、キャッシュ１０４を設ける。キャッシュ１０４は、計算機１０１用のキャッシュ１０５と計算機１０２用のキャッシュ１０６には分けられ制御される。計算機１０１がデータを参照する場合、ディスク１０７と同じデータがキャッシュ１０４にある場合、キャッシュ１０４からデータを計算機１０１に返信する。キャッシュ１０４に格納されていない場合は、ディスク１０７から読込み計算機１０１にデータを返信しキャッシュ１０５に格納する。計算機１０２からデータの更新を行った場合は、キャッシュ１０６に更新データが格納され、計算機１０２の制御でキャッシュ１０６に格納したデータをディスク１０７に格納するか、更新したキャッシュ１０６のデータを無効にするか制御するものである。キャッシュ１０６に更新したデータをディスク１０７に格納する際、更新データと同じアドレスのデータがキャッシュ１０５に格納されている場合、キャッシュ１０５に格納されている同じアドレスのデータを無効にし、キャッシュ１０６の更新データをキャッシュ１０５に反映させるものである。キャッシュ１０６に格納している更新データを無効にする際は、キャッシュ１０６の更新データのみを無効にするものである。
【０００８】
図２は、本発明によるキャッシュ制御方法を適用するストレージシステムの概略構成を示したものである。２０１，２０２は計算機であり、２１６はディスク制御装置である。２１４はディスクドライブであり、ディスク制御装置２１６と接続される。計算機２０１，２０２とディスク装置２１６は、ネットワーク２１５に接続される。計算機２０１から入出力要求コマンドがディスク制御装置２１６に発行されると、ディスク装置２１６は入出力要求コマンドを解釈し、ドライブ２１４に対して入出力を行う。ディスク制御装置２１６は、さらに詳細には、ネットワーク制御部２０３、制御プロセッサ２０４、メモリ２０７、ドライブ制御部２０５、およびこれを接続するバス２０６から構成される。ネットワーク制御部２０３は計算機２０１，２０２から発行される入出力コマンドの受付や、処理終了およびデータを計算機２０１，２０２へ知らせる制御を行う。ドライブ制御部２０５は、ドライブ２１４を接続に対するデータの入出力制御を行う。ネットワーク制御部２０３とドライブ制御部２０５は、制御プロセッサ２０４から起動／終了、データ転送指示が発行され動作する。制御プロセッサ２０４の動作は、メモリ２０７内に格納されているプログラムやテーブルに記述されている。
【０００９】
読み込みプログラム２０８は、計算機２０１，２０２から発行された入力要求を制御し、書き込みプログラム２０９は計算機２０１，２０２から発行される出力要求を制御する制御プログラムである。キャッシュ確保プログラム２１０は、データを格納するためのキャッシュ領域２１３の割当てを行う。キャッシュ解放プログラム２１１は、キャッシュ確保プログラム２１０で確保した、キャッシュ領域２１３の解放を行う。書き出しプログラム２１７は、キャッシュ領域２１３の内容を追い出し、又は、定期的にドライブに書き出すためのプログラムである。フラッシュプラグラム２１８は、キャッシュ領域にあるデータをドライブに書き出す指示を行うプログラムである。制御テーブル２１２は、キャッシュ領域２１３に関する情報が格納されている。キャッシュ領域は、ドライブ２１４から読み込んだデータを一時的に格納しておく領域であり、再度同一データの読み込みが、計算機２０１，２０２から要求された場合に、キャッシュ領域２１３から計算機２０１，２０２へデータを返送することで高速化することが可能となる。また計算機２０１，２０２から書き込み要求が発生した場合には、キャッシュ領域２１３内に書き込みデータを一時的に保持するために使用される。計算機２０１，２０２へはキャッシュ領域２１３へデータを書き込んだ時点で書き込み完了報告を行うので、書き込みを高速に行ったように見せることができる。キャッシュ領域２１３から追い出された時、または、定期時間(予め定めた時間間隔)毎もしくはLRUなどのキャッシュ追い出しアルゴリズムに基づいて起動する書き込み制御によりドライブ２１４にデータは書き込まれる。各処理部やプログラムは、ハードウェアで実施可能である。本実施例で説明する計算機は、仮想計算機や、論理サーバ、論理計算機でも実施可能である。各処理部や各プログラムは、プログラムやオブジェクト、プロセス、スレッドで実現することが可能である。
【００１０】
図３はキャッシュ領域３０５の基本的な動作を示している。計算機３０１内ではプログラムＡ（３０２）、計算機３０３内ではプログラムＢ（３０４）が起動されている状態を示している。キャッシュ領域３０５内では、プログラムＡ（３０２）の要求に対応したプログラムＡ用キャッシュ領域３０７、プログラムＢ（３０４）の要求に対応したプログラムＢ用キャッシュ領域３０６が確保されている状態を示している。プログラムＡ（３０２）の要求したデータがキャッシュ領域３０５に格納されていなかった場合は、ドライブ３０７からデータを読み出しプログラムＡ用キャッシュ領域３０８に格納し、プログラムＡへデータを転送する。プログラムＢ（３０４）の要求した書き込みデータは、プログラムＢ用キャッシュ領域３０６に格納する。プログラムＢ用キャッシュ領域３０６に格納したデータはプログラムＢ（３０４）に指示によりドライブ３０８に書き込む、又は、プログラムＢ用キャッシュ領域３０６に書き込んだデータを無効にする。
【００１１】
図４〜７、図２４はディスク制御装置を制御する入出力コマンドの一例を示している。図４のコマンド４０１はストレージシステムからデータを読み込むコマンドであり、図５のコマンド４０６はストレージシステムにデータを書き込むコマンドであり、図６のコマンド４１１はストレージシステムのキャッシュを確保するコマンドであり、図７のコマンド４１６はストレージシステムのキャッシュを解放するコマンドであり、図２４のコマンド４２１はキャッシュに蓄えているデータをドライブへ書き込み指示を行うコマンドである。コマンド４０１は、命令コード４０２、ＬＢＡ４０３（ＬＢＡ：論理ブロックアドレス）、データ長４０４、識別番号４０５から構成される。コマンド４０６は、命令コード４０７、ＬＢＡ４０８、データ長４０９、識別番号４１０から構成される。コマンド４１１は、命令コード４１２、キャッシュ識別番号４１３、キャッシュ長４１４、コントロール４１５から構成される。コマンド４１６は、命令コード４１７、キャッシュ識別番号４１８、コントロール４１９、タイマー４２０から構成される。コマンド４２１は、命令コード４２２、キャッシュ識別番号４２３、コントロール４２４、タイマー４２５から構成される。命令コード４０２，４０７，４１２，４１７、４２２には、それぞれ、リード、ライト、キャッシュ確保、キャッシュ解放、フラッシュがある。ＬＢＡ４０３，４０８は、ドライブ中のデータの場所を示す。データ長４０４，４０９は、入出力のデータの長さを示す。キャッシュ識別番号４０５，４１０，４１３，４１８、４２３は、使用するキャッシュの識別する情報を示す。キャッシュ長４１４は確保するキャッシュ長を示す。コントロール４１５は、確保するキャッシュの制御情報を示す。この情報により、コマンド４０６で書き込みを行うデータを指示があるまでキャッシュに保留することが出来る。コマンド４１６のコントロール４１９は、キャッシュ解放時に、コマンド４２１のコントロール４２４は、フラッシュ時に、保留していた更新データをドライブへ反映するか否かの有無を示す。タイマー４２０、４２５は、キャッシュ解放、フラッシュの遅延時間を指定する。このタイマーを指定することで、キャッシュに保留していた更新データを指定時間に高速にドライブへ反映することができる。また、指定時間で、更新データをドライブへ反省させないで、無効化することも出来る。これは、指定時間で、ドライブの内容を元に戻ることと同様なことが出来る。
【００１２】
図８は、ディスク制御装置で命令コードを受けた場合のフローを示している。命令コード解読５０１は、受け付けたコマンドの命令の意味を解読する。ステップ５０２で、命令コードが読込み要求であるかチェックする。リード処理５０３は、図１１に示すフローのデータの読み出し処理を行いデータの読み出しを行う。ステップ５０４は命令コードが書き込み要求であるかチェックする。ライト処理５０５は、図１５に示すフローの書き込み処理を行いデータの書き込みを行う。ステップ５０６は、命令コードがキャッシュ確保であるかチェックする。キャッシュ確保処理５０７は、図１０に示すフローの識別番号毎のキャッシュ確保処理を行い、図２に示すキャッシュ領域、制御テーブルが使用される。ステップ５０８は、命令コードがキャッシュ解放であるかチェックする。キャッシュ解放処理５０９は、図１９、または、図２０に示すフローの識別番号毎に割当てた、キャッシュ解放処理を行う。ステップ５１０は、命令コードがフラッシュであるかチェックする。フラッシュ処理５１１は図２２に示すフローのデータのフラッシュを行う。
【００１３】
図９は図２の制御テーブルの構成を示している。キャッシュ管理部６０１、６０２は、図４の識別番号に対応する制御テーブルである。キャッシュ管理部６０１、６０２では、キャッシュ部６０３から識別番号毎に割当てたキャッシュ部６０４，６０５を管理する。キャッシュ管理部には、キャッシュ管理識別番号６０８、キャッシュ部ポインタ６０９、キャッシュ部サイズ６１０、保留ＬＢＡポインタ６１１、前方識別番号ポインタ６１２、後方識別番号ポインタ６１３、保留フラグ６１４、タイマー値６２４、タイマー種別６２５から構成される。６０８〜６１４、６２４、６２５が識別番号毎の管理単位である。キャッシュ識別番号６０８は割当てたキャッシュ部の領域を識別する情報であり、キャッシュ部ポインタ６０９、キャッシュ部サイズ６１０は、割当てたキャッシュ領域のポインタ、サイズを格納する領域であり、タイマー値６２４、タイマー種別６２５は、キャッシュ解放、及び、フラッシュを行う時間、タイマーの種別を格納する領域であり、保留フラグ６１４はデータを書き込んだ際、計算機から指示があるまでドライブへの書き込みを保留するか否かを示すフラグであり、保留ＬＢＡポインタ６１１で保留しているＬＢＡ管理部へのポインタを格納する領域であり、前方識別番号ポインタ、後方識別番号ポインタは、各キャッシュ管理部を連結するためのポインタであり、キャッシュ管理部の削除や登録が生じた場合に変更が生じる。ＬＢＡ管理部６０６、６０７は、データを格納しているキャッシュ部を管理する。ＬＢＡ管理部には、更新フラグ６１５、論理ブロックアドレス６１６、参照キャッシュ管理ポインタ６１７、参照キャッシュ部ポインタ６１８、保留キャッシュ管理ポインタ６１９、保留キャッシュ部ポインタ６２０、保留ＬＢＡポインタ６２１、前方ＬＢＡポインタ６２２、後方ＬＢＡポインタ６２３から構成される。論理ブロックアドレス６１２は、管理しているデータの論理ブロックアドレスを格納する領域であり、参照キャッシュ部ポインタ６１８、参照キャッシュ管理ポインタは、ドライブから読み込んだデータ、及び、ドライブに書き込むデータが格納されているキャッシュへのポインタが設定される。参照キャッシュ管理ポインタ６１７は、参照キャッシュ部ポインタ６１８のキャッシュ部を管理するキャッシュ管理部へのポインタが設定される。以後、参照キャッシュ部ポインタ、参照キャッシュ管理ポインタで管理するキャッシュ部を参照キャッシュとする。更新フラグ６１５は、参照キャッシュを、ドライブへ書き込む必要があることを示す領域であり、この参照フラグの設定により、キャッシュからフラッシュやキャッシュ解放時、及び、一定時間毎に実行される書き込みプログラムによってドライブに書き込まれる。保留キャッシュ部ポインタ６２０は、ドライブへ書き込む情報を保留したデータを格納しているキャッシュ部へのポインタを格納する領域であり、保留キャッシュ管理ポインタ６１９は、保留キャッシュ部ポインタ６２０で管理しているキャッシュ部を管理するキャッシュ管理部へのポインタを格納する領域である。以後、保留キャッシュ部ポインタ、保留キャッシュ管理ポインタで管理するキャッシュ部を保留キャッシュとする。保留ＬＢＡポインタは、同じキャッシュ管理部で管理している保留キャッシュどうしを連結するためのポインタであり、保留キャッシュの管理に変更は生じた場合に変更が生じる。前方ＬＢＡポインタ６２２、後方ＬＢＡポインタ６２３は、各ＬＢＡ管理部を連結するためのポインタであり、ＬＢＡ管理部の削除や登録が生じた場合に変更が生じる。一つのＬＢＡ管理部は、一つの論理ブロックアドレスを管理し、参照キャッシュと保留キャッシュ（ドライブへの書き込みを保留したキャッシュ）を管理する。本例の参照キャッシュは、ディスクへの更新を行わない。本例の保留キャッシュは、ディスクへの書き込みは保留するが、保留キャッシュに存在しないブロックへの書き込みが行われた場合は、ディスクから当該ブロックを読み出して保留キャッシュに格納し、当該ブロックを書き込みが発生した計算機へ送ることになる。これは、計算機とストレージシステムがブロック単位でアクセスが行われるために発生する処理である。
【００１４】
図１０はキャッシュ確保処理のフローを示す。キャッシュ管理検索７０１は、既に対象キャッシュ管理部があるか検索する。ステップ７０２で、対象キャッシュ管理部あるか判定する。既にある場合は、処理を完了し存在しない場合はキャッシュ管理部確保７０３に進む。キャッシュ管理確保７０３は、キャッシュ管理部を確保し初期化する。この際、コマンドの中のコントロール情報から保留フラグを参照設定しキャッシュ部確保７０４に進む。キャッシュ部確保７０４では、図２のキャッシュ領域から、コマンドに指定された大きさのキャッシュを割当て、キャッシュ管理部に設定する。
【００１５】
図１１はリード処理のフローを示す。ＬＢＡ管理部検索８０１は、対象となるＬＢＡ管理部を検索する。ＬＢＡ管理部の検索には、ＬＢＡ管理部を作成した際に設定している論理ブロックアドレス（ＬＢＡ）を検索することで行われ、検索した結果は、ステップ８０２で判定する。ステップ８０２で対象となるＬＢＡ管理部がある場合は、ステップ８０９に進む。対象となるＬＢＡ管理部がない場合は、キャッシュ管理検索８０３に進む。これは、図１２に示す用にドライブからデータを読み込む場合である。キャッシュ管理検索８０３では、コマンドに付加されたキャッシュ識別番号に対応したキャッシュ管理部を検索しステップ８０４に進む、ステップ８０４で対象となるキャッシュ管理部の存在を判定しＬＢＡ管理部設定８０５に進む、ＬＢＡ管理部設定８０５では、ドライブ１２０６から読み込むデータを管理するための対象ＬＢＡ管理部を作成し読み込みを行うデータの情報を格納する。既に対象ＬＢＡ管理部が作成済みのときはそのＬＢＡ管理部を使用し、ドライブリード８０６に進み、ドライブリード８０６でドライブから論理ブロックアドレスに対応したデータを読込み、リードデータ転送８０７で読込みを行ったデータを返信し、キャッシュ部ライト８０８で、ディスクから読み込んだデータをキャッシュ部１２０４に格納しキャッシュ部を参照キャッシュとして設定し終了する。ステップ８０２でＬＢＡ管理ブロックがある場合、つまり、キャッシュ１２０３にデータがある場合は、ステップ８０９で対象ＬＢＡ管理部に保留キャッシュが存在するか判定する。これは、図１５のライト処理フローで示す処理において、保留キャッシュがある場合、保留キャッシュ管理ポインタにポインタが設定されていることで判定する。保留キャッシュがない場合は、図１３に示すようなデータの流れとなる、参照キャッシュ転送８１２で参照キャッシュのデータを返信する。保留キャッシュがある場合は、ステップ８１０で保留キャッシュのキャッシュ管理部が、対象キャッシュ管理部と同じか判定し、同じであれば、図１４に示すように、保留キャッシュのデータである、キャッシュ１２０４からデータを返信する。つまり、保留キャッシュ転送８１１で保留しているデータを返信する。保留キャッシュのキャッシュ管理部が一致しないのであれば、図１４では、キャッシュ１２０５に保留キャッシュがあることになる。この場合は、ステップ８１３に進み、ステップ８１３でドライブから読み込んだデータ、つまり、参照キャッシュが無い場合は、図１２に示したように、キャッシュ管理検索８０３に進みドライブからデータを読み込む。参照キャッシュがある場合は、参照キャッシュ転送８１２でデータを転送する。ドライブから読み込んだデータがあるか判定するには、キャッシュ管理ポインタの状態で判定する。
【００１６】
図１５はライト処理のフローを示す。キャッシュ管理部検索９０１は、対象となるキャッシュ管理部を検索する。キャッシュ管理部の検索には、キャッシュ管理部作成時に格納しているキャッシュ識別番号と、コマンドに付加されたキャッシュ識別番号で行われ検索した結果は、ステップ９０２で判定する。ステップ９０２で対象キャッシュ管理部がない場合は、処理を終了し、存在する場合は、ＬＢＡ管理部検索９０３に進む。ＬＢＡ管理部検索９０３では、対象となる論理ブロックアドレスを管理しているＬＢＡ管理部の検索を行う。この検索ではＬＢＡブロック作成時に格納している論理ブロックアドレスとコマンドに付加されている論理ブロックアドレスの比較を行い検索し、検索した結果は、ステップ９０４で判定する。ステップ９０４で対象ＬＢＡ管理部が存在しない場合は、ＬＢＡ管理部割当９０６で書き込むデータを管理するＬＢＡ管理ブロックを確保し、キャッシュ割当９０８で対象キャッシュ管理ブロックから、書き込みデータを格納するキャッシュを割当て、保留キャッシュとし、キャッシュライト９１０に進み、キャッシュライト９１０で、確保したキャッシュにデータを格納する。キャッシュに格納したデータは、ステップ９１２では、キャッシュ確保処理で設定した保留フラグを判定し、保留で有れば処理を終了する。これは、図１６に示すように、計算機１２０２から書き込みを行ったデータはキャッシュ１２０５にデータを格納し処理を終了する。保留フラグが保留でなければ、ステップ９１３に進む、ステップ９１３では、参照キャッシュが存在するか判定し、存在する場合は、キャッシュ解放９１４に進む。存在しない場合は、キャッシュ変更９１５に進む。キャッシュ解放９１４では、参照キャッシュを解放し、キャッシュ変更９１５に進む。キャッシュ変更９１５では、保留キャッシュを参照キャッシュに変更し、更新フラグ設定９１６に進む。更新フラグ設定９１６では、キャッシュに格納したデータをドライブに書き込む指示を示すフラグ、更新フラグを設定する。この更新フラグが設定されているデータは、キャッシュから追い出される時、又は、定期的に実行される書き込みプログラムにより、ドライブに書き込まれる。図１７に示すように、キャッシュ１２０５に更新フラグが設定されているデータがある場合、キャッシュ１２０５に格納されているデータをドライブ１２０６に書き込む。ステップ９０４で、対象ＬＢＡ管理部がある場合、ステップ９０５で、保留キャッシュがあるか判定する。保留キャッシュがある場合は、ステップ９１１に進む、保留キャッシュは、対象キャッシュ管理部が管理するキャッシュか判定する。これは、図１８に示すように、計算機１２０１、１２０２から同じ論理ブロックアドレスに書き込みが行われていないかの判定となる。対象キャッシュの管理ブロックであれば、キャッシュライト９１０に進み、更新キャッシュに格納しているデータを更新し、データを格納する。ステップ９０５で保留キャッシュがない場合は、ステップ９０７に進む、ステップ９０７では、参照キャッシュは、対象キャッシュ管理部で管理しているキャッシュ部であるか判定する。対象キャッシュ管理部で管理しているキャッシュ部であれば、キャッシュ変更９０９に進む、対象キャッシュ管理部で管理していないキャッシュであれば、キャッシュ割当９０８に進む、キャッシュ変更９０９では、参照キャッシュを保留キャッシュに変更し、キャッシュライト９１０に進む。
【００１７】
図１９，図２０は、キャッシュ解放処理のフローを示す。図７のコントロール４１９の情報により、キャッシュに格納している更新データをドライブに反映する場合は、図１９のフローの処理を行い、キャッシュに格納している更新データを無効にする場合は、図２０のフローの処理を行うものである。図１９，図２０のキャッシュ管理検索１００１で解放するキャッシュを管理するキャッシュ管理部の検索を行い、ステップ１００２に進む、ステップ１００２で対象キャッシュ管理部がない場合は処理を終了し、対象キャッシュ管理部がある場合は、ステップ１０１４に進む、ステップ１０１４では、図７のタイマー４２０が設定されているか判定する。
【００１８】
このタイマーが設定されている場合は、タイマー設定１０１５に進む、タイマー設定１０１５では、キャッシュ管理部のタイマー値、タイマー種別にコマンドから求めた、タイマー値、タイマー種別を設定し、処理を終了する。ステップ１０１４でタイマーが設定されていなければ、ステップ１０１３に進む、ステップ１０１３では、保留ＬＢＡポインタに接続する保留キャッシュがあるか判定し、ある場合図１９では、１００６〜１００９までの処理を、図２０では、１０１１〜１０１３までの処理を、保留キャッシュがなくなるまで処理を繰り返す。保留キャッシュがない場合、又は、なくなった場合は、キャッシュ部解放１００４に進む、図１９のステップ１００６では、参照キャッシュの存在を判定し、参照キャッシュが存在する場合は、参照キャッシュ解放１００７に進む、存在しない場合は、保留キャッシュ変更１００８に進む。参照キャッシュ解放１００７では、参照キャッシュを解放し、保留キャッシュ変更１００８に進む。保留キャッシュ変更１００８では、保留キャッシュを参照キャッシュに変更し、更新フラグ変更１００９に進む。更新フラグ１００９では、参照キャッシュのデータをドライブに書き込むための更新フラグを設定する。これにより、キャッシュから追い出される時、又は、定期的に実行される書き込みプログラムによって参照キャッシュのデータがドライブに書き込まれる。この１００３〜１００９のステップで書き込みを保留していた複数のデータが高速にドライブに反映したように見せかける事が出来る。
【００１９】
これは、図２１に示すように、計算機１２０１と同じアドレス（ストレージシステムにおける位置情報が同じ）に対して、計算機１２０２から書き込んだ場合、データがキャッシュ１２０５に格納される。キャッシュ１２０５を解放する処理の実施時に、キャッシュ１２０５の更新データがキャッシュ１２０４の参照キャッシュに置き換わり（上書きされ）もしくは追加されることになる。そして、キャッシュ１２０４からドライブに書き込まれることになる。
【００２０】
また、図２０の１０１１〜１０１３のステップでは、保留キャッシュ解放１０１１で、書き込みを保留しているデータをドライブに書き込まずに解放し、ステップ１０１２に進む。ステップ１０１２では、参照キャッシュが存在するか判定し、存在しない場合は、ＬＢＡ管理部解放１０１３に進む。ＬＢＡ管理部解放１０１３では、ＬＢＡ管理部の解放を行う。この１００３、１０１１〜１０１３のステップでドライブに書き込んだデータを元の状態に戻したこととなり、ドライブに書き込んだデータを高速に全て戻したように見せかけることができる。図１９，２０でステップ１００３が終了したあと、キャッシュ部解放１００４に進む、キャッシュ部解放１００４では、キャッシュ管理部で管理しているキャッシュ部を解放し、キャッシュ管理部解放１００５に進む。キャッシュ管理部解放１００５では、キャッシュ管理部を解放し、処理を終了する。これは、例えば、計算機Ａ１２０１がドライブ１２０６に格納されているデータベースを参照してオンライン処理を実行することを想定する。計算機Ｂ１２０２はそのデータベースを参照してバッチ処理を実行し、実行結果をキャッシュＢ１２０５に格納することを想定する。バッチ処理終了後、計算機Ｂ１２０２からのマージ要求に応答してストレージシステム１０３は、キャッシュＢ１２０５のバッチ処理の処理結果をキャッシュＡ１２０４にコピーする。これにより、バッチ処理の処理結果が、データベースに反映されることになる。図２におけるDB−ディスクブロック変換テーブル２１９は、データベースが格納された領域における各ブロックの論理位置とストレージシステムにおけるブロックの物理位置を対応付けたテーブルである。計算機Ｂ１２０２の入力は、キャッシュBを用いてデータベースを読み込み、その処理結果はキャッシュＢに格納されることになる。このバッチ処理中（キャッシュＢに格納されたバッチ処理結果をキャッシュＡに反映するまで）は、計算機Ａ１２０１からのデータベースへの出力つまりデータベースが格納されているディスクへの書き込みは禁止する。このようにすることで、バッチ処理中のデータベースに更新が発生しないようにすることができる。図2のＤＢ−ディスクブロック変換テーブル２１９を利用することにより、計算機Ｂ１２０２からのバッチ処理結果をキャッシュＢ１２０５へデータベースの論理ブロックで書き込んでおき、データベースの格納位置を示す論理ブロックアドレスをディスクにおける格納位置を示す物理ブロックアドレスに変換することで、キャッシュＡ１２０４へデータベースの更新としてマージすることが可能となる。
【００２１】
図２２，図２３は、フラッシュ処理のフローを示す。図２４のコントロール４２４の情報により、キャッシュに格納している更新データをドライブに反映する場合は、図２２のフローの処理を行い、キャッシュに格納している更新データを無効にする場合は、図２３のフローの処理を行うものである。図２２，図２３のキャッシュ管理検索１００１で解放するキャッシュを管理するキャッシュ管理部の検索を行い、ステップ１００２に進む、ステップ１００２で対象キャッシュ管理部がない場合は処理を終了し、対象キャッシュ管理部がある場合は、ステップ１０１４に進む、ステップ１０１４では、図２４のタイマー４２５が設定されているか判定する。このタイマーが設定されている場合は、タイマー設定１０１５に進む、タイマー設定１０１５では、キャッシュ管理部のタイマー値、タイマー種別にコマンドから求めた、タイマー値、タイマー種別を設定し、処理を終了する。ステップ１０１４でタイマーが設定されていなければ、ステップ１０１３に進む、ステップ１０１３では、保留ＬＢＡポインタに接続する保留キャッシュがあるか判定し、ある場合図２２では、１００６〜１００９までの処理を、図２３では、１０１１〜１０１３までの処理を、保留キャッシュがなくなるまで処理を繰り返す。保留キャッシュがない場合、又は、なくなった場合は、処理を終了する。
【００２２】
図２２のステップ１００６では、参照キャッシュの存在を判定し、参照キャッシュが存在する場合は、参照キャッシュ解放１００７に進む、存在しない場合は、保留キャッシュ変更１００８に進む。参照キャッシュ解放１００７では、参照キャッシュを解放し、保留キャッシュ変更１００８に進む。保留キャッシュ変更１００８では、保留キャッシュを参照キャッシュに変更し、更新フラグ変更１００９に進む。更新フラグ１００９では、参照キャッシュのデータをドライブに書き込むための更新フラグを設定する。これにより、キャッシュから追い出される時、又は、定期的に実行される書き込みプログラムによって参照キャッシュのデータがドライブに書き込まれる。この１００３〜１００９のステップで書き込みを保留していた複数のデータが高速にドライブに反映したように見せかける事が出来る。これは、図２１に示すように、計算機１２０１と同じアドレス（ストレージシステムにおける位置情報が同じ）に対して、計算機１２０２から書き込んだ場合、データがキャッシュ１２０５に格納され、キャッシュ１２０５を解放する処理において、キャッシュ１２０５の更新データがキャッシュ１２０４に参照キャッシュに置き換わり（上書きされ）もしくは追加されることになる。そして、キャッシュ１２０４からドライブに書き込まれることになる。また図２０の１０１１〜１０１３のステップでは、保留キャッシュ解放１０１１で、書き込みを保留しているデータをドライブに書き込まずに解放し、ステップ１０１２に進む。ステップ１０１２では、参照キャッシュが存在するか判定し、存在しない場合は、ＬＢＡ管理部解放１０１３に進む。ＬＢＡ管理部解放１０１３では、ＬＢＡ管理部の解放を行う。この１００３、１０１１〜１０１３のステップでドライブに書き込んだデータを元の状態に戻したこととなり、ドライブに書き込んだデータを高速に全て戻したように見せかける事ができる。図２２，２３でステップ１００３が終了したあと、処理を終了する。
【００２３】
図２５は、キャッシュ管理部、ＬＢＡ管理部で管理しているキャッシュ部をキャッシュから追い出される時、及び、定期的に実行する書き出しプラグラムのフローである。ステップ１１０４で、タイマー値の設定されているキャッシュ管理部があるか判定し、ある場合、ステップ１１０５に進む、ない場合は、ステップ１１０１に進む、ステップ１１０５では、設定されているタイマーが制定時間になったか判定し、設定時間であれば、ステップ１１０６に進む、指定時間でなければ、ステップ１１０１に進む、ステップ１１０６では、タイマー種別を判定し、キャッシュ解放で有れば、キャッシュ解放１１０7に進む、キャッシュ解放でなければステップ１１０８に進む、キャッシュ解放１１０７は、図１９、又は、図２０のキャッシュ解放を行う、尚、コマンド中のタイマーの値は指定しない。これにより、指定時間による、ドライブにデータを書き込んだことになる。ステップ１１０８では、タイマー種別が、フラッシュか判定する。タイマー種別がフラッシュで有れば、フラッシュ処理１１０９に進む、タイマー種別がフラッシュで無ければ、ステップ１１０１に進む、フラッシュ処理１１０９では、図２２、又は、図２３のフラッシュ処理を行う、尚、コマンド中のタイマーの値は指定しない。ステップ１１０１で、参照キャッシュが更新されているか判定する。これは、更新フラグの状態で判定する。更新されていなければ処理を終了し、更新されていれば、ドライブへの書き込み１１０２へ進む。ドライブへの書き込み１１０２では、参照キャッシュのデータをドライブへ書き込み、更新フラグ変更１１０３へ進む。更新フラグ変更１１０３では、更新フラグを初期化し、処理を終了する。図１７に示すように、キャッシュ部１２０３のデータが、ドライブ１２０６に書き込まれることとなる。キャッシュからの追い出し時は、ステップ１１０１から行う。
【図面の簡単な説明】
【００２４】
【図１】構成を示す図
【図２】ストレージシステムの概略構成
【図３】キャッシュ領域の動作
【図４】readコマンドの構成
【図５】writeコマンドの構成
【図６】キャッシュ確保コマンドの構成
【図７】キャッシュ解放コマンドの構成
【図８】命令コードの解析フロー
【図９】制御テーブルの構成
【図１０】キャッシュ確保処理のフロー
【図１１】リード処理のフロー
【図１２】ドライブからデータを読み込む場合のデータの流れ
【図１３】キャッシュからデータを返信する時のデータの流れ  その１
【図１４】キャッシュからデータを返信する時のデータの流れ  その２
【図１５】ライト処理のフロー
【図１６】ドライブへの書き込みを保留する場合のデータの流れ
【図１７】キャッシュからドライブにデータを書き込む時のデータの流れ
【図１８】同じアドレスに複数の計算機からデータを書き込んだときのデータの流れ
【図１９】ドライブへデータを反映する場合のキャッシュ解放処理フロー
【図２０】更新データを無効にするキャッシュ解放処理フロー
【図２１】ドライブへデータを反映する場合のデータの流れ
【図２２】ドライブへデータを反映する場合のフラッシュ処理フロー
【図２３】更新データを無効にするフラッシュ処理フロー
【図２４】flashコマンドの構成
【図２５】書き出しプログラムのフロー
【符号の説明】
【００２５】
１０１…計算機Ａ、１０２…計算機Ｂ、１０３…ストレージシステム、１０４…キャッシュ、１０７…ディスク、２１６…ディスク制御装置、２１５…ネットワーク、２０７…メモリ、２１４…ディスクドライブ。
【図１】
2005352711.tif 000003
【図２】
2005352711.tif 000004
【図３】
2005352711.tif 000005
【図４】
2005352711.tif 000006
【図５】
2005352711.tif 000007
【図６】
2005352711.tif 000008
【図７】
2005352711.tif 000009
【図８】
2005352711.tif 000010
【図９】
2005352711.tif 000011
【図１０】
2005352711.tif 000012
【図１１】
2005352711.tif 000013
【図１２】
2005352711.tif 000014
【図１３】
2005352711.tif 000015
【図１４】
2005352711.tif 000016
【図１５】
2005352711.tif 000017
【図１６】
2005352711.tif 000018
【図１７】
2005352711.tif 000019
【図１８】
2005352711.tif 000020
【図１９】
2005352711.tif 000021
【図２０】
2005352711.tif 000022
【図２１】
2005352711.tif 000023
【図２２】
2005352711.tif 000024
【図２３】
2005352711.tif 000025
【図２４】
2005352711.tif 000026
【図２５】
2005352711.tif 000027