Перейти к основному содержанию

VMware PCI Passthrough — проброс USB с гипервизора на виртуальную машину

PCI Device Passthrough

Задача — пробросить USB порт гипервизора на виртуальную машину. Имеем сервер HP Proliant DL360 Gen9 в качестве гипервизора.

Первая неявная проблема: у этого сервера один USB контроллер, если мы его пробросим на виртуальную машину, то не сможем подключить к серверу клавиатуру с мышкой. С точки зрения системного администрирования и эксплуатации такой подход неприемлем. Поэтому мы просто купили отдельный PCI USB контроллер:

usb

usb

usb

Выключаем гипервизор:

usb

Снимаем крышку:

usb

Вытаскиваем переходник для PCI плат:

usb

Вставляем в него наш PCI USB контроллер. Возвращаем на место переходник для PCI плат:

usb

Собираем сервер, включаем. Присоединяем к USB порту нового контроллера то устройство, которое будем прокидывать на виртуальную машину.

usb

Дожидаемся загрузки сервера. Поскольку у нас HP Proliant, то смотрим через ILO в разделе System Information > Device Inventory адрес нашего устройства:

usb

Адрес показывается при наведении мышкой. Bus 8, Device 0, Function 0.

В vCenter кликаем на наш гипервизор. Configure > PCI Devices.

usb

Кликаем на карандашик, открывается окно со списком всех PCI устройств:

usb

Находим устройство 8-0-0 и ставим галку. Можно и по названию определить, но если у вас несколько одинаковых USB контроллеров, то трудно угадать нужный. Сохраняемся.

1 device will become available when this host is rebooted

usb

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

usb

После перезагрузки гипервизора PCI устройство можно прокидывать на виртуальную машину.

Выбираем виртуалку, нажимаем Edit Settings:

usb

Добавляем новое устройство PCI Device:

usb

Add:

usb

Если у нас только один контроллер, то в списке от подставляется автоматически:

usb

Для работы PCI устройства необходимо зарезервировать ОЗУ. Кликаем Reserve all memory. Один аларм пропадает:

usb

Читаем предупреждение о том, что на виртуалке с прокинутым PCI устройством нельзя делать некоторые вещи: нельзя ставить виртуалку на паузу, мигрировать на другой хост, использовать снапшоты.

Теперь у нас есть PCI устройство:

usb

Примечание

Если вы попытаетесь на такую машину поставить винду, то получите в бубен:

usb

В этом случае удаляете PCI устройство из виртуалки, ставите винду, снова прокидываете устройство на виртуалку. Вот такая канитель.

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

В целом, я недоволен этим сервисом. В случае перезагрузки машины есть большая вероятность, что гипервизор упадёт. От чего это зависит - непонятно, ясно только, что падения происходят только на Windows машинах. С linux проблем замечено не было. После нескольких неудачных перезагрузок всё может нормально подняться.

 

 

 

Похожие материалы

HPE ProLiant MicroServer Gen10 — обновление ESXi 7.0.2

Привет, у меня наконец-то появилось время на обновление домашнего сервера HPE ProLiant MicroServer Gen10, на котором установлен гипервизор ESXi 6.7 Update 3. Будем обновлять его до версии ESXi 7.0.2.

Тестируем 10G SFP+ платы HP и Mellanox на серверах HP Proliant DL360 Gen9

Задача - проверить пропускную способность 10G сети между виртуальными машинами на разных гипервизорах.