带你读《存储漫谈Ceph原理与实践》—— Ceph 的发展历程
1、Ceph的起源与发展
Ceph项目起源于 2004年,是其创始人 SageWeil在加州大学 SantaCruz分校攻读
博士期间的研究课题,系统最初设计目标为提供一款基于 POSIX、没有单点故障、大规模的分布式文件存储系统。
所谓“大规模”和“分布式”,是指存储系统至少能够承载PB级别的数据,并且由成千上万的存储节点组成。大数据技术迅猛发展的今天,PB 级数据存储早已不是一个可以激动人心的系统设计目标,但应该指出,Ceph项目起源于2004 年,那是一个商用处理器以单核为主流、常见硬盘容量不足百 GB的年代,这和如今 CPU动辄 20核、40线程,还要双处理器、单块硬盘存储容量10TB 有余的情况是不可同日而语的。当然,Ceph系统的容量设计在理论上并没有上限,所以 PB级别并不是实际应用的容量限制。
2006年,Sage在OSDI学术会议上发表了关于Ceph的论文,并提供了项目的下载链接,基于 LGPL开源协议,Ceph项目正式开放了源代码。2010年,Ceph客户端部分代码正式进入 Linuxkernel2.6.34版本主线。SageWeil也相应成立了 Inktank公司专注于 Ceph的研发,在 2014年 5月,Inktank公司被RedHat收购,Ceph存储系统商用进程大幅提速。
2014年前后,OpenStack火爆之时,基于Ceph 的存储解决方案并不被广为接受。那时的 Ceph刚刚发布第四个版本 Dumplingv0.67,存储系统整体并不足够稳定,而且架构新颖,业界未有过类似架构系统的商用案例,人们对 Ceph在生产环境落地后,如何保障数据的安全性以及数据的一致性持怀疑态度。但随着 OpenStack 的快速发展及开源分布式存储解决方案的稀缺,越来越多的人开始尝试使用 Ceph存储系统作为 OpenStack的底层共享存储(主要用于虚机云盘及系统镜像的后端存储),且 Ceph 在中国的社区也日渐兴盛, Ceph的发展被注入了强心剂。目前,Ceph 分布式存储方案已经得到众多云计算厂商的支持并被广泛应用。
近两年 OpenStack火爆度不及当年,但借助云原生,尤其是Kubernetes技术的发展,作为底层存储的基石,Ceph再次发力,为 Kubernetes 有状态化业务提供存储机制的实现,Ceph分布式存储项目依旧保持活力。
2、Ceph的版本信息
Ceph 的版本号约定如下。
Ceph第一个版本的版本号是 0.1,版本发布时间为 2008年 1 月。多年来,Ceph一直延续使用该版本号方案(从0.1开始不断向上自增),直到2015年4月,Ceph发布0.94.1版本(Hammer版本的第一个修正版)后,为了避免 0.99向1.0的版本变化,Ceph社区制定了新的版本命名策略。新的策略中,以x.y.z格式命名版本号,其中y的取值通常为 0、1、2,具体含义如下:
x.0.z- 开发版(给早期测试者和勇士们使用)
x.1.z- 候选版(给测试集群、高手们使用)
x.2.z- 稳定、修正版(给 Ceph 的用户们使用)
x从9算起,代表Infernalis版本(I是第9个字母),这样,第9个发布周期的第1个开发版就是 9.0.0,后续的开发版依次是9.0.1、9.0.2等;候选版版本编号从9.1.0开始,稳定、修正版版本编号从9.2.0开始。随后的大版本更新(Jewel版本),开发版版本编号则从 10.0.0开始,依此类推。
开发版发布周期通常为 2~4 周,每个周期内都会冻结主开发分支,并进行代码集成
和升级测试,然后才进行版本发布。Ceph社区每年会发布 3~4 个稳定版,每个稳定版都有个名字,并且会一直提供缺陷修复,持续到下一个稳定版发布。
Ceph社区推荐用户使用长期稳定版本(Long Term Stable,LTS),Ceph的LTS版本会持续更新,通常支持时间会延续到社区发布两个 LTS版本之后。比如Hammer版本发布之后,Dumpling版本才隐退,Jewel版本发布之后,Firefly 版本才隐退,依此类推。
Ceph 的历史版本信息如下。
Argonaut 0.48版本(LTS)
Bobtail 0.56版本(LTS)
Cuttlefish 0.61版本(Stable)
Dumpling 0.67版本(LTS)
Emperor 0.72版本(Stable)
Firefly 0.80版本(LTS)
Giant 0.87版本(Stable)
Hammer 0.94版本(LTS)
Infernalis 9.x 版本(Stable)
Jewel 10.x版本(LTS)
Kraken 11.x 版本(Stable)
Luminous 12.x版本(LTS)
Mimic 13.x 版本(Stable)
Nautilus 14.x版本(LTS)
Octopus 15.x 版本(Stable)
Pacific 16.x版本(LTS)
表 1-1整理了 Ceph主要版本(自 Firefly版本开始)的发布时间点,对于学习者而言,建议从最新发布的 LTS版本(Pacific,v16.2.0)开始学习。
表1-1 Ceph主要版本发布时间点
时间 |
P |
O |
N |
M |
L |
K |
J |
I |
H |
G |
F |
2021年 3月 |
16.2.0 |
– |
– |
– |
– |
– |
– |
– |
– |
– |
– |
2020年 3月 |
– |
15.2.0 |
– |
– |
– |
– |
– |
– |
– |
– |
– |
2019年 3月 |
– |
– |
14.2.0 |
– |
– |
– |
– |
– |
– |
– |
– |
2018年 6月 |
– |
– |
– |
13.2.0 |
– |
– |
– |
– |
– |
– |
– |
2017年 8月 |
– |
– |
– |
– |
12.2.0 |
– |
– |
– |
– |
– |
– |
2017年 1月 |
– |
– |
– |
– |
– |
11.2.0 |
– |
– |
– |
– |
– |
2016年 4月 |
– |
– |
– |
– |
– |
– |
10.2.0 |
– |
– |
– |
– |
2015年 11 月 |
– |
– |
– |
– |
– |
– |
– |
9.2.0 |
– |
– |
– |
2015年 4月 |
– |
– |
– |
– |
– |
– |
– |
– |
0.94 |
– |
– |
2014年 10月 |
– |
– |
– |
– |
– |
– |
– |
– |
– |
0.87 |
– |
2014年 5月 |
– |
– |
– |
– |
– |
– |
– |
– |
– |
– |
0.8 |