kvm 虚拟机磁盘快照管理

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
posted @ 2025-02-13 08:54  小吉猫  阅读(296)  评论(0)    收藏  举报