30.6.8. Сопоставление устройств
При работе с локальными ресурсами (например, устройства PCI) прямое использование их необработанных адресов или идентификаторов может вызывать следующие проблемы:
при использовании HA на разных узлах могут существовать устройства с одинаковыми идентификаторами или путями, и при перемещении ВМ между узлами HA может ошибочно назначить неподходящее устройство, что приведёт к нарушению конфигурации;
замена или обновление оборудования может изменить идентификаторы или пути устройств, поэтому потребуется проверить все назначенные устройства для подтверждения их корректности.
Для устранения этих проблем можно настроить сопоставление ресурсов кластера, которое:
Создание сопоставления:
На вкладке → в соответствующем разделе (Устройства PCI или USB-устройства) нажать кнопку Добавить:
В открывшемся окне указать название сопоставления, выбрать узел и устройство и нажать кнопку Создать:
Добавление сопоставления PCI:
Добавление сопоставления USB:
Нажать кнопку

, расположенную в строке с созданным сопоставлением, и в открывшемся окне добавить сопоставление устройству на другом узле:
Результат добавления сопоставления STICK:
Для создания сопоставленного устройства можно использовать команду:
# pvesh create /cluster/mapping/<тип> <опции>
где <тип> — это тип оборудования (pci или usb), а <опции> — сопоставления устройств и другие параметры конфигурации.
Следует обратить внимание, что конфигурация должна включать все идентифицирующие свойства устройства. Это позволяет проверять неизменность оборудования и гарантировать передачу корректного устройства.
Пример добавления сопоставления (device) PCI-устройства с разными путями на узлах кластера:
# pvesh create /cluster/mapping/pci --id device \
--map node=pve01,path=0000:01:00.0,id=0002:0001 \
--map node=pve02,path=0000:02:00.0,id=0002:0001
Параметр
map должен быть указан для каждого узла, для которого это устройство должно быть сопоставлено.
Каждому сопоставлению на узле может соответствовать только одно USB-устройство.
Одно физическое PCI-устройство может предоставлять несколько виртуальных устройств на узле. Если такое устройство назначено гостевой системе, при запуске ВМ автоматически выбирается первое свободное устройство из сопоставленных. Порядок проверки устройств соответствует порядку их указания в конфигурации, это позволяет реализовать произвольные политики распределения (например, приоритизацию определенных устройств).
Назначить сопоставленное устройство ВМ можно в веб-интерфейсе (см.
Проброс USB и
Проброс PCI(e)), либо в командной строке:
устройство PCI:
# qm set <vmid> -hostpci0 <сопоставление>
USB-устройство:
# qm set <vmid> -usb0 <сопоставление>
где <vmid> — это идентификатор ВМ, а <сопоставление> — название сопоставления.
Для создания сопоставлений необходима привилегия Mapping.Modify на /mapping/<тип>/<сопоставление> (где <тип> — это тип устройства, <сопоставление> — название сопоставления). Для использования сопоставлений необходимо привилегия Mapping.Use на /mapping/<тип>/<сопоставление> (в дополнение к обычным привилегиям для редактирования конфигурации).