【實操幹貨】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命令管理虛擬機與性能優化