首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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 容器、虚拟机磁盘存储分配;日志存储, 文件存储。
  • 文件存储: 解决块存储无法共享问题, 在服务器架设 FTP 和 NFS 服务器,适用目录结构的存储、日志存储等。
  • 对象存储: 大容量硬盘, 安装存储管理软件, 对外提供读写访问能力, 具备块存储的高速读写能力, 也具备文件存储共享的特性; 适用图片存储或视频存储。

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 图。
  • PG:Ceph 归置组,每个 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 接口。
  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/51a5045e10b407e8b6e23c99d
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券