Minio纠删码与存储级别

您所在的位置:网站首页 存储ec是什么意思 Minio纠删码与存储级别

Minio纠删码与存储级别

2024-07-17 19:43| 来源: 网络整理| 查看: 265

Minio纠删码与存储级别 纠删码(erasure code)概念

简单来说就是可以通过数学计算,把丢失的数据进行还原,它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。即如果有任意小于等于m份的数据失效,仍然能通过剩下的数据还原出来。举个最简单例子就是有两个数据(d1, d2),用一个校验和y(d1 + d2 = y)即可保证即使丢失其中一个,依然可以还原数据。如丢失 d1 ,则使用 y - d2 = d1 还原,同理,d2 丢失或者y丢失,均可通过计算得出。

EC 的具体应用实现中, RS(Reed-Solomen)是 EC 的一种更简单快捷的实现,可以通过矩阵运算,还原数据。具体的数学矩阵运算及证明,可以参考文章《Erasure-Code-擦除码-1-原理篇》及《EC纠删码原理》。

Minio采用Reed-Solomon code(纠删码中的一种)将对象拆分成m份数据和n份奇偶校验块。

Minio中的纠删码

首先需要了解如下基本概念:

Drive:即存储数据的磁盘,在 MinIO 启动时,以参数的方式传入。Erasure Set:即一组 Drive 的集合,分布式部署根据集群规模自动划分一个或多个 Erasure Set(每个Erasure Set包含4到16个Drive),每个 Erasure Set 中的 Drive 分布在不同位置。一个对象存储在一个 Erasure Set 上。

Minio采用Reed-Solomon code纠删码实现数据的冗余。对象通过Hash均匀分布在所在的Erasure Set中。在Minio中用格式(EC:N),其中N表示EC(m+n),m为数据块的数量,n为校验块parity的数量。Minio的读操作,需要的磁盘数量为:Erasure Set中m个磁盘,写操作需要m+1个磁盘。

对于小文件(小于2M),数据和元数据都同时保存在对应的xl.meta的文件中。对应大文件的写入,会创建相应的目录,该目录下是对应的part的数据文件和元数据文件。 在这里插入图片描述 在这里插入图片描述

由上两图可知:每个bucket对应一个同名本地目录,每个对象也对应一个同名的目录,下面存数据和元数据。

Minio中的存储级别

Minio当前支持两种存储级别:Reduced Redundancy和Standard,通过对两种级别的设置来修改对象的Parity Drives (P)(奇偶校验块)和Data Drives (D)(数据块)的比例,让用户能够更好的控制磁盘使用率和容错性。

介绍 STANDARD

STANDARD存储级别包含比REDUCED_REDUNDANCY存储级别更多的奇偶校验块,因此STANDARD存储级别的奇偶校验块需要满足如下条件:

在未设置REDUCED_REDUNDANCY存储级别的情况下,STANDARD存储级别的奇偶校验块需要大于等于2;在设置了REDUCED_REDUNDANCY存储级别的情况下,STANDARD存储级别的奇偶校验块需要大于REDUCED_REDUNDANCY存储级别的奇偶校验块数量奇偶校验块的数量必须小于数据块,所以STANDARD存储级别的奇偶校验块不能大于N/2(N为Erasure Set中的磁盘数量)

STANDARD存储级别的奇偶校验块的默认值取决于Erasure Set中的磁盘数量:

Erasure Set SizeDefault Parity (EC:N)5 or fewerEC:26-7EC:38 or moreEC:4

补充说明:在RELEASE.2021-01-30T00-20-58Z以前的版本中,STANDARD存储级别的奇偶校验块默认为N/2(N为Erasure Set中的磁盘数量)

REDUCED_REDUNDANCY

REDUCED_REDUNDANCY存储级别包含比STANDARD存储级别更少的奇偶校验块,因此REDUCED_REDUNDANCY存储级别的奇偶校验块需要满足如下条件:

在未设置STANDARD存储级别的情况下,REDUCED_REDUNDANCY存储级别的奇偶校验块需要小于N/2在设置了STANDARD存储级别的情况下,REDUCED_REDUNDANCY存储级别的奇偶校验块需要小于STANDARD存储级别的奇偶校验块数量奇偶校验块的数量必须小于数据块,且REDUCED_REDUNDANCY存储级别的奇偶校验块需要小于STANDARD存储级别的奇偶校验块数量,那么REDUCED_REDUNDANCY存储级别的奇偶校验块需要大于等于2,所以Erasure Set中的磁盘数量大于4的时候才支持REDUCED_REDUNDANCY存储级别。

REDUCED_REDUNDANCY存储级别的奇偶校验块默认值为:EC:2

使用 配置存储级别

有以下两种配置方式:

环境变量 export MINIO_STORAGE_CLASS_STANDARD=EC:4 export MINIO_STORAGE_CLASS_RRS=EC:2

设置以上环境变量并重启服务

mc admin mc admin config set myminio/ storage_class standard="EC:4" mc admin config set myminio/ storage_class rrs="EC:2" # 重启minio服务 mc admin service restart myminio/ 对象存储级别选取

在对象上传时,通过设置x-amz-storage-class元数据为REDUCED_REDUNDANCY或STANDARD来为对象选择不同的存储级别,以下为python示例:

minioClient = Minio("localhost:9000", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", true) metadata={'x-amz-storage-class': 'REDUCED_REDUNDANCY'} # metadata={'x-amz-storage-class': 'STANDARD'} minioClient.put_object( "mybucket", "myobject", BytesIO(b"hello"), metadata=metadata, length=5 )

备注:

如果minio在启动前未自定义存储级别(storage class ),minio使用各模式存储级别的默认值进行对象储存。当上传对象时,如果没有设置x-amz-storage-class元数据,minio使用STANDARD模式的存储级别进行对象存储。

参考:

https://github.com/minio/minio/tree/master/docs/erasure/storage-class

https://github.com/minio/minio/tree/master/docs/config#storage-class

https://zhuanlan.zhihu.com/p/374939519

https://segmentfault.com/a/1190000022524583



【本文地址】


今日新闻


推荐新闻


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