什么是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 id  STP enabled interfaces

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台虚拟机。

java kvm 安装 kvm软件安装_虚拟化

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。

java kvm 安装 kvm软件安装_操作系统_02

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

6、使用VNC Viewer连接Linux桌面

java kvm 安装 kvm软件安装_运维_03

java kvm 安装 kvm软件安装_操作系统_04

远程桌面连接后如下图:

java kvm 安装 kvm软件安装_java kvm 安装_05

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

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

java kvm 安装 kvm软件安装_运维_06

java kvm 安装 kvm软件安装_java kvm 安装_07

java kvm 安装 kvm软件安装_操作系统_08

四、创建虚拟机

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

java kvm 安装 kvm软件安装_操作系统_09

java kvm 安装 kvm软件安装_虚拟化_10

java kvm 安装 kvm软件安装_网络_11

2、添加存储池

java kvm 安装 kvm软件安装_操作系统_12

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

java kvm 安装 kvm软件安装_运维_06

java kvm 安装 kvm软件安装_网络_14

java kvm 安装 kvm软件安装_操作系统_15

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

五、创建虚拟机

java kvm 安装 kvm软件安装_java kvm 安装_16

java kvm 安装 kvm软件安装_虚拟化_17

java kvm 安装 kvm软件安装_java kvm 安装_18

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

java kvm 安装 kvm软件安装_网络_19

java kvm 安装 kvm软件安装_java kvm 安装_20

java kvm 安装 kvm软件安装_java kvm 安装_21