Resource Mappings в Proxmox: правильный проброс PCI-устройств

virtualizationhowto 18.09.2026 21 просмотров 1 мин
Resource Mappings в Proxmox: правильный проброс PCI-устройств

Многие владельцы домашних лабораторий начинают экспериментировать с ИИ и используют такие вещи, как проброс GPU на своих хостах Proxmox. Но проброс предназначен не только для GPU. Его можно применять для сетевых адаптеров, контроллеров хранения и других типов оборудования в домашней лаборатории, где требуется, чтобы ВМ имела прямой доступ к оборудованию. Долгое время проброс настраивался так, как это делает большинство при начале работы. Сначала находится PCI-адрес устройства на хосте Proxmox. Затем этот адрес добавляется напрямую в ВМ, и настройка завершается. Это работает. Однако при рассмотрении проброса с точки зрения реального кластера Proxmox Resource Mappings становятся гораздо более осмысленными. Что это такое и как он настраивается?

Сложности PCI-проброса

В течение долгого времени, как уже упоминалось, проброс настраивался так, как это делают большинство. Проблема такой конфигурации в том, что она привязана к конкретному оборудованию на конкретном узле Proxmox.

Таким образом, при таком подходе нечто подобное выглядит нормально:

Но 0000:01:00.0 на самом деле означает не «мой GPU», а «PCI-устройство, расположенное по этому конкретному адресу на сервере». Это важно понимать, особенно если используется несколько серверов Proxmox.

Предположим, на pvehost01 и pvehost02 установлены GPU, и эти устройства находятся по разным аппаратным адресам, например:

  • pvehost01 – 000:01:00.0
  • pvehost02 – 000:03:00.0

Что такое Resource Mappings?

Если ВМ с идентификатором VM100 имеет проброшенное PCI-устройство на pvehost01, а затем ВМ перемещается на pvehost02, этот аппаратный адрес больше не работает на pvehost02, поэтому проброс завершится неудачей. Resource Mappings позволяют настроить выделение ресурсов для VM100 следующим образом:

Конфигурация Resource Mapping для AI-GPU затем содержит сведения об аппаратных адресах на каждом физическом хосте Proxmox:

Это позволяет удалить часть конфигурации хоста из конфигурации ВМ Proxmox. Вместо указания виртуальной машине точного PCI-адреса можно создать «логический ресурс». Это может быть что-то вроде GPU, AI-GPU, HBA или 10G-NIC. Затем в Proxmox указывается, какой физический адрес устройства предоставляет этот ресурс на каждом узле.

Что на самом деле делают Resource Mappings в Proxmox

С технической точки зрения Resource Mappings в Proxmox создают «уровень абстракции» между виртуальной машиной и физическим хостом-гипервизором. Вместо создания низкоуровневых PCI-адресов и их проброса в ВМ, например:

Имеется этот уровень абстракции

Благодаря этому ВМ не нужно знать, что она находится по этому аппаратному адресу. Ей достаточно запросить ресурс «AI-GPU» или любой другой псевдоним, настроенный в Resource Mappings.

Proxmox связывает сопоставление с физическим оборудованием на узлах, где находится ресурс. Это гораздо более удачная модель для кластера Proxmox, когда у вас есть устройства, которые пробрасываются. Создание проброса на фактический адрес оборудования означает, что вы по сути ограничили эту ВМ возможностью использовать это оборудование только на одном хосте. Возможно, у вас только один хост с GPU, и это нормально. Но если у вас есть другой хост с GPU, вы можете воспользоваться сопоставлением ресурсов и указать оба устройства.

Создание сопоставления ресурсов

Сопоставления ресурсов доступны в веб-интерфейсе Proxmox в меню узла Datacenter > Resource Mappings. Как показано ниже, в сопоставления ресурсов можно добавлять PCI-устройства и USB-устройства.

Переход к сопоставлениям ресурсов в представлении датацентра Proxmox.
Переход к сопоставлениям ресурсов в представлении датацентра Proxmox

Открывшееся окно — это окно Create: PCI mapping, в котором выбирается устройство для создания сопоставления, а также «Name» (имя), на которое будет ссылаться ВМ.

Добавление нового сопоставления ресурсов PCI-устройства.
Добавление нового сопоставления ресурсов PCI-устройства

Возможно, вы задаётесь вопросом, что именно означает флажок Live Migration Capable «Experimental». Он даёт больше, чем просто сопоставление эквивалентного PCI-оборудования между узлами, особенно для реализованной высокой доступности Proxmox.

При поддержке со стороны оборудования и драйверов Proxmox потенциально может перенести состояние проброшенного PCI-устройства и работающей ВМ, подключённой к нему, а затем переподключить ВМ к эквивалентному сопоставленному устройству на целевом узле.

Однако это не та опция, которую можно просто включить, после чего любая ВМ с GPU сможет мигрировать на другой узел. Пробрасываемое устройство и его драйвер должны поддерживать VFIO. Для этого требуется поддержка как со стороны оборудования, так и со стороны драйвера. Кроме того, эта функция «экспериментальная», поэтому результат её работы может варьироваться.

Добавление устройства в виртуальную машину

Ниже показано, что после выбора устройства для проброса и желаемого имени оно отображается в списке сопоставлений ресурсов:

После создания тестового сопоставления ресурсов.
После создания тестового сопоставления ресурсов

После создания сопоставления ресурсов при переходе в Add > PCI Device для вашей ВМ устройство будет отображаться в списке устройств для проброса. Обратите внимание, что теперь вместо низкоуровневого адреса устройства указывается понятное имя.

Добавление сопоставления ресурсов к виртуальной машине Proxmox.
Добавление сопоставленных ресурсов в виртуальную машину Proxmox

Сопоставления ресурсов упрощают конфигурации

Это ещё одно очевидное преимущество сопоставлений ресурсов. Вероятно, вам приходилось просматривать множество конфигураций ВМ Proxmox, где встречалось нечто подобное:

Через шесть месяцев вы уже не помните, какое устройство каким является, судя по идентификаторам ресурсов. И тогда возникают вопросы: 03:00.0 — это GPU или сетевая карта, а 04:00.0 — это 10 GbE NIC или GPU?

Можно воспользоваться поиском и  узнать, какие команды выполнять, например lspci, и определить, какой карте соответствует какой адрес ресурса, но это трудоёмко и неудобно. С помощью сопоставлений ресурсов можно создавать имена, отражающие назначение оборудования:

Таким образом, это позволяет превратить этот малопонятный аппаратный адрес в нечто, что гораздо легче понять. Любая область вашей инфраструктуры, которую можно сделать более интуитивной, сэкономит время на управление и администрирование.

Живая миграция не включается волшебным образом с помощью сопоставлений ресурсов

Мы уже немного касались этого, но это важный нюанс, на котором нужно остановиться подробнее. Сопоставление ресурсов не позволяет волшебным образом выполнять живую миграцию ВМ на другой хост Proxmox, пока она привязана к сопоставлению ресурсов.

Сопоставления ресурсов — это абстракции для этого аппаратного адреса. Оборудование физически существует только внутри одного сервера. Поэтому тот факт, что вы создали сопоставление ресурсов, не означает, что вы можете просто автоматически перенести работающую ВМ с физического GPU на узле один на другой узел.

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

Команды для диагностики, которые нужно знать и запускать

Если у вас есть ВМ, которая не запускается после перехода с прямого PCI-устройства на сопоставление ресурсов, вы можете выполнить несколько команд для диагностики. Первая команда, которую я бы, вероятно, запустил, это:

Выполнение команды lspci -nn на узле Proxmox.
Выполнение команды lspci nn на узле proxmox

Несколько других вещей, которые стоит проверить:

IOMMU:

Проверка драйвера:

Также можно проверить конфигурацию сопоставления:

Я также проверяю конфигурацию ВМ, которая покажет настроенные устройства:

Итак, в конфигурации ВМ с вашим сопоставлением ресурсов вы должны увидеть примерно следующее:

Общая диагностика проброса должна включать обычных подозреваемых. Какие они? Группы IOMMU, привязка VFIO, настройки BIOS, поведение сброса устройства и проверка того, что хост не перехватил этот процесс.

Ниже мы добавляем драйверы в черный список, чтобы хост Proxmox не перехватывал их.

Блокировка использования видео хостом Proxmox.
Добавление видео в черный список для предотвращения использования хостом Proxmox

Кроме того, в BIOS необходимо убедиться, что IOMMU включен на сервере:

Включение IOMMU в BIOS мини-ПК.
Включение IOMMU в BIOS сервере

Заключение

Проброс PCI — это способ предоставить виртуальной машине прямой доступ к GPU, сетевой карте, HBA или другому физическому устройству, подключенному к хосту Proxmox. Как мы знаем, можно жестко прописать PCI-адреса для проброса устройств, и это определенно работает. Но это делает оборудование, которое пробрасывается, очень неинтуитивным. Функция сопоставления ресурсов Proxmox — лучший способ сделать это, поскольку она дает логический ресурс, абстрагирующий необходимость знать этот низкоуровневый аппаратный адрес.

Читайте про Свой умный дом локально:
🌐 Сайт
📱 Телеграм
📰 Дзен

Даже просто подбор, перевод и оформление статей требуют времени. А самостоятельный обзор устройств требует еще и финансовых вложений. Если Вы хотите больше обзоров, Вы можете помочь автору.

Добавить комментарий

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