1. 硬件
1.1 CPU
- 支持 AVX/AVX-512,用于纠删码计算、SIMD 操作
- 支持 AES-NI,用于加密对象
| 单机存储总量 | 推荐的 vCPU 数 |
|---|
| 最多 1 TB | 8 |
| 最多 10 TB | 16 |
| 最多 100 TB | 32 |
| 最多 1 PB | 64 |
| 大于 1 PB | 128 |
1.2 内存
尽可能大一点能提高并发,增加 Page Cache 命中率。
| 磁盘数量 | 32 GiB | 64 GiB 内存 | 128 GiB 内存 | 256 GiB 内存 | 512 GiB 内存 |
|---|
| 4 个磁盘 | 1,074 | 2,149 | 4,297 | 8,595 | 17,190 |
| 8 个磁盘 | 840 | 1,680 | 3,361 | 6,722 | 13,443 |
| 16 个磁盘 | 585 | 1,170 | 2,341 | 4,681 | 9,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 GbE | 125 MB/s | 0.6 | 0.04 |
| 10 GbE | 1.25 GB/s | 6 | 0.4 |
| 25 GbE | 3.125 GB/s | 15 | 1 |
| 50 GbE | 6.25 GB/s | 31 | 2 |
| 100 GbE | 12.5 GB/s | 62 | 4 |
如果是多机部署,还需要考虑机器之间的数据传输,需要按照机器数量适当增加网卡。
隔离存储网络和业务网络也是推荐的做法,需要多增加网络设备。
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 的自动重试冲突