美文网首页
Minio集群存储方案总结

Minio集群存储方案总结

作者: 车邮马慢 | 来源:发表于2022-01-03 11:40 被阅读0次

    一、简介

    Minio 是个基于 Golang 编写的开源对象存储套件,虽然轻量,却拥有着不错的性能。

    Minio 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
    Minio是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。

    二、特点

    ● 高性能:作为高性能对象存储,在标准硬件条件下它能达到55GB/s的读、35GG/s的写速率
    ● 可扩容:不同MinIO集群可以组成联邦,并形成一个全局的命名空间,并跨越多个数据中心
    ● 云原生:容器化、基于K8S的编排、多租户支持
    ● Amazon S3兼容:Minio使用Amazon S3 v2 / v4 API。可以使用Minio SDK,Minio Client,AWS SDK和AWS CLI访问Minio服务器。
    ● 可对接后端存储: 除了Minio自己的文件系统,还支持DAS、 JBODs、NAS、Google云存储和Azure Blob存储。
    ● SDK支持: 基于Minio轻量的特点,它得到类似Java、Python或Go等语言的sdk支持
    ● Lambda计算: Minio服务器通过其兼容AWS SNS / SQS的事件通知服务触发Lambda功能。支持的目标是消息队列,如Kafka,NATS,AMQP,MQTT,Webhooks以及Elasticsearch,Redis,Postgres和MySQL等数据库。
    ● 有操作页面
    ● 功能简单: 这一设计原则让MinIO不容易出错、更快启动
    ● 支持纠删码:MinIO使用纠删码、Checksum来防止硬件错误和静默数据污染。在最高冗余度配置下,即使丢失1/2的磁盘也能恢复数据。

    三、分布式Minio有什么好处?

    1、数据保护

    分布式Minio采用纠删码来防范多个节点宕机和位衰减。


    位衰减.png

    分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。

    2、高可用

    单机Minio服务存在单点故障,相反,如果是一个有N块硬盘的分布式Minio, 只要有N/2硬盘在线,你的数据就是安全的。

    不过你需要至少有N/2+1个硬盘来创建新的对象。
    
    例如,一个16节点的Minio集群,每个节点16块硬盘,就算8台服務器宕机,这个集群仍然是可读的,不过你需要9台服務器才能写数据。
    

    3、一致性

    Minio在分布式和单机模式下,所有读写操作都严格遵守read-after-write一致性模型。

    四、存储机制

    Minio使用纠删码erasure code和校验和checksum。 即便丢失一半数量(N/2)的硬盘,仍然可以恢复数据。校验和保护数据免受硬件故障和无声数据损坏。

    1、纠删码

    纠删码是一种恢复丢失和损坏数据的数学算法,目前,纠删码技术在分布式存储系统中的应用主要有三类,阵列纠删码(Array Code: RAID5、RAID6等)、RS(Reed-Solomon)里德-所罗门类纠删码和LDPC(LowDensity Parity Check Code)低密度奇偶校验纠删码。Erasure Code是一种编码技术,它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。即如果有任意小于等于m份的数据失效,仍然能通过剩下的数据还原出来。

    Minio默认采用RS(Reed-Solomon) code里德-所罗门类纠删码将对象拆分成N/2数据块和N/2 奇偶校验块。 这就意味着如果是12块盘,一个对象会被分成6个数据块、6个奇偶校验块,可以丢失任意6块盘(不管其是存放的数据块还是奇偶校验块),仍可以从剩下的盘中的数据进行恢复。

    2、RS code编码数据恢复原理

    RS编码以word为编码和解码单位,大的数据块拆分到字长为w(取值一般为8或者16位)的word,然后对word进行编解码。 数据块的编码原理与word编码原理相同,后文中以word为例说明,变量Di, Ci将代表一个word。

    把输入数据视为向量D=(D1,D2,..., Dn), 编码后数据视为向量(D1, D2,..., Dn, C1, C2,.., Cm),RS编码可视为如下(图1)所示矩阵运算。

    图1最左边是编码矩阵(或称为生成矩阵、分布矩阵,Distribution Matrix),编码矩阵需要满足任意n*n子矩阵可逆。为方便数据存储,编码矩阵上部是单位阵(n行n列),下部是m行n列矩阵。下部矩阵可以选择范德蒙德矩阵或柯西矩阵。



    RS最多能容忍m个数据块被删除。 数据恢复的过程如下:
    (1)假设D1、D4、C2丢失,从编码矩阵中删掉丢失的数据块/编码块对应的行。(图2、3)
    (2)由于B' 是可逆的,记B'的逆矩阵为 (B'^-1),则B' * (B'^-1) = I 单位矩阵。两边左乘B' 逆矩阵。 (图4、5)
    (3)得到如下原始数据D的计算公式 。



    (4)对D重新编码,可得到丢失的编码。

    相关文章

      网友评论

          本文标题:Minio集群存储方案总结

          本文链接:https://www.haomeiwen.com/subject/rnlxcrtx.html