KVM是Kernel Virtual Machine的简写,目前Red Hat只支持在64位的RHEL5.4及以上的系统运行KVM,同时硬件需要支持VT技术。KVM的前身是QEMU,2008年被Red Hat公司收购并获得一项hypervisor技术,不过Red Hat的KVM被认为是将成为未来Linux hypervisor的主流,准确来说,KVM仅仅是Linux内核的一个模块。管理和创建完整的KVM虚拟机,需要更多的辅助工具。
案例:搭建KVM虚拟化平台
一、案例分析
1、案例概述
公司部分Linux服务器利用率不高,为充分利用这些Linux服务器,可以部署KVM,在物理机上运行多个业务系统。例如,在运行Nginx的服务器上部署KVM,然后在虚拟机上运行Tomcat
2、案例前置知识点
KVM自Linux 2.6.20版本后就直接整合到Linux内核,它依托CPU和虚拟化指令集(如Inter-VT、AMD-V)实现高性能的虚拟化支持。由于与Linux内核高度整合,因此在性能、安全性、兼容性、稳定性上都有很好的表现
图上简单描述了KVM虚拟化架构,在KVM环境中运行的每个虚拟化操作系统都将表现为单个独立的系统进程。因此它可以很方便地与Linux系统中的安全模块进行整合(SElinux),可以灵活地实现资源的管理及分配
3、案例环境
采用CentOS 6.6 x86_64,开启CPU虚拟化支持
二、案例实施
1、安装方式
(1)最简单的安装方法就是在安装系统的时候,选择桌面安装,然后选择虚拟化选项
安装桌面
安装虚拟化平台
(2)在已有系统基础上,安装KVM所需软件
yum -y groupinstall "Desktop" //安装GNOME桌面环境
yum -y install qemu-kvm.x86_64 //KVM模块
yum -y install qemu-kvm-tools.x86_64 //KVM调试工具,可不安装
yum -y install Python-virtinst.noarch //python组件,记录创建VM时的xml文件
yum -y install qemu-img.x86_64 //qemu组件,创建磁盘、启动虚拟机等
yum -y install bridge-utils.x86_64 //网络支持工具
yum -y install libvirt //虚拟机管理工具
yum -y install virt-manager //图形界面管理虚拟机
yum -y install libguestfs* //virt-cat等命令的支持软件包
(3)验证。重启系统后,查看CPU是否支持虚拟化,对于Inter服务器可以 通过一下命令查看,只要有输出就说明CPU支持虚拟化;AMD服务器可用cat /proc/cpuinfo | grep smv命令查看
[root@localhost ~]# cat /proc/cpuinfo | grep vmx
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc up arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid
检查KVM模块是否安装:
[root@localhost ~]# lsmod | grep kvm
kvm_intel 55496 0
kvm 337772 1 kvm_intel
2、设置KVM网络
宿主服务器安装完成KVM,首先要设定网络,在libvirt中运行KVM网络有两种方法:NAT和Bridge,默认是NAT
关于两种模式的说明:
(1)用户模式,即NAT方式,这种方式是默认网络,数据包由NAT方式通过主机的接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络
(2)桥接模式,这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持,一般有线网卡都支持
这里以Bridge(桥接)为例