当前位置: > 虚拟化 Virtualization > oVirt >

VDSM如何生成和删除(块设备上的)虚拟机的snapshot

时间:2020-01-11 18:29来源:linux.it.net.cn 作者:IT

本文只是记录技术细节,需要您对ovirt有一定的了解,相关技术基础,请自行谷歌之。

ovirt界面(engine)执行过程过程:

(1) 数据中心采用iscsi块存储。根据模板创建一个虚拟机(只有一个磁盘)。

(2) 给虚拟机的磁盘创建一个snapshot。

(3) 删除此snapshot。

上述操作过程中,vdsm的采取的动作:

(1) 根据模板创建一个虚拟机后,对应虚拟机的一个磁盘会在存储域建立两个LV软连接, 如下:

lrwxrwxrwx. 1 svserver kvm 78 Feb 27 16:38 2cf00d5f-1bd6-4449-8a33-66d4424d1231 -> /dev/21c53c8a-8c8f-44db-8125-d6f378bfde2d/2cf00d5f-1bd6-4449-8a33-66d4424d1231

lrwxrwxrwx. 1 svserver kvm 78 Feb 27 16:38 9497267f-1df4-4f60-889a-6c3c440da2c3 -> /dev/21c53c8a-8c8f-44db-8125-d6f378bfde2d/9497267f-1df4-4f60-889a-6c3c440da2c3

其中 9497267f-1df4-4f60-889a-6c3c440da2c3 是模板的镜像, 而 2cf00d5f-1bd6-4449-8a33-66d4424d1231

是基于这个模板的镜像文件。这两块镜像一起构成了虚拟机的磁盘。

(2)虚拟机创建snapshot之后,目录下增加了新的镜像文件 096edc8b-1ce4-42bb-b50c-75e2caa758cc。

lrwxrwxrwx. 1 svserver kvm 78 Feb 27 16:41 096edc8b-1ce4-42bb-b50c-75e2caa758cc -> /dev/21c53c8a-8c8f-44db-8125-d6f378bfde2d/096edc8b-1ce4-42bb-b50c-75e2caa758cc

lrwxrwxrwx. 1 svserver kvm 78 Feb 27 16:38 2cf00d5f-1bd6-4449-8a33-66d4424d1231 -> /dev/21c53c8a-8c8f-44db-8125-d6f378bfde2d/2cf00d5f-1bd6-4449-8a33-66d4424d1231

lrwxrwxrwx. 1 svserver kvm 78 Feb 27 16:38 9497267f-1df4-4f60-889a-6c3c440da2c3 -> /dev/21c53c8a-8c8f-44db-8125-d6f378bfde2d/9497267f-1df4-4f60-889a-6c3c440da2c3

新的文件096edc8b-1ce4-42bb-b50c-75e2caa758cc 是以2cf00d5f-1bd6-4449-8a33-66d4424d1231 为基础文件。

(3) 虚拟机删除snapshot时候,执行如下命令:

/usr/bin/qemu-img rebase -t none -T none -f qcow2 -F qcow2 -b ../0a804dc8-76e5-4195-b56a-0e059a4a1f92/9497267f-1df4-4f60-889a-6c3c440da2c3 /rhev/data-center/mnt/blockSD/21c53c8a-8c8f-44db-8125-d6f378bfde2d/images/0a804dc8-76e5-4195-b56a-0e059a4a1f92/096edc8b-1ce4-42bb-b50c-75e2caa758cc

可以看到,删除snapshot的时候,并不会删除096edc8b-1ce4-42bb-b50c-75e2caa758cc,而是修改它的backfile,

将backfile 由2cf00d5f-1bd6-4449-8a33-66d4424d1231 改为模板9497267f-1df4-4f60-889a-6c3c440da2c3,

同时删除2cf00d5f-1bd6-4449-8a33-66d4424d1231,从而完成了snapshot的删除。

小技巧
(1) 如何将engine上的磁盘和vsdm管理的磁盘联系起来?

在engine上磁盘界面找到磁盘的uuid, 然后再主机上执行 find /rhev/ -name uuid 即可。





(责任编辑:IT)
------分隔线----------------------------