作者 | Pradeep Kumar
譯者 | zjon
巢狀虛擬化意味著在虛擬機器內配置虛擬化環境。換句話說,我們可以說巢狀虛擬化是虛擬機器管理程式的一個特性,它允許我們透過虛擬化管理程式(宿主機)的硬體加速在虛擬伺服器內安裝和執行虛擬機器。
在這篇文章中,我們將討論如何在 CentOS 7 / RHEL 7 的 KVM 上啟用巢狀虛擬化。我假定您已經配置過 KVM 管理程式。如果您不熟悉如何安裝和配置 KVM 管理程式,請參考以下文章。
在 CentOS 7.x 和 RHEL 7.x 安裝 KVM 管理程式
讓我們進入虛擬化管理程式,驗證您的 KVM 宿主機是否啟用了巢狀虛擬化。
基於 Intel 的處理器執行以下命令:
[root@kvm-hypervisor ~]# cat /sys/module/kvm_intel/parameters/nested
N
基於 AMD 的處理器執行以下命令:
[root@kvm-hypervisor ~]# cat /sys/module/kvm_amd/parameters/nested
N
上述命令輸出 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: Module kvm_intel is in use” 這樣的錯誤資訊。
[root@kvm-hypervisor ~]# modprobe -r kvm_intel
[root@kvm-hypervisor ~]# modprobe -a kvm_intel
現在驗證巢狀虛擬化功能是否啟用。
[root@kvm-hypervisor ~]# cat /sys/module/kvm_intel/parameters/nested
Y
測試巢狀虛擬化
假設我們在 KVM 管理程式上有一臺已經啟用了巢狀虛擬化的名為 “director” 的虛擬機器。在測試之前,確保 CPU 樣式為 “host-modle” 或 “host-passthrough” ,使用 Virt-Manager 或 virtsh
編輯命令檢查虛擬機器的 CPU 樣式。
cpu_mode_vm_kvm
現在登入 director 這臺虛擬機器並執行 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 ~]# lscpu
lscpu_command_rhel7_centos7
讓我們試著在 director 這臺虛擬機器的虛擬管理器 GUI 或 virt-install
命令建立一臺虛擬機器,在我的情況下我使用 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 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Nov 19 22:10:57 UTC 2015
………………………………………………
cli-installer-virt-install-command-kvm
這證實了巢狀虛擬化已成功啟用,因為我們能在虛擬機器內建立虛擬機器。
這篇文章到此結束,請分享您的反饋和意見。
via: https://www.linuxtechi.com/enable-nested-virtualization-kvm-centos-7-rhel-7/
作者:Pradeep Kumar[2] 譯者:zjon 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出