简介

快照(snapshot)是 KVM 虚拟化技术中的一个重要概念。它允许用户在虚拟机上创建一个时间点快照,以便在需要时可以轻松地恢复到之前的某个状态。快照功能可以用于备份、测试、回滚等场景。

用途

快照的主要用途包括:

  • 备份和恢复。快照可以用来创建虚拟机的备份,以便在出现问题时可以恢复。
  • 测试和调试。快照可以用来测试新功能,而不会影响虚拟机的当前状态。
  • 回滚和恢复数据。快照可以用来回滚到虚拟机的以前状态,以便解决问题或恢复数据。
  • 创建多个虚拟机。快照可以用来创建多个虚拟机,每个虚拟机都基于相同的镜像。

快照的操作

在开始之前,我们先查看本机有哪些虚拟机:

1
2
3
4
5
6
7
8
9
10
leazhi@debian:~$ virsh list --all
Id Name State
---------------------------------
1 vm001-ubuntu22 running
2 vm002-debian12 running
7 vm000-ubuntu22 running
15 vm170-ubuntu22 running
16 vm181-ubuntu22 running
20 vm182-ubuntu22 running
- vm180-ubuntu22 shut off

创建快照

语法:

1
virsh snapshot-create-as [--domain domain] [--name name] [--description description] [--disks] [--metadata] [--atomic] [--disk-only] [--quiesce] [--no-metadata]

参数说明:

  • –domain domain :指定要创建快照的虚拟机。
  • –name name :指定快照的名称。
  • –description description :指定快照的描述。
  • –disks :指定要创建快照的磁盘。
  • –metadata :指定是否创建快照元数据。
  • –atomic :指定是否以原子方式创建快照。
  • –disk-only :指定是否仅创建快照的磁盘。
  • –quiesce :指定是否在创建快照之前暂停虚拟机。
  • –no-metadata :指定是否不创建快照元数据。

示例:

现在,假设我要为我的虚拟机 vm182-ubuntu22 创键一个快照,以便在出现问题时可以恢复,则可以使用下面的命令创建快照:

1
2
leazhi@debian:~$ virsh snapshot-create-as --domain vm182-ubuntu22 --name vm182-ubuntu22_snape001 --description 'just init system'
Domain snapshot vm182-ubuntu22_snape001 created

查看快照

列出虚拟机的所有快照:

语法:
1
virsh snapshot-list [--domain domain] [--details] [--disk-only]

参数说明:

  • –domain domain :指定要查看快照的虚拟机。
  • –details :指定是否显示快照的详细信息。
  • –disk-only :指定是否仅显示快照的磁盘。
示例:
1
2
3
4
leazhi@debian:~$ virsh snapshot-list --domain vm182-ubuntu22
Name Creation Time State
----------------------------------------------------------------
vm182-ubuntu22_snape001 2023-12-27 08:14:19 -0500 running

查看某个快照的详细信息

语法:
1
virsh snapshot-info [--domain domain] [--snapshotname name]

参数说明:

  • –domain domain :指定要查看快照的虚拟机。
  • –snapshotname name :指定要查看的快照的名称。
示例:
1
2
3
4
5
6
7
8
9
10
leazhi@debian:~$ virsh snapshot-info --domain vm182-ubuntu22 --snapshotname vm182-ubuntu22_snape001
Name: vm182-ubuntu22_snape001
Domain: vm182-ubuntu22
Current: yes
State: running
Location: internal
Parent: -
Children: 0
Descendants: 0
Metadata: yes

还原虚拟机

语法:

1
virsh snapshot-revert [--domain domain] [--snapshotname name] [--running] [--paused] [--force]

参数说明:

  • –domain domain :指定要还原的虚拟机。
  • –snapshotname name :指定要还原的快照的名称。
  • –running :指定是否在还原时启动虚拟机。
  • –paused :指定是否在还原时暂停虚拟机。
  • –force :指定是否在还原时强制执行。

示例:

用创建的快照来还原虚拟机:

1
2
leazhi@debian:~$ virsh snapshot-revert --domain vm182-ubuntu22 vm182-ubuntu22_snape001
Domain snapshot vm182-ubuntu22_snape001 reverted

删除快照

语法:

1
virsh snapshot-delete [--domain domain] [--snapshotname name] [--metadata] [--children] [--force]

参数说明:

  • –domain domain :指定要删除的虚拟机。
  • –snapshotname name :指定要删除的快照的名称。
  • –metadata :指定是否删除快照的元数据。
  • –children :指定是否删除快照的子快照。
  • –force :指定是否在删除时强制执行。

示例:

删除快照:

1
2
leazhi@debian:~$ virsh snapshot-delete --domain vm182-ubuntu22 --snapshotname vm182-ubuntu22_snape001
Domain snapshot vm182-ubuntu22_snape001 deleted