写点什么

从 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:446899

评论

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