20.39.2. 为当前客户机虚拟机创建快照
virsh snapshot-create-as 命令使用域 XML 文件中指定的属性(如
名称和描述
元素)为 guest 虚拟机创建一个快照。如果这些值不包含在 XML 字符串中,则 libvirt 将选择一个值。要创建快照运行:
# snapshot-create-as domain {[--print-xml] | [--no-metadata] [--halt] [--reuse-external]} [name] [description] [--disk-only [--quiesce]] [--atomic] [[--memspec memspec]] [--diskspec] diskspec]
剩余的可选参数如下:
--print-xml
为 snapshot-create 创建适当的 XML 作为输出,而不是实际创建快照。--halt
在创建快照后,保持客户机虚拟机处于非活动状态。--disk-only
会创建一个不包含客户机虚拟机状态的快照。--memspec
可用于控制检查点是否为内部还是外部。标志为必需,后跟 [file=]name[,snapshot=type] 形式的 memspec,其中 type 可以是 none、internal 或 external。要在 file=name 中包含字面逗号,请使用第二个逗号进行转义。--diskspec
选项可以用来控制--disk-only
和外部检查点如何创建外部文件。根据域 XML 中的<disk>
元素数量,这个选项可以多次出现。每个<diskspec>
都以磁盘[,snapshot=type][,driver=type][,file=name] 的形式。如果特定磁盘省略--diskspec
,则使用虚拟机配置中的默认行为。要在磁盘或者 file=name 中包含字面逗号,请使用第二逗号进行转义。文字--diskspec
必须在每个 diskspec 之前,除非同时存在三个 域、name 和 description。例如,vda、snapshot=external、file=/path/to 的 diskspec 会生成以下 XML:<disk name=’vda’ snapshot=’external’> <source file=’/path/to,new’/> </disk>
重要红帽建议使用外部快照,因为当由其他虚拟化工具处理时,它们更灵活且更可靠。要创建外部快照,请使用 virsh-create-as 命令和--diskspec vda,snapshot=external
选项如果没有使用这个选项,virsh 会创建内部快照,但由于缺乏稳定性和优化功能,我们不建议使用它。如需更多信息,请参阅 第 A.13 节 “使用 libvirt 创建外部快照的临时解决方案”。- 指定
--reuse-external
,域 XML 或 diskspec 选项请求一个带有现有文件目标的外部快照,然后目标必须存在,并且会被重复使用;否则,快照将拒绝,以避免丢失现有文件的内容。 指定了 --
quiesce,libvirt 将尝试使用客户机代理来冻结和取消暂停客户机虚拟机的已挂载文件系统。但是,如果域没有客户机代理,则快照创建将失败。目前,这需要仅传递--disk-only
。--no-metadata
会创建快照数据,但任何元数据都会立即丢弃(即,libvirt 不会将快照视为当前),除非稍后使用 snapshot-create 来教授 libvirt 元数据。这个标志与--print-xml
不兼容--
Atomic 将导致 libvirt 保证快照可以成功执行,或者没有更改失败。请注意,不是所有虚拟机监控程序都支持这种管理程序。如果没有指定此标志,那么某些虚拟机监控程序在部分操作后可能会失败,且必须使用 virsh dumpxml 来查看是否发生了任何部分更改。
警告
创建在 64 位 ARM 平台 主机上运行的 KVM 客户机快照目前无法正常工作。请注意,红帽不支持 64 位 ARM 上的 KVM。