硬件清单
在规划生产环境中分布式 MinIO 部署的硬件配置时,请使用以下清单。
注意事项
在为您的 MinIO 实施选择硬件时,请考虑以下因素
预期在启动时存储的以太字节为单位的数据量
未来至少两年内数据的预期增长规模
按平均对象大小划分的对象数量
数据的平均保留时间(以年为单位)
要部署的站点数量
预期的存储桶数量
生产硬件推荐
以下清单遵循 MinIO 的 推荐配置,用于生产部署。提供的指南旨在作为基线,不能取代 MinIO SUBNET 性能诊断、架构审查和直接与工程部门联系的支持。
与任何分布式系统一样,MinIO 从在给定 服务器池 中为所有节点选择相同的配置中受益。确保在整个池节点之间一致地选择硬件(CPU、内存、主板、存储适配器)和软件(操作系统、内核设置、系统服务)。
如果节点具有不同的硬件或软件配置,部署可能会出现不可预测的性能。从将老化数据存储在成本较低的硬件中获益的工作负载应该改为部署专用的“暖”或“冷”MinIO 部署,并将数据 过渡 到该层。
MinIO 不提供托管服务或硬件销售
请参阅我们的 参考硬件 页面,了解我们硬件合作伙伴精选的服务器和存储组件。
描述 |
最低 |
推荐 |
|
---|---|---|---|
专门为 MinIO 租户提供服务的 Kubernetes 工作节点。 |
每个租户 4 个工作节点 |
每个租户 8 个或更多工作节点 |
|
每个 MinIO 服务器 pod 4 个 PV |
每个 MinIO 服务器 pod 8 个或更多 PV |
||
25GbE |
100GbE |
||
支持现代 SIMD 指令(AVX-512)的服务器级 CPU,例如 Intel® Xeon® Scalable 或更高版本。 |
每个 MinIO Pod 4 个 vCPU |
每个 MinIO Pod 8 个或更多 vCPU |
|
可用内存以满足或超过每个服务器的使用量,并留出合理的缓冲区。 |
每个工作节点 32GB 的可用内存 |
每个工作节点 128GB 或更多可用内存 |
重要
以下领域对 MinIO 性能的影响最大,按重要性排序列出
网络基础设施 |
吞吐量不足或有限会限制性能 |
---|---|
存储控制器 |
旧固件、吞吐量有限或硬件故障会限制性能并影响可靠性 |
存储(驱动器) |
旧固件或速度慢/老化/故障硬件会限制性能并影响可靠性 |
在关注其他硬件资源(例如计算相关约束)之前,优先确保每个领域所需的组件。
以上最低建议反映了 MinIO 在帮助企业客户在各种 IT 基础设施上部署时保持所需 SLA/SLO 的经验。虽然 MinIO 可以在低于最低建议拓扑的情况下运行,但任何潜在的成本节约都伴随着可靠性、性能或整体功能下降的风险。
网络
MinIO 建议使用高速网络来支持连接存储(聚合驱动器、存储控制器和 PCIe 总线)的最大可能吞吐量。下表提供了一个一般指南,说明给定物理或虚拟网络接口支持的最大存储吞吐量。此表假设所有网络基础设施组件(如路由器、交换机和物理布线)也支持 NIC 带宽。
NIC 带宽(Gbps) |
估计的聚合存储吞吐量(GBps) |
10Gbps |
1.25GBps |
25Gbps |
3.125GBps |
50Gbps |
6.25GBps |
100Gbps |
12.5GBps |
网络对 MinIO 性能的影响最大,低主机带宽会人为地限制存储的潜在性能。以下网络吞吐量限制示例假设旋转磁盘具有约 100MB/S 的持续 I/O
1GbE 网络链路可以支持高达 125MB/s,或一个旋转磁盘
10GbE 网络可以支持约 1.25GB/s,可能支持 10-12 个旋转磁盘
25GbE 网络可以支持约 3.125GB/s,可能支持约 30 个旋转磁盘
内存
内存主要限制每个节点的并发连接数。
可以使用以下公式计算每个节点的最大并发请求数
\(totalRam / ramPerRequest\)
要计算每个请求使用的 RAM 量,请使用以下公式
\(((2MiB + 128KiB) * driveCount) + (2 * 10MiB) + (2 * 1 MiB)\)
10MiB 是 v1 的默认擦除块大小。1 MiB 是 v2 的默认擦除块大小。
下表列出了基于主机驱动器数量和可用系统 RAM 的节点上的最大并发请求
驱动器数量 |
32 GiB 的 RAM |
64 GiB 的 RAM |
128 GiB 的 RAM |
256 GiB 的 RAM |
512 GiB 的 RAM |
---|---|---|---|---|---|
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 |
下表提供了基于节点上本地存储总量的 MinIO 内存分配的一般指南
总主机存储 |
推荐的主机内存 |
---|---|
高达 1 缇字节 (Ti) |
8GiB |
高达 10 缇字节 (Ti) |
16GiB |
高达 100 缇字节 (Ti) |
32GiB |
高达 1 拍字节 (Pi) |
64GiB |
超过 1 拍字节 (Pi) |
128GiB |
重要
从 RELEASE.2024-01-28T22-35-53Z 开始,MinIO 在分布式设置中为每个节点预分配 2GiB 的内存,并在单节点设置中预分配 1GiB 的内存。
存储
对驱动器的独占访问权限
MinIO **需要** 对提供用于对象存储的驱动器或卷进行独占访问。任何其他进程、软件、脚本或人员不应对提供给 MinIO 的驱动器或卷或 MinIO 在其上放置的对象或文件执行任何操作。
除非 MinIO 工程师指示,否则不要使用脚本或工具直接修改、删除或移动提供给驱动器的任何数据分片、奇偶校验分片或元数据文件,包括从一个驱动器或节点移动到另一个驱动器或节点。此类操作很可能会导致超出 MinIO 恢复能力的大范围损坏和数据丢失。
MinIO 建议为每个满足该租户性能目标的 MinIO 租户配置一个存储类。
尽可能地,将 PV 底层的存储类、CSI 或其他配置程序配置为将卷格式化为 XFS,以确保最佳性能。
确保为每个租户中配置的所有 PV 提供一致的底层存储类型 (NVMe、SSD、HDD)。
确保每个租户中所有节点上的每个 PV 的呈现容量相同服务器池。MinIO 将每个 PV 的最大可用大小限制为池中最小的 PV。例如,如果一个池有 15 个 10TB PV 和 1 个 1TB PV,MinIO 将每个 PV 的容量限制为 1TB。
推荐的硬件测试
MinIO 诊断
运行内置的健康诊断工具。如果您有权访问 SUBNET,则可以将结果上传到那里。
mc support diag ALIAS --airgap
将 ALIAS 替换为部署定义的 alias
。
MinIO 支持诊断工具
对于注册到 MinIO SUBNET 的部署,您可以运行内置的支持诊断工具。
运行三个 mc support perf
测试。
这些服务器端测试验证网络、驱动器和对象吞吐量。使用默认选项运行所有三个测试。
网络测试
在别名为
minio1
的集群上运行网络吞吐量测试。mc support perf net minio1
驱动器测试
对别名为
minio1
的集群中所有节点上的所有驱动器运行驱动器读/写性能测量。该命令使用默认的 4MiB 块大小。mc support perf drive minio1
对象测试
测量别名为
minio1
的对象上的 S3 读/写性能。MinIO 自动调整并发性以获得最大吞吐量和 IOPS(每秒输入/输出次数)。mc support perf object minio1
操作系统诊断工具
如果您无法运行 mc support diag
或结果显示意外结果,则可以使用操作系统的默认工具。
在所有服务器上独立测试每个驱动器,以确保它们在性能上是相同的。使用这些操作系统级工具的结果来验证存储硬件的功能。记录结果以备日后参考。
在写入操作期间测试驱动器的性能
此测试通过以最多一定数量的字节一次创建指定数量的块来模拟驱动器在写入未缓存数据时的工作方式,从而检查驱动器将新数据(未缓存)写入驱动器的能力。这使您可以查看具有持续文件 I/O 的实际驱动器性能。
dd if=/dev/zero of=/mnt/driveN/testfile bs=128k count=80000 oflag=direct conv=fdatasync > dd-write-drive1.txt
将
driveN
替换为要测试的驱动器的路径。dd
用于复制和粘贴数据的命令。
if=/dev/zero
从
/dev/zero
读取,这是一个系统生成的无限的 0 字节流,用于创建指定大小的文件of=/mnt/driveN/testfile
写入
/mnt/driveN/testfile
bs=128k
一次写入最多 128,000 字节
count=80000
写入最多 80000 个数据块
oflag=direct
使用直接 I/O 写入以避免数据从缓存中读取
conv=fdatasync
在完成之前物理写入输出文件数据
> dd-write-drive1.txt
将操作输出的内容写入当前工作目录中的
dd-write-drive1.txt
操作返回写入的文件数量、以字节为单位的总写入大小、操作的总持续时间(以秒为单位)以及写入速度(以每秒字节为单位)的顺序。
在读取操作期间测试驱动器的性能
dd if=/mnt/driveN/testfile of=/dev/null bs=128k iflag=direct > dd-read-drive1.txt
将
driveN
替换为要测试的驱动器的路径。dd
用于复制和粘贴数据的命令
if=/mnt/driveN/testfile
从
/mnt/driveN/testfile
读取;替换为用于测试驱动器读取性能的文件的路径of=/dev/null
写入
/dev/null
,这是一个虚拟文件,在操作完成后不会持久化bs=128k
一次写入最多 128,000 字节
count=80000
写入最多 80000 个数据块
iflag=direct
使用直接 I/O 读取以避免数据从缓存中读取
> dd-read-drive1.txt
将操作输出的内容写入当前工作目录中的
dd-read-drive1.txt
使用与您的部署的主要用例相似的足够大的文件来获得准确的读取测试结果。
以下指南可能有助于性能测试
小文件:< 128KB
普通文件:128KB – 1GB
大文件:> 1GB
您可以使用
head
命令创建要使用的文件。以下命令示例创建了一个名为testfile
的 10 千兆字节文件。head -c 10G </dev/urandom > testfile
操作返回读取的文件数量、以字节为单位的总读取大小、操作的总持续时间(以秒为单位)以及读取速度(以每秒字节为单位)。
第三方诊断工具
IO 控制器测试
使用 IOzone 测试输入/输出控制器和所有驱动器的组合。记录您部署中每台服务器的性能数据。
iozone -s 1g -r 4m -i 0 -i 1 -i 2 -I -t 160 -F /mnt/sdb1/tmpfile.{1..16} /mnt/sdc1/tmpfile.{1..16} /mnt/sdd1/tmpfile.{1..16} /mnt/sde1/tmpfile.{1..16} /mnt/sdf1/tmpfile.{1..16} /mnt/sdg1/tmpfile.{1..16} /mnt/sdh1/tmpfile.{1..16} /mnt/sdi1/tmpfile.{1..16} /mnt/sdj1/tmpfile.{1..16} /mnt/sdk1/tmpfile.{1..16} > iozone.txt
|
每个文件的大小为 1G |
|
4m 4MB 块大小 |
|
0=写入/重写,1=读取/重新读取,2=随机读/写 |
|
直接 I/O 现代 |
|
线程数量(\(numberOfDrives * 16\)) |
|
文件列表(上述命令使用每个驱动器 16 个文件进行测试) |