minio原理和使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了minio原理和使用相关的知识,希望对你有一定的参考价值。

参考技术A

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

单主机单硬盘模式

单主机多硬盘模式

多主机多硬盘分布式

Minio使用纠删码erasure code和校验和checksum。 即便丢失一半数量(N/2)的硬盘,仍然可以恢复数据。

校验和
保护数据免受硬件故障和无声数据损坏

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

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

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安装配置和使用minio服务版本升级步骤

minio最近爆出漏洞。需要升级minio。

升级步骤如下:

1.下载最新版

在服务器上执行如下命令:

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20230324214123.0.0.x86_64.rpm -O minio.rpmminio

2.执行升级命令

sudo dnf update minio.rpm

 升级完毕使用systemctl重启服务

systemctl restart minio.service

如果使用systemctl管理minio,此时可能报错。

 报错的原因是升级minio使用rpm包,会覆盖/etc/systemd/system/minio.service配置文件。

按照minio安装配置和使用(三)中方法重新配置即可。

另外,如果已经发生启动报错,此时minio的数据目录需要检查权限,以确认权限正确。

3.mimio 客户端升级

minio客户端mcli升级比较简单,直接在服务器执行如下命令

mcli update

以上是关于minio原理和使用的主要内容,如果未能解决你的问题,请参考以下文章

NIO的原理和文件读入读出及图片拷贝的使用

nio原理和示例代码

Java NIO使用及原理分析

Java NIO使用及原理分析

[Java]I/O底层原理之三:NIO

JAVA NIO工作原理及代码示例