KVM虚拟机管理及性能优化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KVM虚拟机管理及性能优化相关的知识,希望对你有一定的参考价值。

KVM虚拟机管理及性能优化
本章接上一篇文章继续为大家讲解KVM的操作命令、KVM文件管理、虚拟机的克隆、虚拟机快照以及 KVM性能优化。

?

  • 使用KVM命令集管理虚拟机
  • KVM关机开机命令

    # virsh -h     //查看命令帮助
    # virsh list --all      //查看虚拟机状态
    # virsh shutdown CentOS7.4-x86_64  //关闭虚拟机
    # virsh start CentOS7.4-x86_64   //启动虚拟机
    # virsh destroy CentOS7.4-x86_64        //强制关机
    # virsh create /etc/libvirt/qemu/CentOS7.4-x86_64.xml      //通过配置文件启动虚拟机

技术分享图片

?

  • 挂起和恢复

    # virsh suspend CentOS7.4-x86_64       //挂起虚拟机
    # virsh resume CentOS7.4-x86_64        //恢复虚拟机
  • 设置随宿主机开机自启动

    # virsh autostart CentOS7.4-x86_64    
  • 导出虚拟机配置

    # virsh dumpxml CentOS7.4-x86_64 > /etc/libvirt/qemu/test01.xml
  • 删除虚拟机

    # virsh shutdown  CentOS7.4-x86_64   //先关闭
    # virsh undefine  CentOS7.4-x86_64   //再删除

技术分享图片

?

  • 通过备份恢复删除的虚拟机

    # cd /etc/libvirt/qemu/
    # mv test01.xml CentOS7.4-x86_64
    # virsh define CentOS7.4-x86_64      //重新定义虚拟机
  • 修改配置文件

    # virsh edit CentOS7.4-x86_64
    # vim /etc/libvirt/qemu/CentOS7.4-x86_64.xml

    技术分享图片

?

  • KVM文件管理
  • 通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如:系统因为配置问题无法启动时,可以直接修改虚拟机的文件。虚拟机的磁盘文件有 raw和 qcow2 两种格式。 KVM默认格式是raw,raw格式性能最好、速度最快,其缺点是不支持一些新的功能,如镜像、Zlib磁盘压缩、AES加密等。
  • 这里介绍本地yum安装的libguestfs-tools后产生的命令行工具(这个工具可以查看qcow2格式的磁盘文件)

?

  • 1:转换raw格式磁盘文件至qcow2格式
    ?

    # yum install libguestfs-tools -y       //安装命令行工具
    # qemu-img info /vdir/CentOS-7.4-x86_64.img   //查看当前磁盘格式
    关机后  磁盘转换成qcow2格式
    # virsh shutdown CentOS7.4-x86_64    
    # qemu-img  convert -f raw -O qcow2 /vdir/CentOS-7.4-x86_64.img /vdir/CentOS-7.4-x86_64.qcow2

技术分享图片
?

  • 2:修改xml配置文件
    ?

    # virsh edit CentOS7.4-x86_64   //编辑xml配置文件
    <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type=‘file‘ device=‘disk‘>
      <driver name=‘qemu‘ type=‘qcow2‘/>                      #修改qcow2
      <source file=‘/vdir/CentOS-7.4-x86_64.qcow2‘/>     #修改qcow2
      <target dev=‘vda‘ bus=‘virtio‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x06‘ function=‘0x0‘/>
    </disk>

    技术分享图片

    ?

  • 3:命令使用

    virt-cat 命令类似cat
    virt-edit 命令用于编辑文件,用法与vim基本一致
    virt-df 命令用于查看虚拟机磁盘信息
    ?

    # virt-cat -a /vdir/CentOS-7.4-x86_64.qcow2 /etc/hostname     //查看虚拟机主机名
    # virt-df -h CentOS7.4-x86_64                                    //查看虚拟机挂载磁盘信息
    # virt-edit -a /vdir/CentOS-7.4-x86_64.qcow2 /etc/resolv.conf  //编辑DNS客户机配置文件

    技术分享图片

    ?
    ?

  • 虚拟机克隆

    # virt-clone -o CentOS7.4-x86_64 -n test01 -f /vdir/test01.qcow2      //从 CentOS7.4-x86_64 克隆 test01

技术分享图片

?

  • 虚拟机快照

    # virsh start test01
    # virsh snapshot-create test01    //创建快照
    # virsh snapshot-current test01   //查看快照版本信息
    # virsh snapshot-list test01     //查看快照信息
    # virsh snapshot-revert test01 1533636617  //恢复虚拟机至1533636617
    # virsh snapshot-delete test01 1533636876  //删除快照

技术分享图片

?
?

?

  • KVM性能优化
    KVM的优化思路及步骤?
    KVM采用全虚拟化技术,全虚拟化要由一个软件来模拟硬件层,故有一定的损耗,特别是I/O,因此需要优化。

  • 1:CPU优化
    所有guestcpu 不要超过物理机的CPU总数,建议复制主机CPU配置。

  • 2:内存优化
  • 1) :KSM(相同页合并)开启KSM会将相同的内存合并

    # cd /sys/kernel/mm/ksm/     //这个目录可查看内存页共享的情况
    # ll   //查看
    pages_shared 记录了KSM共享的总页面数
    pages_sharing 文件中记录了当前共享页面数
    # echo 1 > run     //临时开启KSM  
    或者可以在/etc/rc.local 添加 echo 1 > /sys/kernle/mm/ksm/   开机自启动 
    # cat run   //查看KSM是否开启  0为关闭   1为开启
    # echo 1000 > pages_to_scan       // 决定每次查看多少个页面  默认100  最大不超过2000   越大越好 
  • 2) :对内存设置限制
  • 为了防止某个虚拟机无节制的使用资源

    # virsh memtune test01     //查看虚拟机test01 内存限制

    技术分享图片
    ?

  • 设置强制最大内存

    virsh memtune test01 --hard-limit 1024000 --live    //设置强制最大内存100MB  在线生效

技术分享图片

?
?

  • 3) :大页后端内存
  • 提升大页后端内存,减少客户机消耗的内存并提高TLB命中率从而提升KVM性能

    # cat /proc/meminfo     //查看内存信息,无可用大页

    技术分享图片

    # echo 25000 > /proc/sys/vm/nr_hugepages     //指定大页需要的内存页面数(临时生效)
    # sysctl -w vm.nr_hugepages=25000     //效果和上面一样(永久生效)
    # cat /proc/meminfo | grep HugePage 

    技术分享图片

?

  • 编辑虚拟机的XML配置文件来使用大页分配内存

    virsh destroy test01     //关闭虚拟机
    # virsh edit test01    //编辑xml配置文件
        <currentMemory unit=‘KiB‘>2097152</currentMemory>
        <memoryBacking><hugepages/></memoryBacking>     //添加使用大页
        <vcpu placement=‘static‘>1</vcpu>
    # mount -t hugetlbfs /dev/hugepages/     //挂载hugetlbfs文件系统
    # systemctl restart libvirtd.service        //重启服务

?

  • 3:I/O优化
  • 控制每台虚拟机对磁盘资源的消耗
  • 调整I/O的权重 ,权重越高写入磁盘的优先级越高。

    # virsh blkiotune test01        //查看权重
    # virsh blkiotune test01 --weight 500      //设置权重500  范围在100~1000
    # virsh blkiotune --help   //查看使用帮助 

技术分享图片

?

  • 系统调优工具
  • 用来监控和收集系统各个组件的数据,并依据数据提供的信息动态调整系统设置,达到动态优化系统的目的。

    # yum install tuned -y      //安装tuned工具  
    # systemctl start tuned.service    //启动tuned工具
    # tuned-adm active   //查看当前优化方案
    # tuned-adm list   //查看预先设定好的优化方案

技术分享图片

以上是关于KVM虚拟机管理及性能优化的主要内容,如果未能解决你的问题,请参考以下文章

实操干货KVM命令管理虚拟机与性能优化

KVM虚拟化技术详解--KVM的优化

实操KVM虚拟机的优化历程---按需优化

KVM性能优化

KVM性能优化

OpenStack入门篇之KVM性能优化及IO缓存介绍