ジャーナル処理
EMFILE - ジャーナリング
EMFILEジャーナリングファイルシステムの上に載ると、ファイルシステム層は、フェイルセーフになる追加コンポーネントです。ジャーナリングをサポートしていないファイルシステムが(たとえば、FAT)フェイルセーフではありません。ジャーナリングは、ファイルシステムがメインファイルシステムにコミットする前にジャーナルにすべての変更を記録することを意味します。
ドライバのフェイルセーフ
データは、ファイルシステムのレイヤ(FATまたはEFS)やドライバのレイヤで予期しないリセットした場合に失われることがあります。システム全体は、両方の層がフェイルセーフである場合にのみフェイルセーフです。アドオンジャーナリングは、ファイルシステム層フェールセーフになります。ドライバ層は同様に、フェールセーフの場合は、システム全体では唯一のフェールセーフです。ドライバのフェイルセーフのために特定のドライバを参照してください。
主な特長
- 非フェイルセーフファイルシステムは、フェールセーフになります。
- 標準のファイルシステムの実装(例:FAT)に完全な互換性。
- すべてのストレージソリューションを使用することができます。いいえ再フォーマットは必要ありません。
- 記憶媒体に複数の書き込みアクセスは、ユーザーのアプリケーションに組み合わせることができます。
背景
EMFILEは、一般的にはFATのような非フェールセーフなファイルシステムで使用されています。データの損失は、ドライバ層またはファイルシステムの層のいずれかで発生する可能性があります。典型的なデータ損失のための唯一の場所はファイルシステムの層になるようにドライバ層は、一般的にフェイルセーフです。ファイルシステムは電源障害またはシステムクラッシュが発生した場合など、中断書き込みアクセスによって破損することができます。これは、任意のベンダのすべての実装のためのFATと真の設計によるものです。アドオンEMFILEジャーナリングは、ファイルシステム層にジャーナリングが追加されます。
この追加の層の目標は常に一貫性のある状態であるファイルシステムを保証することです。ファイルシステムのレイヤ上での操作はほとんどatomarではありません。たとえば、新しいファイルにデータを書き込むためにFS_FWriteの単一の呼び出しは()以下の3つのストレージレイヤ操作の実行を引き起こします。
- クラスタを割り当てるとFATを更新
- ユーザデータを書き込む
- ディレクトリエントリを更新する
このプロセスで予期しない割り込みが(停電など)のファイルシステムが破損する恐れがあります。このような破損を防ぐために、ジャーナリングレイヤは、ファイルシステムの常に一貫した状態を達成するために、すべての書き込みアクセスをキャッシュします。ファイルシステムに対するすべての変更はジャーナルに格納されています。ファイルシステムのレイヤの操作が中断されることなく終了した場合にのみ、ジャーナルに格納されているデータがファイルシステムにコピーされます。
この手順は、ファイルシステムの常に一貫した状態を保証する、コピー処理の中断がない、データの損失につながるため。中断されたコピーのプロセスは、ターゲットの再起動後に再起動されます。
ファイルシステムのレイヤのエラーのシナリオ
エラーの瞬間 | の状態 | データ | |
---|---|---|---|
1。 | 空のジャーナル。 | 一貫した | --- |
2。 | ジャーナルへの書き込み中。 | 一貫した | 失わ |
3。 | ジャーナルの最終調整しながら。 | 一貫した | 失わ |
4。 | ファイナライズ後。 | 一貫した | 得 |
5。 | ファイルシステムにジャーナルからコピーを行う。 | 一貫した | 得 |
6。 | ジャーナルの無効化の前に、コピー処理後に。 | 一貫した | 得 |
7。 | ジャーナルの無効化中。 | 一貫した | 得 |
EMFILEジャーナリングを使用する方法
ジャーナリングを使用すると、ユーザーの観点から非常に簡単です。
- EMFILE構成でジャーナリングを有効にします。
- ボリュームをフォーマットした後FS_JOURNAL_Create()を呼び出します。
それはそれです。他は全てEMFILEジャーナリングの拡張子によって行われます。