Я могу выполнить команду оболочки:
unionfs-fuse /changedata=RW:/immutedata=RO -o cow /data
Это монтирует файловую систему именно так, как мне нужно. Теперь мне нужно включить ее в автомонтирование, чтобы она перемонтировалась по требованию.
Что я пробовал в /etc/auto.misc:
/data -fstype=fuse,cow /changedata=RW:/immutedata=RO
Что говорит automount --debug -f /etc/auto.master, когда я выполняю ls /data:
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
Я знаю, что уже слишком поздно отвечать, но добавление следующего в /etc/fstab в Ubuntu работает:
/dir/A=RW:/dir/B=RO /dir/my-union fuse.unionfs-fuse allow_other,cow,use_ino 0 0
решение2
автоматическое монтирование unionfs с помощью autofs
TLDR: создайте следующую запись /etc/auto.misc
и включите ее в свой etc/auto.master
(как описано ниже).
data -fstype=fuse,cow,allow_other :unionfs\#/changedata=RW\:/immutedata=RO
Бонус: Создание автомонтирования unionfs поверх автомонтирования nfs (для иллюстрации того, как правильно настроить autofs)
При использовании NFSv4 включите IMAPD в/etc/default/nfs-common
NEED_IDMAPD=yes
Если вы хотите, чтобы autofs всегда создавал каталоги для ваших монтирований, включите browse_mode в/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