转自: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. MySQL事务隔离级别,锁(转)

    add by zhj: 本文针对的是MySQL的InnoDB存储引擎,不适用于MySQL的其它存储引擎和其它数据库 原文:MySQL数据库事务隔离级别(Transaction Isolation Le ...

  2. server.xml; lineNumber: 44; columnNumber: 95; 对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾。

    url="jdbc:mysql://192.169.1.201:3306/raker?useUnicode=true&characterEncoding=UTF-8&zero ...

  3. POJ 3468 A Simple Problem with Integers 【线段树】

    题目链接 http://poj.org/problem?id=3468 思路 线段树 区间更新 模板题 在赋初始值的时候,按点更新区间就可以 AC代码 #include <cstdio> ...

  4. iOS 52个技巧学习心得笔记 第一章 熟悉OC

    1 .简单了解OC2 .在类的头文件中尽量少引入其他头文件3 .多用字面量语法 少用与之等价的方法 4 .多用类型常量 少用 #define 预处理指令5 .用枚举表示状态,选项,状态码 .简单了解O ...

  5. sequence.c

    /* * sequence.c */ #include <stdio.h> #include <memory.h> /* * SM3算法产生的哈希值大小(单位:字节) */ # ...

  6. Oracle网络服务管理与配置

    一.Oracle网络服务概述 1.网络解决方案. (1)可连接性:在Oracle中,由Oracle net组件负责在客户端应用程序与数据服务器之间创建会话.维护会话连接和数据传输. (2)可管理性: ...

  7. java word导入导出工具类

    package com.shareworx.yjwy.utils; import java.io.InputStream; import java.util.HashMap; import java. ...

  8. imx6q 添加intel PCIE网卡

    TQ_IMX6Q开发板移植rtl8168-PCIE转千兆网卡 一.配置内核选项PCIE总线驱动支持 默认的内核配置可能没有把PCIE的总线驱动编入内核,所以需要确认是否把驱动编译到了内核里面. 配置好 ...

  9. P3825 [NOI2017]游戏

    题目 P3825 [NOI2017]游戏 做法 \(x\)地图外的地图好做,模型:\((x,y)\)必须同时选\(x \rightarrow y,y^\prime \rightarrow x^\pri ...

  10. 查看oracle当前连接数和进程数

    查询数据库当前进程的连接数: select count(*) from v$process; 查看数据库当前会话的连接数: select count(*) from v$session; 查看数据库的 ...