「Ceph」- 概念术语

问题描述

我们将快速阅读官方文档,并摘录的关键信息(至少在我们看来是重要的内容),以形成对 Ceph 的整体认识;

该笔记将记录:与 Ceph 相关的概念术语,以形成对 Ceph 的基本认识,并针对特定概念进行深入地学习;

解决方案

该笔记是根据我们的理解所记录,仅是为了快速理解,详细内容建议阅读官方文档;

原理简述

OSD

类型:物理磁盘;

描述:OSD,Object Storage Device,是进行存储数据的物理磁盘;每个磁盘、分区都可以称为一个 OSD;

Ceph OSD(Ceph OSD, ceph-osd

类型:守护进程

描述:负责管理 OSD(物理磁盘);与 OSD 为 1:1 关系;进行数据写入与读取;主要功能包括存储数据,处理数据的复制、恢复、回补、平衡数据分布,并将一些相关数据提供给 Ceph Monitor,例如 Ceph OSD 心跳等。一个 Ceph 的存储集群,至少需要两个 Ceph OSD 来实现 active+clean 健康状态和有效的保存数据的双副本(默认情况下是双副本,可以调整);

Ceph MON(Ceph Monitor, ceph-mon)

类型:守护进程

描述:Ceph Monitor,其负责维护集群状态,其他组件周期向 MON 汇报自身状态;主要功能是维护整个集群健康状态,提供一致性的决策,包含 Monitor map、OSD map、PG map、CRUSH map;Client 从 MON 得知集群状态;

Ceph MGR(Ceph Manager, ceph-mgr)

类型:守护进程

描述:Ceph Manager 与 Ceph MON 一起运行,为外部监控和管理系统提供额外的监控和接口。Ceph Manager 守护进程 (ceph-mgr) 负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率、当前性能指标和系统负载。Ceph Manager 守护进程还托管基于 python 的模块来管理和公开 Ceph 集群信息,包括基于 Web 的 Ceph Dashboard 和 REST API。如果没有运行 Ceph MGR 进程,集群会给出健康警告,并且 ceph status 输出中的一些其他信息将丢失或过时(在启动 mgr 之前);

数量:高可用性通常至少需要 2 个 Ceph Mgr 进程;

Ceph MDS(Ceph Metadata Server, ceph-mds)

仅供 CephFS 使用,仅用于存储文件的元数据,并不存储实际的数据;Ceph MDS 主要保存的是 CephFS 的元数据(Ceph 的块存储和 Ceph 的对象存储都不需要 Ceph MDS);

Ceph MDS 为基于 POSIX 文件系统的用户提供了一些基础命令,例如 ls、find 等命令;

RADOS Cluster(RADOS)

RADOS(Reliable Autonomic Distributed Object Store),是具备自我修复等特性,提供可靠、自动、智能的分布式存储,其本身就是指完整的对象存储系统;

RADOS,是 Ceph Cluster 的子集,由 Ceph OSD、Ceph Mon、Ceph Mgr 组成;

所有存储在 Ceph 中的用户数据最终都是由 RADOS 来存储的,并且 RADOS 所提供 Ceph 的高可靠、高可扩展、高性能、高自动化等特性;

RADOS 最大的特点如下:
1)将文件映射到 Object 后,利用 Cluster Map 通过 CRUSH 计算而不是查找表方式定位文件数据到存储设备中的位置。优化传统的文件到块的映射和 BlockMap 管理;
2)RADOS 充分利用 OSD 的智能特点,将部分任务授权给 OSD,最大程度地实现可扩展;

Client-related

Ceph Clients,Ceph Client:能够访问 Ceph Storage Cluster 的 Ceph 组件的集合,包括:Ceph Object Gateway, Ceph Block Device, CephFS,相应的类库、内核模块、FUSE;

Client:从 Ceph Mon 获取集群状态,通过 CRUSH 算法得到用于读写数据的 Ceph OSD 实例,并直接与 Ceph OSD 通信以写入数据;

librados:是个类库,其用于访问 RADOS 服务,其允许应用程序直接使用,支持 C/C++、Java 和 Python 等语言;librados 软件库非常灵活,允许用户应用程序通过 C、C++、Java、Python、PHP Bindings 直接访问 Ceph 存储集群;

Ceph Client Libraries:用于与 Ceph System 交互类库集合;

Ceph Kernel Modules:内核模块的集合,用于与 Ceph System 交互;

其他组成部分

ORCH、Plugin:集群的其他组件;

RBD:RBD 通过 Linux Kernel 客户端和 QEMU/KVM 驱动,来提供完全分布式的块设备;
RADOSGW:RADOSGW 是套基于当前流行的 RESTful 协议的网关,并且兼容 S3 和 Swift 协议;
CephFS:Ceph FS 通过 Linux 内核(Kernel)客户端结合 FUSE,来提供一个兼容 POSIX 的文件系统;

常用词汇术语

该部分为与 Ceph 有关的术语,其关键术语将详细进行解释说明,其非关键术语则简单概述;

Ceph Project:Ceph 的人员、软件、使命、基础设施的总称,指 Ceph 相关的所有内容;
cephx:Ceph 的认证协议;
Ceph,Ceph Platform:所有 Ceph 软件,包括 https://github.com/ceph 的所有代码;
Ceph System,Ceph Stack:两个或多个 Ceph 组件的集合;
Ceph Node,Node,Host:在 Ceph System 内的任何节点;
Ceph Storage Cluster,Ceph Object Store,RADOS,Reliable Autonomic Distributed Object Store:存储用户数据的核心存储软件集(MON+OSD);

Ceph Object Storage:我们常说的对象存储,类似 S3 Swift 等等,本质上使用 Ceph Storage Cluster 与 Ceph Object Gateway 组成;
Ceph Object Gateway,RADOS Gateway,RGW:Ceph 的 S3/Swift 网关组件;
Ceph Block Device,RBD:当与某些(例如 librbd、虚拟化等等)技术结合使用时,提供块存储功能;
Ceph File System,CephFS,Ceph FS:Ceph 的 POSIX 文件系统组件,提供本地可用的文件系统;

Cloud Platforms,Cloud Stacks:第三方云平台,例如 PVE OpenStack 等等;

Object Storage Device,OSD:物理或逻辑存储单元,在 Ceph 中,被称为 OSD 设备;注意以 Ceph OSD 术语区分;
Ceph OSD Daemon,Ceph OSD Daemons,Ceph OSD:特指 Ceph OSD 软件,负责与 OSD 交互;
OSD id:是 OSD 的标识,在 Monitor 创建新的 OSD 时生成;
OSD fsid:也是 OSD 的标识,目的是进一步提供 OSD 唯一性;它位于 OSD 路径中名为 osd_fsid 的文件中;fsid 与 uuid 可互换;
OSD uuid:与 OSD fsid 类似,也是 OSD 唯一标识符;fsid 与 uuid 可互换;

filestore:是 OSD daemon 旧后端,需要 Journal 支持,并且数据是写入到文件系统的,最终由文件系统写入物理磁盘;
bluestore:是 OSD daemon 新后端,与 filestore 不同,bluestore 直接将对象存储在 block device 中,而无需任何文件系统接口;

Ceph Monitor,MON:是 Ceph monitor 组件;
Ceph Manager,MGR:是 Ceph manager 软件,将整个集群的信息收集到一处;
Ceph Manager Dashboard,Ceph Dashboard,Dashboard Module,Dashboard Plugin,Dashboard:基于 Web 的管理界面,能够管理集群的方方面面;Dashboard 作为 Ceph Manager 模块来实现;

Ceph Metadata Server,MDS:是 Ceph 元数据服务,仅与 CephFS 相关;
Ceph Release:任何不同编号的 Ceph 版本;
Ceph Point Release:任何仅包含错误或安全修复的临时版本;
Ceph Interim Release:还未经过质量测试的 Ceph 版本,但是或许包含新特性;
Ceph Release Candidate:经过初时测试的 Ceph 主版本,并准备进入 beta 测试;
Ceph Stable Release:Ceph 的主版本,所有来自前临时分支的特性都成功地经过质量测试;

Ceph Test Framework,Teuthology:在 Ceph 上执行脚本化测试的软件集合;
CRUSH,Controlled Replication Under Scalable Hashing:这是 Ceph 用来计算对象存储位置的算法;
CRUSH rule:应用到特定 Pool 的 CRUSH 数据摆放算法;
Pool,Pools:池是用于存储对象的逻辑分区;

systemd oneshot:systemd 的 oneshot 类型的任务,以运行结束为目的,仅用于执行一次性任务(而非服务式的长期运行)
LVM tags:用于 LVM 卷和组的可扩展元数据。用于存储 Ceph 关于设备的特性信息以及其与 OSD 的关系

Ceph Cluster Map,Cluster Map:映射统称,其包括 Monitor map, OSD map, PG map, MDS map, CRUSH map;

特性特征

总体表现在 4 个方面:集群可靠性、集群扩展性、数据安全性、接口统一性;

冗余:通过高可用,能够实现无任何单故障点;可靠:每个组件必须尽可能拥有自我管理和自我修复能力;运行于现有商业硬件之上;纠删码;缓存;计数;

可靠性和高可用性

1)条带化、纠删码、副本:数据持久性、高可用性和离性能,并支持多站点和灾难恢复
2)动态调整块大小:无须停机即可扩展或缩小 Ceph 块设备
3)存储策略:使用 CRUSH 算法对数据进行跨节点复制,以实现故障域解决方案;通过 CRUSH 算法,Client 能够自己计算出存储位置,而不再需要 Server 提供中心化的节点来计算数据存放位置;通过 CRUSH 算法,存储单元能够自己完成数据的高可用,依旧无需中心化的控制节点来管理集群;
4)快照:整个池或单个块设备的快照
5)服务支持:SLA 支持的技术,保证实现产品升级和漏洞修补

灾备

Zone 和 Region:S3 对象拓扑;
全局性集群:具有对本地集群对象用户的全局命名空间
容灾:启用多站点复制来进行灾难恢复、数据分发、归档;

性能

BlueStore:相比于 Filestore,性能提升了 2 倍
客户端集群数据路径:客户端在整个集群中共享输入 / 输出负载
写时复制:加速使用同一镜像部团虚拟机
内存中客户端缓存:使用虚拟机 Hypervisor 缓存来增强 Client 的 I/O 性能
服务器端 Journal:序列化写入,提高数据写入效率

扩展性

容量:PB、EB 级数据存储;单集群可最多容纳 1024PB 数据
水平扩展的架构:集群能支持上干个存储节点,理论上可无限扩展
数据自动化平衡:数据均匀分布在整个集群中,无单点故障
滚动升级:组件能够线性扩展,集群升级不会影响数据的连续性访问

成本

后台服务容器化部署:利用集群硬件减少配置占用空间,并且同一台服务器上共存很多守护进程;
通用硬件:针对多种工作负载量身定制服务器服务和硬盘,以实现最优价格和性能组合
瘦置备:实现实例快速创建和超配;
兼容性:新节点增加后,不需要替换老旧节点;
条带化纠删码:节省成本的数据保护方式;
开源:其基于软件的、开源的、适应性强的;

接口和协议

1)对象、块、文件存储:对象存储支持 Amazone S3 和 OpenStack Swift API;块存储支持 Linux 集成以及基于内核的虚拟机 ( KVM) 程序;文件系统保证服务高可用,支持 NFS v4 和本地 API 协议;
2)RESTful API:可以编程方式管理所有集群存储功能,从而实现存储独立;
3)NFS、iSCSI、对象支持:能够为多个工作负载和应用程序构建通用存储平台;

管理和安全

1)自动化:基于 Ansible 工具实现自动化部署及升级扩展,或通过 cephadm 专用的命令行工具进行部署;
2)管理和监控:先进的 Ceph 监控和诊断信息,带有集成的本地监控仪表板,保证整个集群的图形可视化,包括集群和每个节点的使用情况以及性能统计信息;
3)认证和授权:集成 Mierosoft Active Direetory、LDAP、AWS Auth v4、Keystone v3
4)使用策略:对池、用户、存储桶或数据级别提供访问限制
5)加密:在集群范围内提供静态或用户自定义的嵌入对象中的加密方法
6)操作系统:在成熟的操作系统上部奢,具有很高的安全性,并得到协作的开源社区的支持,如 RHEL、CentOS 等

应用场景

块设备存储可以对接(IaaS),当前主流的 IaaS 云平台软件,我们的 PVE 的存储即为 Ceph;
对象存储可以对接网盘(owncloud)应用业务等;

参考文献

Intro to Ceph — Ceph Documentation