初识MinIO
writer:zgx
last modify: 2020年09月26日
前言
学习任何一项技术,都需要有2w+1h的思想
即what、how、why
what:这是什么?有什么作用?怎么是用?
how:这是怎么实现的?
why:为什么有这个技术?有没有其他技术可以进行代替?比其他技术好在哪?又差在哪?
MinIO简介
MinIO是一个基于Apache License v2.0开源协议的对象存储服务。它兼容aws s3云存储服务接口,非常适合于存储非结构化的数据,例如图片、视频、日志文件、备份数据和容量/虚拟机镜像等,而一个对象文件可以是任意大小的,几十kb到5TB不等。
MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,如MySQL、redis...
MinIO使用
MinIO安装
macOs
brew install minio/stable/minio
minio server /data
Linux
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
minio server /data
使用源码安装,或者要看开源代码;前提是安装好Golang环境
Linux安装golang环境,可以看这篇
Linux配置Golang依赖包
go get -u github.com/minio/minio
MinIO纠删码
MinIO使用纠删码ensure code
和校验和checksum
来保护数据免受硬件故障和无声数据损坏。即使丢失一半数量(N/2)的硬盘,仍然可以恢复数据。
纠删码ensure code
是什么
纠删码是一种恢复丢失和损坏数据的数学算法,Minio采用Reed-Solomon code
将对象分为N/2数据和2/N奇偶校验块。这就意味着如果12块盘,一个对象会被分为6个数据块、6个奇偶校验块
意味着丢失任意的6块盘(不管其存放的数据块还是奇偶校验块),仍可以从剩下的盘中的数据进行恢复
这块可以查阅相关paper进行了解