Shared Folder (KVM Host / Guest)

Теги

В этой заметки мы рассмотрим, как настроить общую папку (Shared Folder) между KVM-хостом и гостевой виртуальной машиной с помощью Virt-manager в Linux.

Если у вас уже установлена полная группа пакетов виртуализации KVM, вам не нужно устанавливать Virt-manager отдельно. Virt-manager является частью группы пакетов виртуализации KVM. Создайте новую виртуальную машину из интерфейса Virt-manager. Пока не запускайте виртуальную машину. Нам нужно создать общую папку (Shared Folder) на нашем KVM-хосте.

Создание общих папок в хосте KVM. Создайте новую общую папку в системе KVM-хоста, которую вы хотите предоставить гостевым машинам. Для целей данного руководства создана общая папка KVM_Share в каталоге $HOME.

$ mkdir ~/KVM_Share

Затем установите необходимые разрешения для общей папки. Я хотел редактировать и изменять содержимое этой общей папки с гостевых виртуальных машин, поэтому я предоставил полные разрешения для общей папки.

$ chmod 777 ~/KVM_Share

Затем установите SELinux в permissive режим. Я пока не смог понять, как установить правильную политику SELinux для общих папок KVM, поэтому я временно установил режим SELinux с targeted на permissive с помощью следующей команды:

$ sudo setenforce 0

Это изменение действительно только для текущего сеанса. Чтобы сделать изменения постоянными, отредактируйте файл /etc/selinux/config:

$ sudo nano /etc/selinux/config

SELinux mode - permissive:

[...]
SELINUX=permissive
[...]

Сохраните и закройте файл. Перезагрузите систему, чтобы изменения вступили в силу. Теперь пришло время настроить общую папку в Virt-manager. Если вы не установите SELinux в permissive режим, то при запуске виртуальной машины вы столкнетесь с ошибкой.

Откройте Virt-manager и убедитесь, что гостевая система выключена. Выберите гостевую машину и нажмите кнопку Open в строке меню, чтобы отобразить консоль виртуальной машины и подробная информацию о ней. В следующем окне нажмите кнопку "Показать сведения о виртуальном оборудовании" на панели меню и нажмите кнопку "Добавить оборудование" на левой панели.

Нажмите "Filesystem" на левой панели и введите расположение общей папки в Source path и введите mount tag в Target path. Здесь я использую общий каталог "~/KVM_Share", и мой mount tag - /hostshare. Вы можете указать имя mount_tag по своему усмотрению. Обратите внимание, что mount_tag - это не путь. mount_tag - это просто имя, используемое для идентификации общего ресурса хоста. Нажмите Готово и Применить, чтобы обновить изменения.

И последнее, что необходимо сделать, это выбрать подходящий режим доступа к общей папке. Существует три возможных значения. Это passthrough, mapped и squash.

  • passthrough - указывает, что доступ к источнику (т.е. общей папке) осуществляется с параметрами разрешения пользователя, установленными внутри гостевой виртуальной машины. Т.е. файлы хранятся с использованием тех же учетных данных, что и при их создании на гостевой машине. Это режим доступа по умолчанию, если он не указан.
  • mapped - указывает, что доступ к источнику осуществляется с настройками разрешений гипервизора. Если вы хотите иметь доступ на чтение и запись с гостевой машины, вы должны выбрать этот режим.
  • squash - аналогично 'passthrough', за исключением того, что игнорируется отказ привилегированных операций, таких как chown. Это делает режим, подобный passthrough, пригодным для людей, которые запускают гипервизор не в качестве root.

После выбора предпочтительного режима доступа нажмите кнопку Применить. Теперь мы настроили общую папку для хоста KVM и гостевой системы из Virt-manager.

Теперь включите гостевую виртуальную машину и создайте точку монтирования в гостевой машине для монтирования общей папки хост-системы KVM:

$ mkdir ~/hostfiles

Наконец, смонтируйте общую папку на гостевой машине с помощью команды:

$ sudo mount -t 9p -o trans=virtio /hostshare hostfiles/

Общая папка ~/KVM_Share монтируется в каталог hostfiles вашей виртуальной машины. С этого момента вы можете получить доступ к содержимому общей папки с гостевой виртуальной машины. Вы также можете редактировать и удалять содержимое общей папки как на хостовой, так и на гостевой системах KVM.

Чтобы автоматически монтировать общую папку каждый раз при загрузке, добавьте следующую строку в файл /etc/fstab в гостевой системе:

/hostshare /hostfiles 9p trans=virtio,version=9p2000.L,rw 0 0

При возникновении проблем и ошибок, обратитесь к документации KVM.


Сам по себе KVM не выполняет эмуляции. Вместо этого программа, работающая в пространстве пользователя, использует интерфейс /dev/kvm для настройки адресного пространства гостя виртуальной машины, через него же эмулирует устройства ввода-вывода и видеоадаптер. 

 

Последние материалы