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/s56.0 ms126.1 ms
PUT (上传/写入)​12.96 对象/秒​ 123.57 MiB/s3481.8 ms (约 3.5 秒)4557.3 ms (约 4.5 秒)
STAT (元数据查询)​25.89 对象/秒​18.2 ms61.0 ms
DELETE (删除)​8.59 对象/秒​392.7 ms1196.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 KB10.0 MB/s1ms / 2ms~10,0000.40%⭐⭐⭐配置/元数据
2 KB17.6 MB/s1ms / 2ms~8,8000.70%⭐⭐⭐小型JSON
4 KB36.0 MB/s1ms / 2ms~9,0001.40%⭐⭐⭐⭐文本文件
8 KB74.3 MB/s1ms / 2ms~9,2873.00%⭐⭐⭐⭐日志文件
16 KB133.4 MB/s1ms / 2ms~8,3375.30%⭐⭐⭐⭐小图片
32 KB259.1 MB/s1ms / 3ms~8,09710.40%⭐⭐⭐⭐⭐文档
64 KB470.1 MB/s1ms / 2ms~7,34518.80%⭐⭐⭐⭐⭐缩略图
128 KB815.2 MB/s1ms / 3ms~6,36932.60%⭐⭐⭐⭐⭐高清图片
256 KB1,360.5 MB/s1ms / 2ms~5,31454.40%⭐⭐⭐⭐⭐音频文件
512 KB2,329.7 MB/s1ms / 3ms~4,55093.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/

六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)内容概要:本文档围绕六自由度机械臂的ANN人工神经网络设计展开,详细介绍了正向逆向运动学求解、正向动力学控制以及基于拉格朗日-欧拉法推导逆向动力学方程的理论Matlab代码实现过程。文档还涵盖了PINN物理信息神经网络在微分方程求解、主动噪声控制、天线分析、电动汽车调度、储能优化等多个工程科研领域的应用案例,并提供了丰富的Matlab/Simulink仿真资源和技术支持方向,体现了其在多学科交叉仿真优化中的综合性价值。; 适合人群:具备一定Matlab编程基础,从事机器人控制、自动化、智能制造、电力系统或相关工程领域研究的科研人员、研究生及工程师。; 使用场景及目标:①掌握六自由度机械臂的运动学动力学建模方法;②学习人工神经网络在复杂非线性系统控制中的应用;③借助Matlab实现动力学方程推导仿真验证;④拓展至路径规划、优化调度、信号处理等相关课题的研究复现。; 阅读建议:建议按目录顺序系统学习,重点关注机械臂建模神经网络控制部分的代码实现,结合提供的网盘资源进行实践操作,并参考文中列举的优化算法仿真方法拓展自身研究思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小馒头学python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值