| 本帖最后由 wengong8 于 2023-7-19 09:39 编辑 
 
   
 如题,分享的是一个超强的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网卡吗…)。到这个节点放出来,只能说懂得都懂。
 
 wwdc23直播看到cx516网卡直接就蹦起来了2333   
 Mac若能用25g网络连接到NAS,难不成Mac内置黄金存储就可以迎来解放, 再也不用给雷电盘交智商税了。。。吗?
 4、新家入住解锁了homelab存放位置,然后希望NAS同时能够再跑一些extra load,如家庭影院、视频转码、相册备份识别、HA智能家居、娱乐串流,挂机下载等等。
 
 5、楼主的电脑硬盘已满,急需大容量安全高速的存储阵列。
 
 综上五条,汇总后即极为迫切的需要一个性能强、功耗低、扩展性好的虚拟化平台。同时运行hdd阵列和ssd阵列以及若干应用。
 硬件选型过程中,因为一颗漂洋过海而来的四舍五入不要钱的神秘7d12,所以选择了epyc霄龙作为虚拟化平台。
 接下来,我将详细介绍硬件选择、安装过程、系统设置和性能测试。
 
 
 
 
   bom list清单
 | 零件类型 | 型号 | 数量 |
 | --- | --- | --- |
 | CPU | AMD EPYC 7D12 | 1 |
 | 主板 | 超微 H11SSL-C | 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 |
 
 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寸机头,加个几十个盘位没问题。或者考虑下lto磁带机做二级冷备份?
 
 网卡
 
 网卡方面,选用了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买个涡轮扇可解决过热问题。就是橙色的那个。
 
 
 
   
 电源
 
 看评测随便挑了一个,sfx电源预算足建议买1.5元一瓦以上。
 
 散热器
 
 散热器方面,是买主板送的2U散热器。风扇规格6025,换猫扇后满载不超过75度。
 另机箱风扇是利民8015、猫头鹰12025。cpu-内存两个8015用利民静音扇实测可行。PCI槽位的8015风扇可以用风量更大的,比如双滚珠12V0.4a规格。
 
 至此,硬件介绍完毕。
 
 ## 系统配置:
 
 **软硬件架构以及基本的周边设备**
 线框图 一图流:**建议放大查看**
 
 
   
 为了提高该方案的性能、稳定性、扩展性和效率,我可以提出以下几点:
 
 - 要尽可能利用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个 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~~,技术开箱即用。
 且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网卡。
 cpuz宿主空载跑分9400-10000左右,压片神器。宿主后台重负载也能跑到9000分以上。供参考。
 
   
 ### 4、win10ltsc
 
 作为客户机的win10ltsc,用于整活和测试
 
 ### 5、nvlic
 
 用于nvidia vgpu的nvlic服务
 
   
 ## 三、配置过程(概要)
 
 这里只列举了一些踩坑的内容,剩余部分基本不存在难度,善用搜索引擎即可完成整个部署流程。
 也可以看看这篇:https://www.chiphell.com/thread-2402960-1-4.html
 
 ### 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/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb 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,输入命令:
 
 复制代码
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中输入:
 
 在文件下面添加新内容
 
 复制代码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/ ... rtio/virtio-win.iso)
 安装并启动,记得删除Windows安装盘。
 进系统后设备管理器里手动加载驱动,启用virtio 虚拟网卡。
 
 ### 5、启用mellanox网卡sriov功能
 mellanox网卡驱动pve已预装,请勿尝试手动安装
 查看网卡编号`lspci -nn`或至webui-节点-网络页面 中 查找
 举例,这里网卡编号是 `enp66s0f0np0` 和`enp66s0f1np1`
 跳转目录
 编辑配置文件
 
 复制代码
#! /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
 
   
   ### 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。
 
 
 对你有帮助的话,收藏点赞别忘了哦🙏
 再想到什么评论区补充吧。
 
 
 
 |