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