将MinIO迁移至RustFS或SeaweedFS --- 准备环境¶
一. 环境描述¶
1. 本地MySQL环境¶
- 操作系统: RockyLinux9.6 64位
- MinIO版本: RELEASE.2024-10-29T16-01-48Z
- 部署模式: 单机部署
- 服务器IP地址: 192.168.100.103
- 数据库账户: 用户名mqadm 密码123.com
二. 部署MinIO¶
1. 安装服务端¶
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20241029160148.0.0-1.x86_64.rpm -O minio.rpm
sudo dnf install ./minio.rpm
2. 启动MinIO服务器¶
[root@5 ~]# mkdir ~/minio
[root@5 ~]# minio server ~/minio --console-address :9001
# mkdir 命令在指定路径显式创建文件夹。
# minio server 命令启动 MinIO 服务器。路径参数 ~/minio 标识服务器运行的文件夹。
# minio server 进程将输出打印到系统控制台,类似于以下内容。
INFO: Formatting 1st pool, 1 set(s), 1 drives per set.
INFO: WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.
MinIO Object Storage Server
Copyright: 2015-2026 MinIO, Inc.
License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
Version: RELEASE.2024-10-29T16-01-48Z (go1.22.8 linux/amd64)
API: http://192.168.100.103:9000 http://127.0.0.1:9000
RootUser: minioadmin
RootPass: minioadmin
WebUI: http://192.168.100.103:9001 http://127.0.0.1:9001
RootUser: minioadmin
RootPass: minioadmin
CLI: https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart
$ mc alias set 'myminio' 'http://192.168.100.103:9000' 'minioadmin' 'minioadmin'
Docs: https://docs.min.io
WARN: Detected default credentials 'minioadmin:minioadmin', we recommend that you change these values with 'MINIO_ROOT_USER' and 'MINIO_ROOT_PASSWORD' environment variables
三. 进入到web界面并配置¶
浏览器输入http://192.168.100.103:9001或http://127.0.0.1:9001

我们可在终端上得知minio的用户名和密码均为minioadmin,输入用户名和密码,进入页面

1. 创建一个Bucket¶


三个选项的含义为:
a. 存储桶(Bucket)—— 对象的容器
Bucket 等同于文件系统中的“顶级文件夹”,是存储对象的逻辑隔离单元。不同的是,对象存储中的 Bucket 通常扁平化管理(无嵌套子文件夹的概念,虽然控制台看起来有层级,但底层是通过对象键名前缀模拟的)
b. 版本控制(Versioning)—— 数据的“后悔药”
开启后,每次上传同名对象,旧对象不会覆盖,而是变成“历史版本”保留下来。你可以随时回退到任意历史版本,对误删、误改提供了极强的保护。
c. 对象锁定(Object Locking)—— 终极“防删除/防篡改”开关
这是合规性(WORM,一次写入多次读取) 的基础。一旦开启,对象在锁定期间绝对无法被删除或修改。
d. 配额(Quota)—— 存储空间的“天花板”
限制这个桶最多能塞多少数据(如 10GB)。一旦达到上限,后续上传会报错,用于防止租户无限制占用磁盘空间。
e. 保留策略(Retention)—— 设定“保护期”
设定一个时间范围(如“保留 30 天”),在此期限内对象不能被删除。它可以精细到单个对象级别,也可以作用于整个桶。
我们只是要做备份实验,这些就都不设置开启了
点击"Create Bucket"创建成功
2. 创建Access Key¶




可以看到Access Key为: VcNyMQZOdNkLTRbzVEq4;Secret Key为: eEIps0qlVczFsqYXCe3mTmkj6xYeP6FsYwja6dBd
3. 注:写入密码并设置开机自启动的步骤¶
# 1. 停掉前台进程
pkill -f "minio server"
# 2. 创建服务运行用户(解决 217/USER 失败)
useradd -r -s /sbin/nologin minio-user
# 3. 数据目录从 /root 迁出(/root 权限是700,minio-user 进不去),并授权
mkdir -p /data/minio
mv /root/minio/* /data/minio/ 2>/dev/null # 实验初期基本没数据,可忽略旧文件
chown -R minio-user:minio-user /data/minio
# 4. 写环境文件(重点:在这里设置新密码)
cat > /etc/default/minio <<'EOF'
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=2016.Com
MINIO_VOLUMES="/data/minio"
MINIO_OPTS="--console-address :9001"
EOF
# 5. 开机自启并启动
systemctl daemon-reload
systemctl enable --now minio
systemctl status minio
四. 部署客户端¶
# 下载客户端
curl -fSL -o /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc && mv mc /usr/local/bin/
# 用之前创建的 Access Key 配置连接
mc alias set myminio http://192.168.100.103:9000 \
VcNyMQZOdNkLTRbzVEq4 eEIps0qlVczFsqYXCe3mTmkj6xYeP6FsYwja6dBd
五. 准备测试文件¶
1. 创建一批用于测试的空文件¶
mkdir -p /tmp/backup-test/{docs,images,logs}
# 造不同大小的文件
dd if=/dev/urandom of=/tmp/backup-test/docs/report1.pdf bs=1M count=5
dd if=/dev/urandom of=/tmp/backup-test/docs/report2.pdf bs=1M count=20
dd if=/dev/urandom of=/tmp/backup-test/images/photo1.jpg bs=1M count=2
dd if=/dev/urandom of=/tmp/backup-test/images/photo2.jpg bs=1M count=8
dd if=/dev/urandom of=/tmp/backup-test/logs/app.log bs=1M count=50
2. 将准备好的文件上传到MinIO并验证¶
# 递归上传整个目录
mc cp --recursive /tmp/backup-test/ myminio/test-bucket/
# 验证:列对象
mc ls --recursive myminio/test-bucket/
# 抽查一个对象下载回来比对(内容应该一致)
mc cat myminio/test-bucket/docs/report1.pdf | md5sum
md5sum /tmp/backup-test/docs/report1.pdf
同时在网页端也可以看到该文件



