(57)【要約】【課題】  デジタル映像音声データのように、大容量のストリームデータの読み出し、書き込みをリアルタイムで実行可能なファイル記録装置であり、しかも、サイズの小さなノーマルデータファイルも同時に効率良く扱うことができるファイルシステムおよびその制御方法を提供することを目的とするものである。【解決手段】  リアルタイムストリームデータを、所定の一定の時間間隔に相当するデータ単位に分割し、上記データ単位ごとに、連続ブロックになるようにブロック管理型記録装置に記録することによって、リアルタイムデータファイルを構成するリアルタイムデータファイル構成手段と、上記リアルタイムデータファイルを、リアルタイム読み出しする際に、上記連続ブロックについては、一斉に読み出すリアルタイムデータファイル読み出し手段とを有するファイルシステムである。【選択図】  図１
2005339262.tif 000002
【特許請求の範囲】
【請求項１】
ブロック管理型記録装置を利用し、リアルタイムストリームデータを記録するファイルシステムにおいて、
リアルタイムストリームデータを、所定の一定の時間間隔に相当するデータ単位に分割し、上記データ単位ごとに、連続ブロックになるようにブロック管理型記録装置に記録することによって、リアルタイムデータファイルを構成するリアルタイムデータファイル構成手段と；
上記リアルタイムデータファイルを、リアルタイム読み出しする際に、上記連続ブロックについては、一斉に読み出すリアルタイムデータファイル読み出し手段と；
を有することを特徴とするファイルシステム。
【請求項２】
請求項１において、
連続する所定数のブロックで構成されているクラスタを、基本記録単位とし、リアルタイムデータを記録する場合、少なくとも１つの連続クラスタを、記録単位とすることを特徴とするファイルシステム。
【請求項３】
請求項２において、
リアルタイム性の必要が無いファイルについては、上記連続クラスタへのアドレス列で、ファイル構成を記録し、
リアルタイム性のあるファイルについては、上記連続クラスタの先頭クラスタへのアドレスとその記録データサイズの組の列とによって、ファイル構成を記録し、その記録単位時間と上記記録データサイズ中の最大サイズとをファイルの特性として記録し、これら２つの特性の異なるファイルを、統一した管理情報形式で管理することを特徴とするファイルシステム。
【請求項４】
請求項３において、
リアルタイム性のあるファイルを入出力するに先立ち、その読み出しのリアルタイム性を保証できるか否かを、記録単位時間と記録単位データサイズとに基づいて判定し、読み出しのリアルタイム性を保証できない場合には、上記入出力を許可せず、入出力を許可した場合には、その入出力をスケジュール管理し、リアルタイム性のあるファイルの入出力を、リアルタイム性の無いファイルの入出力よりも優先することによって、入出力をスケジュール制御することを特徴とするファイルシステム。
【請求項５】
ブロック管理型記録装置を利用し、リアルタイムストリームデータを記録するファイルシステムの制御方法において、
リアルタイムストリームデータを、所定の一定の時間間隔に相当するデータ単位に分割し、上記データ単位ごとに、連続ブロックとなるようにブロック管理型記録装置に記録することによって、リアルタイムデータファイルを構成するリアルタイムデータファイル構成段階と；
上記リアルタイムデータファイルを、リアルタイム読み出しする際に、上記連続ブロックについては、一斉に読み出すリアルタイムデータファイル読み出し段階と；
を有することを特徴とするファイルシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルシステムおよびファイルシステムの制御方法に関し、特に、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）２トランスポートストリームのように、デジタル映像データやデジタル音声データ等、大容量で読出および書込にリアルタイム性が要求されるデータを、入出力可能なファイルシステムおよびファイルシステムの制御方法に関する。
【背景技術】
【０００２】
近年、ＭＰＥＧ１、ＭＰＥＧ２等のデジタル圧縮技術の標準化が進み、また、高性能なＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリおよびデータ蓄積媒体等を低価格で入手できる。よって、映像データや音声データをデジタル化して蓄積し、大容量のデジタルデータを処理するマルチメディア機器が数多く商品化されている。
【０００３】
このように、デジタル化された映像データや音声データを記録媒体に書き込み、記録媒体から読出す際に、コンピュータでデータを読み書きするのと同様に、ファイルシステムと呼ばれるファイル管理装置が、クラスタのアロケート、未使用クラスタの管理およびデータの一覧情報の管理等を行なう。
【０００４】
ファイルシステムでは、記録媒体のデータ領域を、１つまたは複数の特定の固定長サイズのクラスタに分割し、各クラスタの使用状況を管理するためのクラスタマップを持つ。クラスタの大きさは、一般的なコンピュータの場合、５１２バイト、２Ｋ、４Ｋバイトに設定されている（たとえば、特許文献１参照）。
【０００５】
これらのクラスタを単位に、記録媒体に記録再生する際に、記録媒体上のブロックと称する単位に基づいて、記録再生が行なわれる。
【０００６】
上記ブロックは、記録媒体毎に定められた固定長の記録再生の単位であり、ハードディスクの場合、５１２バイトであることが多い。このブロックへアクセスする場合、論理的なブロックに対応する番号（アドレス）に基づいてアクセスされる。ハードディスクでは、データの記録再生を行なう開始位置となるブロックのアドレスとブロック数とを指定することによって、指定したブロックを先頭に、連続ブロック数分のデータを転送することができる。
【０００７】
また、上記クラスタは、このブロックの整数倍で構成され、かつ、アドレスが連続するように割り当てられている。したがって、このようなファイルシステムでは、１つのクラスタについては、ブロックの連続性が保証されているので、入出力の単位は、このクラスタ単位で行なわれる（１クラスタずつの入出力を繰り返す）。
【０００８】
ただし、ファイルシステムでは、クラスタ単位で領域の確保を行なうので、ファイルの作成、削除を繰り返すうちに、その領域が断片化される。つまり、１つのファイルを構成するクラスタが、連続したクラスタとして確保されにくくなり、この結果、連続的にデータを転送することができなくなる。
【０００９】
ハードディスク等の円盤状の記録媒体では、連続的にデータの転送が行なわれない場合には、目的のブロック（セクタ）が含まれるシリンダ位置へ、ディスクのヘッドを移動するためのシーク時間と、目的のセクタがヘッド位置まで回転してくるまでの回転待ち時間とがオーバーヘッドになり、そのパフォーマンスが低下する。
【００１０】
このために、ファイルシステムでは、ディスクのパフォーマンスを上げる必要がある場合、大きなクラスタ、つまり１クラスタを構成するブロックの数を大きくする場合がある。このようにすることによって、たとえ断片化が生じても、１クラスタ分のブロックの連続性が保証されているので、多くのブロックを一度に入出力することができる。
【特許文献１】特開平５−２０４７２５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかし、このような大きなクラスタを使用した場合、たとえばデータサイズが１バイトのファイルを作成する場合でも、１つの大きなクラスタを占有し、使用済みクラスタになるので、実効使用効率が悪く、また入出力の際にも、１バイトデータを入出力するために、１クラスタ分の大量のデータを転送する必要が生じるので、処理効率が悪い。
【００１２】
このようなトレードオフは、データサイズの小さなファイルと、ＭＰＥＧ２データファイルに代表されるようなストリームデータファイルのように入出力のパフォーマンスが要求されるファイル等との両方を取り扱う必要がある装置の場合（パソコン等）、使用効率を優先するか、入出力パフォーマンスを優先するかを、選択する必要があるという問題がある。
【００１３】
また、従来のファイルシステムでは、複数のストリームデータファイルを同時に扱うことが、あまり考慮されていない。ある番組を記録しながら、既に記録した別の番組データを再生したり、番組を記録しながら再生するいわゆる追っかけ再生や、複数の番組データを同時に記録する場合等のように、複数のストリームデータファイルを扱う場合、パフォーマンスが落ちないように、アクセス順序を制御し、非同期に割り込んでくる通常ファイルの入出力に、リアルタイム性を妨げられないようにする工夫が必要であるという問題がある。
【００１４】
本発明は、デジタル映像音声データのように、大容量のストリームデータの読み出し、書き込みをリアルタイムで実行可能なファイル記録装置であり、しかも、サイズの小さなノーマルデータファイルも同時に効率良く扱うことができるファイルシステムおよびその制御方法を提供することを目的とするものである。
【００１５】
また、本発明は、領域の断片化を低減することができるファイルシステムおよびその制御方法を提供することを目的とするものである。
【課題を解決するための手段】
【００１６】
本発明は、ブロック管理型記録装置を利用し、リアルタイムストリームデータを記録するファイルシステムにおいて、リアルタイムストリームデータを、所定の一定の時間間隔に相当するデータ単位に分割し、上記データ単位ごとに、連続ブロックになるようにブロック管理型記録装置に記録することによって、リアルタイムデータファイルを構成するリアルタイムデータファイル構成手段と、上記リアルタイムデータファイルを、リアルタイム読み出しする際に、上記連続ブロックについては、一斉に読み出すリアルタイムデータファイル読み出し手段とを有するファイルシステムである。
【００１７】
また、本発明は、連続するいくつかのブロックで構成されるクラスタを基本記録単位とするファイルシステムであり、さらにリアルタイムデータの記録には、少なくとも１つ以上の連続クラスタを記録単位とするように構成されている。
【００１８】
さらに、本発明は、リアルタイム性の必要が無いファイルについては、上記クラスタへのアドレス列で、ファイル構成を記録し、リアルタイム性のあるファイルについては、上記連続クラスタの先頭クラスタへのアドレスおよびその記録データサイズの組の列によって、ファイル構成を記録し、さらにその記録単位時間および上記記録データサイズ中の最大サイズを、ファイルの特性として記録し、この２つの特性の異なるファイルを、統一した管理情報形式で管理するように構成されている。
【００１９】
そして、本発明は、リアルタイム性のあるファイルを入出力するに先立ち、その読み出しのリアルタイム性を保証できるか否かを記録単位時間および記録単位データサイズから判定し、保証できない場合には、上記入出力を許可せず、入出力を許可した場合には、その入出力をスケジュール管理し、リアルタイム性のあるファイルの入出力を、リアルタイム性の無いファイルの入出力よりも優先することによって、入出力をスケジュール制御するように構成されている。
【発明の効果】
【００２０】
本発明によれば、デジタル映像音声データのように、大容量のストリームデータの読み出し、書き込みをリアルタイムで実行可能であり、しかも、サイズの小さなノーマルデータファイルも同時に効率良く扱うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００２１】
発明を実施するための最良の形態は、次の実施例である。
【実施例１】
【００２２】
図１は、本発明の実施例１であるファイルシステム１０１の構成を示すブロック図である。
【００２３】
ファイルシステム１０１は、ファイル管理部１０２と、クラスタ管理部１０３と、スケジュール管理部１０４とを有し、ファイル記録装置上の様々なアプリケーションに対し、ファイルの入出力サービスを提供し、また、後述するディスク制御部１０５に対して、先頭ブロック番号とブロック数とを指定し、入出力の要求と実行とを行なう。
【００２４】
ファイル管理部１０２は、アプリケーションで使用するファイル名から、上記ファイルの識別情報エントリ、管理情報エントリを検索する機能を有し、また、該当するエントリが存在しない場合、新たに割り当てる機能を有する。さらに、管理情報エントリが解決した（検索成功、新規割り当て）ファイルには、アプリケーションとファイルシステムとの両者で、ファイルを判別するために用いるファイル識別子が割り当てられ、セッション表に登録され、以降のファイルの指定には、ファイル名ではなく、上記ファイル識別子が使用される。識別情報エントリ、管理情報エントリの詳細については、後述する。
【００２５】
クラスタは、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）内部の構成単位であるブロックの連続集合で構成され、ファイルシステム内では、ブロックではなく、クラスタが入出力の単位として使用される。クラスタ管理部１０３は、ＨＤＤ内部のどのクラスタアドレスのクラスタが使用済みであるか、未使用であるかを管理する（クラスタマップ）。また、ファイル作成時には、必要に応じて、未使用クラスタからクラスタを獲得し、作成ファイルに割り当て、上記ファイルの管理情報エントリに登録する。逆に、既に作成済みのファイルである場合、その管理情報エントリに登録されている情報から、割り当てられているクラスタを割り出す機能を有する。
【００２６】
スケジュール管理部１０４は、複数のアプリケーションからのＨＤＤの入出力を管理し、優先制御、スケジュールに合わせた入出力を制御する機能を有する。さらに、リアルタイムデータファイルのオープン時には、要求されたスケジュールで、ファイルの入出力が可能であるか否かを検証し、不可能である場合には、ファイルオープンを拒否し、可能である場合には、スケジュール管理表に登録する機能を有する。
【００２７】
ディスク制御部１０５は、ＨＤＤからのデータの読み込み、ＨＤＤへのデータの書き込みを行なう機能を有し、データの転送には、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を利用するようにしてもよい。
【００２８】
ＨＤＤ１０６は、各種データを記録する。
【００２９】
リアルタイムアプリケーション１０７は、たとえば、映像・音楽閲覧アプリケーション、配信サービス等がある。一般には、リアルタイムデータファイルを取り扱い、定期的に大量のストリームデータを入出力するという特徴がある。
【００３０】
非リアルタイムアプリケーション１０８は、たとえば、テキストエディタ、ファイル転送アプリケーション等であり、一般には、非同期にファイルの入出力を発生する。
【００３１】
図２は、ＨＤＤ１０６の内部の論理的な構成を示す図である。
【００３２】
ＨＤＤの内部の論理的な構成は、スーパーブロック２０１、管理情報領域２０２、データ領域２０３の３つの領域で構成されている。
【００３３】
スーパーブロック２０１は、ＨＤＤ１０６に論理的に構成されているファイルシステムの特徴が格納されている。この特徴は、管理情報エントリ数、クラスタ数等である。
【００３４】
管理情報領域２０２は、管理情報エントリの集合であり、管理情報エントリは、後述するが、１つの管理情報エントリで、１つのファイルまたはディレクトリの情報を、管理、保持する。したがって、後述のデータ領域２０３に空きがあっても、管理情報エントリ数以上のファイル、ディレクトリの作成は、不可能である。管理情報エントリには、番号１〜Ｎの管理情報エントリ番号が付与されている。
【００３５】
データ領域２０３は、クラスタの集合であり、データ領域のクラスタは、その使用目的によって、次のように分類することができる。
・ファイルを構成するデータの一部または全部を直接保持する直接データクラスタ、
・上記直接データクラスタへのアドレスの集合を保持する間接データクラスタ、
・上記間接データクラスタへのアドレスの集合を保持する二重間接データクラスタ、
・ディレクトリ中に存在するファイルや、子ディレクトリの名前、それぞれに対応する管理情報エントリ番号を保持するディレクトリクラスタ、
上記各クラスタのそれぞれの詳細については、後述する。
【００３６】
また、データ領域の全クラスタは、上記クラスタ管理部１０３によって、どのクラスタがどの用途で使用されているのか、使用されていないのかをマップ化し、管理されている（クラスタマップ）。さらに、クラスタマップには、どのクラスタが、どの管理情報エントリに属しているのか、そのファイルのタイプ（リアルタイムデータかノーマルデータか）も合わせて記録されている。
【００３７】
次に、管理情報エントリの内容について説明する。
【００３８】
管理情報エントリには、リアルタイムデータファイル用と、ノーマルデータファイル用との２種類が存在し、それらは、ファイル作成時に指定される。管理情報エントリは、固定長のエントリであり、一般には、クラスタサイズよりも小さく、１クラスタ中には、複数エントリを記録することができる。したがって、効率よくファイルやディレクトリを管理することができる。
【００３９】
図３は、管理情報エントリを示す図である。
【００４０】
管理情報エントリは、ノーマルデータファイルの管理情報エントリ３０１と、リアルタイムデータファイルの管理情報エントリ３０２とによって構成されている。
【００４１】
管理情報エントリ３０１、３０２には、両者の共通フィールド３０３〜３１０、３１３、３１４と、互いに異なるフィールド３１１、３１２とが設けられている。
【００４２】
管理情報エントリ番号３０３は、ＨＤＤ中の管理情報領域において、何番目のエントリであるかを示す。スーパーブロック内に保持されている管理情報エントリ数の範囲内の番号が記録される。
【００４３】
ファイルタイプフィールド３０４は、「ノーマルデータファイル」であるか、「リアルタイムデータファイル」であるか、「ディレクトリ」であるかを示す。
【００４４】
所有者フィールド３０５は、ファイルの所有者、アクセス権等の情報が記録される。
【００４５】
ファイルサイズフィールド３０６は、ファイルサイズが記録される。
【００４６】
作成・更新時刻フィールド３０７は、ファイルが作成された、または最後に更新された時刻が記録される。
【００４７】
記録単位時間フィールド３０８は、リアルタイムデータファイルのみで意味を持つフィールドであり、ファイル作成時に申告される記録単位時間が保持される。ノーマルデータファイルである場合、意味を持たないフィールドであり、予約フィールドとなる。リアルタイムデータファイルであるか否かは、ファイルタイプフィールド３０４の内容から判別することができる。
【００４８】
同様に、記録単位最大サイズフィールド３０９は、リアルタイムデータファイルのみで意味を持つフィールドであり、ファイルを構成する記録単位の最大サイズが記録される。
【００４９】
記録単位数フィールド３１０は、ファイルを構成する全記録単位数が記録される。ノーマルデータファイルである場合、記録単位は、１クラスタ固定となるので、ファイルを構成する全クラスタ数を意味する。また、リアルタイムデータファイルである場合、上記記録単位数と上記記録単位時間との積で、ファイルがどれだけの時間に相当するデータを記録しているかを算出することができる。
【００５０】
間接データクラスタアドレス３１３、二重間接クラスタアドレス３１４は、それぞれ間接データクラスタ、二重間接データクラスタのアドレスを保持する。
【００５１】
クラスタアドレスフィールド３１１は、ノーマルデータファイルである場合に使用される。上記フィールドに記録されているアドレスの直接データクラスタに、ファイルを構成するデータが実際に記録され、アドレスが記録されている順番に、ファイルが構成されている。管理情報エントリは、固定長であるので、クラスタアドレスフィールド数も有限であるが、ファイルサイズが大きく、上記フィールド数で不足する場合、上記間接データクラスタアドレス３１３、二重間接クラスタアドレス３１４を使用し、ファイルを構成する直接データクラスタ列が順次記録される。
【００５２】
記録単位フィールド３１２は、記録単位先頭クラスタアドレスと記録単位サイズフィールドとによって構成され、リアルタイムデータファイルである場合に使用される。リアルタイムデータファイルは、作成時に申告された記録単位時間（記録単位時間フィールド３０８に記録される時間）毎に、上記記録単位時間に相当するデータサイズ分のリアルタイムデータが、記録されている。この記録単位時間相当のデータは、一度にＨＤＤへ転送が可能であるように、あるクラスタを先頭とする連続クラスタとなるように、クラスタが割り当てられる。
【００５３】
したがって、記録単位先頭クラスタアドレスには、上記記録単位時間相当データの記録された先頭クラスタのアドレスが保持され、記録単位サイズフィールドには、上記記録単位時間相当のデータサイズが保持される。
【００５４】
逆に、ファイル読み込み時には、記録単位先頭クラスタアドレスで示されるクラスタから、記録単位サイズ分のデータを、一度に転送し、読み込むことができる。ノーマルデータファイルと同様に、この記録単位フィールドの列でファイルの構成が示されるが、フィールドが不足する場合、間接データクラスタアドレス３１３、二重間接クラスタアドレス、３１４が使用される。
【００５５】
上記ノーマルデータファイル、リアルタイムデータファイルではなく、ディレクトリに対して、管理情報エントリとして、ノーマルデータファイル３０１を使用する。ただし、ファイルタイプフィールド３０４に、「ディレクトリ」を示す情報が記載される。
【００５６】
次に、ノーマルデータファイルを構成するデータ領域クラスタの各種クラスタについて説明する。
【００５７】
図４は、ノーマルデータファイルを構成するデータ領域クラスタの各種クラスタを示す図である。
【００５８】
直接データクラスタ４０１は、ファイルを構成するデータそのものが記録されている。上記クラスタは、管理情報エントリ、または、後述する間接データクラスタからアドレス指定で参照される。
【００５９】
間接データクラスタ４０２は、管理情報エントリ、または、後述の二重間接データクラスタからアドレス指定で参照される。上記クラスタは、上記直接データクラスタへのアドレス列を記録している。
【００６０】
二重間接データクラスタ４０３は、管理情報エントリからアドレス指定され、参照される。上記クラスタは、上述の間接データクラスタへのアドレス列を記録している。
【００６１】
上記のように、ノーマルデータファイルのデータは、全て直接データクラスタに記録されているが、その参照には、
（１）管理情報エントリに記録されているクラスタアドレス列から直接参照
（２）管理情報エントリに記録されている間接データクラスタアドレス→間接データクラスタ→直接データクラスタ、というような間接的な参照
（３）管理情報エントリに記録されている二重間接データクラスタアドレス→二重間接データクラス→間接データクラスタ→直接データクラスタ、というような、二重間接的な参照
の３通りの参照が存在する。データサイズの小さなファイルは、上記（１）のみで参照されるが、ファイルサイズが大きくなるにつれ、上記（２）、（３）の参照が必要になる。
【００６２】
次に、リアルタイムデータファイルを構成するデータ領域クラスタに属する各種クラスタについて説明する。
【００６３】
図５は、リアルタイムデータファイルを構成するデータ領域クラスタに属する各種クラスタを示す図である。
【００６４】
直接データクラスタ５０１、二重間接データクラスタ５０２は、直接データクラスタ４０１、二重間接データクラスタ４０３と全く同等である。
【００６５】
間接データクラスタ５０２は、図５に示すように、ノーマルデータファイルのものと構成が異なる。これは、管理情報エントリの場合と同じように、クラスタアドレスの列ではなく、記録単位先頭クラスタアドレスと記録単位サイズとの組の列を記録している。
【００６６】
上記のように、リアルタイムデータファイルのデータは、全て、連続する直接データクラスタの集合である記録単位で記録されている。
【００６７】
次に、ディレクトリを構成するディレクトリクラスタについて説明する。
【００６８】
図６は、ディレクトリを構成するディレクトリクラスタを示す図である。
【００６９】
ディレクトリクラスタ６０１は、ファイルに対する直接データクラスタと同等の位置づけであり、データとしては、識別情報エントリ列が記録されている。上記識別情報エントリには、ディレクトリ内のファイルや、子ディレクトリに対して、１つずつ存在し、そのファイル名、ディレクトリ名、それぞれに対応する管理情報エントリ番号が記録されている。ファイル名やディレクトリ名は、可変長であるので、識別情報エントリ自体も可変長エントリである。
【００７０】
６０２は、上記識別情報エントリの１つの内部構成である。
【００７１】
管理情報エントリ番号フィールド６０３は、上記識別情報エントリと関連付けられている管理情報エントリ番号が記録される。上記番号には、１〜Ｎ（Ｎは管理情報エントリ数）が使用され、番号によって、ＨＤＤ中のどのブロックアドレスに上記管理情報エントリが記録されているかを割り出すことができる。
【００７２】
番号０の識別情報エントリは、特殊エントリであり、不定なエントリを意味し、それ以下のフィールドには、意味が無いことを示す。したがって、管理情報エントリ番号０の識別情報エントリがいくつ並んでいても、そのディレクトリには、ファイルや子ディレクトリが一切存在しない。つまり、識別情報エントリの数と、ファイルや子ディレクトリの数とは、必ずしも一致しない。
【００７３】
エントリ長フィールド６０４は、自身のエントリ全体のサイズが記録されている。
【００７４】
ファイル名長フィールド６０５は、ファイル名のサイズが記録されている。
【００７５】
図６から分かるように、ファイル名フィールド以降に、余分な領域が存在する場合もあるが、エントリ長、ファイル名長によって、どこまでが意味のある領域かを判別することができる。
【００７６】
上記構成の識別情報エントリを使用しているので、ファイルの削除、ファイル名の変更等が発生しても、識別情報エントリの再利用が可能であり、処理効率が高い。
【００７７】
ここで、実際に存在しているファイル（／ｔｍｐ／ｔｅｓｔ．ｔｘｔ）を参照する場合、ファイル管理部１０２において、どのような処理が行なわれているかについて、説明する。
【００７８】
まず、初めに、ファイル管理部は、管理情報エントリ番号１の管理情報エントリを参照する。つまり、エントリ番号１の管理情報エントリは、ルートディレクトリ（／）に対応するエントリとして使用しているからである。上記のように、管理情報エントリ番号から、上記管理情報エントリがＨＤＤ中のどこに存在するかを割り出すことができるので、エントリを読み出すことができる。
【００７９】
エントリ番号１の管理情報エントリから参照できるディレクトリクラスタを参照し、ファイル名（ディレクトリ名）として、「ｔｍｐ」が記録されている識別情報エントリを見つけ出す。この見つけ出された上記エントリには、「ｔｍｐディレクトリ」に対応する管理情報エントリのエントリ番号が記録されているので、上記エントリを読み出すことができる。
【００８０】
上記と同様の処理を繰り返すことによって、最終的に、ファイル名として「ｔｅｓｔ．ｔｘｔ」が記録されている識別情報エントリが割り出され、さらに、管理情報エントリが割り出され、直接データクラスタ中のｔｅｓｔ．ｔｘｔのデータにアクセスすることができる。
【００８１】
次に、ファイル作成手順について説明する。
【００８２】
図７は、ＷｒｉｔｅＯｐｅｎ処理の説明図である。
【００８３】
図８は、Ｗｒｉｔｅ処理の説明図である。
【００８４】
まず、ノーマルデータファイルの場合について説明する（従来のファイルシステムと同じ）。
【００８５】
ファイル作成の際には、まずアプリケーションから、ＷｒｉｔｅＯｐｅｎ要求がファイルシステムに対して発行される。
【００８６】
ノーマルデータファイルを作成しようとするアプリケーション１０８は、ファイル名をパラメータとし、ＷｒｉｔｅＯｐｅｎ要求（７０１）を発行する。
【００８７】
上記要求を受けたファイル管理部１０２は、該当ディレクトリに対するディレクトリクラスタ中に、新たな識別情報管理エントリを作成し、新たな管理情報エントリを、ＨＤＤ中の管理情報領域から確保し、その管理情報エントリ番号、ファイル名、ファイル名長を、識別情報エントリに記録する。
【００８８】
また、管理情報エントリには、ノーマルデータファイルであることを記録する。さらに、アプリケーションとファイルシステムとの間で、このＷｒｉｔｅセッションを識別できるファイル識別子を割り当てる。アプリケーションに、上記ファイル識別子を通知し（７０２）、ＷｒｉｔｅＯｐｅｎ処理を終了する。また、管理情報エントリとファイル識別子とを関連付け、セッション表７０３に登録する。
【００８９】
図９は、セッション表９０１の構成を示す図である。
【００９０】
ファイル識別子、管理情報エントリ、入出力タイプ（ノーマル、リアルタイム）が記録される。
【００９１】
次に、アプリケーションは、適当なデータサイズ毎に、Ｗｒｉｔｅ要求を発行し、データをファイルに書き込む。Ｗｒｉｔｅ要求のパラメータとして、ＷｉｒｔｅＯｐｅｎ時に割り当てられたファイル識別子と、書き込みデータへのポインタと、書き込みデータサイズとがある（８０１）。
【００９２】
上記Ｗｒｉｔｅ要求を受けたファイルシステムのファイル管理部１０２は、ファイル識別子に基づいて、セッション表９０１を参照し、関連付けられた管理情報エントリ番号（ここでは２０）を導き出し（９０４）、それをパラメータの１つとして、クラスタ管理部１０３に、Ｗｒｉｔｅ要求を発行する（８０２）。
【００９３】
クラスタ管理部１０３は、受け取ったデータを、クラスタサイズに分割し、それぞれに直接データクラスタを割り当て、管理情報エントリに記録し、必要であれば、間接データクラスタ、二重間接クラスタを適宜確保し、そこに記録する。また、クラスタマップの情報更新も行なう。スケジュール管理部１０４に対して、クラスタサイズに分割したデータ毎に割り当てたクラスタのクラスタアドレスと、クラスタ数（この場合１に固定）と、分割データとを渡す（８０３）。この処理（８０３）を、全分割データの記録が終了するまで、繰り返す。
【００９４】
次に、リアルタイムデータファイルの場合について説明する。
【００９５】
リアルタイムデータファイルの作成方法は、データの書き込み時にリアルタイム性を確保するか、しないかの２通りが存在する。たとえば、映像入力装置から入力されるリアルタイム映像ストリームデータを、ファイルに記録する場合、リアルタイム性の確保が必要であり、既存のリアルタイムデータファイルの複製ファイルを作成する場合、特にリアルタイム性を確保し、書き込みを行なう必要はない。
【００９６】
まず、リアルタイム性を確保しない場合について説明する。
【００９７】
ファイルを作成しようとするアプリケーション１０７は、ファイル名をパラメータとして、ＷｒｉｔｅＯｐｅｎ要求を発行する。この際に、リアルタイムデータファイルであることと、その記録単位時間とリアルタイム性の確保が不要であることとを申請する（７０４）。
【００９８】
上記要求を受けたファイル管理部では、上記ノーマルデータファイル作成の場合と同じように、ファイル識別子をアプリケーションに通知する（７０５）。ただし、管理情報エントリには、リアルタイムデータファイルであることと、記録単位時間とが、それぞれのフィールド３０４、３０８に記録される。また、記録最大サイズフィールド３０９には、一時的に０を記録する。
【００９９】
次に、アプリケーションは、リアルタイムデータの書き込みを行ない、ノーマルデータファイルの場合と異なり、アプリケーションは、記録単位時間に相当するデータサイズ毎に、Ｗｒｉｔｅ要求を発行しなければならない。Ｗｒｉｔｅ要求時のパラメータは、ノーマルデータファイルの場合と同じである（８０４）。
【０１００】
上記Ｗｒｉｔｅ要求を受けたファイルシステムのファイル管理部は、ファイル識別子に基づいて、セッション表を参照し（９０３）、関連付けられた管理情報エントリ番号を導き出し（この場合の管理情報エントリ番号は５）、それを、パラメータの１つとして、クラスタ管理部１０３に、Ｗｒｉｔｅ要求を渡す（８０５）。同時に、書き込みデータサイズと、管理情報エントリの記録単位最大サイズとを比較し、書き込みデータサイズが大きい場合、記録単位最大サイズを更新する。
【０１０１】
クラスタ管理部は、管理情報エントリより、リアルタイムデータファイルであることを認識し、書き込みデータが全て連続クラスタに記録できるように、連続クラスタを割り当て、その先頭クラスタアドレスとデータサイズとを、管理情報エントリに記録する。必要に応じて、間接データクラスタ、二重間接クラスタを、適宜確保し、使用する。また、クラスタマップの情報更新も行なう。
【０１０２】
一方、スケジュール管理部に対して、書き込み時のリアルタイム性の確保が不要であるので、クラスタサイズ毎に、データを分割し、クラスタ毎に、クラスタアドレスと、クラスタ数と、分割データとを渡す（８０６）。この処理を、全分割データの記録が終了するまで繰り返す。
【０１０３】
次に、リアルタイム性の確保が必要な場合について、説明する。
【０１０４】
ファイルを作成しようとするアプリケーションは、ファイル名をパラメータとして、ＷｒｉｔｅＯｐｅｎ要求を発行する（７０６）。この際に、リアルタイムデータであること、記録単位時間とリアルタイム性との確保が必要であることとを申請する。さらに、推定記録単位最大サイズを申請する。
【０１０５】
上記要求を受けたファイル管理部１０２は、上記リアルタイム性の確保が不要な場合と同様の処理を行なう。上記処理に加え、スケジュール管理部１０３に対して、記録単位時間、推定記録単位最大サイズ、管理情報エントリ番号をパラメータとして、スケジュール管理部１０４にリアルタイム性の確保を要求する（７０７）。
【０１０６】
図１０は、スケジュール管理表１００１を示す図である。
【０１０７】
要求を受けたスケジュール管理部１０４は、推定記録単位最大サイズから、記録単位の書き込みに要する時間を推定し、さらに記録単位時間とあわせて、図１０に示すスケジュール管理表を参照し、リアルタイム性の確保が可能かどうかを判定する。
【０１０８】
実際には、セッション表９０１とスケジュール管理表１００１とを分離しておく必要はなく、１つの管理表としてもよい。リアルタイム性の確保が可能であると判定された場合、スケジュール管理表に、ファイル識別子、記録単位時間、推定書き込み時間を登録する（１００２）。リアルタイム性の確保が不可能であると判定された場合、その旨を、ファイル管理部１０２に通知する。この場合、アプリケーションからのＷｒｉｔｅＯｐｅｎ要求は失敗したことになり、ファイル作成は不可能である。
【０１０９】
リアルタイム性の判定には、まず、推定書き込み時間が、長過ぎないか（記録単位データサイズが大きくないか）、記録単位時間に対する推定書き込み時間の割合からわかる占有率（たとえば、５００ｍｓの記録単位時間と５０ｍｓの推定書き込み時間との場合、占有率は０．１である）が、高過ぎないかを、スケジュール管理表に既に登録され、管理されている全スケジュールを考慮し、実行する。
【０１１０】
ＷｒｉｔｅＯｐｅｎに成功したアプリケーションは、リアルタイムデータの書き込みを行なう。記録単位時間毎に、上記記録単位時間に相当するデータサイズのＷｒｉｔｅ要求を発行する。Ｗｒｉｔｅ要求時のパラメータは、ノーマルデータファイルの場合と同じである（８０７）。
【０１１１】
Ｗｒｉｔｅ要求を受けたファイル管理部は、ファイル識別子に基づいて、セッション表を参照し（９０２）、関連付けられた管理情報エントリ番号（この場合８）を導き出し、それをパラメータの１つとして、クラスタ管理部に、Ｗｒｉｔｅ要求を渡す（８０８）。これと同時に、書き込みデータサイズと、管理情報エントリの記録単位最大サイズとを比較し、書き込みデータサイズが大きい場合、記録単位最大サイズを更新する。
【０１１２】
クラスタ管理部１０３は、管理情報エントリより、リアルタイムデータファイルであることを認識し、受け取ったデータを、クラスタサイズに分割せずに、書き込みデータが全て連続クラスタに記録できるように、連続クラスタを割り当て、その先頭クラスタアドレスとデータサイズとを、管理情報エントリに記録する。必要に応じて、間接データクラスタ、二重間接クラスタとを適宜確保し、使用する。また、クラスタマップの情報更新も行なう。スケジュール管理部に、割り当てた連続クラスタの先頭クラスタアドレスと、記録ブロック数と、全データとを渡す（８０９）。クラスタサイズにデータを分割せずに、一度に全データの書き込みを指示する点が、ノーマルデータファイルの場合と異なる点であり、処理効率を高くすることができる。
【０１１３】
上記のそれぞれの場合について、書き込みの指示を受けたスケジュール管理部の処理については、読み出し処理とあわせて後述する。
【０１１４】
次に、作成されたファイルの読み出しについて説明する。
【０１１５】
図１１、図１２は、作成されたファイルの読み出しについて説明する図である。
【０１１６】
まず、ノーマルデータファイルの場合について説明する（従来のファイルシステムと同じ）。
【０１１７】
ファイル読み出しの際には、まずアプリケーションから、ＲｅａｄＯｐｅｎ要求がファイルシステムに対して発行される。
【０１１８】
アプリケーションは、ファイル名をパラメータとして、ＲｅａｄＯｐｅｎ要求を発行する（１１０１）。
【０１１９】
上記要求を受けたファイルシステムのファイル管理部では、該当ディレクトリに対するディレクトリクラスタ中に、このファイル名を持つ識別情報エントリが存在するかどうかを調べる。
【０１２０】
存在しない場合には、エラーとしてＲｅａｄＯｐｅｎ処理を終了する。見つかった場合には、識別情報エントリに記録されている管理情報エントリを割り出し、アプリケーションとファイルシステムとの間で、このＲｅａｄセッションを識別できるファイル識別子を割り当てる。管理情報エントリとファイル識別子とを関連付け、入出力タイプとともに、セッション表９０１に登録する。さらに、アプリケーションに上記ファイル識別子を通知し（１１０２）、ＲｅａｄＯｐｅｎ処理を終了する。
【０１２１】
ＲｅａｄＯｐｅｎの成功後に、アプリケーションは、適当なデータサイズ毎に、Ｒｅａｄ要求を発行し、ファイルの読み出しを行なう。Ｒｅａｄ要求のパラメータは、ＲｅａｄＯｐｅｎ時に割り当てられたファイル識別子と、読み出しサイズと、読み出しサイズ分のバッファ量を確保済みのバッファへのポインタとである（１２０１）。
【０１２２】
上記Ｒｅａｄ要求を受けたファイル管理部は、ファイル識別子に基づいて、セッション表９０１を参照し（９０７）、管理情報エントリ番号を導き出し（この場合６）、それをパラメータの１つとして、クラスタ管理部１０３にＲｅａｄ要求を渡す（１２０２）。
【０１２３】
クラスタ管理部１０３は、管理情報エントリに記録されているクラスタアドレス毎に、クラスタサイズ毎のＲｅａｄを、スケジュール管理部に要求する（１２０３）。アプリケーションから要求された読み出しサイズに達するまで、このクラスタ毎の読み出しを繰り返す。
【０１２４】
これと同様に、リアルタイムデータファイルとして作成されたファイルに対しても、アプリケーションは、通常のノーマルデータファイルのように読み出しを行なうことができる。その際の処理は、クラスタ管理部１０３における処理が、ノーマルデータファイルの場合と異なる。なぜなら、管理情報エントリには、記録単位毎のクラスタアドレスとサイズとの列が記録されているためである。クラスタは、上記情報からクラスタ毎の読み出しに変換し、アプリケーションから要求された読み出しサイズに達するまで、クラスタ毎の読み出しを繰り返す。
【０１２５】
次に、リアルタイムデータファイルの読み出しについて説明する。
【０１２６】
アプリケーションは、ノーマルデータファイルと同様に、ファイル名をパラメータとして、ＲｅａｄＯｐｅｎ要求を発行する。さらに、リアルタイム読み出しの指定を申請する。その際に、読み出し単位時間を指定した場合（１１０３）、その単位時間が使用され、特に指定しない場合（１１０４）、ファイル作成時に申請されている記録単位時間が、読み出し単位時間として使用される。通常は、読み出し単位時間を指定する必要はないが、たとえば、映像ストリームデータのスロー再生等をする場合、この単位時間を、記録単位時間よりも大きくすることが考えられる。
【０１２７】
上記要求を受けたファイルシステムのファイル管理部１０２では、該当ディレクトリに対するディレクトリクラスタ中に、このファイル名を持つ識別情報エントリが存在するかどうかを調べる。
【０１２８】
存在しない場合、エラーとしてＲｅａｄＯｐｅｎ処理を終了する。見つかった場合、識別情報エントリに記録されている管理情報エントリを割り出し、指定されたファイルがリアルタイムデータファイルであるかどうかを検査する。リアルタイムデータファイルで無い場合、リアルタイムデータ読み出しは不可能であるので、エラーとしてＲｅａｄＯｐｅｎ処理を終了する。
【０１２９】
リアルタイムデータファイルであることが確認できた場合、アプリケーションとファイルシステムとの間で、このＲｅａｄセッションを識別できるファイル識別子を割り当て、管理情報エントリとファイル識別子とを関連付け、リアルタイム読み出しであることを明示し、セッション表に登録する（９０５、９０６）。
【０１３０】
これと同時に、スケジュール管理部に対して、アプリケーションが指定した時間または管理情報エントリに記録されている記録単位時間をパラメータとして、リアルタイム性の確保を要求する。
【０１３１】
要求を受けたスケジュール管理部は、管理情報エントリ中の記録単位最大サイズから、記録単位の読み出しに要する時間を推定し、さらに、ファイル管理部１０２から渡される単位時間とあわせて、スケジュール管理表を参照し（１００１）、リアルタイム性の確保が可能であるかどうかを判定する。
【０１３２】
リアルタイム性の確保が可能であると判定された場合、スケジュール管理表に、ファイル識別子、読み出し単位時間、推定読み出し時間を登録する（１００３、１００４）。リアルタイム性の確保が不可能と判定された場合、その旨をファイル管理部１０２に通知する。この場合、アプリケーションからのＲｅａｄＯｐｅｎ要求が失敗したことになり、ファイル作成は不可能である。
【０１３３】
リアルタイム性の確保に成功すると、アプリケーションに、ファイル識別子、管理情報エントリに保持されている記録単位最大サイズ、読み出し単位時間を、通知し（１１０７、１１０８）、ＲｅａｄＯｐｅｎ処理を終了する。
【０１３４】
ＲｅａｄＯｐｅｎの成功後に、アプリケーションは、読み出し単位時間毎に、Ｒｅａｄ要求を発行する。パラメータとして、読み出しバッファには、ＲｅａｄＯｐｅｎ要求時に通知された記録単位最大サイズ分のバッファを用意し、読み出しサイズにも、記録単位最大サイズを指定する（１２０４、１２０５）。実際には、このサイズのデータが読み出されるわけではなく、管理情報エントリに保持されている記録単位サイズを読み出す。
【０１３５】
上記Ｒｅａｄ要求を受けたファイル管理部は、ファイル識別子に基づいて、セッション表を参照し、管理情報エントリとリアルタイム読み出しとであることを導き出し、それらをパラメータとして、クラスタ管理部にＲｅａｄ要求を渡す（１２０６、１２０７）。
【０１３６】
クラスタ管理部１０３は、管理情報エントリに記録されている記録単位先頭クラスタアドレスから、記録サイズ分のデータを読み出すように、スケジュール管理部１０４に要求する（１２０８、１２０９）。クラスタ単位に分割せず、記録単位分のデータを一度に読み出す指示を出す点で、ノーマルデータ読み出し処理と異なり、処理効率が良い。実際に読み出されたデータサイズは、読み出し成功時に、アプリケーションに通知される（１２１０、１２１１）。
【０１３７】
以上、ファイルの作成、読み出しについて、クラスタ管理部１０３までの処理の説明を行なった。
【０１３８】
次に、スケジュール管理部１０４の処理について説明する。
【０１３９】
スケジュール管理部１０４では、複数のアプリケーションから、ファイルの入出力の要求があった場合、ディスク制御部１０５への入出力の指示を同時に出すことができないので、要求をキューイングし、逐次処理を行なう必要がある。
【０１４０】
基本的には、要求到着順に処理が実行されるが、リアルタイム入出力要求については、優先処理が行なわれる。リアルタイム入出力の際に、申請されている単位時間内に入出力処理を終える必要があるためである。Ｏｐｅｎ時に、記録単位の入出力に要する時間を推定し、その妥当性や、それぞれのセッションの占有率を評価し、必要以上のリアルタイムセッションを受け付けないようにするために、リアルタイム入出力要求が、複数キューイングされていても、これらを優先処理することによって、要求されているリアルタイム性を保証することができる。また、連続クラスタの一斉の入出力であるので、処理効率が高い。キューイングされているリアルタイム入出力要求が全て無くなると、通常の入出力処理が、順次処理される。
【０１４１】
入出力には、クラスタアドレス、クラスタ数を、ＨＤＤのブロック番号、ブロック数に変換し、ディスク制御部１０５に入出力命令を行なう。
【０１４２】
上記説明の通り、ノーマルデータファイルとリアルタイムデータファイルとの両者を効率良く扱うことのできるファイルシステムを実現することができる。
【０１４３】
図１３は、クラスタ乗り換え処理を示す図である。
【０１４４】
しかし、小さなデータサイズの連続ブロックの集合であるクラスタが、基本記録単位になっているので、ファイルの作成、削除等を繰り返していると、図１３に示すように、未使用クラスタ領域が細かく分断され、いざリアルタイムデータファイルを作成しようとしても、記録単位分の連続クラスタを確保できない可能性がある（１３０１）。このような状態を未然に防ぐために、次のようなブロック乗り換え処理（デフラグ処理）を行なう。
【０１４５】
まず、クラスタマップをもとに、点在するノーマルデータファイルの直接データクラスタと、連続性の小さな空きクラスタとを交換する。直接データクラスタの内容を空きクラスタに複製し、上記直接データクラスタの属する管理情報エントリのクラスタアドレスを、コピー先のクラスタアドレスに変更する。さらに、クラスタマップを更新する。本処理を繰り返し行なう。
【０１４６】
次に、ノーマルデータ、リアルタイムデータを問わず、間接データクラスタ、二重間接データクラスタ、ディレクトリクラスタの乗り換えを行なう（１３０２）。最後に、リアルタイムデータの連続直接クラスタの乗り換えを行なう（１３０３）。その際に、連続クラスタが分断されるような乗り換えは行なわない。
【０１４７】
上記処理によって、連続空きクラスタの領域が拡大し、連続クラスタの確保が容易になる。
【０１４８】
つまり、上記実施例によれば、リアルタイムデータファイル用の管理情報エントリの導入によって、リアルタイムデータフィルと通常データファイルとを統一的に管理することができる。また、上記実施例によれば、リアルタイムデータファイルは、記録単位毎に、連続クラスタとして構成されるので、記録単位のサイズ毎に、一度に読み出し、書き込みの転送ができ、入出力効率が向上する。
【０１４９】
さらに、上記実施例によれば、入出力の単位となるクラスタのサイズを小さくしておくことができ、これによって、ＨＤＤの使用効率が向上し、また、デフラグ処理を施すことによって、さらに使用効率を高めることができる。
【０１５０】
そして、上記実施例によれば、ファイルシステム中にスケジュール管理部を設けるので、複数のリアルタイムデータファイルやノーマルデータファイルを同時に扱うような場合でも、リアルタイム性を保証することができ、また、映像ストリームデータや、音楽ストリームデータを同時に複数の端末に配信するようなストリーム配信サーバにおいて、有用なファイルシステムである。
【図面の簡単な説明】
【０１５１】
【図１】本発明の実施例１であるファイルシステム１０１の構成を示すブロック図である。
【図２】ＨＤＤ１０６の内部の論理的な構成を示す図である。
【図３】管理情報エントリを示す図である。
【図４】ノーマルデータファイルを構成するデータ領域クラスタの各種クラスタを示す図である。
【図５】リアルタイムデータファイルを構成するデータ領域クラスタに属する各種クラスタを示す図である。
【図６】ディレクトリを構成するディレクトリクラスタを示す図である。
【図７】ＷｒｉｔｅＯｐｅｎ処理の説明図である。
【図８】Ｗｒｉｔｅ処理の説明図である。
【図９】セッション表９０１の構成を示す図である。
【図１０】スケジュール管理表１００１を示す図である。
【図１１】作成されたファイルの読み出しについて説明する図である。
【図１２】作成されたファイルの読み出しについて説明する図である。
【図１３】クラスタ乗り換え処理を示す図である。
【符号の説明】
【０１５２】
１０１…ファイルシステム、
１０２…ファイル管理部、
１０３…クラスタ管理部、
１０４…スケジュール管理部、
１０５…ディスク制御部、
１０６…ＨＤＤ、
１０７…リアルタイムアプリケーション、
１０８…非リアルタイムアプリケーション。
【図１】
2005339262.tif 000003
【図２】
2005339262.tif 000004
【図３】
2005339262.tif 000005
【図４】
2005339262.tif 000006
【図５】
2005339262.tif 000007
【図６】
2005339262.tif 000008
【図７】
2005339262.tif 000009
【図８】
2005339262.tif 000010
【図９】
2005339262.tif 000011
【図１０】
2005339262.tif 000012
【図１１】
2005339262.tif 000013
【図１２】
2005339262.tif 000014
【図１３】
2005339262.tif 000015