Building a Budget Homelab NAS Server (2022 Edition)

Michael Lynch

打造一台预算型 Homelab NAS 服务器(2022 年版)

今年,我决定打造我的第一台家用存储服务器。这是一套 32 TB 的系统,使用开源软件来存储我的个人和业务数据。

服务器本身花了 531 美元,我买四块硬盘又花了 732 美元,总成本为 1,263 美元。这个价格与市售成品存储服务器相近,但它提供了更强的性能和更高的可定制性。

在这篇文章中,我会介绍我是如何挑选配件的、我犯了哪些错误,以及给任何有兴趣自己搭建的人的建议。

零售包装中的 NAS 服务器配件照片组装完成的服务器照片

我 2022 年 Homelab TrueNAS 服务器搭建的前后对比

如果你更喜欢视频讲解,我在 YouTube 上录了一期。

背景

为什么要搭建 NAS 服务器?

NAS 是 network-attached storage(网络附加存储) 的缩写。NAS 服务器的主要职责是存储数据,并让网络上的其他计算机可以访问这些数据。

那么,为什么要用一整台专用服务器来存数据?毕竟每台计算机都能存数据。

我发现把数据存储与我的其他系统解耦很有帮助。我每两三年就会升级一次主力工作站和笔记本,而在计算机之间迁移数据一直很麻烦。一台专用存储服务器消除了大部分数据迁移需求,也方便在我的各系统之间共享文件。

另外,我有非常的数据。我是个 data hoarder(数据囤积者),所以我保留着拍过的每一张数码照片、过去 20 年里发过或收过的每一封邮件,以及我所有个人项目的源代码。目前总量是 8.5 TB。

最大的数据来源是我的 DVD 和蓝光收藏。我不喜欢依赖流媒体服务来保证我喜爱的内容始终可用,所以我仍然购买电影和电视剧的实体碟。一拿到新碟,我就提取原始镜像并制作可流式播放的视频文件。原始 ISO 副本加上可流式播放的 MP4,一张碟就可能占用 60 GB 的磁盘空间。

两本装满 DVD 和蓝光碟的 500 碟收纳册的照片

凡是可能看第二遍的内容,我仍然会购买实体 DVD 或蓝光碟。

什么是 homelab?

“Homelab”是近几年流行起来的一个口语化说法。

Homelab 是你家中一个用来试验通常只出现在办公室或数据中心里的 IT 硬件或软件的地方。它既可以作为练习新职业技能的环境,也可以只是个把玩有趣技术的场所。

为什么要自己搭建 NAS?

如果你是 homelab 世界的新手,或者没有任何组装 PC 的经验,我建议你不要自己搭建 NAS

市面上有一些现成的解决方案,功能类似,学习曲线也更平缓。

在搭建自己的 homelab NAS 之前,我用了一台四盘位的 Synology DS412+ 七年。说实话,我很喜欢我的 Synology,它是我买过的最划算的东西之一。它是 NAS 服务器世界的温和入门,如果你对整个 NAS 的事还不确定,我建议从这里起步。

架子上 Synology DS412+ 的照片

我这台 10 TB 的 Synology DS412+ 已经为我服役了七年。

几个月前,我的 Synology 启动失败,并开始发出咔哒声。我意识到自己对这台单一设备的依赖有多深,不禁脊背发凉。Synology 服务器无法由用户自行维修,所以如果保修期后某个部件坏了,你就得更换整台服务器。而如果你像我一样傻,用了 Synology 专有的存储格式,没有另一台 Synology 设备你就无法访问数据。(更正:Hacker News 上的一位评论者告诉我,你可以在非 Synology 系统上恢复 Synology Hybrid RAID 卷。)

幸运的是,我的旧 Synology 在清理灰尘并重新插拔硬盘后就恢复了,但这给我敲响了重要的警钟。我决定改用 TrueNAS,因为它为开放的存储格式提供了开源实现。

TrueNAS 和 ZFS

TrueNAS(原名 FreeNAS)是最流行的存储服务器操作系统之一。它是开源的,已经存在了近 20 年,所以看起来是个可靠的选择。

TrueNAS 标志

TrueNAS 使用 ZFS,这是一种专为存储服务器设计的文件系统。传统的文件系统如 NTFS 或 ext4 运行在管理底层磁盘 I/O 的数据卷之上,而 ZFS 管理从文件级逻辑到磁盘 I/O 的整个技术栈。ZFS 的全面控制赋予它比其他文件系统更强的能力和性能。

ZFS 的一些实用特性包括:

  • 将多块物理磁盘聚合成一个文件系统
  • 自动修复数据损坏
  • 创建磁盘数据的时点快照(类似于 OS X 的 Time Machine 功能)
  • 可选择对磁盘上的数据进行加密或压缩

在搭建这套系统之前,我对 ZFS 完全没有经验,所以我很期待尝试它。

存储规划

估算我的存储容量需求

买 Synology NAS 时,我最初装了三块 4 TB 硬盘,第四个槽位空着。使用 Synology Hybrid RAID,这给了我 7 TB 的可用空间。三年后,空间不够用了,我加了第四块硬盘,可用空间达到 10 TB。

我决定在新搭建中采用同样的策略。我想要一套既能满足当前需求、又留有成长余地的系统。我的大致目标是:起步时拥有 20 TB 可用存储,并留有日后加盘扩展到 30 TB 的余地。

ZFS 不允许向现有存储池中添加新硬盘,但该功能正在积极开发中。希望到我需要扩展存储时,这个功能能在 TrueNAS 中可用。

更新(2025-01-25):该功能现已可用最新版 ZFS,不过我还没有机会在 TrueNAS 中测试它。

多块小硬盘还是少量大硬盘?

ZFS 的设计目标是在磁盘故障中存活下来,所以它对每一块数据都做冗余存储。这个特性让容量规划变得复杂,因为你的总可用存储并不等于各磁盘容量之和。

ZFS 由磁盘“池”(pool)构建文件系统。池里的磁盘越多,ZFS 就越能高效地利用它们的存储容量。例如,如果你给 ZFS 两块 10 TB 硬盘,你只能使用总磁盘容量的一半。而如果你改用五块 4 TB 硬盘,ZFS 会给你 14 TB 的可用存储。尽管两种情况下的总磁盘空间相同,五块较小的硬盘能多给你 40% 的可用空间。

搭建 NAS 服务器时,你需要决定是用少量大硬盘,还是大量小硬盘。小硬盘通常在每 TB 单价上更便宜,但运行成本更高。两块 4 TB 硬盘的耗电量是一块 8 TB 硬盘的两倍。

我想把服务器的物理占地降到最低,所以选择了更少但更大的硬盘。

raidz 1、2 还是 3?

ZFS 提供不同的冗余选项:raidz1、raidz2 和 raidz3。主要区别在于稳健性。raidz1 可以在不丢失数据的情况下承受一块磁盘故障。raidz2 可以承受两块磁盘同时故障,raidz3 则可以承受三块。

你在稳健性上得到多少,就要在可用存储上付出多少。以五块 4 TB 硬盘为例,每种 ZFS 模式能提供的可用存储如下:

ZFS 类型可用存储占总容量的百分比
raidz115.4 TB77.2%
raidz211.4 TB57.2%
raidz37.7 TB38.6%

我选择了 raidz1。只有几块硬盘时,两块硬盘同时故障的概率相当低。

请记住,ZFS 不是备份策略。ZFS 可以保护你免受磁盘故障的影响,但还有许多威胁是 ZFS 无法缓解的,比如误删、恶意软件或物理盗窃。我使用 restic 将所有重要数据复制到加密的云端备份。

ZFS 的价值在于,如果一块硬盘坏了,我不必动用云端备份;但如果两块硬盘都坏了,我就得从备份恢复。那会很麻烦,但为了 raidz2 而放弃服务器 20% 的可用存储并不值得。

物理硬盘越多,你对磁盘故障就应该越防御。如果我的池里有 20 块盘,我可能会用 raidz2 或 raidz3。

防止磁盘同时故障

想当然地看,两块硬盘同时故障的概率似乎小到可以忽略。根据 Backblaze 的统计数据,高质量硬盘的年故障率为 0.5%–4%。每年 4% 的风险折算到任意一周是 0.08% 的概率。两块同时故障大约每 30,000 年才发生一次,所以我应该没问题,对吧?

问题在于,硬盘之间在统计上并不是相互独立的。如果一块硬盘故障了,它旁边的硬盘死亡风险会显著升高。当这些硬盘是同一型号、来自同一生产批次、并处理相同工作负载时尤其如此。

此外,重建 ZFS 池会给所有幸存的硬盘带来异常大的压力。一块在正常使用下还能撑几个月的硬盘,可能会在重建池的额外负载下死亡。

考虑到这些风险,我尽我所能降低了磁盘并发故障的风险。我选择了来自两家制造商的两种不同型号的硬盘。为了降低拿到同一批次硬盘的概率,我从不同的卖家处购买。我说不好这有多大作用,但它并没有显著增加成本,何乐而不为?

我拿着不同包装的 Seagate IronWolf 硬盘的照片

我从两个不同的卖家购买了同一型号的硬盘,以降低拿到同一生产批次中两块硬盘的概率。

我是如何挑选配件的

主板

第一个决定是主板尺寸。我一直很欣赏 Synology DS412+ 紧凑的外形。我从没用 mini-ITX 主板装过电脑,这似乎是个好机会。

我选择 ASUS Prime A320I-K 有几个原因:

  • 它有四个 SATA 接口,可以让我把四块硬盘直接接到主板上。
  • 它支持 Radeon 显卡,省得我另买独立显卡。
  • 它很便宜,只要 98 美元。
ASUS Prime A320I-K 主板照片

ASUS Prime A320I-K 在 mini-ITX 外形下支持板载显卡。

警告:我后悔选了这块主板。详见下文的讨论。

我也看过 B450,非常相似但价格几乎是两倍。它的主要优势似乎是更好的超频支持,而我用不上。

CPU

根据我读到的资料,ZFS 对 CPU 的要求并不高。我在一台便宜的 Dell OptiPlex 7040 迷你主机上装了 TrueNAS 做了个简单测试。CPU 几乎没怎么用,所以选低功耗方案似乎是安全的。

我对 CPU 的主要要求是支持 Radeon 显卡,以便使用 A320 主板的板载 HDMI 输出。

AMD Athlon 3000G 照片

AMD Athlon 3000G 价格便宜,且原生支持显卡。

我最终选定了 AMD Athlon 3000G。只要 105 美元,性价比不错,支持 Radeon 显卡,而且 CPU 跑分也还行。

机箱

上次装 VM 服务器时,我用了 Fractal Design 的机箱。那是我有史以来最喜欢的机箱,所以这次我又回到了 Fractal Design。

我选了 Fractal Design Node 304 Black,一个紧凑的 mini-ITX 机箱。我喜欢它的设计,因为它更像一个立方体而不是塔式机箱。它有六个硬盘位,让我既能装够硬盘,又留有未来扩展的空间。

Fractal Design Node 304 Black 机箱

Fractal Design Node 304 Black 是一个可容纳六块硬盘的 mini-ITX 机箱。

硬盘(数据)

机箱有六个硬盘位,我决定先装四块 8 TB 硬盘,在 raidz1 下可提供 22.5 TB 的可用存储。将来需要扩展时,加第五块盘可到 30.9 TB,第六块则可到 37 TB。

在 8 TB 这个区间,低于 7200 RPM 的硬盘不多,但可以买到 10000 RPM 的。对我的 NAS 来说,7200 RPM 以上的转速没有意义,因为瓶颈在网络。10000 RPM 的硬盘会更吵、更耗电,却不会带来任何实际的性能提升。

起初我尝试查看 Backblaze 的硬盘统计来避开易故障的硬盘,但他们用的硬盘偏贵。有一阵子我考虑过 400 美元的硬盘,因为它们 0.5% 的故障率令人印象深刻,但我意识到花两倍的钱只把故障率降低几个百分点是不理性的。

最后一个要避开的坑是叠瓦式磁记录(SMR)技术。ZFS 在 SMR 硬盘上表现很差,所以如果你要搭 NAS,请避开已知的 SMR 硬盘。如果硬盘标注为 CMR,即传统磁记录,那对 ZFS 来说就没问题。

我选了 Toshiba N300Seagate IronWolf。我在 TrueNAS 论坛和 reddit 上都看到了对这两款的好评。两个型号售价都在 180–190 美元,对这样的存储容量来说是不错的价格。

Toshiba N300Seagate IronWolf

Toshiba N300(左)和 Seagate IronWolf(右)

硬盘(系统)

Kingston A400

Kingston A400 作为 120 GB 的 M.2 SSD 只要 32 美元,性价比极高。

TrueNAS 需要一块专用的系统盘,但据我所读,它对系统盘的要求不高。系统至少需要 2 GB 空间,而 TrueNAS 很少读写系统盘。

我选了 Kingston A400,因为它便宜得惊人——120 GB 的 M.2 盘只要 32 美元。我太喜欢 M.2 硬盘了!它们不需要任何线缆,只要塞进主板,几乎不占空间,之后再也不用碰它。

内存

在做调研时,我经常看到一条“规则”:ZFS 需要每 TB 磁盘空间配 1 GB 内存。据 ZFS 开发者 Richard Yao(理查德·姚)所说,那条规则是个迷思。ZFS 有一些吃内存的功能,比如数据去重,但 ZFS 在内存受限时也能正常运行

我发现买内存极其无聊。我真希望挑选内存时有更严谨的流程,但我找不到可信的内存基准测试或用户报告。我的流程是:

  1. 查看与 ASUS A320I-K 主板兼容的内存条列表
  2. 筛选只用两条内存条就能达到 32 GB 或 64 GB 的选项
  3. 筛选我信任的品牌(Corsair、Crucial、G.SKILL、Kingston、Samsung、Patriot、Mushkin、HyperX)
  4. 筛选 150 美元以下的选项

这个流程让我选定了 CORSAIR Vengeance LPX 32GB CMK32GX4M2A2400C14 (2 x 16GB),售价 128 美元。

CORSAIR Vengeance LPX 32GB CMK32GX4M2A2400C14 内存的照片

CORSAIR Vengeance LPX 32GB CMK32GX4M2A2400C14 (2 x 16GB) 与 A320I-K 主板兼容,对 32 GB 来说价格也不错。

电源(PSU)

就功率而言,基本上任何消费级电源都足够了。根据 PCPartPicker,我的系统只需要 218 W。我本来会选 300–400 W 的电源,但没有更低瓦数的半模块化选项。我选了 500 W 的 EVGA 110-BQ-0500-K1

EVGA 110-BQ-0500-K1

EVGA 110-BQ-0500-K1 是半模块化电源。500 W 的功率对我的配置来说绰绰有余。

90 度 SATA 线

我拿着 90 度 SATA 线的照片

受机箱空间限制,我需要 90 度 SATA 线

有一件我从未买过的东西是 90 度 SATA 线。直到我发现主板和电源之间没有足够的空间插入标准 SATA 线,我才意识到需要它们。这些细长的 90 度线解决了问题。

90 度 SATA 线勉强塞进 SATA 接口和电源之间的照片

电源和主板之间挤得要命,我不得不使用 90 度细长 SATA 线。

省去了什么?

出于价格、复杂度或物理空间的考虑,我有意在我的配置中排除了几个部件。

显卡(GPU)

由于物理空间和主板接口都很紧张,我不想要独立显卡。我选择了无需外接显卡即可支持图形输出的主板和 CPU 组合。

主机总线适配器(HBA)

许多 NAS 配置会包含一个 host bus adaptor(主机总线适配器)(HBA)。HBA 是插在主板 PCI 插槽上的一块芯片,可以增加主板能支持的硬盘数量。

ZFS 要求你刷新 HBA 的固件,这个过程听起来既繁琐又令人困惑(更正:显然,只有 RAID HBA 才需要重新刷写)。我决定先搁置 HBA,等需要更多存储再说。ASUS A320I-K 有四个 SATA 接口,足以满足我最初的需求。我特意留了一个 PCI 插槽给未来的 HBA。

ECC 内存

在研究各种 TrueNAS 配置时,我看到不少帖子声称 ECC 内存(纠错码内存)是防止数据损坏的必备品。我最终决定不用 ECC 内存,只用普通的消费级内存。

虽然我显然不希望服务器在内存中损坏我的数据,但过去 30 年我一直在用没有 ECC 内存的计算机,从未注意到数据损坏。如果我要搭建一台整天承受多用户高负载的服务器,我会选择带 ECC 内存的配置。就家庭需求而言,我认为普通消费级内存应该就够了。

SLOG 硬盘

许多 ZFS 配置会包含一块单独的专用 SSD,称为 SLOG(separate intent log,独立意向日志)

其思路是:写入 SSD 比写入多块机械硬盘快几个数量级。当应用写入数据时,ZFS 可以迅速将其写入 SSD,告知应用写入成功,然后异步地将数据从 SSD 移到存储池。SLOG 能显著提升写入速度

我选择不集成 SLOG 硬盘,因为我受限于接口和硬盘位。加一块 SLOG 硬盘意味着要么放弃我唯一的 PCI 插槽,要么放弃六个硬盘位之一。我更愿意为将来扩展容量留出余地。

配件清单

类别部件我支付的价格
CPUAMD Athlon 3000G$105.13
主板ASUS Prime A320I-K*$97.99
显卡不需要——主板原生支持显卡$0
硬盘(系统)Kingston A400 120GB$31.90
内存CORSAIR Vengeance LPX 32GB CMK32GX4M2A2400C14 (2 x 16GB)$127.99
电源EVGA 110-BQ-0500-K1 500W 80+ Bronze Semi-Modular$44.99
机箱Fractal Design Node 304 Black$99.99
SATA 线Silverstone Tek Ultra Thin Lateral 90 Degree SATA Cables(x2)$22.30
合计(不含硬盘)$530.29
硬盘(存储)Toshiba N300 HDWG480XZSTA 8TB 7200 RPM(x2)$372.79
硬盘(存储)Seagate IronWolf 8TB NAS Hard Drive 7200 RPM(x2)$359.98
总计$1,263.06

* 注意:这块主板开箱可能无法与 AMD Athlon 3000G CPU 配合工作。详见下文

与成品产品的对比

作为对比,以下是一些价格相近的成品解决方案。

产品2022 预算 NASSynology DS920+QNAP TS-473A-8G-US
硬盘位644
内存32 GB4 GB4 GB
最大内存32 GB8 GB8 GB
CPU 跑分447930024588
价格$530.29$549.99$549

我的搭建总成本与成品解决方案相近,但我的钱花得更值。我的内存是它们的 8 倍,而且我不会被锁定在任何闭源、厂商专有的操作系统平台上。

装机照片

零售包装中的配件照片

所有配件的零售包装盒

机箱内主板的照片

把主板装进 Fractal Design mini-ITX 机箱时没有任何问题。

装有 M.2 SSD 的主板照片

我喜欢装 M.2 SSD。不用线也不用托架——一颗螺丝就搞定。

已安装电源的照片

这是我装过的第一台电源背面不露出机箱外的系统。机箱用一根短的 NEMA 延长线把内部电源接到机箱自身的外部电源输入口。

安装电源之前的 SATA 线照片SATA 线在电源旁边刚好挤下空间的

主板 SATA 接口和电源之间挤得要命,我不得不购买特制的 90 度细长 SATA 线。

所有线都接好后的主板照片

所有部件都接到主板上之后(CPU 风扇除外)

我桌上的 NAS 服务器照片

组装完成的成品

用 TinyPilot 组装服务器

本博客的老读者可能记得,我曾用 Raspberry Pi 打造了一个专门用于搭建和管理服务器的工具,叫做 TinyPilot。这是我用 TinyPilot 搭建的第三台服务器,也是第一台使用全新的 TinyPilot Voyager 2 搭建的服务器。

TrueNAS 服务器顶部的 Voyager 2 PoE 设备照片

我没有给 TrueNAS 服务器接键盘、鼠标和显示器,而是用 TinyPilot Voyager 2 来完成安装。

我显然有偏心,但用 Voyager 2 搭建这台服务器真的很好玩!我从未给服务器接过键盘或显示器。我可以直接在浏览器中查看视频输出、进入 BIOS、挂载 TrueNAS 安装镜像。

所有线都接好的主板照片

TinyPilot 让我无需插入 U 盘、键盘或显示器即可挂载 TrueNAS 安装 ISO。

我遇到的一个短板是升级 BIOS。TinyPilot 可以挂载 .img.iso 等磁盘镜像文件,但它还不知道如何与目标计算机共享原始文件。当我需要加载 ASUS BIOS 升级用的 .CAP 文件时,我很惭愧地用了一个 U 盘,而没有保持纯 TinyPilot 的搭建。我希望尽快为该场景添加支持,让 TinyPilot 能应付我下一次的 BIOS 升级。

是这个 BIOS 版本不兼容,还是我是个笨蛋?

当我装好所有部件后,系统能通电,但没有视频显示。

糟了!难道是我误解了主板板载视频的要求?我做了所有常规诊断:重新插拔内存、重新安装 CPU、检查所有线缆——结果一样。

经过一阵慌乱的 Google 搜索,我看到有提到 ASUS Prime A320I-K 需要先升级 BIOS 才能与 Athlon 3000G 配合工作。我回忆起选配件时确实看到过这个警告,但我直接忽略了它。“我做过 BIOS 更新,”我想,“没什么大不了的!”

我没有考虑到,在没有 CPU 的情况下该怎么升级 BIOS。

幸运的是,我 2017 年的 homelab VM 服务器里的 Ryzen 7 CPU 与 ASUS Prime A320 兼容。我借用了那台服务器的 CPU 和显卡,我的新 NAS 服务器成功启动了!

版本 2203 的 ASUS BIOS 截图

我得以使用旧 2017 homelab VM 服务器的部件来升级 BIOS。

奇怪的是,即使我用借来的部件让系统启动了,主板仍显示运行的是 BIOS 版本 2203,而 ASUS 声称该版本与 AMD Athlon 3000G CPU 兼容的。但我还是升级到了最新的 5862 版 BIOS。

ASUS 支持页面截图,显示 ASUS Prime A320I-K 在版本 2203 支持 Athlon 3000G

ASUS Prime A320I-K 的 CPU 兼容性页面声称从 BIOS 版本 2203 起就与 Athlon 3000G 兼容。

升级到 5862 之后,我仍然无法启动。然后我意识到,我把 HDMI 线插到了服务器的 DisplayPort 输出上。

TrueNAS 网页控制台截图

DisplayPort 的设计者为什么要把 HDMI 线做得这么容易插错?

这一整套借配件的折腾到底有没有必要?有两种可能:

  • 我太笨了,直到升级完 BIOS 才注意到 HDMI 线插在了主板的 DisplayPort 输出上。
  • ASUS 太笨了,错误地把 Athlon 3000G 列为与 BIOS 版本 2203 兼容,而实际上并不兼容。

通常我会承认是自己的错,但 ASUS 的 BIOS 太不稳定了,问题也可能出在 ASUS 那边。无论如何,我终于在没有借用任何部件的情况下启动了 NAS,松了一口气。

视频中首次启动成功那一刻的截图

装上 Athlon 3000G 后我终于看到启动画面的那一刻

性能基准测试

写这篇文章的过程中让我意外的一点是,我找不到任何好的 NAS 性能基准测试工具。有一些工具可以在 NAS 本身上运行来测试本地磁盘 I/O,但这并不反映真实使用情况。我的大部分使用都是通过网络进行的,所以本地磁盘基准测试完全测不到网络栈中的瓶颈。

我干脆自己编了一个简陋的基准测试。我生成了两组随机文件数据,然后用 robocopy 测量我的主力台式机与 NAS 之间的读写速度。这绝算不上严格的测试——我没有在隔离网络上做,也没有在测试时关掉台式机上的所有其他进程。我对旧 Synology DS412+ 也跑了同样的测试作为对比。

第一组文件是 20 GiB 的 1 GiB 文件,另一组是 3 GiB 的 1 MiB 文件。我在加密卷和非加密卷上各取了三次测试的平均值。

性能峰值为 111 MiB/s(931 Mbps),与 1 Gbps 近得可疑。这说明限制因素是我的网络硬件,因为我的交换机、台式机和两台 NAS 服务器的以太网口都是 1 Gbps。

读取性能

在非加密卷上,我惊讶地发现我那台老旧的、服役 7 年的 Synology 居然胜过了我崭新的 TrueNAS 配置。Synology 读取小文件快 31%,大文件快 10%。

Synology 的辉煌很短暂,因为它在加密上彻底崩了。Synology 在加密卷上的读取速度下降了 67%–75%,而加密对 TrueNAS 没有任何影响。这让 TrueNAS 在加密卷上读取小文件比 Synology 快 2.3 倍,大文件快 3 倍。我的大部分数据都放在加密卷上,所以这项测试更能代表我的典型使用情况。

写入性能

虽然我的旧 Synology 在读取上胜过了 TrueNAS,但写入并非如此。即使是在非加密卷上,TrueNAS 处理小文件也快 77%,两者在 1 GiB 文件上的表现则相近。

同样,加入加密后 Synology 的写入性能被彻底击垮。启用加密后,TrueNAS 处理小文件快 5.2 倍,大文件快 3.2 倍。

功耗

我用一个 Kill A Watt P4460 电表测量了旧 Synology 和新 TrueNAS 服务器的功耗:

Synology DS412+2022 NAS
空闲38 W60 W
负载43 W67 W

新服务器比我的旧 Synology 多耗电 60%,有点出人意料。我的电价约为 $0.17/kWh,所以运行这台服务器每月大约要 7.20 美元。

我不太清楚哪些因素推高了功耗,但一个可能是电源。Synology 的电源可能与它的其他部件完美匹配,而我的 500 W 电源在只发挥 15% 容量的系统上很可能效率低下。

最终感想

主板

我对 ASUS Prime A320I-K 最大的抱怨是它的兼容性有限,但也有可能是我搞错了。

除此之外,我对它的 BIOS 也不太满意。它的升级工具完全坏掉了。它本应能下载并安装最新的 BIOS 版本,但当我尝试升级时,它一直告诉我已是最新 BIOS,而实际上并不是。我只能手动升级:下载文件并用 U 盘加载。

ASUS EZ Flash 显示我的 2203 BIOS 已是最新版本的截图ASUS 网站显示有 BIOS 版本 5862 可用的截图

ASUS EZ Flash 工具声称我的 2203 版 BIOS 已是最新。而 ASUS 网站提供了 5862 版 BIOS,所以我只能手动更新。

我还没注意到 A320I-K 最多只支持 32 GB 内存。我不确定将来是否需要扩展内存,但多给自己一些余地总归是好的。

修复 Realtek 网卡驱动

我注意到,当系统网络负载较重时,主板的以太网适配器有时会失效,reddit 上的 /u/trevaar 好心地解释了原因。显然,A320I-K 的 Realtek 网卡在 FreeBSD 上的驱动存在稳定性问题,但可以通过以下变通方法加载官方驱动:

  1. 在 TrueNAS 网页控制台中,进入 System > Tunables
  2. 添加以下两个设置:
    变量类型
    if_re_loadYESloader
    if_re_name/boot/modules/if_re.koloader

机箱

我对 Fractal Design Node 304 感到失望。当年我用 Fractal Design Meshify C 装 VM 服务器时,那个机箱不断给我惊喜,有好多我在其他机箱上从没见过的功能。而这次恰恰相反。我一直在想:“为什么这在别的机箱上从来不是问题,在这台机箱上却成了问题?”

它外观好看,但内部操作起来很别扭。几乎没有文档,机箱的一些机构也不直观。

这是我的第一次 mini-ITX 装机,我知道机箱设计者为了把体积做小不得不有所取舍,所以也许我评判得过于苛刻了。

CPU

我对 Athlon 3000G 很满意,但事实证明它对我的需求来说性能严重过剩。我的 TrueNAS 控制台显示,过去一个月的使用中 CPU 有 99% 的时间处于空闲状态:

3 月份 CPU 使用率曲线图,几乎全部低于 10%

TrueNAS 几乎不占用任何 CPU 资源。

这块 CPU 最重要的是支持 AMD 的 Radeon 视频技术,让我省去了买 GPU 的必要。105 美元的价格非常划算。

硬盘(数据)

现在评价硬盘还为时过早,五年后再回来看看我对它们的看法吧。目前一切良好。

我最大的担心是硬盘噪音太大,但我完全听不到它们。唯一听到它们的时候是在跑性能基准测试时。有趣的是,它们最吵的时候不是在读写时,而是在我在测试之间删除文件的时候。

电源(PSU)

看到系统空闲功耗是 60 W 之后,我开始怀疑自己当初是否应该更用心地选一个容量更低的电源。500 W 是我所需容量的两倍多,如果选 300–400 W 区间的电源,也许能降低服务器的空闲功耗。

硬盘(系统)

Kingston A400 运行正常。TrueNAS 对系统盘的负载极低,它基本没什么事可做。它还有 90 GB 空闲,所以我本可以用更小的盘。

TrueNAS 的报告里几乎没有任何磁盘活动。每周有一次作为默认计划任务一部分的微小 I/O 读取用于错误检查,仅此而已。

系统盘磁盘 I/O 曲线图,显示极少的活动

TrueNAS 启动后几乎不碰它的系统盘。

TrueNAS

我运行的是 TrueNAS Core 13,这是更成熟的 FreeBSD 版本。另一个选项是 TrueNAS Scale,它基于 Debian,硬件和软件兼容性更广。

刚接触 TrueNAS 时,我就知道 Synology 的网页界面很难被超越。那是我见过的网络设备中最优雅、最直观的界面。他们出色地构建了一个简洁的 UI,让最终用户不必接触底层文件系统的技术细节。

TrueNAS 也有它的极客魅力,但我发现它在易用性上比 Synology 退步了一大截。这个界面看起来像是出自一个对命令行之外的一切都充满蔑视的人之手。

Synology 网页控制台截图TrueNAS 网页控制台截图

Synology 的网页界面(左)远远领先于 TrueNAS(右)。

在 TrueNAS 上,我尝试了好几次才创建一个新卷并共享到网络。你得在好几个互不关联的菜单之间跳来跳去,而且没有任何提示告诉你下一步该做什么。而 Synology 有流畅的 UI 流程,引导你完成所有必需的设置。

我发现第三方应用在 TrueNAS 上安装起来困难得多。我用 Plex Media Server 来串流我的电影和剧集收藏,Plex 在 TrueNAS 上是预配置的插件。它本应是最容易安装的应用之一,但我折腾了一个小时,翻遍了文档。相比之下,在 Synology 上安装 Plex 只需在向导里点两分钟。

我还是坚持用 TrueNAS,因为比起几乎其他任何东西,我更在意平台锁定问题,而且我喜欢支持开源软件。如果我要给一个不那么有意识形态追求的朋友推荐 NAS,我会推荐 Synology。

ZFS

ZFS 很酷,但除了 RAID 之外,我还没发现它的其他功能有什么必要。

我看到人们谈论快照,但我没有找到使用它的需求。我的 restic 备份方案里已经有快照了。它们不算特别方便,但我用 restic 已经两年了,只记得有一次需要从快照恢复数据。

一个有趣的功能是加密快照。你可以对数据卷做快照而无需先解密它。我有一些想保持加密状态但不常访问的数据,能够不解密就定期备份会很方便。

总体

总的来说,我很享受我的新 NAS,这次搭建也让我学到了很多。如果这是我第一次接触 NAS,我会又痛苦又困惑,但从 Synology 起步让我温和地入门了这些相关技术。我感觉辅助轮已经拆掉了,可以开始折腾 ZFS 和 TrueNAS 的强大功能了。

视频

两年半后的更新

截至 2024 年 11 月,我使用这台存储服务器已经大约两年半了。以下是我在这段时间使用它的一些感想。

仍然对 NAS 很满意

我仍然很喜欢这台 NAS。我怀念 Synology 的用户体验,但不知为何,我在 TrueNAS 上感觉更有掌控感。

我的一块 Toshiba N300 硬盘开始咔哒作响

搭好 NAS 大约 18 个月后,我的一块 Toshiba N300 硬盘开始发出咔哒声。SMART 测试没有显示任何问题,但我不想冒险继续使用一块发出咔哒声的硬盘。

我换成了另一块 8 TB 的 Seagate IronWolf,此后再没出过问题。

换成了机架式机箱

搭好 NAS 一年后,我购买了一个服务器机架,并开始把我的全部基础设施迁移到机架上。

对于 NAS,我购买了一个 Sliger CX3701 十盘位服务器机箱。我很喜欢这个机箱,只要你能确定会把主板上唯一的 PCI 插槽用来扩展 SATA 接口,我就推荐它。如果你需要把 PCI 插槽用于显卡或万兆网络,那么 10 个硬盘位中你只能用 4 个,因为 mini-ITX 主板通常只有四个 SATA 接口。

换成 Sliger 服务器机箱后,我还需要一个新电源,因为 Sliger 只支持 SFX 和 SFX-L 规格的电源。我选了 SilverStone 300W 80 Plus Bronze ST30SF-V2。从 500 W 电源降下来我很高兴,因为我的系统峰值功耗只有大约 150 W。

换成了 TrueNAS Scale

看起来 TrueNAS Scale 获得的投入比 TrueNAS Core 更多,所以我切换到了 TrueNAS Scale。主要区别在于 Core 基于 FreeBSD,而 Scale 基于 Linux Debian。

切换之后,除了 Scale 的 Web UI 稍好一些,我没注意到太大区别。而且我用终端更自在,因为我平时通常在 Linux 而不是 FreeBSD 上工作。

加装了一块万兆光纤网卡

搭建服务器机架时,我选了一台带万兆端口的交换机,所以为我的 NAS 买了一块 10 Gbps 网卡。

不幸的是,那块网卡不工作,我又试了两块,全都不行

最终,我认为唯一的解释是主板不兼容,于是我升级到了 Gigabyte B550I Aorus Pro(见下文),它终于能与我的 Mellanox ConnectX-3 EN CX311A 网卡配合工作了。

即便如此,我在 TrueNAS 上配置万兆网卡时仍然很费劲,因为它总是默认使用主板的板载网卡。当我试图把 NAS 的静态 IP 移到万兆网卡上时,它一直抱怨 Kubernetes 已经占用了那个 IP 地址。我找不到原子性地迁移静态 IP 的方法,只好从 BIOS 里禁用主板的板载网卡。即便如此,它还是不让我迁移 IP,所以我只能为 NAS 换一个新的静态 IP。

换成了 Gigabyte B550I Aorus Pro 主板

如上所述,为了解决万兆网卡的兼容性问题,我升级到了 Gigabyte B550I Aorus Pro AX 主板

这块主板不错。我比 ASUS Prime A320I-K 更喜欢它一点:

  • 优点
    • 我喜欢它自带 I/O 挡板。
    • SATA 接口朝正上方,所以我不需要特殊的直角 SATA 接头。
    • 内存插槽更好用。
    • CPU 安装座更容易操作。
    • 风扇针脚的位置更方便。
  • 缺点
    • 它有我见过的最让人困惑的 M.2 插槽,说明书完全没有解释,我不得不去 YouTube 上找视频。
    • 进入 BIOS 似乎比 ASUS Prime A320I-K 慢不少。

遗憾:mini-ITX 限制了扩展

我最大的遗憾是给机箱和主板选择了 mini-ITX 规格。

mini-ITX 主板只有一个 PCI 插槽。大多数只有四个 SATA 接口,而我没见过哪个既有更多 SATA 接口又同时支持板载显卡。这意味着,如果你想用 HBA 接超过四块硬盘,就没有 PCI 插槽可用了。

就我而言,我想装一块万兆网卡,这意味着除非我买一整套新机箱和主板,否则我就只能用四块硬盘了。

如果重来一次,我会买一个有六到八个 3.5 英寸硬盘位的机架式机箱,以及一块有多个 PCI 插槽或至少八个 SATA 接口的主板。


感谢 Blogging for Devs Community 的成员们为这篇文章提供了早期反馈。

原文由 Michael Lynch 发布

本文章由 stealth/ox-alpha 进行翻译