当前位置: 首页 > article >正文

CEPH的写入流程

在这里插入图片描述

1、客户端程序发起对文件的读写请求,ceph前端接口(RADOS Gateway)将文件切分成多个固定大小的对象(默认大小为4MB)
2、计算文件到对象的映射
(1) 计算OID为每个对象分配一个唯一的OID(Object ID),该OID由文件的inode number(INO)和object number(ONO)组成。INO是文件的唯一标识符,ONO是文件分割后的对象序号
3、根据HASH算法计算文件对应的Pool中的PG,
(1)一致性HASH客户端或CEPH前端使用一致性哈希算法将OID映射到一个PG上,一致性哈希算法可以帮助保持数据分布的均衡性,并且及时在集群变化时也能减少数据迁移
(2)映射计算:通过计算hash(oid)&mask来确定数据应该存储在哪个PG中,mask用来确定PG范围的一个数值
4、通过CRUSH算法将对象映射到PG中的OSD
(1)CRUSH算法:ceph使用CRUSH算法来决定数据应该存储在那个OSD上,CRUSH算法根据集群拓扑结构、权重等来选择OSD,CRUSH算法执行后会给出一组OSD列表,这些OSD负责存储PG中的数据,这些列表中的OSD分为主和备
5、主OSD将数据同步给备份OSD,并等待备份OSD返回确认
(1)数据复制:主OSD将数据复制到备OSD,并等待所有副本完成写入,当备OSD写入完成并向主OSD发送确认信息后,主OSD将知道数据已被持久化,当OSD收到所有备OSD的确认消息,就表明数据以存储成功,主OSD向客户端返回完成写入的消息

可能有些不足,欢迎大佬们来指正


http://www.kler.cn/a/325299.html

相关文章:

  • 【免越狱】iOS砸壳 可下载AppStore任意版本 旧版本IPA下载
  • 杰控通过 OPCproxy 获取数据发送到服务器
  • Py之pymupdf:基于langchain框架结合pymupdf库实现输出每个PDF页面的文本内容、元数据等
  • vue3 如何调用第三方npm包内部的 pinia 状态管理库方法
  • MySQL技巧之跨服务器数据查询:基础篇-删除语句如何写
  • ADS项目笔记 1. 低噪声放大器LNA天线一体化设计
  • @JsonFormat与@DateTimeFormat的区别
  • 智能监控,守护绿色能源:EasyCVR在电站视频监控中心的一站式解决方案
  • PostgreSQL数据库与PostGIS在Windows中的部署与运行
  • 25基于python的文本冒险岛游戏(源码+游戏简介+python代码学习攻略)校园招聘面试
  • 解决错误:Failed to add the host to the list of known hosts
  • node节点使用:
  • windows下tp5创建定时任务
  • SSH连接Vscode
  • 解决Qt每次修改代码后首次运行崩溃,后几次不崩溃问题
  • 17 vue3之tsx手写vite tsx插件
  • 智能工牌如何通过自然语义处理技术帮助企业提高业务复盘效率?
  • 打印机共享错误11b解决方法介绍
  • nodejs fs 模块的简介与相关案例
  • 【APM】在Kubernetes中,使用Helm安装loki-distributed 3.1.1
  • 【C++并发入门】摄像头帧率计算和多线程相机读取(上):并发基础概念和代码实现
  • 技术速递|加入 .NET 智能组件生态系统
  • [深度学习]卷积神经网络CNN
  • docker常用命令、如何查看docker 镜像的sha256值
  • 算法分享——《滑动窗口》
  • 等保测评中的数据安全风险评估:企业实战