什么是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 | |
5.2 创建ifcfg-br0,里面配置真实物理IP信息
1 2 3 4 5 6 7 8 9 | |
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
以下是各参数代表的意思:
- -n NAME 指定虚拟机的名称
- -r MEMORY 指定虚拟机的内存用量
- -u UUID 指定虚拟机的唯一通用标识符 (Universally Unique Identifier,UUID)。 省略这个参数时,virt-install 将会自动产生
- –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桌面
远程桌面连接后如下图:
三、把系统镜像通过软件上传到服务器
1:这里使用WinSCP上传,把系统映像文件传到你自己想传的目录即可。
四、创建虚拟机
1、通过VNC远程登入桌面环境
2、添加存储池
3、删除默认的,添加新的存储
新存储卷,格式为qcow2,支持快照
五、创建虚拟机
选择刚创建的虚拟机存储卷: