硬件清单
在规划生产分布式 MinIO 部署的硬件配置时,请使用以下清单。
注意事项
在为您的 MinIO 实现选择硬件时,请考虑以下因素
预计在启动时存储的 TB 数据量
未来至少两年的数据规模增长预计
按平均对象大小划分的对象数量
数据的平均保留时间(以年为单位)
要部署的站点数量
预期桶的数量
生产硬件推荐
以下清单遵循 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,例如英特尔® 至强® 可扩展处理器或更高版本。 |
每个 MinIO Pod 4 个 vCPU |
每个 MinIO Pod 8 个或更多 vCPU |
|
可用的内存应满足或超过每个服务器的使用量,并留有一定缓冲。 |
每个工作节点 32GB 可用内存 |
每个工作节点 128GB 或更多可用内存 |
重要事项
以下方面对 MinIO 性能影响最大,按重要性排序:
网络基础设施 |
带宽不足或有限会限制性能 |
---|---|
存储控制器 |
旧固件、带宽有限或硬件故障会限制性能并影响可靠性 |
存储(驱动器) |
旧固件或速度慢/老化/故障的硬件会限制性能并影响可靠性 |
在关注其他硬件资源(例如计算相关限制)之前,优先确保每个区域所需的组件。
上述最低要求反映了 MinIO 在帮助企业客户在各种 IT 基础设施上部署 MinIO 并保持所需 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 Tebibyte (Ti) |
8GiB |
最多 10 Tebibyte (Ti) |
16GiB |
最多 100 Tebibyte (Ti) |
32GiB |
最多 1 Pebibyte (Pi) |
64GiB |
超过 1 Pebibyte (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
或结果显示意外结果,您可以使用操作系统的默认工具。
独立测试所有服务器上的每个驱动器,以确保它们在性能方面相同。使用这些 OS 级工具的结果来验证您的存储硬件的功能。记录结果以便日后参考。
在写入操作期间测试驱动器的性能
此测试检查驱动器通过创建指定数量的块(最多一定数量的字节)来模拟驱动器在写入未缓存数据时的工作方式,从而检查驱动器写入新数据(未缓存)到驱动器的能力。这使您能够看到在一致的文件 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
的 10GB 文件。head -c 10G </dev/urandom > testfile
该操作将返回读取的文件数量、读取的总大小(以字节为单位)、操作的总时长(以秒为单位)以及读取的速度(以字节/秒为单位)。
第三方诊断工具
I/O 控制器测试
使用 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 个文件) |