KVM嵌套虚拟化
嵌套虚拟化指的是在宿主机上创建的虚拟机中,再运行hypervisor,从而在虚拟机里面再运行一个虚拟机,可以是KVM嵌套KVM,Xen嵌套Xen,或者是不同类型hypervisor的嵌套(如KVM嵌套Xen,VMware嵌套KVM等)
下面开始嵌套虚拟化的实验,我选择的类型是KVM on KVM的嵌套
实验环境:
主机名 | 角色 |
KVM | 宿主机 |
vm1 | 第一层虚拟机 |
vm1-1 | 第二层虚拟机 |
首先宿主机的内核版本需要3.0+,其次内核需要打开nested的功能,让内核支持嵌套虚拟化的功能。
[root@kvm ~]# uname -r #查看内核版本
3.10.0-327.el7.x86_64
[root@kvm ~]# cat /sys/module/kvm_intel/parameters/nested
N #默认不开启,需要重新加载模块,并修改它的引导参数
[root@kvm ~]# rmmod kvm_intel #移除kvm_intel模块
[root@kvm ~]# modprobe kvm_intel nested=1 #重新加载并开启nested功能
[root@kvm ~]# cat /sys/module/kvm_intel/parameters/nested
Y
#以上开启nested的方式在重启的时候失效,如果需要永久生效可以通过如下方式:
[root@kvm ~]# echo "options kvm-intel nested=1" >> /etc/modprobe.d/kvm_intel.conf
创建vm1,过程略
[root@kvm ~]# virsh list
Id Name State
----------------------------------------------------
1 vm1 running
修改配置文件,实现CPU穿透
[root@kvm ~]# virsh shutdown vm1
[root@kvm ~]# vi /etc/libvirt/qemu/vm1.xml
<cpu mode=‘host-passthrough‘> #配置CPU model为host-passthrough
</cpu>
[root@kvm ~]# systemctl restart libvirtd
[root@kvm ~]# virsh start vm1
查看vm1的CPU特性是否与物理机一致
[root@vm1 ~]# cat /proc/cpuinfo |grep model
model: 62
model name: Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz
model: 62
model name: Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz
查看vm1的CPU是否支持虚拟化
[root@vm1 ~]# grep -E ‘(vmx|svm)‘ /proc/cpuinfo
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm tpr_shadow vnmi flexpriority ept fsgsbase tsc_adjust smep erms xsaveopt
vm1需要加载模块
[root@vm1 ~]# modprobe kvm
[root@vm1 ~]# modprobe kvm_intel
[root@vm1 ~]# lsmod |grep kvm
kvm_intel 162153 0
kvm 525259 1 kvm_intel
安装kvm的管理工具
[root@vm1 ~]# yum -y install libvirt virt-install qemu-kvm qemu-kvm-tools
启动libvirtd服务
[root@vm1 ~]# systemctl start libvirtd
[root@vm1 ~]# systemctl enable libvirtd
创建磁盘文件
[root@vm1 ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/vm1-1.qcow2 8G
创建vm1-1
[root@vm1 ~]#virt-install --cdrom=/opt/iso/CentOS-7.2-x86_64-DVD.iso --vcpu=2 --ram=1024 --network bridge=virbr0 --disk path=/var/lib/libvirt/images/vm1-1.qcow2 --graphics spice,listen=0.0.0.0 --name=vm1-1
WARNING Unable to connect to graphical console: virt-viewer not installed. Please install the ‘virt-viewer‘ package.
WARNING No console to launch for the guest, defaulting to --wait -1
Starting install...
Creating domain... | 0 B 00:00:00
Domain installation still in progress. Waiting for installation to complete.
我在宿主机创建了网桥,所以可以直接在windows通过remote viewer连接进vm1-1
[root@kvm ~]# brctl show
bridge namebridge idSTP enabledinterfaces
brex8000.70e28405fa30yesenp10s0
vnet0
virbr08000.5254000f5751yesvirbr0-nic
通过remote viewer进行安装
如有勘误,欢迎指正。
本文出自 “每一次进步,愿与你分享” 博客,请务必保留此出处http://lidaxia.blog.51cto.com/11588738/1911051
原文地址:http://lidaxia.blog.51cto.com/11588738/1911051