qemu-img 提交完整的支持链或删除空的中间覆盖

qemu-img commit complete backing chain or delete empty middle overlay

我当前的设置有三张 qcow2 图片。

布局为:

base (100GB) <- snap1 (empty) <- snap2 (80GB)

我不想commit那个数量两倍!将 snap2 变基为 base 然后提交是否安全?如果是这样。我想我可以在之后将 snap2 变回 snap1。我不能吗?

我自己解决了问题,因为我不想像我发现的唯一一个 post 那样等待五年没有答案。

任务:移除中间部分,将外部重新定位到底部,然后再次返回。

base(system) <- middle(empty) <- outer(changes)
        to
base(system) <- outer(changes)
        and back
base(system) <- middle(empty) <- outer(changes)

As long as the middle snapshot is empty, it is safe to use -u (unsafe). I didn't test if unsafe pulls data, yet.

确实有效。所发生的一切是,似乎已完全阅读该基础以进行验证。 如果它是 EMPTY,则可以在中间删除和插入 the/a 快照。支票不写 任何东西,但是在插入快照时,它实际上读取的内容比实际的要多。使用 -u (不安全) 参数使这立即发生。基地保持不变,所有变化都保持不变 在外部快照中。由于没有提交,中间的快照一直是空的。

任务: 一样,但中间不空

base(system) <- middle(changes) <- outer(empty or changes)
        to
base(system) <- outer(empty or changes)
        back (doesn't make sense, read why)
no

这是一种单向操作。在将外部变基到基础之后,您只能将一个空快照插入中间。整个基地被再次读取,中间快照的数据被缓慢向上拉到外部图像中。中间的快照仍然可以使用,但是将外部快照变基到它没有任何意义。如果你不想分支,你可以删除它。数据现在在外部快照中可用。