想给自己的数据正经安个家了,这不得马上整个NAS?

我平时的NAS使用场景是这样的:

首先是我拍摄的照片和录像文件,这些文件是相机记录而来,有很多记忆在里面,而且一旦丢失几乎没有重新获取的途径。好在这些文件不大,只有几个Gb左右。

然后我会存储一些游戏资源,比如美术素材,UI资源,音效或者代码插件等。这部分加起来还不少,大约100GB左右,不过就算不幸文件丢失,很多素材就算丢失也能从网络上找回,一些热门资源就更容易找到了。

还有我在网上冲浪收集来的各种资源,比如各种游戏和和一些好用的工具软件这些。这部分空间占用还挺多的,虽然大部分资源也能冲网上找到,但是它也和照片视频一样,承载了很多记忆。

最后是以笔记为主的热数据,不大但是访问频繁。我的习惯是使用纯本地化的markdown文件来记录各种知识和笔记,再加上各种网站和博客对md的支持都相对较好,这样无论在哪里粘贴笔记内容都能有比较好的展示效果。

有了具体的需求,就可以开始选择存储方式了。这些数据加起来200GB左右。一开始我是想组RAID 1的,但是转念一想,RAID保护的其实是硬盘本身,而不是里面的数据。也就是RAID 1它只能保护因为外界原因造成的硬件损坏而丢失的数据,而内部误删的数据是救不回来的。

对我来说,误删丢失数据的概率要远大于硬件故障丢失数据的概率,所以我想靠更加频繁的冷备份来提升数据安全。考虑再三我打算使用单块固态硬盘来做NAS的存储盘,然后定期做快照,再将快照备份到对象存储上。

快照可以很好的避免文件误删带来的数据丢失,而对象存储备份又可以很好避免硬盘损坏的问题,同时它又是数据中心级别的可靠等级,比我自己做321原则备份要方便的多。对象存储我只用来备份数据,平时只写不读,恰好对象存储入网流量又是免费的,相当于我有存储空间才计费,再加上我数据不大,所以成本完全可控。可能唯一的出网流量就是在数据损失后恢复的时候,相比丢失的数据的价值,这点流量费其实可以忽略不计。

NAS软件部分,我使用Truenas作为操作系统,它基于ZFS文件系统,而ZFS有COW机制,在数据修改量少的情况下,做快照几乎不会占用太多存储空间,这很适合我这样数据读多写少的使用场景。同时这样的快照还可以解决备份软件在备份过程中文件被修改所导致的数据不一致的问题,两全其美了属于是。Truenas还有一个数据巡检的功能,可以设定每周或者每天对硬盘的数据进行读取,然后算校验和,找出损坏的文件。毕竟数据备份时,最怕的就是写进去的时候是好的,然后过了很长时间再来读取发现文件损坏了。

NAS硬件部分,一开始我是打算买个小主机来当NAS用的,但是看了一眼价格,n100小主机基本都在500-1000价格之间。最后我选择把Truenas部署到了自己笔记本的虚拟机上,然后用这个预算给笔记本加装了一个2T的固态硬盘和32GB内存。然后剩余的预算都给到对象存储的存储空间资源包上。这样笔记本有电池,相当于UPS,不用担心意外断电。笔记本待机功耗足够低,优化后整机功耗可以低到10W左右,同时桌面端的处理器峰值性能也远超n100。

系统方面,Truenas总体还是非常好用的,自带很多文件共享协议,比如NFS,SMB,ISCSI等,这些都可以开箱即用。而且全称都是在WebUI里操作的,完全不用敲命令行(当然给Truenas配网络的时候除外)可能唯一麻烦的地方就是每次电脑开机后,要手动启动一下Truenas的虚拟机。

要问我对这个NAS有什么不满意的地方,那么就是传输速度了。在本机访问NAS的读写速度大约在1.3GB/s左右,很快。但是一旦从局域网访问,速度瞬间掉到130MB/S,只有本机速度的十分之一,这还是2400Mbps的WIFI。如果换成1000Mbps的有线网卡只会更慢。整个链路上其实网络才是瓶颈,固态这么快的速度完全发挥不出来,然后恰好机械硬盘的传输速度正好在100到200MB/s之间,就非常适合。

这样一个NAS就初步成形了,虽然比较野鸡,但也能满足我的需求,目前已经稳定运行大约4个月了。虽然目前是在虚拟机里运行,但是等到后面数据多了,也可以用很低的成本把Truenas迁移到物理机上,只需要导出配置配置文件,然后把数据复制到物理硬盘上即可。