Как включить Nested virtualization в KVM на CentOS 7 / RHEL 7
Nested virtualization (Вложенная виртуализация) означает настройку среды виртуализации внутри виртуальной машины. Другими словами, мы можем сказать, что вложенная виртуализация — это функция гипервизора, которая позволяет нам устанавливать и запускать виртуальную машину внутри виртуального сервера с помощью аппаратного ускорения от гипервизора (хоста).
В этой статье мы обсудим, как включить вложенную виртуализацию в KVM на CentOS 7 / RHEL 7. Я предполагаю, что вы уже настроили гипервизор KVM. Если вы не знаете, как установить и настроить гипервизор KVM , обратитесь к следующей статье.
Давайте перейдем к гипервизору и проверим, включена ли вложенная виртуализация на вашем KVM-хосте.
Для процессоров на базе Intel выполните команду,
[root@kvm-hypervisor ~]# cat /sys/module/kvm_intel/parameters/nested N [root@kvm-hypervisor ~]#
Для процессоров на базе AMD выполните команду,
[root@kvm-hypervisor ~]# cat /sys/module/kvm_amd/parameters/nested N [root@kvm-hypervisor ~]#
В выходных данных приведенной выше команды «N» указывает, что вложенная виртуализация отключена. Если мы получим вывод как «Y», это означает, что на вашем хосте включена вложенная виртуализация.
Теперь, чтобы включить вложенную виртуализацию, создайте файл с именем « /etc/modprobe.d/kvm-nested.conf » со следующим содержимым.
[root@kvm-hypervisor ~]# vi /etc/modprobe.d/kvm-nested.conf options kvm-intel nested=1 options kvm-intel enable_shadow_vmcs=1 options kvm-intel enable_apicv=1 options kvm-intel ept=1
Сохраните и выйдите из файла
Теперь удалите модуль kvm_intel , а затем добавьте тот же модуль с помощью команды modprobe. Перед удалением модуля убедитесь, что виртуальные машины выключены, иначе мы получим сообщение об ошибке типа « modprobe: FATAL: модуль kvm_intel используется »
[root@kvm-hypervisor ~]# modprobe -r kvm_intel [root@kvm-hypervisor ~]# modprobe -a kvm_intel [root@kvm-hypervisor ~]#
Теперь проверьте, включена ли функция вложенной виртуализации.
[root@kvm-hypervisor ~]# cat /sys/module/kvm_intel/parameters/nested Y [root@kvm-hypervisor ~]#
Для систем на базе AMD выполните следующие команды:
[root@kvm-hypervisor ~]# rmmod kvm-amd [root@kvm-hypervisor ~]# echo 'options kvm-amd nested=1'>>/etc/modprobe.d/dist.conf [root@kvm-hypervisor ~]# modprobe kvm-amd
Тестовая вложенная виртуализация
Предположим, у нас есть виртуальная машина с именем «директор» на гипервизоре KVM, на которой я включил вложенную виртуализацию. Перед тестированием убедитесь, что режим ЦП для виртуальной машины либо « host-model », либо « host-passthrough », чтобы проверить режим cpu виртуальной машины, используйте либо Virt-Manager GUI, либо команду virsh edit.
Теперь войдите в виртуальную машину директора и запустите команду lscpu и lsmod.
[root@kvm-hypervisor ~]# ssh 192.168.126.1 -l root root@192.168.126.1's password: Last login: Sun Dec 10 07:05:59 2017 from 192.168.126.254 [root@director~]# lsmod | grep kvm kvm_intel 170200 0 kvm 566604 1 kvm_intel irqbypass 13503 1 kvm [root@director ~]# [root@director ~]# lscpu
Давайте попробуем создать виртуальную машину либо из графического интерфейса виртуального менеджера, либо из virt-install внутри директории vm, в моем случае я использую команду virt-install
[root@director ~]# virt-install -n Nested-VM --description "Test Nested VM" \ --os-type=Linux --os-variant=rhel7 --ram=2048 --vcpus=2 --disk \ path=/var/lib/libvirt/images/nestedvm.img,bus=virtio,size=10 --graphics \ none --location /var/lib/libvirt/images/CentOS-7-x86_64-DVD-1511.iso\ --extra-args console=ttyS0 Starting install... Retrieving file .treeinfo... | 1.1 kB 00:00:00 Retrieving file vmlinuz... | 4.9 MB 00:00:00 Retrieving file initrd.img... | 37 MB 00:00:00 Allocating 'nestedvm.img' | 10 GB 00:00:00 Connected to domain Nested-VM Escape character is ^] [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct [ 0.000000] Linux version 3.10.0-327.el7.x86_64 ………………………………………………
Это подтверждает, что вложенная виртуализация была успешно включена, поскольку мы можем создавать виртуальную машину внутри виртуальной машины.
На этом статья завершается, пожалуйста, поделитесь своими отзывами и комментариями.