Ceph链式快照克隆卷分离操作
Posted Carlton Xu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ceph链式快照克隆卷分离操作相关的知识,希望对你有一定的参考价值。
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字样,变成了独立卷;
以上查询后,快照克隆卷现在就已经变成了独立的卷,不依赖于任何其他卷和快照。
以上是关于Ceph链式快照克隆卷分离操作的主要内容,如果未能解决你的问题,请参考以下文章