Bootstrap

MinIO笔记

一、MinIO 简介

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

二、安装 MinIO

  1. Docker 容器(稳定版或尝鲜版)
    使用以下命令运行 Docker 容器:docker run -p 9000:9000 minio/minio:edge server/data ,更多 Docker 部署信息可访问相关链接。

  2. macOS(使用 Homebrew)
    若之前使用brew install minio安装过 MinIO,可使用minio/stable/minio官方镜像进行重装。注意由于 Go1.8 的 bug,Homebrew 版本不太稳定。
    下载地址:https://dl.minio.io/server/minio/release/darwin-amd64/minio

  3. GNU/Linux
    下载地址:https://dl.minio.io/server/minio/release/linux-amd64/minio

  4. 微软 Windows 系统
    下载地址:https://dl.minio.io/server/minio/release/windows-amd64/minio.exe

  5. FreeBSD
    使用 pkg 进行安装。

  6. 使用源码安装(仅供开发人员和高级用户使用)
    需先参考相关文档安装 Go 语言环境。

三、验证 MinIO

安装后,可使用浏览器访问 http://127.0.0.1:9000 ,若能访问则表示安装成功。

四、使用 MinIO 客户端 mc(Minio Client)

mc 提供了一些 Unix 常用命令的替代品,支持文件系统和亚马逊 S3 云存储服务等。更多信息参考 mc 快速入门指南。

  1. mc shell 自动补全
    如果使用的是 bash、zsh 或 fish,shell 补全默认嵌入在 mc 中,安装自动补全使用 mc --autocompletion ,重新启动 shell 后 mc 将自动完成命令。

  2. 查看 mc 版本
    使用 mc --version 命令。

  3. 列出存储桶
    例如,使用 mc ls play 列出来自 https://play.min.io 的所有存储桶(以 json 格式列出可使用 mc --json ls play )。

  4. 创建桶
    使用 mb 命令在对象存储上创建新存储桶,其行为类似于文件系统中的 mkdir -p 命令。需注意 bucket 相当于文件系统中的驱动器或挂载点,不应视为文件夹,MinIO 对每个用户创建的存储桶数量没有限制。
    首先添加 MinIO 存储服务:cd /opt/bigdata/minio ,然后执行 ./mc config host add minio http://local-168-182-110:19000 admin admin123456 ,最后创建新存储桶:mc mb minio/mybucket 。

  5. 复制文件
    使用 cp 命令将数据从一个或多个源复制到目标,例如 mc cp wget-log minio/mybucket 。

  6. 日常使用
    可以添加 shell 别名来覆盖常用的 Unix 工具,例如:

    • alias ls='mcls'
    • alias cp='mccp'
    • alias cat='mccat'
    • alias mkdir='mcmb'
    • alias pipe='mcpipe'
    • alias find='mcfind'
    • alias tree='mctree'
  7. MinIO 管理员操作
    mc 提供 admin 子命令来执行管理任务,例如:

    • 查看集群信息:mc admin info minio (为方便使用,可设置别名 alias minfo='mcadmin info' ,然后执行 minfo minio )。
    • 全局选项:
      • --debug 选项用于显示详细调试输出,例如 mc admin info --debug minio 。
      • --json 选项启用 json 行格式的可解析输出,例如 mc admin --json info minio 。
    • 命令 service:用于重启和停止所有 MinIO 服务器,例如 mc admin service restart minio 。
    • 命令 policy:用于添加、删除、列出策略、获取策略信息以及为 MinIO 服务器上的用户设置策略等操作。

五、MinIO 基础概念

  1. Object:存储到 MinIO 的基本对象,如文件、字节流等。
  2. Bucket:用来存储 Object 的逻辑空间。每个 Bucket 之间的数据相互隔离,对于客户端而言,相当于一个存放文件的顶层文件夹。
  3. Drive:即存储数据的磁盘,在 MinIO 启动时以参数方式传入,MinIO 中所有的对象数据都会存储在 Drive 里。
  4. Set:一组 Drive 的集合,分布式部署时根据集群规模自动划分一个或多个 Set,每个 Set 中的 Drive 分布在不同位置。一个对象存储在一个 Set 上,一个集群会划分为多个 Set,一个 Set 包含的 Drive 数量是固定的,默认由系统根据集群规模自动计算得出,且一个 Set 中的 Drive 会尽可能分布在不同的节点上。
  5.  MinIO特点

     数据保护

      Minio使用Minio Erasure Code(纠删码)来防止硬件故障。即便损坏一半以上的driver,但是仍然可以从中恢复。

    高性能

      作为高性能对象存储,在标准硬件条件下它能达到55GB/s的读、35GB/s的写速率

    可扩容

      不同MinIO集群可以组成联邦,并形成一个全局的命名空间,并跨越多个数据中心

    SDK支持

      基于Minio轻量的特点,它得到类似Java、Python或Go等语言的sdk支持

    有操作页面

      面向用户友好的简单操作界面,非常方便的管理Bucket及里面的文件资源

     功能简单

      这一设计原则让MinIO不容易出错、更快启动

    丰富的API

      支持文件资源的分享连接及分享链接的过期策略、存储桶操作、文件列表访问及文件上传下载的基本功能等。

    文件变化主动通知

      存储桶(Bucket)如果发生改变,比如上传对象和删除对象,可以使用存储桶事件通知机制进行监控,并通过以下方式发布出去:AMQP、MQTT、Elasticsearch、Redis、NATS、MySQL、Kafka、Webhooks等。

六、通过 API 操作 MinIO(以 Python 的 boto3 库为例)

  1. 安装 boto3 库:pip install boto3
  2. 配置 MinIO 的访问信息,示例代码如下:
minio_endpoint = "http://localhost:9000"  
access_key = "minioadmin"  # 默认的用户名
secret_key = "minioadmin"  # 默认的密码

s3 = boto3.client("s3", endpoint_url=minio_endpoint, 
                  aws_access_key_id=access_key, 
                  aws_secret_access_key=secret_key, 
                  use_ssl=False, 
                  verify=False)
  1. 常见操作示例:
    • 创建存储桶:s3.create_bucket(bucket="mybucket")
    • 上传文件:s3.upload_file(file_path, bucket_name, "uploaded_file.txt") ,其中 file_path 为要上传的文件路径,bucket_name 为目标存储桶名称。

七、启动 MinIO 服务(以 Windows 系统为例)

  1. 创建数据存储目录,例如在 D 盘下创建一个名为 minio_data 的目录。
  2. 打开命令提示符或 PowerShell,切换到 minio.exe 所在的目录,运行以下命令启动 MinIO 服务:minio.exe server d:\minio_data --console-address ":9001" 。该命令会使用 d:\minio_data 目录来存储数据,并将管理控制台运行在 9001 端口,MinIO 的 API 默认运行在 9000 端口。
  3. 可通过浏览器访问 http://localhost:9001 打开 MinIO 的管理控制台,进行创建和管理存储桶、上传和下载文件等操作。
  4. 停止 MinIO 服务,可在命令提示符或 PowerShell 中按下 Ctrl+C 来中断 MinIO 的进程,或直接关闭运行 MinIO 的命令行窗口。若将 MinIO 作为后台服务运行,可能需要使用服务管理工具来停止它。

在实际使用中,请注意保护好 MinIO 的访问密钥,确保数据的安全性。同时,根据具体的需求和场景,合理配置 MinIO 的相关参数和设置。更多高级功能和详细信息,请参考 MinIO 的官方文档。

;