KVM(全称是Kernel-based Virtual Machine)是Linux下x86 硬件平台上的全功能虚拟化解决方案,包含一个可加载的内核模块kvm.ko提供和虚拟化核心架构和处理器规范模块。 使用KVM可允许多个包括Linux和Windows每个虚拟机有私有的硬件,包括网卡、磁盘以及图形适配卡等。自Linux 2.6.20之后集成在Linux的各个主要发行版本中,它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。

一、硬件环境检测

KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己到进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列也是基于软件模拟的Para-Virtualization。

1grep -E --color 'vmx|svm' /proc/cpuinfo

有输出代表cpu支持,否则代表cpu不支持。

二、软件包安装

这里以centos6为例,安装软件前最好先用yum update 先做下升级操作。

1# yum install qemu-kvm qemu-img
2# yum install virt-managerlibvirt libvirt-python python-virtinst libvirt-client virt-viewer

也可以使用groupinstall进行安装,如下:

1# yum groupinstall -y  Virtualization  "Virtualization Client""Virtualization Platform" "Virtualization Tools"

需要注意的是在使用桥接网络时,还需要安装bridge-utils包,不然会报“btctl not found 的错误” ,安装方法如下:

1# yum -y install bridge-utils

三、防火墙处理

关闭防火墙对ipv6的支持(目前用这货的人还比较少)

1chkconfig ip6tables off

关闭selinux

1#setenforce  0
2#sed -i 's/=enforcing/=disabled/g' /etc/selinux/config

四、查看模块并启动进程

1查看KVM模块
2root@cq36:[/root]lsmod|grep kvm
3kvm_intel              53484  26
4kvm                   316506  1 kvm_intel
5启动libvirt进程
6services libvirtd restart

五、将网卡模式改为桥接模式

保存原网卡配置,并按下面的样式进行更改,首先复制原eth0网卡为br0,将原eth0的配置文件改为:

1DEVICE="eth0"
2BOOTPROTO="static"
3HWADDR="30:85:A9:9F:67:74"
4NM_CONTROLLED="no"
5ONBOOT="yes"
6TYPE="Ethernet"
7UUID="34096e10-ff72-4142-b7b3-e290d200b68a"
8BRIDGE="br0"

复制后的br0网卡的内容改为(一般可能还有eth1网卡,eth1内容参考上面,br1的配置这里也一并列出):

 1#外网网卡(以下公网IP是我乱写的,请勿对号入座)
 2www@cq35:[/home/www]cat /etc/sysconfig/network-scripts/ifcfg-br0
 3DEVICE=br0
 4TYPE=Bridge
 5ONBOOT=yes
 6BOOTPROTO=none
 7IPADDR=119.37.194.189
 8PREFIX=28
 9GATEWAY=119.37.194.182
10DNS1=8.8.8.8
11IPADDR2=202.75.212.225
12PREFIX2=28
13DEFROUTE=yes
14IPV4_FAILURE_FATAL=yes
15IPV6INIT=no
16NAME="System br0"
17#内网网卡
18www@cq35:[/home/www]cat /etc/sysconfig/network-scripts/ifcfg-br1
19DEVICE="br1"
20BOOTPROTO="static"
21BROADCAST="192.168.10.255"
22IPADDR="192.168.10.35"
23NETMASK="255.255.255.0"
24NM_CONTROLLED="yes"
25ONBOOT="yes"
26TYPE="Bridge"

修改完成后service network restart重启。重启完成后,用下面的命令查看:

1root@cq35:[/opt]brctl show
2bridge name     bridge id               STP enabled     interfaces
3br0             8000.001ec9cf52cb       no              eth0
4br1             8000.001ec9cf52cd       no              eth1
5virbr0          8000.525400b9dc11       yes             virbr0-nic

其实也可以通过ifconfig 查看,此时查看到的网卡会发现变成了br0、br1、eth0、eth1、virbr0这样的网卡。此时再查看IP可能十分不方便,不过可以通过ip命令进行查看。

1ip add show |grep inet

至此环境配置部分完成。