环境介绍

在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. Xshell 与 Xftp 的安装与使用

    我们在日常工作中,不管是系统管理员.程序员.还是技术工程师,如果想登陆到 Linux 服务器,不可能总是跑到机房去工作,通常我们需要一个工具帮我们去做远程连接,这样我们只需要用笔记本电脑就可以连接到服 ...

  2. webpack指南(一)HRM+Tree Shaking

    参考:https://www.cnblogs.com/PasserByOne/p/12084323.html https://blog.csdn.net/qq593249106/article/det ...

  3. Word与Excel中,如何输入✔标志

    为了表达值的对错,或者相关任务是否完成,我们需要在word及excel中输入[√]和[x] Word与Excel中如何在方框“口”中打勾[√]和[x],在Word中打钩的方法有3种:第一种,在插入特殊 ...

  4. CF808E Selling Souvenirs

    题目链接: http://codeforces.com/contest/808/problem/E 题目大意: Petya 有 n 个纪念品,他能带的最大的重量为 m,各个纪念品的重量为 wi,花费为 ...

  5. Excel_通过单元格的值来引用以单元格值命名的sheet

    1.通过单元格的值来引用以单元格值命名的sheet,在做多个类似sheet的统计结果时效率比较高 当一项测试中有很多个模块,每个模块中有很多条测试用例 将以上测试用例整理在Excel中,每个模块一个s ...

  6. 本地安装并运行http-server、browser-sync、webpack

    有一些自带命令的辅助开发.测试类的工具,官方都推荐全局安装,如果不想全局安装只想在某个项目下用该怎么办呢? 如http-server.browser-sync.webpack这种自带CLI的工具 使用 ...

  7. shiro认证通过之后的授权

    subject.hasRole("") ; subject.hasRoles(List); subject.hasAllRoles(); subject.isPermitted(& ...

  8. Ajax用法查询

    1)$.get(url, [data], [callback], [type]) 2)$.post(url, [data], [callback], [type]) 其中: url:代表请求的服务器端 ...

  9. C#常见异常

    SystemException 其他用户可处理的异常的基本类 ArgumentException 方法的参数是非法的 ArgumentNullException 一个空参数传递给方法,该方法不能接受该 ...

  10. C# 7.0 新增功能&结合微软简化理解

    C# 7.0更新时间为2019.2左右 C# 7.0 ~ 7.3 分别需要VS2017 与 .NET Core 1.0. .NET Core 2.0 SDK..NET Core 2.1 SDK,需要在 ...