openEuler 对象存储实战:MinIO 单机部署与性能压测

引言

在云原生时代,对象存储已成为企业数据管理的核心基础设施。本文将详细介绍如何在 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):

  1. 服务状态:正常运行 14 秒,版本为 2025-09-07 发布版

  2. 存储情况:

    1. 单节点部署(无集群)
    2. 存储池使用率 3.7%(总容量 75GB)
    3. 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
  1. 创建文件:生成了一个文本文件 test.txt(25B)和一个 100MB 的空白测试文件 100mb.test
  2. 上传文件:将两个文件成功上传至 test-bucket存储桶,其中大文件传输速度达到 395MB/s(本地回环网络性能)
  3. 验证列表:通过 mc ls确认存储桶内存在这两个文件
  4. 下载验证:重新下载 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/

相关推荐
黛琳ghz3 小时前
极速云原生:openEuler之Redis与Nginx部署性能实战
redis·nginx·云原生·操作系统·压力测试·openeuler·服务器部署
神秘的土鸡1 天前
openEuler 安全加固与性能实测: SELinux,防火墙等多维防护实践
网络·安全·apache·openeuler
资深web全栈开发2 天前
一文讲透 MinIO
minio·文件存储
江池俊2 天前
在openEuler上构建高性能LNMPR应用栈:一次深入实战与测评
redis·openeuler
分布式存储与RustFS2 天前
云原生基石:实战RustFS on Kubernetes,构建高可用存储架构
算法·云原生·kubernetes·对象存储·高可用·企业存储·rustfs
洁洁!2 天前
openEuler镜像获取与分发性能深度测试
openeuler
神秘的土鸡3 天前
openEuler 25.09 企业级 MySQL主从复制部署与性能优化实战提升50%
linux·数据库·mysql·性能优化·openeuler