我们正在为管理应用统计学、生物信息学和基因组学的 HPC 计算集群设置新的存储。
配置
我们有一个装有 Dell EMC ME4084(84x12TB 7200rpm)的主机箱和一个装有 Dell EMC ME484(28x12TB)的附加机箱。EMC ME4084 提供 ADAPT 分布式 RAID(类似于 RAID6)和双硬件控制器。
文件服务器运行的是 CentOS 7。存储使用两根 SAS 电缆连接到文件服务器。每个 LUN 对应一个具有 ADAPT 的 14 磁盘组,两个 SAS 连接均显示为设备 sdb
和sdj
。以下示例针对 LUN ID 0 给出。
我们multipath
对主动-主动配置进行如下配置:
$ cat /etc/multipath.conf
defaults {
path_grouping_policy multibus
path_selector "service-time 0"
}
$ multipath -ll
mpatha (3600c0ff000519d6edd54e25e01000000) dm-6 DellEMC ,ME4
size=103T features='0' hwhandler='0' wp=rw
`-+- policy=‘service-time 0' prio=1 status=active
|- 1:0:0:0 sdb 8:16 active ready running
`- 1:0:1:0 sdj 8:144 active ready running
故障转移配置:
$ cat /etc/multipath.conf
defaults {
path_grouping_policy failover
path_selector "service-time 0"
}
$ multipath -ll
mpatha (3600c0ff000519d6edd54e25e01000000) dm-6 DellEMC ,ME4
size=103T features='0' hwhandler='0' wp=rw
|-+- policy=’service-time 0' prio=1 status=active
| `- 1:0:0:0 sdb 8:16 active ready running
`-+- policy=’service-time 0' prio=1 status=enabled
`- 1:0:1:0 sdj 8:144 active ready running
我们验证了在主动-主动配置中写入mpatha
会导致写入sdb
和,而在主动启用配置中仅写入。我们将和另一个条带化到逻辑卷中,并使用 XFS 对其进行格式化。sdj
sdb
mpatha
mpathb
测试设置
fio
我们对以下工作负载下的I/O 性能进行了基准测试:
- 单个 1MiB 随机读写过程
- 单个 4KiB 随机读写过程
- 16 个并行 32KiB 顺序读/写进程
- 16 个并行 64KiB 随机读/写进程
检测结果
Failover Active-Active
------------------- -------------------
Workload Read Write Read Write
-------------- -------- -------- -------- --------
1-1mb-randrw 52.3MB/s 52.3MB/s 51.2MB/s 50.0MB/s
1-4kb-randrw 335kB/s 333kB/s 331kB/s 330kB/s
16-32kb-seqrw 3181MB/s 3181MB/s 2613MB/s 2612MB/s
16-64kb-randrw 98.7MB/s 98.7MB/s 95.1MB/s 95.2MB/s
我只报告了一组测试,但结果在重复(n=3)和选择上是一致的path_selector
。
有什么原因导致主动-主动模式的性能至少无法与主动-启用模式相媲美?我不知道问题是否出在工作负载和多路径配置上。当我们使用线性逻辑卷而不是条带化时,差异更加惊人(20%)。我真的很好奇,想知道我是否忽略了一些显而易见的事情。
非常感谢,
尼古拉斯
答案1
由于您使用的是 HDD,因此单个控制器已经非常快 用于后端磁盘。在主动/主动模式下添加另一个控制器意味着没有额外的 IOP(由于 HDD),但在多路径级别会增加开销,因此性能会降低。
换句话说:你的硬盘空间将饱和很久以前第一个控制器的 CPU,因此请将它们保留在主动/被动模式。此外,我会尝试使用单个 28 磁盘阵列并对其进行基准测试,以查看它提供的性能是否比实际的 2x 14 磁盘设置更高或更低。