• 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 (21474836480 bytes)
    disk size: 2.5M
    cluster_size: 65536
    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 (21474836480 bytes)
    disk size: 129M
    cluster_size: 65536
    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 (21474836480 bytes)
    disk size: 3.6M
    cluster_size: 65536
    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 (21474836480 bytes)
    disk size: 2.5M
    cluster_size: 65536
    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: [100 %]
    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 (21474836480 bytes)
    disk size: 145M
    cluster_size: 65536
    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

  • 相关阅读:
    Quartz定时调度CronTrigger时间配置格式说明与实例
    JAVA中堆和栈的区别
    s:iterator循环输出数字
    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)
    FilenameFilter总结
    Oracle sql"NOT IN"语句优化,查询A表有、B表没有的数据
    Java并发教程(Oracle官方资料)
    做考试系统用到的关于onbeforeunload一些兼容性问题
    Java集合类ArrayList循环中删除特定元素
    Log4j写入数据库详解
  • 原文地址:https://www.cnblogs.com/allcloud/p/5074407.html
Copyright © 2020-2023  润新知