You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KVM已删除存储卷未在CentOS虚拟机中同步的问题求助

KVM删除存储卷后CentOS虚拟机仍可见的解决方法

嘿,这个问题我之前碰到过类似的,咱们一步步拆解排查,肯定能搞定:

第一步:先确认宿主机侧的真实状态

首先得搞清楚,你用virsh vol-delete删掉的卷,是不是真的从存储后端消失了:

  • 先获取存储池的实际路径:执行virsh pool-dumpxml [你的存储池名称],找到输出里的<path>字段,比如<path>/var/lib/libvirt/images</path>
  • 直接去这个目录下看文件:ls -l [存储池路径],如果那些“已删除”的卷文件还在,说明virsh vol-delete没生效(可能是权限问题,或者卷被虚拟机锁定了),这时候可以先关闭虚拟机,再手动删除这些文件,或者重新执行virsh vol-delete --pool [存储池名称] [卷名称]

第二步:检查虚拟机的XML配置是否残留磁盘定义

如果宿主机里确实没这些卷文件了,那大概率是虚拟机的配置还在引用它们:

  • 宿主机侧执行virsh dumpxml [你的虚拟机名称],搜索输出里的<disk>节点,看看有没有对应那些被删除的卷的定义(比如<source file='/var/lib/libvirt/images/old-volume.qcow2'/>)
  • 如果找到了残留的磁盘节点,先关闭虚拟机,然后用命令移除:virsh detach-disk [虚拟机名称] [设备名,比如vdb](设备名是虚拟机里看到的,比如/dev/vdb对应的设备名是vdb)
  • 或者直接编辑虚拟机XML:virsh edit [虚拟机名称],删掉对应的<disk>整个节点,保存退出后再启动虚拟机

第三步:处理虚拟机侧的残留设备

如果XML里已经没有这些磁盘了,虚拟机还是能看到,那是虚拟机内部的块设备缓存或者udev规则残留:

  1. 先在虚拟机里检查这些设备是不是还在挂载:mount | grep /dev/vdX(替换成你看到的设备名),如果挂载着,先卸载:umount /dev/vdX
  2. 然后刷新udev规则:udevadm trigger && udevadm settle,执行完再用lsblk或者fdisk -l看看,应该就看不到了
  3. 如果还是能看到,试试在虚拟机里重新扫描SCSI总线(如果是SCSI类型的磁盘):echo "- - -" > /sys/class/scsi_host/hostX/scan(hostX可以用lsscsi命令查看,比如host0、host1等,每个都扫一遍)

特殊情况:LVM存储卷的额外处理

如果你的存储卷是基于LVM的,还要确认宿主机侧的逻辑卷是否真的被删除:

  • 宿主机执行lvdisplay,看看有没有对应已删除卷的逻辑卷
  • 如果还存在,执行lvremove [逻辑卷路径,比如/dev/myvg/oldvol]彻底删除,然后再回到虚拟机侧刷新设备

内容的提问来源于stack exchange,提问作者syam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:01:39