Ceph架构简介及使用场景介绍

一、Ceph简介

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

二、Ceph特点

1.高性能
- 采用CRUSH算法,数据分布均衡,并行度高
- 容灾:本地、异地
- 能够支持上千个存储节点的规模,支持TB到PB级的数据
2.高可用
- 副本数可以灵活控制
- 多种故障场景自动进行修复自愈
- 没有单点故障,自动管理
3.高扩展性
随着节点增加,性能线性增长
4.特性丰富
支持三种存储接口:对象存储,块设备存储,文件存储

三、Ceph架构

RADOS:对象存储系统(稳定可靠、分布式存储层、复制、支持差错码EC算法)
LIBRDOS:访问RADOS,提供API接口,分别为:RGW、RBD、CEPH FS
RGW:对象存储接口Swift和S3、如:百度网盘、openstack云平台
RBD:块存储接口,如:物理机、虚拟机
CEPH FS:文件系统接口,如:NFS、SMB

四、Ceph组件

mon:监控整个集群的状态,记录映射表关系,找到文件的存储位置;至少需要3个mon。
osd:用来存放数据,一个硬盘对应一个osd
mds:适用于Cephfs

Ceph的核心组件包括Client客户端、MON监控服务、MDS元数据服务、OSD存储服务,各组件功能如下:

Client客户端:负责存储协议的接入,节点负载均衡。
MON监控服务:负责监控整个集群,维护集群的健康状态,维护展示集群状态的各种图表,如OSD Map、Monitor Map、PG Map和CRUSH Map。
MDS元数据服务:负责保存文件系统的元数据,管理目录结构。
OSD存储服务:主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查等。一般情况下一块硬盘对应一个OSD。

五、Ceph数据的存储过程

Ceph采用crush算法,在大规模集群下,实现数据的快速、准确存放,同时能够在硬件故障或扩展硬件设备时,做到尽可能小的数据迁移,其原理如下:

1.当用户要将数据存储到Ceph集群时,数据先被分割成多个object,(每个object一个object id,大小可设置,默认是4MB),object是Ceph存储的最小存储单元。
2.由于object的数量很多,为了有效减少了Object到OSD的索引表、降低元数据的复杂度,使得写入和读取更加灵活,引入了pg(Placement Group ):PG用来管理object,每个object通过Hash,映射到某个pg中,一个pg可以包含多个object。
3.Pg再通过CRUSH计算,映射到osd中。如果是三副本的,则每个pg都会映射到三个osd,保证了数据的冗余。

  • 首先文件被切片分为多个Objects并以oid标记,通过hash算法和mask掩码得到PGid
  • 引入PG逻辑概念(为了防止oid存储时混乱不好搜索,可以理解为文件夹),并用crush算法生成pgid,通过副本的机制把oid均匀分布给OSD中存储。
  • 副本数至少2-3个

pg_num计算值为:

注意:

最终pg_num的计算结果取接近计算值的2次幂,以提高CRUSH算法效率,减少CPU、内存的消耗。例如:计算值为200时,取256作为结果。pgp_num的值应设置为与pg_num一致。

参数解释:
Target PGs per OSD:预估每个OSD的PG数,一般取100计算。当预估以后集群OSD数不会增加时,取100计算;当预估以后集群OSD数会增加一倍时,取200计算。 OSD :集群OSD数量。 %Data:预估该pool占该OSD集群总容量的近似百分比。 Size:该pool的副本数。
OSD数目 1-5 5-10 10-50 >50
PG数目 建议128 建议512 建议4096 使用Pgcalc工具

创建pool时需要确定其PG的数目,在pool被创建后也可以调整该数字,PG值有以下影响因素:

数据的持久性:假如pool的size为 3,表明每个PG会将数据存放在3个OSD上。当一个OSD down了后,一定间隔后将开始recovery过程,recovery和需要被恢复的数据的数量有关系,如果该 OSD 上的 PG 过多,则花的时间将越长,风险将越大。
在recovery结束前有部分PG的数据将只有两个副本,如果此时再有一个OSD down了,那么将有一部分PG的数据只有一个副本。recovery 过程继续,如果再出现第三个OSD down了,那么可能会出现部分数据丢失。
可见,每个OSD上的PG数目不宜过大,否则会降低数据的持久性。这也就要求在添加OSD后,PG的数目在需要的时候也需要相应增加。 数据的均匀分布性:CRUSH算法会伪随机地保证PG被选中来存放客户端的数据,它还会尽可能地保证所有的PG均匀分布在所有的OSD上。
比方说,有10个OSD,但是只有一个size为3的pool,它只有一个PG,那么10个 OSD 中将只有三个OSD被用到。但是CURSH算法在计算的时候不会考虑到OSD上已有数据的大小。
比方说,100万个4K对象共4G均匀地分布在10个OSD上的1000个PG内,那么每个OSD上大概有400M 数据。再加进来一个400M的对象,那么有三块OSD上将有400M + 400M = 800M的数据,而其它七块OSD上只有400M数据。 资源消耗:PG作为一个逻辑实体,它需要消耗一定的资源,包括内存、CPU和带宽。太多PG的话,则占用资源会过多。 清理时间:Ceph的清理工作是以PG为单位进行的。如果一个PG内的数据太多,则其清理时间会很长。

Ceph-介绍的更多相关文章

  1. Ceph介绍

    1. 介绍 云硬盘是IaaS云平台的重要组成部分,云硬盘给虚拟机提供了持久的块存储设备.目前的AWS 的EBS(Elastic Block store)给Amazon的EC2实例提供了高可用高可靠的块 ...

  2. 分布式存储ceph介绍(1)

    一.Ceph简介: Ceph是一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统.ceph 的统一体现在可以提供文件系统.块存储和对象存储,分布式体现在可以动态扩展.在国内一些公司的云环 ...

  3. Ceph介绍及原理架构分享

    https://www.jianshu.com/p/cc3ece850433 1. Ceph架构简介及使用场景介绍 1.1 Ceph简介 Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能. ...

  4. ceph介绍和安装

    目录 1.Ceph简介 2.Ceph的特点 3.Ceph的缺点 4.架构与组件 4.1.组件介绍 4.2.存储过程 5.部署 5.1 设置主机名.配置时间同步 5.2 配置添加清华源 5.3 初始化c ...

  5. 分布式文件系统ceph介绍

    ceph哲学思想 1. 每个组件必须支持扩展 2.不存在单点故障 3.解决方案必须是基于软件的.开源的.适应能力强 4.任何可能的一切必须自我管理 存在的意义:帮助企业摆脱昂贵的专属硬件 ceph目标 ...

  6. Ceph 介绍及原理架构

  7. Percona 开始尝试基于Ceph做上层感知的分布式 MySQL 集群,使用 Ceph 提供的快照,备份和 HA 功能来解决分布式数据库的底层存储问题

    本文由 Ceph 中国社区 -QiYu 翻译 英文出处:Using Ceph with MySQL 欢迎加入CCTG Over the last year, the Ceph world drew m ...

  8. 海量小文件存储与Ceph实践

    海量小文件存储(简称LOSF,lots of small files)出现后,就一直是业界的难题,众多博文(如[1])对此问题进行了阐述与分析,许多互联网公司也针对自己的具体场景研发了自己的存储方案( ...

  9. Ubuntu CEPH快速安装

    一.CEPH简介 不管你是想为云平台提供Ceph 对象存储和/或 Ceph 块设备,还是想部署一个 Ceph 文件系统或者把 Ceph 作为他用,所有 Ceph 存储集群的部署都始于部署一个个 Cep ...

  10. ceph架构简介

    ceph架构简介 在测试OpenStack的后端存储时,看到了ceph作为后端存储时的各种优势 ,于是查询资料,总结了这篇ceph架构的博客,介绍了ceph的架构和ceph的核心组件.ceph整体十分 ...

随机推荐

  1. springboot 整合jdbc

    在springboot底层无论关系型还是非关系型数据库都是用spring-data进行交互 新建: 通过spring initialer勾选重要依赖jdbc api和mysql driver: 源码分 ...

  2. HTML渲染机制

    一直写页面但是很少对一些较深的运行机制的了解,这次趁休假查了一些相关的资料加上个人理解,记录一下关于html渲染的整个过程,也加深一下自己对html渲染的理解 一.先借一张图来看看html的整个加载过 ...

  3. QT 绘制波形图、频谱图、瀑布图、星座图、眼图、语图

    说明 最近在学中频信号处理的一些东西,顺便用 QT 写了一个小工具,可以显示信号的时域波形图.幅度谱.功率谱.二次方谱.四次方谱.八次方谱.瞬时包络.瞬时频率.瞬时相位.非线性瞬时相位.瞬时幅度直方图 ...

  4. 前端自动识别CAD图纸提取信息方法总结

    前言 CAD图纸自动识别和提取信息具有许多意义,包括以下几个方面: 提高工作效率:传统上,对于大量的CAD图纸,人工识别和提取信息是一项耗时且繁琐的任务.通过自动化这一过程,可以大大提高工作效率,节省 ...

  5. 预测 motif 的计算原理

    本文章来源于简书,作者小潤澤,已获原作者授权:部分内容有调整. 前言 蛋白质中功能的基本单元是 domain,是一种特殊的三维结构,不同结构的 domain 与其他分子特异性结合从而发挥功能.与此类似 ...

  6. 常量接口 vs 常量类 vs 枚举区别

    把常量定义在接口里与类里都能通过编译,那2者到底有什么区别呢? 那个更合理? 常量接口 public interface ConstInterfaceA { public static final S ...

  7. Go语言学习总结

    1. 跳出/执行下一次循环. {标签名}: for true { ... for true { ... break/continue {标签名} //默认不加标签,则跳出最近一层循环.加了标签可以跳出 ...

  8. 数位DP?记忆化罢了!

    我看了半天的数位 DP,DP 没学会,人倒是麻了. 解决什么 一般用于求解给你一个区间 \([l,r]\),问你其中满足条件的数有多少个. 这种题目还是蛮常见的,我们一般情况下暴力只能拿一少部分分,之 ...

  9. ChatGPT:在线免费智能聊天网页版

    在当今网络时代,聊天实现了从文字.语音到视频的全面发展.然而,在众多聊天方式中,许多人更喜欢使用人工智能技术来帮助进行自然的对话交流.那么,是否有一个在线免费ChatGPT网页版,可以提供更好的交互体 ...

  10. python笔记:第三章使用字符串

    1.1 字符串的基本操作 对序列的操作都适用于字符串,但字符串是不可变的,所以元素赋值和切片赋值都是非法的 1.2 设置字符串的格式 方法一: 使用%来设置字符串 format = 'Hello, % ...