Linux OverlayFS 的启动过程涉及内核模块加载、文件系统挂载以及联合挂载的实现。以下是详细分析:
overlay.ko
),通常在系统启动时由 modprobe
或 udev
自动加载,或通过 mount
命令触发加载。
bash
# 手动加载模块
sudo modprobe overlay
挂载命令通过 mount -t overlay
指定各层目录:
sudo mount -t overlay overlay \
-o lowerdir=/lower1:/lower2,upperdir=/upper,workdir=/work \
/merged
lowerdir
:只读层(支持多层,用 :
分隔,左侧优先级高)。upperdir
:可写层,用于存储修改和新增文件。workdir
:临时工作目录(需空目录),用于原子操作。/merged
:联合挂载点,呈现最终视图。lowerdir
,由多个镜像层堆叠(通过 :
连接)。upperdir
(位于 /var/lib/docker/overlay2/<id>/diff
)。mount
命令合并到容器内部视图。lowerdir
。upperdir
,允许保存用户数据。/merged/file
时,内核按顺序检查:
upperdir
→ lowerdir
(从左到右)。lowerdir
,先复制到 upperdir
再修改。upperdir
。upperdir
创建 whiteout
文件(如 .wh.<filename>
)。redirect_dir=on
:优化目录重定向性能。metacopy=on
:减少元数据复制(需内核 ≥ 4.19)。upperdir
必须位于支持扩展属性(xattr)的文件系统(如 ext4、xfs)。mount | grep overlay
确认挂载参数。dmesg
查看模块加载和挂载错误。lowerdir
层(影响查找性能)。workdir
为空且与 upperdir
同文件系统。cat /proc/filesystems | grep overlay
。lowerdir
路径正确,权限允许访问。通过理解上述流程,可以高效使用 OverlayFS 实现容器存储、系统快照等场景。