ceph存储池

存储池是由一个一个OSD组成的
将对象数据存放在OSD中

纠删码存储池

将数据对象划分为K个数据块、M个编码块
然后再存放在OSD存储池

写入纠删码存储池的过程

纠删编码函数将对象内容划分为3个数据块和2个编码块
然后将这些数据块分别存储在不同的OSD上
假设数据块1 ABC存放在OSD5上
数据块2 DEF存放在OSD2上
数据块3 GHI存放在OSD1上
编码块1 YXY存放在OSD3上
编码块2 GQC存放在OSD4上

读取对象

从纠删码存储池读取NAYN对象

正常情况下 读取数据块1和2和3就可以得到该对象的完整内容
如果数据2所在的OSD2是最慢的 那么这一部分数据就没有读到
只读取数据块1和3 那么缺失的数据块2的数据通过编码块来恢复
如果编码块5所在OSD4出局了
那么就可以通过编码块4和数据看1和3解码得到数据块2
进而得到完整的对象数据

谁来做编解码的动作?

a、主OSD对对象内容做编码操作然后将分片数据发送到对应的OSDb、也做解码操作将数据分片从各个OSD获取整合得到完整对象c、主OSD也记录着归置组的日志

假设一个对象已被存储进了存储池

D1v1表示对象版本1的数据块1 写入了OSD1
D2v1表示对象版本1的数据块2 写入了OSD2
C1v1表示对象版本1的编码块1 写入了OSD3
各OSF归置组日志都相同 1,1表示版本1 epoch为1

此时写入该对象的版本2

WriteFull 完全取代 非部门覆盖

版本2数据写入成功

上一版本的数据就可以删除了

最新的日志版本为2

上面是正常情况 再考虑下意外情况

OSD1挂了
OSD2写了一部分还没有写完
OSD3写了一块
即丢失了两块: D1v2 和 D2v2

1、在K=2,M=1的情况下
至少需要1个数据块和一个编码块才能恢复对象完整数据2、OSD4成为主的OSD
它发现该对象版本1的数据是可用的
那么它就会认为版本1是最新的数据3、OSD3发现它于主OSD的日志版本有分歧
它将会忽略且包含的C1v2块的文件也被删除4、D1v1块的数据将在数据清洗期间通过解码函数重建
并存储在OSD4上

Ceph保证数据安全的机制相关推荐

  1. 知识管理中如何保证数据安全,权限控制很重要

    编者按:企业在知识管理的过程中常常遇到一些权限安全问题,如何解决?本文介绍了天翎知识管理系统是如何在权限这块实践,保证数据安全,为企业创新赋能的. 关键词:数据安全,权限管理,国产化,私有化部署,安全 ...

  2. linux模拟内存数据落盘,Linux:保证数据安全落盘

    背景 在很多IO场景中,我们经常需要确保数据已经安全的写到磁盘上,以便在系统宕机重启之后还能读到这些数据.但是我们都知道,linux系统的IO路径还是很复杂的,分为很多层,每一层都可能会有buffer ...

  3. 美国云主机如何保证数据安全?

    经营一家企业就会去寻找更好的工具.更先进的解决方案.高效的战略和特殊的计划,以确保有更好的业绩表现.那么,什么是云主机,它如何工作?长话短说,云主机将所有的业务资源--数据库.文件.网络.软件.存储空 ...

  4. 密码传输和存储,如何保证数据安全?

    本文从一个输入密码登录场景说起,详细介绍了密码传输过程的改进和思路,最后展现出一个相对安全的传输和存储方案. 点击上方"后端开发技术",选择"设为星标" ,优质 ...

  5. 玩转MySQL:了解高并发下保证数据安全的锁机制吗

    引言 锁!这个词汇在编程中出现的次数尤为频繁,几乎主流的编程语言都会具备完善的锁机制,在数据库中也并不例外,为什么呢?这里牵扯到一个关键词:高并发,由于现在的计算机领域几乎都是多核机器,因此再编写单线 ...

  6. java如何保证数据安全_java高并发下怎么保障数据安全?有哪些办法?

    近些年科技发展水平越来越快速了,这也促使了大家对于新兴软件的学习.尤其是对于java的渴求更是明显,这也进一步说明了java功能的强大.今天就来为大家介绍一下java高并发下怎么保障数据安全以及有哪些 ...

  7. HDFS 怎么保证数据安全?

    前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...

  8. 多线程怎么保证数据安全_Python threading实现多线程 提高篇 线程同步,以及各种锁...

    本文主要讲多线程的线程之间的资源共享怎么保持同步. 多线程基础篇见,木头人:Python threading实现多线程 基础篇 Python的多线程,只有用于I/O密集型程序时效率才会有明显的提高,如 ...

  9. 【ceph】Admin Socket机制|ceph dump 命令原理

    目录 python 前端部分 Admin Socket后端部分 ceph 命令下发流程:命令行-->python 前端部分处理-->Admin Socket后端部分处理 前端部分 pyth ...

最新文章

  1. 【转载】Java异常控制机制和异常处理原则
  2. 本是同根生,相煎何太急?
  3. 为什么现在的人越来越不幸福
  4. 【Android】不使用WebView来执行Javascript脚本(Rhino)
  5. buu-crypto-yxx
  6. 【CodeForces - 1051A】Vasya And Password (构造,水题)
  7. 数据标准化 - scale() - Python代码
  8. 美科技股崩了,Facebook、亚马逊、谷歌一夜蒸发万亿元
  9. marshaller java 乱码_Marshaller根据对象生成xml文件
  10. nginx+php-fpm页面显示空白的解决方法
  11. Nature:人类癌细胞系转移图谱
  12. IoT协议LwM2M MQTT与CoAP
  13. maven使用国内源和使用代理
  14. matlab subs函数
  15. 结合springboot搭建日志采集系统EFK
  16. PMP知识点(十一、干系人管理)
  17. 解析李笑来新书《韭菜的自我修养》
  18. NW.js之基础篇(2)
  19. MC9S12XS128nbsp;16位PWMnbsp;电…
  20. Android 10 SystemUI 如何隐藏状态栏输入法图标

热门文章

  1. JavaScript——闭包函数及拓展题目
  2. 出租车计费java_java 计程车计费
  3. 相机内参中cx cy_Opencv中的两种去畸变函数
  4. 一个简单的Eclipse调试Debug流程(四)
  5. linux_ls命令详解
  6. 【优达学城测评】SQLite 安装(2)
  7. AXFR和IXFR区域传输及原理
  8. React性能优化记录(不定期更新)
  9. 自定义request链路跟踪
  10. go依赖管理-govendor