八:如何在线添加/移除虚拟机的内存

如果应用/DB需要更多内存,则需要调整VM的内存限制。KVM支持在配置了VM最大内存限制范围内动态调整内存。VM配置包涵2部分:

  • 最大限制

  • 当前分配

任何时候,你不能使用virsh setmem命令动态分配超过最大内存的量,而是需要关闭guest来调整VM最大内存限制。

检查VM的内存限制和当前分配内存

[root@UA-HA ~]# virsh dumpxml  UAKVM2|grep -i memo

  <memory unit='KiB'>2621440</memory>
  <currentMemory unit='KiB'>1048576</currentMemory>

以上配置

分配给VM的内存:1GB(Current Memory Unit) 最大内存限制:2.5GB(Memory Unit)

注意:VM虚拟机只能看见"currentMemory Unit"值

调整运行中VM的RAM/Memory

  • 登陆到KVM虚拟机中查看分配和使用的内存

[root@UA-KVM1 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1001          78         780           6         141         787
Swap:           411           0         411
[root@UA-KVM1 ~]#
  • 使用root登陆到KVM主机

  • 列出KVM虚拟机查看domain配置

  • 缩减内存到 512M

检查 KVM guest

也可以增加虚拟机内存

  • 需要编辑VM配置来避免VM关闭和启动配置丢失

或者

增加VM的内存限制

如果尝试配置超过VM内存限制的内存分配,则会遇到以下报错:error: invalid argument: cannot set memory higher than max memory。这不是BUG,而是因为virsh setmem不能分配超过内存限制的使用内存。

  • 要增加内存限制,必须首先停止VM

  • 增加VM内存限制

  • 启动VM

  • 登陆到guest虚拟机中检查当前内存大小

  • 此时可以将分配内存调整到3G

  • 然后在guest中检查内存分配

  • 更新VM配置(这样重启后不会丢失配置)

或者直接编辑VM XML文件的currentMemory值到3GB

至此已经成功分配了KVM虚拟机内核和调整了VM的最大内存限制。

系列教程编译

本系列教程根据 UnixArena Linux KVM 系列教程编译,共分以下文章:

Last updated

Was this helpful?