JP2004005524A - データ記録装置、データ記録方法、当該方法を実行するためのプログラム及びプログラム記録媒体 - Google Patents
データ記録装置、データ記録方法、当該方法を実行するためのプログラム及びプログラム記録媒体 Download PDFInfo
- Publication number
- JP2004005524A JP2004005524A JP2003092196A JP2003092196A JP2004005524A JP 2004005524 A JP2004005524 A JP 2004005524A JP 2003092196 A JP2003092196 A JP 2003092196A JP 2003092196 A JP2003092196 A JP 2003092196A JP 2004005524 A JP2004005524 A JP 2004005524A
- Authority
- JP
- Japan
- Prior art keywords
- data
- file index
- recording
- file
- recording medium
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】データ更新処理中に電源断等の障害が発生してクラスタデータやファイルインデックスの記録処理が中断された場合でも、次のアクセス時にデータの読み出しを可能とするデータ記録装置を提供する。
【解決手段】クラスタデータ処理部14は、記録媒体11のクラスタ領域112を検索し、空いているクラスタに更新するクラスタデータを記録する。予備ファイルインデックス処理部16は、記録されたクラスタデータに関する予備ファイルインデックスを、記録媒体11のインデックス領域111に新たに作成する。その後、常用ファイルインデックス処理部15は、更新データに対応する既存の常用ファイルインデックスの内容を、予備ファイルインデックスの内容に更新する。その後、予備ファイルインデックス処理部16は、インデックス領域111から予備ファイルインデックスを消去する。
【選択図】 図1
【解決手段】クラスタデータ処理部14は、記録媒体11のクラスタ領域112を検索し、空いているクラスタに更新するクラスタデータを記録する。予備ファイルインデックス処理部16は、記録されたクラスタデータに関する予備ファイルインデックスを、記録媒体11のインデックス領域111に新たに作成する。その後、常用ファイルインデックス処理部15は、更新データに対応する既存の常用ファイルインデックスの内容を、予備ファイルインデックスの内容に更新する。その後、予備ファイルインデックス処理部16は、インデックス領域111から予備ファイルインデックスを消去する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、データ記録装置、データ記録方法、当該方法を実行するためのプログラム及びプログラム記録媒体に関し、より特定的には、半導体メモリ、磁気ディスク及び光磁気ディスク等の記録媒体上でファイル形式によってデータを管理するファイルシステムにおいて、データを記録媒体に記録するために用いられるデータ記録装置及びデータ記録方法であって、特にデータの更新技術に関する。
【0002】
【従来の技術】
一般に、パソコン、デジタル録画装置、ゲーム装置等の情報機器では、ハードディスク等の記録媒体にデータを記録及び読み出すためのシステムとして、ファイル形式によってデータを管理するファイルシステムが用いられる。代表的なファイルシステムとして、データを所定のクラスタ単位(例えば、512バイト)の1つ又は複数のクラスタデータに分割して管理する方式が存在する。この方式では、クラスタデータが記録媒体内の空き領域に記録され、このクラスタデータを所定のファイルインデックスを用いて管理することを行う。このファイルインデックスは、記録媒体に記録されたデータ、すなわちファイル毎に作成され、ファイルの属性、クラスタデータが記録されている位置及びその順序等の情報が記述されている。
【0003】
このファイルインデックスを用いた従来のファイルシステムの概念を、図6及び図7を用いて説明する。なお、ファイルインデックスを用いた従来のファイルシステムは、例えば非特許文献1に開示されている。
【0004】
図6は、従来のファイルシステムにおいてデータの記録を実行するデータ記録装置の機能ブロックを示す図である。図7は、図6の記録媒体61内部の記録構造の一例を示す図である。
図6において、従来のデータ記録装置は、記録媒体61と、データ処理部62と、作業用メモリ63と、クラスタデータ処理部64と、ファイルインデックス処理部65とを備える。
【0005】
記録媒体61は、ハードディスクやDVD−RAM等の媒体である。この記録媒体61は、図6に示すように、ファイルインデックスを記録するインデックス領域611と、予め所定のクラスタ単位で区分けされたクラスタデータを記録するクラスタ領域612とで構成される。各ファイルインデックスは、図7に示すように、ファイル名、ファイルの属性情報及びファイルを構成するクラスタデータが記録されている記録媒体61上のクラスタ位置(例えばアドレス)及び順序を示すクラスタ配置情報を、テーブル形式で保持する。
【0006】
まず、新たなデータを記録媒体61に記録する処理を説明する。
データ処理部62は、記録媒体61へ記録すべきデータを入力すると、このデータをクラスタ単位の1つ又は複数のクラスタデータに分割して、作業用メモリ63に格納する。作業用メモリ63に1つ又は複数のクラスタデータが格納されると、クラスタデータ処理部64は、記録媒体61のクラスタ領域612を検索し、空いているクラスタを抽出する。次に、クラスタデータ処理部64は、クラスタデータを作業用メモリ63から読み出して、記録媒体61の抽出した空きクラスタに順に記録する。全てのクラスタデータの記録が終了すると、ファイルインデックス処理部65は、記録媒体61のインデックス領域611に新たなファイルインデックスを作成し、各クラスタデータを記録したクラスタの位置及び順序の情報をクラスタ配置情報に記述する。
【0007】
図7に例示しているファイルインデックスの場合、4つのクラスタデータC1〜C4によって1つのファイルが構成され、先頭のクラスタデータC1が記録媒体61上のクラスタ1001に、2番目のクラスタデータC2が記録媒体61上のクラスタ1002に、3番目のクラスタデータC3が記録媒体61上のクラスタ1004に、末尾のクラスタデータC4が記録媒体61上のクラスタ1006に記録されていることを示している。
【0008】
次に、すでに記録されているデータを追加又は上書き等によって更新する処理を説明する。
新たなデータを追加する場合、クラスタデータ処理部64は、データ処理部62を介して作業用メモリ63に格納された、追加されるクラスタデータC5を、クラスタ領域612の空きクラスタ、例えばクラスタ1007に記録する。ファイルインデックス処理部65は、データを追加したファイルに対応するファイルインデックスのクラスタ配置情報を、クラスタデータC5を記録したクラスタ1007の位置情報を末尾に追記して更新する。
【0009】
同サイズのデータを上書きする場合、クラスタデータ処理部64は、データ処理部62を介して作業用メモリ63に格納された、クラスタデータC2に上書きで記録されるクラスタデータC2’を、クラスタ領域612のクラスタ1002に記録する。この場合には、ファイルインデックスのクラスタ配置情報は、書き換えられない。
【0010】
異なるサイズのデータを上書きする場合、クラスタデータ処理部64は、データ処理部62を介して作業用メモリ63に格納された、クラスタデータC2に上書きで記録されるクラスタデータC2’及びC2”を、クラスタ領域612のクラスタ1002及び空きクラスタ、例えばクラスタ1007に記録する。ファイルインデックス処理部65は、データを上書き及び追加で記録したファイルに対応するファイルインデックスのクラスタ配置情報を、3番目がクラスタ1007の位置情報、4番目がクラスタ1004の位置情報及び末尾がクラスタ1006の位置情報となるように更新する。
【0011】
なお、上記のように記録媒体61に記録されたデータを読み出す場合には、ファイルインデックス処理部65が、ファイル名をキーとしてインデックス領域611を検索し、該当するファイルインデックスを抽出する。次に、ファイルインデックス処理部65は、抽出したファイルインデックスのクラスタ配置情報を参照し、データがクラスタ1001、1002、1004及び1006に分割して記録されていることを認識する。そして、クラスタデータ処理部64は、クラスタ配置情報に記述されている先頭のクラスタからクラスタデータC1〜C4を順に読み出して出力する。
【0012】
【非特許文献1】
「オペレーティングシステム 第2版」、A.S.タネンバウム他著
株式会社ピアソン・エデュケーション、1998年5月20日、
第1刷発行
【0013】
【発明が解決しようとする課題】
しかしながら、上記従来のデータ記録装置では、データの更新処理において次の問題点がある。
第1の問題点として、クラスタ領域612へクラスタデータを記録している途中に、停電やバッテリー切れによる電源断等の障害が発生した場合、更新すべきクラスタデータが正常に記録されないまま処理が中断されてしまう。このため、次にこのデータにアクセスした時には、インデックス領域611からファイルインデックスを正しく読み出すことはできても、クラスタ領域612からは更新後のデータどころか更新前のデータさえも正しく読み出すことができない。
【0014】
第2の問題点として、クラスタ領域612へのクラスタデータの記録完了後にインデックス領域611のファイルインデックスを更新している途中に、停電やバッテリー切れによる電源断等の障害が発生した場合、ファイルインデックスが正常に更新されないまま処理が中断されてしまう。このため、次にこのデータをアクセスした時には、インデックス領域611からファイルインデックスを正しく読み出すことができない。
【0015】
このような問題を解決するために、各ファイルについて、同じデータ内容のオリジナルファイルとバックアップ用ファイルとを記録媒体上に記録する方法(冗長記録方法)が、従来から存在する。この冗長記録方法により、オリジナルファイルのデータが壊れていた場合でも、バックアップ用ファイルを読み出すことでデータ再現不可能という事態を回避することができていた。
【0016】
しかしながら、上記冗長記録方法では、全てのファイルについてバックアップ用ファイルを記録するため、従来方法と比べて記録媒体に2倍の容量が必要となる。また、この冗長記録方法では、同じデータを毎回2回記録する必要があるため、記録媒体へのアクセス時間も2倍かかってしまう。
【0017】
また、この冗長記録方法では、クラスタデータの記録状態(正常か壊れているか)に応じて、オリジナルファイル又はバックアップ用ファイルのいずれを読み出すべきかを、判定する処理が別途必要となる。さらに、冗長記録方法では、記録する2つのファイルのうちいずれか1つが壊れた場合に、正しいファイルを壊れたファイルに再記録する必要があるため、回復処理のための余分な時間も必要となる。
【0018】
それ故に、本発明の目的は、全てのファイルのバックアップを行うことなく、データ更新処理中に電源断等の障害が発生してクラスタデータやファイルインデックスへの記録が中断された場合でも、次のアクセス時にデータの読み出しを可能とするデータ記録装置及びデータ記録方法を提供することである。
【0019】
【課題を解決するための手段及び発明の効果】
本発明は、上記目的を達成させるために、以下に示す特徴を備えている。
第1の発明は、所定の記録単位である1つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録装置であって、
データをクラスタデータ単位で記録媒体の空き領域に記録するクラスタデータ記録処理部と、クラスタデータ記録処理部によって記録されたデータが新たなファイルを構成する新規データである場合、新規データに対するファイルインデックスを常用ファイルインデックスとして作成し、記録媒体に記録する常用ファイルインデックス記録処理部と、クラスタデータ記録処理部によって記録されたデータが既存ファイルのデータを更新するための更新データである場合、更新データに対するファイルインデックスを予備ファイルインデックスとして作成し、記録媒体に記録する予備ファイルインデックス記録処理部と、予備ファイルインデックス記録処理部によって予備ファイルインデックスが記録された後、予備ファイルインデックスと同一ファイル名である既存の常用ファイルインデックスを記録媒体から検索し、検索した常用ファイルインデックスの内容を予備ファイルインデックスの内容に更新する常用ファイルインデックス更新処理部と、常用ファイルインデックス更新処理部によって常用ファイルインデックスの内容が更新された後、記録媒体から予備ファイルインデックスを消去する予備ファイルインデックス消去処理部とを備える。
【0020】
第2の発明は、第1の発明に従属するデータ記録装置であって、
データ記録装置の起動時に、記録媒体に記録されているファイルインデックスを検索し、予備ファイルインデックスの有無を検出するインデックス検索部と、インデックス検索部における予備ファイルインデックスが有るとの判断に応じて、常用ファイルインデックス更新処理部に対して既存の常用ファイルインデックスを予備ファイルインデックスと同一内容に更新させる指示を行い、及びその更新後に予備ファイルインデックス消去処理部に対して予備ファイルインデックスを消去させる指示を行う回復処理制御部とをさらに備える。
【0021】
第3、第5及び第7の発明は、所定の記録単位である1つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録方法、その方法をデータ記録装置に実行させるためのプログラム及びそのプログラムを記録した媒体であって、
データをクラスタデータ単位で記録媒体の空き領域に記録する第1の記録ステップと、第1の記録ステップで記録媒体に記録されたデータが新たなファイルを構成する新規データである場合、新規データに関するファイルインデックスを常用ファイルインデックスとして作成し、記録媒体に記録する第2の記録ステップと、第1の記録ステップで記録媒体に記録されたデータが既存ファイルのデータを更新するための更新データである場合、更新データに関するファイルインデックスを予備ファイルインデックスとして作成し、記録媒体に記録する第3の記録ステップと、第3の記録ステップの実行後に、予備ファイルインデックスと同一ファイル名である既存の常用ファイルインデックスを記録媒体から検索し、検索した常用ファイルインデックスの内容を予備ファイルインデックスの内容に更新する第1の更新ステップと、第1の更新ステップの実行後に、記録媒体から予備ファイルインデックスを消去する第1の消去ステップとを備える。
【0022】
第4、第6及び第8の発明は、それぞれ第3、第5及び第7の発明に従属するデータ記録方法、プログラム及び記録媒体であって、
実行開始時に記録媒体に記録されているファイルインデックスを検索し、予備ファイルインデックスの有無を検出するステップと、検出するステップにおける予備ファイルインデックスが有るとの判断に応じて、既存の常用ファイルインデックスを予備ファイルインデックスと同一内容に更新する第2の更新ステップと、第2の更新ステップの実行後に、記録媒体から予備ファイルインデックスを消去する第2の消去ステップとをさらに備える。
【0023】
上記のように、第1、第3、第5及び第7の発明によれば、更新後のクラスタデータ及びその予備ファイルインデックスをまず記録し、その記録後に常用ファイルインデックスを更新させる。これにより、データ更新処理の途中に電源断等の障害が発生しても、ファイルインデックスとクラスタデータとの整合性を常に保つことができ、データの読み出しが不可能となる現象を回避することができる。また、常用ファイルインデックスが更新された後、予備ファイルインデックスを消去するので、バックアップ用ファイルを冗長的に記録する従来の手法に比べ、記録媒体の容量が小さくて済む。
【0024】
上記のように、第2、第4、第6及び第8の発明によれば、障害回復後には特定の状態にあるファイルインデックスの回復処理を実行する。これにより、データ更新処理の途中に電源断等の障害が発生しても、ファイルインデックスとクラスタデータとの整合性を常に保つことができ、データの読み出しが不可能となる現象を回避することができる。また、このファイルインデックスの回復処理は、最大でも常用ファイルインデックスの作成又は更新と、予備ファイルインデックスの消去との2つの処理だけでよいため、ファイルインデックスの復旧を速やかに行うことができる。
【0025】
【発明の実施の形態】
以下、本発明の実施の形態を、図面を参照して説明する。
図1は、ファイルシステムにおいてデータの記録を実行する本発明の一実施形態に係るデータ記録装置の機能ブロックを示す図である。図1において、本実施形態のデータ記録装置は、記録媒体11と、データ処理部12と、作業用メモリ13と、クラスタデータ処理部14と、常用ファイルインデックス処理部15と、予備ファイルインデックス処理部16と、回復処理制御部17と、ファイルインデックス検索部18とを備える。
【0026】
典型的には、データ処理部12、クラスタデータ処理部14、常用ファイルインデックス処理部15、予備ファイルインデックス処理部16、回復処理制御部17及びファイルインデックス検索部18は、CPU及び所定の処理プログラムが格納されたROMで構成される。以下に説明する処理は、ROMに格納された処理プログラムをCPUが実行することで実現される。また、作業用メモリ13は、典型的にはRAMである。これらのCPU、ROM及びRAMは、バスによって接続される。
【0027】
記録媒体11は、ハードディスクやDVD−RAM等の媒体である。この記録媒体11は、図1に示すように、ファイルインデックスを記録するインデックス領域111と、予めクラスタ単位で区分けされたクラスタデータを記録するクラスタ領域112とで構成される。このインデックス領域111に記録されるファイルインデックスは、機能的に2種類に分けられる。1つは、データの記録時に作成され、通常のファイルアクセスの際に参照されるファイルインデックスである。もう1つは、データ更新処理の時に一時的に作成されるファイルインデックスである。以下の説明では、前者を常用ファイルインデックスと、後者を予備ファイルインデックスと記して区別することにする。各ファイルインデックスは、図7に示したように、ファイル名、ファイルの属性情報、及びファイルを構成するクラスタデータが記録されている記録媒体11上のクラスタ位置及び順序を示すクラスタ配置情報を、テーブル形式で保持する。
【0028】
上記構成による本実施形態のデータ記録装置が行う新たなデータの記録媒体11への記録処理は、上記従来の技術で説明した処理と同様に、データ処理部12、作業用メモリ13、クラスタデータ処理部14及び常用ファイルインデックス処理部15によって実行される。
【0029】
本実施形態のデータ記録装置は、記録媒体11にすでに記録されているデータを追加又は上書き等によって更新する処理に特徴がある。
以下、図2〜図4をさらに参照し、本実施形態に係るデータ記録装置が行うデータ更新に関するデータ記録方法を説明する。図2は、クラスタデータ及びファイルインデックスの更新処理手順を示すのフローチャートである。図3及び図4は、それぞれ図2の更新処理手順に基づいた具体的な一例を示す図である。
【0030】
データ処理部12は、記録媒体11にすでに記録されているファイルについて、データを更新するための新たなデータ(以下、更新データという)を入力すると、この更新データをクラスタ単位の1つ又は複数のクラスタデータに分割して、作業用メモリ13に格納する(ステップS201)。作業用メモリ13に1つ又は複数のクラスタデータが格納されると、クラスタデータ処理部14は、記録媒体11のクラスタ領域112を検索し、空いているクラスタを抽出する(ステップS202)。次に、クラスタデータ処理部14は、クラスタデータを作業用メモリ13から読み出して、抽出した記録媒体11の空きクラスタへ順に記録する(ステップS203)。
【0031】
全てのクラスタデータの記録が終了すると、予備ファイルインデックス処理部16は、クラスタデータ処理部14によって記録されたクラスタデータのクラスタ位置及び順序の情報をクラスタ配置情報に記述した予備ファイルインデックスを、記録媒体11のインデックス領域111に新たに作成する(ステップS204)。予備ファイルインデックスが作成された後、常用ファイルインデックス処理部15は、インデックス領域111にすでに作成されている更新前のデータに対応する常用ファイルインデックスを検索し、この常用ファイルインデックスの内容を予備ファイルインデックスの内容に書き換えて更新する(ステップS205)。常用ファイルインデックスの内容が更新されると、予備ファイルインデックス処理部16は、記録媒体11のインデックス領域111から予備ファイルインデックスを消去する(ステップS206)。
以上の処理によって、データ更新処理が完了する。
【0032】
さらに図3を参照して、上記更新処理手順を具体的に説明する。今、クラスタデータC1及びC2で構成されるデータAが、ファイルAとして記録媒体11にすでに記録されており(状態1)、このデータAがクラスタデータC3〜C5で構成される新たなデータA’に更新される場合を考える。
【0033】
データの更新処理が開始されると、まず、データA’のクラスタデータC3〜C5が、クラスタ領域112の空きクラスタ1010〜1012にそれぞれ記録される(状態2)。次に、記録されたクラスタデータC3〜C5のクラスタ位置を記述した予備ファイルインデックスが作成される(状態3)。なお、データ更新であるので、予備ファイルインデックスのファイル名及び属性情報は、常用ファイルインデックスと同一である。次に、常用ファイルインデックスの内容、すなわちクラスタ配置情報のクラスタ1001及び1002が、予備ファイルインデックスのクラスタ配置情報のクラスタ1010〜1012に書き換えられる(状態4)。最後に、予備ファイルインデックスが消去される(状態5)。また、この消去と共に、クラスタ領域112のクラスタ1001及び1002が開放される。
【0034】
このデータ更新処理を実行することによって、様々なタイミングで電源断等の障害が生じても、次のように必ず更新前又は更新後のいずれかのデータを読み出すことが可能となる。
【0035】
状態1から状態2の途中(図2、ステップS203)で障害が生じた場合、データA’(クラスタデータC3〜C5のいずれか)が壊れるが、常用ファイルインデックスに基づいて更新前のデータAを読み出すことが可能である。また、状態2から状態3の途中(図2、ステップS204)で障害が生じた場合、データA’の予備ファイルインデックスが壊れるが、常用ファイルインデックスに基づいて更新前のデータAを読み出すことが可能である。また、状態3から状態4の途中(図2、ステップS205)で障害が生じた場合、データAの常用ファイルインデックスが壊れるが、予備ファイルインデックスを使用して更新後のデータA’を読み出すことが可能である。なお、この場合には、後述する回復処理を必要とする。また、状態4から状態5の途中(図2、ステップS206)で障害が生じた場合、データA’の予備ファイルインデックスが壊れるが(不完全消去)、常用ファイルインデックスに基づいて更新後のデータA’を読み出すことが可能である。
【0036】
一般的に、ファイルシステムでは、アプリケーションプログラム等がファイル処理を実行するにあたって「オープン」と呼ばれる開始処理が行われる。この開始処理では、アクセスするファイルの常用ファイルインデックスが、所定のRAM上に読み出される。上述した予備ファイルインデックスは、読み出された常用ファイルインデックスを用いて一旦このRAM上で作成される。そして、作成された予備ファイルインデックスは、然るべきタイミングで記録媒体11に記録され、また常用ファイルインデックスの更新に用いられる。なお、オープン処理時に障害が生じても、RAM上のファイルインデックスが壊れるだけであり、問題はない。
【0037】
また、図3の例では、新たなデータA’を記録媒体11に全て記録する場合を説明したが、既存のデータAの一部のクラスタデータだけが更新されるような場合には、次のように更新処理を行っても構わない。
図4を参照して、今、クラスタデータC1〜C3で構成されるデータAが、ファイルAとして記録媒体11にすでに記録されており(状態1)、このデータAがクラスタデータC1、C2’及びC3で構成される新たなデータA’に更新される場合を考える。
【0038】
データの更新処理が開始されると、まず、データA’のうち更新が必要なクラスタデータC2’のみが、クラスタ領域112の空きクラスタ1010に記録される(状態2)。次に、記録されたクラスタデータC2’とクラスタデータC1及びC3のクラスタ位置を記述した予備ファイルインデックスが作成される(状態3)。なお、データ更新であるので、予備ファイルインデックスのファイル名及び属性情報は、常用ファイルインデックスと同一である。次に、常用ファイルインデックスの内容、すなわちクラスタ配置情報のクラスタ1001〜1003が、予備ファイルインデックスのクラスタ配置情報のクラスタ1001、1010及び1003に書き換えられる(状態4)。最後に、予備ファイルインデックスが消去される(状態5)。また、この消去と共に、クラスタ領域112のクラスタ1002が開放される。
【0039】
さて、上述したように予備ファイルインデックスが作成された後、常用ファイルインデックスの更新動作や予備ファイルインデックスの消去動作を行っている途中に障害が生じた場合には、いずれか一方のファイルインデックスだけが残ることになり同一ファイル名による2つのファイルインデックスが存在することはない。しかし、状態3が完了した時点や状態4が完了した時点で障害が生じた場合には、同一ファイル名による2つのファイルインデックスが存在することになる。また、予備ファイルインデックスだけが残った場合であっても、アクセス対象となる常用ファイルインデックスを作成し直す必要がある。従って、このような場合には、障害発生によって異常な状態になっているファイルインデックスを、正常な状態に回復させる必要がある。
そこで、次にファイルインデックスの回復処理について説明する。
【0040】
図5は、ファイルインデックスの回復処理手順を示すフローチャートである。
電源投入等でデータ記録装置が正常に動作できるようになると、ファイルインデックス検索部18は、記録媒体11のインデックス領域111を検索し、予備ファイルインデックスが記録されているか否かを確認する(ステップS501)。予備ファイルインデックスが記録されていない場合(ステップS502,No)、データ更新処理が正常に完了している等によってファイルインデックスの回復処理が必要ないと判断され、処理が終了する。予備ファイルインデックスが記録されている場合(ステップS502,Yes)、ファイルインデックス検索部18は、記録媒体11のインデックス領域111をさらに検索し、この予備ファイルインデックスと同じファイル名の常用ファイルインデックスが存在するか否かを確認する(ステップS503)。
【0041】
同じファイル名の常用ファイルインデックスが存在しない場合(ステップS504,No)、回復処理制御部17は、常用ファイルインデックス処理部15に指示して、予備ファイルインデックスと同じ内容の常用ファイルインデックスを記録媒体11のインデックス領域111に作成させる(ステップS505)。その後、回復処理制御部17は、予備ファイルインデックス処理部16に指示して、この予備ファイルインデックスを消去させる(ステップS508)。一方、同じファイル名の常用ファイルインデックスが存在する場合(ステップS504,Yes)、回復処理制御部17は、この常用ファイルインデックスの内容が更新済みかどうかを判断する(ステップS506)。この判断は、常用ファイルインデックスの内容と予備ファイルインデックスの内容とを照合することで行うことができる。
【0042】
常用ファイルインデックスの内容が更新済みでない場合(ステップS506,No)、回復処理制御部17は、常用ファイルインデックス処理部15に指示して、常用ファイルインデックスの内容を予備ファイルインデックスの内容に更新させる(ステップS507)。その後、回復処理制御部17は、予備ファイルインデックス処理部16に指示して、この予備ファイルインデックスを消去させる(ステップS508)。常用ファイルインデックスの内容が更新済みである場合(ステップS506,Yes)、回復処理制御部17は、予備ファイルインデックス処理部16に指示して、この予備ファイルインデックスを消去させる(ステップS508)。
【0043】
このように、障害復旧後にファイルインデックスの回復処理を実行することによって、次にファイルがアクセスされた時でも問題なくデータの読み出しを行うことができるのである。
なお、ファイルインデックス回復処理の実行中に障害が発生した場合には、上述した図5の回復処理を再度実行すればよい。
【0044】
以上のように、本発明の一実施形態に係るデータ記録装置及びデータ記録方法によれば、更新後のクラスタデータ及びその予備ファイルインデックスをまず記録し、その記録後に常用ファイルインデックスを更新させる。また、障害回復後には特定の状態にあるファイルインデックスの回復処理を実行する。
【0045】
これにより、データ更新処理の途中に電源断等の障害が発生しても、ファイルインデックスとクラスタデータとの整合性を常に保つことができ、データの読み出しが不可能となる現象を回避することができる。また、常用ファイルインデックスが更新された後、予備ファイルインデックスを消去するので、バックアップ用ファイルを冗長的に記録する従来の装置に比べ、記録媒体の容量が小さくて済む。さらに、ファイルインデックスの回復処理は、最大でも常用ファイルインデックスの作成又は更新と、予備ファイルインデックスの消去との2つの処理だけでよいため、ファイルインデックスの復旧を速やかに行うことができる。
【0046】
なお、上記実施形態では、本発明のデータ記録装置及びデータ記録方法を、1つのファイルが1つの常用ファイルインデックスによって管理されるファイルシステムに適用させた場合を説明している。しかし、本発明のデータ記録装置及びデータ記録方法は、1つのファイルがリンクされた複数の常用ファイルインデックスで管理されるファイルシステムに適用することも可能である。この場合、データの更新が発生した常用ファイルインデックスに対して予備ファイルインデックスを作成することで、同様の効果を奏することができる。
【0047】
また、本発明のデータ記録装置及びデータ記録方法は、UNIX(R)やLINUX等のファイルインデックス相当のファイル管理情報を持つ様々なファイルシステムに対して有効であり、上記実施形態で述べたファイルインデックスを用いるファイルシステムに限られるものではない。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るデータ記録装置の機能ブロックを示す図である。
【図2】クラスタデータ及びファイルインデックスの更新処理手順を示すのフローチャートである。
【図3】図2の更新処理手順に基づいた具体的な一例を示す図である。
【図4】図2の更新処理手順に基づいた具体的な他の一例を示す図である。
【図5】ファイルインデックスの回復処理手順を示すフローチャートである。
【図6】従来のデータ記録装置の機能ブロックを示す図である。
【図7】本発明及び従来の記録媒体内部の記録構造の一例を示す図である。
【符号の説明】
11,51…記録媒体
12,52…データ処理部
13,53…作業用メモリ
14,54…クラスタデータ処理部
15…常用ファイルインデックス処理部
16…予備ファイルインデックス処理部
17…回復処理制御部
18…ファイルインデックス検索部
55…ファイルインデックス処理部
111,511…インデックス領域
112,512…クラスタ領域
【発明の属する技術分野】
本発明は、データ記録装置、データ記録方法、当該方法を実行するためのプログラム及びプログラム記録媒体に関し、より特定的には、半導体メモリ、磁気ディスク及び光磁気ディスク等の記録媒体上でファイル形式によってデータを管理するファイルシステムにおいて、データを記録媒体に記録するために用いられるデータ記録装置及びデータ記録方法であって、特にデータの更新技術に関する。
【0002】
【従来の技術】
一般に、パソコン、デジタル録画装置、ゲーム装置等の情報機器では、ハードディスク等の記録媒体にデータを記録及び読み出すためのシステムとして、ファイル形式によってデータを管理するファイルシステムが用いられる。代表的なファイルシステムとして、データを所定のクラスタ単位(例えば、512バイト)の1つ又は複数のクラスタデータに分割して管理する方式が存在する。この方式では、クラスタデータが記録媒体内の空き領域に記録され、このクラスタデータを所定のファイルインデックスを用いて管理することを行う。このファイルインデックスは、記録媒体に記録されたデータ、すなわちファイル毎に作成され、ファイルの属性、クラスタデータが記録されている位置及びその順序等の情報が記述されている。
【0003】
このファイルインデックスを用いた従来のファイルシステムの概念を、図6及び図7を用いて説明する。なお、ファイルインデックスを用いた従来のファイルシステムは、例えば非特許文献1に開示されている。
【0004】
図6は、従来のファイルシステムにおいてデータの記録を実行するデータ記録装置の機能ブロックを示す図である。図7は、図6の記録媒体61内部の記録構造の一例を示す図である。
図6において、従来のデータ記録装置は、記録媒体61と、データ処理部62と、作業用メモリ63と、クラスタデータ処理部64と、ファイルインデックス処理部65とを備える。
【0005】
記録媒体61は、ハードディスクやDVD−RAM等の媒体である。この記録媒体61は、図6に示すように、ファイルインデックスを記録するインデックス領域611と、予め所定のクラスタ単位で区分けされたクラスタデータを記録するクラスタ領域612とで構成される。各ファイルインデックスは、図7に示すように、ファイル名、ファイルの属性情報及びファイルを構成するクラスタデータが記録されている記録媒体61上のクラスタ位置(例えばアドレス)及び順序を示すクラスタ配置情報を、テーブル形式で保持する。
【0006】
まず、新たなデータを記録媒体61に記録する処理を説明する。
データ処理部62は、記録媒体61へ記録すべきデータを入力すると、このデータをクラスタ単位の1つ又は複数のクラスタデータに分割して、作業用メモリ63に格納する。作業用メモリ63に1つ又は複数のクラスタデータが格納されると、クラスタデータ処理部64は、記録媒体61のクラスタ領域612を検索し、空いているクラスタを抽出する。次に、クラスタデータ処理部64は、クラスタデータを作業用メモリ63から読み出して、記録媒体61の抽出した空きクラスタに順に記録する。全てのクラスタデータの記録が終了すると、ファイルインデックス処理部65は、記録媒体61のインデックス領域611に新たなファイルインデックスを作成し、各クラスタデータを記録したクラスタの位置及び順序の情報をクラスタ配置情報に記述する。
【0007】
図7に例示しているファイルインデックスの場合、4つのクラスタデータC1〜C4によって1つのファイルが構成され、先頭のクラスタデータC1が記録媒体61上のクラスタ1001に、2番目のクラスタデータC2が記録媒体61上のクラスタ1002に、3番目のクラスタデータC3が記録媒体61上のクラスタ1004に、末尾のクラスタデータC4が記録媒体61上のクラスタ1006に記録されていることを示している。
【0008】
次に、すでに記録されているデータを追加又は上書き等によって更新する処理を説明する。
新たなデータを追加する場合、クラスタデータ処理部64は、データ処理部62を介して作業用メモリ63に格納された、追加されるクラスタデータC5を、クラスタ領域612の空きクラスタ、例えばクラスタ1007に記録する。ファイルインデックス処理部65は、データを追加したファイルに対応するファイルインデックスのクラスタ配置情報を、クラスタデータC5を記録したクラスタ1007の位置情報を末尾に追記して更新する。
【0009】
同サイズのデータを上書きする場合、クラスタデータ処理部64は、データ処理部62を介して作業用メモリ63に格納された、クラスタデータC2に上書きで記録されるクラスタデータC2’を、クラスタ領域612のクラスタ1002に記録する。この場合には、ファイルインデックスのクラスタ配置情報は、書き換えられない。
【0010】
異なるサイズのデータを上書きする場合、クラスタデータ処理部64は、データ処理部62を介して作業用メモリ63に格納された、クラスタデータC2に上書きで記録されるクラスタデータC2’及びC2”を、クラスタ領域612のクラスタ1002及び空きクラスタ、例えばクラスタ1007に記録する。ファイルインデックス処理部65は、データを上書き及び追加で記録したファイルに対応するファイルインデックスのクラスタ配置情報を、3番目がクラスタ1007の位置情報、4番目がクラスタ1004の位置情報及び末尾がクラスタ1006の位置情報となるように更新する。
【0011】
なお、上記のように記録媒体61に記録されたデータを読み出す場合には、ファイルインデックス処理部65が、ファイル名をキーとしてインデックス領域611を検索し、該当するファイルインデックスを抽出する。次に、ファイルインデックス処理部65は、抽出したファイルインデックスのクラスタ配置情報を参照し、データがクラスタ1001、1002、1004及び1006に分割して記録されていることを認識する。そして、クラスタデータ処理部64は、クラスタ配置情報に記述されている先頭のクラスタからクラスタデータC1〜C4を順に読み出して出力する。
【0012】
【非特許文献1】
「オペレーティングシステム 第2版」、A.S.タネンバウム他著
株式会社ピアソン・エデュケーション、1998年5月20日、
第1刷発行
【0013】
【発明が解決しようとする課題】
しかしながら、上記従来のデータ記録装置では、データの更新処理において次の問題点がある。
第1の問題点として、クラスタ領域612へクラスタデータを記録している途中に、停電やバッテリー切れによる電源断等の障害が発生した場合、更新すべきクラスタデータが正常に記録されないまま処理が中断されてしまう。このため、次にこのデータにアクセスした時には、インデックス領域611からファイルインデックスを正しく読み出すことはできても、クラスタ領域612からは更新後のデータどころか更新前のデータさえも正しく読み出すことができない。
【0014】
第2の問題点として、クラスタ領域612へのクラスタデータの記録完了後にインデックス領域611のファイルインデックスを更新している途中に、停電やバッテリー切れによる電源断等の障害が発生した場合、ファイルインデックスが正常に更新されないまま処理が中断されてしまう。このため、次にこのデータをアクセスした時には、インデックス領域611からファイルインデックスを正しく読み出すことができない。
【0015】
このような問題を解決するために、各ファイルについて、同じデータ内容のオリジナルファイルとバックアップ用ファイルとを記録媒体上に記録する方法(冗長記録方法)が、従来から存在する。この冗長記録方法により、オリジナルファイルのデータが壊れていた場合でも、バックアップ用ファイルを読み出すことでデータ再現不可能という事態を回避することができていた。
【0016】
しかしながら、上記冗長記録方法では、全てのファイルについてバックアップ用ファイルを記録するため、従来方法と比べて記録媒体に2倍の容量が必要となる。また、この冗長記録方法では、同じデータを毎回2回記録する必要があるため、記録媒体へのアクセス時間も2倍かかってしまう。
【0017】
また、この冗長記録方法では、クラスタデータの記録状態(正常か壊れているか)に応じて、オリジナルファイル又はバックアップ用ファイルのいずれを読み出すべきかを、判定する処理が別途必要となる。さらに、冗長記録方法では、記録する2つのファイルのうちいずれか1つが壊れた場合に、正しいファイルを壊れたファイルに再記録する必要があるため、回復処理のための余分な時間も必要となる。
【0018】
それ故に、本発明の目的は、全てのファイルのバックアップを行うことなく、データ更新処理中に電源断等の障害が発生してクラスタデータやファイルインデックスへの記録が中断された場合でも、次のアクセス時にデータの読み出しを可能とするデータ記録装置及びデータ記録方法を提供することである。
【0019】
【課題を解決するための手段及び発明の効果】
本発明は、上記目的を達成させるために、以下に示す特徴を備えている。
第1の発明は、所定の記録単位である1つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録装置であって、
データをクラスタデータ単位で記録媒体の空き領域に記録するクラスタデータ記録処理部と、クラスタデータ記録処理部によって記録されたデータが新たなファイルを構成する新規データである場合、新規データに対するファイルインデックスを常用ファイルインデックスとして作成し、記録媒体に記録する常用ファイルインデックス記録処理部と、クラスタデータ記録処理部によって記録されたデータが既存ファイルのデータを更新するための更新データである場合、更新データに対するファイルインデックスを予備ファイルインデックスとして作成し、記録媒体に記録する予備ファイルインデックス記録処理部と、予備ファイルインデックス記録処理部によって予備ファイルインデックスが記録された後、予備ファイルインデックスと同一ファイル名である既存の常用ファイルインデックスを記録媒体から検索し、検索した常用ファイルインデックスの内容を予備ファイルインデックスの内容に更新する常用ファイルインデックス更新処理部と、常用ファイルインデックス更新処理部によって常用ファイルインデックスの内容が更新された後、記録媒体から予備ファイルインデックスを消去する予備ファイルインデックス消去処理部とを備える。
【0020】
第2の発明は、第1の発明に従属するデータ記録装置であって、
データ記録装置の起動時に、記録媒体に記録されているファイルインデックスを検索し、予備ファイルインデックスの有無を検出するインデックス検索部と、インデックス検索部における予備ファイルインデックスが有るとの判断に応じて、常用ファイルインデックス更新処理部に対して既存の常用ファイルインデックスを予備ファイルインデックスと同一内容に更新させる指示を行い、及びその更新後に予備ファイルインデックス消去処理部に対して予備ファイルインデックスを消去させる指示を行う回復処理制御部とをさらに備える。
【0021】
第3、第5及び第7の発明は、所定の記録単位である1つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録方法、その方法をデータ記録装置に実行させるためのプログラム及びそのプログラムを記録した媒体であって、
データをクラスタデータ単位で記録媒体の空き領域に記録する第1の記録ステップと、第1の記録ステップで記録媒体に記録されたデータが新たなファイルを構成する新規データである場合、新規データに関するファイルインデックスを常用ファイルインデックスとして作成し、記録媒体に記録する第2の記録ステップと、第1の記録ステップで記録媒体に記録されたデータが既存ファイルのデータを更新するための更新データである場合、更新データに関するファイルインデックスを予備ファイルインデックスとして作成し、記録媒体に記録する第3の記録ステップと、第3の記録ステップの実行後に、予備ファイルインデックスと同一ファイル名である既存の常用ファイルインデックスを記録媒体から検索し、検索した常用ファイルインデックスの内容を予備ファイルインデックスの内容に更新する第1の更新ステップと、第1の更新ステップの実行後に、記録媒体から予備ファイルインデックスを消去する第1の消去ステップとを備える。
【0022】
第4、第6及び第8の発明は、それぞれ第3、第5及び第7の発明に従属するデータ記録方法、プログラム及び記録媒体であって、
実行開始時に記録媒体に記録されているファイルインデックスを検索し、予備ファイルインデックスの有無を検出するステップと、検出するステップにおける予備ファイルインデックスが有るとの判断に応じて、既存の常用ファイルインデックスを予備ファイルインデックスと同一内容に更新する第2の更新ステップと、第2の更新ステップの実行後に、記録媒体から予備ファイルインデックスを消去する第2の消去ステップとをさらに備える。
【0023】
上記のように、第1、第3、第5及び第7の発明によれば、更新後のクラスタデータ及びその予備ファイルインデックスをまず記録し、その記録後に常用ファイルインデックスを更新させる。これにより、データ更新処理の途中に電源断等の障害が発生しても、ファイルインデックスとクラスタデータとの整合性を常に保つことができ、データの読み出しが不可能となる現象を回避することができる。また、常用ファイルインデックスが更新された後、予備ファイルインデックスを消去するので、バックアップ用ファイルを冗長的に記録する従来の手法に比べ、記録媒体の容量が小さくて済む。
【0024】
上記のように、第2、第4、第6及び第8の発明によれば、障害回復後には特定の状態にあるファイルインデックスの回復処理を実行する。これにより、データ更新処理の途中に電源断等の障害が発生しても、ファイルインデックスとクラスタデータとの整合性を常に保つことができ、データの読み出しが不可能となる現象を回避することができる。また、このファイルインデックスの回復処理は、最大でも常用ファイルインデックスの作成又は更新と、予備ファイルインデックスの消去との2つの処理だけでよいため、ファイルインデックスの復旧を速やかに行うことができる。
【0025】
【発明の実施の形態】
以下、本発明の実施の形態を、図面を参照して説明する。
図1は、ファイルシステムにおいてデータの記録を実行する本発明の一実施形態に係るデータ記録装置の機能ブロックを示す図である。図1において、本実施形態のデータ記録装置は、記録媒体11と、データ処理部12と、作業用メモリ13と、クラスタデータ処理部14と、常用ファイルインデックス処理部15と、予備ファイルインデックス処理部16と、回復処理制御部17と、ファイルインデックス検索部18とを備える。
【0026】
典型的には、データ処理部12、クラスタデータ処理部14、常用ファイルインデックス処理部15、予備ファイルインデックス処理部16、回復処理制御部17及びファイルインデックス検索部18は、CPU及び所定の処理プログラムが格納されたROMで構成される。以下に説明する処理は、ROMに格納された処理プログラムをCPUが実行することで実現される。また、作業用メモリ13は、典型的にはRAMである。これらのCPU、ROM及びRAMは、バスによって接続される。
【0027】
記録媒体11は、ハードディスクやDVD−RAM等の媒体である。この記録媒体11は、図1に示すように、ファイルインデックスを記録するインデックス領域111と、予めクラスタ単位で区分けされたクラスタデータを記録するクラスタ領域112とで構成される。このインデックス領域111に記録されるファイルインデックスは、機能的に2種類に分けられる。1つは、データの記録時に作成され、通常のファイルアクセスの際に参照されるファイルインデックスである。もう1つは、データ更新処理の時に一時的に作成されるファイルインデックスである。以下の説明では、前者を常用ファイルインデックスと、後者を予備ファイルインデックスと記して区別することにする。各ファイルインデックスは、図7に示したように、ファイル名、ファイルの属性情報、及びファイルを構成するクラスタデータが記録されている記録媒体11上のクラスタ位置及び順序を示すクラスタ配置情報を、テーブル形式で保持する。
【0028】
上記構成による本実施形態のデータ記録装置が行う新たなデータの記録媒体11への記録処理は、上記従来の技術で説明した処理と同様に、データ処理部12、作業用メモリ13、クラスタデータ処理部14及び常用ファイルインデックス処理部15によって実行される。
【0029】
本実施形態のデータ記録装置は、記録媒体11にすでに記録されているデータを追加又は上書き等によって更新する処理に特徴がある。
以下、図2〜図4をさらに参照し、本実施形態に係るデータ記録装置が行うデータ更新に関するデータ記録方法を説明する。図2は、クラスタデータ及びファイルインデックスの更新処理手順を示すのフローチャートである。図3及び図4は、それぞれ図2の更新処理手順に基づいた具体的な一例を示す図である。
【0030】
データ処理部12は、記録媒体11にすでに記録されているファイルについて、データを更新するための新たなデータ(以下、更新データという)を入力すると、この更新データをクラスタ単位の1つ又は複数のクラスタデータに分割して、作業用メモリ13に格納する(ステップS201)。作業用メモリ13に1つ又は複数のクラスタデータが格納されると、クラスタデータ処理部14は、記録媒体11のクラスタ領域112を検索し、空いているクラスタを抽出する(ステップS202)。次に、クラスタデータ処理部14は、クラスタデータを作業用メモリ13から読み出して、抽出した記録媒体11の空きクラスタへ順に記録する(ステップS203)。
【0031】
全てのクラスタデータの記録が終了すると、予備ファイルインデックス処理部16は、クラスタデータ処理部14によって記録されたクラスタデータのクラスタ位置及び順序の情報をクラスタ配置情報に記述した予備ファイルインデックスを、記録媒体11のインデックス領域111に新たに作成する(ステップS204)。予備ファイルインデックスが作成された後、常用ファイルインデックス処理部15は、インデックス領域111にすでに作成されている更新前のデータに対応する常用ファイルインデックスを検索し、この常用ファイルインデックスの内容を予備ファイルインデックスの内容に書き換えて更新する(ステップS205)。常用ファイルインデックスの内容が更新されると、予備ファイルインデックス処理部16は、記録媒体11のインデックス領域111から予備ファイルインデックスを消去する(ステップS206)。
以上の処理によって、データ更新処理が完了する。
【0032】
さらに図3を参照して、上記更新処理手順を具体的に説明する。今、クラスタデータC1及びC2で構成されるデータAが、ファイルAとして記録媒体11にすでに記録されており(状態1)、このデータAがクラスタデータC3〜C5で構成される新たなデータA’に更新される場合を考える。
【0033】
データの更新処理が開始されると、まず、データA’のクラスタデータC3〜C5が、クラスタ領域112の空きクラスタ1010〜1012にそれぞれ記録される(状態2)。次に、記録されたクラスタデータC3〜C5のクラスタ位置を記述した予備ファイルインデックスが作成される(状態3)。なお、データ更新であるので、予備ファイルインデックスのファイル名及び属性情報は、常用ファイルインデックスと同一である。次に、常用ファイルインデックスの内容、すなわちクラスタ配置情報のクラスタ1001及び1002が、予備ファイルインデックスのクラスタ配置情報のクラスタ1010〜1012に書き換えられる(状態4)。最後に、予備ファイルインデックスが消去される(状態5)。また、この消去と共に、クラスタ領域112のクラスタ1001及び1002が開放される。
【0034】
このデータ更新処理を実行することによって、様々なタイミングで電源断等の障害が生じても、次のように必ず更新前又は更新後のいずれかのデータを読み出すことが可能となる。
【0035】
状態1から状態2の途中(図2、ステップS203)で障害が生じた場合、データA’(クラスタデータC3〜C5のいずれか)が壊れるが、常用ファイルインデックスに基づいて更新前のデータAを読み出すことが可能である。また、状態2から状態3の途中(図2、ステップS204)で障害が生じた場合、データA’の予備ファイルインデックスが壊れるが、常用ファイルインデックスに基づいて更新前のデータAを読み出すことが可能である。また、状態3から状態4の途中(図2、ステップS205)で障害が生じた場合、データAの常用ファイルインデックスが壊れるが、予備ファイルインデックスを使用して更新後のデータA’を読み出すことが可能である。なお、この場合には、後述する回復処理を必要とする。また、状態4から状態5の途中(図2、ステップS206)で障害が生じた場合、データA’の予備ファイルインデックスが壊れるが(不完全消去)、常用ファイルインデックスに基づいて更新後のデータA’を読み出すことが可能である。
【0036】
一般的に、ファイルシステムでは、アプリケーションプログラム等がファイル処理を実行するにあたって「オープン」と呼ばれる開始処理が行われる。この開始処理では、アクセスするファイルの常用ファイルインデックスが、所定のRAM上に読み出される。上述した予備ファイルインデックスは、読み出された常用ファイルインデックスを用いて一旦このRAM上で作成される。そして、作成された予備ファイルインデックスは、然るべきタイミングで記録媒体11に記録され、また常用ファイルインデックスの更新に用いられる。なお、オープン処理時に障害が生じても、RAM上のファイルインデックスが壊れるだけであり、問題はない。
【0037】
また、図3の例では、新たなデータA’を記録媒体11に全て記録する場合を説明したが、既存のデータAの一部のクラスタデータだけが更新されるような場合には、次のように更新処理を行っても構わない。
図4を参照して、今、クラスタデータC1〜C3で構成されるデータAが、ファイルAとして記録媒体11にすでに記録されており(状態1)、このデータAがクラスタデータC1、C2’及びC3で構成される新たなデータA’に更新される場合を考える。
【0038】
データの更新処理が開始されると、まず、データA’のうち更新が必要なクラスタデータC2’のみが、クラスタ領域112の空きクラスタ1010に記録される(状態2)。次に、記録されたクラスタデータC2’とクラスタデータC1及びC3のクラスタ位置を記述した予備ファイルインデックスが作成される(状態3)。なお、データ更新であるので、予備ファイルインデックスのファイル名及び属性情報は、常用ファイルインデックスと同一である。次に、常用ファイルインデックスの内容、すなわちクラスタ配置情報のクラスタ1001〜1003が、予備ファイルインデックスのクラスタ配置情報のクラスタ1001、1010及び1003に書き換えられる(状態4)。最後に、予備ファイルインデックスが消去される(状態5)。また、この消去と共に、クラスタ領域112のクラスタ1002が開放される。
【0039】
さて、上述したように予備ファイルインデックスが作成された後、常用ファイルインデックスの更新動作や予備ファイルインデックスの消去動作を行っている途中に障害が生じた場合には、いずれか一方のファイルインデックスだけが残ることになり同一ファイル名による2つのファイルインデックスが存在することはない。しかし、状態3が完了した時点や状態4が完了した時点で障害が生じた場合には、同一ファイル名による2つのファイルインデックスが存在することになる。また、予備ファイルインデックスだけが残った場合であっても、アクセス対象となる常用ファイルインデックスを作成し直す必要がある。従って、このような場合には、障害発生によって異常な状態になっているファイルインデックスを、正常な状態に回復させる必要がある。
そこで、次にファイルインデックスの回復処理について説明する。
【0040】
図5は、ファイルインデックスの回復処理手順を示すフローチャートである。
電源投入等でデータ記録装置が正常に動作できるようになると、ファイルインデックス検索部18は、記録媒体11のインデックス領域111を検索し、予備ファイルインデックスが記録されているか否かを確認する(ステップS501)。予備ファイルインデックスが記録されていない場合(ステップS502,No)、データ更新処理が正常に完了している等によってファイルインデックスの回復処理が必要ないと判断され、処理が終了する。予備ファイルインデックスが記録されている場合(ステップS502,Yes)、ファイルインデックス検索部18は、記録媒体11のインデックス領域111をさらに検索し、この予備ファイルインデックスと同じファイル名の常用ファイルインデックスが存在するか否かを確認する(ステップS503)。
【0041】
同じファイル名の常用ファイルインデックスが存在しない場合(ステップS504,No)、回復処理制御部17は、常用ファイルインデックス処理部15に指示して、予備ファイルインデックスと同じ内容の常用ファイルインデックスを記録媒体11のインデックス領域111に作成させる(ステップS505)。その後、回復処理制御部17は、予備ファイルインデックス処理部16に指示して、この予備ファイルインデックスを消去させる(ステップS508)。一方、同じファイル名の常用ファイルインデックスが存在する場合(ステップS504,Yes)、回復処理制御部17は、この常用ファイルインデックスの内容が更新済みかどうかを判断する(ステップS506)。この判断は、常用ファイルインデックスの内容と予備ファイルインデックスの内容とを照合することで行うことができる。
【0042】
常用ファイルインデックスの内容が更新済みでない場合(ステップS506,No)、回復処理制御部17は、常用ファイルインデックス処理部15に指示して、常用ファイルインデックスの内容を予備ファイルインデックスの内容に更新させる(ステップS507)。その後、回復処理制御部17は、予備ファイルインデックス処理部16に指示して、この予備ファイルインデックスを消去させる(ステップS508)。常用ファイルインデックスの内容が更新済みである場合(ステップS506,Yes)、回復処理制御部17は、予備ファイルインデックス処理部16に指示して、この予備ファイルインデックスを消去させる(ステップS508)。
【0043】
このように、障害復旧後にファイルインデックスの回復処理を実行することによって、次にファイルがアクセスされた時でも問題なくデータの読み出しを行うことができるのである。
なお、ファイルインデックス回復処理の実行中に障害が発生した場合には、上述した図5の回復処理を再度実行すればよい。
【0044】
以上のように、本発明の一実施形態に係るデータ記録装置及びデータ記録方法によれば、更新後のクラスタデータ及びその予備ファイルインデックスをまず記録し、その記録後に常用ファイルインデックスを更新させる。また、障害回復後には特定の状態にあるファイルインデックスの回復処理を実行する。
【0045】
これにより、データ更新処理の途中に電源断等の障害が発生しても、ファイルインデックスとクラスタデータとの整合性を常に保つことができ、データの読み出しが不可能となる現象を回避することができる。また、常用ファイルインデックスが更新された後、予備ファイルインデックスを消去するので、バックアップ用ファイルを冗長的に記録する従来の装置に比べ、記録媒体の容量が小さくて済む。さらに、ファイルインデックスの回復処理は、最大でも常用ファイルインデックスの作成又は更新と、予備ファイルインデックスの消去との2つの処理だけでよいため、ファイルインデックスの復旧を速やかに行うことができる。
【0046】
なお、上記実施形態では、本発明のデータ記録装置及びデータ記録方法を、1つのファイルが1つの常用ファイルインデックスによって管理されるファイルシステムに適用させた場合を説明している。しかし、本発明のデータ記録装置及びデータ記録方法は、1つのファイルがリンクされた複数の常用ファイルインデックスで管理されるファイルシステムに適用することも可能である。この場合、データの更新が発生した常用ファイルインデックスに対して予備ファイルインデックスを作成することで、同様の効果を奏することができる。
【0047】
また、本発明のデータ記録装置及びデータ記録方法は、UNIX(R)やLINUX等のファイルインデックス相当のファイル管理情報を持つ様々なファイルシステムに対して有効であり、上記実施形態で述べたファイルインデックスを用いるファイルシステムに限られるものではない。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るデータ記録装置の機能ブロックを示す図である。
【図2】クラスタデータ及びファイルインデックスの更新処理手順を示すのフローチャートである。
【図3】図2の更新処理手順に基づいた具体的な一例を示す図である。
【図4】図2の更新処理手順に基づいた具体的な他の一例を示す図である。
【図5】ファイルインデックスの回復処理手順を示すフローチャートである。
【図6】従来のデータ記録装置の機能ブロックを示す図である。
【図7】本発明及び従来の記録媒体内部の記録構造の一例を示す図である。
【符号の説明】
11,51…記録媒体
12,52…データ処理部
13,53…作業用メモリ
14,54…クラスタデータ処理部
15…常用ファイルインデックス処理部
16…予備ファイルインデックス処理部
17…回復処理制御部
18…ファイルインデックス検索部
55…ファイルインデックス処理部
111,511…インデックス領域
112,512…クラスタ領域
Claims (8)
- 所定の記録単位である1つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録装置であって、
データをクラスタデータ単位で前記記録媒体の空き領域に記録するクラスタデータ記録処理部と、
前記クラスタデータ記録処理部によって記録されたデータが新たなファイルを構成する新規データである場合、当該新規データに対する前記ファイルインデックスを常用ファイルインデックスとして作成し、前記記録媒体に記録する常用ファイルインデックス記録処理部と、
前記クラスタデータ記録処理部によって記録されたデータが既存ファイルのデータを更新するための更新データである場合、当該更新データに対する前記ファイルインデックスを予備ファイルインデックスとして作成し、前記記録媒体に記録する予備ファイルインデックス記録処理部と、
前記予備ファイルインデックス記録処理部によって前記予備ファイルインデックスが記録された後、当該予備ファイルインデックスと同一ファイル名である既存の前記常用ファイルインデックスを前記記録媒体から検索し、検索した当該常用ファイルインデックスの内容を当該予備ファイルインデックスの内容に更新する常用ファイルインデックス更新処理部と、
前記常用ファイルインデックス更新処理部によって前記常用ファイルインデックスの内容が更新された後、前記記録媒体から前記予備ファイルインデックスを消去する予備ファイルインデックス消去処理部とを備える、データ記録装置。 - データ記録装置の起動時に、前記記録媒体に記録されているファイルインデックスを検索し、前記予備ファイルインデックスの有無を検出するインデックス検索部と、
前記インデックス検索部における前記予備ファイルインデックスが有るとの判断に応じて、前記常用ファイルインデックス更新処理部に対して既存の前記常用ファイルインデックスを当該予備ファイルインデックスと同一内容に更新させる指示を行い、及びその更新後に前記予備ファイルインデックス消去処理部に対して当該予備ファイルインデックスを消去させる指示を行う回復処理制御部とをさらに備える、請求項1に記載のデータ記録装置。 - 所定の記録単位である1つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録方法であって、
データをクラスタデータ単位で前記記録媒体の空き領域に記録する第1の記録ステップと、
前記第1の記録ステップで前記記録媒体に記録されたデータが新たなファイルを構成する新規データである場合、当該新規データに関する前記ファイルインデックスを常用ファイルインデックスとして作成し、前記記録媒体に記録する第2の記録ステップと、
前記第1の記録ステップで前記記録媒体に記録されたデータが既存ファイルのデータを更新するための更新データである場合、当該更新データに関する前記ファイルインデックスを予備ファイルインデックスとして作成し、前記記録媒体に記録する第3の記録ステップと、
前記第3の記録ステップの実行後に、前記予備ファイルインデックスと同一ファイル名である既存の前記常用ファイルインデックスを前記記録媒体から検索し、検索した当該常用ファイルインデックスの内容を当該予備ファイルインデックスの内容に更新する第1の更新ステップと、
前記第1の更新ステップの実行後に、前記記録媒体から前記予備ファイルインデックスを消去する第1の消去ステップとを備える、データ記録方法。 - 実行開始時に前記記録媒体に記録されているファイルインデックスを検索し、前記予備ファイルインデックスの有無を検出するステップと、
前記検出するステップにおける前記予備ファイルインデックスが有るとの判断に応じて、既存の前記常用ファイルインデックスを当該予備ファイルインデックスと同一内容に更新する第2の更新ステップと、
前記第2の更新ステップの実行後に、前記記録媒体から前記予備ファイルインデックスを消去する第2の消去ステップとをさらに備える、請求項3に記載のデータ記録方法。 - 所定の記録単位である1つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録装置が、実行するプログラムであって、
データをクラスタデータ単位で前記記録媒体の空き領域に記録する第1の記録ステップと、
前記第1の記録ステップで前記記録媒体に記録されたデータが新たなファイルを構成する新規データである場合、当該新規データに関する前記ファイルインデックスを常用ファイルインデックスとして作成し、前記記録媒体に記録する第2の記録ステップと、
前記第1の記録ステップで前記記録媒体に記録されたデータが既存ファイルのデータを更新するための更新データである場合、当該更新データに関する前記ファイルインデックスを予備ファイルインデックスとして作成し、前記記録媒体に記録する第3の記録ステップと、
前記第3の記録ステップの実行後に、前記予備ファイルインデックスと同一ファイル名である既存の前記常用ファイルインデックスを前記記録媒体から検索し、検索した当該常用ファイルインデックスの内容を当該予備ファイルインデックスの内容に更新する第1の更新ステップと、
前記第1の更新ステップの実行後に、前記記録媒体から前記予備ファイルインデックスを消去する第1の消去ステップとを、前記データ記録装置に実行させるためのプログラム。 - 実行開始時に前記記録媒体に記録されているファイルインデックスを検索し、前記予備ファイルインデックスの有無を検出するステップと、
前記検出するステップにおける前記予備ファイルインデックスが有るとの判断に応じて、既存の前記常用ファイルインデックスを当該予備ファイルインデックスと同一内容に更新する第2の更新ステップと、
前記第2の更新ステップの実行後に、前記記録媒体から前記予備ファイルインデックスを消去する第2の消去ステップとをさらに備える、請求項5に記載のプログラム。 - 所定の記録単位である1つ又は複数のクラスタデータで構成されるファイルと、少なくともファイル名、クラスタデータが記録されている記録媒体上の位置及び順序を記述するファイルインデックスとを用いて、データを記録媒体に記録するデータ記録装置が、実行するプログラムを記録した媒体であって、
データをクラスタデータ単位で前記記録媒体の空き領域に記録する第1の記録ステップと、
前記第1の記録ステップで前記記録媒体に記録されたデータが新たなファイルを構成する新規データである場合、当該新規データに関する前記ファイルインデックスを常用ファイルインデックスとして作成し、前記記録媒体に記録する第2の記録ステップと、
前記第1の記録ステップで前記記録媒体に記録されたデータが既存ファイルのデータを更新するための更新データである場合、当該更新データに関する前記ファイルインデックスを予備ファイルインデックスとして作成し、前記記録媒体に記録する第3の記録ステップと、
前記第3の記録ステップの実行後に、前記予備ファイルインデックスと同一ファイル名である既存の前記常用ファイルインデックスを前記記録媒体から検索し、検索した当該常用ファイルインデックスの内容を当該予備ファイルインデックスの内容に更新する第1の更新ステップと、
前記第1の更新ステップの実行後に、前記記録媒体から前記予備ファイルインデックスを消去する第1の消去ステップとを、前記データ記録装置に実行させるためのプログラムを記録した記録媒体。 - 実行開始時に前記記録媒体に記録されているファイルインデックスを検索し、前記予備ファイルインデックスの有無を検出するステップと、
前記検出するステップにおける前記予備ファイルインデックスが有るとの判断に応じて、既存の前記常用ファイルインデックスを当該予備ファイルインデックスと同一内容に更新する第2の更新ステップと、
前記第2の更新ステップの実行後に、前記記録媒体から前記予備ファイルインデックスを消去する第2の消去ステップとをさらに備える、請求項7に記載の記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003092196A JP2004005524A (ja) | 2002-03-29 | 2003-03-28 | データ記録装置、データ記録方法、当該方法を実行するためのプログラム及びプログラム記録媒体 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002096462 | 2002-03-29 | ||
JP2003092196A JP2004005524A (ja) | 2002-03-29 | 2003-03-28 | データ記録装置、データ記録方法、当該方法を実行するためのプログラム及びプログラム記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004005524A true JP2004005524A (ja) | 2004-01-08 |
Family
ID=30446419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003092196A Pending JP2004005524A (ja) | 2002-03-29 | 2003-03-28 | データ記録装置、データ記録方法、当該方法を実行するためのプログラム及びプログラム記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004005524A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006270514A (ja) * | 2005-03-24 | 2006-10-05 | Fuji Xerox Co Ltd | 画像処理装置およびクライアント装置 |
JP2011215870A (ja) * | 2010-03-31 | 2011-10-27 | Aisin Aw Co Ltd | 書き込み装置、書き込み方法、及び書き込みプログラム |
-
2003
- 2003-03-28 JP JP2003092196A patent/JP2004005524A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006270514A (ja) * | 2005-03-24 | 2006-10-05 | Fuji Xerox Co Ltd | 画像処理装置およびクライアント装置 |
JP2011215870A (ja) * | 2010-03-31 | 2011-10-27 | Aisin Aw Co Ltd | 書き込み装置、書き込み方法、及び書き込みプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7363540B2 (en) | Transaction-safe FAT file system improvements | |
US6732293B1 (en) | Method, software and apparatus for recovering and recycling data in conjunction with an operating system | |
US5559957A (en) | File system for a data storage device having a power fail recovery mechanism for write/replace operations | |
US7421551B2 (en) | Fast verification of computer backup data | |
US8156165B2 (en) | Transaction-safe FAT files system | |
JP2009282752A (ja) | ストレージデバイス及びファイルシステムの記録方法 | |
US20050262033A1 (en) | Data recording apparatus, data recording method, program for implementing the method, and program recording medium | |
JP2005050073A (ja) | データ復旧方法およびデータ記録装置 | |
CA2825891A1 (en) | Storage system for storing data in a plurality of storage devices | |
JP2008090378A (ja) | ハイブリッドファイルシステム、オペレーティングシステム、キャッシュ制御方法および記録媒体 | |
JP4159506B2 (ja) | 階層記憶装置、その復旧方法、及び復旧プログラム | |
US20050149493A1 (en) | Data recording apparatus and data recording method | |
JP2012068891A (ja) | 階層型ストレージシステム及びデータアーカイブ方法 | |
JP2008269520A (ja) | 記録装置及び記録方法 | |
JP2004005524A (ja) | データ記録装置、データ記録方法、当該方法を実行するためのプログラム及びプログラム記録媒体 | |
JP3957464B2 (ja) | データ更新装置 | |
JP2001184246A (ja) | オペレーティングシステムとの関連でデータを回復および再生する方法、ソフトウェア、および装置 | |
JP2005506632A (ja) | 大容量記憶装置用セキュリティ装置 | |
US20060143423A1 (en) | Storage device, data processing method thereof, data processing program thereof, and data processing system | |
JPH09152983A (ja) | フラッシュメモリに内在するファイルシステムにおけるリエントラントガーベジコレクション処理 | |
JP4086600B2 (ja) | ロールバック可能fatファイルシステム及びプログラム | |
US9015127B2 (en) | File archiving system and method | |
JP2008123104A (ja) | データアクセス装置 | |
CN114880277B (zh) | 块设备快照方法、系统和存储介质 | |
JP4365509B2 (ja) | データ管理装置、データ管理方法、データ管理手順を記録した記録媒体 |