PowerEdge:适用于 HPC BeeGFS 存储的戴尔就绪型解决方案的功能
Summary: 适用于 HPC BeeGFS 存储的戴尔就绪型解决方案的功能
Instructions
目录
简介
此博客讨论了最近发布的 适用于 HPC BeeGFS 存储的戴尔就绪型解决方案的突出功能。这是该系列关于BeeGFS高性能存储解决方案的第三篇博客文章。第一个博客宣布了该解决方案的发布。第二个博客讨论了 适用于 HPC BeeGFS 存储的戴尔就绪型解决方案的可扩展性。它提供了有关基本配置、灵活的可扩展配置以及各种配置的测量顺序读/写性能的详细信息,表明可扩展性与解决方案中的服务器数量有关是线性的。当前博客重点介绍了“StorageBench”的使用,这是 BeeGFS 的集成存储目标基准。
BeeGFS 是一个开源文件系统,可从 www.beegfs.io 下载。它是一个并行文件系统,可在多个存储目标之间分发数据。它是一种软件定义的存储,将逻辑文件系统与底层存储硬件分离,允许用户定义数据的存储方式和位置。文件系统软件包括企业级功能,如高可用性、配额强制实施和访问控制列表。BeeGFS 的主要功能包括易用性、可扩展性和灵活性。它的易用性源于这样一个事实,即所有服务器端组件都是用户空间守护程序,而客户端是一个内核模块,不需要对内核本身进行任何补丁。可以安装和更新所有BeeGFS组件,而无需重新启动服务器。因此,我们可以将客户端和服务器添加到现有系统中,而不会造成任何停机。通过添加服务器和驱动器,可以在此处链接的博客中进一步扩展文件系统的性能和容量。BeeGFS支持多个Linux分发版,旨在与任何符合POSIX标准的本地文件系统配合使用。BeeGFS还支持在同一台服务器上运行给定服务的多个实例。
适用于 HPC BeeGFS 存储的戴尔就绪型解决方案利用了 BeeGFS 文件系统的所有关键功能,专为实现高性能而设计。该解决方案使用 PowerEdge R740xd 服务器来存储和服务和/或处理元数据和数据。每台 PowerEdge R740xd 服务器都配有 24 个 1.6 TB 英特尔 P4600 NVMe SSD,这是驱动器技术的第二次重大飞跃,其中 SSD 是第一次。在 HPC 环境中,暂存空间通常是一个限制因素。它可能太小或太慢。适用于 HPC BeeGFS 存储的 Dell EMC 就绪型解决方案旨在用作暂存解决方案,并使用 BeeGFS 文件系统提供暂存存储。
BeeGFS 包括两种集成基准测试工具,可分别帮助描述或评估网络或存储 :NetBench 和 StorageBench 。启用 NetBench 模式后,服务器会丢弃接收的写入请求,而不是写入数据。同样,对于读取请求,仅将内存缓冲区发送到客户端,而不是从底层文件系统读取。NetBench 模式用于测试独立于底层磁盘的网络流吞吐量。另一方面,StorageBench 旨在测量与网络性能无关的底层文件系统的流式处理吞吐量。StorageBench 是不使用网络的存储目标基准。storage-bench 命令只需将请求发送到存储目标以开始写入/读取数据。这样一来,我们消除了网络的影响。如果网络性能理想,我们从存储工作台获得的输出是系统可以实现的最佳性能。这篇博客说明了如何使用 StorageBench 来比较不同存储目标的性能,从而识别有缺陷或配置错误的目标。
StorageBench — 比较不同 RAID 配置的性能
StorageBench 不使用已装载的文件系统。当我们运行 StorageBench 时,每个文件只有一个目标。Storagebench 在系统上的每个存储目标上创建一个目录,其中创建的测试文件等于测试线程的数量。数据直接流式传输到此位置,以显示每个存储目标可用的低级别吞吐量。在没有任何网络通信的情况下,无法模拟文件分条。因此,存储基准测试结果与禁用条带化的客户端 IO 相当。运行基准测试时,如果采用默认条带化模式,文件将跨四个存储目标进行条带化。
为了测试不同的存储目标,使用了有关 戴尔 BeeGFS 存储解决方案可扩展性的博客中描述的中小型配置。两种配置在 RAID 1 中配置的元数据目标数量相同。它们在存储目标的 RAID 配置方面有所不同。小型配置具有存储目标,配置为 6 个驱动器的 RAID 0 中,而中型配置的存储目标配置为 RAID 10 中的六个驱动器。在小型和中型设置上配置的存储目标如下表所示:
| 表1 试验台配置 | ||
|---|---|---|
| 配置 | 中型 - 用于存储目标的 RAID 10 | 小型 - 用于存储目标的 RAID 0 |
| 元数据目标数 | 6 | 6 |
| 元数据服务实例数 | 6 | 6 |
| 存储服务器数量 | 5 | 2 |
| 存储目标数量 | 22 | 10 |
| 每台服务器的存储服务数量 | 4 | 4 |
| 每个 NUMA 分区的存储服务数量 | 2 | 2 |
| 每个存储服务实例的目标数 | 2 | 2 |
提醒:上述中等设置的配置仅用于使用 StorageBench 工具测试在不同 RAID 配置中配置的存储目标的吞吐量。
StorageBench 写入基准测试 - 在 RAID 0 中配置了存储目标的小型配置
使用 beegfs-ctl 工具启动和监视存储基准。beegfs-utils 软件包提供了 beegfs-ctl 命令行工具,可用于运行存储目标基准测试。以下示例在IO块大小为512 KB的所有BeeGFS存储服务器的所有目标上启动写入基准测试,每个目标使用16个线程,每个线程会将200 Gb的数据写入自己的文件。
[root@stor1 ~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16 Write storage benchmark was started. You can query the status with the --status argument of beegfs-ctl. Server benchmark status: Running: 10
“Running:10“ 输出指示系统中总共配置了 10 个存储目标。
要查询所有目标的基准状态/结果,可以运行以下命令:
[root@stor1 ~]# beegfs-ctl --storagebench --alltargets --status Server benchmark status: Finished: 10 Write benchmark results: Min throughput: 4692435 KiB/s nodeID: stor1-numa0-2 [ID: 6], targetID: 50 Max throughput: 5368537 KiB/s nodeID: meta-stor-numa1-2 [ID: 2], targetID: 48 Avg throughput: 4907091 KiB/s Aggregate throughput: 49070915 KiB/s
在上述命令中添加 verbose 会显示所有目标及其各自吞吐量的列表。
[root@meta-stor ~]# beegfs-ctl --storagebench --alltargets --status --verbose Server benchmark status: Finished: 10 Write benchmark results: Min throughput: 4692435 KiB/s nodeID: stor1-numa0-2 [ID: 6], targetID: 6 Max throughput: 5368537 KiB/s nodeID: meta-stor-numa1-2 [ID: 2], targetID: 2 Avg throughput: 4907091 KiB/s Aggregate throughput: 49070915 KiB/s List of all targets: 1 5368477 KiB/s nodeID: meta-stor-numa1-1 [ID: 1] 2 5368537 KiB/s nodeID: meta-stor-numa1-2 [ID: 2] 3 4706368 KiB/s nodeID: stor1-numa0-1 [ID: 3] 4 4896077 KiB/s nodeID: stor1-numa1-1 [ID: 4] 5 4872876 KiB/s nodeID: stor1-numa1-2 [ID: 5] 6 4692435 KiB/s nodeID: stor1-numa0-2 [ID: 6] 7 4879054 KiB/s nodeID: stor2-numa1-2 [ID: 7] 8 4864737 KiB/s nodeID: stor2-numa1-1 [ID: 8] 9 4696152 KiB/s nodeID: stor2-numa0-1 [ID: 9] 10 4726202 KiB/s nodeID: stor2-numa0-2 [ID: 10]
从输出中推断:
RAID 0 中配置的每个存储目标的平均吞吐量为 5.02 GB/s。
StorageBench 写入基准测试 - 在中等配置上,并在 RAID 10 中配置了存储目标
以下示例在IO数据块大小为512 KB的所有BeeGFS存储服务器的所有目标上启动写入基准测试,每个目标使用16个线程,其中每个线程将200 Gb数据写入自己的文件。
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16 Write storage benchmark was started. You can query the status with the --status argument of beegfs-ctl. Server benchmark status: Running: 22
在上述命令中添加 verbose 会显示所有目标及其各自吞吐量的列表。
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --status --verbose Server benchmark status: Finished: 22 Write benchmark results: Min throughput: 2705987 KiB/s nodeID: node006-numa0-1 [ID: 19], targetID: 1 Max throughput: 3364311 KiB/s nodeID: node001-numa1-1 [ID: 1], targetID: 1 Avg throughput: 3212845 KiB/s Aggregate throughput: 70682603 KiB/s List of all targets: 1 3364311 KiB/s nodeID: node001-numa1-1 [ID: 1] 2 3361591 KiB/s nodeID: node001-numa1-2 [ID: 2] 3 3309530 KiB/s nodeID: node002-numa0-1 [ID: 3] 4 3312840 KiB/s nodeID: node002-numa0-2 [ID: 4] 5 3332095 KiB/s nodeID: node002-numa1-1 [ID: 5] 6 3323319 KiB/s nodeID: node002-numa1-2 [ID: 6] 7 3313000 KiB/s nodeID: node003-numa0-1 [ID: 7] 8 3321214 KiB/s nodeID: node003-numa0-2 [ID: 8] 9 3335072 KiB/s nodeID: node003-numa1-1 [ID: 9] 10 3339743 KiB/s nodeID: node003-numa1-2 [ID: 10] 11 3302175 KiB/s nodeID: node004-numa0-1 [ID: 11] 12 3309474 KiB/s nodeID: node004-numa0-2 [ID: 12] 13 3329879 KiB/s nodeID: node004-numa1-1 [ID: 13] 14 3328291 KiB/s nodeID: node004-numa1-2 [ID: 14] 15 3306132 KiB/s nodeID: node005-numa0-1 [ID: 15] 16 3307096 KiB/s nodeID: node005-numa0-2 [ID: 16] 17 3318436 KiB/s nodeID: node005-numa1-1 [ID: 17] 18 3329684 KiB/s nodeID: node005-numa1-2 [ID: 18] 19 2705987 KiB/s nodeID: node006-numa0-1 [ID: 19] 20 2716438 KiB/s nodeID: node006-numa0-2 [ID: 20] 21 2707970 KiB/s nodeID: node006-numa1-1 [ID: 21] 22 2708326 KiB/s nodeID: node006-numa1-2 [ID: 22]
从输出中推断:
每个存储目标的平均吞吐量为 3.29 GB/s。
从在两个不同的BeeGFS设置上完成的StorageBench基准测试的输出,一个在RAID 0中配置了存储目标,另一个在RAID 10中配置了存储目标,可以明显看出,在RAID 0中配置的存储目标比在RAID 10中配置的存储目标的写入性能更好。当使用 dd 命令写入数据块大小为 1M 且使用“oflag=direct”的 10G 文件时,RAID 0 中配置的小型系统的平均吞吐量约为 5.1 GB/s,而 RAID 10 中配置的中型系统的平均吞吐量约为 3.4 GB/s,这与使用 storagebench 工具获得的结果相当。
StorageBench — 识别有缺陷或配置错误的存储目标
StorageBench 在 公告博客 中描述的中等配置上运行,以确定系统中是否存在任何配置错误或有缺陷的存储目标。
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --status --verbose Server benchmark status: Finished: 33 Read benchmark results: Min throughput: 2830479 KiB/s nodeID: node003-numa1-2 [ID: 14], targetID: 14 Max throughput: 3025500 KiB/s nodeID: node005-numa0-1 [ID: 22], targetID: 22 Avg throughput: 2917836 KiB/s Aggregate throughput: 96288596 KiB/s List of all targets: 1 2950039 KiB/s nodeID: node001-numa1-1 [ID: 1] 2 2956121 KiB/s nodeID: node001-numa1-2 [ID: 2] 3 2954473 KiB/s nodeID: node001-numa1-3 [ID: 3] 4 2957658 KiB/s nodeID: node002-numa0-1 [ID: 4] 5 2947109 KiB/s nodeID: node002-numa0-2 [ID: 5] 6 2969886 KiB/s nodeID: node002-numa0-3 [ID: 6] 7 2892578 KiB/s nodeID: node002-numa1-1 [ID: 7] 8 2886899 KiB/s nodeID: node002-numa1-2 [ID: 8] 9 2888972 KiB/s nodeID: node002-numa1-3 [ID: 9] 10 2861995 KiB/s nodeID: node003-numa0-1 [ID: 10] 11 2874314 KiB/s nodeID: node003-numa0-2 [ID: 11] 12 2879096 KiB/s nodeID: node003-numa0-3 [ID: 12] 13 2832635 KiB/s nodeID: node003-numa1-1 [ID: 13] 14 2830479 KiB/s nodeID: node003-numa1-2 [ID: 14] 15 2830971 KiB/s nodeID: node003-numa1-3 [ID: 15] 16 2986890 KiB/s nodeID: node004-numa0-1 [ID: 16] 17 2979197 KiB/s nodeID: node004-numa0-2 [ID: 17] 18 2983958 KiB/s nodeID: node004-numa0-3 [ID: 18] 19 2897974 KiB/s nodeID: node004-numa1-1 [ID: 19] 20 2900880 KiB/s nodeID: node004-numa1-2 [ID: 20] 21 2904036 KiB/s nodeID: node004-numa1-3 [ID: 21] 22 3025500 KiB/s nodeID: node005-numa0-1 [ID: 22] 23 3021558 KiB/s nodeID: node005-numa0-2 [ID: 23] 24 3017387 KiB/s nodeID: node005-numa0-3 [ID: 24] 25 2921480 KiB/s nodeID: node005-numa1-1 [ID: 25] 26 2930226 KiB/s nodeID: node005-numa1-2 [ID: 26] 27 2930548 KiB/s nodeID: node005-numa1-3 [ID: 27] 28 2900018 KiB/s nodeID: node006-numa0-1 [ID: 28] 29 2898520 KiB/s nodeID: node006-numa0-2 [ID: 29] 30 2907113 KiB/s nodeID: node006-numa0-3 [ID: 30] 31 2855079 KiB/s nodeID: node006-numa1-1 [ID: 31] 32 2853527 KiB/s nodeID: node006-numa1-2 [ID: 32] 33 2861480 KiB/s nodeID: node006-numa1-3 [ID: 33]
从上述输出中可以明显看出,所有存储目标的性能一致,系统中没有缺陷目标。
结论和未来的工作
此博客讨论了 BeeGFS 的主要功能,并说明了 Storage Bench 基准测试对于评估或比较不同 RAID 配置的性能以及确定是否有任何存储目标存在缺陷或配置错误非常有用。作为后续步骤的一部分,我们将稍后发布一份白皮书,介绍元数据性能和 IOR 性能,以及有关设计注意事项、调整和配置的其他详细信息。
参考材料
1) 适用于 HPC BeeGFS 存储的 Dell EMC Ready 解决方案 (PowerEdge):适用于 HPC BeeGFS 高性能存储的戴尔就绪型解决方案
2) 适用于 HPC BeeGFS 存储的戴尔就绪型解决方案的可扩展性 PowerEdge:适用于 HPC BeeGFS 存储的戴尔就绪型解决方案的可扩展性
3) BeeGFS 文档:
https://www.beegfs.io/wiki/4) 如何连接同一子网上的两个接口:
https://access.redhat.com/solutions/305645) 使用外部存储器的 PCI Express 直接存储器访问参考设计:https://www.intel.com/content/www/us/en/programmable/documentation/nik1412547570040.html#nik1412547565760