(57)【特許請求の範囲】
【請求項１】
回転するディスク状記憶媒体の記録面上の所定位置にヘッドを移動してデータの書き込みと読み出しを行うデータ記憶装置に対しデータを書き込ませる際に、
書き込むべきデータを先頭部分から順次所定ビット長に分割した場合に得られる複数のデータブロックについて、後続するデータブロックを、先行するデータブロックを格納する前記記録面上の小領域の位置から一定方向に見て所定間隔を空けた位置に存在する小領域に格納するように、各データブロックを格納する小領域の範囲を決定し、
決定された小領域の範囲を指示する情報を前記データ記憶装置に与え、
前記データ記憶装置の前記記録面に対するアクセス速度が、記録面上の位置に依存して変化するものである場合、
書き込むべきデータをデータブロックに分割するにあたって、アクセス速度がより速い位置に格納する際には該データをより大きなデータブロックに分割し、アクセス速度がより遅い位置に格納する際には該データをより小さなデータブロックに分割することを特徴とするデータ配置制御方法。
【請求項２】
前記データを格納位置に対応する大きさのデータブロックに分割する際に、予め設けられた前記記録面上の格納位置からデータブロックの大きさを換算するための換算表を参照して、各データブロックの大きさを決定することを特徴とする請求項２に記載のデータ配置制御方法。
【請求項３】
回転するディスク状記憶媒体の記録面上の所定位置にヘッドを移動してデータの書き込みと読み出しを行うデータ記憶装置から、要求されたデータを読み出して、要求元につながる通信路に送り出すビデオサーバ装置において、
書き込むべきデータを先頭部分から順次所定ビット長に分割した場合に得られる複数のデータブロックについて、後続するデータブロックを、先行するデータブロックを格納する前記記録面上の小領域の位置から一定方向に見て所定間隔を空けた位置に存在する小領域に格納するように、各データブロックを格納する小領域の範囲を決定する手段と、
決定された小領域の範囲を指示する情報を前記データ記憶装置に与える手段と、
前記データ記憶装置の前記記録面に対するアクセス速度が、記録面上の位置に依存して変化するものである場合、書き込むべきデータをデータブロックに分割するにあたって、アクセス速度がより速い位置に格納する際には該データをより大きなデータブロックに分割し、アクセス速度がより遅い位置に格納する際には該データをより小さなデータブロックに分割する手段とを具備することを特徴とするビデオサーバ装置。
【請求項４】
前記データを格納位置に対応する大きさのデータブロックに分割する際に、予め設けられた前記記録面上の格納位置からデータブロックの大きさを換算するための換算表を参照して、各データブロックの大きさを決定することを特徴とする請求項３に記載のビデオサーバ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、回転する１つまたは複数の記録面と記録面に対応した数のデータの読み書きを行うためのヘッドを具備するデータ記憶装置に対してデータを格納する際の記録面へのデータ配置方法および上記データ記憶装置に格納されたデータを読出し要求元に送出するビデオサーバ装置に関する。
【０００２】
【従来の技術】
データ記憶装置には、磁気テープ、磁気ディスク、光磁気ディスクなどがある。磁気テープなど、シークエンシャルな読み書きを行う装置は、安価・大容量であるが、データへのアクセス速度が遅いなどの欠点が存在する。これに対して、磁気ディスクなどのランダムアクセスが可能な装置は、磁気テープに比べ高価で容量も小さいが、データのアクセス速度が早いという利点が存在する。
【０００３】
近年の技術の進歩により、後者の磁気ディスクの大容量化、低価格化が進み、動画などの大きなデータを格納する用途に使用できるほどコストパフォーマンスが向上してきた。これに加え、ネットワークのバンド幅も向上したことにより、従来にはなかったビデオ・オン・デマンドのような新しいサービスが可能となってきた。
【０００４】
以下、ビデオ・オン・デマンドを例にとり、データ記憶装置とデータ配置について詳細に説明する。
【０００５】
ビデオ・オン・デマンドのような複数の種類の大量のデータを多数のユーザに配信するようなサービスにおいては、磁気ディスク等のデータ記憶装置に格納されているデータを高速かつ一定時間内に読み出せることが必要である。回転型のデータ記憶装置には、例えば磁気ディスク装置や光磁気ディスク装置やＣＤ−ＲＯＭなどが存在するが、一般に、回転型のデータ記憶装置では、データを読み出す際（あるいは書き込む際）に、ヘッドを該データが格納されている（あるいは該データを格納する）記録面上の部分まで移動させるシーク動作と、記録面上のセクタがヘッドの下に回ってくるのを待つ回転待ち動作を行った後、実際の読み書き動作が行われる。従って、高速にデータを読み出すためには、このシーク動作と回転待ち動作に要する時間を短縮させる必要がある。
【０００６】
ところが、従来のデータ記憶装置においては、一纏まりのデータを配置するにあたり、これを連続した領域に書き込むようになっていた。このようにデータの配置を行うと、データ記憶装置内に格納されている複数の異なるビデオデータを同時に時分割で連続して読み出すときに、該複数のデータのうち、あるものがデータ記憶装置の内周部に記憶されており、あるものが外周部に記憶されている場合には、データ記憶装置の内周部と外周部を交互にアクセスすることになり、アクセスするためのシーク距離が大きくなる状態が連続して発生し、データアクセスに要する時間が伸びる問題点があった。
【０００７】
ここで、一纏まりのデータには、例えば、ビデオ、音声、テキスト、静止画、プログラム等のデータが該当する。
【０００８】
【発明が解決しようとする課題】
従来のデータ記憶装置においては、一纏まりのデータを配置するにあたり、これを連続した領域に書き込むようになっており、このようにデータの配置を行うと、データ記憶装置内に格納されている複数の異なるビデオデータを連続して読み出すときに、それらがデータ記憶装置の内周部と外周部に記憶されている場合には、データ記憶装置の内周部と外周部をアクセスするためのシーク距離が大きくなる状態が連続して発生し、データアクセスに要する時間が伸びる問題点があった。
【０００９】
本発明は、上記事情を考慮してなされたもので、データアクセスの際に連続してシーク距離が大きくなる状況をなくし、平均のシーク量を減少させ、データ記憶装置からのデータの読み出し速度、書き込み速度を向上させることの可能なデータ配置方法及びビデオサーバ装置を提供することを目的とする。
【００１０】
【課題を解決するための手段】
本発明（請求項１）に係るデータ配置制御方法は、回転するディスク状記憶媒体の記録面上の所定位置にヘッドを移動してデータの書き込みと読み出しを行うデータ記憶装置に対しデータを書き込ませる際に、書き込むべきデータを先頭部分から順次所定ビット長（固定の場合と可変の場合がある）に分割した場合に得られる複数のデータブロックについて、後続するデータブロックを、先行するデータブロックを格納する前記記録面上の小領域（例えばセクタ）の位置から一定方向に見て所定間隔（例えばセクタ数で示される；固定の場合と可変の場合がある）を空けた位置に存在する小領域に格納するように、各データブロックを格納する小領域の範囲（例えば開始セクタ番号と終了セクタ番号）を決定し、決定された小領域の範囲を指示する情報を前記データ記憶装置に与えることを特徴とする。
【００１１】
ここで、一定方向とは、記録面のセクタに連続番号を付した場合、例えば、０番のセクタを起点としたときに番号が増加する方向、最大番号のセクタを起点としたときに番号が減少する方向、途中のセクタを起点としたときに番号が増加する方向若しくは減少する方向などである。また、例えば、０番のセクタと最大番号のセクタは隣接していると定義しても良い。例えば、０番のセクタを起点としたときに、最大番号のセクタの次のセクタを０番のセクタとして定義しても良い。
【００１２】
本発明では、磁気ディスク、光ディスク、光磁気ディスク、相変化型光ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒなど、１つまたは複数の記録面と記録面に対応した数のヘッドを具備するデータ記憶装置の記録面にデータを配置する際に、データを連続した領域に書き込むのではなく、所定の大きさのデータブロックに分割し、分割された該データブロックを記録面上に間隔を空けて書き込むように、データ配置を決定する。
【００１３】
従来のように連続した領域にデータを書き込むデータ配置方法をとった場合、記録面の最内周部と最外周部に格納されているデータへのアクセスが連続して起こると、ヘッドのシーク量が最大になる状況が連続することになり、シーク時間によるオーバヘッドが大きくなる。
【００１４】
これに対して本発明では、データは連続した領域に格納されているのではなく、データブロックに分割されて記録面上に間隔を空けて格納されているため、複数のデータに対して所定のアクセス単位に、例えばデータブロック単位に、順番にアクセスする状況が発生しても、従来のようにシーク時間によるオーバヘッドが最大になる状況が連続することを回避し、平均のシーク時間を減少させることが可能となる。
【００１５】
本発明（請求項２）は、請求項１において、前記データブロックの大きさを固定ビット長とすることを特徴とする。
【００１６】
本発明（請求項３）は、請求項１において、前記データ記憶装置の前記記録面に対するアクセス速度（読み出し速度及び書き込み速度）が、記録面上の位置に依存して変化するものである場合、書き込むべきデータをデータブロックに分割するにあたって、アクセス速度がより速い位置に格納する際には該データをより大きなデータブロックに分割し、アクセス速度がより遅い位置に格納する際には該データをより小さなデータブロックに分割することを特徴とする。
【００１７】
本発明では、データ記憶装置の記録面の位置に依存して、データの読み出し速度、書き込み速度が変化する場合を想定している。例えば、磁気ディスク装置では、記録面の回転数が一定のものが多く、記憶面の内周部と外周部で記録密度が異なり、それに伴って読み出し速度、書き込み速度が内周部と外周部で異なるものが存在する。そこで、分割したデータブロックを記録面上に間隔を空けて格納するにあたって、記録面の読み出し速度、書き込み速度が遅い部分にデータを格納する際には、小さいサイズのデータブロックに分割して格納し、読み出し速度、書き込み速度が速い部分にデータを格納する際には、大きいサイズのデータブロックに分割して格納することにより、データの読み出し、書き込みにかかる時間を平均化し、かつ平均シーク時間を減少することが可能となる。これにより、安定したスループットを得ることと、アクセス時間の短縮を図ることができ、データ記憶装置の性能を最大限に利用することが可能となる。
【００１８】
本発明（請求項４）は、請求項３において、前記データを格納位置に対応する大きさのデータブロックに分割する際に、予め設けられた前記記録面上の格納位置からデータブロックの大きさを換算するための換算表を参照して、各データブロックの大きさを決定することを特徴とする。
【００１９】
本発明（請求項５）は、請求項１において、前記ディスク状記憶媒体の同一記録面には複数のデータが格納されるものであり、各データ毎に前記決定を行うことを特徴とする。
【００２０】
本発明（請求項６）は、回転するディスク状記憶媒体の記録面上の所定位置にヘッドを移動してデータの書き込みと読み出しを行うデータ記憶装置から、要求されたデータを読み出して、要求元につながる通信路に送り出すデータサーバ装置において、前記データ記憶装置に対し要求元への送出に供するデータを書き込ませる際に、書き込むべきデータを先頭部分から順次所定ビット長に分割した場合に得られる複数のデータブロックについて、後続するデータブロックを、先行するデータブロックを格納する前記記録面上の小領域の位置から一定方向に見て所定間隔を空けた位置に存在する小領域に格納するように、各データブロックを格納する小領域の範囲を決定し、決定された小領域の範囲を指示する情報を前記データ記憶装置に与える手段を備えたことを特徴とする。
【００２１】
本発明（請求項７）に係るディスク状記憶媒体は、データを格納する記録面を有し、格納されるべきデータを先頭部分から順次所定ビット長に分割した場合に得られる複数のデータブロックが、後続するデータブロックを格納する前記記録面上の小領域が先行するデータブロックを格納する小領域の位置から一定方向に見て所定間隔を空けた位置に存在するように、格納されたものであることを特徴とする。
【００２２】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【００２３】
図１に、本実施形態に係るデータ記憶システムの基本構成を示す。
【００２４】
本実施形態のデータ記憶システムは、ｎ（ｎは１以上の整数）枚のディスク状記録媒体１１と、ディスク状記録媒体１１の記録面１６に対応して１組づつ設けられた、データの読み書きに用いられるヘッド１２と、ディスク状記録媒体１１の回転制御、ヘッド１２の位置制御およびデータの読み書き制御を行うデータ記憶装置制御部１３とを有するデータ記憶装置１０、およびデータ記憶装置１０の記録面１６上に格納されているデータを管理するとともに、格納にあたっては記録面１６上のデータ配置を指示するデータ管理装置２０を備えている。
【００２５】
データ記憶装置１０のディスク状記録媒体１１は、データを記憶しておくためのものである。本実施形態に使用可能なデータ記憶装置としては、磁気ディスク、光ディスク、光磁気ディスク、相変化型光ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ等が考えられる。例えば磁気ディスクにおいては、ディスク状記録媒体１１として、磁性体を塗った金属の円盤が用いられる。ディスク状記録媒体１１の記録面１５は、セクタと呼ばれる小さな領域に分割され、セクタ単位でデータの読み出し、書き込みが行われる。
【００２６】
ディスク状記録媒体１１は、１枚設けられる場合と、複数枚設けられる場合がある。また、ディスク状記録媒体１１の片面を記録面１６として使用する場合と、両面を記録面１６として使用する場合がある。
【００２７】
ヘッド１２は、ディスク状記録媒体１１の記録面１６からのデータの読み出し、記録面１６へのデータの書き込みに用いられるものであり、通常は記録面１６の数に対応した数のヘッド１２が存在する。なお、ヘッド１２は、データ書き込みとデータ読み出しで共用する場合の他に、データ書き込み専用とデータ読み出し専用とに分けて独立に設られる場合がある。
【００２８】
データ記憶装置制御部１３は、ディスク状記録媒体１１（すなわち記録面１６）の回転速度の制御、ヘッド１２の位置決めの制御、ヘッド１２によるデータ読み出し／データ書き込みの制御を行う部分であり、特定のセクタへの読み出し／書き込みを行わせる働きを持つ。
【００２９】
ディスク状記録媒体１１、ヘッド１２およびデータ記憶装置制御部１３を含むデータ記憶装置１０は、例えばハードディスクのディスクドライブに相当する。
【００３０】
一方、データ管理装置２０は、データ記憶装置１０の記録面１６上のセクタの使用状況、データの種類、必要とされる読み出し速度、書き込み速度を管理する。また、データの格納要求が来たときには、適切なセクタにデータが書き込まれるよう、データ記憶装置制御部１３に対して要求を出す働きを持つ。また、また、データの読み出し要求が来たときには、要求されたデータが格納されているセクタから読み出しを行うよう、データ記憶装置制御部１３に対して要求を出す働きを持つ。
【００３１】
データ管理装置２０は、例えばハードディスクを制御するホスト側のコンピュータに必要な手順を記述したプログラムを読み取らせ、これをＣＰＵ上で実行する形でも実現可能である。
【００３２】
データ管理装置２０に読み出し要求や格納要求を渡す主体は任意である。データ管理装置２０をプログラムで実現する場合には、そのプログラムが実行されるコンピュータの外部から直接要求が渡されるケースもしくは同一コンピュータ上で実行される他のプログラム（プロセス）を介して渡されるケース、あるいは同一コンピュータ上の他のプログラムが主体となって要求を発行するケースなどが考えられる。
【００３３】
データ管理装置２０のより詳しい内部構成例は後述する。
【００３４】
（第１の実施形態）
図２は、本実施形態に係るデータ管理装置２０の構成を示す図である。
【００３５】
本実施形態のデータ管理部２０は、セクタ情報管理部２１、データ配置情報管理部２２、データ入出力制御部２３、データ配置決定部２４を備えている。
【００３６】
セクタ情報管理部２１は、データ記憶装置１０の各記録面上のセクタの使用状況を管理する部分である。使用状況の管理としては、（１）図３に示すように、各セクタに対応したビットマップを持ち、使用されているセクタについてはビットを立て、使用されていないセクタについてはビットを下ろす方法、あるいは（２）図４に示すように、記録面１６上の各セクタに一意に定まる識別子を割り当て、使用しているセクタに対応する識別子の範囲を保持した表を用意して管理する方法、などが考えられる。
【００３７】
セクタ情報管理部２１は、要求に応じて、記録面１６上の基準位置から一定方向に見た最初の未使用のセクタ番号と、現在未使用のセクタ数に関する情報とを返す機能を持つ。前者の情報については、例えば、記録面１６の空いているセクタ番号のうち最も内側のものを返す。あるいは、最も外側のものでも良いし、中心部より内側あるいは外側に見て最も中心部に近い空きセクタ番号でも良い。なお以下では前者の情報として、最も内側の空いているセクタ番号を返すものとする。
【００３８】
データ配置情報管理部２２は、各データがデータ記憶装置１０の記録面１６のどのセクタに格納されているか記録したデータ・セクタ対応情報を管理している。その管理方法としては、例えば図５に示すように、各データに対しそれぞれ使用している開始セクタと終了セクタの組を表として持つ方法が考えられる。
【００３９】
このデータ・セクタ対応情報は、データ入出力制御部２３がデータ格納要求を受けた際に起動されたデータ配置決定部２４により更新される。そして、データ入出力制御部２３がデータ読出要求を受けた際に参照される。
【００４０】
データ入出力制御部２３は、データ記憶装置１０に対する入出力要求の処理、および格納要求（入力要求）の際には、データ配置決定部２４を起動して配置位置を決定し、データ記憶制置１０のデータ記憶制御部１３に対して、適切な位置のセクタにデータが書かれるよう制御を行う。
【００４１】
データ配置決定部２４は、データ入出力制御部２３から起動され、データ入出力制御部２３からの指示に従い、格納すべきデータを記録面１６上のどの位置のセクタに格納するかを決定し、決定した情報をデータ入出力制御部２３に返す。格納すべきデータのサイズが入力情報となり、データを格納していくセクタの順序を指示するセクタリストが出力情報となる。データ配置決定部２４の返すセクタリストは、格納する順序にセクタ番号を並べたフォーマット、あるいは図６に示すように開始セクタ番号と終了セクタ番号の組で構成したフォーマットなどが考えられる。ただし、データサイズが大きく、空きディスクに格納できない場合には、格納不能という応答を出力情報とする。
【００４２】
なお、図２のデータ管理装置２０では、読み書きされるデータは、データ入出力制御部２３を介して外部とデータ記憶装置１０との間で受渡しされるものとする。
【００４３】
図７〜図１１に、本実施形態に係るデータ管理装置２０のデータ配置部２４の動作アルゴリズムを示す。データ配置を決定する際には、データを分割する単位であるブロックサイズと、記録面１６上の何箇所に分割して格納するかを指定する分割数とがパラメータとなる。
【００４４】
まず、初期化処理として、デフォルトのブロックサイズおよび分割数を設定し（ステップＳ６０１）、ディスク容量とデフォルトの分割数から、格納するデータ間隔のセクタ数を求める（ステップＳ６０２）。
【００４５】
データ入出力制御部２３から起動されるのを待ち（ステップＳ６０３）、起動されたら、セクタ情報管理部２１に問い合わせ、未使用のセクタ数を得、この値から未使用のディスク容量を求める（ステップＳ６０４）。格納すべきデータサイズと未使用のディスク容量を比較し（ステップＳ６０５）、格納すべきデータサイズの方が大きい場合には、格納不能の応答を返し（ステップＳ６９０）、ステップＳ６０３に戻る。
【００４６】
ステップＳ６０５において、未使用のディスク容量の方が大きい場合には、データを格納できるので、データ配置情報管理部２２に問い合わせ、最も内側の未使用のセクタ番号とそこから始まる連続した未使用領域のセクタ数を求める（ステップＳ６０６）。この連続した未使用領域のセクタ数とデフォルトのブロックサイズのセクタ数を比較し（ステップＳ６１０）、デフォルトのブロックサイズのセクタ数の方が小さい場合には、ブロックサイズをデフォルトのブロックサイズにセットする（ステップＳ６１２）。
【００４７】
一方、デフォルトのブロックサイズの方が大きい場合には、ディスクの未使用領域が少なく、フラグメンテーションが残っていることを示しているので、ブロックサイズに、
連続した未使用領域のセクタ数×セクタサイズ
をセットする（ステップＳ６１１）。
【００４８】
ステップＳ６１１またはステップＳ６１２の後に、
書き込む繰り返し回数＝データサイズ／ブロックサイズ
を求める（ステップＳ６１３）。
【００４９】
ここで、データサイズがブロックサイズの整数倍である場合には（ステップＳ６１４）、繰り返し回数はステップＳ６１３で求めた値になるが、整数倍でない場合には、端数があることを示しているので、その端数分を格納するための１回分を繰り返し回数に加える（ステップＳ６１５）。
【００５０】
次に、データ入出力制御部２３に返すセクタリストを空に初期化し（ステップＳ６１６）、開始セクタ番号を最も内側の未使用のセクタ番号にセットし（ステップＳ６１５）、終了セクタ番号を開始セクタ番号＋ブロックサイズのセクタ数にセットし（ステップＳ６１８）、残りデータサイズを格納すべきデータサイズにセットする（ステップＳ６１９）。
【００５１】
次に、繰り返し回数が０であるかどうか調べ（ステップＳ６３０）、０でない場合には、開始セクタ番号と終了セクタ番号の組をセクタリストに追加する（ステップＳ６３１）。この情報を基に、セクタ情報管理部２１の情報を更新し（ステップＳ６３２）、データ配置情報管理部２２の情報を更新し（ステップＳ６３３）、残りデータサイズに現在の残りデータサイズからブロックサイズを引いた値をセットする（ステップＳ６３４）。
【００５２】
ここで、残りデータサイズが０以下であるかどうかを調べ（ステップＳ６３５）、０より大きい場合には、終了セクタ番号に、現在の終了セクタ番号＋格納するデータ間隔のセクタ数をセットする（ステップＳ６３６）。終了セクタ番号とディスクの最大セクタ番号を比較し（ステップＳ６３７）、終了セクタ番号がディスクの最大セクタ番号より小さい場合には、次の場所に書き込めることを意味しているので、開始セクタ番号に、現在の開始セクタ番号＋格納するデータ間隔のセクタ数をセットし（ステップＳ６３８）、繰り返し回数を１減らし（ステップＳ６５５）、ステップＳ６３０に戻る。
【００５３】
ステップＳ６３７で、終了セクタ番号が最大セクタ番号より大きい場合には、ディスクの端まで格納したことを意味しているので、再び内側より格納する。データ配置情報管理部２２に問い合わせ、最も内側の未使用のセクタ番号とそこから始まる連続した未使用領域のセクタ数を求める（ステップＳ６５０）。連続した未使用領域のセクタ数とブロックサイズのセクタ数を比較し（ステップＳ６５１）、連続した未使用領域のセクタ数がブロックサイズのセクタ数より小さい場合には、ディスクの未使用領域が少なく、フラグメンテーションが残っていることを意味しているので、ブロックサイズに連続した未使用領域のセクタ数×セクタサイズをセットする（ステップＳ６５２）。開始セクタ番号に最も内側の未使用のセクタ番号をセットし（ステップＳ６５３）、終了セクタ番号に開始セクタ番号＋ブロックサイズのセクタ数をセットし（ステップＳ６５４）、繰り返し回数を１減らし（ステップＳ６５５）、ステップＳ６３０に戻る。
【００５４】
ステップＳ６３０で、残りの繰り返し回数が０である場合には、データを全て格納し終わったことを意味しているので、セクタリストをデータ入出力制御部２３に返し（ステップＳ６７０）、ステップＳ６０３に戻る。
【００５５】
ステップＳ６３５で、残りのデータサイズが０以下である場合には、データを全て格納し終わったことを意味しているので、セクタリストをデータ入出力制御部２３に返し（ステップＳ６７０）、ステップＳ６０３に戻る。
【００５６】
以上がデータ管理装置２０のデータ配置部２４の動作である。
【００５７】
上記のようにしてデータ配置部２４からセクタリストを渡されたデータ入出力制御部２３は、データ記憶制置１０のデータ記憶制御部１３に対して、格納要求されたデータをセクタリストで指示されるセクタに格納するよう制御を行う。すなわち、格納すべきデータとセクタリストで指示されたセクタ番号とをそれぞれ所定の単位でデータ記憶制御部１３に渡す。例えば、データ入出力制御部２３は、データの１ブロックと該１ブロックを格納する開始セクタ番号と終了セクタ番号を組にして格納順にデータ記憶制御部１３に渡す。
【００５８】
図１２に、データＡを８つのブロックＡ０  〜Ａ７  に分割して配置し、次にデータＢを８つのブロックＢ０  〜Ｂ７  に分割して配置した後の記録面１６の状況の一例を示す。記録面１６が複数存在する場合でも、データ記憶装置１０の外部から見れば論理的には、１枚の記録面１６が存在する場合と同様に考えて良い。データＡとデータＢは夫々連続した領域ではなく記録面１６上の離散した領域に格納されているため、データＡとデータＢの読出しが同時に要求され、例えばデータＡとデータＢの読出しがブロック単位に交互に行われる場合でも、ヘッドの移動量は小さく抑えられ、平均シーク時間を減少させることができる。
【００５９】
以上のように本実施形態によれば、データを格納する際に適切な配置を行うことで、平均のシーク時間を短縮し、データ記憶装置からの読み出し速度、書き込み速度を向上し、データ記憶装置の性能を最大限利用することが可能となる。
【００６０】
また、上記実施形態のデータ配置決定部のアルゴリズムでは、記録面上の内側のセクタから格納する方法を取っているが、外側のセクタから格納する方法、途中のセクタから格納する方法なども考えられ、この場合は上記アルゴリズムにて、内側から検索する部分を外側から検索する、あるいは途中のセクタから検索する方法などに変更することで容易に実現可能である。
【００６１】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
【００６２】
図２に、本実施形態に係るデータ記憶装置におけるデータ管理部２０の構成を示す。
【００６３】
本実施形態のデータ管理部２０は、セクタ情報管理部２１、データ配置情報管理部２２、データ入出力制御部２３、データ配置決定部２４を備えている。
【００６４】
セクタ情報管理部２１は、データ記憶装置１０の各記録面上のセクタの使用状況を管理する部分である。使用状況の管理としては、（１）図３に示すように、各セクタに対応したビットマップを持ち、使用されているセクタについてはビットを立て、使用されていないセクタについてはビットを下ろす方法、あるいは（２）図４に示すように、記録面１６上の各セクタに一意に定まる識別子を割り当て、使用しているセクタに対応する識別子の範囲を保持した表を用意して管理する方法、などが考えられる。
【００６５】
セクタ情報管理部２１は、要求に応じて、記録面１６上の基準位置から一定方向に見た最初の未使用のセクタ番号と、現在未使用のセクタ数に関する情報とを返す機能を持つ。前者の情報については、例えば、記録面１６の空いているセクタ番号のうち最も内側のものを返す。あるいは、最も外側のものでも良いし、中心部より内側あるいは外側に見て最も中心部に近い空きセクタ番号でも良い。また、予め決められた番号のパーティション（後述）内で最も内側の空きセクタ番号を返すなどとしても良い。なお以下では前者の情報として、最も内側の空いているセクタ番号を返すものとする。また、基準位置
データ配置情報管理部２２は、各データがデータ記憶装置１０の記録面１６のどのセクタに格納されているか記録したデータ・セクタ対応情報を管理している。その管理方法としては、例えば図５に示すように、各データに対しそれぞれ使用している開始セクタと終了セクタの組を表として持つ方法が考えられる。
【００６６】
このデータ・セクタ対応情報は、データ入出力制御部２３がデータ格納要求を受けた際に起動されたデータ配置決定部２４により更新される。そして、データ入出力制御部２３がデータ読出要求を受けた際に参照される。
【００６７】
データ入出力制御部２３は、データ記憶装置１０に対する入出力要求の処理、および格納要求（入力要求）の際には、データ配置決定部２４を起動して配置位置を決定し、データ記憶制置１０のデータ記憶制御部１３に対して、適切な位置のセクタにデータが書かれるよう制御を行う。
【００６８】
データ配置決定部２４は、データ入出力制御部２３から起動され、データ入出力制御部２３からの指示に従い、格納すべきデータを記録面１６上のどの位置のセクタに格納するかを決定し、決定した情報をデータ入出力制御部２３に返す。格納すべきデータのサイズが入力情報となり、データを格納していくセクタの順序を指示するセクタリストが出力情報となる。データ配置決定部２４の返すセクタリストは、格納する順序にセクタ番号を並べたフォーマット、あるいは図６に示すように開始セクタ番号と終了セクタ番号の組で構成したフォーマットなどが考えられる。ただし、データサイズが大きく、空きディスクに格納できない場合には、格納不能という応答を出力情報とする。
【００６９】
また、データ配置決定部２４は、予め所定の分割数とディスクの記録面１６上の位置に依存した読み出し速度、書き込み速度情報に基づき、分割された記録面とその領域に書き込むときのブロックサイズに関する換算表を保持する。図１３に分割数がｎのときのこの換算表のフォーマット例を示す。以後、分割された記録面上の領域をパーティションと呼ぶことにする。
【００７０】
この換算表は、ディスクの仕様と所定のブロックサイズを基に、計算して求めることも可能である。例えば、記録面１６の内周部が最も読み出し速度、書き込み速度が遅く、外周部が最も読み出し速度、書き込み速度が速いものとし、内周部の読み出し速度をＶｍｉｎ、外周部の読み出し速度をＶｍａｘとする。分割数がＮ、内周部のブロックサイズをＢとして、パーティションＫ（最内周部をＫ＝０とする）のブロックサイズＢｋは、
Ｂｋ＝Ｂ×（１＋Ｋ×（Ｖｍａｘ−Ｖｍｉｎ）／（Ｎ×Ｖｍｉｎ））
などとして求めることができる。
【００７１】
各パーティションに格納可能なデータブロック数が等しくなるように各パーティションのブロックサイズを決めて分割すると、格納する際のアルゴリズムが単純になる。
【００７２】
なお、図２のデータ管理装置２０では、読み書きされるデータは、データ入出力制御部２３を介して外部とデータ記憶装置１０との間で受渡しされるものとする。
【００７３】
図１４〜図１６にデータ配置決定部２４の動作アルゴリズムを示す。このアルゴリズムは、各パーティションに格納可能なデータブロック数は等しくなるよう、分割数と読み出し速度、書き込み速度に基づいてブロックサイズを決定し、換算表を作成してあるものとする。また、データ記憶装置１０は記録面１６の内周部の読み出し速度、書き込み速度が遅く、記録面１６の外周部の読み出し速度、書き込み速度が速いものとする。
【００７４】
まず、初期化処理として、基準となるブロックサイズと分割数を設定し（ステップＳ８０１）、ディスクの容量と読み出し速度あるいは書き込み速度と基準となるブロックサイズと分割数から、分割して出来るパーティション毎のブロックサイズと格納するデータ間隔の換算表を作る（ステップＳ８０２）。
【００７５】
データ入出力制御部２３から起動されるのを待ち（ステップＳ８０３）、起動されたら、セクタ情報管理部２１に問い合わせ、未使用のセクタ数を得、この値から未使用のディスク容量を求める（ステップＳ８０４）。格納すべきデータサイズと未使用のディスク容量を比較し（ステップＳ８１０）、格納すべきデータサイズの方が大きい場合には、格納不能の応答を返し（ステップＳ８９０）、ステップＳ８０３に戻る。
【００７６】
ステップＳ８１０において、格納すべきデータサイズが未使用のディスク容量以下の場合には、データ配置情報管理部２２に問い合わせ、最も内側の未使用のセクタ番号を求め（ステップＳ８１０）、それを開始セクタ番号にセットする（ステップＳ８１２）。返すセクタリストを空に初期化し（ステップＳ８１６）、残りデータサイズを格納すべきデータサイズにセットする（ステップＳ８１４）。
【００７７】
ここで、残りデータサイズが０以下であるかどうかを調べ（ステップＳ８３０）、残りデータサイズが０以下でない場合には、データ配置情報管理部２２に問い合わせ、開始セクタ番号から始まる連続した未使用領域のセクタ数を求め（ステップＳ８３１）、換算表より開始セクタが属するパーティションとブロックサイズと格納するデータ間隔のセクタ数を求める（ステップＳ８３２）。
【００７８】
次に、連続した未使用領域のセクタ数とブロックサイズのセクタ数を比較し（ステップＳ８５０）、連続した未使用領域のセクタ数がブロックサイズのセクタ数より少ない場合には、ブロックサイズに
連続した未使用領域のセクタ数×セクタサイズ
をセットする（ステップＳ８５１）。
【００７９】
そして、終了セクタ番号に
開始セクタ番号＋ブロックサイズのセクタ数
をセットし（ステップＳ８５２）、開始セクタ番号、終了セクタ番号の組を返すリストに追加する（ステップＳ８５３）。
【００８０】
次に、セクタ情報管理部２１の情報を更新し（ステップＳ８５４）、データ配置情報管理部２２の情報を更新し（ステップＳ８５５）、残りデータサイズに、
現在の残りデータサイズ−ブロックサイズ
をセットする（ステップＳ８５６）。
【００８１】
ここで、開始セクタが最外周部のパーティションにあるかどうかを調べ（ステップＳ８７０）、最外周部のパーティションにある場合には、データ配置情報管理部２２に問い合わせ、最も内側の未使用のセクタ番号を求め（ステップＳ８７１）、開始セクタ番号にセットし（ステップＳ８７２）、ステップＳ８３０に戻る。
【００８２】
一方、ステップＳ８７０において、開始セクタが最外周部のパーティションにない場合には、開始セクタ番号に、
現在の開始セクタ番号＋格納するデータ間隔のセクタ数
をセットし（ステップＳ８７３）、ステップＳ８３０に戻る。
【００８３】
以上の手順を繰り返し、ステップＳ８３０で、残りデータサイズが０以下である場合には、セクタリストをデータ入出力制御部２３に返し（ステップＳ８８６）、ステップＳ８０３に戻る。
【００８４】
以上がデータ管理装置２０のデータ配置部２４の動作である。
【００８５】
上記のようにしてデータ配置部２４からセクタリストを渡されたデータ入出力制御部２３は、データ記憶制置１０のデータ記憶制御部１３に対して、格納要求されたデータをセクタリストで指示されるセクタに格納するよう制御を行う。
【００８６】
図１７に、データＡを８つのブロックＡ０  〜Ａ７  に分割して配置し、次にデータＢを８つのブロックＢ０  〜Ｂ７  に分割して配置した後の記録面１６の状況の一例を示す。記録面１６が複数存在する場合でも、データ記憶装置１０の外部から見れば論理的には、１枚の記録面１６が存在する場合と同様に考えて良い。データＡとデータＢは夫々連続した領域ではなく記録面１６上の離散した領域に格納されているため、データＡとデータＢの読出しが同時に要求され、例えばデータＡとデータＢの読出しがブロック単位に交互に行われる場合でも、ヘッドの移動量は小さく抑えられ、平均シーク時間を減少させることができる。さらに、格納位置におけるアクセス速度に応じたサイズで各ブロックを配置しているので、データの読み出しや書き込みにかかる時間を格納位置によらずほぼ一定にし、安定したスループットを得ることができる。
【００８７】
以上のように本実施形態によれば、データを格納する際に適切な配置を行うことで、平均のシーク時間を短縮し、データ記憶装置からの読み出し速度、書き込み速度を向上し、かつデータの読み出し時間、書き込み時間を一定にし、データ記憶装置の性能を最大限利用することが可能となる。
【００８８】
また、上記実施形態のデータ配置決定部のアルゴリズムでは、記録面上の内側のセクタから格納する方法を取っているが、外側のセクタから格納する方法、途中のセクタから格納する方法なども考えられ、この場合は上記アルゴリズムにて、内側から検索する部分を外側から検索する、あるいは途中のセクタから検索する方法などに変更することで容易に実現可能である。
【００８９】
以上の第１、第２の実施形態では、複数のデータを格納するにあたって、各データの配置を逐次決定する手順（データ配置決定部のアルゴリズム）を示した。例えば、図１２や図１７では、まず、データＡの配置を決定し、その後に、データＢの配置を決定するものであった。その代わりに、複数のデータの配置を同時に決定するように手順を修正することも可能である。
【００９０】
また、以上の第１、第２の実施形態では、データ管理装置２０に１台のデータ記憶装置１０を接続する構成をもとに説明を行ったが、図１８に示すようにデータ管理装置２０に複数のデータ記憶装置１０を接続することも可能である。この場合、データ管理装置２０のセクタ情報管理部２１、データ配置情報管理部２２およびデータ配置決定部２４は、データ記憶装置１０ごとに必要な情報を管理し、データ入出力制御部２３は、必要なデータ記憶装置１０に対し入出力制御を行うようにすれば良い。
【００９１】
第１及び第２の実施形態は、ビデオ・オン・デマンド（ＶＯＤ）システムにおけるビデオサーバ装置のように一纏まりのデータを提供するデータサーバ装置に適用することが可能である。
【００９２】
図１９に、第１又は第２の実施形態を適用するビデオサーバ装置の一構成例を示す。ビデオサーバ装置は、概略的には、要求元端末からビデオデータ配信の要求が随時与えられ、複数の映画等のビデオデータを格納するデータ記憶装置から要求されたものを読み出し、夫々の要求元端末に対して時間に同期しながらリアルタイムに連続的にデータを送り出すものである。
【００９３】
図１９において、ユーザあるいはアプリケーションプログラムによって発せられたビデオデータへのアクセス要求が、プロセス間通信やネットワークを経由した通信等によって送られてくる。このアクセス要求は、通信制御装置７０６からバス７２０を介して中央制御装置７１０に伝えられ、受理される。中央制御装置７１０は、要求されたビデオデータの読み出しを必要なデータ記憶制御装置７０４に伝える。データ記憶制御装置７０４は、指示されたビデオデータをデータ記憶装置７０２から読み出して、バッファ記憶装置７０８に書き込む。中央制御装置７１０は、バッファ記憶装置７０８上のデータの送り出しを通信制御装置７０６に指示する。通信制御装置７０６は、アクセス要求にて指定された転送先に対し、ビデオデータを送り出す。中央制御装置７１０は、基本的には、制御手順を記述したプログラムをＣＰＵで実行することにより構成される。
【００９４】
一方、データ記憶装置１０にデータを格納する場合、データ記憶制御装置３４に書き込み要求と書き込むべきデータを渡して、データ記憶制御装置３４から所定のデータ記憶装置１０にデータを格納させる。
【００９５】
以上のような構成のビデオサーバ装置のデータ記憶制御装置３４内に、第１若しくは第２の実施形態のデータ管理装置２０（図２又は図１８）を設けることにより、各データ記憶装置１０の記録面に、第１若しくは第２の実施形態で説明したような配置でデータを格納させることができる。
【００９６】
データ管理装置２０は、中央制御装置３０内に設けても構わない。
【００９７】
なお、図１９の構成はビデオサーバ装置の一例であり、本発明は種々の構成を持つビデオサーバ装置に適用可能である。また、ビデオデータを扱うビデオサーバ装置だけでなく、一纏まりのデータを扱う他のデータサーバ装置にも適用可能である。
【００９８】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【００９９】
【発明の効果】
本発明によれば、データを複数のデータブロックに分割して記録面上の離散した領域に配置させることにより、複数のデータに対して所定のアクセス単位に、例えばデータブロック単位に、順番にアクセスする状況が発生しても、シーク時間によるオーバヘッドが最大になる状況が連続することを回避し、平均のシーク時間を減少させることが可能となる。
【０１００】
また、データ記憶装置の記録面上の位置に依存して読み出し速度、書き込み速度が変化する場合には、記録面上の読み出し速度、書き込み速度が速い部分には大きいサイズに分割したブロックデータを、記録面上の読み出し速度、書き込み速度が遅い部分には小さいサイズに分割したブロックデータを格納することにより、安定したスループットを得ることが可能になるとともに、平均のシーク時間を減少させることが可能になり、データ記憶装置の性能を最大限に利用することができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るデータ記憶システムの基本構成の一例を示す図
【図２】データ管理装置の構成例を示す図
【図３】セクタの使用状況を管理する方法の一例を示す図
【図４】セクタの使用状況を管理する方法の他の例を示す図
【図５】データ配置情報管理部が管理するデータ・セクタ対応情報のフォーマットの一例を示す図
【図６】データ配置決定部が返すセクタリストのフォーマットの一例を示す図
【図７】データ配置決定部の動作例を示すフローチャート
【図８】データ配置決定部の動作例を示すフローチャート
【図９】データ配置決定部の動作例を示すフローチャート
【図１０】データ配置決定部の動作例を示すフローチャート
【図１１】データ配置決定部の動作例を示すフローチャート
【図１２】記録面上にデータを配置／格納した結果の一例を示す図
【図１３】データ配置決定部が保持するセクタ番号とブロックサイズと格納するデータ間隔のセクタ数の換算表のフォーマットの一例を示す図
【図１４】データ配置決定部の動作例を示すフローチャート
【図１５】データ配置決定部の動作例を示すフローチャート
【図１６】データ配置決定部の動作例を示すフローチャート
【図１７】記録面上にデータを配置／格納した結果の一例を示す図
【図１８】本発明の実施形態に係るデータ記憶システムの基本構成の他の例を示す図
【図１９】本発明をビデオサーバ装置に適用した例を示す図
【符号の説明】
１０…データ記憶装置
１１…ディスク状記録媒体
１２…ヘッド
１３…データ記憶制御部
１４…モータ
１５…アクチュエータ
１６…記録面
２０…データ管理部
２１…セクタ情報管理部
２２…データ配置情報管理部
２３…データ入出力制御部
２４…データ配置決定部
【図１】
0003561083.tif 000002
【図２】
0003561083.tif 000003
【図３】
0003561083.tif 000004
【図４】
0003561083.tif 000005
【図５】
0003561083.tif 000006
【図６】
0003561083.tif 000007
【図７】
0003561083.tif 000008
【図８】
0003561083.tif 000009
【図９】
0003561083.tif 000010
【図１０】
0003561083.tif 000011
【図１１】
0003561083.tif 000012
【図１２】
0003561083.tif 000013
【図１３】
0003561083.tif 000014
【図１４】
0003561083.tif 000015
【図１５】
0003561083.tif 000016
【図１６】
0003561083.tif 000017
【図１７】
0003561083.tif 000018
【図１８】
0003561083.tif 000019
【図１９】
0003561083.tif 000020