Minio简介
Minio是Apache License v2.0开源的一个分布式的存储系统,它支持S3云存储的服务接口,非常适合支持大量非结构化的数据,而一个文件可以是任意大小,从几十k到最大的5TB,同时他也是一个非常轻量的服务,可以结合其他的应用进行使用。
分布式系统高可用设计
分布式设计
1、Minio将多个硬盘(可以分布在不同机器)组成一个分布式的对象存储系统
2、去中心化、分布式
数据保护
1、Minio采用纠删码(erasuer code)来保证集群多点或者单点故障和位衰减(bit rot)
2、最少需要4个节点来使Minio自动引入纠删码
高可用
分布式Minio存储系统允许集群N/2节点宕机,但是恢复数据则需要通过N/2+1节点来进行恢复。例如:8个节点,宕机4个,则需要5个节点进行数据恢复
限制
分布式Minio单个租户最小需要4个节点(硬盘),最大支持16个节点(硬盘)受限于纠删码(erasuer code),我们可以使用k8s来进行minio租户的管理。
一致性
Minio不论是分布式或者是单机,均遵从read-after-write来保证数据的一致性
安全
支持TLS证书
Minio纠删码
Minio使用纠删码(erasuer code) 和校验和(checksum)来保护数据,避免发生硬件故障或者某种原因导致数据丢失,即使丢失N/2 的硬盘都可以将数据恢复回来。
http://www.360doc.com/content/21/1004/21/25921839_998266807.shtml
通过上述URL了解什么是纠删码
Minio如何使用纠删码
纠删码是一种数据丢失和损坏数据的一种算法,Minio使用Reed-Solomon code拆分对象为N/2数据和N/2奇偶校验块。例如:我有12块硬盘,存放了一个文件,Minio会给我分成6份数据和6个奇偶校验块,不管我是丢失了哪个硬盘,数据均可以得到恢复。
Minio优点
Minio可以针对某个对象进行单独恢复,而raid则需要针对卷来进行恢复,从而减少了恢复的时间周期。Minio对每个对象进行编码,存储服务一经部署,存储硬盘一般不需要进行更换或者修复,Minio的纠删码设计目标是为了性能和硬件加速。
位衰减bit rot保护
位衰减Bit rot又称为数据腐化(Data Rot)或者无声数据损坏(Silent Data Corruption),是目前来说硬件数据最严重的一种故障,通常会无声息的、没有任何错误日志的损坏,Minio纠删码采用了高速BLAKE2 基于哈希的校验和来防范位衰减。
应用场景
1、habor镜像制品仓库
2、公司网盘系统
3、数据库备份系统