meta data for this page
  •  

2022-11-07 ESXi как виртуальная машина в Proxmox

Так как мой сервер не поддерживает ESXi 7 на железе из-за старого raid контроллера, я был вынужден в качестве стенда использовать следующую конфигурацию:

  • ESX 6.7 на железном сервере;
  • 1 x vCenter 6.7 для управления железным сервером, который включался эпизодически для проведения обслуживания, например клонирования или переноса виртуальных машин;
  • 1 x vCenter 7.0 для управления виртуальным стендом ESX 7.0;
  • 3 x ESX 7.0 в виде виртуальных машин для настройки vSAN;
    • виртуальные рабочие столы размещаются внутри вложенного ESXi кластера

Недостатки данного решения заключаются в том что esxi без vcenter не обладает всем необходимым функционалом, например vMotion, не удобен в использовании и не поддерживает программный RAID.К сожалению официально esxi запускается только внутри другого esxi или Workstation. Не официально - запускается везде, но не всегда данная конфигурация работает с vCenter ESXi on Unraid. В лабораторный сервер я поставил “диски - остатки”, которые не собираются ни в один приличный RAID, а контроллер не в состоянии объединить несколько raid групп в пул. Поэтому я решил рискнуть и попробовать запустить esxi поверх proxmox и объединить диски в ZFS.

В качестве базового дистрибутива я взял Альт Сервер Виртуализации, который предлагает тот-же proxmox но из проверенных отечественных источников, и как мне кажется с критичными обновлениями, которые больше походят на ветку Proxmox Enterprise. Установка проходит достаточно тривиально, я не снял фотографий.

Основные моменты которые нельзя делать на автопилоте:

  1. Добавить в vmbr0 физический интерфейс сети управления;
  2. Назначить на vmbr0 IP адрес сети управления и нажать кнопку “ДОБАВИТЬ”, иначе IP адрес не назначится;
  3. Установить Hostname лучше на этапе установки.
  4. Ни в коем случае не делать apt-get dist-upgrade из веб-консоли pve. Сессия рвется, транзакция apt не завершается, в системе образуются дубликаты пакетов и при попытки их удалить - удаляются и нужные и ненужные пакеты, в итоге все падает.

В Альте по умолчанию включена поддержка вложенной виртуализации, поэтому создание машины с esxi сводится к банальному выбору правильных параметров в веб-интерфейсе:

  • OS
    • Type: Linux
    • Version: 5.x – 2.6 Kernel
  • System
    • Graphic card: Default
    • SCSI Controller: VMware PVSCSI
    • BIOS: SeaBIOS
    • Machine: q35
  • Hard Disk
    • Bus/Device: SATA
    • SSD emulation: Check
    • Discard: Check
  • CPU
    • Cores: 4
    • Sockets: 2
    • Type: host
    • Enable NUMA: Check
  • Memory
    • Memory (MiB): 4 ГБ минимум. Для запуска vCenter >16;
    • Ballooning Device: Uncheck
  • Network Tab
    • Model: VMware vmxnet3

Я не нашел простого механизма с помощь которого можно было бы создать в Proxmox аналог persistent тома, который мог бы выступить общим диском для двух виртуальных машин, поэтому для данной цели мне пригодилась небольшая виртуальная машина с XigmaNAS. Подключение к ней производится по протоколу iSCSI.

Дополнительно я включил “опасный режим” чтобы оптимизировать использование ресурсов процессора:

  1. Отключил защиту от spectre / meltdown, добавив в параметры загрузки в файле /etc/defaults/grub фразу mitigations off;
  2. Отключил контроль четности в zfs, командой: zfs set checksum=off tank;
  3. Ограничил ACR кэш для ZFS минимальным объемом в 2 ГБ echo "$[2 * 1024*1024*1024]" >/sys/module/zfs/parameters/zfs_arc_max;
  4. Не смотря на то, что в esxi не поддерживается balooning, мне удалось достичь отличных показателей экономии оперативной памяти за счет модуля Linux - KSM sharing, который дедуплицирует используемые страницы памяти, для этого его пришлось активировать омандой systemctl enable ksmtuned --now;

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

Можно отказаться от запуска vCLS полностью, переведя кластер в режим retreat.

Поэтому для тестирования DRS, HA и vSAN по прежнему необходимо использовать ESXi внутри ESXi. Возможно более оптимальным способом будет являться создание RAID внутри виртуальной машины, запущенной на ESXi, так как виртуальный кластер все равно требует общего хранилища с конкретным доступом, которое proxmox обеспечить не может.