mysurik.ru

Полное руководство: Проброс GPU и сетевой карты (PCI Passthrough) в Proxmox VE

Внимание! PCI Passthrough – это продвинутая техника, требующая понимания работы оборудования и операционной системы. Неправильная настройка может привести к нестабильности системы или повреждению оборудования. Перед началом убедитесь, что вы имеете достаточный опыт работы с Linux и Proxmox VE.

Что такое PCI Passthrough?

PCI Passthrough позволяет напрямую подключить устройство PCIe (например, GPU или сетевую карту) к виртуальной машине (VM), минуя гипервизор Proxmox VE. Это обеспечивает почти нативную производительность устройства в VM, что особенно важно для ресурсоемких задач, таких как игры, машинное обучение и графический рендеринг.

Необходимые условия:

  • Proxmox VE: Установленный и настроенный сервер Proxmox VE (версия 6.0 или выше).
  • IOMMU Support: Ваша материнская плата, процессор и BIOS должны поддерживать IOMMU (Input/Output Memory Management Unit). Это необходимо для безопасного проброса устройств PCIe.
  • GPU и сетевая карта: Устройство PCIe, которое вы хотите пробросить в VM.
  • Операционная система в VM: Windows или Linux с поддержкой PCI Passthrough.
  • Достаточное количество ядер CPU и оперативной памяти: Для стабильной работы VM с проброшенным оборудованием.

Шаг 1: Проверка поддержки IOMMU

  1. Включите IOMMU в BIOS/UEFI. Найдите настройки, связанные с VT-d (Intel) или AMD-Vi (AMD), и включите их.
  2. Проверьте поддержку IOMMU в Linux: Выполните следующую команду в терминале Proxmox VE:
dmesg | grep -e DMAR -e IOMMU

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

Шаг 2: Определение ID устройства PCIe

  1. Используйте команду lspci -nn: Выполните следующую команду в терминале Proxmox VE:
lspci -nn

Эта команда выведет список всех устройств PCIe, установленных в вашей системе. Найдите GPU и сетевую карту, которые вы хотите пробросить. Запомните их ID (например, 01:00.0 для GPU и 02:00.0 для сетевой карты).

Шаг 3: Настройка GRUB для включения IOMMU

  1. Отредактируйте файл /etc/default/grub: Откройте файл в текстовом редакторе с правами администратора (например, sudo nano /etc/default/grub).
  2. Добавьте параметры IOMMU в строку GRUB_CMDLINE_LINUX_DEFAULT: Добавьте следующие параметры:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt" # Для Intel
# или
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt" # Для AMD
  • intel_iommu=on или amd_iommu=on: Включает IOMMU.
  • iommu=pt: Включает режим проброса (Passthrough).
  1. Обновите GRUB: Выполните следующую команду:
sudo update-grub
  1. Перезагрузите сервер Proxmox VE.

Шаг 4: Привязка устройства PCIe к VM

  1. Остановите виртуальную машину, в которую вы хотите пробросить устройство.
  2. Отредактируйте файл конфигурации VM (/etc/pve/qemu-server/<VMID>.conf): Откройте файл в текстовом редакторе с правами администратора (например, sudo nano /etc/pve/qemu-server/<VMID>.conf).
  3. Добавьте параметры PCI Passthrough: Добавьте следующие строки для каждого устройства PCIe:
args: -device vfio-pci,host=<PCI ID> # Например, args: -device vfio-pci,host=01:00.0
  • <PCI ID>: Замените на ID устройства PCIe, которое вы определили ранее. Убедитесь, что указали правильный ID!
  1. Сохраните файл конфигурации VM.

Шаг 5: Черный список драйверов для GPU (если необходимо)

В некоторых случаях может потребоваться добавить GPU в черный список драйверов Proxmox VE, чтобы избежать конфликтов. Это особенно актуально для NVIDIA GPUs.

  1. Создайте файл /etc/modprobe.d/blacklist-gpu.conf: Откройте файл в текстовом редактоторе с правами администратора (например, sudo nano /etc/modprobe.d/blacklist-gpu.conf).
  2. Добавьте следующие строки:
blacklist nouveau
options nouveau options=aliased_modules=1
blacklist nvidiafb
blacklist rivafb
blacklist nvidia
blacklist modesetting
  1. Сохраните файл.
  2. Обновите initramfs: Выполните следующую команду:
sudo update-initramfs -u
  1. Перезагрузите сервер Proxmox VE.

Шаг 6: Запуск виртуальной машины и установка драйверов

  1. Запустите виртуальную машину.
  2. Установите необходимые драйверы для GPU и сетевой карты в VM. В Windows это обычно делается через диспетчер устройств или с помощью установочного диска. В Linux используйте соответствующие пакетные менеджеры (например, apt или yum).

Важные замечания:

  • IOMMU Groups: Убедитесь, что GPU и сетевая карта находятся в отдельных IOMMU groups. Если они находятся в одной группе, проброс может быть невозможен. Используйте команду lspci -nnv для проверки IOMMU groups.
  • VFIO Drivers: Убедитесь, что установлены необходимые VFIO drivers в Proxmox VE (apt install vfio-pci).
  • BIOS/UEFI Settings: Проверьте настройки BIOS/UEFI на предмет опций, связанных с PCI Passthrough или SR-IOV.
  • Стабильность системы: PCI Passthrough может повлиять на стабильность системы. Внимательно следите за логами и сообщениями об ошибках.
  • Ограничения: Не все GPU и сетевые карты поддерживают PCI Passthrough.

Устранение неполадок:

  • GPU не отображается в VM: Проверьте правильность ID устройства PCIe, настройки GRUB и черный список драйверов.
  • Ошибка при запуске VM: Проверьте логи Proxmox VE на предмет сообщений об ошибках, связанных с PCI Passthrough.
  • Низкая производительность GPU: Убедитесь, что установлены правильные драйверы в VM и что IOMMU правильно настроен.

Заключение:

PCI Passthrough – это мощная техника, которая позволяет значительно повысить производительность виртуальных машин. Однако она требует тщательной настройки и понимания работы оборудования. Следуйте этому руководству внимательно и не бойтесь экспериментировать. Удачи!

Ваш комментарий

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