(57)【要約】【課題】データ更新処理中に電源断等の障害が発生してクラスタデータやファイルインデックスの記録処理が中断された場合でも、次のアクセス時にデータの読み出しを可能とするデータ記録装置を提供する。【解決手段】クラスタデータ処理部１４は、記録媒体１１のクラスタ領域１１２を検索し、空いているクラスタに更新するクラスタデータを記録する。予備ファイルインデックス処理部１６は、記録されたクラスタデータに関する予備ファイルインデックスを、記録媒体１１のインデックス領域１１１に新たに作成する。その後、常用ファイルインデックス処理部１５は、更新データに対応する既存の常用ファイルインデックスの内容を、予備ファイルインデックスの内容に更新する。その後、予備ファイルインデックス処理部１６は、インデックス領域１１１から予備ファイルインデックスを消去する。【選択図】　　　　図１
2004005524.tif 000002
【特許請求の範囲】
【請求項１】
所定の記録単位である１つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録装置であって、
データをクラスタデータ単位で前記記録媒体の空き領域に記録するクラスタデータ記録処理部と、
前記クラスタデータ記録処理部によって記録されたデータが新たなファイルを構成する新規データである場合、当該新規データに対する前記ファイルインデックスを常用ファイルインデックスとして作成し、前記記録媒体に記録する常用ファイルインデックス記録処理部と、
前記クラスタデータ記録処理部によって記録されたデータが既存ファイルのデータを更新するための更新データである場合、当該更新データに対する前記ファイルインデックスを予備ファイルインデックスとして作成し、前記記録媒体に記録する予備ファイルインデックス記録処理部と、
前記予備ファイルインデックス記録処理部によって前記予備ファイルインデックスが記録された後、当該予備ファイルインデックスと同一ファイル名である既存の前記常用ファイルインデックスを前記記録媒体から検索し、検索した当該常用ファイルインデックスの内容を当該予備ファイルインデックスの内容に更新する常用ファイルインデックス更新処理部と、
前記常用ファイルインデックス更新処理部によって前記常用ファイルインデックスの内容が更新された後、前記記録媒体から前記予備ファイルインデックスを消去する予備ファイルインデックス消去処理部とを備える、データ記録装置。
【請求項２】
データ記録装置の起動時に、前記記録媒体に記録されているファイルインデックスを検索し、前記予備ファイルインデックスの有無を検出するインデックス検索部と、
前記インデックス検索部における前記予備ファイルインデックスが有るとの判断に応じて、前記常用ファイルインデックス更新処理部に対して既存の前記常用ファイルインデックスを当該予備ファイルインデックスと同一内容に更新させる指示を行い、及びその更新後に前記予備ファイルインデックス消去処理部に対して当該予備ファイルインデックスを消去させる指示を行う回復処理制御部とをさらに備える、請求項１に記載のデータ記録装置。
【請求項３】
所定の記録単位である１つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録方法であって、
データをクラスタデータ単位で前記記録媒体の空き領域に記録する第１の記録ステップと、
前記第１の記録ステップで前記記録媒体に記録されたデータが新たなファイルを構成する新規データである場合、当該新規データに関する前記ファイルインデックスを常用ファイルインデックスとして作成し、前記記録媒体に記録する第２の記録ステップと、
前記第１の記録ステップで前記記録媒体に記録されたデータが既存ファイルのデータを更新するための更新データである場合、当該更新データに関する前記ファイルインデックスを予備ファイルインデックスとして作成し、前記記録媒体に記録する第３の記録ステップと、
前記第３の記録ステップの実行後に、前記予備ファイルインデックスと同一ファイル名である既存の前記常用ファイルインデックスを前記記録媒体から検索し、検索した当該常用ファイルインデックスの内容を当該予備ファイルインデックスの内容に更新する第１の更新ステップと、
前記第１の更新ステップの実行後に、前記記録媒体から前記予備ファイルインデックスを消去する第１の消去ステップとを備える、データ記録方法。
【請求項４】
実行開始時に前記記録媒体に記録されているファイルインデックスを検索し、前記予備ファイルインデックスの有無を検出するステップと、
前記検出するステップにおける前記予備ファイルインデックスが有るとの判断に応じて、既存の前記常用ファイルインデックスを当該予備ファイルインデックスと同一内容に更新する第２の更新ステップと、
前記第２の更新ステップの実行後に、前記記録媒体から前記予備ファイルインデックスを消去する第２の消去ステップとをさらに備える、請求項３に記載のデータ記録方法。
【請求項５】
所定の記録単位である１つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録装置が、実行するプログラムであって、
データをクラスタデータ単位で前記記録媒体の空き領域に記録する第１の記録ステップと、
前記第１の記録ステップで前記記録媒体に記録されたデータが新たなファイルを構成する新規データである場合、当該新規データに関する前記ファイルインデックスを常用ファイルインデックスとして作成し、前記記録媒体に記録する第２の記録ステップと、
前記第１の記録ステップで前記記録媒体に記録されたデータが既存ファイルのデータを更新するための更新データである場合、当該更新データに関する前記ファイルインデックスを予備ファイルインデックスとして作成し、前記記録媒体に記録する第３の記録ステップと、
前記第３の記録ステップの実行後に、前記予備ファイルインデックスと同一ファイル名である既存の前記常用ファイルインデックスを前記記録媒体から検索し、検索した当該常用ファイルインデックスの内容を当該予備ファイルインデックスの内容に更新する第１の更新ステップと、
前記第１の更新ステップの実行後に、前記記録媒体から前記予備ファイルインデックスを消去する第１の消去ステップとを、前記データ記録装置に実行させるためのプログラム。
【請求項６】
実行開始時に前記記録媒体に記録されているファイルインデックスを検索し、前記予備ファイルインデックスの有無を検出するステップと、
前記検出するステップにおける前記予備ファイルインデックスが有るとの判断に応じて、既存の前記常用ファイルインデックスを当該予備ファイルインデックスと同一内容に更新する第２の更新ステップと、
前記第２の更新ステップの実行後に、前記記録媒体から前記予備ファイルインデックスを消去する第２の消去ステップとをさらに備える、請求項５に記載のプログラム。
【請求項７】
所定の記録単位である１つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録装置が、実行するプログラムを記録した媒体であって、
データをクラスタデータ単位で前記記録媒体の空き領域に記録する第１の記録ステップと、
前記第１の記録ステップで前記記録媒体に記録されたデータが新たなファイルを構成する新規データである場合、当該新規データに関する前記ファイルインデックスを常用ファイルインデックスとして作成し、前記記録媒体に記録する第２の記録ステップと、
前記第１の記録ステップで前記記録媒体に記録されたデータが既存ファイルのデータを更新するための更新データである場合、当該更新データに関する前記ファイルインデックスを予備ファイルインデックスとして作成し、前記記録媒体に記録する第３の記録ステップと、
前記第３の記録ステップの実行後に、前記予備ファイルインデックスと同一ファイル名である既存の前記常用ファイルインデックスを前記記録媒体から検索し、検索した当該常用ファイルインデックスの内容を当該予備ファイルインデックスの内容に更新する第１の更新ステップと、
前記第１の更新ステップの実行後に、前記記録媒体から前記予備ファイルインデックスを消去する第１の消去ステップとを、前記データ記録装置に実行させるためのプログラムを記録した記録媒体。
【請求項８】
実行開始時に前記記録媒体に記録されているファイルインデックスを検索し、前記予備ファイルインデックスの有無を検出するステップと、
前記検出するステップにおける前記予備ファイルインデックスが有るとの判断に応じて、既存の前記常用ファイルインデックスを当該予備ファイルインデックスと同一内容に更新する第２の更新ステップと、
前記第２の更新ステップの実行後に、前記記録媒体から前記予備ファイルインデックスを消去する第２の消去ステップとをさらに備える、請求項７に記載の記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ記録装置、データ記録方法、当該方法を実行するためのプログラム及びプログラム記録媒体に関し、より特定的には、半導体メモリ、磁気ディスク及び光磁気ディスク等の記録媒体上でファイル形式によってデータを管理するファイルシステムにおいて、データを記録媒体に記録するために用いられるデータ記録装置及びデータ記録方法であって、特にデータの更新技術に関する。
【０００２】
【従来の技術】
一般に、パソコン、デジタル録画装置、ゲーム装置等の情報機器では、ハードディスク等の記録媒体にデータを記録及び読み出すためのシステムとして、ファイル形式によってデータを管理するファイルシステムが用いられる。代表的なファイルシステムとして、データを所定のクラスタ単位（例えば、５１２バイト）の１つ又は複数のクラスタデータに分割して管理する方式が存在する。この方式では、クラスタデータが記録媒体内の空き領域に記録され、このクラスタデータを所定のファイルインデックスを用いて管理することを行う。このファイルインデックスは、記録媒体に記録されたデータ、すなわちファイル毎に作成され、ファイルの属性、クラスタデータが記録されている位置及びその順序等の情報が記述されている。
【０００３】
このファイルインデックスを用いた従来のファイルシステムの概念を、図６及び図７を用いて説明する。なお、ファイルインデックスを用いた従来のファイルシステムは、例えば非特許文献１に開示されている。
【０００４】
図６は、従来のファイルシステムにおいてデータの記録を実行するデータ記録装置の機能ブロックを示す図である。図７は、図６の記録媒体６１内部の記録構造の一例を示す図である。
図６において、従来のデータ記録装置は、記録媒体６１と、データ処理部６２と、作業用メモリ６３と、クラスタデータ処理部６４と、ファイルインデックス処理部６５とを備える。
【０００５】
記録媒体６１は、ハードディスクやＤＶＤ−ＲＡＭ等の媒体である。この記録媒体６１は、図６に示すように、ファイルインデックスを記録するインデックス領域６１１と、予め所定のクラスタ単位で区分けされたクラスタデータを記録するクラスタ領域６１２とで構成される。各ファイルインデックスは、図７に示すように、ファイル名、ファイルの属性情報及びファイルを構成するクラスタデータが記録されている記録媒体６１上のクラスタ位置（例えばアドレス）及び順序を示すクラスタ配置情報を、テーブル形式で保持する。
【０００６】
まず、新たなデータを記録媒体６１に記録する処理を説明する。
データ処理部６２は、記録媒体６１へ記録すべきデータを入力すると、このデータをクラスタ単位の１つ又は複数のクラスタデータに分割して、作業用メモリ６３に格納する。作業用メモリ６３に１つ又は複数のクラスタデータが格納されると、クラスタデータ処理部６４は、記録媒体６１のクラスタ領域６１２を検索し、空いているクラスタを抽出する。次に、クラスタデータ処理部６４は、クラスタデータを作業用メモリ６３から読み出して、記録媒体６１の抽出した空きクラスタに順に記録する。全てのクラスタデータの記録が終了すると、ファイルインデックス処理部６５は、記録媒体６１のインデックス領域６１１に新たなファイルインデックスを作成し、各クラスタデータを記録したクラスタの位置及び順序の情報をクラスタ配置情報に記述する。
【０００７】
図７に例示しているファイルインデックスの場合、４つのクラスタデータＣ１〜Ｃ４によって１つのファイルが構成され、先頭のクラスタデータＣ１が記録媒体６１上のクラスタ１００１に、２番目のクラスタデータＣ２が記録媒体６１上のクラスタ１００２に、３番目のクラスタデータＣ３が記録媒体６１上のクラスタ１００４に、末尾のクラスタデータＣ４が記録媒体６１上のクラスタ１００６に記録されていることを示している。
【０００８】
次に、すでに記録されているデータを追加又は上書き等によって更新する処理を説明する。
新たなデータを追加する場合、クラスタデータ処理部６４は、データ処理部６２を介して作業用メモリ６３に格納された、追加されるクラスタデータＣ５を、クラスタ領域６１２の空きクラスタ、例えばクラスタ１００７に記録する。ファイルインデックス処理部６５は、データを追加したファイルに対応するファイルインデックスのクラスタ配置情報を、クラスタデータＣ５を記録したクラスタ１００７の位置情報を末尾に追記して更新する。
【０００９】
同サイズのデータを上書きする場合、クラスタデータ処理部６４は、データ処理部６２を介して作業用メモリ６３に格納された、クラスタデータＣ２に上書きで記録されるクラスタデータＣ２’を、クラスタ領域６１２のクラスタ１００２に記録する。この場合には、ファイルインデックスのクラスタ配置情報は、書き換えられない。
【００１０】
異なるサイズのデータを上書きする場合、クラスタデータ処理部６４は、データ処理部６２を介して作業用メモリ６３に格納された、クラスタデータＣ２に上書きで記録されるクラスタデータＣ２’及びＣ２”を、クラスタ領域６１２のクラスタ１００２及び空きクラスタ、例えばクラスタ１００７に記録する。ファイルインデックス処理部６５は、データを上書き及び追加で記録したファイルに対応するファイルインデックスのクラスタ配置情報を、３番目がクラスタ１００７の位置情報、４番目がクラスタ１００４の位置情報及び末尾がクラスタ１００６の位置情報となるように更新する。
【００１１】
なお、上記のように記録媒体６１に記録されたデータを読み出す場合には、ファイルインデックス処理部６５が、ファイル名をキーとしてインデックス領域６１１を検索し、該当するファイルインデックスを抽出する。次に、ファイルインデックス処理部６５は、抽出したファイルインデックスのクラスタ配置情報を参照し、データがクラスタ１００１、１００２、１００４及び１００６に分割して記録されていることを認識する。そして、クラスタデータ処理部６４は、クラスタ配置情報に記述されている先頭のクラスタからクラスタデータＣ１〜Ｃ４を順に読み出して出力する。
【００１２】
【非特許文献１】
「オペレーティングシステム　第２版」、Ａ．Ｓ．タネンバウム他著
株式会社ピアソン・エデュケーション、１９９８年５月２０日、
第１刷発行
【００１３】
【発明が解決しようとする課題】
しかしながら、上記従来のデータ記録装置では、データの更新処理において次の問題点がある。
第１の問題点として、クラスタ領域６１２へクラスタデータを記録している途中に、停電やバッテリー切れによる電源断等の障害が発生した場合、更新すべきクラスタデータが正常に記録されないまま処理が中断されてしまう。このため、次にこのデータにアクセスした時には、インデックス領域６１１からファイルインデックスを正しく読み出すことはできても、クラスタ領域６１２からは更新後のデータどころか更新前のデータさえも正しく読み出すことができない。
【００１４】
第２の問題点として、クラスタ領域６１２へのクラスタデータの記録完了後にインデックス領域６１１のファイルインデックスを更新している途中に、停電やバッテリー切れによる電源断等の障害が発生した場合、ファイルインデックスが正常に更新されないまま処理が中断されてしまう。このため、次にこのデータをアクセスした時には、インデックス領域６１１からファイルインデックスを正しく読み出すことができない。
【００１５】
このような問題を解決するために、各ファイルについて、同じデータ内容のオリジナルファイルとバックアップ用ファイルとを記録媒体上に記録する方法（冗長記録方法）が、従来から存在する。この冗長記録方法により、オリジナルファイルのデータが壊れていた場合でも、バックアップ用ファイルを読み出すことでデータ再現不可能という事態を回避することができていた。
【００１６】
しかしながら、上記冗長記録方法では、全てのファイルについてバックアップ用ファイルを記録するため、従来方法と比べて記録媒体に２倍の容量が必要となる。また、この冗長記録方法では、同じデータを毎回２回記録する必要があるため、記録媒体へのアクセス時間も２倍かかってしまう。
【００１７】
また、この冗長記録方法では、クラスタデータの記録状態（正常か壊れているか）に応じて、オリジナルファイル又はバックアップ用ファイルのいずれを読み出すべきかを、判定する処理が別途必要となる。さらに、冗長記録方法では、記録する２つのファイルのうちいずれか１つが壊れた場合に、正しいファイルを壊れたファイルに再記録する必要があるため、回復処理のための余分な時間も必要となる。
【００１８】
それ故に、本発明の目的は、全てのファイルのバックアップを行うことなく、データ更新処理中に電源断等の障害が発生してクラスタデータやファイルインデックスへの記録が中断された場合でも、次のアクセス時にデータの読み出しを可能とするデータ記録装置及びデータ記録方法を提供することである。
【００１９】
【課題を解決するための手段及び発明の効果】
本発明は、上記目的を達成させるために、以下に示す特徴を備えている。
第１の発明は、所定の記録単位である１つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録装置であって、
データをクラスタデータ単位で記録媒体の空き領域に記録するクラスタデータ記録処理部と、クラスタデータ記録処理部によって記録されたデータが新たなファイルを構成する新規データである場合、新規データに対するファイルインデックスを常用ファイルインデックスとして作成し、記録媒体に記録する常用ファイルインデックス記録処理部と、クラスタデータ記録処理部によって記録されたデータが既存ファイルのデータを更新するための更新データである場合、更新データに対するファイルインデックスを予備ファイルインデックスとして作成し、記録媒体に記録する予備ファイルインデックス記録処理部と、予備ファイルインデックス記録処理部によって予備ファイルインデックスが記録された後、予備ファイルインデックスと同一ファイル名である既存の常用ファイルインデックスを記録媒体から検索し、検索した常用ファイルインデックスの内容を予備ファイルインデックスの内容に更新する常用ファイルインデックス更新処理部と、常用ファイルインデックス更新処理部によって常用ファイルインデックスの内容が更新された後、記録媒体から予備ファイルインデックスを消去する予備ファイルインデックス消去処理部とを備える。
【００２０】
第２の発明は、第１の発明に従属するデータ記録装置であって、
データ記録装置の起動時に、記録媒体に記録されているファイルインデックスを検索し、予備ファイルインデックスの有無を検出するインデックス検索部と、インデックス検索部における予備ファイルインデックスが有るとの判断に応じて、常用ファイルインデックス更新処理部に対して既存の常用ファイルインデックスを予備ファイルインデックスと同一内容に更新させる指示を行い、及びその更新後に予備ファイルインデックス消去処理部に対して予備ファイルインデックスを消去させる指示を行う回復処理制御部とをさらに備える。
【００２１】
第３、第５及び第７の発明は、所定の記録単位である１つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録方法、その方法をデータ記録装置に実行させるためのプログラム及びそのプログラムを記録した媒体であって、
データをクラスタデータ単位で記録媒体の空き領域に記録する第１の記録ステップと、第１の記録ステップで記録媒体に記録されたデータが新たなファイルを構成する新規データである場合、新規データに関するファイルインデックスを常用ファイルインデックスとして作成し、記録媒体に記録する第２の記録ステップと、第１の記録ステップで記録媒体に記録されたデータが既存ファイルのデータを更新するための更新データである場合、更新データに関するファイルインデックスを予備ファイルインデックスとして作成し、記録媒体に記録する第３の記録ステップと、第３の記録ステップの実行後に、予備ファイルインデックスと同一ファイル名である既存の常用ファイルインデックスを記録媒体から検索し、検索した常用ファイルインデックスの内容を予備ファイルインデックスの内容に更新する第１の更新ステップと、第１の更新ステップの実行後に、記録媒体から予備ファイルインデックスを消去する第１の消去ステップとを備える。
【００２２】
第４、第６及び第８の発明は、それぞれ第３、第５及び第７の発明に従属するデータ記録方法、プログラム及び記録媒体であって、
実行開始時に記録媒体に記録されているファイルインデックスを検索し、予備ファイルインデックスの有無を検出するステップと、検出するステップにおける予備ファイルインデックスが有るとの判断に応じて、既存の常用ファイルインデックスを予備ファイルインデックスと同一内容に更新する第２の更新ステップと、第２の更新ステップの実行後に、記録媒体から予備ファイルインデックスを消去する第２の消去ステップとをさらに備える。
【００２３】
上記のように、第１、第３、第５及び第７の発明によれば、更新後のクラスタデータ及びその予備ファイルインデックスをまず記録し、その記録後に常用ファイルインデックスを更新させる。これにより、データ更新処理の途中に電源断等の障害が発生しても、ファイルインデックスとクラスタデータとの整合性を常に保つことができ、データの読み出しが不可能となる現象を回避することができる。また、常用ファイルインデックスが更新された後、予備ファイルインデックスを消去するので、バックアップ用ファイルを冗長的に記録する従来の手法に比べ、記録媒体の容量が小さくて済む。
【００２４】
上記のように、第２、第４、第６及び第８の発明によれば、障害回復後には特定の状態にあるファイルインデックスの回復処理を実行する。これにより、データ更新処理の途中に電源断等の障害が発生しても、ファイルインデックスとクラスタデータとの整合性を常に保つことができ、データの読み出しが不可能となる現象を回避することができる。また、このファイルインデックスの回復処理は、最大でも常用ファイルインデックスの作成又は更新と、予備ファイルインデックスの消去との２つの処理だけでよいため、ファイルインデックスの復旧を速やかに行うことができる。
【００２５】
【発明の実施の形態】
以下、本発明の実施の形態を、図面を参照して説明する。
図１は、ファイルシステムにおいてデータの記録を実行する本発明の一実施形態に係るデータ記録装置の機能ブロックを示す図である。図１において、本実施形態のデータ記録装置は、記録媒体１１と、データ処理部１２と、作業用メモリ１３と、クラスタデータ処理部１４と、常用ファイルインデックス処理部１５と、予備ファイルインデックス処理部１６と、回復処理制御部１７と、ファイルインデックス検索部１８とを備える。
【００２６】
典型的には、データ処理部１２、クラスタデータ処理部１４、常用ファイルインデックス処理部１５、予備ファイルインデックス処理部１６、回復処理制御部１７及びファイルインデックス検索部１８は、ＣＰＵ及び所定の処理プログラムが格納されたＲＯＭで構成される。以下に説明する処理は、ＲＯＭに格納された処理プログラムをＣＰＵが実行することで実現される。また、作業用メモリ１３は、典型的にはＲＡＭである。これらのＣＰＵ、ＲＯＭ及びＲＡＭは、バスによって接続される。
【００２７】
記録媒体１１は、ハードディスクやＤＶＤ−ＲＡＭ等の媒体である。この記録媒体１１は、図１に示すように、ファイルインデックスを記録するインデックス領域１１１と、予めクラスタ単位で区分けされたクラスタデータを記録するクラスタ領域１１２とで構成される。このインデックス領域１１１に記録されるファイルインデックスは、機能的に２種類に分けられる。１つは、データの記録時に作成され、通常のファイルアクセスの際に参照されるファイルインデックスである。もう１つは、データ更新処理の時に一時的に作成されるファイルインデックスである。以下の説明では、前者を常用ファイルインデックスと、後者を予備ファイルインデックスと記して区別することにする。各ファイルインデックスは、図７に示したように、ファイル名、ファイルの属性情報、及びファイルを構成するクラスタデータが記録されている記録媒体１１上のクラスタ位置及び順序を示すクラスタ配置情報を、テーブル形式で保持する。
【００２８】
上記構成による本実施形態のデータ記録装置が行う新たなデータの記録媒体１１への記録処理は、上記従来の技術で説明した処理と同様に、データ処理部１２、作業用メモリ１３、クラスタデータ処理部１４及び常用ファイルインデックス処理部１５によって実行される。
【００２９】
本実施形態のデータ記録装置は、記録媒体１１にすでに記録されているデータを追加又は上書き等によって更新する処理に特徴がある。
以下、図２〜図４をさらに参照し、本実施形態に係るデータ記録装置が行うデータ更新に関するデータ記録方法を説明する。図２は、クラスタデータ及びファイルインデックスの更新処理手順を示すのフローチャートである。図３及び図４は、それぞれ図２の更新処理手順に基づいた具体的な一例を示す図である。
【００３０】
データ処理部１２は、記録媒体１１にすでに記録されているファイルについて、データを更新するための新たなデータ（以下、更新データという）を入力すると、この更新データをクラスタ単位の１つ又は複数のクラスタデータに分割して、作業用メモリ１３に格納する（ステップＳ２０１）。作業用メモリ１３に１つ又は複数のクラスタデータが格納されると、クラスタデータ処理部１４は、記録媒体１１のクラスタ領域１１２を検索し、空いているクラスタを抽出する（ステップＳ２０２）。次に、クラスタデータ処理部１４は、クラスタデータを作業用メモリ１３から読み出して、抽出した記録媒体１１の空きクラスタへ順に記録する（ステップＳ２０３）。
【００３１】
全てのクラスタデータの記録が終了すると、予備ファイルインデックス処理部１６は、クラスタデータ処理部１４によって記録されたクラスタデータのクラスタ位置及び順序の情報をクラスタ配置情報に記述した予備ファイルインデックスを、記録媒体１１のインデックス領域１１１に新たに作成する（ステップＳ２０４）。予備ファイルインデックスが作成された後、常用ファイルインデックス処理部１５は、インデックス領域１１１にすでに作成されている更新前のデータに対応する常用ファイルインデックスを検索し、この常用ファイルインデックスの内容を予備ファイルインデックスの内容に書き換えて更新する（ステップＳ２０５）。常用ファイルインデックスの内容が更新されると、予備ファイルインデックス処理部１６は、記録媒体１１のインデックス領域１１１から予備ファイルインデックスを消去する（ステップＳ２０６）。
以上の処理によって、データ更新処理が完了する。
【００３２】
さらに図３を参照して、上記更新処理手順を具体的に説明する。今、クラスタデータＣ１及びＣ２で構成されるデータＡが、ファイルＡとして記録媒体１１にすでに記録されており（状態１）、このデータＡがクラスタデータＣ３〜Ｃ５で構成される新たなデータＡ’に更新される場合を考える。
【００３３】
データの更新処理が開始されると、まず、データＡ’のクラスタデータＣ３〜Ｃ５が、クラスタ領域１１２の空きクラスタ１０１０〜１０１２にそれぞれ記録される（状態２）。次に、記録されたクラスタデータＣ３〜Ｃ５のクラスタ位置を記述した予備ファイルインデックスが作成される（状態３）。なお、データ更新であるので、予備ファイルインデックスのファイル名及び属性情報は、常用ファイルインデックスと同一である。次に、常用ファイルインデックスの内容、すなわちクラスタ配置情報のクラスタ１００１及び１００２が、予備ファイルインデックスのクラスタ配置情報のクラスタ１０１０〜１０１２に書き換えられる（状態４）。最後に、予備ファイルインデックスが消去される（状態５）。また、この消去と共に、クラスタ領域１１２のクラスタ１００１及び１００２が開放される。
【００３４】
このデータ更新処理を実行することによって、様々なタイミングで電源断等の障害が生じても、次のように必ず更新前又は更新後のいずれかのデータを読み出すことが可能となる。
【００３５】
状態１から状態２の途中（図２、ステップＳ２０３）で障害が生じた場合、データＡ’（クラスタデータＣ３〜Ｃ５のいずれか）が壊れるが、常用ファイルインデックスに基づいて更新前のデータＡを読み出すことが可能である。また、状態２から状態３の途中（図２、ステップＳ２０４）で障害が生じた場合、データＡ’の予備ファイルインデックスが壊れるが、常用ファイルインデックスに基づいて更新前のデータＡを読み出すことが可能である。また、状態３から状態４の途中（図２、ステップＳ２０５）で障害が生じた場合、データＡの常用ファイルインデックスが壊れるが、予備ファイルインデックスを使用して更新後のデータＡ’を読み出すことが可能である。なお、この場合には、後述する回復処理を必要とする。また、状態４から状態５の途中（図２、ステップＳ２０６）で障害が生じた場合、データＡ’の予備ファイルインデックスが壊れるが（不完全消去）、常用ファイルインデックスに基づいて更新後のデータＡ’を読み出すことが可能である。
【００３６】
一般的に、ファイルシステムでは、アプリケーションプログラム等がファイル処理を実行するにあたって「オープン」と呼ばれる開始処理が行われる。この開始処理では、アクセスするファイルの常用ファイルインデックスが、所定のＲＡＭ上に読み出される。上述した予備ファイルインデックスは、読み出された常用ファイルインデックスを用いて一旦このＲＡＭ上で作成される。そして、作成された予備ファイルインデックスは、然るべきタイミングで記録媒体１１に記録され、また常用ファイルインデックスの更新に用いられる。なお、オープン処理時に障害が生じても、ＲＡＭ上のファイルインデックスが壊れるだけであり、問題はない。
【００３７】
また、図３の例では、新たなデータＡ’を記録媒体１１に全て記録する場合を説明したが、既存のデータＡの一部のクラスタデータだけが更新されるような場合には、次のように更新処理を行っても構わない。
図４を参照して、今、クラスタデータＣ１〜Ｃ３で構成されるデータＡが、ファイルＡとして記録媒体１１にすでに記録されており（状態１）、このデータＡがクラスタデータＣ１、Ｃ２’及びＣ３で構成される新たなデータＡ’に更新される場合を考える。
【００３８】
データの更新処理が開始されると、まず、データＡ’のうち更新が必要なクラスタデータＣ２’のみが、クラスタ領域１１２の空きクラスタ１０１０に記録される（状態２）。次に、記録されたクラスタデータＣ２’とクラスタデータＣ１及びＣ３のクラスタ位置を記述した予備ファイルインデックスが作成される（状態３）。なお、データ更新であるので、予備ファイルインデックスのファイル名及び属性情報は、常用ファイルインデックスと同一である。次に、常用ファイルインデックスの内容、すなわちクラスタ配置情報のクラスタ１００１〜１００３が、予備ファイルインデックスのクラスタ配置情報のクラスタ１００１、１０１０及び１００３に書き換えられる（状態４）。最後に、予備ファイルインデックスが消去される（状態５）。また、この消去と共に、クラスタ領域１１２のクラスタ１００２が開放される。
【００３９】
さて、上述したように予備ファイルインデックスが作成された後、常用ファイルインデックスの更新動作や予備ファイルインデックスの消去動作を行っている途中に障害が生じた場合には、いずれか一方のファイルインデックスだけが残ることになり同一ファイル名による２つのファイルインデックスが存在することはない。しかし、状態３が完了した時点や状態４が完了した時点で障害が生じた場合には、同一ファイル名による２つのファイルインデックスが存在することになる。また、予備ファイルインデックスだけが残った場合であっても、アクセス対象となる常用ファイルインデックスを作成し直す必要がある。従って、このような場合には、障害発生によって異常な状態になっているファイルインデックスを、正常な状態に回復させる必要がある。
そこで、次にファイルインデックスの回復処理について説明する。
【００４０】
図５は、ファイルインデックスの回復処理手順を示すフローチャートである。
電源投入等でデータ記録装置が正常に動作できるようになると、ファイルインデックス検索部１８は、記録媒体１１のインデックス領域１１１を検索し、予備ファイルインデックスが記録されているか否かを確認する（ステップＳ５０１）。予備ファイルインデックスが記録されていない場合（ステップＳ５０２，Ｎｏ）、データ更新処理が正常に完了している等によってファイルインデックスの回復処理が必要ないと判断され、処理が終了する。予備ファイルインデックスが記録されている場合（ステップＳ５０２，Ｙｅｓ）、ファイルインデックス検索部１８は、記録媒体１１のインデックス領域１１１をさらに検索し、この予備ファイルインデックスと同じファイル名の常用ファイルインデックスが存在するか否かを確認する（ステップＳ５０３）。
【００４１】
同じファイル名の常用ファイルインデックスが存在しない場合（ステップＳ５０４，Ｎｏ）、回復処理制御部１７は、常用ファイルインデックス処理部１５に指示して、予備ファイルインデックスと同じ内容の常用ファイルインデックスを記録媒体１１のインデックス領域１１１に作成させる（ステップＳ５０５）。その後、回復処理制御部１７は、予備ファイルインデックス処理部１６に指示して、この予備ファイルインデックスを消去させる（ステップＳ５０８）。一方、同じファイル名の常用ファイルインデックスが存在する場合（ステップＳ５０４，Ｙｅｓ）、回復処理制御部１７は、この常用ファイルインデックスの内容が更新済みかどうかを判断する（ステップＳ５０６）。この判断は、常用ファイルインデックスの内容と予備ファイルインデックスの内容とを照合することで行うことができる。
【００４２】
常用ファイルインデックスの内容が更新済みでない場合（ステップＳ５０６，Ｎｏ）、回復処理制御部１７は、常用ファイルインデックス処理部１５に指示して、常用ファイルインデックスの内容を予備ファイルインデックスの内容に更新させる（ステップＳ５０７）。その後、回復処理制御部１７は、予備ファイルインデックス処理部１６に指示して、この予備ファイルインデックスを消去させる（ステップＳ５０８）。常用ファイルインデックスの内容が更新済みである場合（ステップＳ５０６，Ｙｅｓ）、回復処理制御部１７は、予備ファイルインデックス処理部１６に指示して、この予備ファイルインデックスを消去させる（ステップＳ５０８）。
【００４３】
このように、障害復旧後にファイルインデックスの回復処理を実行することによって、次にファイルがアクセスされた時でも問題なくデータの読み出しを行うことができるのである。
なお、ファイルインデックス回復処理の実行中に障害が発生した場合には、上述した図５の回復処理を再度実行すればよい。
【００４４】
以上のように、本発明の一実施形態に係るデータ記録装置及びデータ記録方法によれば、更新後のクラスタデータ及びその予備ファイルインデックスをまず記録し、その記録後に常用ファイルインデックスを更新させる。また、障害回復後には特定の状態にあるファイルインデックスの回復処理を実行する。
【００４５】
これにより、データ更新処理の途中に電源断等の障害が発生しても、ファイルインデックスとクラスタデータとの整合性を常に保つことができ、データの読み出しが不可能となる現象を回避することができる。また、常用ファイルインデックスが更新された後、予備ファイルインデックスを消去するので、バックアップ用ファイルを冗長的に記録する従来の装置に比べ、記録媒体の容量が小さくて済む。さらに、ファイルインデックスの回復処理は、最大でも常用ファイルインデックスの作成又は更新と、予備ファイルインデックスの消去との２つの処理だけでよいため、ファイルインデックスの復旧を速やかに行うことができる。
【００４６】
なお、上記実施形態では、本発明のデータ記録装置及びデータ記録方法を、１つのファイルが１つの常用ファイルインデックスによって管理されるファイルシステムに適用させた場合を説明している。しかし、本発明のデータ記録装置及びデータ記録方法は、１つのファイルがリンクされた複数の常用ファイルインデックスで管理されるファイルシステムに適用することも可能である。この場合、データの更新が発生した常用ファイルインデックスに対して予備ファイルインデックスを作成することで、同様の効果を奏することができる。
【００４７】
また、本発明のデータ記録装置及びデータ記録方法は、ＵＮＩＸ（Ｒ）やＬＩＮＵＸ等のファイルインデックス相当のファイル管理情報を持つ様々なファイルシステムに対して有効であり、上記実施形態で述べたファイルインデックスを用いるファイルシステムに限られるものではない。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るデータ記録装置の機能ブロックを示す図である。
【図２】クラスタデータ及びファイルインデックスの更新処理手順を示すのフローチャートである。
【図３】図２の更新処理手順に基づいた具体的な一例を示す図である。
【図４】図２の更新処理手順に基づいた具体的な他の一例を示す図である。
【図５】ファイルインデックスの回復処理手順を示すフローチャートである。
【図６】従来のデータ記録装置の機能ブロックを示す図である。
【図７】本発明及び従来の記録媒体内部の記録構造の一例を示す図である。
【符号の説明】
１１，５１…記録媒体
１２，５２…データ処理部
１３，５３…作業用メモリ
１４，５４…クラスタデータ処理部
１５…常用ファイルインデックス処理部
１６…予備ファイルインデックス処理部
１７…回復処理制御部
１８…ファイルインデックス検索部
５５…ファイルインデックス処理部
１１１，５１１…インデックス領域
１１２，５１２…クラスタ領域
【図１】
2004005524.tif 000003
【図２】
2004005524.tif 000004
【図３】
2004005524.tif 000005
【図４】
2004005524.tif 000006
【図５】
2004005524.tif 000007
【図６】
2004005524.tif 000008
【図７】
2004005524.tif 000009