Вопрос или проблема
Я создал виртуальную машину Ubuntu внутри моей Ubuntu с помощью Virtual Machine Manager. Я пытаюсь примонтировать каталог хоста в гостевой ОС, но это не работает. Я использовал инструкции, предоставленные здесь: http://troglobit.com/blog/2013/07/05/file-system-pass-through-in-kvm-slash-qemu-slash-libvirt/.
Я поделился каталогом хоста как “myshare”.
Команда монтирования выполняется без сообщений:
mount -t 9p -o trans=virtio,version=9p2000.L,rw myshare /mnt/host
Вывод mount выглядит многообещающе:
myshare on /mnt/host type 9p (rw, trans=virtio,version=9p2000.L)
Тем не менее, попытка перечислить каталог дает:
cd /mnt
ls
ls: cannot access host: Permission denied
total 0
d???????? ? ? ? ? host
Ответ можно найти здесь:
https://askubuntu.com/questions/445193/kvm-virtual-machine-manager-sharing-folders-not-working
Человек был прав – это была проблема с apparmor. Теперь мне нужно разобраться, как настроить apparmor в libvirt для разрешения общего доступа к папкам, но это уже совсем другая проблема.
Ответ или решение
Для решения проблемы с невозможностью обмена папками в KVM Virtual Machine Manager вам нужно разобраться с несколькими аспектами настройки системы. Вы столкнулись с типичной проблемой, связанной с ограничениями безопасности, особенно с использованием инструмента AppArmor, который часто бывает активирован в Ubuntu по умолчанию.
Возможные причины и решения:
-
Проверка состояния монтирования:
Вы правильно использовали команду для монтирования директории с использованием файловой системы 9p и протокола virtio. Строка выводаmyshare on /mnt/host type 9p (rw, trans=virtio,version=9p2000.L)
указывает на успешное монтирование. Тем не менее, проблема заключается в ограничении прав доступа. -
Проверка конфигурации AppArmor:
Как вы упомянули, проблема может быть связана с AppArmor. Этот инструмент может блокировать доступ к определенным ресурсам по причинам безопасности. Чтобы решить эту проблему, вам нужно настроить профиль AppArmor для libvirt.-
Обновление профиля AppArmor:
Откройте профиль libvirt с использованием текстового редактора. Обычно он расположен в/etc/apparmor.d/abstractions/libvirt-qemu
. Внесите изменения, добавив путь к вашей общей папке./путь/к/вашей/папке/** rwk,
Затем перезагрузите профили AppArmor:
sudo systemctl restart apparmor
-
-
Проверка разрешений на уровне ОС:
Убедитесь, что пользователи и группы имеют соответствующие права доступа к директории на хост-машине. Это можно сделать с помощью команды:sudo chmod -R 755 /путь/к/вашей/папке
Установите или проверьте группу пользователя libvirt:
sudo usermod -aG kvm $USER
Перезапустите виртуальную машину после обновления настроек.
-
Проверка системных журналов:
Для более детальной диагностики можно изучить системные журналы. Это может помочь определить, какие именно операции блокируются AppArmor. Используйте следующую команду для просмотра логов:sudo journalctl -xe | grep "denied"
Заключение
Решение проблем с обменом папками в KVM Virtual Machine Manager требует комплексного подхода, включая настройку AppArmor, управление правами доступа и проверку системных журналов. После внесения изменений в конфигурацию и перезапуска системы обмен файлами должен начать функционировать корректно. Помните, что любые изменения конфигурации безопасности должны тщательно проверяться, чтобы избежать потенциальных уязвимостей в системе.