Ceph分布式存储初步认识

Posted Lansonli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ceph分布式存储初步认识相关的知识,希望对你有一定的参考价值。

目录

一、Ceph概述

1、背景

2、介绍

3、特点

高性能

高可用性

高扩展性

场景丰富

4、分布式存储系统横纵对比

二、Ceph架构设计

1、Ceph整体设计

基础存储系统RADOS 

基础库librado

高层应用接口

应用层

2、逻辑架构

3、Ceph专业术语


一、Ceph概述

1、背景

Ceph 是一个去中心化的分布式存储系统, 提供较好的性能、可靠性和可扩展性。 Ceph 项目最早起源于Sage就读博士期间的工作(最早的成果于 2004 年发表),并随后贡献给开源社区, 遵循 LGPL 协议 (LESSER GENERAL PUBLIC LICENSE 的简写,中文译为 较宽松公共许可证 )。在经过了数年的发展之后,目前已得到众多云计算厂商(OpenStack CloudStack OpenNebula Hadoop )的支持并被广泛应用。

2、介绍

Ceph 是一个可靠、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将 Ceph 分为三大块,分别是对象存储、块设备和文件系统服务。 Ceph 的主要优点是分布式存储,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,不存在传统的单点故障的问题,可以水平扩展。 Ceph 存储集群至少需要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必须要有元数据服务器(Metadata Server )。

3、特点

Ceph 适合跨集群的小文件存储, 拥有以下特点:

高性能

Client Server 直接通信, 不需要代理和转发; Client 不需要负责副本的复制, 有 Primary 主节点负责, 这样可以有效降低 clien 网络的消耗 ; 采用 CRUSH 算法,数据分布均衡,并行度高,支持上千个存储节点, 支持 TB PB 级数据。

高可用性

数据多副本, 支持故障域分隔,数据强一致性; 没有单点故障,较好的容错性, 有效支撑各种故障场景; 支持所有故障的检测和自动恢复,可以做到自动化管理; 支持并行恢复,能够极大的降低数据恢复时间, 提高数据的可靠性。

高扩展性

高度并行化设计,没有单个中心控制组件,所有负载都能动态的划分到各个服务器上。 去中心化、灵活、随节点增加线性增长。

场景丰富

支持三种存储接口类型 : 块存储、文件存储、对象存储。 同时支持自定义接口, C++ 为底层实现, 兼容多种语言。
  • 块存储: 将磁盘空间映射给主机使用, 适用 docker容器、虚拟机磁盘存储分配;日志存储, 文件存储。
  • 文件存储: 解决块存储无法共享问题, 在服务器架设FTPNFS服务器,适用目录结构的存储、日志存储等。
  • 对象存储: 大容量硬盘, 安装存储管理软件, 对外提供读写访问能力, 具备块存储的高速读写能力, 也具备文件存储共享的特性; 适用图片存储或视频存储。

4、分布式存储系统横纵对比

 

二、Ceph架构设计

1、Ceph整体设计

基础存储系统RADOS 

Reliable, Autonomic,Distributed Object Store ,即可靠的、自动化的、分布式的对象存储这就是一个完整的对象存储系统,所有存储在Ceph 系统中的用户数据事实上最终都是由这一层来存储的。而Ceph 的高可靠、高可扩展、高性能、高自动化等等特性本质上也是由这一层所提供的。

基础库librado

这层的功能是对 RADOS 进行抽象和封装,并向上层提供 API ,以便直接基于 RADOS (而不是整个Ceph)进行应用开发。特别要注意的是, RADOS 是一个对象存储系统,因此, librados 实现的 API也只是针对对象存储功能的。RADOS 采用 C++ 开发,所提供的原生 librados API 包括 C C++ 两种。

高层应用接口

这层包括了三个部分: RADOS GW RADOS Gateway )、 RBD Reliable Block Device )和 CephFS( Ceph File System ),其作用是在 librados 库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口。其中,RADOS GW 是一个提供与 Amazon S3 Swift 兼容的 RESTful API 的gateway,以供相应的对象存储应用开发使用。 RADOS GW 提供的 API 抽象层次更高,但功能则不如librados 强大。

应用层

这层是不同场景下对于 Ceph 各个应用接口的各种应用方式,例如基于 librados 直接开发的对象存储应用,基于RADOS GW 开发的对象存储应用,基于 RBD 实现的云硬盘等等。 librados RADOSGW的区别在于,librados 提供的是本地 API ,而 RADOS GW 提供的则是 RESTfulAPI 由于 Swift S3 支持的 API 功能近似,这里以 Swift 举例说明。 Swift 提供的 API 功能主要包括:
  • 用户管理操作:用户认证、获取账户信息、列出容器列表等;
  • 容器管理操作:创建/删除容器、读取容器信息、列出容器内对象列表等;
  • 对象管理操作:对象的写入、读取、复制、更新、删除、访问许可设置、元数据读取或更新等。

2、逻辑架构

 

3、Ceph专业术语

​​​​​​​

  • Monitors: Ceph监视器,Monitor维护着展示集群状态的各种图表,包括监视器图、OSD图、归置组(PG)图、和CRUSH图。
  • PGCeph归置组,每个Object最后都会通过CRUSH计算映射到某个PG中,一个PG可以包含多个Object。
  • OSD: Ceph的对象存储设备,OSD守护进程的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD守护进程的心跳来向Ceph Monitors 提供一些监控信息。
  • MDS: Ceph元数据服务器(MDS),为Ceph文件系统存储元数据。
  • CephFS: Ceph文件系统,CephFS提供了一个任意大小且兼容POSIX的分布式文件系统。
  • RADOS: Reliable Autonomic Distributed Object Store,表示可靠、自动、分布式的对象存储。Ceph中的一切都是以对象形式存储,RADOS就负责存储这些对象,RADOS层确保数据一致性和可靠性。
  • Librados librados 库是一种用来简化访问 RADOS 的方法,目前支持 php Python Ruby、 Java、 C C++ 语言。
  • RBD Ceph 的块设备,它对外提供块存储,可以被映射、格式化进而像其他磁盘一样挂载到服务器
  • RGW/RADOSGW Ceph 对象网关,它提供了一个兼容 S3 Swift restful API 接口。

以上是关于Ceph分布式存储初步认识的主要内容,如果未能解决你的问题,请参考以下文章

分布式ceph完整存储理论 -02

ceph

k8s 对接 ceph 实现持久化存储

k8s 对接 ceph 实现持久化存储

k8s 对接 ceph 实现持久化存储

Ceph概念介绍及组件介绍