如何配置KVM/QEMU/虚拟机管理器排除挂载点计算启动盘空间
解决KVM/QEMU虚拟机管理器磁盘空间误判问题
碰到过好多次libvirt(virt-manager背后的核心服务)误判磁盘空间的情况,刚好能解决你的问题——让它只盯着实际启动盘md1的空间,不再管/下其他挂载点的状态。
第一步:先搞清楚md1对应的挂载点
首先得确认md1到底挂载在哪个路径上,毕竟后续配置需要精准指定。在宿主机上跑这两个命令就行:
# 查看磁盘分区和挂载关系 lsblk -f # 或者直接过滤md1的挂载信息 mount | grep md1
比如输出可能显示md1挂载在/var/lib/libvirt/images(这通常是虚拟机磁盘文件存放的路径),记下来这个路径或者设备名/dev/md1。
第二步:针对单个虚拟机配置(推荐,不影响其他机器)
如果只是个别虚拟机出问题,修改单个虚拟机的配置最稳妥:
- 用
virsh命令编辑虚拟机的XML配置:
virsh edit <你的虚拟机名称>
- 在
<domain>标签内部,添加或者修改<resource>节点(如果已经有这个节点,就替换里面的内容):
<resource> <!-- 这里填你刚才查到的md1的设备名或者挂载点路径 --> <partition>/dev/md1</partition> <diskspace> <unit>G</unit> <!-- 设置触发警告/暂停的最小可用空间,比如留10GB --> <available>10</available> </diskspace> </resource>
- 保存退出后,重启虚拟机让配置生效:
virsh restart <你的虚拟机名称>
第三步:全局配置(所有虚拟机都生效)
如果要让所有虚拟机都只监控md1的空间,就修改libvirt的全局配置:
- 编辑
/etc/libvirt/qemu.conf文件:
sudo nano /etc/libvirt/qemu.conf
- 找到
diskspace_check_path这一行,去掉前面的注释(#),然后设置为md1的设备名或者挂载点:
# 比如用设备名 diskspace_check_path = "/dev/md1" # 或者用挂载点路径 # diskspace_check_path = "/var/lib/libvirt/images"
- 保存后重启libvirt服务:
sudo systemctl restart libvirtd
第四步:验证配置是否生效
重启虚拟机后,用下面的命令查看磁盘监控状态,确认是不是只盯着md1了:
virsh domstats <你的虚拟机名称> | grep disk
或者直接打开virt-manager,查看虚拟机的资源监控面板,磁盘空间的监控目标应该已经变成md1对应的路径了。
额外小提示
如果虚拟机已经因为误判被暂停了,先跑virsh start <你的虚拟机名称>启动它,再配置上面的规则,避免再次触发暂停机制。
内容的提问来源于stack exchange,提问作者Jef20vt
相关产品推荐
相关产品推荐

