清茶豆奶 · 2022年09月30日 · 广东

学一点Ceph知识:初识Ceph

Ceph是什么?

Ceph是一个开源的分布式存储系统,可大规模扩展、高性能、无单点故障,在普通的服务器上可以支持到PB级容量,商用机器上支持的容量可以达到EB级别。

Ceph的竞争力

市面上提供云存储的分布式系统如阿里云的OSS(底层存储框架为JindoFS),亚马逊的S3,Hadoop生态下的HDFS,OpenStack内的Swift,都是非常优秀、流行的存储解决方案,Ceph作为同类产品,仍然不逊色:

  • 更低的TCO(总体拥有成本),Ceph可以部署在普通的商用服务器上,比专有存储系统的预算更低。
  • Ceph的每一个组件都是可靠的并支持高可用。
  • 分布式存储,客户端动态地计算数据存储位置,不过度依赖元数据服务器。
  • Ceph集群内部发现的节点宕机,磁盘损坏等故障,Ceph集群能够利用副本数据进行自我修复,保证集群数据可用。
  • Ceph加入Linux内核主线。
  • Ceph能够同时提供对象存储、块存储、文件存储。

Ceph的统一存储方案

Ceph的统一存储方案同时满足对象存储、块存储和文件存储,并且Ceph已经加入Linux内核主线,意味着Ceph存储更加贴近OS层,统一存储方案架构图如下所示:

4.png

从上图可以知道,Ceph仅从软件层面就提供了对象、块和文件存储。对象存储要比块或者文件更加适应现在的混合的非结构化数据。

传统的文件存储系统中,文件是通过文件目录进行寻址的,庞大文件目录或深层次目录结构,均会影响文件搜索的效率,Ceph底层并不存在块和文件的管理,而是管理对象并且在对象之上支持基于块和文件的存储,对象的寻址通过唯一的标识符,并存储在扁平的寻址空间中,客户端使用CRUSH算法得到一个存储对象的存储位置,从根本上解决海量文件搜索慢的问题。

Ceph整体架构

Ceph集群主要由Monitor、OSD两个守护进程组成,每个守护进程相互独立,共同构建集群的完整功能特性,架构示意图如下:

5.png

简要阐述每个ceph组件的功能:

  • RBD,也叫Ceph块设备,原先叫做RADOS块设备,对外提供块存储,它可以像祼磁盘一样被映射、格式化、挂载到操作系统上。
  • RADOS GW,Ceph对象网关,简称为RGW,目前对Amazon S3和OpenStack对象存储API提供了兼容的Restful API接口,另外RGW还支持多租户和OpenStack的Keystone身份验证服务。
  • Ceph FS,Cehp文件系统,提供了一个任意大小且兼容POSIX的分布式文件系统,它依赖Ceph MDS(元数据)来跟踪文件层次结构。
  • librados库是RBD、RGW的基础,可以为Ceph FS提供POSIX接口,librados目前支持PHP、Ruby、Java、Python、C和C++语言,用来简化RADOS层的访问,并且提供librados API对RADOS进行本地化访问。
  • RADOS,全称是可靠、自动、分布式对象存储(Reliable Autonomic Distributed Oject Store),是Ceph集群的基础,RADOS负责Ceph中的所有数据都以对象形式存储。RADOS层提供的特性主要有:数据一致性、可靠性,数据迁移和再平衡。
  • MON,Ceph的monitor组件,将集群的状态保存在几个map结构里,如OSD、MON、PG和CRUSH,集群内所有的节点都向MON组件上报信息,monitor将每一个组件将上报的状态信息存储在不同的map里,monitor不存储实际的数据,只存储集群状态信息。
  • OSD,Ceph对外存储设备,负责数据读写操作,真正存储用户数据的组件,一个OSD守护进程与集群的一个物理磁盘绑定,一般来说,用于部署Ceph集群物理机器(或虚拟机)的磁盘数量与OSD守护进程数量是一样的。
  • MDS,元数据服务器,只有Ceph FS才需要,对象存储场景不需要使用到MDS。

小结

本篇简单介绍了分布式存储组件Ceph的基本特性,适用的存储方案,以及Ceph架构的介绍,先简单了解一下Ceph组件职责,后续会针对每个组件作更详细的介绍,希望对你有帮助,谢谢。

推荐阅读
关注数
3
文章数
51
公众号[Java架构社区],专注高并发架构技术干货,持续学习,持续分享
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息