转自: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. 如何修改本地hosts文件?

    1.window7修改本地hosts文件 # window7系统hosts文件位置 C:\Windows\System32\drivers\etc 2.linux # linux系统hosts文件位置 ...

  2. 【Nginx】HTTP请求的11个处理阶段

    Nginx将一个HTTP请求分成多个阶段.以模块为单位进行处理.这样做的优点是使处理过程更加灵活.减少耦合度.HTTP框架将处理分成了11个阶段,各个阶段能够包括随意多个HTTP模块并以流水线的方式处 ...

  3. Tips for Unix/Linux

    @1: 在单个命令中创建目录树:不要逐层创建目录,尽量使用mkdir的-p选项: ~$ mkdir -p one/two/three # 假设目录one不存在 创建复杂的目录树: ~$ mkdir - ...

  4. Activity的生命周期整理

    Activity主要的三种状态: Running(运行):在屏幕前台(位于当前任务堆栈的顶部) Paused(暂停):失去焦点但仍然对用户可见(覆盖Activity可能是透明或未完全遮挡) Stopp ...

  5. pyhton3 time模块

    来自:菜鸟教程 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为 ...

  6. 转:ADO,OLEDB,ODBC,DAO的区别

    ODBC(Open Database Connectivity,开放数据库互连) 1992年,微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有 ...

  7. python函数模拟mysql增删改查功能

    import os list1 = ['staff_id', 'name', 'age', 'phone', 'dept', 'enroll_date'] def staff_info(): #获取员 ...

  8. 基于Visual c++ 2012的php扩展开发 - 环境搭建

    软件准备 Apache2.4 php-5.6.20-Win32-VC11-x86 php-5.6.20-src mysql-5.5.45-win32 vcredist_x86.exe vs2012旗舰 ...

  9. Linux下检测IP访问特定网站的ruby脚本

    root@ubuntu:~# vi check_ip.rbrequire 'rubygems' index = 1 max = 20 while (max-index) >= 0 puts in ...

  10. Zabbix3.2 客户端安装

    查看客户端环境: # cat /etc/redhat-release CentOS Linux release (Core) # uname -r -.el7.x86_64 Centos7 客户端: ...