首頁 > 軟體

如何在 CentOS 7 / RHEL 7 的 KVM 上啟用巢狀虛擬化

2020-06-16 16:57:16

巢狀虛擬化意味著在虛擬機器內設定虛擬化環境。換句話說,我們可以說巢狀虛擬化是虛擬機器管理程式hypervisor的一個特性,它允許我們通過虛擬化管理程式(宿主機)的硬體加速在虛擬伺服器內安裝和執行虛擬機器。

在這篇文章中,我們將討論如何在 CentOS 7 / RHEL 7 的 KVM 上啟用巢狀虛擬化。我假定您已經設定過 KVM 管理程式。如果您不熟悉如何安裝和設定 KVM 管理程式,請參考以下文章。

 

在 CentOS 7.x 和 RHEL 7.x 安裝 KVM 管理程式

讓我們進入虛擬化管理程式,驗證您的 KVM 宿主機是否啟用了巢狀虛擬化。

基於 Intel 的處理器執行以下命令:

  1. [root@kvm-hypervisor ~]#cat/sys/module/kvm_intel/parameters/nested
  2. N

基於 AMD 的處理器執行以下命令:

  1. [root@kvm-hypervisor ~]#cat/sys/module/kvm_amd/parameters/nested
  2. N

上述命令輸出 N 表示巢狀虛擬化是禁用的。如果我們得到的輸出是 Y 則表示在您的宿主機已啟用巢狀虛擬化。

現在啟用巢狀虛擬化,使用以下內容建立一個檔名為 /etc/modprobe.d/kvm-nested.conf 的檔案:

  1. [root@kvm-hypervisor ~]#vi/etc/modprobe.d/kvm-nested.conf
  1. options kvm-intel nested=1
  2. options kvm-intel enable_shadow_vmcs=1
  3. options kvm-intel enable_apicv=1
  4. options kvm-intel ept=1

儲存並退出檔案。

現在移除 kvm_intel 模組然後通過 modprobe 命令新增同樣的模組。在移除模組之前,確保虛擬機器已關機,否則我們會得到像 “modprobe: FATAL: Module kvm_intel is in use” 這樣的錯誤資訊。

  1. [root@kvm-hypervisor ~]#modprobe-r kvm_intel
  2. [root@kvm-hypervisor ~]#modprobe-a kvm_intel

現在驗證巢狀虛擬化功能是否啟用。

  1. [root@kvm-hypervisor ~]#cat/sys/module/kvm_intel/parameters/nested
  2. Y

 

測試巢狀虛擬化

假設我們在 KVM 管理程式上有一台已經啟用了巢狀虛擬化的名為 “director” 的虛擬機器。在測試之前,確保 CPU 模式為 “host-modle” 或 “host-passthrough” ,使用 Virt-Manager 或 virtsh 編輯命令檢查虛擬機器的 CPU 模式。

cpu_mode_vm_kvm

現在登入 director 這台虛擬機器並執行 lscpulsmod 命令。

  1. [root@kvm-hypervisor ~]#ssh192.168.126.1-l root
  2. root@192.168.126.1's password:
  3. Last login: Sun Dec 10 07:05:59 2017 from 192.168.126.254
  4. [root@director ~]# lsmod | grep kvm
  5. kvm_intel            170200  0
  6. kvm                  566604  1 kvm_intel
  7. irqbypass              13503  1 kvm
  1. [root@director ~]#lscpu

lscpu_command_rhel7_centos7

讓我們試著在 director 這台虛擬機器的虛擬管理器 GUI 或 virt-install 命令建立一台虛擬機器,在我的情況下我使用 virt-install 命令。

  1. [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
  2. Starting install...
  3. Retrievingfile.treeinfo...                                                  |1.1 kB  00:00:00
  4. Retrievingfile vmlinuz...                                                    |4.9 MB  00:00:00
  5. Retrievingfile initrd.img...                                                  |  37 MB  00:00:00
  6. Allocating'nestedvm.img'                                                      |  10 GB  00:00:00
  7. Connected to domain Nested-VM
  8. Escape character is^]
  9. [    0.000000]Initializing cgroup subsys cpuset
  10. [    0.000000]Initializing cgroup subsys cpu
  11. [    0.000000]Initializing cgroup subsys cpuacct
  12. [    0.000000]Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org)(gcc version 4.8.320140911(RedHat4.8.3-9)(GCC))#1 SMP ThuNov1922:10:57 UTC 2015
  13. ………………………………………………

cli-installer-virt-install-command-kvm

這證實了巢狀虛擬化已成功啟用,因為我們能在虛擬機器內建立虛擬機器。

這篇文章到此結束,請分享您的反饋和意見。


via: https://www.linuxtechi.com/enable-nested-virtualization-kvm-centos-7-rhel-7/

作者:Pradeep Kumar 譯者:zjon 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

本文永久更新連結地址http://www.linuxidc.com/Linux/2018-01/150013.htm


IT145.com E-mail:sddin#qq.com