Ceph分布式存储

目录

数据存储的三大类型

什么是Ceph?

Ceph简介

Ceph优势

Ceph架构

Ceph核心组件

实体组件

虚拟组件

OSD存储引擎

Ceph数据的存储过程

Ceph版本发行生命周期


数据存储的三大类型

块存储

  • 存储设备和客户端主机是一对一的关系,块存储设备只能保障一个主机挂载使用,数据以块为单位进行存储的。
  • 典型代表:硬盘

文件存储

  • 一对多的关系,能被多个主机同时挂载使用,数据以文件的形式存储的,其中文件的元数据和实际数据是分开存储的,并且有目录的层级关系。
  • 典型代表:NFS、CIFS

对象存储

  • 一对多的关系,能被多个主机或应用服务同时通过API接口访问使用,数据以文件的形式存储,一个文件即是一个对象(object),文件元数据和实际数据是存在一起的。文件是扁平化方式存储的,且没有目录的层级关系。
  • 典型代表:MinIO、OSS(阿里云)、S3(AWS亚马逊云)、OBS(华为云)

什么是Ceph?

Ceph简介

  • 是用C++开发的一款开源的分布式存储系统
  • 存储机制:把数据分片成对象,分散存储到多个节点中
  • 特点:具有高可扩展性、高性能、高可靠性,还集块存储、文件存储、对象存储功能于一身

Ceph优势

高扩展性

  • 去中心化,支持使用普通X86服务器,支持上千个存储节点的规模,支持TB到EB级的扩展。

高性能

  • 摒弃了传统的集中式存储元数据寻址的方案,采用 CRUSH 算法,数据分布均衡,并行度高。

高可靠性

  • 没有单点故障,多数据副本,自动管理,自动修复。

功能强大

  • Ceph是个大一统的存储系统,集块存储接口(RBD)、文件存储接口(CephFS)、对象存储接口(RadosGW)于一身,因而适用于不同的应用场景。

Ceph架构

从下往上,可以将Ceph系统分为四个层次

RADOS对象存储系统(统一存储池)

  • 提供存储能力的。ceph中的一切都是以对象形式存储的,RADOS就是负责存储这些对象的,并保证数据的一致性和可靠性。

LibRADOS对象访问接口

  • 提供访问存储接口给客户端使用。支持用户使用c、C++、java、python等编程语言二次开发自定义的访问接口。

Ceph默认提供三个接口

  • RBD块存储接口、RGW对象存储接口、CephFS文件存储接口。

客户端(物理机/虚拟机/容器/应用APP)

  • 通过接口在Ceph进行数据读写的终端。

Ceph核心组件

  • Ceph是一个对象式存储系统,它把每一个待管理的数据流(如文件等数据)切分为一到多个固定大小(默认4兆)的对象数据(Object),并以其为原子单元(原子是构成元素的最小单元)完成数据的读写。

实体组件

OSD(守护进程 ceph-osd)

  • 负责存储数据和管理数据,一般一个磁盘对于一个OSD;还负责响应客户端的读写请求 。
  • 通常至少需要3个OSD来实现冗余和高可用性。

Monitor(守护进程 ceph-mon)

  • 负责保存OSD的元数据,维持Ceph集群状态的各种映射视图Map(用于监控全局状态的),还负责管理客户端的认证和授权。

Manager(守护进程 ceph-mgr)

  • 负责跟踪Ceph集群性能状态和监控指标,暴露接口给监控系统获取监控指标数据。

MDS(守护进程 ceph-mds)

  • 负责保存CephFS文件存储系统的元数据,管理目录接口,仅在使用cephFS文件存储接口功能的时候需要安装

虚拟组件

PG(归置组)

  • 可理解成保存OSD位置的索引,一个PG可以包含多个数据对象(object),一个数据对象只能属于一个PG。
  • 它在数据寻址时类似于数据库中的索引:Ceph 先将每个对象数据通过HASH算法固定映射到一个 PG 中,然后将 PG 通过 CRUSH 算法映射到 OSD。

Pool(资源池/存储池)

  • 可理解成存放PG的namespace命名空间,一个Pool可包含多个PG,同一个Pool里的PG不能同名,不同Pool里的PG可以同名。
  • 存储对象的逻辑分区,它起到 namespace 的作用。每个 Pool 包含一定数量(可配置)的 PG。Pool 可以做故障隔离域,根据不同的用户场景统一进行隔离。

OSD存储引擎

  • 默认使用BlueStore,将数据对象直接存储在块设备上,相较于FileStore(存储在文件系统上的)具有更好的数据读写性能和可靠性

Ceph数据的存储过程

  1. 文件会默认以4M大小进行分片成一个或多个数据对象(object)
  2. 每个数据对象都有一个oid(由文件ID(ino)和分片编号(non)组成),通过对oid使用hash算法得到一个16进制的数值,再除以Pool里的PG总数取余,获取到数据对象的pgid
  3. 通过对pgid使用crush算法获取到PG所映射的OSD的ID,如果是多副本,则会有多个OSD的ID(PG和OSD的映射关系是在创建Pool的时候就确定好了的)
  4. 将数据对象存储到PG所映射的OSD里

Ceph版本发行生命周期

  • Ceph从Nautilus版本(14.2.0)开始,每年都会有一个新的稳定版发行,预计是每年的3月份发布,每年的新版本都会起一个新的名称(例如,“Mimic”)和一个主版本号(例如,13代表Mimic,因为“M”是字母表的第13个字母)。
  • 版本号的格式为 x.y.z,x 表示发布周期(例如,13 代表 Mimic,17 代表 Quincy),y 表示发布版本类型,即                                                                                                                          x.0.z :y等于 0,表示开发版本                                                                                              x.1.z :y等于 1,表示发布候选版本(用于测试集群)                                                            x.2.z :y等于 2,表示稳定/错误修复版本(针对用户)
  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值