Ceph:存储界的Linux
数据是当今最关键的资源之一。数据存储始终是任何数据中心中关键的架构要素之一。在存储方面有很多考虑因素:性能、可扩展性、可靠性等等。十年前,市场便开始热衷于公共存储解决方案,因其灵活且易于扩展。然而,近年来,人们开始重新思考这一模式,纷纷转向采用云消费模式的本地存储。新的本地云原生架构旨在将传统数据中心的安全可靠性与云的灵活扩展性完美融合。Ceph,作为企业级的统一存储解决方案,正是这一云原生本地架构的理想选择。
在本次网络研讨会中,我们将深入探讨Ceph如何独特地满足这种架构需求,并展示技术行业如何致力于实现“Ceph,存储领域的Linux”的愿景。
Tushar Gohad,高级首席工程师(杰出工程师),英特尔 Vincent Hsu,IBM Fellow,副总裁,存储和SDE首席技术官,IBM
-----
首先,我想从探讨数据中心的演变以及我们的愿景开始这次对话——为什么Ceph被誉为“存储领域的Linux”。
早期,传统的本地数据中心是人们几十年来熟悉的环境。那时的数据环境相对稳定,多数客户能够较为准确且持续地预估其数据增长量。光纤通道在那些数据中心中占据主导地位。
然而,在过去的十年左右,我们见证了影子IT的崛起,人们开始正式或非正式地将他们的数据迁移到云端,充分利用云技术。为什么会这样呢?因为敏捷性至关重要。人们需要快速启动和关闭某些项目,而非经历繁琐的传统采购流程。云为人们提供了这样一个理想的环境。公有云提供了众多强大的功能,使人们能够弹性地扩展和收缩他们的存储空间。
然而,随着时间的推移,出于各种原因,人们发现公有云并非总是具有成本效益。此外,还有许多法规出于合规性和安全性考虑禁止将数据迁移到公有云。于是,人们不愿回到过去的方式,尤其是在现在,几十年过去了,我们预测数据增长的能力并没有显著提升。事实上,随着众多新应用的涌现和新型架构如微服务架构的出现,我们需要一个类似公有云的环境来支持这种弹性基础设施,能够像人们在公有云中消费存储一样快速扩展。
这就是“云原生架构在本地”概念的由来,它几乎具备与公有云相同的属性和特征,但同样具有弹性,位于本地数据中心,并具备所有合规性和安全性能力。
基于这样的背景,我们发现Ceph非常适合这种应用和环境。作为主存储的统一SDS,Ceph是这种云原生本地存储的一个绝佳选择。
首先,Ceph有一个称为RADOS的基础。它是系统中块、文件和对象之间统一的架构,主要是块存储(RBD)、对象存储(RGW)以及文件存储(CephFS)。
在块存储方面,Ceph在OpenStack和OpenShift环境中表现出色。目前,业界正致力于开发针对VMware的NVMe over Fabrics技术,以解决特定的技术挑战。当我们讨论云原生本地架构时,不得不面对一个重要的问题,那就是VMware的应用场景。这也是为什么业界正在积极投资于NVMe over TCP技术,以更好地支持VMware环境。
对于对象存储,Ceph具备出色的S3高度兼容性、可扩展性和耐久性。在市场上,我们有来自各大供应商的客户在使用Ceph,总计超过数十ZB的数据存储在Ceph的对象存储上。
谈到CephFS,除了原生文件系统外,我们还支持NFS和CIFS。这是支持云原生架构的重要基础。
让我们从可消费性的角度审视云存储架构。要在本地实现类似云的存储功能,三个关键要素至关重要。首先是可消费性——确保这种存储能够像云一样被便捷地消费。今天,我将重点介绍Ceph今年宣布的最新功能。其次是韧性、安全性,最后是性能,这部分将由Tushar详细讨论。
首先,我们谈谈可消费性。这里有几个关键领域需要考虑。首先是设置过程。在云存储的背景下,你不需要花费大量时间进行设置;你可以立即开始使用。因此,Ceph努力解决的首要问题是简化设置流程。Ceph在Linux容器上运行,对特定硬件没有限制,使人们能够轻松地设置Ceph集群。只需一条命令,就可以引导你完成整个安装过程。
其次,集中化管理极为重要。这方面主要有两种核心技术工具。一是Cephadm,它是一款用于部署和管理Ceph集群的实用程序,与CLI和仪表盘深度整合。右侧的仪表盘则搭载了另一项关键技术:全新的UI,它允许Ceph用户直观查看集群的整体运行状态。
接下来,我们来讨论应用程序集成。Ceph在与高级应用程序,如Spark、Presto(现更名为Trino)等,的集成方面投入了大量精力。这种集成使得Ceph能够优化企业数据中心中这些应用程序的性能。
让我们来谈谈升级过程的简化。在传统数据中心中,升级往往会带来一系列头痛的问题,比如涉及不同版本的固件、软件和硬件,这些往往会导致停机时间。然而,在如今运营预期为24/7的时代,安排停机时间变得极具挑战性。不过,有了Ceph的多节点扩展架构,我们可以在不中断服务的情况下进行升级。可以逐个升级节点,而集群依然可以保持运行状态。
最后,我们来看一下简便的扩展性。这可以说是Ceph技术最为突出的特点——其强大的可扩展性。理论上来说,它几乎没有限制;可以在没有任何约束的情况下扩展性能和容量。每次扩展时,系统都能保持一致性,确保实现线性扩展。这对于在本地构建类似云的架构的骨干存储基础设施来说至关重要。
韧性和安全性是存储中不可或缺的元素。接下来,我将重点介绍这些领域的最新动态。首先,我们引入了安全令牌服务(STS)。为了支持云架构,存储基础必须能够适应多租户和多用户环境,这些环境中不同的用户拥有不同的角色和权限。STS允许客户端请求临时、受限特权的凭据来执行特定功能。一旦授权,这些凭据将使用户能够执行任务,并可以根据需要轻松恢复或重新认证。
接下来是IAM角色存储桶策略。这一功能使得我们能够在存储桶级别进行身份和访问管理。与传统的多个用户共享相同S3密码的方式不同,IAM角色存储桶策略允许我们实现更精细的基于角色的控制。
最后要说的是加密功能。在企业数据中心中,数据加密对于保障数据安全至关重要。我们现在提供了在将对象存储到磁盘之前进行加密的功能。这种加密可以在整个集群范围内实施,或者由用户通过内联对象加密进行静态管理。这种灵活性是一个关键能力。
Ceph有潜力成为存储领域的Linux,为云原生存储层提供新的基础。我们正在解决三个关键组成部分。首先是可消费性。作为业界的一员,我们正在引入新技术,使消费过程尽可能简单,类似于云的流程。其次是安全性和韧性。我们提供加密、基于角色的管理和STS集成等功能,以实现对资产和数据加密的精细控制。
关于Ceph业界在过去两个版本中一直在努力的一个项目。这个项目被称为Crimson,它的目标是重新思考Ceph OSD,以支持新一代平台和高性能工作负载。
存储硬件的迅速进步应该是显而易见的。每次发布新产品,IOPS都会提高,延迟也会降低。然而,CPU吞吐量的增长并没有跟上这一步伐。虽然核心数量有健康的指数增长,但每个CPU的吞吐量并没有看到类似的增长。基于CPU周期的IO处理预算发生了显著变化。举例来说,在现代CPU上,当时钟频率达到2 GHz或以上时,最新一代的NVMe设备每次IO只能承受几千个周期。相比之下,当硬盘占据主导地位时,用于IO的CPU周期预算要慷慨得多,通常每次IO都在数千万个周期以上。
为了充分利用高速存储设备,比如NVMe固态硬盘,同时保持成本效益,我们需要在客户端IO方面实现高度的并行性和效率。然而,Ceph是在IO周期较多的时代开发的,因此,我们迫切需要重新考虑并改进现有的方法。为了满足这一需求,Ceph业界在Pacific版本发布时启动了Crimson项目,该项目与NVMe固态硬盘每TB价格逐渐接近硬盘价格的趋势相吻合。
接下来,我们来探讨一下传统Ceph OSD所面临的挑战。传统Ceph OSD主要依赖于线程池和共享队列来实现Ceph数据管道各个组件之间的通信。尽管在多核环境下,同步线程和IO模型在过去是足够的,但同步IO和使用线程池处理IO的不同部分会引入显著的延迟,这主要是因为需要跨核通信。即使通过向线程池中添加更多线程来扩展工作负载到多个CPU,这些共享资源的线程仍然需要锁,这会导致随着核心数量增加而迅速增长的开销。
我们可以通过考察一个关键指标——OSD的CPU利用率,来进一步讨论这个问题。下面的图表是基于Mark Nelson对传统OSD的分析结果。从这些图表中,我们可以看到OSD的核心利用率相对较低。将蓝线和红线与灰线对比,灰线表示每个OSD分配的核心数,我们发现即使对于大型集群,利用率通常也仅在25到50之间。Crimson项目的主要目标就是降低这些成本,最大化每次IO的周期,最小化上下文切换,以及减少内存复制操作。
Crimson项目的基本原则是:一个线程对应一个CPU、非阻塞IO和用户空间调度。在这个模式下,请求和相关资源被分配到各个核心,允许它们在同一CPU核心上处理直到完成,这被称为“完成模型”。这种方法极大地减少了锁定和上下文切换的需求,每个非阻塞任务都拥有CPU直到任务完成或自愿让出CPU。这种设计非常适合Ceph OSD,因为所有IO操作已经按照放置组进行了分片。
然而,实现这些更改并非易事,我们需要在不破坏现有功能或损害向后兼容性的前提下,对OSD操作的核心部分进行改造,包括实现非阻塞IO、用户空间调度和异步线程。另一个挑战是开发一个低级别的线程每核心或具有共享无内容架构的用户空间调度库。这需要我们寻找那些能够直接支持这些要求或拥有强大业界支持的库或框架。最终,由于Seastar能够满足所有设定目标,它成为了一个理想的选择。
Seastar是一个在C++中实现每核心一个线程的Shared-Nothing架构的开源项目。它还包括一个用户空间无锁NUMA内存分配器。重要的是,由于Seastar得到了业界的广泛支持,它拥有一个清晰的发展路线图,并已成功集成到Redis、Cassandra和Memcached等项目中,实现了显著的可扩展性和性能提升。
Seastar通过使用future、promise和continuation来实现异步I/O。这种方法通过将逻辑上相连的异步构造组合在一起,使得代码编写和维护变得更为容易。此外,Seastar还提供了网络和存储堆栈组件,进一步简化了开发过程。因此,Seastar成为了Ceph项目的首选框架。
Crimson已经在Ceph的主分支中积极开发,并作为实验性功能在最近的几个版本中亮相。直到最新的Ceph发布,包括快照支持在内的librados操作已经准备就绪。我们的目标是将RBD打造成librados之上的首个接口,与名为CyanStore的内存后备对象存储,以及现在融入Crimson的BlueStore的升级版——AlienStore协同工作。我们支持通过Cephadm部署Crimson。尽管这仍是一个持续进化的项目,但已经可以供测试了。
在Ceph的“S__”版本中,我们正全力推进Scrub、纠删码和多分片支持的开发。多分片支持旨在优化多核环境下的性能,初期以RBD为重点,随后逐步拓展至RADOS Gateway(RGW)和CephFS。我们的首要任务是确保系统的稳定性和对多核环境的支持,同时逐步增加其它功能。
我们正基于Seastar架构为Crimson原生设计一款全新的对象存储。它旨在支持新兴的存储技术,如高速的NVMe驱动器和为SSD设计的分区命名空间(ZNS)。预计这种新设计在扩展性上将超越BlueStore。一个重大变革是将元数据存储转移到自定义实现上,从而摆脱CPU密集型的实现,如RocksDB。
SeaStore是一项全新的功能,最初在Ceph的Reef版本中作为实验性功能发布,目前仍处于初期阶段。尽管我们对BlueStore进行了深入测试,但SeaStore将更多地聚焦于即将到来的“S_”版本中的稳定性。此次发布将包括与单元测试框架的集成、支持多核心运行至完成,以及快照功能。
在评估Crimson通信器的性能时,我们需关注三个核心领域。首先,我们专注于通信器的设计,它已完全按照Seastar范式进行了重构。与传统OSD中的异步通信器相比,我们观察到随着核心数量的增加,多分片的Crimson通信器效率极高,如图中蓝线所示。这种可扩展性是我们努力的结果,确保每个线程都能独立运行,遵循无共享、轻量级锁设计,目前看来效果符合预期。
在可扩展性测试中,我们使用了两款具有超过100个核心的CPU。性能测试表明,无论是单核心还是多核心运行,性能热点都保持一致,呈现出积极的扩展趋势。重要的是,这些数据应结合Crimson OSD与对象存储的配对情况来解读。
对比Crimson与BlueStore、Crimson与CyanStore,以及SeaStore与传统Ceph OSD的性能,右侧的图表给出了直观展示。这些结果基于单节点、单OSD和单副本的测试环境。虽然我们正在计划更大规模的测试,但在这有限的测试集中,读取性能展现出了极佳的扩展性。深蓝线代表Crimson CyanStore,即内存后备OSD,其读取和写入扩展性均表现优异。相比之下,浅蓝线代表传统的BlueStore,即Ceph当前的主流状态。将浅蓝线与Crimson的红、绿、蓝线对比,可以明显看出正向扩展性的趋势。这些结果表明,我们在Crimson中实现的架构方向正确。
这些是Crimson提供的一些资源,实际上,在Crimson的首页上,大家还可以找到其它一些演讲和论文的链接,非常值得一看。Crimson代表了Ceph的一个重大进步,它旨在充分释放新一代存储硬件的潜力,以打造高度可扩展且高效的存储解决方案。无论是大规模的数据中心应用场景,还是新兴的AI/ML部署,Crimson都是为满足这些需求而精心设计的。我们相信,Ceph将继续成为未来可靠的存储解决方案,而Crimson将在其中发挥至关重要的作用。
Phil的演讲深入探讨了AI存储的重要性、相关的经济因素以及性能考量。例如,Phil精确地指出了Nvidia H100 GPU所带来的挑战,以及其超级计算需求,这使得I/O和存储需求达到了新的高度。规格显示,I/O要求高达1TB/s。Ceph业界正在积极努力缩小CephFS、小文件性能以及元数据服务器可扩展性等功能与特定需求之间的差距。至少,Ceph已经实现了1TB/s的可扩展性,这是业界努力的初步成果。
在讨论AI时,我们需要考虑多个方面,包括训练、推理、微调和机架模式等。在AI的关键初始步骤中,确保获得适量且高质量的数据以进行有效训练至关重要。过去,该行业在大数据平台上严重依赖HDFS和传统数据湖。然而,随着时间的推移,数据湖往往变成了数据堆积的场所。相比之下,AI操作的新趋势是朝着一个名为“Lakehouse”的新架构发展。这种架构将数据仓库与数据湖相结合,提供了一种更有结构化和高效的数据存储解决方案。像Ceph提供的对象存储这样的技术,在支持这种Lakehouse架构方面发挥着核心作用。Ceph的对象存储接口提供了众多高级功能,包括支持更高级别的数据库操作,如S3 Select、Presto插件、Parquet和Iceberg数据格式优化等。这些功能大大提高了数据处理的效率,使Ceph成为AI存储的关键组件。正如IBM所指出的那样,Ceph针对大规模和单边部署进行了优化,进一步凸显了它在AI生态系统中的关键地位。
AI存储的另一个关键要素是性能。通过合理的配置,Ceph能够为涉及大型IO事务的操作提供卓越的性能。在AI中,确保数据治理同样至关重要,因为它涉及管理数据的合规性和安全性,特别是在模型开发完成后。未来对Ceph的投资预计将重点放在保护AI模型和数据合规性、安全性上。这将有助于建立对Ceph作为可靠存储解决方案的信任,用于获取原始数据并安全存储有价值的AI模型。
--【本文完】---
近期受欢迎的文章:
更多交流,可添加本人微信
(请附姓名/关注领域)