Как включить сквозную передачу PCI в Proxmox?

Вход на вкладку «Разное» в меню BIOS

В отличие от Virtualbox, VMWare Workstation Pro или других гипервизоров Type-2, Proxmox требует, чтобы вы выделили ему целый ПК. Но если вы готовы его настроить, Proxmox может служить мощной базой для любой домашней лаборатории или сервера виртуализации. Вы даже можете продвинуть утилиту Proxmox на шаг дальше, включив PCI passthrough.

По умолчанию виртуальные машины внутри Proxmox не могут получить доступ к устройствам, подключенным к слотам расширения PCI Express вашей материнской платы. Но, включив PCI passthrough, вы можете использовать сетевые карты, звуковые карты, RAID-контроллер и другие карты PCIe внутри ваших любимых виртуальных машин. Единственное предостережение заключается в том, что процесс может стать чрезвычайно сложным, особенно если вы пытаетесь использовать графические процессоры с виртуальными машинами Proxmox. Поэтому мы создали подробное руководство, которое поможет вам настроить PCI passthrough на Proxmox.

Включение IOMMU в BIOS

Прежде чем вы сможете начать вводить команды в оболочке Proxmox, вам придется включить настройку IOMMU в BIOS вашей материнской платы. Как вы можете догадаться из названия, Input-Output Memory Management Unit контролирует назначение адресов памяти всем вашим периферийным устройствам, включая те, которые подключены к слотам PCIe.

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

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

Перезагрузите машину Proxmox и нажмите клавишу Delete во время загрузки. В большинстве случаев опция IOMMU должна находиться в подменю CPU или Miscellaneous settings на вкладке Settings.Вход на вкладку «Разное» в меню BIOS Нажмите на IOMMU и установите для него статус «Включено».Включение IOMMU в BIOS (Необязательно) Если вы еще не включили виртуализацию, вы можете перейти в раздел «Дополнительные параметры ЦП» и включить VT-x, SVM Mode, AMD-V или любое другое название этой опции на вашей материнской плате.Включение режима SVM в BIOS Обязательно сохраните изменения перед выходом из BIOS.

Подтверждение того, что настройки IOMMU включены правильно

После перезагрузки сервера Proxmox настанет время выполнить некоторые команды терминала с помощью веб-интерфейса из другой системы в той же сети.

В веб-интерфейсе выберите узел, который вы собираетесь использовать для этого проекта, и щелкните его окно оболочки.Открытие оболочки узла внутри веб-интерфейса Proxmox Выполните эту команду, чтобы убедиться, что IOMMU правильно включен в вашей системе. dmesg | grep -e DMAR -e IOMMUКоманда для проверки работы IOMMU в веб-интерфейсе Proxmox Если вы правильно включили IOMMU в BIOS в предыдущем разделе, сообщение IOMMU performance counters supported должно появиться в качестве вывода. Убедитесь, что Interrupt Remapping включен, выполнив следующую команду: dmesg | grep ‘remapping’Команда для проверки работоспособности переназначения прерываний IOMMU в веб-интерфейсе Proxmox (Необязательно) Если вы не видите сообщение о включенном сопоставлении прерываний/IRQ, откройте файл iommu_unsafe_interrupts.conf с помощью редактора Nano. nano iommu_unsafe_interrupts.conf Вставьте эту строку в файл, прежде чем нажать Ctrl+X для сохранения и Y для выхода из файла конфигурации. options vfio_iommu_type1 allow_unsafe_interrupts=1

Включение сквозной передачи PCI для большинства устройств

Человек держит сетевую карту 10GbE перед монитором, на котором отображается пользовательский интерфейс Proxmox

Если параметры IOMMU настроены правильно, можно выполнить следующие шаги для настройки функции сквозного доступа PCI на Proxmox:

Внутри оболочки Proxmox откройте файл конфигурации загрузчика GRUB с помощью текстового редактора Nano, введя следующую команду: nano /etc/default/grubКоманда для открытия файла конфигурации загрузчика GRUB в веб-интерфейсе Proxmox Найдите строку GRUB_CMDLINE_LINUX_DEFAULT и перезапишите ее этим аргументом. GRUB_CMDLINE_LINUX_DEFAULT=»iommu=pt»Добавление параметра iommu=pt в файл конфигурации загрузчика GRUB в веб-интерфейсе Proxmox Если у вас процессор Intel, вам нужно будет добавить более длинный аргумент: GRUB_CMDLINE_LINUX_DEFAULT=»quiet intel_iommu=on» Сохраните и выйдите из файла конфигурации, нажав Ctrl+X, а затем Y. Выполните эту команду, чтобы обновить загрузчик GRUB: update-grubОбновление загрузчика GRUB в Proxmox Доступ к файлу модулей осуществляется с помощью редактора Nano. nano /etc/modulesКоманда для открытия файла модулей веб-интерфейса Proxmox Добавьте эти переменные ввода/вывода виртуальной функции в файл перед сохранением и возвращением в оболочку, используя ту же комбинацию клавиш, что и ранее.vfio vfio_iommu_type1 vfio_pci vfio_virqfdДобавление переменных vfio в файл модулей веб-интерфейса Proxmox Перезагрузите систему Proxmox.

После выполнения этих шагов вам просто нужно добавить устройство PCIe в вашу виртуальную машину. Если вы не используете видеокарту, можете смело пропустить следующий раздел статьи.

(Необязательно) Включение сквозного PCI для графических процессоров

Intel Arc A750 рядом с ASUS Rog Strix RTX 3080 Ti и GTX 1080 Ti

Позвольте мне начать этот раздел следующим образом: если вы цените свой здравый смысл, вам следует забыть об использовании графических процессоров в виртуальных машинах Proxmox. В отличие от обычного устройства PCIe, настройка сквозного канала для графических карт — это мучительный процесс, который может легко потерпеть неудачу в зависимости от множества факторов, включая спецификации материнской платы и модель графического процессора, производителя и поколение.

Но если вы все еще полны решимости довести дело до конца, вот несколько важных вещей, которые следует иметь в виду. Для безошибочного опыта я рекомендую использовать немного более старые графические процессоры вместо их последних аналогов. И да, графические процессоры, как во множественном числе этого слова. Хотя вы получаете доступ к веб-интерфейсу из другой системы, вам понадобится как минимум один источник видеовывода исключительно для машины Proxmox. К счастью, это касается и iGPU в современных процессорах, но, как я уже сказал, ваш пробег может значительно варьироваться в зависимости от спецификаций вашего ПК.

Также важно вставить графический процессор в соответствующий слот PCIe на материнской плате. Если графический процессор подключен к разъему PCIe, имеющему ту же группу IOMMU, что и твердотельный накопитель M.2, контроллер SATA, разъем Ethernet или другие подобные устройства, попытка пробросить графическую карту в виртуальную машину может привести к зависанию всей машины Proxmox при загрузке указанной виртуальной машины. Конечно, технически вы можете запустить команду pcie_acs_override=downstream,multifunction, чтобы разделить некоторые группы IOMMU, но это может привести к некоторым неожиданным проблемам позже.

Чтобы не усложнять, я предлагаю подключить графический процессор, к которому вы хотите получить доступ из виртуальной машины, в самый быстрый слот PCIe x16, так как он обычно имеет свою собственную группу IOMMU. В большинстве случаев это должен быть первый разъем x16 на материнской плате. Затем вы можете вставить свою вторичную графическую карту в любой другой слот и подключить ее к монитору с помощью кабеля дисплея. После этого просто выполните следующие действия внутри оболочки Proxmox:

(Необязательно) В качестве меры предосторожности откройте blacklist.conf, чтобы запретить машине Proxmox доступ к графическому процессору, который вы планируете использовать внутри виртуальных машин. nano /etc/modprobe.d/blacklist.confКоманда для открытия файла blacklist.conf в веб-интерфейсе Proxmox (Необязательно) Добавьте эти параметры в файл, если вы используете видеокарту Nvidia: blacklist nouveau blacklist nvidia blacklist nvidiafb blacklist nvidia_drmВажные драйверы Nvidia в файле blacklist.conf веб-интерфейса Proxmox Как вы уже догадались, на графических процессорах AMD команды немного отличаются: blacklist amdgpu blacklist radeonВнесение графических процессоров AMD в черный список в Proxmox Между тем, для предложений Intel вам нужно добавить только один параметр: blacklist i915Внесение в черный список драйверов Intel GPU в Proxmox Запишите значение слота PCIe контроллера VGA видеокарты и аудиодрайвера, выполнив следующую команду: lspci -vЗапуск команды lspci внутри веб-интерфейса Proxmox Значение слота — это набор чисел, которые появляются в формате xx:xx.x перед каждым устройством PCIe. Выполните команду lspci еще раз, но на этот раз вам придется использовать другой набор флагов и включить идентификатор слота PCIe вашего графического процессора. lspci -n -s slot_IDПоиск идентификаторов поставщика и устройства PCIe-устройств в веб-интерфейсе Proxmox Повторите этот процесс для аудиодрайвера и скопируйте идентификаторы устройств для контроллера VGA и аудиодрайвера, так как они вам понадобятся на следующем шаге. Откройте файл vfio.conf с помощью текстового редактора Nano. nano /etc/modprobe.d/vfio.confКоманда для открытия файла vfio.conf в веб-интерфейсе Proxmox Вставьте следующую строку в файл конфигурации. options vfio-pci ids=Device_1,Device_2 disable_vga=1Добавление идентификаторов поставщика и устройства графического процессора в vfio.config в веб-интерфейсе Proxmox Обязательно сохраните файл vfio.conf после изменения значений Device_1 и Device_2 на шестнадцатеричные идентификаторы, скопированные на предыдущем шаге. Выполните эти две команды, чтобы сохранить изменения в файловой системе initramfs.update-initramfs -u reset

Добавление устройств PCIe к вашим виртуальным машинам Proxmox

Карта WLAN и карта расширения USB, расположенные перед монитором, на котором отображается пользовательский интерфейс Proxmox.

Наконец, пришло время отказаться от оболочки Proxmox и настроить ее с помощью конфигурации виртуальной машины. Если у вас нет виртуальной машины, сейчас самое время ее создать. Когда вы закончите, вот шаги, которые вам нужно выполнить:

Выберите виртуальную машину, на которой вы планируете использовать устройства PCIe, и перейдите на вкладку «Оборудование».Доступ к вкладке «Оборудование» виртуальной машины в веб-интерфейсе Proxmox Нажмите кнопку «Добавить устройство» и выберите «Устройство PCI».Добавление устройства PCI к виртуальной машине в веб-интерфейсе Proxmox Переключите переключатель Raw Device и выберите свое устройство из списка.Выбор устройства PCI для виртуальной машины в веб-интерфейсе Proxmox Нажмите кнопку Добавить.Включение устройства PCI для виртуальной машины в веб-интерфейсе Proxmox

Оснащение виртуальных машин мощными картами расширения

Подключение к виртуальной машине Windows 11 с помощью удаленного рабочего стола после включения сквозного доступа к графическому процессору

Если вы внимательно выполнили все шаги, ваша виртуальная машина не должна испытывать проблем с обнаружением обычного устройства PCIe. Однако графические процессоры — это совсем другая история, поскольку они требуют различных калибровок и настроек для работы с различными операционными системами виртуальных машин. Например, Windows 11 может не работать с noVNC, если вы попытаетесь установить дискретную видеокарту в качестве основного графического процессора.

В своем тестировании я следовал этой процедуре для моей GTX 1080 (сквозной графический процессор) и Intel Arc A750 (вторая видеокарта), и мне удалось заставить мою 1080 работать на виртуальной машине Windows 11 Pro. Таким образом, вам придется установить версию ОС Pro и использовать удаленный рабочий стол для доступа к виртуальной машине на базе графического процессора. Аналогично, у Ubuntu есть свой набор причуд, хотя я не думаю, что мне нужно упоминать, насколько сложно заставить сквозной графический процессор работать на новых версиях macOS.

Ваш адрес email не будет опубликован. Обязательные поля помечены *