Please enable Javascript to view the contents

MinIO 基础设施选型与优化

 ·  ☕ 2 分钟

1. 硬件

1.1 CPU

  • 支持 AVX/AVX-512,用于纠删码计算、SIMD 操作
  • 支持 AES-NI,用于加密对象
单机存储总量推荐的 vCPU 数
最多 1 TB8
最多 10 TB16
最多 100 TB32
最多 1 PB64
大于 1 PB128

1.2 内存

尽可能大一点能提高并发,增加 Page Cache 命中率。

磁盘数量32 GiB64 GiB 内存128 GiB 内存256 GiB 内存512 GiB 内存
4 个磁盘1,0742,1494,2978,59517,190
8 个磁盘8401,6803,3616,72213,443
16 个磁盘5851,1702,3414,6819,362

1.3 硬盘

  • 推荐采用多机多盘,单机硬盘数量在 4、8、16,2 的幂次
  • 直接提供裸盘,不要使用 RAID
  • 磁盘的规格尽可能一致,不要有慢盘,否则会有严重木桶效应

1.4 网络

以顺序读取 HDD 200 MB/s,NVMe 3000 MB/s 为例,计算可支持的硬盘数量:

网络带宽吞吐上限HDD 数量 (200MB/s)NVMe 数量 (3000MB/s)
1 GbE125 MB/s0.60.04
10 GbE1.25 GB/s60.4
25 GbE3.125 GB/s151
50 GbE6.25 GB/s312
100 GbE12.5 GB/s624

如果是多机部署,还需要考虑机器之间的数据传输,需要按照机器数量适当增加网卡。

隔离存储网络和业务网络也是推荐的做法,需要多增加网络设备。

2. 内核配置

2.1 网络优化

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
cat << 'EOF' | sudo tee /etc/sysctl.d/99-minio-network.conf
# 增加核心缓冲区最大值 (64 MiB)
net.core.rmem_max=67108864
net.core.wmem_max=67108864

# 增加 TCP 缓冲区范围
net.ipv4.tcp_rmem=4096 131072 67108864
net.ipv4.tcp_wmem=4096 131072 67108864

# 启用 TCP 窗口缩放 (必须开启,否则无法超过 64KB)
net.ipv4.tcp_window_scaling=1

# 提高并发连接建立能力
net.core.somaxconn=65535
net.ipv4.tcp_max_syn_backlog=65535

# 优化高带宽网络下的丢包处理
net.core.netdev_max_backlog=250000

# 开启 TCP 快速开启 (TFO),减少握手延迟
net.ipv4.tcp_fastopen=3

# 禁用空闲后的慢启动(保持高吞吐状态)
net.ipv4.tcp_slow_start_after_idle=0
EOF
sysctl -p /etc/sysctl.d/99-minio-network.conf

2.2 禁用交换分区

1
2
3
4
cat << 'EOF' | sudo tee /etc/sysctl.d/99-minio-vm.conf
vm.swappiness=10
EOF
sysctl -p /etc/sysctl.d/99-minio-vm.conf

3. 系统配置

3.1 设置 TSC 时间同步

TSC 时间同步比系统时间同步更准确,更稳定。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
cat >/etc/systemd/system/clocksource-tsc.service <<'EOF'
[Unit]
Description=Set clocksource to tsc
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource'

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable clocksource-tsc.service
systemctl start clocksource-tsc.service

4. 文件系统

1
mkfs.xfs -f /dev/nvme1n1
1
mount -o noatime,nodiratime,logbufs=8,logbsize=256k,max_retries=0 /dev/nvme1n1 /mnt/data1
  • 使用 xfs 格式,更适合大文件、高并发
  • logbufs=8 提高元数据并发写入能力
  • logbsize=256k 增加日志缓冲区大小
  • noatime 禁用文件访问时间
  • nodiratime 禁用目录访问时间
  • max_retries=0 禁用重试,避免与 MinIO 的自动重试冲突

微信公众号
作者
微信公众号