我们正在为我们正在管理的应用统计、生物信息学和基因组学的 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
和sdj
仅sdb
在启用主动的配置中写入。我们将mpatha
另一个条带化mpathb
到一个逻辑卷中,并使用 XFS 对其进行格式化。
测试设置
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%)。我真的很好奇我是否忽略了一些明显的东西。
非常感谢,
尼古拉斯
当您使用 HDD 时,单个控制器 对于您的后端磁盘来说已经非常快了。在主动/主动模式下添加另一个控制器意味着没有额外的 IOP(由于 HDD),但在多路径级别有更多开销,因此会降低性能。
换句话说:您将在第一个控制器的 CPU之前使 HDD 饱和,因此让它们处于主动/被动模式。此外,我会尝试使用单个 28 磁盘阵列并对其进行基准测试,以查看它是否提供了比实际 2x 14 磁盘设置更多或更少的性能。