(57)【要約】【課題】  ストレージ装置へのデータ書き込みは、高速化を図るためにキャッシュメモリへの書き込みを行い、非同期に物理ディスクへデータを書き込んでいる。書き込み要求毎にキャッシュメモリの割り当てを行うため、空き領域がない場合に実行する切り出し処理が必要で、書き込み処理時間がかかるという問題点がある。【解決手段】  ＤＢＭＳサーバからストレージ装置へ事前に書き込みが発生するという通知を行い、ストレージ装置に具備されるマネージャがキャッシュメモリの確保を書き込み処理前に行うことで、書き込み処理時にデータを確保したキャッシュメモリに格納する。【選択図】  図1
2006119786.tif 000002
【特許請求の範囲】
【請求項１】
計算機と、
前記計算機と接続される記憶装置とを有するシステムであって、
前記記憶装置は更にキャッシュメモリを有する制御部及びディスク装置を有し、
前記計算機は、前記記憶装置へデータを送信する前に、データ送信を行う旨の情報を前記記憶装置へ送信し、
前記記憶装置の制御部は、前記情報を受信した場合、前記キャッシュメモリに空き領域が有るかどうか判定し、空き領域が存在する場合には、前記空き領域を前記情報で指定されるデータ送信で送信されるデータ用に確保することを特徴とするシステム。
【請求項２】
前記記憶装置の制御部は、前記空き領域が前記情報で指定されるデータ送信で送信されるデータのデータ量よりも少ない場合、前記キャッシュメモリで既に使用されている記憶領域を開放し、前記データ量を格納できるだけの空き領域を確保することを特徴とする請求項１記載のシステム。
【請求項３】
前記制御部は、前記確保された空き領域を、所定の条件に基づいて確保されない状態に変更することを特徴とする請求項２記載のシステム。
【請求項４】
前記所定の条件とは、前記空き領域が確保されてからの経過時間が所定の閾値を超えた場合であることを特徴とする請求項３記載のシステム。
【請求項５】
前記計算機は、第二の所定の条件を満たす場合に、前記情報を前記記憶装置へ送信することを特徴とする請求項４記載のシステム。
【請求項６】
前記計算機は、前記記憶装置へ送信するデータを一時的に保存するための記憶領域を有し、前記第二の所定の条件とは、前記記憶領域に一定量のデータが格納されたという条件であることを特徴とする請求項５記載のシステム。
【請求項７】
前記計算機では、データベースマネジメントシステムが実行され、前記記憶領域は、前記データベースマネジメントシステムが使用するバッファであることを特徴とする請求項６記載のシステム。
【請求項８】
前記記憶領域に格納されるデータは、前記データベースマネジメントシステムが制御するデータベースで使用されるログデータであることを特徴とする請求項７記載のシステム。
【請求項９】
前記記憶装置は、前記情報に基づいて前記空き領域を確保することが出来なかった場合に、前記情報を送信した前記計算機に、前記第二の所定の条件の変更を要求する情報を送信することを特徴とする請求項８記載のシステム。
【請求項１０】
外部装置と接続されるインターフェースと、
キャッシュメモリを有する制御部及びディスク装置を有し、
前記制御部は、前記外部装置から情報を受信した場合、前記キャッシュメモリに空き領域が有るかどうか判定し、空き領域が存在する場合には、前記空き領域を前記情報で特定されるデータ送信で受信するデータ用に確保することを特徴とする記憶装置。
【請求項１１】
前記制御部は、前記空き領域が前記情報で指定されるデータ送信で送信されるデータのデータ量よりも少ない場合、前記キャッシュメモリで既に使用されている記憶領域を開放し、前記データ量を格納できるだけの空き領域を確保することを特徴とする請求項１０記載の記憶装置。
【請求項１２】
前記制御部は、前記確保された空き領域を、所定の条件に基づいて確保されない状態に変更することを特徴とする請求項１１記載の記憶装置。
【請求項１３】
前記所定の条件とは、前記空き領域が確保されてからの経過時間が所定の閾値を超えた場合であることを特徴とする請求項１２記載の記憶装置。
【請求項１４】
記憶装置と接続される計算機であって、
前記記憶装置と接続されるインターフェース及びプロセッサを有し、
前記プロセッサは、前記記憶装置へデータを送信する前に、データ送信を行う旨の情報を前記インターフェースを介して記憶装置へ送信することを特徴とする計算機。
【請求項１５】
前記プロセッサは、所定の条件を満たす場合に、前記情報を前記記憶装置へ送信することを特徴とする請求項１４記載の計算機。
【請求項１６】
前記記憶装置へ送信するデータを一時的に保存するための記憶領域を有し、前記所定の条件とは、前記記憶領域に一定量のデータが格納されたという条件であることを特徴とする請求項１５記載の計算機。
【請求項１７】
前記プロセッサではデータベースマネジメントシステムが実行され、前記記憶領域は、前記データベースマネジメントシステムが使用するバッファであることを特徴とする請求項１６記載の計算機。
【請求項１８】
計算機と、前記計算機と接続され、キャッシュメモリを有する記憶装置とを有するシステムにおけるリソース割当て方法であって、
前記計算機は、前記記憶装置へデータを送信する前に、データ送信を行う旨の情報を前記記憶装置へ送信し、
前記記憶装置は、前記情報を受信した場合、前記キャッシュメモリに空き領域が有るかどうか判定し、
空き領域が存在する場合には、前記空き領域を前記情報で指定されるデータ送信で送信されるデータ用に確保することを特徴とするリソース割当て方法。
【請求項１９】
前記記憶装置は、前記空き領域が前記情報で指定されるデータ送信で送信されるデータのデータ量よりも少ない場合、前記キャッシュメモリで既に使用されている記憶領域を開放し、前記データ量を格納できるだけの空き領域を確保することを特徴とする請求項１８記載のリソース割当て方法。
【請求項２０】
前記記憶装置は、前記確保された空き領域を、所定の条件に基づいて確保されない状態に変更することを特徴とする請求項１９記載のリソース割当て方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに用いられるストレージシステム、特にデータベースに使用されるストレージシステム（以下「データベースシステム」とも言う）に関する。
【背景技術】
【０００２】
ストレージ装置では、自身に接続される計算機（以下「サーバ」とも言う）から発行される書き込み要求や読み出し要求の処理の高速化を以下のように行う。具体的には、ストレージ装置はデータを記憶する不揮発性記憶媒体（ハードディスクドライブ等。以下「ディスク装置」とも言う）に加え、データを一時的に格納する揮発性の記憶媒体（半導体メモリ等。以下「キャッシュメモリ」とも言う）を有する。サーバからデータの読み出し（あるいは書き込み）要求を受けつけた際、要求されたデータがキャッシュメモリに格納されている場合、ストレージ装置は、キャッシュメモリからのデータの読み出し（又は書き込み）で処理を終了（具体的にはサーバへ応答）する。一般的にキャッシュメモリはディスク装置に比べてメカニカルな部分がない分読み出し等のスピードが速い。したがって、ディスク装置への処理を省略することで、ストレージ装置はサーバへの応答処理を高速化することが出来る。
【０００３】
尚、キャッシュメモリに格納されたデータは、キャッシュメモリへの電源供給が絶たれると失われてしまう。そこでストレージ装置は、キャッシュメモリに書き込まれたデータを、サーバからの書き込み処理とは非同期に、ディスク装置に格納する。非特許文献１には、計算機システムの構成や、キャッシュメモリからディスク装置へ書き込まれるデータの動作手順について記載されている。
【０００４】
【非特許文献１】John L.Hennessy, and David A.Patterson. 鼎omputer Architecture : A Quantitative Approach   Morgan Kaufmann Publishers, Inc.
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来技術において、ストレージ装置が書き込み要求を受け取ったとき、ストレージ装置は、書き込むデータ量分のキャッシュメモリの記憶領域を確保する必要がある。しかし、ストレージ装置が有するキャッシュメモリの記憶領域のうち、使用されていない領域（以下「空き領域」とも言う）のサイズが、書き込まれるデータのサイズを下回る場合がある。この場合、ストレージ装置は、キャッシュメモリで既に使用されている記憶領域（以下「利用領域」とも言う）の一部又は全部を空き領域にする処理（以下「切り出し処理」とも言う）を行う必要がある。
【０００６】
切り出し処理とは、ストレージ装置が、書き込みを行うデータをキャッシュメモリに格納する時に不足分の空き領域を確保するため、キャッシュメモリの使用領域に格納されているデータを解放（削除）し、キャッシュされていたデータが利用していた領域を空き領域へ変更する処理である。キャッシュメモリの空き領域が少ない場合やキャッシュメモリの容量自体が小さい場合、あるいはサーバから送信される書き込み対象のデータの量が多い場合、ストレージ装置はサーバからデータ書き込みの要求があるたびにキャッシュメモリの空き領域の確保を行う必要があり、ストレージ装置の処理の高速化が阻害される。又、ストレージ装置に対して複数のサーバから書き込み要求がある場合、ストレージ装置において個々のサーバ間でのキャッシュメモリの空き領域の奪い合いが発生し、書き込み速度が低下する。
【課題を解決するための手段】
【０００７】
本発明の一実施態様は、ストレージ装置への書き込みをサーバがストレージ装置に事前に通知し、その通知に従って、ストレージ装置がキャッシュメモリの空き領域を確保（以下「予約」とも言う）する構成とする。
【０００８】
尚、サーバは、ストレージ装置に書き込むデータの種類に応じて、事前通知の発行の要否を決定しても良い。
更に、ストレージ装置が、一旦予約したキャッシュメモリの空き領域を、所定の条件に従ってその予約を取り消すようにする構成も考えられる。
【０００９】
又、特定のデータ（例えばログデータ）については、常にキャッシュメモリが予約されている状態とする構成であっても良い。
【発明の効果】
【００１０】
本発明により、ストレージ装置におけるデータの書き込み処理のサーバへの応答時間が短縮される。
【発明を実施するための最良の形態】
【００１１】
以下に、図面を参照しながら実施形態を説明する。尚、これにより本発明が限定されるものではない。
【実施例１】
【００１２】
本実施例では、ストレージ装置への書き込みをサーバがストレージ装置に事前に通知し、その通知に従って、ストレージ装置がキャッシュメモリの空き領域を確保（以下「予約」とも言う）する。
図１は、本実施例における計算機システムのシステム構成例を示す図である。本実施例の計算機システムは、複数のサーバ２０００、複数のストレージ装置３０００並びに複数のサーバ２０００及び複数のストレージ装置とを相互に接続するスイッチ１０１０及びネットワーク１０００を有する。スイッチ１０１０は、サーバとストレージ装置間での記憶領域の仮想化を行うスイッチ装置でも構わない。ただし、仮想化を行うスイッチ等を用いる場合、サーバ２０００から送信されるメッセージ等はスイッチ１０１０で変換が行われるものとする。
【００１３】
尚、全ての実施例においてサーバ２０００、ストレージ装置３０００及びスイッチ１０１０の数は任意である。図１では各々の装置が２つある場合の構成例を示している。又、サーバ２０００とストレージ装置３０００との間はスイッチ１０１０以外のネットワーク機器で接続されていても良い。ネットワーク機器の具体例としては、ＬＡＮ、ルータ等がある。ネットワーク１０００の具体例としては、ファイバチャネル（以下「ＦＣ」とも言う）等の物理ケーブルがある。
【００１４】
尚、本実施例では、サーバ２０００は、データベースマネジメントシステム（以下「ＤＢＭＳ」とも言う）というプログラムを実行する（以下、ＤＢＭＳを実行するサーバ２０００を「ＤＢＭＳサーバ」と言う）。ここでＤＢＭＳとは、ストレージ装置３０００に格納されているデータベースの内容の更新、検索、テーブル作成、定義等、データベースを制御するためにサーバで実行されるプログラムである。ただし、ＤＢＭＳが実行されないサーバを有する計算機システムにおいても、本発明は実施可能である。
【００１５】
図２は、ＤＢＭＳサーバ２０００の構成例を示す図である。ＤＢＭＳサーバ２０００は、プロセッサ２００７、主記憶２０１０、ストレージ装置３０００を含めた他の装置と接続する為の１つ以上のインターフェース（以下「Ｉ／Ｆ」と言う）２００９及びＤＢＭＳサーバ２０００のプロセッサ２００７で実行される各種プログラムの実行結果を出力する出力装置２０８０を有する。これらの各装置は、内部バス等の通信路２００６を介して相互に接続される。尚、各構成部分の個数は任意である。
【００１６】
主記憶２０１０には、ＤＢＭＳ２００１、ＤＢＭＳサーバＩ／Ｆ管理テーブル２００４、ＤＢＭＳバッファ２００２、ＤＢＭＳバッファ書き込みプログラム２００３及び初期設定情報２００５が格納される。プロセッサ２００７は、主記憶２０１０に格納されるプログラムを読み出して実行する。尚、主記憶２０１０には、サーバプロセッサ２００７で実行される他のアプリケーションプログラムも格納される。
【００１７】
ＤＢＭＳサーバＩ／Ｆ管理テーブル２００４は、ＤＢＭＳサーバ２０００がＩ／Ｆ２００９を制御する際に使用するテーブルである。ＤＢＭＳバッファは、ＤＢＭＳ２００１が扱うデータが一時的に格納される記憶領域である。ＤＢＭＳバッファ書き込みプログラム２００３は、ＤＢＭＳサーバ２０００がＤＢＭＳバッファ２００２に格納されたデータを所定の条件に基づいてストレージ装置３０００へ送信する際やその送信処理の発生とキャッシュメモリの空き領域の確保要求をあらかじめストレージ装置３０００へ通知（以下「事前通知」とも言う）する際にプロセッサ２００７で実行されるプログラムである。初期設定情報２００５には、計算機システムの管理者によって設定されるＤＢＭＳサーバ２０００等の設定情報が登録される。
【００１８】
図３は、ストレージ装置３０００の構成例を示す図である。ストレージ装置３０００は、ストレージ装置３０００内の制御を行うコントローラ３０１０、記憶領域３００８、ＤＢＭＳサーバ２０００を含めた他の装置と接続されるＩ／Ｆ３００９及び１つ以上の物理ディスク装置３００３を有する。これらの装置は、コントローラ３０１０を介して相互に接続される。
【００１９】
記憶領域３００８は、不揮発性のメモリ装置である。記憶領域３００８は、キャッシュメモリ３００７として使用される領域と、その他の情報が格納される領域を有する。その他の情報が格納される領域には、ストレージＩ／Ｆ管理テーブル３００６、ストレージマネージャ３００２、キャッシュメモリ制御マネージャ３００１、管理テーブル３００５及び設定テーブル３００４が格納される。
【００２０】
ストレージＩ／Ｆ管理テーブル３００６は、コントローラ３０１０がＩ／Ｆ３００９を制御する際に使用するテーブルである。ストレージマネージャ３００２は、ストレージ装置３０００がＤＢＭＳサーバ２０００から事前通知を受信した場合に、コントローラ３０１０が実行するプログラムである。キャッシュメモリ制御マネージャ３００１は、コントローラ３０１０がキャッシュメモリ３００７へのデータの格納等を制御する際に実行するプログラムである。キャッシュメモリ制御マネージャ３００１は、コントローラ３０１０がキャッシュメモリ３００７に対して切り出し処理を実行する際にも実行される。
【００２１】
管理テーブル３００５には、キャッシュメモリ３００７の状態をコントローラ３０１０が把握するために必要となる情報（以下「管理情報」）が格納される。設定テーブル３００４には、キャッシュメモリ３００７やＤＢＭＳサーバ２０００の制御のためにコントローラ３０１０が用いる情報（以下「設定情報」）が格納されている。
【００２２】
キャッシュメモリ管理情報３０１１には、キャッシュメモリの使用状況を把握するための情報が格納されている。コントローラ３０１０は、キャッシュメモリの使用されている領域や使用されていない領域の把握をキャッシュメモリ管理情報３０１１で行っている。具体的には、コントローラ３０１０はリスト構造等によりキャッシュメモリの記憶領域を管理し、データの書き込みを行った場合には、そのリストへデータの追加等を行う。
【００２３】
尚、ストレージ装置３０００が有するデータＩ／Ｆ３００９及び物理ディスク装置３００３の個数は１つ以上であれば幾つであってもよい。
【００２４】
図２０は、管理端末１０３０の構成例を示す図である。管理端末１０３０は、ＤＢＭＳサーバ２０００の初期設定情報２００５及びストレージ装置３０００の設定テーブル３００４に格納される設定情報の設定を行う端末である。管理端末１０３０は、プロセッサ１０３１、主記憶１０３４、ＤＢＭＳサーバ２０００とストレージ装置３０００と接続を行うための１つ以上のＩ／Ｆ１０３３と管理者が操作を行う際に用いる出力装置１０３２を有する。これらの各装置は、内部バス等の通信路１０３５を介して相互に接続される。主記憶１０３４には、ＤＢＭＳサーバ２０００の初期設定情報２００５とストレージ装置３０００の設定テーブルの情報設定を行う際に管理端末１０３０が実行するプログラムである管理プログラム１０３６を有する。
【００２５】
尚、他の実施形態として、管理端末１０３０がＤＢＭＳサーバ２０００と同一の計算機であっても良い。この場合、上述した管理プログラム１０３６が、ＤＢＭＳサーバ２０００やストレージ装置３０００に組み込まれる。
【００２６】
図４は、上述した各種テーブルの構成例を示す図である。図４（ａ）は、ＤＢＭＳサーバＩ／Ｆ管理テーブル２００４の一例を示す図である。ＤＢＭＳサーバＩ／Ｆ管理テーブル２００４は、ＤＢＭＳサーバ２０００が使用するストレージ装置３０００の数分のレコードを有する。各レコードは、レコードに対応するストレージ装置３０００への接続Ｉ／Ｆ識別子、具体的には、ＤＢＭＳサーバに具備される接続Ｉ／ＦのポートＩＤの情報が登録されるＤＢ−Ｉ／Ｆ欄４００１及び欄４００１に登録された接続Ｉ／Ｆ識別子に与えられる名称の情報が登録される名前欄４００２を有する。
【００２７】
図４（ｂ）は、初期設定情報２００５の一構成例を示す図である。初期設定情報２００５は、ＤＢＭＳサーバ２０００からストレージ装置３０００へ転送されるデータの種類毎のレコードを有する。各レコードは、レコードに対応するデータの種類を示す情報が登録される。具体的には、各レコードは、書き出しデータの種類欄５００１、欄５００１に登録された種類のデータに適用されるＤＢＭＳサーバ２０００からストレージ装置３０００への、ＤＢバッファ２００２に格納されているデータの送信の条件についての情報が登録される書き出し条件欄５００２、欄５００１に登録された種類のデータがストレージ装置３０００へ送信される際にＤＢＭＳサーバ２０００がストレージ装置３０００に対して事前通知を送信するか否かの条件に関する情報が登録される事前通知設定条件欄５００３、送信されるデータを格納するストレージ装置３０００（ストレージ装置３０００が有する物理ディスク装置全体又は一部分）を示すＳＣＳＩターゲットデバイスに割り振られた識別番号（ここではＳＣＳＩ−ＩＤ）が登録されるＳＣＳＩ−ＩＤ欄５００４、送信されたデータを格納するファイルに対応する物理ディスク装置にアクセスするための識別番号（ＳＣＳＩ−ＬＵＮ）が登録されるＬＵＮ欄５００５及びストレージ装置を区別する接続Ｉ／Ｆ識別子（例えばＷｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ（ＷＷＮ））が登録される名前欄５００６を有する。
【００２８】
図４（ｂ）の具体的な例として、データの種類はＤＢデータやチェックポイント等、書き出し条件はＤＢＭＳバッファの２／３という閾値、事前通知設定条件は書き出し条件（例えば「ＤＢＭＳバッファの２／３」）の２／３という閾値が挙げられる。これら図４に示す情報は、管理者が、管理端末１０３０の管理プログラム１０３６を実行することで各装置の設定値（接続Ｉ／ＦのポートＩＤやＷＷＮ等）を各装置のＩ／Ｆ管理テーブルへ設定する。
【００２９】
図４（ｃ）は、ストレージＩ／Ｆ管理テーブル３００６の一構成例を示す図である。ストレージＩ／Ｆテーブル３００６は、ストレージ装置３０００に接続されるＤＢＭＳサーバ２０００（ＤＢＭＳの有無は問わない）ごとに、対応するレコードを有する。各レコードは、対応するＤＢＭＳサーバ２０００への接続Ｉ／Ｆ識別子、具体的にはストレージ装置に具備される接続Ｉ／ＦのポートＩＤが登録されるストレージ−Ｉ／Ｆ欄６００１、欄６００１に登録される接続Ｉ／Ｆ識別子に与えられる名称が登録される名前欄６００２及びストレージ装置３０００が有するＩ／Ｆ３００９と関連付けられているＳＣＳＩターゲットデバイスのＳＣＳＩ−ＩＤが登録されるＳＣＳＩ−ＩＤ欄６００３を有する。
【００３０】
図４（ｄ）は、管理テーブル３００５の一構成例を示す図である。管理テーブル３００５は、ストレージ装置３０００に接続されるＤＢＭＳサーバ２０００ごとに対応するレコードを有する。各レコードは、ストレージ装置３０００に接続されるＤＢＭＳサーバ２０００の識別子が登録される名前欄７００１、欄７００１に登録されたＤＢＭＳサーバ２０００で動作するＤＢＭＳ２００１の識別子が登録されるＤＢＭＳ−ＩＤ欄７００２、ＤＢＭＳ２００１の使用するデータベース（以下「ＤＢ」）が格納される物理ディスク装置３００３にアクセスするためのＳＣＳＩ−ＬＵＮが登録されるＬＵＮ欄７００３、レコードに対応するＤＢＭＳサーバ２０００からの事前通知に含まれる書き込みサイズの情報が登録されるキャッシュサイズ欄７００４、レコードに対応するＤＢＭＳサーバ２０００から事前通知によって確保されたキャッシュメモリ３００７領域の先頭アドレス、レコードに対応するＤＢＭＳサーバ２０００からの事前通知により確保されたキャッシュメモリ３００７を確保しておく時間（以下「有効時間」とも言う。これは管理者によって管理端末を介して初期値が設定される）が登録されるキャッシュ有効時間欄７００６及びレコードに対応するＤＢＭＳサーバ２０００から事前通知に基づいて確保されるキャッシュメモリ３００７の空き領域を作成する切り出し処理の状態が登録される確保状態欄７００７及びＤＢＭＳが書き出しを行うデータの種類を登録する書き出しデータ種類欄７００８を有する。
【００３１】
尚、キャッシュ有効時間欄７００６に登録される値は、レコードが登録された時点に初期値が登録される。そしてその値は時間経過とともに減少していき、最初に登録された値の時間が経過すると「０」となる。
【００３２】
図１９は、ＤＢＭＳサーバ２０００とストレージ装置３０００との間においてやりとりされるメッセージの一構成例を示した図である。図１９（ａ）は、メッセージのフォーマット例を示す図である。メッセージの送信先アドレス２３００１には、データの送信先を示すアドレス又は名前が、送信元アドレス２３００２には、データの送信元を示すアドレス又は名前が、オペレーションコード２３００３には、メッセージの内容を示すオペレーションコードが、データ２３００４には、実際にやり取りされるデータ（ＬＵＮ、サイズ、ＤＢＭＳ−ＩＤ、データ等）が挿入される。
【００３３】
図１９（ｂ）は、オペレーションコードの一例を示したものである。本テーブルに示される情報をもとにして、メッセージを送信する側と受信する側はメッセージの内容を区別する。図１９（ｂ）のオペレーションコードＲｅａｄはメッセージの内容が読み出しであることを示し、Ｗｒｉｔｅはメッセージの内容が書き込みであることを示し、Ｒｅｓｅｒｖｅ  Ｃａｃｈｅはメッセージ内容がキャッシュの事前確保要求であることを示している。
【００３４】
上述したように、本実施例では、サーバが事前通知を用いてストレージ装置にデータ書き込みの発生を予告し、その後書き込むデータ（以下「書き込みデータ」とも言う）をストレージ装置に送信する。以下、ＤＢＭＳサーバ２０００で行われる事前通知及び書き込みデータをストレージ装置３０００へ送信する処理の手順について説明する。尚、この処理は、ＤＢＭＳサーバ２０００のプロセッサ２００７が、ＤＢＭＳバッファ書き込みプログラム２００３を実行することによって行われる。
【００３５】
図５は、ＤＢＭＳサーバ２０００がストレージ装置３０００へ事前通知及び書き込みデータを送る際に行う処理の手順例を示すフローチャートである。ここでＤＢＭＳサーバ２０００は、ＤＢＭＳバッファ２００２の状態の監視、ストレージ装置３０００への事前通知、及びＤＢＭＳバッファ２００２の内容のストレージ装置３０００へ送信という３つの処理を行う。
【００３６】
まず、ＤＢＭＳサーバ２０００は、ＤＢＭＳバッファ２００２に書き込まれる、初期設定情報２００５の書き出しデータ種類欄５００１に登録されている種類のデータ（以下「監視対象データ」）のデータ量を監視する（ステップ８００１）。次にＤＢＭＳサーバは、ＤＢＭＳバッファ２００２に書き込まれた監視対象データのサイズと、初期設定テーブル２００５の書き出し条件欄５００２に登録されているデータサイズとの比較を行う（ステップ８００２）。
【００３７】
ステップ８００２において、初期設定情報２００５の書き出し条件欄５００２に登録されたサイズよりＤＢＭＳバッファに書き込まれた監視対象データのデータ量の方が大きいと判断した場合、ＤＢＭＳサーバ２０００は、ＤＢＭＳバッファ２００２内の監視対象データをストレージ装置３０００へ書き込む内容の書き込み要求を、ストレージ装置３０００へ送信する。この場合、ＤＢＭＳサーバ２０００は、書き込み対象となる監視対象データに対応するファイルが格納されているストレージ装置３０００を、初期設定テーブル２００５のＳＣＳＩ−ＩＤ欄５００４及びＬＵＮ欄５００５を参照して特定する（ステップ８００４）。
【００３８】
一方、ステップ８００２において初期設定情報２００５の書き出し条件欄５００２に登録されたサイズよりＤＢＭＳバッファに書き込まれた監視対象データのデータ量が小さいと判断した場合、ＤＢＭＳサーバ２０００は、ＤＢＭＳバッファにおける監視対象データのデータ量と初期設定情報２００５の事前通知設定条件欄５００３に登録されるデータ量との比較を行う（ステップ８００３）。
【００３９】
ステップ８００３で初期設定情報２００５の事前通知設定条件欄５００３に登録されるデータサイズよりＤＢＭＳバッファに格納された監視対象データのデータ量が大きいと判断した場合、ＤＢＭＳサーバ２０００は、事前通知をストレージ装置３０００へ送信する。この際、ＤＢＭＳサーバ２０００は、事前通知を送信するストレージ装置３０００を、書き込みデータの種類に基づいて初期設定テーブル２００５のＳＣＳＩ−ＩＤ欄５００４とＬＵＮ欄５００５を参照して決定する（ステップ８００５）。
【００４０】
一方、ステップ８００３で初期設定情報２００５の事前通知設定条件欄５００３に登録されるデータサイズよりＤＢＭＳバッファに格納された監視対象データのデータ量が小さいと判断した場合、ＤＢＭＳサーバ２０００は、ステップ８００１以降の処理を繰り返す。
【００４１】
ステップ８００４又はステップ８００５の処理後、ＤＢＭＳサーバ２０００は、ストレージ装置３０００から、事前通知に対する応答または書き込み要求に対する応答を受信する（ステップ８００６）。その後、ＤＢＭＳサーバ２０００は、ステップ８００１の処理に戻る。
【００４２】
書き込み要求又は事前通知を受け取ったストレージ装置３０００は、書き込み要求の場合にはキャッシュメモリ３００７へ書き込みデータを書き込む。一方、事前通知の場合には、ストレージ装置３０００は、所定の条件に基づいてキャッシュメモリ３００７の確保処理を行う。
【００４３】
図６は、書き込み要求又は事前通知を受け取ったストレージ装置３０００が行う処理手順例を示したフローチャートである。尚、本処理は、ストレージ装置３０００のコントローラ３０１０が、ストレージマネージャ３００２を実行することによって行う。
まずストレージ装置３０００は、I/F３００９を介して、ＤＢＭＳサーバ２０００から書き込み要求又は事前通知処理のメッセージを受信する（ステップ９００１）。
次にストレージ装置３０００は、受信したメッセージの内容が事前通知であるか書き込み要求であるかをメッセージ内のオペレーションコード２３００３を参照して判定する（ステップ９００２）。
【００４４】
ステップ９００２にて受信したメッセージが事前通知であると判断された場合、ストレージマネージャ３００２は、管理テーブル３００５にレコードを新たに追加し、受信したメッセージに含まれるＤＢＭＳサーバのＩ／Ｆ識別子（ＷＷＮ）とＤＢＭＳ−ＩＤと、ＤＢＭＳサーバがアクセスを行うＬＵＮと、ＤＢＭＳサーバが要求したキャッシュメモリの確保サイズと、ＤＢＭＳサーバが書き込みを行うデータの種類を示す情報を、新たに追加したレコードの名前欄７００１、ＤＢＭＳ−ＩＤ欄７００２、ＬＵＮ欄７００３、キャッシュサイズ欄７００４及び書き出しデータ種類欄７００８に登録する。この際、ストレージ装置３０００は、登録対象のレコードの確保状態欄７００７に「確保中」というステータスの登録を行う（ステップ９００３）。
【００４５】
次にストレージ装置３０００は、キャッシュメモリ３００７を確保する処理（以下「キャッシュメモリ確保処理」とも言う）を行う。尚、ストレージ装置３０００は、キャッシュメモリ確保処理を、コントローラ３０１０でキャッシュ制御マネージャ３００１を実行することで行う。キャッシュメモリ確保処理の詳細については後述する（ステップ９００４）。
キャッシュメモリ確保処理を終了したストレージ装置３０００は、確保したキャッシュメモリ３００７の空き領域の先頭アドレスとキャッシュメモリサイズの情報を、ステップ９００３で確保状態欄７００７に「確保中」という情報が登録されたレコードのキャッシュ先頭アドレス欄７００５とキャッシュサイズ欄７００４に登録する。更に、ストレージ装置３０００は、「確保中」という情報が登録された確保状態欄７００７を「確保済」という情報に更新する。又、ストレージ装置３０００は、新たに追加したレコードにおけるキャッシュ有効時間７００６に、初期値を設定する（ステップ９００５）。
その後、ストレージ装置３０００は、ＤＢＭＳサーバ２０００に対してキャッシュメモリ３００７の確保処理が完了したことを通知する（ステップ９００６）。
【００４６】
一方、ステップ９００２において受信したメッセージの内容が事前通知でないと判断した場合、ストレージ装置３０００は、ＤＢＭＳサーバ２０００から受信した書き込みデータが事前通知に対応する、すなわち、キャッシュメモリ確保処理で確保されたキャッシュメモリ３００７の空き領域に格納すべき書き込みデータであるかについて判定する。具体的には、ストレージ装置３０００は、受信したメッセージに含まれるＤＢＭＳサーバ２０００を示す名前、ＤＢＭＳ−ＩＤ及びＬＵＮと書き出しデータ種類の情報と、管理テーブル３００５に登録されている情報の比較を行う。
【００４７】
データが一致、すなわち、メッセージの内容が事前にキャッシュメモリ３００７に確保された空き領域への書き込みデータであると判断された場合、ストレージ装置３０００は、ステップ９００１で受信したメッセージに含まれるＤＢＭＳサーバ２０００の名前と書き出しデータ種類が一致する管理テーブル３００５のレコードのキャッシュ有効時間欄７００６の値が有効な値であるか確認を行う。本実施例では、無効な値はゼロ（０）とし、正の整数で表された値は有効な値とする。該当するレコードのキャッシュ有効時間欄７００６の値が無効の場合、ストレージ装置３０００は、該当するレコードのＤＢＭＳサーバ２０００の名前以外の情報を消去する（ステップ９００８）。
【００４８】
一方、該当するレコードのキャッシュ有効時間欄７００６の値が有効であると判断された場合、ストレージ装置３０００は、管理テーブル３００５の該当するレコードに登録されている情報（ＬＵＮ７００３、キャッシュサイズ７００４、キャッシュ先頭アドレス７００５）を用いて、受信した書き込み要求データをキャッシュメモリ３００７に書き込む（ステップ９００９）。
【００４９】
ステップ９００７にてキャッシュメモリ３００７が事前に確保されていない書き込み要求と判断された場合又はステップ９００８で事前に確保されたキャッシュメモリ３００７の空き領域の有効時間が無効と判断された場合、ストレージ装置３０００は、キャッシュメモリ３００７の空き領域の確保及び受信した書き込みデータのキャッシュメモリ３００７への書き込みを行う。書き込み終了後、ストレージ装置３０００は、書き込みの終了をＤＢＭＳサーバ２０００へ通知する（ステップ９０１０）。
【００５０】
図７は、図６のステップ９００４で実行されるキャッシュメモリ確保処理の詳細手順例を示すフローチャートである。
まずストレージ装置３０００は、ＤＢＭＳサーバ２０００から事前通知を受けた書き込みデータのサイズ分だけキャッシュメモリ３００７に空き領域が存在するかどうか確認を行う（ステップ１０００１）。
【００５１】
ステップ１０００１にて、書き込みデータ分のキャッシュメモリ３００７の空き領域が存在すると判断された場合、ストレージ装置３０００は、ストレージマネージャ３００２を実行して、ＤＢＭＳサーバ２０００から事前通知された書き込みデータのサイズ分のキャッシュメモリ３００７を確保する処理を実行する。具体的には、ストレージ装置３０００は、キャッシュメモリ管理情報で管理されている空き状態にあるキャッシュメモリを、事前通知で受けた書き込みデータのサイズ分確保（予約）する。この処理の実行により確保されたキャッシュメモリ３００７の空き領域は、図６のステップ９０１０でストレージ装置３０００が予約対象ではない書き込みデータをキャッシュメモリ３００７に書き込む際に、実際は空き領域だが、既にデータが格納されている状態であると判断される（ステップ１０００２）。
【００５２】
ステップ１０００１にて、書き込みデータ分のキャッシュメモリ３００７の空き領域が存在しないと判断された場合、ストレージ装置３０００は、キャッシュ制御マネージャ３００１を実行して、キャッシュメモリ３００７の利用領域の中から、最も使われていないデータが格納されているキャッシュメモリ３００７の領域を空き領域として切り出す処理を行う。ストレージ装置３０００は、管理テーブル３００５に既に登録されているキャッシュメモリ３００７に確保された領域「以下「予約領域」とも言う」以外のキャッシュメモリ３００７の領域（ただしデータが物理ディスク装置に反映されていない領域は対象としない）について、キャッシュメモリ管理情報３０１１で管理されているキャッシュメモリ３００７の中で、Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄアルゴリズム（ＬＲＵアルゴリズム）により最も使われていないキャッシュメモリ３００７領域を検索する。そして、ストレージ装置３０００は、検索されたキャッシュメモリ３００７の記憶領域の内、事前通知を受けた書き込みデータのサイズ分（既に一部が空き領域で充足されている場合には不足分）だけキャッシュメモリ３００７の領域を開放する（ステップ１０００３）。その後、ストレージ装置３０００は、ステップ１０００３で切り出したキャッシュメモリ３００７の空き領域に対して、キャッシュメモリ３００７の領域を確保する処理を行う。具体的には、ストレージ装置３０００は、キャッシュ制御マネージャ３００１を実行して、事前通知で受けた書き込みデータのサイズ分の確保を行う処理を行う。この処理の実行により、切り出されたキャッシュメモリ３００７の空き領域は、見かけ上既にデータが格納されている状態（予約された状態）になる（ステップ１０００４）。
【００５３】
その後、キャッシュ制御マネージャ３００１は、確保したキャッシュ領域の先頭アドレスとそのサイズをストレージマネージャに通知する（ステップ１０００５）。
【００５４】
ストレージ装置３０００は、上述した処理を行うことによって、ＤＢＭＳサーバ２０００からの指示に基づいてキャッシュメモリ３００７の空き領域を予約する。しかし、キャッシュメモリ３００７の空き領域がいつまでも予約されつづけていると、キャッシュメモリ３００７の記憶領域に無駄が生ずる。このため、本実施例では、ストレージ装置３０００は、キャッシュメモリ３００７を予約できる時間に制限を加え、ある一定期間経過した予約を解除する。
【００５５】
図８は、ストレージ装置３０００が、確保したキャッシュメモリ３００７の空き領域の予約の有効時間を監視し、有効時間が過ぎた領域について確保したキャッシュメモリ３００７の空き領域の予約の破棄を行う処理手順を示すフローチャートである。尚、ストレージ装置３０００は、本処理を所定のタイミング（一定期間ごと、キャッシュメモリ３００７の予約されていない空き領域の総量が所定の値を下回った場合等）又は常に行う。
【００５６】
まずストレージ装置３０００は、管理テーブル３００５内で管理されている、予約されたキャッシュメモリ３００７の空き領域が存在するか確認する。管理テーブル３００５に予約したキャッシュメモリ３００７の情報が登録されていない場合、ストレージ装置３０００は、ステップ１１００１の処理を繰り返す。ただし、ステップ１１００１の処理を繰り返すタイミングは、上述した所定のタイミングでも即時でも良い（ステップ１１００１）。
【００５７】
管理テーブル３００５に、予約したキャッシュメモリ３００７の情報が登録されている場合、ストレージ装置３０００は、予約されたキャッシュメモリ３００７に対応する管理テーブル３００５のレコードのキャッシュ有効時間欄７００６に登録される値が有効であるか確認を行う（ステップ１１００２）。
【００５８】
ステップ１１００２にて予約したキャッシュメモリ３００７の時間が無効である（ここでは０）と判断された場合、ストレージ装置３０００は、予約されたキャッシュメモリ３００７の空き領域をフリー化する。具体的には、キャッシュ制御マネージャ３００１が、キャッシュメモリ管理情報３０１１に登録されているキャッシュメモリ３００７の管理情報から、管理テーブル３００５に登録されているキャッシュ先頭アドレス１８００５からキャッシュサイズ１８００４分のキャッシュメモリ３００７領域の状態をフリー化（未使用の状態に）する。また、ストレージ装置３０００は、フリー化したキャッシュメモリ３００７の空き領域に対応する管理テーブル３００５のレコードのデータ内容を削除する（ステップ１１００３）。
【００５９】
ステップ１１００２にてキャッシュメモリ３００７の時間が有効であると判断された場合、管理テーブル３００５に次のレコードがあるか確認を行う。レコードがある場合、ステップ１１００２の処理へ戻り、レコードがない場合には処理を終了する（ステップ１１００４）。
【００６０】
本実施例では、ＤＢＭＳサーバ２０００が、書き込み要求を行うことを事前にストレージ装置３０００に通知する。そして、ストレージ装置３０００がキャッシュメモリ３００７の空き領域を事前に確保（予約）する。これにより、ストレージ装置３０００においてデータの書き込み要求の受信毎に行われていたキャッシュメモリ３００７の確保処理（切り出し処理を含む）をデータの書き込み処理の前に行うことが出来、ＤＢＭＳサーバ２０００の書き込み要求に対するストレージ装置３０００の応答時間が短縮する。
【００６１】
尚、本実施例において、有効時間に関する処理を省略、すなわち事前通知によって予約されたキャッシュメモリの空き領域が実際に使用されるまで予約されつづける構成としても良い。この場合、キャッシュメモリが予約されたサーバが要求するデータの書き込み処理は確実に短縮される。
【実施例２】
【００６２】
次に実施例２について説明する。
本実施例では、実施例１の構成に加え、ＤＢＭＳサーバ２０００が、ストレージ装置３０００の状態に応じて、ストレージ装置３０００に事前通知を行うタイミング等を変更する。
【００６３】
具体的には、複数のＤＢＭＳサーバ２０００の１つ又は複数のＤＢＭＳ２００１からストレージ装置３０００のキャッシュメモリ３００７を事前に予約を行うことで新たにキャッシュメモリ３００７の予約が行えなかった場合、予約が行えなかったＤＢＭＳサーバ２０００が、ＤＢＭＳ２００１から出される書き込み要求のデータサイズを抑え、ストレージ装置３０００の負荷やキャッシュメモリの状況を管理する。以降の説明では、実施例１との変更点のみ説明する。
【００６４】
図９は、設定テーブル３００４の一例を示す図である。設定テーブル３００４の内容は、管理者がネットワーク等を介して設定する。設定テーブル３００４には、ＤＢＭＳサーバ２０００が、ストレージ装置３０００の負荷やキャッシュメモリの状況に応じて、自身の書き込み要求や事前通知の発信タイミングや内容を変更する際に必要となる情報が登録される。
【００６５】
設定テーブル３００４は、ＤＢＭＳサーバ２０００からストレージ装置３０００へ転送されるデータの種類毎にレコードを有する。各レコードは、レコードに対応するＤＢＭＳサーバ２０００の識別子が登録される名前欄１２００１、レコードに対応するＤＢＭＳサーバ２０００内で動作するＤＢＭＳ２００１の識別子が登録されるＤＢＭＳ−ＩＤ欄１２００２、ＤＢＭＳ２００１がストレージ装置３０００に対して書き込むデータの種類が登録される書き出しデータ種類欄１２００３、ＤＢＭＳ２００１がストレージ装置３０００へデータを書き込む時の条件の変更値が登録される書き出し条件変更欄１２００４、ＤＢＭＳサーバ２０００がストレージ装置３０００に事前通知を出す時の閾値の変更値が登録される事前通知条件変更欄１２００５、書き込みデータの種類に対応するＳＣＳＩターゲットデバイスの識別番号が登録されるＳＣＳＩ−ＩＤ欄１２００６及び書き込みデータの種類に対応する物理ディスク装置３００３にアクセスするためのＳＣＳＩ−ＬＵＮが登録されるＬＵＮ欄１２００７を有する。
【００６６】
例えば、事前通知条件変更欄１２００５には、ＤＢＭＳ２００１が書き込みを行っていたデータサイズ（図４（ｂ）書き出し条件欄５００２）を下回る書き出し条件の３／４というようなデータサイズが指定される。
【００６７】
本実施例においては、ＤＢＭＳサーバ２０００から事前通知を受信したストレージ装置３０００は、事前にキャッシュメモリ３００７の空き領域の確保が出来なかった場合、ＤＢＭＳサーバ２０００に対して書き込み閾値と事前通知を行う閾値の変更を要請する。この際、ストレージ装置３０００は、設定テーブル３００４に登録された情報に基づいて、変更後の閾値の情報をＤＢＭＳサーバ２０００に送信する。尚、ＤＢＭＳサーバ２０００が設定テーブル３００４に登録される情報を有し、ストレージ装置３０００は閾値の変更の要請のみを行う構成も考えられる。
図１０は、本実施例における、ＤＢＭＳサーバ２０００から事前通知を受信したストレージ装置３０００の処理手順例を示すフローチャートである。
【００６８】
ＤＢＭＳサーバ２０００から事前通知を受信したストレージ装置３０００は、ＤＢＭＳサーバ２０００から通知を受けたサイズのキャッシュメモリ３００７の空き領域を確保することが出来るかどうか判断する。具体的には、ストレージ装置３０００は、ストレージマネージャ３００２を実行して、管理テーブル３００５においてＤＢＭＳサーバ２０００からの事前通知により確保したキャッシュメモリ３００７の領域情報と、キャッシュメモリ管理情報３０１１において管理されているキャッシュメモリ３００７の情報を参照し、キャッシュメモリ３００７が全て予約（あるいは使用中）されているのか判断を行う（ステップ１３００１）。
キャッシュメモリ３００７の空き領域を確保することが出来ると判断した場合、ストレージ装置３０００は、実施例１の図６に示す処理を行う（ステップ１３００２）。
【００６９】
一方、キャッシュメモリ３００７の空き領域を確保することが出来ないと判断した場合、ストレージ装置３０００は、事前通知を送信したＤＢＭＳサーバ２０００に対して、指定される書き込み閾値の変更値を、変更要求と共に送信する（ステップ１３００３）。
【００７０】
図１１に示すように、ストレージ装置３０００からＤＢＭＳバッファ２００２のデータ書き出し条件である閾値の変更要求を受信したＤＢＭＳサーバ２０００は、書き出しデータの種類に対する書き出し条件である閾値及び事前通知を行う条件である閾値を、変更要求に含まれるこれら閾値の変更値で更新する。
【００７１】
本実施例においては、複数のＤＢＭＳサーバ２０００が１つ又は複数のＤＢＭＳ２００１から事前通知をストレージ装置３０００に送信した時に、ストレージ装置３０００においてキャッシュメモリ３００７の空き領域の確保が行えなかった場合に、ストレージ装置３０００からＤＢＭＳサーバ２０００に対して、書き込みを行うデータサイズを抑える要求を行い、ＤＢＭＳ２００２において変更処理を実行する。このことで、ストレージ装置３０００の負荷が高い場合やキャッシュメモリの確保が行うことが出来ない場合に、ＤＢＭＳサーバ２０００側の書き込み処理を調節することが可能となる。
【実施例３】
【００７２】
次に、実施例３について説明する。本実施形態においては、ストレージ装置３０００が、ＤＢＭＳサーバ２０００のＤＢＭＳ２００２からストレージ装置３０００へ書き込まれるデータのうち、ＤＢＭＳ２００２における処理の履歴（以下「ログデータ」）の書き込みについて優先的にキャッシュメモリ３００７を予約する。尚、以降の説明では、実施例１との相違点のみ説明する。
【００７３】
図１２は、本実施例におけるＤＢＭＳサーバ２０００の構成例を示す図である。主記憶２０１０には、実施例１で説明したプログラム等に加え、新たにログ領域指定テーブル２１００、ログファイル作成プログラム２１０１及びログデータ書き込みプログラム２１０２が格納される。
【００７４】
図１３は、本実施例におけるストレージ装置３０００の構成例を示す図である。記憶領域３００８には、実施例１で説明したプログラム等に加え、新たにログ領域管理テーブル３１００が格納される。
【００７５】
図１４は、ログ領域指定テーブル２１００の一構成例を示す図である。ログ領域指定テーブル２１００は、ＤＢＭＳサーバ２０００が、ログデータのストレージ装置３０００における格納場所を管理する際に使用されるテーブルである。ログ領域指定テーブル２１００は、ＤＢＭＳサーバ２０００がストレージ装置３０００に格納するログデータの種類毎に対応するレコードを有する。各レコードは、レコードに対応するログデータの書き込みが行われるファイル名が登録されるログデータ格納ファイル名欄１７００１、対応するログデータが格納されるＳＣＳＩターゲットデバイスの識別番号が登録されるＳＣＳＩ−ＩＤ欄１７００２及び対応されるログデータが格納される物理ディスク装置３００３にアクセスするためのＳＣＳＩ−ＬＵＮが登録されるＬＵＮ欄１７００３を有する。
【００７６】
図１５は、ログ領域管理テーブル３１００の一構成例を示す図である。ログ領域管理テーブル３１００は、ストレージ装置３０００がログデータを格納するためのキャッシュメモリ３００７の空き領域を確保する際に使用される。ログ領域管理テーブル３１００は、ＤＢＭＳサーバ２０００からストレージ装置３０００へ転送されるログデータの種類毎にレコードを有する。
【００７７】
各レコードは、レコードに対応するＤＢＭＳサーバ２０００の識別子が登録される名前欄１８００１、対応するＤＢＭＳサーバ２０００で動作するＤＢＭＳ２００２の識別子が登録されるＤＢＭＳ−ＩＤ欄１８００２、レコードに対応するＤＢＭＳ２００２がログデータの格納用に使用する物理ディスク装置３００３のＳＣＳＩ−ＬＵＮが登録されるＬＵＮ欄１８００３、レコードに対応するＤＢＭＳ２００２より事前に通知されたログデータの書き込みサイズの値が登録されるキャッシュサイズ欄１８００４、レコードに対応するＤＢＭＳ２００２の書き込みデータをストレージ装置３０００のキャッシュメモリ３００７に格納する時の先頭アドレスが登録されるキャッシュ先頭アドレス欄１８００５、ログデータ書き込みに使用するストレージ装置３０００のキャッシュメモリ３００７の有効時間が登録される有効時間欄１８００６、キャッシュメモリ３００７に書き込まれたログデータを例えばストレージ装置のストライプサイズという単位で物理ディスク装置３００３へまとめ書きを行う時の書き込みサイズの閾値が登録されるまとめ書き閾値欄１８００７及びストレージ装置３０００のキャッシュメモリ３００７を確保する過程の状態が登録される確保状態欄１８００８、ログデータの書き込みが行われるファイル名が登録されるログデータ格納ファイル名欄１８００９及び確保したキャッシュメモリ３００７の領域にログデータが書き込まれたか否かを示すフラグ情報が登録される書き込みフラグ欄１８０１０を有する。
【００７８】
本実施例においては、ＤＢＭＳサーバ２０００は、ストレージ装置３０００に対して、ログデータを格納するための記憶領域（以下「ログ領域」）を指定する。この際、ストレージ装置３０００は、キャッシュメモリの空き領域をログデータ用のキャッシュメモリの空き領域としてキャッシュメモリの予約を行う。その後、実際にログデータの書き込みが有った場合には、ストレージ装置３０００は、あらかじめ確保されたキャッシュメモリの空き領域にログデータを書き込む。
【００７９】
図１６は、ＤＢＭＳ２００１がログ領域を初期設定で作成する時に、ＤＢＭＳサーバ２０００及びストレージ装置３０００が、ログ領域の情報をログ領域指定テーブル２１００及びログ領域管理テーブル３１００に登録する処理手順例を示すフローチャートである。本処理は、ＤＢＭＳサーバ２０００でのログ領域作成プログラム２１０１の実行及びストレージ装置３０００でのストレージマネージャ３００２の実行に基づいて行われる。
ＤＢＭＳサーバ２０００は、管理者等から受信した情報に基づいて、ストレージ装置３０００においてログデータを格納する場所を示すファイル名等の情報を決定する。その後、ＤＢＭＳサーバ２０００は、決定した情報、具体的にはファイル名、データを格納するＳＣＳＩターゲットデバイスの識別番号及びＳＣＳＩ−ＬＵＮをログ領域指定テーブル２１００に登録する（ステップ１９００１）。
【００８０】
次に、ＤＢＭＳサーバ２０００は、ストレージ装置３０００に対して、ステップ１９００１で登録した情報を通知する（ステップ１９００２）。
ストレージ装置３０００は、ＤＢＭＳサーバ２０００からログデータが書き込まれる領域についての情報を受信する（ステップ１９００３）。次に、ストレージ装置３０００は、受信したログデータが書き込まれる領域の情報を、ログ領域管理テーブル３１００のレコードに登録する。ここで、ストレージ装置３０００は、受信した情報から、通知を受信したＤＢＭＳサーバ２０００の名前、ＤＢＭＳ−ＩＤ、及びＬＵＮの情報を抽出してログ領域管理テーブル３１００に登録する。一方、ストレージ装置３０００は、まとめ書き閾値欄１８００７には、管理者が指定する値を登録する（ステップ１９００４）。
【００８１】
次に、ストレージ装置３０００は、ログ領域管理テーブル３１００に登録されるまとめ書き閾値欄１８００７に指定されるサイズの空き領域をキャッシュメモリ３００７に確保（予約）する。この場合行われる処理は、実施例１で説明したキャッシュメモリ確保処理（図７）と同じである。その後、ストレージ装置３０００は、予約したキャッシュメモリの空き領域の情報に基づいて、ログ領域管理テーブル３１００のキャッシュサイズ欄１８００４、キャッシュ先頭アドレス欄１８００５及び有効時間欄１８００６への情報の登録を行う。有効時間欄１８００６に登録される時間は、ストレージ装置３０００のキャッシュメモリ３００７の容量やまとめ書きを行うサイズ等の情報から管理者が見積もる時間を入力する（ステップ１９００５）。
【００８２】
本実施例においては、ＤＢＭＳサーバ２０００は、ログデータの書き込みの場合には、事前通知を行わない。なぜなら、ＤＢＭＳサーバ２０００があらかじめログ領域の情報をストレージ装置３０００に送信することが、事前通知の代わりになっているからである。そして、いったんログ領域の情報を受け取ったストレージ装置３０００は、常に事前通知を受信した状態で、一定量のキャッシュメモリ３００７の空き領域をログデータのために確保する。そして、ログデータの書き込み要求を受けたストレージ装置３０００は、既に確保されている空き領域にログデータを書き込む。
【００８３】
図１７は、本実施例において、ストレージ装置３０００がＤＢＭＳサーバ２０００からデータの書き込み要求を受信した時に行う処理の手順例を示したフローチャートである。
最初にストレージ装置３０００は、ＤＢＭＳサーバ２０００からデータの書き込み要求を受信する（ステップ２１００１）。次にストレージ装置３０００は、受信した書き込み要求がログデータの書き込み要求であるか判断する。具体的には、書き込み要求に含まれる書き込み領域を示す情報とログ領域管理テーブル３１００の名前欄１８００１、ＤＢＭＳ−ＩＤ欄１８００２及びＬＵＮ欄１８００３に登録される情報とが一致するかについて確認を行う（ステップ２１００２）。
【００８４】
受信した書き込み要求の対象となるデータがログデータでないと判断された場合、ストレージ装置３０００は、実施例１の図６で説明したデータ書き込み処理を実行する（ステップ２１００７）。
一方、ステップ２１００２にて受信した書き込み要求の対象となるデータがログデータであると判断された場合、ストレージ装置３０００は、ログ領域管理テーブル３１００に登録されている確保したキャッシュメモリ３００７へログデータの書き込みを行う。そして、ログ領域管理テーブル３１００の書きこみフラグ欄１８０１０のフラグが立っていない場合にはフラグを立てる処理（本実施例では、フラグが立っている状態が「１」とする。）を行う（ステップ２１００３）。
【００８５】
次にストレージ装置３０００は、キャッシュメモリ３００７内に書き込まれたログデータのデータサイズがログ領域管理テーブル３１００のまとめ書き閾値欄１８００７に登録されるデータサイズに達しているか確認を行う。まとめ書き閾値１８００７に達していない場合には、ストレージ装置３０００は、本処理を終了する（ステップ２１００４）。
【００８６】
ステップ２１００４にてキャッシュメモリ３００７に書き込まれたログデータのサイズが、まとめ書き閾値欄１８００７に指定されるデータサイズに達したと判断された場合、ストレージ装置３０００は、ログ領域管理テーブル３１００のキャッシュサイズ欄１８００４のサイズ分だけ新たにログデータを書き込むためのキャッシュメモリ３００７の空き領域を確保する。本処理は、実施例１で説明したキャッシュメモリ確保処理（図７）と同じである。また、ログ領域管理テーブル３１００に新たに確保したキャッシュメモリ３００７の情報（名前１８００１、ＤＢＭＳ−ＩＤ１８００２、ＬＵＮ１８００３、キャッシュサイズ１８００４、キャッシュ先頭アドレス１８００５、有効時間１８００６、まとめ書き閾値１８００７、確保状態１８００８、ログデータ格納ファイル名１８００９）を登録するレコードを追加する。ストレージ装置３０００は、ログデータが書き込まれているキャッシュメモリ３００７の管理を行うログ領域管理テーブル３１００の当該レコードの確保状態欄１８００８を、ディスクへ書き出し中という状態へ変更する（ステップ２１００６）。
【００８７】
次にストレージ装置３０００は、キャッシュメモリ３００７に格納されたログデータを物理ディスク装置３００３へ書き込む。書き込みが終了した後に、書きこみを行ったデータが格納されているキャッシュメモリ３００７が管理されているログ領域管理テーブル３１００の当該レコードを削除する（ステップ２１００５）。
次にステップ２１００５にて書きこみが行われたデータが格納されているキャッシュメモリ３００７の解放を行う。本処理は実施例１で説明したキャッシュメモリ３００７の町域のフリー化処理（図８ステップ１１００３）と同じである（ステップ２１０１０）。
【００８８】
本実施例では、ストレージ装置３０００は、ログデータのために常にキャッシュメモリ３００７の空き領域を確保している。しかし、キャッシュメモリ３００７の全ての記憶領域をログデータのために使うことはできないので、おのずとログデータのために確保される空き領域の量は制限される。この場合、いつまでもキャッシュメモリ３００７内にログデータを保持しておくと、他のログデータをキャッシュメモリ３００７に格納する際に、ストレージ装置３０００がキャッシュメモリ３００７の切り出し処理を行わざるを得ず、あらかじめキャッシュメモリ３００７の空き領域を確保した効果が低減されてしまう。
【００８９】
そこで、本実施例では、キャッシュメモリ３００７に格納されてから所定時間（格納有効時間）が経過したログデータについては、ストレージ装置３０００が強制的に物理ディスク３００３に格納する処理を行うことで、常に所定量のキャッシュメモリ３００７の空き領域をログデータの為に確保する。また、本実施例では、ログデータの書きこみを行うキャッシュメモリ３００７領域がまとめ書き閾値１８００７に達した時点で、次のログデータを格納するためのキャッシュメモリ３００７を確保するが、まとめ書き閾値１８００７に達する前にキャッシュメモリ３００７の確保を行うという実施形態も考えられる。
【００９０】
図１８は、ストレージ装置３０００が、ログデータが書き込まれたキャッシュメモリ３００７の格納有効時間を監視し、格納有効時間が過ぎた領域についてキャッシュメモリ３００７内のデータを物理ディスク装置３００３へ書き込みを行う処理手順例について示したフローチャートである。ストレージ装置３０００は、本処理を一定期間ごとや所定のタイミング（ログデータ用として確保されているキャッシュメモリの空き領域の容量が閾値以下になった場合等）で行う。
【００９１】
まずストレージ装置３０００は、ログデータが書き込まれているキャッシュメモリ３００７領域が存在するかを、ログ領域管理テーブル３１００の書き込みフラグ欄１８０１０を用いて確認する。ログデータが書き込まれているキャッシュメモリ３００７の情報がログ領域管理テーブル３１００に登録されていない場合には、ストレージ装置３０００は、ステップ２２００１の処理を繰り返す（ステップ２２００１）。
【００９２】
ログ領域管理テーブル３１００にログデータが書き込まれているキャッシュメモリ３００７の情報が登録されていると判断された場合、ストレージ装置３０００は、ログ領域管理テーブル３１００の有効時間欄１８００６に登録される値が有効時間内であるか確認を行う（ステップ２２００２）。
【００９３】
ステップ２２００２にてログデータが書き込まれているキャッシュメモリ３００７の時間が有効時間ではないと判断された場合、ストレージ装置３０００は、キャッシュメモリ３００７内のログデータを物理ディスク装置３００３へ書き込む。その後、書き込み処理を行ったログデータが格納されていたキャッシュメモリ３００７の領域を管理している情報をログ領域管理テーブル３１００から削除する（ステップ２２００３）。
次にストレージ装置３０００は、新たにログデータ書き込みを行うキャッシュメモリ３００７の確保処理を実施例１記載の処理手順で実行する（ステップ２２００４）。
【００９４】
本実施例においては、ＤＢＭＳサーバ２０００から書き込みが行われるログデータについて、事前に書き込まれる領域をストレージ装置３０００に通知することにより、ストレージ装置３０００のキャッシュメモリ３００７上のログデータを効率のよい単位で物理ディスク装置３００３へ書き込みを行うことが可能となる。
【図面の簡単な説明】
【００９５】
【図１】計算機システムの構成例を示す図である。
【図２】サーバの構成例を示す図である。
【図３】ストレージ装置の構成例を示す図である。
【図４】各種テーブルの構成例を示す図である。
【図５】事前通知する処理及びＤＢＭＳバッファの内容をストレージ装置へ書き込む処理の一例を示すフローチャートである。
【図６】ストレージ装置の書き込み実行処理及びキャッシュメモリの事前確保を行う処理の一例を示すフローチャートである。
【図７】キャッシュメモリ確保処理の一例を示すフローチャートである。
【図８】ストレージ装置が、確保したキャッシュメモリの有効時間を監視する処理の一例を示すフローチャートである。
【図９】設定テーブルの一例を示す図である。
【図１０】ストレージ装置が事前にキャッシュメモリの確保が出来なかった場合に、ＤＢＭＳサーバに対して書き込み閾値と事前通知を行う閾値の変更処理を要請する処理の一例を示すフローチャートである。
【図１１】ＤＢＭＳサーバの、書き出し閾値の変更処理の一例を示すフローチャートである。
【図１２】ＤＢＭＳサーバの構成例を示す図である。
【図１３】ストレージ装置の構成例を示す図である。
【図１４】ログ領域指定テーブルの一例を示す図である。
【図１５】ログ領域管理テーブルの一例を示す図である。
【図１６】ＤＢＭＳサーバのログ領域の作成及びストレージ装置のログ領域管理テーブルへの情報登録を行う処理の一例を示すフローチャートである。
【図１７】ストレージ装置におけるログデータの書き込み処理の手順例を示すフローチャートである。
【図１８】ストレージ装置のログデータの物理ディスク装置への書き込み処理の一例を示すフローチャートである。
【図１９】ＤＢＭＳサーバとストレージ装置間で用いられるメッセージフォーマットの一例を示す図である。
【図２０】管理端末の構成例を示す図である。
【符号の説明】
【００９６】
２０００…ＤＢＭＳサーバ装置、３０００…ストレージ装置、２００１…ＤＢＭＳ、２００３…ＤＢＭＳバッファ書き込みプログラム、３００１…キャッシュ制御マネージャ、３００２…ストレージマネージャ、２１０１…ログファイル作成プログラム、２１０２…ログデータ書き込みプログラム。
【図１】
2006119786.tif 000003
【図２】
2006119786.tif 000004
【図３】
2006119786.tif 000005
【図４】
2006119786.tif 000006
【図５】
2006119786.tif 000007
【図６】
2006119786.tif 000008
【図７】
2006119786.tif 000009
【図８】
2006119786.tif 000010
【図９】
2006119786.tif 000011
【図１０】
2006119786.tif 000012
【図１１】
2006119786.tif 000013
【図１２】
2006119786.tif 000014
【図１３】
2006119786.tif 000015
【図１４】
2006119786.tif 000016
【図１５】
2006119786.tif 000017
【図１６】
2006119786.tif 000018
【図１７】
2006119786.tif 000019
【図１８】
2006119786.tif 000020
【図１９】
2006119786.tif 000021
【図２０】
2006119786.tif 000022