Ceph在OpenStack中的地位
对Ceph在OpenStack中的价值进行简要介绍,并且对Ceph和Swift进行对比。
对于一个IaaS系统,涉及到存储的部分主要是块存储服务模块、对象存储服务模块、镜像管理模块和计算服务模块。具体针对OpenStack而言,则分别对应为其中的Cinder、Swift、Glance和Nova四个项目[1]。
在块存储服务部分,Ceph目前是Cinder项目的默认存储后端。前已述及,Red Hat也已经利用自己在KVM/QEMU社区中的影响力,将RBD驱动直接集成在QEMU中。这样,虚拟机访问基于RBD实现的块设备的性能将得到优化。
在对象存储部分,Swift是OpenStack自带的对象存储实现方案。但Ceph也已经成为了Swift最强有力的竞争对手。目前Swift也在考虑采用Ceph作为自己的存储后端。关于Ceph和Swift的故事将在6.2节详细展开。
在镜像管理部分,目前Glance已经支持将Ceph作为自己的本地镜像文件缓存。
在计算服务部分,United Stack目前正在推动将Ceph FS作为Nova计算节点的本地文件系统。
整体而言,Ceph事实上是目前OpenStack生态系统中呼声最高的开源存储解决方案。这一点从笔者在OpenStack 2013 HongKong Summit上的亲身体验可以得到印证。目前,以HP、Dell、Intel等为代表的企业IT领导厂商,和以Mirantis、eNovance、United Stack为代表的若干OpenStack社区新兴厂商,都将Ceph作为重要的乃至于首选的开源存储解决方案。
笔者认为,Ceph之所以在诞生多年不温不火的情况下,迅速在OpenStack社区中受到关注,除了其他一些明显优点之外,应该还是和其支持统一存储的能力有关。这一特性恰恰是OpenStack社区所需要的。
OpenStack项目设计的准则之一就是灵活可扩展。同时,其各个成员项目的背景也不尽相同。这也就导致各个项目在涉及存储系统时所采取的选择各有差异。但是,这一现状势必导致OpenStack的部署和运维面临一定的挑战。特别是对于一些规模不大的OpenStack部署实例,如果让块存储、对象存储、镜像缓存、计算节点本地存储等模块分别采用三四种不同的后端解决方案,则一方面其部署十分麻烦,另一方面运维人员的后续工作也很繁琐。在这种情况下,如果能够采用Ceph作为一种统一存储后端,则确实可以有效缓解这一问题。当然,这只是笔者的一家直言。任何技术选择必然都有其复杂的背后原因,这里的信息仅供参考。
Ceph与Swift:不能不说的故事,不能不作的比较
首先对Swift项目的来龙去脉进行简单介绍,以便大家更好地了解这个项目的特性,及其背后隐藏的原因。此处关于Swift的信息主要引自[2]。
Swift最早起源于2008年,本来是Rackspace公司内部开发的用于支撑其公有云对象存储业务的后端系统。当时,Amazon的S3服务已经颇受欢迎,因此,Rackspace决定开发Swift以提供对应业务作为回应。也正是因为这个原因,Swift的设计目标十分纯粹,就是一个优秀的、可以和S3相媲美的对象存储系统。其他要求纯属多余,因此完全不在Swift开发者的考虑之列。
Swift的开发大致历时一年,并在Rackspace成功上线运营。此后,OpenStack项目于2010年正式发布。Rackspace贡献了Swift,而NASA贡献了Nova,二者成为了OpenStack最早的两个项目。其后,若干Swift开发团队的核心成员独立创业,成立了SwiftStack公司,依然活跃在相关社区。
由此可见,Swift正是一个典型的起源于公司内部的、作为正式产品开发的开源项目。从这一点而言,Swift和“学院范儿”的Ceph可谓截然不同。也正是因为这个原因,Swift获得了一个得天独厚的优势:不缺启动用户,一开始就有生产环境下的大规模部署应用案例。事实上,相对成熟、web场景下应用案例多,是Swift社区目前依然反复强调的一个优势。
从技术上讲,Swift的特点主要体现在设计目标明确,就是要做一个纯粹的对象存储系统,因此不会考虑Ceph所强调的统一存储特性。同时,为了便于和其他项目、应用集成,Swift选择了Python语言进行开发。
与之相比,Ceph同时考虑了对象存储、块存储和文件系统存储能力,且目前在OpenStack中应用最多的场景事实上是块存储。同时,Ceph在选择开发语言时,很可能主要考虑的是性能因素,因而选择了C++语言。而能够被用于块存储场景这一点,也部分印证了其性能确实比较优秀。
由此可见,Ceph和Swift的区别,本质上是由其产生背景和应用目标所导致的。对这二者进行对比,并进行技术上的评判,并不非常公平。
事实上,作为开源分布式存储系统中的两个优秀代表,Ceph和Swift的设计和特性之中,也有着不少的相通之处:
首先,二者都强调良好的可扩展性,因此都采用了无中心点结构。只不过Swift的架构中有元数据服务器,只是通过多节点扩展的方式尽可能解决了其可靠性和性能顾虑。
第二,二者都能提供可配置的高可靠性。在两者的集群中,数据的备份数都可以选择,在常见生产环境中,也都使用三备份的方式。
第三,二者都强调自动化的集群管理。Swift同样引入了自动化的集群维护能力。
由此可见,简单地强调这两者之中的某一个更为优秀,是不合理的,也是没有实际意义的。
当然,在实际使用中,毕竟还是需要进行方案选择。结合[3]文中的观点,笔者认为,合适的选择或许如下:
*如果需要一个纯粹的对象存储系统,则选择Swift;
*如果需要一个纯粹的块存储系统,则只能选择Ceph;
*如果是一个小规模的、希望控制系统复杂度的OpenStack部署方案,则选择Ceph;
*如果是一个规模较大的系统,块存储和对象存储分别有较大的业务需求,则可以考虑将二者分离,分别采用Ceph和Swift。
到本篇为止,这一系列文章对于Ceph技术内容的介绍已经基本完成。后面一篇文章,将主要是笔者学习Ceph过程中的一些思考,供有兴趣的读者一同品评。
Ceph在OpenStack中的地位的更多相关文章
- “CEPH浅析”系列之六——CEPH与OPENSTACK
在 <"Ceph浅析"系列之二--Ceph概况>中即已提到,关注Ceph的原因之一,就是OpenStack社区对于Ceph的重视.因此,本文将对Ceph在OpenSta ...
- Ceph与OpenStack的Glance相结合
http://docs.ceph.com/docs/master/rbd/rbd-openstack/?highlight=nova#kilo 在Ceoh的admin-node上进行如下操作: 1. ...
- Ceph与OpenStack整合(仅为云主机提供云盘功能)
1. Ceph与OpenStack整合(仅为云主机提供云盘功能) 创建: linhaifeng,最新修改: 大约1分钟以前 ceph ceph osd pool create volumes 128 ...
- ceph对接openstack环境
环境准备: 保证openstack节点的hosts文件里有ceph集群的各个主机名,也要保证ceph集群节点有openstack节点的各个主机名 一.使用rbd方式提供存储如下数据: (1)image ...
- ceph对接openstack环境(4)
ceph对接openstack环境 环境准备: 保证openstack节点的hosts文件里有ceph集群的各个主机名,也要保证ceph集群节点有openstack节点的各个主机名 一.使用rbd方式 ...
- ceph对接openstack
一.使用rbd方式提供存储如下数据: (1)image(glance):保存glanc中的image: (2)volume(cinder)存储:保存cinder的volume:保存创建虚拟机时选择创建 ...
- The Dos and Don'ts for Ceph for OpenStack
Ceph和OpenStack是一个非常有用和非常受欢迎的组合. 不过,部署Ceph / OpenStack经常会有一些容易避免的缺点 - 我们将帮助你解决它们 使用 show_image_direct ...
- OpenStack中Keystone的基本概念理解
原文http://www.kankanews.com/ICkengine/archives/10788.shtml Keystone简介 Keystone(OpenStack Identity Ser ...
- openstack中eventlet使用
openstack中使用eventlet的协程来实现并发. 第一种,使用eventlet.GreenPool来管理绿色线程 如l3-agent在开启了8个绿色线程来处理router消息 def _pr ...
随机推荐
- jquery.treetable.js
html: <table class="table table-hover table-responsive main-list" id="columntabl ...
- Postfix邮件黑名单和白名单
本文主要介绍如何用Postfix添加域名黑名单和白名单,用以处理垃圾邮件. 1.修改postfix主配置文件,增加限制语句 vim /etc/postfix/main.cf # 文末添加一行,限制往本 ...
- Linux 查看版本號
前言 剛剛升級了Fedora27,想要一查究竟.無奈竟不知如何查看linux版本,依稀記得uname好像可以,輸入之後就尷尬了. $ uname Linux 查看網上各種教程,看到一個不錯的博文,爲[ ...
- 2D game engine essentials [to be continued...]
All 2D Game Engines/Frameworks are trying to solve the same problem(s). Languages don't matter- they ...
- [转载]Unicode中对中文字符的编码
以前写过一篇贴子是写中文在unicode中的编码范围 unicode中文范围,但写的不是很详细,今天再次研究了下unicode,并给出详细的unicode取值范围. 本次研究的unicode对象是un ...
- Android HOOK工具Cydia Substrate使用详解
目录(?)[+] Substrate几个重要API介绍 MShookClassLoad MShookMethod 使用方法 短信监控实例 Cydia Substrate是一个代码修改平台.它可以修 ...
- erl_0014 《硝烟中的erlang》 读书笔记001 “绪论”
1.大家听说Erlang,往往是因为其对高并发的良好支持.其实,Erlang的核心特征是容错,从某种程度上讲,并发只是容错这个约束下的一个副产品.容错是Erlang语言的DNA,也是和其他所有编程语言 ...
- request接收表单提交数据及其中文参数乱码问题
一.request接收表单提交数据: getParameter(String)方法(常用) getParameterValues(String name)方法(常用) getParameterMap( ...
- Codeforces 1030D 【构造】
LINK 题目大意:给你n,m,k,让你在一个n*m的点阵里构造出一个面积为\(\frac{n*m}{k}\)的三角形 思路 首先要有一个结论是整点三角形的面积分母最多为2,然后就可以判断不存在的情况 ...
- MAC OS环境下搭建基于Python语言的Selenium2自动化测试环境
#1安装Python Mac OS上自带python2.7,在此介绍安装python3.x版本 去官网下载Python for MAC版本 https://www.python.org 安装文件为pk ...