(57)【特許請求の範囲】
【請求項１】
第１ブロック単位で記憶領域を管理する第１ＦＡＴおよび前記第１ブロック単位より大きいサイズの第２ブロック単位で記憶領域を管理する第２ＦＡＴに対応づけられているデータ領域と、
前記データ領域を複数のサブ領域に分割し、各サブ領域を前記第１ＦＡＴまたは前記第２ＦＡＴのどちらで使用しているかを示す管理情報と、前記第１ＦＡＴおよび前記第２ＦＡＴと、を備えるシステム領域と、
を記憶する記憶手段と、
前記データ領域にファイルを書き込む際に、前記管理情報に基づいて前記第１ＦＡＴまたは前記第２ＦＡＴの一方をサーチすることによって空き領域を探索し、サーチしたＦＡＴのブロック単位で前記ファイルのデータを記憶する制御手段と
を有し、
前記制御手段は、前記第１ブロック単位または前記第２ブロック単位で使用するサブ領域の記憶容量が不足すると、未使用のサブ領域の少なくとも一部を、前記第１ＦＡＴまたは前記第２ＦＡＴに割り当てて使用することを特徴とするデータ記憶装置。
【請求項２】
前記制御手段は、前記記憶手段の備えるディスクの内周側に位置するサブ領域を前記第１ＦＡＴに割り当て、前記記憶手段の備えるディスクの外周側に位置するサブ領域を前記第２ＦＡＴに割り当てることを特徴とする請求項１に記載のデータ記憶装置。
【請求項３】
前記制御手段は、前記第１ＦＡＴで使用するサブ領域のなかで前記記憶手段の備えるディスクの最外周に位置するサブ領域、または、前記第２ＦＡＴで使用するサブ領域のなかで前記記憶手段の備えるディスクの最内周に位置するサブ領域から、データが削除された場合に、当該データが削除されたサブ領域の管理情報を、未使用を示す内容に変更することを特徴とする請求項２に記載のデータ記憶装置。
【請求項４】
前記第１ＦＡＴで使用するサブ領域のうち、前記記憶手段の備えるディスクのなかで、より内周側にデータを記憶していないサブ領域が存在する場合に、前記第１ＦＡＴで使用しているサブ領域のうちの前記記憶手段の備えるディスクの最外周に位置するサブ領域に記憶してあるデータを当該内周側に位置するサブ領域に移動させる第１のデータ移動手段を更に有することを特徴とする請求項１乃至３のいずれか１項に記載のデータ記憶装置。
【請求項５】
前記第２ＦＡＴで使用するサブ領域のうち、前記記憶手段の備えるディスクのなかで、より外周側にデータを記憶していないサブ領域が存在する場合に、前記第２ＦＡＴで使用しているサブ領域のうちの前記記憶手段の備えるディスクの最内周に位置するサブ領域に記憶してあるデータを当該外周側に位置するサブ領域に移動させる第２のデータ移動手段を更に有することを特徴とする請求項１乃至４のいずれか１項に記載のデータ記憶装置。
【請求項６】
前記記憶手段はハードディスクドライブであることを特徴とする請求項１乃至５のいずれか１項に記載のデータ記憶装置。
【請求項７】
前記記憶手段は、前記第１ＦＡＴと対応する第１ディレクトリエントリと、前記第２ＦＡＴと対応する第２ディレクトリエントリと、を前記システム領域にさらに保持していることを特徴とする請求項１乃至６のいずれか１項に記載のデータ記憶装置。
【請求項８】
第１ブロック単位で記憶領域を管理する第１ＦＡＴおよび前記第１ブロック単位より大きいサイズの第２ブロック単位で記憶領域を管理する第２ＦＡＴに対応づけられているデータ領域と、
前記データ領域を複数のサブ領域に分割し、各サブ領域を前記第１ＦＡＴまたは前記第２ＦＡＴのどちらで使用しているかを示す管理情報と、前記第１ＦＡＴおよび前記第２ＦＡＴと、を備えるシステム領域と、
を記憶する記憶工程と、
前記データ領域にファイルを書き込む際に、前記管理情報に基づいて前記第１ＦＡＴまたは前記第２ＦＡＴの一方をサーチすることによって空き領域を探索し、サーチしたＦＡＴのブロック単位で前記ファイルのデータを記憶する制御ステップと
を有し、
前記制御ステップにおいて、前記第１ブロック単位または前記第２ブロック単位で使用するサブ領域の記憶容量が不足すると、未使用のサブ領域の少なくとも一部を、前記第１ＦＡＴまたは前記第２ＦＡＴに割り当てて使用することを特徴とするデータ記憶方法。
【請求項９】
記憶装置を備えるコンピュータを、
第１ブロック単位で記憶領域を管理する第１ＦＡＴおよび前記第１ブロック単位より大きいサイズの第２ブロック単位で記憶領域を管理する第２ＦＡＴに対応づけられているデータ領域と、
前記データ領域を複数のサブ領域に分割し、各サブ領域を前記第１ＦＡＴまたは前記第２ＦＡＴのどちらで使用しているかを示す管理情報と、前記第１ＦＡＴおよび前記第２ＦＡＴと、を備えるシステム領域と、
を記憶する記憶手段と、
前記データ領域にファイルを書き込む際に、前記管理情報に基づいて前記第１ＦＡＴまたは前記第２ＦＡＴの一方をサーチすることによって空き領域を探索し、サーチしたＦＡＴのブロック単位で前記ファイルのデータを記憶し、前記第１ブロック単位または前記第２ブロック単位で使用するサブ領域の記憶容量が不足すると、未使用のサブ領域の少なくとも一部を、前記第１ＦＡＴまたは前記第２ＦＡＴに割り当てて使用する制御手段として機能させるためのコンピュータ読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶媒体のデータ記憶領域にデータを記憶するデータ記憶装置及びデータ記憶方法、並びに、当該データ記憶方法をコンピュータに実行させるためのプログラムに関するものである。
【背景技術】
【０００２】
近年、動画映像データや音声データなどを従来のテープメディアに代えて、ハードディスクドライブに記憶するデータ記憶装置が広く普及しつつある。このハードディスクドライブは、ランダムアクセス性に優れているため、所望のコンテンツを瞬時に再生したり、記録のための空き領域を速やかに探し出したりすることができるなど、従来のテープメディアにはない使い勝手の良さを有している。
【０００３】
また、パーソナルコンピュータ等の情報処理装置においても、チューナーやコーデック（ＣＯＤＥＣ）ＬＳＩを搭載して、動画映像データ等を内蔵／外付けのハードディスクドライブに記憶する機能を備えた機種が多数市販されている。
【０００４】
ところで、動画映像データ等は連続的なデータであり、単にデータが誤りなく記憶媒体上に記憶されるだけでは十分でなく、時間軸上の記録・再生速度、即ちデータの転送速度が所定値以上に維持される必要がある。
【０００５】
ここで、ハードディスクドライブは、記憶媒体上の物理的に連続した記憶領域に対するアクセスでは、高速のデータ転送を実現できる。その一方で、ハードディスクドライブは、分散された記憶領域に対するアクセスでは、ヘッドシーク時間や回転待ち時間といった実質的にはデータ転送に寄与しない動作期間が増大することから、低速のデータ転送しか得られないという特性を有している。
【０００６】
また、例えば、ハードディスクドライブに記憶したデータは、ファイルシステムによりファイル単位でのアクセスが可能となる。しかしながら、どのようなファイルシステムを採用しても記憶データの削除・更新を繰り返せば、記憶領域の断片化（フラグメンテーション）が引き起こされ、１つのファイルを連続した記憶領域に記憶することができなくなる。このことは結果として、ハードディスクドライブに対するデータ転送速度を低下させることとなり、動画映像データ等の記録・再生にとっては極めて都合が悪い。
【０００７】
高速なデータ転送を実現するための１つの方法としては、例えば、下記の特許文献１に記載されているように、アクセスの単位であるブロック（クラスタ）のサイズを大きくすることが考えられる。この場合、ブロックのサイズを大きくしても記憶領域の断片化が完全に無くなるわけではないが、記憶領域の断片化はブロック単位でしか起こらないことから記憶領域の断片化の度合が相対的に小さく（少なく）なり、結果としてデータ転送速度の低下は低減される。
【０００８】
しかしながら、ファイルシステムでは、上述したブロックサイズ単位でデータを取り扱う。このため、ブロックサイズ未満のデータを記憶した場合、ブロック内に未使用領域（クラスタギャップ）が発生する。そして、この際、上述したブロックサイズを大きくすると、今度は、記憶媒体の使用効率が低下するという別の問題が発生する。この問題は、データサイズの大きい動画映像データファイルや音声データファイル（以下、動画映像データ等ファイル）と、データサイズの小さい文字データファイルや管理データファイル（以下、文字データ等ファイル）を混在して取り扱う場合に特に顕著となる。特に、文字データ等ファイルの数が増加すればするほど、記憶媒体の使用効率が大きく低下してしまう。
【０００９】
動画映像データ等ファイルと文字データ等ファイルを混在して取り扱う場合における記憶媒体容量の使用効率の低下に対処する最も簡単な方法の１つは、例えば、下記の特許文献１にも記載されている。具体的に、記憶媒体を２つの領域（例えばパーティション）に分け、それぞれの領域でのアクセスブロックサイズ（クラスタサイズ）を違えるようにしている。即ち、動画映像データ等ファイルの記録と文字データ等ファイルの記録とで、それぞれアクセスブロックサイズの異なる専用の領域を設定するようにしている。さらに、領域を分けるのではなく同一の領域を使用しつつも、動画映像データ等ファイルと文字データ等ファイルとで、アクセスブロックサイズを違える方法も提案されている。
【００１０】
具体例を挙げると、小さいファイルについては所定のブロックを単位とし、大きいファイルについては連続した複数個のブロック（大ブロック）を単位として記録するものがある。また、データの属性（リアルタイムデータ／非リアルタイムデータ）によって記憶単位（ユニットとブロック）を切り換えることや、非リアルタイムデータの記憶について既に一部のブロックが使用されているユニット内の残余のブロックに優先して行うものがある。また、記録するデータの性質に応じて、基本ブロックと基本ブロックが分割されたサブブロックとを記憶単位として選択して使用するもの等がそれぞれ提案されている（例えば、特許文献１、特許文献２、特許文献３参照）。
【００１１】
【特許文献１】特開２０００−３３９８６８号公報
【特許文献２】特開２００４−５４２３号公報
【特許文献３】特開２００４−１３２７６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述した記憶媒体を２つの領域（パーティション）に分ける方法では、それぞれの記憶領域の大きさをディスク初期化時に固定的に設定する必要があり、運用後にそれぞれの大きさを動的に変更することが容易にできない。したがって、データ記憶装置を使用していく過程で、一方の記憶領域にはまだ十分な空き領域が存在するのに、他方の記憶領域には空き領域が存在しない状態が起こりうる。つまり、この場合、記憶媒体容量の使用効率の低下に対処するために記憶領域を分けたにもかかわらず、結局は使用できない記憶領域を残したまま新たなデータを記録できないという事態に陥ってしまう可能性がある。
【００１３】
また、上述した各特許文献に開示されている技術は、例えば、大アクセスブロックでのアクセスを基本としながら、データの属性・性質等に応じて、当該大アクセスブロックを複数に分割した小アクセスブロックでアクセスするようにしたものである。これらの方法であれば、動画映像データ等ファイルと文字データ等ファイル、それぞれの合計の容量には事前の制限はなく、記憶媒体の記憶容量全体を使い切るまでどちらのファイルも自由に記憶させることが可能となる。
【００１４】
ところがこのようなデータの記憶方法では、動画映像データ等ファイルで使用される部分と文字データ等ファイルで使用される部分は、完全に混じり合った状態となる。この場合、記憶媒体上のある部分が動画映像データ等ファイルで使用されるか、文字データ等ファイルで使用されるかは全くの偶然であり、あるアクセスブロックに対する次のチェーンブロックは必ずしも近傍に配置されるとは限らない。特に、文字データ等ファイルは、通常、巨大なサイズを有する動画映像データ等ファイルの合間の部分に、大きく離散して配置されることが予想される。
【００１５】
動画映像データ等ファイルは、大アクセスブロックを使用しているため、１つのファイルを構成するブロック間がどのように離散してもデータ転送速度の低下を所定の範囲内に納めることが可能である。
【００１６】
しかしながら、文字データ等ファイルは、小アクセスブロックを使用しているため、１つのファイルを構成するブロック間が大きく離散していると、データ転送速度は著しく低下する。そして、文字データ等ファイルは、データ転送速度が遅くなったとしても、データ記憶装置全体の動作そのものを不能とするわけではない。但し、データ転送速度が遅くなればデータ記憶装置全体のレスポンスが低下することになり、ユーザに不用意な待ち時間を与えるなどの可能性があるため、なるべく高速にアクセスできるに越したことはない。
【００１７】
さらに、空き領域を検索する場合にも問題がある。
アクセスブロックの大きさに関らず、そのブロックが使用されているか否かを管理するためには、何らかの管理テーブルが用いられる。通常、空き領域は、この管理テーブルをサーチすることで行われるのであるが、この管理テーブルは、アクセスブロックをアドレス順に並べたサマリーである。したがって、次の空いているチェーンブロックを検索する場合には、そのブロックが近傍に存在している方がより高速に検索することが可能となる。つまり、上述したように、小アクセスブロックを大きく離散した状態でしか配置できないのであれば、データ転送速度が低下するだけでなく、空き領域の検索にもより時間を費やしてしまうことになる。
【００１８】
本発明は上述した問題点に鑑みてなされたものであり、動画映像データ等の大容量データを高速に記憶すると共に、文字データ等の小容量データを使用効率よく記憶することを実現できるようにすることを目的とする。
【課題を解決するための手段】
【００１９】
上述した課題を解決するために本発明は、  第１ブロック単位で記憶領域を管理する第１ＦＡＴおよび前記第１ブロック単位より大きいサイズの第２ブロック単位で記憶領域を管理する第２ＦＡＴに対応づけられているデータ領域と、
前記データ領域を複数のサブ領域に分割し、各サブ領域を前記第１ＦＡＴまたは前記第２ＦＡＴのどちらで使用しているかを示す管理情報と、前記第１ＦＡＴおよび前記第２ＦＡＴと、を備えるシステム領域と、
を記憶する記憶手段と、
前記データ領域にファイルを書き込む際に、前記管理情報に基づいて前記第１ＦＡＴまたは前記第２ＦＡＴの一方をサーチすることによって空き領域を探索し、サーチしたＦＡＴのブロック単位で前記ファイルのデータを記憶する制御手段と
を有し、
前記制御手段は、前記第１ブロック単位または前記第２ブロック単位で使用するサブ領域の記憶容量が不足すると、未使用のサブ領域の少なくとも一部を、前記第１ＦＡＴまたは前記第２ＦＡＴに割り当てて使用することを特徴とする。
【発明の効果】
【００２０】
本発明によれば、動画映像データ等の大容量データを高速に記憶すると共に、文字データ等の小容量データを使用効率よく記憶することが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、添付図面を参照しながら本発明を実施するための最良の形態について説明する。
【００２２】
（第１の実施形態）
図１は、本発明の実施形態に係るデータ記憶装置を含むデータ記憶システムの概略構成の一例を示すブロック図である。
図１に示すデータ記憶システムは、データ記憶装置１００と、映像機器２００と、モニタ装置３００を有して構成されている。
【００２３】
データ記憶装置１００は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ネットワークコントローラ（ＮＩＣ）１０４と、外部機器接続インターフェース１０５を有して構成されている。さらに、データ記憶装置１００は、デコーダ１０６と、ディスクコントローラ１０７と、ハードディスクドライブ（ＨＤＤ）１０８と、グラフィック・サウンドコントローラ１０９と、バス１１０を有して構成されている。
【００２４】
ＣＰＵ１０１は、バス１１０に接続される各構成部（デバイスやコントローラ）を制御して、データ記憶装置１００全体を統括的に制御するものである。ＲＯＭ１０２には、ＣＰＵ１０１の動作プログラムや各種テーブルデータ等が格納されている。ＲＡＭ１０３は、ＣＰＵ１０１の動作メモリとして使用されるほか、バス１１０に接続される各構成部の間で行われるデータ転送のバッファメモリとしても使用される。
【００２５】
ネットワークコントローラ（ＮＩＣ）１０４は、データ記憶装置１００をローカル・エリア・ネットワーク（ＬＡＮ）に接続するための制御を行うものである。外部機器接続インターフェース１０５は、当該データ記憶装置１００を映像機器２００に対して、例えばＵＳＢやＩＥＥＥ１３９４等により接続するための制御を行うものである。ここで、映像機器２００としては、例えば、デジタルビデオカメラやデジタルスチルカメラ等が挙げられる。
【００２６】
デコーダ１０６は、圧縮された映像データや音声データを伸長するためのものである。ディスクコントローラ１０７は、ハードディスクドライブ（ＨＤＤ）１０８の動作を制御するものである。ハードディスクドライブ（ＨＤＤ）１０８は、各種の情報や各種のデータを記憶する記憶媒体である。グラフィック・サウンドコントローラ１０９は、デコーダ１０６で伸長された映像データや音声データを外部に接続されたモニタ装置３００に出力する制御を行うものである。
【００２７】
データ記憶装置１００では、例えば、ＬＡＮ経由で転送されたデータ、或いは外部機器接続インターフェース１０５を介して接続された映像機器２００から出力された映像データや音声データを、ＨＤＤ１０８に記憶（即ち録画・録音）する。この際、ＨＤＤ１０８に記憶される映像データや音声データは、通常、ＭＰＥＧ、ＪＰＥＧ等の周知のフォーマットで圧縮されている。デコーダ１０６は、例えば、ＨＤＤ１０８に圧縮されて記憶されている映像データや音声データを伸長する処理を行う。そして、デコーダ１０６で伸長された映像データや音声データは、グラフィック・サウンドコントローラ１０９を介してモニタ装置３００に出力される。
【００２８】
以上の構成によりデータ記憶装置１００は、ＨＤＤ１０８に記憶した映像データや音声データをモニタ装置３００に出力する録画・再生装置として機能する。また、データ記憶装置１００は、ネットワークストレージサーバとしての機能も有しており、ＬＡＮ上に接続されたパーソナルコンピュータ（ＰＣ）等の情報処理装置に対するネットワークストレージとしても機能する。したがって、ＨＤＤ１０８に記憶されるデータには、映像データや音声データだけでなく、一般のＰＣ文書等（文字データや各種のＰＣアプリケーションで作成した文書データなど）も含まれる。
【００２９】
次に、図２〜図５を用いて、ＨＤＤ１０８の論理的な構成（ＦＡＴ、クラスタ、領域の区分等）について説明する。
【００３０】
図２は、図１に示すＨＤＤ１０８のフォーマット状態の一例を示す模式図である。
ＨＤＤ１０８のデータ記憶領域は、図２に示すように、大きく２つに区分されており、ＨＤＤ１０８上の外周側にシステム領域、内周側にデータ領域が割り当てられている。
【００３１】
データ記憶領域は、所定のクラスタ単位でデータのアクセスが行われる。この際、本実施形態においては、大きさの異なる２つのクラスタサイズ（サブ領域）を用いる。例えば、本実施形態における第１のブロック単位は３２Ｋバイトで構成され、第２のブロック単位は４Ｍバイトで構成されている。即ち、映像データや音声データ等のリアルタイム性を要求されるデータは４Ｍバイトのクラスタを使用して記憶され、それ以外のリアルタイム性を要求されないデータは３２Ｋバイトのクラスタを使用して記憶される。つまり、本実施形態では、記憶データの種別ないしは容量に応じて、第１ブロック単位または第２ブロック単位でデータを記憶する。
【００３２】
図２において、システム領域内の第１ＦＡＴ２０１及び第１ディレクトリエントリ２０２は、第１のクラスタサイズ（第１のブロック単位：３２Ｋバイト）でのアクセスで使用されるエントリである。第１ＦＡＴ２０１には、第１のクラスタサイズ（第１のブロック単位：３２Ｋバイト）でのアロケーションテーブルが記憶される。
【００３３】
また、第２ＦＡＴ２０３及び第２ディレクトリエントリ２０４は、第２のクラスタサイズ（第２のブロック単位：４Ｍバイト）でのアクセスで使用されるエントリである。第２ＦＡＴ２０３には、第２のクラスタサイズ（第２のブロック単位：４Ｍバイト）でのアロケーションテーブルが記憶される。
【００３４】
第１ＦＡＴ２０１及び第２ＦＡＴ２０３は、ファイルを構成するクラスタのアロケーションテーブルであり、１つのファイルが構成される複数のクラスタのチェーン情報（次のクラスタ番号）が記憶される。
【００３５】
図３は、図２に示す第１ＦＡＴ２０１及び第２ＦＡＴ２０３におけるＦＡＴ値の具体例を示す模式図である。具体的に、図３（ａ）に第１ＦＡＴ２０１におけるＦＡＴ値の具体例を示し、図３（ｂ）に第２ＦＡＴ２０３におけるＦＡＴ値の具体例を示す。
【００３６】
図３（ａ）及び図３（ｂ）に示すように、第１ＦＡＴ２０１及び第２ＦＡＴ２０３には、チェーン情報以外に、未使用クラスタ、使用不可クラスタ、ＭＡＸアドレス（最外周のＬＢＡ）を越えて位置するクラスタ、欠陥クラスタ、ファイルの終端が定義されている。
【００３７】
図２に示す第１ディレクトリエントリ２０２及び第２ディレクトリエントリ２０４には、ファイルのファイル名（パス情報を含む）と、当該ファイルの最初のクラスタ番号が記憶される。
【００３８】
上述したＦＡＴとディレクトリエントリにより、記憶データは、「ファイル」という単位で取り扱うことが可能となる。
【００３９】
図２に示すデータ領域は、最外周から最内周に向かって順に、０〜ｎのデータサブエリア２０６（０）〜２０６（ｎ）に分割されていて、それぞれのデータサブエリア（データサブ領域）ごとに、第１ＦＡＴ２０１、第２ＦＡＴ２０３のいずれかで使用される。この際、あるデータサブエリアをどちらのＦＡＴで使用するかは、システム領域内のサブエリア管理テーブル２０５によって管理する。即ち、このサブエリア管理テーブル２０５では、データ領域の一部のデータサブエリアまたは全部のデータサブエリアを、第１ブロック単位もしくは第２ブロック単位で使用するように管理する。
【００４０】
図４は、図２に示すサブエリア管理テーブル２０５の構造の一例を示す模式図である。
図４に示すように、サブエリア管理テーブル２０５には、１つのデータサブエリアにつき１０バイトが割り当てられている。このうち、先頭の２バイトがデータサブエリアのサブエリア番号とその使用区分であり、次の４バイトが当該データサブエリアの開始ＬＢＡ（論理セクタアドレス）、最後の４バイトが当該データサブエリアの終了ＬＢＡである。
【００４１】
ある番号のクラスタがどのデータサブエリアに属するかは、データ領域の開始ＬＢＡ、データサブエリアの開始及び終了ＬＢＡ、第１及び第２のクラスタサイズ、個々のデータサブエリアの大きさから容易に計算することができる。もちろん、始めからＬＢＡに代えてクラスタ番号を記憶しておく形態でもよい。但し、本実施形態においては、第１ＦＡＴ２０１及び第２ＦＡＴ２０３の２つのＦＡＴを使用する。
【００４２】
よって、本実施形態では、同一の記憶領域に対してクラスタ番号は、第１ＦＡＴ２０１と第２ＦＡＴ２０３とでそれぞれ１つずつ開始クラスタ番号及び終了クラスタ番号を記憶しておく必要がある。
【００４３】
また、図４に示すように、先頭の２バイトは、その内部が１４ビット及び２ビットに分かれており、このうち、最初の１４ビットがデータサブエリアのサブエリア番号であり、次の２ビットがその使用区分である。また、使用区分は、「０１ｂ」が第１ＦＡＴ２０１で使用されていることを示し、「１０ｂ」が第２ＦＡＴ２０３で使用されていることを示し、「００ｂ」（または「１１ｂ」）がどちらのＦＡＴにも使用されていないことを示している。
【００４４】
即ち、サブエリア管理テーブル２０５は、個々のデータサブエリア（サブ領域）における使用区分を、第１ＦＡＴ２０１で使用するサブ領域と、第２ＦＡＴ２０３で使用するサブ領域と、どちらにも未使用のサブ領域とに区分して管理するものである。このサブエリア管理テーブル２０５は、ＣＰＵ１０１によって管理され、サブエリア管理テーブル２０５の管理を行うＣＰＵ１０１は、サブ領域管理手段を構成する。
【００４５】
また、ＣＰＵ１０１は、第１ＦＡＴ２０１で使用するサブ領域または第２ＦＡＴ２０３で使用するサブ領域が不足したときに、未使用のサブ領域の一部または全部を、第１ＦＡＴ２０１または第２ＦＡＴ２０３で使用するサブ領域に変更する管理を行う。
【００４６】
さらに、ＣＰＵ１０１は、サブエリア管理テーブル２０５による管理に基づいて、個々のデータサブエリア（サブ領域）ごとに、第１ＦＡＴ２０１または第２ＦＡＴ２０３のいずれか一方のＦＡＴでのみ記憶データを記憶する制御を行う。この制御を行うＣＰＵ１０１は、記憶制御手段を構成する。
【００４７】
図５は、図２に示す個々のデータサブエリアの大きさを１２８Ｍバイトとした場合のデータ領域全体の様子を示す模式図である。
【００４８】
図５に示すように、ＨＤＤ１０８のデータ領域は、
クラスタサイズが３２Ｋバイトの｛４０９６×（ｎ＋１）｝個のクラスタと、
クラスタサイズが４Ｍバイトの｛３２×（ｎ＋１）｝個のクラスタ
に分割される。ここで、ｎは、ＨＤＤ１０８の総容量に依存し、例えば、４０ＧバイトのＨＤＤ１０８の場合は、ｎ＝約３００となる。
つまり、１つのデータサブエリアには、
クラスタサイズが３２Ｋバイトの４０９６個のクラスタと、
クラスタサイズが４Ｍバイトの３２個のクラスタ
が存在する。
【００４９】
なお、上述した第１及び第２のクラスタサイズ、データサブエリアの具体的な大きさ（バイト数）は一例であり、適宜変更可能であることは言うまでもない。
【００５０】
はじめにＨＤＤ１０８を初期化する時に、本実施形態では、ＣＰＵ１０１は、データサブエリア０（２０６（０））が第２ＦＡＴ２０３で使用され、データサブエリアｎ（２０６（ｎ））が第１ＦＡＴ２０１で使用されるように割り当てを行う。即ち、ＣＰＵ１０１は、記憶媒体であるＨＤＤ１０８の内周側に位置するサブ領域（データサブエリア）を第１ＦＡＴ２０１で使用するサブ領域とし、ＨＤＤ１０８の外周側に位置するサブ領域を第２ＦＡＴ２０３で使用するサブ領域とするようにしている。また、その他のデータサブエリア１（２０６（１））〜データサブエリアｎ−１（２０６（ｎ−１））は、どちらのＦＡＴでも使用されていない状態である。
【００５１】
この際、第１ＦＡＴ２０１で使用されるデータサブエリアｎ（２０６（ｎ））に属するクラスタにだけ、ＦＡＴ値として図３（ａ）に示す「ＦＦＦ８ｈ（未使用クラスタ）」が記録される。また、それ以外のデータサブエリア０（２０６（０））〜データサブエリアｎ−１（２０６（ｎ−１））に属するクラスタには、ＦＡＴ値として図３（ａ）に示す「ＦＦＦＣｈ（使用不可クラスタ）」が記録される。
【００５２】
同様に、第２ＦＡＴ２０３で使用されるデータサブエリア０に属するクラスタにだけ、ＦＡＴ値として図３（ｂ）に示す「ＦＦ８ｈ（未使用クラスタ）」が記録される。また、それ以外のデータサブエリア１（２０６（１））〜データサブエリアｎ（２０６（ｎ））に属するクラスタには、ＦＡＴ値として図３（ｂ）に示す「ＦＦＣｈ（使用不可クラスタ）」が記録される。
【００５３】
そして、データを記憶していって割り当てられたデータサブエリアを消費すると、次順のデータサブエリアが割り当てられる。具体的に、第２ＦＡＴ２０３で使用するデータサブエリアとしては、データサブエリア１、２、３、…の順でデータサブエリア割り当てが行われる。また、第１ＦＡＴ２０１で使用するデータサブエリアとしては、データサブエリアｎ−１、ｎ−２、ｎ−３、…の順で割り当てが行われる。但し、次順のデータサブエリアが他方のＦＡＴで既に使用されている場合には、当該データサブエリアに未使用クラスタが存在するか否かに関らず割り当ては行われない。
【００５４】
次に、図６〜図８のフローチャートを用いて、第１の実施形態に係るデータ記憶装置１００の処理手順について説明する。
【００５５】
図６は、本発明の第１の実施形態に係るデータ記憶装置のＨＤＤ１０８における初期化時の処理手順の一例を示すフローチャートである。
【００５６】
物理フォーマットが終了した後、まず、ステップＳ１０１において、ＣＰＵ１０１は、図２に示すＨＤＤ１０８のシステム領域とデータ領域の大きさを計算する。このステップＳ１０１では、具体的に、ＣＰＵ１０１は、ＨＤＤ１０８の総容量、第１のクラスタサイズ、第２のクラスタサイズ及びデータサブエリアの大きさから、それぞれ、システム領域とデータ領域の大きさを計算する。
【００５７】
続いて、ステップＳ１０２において、ＣＰＵ１０１は、システム領域内にサブエリア管理テーブル２０５を作成する。この際、図４で説明した使用区分については、データサブエリア０を「１０ｂ（第２ＦＡＴで使用）」、データサブエリア１〜ｎ−１を「００ｂ或いは１１ｂ（未使用エリア）」、データサブエリアｎを「０１ｂ（第１ＦＡＴで使用）」として設定する。
【００５８】
続いて、ステップＳ１０３において、ＣＰＵ１０１は、システム領域内に第１ＦＡＴ２０１を作成する。この際、個々のクラスタに対するＦＡＴ値については、データサブエリアｎに属する部分を「ＦＦＦ８ｈ（未使用クラスタ）」、それ以外のデータサブエリアに属する部分を「８８８Ｃｈ（使用不可クラスタ）」として設定する。
【００５９】
続いて、ステップＳ１０４において、ＣＰＵ１０１は、第１ディレクトリエントリ２０２にルートディレクトリを作成する。
【００６０】
続いて、ステップＳ１０５において、ＣＰＵ１０１は、システム領域内に第２ＦＡＴ２０３を作成する。この際、個々のクラスタに対するＦＡＴ値については、データサブエリア０に属する部分を「ＦＦ８ｈ（未使用クラスタ）」、それ以外のデータサブエリアに属する部分を「ＦＦＣｈ（使用不可クラスタ）」として設定する。
【００６１】
続いて、ステップＳ１０６において、ＣＰＵ１０１は、第２ディレクトリエントリ２０４にルートディレクトリを作成する。その後、当該フローチャートにおける処理を終了する。
【００６２】
図７−１及び図７−２は、本発明の第１の実施形態に係るデータ記憶装置のデータ書き込み処理の処理手順の一例を示すフローチャートである。
【００６３】
まず、図７−１のステップＳ２０１において、ＣＰＵ１０１は、書き込むべきデータの種別がどのようなものであるかについて判断する。本実施形態においては、ステップＳ２０１では、書き込むべきデータが、リアルタイム性を要求するストリームデータであるか、或いは、リアルタイム性を要求しない非ストリームデータであるかを判断する。具体的に、ＣＰＵ１０１は、書き込むべきデータにおけるファイル名の拡張子を参照することにより、ストリームデータであるか非ストリームデータであるかを判断する。
【００６４】
ＣＰＵ１０１は、ファイル名の拡張子が例えば「ｍｐｇ」、「ｍｐｖ」、「ｍｏｖ」、「ｍｖ」、「ｑｔｌ」、「ｑｔ」、「ａｖｉ」、「ａｓｆ」、「ａｓｘ」、「ｖｆｍ」、「ｗｍｖ」等の動画ファイルを示すものである場合には、ストリームデータと判断する。そして、ＣＰＵ１０１は、ファイル名の拡張子が上述した以外の拡張子の場合には、非ストリームデータと判断する。なお、その他、ファイル名の拡張子とファイルサイズを組み合わせて判断するようにしてもよい。
【００６５】
この場合、例えば、事前にファイルサイズが判明していて、そのファイルサイズが３２Ｋバイト未満である場合には、ストリームデータであっても非ストリームデータとして取り扱うようにしてもよい。また、事前にファイルサイズが判明していて、そのファイルサイズが３２Ｋバイトを大きく越える場合には、非ストリームデータであってもストリームデータとして取り扱うようにしてもよい。
【００６６】
ステップＳ２０１の判断の結果、書き込むべきデータが非ストリームデータである場合には、ステップＳ２０２に進む。ステップＳ２０２に進むと、ＣＰＵ１０１は、第１ＦＡＴ２０１をサーチ（検索処理）する。この際、サーチを行う範囲は、第１ＦＡＴ２０１が現在使用しているデータサブエリアに属するクラスタだけとする。
【００６７】
続いて、ステップＳ２０３において、ＣＰＵ１０１は、ステップＳ２０２で第１ＦＡＴ２０１をサーチした結果、未使用クラスタがあるか否かを判断する。
【００６８】
ステップＳ２０３の判断の結果、未使用クラスタが存在する場合には、ステップＳ２０４に進む。ステップＳ２０４に進むと、ＣＰＵ１０１は、当該未使用クラスタに対して、３２Ｋバイト分のデータの書き込みを行う。
【００６９】
続いて、ステップＳ２０５において、ＣＰＵ１０１は、ステップＳ２０４で書き込みを行ったクラスタと、当該クラスタのＦＡＴ値にチェーン情報を記録して、第１ＦＡＴ２０１を更新する。この際、書き込みを行ったクラスタのＦＡＴ値は、とりあえず、図３（ａ）に示す「ＦＦＦＦｈ（ファイルの終端（ＥＯＦ））」として設定しておく。
【００７０】
続いて、ステップＳ２０６において、ＣＰＵ１０１は、書き込むべきファイルの全てのデータについてファイル書き込み処理を終了したか否かを判断する。この判断の結果、書き込むべきファイルの全てのデータについては、未だ書き込み処理が終了していない場合には、ステップＳ２０２に戻り、未だ書き込み処理が終了していないデータの処理が行われる。
【００７１】
一方、ステップＳ２０６の判断の結果、書き込むべきファイルの全てのデータについてファイル書き込み処理を終了した場合には、ステップＳ２０７に進む。ステップＳ２０７に進むと、ＣＰＵ１０１は、書き込みを行ったファイル（データ）の情報を第１ディレクトリエントリ２０２に追記（または変更）して、第１ディレクトリエントリ２０２を更新する。その後、当該フローチャートにおける処理を終了する。
【００７２】
一方、ステップＳ２０３の判断の結果、未使用クラスタが存在しない場合には、ステップＳ２０８に進む。ステップＳ２０８に進むと、ＣＰＵ１０１は、現在、第１ＦＡＴ２０１で使用している最小番号のデータサブエリアにおける次順のデータサブエリアの使用が可能か否かを判断する。即ち、ステップＳ２０８では、当該次順のデータサブエリアが第２ＦＡＴ２０３で使用されてないか否かに応じて、当該次順のデータサブエリアの使用が可能か否かを判断することになる。
【００７３】
ステップＳ２０８の判断の結果、現在、第１ＦＡＴ２０１で使用している最小番号のデータサブエリアにおける次順のデータサブエリアの使用が可能である場合には、ステップＳ２０９に進む。ステップＳ２０９に進むと、ＣＰＵ１０１は、図４に示すサブエリア管理テーブル２０５の使用区分を更新する。具体的に、ＣＰＵ１０１は、当該次順のデータサブエリアの使用区分を「０１ｂ（第１ＦＡＴで使用）」と設定する。
【００７４】
続いて、ステップＳ２１０において、ＣＰＵ１０１は、第１ＦＡＴ２０１の当該次順のデータサブエリアに属するクラスタのＦＡＴ値を、「ＦＦＦＣｈ（使用不可クラスタ）」から「ＦＦＦ８ｈ（未使用クラスタ）」に変更して、第１ＦＡＴ２０１を更新する。その後、ステップＳ２０２に戻って、ステップＳ２０２以降の処理を行う。
【００７５】
一方、ステップＳ２０８の判断の結果、現在、第１ＦＡＴ２０１で使用している最小番号のデータサブエリアにおける次順のデータサブエリアの使用が不可能である場合には、ステップＳ２１１に進む。ステップＳ２１１に進むと、ＣＰＵ１０１は、書き込むべきデータの書き込みを行えなかった場合のエラー処理を実行する。その後、当該フローチャートにおける処理を終了する。
【００７６】
一方、ステップＳ２０１の判断の結果、書き込むべきデータがストリームデータである場合には、図７−２のステップＳ２１２に進む。ステップＳ２１２に進むと、ＣＰＵ１０１は、第２ＦＡＴ２０３をサーチ（検索処理）する。この際、サーチを行う範囲は、第２ＦＡＴ２０３が現在使用しているデータサブエリアに属するクラスタだけとする。
【００７７】
続いて、ステップＳ２１３において、ＣＰＵ１０１は、ステップＳ２１２で第２ＦＡＴ２０３をサーチした結果、未使用クラスタがあるか否かを判断する。
【００７８】
ステップＳ２１３の判断の結果、未使用クラスタが存在する場合には、ステップＳ２１４に進む。ステップＳ２１４に進むと、ＣＰＵ１０１は、当該未使用クラスタに対して、４Ｍバイト分のデータの書き込みを行う。
【００７９】
続いて、ステップＳ２１５において、ＣＰＵ１０１は、ステップＳ２１４で書き込みを行ったクラスタと、それに連結するクラスタのＦＡＴ値にチェーン情報を記録して、第２ＦＡＴ２０３を更新する。この際、書き込みを行ったクラスタのＦＡＴ値は、とりあえず、図３（ｂ）に示す「ＦＦＦｈ（ファイルの終端（ＥＯＦ））」として設定しておく。
【００８０】
続いて、ステップＳ２１６において、ＣＰＵ１０１は、書き込むべきファイルの全てのデータについてファイル書き込み処理を終了したか否かを判断する。この判断の結果、書き込むべきファイルの全てのデータについては、未だ書き込み処理が終了していない場合には、ステップＳ２１２に戻り、未だ書き込み処理が終了していないデータの処理が行われる。
【００８１】
一方、ステップＳ２１６の判断の結果、書き込むべきファイルの全てのデータについてファイル書き込み処理を終了した場合には、ステップＳ２１７に進む。ステップＳ２１７に進むと、ＣＰＵ１０１は、書き込みを行ったファイル（データ）の情報を第２ディレクトリエントリ２０４に追記（または変更）して、第２ディレクトリエントリ２０４を更新する。その後、当該フローチャートにおける処理を終了する。
【００８２】
一方、ステップＳ２１３の判断の結果、未使用クラスタが存在しない場合には、ステップＳ２１８に進む。ステップＳ２１８に進むと、ＣＰＵ１０１は、現在、第２ＦＡＴ２０３で使用している最大番号のデータサブエリアにおける次順のデータサブエリアの使用が可能か否かを判断する。即ち、ステップＳ２１８では、当該次順のデータサブエリアが第１ＦＡＴ２０１で使用されてないか否かに応じて、当該次順のデータサブエリアの使用が可能か否かを判断することになる。
【００８３】
ステップＳ２１８の判断の結果、現在、第２ＦＡＴ２０３で使用している最大番号のデータサブエリアにおける次順のデータサブエリアの使用が可能である場合には、ステップＳ２１９に進む。ステップＳ２１９に進むと、ＣＰＵ１０１は、図４に示すサブエリア管理テーブル２０５の使用区分を更新する。具体的に、ＣＰＵ１０１は、当該次順のデータサブエリアの使用区分を「１０ｂ（第２ＦＡＴで使用）」と設定する。
【００８４】
続いて、ステップＳ２２０において、ＣＰＵ１０１は、第２ＦＡＴ２０３の当該次順のデータサブエリアに属するクラスタのＦＡＴ値を、「ＦＦＣｈ（使用不可クラスタ）」から「ＦＦ８ｈ（未使用クラスタ）」に変更して、第２ＦＡＴ２０３を更新する。その後、ステップＳ２１２に戻って、ステップＳ２１２以降の処理を行う。
【００８５】
一方、ステップＳ２１８の判断の結果、現在、第２ＦＡＴ２０３で使用している最大番号のデータサブエリアにおける次順のデータサブエリアの使用が不可能である場合には、ステップＳ２２１に進む。ステップＳ２２１に進むと、ＣＰＵ１０１は、書き込むべきデータの書き込みを行えなかった場合のエラー処理を実行する。その後、当該フローチャートにおける処理を終了する。
【００８６】
なお、ファイルを読み込む場合及びファイルを削除する場合の処理手順については、特に図示しないが、周知のとおり、ファイルの読み込みについては、ＦＡＴを参照してチェーンクラスタを順次読み込めばよい。また、ファイルの削除については、当該ファイルのデータを記憶しているクラスタのＦＡＴ値を「未使用クラスタ」に更新するだけでよい。即ち、この場合、個々のクラスタ自身の記憶データを書き換えるのではなく、第１ＦＡＴ２０１または第２ＦＡＴ２０３の更新だけを行えば事足りる。
【００８７】
ところで、図７−１及び図７−２に示す例では、「未使用クラスタ」が不足するたびに、次順のデータサブエリアの使用区分をその都度、更新する方法を採っている。しかしながら、この場合、事前に書き込むべきファイルの大きさが１つのデータサブエリアより大きいと判明している場合は、隣接する複数のデータサブエリアの使用区分を一括して更新するようにしてもよい。
【００８８】
図８は、本発明の第１の実施形態に係るデータ記憶装置において、一旦割り当てられたデータサブエリアをリリースする際の処理手順の一例を示すフローチャートである。
図８に示すフローチャートは、ファイルを削除したり、ファイルを書き換え更新したりした際に開始される。或いは、バックグラウンドにおいて、所定のインターバル（所定のタイミング）で常時動作させておいてもよいし、ＨＤＤ１０８へ所定期間アクセスがなかった場合に開始するようにしてもよい。
【００８９】
まず、ステップＳ３０１において、ＣＰＵ１０１は、第１ＦＡＴ２０１で使用しているエリア番号が最小番号のデータサブエリア（但し、データサブエリアｎは除く）に属するクラスタをサーチ（検索処理）する。
【００９０】
続いて、ステップＳ３０２において、ＣＰＵ１０１は、ステップＳ３０１で第１ＦＡＴ２０１をサーチした結果、当該最小番号のデータサブエリアに使用クラスタが存在するか否かを判断する。
【００９１】
ステップＳ３０２の判断の結果、当該最小番号のデータサブエリアに使用クラスタが存在しない場合には、ステップＳ３０３に進む。ステップＳ３０３に進むと、ＣＰＵ１０１は、当該最小番号のデータサブエリアに属するクラスタのＦＡＴ値を「ＦＦＦ８ｈ（未使用クラスタ）」から「ＦＦＦＣｈ（使用不可クラスタ）」に変更して、第１ＦＡＴ２０１を更新する。
【００９２】
続いて、ステップＳ３０４において、ＣＰＵ１０１は、当該最小番号（エリア番号）のデータサブエリアの使用区分を「００ｂ或いは１１ｂ（未使用エリア）」にして、サブエリア管理テーブル２０５を更新する。
【００９３】
ステップＳ３０４の処理が終了した場合、或いは、ステップＳ３０２で当該最小番号のデータサブエリアに使用クラスタが存在すると判断された場合には、ステップＳ３０５に進む。
【００９４】
ステップＳ３０５に進むと、ＣＰＵ１０１は、第２ＦＡＴ２０３で使用しているエリア番号が最大番号のデータサブエリアに属するクラスタをサーチ（検索処理）する。
【００９５】
続いて、ステップＳ３０６において、ＣＰＵ１０１は、ステップＳ３０５で第２ＦＡＴ２０３をサーチした結果、当該最大番号のデータサブエリアに使用クラスタが存在するか否かを判断する。
【００９６】
ステップＳ３０６の判断の結果、当該最大番号のデータサブエリアに使用クラスタが存在しない場合には、ステップＳ３０７に進む。ステップＳ３０７に進むと、ＣＰＵ１０１は、当該最大番号のデータサブエリアに属するクラスタのＦＡＴ値を「ＦＦ８ｈ（未使用クラスタ）」から「ＦＦＣｈ（使用不可クラスタ）」に変更して、第２ＦＡＴ２０３を更新する。
【００９７】
続いて、ステップＳ３０８において、ＣＰＵ１０１は、当該最大番号（エリア番号）のデータサブエリアの使用区分を「００ｂ或いは１１ｂ（未使用エリア）」にして、サブエリア管理テーブル２０５を更新する。
【００９８】
図８に示す処理により、一旦データサブエリアの割り当てが行われても、ファイルの削除や更新などで使用クラスタが存在しなくなった場合には、再び、第１ＦＡＴ２０１及び第２ＦＡＴ２０３のいずれでも用いられていない未使用のデータサブエリアに復帰する。
【００９９】
以上説明してきたように、本実施形態では、図２に示すように、記憶媒体であるＨＤＤ１０８のデータ領域を複数のデータサブエリア１〜ｎに区分するようにしている。そして、小サイズのクラスタを使用する第１ＦＡＴ２０１での記憶は内周側から、また、大サイズのクラスタを使用する第２ＦＡＴ２０３での記憶は外周側から、データサブエリアを管理単位として順次記憶していくようにしている。この際、個々のデータサブエリア１〜ｎについて、第１ＦＡＴ２０１、第２ＦＡＴ２０３のどちらで使用するのかをサブエリア管理テーブル２０５で管理するようにしている。そして、個々のデータサブエリア１〜ｎについて、必要に応じて、順次、第１ＦＡＴ２０１、第２ＦＡＴ２０３のどちらかに排他的に割り当てる構成としている。このため、本実施形態では、両者の記憶領域を事前に固定的に定めておく必要が全くない。
【０１００】
また、記憶されるファイルは、第１ＦＡＴ２０１と第２ＦＡＴ２０３とで領域的に入り交じることがなく、また、それぞれが連続したアドレス（ＬＢＡ）のまとまった領域内に記憶されることになる。このため、例え、フラグメンテーションが発生したとしても、チェーンされるクラスタは比較的近傍に配置されることになり、結果としてヘッドシーク時間を比較的短くすることが可能となる。さらに、空き領域を検索する場合も、割り当てが行われているデータサブエリアはアドレスが連続した領域であるので、非常に高速に検索を行うことが可能である。
【０１０１】
（第２の実施形態）
上述した第１の実施形態では、第１ＦＡＴ２０１で使用しているエリア番号が最小番号のデータサブエリアに使用クラスタが全く存在しなくなったときに、当該最小番号のデータサブエリアを「未使用エリア」としてリリースするようにしている。同様に、第２ＦＡＴ２０３で使用しているエリア番号が最大番号のデータサブエリアに使用クラスタが全く存在しなくなったときに、当該最大番号のデータサブエリアを「未使用エリア」としてリリースするようにしている。
【０１０２】
しかしながら、ファイルを削除した場合などには、中間のエリア番号のデータサブエリアだけに使用クラスタが存在しなくなる場合も考えられる。この場合、当該データサブエリアを単純に「未使用エリア」としてリリースしてもよいが、以下の不都合も考えられる。即ち、本実施形態では、記憶されるファイルが第１ＦＡＴ２０１と第２ＦＡＴ２０３とで領域的に入り交じることなく、それぞれが連続したアドレスのまとまった領域内に記憶されるようにすることを考えるとこれでは都合が悪い。
【０１０３】
そこで、第２の実施形態では、中間のエリア番号のデータサブエリアだけに使用クラスタが存在しなくなるといったことが起きないように、次順のデータサブエリア内に記憶してあるデータを、適宜、先順のエリア番号のデータサブエリア内に移動するようにする。
【０１０４】
以下、図９−１〜図１０のフローチャートを用いて、第２の実施形態に係るデータ記憶装置１００の処理手順について説明する。なお、第２の実施形態に係るデータ記憶装置１００を含むデータ記憶システムの概略構成については、第１の実施形態と同様に、図１に示すものとなる。
【０１０５】
図９−１及び図９−２は、本発明の第２の実施形態に係るデータ記憶装置において、一旦割り当てられたデータサブエリアをリリースする際の処理手順の一例を示すフローチャートである。
【０１０６】
この図９−１及び図９−２に示すフローチャートは、第１の実施形態における図８に示すフローチャートを置き換えるものである。したがって、図９−１及び図９−２に示すフローチャートも、ファイルを削除したり、ファイルを書き換え更新したりした際に開始される。或いは、バックグラウンドにおいて、所定のインターバル（所定のタイミング）で常時動作させておいてもよいし、ＨＤＤ１０８へ所定期間アクセスがなかった場合に開始するようにしてもよい。
【０１０７】
まず、図９−１のステップＳ４０１において、ＣＰＵ１０１は、第１ＦＡＴ２０１をサーチ（検索処理）する。
【０１０８】
続いて、ステップＳ４０２において、ＣＰＵ１０１は、ステップＳ４０１で第１ＦＡＴ２０１をサーチした結果、エリア番号が最小番号のデータサブエリアより大きいエリア番号のデータサブエリアに未使用クラスタが存在するか否かを判断する。
【０１０９】
ステップＳ４０２の判断の結果、エリア番号が最小番号のデータサブエリアより大きいエリア番号のデータサブエリアに未使用クラスタが存在する場合には、ステップＳ４０３に進む。ステップＳ４０３に進むと、ＣＰＵ１０１は、ステップＳ４０１で第１ＦＡＴ２０１をサーチした結果、エリア番号が最小番号のデータサブエリアに使用クラスタが存在するか否かを判断する。
【０１１０】
ステップＳ４０３の判断の結果、エリア番号が最小番号のデータサブエリアに使用クラスタが存在する場合には、ステップＳ４０４に進む。ステップＳ４０４に進むと、ＣＰＵ１０１は、エリア番号が最小番号のデータサブエリア内の使用クラスタに記憶してあるデータを、ステップＳ４０２で判断した未使用クラスタに移動する。このステップＳ４０４の移動処理を行うＣＰＵ１０１は、第１のデータ移動手段を構成する。
【０１１１】
続いて、ステップＳ４０５において、ＣＰＵ１０１は、第１ＦＡＴ２０１を更新する。具体的に、ＣＰＵ１０１は、移動元のクラスタのＦＡＴ値を「ＦＦＦ８ｈ（未使用クラスタ）」とし、移動先のクラスタおよび移動するクラスタに連結するクラスタのＦＡＴ値に新たな「チェーン情報」を記憶して、第１ＦＡＴ２０１を更新する。この際、ＣＰＵ１０１は、第１ディレクトリエントリ２０２も更新する必要があれば併せて実行する。
【０１１２】
その後、ステップＳ４０２に戻り、ステップＳ４０２において未使用クラスタが存在しなくなるまで、或いは、ステップＳ４０３で使用クラスタが存在しなくなるまで、ステップＳ４０４及びＳ４０５を繰り返し実行する。
【０１１３】
一方、ステップＳ４０２の判断の結果、エリア番号が最小番号のデータサブエリアより大きいエリア番号のデータサブエリアに未使用クラスタが存在しない場合には、ステップＳ４０６に進む。ステップＳ４０６に進むと、ＣＰＵ１０１は、ステップＳ４０１で第１ＦＡＴ２０１をサーチした結果、エリア番号が最小番号のデータサブエリアより大きいエリア番号のデータサブエリアに使用クラスタが存在するか否かを判断する。
【０１１４】
ステップＳ４０６で最小番号より大きいエリア番号のデータサブエリアに使用クラスタが存在しないと判断された場合、或いは、ステップＳ４０３で最小番号のデータサブエリアに使用クラスタが存在しないと判断された場合には、ステップＳ４０７に進む。
【０１１５】
ステップＳ４０７に進むと、ＣＰＵ１０１は、第１ＦＡＴ２０１のエリア番号が最小番号のデータサブエリアに属するクラスタのＦＡＴ値を、「ＦＦＦ８ｈ（未使用クラスタ）」から「ＦＦＦＣｈ（使用不可クラスタ）」に変更して、第１ＦＡＴ２０１を更新する。
【０１１６】
続いて、ステップＳ４０８において、ＣＰＵ１０１は、当該最小番号（エリア番号）のデータサブエリアの使用区分を「００ｂ或いは１１ｂ（未使用エリア）」にして、サブエリア管理テーブル２０５を更新する。
【０１１７】
ステップＳ４０８の処理が終了した場合、或いは、ステップＳ４０６で最小番号より大きいエリア番号のデータサブエリアに使用クラスタが存在すると判断された場合には、図９−２のステップＳ４０９に進む。なお、ステップＳ４０６でエリア番号の最小番号がｎの場合は使用クラスタの有無に関りなく、ステップＳ４０８に進むことになる。
【０１１８】
続いて、ステップＳ４０９において、ＣＰＵ１０１は、第２ＦＡＴ２０３をサーチ（検索処理）する。
【０１１９】
続いて、ステップＳ４１０において、ＣＰＵ１０１は、ステップＳ４０９で第２ＦＡＴ２０３をサーチした結果、エリア番号が最大番号のデータサブエリアより小さいエリア番号のデータサブエリアに未使用クラスタが存在するか否かを判断する。
【０１２０】
ステップＳ４１０の判断の結果、エリア番号が最大番号のデータサブエリアより小さいエリア番号のデータサブエリアに未使用クラスタが存在する場合には、ステップＳ４１１に進む。ステップＳ４１１に進むと、ＣＰＵ１０１は、ステップＳ４０９で第２ＦＡＴ２０３をサーチした結果、エリア番号が最大番号のデータサブエリアに使用クラスタが存在するか否かを判断する。
【０１２１】
ステップＳ４１１の判断の結果、エリア番号が最大番号のデータサブエリアに使用クラスタが存在する場合には、ステップＳ４１２に進む。ステップＳ４１２に進むと、ＣＰＵ１０１は、エリア番号が最大番号のデータサブエリア内の使用クラスタに記憶してあるデータを、ステップＳ４１０で判断した未使用クラスタに移動する。このステップＳ４１２の移動処理を行うＣＰＵ１０１は、第２のデータ移動手段を構成する。
【０１２２】
続いて、ステップＳ４１３において、ＣＰＵ１０１は、第２ＦＡＴ２０３を更新する。具体的に、ＣＰＵ１０１は、移動元のクラスタのＦＡＴ値を「ＦＦ８ｈ（未使用クラスタ）」とし、移動先のクラスタおよび移動するクラスタに連結するクラスタのＦＡＴ値に新たな「チェーン情報」を記憶して、第２ＦＡＴ２０３を更新する。この際、ＣＰＵ１０１は、第２ディレクトリエントリ２０４も更新する必要があれば併せて実行する。
【０１２３】
その後、ステップＳ４１０に戻り、ステップＳ４１０において未使用クラスタが存在しなくなるまで、或いは、ステップＳ４１１で使用クラスタが存在しなくなるまで、ステップＳ４１２及びＳ４１３を繰り返し実行する。
【０１２４】
一方、ステップＳ４１０の判断の結果、エリア番号が最大番号のデータサブエリアより小さいエリア番号のデータサブエリアに未使用クラスタが存在しない場合には、ステップＳ４１４に進む。ステップＳ４１４に進むと、ＣＰＵ１０１は、ステップＳ４０９で第２ＦＡＴ２０３をサーチした結果、エリア番号が最大番号のデータサブエリアより小さいエリア番号のデータサブエリアに使用クラスタが存在するか否かを判断する。
【０１２５】
ステップＳ４１４で最大番号より小さいエリア番号のデータサブエリアに使用クラスタが存在しないと判断された場合、或いは、ステップＳ４１１で最大番号のデータサブエリアに使用クラスタが存在しないと判断された場合には、ステップＳ４１５に進む。
【０１２６】
ステップＳ４１５に進むと、ＣＰＵ１０１は、第２ＦＡＴ２０３のエリア番号が最大番号のデータサブエリアに属するクラスタのＦＡＴ値を、「ＦＦ８ｈ（未使用クラスタ）」から「ＦＦＣｈ（使用不可クラスタ）」に変更して、第２ＦＡＴ２０３を更新する。
【０１２７】
続いて、ステップＳ４１６において、ＣＰＵ１０１は、当該最大番号（エリア番号）のデータサブエリアの使用区分を「００ｂ或いは１１ｂ（未使用エリア）」にして、サブエリア管理テーブル２０５を更新する。
【０１２８】
ステップＳ４１６の処理が終了した場合、或いは、ステップＳ４１４で最大番号より小さいエリア番号のデータサブエリアに使用クラスタが存在すると判断された場合には、当該フローチャートにおける処理を終了する。なお、ステップＳ４１４でエリア番号の最大番号が０の場合は使用クラスタの有無に関りなく、当該フローチャートにおける処理を終了することになる。
【０１２９】
以上説明してきたように、本実施形態では、次順のデータサブエリア内に記憶してあるデータを、より先順のエリア番号のデータサブエリア内にある未使用クラスタに移動してから、データサブエリアのリリース処理を実施するようにしている。したがって、本実施形態では、中間のエリア番号のデータサブエリアだけに使用クラスタが存在しなくなるといったことが全く起きない。よって、本実施形態では、記憶されるファイルは、常に第１ＦＡＴ２０１と第２ＦＡＴ２０３とで領域的に入り交じることなく、それぞれが連続したアドレスのまとまった領域内に記憶されることになる。
【０１３０】
なお、以上の説明では、第２ＦＡＴ２０３は、大きいクラスタサイズ（４Ｍバイト）でデータを記憶するので、データの移動にも処理時間のかかることが予想される。そこで、図１０に示すように、第１ＦＡＴ２０１で使用するデータサブエリアについてだけデータの移動を行うようにしてもよい。
【０１３１】
図１０は、本発明の第２の実施形態に係るデータ記憶装置において、一旦割り当てられたデータサブエリアをリリースする際の処理手順の他の一例を示すフローチャートである。
【０１３２】
具体的に、図１０に示す処理では、まず、図９−１に示すステップＳ４０１〜ステップＳ４０８の処理を行う。その後、図８に示すステップＳ３０５に進み、ステップＳ３０５〜ステップＳ３０８の処理を行う。
【０１３３】
図１０に示す処理のように、第１ＦＡＴ２０１で使用するデータサブエリアについてだけデータの移動を行う場合であっても、文字データ等ファイルをなるべくまとまった範囲に配置しておくという、本発明の目的は十分に達成することができる。
【０１３４】
上述した各実施形態のデータ記憶装置１００によれば、動画映像データ等の大容量データを高速に記憶すると共に、文字データ等の小容量データを使用効率よく記憶することが可能となる。また、各実施形態のデータ記憶装置１００では、第１ＦＡＴ２０１及び第２ＦＡＴ２０３の各ブロックサイズで使用するデータサブエリアをなるべくまとまった範囲に配置することで、ファイルのデータ転送速度や空き領域検索速度の改善を図ることができる。また、各実施形態のデータ記憶装置１００では、特に、小容量の文字データ等ファイルの速度改善に優れた効果を発揮する。
【０１３５】
前述した本実施形態に係るデータ記憶装置１００を構成する図１の各構成部、並びに、当該データ記憶装置１００によるデータ記憶方法を示す図６〜図１０の各ステップは、ＣＰＵ１０１がＲＯＭ１０２に記憶されたプログラムを実行することによって実現できる。このプログラム及び当該プログラムを記録したコンピュータ読み取り可能な記憶媒体は本発明に含まれる。
【０１３６】
具体的に、前記プログラムは、例えばＣＤ−ＲＯＭのような記憶媒体に記録し、或いは各種伝送媒体を介し、コンピュータに提供される。前記プログラムを記録する記憶媒体としては、ＣＤ−ＲＯＭ以外に、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。他方、前記プログラムの伝送媒体としては、プログラム情報を搬送波として伝搬させて供給するためのコンピュータネットワーク（ＬＡＮ、インターネットの等のＷＡＮ、無線通信ネットワーク等）システムにおける通信媒体を用いることができる。また、この際の通信媒体としては、光ファイバ等の有線回線や無線回線などが挙げられる。
【０１３７】
また、本発明は、コンピュータが供給されたプログラムを実行することにより本実施形態に係るデータ記憶装置１００の機能が実現される態様に限られない。そのプログラムがコンピュータにおいて稼働しているＯＳ（オペレーティングシステム）或いは他のアプリケーションソフト等と共同して本実施形態に係るデータ記憶装置１００の機能が実現される場合も、かかるプログラムは本発明に含まれる。また、供給されたプログラムの処理の全て、或いは一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて本実施形態に係るデータ記憶装置１００の機能が実現される場合も、かかるプログラムは本発明に含まれる。
【０１３８】
また、前述した本実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【０１３９】
【図１】本発明の実施形態に係るデータ記憶装置を含むデータ記憶システムの概略構成の一例を示すブロック図である。
【図２】図１に示すＨＤＤのフォーマット状態の一例を示す模式図である。
【図３】図２に示す第１ＦＡＴ及び第２ＦＡＴにおけるＦＡＴ値の具体例を示す模式図である。
【図４】図２に示すサブエリア管理テーブルの構造の一例を示す模式図である。
【図５】図２に示す個々のデータサブエリアの大きさを１２８Ｍバイトとした場合のデータ領域全体の様子を示す模式図である。
【図６】本発明の第１の実施形態に係るデータ記憶装置のＨＤＤ１０８における初期化時の処理手順の一例を示すフローチャートである。
【図７−１】本発明の第１の実施形態に係るデータ記憶装置のデータ書き込み処理の処理手順の一例を示すフローチャートである。
【図７−２】図７−１に引き続き、本発明の第１の実施形態に係るデータ記憶装置のデータ書き込み処理の処理手順の一例を示すフローチャートである。
【図８】本発明の第１の実施形態に係るデータ記憶装置において、一旦割り当てられたデータサブエリアをリリースする際の処理手順の一例を示すフローチャートである。
【図９−１】本発明の第２の実施形態に係るデータ記憶装置において、一旦割り当てられたデータサブエリアをリリースする際の処理手順の一例を示すフローチャートである。
【図９−２】図９−１に引き続き、本発明の第２の実施形態に係るデータ記憶装置において、一旦割り当てられたデータサブエリアをリリースする際の処理手順の一例を示すフローチャートである。
【図１０】本発明の第２の実施形態に係るデータ記憶装置において、一旦割り当てられたデータサブエリアをリリースする際の処理手順の他の一例を示すフローチャートである。
【符号の説明】
【０１４０】
１００  データ記憶装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  ネットワークコントローラ（ＮＩＣ）
１０５  外部機器接続インターフェース
１０６  デコーダ
１０７  ディスクコントローラ
１０８  ハードディスクドライブ（ＨＤＤ）
１０９  グラフィック・サウンドコントローラ
１１０  バス
２００  映像機器
３００  モニタ装置
【図１】
0005335215.tif 000002
【図２】
0005335215.tif 000003
【図３】
0005335215.tif 000004
【図４】
0005335215.tif 000005
【図５】
0005335215.tif 000006
【図６】
0005335215.tif 000007
【図７−１】
0005335215.tif 000008
【図７−２】
0005335215.tif 000009
【図８】
0005335215.tif 000010
【図９−１】
0005335215.tif 000011
【図９−２】
0005335215.tif 000012
【図１０】
0005335215.tif 000013