Проброс видеокарты (GPU passthrough) отдаёт физическую карту одной виртуальной машине целиком: гостевая система видит её как свою и работает с родным драйвером NVIDIA или AMD. Для этого нужны три вещи: включённый в BIOS IOMMU, отвязка карты от драйверов хоста через vfio и строка hostpci в настройках ВМ. На Proxmox VE 9 это полчаса работы, если плата нормально разводит устройства по группам IOMMU.
Отдать видеокарту виртуальной машине можно тремя способами, и путают их постоянно. Даже в рекламе GPU-хостингов «проброс» и «деление карты» часто пишут через запятую.
| Способ | Что получает ВМ | Сколько ВМ на одну карту | Какие карты | Лицензия NVIDIA |
|---|---|---|---|---|
| Проброс (passthrough) | всю карту | одна | любые, включая GeForce | не нужна |
| vGPU | виртуальную карту с долей видеопамяти | несколько | только серверные из списка NVIDIA | нужна |
| MIG | аппаратно изолированный кусок карты | до 7 | A100, A30, H100, H200, B200, RTX PRO 6000 | без vGPU не нужна |
Проброс проще и быстрее двух других вариантов: между гостем и картой почти нет прослойки. Цена простоты в том, что карта достаётся одной машине и больше никому, включая сам хост. Если нужно раздать одну карту десятку рабочих мест, это задача vGPU. Чем он отличается по лицензиям и какие карты поддерживает, мы разобрали в статье про NVIDIA GRID и vGPU.
Проброс упирается в железо раньше, чем в настройки. Проверьте четыре вещи до того, как открывать консоль.
Поддержка IOMMU в процессоре и включённая опция в BIOS. У Intel она называется VT-d, у AMD - AMD-Vi или просто IOMMU. Её поддерживают все актуальные серверные процессоры, но в BIOS опция бывает выключена по умолчанию, особенно на десктопных платах.
Нормальные группы IOMMU. Пробросить можно только всю группу целиком. На серверных платах видеокарта обычно сидит в своей группе вместе со своим звуковым контроллером HDMI. На многих десктопных платах в ту же группу попадают соседние слоты, USB или SATA-контроллер, и тогда пробросить карту, не отдав заодно диски хоста, не выйдет.
Чем будет показывать картинку сам хост. У серверов с этим нет проблем: консоль выводит встроенная графика контроллера удалённого управления (BMC). На рабочей станции без встроенного видео единственную карту придётся отбирать у хоста, об этом ниже.
Питание и охлаждение под карту. Игровая RTX 5090 по спецификации NVIDIA потребляет до 575 Вт, и в двухюнитовый корпус с продувом спереди назад она обычно не встаёт физически. Серверные карты с пассивным радиатором рассчитаны на поток воздуха корпуса. Чем серверные видеокарты отличаются от игровых, кроме цены, - в отдельном разборе.
Сколько процессора и памяти закладывать на сам хост виртуализации, мы считали в статье про системные требования Proxmox.
Команды ниже проверены по документации Proxmox и подходят для веток 8.2 и новее. Все действия выполняются на хосте под root.
Включите VT-d или AMD-Vi в BIOS. На ядрах 6.8 и новее (Proxmox VE 8.2 и все версии 9.x) IOMMU для Intel включается сам, для AMD он включён давно. Дописывать intel_iommu=on нужно только на старых ядрах. Проверка:
dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
В выводе должна быть строка о том, что IOMMU включён. Заодно проверьте перераспределение прерываний (interrupt remapping): dmesg | grep remapping. Без него проброс работает хуже или не работает вовсе.
Если параметры ядра всё-таки нужно поменять, сначала узнайте загрузчик командой proxmox-boot-tool status. Для GRUB параметры пишут в GRUB_CMDLINE_LINUX_DEFAULT в файле /etc/default/grub и применяют командой update-grub. Для systemd-boot - в одну строку файла /etc/kernel/cmdline, применяют командой proxmox-boot-tool refresh. Перепутать загрузчик и править не тот файл - частая причина «добавил параметр, ничего не изменилось».
pvesh get /nodes/$(hostname)/hardware/pci --pci-class-blacklist ""
Найдите свою видеокарту и посмотрите номер группы. В той же группе допустимы только функции видеокарты (звук HDMI, USB-C на некоторых моделях) и корневой порт PCIe. Всё остальное уйдёт в виртуальную машину вместе с картой.
Если карта делит группу с чужими устройствами, переставьте её в другой слот. Слоты, подключённые напрямую к процессору, почти всегда изолированы лучше слотов от чипсета. Параметр ядра pcie_acs_override=downstream принудительно дробит группы, но делает это ценой изоляции: устройства из «разрезанной» группы физически могут обращаться к памяти друг друга. Для домашней лаборатории терпимо, для сервера с чужими данными - нет.
Создайте файл /etc/modules-load.d/vfio.conf с тремя строками:
vfio
vfio_iommu_type1
vfio_pci
Модуль vfio_virqfd из старых инструкций больше не нужен: с ядра 6.2 он встроен в vfio. Строка с ним ничего не сломает, но при каждой загрузке в журнале будет сообщение «модуль не найден».
Узнайте идентификаторы производителя и устройства. У видеокарты их обычно два: сама карта и её звуковой контроллер.
lspci -nn | grep -i -e vga -e 3d -e audio
Серверные карты NVIDIA числятся в выводе как «3D controller», поэтому в фильтре есть и это слово. Идентификаторы стоят в квадратных скобках в конце строки, вида 10de:XXXX. Пропишите оба в настройки vfio и попросите загружаться раньше драйверов видеокарты:
echo "options vfio-pci ids=10de:XXXX,10de:YYYY" > /etc/modprobe.d/vfio.conf
echo "softdep nouveau pre: vfio-pci" >> /etc/modprobe.d/vfio.conf
echo "softdep nvidia pre: vfio-pci" >> /etc/modprobe.d/vfio.conf
update-initramfs -u -k all
Для AMD вместо nouveau и nvidia пишут amdgpu и radeon. После перезагрузки проверьте lspci -nnk: у карты должна появиться строка Kernel driver in use: vfio-pci. Если там по-прежнему nouveau или nvidia, драйвер хоста успел захватить карту раньше - добавьте его в /etc/modprobe.d/blacklist.conf строкой blacklist nouveau.
Единственную карту в системе, на которую хост выводит консоль, дополнительно отбирают у видеобуфера параметром ядра initcall_blacklist=sysfb_init. Старый совет video=efifb:off на свежих ядрах Proxmox не срабатывает. После этого локальный монитор хоста погаснет при загрузке, управлять сервером останется по сети.
Машину создавайте с типом q35 и прошивкой OVMF (UEFI), с диском EFI. Эти параметры задают при создании: если перевести уже установленную систему с SeaBIOS на OVMF, она перестанет загружаться.
Карту добавляют в интерфейсе (Hardware → Add → PCI Device, флажки All Functions и PCI-Express) или командой:
qm set 101 -hostpci0 01:00,pcie=on
Здесь 101 - номер ВМ, 01:00 - адрес карты без номера функции, поэтому в машину уйдут и видео, и звук. Параметр x-vga=on добавляют, если карта будет основным дисплеем гостя. Для вычислений он не нужен.
В кластере вместо адреса удобнее сопоставление ресурсов (Datacenter → Resource Mappings, появилось в Proxmox VE 8.0). Оно привязывает к ВМ карту по модели вместо адреса слота. С ним можно выдать доступ к устройству без прав root и переносить выключенную машину на узел с такой же картой.
Установите в гостевой системе обычный драйвер с сайта производителя. В Linux проверка - nvidia-smi, в Windows - «Диспетчер устройств». Картинку с проброшенной карты консоль noVNC в Proxmox не покажет: нужен монитор, подключённый к видеокарте, или удалённый доступ изнутри гостя.
Долго жившая ошибка «Code 43» в Windows с картами GeForce пришла из тех времён, когда драйвер NVIDIA намеренно отказывался работать в виртуальной машине. С драйвера 465.89 (2021 год) NVIDIA официально разрешила проброс GeForce. Если Code 43 появляется на свежем драйвере, ищите причину в настройках машины.
Под капотом Proxmox тот же KVM и QEMU, поэтому подготовка хоста совпадает: IOMMU, модули vfio, отвязка карты. На системах с ядром старше 6.8 (например, RHEL 9 и совместимые) intel_iommu=on придётся добавить самому: grubby --update-kernel=ALL --args="intel_iommu=on iommu=pt", в Debian и Ubuntu - через /etc/default/grub и update-grub.
В libvirt устройство описывают в конфигурации машины (virsh edit имя-вм):
С managed='yes' libvirt сам отвяжет карту от драйвера хоста при старте машины и вернёт при остановке. Звуковую функцию карты (function='0x1') добавляют отдельным таким же блоком. Общая настройка KVM и libvirt - в нашем руководстве по KVM.
| Симптом | Причина | Что делать |
|---|---|---|
| Машина не стартует: устройство занято | карту держит драйвер хоста | проверить lspci -nnk, добавить softdep или blacklist |
| Вместе с картой просятся диски или USB | общая группа IOMMU | другой слот; ACS override только осознанно |
| Карта AMD Radeon работает до первой перезагрузки ВМ | у ряда поколений Radeon некорректный сброс (reset bug) | модуль vendor-reset или перезагрузка хоста |
| Гость не видит всю видеопамять крупной карты | не хватает адресного окна | тип процессора host или x86-64-v2-AES с phys-bits=host, по вики Proxmox |
| Живая миграция недоступна | проброшенное устройство нельзя перенести на ходу | выключить ВМ и перенести через сопоставление ресурсов |
| Перерасход памяти хоста | память ВМ с проброшенным устройством закрепляется целиком | закладывать всю память ВМ на хосте, ballooning в настройках машины выключить |
Живую миграцию машин с разделённой картой Proxmox умеет с версии 8.4, но только для mediated-устройств вроде NVIDIA vGPU и при совместимом железе на обоих узлах. На обычный проброс это не распространяется.
Виртуальный сервер с видеокартой у хостинг-провайдера устроен так же: карту пробрасывают в вашу ВМ целиком или выдают долю через vGPU и MIG. Разница в том, чьё железо и как вы платите. Аренда разумна, когда нагрузка разовая или скачет: проверить модель, прогнать эксперимент, закрыть пиковый проект. Как только карта нужна каждый день, считать приходится всерьёз.
Ориентиры публичных тарифов российских облаков на июль 2026 года: RTX 4090 - около 85-90 ₽ в час, RTX 5090 - около 130 ₽, A100 - около 220 ₽, H100 - около 350 ₽ за карту. Помесячно виртуальный сервер с RTX 4090 стоит от 29 тысяч рублей, с H100 - от 145 тысяч. Цены меняются часто, а при предоплате на несколько месяцев провайдеры дают скидки до 50%.
Пример на двух RTX 5090. Своя машина в tower-корпусе в нашем каталоге на 11.09.2026 стоит 1 639 755 ₽. Аренда двух таких карт - 262 ₽ в час. Электричество своей машины посчитано условно: 1,5 кВт под нагрузкой по 10 ₽ за кВт·ч.
| Загрузка карт | Аренда в месяц | Электричество своей машины | Когда своя окупится |
|---|---|---|---|
| Круглосуточно (720 ч) | ~189 тыс. ₽ | ~11 тыс. ₽ | ~9 месяцев |
| 12 часов в день (360 ч) | ~94 тыс. ₽ | ~5 тыс. ₽ | ~1,5 года |
| 4 часа в день (120 ч) | ~31 тыс. ₽ | ~2 тыс. ₽ | ~4,5 года - аренда выгоднее |
Расчёт грубый, и в обе стороны. В тариф аренды уже входят процессор, память и диск, а своей машине нужны место, ИБП и время администратора. Скидка за предоплату сдвигает окупаемость дальше. Вывод устойчив к этим поправкам: при ежедневной загрузке от половины суток своя машина выгоднее за полтора-два года, при эпизодической - аренда. Как тот же выбор выглядит для локальных языковых моделей, мы разбирали в статье про сервер для локальной LLM. Общая математика аренды, колокейшна и покупки для любых серверов - в материале «колокейшн, аренда или покупка». Для расчётных задач с лицензиями по ядрам своя логика - она описана в статье про серверы под научные расчёты.
Если считать выходит в пользу своего железа, готовые сборки под это есть в разделе сервер для обучения ии.
Пробросом - нет, карта достаётся одной машине. Делить карту между несколькими ВМ умеют vGPU (нужны серверная карта из списка NVIDIA и лицензия) и MIG (только на A100, A30, H100, H200, B200 и RTX PRO 6000). Третий путь - несколько LXC-контейнеров на одном хосте, которые пользуются картой совместно.
Да. С драйвера 465.89 NVIDIA официально поддерживает GeForce в виртуальной машине при пробросе. vGPU на GeForce штатно не работает.
Да, с Proxmox VE 8.2 это делается в интерфейсе: Resources → Add → Device Passthrough. В отличие от ВМ, контейнер пользуется драйвером хоста. Драйвер ставят на хост, а внутри контейнера нужны пользовательские библиотеки той же версии. Одну карту могут использовать несколько контейнеров одновременно.
Серверу - нет, консоль выводит встроенная графика BMC. На рабочей станции проще всего оставить хосту встроенное видео процессора или дешёвую вторую карту. Отдать виртуальной машине единственную карту тоже можно, но хост останется без локального экрана.
Консоль noVNC отображает виртуальный дисплей QEMU, а изображение с проброшенной карты уходит на её собственные разъёмы. Подключите монитор к карте или настройте удалённый доступ внутри гостя.
Собираете хост под виртуальные машины с видеокартами?
Инженеры ITTELO подберут платформу под проброс: процессор и плату с нормальным разделением групп IOMMU, питание и охлаждение под нужные карты. Соберём и протестируем сервер под задачу перед отгрузкой, дадим гарантию и поддержку после продажи. На рынке серверов 11+ лет.
Готовые конфигурации: сервер виртуальных машин · +7 (800) 551-80-12 · info@ittelo.ru