编辑推荐

Ceph创始人SageWeil高度评价并亲自作序,张万春、陆平、郑纬民、何宝宏等8位领导和技术专家联袂推荐

中兴通讯Clove团队核心成员撰写,Clove团队在Ceph项目的Commit数量,中国第*,世界第二,仅次于创始团队RedHat

从设计者和使用者角度系统剖析了Ceph的整体架构、核心设计理念、组件的功能与实现原理

内容简介

Ceph设计原理与实现》是中兴Clove团队多年研究和实践经验的总结,Ceph创始人SageWeil的高度评价并亲自作序。

Clove团队是Ceph项目的核心贡献者,从贡献的Commit数上看,连续多个版本贡献在中国排名第*,世界排名第二,对Ceph有非常深入的研究,在中兴通讯内部进行了大量的生产实践。

Ceph设计原理与实现》同时从设计者和使用者的角度系统剖析了Ceph的整体架构、核心设计理念,以及各个组件的功能与原理;同时,结合大量在生产环境中积累的真实案例,展示了大量实战技巧。每一章都从基本原理切入,采用循序渐进的方式自然过渡至Ceph,并结合Ceph的核心设计理念指出需要进行哪些必要的改进和裁剪,使得读者不但能够知其然,而且能够知其所以然,真正做到了“源于Ceph,高于Ceph”。此外,写作时尽量避免涉及到过多、非必要的专业术语,做到深入浅出并且每章相对独立,以最大程度的减少阅读障碍。

Ceph设计原理与实现》核心内容:

lCeph核心算法CRUSH设计算法分析及拓展

lCeph新型高性能存储引擎BlueStore特性及关键流程分析

lCeph高级特性ECOverwrites

lCephPG状态机及数据修复、平衡机制

lCephRBD、RGW、Ceph-FS三大主要组件的实现与拓展

lCeph生产环境实战技巧

作者简介

谢型果

中兴通讯资深软件工程师,5年存储开发经验,精通本地文件系统ZFS和分布式存储系统Ceph。2014年开始研究Ceph,2015年加入Ceph开源社区,目前是Ceph开源社区的CephMember。

任焕文

中兴通讯高级软件工程师,有10余年研发经验,曾就职于浪潮和华为,擅长数据库、网络和存储相关技术。CephMember成员,现主要负责Ceph文件系统、NAS存储和分布式一致性方面的研发工作。

严军

中兴通讯高级软件工程师,从事存储系统开发工作多年,熟悉DPDK开发框架;2015年加入Ceph开源项目,对分布式存储系统QoS有深入研究,目前是Ceph开源社区的积极贡献者。

罗润兵

华中科技大学微电子专业研究生,中兴通讯高级软件工程师,精通TCP/IP协议栈和分布式存储系统,2014年开始接触并参与Ceph开源项目,目前是Ceph开源社区的积极贡献者。

韦巧苗

中兴通讯高级软件工程师,擅长C/C++编程,有5年存储系统研发经验,对CephRGW模块有深入研究,同时在Cache技术及性能优化上也有丰富的经验。

骆科学

中兴通讯高级软件工程师,有5年存储产品相关开发经验,擅长虚拟化及存储相关技术,2016年于Ceph中国社区年终盛典中被评为“2016年度社区*佳贡献者”

精彩书评

Ceph以其优异的可扩展性、可靠性、高性能、灵活性、安全性等特征,成为*活跃的开源存储明星项目,是OpenStack的默认存储后端。大家可以方便地获得Ceph的源代码,但要透彻地理解它、用好它并不容易。《Ceph设计原理与实现》系统、详实地介绍了Ceph的设计与实现,有理论,有实践,相信能对广大Ceph爱好者,包括开发者和运维人员都有很大的帮助!
郑纬民 清华大学计算机系教授、博士生导师


我非常欣喜地看到,中兴的Clove团队的六位开发者,包括多位CoreMember和Contributer,愿意将自己在Ceph社区的工作和积累,以及对Ceph的理解和应用花费大量的时间整理成书,为产业界不同领域的从业者提供参考。相信会是一本好书。
何宝宏 中国信息通信研究院技术与标准研究所副所长、互联网研究领域主席


伴随着全球数字化革命大潮而来的是新技术的不断涌现和商业模式的推陈出新。《Ceph设计原理与实现》对开源社区的明星项目Ceph进行了完美演绎,有助于读者全面了解开源分布式云存储领域的设计原理和应用。
孙振鹏 *佳国际实践联盟主席、EXIN国际信息科学考试学会亚太区总经理


作者所在团队是国内*早从事Ceph系统研发的机构之一,为Ceph系统的开发、完善和推广做出重要贡献。作者依托自身的理论基础和实践经验,介绍了Ceph系统的工作原理、核心技术和实操技巧,对于云存储和数据中心里那些力图对数据资源进行高效可靠存储的从业人员来说,《Ceph设计原理与实现》是一本很好的指导手册!
张广艳 清华大学计算机科学与技术系副教授、博士生导师、计算机学会信息存储专委会委员

2015年开始与几位作者开启了一段美妙的Ceph旅程,期间我们有互为知己般的信任和支持,过程中更有意思的是不断战胜困难和挑战所赢得的快乐和满足。作为中兴通讯开源先锋的这支Ceph团队极具战斗力,他们一直用行动在诠释他们倡导的“保持奔跑、拥抱开源、拒绝平庸”理念。这本著作倾注了这支王*团队的巨大心血并且有丰富实践基础,非常精彩,值得一读。
谭芳 中兴通讯长沙研究所在软件定义存储的时代,Ceph对存储的影响如同Linux对操作系统的影响。Ceph的发展壮大,离不开各种业务场景的需求拉动,也离不开繁荣活跃的社区推动。《Ceph设计原理与实现》的6位创作者,他们既是中兴通讯的一支优秀研发团队,也是Ceph社区中的一支优秀的团队。他们深入专研,拨开迷雾,将自己对Ceph设计原理与实现的*新理解与实践,深入系统地分享出来。
闫林 中兴通讯IT技术学院副院长

目录

推荐序一

推荐序二

前 言

第1章 计算为王——基于可扩展哈希的受控副本分布策略CRUSH1

1.1 straw及straw2算法简介2

1.2 CRUSH算法详解6

1.2.1 集群的层级化描述——ClusterMap7

1.2.2 数据分布策略——PlacementRule9

1.3 调制CRUSH14

1.3.1 编辑CRUSHMap15

1.3.2 定制CRUSH规则19

1.3.3 数据重平衡21

1.4 总结与展望23

第2章 性能之巅——新型对象存储引擎BlueStore25

2.1 设计理念与指导原则26

2.2 磁盘数据结构30

2.2.1 PG30

2.2.2 对象38

2.3 缓存管理46

2.3.1 常见的缓存淘汰算法46

2.3.2 BlueStore中的缓存管理49

2.4 磁盘空间管理53

2.4.1 常见磁盘空间管理模式53

2.4.2 BitmapFreelistManager56

2.4.3 BitmapAllocator57

2.5 BlueFS59

2.5.1 RocksDB与BlueFS59

2.5.2 磁盘数据结构62

2.5.3 块设备65

2.6 实现原理66

2.6.1 mkfs66

2.6.2 mount67

2.6.3 read69

2.6.4 write72

2.7 使用指南77

2.7.1 部署BlueStore77

2.7.2 配置参数80

2.8 总结与展望83

第3章 时空博弈——纠删码原理与overwrites支持84

3.1 RAID技术概述85

3.2 RS-RAID和Jerasure90

3.2.1 计算校验和92

3.2.2 数据恢复92

3.2.3 算术运算93

3.2.4 缺陷与改进99

3.2.5 Jerasure100

3.3 纠删码在Ceph中的应用102

3.3.1 术语104

3.3.2 概述105

3.3.3 新写106

3.3.4 读108

3.3.5 覆盖写110

3.3.6 日志112

3.3.7 Scrub113

3.4 总结与展望113

第4章 迁移之美 ——PG读写流程与状态迁移详解116

4.1 PG概述117

4.2 读写流程120

4.2.1 消息接收与分发127

4.2.2 do_request129

4.2.3 do_op129

4.2.4 execute_ctx136

4.3 状态迁移146

4.3.1 状态机概述147

4.3.2 创建PG150

4.3.3 Peering154

4.3.4 Recovery169

4.3.5 Backfill172

4.4 总结与展望173

第5章 控制先行——存储服务质量QoS175

5.1 研究现状176

5.2 dmClock算法原理177

5.2.1 mClock177

5.2.2 dmClock179

5.3 QoS的设计与实现180

5.3.1 优先级队列(prio)181

5.3.2 权重的优先级队列(wpq)183

5.3.3 dmClock队列184

5.3.4 Client的设计191

5.4 总结与展望192

第6章 无心插柳——分布式块存储RBD195

6.1 RBD架构195

6.2 存储组织196

6.2.1 元数据197

6.2.2 数据209

6.3 功能特性211

6.3.1 快照211

6.3.2 克隆216

6.4 总结与展望219

第7章 应云而生——对象存储网关RGW220

7.1 总体架构221

7.2 数据组织和存储222

7.2.1 用户225

7.2.2 存储桶228

7.2.3 对象229

7.2.4 数据存储位置231

7.3 功能实现232

7.3.1 功能特性233

7.3.2 I/O路径235

7.3.3 存储桶创建240

7.3.4 对象上传242

7.3.5 对象下载244

7.4 总结与展望244

第8章 经典重现——分布式文件系统CephFS246

8.1 文件系统基础知识247

8.1.1 文件系统247

8.1.2 文件系统中的元数据249

8.1.3 硬链接和软链接250

8.1.4 日志251

8.2 分布式文件系统CephFS252

8.2.1 CephFS设计框架和背景252

8.2.2 MDS的作用254

8.3 MDS设计原理与实现255

8.3.1 MDS元数据存储255

8.3.2 MDS负载均衡实现260

8.3.3 MDS故障恢复268

8.4 总结与展望271

第9章 运用之妙——应用案例实战272

9.1 实战案例一:Ceph集群定时Scrub272

9.2 实战案例二:Ceph对接OpenStack274

9.3 实战案例三:Ceph数据重建配置策略288

9.4 实战案例四:Ceph集群Full紧急处理290

9.5 实战案例五:Ceph快照在增量备份的应用292

9.6 实战案例六:Ceph集群异常watcher处理297

9.7 总结与展望298

精彩书摘

  《Ceph设计原理与实现》:
  (3)是否仍然采用同步读
  多副本实现中,因为副本间保存的内容相同,并且由Primary进行读写操作的数据一致性保证,所以所有读操作都由Primary直接在本地完成,这个过程是同步的。然而纠删码则不同,因为此时同一个对象的数据以分片的形式分布在多个PG实例之间,而这些PG实例一般由位于不同容灾域之下的OSD承载,这导致前端的单个读操作经常会被转化为节点之间的多个读操作,所以出于性能考虑,纠删码无法继续沿用同步读的方式。采用异步读虽然提升了读操作之间的并发度,有助于提升整体读带宽,但是因为涉及跨节点的读以及报文组装,所以原理上纠删码的读操作响应时延要比多副本高(同时,与多副本相比,因为纠删码的写过程需要耗费大量的时间进行编码,所以一般而言纠删码的写操作响应时延也比多副本高),这使得纠删码不适合时延敏感类的应用。
  (4)是否自动进行数据修复
  纠删码的实现原理表明:当损失的数据块个数小于等于m时,总是可以通过解码还原得到所损失的全部数据块。因此,如果读的过程中检测到条带中的某些块(要求个数小于等于m)产生了数据错误,理论上也可以在读的过程中针对这些坏掉的块同步进行修复,这个过程称为自动修复(auto—repair)。实现上能否执行自动修复主要取决于是否存在数据自校验机制,能否实时捕获静默数据错误,这是因为诸如链路不稳定、能耗变迁、负荷积压等因素都有可能导致磁盘短暂性的返回I/O错误,而只有产生静默数据错误时磁盘仍然工作在正常状态(按照定义,静默数据错误指磁盘自身无法感知的数据错误,因此静默数据产生时,磁盘仍然有可能处于“正常”状态),这是自动修复能够实施的基本条件。
  ……

前言/序言

Foreword推荐序一

张万春 中兴通讯股份有限公司副总裁

阅读了谢型果、任焕文、严军、罗润兵、韦巧苗、骆科学6位同事创作的《Ceph设计原理与实现》,感到非常高兴,并由衷祝贺创作团队的杰出贡献!就这《Ceph设计原理与实现》,我想谈三点看法:

一、中兴通讯重视技术的发展

云计算、大数据、人工智能三位一体,它们重新定义了IT,重新定义了资产,重新定义了工具和效率,这些技术力量越来越快地驱动和改变了整个产业,成为支撑行业变革、选择技术伙伴、拓展创新业务和提供高效服务的技术平台。中兴通讯作为全球通信领域的重要厂商,非常重视技术的发展。在云计算领域,多年来致力于利用先进技术,研发更高速度、更大容量、更高安全、更具弹性、更低成本的云计算基础设施。其中Ceph就是开源分布式云储存领域中最具活力、最先进的基础技术社区之一,《Ceph设计原理与实现》记录了我们在这个领域最新的探索实践。

二、中兴通讯重视社区的力量

中兴通讯非常认同和重视社区的力量,致力于建立开放合作的生态环境。我们参加了全球多个开源的社区项目,成为其中最关键的伙伴,包括我们和Openstack、Ceph社区的合作。中兴通讯在Ceph领域技术能力的发展,离不开与社区的合作。中兴通讯的Ceph团队是一个优秀的自组织、自管理、自激励的开放合作的敏捷组织,他们内通外联与社区合作,共同推动Ceph技术的发展演进。

三、中兴通讯乐于分享最佳实践

中兴通讯作为最负社会责任的高科技企业,非常愿意将我们的知识、经验和服务分享到社区、回馈到社会。《Ceph设计原理与实现》的6位作者身处Ceph技术研发的最前沿,他们精心创作的《Ceph设计原理与实现》有着三个鲜明的特点:一是最系统,二是最前沿,三是最有深度。我们很乐意将这本优秀的著作分享给大家!

最后再次感谢创作团队的重大贡献,并欢迎各位读者开启精彩的《Ceph设计原理与实现》阅读之旅!

Foreword推荐序二

陆平 中兴通讯股份有限公司副总裁

近几年,随着IT信息技术的飞速发展,云计算、虚拟化及池化技术得到了广泛的应用。作为云计算最受追捧的开源项目,OpenStack让越来越多的人感受到了虚拟化的魅力,并在金融、政务、电力和制造业广泛被使用。在最新的OpenStack2017用户调研中,CephRBD以绝对优势(65%)的环境占有率,证明了大家对Ceph充满信心,而作为OpenStack默认存储后端的Ceph,也不负众望,近两年发展得如火如荼,不仅吸引了越来越多的大厂商加入到Ceph生态圈,而且越来越多的行业也采用了Ceph作为其优选的存储解决方案。在大数据盛行的时代,数据量井喷式增长,动辄上PB、EB甚至是ZB的存储需求比比皆是,而且对性能、可靠性的要求也越来越高,Ceph以其优异的性能、可靠性及灵活的扩展性能受到各行各业的青睐,想想也是理所应当的事情。

Ceph作为一个十多年前就已经诞生的开源项目,能够发展到今天,它的生命力是由每一个社区贡献者释放和延续的,我们很欣喜地发现,这种由参与的力量所带来的生命力,随着Ceph开源社区的不断发展及贡献者的日益增多,而变得越来越旺盛。让我们更兴奋的是在广大贡献者的不断努力下,Ceph依然在飞速发展,中兴通讯作为Ceph开源社区中持续活跃的贡献者,无疑给Ceph开源社区注入了更多的激情和活力。

Ceph设计原理与实现》是中兴通讯在Ceph开源社区中长期积累的创作成果,不仅从设计原理及思想上对Ceph进行了剖析,而且结合实践深入浅出地将Ceph的独特魅力展现给大家,对于想进阶参与Ceph开源社区的人来说,绝对是一本不可多得的好书。

Ceph是“存储的未来”,相信在大家的共同努力下,这个“未来”不会远了。

前  言Preface

诞生于2006年的Ceph,是开源社区的明星项目,也是私有云事实上的标准——OpenStack的默认存储后端。作为当前最火爆的分布式存储系统,Ceph拥有诸多引人注目的特性。

首先,Ceph是一种软件定义存储,可以运行在几乎所有主流的Linux发行版(典型如CentOS和Ubuntu)和其他类UNIX操作系统(典型如FreeBSD)上。2016年,社区进一步将Ceph从x86架构移植到ARM架构中,令Ceph应用场景进一步扩展至移动、低功耗等前沿领域,使得Ceph未来充满无限可能。

其次,Ceph的分布式基因使其可以轻易管理成百上千个节点、PB级及以上存储容量的大规模集群,同时基于计算的扁平寻址设计使得Ceph客户端可以直接和服务端的任意节点通信,从而避免因为存在访问热点而导致性能瓶颈。实际上,在没有网络传输限制的前提下,Ceph可以呈现我们所梦寐以求的、性能与集群规模成线性扩展的优秀特性。

最后,Ceph是一个统一存储系统,既支持传统的块、文件存储协议,例如SAN和NAS;也支持新兴的对象存储协议,例如S3和Swift,这使得Ceph理论上可以满足时下一切主流的存储应用需求。此外,良好的架构设计使得Ceph可以轻易拓展至需要存储的任何领域。

上述这一切使得理论上只要存在存储需求,Ceph就能找到用武之地。因此,诚如Ceph社区所言:Ceph是存储的未来!

为什么写这《Ceph设计原理与实现

在Ceph的设计理念中,高可扩展性、高可靠性和高性能都是其核心考虑要素。此外,为了能够最大程度地拓展Ceph的“触角”(Ceph本意就是章鱼),Ceph当中所有组件都被设计成松耦合和高度可定制的。基于上述考虑,Ceph采用面向对象的语言——C++进行开发,并且在具体实现上大量采用了STL和Boost库中的高级特性。一方面,C++被公认为最复杂的编程语言之一;另一方面,经过10年的发展,Ceph已经成为一个代码行数超过百万的庞然大物,各种组件多如牛毛,组件之间关系错综复杂。更加令人望而生畏的是:随着Ceph应用场景日益广泛,大量新需求新特性持续涌入,Ceph正加速向前发展!社区代码每天都在发生翻天覆地的变化——一方面很多模块从无到有,另一方面很多模块从有到无,即便是一些仍然存在的模块,短短几个开发周期之后就会变得面目全非。上述这一切都成为大量渴望接触Ceph、玩转Ceph和深度参与Ceph的开发人士的梦魇,足以令他们手足无措,对Ceph望而却步。

此外,虽然Ceph诞生至今已经超过10年的时间,但是在国内兴起却是近几年的事情(感谢OpenStack),因此相关书籍异常匮乏。市面上仅有的几本,或者单纯从实践角度针对如何使用Ceph进行介绍,因为缺乏理论作为指导,加之Ceph的命令集一直处于进化之中并且越来越庞大,普通读者可能无法留下深刻印象;或者单纯从源码角度对Ceph进行分解和剖析,一方面牵涉到大量实现细节,另一方面源码日新月异,因此非资深开发者可能不易上手。再将视野转向国外——Ceph官方社区虽然早有专门的文档库对Ceph进行系统性的介绍,但是一方面文档库过于庞大并且涉及大量专业术语,另一方面作者和国内读者语言、文化背景存在巨大差异,导致直接阅读这类文档困难重重、举步维艰。

来自ZTE的Clove团队,自2014年开始接触Ceph,是国内最早从事Ceph研究和开发的团队之一。团队从传统存储领域转型,大部分成员此前都有从事SAN或者NAS开发的背景,因此转战Ceph可谓如鱼得水。自成立之日起,Clove团队就一直和Ceph社区保持着良好的互动,我们在使用Ceph、享受Ceph带给我们种种好处的同时,一方面通过反馈故障、修复故障、推送特性等方式持续回馈社区,另一方面通过参与和举办线下沙龙等方式不遗余力地宣传和推广Ceph。时至今日,团队中不少人都已经成长为国内在Ceph社区中独当一面的活跃开发者。

因为我们在多年的摸索过程中深切体会到学习资料匮乏对Ceph初学者所造成的巨大困扰;加之,普及Ceph、推广Ceph,与社区共筑良好的Ceph生态圈并最终实现社区广大开发者和用户双赢也是我们和社区的共识,我们自2016年年中开始动笔编写《Ceph设计原理与实现》。之所以选择这个时间点,一是因为我们团队已经在传统存储领域以及Ceph社区耕耘多年,自身积淀已经逐步殷实;二是Ceph这两年在国内发展如火如荼,受众日益广泛,时机逐渐成熟。书中大部分内容基于社区最新(2017年1月)发布的Kraken稳定版,侧重于BlueStore、ECoverwrites、QoS等一众新增组件和新增特性的介绍,写作时每章务必追求从基本原理切入,采用循序渐进的方式自然过渡和推广至Ceph,并结合Ceph的核心设计理念指出需要进行哪些必要的改进和裁剪,使得读者不但能够知其然,而且能够知其所以然;同时,写作时尽量避免涉及过多、非必要的专业术语,做到深入浅出;并且每章相对独立,最大程度地减少阅读障碍。此外,为了进一步加深读者印象,每个章节都穿插了不少实用案例,最后一章的素材更是全部源于我们日常积累的、从客户处收集的生产案例,极具代表性和通用性,如果读者能够在阅读、学习的同时进行实战演练,理论结合实践,相信必定能够取得更大收益。

Ceph设计原理与实现》的读者对象

Ceph设计原理与实现》适合于对Ceph有一定了解,想更进一步参与到Ceph开源项目中来,并致力于为Ceph项目添砖加瓦的开发者阅读。

此外,高级运维人员通过阅读《Ceph设计原理与实现》也能够了解和掌握Ceph的核心设计理念及高级应用技巧,从而在日常运维工作中更加得心应手。

Ceph设计原理与实现》的主要内容

Ceph整体架构如下:

Ceph整体架构

其中,RADOS是Ceph的支撑组件,除了Ceph当前的三大核心应用组件RBD、RGW和CephFS之外(它们分别提供块、对象和文件访问接口),原则上,基于RADOS及其派生的librados标准库也可以开发任意类型的其他应用组件。《Ceph设计原理与实现》侧重介绍RADOS及三大核心应用组件——RBD、RGW和CephFS,详细章节及简介如下:

第1章 计算为王

CRUSH是Ceph两大核心设计之一。CRUSH良好的设计理念使其具有计算寻址、高并发和动态数据均衡、可定制的副本策略等基本特性,进而能够非常方便地实现诸如去中心化、有效抵御物理结构变化并保证性能随集群规模呈线性扩展、高可靠等高级特性,因而非常适合应用于Ceph这类对可扩展性、性能和可靠性都具有严苛要求的大型分布式存储系统。

第2章 性能之巅

自Jewel版本开始,社区引入了一种新型的高性能对象存储引擎——BlueStore,用于取代服役已经超过10年的FileStore。BlueStore的引入毫无疑问是这两年来Ceph最引人注目的特性之一。

第3章 时空博弈

Ceph传统的三副本数据备份方式能够在取得高可靠性的前提下最小化前端请求的响应时延,因而特别适合对可靠性和性能都有一定要求的上层应用。这种目前使用最广泛的备份方式缺点在于会大量占用额外的存储空间,因而导致集群的实际空间利用率不高。与之相反,纠删码以条带为单位,通过数学变换,将采用任意k+m备份策略所消耗的额外存储空间都成功控制在1倍以内,代价是计算资源消耗变大和前端请求响应时延变长,因而适合对时延不敏感的“冷数据”(例如备份数据)应用。在Kraken版本中,社区通过解决纠删码中最复杂的覆盖写难题,使得纠删码类型的存储池第一次见到了迈向生产环境的曙光。

第4章 迁移之美

PG是Ceph最核心和最复杂的概念之一,这也使得学习和了解PG成为Ceph最富挑战性的工作之一。在PG为数众多的优秀特性中,也许最重要也最引人注目的是它可以在OSD之间(根据CRUSH的实时计算结果)自由进行迁移,这是Ceph赖以实现自动数据恢复、自动数据平衡等高级特性的基础。

第5章 控制先行

在虚拟化技术大行其道的今天,如何针对有限的资源进行集中管理并按需分配以最大化收益,一直是焦点议题之一。Ceph通过积极引入QoS功能,有望对集群的IOPS、带宽等I/O资源进行合理统筹,实现按需、定量分配,从而对外提供更加精细化的存储服务。

第6章 无心插柳

自2007年SageA.Weil正式发布Ceph以来,Ceph实际上已经存在并发展了10余年时间。Ceph在设计之初被定位为一个纯粹的分布式文件系统(CephFS),但随着虚拟化逐渐成为信息时代的主旋律和以OpenStack为代表的云计算技术闪电崛起,社区果断调整重心,开始着力发展新型分布式块存储服务组件——RBD,并使其逐渐成长为OpenStack等IaaS云计算环境中虚机、镜像、云盘等服务不可或缺的默认块设备存储后端。可以说,Ceph能够在为数众多的同类软件竞争中脱颖而出,并逐渐成长为最炙手可热的分布式统一存储系统,很大程度上得益于收获了OpenStack的青睐,而RBD取代CephFS伴随OpenStack先一步进入公众视野则是意料之外、情理之中。

第7章 应云而生

在《浪潮之巅》一书的前言中,吴军博士开宗明义地提出:“近一百多年来,总有一些公司很幸运地、有意识或无意识地站在技术革命的浪尖之上。在这十几年间,它们代表着科技的浪潮,直到下一波浪潮的来临。”

当前,方兴未艾的云计算无疑代表了科技发展下一波浪潮的到来,而率先基于AWS推出公有云服务并成为公有云事实标准的亚马逊公司无疑一只脚已经踏上了这波浪潮的浪潮之巅。事实上,自2006年面世以来,AWS当前存储的对象规模已经高达千亿级别,并已经累积为亚马逊创造了超过百亿美元的利润,由此可见云计算所蕴含的巨大商机。AWS要求存储系统能够提供与传统块、文件存储都不相同的第三类接口——对象存储接口,并采用自定义的S3协议通过互联网(HTTP)进行传输。在此背景下,为了赶上云计算为代表的这波科技浪潮,Ceph兼容以S3为代表的对象存储协议簇的对象存储网关——RGW应云而生。

第8章 经典重现

文件系统伴随操作系统一同诞生,是计算机科学中最基本和最经典的概念之一。Ceph自诞生之日起就被定位为一个分布式文件系统。时至今日,在Ceph的三大典型应用场景中,RBD和RGW先后乘着云计算的东风后来居上获得了日益广泛的应用,但是起步最早的CephFS却一直迟迟未能有所建树。究其原因,一是文件系统采用树状结构管理数据(文件和目录)、基于查表进行寻址的设计理念,与Ceph采用扁平方式管理数据、基于计算进行寻址的设计理念格格不入;二是支持文件系统必然要求Ceph引入集中的元数据管理服务器(作为树状结构的统一入口用于寻址),这又与Ceph去中心化、追求近乎无限横向扩展能力的设计思想激烈冲突。

尽管颇具戏剧性,然而一个不可否认的事实是:RBD和RGW的蓬勃发展反过来又促使Ceph在云计算以外的领域也迅速普及并逐渐变得广为人知。随着传统块、文件存储设备日薄西山,业界期待Ceph作为一个真正意义上的大一统存储系统接管传统存储的呼声越来越高。因此,尽管道阻且长,但是作为替代传统文件存储的重要一环,重启CephFS研究并使之早日进入生产环境已是势在必行。

第9章 运用之妙

运用之妙,存乎一心。经过漫长的Ceph基本原理学习之旅,相信大部分读者已经按捺不住、想要通过亲自动手实践来体验Ceph的种种神奇魅力。在《Ceph设计原理与实现》的最后,我们精心准备了以Ceph应用于生产环境的各种案例为原材料烹制的饕餮盛宴,以飨读者。

勘误与支持

赠人玫瑰,手有余香。我们真诚地希望每位读者都能从阅读《Ceph设计原理与实现》中找到乐趣并获得收益。当然,由于水平有限,书中难免存在错误和疏漏,我们将每位读者都当成是志同道合(关注Ceph、爱好Ceph)的朋友,朋友们的指正自然永远是欢迎的。

如果您在阅读《Ceph设计原理与实现》过程中碰到任何问题,可以通过以下电子邮箱联系我们:

luo.kexue@zte.com.cn

xie.xingguo@zte.com.cn

致谢

Ceph官方社区的源代码是创作《Ceph设计原理与实现》的原始素材,因此我们首先要感谢Ceph官方社区,特别是社区领袖和Ceph创始人SageA.Weil先生。Sage学识渊博、为人和善,乐于接纳新人和帮助新人成长。在他的带领下,Ceph欣欣向荣,十年间从一个默默无闻的学院派作品逐渐成长为开源社区万众瞩目的明星项目。作为Ceph官方社区的一分子,Clove团队与有荣焉。

其次,我们要感谢所在部门的主管领导——谭芳部长,是他给予了Clove团队无微不至的关怀和无与伦比的信任,让我们有勇气去不断突破自身瓶颈,全力以赴追求心中的梦想。

再次,我们也非常感谢那些阅读过《Ceph设计原理与实现》草稿并提出宝贵意见的人:宋维斌(针对《Ceph设计原理与实现》的大部分章节,他都阅读了两遍以上,他是我们所见过的最细心的人)、朱尚忠(他指出了《Ceph设计原理与实现》一些晦涩难懂之处,使得读者能够获得更加轻松愉快的阅读体验)和罗慕尧等。

最后,我们要特别感谢IT技术学院的闫林老师,如果没有他的鼓励和帮助,相信《Ceph设计原理与实现》将不会有机会和广大读者朋友们见面。

开放正在成为这个时代的主旋律,开源正在成为软件开发的新信条。与大师同行,和开源社区共成长,让每个深度参与到开源社区中的开发者们都受益匪浅。而以Linus、Sage等为首的开源社区领袖,则完美阐释了约翰·邓普顿的名言,“Itisnicetobeimportant,butit'smoreimportanttobenice”,他们永远是后来者学习和追赶的榜样。

我们期待并将继续为之努力。


其他推荐