之前一只把我主力台式机做存储,当需要访问文件就开机,不过经过了7年多这台式机年纪有点大了,因为担心炸主板,就二手出掉了。 而且从不知道什么时候开始玩游戏的时间越来越少了,所以新的电脑最重要的功能反而是存储。 因为家里笔记本也比较多,而且老婆用的是小容量的SurfaceBook,所以我家需要一个7*24小时的中心化存储,也就是我需要Nas。

需求分析

因为有了最核心的需求,我决定要搞一个Nas。当出现了主需求以后,我就要开始列我对这台机器的其他需求:

  1. 预算1000刀(加刀,本文单位都是加刀)左右,就是挪用了我的电脑预算了,不含硬盘
  2. 7*24,每月待机电费不能高于5刀
  3. 支持盘挂载,网页文件管理
  4. 性能不能太差,以免我想跑点东西
  5. 盘位不能太少,起码4个,保证以后的扩展性
  6. app文件管理(可选)

方案

硬件

  1. 购买现成的Nas
  2. 自己组

首先被否决的就是现成的Nas了,现成的Nas优点很明确就是现成,不需要烦恼软件什么的,而且省电,但是性能就比较堪忧了。 当然我这个预算能搞到群晖的1618+,看着除了cpu比较弱鸡以外也确实没啥缺点的。

所以几乎一开始我就选择了自己组这条路,那就开始上核心配置吧:

  • CPU: AMD 3200G 在论坛上看过一些3200G/3400G待机功率大概35w,在我可以考虑范围,性能也能跟我以前的4770一拼,本来我一直想搞3400G,然而除了一开始亚麻发了特价以后就再也不见打特价了,有次看到CC的3200G 100刀,就买了
  • RAM: 盗船8G DDR4 3000MHz * 2,特价就买了100刀
  • 主板: MSI Tomahawk B450,本来搞了个ASRock的钢铁传奇B450,然而这玩意不支持无CPU刷BIOS,那我就没办法了只能退了,换成MSI的。主板140刀,特价加了3年保修14刀
  • 电源: 海韵550FX全模组,这是被朋友安利了,因为要7*24,电源稍微还是给多一点预算吧,CC特价110刀
  • NVME: Intel 660P 110刀,用来装系统
  • UPS: APC 650VA 88刀

我另外有些上台电脑的遗产:

  • 机械硬盘
  • SSD 255G 1个

本来一直考虑上ECC的,然而AMD的APU不支持ECC,Intel的要支持APU要不就是低端的奔腾赛扬,要不就要上到XEON了,而且主板还贵,所以因为穷,我还是不上ECC了。

其实这次搞机研究最久的是机箱。这年头的机箱都是花里胡哨的,都搞什么侧透,我要的是静音,是多盘位。一开始考虑的是Antec P100/101/110,然而这些在加拿大都不便宜,最后在亚麻找到了Rosewill的4U机箱 视频,8盘位而且风道还很好,关键还是特价100刀。 当然这玩意的风扇噪音很大,所以把所有风扇都换成了arctic的PWM风扇,5个F12和2个F8。CPU风扇搞了便宜的反人类400然后还顺便把那个花里胡哨的风扇换成arctic的P12 PWM。

这个机器搞完以后测了一下功耗,待机功耗约35w。满载半个小时温度依然稳定在35度。满载下就算开盖,噪音也很低,我测得是30db,基本就是背景噪音了。

系统

有了硬件就是时候来选软件了,首先是系统:

  1. FreeNAS 看了有不少人推荐这个,优点是zfs,缺点是系统是FreeBSD,要上docker得先搞虚拟机
  2. OpenMediaVault 是FreeNAS那套东西在linux的Fork,基于debian的发行版,我短时间试了一下没有什么问题,就是基于比较老的debian,而不是testing,不是滚动版不是很符合我的使用逻辑

所以经过短时间的OpenMediaVault的使用后,我决定还是回到Arch Linux,不过也发现了一些我需要使用的功能,如硬盘休眠,硬盘监测之类的东西。

文件系统

下一个个问题就是文件系统的,因为听了无数朋友在raid下的悲惨故事,我还是别依赖raid了,找GCP Coldline做冷备份就是这么简单,而更加重要的信息可以再丢一份在google drive。 最终我文件系统只是简单的做了LVM和用我那个256 SSD做LVM缓存。再之上就是简单的EXT4。

服务

除了部分需要访问到系统的服务,我所有服务都跑到Docker里面。

一开始我本来是想用nextcloud做存储这块,后来发现这货bug貌似挺多的,可能有比如我把我本来有的文件导入,我的想法就是丢到那个目录应该就可以, 然而要用nextcloud的工具刷一下文件的index,这也很合理,但是用nextcloud给的工具死活出错,我不可能为了导入再下载然后上传一次这样搞法。 所以最后只能放弃这玩意了。然后我又试了下国人的seafile,这玩意会把文件分块加密存储,某种程度上这个做法是对的,然而我如果使用这样的东西, 就意味着绑定到这个服务了。这好像又不是很符合我的使用逻辑。

最后我想了一下我其实需要的只是挂载,我只要启动一个webdav/samba服务器,然后就可以挂载了,至于网页端我可以找个网页版的文件管理器,而且移动端的webdav/samba文件管理器也是很好找的。

然后我还跑了个CoreDNS,用来挟持DNS,当在家庭网络的时候就把域名指向内网的ip。

备份我用了rclone,用起来很简单,随便配置一下,搞了个docker image,再丢到cron定时跑就可以了。

登录

网页端登录这一块我统一使用了Google Login结合Nginx的auth_request, 另外我还在同一个程序里面做了一些防火墙的功能,把一些明显是有问题的访问过滤掉并丢到路由器的黑名单。

感谢

最后感谢龙哥帮我分析各种存储和挂载方案,感谢峰爷帮我挑主板和电源。