OverlayFS合并目录中lowerdirs内挂载目录不可用问题咨询
原因与解决方案
核心原因
OverlayFS在处理lowerdir指定的目录时,不会自动穿透该目录下的子挂载点。
从内核VFS(虚拟文件系统)层面看,two/usr是一个独立的挂载点,而非two目录的原生内容。OverlayFS只会读取two目录本身的原始inode数据(也就是你创建的空usr目录),不会访问挂载在two/usr上的squashfs内容。
这就是为什么你看不到two.sqfs的内容:one目录下的usr有实际内容,而two的usr被OverlayFS当作空目录处理,合并后自然只显示one的usr;交换顺序也没用,因为无论two在前还是在后,它的usr挂载点都不会被穿透,无法提供有效内容。
解决方案
要让two.sqfs的内容参与合并,你需要直接将挂载点two/usr加入lowerdir列表,而非它的父目录two:
# 先卸载之前的OverlayFS挂载 sudo umount three # 重新挂载,合并one和two/usr的内容 sudo mount -t overlay -o lowerdir=one:two/usr overlay three/
执行后,three/usr会同时包含one/usr的firmware、lib,以及two/usr的twosomething、twotest,符合预期。
注意:OverlayFS本身不支持自动遍历并穿透目录下的所有子挂载点,若有多个嵌套挂载需要合并,必须手动将每个挂载点路径加入lowerdir列表。
内容的提问来源于stack exchange,提问作者phil
相关产品推荐
相关产品推荐

