实现内存快照的方案
一,本地qcow2虚机
- 可通过virsh snapshot-create-as bda1a2da-9ece-49fa-b99f-48a6367592bc --name snap01为虚机磁盘和内存打快照
- 通过virsh snapshot-revert bda1a2da-9ece-49fa-b99f-48a6367592bc --snapshotname snap01 --running 回滚快照到虚机
二,云盘虚机
云盘虚机不支持用snapshot-create-as的方式来打磁盘和内存快照,可用下面方式:
- 为保证硬盘快照和内存快照制作时间点一致,先执行virsh suspend <domain>, 把虚机置为paused状态
- 执行virsh save <domain> 为云盘虚机打一个内存快照存到本地,但有个问题是虚机会被关机,因此之后需要做完操作后,再把虚机启动起来
- 执行rbd snap create <volumeid>为云盘虚机打一个硬盘快照
- 需考虑内存快照是否要上传到ceph存储,不上传放在本地也可以
- 虚机恢复:虚机先关机,1)执行rbd snap rollback回滚硬盘快照; 2)执行 virsh restore <savefile>将虚机restore成running状态
下面是virsh命令使用的具体分析
virsh save; virsh restore
save命令操作: 将一个running或paused虚机的状态保存为一个文件,同时可以指定restore的时候是running还是paused到xml文件中,--bypass-cache表示忽略文件系统cache,--xml表示用一个已存在的xml文件更新到目标状态文件中, 执行save后,虚机关机
# virsh help save
NAME
save - save a domain state to a file
SYNOPSIS
save <domain> <file> [--bypass-cache] [--xml <string>] [--running] [--paused] [--verbose]
DESCRIPTION
Save the RAM state of a running domain.
OPTIONS
[--domain] <string> domain name, id or uuid
[--file] <string> where to save the data
--bypass-cache avoid file system cache when saving
--xml <string> filename containing updated XML for the target
--running set domain to be running on restore
--paused set domain to be paused on restore
--verbose display the progress of save
# virsh save 4407dfde-379b-4189-869d-20fa46764baf fhltest01.save --running --verbose
Save: [100 %]
Domain 4407dfde-379b-4189-869d-20fa46764baf saved to fhltest01.save
# virsh dominfo 4407dfde-379b-4189-869d-20fa46764baf
Id: -
Name: instance-00001a0a
UUID: 4407dfde-379b-4189-869d-20fa46764baf
OS Type: hvm
State: shut off
CPU(s): 2
Max memory: 2097152 KiB
Used memory: 2097152 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
虚机restore: restore时可以指定虚机恢复成running或者paused
# virsh help restore
NAME
restore - restore a domain from a saved state in a file
SYNOPSIS
restore <file> [--bypass-cache] [--xml <string>] [--running] [--paused]
DESCRIPTION
Restore a domain.
OPTIONS
[--file] <string> the state to restore
--bypass-cache avoid file system cache when restor