主题
KVM 虚拟机清理记录
操作时间
2026-07-13 16:53 - 17:00 (CST)
操作目的
回收并释放所有状态为 shut off 的 KVM 虚拟机所占用的磁盘空间。
环境信息
- 主机:本地 libvirt/KVM 环境
- 主要存储路径:
/kvm/lib/libvirt/images//mnt/xfs/kvm/
清理前状态
运行中的 VM:
| Id | Name | State |
|---|---|---|
| 1 | ks-vm2-n2 | running |
| 2 | ks-vm1 | running |
| 3 | jumpserver | running |
| 4 | ks-vm2-n3 | running |
| 5 | rocky-repo | running |
| 14 | rocky9-vm-01 | running |
状态为 shut off 的 VM 共 51 台:
text
ceph-vm1, ks-vm2, ks-vm3, ks-vm3-n1, ks-vm3-n2, ks-vm3-n3, ks-vm4, ks-vm5,
rancher-vm1, rancher-vm2, rancher-vm2-w1, rancher-vm2-w2,
redhat-vm1, redhat-vm2, redhat-vm3, redhat-vm4,
redhat9-template, rhel-9.6-template,
rke1, rke2, rke2-vm1 ~ rke2-vm6, rke3,
rocky-vm1, rocky-vm2, rocky-vm3,
szc-vm1, szc-vm2, tanqi-repo, template,
uat-rhel9-vm1 ~ uat-rhel9-vm10,
uat2-rhel-vm1 ~ uat2-rhel-vm3,
ubuntu-vm1, ubuntu-vm2注:清单中包含
redhat9-template、rhel-9.6-template、template等模板类 VM,已按用户要求一并清理。
操作步骤
1. 查看所有 VM
bash
virsh list --all2. 确认待清理 VM 及其磁盘
bash
virsh list --all | awk '/shut off/{print $2}' | while read vm; do
echo "=== $vm ==="
virsh domblklist "$vm"
done3. 清理普通 VM
使用 --remove-all-storage 同时删除虚拟机定义及其关联磁盘:
bash
virsh list --all | awk '/shut off/{print $2}' | while read vm; do
virsh undefine --remove-all-storage "$vm"
done4. 处理异常情况
4.1 非 libvirt 管理卷
部分 VM 的磁盘文件不由 libvirt 存储池管理,需要在 undefine 后手动删除:
bash
rm -f /mnt/xfs/kvm/redhat9-template.qcow2
rm -f /mnt/xfs/kvm/rhel-9.6-template-cidata.iso4.2 带 NVRAM 的 VM
以下 UEFI 启动的 VM 因带有 NVRAM,普通 undefine 会报错 cannot undefine domain with nvram,需加 --nvram 参数:
bash
for vm in uat-rhel9-vm1 uat-rhel9-vm2 uat-rhel9-vm3 \
uat2-rhel-vm1 uat2-rhel-vm2 uat2-rhel-vm3; do
virsh undefine --nvram --remove-all-storage "$vm"
done清理后状态
剩余 VM 全部为 running 状态:
| Id | Name | State |
|---|---|---|
| 1 | ks-vm2-n2 | running |
| 2 | ks-vm1 | running |
| 3 | jumpserver | running |
| 4 | ks-vm2-n3 | running |
| 5 | rocky-repo | running |
| 14 | rocky9-vm-01 | running |
| 15 | rocky9-vm-02 | running |
| 16 | rocky9-vm-03 | running |
磁盘空间
清理后:
| 挂载点 | 容量 | 已用 | 可用 | 使用率 |
|---|---|---|---|---|
/ | 916G | 288G | 582G | 34% |
/mnt/xfs | 2.8T | 227G | 2.6T | 9% |
可复用脚本
见同目录下的 cleanup-inactive-vms.sh。
注意事项
- 此操作会 永久删除 虚拟机及其磁盘,执行前请务必确认。
- 建议先备份重要数据或快照。
- 模板类 VM 在清理前需要特别确认是否仍需要保留。