type
status
date
slug
summary
tags
category
icon
password
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
例如
若
GRUB_CMDLINE_LINUX
后的引号内非空,则按下面修改例如(abc为示例原有参数)
修改完毕后,输入以下命令更新grub配置,并重启服务器
若没有上述命令,则使用以下命令
- 安装干净的系统
安装一个干净的系统,可以避免出现这种情况,也能去除服务商可能的内置在系统中的监控程序
通过上面的脚本,可以直接通过dd干净的系统镜像实现更换干净的系统,包括内核
- 安装干净的内核
安装一个干净的内核,也可以避免这种情况
例如cloud内核
- 作者:Sakura Homura
- 链接:https://endercat.eu.org/article/6cc20535-891a-4db6-9410-ad2111d79871
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章