Задача — пробросить USB порт гипервизора на виртуальную машину. Имеем сервер HP Proliant DL360 Gen9 в качестве гипервизора.
Первая неявная проблема: у этого сервера один USB контроллер, если мы его пробросим на виртуальную машину, то не сможем подключить к серверу клавиатуру с мышкой. С точки зрения системного администрирования и эксплуатации такой подход неприемлем. Поэтому мы просто купили отдельный PCI USB контроллер:
Выключаем гипервизор:
Снимаем крышку:
Вытаскиваем переходник для PCI плат:
Вставляем в него наш PCI USB контроллер. Возвращаем на место переходник для PCI плат:
Собираем сервер, включаем. Присоединяем к USB порту нового контроллера то устройство, которое будем прокидывать на виртуальную машину.
Дожидаемся загрузки сервера. Поскольку у нас HP Proliant, то смотрим через ILO в разделе System Information > Device Inventory адрес нашего устройства:
Адрес показывается при наведении мышкой. Bus 8, Device 0, Function 0.
В vCenter кликаем на наш гипервизор. Configure > PCI Devices.
Кликаем на карандашик, открывается окно со списком всех PCI устройств:
Находим устройство 8-0-0 и ставим галку. Можно и по названию определить, но если у вас несколько одинаковых USB контроллеров, то трудно угадать нужный. Сохраняемся.
1 device will become available when this host is rebooted
В списке доступных устройств появляется наш контроллер. Но для его работы нужна перезагрузка. перезагружаем хост:
После перезагрузки гипервизора PCI устройство можно прокидывать на виртуальную машину.
Выбираем виртуалку, нажимаем Edit Settings:
Добавляем новое устройство PCI Device:
Add:
Если у нас только один контроллер, то в списке от подставляется автоматически:
Для работы PCI устройства необходимо зарезервировать ОЗУ. Кликаем Reserve all memory. Один аларм пропадает:
Читаем предупреждение о том, что на виртуалке с прокинутым PCI устройством нельзя делать некоторые вещи: нельзя ставить виртуалку на паузу, мигрировать на другой хост, использовать снапшоты.
Теперь у нас есть PCI устройство:
Примечание
Если вы попытаетесь на такую машину поставить винду, то получите в бубен:
В этом случае удаляете PCI устройство из виртуалки, ставите винду, снова прокидываете устройство на виртуалку. Вот такая канитель.
Обычная загрузка Windows тоже может привести к такой ошибке. В этом случае вынимаете все устройства из USB контроллера, вставляете в него обычную флешку. Винда загрузится. Потом можно вынимать флешку и втыкать ваши устройства.
В целом, я недоволен этим сервисом. В случае перезагрузки машины есть большая вероятность, что гипервизор упадёт. От чего это зависит - непонятно, ясно только, что падения происходят только на Windows машинах. С linux проблем замечено не было. После нескольких неудачных перезагрузок всё может нормально подняться.