各種のオペレーティングシステムに対して、信頼性と可用性の向上を齎すべくして実装されているファイルシステムテクノロジーの補助機能。macOS(Apple)における「HFS Plus(Hierarchical File System Plus、Mac OS拡張フォーマット)」、Linuxディストリビューションにおける「ext4(extended file system)」「JFS(Journaled File System)」「ReiserFS」「XFS(eXtents File System)」「Btrfs(B-tree file system)」、BeOSにおける「BeFS」等での採用実績を有している他、「Windows 2000」以降において標準的に使用されている「NTFS(NT File System)」においても実装されている等、クライアント、サーバーの環境を問わずメインストリームとして採用されている。
Table of Contents
信頼性評価の指標「RASIS」の「Reliability(信頼性)」、「Availability(可用性)」を重視した設計に
コンピューターシステムにおける信頼性評価の指標とされる「RASIS」の「R(Reliability、信頼性)」、及び「A(Availability、可用性)」を重視した設計となっており、データベースサーバー等では古くから標準的に採用されている実績もある。
ディスク上における各種のリソースに対して「INSERT(追加)」「UPDATE(更新)」「DELETE(削除)」等のアクションが発生した場合に、ファイルシステムにおいて発生した一連の更新履歴をメタデータの一種でもあるジャーナルファイル(ログファイル)に継続的な変更記録として保持させる点が主要な特徴の一つとして挙げられる。
そして、システム障害等に起因した不慮のクラッシュ、或いは停電を始めとする不慮の電源断等、強制再起動を伴うトラブル等が発生した場合にも、前述のジャーナルファイル(ログファイル)を参照しつつ、ファイルシステムの不整合や、システムのダウンタイムを最小限に抑える事が可能となっている。
「Mac OS X 10.2.2(Mac OS X Jaguar)」においてインプリメント
Mac OS Xにおいては、米国時間2002年11月11日付にてリリースされた「Mac OS X 10.2.2(Mac OS X Jaguar)」より「Terminal(ターミナル、/Aplication/Utilities/Terminal.app)」を介したコマンドラインによる制御に対応した後、「Mac OS X 10.3 Panther」より「Disk Utility(ディスクユーティリティ、/Aplication/Utilities/Disk Utility.app)」を通じたGUIによる制御にも対応した。
以降では、Mac OS Xにおけるデフォルトのファイルシステム(Journaled HFS+(Mac OS拡張(ジャーナリング)))として採用される事となる(「Mac OS X Server」においては、「Mac OS X Server 10.2.2」の時点でGUIによる制御に対応している)。
ジャーナル記録時の基本プロセス
ファイルシステムにジャーナルを記録する際には、随時に以下のプロセスが繰り返される事となる。
- トランザクションによる処理の結果、或いはディレクトリーエントリーに追加するための各種の情報を一時的にメインメモリーに退避
- トランザクションによって齎された、ファイルシステムに対する継続的な変更記録をジャーナルとして専用の領域に記録
- 最初のプロセスでメインメモリーに退避させていた情報を、ハードディスク上の対応するブロックに転記(この際の書き込み処理は、データベース上では「コミット」、ファイルシステム上では「フラッシュ」と各々称されている)
- 書き込み終了後、専用の領域に記録されていたジャーナルを破棄(ジャーナル領域の解放)
上記のようにジャーナリングファイルシステムでは、ディスクにおいて発生した各種の処理を4段階のプロセスを経て完了とする事によって、ファイルシステムにおける整合性の確保を実現している。
そして、「2」のプロセスにて作成されるジャーナルファイルがジャーナリングファイルシステムの語源にもなっており、Mac OS Xのジャーナルファイルはディスクにおける物理的なファイルの一つとして生成されるものの、不可視属性として定義されるため「Finder」からその存在を確認する事はできない。
尚、ジャーナリングファイルシステムによって保護されるのはファイルシステムにおける整合性であり、強いてはファイル自体の消失を未然に防ぐといった点にある。つまり、一貫性の保証はデータレベルではなく、ファイルシステムレベルで行われるため、ロールバックを伴うような処理が発生した場合には、保存した筈の編集結果が破棄されていた、といったケースも生じ得る(本来であれば「2」のプロセスにて記録される筈のジャーナルが、何れかのトラブルで不完全な状態となってしまった場合には、「2」のプロセスにてメインメモリーに退避していた変更結果は破棄される事となる)(最終更新日 2025年1月4日)。