OverlayFSにおけるWhiteoutファイルの生成タイミングと仕組み

データベース

OverlayFSはLinuxカーネルで利用される、複数のファイルシステムを重ね合わせる仕組みです。上位レイヤ(上書き可能なWritable Layer)と下位レイヤ(Read-Only Layer)を組み合わせることで、柔軟なファイル管理を実現します。このとき、削除操作がどのように扱われるかがWhiteoutファイルの生成と関係します。

Whiteoutファイルとは何か

Whiteoutファイルは、OverlayFS上で下位レイヤに存在するファイルやディレクトリを上位レイヤから削除したことを示す特殊なマーカーです。下位レイヤには変更を加えられないため、上位レイヤにWhiteoutを作成して「存在しない」とマークします。

Whiteoutファイルが作成される操作

Whiteoutは主に上位レイヤで削除操作を行ったときに生成されます。例えば、read-onlyレイヤに存在するファイルをrmコマンドで削除すると、上位レイヤに.whiteout形式のファイルが作られ、下位レイヤの同名ファイルは隠されます。

同様に、ディレクトリ削除時にはOpaqueディレクトリとしてマークされ、下位レイヤのディレクトリが上書きされないようにします。

具体例

例として、/lower/foo.txtが下位レイヤに存在するとします。/upperレイヤでrm /upper/foo.txtを実行すると、実際にはupperにfoo.txtは生成されず、代わりに.xattrとしてWhiteoutマーカーが作られます。これにより、OverlayFSのマージビューからはfoo.txtが削除されたように見えます。

この仕組みによって、read-onlyな下位レイヤを変更せずに、上位レイヤで柔軟なファイル削除や上書きが可能になります。

注意点

Whiteoutファイルは直接操作しないことが推奨されます。手動で削除や編集を行うと、OverlayFSの整合性が崩れる可能性があります。削除操作は必ずOverlayFSマウント上で行う必要があります。

まとめ

OverlayFSでWhiteoutファイルが作成されるのは、下位レイヤのファイルやディレクトリを上位レイヤから削除したときです。Whiteoutによって、下位レイヤを変更せずに削除を表現できるため、OverlayFSのマージビュー上では安全にファイル操作が可能になります。

コメント

タイトルとURLをコピーしました