snapshot 介绍
磁盘快照是一种对磁盘数据的备份方式,广泛应用于虚拟机备份等场景。根据不同的分类方式,磁盘快照可以分为以下几种类型:
内置快照与外置快照:
内置快照:快照数据和base磁盘数据存放在同一个qcow2文件中。
外置快照:快照数据存放在单独的另一个qcow2文件中。
根据虚拟机状态分类:
关机态快照:虚拟机在关机状态下进行的快照,此时数据可以保证一致性。
运行态快照:虚拟机在运行状态下进行的快照,此时数据可能处于变化状态,因此无法保证数据的一致性。类似于系统崩溃后的磁盘数据恢复,使用时可能需要文件系统检查(fsck)等操作。
根据涉及的磁盘数量分类:
单盘快照:只涉及单个磁盘的快照,不涉及原子性问题。
多盘快照:涉及多个磁盘的快照,需要考虑原子性问题。多盘快照的原子性主要分两个方面:
1. 所有磁盘的快照点相同,即所有磁盘在相同的时间点进行快照。
2. 所有磁盘要么都快照成功,要么都快照失败,以确保操作的原子性。这主要依赖于qemu的transaction(事务)机制来实现。
qemu-img 管理快照
需要在关机状态下创建快照。
snapshot 用法
qemu-img snapshot [--object objectdef] [--image-opts] [-U] [-q] [-l | -a snapshot | -c snapshot | -d snapshot] filename
[--object objectdef]: 这个选项允许定义额外的对象或配置参数。具体的定义依赖于需求和使用场景。objectdef 是一个占位符,表示具体的对象定义。
[--image-opts]: 这个选项允许为磁盘镜像指定额外的选项或参数。具体可用的选项依赖于版本和具体的命令上下文。
-U: 更新现有的快照。具体的更新内容取决于命令的上下文和其他参数。
-q: 这个标志表示安静模式(quiet mode),通常用于抑制不必要的输出或日志信息。
-l | -a snapshot | -c snapshot | -d snapshot: 这些是具体的命令选项:
-l: 列出所有的快照。
-a snapshot: 恢复到一个特定的快照状态(通常表示激活快照)。
-c snapshot: 创建新的快照。
-d snapshot: 删除一个快照。
filename: 要操作的磁盘镜像文件的名称或路径。
关闭虚拟机
virsh shutdown ctyun-2.0.1-01
Domain ctyun-2.0.1-01 is being shutdown
查看虚拟机块设备
virsh domblklist ctyun-2.0.1-01
Target Source
-----------------------------------------------
vda /data/ctyunos/ctyun-01_system.qcow2
vdb /data/ctyunos/ctyun-01_data.qcow2
hda -
查看快照信息
qemu-img snapshot -l /data/ctyunos/ctyun-01_system.qcow2
创建快照
qemu-img snapshot -c ctyun-2.0.1-01-snaphost-01 /data/ctyunos/ctyun-01_system.qcow2
确认快照
qemu-img snapshot -l /data/ctyunos/ctyun-01_system.qcow2
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 ctyun-2.0.1-01-snaphost-01 0 B 2025-01-25 22:15:39 00:00:00.000
确认快照信息
qemu-img info /data/ctyunos/ctyun-01_system.qcow2
image: /data/ctyunos/ctyun-01_system.qcow2
file format: qcow2
virtual size: 10 GiB (10737418240 bytes)
disk size: 2.97 GiB
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 ctyun-2.0.1-01-snaphost-01 0 B 2025-01-25 22:15:39 00:00:00.000
Format specific information:
compat: 1.1
lazy refcounts: true
refcount bits: 16
corrupt: false
还原快照
qemu-img snapshot -a ctyun-2.0.1-01-snaphost-01
删除快照
qemu-img snapshot -d ctyun-2.0.1-01-snaphost-01
virsh 管理快照
可以在开机状态下创建快照。
查看虚拟机列表
virsh list --all
Id Name State
---------------------------------
1 ctyun-2.0.1-01 running
- ctyun-2.0.1-02 shut off
查看快照列表
virsh snapshot-list ctyun-2.0.1-01
Name Creation Time State
-------------------------------
创建快照
virsh snapshot-create ctyun-2.0.1-01
Domain snapshot 1737815140 created
确认快照
virsh snapshot-list ctyun-2.0.1-01
Name Creation Time State
---------------------------------------------------
1737815140 2025-01-25 22:25:40 +0800 running
还原快照
virsh snapshot-revert ctyun-2.0.1-01 --snapshotname 1737815140 --running
删除快照
virsh snapshot-delete ctyun-2.0.1-01 --snapshotname 1737815140
Domain snapshot 1737815140 deleted