Ceph实战(一)-分布式存储介绍与原理架构概述

9 篇文章 7 订阅

最近工作中有涉及到CEPH相关的内容,所以打算开一个CEPH专栏来进行总结,学习CEPH还有一个重要原因就是我同时要补充kubernetes、rancher专栏必定会涉及到有状态的存储资源抽象(StatefulSet、PV、PVC、StorageClass等),首先绕不开的就是高可用的分布式存储系统,虽然有很多人反对将持久化数据以容器的方式来部署,说容器化部署不是银弹,但未来发展方向就是容器化,并且也是微服务2.0的未来以及谷歌以后的发展大方向,所以高可用分布式存储系统也必然是未来绕不开的那一步。

一、Ceph 简介

Ceph 是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。

Ceph 项目最早起源于 Sage 就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。

RedHat 及 OpenStack 都可与 Ceph 整合以支持虚拟机镜像的后端存储。

二、Ceph特点

高性能

a. 摒弃了传统的集中式存储元数据寻址的方案,采用 CRUSH 算法,数据分布均衡,并行度高。
b. 考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
c. 能够支持上千个存储节点的规模,支持 TB 到 PB 级的数据。


高可用性

a. 副本数可以灵活控制。
b. 支持故障域分隔,数据强一致性。
c. 多种故障场景自动进行修复自愈。
d. 没有单点故障,自动管理。


高可扩展性

a. 去中心化。
b. 扩展灵活。
c. 随着节点增加而线性增长。

特性丰富

a. 支持三种存储接口:块存储、文件存储、对象存储。
b. 支持自定义接口,支持多种语言驱动。

三、Ceph 架构

Ceph 为普通硬件设计,这可使构建、维护 PB 级数据集群的费用相对低廉。规划集群硬件时,需要均衡几方面的因素,包括区域失效和潜在的性能问题。硬件规划要包含把使用 Ceph 集群的 Ceph 守护进程和其他进程恰当分布。通常,我们推荐在一台机器上只运行一种类型的守护进程。我们推荐把使用数据集群的进程(如 OpenStack 、 CloudStack 等)安装在别的机器上。

       

建议每台机器最少两个千兆网卡,现在大多数机械硬盘都能达到大概 100MB/s 的吞吐量,网卡应该能处理所有 OSD 硬盘总吞吐量,所以推荐最少两个千兆网卡,分别用于公网(前端)和集群网络(后端)。集群网络(最好别连接到国际互联网)用于处理由数据复制产生的额外负载,而且可防止拒绝服务攻击,拒绝服务攻击会干扰数据归置组,使之在 OSD 数据复制时不能回到 active + clean 状态。请考虑部署万兆网卡。通过 1Gbps 网络复制 1TB 数据耗时 3 小时,而 3TB (典型配置)需要 9 小时,相比之下,如果使用 10Gbps 复制时间可分别缩减到 20 分钟和 1 小时。在一个 PB 级集群中, OSD 磁盘失败是常态,而非异常;在性价比合理的的前提下,系统管理员想让 PG 尽快从 degraded (降级)状态恢复到 active + clean 状态。另外,一些部署工具(如 Dell 的 Crowbar )部署了 5 个不同的网络,但使用了 VLAN 以提高网络和硬件可管理性。 VLAN 使用 802.1q 协议,还需要采用支持 VLAN 功能的网卡和交换机,增加的硬件成本可用节省的运营(网络安装、维护)成本抵消。使用 VLAN 来处理集群和计算栈(如 OpenStack 、 CloudStack 等等)之间的 VM 流量时,采用 10G 网卡仍然值得。每个网络的机架路由器到核心路由器应该有更大的带宽,如 40Gbps 到 100Gbps 。

Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能,它可靠性高、管理简便、并且是自由软件。 Ceph 的强大足以改变贵公司的 IT 基础架构、和管理海量数据的能力。Ceph 可提供极大的伸缩性——供成千用户访问 PB 乃至 EB 级的数据。 Ceph 节点以普通硬件和智能守护进程作为支撑点, Ceph 存储集群组织起了大量节点,它们之间靠相互通讯来复制数据、并动态地重分布数据。

从架构图中可以看到最底层的是RADOS,RADOS自身是一个完整的分布式对象存储系统,它具有可靠、智能、分布式等特性,Ceph的高可靠、高可拓展、高性能、高自动化都是由这一层来提供的,用户数据的存储最终也都是通过这一层来进行存储的,RADOS可以说就是Ceph的核心。

RADOS系统主要由两部分组成,分别是OSD和Monitor。

基于RADOS层的上一层是LIBRADOS,LIBRADOS是一个库,它允许应用程序通过访问该库来与RADOS系统进行交互,支持多种编程语言,比如C、C++、Python等。

基于LIBRADOS层开发的又可以看到有三层,分别是RADOSGW、RBD和CEPH FS。

RADOSGW:RADOSGW是一套基于当前流行的RESTFUL协议的网关,并且兼容S3和Swift。

RBD:RBD通过Linux内核客户端和QEMU/KVM驱动来提供一个分布式的块设备。

CEPH FS:CEPH FS通过Linux内核客户端和FUSE来提供一个兼容POSIX的文件系统。

四、 Ceph 核心组件及概念介绍

Monitor:一个 Ceph 集群需要多个 Monitor 组成的小集群,它们通过 Paxos 同步数据,用来保存 OSD 的元数据。 

OSD:全称 Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个 Ceph 集群一般都有很多个 OSD。

MDS:全称 Ceph Metadata Server,是 CephFS 服务依赖的元数据服务。

Object:Ceph 最底层的存储单元是 Object 对象,每个 Object 包含元数据和原始数据。

PG:全称 Placement Grouops,是一个逻辑的概念,一个 PG 包含多个 OSD。引入 PG 这一层其实是为了更好的分配数据和定位数据。

RADOS:全称 Reliable Autonomic Distributed Object Store,是 Ceph 集群的精华,用户实现数据分配、Failover 等集群操作。 

Libradio:为 Rados 提供库,因为 RADOS 是协议很难直接访问,因此上层的 RBD、RGW 和 CephFS 都是通过 librados 访问的,目前提供 PHP、Ruby、Java、Python、C和C++支持。

CRUSH:Ceph 使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。

RBD:全称 RADOS block device,是 Ceph 对外提供的块设备服务。 

RGW:全称 RADOS gateway,是 Ceph 对外提供的对象存储服务,接口与 S3 和 Swift 兼容。 

CephFS:全称 Ceph File System,是 Ceph 对外提供的文件系统服务。

五、块存储 

典型设备:
磁盘阵列,硬盘
主要是将裸磁盘空间映射给主机使用的。

优点:
a. 通过 Raid 与 LVM 等手段,对数据提供了保护。
b. 多块廉价的硬盘组合起来,提高容量。
c. 多块磁盘组合出来的逻辑盘,提升读写效率。
   
缺点:
a. 采用 SAN 架构组网时,光纤交换机,造价成本高。  
b. 主机之间无法共享数据。

使用场景:
a. docker 容器、虚拟机磁盘存储分配。
b. 日志存储。
c. 文件存储。
d. …

六、文件存储

典型设备:
FTP、NFS 服务器
为了克服块存储文件无法共享的问题,所以有了文件存储。
在服务器上架设 FTP 与 NFS 服务,就是文件存储。

优点:
a. 造价低,随便一台机器就可以了。
b. 方便文件共享。

缺点:
a. 读写速率低。
b. 传输速率慢。

使用场景:
a. 日志存储。
b. 有目录结构的文件存储。
c. …

七、对象存储

典型设备:
内置大容量硬盘的分布式服务器(swift, s3)
多台服务器内置大容量硬盘,安装上对象存储管理软件,对外提供读写访问功能。

优点:
a. 具备块存储的读写高速。
b. 具备文件存储的共享等特性。

使用场景:
(适合更新变动较少的数据)
a. 图片存储。
b. 视频存储。
c. …

八、Ceph Pool 和 PG 分布情况

  640?wx_fmt=png

说明:
a. pool 是 ceph 存储数据时的逻辑分区,它起到 namespace 的作用。
b. 每个 pool 包含一定数量(可配置)的 PG。
c. PG 里的对象被映射到不同的 OSD 上。
d. pool 是分布到整个集群的。
e. pool 可以做故障隔离域,根据不同的用户场景不一进行隔离。

  九、Ceph 数据扩容 PG 分布

场景数据迁移流程:

a. 现状3个 OSD, 4个 PG

b. 扩容到4个 OSD, 4个 PG

现状:

640?wx_fmt=png

扩容后:

640?wx_fmt=png

说明:
1、每个 OSD 上分布很多 PG, 并且每个 PG 会自动散落在不同的 OSD 上。
2、如果扩容那么相应的 PG 会进行迁移到新的 OSD 上,保证 PG 数量的均衡。

到此我们基本对CEPH存储方式与原理架构及概念有了一个基本的认识,之后我们就可以开始CEPH高可用集群部署了。

 

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BasicLab基础架构实验室

你的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值