EPYC7D12 8盘3.5寸机械+多盘nvme闪存 【25G高性能】 NAS搭建方案分享
EPYC7D12 8盘3.5寸机械+多盘nvme闪存 【25G高性能】 NAS搭建方案分享
本文曾在 chiphell、 chiphell微信公众号 、知乎 、酷安、 bilibili专栏 发表,此为后续微调版本,如有不同以本文为准
这个方案是“致敬”三年前本人的一概念文章,也算是圆了当年未落地的遗憾。
如题,分享的是一个超强的NAS复合存储方案。 该方案可在一个21.3升的小型nas机箱内容纳8个机械硬盘和十余个nvme闪存盘,且支持并几乎跑满25gbe高速网络。
价格放到最顶:整机含50TB硬盘约1个w整
continue。。。
这段时间着手搭建有几点:
1、今年洋lj硬件真便宜
2、618闪存价格大跳水,nvme ssd价格跌到逼近hdd,比ahci(sata)ssd更低,速度更快。
so需要一个能放得下大量剁手买来的nvme盘的NAS方案,最好避免使用昂贵的asmedia/plx拆分芯片和nvme阵列卡,且要能支持按需扩展(单盘扩容)并保证安全性。
3、苹果WWDC23发布了船新的apple silicon Mac pro,顺利成章apple silicon官宣安排上了mellanox网卡(适配cx4-cx7)。arm Mac由于全系标配雷电,用扩展坞转出PCIe*4即可蹭上Mac pro 的驱动。
(Intel MAC盼了近十年都没给mellanox驱动…还记得上万rmb的atto 40gbe网卡吗…)。到这个节点放出来,只能说懂得都懂。
Mac若能用25g网络连接到NAS,难不成Mac内置黄金存储就可以迎来解放, 再也不用给雷电盘交智商税了。。。吗?wwdc23直播看到cx516网卡直接就蹦起来了2333
4、新家入住解锁了homelab存放位置,然后希望NAS同时能够再跑一些extra load,如家庭影院、视频转码、相册备份识别、HA智能家居、娱乐串流,挂机下载等等。
5、楼主的电脑硬盘已满,急需大容量安全高速的存储阵列。
综上五条,汇总后即极为迫切的需要一个性能强、功耗低、扩展性好的虚拟化平台。同时运行hdd阵列和ssd阵列以及若干应用。
硬件选型过程中,因为一颗漂洋过海而来的四舍五入不要钱的神秘7d12,所以选择了epyc霄龙作为虚拟化平台。
接下来,我将详细介绍硬件选择、安装过程、系统设置和性能测试。
如果要抄作业请留意代码注释部分。
1️⃣硬件选型
bom list清单
零件类型 | 型号 | 数量 |
---|---|---|
CPU | AMD EPYC 7D12 | 1 |
主板 | 超微 H11SSL-C(有点后悔没上h12ssl) | 1 |
内存 | 镁光32GB 2400mhz 2r4 Reg ecc (要四通道就避开此规格) | 3 |
硬盘 | 3TB CMR机械盘 SAS 希捷es3 | 7 |
18TB CMR机械盘 西数hc550 | 1 | |
硬盘2 | 长江颗粒 第一方 致态 PC005 1TB (系统盘) | 1 |
长江颗粒 第一方 致态tiplus5000 2TB (数据盘1) | 2+ | |
长江颗粒 第三方 2TB(数据盘2) | 3+ | |
网卡 | mellanox CX4-Lx(4121a) 和25g光模块 | 1 2 |
网卡2 | rtl8156bg 2.5g usb网卡 | 1 |
显卡 | nVidia tesla p4 和涡轮散热模块 | 1 1 |
机箱 | 星之海 半人马座β版 | 1 |
电源 | sfx 750瓦 | 1 |
散热器 | 服务器涵道散热器 | 1 |
散热2 | 利民8015 | 3 |
散热3 | 猫头鹰12025 | 2 |
散热3 | 猫头鹰6025 | 1 |
其他 | nvme-PCIe转接卡 | 3 |
mac转接 | jhl7440雷电三扩展坞(6540也可) | 1 |
---|---|---|
mac网卡 | mellanox CX4-Lx(4121a) 和25g光模块 | 1 1 |
pc网卡 | mellanox CX4-Lx(4121a) 和25g光模块 | 1 1 |
其他 | om3光纤跳线 | 2 |
主板PCIe通道分配情况,针对风道做了优化。
+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +-----------------+-----------------+
| | | | | | | | | |
| pcie x16 | pcie x8 | pcie x16 | pcie x8 | pcie x16 | pcie x8 | | m2 slot | cpu G2 |
| cpu slot 6 | cpu slot 5 | cpu slot 4 | cpu slot 3 | cpu slot 2 | cpu slot 1 | +-----------------+-----------------+
+-----------------+-----------------+-----------------+-----------------+-----------------+ | | empty. | LSI3008 |
| nvidia | nvme-PCIe | nvme-PCIe | | nvme-PCIe | mellanox | +-----------------+ controller |
| tesla p4 | adapter | adapter | empty. | adapter | mcx4121a-acat | | usb 4/5 +-----------------+
| gpu | with 2 nvme | with 4 nvme | | with 4 nvme | 25gbe network | +-----------------+ sas/sata |
| +-----------------+-----------------+ +-----------------+ card | | realtek | 8 drives |
| | empty. | 4 nvme drives | | 2 nvme drives | | | RTL8156 | |
+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +-----------------+-----------------+
CPU
大船货AMD EPYC 7D12,属OEM定制 ZEN2 Rome罗马系列。与锐龙3000系同源的Starship/Matisse架构,32核心64线程128兆L3。主频不高1.8-2.0ghz,但**功耗极低**,双烤最大83w。且pcie通道多达128条。**很契合需求。**
瘦死的骆驼比马大,32c@2.0ghz也能轻松cpuz过万,用锐龙8核的功耗换来16核的性能,香~
这款CPU在闲鱼上可以拿到600元左右的价格。直接买三通道残废版也许可以砍到500
7d12好u也很挑内存,lz换了三颗u两个板最终也没四通道,基本确定是内存兼容问题
注意 超微h11点亮7d12需要bios v2.4以下。
机箱
机箱这个很重要,提到前面说。
首先由于lz的homelab存放地——储藏柜深度只有600mm,所以没法捡各路便宜大碗的2U/4U准系统;
这就将视野放在了小体积8盘位的nas专用机箱上。由于epyc平台标准主板最小就是ATX(排除妖板/节点板),所以刚需7扩展槽。
ATX+8盘以上+7pcie槽,小体积。。。那就是半人马座咯,1200r,咬牙掏吧。
半人马座β版。21.3L极限尺寸,风道和开孔配h11ssl不多不少。sff8643的位置很舒适。
上层据说有150瓦的解热,实测成功压住。但用全套猫扇依旧很吵,零距离摆放需佩戴降噪耳机,(应该)不能摆放在卧室环境。
整套大约30斤,体积虽小但不便携
注意sfx电源模组线一般较短,h11ssl的cpu 4pin 供电可能需要pcie转eps12v延长线
半高的nvme-PCIe 四盘扩展卡通常走线比较刁钻,可能不好协商到PCIe4.0,买h12系列记得注意一下。
主板
主板方面,选择了超微H11SSL-C。
有8个SATA和2个SFF8643,SFF8643可以插8个SAS盘。
有三个pcie x16插槽和三个pcie x8插槽,双千兆i210和一个IPMI远程管理接口,1000元左右,
应该是最便宜的EPYC ATX标准规格主板。
预算充足的话更推荐用超微H12SSL,多28条PCIe通道,且PCIe3.0 → PCIe4.0
内存
内存方面,选择了三根32GB DDR4 2400 ECC REG内存条组96GB三通道。由于7D12的缺陷最终没有用上四通道,不过96GB已经可以很好满足需求。
硬盘
硬盘方面,闪存池选用了长江颗粒+连芸MAP1202无缓 【最低速最便宜】方案作为全闪nas的数据硬盘。长江颗粒懂得都懂便宜耐艹,5条2T平均每条400。
机械池选用了7个珍藏多年的准新SAS 3TB企业盘和1个18TB HC550硬盘作为阵列(7盘小盘体阵列保障安全和速度)和冷存储(不考虑安全)。插满机箱8盘位。
10t以上读全盘要猴年马月,漫长的故障重建过程中易继续损坏硬盘致重建失败,机械阵列还是多盘小容量为佳
如果存储满了还可以考虑在留空的PCIe槽位扩展sas光纤卡(sas 4i4e规格)外接3.5寸机头,加个几十个盘位没问题。或者考虑下lto5磁带机做二级冷备份?
网卡
网卡方面,选用了mellanox的mcx4121a-acat,属CX4-lx系列,是小mac核心所以温度不会特别高,不放心扎带绑一个4cm小风扇即可压住。
cx4121目前可兼容apple silicon设备。支持SRIOV和RDMA RocEV2技术(macOS不支持),准新300元左右。
不建议小机箱用cx3pro或者cx5,如果不差钱看看CX6-lx,sriov性能一定会好很多。100gbe网卡直接不建议没风道压不住
显卡
显卡方面,用的也是和7d12一样漂洋过海的大船英伟达tesla p4。虽然不适合玩游戏,但是可以提供视频编解码、图像处理,以及CUDA。
还有就是支持vGPU,可以切给虚拟机。
vGPU的方案是可以将图形任务和计算任务隔离,例如分配两个grid-p4-4q虚拟工作站实例给两个Windows虚拟机或者Linux+Windows,同时满足图形桌面渲染+娱乐和后台gpu compute任务(编解码,图像识别,推流等)
价格是400元左右,原装被动散热,有负载必过热,40买个涡轮扇可解决过热问题。就是橙色的那个。
注意大船p4普遍电感有高频噪音,敏感人士慎入
电源
看评测随便挑了一个,sfx电源预算足建议买1.5元一瓦以上。
散热器
散热器方面,是买主板送的2U散热器。风扇规格6025,换猫扇后满载不超过75度。
另机箱风扇是利民8015、猫头鹰12025。cpu-内存两个8015用利民静音扇实测可行。PCI槽位的8015风扇可以用风量更大的,比如双滚珠12V0.4a规格。
至此,硬件介绍完毕。
2️⃣系统配置:
软硬件架构以及基本的周边设备
线框图 一图流:建议放大查看
为了提高该方案的性能、稳定性、扩展性和效率,我可以提出以下几点:
- 要尽可能利用PCIe槽位给闪存设备,最好只留一张网卡和一张显卡其他都用nvme闪存盘。这样使闪存池容量最大化,同时利用SR-IOV和Nvidia vGPU技术将网卡和显卡的功能分配给多个虚拟机,实现单设备功能复用。
- 尽可能使用RDMA技术减少高速转发带来的CPU负担,因为nvme闪存的速度已经远超过网络和常规链路层支持的速度上限,如果不采取措施,高速的闪存数据会堵塞在网络上增加CPU的负担。RDMA技术可以让闪存数据直接通过网络传输,不需要经过CPU的处理。
- 使用【25gbps/每用户】的网络带宽满足全闪NAS的性能需求,是因为Windows资源管理器的单线程传输速度受限(1.9-2GB/S);macOS对smb协议的支持不佳,而apple silicon的雷电接口也存在写入限速的硬件bug(1.5GB/S)。所以,即使使用40G或更高的网络接口,也无法充分利用网卡带宽。在这种情况下,提高网络带宽的收益很小。40Gbe等一众QSFP+网卡光模块价格也会高很多。
- 如果用户数量很少,nvme闪存组阵列几乎没有意义。单盘nvme ssd足以跑满带宽。
宿主系统
选用基于debian的开源系统proxmox ve(pve)作为虚拟化平台。
在pve上暂时用了5个虚拟机来实现需求。
1、TRUENAS scale
一是truenas scale,在truenas scale虚拟机中,7个希捷es3 3TB机械硬盘组成一个raidz阵列,还有一块18TB HC550氦气盘做单盘条带。总共有32TiB的可用空间。raidz阵列可容忍1个硬盘同时损坏而不丢失数据,还有快照、压缩、去重、加密等高级功能。作为服务机,分配32个vCPU,兼用机械盘nas和轻量应用平台。作为nas服务端,分配2个VF虚拟25g网卡。
因为存储池总容约40TB,所以分配40GB的内存作为ARC一级缓存。建议ARC=存储池总容量的0.1%
缓存vdev设置,缓存vdev即L2ARC。这里取了个巧,给truenas分配了2个虚拟磁盘,如图开启写入同步和ssd仿真,因为pve现版本virtio虚拟盘实测读写效能非常优秀,也就是说成功省下两块物理缓存盘。。
这是qemu虚拟磁盘的读写跑分,pve宿主盘是致态PC005。建议L2ARC=存储池容量的1%
2、windows server 2022
作为服务机,分配32个vCPU和一个vGPU,兼用闪存nas和多媒体应用平台。作为nas服务端,分配2个VF虚拟25g网卡。
书接上文,RDMA目前最简单的实现方案就是使用2012以上版本Windows server,客户端使用 Windows 专业工作站版或2012以上版本Windows server,技术开箱即用。
没人会拿winserver日用吧
且smbd(smaba-direct)技术目前为winserver独占,smbd同样在Windows上开箱即用。
RDMA我认为是全闪nas需使用到的关键技术,rdma启用后,可直接网卡对网卡传输数据,利于提供更高速和低延迟的网络传输和共享。
同时使用winnas跑闪存池也方便随时查0e(2333333
以及要实现上文提到的支持按需扩展(单盘扩容),这里使用了付费的stablebit drivepool实现磁盘合并,以及开源免费的snapraid实现数据安全保障。
Stablebit DrivePool是一款磁盘池化应用程序,可以将多个物理硬盘组合成一个大的虚拟驱动器。
其支持随时修改存储池映射位置,可随意增加/减少池内硬盘。存储池的存取速度取决于读写时使用的特定硬盘的速度。
要实现数据安全需要同时部署snapraid。
SnapRAID是一款备份程序,可以为磁盘阵列存储奇偶校验信息,从而在最多六个磁盘损坏的情况下恢复数据。SnapRAID主要适用于存储大量不经常变化的文件,如家庭媒体中心。SnapRAID的特点有:
- 可以在不格式化或重新分区的情况下,使用已经有文件的磁盘。
- 可以在任何时候添加或删除磁盘,磁盘可以有不同的大小。
- 可以为任何文件夹设置奇偶校验盘,保护数据的完整性和安全性。
- 可以检测和修复数据的损坏,避免静默错误。
- 可以恢复意外删除的文件。
- 不会锁定数据,可以随时停止使用SnapRAID,而不影响数据的访问
这里编辑snapraid的config文件或使用第三方开发的GUI界面Elucidate进行简单配置,将剩余的一个数据盘设定为检验盘,根据readme教程走即可。
snapraid是快照式备份,若设置恰当将不会影响Stablebit存储池的性能。
- winserver也可以部署其他服务,比如我正在跑的jellyfin、阿里ddns、家庭相册、某torrent等。
3、Windows10专业工作站版
作为客户机,分配56个vCPU和一个vGPU,用于娱乐和cpu负载场景。作为nas客户端,分配2个VF虚拟25g网卡。
部署handbrake、davinchi media server等。
cpuz宿主空载跑分9400-10000左右,压片神器。宿主后台重负载也能跑到9000分以上。供参考。
4、win10ltsc
作为客户机的win10ltsc,用于整活和测试
5、nvlic
用于nvidia vgpu的nvlic服务
三、配置过程(概要)
这里只列举了一些踩坑的内容,剩余部分基本不存在难度,善用搜索引擎即可完成整个部署流程。
也可以看看这篇:告别单盘组建TrueNAS SCALE终极家用OpenZFS File Server, VM & More - 电脑讨论(新) - Chiphell - 分享与交流用户体验
0、修改bios设置
启用IOMMU,SVM,ABOVE 4G,ARI SUPPORT,AER SUPPORT,SR-IOV,ACS ENABLE,
M2拓展卡对应的pcie插槽分配改成x4x4x4x4模式
启动UEFI引导
1、安装pve7操作系统
2、打开系统shell,备份并修改软件源
备份
nano /etc/apt/sources.list
编辑,添加清华镜像源
deb [https://mirrors.tuna.tsinghua.edu.cn/debian/](https://mirrors.tuna.tsinghua.edu.cn/debian/) bullseye main contrib non-free deb [https://mirrors.tuna.tsinghua.edu.cn/debian/](https://mirrors.tuna.tsinghua.edu.cn/debian/) bullseye-updates main contrib non-free deb [https://mirrors.tuna.tsinghua.edu.cn/debian/](https://mirrors.tuna.tsinghua.edu.cn/debian/) bullseye-backports main contrib non-free deb [https://mirrors.tuna.tsinghua.edu.cn/debian-security](https://mirrors.tuna.tsinghua.edu.cn/debian-security) bullseye-security main contrib non-free
编辑完文件后按“Ctrl + X” > “Y” > “回车”
nano /etc/apt/sources.list.d/pve-enterprise.list
编辑企业源
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bullseye pve-no-subscription
编辑完文件后按“Ctrl + X” > “Y” > “回车”
更新
apt update && apt dist-upgrade -y
3、修改grub
打开PVE节点的shell,输入命令:
nano /etc/default/grub
iommu=pt initcall_blacklist=sysfb_init amd_iommu=on drm.debug=0 kvm_amd.nested=1 kvm.ignore_msrs=1 kvm.report_ignored_msrs=0 pci=assign-busses pcie_acs_override=downstream,multifunction vfio_iommu_type1.allow_unsafe_interrupts=1"
PVE的shell中输入:
nano /etc/modules
在文件下面添加新内容
vfio vfio_iommu_type1 vfio_pci vfio_virqfd
编辑完文件后按“Ctrl + X” > “Y” > “回车”,继续输入以下命令。更新配置信息并重启PVE主机
update-grub update-initramfs -u -k all reboot
4、配置uefi Windows
创建Windows虚拟机,选择引导方式为uefi,创建完成后不要启动,PVE的shell中输入:
nano /etc/pve/qemu-server/你的虚拟机编号.conf
添加这些命令行(添加它们的位置并不重要,只要它们位于新行即可。保存后 Proxmox 会为您移动内容):
machine: q35
cpu: host,hidden=1,flags=+pcid
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,kvm=off'
虚拟机选项调整磁盘引导顺序,Windows安装盘第一,系统盘第二,virtio驱动光盘第三
uefi引导过程中敲击任意键,启动安装程序
磁盘列表为空,就需要手动加载virtio驱动盘。virtio驱动盘至此下载:
[](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso)
安装并启动,记得删除Windows安装盘。
进系统后设备管理器里手动加载驱动,启用virtio 虚拟网卡。
5、启用mellanox网卡sriov功能
【mellanox网卡驱动pve已预装,请勿尝试手动安装!!!】
查看网卡编号 lspci -nn
或至webui-节点-网络页面 中 查找
举例,这里网卡编号是 enp132s0f0np0
和 enp132s0f1np1
enp132s0f1 enp132s0f1
跳转目录 cd /etc/init.d
编辑配置文件 nano net-sriov
#! /bin/sh
### BEGIN INIT INFO
# Provides: sriov_script
# Required-Start: $network $named $remote_fs $syslog $sriov_scripts
# Required-Stop: $remote_fs $sriov_scripts
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: SR-IOV initialization.
#Description: Initializing VM's network with sriov support.
### END INIT INFO
start () {
#enable Sriov
echo 4 > /sys/class/net/enp66s0f0np0/device/sriov_numvfs
echo 4 > /sys/class/net/enp66s0f1np1/device/sriov_numvfs
ip link set dev enp66s0f0np0 up
ip link set dev enp66s0f1np1 up
#这里建议修改网卡的mac地址,要几个虚拟网卡就配置几组,最多16个
ip link set dev enp66s0f0np0 vf 0 mac 05:8a:07:b7:a8:71
ip link set dev enp66s0f0np0 vf 1 mac 05:8a:07:b7:a8:72
ip link set dev enp66s0f0np0 vf 2 mac 05:8a:07:b7:a8:73
ip link set dev enp66s0f0np0 vf 3 mac 05:8a:07:b7:a8:74
ip link set dev enp66s0f1np1 vf 0 mac 05:8a:07:b7:a8:81
ip link set dev enp66s0f1np1 vf 1 mac 05:8a:07:b7:a8:82
ip link set dev enp66s0f1np1 vf 2 mac 05:8a:07:b7:a8:83
ip link set dev enp66s0f1np1 vf 3 mac 05:8a:07:b7:a8:84
}
stop () {
[ "$READ_INTERFACES" != "no" ] && network_interfaces ifdown
}
case $1 in
start)
start
;;
stop | force-stop)
stop
;;
*)
echo "Usage: $0 {start|stop}" >&2
exit 1
;;
esac
exit 0
逐条执行以下命令,应用保存重启
chmod +x /etc/init.d/net-sriov
systemctl enable net-sriov
update-initramfs -u -k all
update-grub
reboot
重启后打开shell,输入 lspci
,确认是否开出vf(virtual function)
虚拟机-PCI设备,选中vf分配即可,注意:
1、同一物理端口下vfpf可任意连通,但不能跨物理端口(双端口卡也就是分成了两组);
2、vfvf之间跑通需要物理端口state up,若空着物理端口,内部虚拟网卡则无法使用。
6、配置vGPU
隔壁小黄鱼请
四、性能测试
客户机分别用Windows10专业工作站版和macOS14.0beta测试。
1、读写速度:使用crystal disk mark4软件测试nas上各个存储池的读写速度。结果如下:
5个2TB nvme ssd条带存储池:
- host顺序读写速度为3.57G/s和3.17G/s
- guest(Windows10工作站版)顺序读写速度为2.87G/s和2.59G/s
- guest(macOS Sonoma 14.0beta)顺序读写速度为1.74G/s和0.37G/s
但是若使用物理机win10工作站host对macOS Sonoma 14.0beta guest,速度则会更高,推测可能是SR-IOV的性能开销,这里再放一张物理机对连的跑分:顺序读写速度为2.54G/s和0.44G/s。
Truenes scale7个3TB机械硬盘阵列:
- guest(Windows10工作站版)顺序读写速度为2.18G/s和1.63G/s
- guest(macOS Sonoma 14.0beta)顺序读写速度为2.15G/s和0.23G/s
结果显示,windows 10台式机通过rdma和smbd协议可充分利用25gbe网卡的带宽,接近nvme ssd存储池的性能。而macOS Sonoma MacBook pro通过smb多通道协议虽然也可使用25gbe网卡,但性能有所下降,尤其是写入速度受限。这可能是由于macos的smb实现不够优化或者有其他瓶颈。
2、功耗
使用一个智能插座测试nas的功耗。分别在nas空闲、满载状态下测量功耗。
- 家里智能插座似乎不准这条后续补在评论区。
3、温度
ipmi自带的监控功能测试温度。
- 空闲状态:cpu温度为69℃,显卡温度为54℃,nvme ssd温度为42-50℃,机械硬盘温度为35℃。
- 烤鸡半小时状态:cpu温度为83℃,显卡温度为73℃,nvme ssd温度为43-53℃,机械硬盘满载温度为50℃。空载盘35℃
4、噪音
手机app测试,距离服务器直线距离一米,无遮挡。
启动 40db,持续运行 44db,满载(风扇拉满) 47db。
五、总结
对你有帮助的话,收藏点赞别忘了哦🙏
再想到什么评论区补充吧。