标签搜索

目 录CONTENT

文章目录

KVM的三种快照

陈铭
2022-07-06 / 0 评论 / 0 点赞 / 486 阅读 / 1,090 字 / 正在检测是否收录...

KVM支持三种快照:内置快照、外置快照和内存快照。

内置快照

内置快照的创建会集成在镜像文件中,就像之前我们创建了三个虚机,虚机的镜像文件的qcow2格式的,这个文件会因为内置快照的创造而变大。

# 查询虚机
virsh list --all
# Id    名称                         状态
# ----------------------------------------------------
# 4     centos7.0                      running
# 5     centos7.0-2                    running
# 6     centos7.0-3                    running

# 我们选择centos7.0(vm_name)来创建内置快照
virsh snapshot-create-as <vm_name> <snapshot_name>
# 查询快照
virsh snapshot-list <vm_name>
# 恢复内置快照
# 虚机开关机都能恢复!开机下恢复快照,之前登录虚机的shell重新连接才能看到变化!!
virsh snapshot-revert --domain <vm_name> <snapshot_name>
# 恢复内置快照删除
virsh snapshot-delete <vm_name> <snapshot_name>

外置快照

外置快照的快照文件不会集成在镜像文件中,会独立出一个新的qcow2文件,它和旧的qcow2组成了一个版本链:
origin.qcow2 --> snapshot1.qcow2 -->snapshot2.qcow2…
旧的qcow2文件在外置快照创建后成为了只读,并只保留快照创建前的数据。

# 创建外置快照前必须先关闭虚机
virsh destroy <vm_name> # 断电!
virsh shutdown <vm_name> # 关机!

# 查看当前虚机使用的qcow2镜像文件
virsh domblklist <vm_name>
# 目标     源
# ------------------------------------------------
# vda        /kvm/volume/vm_cm.qcow2
# hda        -
# vm_cm.qcow2就是最初的镜像文件

# 创建快照
# --diskspec这里就是选择vda(编号a的虚拟磁盘)
# file是外部快照的存放位置,必须绝对路径
virsh snapshot-create-as --domain <vm_name> <snapshot_name> --disk-only --diskspec vda,snapshot=external,file=<snapshot_path> --atomic

# 创建外置快照后,查看当前虚机使用的qcow2镜像文件
virsh domblklist <vm_name>
# 目标     源
# ------------------------------------------------
# vda        /kvm/volume/ext/vm1_ext1.qcow2
# hda        -
# vm1_ext1.qcow2就是创建的外置快照文件

# 查看快照链
qemu-img info --backing-chain <snapshot_name>

# 外部快照按照上述的恢复和删除是不允许的!
# 因为外部快照文件储存的信息不全,会依赖旧的qcow2文件,即上述的版本链性质。

# 强行删除外置快照(执行完可以删qcow2文件了)
virsh snapshot-delete --domain <vm_name> <snapshot_name> --metadata

内存快照

不仅会备份磁盘,也会备份内存数据

# 创建内存快照,会关闭这个虚机
virsh save <vm_name> <mem_snapshot_name>
# 加载内存快照,要在这个虚机关机状态下,恢复很快!!
virsh restore <mem_snapshot_name>

快照的克隆

有时候快照只是一个 系统状态的备份,并不代表完整的镜像文件。当我们有一系列时间上相互承接的快照时(不局限外置快照链那种),如何在当前机器的状态下创建出新的镜像?

# 使用克隆,注意先关闭虚机
virsh destroy <originVmName>
# 开始克隆
# -o指定被克隆虚机的名称,所以这个虚机一定要回滚到需要的内置快照,以当前的状态进行克隆。
# 克隆过程中,要求被克隆虚机关闭或暂停
virt-clone --connect=qemu:///system -o <originVmName> -n <newVmName> -f <newVm_absolute_qcow2Path>

这个命令的好处是,不仅克隆出完全不依赖旧qcow2镜像的新镜像。命令执行完,会出现系的呢虚拟机<newVmName>,执行virsh start <newVmName>就行了。
而且,经测试,删除(virsh undefine)了<originVmName>对应的虚机,以及镜像文件,并不影响克隆出来的新虚机的使用!!

其他命令

删除与恢复

# 切勿进行删除,删除的恢复当且仅当有导出虚机的配置文件
virsh undefine <vm_name> # 删除
# 导出配置
virsh dumpxml <vm_name> > <vm_config_xml_absolutePath>
 # 恢复删除
virsh define <vm_config_xml_absolutePath>

克隆虚机

# 先关闭originVm
virsh destroy <originVmName>
# 开始克隆
virt-clone --connect=qemu:///system -o <originVmName> -n <newVmName> -f <newVm_absolute_qcow2Path>
0

评论区