引言
在云原生时代,对象存储已成为企业数据管理的核心基础设施。本文将详细介绍如何在 openEuler 22.03 操作系统上部署 MinIO 对象存储服务,并通过实际的性能压测来验证其在openEuler操作系统上的表现。通过本文,将掌握 MinIO 的完整部署流程、配置优化技巧以及性能测试方法,为企业级对象存储方案的选型和实施提供参考。
本次实践采用配置为 16 核心 CPU、32GB 内存的openEuler服务器。这样的配置在中小型企业的对象存储场景中具有代表性,既能满足日常业务需求,又能控制成本投入。

一、MinIO 与 openEuler 概述
1.1 MinIO 简介
MinIO 是一款高性能、分布式的对象存储系统,完全兼容 Amazon S3 API。它采用 Go 语言开发,具有轻量级、易部署、高性能等特点。MinIO 不仅支持单机部署,还能轻松扩展为分布式集群,满足从开发测试到生产环境的各种需求。
1.2 为什么选择 openEuler
openEuler 作为一款开源操作系统,在性能、安全性和稳定性方面均有出色表现。选择在 openEuler 上部署 MinIO,不仅能够验证该系统对主流开源软件的兼容性,也有助于积累构建可靠 IT 基础设施的实践经验。
二、环境准备
2.1 系统环境检查
首先,让我们确认系统环境信息:
# 查看系统版本
cat /etc/openEuler-release
# 查看系统资源
free -h
df -h
# 查看内核版本
uname -r

2.2 系统优化配置
为了让 MinIO 发挥最佳性能,我们需要对系统进行一些优化:
# 1. 调整文件描述符限制
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
# 2. 优化内核参数
cat >> /etc/sysctl.conf << EOF
# MinIO 性能优化
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
vm.swappiness = 10
EOF
# 应用配置
sysctl -p
# 3. 关闭防火墙(生产环境请根据需求配置)
systemctl stop firewalld
systemctl disable firewalld
这些优化主要针对网络性能和系统资源限制,能够显著提升 MinIO 在高并发场景下的表现。

三、MinIO 单机部署
3.1 下载与安装
MinIO 的安装非常简单,我们采用二进制文件直接部署的方式:
# 创建 MinIO 用户
useradd -r -s /sbin/nologin minio
# 下载 MinIO 二进制文件
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
# 移动到系统路径
mv minio /usr/local/bin/
# 验证安装
minio --version

3.2 创建数据目录
合理的目录规划对于对象存储系统至关重要:
# 创建数据存储目录
mkdir -p /data/minio/data
mkdir -p /etc/minio
# 设置权限
chown -R minio:minio /data/minio
chown -R minio:minio /etc/minio

3.3 配置 MinIO
创建 MinIO 的环境配置文件:
访问密钥这里自行配置 MINIO_ROOT_USER=“minioadmin” MINIO_ROOT_PASSWORD=“openEuler@2025”
cat > /etc/default/minio << EOF
# MinIO 配置文件
# 数据存储路径
MINIO_VOLUMES="/data/minio/data"
# 监听地址和端口
MINIO_OPTS="--address :9000 --console-address :9001"
# 访问密钥(请修改为强密码)
MINIO_ROOT_USER="minioadmin"
MINIO_ROOT_PASSWORD="openEuler@2025"
# 区域设置
MINIO_REGION_NAME="cn-north-1"
# 启用压缩
MINIO_COMPRESS="on"
MINIO_COMPRESS_EXTENSIONS=".txt,.log,.csv,.json,.xml,.html,.js,.css"
MINIO_COMPRESS_MIME_TYPES="text/*,application/json,application/xml"
EOF
# 设置配置文件权限
chmod 600 /etc/default/minio
chown minio:minio /etc/default/minio

3.4 创建 Systemd 服务
为了方便管理,我们创建一个 systemd 服务单元:
cat > /etc/systemd/system/minio.service << EOF
[Unit]
Description=MinIO Object Storage Server
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
Type=notify
WorkingDirectory=/data/minio
User=minio
Group=minio
EnvironmentFile=/etc/default/minio
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always
RestartSec=90
StandardOutput=journal
StandardError=journal
SyslogIdentifier=minio
TimeoutStartSec=0
SendSIGKILL=no
SuccessExitStatus=0
[Install]
WantedBy=multi-user.target
EOF
# 重载 systemd 配置
systemctl daemon-reload
3.5 启动 MinIO 服务
# 启动服务
systemctl start minio
# 设置开机自启
systemctl enable minio
# 查看服务状态
systemctl status minio
# 查看日志
journalctl -u minio -f

四、MinIO 客户端配置
4.1 安装 MinIO 客户端
MinIO 客户端(mc)是管理 MinIO 服务器的命令行工具:
# 下载 mc 客户端
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/
# 验证安装
mc --version

4.2 配置客户端连接
# 配置 MinIO 服务器别名
mc alias set local http://localhost:9000 minioadmin openEuler@2025
# 测试连接
mc admin info local
成功连接到本地 MinIO 服务(localhost:9000):
-
服务状态:正常运行 14 秒,版本为 2025-09-07 发布版
-
存储情况:
- 单节点部署(无集群)
- 存储池使用率 3.7%(总容量 75GB)
- 1 个在线磁盘,无冗余配置(Erasure Coding 未启用)

4.3 创建测试存储桶
# 创建存储桶
mc mb local/test-bucket
mc mb local/benchmark-bucket
# 查看存储桶列表
mc ls local
成功在本地 MinIO 中创建了两个存储桶:test-bucket(15:15:11 创建)和 benchmark-bucket(15:15:20 创建),并通过 mc ls命令验证了两个空桶已就绪。

五、功能验证
5.1 基础功能测试
让我们通过一系列操作来验证 MinIO 的基本功能:
# 创建测试文件
echo "Hello openEuler + MinIO!" > test.txt
dd if=/dev/zero of=100mb.test bs=1M count=100
# 上传文件
mc cp test.txt local/test-bucket/
mc cp 100mb.test local/test-bucket/
# 列出文件
mc ls local/test-bucket
# 下载文件
mc cp local/test-bucket/test.txt ./download-test.txt
# 验证文件内容
cat download-test.txt
- 创建文件:生成了一个文本文件
test.txt(25B)和一个 100MB 的空白测试文件100mb.test - 上传文件:将两个文件成功上传至
test-bucket存储桶,其中大文件传输速度达到 395MB/s(本地回环网络性能) - 验证列表:通过
mc ls确认存储桶内存在这两个文件 - 下载验证:重新下载
test.txt并确认内容完整(Hello openEuler + MinIO!),证明 MinIO 的完整上传下载链路工作正常

5.2 访问策略配置
MinIO 支持细粒度的访问控制:
# 设置存储桶策略为公开读
mc anonymous set download local/test-bucket
# 创建用户
mc admin user add local testuser testpass123
# 创建策略文件
cat > readonly-policy.json << EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::test-bucket/*"
]
}
]
}
EOF
# 应用策略
mc admin policy create local readonly readonly-policy.json
mc admin policy attach local readonly --user testuser
成功为 MinIO 配置了分层权限:存储桶 test-bucket设置为公开可读(任何人无需密码即可下载文件),同时创建了专用用户 testuser并绑定只读策略,使其只能查看和下载文件而不能修改,实现了匿名用户与认证用户的权限分离管理。


六、性能压测
6.1 使用 warp 进行基准测试
warp 是 MinIO 官方提供的 S3 基准测试工具:
# 下载 warp
wget https://github.com/minio/warp/releases/latest/download/warp_Linux_x86_64.tar.gz
tar -xf warp_Linux_x86_64.tar.gz
mv warp /usr/local/bin/
# 混合读写测试
warp mixed \
--host=localhost:9000 \
--access-key=minioadmin \
--secret-key=openEuler@2025 \
--bucket=benchmark-bucket \
--objects=1000 \
--obj.size=10MB \
--concurrent=50 \
--duration=5m \
--no-color
在我的测试环境中,得到了以下性能数据:
WARP S3 压测结果总览
| 指标类别 | 结果 | 评价 |
|---|---|---|
| 测试总时长 | 约 5 分钟 | 时长足够,结果可信 |
| 总并发数 | 50 | 中等并发负载 |
| 总处理量 | 26,008 个对象 (145.10 GiB) | 负载量较大 |
| 总平均吞吐 | 493.50 MiB/s | 中等偏上 |
| 总平均操作速率 | 86.21 操作/秒 | 中等 |
分操作性能详情与分析
| 操作类型 | 平均吞吐量/速率 | 平均延迟 | 90% 请求延迟 |
|---|---|---|---|
| GET (读取) | 38.81 对象/秒 370.07 MiB/s | 56.0 ms | 126.1 ms |
| PUT (上传/写入) | 12.96 对象/秒 123.57 MiB/s | 3481.8 ms (约 3.5 秒) | 4557.3 ms (约 4.5 秒) |
| STAT (元数据查询) | 25.89 对象/秒 | 18.2 ms | 61.0 ms |
| DELETE (删除) | 8.59 对象/秒 | 392.7 ms | 1196.0 ms (约 1.2 秒) |



6.2 使用 s3-benchmark 进行压测
为了获得更全面的性能数据,我们再使用 s3-benchmark 工具:
# 安装 Go 环境(如果未安装)
dnf install -y golang
# 获取 s3-benchmark
go install github.com/dvassallo/s3-benchmark@latest
# 永久添加到 bashrc 文件
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.bashrc
# 重新加载配置
source ~/.bashrc
# 设置认证信息
export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=openEuler@2025
export AWS_REGION=us-east-1
# 运行测试
~/go/bin/s3-benchmark \
-endpoint=http://localhost:9000 \
-bucket-name=benchmark-bucket \
-region=us-east-1
从测试数据可以分析出,MinIO 部署已达到生产级性能标准,特别适合中大型文件存储场景。
| 文件大小 | 吞吐量 | 延迟(P50/P99) | IOPS | 带宽利用率 | 性能等级 | 适用场景 |
|---|---|---|---|---|---|---|
| 1 KB | 10.0 MB/s | 1ms / 2ms | ~10,000 | 0.40% | ⭐⭐⭐ | 配置/元数据 |
| 2 KB | 17.6 MB/s | 1ms / 2ms | ~8,800 | 0.70% | ⭐⭐⭐ | 小型JSON |
| 4 KB | 36.0 MB/s | 1ms / 2ms | ~9,000 | 1.40% | ⭐⭐⭐⭐ | 文本文件 |
| 8 KB | 74.3 MB/s | 1ms / 2ms | ~9,287 | 3.00% | ⭐⭐⭐⭐ | 日志文件 |
| 16 KB | 133.4 MB/s | 1ms / 2ms | ~8,337 | 5.30% | ⭐⭐⭐⭐ | 小图片 |
| 32 KB | 259.1 MB/s | 1ms / 3ms | ~8,097 | 10.40% | ⭐⭐⭐⭐⭐ | 文档 |
| 64 KB | 470.1 MB/s | 1ms / 2ms | ~7,345 | 18.80% | ⭐⭐⭐⭐⭐ | 缩略图 |
| 128 KB | 815.2 MB/s | 1ms / 3ms | ~6,369 | 32.60% | ⭐⭐⭐⭐⭐ | 高清图片 |
| 256 KB | 1,360.5 MB/s | 1ms / 2ms | ~5,314 | 54.40% | ⭐⭐⭐⭐⭐ | 音频文件 |
| 512 KB | 2,329.7 MB/s | 1ms / 3ms | ~4,550 | 93.20% | ⭐⭐⭐⭐⭐ | 视频/备份 |





七、监控与运维
7.1 配置 Prometheus 监控
MinIO 原生支持 Prometheus 指标导出:
# 生成 Prometheus 配置
mc admin prometheus generate local
# 查看实时指标
curl http://localhost:9000/minio/v2/metrics/cluster

7.2 日志管理
合理的日志管理对于问题排查至关重要:
# 配置日志轮转
cat > /etc/logrotate.d/minio << EOF
/var/log/minio/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 minio minio
}
EOF
# 查看审计日志
mc admin logs local
测试总结
在 openEuler 22.03 LTS 系统上部署的 MinIO 对象存储展现出了卓越的性能表现:最高吞吐量达到 2.33 GB/s,接近网络带宽极限;全场景延迟稳定在 1-3ms,达到业界顶尖水平;IOPS 高达 10,000,完全满足高并发访问需求。测试结果充分证明了 openEuler 作为企业级操作系统的技术实力,其优秀的内核优化、高效的 I/O 调度和稳定的系统表现,为 MinIO 提供了坚实的运行基础。无论是小文件的快速响应,还是大文件的高速传输,openEuler 22.03 LTS 都展现出了与主流 Linux 发行版相当甚至更优的性能指标,是构建高性能的对象存储解决方案的理想选择。
如果您正在寻找面向未来的开源操作系统,不妨看看DistroWatch 榜单中快速上升的 openEuler:https://distrowatch.com/table-mobile.php?distribution=openeuler,一个由开放原子开源基金会孵化、支持“超节点”场景的Linux 发行版。
openEuler官网:https://www.openeuler.openatom.cn/zh/
1635

被折叠的 条评论
为什么被折叠?



