《KVM实战:原理、进阶与性能调优》 —3 构建KVM环境
第3章
构建KVM环境
通过第2章了解KVM的基本原理之后,你是否迫不及待地想实践一下如何使用KVM来构建自己的虚拟化环境呢?
本章将介绍如何通过整套的流程与方法来构建KVM环境,其中包括:硬件系统的配置、宿主机(Host)操作系统的安装、KVM的编译与安装、QEMU的编译与安装、客户机(Guest)的安装,直到最后启动你的第一个KVM客户机。
3.1 硬件系统的配置
我们知道,KVM从诞生伊始就需要硬件虚拟化扩展的支持,所以这里需要特别讲解一下硬件系统的配置。
KVM最初始的开发是基于x86和x86-64处理器架构上的Linux系统进行的,目前,KVM被移植到多种不同处理器架构之上,包括AIM联盟(Apple–IBM–Motorola)的PowerPC架构、IBM的S/390架构、ARM架构(2012年开始)等。其中,在x86-64上面的功能支持是最完善的(主要原因是Intel/AMD的x86-64架构在桌面和服务器市场上的主导地位及其架构的开放性,以及它的开发者众多),本书也采用基于Intel x86-64架构的处理器作为基本的硬件环境。
在x86-64架构的处理器中,KVM需要的硬件虚拟化扩展分别为Intel的虚拟化技术(Intel VT)和AMD的AMD-V技术。其中,Intel在2005年11月发布的奔腾四处理器(型号:662 和672)中第一次正式支持VT技术(Virtualization Technology),之后不久的2006年5月AMD也发布了支持AMD-V的处理器。现在比较流行的针对服务器和桌面的Intel处理器多数都是支持VT技术的,本节着重讲述与英特尔的VT技术相关的硬件设置。
首先处理器(CPU)要在硬件上支持VT技术,还要在BIOS中将其功能打开,KVM才能使用到。目前,多数流行的服务器和部分桌面处理器的BIOS都默认将VT打开了。
在BIOS中,VT的选项通过“Advanced→Processor Configuration”来查看和设置,它的标识通常为“Intel(R) Virtualization Technology”或“Intel VT”等类似的文字说明。
除了支持必需的处理器虚拟化扩展以外,如果服务器芯片还支持VT-d(Virtualization Technology for Directed I/O),建议在BIOS中将其打开,因为后面一些相对高级的设备的直接分配功能会需要硬件VT-d技术的支持。VT-d是对设备I/O的虚拟化硬件支持,在BIOS中的位置可能为“Advanced→Processor Configuration”或“Advanced→System Agent (SA) Configuration”,它在BIOS中的标志一般为“Intel(R) VT for Directed I/O”或“Intel VT-d”。
下面以一台Intel Haswell-UP平台的服务器为例,来说明在BIOS中的设置。
1)BIOS中的Advanced选项,如图3-1所示。
图3-1 BIOS中的Advanced选项
2)BIOS中Enabled的VT和VT-d选项,如图3-2所示。
图3-2 BIOS中Enabled的VT和VT-d选项
对于不同平台或不同厂商的BIOS,VT和VT-d等设置的位置可能是不一样的,需要根据实际的硬件情况和BIOS中的选项来灵活设置。
设置好了VT和VT-d的相关选项,保存BIOS的设置并退出,系统重启后生效。在Linux系统中,可以通过检查/proc/cpuinfo文件中的CPU特性标志(flags)来查看CPU目前是否支持硬件虚拟化。在x86和x86-64平台中,Intel系列CPU支持虚拟化的标志为“vmx”,AMD系列CPU的标志为“svm”。所以可以用以下命令行查看“vmx”或者“svm”标志:
[root@kvm-host ~]# grep -E "svm|vmx" /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
<!-– 此处省略多行其余CPU或core的flags输出信息 -->
- 点赞
- 收藏
- 关注作者
评论(0)