什么是KVM虚拟化技术?

KVM(Kernel-based Virtual Machine),主流虚拟化技术之一,集成与Linux2.6之后版本中,通过linux内核提供任务调度及管理。

注:此文档为2014年所写,但内容绝对实用!

安装体验下KVM吧!

操作系统:CentOS 6.5_x64 mini Desktop

一、KVM组件安装与配置网络(首先先更新系统软件:yum update)

1、检查CPU是否支持虚拟化

#KVM虚拟化基于硬件的完全虚拟化,因此需要硬件支持,目前CPU基本都支持,如果没有输出信息,看下BIOS里有没有开启虚拟化支持,如果找不到,百度对你的CPU型号,看是否支持虚拟化技术

# egrep '(vmx|svm)' --color=always /proc/cpuinfo


#简单说下完全虚拟化与半虚拟化的区别:半虚拟化不需要硬件虚拟化技术支持即虚拟化,如Xen,即可实现完全虚拟化也可实现半虚拟化。半虚拟化需要修改虚拟系统内核(模拟指令),以实现虚拟机完美运行在Xen上面,完全虚拟化不需要修改虚拟系统内核,可直接运行在虚拟化技术之上。如我们常用的VMwareWorkstation,即完全虚拟化,如果硬件不支持虚拟化技术,只能跑32位操作系统。

2、安装KVM及相关管理工具

# yum -y install qemu-kvm qemu-img virt-viewer virt-manager libvirt python-virtinst

软件说明:

qemu-kvm  #kvm只对cpu、内存虚拟化,qemu-kvm在此基础上模拟I/O设备

qemu-img  #磁盘镜像管理工具

virt-manager #图形界面虚拟机管理工具

virt-viewer #连接虚拟机控制台

libvirt   #提供一套管理虚拟化工具的接口,支持主流的虚拟化技术,如KVM、XEN、LXC等,用于命令行管理虚拟机

python-virtinst #python写的脚本,用于virt-install安装虚拟机

3、检查KVM模块是否加载成功

# lsmod | grep kvm

kvm_intel              54394  0

kvm                 317376  1 kvm_intel

提示以上信息说明已经加载成功!如没有可尝试modprobe kvm加载。

4、关闭NetworkManager服务,避免虚拟机与主机网络出现问题

# service NetworkManager stop

# chkconfig NetworkManager off

5、桥接网络

qemu支持的网络模式:

桥接    #基于网桥的虚拟网卡,与主机同网段IP地址

NAT    #共享主机的IP地址

主机模式 #主机之间专用网络

    5.1 添加桥接,网卡不配置IP信息

1
2
3
4
5
6
7
8
     # vi /etc/sysconfig/network-scripts/ifcfg-eth0 
     DEVICE=eth0
     HWADDR=54:39:DF:D0:AD:10
     TYPE=Ethernet
     UUID=7fd81a50-9ee4-41f2-aa53-b73acb45a913
     ONBOOT= yes
     NM_CONTROLLED= yes
     BRIDGE=br0       #添加桥接

    5.2 创建ifcfg-br0,里面配置真实物理IP信息

1
2
3
4
5
6
7
8
9
     # vi /etc/sysconfig/network-scripts/ifcfg-br0
     DEVICE=br0
     TYPE=Bridge
     ONBOOT= yes
     BOOTPROTO=static
     IPADDR=192.168.3.10
     NETMASK=255.255.255.0
     GATEWAY=192.168.3.1
     DNS1=8.8.8.8

    5.3 重启网络

    # service network restart

 #可以看到eth0加入br0网桥,如果没有brctl命令,请安装bridge-utils工具

 #当创建虚拟机时指定桥接,也会加入这个网桥

 # brctl show

 bridge namebridge id  STP enabled interfaces

 br0  8000.0cc47a7432b0    no    eth0

6、启动libvirtd服务,并设置开机启动

# service libvirtd start

# chkconfig libvirtd on


博客地址:http://lizhenliang.blog.51cto.com


二、安装远程桌面VNC,用于图形管理虚拟机

1、安装配置tigervnc

# yum -y install tigervnc tigervnc-server

# chkconfig vncserver on

2、修改配置文件

# vi /etc/sysconfig/vncservers

VNCSERVERS="1:root"

VNCSERVERARGS[1]="-geometry 1024x768"

注:系统运行级别为3时,也可以正常进入图形界面

3、设置VNC密码

# vncserver  #直接设置当前用户密码,可以使用vncpasswd修改密码

注:VNC密码与ROOT密码可以不同。

4、重启VNC

# service vncserver restart

5、防火墙设置

# /sbin/iptables -I INPUT -p tcp --dport 5901 -j ACCEPT

# /etc/rc.d/init.d/iptables save


5、资源准备

新建kvmtest目录。我们就是这个目录下进行kvm测试。

 mkdir  /kvmtest11

然后将已经下载好的 CentOS-6.8-x86_64-minimal.iso上传到这个/kvmtest目录下。这里需要说明一下,我的系统是centos6.6的,然后对于6.6或者6.8的迷你版系统兼容更好,否则我们在后面创建电脑之后可能会发生无法启动的问题。对于其他版本开机时可能会遇到 “no filename or root path specified”的错误。

6、创建安装盘

  qemu-img create -f qcow2 /kvmtest/centos-6.8.qcow2 
    10G1212

7、创建虚拟机

 virt-install --virt-type kvm --name centos-6.8 --ram 1024 \
    --vcpus 1 \    --cdrom=/kvmtest/CentOS-6.8-x86_64-minimal.iso \    --disk /kvmtest/centos-6.8.qcow2,format=qcow2 \    --network network=default \    --graphics vnc,listen=0.0.0.0 --noautoconsole \    --os-type=linux --os-variant=rhel612345671234567

以下是各参数代表的意思:

  1. -n NAME 
    指定虚拟机的名称

  2. -r MEMORY 
    指定虚拟机的内存用量

  3. -u UUID 
    指定虚拟机的唯一通用标识符 
    (Universally Unique Identifier,UUID)。 
    省略这个参数时,virt-install 将会自动产生

  4. –vcpus=VCPUS 
    指定虚拟机的虚拟 CPU (Virtual CPU,VCPU) 数量 
    -f DISKFILE 
    指定虚拟磁盘的文件路径名称 
    -s DISKSIZE 
    用来指定虚拟磁盘的大小,这个参数需配合-f 使用。 
    DISKSIZE为虚拟磁盘的大小,单位是GB 
    -m MAC 
    指定虚拟机的网络卡之硬件地址。 
    这个参数可以省略,省略时virt-install 将自动产生 
    -p 以半虚拟化的方式建立虚拟机 
    -l LOCATION 指定安装来源

8、创建完成之后我们就可以使用命令来查看虚拟机了。

    virsh  list --all11

因为我这边创建了3台,所以可以看到有3台虚拟机。

这里写图片描述

shut off代表的是关机中的意思。你可以参照下面的命令来查看虚拟机的信息。

例如我这里需要开启一台,命令就是

virsh start centos-6.8

virsh list # 显示本地活动虚拟机 
virsh start openSuse # 启动名字为ubuntu的非活动虚拟机 
virsh create ubuntu.xml # 创建虚拟机(创建后,虚拟机立即执行,成为活 
动主机) 
virsh suspend openSuse # 暂停虚拟机 
virsh resume ubuntu # 启动暂停的虚拟机 
virsh shutdown ubuntu # 正常关闭虚拟机 
virsh destroy ubuntu # 强制关闭虚拟机 
virsh dominfo openSuse # 显示虚拟机的基本信息 
virsh dumpxml openSuse # 显示虚拟机的当前配置文件 
virsh setmem ubuntu 51200 # 给不活动虚拟机设置内存大小 
virsh setvcpus ubuntu 4 # 给不活动虚拟机设置cpu个数 
virsh edit ubuntu # 编辑配置文件(一般用在刚定义完VM)

9、客户端连接。 
我们可以使用命令

netstat -natp

来查看启动的进程。我们可以看到5900端口的进程是/qemu-kvm。

这里写图片描述

启动一台是5900,那么启动两台就是5900和5901,依次类推。 
我们可以在window系统中使用vnc-4_1_3-x86_win32_viewer.exe来连接。





6、使用VNC Viewer连接Linux桌面

wKiom1Z_peTgd_57AAA05qKKU3o417.png

wKiom1Z_pe3xReunAAAw3ViQZK8093.png

远程桌面连接后如下图:

wKioL1Z_piDT37x-AAIHSsjUxd4976.png

三、把系统镜像通过软件上传到服务器

1:这里使用WinSCP上传,把系统映像文件传到你自己想传的目录即可。

spacer.gifwKioL1Z_pjTiu3kjAACqpK9lMoU007.png

wKiom1Z_pjDz4K8XAAJlDjVC9rs577.png

四、创建虚拟机

1、通过VNC远程登入桌面环境wKiom1Z_pkWzF3nyAAJHmcCMUO8487.png

wKiom1Z_pmjgxeCEAABzPkMDSZU204.pngwKiom1Z_poPhWaHGAABs6aC5FXQ497.png


2、添加存储池wKioL1Z_psiSTTrSAAFDPRNGlMY626.png

3、删除默认的,添加新的存储

spacer.gifwKioL1Z_puPwmHEfAADAnLnircY754.pngwKiom1Z_p3bi-ok1AAE6K0jftGc713.png

新存储卷,格式为qcow2,支持快照

五、创建虚拟机

wKioL1Z_p6eDXfVKAAEFtGB9D1U324.png

wKioL1Z_p7vwpQiRAAELVh_pWpo611.png

wKioL1Z_p8rC5-hkAADLEpYFTzw311.png

选择刚创建的虚拟机存储卷:

wKioL1Z_p9rzWKwNAAD1EOH9vr8413.png

wKiom1Z_qNaBhuweAADky2rXNdI705.png


wKiom1Z_qObA6dooAAJ3nR4FeHo964.jpghttp://lizhenliang.blog.51cto.com/7876557/1728809