(57)【特許請求の範囲】
【請求項１】
複数のディスク装置と、ディスク装置に対するアクセス要求をスケジュールする制御装置とを備えたデータ格納装置において、
あるディスク装置に制限時間付きの新しい書き込み要求を発行したと仮定した場合に、該書き込み要求を含むそのディスク装置に対する全てのアクセス要求の制限時間が保証されるか否かを判定する手段と、
この手段により全てのアクセス要求の制限時間が保証されると判定されたディスク装置を、前記新しい書き込み要求について書き込み対象となるディスク装置として選択する手段と、
この手段により選択されたディスク装置に対する全てのアクセス要求の制限時間が保証されるようにそれら全てのアクセス要求をスケジュールして該ディスク装置に発行する手段とを備えたことを特徴とするデータ格納装置。
【請求項２】
複数のディスク装置と、ディスク装置に対するアクセス要求をスケジュールする制御装置を持つデータ格納装置において、
指定ディスク装置に対する制限時間付きの新しい書き込み要求を受けた場合、該書き込み要求を含む該指定ディスク装置に対する全てのアクセス要求の制限時間が保証されるか否かを判定する手段と、
この手段により全てのアクセス要求の制限時間が保証されると判定されなかった場合、前記指定ディスクとは異なるディスク装置を、前記新しい書き込み要求について書き込み対象となるディスク装置として選択する手段とを備えたことを特徴とするデータ格納装置。
【請求項３】
各データが現在格納されているディスク装置と本来格納されるべきディスク装置との対応を記憶する手段をさらに備えたことを特徴とする請求項２に記載のデータ格納装置。
【請求項４】
複数のディスク装置に対するアクセス要求をスケジュールする制御装置によるデータ格納方法において、
あるディスク装置に制限時間付きの新しい書き込み要求を発行したと仮定した場合に、該書き込み要求を含むそのディスク装置に対する全てのアクセス要求の制限時間が保証されるか否かを判定し、
全てのアクセス要求の制限時間が保証されると判定された場合、そのディスク装置を、前記新しい書き込み要求について書き込み対象となるディスク装置として選択し、
この選択されたディスク装置に対する全てのアクセス要求の制限時間が保証されるようにそれら全てのアクセス要求をスケジュールして該ディスク装置に発行することを特徴とするデータ格納方法。
【請求項５】
制限時間付きの書き込み要求が発生した際に、あるディスク装置に前記書き込み要求を発行したと仮定した場合にそのディスク装置に対する全てのアクセス要求の制限時間が保証されるディスク装置の集合に含まれ、且つその中で最も優先度の高いディスク装置を、前記書き込み要求について書き込み対象となるディスク装置として選択することを特徴とする請求項４に記載のデータ格納方法。
【請求項６】
あるデータを格納すべき特定のディスク装置が書き込み要求内で指定されている場合にはその特定のディスク装置を最も優先度の高いディスク装置とすることを特徴とする請求項５に記載のデータ格納方法。
【請求項７】
複数のディスク装置に対するアクセス要求をスケジュールする制御装置によるデータ格納方法において、
指定ディスク装置に対する制限時間付きの新しい書き込み要求を受けた場合、該書き込み要求を含む該指定ディスク装置に対する全てのアクセス要求の制限時間が保証されるか否かを判定し、
全てのアクセス要求の制限時間が保証されると判定されなかった場合、前記指定ディスクとは異なるディスク装置を、前記新しい書き込み要求について書き込む対象となるディスク装置として選択することを特徴とするデータ格納方法。
【請求項８】
あるデータを格納すべき特定のディスク装置が書き込み要求内で指定されていて、且つ該特定のディスク装置とは異なるディスク装置が書き込みディスク装置として選択された場合、
この選択された前記特定のディスク装置とは異なるディスク装置にデータが書き込まれた後に、該データを該特定のディスク装置とは異なるディスク装置から読み出して所定の記憶領域に一旦保持し、その後、該データを該所定の記憶領域から該特定のディスク装置に書き込むことを特徴とする請求項７に記載のデータ格納方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディスク装置に対する制限時間付きのデータ書き込み要求を含むアクセス要求をスケジュールするデータ格納装置及びデータ格納方法に関する。
【０００２】
【従来の技術】
制限時間付きのジョブを扱う実時間システムでは、リアルタイムスケジューリングを導人することにより複数のジョブを各々の制限時間内で処理できるように処理順序を決定する。リアルタイムスケジューリングの方式には従来から様々な方式が考案、実施されている。
【０００３】
制限時間付のディスクアクセス要求が周期的に発生するような実時間システムでは、ディスクアクセスの処理に上記スケジューリング（および後述する判定手段）が適用される。このようなシステムの例としては、ディスクに格納された映像データを連続してクライアントに転送するビデオサーバや、プラントの状態監視／記録システムなどがある。このようなシステムではデータ格納装置としての十分な転送能力を確保するために、ディスク装置を複数台準備する場合が多い。
【０００４】
また、周期的に発生する制限時間付きのジョブを扱う場合には、一般にはそのシステム全体の処理能力、各ジョブの発生周期、処理時間、その他必要となる資源をもとに新しいジョブの処理を受け付けても良いがどうかを判断して処理受け付けを許可または拒否する。この判定手段はアドミッション・コントロール（ａｄｍｉｓｓｉｏｎ  ｃｏｎｔｒｏｌ）と呼ばれ、スケジューリング方式やシステムに応じてその判断基準が定められる。
【０００５】
しかし実際には、アドミッション・コントロールで許可されたジョブであっても、ジョブの発生周期が外的要因により変化して全てのジョブが各々の制限時間内で完了することが保証できなくなる場合がある。
【０００６】
例えばビデオサーバにおいて、ビデオカメラからの出力を直接符号化しネットワークを介して送られてくる映像データをビデオサーバで受信してディスク装置に格納するような場合には、ネットワークの遅延による到着時刻のジッタが原因でディスクアクセス要求の発生周期に揺らぎが生じることがある。すると、ある時刻に予定以上の要求が特定のディスク装置に集中して、どのようにスケジュールを組み換えたとしても全てのディスクアクセス要求を制限時間内で実行することが不可能になることがある。この場合、上記のようにしてネットワークを介して送られてきた映像データは、ディスク装置に格納することができずに失われてしまい、二度と再現することができなくなってしまう。
【０００７】
そこで従来は、書き込み要求に関してこの問題を解決する方法として、書き込みデータを保持するバッファメモリを大きくすることによりデータを保持することが可能な時間を長くして、書き込み要求の制限時間を長くする方法が一般的であった。しかし、例えば、ストリームのセグメントをＮ台のディスク装置に順番に格納していく場合、アクセスの周期をＴとすると、時間Ｎ×Ｔだけ次の空きタイムスロットを待つ必要があり、その時間データをバッファに保持するためには１ストリーム当たりダブルバッファの割り付けでは足りずに、セグメント（Ｎ＋１）個分のバッファを準備する必要があった。
【０００８】
【発明が解決しようとする課題】
上記したように従来のデータ格納装置では、外的要因により書き込み要求が特定のディスク装置に予定以上に集中してしまった場合、複数のディスク装置全体としての転送能力には余裕があるにもかかわらず書き込み要求に対応できずにデータをとりこぼしてしまう問題点があった。また、データをとりこぼさずに格納するためには、データ保持可能時間を延長するために大量のバッファメモリを用意する必要があり、ハードウェア効率を損なう問題点があった。
【０００９】
本発明は、上記事情を考慮してなされたものであり、１つのディスク装置に対して書き込みの制限時間を持つ書き込み要求が集中するような場合でも、書き込みの制限時間を延長するためにバッファメモリを増加することなく、データをディスク装置に格納することが可能なデータ格納装置及びデータ格納方法を提供することを目的とする。
【００１０】
【課題を解決するための手段】
本発明（請求項１）は、複数のディスク装置と、ディスク装置に対するアクセス要求をスケジュールする制御装置とを備えたデータ格納装置において、あるディスク装置に制限時間付きの新しい書き込み要求を発行したと仮定した場合に、該書き込み要求を含むそのディスク装置に対する全てのアクセス要求の制限時間が保証されるか否かを判定する手段と、この手段により全てのアクセス要求の制限時間が保証されると判定されたディスク装置を、前記新しい書き込み要求について書き込み対象となるディスク装置として選択する手段と、この手段により選択されたディスク装置に対する全てのアクセス要求の制限時間が保証されるようにそれら全てのアクセス要求をスケジュールして該ディスク装置に発行する手段とを備えたことを特徴とする。
【００１１】
本発明（請求項２）は、複数のディスク装置と、ディスク装置に対するアクセス要求をスケジュールする制御装置を持つデータ格納装置において、指定ディスク装置に対する制限時間付きの新しい書き込み要求を受けた場合、該書き込み要求を含む該指定ディスク装置に対する全てのアクセス要求の制限時間が保証されるか否かを判定する手段と、この手段により全てのアクセス要求の制限時間が保証されると判定されなかった場合、前記指定ディスクとは異なるディスク装置を、前記新しい書き込み要求について書き込み対象となるディスク装置として選択する手段とを備えたことを特徴とする。
【００１２】
指定ディスクとは異なるディスク装置を選択するにあたっては、負荷の低いディスク装置を優先的に選択するようにしても良いし、空き領域の大きいディスク装置を優先的に選択するようにしても良いし、ランダムに選択するようにしても良い。さらに、そのディスク装置に対する全てのアクセス要求の制限時間が保証されるか否かをもとにして選択するようにしても良い。
【００１３】
本発明（請求項３）は、請求項２に記載のデータ格納装置において、各データが現在格納されているディスク装置と本来格納されるべきディスク装置との対応を記憶する手段をさらに備えたことを特徴とする。
【００１４】
本発明（請求項４）は、複数のディスク装置に対するアクセス要求をスケジュールする制御装置によるデータ格納方法において、あるディスク装置に制限時間付きの新しい書き込み要求を発行したと仮定した場合に、該書き込み要求を含むそのディスク装置に対する全てのアクセス要求の制限時間が保証されるか否かを判定し、全てのアクセス要求の制限時間が保証されると判定された場合、そのディスク装置を、前記新しい書き込み要求について書き込み対象となるディスク装置として選択し、この選択されたディスク装置に対する全てのアクセス要求の制限時間が保証されるようにそれら全てのアクセス要求をスケジュールして該ディスク装置に発行することを特徴とする。
【００１５】
本発明（請求項５）は、請求項４に記載のデータ格納方法において、制限時間付きの書き込み要求が発生した際に、あるディスク装置に前記書き込み要求を発行したと仮定した場合にそのディスク装置に対する全てのアクセス要求の制限時間が保証されるディスク装置の集合に含まれ、且つその中で最も優先度の高いディスク装置を、前記書き込み要求について書き込み対象となるディスク装置として選択することを特徴とする。
【００１６】
本発明（請求項６）は、請求項５に記載のデータ格納方法において、あるデータを格納すべき特定のディスク装置が書き込み要求内で指定されている場合にはその特定のディスク装置を最も優先度の高いディスク装置とすることを特徴とする。
【００１７】
なお、請求項５において、ディスク装置を選択するにあたっては、負荷の低いディスク装置を優先的に選択するようにしても良いし、空き領域の大きいディスク装置を優先的に選択するようにしても良い。
【００１８】
本発明（請求項７）は、複数のディスク装置に対するアクセス要求をスケジュールする制御装置によるデータ格納方法において、指定ディスク装置に対する制限時間付きの新しい書き込み要求を受けた場合、該書き込み要求を含む該指定ディスク装置に対する全てのアクセス要求の制限時間が保証されるか否かを判定し、全てのアクセス要求の制限時間が保証されると判定されなかった場合、前記指定ディスクとは異なるディスク装置を、前記新しい書き込み要求について書き込む対象となるディスク装置として選択することを特徴とする。
【００１９】
本発明（請求項８）は、請求項７に記載のデータ格納方法において、あるデータを格納すべき特定のディスク装置が書き込み要求内で指定されていて、且つ該特定のディスク装置とは異なるディスク装置が書き込みディスク装置として選択された場合、この選択された前記特定のディスク装置とは異なるディスク装置にデータが書き込まれた後に、該データを該特定のディスク装置とは異なるディスク装置から読み出して所定の記憶領域に一旦保持し、その後、該データを該所定の記憶領域から該特定のディスク装置に書き込むことを特徴とする。
【００２０】
本発明によれば、制限時間を持つ他のディスクアクセスに影響を及ぼさずにバッファメモリ上での書き込みデータ保持時間を短くすることが可能になり、その結果、空いたメモリ領域をそれ以降に発生する書き込み要求のデータ保持に使用することができる。
【００２１】
したがって、１つのディスク装置に対して書き込みの制限時間を持つ書き込み要求が集中するような場合に対処するために大量のバッファメモリを持たなくとも、連続して発生する書き込み要求をデータを失うことなく処理しディスク装置に格納することが可能となる。
【００２２】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
本実施形態は、概略的には、ディスク装置への書き込み要求があったときに、次のデータの到着までに書き込みを終了することができないのであれば、まず、他のディスク装置に一旦書き込んでおくことで、データを全て受信可能にしておく。その後、システムに余裕があるときにデータを本来のディスク装置に移動させるようにしたものである。
【００２３】
図１に、本発明の一実施形態に係るデータ格納装置の構成を示す。
本実施形態のデータ格納装置は、制御装置２、ディスク装置３、メモリ装置４を備えている。
【００２４】
制御装置２は、スケジューリング部２２、書き込みディスク装置選択部２３、スケジューリング可能性判定部２４、データ管理部２５を有する。スケジューリング部２２は、周期的ジョブテーブル２２１、アクセス要求テーブル２２２を有する。データ管理部２５は、データ移動予約テーブル２５１、データ配置テーブル２５２を有する。なお、以下では、スケジューリング可能性判定部を判定部と呼ぶ。また、書き込みディスク装置選択部を選択部と呼ぶ。
【００２５】
ディスク装置３は、データを格納するために用いられる。ここでは、ディスク装置３は、制御装置２（のスケジューリング部２２）から発行されたアクセス命令に応じ指定されたデータの書き込みや読み出しを行うコントローラを内蔵するものとする。
【００２６】
メモリ装置４は、ディスク装置３に書き込むデータやディスク装置３から読み出したデータを一旦保持するバッファとして用いられる。メモリ装置４は、１台のメモリからなる場合と、複数のメモリからなるメモリ群である場合とが考えられる。
【００２７】
データ保存用の複数のディスク装置３とバッファ用のメモリ装置４はＳＣＳＩバス等のデータ転送ライン８で接続されており、メモリ装置４上に格納されているデータをどのディスク装置３に対しても書き込むことが可能である。
【００２８】
また、ネットワークを介して接続された装置との間でデータの受け渡しを行う場合、ネットワーク入出力装置（図示せず）がバス８に接続される。
制御装置２では、判定部２４、選択部２３、スケジューリング部２２が動作する。これらを実現する形態には、ソフトウェアとして、ＯＳのカーネルに組み込む形態や、ユーザプログラムとして動作させる形態が考えられる。また、ＯＳとアプリケーションンフトが動作するＣＰＵとは別のＣＰＵを持つコンピュータを制御装置として用意し、該コンピュータ上で、判定部２４、選択部２３、スケジューリング部２２をソフトウェアとして動作させる形態も考えられる。もちろん、判定部２４、選択部２３およびスケジューリング部２２をハードウェア回路として実現しても良い。
【００２９】
スケジューリング部２２は、主として、アクセス要求の受け付け、アクセス命令のスケジューリング、周期的ジョブの登録、アクセス命令の発行などを行う。例えば、アクセス要求の受け付けは随時行われ、スケジューリングと周期的ジョブの登録とアクセス命令の発行は周期的に行われる。
【００３０】
アクセス要求としては、非周期的に発行されるアクセス要求や、登録された周期的ジョブの個別のアクセス要求がある。ここでの周期的ジョブとは、周期的に発行される一連のアクセス要求のことである。
【００３１】
後述するディスク装置間でのデータ再配置のためのアクセス要求は、制限時間なしの非周期的ジョブである。
なお、アクセス要求は、スケジューリング部２２の外部から（例えばユーザプログラムから）だけでなく、スケジューリング部２２内から発行される場合もある。例えば、スケジューリング部２２自体が時間のマスタになるような周期的ジョブの場合には、スケジューリング部２２自体が個別のアクセス要求を発行する形態を取ることも可能である。
【００３２】
スケジューリング部２２は、各ディスク装置３に対して現在発行されているアクセス要求の管理表２２２と、周期的ジョブの管理表２２１を持つ。周期的ジョブの管理表２２１では、各周期的ジョブについて予定周期とデータサイズ（１回の処理に必要な時間はこれらから得られる）、必要ならば複数のディスク装置３への格納順序の規則等が管理されている。
【００３３】
これら管理表２２１，２２２の情報は判定部２４でも必要となるため、必要に応じて管理表２２１，２２２の一部をスケジューリング部２２から判定部２４へと転送する手段を設ける。また、スケジューリング部２２と判定部２４でこれらの管理表２２１，２２２を共有する構成も可能である。
【００３４】
なお、以下では、アクセス要求の管理表をアクセス要求テーブルと呼ぶ。また、周期的ジョブの管理表を周期的ジョブテーブルと呼ぶ。
スケジューリング部２２が選択部２３へ渡す要求Ｒｏは、データが格納されているメモリ領域のアドレス、データのサイズ、制限時間の情報を持つ。そのデータを書き込むディスク装置Ｄｏが指定されている場合には、指定ディスク装置Ｄｏの情報も含まれる。
【００３５】
データ管理部２５は、ファイル（例えばストリーム）毎にデータ配置テーブル２５２を持つ。データ配置テーブル２５２には、各ファイルごとに、該ファイルに属する各データ（例えばセグメント）のディスク装置３上での格納位置を示す情報が保持される。また、データ管理部２５は、現在格納されているディスク装置３から別のディスク装置３へ移動させるべきデータを保持するデータ移動予約テーブル２５１を持つ。データ配置テーブル２５２とデータ移動予約テーブル２５１のサイズが大きくなる場合には、その一部のみを制御装置２上に保持しておき、全体は制御装置２の外部の記憶装置に保持してもよい。
【００３６】
図２は、本実施形態における制御装置２の処理手順の一例を示すフローチャートである。
書き込み要求が制御装置２内部の要求受付部（図示せず）の待ち行列に積まれると、スケジューリング部２２によって取り出され、要求Ｒｏの形式でスケジューリング部２２から選択部２３に渡される（ステップＳ１１）。
【００３７】
選択部２３では、要求Ｒｏを受信すると、後述の選択優先順位に従って優先順位の高いディスク装置３を書き込みディスク候補Ｄｃとして選択し、要求Ｒｏと書き込みディスク候補Ｄｃの情報を判定部２４へ渡す（ステップＳ１２，Ｓ１３）。書き込みディスク候補Ｄｃの情報としては、ディスク装置識別子だけでも良い。
【００３８】
書き込みディスク候補を選択する優先順位の基準としては、
（ａ）最初から書き込むディスク装置３が指定されている場合には指定ディスク装置３を優先的に選択する。
（ｂ）負荷の低いディスク装置３を優先的に選択する。
（ｃ）空き領域の大きいディスク装置３を優先的に選択する。
といった基準があり、これらを組み合わせて使用しても良い。
【００３９】
なお、優先順位を設けずに、ランダムに選択する方法も考えられる。あるいは、まず上記の（ａ）の基準を用い、指定がない場合にランダムに選択する方法も考えられる。
【００４０】
次に、選択部２３から判定部２４に要求Ｒｏとディスク装置Ｄｃの情報が渡されると、判定部２４は書き込みディスク候補Ｄｃのスケジュール情報を調べる（ステップＳ１４）。具体的には、現在そのディスク装置Ｄｃに発行されているアクセス要求に関する情報（アクセス要求テーブル２２２の情報）と、周期的に発行されるアクセス要求の情報（周期的ジョブテーブル２２１の情報）をスケジューリング部２２に要求し、スケジューリング部２２はそれらの情報を判定部２４に転送する。アクセス要求テーブル２２２や周期的ジョブテーブル２２１を共有している場合には判定部２４がテーブル２２１，２２２を直接参照してもよい。
【００４１】
次に、要求Ｒｏがディスク装置Ｄｃに対して発行されたと仮定すると要求Ｒｏも含めた全てのアクセス要求が各々の制限時間内に実行可能となるスケジュールを作成することが可能がどうかを判定する。判定結果は選択部２３へ返される（ステップＳ１５）。判定方法はスケジューリング部２２で採られるスケジューリング方式に合わせる。
【００４２】
次に、判定部２４から選択部２３にスケジューリング可能という判定結果が返された場合、選択部２３は書き込みディスク候補Ｄｃを書き込み要求を発行するディスク装置Ｄｔとして選択して、ディスク装置Ｄｔの識別情報をスケジューリング部２２に返す（ステップＳ１６，Ｓ１７）。スケジュール可能でないと判定結果が返された場合、選択部２３は次に優先順位が高いディスク装置３を書き込みディスク候補Ｄｃとして以上の動作を繰り返す。
【００４３】
なお、選択部２３及び判定部２４の動作方式としては、上記のように優先度にしたがって書き込みディスク候補Ｄｃを１つずつ選択し、判定する処理を繰り返す方式以外の動作方式も考えられる。例えば、まず全てのディスク装置３に対して判定を行ない、要求Ｒｏも含めてスケジューリング可能であると判定されたディスク装置３の集合を求め、その集合の中で最も優先度の高いディスク装置３を書き込み要求を発行するディスク装置Ｄｔとしてスケジューリング部２２に返す方式が考えられる。
【００４４】
次に、選択部２３からスケジューリング部２２に書き込み要求を発行するディスク装置Ｄｔが返されると、スケジューリング部２２は要求Ｒｏと書き込み要求を発行するディスク装置Ｄｔの情報をアクセス要求テーブル２２２に登録する（ステップＳ１８）。
【００４５】
以上で、スケジューリング部２２から渡された１つの要求Ｒｏに対する選択部２３および判定部２４の処理が終了する。
さて、スケジューリング部２２では、アクセス要求テーブル２２２に基づき各ディスク装置３にアクセス命令を出していく。その際、アクセス命令が書き込み命令の場合には、そのデータが属するファイルのデータ配置テーブル２５２に書き込み要求を発行するディスク装置Ｄｔのディスク装置識別子とデータが格納されたディスク装置Ｄｔ上の位置（例えばブロック番号）を追加する。
【００４６】
以上のような本実施形態によれば、外的要因によりネットワークを介して受信するデータの到着時刻が予定時刻からずれてしまい、ある時刻に特定のディスク装置３にアクセスが集中してしまった場合であっても、その時点で時間的制約の守られる他のディスク装置３に書き込み要求を分散させるので、バッファを増加させず、かつ、受信データをとりこぼさずにディスク装置３に格納することが可能である。
【００４７】
ここで、要求Ｒｏで本来の書き込みディスク装置Ｄｏが指定されていて、かつこのディスク装置Ｄｏと書き込み要求を発行するディスク装置Ｄｔが異なる結果となった場合には、後にデータをディスク装置Ｄｔから本来の書き込みディスク装置Ｄｏへ移動させる必要がある。以下では、そのような処理について説明する。
【００４８】
上記のような場合、まず、スケジューリング部２２がアクセス要求テーブル２２２に基づき各ディスク装置３に命令を出す時点で、前述のようにデータ配置テーブル２５２にそのデータのエントリを迫加するのに加えて、データ移動予約テーブル２５１にデータ配置テーブル２５２上でのエントリを示すポインタと本来の書き込みディスクＤｏを登録する。
【００４９】
図３に、この動作のフローチャートを示す。すなわち、スケジューリング部２２は、アクセス要求テーブル２２２を参照して実行すべき要求Ｒｏとディスク装置の識別子Ｄｔを取り出し（ステップＳ２１）、識別子Ｄｔのディスク装置に対してＲｏで指定される書き込み命令を発行し（ステップＳ２２）、データ配置テーブル２５２にそのデータのエントリＥｏを登録する（ステップＳ２３）。そして、書き込みディスク装置Ｄｔと本来書き込むべきディスク装置Ｄｏが異なる場合、データ移動予約テーブル２５１に上記エントリＥｏへのポインタと本来の書き込みディスク装置の識別子Ｄｏを登録する（ステップＳ２４，Ｓ２５）。
【００５０】
その後、システムの負荷が低い状態に移った時点で、書き込んだディスク装置Ｄｔから本来書き込むべきディスク装置Ｄｏにデータを移動させる処理を行う。
図４は、データ再配置処理の手順の一例を示すフローチャートである。
【００５１】
概略的には、データ移動予約テーブル２５１にエントリが存在し、かつディスク装置Ｄｔから読み出したデータを格納するためのバッファ領域が確保できる場合（ステップＳ３１，Ｓ３２でＹＥＳの場合）、そのエントリで登録されているデータを本来書き込まれるべきディスク装置３に移動させる（ステップＳ３３〜Ｓ３９）。
【００５２】
この処理は、（１）ステップＳ３１〜Ｓ３９の処理の実行部あるいはプロセスを設けることにより実現しても良いし、（２）ステップＳ３１とＳ３２の処理の実行部あるいはプロセスと、ステップＳ３３〜Ｓ３９の処理の実行部あるいはプロセスに分けて設け、前者が後者を起動するようにしても良い。
【００５３】
以下、データ再配置処理についてより詳しく説明する。
スケジューリング部２２は、適当なタイミングで繰り返しデータ移動予約テーブル２５１とバッファ領域の負荷状態を監視している。データ移動予約テーブル２５１にエントリが存在し、かつ、バッファ領域等の資源に余裕がある場合（ステップＳ３１，Ｓ３２でＹＥＳの場合）には、データ移動予約テーブル２５１からエントリの情報を取り出して、そのエントリをテーブルから削除する（ステップＳ３３）。取り出したエントリの情報をもとにデータ配置テーブル２５２を検索して、そのデータが書き込まれているディスク装置Ｄｔとそのディスク上での位置を調べる（ステップＳ３４，Ｓ３５）。次に、制限時間を指定せずにそのデータの読み出し要求を発行してその実行完了を待つ（ステップＳ３６，Ｓ３７）。
【００５４】
そして、読み出し要求の実行完了を確認した後、書き込みディスク装置３としてＤｏを指定して、制限時間を指定せずに書き込み要求を発行する（ステップＳ３８）。そして、書き込み要求完了を待つ（ステップＳ３９）。
【００５５】
データ配置テーブル２５２上の当該データのエントリの追加は、図３で示されるように、スケジューリング部２２が書き込み要求に対応する命令を各ディスク装置３に発行する際に行なわれる。書き込み要求の実行完了を確認した後、移動前のデータと移動前のデータ配置テーブル２５２内のエントリを削除する。
【００５６】
以上のような本実施形態によれば、受信時のデータ格納状態に関係なく、本データ格納装置に対して外部装置またはソフトウェアが最初に指定したディスク装置３に自動的にデータを再配置させることができる。
【００５７】
次に、図１のデータ格納装置をビデオサーバとした場合について説明する。
まず、ここで扱うビデオサーバの構成と動作について説明する。
ビデオサーバは、複数のクライアントに対して映像ストリームを同時に且つ途切れなく供給する装置である。ビデオサーバでは、同時に複数のストリームを供給するために、ストリームデータを小さなセグメントに分割してディスク装置３に格納しておき、時分割多重読み出しを行なう。さらに、各ストリームが途切れないようにするために、セグメントを保持するバッファ領域の確保、ディスク装置３からバッファ領域へのセグメントの読み出し、バッファ領域からクライアントへのセグメントの転送をスケジューリングする。
【００５８】
図５はここで扱うビデオサーバにおけるデータ転送のタイムチャートの例である。（ａ）はディスクアクセスのタイムチャート、（ｂ）は送信ストリームのバッファ利用タイムチャート、（ｃ）は受信ストリームのバッファ利用タイムチャートである。また、（ａ）〜（ｂ）においてＴは周期を表わし、矢印はアクセス要求が発生するタイミングを表わす。
【００５９】
ここでは、ストリームデータは、転送時間Ｔとなるセグメントに分割され、先頭から順にディスク装置の識別子が例えば０，１，…，Ｎ−１，０，…となるようにサイクリックにディスク装置に格納されるものとする。図５ではＮ＝３の例を示してある。各ストリームの供給は周期Ｔでセグメントの読み出しと転送の繰り返しで実現される。各動作は時間軸を一定時間で区切ったタイムスロットで管理され、１タイムスロットで１回のディスクアクセスが行なわれる。
【００６０】
このようにスケジューリングする場合に必要となるバッファメモリとしては、通常、各ストリームにセグメント長を単位としたダブルバッファを割り付ければ十分である。
【００６１】
外部からリアルタイムに転送されてくるストリームを受信してディスク装置３に格納する場合は以下のようになる。データが正確に一定レートで転送されてくるのであれば、時間Ｔで受信したデータを１セグメントとして周期Ｔでディスク装置０，１，…，Ｎ−１，０，…の順で書き込むことにより、他の読み出し中のストリームに影響を与えずに格納することが可能である。このような書き込みのストリームに対しても１ストリーム当たりダブルバッファを割り付ければ十分である。しかし、既に説明したようにネットワークでの遅延等、ビデオサーバが管理できない外的要因により１セグメント分の量のデータの到着が遅れる場合には、図５のようなスケジューリングは不可能である。
【００６２】
そこで、このようなビデオサーバに本発明を適用することで、上記不都合に対処することができる。
本ビデオサーバの構成は基本的に図１〜図４で説明したものと同様で、制御装置２、メモリ装置４、複数のディスク装置３、ネットワーク入出力装置（図示せず）が共通のバスで接続され、制御装置２はスケジューリング部２２、選択部２３、判定部２４、データ管理部２５を有し、また、各部分の働きも基本的に同様である。
【００６３】
スケジューリング部２２内の周期的ジョブテーブル２２１には各ストリームに関する情報とタイムスロットに関する情報が記録される。具体的には、各ストリームの状態（例えば送信用または書き込み用）、使用されるデータ、割り付けられたメモリ領域、転送先（クライアント）、ディスクアクセスを行なうタイムスロット、転送を開始するタイムスロットの情報などである。これらの情報をもとにして、図５のようなタイミングで動作することが予測され、この時間的制約を満たすようにスケジューリングが行われる。
【００６４】
また、アクセス要求テーブル２２２には、データが到着して書き込み準備ができている書き込み要求とメモリ領域が確保されて読み出し準備ができている読み出し要求が登録される。各タイムスロットで実際にディスク装置３に送られるアクセス命令はこのアクセス要求テーブル２２２内の要求から選ばれる。
【００６５】
データ管理部２５内のデータ配置テーブル２５２には、各ストリームデータ毎に、各セグメントが格納されているディスク装置番号、各セグメントのディスク上でのブロック番号、各セグメントの大きさの情報が登録される。また、データ移動予約テーブル２５１には、書き込むべきディスク装置３が指定されていたにもかかわらず異なるディスク装置３に書き込まれたセグメントについて、そのストリームデータ識別子、セグメント番号、本来書き込むべきディスク装置識別子が登録される。
【００６６】
以下、本ストリームサーバの動作について説明する。
最初にストリームデータの書き込みが周期的ジョブとして登録される。登録要求を受けたスケジューリング部２２は、メモリ領域の確保を行ない、周期的ジョブテーブル２２１に書き込みストリームとして登録する。また、新しいストリームデータ用のエントリをデータ配置テーブル２５２に準備する。なお、ダブルバッファの割り付けやタイムスロットの割り付けが不可能である場合には、メモリ領域やディスク装置３の転送能力が足りないのでそのストリームデータの書き込みを許可しないものとする。
【００６７】
ネットワーク入出力装置が受信したデータは割り付けられたダブルバッファの片方の領域に保持される。データが１セグメント（転送時間Ｔ）の大きさに達すると、スケジューリング部２２は受信したデータの書き込み要求を制御装置２内部の要求受付部（図示せず）に出す。同時に受信するバッファをもう一方のバッファに切替える。書き込み要求には、バッファメモリのアドレス、セグメントの大きさ、制限時間、書き込みディスク装置３の情報が含まれる。この制限時間は、次のセグメントを確保するために周期Ｔでバッファメモリを空けなければならないという制限である。また、書き込みディスク装置３はディスク装置０，１，…，Ｎ−１，０，…の順に指定される。
【００６８】
スケジューリング部２２は、要求受付部から取り出した要求が書き込み要求であった場合、その要求Ｒｏを選択部２３へ渡す（図２のステップＳ１１）。
選択部２３は、優先度に従って優先順位が高いディスク装置３を書き込みディスク装置候補Ｄｃとして選択し、要求Ｒｏと書き込みディスク装置候補Ｄｃのディスク装置識別子ＩＤ（Ｄｃ）を判定部２４へ渡す。優先度については前述した通りであり、例えば、書き込むディスク装置Ｄｏが最も高く、それ以外のディスク装置３では、現時点から周期Ｔの間でのアクセスが少ない順に優先度を高くする。（ステップＳ１２，Ｓ１３）
判定部２４は，スケジューリング部２２内の周期的ジョブテーブル２２１とアクセス要求テーブル２２２を検索して、ディスク装置Ｄｃについて今後制限時間以内に空きタイムスロットが存在するかどうかを調べる。存在する場合はスケジューリング可能と判定し、存在しない場合は不可能と判定する。判定結果は選択部２３に返される。なお、この判定手段にはスケジューリング方式に応じて様々な方式が適用される（ステップＳ１４，Ｓ１５）。
【００６９】
選択部２３は、返された判定結果がスケジューリング可能であれば、ディスク装置Ｄｃを実際の書き込みディスク装置Ｄｔとして選択して、そのディスク装置識別子をスケジューリング部２２へ返す。判定結果がスケジューリング不可能であれば、次に優先度の高いディスク装置３を書き込みディスク装置候補Ｄｃとして上記の動作を繰り返す（ステップＳ１５，Ｓ１６）。
【００７０】
スケジューリング部２２は、ディスク装置識別子ＩＤ（Ｄｔ）を選択部２３から返されると、要求Ｒｏとディスク装置識別子ＩＤ（Ｄｔ）の組をアクセス要求テーブル２２２に登録する（ステップＳ１７）。
【００７１】
なお、前述したように選択部２３及び判定部２４は、上記のようにディスク候補を１つずつ選択し判定する処理を繰り返す代わりに、全てのディスク装置に対して判定を行ない、スケジューリング可能であると判定されたディスク装置のうち最も優先度の高いディスク装置の識別子をスケジューリング部２２に返すようにしても良い。
【００７２】
以上では書き込み要求のアクセス要求テーブル２２２への登録までの動作を説明してきたが、読み出しストリームの場合には図５のタイムチャートで示したタイミングで読み出し要求がアクセス要求テーブル２２２に登録される。
【００７３】
スケジューリング部２２は、アクセス要求テーブル２２２に基づき、各タイムスロットで各ディスク装置３が実行すべき命令を生成して各ディスク装置３に送る。このとき、その命令が書き込み命令の場合、そのストリームデータに対応するデータ配置テーブル２５２にセグメント番号、ディスク装置識別子ＩＤ（Ｄｔ）、ディスク上のブロック番号、セグメントの大きさを登録する（図３のステップＳ２１〜Ｓ２５）。
【００７４】
以上の動作によりネットワーク入出力部より受信したストリームデータをとりこぼさずにディスク装置３に格納することが可能である。しかし、各セグメントがディスク装置０，１，…，Ｎ−１，０，…の順に格納されている保証はないため、そのままでは図５のようなタイミングでストリームを供給することができない。そこで、スケジューリング部２２では、負荷が低くなり１ストリーム分またはそれ以上のバッファ領域を確保できる状態になると、その領域を利用してセグメントのディスク間移動を行なう。
【００７５】
まず、データをディスク装置３に格納する際に、データ移動予約テーブル２５１に必要な情報を記録しておく。具体的には、スケジューリング部２２から各ディスク装置３が実行すべき命令を生成して転送する際に、要求Ｒｏで指定された本来の書き込みディスクＤｏと選択部２３で選択された書き込みディスクＤｔとが異なる場合には、書き込み命令をディスク装置３へ送ると同時に、ストリームデータ識別子、セグメント番号、本来の書き込みディスク装置３の識別子ＩＤ（Ｄ０）の組をデータ移動予約テーブル２５１に登録しておく。このストリームデータ識別子とセグメント番号により、そのセグメントの格納場所を記録してあるデータ配置テーブル２５２内のエントリを特定できる。
【００７６】
データ移動予約テーブル２５１にエントリが存在する状態になり、バッファ領域が確保できる状態になると、スケジューリング部２２はディスク装置間でデータを再配置させる。ここでは、スケジューリング部２２が、データ移動予約テーブル２５１のエントリの存在と、バッファ領域の確保の可能性をチェックし（図４のステップＳ３１、Ｓ３２に対応）、データを再配置する場合には、バッファ領域を確保してデータ移動用のプロセス（図４のステップＳ３３〜Ｓ３９に対応）を生成するものとする。
【００７７】
データ移動用のプロセスでは、まずデータ移動予約テーブル２５１から１個のエントリの情報を取り出して、そのエントリ自体はデータ移動予約デーブルから削除する。
【００７８】
取り出したエントリの情報には、そのセグメントが属するストリームデータ識別子ＳｔＩＤとセグント番号ＳｅｇＮｏ、本来の書き込みディスク装置識別子ＩＤ（Ｄ０）が含まれている。そのＳｔＩＤに対応するストリームデータの格納場所を示すデータ配置テーブル２５２のＳｅｇＮｏで表されるエントリの情報を調べる。これにより、そのセグメントが格納されているディスク装置識別子ＩＤ（Ｄｔ）、セグメントが格納されているブロック位置、セグメントの大きさが得られる。
【００７９】
読み出し要求が完了したことを確認した後で、ディスク装置Ｄｏ上でそのセグメントを格納するブロックを確保する。その後、制限時間を指定せずに、ディスク装置Ｄｏ、ブロック位置、大きさ、バッファ領域を指定して書き込み要求を構成し、要求の待ち行列に積む。そして、その書き込み要求の実行完了を待つ。書き込み要求が完了したことを確認した後で、そのセグメントが格納されていたＤｔ上のブロックを全て解放する。
【００８０】
以上、本発明を適用したビデオサーバの実施形態について説明してきた。
前述したように従来は、ネットワークでの遅延等で書き込み周期がずれると、最悪の場合には時間（Ｎ×Ｔ）だけ次の空きタイムスロットを待つ必要があった。その時間データをバッファに保持するためには１ストリーム当たりダブルバッファの割り付けでは足りずに、セグメント（Ｎ＋１）個分のバッファを準備する必要があった。
【００８１】
しかし本発明をビデオサーバに適用することにより、書き込み周期がずれる場合であっても１書き込みストリーム当たりダブルバッファを割り付ければ十分であり、メモリ総量を削減することが可能である
ところで、セグメントのディスク間移動は、バッファ領域が確保できるのであれば、そのセグメントが含まれるストリームデータの受信／送信中に並行して行なわれてもよい。
【００８２】
ただし、セグメントのディスク間移動が完全に終了していない期間では、そのセグメントが含まれるストリームデータの送信が途切れなく実行される保証はない。そこで、セグメントのディスク間移動が完全に終了していない期間にそのセグメントが含まれるストリームデータの送信要求が到着した場合には、
（１）連続性の保証がないことをクライアントに通知した上で送信を開始する
（２）ディスク間移動が完全に終了しない間は送信要求を拒否する
のいづれかの方針を選択して実行するのが望ましい。
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【００８３】
【発明の効果】
本発明によれば、制限時間付きの書き込み要求については、全てのアクセス要求の制限時間が保証されると判定されたディスク装置にデータを格納するようにしたので、１つのディスク装置に対して書き込みの制限時間を持つ書き込み要求が集中するような場合に対処するために大量のバッファメモリを持たなくとも、連続して発生する書き込み要求をデータを失うことなく確実にディスク装置に格納することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るデータ格納装置の構成を示す図
【図２】同実施形態におけるディスク装置の選択と判定の処理手順の一例を示すフローチャート
【図３】同実施形態におけるデータ書き込み時の処理手順の一例を示すフロ−チャー卜
【図４】同実施形態におけるデータ再配置の処理手順の一例を示すフロ−チャー卜
【図５】本発明を適用するビデオサーバのディスクアクセスのタイムチャートとバッファ利用タイムチャー卜を示す図
【符号の説明】
２…制御装置
３…ディスク装置
４…メモリ装置
２２…スケジューリング部
２２１…周期的ジョブテーブル
２２２…アクセス要求テーブル
２３…書き込みディスク装置選択部
２４…スケジューリング可能性判定部
２５…データ管理部
２５１…データ移動予約テーブル
２５２…データ配置テーブル
【図１】
0003563541.tif 000002
【図２】
0003563541.tif 000003
【図３】
0003563541.tif 000004
【図４】
0003563541.tif 000005
【図５】
0003563541.tif 000006