Виртуализация GPU в Proxmox: ваша видеокарта заслуживает большего, чем просто проброс в ВМ
Компания Proxmox Server Solutions недавно анонсировала поддержку технологии виртуализации графических процессоров NVIDIA vGPU для своего гипервизора Virtual Environment (VE). Это открывает целый мир новых возможностей использования графических ускорителей в таких областях, как рендеринг, VDI, ИИ и др. Мы предлагаем вам познакомиться с новыми функциями гипервизора и оценить их производительность.
Что нам дает поддержка vGPU?
Если вы еще не знаете, зачем нужно программное обеспечение виртуальных GPU (vGPU) от NVIDIA: оно позволяет сегментировать ресурсы графического чипа и памяти видеокарты и распределить их между несколькими виртуальными машинами (ВМ). В такой конфигурации ВМ поочередно используют мощность графического процессора и выделяют под свои нужды часть видеопамяти. Этот подход позволяет задействовать GPU максимально эффективно, даже когда нагрузки гостевых ВМ различаются по интенсивности.
Предварительные сведения
Прежде чем запускать виртуализацию GPU в среде Proxmox VE (PVE), нужно будет позаботиться о нескольких вещах. Как и многие продукты для дата-центров, программное обеспечение NVIDIA vGPU не является бесплатным. Вам нужно будет купить или подписаться на пробную версию Virtual GPU Software и создать аккаунт NVIDIA Enterprise. Далее, вам обязательно понадобится совместимая с vGPU видеокарта и соответствующие драйверы, которые надо будет загрузить с портала лицензирования. Берите текущие версии драйверов Linux KVM. Итак, минимальный набор загрузок включает в себя следующее:
- vGPU Software: 18.0
- драйвер хоста: 570.124.03
- гостевой драйвер Linux: 570.124.06
- гостевой драйвер Windows: 572.60
Все примеры из этой статьи получены на сервере с видеокартой NVIDIA L40S.
Кроме того, вам понадобится выделенный (DLS) или облачный (CLS) сервер лицензирования, чтобы активировать функционал vGPU на ваших гостевых (виртуальных) машинах.
Далее убедитесь, что в UEFI (BIOS) вашего сервера включены нужные настройки виртуализации, а именно: VT-d или AMD-v, SR-IOV, Above 4G Decoding, Resizable Bar и Alternative Routing ID Interpretation (ARI) – все эти настройки должны быть включены.
Примечание: возможно, в меню UEFI вы найдете не все из этих настроек, так как некоторые могут быть скрыты от пользователя.
Наконец, убедитесь, что вы используете совместимую версию Proxmox VE. Для vGPU требуется, как минимум, версия PVE-менеджера 8.3.4 с ядром 6.18.12-8-pve или новее. Версии программных компонентов PVE можно проверить на вкладке “Summary”, выбрав нужный сервер, как показано на рисунке ниже:

Настройка хост-сервера Proxmox vGPU
Теперь, когда все готово, можно приступать к настройке сервера Proxmox VE. В веб-интерфейсе Proxmox VE кликните имя сервера в левой части экрана и выберите вкладку “Shell”. В консольном окне наберите эту команду и нажмите Enter:

apt install pve-nvidia-vgpu-helper
Это подтвердит наличие на вашем сервере установщика vGPU, который будет устанавливать все необходимые компоненты для поддержки Proxmox vGPU. После того, как сервер завершит установку скрипта или проинформирует вас, что он уже присутствует, введите еще одну команду, чтобы запустить установщик.

pve-nvidia-vgpu-helper setup
На все вопросы отвечайте “Y”, до тех пор, пока скрипт не выполнится и консольное окно не вернется в исходное состояние. Выполните быстрый перезапуск сервера путем нажатия кнопки “Reboot” на вкладке “Summary” или наберите команду reboot в консольном окне вкладки “Shell” и нажмите Enter.
Затем нужно загрузить на сервер драйвер хоста NVIDIA vGPU. После того как сервер завершит перезагрузку, скопируйте на него драйвер хоста с помощью утилит SSH или SCP, например, WinSCP.
Примечание: если вы уже загрузили все драйверы в виде zip-архива, его нужно сначала распаковать и в папке “Host_Drivers” выбрать файл “.run”.
Поместите этот файл в директорию “/home” на сервере и посредством следующих команд подготовьте установщик к запуску:
cd /home
chown root NVIDIA-Linux-x86_64-570.124.03-vgpu-kvm.run
chmod +X NVIDIA-Linux-x86_64-570.124.03-vgpu-kvm.run
./NVIDIA-Linux-x86_64-570.124.03-vgpu-kvm.run —dkms
Примечание: здесь замените “NVIDIA-Linux-x86_64-570.124.03-vgpu-kvm.run” на фактическое имя драйвера, который вы загрузили. Вы можете воспользоваться командой “ls”, чтобы вывести на экран имя файла, как только он помещен в директорию “/home”.

Теперь, когда драйвер установлен на сервер, мы всего в нескольких шагах от завершения настройки конфигурации хоста Proxmox vGPU. Прежде чем мы сможем обозначить видеокарту как устройство, которое может быть поделено между виртуальными машинами, мы должны включить функцию Single Root I/O Virtualization (SR-IOV). NVIDIA определяет эту функцию как “технологию, которая позволяет физическому устройству PCIe представлять себя через шину PCIe несколько раз. Эта технология позволяет сделать несколько виртуальных экземпляров (инстансов) этого устройства с собственными отдельными ресурсами.” Так как SR-IOV является необходимым компонентом для функционирования vGPU на современных видеокартах, включите эту функцию посредством следующей команды:
systemctl enable —now pve-nvidia-sriov@ALL.service

Теперь, наконец, мы можем разметить ресурсы GPU, чтобы аккуратно распределить их между ВМ. В веб-интерфейсе сервера Proxmox VE кликните “Datacenter” в левом верхнем углу окна, прокрутите список вниз и выберите пункт “Resource Mappings”.

Кликните “Add” в разделе “PCI Devices” и заполните поле “Name:” в следующем окне, введя туда имя видеокарты, которую вы размечаете.

Далее, включите флажок (чек-бокс) “Use with Mediated Devices” и убедитесь, что меню выпадающего списка “Mapping on Node” содержит сервер с размечаемой видеокартой. Прокрутите список устройств, подтверждающий, что в ID всех устройств в графе “Vendor” указано “NVIDIA Corporation”. Если это так, включите флажок в левом верхнем углу таблицы, чтобы выбрать все устройства; в противном случае выберите только те устройства, у которых в графе “Vendor” указано “NVIDIA Corporation”.
Примечание: если в вашей системе установлено несколько видеокарт, вы можете воспользоваться командой “lspci” во вкладке “Shell” на соответствующем сервере, чтобы определить ID, которые идут с каждой видеокартой.
Закончив выбор устройств, нажмите кнопку “Create” в правом нижнем углу окна, чтобы подтвердить свой выбор. Теперь ваша видеокарта NVIDIA готова к нарезке на виртуальные графические процессоры (vGPU) для гостевых систем вашего сервера Proxmox VE.
Обслуживание гостей – назначение vGPU на виртуальные машины
Мы можем приступать к назначению и использованию vGPU на наших виртуальных машинах. Начните с создания новой виртуальной машины или используйте существующую ВМ. В данном примере мы будем использовать виртуальную машину с операционной системой Windows Server 2025.
В веб-интерфейсе сервера Proxmox VE выключите виртуальную машину любым подходящим вам способом (через консоль noVNC, меню Power гостевой системы и т.д.) и кликните на этой гостевой машине вкладку “Hardware”.

В меню выпадающего списка, которое появляется по нажатию кнопки “Add”, выберите пункт “PCI Device”.

В окне “Add: PCI Device” выберите в поле “Device:” имя, которое вы назначили размечаемой видеокарте.

Далее кликните поле “MDev Type:” и просмотрите список представленных опций типов связанных устройств. Обратите внимание, что в обозначении каждой опции есть суффикс из числа и буквы. Число показывает количество видеопамяти, выделяемое гостевой машине (в гигабайтах), а буквы “A”, “B” и “Q” обозначают типовой сценарий использования vGPU:
- Q – виртуальная рабочая станция с драйвером RTX Enterprise (требуется лицензия RTX vWS);
- B – виртуальный десктоп (требуется лицензия NVIDIA Virtual PC или RTX vWS license);
- A – виртуальное приложение (требуется лицензия NVIDIA Virtual Applications).
Примечание: подробную информацию о различных профилях vGPU и соответствующих лицензиях можно найти на сайте NVIDIA.

В данном примере мы использовали профиль “NVIDIA L40S-12Q”. После выбора желаемого типа связанного устройства завершите процедуру назначения vGPU – включите флажок “PCI-Express” и нажмите синюю кнопку “Add”.

Теперь виртуальная машина имеет свой назначенный vGPU, но нам еще нужно установить драйвер гостевой системы и лицензионный токен. Включите виртуальную машину и войдите в систему.

После входа в систему перенесите гостевой драйвер NVIDIA vGPU, который вы заранее приобрели на портале лицензирования, на ВМ любым удобным для вас способом (SMB, SCP, прямая загрузка и т.д.). Или – вы можете создать файл виртуального CD-ROM (.iso) с драйвером и записать его на накопитель вашего сервера PVE с помощью, например, программы ImgBurn, чтобы одновременно развертывать несколько гостевых систем с vGPU.
Запустите двойным кликом исполняемый файл установщика драйвера и следуйте инструкциям по установке в появившемся окне меню.

Поместите драйвер в директорию по умолчанию в поле “Extraction path:” и выберите вариант установки “Express”, когда будет предложена соответствующая опция.


Как только установка драйвера будет завершена, нажмите “CLOSE” для выхода из меню установщика.

Далее нам нужно активировать лицензию vGPU на гостевой машине. Способ активации может значительно различаться в зависимости от операционной системы и от того, выбрали вы выделенный или облачный сервер лицензирования. Следуйте указаниям инструкций NVIDIA по активации клиентов License System Quick Start Guide и Client Licensing User Guide конкретно для вашего случая.
Мы использовали облачный сервер лицензирования и получили файл токена, который нужно перенести на гостевую машину для активации лицензии. Переместите этот файл на гостевую машину и скопируйте его в папку “C:\Program Files\NVIDIA Corporation\vGPU Licensing\ClientConfigToken”.

Далее, для завершения процесса активации, необходимо перезагрузить гостевую машину.

Выполнив все шаги по настройке конфигураций хоста и гостевых машин, вы можете запускать графические программы и приложения. После перезагрузки не забудьте включить протокол RDP (Remote Desktop Protocol) или установить на гостевые машины свое любимое программное обеспечение удаленного рабочего стола, чтобы наслаждаться преимуществами удаленной картинки с GPU-ускорением.
Запускаем машину – тестирование Proxmox vGPU
Теперь, когда у нас есть несколько виртуальных серверов с виртуальными GPU, давайте их запустим. За каждой ВМ закреплено восемь виртуальных процессоров (vCPU) Intel Xeon Platinum 8580 (4 ядра/ 8 потоков), 32 ГБ регистровой памяти с ECC DDR5 4800 MT/с и vGPU NVIDIA L40S-12Q (профиль виртуальной рабочей станции с 12 ГБ видеопамяти). Полная конфигурация ВМ представлена на рисунке ниже.



