Автор Тема: ALT Сервер виртуализации + Virtiofs + ACL  (Прочитано 2226 раз)

Оффлайн Dron.ru

  • Начинающий
  • *
  • Сообщений: 23
Дано:

Сервер с ОС 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