Ceph学习笔记(1)- 架构概述
简介
Ceph的目标是采用商业硬件来构建大规模的、具有高可用、高扩展、高性能的分布式存储系统,ceph具有如下特点:
- 软件定义存储:Ceph不需要特定的硬件,在主流的Linux发行版等类Unix操作系统上均可运行
- 分布式存储:得意与计算寻址让Ceph客户端可以直接与服务端任意节点通信,避免因存在访问热点产生的性能瓶颈,这也是他可以轻易管理PB级以上规模集群的重要原因
- 统一存储:Ceph支持传统的块存储(RBD)、文件系统存储(Ceph fs)与新兴的对象存储协议(RADOSGW)
架构
Ceph采用存储应用与存储服务完全分离(Client/Server)的模式,基于Rados对外提供服务。客户端可以直接通过LIBRADOS访问RADOS系统,也可以调用在LIBRADOS上封装的Radosgw、librbd、libcephfs这些接口访问存储。

图1 Ceph架构图
RADOS网关接口(RGW):如图1,RGW提供对象存储服务,通过librados允许APP直接与Ceph对象存储建立连接,基于librados封装的librgw也提供了与Amazon S3协议和OpenStack Swift协议兼容的RESTful API。可以将它理解为对文件(对象)进行上传、下载、查询、删除等。
- 对象存储采用扁平化目录结构,利于进行大规模的扩容。
- S3/Swift接口均分三级:Account/Bucket/Object(账户/桶/对象)
RADOS块设备(RBD)接口:如图1,Ceph块设备,提供持久块存储,并将数据分散到不同OSD上,是一个分布式的块设备。与传统的SAN存储类似,RBD可以通过SCSI或FC给应用提供一个独立的LUN或者卷。
- 在用户态,通过QEMU Driver供虚拟机作为磁盘使用
- 在操作系统内核态将块设备映射给物理主机,供物理主机使用
Ceph文件系统(CephFS)接口:在rados基础上增加了元数据服务器(MDS),它只为CephFS文件系统跟踪文件的层次结构和存储元数据,(RBD与RADOS不需要MDS,MDS不直接提供数据给客户端)。CephFS类似于传统的NAS,通过NFS和CIFS协议提供文件目录服务。
RADOS(Reliable Autonomic Distributed Object Store):如图1,Ceph的底层实现为RADOS。在Ceph中数据以对象的形式存储,RADOS层保存这些对象,并确保数据始终保持一致,进行数据复制、故障检测和恢复、数据迁移、集群各节点的数据平衡等工作,RADOS是Ceph的核心,包括以下功能:
Monitor为整个集群提供全局配置和系统信息(几数个Monitor组成小型的强一致性分布式)
CRUSH算法实现对象寻址过程(Ceph对象落在哪里由CRUSH计算得出)
对数据进行读写操作
集群数据均衡
保证集群副本之间数据一致性
数据自动恢复
克隆和快照
对象分层存储
典型的Rados集群如图2:

图2 Rados集群
学习自:
《Ceph源码分析》 常涛
《Ceph Cookbook》 Karan Singh
《Ceph之RADOS设计原理与实现》 谢型果 严军
Ceph学习笔记(1)- 架构概述的更多相关文章
- OGG学习笔记01-基础概述
OGG学习笔记01-基础概述 OGG(Oracle Golden Gate),最近几年在数据同步.容灾领域特别火,甚至比Oracle自己的原生产品DataGuard还要风光,主要是因为其跨平台.跨数据 ...
- spring学习笔记(一) Spring概述
博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书. 强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...
- Flink学习笔记:Connectors概述
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- Adaptive AUTOSAR 学习笔记 6 - 架构 - 方法论和 Manifest
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...
- JDBC学习笔记(1)——JDBC概述
JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数 ...
- Spring学习笔记之Spring概述
概述 Spring是一个java应用最广的开源框架,它是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Deve ...
- JAVA NIO学习笔记1 - 架构简介
最近项目中遇到不少NIO相关知识,之前对这块接触得较少,算是我的一个盲区,打算花点时间学习,简单做一点个人学习总结. 简介 NIO(New IO)是JDK1.4以后推出的全新IO API,相比传统IO ...
- ASP.NET MVC4学习笔记之总体概述
断断续续使用ASP.NET MVC框架也有一年多了,也算积累了一些经验,唉,一直想写一些笔记好好总结一下,人太懒不想动笔,今天终于决定开始.希望自己能坚持下去. 这篇文章大体介绍ASP.NET MVC ...
- Python学习笔记 :01概述
Python基础 首先推荐学习Python基础的教程和书籍 视频教程推荐南京大学张莉老师在cousera上的教程用Python玩转数据 入门教程<Python基础教程> 数据挖掘教程< ...
- 【转】JDBC学习笔记(1)——JDBC概述
转自:http://www.cnblogs.com/ysw-go/ JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据 ...
随机推荐
- python tkinter使用(四)
python tkinter使用(四) 本篇文章主要讲下tkinter 的文本框相关. tkinter中用Entry来实现输入框,类似于android中的edittext. 具体的用法如下: 1:空白 ...
- ElasticSearch之cat segments API
命令样例如下: curl -X GET "https://localhost:9200/_cat/segments?v=true&pretty" --cacert $ES_ ...
- Java注解,看完就会用
一.什么是注解 定义:注解(Annotation),也叫元数据.一种代码级别的说明. 它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次. 它可以声明在包.类.字段.方法.局部变 ...
- 聊一聊 C# 的线程本地存储TLS到底是什么
一:背景 1. 讲故事 有朋友在后台留言让我说一下C#的 ThreadStatic 线程本地存储是怎么玩的?这么说吧,C#的ThreadStatic是假的,因为C#完全是由CLR(C++)承载的,言外 ...
- three.js中场景模糊、纹理失真的问题
目录 1. 概述 2. 方案 2.1. 开启反走样 2.2. 开启HiDPI设置 3. 结果 4. 参考 1. 概述 在three.js场景中,有时会遇到场景模糊,纹理失真的现象,似乎three.js ...
- Proxy下的Prepare透传,让GaussDB(for MySQL)更稳固,性能更卓越
本文分享自华为云社区<Proxy下的Prepare透传,让GaussDB(for MySQL)更稳固,性能更卓越>,作者: GaussDB 数据库 . 1.引言 在很多业务场景下,数据库应 ...
- 为什么MySQL单表不能超过2000万行?
摘要:MySQL一张表最多能存多少数据? 本文分享自华为云社区<为什么MySQL单表不能超过2000万行?>,作者: GaussDB 数据库 . 最近看到一篇<我说MySQL每张表最 ...
- 云图说 | MSSI之应用业务模型ABM,搭建业务与技术的数据治理桥梁
摘要:应用业务模型ABM(Application Business Model)是MSSI为客户提供的统一模型管理服务. 本文分享自华为云社区<[云图说] | 第274期 MSSI之应用业务模型 ...
- DevSecOps“内置安全保护”,让软件研发“天生健康”
摘要:我们主要是围绕安全架构设计保证安全落地有法可依,进行威胁建模让安全落地有迹可循.做好隐私和敏感数据保护让安全落地在每一个细节和实处这几个方面进行阐述. 本文分享自华为云社区<DevSecO ...
- 云小课丨SA基线检查:给云服务来一次全面“体检”
摘要:随着企业上云进程的加快,由于云服务配置不合理.不合规等引发的安全风险与日俱增.如果没有加以重视并做及时的诊断处置,将会对企业云上业务带来巨大的安全隐患. 本文分享自华为云社区<云小课丨安全 ...