Ceph分布式存储底层实现原理(下)

简介: Ceph分布式存储底层实现原理(下)

分布式集群下面有4个节点
如果由于网络原因导致 
node1和node2在一个网络 记为A
node3和node4在另外一个网络 记为B
网络A和网络B是隔绝的
所以就可能出现2个网络的节点往共享存储池中针对同一份数据存储多次
并且由于node和node2不知道其他节点的存在 所以就会尽可能的抢占集群资源
为了解决这个问题 就采用投票机制
SUM/2+1即总票数/2+1 
如上图 4/2+1=3票
如果集群中4个节点有3个节点是存活的 就会工作
如果在集群中有3个节点 3/2+1=2 如果有2个节点就会继续工作
如果出现了脑裂即 node1和node2在一个网络 记为网络A
node3和node4在另外一个网络 记为网络B
网络A中还剩2个节点 那么就自杀了 
因为这个时候死掉比活着更安全
死掉充其量业务宕掉了
如果不死 那么就会把数据搞乱了
所以一半不会部署双数的节点 而是部署单数的节点

MDS (MetaData Server)

只有CephFS才会有这个角色
这个是存放文件系统的元数据(比如把文件系统格式成NTFS或EXT4 往EXT4写数据)
但因为是分布式文件系统 它有一个专门的角色来存放这个元数据
所以这个不是必须的 是可选的
而monitor是存放切片的元数据


Ceph关键概念


image.png


mon会计算数据存放在哪个osd 最后写到哪个硬盘中去
mds也可以存放多份


Ceph数据存储过程


image.png

一个文件进行切片
每一小块对应一个对象编号oid
对oid尽性hash计算 并加上一个掩码 得到一个gpid
"gp类似于一个文件夹 里面存放的是一个一个小的切片"
gpid是文件夹编号
然后通过crush算法 知道了 gpid这个文件夹里面的文件存放在哪些osd中

PG数量规划

Placement Group 归置组



image.png

不管通过什么方式写入数据进来
通过crushmap映射表路由到某一个pg
然后有pg把数据写入到osd中
osd写入到硬盘中

Crushmap算法

假设一个存储池有10个唯一数据的分片

如果算上副本的话 那么有30个分片
crushmap就是把pg数据打散写到各个硬盘中
monitor会管理crushmap

image.png

在创建存储池的一刹那 会把硬盘切分成很多分 放在一个map中
一个文件被切了10个分片 那么就会有10个oid
对oid进行hash计算 则一定会在hash环上找到一个位置

缺点:数据量特别多 每次寻址特别慢

假设有1000万个对象 monitor记录的映射数据就特别多
每次查询的时候就特别慢
为了解决这个问题 就引入了pg 归置组的概念

hash(oid) & mask 得到一个pgid

比如有128个pg 
hash(oid)值加上一个掩码得到一个pgid
所以把数据写入到pg来
pg是一个逻辑的概念 
相当于一个文件夹 文件夹里面放了很多文件
通过文件夹找文件就很方便
没有文件夹的话 直接找文件 就会很慢
然后通过crush算法把gp数据写入到一些osd中

微信图片_20220501130537.png

pg优势

缩小搜索区域 提高查询速度

image.png


pg的数量越多越好?

取值是2的n次方
计算公式:(osd的数量 * 每个osd的pg数)/ 副本数 / 存储池的数量
每个osd的pg数量 默认是100
存储池的数量比如是2
比如 9个osd
9*100/3/2=150
pg的取值是2的n次方
比150大的就是256
所以pg的数量是256
pg数量是在创建的时候规划的

OSD写流程


image.png

客户端写到主的缓存中
主的缓存写到2个副本的缓存
2个副本的缓存写入成功之后再回应给主
主副本在回应给客户端

oracle数据库后端存储可以用ceph

ceph也可以对接RGW对象存储

相关文章
|
4月前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
86 0
|
4月前
|
存储 分布式计算 Hadoop
Hadoop【基础知识 01】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)
【4月更文挑战第3天】Hadoop【基础知识 01】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)
194 3
|
2月前
|
监控 NoSQL Java
分布式锁实现原理问题之ZooKeeper的观察器(Watcher)特点问题如何解决
分布式锁实现原理问题之ZooKeeper的观察器(Watcher)特点问题如何解决
|
2月前
|
NoSQL Java Redis
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
|
17天前
|
存储 块存储
ceph分布式存储系统常见术语篇
关于Ceph分布式存储系统的常见术语解释和概述。
35 1
ceph分布式存储系统常见术语篇
|
17天前
|
存储 Kubernetes 数据安全/隐私保护
k8s对接ceph集群的分布式文件系统CephFS
文章介绍了如何在Kubernetes集群中使用CephFS作为持久化存储,包括通过secretFile和secretRef两种方式进行认证和配置。
25 5
|
4月前
|
存储 分布式计算 监控
Hadoop【基础知识 01+02】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
【4月更文挑战第3天】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
261 2
|
2月前
|
NoSQL Redis 数据库
|
1月前
|
存储 算法 NoSQL
(三)漫谈分布式之集群篇:探寻N个9高可用与PB级数据存储的实现原理!
本文来详细聊聊集群的各方面知识,为诸位量身打造出结构化的集群知识体系。
|
4月前
|
缓存 算法 关系型数据库
深度思考:雪花算法snowflake分布式id生成原理详解
雪花算法snowflake是一种优秀的分布式ID生成方案,其优点突出:它能生成全局唯一且递增的ID,确保了数据的一致性和准确性;同时,该算法灵活性强,可自定义各部分bit位,满足不同业务场景的需求;此外,雪花算法生成ID的速度快,效率高,能有效应对高并发场景,是分布式系统中不可或缺的组件。
1218 2
深度思考:雪花算法snowflake分布式id生成原理详解