我正在尝试使用overlayfs
安装的文件系统应用覆盖archivemount
:
mkdir -p {upper,work,mount}
tar zcf somefile upper/ work/ mount/
mkdir tmp
archivemount -o allow_root -o fsname=ext4 somefile tmp
sudo mount -t overlay -o lowerdir=/,upperdir=tmp/upper,workdir=tmp/work overlayfs tmp/mount
但是,安装失败并显示:
mount: /tmp/test8/tmp/mount: wrong fs type, bad option, bad superblock on overlayfs, missing codepage or helper program, or other error.
看看 dmesg,我看到:
overlayfs: filesystem on 'tmp/upper' not supported as upperdir
为什么不支持 archivemount?有办法解决这个问题吗?
答案1
trusted.*
上层文件系统通常是可写的,如果是的话,它必须支持扩展属性的创建,并且必须提供有效d_type
的readdir
响应,因此 NFS 不适合。
因此,archivemount
可能没有实现这些功能中的任何一个,这使得它不适合用作可写覆盖文件系统。
请注意,文档继续:
两个只读文件系统的只读覆盖可以使用任何文件系统类型。
因此,如果只读的overlayfs足以满足您的需求,那么将其设置在其之上archivemount
甚至对于较低层也应该有效,只需在这种情况下将所有内容安装为只读即可。
请注意,FUSE 协议本身不存在任何限制,导致任何 FUSE 安装不适合用作 overlayfs 中的可写上层。
具体来说,FUSE 公开了查询和设置扩展属性的函数,并且还公开了d_type
要填充的实现字段。
但特定的 FUSE 应用程序需要实现这些功能才能使用。
关于扩展属性,一个单独的技术限制是archivemount
并非所有存档格式都支持存储扩展属性,因此即使archivemount
实现对扩展属性的支持,它也可能不适用于所有支持的存档格式。
(请参阅文档--xattrs
GNU tar 选项了解更多详细信息。)