Virtio-Balloon 即内存气泡,通过在虚拟机里面添加一个虚拟的气球设备,实现宿主机和虚拟机之间的内存动态分配和回收,从而提高内存利用效率。
具体工作原理是,该气球设备可以和虚拟机管理程序通信,发送内存使用情况,当虚拟机内存不足时可以要求释放内存,不需要时可以申请内存,虚拟机管理程序根据整体情况进行分配。
但是一些不道德的云服务商有时会通过Virtio-Balloon进行“内存超售”,也就是超额出售内存资源,无法保证用户购买的虚拟机内存,一旦宿主机内存不足所有虚拟机都会受影响。
为此,我今天带来了禁用Virtio-Balloon,以提高稳定性的方法。
检查
要检查是否存在Virtio-Balloon,可使用lsmod检查是否加载
若无输出,则不存在Virtio-Balloon
卸载
临时卸载
使用该命令可卸载Virtio-Balloon模块,但在下一次开机会自动启动
永久卸载
为了防止重启后自动启动,可以将规则添加到/etc/modprobe.d/下的配置文件
打开配置文件
上述命令中,vim可换为您习惯的文件编辑器,blacklist.conf文件名可修改,只要确保后缀为.conf
写入规则
使用文件编辑器在配置文件内写入
保存并退出文件编辑器
通过在 blacklist-virtio-balloon.conf 文件中写入 "blacklist virtio_balloon",系统将不再加载 virtio_balloon 模块,因此禁用了相关的功能和特性。这样做可以确保系统在启动时不会加载这个模块,从而实现了禁用 virtio_balloon 内核模块的目的。
重新生成initramfs
它会重新生成 initramfs 文件,将最新的配置文件和内核模块信息包含进去。
对于编译到内核
部分服务商(如Cloudcone)可能会将virtio_balloon编译进内核,而不是内核模块,使得无法通过
lsmod | grep virtio_balloon
查询到,且rmmod virtio_balloon无法卸载,对于这种情况,有三种方法通过指定Linux内核启动时的命令行参数和选项禁用
首先,使用您喜欢的文件编辑器打开
/etc/default/grub
如vim
找到
GRUB_CMDLINE_LINUX
,在后面的引号内加上virtio_balloon=0
例如