首页/云/云平台与虚拟化速查/virsh undefine 注销虚机
虚拟化操作94 条

virsh undefine 注销虚机

undefine 从 libvirt 注销域定义,默认保留磁盘文件;UEFI 虚机需要 --nvram 一并清理固件变量,--remove-all-storage 会在注销时删除磁盘。

云平台与虚拟化速查云更新于 2026-10-13

virsh undefine 注销虚机

undefine 把域定义从 libvirt 注销,默认只删配置、保留磁盘文件。它常被视为「删除虚机」的动作,但实际上分两层:注册关系与存储数据。UEFI 虚机还需要带 --nvram 清理固件变量文件,否则会报错或残留;带 --remove-all-storage 时才会连磁盘一起删除,这一步是不可逆的。

基本信息

基本用法virsh undefine vm1,注销定义,磁盘文件保留
UEFI 虚机virsh undefine vm1 --nvram,同时清理固件变量文件
连盘删除virsh undefine vm1 --remove-all-storage,谨慎使用
默认行为磁盘文件保留在存储上,可另行归档或清理
前置建议先导出定义 XML 存档,域处于运行状态时先安全关机

典型使用场景

  • 下线废弃虚机:确认无需恢复后注销定义并清理磁盘
  • 重建虚机:保留磁盘数据,只重注册一份新的域定义
  • 环境清理:测试完成后批量注销,释放宿主侧的配置条目
  • 迁移前整理:宿主退役前把所有域定义导出归档再注销
  • 事故善后:定义损坏无法修复时注销后重新 define 一份干净的定义

注销前先备份定义

注销前先备份定义
sudo virsh dumpxml vm1 --inactive > /root/vm1-$(date +%F).xml
sudo virsh destroy vm1 2>/dev/null || true   # 停机(必要时)
sudo virsh undefine vm1 --nvram
# 确认定义已消失、磁盘文件仍在:
virsh list --all
ls -lh /var/lib/libvirt/images/

参数对比

参数作用风险
默认只注销定义磁盘变成无人认领的文件
--nvram清理固件变量文件UEFI 虚机不加会报错或留残留
--remove-all-storage连同磁盘一起删除数据不可恢复,执行前必须确认
--keep-nvram保留固件变量重建同名虚机时可复用
注销前先把定义导出存档:磁盘还在,但域的具体参数(设备型号、CPU 模型、网络连接)失传后重建很难完全复现。
--remove-all-storage 会真实删除磁盘数据,执行前要确认磁盘归属,尤其是共享存储上文件名与虚机名不一致的情况。
批量注销前先列一份清单,写清域名、磁盘路径、用途与负责人,逐条确认后再执行,避免在共享存储上误删他人正在使用的镜像;注销完成后核对存储剩余空间,确认释放容量与清单对得上。

易错点

  • 只注销不清理磁盘:存储上留下无人认领的镜像文件
  • --remove-all-storage 会真删数据,执行前必须确认磁盘归属
  • UEFI 虚机未加 --nvram,注销报错或留下固件残留文件
  • 注销前未留存定义,之后想重建却发现设备参数已经无从查证

数据来源与参考

  • libvirt 文档:virsh undefine
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌