当前位置:   article > 正文

cinder创建卷的不同方式源码分析_通过快照创建卷 cinder

通过快照创建卷 cinder

LVMDriver下:

1.     创建raw格式的卷:_create_raw_volume

lvmDriver下最终调用LVMcreate_volume函数:

lvcreate -T -V size_str -n name pool_path(支持thin)或

lvcreate -L size_str  -n  name vg_name


2.     从快照创建卷:drive.create_volume_from_snapshot

lvmDriver首先调用LVMcreate_volume函数创建一个空卷,

拷贝快照数据到空卷中(ddfile拷贝)

 

3.     从已有卷创建卷:_create_from_source_volume

lvmVolumeDriver调用LVMcreate_cloned_volume函数:

先对卷做快照(这个快照后来被删除):lvcreate --name name --snapshotvg_name/source_lv_name

然后走从快照创建卷的流程

 

4.     image创建卷:driver.clone_image

lvmVolumeDriver先做镜像处理,得到相关参数

然后调用LVMcreate_cloned_volume函数,走从已有卷创建卷的流程:

 

5.     source_replica创建卷:基于flashfull_Copy

 

 RBDDriver下:

6.     创建raw格式的卷:_create_raw_volume

RBDDriver调用函数基本过程:

创建一个Rados的连接;

初始化一个RBD类实例,用来创建镜像(就是卷);

调用create函数self.RBDProxy().create(…),最终会调用librbd.rbd_create函数

 

7.     从快照创建卷:drive.create_volume_from_snapshot

RBDDriver调用函数过程:

创建一个Rados的连接;

初始化一个RBD类实例,用来创建镜像(就是卷);

调用clone函数self.RBDProxy().clone (),最终会调用librbd.rbd_clone函数

如果卷和快照要分离,最终会调用librbd.rbd_flatten函数

 

8.     从已有卷创建卷:_create_from_source_volume

该函数根据rbd_max_clone_depth的值确定是否需要flatten。判断源卷是第几代克隆卷,如果不是克隆卷,则为0. 

rbd_max_clone_depth <=0,说明源卷不是克隆卷,直接调用librbd.rbd_copy函数做数据全拷贝到一个新盘;

rbd_max_clone_depth=5,需要将源卷先flatten(即源卷是某卷的第五代clone子孙,则需要和以前的父辈脱离关系);然后调用librbd函数:创建快照、保护快照、克隆快照。

0<rbd_max_clone_depth<5,直接调用librbd函数:创建快照librbd.rbd_snap_create、保护快照librbd.rbd_snap_protect、克隆快照librbd.rbd_clone

总之最后都用的是librbd.rbd_copy或librbd.rbd_clone函数接口。


9.     image创建卷:driver.clone_image

如果镜像支持克隆(urlrbd://aaa/bbb/ccc/ddd格式),直接通过url的解析获取参数,调用librbd.rbd_clone函数,创建卷。

如果镜像不支持克隆(urlcinder://xxxx格式),这通过镜像id查询数据库,获取镜像信息。然后调用从卷创建卷的流程。

 

10.   source_replica创建卷:基于flashfull_Copy


结:

码中用到的RBDVolumeProxy下的copy函数,会用到Image类的copy函数,最后调用librbd.rbd_copy

在代码中用到RBDProxy().clone会用RBD类的clone数,后调用librbd.rbd_clone函数

用规律(LVMDriverRBDDriver都类似):

“从镜像创建卷”会复用到“从卷创建卷”

建卷”会复用到“从快照创建卷

快照建卷”会复用到“创建新卷”

由繁到简顺序:“从镜像创建卷”à“从卷创建卷”à“从快照创建卷”à“创建新卷”


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/217525
推荐阅读
相关标签
  

闽ICP备14008679号