Проброс GPU, настройка кластера, миграция из VMware, тонкая настройка политик SE в Astra Linux

Продвинутая настройка QEMU/KVM в Astra Linux: проброс GPU, кластер, миграция из VMware, политики безопасности SE

2026.04.02                  


Проброс GPU, настройка кластера, миграция из VMware, тонкая настройка политик SE в Astra LinuxПроброс GPU, настройка кластера, миграция из VMware, тонкая настройка политик SE в Astra Linux Материал структурирован по разделам, содержит команды для Astra Linux и учитывает особенности редакций CE и SE.

1. Проброс GPU (VFIO PCIe Passthrough)

Требования:

  • процессор с поддержкой IOMMU (VT-d/AMD-Vi), отдельная видеокарта для хоста или headless-режим, ядро 5.10+.

Шаги:

1. Включить IOMMU в GRUB:

sudo nano /etc/default/grub
# Добавить в GRUB_CMDLINE_LINUX_DEFAULT:
# Intel: intel_iommu=on iommu=pt
# AMD:   amd_iommu=on iommu=pt
sudo update-grub
sudo reboot

2. Проверить активацию:

  • dmesg | grep -i iommu | head -20

3. Найти PCI-адреса GPU и аудио-контроллера:

lspci -nn | grep -iE 'vga|audio'

Пример вывода:

  • 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104 [GeForce GTX 1070] [10de:1b81]

Нужны ID:

  • 10de:1b81 и 10de:10f0 (аудио).

4. Привязка к vfio-pci:

echo "options vfio-pci ids=10de:1b81,10de:10f0" | sudo tee /etc/modprobe.d/vfio.conf
echo "vfio-pci" | sudo tee -a /etc/initramfs-tools/modules
sudo update-initramfs -u
sudo reboot

5. Проверка:

  • lspci -vvv -s 01:00.0 | grep -i driver (должно быть vfio-pci)

6. Подключение к ВМ:

virsh edit <имя_вм>

Добавить в секцию <devices>:

<hostdev mode='subsystem' type='pci' managed='yes'>
  <source>
    <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
  </source>
</hostdev>

Примечание для SE:

  • доступ к /dev/vfio/* регулируется мандатными метками. При блокировке создать правило PDP для процессов qemu-system-x86_64 с разрешением на устройства класса vfio.

2. Настройка кластера и Live Migration

Libvirt не предоставляет встроенного кластерного менеджера. Базовый кластер строится на общем хранилище и возможности живой миграции.

Требования:

  • два и более хоста с идентичными CPU-флагами, общее хранилище (NFS/iSCSI/CEPH), синхронизированное время, сетевая связность.

Шаги:

1. Настройка общего хранилища (NFS пример):

# На сервере хранения:
sudo apt install nfs-kernel-server
echo "/var/lib/libvirt/images *(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports
sudo systemctl restart nfs-kernel-server

# На вычислительных узлах:
sudo apt install nfs-common
sudo mkdir -p /var/lib/libvirt/images
sudo mount -t nfs <IP_сервера>:/var/lib/libvirt/images /var/lib/libvirt/images
echo "<IP_сервера>:/var/lib/libvirt/images /var/lib/libvirt/images nfs defaults 0 0" | sudo tee -a /etc/fstab

2. Разрешить миграцию по TCP (для тестов; в продакшене использовать TLS):

sudo sed -i 's/^#listen_tls = 0/listen_tls = 0/' /etc/libvirt/libvirtd.conf
sudo sed -i 's/^#listen_tcp = 1/listen_tcp = 1/' /etc/libvirt/libvirtd.conf
sudo sed -i 's/^#auth_tcp = "sasl"/auth_tcp = "none"/' /etc/libvirt/libvirtd.conf
sudo systemctl restart libvirtd

3. Открыть порты на узлах:

  • 16509/tcp (libvirtd), 49152-49215/tcp (миграция).

4. Выполнить миграцию:

virsh migrate --live --verbose --persistent --undefinesource \
  <имя_вм> qemu+tcp://<IP_целевого_узла>/system

Примечание:

  • для автоматического HA требуется Pacemaker/Corosync с ресурсным агентом ocf:heartbeat:VirtualDomain. В Astra SE необходимо разрешить межузловое взаимодействие на уровне политик PDP (категория network, уровень не ниже medium).

3. Миграция виртуальных машин из VMware

Требования:

  • доступ к VMDK или OVF/OVA, свободное место, qemu-img.

Шаги:

1. Конвертация диска:

sudo apt install qemu-utils
qemu-img convert -f vmdk -O qcow2 source.vmdk target.qcow2

2. Создание новой ВМ с использованием существующего диска:

virt-install --name vm-migrated --memory 4096 --vcpus 2 \
  --os-variant <тип_гостевой_ОС> \
  --disk path=/var/lib/libvirt/images/target.qcow2,format=qcow2 \
  --network network=default --import --noautoconsole

3. Адаптация гостевой ОС:

  • Удалить VMware Tools: apt remove open-vm-tools-desktop (Linux) или деинсталляция в Windows
  • Установить агент QEMU: apt install qemu-guest-agent && systemctl enable qemu-guest-agent
  • Сбросить сетевые настройки (MAC-адрес изменится, правило udev/netplan может потребовать корректировки)
  • При смене прошивки (BIOS -> UEFI или обратно) добавить соответствующий <os> в XML ВМ

4. Проверка запуска:

  • virsh start vm-migrated

Примечание:

  • для автоматической конвертации с учётом драйверов доступен virt-v2v (пакет virt-v2v в репозиториях Astra). В SE диски должны иметь корректные метки конфиденциальности (chcon -t svirt_image_t или через pdp), иначе libvirt откажет в доступе.

4. Тонкая настройка политик Astra Linux SE

В SE действует мандатный контроль доступа (Parsec/PDP), влияющий на запуск QEMU, доступ к устройствам, сеть и диски.

Основные шаги интеграции:

1. Проверка текущего режима:

getmac
pdp-info

2. Назначение уровней процессам виртуализации:

# Для libvirtd и qemu рекомендуется уровень low или medium в зависимости от политики
sudo fly-admin-mac --set-level low --user libvirt-qemu
sudo fly-admin-mac --set-level low --service libvirtd

3. Разрешение доступа к устройствам:

  • /dev/kvm, /dev/vhost-net, /dev/vfio/* должны быть разрешены в профиле PDP для домена system
  • При использовании virt-manager пользователь должен находиться в группе libvirt и иметь соответствующую категорию целостности

4. Маркировка ресурсов:

# Директории с образами и конфигурациями
sudo chcon -R -t svirt_image_t /var/lib/libvirt/images
sudo chcon -R -t svirt_image_t /etc/libvirt/qemu

5. Аудит отказов:

sudo journalctl -u parsecd -f | grep -i denied
sudo ausearch -m avc -ts recent

6. Создание пользовательского профиля PDP (для продвинутых):

  • Экспорт политики: pdp-export -o policy.xml
  • Добавление правил для qemu-system-x86_64 (разрешение CAP_SYS_ADMIN, CAP_NET_ADMIN, доступ к bridge/tap)
  • Импорт: pdp-import -i policy.xml
  • Перезагрузка политик: sudo systemctl restart parsecd

Важно:

  • в сертифицированных контурах SE изменения политик должны проводиться в соответствии с Руководством администратора ИБ и утверждаться ответственным за безопасность. Временное отключение MAC (fly-admin-mac-level --disable) допустимо только на изолированных стендах.