- 关机状态创建snapshot (块存储为例)
(1)createVolume 创建出来的卷作为叶子节点
(2) Change LV tags 修改叶子节点的标签
(3)prepareImage 主要创建 /var/run下的连接,并启动有关LV
(4)teardownImage
- snapshot预览
(1)createVolume 创建镜像的硬链接以及相关元数据
(2)prepareImage
(3)teardownImage
可以看出,snapshot预览 创建硬链接,梳理元数据。已经成功的进行了恢复。
- snapshot预览提交
(1)deleteVolume 删除不再需要的Volume
- snapshot预览撤销
(1)deleteVolume 删除预览时候创建的Volume
(2)修改LV的相关元数据,进行恢复
snapshot提交只是将不用的卷删除。
- 关机状态删除snapshot (块存储为例)
(1) prepareMerge(hsm.py)–>prepareMerge(sp.py)–>prepare(merge.py)–>SubchainInfo.prepare(merge.py)–>volume.prepare(volume.py)
主要作用是,获取写资源(即,获取写许可),而后扩容base volume。(_update_base_capacity;_extend_base_allocation),最后释放资源,deactivation top LVM (teardown函数
)。简单来讲,删除snapshot的时候,将baseLV进行扩容,以便容纳topLV的内容,同时deactive topLV。
(2)sdm_merge(hsm.py)–>run(sdm/api/merge.py)–>qemuimg.commit
主要通过qemu-img用来完成merge。
(3)finalizeMerge(hsm.py)–>finalizeMerge(sp.py)–>finalize(merge.py)
–> _finalize_leaf_merge(merge.py)如果删除的snapshot导致的是删除一个叶子vol,那么仅仅更新vdsm数据即可。其中叶子vol后续会被engine删除。
–>_finalize_internal_merge(merge.py)如果删除的snapshot导致被删除的是一个internal volume.那么需要更新qcow元数据和vsdm元数据。