Overlayfs 覆盖 archivemount

Overlayfs 覆盖 archivemount

我正在尝试使用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

Overlayfs 内核模块的文档状态:

trusted.*上层文件系统通常是可写的,如果是的话,它必须支持扩展属性的创建,并且必须提供有效d_typereaddir响应,因此 NFS 不适合。

因此,archivemount可能没有实现这些功能中的任何一个,这使得它不适合用作可写覆盖文件系统。

请注意,文档继续:

两个只读文件系统的只读覆盖可以使用任何文件系统类型。

因此,如果只读的overlayfs足以满足您的需求,那么将其设置在其之上archivemount甚至对于较低层也应该有效,只需在这种情况下将所有内容安装为只读即可。


请注意,FUSE 协议本身不存在任何限制,导致任何 FUSE 安装不适合用作 overlayfs 中的可写上层。

具体来说,FUSE 公开了查询和设置扩展属性的函数,并且还公开了d_type要填充的实现字段。

但特定的 FUSE 应用程序需要实现这些功能才能使用。

关于扩展属性,一个单独的技术限制是archivemount并非所有存档格式都支持存储扩展属性,因此即使archivemount实现对扩展属性的支持,它也可能不适用于所有支持的存档格式。

(请参阅文档--xattrsGNU tar 选项了解更多详细信息。)

相关内容