Как настроить проброс PCI в Proxmox для прямого доступа к оборудованию?

Проброс PCI позволяет напрямую подключать к виртуальным машинам Proxmox физические устройства, например GPU и сетевые адаптеры. В этом пошаговом руководстве описана настройка, которая поможет повысить производительность и надежность ВМ.

download-icon
Скачайте Бесплатно
Для ВМ, ОС, БД, файлов, NAS и т.д.
mavis-yang

Обновлено Mavis Yang 2026/08/27

Оглавление
  • Что такое проброс PCI в Proxmox?

  • Зачем нужен проброс PCI-устройств?

  • Шаг 1. Проверьте требования к оборудованию и совместимость

  • Шаг 2. Проверьте поддержку оборудования до настройки

  • Шаг 3. Включите IOMMU в BIOS/UEFI

  • Шаг 4. Настройте Proxmox VE для проброса PCI

  • Шаг 5. Подготовьте устройства к передаче

  • Шаг 6. Назначьте PCI-устройство ВМ через веб-интерфейс

  • Шаг 7. Проверьте устройство в гостевой ОС

  • Расширенные рекомендации и устранение неполадок

  • Решение корпоративного уровня для резервного копирования ВМ Proxmox

  • Часто задаваемые вопросы о пробросе PCI в Proxmox

  • Заключение

Что такое проброс PCI в Proxmox?

Проброс PCI-устройств позволяет виртуальной машине управлять физическим устройством PCIe так, как если бы оно было установлено непосредственно на ее материнской плате. Когда устройство передается ВМ с помощью проброса PCI в Proxmox, оно становится недоступным хостовой системе до тех пор, пока ВМ не освободит его. Таким образом обеспечивается аппаратная изоляция.

Это одна из самых мощных функций Proxmox VE. Проброс PCI помогает повысить производительность, снизить задержки и запускать специализированные рабочие нагрузки, которым необходим прямой доступ к оборудованию.

Зачем нужен проброс PCI-устройств?

Некоторым рабочим нагрузкам для повышения скорости или обеспечения совместимости требуется прямой доступ к специализированному оборудованию:

  • передача GPU для машинного обучения или кодирования видео;

  • проброс высокоскоростного сетевого адаптера для сетевых виртуальных устройств;

  • передача контроллера хранилища файловой системе ZFS или другой файловой системе внутри ВМ.

Ниже описан весь процесс: от проверки оборудования до расширенной диагностики неполадок при настройке проброса PCI в Proxmox.

Шаг 1. Проверьте требования к оборудованию и совместимость

В основе этой функции лежит IOMMU (Input-Output Memory Management Unit, блок управления памятью ввода-вывода). IOMMU безопасно сопоставляет обращения устройств к памяти с физической оперативной памятью, выделенной ВМ. На платформах Intel эта технология называется VT-d, а на платформах AMD — AMD-Vi. Для работы проброса PCI соответствующая поддержка должна быть реализована процессором и материнской платой и включена в BIOS/UEFI.

Большинство современных серверных процессоров поддерживают эти функции. До начала настройки убедитесь в полной совместимости оборудования, чтобы избежать проблем на следующих этапах.

Во-первых: поддержка со стороны процессора

  • для платформ Intel требуется поддержка VT-d;

  • для платформ AMD требуется поддержка AMD-Vi/IOMMU. Параметр SVM отвечает за аппаратную виртуализацию процессора и также должен быть включен для работы ВМ.

Если вы не уверены, проверьте характеристики процессора и найдите упоминание VT-d для Intel либо AMD-Vi/IOMMU для AMD.

Во-вторых: поддержка со стороны материнской платы

Не все наборы системной логики полностью реализуют IOMMU, даже если эта технология поддерживается процессором. Серверные платы обычно обеспечивают более предсказуемую совместимость. Проверьте руководство производителя материнской платы и сведения об успешных конфигурациях с аналогичным оборудованием.

В-третьих: совместимость устройства

Через PCIe можно передавать большинство устройств, включая GPU NVIDIA, AMD и Intel, сетевые адаптеры, USB-контроллеры и RAID-контроллеры. При этом следует учитывать несколько особенностей:

  • для многофункционального устройства может потребоваться одновременная передача всех его функций;

  • устройства с поддержкой SR-IOV могут предоставлять несколько виртуальных функций для распределения между ВМ.

По возможности сначала проверьте конфигурацию на резервном оборудовании, прежде чем использовать ее для критически важных рабочих нагрузок.

В-четвертых: настройки микропрограммы

Перед началом обновите BIOS/UEFI до стабильной версии, рекомендованной производителем. В старых версиях микропрограммы нужные параметры виртуализации могут отсутствовать или работать некорректно.

Шаг 2. Проверьте поддержку оборудования до настройки

Перед внесением изменений проверьте совместимость:

1. Откройте оболочку Proxmox.

2. Выполните lscpu и убедитесь, что отображается флаг vmx для Intel или svm для AMD. Эти флаги подтверждают поддержку виртуализации процессора, но не заменяют отдельную проверку IOMMU.

3. Просмотрите доступные PCI-устройства:

lspci -nnk

Определите устройства, которые планируется передать ВМ.

4. Проверьте сообщения ядра:

dmesg | grep -Ei 'DMAR|IOMMU|AMD-Vi'

Если после включения соответствующих параметров BIOS/UEFI в журнале нет сообщений об IOMMU, проверьте настройки микропрограммы, обновления BIOS/UEFI и совместимость оборудования.

Шаг 3. Включите IOMMU в BIOS/UEFI

IOMMU необходимо включить на уровне микропрограммы, поскольку от этого зависит дальнейшая настройка проброса PCI в Proxmox:

1. Перезагрузите сервер и войдите в BIOS/UEFI, нажав Delete, F2 или другую указанную производителем клавишу во время загрузки.

2. Найдите параметры виртуализации, обычно расположенные в разделах Advanced, CPU Configuration или Chipset.

  • Для Intel включите VT-d или Intel Virtualization Technology for Directed I/O.

  • Для AMD включите SVM Mode, а также AMD-Vi или IOMMU, если эти параметры представлены отдельно.

3. Переведите найденные параметры IOMMU, VT-d или AMD-Vi в состояние Enabled.

4. Если доступен параметр ACS (Access Control Services), включите его. Он может улучшить разделение функций устройств по группам IOMMU.

5. Сохраните изменения, обычно с помощью F10, и выйдите из BIOS/UEFI.

После загрузки Proxmox проверьте результат:

dmesg | grep -Ei 'DMAR|IOMMU|AMD-Vi'

Для Intel должны появиться сообщения наподобие DMAR: IOMMU enabled, а для AMD — сообщения с упоминанием AMD-Vi или включенного IOMMU.

Шаг 4. Настройте Proxmox VE для проброса PCI

После настройки микропрограммы подготовьте хост Proxmox.

Определите используемый загрузчик

В зависимости от способа установки Proxmox VE может использовать GRUB или загрузчик, управляемый с помощью proxmox-boot-tool. Проверьте конфигурацию командой:

proxmox-boot-tool status

Вывод команды покажет, управляются ли системные разделы EFI с помощью proxmox-boot-tool и используется ли GRUB. Если команда указывает, что система не инициализирована через этот инструмент, обычно применяется обычный GRUB. Не определяйте загрузчик только по выводу efibootmgr.

Измените параметры загрузки ядра

Порядок изменения параметров зависит от загрузчика.

Для систем с обычным GRUB:

1. Откройте файл /etc/default/grub:

nano /etc/default/grub

2. Найдите строку, начинающуюся с GRUB_CMDLINE_LINUX_DEFAULT.

3. Для Intel на ядрах старше 6.8 при необходимости добавьте:

intel_iommu=on iommu=pt

Для AMD IOMMU обычно включается автоматически после активации в BIOS/UEFI, поэтому, как правило, достаточно добавить:

iommu=pt

В актуальных ядрах IOMMU обычно активируется автоматически и для Intel. Параметр iommu=pt включает режим сквозного отображения для устройств, которыми управляет хост, и может снизить накладные расходы. Не удаляйте уже существующие параметры из строки.

4. Сохраните файл, нажав Ctrl+X, затем Y и Enter.

5. Обновите конфигурацию GRUB:

update-grub

Для систем, использующих proxmox-boot-tool:

1. Откройте файл /etc/kernel/cmdline:

nano /etc/kernel/cmdline

2. Добавьте нужные параметры в конец существующей единственной строки, не удаляя сведения о корневой файловой системе или ZFS.

3. Сохраните файл и обновите загрузочную конфигурацию:

proxmox-boot-tool refresh

Загрузите модули ядра VFIO

VFIO (Virtual Function I/O) обеспечивает безопасную передачу PCIe-устройств из пространства ядра хоста гостевой ВМ через QEMU/KVM.

Откройте файл /etc/modules:

nano /etc/modules

Добавьте следующие строки, если их еще нет:

vfio
vfio_iommu_type1
vfio_pci

Модуль vfio_virqfd, встречающийся в старых руководствах, в современных ядрах отдельно не загружается, поскольку его функциональность была объединена с VFIO.

Обновите initramfs и перезагрузите сервер

Выполните команды с правами root:

update-initramfs -u -k all
reboot

Проверьте текущую конфигурацию

После перезагрузки убедитесь, что IOMMU активирован:

dmesg | grep -Ei 'DMAR|IOMMU|AMD-Vi'

Проверьте загруженные модули VFIO:

lsmod | grep vfio

При необходимости проверьте переназначение прерываний:

dmesg | grep -i 'remapping'

Если команды не возвращают ожидаемых сообщений, вернитесь к настройкам BIOS/UEFI, параметрам ядра и конфигурации модулей.

Шаг 5. Подготовьте устройства к передаче

Проверьте изоляцию устройств по группам IOMMU

Каждое устройство PCIe входит в группу IOMMU. Устройства из одной группы нельзя безопасно передавать независимо друг от друга: из-за архитектуры шины их обычно необходимо передавать вместе.

Чтобы вывести группы IOMMU, выполните:

find /sys/kernel/iommu_groups/ -type l | sort | while read link; do \
group=$(echo "$link" | cut -d'/' -f5); \
device=$(basename "$link"); \
echo "Group $group : $(lspci -nns "$device")"; done

Найдите целевое устройство. Если оно входит в группу вместе с другими устройствами, попробуйте установить плату в другой слот PCIe и проверить настройки ACS в BIOS/UEFI.

Только в крайнем случае можно добавить к параметрам ядра:

pcie_acs_override=downstream,multifunction

Этот параметр принудительно разделяет группы, но ослабляет гарантии изоляции. Не используйте его без оценки рисков безопасности.

При необходимости запретите загрузку драйвера устройства на хосте

Proxmox VE пытается автоматически освободить устройство для проброса. Если драйвер хоста все равно захватывает устройство, сначала определите фактически используемый драйвер:

lspci -nnk

Затем добавьте его имя в файл /etc/modprobe.d/blacklist.conf. Например, для некоторых видеокарт NVIDIA могут использоваться строки:

blacklist nouveau
blacklist nvidia
blacklist nvidiafb
blacklist nvidia_drm

Для видеокарт AMD:

blacklist amdgpu
blacklist radeon

Для встроенной графики Intel:

blacklist i915

Добавляйте только драйверы, которые действительно относятся к передаваемому устройству. Не блокируйте драйвер основного видеоадаптера хоста, если у вас нет SSH, IPMI/iKVM или другого способа удаленного восстановления доступа.

Привяжите идентификаторы устройства к драйверу VFIO

Найдите идентификаторы производителя и устройства:

lspci -nnk

Пример:

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107GL [Quadro P400] [10de:1cb3]
01:00.1 Audio device [0403]: NVIDIA Corporation GP107GL High Definition Audio Controller [10de:0fb9]

Если у платы есть несколько функций, например графический и аудиоконтроллеры, привяжите их вместе. Создайте или откройте файл:

nano /etc/modprobe.d/vfio.conf

Добавьте строку, заменив идентификаторы своими:

options vfio-pci ids=10de:1cb3,10de:0fb9

Затем обновите initramfs и перезагрузите хост:

update-initramfs -u -k all
reboot

После загрузки проверьте драйвер целевого устройства:

lspci -nnk -d 10de:1cb3

В строке Kernel driver in use должен быть указан vfio-pci.

Шаг 6. Назначьте PCI-устройство ВМ через веб-интерфейс

После подготовки хоста назначьте устройство виртуальной машине:

1. Выберите нужную ВМ в дереве навигации Proxmox VE.

2. Откройте вкладку Hardware.

3. Нажмите Add и выберите PCI Device.

4. Выберите режим Raw Device, а затем нужное устройство, соответствующее ранее полученному выводу lspci.

5. Для многофункциональной платы при необходимости включите All Functions. Параметр Primary GPU следует включать только в том случае, если передаваемая видеокарта должна быть основным видеоадаптером ВМ.

6. Параметры PCI-Express и ROM-Bar изменяйте только при наличии соответствующих требований устройства или гостевой ОС. Режим PCIe доступен для машин типа q35.

7. Нажмите Add, затем запустите или перезапустите ВМ.

Гостевая операционная система должна обнаружить физическое устройство так же, как при установке на отдельном компьютере.

Шаг 7. Проверьте устройство в гостевой ОС

После назначения убедитесь, что устройство правильно распознается и работает внутри ВМ.

В гостевой системе Linux

Откройте терминал и используйте подходящие команды:

lspci -nnk
dmesg | grep -Ei 'error|fail|vfio|pci'
glxinfo -B
ethtool <имя_интерфейса>
smartctl -a <устройство>

Команда lspci -nnk должна показывать переданное устройство и используемый гостевой драйвер. glxinfo -B помогает проверить GPU, ethtool — сетевой адаптер, а smartctl — накопитель или контроллер. Модуль vfio_pci проверяется на хосте Proxmox, а не внутри гостевой системы.

В гостевой системе Windows

Откройте Device Manager и найдите устройство в разделах Display adapters, Network adapters, Sound, video and game controllers или в другом соответствующем разделе. После установки правильного драйвера рядом с устройством не должно быть предупреждающих значков.

При появлении ошибки проверьте код в свойствах устройства, конфигурацию q35/OVMF, параметры PCIe и совместимость драйвера. Для более подробного просмотра устройств и версий драйверов можно использовать стороннюю утилиту DevManView, предварительно проверив источник загрузки.

Расширенные рекомендации и устранение неполадок

  • Для проброса современных GPU обычно лучше подходят тип машины q35 и микропрограмма OVMF (UEFI), однако окончательный выбор зависит от гостевой ОС и устройства.

  • Передавайте вместе все функции одной платы, например GPU и связанный с ним аудиоконтроллер HDMI, если они находятся в одной группе IOMMU.

  • Устанавливайте актуальные драйверы переданного устройства внутри гостевой ОС, а не на хосте Proxmox.

  • В современных версиях Proxmox VE и драйверов NVIDIA обычно не требуется скрывать сигнатуру KVM для устранения ошибки Code 43. Сначала проверьте OVMF, q35, режим PCIe, все функции устройства и официальный драйвер.

  • Некоторые старые GPU AMD не могут корректно сбрасываться между последовательными запусками ВМ. Модуль vendor-reset может помочь только совместимым устройствам; оцените поддержку конкретной модели и риски установки стороннего модуля DKMS.

  • Параметр vfio_iommu_type1.allow_unsafe_interrupts=1 отключает часть проверок безопасности. Используйте его только временно, после подтверждения проблемы с переназначением прерываний и оценки рисков.

  • При пробросе USB-контроллера может потребоваться передача всей группы IOMMU. Перед изменением конфигурации проверьте группу устройства.

  • При подтвержденных тайм-аутах NVMe иногда применяется параметр nvme_core.default_ps_max_latency_us=0, который отключает энергосберегающие состояния контроллера. Не добавляйте его без диагностики.

Рекомендация: документируйте каждое изменение, чтобы упростить откат и последующую диагностику.

Решение корпоративного уровня для резервного копирования ВМ Proxmox

После настройки рабочих нагрузок с пробросом PCI в Proxmox VE важно защитить виртуальные машины от случайного удаления, атак программ-вымогателей, сбоев оборудования и других причин потери данных.

Vinchin Backup & Recovery — профессиональное решение для резервного копирования виртуальных машин, разработанное с учетом потребностей предприятий. Оно поддерживает Proxmox VE, VMware, Hyper-V, oVirt, RHV, OLVM, XCP-ng, XenServer, Citrix Hypervisor и другие платформы.

Решение также предлагает резервное копирование по расписанию, шифрование данных, многопоточную передачу и гранулярное восстановление. Все функции доступны через централизованную веб-консоль.

Резервное копирование ВМ Proxmox в Vinchin выполняется за четыре шага:

1. Выберите целевую ВМ.

Резервное копирование ВМ Proxmox

2. Выберите хранилище резервных копий.

Резервное копирование ВМ Proxmox

3. Настройте стратегию резервного копирования.

Резервное копирование ВМ Proxmox

4. Отправьте задание и отслеживайте его выполнение.

Резервное копирование ВМ Proxmox

Загрузите полнофункциональную бесплатную пробную версию на 60 дней, чтобы развернуть решение и оценить защиту виртуальной инфраструктуры.

Часто задаваемые вопросы о пробросе PCI в Proxmox

Вопрос 1. Следует ли создавать резервную копию ВМ перед настройкой проброса PCI?

Ответ: Да. Изменения параметров проброса PCI могут повлиять на загрузку ВМ и доступность оборудования. Резервная копия перед изменением конфигурации позволит быстрее восстановить ВМ при возникновении проблемы.

Вопрос 2. Как безопасно отменить изменения, если после проброса GPU сервер загружается с черным экраном?

Ответ: Подключитесь к хосту по SSH или через IPMI/iKVM, удалите проблемные записи из файлов блокировки драйверов и vfio.conf, выполните update-initramfs -u -k all и перезагрузите сервер. Если доступно, временно используйте встроенный видеоадаптер.

Вопрос 3. Почему после назначения USB-контроллер исчез и на хосте, и в гостевой системе?

Ответ: USB-контроллер может входить в одну группу IOMMU с другими функциями. Проверьте группу и убедитесь, что все необходимые функции передаются вместе, а гостевая система запущена и использует подходящий драйвер.

Вопрос 4. Какого прироста производительности можно ожидать по сравнению с эмулируемым виртуальным оборудованием?

Ответ: Проброс PCI обычно обеспечивает производительность, близкую к производительности на физическом оборудовании. Фактический результат зависит от устройства, драйвера, процессора, памяти и других компонентов системы, поэтому фиксированное процентное значение гарантировать нельзя.

Заключение

Проброс PCI раскрывает дополнительные возможности Proxmox VE, предоставляя ВМ прямой доступ к GPU, сетевым адаптерам и контроллерам хранилища с минимальными накладными расходами. Для успешной настройки необходимы совместимые процессор и материнская плата, поддержка IOMMU и корректная конфигурация хоста.

Проверяйте группы IOMMU и назначенный драйвер с помощью lspci, просматривайте сообщения ядра через dmesg и назначайте устройства через веб-интерфейс Proxmox VE. Перед изменением параметров создайте резервную копию ВМ и предусмотрите способ удаленного доступа к хосту на случай сбоя.

поделиться:

Категории: Виртуальная машина