ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 体系结构 ## 架构概览 Ceph 内部架构如下: ![Ceph 结构概览](https://img.kancloud.cn/e5/c5/e5c5a1e629228722da537d9e6319a8ac_519x720.png) ## 核心组件 **Ceph 核心组件**有:Ceph OSD、Ceph Monitor 和 Ceph MDS。 * **Ceph Monitor:Ceph 监视器。** Ceph Monitor 通过保存一份集群状态映射来维护整个集群的健康状态。它分别为每个组件维护映射信息。包括 OSD map、MON map、PG map 和 CRUSH map。所有集群节点都向 MON 节点汇报状态信息,并分享它们状态中的任何变化。Ceph monitor 不存储数据(这是 OSD 的任务)。 * **Ceph OSD:Ceph 对象存储设备。** 只要应用集群向 Ceph 集群发出写操作,数据就会被以对象形式存储在 OSD 中。这是 Ceph 集群中唯一能存储用户数据的组件,同时用户也发送读命令来读取数据。通常,一个 OSD 守护进程会被捆绑到集群中的一块物理磁盘上。所以,在通常情况下,Ceph 集群中的物理磁盘的总数与在磁盘上运行的存储用户数据的 OSD 守护进程的数量是相同。 * **Ceph MDS:Ceph 元数据服务器**。 MDS 只为 CephFS 文件系统跟踪文件的层次结构和存储元数据。Ceph 块存储与 Ceph 对象存储并不需要元数据,因此也不需要 Ceph MDS 守护进程。MDS 不直接提供数据给客户端,从而消除了系统中的单点故障。 ## 基础架构 Ceph 系统自下向上可以分为 4 个层次。 ### 最底层:基础存储系统 **RADOS:Reliable, Autonomic, Distributed Object Store,即可靠的、自动化的、分布式的对象存储**。 RADOS 是 Ceph 存储集群的基础。在 Ceph 中,所有数据都以对象形式存储,并且无论是哪种数据类型,RADOS 对象存储都将负责保存这些对象。RADOS 层可以确保数据始终一致,要这道这一点,须执行数据复制、故障检测和恢复,以及数据迁移和所有集群节点实现再平衡。 ### 第二层:基础库 **LIBRADOS:librados 库**。 librados 库为 PHP、Ruby、Java、Python、C 和 C++ 这些编程语言提供了直接访问 RADOS 的接口。同时它还为 RBD、RADOSGW 这些组件提供了原生接口。 ### 第三层:高层应用接口 **高层应用接口** * **RBD:RADOS 块设备**。 RBD 基于 LIBRADOS 之上,提供持久块存储,它是自用精简配置并可调整大小的,而且将数据分散在多个 OSD 上。RBD 服务被封装成了基于 librados 的一个原生接口。 * **RADOSGW:RADOS 网关接口**。 RGW 也基于 LIBRADOS 之上, 提供对象存储服务。它使用 librgw(Rados Gateway Library) 和 librados,允许应用程序与 Ceph 对象存储建立连接。RGW 提供了与 Amazon S3 和 OpenStack Swift 兼容的 RESTful API。 * **CephFS:Ceph 文件系统**。 CephFS 基于 RADOS 来实现分布式的文件系统。引入了 MDS,主要为兼容 POSIX 文件系统提供元数据。一般当做文件系统来挂载。 ### 最上层:应用层 不同场景下对于 Ceph 各个应用接口的各种应用方式。