【学习笔记】minIO分布式文件服务系统

这篇具有很好参考价值的文章主要介绍了【学习笔记】minIO分布式文件服务系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MinIO

一、概述

1.1 minIO是什么?

MinIO是专门为海量数据存储、人工智能、大数据分析而设计的对象存储系统。(早前流行的还有FastDFS)

据官方介绍,单个对象最大可存储5T,非常适合存储海量图片、视频、日志文件、备份数据和容器、虚拟镜像等。

  • 采用golang语言编译
  • 客户端和用户端交互采用http和https用户协议

1.2 为什么选择minIO?

  • 安装部署简单
  • 自带UI界面,操作简单,开箱即用
  • 性能优秀,对象读写速度极快
  • 支持云原生容器化部署
  • 支持全部主流的SDK支持,java py等
  • 兼容亚马逊S3 API(便于后续继续迁移到更大的云厂商
  • 官方文档很完整

1.3 基础概念

1.3.1 Object 存储对象

存储到minIO的基本对象,包括文件、字节流、任何类型…

1.3.2 Buckets 桶

对象和关联配置的分组。

  • 不同的项目可以使用Bucket进行区分
  • 每个项目中不同的功模块,还可以在项目内部创建不同的目录
1.3.3 cluster 集群

汇集到单个存储资源中的一组驱动器和一个或多个 MinIO 服务器进程。See also: tenant.

1.3.4 Drive 驱动

即存储数据的磁盘,在minIO启动时,以参数的方式传入。

minIO所有的对象数据都会存储在Drive里。

1.3.5 Set 集合

即一组Drive的集合,分布式部署根据集群规模自动划分一个或多个Set——每个Set的Drive分布在不同位置。

  • 一个对象存储在一个Set上。
  • 一个集群又划分多个Set
  • 一个Set包含的Drive数量是固定的,默认由系统根据集群规模自动计算得出。
  • 一个Set中的Drive尽可能的分布在不同的节点上。
1.3.3 Console 控制台

用于与 MinIO 部署或租户交互的图形用户界面 (GUI)。

其他概念具体看官方文档https://www.minio.org.cn/docs/minio/container/glossary.html#

1.4 纠删码EC (Erasure Code)

官方解释 : MinIO 纠删码是一种数据冗余和可用性功能,允许 MinIO 部署在集群中多个驱动器或节点丢失的情况下自动动态重建对象

纠删码提供对象级修复,其开销显着低于 RAID 或复制等相邻技术。

简单理解:

minio存储文件会通过纠删码进行冗余。

比如一个原文件进行存储后,会经过纠删码优化(压缩)后存储到其他位置。

开启纠删码模式后,miniIO可以实现低冗余且磁盘损坏高容忍,标准且最高的数据冗余系数为2(即存一个1m的文件,实际占用空间为2m)。

具体的原理先不展开

二、MinIO基于Docker快速部署

这里参考的版本较早,接下来会结合官方最新的英文文档,记录部署流程。

英文:https://min.io/docs/

中文:https://www.minio.org.cn/docs/cn/minio/kubernetes/upstream/index.html

2.0 快速记录指令

# 镜像拉取
docker pull minio/minio;

# 创建环境变量文件
touch /etc/default/minio
vi  /etc/default/minio

# 输入账号密码
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=自己改密码

MINIO_VOLUMES="/mnt/data"

#保存

# 启动容器
docker run                                   \
  -p 9001:9000 -p 9091:9090                     \
  -v 路径也要自己设置:/mnt/data                \
  -v /etc/default/minio:/etc/config.env         \
  -e "MINIO_CONFIG_ENV_FILE=/etc/config.env"    \
  --name "minio"                          \
  minio/minio server --console-address ":9090"

docker-compose

version: '3'
services:
  minio_local1:
    image: minio/minio
    command: server --console-address ":9090"
    container_name: minio
    environment:
      MINIO_CONFIG_ENV_FILE: /etc/config.env
    ports:
      - "9001:9000"
      - "9091:9090"
    volumes:
      - ./data:/mnt/data
      - /etc/default/minio:/etc/config.env

2.1 拉取最新的稳定版镜像

拉取镜像

docker pull minio/minio

2.2 创建环境变量文件

在 处创建环境变量文件/etc/default/minio

vi  /etc/default/minio

需要配置的内容如下:

MINIO_ROOT_USER=myminioadmin
MINIO_ROOT_PASSWORD=minio-secret-key-change-me

MINIO_VOLUMES="/mnt/data"

# MINIO_SERVER_URL="http://minio.example.net:9000"

基本的注释如下:

  1. MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 设置了 MinIO 服务器的 root 帐户。该用户拥有最高权限。
  2. 没有配置时默认值为:minioadmin:minioadmin。当然,官方推荐不使用默认值,无论任何环境。
  3. MINIO_VOLUMES 设置用于 MinIO 服务器的存储卷或路径。
  4. MINIO_SERVER_URL 设置与 MinIO 服务器一起使用的本地计算机的主机名。MinIO 假设您的网络控制层可以正确将此主机名解析为本地计算机
  5. 手动配置MINIO_SERVER_URL :请将该值替换为本地计算机的正确主机名和 MinIO 服务器的端口(否则默认为 9000)。

配置后如下:

【学习笔记】minIO分布式文件服务系统,学习笔记,学习,笔记,分布式,MinIO

2.3 创建并运行容器

docker运行指令

docker run -dt                                  \
  -p 9001:9000 -p 9091:9090                     \
  -v PATH:/mnt/data                             \
  -v /etc/default/minio:/etc/config.env         \
  -e "MINIO_CONFIG_ENV_FILE=/etc/config.env"    \
  --name "minio_local1"                          \
  minio/minio server --console-address ":9090"

成功启动打印日志可以查看:

【学习笔记】minIO分布式文件服务系统,学习笔记,学习,笔记,分布式,MinIO

访问9090端口,登陆控制台即可查看到:

【学习笔记】minIO分布式文件服务系统,学习笔记,学习,笔记,分布式,MinIO

三、Minio Client 快速入门指南

MC和linux指令类似,为ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案

ls       列出文件和文件夹。
mb       创建一个存储桶或一个文件夹。
cat      显示文件和对象内容。
pipe     将一个STDIN重定向到一个对象或者文件或者STDOUT。
share    生成用于共享的URL。
cp       拷贝文件和对象。
mirror   给存储桶和文件夹做镜像。
find     基于参数查找文件。
diff     对两个文件夹或者存储桶比较差异。
rm       删除文件和对象。
events   管理对象通知。
watch    监听文件和对象的事件。
policy   管理访问策略。
session  为cp命令管理保存的会话。
config   管理mc配置文件。
update   检查软件更新。
version  输出版本信息。

3.1 安装Minio Client

64-bit Intel

curl https://dl.min.io/client/mc/release/linux-amd64/mc \
  --create-dirs \
  -o $HOME/minio-binaries/mc

chmod +x $HOME/minio-binaries/mc
export PATH=$PATH:$HOME/minio-binaries/

mc --help

更多安装方式:https://min.io/docs/minio/linux/reference/minio-mc.html?ref=docs

3.2 配置MC,连接到minIO

# 查看当前已配置的服务器
mc config host ls

# 添加服务器配置
mc config host add <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY> <API-SIGNATURE>

# 举个例子 

mc config host add minio-local1 http://localhost:9000 通行码 秘钥
  • 提示如下即可成功,输入指令测试

    【学习笔记】minIO分布式文件服务系统,学习笔记,学习,笔记,分布式,MinIO

3.3 几个基础指令

mc的大部分指令都有很完整的案例,使用–help参数即可查看详细

3.3.1 上传下载文件
  • ls-查看目录
  • cp- 复制文件(下载文件,上传文件
  • mv 移动文件
  • rm 删除文件

举个例子

mc ls minio-local1/first-bucket
# 下载文件
mc cp  minio-local1/first-bucket/pom.xml  /home
# 上传文件
mc cp docker-compose.yml minio-local1/first-bucket

【学习笔记】minIO分布式文件服务系统,学习笔记,学习,笔记,分布式,MinIO

【学习笔记】minIO分布式文件服务系统,学习笔记,学习,笔记,分布式,MinIO

3.3.2 Bucket-桶管理
  • mb 创建桶

  • rb 删除桶

    • 要强制删除 需要加上参数 --force 【慎用!!】
  • du 查询使用情况

    【学习笔记】minIO分布式文件服务系统,学习笔记,学习,笔记,分布式,MinIO

举个例子

# 创建几个桶
root@VM-12-17-ubuntu:/home/nexus3# mc mb minio-local1/new-bucket
Bucket created successfully `minio-local1/new-bucket`.
root@VM-12-17-ubuntu:/home/nexus3# mc mb minio-local1/new-bucket2
Bucket created successfully `minio-local1/new-bucket2`.
root@VM-12-17-ubuntu:/home/nexus3# mc mb minio-local1/new-bucket3
Bucket created successfully `minio-local1/new-bucket3`.
root@VM-12-17-ubuntu:/home/nexus3# mc mb minio-local1/new-bucket4
Bucket created successfully `minio-local1/new-bucket4`.

# 删除几个桶

root@VM-12-17-ubuntu:/home/nexus3# mc rb  minio-local1/new-bucket4
Removed `minio-local1/new-bucket4` successfully.
root@VM-12-17-ubuntu:/home/nexus3# mc rb  minio-local1/new-bucket2
Removed `minio-local1/new-bucket2` successfully.

3.99 MC Admin使用

MinIO 客户端 “mc” 命令行工具提供命令 用于在 MinIO 部署上执行管理任务的命令。

现在一般用界面代替,不详细看了

官方文档地址:https://min.io/docs/minio/linux/reference/minio-mc-admin.html

四、TODO 分布式集群部署

4.1、MinIO的EC码和文件存储结构

4.1.1 EC 快速理解

Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏。

即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。

4.1.2 什么是Erasure Code?

纠删码是一种恢复丢失和损坏数据的数学算法, Minio采用Reed-Solomon code将对象拆分成N/2数据和N/2 奇偶校验块。

这就意味着如果是12块盘,一个对象会被分成6个数据块、6个奇偶校验块,你可以丢失任意6块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复,是不是很NB,感兴趣的同学请翻墙google。

4.1.3 为什么EC有用?

纠删码的工作原理和RAID或者复制不同,像RAID6可以在损失两块盘的情况下不丢数据,而Minio纠删码可以在丢失一半的盘的情况下,仍可以保证数据安全。

而且Minio纠删码是作用在对象级别,可以一次恢复一个对象,回复速度很快,而RAID是作用在卷级别,数据恢复时间很长。

Minio对每个对象单独编码,存储服务一经部署,通常情况下是不需要更换硬盘或者修复。

Minio纠删码的设计目标是为了性能和尽可能的使用硬件加速。文章来源地址https://www.toymoban.com/news/detail-724901.html

到了这里,关于【学习笔记】minIO分布式文件服务系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式文件系统使用——MinIO

    1.1 概念 常见的文件系统:FAT16/FAT32、NTFS、HFS、UFS、APFS、XFS、Ext4等 。 现在有个问题,一此短视频平台拥有大量的视频、图片,这些视频文件、图片文件该如何存储呢?如何存储可以满足互联网上海量用户的浏览。 分布式文件系统 就是海量用户查阅海量文件的方案。 通过概

    2024年02月12日
    浏览(42)
  • minio 分布式文件系统主从复制

    1. 在slave节点下载mc客户端工具 下载 2. 移动或复制mc文件到/usr/local/bin/文件夹 3. 赋值权限给 mc 文件 4. 查看mc客户端版本,看是否可用 5. 在slave服务器上配置minio_slave和minio_master,用于添加对master上minio的访问权限。 6. 查看当前节点服务 7. 复制主节点数据到子节点

    2024年02月13日
    浏览(43)
  • 1.使用分布式文件系统Minio管理文件

    文件系统 文件系统 是操作系统用于组织管理 存储设备(磁盘)或分区 上文件信息的方法和数据结构,负责对文件存储设备空间进行组织和分配,并对存入文件进行保护和检索 文件系统是负责管理和存储文件的系统软件,操作系统通过文件系统提供的接口去存取文件,用户通过操

    2024年01月22日
    浏览(42)
  • OSS文件上传、MinIO分布式文件存储系统

    阿里云OSS上传图片 实现步骤: 1. 定义OSS相关配置 application-dev.yml application.yml 2. 读取OSS配置 在sky-common模块中,已定义 3. 生成OSS工具类对象 在sky-server模块 其中,AliOssUtil.java已在sky-common模块中定义 4. 定义文件上传接口 在sky-server模块中定义接口 MinIO分布式文件存储系统 MinI

    2024年01月24日
    浏览(48)
  • springboot 对接 minio 分布式文件系统

    1. minio介绍 Minio 是一个基于Go语言的对象存储服务。它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大

    2024年02月14日
    浏览(45)
  • spring boot + minio 分布式文件上传

    1、分布式文件系统 简单理解为:一个计算机无法存储海量的文件,通过网络将若干计算机组织起来共同去存储海量的文件,去接收海量用户的请求,这些组织起来的计算机通过网络进行通信。 好处: 一台计算机的文件系统处理能力扩充到多台计算机同时处理。 一台计算机

    2024年02月08日
    浏览(57)
  • Springboot整合minio组件-分布式文件存储

    一、快速开始 Minlo说明: Minio是Apcche旗下的一款开源的轻量级文件服务器,基于对象存储,协议是基于Apache License v2.0,开源可用于商务。 Minio主要用来存储非结构化的数据,类似文件,图片,照片,日志文件,各类备份文件等,按照官网描述,文件的大小从几KB到5TB。 Minio提

    2024年02月11日
    浏览(54)
  • 【分布式文件存储】MinIO部署及实现文件上传下载

    目录 概述 MinIO集群部署 准备docker-compose.yml 测试启动 MinIO用户管理 Buckets管理  创建Buckets MinIO客户端 引入依赖   文件上传下载Demo 调用API碰到的问题 MinIO | 高性能, Kubernetes 原生对象存储 MinIO是全球领先的对象存储先锋,目前在全世界有数百万的用户。 高性能 ,在标准硬件

    2024年02月07日
    浏览(59)
  • 常用分布式文件系统(对象存储)对比-SeaweedFS、Minio

    常用分布式文件系统,相对比较热门的有Minio,SeaweedFS,FastDFS,ceph。主要对比一下Minio,SeaweedFS。 什么是SeaweedFS? SeaweedFS是一种简单的、高度可扩展的分布式文件系统。SeaweedFS是一个非常优秀的由 Go语言开发的分布式存储开源项目。它是用来存储文件的系统,并且与使用的语言无

    2024年02月03日
    浏览(55)
  • 【分布式云储存】Springboot微服务接入MinIO实现文件服务

    上篇博客我们介绍了分布式云存储MinIO作业环境的搭建,以及分布式云储存MinIO在实际的文件服务中的优势。那么,今天我们就小试牛刀来将MinIO接入我们的微服务项目,实现一个分布式的文件服务器。 MinIO 提供高性能、与S3 兼容的对象存储系统,让你自己能够构建自己的私有

    2024年02月07日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包