ジャーナリングファイルシステム

ジャーナリングファイルシステムとは



ジャーナリングファイルシステム(Journaling file system)は、ファイルシステムメタデータ変更をトランザクションとして扱い、その情報をジャーナルと呼ばれる領域に記録する機能を持つファイルシステムです。これにより、予期せぬシステムクラッシュや電源断が発生した場合でも、ファイルシステムの一貫性を保ち、データ損失のリスクを低減します。ジャーナルファイルシステムとも呼ばれます。

既存ファイルシステムの問題点



従来のファイルシステムでは、データの実体(実データ)と、そのデータの場所や属性などの情報(メタデータ)を別々に記録していました。ファイルを更新する際、まず実データを書き込み、その後メタデータを更新する必要がありました。しかし、メタデータの書き込み中にシステムが中断した場合、実データとメタデータの間で不整合が生じ、データへのアクセスが不可能になる可能性がありました。

例えば、非常に小さいファイル群を大量に記録する場合や、巨大なファイルを記録する場合、メタデータの量が増加し、書き込みに時間がかかります。その最中に電源断などが起こると、メタデータが破損し、ファイルシステム全体が壊れてしまう可能性があります。

初期の回避策



この問題を回避するために、システム再起動時にディスク全体をスキャンし、矛盾を修正するプログラムが用いられてきました。Unix系ではfsck、Windowsではchkdskやscandisk、Mac OSではDisk First Aidなどが該当します。これらのツールは起動時に自動的に実行されることもありますが、以下の問題点がありました。

ディスク全体のスキャンに時間がかかる。
スキャン中に想定外の問題が見つかった場合、データが失われる可能性がある。

ジャーナリングによる解決



ジャーナリングファイルシステムは、上記の問題を解決するために導入されました。メタデータの更新をジャーナルに記録することで、システムが中断しても、ジャーナルを参照して更新をやり直すことができ、ファイルシステムの整合性を保つことが可能です。

具体的には、ファイル更新時に以下の手順を踏みます。

1. 更新内容をジャーナルに記録する(メタデータのみ)。
2. 実データを更新する。
3. ジャーナルに記録したメタデータファイルシステムに反映する。

この方式により、どの段階でシステムが中断しても、ジャーナルに記録された内容を元に、ファイルシステムを整合性のある状態に戻すことができます。

ただし、一般的にはジャーナルで保護されるのはメタデータのみであり、ファイルの中身(実データ)までは保護されません。つまり、ジャーナリングファイルシステムであっても、システムクラッシュ時に、保存したはずのデータが保存されていないという状況が起こり得ます。しかし、Linuxのext3やネットアップのWAFLなど、一部のジャーナリングファイルシステムでは実データの保護も行っています。

経緯



ジャーナリングファイルシステムは、元々汎用機で重要なデータを扱う際に考案された技術です。その設計思想をPCにも取り入れる形で、オープン系ではIBMのJFS(1990年)とTolerant Software(現VERITAS)のVxFS(1989年)が最初の実装例です。

JFS: 当初OS/2向けに開発が進められましたが、1990年にIBMの商用UNIXであるAIXに実装されました。
VxFS: 1989年にTolerant SoftwareがUNIX System V向けに開発し、商用パッケージとして提供を開始しました。

その後、UNIXライクなOSの発展に伴い、多くのジャーナリングファイルシステムが考案され、実装されています。

ジャーナリングファイルシステムの例



以下に、代表的なジャーナリングファイルシステムとその対応OSを示します。VxFS以外は無償、または標準搭載されているものがほとんどです。

商用UNIX: AIX (JFS, VxFS), HP-UX (VxFS), Solaris (UFS logging, ZFS, VxFS), IRIX (XFS)
Linux: ext3, ext4, JFS, ReiserFS, XFS, VxFS, ZFS
FreeBSD: GEOM gjournal, ZFS, Journaled Soft updates
NetBSD: WAPBL
Windows: NTFS
Mac: HFS+ (Mac OS X 10.2.2からジャーナリング機能が追加)
* その他: BeOS (BFS), NetWare5 (NSS), Spiralog, WAFL (ネットアップONTAP)

ジャーナリングファイルシステムは、現代のコンピュータシステムにおいて、データの信頼性を維持するために不可欠な技術となっています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。