本文根据上课笔记整理,大家都知道云计算的基础就是虚拟化,而开源的虚拟化基本以kvm技术为主导,因此kvm技术已成为运维工程师必备的技术,也是云时代必不可少的技术

在介绍kvm之前 我们先来了解一下vnc这个软件,后面安装kvm需要vnc来支持


1、vnc的安装及使用

# yum -y install tigervnc-server
首次启动
# vncserver :1
会提示输入两次密码
然后编辑/root/.vnc/xstartup,将最后一行twm替换为gnome-session或者startkde
懒人可以直接用以下语句直接替换(执行任意一条即可,建议选择第一条稳定,但是占用内存较多)
sed -i 's/twm/gnome-session/g' /root/.vnc/xstartup
sed -i 's/twm/startkde/g' /root/.vnc/xstartup
重启vncserver
# vncserver
客户端连接
vncclient里输入 vncserver-IP:1


2、查看是否 支持虚拟化


确定服务器是否支持虚拟化,如果没有查到,在bios里面开启

vmx属于inter处理器,svm属于amd处理器  egrep 'vmx|svm' /proc/cpuinfo

kvm虚拟化技术应用实战_第1张图片


3、安装kvm软件包

yum  groupinstall "DevelopmentTools"
yum  groupinstall "Virtualization" "Virtualization Client""Virtualization Platform"
virtualization //提供虚拟机的环境,主要包含qumu-kvm
virtualization-client//管理和安装虚拟机实例的客户端,主要有python-virtinst,virt-manager,virt-viewer
virtualization-platform//提供访问和控制虚拟客户端的接口,主要有libvirt,libvirt-client


4、检查安装后是否加载相关模块

wKiom1eE3dewftzbAAASDZNJ1I8356.png-wh_50


5、kvm虚拟机的安装

安装虚拟机有两种方式,一种是通过vnc连接到宿主机图形界面内,然后通过virt-manager命令打开虚拟机创建图形界面创建即可。这里我们简单截图说明,首先通过vncview连接服务端

kvm虚拟化技术应用实战_第2张图片kvm虚拟化技术应用实战_第3张图片

点击new

kvm虚拟化技术应用实战_第4张图片

之后一步一步根据提示安装完成即可,如果这里需要详细说明,我们下次再介绍


另一种是通过命令行方式进行安装,步骤如下:
1. 上传ISO文件,这里采用centos6.5
2. 开始安装centos6.5
# virt-install --name=vigor --ram 2048 --vcpus=1 --disk path=/var/lib/libvirt/p_w_picpaths/iiveylinux4.img,size=30,bus=virtio --accelerate --cdrom /iso/CentOS-6.5-x86_64-bin-DVD1.iso --vnc --vncport=5911 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio --noautoconsole
说明:在linux系统安装开始就要注意添加提高性能的一些参数,后面就不需要做一些调整了。
kvm虚拟化学习笔记(五)之windows虚拟机性能调整,这篇文章介绍windows配置virtio的驱动还有些麻烦,最好是在开始安装时注意加入这些参数。
参数说明:
--name 指定虚拟机名称
--ram 分配内存大小。
--vcpus分配CPU核心数,最大与实体机CPU核心数相同
--disk 指定虚拟机镜像,size 指定分配大小单位为G。
--network 网络类型,此处用的是默认,一般用的应该是 bridge 桥接。
--accelerate 加速
--cdrom指定安装镜像iso
--vnc启用VNC远程管理,一般安装系统都要启用。
--vncport指定VNC 监控端口,默认端口为5900,端口不能重复。
--vnclisten指定VNC 绑定IP,默认绑定127.0.0.1,这里改为 0.0.0.0



6、网络配置

kvm的网络设置我们在博客中详细说明,这里简单说明下
kvm虚拟机网络问为三种:a)虚拟网络'default':NAT (默认方式,支持虚拟机上网但不支持互访) b)主机设备 vnet0(根据使劲情况而定):macvtap(支持互访) c)主机设备 vent0 (桥接'br0') (bridge方式,可以使用虚拟机成为网络中具有独立IP的主机)bridge方式介绍:1、建立桥接器在/etc/sysconfig/network-scripts目录下,创建一个ifcfg-br0 桥接器,内容如下:[root@hadoop network-scripts]# more ifcfg-br0 DEVICE="br0"BOOTPROTO="static"ONBOOT="yes"IPADDR=172.16.212.232NETMASK=255.255.255.0TYPE="Bridge"2、更改物理设备,这里选择 eth0 ,内容如下:[root@hadoop network-scripts]# more ifcfg-eth0DEVICE="eth0"BOOTPROTO="none"ONBOOT="yes"TYPE="Ethernet"BRIDGE="br0"UUID="d931154d-d2c9-4977-ab78-4a9efa971f39"3、重启网络服务:service network restart


7、虚拟机的克隆


kvm虚拟机的克隆分为两种情况,本文也就通过以下两种情况进行克隆。(1) KVM主机本机虚拟机直接克隆。(2) 通过复制配置文件与磁盘文件的虚拟机复制克隆(适用于异机的静态迁移)。1. 本机虚拟机直接克隆
(1) 查看虚拟机配置文件[root@node1 ~]# cat /etc/libvirt/qemu/oeltest01.xml虚拟机磁盘文件: /data/test01.img虚拟机名称:oeltest01(2) 开始克隆# virt-clone -o oeltest01 -n oeltest02 -f /data/test02.img说明:以oeltest01做为源,克隆oeltest01虚拟机,并创建名称为oeltest02虚拟机,使用磁盘文件/data/test02.img(3) 启动虚拟机并配置主机名,IP地址等。

# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 test02localhost.localdomainlocalhost
::1 localhost6.localdomain6 localhost6
# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=test02
GATEWAY=192.168.233.2
修改IP地址
# vi /etc/sysconfig/network-script/ifcfg-eth0
# Virtio Network Device
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
HWADDR=52:54:00:56:bd:2b
IPADDR=192.168.233.142
NETMASK=255.255.255.0
[root@test01 ~]# service network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]


8、进入虚拟控制台

kvm虚拟机能否像xen虚拟机一样通过virsh console 一样采用字符界面进行linux虚拟机控制台呢,答案是肯定的,默认情况下该命令是不起作用的,需要修改KVM虚拟机(非宿主机)相关文件才能实现。
这里我们先看下效果,以后再详细说明

kvm虚拟化技术应用实战_第5张图片

kvm虚拟化技术应用实战_第6张图片

可以看到 我们能看到完整的启动的过程,这样的好处是我们不在需要依靠第三方软件vnc登陆

,效果等同于我们拿着console线直接插入到交换机的管理口一样,即可直接在物理主机上面对虚拟机进行控制


9、kvm虚拟化常用管理命令

1、查看KVM虚拟机配置文件及运行状态
(1) KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/
autostart目录是配置kvm虚拟机开机自启动目录。
(2) virsh命令帮助
# virsh -help
或直接virsh命令和,再执行子命令。如下所示。
[root@node1 ~]# virsh
欢迎使用virsh,虚拟化的交互式终端。
输入:'help' 来获得命令的帮助信息
'quit' 退出
virsh # help
(3) 查看kvm虚拟机状态
显示虚拟机列表:
virsh # list --all
 2. KVM虚拟机开机
启动虚拟机:
virsh # start [name]
3. KVM虚拟机关机或断电
(1) 关机
默认情况下virsh工具不能对linux虚拟机进行关机操作,linux操作系统需要开启与启动acpid服务。在安装KVM linux虚拟机必须配置此服务。
# chkconfigacpid on
# serviceacpid restart
关闭虚拟机:
virsh # shutdown [name]
(2) 强制关闭电源
# virsh destroy wintest01
(3)重启虚拟机
重启虚拟机:
virsh # reboot [name]
(4)查看kvm虚拟机配置文件
virsh # dumpxml [name]
4. 通过配置文件启动虚拟机
# virsh create /etc/libvirt/qemu/wintest01.xml
5. 配置开机自启动虚拟机
# virshautostart oeltest01
autostart目录是kvm虚拟机开机自启动目录,可以看到该目录中有KVM配置文件链接。
6. 导出KVM虚拟机配置文件
# virshdumpxml wintest01 > /etc/libvirt/qemu/wintest02.xml
KVM虚拟机配置文件可以通过这种方式进行备份。
7. 添加与删除KVM虚拟机
(1) 删除kvm虚拟机
# virshundefine wintest01
说明:该命令只是删除wintest01的配置文件,并不删除虚拟磁盘文件。
(2) 重新定义虚拟机配置文件
通过导出备份的配置文件恢复原KVM虚拟机的定义,并重新定义虚拟机。
# mv /etc/libvirt/qemu/wintest02.xml /etc/libvirt/qemu/wintest01.xml
# virsh define /etc/libvirt/qemu/wintest01.xml
8. 编辑KVM虚拟机配置文件
# virsh edit wintest01
virsh edit将调用vi命令编辑/etc/libvirt/qemu/wintest01.xml配置文件。也可以直接通过vi命令进行编辑,修改,保存。
可以但不建议直接通过vi编辑。
9. virsh console 控制台管理linux虚拟机
[root@node1 data]# virsh console oeltest02
10. 其它virsh命令
(1) 挂起服务器
# virsh suspend oeltest01
(2) 恢复服务器
# virsh resume oeltest01