简介

最近组装了一台新的 NAS,顺便记录一下自己对软硬件的选择,以及安装过程遇到的各种问题。在这之前曾经写过另一篇文章记录我对于选择成品 NAS 的考虑,所以这篇文章将会侧重于硬件的选择方面。

定位以及用途

首先明确自己对 NAS 的定位以及主要用途,这直接决定了自己对系统的选择以及硬件的需求,比如对我而言我需要的主要功能有:

  • 稳定
  • Samba 共享
  • 存储其它设备的 ZFS 快照(通过 SSH 和 zfs receive)
  • 作为下载机

很多人会通过安装 Kodi/Plex 把 NAS 打造成媒体服务器,而我更习惯通过支持 Samba 的播放器来解决这一问题。

操作系统

  • 其实选项也不是很多,比较主流的有 TrueNAS、Unraid 以及黑群晖(Synology)。
  • 我选的是 TrueNAS,主要原因是支持 ZFS,以及相当稳定,其模式为开源、社区免费使用同时提供收费技术支持,我的上一台 NAS 也是使用的 TrueNAS,经过一段时间的使用我还是相当满意的。TrueNAS 有多个版本,其中 TrueNAS CORE 是基于 FreeBSD 的主流版本,而新出的 TrueNAS SCALE 则基于 Linux(Debian) + ZFS on Linux,不过目前还处于测试阶段。现在 CORE 版本的主要优点是更加稳定,而 SCALE 版本可以期待对硬件的支持更加广泛、更新更快,以及 Docker 的资源更加丰富。这里提一下由于 TrueNAS 有自己存储配置的数据库,一切对 FreeBSD/Linux 进行的操作都会在重启后被还原,所以没有必要因为自己更熟悉 FreeBSD/Linux 而选择 CORE/SCALE。
  • Unraid 为闭源、收费软件,虽然有 30 天的试用期,不过我完全没有试用过,其中最主要的原因是它只能安装在优盘上,这对于存储而言是相当不专业的。
  • 群晖的话我只用过白群晖,不知道黑群晖的稳定性是否要打折扣。群晖的操作系统叫 DSM,其实个人并不是很喜欢它的风格,说好听点叫做技多不压身,说难听点就是花里胡哨的。

文件系统

我选 ZFS我就是为了这瓶醋才包的这顿饺子 ZFS 具有许多方便稳定的特性:

  • 支持存储池,简单来说就是可以不依赖其他方法让文件系统横跨多个设备。
  • RAIDZ,ZFS 有自带的 RAID 实现,可以更方便的与文件系统结合。
  • 数据完整性验证以及自动修复,ZFS 在读写数据时会自动进行完整性验证,并且自动修复错误数据。
  • 写时拷贝、快照,这两个特性已经成为现代文件系统的标配了。
  • ZFS Send Raw,受益于 ZFS 的自带加密,可以将加密后的数据通过 SSH 增量备份到别的 ZFS 存储池,同时完全不需要将密钥暴露给远程设备,甚至还支持“断点续传”。而其它文件系统如果想要达到相同的目的则需要额外引入 (Mdadm/LVM) + iSCSI + LUKS 这些结构。

至于其最大的争议在于对内存的容量以及 ECC 需求。首先是对容量的需求,有种说法是每 TB 的存储都要搭配 1GB 的内存,其实这主要是对于真正的企业级应用而言的,而对于家用并没有这么夸张,准确来讲 ZFS 主要使用内存的地方有:

  • 读取缓存(Read Cache/ARC),ZFS 会自动使用空闲内存作为读取缓存,使用 L2ARC 也需要额外的内存来支持。
  • 写入日志缓存,注意这里所讲的缓存是相对于 ZFS 写入日志 ZIL(ZFS Intent Log) 而言,其作用为保证同步写入的数据的完整性,而不是通常所讲的为了提升写入性能的那种缓存。这部分开销不会随着硬盘容量的提升而增加,并且使用独立的写入日志设备 SLOG(Separate Intent Log) 可以避免这部分开销。另外在家用的情况下多为异步写入,所以这部分的消耗可以进一步被低估。
  • 校验,ZFS 在读取和写入数据时会进行校验,而校验所使用的数据就存储在内存中,这也是推荐使用 ECC 内存的主要原因。
  • 奇偶校验数据(Parity-Data),在使用 RAIDZ 的过程中需要计算数据应该被存储到哪几块硬盘里,而相关信息也存储在内存中。
  • 数据压缩,对 CPU 和内存的消耗取决于压缩算法,默认的算法几乎不会增加额外的消耗,以及数据只有在被读写时才会有额外的内存开销。
  • 删除重复数据功能,这可是个消耗 CPU 和内存的大户,而且与数据压缩不一样,即便数据不处于被读写的状态也会消耗内存。好在对家用而言反正没什么必要开启这个功能就是了,所以也谈不上内存消耗了。
  • 另外在读写文件时,元数据(Metadata)也会占用内存,对于企业级应用而言往往有读取大量文件的需求,所以这部分内存开销也是实打实的,但是对于家用而言则没有太大压力。
    所以不难看出,ZFS 确实会受益于大容量内存,但是家用的情况下也不至于对内存容量有着离谱的硬性需求。另外 ZFS 有多种移植,现在 Linux 和 FreeBSD 使用的都是 ZOL(ZFS on Linux),在移植的过程中已经对内存需求按照非企业的标准进行了调整。
    至于对 ECC 内存的需求,就如上面第三条所言,使用 ECC 内存可以保证校验的准确性,同时由于 ZFS 会大量使用内存,使用 ECC 也可以保证稳定性。但这也并不意味着不使用 ECC 内存的 ZFS 就无法运行或者致命缺陷,其实也只会失去“保证数据读写时不会出错”这一特性而已,换句话说不使用 ECC 内存的 ZFS 在稳定性上并不会弱于其它文件系统。不过话说回来,ZFS 的一大特性便是可以保证数据读写时不会出错,并且会花费大量资源来确保数据的一致性,而这都建立在使用 ECC 内存的基础上,所以如果不使用 ECC 内存,可能不如直接选择一些对硬件资源要求更低的文件系统。

硬件列表

先放一下完整的硬件列表:

  • CPU:
    • Intel Atom C3758 (主板集成)
    • Noctua NF-A6x25 PWM 风扇(后期安装)
  • 主板: Supermicro A2SDi-H-TF
  • 内存: Samsung 32GB LP ECC Reg x4
  • 系统盘: Samsung 870 EVO 250GB x2 (镜像)
  • 数据盘:
    • Samsung Samsung 870 EVO 2TB x2 (镜像)
    • WD Red 10TB x8 (RAIDZ-2)
  • 网卡: Intel X557-AT2 (主板集成) (10GbE Port x2)
  • 电源: Corsair SF750
  • 机箱:
    • Fractal Design Node 804
    • Noctua NF-A12x25 风扇 x4
  • UPS: APC 1500VA 900W
  • 交换机: NETGEAR 12-Port 10GbE

机箱以及风扇

机箱的选择主要需要考虑以下因素:

  • 摆放位置: 假如要放到客厅之类的地方,那需要兼顾外观、尺寸和噪音。如果可以放到机柜里面,那么自然可以选择嵌入式机箱,优点是内部空间充足,往往自带电源,可以通过暴力风扇解决散热问题,缺点是噪音极高。当然也有人对 NAS 爱得深沉,做梦都想抱着,放到卧室的话需要保证机箱不透明、没有乱七八糟的 LED 灯而且声音安静。
  • 散热: 可以安装的风扇尺寸越大越好,数目越多越好。风道要笔直,前端进风就要后端出,左侧进风就要右侧出,不要选择那些风道会拐弯的机箱。气流需要经过硬盘,不然硬盘持续运行在高温下对寿命影响较大。如果主板上有其它高热量零件,也需要保证气流经过,比较常见的有 10G 网卡,以及只带散热鳍片的 CPU。对于 NAS 机箱而言,最重要的就是硬盘散热,这关系到整个系统的稳定性以及硬盘寿命。
  • 硬盘盘位:
    • 数量足够。
    • 盘与盘之间最好有足够的缝隙,不然会有散热问题,使用机械硬盘时还可能存在共振问题。
    • 至于热插拔则需要取舍一下,值得认可的是确实很方便,但是支持热插热拔的机箱往往只能在一侧安装风扇,并且被 HBA 卡所遮挡,而且硬盘和托盘之间仍然需要用螺丝固定。
  • 空间:
    • 首先是大小,空间大些可以避免一些尴尬的问题,比如电源距离硬盘太近导致难以走线。
    • 然后是分布,即便空间很大,但是分布不够合理时就会发生有的区域挤得要命,而有的区域又太过空旷的问题。
    • 最后要注意有没有共用的空间,比如有的机箱安装硬盘架的地方和风扇会有冲突,只能二选一。

对风扇的要求就比较简单了,越大越好,越多越好,越安静越好。每个风扇的噪音并不是线性叠加的,也就是说两个 18dB 的风扇所产生的噪音不是 36dB,而是类似 20dB 这个级别(顺便一提,20dB 的音量大约是 18dB 的 1.26倍,而不是 20/18=1.11 倍,这跟 dB 的概念有关,感兴趣的话可以自己研究一下)。由于风扇转数越快噪音也越高,所以在进风量一致的情况下,风扇越大、数量越多,每个风扇所需的转数也会更低,所以反而会更安静。最后需要注意的是安装时能用胶钉就不要用螺丝。
我选择的机箱是 Fractal Design Node 804,配了四个 Noctua NF-A12x25 风扇,我的所有设备都会选择把自带风扇换成 Noctua 的,一直以来都用的相当满意,机箱方面根据我的使用体验而言:

  • 散热设计很好,前后各可以安装两个 120mm 风扇(实际上后方可以安装一个 120mm 和一个 140mm 风扇),气流可以水平经过主板和硬盘架。
  • 其中一侧是电源 + 8 个 3.5" 硬盘架,另外一侧是主板,同时我在这一侧固定了 4 个 2.5" 固态硬盘,机箱前面板还可以固定两个 2.5" 硬盘,不过由于走线麻烦我就没选择往那里安装。
  • 前面板连接 USB 使用的是 19-Pin 接口,不过我的主板上面只有 USB 3.0 Type A 接口。
  • 机箱尺寸不算大,但是却能装下不少硬盘,虽然从空间分布来看这不是一款专门为 NAS 设计的机箱。存放硬盘+电源的一侧相当的拥挤,而主板那一侧则特别空旷,毕竟其实设计上主板侧需要安装显卡这类占空间的设备。
  • 有硬盘架的一侧,硬盘架被分为两组挂在机箱上方,如果要换硬盘则需要一次性取下一种一组才能更换,而主板那一侧更换硬盘则需要扭位于机箱底部的螺丝,这点还是挺不方便的。
  • 可以安装 ATX 尺寸的电源,不过这时电源离其中一个硬盘架距离很近,如果安装 3.5" 硬盘需要供电线有足够的柔韧度才行。
  • 主板侧是透明的虽然里面没有什么好看的东西可以展示,然后可以在不移动主板的情况下直接对主板进行操作。

形容半天不如直接上图
Drive-Side-SFX
↑ 安装硬盘的一侧,可以看出来空间利用率还是很高的,风道也很利于硬盘散热。图里的是一款 SFX 尺寸的电源。
Drive-Side-ATX
↑ 使用 ATX 尺寸电源的样子,图中的电源比大多数 ATX 电源都要长一些,不过高度和宽度是一样的,可以看到电源与右侧硬盘的空隙相当狭窄,再加上我的电源线又很笨重,导致不得不额外接上一节柔软的延长线。
Mobo-Side
↑ 安装主板的一侧,对比放硬盘的那边就显得比较空旷了,可以安装 Micro-ATX 尺寸的主板,不过我只安装了 Mini-ITX 主板所以显得格外空旷,所以我把四块 SSD 竖着安装在了这里,如果使用 Micro-ATX 主板的话就只能横着安装两块,然后把剩下两块安装在机箱前面板上了。
作为 NAS 使用而言,虽然有着空间分布不均以及硬盘不容易拆卸这两个问题,但是我其实还是相当满意的,因为简单调查一下就能发现,大部分标榜着 NAS 专用的机箱都有严重的散热问题,与其说是机箱倒不如说是烤箱

主板

考虑因素:

  • 选真正的服务器/工作站主板,虽然购买比较麻烦,但并不意味着价格一定更高。入门级的服务器/工作站主板和低端消费级主板相比价格差距不大,主要是牺牲了一般用户用不到的地方(例如产品包装、宣传、音频模块、双 BIOS、LED 灯),用来换取更好的用料以及其它功能(例如 ECC 内存支持、IPMI)。而便宜的消费级产品往往会在某些地方偷工减料,例如使用 Realtek 这种低质量的板载网卡,如果不想浪费生命在各种疑难杂症上面,对这类产品最好敬而远之。
  • 支持的 CPU 型号。部分主板上面有集成 CPU,优点是兼容性好,实际上部分 CPU 只有集成在主板上的版本,这类主板没法升级 CPU,不过实际上大多数时候更换 CPU 的时候都会顺便把主板也换了。
  • 支持的内存类型、型号、大小、频率、DDR 通道数量,是否支持 ECC 内存等。
  • SATA/SAS 接口的数量以及速度,一般消费级产品上面的 SATA 接口都比较少,更不会有 SAS 接口。
  • 有 BMC 模块,这样就不需要集成显卡或者额外显卡才能连接显示器了。支持 IPMI,这样可以通过网页来对机器进行一切操作(例如硬件监视、开关机、iKVM),管理 NAS 极为方便。
  • 是否有板载网卡,当然也需要质量合格才行。
  • M.2 接口的数量以及支持的 NVMe SSD 尺寸,注意有少数 M.2 接口只能用于无线网卡。
  • PCIe 接口的数量和速度,假如 SATA/SAS 、10GbE 或者 M.2 接口不足,都可以靠这来解决。
  • 主板的尺寸。

一块合适的主板可以为自己在选择其它硬件时省下很多麻烦,我最后选择的是 Supermicro 的 A2SDi-H-TF:

  • 集成 Intel Atom C3758 处理器,还有 Aspeed AST2400 BMC 模块,支持 IPMI,整个主板加上 CPU 功耗不过 40w。
  • 最高支持 256GB Registered ECC RDIMM 内存,不过根据其他用户的反应可能实际上对内存比较挑剔,导致很难达成 256GB 内存这一目标。我装了 128GB 的内存倒是没什么问题,虽然在装完内存后第一次开机检测花了大概15分钟,不过这之后连续运行了两天 MemTest86+ 并且一点错误没有。
  • Mini-ITX 的尺寸却有四个 SATA3 接口和两个 MiniSAS HD 接口,也就相当于 12 个 SATA(6 Gbps) 接口。
  • 带三个 RJ45 接口,其中一个是专门用于 IPMI 的,剩下两个是 10GbE 接口,连接的 Intel X557-AT2 板载网卡。IPMI 可以设置成只能从专用接口访问,也可以设置成同时允许从 10GbE 接口访问。
  • 主板上有两个 USB 2.0 接口、两个 USB 2.0 Header 和一个 USB 3.0 接口,其中只有 USB 2.0 接口位于 IO 面板上,而 USB 3.0 接口则直接位于主板上。
  • 有一个额外的 PCIe 3.0x4 接口,不过由于我所需的功能主板都已经提供,所以暂时还没有用到。
  • 另外这款主板默认是不带 CPU 风扇的,所以需要机箱风道途径鳍片才能保证散热,我测试了下对于我的机箱和风扇而言,风扇最低转数时 CPU 温度大约 55 度。当然官方也有带风扇的版本 A2SDi-H-TF+,不过那个风扇的噪音可以说是相当酸爽。所以我最后的方案是装了一个 Noctua NF-A6x25 PWM 风扇,尺寸和鳍片大小一样,相当安静而且出风量也比官方版本更多,不过固定方式不算优雅,直接电工胶布粘上去的,倒也足够结实,只是难看了点,如果主板是横向摆放的,那直接把风扇放到上面就行,经过改造后 CPU 待机温度顿时降到了37度。
  • 这款主板有零售版和批发版,尽量买零售版,自带 MiniSAS HD - Sata3 转接线,售后也更方便些。

CPU

  • 首先不要只盯着核心、频率和缓存大小,先满足了硬性要求再来追求这些。
  • 功耗,毕竟要 24x7 运行,电量和散热都需要考虑。不过一般情况下没有必要专门选择低功耗版 CPU,因为多数情况下“低功耗版”仅仅是对峰值功耗而言的,而对于待机时的功耗往往没有明显差距。
  • 支持的内存类型、型号、大小、频率、DDR 通道数量,是否支持 ECC 内存等。
  • PCIe 通道数目和速度,以及 SATA 接口的数量和速度,这两者同时也受主板的制约。
  • AES-NI 指令集,加密的时候需要用到。
  • VT 技术,如果对虚拟机有需求就要注意一下是否支持 VT-x 和 VT-d。
  • 如果打算把 NAS 作为媒体服务器,并且对转码有重度需求,可以考虑一下带集成显卡的 CPU。
  • 最后注意自己使用的系统与看好的 CPU 之间是否有兼容性问题。

对于家用而言,Intel Atom C3000(Denverton) 系列、Core i3 系列以及 Xeon D 系列都足以应对单纯的 NAS 需求,相对而言,各个系列下同级别产品(比如每个系列都拿出相应的低/中/高端产品来对比):

  • Atom 功耗极低,而 Xeon D 功耗更高,i3 由于有集成显卡的原因同样功耗更高。
  • Atom、Xeon D 系列都支持 ECC 内存,而 i3 只有部分型号支持 ECC 内存。
  • PCIe 通道数目 Xeon D 更多些,而 Atom 和 i3 则为一个级别。
  • 使用难度方面, i3 最容易购买,Atom 和 Xeon D 麻烦一些,然后 Atom 和 Xeon D 都是焊接在主板上的,不过选 i3 需要自己搭配主板,而大部分服务器/工作站主板又都不支持 i3。
  • 这三者里面集成 Atom 和 Xeon D 的主板一般都带有 BMC 模块,可以用来连接显示器,而 i3 则有集成显卡,安装系统时可以用来连接显示器,之后可以用于简单的转码工作。
  • 性能方面,Xeon D 最强,Atom 和 i3 相比胜在核心数目,输在核心频率。家用日常使用的情况下,中低端 Atom 和 i3 足以应对,而重度使用时高端 Atom 和 i3 也够了。

我选择的是 Intel Atom C3758(主板自带),功耗低,该有的功能也都有,在使用 TrueNAS 的情况下负载也看得过去。

内存

就像前文中『文件系统』部分所提,ZFS 其实并不严格需求大量内存,但是却能从大量内存中获得更多提升,然后再加上尽量使用 ECC 内存这个需求,挑选内存的方案也就很简单了。不过实际上内存的选择受到主板和 CPU 的制约,容量方面 TrueNAS 的系统需求是 8GB,当然还要考虑 ZFS 的占用、运行的服务所需的内存,TrueNAS 官方的建议是 8GB + 1GB/每个额外硬盘 + 其它需求例如容器和虚拟机,我个人建议在保证型号匹配的情况下尽量把容量拉满就完事儿了,这里所说的型号匹配不光指内存尺寸频率这些,颗粒的类型之类的细节也要仔细参考下,最简单的方式是从主板的支援列表里挑一款被测试过的,然后再搜索一下有没有翻车案例。另外内存最好买套组,也就是说能买一组四根的就别买两组两根的,因为即便是同一款内存也会有细微的差别,而同一套组的内存是一起进行测试的,所以装到一起的时候可以保证最好的兼容性。
我最后选择的是 4 条 Samsung M393A4K40BB1-CRC 32GB DDR4-2400 LP ECC Reg 内存,用起来没什么问题,总共 128 GB 的内存也足以允许 ZFS 随意挥霍。

系统盘

首先是容量不用太大,因为 TrueNAS 的系统盘单纯是操作系统专用,而且对系统的更改不会被直接保存,不能存储其它数据,容器和虚拟机也无法保存在系统盘,所以 32GB 足够,128GB 可以用到天荒地老,当然现在很难买到容量这么小的硬盘了。然后有条件可以装两块硬盘作为系统盘,TrueNAS 可以自动配置镜像。至于类型方面:

  • M.2 NVMe SSD,优点是不需要额外供电、省空间,缺点是 M.2 接口数量较少而且 NVMe SSD 相对较贵。
  • SATA SSD,性价比最高的 SSD,缺点是需要额外的供电以及占用 2.5" 硬盘槽位。
  • PCIe SSD,这里所指的是正经的 PCIe SSD 而不是 PCIe 转接卡那类,这类硬盘往往贵得离谱,用作 TrueNAS 系统盘实在是暴殄天物。
  • 机械硬盘,便宜,但是用作系统盘的话隔三岔五来一阵旋转的声音实在是不太讲究。
  • 优盘,这是一定要避免的选择,首先读写速度不达标,而且更重要的是寿命完全承受不住。
  • SATA DOM,这是比较硬核的选择,优点是不占用空间,在部分主板上还不需要额外供电,缺点是性价比低、购买困难。

我选择的是两块 Samsung 870 EVO 250GB SATA SSD 作为镜像,由于硬盘侧面也有螺丝孔,所以我直接把硬盘竖着安装了。

数据盘

固态硬盘在尺寸和功耗上都好于机械硬盘,不过大容量硬盘只有机械硬盘。如果打算用 RAIDZ-1 则尽量别挑单盘容量太大的硬盘,因为万一要重建的话出错的概率较高。选择机械硬盘的标准:

  • 买 NAS 专用硬盘,尽管有些厂家其实是营销成分更多一些,但是大多数 NAS 专用硬盘确实是对多硬盘的共振和温度问题进行了优化的,并且适合一直通电工作。
  • 转数选择 5400RPM 即可,7200RPM 功耗更高而且更吵,对于 NAS 而言性能提升也不是那么明显。
  • 氦气填充的硬盘是否比空气填充的稳定性高很多这个问题一直有争议,不过氦气填充的硬盘确实更安静。
  • 一定不要选 SMR/叠瓦盘,这类硬盘完全不适合 RAID。
  • 提前计算清楚最终可用空间,TB 和 TiB 换算一下,raid 容错占一部分,分区占用一部分等等,最后层层剥削下来还剩多少空间需要自己算好。

我使用的有两块 Samsung Samsung 870 EVO 2TB SATA SSD 用作镜像(Mirror),主要用来备份一些比较重要文件。还有 8 块 WD Red 10TB (WD100EFAX) 用作 RAIDZ-2,目前这个型号已经被 WD101EFAX 替代,性能方面没有区别,不过新的型号改成空气填充了,导致温度和噪音都更高一些。然后使用下来最主要的体验是我完全用不到这么大容量,不如换成 4TB 的 SSD,可以在散热和物理空间方面舒服不少,最后购买时需要注意 WD Red 系列在部分小容量型号上使用的是 SMR。

NVMe SSD 相关

NVMe SSD 没必要往上装散热片,实际上需要散热的是控制器部分,而颗粒部分并不需要散热,然后硬盘上的贴纸不要撕掉,那个实际上是导热贴,可以让热量分布更均匀。

L2ARC

由于我把内存堆到了 128GB,所以完全没有考虑 L2ARC。另外由于每个存储在 L2ARC 中的数据块都需要占用 ARC(内存) 88 Byte 的容量,所以加 L2ARC 前需要先掂量内存是否够用,举例来说假如要添加的 L2ARC 容量为 500GB,每个数据块为 4KiB,那么这个 L2ARC 将会消耗的内存为 500GB/(4*1024Byte)*88Byte = 10.7GB 内存,而这 10.7GB 的内存原本是可以被 ZFS 有效利用的。

SLOG

SLOG 我也没添加,主要是了解 SLOG 原理的话就会明白,添加 SLOG 对我的日常使用并没有性能提升,并且真正符合 SLOG 要求的硬件(具备断电数据保护)也昂贵并且难以购买,实际上,真正能够胜任 SLOG 要求的设备都是 Intel 的企业级产品。

RAID 阵列卡

一定不要用 RAID 阵列卡

电源

电源可千万别省,功率买大了也不会更耗电,但是买小了那就真的是灾难了,规格方面 80+ Gold 足以,至于白金、钛金之类的倒是完全没必要。还有现在的电源大多是模块化的,买的时候要注意上面是否有足够的 SATA 供电口,不然到时候一个 SATA 供电口给一堆硬盘供电还是很容易出问题的。给硬盘供电的时候不要用 Y 型电源线,大部分的着火事件都是由于这类东西。然后电源的尺寸和供电线的硬度、长度也要考虑一下,不然就会发生前面图中那种电源塞满机箱的悲剧。最后可以顺便留意下散热机制,最好可以在低功耗下被动散热,这样可以少让机箱进些灰。
我最开始用的是别的机器上拆下来的 EVGA SuperNOVA 1300 G2,这个 1300W 的电源比大多数的 ATX 电源都要长一节,自带的电源线又长又粗又硬,像是膨胀的章鱼一样占满了我的机箱。好在后来换成了 Corsair SF750,这个 SFX 尺寸的电源顿时让我感觉生活美好了不少,具体差距就像前面的图片中那么明显。这款电源自带两条 SATA 电源线,每条线上有 4 个 SATA 供电接口,不过电源上面最多可以插三条 SATA 电源线,所以需要额外购买一个官方的 SATA 电源线,这样刚好 3x4=12 个 SATA 供电口,与我的硬盘一一对应。另外由于是 SFX 尺寸的电源,所以自带的电源线都比较短,好在官方有额外的加长电源线出售,可以按需选购。

网卡

  • 一块好的网卡在重载时可以保障带宽与延迟,同时降低 CPU 压力,这就意味着需要将一些 TCP/IP 的过程从 CPU 处理转移到网卡的专用硬件来处理,通常这些功能统称为卸载(offload)。
  • 带宽方面 10GbE 可以满足目前的需求,接口数量一般两个足够。
  • 至于接口的类型分为两种,一种是 10Gbase-T 也就是我们平时所用的 RJ45,另一种则是 SFP+。目前绝大多数 10GbE 交换机都是 SFP+ 接口的,但是桌面级主板如果自带 10GbE 网卡一般都是 10Gbase-T 接口的,如果只有一台电脑对与 NAS 之间的带宽有需求,可以选用双口 10Gbase-T(RJ45) 网卡,然后一条线与电脑直连,另一条接入普通的千兆交换机。
  • 品牌首选 Intel,顺便一提仿造 Intel 的产品(例如10gtek),好多都有散热问题,在有暴力风扇的支撑下还勉强能在短时间内正常使用,放到空间狭小的 NAS 中就撑不住了。
    我的方案是使用主板自带的 Intel X557-AT2 网卡,有两个 10Gbase-T 接口,使用下来感觉体验不错,除了感觉网卡散热鳍片温度偏高反正又烫不到我
  • 别买偏冷门的牌子,驱动程序容易出现各种问题。

交换机

主要以搭配 NAS 的 10GbE 交换机为主,不包含其他方面的考量:

  • 接口类型,目前 10Gbase-T 的交换机款式稀少并且价格更贵,而 SFP+ 接口的交换机则比较容易购买,还可以通过添加相应的模块把 SFP+ 接口转换成 10Gbase-T,不过具体的选择还是需要根据其他设备的接口类型来进行选择。
  • 接口数量,最理想的情况自然是有足够的接口可以同时接入所有网络设备,不过介于目前 10GbE 交换机的价格较高,也可以用一个千兆交换机负责部分线路。
  • Non-Blocking,这意味着交换机可以无压力同时处理所有接口的收发数据,例如一个8口10Gb交换机的处理能力应当达到 10*8*2=160Gbps,否则在数据流量过大的情况下会出现丢包延迟等问题。当然,家庭使用的话数据量一般没那么大,如果不怎么讲究也放弃追求这一点。
  • Buffer Size,例如 iSCSI 这类经常会周期性进行大量读写的情况,使用较大的 Buffer Size 可以减少由于缓冲区被塞满而导致丢包的问题。
  • Jumbo Frames,支持巨型帧可以减少每个数据包的开销,从而提升传输效率,例如标准的 MTU(1500) 效率大约为 95%,而 9k(bytes) 的 Jumbo Frames 可以将效率提升至 99%。但是由于这是一个超出 IEEE 802.3 标准的特性,所以需要在每个设备上分别开启,最后由于数据包在离开局域网时会被拆分为标准的 MTU(1500),所以也要注意下网关的处理能力是否足够。
  • 支持链路聚合 Link Aggregation,链路聚合可以把多个物理线路合并成一个逻辑线路(同一个 MAC 地址),从而提供故障转移或者提高并发,注意这里的提高并发并不意味着速度可以单纯的成倍提升。举例来说,假如有两条开启了链路聚合的 10GbE 线路(以LACP模式为例),这时在同时有多个连接的情况下,链路聚合会根据每个连接的 Hash(通常基于 MAC 和/或者 IP)来分配不同的物理线路,从而实现负载均衡的目的,在幸运的情况下这两条物理线路都会跑到满速,当然在最极端的情况下,这些连接都被分配到同一个物理线路的可能性也是存在的。再举一个更悲剧的例子,两个双 10GbE 网口的设备分别设置链路聚合后通过交换机进行连接,这时两个设备都只有一个逻辑线路,也就是他们之间的通信会被限制在 10Gb。另外单个逻辑线路上 Samba 和 iSCSI 等应用都无法从链路聚合中受益,真正可以让它们受益的反而是断开链路聚合,并为每条物理线路分别设置 IP,最后再使用 MultiChannel 之类的功能进行连接。不过尽管链路聚合的实际用途并不适合家用以及对 Samba 和 iSCSI 不够友好,但它仍然是面对大量连接时提高并发的优秀选择。
  • VLAN,如果需要隔离接入的设备,需要留意一下 VLAN 功能,不过现在绝大多数交换机都是支持 VLAN 的。
  • 噪音,部分 10GbE 交换机使用了暴力风扇,购买前需要留意一下。

我最后选的是 Netgear XS512EM,有 12 个 10Gbase-T 接口和两个 SFP+ 接口(与其中两个 10Gbase-T 接口共用),可以在 L2(数据链路层) 进行管理,该有的功能也都具备,对于我来说功能上算是相当满意,除了有不能关掉指示灯这个小小的困扰。然后 10Gbase-T 接口的交换机本来就不多,没有使用暴力风扇的就更是凤毛麟角了,这款交换机算是里面比较安静的了,不过即便如此,如果把周围其它设备都关掉的话,还是能听到它的风扇转动的声音的。

显卡、显示器

除非对转码有重度需求,不然谁需要独立显卡啊,至于显示器则更不需要了。

UPS

UPS 的用途主要是为了防止突然断电时造成硬件损伤或者数据丢失,所以电池容量不需要太大,能保证 NAS 从收到通知到撑到关机即可,功率方面可以对比自己使用的电源,最后需要注意一下有没有对应的驱动可以在断电时通知 NAS。我选的是 APC BR1500MS,容量为 1500VA,900W 的功率,在接入 NAS、路由器、交换机、AP 热点的情况下待机负载低于 20%。

杂项

电子设备直接放在地上容易进灰,宜家的最便宜的那款小方桌用来放置我的这款机箱以及 UPS 尺寸刚刚好,方桌下面可以放一个小矮桌用来放路由器交换机等设备,或者买个结实点的文件架可以拖着走来走去。如果机箱底部有风扇还可以考虑买几个木块把机箱垫高。

TrueNAS

部分设置没有默认开启,但是推荐开启:

  • Email 通知,这样有系统通知时会自动发送到邮箱,不然出问题了不能及时了解情况。
  • 定期快照,由于 ZFS 的快照相当轻量,所以我设置了每隔 15 分钟进行一次快照。
  • S.M.A.R.T. 任务,频率我设置的是每星期一次 LONG Test,然后尽量让每个硬盘在不同的时间运行。
  • Scrub 我设置的每月一次。

另外 TrueNAS 默认关闭了机械硬盘自动休眠,这个选项建议保留默认值即可,因为一会儿转一会儿停对硬盘寿命其实不好,对于 NAS 专用盘而言,处于一直旋转的状态其实更有利于延长寿命。