首页/云/云平台与虚拟化速查/virsh dumpxml / define 管理域 XML
虚拟化操作94 条

virsh dumpxml / define 管理域 XML

域的期望状态保存在 XML 中:dumpxml 导出(--inactive 取关机态定义),修改后用 define 全量替换注册;运行中的域要区分运行态与持久态配置。

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

dumpxml 与 define 的用法

libvirt 里域的期望状态保存在 XML 中:dumpxml 把当前定义导出成文件,编辑后用 define 全量替换注册。关键在于分清运行态与持久态:不加参数导出的是含运行时信息的 XML,加 --inactive 导出的是下次启动使用的持久定义。修改结构性配置(内存、设备、CPU)通常要停机再生效。

基本信息

导出virsh dumpxml vm1 > vm1.xml,得到含运行态信息的定义
导出持久定义virsh dumpxml vm1 --inactive,得到下次启动使用的配置
重新注册virsh define vm1.xml,全量替换域定义
生效范围结构性变更需关机后启动才生效;部分参数支持 --live 热改
修改前动作先导出备份,命名带日期,改坏可立即回滚

典型使用场景

  • 备份定义:变更前导出 XML 存档,出问题可快速恢复
  • 批量调参:给一组虚机统一调整内存或网卡型号
  • 比对差异:导出两份 XML 做 diff,查清谁改了配置
  • 迁移与复制:导出定义后在新宿主上 define 并调整磁盘路径
  • 审计追溯:把 XML 纳入版本管理,记录每次结构变更

导出、修改、重载

导出、修改、重载
sudo virsh dumpxml vm1 --inactive > /tmp/vm1.xml
# 编辑 /tmp/vm1.xml(内存、设备、CPU 等)
sudo virsh define /tmp/vm1.xml
sudo virsh dumpxml vm1 --inactive | diff /tmp/vm1.xml -   # 核对落盘结果
# 结构性改动需要重新启动域才生效
sudo virsh shutdown vm1 && sudo virsh start vm1

常改段落与生效方式

XML 段落内容生效方式
memory / vcpu内存与 CPU 数量停机后启动生效
devices/disk磁盘路径与总线类型停机后启动生效
interface网卡型号与连接的虚拟网络停机后启动生效
cpuCPU 模型与特性停机后启动生效
define 是全量替换而非增量合并:导出旧文件、只在上面改动、再 define 回去,是避免误删配置的稳妥流程。
把运行态 XML 直接 define 回去,会把临时状态(如热插拔出来的设备)固化进持久配置,之后重启行为与预期不符。
virsh edit 是导出、编辑、define 的封装,适合交互式小改动;批量修改与脚本场景仍建议显式走导出、编辑、define 三步,便于留档与回滚。
热改与持久改要分开考虑:只改当前运行状态的改动重启后会失效,只改定义的改动要等下次启动才生效;脚本里把作用范围写清楚,避免改动结果与预期不一致。

易错点

  • 用运行态 XML 覆盖定义,把临时状态固化进持久配置
  • 改完 XML 未 define 就重启宿主,改动丢失
  • 编辑 XML 时手误改坏结构,域直接无法启动,因此必须先备份再改
  • 忘记加 --inactive 导出,比对时把运行态差异误认为配置差异

数据来源与参考

  • libvirt 文档:Domain XML format
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌