Как настроить Proxmox VE 8 для сквозной передачи PCI/PCIE и NVIDIA GPU

Kak Nastroit Proxmox Ve 8 Dla Skvoznoj Peredaci Pci Pcie I Nvidia Gpu



Proxmox VE 8 — один из лучших бесплатных гипервизоров Type-I с открытым исходным кодом для запуска виртуальных машин (VM) QEMU/KVM и контейнеров LXC. Он имеет приятный веб-интерфейс управления и множество функций.

Одна из самых удивительных особенностей Proxmox VE заключается в том, что он может передавать данные через устройства PCI/PCIE (т. е. графический процессор NVIDIA) с вашего компьютера на виртуальные машины Proxmox VE (VM). Сквозное соединение PCI/PCIE становится все лучше и лучше с новыми выпусками Proxmox VE. На момент написания этой статьи последней версией Proxmox VE была Proxmox VE v8.1, и она имела отличную поддержку сквозного соединения PCI/PCIE.







В этой статье я собираюсь показать вам, как настроить хост/сервер Proxmox VE 8 для сквозной передачи PCI/PCIE и настроить графический процессор NVIDIA для сквозной передачи PCIE на виртуальных машинах (VM) Proxmox VE 8.





Оглавление

  1. Включение виртуализации из прошивки BIOS/UEFI вашей материнской платы
  2. Установка Proxmox VE 8
  3. Включение репозиториев сообщества Proxmox VE 8
  4. Установка обновлений на Proxmox VE 8
  5. Включение IOMMU из прошивки BIOS/UEFI вашей материнской платы
  6. Включение IOMMU на Proxmox VE 8
  7. Проверка включения IOMMU на Proxmox VE 8
  8. Загрузка модулей ядра VFIO в Proxmox VE 8
  9. Листинг групп IOMMU на Proxmox VE 8
  10. Проверка возможности передачи вашего графического процессора NVIDIA на виртуальную машину Proxmox VE 8 (VM)
  11. Проверка наличия модулей ядра в черном списке для сквозной передачи PCI/PCIE на Proxmox VE 8
  12. Внесение в черный список необходимых модулей ядра для сквозной передачи PCI/PCIE на Proxmox VE 8
  13. Настройка графического процессора NVIDIA для использования модуля ядра VFIO на Proxmox VE 8
  14. Передача графического процессора NVIDIA на виртуальную машину (ВМ) Proxmox VE 8.
  15. Все еще возникают проблемы с пробросом PCI/PCIE на виртуальных машинах (ВМ) Proxmox VE 8?
  16. Заключение
  17. Рекомендации





Включение виртуализации из прошивки BIOS/UEFI вашей материнской платы

Прежде чем вы сможете установить Proxmox VE 8 на свой компьютер/сервер, вы должны включить функцию аппаратной виртуализации вашего процессора в прошивке BIOS/UEFI вашей материнской платы. Для разных материнских плат этот процесс различен. Итак, если вам нужна помощь во включении аппаратной виртуализации на вашей материнской плате, прочитайте эту статью .



Установка Proxmox VE 8

Proxmox VE 8 можно загрузить, установить и использовать бесплатно. Прежде чем начать, обязательно установите Proxmox VE 8 на свой компьютер. Если вам нужна помощь в этом, прочитайте эту статью .

Включение репозиториев сообщества Proxmox VE 8

После установки Proxmox VE 8 на ваш компьютер/сервер обязательно включить репозитории пакетов сообщества Proxmox VE 8 .

По умолчанию репозитории корпоративных пакетов Proxmox VE 8 включены, и вы не сможете получать/устанавливать обновления и исправления ошибок из корпоративных репозиториев, если вы не купили корпоративные лицензии Proxmox VE 8. Итак, если вы хотите использовать Proxmox VE 8 бесплатно, обязательно включить репозитории пакетов сообщества Proxmox VE 8 чтобы бесплатно получать последние обновления и исправления ошибок от Proxmox.

Установка обновлений на Proxmox VE 8

Как только вы включил репозитории пакетов сообщества Proxmox VE 8 , убедись в установите все доступные обновления на ваш сервер Proxmox VE 8 .

Включение IOMMU из прошивки BIOS/UEFI вашей материнской платы

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

Включение IOMMU на Proxmox VE 8

После включения IOMMU на аппаратной стороне вам также необходимо включить IOMMU со стороны программного обеспечения (из Proxmox VE 8).

Чтобы включить IOMMU в Proxmox VE 8, вам необходимо добавить следующие параметры загрузки ядра:

Поставщик процессора Параметры загрузки ядра, которые нужно добавить
Интел intel_iommu=on, iommu=pt
АМД iommu=pt

Чтобы изменить параметры загрузки ядра Proxmox VE 8, откройте /etc/по умолчанию/личинка файл с помощью текстового редактора nano следующим образом:

$ нано /etc/default/grub

В конце GRUB_CMDLINE_LINUX_DEFAULT добавьте необходимые параметры загрузки ядра для включения IOMMU в зависимости от используемого процессора.

Поскольку я использую процессор AMD, я добавил только параметр загрузки ядра. iommu=pt в конце GRUB_CMDLINE_LINUX_DEFAULT линия в /etc/по умолчанию/личинка файл.

Как только вы закончите, нажмите + Икс с последующим И и <Ввод> чтобы спасти /etc/по умолчанию/личинка файл.

Теперь обновите конфигурации загрузки GRUB с помощью следующей команды:

$ обновление-grub2

После обновления конфигураций загрузки GRUB нажмите Перезагрузить перезагрузить сервер Proxmox VE 8, чтобы изменения вступили в силу.

Проверка включения IOMMU на Proxmox VE 8

Чтобы проверить, включен ли IOMMU в Proxmox VE 8, выполните следующую команду:

$ dmesg | grep -e DMAR -e IOMMU

Если IOMMU включен, вы увидите некоторые выходные данные, подтверждающие, что IOMMU включен.

Если IOMMU не включен, вы можете не увидеть никаких выходных данных.

Вам также необходимо иметь Переназначение прерываний IOMMU включен для работы сквозного порта PCI/PCIE.

Чтобы проверить, включено ли переназначение прерываний IOMMU на вашем сервере Proxmox VE 8, выполните следующую команду:

$ dmesg | grep 'переназначение'

Как вы можете видеть, переназначение прерываний IOMMU включено на моем сервере Proxmox VE 8.

В большинстве современных процессоров AMD и Intel включено перераспределение прерываний IOMMU. Если по какой-либо причине у вас не включено перераспределение прерываний IOMMU, есть обходной путь. Вам необходимо включить небезопасные прерывания для VFIO. Прочтите эту статью для получения дополнительной информации о включении небезопасных прерываний на вашем сервере Proxmox VE 8.

Загрузка модулей ядра VFIO в Proxmox VE 8

Сквозная передача PCI/PCIE осуществляется в основном модулями ядра VFIO (виртуальные функции ввода-вывода) в Proxmox VE 8. Модули ядра VFIO по умолчанию не загружаются во время загрузки в Proxmox VE 8. Но загрузить VFIO легко. модули ядра во время загрузки на Proxmox VE 8.

Сначала откройте /etc/modules-load.d/vfio.conf файл с нано текстовый редактор следующим образом:

$ nano /etc/modules-load.d/vfio.conf

Введите следующие строки в поле /etc/modules-load.d/vfio.conf файл.

вфио

vfio_iommu_type1

vfio_pci

Как только вы закончите, нажмите + Икс с последующим И и <Ввод> чтобы сохранить изменения.

Теперь обновите initramfs вашей установки Proxmox VE 8 с помощью следующей команды:

$ update-initramfs -u -k все

После обновления initramfs нажмите Перезагрузить перезагрузить сервер Proxmox VE 8, чтобы изменения вступили в силу.

Как только ваш сервер Proxmox VE 8 загрузится, вы увидите, что все необходимые модули ядра VFIO загружены.

$ лсмод | захват vfio

Листинг групп IOMMU на Proxmox VE 8

Для передачи устройств PCI/PCIE на виртуальных машинах (VM) Proxmox VE 8 вам потребуется довольно часто проверять группы IOMMU ваших устройств PCI/PCIE. Чтобы упростить проверку групп IOMMU, я решил написать скрипт оболочки (взял его с GitHub, но не могу вспомнить название исходного постера) по пути /usr/local/bin/print-iommu-groups чтобы я мог просто бежать печать-iommu-группы команда, и она распечатает группы IOMMU в оболочке Proxmox VE 8.

Сначала создайте новый файл печать-iommu-группы в пути /usr/локальный/бен и откройте его с помощью текстового редактора nano следующим образом:

$ nano /usr/local/bin/print-iommu-groups

Введите следующие строки в поле печать-iommu-группы файл:

#!/бин/баш

магазины нулевой глоб

для г в ` находить / система / ядро / iommu_groups /* -Максимальная глубина 0 -тип д | Сортировать ` ; делать

эхо «Группа компаний «ИОММУ» ${g##*/} :'

для д в / устройства /* ; делать

эхо -Это ' \ т $(lspci -nns ${d##*/}) '

сделанный ;

сделанный ;

Как только вы закончите, нажмите + Икс с последующим И и <Ввод> чтобы сохранить изменения в печать-iommu-группы файл.

Сделать печать-iommu-группы файл сценария, исполняемый с помощью следующей команды:

$ chmod +x /usr/local/bin/print-iommu-groups

Теперь вы можете запустить печать-iommu-группы выполните следующую команду, чтобы распечатать группы IOMMU устройств PCI/PCIE, установленных на вашем сервере Proxmox VE 8:

$ print-iommu-groups

Как видите, распечатаны группы IOMMU устройств PCI/PCIE, установленных на моем сервере Proxmox VE 8.

Проверка возможности передачи вашего графического процессора NVIDIA на виртуальную машину Proxmox VE 8 (VM)

Чтобы передать устройство PCI/PCIE на виртуальную машину (ВМ) Proxmox VE 8, оно должно находиться в отдельной группе IOMMU. Если 2 или более устройств PCI/PCIE совместно используют группу IOMMU, вы не сможете передать ни одно из устройств PCI/PCIE этой группы IOMMU на любые виртуальные машины (VM) Proxmox VE 8.

Таким образом, если ваш графический процессор NVIDIA и его аудиоустройство находятся в отдельной группе IOMMU, вы можете передать графический процессор NVIDIA на любые виртуальные машины (VM) Proxmox VE 8.

На моем сервере Proxmox VE 8 я использую материнскую плату MSI X570 ACE в сочетании с процессором Ryzen 3900X и графическим процессором Gigabyte RTX 4070 NVIDIA. В соответствии с группами IOMMU моей системы я могу подключить графический процессор NVIDIA RTX 4070 (группа IOMMU 21), контроллер Ethernet RTL8125 2.5Gbe (группа IOMMU 20), контроллер Gigabit Ethernet Intel I211 (группа IOMMU 19), контроллер USB 3.0 ( группа IOMMU 24) и встроенный контроллер HD Audio (группа IOMMU 25).

$ print-iommu-groups

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

Проверка наличия модулей ядра в черном списке для сквозной передачи PCI/PCIE на Proxmox VE 8

Чтобы пропустить устройство PCI/PCIE на виртуальной машине (ВМ) Proxmox VE 8, вы должны убедиться, что Proxmox VE заставляет его использовать модуль ядра VFIO вместо исходного модуля ядра.

Чтобы узнать модуль ядра, который используют ваши устройства PCI/PCIE, вам необходимо знать идентификатор поставщика и идентификатор устройства этих устройств PCI/PCIE. Вы можете найти идентификатор поставщика и идентификатор устройства PCI/PCIE, используя печать-iommu-группы команда.

$ print-iommu-groups

Например, идентификатор поставщика и идентификатор устройства моего графического процессора NVIDIA RTX 4070: 10 декабря: 2786 и это аудиоустройство 10 де: 22 до н. э. .

Чтобы найти модуль ядра и устройство PCI/PCIE 10 декабря: 2786 (мой графический процессор NVIDIA RTX 4070), запустите лспци командуйте следующим образом:

$ lspci -v -d 10de:2786

Как вы можете видеть, мой графический процессор NVIDIA RTX 4070 использует nvidiafb и новый модули ядра по умолчанию. Таким образом, на данный момент их нельзя передать на виртуальную машину (ВМ) Proxmox VE 8.

Аудиоустройство моего графического процессора NVIDIA RTX 4070 использует snd_hda_intel модуль ядра. Таким образом, на данный момент его также нельзя передать на виртуальную машину Proxmox VE 8.

$ lspci -v -d 10de:22bc

Итак, чтобы передать мой графический процессор NVIDIA RTX 4070 и его аудиоустройство на виртуальную машину (ВМ) Proxmox VE 8, я должен внести в черный список nvidiafb , новый , и snd_hda_intel модули ядра и настройте мой графический процессор NVIDIA RTX 4070 и его аудиоустройство на использование vfio-pci модуль ядра.

Внесение в черный список необходимых модулей ядра для сквозной передачи PCI/PCIE на Proxmox VE 8

Чтобы внести в черный список модули ядра на Proxmox VE 8, откройте /etc/modprobe.d/blacklist.conf файл с помощью текстового редактора nano следующим образом:

$ nano /etc/modprobe.d/blacklist.conf

Чтобы занести в черный список модули ядра новый , nvidiafb , и snd_hda_intel модулей ядра (для передачи через NVIDIA GPU), добавьте следующие строки в файл /etc/modprobe.d/blacklist.conf файл:

черный список в стиле модерн

черный список nvidiafb

черный список snd_hda_intel

Как только вы закончите, нажмите + Икс с последующим И и <Ввод> чтобы спасти /etc/modprobe.d/blacklist.conf файл.

Настройка графического процессора NVIDIA для использования модуля ядра VFIO на Proxmox VE 8

Чтобы настроить устройство PCI/PCIE (т. е. графический процессор NVIDIA) для использования модуля ядра VFIO, вам необходимо знать идентификатор поставщика и идентификатор устройства.

В этом случае идентификатор поставщика и идентификатор устройства моего графического процессора NVIDIA RTX 4070 и его аудиоустройства равны 10 декабря: 2786 и 10 де: 22 до н. э. .

Чтобы настроить графический процессор NVIDIA для использования модуля ядра VFIO, откройте /etc/modprobe.d/vfio.conf файл с помощью текстового редактора nano следующим образом:

$ nano /etc/modprobe.d/vfio.conf

Чтобы настроить графический процессор NVIDIA и его аудиоустройство с помощью : 10 декабря: 2786 и 10 де: 22 до н. э. (скажем) соответственно, чтобы использовать модуль ядра VFIO, добавьте следующую строку в файл /etc/modprobe.d/vfio.conf файл.

параметры vfio-pci ids=10de:2786,10de:22bc

Как только вы закончите, нажмите + Икс с последующим И и <Ввод> чтобы спасти /etc/modprobe.d/vfio.conf файл.

Теперь обновите initramfs Proxmove VE 8 с помощью следующей команды:

$ update-initramfs -u -k все

После обновления initramfs нажмите Перезагрузить перезагрузить сервер Proxmox VE 8, чтобы изменения вступили в силу.

После загрузки сервера Proxmox VE 8 вы должны увидеть, что ваш графический процессор NVIDIA и его аудиоустройство ( 10 декабря: 2786 и 10 де: 22 до н. э. в моем случае) используют vfio-pci модуль ядра. Теперь ваш графический процессор NVIDIA готов к передаче на виртуальную машину Proxmox VE 8.

$ lspci -v -d 10de:2786

$ lspci -v -d 10de:22bc

Передача графического процессора NVIDIA на виртуальную машину (ВМ) Proxmox VE 8.

Теперь, когда ваш графический процессор NVIDIA готов к передаче на виртуальные машины (ВМ) Proxmox VE 8, вы можете передать свой графический процессор NVIDIA на нужную виртуальную машину Proxmox VE 8 и установить драйверы графического процессора NVIDIA в зависимости от операционной системы, которую вы используете. эта виртуальная машина как обычно.

Подробную информацию о том, как передать графический процессор NVIDIA на виртуальную машину (ВМ) Proxmox VE 8 с различными установленными операционными системами, можно найти в одной из следующих статей:

  • Как передать графический процессор NVIDIA на виртуальную машину (ВМ) Windows 11 Proxmox VE 8
  • Как передать графический процессор NVIDIA на виртуальную машину (VM) Ubuntu 24.04 LTS Proxmox VE 8
  • Как передать графический процессор NVIDIA на виртуальную машину (VM) LinuxMint 21 Proxmox VE 8
  • Как передать графический процессор NVIDIA на виртуальную машину (ВМ) Debian 12 Proxmox VE 8
  • Как передать графический процессор NVIDIA на виртуальную машину (VM) Proxmox VE 8 с элементарной ОС 8
  • Как передать графический процессор NVIDIA на виртуальную машину (VM) Fedora 39+ Proxmox VE 8
  • Как пропустить графический процессор NVIDIA на виртуальной машине (VM) Arch Linux Proxmox VE 8
  • Как пропустить графический процессор NVIDIA на виртуальной машине (VM) Red Hat Enterprise Linux 9 (RHEL 9) Proxmox VE 8

Все еще возникают проблемы с пробросом PCI/PCIE на виртуальных машинах (ВМ) Proxmox VE 8?

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

Заключение

В этой статье я показал вам, как настроить сервер Proxmox VE 8 для сквозной передачи PCI/PCIE, чтобы вы могли передавать устройства PCI/PCIE (т. е. графический процессор NVIDIA) на виртуальные машины Proxmox VE 8 (VM). Я также показал вам, как найти модули ядра, которые необходимо внести в черный список, и как внести их в черный список для успешного прохождения желаемых устройств PCI/PCIE (т. е. вашего графического процессора NVIDIA) на виртуальную машину Proxmox VE 8. Наконец, я показал вам, как настроить нужные устройства PCI/PCIE (т. е. графический процессор NVIDIA) для использования модулей ядра VFIO, что также является важным шагом для успешного прохождения желаемых устройств PCI/PCIE (т. е. графического процессора NVIDIA). ) на виртуальную машину Proxmox VE 8 (ВМ).

Рекомендации

  1. Сквозное соединение PCI(e) – Proxmox VE
  2. Сквозное соединение PCI – Proxmox VE
  3. Лучшая игровая виртуальная машина на proxmox – YouTube