Ceph 是一个开源的、统一的、软件定义的、高度可扩展的分布式存储系统。它的设计目标是在通用的商用硬件上,提供高性能、高可靠性和无限的可扩展性。
几个关键定语解析:
- 统一的: 这是Ceph最大的亮点之一。它通过一个单一的存储集群,同时提供三种存储服务接口:
- 对象存储: 兼容S3和Swift API。这是Ceph最原生、最擅长的模式。
- 块存储: 通过RBD驱动,提供类似于虚拟磁盘的设备,用于OpenStack、Kubernetes或虚拟机。
- 文件系统: 通过CephFS,提供符合POSIX标准的共享文件系统。
- 软件定义: Ceph的所有智能都在软件层,运行在标准的Linux服务器上。它不依赖任何专有硬件。
- 高度可扩展: 采用真正的去中心化架构,理论上可以从几个节点扩展到成千上万个节点,容量从TB级到EB级。
核心架构与关键组件
Ceph的架构非常优雅,其核心思想是一切皆对象,并通过一个名为 CRUSH 的智能算法来管理数据的分布和检索。
1. 核心守护进程:
一个Ceph集群由以下类型的节点(物理或虚拟机)组成,每个节点运行相应的守护进程:
- OSD: 最重要的组件。每个对象存储守护进程管理一块硬盘(HDD/SSD)。它负责存储数据、处理数据复制、恢复和再平衡。集群性能随OSD数量线性增长。
- MON: 监视器,维护集群状态的主映射(集群成员、配置、数据分布CRUSH Map等)。通常部署奇数个(如3或5个)以实现高可用。
- MDS: 元数据服务器,仅为CephFS服务,管理文件系统的目录结构和元数据。
- MGR: 管理器,提供额外的监控和管理接口(如Dashboard网页界面)。
2. 核心算法:CRUSH
这是Ceph的灵魂。CRUSH算法让客户端能够直接计算数据应该存储在哪个或哪些OSD上,而不需要查询中心目录服务器。
- 原理: 客户端知道集群的拓扑结构(CRUSH Map)和存储规则(如“跨3个机架复制3份”)。当它要读写一个对象时,直接输入对象ID和集群状态,通过CRUSH算法算出一组目标OSD。
- 优势: 完全去中心化,消除了中心元数据服务器的瓶颈,使得扩展性极佳。