集群磁盘可用容量计算

1. 数据的上传,下载流程

1.1上传流程:

1.先根据对象名去做一个Hash,计算出对应的Set,然后来创建临时目录。创建临时目录的目的是为了确保数据强一致性,所以中间数据都会被写入到这个临时目录里(直到所有数据写完后,再统一把目录写入到最终的路径上)
2.接下来读数据编码,每次最多读10M的数据处理,然后做编码,再被写入到磁盘上,循环的过程就是把数据保存下来。
3.数据保存完后,再写meta信息。
4.然后挪到最终的位置上,删除临时目录。

1.2读取流程:

1.先根据对象名做Hash,找到对象对应的Set
2.然后去读取meta信息,通过meta信息来获得编码的方式,然后去解码。它是以10M数据做EC编码,读的时候也是逐个part解析,每个part给他做解码,然后写入到一个io write里面。
备注:做EC码时,只要一半的编码块就能还原整个对象,所以读meta时读了N份,但是读数据时只要读N/2就可以了。
Ps:最简单的理解就是 一个对象存储在一个Set上面,这个Set包含16个Drive,其中一半是数据块,一半是校验块,这种方式最多能忍受一半的编码丢失或损坏。所有编码块的大小是原对象的2倍,跟传统多副本存储方案相比,他只冗余存了一份,但可靠性更高。

2.MinIo 纠删码奇偶校验 ( EC:N)

1.MinIO 使用 Reed-Solomon 算法根据部署中的擦除集大小将对象拆分为数据块和奇偶校验块。对于给定大小的擦除集M,MinIO 将对象拆分为N奇偶校验块和M数据块。
2.MinIO 使用该EC:N符号来表示N部署中的奇偶校验块 ( )的数量。MinIO 默认为EC:4每个对象 4 个奇偶校验块。MinIO对部署中的EC:N所有擦除集和服务器池使用相同的值 。
3.MinIO 可以容忍N每个擦除集丢失多达驱动器并继续执行读写操作(“仲裁”)。如果N恰好等于擦除集中驱动器的 1/2,则 MinIO 写入仲裁要求 N+1驱动器避免数据不一致(“裂脑”)
引入官方文档:https://docs.min.io/minio/baremetal/concepts/erasure-coding.html#minio-ec-parity

3.计算方式

xxxxxxxxxx

MinIO使用Reed-Solomon来将对象分片到若干数据块(Data block)和校验块(Partity block)中。对于12磁盘组成的存储,一个对象可以分片到最多6个校验块+6个数据块中,最少2个校验块+10个数据块中。
数据盘变量配置:
MINIO_STORAGE_CLASS_STANDARD:设置默认标准存储类型的奇偶校验计数,例如"EC:4"
冗余盘变量配置:
MINIO_STORAGE_CLASS_RRS:设置默认低冗余存储类型的奇偶校验计数,例如"EC:2"

MinIO 可创建每组4到16个磁盘组成的纠删码集合。所以你提供的磁盘总数必须是其中一个数字的倍数。
MinIO会根据给定的磁盘总数或者节点总数选择最大的纠删码集合大小,确保统一分布,即每个节点参与每个集合的磁盘数量相等。
每个对象被写入一个EC集合中,因此该对象分布在不超过16个磁盘上。

由官方计算器和实际操作得出结论

官方可用容量计算器:https://min.io/product/erasure-code-calculator
实际测试环境操作

4. 最后得出存储效率公式

存储效率=M/(K+M)
M=校验块
K=实际数据存储块

一组纠删码存储合集不会大于16,最小是4,这也跟官方文档中使用最少纠删码模式4个磁盘对应成立.
列如:
校验块为4 数据块为12 就能算出有效存储为75%, 允许故障盘数是 4块盘

参考链接:
https://cooting.cn/archives/146.html
https://docs.min.io/minio/baremetal/
http://www.minio.org.cn/
https://www.jianshu.com/p/3e81b87d5b0b
minio原理和使用:https://www.jianshu.com/p/c2b43ff67df0

Minio的容量算法及实际存储空间计算公式相关推荐

  1. 视频存储空间计算公式

    存储空间计算公式: 单路实时视频的存储容量 (GB) (GB)(GB)=[视频码流大小 =[视频码流大小 (Mb) ×60 秒× 60 分× 24 小时×存储天 数/8 ]/1024 : 我们以一路视 ...

  2. 算法设计——基姆拉尔森计算公式:计算几月几号是星期几

    基姆拉尔森计算公式 W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7 其中,W表示算出的星期的数字表示:0:星期日:1:星期一-- d表示日期,m表示月份,y表示年份 ...

  3. 明翰数据结构与算法笔记V0.8(持续更新)

    文章目录 前言 数据结构 `线性表` `数组` `链表` `栈与队列` [串/字符串] 树 并查集 `二叉树` [二叉排序树/二叉搜索树] `红黑树` 红黑树操作 霍夫曼树 `堆` [大/小]根堆 可 ...

  4. Go语言-数据结构与算法

    go语言之专业数据结构与算法 3.golang实现数组结构 code\ArrayList\ArrayList.go package ArrayListimport ("errors" ...

  5. 基础夯实:基础数据结构与算法(二)

    基础夯实:基础数据结构与算法(二) 常见的10种算法 1.递归算法 例题1:计算n! 例题2:斐波那契数列 例题3:递归将整形数字转换为字符串 例题4:汉诺塔 例题5:猴子吃桃 例题6:N皇后问题 2 ...

  6. 时间复杂度和空间复杂度3 - 数据结构和算法05

    时间复杂度和空间复杂度3 让编程改变世界 Change the world by program 函数调用的时间复杂度分析 如果我们把问题再实际化一点,大家是否能自己正确的分析出来呢? 我们来看下边这 ...

  7. 数据结构和算法 —— 时间复杂度+空间复杂度

    算法效率的度量方法 事后统计方法 这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高低. 但这种方法显然是有很大缺陷的: 必须依据算 ...

  8. PCA算法中样本方差和协方差的无偏估计与n-1的由来

    原文出处: http://blog.sina.com.cn/s/blog_c96053d60101n24f.html 在PCA算法中的方差协方差计算公式中除数为什么是n-1? 假设X为独立同分布的一组 ...

  9. 数据结构和算法———P3 时间复杂度和空间复杂度

    算法效率的度量方法 算法时间复杂度的定义: 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间度 ...

最新文章

  1. python3菜鸟教程-Python3 运算符
  2. 问题 “cell 出栈 selectBox 已选的图标,被释放掉,再次进入屏幕时,没有了已选图标 ” 解决方案...
  3. Linux DNS | resolv.conf 配置dns解析,重启network丢失
  4. python torch exp_学习Pytorch过程遇到的坑(持续更新中)
  5. 分享我们承建的三篇NAR的数据库
  6. Asp.Net Core 轻松学-利用日志监视进行服务遥测
  7. 静态路由和默认路由的配置实战及其区别--很详细哦
  8. mysql8参数方案_Mysql8.0及以上 only_full_group_by以及其他关于sql_mode原因报错详细解决方案...
  9. 东南大学计算机网络_【20考研】东南大学计算机考研分数统计
  10. android对象关系映射框架ormlite之一对多(OneToMany)
  11. java 购物系统代码_java购物系统源代码
  12. android translate 参数,关于安卓的TranslateAnimation的使用
  13. 计算机课代表总结,计算机班的班主任工作总结.doc
  14. Linux下的Job Control
  15. MFC 预处理器相关知识
  16. Windows10安装apt-cyg教程
  17. 丘成桐:如何学好微分几何
  18. Mac 开发者常用的工具
  19. ABAQUS报错:“ADJUST cannot be used for non-faceted surfaces.”
  20. 联想拯救者R720加装固态硬盘过程中遇到的小问题

热门文章

  1. static--修饰(局部变量、全局变量、函数)
  2. 让算法工程师破防的瞬间
  3. 【Python基础】玩一玩python第三方进度条库tqdm
  4. 我用Python爬取并分析了30万个房产数据,带你看怎么做的
  5. 这三篇论文开源了!何恺明等人的PointRend,Hinton组的SimCLR和谷歌大脑的EfficientDet...
  6. 快速掌握TensorFlow中张量运算的广播机制
  7. 2019计算机视觉论文精选速递(2019/1/23-2018/1/28)
  8. 行业观察|智慧屏集中爆发,大屏市场能否迎来破局者?
  9. MCtalk对话学霸君:在线教育“1对多小班化”是个伪命题
  10. 9.控制流语句_for循环