环境介绍

在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. Tomcat在IDEA部署Web项目

    Tomcat在IDEA上部署Web项目: 一.新建Maven-Web项目: 1.新建项目,选择Maven,从模板中创建,选中web-app 2.选择项目地址: 3.选择配置的maven(如果按我之前写 ...

  2. 愉快地使用Open Live Writer写博客

    想要坚持写博客的习惯,却又无法忍受网页编辑器的各种不方便?open live writer是一个不错的选择.对我来说最有诱惑的就是能够快速的黏贴图片.代码.使用过程遇到不少坑,最坑的就是不能使用163 ...

  3. jQuery中效果animate方法解决width是百分比出现的问题

    jQuery中效果animate方法解决width是百分比出现的问题 http://www.mafutian.net/131.html 问题描述: 效果如图,初始化,每个层宽20%,采用animate ...

  4. LightOJ1336

    题目大意: 给你一个 n ,求出 1 到 n 中有多少个数的因数和为偶数. 解题思路: 可以先求出因数和为奇数的数字的个数. 由算术基本定理我们可以得到:N=P1a1P2a2P3a3 … Pnan, ...

  5. 开箱即用,Knative 给您极致的容器 Serverless 体验

    作者 | 冬岛  阿里巴巴技术专家 导读:托管 Knative 开箱即用,您不需要为这些常驻实例付出任何成本.结合 SLB 云产品提供 Gateway 的能力以及基于突发性能型实例的保留规格功能,极大 ...

  6. format函数格式化显示的方法

    数字 格式 输出 描述 3.1415926 {:.2f} 3.14 保留小数点后两位 3.1415926 {:+.2f} +3.14 带符号保留小数点后两位 -1 {:+.2f} -1.00 带符号保 ...

  7. JavaScript实现单向链表结构

    参考资料 一.什么是链表结构? 1.1.简介 链表和数组一样, 可以用于存储一系列的元素, 但是链表和数组的实现机制完全不同,链表中的元素在内存不是连续的空间,链表的每个元素由一个存储元素本身(数据) ...

  8. DDD之1微服务设计为什么选择DDD

    背景 名词解释 如果你的团队目前正是构建微服务架构风格的软件系统,问自己两个问题? 软件架构演进 软件架构大致经历了从单机架构,集中式架构,分布式微服架构,程序的层次图如下所示. 单机架构 特点如下: ...

  9. Redis 入门到分布式 (八)Redis Sentinel

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) sentinel-目录 主从复制高可用 安装配置 实现原理 架构说明 客户端连接 常见开发运维问题 一. ...

  10. 数据库之 MySQL --- 下载、安装 及 概述(一)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一 . MySql数据库的安装 1.图解MySQL程序结构 ​ 2.双击运行安装程序:以Win32位为例 ...