前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >libvirt-内存分配和内存热插拔

libvirt-内存分配和内存热插拔

作者头像
虚拟化云计算
修改2018-04-13 22:36:42
3.7K0
修改2018-04-13 22:36:42
举报
文章被收录于专栏:虚拟化云计算

一. 启动内存

<memory unit='KiB'>8388608</memory>

虚拟机启动时使用的内存

二. 内存气泡

在虚拟机的xml文件中配置:

代码语言:javascript
复制
  <memory unit='KiB'>8388608</memory>

  <currentMemory unit='KiB'>158608</currentMemory>

  ......

  <devices>

    <memballoon model='virtio'>

      <stats period='10'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>

    </memballoon>

  </devices>

参数说明:

memory

在qemu命令中使用参数-m来设置的。表示虚拟机在启动阶段使用的内存。包括在启动或稍后热插拔时指定的可能的附加内存。

currentMemory

通过libvirt调整balloon值的初始值是currentMemory。

说明:

1.在虚拟机启动后加载了内存balloon驱动后就开始对虚拟机内存进行热插拔,先设置内存为<currentMemory>大小,这个<currentMemory>qemu进程不知道,时记录在libvirt中的。然后根据需求对内存进行调整(balloon),调整的上限是<memory>,这个<memory>qemu进程是知道的,在虚拟机启动时使用了这个值。

2.要禁止memballoon设备,可以设置memballoon model='none'

禁止内存气泡设备后,虚拟机内部看到的内存就是<memory>,也不能通过气泡进行调整。

通过ballon调整虚拟机内存大小(调整后在虚拟机内部是可以看到虚拟机内存大小变化的):

# virsh qemu-monitor-command instance-00000005 --hmp "info balloon"

# virsh qemu-monitor-command instance-00000005 --hmp "balloon 1024"

或者:

# virsh setmem instance-00000005 2097152

# virsh dommemstat instance-00000005

三. 内存热插拔

代码语言:javascript
复制
虚拟机的xml文件

 <maxMemory slots='1' unit='KiB'>10388608</maxMemory>

  ......

 <cpu mode='host-model'>

    ......

    <numa>

      <cell id='0' cpus='0' memory='4194304' unit='KiB'/>

    </numa>

  </cpu>

<maxMemory>的值表示通过 hot-plug 可以达到的内存的上限(包含虚拟机初始内存)。其中 slots 表示 DIMM 插槽的数量,每个插槽在运行时都可以插入一个内存设备,上限是 255 个。

<numa>内的配置用于指定虚拟机内的 NUMA 拓扑。

代码语言:javascript
复制
要插入内存设备xml文件

<memory model='dimm'>

    <target>

        <size unit='KiB'>524287</size>

        <node>0</node>

    </target>

</memory>

<size>指定设备的内存容量,<node>指定插入到虚拟机的哪个 NUMA 节点。

插入内存前虚拟机内部:

插入内存:

# virsh attach-device --live instance-00000005 mem.xml

插入内存后虚拟机内部:

激活新插入的内存,并查看内存:

注:新的内存设备插入之后,内存气泡可调整的上限值也随之增大相应的大小。

四. 热插拔内存后虚拟机内部自动 online 内存

为了让系统自动 online 添加的内存,可以设置 udev 规则,内容如下:

代码语言:javascript
复制
/etc/udev/rules.d/99-hotplug-memory.rules

# automatically online hot-plugged memory

ACTION=="add", SUBSYSTEM=="memory",ATTR{state}="online"

五. 目前支持内存热插的 Windows 版本有:

Windows Server 2008 R2, Enterprise Edition and Datacenter Edition

Windows Server 2008, Enterprise Edition and Datacenter Edition

Windows Server 2003, Enterprise Edition and Datacenter Edition

所有 Windows 系统都不支持内存热拔操作。


关注本公众号,了解更多关于云计算虚拟化的知识。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 虚拟化云计算 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档