Ceph简介

1 概念

ceph是一套可靠的、可扩展的、统一的分布式存储系统。

Ceph可以同时提供对象存储RADOSGW、块存储RBD、文件存储Ceph FS三种功能。

对象存储可以对接网盘应用业务

块存储可以对接当前主流的IaaS云平台软件,如open stack、cloudstack、zstack、eucalyptus等

文件系统文件上不成熟,官方不建议生产环境使用

2 生态

Ceph作为开源项目,遵循LGPL协议,使用C++语言开发

3 功能组件

Ceph提供了RADOS、OSD、MON、LIBRADOS、RBD、RGW、Ceph FS等功能组件,RADOS存储是支撑上层组件的基础

一个Ceph集群至少需要一个Ceph Monitor、两个Ceph的OSD。运行Ceph文件系统的客户端时必须要Ceph的MDS(元数据服务)

RADOS:

>>>

本身是一个完整的对象存储系统,具备自我修复等特性。

物理上,RADOS由大量的存储设备节点组成,每个节点拥有自己的硬件资源(CPU、内存、硬盘、网络),并运行这操作系统和文件系统

RADOS系统主要由两个部分组成:OSD和Monitor

Ceph OSD:

Object Storage Device,主要功能包括存储数据,处理数据的复制、恢复、回补、平和数据分布,并将一些相关数据提供给Ceph Monitor,如心跳等。每个disk、分区都可以成为一个OSD。

由数目可变的大柜面OSD组成集群,负责存储所有的Objects数据。

Ceph OSD操作必须在一个有效的linux分区的物理磁盘驱动器上,Linux分区可以是BTRFS、XFS或者EXT4分区。

Ceph使用日志文件系统,在提交数据到后背存储器之前,Ceph首先讲数据写入成为一个单独的存储区,该区域被称为journal,这是缓冲器分区在相同或单独磁盘作为OSD,一个单独的SSD磁盘或分区,甚至一个文件系统。在这种机制下,Ceph任何写入首先是日志,然后是后备存储。

journal持续到后备存储同步,每隔5s,journal空间越大越好。journal允许ceph osd功能很快做小的写操作,一个随机写入首先写入在上一个连续类型的journal,然后刷新到文件系统。可以使用SSD盘作为journal盘能获得相对较好的性能,所有的客户端写操作都写入到超高速SSD日志,然后刷新到磁盘。

Ceph Monitor:

Ceph的监控器,主要功能是维护整个集群健康状态,提供一致性的决策,包含了Monitor map、OSD map、PG(Placement Group) map和CRUSH map,这些map被统称为cluster map。

由少量Monitors组成的强耦合、小规模集群,负责管理cluster map。cluster map是整个RADOS系统的关键数据结构,管理集群中的所有成员、关系和属性等信息及数据的分发。

对于RADOS系统,节点组织管理和数据分发策略均由内部的Mon全权负责。

节点数为奇数,推荐为3。

Monitor Map:

包括有关monitor节点端到端的信息,其中包括ceph集群id,监控主机名和IP地址和端口号,还存储了当前版本信息以及最新更改信息。

查看集群的monitor map命令

#ceph mon dump

OSD Map:

包括一些常用信息,如集群ID,创建OSD Map的版本信息和最后修改信息,以及pool相关信息,副本书以及PGP,还包括OSD信息。

查看集群的OSD Map命令

#ceph osd dump

PG Map:

包括当前PG版本、时间戳、最新的OSD Map版本信息、空间使用比例、接近占满比例信息,同时,也包括每个PG ID、对象数目、状态、OSD的状态以及深度清理的详细信息。

查看PG Map命令

#ceph pg dump

CRUSH Map:

包括集群存储设备信息,故障域层测结构和存储数据时定义失败域规则信息。

查看CRUSH Map命令:

#ceph osd crush dump

 

CRUSH:

>>>

CRUSH是一种基于伪随机控制数据分布、控制的算法。在Ceph及群众,CRUSH只需要一个简洁而层次清晰的设备描述,包括存储集群和副本放置策略,就可以有效的把数据对象映射到存储设备上,且这个过程是完全分布式的,在集群系统中的任何一方都可以独立计算任何对象的位置;此外,CRUSH能够处理存储设备的变更,并最小化由于存储设备的变更而导致的数据迁移。

 

<<<

<<<

 

LIBRADOS:

>>>

LIBRADOS层的功能是对RADOS进行抽象和封装,并向上层提供API,实现的API是针对对象存储功能的。

物理上,LIBRADOS和基于其上开发的应用位于同一台机器,因而也被称为本地API。应用调用北极上的LIBRADOS API,再有后者通过socket与RADOS集群中的节点通信并完成各种操作。

<<<

 

RADOSGW:

>>>

RADOSGW功能特性基于LIBRADOS之上,提供当前流行的RESTful协议的网关,并兼容S3和Swift接口

<<<

 

RBD

>>>

RBD (Rados Block Device)功能基于LIBRADOS之上,提供了一个标准的块设备接口,通过LIBRBD创建一个块设备,通过QEMU/KVM附加到vm上,作为传统的块设备来用,同时也支持快照、COW(Copy On Write)等功能

<<<

 

MDS

>>>

Ceph MDS:Ceph Metadata Server,主要保存的是Ceph文件存储的元数据。Ceph的块存储和对象存储都不需要Ceph MDS。

<<<

 

技术特性:集群可靠性、集群扩展性、数据安全性、接口统一性

与传统的分布式数据存储相比,RADOS最大的特点如下:

a.将文件映射到Object后,利用Cluster Map通过CRUSH计算而不是查找表方式定位文件数据到存储设备中的位置。优化了传统的文件到块的映射和BlockMap管理。

b.RADOS充分利用了OSD的只能特点,将部分任务授权给OSD,最大程度的实现可扩展。

 

参考:《Ceph分布式存储实战》

posted @ 2023-12-13 20:01  打破砂锅闻到底儿  阅读(168)  评论(0)    收藏  举报