(57)【要約】  【課題】書き込み速度の低下を抑制しつつ、電源異常が発生した場合でもファイル管理情報の整合性を回復させることができるファイル記憶装置を提供する。  【解決手段】ＨＤＤ１０８に記憶されるメタデータを更新するにあたって、まず、この更新前のメタデータから更新後のメタデータを再構築するためのログデータがＮＶＲＡＭ１０６に書き込まれる。そして、この書き込みが完了した後で、当該更新が実行される。したがって、キャッシュメモリ１０８１に一時記憶された更新用のメタデータが電源異常などの障害により部分的に消失する場合や、ハードディスク１０８２のメタデータの更新が不完全な場合でも、更新用のメタデータに対応するログデータがＮＶＲＡＭ１０６に保持されるため、このログデータを用いてハードディスク１０８２上におけるメタデータの整合性を回復することが可能となる。【選択図】      図１
2005115857.tif 000002
【特許請求の範囲】
【請求項１】
ファイルとその管理情報を記憶するファイル記憶装置であって、
書き込み対象のデータを一時的に記憶する揮発性メモリと、当該揮発性メモリから読み出される上記書き込み対象データを記憶する不揮発性の主記憶部とを備えた第１の記憶手段と、
不揮発性の第２の記憶手段と、
上記第１の記憶手段に記憶される上記管理情報を更新する場合、当該更新前の管理情報から当該更新後の管理情報を再構築するための再構築用情報を上記第２の記憶手段に書き込み、当該書き込みが完了した後で当該更新を実行する制御手段と、
を有するファイル記憶装置。
【請求項２】
上記第２の記憶手段は、上記第１の記憶手段より高速にデータの書き換えを行なう、
請求項１に記載のファイル記憶装置。
【請求項３】
上記主記憶部は、少なくともディスクメディアまたはフラッシュメモリを含み、
上記第２の記憶手段は、不揮発性の半導体メモリを含む、
請求項２に記載のファイル記憶装置。
【請求項４】
上記第２の記憶手段は、少なくともＦｅＲＡＭ（ferroelectric random access memory）、ＭＲＡＭ（magnetic random access memory）、ＯＵＭ（ovonic unified memory）、またはＲＲＡＭ（resistance random access memory）の何れか一を含む、
請求項３に記載のファイル記憶装置。
【請求項５】
電源電圧の異常の有無を監視する電源電圧監視手段を有し、
上記制御手段は、書き込みの完了を表す所定のコードが末尾に付された上記再構築用情報を複数のブロックに区分し、当該ブロックを先頭から順に上記第２の記憶手段に供給し、
上記第２の記憶手段は、上記ブロックの書き込み動作中に上記電源電圧監視手段が異常を検出した場合、書き込み途中のブロックの書き込みを完了させた後で、これに続くブロックの書き込みを禁止する、
請求項１に記載のファイル記憶装置。
【請求項６】
上記第２の記憶手段は、ＦｅＲＡＭ（ferroelectric random access memory）を含む、
請求項５に記載のファイル記憶装置。
【請求項７】
電源電圧の異常の有無を監視する電源電圧監視手段を有し、
上記制御手段は、書き込みの完了を表す所定のコードが末尾に付された上記再構築用情報を、当該所定のコードよりデータ長が短い複数のブロックに区分し、当該ブロックを先頭から順に上記第２の記憶手段に供給し、
上記第２の記憶手段は、上記ブロックの書き込み動作中に上記電源電圧監視手段が異常を検出した場合、書き込み動作を停止する、
請求項１に記載のファイル記憶装置。
【請求項８】
第３の記憶手段を有し、
上記制御手段は、上記第１の記憶手段に記憶される上記管理情報および上記再構築用情報を格納するための記憶領域を上記第３の記憶手段にそれぞれ割り当て、上記第１の記憶手段に記憶される上記管理情報を更新する場合、上記第３の記憶手段に割り当てた上記管理情報の記憶領域に当該更新の結果の管理情報を書き込み、当該更新に対応する再構築用情報を上記第３の記憶手段に割り当てた上記再構築用情報の記憶領域に書き込み、当該書き込んだ再構築用情報を上記第３の記憶手段から上記第２の記憶手段へコピーし、当該コピーが完了した後で、上記第３の記憶手段に書き込んだ当該更新結果の管理情報を上記第１の記憶手段に書き戻す、
請求項１に記載のファイル記憶装置。
【請求項９】
第３の記憶手段を有し、
上記制御手段は、上記第１の記憶手段に記憶される上記管理情報を格納するための記憶領域を上記第３の記憶手段に割り当て、上記第１の記憶手段に記憶される上記管理情報を更新する場合、上記第３の記憶手段に割り当てた上記管理情報の記憶領域に当該更新の結果の管理情報を書き込み、当該更新に対応する再構築用情報を上記第２の記憶手段に書き込み、当該再構築用情報の書き込みが完了した後で、上記第３の記憶手段に書き込んだ当該更新結果の管理情報を上記第１の記憶手段に書き戻す、
請求項１に記載のファイル記憶装置。
【請求項１０】
上記制御手段は、上記第２の記憶手段に記憶される上記再構築用情報のデータ量が所定量を超えた場合、当該再構築用情報に対応する更新後の管理情報を上記第１の記憶手段に書き込み、当該書き込み後に上記揮発性メモリの開放を上記第１の記憶手段に要求し、当該要求に応答する開放完了通知を上記第１の記憶手段より受けたならば、上記第２の記憶手段における上記再構築用情報の記憶領域を開放し、
上記第１の記憶手段は、上記制御手段より上記揮発性メモリの開放を要求された場合、上記揮発性メモリに残存する書き込み対象のデータを上記主記憶部に書き込み、当該書き込みが完了したならば、上記制御手段へ開放完了を通知する、
請求項１に記載のファイル記憶装置。
【請求項１１】
上記制御手段は、上記第１の記憶手段に更新用の管理情報を書き込んだ後、上記揮発性メモリの開放を上記第１の記憶手段に要求し、当該要求に応答する開放完了通知を上記第１の記憶手段より受けたならば、上記第２の記憶手段の記憶領域のうち、当該更新用の管理情報を再構築するための再構築用情報の記憶領域を開放し、
上記第１の記憶手段は、上記制御手段より上記揮発性メモリの開放を要求された場合、上記揮発性メモリに残存する書き込み対象のデータを上記主記憶部に書き込み、当該書き込みが完了したならば、上記制御手段へ開放完了を通知する、
請求項１に記載のファイル記憶装置。
【請求項１２】
上記制御手段は、その動作を終了させるシャットダウン処理の過程において上記揮発性メモリの開放を上記第１の記憶手段に要求し、当該要求に応答する開放完了通知を上記第１の記憶手段より受けたならば、上記第２の記憶手段における上記再構築用情報の記憶領域を開放し、
上記第１の記憶手段は、上記制御手段より上記揮発性メモリの開放を要求された場合、上記揮発性メモリに残存する書き込み対象のデータを上記主記憶部へ書き込み、当該書き込みが完了したならば、上記制御手段へ開放完了を通知する、
請求項１に記載のファイル記憶装置。
【請求項１３】
上記制御手段は、その動作を開始させる起動処理において上記第２の記憶手段に上記再構築用情報が残存しているか否かを調べ、残存している場合には、上記第１の記憶手段に記憶される上記管理情報を当該残存する再構築用情報に基づいて更新する、
請求項１２に記載のファイル記憶装置。
【請求項１４】
上記制御手段は、その動作を開始させる起動処理において利用する情報の少なくとも一部を、上記再構築用情報の記憶領域が開放された後における上記第２の記憶手段の空き領域の少なくとも一部に格納する、
請求項１２に記載のファイル記憶装置。
【請求項１５】
上記第１の記憶手段の主記憶部は、ディスクメディア含み、
上記第２の記憶手段は、フラッシュメモリを含み、
上記制御手段は、上記揮発性メモリの開放要求に応答する開放完了通知を上記第１の記憶手段より受けたならば、上記フラッシュメモリにおいて上記再構築用情報が記憶される領域を含む所定の領域のデータを消去する、
請求項１０に記載のファイル記憶装置。
【請求項１６】
上記主記憶部は、少なくともディスクメディアまたはフラッシュメモリを含み、
上記第２の記憶手段は、バッテリーによって電源電圧が供給されるランダムアクセス可能な揮発性の半導体メモリを含む、
請求項１に記載のファイル記憶装置。
【請求項１７】
ファイルとその管理情報を記憶するファイル記憶装置であって、
書き込み対象のデータを一時的に記憶する不揮発性メモリと、当該不揮発性メモリから読み出される上記書き込み対象データを記憶する不揮発性の主記憶部とを備えた記憶手段と、
上記記憶手段に記憶される上記管理情報を更新する場合、当該更新前の管理情報から当該更新後の管理情報を再構築するための再構築用情報を上記記憶手段に書き込み、当該書き込みが完了した後で当該更新を実行する制御手段と、
を有するファイル記憶装置。
【請求項１８】
上記不揮発性メモリは、上記主記憶部より書き換え速度が高速な不揮発性の半導体メモリを含み、
上記主記憶部は、少なくともディスクメディアまたはフラッシュメモリを含む、
請求項１７に記載のファイル記憶装置。
【請求項１９】
上記不揮発性メモリは、少なくともＦｅＲＡＭ（ferroelectric random access memory）、ＭＲＡＭ（magnetic random access memory）、ＯＵＭ（ovonic unified memory）、またはＲＲＡＭ（resistance random access memory）の何れか一を含む、
請求項１８に記載のファイル記憶装置。
【請求項２０】
上記記憶手段は、上記不揮発性メモリから上記主記憶部へ上記書き込み対象データを書き込む際に、その書き込みの順序を、上記主記憶部への書き込み速度が高速化する順序に変更する書き込み制御手段を有する、
請求項１７に記載のファイル記憶装置。
【請求項２１】
上記記憶手段は、その動作を開始させる起動処理において上記不揮発性メモリに書き込み可能なデータが残存しているか否かを調べ、残存している場合には、当該データを上記主記憶部に書き込む書き込み制御手段を有する、
請求項１７に記載のファイル記憶装置。
【請求項２２】
電源電圧の異常の有無を監視する電源電圧監視手段を有し、
上記制御手段は、書き込みの完了を表す所定のコードが末尾に付された上記再構築用情報を複数のブロックに区分し、当該ブロックを先頭から順に上記記憶手段に供給し、
上記不揮発性メモリは、上記ブロックの書き込み動作中に上記電源電圧監視手段が異常を検出した場合、書き込み途中のブロックの書き込みを完了させた後で、これに続くブロックの書き込みを禁止する、
請求項１７に記載のファイル記憶装置。
【請求項２３】
上記主記憶部は、少なくともディスクメディアまたはフラッシュメモリの何れか一を含み、
上記不揮発性メモリは、バッテリーによって電源電圧が供給されるランダムアクセス可能な揮発性の半導体メモリを含む、
請求項１７に記載のファイル記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル記憶装置に関するものであり、特に、突発的停電や電源瞬断等の障害からファイルシステムを安全に保護することができるファル記憶装置に関するものである。
【背景技術】
【０００２】
現在、例えば ハードディスクドライブ（以下、ＨＤＤと略記する）のようなディスクメディアを使用した記憶装置が盛んに使用されている。これらの記憶メディアは大容量化の進展が著しく、近年はコンピュータ用途のみならず、ビデオ画像の録画等にも活用され始めている。
【０００３】
このようなディスクメディア上にファイルを保存する場合、通常、ファイルシステムと呼ばれるソフトウェアが使用される。ファイルシステムによって、ディスクメディア上のファイルは容易にアクセスできるように管理されている。ファイルシステムにはさまざまな種類があるが、これらはいずれもファイルの中身（以下、本体データと呼ぶ）とともに、各ファイルの管理情報（以下、メタデータと呼ぶ）をディスクメディア上に保存する。
【０００４】
メタデータには、例えば各ファイルの本体データのディスクメディア上の格納位置を示すテーブルや、その容量等の情報が含まれる。ファイルシステムが正常に動作するためには、メタデータ内の情報の整合性が保たれていることが必須である。メタデータ内の不整合はディスク全体のアクセスに支障を与えるため、僅かな損傷でも致命的な影響を及ぼすためである。
【０００５】
ところがディスクメディアに書き込みを行っている最中に機器の電源が落ちてしまうと、ディスクメディア上のメタデータが整合性を保った状態にならない場合がある。メタデータ内の不整合とは、例えば以下のようなものである。
【０００６】
ファイルシステム上にディレクトリＡがあり、ディレクトリＡの中には、ファイルＢがあるとする。ディレクトリＡのメタデータには、それがファイルＢを持つことや、ファイルＢのディスクメディア上の位置、容量と言った情報がある。また、ファイルＢのメタデータには、そのファイルがディレクトリＡの中にあることを示す情報がある。
【０００７】
ここでファイルＢを ディレクトリＡから削除する作業を行っている時に、電源が落ちてしまった場合を考える。ファイルの削除は少なくとも上記２箇所のメタデータを更新する必要がある。しかし途中でその作業が中止されると、ファイルＢのメタデータは失われたが、ディレクトリＡ上のファイルＢの情報は残っているかもしれない。そうなると、ディレクトリＡから ファイルＢは存在するように見えても、その実体にはアクセスできなくなる。
【０００８】
このような不整合は、時としてシステム全体を危機的な状況に追い込む。そのため、一般にＨＤＤ等のディスクメディアを搭載したシステムでは、このような不整合状態の有無をシステムの起動時に検査する。この検査で不整合を検知した場合、システムはＨＤＤの全領域に対してスキャンチェックを実行し、メタデータの整合を回復しようと試みる。これには膨大な時間を要し、ユーザーは長時間機器を使用できなくなる。
【０００９】
突発的停電、電源瞬断等の電源異常は、特にユーザーの使用手順を厳格に特定しないＨＤＤ付ビデオ録画機等の家庭用機器において容易に起こり得る深刻な問題であることから、これまでにも様々な対策が提案されている。
【００１０】
例えば特許文献１には、メタデータの二重化とその管理手法が記載されている。ここではメタデータとメタデータの複製、そしてそれらの更新経緯を記したディスクリプタがディスク上に保存される。手順は以下の通りである。
【００１１】
（ステップＳＴ１１）
まずディスク上の第一の領域にバッファ上のメタデータが保存される。  
（ステップＳＴ１２）
ディスクリプタに上記メタデータ保存の完了を示す第一の値が記載される。  
（ステップＳＴ１３）
次にディスク上の第二の領域に複製メタデータが保存される。  
（ステップＳＴ１４）
ディスクリプタに複製メタデータ保存の完了を示す第二の値が記載される。  
【００１２】
システムは、異常終了後に再起動する際、ディスクリプタの値を見て、次のように処理を行う。例えばメタデータ保存前または保存途中で電源が落ちた場合、ディスクリプタには第二の値が記載されている。したがってこの場合は、複製メタデータでメタデータを上書きすることによって、メタデータ保存前の内部整合のとれた状態に回復する。一方、複製メタデータ保存中に電源が落ちた場合、ディスクリプタには第一の値が記載されている。この場合には、メタデータで複製メタデータを上書きすることによって、正常保存された状態に回復する。
【００１３】
しかしながら、ディスクメディアが大容量化するにつれてメタデータも巨大化するため、二重化されたメタデータの頻繁な保存はシステムのパフォーマンスを著しく低下させる。またメタデータはディスク管理の必要上、異なる個所に散在して配置されており、それらを書き換える際には頻繁にシークを行う必要がある。そのため、メタデータの書き換えには多大な時間的オーバーヘッドが発生する。
一方、メタデータの保存頻度を下げた場合、前述のような電源瞬断があると、たとえ保存前の状態に戻ってメタデータの整合が取れたとしても、メタデータ保存後になされた多くの更新の情報が失われることになる。
【００１４】
このような問題は、現在、ジャーナリングと呼ばれる技術によってある程度の解決がなされている。例えばＬｉｎｕｘのＸＦＳ等のファイルシステムでは、この技術を取り込んだファイル管理が行なわれている。
【００１５】
次に、ジャーナリングによるメタデータの回復手法を説明する。
ジャーナリングにおいては、メタデータの変更の際に、その変化部分（差分）に関する情報が本体データとは別の領域（以下、ログ保存領域と呼ぶ）に保存される。この差分の情報（以降、ログデータと呼ぶ）は、更新前のメタデータから更新後のメタデータを再構築するために用いられる。
以下、ジャーナリングにおけるメタデータの更新手順を説明する。
【００１６】
（ステップＳＴ２１）
メタデータの更新を伴うファイル操作を行う時、そのファイル操作で更新されるメタデータの情報をログデータとしてＨＤＤ上のログ保存領域に保存する。
（ステップＳＴ２２）
上記の保存が終了した後、ＨＤＤ上の実際のメタデータを更新する。
（ステップＳＴ２３）
上記のメタデータ変更が終了してから、ＨＤＤ上のログ保存領域を開放し、次のログデータの書き込みを可能にする。
【００１７】
ステップＳＴ２１〜ＳＴ２３の各作業を行っている時に機器の電源が落ちた場合、次回、機器の電源が復帰した時に、メタデータの整合性を保つ方法は以下のようになる。
【００１８】
（ステップＳＴ２１において電源が落ちた場合）
ＨＤＤ上のログ保存領域には、正しい情報が無い可能性がある。しかし、ＨＤＤ上のメタデータ領域にはこの時点で変更を行っていないので、メタデータとしての整合性は保たれている。この場合、メタデータは、ファイル操作前の状態になる。
【００１９】
（ステップＳＴ２２において電源が落ちた場合）
ＨＤＤ上のメタデータ領域の情報は正しくない可能性がある。しかし、ＨＤＤ上のログ保存領域には、メタデータの全ての変更履歴がログデータとして残っているので、このログデータに基づいて再構築されたメタデータをＨＤＤ上のメタデータ領域に書き込むことにより、メタデータ全体の整合性を保つことができる。この場合、メタデータは、ファイル操作後の状態になる。
【００２０】
（ステップＳＴ２３において電源が落ちた場合）
ＨＤＤ上のログ保存領域の情報は開放されていないので、ログ保存領域内にあるメタデータの更新情報は、ＨＤＤ上のメタデータ領域に書き戻される。すなわち、ログ保存領域に残存するログデータに基づいて再構築されたメタデータがメタデータ領域に書き戻される。この場合、メタデータ領域には、既に正しい情報が書き込まれているが、同じ情報を再度書くだけであり整合性を損なうことはない。
【００２１】
以上の方法により、いつ機器の電源が落ちてもメタデータの整合性を回復することが可能となる。この場合、ＨＤＤのログ保存領域に保存されるログデータは、メタデータの変更分、即ち差分のみであり、メタデータ全体よりはるかにデータのサイズが小さい。さらにログデータは、通常、ディスク内の連続した個所にまとめて保存することが可能であるため、ＨＤＤのヘッドのシーク回数を最小限にとどめることができる。したがって、ログデータの保存に伴うディスクアクセスへのオーバーヘッドは、相対的に小さい。
【００２２】
また、このログデータの保存がなされる限り、メタデータそのものを保存しなくても、ログデータに基づいてメタデータを再構築することが可能であり、メタデータを最新に近い状態へ容易に回復できる。したがって、ログデータのみを頻繁に保存しておけば、メタデータ自体の保存頻度は最低限で良いため、ディスクアクセスのパフォーマンスは大幅に向上する。
【特許文献１】特開２００２−３２９７５号公報
【発明の開示】
【発明が解決しようとする課題】
【００２３】
ところで、上述のメタデータの二重化やジャーナリングによる方法においては、ファイルシステムによるＨＤＤへのデータ書き込み順序と、実際にハードディスクへデータが書き込まれる順序とが等しいという仮定がなされている。
【００２４】
しかしながら、現在のほとんどのＨＤＤには、書き込み性能を上げるために、ＤＲＡＭ（dynamic random access memory）等の揮発性メモリで構成されたキャッシュメモリが搭載されている。ハードディスクへ書き込まれるデータは、一旦このキャッシュメモリに格納された後、書き込み時間が最も短くなるように書き込み順序が変更されて、ハードディスクに書き込まれる。ＨＤＤの場合、ヘッドの移動の待ち時間やディスク回転の待ち時間が非常に大きいため、キャッシュメモリによってデータの書き込み順序を変更することにより、ランダム書き込みの性能劣化を最低限にすることができる。
【００２５】
ジャーナリングを用いたファイルシステムにおいて、このような書き込み順序の変更が行なわれると、次のような不具合が生じる。
【００２６】
ステップＳＴ２１とＳＴ２２の順番が反転した場合、ＨＤＤ上のログ保存領域に変更されたメタデータの情報が全て保存されていないにもかかららず、ＨＤＤ上のメタデータ領域が変更されることになる。この時点で機器の電源が落ちると、ＨＤＤ上のメタデータ領域の一部は既に書き変えられているのに、ログ保存領域には、メタデータの変更内容を正しくメタデータ領域に反映するための全ての情報が存在しない。したがって、このログ保存領域の情報に基づいてメタデータを書き換えてしまうと、メタデータの整合性が損なわれてしまう。
【００２７】
ステップＳＴ２２とＳＴ２３の順番が反転した場合は、ＨＤＤ上のメタデータ領域の一部が未だ正しく変更されていないにもかかわらず、ログ保存領域が開放されてしまうことになる。この場合、ログ保存領域の情報は既に使えない状態になっているため、メタデータの整合性を回復することができない。
【００２８】
また、仮に書き込み順序の変更が無いとしても、キャッシュメモリにログデータの一部が保存された状態で電源が落ちてしまえば、メタデータの整合性を回復することはできない。
【００２９】
メタデータを二重化する方法についても状況は全く同様であり、二つのメタファイルとディスクリプタの書き込み順が狂ってしまったり、その一部が欠けてしまうと、メタファイルの修復効果は失われてしまう。
【００３０】
このような問題の直接的な対処方法は、メタデータとログデータをＨＤＤへ書き込む際に、キャッシュの内容を全て強制的にハードディスクに書き込むことである。しかし、この方法では、ディスクアクセスへのオーバーヘッドが極めて大きくなってしまうため、頻繁なログの更新を行うと、システムのパフォーマンスを大きく劣化させてしまう原因になる。
【００３１】
なお、上述した電源異常によるメタデータの不整合の問題は、ＨＤＤ等のディスクメディアを用いた記憶装置に限らず、例えばフラッシュメモリを用いた記憶装置にも存在する。なぜなら、フラッシュメモリのデータ転送速度はＨＤＤより遅く、書き換えの消費電力も通常の半導体メモリよりははるかに大きいため、書き換え途中の電源瞬断に伴うデータ消滅は、ＨＤＤ等と全く同様に起こり得るためである。
【００３２】
本発明はかかる事情に鑑みてなされたものであり、その目的は、書き込み速度の低下を抑制しつつ、電源異常等の障害が発生した場合でもファイル管理情報の整合性を回復させることができるファイル記憶装置を提供することにある。
【課題を解決するための手段】
【００３３】
上記の目的を達成する第１の発明は、ファイルとその管理情報を記憶するファイル記憶装置であって、書き込み対象のデータを一時的に記憶する揮発性のメモリ（例えば、キャッシュメモリやＦＩＦＯ等のバッファメモリ）と、当該揮発性メモリから読み出される上記書き込み対象のデータを記憶する不揮発性の主記憶部とを備えた第１の記憶手段と、不揮発性の第２の記憶手段と、第１の記憶手段に記憶される管理情報を更新する場合、当該更新前の管理情報から当該更新後の管理情報を再構築するための再構築用情報を第２の記憶手段に書き込み、当該書き込みが完了した後で当該更新を実行する制御手段とを有する。
【００３４】
上記第１の発明によれば、第１の記憶手段に記憶される管理情報を更新するにあたって、まず、当該更新前の管理情報から当該更新後の管理情報を再構築するための再構築用情報が第２の記憶手段に書き込まれる。そして、この書き込みが完了した後で、当該更新が実行される。
したがって、揮発性メモリに一時記憶された更新用の管理情報が電源異常などの障害により部分的に消失する場合や、主記憶部の管理情報の更新が不完全な場合でも、更新用の管理情報に対応する再構築用情報が不揮発性の第２の記憶手段に保持されるため、当該再構築用情報を用いて管理情報の整合性を回復することが可能となる。
【００３５】
好適には、第２の記憶手段は、第１の記憶手段より高速にデータの書き換えを行う。
これにより、書き込み速度の低下を抑えながら、第２の記憶手段への再構築用情報の書き込み頻度を高めることが可能になり、障害発生時において管理情報をより最新に近い状態に回復することができる。
【００３６】
主記憶部は、少なくともディスクメディアまたはフラッシュメモリを含み、第２の記憶手段は、不揮発性の半導体メモリを含んでも良い。ディスクメディアには、例えば、ハードディスクなどの磁気ディスクや、ＤＶＤなどの光ディスク、ＭＯなどの光磁気ディスクが含まれる。
また、第２の記憶手段は、この不揮発性の半導体メモリとして、少なくともＦｅＲＡＭ（ferroelectric random access memory）、ＭＲＡＭ（magnetic random access memory）、ＯＵＭ（ovonic unified memory）、またはＲＲＡＭ（resistance random access memory）の何れか一を含んでも良い。
【００３７】
また、上記第１の発明は、電源電圧の異常の有無を監視する電源電圧監視手段を有しても良い。この場合、制御手段は、書き込みの完了を表す所定のコードが末尾に付された再構築用情報を複数のブロックに区分し、当該ブロックを先頭から順に第２の記憶手段に供給しても良い。第２の記憶手段は、上記ブロックの書き込み動作中に電源電圧監視手段が異常を検出した場合、書き込み途中のブロックの書き込みを完了させた後で、これに続くブロックの書き込みを禁止しても良い。
これにより、書き込み途中のブロックの一部の書き込みに成功し、他の部分の書き込みに失敗するといった、書き込みの不定状態が回避される。
仮に、上記所定のコードを含むブロックがこのような不定状態になると、ブロック中において上記所定のコードの書き込みに成功しながら他の部分の書き込みに失敗する可能性がある。この場合、書き込みに失敗している再構築情報が書き込みを完了したものとして扱われるため、管理情報の再構築を実行できなくなったり、誤った管理情報を書き込んでしまう可能性がある。上記の構成によれば、書き込みの不定状態が回避されるため、こうした事態が防止される。
【００３８】
また、上記の電源電圧監視手段を有する場合において、制御手段は、書き込みの完了を表す所定のコードが末尾に付された再構築用情報を、当該所定のコードよりデータ長が短い複数のブロックに区分し、当該ブロックを先頭から順に第２の記憶手段に供給しても良い。第２の記憶手段は、上記ブロックの書き込み動作中に電源電圧監視手段が異常を検出した場合、書き込み動作を停止しても良い。
これにより、第２の記憶手段へ再構築用情報を書き込んでいる途中に電源電圧の異常が発生し、当該再構築用情報の一部のブロックが書き込み不定状態になっても、上記所定のコードは第２の記憶手段に全く書き込まれないか部分的にしか書き込まれないため、当該再構築用情報の書き込みは未完状態となる。したがって、書き込みに失敗している再構築情報を書き込みが完了したものとして扱う恐れがなくなる。
【００３９】
また、好適には、制御手段は、その動作を終了させるシャットダウン処理の過程において揮発性メモリの開放を第１の記憶手段に要求し、当該要求に応答する開放完了通知を第１の記憶手段より受けたならば、第２の記憶手段における再構築用情報の記憶領域を開放する。第１の記憶手段は、制御手段より揮発性メモリの開放を要求された場合、揮発性メモリに残存する書き込み対象のデータを主記憶部へ書き込み、当該書き込みが完了したならば、制御手段へ開放完了を通知する。
これにより、正常にシャットダウン処理が実行された場合、第２の記憶手段における再構築用情報の記憶領域が開放されるため、第２の記憶手段に再構築用情報が残存するか否かを調べることにより、シャットダウン処理が正常に実行されたか否かを判別することが可能になる。また、揮発性のメモリに残存する管理情報が確実に不揮発性の主記憶部へ書き込まれた上で、第２の記憶手段における再構築用情報の記憶領域が開放されるため、主記憶部に記憶される管理情報に不整合を生じさせることはない。
【００４０】
この場合、制御手段は、その動作を開始させる起動処理において第２の記憶手段に再構築用情報が残存しているか否かを調べ、残存している場合には、第１の記憶手段に記憶される管理情報を当該残存する再構築用情報に基づいて更新しても良い。
これにより、正常にシャットダウン処理が実行されなかった場合、第２の記憶手段に残存する再構築用情報に基づいて第１の記憶手段に記憶される管理情報が更新されるため、管理情報の整合性が回復される。
【００４１】
更にこの場合、制御手段は、その動作を開始させる起動処理において利用する情報の少なくとも一部を、再構築用情報の記憶領域が開放された後における第２の記憶手段の空き領域の少なくとも一部に格納しても良い。これにより、起動処理の高速化を図ること可能になる。
【００４２】
上記の目的を達成する第２の発明は、ファイルとその管理情報を記憶するファイル記憶装置であって、書き込み対象のデータを一時的に記憶する不揮発性のメモリ（例えば、キャッシュメモリやＦＩＦＯ等のバッファメモリ）と、当該不揮発性メモリから読み出される上記書き込み対象のデータを記憶する不揮発性の主記憶部とを備えた記憶手段と、上記記憶手段に記憶される上記管理情報を更新する場合、当該更新前の管理情報から当該更新後の管理情報を再構築するための再構築用情報を上記記憶手段に書き込み、当該書き込みが完了した後で当該更新を実行する制御手段とを有する。
【００４３】
上記第２の発明によれば、上記記憶手段に記憶される管理情報を更新するにあたって、まず、当該更新前の管理情報から当該更新後の管理情報を再構築するための再構築用情報が上記記憶手段に書き込まれる。そして、この書き込みが完了した後で、当該更新が実行される。
本発明において、上記記憶手段は不揮発性のメモリおよび主記憶部を有するため、電源異常などの障害により書き込みが途中で停止しても、不揮発性メモリや主記憶部に残存する再構築用情報や更新用の管理情報に基づいて主記憶部の管理情報を更新することにより、主記憶部の管理情報の整合性を回復することが可能となる。
【００４４】
好適には、不揮発性メモリは、主記憶部より書き換え速度が高速な不揮発性の半導体メモリを含み、主記憶部は、少なくともディスクメディアまたはフラッシュメモリを含む。
不揮発性メモリとしては、少なくともＦｅＲＡＭ（ferroelectric random access memory）、ＭＲＡＭ（magnetic random access memory）、ＯＵＭ（ovonic unified memory）、またはＲＲＡＭ（resistance random access memory）の何れか一を含んでも良い。
このように不揮発性メモリの書き込み速度を高速化することによって、記憶手段の全体の書き込み速度が高速化される。
【００４５】
また、記憶手段は、不揮発性メモリから主記憶部へ上記書き込み対象データを書き込む際に、その書き込みの順序を、主記憶部への書き込み速度が高速化する順序に変更する書き込み制御手段を有しても良い。例えば、主記憶部にディスクメディアが用いられる場合、ヘッドの移動の待ち時間やディスク回転の待ち時間による書き込み遅延が短くなるように書き込み順序を変更する。
これにより、記憶手段の全体の書き込み速度が更に高速化される。
【発明の効果】
【００４６】
本発明によれば、書き込み速度の低下を抑制しつつ、電源異常等の障害が発生した場合でもファイル管理情報の整合性を回復させることができる。
【発明を実施するための最良の形態】
【００４７】
以下、本発明の４つの実施形態について、図面を参照して説明する。
【００４８】
＜第１の実施形態＞
図１は、本発明の第１の実施形態に係るファイル記憶装置の構成の一例を示すブロック図である。
【００４９】
図１に例示するファイル記憶装置は、制御部１０１と、ＲＡＭ（random access memory）１０３と、ＮＶＲＡＭ（non-volatile random access memory）１０６と、フラッシュメモリ１０７と、ＨＤＤ１０８と、外部メモリ用インターフェース部１０４と、ＨＤＤ用インターフェース部１０５とを有する。
制御部１０１は、本発明の制御手段の一実施形態である。
ＨＤＤ１０８は、本発明の第１の記憶手段の一実施形態である。
ＮＶＲＡＭ１０６は、本発明の第２の記憶手段の一実施形態である。
ＲＡＭ１０３は、本発明の第３の記憶手段の一実施形態である。
【００５０】
制御部１０１に接続されたシステムバス１０２上には、ＤＲＡＭやＳＲＡＭ等の揮発性メモリによって構成されるＲＡＭ１０３が接続されている。さらに外部メモリ用インターフェース部１０４を介して、ＮＶＲＡＭ１０６とフラッシュメモリ１０７が接続されている。またＡＴＡ（AT attachment）等のＨＤＤ用インターフェース部１０５を介してＨＤＤ１０８が接続されている。
【００５１】
制御部１０１は、ファイル記憶装置の全体的な動作に関わる種々の処理を行う。起動時において、フラッシュメモリ１０７に格納されたＯＳカーネルやプログラムをＲＡＭ１０３上に展開し、これに基づいた処理を実行する。
【００５２】
ＲＡＭ１０３は、システムメモリとして使用される。すなわち、制御部１０１のプログラムやその処理過程で利用される一時的なデータを記憶する。また、ＯＳやアプリケーションにおいて利用されるワークエリアや、ハードディスク１０８に格納されるファイルのバッファ領域も提供する。
【００５３】
ＨＤＤ１０８は、複数バイトからなるデータブロックを１つの単位としてデータの入出力を行うブロックデバイスであり、各種のデータをファイルとして保存する。ＨＤＤ１０８に記憶されるファイルは、例えば５１２バイトのファイルセクターの集まりで構成される。
【００５４】
ＨＤＤ１０８上に例えばテレビ番組を録画する場合、制御部１０１は、まず録画用データを記録するためのＭＰＥＧ２等のファイルをＲＡＭ１０３上のバッファ領域に生成する。次いで制御部１０１は、番組の進行に伴って不図示のチューナーから入力されるテレビ番組の映像データをエンコードして録画用データを生成し、それを上記のファイルに刻々追記する。制御部１０１は、この追記によるファイルの更新結果を、随時ＲＡＭ１０３からＨＤＤ１０８へ転送して記録する。
【００５５】
図２は、ＨＤＤ１０８の構成の一例を示すブロック図である。
図２に例示するＨＤＤ１０８は、揮発性メモリの実施形態であるキャッシュメモリ１０８１と、書き込み制御手段の実施形態である書き込み制御部１０８３と、主記憶部の実施形態であるハードディスク１０８２とを有する。
キャッシュメモリ１０８１は、書き込み対象のデータを一時的に記憶する。
ハードディスク１０８２は、このキャッシュメモリ１０８１から読み出される書き込み対象データを記憶する。
なお、キャッシュメモリ１０８１は揮発性、ハードディスク１０８２は不揮発性を有する。
【００５６】
また、書き込み制御部１０８３は、キャッシュメモリ１０８１からハードディスク１０８２へデータの書き込みを制御する。
例えば、ヘッドの移動の待ち時間やディスク回転の待ち時間等による書き込みの遅延を短くし、ハードディスク１０８２への書き込み速度を高速化するように、データの書き込み順序を適宜変更する。
【００５７】
フラッシュメモリ１０７は、ＯＳカーネルやプログラムをファイルとして記憶する。フラッシュメモリ１０７はＨＤＤ１０８より起動が高速であり、かつシークによる読み出し時間のオーバーヘッドもないので、ここにそれらを保存することでシステムの起動を高速化することができる。
【００５８】
フラッシュメモリ１０７はブロックデバイスでも良いが、バイト単位での読み出しが可能なものもでも良い。後者の場合、ＯＳカーネルやプログラムをＲＡＭ１０３へ展開せずにフラッシュメモリ１０７から直接読み出して実行しても良い。
また、フラッシュメモリ１０７の書き換えは、一般に非常に大きなブロック単位で消去を行う必要があり、その速度も遅いため、頻繁な書き換えが行なわれるワークエリア等はＲＡＭ１０３に置く事が好ましい。
【００５９】
ＮＶＲＡＭ１０６は、ＨＤＤ１０８より書き込み速度が高速な不揮発性の半導体メモリであり、ＨＤＤ１０８上のファイルに対して書き換えや削除等の更新操作が行なわれる際に、その更新前のメタデータから更新後のメタデータを再構築するためのログデータを格納するために用いられる。
【００６０】
ＮＶＲＡＭ１０６は、例えばＦｅＲＡＭ（ferroelectric random access memory）、ＭＲＡＭ（magnetic random access memory）、ＯＵＭ（ovonic unified memory）、ＲＲＡＭ（resistance random access memory）などによって実現される。
【００６１】
ＦｅＲＡＭは、強誘電体膜の分極方向の違いでデータを記憶する半導体メモリである。例えば米国特許第４８７３６６４号明細書においてＳ．Ｓｈｅｆｆｅｉｅｌｄらによって、その一例が提案されている。また、特開平０９−１１６１０７号公報にも他の一例が提案されている。
【００６２】
ＭＲＡＭは、強磁性膜のスピン方向の違いでデータを記憶する半導体メモリである。例えばＩＳＳＣＣ（International Solid-State Circuits Conference）２０００の論文ダイジェストの１２８ページに、Ｒ．Ｓｃｈｅｕｅｒｌｅｉｎらが論文を掲載している。
【００６３】
ＯＵＭは、カルコゲナイド膜の相転移でデータを記憶する半導体メモリである。例えばＩＥＤＭ（International Electron Devices Meeting）２００１の論文ダイジェストの８０３ページに、Ｓ．Ｌａｉらが論文を掲載している。
【００６４】
ＲＲＡＭは、磁気抵抗効果材料の抵抗ヒステリシスでデータを記憶する半導体メモリである。例えばＩＥＤＭ２００２の論文ダイジェストの７．５にＷ．Ｗ．Ｚｈｕａｎｇらが論文を掲載している。
【００６５】
上述したＮＶＲＡＭは、何れも不揮発性メモリとして電源のバックアップなしに記憶状態を自発的に保持することが可能であり、ＲＡＭとして少なくともファイルセクター単位のランダムアクセスが可能である。
【００６６】
また、これらのＮＶＲＡＭに使用される記憶素子は、何れも１０μｓｅｃ以下でその記憶状態を反転させることが可能であり、書き換え速度が高速である。すなわち、ＮＶＲＡＭは、データの書き換えを行う場合において、フラッシュメモリのように長時間かけてデータを消去したり、ディスクメディアのように機械的シークを行う必要がないため、例えば５１２バイトのデータブロック（セクター）をランダムに書き換えるスピードを比較した場合、これらのデバイスに比べて数桁も高速である。
【００６７】
更に、これらのＮＶＲＡＭは、書き換えに要する消費電力がディスクメディアやフラッシュメモリより遥かに小さい点や、書き換え耐性がこれらのデバイスに比べて高い点などの優れた特徴を有している。
【００６８】
次に、上述した構成を有する図１に示すファイル記憶装置のファイル更新動作について、図３および図４を参照して説明する。
【００６９】
図３は、ＨＤＤ１０８上のファイルを更新する処理の流れの一例を図解したフローチャートである。
また、図４は、図１に示すファイル記憶装置においてファイルとそのメタデータが更新される一連の様子を図解した図である。図１と図４の同一符号は同一の構成要素を示す。
【００７０】
まず制御部１０１は、ＨＤＤ１０８のファイルにアクセスを行う際に、システムメモリであるＲＡＭ１０３にログデータ、メタデータ、およびファイル本体のバッファ用の記憶領域１０、１１、２５をそれぞれ割り当てる。バッファ１０にはログデータが、バッファ１１にはファイルの管理情報であるメタデータが、バッファ２５にはファイル本体が格納される。
またこの時、制御部１０１は、ＮＶＲＡＭ１０６上にもログデータの記憶領域１２を割り当てる。
【００７１】
（図４Ａ）
ＨＤＤ１０８へのアクセスを開始すると、制御部１０１は、必要に応じて上述したバッファにＨＤＤ１０８のデータを読み出す。これにより、バッファ１１にはメタデータが、バッファ２５にはファイル本体がＨＤＤ１０８から読み出される。メタデータおよびファイル本体は、何れもファイルセクターの集合よりなっている。
【００７２】
（図４Ｂ）
この状態で、ＨＤＤ１０８のあるファイルに書き換えが施されたとする。この場合、制御部１０１は、ファイル本体用バッファ２５のセクター群１６を更新するとともに、それを管理するメタデータ１４および１５も更新する。また、制御部１０１は、更新されたメタデータ１４および１５のコピー１７および１８を含むログデータ１３を生成し、これをログ用バッファ１０に書き込む（ステップＳＴ１０５）。ログデータ１３に含まれるメタデータ１７、１８以外のデータとしては、例えば、ファイルアクセスごとのログデータの区切りを示し、各々のログデータのデータ量等が記載されたヘッダー、ログの更新が成功したことを示す識別コード等が記載されたフッター、各セクターのＨＤＤ１０８上のアドレス等が含まれている。
【００７３】
（図４Ｃ）
更に、ＨＤＤ１０８のあるファイルが消去されたとする。ファイルの消去は通常メタデータの変更のみで行われる。この場合、制御部１０１は、メタデータ用バッファ領域１１のメタデータ２０、２１、２２を更新し、そのコピーを含むログデータ１９をログバッファ１０に追加する（ステップＳＴ１０５）。
【００７４】
また、ここで制御部１０１は、ログ用バッファ１０のログデータ１３、１９をＮＶＲＡＭ１０６のログ保存領域１２へ転送し、ログデータのコピー２３、２４として書き込む（ステップＳＴ１１０）。図中のログデータ１３、１９に施されたハッチングは、それらがＮＶＲＡＭ１０６に既に保存されたことを示している。
ここで重要なのは、ログデータがファイルアクセスごとに常に塊として生成されること、および、それらが対応するメタデータより先にＮＶＲＡＭ１０６に保存されることである。これにより、ファイルアクセス中に電源異常などの障害が発生しても、ＮＶＲＡＭ１０６のログデータに基づいて、ハードディスク１０８２に記憶されるメタデータの整合性を回復することが可能になる。
【００７５】
なお、ログ用バッファ１０からＮＶＲＡＭ１０６へのログデータのコピーは、ファイルアクセスが発生する度に行っても良いし、あるいは、ファイルアクセスの回数、ログ用バッファ１０に格納されるログデータのデータ量、前回のコピーからの経過時間などが所定のしきい値を超えた場合に行っても良い。ＮＶＲＡＭ１０６へのログデータのコピー頻度が高いほど、異常終了から復帰した後でハードディスク１０８２のログデータをより最新に近い状態に回復することができる。
【００７６】
また、ＮＶＲＡＭは一般に高価であることから、その容量を節約するため、ＮＶＲＡＭ１０６に格納するログデータに適切な圧縮を施しても良い。
一旦ＮＶＲＡＭ１０６にログデータをコピーしたならば、これに対応するログ用バッファ１０のログデータは削除しても良い。
【００７７】
（図４Ｄ）
図４Ｄは、上述の状態から更にファイルアクセスが継続して行われた後の状態を示している。
ログ用バッファ１０に格納されたログデータは適時にＮＶＲＡＭ１０６へコピーされ、コピー元のログデータはログ用バッファ１０から削除されている。
一方、メタデータ用バッファ１１には、既にＨＤＤ１０８に保存されたセクターと未保存のセクターとが混在している。これらは対応するログデータの保存を追いかけるように適時ＨＤＤ１０８に保存されるが、ログデータほど頻繁に細かい単位で保存する必要はない。例えば図４Ｂおよび図４Ｃの状態で更新されたセクター１４、１５、２１、２２、２３は保存済みであるが、それ以降更新されたセクターは未保存である。
【００７８】
なお、ＨＤＤ１０８には上述したように内蔵のキャッシュメモリ１０８１がある。従ってセクター１４、１５、２０、２１、２２に関しても、実際にハードディスク１０８２に保存されたか否かは定かではない。何の対策もなくこの状態で電源が落ちた場合、メタデータに不整合が生じ得るのは前述の通りである。本実施形態では、たとえキャッシュメモリ１０８１のメタデータが消失しても、ＮＶＲＡＭ１０６の保存済みログデータからハードディスク１０８２のメタデータを再構築することができる。
【００７９】
（図４Ｅ） 
制御部１０１は、ＮＶＲＡＭ１０６のログ保存領域１２に記憶されるログデータが所定量を超えるか否かを監視し（ステップＳＴ１１５）、これを超えた場合、ＮＶＲＡＭ１０６のログ保存領域１２の開放を開始する（ステップＳＴ１２０〜１３０）。例えば蓄積されたログデータがログ保存領域１２の全体容量の一定割合に達した場合に、ログ保存領域１２の開放を開始する。
【００８０】
まず制御部１０１は、未保存のログデータがログ用バッファ１０に存在しない事を確認した上で、メタデータ用バッファ１１のセクター中、更新されかつ未保存の状態にあるもの全てをＨＤＤ１０８に書き込む（ステップＳＴ１２０）。この書き込みが完了した後、制御部１０１は、ＨＤＤ１０８にキャッシュメモリ１０８１の開放を要求する。ＨＤＤ１０８は、制御部１０１よりこの開放要求を受けた場合、キャッシュメモリ１０８１に残存するる書き込み対象のデータをハードディスク１０８２に書き込み、この書き込みが完了したならば、制御部１０１へキャッシュメモリ１０８１の開放の完了を通知する（ステップＳＴ１２５）。
【００８１】
キャッシュメモリ１０８１の開放にはかなりの時間がかかるが、これが行われるのはシステムのシャットダウン時か、ＮＶＲＡＭ１０６のログ保存領域１２が満杯に近づいた時のみで良い。従ってその頻度は非常に低い。また、この際ファイル本体バッファ２５の更新セクターを更新メタデータともにハードディスク１０８２へ保存しても良い。
【００８２】
（図４Ｆ）
ＨＤＤ１０８よりキャッシュメモリ１０８１の開放完了通知を受けると、制御部１０１は、ＮＶＲＡＭ１０６のログ保存領域１２を開放する（ステップＳＴ１３０）。具体的には、ログ保存領域１２の既存データを無効化し、新規にデータを蓄積できるよう、領域のヘッダー情報を書き換える。これによって、新たなファイル操作とログデータの蓄積が可能になる。
【００８３】
なお上述の例ではログ保存領域１２の全域を一括で開放したが、保存されたメタデータに応じてその一部を順次に開放しても良い。
例えば、制御部１０１は、更新用のメタデータ１４、１５、２０、２１、２２をＨＤＤ１０８へ転送した後（図４Ｄ）、ＨＤＤ１０８にキャッシュメモリ１０８１の開放を要求し、この転送済みのメタデータ１４、１５、２０、２１、２２を確実にハードディスク１０８２に保存させる。そして、ＨＤＤ１０８よりその開放完了通知を受けたならば、ログ保存領域１２のうち、この保存済メタデータを再構築するためのログデータ２３、２４の記憶領域を開放する。
【００８４】
次に、図１に示すファイル記憶装置のシャットダウン時および起動時の動作について、図５および図６を参照して説明する。
【００８５】
図５は、シャットダウン処理の流れの一例を図解したフローチャートである。
【００８６】
システムを正常にシャットダウンする場合、制御部１０１は、まずメタデータ用バッファ１１に格納される更新メタデータやファイル用バッファ２５に格納されるファイル本体データを全てＨＤＤ１０８に転送する（ステップＳＴ２０５）。そして、ＨＤＤ１０８にキャッシュメモリ１０８１の開放を要求し、これに残存するデータを全てハードディスク１０８２に保存させる（ステップＳＴ２１０）。ＨＤＤ１０８からキャッシュメモリ１０８１の開放完了通知を受けると、制御部１０１は、ＲＡＭ１０３のバッファ１０、１１、２５およびＮＶＲＡＭ１０６のログ保存領域１２を開放する（ステップＳＴ２１５）。
【００８７】
図６は、起動処理の流れの一例を図解したフローチャートである。
【００８８】
システム起動時において、制御部１０１は、まずＮＶＲＡＭ１０６上のログ保存領域にログデータが残存しているか否かを調べ（ステップＳＴ３０５）、残存するログデータが無ければ通常どおりの起動を行う。一方、ＮＶＲＡＭ１０６上にログデータが残っていれば、異常終了があったと判定し、このログデータに基づいてメタデータを生成する（ステップＳＴ３１０）。そして、生成したメタデータをＨＤＤ１０８に書き込む（ステップＳＴ３１５）。
【００８９】
以上説明したように、本実施形態に係るファイル記憶装置によれば、ＨＤＤ１０８に記憶されるメタデータを更新するにあたって、まず、この更新前のメタデータから更新後のメタデータを再構築するためのログデータがＮＶＲＡＭ１０６に書き込まれる。そして、この書き込みが完了した後で、当該更新が実行される。
したがって、キャッシュメモリ１０８１に一時記憶された更新用のメタデータが電源異常などの障害により部分的に消失する場合や、ハードディスク１０８２のメタデータの更新が不完全な場合でも、更新用のメタデータに対応するログデータがＮＶＲＡＭ１０６に保持されるため、このログデータを用いてハードディスク１０８２上におけるメタデータの整合性を回復することが可能となる。
【００９０】
また、ログデータの保存用に、ＨＤＤよりも高速なＮＶＲＡＭを用いるため、書き込み速度の低下を抑えながら、ＨＤＤ１０８へのログデータの書き込み頻度を高めることが可能になる。
【００９１】
例えば図４Ｂの状態で電源瞬断等の障害が発生したとする。この場合、ＲＡＭ１０３上のバッファのデータは全て消滅し、また、ＮＶＲＡＭ１０６にログデータは保存されていないので、結果としてメタデータはファイル操作前の図４Ａと同じ状態になる。この場合、メタデータの不整合は生じなものの、ユーザーは１回分のファイル操作の作業結果を失ったことになる。一方、図４Ｃの状態で障害が発生した場合は、既にＮＶＲＡＭ１０６にログデータが保存されているので、メタデータを最新の状態に復帰できる。
このように、ログデータの保存頻度は、障害が発生した場合にファイルをより最新に近い状態へ回復させるための重要な要素である。したがって、本実施形態のようにログデータの保存用に高速なＮＶＲＡＭを使用すれば、高頻度にログを保存してもファイルのアクセス速度を低下させずに済む。すなわち、システムの堅牢さとパフォーマンスを両立させることができる。
【００９２】
また、一般に高速な記憶媒体は低速な記憶媒体より高価であるが、上述のようにログ用の保存データはメタデータそのものより遥かに小さく、かつメタデータが保存された際には破棄できる。したがって、例えば１００ギガ・バイトを記憶するＨＤＤにおいても、ログデータ用の記憶領域の容量は例えば１〜１０メガ・バイト程度で良い。すなわち、ＮＶＲＡＭ１０６をログデータの保存に用いることで、大きなコストアップを伴わず、電源瞬断等の障害に際しても確実にファイルシステムを保護することができるとともに、ファイルのアクセス速度を高速化することができる。
【００９３】
また、本実施形態に係るファイル記憶装置によれば、シャットダウン処理の過程においてキャッシュメモリ１０８１の開放がＨＤＤ１０８に対して要求され、この要求に応じて、キャッシュメモリ１０８１に残存する書き込み対象のデータがハードディスク１０８２に書き込まれる。そしてこの書き込みの完了を受けて、ＮＶＲＡＭ１０６のログ保存領域１２が開放される。
これにより、正常にシャットダウン処理が実行された場合、ＮＶＲＡＭ１０６のログ保存領域１２が開放されるため、起動時においてＮＶＲＡＭ１０６にログデータが残存するか否かを調べることにより、シャットダウン処理が正常に実行されたか否かを判別することが可能になる。また、揮発性のキャッシュメモリ１０８１に残存するメタデータが確実に不揮発性のハードディスク１０８２へ書き込まれた上で、ＮＶＲＡＭ１０６のログ保存領域１２が開放されるため、ハードディスク１０８２に記憶されるメタデータに不整合を生じさせることはない。
【００９４】
更に、起動処理において、ＮＶＲＡＭ１０６のログ保存領域１２にログデータが残存している場合、ＨＤＤ１０８に記憶されるメタデータがこの残存するログデータに基づいて更新される。これにより、正常にシャットダウン処理が実行されなかった場合は、起動時において、ログ保存領域１２に残存するログデータに基づきメタデータの整合性が回復される。
【００９５】
なお、上述の如くシャットダウン時においてＮＶＲＡＭ１０６のログ保存領域１２は開放されるので、この空いた記憶領域を有効利用しても良い。すなわち、シャットダウン処理でログ保存領域１２の開放が行われた後のＮＶＲＡＭ１０６の空き領域の少なくとも一部に、起動処理において必要となる情報の少なくとも一部を格納しても良い。起動処理に必要な情報は、例えばＯＳカーネルの一部や、起動時にＨＤＤ１０８等から読み込むファイルの一部、さらには起動時にシステムメモリ１０３上に構築されるワークエリアの一部等である。これらの情報を高速なＮＶＲＡＭ１０６に格納することで、起動処理の高速化を図ることが可能である。
ＮＶＲＡＭ１０６に格納されるこれらの情報は、起動処理が終了した後はＲＡＭ１０３に取り込まれるので、削除可能である。したがって、これらの情報の格納に使用した記憶領域は、ログデータの保存に利用することができる。
【００９６】
＜第２の実施形態＞
次に、本発明の第２の実施形態について述べる。
図７は、本発明の第２の実施形態に係るファイル記憶装置の構成の一例を示すブロック図である。
【００９７】
図７に例示するファイル記憶装置は、制御部１０１Ａと、ＲＡＭ１０３と、ＮＶＲＡＭ１０６Ａと、フラッシュメモリ１０７と、ＨＤＤ１０８と、外部メモリ用インターフェース部１０４と、ＨＤＤ用インターフェース部１０５とを有する。
なお、図１と図７の同一符号は同一の構成要素を示す。
【００９８】
図１と図７に示すファイル記憶装置の相違は、ログデータの保存に用いるＮＶＲＡＭとシステムバス１０２との接続方法にある。すなわち、前者の装置では、ＮＶＲＡＭ１０６が外部メモリ用インターフェース部１０４を介してシステムバス１０２に接続されており、外部ストレージとして使用されているのに対し、後者の装置では、ＲＡＭ３と同じシステムメモリの一部にＮＶＲＡＭ１０６Ａが設けられている。
【００９９】
したがって、図７に示すファイル記憶装置では、ＮＶＲＡＭ１０６Ａをログ用バッファとして直接使用することが可能である。ＮＶＲＡＭ１０６Ａをシステムメモリとして使用すると、バイト単位のランダムアクセスや、ＲＡＭ１０３と同等のアクセス性能が要求されるが、ログデータのバックアップ保存を別途行う必要がなく、その分システムの冗長性が無くなくなるため、図１に示すファイル記憶装置に比べて高速化、低コスト化を図ることができる。
【０１００】
上述した構成を有する図７に示すファイル記憶装置のファイル更新動作について、図８および図９を参照して説明する。
【０１０１】
図８は、図７に示すファイル記憶装置においてＨＤＤ１０８上のファイルを更新する処理の流れの一例を図解したフローチャートである。
また、図９は、図７に示すファイル記憶装置においてファイルとそのメタデータが更新される一連の様子を図解した図である。図７と図９の同一符号は同一の構成要素を示す。
【０１０２】
まず制御部１０１Ａは、ＨＤＤ１０８のファイルにアクセスを行う際に、システムメモリであるＲＡＭ１０３にメタデータおよびファイル本体のバッファ用の記憶領域１１および２５をそれぞれ割り当てる。また、システムメモリの一部を構成するＮＶＲＡＭ１０６Ａ上には、ログデータ用のバッファ１０Ａを直接割り当てる。
【０１０３】
（図９Ａ）
ＨＤＤ１０８へのアクセスを開始すると、制御部１０１Ａは、必要に応じて上述したバッファにＨＤＤ１０８のデータを読み出す。メタデータおよびファイル本体は、何れもファイルセクターの集合よりなっている。
【０１０４】
（図９Ｂ）
この状態で、ＨＤＤ１０８のあるファイルに書き換えが施されたとする。この場合、制御部１０１Ａは、ファイル本体用バッファ２５のセクター群１６を更新するとともに、それを管理するメタデータ１４および１５も更新する。また、制御部１０１Ａは、更新されたメタデータ１４および１５のコピー１７Ａおよび１８Ａを含むログデータ１３Ａを生成し、これをＮＶＲＡＭ１０６Ａのログ用バッファ１０Ａに書き込む（ステップＳＴ４０５）。ＮＶＲＡＭ１０６Ａは不揮発性なので、ここに保存されたデータは電源が切れても維持される。なお高価なＮＶＲＡＭの容量を節約するため、ログデータはＮＶＲＡＭ１０６Ａ上に圧縮して保存しても良い。
【０１０５】
（図９Ｃ）
更に、ＨＤＤ１０８のあるファイルが消去されたとする。ファイルの消去は通常メタデータの変更のみで行われる。この場合、制御部１０１Ａは、メタデータ用バッファ領域１１のメタデータ２０、２１、２２を更新し、そのコピーを含むログデータ１９Ａをログ用バッファ１０Ａに追加する（ステップＳＴ４０５）。
【０１０６】
（図９Ｄ）
図４Ｄは、上述の状態から更にファイルアクセスが継続して行われた後の状態を示している。
ＮＶＲＡＭ１０６Ａのログ用バッファ１０Ａには、ファイルアクセスごとに生成されたログデータが順次蓄積されている。
一方、メタデータ用バッファ１１には、既にＨＤＤ１０８に保存されたセクターと未保存のセクターとが混在している。
【０１０７】
（図９Ｅ）
制御部１０１Ａは、ＮＶＲＡＭ１０６のログ用バッファ１０Ａに記憶されるログデータが所定量を超えるか否かを監視し（ステップＳＴ４１０）、これを超えた場合、ＮＶＲＡＭ１０６Ａのログ用バッファ１０Ａの開放を開始する（ステップＳＴ４１５〜４２５）。例えば蓄積されたログデータがログ用バッファ１０Ａの全体容量の一定割合に達した場合に、ログ用バッファ１０Ａの開放を開始する。
【０１０８】
まず制御部１０１Ａは、メタデータ用バッファ１１のセクター中、更新されかつ未保存の状態にあるもの全てをＨＤＤ１０８に書き込む（ステップＳＴ４１５）。この書き込みが完了した後、制御部１０１Ａは、ＨＤＤ１０８にキャッシュメモリ１０８１の開放を要求する。ＨＤＤ１０８は、制御部１０１Ａよりこの開放要求を受けた場合、キャッシュメモリ１０８１に残存するる書き込み対象のデータをハードディスク１０８２に書き込み、この書き込みが完了したならば、制御部１０１Ａへキャッシュメモリ１０８１の開放の完了を通知する（ステップＳＴ４２０）。
【０１０９】
（図９Ｆ）
ＨＤＤ１０８よりキャッシュメモリ１０８１の開放完了通知を受けると、制御部１０１Ａは、ＮＶＲＡＭ１０６Ａのログ用バッファ１０Ａを開放する（ステップＳＴ４２５）。具体的には、ログ用バッファ１０Ａの既存データを無効化し、新規にデータを蓄積できるよう、領域のヘッダー情報を書き換える。これによって、新たなファイル操作とログデータの蓄積が可能になる。
【０１１０】
なお上述の例ではログ用バッファ１０Ａの全域を一括で開放したが、保存されたメタデータに応じてその一部を順次に開放しても良い。
例えば、制御部１０１Ａは、古い順に一回、または複数回のファイルアクセスにて更新されたメタデータをＨＤＤ１０８へ転送した後、ＨＤＤ１０８にキャッシュメモリ１０８１の開放を要求し、この転送済みのメタデータを確実にハードディスク１０８２に保存させる。そして、ＨＤＤ１０８よりその開放完了通知を受けたならば、ログ用バッファ１０Ａのうち、この保存済メタデータに対応するログデータの記憶領域を開放する。
【０１１１】
以上説明したように、本実施形態に係るファイル記憶装置においても、図１に示すファイル記憶装置と同様に、ファイルのアクセス速度の低下を抑えつつ、電源瞬断等の障害に際しても確実にファイルシステムを保護することができる。
また、各ファイルアクセスに伴って、ログデータが直接ＮＶＲＡＭ上に保存されるので、ファイルの更新情報は常に最新のものが確保される。その上、図１に示すファイル記憶装置のようにログバッファからＮＶＲＡＭに別途データを保存する処理の必要がないので、処理の効率化ならびに高速化を図ることができる。
【０１１２】
＜第３の実施形態＞
次に、本発明の第３の実施形態について述べる。
【０１１３】
上述した実施形態において、ログデータの保存は、ファイルアクセスごとの単位でグループ化して行われることが重要である。何故なら、一回のファイルアクセスでメタデータのセクターが複数更新される際、これらに更新済ものと未更新のものがあると、メタデータ間に不整合が生じるためである。
【０１１４】
このようなログデータの有効性は、例えば各ログデータの末尾にその書き込みが完了したことを示す識別コードを記載し、その値を調べることによって判定可能である。しかしながら、ログデータ自体の書き込み中に電源瞬断が発生し、それによって書き込まれたデータに不定が発生すると、判定を誤る可能性がある。
【０１１５】
これは特にフラッシュメモリやディスクメディア等において、書き込みを巨大なブロックデータ単位で行う場合に頻繁に起こり得る。すなわち、それらのデバイスは、ログデータの保存完了を表す識別コードと、その更新内容自体を、同時に一括して保存しようとするため、この保存時に電源瞬断が発生すると、識別コードのみ正しく保存され、更新内容の一部が保存されない可能性がある。この場合、正しく書き込まれていなログデータが正しく書き込まれたものとして誤判定されるため、メタデータの不整合が生じてしまう。
ＮＶＲＡＭの場合、これらのデバイスに比べて書き込み速度が非常に速いためこうした不定状態を生じる確率は低いが、全く皆無とはいえない。
【０１１６】
このような問題を解決する第１の方法は、ログデータの書き込み時における不定の発生を防止するものである。不定が発生しないとは、即ち書き込みの最中に電源が落ちた場合、その媒体の書き込み単位となるデータのブロック（以降、ブロックと呼ぶ）の全てを確実に媒体に保存させるか、もしくは全く保存されないようにすることである。さらに望ましくは、書き込みの最中に電源が落ちた場合、書き込み途中のデータはその全てを確実に保存し、それ以降のアクセスを禁止することである。
【０１１７】
図１０は、図１に示すファイル記憶装置に不定発生の防止手段を設けた、本実施形態に係るファイル記憶装置の構成の一例を示すブロック図である。
図１０に例示するファイル記憶装置は、図１に示すファイル記憶装置におけるＮＶＲＡＭ１０６をＮＶＲＡＭ１０６Ｂに置き換え、これに電源電圧の異常の有無を監視する電源電圧監視部１０９を設けたものである。
【０１１８】
電源電圧監視部１０９は、電源電圧の異常として、たとえば、電源電圧が所定の電圧を下回った場合に異常を知らせる信号を出力する。
【０１１９】
ＮＶＲＡＭ１０６Ｂには、制御部１０１において生成された上述のログデータが、所定のブロック（例えばファイルセクター）ごとに区分されて、先頭のブロックより順に供給される。また、制御部１０１においてファイルアクセスごとに生成されるログデータの末尾には、書き込みの完了を表す所定の識別コードが付されている。
ＮＶＲＡＭ１０６Ｂは、こうしたブロックを順次に入力して記憶領域に書き込むが、ブロックの書き込み動作中に電源電圧監視部１０９が異常を検出した場合、書き込み途中のブロックの書き込みを完了させた後で、これに続くブロックの書き込みを禁止する。
【０１２０】
ＮＶＲＡＭは、一般に書き込みが高速で、かつ消費電力も小さいので、電源の瞬断を検出さえできれば、基板の寄生キャパシタ等に残された僅かな電荷を使って途中まで行われた書き込みを完全に完了し、さらに次のアクセスを完全に禁止することが可能である。
【０１２１】
なお、ＮＶＲＡＭの中には、ＦｅＲＡＭのように破壊読出しを行うものがある。この場合は、読み出しの途中に電源が落ちても、読み出し中のデータが消失しないよう保護する必要がある。具体的には、読み出しの途中に電源の瞬断を検出したら、基板の寄生キャパシタ等に残存した電荷を用いて確実にデータをセンスアンプに読み出し、さらに読み出し元のメモリセルへの再書き込みまでを完了して、その後のアクセスを禁止する。
【０１２２】
ＦｅＲＡＭの書き込みはセルキャパシタへの電圧印加のみで行われるので、ＮＶＲＡＭの中でも書き込み消費電力は最も小さい。したがって、書き込み時や読み出し時の保護機能の搭載は最も容易であり、特に本実施形態の用途に適したメモリである。
【０１２３】
以上述べた第１の方法は、ログデータの不定状態を直接的に防止するものであるが、仮にログデータの一部のブロックが不定状態になっても、そのログデータが正常に書き込まれたデータとして誤判定されることを防止できれば、メタデータの不整合を防ぐことが可能である。
【０１２４】
そこで、第２の方法として、ログデータをＮＶＲＡＭ等の記憶手段に書き込む際のブロックのデータ長を、ログデータの末尾に付される上述した識別コードのデータ長より短くしても良い。バイトアクセスが可能なＮＶＲＡＭであれば、ログの保存を例えば１６ビット単位で行い、識別コードの長さを３２ビットにする。
【０１２５】
図１０に示すファイル記憶装置を例に述べると、第２の方法に係る制御部１０１は、書き込みの完了を表す所定の識別コードが末尾に付されたログデータを、識別コードよりデータ長が短い複数のブロックに区分し、このブロックを先頭から順にＮＶＲＡＭ１０６Ｂに供給する。第２の方法に係るＮＶＲＡＭ６Ｂは、供給されるブロックの書き込み動作中に電源電圧監視部１０９が異常を検出した場合、ブロックの書き込み動作を停止する。
この場合、ＮＶＲＡＭ１０６Ｂへログデータを書き込んでいる途中に電源電圧の異常が発生し、このログデータの一部のブロックが書き込み不定状態になる可能性がある。しかしながら、識別コードはブロックよりデータ長が長いため、この場合ＮＶＲＡＭ１０６Ｂに全く書き込まれないか部分的にしか書き込まれない。そのため、識別コードに基づいてログデータの書き込み完了の有無を判断すると、高い確率でログデータの書き込みは未完状態と判定されることになり、書き込みに失敗しているログデータを書き込みが完了したものとして扱う恐れが減少する。
【０１２６】
＜第４の実施形態＞
次に、本発明の第４の実施形態について述べる。
【０１２７】
上述した第１および第２の実施形態では、ＮＶＲＡＭ等の不揮発性の記憶手段に保存されたログデータに基づいてメタデータの再構築が行われるが、本実施形態では、不揮発性のキャッシュメモリと主記憶部を有する記憶手段に保存されたログデータに基づいてメタデータの再構築が行われる。
【０１２８】
図１１は、本発明の第４の実施形態に係るファイル記憶装置の構成の一例を示すブロック図である。
【０１２９】
図１１に例示するファイル記憶装置は、制御部１０１Ｃと、ＲＡＭ１０３と、ＮＶＲＡＭ１０６と、フラッシュメモリ１０７と、ＨＤＤ１０８Ｃと、外部メモリ用インターフェース部１０４と、ＨＤＤ用インターフェース部１０５とを有する。
また、ＨＤＤ１０８Ｃは、不揮発性のキャッシュメモリ１０８１Ｃとハードディスク１０８２とを有する。
なお、図１および図２と図１１の同一符号は同一の構成要素を示す。
【０１３０】
図１１に示すファイル記憶装置は、図１に示すファイル記憶装置のログデータ保存用のＮＶＲＡＭ１０７を削除し、更にそのＨＤＤ１０８をＨＤＤ１０８Ｃに置き換えたものである。また、ＨＤＤ１０８Ｃは、ＨＤＤ１０８の揮発性キャッシュメモリ１０８１をＮＶＲＡＭ等の不揮発性キャッシュメモリ１０８１Ｃに置き換えたものである。
【０１３１】
ＨＤＤ１０８Ｃは、キャッシュメモリ１０８１Ｃ自体が不揮発性なので、一旦その内部にデータが転送されれば、いつ電源が落ちても内部のデータが失われることはない。すなわち、キャッシュメモリ１０８１Ｃを含むＨＤＤ１０８Ｃ全体を、一体化した不揮発性ストレージメディアと見なすことができる。
【０１３２】
上述した構成を有する図１１に示すファイル記憶装置のファイル更新動作について、図１２および図１３を参照して説明する。
図１２は、図１１に示すファイル記憶装置においてＨＤＤ１０８Ｃ上のファイルを更新する処理の流れの一例を図解したフローチャートである。
また、図１３は、図１１に示すファイル記憶装置においてファイルとそのメタデータが更新される一連の様子を図解した図である。図１１と図１３の同一符号は同一の構成要素を示す。
【０１３３】
まず制御部１０１Ｃは、ＨＤＤ１０８のファイルにアクセスを行う際に、システムメモリであるＲＡＭ１０３にログデータ、メタデータ、およびファイル本体のバッファ用の記憶領域１０、１１、２５をそれぞれ割り当てる。バッファ１０にはログデータが、バッファ１１にはファイルの管理情報であるメタデータが、バッファ２５にはファイル本体が格納される。
また制御部１０１Ｃは、ＨＤＤ１０８Ｃ上に、通常のファイル格納領域とは別のログデータ保存領域を割り当てる。
【０１３４】
（図１３Ａ）
ＨＤＤ１０８Ｃへのアクセスを開始すると、制御部１０１Ｃは、必要に応じて上述したバッファにＨＤＤ１０８Ｃのデータを読み出す。これにより、バッファ１１にはメタデータが、バッファ２５にはファイル本体がＨＤＤ１０８から読み出される。これらは何れもファイルセクターの集合よりなっている。
【０１３５】
（図１３Ｂ）
この状態で、ＨＤＤ１０８Ｃのあるファイルに書き換えが施されたとする。この場合、制御部１０１Ｃは、ファイル本体用バッファ２５のセクター群１６を更新するとともに、それを管理するメタデータ１４および１５も更新する。また、制御部１０１Ｃは、更新されたメタデータ１４および１５のコピー１７および１８を含むログデータ１３を生成し、これをログ用バッファ１０に書き込む（ステップＳＴ５０５）。
【０１３６】
（図１３Ｃ）
更に、ＨＤＤ１０８のあるファイルが消去されたとする。ファイルの消去は通常メタデータの変更のみで行われる。この場合、制御部１０１Ｃは、メタデータ用バッファ領域１１のメタデータ２０、２１、２２を更新し、そのコピーを含むログデータ１９をログバッファ１０に追加する（ステップＳＴ５０５）。
【０１３７】
また、ここで制御部１０１Ｃは、ログ用バッファ１０のログデータ１３、１９をＨＤＤ１０８Ｃのログ保存領域へ転送し、ログデータのコピー２３、２４として書き込む（ステップＳＴ５１０）。
ここで重要なのは、ログデータがファイルアクセスごとに常に塊として生成されること、および、それらが対応するメタデータより先に不揮発性ストレージメディアとしてのＨＤＤ１０８Ｃに保存されることである。これにより、ファイルアクセス中に電源異常などの障害が発生しても、キャッシュメモリ１０８１Ｃまたはハードディスク１０８２に残るログデータに基づいて、ハードディスク１０８２に記憶されるメタデータの整合性を回復することが可能になる。
【０１３８】
なお、ログ用バッファ１０からＨＤＤ１０８Ｃへのログデータのコピーは、ファイルアクセスが発生する度に行っても良いし、あるいは、ファイルアクセスの回数、ログ用バッファ１０に格納されるログデータのデータ量、前回のコピーからの経過時間などが所定のしきい値を超えた場合に行っても良い。ＨＤＤ１０８Ｃへのログデータのコピー頻度が高いほど、異常終了から復帰した後でハードディスク１０８２のログデータをより最新に近い状態に回復することができる。
【０１３９】
一旦ＨＤＤ１０８Ｃにログデータを書き込んだならば、これに対応するログ用バッファ１０のログデータは削除しても良い。
【０１４０】
（図１３Ｄ）
図１３Ｄは、上述の状態から更にファイルアクセスが継続して行われた後の状態を示している。
ログ用バッファ１０に格納されたログデータは適時にＨＤＤ１０８Ｃへコピーされ、コピー元のログデータはログ用バッファ１０から削除されている。
一方、メタデータ用バッファ１１には、既にＨＤＤ１０８Ｃに保存されたセクターと未保存のセクターとが混在している。
【０１４１】
（図１３Ｅ）
制御部１０１Ｃは、ＨＤＤ１０８Ｃのログ保存領域に記憶されるログデータが所定量を超えるか否かを監視し（ステップＳＴ５１５）、これを超えた場合、このログ保存領域の開放を開始する（ステップＳＴ５２０〜ＳＴ５２５）。例えば蓄積されたログデータがログ保存領域の全体容量の一定割合に達した場合に、ログ保存領域の開放を開始する。
【０１４２】
まず制御部１０１Ｃは、未保存のログデータがログ用バッファ１０に存在しない事を確認した上で、メタデータ用バッファ１１のセクター中、更新されかつ未保存の状態にあるもの全てをＨＤＤ１０８Ｃに書き込む（ステップＳＴ５２０）。この時、バッファ２５に格納されるファイル本体の更新分をＨＤＤ１０８Ｃに書き込んでも良い。
【０１４３】
（図１３Ｆ）
ＲＡＭ１０３のバッファからＨＤＤ１０８へのデータの書き込みが完了すると、制御部１０１Ｃは、ＨＤＤ１０８Ｃのログ保存領域１２を開放する（ステップＳＴ５２５）。これによって、新たなファイル操作とログデータの蓄積が可能になる。
【０１４４】
なお上述の例においては、ＨＤＤ１０８Ｃのログ保存領域の全域を一括で開放したが、保存されたメタデータに応じてその一部を順次に開放しても良い。
【０１４５】
以上説明したように、本実施形態に係るファイル記憶装置によれば、キャッシュメモリ１０８１Ｃおよびハードディスク１０８２が何れも不揮発性を有するため、電源異常などの障害により書き込みが途中で停止しても、ログデータが失われることはない。したがって、これらに残存するログデータや更新用メタデータに基づいてハードディスク１０８２のメタデータを更新し、これに記憶されるメタデータの整合性を回復することが可能となる。
【０１４６】
また、第１の実施形態に係るファイル記憶装置では、図４Ｅにおいて、更新された未保存のメタデータをＨＤＤ１０８に転送した後、ＨＤＤ１０８のキャッシュメモリ１０８１を開放する処理が行われているが、不揮発性のキャッシュメモリ１０８１Ｃは電源が落ちたあともデータを保持するため、本実施形態ではこうした処理の必要がない。したがって、処理手順を減らすことが可能となり、ファイルのアクセス速度の高速化を図ることができる。
【０１４７】
また、ＨＤＤ１０８Ｃのハードディスク１０８２は常に不揮発性のキャッシュメモリ１０８１Ｃを介してアクセスされるので、キャッシュメモリ１０８１Ｃで不定が発生しなければ、ハードディスク１０８２で不定が発生しても問題にならない。何故なら、キャッシュメモリ１０８１Ｃからハードディスク１０８２へデータを書き込む際に電源が落ちても、書き込み元のキャッシュメモリ１０８１Ｃ上に不定を含まないデータが残っていれば、次の起動時にこのデータをハードディスク１０８２に上書きすることにより、ハードディスク１０８２上の不定を修復できるためである。
例えば、ＨＤＤ１０８Ｃの書き込み制御部１０８３は、起動処理においてキャッシュメモリ１０８１Ｃに書き込み可能なデータが残存しているか否かを調べ、残存している場合、このデータをハードディスク１０８２に書き込む処理を行う。これにより、キャッシュメモリ１０８１Ｃで不定が発生しない限り、ハードディスク１０８２上の不定は修復される。
【０１４８】
キャッシュメモリ１０８１Ｃにおける不定の発生の防止方法は、上述した第３の実施形態と同様である。すなわち、書き込みの最中に電源電圧の異常が検出された場合、キャッシュメモリ１０８１Ｃにおいて、基板の寄生キャパシタ等に残された僅かな電荷を使って途中まで行われたブロックの書き込みを完全に完了し、その後のアクセスを禁止する。破壊読出し型のＮＶＲＡＭにおいては、読み出しの最中に電源電圧の異常が検出された場合、基板の寄生キャパシタ等に残された僅かな電荷を用いて確実にデータをセンスアンプに読み出し、さらに読み出し元のメモリセルへの再書き込みまでを完了して、その後のアクセスを禁止する。
【０１４９】
また、ＨＤＤ１０８Ｃは、キャッシュメモリ１０８１Ｃからハードディスク１０８２への書き込み順序を適宜変更して、書き込み速度の高速化を図る機能を有しても良い。すなわち、書き込み制御部１０８３において、ヘッドの移動の待ち時間やディスク回転の待ち時間等による書き込みの遅延を短くし、ハードディスク１０８２への書き込み速度を高速化するように、データの書き込み順序を適宜変更する制御を行っても良い。これにより、書き込み速度を更に高速化することができる。
【０１５０】
なお、本発明は上述した実施形態に限定されず、種々の改変が可能である。
【０１５１】
図１に示すファイル記憶装置において、ＮＶＲＡＭ１０６はバイト単位のランダムアクセスが可能なデバイスでも良いし、ＨＤＤと同様のブロックデバイスでも良い。
【０１５２】
また、図１、図７および図１１に示すファイル記憶装置ではファイルの主記憶装置としてＨＤＤを用いる例が示されているが、これに限らず、例えばＤＶＤなどの光ディスクや、ＭＯなどの光磁気ディスクなど、種々のディスクメディアをこれ用いても良い。あるいは、フラッシュメモリなどの半導体メモリをこれ用いても良い。
【０１５３】
図１および図７に示すファイル記憶装置では、ログデータの保存用の記憶手段としてＮＶＲＡＭを用いる例が示されているが、これに限らず、例えば次に述べるのように、フラッシュメモリや、バッテリーによって電源電圧が供給されるＳＲＡＭをＮＶＲＡＭの代わりに用いても良い。
【０１５４】
フラッシュメモリは、ＮＶＲＡＭに比べて安価であるが、必ずしもディスクメディアより十分高速とは言えない。フラッシュメモリはＨＤＤのような機械的シークを行わないものの、書き換えに長時間の消去工程が必要であり、書き込みの速度もＮＶＲＡＭほど高速ではない。また、メタデータの鮮度を確保するため、ログデータは頻繁に不揮発性メモリへ保存することが好ましいが、フラッシュメモリの書き換え耐性は十万回程度であるため、この用途に十分とは言えない。
【０１５５】
こうした課題に対する次善の策は、ログの保存領域を開放する際に、この保存領域全域を一括消去し、その後のログデータの保存は、蓄積されたログデータが一定のデータ量を超えるまで、消去を伴わない追記によって行うことである。これにより消去時間を節約でき、書き込み速度の一定の改善が見込まれる。また書き換え回数も最小限に抑えられる。
【０１５６】
また、ログ保存領域の開放を行った後、新たなログ保存領域をメモリチップ上の前回とは異なる場所に確保すれば、書き換えのストレスを緩和することができ、寿命を延ばすことができる。
更に、ログデータの追記を、上述した識別コードよりデータ長の短いバイト単位やワード単位のブロックで行うことにより、不定のブロックを含んだログデータによるメタデータの再構築を防止することができる。
【０１５７】
しかしながら、それでもフラッシュメモリの書き込み速度はＮＶＲＡＭより２〜３桁も遅いので、性能上の低下は避けられない。さらにフラッシュメモリにおいて、書き込みをバイト単位等の細切れで行うのは、転送効率の一層の低下を招き、性能をより悪化させる。
すなわち、ログデータの保存にフラッシュメモリを使用しても、メタデータの不整合を防止できるという効果は得られるが、書き込み速度や寿命を考慮すると、ログデータの保存にはフラッシュメモリよりＮＶＲＡＭの方が望ましい。
ただし、コスト上の制約からＮＶＲＡＭの採用が困難である場合は、上述の施策を施したフラッシュメモリでも一定の改善は可能である。
【０１５８】
ＮＶＲＡＭと同様の機能は、バッテリーバックアップを行ったＳＲＡＭにおいても実現可能である。
しかしながら、１ビットの記憶に６つのトランジスタを必要とするＳＲＡＭはＮＶＲＡＭよりさらに高価であり、かつバックアップ用バッテリーの保守も必要である。ＳＲＡＭはどのメモリより高速にアクセスできるものの、特に第１の実施形態の用途において、ログデータの保存に用いる記憶手段はメタデータを格納するディスクメディア等より十分高速であれば良いのであって、ＮＶＲＡＭは必要十分な性能を持っている。また第２の実施形態においても、コンピュータのシステムメモリに用いられる記憶手段の殆どはＤＲＡＭであり、特にＦｅＲＡＭやＭＲＡＭであればその必要性能はカバーできる。したがって、コストと保守の両面からＮＶＲＡＭを使用する方が望ましい。
ただし、ＮＶＲＡＭのような比較的新しい技術の導入にはある程度のリスクが伴うため、将来のＮＶＲＡＭへ移行を念頭においた暫定措置として、バッテリーバックアップされたＳＲＡＭを導入するケースも有り得るであろう。
【０１５９】
また、図１１に示すファイル記憶装置では、キャッシュメモリとしてＮＶＲＡＭを用いる例が示されているが、これに限らず、例えばバッテリーによって電源電圧が供給されるＳＲＡＭをＮＶＲＡＭの代わりに用いても良い。
しかし上述したように、１ビットの記憶に６トランジスタを必要とするＳＲＡＭはＮＶＲＡＭよりさらに高価であり、かつバックアップ用バッテリーの保守も必要である。ＳＲＡＭはどのメモリより高速にアクセスできるものの、ＨＤＤ等に使用されるキャッシュメモリはそのディスク媒体等より十分高速であれば良いのであって、ＮＶＲＡＭは必要十分な性能を持っている。従ってコストと保守の両面からＮＶＲＡＭを使用する方が望ましい。
ただし、ＮＶＲＡＭへ移行を念頭においた暫定措置として、バッテリーバックアップされたＳＲＡＭを導入するケースも有り得るであろう。
【図面の簡単な説明】
【０１６０】
【図１】本発明の第１の実施形態に係るファイル記憶装置の構成の一例を示すブロック図である。
【図２】図１に示すファイル記憶装置におけるＨＤＤの構成の一例を示すブロック図である。
【図３】図１に示すファイル記憶装置においてＨＤＤ上のファイルを更新する処理の流れの一例を図解したフローチャートである。
【図４】図１に示すファイル記憶装置においてファイルとそのメタデータが更新される一連の様子を図解した図である。
【図５】シャットダウン処理の流れの一例を図解したフローチャートである。
【図６】起動処理の流れの一例を図解したフローチャートである。
【図７】本発明の第２の実施形態に係るファイル記憶装置の構成の一例を示すブロック図である。
【図８】図７に示すファイル記憶装置においてＨＤＤ上のファイルを更新する処理の流れの一例を図解したフローチャートである。
【図９】図７に示すファイル記憶装置においてファイルとそのメタデータが更新される一連の様子を図解した図である。
【図１０】図１に示すファイル記憶装置に不定発生の防止手段を設けた、第３の実施形態に係るファイル記憶装置の構成の一例を示すブロック図である。
【図１１】本発明の第４の実施形態に係るファイル記憶装置の構成の一例を示すブロック図である。
【図１２】図１１に示すファイル記憶装置においてＨＤＤのファイルを更新する処理の流れの一例を図解したフローチャートである。
【図１３】図１１に示すファイル記憶装置においてファイルとそのメタデータが更新される一連の様子を図解した図である。
【符号の説明】
【０１６１】
１０１，１０１Ａ，１０１Ｃ…制御部、１０２…システムバス、１０３…ＲＡＭ、１０４…外部メモリ用インターフェース部、１０５…ＨＤＤ用インターフェース部、１０６，１０６Ａ…ＮＶＲＡＭ、１０７…フラッシュメモリ、１０８，１０８Ｃ…ハードディスクドライブ（ＨＤＤ）、１０９…電源電圧監視部、１０８１，１０８１Ｃ…キャッシュメモリ、１０８２…ハードディスク、１０８３…書き込み制御部
【図１】
2005115857.tif 000003
【図２】
2005115857.tif 000004
【図３】
2005115857.tif 000005
【図４】
2005115857.tif 000006
【図５】
2005115857.tif 000007
【図６】
2005115857.tif 000008
【図７】
2005115857.tif 000009
【図８】
2005115857.tif 000010
【図９】
2005115857.tif 000011
【図１０】
2005115857.tif 000012
【図１１】
2005115857.tif 000013
【図１２】
2005115857.tif 000014
【図１３】
2005115857.tif 000015