Nested Virtualization: Установка VMware ESXi внутри Proxmox VE
Идея использования вложенной виртуализации (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
Сохраняем файл и запускаем ВМ.