Сквозная передача NVMe SSD в виртуальную машину VMware

13.03.2023 | Серверы

 

Технология ввода-вывода VMware VMDirectPath (простыми словами, сквозная передача или проброс шины PCI) открывает доступ гостевым ОС хоста ESXi к шинной периферии, включая NVMe SSD. Передача NVMe виртуальным машинам потенциально поднимает производительность в приложениях. Есть и потери: включение VMDirectPath делает недоступными для VM нескольких важных функций vSphere, таких как Suspend и Resume, Snapshots, Fault Tolerance и vMotion. Но для серверов под VMware других вариантов насладиться NVMe нет – если речь не идет о гиперконвергентных кластерах с vSAN.

Для использования VMDirectPath I/O следует прежде всего убедиться, что устройства NVMe SSD аппаратно поддерживаются серверной платформой. У BIOS сервера должна быть поддержка технологии виртуализации Intel Directed I/O (VT-d) или AMD I/O. Процессоры – не ниже Intel Xeon Scalable processors (Gen 1…4) или AMD EPYC processors (Gen 2…4).

Тестовый полигон

Им будет типичный односокетный сервер на AMD EPYC:

  • Платформа ASUS RS500A-E10-RS12-U
  • Процессор AMD EPYC 7443P 24 cores @2.85GHz
  • 8 x DDR4-3200 32GB reg Kingston {KSM32RS4/32MFR}
  • 240GB M.2 NVMe SSD Kingston DC1000B {SEDC1000BM8/240G} - на этот диск будет установлен ESXi 7.0 U3
  • 4 x 1.92TB U.2 Kingston DC1500M – эти диски с использованием VMDirectPath I/O мы отдадим в гостевую ОС.

Выбор платформы не случаен. Она поддерживает до 12 NVMe SSD формата U.2, является мощной и в то же время относительно недорогой. Один процессор AMD EPYC с числом ядер от 16 до 64 и 128 линиями PCIe Gen 4 обеспечивает вычислительными ресурсами насыщенную виртуализированную инфраструктуру. Такие узлы удобно использовать в составе гиперконвергентных кластеров HCI (включая vSAN). Но в этот раз задача скромнее.

Настройка UEFI

В BIOS сервере, в параметрах CSM, переходим в режим UEFI – чтобы загрузиться с NVMe.

Порты PCIe NVMe многоцелевые. В серверах Intel Xeon, если включить Intel VMD (устройство управления томами) в настройках UEFI, порт PCIe будет контролироваться функцией VMD. Следует настроить эти порты как порт PCIe и отключить VMD в опции настройки UEFI. Для серверов на процессорах AMD не нужно включать параметр UEFI, поэтому для нашего сервера этот шаг можно пропустить.

Гипервизор и гостевая ОС

Устанавливаем ESXi 7.0 U3

Заходим в клиент хоста

Создаем новую виртуальную машину и устанавливаем на нее ОС. Мы, например, установили Windows Server 2022.

Проверяем установленную VM

Настройка сквозной передачи NVMe

В навигационном меню переходим в Manage, а затем в закладку Hardware. В списке находим NVMe диски, устанавливаем маркер напротив каждого диска и нажимаем Toggle passthough

Статус дисков меняется на активный

Переходим к VM в режиме редактирования

Добавляем PCI device

В данном случае мы добавили четыре NVMe SSD. Получили предупреждение, упоминавшееся выше – о потере некоторых функций по восстановлению и перемещению VM.

При назначении устройства виртуальная машина должна иметь резервирование памяти. Это означает, что необходимо настроить резервирование памяти для устройств NVMe, установить размер резервирования, равный объему памяти. Возможно либо выбрать «Зарезервировать всю гостевую память» («Все заблокировано»), либо указать тот же размер в параметре «Резервирование» и сохранить конфигурацию.

Дело сделано. Проверяем что получилось. Запускаем нашу виртуальную машину и смотрим результат

 

Теперь устройства NVMe успешно настроены для сквозного подключения к виртуальной машине, и вы можете получить доступ к ним и использовать их в качестве реальных дисков в виртуальной ОС.