环境介绍

在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
 

KVM在线扩展虚拟机内存的更多相关文章

  1. kvm linux虚拟机在线扩展磁盘

    说明: 1) vmware ESXi虚拟化平台也支持这台在线扩展磁盘功能. 2) kvm虚拟机也支持在线扩展磁盘功能,在线扩展有特定的使用环境,主要用于不能随便停用的生产环境中. 3) 经过测试KVM ...

  2. kvm在线磁盘扩展

    1,查看指定kvm虚拟机的现有磁盘domblklist

  3. CentOS7中KVM虚拟机内存、CPU调整

    CentOS7中KVM虚拟机内存.CPU调整 1. 调小虚拟机内存 调小虚拟机内存可以动态实现,不用关机 1.1 查看当前内存大小 [root@kvm01 ~]# virsh dominfo vm1- ...

  4. Qemu创建KVM虚拟机内存初始化流程

    转载请注明:[转载自博客xelatex KVM],并附本文链接.谢谢. [注]文章中采用的版本: Linux-3.11,https://www.kernel.org/pub/linux/kernel/ ...

  5. CentOS7.6中 KVM虚拟机内存、CPU调整

    CentOS7.6中 KVM虚拟机内存.CPU调整 一.调小虚拟机内存 调小虚拟机内存可以动态实现,不用关机 1.查看当前内存大小 [root@heyong kvm]# virsh dominfo t ...

  6. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(6)--在线调整虚拟机的大小

    前面提到过openstack环境部署及创建虚拟机的完整过程,然后有时候会发现创建的虚拟机规格太小,满足不了业务需求:亦或是虚拟机规格太大,容易造成资源浪费.于是就有了在线拉伸虚拟机规格的需求.所以,今 ...

  7. kvm基础 虚拟机内存、CPU调整

    转自http://blog.csdn.net/hnhuangyiyang/article/details/50902223 一.调小虚拟机内存 调小虚拟机内存可以动态实现,不用关机1.查看当前内存大小 ...

  8. KVM总结-KVM性能优化之内存优化

    我们说完CPU方面的优化(http://blog.csdn.net/dylloveyou/article/details/71169463),接着继续第二块内容,也就是内存方面的优化.内存方面有以下四 ...

  9. 2017版:KVM 性能优化之内存优化

    我们说完CPU方面的优化,接着我们继续第二块内容,也就是内存方面的优化.内存方面有以下四个方向去着手: EPT 技术 大页和透明大页 KSM 技术 内存限制 1. EPT技术 EPT也就是扩展页表,这 ...

随机推荐

  1. PAT1027 Colors in Mars (20分) 10进制转13进制

    题目 People in Mars represent the colors in their computers in a similar way as the Earth people. That ...

  2. mysql+redis缓存策略常见的错误

    什么时候应该更新缓存 应该是从数据库读取数据后,再更新缓存,从缓存读取到数据,就不需要再重新写缓存了,一个常见的错误是,每次访问接口都更新缓存,这样的话,如果接口一直有流量,那么db中的数据,就一直没 ...

  3. 实战!我用 Wireshark 让你“看得见“ TCP

    每日一句英语学习,每天进步一点点: 前言 为了让大家更容易「看得见」 TCP,我搭建不少测试环境,并且数据包抓很多次,花费了不少时间,才抓到比较容易分析的数据包. 接下来丢包.乱序.超时重传.快速重传 ...

  4. jQuery的替换/克隆

    1. 替换/克隆: 克隆: var $newImg=$img.clone() 2. 事件: 标准: 1. 普通绑定: $().on("事件名",function(){ ... }) ...

  5. hide handkerchief(hdu2104)

    思考:这种找手绢就是,在判断是否互质.用辗转相除法(用来求最大公约数:a)进行判断.r=a%b;a=b;b=r;循环限制条件:除数b=0是结束除法.如果这时被除数a=1,则表示两个互质. #inclu ...

  6. 消息队列RabbitMQ的安装配置与PHP中的使用

    一.RabbitMQ安装 windows安装 下载地址: https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.3/ra ...

  7. xshell行号显示

    xshell显示行号: 输入命令: vim ~/.vimrc 输入: set nu 之后在打开文件 就可以 看到行号显示.

  8. 理解session及微信小程序使用session

    session介绍 由于Http是无状态的协议,所以服务端需要记录用户的状态时,就需要某种机制来识别具体的用户,实现这个机制的方式就是session. 典型的场景比如购物车,当你点击下单按钮时,由于H ...

  9. 实现.Net程序中OpenTracing采样和上报配置的自动更新

    前言 OpenTracing是一个链路跟踪的开放协议,已经有开源的.net实现:opentracing-csharp,同时支持.net framework和.net core,Github地址:htt ...

  10. [前端开发]form-data和x-www-form-urlencoded的区别

    在后台开发时,之前做了文件的上传,用的是form-data,但并不知其区别.今天遇到了req.body为空的情况,切换成了x-www-form-urlencoded解决 form-data 就是htt ...