环境介绍

在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. 力扣题解-560. 和为K的子数组

    题目描述 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数. 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] ...

  2. python操作MySQL之pymysql模块

    import pymysql#pip install pymysql db=pymysql.connect(','day040') cursor=db.cursor() #创建游标 book_list ...

  3. mysql小白系列_02 mysql源码安装标准化

    问题: 1.为什么数据目录和日志目录需要分开? 2.如何标准化配置多实例?(例如:一台物理主机上部署3306与3307两个实例) 3.详细描述MySQL编译安装的过程(截图安装步骤) 1.为什么数据目 ...

  4. oracle的操作-表空间

    查询以创建的表空间 select dbms_metadata.get_ddl('TABLESPACE','你的表空间名称') from dual; --查询空间创建的位置 select t1.name ...

  5. 用STM32的UART实现DMX512

    写在最前面: DMX512(digital multiplex) 其实就是主机向从机整包单向广播发送的协议(protocol),从机自取所需. 一.链接拓扑(network topology) 根据后 ...

  6. 【Java】手把手模拟CAS,瞬间理解CAS的机制

    话不多少,先看个案例,[模拟100个用户,每个用户访问10次网站]”: public class ThreadDemo1 { //总访问量 ; //模拟访问的方法 public static void ...

  7. S32DS编译程序出现Type region `SRAM' overflowed by 19240 bytes错误

    用S32DS编译工程遇到Type region `SRAM' overflowed by 19240 bytes错误(芯片为S9KEAZ64AMLH) 程序中未初始化的变量存放SRAM中 当程序出现未 ...

  8. 看完这篇还不懂Redis的RDB持久化,你们来打我!

    一.为什么需要持久化 redis里有10gb数据,突然停电或者意外宕机了,再启动的时候10gb都没了?!所以需要持久化,宕机后再通过持久化文件将数据恢复. 二.优缺点 1.rdb文件 rdb文件都是二 ...

  9. VUE 子组件向父组件传值 , 并且触发父组件方法(函数)

    目标:封装一个  搜索组件 <子组件需要传一个或者多个搜索参数到父组件,然后父组件执行列表查询函数> 1.子组件 <div> <input v-model="l ...

  10. Rocket - diplomacy - enumerateMask

    https://mp.weixin.qq.com/s/s3hr5JJX2_pwNgdu8WqV0Q   介绍enumerateMask的实现.(仅供理解,非严谨证明)   ​​   1. 基本定义   ...