Ceph在手,天下我有

有人问我,你是如何做到统一存储的?我微微一笑,大声告诉他:Ceph在手,天下我有。

Ceph是一个统一的分布式存储系统,旨在实现出色的性能,可靠性和可扩展性。认了OpenStack做大哥之后更是一发不可收拾,受到大家广泛的关注。当然这都是因为它能提供多样可靠稳定的存储服务。

Ceph支持三种调用模式,这三种方式可以一同进行使用:

  1. 对象存储(Object):有原生的API,而且也兼容Swift和S3的API
  2. 块存储(Block):支持精简配置、快照、克隆
  3. 文件系统挂载(File):Posix接口,支持快照

是不是心间突生豪气,Ceph在手,当存尽天下所有AVI?

还记得上篇我们划重点的四个问题吗?在Ceph中是怎样去实现以实现可扩展、高性能、可靠性的呢?

  1. 原始存储格式 or 特殊存储格式,通过什么格式存储才能方便的管理数据,保证数据的迁移和安全。
  2. 大文件 or 小文件,文件系统适合大文件还是小文件存储,如何提供I/O效率。
  3. 数据高可用 or 空间利用率,通过复制副本技术提高数据可用性必然会降低空间利用率,应该如何取舍。
  4. 是否有元数据服务,元数据服务是保存存储数据元数据信息的服务,读写数据都需要连接元数据服务器保证一致性。存在元数据服务势必会存在单点问题和性能瓶颈问题。

我们先来看一下Ceph的基础架构图:

RADOS:位于Ceph的最下层,Reliable, Autonomic, Distributed Object Store,即可靠的、自动化的、分布式的对象存储。Ceph所有的存储功能都是基于RADOS实现,在RADOS中一个Object的大小(通常为2MB或4MB),以便实现底层存储的组织管理。所以Ceph底层也是将文件分割成多个小文件的方式进行存储的。

librados:这一层的功能是对RADOS进行抽象和封装,并向上层提供API,以便直接基于RADOS(而不是整个Ceph)进行应用开发。目前提供PHP、Ruby、Java、Python、C和C++支持,通用性很重要。

RADOS GW(RADOS Gateway):提供与Amazon S3和Swift兼容的RESTful API的gateway,以供相应的对象存储应用开发使用。RADOS GW提供的API抽象层次更高,但功能则不如librados强大。

RBD(Reliable Block Device):提供了一个标准的块设备接口,常用于在虚拟化的场景下为虚拟机创建volume

Ceph FS:是一个POSIX兼容的分布式文件系统

上层这三个模块都位于Ceph的应用接口层,其作用是在librados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口。

通过上面对Ceph架构的简单介绍我们可以知道Ceph也是以特殊存储格式进行存储的,将文件切分成2M~4M的Object存储到RADOS中,对于小文件和大文件都支持。

Ceph有两个很重要的守护进程:OSDs and Monitors。

OSD(Object Storage Device):负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD,支持自动备份和恢复。

Monitor:一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos协议(Zookeeper也是通过Paxos实现一致性)同步数据,用来保存OSD的元数据。

由此可见Ceph也需要元数据服务,但是实现了去中心化(划重点,需要理解OSD和Monitor的功能,如果对HBase了解的话,我觉得可以类比一下Zookeeper和HRegionServer的关系)。

Ceph特性

CRUSH(Controlled Replication Under Scalable Hashing)算法,实现去中心化,没有单点故障(下篇会讲到)

统一的存储架构,提供不同的存储解决方案

支持副本和EC两种数据冗余方式

自我管理,自我修复

专为云基础架构和新兴工作负载而设计

横向扩展、动态伸缩、冗余容灾、负载平衡等

少年,Ceph了解一下?

参考: Ceph官方文档

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

备案不被K:利用关站保护或搜索引擎线路解析确保无痛备案

最新消息:张戈博客已分享更完善的无痛备案技巧,欢迎查看!==>http://zhangge.net/5017.html 相信很多站长不想备案的绝大部分原因有 2...

6465
来自专栏申龙斌的程序人生

用程序生成群头像全家福,增强社群的归属感

现在微信群越来越多了,群主为了增进群成员的归属感和互动也是想尽了办法。我参加IP潜能营有3周了,期间发现了Jesse1981的一篇文章,她用了多种程序和工具生成...

39110
来自专栏aCloudDeveloper

内存虚拟化

虚拟内存 我们知道,早期的计算机内存,只有物理内存,而且空间是极其有限的,每个应用或进程在使用内存时都得小心翼翼,不能覆盖别的进程的内存区。 为了避免这些问题,...

2528
来自专栏微服务生态

Log4j2的性能为什么这么好?

说明: 这个是logback日志的压测数据,在开发机(双核四线程),高配开发机(四核八线程)和服务器(32核)压测的效率都差不多,而且线程开多的时候,性能反而...

2243
来自专栏大魏分享(微信公众号:david-share)

容器的存储和网络开源方案该咋选?

容器存储的选择 时至今日,企业客户运行容器的,编排工具大多数选择K8S。 因此,我们先到社区里看看,目前K8S支持的持久存储,其实也就是PV支持的存储类型。 ...

4354
来自专栏landv

关于金蝶k3 wise供应生门户登陆界面屏蔽业务账套多余功能模块设置方法

1195
来自专栏liulun

基于.net开发chrome核心浏览器【二】

一:上一篇的链接: 基于.net开发chrome核心浏览器【一】 二:相关资源介绍: chrome Frame:   让IE有一颗chrome的心,看起来不错,...

39310
来自专栏安富莱嵌入式技术分享

【安富莱专题教程第6期】SEGGER的J-Scope波形上位机软件,RTT模式波形上传速度可狂飙到500KB/S左右

说明: 1、在实际项目中,很多时候,我们需要将传感器或者ADC的数值以波形的形式显示。通常的解决办法是用串口上位机,USB接口上位机或者MDK的逻辑分析仪功能,...

1393
来自专栏数据和云

守得云开见月明:一次ASM存储高可用故障解决过程分析

作者 | 姜劲松,云和恩墨专家支持部Oracle技术专家,Oracle OCP,MySQL OCP,RHCE等认证专家。长期服务移动运营商行业客户,精通 ora...

2033
来自专栏编舟记

怎样才算学会PythonPython 实践基础

假如你已经有了编程基础,那么学习一门新语言的困难点绝对不在语法、语义和风格等代码层面上的,而在于语言范式(OO,FP还是Logic),语言的生态(如:依赖管理和...

1732

扫码关注云+社区

领取腾讯云代金券