(57)【要約】【課題】  不揮発記録媒体に各種データファイルを記録するファイル記録方法に関し、ファイルの増減や内容／ファイル名の変更があっても、ディレクトリの変更を来たさないファイル記録方法を提供すること。【解決手段】  ファイルを管理する階層上位のディレクトリにＩＤを付与し、このディレクトリ用ＩＤと同じＩＤをファイルに付与したものである。また、ディレクトリとファイルの対応関係は、ファイル側のみ参照し得るようにしたものである。さらに、ファイルはファイル名とデータに分けられると共に、ディレクトリ用ＩＤをファイルのファイル名に付与したものである。【選択図】        図２
2005208900.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記録媒体にファイルを記録する記録方法であって、前記ファイルを管理する階層上位のディレクトリにＩＤを付与し、このディレクトリ用ＩＤと同じＩＤを前記ファイルに付与したことを特徴とするファイル記録方法。
【請求項２】
前記ディレクトリと前記ファイルの対応関係は、
前記ファイル側のみ参照し得ることを特徴とする請求項１記載のファイル記録方法。
【請求項３】
前記ファイルはファイル名とデータに分けられると共に、前記ディレクトリ用ＩＤを前記ファイルのファイル名に付与したことを特徴とする請求項１または２記載のファイル記録方法。
【請求項４】
前記不揮発記録媒体は、管理領域と、データ領域とを含み、前記ディレクトリ及びファイル名を前記管理領域に記録すると共に前記データをデータ領域に記録したことを特徴とする請求項３記載のファイル記録方法。
【請求項５】
前記データにはデータ用ＩＤが付与され、同じＩＤを前記データのファイル名に付与したことを特徴とする請求項４記載のファイル記録方法。
【請求項６】
前記不揮発記録媒体は複数のブロック化された記録単位であるセクタを有し、
各セクタに連続的ないしは断続的な書込み動作を行い、かつセクタ毎に一括消去動作を行うと共に、
前記セクタもしくはセクタを複数に分割したセグメントを単位とし、
前記ディレクトリと前記ファイル名は、前記管理領域に属する異なるセグメントにそれぞれ記録される共に、前記データは、前記データ領域に属するセグメントに記録されることを特徴とする請求項３乃至５のいずれかに記載のファイル記録方法。
【請求項７】
前記データが記録されたセグメントには、同じデータ用ＩＤが付与されたセグメント間の順番を定めた整列番号が付与されていることを特徴とする請求項６記載のファイル記録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発記録媒体に各種データファイルを記録するファイル記録方法に関するものである。
【背景技術】
【０００２】
フラッシュメモリなどの訂正可能な不揮発記憶装置において、ランダムアクセスを実現する方法としてＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅの略）方法が知られている。
この方法は、データ単位のファイルをファイル名称テーブルとデータ領域テーブルで管理し、実データの配置をデータ領域テーブルによって自在に配置して管理することによりユーザに対し、仮想的に連続データを常時提供するという優れた方法である。
【０００３】
この方法では、実データ管理長は、データ配置操作の効率を上げるために一定に設定されるが、長すぎるとデッドスペースが大きくなってしまうため、通常は２５６〜４０９６バイト程度に設定される。
これに対して不揮発記憶装置の記録媒体における実際の記録／消去単位領域であるセクタは、１６〜６４キロバイトと、実データ管理長よりずっと大きな場合が多い。このため運用上、実際のセクタ（以下、「実セクタ」という）よりも小さな仮想的なセクタ（以下、「仮想セクタ」という）を設定するようにしている。
【０００４】
このように設定された仮想セクタでは、消去に際し、仮想セクタを含んだ実セクタを消去すると共に、高速で実セクタと仮想セクタの差分のデータをＲＡＭなどの揮発記憶装置に複製し、書き戻すという作業を行っている。
ところが、フラッシュメモリなどの不揮発記憶媒体で保証されているセクタ消去可能回数は、高々１０万回程度しかなく、頻繁に発生する書換えによって、保証されているセクタ消去可能回数を早々と消費してしまうという問題が生じていた。
【０００５】
このような問題に対し、データの書き込む場所をずらしていき、実セクタ内が消去データによって埋め尽くされた時点で、セクタ消去を行うなどの方法が採られている。例えば１００バイトのデータをずらして記録する方法では、記録されたデータがセクタサイズ６４キロバイトに達した時点、つまり約６００個分のデータがたまった時点で、はじめてセクタ消去が行われる。これは、単純に書き込み動作とセクタ消去動作を逐次繰り返す場合と比べると、６００分の１ほどセクタ消去回数が低減されたことに相当する。
【０００６】
このようにフラッシュメモリのセクタ消去回数を削減する方法については、様々な方法が提案されている。この中で、仮想セクタを実管理番号と仮想管理番号に分けて、仮想セクタを消去する時、必ずしも実セクタを消去せずに、仮想管理番号だけを読み替える方法は、応用範囲が広いという特徴を持っている（例えば、特許文献１参照）。
【特許文献１】特開２００１−５１８８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来の不揮発記録媒体を用いたファイル記録方法は、以上のように構成されており、以下に示すような課題を有していた。
【０００８】
階層的なデータ管理をするために、ディレクトリを用意し、ディレクトリに内包されるファイルの一覧を管理しようとすると、ファイルが書き換えられたり、ファイル名が変更になったりして一覧に変化が生じると、ディレクトリの記録位置を変更しなければならなかった。
このような記録位置の変更は、前述の仮想管理番号と実管理番号に分ける方法でも同じで、ディレクトリの代わりに仮想管理番号と実管理番号の対応関係が記録されている位置を変更しなければならなかった。
【０００９】
このようにファイルの書き換えやファイル名の変更に伴ってディレクトリや対応関係の記録位置を変更しなければならなかった。この結果、セクタ消去回数も低減できず、長寿命化を図ることが困難であった。
【００１０】
本発明は、係る課題を解決するためになされたもので、ファイルの増減や内容／ファイル名の変更があっても、ディレクトリの変更を来たさないファイル記録方法を提供することを目的にしたものである。
【課題を解決するための手段】
【００１１】
本発明に係るファイル記録方法は、不揮発性記録媒体にファイルを記録する記録方法であって、ファイルを管理する階層上位のディレクトリにＩＤを付与し、このディレクトリ用ＩＤと同じＩＤをファイルに付与したものである。
【発明の効果】
【００１２】
不揮発記憶媒体を用いた階層的なデータ管理において、通常とは逆に、下位の階層であるファイル側がディレクトリのＩＤを保持するようにしたので、ファイル側に変更があっても、上位の階層であるディレクトリに変更を来たさない記録方法を提供することができる。この結果、不揮発記憶媒体の変更箇所を低減でき、セクタ消去回数を低減できるので、長寿命化を図ることができる。
【発明を実施するための最良の形態】
【００１３】
実施の形態１．
図１は、本発明に係る不揮発記憶媒体を用いたファイル記録方法のブロック図である。
図において記録方法は、記録位置情報管理手段１００１と不揮発記録読み書き手段１００２と不揮発記録媒体１００３から構成されており、記録情報１００４はデータ領域と管理領域から構成される不揮発記録媒体１００３に書き込み保存される。
【００１４】
図２は、不揮発記録媒体１００３を構成するデータ領域１５０８と管理領域１５０１の関係を示したものである。
図において管理領域１５０１は、ディレクトリ名を保持するディレクトリ１５１３と、ファイル名を保持するファイル１５１４、１５１５を内包しており、データ領域１５０８ はデータ本体を保持するデータ１５１６、１５１７、１５１８、１５１９を内包している。
【００１５】
次に、ディレクトリとファイルとデータの関係について、ディレクトリ１５１３とファイル１５１５とデータ１５１７を例に取り上げて説明する。
図２においてディレクトリ１５１３は、上位ＩＤ １５０２とディレクトリ名１５０３とディレクトリＩＤ １５０４から構成されている。またファイル１５１５は、上位ＩＤ １５０５とファイル名２  １５０６とデータＩＤ １５０７から構成されており、データ１５１７は、データＩＤ １５０９と整列番号１５１０とデータ本体１５１１から構成されている。
【００１６】
そして図中の矢印が示すように、ファイル１５１５の上位ＩＤ  １５０５は、ディレクトリ１５１３のディレクトリＩＤ １５０４を指すように対応付けられており、ファイル１５１５のデータＩＤ  １５０７は、データ１５１７のデータＩＤ  １５０９を指すように対応付けられている。
【００１７】
ここでファイル１５１５ の上位ＩＤ １５０５ が、ディレクトリ１５１３のディレクトリＩＤ １５０４を指すように対応付けられている時、ファイル１５１５はディレクトリ１５１３の下位の階層に位置するものとして、またディレクトリの上位ＩＤ １５０２が最上位ＩＤを保持している時、このディレクトリは、不揮発記憶装置内のファイルシステムの最上位の階層に位置するものとして扱うように、取り決めがなされている。
【００１８】
このようにファイル１５１５の上位ＩＤ １５０５が、ディレクトリ１５１３のディレクトリＩＤ １５０４を指すように対応付けられていることにより、ディレクトリ１５１３は、ファイル１５１５に関するデータを一切保持することなく、ファイル１５１５に対応付けられることになる。そしてファイルに関する記録位置を特定する情報を保有しないことから、ディレクトリは、ファイルを別の位置に複製したり加筆したり移動したりする変更を関知せず、影響も受けない。つまり、ファイル内容やファイル名の変更があっても、ディレクトリには変更を来たさないことになる。
【００１９】
このことは、これまでセクタを消去する場合、消去対象以外のファイルを消去されていない別のセクタへ退避させなければならず、退避の際に、ファイルと共に、対応するディレクトリも別の場所に書込む必要があったが、本願発明ではファイルだけの書込みで済むので、書込み回数のみならず書込み時間も低減されることになる。この結果、長寿命で書込み速度の速いファイル記録方法を提供することが可能となる。
【００２０】
このように対応付けられているディレクトリとファイルは、管理領域内で、共にセクタもしくはセクタを複数に分割したセグメントの形（以下、これを「管理エントリ」という）で保持されている。
次に管理エントリの内容について説明する。
図３は管理領域における管理エントリとデータ領域におけるデータ本体の内容と関係を示したものである。図において管理領域２００２は、管理エントリＡ  ２００４などの複数の管理エントリで構成され、各管理エントリは管理エントリ内容２００７に示す項目を保持している。
【００２１】
図の例では、管理エントリ内容２００７は、エントリＩＤ  ２０１３、上位エントリＩＤ、エントリ属性、エントリ名、続葉、記録完了フラグ、消去フラグ、修正フラグ、デ−タＩＤ  ２００８、デ−タＩＤ予備１、…、デ−タＩＤ予備ｎなどの情報を保持している。ここでエントリＩＤは、“０ｘＡ００１” (以下、０ｘ は１６進数を表わす) の形で保持されている。
【００２２】
一方、デ−タ領域２００３も、セクタもしくはセクタを複数に分割したセグメントを記録単位（以下、これを「データブロック」という）として構成されている。デ−タ領域に書込まれたデ−タ本体は、その大きさにより、データブロックを跨ったり、デ−タブロックに内包されたりするので、各デ−タブロックの中身は空デ−タや使用中デ−タや使用済みデ−タが混在したりする。
【００２３】
またデ−タ本体の先頭には、デ−タ本体付属情報が設けてある。図の例では、デ−タ本体Ａ  ２００５の先頭にはデ−タ本体付属情報２０１３が設けてあり、デ−タＩＤ  ２００９とシ−ケンス番号２０１０が保持されている。またデ−タ本体Ｂ  ２００６の先頭にはデ−タ本体付属情報２０１４が設けてあり、デ−タＩＤ  ２０１１とシ−ケンス番号２０１２が保持されている。
【００２４】
そして管理エントリのデ−タＩＤと、データ本体のデータＩＤが一致する場合、これらは対応付けられている。例えば図において管理エントリＡ  ２００４は、デ−タＩＤ  ２００８として“１”を保持し、データ本体Ａ  ２００５、データ本体Ｂ  ２００６は、それぞれデ−タＩＤ  ２００９、デ−タＩＤ  ２０１１として“１”を保持していることから、管理エントリＡとデータ本体Ａ、Ｂは対応付けられている。
【００２５】
またデ−タ本体が同じデータＩＤをもっている場合は、整列番号（以下、「シ−ケンス番号」という）によって順番が決められている。例えば図において、デ−タ本体Ａ  ２００５、Ｂ  ２００６は、同じデータＩＤをもっており、シ−ケンス番号はそれぞれ２０１０、２０１２に格納されている“１”、“２”であるので、データ本体Ａの後にデ−タ本体Ｂが続いている。
【００２６】
次に、このような内容を保持している管理エントリの階層関係について説明する。
図４は管理エントリの階層関係の一例としてＤｉｒ１／Ｄｉｒ２／Ｄｉｒ３／Ｆｉｌｅ．ｔｘｔ  ７００１を取り上げて示したものである。
図において管理エントリＦ  ７００５は、ファイル名 Ｆｉｌｅ１．ｔｘｔのデータを管理しており、上位エントリ番号０ｘＡ００８の下位の階層に当たる。また管理エントリＤ  ７００４は、ディレクトリ名がＤｉｒ３で、上位エントリ番号０ｘＡ００８を管理しており、上位エントリ番号０ｘＡ００３の下位の階層に当たる。
【００２７】
また管理エントリＣ  ７００３は、ディレクトリ名がＤｉｒ２で、上位エントリ番号０ｘＡ００３を管理しており、上位エントリ番号０ｘＡ００１の下位の階層に当たる。さらに管理エントリＢ  ７００２は、ディレクトリ名がＤｉｒ１で、上位エントリ番号０ｘＡ００１を管理している。そして上位エントリ番号０ＸＦＦＦＦは、上位の階層が存在しないこと、つまりディレクトリＤｉｒ１が最上位の階層であることを表している。
【００２８】
このように各上位エントリ番号は管理領域２００２における管理エントリの位置情報には依存していない。この結果、管理エントリの位置が変更されても参照関係は保存され続けることになり、例えば、使用中の管理エントリを他のセクタに移動させ、セクタ内を使用済みの管理エントリで全て埋め尽くし、セクタ単位で消去して初期化する作業（以下、この作業を「掃き寄せ」という）を行なっても階層関係を維持され続ける。なおこの参照関係は、上位の管理エントリをディレクトリ、下位の管理エントリをファイルと読み替えれば、前述のディレクトリとファイルの関係そのものである。
【００２９】
次に、このような管理エントリとデ−タ本体との関係について説明する。
図５は、図４の一部を抜き出したもので、ファイル名 Ｆｉｌｅ１．ｔｘｔのデ−タを管理する管理エントリＦ  ７００５とデ−タ本体との関係を示したものである。
図において管理エントリＦ  ７００５のデ−タＩＤは、０ｘ０００１である。このデ−タＩＤに対応するデータ本体は、デ−タ領域２００３において同じＩＤ  ０ｘ０００１のエントリＩＤを保持するデータブロック群からなる。
【００３０】
図の例では、このデータブロック群は、先頭に位置するシ−ケンス番号＝１のデ−タブロック２と、これに続くシ−ケンス番号＝２のデ−タブロック３と、最後に位置するシ−ケンス番号＝４のデ−タブロック６とから構成されている。このように管理されたデ−タ本体は、前述の管理エントリと同様、掃き寄せを行ったり、消去フラグを１から０に書き換え消去された旨を追記する仮消去などを行ったりすることができる。
【００３１】
次に、ログファイルとしてデータを定期的に追記する場合の記録について説明する。
図６は追記データと予備領域との関係を示したものである。図に示すようにデ−タＩＤ予備７００７（予備領域）が設けてある。
これまでログファイルとしてデータを定期的に追記するケースでは、追記する度に管理エントリを新規に生成していたが、ここでは予めデ−タＩＤ予備７００７（予備領域）を設け、デ−タＩＤ予備７００７のデ−タＩＤやデ−タサイズを変更することにより適宜データを書込めるようにしている。
この結果、管理領域２００２の変更箇所を最小限にとどめることができ、セクタ消去回数を低減でき、長寿命化を図ることができる。
【００３２】
また、このようなデ−タＩＤ予備７００７（予備領域）への追記は、追記分が比較的少ない場合に対応可能である。追記分が多くなると、予備領域を使い切ってしまうため、管理エントリの拡張が必要である。
次に管理エントリの拡張について説明する。
図７は管理エントリを拡張した拡張管理エントリについて説明したものである。
【００３３】
図に示すように、ここでは管理エントリを新規に生成するのではなく、データＩＤ予備７００７をさらに拡張すること、すなわち拡張管理エントリＨ  ７００６を生成することによりデータの追記に対応している。
ここで拡張管理エントリＨは、通常の管理エントリと同じブロック内に、予備用のデ−タＩＤ、デ−タサイズのみを保持する管理エントリとする。図の例では、拡張管理エントリＨ  ７００６のエントリＩＤは管理エントリＦ  ７００５と同値０ｘＡ００９であり、シ−ケンス番号のみ加算されて“２”となる。
【００３４】
同様にして拡張管理エントリＨ  ７００６をも使い切るときは、さらに別の拡張管理エントリを生成することができる。この場合、古い拡張管理エントリＨ  ７００６は不要になるため、仮消去することも可能である。このようにして追記分が多い場合も対応することができる。このようにして、前述同様、管理領域２００２の変更を最小限にとどめることができ、長寿命化を図ることができる。
【００３５】
なお、エントリ番号を不揮発性媒体上で管理する方法では、エントリ番号自体もビット情報として０、１の二つの数字からなるデータ列で表されるので、その全てを０にすること、すなわちエントリ番号を０ｘ００００とする仮消去は、いつでも可能である。
【００３６】
また、現代のコンピュ−タソフトウエアでは、一般に２の累乗を単位とする数に対する処理は、非常に効率的かつ高速にできるという性質をもっている。したがって処理上、管理エントリやデ−タブロックをそれぞれ２の累乗である１２８バイトや５１２バイトで扱うように構成することが望ましい。
【００３７】
図８は、この点を踏まえ、データ本体をデータＩＤ、続きＩＤ、属性などの付属情報とデータとに分けて、付属情報だけをまとめ（８００１）て、デ−タブロック１  ８００３に格納し、各デ−タを各デ−タブロックに格納して２の累乗である１２８バイトや５１２バイトで扱えるように構成することを示した説明図である。実装上、このようなブロック分けを実現することによりデータ処理を効率的かつ高速にでき、高速のファイル記録方法を提供することができる。
【００３８】
なお以上の説明では、複数のファイルを別のディレクトリに移動する場合について言及しなかったが、この場合、移動する各ファイルのディレクトリＩＤを変更することになるので、ファイル個数分の書き換えが発生する。
これについては、例えば、移動するファイル群が移動元のディレクトリ内の全ファイルであって、移動先のディレクトリ内が空であれば、両ディレクトリのＩＤを入れ替えることにより、書き換え数を低減した移動を実現することができる。
【００３９】
また、移動元のディレクトリ内のファイル個数と移動先のディレクトリ内に既にあるファイル個数とを比較した結果、移動先のディレクトリ内にあるファイル個数のほうが少なければ、両ディレクトリのＩＤを入れ替えた上で、移動予定のファイルの変更を行わずに、替わりに移動先に既にあったファイルの変更を行うことにより、書き換え数を低減した移動を実現することができる。
【００４０】
また、移動予定のファイル名群と移動先のディレクトリに既にあるファイル名群が、同じであれば、移動先のディレクトリに既にあるファイルは上書きされて消去されることになるので、移動先のディレクトリ内を空と見なし、前述のように両ディレクトリのＩＤを入れ替えることにより、書き換え数を低減した移動を実現することができる。
【００４１】
また、移動元のディレクトリ内のファイル数と、移動先のディレクトリ内に既にあるファイル数を比較する時、移動先のディレクトリ内に既にあるファイルのうち上書きされる予定のファイル数を勘案するようにする。例えば、移動先のディレクトリにおいて、上書きされるファイル数が、上書きされないファイル数よりも大きいようであれば、ディレクトリのＩＤを入れ替えることにより、書き換え数を低減した移動を実現することができる。
【００４２】
さらに、これまでの説明では、不揮発記録媒体として、フラッシュメモリのように読み込みが単なるメモリ読み込みで代行可能なものを取り上げてきたが、これに限定されるものではない。光磁気ディスクのようにメモリ読み込みとは異なる読み込み手段を用いるものについても、説明してきた考え方はそのまま適用できる。
またこれまでの説明では、ファイルをファイル名とデータとに分けた場合について説明してきたが、一体化した場合も同じである。一体化した場合、ファイルはデータ領域に記録され、上位ＩＤとファイル名とデータＩＤと整列番号とデータ本体を保持している。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施の形態１に係る不揮発記録媒体を用いたファイル記録方法のブロック図である。
【図２】本実施の形態に係るファイル記録方法のデータ領域と管理領域との関係を示したものである。
【図３】本実施の形態に係るファイル記録方法の管理エントリの内容を示したものである。
【図４】本実施の形態に係るファイル記録方法の管理エントリの階層関係を示したものである。
【図５】本実施の形態に係るファイル記録方法の管理エントリとデータ本体との関係を示したものである。
【図６】本実施の形態に係るファイル記録方法の追記データと予備領域との関係を示したものである。
【図７】本実施の形態に係るファイル記録方法の管理エントリの拡張を示したものである。
【図８】本実施の形態に係るファイル記録方法の実装上の工夫を示したものである。
【符号の説明】
【００４４】
１００１      記録位置情報管理手段
１００２      不揮発記録読み書き手段 
１００３      不揮発記録媒体
１００４      記録情報
１５０１      管理領域
１５０２      上位ＩＤ
１５０３      ディレクトリ名
１５０４      ディレクトリＩＤ
１５０５      上位ＩＤ
１５０６      ファイル名
１５０７      データＩＤ
１５０８      データ領域
１５０９      データＩＤ
１５１０      整理番号
１５１１      データ本体
１５１２      データ本体の続き
１５１３      ディレクトリ
１５１４      ファイル
１５１５      ファイル
１５１６      データ
１５１７      データ
１５１８      データ
１５１９      データ
２００２      管理領域
２００３      データ領域
２００４      管理エントリ
２００５      データ本体Ａ
２００６      データ本体Ｂ
２００７      管理エントリ内容
２００８      データＩＤ
２００９      データＩＤ
２０１０      シーケンス番号
２０１１      データＩＤ
２０１２      シーケンス番号
２０１３      データ本体付属情報
２０１４      データ本体付属情報
７００１      階層関係の例
７００２      管理エントリＢ
７００３      管理エントリＣ
７００４      管理エントリＤ
７００５      管理エントリＦ
７００６      拡張管理エントリH
７００７      データＩＤ予備
８００１      付属情報
８００２      データ本体
８００３      データブロック１
８００４      データブロック２
【図１】
2005208900.tif 000003
【図２】
2005208900.tif 000004
【図３】
2005208900.tif 000005
【図４】
2005208900.tif 000006
【図５】
2005208900.tif 000007
【図６】
2005208900.tif 000008
【図７】
2005208900.tif 000009
【図８】
2005208900.tif 000010