Дано:
Сервер с ОС alt-server-v-10.1-x86_64 (ядро 5.10.194-std-def-alt1)
На сервере две VM:
VM1: ОС alt-server-10.1-x86_64 (ядро 5.10.197-std-def-alt1)
VM2: ОС alt-kworkstation-10.2-x86_64 (ядро 6.1.54-un-def-alt1)
Все три ОС обновлены и актуальны.
К серверу виртуализации подмонтированы два одинаковых диска с ext4 и параметром acl. Права acl на сервере виртуализации работают без ошибок.
#cat /etc/fstab | grep work
UUID=7033abb5-684a-4e17-8e1d-a98847608f12 /mnt/work1 ext4 nosuid,nodev,noexec,usrquota,grpquota,acl 1 0
UUID=d38acd9c-2522-4168-93c2-ac1ab9769a79 /mnt/work2 ext4 nosuid,nodev,noexec,usrquota,grpquota,acl 1 0
Сервер виртуализации настроен на проброс этих дисков:
Настройки VM1:
<filesystem type='mount' accessmode='passthrough'>
<driver type='virtiofs'/>
<binary path='/usr/libexec/my-virtiofsd'/>
<source dir='/mnt/work1/work'/>
<target dir='work'/>
<alias name='fs0'/>
<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</filesystem>
Настройки VM2:
<filesystem type='mount' accessmode='passthrough'>
<driver type='virtiofs'/>
<binary path='/usr/libexec/my-virtiofsd'/>
<source dir='/mnt/work2/work'/>
<target dir='work'/>
<alias name='fs0'/>
<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</filesystem>
Скрипт /usr/libexec/my-virtiofsd перехватывает запросы к virtiofsd добавляя в них флаги поддержки ACL
cat /usr/libexec/my-virtiofsd
#!/bin/sh
exec /usr/libexec/virtiofsd --cache=always --xattr --posix-acl $@
На обеих VM virtiofs смонтировано одинаково (без флага acl, т.к. virtio не хочет видеть этот флаг в fstab):
#cat /etc/fstab | grep virtiofs
work /mnt/work virtiofs rw,noatime,nodev,nosuid,_netdev 0 2
ПРОБЛЕМА:
На VM2 ACL работает на всех дисках без ошибок.
На VM1 ACL работает на системном диске, но virtiofs не может подключить проброшенный диск с флагами "--xattr --posix-acl" (без этих флагов диск пробрасывается без ошибок).
В логе на сервере виртуализации при попытке подключения диска полявляются строки:
cat /var/log/libvirt/qemu/vm1-fs0-virtiofsd.log
[2023-10-19T08:18:57Z ERROR virtiofsd::passthrough] Cannot enable posix ACLs, client does not support it
Из лога следует, что virtiofsd не верит, что VM1 (ОС alt-server-10.1-x86_64) поддерживает ACL, хотя по факту обе VM настраивались одинаково и обе поддерживают ACL.
Есть идеи в чём проблема?
В дополнение привожу параметры загрузки ядра VM.
VM1
# cat /boot/config-5.10.197-std-def-alt1 | grep ACL
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_F2FS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_JFFS2_FS_POSIX_ACL=y
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CEPH_FS_POSIX_ACL=y
CONFIG_9P_FS_POSIX_ACL=y
# cat /boot/config-5.10.197-std-def-alt1 | grep XATTR
CONFIG_EXT2_FS_XATTR=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_F2FS_FS_XATTR=y
CONFIG_TMPFS_XATTR=y
CONFIG_JFFS2_FS_XATTR=y
CONFIG_UBIFS_FS_XATTR=y
CONFIG_SQUASHFS_XATTR=y
CONFIG_EROFS_FS_XATTR=y
CONFIG_CIFS_XATTR=y
CONFIG_EVM_EXTRA_SMACK_XATTRS=y
# CONFIG_EVM_ADD_XATTRS is not set
VM2
cat /boot/config-6.1.54-un-def-alt1 | grep ACL
CONFIG_XILINX_EMACLITE=m
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_F2FS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_NTFS3_FS_POSIX_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_JFFS2_FS_POSIX_ACL=y
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CEPH_FS_POSIX_ACL=y
CONFIG_9P_FS_POSIX_ACL=y
cat /boot/config-6.1.54-un-def-alt1 | grep XATTR
CONFIG_EXT2_FS_XATTR=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_F2FS_FS_XATTR=y
CONFIG_TMPFS_XATTR=y
CONFIG_JFFS2_FS_XATTR=y
CONFIG_UBIFS_FS_XATTR=y
CONFIG_SQUASHFS_XATTR=y
CONFIG_EROFS_FS_XATTR=y
CONFIG_CIFS_XATTR=y
CONFIG_EVM_EXTRA_SMACK_XATTRS=y
# CONFIG_EVM_ADD_XATTRS is not set