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

您所在的位置:网站首页 10t硬盘可用容量 Minio的容量算法及实际存储空间计算公式

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

2024-02-19 12:57| 来源: 网络整理| 查看: 265

集群磁盘可用容量计算

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3