Ceph 是一个开源的分布式存储系统,设计初衷是为了解决传统存储在扩展性、可靠性和成本上的局限,通过单个集群同时提供对象、块和文件三种存储接口 。根据 Ceph 官方社区介绍,它基于 RADOS 底层架构实现数据的自我管理和自我修复,具备高可靠、高扩展和无单点故障的特点,适合云计算和大数据场景 。
核心架构有哪些组件
Ceph 的架构设计像搭积木一样分层,底层是基础存储,上层是服务接口,中间由多个守护进程协同工作 。
RADOS 基础层:这是 Ceph 的底座,全称是可靠的自主分布式对象存储,负责把数据切分成对象并分散存储,具备自我修复能力 。
监控器(MON):相当于集群的“大脑”,负责维护集群状态映射图,监控所有组件的健康状况,通常部署奇数个节点以保证高可用 。
存储守护进程(OSD):相当于数据的“家园”,每个磁盘对应一个 OSD,负责实际存储数据、处理复制和恢复,并向监控器报告状态 。
元数据服务器(MDS):专门服务于文件系统,负责管理目录结构和文件元数据,如果使用对象或块存储则不需要此组件 。
管理器(MGR):相当于集群的“助手”,负责跟踪运行时指标和性能数据,辅助监控和管理 。
能提供哪几种存储服务
Ceph 被称为“统一存储”,因为它能在一个系统里支持三种不同的存储访问方式,满足多样化的业务需求 。
对象存储(RGW):提供兼容 Amazon S3 和 Swift 的接口,适合存储图片、视频等非结构化数据,支持海量数据存取 。
块存储(RBD):提供块设备接口,数据被切分为固定大小的块,常用于虚拟机磁盘或数据库存储,支持快照和克隆 。
文件存储(CephFS):提供兼容 POSIX 标准的文件系统接口,允许多个客户端同时挂载访问,适合共享目录和日志存储 。
应用场景:在云计算平台(如 OpenStack)中常用作后端存储,在容器平台(如 Kubernetes)中提供持久化卷支持,也可作为大数据平台(如 Hadoop)的存储底座 。
数据是怎么分布的
Ceph 不依赖中心化的查询表来定位数据,而是通过智能算法让客户端直接计算数据位置,避免了性能瓶颈 。
CRUSH 算法:这是 Ceph 的核心,客户端通过该算法根据集群拓扑和副本规则,直接计算出数据应该存在哪个 OSD 上,无需向服务器查询 。
归置组(PG):数据对象先被映射到归置组,再由归置组映射到 OSD,这样可以减少索引复杂度,便于数据迁移和平衡 。
故障域隔离:算法支持配置副本分布在不同的机架、机柜或数据中心,确保即使某个物理区域故障,数据依然安全可用 。
自动平衡:当集群增加或减少硬盘时,算法会自动触发少量数据迁移,保持数据分布均匀,无需人工干预 。