文档章节

“Ceph浅析”系列之七——关于Ceph的若干想法(转载)

shadowalker911
 shadowalker911
发布于 2015/01/23 18:00
字数 3233
阅读 49
收藏 1
点赞 0
评论 0

.1    关于Ceph的性能

        目前为止,本系列的文章中没有涉及到Ceph性能的详细讨论,也没有给出任何的Ceph性能数据。原因很简单:笔者本人没有机会进行详尽的Ceph性能分析研究,也没有见到比较全面的相关数据。因此,为了避免以片面的数据误导读者,便没有提供任何信息。

        以笔者个人的经验而言,探讨一个系统领域的开源项目的性能,事实上并不容易。其原因在于,影响一个实际部署中系统的性能好坏的因素太多、太复杂。硬件配置、软件版本、参数调整、应用负载及场景设置,各个方面的因素变化都会导致性能测试结果的不同。因此,很难一言蔽之,认为某个项目的性能是好还是不好。

        举一个不直接相关的例子。在hypervisor领域,大家很可能会倾向于认为ESXi的性能优于KVM,但事实上,在SPECvirt性能测试结果排行榜上,基于KVM的系统常有高居第一的时候。究其原因,除了硬件性能的因素之外,KVM有大量的配置参数可以调整,而调得好与不好会极其明显地影响系统性能。

        又比如常用的开源大数据工具软件Hadoop。同一个Hadoop集群用同样的应用程序处理同样的数据集,在配置参数不同的情况下,其最终运行时间长度可能相差数倍。

        正是因为参数配置、硬件规格、软件版本、应用场景等因素都可能对性能产生明显影响,因此,对于Ceph这样一个部署方案多变、配置参数不少的系统,如何评测其系统性能,是需要审慎思考的。

        反过来讲,这倒也是开源软件引出的一个生财之道。虽然软件本身是开源的,大家都可以免费下载免费安装,但能不能用好就要依靠精深的专业技能了。类似的公司国外屡见不鲜,而国内也已经开始出现。

 

7.2    Ceph的架构与硬件平台之间的适应性

        Ceph自2006年正式发布以来,其基础架构(RADOS)部分并没有发生大的变化。本质上,这还是因为RADOS的设计确实优秀,有其前瞻性,因此没有必要大动筋骨。但这并不意味着没有必要对其进行适当反思。

        如前所述,2006年的时候,商用处理器的主流仍为单核,单条内存和单块硬盘的容量也都远小于现在的主流水平。但是,OSD的基本硬件资源要求并没有发生变化。这也就意味着,在目前的典型部署方案中,一台物理服务器上很可能有数十个处理器硬件线程、数十块硬盘,于是也就承载着数十个OSD同时运行。然而,RADOS结构的基本假定是,集群是由大量的、相互独立运行的OSD组成的,则目前的典型硬件方案有可能影响这种假定的有效性。例如,如果一台服务器出现故障,必须关机进行维修,则意味着数十个OSD一起突然下线。由此受到影响的PG则可能多达成千上万个。这种突发性的事件对系统的自动化维护机制可能会造成一定的压力。

        由此,笔者想到,Sage设计Ceph时面对的硬件平台,事实上应该是处理能力不需要过强、硬件规格比较简单的系统。而这种系统可能与目前的ARM架构或者 Intel Atom架构的micro-server更为相似。或许,基于micro-server部署Ceph集群,会是一种值得尝试的方向。

        此外,华为和希捷合作推出了IP硬盘产品。虽然还缺乏更进一步的了解,但直观上推测,这种全新的、轻量级、智能化的存储设备,可能也是一种非常近似于Sage当年设想中的OSD的硬件平台。

 

7.3    Ceph与软件定义存储

        “软件定义”这四个字可谓是目前最炙手可热、也最让人糊涂的概念之一。软件定义计算、软件定义网络、软件定义存储、软件定义数据中心,以上几个可能是目前最为常见的相关名词了。

        到底什么是“软件定义”,现在还没有形成完全一致的见解。并且,参考技术发展史上的若干先例,以后也未必能形成所谓的一致见解。在这种情况下,以一个具体实例入手,可能更容易获得直观认识,并由此建立起更系统的观点。

        笔者认为,对于任何一个系统而言,“软件定义”的概念,更多体现在这里:这个系统的哪些特性,比如功能或者性能,以前是固定的,或者只能进行有限的配置,而现在则可以进行方便灵活地定义和改变。

        例如,对于一台物理服务器,一旦其硬件配置,如CPU、内存、硬盘等连接好,则这台服务器的规格和性能就确定了,能够通过BIOS配置等方式调整的性能和功能范围是很有限的。但是,对于一台虚拟机而言,即便在虚拟机已经创建并安装了操作系统之后,其CPU核数及处理能力、逻辑物理内存大小及真实物理内存大小、硬盘数量容量及读写性能、网卡型号数量及网络带宽等等特性都是可以方便灵活地通过软件方式进行控制和改变的(其中部分配置操作需要对虚拟机进行重启才能生效),且这种配置可以由应用层软件进行控制。两相对比,则虚拟机的这种可定义性就是软件定义计算的一个直观实例。

        下面再具体到存储领域加以讨论。一般而言,一个存储系统的主要特性大致包括:存储类型(文件系统?块存储?对象存储?),存储容量,存储性能(访问带宽、访问延迟等等),存储策略(备份策略、访问安全性策略、对数据的高级处理功能等等)。参考上面所举出的软件定义计算的例子,可以想见,对于一个软件定义存储系统而言,这些特性(至少是其中的大多数)都应该是可以通过软件方式加以定义的。

        具体到Ceph而言,其最为符合软件定义存储的特性无疑是,Ceph的存储类型是可以通过软件方式定义的。同样的一个RADOS集群,可以通过安装不同的上层软件和对应的客户端程序,实现块存储、对象存储和文件系统存储功能,这一特性对于传统的存储系统难以想象。除此之外,Ceph的存储策略,如备份策略、后台数据处理功能等,也都可以方便地通过软件方式加以定义或扩展。因此,从这个角度出发,Ceph也可以被认为是软件定义存储的真实案例之一。

 

7.4  Ceph与数据中心计算

        传统意义上,计算系统的设计是以计算为中心的。数据从存储、网络或其他设备流入处理器,经过处理后再流向存储、网络或其他设备。然而,随着待处理的数据量以爆炸式的速度增大,也随着计算能力提高的速度超过存储和传输能力,这一处理方式可能变得不再经济,因为针对大量的数据进行频繁硬盘存取和网络传输的代价都是非常可观的。

        数据中心计算这一概念,也就是在这种背景下被提出的。其核心思想,也就是让计算在数据所在的地方发生。数据在哪里,就把计算任务发送到哪里去执行,而不要再为了使用“强大”的计算能力把数据搬来搬去,传来传去。事实上,Hadoop的出现,就是这种数据中心计算思想的现实反映。

        数据中心计算的另一实例,是目前OpenStack社区中出现的一种叫做ZeroVM的轻量级虚拟化技术[1]。ZeroVM的思想就是让计算发生在数据所在的地方。基于其官方提供的信息,目前已经实现了ZeroVM和Swift的整合,可以让处理任务直接运行在Swift的服务器端。

        事实上,Ceph也提供了同样的能力。Ceph的整个设计,都是基于Sage的一个基本思想:充分发挥存储器件自身的计算能力。这种思想不仅使得OSD可以相互配合完成数据访问操作和集群维护功能,更允许OSD将富余的计算能力提供出来,用于运行数据处理任务。

        目前,RADOS提供的机制允许在OSD上直接运行可动态加载的数据处理程序插件,以便在服务器端进行数据处理工作,例如,对图片存储系统中的图片进行自动加水印、尺寸和格式自动转换等后台操作。事实上,基于这种能力,也完全可以实现类似于Hadoop的大数据处理系统。

        对于大数据而言,存储和处理是其两个关键的技术领域。由于Ceph自身就是优秀的存储系统,又具备直接承载计算任务的能力,因此,面向大数据的数据中心计算很可能是Ceph的潜在应用方向之一。

 

7.5  Ceph在实际应用中可能存在的问题

        到目前位置,本系列文章基本上都是在介绍Ceph的各种优势与特长。但是,任何系统都不可能是十全十美的,本着鸡蛋里挑骨头、吹毛求疵的精神,还是要在这里吐槽几句。

        从非技术角度出发,Ceph的最大问题是火起来的时间不够长,因此可以参考的文档还不是很多,中文的尤其如此。但这个没有办法,只能众人拾柴火焰高,一点一滴作贡献。

        此外,对Ceph诟病最多的可能还是不够成熟云云。但一个开源项目总是用得人多了才会成熟的,而Ceph目前正在这个过程中,所以需要的还是时间和参与。

        另外,以笔者的感觉,Ceph的高度自动化可能也是个双刃剑。好处固然是很多的,但弊端就是系统的运行状态不完全在管理员控制之下,系统中会有若干自动触发而不是管理员触发的操作。这个特点可能会给系统状态的监测和控制带来一些复杂度,需要管理员去适应。

 

7.6  基于Ceph的产业需求和可能的商业机会

        特此声明:这一节的内容纯属crazy idea,不构成投资建议:-)

        首先,Ceph的安装部署和性能优化必然成为突出的需求。因此,将Ceph和商用服务器整合成易于部署、性能出色的各类存储解决方案,应该是可以考虑的方向之一。

        同时,由于Ceph自身对于OSD硬件平台的特殊假设,以及由此导致的优化空间,则在成本合理的前提下,开发更加适用于Ceph OSD的定制硬件平台(类似于micro-server或者IP硬盘等),并突出存储的高密度、低功耗、高可维护性等特点,也可能成为一种选择。

        此外,针对Ceph集群的专用集群监控、性能分析等工具软件也可能会有一定的需求。

        最后,基于Ceph的后台数据处理软件工具包也值得考虑。

 

说明:转载请注明出处。谢谢。

© 著作权归作者所有

共有 人打赏支持
shadowalker911
粉丝 6
博文 28
码字总数 3041
作品 0
徐汇
“Ceph浅析”系列之七——关于Ceph的若干想法

本篇文章的内容,主要是笔者在调研分析Ceph过程中产生的一些思考。因为其中的内容比较自由发散,且大多是笔者的个人见解,故此另启一文进行讨论。 7.1 关于Ceph的性能 目前为止,本系列的文章...

红薯 ⋅ 2014/04/01 ⋅ 2

“Ceph浅析”系列之五——Ceph的工作原理及流程

本 文将对Ceph的工作原理和若干关键工作流程进行扼要介绍。如前所述,由于Ceph的功能实现本质上依托于RADOS,因而,此处的介绍事实上也是针对 RADOS进行。对于上层的部分,特别是RADOS GW和R...

红薯 ⋅ 2014/04/01 ⋅ 2

“CEPH浅析”系列之四——CEPH的结构

本文将从逻辑结构的角度对Ceph进行分析。 4.1 Ceph系统的层次结构 Ceph存储系统的逻辑层次结构如下图所示[1]。 自下向上,可以将Ceph系统分为四个层次: (1)基础存储系统RADOS(Reliable,...

Yason_Luo ⋅ 2014/04/02 ⋅ 9

“CEPH浅析”系列之三——CEPH的设计思想

分析开源项目,时常遇到的一个问题就是资料不足。有时间写代码的大牛们通常是都是没有时间或者根本不屑于写文档的。而不多的文档通常又是使用手册之类的东西。即便偶尔有设计文档通常也是语焉...

Yason_Luo ⋅ 2014/04/02 ⋅ 0

Ceph浅析(中):结构、工作原理及流程

Ceph的结构 Ceph系统的层次结构 Ceph存储系统的逻辑层次结构如下图所示: 自下向上,可以将Ceph系统分为四个层次: (1)基础存储系统RADOS(Reliable, Autonomic, Distributed Object Store...

wangdy ⋅ 2016/07/10 ⋅ 0

“Ceph浅析”系列之四——Ceph的结构

本文将从逻辑结构的角度对Ceph进行分析。 4.1 Ceph系统的层次结构 Ceph存储系统的逻辑层次结构如下图所示[1]。 自下向上,可以将Ceph系统分为四个层次: (1)基础存储系统RADOS(Reliable,...

红薯 ⋅ 2014/04/01 ⋅ 0

Ceph 浅析(上):概况与设计思想

摘要:其命名和UCSC(Ceph 的诞生地)的吉祥物有关,这个吉祥物是 “Sammy”,一个香蕉色的蛞蝓,就是头足类中无壳的软体动物。这些有多触角的头足类动物,是对一个分布式文件系统高度并行的...

红薯 ⋅ 2014/04/01 ⋅ 3

架构设计:系统存储(27)——分布式文件系统Ceph(安装)

1. 概述 从本篇文章开始介绍一款现在非常火的分布式文件系统Ceph,包括这款文件系统的安装、基本使用场景、常用管理命令和重要工作原理。特别是讨论了PaxOS算法的基本理后,就更容易理解Cep...

yinwenjie ⋅ 2017/04/05 ⋅ 0

从传统运维到云运维演进历程之软件定义存储(六)完结

回到最初的Ceph运维工程师的问题,本系列讲述的是传统运维向新一代云运维转型之软件定义存储部分的转型,运维是企业业务系统从规划、设计、实施、交付到运维的最后一个步骤,也是重要的步骤。...

Devin ⋅ 2016/12/20 ⋅ 0

架构设计:系统存储(28)——分布式文件系统Ceph(挂载)

(接上文《架构设计:系统存储(27)——分布式文件系统Ceph(安装)》) 3. 连接到Ceph系统 3-1. 连接客户端 完成Ceph文件系统的创建过程后,就可以让客户端连接过去。Ceph支持两种客户端挂...

yinwenjie ⋅ 2017/04/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 45分钟前 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 55分钟前 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

table eg

user_id user_name full_name 1 zhangsan 张三 2 lisi 李四 `` ™ [========] 2018-06-18 09:42:06 星期一½ gdsgagagagdsgasgagadsgdasgagsa...

qwfys ⋅ 今天 ⋅ 0

一个有趣的Java问题

先来看看源码: public class TestDemo { public static void main(String[] args) { Integer a = 10; Integer b = 20; swap(a, b); System.out......

linxyz ⋅ 今天 ⋅ 0

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 9

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部