Nested Virtualization: Установка VMware ESXi внутри Proxmox VE

Alexander Bazhenov
3 min readJul 29, 2016

--

Идея использования вложенной виртуализации (Nested virtualization) пришла ввиду некоторых ограничений возможностей Red Hat, на котором построен гипервизор ESXi: изнутри он является сильно видоизмененным дистрибутивом Red Hat, где любые изменения будут сброшены при следующей перезагрузке, а для того, чтобы их внести необходимо собрать vib-пакет. Но далеко не факт, что долгие попытки твиков гипервизора могут принести желаемый результат.

Другой целью могли бы быть какие-то стендовые, экспериментальные и нетривиальные задачи — все что угодно, но только не промышленные системы. Во-первых, весь потенциал ESXi будет ограничен возможностями KVM, которым по факту и является Proxmox. Во-вторых, работа такой “матрешки” может оказаться крайне нестабильной. Ну и, наконец, некоторые операционные системы могут и вовсе не запуститься (например, Windows Server 2012R2).

Для теста использованы:

Proxmox Virtual Environment 4.2–2,
VMware ESXi 6.0.0 U2
• Процессор Intel Xeon E-5 с поддержкой Intel VT-x.

После того, как установлен Proxmox необходимо подключиться по SSH, создать файл-конфигурации и перезагрузить модули:

Для Intel:

# nano /etc/modprobe.d/kvm-intel.confoptions kvm ignore_msrs=y
options kvm-intel nested=Y ept=Y
# modprobe -r kvm-intel kvm; modprobe kvm kvm-intel

Для AMD:

# nano /etc/modprobe.d/kvm-amd.confoptions kvm ignore_msrs=y
options kvm-amd nested=Y ept=Y
# modprobe -r kvm-amd kvm; modprobe kvm kvm-amd

Создаем виртуальную машину для ESXi:

OS: Other type OS
CPU: Cores 2 (минимально необходимые для ESXi)
Network Model: VMWare vmxnet3

Теперь для того, чтобы при запуске этой виртуальной машины предотвратить ошибку:

Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory

возвращаемся в консоль Proxmox и выполняем:

Для Intel:

# modprobe kvm-intel

Для AMD:

# modprobe kvm-amd

Теперь после того, как установлен ESXi, после создания и запуска в нем любой виртуальной машины натыкаемся на сообщение:

Power On virtual machine <Machine Name> You are running VMware ESX through an incompatible hypervisor. You cannot power on a virtual machine until this hypervisor is disabled. View details…

Подключаемся к консоли ESXi по SSH, открываем на редактирование файл-список виртуальных машин:

# vi /etc/vmware/hostd/vmInventory.xml

и видим в нем строчки:

<ConfigRoot>
<ConfigEntry id=”0000">
<objID>1</objID>
<vmxCfgPath>/vmfs/volumes/579b17be-abf9dd22–21c6–323338626763/<VM_name>/<VM_name>.vmx</vmxCfgPath>
</ConfigEntry>
</ConfigRoot>

где <VM_name> — имя ВМ. Закрываем файл без изменений, открываем конфиг виртуальной машины:

# vi /vmfs/volumes/579b17be-abf9dd22–21c6–323338626763/<VM_name>/<VM_name>.vmx

и добавляем в конце файла следующую строчку:

vmx.allowNested = TRUE

Сохраняем файл и запускаем ВМ.

--

--