微服务系列:分布式文件存储之 MinIO 入门指南

经过前面多篇文章我们学习了服务网关、服务调用、服务注册、服务监控等微服务系列的的相关知识,今天开始我们来学习一下分布式文件的相关知识。

首先我们从学习 MinIO 对象存储服务开始,后面还会学习下其他的分布式文件存储服务比如 FastDFS 等。

话不多说,开始今天的学习。

基本介绍

1. 什么是对象存储

关于对象存储,我们可以看下 阿里云OSS 的解释。

对象存储服务OSS(Object Storage Service)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。

对象存储最大的优势就在于它可以存储大容量的非结构化数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。对于大多数的企业来说,这可以说是最为理想的存储媒介了。

2. 什么是分布式文件

分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。

分布式文件系统是面对互联网的需求而产生,互联网时代对海量数据如何存储?靠简单的增加硬盘的个数已经满足不了我们的要求,因为硬盘传输速度有限但是数据在急剧增长,另外我们还需要做好数据备份、数据安全等。

3. 什么是 MinIO

MinIO 是一款基于 Go 语言的高性能、可扩展、云原生支持、操作简单、开源的分布式对象存储产品。基于 Apache License v2.0 开源协议,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用,例如 NodeJS、Redis、MySQL 等。

在中国:阿里巴巴、腾讯、百度、中国联通、华为、中国移动等等9000多家企业也都在使用 MinIO 产品。

官网:www.minio.org.cn/

4. MinIO 特点

  • 高性能:作为高性能对象存储,在标准硬件条件下它能达到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 对象存储服务,演示直接使用我本地的 Windows 系统。

1. 下载启动

下载地址:https://min.io/download

直接下载 windows 版的 minio.exe

我们再创建一个文件夹 D:\minioData 作为文件数据存储的地方,

然后在 minio.exe 文件夹下使用 cmd 命令启动

minio.exe server D:/minioData

image.png

此处启动也可以这样

minio.exe server D:/minioData/data0 D:/minioData/data1 D:/minioData/data2 http://192.168.1.201/D:/minioData
  • 这里面指定了4个分区,具体可以根据你的实际情况进行配置。可以四台主机各一个数据存放位置,也可以两台主机各两个存放位置。我这边是三个存放位置在一台主机上,第四个在另一台主机上。格式是 ip + 存放位置

启动成功后浏览器访问地址 http://localhost:9000

image.png

默认的用户名和密码在启动的时候就告诉你啦 minioadmin/minioadmin

2. 上传文件

登录成功之后我们进入主页面

image.png

通过使用 MinIO 的网页端即可完成文件的上传下载功能,下面我们来演示下。

  • 新建一个存储桶 test

image.png

  • 创建好之后我们来给这个存储桶中上传张图片

image.png

  • 上传成功后,点击 share,取到一个地址

image.png

image.png

  • 浏览器访问这个地址,可以访问到这张图片

image.png

我们刚刚访问的这个地址只是一个临时地址,要想获取一个永久的访问路径,需要修改存储桶的访问策略,我们可以点击存储桶右上角的设置按钮来修改访问策略

image.png

Prefix*Access 有三种,一种只读、一种只写、一种可读可写,这里我们选择只读即可

保存之后我们就只需要通过拷贝链接中的前一串路径即可永久访问该文件 http://192.168.0.111:9000/test/wallhaven-dp2okl.jpg

image.png

是不是感觉搭建起来超级简单。

下一篇我们将要学习在 Java 项目中如何集成 MinIO

纠删码(erasure code) 模式

在上面的 MinIO 特点中有一条是支持纠删码,这里我们就对这个特点来验证一下。

1. 概念

MinIO 使用纠删码和校验和等特性保护数据免受硬件故障和静默数据损坏。使用最高级别的冗余,使用者可最多丢失多达一半(N/2)的驱动器,仍可以自动恢复数据。

纠删码是一种用来重建丢失或损坏数据的数学算法。MinIO 使用 Reed-Solomon 码将需要存储的对象切分为可变数据块和奇偶校验块。例如,在由 12 个驱动器构成的存储架构中,对象分片范围可以是 6 个数据块、6 个奇偶校验块到 10 个数据块、2 个奇偶校验块。

2. 验证

这次我们这样来启动 MinIO

minio.exe server D:/minioData/data0 D:/minioData/data1 D:/minioData/data2 D:/minioData/data3

image.png

在控制台上传文件后,你会发现上传目录下的文件是文件夹的形式

image.png

此时你就可以大胆手动删除 /minioData 目录下的 dataN(N 从0到3) 目录,只要删除的驱动(目录)个数小于 N/2,都可以保证文件被恢复(即:你删除了目录之后,过一会也会自动创建,无需人为干预)。

文章参考:minio原理和使用

PS:都看到这里了,点个赞吧,彦祖

补充

1、 Linux 下启动 minio

./minio server /data1 &

2、修改 minio 默认账号密码

直接修改环境变量的配置文件 vim /etc/profile

export MINIO_ACCESS_KEY=accesskey(自行设置) 
export MINIO_SECRET_KEY=secretkey(自行设置)
  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
分布式Minio是一个可以将多块硬盘组成一个对象存储服务的解决方案。它通过在不同的节点上分布硬盘,避免了单点故障的问题。分布式Minio严格遵守read-after-write一致性模型,确保所有读写操作的一致性。要启动一个分布式Minio实例,你只需要将硬盘位置作为参数传递给minio server命令,并在所有其他节点上运行相同的命令。所有运行分布式Minio的节点应共享一个共同的根凭证,以便节点之间的连接和信任。建议在执行Minio服务器命令之前,将root用户和root密码导出为环境变量MINIO_ROOT_USER和MINIO_ROOT_PASSWORD,并在所有节点上导出。如果没有导出,可以使用默认凭据minioadmin/minioadmin。Minio将创建每组2到16个驱动器的纠删码集。您提供的驱动器总数必须是这些数字之一的倍数。分布式Minio选择最大的EC集大小,并将其划分为给定的驱动器总数或节点总数,以确保均匀分布,即每个节点参与每组相同数量的驱动器。每个对象都被写入单个EC集,因此它们分布在不超过16个驱动器上。建议所有运行分布式Minio设置的节点是同质的,即操作系统相同、磁盘数量相同、网络互连相同。分布式Minio需要新的目录,如果需要,可以与其他应用程序共享驱动器。您可以通过使用Minio独有的子目录来实现此目的。例如,如果您已将卷安装在/export下,则可以将其作为参数传递给Minio服务器/export/data。运行分布式Minio实例的服务器之间的时间间隔应小于15分钟。为了确保服务器之间的时间同步,建议启用NTP服务。在Windows操作系统上运行分布式Minio被认为是实验性的,请谨慎使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值