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


安装kvm需要宿主机:

xen或者是机架服务器

本测试环境为dell机架服务器

一、检测环境是否支持kvm

KVM 需要有 CPU 的支持(Intel VT 或 AMD SVM),在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持。

基于 Intel 处理器的系统,运行grep vmx /proc/cpuinfo查找 CPU flags 是否包括 vmx 关键词

基于 AMD 处理器的系统,运行grep svm /proc/cpuinfo查找 CPU flags 是否包括 svm 关键词

检查BIOS,确保BIOS里开启VT选项


二、配置网卡(本实验使用桥接)

配置如下:

桥接网卡br0

DEVICE=br0

TYPE=Bridge

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPADDR=192.198.62.18

NETMASK=255.255.255.0

GATEWAY=192.168.62.254

IPV6INIT=no

USERCTL=no

DELAY=0


本地网卡em1

em1 为戴尔服务器网卡标示

建网桥前服务器有网络设备 eth0 eth1 (dell服务器为em1 em2)  lo  virbr0 建网桥后服务器上多了br0 (同时修改br0和eth0的配置文件,eth0上不需要IP了,设给br0。

DEVICE=em1

HWADDR=14:18:77:4c:8e:b9  #网卡 mac地址

TYPE=Ethernet

UUID=038490b7-b894-4f4f-9a38-432c7df6be2c #网卡的uuid

ONBOOT=yes #自启动

NM_CONTROLLED=yes

BOOTPROTO=dhcp

DNS2=210.22.70.3 #dns

DNS1=202.96.209.5 #dns

IPV6INIT=no

USERCTL=no

BRIDGE=br0 #桥接网卡

PEERDNS=yes


三、安装软件

yum -y install kvm libvirt python-virtinst qemu-kvm virt-viewer bridge-utils


启动服务

/etc/init.d/libvirtd start

注:

Libvirt是管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。它包括一个API库,一个守护程序(libvirtd)和一个命令行工 具(virsh);libvirt本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的API。


四、安装图形化管理工具

yum -y install virt-manager



五、安装虚拟机

virt-install --name vm_cent_test1  --ram 4096 --vcpus=4 --disk path=/opt/vmware/vm_cent_test1,size=124 --network bridge=br0 --os-variant=rhel6 --location=ftp://10.188.66.5/pub/repodata/centos6.6_x86_64 --autostart --vnclisten=0.0.0.0  --vncport=6901 --vnc --extra-args "ks=ftp://10.188.66.5/pub/repodata/ks/ks_vm.cfg"

note(需要在其他服务器上配置kickstart,实现自动安装)



六、通过vnc登录宿主机端口访问新建虚拟机

如:192.198.62.18:6901

ps:(此环境需要关闭iptables selinux,安装好的vm需要手动virsh start启动)



其他:

virsh命令行管理工具
Libvirt有两种控制方式,命令行和图形界面
图形界面:
通过执行名virt-manager,启动libvirt的图形界面,在图形界面下可以一步一步的创建虚拟机,管理虚拟机,还可以直接控制虚拟机的桌面。
关闭及删除虚拟机

virsh start vm_cent_test1 #启动虚拟机

virsh shutdown vm_cent_test1 #关闭虚拟机

virsh destroy vm_cent_test1 #删除

virsh undefine vm_cent_test1 #不定义这个命名

virsh list #虚拟机列表