什么是Balloon气球驱动?
通过virtio_balloon驱动实现动态调整Guest与Host的可用内存空间。Balloon的工作原理是在虚拟机中安装一个kmod,KVM宿主机内存不足,会根据virtio_balloon判断哪些内存页面可以被回收,然后virtio_balloon将这些内存占用,返回给宿主机使用。
root用户执行 rmmod virtio_balloon 可以关闭virtio_balloon。
(请注意,此方法重启失效)
事实上,大多数使用Proxmox VE的厂商都会开启virtio_balloon进行超售。
https://github.com/uselibrary/memoryCheck
使用memoryCheck.sh一键检测VPS内存是否超售
wget https://raw.githubusercontent.com/uselibrary/memoryCheck/main/memoryCheck.sh && chmod +x memoryCheck.sh && bash memoryCheck.sh
根据实际测试经验,超过80%小鸡会出现“balloon超售!”
如何永久禁用/关闭Balloon?
( 一键省流版 在末尾的 补充1 和 补充2 )
( dd系统,测试无效,virtio_balloon仍然会出现。所以需要手动禁用 )
1.打开 /etc/modprobe.d/ 目录
cd /etc/modprobe.d/
2.在 /etc/modprobe.d/ 目录中,创建一个新的配置文件,例如 blacklist.conf
vim /etc/modprobe.d/blacklist.conf
3.在配置文件中添加禁用模块的规则。
在打开的配置文件中,添加以下行:
blacklist virtio_balloon
这将告诉系统在引导时禁用 virtio_balloon 模块。
4.保存并关闭conf文件
5.更新 initramfs:
update-initramfs -u
6.重启小鸡。使用memoryCheck.sh再次检测
补充1,置顶评论的省流一键版:
echo "blacklist virtio_balloon" | tee /etc/modprobe.d/blacklist.conf && update-initramfs -u
重启小鸡
补充2,评论区另一个办法,使用crontab每次开机自动 rmmod virtio_balloon
(
crontab -u root -l 2>/dev/null
echo "@reboot /usr/sbin/rmmod virtio_balloon"
) | crontab -u root -
重启后生效
一键命令
改完记得重启
但有个副作用就是你也用不到别人被超售的那部分内存了。
比如一个256M内存的鸡,关了ballon就变224M。
这么搞老板给你清退了。。不如关闭spectre和meltdown补丁来的提升性能明显。
楼主 dd 系统的可以试试这个。
支持
建议加精
支持
你好 vim /etc/modprobe.d/blacklist.conf 按i无法编辑呢
@叶筱筱 #4 可以使用 insert键 或者 大写的A键 进入编辑
是dd的系统对这种方法不管用吗?
mark
@SayWhat13 #6 我测试过不同脚本dd系统重装,virtio_balloon仍然会出现。所以需要手动禁用
前排留名。感谢
bd