1. 程式人生 > >【實操幹貨】KVM命令管理虛擬機與性能優化

【實操幹貨】KVM命令管理虛擬機與性能優化

默認 開機 大頁 limit get entos sys 控制 導出虛擬機

KVM命令管理虛擬機

1、KVM基本功能管理

  • 簡要介紹KVM中經常使用的基本功能管理命令(CentOS7.4是宿主機中安裝的虛擬機);
1)、virsh -h       #查看命令幫助

2)、ls /etc/libvirt/qemu       #查看KVM的配置文件存放目錄(虛擬機系統實例配置文件的文件名為.xml)

3)、virsh list     #查看虛擬機狀態;只查看運行的虛擬機狀態

4)、virsh list --all       #查看所有虛擬機狀態;包括運行的與關閉的

5)、virsh shutdownCentOS7.4      #虛擬機關機

6)、virsh start CentOS7.4         #虛擬機開機

7)、virsh create /etc/libvirt/qemu/CentOS7.4.xml      #通過配置文件啟動虛擬機系統實例

8)、virsh suspend CentOS7.4       #掛起虛擬機

9)、virsh resume CentOS7.4        #恢復虛擬機

10)、virsh autostartCentOS7.4    #配置虛擬機實例伴隨宿主機自動啟動;此命令會創建/etc/libvirt/qemu/autostart/目錄,目錄內容為開機自動啟動的系統

11)、Vvirsh dumpxml CentOS7.4 > /etc/libvrit/qemu/test01.xml      #導出虛擬機配置

12)、virsh undefine CentOS7.4         #刪除虛擬機;刪除虛擬機之前需要關閉虛擬機,配置文件會被刪除,但磁盤文件不會被刪除

13)、virsh defineCentOS7.4.xml       #重新定義虛擬機;需要通過備份文件重新定義虛擬機,將導出的test01.xml重命名為CentOS7.4.xml

14)、vim /etc/libvirt/qemu/CentOS7.4.xml   #通過其配置文件修改其配置信息,如:內存大小、磁盤大小

15)、virsh edit CentOS7.4      #等同於打開配置文件修改

2、KVM文件管理

  • 通過文件管理可以查看、修改、復制虛擬機的內部文件。

  • (1)、轉換raw格式磁盤文件至qcow2格式

qemu-img info /abc/CentOS7.4 #查看當前磁盤格式

virsh shutdown CentOS7.4 #關機

qemu-img convert -f raw -O qcow2 /abc/CentOS7.4.img /abc/CentOS7.4.qcow2 #磁盤轉換成qcow2格式

  • (2)、修改CentOS7.4的xml配置文件

virsh edit CentOS7.4

技術分享圖片技術分享圖片

  • (3)、YUM安裝libgusetfs-tools後產生的命令行工具可直接讀取qcow2格式的磁盤文件

virt-cat -a /abc/CentOS7.4.qcow2 /etc/hostname #查看虛擬機主機名

virt-df -h CentOS7.4 #查看虛擬機的磁盤信息

virt-edit -a /abc/CentOS7.4.qcow2 /etc/resolv.conf #編輯DNS客戶機配置文件;用法與vim基本一致

技術分享圖片

3、虛擬機快照

virsh start CentOS7.4

virsh snapshot-create CentOS7.4 #創建快照

virsh snapshot-current CentOS7.4 #查看快照版本信息

virsh snapshot-list CentOS7.4 #查看快照信息

virsh snapshot-revert CentOS7.4 1533807764 #恢復虛擬機至1533807764

virsh snapshot-delete CentOS7.4 1533807829 #刪除快照

技術分享圖片

KVM性能優化

  • KVM為什麽要調優:
  • 性能的耗損是關鍵。KVM采用全虛擬化技術,全虛擬化要有一個軟件來模擬硬件層,固有一定的耗損,特別是I/O,因此需要優化。

1、CPU優化

  • 要考慮CPU的數量問題,所有guestcpu的總數目不超過物理機CPU的總數即可。

2、內存優化

  • 1) 、KSM(相同頁合並)開啟KSM會將相同的內存合並
  • 內存分配的最小單位是 page(頁面),默認大小是4KB。可以將host機內容相同的內存合並,以節省內存的使用,特別是在虛擬機操作系統都一樣的情況下,肯定會有很多內容相同的內存值,開啟了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/ run讓KSM開機自運行

cat run #查看KSM是否開啟 0為關閉 1為開啟

echo 1000 > pages_to_scan #決定每次查看多少個頁面;默認100;最大不超過2000;越大越好

  • 2)、對內存設置限制

  • 如果我們有多個虛擬機,為了防止某個虛擬機無節制地使用內存資源,導致其他虛擬機無法正常使用,就需要對內存的使用進行限制。

virsh memtune CentOS7.4 #查看虛擬機CentOS7.4內存限制

virsh memtune CentOS7.4 --hard-limit 1024000 --live #設置強制最大內存100MB;在線生效

技術分享圖片

3、大頁後端內存

cat /proc/meminfo #查看內存信息,無可用大頁

echo 25000 > /proc/sys/vm/nr_hugepages #指定大頁需要的內存頁面數,臨時生效;(sysctl -w vm.nr_hugepages=25000 #永久生效)

cat /proc/meminfo | grep HugePage

技術分享圖片

  • 關閉虛擬機,編輯虛擬機XML配置文件使用大頁來分配內存

virsh destroy CentOS7.4

vim /etc/libvirt/qemu/CentOS7.4.xml

<domain type=‘kvm‘>
  <name>CentOS7.4</name>
  <uuid>0bfbdbaa-cf1d-4e8a-bf0d-6db12988de14</uuid>
  <memory unit=‘KiB‘>2097152</memory>
  <currentMemory unit=‘KiB‘>2097152</currentMemory>
  <memoryBacking><hugepages/></memoryBacking>               #添加,使用大頁
  <vcpu placement=‘static‘>1</vcpu>

技術分享圖片

mount -t hugetlbfs /dev/hugepages/ #掛載hugetlbfs文件系統

systemctl restart libvirtd.service #重啟服務

virsh start CentOS7.4 #開啟虛擬機

3、I/O優化

  • 在實際的生產環境中,為了米面過度消耗磁盤資源而對其他的虛擬機造成影響,我們希望每臺虛擬機對磁盤資源的消耗是可控的,比如多個虛擬機往硬盤中寫數據,誰可以優先寫,就可以調整I/O的權重weight,權重越高寫入磁盤的優先級越高。
  • 對磁盤I/O控制方式有兩種方式:
  • 1)、在整體中的權重,範圍在100~1000.
  • 2)、限制具體的I/O.

virsh blkiotune CentOS7.4 #查看當前虛擬機權重狀態

virsh blkiotune CentOS7.4 --weight 500 #通過命令修改權重為500

技術分享圖片

4、系統優化工具tuned/tuned-adm

  • tuned是服務端程序,用來監控和收集系統各個組件的數據,並依據數據提供的信息動態調整系統設置,達到動態優化系統的目的。
  • tuned-adm是客戶端程序,用來和tuned打交道,用命令行的管理方式和配置tuned/tuned-adm,提供了一些預先配置的優化方案可直接使用。

yum install tuned -y

service tuned start #啟動服務

tuned-adm active #查看當前優化方案

tuned-adm list

技術分享圖片

【實操幹貨】KVM命令管理虛擬機與性能優化