zoukankan      html  css  js  c++  java
  • qemu-img 快照的一些总结

    qemu-img 快照的一些总结

     http://www.openext.org/2014/06/qemu-img-snapshot-re

    http://blog.csdn.net/muge0913/article/details/33723911

    1.向虚拟机磁盘里写入文件,虚拟磁盘会变大。当你删除该文件时候,虚拟磁盘大小依旧不变。

    2.当你从一个原来的虚拟镜像,base过来一个虚拟镜像,在首次启动新虚拟镜像之前,删除原来虚拟镜像某个文件,在新的虚拟镜像中一样看不到。在执行新的虚拟镜像后,在原始镜像中删除某个文件,在新的镜像中能看到,且依旧可以訪问。

    3.总上,1的机制的实现是和2红色地方有关系的。

    4.qemu-img snapshot 实现的是内部快照

    5.qemu-img backing_file实现的是外部快照

    6.libvirt的快照实现是在qemu的基础上实现的

    libvirt的外部快照实现可能使用了qemubaserebasecommit功能

    libvirt创建非活动的内部快照是通过调用下面函数实现的,该函数说明libvit事实上调用了qemu-img snapshot功能。

    /* The domain is expected to be locked and inactive. */

    static int

    qemuDomainSnapshotCreateInactiveInternal(virQEMUDriverPtr driver,

    virDomainObjPtr vm,

    virDomainSnapshotObjPtr snap)

    {

    return qemuDomainSnapshotForEachQcow2(driver, vm, snap, “-c”, false);

    }

    /* The domain is expected to be locked and inactive. */

    static int

    qemuDomainSnapshotRevertInactive(virQEMUDriverPtr driver,

    virDomainObjPtr vm,

    virDomainSnapshotObjPtr snap)

    {

    /* Try all disks, but report failure if we skipped any. */

    int ret = qemuDomainSnapshotForEachQcow2(driver, vm, snap, “-a”, true);

    return ret > 0 ? -1 : ret;

    }

    libvirt创建非活动的外部快照调用下面函数:

    static int qemuDomainSnapshotCreateInactiveExternal(virQEMUDriverPtr driver,

    virDomainObjPtr vm,

    virDomainSnapshotObjPtr snap,

    bool reuse)

    在该函数中你可以发现一下语句

    /* creates cmd line args: qemu-img create -f qcow2 -o */

    if (!(cmd = virCommandNewArgList(qemuImgPath,

    “create”,

    “-f”,

    virStorageFileFormatTypeToString(snapdisk->format),

    “-o”,

    NULL)))

    goto cleanup;

    if (defdisk->format > 0) {

    /* adds cmd line arg: backing_file=/path/to/backing/file,backing_fmd=format */

    virCommandAddArgFormat(cmd, “backing_file=%s,backing_fmt=%s”,

    defdisk->src,

    virStorageFileFormatTypeToString(defdisk->format));

    所以libvirt创建非活动外部快照是通过qemu-img create来实现的。

  • 相关阅读:
    silverlight的Datagrid控件列绑定属性笔记
    VC字符串处理整理
    Combobox实现多项选择 Silverlight下“Combobox”怎样实现多项选择?
    C# 类初始化顺序
    Silverlight程序设置断点无法进入调试的解决方案
    有哪些适合新手练手的Python项目?
    Ubuntu 终端常用命令
    浅析python 中__name__ = '__main__' 的作用
    py thon 多线程(转一篇好文章)
    python os.path模块
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5196377.html
Copyright © 2011-2022 走看看