Ceph简介


1. Ceph简介和特性

img

Ceph是一种开源的软件定义存储系统。它也是一款以对象存储技术(独立存储技术)为核心,并在此基础之上实现块存储、文件存储的分布式存储系统。

Ceph可以实现NAS和SAN以及OSS对象存储功能。

Ceph诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目。Ceph可以部署在任意x86服务器上工作,具有良好的扩展性、兼容性和可靠性。

它能对外提供文件系统服务(cephfs)、块服务(rbd)和对象存储服务(rgw),是一种统一存储系统。Ceph架构支持海量数据存储,集群可以扩展至PB容量,系统本身无热点数据,数据寻址依赖计算而不是查找,并能做到数据状态自维护,数据自修复,是一款优秀的分布式存储系统。

Ceph 项目最早起源于 Sage 就读博士期间的工作(最早的成果于2004年发表,论文发表于2006年),并随后贡献给开源社区。

ceph官网:https://ceph.com/en/

ceph文档官网:https://docs.ceph.com/en/latest

github地址:https://github.com/ceph/ceph

2.为什么 Ceph 这么火?

  • 功能强大:Ceph 能够同时提供对象存储(访问是基于通过URL的方式),块存储(SAN)和文件系统存储(NAS)三种存储服务的统一存储架构
  • 可扩展性:Ceph 得以摒弃了传统的集中式存储元数据寻址方式,通过内置Crush算法的寻址操作,有相当强大的扩展性
  • 高可用性:Ceph 数据副本数量可以由管理员自行定义,并可以通过 Crush 算法指定副本的物理存储位置以分割故障域,支持数据强一致性的特性也使得Ceph具有了高可靠性,可以忍受多种故障场景并自动尝试
  • 并行修复:RadosGW、RBD和CephFS都是RADOS存储服务的客户端,它们把RADOS的存储服务接口(librados)分别从不同的角度做了进一步的抽象,因而各自适用于不同的应用场景。

3.Ceph运行原理

Ceph 把每一个待管理的数据流(例如一个文件)切分成一到多个固定大小的对象数据,并以其为原子单元完成数据存取。(横向扩展方便,内置了副本技术,副本数默认是3。单机是无法实现Ceph,只能通过集群来实现Ceph)

Ceph通过内部的 crush 机制,实时方式计算出一个文件应该存储到哪个存储对象里面,从而实现快速查找对象的一种方式。

对象数据的底层服务是由多个主机(Host)组成的存储集群,该集群也称之为 RADOS(Reliable Automatic Distributed Object Store)存储集群,即可靠,自动化,分布式对象存储系统。

librados 是 RADOS 存储集群的 API,它支持 C、C++、Java、Python、Ruby 和PHP等编程语言。

img

在RADOS集群之上,Ceph构建了块存储、文件存储和对象存储等存储形态。由于RADOS集群本身是以对象为粒度进行数据存储的,因此上述三种存储形态,在最终存储数据的时候都划分为对象。也就是说,Ceph 将三种三种存储类型统一在一个平台中,从而实现了更加强大的适用性。

img

OSD - 对象存储守护进程 (OSD) 存储对象。

  • OSD 是在存储服务器上运行的进程。OSD 负责 管理单个存储单元,通常是单个磁盘。

MON - 是Ceph监控组件(Monitor,简称 MON)负责维护集群的状态和元数据信息。

LIBRADOS - 通过自编程方式实现数据的存储能力

RADOSGW - 通过标准的RESTful接口,提供一种云存储服务

RBD - 将ceph提供的空间,模拟成一个个的独立块设备。当ceph环境部署完成之后,服务端就准备好RBD接口

CFS - 通过一个标准的文件系统接口来进行数据的存储

img

参考地址:https://docs.ceph.com/en/pacific/_images/stack.png

image-20241016201656959

3.Ceph 组件

image-20241016201738910

4.Ceph 网络模型

Ceph 生成环境中一般分为两个网段:

  • 公有网络:用于用户的数据通信,用户通过公有网络来访问Ceph集群
  • 集群网络:用于集群内部的管理通信,Ceph集群组件之间的通信网络,例如:数据交换

img

5.Ceph 版本

每个Ceph的版本都有一个英文的名称和一个数字形式的版本编号。

第一个Ceph版本编号是 0.1,发布于 2008 年 1 月,之后是 0.2,0.3,… 多年来,版本号方案一直没变。

2015 年 4月 0.94.1(Hammer 的第一个修正版)发布后,为了避免 0.99(以及0.100胡总1.00?),制定了新的策略。

x 将从 9 算起,它代表版本名称 Infernalis (I 是第九个字母),这样第九个发布周期的第一个开发版就是 9.0.0;后续的开发版依次是 9.0.1、9.0.2 等等

x.0.z - 开发版(测试环境,个人爱好可以使用)

x.1.z - 候选版(测试环境,个人爱好可以使用)

x.2.z - 稳定,修正版(生产环境使用)

Ceph 版本说明:

https://docs.ceph.com/en/latest/releases/

img

6.Ceph 部署方法介绍

由于Ceph组件众多以及环境复杂,所以官方提供了多种的快速部署工具和方法。

参考资料:

https://docs.ceph.com/en/pacific/install/

image-20241016202024062