1. 程式人生 > >KVM虛擬機管理及性能優化

KVM虛擬機管理及性能優化

eat 數據 fin 恢復刪除 func hostname ddr 控制 恢復

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虛擬機管理及性能優化