понедельник, 6 мая 2013 г.

vagrant + libvirt + nested virtualization

Уже расписывал как хорош vagrant и как он становится на два порядка лучше с libvirt. Но есть ньюанс - в либвирте столько функций, что плагин для вагранта еще пилить и пилить. Сегодня добавлена одна из самых вкусных - вложенная виртуализация.
Для тех ,кто не в теме: это возможность запускать виртуальные машины внутри виртуальной машины. Я проверял на 3 уровнях вложенности - работает. Хотя больше двух и не надо.
Вся эта магия доступна на процессорах с поддержкой набора команд vmx от интела. Подробности расписаны тут.

Для начала надо включить опцию для модуля kvm_intel

rmmod kvm_intel
mod_probe kvm_intel nested=1


И в опциях vagrant-libvirt добавить libvirt.nested = true
Получится примерно так:

config.vm.provider :libvirt do |libvirt|
    libvirt.driver = "qemu"
    libvirt.host = "example.com"
    libvirt.connect_via_ssh = true
    libvirt.username = "root"
    libvirt.storage_pool_name = "default"
    libvirt.nested = true
  end

Теперь все новые виртуальные машины будут создаваться с поддержкой встроенной виртуализации.
Проверить можно посмотрев опции процессора вирт машины cat /proc/cpuinfo | grep -i vmx
Если нашлось слово vmx - значит можно запускать виртуалку внутри виртулки. Или подключаться использую virt-manager или vagrant c vagrant-libvirt и запускать используя эти инструменты.

Комментариев нет: