KVM虚拟化平台了解与搭建

KVM虚拟化平台

什么是KVM?

是Linux系统上的一种虚拟化平台,相当于Windows上安装VMware一样,以一种逻辑方式来打破原有的物理结构,可以允许一台服务器上运行多个操作系统,可以说KVM就是在Linux上安装的一款软件,可以在一台物理机上同时运行多个虚拟机

KVM有什么用?

如果Linux服务器利用率不高,则可以充分利用这些Linux服务器,在物理机上运行多个业务系统,合理运用资源

虚拟化的优势:

1.减少服务器成本,资源利用最大化

2.可以动态调整硬件资源,提高IT业务的灵活性

3.高可用性,具备更高效的故障防护手段

安装虚拟化平台

1.最简单的开启CUP虚拟化支持就是在安装系统的时候选择桌面,然后勾选虚拟化,安装虚拟化平台和工具

2.已经安装系统的话,安装KVM所需软件

yum -y groupinstall "Desktop"

yum -y install qemu-kvm qemu-kvm-tools python-virtinst.noarch qemu-img bridge-utils libvirt virt-manager

重启后检查CPU是否支持虚拟化

查看CPU是否支持虚拟化:cat /proc/cpuinfo | grep vmx

或者cat /proc/cpuinfo | grep -E 'vmx|svm'

检查kvm模块是否安装:lsmod | grep kvm

下图说明已经支持虚拟化也已经安装了kvm模块

配置KVM网卡

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
HWADDR=00:0C:29:64:B2:56
TYPE=Ethernet
UUID=abc7b758-5ef0-40de-9444-cb56f44de31a
ONBOOT=on
NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE="br0"

vim /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
TYPE=Bridge
ONBOOT=on
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.0.101
NETMASK=255.255.255.0
GATEWAY=192.168.0.101
DNS1=192.168.0.101

重启网卡:service network restart

KVM的管理与应用

kvm管理工具:virt-manager

打开virt-manager:virt-manager

补充:出现下列问题为virt-manager版本问题,virt-manager-0.9.0-34版本对中文字符集的支持有问题

解决方法:卸载virt-manager-0.9.0-34版本,重新安装virt-manager-0.9.0-31.el6.x86_64

双击localhost(QEMU)选择存储选项,然后点击+可以新建存储池(创建一个虚拟机的存储池存放虚拟机文件,再创建一个存储池存放iso镜像文件)

把安装需要用的镜像都可以放在/kvm/iso这个目录下,方便使用

选择bdqn点击新建卷

创建一个test_kvm

然后回到初始管理页面,点击新建,创建一个虚拟机名字为CentOS6.5

然后最后点击完成就可以了,就会跟安装系统一样跳出窗口,开始使用

KVM命令集管理虚拟机

备注:这里的test为虚拟机的名称

KVM的配置文件存放位置:/etc/libvirt/qemu/

查看虚拟机状态:virsh list --all

虚拟机开机:virsh start test

虚拟机关机:virsh shutdown test

强制关闭虚拟机电源:virsh destroy test

通过配置文件启动虚拟机:virsh create /etc/libvirt/qemu/test.xml

挂起虚拟机:virsh suspen test

恢复虚拟机:virsh resume test

配置虚拟机伴随宿主自动启动(需要创建/etc/libvirt/qemu/autostart目录,内容为开机自动启动的系统):virsh autostart test

导出虚拟机配置:virsh dumpxml test > /etc/libvirt/qemu/test.xml.bak

删除虚拟机(virsh list --all命令查看删除结果):virsh shutdown testvirsh undefine test

通过备份的配置文件重新定义虚拟机:virsh define /etc/libvirt/qemu/test.xml

修改虚拟机配置信息:virsh edit test

KVM文件管理

虚拟机磁盘文件的两种格式:rawqcow2

raw:默认格式,性能最好,速度最快,缺点是新功能的支持不齐全,

查看磁盘文件信息:qemu-img info /kvm/store/test.img

查看虚拟机磁盘信息:virt-df -h test

转换raw格式为qcow2格式

先关闭虚拟机:virsh shutdown test

转换格式:qemu-img convert -f raw -O qcow2 /kvm/store/test.img

文件文本操作

修改配置文件:virsh edit test(相当于vim命令)

查看配置文件:virt-cat -a /kvm/store/test.qcow2 /etc/sysconfig/network(相当于cat命令)

编辑文件:virt-edit -a /kvm/store/test.qcow2 /etc/php.ini

虚拟机克隆

首先要保证被克隆的虚拟机保持关闭状态

从test1克隆到test2:virt-clone -o test1 -n test2 -f /kvm/store/test2.qcow2

虚拟机快照

创建快照:virsh snapshot-create test

查看快照版本信息:virsh snapshot-current test

查看快照信息:virsh snapshot-list test

恢复快照:virsh snapshot-revert test 1382572463

删除快照:virsh snapshot-delete test 1382572463

备注:后面的数字是需要回到的版本号

KVM性能优化

KVM采取全虚拟化,全虚拟化是由一个软件来模拟硬件层,会有一定的损耗,特别是I/O,所以需要优化性能

CPU优化:所有虚拟机的guestcpu加起来的总数不要超过物理机,超过了会对性能带来严重的影响

内存优化

可以将内容相同的虚拟机内存合并(开启KSM),特别是操作系统一样的情况下,但是这个过程也会有性能消耗,需要考虑使用场景决定是否开启

查看内存页共享的情况:ll /sys/kernel/mm/ksm

pages_shared:该文件记录KSM共享的总页面数

pages_sharing:该文件记录当前共享的页面数

备注:每个页面的大小为4KB,内存大小(KB)=页面数X4

查询是否开启KSM:cat run(0为未开启,1为已开启)

临时开启KSM:echo 1 > run

开机自动开启KSM:echo 1 > /sys/kernel/mm/ksm/run

备注:该文件不支持vi编辑,只支持重定向

查看多长时间定期扫描相同页:cat pages_to_scan

备注:默认为100,越大越好,超过2000无效,需开启ksmtuned和tuned

查看当前虚拟机内存限制:virsh memtune vm

Hard_limit:强制最大内存

Soft_limit:可用最大内存

Swap_hard_limit:强制最大swap使用大小

设置强制最大内存100MB:virsh memtune vm --hard-limit 1024000 --live

--hard-limit:设置对象为强制最大内存

--soft-limit:设置对象为可用最大内存

--swap-hard-limit:设置对象为强制最大swap使用大小

--min-guarantee:保证最小内存

--config:下次重启生效

--live:在线生效

--current:只在当前生效

设置大页后端内存

查看内存信息:cat /proc/meminfo

1.指定大页需要的内存页面数(临时生效):echo 25000 > /proc/sys/vm/nr_hugepages

也可以vim /etc/sysctl.conf添加vi.nr_hugepages=2500来设置大页文件系统需要的内存页面数

2.关闭虚拟机:virsh destroy vm

3.编辑配置文件:virsh edit vm

添加<memoryBacking><hugepages/></memoryBacking>

4.挂载hugetlbfs文件系统,启动虚拟机

mount -t hugetlbfshugetlbfs /dev/hugepages

service libvirtd restart

virsh start vm

5.查看HugePage内存页面信息:cat /proc/meminfo | grep HugePage

I/O的优化

调整I/O权重weight(100-1000之间),权重越高决定哪个虚拟机数据优先写入磁盘

限制具体的I/O:virsh blkiotune vm

设置权重值:virsh blkiotune vm --weight 500

或者修改XML配置文件

<blkiotune><weight>500</weight></blkiotune>

系统调优工具

tuned:服务端程序

tuned-adm:客户端程序

安装工具:yum -y install tuned

启动服务:service tuned startservice ktune start

查看当前优化方案:tuned-adm active

查看预先设定好的优化方案:tuned-adm list

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章