balloon 内存管理
内存 balloon 是指在虚拟化环境下,宿主机可以将分配给虚机的部分内存进行回收给 其他虚机或其他进程 使用的一种技术,目前 kvm,xen,vmware 等都对 balloon 技术提供支持,这里只介绍 kvm 下的 balloon 技术。
气球 中的内存是指 host 中可以使用的内存,给气球充气,就是讲 guest 中不使用的部分内存放到气球中让 host 中的进程使用。给气球放气,就是将气球中的内存释放给 guest 使用。
qemu 中 balloon 的使用
# 在 qemu 的配置文件中添加
[device "balloon0"]
driver = "virtio-balloon"
启动虚拟机,我们只开了 1G 内存
在虚拟机内部看到有 1G 内存,符合预期,我们调整 balloon 的大小
观察到 balloon 的大小被调整到 512M,虚拟机内部的内存也被调整到 512M,符合预期
在宿主机上 虚拟机进程占用的 内存也相应减少了
balloon 可以做什么
防止 host 出现 OOM 如果宿主机有 8G 内存,开了 4 个 2G 的虚拟机,但是 每个虚拟机并不是一直都会占用 2G 内存,在宿主机内存占用过高时,可以动态调整每个虚拟机的内存大小,防止 host 出现 OOM。