(57)【要約】【課題】プログラムが生成したデータをディスクに記憶する際に、ＣＰＵ処理の負荷を低減するデータ記憶システムを実現する。【解決手段】特定データの書き込み先であるデータ記憶領域１２０のメモリアドレスを決定し、データ記憶領域内において前記特定データを書き込むアドレス順を決定し、ディスク書き込み制御手段１３３がデータ記憶領域１２０内のデータをプログラムがデータを書き込むアドレス順と同じ順番で読み出し、読み出したデータをディスクドライブ１１１へ書き込む。ＣＰＵ１０１からのデータ書き込み、および、データ転送制御部１３０のデータ読み出しの際に、バッファ状態記憶領域１２５を更新することで、データの欠落及び重複を防ぐ。【選択図】図１
2008225543.tif 000002
【特許請求の範囲】
【請求項１】
複数のバッファを有し、データの保存先であるデータ記憶領域と、前記バッファの状態を記憶するバッファ状態記憶領域と、を備えたメモリと、
前記データ記憶領域と前記複数のバッファと前記バッファ状態記憶領域とのメモリアドレスを決定するメモリアドレス決定手段と、前記データ記憶領域内において前記データを保存するアドレス順を決定するメモリアクセス順決定手段と、前記メモリアクセス順決定手段が決定した順番に従って前記バッファ状態記憶領域のバッファ状態を取得し、バッファの状態がデータを書き込める状態でなければデータの書き込みを保留し、バッファの状態がデータを書き込める状態であればデータを書き込み、前記バッファ状態記憶領域のバッファ状態を更新するデータ書き込み手段として機能させるプログラムにより動作するプロセッサと、
前記データ記憶領域内のデータの転送先となるディスクドライブと、
前記メモリ上の前記データ記憶領域と前記バッファと前記バッファ状態記憶領域とのアドレスを前記プログラムから取得し、記憶する手段と、
前記データ記憶領域内のデータを前記プログラムがデータを書き込むアドレス順に従って前記バッファ状態記憶領域のバッファ状態を取得し、バッファの状態がデータを読み出せる状態でなければ処理を保留し、バッファの状態がデータを読み出せる状態であれば、バッファ単位でデータを読み出し、読み出したデータを前記ディスクドライブへ書き込み、バッファ状態を更新するディスク書き込み制御手段と、
を有することを特徴とするデータ記憶システム。
【請求項２】
前記プロセッサは複数の前記プログラムにより動作し、
前記複数のプログラム内の各メモリアドレス決定手段は、前記メモリのデータ記憶領域内にそれぞれのプログラム用のデータ記憶領域を作成し、割り当てた該プログラム用のデータ記憶領域をバッファ割当記憶領域に登録し、
前記データ書き込み手段は、所属するプログラム用に割り当てられた前記プログラム用のデータ記憶領域のみにアクセスし、
前記ディスク書き込み制御手段は、指定されたプログラム用に割り当てられた前記プログラム用のデータ記憶領域のみにアクセスすることを特徴とする請求項１記載のデータ記憶システム。
【請求項３】
複数のバッファを有し、データの保存先であるデータ記憶領域と、前記バッファの状態を記憶するバッファ状態記憶領域と、を備えたメモリと、
前記データ記憶領域と前記複数のバッファと前記バッファ状態記憶領域とのメモリアドレスを決定するメモリアドレス決定手段と、前記データ記憶領域内において前記データを保存するアドレス順を決定するメモリアクセス順決定手段と、前記メモリアクセス順決定手段が決定した順番に従って前記バッファ状態記憶領域のバッファ状態を取得し、バッファの状態がデータを読み出せる状態でなければデータの読み出しを保留し、バッファの状態がデータを読み出せる状態であればデータを読み出し、前記バッファ状態記憶領域のバッファ状態を更新するデータ読み出し手段として機能させるプログラムにより動作するプロセッサと、
前記データ記憶領域内のデータの転送元となるディスクドライブと、
前記メモリ上の前記データ記憶領域と前記バッファと前記バッファ状態記憶領域とのアドレスを前記プログラムから取得し、記憶する手段と、
前記データ記憶領域内のデータを前記プログラムがデータを書き込むアドレス順に従って前記バッファ状態記憶領域のバッファ状態を取得し、バッファの状態がデータを書き込める状態でなければ処理を保留し、バッファの状態がデータを書き込める状態であれば、前記ディスクドライブからデータを読み出し、読み出したデータを前記メモリ上の前記データ記憶領域へ書き込み、バッファ状態を更新するディスク読み出し制御手段と、
を有することを特徴とするデータ記憶システム。
【請求項４】
前記ディスクドライブは前記データ記憶領域内のデータの転送元となり、
前記プログラムは、前記メモリアクセス順決定手段が決定した順番に従って前記バッファ状態記憶領域のバッファ状態を取得し、バッファの状態がデータを読み出せる状態でなければデータの読み出しを保留し、バッファの状態がデータを読み出せる状態であればデータを読み出し、前記バッファ状態記憶領域のバッファ状態を更新するデータ読み出し手段として、前記プロセッサを機能させ、
前記データ記憶領域内のデータを前記プログラムがデータを書き込むアドレス順に従って前記バッファ状態記憶領域のバッファ状態を取得し、バッファの状態がデータを書き込める状態でなければ処理を保留し、バッファの状態がデータを書き込める状態であれば、前記ディスクドライブからデータを読み出し、読み出したデータを前記メモリ上の前記データ記憶領域へ書き込み、バッファ状態を更新するディスク読み出し制御手段を有することを特徴とする請求項１記載のデータ記憶システム。
【請求項５】
前記プロセッサは複数の前記プログラムにより動作し、
前記複数のプログラム内の各メモリアドレス決定手段は、前記メモリのデータ記憶領域内にそれぞれのプログラム用のデータ記憶領域を作成し、割り当てた該プログラム用のデータ記憶領域をバッファ割当記憶領域に登録し、
前記データ読み出し手段は、所属するプログラム用に割り当てられた前記プログラム用のデータ記憶領域のみにアクセスし、
前記ディスク読み出し制御手段は、指定されたプログラム用に割り当てられた前記プログラム用のデータ記憶領域のみにアクセスすることを特徴とする請求項３または４記載のデータ記憶システム。
【請求項６】
前記メモリと前記ディスクドライブ間で転送したデータを一時的に記憶する転送データ記憶手段と、
前記メモリから読み出したデータが前記記憶されたデータと異なる場合に、前記ディスクドライブへのデータ書き込み時はディスク書き込み制御手段へ、前記ディスクドライブからのデータ読み出し時はディスク読み出し制御手段へ、データ転送を指示するデータ重複フィルタ手段と、
を有することを特徴とする請求項４に記載のデータ記憶システム。
【請求項７】
前記データ記憶領域へのデータ転送の完了を確認する時間間隔を記憶し、転送完了の確認の際に既に転送が完了している際には、次回の確認までの待ち時間を短くし、まだ転送が完了していない場合は、次回の確認までの待ち時間を長くするようにメモリアクセス間隔を制御する転送間隔制御手段を有することを特徴とする請求項１から５のいずれかに記載のデータ記憶システム。
【請求項８】
前記メモリと前記プロセッサとはバスで接続され、該バス上のコマンドをモニタし、コマンドの内容が前記プロセッサから前記データ記憶領域へのデータ書き込み要求であり、かつ新たなアドレスへの書き込み要求であった場合に、メモリ読み出しを行うコマンドモニタ手段を有することを特徴とする請求項１から５いずれかに記載のデータ記憶システム。
【請求項９】
複数の前記ディスクドライブを有し、
前記複数のディスクドライブからデータの転送先ディスクドライブをデータの内容に応じて選択するデータ転送先選択手段を有することを特徴とする請求項１から８のいずれかに記載のデータ記憶システム。
【請求項１０】
請求項１から９のいずれかに記載のデータ記憶システムを構成する第１のコンピュータと、
前記第１のコンピュータのデータを分析する第２のコンピュータと、
前記第１のコンピュータのデータを記憶するディスクドライブとを備え、
前記第１及び第２のコンピュータと前記ディスクドライブにそれぞれ設けられ、バス上のコマンドを外部ネットワークのプロトコルにカプセル化するバスプロトコル転送部と、
前記第１のコンピュータのプロセッサ又は前記第２のコンピュータのプロセッサから、データ転送先のディスクドライブにアクセスするプロセッサを決定するパーティション制御手段と
を備えたことを特徴とする請求項１から９のいずれかに記載のデータ記憶システム。
【請求項１１】
プロセッサとメモリとデータ転送制御部とディスクドライブとがバスで接続され、前記メモリが、複数のバッファを有し且つデータの保存先であるデータ記憶領域と、前記バッファの状態を記憶するバッファ状態記憶領域と、を備えてなるデータ記憶システムのデータ記憶方法において、
前記プロセッサ上で動作するプログラムが、
前記データ記憶領域と前記複数のバッファと前記バッファ状態記憶領域とのメモリアドレスを決定し、
前記データ記憶領域内において前記データを書き込むアドレス順を決定し、決定したアドレス順に従って前記バッファ状態記憶領域のバッファ状態を取得し、バッファの状態がデータを書き込める状態でなければデータの書き込みを保留し、バッファの状態がデータを書き込める状態であればデータを書き込み、バッファ状態を更新するデータ書き込み、
前記データ転送制御部が、
前記メモリ上の前記データ記憶領域と前記バッファと前記バッファ状態記憶領域のアドレスを前記プログラムから取得し、記憶し、
前記データ記憶領域内のデータを前記プログラムがデータを書き込むアドレス順に従って前記バッファ状態記憶領域のバッファ状態を取得し、バッファの状態がデータを読み出せる状態でなければ処理を保留し、バッファの状態がデータを読み出せる状態であれば、バッファ単位でデータを読み出し、読み出したデータを前記ディスクドライブへ書き込み、バッファ状態を更新することを特徴とするデータ記憶方法。
【請求項１２】
プロセッサとメモリとデータ転送制御部とディスクドライブとがバスで接続され、前記メモリが、複数のバッファを有し且つデータの保存先であるデータ記憶領域と、前記バッファの状態を記憶するバッファ状態記憶領域と、を備えてなるデータ記憶システムのデータ記憶方法において、
前記プロセッサ上で動作するプログラムが、
前記データ記憶領域と前記複数のバッファと前記バッファ状態記憶領域とのメモリアドレスを決定し、
前記データ記憶領域内において前記データを保存するアドレス順を決定し、
決定したアドレス順に従って前記バッファ状態記憶領域のバッファ状態を取得し、バッファの状態がデータを読み出せる状態でなければデータの読み出しを保留し、バッファの状態がデータを読み出せる状態であればデータを読み出し、バッファ状態を更新するデータ読み出し、
前記データ転送制御部が、
読み出すデータのディスク上のアドレスと、前記メモリ上のデータ記憶領域とバッファとバッファ状態記憶領域のアドレスとを前記プログラムから取得し、記憶し、
前記データ記憶領域内のデータを前記プログラムがデータを書き込むアドレス順に従って前記バッファ状態記憶領域のバッファ状態を取得し、
バッファの状態がデータを書き込める状態でなければ処理を保留し、バッファの状態がデータを書き込める状態であれば、ディスクからデータを読み出し、読み出したデータをメモリ上の前記データ記憶領域へ書き込み、バッファ状態を更新することを特徴とするデータ記憶方法。
【請求項１３】
前記メモリと前記ディスクドライブ間で転送したデータを前記データ転送制御部に記憶し、
データを前記ディスクドライブへ書き込む処理の場合は、前記メモリから取得したデータが前記データ転送制御部に記憶されたデータと異なる場合にデータ転送を行うことを特徴とする請求項１１または１２記載のデータ記憶方法。
【請求項１４】
前記データ転送制御部は、前記データ記憶領域へのデータ転送完了を確認する時間間隔を記憶し、転送完了の確認の際に既に転送が完了している際には、次回の確認までの待ち時間を短くし、まだ転送が完了していない場合は、次回の確認までの待ち時間を長くするようにメモリへのアクセス間隔を制御することを特徴とする請求項１１または１２に記載のデータ記憶方法。
【請求項１５】
前記メモリと前記プロセッサとはバスで接続され、前記データ転送制御部は、該バス上のコマンドをモニタし、コマンドの内容が前記プロセッサから前記データ記憶領域へのデータ書き込み要求であり、かつ新たなアドレスへの書き込み要求であった場合に、メモリ読み出しを行うことを特徴とする請求項１１または１２記載のデータ記憶方法。
【請求項１６】
複数の前記ディスクドライブを有し、
前記データ転送制御部は、前記複数のディスクドライブからデータの転送先ディスクドライブをデータの内容に応じて選択することを特徴とする請求項１１から１５のいずれかに記載のデータ記憶方法。
【請求項１７】
バスプロトコル転送手段を介して、請求項１１から１６のいずれかに記載のデータ記憶方法に用いられるデータ記憶システムとなる管理対象コンピュータと、リモートディスクとが接続されるデータ記憶システムのデータ記憶方法において、
前記リモートディスクにアクセスするプロセッサを前記管理対象コンピュータ内のプロセッサとするようにパーティション制御を行い、
前記管理対象コンピュータ内のデータ転送制御部がデータ転送先ディスクをリモートディスクに設定し、
前記リモートディスクへのデータ転送コマンドを前記管理対象コンピュータの外部ネットワークのプロトコルにカプセル化し、
前記管理対象コンピュータから転送されたデータを前記リモートディスクに書き込むことを特徴とする請求項１１から１６のいずれかに記載のデータ記憶方法。
【請求項１８】
前記リモートディスクへデータが記憶された後に、
前記リモートディスクにアクセスするプロセッサをリモート管理コンピュータ内のプロセッサとするようにパーティション制御を行い、
前記リモートディスク内のデータを前記リモート管理コンピュータ内のプロセッサが読み出すことを特徴とする請求項１７記載のデータ記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ記憶システム、及びデータ記憶方法に関し、特にＣＰＵの負荷を削減できるデータ記憶システム、及びデータ記憶方法に関する。
【背景技術】
【０００２】
従来のログデータ記憶システムの例を図１７に示す。図１７に示すように、この従来のログデータ記憶システムは、ＣＰＵ９０１と、メモリ９０２と、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ（ＤＭＡＣ）９２０と、ディスクシステム９１０とから構成されている。それぞれのデバイスは、バス９０５を介して互いにデータを送受信することができる。
【０００３】
ＣＰＵ９０１では、アプリケーションプログラムが動作する。また、ログデータを生成するログ生成プログラムも動作する。ログ生成プログラムは、アプリケーションプログラムの動作状態や、ＯＳの動作状態をログデータとして出力する。ログデータを生成する機能が、アプリケーションプログラムやＯＳ何に含まれる場合と、異なるプログラムで実現される場合がある。
【０００４】
メモリ９０２は、ＣＰＵ９０１上のログ生成プログラムが発生するデータをディスクシステム９１０に書き込むまで一時的に保存する。
【０００５】
ディスクシステム９１０は、ディスクドライブ９１１と、ディスクキャッシュ９１２とで構成される。
【０００６】
ディスクドライブ９１１は、データを記憶する装置である。一般的にディスクドライブは、磁気ディスクを利用するため、データの書き込み及び読み出しは、メモリ９０２と比較すると低速である。
【０００７】
ディスクキャッシュ９１２は、ディスクドライブ９１１へデータを書き込む際に、メモリ９０２からのデータを一時的に保存する。ディスクキャッシュ９１２は、一般的には、データの書き込み及び読み込みがディスクドライブと比較して高速な半導体メモリが利用される。ディスクキャッシュ９１２に高速な半導体メモリを利用することによって、大量のデータをメモリからディスクへ書き込む際に高速なディスクキャッシュへ一時的に書き込み、その後低速なディスクドライブへの書き込みを実施することにより、メモリからディスクへのデータ書き込み処理を高速化することができる。
ＤＭＡコントローラ９２０は、ＤＭＡ開始手段９２１と、アドレスカウント手段９２２と、ディスク書き込み制御手段９２３と、完了割り込み通知手段９２４で構成される。
【０００８】
ＤＭＡ開始手段９２１は、ＣＰＵ９０１からＤＭＡ転送要求を受信し、転送対象となるメモリアドレスをアドレスカウント手段９２２へ設定する。アドレスカウント手段９２２は、メモリからディスクシステムへデータを転送するごとに、データの読み出し元となるメモリのアドレスを更新し、ディスク書き込み制御手段９２３へ通知する。ディスク書き込み制御手段９２３は、メモリカウント手段９２２から指定されるメモリアドレスのデータを読み出し、ディスクキャッシュ９１２へデータを書き込む。完了割り込み通知手段９２４は、ＣＰＵ９０１からＤＭＡ転送要求で要求された全データの転送を完了すると、ＣＰＵ９０１へ完了を伝える割り込みを通知する。
【０００９】
上記のような構成を有する従来のログデータ記憶システムの動作シーケンスを図１８、１９に示す。図１８は、ＣＰＵ９０１の動作シーケンスであり、図１９は、ＤＭＡコントローラ９２０の動作シーケンスである。
【００１０】
図１８を参照して、ＣＰＵ９０１の動作について説明する。
【００１１】
ステップＳ９０１において、ＣＰＵ９０１がメモリ９０２にログデータを書き込む。
一般的にメモリ９０２の空き容量は、ＣＰＵ９０１上で動作しているＯＳが管理している。このため、メモリ９０２上に空き容量が少なくなると、ＣＰＵ９０１上のＯＳが、メモリ９０２上のデータをディスクシステム９１０へ書き出すためのＤＭＡ転送要求をＤＭＡコントローラ９２０へ発行する。
【００１２】
ステップ９０２において、ＣＰＵ９０２は転送するデータのメモリアドレス及びデータサイズを設定する。ステップＳ９０３において、ＣＰＵ９０１は、転送先のディスクアドレスを設定する。その後、ステップＳ９０４において、ＣＰＵ９０１はＤＭＡ転送要求をＤＭＡコントローラ９２０へ通知する。ＤＭＡ転送要求では、転送対象となるメモリアドレス及びデータサイズを通知する。
【００１３】
ＤＭＡコントローラ９２０は、ＤＭＡ転送要求を受信すると、ＤＭＡ転送要求で指定されたアドレスのデータをメモリ９０２から読み取り、ディスクキャッシュ９１２に書き込む。この動作については、後で、ＤＭＡコントローラの動作フローとして、図１９を参照して説明する。
【００１４】
ＤＭＡ転送要求により要求されたすべてのデータの転送が終了すると、ＣＰＵ９０１は、ＤＭＡ転送完了割込みを、ステップＳ９０５で受信する。ＤＭＡ転送完了割込みを受けると、メモリ９０２を管理するＯＳがメモリの空き状態を更新する。
【００１５】
次に、図１９を参照してＤＭＡコントローラ９２０の動作フローを説明する。
【００１６】
ＤＭＡコントローラ９２０は、ＣＰＵ９０１からＤＭＡ転送要求を受信すると、ＤＭＡ開始手段９２１が、転送対象となるメモリアドレスをアドレスカウント手段９２２へ設定する（ステップＳ９２１）。アドレスカウント手段９２２は、ステップＳ９２２において、データ転送ごとに転送対象となるメモリアドレスをインクリメントし、このメモリアドレスをディスク書き込み制御手段９２３へ設定する。
【００１７】
次に、ディスク書き込み制御手段９２３が、アドレスカウント手段９２２に設定されたメモリアドレスからデータを読み出し（ステップＳ９２３）、読み出したデータをディスクキャッシュ９１２へ書き込む（ステップＳ９２４）。ディスクキャッシュ９１２へ書き込まれたデータは、ディスクドライブ９１１へ書き込まれる。メモリ９０２とディスクシステム９１０間のデータ転送で一度に転送できるデータ量は、バスやＯＳにより決められている。このため、ＤＭＡ転送要求のデータ量がこの制限されたデータ量より大きい場合は、要求されたデータ量の転送が終了するまで、上記転送動作を繰り返す（ステップＳ９２５）。
【００１８】
以上で説明したように、従来のログデータ記憶システムでは、ＤＭＡを利用することによって、ＣＰＵはメモリからディスクシステムへのデータ転送に関する処理を行わないため、ログデータをディスクシステムへ記憶する際のＣＰＵ負荷を下げることができる。
また、従来のログデータ管理システムでは、リモートの管理用コンピュータへログデータを転送する場合は、ログデータをＴＣＰ／ＩＰプロトコルを利用して、データの収集を行う。
【００１９】
本発明に関連する技術を開示するものとして、例えば、特許文献１、特許文献２、特許文献３がある。
【特許文献１】特開２００５−１６５４３９号公報
【特許文献２】特開２００５−１６５６１９号公報
【特許文献３】特開２００５−３１６７００号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
第１の問題点は、ログデータの収集量が増大すると、ＣＰＵ負荷が増大するということである。
【００２１】
その理由は、ディスクデバイスドライバの呼び出しと、ＤＭＡ転送完了の割り込みの処理をＤＭＡ転送のたびにＣＰＵが実施するためである。  
【００２２】
第２の問題点は、管理対象コンピュータと異なるリモートの管理用コンピュータにログデータを転送する際に、転送処理のＣＰＵ負荷が増大するということである。
【００２３】
その理由は、コンピュータ間の転送処理のためのＴＣＰ／ＩＰプロトコルの処理負荷が増大するためである。
【００２４】
［発明の目的］
本発明の目的は、ＣＰＵ負荷を低減することができるデータ記憶システムを提供することにある。  
【００２５】
本発明の他の目的は、ディスクドライブへ記憶するデータの重複および欠落を防ぐことにある。
【課題を解決するための手段】
【００２６】
本発明の第１のデータ記憶システムは、複数のバッファを有し、データの保存先であるデータ記憶領域と、前記バッファの状態を記憶するバッファ状態記憶領域と、を備えたメモリと、
前記データ記憶領域と前記複数のバッファと前記バッファ状態記憶領域とのメモリアドレスを決定するメモリアドレス決定手段と、前記データ記憶領域内において前記データを保存するアドレス順を決定するメモリアクセス順決定手段と、前記メモリアクセス順決定手段が決定した順番に従って前記バッファ状態記憶領域のバッファ状態を取得し、バッファの状態がデータを書き込める状態でなければデータの書き込みを保留し、バッファの状態がデータを書き込める状態であればデータを書き込み、前記バッファ状態記憶領域のバッファ状態を更新するデータ書き込み手段として機能させるプログラムにより動作するプロセッサと、
前記データ記憶領域内のデータの転送先となるディスクドライブと、
前記メモリ上の前記データ記憶領域と前記バッファと前記バッファ状態記憶領域とのアドレスを前記プログラムから取得し、記憶する手段と、
前記データ記憶領域内のデータを前記プログラムがデータを書き込むアドレス順に従って前記バッファ状態記憶領域のバッファ状態を取得し、バッファの状態がデータを読み出せる状態でなければ処理を保留し、バッファの状態がデータを読み出せる状態であれば、バッファ単位でデータを読み出し、読み出したデータを前記ディスクドライブへ書き込み、バッファ状態を更新するディスク書き込み制御手段と、
を有することを特徴とする。
本発明の第２のデータ記憶システムは、複数のバッファを有し、データの保存先であるデータ記憶領域と、前記バッファの状態を記憶するバッファ状態記憶領域と、を備えたメモリと、
前記データ記憶領域と前記複数のバッファと前記バッファ状態記憶領域とのメモリアドレスを決定するメモリアドレス決定手段と、前記データ記憶領域内において前記データを保存するアドレス順を決定するメモリアクセス順決定手段と、前記メモリアクセス順決定手段が決定した順番に従って前記バッファ状態記憶領域のバッファ状態を取得し、バッファの状態がデータを読み出せる状態でなければデータの読み出しを保留し、バッファの状態がデータを読み出せる状態であればデータを読み出し、前記バッファ状態記憶領域のバッファ状態を更新するデータ読み出し手段として機能させるプログラムにより動作するプロセッサと、
前記データ記憶領域内のデータの転送元となるディスクドライブと、
前記メモリ上の前記データ記憶領域と前記バッファと前記バッファ状態記憶領域とのアドレスを前記プログラムから取得し、記憶する手段と、
前記データ記憶領域内のデータを前記プログラムがデータを書き込むアドレス順に従って前記バッファ状態記憶領域のバッファ状態を取得し、バッファの状態がデータを書き込める状態でなければ処理を保留し、バッファの状態がデータを書き込める状態であれば、前記ディスクドライブからデータを読み出し、読み出したデータを前記メモリ上の前記データ記憶領域へ書き込み、バッファ状態を更新するディスク読み出し制御手段と、
を有することを特徴とする。
【００２７】
このような構成を有し、プロセッサとデータ転送制御部で予めメモリへデータを書き込む領域のアドレスを共有し、バッファが書き込み可能または読み出し可能であることを確認することにより、プロセッサ負荷の低減及び記憶するデータの重複及び欠落を防ぐという本発明の目的を達成することができる。
【００２８】
本発明の第３のデータ記憶システムは、第１の発明において、バッファ状態記憶領域からバッファ状態を確認する前に、メモリからディスクドライブへ転送したデータを記憶し、前記メモリから読み出したデータが前記記憶されたデータと異なる場合にデータ転送をディスク書き込み制御手段へ指示することを特徴とする。このような構成を有することにより、メモリアクセスの回数を低減しＣＰＵ負荷を低減することができる。
【００２９】
本発明の第４のデータ記憶システムは、第１又は第２の発明において、前記データ記憶領域内のバッファ単位でのデータ書き込みの完了を確認する時間間隔を記憶し、書き込み完了の確認の際に既に書き込みが完了している際には、次回の確認までの待ち時間を短くし、まだ書き込みが完了していない場合は、次回の確認までの待ち時間を長くするようにメモリ読み出し間隔を制御する転送間隔制御手段を有することを特徴とする。このような構成を有し、メモリへアクセスする時間間隔を制御することにより、メモリアクセスの回数を低減しＣＰＵ負荷を低減することができる。
【００３０】
本発明の第５のデータ記憶システムは、第１又は２の発明において、バス上のコマンドをモニタし、コマンドの内容が前記ＣＰＵから前記データ記憶領域へのデータ書き込み要求であり、かつ新たなバッファへの書き込み要求であった場合に、メモリ読み出しを行うコマンドモニタ手段を有することを特徴とする。このような構成を有し、メモリへアクセスする時間間隔を制御することにより、メモリアクセスの回数を低減しＣＰＵ負荷を低減することができる。
【００３１】
本発明の第６のデータ記憶システムは、第１から第５の発明において、複数のディスクドライブを有し、データの転送先ディスクドライブをデータの内容に応じて選択するデータ転送先選択手段を有することを特徴とする。このような構成を有し、複数のディスクへデータを分散して記憶することで、ディスクへの書き込み速度を向上させデータの欠落を防ぐことができる。
【００３２】
本発明の第７のデータ記憶システムは、第６の発明において、バス上のコマンドをコンピュータの外部ネットワークのプロトコルにカプセル化するバスプロトコル転送部と、バスに接続したディスクドライブを制御可能なＣＰＵを決定するパーティション制御手段とバスプロトコル転送部で接続されたリモートディスクドライブを転送先に指定する前記データ転送先選択手段とを備えたことを特徴とする。このような構成を有し、データをバスプロトコルのままカプセル化してリモートディスクへ転送することで、ＴＣＰ／ＩＰ処理を削減し、ＣＰＵ負荷を低減することができる。
【発明の効果】
【００３３】
第１の効果は、メモリからディスクへデータを転送する際のＣＰＵ負荷を低減できることにある。
【００３４】
その理由は、プロセッサとデータ転送制御部で予めメモリへデータを書き込む領域のアドレスを共有することにより、データ転送のたびにメモリアドレスを通知する処理を省略できるためである。
【００３５】
また他の理由は、データ読み出しのために、ディスク書き込み制御手段がメモリへアクセスするタイミングを制御するためである。
【００３６】
第２の効果は、ディスクドライブへ記憶するデータの重複を防ぐことにある。
【００３７】
その理由は、メモリから読み出したデータを一時記憶し、この記憶されたデータと異なるデータのみを転送するためである。
【発明を実施するための最良の形態】
【００３８】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００３９】
以下に説明する各実施形態においては、ＣＰＵはデータ書き込み手段とデータ読み出し手段とを備え、データ転送制御部はディスク書き込み制御手段とディスク読み出し制御手段と有するものとした説明する。しかし、ＣＰＵがデータ書き込み手段がなく、データ転送制御部がディスク書き込み制御手段がないデータ記憶システム、ＣＰＵがデータ読み出し手段がなく、データ転送制御部がディスク読み出し制御手段がないデータ記憶システムも本発明に含まれるものとする。
【００４０】
［第１の実施形態］
図１に示すように、本実施形態のログデータ記憶システムは、ＣＰＵ１０１と、メモリ１０２と、データ転送制御部１３０と、ディスクシステム１１０とから構成されている。ＣＰＵ（プロセッサとなる）１０１、メモリ１０２、データ転送制御部１３０、ディスクシステム１１０は、バス１０５を介して互いにデータを送受信することができる。
【００４１】
ＣＰＵ１０１とディスクシステム１１０とは、図１７に示した従来のＣＰＵ９０１とディスクシステム９１０とそれぞれ同じ機能を有するため、ここでの説明は省略する。
【００４２】
メモリ１０２は、データ記憶領域１２０とバッファ状態記憶領域１２５とバッファ割当記憶領域１２６とを有する。データ記憶領域１２０は、複数のバッファに分割されている。このデータ記憶領域１２０に、ＣＰＵ１０１からログデータが書き込まれ、この領域内のデータがデータ転送制御部１３０により、ディスクシステム１１０へ転送される。
【００４３】
データ記憶領域１２０を、複数のバッファに分割することで、バッファごとにデータを転送する際に、一つのバッファ内のデータを転送中に、他のバッファに対してログデータを書き込むことができる。このため、メモリ１０２からディスクシステム１１０へデータ転送中であっても、メモリ１０２へのログデータの書き込みを継続することができる。それぞれのバッファのサイズは同じでも、異なっていてもよい。
【００４４】
このメモリ１０２への書き込み速度は、一般的に、ディスクシステム１１０への書き込み速度より高速である。このため、メモリ１０２への書き込みデータ量が過剰に多いと、メモリ１０２からディスクシステム１１０へのデータ転送が追いつかずにメモリが溢れ、ログデータが欠落することが考えられる。これを防ぐ方法の１つとして、複数のディスクドライブで構成し、メモリからのデータ転送を複数のディスクドライブで並行処理する方法がある。
【００４５】
データ記憶領域１２０は、図１に示すようにプログラムがディスクシステムにデータを書き込む処理と、プログラムがディスクシステムからデータを読み込む処理との両方が混在する場合は、それぞれ書き込み領域と読み出し領域とを作成する。また、図１のプログラム２００ａ、プログラムｂ、プログラムｍのように、ログデータを生成もしくはディスクシステムから読み出すプログラムが複数存在する場合は、プログラムごとに読み出し領域（プログラム用のデータ記憶領域となる）を作成する。また、プログラムごとに、書き込みと読み出しが混在する場合は、プログラムごとに書き込み領域と読み出し領域と（プログラム用のデータ記憶領域となる）を作成し、それぞれの領域内においてリングバッファを構成する。それぞれのプログラムに割り当てられた領域は、割り当てられたプログラムに関するプログラムおよびデータ転送制御部からの処理のみにアクセスを許すようにする。
【００４６】
これら領域の区切りとなるアドレスまたはサイズの情報は、メモリ上のバッファ割当記憶領域１２６に記憶される。この情報を、データ転送制御部１３０のメモリアドレス記憶手段１３２に記憶することで、データ転送制御部１３０はメモリをアクセスする領域を特定することができる。
【００４７】
バッファ状態記憶領域１２５は、各バッファのデータの状態を記憶する。バッファの状態としては、「書き込み可能」、「書き込み中」、「読み出し可能」、「読み出し中」がある。
【００４８】
プログラムがディスクにデータを書き込む領域においては、「書き込み可能」はプログラムがメモリにデータを書き込み可能であることを、「書き込み中」はプログラムがメモリにデータを書き込み中であることを、「読み出し可能」はデータ転送制御部がメモリからデータを読み出し可能であることを、「読み出し中」はデータ転送制御部がメモリからデータを読み出し中であることを表す。「書き込み可能」と「書き込み中」の場合は、データ転送制御部はメモリからデータを読み出すことも、メモリへデータを書き込むこともできない。「読み出し可能」と「読み出し中」の場合は、プログラムはメモリからデータを読み出すことも、メモリへデータを書き込むこともできない。
【００４９】
プログラムがディスクからデータを読み出す領域においては、「書き込み可能」はデータ転送制御部がメモリにデータを書き込み可能であることを、「書き込み中」はデータ転送制御部がメモリにデータを書き込み中であることを、「読み出し可能」はプログラムがメモリからデータを読み出し可能であることを、「読み出し中」はプログラムがメモリからデータを読み出し中であることを表す。「書き込み可能」と「書き込み中」の場合は、プログラムはメモリからデータを読み出すことも、メモリへデータを書き込むこともできない。「読み出し可能」と「読み出し中」の場合は、データ転送制御部はメモリからデータを読み出すことも、メモリへデータを書き込むこともできない。
【００５０】
図２に示すように、データ記憶領域１２５は、各バッファの状態を記憶している。図２の例は、プログラム１（プログラム２００ａ）の書き込み領域の状態を示している。ここでは、データ記憶領域１２０のプログラム１の書き込み領域はＮ個のバッファからなっており、図２において、データ記憶領域１２５はＮ個のバッファの状態を示している。
【００５１】
バッファ１が書き込み可能、バッファ２が読み出し中、バッファ３、４が読み出し可能、バッファ５が書き込み中、バッファ６からバッファＮが書き込み可能である。この状態は、ＣＰＵ上のプログラム及びデータ転送制御部１３０により更新される。このように各バッファの状態を利用して、書き込みと読み出しの順番が逆転しないように制御を行う。
【００５２】
それぞれログデータの生成を行うプログラム２００ａから２００ｍは、ＣＰＵ１０１上で動作する。プログラム２００ａから２００ｍのそれぞれは、メモリアドレス決定手段２０１、メモリアクセス順決定手段２０２、データ書き込み手段２０３、データ読み出し手段２０４を有する。
【００５３】
メモリアドレス決定手段２０１は、メモリ１０２上のデータ記憶領域１２０、バッファ、バッファ状態記憶領域１２５のアドレスを決定する。また、メモリアドレス決定手段２０１は、この決定したアドレス情報をデータ転送制御部１３０へ通知する。
【００５４】
メモリアクセス順決定手段２０２は、データ記憶領域１２０内において、ログデータを書き込む順番を決定する。アクセス順の例としては、メモリアドレスに対して連続的な順番、データの重要度に応じた順番がある。また、メモリアクセス順手段２０２は、この決定したアクセス順をデータ転送制御部１３０へ通知する。
【００５５】
データ書き込み手段２０３は、ログデータをメモリ１０２へ書き込む処理を行う。この書き込み処理はディスクシステムへの書き込みを要求する。しかし、ディスクシステムへの書き込み完了を待たず、メモリ１０２上へデータの書き込みが完了すると、書き込み処理関数の完了処理として、正常終了の戻り値を返して正常終了する。メモリ１０２からディスクシステム１１０への書き込みはデータ転送制御部１３０が実行するため、プログラムから見ると、メモリ１０２へデータを保存した時点で関数を終了することができる。プログラムがメモリ１０２へデータを書き込む領域は、メモリアドレス決定手段２０１が決定した領域とし、書き込む順番はメモリアクセス順決定手段２０２が決定した順とする。
【００５６】
データ読み出し手段２０４は、ログデータをメモリ１０２から読み出す処理を行う。この読み出し処理は、メモリ１０２からのデータの読み出しが完了すると、読み出し処理関数の完了処理を行う。データを読み出す領域は、メモリアドレス決定手段２０１が決定した領域とし、読み出す順番はメモリアクセス順決定手段２０２が決定した順とする。
【００５７】
データ転送制御部１３０は、メモリ１０２からディスクシステム１１０へのデータ転送を制御する。データ転送制御部１３０は、メモリアドレス取得手段１３１と、メモリアドレス記憶手段１３２と、ディスク書き込み制御手段１３３と、ディスク読み出し制御手段１３６とから構成される。
メモリアドレス取得手段１３１は、ＣＰＵ１０１からデータ記憶領域１２０及びバッファのアドレスとメモリアクセスの順番を取得し、メモリアドレス記憶手段１３２に登録する。
【００５８】
メモリアドレス記憶手段１３２は、データ記憶領域１２０及びバッファのアドレスとメモリアクセスの順番を記憶する。記憶されたアドレス情報は、ディスク書き込み制御手段１３３によるデータ転送のタイミング決定に利用される。
【００５９】
ディスク書き込み制御手段１３３は、メモリ１０２からディスクシステム１１０へのデータ転送を制御する。より具体的には、データ記憶領域１２０から、バッファ単位でデータを読み出し、読み出したデータをディスクシステム１１０内のディスクキャッシュ１１２へ書き込む。
【００６０】
ディスク読み出し制御手段１３６は、メモリ１０２からディスクシステム１１０へのデータ転送を制御する。
次に、図３から図６のフローチャートを参照して、本実施の形態の全体動作について説明する。本発明では、ログデータをディスクシステムへの書き込む動作とログデータをディスクシステムから読み出す２種類の動作がある。まず、図３、図４を参照して、ディスクシステムへの書き込み動作を説明する。その後、ディスクからの読み出し動作を説明する。
【００６１】
図３は、本実施の形態におけるＣＰＵ１０１の動作を示すフローチャートである。図４は、本実施の形態におけるデータ転送制御部１３０の動作を示すフローチャートである。
【００６２】
本実施の形態では、図１に示した複数の装置が互いに連携して動作する。同時に複数の装置が処理を行っているため、それぞれの動作を個別のフローチャートを参照して説明する。フローチャートは個別に示すが、他装置への動作開始の契機の通知や、他装置からのデータ書き込み状態を参照することによって、本実施形態は互いの装置が連携して動作して効果を達成するものである。
【００６３】
はじめに、図３を参照して、ＣＰＵ１０１の動作を説明する。
【００６４】
はじめに、ステップＳ５０１、Ｓ５０２で初期化作業を行う。ステップＳ５０１において、ＣＰＵ１０１が、データ転送制御部１３０に対して、データ記憶領域１２０と各バッファのアドレスを通知する。バッファについては、アドレスでなくとも、各バッファ間の境界を決定できる情報であればよく、例えばデータ記憶領域１２０の開始アドレスと各バッファ容量でもよい。なお、本説明においては、図１に示すようにデータ記憶領域１２０は、Ｎ個のバッファに分割され、それぞれにＩＤ＝１〜Ｎが割り当てられているとする。また、メモリにアクセスする順番を決定する。これら決定したメモリに関する情報は、データ転送制御部１３０に通知する。
【００６５】
ステップＳ５０２において、バッファ状態記憶領域１２５の初期化を行う。最初にアクセスを開始するバッファ（図３の例では、ＩＤ＝１）を書き込み中とし、他のバッファ状態を書き込み可能に設定する。
【００６６】
ステップＳ５０１、Ｓ５０２での初期設定が終了すると、ステップＳ５０３以降でデータを転送する。ステップＳ５０３において、アクセス順に従い、バッファの状態を確認する。ステップＳ５０４において、状態が書き込み可能であれば、ステップＳ５０７において、状態を書き込み中へ更新する。その後、ステップＳ５０８へ移行する。ステップＳ５０４で読み出し中または読み出し可能であった場合は、ステップＳ５０５において、データをプログラム内のキャッシュに一時保存する。その後、ある時間が経過した後に、再度バッファ状態を確認する（ステップＳ５０３へ戻る）。このような処理により、メモリからディスクへ転送が終了していないデータに新たなデータを上書きすることを防ぐことができる。また、ステップＳ５０５において、メモリ１０２上にデータ記憶領域を新たに割り当てて、この拡張領域に一時的にデータを保存することもできる。
【００６７】
バッファの状態がステップＳ５０４において、書き込み中であった場合は、ステップＳ５０８でバッファサイズに十分な空きがあるか確認する。十分な空きがある場合は、ステップＳ５０９において、ログデータをメモリへ書き込む。空き容量が無い場合は、ステップＳ５１１において、現在アクセスしているバッファの状態を読み出し可能へ更新する。ステップＳ５１２において、アクセス順に基づく次のバッファの状態を確認する。次のバッファの状態が書き込み可能である場合は、次のバッファの状態を書き込み中に更新する（ステップＳ５１４）。そしてステップＳ５０９へ移行する。次バッファの状態が書き込み可能でない場合は、ある時間経過後に再度バッファ状態を確認する（ステップＳ５０３へ戻る）。このようなログデータのメモリへの記憶をログ収集が終了するまで継続する（ステップＳ５１０）。
【００６８】
次に図４を参照して、データ転送制御部１３０の動作を説明する。
【００６９】
ステップＳ５３１において、メモリアドレス取得手段１３１が、ＣＰＵ１０１からデータ記憶領域１２０とバッファのアドレスとメモリへのアクセス順序を取得する。このアドレス情報を、メモリアドレス記憶手段１３２に登録する。
【００７０】
ステップＳ５３２において、ディスク書き込み制御手段１３３は、メモリ１０２からディスクシステム１１０へ転送するデータのアドレスをメモリアドレス記憶手段１３２から取得する。
【００７１】
またステップＳ５３２において、メモリアクセス記憶手段１３２に記憶された、メモリアクセス順決定手段２０２が決定したメモリのアクセス順に従い、次のアクセス対象となるバッファの状態をバッファ状態記憶領域１２５から取得する。
【００７２】
ステップＳ５３３において、バッファ状態が読み出し可能であるか判断する。読み出し可能でない場合は、ある時間が経過した後に再度バッファの状態を確認する（ステップＳ５３２へ戻る）。バッファ状態が読み出し可能である場合は、ステップＳ５３４において、バッファ状態を読み出し中に更新する。
【００７３】
次にステップＳ５３５において、メモリ１０２のデータ記憶領域１２０の該当バッファからデータを読み出す。ステップＳ５３６において、データをディスクシステム１１０のディスクキャッシュ１１２へデータを書き込む。ステップＳ５３５、Ｓ５３６によるデータ転送は、一回の転送データサイズがバス帯域等で制限されている場合は複数回に分けてデータを転送することもできる。データ転送が完了すると、ステップＳ５３７において、バッファ状態を書き込み可能に更新する。このようなメモリからディスクへのデータの転送をログ収集が終了するまで継続する（ステップＳ５３８）。
【００７４】
このように、メモリ１２０がデータを書き込む領域とメモリへの書き込み順を固定することで、ＣＰＵ１０１とデータ転送制御部１３０でＣＰＵがデータを書き込んだメモリアドレスを共有でき、ＣＰＵ１０１がデータを書き込んだアドレスを通知するＤＭＡ転送要求を省略することができる。
【００７５】
また、データ記憶領域１２０の空き容量の管理は、バッファ状態記憶領域１２５で行っているため、従来ではメモリの空き状況管理で必要であったＤＭＡ転送完了通知を省略することができる。
【００７６】
また、バッファ状態記憶領域１２５でバッファ状態を記憶し、この状態をデータの書き込み主体であるＣＰＵと、データの読み出し主体であるデータ転送制御部が共有することによって、ＣＰＵからメモリへデータを書き込む際にまだディスクへの転送が完了していないデータへの上書きと、メモリからディスクへ転送するデータが重複することを避けることができる。
【００７７】
次に図５、図６を参照して、ディスクに保存したログデータを読み出す動作手順を説明する。
【００７８】
図５は、ディスク読み出し時のＣＰＵ１０１の動作を示すフローチャートである。図６は、ディスク読み出し時のデータ転送制御部１３０の動作を示すフローチャートである。基本的な動作はこれまでに説明したディスクへ書き込み処理の逆の動作となる。
【００７９】
図５を参照してディスク読み出し時のＣＰＵ１０１の動作を説明する。
【００８０】
はじめに、ステップＳ６３１、Ｓ６３２において、初期化を行う。この動作は、図３でのステップＳ５０１、Ｓ５０２と同じ処理である。この初期化処理では、プログラムが読み出すログデータを指定し、データ転送制御部１３０へ通知する。読み出すログデータの指定は、ファイル名や、ディスク内のアドレスを指定することで実現できる。続いて実行するステップＳ６３３からＳ６３８は、図４のステップＳ５３２からＳ５３８と基本は同じである。異なる点は、ステップＳ５３５のメモリからデータを読み出しと、ステップＳ５３６のディスクシステムのディスクキャッシュへのデータの書き込みが、ステップＳ６３６のメモリからのデータ読み出しに変更されている点である。
【００８１】
図６を参照して、ディスク読み出し時のデータ転送制御部１３０の動作を説明する。
【００８２】
はじめに、ステップＳ６０１において、初期化を行う。この動作は、図４でのステップＳ５３１と同じ処理である。続いて実行するステップＳ６０３からステップＳ６１５は、図３のステップＳ５０３からステップＳ５１４と基本は同じである。異なる点は、ステップＳ６０８とステップＳ６０９の間に、ステップＳ６１５として、ログデータのディスクからの読み出しを追加したことである。
【００８３】
［第２の実施形態］
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。図７に示すように、本発明の第２の実施の形態は、図１に示す第１の実施の形態に加えて、データ転送制御部１９０に転送データ記憶手段１３５とデータ重複フィルタ手段１３４を有する。
【００８４】
データ重複フィルタ手段１３４は、メモリ１０２から読み出したデータが既に過去に転送済みではないか判断し、既に転送済みの場合は、ディスク書き込み制御手段１３３にディスクシステム１１０への書き込みを行わせない。過去に転送済みであるかは、ログデータの場合は、タイムスタンプを参照して判断することができる。
【００８５】
転送データ記憶手段１３５は、転送したデータをある期間記憶する。転送データ記憶手段１３５に記憶されているデータを基に、データ重複フィルタ手段１３４が、メモリ１０２から読み出したデータの重複を判断する。
【００８６】
次に、図８を参照して本発明の第２の実施の形態の動作を説明する。図８は第２の実施の形態におけるデータ転送制御部１９０の動作を示すフローチャートである。ＣＰＵの動作は既に説明した図３での動作と同じであるので、ここでの説明は省略する。
【００８７】
ステップＳ１２１において、メモリアドレス取得手段１３１が、ＣＰＵ１０１からデータ記憶領域１２０とバッファのアドレス、およびメモリアクセスの順序を取得する。これらアドレス情報を、メモリアドレス記憶手段１３２に登録する。
【００８８】
ステップＳ１２２において、メモリアドレス記憶手段１３２に登録されているメモリアクセス順序に従い、読み出すバッファのメモリアドレスを指定する。
【００８９】
ステップＳ１２３において、ディスク書き込み制御手段１３３は、メモリアドレス記憶手段１３２で指定されたアドレスからメモリ１０２のデータを読み出す。ＣＰＵ１０１からメモリへの書き出し順とディスク書き込み制御手段１３３がメモリからデータを読み出す順は、ＣＰＵと転送制御部１３３で順序を共有していればよい。
【００９０】
ステップＳ１２４において、データ重複フィルタ手段１３４が、メモリから読み出したデータが新規データであるか判断する。この判断は、転送データ記憶手段１３５に記憶してあるデータと一致しない場合は、データは新規であると判断する。新規ではなく、既に転送済みと判断された場合は、時間をおいて再度同じメモリアドレスからデータを読み出す。
【００９１】
ステップＳ１２４において、データ記憶領域１２０から読み出したデータが新規と判断された場合は、このデータをディスクキャッシュ１１２へ書き込む（ステップＳ１２５）。転送したデータは、ステップＳ１２６において、転送データ記憶手段１３５に記憶される。この転送データ記憶手段１３５に記憶されたデータを消去するタイミングとしては、データ記憶領域１２０のデータサイズ転送後、一定時間経過後、データ転送回数やデータ転送サイズが閾値を超えたタイミングがある。
【００９２】
その後、ステップＳ１２７において、バッファ状態を書き込み可能へ更新する。
【００９３】
上記処理をログ収集が終了するまで継続する（ステップＳ１２８）。
【００９４】
このように、データの重複をデータ転送制御部１９０が確認することで、メモリからデータを読み出す前に、データ転送制御部１９０がバッファ状態記憶領域１２５へアクセスする処理を省略することができる。このため、データ転送のレイテンシ(latency)を抑えることができる。
【００９５】
［第３の実施形態］
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。
【００９６】
図９は、本発明の第３の実施の形態の構成を示すブロック図である。図９に示す本発明の第３の実施の形態は、図１のデータ転送制御部と比べて、データ転送制御部１４０に転送間隔制御手段１４１を有する点が異なる。
【００９７】
転送間隔制御手段１４１以外の装置は第１の実施の形態と同じであるため、ここでの説明は省略する。
【００９８】
転送間隔制御手段１４１は、ディスク書き込み制御手段１３３に対して、メモリ１０２からディスクシステム１１０へのデータ転送開始のトリガを通知する。第１の実施の形態では、ディスク書き込み制御手段１３３が自立的にメモリをアクセスしていたが、本第３の実施形態は転送間隔制御手段１４１からのトリガでアクセスする点が異なる。このトリガを通知する時間間隔は、ディスク書き込み制御手段１３３がデータ記憶領域１２０内のバッファにデータ読み込みアクセスをした際に、対象バッファがＣＰＵ１０１からデータ書き込み中であった場合は、次回のトリガ発生までの時間間隔を長くする。反対に、ディスク書き込み制御手段１３３がデータ記憶領域１２０内のバッファにデータ読み込みアクセスをした際に、対象バッファがＣＰＵ１０１からのデータ書き込みが終了していた場合は、次回のトリガ発生までの時間間隔を短くする。このように、データ記憶領域１２０へのデータ読み込みタイミングを制御することで、データ記憶領域１２０からディスクシステム１１０への転送間隔が長くなることによるデータ記憶領域１２０の容量溢れと、転送要求間隔が短くなることで、まだ書き込み中のバッファに対して何度も読み込み要求を出すことによるメモリアクセス負荷の増大を抑えることが可能となる。
【００９９】
続いて、図１０を参照して、本発明の第３の実施の形態の動作について説明する。図１０は、本発明の第３の実施の形態のデータ転送制御部１４０の動作を示すフローチャートである。
【０１００】
ステップＳ２２１とステップＳ２２２において初期化処理を行う。
【０１０１】
ステップＳ２２１において、メモリアドレス取得手段１３１が、ＣＰＵ１０１からメモリ１０２上のデータ記憶領域１２０とバッファのアドレス情報、メモリアクセス順序を取得し、このアドレス情報をメモリアドレス記憶手段１３２へ登録する。
【０１０２】
ステップＳ２２２において、データ転送要求を発行するまでの待ち時間であるｔを初期値ｔ０に設定する。この待ち時間ｔは、時間に変換できる数値であればよく、例えばクロック数でもよい。
【０１０３】
ステップＳ２２３において、メモリアクセス順に従い、読み出すべきバッファの状態を取得する。ステップＳ２２４で読み出し可能でない場合は、ステップＳ２２５において時間（Δｔ１）だけ待つ。その後、ステップＳ２０６において、前回のデータ転送開始トリガを発行してからの経過時間を更新する。
【０１０４】
ステップＳ２２４で、読み出し可能と判断されたバッファに対しては、ステップＳ２２７において、バッファ状態を読み出し中に更新する。続いて、ステップＳ２２８において、データをメモリ１０２から読み出す。ステップＳ２２９において、メモリから読み出したデータをディスクキャッシュ１１２へ書き込む。このデータの転送サイズがバス規格などにより制限されている場合は、データをすべて転送するまで、このデータ転送を繰り返す。その後、ステップＳ２３０において、バッファ状態を書き込み可能に更新する。
【０１０５】
ステップＳ２３１において、トリガ間の経過時間が前回と同じか比較する。ステップＳ２３１の判定により値が異なる場合、つまり、ステップＳ２２５で待ちが入った場合は、ステップＳ２３４において、経過時間ｔだけ次回も待つ。ステップＳ２３１の判定により前回と同じ場合、つまり経過時間の増分が無かった場合は、ステップＳ２３２において、ステップＳ２３４で待つ時間をΔｔ２短縮する。この待ち時間短縮により、ログ収集機能からログ書き込み領域１２０への書き込み速度が増加した場合でも、データ転送要求の発行間隔を短くすることでメモリが溢れることを防ぐことができる。ステップＳ２３２での、待ち時間の短縮は、ある時間だけ短くする引き算の処理に限らず、例えば時間を半分にするなどしてもよい。
【０１０６】
ログ収集を終了する際は、ステップＳ２３３で判定され、データ転送発行の処理を終了する。
【０１０７】
以上で説明したように、本発明の第３の実施の形態では、転送間隔制御手段１４１が、ＣＰＵ１０１からメモリ１０２へのデータ書き込み状況に応じて、データ記憶領域１２０へのデータ読み込みタイミングを制御することができる。これにより、ＣＰＵ１０１からの書き込み頻度が多い場合は、データ記憶領域１２０からディスクシステム１１０への転送間隔を短くすることで、データ記憶領域１２０の容量溢れることによるログデータの欠落を防ぐことができる。また、ＣＰＵ１０１からメモリ１０２への書き込み頻度が少ない場合は、転送要求間隔を長くすることで、まだ書き込み中のバッファに対して何度も読み込み要求を出すことによるメモリアクセス負荷の増大を抑えることが可能となる。
【０１０８】
［第４の実施形態］
次に、本発明の第４の実施の形態について図面を参照して詳細に説明する。
【０１０９】
図１１は、本発明の第４の実施の形態のデータ記憶システムの構成を示すブロック図である。図１１に示す第４の実施の形態のデータ転送制御部１５０は、図１に示す第１の実施の形態のデータ転送制御部と比べてコマンドモニタ手段１５１を有する点で異なる。
【０１１０】
コマンドモニタ手段１５１以外の装置は第１の実施の形態と同じであるため、ここでの説明は省略する。
【０１１１】
コマンドモニタ手段１５１は、バス１０５上のコマンドをモニタする。コマンドモニタ手段１５１は、ＣＰＵ１０１からデータ記憶領域１２０への書き込み命令をモニタし、その書き込みアドレスが新たなバッファ領域へ入ると、ディスク書き込み制御手段１３３に対してデータ転送を要求する。
【０１１２】
図１２を参照して、本発明の第４の実施の形態の動作を説明する。第４の実施の形態では、ＣＰＵの動作は、本発明の第１の実施の形態における動作と同じであるため、ここでは、ＣＰＵ１０１の動作の説明は省略し、データ転送制御部１５０の動作を説明する。
【０１１３】
コマンドモニタ手段１５１を有するデータ転送制御部１５０の動作を図１２のフローチャートを参照して説明する。
【０１１４】
ステップＳ３０１において、メモリアドレス取得手段１３１は、ＣＰＵ１０１からデータ記憶領域１２０とその中にあるバッファのアドレス、メモリアクセス順を取得し、メモリアドレス記憶手段１３２に登録する。
【０１１５】
ステップＳ３０２において、コマンドモニタ手段１５１は、バス１０５上のコマンドをモニタする。モニタしたコマンドはステップＳ３０３とＳ３０４において、データ転送開始をディスク書き込み制御手段１３３へ通知するか判断する。
【０１１６】
ステップＳ３０３では、ステップＳ３０２でモニタされたコマンド内容が、ＣＰＵ１０１からデータ記憶領域１２０に対する書き込み命令であるか判断する。コマンドが書き込みであるかは、コマンド内の命令タイプから判断する。書き込み先のアドレスがデータ記憶領域１２０内であるかは、ステップＳ３０１でログ収集機能から通知されるデータ記憶領域１２０のアドレスと、モニタしたコマンド内の処理対象アドレスを比較して判断する。
【０１１７】
データ記憶領域１２０には、ログデータしか書き込まないため、データの中身を見ることなく、コマンドが書き込み命令であることと、書き込み先のメモリアドレスがデータ記憶領域１２０内であることが分かれば、コマンドモニタ手段１５１は、ＣＰＵ１０１からメモリ１０２上にログデータの書き込みが発生したことを検知できる。
【０１１８】
ステップＳ３０３での判定の結果、コマンドがＣＰＵ１０１からデータ記憶領域１２０への書き込み要求でないと判断すると、ステップＳ３０２へ戻る。ステップＳ３０３での判定の結果、コマンドがＣＰＵ１０１からデータ記憶領域１２０への書き込み要求であると判断すると、ステップＳ３０４において、バッファへの書き込みが終了したか判断する。
【０１１９】
ＣＰＵ１０１からデータ記憶領域１２０への書き込みは、メモリアドレスに対して連続的に行われる。このため、書き込み命令内のアドレスが新たなバッファ領域内のアドレスであれば、その前のバッファに対するログデータの書き込みが終了したと判断できる。
例えば、モニタしたコマンド内の処理対象となるアドレスがバッファＩＤ＝２内だったものが、あるときのステップＳ３０４の判定でバッファＩＤ＝３内のアドレスになった場合は、バッファＩＤ＝２へのログデータ書き込みが終了したと判断できる。
【０１２０】
ステップＳ３０４で、バッファへのログデータ書き込みが終了したと判断されたバッファに対するデータ転送要求をディスク書き込み制御手段１３３へ通知する。
【０１２１】
例えば、ステップＳ３０４において、バッファＩＤ＝２のデータ書き込みが終了したと判断されると、ステップＳ３０５において、バッファ状態を読み出し中に更新する。ステップＳ３０６において、メモリからバッファＩＤ＝２のデータを読み出す。ステップＳ３０７において、読み出したデータをディスクキャッシュ１１２へ書き込む。その後ステップＳ３０８において、バッファ状態を書き込み可能に更新する。ステップ３０２からステップＳ３０８までの動作はログ収集が終了するまで行われる（ステップＳ３０９）。ステップＳ３０４において、バッファへの書き込みが終了していないと判断された場合は、ステップＳ３０２へ戻る。
【０１２２】
以上で説明した第４の実施の形態の効果について説明する。
【０１２３】
第３の実施の形態では、転送間隔制御手段１４１が、過去のトリガ発生間隔に基づき、トリガの発生タイミングを決定していた。このため、急激にデータ書き込み速度が変更するなど、過去の状況と異なる場合に、バッファが一杯になってからメモリ読み込みまでの間隔が長くなったり、バッファが一杯になっていないにも関わらず、メモリ読み込み要求が頻繁に発生したりすることが考えられる。
【０１２４】
これに対して、本第４の実施形態では、コマンドモニタ手段１５１が、バス１０５上の命令をモニタしているため、バッファへのログデータの書き込みが一杯になったタイミングで的確にメモリからディスクシステムへのデータ転送要求を発行することができる。このため、バッファが一杯になってからメモリ読み込みまでの間隔が長くなったり、バッファが一杯になっていないにも関わらず、メモリ読み込み要求が頻繁に発生したりすることを防ぐことができる。
【０１２５】
［第５の実施形態］
次に、本発明の第５の実施の形態について、図面を参照して説明する。
【０１２６】
図１３は、本発明の第５の実施の形態の構成を示すブロック図である。
【０１２７】
本発明の第５の実施の形態は、図１に示した第１の実施の形態に加えて、データ転送制御部にデータ転送先選択手段１６１を備える点と、複数のディスクシステム１１０ａ，１１０ｂを備える点が特徴である。データ転送先選択手段１６１以外は、第１の実施の形態と同じであるので、ここではデータ転送先選択手段１６１のみを説明し、他の説明は省略する。図１３おいて、ディスクシステム１１０ｂの内部構成が示されていないが、その構成はディスクシステム１１０ａと同一である。
【０１２８】
データ転送先選択手段１６１は、ディスク書き込み制御手段１３３がディスクシステム１１０へデータを書き込む際に、その書き込み先ディスクシステムを選択する。書き込み先ディスクシステムを選択する基準としては、データの重要度やデータが生成された時期で分ける方法がある。例えば、データの重要度が高いデータはディスクシステム１１０ａへ保存し、データの優先度が低いデータはディスクシステム１１０ｂへ保存することができる。
【０１２９】
図１４を参照して、本発明の第５の実施の形態の動作について説明する。図１４は、データ転送制御部１６０の動作を示すフローチャートである。第５の実施の形態におけるＣＰＵの動作は、第１の実施の形態におけるＣＰＵの動作と同じであるため、ここでの説明は省略する。
【０１３０】
図１５に示すデータ転送制御部１６０の動作は、第１の実施の形態での動作に加えて、ステップＳ５３５とステップＳ５３６の間にステップＳ４０１を有する。ステップＳ４０１においては、データ転送先選択手段１６１が、メモリ１０２から読み出したデータ内容に応じて、書き込むディスクシステムを選択する。また、ステップＳ５３３でバッファ状態が読み出し可能でない場合に、一定時間経過後、バッファ状態を確認するステップＳ４０２を経てステップＳ５３３に戻る点が異なる。
【０１３１】
以上で説明した第５の実施の形態の効果について説明する。
【０１３２】
第５の実施の形態では、データ転送先選択手段１６１が、データの重要度により、転送先を選択できる。このため、重要度が高いデータは信頼性が高いディスクシステムへ、重要度が低いデータは信頼性が低いディスクシステムへ転送することで、ディスクシステムのコストを削減することができるようになる。
【０１３３】
また、バッファごとに転送先のディスクシステムを決めておくことでも同様の効果を得ることができる。この場合は、ＣＰＵがデータをメモリにデータを書き込む際に、どのバッファに書き込むか選択する手段が必要となる。これにより、データ転送制御部１６０が、ステップＳ４０１でデータ内容をモニタしなくてもバッファＩＤをモニタすれば、転送先のディスクシステムを決定することができる。
【０１３４】
［第６の実施形態］
次に、図１５を参照して、本発明の第６の実施の形態について説明する。図１５は、本発明の第６の実施の形態の構成を示すブロック図である。図１５は、ログ収集の管理対象となる管理対象コンピュータ１１と、ログデータを分析するリモート管理用コンピュータ１２と、ログデータを記憶するディスクドライブがリモートディスクノード１３として別ノードで構成されているログデータ記憶システムを示す。
【０１３５】
図１５のログデータ記憶システムは、第５の実施の形態と比べて、管理対象コンピュータ１１がバスプロトコル転送部１８０ａ、リモート管理用コンピュータ１２がバスプロトコル転送部１８０ｂ、リモートディスクノード１３がバスプロトコル転送部１８０ｃを有し、パーティション制御機能付スイッチ１９０で接続されている点で異なる。バスプロトコル転送部１８０ａ〜１８０ｃとパーティション制御機能付スイッチ１９０以外の構成は、第５の実施の形態と同じであるため、ここでの説明は省略する。バスプロトコル転送部１８０ａ〜１８０ｃの構成及び動作は同じであるため、以下、バスプロトコル転送部１８０ａを例として説明する。
【０１３６】
バスプロトコル転送部１８０ａは、バス１０５ａで利用しているバスプロトコルを、コンピュータ間接続に利用しているネットワークプロトコルで通信するための処理を行う。例えば、バスプロトコルとしては、ＰＣＩ  Ｅｘｐｒｅｓｓがあり、ネットワークプロトコルとしてはＥｔｈｅｒｎｅｔ（登録商標）がある。
【０１３７】
バスプロトコル転送部１８０ａの構成を図１６に示す。バスプロトコル転送部１８０ｂ、１８０ｃも同様な構成である。バスプロトコル転送部１８０ａは、バスプロトコル処理手段１８１と、ネットワークプロトコル処理手段１８２と、カプセル化手段１８３と、デカプセル化手段１８４とから構成される。
【０１３８】
バスプロトコル処理手段１８１は、バスプロトコルのヘッダ処理を行う。ネットワークプロトコル処理手段１８２は、ネットワークプロトコルのヘッダ処理を行う。カプセル化手段１８３は、データの流れが内部バス側から外部ネットワークへの場合に、バスプロトコルのデータをネットワークプロトコルでカプセル化する。逆にデータの流れが外部ネットワークから内部バスへの場合は、デカプセル化手段１８４が、ネットワークプロトコルからネットワークプロトコルのヘッダを除き、内部プロトコルデータを抽出する。
【０１３９】
バスプロトコル転送部１８０ａ、１８０ｃにより、バス１０５ａとバス１０５ｃが同一バスと同様にデータを通信することができるようになる。
【０１４０】
パーティション制御機能付スイッチ１９０は、ディスクシステム１１０ｃとこれを制御するＣＰＵを関連付けるパーティションの制御を行う。同一パーティションに属するＣＰＵがディスクシステムを制御することができ、異なるパーティションのＣＰＵからはディスクシステムを制御することができないようにする。例えば、バスプロトコル転送部で処理されるネットワークプロトコルがＥｔｈｅｒｎｅｔ（登録商標）の場合は、ＶＬＡＮ（Ｖｉｒｔｕａｌ  ＬＡＮ）を利用することで、ＶＬＡＮ  ＩＤごとにパーティションを構成することができる。
【０１４１】
ＣＰＵ１０１ａからのログデータをリモートノード１３内のディスクシステム１１０ｃへ保存するときは、パーティション機能付スイッチ１９０は、ディスクシステム１１０ｃとＣＰＵ１０１ａを同一パーティションに設定する。また、ディスクシステム１１０ｃ内のログデータをＣＰＵ１０１ｂで分析する際には、ディスクシステム１１０ｃとＣＰＵ１０１ｂを同じパーティションに設定する。
【０１４２】
本発明の第６の実施の形態における動作は、ログデータをディスクシステムに転送する手順は、第５の実施の形態における動作と同じである。ステップＳ４０１において、転送先のディスクをリモートディスクに設定することで、ログデータをリモートディスクへ保存することができる。ただし、ディスクシステムへデータを転送する前に、パーティション制御機能付スイッチ１９０により、管理対象コンピュータ１１のＣＰＵ１０１ａと、転送先であるディスクシステム１１０ｃを同一パーティションに設定する。また、ディスクシステム１１０ｃに保存されたログデータをリモート管理用コンピュータ上で分析する際には、ＣＰＵ１０１ｂとディスクシステム１１０ｂを同一パーティションに設定する。
【０１４３】
以上で説明した第６の実施の形態の効果について説明する。
【０１４４】
本発明の第６の実施の形態では、リモートディスクへのデータ転送に必要なＴＣＰ／ＩＰ処理を、バスプロトコルをネットワークプロトコルにカプセル化する専用装置で実行することにより、ＴＣＰ／ＩＰ処理をＣＰＵ処理から省略できるため、ＣＰＵ負荷を低減することができる。
【０１４５】
以上、本発明の各実施形態の説明において、ＣＰＵ上で動作するログ収集機能によりメモリ上へ書き込むログデータを例として説明したが、本発明の効果はログデータに限定されるものではなく、より一般的にＣＰＵ上のプログラムがメモリ上に書き込んだデータをディスクシステムへ転送する際に利用できる技術である。
【０１４６】
また、上記動作の説明では、第１の実施の形態以外では、ディスクへの書き込み時の動作しか説明しなかったが、上記説明したすべての実施の形態において、第１の実施の形態におけるディスクからの読み出しと同じ動作を行うことで、ディスクに保存したデータ読み出しにおいてもＣＰＵ負荷を低減させることができる。
【０１４７】
また各実施の形態の説明において、データ転送制御部内に複数の機能を実現する手段が存在するが、これらの全てが一つの装置で構成されても、分割され複数の装置で実現されても、各実施形態の効果を実現することができる。また、これら装置の一部又は全てがディスクシステム内に構成されても、各実施形態の効果を実現することができる。
【産業上の利用可能性】
【０１４８】
本発明はＣＰＵの負荷を削減できるデータ記憶システム、及びデータ記憶方法に用いられ、データ記憶システムを有するコンピュータ、かかるコンピュータをネットワークで接続したシステム等に用いられる。
【図面の簡単な説明】
【０１４９】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】バッファ状態記憶領域の構成を示す図である。
【図３】本発明の第１の実施の形態におけるディスク書き込み時のＣＰＵの動作を示すフローチャートである。
【図４】本発明の第１の実施の形態のディスク書き込み時のデータ転送制御部の動作を示すフローチャートである。
【図５】本発明の第１の実施の形態のディスク読み出し時のＣＰＵの動作を示すフローチャートである。
【図６】本発明の第１の実施の形態におけるディスク読み出し時のデータ転送制御部の動作を示すフローチャートである。
【図７】本発明の第２の形態の構成を示すブロック図である。
【図８】本発明の第２の実施の形態におけるデータ転送制御部の動作を示すフローチャートである。
【図９】本発明の第３の実施の形態の構成を示すブロック図である。
【図１０】本発明の第３の実施の形態におけるデータ転送制御部の動作を示すフローチャートである。
【図１１】本発明の第４の実施の形態の構成を示すブロック図である。
【図１２】本発明の第４の実施の形態におけるデータ転送制御部の動作を示すフローチャートである。
【図１３】本発明の第５の実施の形態の構成を示すブロック図である。
【図１４】本発明の第５の実施の形態におけるデータ転送制御部の動作を示すフローチャートである。
【図１５】本発明の第６の実施の形態の構成を示すブロック図である。
【図１６】バスプロトコル転送部の構成を示すブロック図である。
【図１７】従来のログデータ記憶システムの構成を示すブロック図である。
【図１８】従来のログデータ記憶システムにおけるＣＰＵの動作を示すフローチャートである。
【図１９】従来のログデータ記憶システムにおけるＤＭＡコントローラの動作を示すフローチャートである。
【符号の説明】
【０１５０】
１０１  ＣＰＵ
１０２  メモリ
１０５  バス
１１０  ディスクシステム
１１１  ディスクドライブ
１１２  ディスクキャッシュ
１２０  データ記憶領域
１３０、１４０、１５０、１６０、１９０  データ転送制御部
１３１  メモリアドレス取得手段
１３２  メモリアドレス記憶手段
１３３  ディスク書き込み制御手段
１３４  データ重複フィルタ手段
１３５  転送データ記憶手段
１３６  ディスク読み出し制御手段
１４１  転送間隔制御手段
１５１  コマンドモニタ手段
１６１  データ転送先選択手段
１８０  バスプロトコル転送部
１８１  バスプロトコル処理手段
１８２  ネットワークプロトコル処理手段
１８３  カプセル化手段
１８４  デカプセル化手段
１９０  パーティション制御機能付スイッチ
２０１  メモリアドレス決定手段
２０２  メモリ書き込み順決定手段
２０３  データ書き込み手段
２０４  データ読み出し手段
９０１  ＣＰＵ
９０２  メモリ
９１０  ディスクシステム
９１１  ディスクドライブ
９１２  ディスクキャッシュ
９２０  ＤＭＡコントローラ
９２１  ＤＭＡ開始手段
９２２  アドレスカウント手段
９２３  ディスク書き込み制御手段
９２４  完了割り込み通知手段
【図１】
2008225543.tif 000003
【図２】
2008225543.tif 000004
【図３】
2008225543.tif 000005
【図４】
2008225543.tif 000006
【図５】
2008225543.tif 000007
【図６】
2008225543.tif 000008
【図７】
2008225543.tif 000009
【図８】
2008225543.tif 000010
【図９】
2008225543.tif 000011
【図１０】
2008225543.tif 000012
【図１１】
2008225543.tif 000013
【図１２】
2008225543.tif 000014
【図１３】
2008225543.tif 000015
【図１４】
2008225543.tif 000016
【図１５】
2008225543.tif 000017
【図１６】
2008225543.tif 000018
【図１７】
2008225543.tif 000019
【図１８】
2008225543.tif 000020
【図１９】
2008225543.tif 000021