Skip to main content
  1. Posts/

MinIO - 高性能对象存储

·222 words·2 mins· loading · loading · · ·
Develop Storage Object Storage
Table of Contents
Object Storage - This article is part of a series.
Part 1: This Article

简介
#

MinIO 是一个高性能对象存储,发布于 GNU Affero 通用公共许可证 v3.0。它与 Amazon S3 云存储服务 API 兼容。使用 MinIO 构建高性能基础设施,以支持机器学习、分析和应用数据工作负载。

安装
#

容器安装
#

独立的 MinIO 服务器最适合早期开发和评估。某些功能,如版本控制、对象锁定和存储桶复制,需要分布式部署 MinIO 并启用纠删码。对于扩展开发和生产,部署启用纠删码的 MinIO - 特别是每个 MinIO 服务器至少需要 4 个驱动器。有关更完整的文档,请参见 MinIO 纠删码.

运行 [[Podman]] 命令以使用临时数据卷运行最新的稳定版 MinIO 镜像作为容器:

podman run -p 9000:9000 -p 9001:9001 \
  quay.io/minio/minio server /data --console-address ":9001"

MinIO 部署使用默认的根凭据 minioadmin:minioadmin 开始。可以使用 MinIO 控制台测试部署,MinIO 控制台是内置于 MinIO 服务器的嵌入式对象浏览器。将运行在主机上的网页浏览器指向 http://127.0.0.1:9000 并使用根凭据登录。可以使用浏览器创建存储桶、上传对象并浏览 MinIO 服务器的内容。

还可以使用任何兼容 S3 的工具进行连接,例如 MinIO Client mc 命令行工具。有关使用 mc 命令行工具的更多信息,请参见使用 MinIO Client mc 进行测试。

也可以使用 Docker 进行部署

version: '3.8'

services:
  minio:
    image: quay.io/minio/minio
    container_name: minio1
    restart: unless-stopped
    user: "${UID}:${GID}"
    environment:
      MINIO_ROOT_USER: "ROOTUSER"
      MINIO_ROOT_PASSWORD: "CHANGEME123"
    ports:
      - "9000:9000"
      - "9001:9001"
    volumes:
      - ${HOME}/minio/data:/data
    command: server /data --console-address ":9001"

Play 服务器
#

https://play.min.io. 公共的 MinIO 服务器,用于测试和开发。此示例中显示的访问凭据对公众开放,上传到 play 的所有数据应视为公开和不受保护。

SDK
#

MinIO SDK: https://min.io/docs/minio/linux/developers/minio-drivers.html

初始化 MinIO 客户端
#

参数:

  1. endpoint:对象存储服务的 URL
  2. _minio.Options_:所有选项,包括凭据,自定义传输等
package main

import (
        "log"

        "github.com/minio/minio-go/v7"
        "github.com/minio/minio-go/v7/pkg/credentials"
)

func main() {
        endpoint := "play.min.io"
        accessKeyID := "Q3AM3UQ867SPQQA43P2F"
        secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
        useSSL := true

        // Initialize minio client object.
        minioClient, err := minio.New(endpoint, &minio.Options{
                Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
                Secure: useSSL,
        })
        if err != nil {
                log.Fatalln(err)
        }

        log.Printf("%#v\n", minioClient) // minioClient is now set up
}

读写策略设置
#

要在 MinIO 中设置桶(bucket)为公开读取但私有写入,需要配置桶策略(bucket policy)。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {"AWS": "*"},
      "Action": ["s3:GetObject", "s3:GetBucketLocation", "s3:ListBucket"],
      "Resource": [
        "arn:aws:s3:::your-bucket-name",
        "arn:aws:s3:::your-bucket-name/*"
      ]
    }
  ]
}

Ref
#

awsling
Author
awsling
A Web Developer, Product Designer & Elysia’s Stalker
Object Storage - This article is part of a series.
Part 1: This Article

Related

PostgreSQL 使用手册
·498 words·3 mins· loading · loading
Develop Database
Peewee - Python 轻量级 ORM 框架
·312 words·2 mins· loading · loading
Develop ORM Database Python
消息队列概述
·89 words·1 min· loading · loading
Develop MQ