list all the block devices associated with the guest

  1. $ virsh domblklist testvm --details
  2. Type Device Target Source
  3. ------------------------------------------------
  4. file disk vda /export/vmimgs/testvm.qcow2

let’s create a snapshot(disk-only) of the guest

  1. $ virsh snapshot-create-as testvm snap1-testvm "snap1 description" \
  2. --diskspec vda,file=/export/vmimgs/snap1-testvm.qcow2 \
  3. --disk-only --atomic

– ‘–atomic’ just ensures either the snapshot is run completely or fails w/o making any changes

  1. $ qemu-img info /export/vmimgs/snap1-testvm.qcow2
  2. image: /export/vmimgs/snap1-testvm.qcow2
  3. file format: qcow2
  4. virtual size: 20G ( bytes)
  5. disk size: 2.5M
  6. cluster_size:
  7. backing file: /export/vmimgs/testvm.qcow2
  8. $

created 2 more snapshots

  1. $ virsh snapshot-list testvm --tree
  2.  
  3. snap1-testvm
  4. |
  5. +- snap2-testvm
  6. |
  7. +- snap3-testvm

image file chain[ base<-snap1<-snap2<-snap3 ]:

  1. #--------------------------------------------#
  2. $ qemu-img info /export/vmimgs/snap3-testvm.qcow2
  3. image: /export/vmimgs/snap3-testvm.qcow2
  4. file format: qcow2
  5. virtual size: 20G ( bytes)
  6. disk size: 129M
  7. cluster_size:
  8. backing file: /export/vmimgs/snap2-testvm.qcow2
  9. #--------------------------------------------#
  10. $ qemu-img info /export/vmimgs/snap2-testvm.qcow2
  11. image: /export/vmimgs/snap2-testvm.qcow2
  12. file format: qcow2
  13. virtual size: 20G ( bytes)
  14. disk size: 3.6M
  15. cluster_size:
  16. backing file: /export/vmimgs/snap1-testvm.qcow2
  17. #--------------------------------------------#
  18. $ qemu-img info /export/vmimgs/snap1-testvm.qcow2
  19. image: /export/vmimgs/snap1-testvm.qcow2
  20. file format: qcow2
  21. virtual size: 20G ( bytes)
  22. disk size: 2.5M
  23. cluster_size:
  24. backing file: /export/vmimgs/testvm.qcow2
  25. $
  26. #--------------------------------------------#

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:

  1. $ virsh blockpull --domain testvm \
  2. --path /export/vmimgs/snap3-testvm.qcow2 \
  3. --base /export/vmimgs/snap1-testvm.qcow2 \
  4. --wait --verbose
  5. Block Pull: [ %]
  6. Pull complete

可以看到snap3的backup为snap1

  1. $ qemu-img info /export/vmimgs/snap3-testvm.qcow2
  2. image: /export/vmimgs/snap3-testvm.qcow2
  3. file format: qcow2
  4. virtual size: 20G ( bytes)
  5. disk size: 145M
  6. cluster_size:
  7. backing file: /export/vmimgs/snap1-testvm.qcow2

snapshot-list 仍显示snap2

  1. $ virsh snapshot-list testvm --tree
  2. snap1-testvm
  3. |
  4. +- snap2-testvm
  5. |
  6. +- 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的更多相关文章

  1. [转] 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 ...

  2. 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(3)

    四.Nova-compute 步骤17:nova-compute接收到请求后,通过Resource Tracker将创建虚拟机所需要的资源声明占用 步骤18:调用Neutron API配置Networ ...

  3. QEMU KVM Libvirt手册(5) – snapshots

    前面讲了QEMU的qcow2格式的internal snapshot和external snapshot,这都是虚拟机文件格式的功能. 这是文件级别的. 还可以是文件系统级别的,比如很多文件系统支持s ...

  4. 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设备直接分 ...

  5. kvm+libvirt虚拟机快照浅析[转]

    浅析snapshots, blockcommit,blockpull 作者:Kashyap Chamarthy <kchamart#redhat.com> Date: Tue, 23 Oc ...

  6. External Snapshot management

    External Snapshot management Symptom As of at least libvirt 1.1.1, external snapshot support is inco ...

  7. QEMU KVM libvirt手册(4) – images

    RAW raw是默认的格式,格式简单,容易转换为其他的格式.需要文件系统的支持才能支持sparse file 创建image # qemu-img create -f raw flat.img 10G ...

  8. [转] Snapshotting with libvirt for qcow2 images

    http://kashyapc.com/2011/10/04/snapshotting-with-libvirt-for-qcow2-images/ Libvirt 0.9.6 was recentl ...

  9. KVM(七)使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照

    本文将梳理 QEMU/KVM 快照相关的知识,以及在 OpenStack Nova 中使用 libvirt 来对 QEMU/KVM 虚机做快照的过程. 1. QEMU/KVM 快照 1.1 概念 QE ...

随机推荐

  1. Java格式化日期的三种方式

    1)借助DateFormat类: public String toString(Date d) { SimpleDateFormat sdf = new SimpleDateFormat(“yyyy- ...

  2. RabbitMQ安装篇

    一切不是自己实战,且跑不起来的程序都是在耍流氓! 先下载: http://www.erlang.org/downloads     erlang 包

  3. Martin Fowler’s Active Record design pattern.

    P of EAA: Active Record https://www.martinfowler.com/eaaCatalog/activeRecord.html Active Record An o ...

  4. Python菜鸟之路:Django CSRF跨站请求伪造

    前言 CSRF,Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对 ...

  5. 如何使用 Opencv dnn 模块调用 Caffe 预训练模型?

    QString modelPrototxt = "D:\\Qt\\qmake\\CaffeModelTest\\caffe\\lenet.prototxt"; QString mo ...

  6. RabbitMQ_消息队列基本使用_2

    简介 RabbitMQ:接受消息再传递消息,可以视为一个“邮局”. 发送者和接受者通过队列来进行交互,队列的大小可以视为无限的,多个发送者可以发生给一个队列,多个接收者也可以从一个队列中接受消息. p ...

  7. Java基础—序列化与反序列化(转载)

    转载自: Java序列化与反序列化 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 2.为什么需要序列化 ...

  8. C#数组存入引用类型

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cont ...

  9. github代码托管

    下载github客户端软件 1)  官网下载help.github.com 2)  百度搜索,一般用于windows7以前的系统 安装github软件 按照软件提示安装即可.不过,博主倾向使用命令行工 ...

  10. LVM逻辑磁盘管理

    一.简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵 ...