KVM在線擴展虛擬機內存


環境介紹

在KVM下有一台虛擬機內存不夠需要擴展內存。宿主機地址是192.168.1.28。我需要擴展的虛擬機是centos1708vm03。

1、登陸上宿主機查看虛擬機配置

virsh dumpxml centos1708vm03 | head -n 10

 

 

此時內存為1G

2、在centos1708vm03查看內存情況

 

 

3、將虛擬機內存擴展為2G

在宿主機上 virsh setmem centos1708vm03 2048000k

 

 

注意:能夠在線調整的最大內存不能超過為虛擬機分配的最大內存,否則需要關閉虛擬機或者重啟宿主機上調最大內存(設置VM使用的最大內存或最大CPU可以使用 # virsh edit centos1708vm03命令)在創建虛擬機時將最大內存的值設大。

4、登錄到centos1708vm03上查看內存情況

 

 

與沒有擴展內存前,多出了1G的內存。至此我們就完成了虛擬機的內存擴展。
 

5、QEMU命令優化配置虛擬機CPU和內存

 
 

QEMU命令配置方法

配置CPU類型示例:
# qemu-kvm -cpu SandyBridge myVM.img
在客戶機上看到的CPU型號中,顯示(SandyBridge)
 
配置對稱多處理器示例:
# qemu-kvm -smp 8, sockets=2, cores=2, threads=2 myVM.img
指定虛擬機支持SMP(對稱多處理器),有8個邏輯CPU,2個CPU插槽,每個插槽上的CPU為雙核,在每個CPU內核上啟用超線程。這些參數的缺省值均為1。
 
配置內存容量示例:
# qemu-kvm -m 1G myVM.img 
容量的缺省單位為MB,內存容量的缺省配置為128MB。
 

狀態信息查詢

在Linux系統中,查看與CPU有關的信息:
# cat /proc/cupinfo
在Linux系統中,查看與CPU有關的信息:
# cat /proc/meminfo
# dmsg
# free -m
 

資源過載使用

KVM允許客戶機過載使用(over-commit)CPU資源,即讓一個或多個客戶機使用vCPU的總數量超過宿主機實際擁有的物理CPU數量。但不建議單個客戶機的CPU數量多於物理宿主機的CPU數量。
 
在KVM中,客戶機是一個QEMU進程,宿主機系統把它當做一個普通的Linux進程。Linux內核在進程請求更多內存時才分配給它們更多的內存。因此,在KVM中內存也是允許過載使用,分配給客戶機的內存總數可以大於實際可用的物理內存總數。客戶機過載使用內存的上限是:宿主機可用物理內存空間和交換空間的大小之和。超過這個上限會使客戶機因內存不足被強制關閉。
 
一個內存過載使用的示例:
宿主機有物理內存32GB,准備同時運行32個內存配置為2GB的客戶機。不包括客戶機進程所需的內存,維持宿主機本身運行約需4GB內存。作為一般情況下的操作系統安裝,32GB物理內存需要分配8GB的交換分區。而考慮作為Hpervisor運行客戶機,需要增加交換分區容量:32x 2GB + 4GB - 32GB = 36GB。在此種情況下,該物理機的交換分區應分配:44GB。
 

balloon技術

balloon(氣球)技術可以在客戶機運行時動態地調整它所占用的宿主機內存資源。ballooning技術形象地在客戶機占用的內存中引入氣球( balloon)的概念。客戶機自己不能使用氣球中的內存,它是供宿主機使用的內存。當宿主機內存使用緊張時,可以請求客戶機返還一些已分配給客戶機的內存,客戶機會釋放其空閑的內存,使內存氣球充氣膨脹,而使宿主機可以回收氣球中的內存用於其他進程。反之,當客戶機中內存不足時,也可以讓客戶機的內存氣球壓縮,釋放出內存氣球中的部分內存,讓客戶機使用更多的內存。原理如圖所示:

 

 

KVM中的balloon

KVM通過客戶機中的virtio_balloon驅動對ballooning技術提供支持。它的工作過程如下:
1)KVM發送請求到客戶機操作系統讓其歸還一定數量的內存。
2)客戶機操作系統中的virtio_balloon驅動接收到請求。
3) virtio_balloon驅動使客戶機的內存氣球膨脹,virtio balloon驅動會盡可能地滿足KVM請求中的內存數量,但不一定能完全滿足。
4)客戶機操作系統歸還氣球中的內存給KVM。
5)KVM可以根據需要使用從氣球中得來的內存。
6)客戶機的virtio balloon驅動可以向KVM索回已返還的內存,KVM將內存返還給客戶機,客戶機操作系統壓縮內存氣球,使氣球中的內存被釋放出來,重新由客戶機訪問和使用。
 
QEMU命令在缺省情況下沒有分配balloon設備,可用“-balloon virtio”參數來分配balloon設備給客戶機,使其調用virtio_balloon驅動實現balloon內存管理。
# qemu-kvm -m 1024 -balloon virtio myVM.img
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM