本文为IBM的技术写的文章,收藏研究
探索 Ceph 文件系统和生态系统
简介:
Linux®持续不断进军可扩展计算空间,特别是可扩展存储空间。Ceph 最近才加入到
Linux 中令人印象深刻的文件系统备选行列,它是一个分布式文件系统,能够在维护 POSIX 兼容性的同时加入了复制和容错功能。探索 Ceph
的架构,学习它如何提供容错功能,简化海量数据管理。
发布日期:
2010 年 6 月 12 日
级别:
中级
其他语言版本:
英文
访问情况
5726 次浏览
建议:
0(添加评论
)
作为一名存储行业的架构师,我对文件系统情有独钟。这些系统用来存储系统的用户界面,虽然它们倾向于提供一系列类似的功能,但它们还能够提供差异显著的功能。Ceph 也不例外,它还提供一些您能在文件系统中找到的最有趣的功能。
Ceph 最初是一项关于存储系统的 PhD 研究项目,由 Sage Weil 在 University of California,
Santa Cruz(UCSC)实施。但是到了 2010 年 3 月底,您可以在主线 Linux 内核(从 2.6.34 版开始)中找到
Ceph 的身影。虽然 Ceph 可能还不适用于生产环境,但它对测试目的还是非常有用的。本文探讨了 Ceph
文件系统及其独有的功能,这些功能让它成为可扩展分布式存储的最有吸引力的备选。
Ceph 目标
开发一个分布式文件系统需要多方努力,但是如果能准确地解决问题,它就是无价的。Ceph 的目标简单地定义为:
- 可轻松扩展到数 PB 容量
- 对多种工作负载的高性能(每秒输入/输出操作[IOPS]和带宽)
- 高可靠性
不幸的是,这些目标之间会互相竞争(例如,可扩展性会降低或者抑制性能或者影响可靠性)。Ceph
开发了一些非常有趣的概念(例如,动态元数据分区,数据分布和复制),这些概念在本文中只进行简短地探讨。Ceph
的设计还包括保护单一点故障的容错功能,它假设大规模(PB
级存储)存储故障是常见现象而不是例外情况。最后,它的设计并没有假设某种特殊工作负载,但是包括适应变化的工作负载,提供最佳性能的能力。它利用
POSIX 的兼容性完成所有这些任务,允许它对当前依赖 POSIX 语义(通过以 Ceph 为目标的改进)的应用进行透明的部署。最后,Ceph
是开源分布式存储,也是主线 Linux 内核(2.6.34)的一部分。
回页首
Ceph 架构
现在,让我们探讨一下 Ceph 的架构以及高端的核心要素。然后我会拓展到另一层次,说明 Ceph 中一些关键的方面,提供更详细的探讨。
Ceph 生态系统可以大致划分为四部分(见图 1):客户端(数据用户),元数据服务器(缓存和同步分布式元数据),一个对象存储集群(将数据和元数据作为对象存储,执行其他关键职能),以及最后的集群监视器(执行监视功能)。
图 1. Ceph 生态系统的概念架构

如图 1
所示,客户使用元数据服务器,执行元数据操作(来确定数据位置)。元数据服务器管理数据位置,以及在何处存储新数据。值得注意的是,元数据存储在一个存储
集群(标为 “元数据 I/O”)。实际的文件 I/O 发生在客户和对象存储集群之间。这样一来,更高层次的 POSIX
功能(例如,打开、关闭、重命名)就由元数据服务器管理,不过 POSIX 功能(例如读和写)则直接由对象存储集群管理。
另一个架构视图由图 2 提供。一系列服务器通过一个客户界面访问 Ceph
生态系统,这就明白了元数据服务器和对象级存储器之间的关系。分布式存储系统可以在一些层中查看,包括一个存储设备的格式(Extent and
B-tree-based Object File System [EBOFS]
或者一个备选),还有一个设计用于管理数据复制,故障检测,恢复,以及随后的数据迁移的覆盖管理层,叫做 Reliable Autonomic Distributed Object Storage
(RADOS)。最后,监视器用于识别组件故障,包括随后的通知。
图 2. Ceph 生态系统简化后的分层视图

回页首
Ceph 组件
了解了 Ceph 的概念架构之后,您可以挖掘到另一个层次,了解在 Ceph 中实现的主要组件。Ceph 和传统的文件系统之间的重要差异之一就是,它将智能都用在了生态环境而不是文件系统本身。
图 3 显示了一个简单的 Ceph 生态系统。Ceph Client 是 Ceph 文件系统的用户。Ceph Metadata
Daemon 提供了元数据服务器,而 Ceph Object Storage Daemon 提供了实际存储(对数据和元数据两者)。最后,Ceph
Monitor 提供了集群管理。要注意的是,Ceph
客户,对象存储端点,元数据服务器(根据文件系统的容量)可以有许多,而且至少有一对冗余的监视器。那么,这个文件系统是如何分布的呢?
图 3. 简单的 Ceph 生态系统

Ceph 客户端
因为 Linux 显示文件系统的一个公共界面(通过虚拟文件系统交换机 [VFS]),Ceph 的用户透视图就是透明的。管理员的透视图肯定是不同的,考虑到很多服务器会包含存储系统这一潜在因素(要查看更多创建 Ceph 集群的信息,见 参考资料
部分)。从用户的角度看,他们访问大容量的存储系统,却不知道下面聚合成一个大容量的存储池的元数据服务器,监视器,还有独立的对象存储设备。用户只是简单地看到一个安装点,在这点上可以执行标准文件 I/O。
Ceph 文件系统 — 或者至少是客户端接口 — 在 Linux
内核中实现。值得注意的是,在大多数文件系统中,所有的控制和智能在内核的文件系统源本身中执行。但是,在 Ceph
中,文件系统的智能分布在节点上,这简化了客户端接口,并为 Ceph 提供了大规模(甚至动态)扩展能力。
Ceph 使用一个有趣的备选,而不是依赖分配列表(将磁盘上的块映射到指定文件的元数据)。Linux
透视图中的一个文件会分配到一个来自元数据服务器的 inode
number(INO),对于文件这是一个唯一的标识符。然后文件被推入一些对象中(根据文件的大小)。使用 INO 和 object
number(ONO),每个对象都分配到一个对象 ID(OID)。在 OID 上使用一个简单的哈希,每个对象都被分配到一个放置组。放置组
(标识为 PGID)是一个对象的概念容器。最后,放置组到对象存储设备的映射是一个伪随机映射,使用一个叫做 Controlled Replication Under Scalable Hashing
(CRUSH)的算法。这样一来,放置组(以及副本)到存储设备的映射就不用依赖任何元数据,而是依赖一个伪随机的映射函数。这种操作是理想的,因为它把存储的开销最小化,简化了分配和数据查询。
分配的最后组件是集群映射。集群映射
是设备的有效表示,显示了存储集群。有了 PGID 和集群映射,您就可以定位任何对象。
Ceph 元数据服务器
元数据服务器(cmds)的工作就是管理文件系统的名称空间。虽然元数据和数据两者都存储在对象存储集群,但两者分别管理,支持可扩展性。事
实上,元数据在一个元数据服务器集群上被进一步拆分,元数据服务器能够自适应地复制和分配名称空间,避免出现热点。如图 4
所示,元数据服务器管理名称空间部分,可以(为冗余和性能)进行重叠。元数据服务器到名称空间的映射在 Ceph 中使用动态子树逻辑分区执行,它允许
Ceph 对变化的工作负载进行调整(在元数据服务器之间迁移名称空间)同时保留性能的位置。
图 4. 元数据服务器的 Ceph 名称空间的分区

但是因为每个元数据服务器只是简单地管理客户端人口的名称空间,它的主要应用就是一个智能元数据缓存(因为实际的元数据最终存储在对象存储集
群中)。进行写操作的元数据被缓存在一个短期的日志中,它最终还是被推入物理存储器中。这个动作允许元数据服务器将最近的元数据回馈给客户(这在元数据操
作中很常见)。这个日志对故障恢复也很有用:如果元数据服务器发生故障,它的日志就会被重放,保证元数据安全存储在磁盘上。
元数据服务器管理 inode 空间,将文件名转变为元数据。元数据服务器将文件名转变为索引节点,文件大小,和 Ceph 客户端用于文件 I/O 的分段数据(布局)。
Ceph 监视器
Ceph
包含实施集群映射管理的监视器,但是故障管理的一些要素是在对象存储本身中执行的。当对象存储设备发生故障或者新设备添加时,监视器就检测和维护一个有效
的集群映射。这个功能按一种分布的方式执行,这种方式中映射升级可以和当前的流量通信。Ceph 使用 Paxos,它是一系列分布式共识算法。
Ceph 对象存储
和传统的对象存储类似,Ceph 存储节点不仅包括存储,还包括智能。传统的驱动是只响应来自启动者的命令的简单目标。但是对象存储设备是智能设备,它能作为目标和启动者,支持与其他对象存储设备的通信和合作。
从存储角度来看,Ceph 对象存储设备执行从对象到块的映射(在客户端的文件系统层中常常执行的任务)。这个动作允许本地实体以最佳方式决定怎样存储一个对象。Ceph 的早期版本在一个名为 EBOFS
的本地存储器上实现一个自定义低级文件系统。这个系统实现一个到底层存储的非标准接口,这个底层存储已针对对象语义和其他特性(例如对磁盘提交的异步通
知)调优。今天,B-tree 文件系统(BTRFS)可以被用于存储节点,它已经实现了部分必要功能(例如嵌入式完整性)。
因为 Ceph 客户实现
CRUSH,而且对磁盘上的文件映射块一无所知,下面的存储设备就能安全地管理对象到块的映射。这允许存储节点复制数据(当发现一个设备出现故障时)。分
配故障恢复也允许存储系统扩展,因为故障检测和恢复跨生态系统分配。Ceph 称其为 RADOS(见 图 3
)。
回页首
其他有趣功能
如果文件系统的动态和自适应特性不够,Ceph 还执行一些用户可视的有趣功能。用户可以创建快照,例如,在 Ceph 的任何子目录上(包括所有内容)。文件和容量计算可以在子目录级别上执行,它报告一个给定子目录(以及其包含的内容)的存储大小和文件数量。
回页首
Ceph 的地位和未来
虽然 Ceph 现在被集成在主线 Linux
内核中,但只是标识为实验性的。在这种状态下的文件系统对测试是有用的,但是对生产环境没有做好准备。但是考虑到 Ceph 加入到 Linux
内核的行列,还有其创建人想继续研发的动机,不久之后它应该就能用于解决您的海量存储需要了。
回页首
其他分布式文件系统
Ceph 在分布式文件系统空间中并不是唯一的,但它在管理大容量存储生态环境的方法上是独一无二的。分布式文件系统的其他例子包括
Google File System(GFS),General Parallel File System(GPFS),还有
Lustre,这只提到了一部分。Ceph 背后的想法为分布式文件系统提供了一个有趣的未来,因为海量级别存储导致了海量存储问题的唯一挑战。
回页首
展望未来
Ceph 不只是一个文件系统,还是一个有企业级功能的对象存储生态环境。在 参考资料
部分中,您将会找到如何设置一个简单 Ceph 集群(包括元数据服务器,对象存储服务器和监视器)的信息。Ceph 填补了分布式存储中的空白,看到这个开源产品如何在未来演变也将会是很有趣的。
参考资料
学习
获得产品和技术
讨论
加入 My developerWorks 社区
。查看开发人员推动的博客、论坛、组和 wikis,并与其他 developerWorks 用户交流。
分享到:
相关推荐
Ceph分布式存储系统是一种开源的、基于软件的分布式文件系统,它设计用于高可扩展性、高性能以及高可靠性,其设计目标是处理PB级别的数据并可自动修复、自我管理。本文将深入探讨Ceph的关键特性和其搭建过程。 ### ...
GlusterFS是一个开源的分布式文件系统,借助TCP/IP协议或InfiniBand RDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。GlusterFS的总体架构主要包括存储服务器、客户端以及NFS/Samba存储...
Ceph 文件系统由加州大学圣克鲁斯分校(UCSC)的研究人员开发,旨在提供一个可扩展的系统,使能支持 PB 级和更高级的存储能力。 Ceph 文件系统的主要特点包括: 1. 分布式存储:Ceph 文件系统可以通过增加新服务器...
- **分布式名称空间**:一些分布式文件系统正在探索真正分布式的名字空间实现,例如Ceph和新一代的Google File System (GFS)。 - **性能优化**:随着硬件技术的进步和软件优化的不断推进,未来的HDFS将进一步提升其...
Ceph是一个开源的分布式存储系统,为用户提供对象存储、块存储和文件系统存储的统一接口。其设计理念在于无单点故障、高可靠性和可扩展性,广泛用于云计算和大数据存储。 本次用户调查覆盖了从2018年5月1日到5月25...
1. RedHat Ceph 分布式存储是一个大规模、开源、软件定义的存储平台。 2. 该平台结合了最新版本的 Ceph、Ceph 管理平台、部署工具和支持服务。 3. Ceph 对象和块存储提供了高可扩展性、灵活的存储解决方案。 4. Ceph...
GlusterFS是一种开源的分布式文件系统,它能够在多个物理服务器之间创建一个统一的命名空间,提供高性能、高可用性的存储解决方案。在Linux环境中部署GlusterFS,可以帮助组织更好地管理和利用其存储资源。 1. **...
Ceph是一个开源的,软件定义的分布式存储系统,致力于通过创新的分散式设计来实现可扩展性和可靠性。 如今,分布式文件系统面临多个挑战:扩展到PB级容量并提供高性能,同时防止出现故障。 此外,文件系统应能够适应...
以上内容是对“钟忻—Ceph的PB级存储实践(1).pdf”这一标题以及描述所涉及知识点的一个总结概括。虽然没有具体的文档内容可供参考,但从这些信息中我们已经能够大致了解到Ceph在PB级别存储实践中的关键技术和应用...
Ceph是一个开源的分布式存储系统,旨在提供高可用、可扩展、低成本的存储解决方案。Ceph的官网文档提供了详细的安装、配置、管理和维护指南,帮助用户快速上手使用Ceph。 Ceph存储集群至少需要一个Ceph Monitor和两...
Ceph分布式存储平台指南 Ceph是当前开源世界中的一种流行的分布式存储解决方案。许多企业IT基础设施经理们都需要了解Ceph是如何满足企业级存储...Ceph的使用场景非常广泛,包括云存储、对象存储、分布式文件系统等。
Ceph是一款开源的分布式存储系统,以其高可扩展性、高性能和无单点故障的特性在存储领域备受关注。Ceph最初由Sage Weil在2003年开发,作为其博士研究项目的一部分,旨在提供一种软件定义的、统一的存储解决方案,...
- **文件系统(POSIX接口)**:可以将Ceph集群挂载到本地,如同一个共享文件系统,支持POSIX操作。 - **块存储(RBD)**:通过Kernel RBD或LibrBD使用,提供类似硬盘的挂载功能,支持快照和克隆,适用于虚拟化和...
Ceph 是一个开源的分布式存储系统,专为可靠、高性能和大规模的存储需求而设计。它提供对象存储、块存储以及文件系统存储三种接口,能够无缝地扩展到数个 PB 级的数据。Ceph 的设计目标是提供良好的性能、可靠性和...
Ceph是一个开源的分布式对象存储和文件系统,它设计用于提供高性能、高可靠性以及良好的可伸缩性。Ceph特别适合于需要大量存储空间的场景,它可以托管在外部的专用存储节点上,且能实现从数PB到数百节点的扩展。尽管...
Ceph是一种开源的软件定义存储系统,设计用于企业中的多PB级数据部署。它提供了多种企业级特性,例如能够扩展到EB级别、集群中无单点故障、通过运行在通用硬件上来降低资本支出(CapEx)以及通过自我管理与自我修复...
8. **文件系统接口**:CephFS提供了一个兼容POSIX的文件系统,支持多用户同时访问,适合于需要共享文件系统的应用场景。 9. **高性能与低延迟**:Ceph利用RDMA(Remote Direct Memory Access)技术,实现高速、低...
Ceph是一个开源的分布式存储系统,它的设计目的是提供高性能、高可靠性和高可扩展性的存储解决方案。Ceph具有多个组件和特性,其中包括了分布式对象存储 RADOS、块存储RBD、文件系统 CephFS、以及通过LIBRADOS实现的...
Ceph设计精妙,它能够轻松应对存储系统中元数据管理的可扩展性问题,以及如何在分布式文件系统中分布元数据。 Ceph的设计理念是为了解决传统存储架构中的许多局限性。其分布式设计带来了包括但不限于以下几点关键...