qemu-img 快照的一些总结

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

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

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

2.当你从一个原来的虚拟镜像,base过来一个虚拟镜像,在首次启动新虚拟镜像之前,删除原来虚拟镜像某个文件,在新的虚拟镜像中一样看不到。的机制的实现是和2红色地方有关系的。

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

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

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

libvirt的外部快照实现可能使用了qemu的base,rebase,commit功能

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来实现的。

qemu-img 快照的一些总结的更多相关文章

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

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

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

  3. 使用virsh命令创建KVM虚拟机快照

    查看虚拟机所在主机和虚拟机名称:[root@node-1 ~]# nova show a88dcf5d-c8b2-46a5-af27-a176d8235c9d|grep hyper| OS-EXT-S ...

  4. 使用libvirtAPI打快照原理

    参考: https://blog.51cto.com/3646344/2096347 https://blog.51cto.com/3646344/2096351(磁盘外部快照) API接口: htt ...

  5. 关于Linux虚拟化技术KVM的科普 科普五(From 世民谈云计算)

    另一位大神写到KVM文章,KVM 介绍(1):简介及安装.KVM 介绍(2):CPU 和内存虚拟化.KVM 介绍(3):I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtual ...

  6. KVM&Libvirt基本概念及开发杂谈

    导读 大家好,本次肖力分享的主题是KVM&Libvirt基本概念及开发杂谈,内容有些凌乱松散,主要基于自己早期整理的笔记内容和实践感悟,有些内容难免有失偏颇,望见谅.前面先介绍下需要了解的基本 ...

  7. kvm详细介绍

    KVM详解,太详细太深入了,经典 2016-07-18 19:56:38 分类: 虚拟化 原文地址:KVM详解,太详细太深入了,经典 作者:zzjlzx KVM 介绍(1):简介及安装 http:// ...

  8. linux中kvm的安装及快照管理

    一.kvm的安装及状态查看 1.安装软件 yum -y install kvm virt-manager libvirt2.启动libvirtd 报错,升级device-mapper-libs yum ...

  9. KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  10. KVM 介绍(6):Nova 通过 libvirt 管理 QEMU/KVM 虚机 [Nova Libvirt QEMU/KVM Domain]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

随机推荐

  1. java -jar start.jar和nohup java -jar xxx.jar > test.log &的区别

    nohup用在什么地方? KD3EE49RD38

  2. PHP对表单提交特殊字符的过滤和处理

    PHP关于表单提交特殊字符的处理方法做个汇总,主要涉及htmlspecialchars/addslashes/stripslashes/strip_tags/mysql_real_escape_str ...

  3. 为Linux服务器伪装上Windows系统假象

    网络上的计算机很容易被黑客利用工具或其它手段进行扫描,以寻找系统中的漏洞,然后再针对漏洞进行攻击. 通过伪装Linux系统,给黑客设置系统假象,可以加大黑客对系统的分析难度,引诱他们步入歧途,从而进一 ...

  4. bat命令中的变量声明及使用

    在bat文件中声明变量的方式如下: set xxx_variant_name=yyyyyyyyyyyy move D:\abc\efg\test.txt %xxx_variant_name%\test ...

  5. NET Core驱动已出,支持EF Core

    NET Core驱动已出,支持EF Core 千呼万唤始出来MySQL官方.NET Core驱动已出,支持EF Core. 昨天MySQL官方已经发布了.NET Core 驱动,目前还是预览版,不过功 ...

  6. Mysql权限控制 - 允许用户远程连接(转载)

    Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作: 一.允许root用户在任何地方进行远程登录,并具有所有库 ...

  7. iOS中常用的四种数据持久化方法简介

    iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...

  8. 转:MFC创建多线程实例

    作者:http://blog.csdn.net/wangningyu/article/details/4404134 平时在MFC里使用多线程时其实是很方面的,因为微软提供了一个API让我们很方面的去 ...

  9. 如何进行fragment中的来回切换?

    本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术,本文为大家讲解如何进行fragment中的来回切 ...

  10. XJOI网上同步测试DAY14 T3

    思路:tarjan把桥找出来,然后缩点,注意这里的缩点是:如果两个点之间的连边不是桥,那么就把他们缩起来,然后用一个lct维护,对于每个询问,如果官道连接的是两个联通块的话,就把他们连起来,否则我们就 ...