Background fsckとは
Background fsckは、Soft updatesという技術が適用された
ファイルシステムにおいて、システムが予期せず停止した場合に、
ファイルシステムをアンマウントせずに修復するための仕組みです。通常、システムが正常に停止せずに
ファイルシステムがマウントされたままの状態になると、
ファイルシステムの一貫性が損なわれ、`fsck`コマンドによる修復が必要になります。しかし、Soft updatesを用いると、システムがいつ停止しても
ファイルシステムの一貫性は基本的に保たれます。このため、再起動後に`fsck`を実行しなくても、
ファイルシステムをそのままマウントして使用できる場合があります。
この背景には、Soft updatesの仕組みがあります。Soft updatesは、
ファイルシステムのメタデータの変更を非同期的に行うことで、
ファイルシステムの一貫性を維持します。システムが予期せず停止した場合でも、メタデータの変更が途中で中断されることはありません。これにより、
ファイルシステムが壊れるリスクを大幅に減らすことができます。
Background fsckが必要となるのは、Soft updatesによって
ファイルシステムの一貫性が保たれるものの、未使用領域が使用中としてマークされてしまうという問題があるためです。Background fsckは、この無駄になった領域を解放するために実行されます。このため、`fsck`という名前ではありますが、その実態は一種の
ガベージコレクションに近い役割を担います。
Background fsckの手順
Background fsckは、まず
ファイルシステムのスナップショットを作成することから始まります。このスナップショットは、
ファイルシステムのコピーであり、元の
ファイルシステムに影響を与えることなく修復作業を行うために用いられます。スナップショットの作成には、
コピーオンライトという技術が用いられます。
コピーオンライトは、変更があった部分のみをコピーすることで、スナップショットの作成にかかる時間を短縮することができます。
スナップショットを作成する際には、
ファイルシステムの状態を変更する可能性のある
システムコールはブロックされます。このブロック処理の間、システムは一時的に応答しなくなるため、「フリーズした」と認識される場合があります。しかし、スナップショットの作成が完了するとブロックは解除されるため、早計に電源を切るなどの操作は避けるべきです。スナップショット作成後、`fsck`コマンドはスナップショットに対して実行され、
ファイルシステムの修復が行われます。
スナップショットの副産物
Background fsckの副産物として、スナップショット機能があります。このスナップショットは、`mksnap_ffs`コマンドを用いることで簡単に作成できます。UFS
ファイルシステムでは、複数のスナップショットを作成することが可能です。このため、スナップショットはUFSの簡易バックアップ機構として活用できます。実際、スナップショットを利用してバックアップを行うソフトウェアも存在します。
まとめ
Background fsckは、Soft updatesと組み合わせて使用することで、システム停止時の
ファイルシステムの破損リスクを低減し、システムの可用性を向上させるための重要な技術です。スナップショット機能は、バックアップの簡易化にも貢献します。これらの技術を理解し活用することで、
ファイルシステムの運用管理を効率化し、データ損失のリスクを低減することが可能です。
参考文献
McKusick, M. (2002). Running "fsck" in the Background." Proceedings of the BSDCon 2002. 55-64.
外部リンク
Information about Soft Updates, Snapshots, and Back-ground Fsck
*
FreeBSD UFS Snapshots Management Environment