Проброс 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) допустимо только на изолированных стендах.