KVM简介:

KVM是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术),是基于硬件的完全虚拟化。

KVM的模式:

内核模式:原Linux系统内核使用的模式空间;

用户模式:用户的应用程序进程使用的模式空间;

来宾模式:虚拟机实例使用的模式空间;

检测硬件平台是否支持KVM的使用:

1、KVM需要CPU支持硬件虚拟化,这是前提,如果在虚拟机中使用KVM需要在虚拟机的CPU属性中将支持CPU虚拟化的选项选中:

kvm是半虚拟化 kvm虚拟化了哪些硬件_ubuntu

2、装载KVM模块:

# modprobe kvm

# modprobe kvm_intel

查看模块的装载情况:

kvm是半虚拟化 kvm虚拟化了哪些硬件_kvm是半虚拟化_02

3、在前两步操作基础上,可以查看到/proc/cpuinfo文件中CPU标志位中有vmx(intel)和svm(amd)的相关信息,具体的信息只显示其中的一种,与物理机的CPU厂商保持一致。

kvm是半虚拟化 kvm虚拟化了哪些硬件_kvm是半虚拟化_03

只有能够查看到vmx或者svm信息时,才能使用KVM。如果当前主机的硬件上支持使用KVM的话,装载模块的操作可以不做,在使用qemu命令创建虚拟机的时候就会自动加载模块。

KVM的基本应用:

KVM虚拟机的创建于管理有两套管理工具,qemu和libvirt两种。

1、qemu-kvm命令创建管理虚拟机的使用:

安装工具:
 
  
# yum -y install qemu-kvm qemu-kvm-tools
 
  
安装后生成的qemu-kvm工具在/usr/libexec/目录下,为了便于使用,可以创建链接的以方便使用。
 
  
# ln -sv /usr/libexec/qemu-kvm /usr/sbin/



创建一个虚拟机:通常常见一个虚拟机需要指定的参数选项有:CPU、内存、磁盘映像文件、网卡、显示设备有时候还有可能用到光驱,通常使用率最多的是前4项。

创建一个虚拟机,先要准备虚拟机使用的磁盘设备文件:



# mkdir -pv /p_w_picpaths/vm1
# qemu-img create -f qcow2 -o size=100G /p_w_picpaths/vm1/ubuntu.qcow2
 
  
准备系统安装的iso文件,实验中这个iso文件放在了管理员家目录下,安装虚拟机的方式如下:
 
  
# qemu-kvm -name "ubuntu" -m 512 -smp 2 -hda /p_w_picpaths/vm1/ubuntu.qcow2 -cdrom ubuntu-12.04.1-desktop-i386.iso -boot order=dc



kvm是半虚拟化 kvm虚拟化了哪些硬件_kvm是半虚拟化_04

此时虚拟机已经启动并监听在5900端口上,可以使用vncviewer软件连接5900端口查看系统启动安装的效果:



# yum -y install tigervnc # vncviewer :5900



kvm是半虚拟化 kvm虚拟化了哪些硬件_ubuntu_05

kvm是半虚拟化 kvm虚拟化了哪些硬件_运维_06

现在就可以按照系统安装的提示一步步完成系统的安装工作了。

上面的安装方式是使用iso文件的方式来安装虚拟机系统的,我们还可以使用网络的方式来引导安装,这个时候需要将虚拟机的网卡关联到网桥上,然后再将虚拟出来的网桥与物理机的网桥关联起来才能实现虚拟机与外界通讯的效果。这个时候就需要先设定hypervisor上的桥。


# cd /etc/sysconfig/network-script/
# cp ifcfg-eth0 ifcfg-br0
 
  
# vim ifcfg-br0
DEVICE=br0
BOOTPROTO=none
HWADDR=00:0c:29:e1:37:51
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Bridge
IPADDR=172.16.103.2
NETMASK=255.255.0.0
IPV6INIT=no
USERCTL=no
 
  
# vim ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:0c:29:e1:37:51
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
BRIDGE=br0
 
  

虚拟机要创建其内部使用的虚拟桥,这个桥的创建需要借助于外部的脚本来完成,在创建时指定这个脚本就可以完成桥的创建工作,脚本的定义如下:
 
  
#/bin/bash
# 
switch=br0
if [ -n "$1" ];then
    ifconfig $1 up
    sleep 0.5s
    brctl addif $switch $1
    exit 0 
else
echo "Error:no specified interface."
exit 1
fi
 
  
将这个脚本文件放在/etc/qemu-ifup路径下,默认位置,方便使用。给脚本执行权限:
 
  
# chmod +x /etc/qemu-ifup
 
  
这个时候在创建虚拟机之前还要在局域网内准备pxe或者cobbler安装环境,虚拟机实例可以访问到就能实现系统的安装工作了,具体的操作可以使用如下方式:
 
  
# qemu-kvm -name "rhel5" -m 768 -smp 4 -drive file=/p_w_picpaths/vm1/ubuntu.qcow2,if=ide,index=0,media=disk,format=qcow2 -boot order=n -net nic -net tap,ifname="vnet0",downscript=no
 
  
2、使用libvirt系列工具实现虚拟机的管理
安装工具软件:
 
  
# yum -y install libvirt virt-manager virt-viewer python-virtinst
 
  
启动服务:
 
  
# service libvirtd start
 
  
使用virt-install工具安装虚拟机的示例:
 
  
# mkdir -pv /p_w_picpaths/vm3
 
  
# virt-install -n "centos6" --vcpus 2 -r 512 -l http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64 --disk path=/p_w_picpaths/vm3/centos6.qcow2,bus=virtio,size=120G,sparse --network bridge=br0,model=virtio --force



这种方式就创建了一个基于网络安装的centos6的虚拟机实例。要注意这种安装环境由于需要于外部局域网内的主机通信,所以都要先在hypervisor上创建桥设备的,然后将虚拟机的网卡关联到这个桥设备上才能正常与外部通信。


转载于:https://blog.51cto.com/9164364/1566136