Nested virtualisation

У intel (да и наверное у AMD) есть режим работы модуля ядра как Nested. Он позволяет пробрасывать процессор в ВМ as-is, не эмулируя команды.

Включается достаточно просто в три команды

  • Проверяем включено ли у нас (если Y - всё хорошо, если N - идём дальше)
  # cat /sys/module/kvm_intel/parameters/nested
  • Если модуль не вкомпилен в ядро - можно написать в /etc/modules.d/: kvm_intel nested=1, если вкомпилен, то просто передаём ядру в cmdline: kvm_intel.nested=1 и перезагружаемся
  • В виртуалках, в которых хотим nested меняем блок <cpu> на
<cpu mode='host-passthrough' check='none'/>

Останавливаем полностью виртуалку, запускаем её снова и проверяем, что у нас внутри такой же процессор, как и снаружи.