Недавно я начал экспериментировать с поддержкой сквозных файловых систем в последних версиях KVM / QEMU / libvirt. Сделать файловые системы доступными для чтения «просто сработало», но я немного озадачен тем, как должен работать доступ для записи. После монтирования файловой системы в гостевой системе:
# mount -t 9p -o trans=virtio /fs/data /mnt
Я могу модифицировать существующий файл, если у него есть режим o+w
:
# cd /mnt/work
# ls -l foo
-rw-rw-rw-. 1 root root 17 Dec 20 11:16 foo
# cat foo
this is line one
# echo this is line two >> foo
# cat foo
this is line one
this is line two
Но независимо от прав доступа к каталогу я не могу Создайте новый файл или каталог:
# ls -ld /mnt/work
drwxrwxrwx. 2 root root 4096 Dec 20 11:16 /mnt/work
# cd /mnt/work
# touch bar
touch: setting times of `bar': No such file or directory
# mkdir bar
# mkdir: cannot create directory `bar': Operation not permitted
Документация, которую мне удалось найти (например, этот) явно не решает эту проблему. Я надеюсь, что кто-то здесь, в Serverfault, может помочь мне настроить сквозную файловую систему, которая позволит мне предоставить доступ на запись пользователю в гостевой системе к файловой системе хоста.
Мне кажется, что это проблема с разрешением на хосте:
По умолчанию процесс qemu / kvm запускается от имени непривилегированного пользователя (libvirt-qemu в Debian Wheezy). Таким образом, гостевые машины виртуальной машины могут получить доступ (запись) только к файлам, доступным (или доступным для записи) этому пользователю.
Вы можете попробовать установить право собственности на каталог для пользователя, от имени которого запускается qemu (см. User = and group = в /etc/libvirt/qemu.conf)
Может это поможет в твоем случае?
при запуске монитора qemu в оболочке следует добавить префикс «sudo». Я сделал это, чтобы решить проблему с разрешением при создании файла или папки. моя среда - ubuntu16.04 + qemu-2.12.