一、MinIO简介

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

MinIO 是一个非常轻量的服务,可以很简单的和其他应用的结合,类似NodeJS,Redis或者MySQL

官网:MinIO | 高性能,对Kubernetes友好的对象存储
官网


二、MinIO的优点

1. 性能

MinIO 号称是世界上速度最快的对象存储服务器。在标准硬件上,对象存储的读/写速度最高可以达到183GB/s171GB/s

2. 容器化支持

MinIO 提供了与k8setcddocker等容器化技术深度集成方案,可以说就是为了云环境而生的。

3. 丰富的SDK支持

MinIO 几乎提供了所有主流开发语言的SDK以及文档。

4 。AWSS3标准兼容

Amazon的S3 API是对象存储领域的事实标准。MinIO是S3兼容性的事实上的标准,是第一个采用API和第一个添加对S3 Select支持的标准之一。包括微软Azure在内的750多家公司使用MinIO的S3网关,这一数字超过了业内其他公司的总和。


三、安装MinIO

1. 前置

该安装方法是基于Docker安装,其余安装方式可从其他渠道查询
安装Docker:

2. 安装

官网给的安装教程

1
2
3
4
5
6
docker run -p 9000:9000 --name minio1 \
-e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \
-e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
-v /mnt/data:/data \
-v /mnt/config:/root/.minio \
minio/minio server /data

存在问题:
浏览器无法访问 MinIO 控制台,因为没有对外暴露控制台端口
解决方案:
对外暴露 MinIO 控制台的端口,通过–console-address ":50000"指定控制台端口为静态端口

所以我们使用以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
docker run -d -p 9000:9000 -p 50000:50000 --name minio \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=12345678" \
-v /mnt/data:/data \
-v /mnt/config:/root/.minio \
minio/minio server --console-address ":50000" /data

# 稍微说一下
# -d 后台运行
# -p 9000:9000 前面的9000是打开本机的9000端口映射docker容器中MinIO的9000端口
# -e "MINIO_ROOT_USER=admin" \ 改用户名
# -e "MINIO_ROOT_PASSWORD=12345678" \ 改密码,注意:密码尽量不要带符号,如*,#之类
# -v /mnt/data:/data \ 挂载卷
# -v /mnt/config:/root/.minio \ 挂载卷
# --console-address ":50000"指定控制台端口为静态端口

理论上我们就可以输入http://ip:50000访问了。首次访问会要求设置一个帐号、密码。

注意:
1、不知道服务器 IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的 IP。
2、遇到访问不了的情况,请再次检查在宝塔面板的防火墙和服务商的后台防火墙是否打开对应了端口。

3. 配置

创建 Buckets(桶)

点击Buckets - Create Bucket
创建 Buckets(桶)01

填写桶名称,根据需要点击选项,最后点击Create Bucket完成创建
创建 Buckets(桶)02

注:完成创建后需重启才能生效,可使用Docker直接重启

创建 Service Account

点击Access Keys - Create access key
创建Key01

如果只对特定Buckets(桶)开放 Service Account,则需要Restrict beyond user policy选择ON,并对内容进行配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"admin:*"
]
},
{
"Effect": "Allow",
"Action": [
"kms:*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::指定Buckets(桶)的名称/*"
]
}
]
}

点击Create创建 Service Account
创建Key02

创建成功会生成Access KeySecret Key,点击Download for import下载保存信息,或单独复制保存
创建Key03

设置区域

点击Settings,填入cn中国,点击Restore Defaults完成设置
设置区域


四、迁移MinIO

1. 准备

我们将使用名为mc的官方 MinIO 客户端。
我使用macOS,所以安装非常简单。该过程假设在不同平台上是相似的。
在本例中,我们要将数据从my_source迁移到my_destination
我们从创建这样的配置开始。
默认路径在您的主目录(~/.mc/config.json)中。
该文件应该看起来像这样(使用您的值)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"version": "10",
"aliases": {
"my_source": {
"url": "http://<remote_ip>:9001",
"accessKey": "my_access_key",
"secretKey": "my_secret",
"api": "S3v2",
"path": "auto"
},
"my_destination": {
"url": "https://data.example.com",
"accessKey": "my_access_key",
"secretKey": "my_secret",
"api": "S3v4",
"path": "auto"
}
}
}

2. 迁移

我们将使用mc mirror命令。

1
mc mirror my_source my_destination

五、拓展

1. 使用MinIO同步思源云笔记