单节点
安装包下载
server安装包:http://dltest.minio.org.cn/server/minio/release/linux-arm64/
client安装包:https://dl.minio.org.cn/client/mc/release/linux-arm64/
安装
创建minio工作目录,之前下载的安装包放在这里
mkdir -p /data1/platform/minio
把之前下载的安装包复制进来,或者直接上传到这个目录
cp -p mc.RELEASE.2024-04-18T16-45-29Z minio.RELEASE.2024-04-18T19-09-19Z /data1/platform/minio
进入该目录
cd /data1/platform/minio
创建/usr/local/bin/mc、/usr/local/bin/minio链接到这个目录下的文件
ln -s mc.RELEASE.2024-04-18T16-45-29Z /usr/local/bin/mc
ln -s minio.RELEASE.2024-04-18T19-09-19Z /usr/local/bin/minio
创建启动脚本
cd /data1/platform/minio
vim run.sh
输入以下内容
#!/bin/bash
# 用户名
export MINIO_ACCESS_KEY=minio
# 密码
export MINIO_SECRET_KEY=minio123
# 启动指令
## --address 代表 s3 api 接口
## --console-address 代表网页访问控制台接口
## 最后四行为四台机器分别对应的地址及盘,这样的写法有利于之后进行扩展
## node1是集群的节点,可以在etc/hosts中配置,或者直接写成[本机ip]:2334,如10.12.48.2:2334
## 单节点的时候用路径data1/miniodata,下面是单节点单硬盘配置
## 多节点参考http://node1/data{1...2}/miniodata
/usr/local/bin/minio server --address=node1:2334 --console-address=node1:2333 --config-dir /etc/minio \
data1/miniodata
添加可执行权限
chmod +x run.sh
创建 minio server 的服务文件
vim /usr/lib/systemd/system/minio.service
内容如下,注意工作目录和启动的脚本为真实路径
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/
[Service]
# MinIO 路径
WorkingDirectory=/data1/platform/minio
# 启动命令路径
ExecStart=/data1/platform/minio/run.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
minio.service 文件创建完成之后,执行 systemctl daemon-reload
, 然后启动和 enable 服务:systemctl enable -now minio
这里可能在有的操作系统中无法用now来同时enable和启动,所以分开输入如下命令
systemctl enable minio
systemctl start minio
之后输入netstat -tuln
来查看2333、2334两个端口是否正常开启监听。
如果没有可以使用systemctl status minio
来查看启动情况,使用systemctl stop minio
来停止进程。
遇到端口未监听,参看status又无法理解的情况可以直接使用sh run.sh
的命令来运行脚本,会又报错提示。
文章最后由一些可能的报错解决办法。
minio客户端mc的使用
接口文档:https://min.io/docs/minio/linux/reference/minio-mc.html
mc 使用时涉及输入用户名密码, s3 api 地址等内容,最好先设置一个别名,然后通过别名进
行操作。
mc alias ls
# 查看已有别名
mc admin info <alias_name>
#显示别名对应的服务信息
示例如下,在进行后面的添加别名操作前你还看不到superminio的信息
创建别名
alias 为想使用的别名,s3-api-address 为 s3 api 接口地址,access_key 为用户,secret_key 为密码
mc alias set $alias $s3-api-address $access_key $secret_key
其中 s3-api-address, access_key, secret_key 都是前面在 run.sh 中定义的内容。
示例如下:
mc alias set superminio http://singlenode:2334 minio minio123
查看桶和文件
查看别名对应服务下的桶: mc ls superminio
# superminio 是别名的名字
查看桶里面的文件: mc ls <alias_name>/<bucket_name>
# mc ls 是以别名开头的路径
WebUI
访问[ip]:2333(示例:10.12.48.2:2333)即可。也可以使用systemctl status minio
来查看API和WebUI入口。
踩坑
无config-dir参数
从pdf复制/usr/local/bin/minio server --address=node1:2334 --console-address=node1:2333 --config-dir /etc/minio data1/miniodata这个命令的时候 /etc/minio 另起了一行,导致本来是空格的变成了\n换行,所以没读到–config-dir后的参数。
/etc/minio不是一个目录
上一个问题报错的原因当时没意识到,又因为换行了导致系统以为是另一个命令,所以报了一个找不到/etc/minio的错误,就以为是需要新建文件/etc/minio,所以直接建了一个。删掉就可以了。
Text file busy
基于这个新建了文件的错误,之前还有另一个奇怪的错误run.sh:行12: /etc/minio: Text file busy
。新建文件之后运行sh脚本时告诉我文件被占用,使用lsof /etc/minio
查看告诉我是sftp-serv占用的。查资料得知:
sftp-serv 进程通常是与 SFTP(Secure File Transfer Protocol)服务相关联的进程。SFTP 是一种安全的文件传输协议,用于在网络上安全地传输文件。sftp-serv 进程通常是 OpenSSH(Open Secure Shell)服务器中负责处理 SFTP 连接的组件之一。
直接关闭当前ssh窗口,重新登入服务器,Text file busy就能解决。当然,如果不是没注意命令换行就不会到这一步。
单节点部署时命令的问题
我在sh脚本里使用了http://node1/data1/miniodata,它告诉我单节点用绝对路径就可以了。