整合性がなくなる
システムを運用していると、ファイルシステムの内容に不整合が生じることがあります。
典型的な例が、ファイルシステムのデータをストレージに読み書きしている最中に、システムの電源が強制的に落ちるような場合です。
...
これら一連の処理はプロセスから見ると、一つにまとまった不可分の処理(アトミック)になっています。
...
不整合をファイルシステムが検出すると、マウント時に検出した場合は、ファイルシステムをマウントできなくなった
り、読み出し専用モードで再マウントされたり、システムがパニック
にしたりします。
気づき
ファイルシステムの読み書きがアトミック処理になっているからファイルシステム側が混乱するのか。
ジャーナリングによる不整合防止
ファイルシステム内にジャーナル領域という特殊なメタデータ領域
を用意します。
- 更新に必要なアトミックな処理の一覧を一旦
ジャーナル領域
に書き出す。この一覧をジャーナルログ
と呼ぶ。 - ジャーナル領域の内容に基づいて、実際にファイルシステムの内容を更新する。
気づき
それ以降の図を見るとジャーナル領域とは更新処理の予定表なものなのか。
それでジャーナル領域に更新予定を書き込んでいる間に電源が落ちるとそのジャーナル領域を破棄する。
更新処理最中に電源が落ちると再起動後にジャーナル領域を再び読み込み完了させる。
コピーオンライトによる不整合の防止
ファイルシステムの格納方法
ext4やXFSなどは、一旦ストレージデバイス上にファイルのデータを書き込んだら、その後ファイルを更新すると、ストレージデバイス上の同じ位置にデータを書き込み
ます。
コピーオンライトによるファイル更新
ファイルにデータを書き込んだ後は、更新するごとに別の場所にデータを書き込み
ます。
気づき
別の位置にデータを書き込むことによって電源が落ちても作成されたファイルを削除するだけいいのか。
バックアップをとっておく
ファイルシステム不整合の発生は減らせますが、完全に無くすのは困難です。なぜならファイルシステムにバグがあれば依然同じ問題が発生しますし、ハードウェアに問題がある場合も問題が起こりうるからです。
ではどうすればいいかというと、一般的には、ファイルシステムの定期的なバックアップファイル
を取っておき、ファイルシステム不整合が発生した時には、最後にバックアップをとった時点の状態に復元
することが対策となります。
出典
感想
ファイルシステムの方で更新時の問題を解決してくれるが、バックアップをとっておくことが重要だ。