External (and Live) snapshots with libvirt
list all the block devices associated with the guest
$ virsh domblklist testvm --details
Type Device Target Source
------------------------------------------------
file disk vda /export/vmimgs/testvm.qcow2
let’s create a snapshot(disk-only) of the guest
$ virsh snapshot-create-as testvm snap1-testvm "snap1 description" \
--diskspec vda,file=/export/vmimgs/snap1-testvm.qcow2 \
--disk-only --atomic
– ‘–atomic’ just ensures either the snapshot is run completely or fails w/o making any changes
$ qemu-img info /export/vmimgs/snap1-testvm.qcow2
image: /export/vmimgs/snap1-testvm.qcow2
file format: qcow2
virtual size: 20G ( bytes)
disk size: 2.5M
cluster_size:
backing file: /export/vmimgs/testvm.qcow2
$
created 2 more snapshots
$ virsh snapshot-list testvm --tree snap1-testvm
|
+- snap2-testvm
|
+- snap3-testvm
image file chain[ base<-snap1<-snap2<-snap3 ]:
#--------------------------------------------#
$ qemu-img info /export/vmimgs/snap3-testvm.qcow2
image: /export/vmimgs/snap3-testvm.qcow2
file format: qcow2
virtual size: 20G ( bytes)
disk size: 129M
cluster_size:
backing file: /export/vmimgs/snap2-testvm.qcow2
#--------------------------------------------#
$ qemu-img info /export/vmimgs/snap2-testvm.qcow2
image: /export/vmimgs/snap2-testvm.qcow2
file format: qcow2
virtual size: 20G ( bytes)
disk size: 3.6M
cluster_size:
backing file: /export/vmimgs/snap1-testvm.qcow2
#--------------------------------------------#
$ qemu-img info /export/vmimgs/snap1-testvm.qcow2
image: /export/vmimgs/snap1-testvm.qcow2
file format: qcow2
virtual size: 20G ( bytes)
disk size: 2.5M
cluster_size:
backing file: /export/vmimgs/testvm.qcow2
$
#--------------------------------------------#
Now, if we do not need snap2 any more, and want to pull all the data from snap1 into snap3, making snap1 as snap3’s backing file, we can do a virsh blockpulloperation as below:
$ virsh blockpull --domain testvm \
--path /export/vmimgs/snap3-testvm.qcow2 \
--base /export/vmimgs/snap1-testvm.qcow2 \
--wait --verbose
Block Pull: [ %]
Pull complete
可以看到snap3的backup为snap1
$ qemu-img info /export/vmimgs/snap3-testvm.qcow2
image: /export/vmimgs/snap3-testvm.qcow2
file format: qcow2
virtual size: 20G ( bytes)
disk size: 145M
cluster_size:
backing file: /export/vmimgs/snap1-testvm.qcow2
但snapshot-list 仍显示snap2
$ virsh snapshot-list testvm --tree
snap1-testvm
|
+- snap2-testvm
|
+- snap3-testvm
所以仍可以恢复为
base <- snap123
External disk-snapshots(live) using RAW as original image:
源disk image 不变为raw,而snapshot为qcow2
internal snapshots会导致源disk image变成qcow2
External (and Live) snapshots with libvirt的更多相关文章
- [转] External(and Live) snapshots with libvirt
http://kashyapc.com/ Raw image is a blob of data exposed directly in VM as block device, it can't sn ...
- 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(3)
四.Nova-compute 步骤17:nova-compute接收到请求后,通过Resource Tracker将创建虚拟机所需要的资源声明占用 步骤18:调用Neutron API配置Networ ...
- QEMU KVM Libvirt手册(5) – snapshots
前面讲了QEMU的qcow2格式的internal snapshot和external snapshot,这都是虚拟机文件格式的功能. 这是文件级别的. 还可以是文件系统级别的,比如很多文件系统支持s ...
- KVM 介绍(7):使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照 (Nova Instances Snapshot Libvirt)
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- kvm+libvirt虚拟机快照浅析[转]
浅析snapshots, blockcommit,blockpull 作者:Kashyap Chamarthy <kchamart#redhat.com> Date: Tue, 23 Oc ...
- External Snapshot management
External Snapshot management Symptom As of at least libvirt 1.1.1, external snapshot support is inco ...
- QEMU KVM libvirt手册(4) – images
RAW raw是默认的格式,格式简单,容易转换为其他的格式.需要文件系统的支持才能支持sparse file 创建image # qemu-img create -f raw flat.img 10G ...
- [转] Snapshotting with libvirt for qcow2 images
http://kashyapc.com/2011/10/04/snapshotting-with-libvirt-for-qcow2-images/ Libvirt 0.9.6 was recentl ...
- KVM(七)使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照
本文将梳理 QEMU/KVM 快照相关的知识,以及在 OpenStack Nova 中使用 libvirt 来对 QEMU/KVM 虚机做快照的过程. 1. QEMU/KVM 快照 1.1 概念 QE ...
随机推荐
- DataTable数据导出到Excel,并发送到客户端进行下载
本代码实现思路是:页面显示和导出分开,导出的数据和用于页面显示的是同一查询数据方式,所以也是同样的数据,只是在导出数据时从数据库重新捞了一次数据.此导出数据方式会先将数据保存到Excel中,然后将创建 ...
- jetty 通过配置文件嵌入式启动web服务
定义 jetty.xml 启动文件 <?xml version="1.0"?><!DOCTYPE Configure PUBLIC "-//Jetty/ ...
- typeof的使用技巧
typeof 对于基本类型,除了 null 都可以显示正确的类型 <template> <section class="p-10"> <el-b ...
- VMware下安装CentOS
开始安装VMware 下载CentOS 7.4 镜像 可以去阿里云的镜像站下载:https://opsx.alibaba.com/mirror 来到主页面,点击centos 选择 7.4 版本 选择镜 ...
- recorder.js
(function (f) { if (typeof exports === "object" && typeof module !== "undefin ...
- ubuntu16.04的下载地址
官网不推荐 https://www.ubuntu.com/download 阿里云开源镜像站 http://mirrors.aliyun.com/ubuntu-releases/16.04/ 浙江大学 ...
- boost之智能指针
内存问题永远是c++中讨论的重要话题 1.c98 auto_ptr的实现,auto_ptr的特点是始终只保持一个指针指向对象,若经过赋值或者拷贝之后原指针失效 #include <iostrea ...
- python并发编程之多线程2---(死锁与递归锁,信号量等)
一.死锁现象与递归锁 进程也是有死锁的 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用, 它们都将无法推进下去.此时称系统处于死锁状态或系统 ...
- $.messager.confirm修改弹出框按钮提示文字
$.messager.confirm 默认提示语为“OK”和“Cancel”.引入中文控件后变为“确定”和“取消” <script src="../js/locale/easyui-l ...
- print函数end参数的作用
print函数默认会在末尾添加一个换行符(‘\n’) 加入end=''参数后,不会在末尾添加换行符,而是在末尾添加一个空字符串,end等于什么就会在末尾添加什么 这个只在python3中有效