Дерево страниц

Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)

Подготовка хост-машины

Предполагается, что на хост-машине установлена система виртуализации QEMU/KVM и создана по крайней мере одна виртуальная машина (ВМ).

Для предоставления доступа из ВМ к каталогу на хост-машине (т.н. "проброс каталога в ВМ") выполнить на хост-машине следующие действия:

  1. Создать каталог, к которому будет предоставляться доступ (далее - разделяемый каталог). В примере ниже это каталог kvm_share, который создается в домашнем каталоге текущего пользователя:

    mkdir ~/kvm_share

  2. Настроить доступ к разделяемому каталогу для службы виртуальных машин. Подробнее про управление доступом см. Списки управления доступом к файловым объектам (ACL) в Astra Linux. В примере в качестве разделяемого используется подкаталог домашнего каталога текущего пользователя, что позволяет использовать его без привилегий суперпользователя. При ином размещении разделяемого каталога может понадобиться выполнять команды от имени суперпользователя (суперпользователя с высоким уровнем целостности при работе в Astra Linux Special Edition с включенным МРД). Настройка прав доступа:
    1. Настройка прав доступа со стороны виртуальной машины. Права доступа могут быть предоставлены служебному пользователя libvirt-qemu или служебной группе libvirt. Далее в примерах используются права для пользователя libvirt-qemu:
      1. Разрешить поиск и чтение в каталоге, в котором находится разделяемый каталог (в примере - в домашнем каталоге текущего пользователя). Поиск ("x") можно не разрешать, при этом файловые объекты будут доступны при полном указании их имени. Пример:

        setfacl -m u:libvirt-qemu:rx $HOME

      2. Разрешить чтение, запись, поиск в разделяемом каталоге:

        setfacl -m u:libvirt-qemu:rwx ~/kvm_share

      3. Со стороны хоста файловые объекты в разделяемом каталоге будут создаваться от имени пользователей хоста.Чтобы служба виртуальных машин получала к ним доступ установить наследование прав:

        setfacl -dm u:libvirt-qemu:rwx ~/kvm_share

    2. Настройка прав доступа со стороны хост-машины (для текущего пользователя):
      1. Со стороны виртуальной машины файловые объекты в разделяемом каталоге будут создаваться от имени текущего пользователя и с группой-владельцем libvirt-qemu (при использовании virtio-9p) или группой-владельцем пользователя (при использовании virtiofs). При этом пользователь будет иметь доступ к файлам по умолчанию.

  3. При работе в Astra Linux Special Edition с включенным МРД добавить в параметры загрузчика параметр parsec.ccnr_relax=1 (см. Параметры модуля ядра Parsec, задаваемые в загрузчике) и перезагрузить ОС.


Настройка виртуальной машины

Настройка виртуальной машины на хост-машине

Настроить виртуальную машину, для чего:

  1. Запустить графический менеджер виртуальных машин (virt-manager): "Пуск" - "Системные" - "Менеджер виртуальных машин".
  2. Выбрать виртуальную машину.
  3. В настройках виртуальной машины:
    1. Для использования драйвера virtiofs в разделе "Память" включить разделяемую память, отметив соответствующий чек-бокс.
    2. Нажать кнопку "Добавить оборудование".
    3. Выбрать вариант оборудования "Файловая система"
    4. Выбрать драйвер virtio-9p или virtiofs.
    5. Ввести путь к созданному каталогу (для примера - /home/user/kvm_share) ("Путь на хосте"). Если созданный каталог недоступен - создать пул с этим каталогом.
    6. Ввести название ресурса, например, hostfs. Это не название каталога монитирования, это имя ресурса. Каталог монтирования выбирается при монтировании ресурса в виртуальной машине.
    7. При необходимости указать, что монтирование выполняется в режиме "только чтение":


    8. Применить сделанные изменения. Если ВМ в это время запущена - то изменения можно сохранить, но применены они будут после выключения ВМ.

Также возможно напрямую отредактировать файл настроек виртуальной машины:

virsh edit <имя_виртуальной_машины>
Параметры настройки выглядит следующим образом:

  • Для драйвера virtio-9p:

        <filesystem type='mount' accessmode='mapped'>
          <source dir='/home/user/kvm_share'/>
          <target dir='hostsfs'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
        </filesystem>
  • Для драйвера virtiofs:

    <filesystem type="mount" accessmode="passthrough">
      <driver type="virtiofs"/>
      <binary path="/usr/lib/qemu/virtiofsd"/>
      <source dir="/home/user/kvm_share"/>
      <target dir="hostfs"/>
      <alias name="fs1"/>
      <address type="pci" domain="0x0000" bus="0x08" slot="0x00" function="0x0"/>
    </filesystem>

Настройка виртуальной машины на виртуальной машине

На виртуальной машине:

  1. Создать каталог, куда будет монтироваться каталог хост-машины:

    sudo mkdir /hostfiles

  2. Примонтировать в нее каталог хост-машины:

    sudo mount -t 9p -o trans=virtio hostfs /hostfiles/
    или:
    sudo mount -t virtiofs hostfs /hostfiles/

  3. Для автоматического монтирования добавить запись в файл /etc/fstab. При этом рекомендуется использовать опцию монтирования nofail, позволяющую игнорировать ошибки монтирования. Это позволит запускать виртуальную машину в случае отсутствия (недоступности) разделяемого ресурса. Например:

    hostfs /hostfiles 9p trans=virtio,version=9p2000.L,rw,nofail 0 0
    hostfs /hostfiles virtiofs,nofail rw 0 0

Устранение возможных ошибок

При возникновении ошибок при загрузке виртуальной машины добавить на хост-машине в файл /etc/initramfs-tools/modules следующие модули

9pnet
9pnet_virtio

После чего обновить initramfs

update-initramfs -u -k all

  • Нет меток