2008年02月12日

Journaling Filesystem【ジャーナリングファイルシステム】

【属性】Filesystem
【関連Link】
Created Date:08/02/12
Modified Date:
【解説】
各種コンピュータシステムに信頼性と可用性の向上等を齎すべくして実装されているファイルシステムの一つ。Linuxベースのサーバオペレーティングシステムや「BeOS(BeFS)」等における採用実績を有している他、「Windows 2000」以降において標準的に使用されている「NTFS(NT File System)」でもサポートされている等、現在ではクライアント環境においても主流として採用されている。コンピュータシステムにおける信頼性評価の指標とされる「RASIS」の「R」、Reliability(信頼性)、及び「A」、Availability (可用性)を重視した仕様となっている。

データベースサーバ等では古くから標準的に採用されている実績もあり、ディスク上における各種リソースに対して「INSERT(追加)」「UPDATE(更新)」「DELETE(削除)」等のアクションが発生した際に、ファイルシステムにおける一連の更新履歴をメタデータの一種でもある「ジャーナルファイル(ログファイル)」に継続的な変更記録として保持させる点が主要な特徴の一つとして挙げられる。そして、システム障害等に起因した不慮のクラッシュ、或いは停電を始めとする不慮の電源断等、強制再起動を伴うトラブル等に見舞われた際には、前述のジャーナルファイルを活用しつつ、ファイルシステムの不整合や、システムのダウンタイムを最小限に抑える事が可能となっている。

Mac OS Xにおいては「Mac OS X 10.2.2」より「Terminal(ターミナル、/Aplication/Utilities/Terminal.app)」を介したコマンドラインによる制御に対応した後、「Mac OS X 10.3 Panther」より「Disk Utility(ディスクユーティリティ、/Aplication/Utilities/Disk Utility.app)」を用いたGUIによる制御に対応。同時にとしてデフォルトファイルシステム(Journaled HFS+)として採用される事となる(「Mac OS X Server」においては「Mac OS X Server 10.2.2」の時点でGUIによる制御に対応)。

基本プロセスの概要は以下の通りとなっている。
  1. トランザクションによる処理の結果、或いはディレクトリエントリに追加すべくした情報等を一時的にメインメモリに退避
  2. トランザクションによって齎される、ファイルシステムに対する継続的な変更記録をジャーナルとして専用の領域に記録
  3. 「1.」の過程でメインメモリに退避されていた内容をHDD上の対応するブロックに転記(この際の書込処理は、データベース上では「コミット」、ファイルシステム上では「フラッシュ」と各々称されている)
  4. 書き込み終了後、ジャーナルを破棄(ジャーナル領域の解放)
上記のように、ジャーナリングファイルシステムでは、ディスク上における任意の処理に対して4段階のプロセスを経て完了とする事により、ファイルシステムにおける整合性の確保を実現している。そして「2.」の過程で作成されるジャーナルファイルの存在がジャーナリングの語源にもなっており、Mac OS Xの場合、ジャーナルファイル自体はディスク上において物理的に存在する1つのファイルとして生成されるものの、不可視属性として定義されるため「Finder」からその存在を確認する事はできない。

尚、ジャーナリングファイルシステムによって保護されるのはファイルシステムにおける整合性であり、強いてはファイル自体の消失を防ぐといったところにある。つまり一貫性の保証はデータレベルではなく、ファイルシステムレベルで行われるため、ロールバックを伴うような処置が発生した際には、保存した筈の編集結果が破棄されているといったケースも生じ得る(「2.」の過程で記録される筈のジャーナルが不完全な状態となってしまった場合には、「1.」の過程でメインメモリに退避されていた変更結果は破棄される事となる)。

タグ:Mac OS X apple
posted by Flipper at 01:02 | TrackBack(0) | 【J】

この記事へのトラックバック