写点什么

从 4 万行 C++ 代码到“存储领域的 Linux”,Ceph 二十年的发展历程

  • 2024-10-16
    北京
  • 本文字数:2886 字

    阅读完需:约 9 分钟

大小:1.37M时长:07:58
从4万行C++代码到“存储领域的 Linux”,Ceph 二十年的发展历程

导读:在韩国京畿道水原市举办的 OpenInfra Summit Asia(开源基础设施峰会亚洲站) 大会上,CLYSO 首席技术官兼 Ceph 执行委员会成员 Dan van der Ster 在主题演讲中透露,截至 2023 年,已有 82% 的开放基础设施用户报告称他们正在使用 Ceph 进行数据存储。令人惊叹的是,Ceph 的起点却是加州大学圣克鲁斯分校的一个学生项目,最初由 Sage Weil 作为其博士研究的一部分启动,如今成长为在全球范围内广泛应用的存储解决方案。

 

Ceph 最初是一款由 40000 行 C++ 代码实现的 Ceph 文件系统(CephFS),后来发展成了一个全面的存储解决方案,被全球各地的组织广泛使用。

 

其实从一开始,Ceph 就得到了关键机构的大力支持。2003 年至 2007 年期间,劳伦斯利弗莫尔国家实验室、桑迪亚国家实验室和洛斯阿拉莫斯国家实验室支持了 Weil 的初期工作。彼时的目标是为数据中心规模的高性能计算(HPC)工作负载创建一个可横向扩展的、基于对象的文件系统。

边缘智能

为此,Weil 采取了一种新颖的方法。他的想法是尽可能将更多的智能推向边缘,而不是专注于管理大量的“哑”磁盘。此外,该设计强调构建一致、可靠的存储系统,避免出现单点故障。

 

这些理念使 Ceph 区别于当时的其他存储方案,如 Lustre、Google File System (GFS) 和 Parallel Virtual File System (PVFS)。它包含了以下特性:

 

  • 分布式对象存储:Ceph 从一开始就被设计为一个分布式对象存储系统——名为可靠的自主分布式对象存储(RADOS),而非传统的文件系统。这使得它能够在多个节点上扩展到更大的存储容量。

  • 数据与元数据解耦:Ceph 将文件元数据的管理与文件数据的存储分离。这种做法使得元数据和数据操作可以独立处理,从而提高了系统的可扩展性。

  • 动态分布式元数据管理:Ceph 采用了一种名为动态子树分区(DSP)的新方法,自适应地在服务器之间分配元数据管理。这使得系统能够在扩张时同步扩展元数据性能。

  • CRUSH 算法:Ceph 引入了可扩展散列下的受控复制(CRUSH)算法,用于确定性地在集群中放置数据。这消除了对集中式数据分配表的需求。

  • 智能分布式对象存储:Ceph 将数据迁移、复制、故障检测和恢复等任务委托给存储节点自身,从而使系统更加自主和可扩展。

  • 统一存储:Ceph 旨在通过一个平台提供对象存储、块存储和文件存储接口,而不是为每种存储类型提供独立的系统。

 

随后,在 2007 年至 2011 年间,由 Weil 共同创办的网络托管公司 DreamHost 成为了 Ceph 发展的关键支持者。在此期间,Ceph 的核心组件变得更加稳定,实现了很多新特性,并确立了未来的发展路线图。Yehuda Sadeh-Weinraub、Gregory Farnum 和 Josh Durgin 等关键开发人员加入了项目,为其快速发展做出了重要贡献。

 

正如红帽在《Ceph 十周年历史》中解释的那样:“当 Sage 的研究接近尾声时,他开始与许多传统存储厂商讨论 Ceph 及其相关工作。在看到许多同行被业界雇佣,而他们的有趣和创新的工作被抛弃或被大型专有系统吸收后,他意识到业界巨头需要的是‘你’,而不是你的项目。”

 


存储领域的 Linux

作为一名开源的坚定信徒,Weil 希望 Ceph 成为“存储领域的 Linux”,因此他在 2012 年将 Ceph 授权为 LGPL 2.1 版本。此外,他也没有要求贡献者将代码版权转让给这个项目。

 

与此同时,Weil 成立了 Inktank,以推动 Ceph 的广泛应用。这一举措为 Ceph 的实施提供了企业级的支持和专业知识。其目标是提升 Ceph 的性能,使其达到生产就绪状态,并为其提供支持。

 

那时,Ceph 在 Linux 上的运行速度并不快。它的客户端依赖于较慢的用户空间文件系统(FUSE),而不是 Linux 原生文件系统。随着性能的提升,Linus Torvalds 于 2011 年将 Ceph 纳入了 Linux 内核 2.6.34 主线版本。

 

Inktank 成功地将 Ceph 从学术和研究机构推广到了企业界。红帽认识到存储的重要性日益增加,并看到了 Ceph 的成长,于是决定在 2014 年收购 Inktank。

 

在红帽的管理下,Ceph 成为面向企业的生产级软件,并获得了专业支持和持续开发。在红帽收购 Inktank 的几个月内,红帽发布了一个重要的 Ceph 新版本。红帽首席执行官 Jim Whitehurst 当时在接受采访时告诉我:“红帽希望创建一个用于基础设施和平台即服务的开源堆栈。”

 

多年来,Ceph 在技术上持续取得重大进展。Ceph 12 版 Luminous 是一个重要的里程碑。在这一版本中,Ceph 引入了 BlueStore,使得用户能够直接管理 SSD 和 HDD,而无需依赖传统文件系统。这一创新显著提升了 Ceph 的性能和效率。

 

由于 BlueStore 直接使用原始块设备和分区,它避免了本地文件系统等可能限制性能或增加复杂性的中间抽象层。对于存储元数据,BlueStore 使用了嵌入式 RocksDB 键值数据库。RocksDB 包含了对象名称与磁盘上块位置之间的重要映射。一个或多个校验被用于保护这些映射,以进一步确保数据和元数据的安全。在数据和元数据从磁盘读取或返回给用户之前,都经过了验证。

 

Ster 说,结果是“神奇的”,这源于 Ceph 最初的理念。“在过去的存储时代,你使用的是传统架构,包含备用 IP 地址、虚拟 IP 和多路径技术。通过 CRUSH 和 DSP,你可以指定数据中心、机房和机架的位置,并制定数据放置的规则。该系统速度非常快,能够迅速计算对象的位置。这意味着你不需要一个大型数据库来记住所有对象的位置。你可以计算出数据应该存放的位置,并快速找到它。”

 

Ceph 也有其独特的数据复制和可靠性方法。Ster 指出,过去有两种传统方法。一种是“复制磁盘”,如果磁盘出现故障,可以恢复其数据。另一种是“复制对象”。这两种方法虽然有效,但他进一步指出:“这两种方法都需要保留空闲的备用磁盘,浪费资源,更重要的是恢复速度非常慢。”

 

“有了 Ceph,”Ster 说,“你可以将对象分成一系列小组。在实践中,使用 Ceph 后,即使发生重大故障,我也从未见过管理得当的集群出现数据丢失的情况。因此,它不仅能让你创建一个高可用性系统,还能确保集群中的任何组件发生故障时,其他组件能够协同工作,快速复制数据。在实际应用中,故障后的重建时间不需要几个小时,可能只需一分钟,甚至 30 秒。”

Ceph 基金会

有了这样的数据,难怪许多公司现在都在使用 Ceph。

 

不要以为 Ceph 的成功仅仅是因为红帽的支持。Ceph 社区在其成功中发挥了关键作用。2018 年,Linux 基金会发起了得到广泛支持的 Ceph 基金会。许多公司和组织都在支持 Ceph 的发展。Weil 继续指导 Ceph 也是至关重要的。

 

随着 Ceph 迈入第三个十年,它已成为从企业部署到云基础设施等各种环境中的关键组件。展望未来,Ceph 正在将自己定位为人工智能和机器学习领域的关键角色。对于任何关心数据存储的人来说,Ceph 只会变得越来越重要。而现在,这几乎适用于 IT 行业的每一个人。

 

作者简介:

 

Steven J. Vaughan-Nichols(又名 sjvn)从 CP/M-80 还是前沿 PC 操作系统、300bps 是快速互联网连接、WordStar 是最先进的文字处理软件时起,就开始撰写关于技术及其商业领域的文章。多年来,他一直关注技术发展的脉动,见证了计算机和互联网领域的变革与进步。

 

原文链接:

 

https://thenewstack.io/ceph-20-years-of-cutting-edge-storage-at-the-edge/

 

声明:本文为 InfoQ 翻译整理,未经许可禁止转载。

 

2024-10-16 15:447098

评论

发布
暂无评论
发现更多内容

平台+低代码:中小企业数字化转型普惠之路

EquatorCoco

低代码 数字化

程序员必会的6个数据可视化库

伤感汤姆布利柏

管理者请注意,要珍惜有愤怒情绪的员工

芃篙君

管理

跨国制造商部署SD-WAN提升全球业务案例分析

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

专业期刊邀请,天谋科技围绕 IoTDB 及 TsFile 刊文《Java aktuell》并将于 JavaLand 峰会作报告

Apache IoTDB

.NET 9 首个预览版发布:瞄准云原生和智能应用开发

EquatorCoco

.net 架构 云原生

监管人工智能——未来之路

孤傲小二~阿沐

京东商品详情数据采集方法代码展示

tbapi

京东API接口 京东商品详情接口

教你如何拿Merlin Chain空投,附视频教程

石头财经

2024年赚钱新风口,源码搭建属于自己的体育赛事直播平台

软件开发-梦幻运营部

浅析软件开发技术的发展历程与展望:从过去到现在,探索未来趋势

快乐非自愿限量之名

软件开发 项目开发

ETL、ELT区别以及如何正确运用

RestCloud

ETL 数据集成 ELT

一座“超级工厂”:让中国没有流不通的数据

脑极体

数据

比特币原生 L2 解决方案 Merlin Chain梅林链科普(bitget wallet)

股市老人

适用于预算少企业的网络组网方案

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

除了Sora,还有哪些AI软件工具值得推荐?这30个一定要知道!

彭宏豪95

AI软件 AIGC AI工具

细粒度的代码权限怎么做?极狐GitLab 代码所有者来帮忙

极狐GitLab

软件测试学习笔记丨ES(Elasticsearch)介绍

测试人

软件测试 自动化测试 测试开发

数字化,网络化和未来的AI

agnostic

人工智能 信息化

如何保障服务的高可用:提升可观测性

SFLYQ

高可用 后端 可观测性

C#中使用IntPtr.Size属性来判断当前系统是32位还是64位

百度搜索:蓝易云

C# 云计算 Linux 运维 云服务器

深入解析 Java 面向对象编程与类属性应用

小万哥

Java 程序人生 编程语言 软件工程 后端开发

教你如何拿Merlin Chain空投,附视频教程

BlockChain先知

微帧为央视大年初二《2024春节戏曲晚会》提供AI画质增强服务

微帧Visionular

画质增强 超高清处理

低代码开发:学校低成本数字化转型的新引擎

不在线第一只蜗牛

低代码 数字化

鸿蒙Next怎么升级更便捷

FinFish

纯血鸿蒙 鸿蒙化改造 鸿蒙app 鸿蒙app升级 混合app开发

比特币原生 L2 解决方案 Merlin Chain梅林链科普(bitget wallet)

股市老人

Java并发编程基础(下)

FunTester

一条Linux命令打败99%的运维

伤感汤姆布利柏

Chatbot具体需要如何搭建

百度搜索:蓝易云

云计算 Linux 运维 chatbot 云服务器

hal库中串口常用函数介绍

百度搜索:蓝易云

云计算 Linux 运维 云服务器 HAL

从4万行C++代码到“存储领域的 Linux”,Ceph 二十年的发展历程_开源_Steven J. Vaughan-Nichols_InfoQ精选文章