【vdsm 源代码漫步】vdsm的存储(3)

  • 关机状态创建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元数据。

0 条回复 A 作者 M 管理员 E
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论