注意

本文档适用于 Ceph 的开发版本。

存储设备

存储集群中有几个 Ceph 守护进程

  • Ceph OSD(对象存储守护进程)存储 Ceph 中的大部分数据。通常每个 OSD 由一个存储设备提供支持。这可以是传统的硬盘驱动器(HDD)或固态驱动器(SSD)。OSD 也可以由设备的组合提供支持:例如,HDD 用于大部分数据,SSD(或 SSD 的分区)用于某些元数据。集群中 OSD 的数量通常是待存储数据量、每个存储设备的大小以及指定的冗余级别和类型(复制或纠删码)的函数。

  • Ceph Monitor守护进程管理关键的集群状态。这包括集群成员资格和身份验证信息。小型集群只需要几 GB 的存储空间来保存监视器数据库。然而,在大型集群中,监视器数据库的大小可以达到几十 GB 到几百 GB。

  • Ceph Manager守护进程与监视器守护进程一起运行,提供额外的监视以及与外部监视和管理系统的接口。

OSD 后端

OSD 有两种管理其存储数据的方式。从 Luminous 12.2.z 版本开始,默认(且推荐)的后端是 BlueStore。在 Luminous 版本之前,默认(且唯一)的后端是 Filestore

BlueStore

BlueStore 是一种专用的存储后端,专门用于为 Ceph OSD 工作负载管理磁盘上的数据。BlueStore 的设计基于十年支持和管理 Filestore OSD 的经验。

BlueStore 的主要功能包括

  • 直接管理存储设备。BlueStore 消耗原始块设备或分区。这避免了介入的抽象层(例如 XFS 等本地文件系统),这些抽象层可能会限制性能或增加复杂性。

  • 使用 RocksDB 进行元数据管理。嵌入了 RocksDB 的键/值数据库,用于管理内部元数据,包括对象名称到磁盘上块位置的映射。

  • 完整的数据和元数据校验和。默认情况下,写入 BlueStore 的所有数据和元数据都受到一个或多个校验和的保护。在未经验证的情况下,不会从磁盘读取数据或元数据并将其返回给用户。

  • 内联压缩。数据可以选择在写入磁盘之前进行压缩。

  • 多设备元数据分层。BlueStore 允许将其内部日志(预写日志)写入单独的高速设备(如 SSD、NVMe 或 NVDIMM),以提高性能。如果可用大量更快的存储空间,则内部元数据可以存储在更快的设备上。

  • 高效的写时复制。RBD 和 CephFS 快照依赖于在 BlueStore 中高效实现的写时复制克隆机制。这使得常规快照和纠删码池(它们依赖克隆来实现高效的两阶段提交)的 I/O 都高效。

有关更多信息,请参阅 BlueStore 配置参考BlueStore 迁移

FileStore

警告

FileStore 已在 Reef 版本中弃用,不再受支持。

FileStore 是在 Ceph 中存储对象的传统方法。它依赖于标准文件系统(通常是 XFS)与键/值数据库(传统上是 LevelDB,现在是 RocksDB)的组合来实现某些元数据。

FileStore 经过充分测试,并在生产中广泛使用。然而,由于其整体设计以及对用于对象数据存储的传统文件系统的依赖,它存在许多性能缺陷。

尽管 FileStore 能够在大多数兼容 POSIX 的文件系统(包括 btrfs 和 ext4)上运行,但我们建议 Ceph 仅使用 XFS 文件系统。btrfs 和 ext4 都有已知的错误和缺陷,使用它们可能会导致数据丢失。默认情况下,所有 Ceph 配置工具都使用 XFS。

有关更多信息,请参阅 Filestore 配置参考

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入