Download PDF
Download page Предоставление доступа к PCI-устройствам в ПК СВ "Брест".
Предоставление доступа к PCI-устройствам в ПК СВ "Брест"
В данной статье показано предоставление доступа к PCI-устройству на примере аудиоконтроллера.
Драйвер VFIO
(виртуальный ввод-вывод функций) представляет собой новую среду драйверов пользовательского уровня для ОС семейства Linux. Этот драйвер заменяет обычное назначение устройств KVM PCI passthrough
. VFIO
предоставляет прямой доступ устройства к пользовательскому пространству в защищенной среде безопасной памяти (IOMMU
). IOMMU
сопоставляет видимый устройству виртуальный адрес (виртуальный адрес ввода-вывода или IOVA
) с адресом физической памяти.
Пример предоставления доступа к PCI-устройству
Для проброса устройства целиком необходимо:
- Посмотреть адрес устройства:
sudo lspci -nn | egrep -w 'Audio'
Пример вывода:
00:1f.3 Audio device [0403]: Intel Corporation Cannon Point-LP High Definition Audio Controller [8086:9dc8] (rev 30)
где:
vendor = '8086'
— код производителя устройства;device = '9dc8'
— код устройства;class = '0403'
— класс устройства.
- На сервере виртуализации (на котором планируется предоставление доступа к этому контроллеру процессам ВМ) занести данные об устройстве в
vfio-pci id
одним из двух способов:добавить данные устройства в
/etc/default/grub
:Пример ввода данных об устройстве:quiet splash intel_iommu=on vfio-pci.ids=8086:9dc8
GRUB_CMDLINE_LINUX_DEFAULT="parsec.mac=0 quiet splash intel_iommu=on vfio-pci.ids=8086:9dc8 net.ifnames=0"
CODEдобавить данные устройства в конфигурационный файл
VFIO /etc/modprobe.d/vfio.conf
:options vfio-pci ids=8086:9dc8
Активировать автозагрузку модулей
VFIO
в/etc/modules
:vfio vfio_iommu_type1 vfio_pci vfio_virqfd
Обновить все модули
initramfs
:где:sudo update-initramfs -u -k all
- "
-u
" — обновить существующийinitramfs
; - "
-k all
" — обновить все версии ядра.
- "
Обновить Grub:
sudo update-grub
- Перезагрузить сервер виртуализации. Во время перезагрузки перейти в BIOS и включить
VT-d (IOMMU)
иSR-IOV:
- перейти во вкладку Advanced — PCI Subsystem support;
- для параметра SR-IOV Support выбрать Enabled:
- перейти во вкладку Socket Configuration — II0 Configuration;
- для параметра Intel@ VT for Directed I/0 выбрать Enable:
- применить изменения, нажав комбинацию клавиш <F10+Enter>.
После перезагрузки проверить статус
IOMMU
:Вывод команды должен быть:sudo dmesg | grep -e DMAR -e IOMMU
IOMMU enabled
CODEПроверить чем перехвачено устройство:
Вывод команды должен быть:sudo lspci -nnk
Kernel driver in use: vfio-pci
CODEДоступные PCI-устройства для узла можно посмотреть в веб-интерфейсе ПК СВ "Брест". Для этого необходимо:
- В левом меню веб-интерфейса выбрать Инфраструктура — Узлы.
- Из открывшегося списка доступных узлов выбрать интересующий:
На открывшейся странице узла во вкладке PCI отобразится список PCI-устройств.
- В веб-интерфейсе ПК СВ в левом меню выбрать Шаблоны — ВМ.
- Из списка шаблонов ВМ выбрать тот, которому необходимо предоставить доступ к PCI-устройству и нажать на кнопку Изменить шаблон.
- На странице Изменить шаблон ВМ перейти во вкладку Ввод/Вывод.
- В области PCI-устройства нажать кнопку + и выбрать необходимое устройство из выпадающего списка Имя устройства:
- На странице Изменить шаблон ВМ нажать кнопку Обновить.