计算化学公社

 找回密码 Forget password
 注册 Register
Views: 1689|回复 Reply: 2
打印 Print 上一主题 Last thread 下一主题 Next thread

[其它] DIY NAS小记 | Mini高性能集群部署(第一集)

[复制链接 Copy URL]

846

帖子

16

威望

4634

eV
积分
5800

Level 6 (一方通行)

小屁孩

本帖最后由 Entropy.S.I 于 2023-10-20 18:27 编辑

DIY NAS小记 | Mini高性能集群部署(第一集)

Oct-2023 by ア熵增焓减ウ | yult-entropy@qq.com | entropylt@163.com

0 写在前面

9月初笔者给朋友课题组设计了一套小集群,为了省钱,存储(NAS)部分是自行采购散件DIY的,组网也使用了二手硬件。NAS和交换机从下单散件到组装、调试完毕花了10天,原计划等到集群部署完成后综合起来写一篇帖子分享出来,但期间出现了一些问题,计算节点迟迟没有到货,故先把NAS部分单独发出来。


1 简介

采购这些散件已过去一个多月,行情有很大变化,因此价格仅供参考。

如果追求极致省钱,网卡也可以选用同为CX3 Pro芯片的拆机HP544+FLR。

18TB HDD没有选希捷EXOS X18,因为在Backblaze近几年的硬盘故障报告中,希捷EXOS大容量氦气HDD故障率远高于从HGST继承来的WDC Ultrastar系列。建议读者自行搜索Backblaze的报告。

在PCIe Gen 3平台上使用PCIe Gen 4 SSD是因为看中了致态7100的耐久度(推荐看此视频:https://www.bilibili.com/video/BV19a4y137p3)。

这套方案刚好耗尽了LGA 3647平台上从CPU直接引出的44+4条PCIe Lane,对强迫症很友好。

比较遗憾的是该存储没有冗余电源,拉低了整个系统的可用性。

存储系统的基本环境是Ubuntu Server + OpenZFS + NFS over RDMA (RoCE),没有直接采用TrueNAS Scale,因为目前此系统不支持RoCE。用上了ZFS中所有有助于提升IO性能的特性,包括ARC、L2ARC (Cache) VDEV、ZIL (SLOG) VDEV以及Metadata (Special) VDEV。其中,ARC是192GB RAM,Cache VDEV是2块致态7100 1TB 2-way stripe,SLOG VDEV是2块Intel傲腾900P 280GB 2-way mirror,Special VDEV是3块致态7100 1TB 3-way mirror。

Data pool的策略是2组6盘RAID Z1 VDEV。由于所购买硬盘是同一生产批次的,故分别对每个RAID Z1 VDEV中的1块HDD进行“老化”,这样做可以在一定程度上防止VDEV中多块HDD同时故障。笔者所采用的“老化”手段是插到自己的服务器上运行一天4K随机性能测试。

交换机没有RoCE所需的关键特性,因此整个存储网络并不是严格意义上的RDMA网络,但后续的实测表明,仅在服务端和客户端主机上启用RDMA,并使用NFS over RDMA挂载共享目录,存储的随机读写性能也明显高于普通以太网方案。

交换机是某大厂自行定制的(即“白牌交换机”),刚到手时没有任何技术资料,噪音极大,且卖家称其仅支持40G和10G速率,不支持其他速率,建议当作傻瓜交换机使用。笔者不信邪,依靠个人经验和直觉断断续续摸索了几天,实现了LACP链路聚合、风扇转速调节、更改端口速率。期间还不慎把交换机折腾变砖了一次,经过研究,进入系统shell修复了配置文件。后来笔者把这些经验都手把手传授给了卖家。


2 安装过程照片
▼机箱正面

▼机箱侧面

▼机箱背面

▼CPU、内存

▼安装CPU

▼主板

▼三件套

▼一堆致态7100 & 转接卡

▼傲腾900P

▼傲腾900P - U.2转接卡

▼一堆硬盘包装盒

▼一堆18TB HDD,贴了标签以便区分,“I”指的是连接到主板SFF-8643接口上的HDD,“E”指的是连接到HBA卡SFF-8087接口上的HDD

▼古董级HBA卡

▼古董级40G网卡MCX341A

▼给网卡和HBA卡的背面贴上导热垫,和M.2扩展卡的巨大散热片粘在一起,帮助散热

▼事后发现HBA卡温度依然达到了70℃

▼又加了一把TL-C12C

▼考虑到可靠性,给3组HDD分别接了一条大4P电源模组线,但是给系统盘用的SATA电源线没地方接了,只能再从下面拉回一个大4P接口,转接给系统盘供电

▼NAS上层

▼NAS下层

▼待机功率200W,国家电网战略合作伙伴

▼交换机(48*10G SFP+ & 4*40G QSFP)

3 配置过程截图
▼主板架构图

▼BIOS首页

▼设置PCIe拆分和速率参数,速率强制设为Gen 3是因为实测auto的情况下某些SSD偶尔会降速到Gen 2或Gen 1

▼在BIOS中为系统盘配置RAID 1

▼先安装Windows跑个分,CPU功率230W,16核3.9GHz,对于第一代Xeon可扩展CPU来说这是很夸张的频率

▼R23分数19655 pts,AMD Ryzen 7950X的一半

▼12*18TB HC550,Windows带区卷RAID 0

▼5*致态7100 @ PCIe Gen3 x4,Windows带区卷RAID 0

▼2*傲腾900P,Windows带区卷RAID 0

▼Windows SMB,默认启用RDMA,HDD池

▼Windows SMB,默认启用RDMA,傲腾900P

▼Ubuntu Server 22.04.3 LTS,额外安装了Desktop GUI,不要问为什么不一开始就装Desktop版,因为只有Server版才能在安装过程中选择RAID安装

▼配置RDMA,此为配置完后的ibv_devinfo -v命令输出(部分)

▼利用Windows PC的Internet连接共享功能,即使校园网有web登录认证机制,集群也可以统一接入校园网/互联网(本质上Windows PC充当路由器)

▼给接入集群万兆交换机的网卡添加2个IP地址,使集群子网与Windows PC互通

▼netplan网络配置,网关为Windows PC在集群子网中的IP地址(10.0.0.3),DNS与Windows PC相同(192.168.31.1),MTU=9000

▼使用ping工具确认服务器-交换机-客户端的mtu设置正确

▼创建ZFS pool,此为创建完毕后的zpool status命令输出

4 ZFS粗略调优

笔者调节了以下参数,将其写在了/etc/modprobe.d/zfs.conf文件中,以便系统开机后能自动加载这些参数。

  1. options zfs l2arc_noprefetch=0
  2. options zfs zfs_arc_lotsfree_percent=2
  3. options zfs zfs_arc_max=191106155315
  4. options zfs l2arc_write_boost=10000000000
  5. options zfs l2arc_write_max=10000000000
复制代码

获得“zfs_arc_max=191106155315”的命令:

  1. grep '^MemTotal' /proc/meminfo|awk '{printf "%d", $2 * 1024 * 0.95}'
复制代码

应当根据实际情况设置比例参数,现在这台NAS只用于集群NFS,故系统服务占用RAM极少,留5%足够。

此外,需对父数据集手动设置atime=off


5 FIO性能测试

PC通过10GbE RoCE挂载NASNFS共享目录,Sync模式。

64GiB文件,128KiB数据块,顺序写
参数:
  1. [global]
  2. directory=/bmg_pool0/home/bmg-admin
  3. ioengine=libaio
  4. direct=1
  5. thread=1
  6. iodepth=4
  7. log_avg_msec=500
  8. group_reporting

  9. [test_64g]
  10. bs=128k
  11. size=64G
  12. rw=write
  13. write_bw_log=64g-128k-w
  14. write_iops_log=64g-128k-w
  15. write_lat_log=64g-128k-w
复制代码
结果:

64GiB文件,8KiB数据块,随机读
参数:
  1. [global]
  2. directory=/bmg_pool0/home/bmg-admin
  3. ioengine=libaio
  4. direct=1
  5. thread=1
  6. iodepth=32
  7. log_avg_msec=500
  8. group_reporting

  9. [test_64g]
  10. bs=8k
  11. size=64G
  12. rw=randread
  13. write_bw_log=64g-8k-randr
  14. write_iops_log=64g-8k-randr
  15. write_lat_log=64g-8k-randr
复制代码
结果:

64GiB文件,8KiB数据块,随机读写(7:3)
参数:
  1. [global]
  2. directory=/bmg_pool0/home/bmg-admin
  3. ioengine=libaio
  4. direct=1
  5. thread=1
  6. iodepth=32
  7. log_avg_msec=500
  8. group_reporting

  9. [test_64g]
  10. bs=8k
  11. size=64G
  12. rw=randrw
  13. rwmixread=70
  14. write_bw_log=64g-8k-randrw
  15. write_iops_log=64g-8k-randrw
  16. write_lat_log=64g-8k-randrw
复制代码
结果:

256GiB文件,128KiB数据块,随机读
参数:
  1. [global]
  2. directory=/bmg_pool0/home/bmg-admin
  3. ioengine=libaio
  4. direct=1
  5. thread=1
  6. iodepth=32
  7. log_avg_msec=500
  8. group_reporting

  9. [test_256g]
  10. bs=128k
  11. size=256G
  12. rw=randread
  13. write_bw_log=256g-128k-randr
  14. write_iops_log=256g-128k-randr
  15. write_lat_log=256g-128k-randr
复制代码
结果:

256GiB文件,128KiB数据块,随机读写(7:3)
参数:
  1. [global]
  2. directory=/bmg_pool0/home/bmg-admin
  3. ioengine=libaio
  4. direct=1
  5. thread=1
  6. iodepth=32
  7. log_avg_msec=500
  8. group_reporting

  9. [test_256g]
  10. bs=128k
  11. size=256G
  12. rw=randrw
  13. rwmixread=70
  14. write_bw_log=256g-128k-randrw
  15. write_iops_log=256g-128k-randrw
  16. write_lat_log=256g-128k-randrw
复制代码
结果:

6 整活

强行在这台NAS上安装了2片TITAN V,由于一颗650W电源不够用,又掏出了另一颗在床头柜上吃灰3年的电源。利用这套诡异的配置测试了TITAN V跑ReaxFF模拟的性能,测试结果将在未来单独发布。




评分 Rate

参与人数
Participants 8
eV +25 收起 理由
Reason
littleowl + 1 好看爱看
hdhxx123 + 1 牛!
Weldingspock + 5 好物!
asdf + 1 谢谢分享
wolfli369 + 5 谢谢分享
LittlePupil + 5 不明觉厉
ChrisZheng + 5 先赞后看
牧生 + 2 233333

查看全部评分 View all ratings

- 向着虚无前进 -

2301

帖子

1

威望

5473

eV
积分
7794

Level 6 (一方通行)

2#
发表于 Post on 2024-1-11 15:08:31 | 只看该作者 Only view this author
很棒记录.


既然, 这个Storage是提供给集群使用,
测试, 应该修改为:
在同一个时刻, 让所有的节点, 同时并行进行I/O,
再考察, Storage节点负载...
检查各个计算节点, 以及Storage节点, 是否存在I/O wait....

毕竟, 在集群里面, 比较重要的是并发I/O性能, 而非Storage本地读写.

High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

846

帖子

16

威望

4634

eV
积分
5800

Level 6 (一方通行)

小屁孩

3#
 楼主 Author| 发表于 Post on 2024-1-11 15:59:29 | 只看该作者 Only view this author
原计划等到集群部署完成后综合起来写一篇帖子分享出来,但期间出现了一些问题,计算节点迟迟没有到货,故先把NAS部分单独发出来
PC通过10GbE RoCE挂载NASNFS共享目录,Sync模式

- 向着虚无前进 -

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-23 15:16 , Processed in 1.408001 second(s), 25 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list