ジャーナリングファイルシステム
ジャーナリングファイルシステム(Journaling file system)とは、書き換え処理要求(トランザクション)単位で内包するファイル構成情報を含むメタデータを管理および保持できる機能を持ったファイルシステムのこと。ジャーナルファイルシステムともいう。
以上の問題点に対し、それぞれの実データ書き込みよりもメタデータの書き込みを先行的に行い、書き込み要求に従ってそのメタデータを「ジャーナル」と呼ばれる領域に逐次記録し、更新する事で対処するジャーナリングが考案され、実装された。
メタデータを先行的に書き込み、実データ書き込み要求に従ってその変更点を反映し、複数回分のメタデータをジャーナルに保持・管理する事で、ファイル更新中の書き込み中断に対処する事ができる。
この方法を取る事により、メタデータと実データ間の矛盾が発生しても、矛盾が発生する前のメタデータに強制的に戻す事により、実データを含むファイル自体の消失を避ける事ができる。この方法は、ハードディスク全体を詳細にスキャンするより遥かに処理時間を短くする事が可能である。
他の解決方法として、いかなるタイミングで連続する書き込みが中断されても矛盾が起きないよう、ディスクへの書き込み順を制御する、という解決がある。FreeBSDではそちらが採用された(soft updates)。
一般にジャーナルによって保護されるのはメタデータまでで、ファイルの中身までは保護されない。つまり、ジャーナリングファイルシステムを導入することで、システムクラッシュにともなうファイルシステムの破壊という事態は避けられるものの、保存したはずの内容が保存されていなかったという事態が起こる可能性は十分に考えられる。
ただし、Linuxのext3やネットアップのWAFL等、いくつかのジャーナリングファイルシステムでは実データの保護も行っている。