搭建minio对象存储服务器
·
搭建minio对象存储服务器
docker-compose搭建minio服务端
services:
minio:
image: minio/minio
container_name: minio
command: server --console-address ":9001" /minio_data
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: Wps@123456
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
ports:
- "9000:9000"
- "9001:9001"
volumes:
- /minio_data:/minio_data # 挂载宿主机的 /minio_data 到容器的 /minio_data
Linux搭建minio对象存储服务器
参考:https://segmentfault.com/q/1010000042181876
minio中国:https://www.minio.org.cn/download.shtml#/linux
# 下载二进制程序
wget -c https://dl.min.io/server/minio/release/linux-amd64/minio
# 安装到指定目录
mkdir -p /opt/minio/bin/
install minio /opt/minio/bin/
# 创建minio运行时目录
mkdir -p /opt/minio/run
# 赋予可执行权限
chmod +x /opt/minio/bin/minio
# 创建数据文件目录
mkdir -p /minio_data
# 查看版本
/opt/minio/bin/minio -v

创建配置文件
mkdir -p /etc/minio
# 创建配置文件
vim /etc/minio/minio.conf
/etc/minio/minio.conf配置文件如下
# /etc/minio/minio.conf
# MinIO 服务器配置文件
# web端账号和密码
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=Minio@123456
# minio的安装目录
MINIO_HOME="/opt/minio"
# --- 身份认证凭据 ---
# MINIO_ACCESS_KEY=your-access-key
# MINIO_SECRET_KEY=your-secret-key
# 定义 MinIO 服务器将使用的数据存储卷(后端存储)。
## 注意:对于单节点多驱动器模式,这里会是多个本地路径,例如:MINIO_VOLUMES="/mnt/disk1/data /mnt/disk2/data /mnt/disk3/data /mnt/disk4/data"
## MINIO_VOLUMES="/minio_data2 /minio_data"
MINIO_VOLUMES="/minio_data"
# EC:0 表示对于 "STANDARD" 存储类别,使用0个奇偶校验块。可实现容量叠加--不建议
MINIO_STORAGE_CLASS_STANDARD="EC:0"
# --- 服务器选项 ---
## "9000" 是 MinIO S3 API 的标准默认端口。客户端(如 aws-cli, s3cmd, SDKs)将连接到这个端口。
## "9001" 是 MinIO 控制台的标准默认端口。您可以通过浏览器访问 http://<your-server-ip>:9001 来管理 MinIO。
MINIO_OPTS="--console-address :9001 --address :9000"
# MINIO_CERT_FILE=/etc/letsencrypt/live/your-domain.com/fullchain.pem
# MINIO_KEY_FILE=/etc/letsencrypt/live/your-domain.com/privkey.pem
常用参数
# 将以下内容写入到/det/defalut/minio文件中:
# MINIO_VOLUMES变量更改说名:本示例使用3台服务器,每台服务器分2个磁盘供minio服务使用,所有这里要把所有节点使用的所有数据目录都写上
MINIO_VOLUMES="http://192.168.1.100:9000/MinIO/data1 http://192.168.1.100:9000/MinIO/data2 http://192.168.1.101:9000/MinIO/data1 http://192.168.1.101:9000/MinIO/data2 http://192.168.1.102:9000/MinIO/data1 http://192.168.1.102:9000/MinIO/data2"
MINIO_OPTS="--console-address :9001" #minio服务监听端口号
MINIO_ROOT_USER=minioadmin #minio网页端的登录账号
MINIO_ROOT_PASSWORD=minioadmin #minio网页端的登录密码
MINIO_PROMETHEUS_AUTH_TYPE="public"
# MINIO_PROMETHEUS_URL="http://192.168.10.148:9090" #配置prometheus监控的服务器地址
# MINIO_SERVER_URL="http://192.168.192.163:9000" #负载均衡地址,没有负载均衡就不要放开注释
配置服务文件
vim /etc/systemd/system/minio.service
# [Unit] 部分:定义单元的基本信息和依赖关系
[Unit]
# 描述该服务为 Minio 服务
Description=Minio Service
# 服务的文档
Documentation=https://min.io/docs/minio/linux/index.html
# 前置服务条件
After=network.target
# AssertFileIsExecutable:检查指定的文件是否可执行,若不可执行,则服务无法启动
AssertFileIsExecutable=/opt/minio/bin/minio
# [Service] 部分:定义服务的运行参数和行为
[Service]
# 设置环境变量,用于配置 Minio 的访问凭证
EnvironmentFile=-/etc/minio/minio.conf
# 设置工作目录,Minio 服务将在该目录下运行
WorkingDirectory=/opt/minio/run
# 启动前执行:检查 MINIO_VOLUMES 变量是否设置
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/minio/minio.conf\" >&2; exit 1; fi"
# 启动命令
ExecStart=/opt/minio/bin/minio server $MINIO_VOLUMES $MINIO_OPTS
# 定义服务的重载命令,使用 HUP 信号通知进程重新加载配置
ExecReload=/bin/kill -s HUP $MAINPID
# 定义服务的停止命令,使用 QUIT 信号通知进程优雅地停止
ExecStop=/bin/kill -s QUIT $MAINPID
# 设置标准输出日志文件路径,Minio 的日志将写入此文件
StandardOutput=/var/logs/minio/minio.log
# 设置是否使用私有临时目录,true 表示启用,可增强安全性
PrivateTmp=true
# ProtectProc=invisible:将进程的 /proc 目录隐藏,增强安全性
ProtectProc=invisible
# 设置服务失败后的重启策略,on-failure 表示仅在服务异常退出时重启
Restart=on-failure
# 设置重启前的等待时间,单位为秒
RestartSec=5
# LimitNOFILE:设置服务可以打开的最大文件描述符数量
LimitNOFILE=65536
# TasksMax=infinity:设置服务可以创建的最大任务数为无限
TasksMax=infinity
# TimeoutStopSec=infinity:设置停止服务的超时时间为无限,确保服务能够完全停止
TimeoutStopSec=infinity
# SendSIGKILL=no:在停止服务时,不发送 SIGKILL 信号,确保服务能够优雅地停止
SendSIGKILL=no
# [Install] 部分:定义服务安装和启动的依赖关系
[Install]
# 设置多用户模式下系统启动时自动启动该服务
WantedBy=multi-user.target
设置开机自启动
# 加载服务文件
systemctl daemon-reload
# 设置开机自启并现在启动
systemctl enable --now minio.service
# 查看服务状态
systemctl status minio -l

Windows安装Minio服务器端
参考:https://min.io/docs/minio/windows/index.html
# 安装 MinIO 服务器端
Invoke-WebRequest -Uri "https://dl.min.io/server/minio/release/windows-amd64/minio.exe" -OutFile "C:\minio.exe"
启动minio server
# 启动minio服务端
## server 启动服务端
## C:\data 指定的 Minio 数据存储目录,会在该目录生产minio.sys目录
## 默认启动127.0.01:9000
minio.exe server C:\data
## 默认的配置目录是${HOME}/.minio,可以通过 --config-dir 命令自定义配置目录
## --console-address ":9001" 启动本地的9001端口,不能指定9000端口
minio server --console-address ":9001" C:\data
将minio封装成系统服务
<service>
<!-- id:安装windows服务后的服务ID,必须是唯一的。 -->
<id>minio</id>
<!-- name:服务名称,也必须是唯一的。一般和id一致即可。 -->
<name>minio_server</name>
<!-- description:服务说明,可以使用中文,可做备注使用。 -->
<description>minio Service</description>
<!-- env 是变量 -->
<env name="MINIO_ROOT_USER" value="admin" />
<env name="MINIO_ROOT_PASSWORD" value="omaidb12." />
<!-- executable:执行的命令,比如启动springboot应用的命令java。 -->
<executable>"C:\opt\minio\minio.exe"</executable>
<!-- arguments:命令执行参数,比如 包路径,类路径等。 -->
<arguments> server --console-address ":9001" C:\data</arguments>
<!-- 日志模式 reset|roll -->
<log mode="roll"></log>
</service>
默认账号密码
# 默认账号密码
RootUser: minioadmin
RootPass: minioadmin
# 设置用户名和密码 变量
# 设置用户名
setx MINIO_ROOT_USER admin
# 设置密码
setx MINIO_ROOT_PASSWORD password
常见问题
删除的文件没有释放空间怎么解决
参考:https://github.com/minio/minio/issues/19484
问题:用mc工具删除大目录文件,但空间没有立即释放导致存储空间爆满。
删除命令:
## -r 递归删除
## --dangerous 确认递归删除操作
## --force 强制删除,不提示确认
mc rm -r --dangerous --force
原因分析:
排查删除的文件服务器到了.minio.sys/tmp/.trash/垃圾目录,要过比较久的时间才释放,如何取消清理文件的服务器或调整服务器释放时间
解决办法:
下次 GC 时会将其删除。一般默认等5分钟
调整minio文件分享时长
https://cloud.tencent.com/developer/article/2206592
MinIO官方规定,分享链接最长时间只能是7天。
其实所谓的永久分享链接,大家想一下,永久分享和公开没什么两样
设置“桶”为公开,如图设置即可
在MinIO中引入了“桶”的概念,默认创建桶的权限是private私有的,也就是桶内的文件是不允许外界直接访问的, 所谓设置永久分享链接就是将创建的桶的权限设置公开public即可,就可以实现通过:http://地址/桶名称/文件名直接访问,比如访问的是图片:https://minio.itze.cn/image/logo.png 地址放到浏览器即可直接访问

更多推荐


所有评论(0)