1. 需求描述

开源OpenStack私有云架构,底层使用了开源分布式Ceph软件作为OpenStack Cinder后端的块存储资源池,为了满足虚拟机的备份功能,在OpenStack云平台侧使用定期快照备份功能来备份系统、数据盘的数据,可以在原虚拟机系统操作失误或其他原因导致数据丢失、系统出现异常时,可以通过快照进行恢复数据,
需求:现在需要将快照克隆卷(云盘)成为一个独立卷,不依赖任何其他卷和卷快照。

2. 什么是Ceph链式快照克隆卷?

快照是指块存储(也就是所谓统称云盘、云磁盘、硬盘)都是块存储设备,块存储一般都会提供快照的功能,快照类似于拍照的功能,对某一个时间点的块存储的数据保存记录,拍张照保存下来就代表这一时刻的数据;
通过块存储快照克隆生成新的卷,则为快照克隆卷,快照卷分为链式快照克隆卷,非链式快照克隆卷;

链式快照克隆卷: 非独立数据卷,依赖于父卷及父卷快照,此卷的已有数据读取则使用父卷,新加入的数据会写入到新卷中进行标记 【链式快照卷 如果想独立,需要进行与父卷分离动作,Ceph层面是flatten】

非链式快照克隆卷: 独立的卷,不依赖于其父卷,在通过快照创建卷时,会将重合数据重新写入新的卷,此时新卷和父卷没有任何关系;

备份快照恢复新卷的操作流程:
在这里插入图片描述

源端(云盘) 存在3个快照,使用其中一个快照来克隆一个新的快照克隆卷(云盘),这时候快照克隆卷(云盘) 是有数据依赖的,依赖于源端(云盘)和源卷快照2,在快照克隆卷(云盘)不删除或者不解链的情况下,源端快照2和源卷(云盘)是无法删除掉的,下面我们看如何可以将快照克隆卷变成独立卷

Ceph是可以配置从快照创建新的快照克隆卷时,可以配置独立的快照克隆卷,
需要在cinder的配置文件中 cinder.conf 配置如下参数为true;
rbd_flatten_volume_from_snapshot=true # 独立卷不依赖任何快照,此时快照克隆卷的时间上会比较久一些;

3. 获取正式业务虚拟机的系统卷及数据盘卷UUID

由于我们通过OpenStack Cinder服务调用Ceph创建处理的快照克隆卷,此时我们需要先通过OpenStack层面找到对应需要进行处理的快照克隆卷,可以在OpenStack管理控制台找到,也可以通过后台Cinder cli指令来查询到,这里我们就不进行赘述;

4. 查询系统卷及数据卷是否存在通过快照创建(父卷)

使用ceph的rbd指令进行查询需要处理的卷是否在底层存在卷依赖(partent)关系

rbd info <Ceph pool name>/<Ceph volume uuid>

执行指令后,有以下截图中 parent 字样的输出,则表示此卷有父卷快照关联存在,需要进行分离操作,如没有 parent 输出则表示为独立卷,不需要其他操作;
在这里插入图片描述

5. 解除父卷快照与子卷的关联关系

rbd flatten <Ceph pool name>/<Ceph volume uuid>

指令执行后,后台会自动进行卷 flatten 数据同步动作,此动作的速度以及所需时间跟底层存储性能和数据量大小有关,等待 100%
完成字样,表示 flatten 完成

在这里插入图片描述
再次查询卷的相关信息,发现已经没有了parent字样,变成了独立卷;在这里插入图片描述
以上查询后,快照克隆卷现在就已经变成了独立的卷,不依赖于任何其他卷和快照。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐