Ceph 专题

发布时间: 更新时间: 总字数:1689 阅读时间:4m 作者: 分享 复制网址

Ceph是一个开源软件定义的存储平台,它在单个分布式计算机集群上实现对象存储,并提供用于对象、块和文件级存储的接口。Ceph的主要目标是实现无单点故障的分布式存储。

实现原理

Ceph是一个对象(object)式存储系统,它将每一个待管理的数据(如一个文件)切分为一个或多个大小固定的对象数据(默认为4M),并以此为原子单元完成数据的存取。

RADOS(Reliable Automatic Distributed Object Store)存储集群(即可靠、自动化、分布式对象存储)系统是Ceph对象数据的底层存储服务。

libradosRADOS 存储集群的API,支持多种编程语言,如C、C++等

Ceph 是一种 SDS(Software-defined Storage) 的实现方式。

基本概念

存储设备

  • DAS(Direct-attached Storage)直连存储:IDE、SATA、SCSI…
  • NAS(Network-attached Storage)网络附加存储NFS、CIFS…
  • SAN(Storage Area Network)存储区域网络:SCSI、FC SAN、iSCSI…,主要修改底层数据传输介质,如光纤等

常见的设备厂商:华为、EMC、NetAPP、IBM等,可参考:OpenStack Block Storage (aka Cinder) Drivers

传统文件系统储存内容包括:

  • 元数据:数据的路由信息,如权限、属主、属组等,POSIX接口的标识
  • 数据

分布式文件系统:HDFS(Hadoop Distributed FileSystem)、GFS(google)、TFS(taobao)

  • shard: 数据存储时分片冗余存储
    • primary shard
    • replica shard

Ceph 架构

ceph architecture

RADOS Cluster 组成

  • Ceph Monitors(ceph-mon): 监视器,维护 集群状态图(MAPs of Cluster state),包括:monitor map、manager map、PG map、OSD map和 CRUSH map
    • 使用分布式一致性协作协议实现数据的一致性
    • 认证中心:使用 CephX 协议维护集群内/外个组件的的认证信息
    • 高可用至少需要3个节点
  • Ceph Managers(ceph-mgr): L版开始提供,(实现部分 Monitor 的功能)解决监控响应性能的问题
    • responsible for keeping track of runtime metrics and the current state of the ceph cluster, including storage utilization, current performance metrics, and system load.
    • python-based plugins,包括 Ceph manager Dashboard、REST API
    • 高可用至少需要2个节点
  • Ceph OSDs(object storage daemon, ceph-osd) 存储数据,管理数据复制、数据恢复、数据均衡,为 Ceph-mon 提供监控信息
    • 每个机器提供多个OSD(与磁盘一一对应)守护进程
    • 高可用至少需要3个OSD
  • MDSs(Ceph Metadata Server, ceph-mds): 存储 CephFS 元数据(Ceph Block Devices and Ceph Object Storage 不使用 mds)
    • 构建在 RADOS 存储集群之上的文件存取接口,和 RBD、RadosGW属同一级别,非Ceph基础组件,是 Ceph 客户端数据存取接口
    • 允许 POSIX 文件系统使用一些基础的命令(如ls, find等)
    • MDS 仅实现了分布式文件系统的控制平面,数据和元数据的存取依然由 RADOS 提供

RADOS 存储服务的客户端包括:

  • RadosGW: 对象存储,基于 RESTfull API 提供云对象存储
    • 依赖于 RADOS 集群上的守护进程(ceph-radosgw),基于 HTTP/HTTPs 协议提供 API 服务
  • RBD: 块存储,Ceph/RADOS Block Device,模拟为裸存储块设备,基于内核模块或librbd操作
    • 实现快照、复制等功能
    • RBD 接口不依赖任何守护进程
  • CephFS: 文件系统,提供兼容 POSIX 文件系统,承载文件的载体或解决方案,依赖于 ceph-mds,不依赖于 RADOS。可直接在系统挂载文件系统
  • librados 接口,需要用户自己开发实现,通过 SDK 实现 APP

其他概念:

  • Pool: 存储池,大小取决于存储设备的空间
  • PG(placement group): 归置组、安置组
    • 一个 Pool 由多个 PG 组成,有 PG 计算公式算出来的
  • OSD(Object Storage Device): 对应一个磁盘或目录,每一个磁盘称为以 OSD
    • 被 PG 管理
  • crushmap: 通过 CRUSH 算法实现文件存储位置
    • 一致性hash计算
  • RADOS Cluster: 多个 OSD 的 host 组成一个 RADOS Cluster
  • object

Ceph 存储文件的过程

  1. 通过 librados 实现的客户端,将 file 拆分为多个固定大小的存储对象 object
  2. 选择一个存储池 pool
  3. 根据对象名称做一致性hash计算(通过crush算法1),最总映射 某个 PG
  4. 将 PG(通过crush算法2)映射为 OSD
  5. OSD 冗余存放 object

Ceph 的管理

一般使用专门的节点管理Ceph集群

Ceph 的存储引擎

Ceph Storage Backend

  • FileStore(旧实现方式)
    • XFS 格式
    • omap 将元数据存放在 levelDB 上
  • BlueStore(L v12.2.z 出现,之后版本为默认配置),直接使用裸设备
    • OSD 使用 BlueFS 通过 RocksDB(key-value db) 存放 object 的元数据,且建议将 BlueFS 放置在 SSD/NVME 盘上

Ceph 的存储可靠性

  • 一主多从,冗余 OSD
  • 纠删码池,数据切分后存储到多个 OSD 上
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数