我可以运行 shell 命令:
unionfs-fuse /changedata=RW:/immutedata=RO -o cow /data
这样就可以按照我想要的方式挂载文件系统。现在我需要将其合并到自动挂载程序中,以便根据需要重新挂载它。
我在 /etc/auto.misc 中尝试过:
/data -fstype=fuse,cow /changedata=RW:/immutedata=RO
当我执行 ls /data 时 automount --debug -f /etc/auto.master 显示的内容:
handle_packet: type = 5
handle_packet_missing_direct: token 19, name /data, request pid 6063
attempting to mount entry /data
lookup_mount: lookup(file): looking up /data
lookup_mount: lookup(file): /data -> -fstype=fuse,cow /changedata=RW:/immutedata=RO
parse_mount: parse(sun): expanded entry: -fstype=fuse,cow /changedata=RW:/immutedata=RO
parse_mount: parse(sun): gathered options: fstype=fuse,cow
parse_mount: parse(sun): dequote("/changedata=RW:/immutedata=RO") -> /changedata=RW:/immutedata=RO
parse_mapent: parse(sun): gathered options: fstype=fuse,cow
parse(sun): invalid location
dev_ioctl_send_fail: token = 19
failed to mount /data
Google 搜索结果不多。关于如何整合此文件系统的手册页相当空白。
也许我应该把它放在 /etc/fstab 中并要求用户重新挂载?
答案1
我知道现在回答已经太晚了,但是在 Ubuntu 中的 /etc/fstab 中添加以下内容是可行的,
/dir/A=RW:/dir/B=RO /dir/my-union fuse.unionfs-fuse allow_other,cow,use_ino 0 0
答案2
使用 autofs 自动挂载 unionfs
结论:创建以下条目/etc/auto.misc
并将其包含在您的etc/auto.master
(如下所述)中。
data -fstype=fuse,cow,allow_other :unionfs\#/changedata=RW\:/immutedata=RO
奖金:在 nfs 自动挂载之上创建 unionfs 自动挂载(以说明如何正确配置 autofs)
使用 NFSv4 时,启用 IMAPD/etc/default/nfs-common
NEED_IDMAPD=yes
如果你希望 autofs 始终为你的挂载创建目录,请在/etc/autofs.conf
browse_mode = yes
现在到了核心部分:在您的/etc/auto.master
添加以下行
# automount all nfs volumes under /nfs and misc filesystems under /mnt
/nfs /etc/auto.nfs
/mnt /etc/auto.misc
autofs 将挂载 在/etc/auto.nfs
下指定的所有文件系统/nfs/<mount>
以及 在/etc/auto.misc
下指定的所有文件系统/mnt/<mount>
。
在我的系统中/etc/auto.nfs
,有以下(示例)条目:
# FileServer: nfs data configuration
data01 -fstype=nfs4,ro,soft,intr,rsize=8192,wsize=8192,nosuid,tcp,allow_other 192.168.3.100:/mnt/data01
data02 -fstype=nfs4,ro,soft,intr,rsize=8192,wsize=8192,nosuid,tcp,allow_other 192.168.3.100:/mnt/data02
data03 -fstype=nfs4,ro,soft,intr,rsize=8192,wsize=8192,nosuid,tcp,allow_other 192.168.3.100:/mnt/data03
data04 -fstype=nfs4,ro,soft,intr,rsize=8192,wsize=8192,nosuid,tcp,allow_other 192.168.3.100:/mnt/data04
data05 -fstype=nfs4,ro,soft,intr,rsize=8192,wsize=8192,nosuid,tcp,allow_other 192.168.3.100:/mnt/data05
在我的/etc/auto.misc
unionfs 中我添加了以下条目
# unionfs mount of all /nfs/data* mounts into /mnt/data
data -fstype=fuse,allow_other,use_ino,ro,noatime :unionfs\#/nfs/data01=RO\:/nfs/data02=RO\:/nfs/data03=RO\:/nfs/data04=RO\:/nfs/data05=RO
确保所有文件都有权限644
(chown 644 /etc/auto.{nfs,misc}
如有必要,请调整)
然后您可以启用 autofs 并重新启动服务。
# reload autofs to enable all shares
systemctl enable autofs
systemctl restart autofs
你现在应该可以ls /mnt/data