在 Linux 上给 MinIO 限速,MinIO 本身没有“直接限速参数”,但可以通过 操作系统层或部署方式 来实现。下面按常见场景给你最实用的做法。
| 场景 | 推荐方式 |
|---|---|
| 单节点 / systemd 启动 | tc(Linux Traffic Control) |
| Docker 部署 | docker 网络限速 |
| Kubernetes | NetworkPolicy + CNI(如 Calico) |
| 应用层 | 客户端限速(s3cmd / rclone) |
tc 限制 MinIO 端口(推荐)假设:
9000# 查看网卡
ip addr
# 假设网卡是 eth0
# 清除旧规则
tc qdisc del dev eth0 root 2>/dev/null
# 创建根队列
tc qdisc add dev eth0 root handle 1: htb
# 创建类,限制 10mbit
tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit ceil 10mbit
# 过滤 MinIO 端口
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 9000 0xffff flowid 1:1
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip sport 9000 0xffff flowid 1:1
✅ 上传 + 下载都会受限
✅ 实时生效
❌ 重启失效(需写脚本)
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 \
match ip sport 9000 0xffff flowid 1:1
docker run -d \
--name minio \
--network=bridge \
--blkio-weight 500 \
minio/minio server /data
⚠️ Docker 本身 不直接支持 tc 限速,需要:
tc qdisc add dev docker0 root tbf rate 10mbit burst 32kbit latency 400ms
或限制 veth 接口(稍复杂)
apiVersion: crd.projectcalico.org/v1
kind: Bandwidth
metadata:
name: minio-bandwidth
spec:
ingress: "10M"
egress: "10M"
或 Pod 注解:
annotations:
kubernetes.io/ingress-bandwidth: "10M"
kubernetes.io/egress-bandwidth: "10M"
⚠️ 取决于 CNI 插件支持
s3cmd --limit-rate=1M get s3://bucket/file
rclone copy minio:bucket /data --bwlimit 10M
✅ 简单
❌ 只能限制客户端,不能限制服务端
MinIO 不提供内置限速参数
官方建议:
✅ 生产环境
MinIO
↓
Linux tc / 防火墙
↓
物理网卡限速
✅ 云环境
MinIO
↓
K8s + Calico Bandwidth
你可以直接告诉我:
我可以给你 一条可直接复制执行的完整命令 ✅