OpenStack H版与 Ceph 整合的现状
转自:https://www.ustack.com/blog/openstack_and_ceph/
Contents
目前,OpenStack Havana版即将发布,将不会有额外的feature进入。在这一版本中,UnitedStack参与并推动了Ceph与OpenStack部分核心项目的整合,整合的好处在于提高性能,降低管理成本和维护成本。但这条路却不并是那么一帆风顺,让我们一起来回顾H版OpenStack各项目与Ceph整合的故事和目前进展。
Ceph与Nova整合
在OpenStack Nova项目中存在两种类型的存储,一类是本地易失性存储,另一类是持久块设备。两者最明显的特征就是持久块设备由Cinder项目管理,并且具备大量API进行管理,如Snapshot,Backup等等。而相对的本地易失性存储由Nova的hypervisor实现,如在libvirt中目前支持Qcow,LVM镜像类型。这类存储只具备简单的创建和删除设备能力,主要用作创建Root,Swap,Empheremal磁盘分区的后备。
Cinder项目很早就已经支持Ceph,并且一直是最完备的后端之一,而在H版的Nova易失性存储中同样迎来了Ceph的支持(只支持libvirt)[Add RBD supporting to libvirt for creating local volume](https://review.openstack.org/#/c/36042/)。在Nova中,目前可以通过指定”libvirt_images_type=rbd”来选择Ceph作为易失性后端。这就意味着如果采用Ceph作为块设备支持,那么在OpenStack的VM可以只采用Ceph的存储池。
Ceph与Cinder整合
在H版的Cinder项目中增加了块设备备份到Ceph的能力,这个功能意味着如果在集群中存在其他块设备如SAN等,可以将其备份到Ceph集群中,与之前只能备份到Swift中相比大大增强了Ceph集群的使用范围。
随着Cinder支持extend volume的能力,Ceph后端同样增加了对Ceph Volume进行扩展的能力[Implement extend volume functionality in Rbd](https://review.openstack.org/#/c/36415/)。
另外,另一个关键性的实现是Ceph块设备的auto flatten能力。在Ceph RBD实现中,如果用户在对一个RBD Volume不断Snapshot,Clone的话会导致一个很长的镜像依赖链,这个会大大影响到Volume的性能。这个[Added copy-on-write support for all RBD cloning](https://review.openstack.org/#/c/41469/)实现了通过指定最长镜像链来实现自动将镜像解耦。对用户透明化复杂的镜像关系非常有用。
整合综述
在Ceph与OpenStack完全整合的路径上现在只存在一个障碍: Nova镜像启动需要从Glance中下载到本地再转移到Ceph中启动,而Glance早已支持Ceph后端存储。这意味着镜像需要经历一次下载和一次上次才能被Nova使用,而这两次镜像传输完全是可以避免的,遗憾的是这个[Make rbd usable for ephemeral storage](https://review.openstack.org/#/c/46879/)由于提交太迟错过了窗口期导致被拒。
当然,大部分工作都已经到位,欠缺的Patch可以很容易backport回来,通过这些努力,我们得到一个清晰的整合蓝图。
从上图中我们可以发现,当OpenStack存储池中只存在Ceph以后,所有的存储资源可以被有效的利用起来,一些苦恼的存储区域分配和中间传输流程都会随之消失。所有的镜像存储由Glance存储在Ceph中,所有的持久块设备由Cinder在Ceph中管理。当一个虚拟机启动时,Nova可以直接从Ceph中取得镜像然后启动,中间除了VM需要从Ceph中获得启动镜像内容以外不会有多余的传输消耗。
从这里可以延伸出的结果是:OpenStack对块设备所需支持由Ceph可以完全实现并且统一好管理。
相关Patch
1. Implement extend volume functionality in Rbd(UnitedStack)
https://review.openstack.org/#/c/36415/ 给Cinder项目的Ceph RBD后备提供扩展块设备的能力
2. Add RBD supporting to libvirt for creating local volume(UnitedStack)
https://review.openstack.org/#/c/36042/ Nova的Root,Swap,Emphemeral分区增加使用Ceph RBD的选项和能力
3. Make rbd usable for ephemeral storage(Inktank)
https://review.openstack.org/#/c/46879/当使用RBD作为Nova的libvirt后备时,Nova会通过Http从Glance下载镜像到本地再上传到Ceph中,对于大镜像(Windows)来说非常浪费带宽和存储空间。这个补丁实现了当Glance与Nova使用Ceph RBD存储在同一个Ceph Pool中时,Nova会从Glance处创建一个copy-on-write镜像。这使得启动VM的时间会大大减小,不再受限于镜像的大小。
4. Added copy-on-write support for all RBD cloning(Canonical)
https://review.openstack.org/#/c/41469/主要为Cinder的Ceph RBD后备提供copy-on-write的克隆块设备能力,会大大减小克隆块设备的时间。同时,为了避免过长的镜像依赖链,这里实现了自动折叠镜像的能力。也就是当镜像链长度超过指定大小时,父子镜像之间会进行数据复制来避免依赖。
OpenStack H版与 Ceph 整合的现状的更多相关文章
- OpenStack Kilo版加CEPH部署手册
OpenStack Kilo版加CEPH部署手册 作者: yz联系方式: QQ: 949587200日期: 2015-7-13版本: Kilo 转载地址: http://mp.weixin.qq.co ...
- 在Openstack H版部署Nova Cell 时 ,终端输入nova service-list 和 nova host-list 命令将报错
关于Cell的基本介绍,可以参考贤哥的一篇文章: [OpenStack]G版中关于Nova的Cell http://blog.csdn.net/lynn_kong/article/details/8 ...
- CentOS7.4安装部署openstack [Liberty版] (二)
继上一篇博客CentOS7.4安装部署openstack [Liberty版] (一),本篇继续讲述后续部分的内容 一.添加块设备存储服务 1.服务简述: OpenStack块存储服务为实例提供块存储 ...
- OpenStack G版以后的Availability Zone与Aggregate Hosts
关于Availability Zone与Aggregate Hosts的概念解析,可以参考这篇文章:http://blog.chinaunix.net/uid-20940095-id-3875022. ...
- 【openstack N版】——认证服务keystone
一. 基础环境 1.1环境介绍 linux-node1(控制节点) #系统版本 [root@linux-node1 ~]# cat /etc/redhat-release CentOS Linux r ...
- CentOS7.2非HA分布式部署Openstack Pike版 (实验)
部署环境 一.组网拓扑 二.设备配置 笔记本:联想L440处理器:i3-4000M 2.40GHz内存:12G虚拟机软件:VMware® Workstation 12 Pro(12.5.2 build ...
- CentOS7.4安装部署openstack [Liberty版] (一)
一.OpenStack简介 OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. OpenStack是一个 ...
- OpenStack IceHouse版cinder模块新添加功能
感谢朋友支持本博客.欢迎共同探讨交流.因为能力和时间有限.错误之处在所难免,欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/gaoxingnengjisua ...
- openstack Train版 “nova-status upgrade check”报错:Forbidden: Forbidden (HTTP 403)
部署openstack train版,在部署完nova项目时,进行检查,执行 nova-status upgrade check 返回报错信息如下: [root@controller ~]# nova ...
随机推荐
- 浅析 Pycharm 内存、cpu 占用率
浅析 Pycharm 内存.cpu 占用率 本机配置参数: ------------------------------------------ Windows 10 专业版 X64 ----- ...
- ALE和IDocs
转自:http://blog.163.com/shenshengqge@126/blog/static/820512902011101152518635/ 作为目前ERP市场上最为领先的应用系统之一, ...
- 1.2 使用电脑测试MC20模块的GPS功能测试
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- admin 模块功能
class CustomModelAdmin(admin.ModelAdmin): def has_module_permission(self, request): 是否会显示model def h ...
- ajax json 异步请求
function ajaxTest(){ if (true) { $.ajaxSettings.async = false; var dataJson; $.getJSON("/univer ...
- 对JAVA的集合的理解
对JAVA的集合的理解是相对于数组 1.数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型) 2.JAVA集合可以存储和操作数目不固定的一组数据. 3.所有的JAVA集合都位 ...
- jquery的autocomplete在firefox下不支持中文输入法的bug
Query.Autocomplete 是jquery的流行插件,能够很好的实现输入框的自动完成(autocomplete).建议提示(input suggest)功能,支持ajax数据加载. 但唯一遗 ...
- Linux安装Mycat
1.官网下载mycat到/home/install目录下 2.解压到/usr/local/mycat目录下 tar -zxvf Mycat-server-1.6-RELEASE-20161028204 ...
- codeforces上某题
一道codeforces上的题目. 题目大意: 定义有k个不同的字符的字符串为好字符串.现在给出一个字符串,求解对该字符串的每个前缀Si至少是多少个好字符串的连接,若不能由好字符串连接而成则输出-1. ...
- Django 详解<二> 之url和view
Django URL(路由系统) RL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:你就是以这种方式告诉Django,对 ...