转自:https://www.ustack.com/blog/openstack_and_ceph/

目前,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 整合的现状的更多相关文章

  1. OpenStack Kilo版加CEPH部署手册

    OpenStack Kilo版加CEPH部署手册 作者: yz联系方式: QQ: 949587200日期: 2015-7-13版本: Kilo 转载地址: http://mp.weixin.qq.co ...

  2. 在Openstack H版部署Nova Cell 时 ,终端输入nova service-list 和 nova host-list 命令将报错

    关于Cell的基本介绍,可以参考贤哥的一篇文章: [OpenStack]G版中关于Nova的Cell  http://blog.csdn.net/lynn_kong/article/details/8 ...

  3. CentOS7.4安装部署openstack [Liberty版] (二)

    继上一篇博客CentOS7.4安装部署openstack [Liberty版] (一),本篇继续讲述后续部分的内容 一.添加块设备存储服务 1.服务简述: OpenStack块存储服务为实例提供块存储 ...

  4. OpenStack G版以后的Availability Zone与Aggregate Hosts

    关于Availability Zone与Aggregate Hosts的概念解析,可以参考这篇文章:http://blog.chinaunix.net/uid-20940095-id-3875022. ...

  5. 【openstack N版】——认证服务keystone

    一. 基础环境 1.1环境介绍 linux-node1(控制节点) #系统版本 [root@linux-node1 ~]# cat /etc/redhat-release CentOS Linux r ...

  6. CentOS7.2非HA分布式部署Openstack Pike版 (实验)

    部署环境 一.组网拓扑 二.设备配置 笔记本:联想L440处理器:i3-4000M 2.40GHz内存:12G虚拟机软件:VMware® Workstation 12 Pro(12.5.2 build ...

  7. CentOS7.4安装部署openstack [Liberty版] (一)

    一.OpenStack简介 OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. OpenStack是一个 ...

  8. OpenStack IceHouse版cinder模块新添加功能

    感谢朋友支持本博客.欢迎共同探讨交流.因为能力和时间有限.错误之处在所难免,欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/gaoxingnengjisua ...

  9. openstack Train版 “nova-status upgrade check”报错:Forbidden: Forbidden (HTTP 403)

    部署openstack train版,在部署完nova项目时,进行检查,执行 nova-status upgrade check 返回报错信息如下: [root@controller ~]# nova ...

随机推荐

  1. Hard模式学编程

    靖难: 我一直推崇一种学习编程的方法,就是learn programming the hard way,我把它翻译为Hard模式学编程 . 我觉得他有以下几个要领: 1. 一开始学习的时候,要尽量去化 ...

  2. Logstash简介

    支持多种数据获取机制,通过TCP/UDP协议.文件.syslog.windows.EventLogs及STDIN等:获取到数据口,支持对数据进行过滤.修改等操作JRuby语言研发,工作在JVM中   ...

  3. 剑指offer 面试19题

    面试19题: 题目:正则表达式匹配 题:请实现一个函数用来匹配包括'.'和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配是 ...

  4. C#(ASP.NET)隐藏或显示Excel中指定列

    今天写的一个方法,实现Excel指定列的隐藏和显示: 环境:VS2010,OFFICE 2010 代码:#region 隐藏和显示Excel中的一列        /// <summary> ...

  5. 前端基础之Bootstrap介绍

    bootstrap简介 http://v3.bootcss.com/ Bootstrap优点:  下载:  Bootstrap引入 <meta name="viewport" ...

  6. 前端 JavaScript&Dom

    JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.通常JavaScript脚本是通过嵌入在HTML中来实现 ...

  7. Python学习进程(1)Python简介

        Python是一种结合了"解释性"."编译性"."互动性"和"面向对象"的脚本语言. (1)官方介绍: Pyth ...

  8. Git版本控制系统VCS

    Git版本控制系统VCS 一.版本控制系统基本情况说明 版本控制是一种记录一个或者若干个文件内容的变化,以便将来查阅特定版本修订情况的系统 1.作用 记录文件的所有历史变化 随时可回复到任何一个历史状 ...

  9. 手机端的META差异

    手机端的META你了解多少? 我们先来简单了解下meta标签:meta指元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. 标签位于文档的头部, ...

  10. 收集整理的awk用法小结

    awk 用法:awk ‘ pattern {action} ‘ 变量名 含义 ARGC 命令行变元个数 ARGV 命令行变元数组 FILENAME 当前输入文件名 FNR 当前文件中的记录号 FS 输 ...