Полное руководство: Проброс 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
- Включите IOMMU в BIOS/UEFI. Найдите настройки, связанные с VT-d (Intel) или AMD-Vi (AMD), и включите их.
- Проверьте поддержку IOMMU в Linux: Выполните следующую команду в терминале Proxmox VE:
dmesg | grep -e DMAR -e IOMMU
Если вы видите сообщения, связанные с DMAR или IOMMU, значит поддержка включена. В противном случае проверьте настройки BIOS/UEFI и убедитесь, что IOMMU правильно настроен.
Шаг 2: Определение ID устройства PCIe
- Используйте команду
lspci -nn: Выполните следующую команду в терминале Proxmox VE:
lspci -nn
Эта команда выведет список всех устройств PCIe, установленных в вашей системе. Найдите GPU и сетевую карту, которые вы хотите пробросить. Запомните их ID (например, 01:00.0 для GPU и 02:00.0 для сетевой карты).
Шаг 3: Настройка GRUB для включения IOMMU
- Отредактируйте файл
/etc/default/grub: Откройте файл в текстовом редакторе с правами администратора (например,sudo nano /etc/default/grub). - Добавьте параметры 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).
- Обновите GRUB: Выполните следующую команду:
sudo update-grub
- Перезагрузите сервер Proxmox VE.
Шаг 4: Привязка устройства PCIe к VM
- Остановите виртуальную машину, в которую вы хотите пробросить устройство.
- Отредактируйте файл конфигурации VM (
/etc/pve/qemu-server/<VMID>.conf): Откройте файл в текстовом редакторе с правами администратора (например,sudo nano /etc/pve/qemu-server/<VMID>.conf). - Добавьте параметры PCI Passthrough: Добавьте следующие строки для каждого устройства PCIe:
args: -device vfio-pci,host=<PCI ID> # Например, args: -device vfio-pci,host=01:00.0
<PCI ID>: Замените на ID устройства PCIe, которое вы определили ранее. Убедитесь, что указали правильный ID!
- Сохраните файл конфигурации VM.
Шаг 5: Черный список драйверов для GPU (если необходимо)
В некоторых случаях может потребоваться добавить GPU в черный список драйверов Proxmox VE, чтобы избежать конфликтов. Это особенно актуально для NVIDIA GPUs.
- Создайте файл
/etc/modprobe.d/blacklist-gpu.conf: Откройте файл в текстовом редактоторе с правами администратора (например,sudo nano /etc/modprobe.d/blacklist-gpu.conf). - Добавьте следующие строки:
blacklist nouveau
options nouveau options=aliased_modules=1
blacklist nvidiafb
blacklist rivafb
blacklist nvidia
blacklist modesetting
- Сохраните файл.
- Обновите initramfs: Выполните следующую команду:
sudo update-initramfs -u
- Перезагрузите сервер Proxmox VE.
Шаг 6: Запуск виртуальной машины и установка драйверов
- Запустите виртуальную машину.
- Установите необходимые драйверы для 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 – это мощная техника, которая позволяет значительно повысить производительность виртуальных машин. Однако она требует тщательной настройки и понимания работы оборудования. Следуйте этому руководству внимательно и не бойтесь экспериментировать. Удачи!