自己搭个NAS,香吗?

原本是想在这个贴 “相比用网盘,自己搭个NAS不更香吗?” 下面回复,没想到长度超过限制,单独发一下吧。

=================================================

2017年3月又连续挂掉两个硬盘之后,我痛下决心搞自己的NAS。刚开始并不知道会弄成怎样,抱着半玩半学的态度慢慢摸索,到了6月系统搭建好,一直运行至今。看大家好像对这个话题挺有兴趣,把我经历过的和大家分享一下。不是写论文那么严谨,很多选择也是个人化的无所谓最优,各位请轻喷。

1、系统

我花了几周时间研究各种NAS系统的优缺点,最终选择了原生支持ZFS文件系统的XigmaNAS (原来的NAS4FREE)。基于FreeBSD的XigmaNAS除了原生ZFS支持,还支持VirtualBox和bhyve两种虚拟机,其中bhyve支持部分物理机硬件Passthrough给虚拟机(目前为止我成功Passthrough过PCI-E USB3.0卡和PCI-E转接的NVME固态硬盘)。还有一个重要的考量因素,XigmaNAS开源。

500

2、硬件

既然NAS 24小时开机,我就想要实现24小时不用再开另一台电脑就能听音乐,所以打算在NAS里面跑个虚拟机运行一个配置好的FOOBAR2000,这台虚拟机要通过物理主机的USB口连接到我音响系统的解码器,这需要通过Passthrough功能把物理机的USB口传递给虚拟机。很明显让那些低功耗的ATOM、赛扬或者奔腾CPU再带一个虚拟机有点勉为其难,它们本身并不支持虚拟化技术,所以我转向至强X56XX系列的洋垃圾和配套的服务器主板(IPMI接口给我很大的惊喜,管理服务器太方便了)以及ECC内存(可以保证存储数据的完整性)。

CPU:X5675 6核12线程3.46G,16X元; 

内存:3x16G ECC DDR3L 1333,46X元;

主板:超微X8DTL-3F,45X元; 

系统盘:Intel 545S 128G装系统和用作读缓存,41X元;

电源:振华 G550W 金牌全模组电源,57X元;

存储盘:2x4T希捷酷鹰,2x71X元;

机箱:利旧。

就算买个机箱,最低3500元左右(2017年中的价格)也能弄出一台6核12线程CPU、48G内存、4T RAID1、最多可扩到8块硬盘(主板自带的SATA接口。因为是服务器主板,其实还可以加扩展卡)、性能和可扩展性都相当强大的NAS。为了保护硬盘免于供电中断而损坏,UPS是必须的,带USB接口通信功能的650W后备式UPS就差不多了,三五百块搞定。

3、RAID的选择

在几种RAID模式中权衡了可靠性、性能和可扩展性,先用虚拟机模拟,然后找了几块小容量的旧硬盘进行测试,最后决定采用先RAID1,再扩展到RAID10的升级路径,后期扩容只需要逐个RAID1替换更大容量的硬盘即可。RAID的选择有点类似网盘还是NAS,是很个人化的一种选择,因为完美的方案并不存在,必然要在某个方面做出妥协。我认为损失一些容量换取更高的可靠性是值得的,同时在比较强的硬件支持下,最简单的双盘RAID1的读写,已经基本可以跑满千兆网络,升级到RAID10之后性能会更好。

4、同步

大约是XigmaNAS 11之后的某个版本,免费开源的Syncthing开始成为内置的功能。这个文件/文件夹同步软件非常强大,支持IPv4和IPv6,不需要做任何网络配置即可实现局域网穿透,数据传输基于TLS加密安全可靠。NAS、电脑、手机相互之间都可以同步,支持文件版本控制,可以保留文件的多个历史版本,简直好用到爆。就算不用NAS,用于几台电脑间的文件同步,或者手机相册之类和电脑之间的同步也非常棒。以一个很常见的场景为例,在办公室用笔记本,回家用台式机,设置好同一个工作文件夹和NAS自动同步。在办公室用笔记本时,对这个文件夹里面的所有改动,都会自动同步到家里的NAS。回到家打开台式机,工作文件夹的这些改动又会从NAS自动同步到台式机。反之在台式机的改动也通过一样的机制会自动同步到NAS和笔记本,U盘、移动硬盘什么的根本不需要。

500

5、备份

虽然NAS的存储一般都会组RAID,可靠性有一定的保障,但是RAID仍然有一定的机率无可挽回地崩溃,所以给NAS做备份仍然很有必要。现在是时候展示ZFS文件系统的强大了,ZFS通过快照机制来保存系统在不同时刻的状态,快照的生成几乎是瞬间完成的。通过快照的发送、接收功能,把快照发送到另一台同样支持ZFS的主机就能完成备份,发送两个快照的差异部分就能实现增量备份,不需要什么第三方的备份软件,ZFS本身就能实现得相当完美。

在第一组4T RAID1的两个硬盘7x24小时连续运行了接近3年之后,2020年6月中我又往存储池中加入了两个4T硬盘组成的RAID1,整个存储池变成RAID10结构,容量达到了8T。虽然把两个旧盘拆分到不同的RAID1里面,但是跑了两年多的硬盘损坏的风险已经上升了很多,我开始考虑给NAS做备份的问题。家里的台式机是Windows系统,不可能直接接收NAS发送的快照,解决办法就是在台式机上建一个虚拟机安装XigmaNAS,单独分配一个8T硬盘给这个虚拟的XigmaNAS使用,这样NAS发送过来的快照就可以全部保存到这个8T硬盘上了。之后研究了几天ZFS快照发送、接收,花了一个通宵弄了一个自动增量备份的雏形脚本。又经过一段时间的测试和完善,这个脚本到现在运行了8个多月,每天定时自动创建一个快照来进行备份,保留之前15天内自动生成的所有快照,至今一切顺利,跨年期间也运行正常。

6、功耗

一共4个4T机械硬盘 + 1个SATA SSD + 2个使用PCI-E转接卡的NVME SSD + 1块USB3.0扩展卡,整机加上UPS功率大概80多瓦,24小时开机每天大概2度电,1块多钱1天。

7、性能

大文件连续读写可以稳定在110MB/s左右,得益于48G内存和100G左右的SSD读缓存,大量小文件的读写速度也不错。

8、可能的问题

我这套NAS的主板、CPU、内存都是洋垃圾,早期测试有一条内存出过问题(没有损坏存储的数据,这是ECC内存的优点),其他硬件7x24小时跑了超过3年半,都还好。

9、总结

总的来说,自建NAS不是很难也不太容易。电脑小白建议直接上群晖这样的商业化产品,不折腾。如果像我这样有点理论基础和动手能力,又有兴趣耐心研究一番,应该可以自己搭建起来实现一些基本功能的NAS。进阶选手就不用说了,可选的方案太多,问题只在于需求和意愿。

最近更新的专栏

全部专栏