logo NodeSeekbeta

抵制内存超售,提高小鸡稳定性---禁用Balloon气球驱动

什么是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 -

重启后生效

12345
  • 一键命令

    echo "blacklist virtio_balloon" | sudo tee /etc/modprobe.d/blacklist.conf
    sudo update-initramfs -u
    

    改完记得重启

  • 但有个副作用就是你也用不到别人被超售的那部分内存了。

    比如一个256M内存的鸡,关了ballon就变224M。

  • 这么搞老板给你清退了。。不如关闭spectre和meltdown补丁来的提升性能明显。

  • (
      sudo crontab -u root -l 2>/dev/null
      echo "@reboot /usr/sbin/rmmod virtio_balloon"
    ) | sudo crontab -u root -
    

    楼主 dd 系统的可以试试这个。

  • 支持

  • 建议加精

  • 支持

  • 你好 vim /etc/modprobe.d/blacklist.conf 按i无法编辑呢

  • @叶筱筱 #4 可以使用 insert键 或者 大写的A键 进入编辑

  • ( dd系统,测试无效 )

    是dd的系统对这种方法不管用吗?

  • mark

  • @SayWhat13 #6 我测试过不同脚本dd系统重装,virtio_balloon仍然会出现。所以需要手动禁用

  • 前排留名。感谢

  • bd

12345

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有15675位seeker

🎉欢迎新用户🎉