什么是 NAS
NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。
这是百度百科对 NAS 的定义。按照个人理解,NAS 诞生有如下原因和作用:
-
专业的人做专业的事 ,专业的设备(硬件)承载专有的业务。
当今社会工作岗位被精细化分工,软件工程上微服务概念也如火如荼,这些概念诞生的背后机理是相似的。回到 NAS,它将存储业务从主服务器剥离,软件上实现了存储和主业务的松耦合,硬件上实现了专有硬件设备存储。这样做的好处显而易见:
- 主服务器崩溃不会导致存储数据丢失。
- 独立的存储硬件方便进行数据备份,配套软件能对存储业务进行专门优化。
-
个人数据存储方案多了一种选择。
截至 2020 年 11 月,国内免费公有云只剩百度一家,其他诸如坚果云,115 等都转向收费市场。海外,谷歌宣布 2021 年 6 月终止无限照片免费存储,三星宣布 2021 年 8 月底关闭云相册同步功能,并删除相册数据。
免费的才是最贵的
,这一真理再次得到检验。个人是赞同云服务转向收费模式的,前提是服务的稳定性,隐私性。动辄删除用户数据,关停服务器的行为一直是悬在用户头上的达克莫里斯之剑。既然都接受收费模式了,为何不选择自建云呢?NAS 为我们提供了一种新的数据存储方案,本质上跟多年前随身带个移动硬盘进行备份没有区别。
个人使用 NAS 的好处:
- 随时备份手机照片:免去 iCloud 等各种昂贵的云存储服务。
- 家庭影音中心:手机上装个媒体播放器,通过 samba,ftp,dlna 等方式播放 NAS 上的电影。
- 录像存储:部分 NAS 支持录像存储功能,可以将家庭摄像机的录像存储到 NAS 上,进行备份和回放。
- bt/pt 下载机[1]:有松鼠病的朋友可以 24h 不间断下载网络资源。
- 其他数据中心:例如我个人就将 NAS 当作笔记数据的存储中心。
NAS 软硬件方案对比
软硬件一体化方案
所谓软硬件一体化,即是 NAS 厂家销售硬件 + 软件一整套 NAS 解决方案。市场上常见的 NAS 解决方案厂家有群晖,威联通,铁威马等。
- 优点:用户上手门槛较低,有厂家技术支持和成熟的软件生态。
- 缺点:价格昂贵,例如群晖最低配的两盘位 NAS 裸机[2]价格也要 2000 +。
通用硬件 + NAS 操作系统
Intel NUC 迷你主机,J1900 工控机,Gen10 服务器
,有折腾过软路由,HTPC 的朋友肯定对这些硬件耳熟能详。从硬件角度看,NAS 也是*立迷你主机,只要符合一定性能要求的设备都能作为 NAS 主机。
淘汰的笔记本电脑,树莓派,路由器,台式机,从技术上讲这些硬件作为 NAS 主机都行得通,但各有各的局限。个人认为 NAS 主机必须具备如下硬件条件:
- 低功耗:功耗控制在 15W 以下(不算硬盘功耗)。
- 24h 全天候运行:个人不赞同用到 NAS 再远程唤醒的方式(WOL),一来不稳定,二来用户体验糟糕。
- 稳定:这是 NAS 最核心的功能诉求。
- 低噪音:有独立机架和弱电间的土豪可忽略这一条。
- 至少两个 SATA 口:最少接两块硬盘,一块存储,一块备份。实在没条件的可用 USB3.0 + 易驱线 扩展硬盘。
- 至少一个千兆网口:局域网数据传输速率至少保证千兆,有条件可上万兆。
- 建议使用 x86 硬件,兼顾性能和软件兼容性。
说完硬件再讲讲软件。NAS 操作系统是针对 NAS 业务功能做过定制裁剪的系统,用户可以开箱即用。下面列出一些常用的 NAS 操作系统,个人没有试用过也不做任何评价。
- 黑群晖 。
- FreeNAS 。
- OpenMediaVault 。
- RockStor 。
方案优缺点
- 优点:硬件*度很高,用户根据需求可以攒出超高性价比的设备。软件上也可以选择自己心仪的 NAS 操作系统,不必被 NAS 厂家捆绑。
- 缺点:用户上手门槛较高,需要具备一定的软硬件专业知识。自建的 NAS 软硬件稳定性是个很大问题,出问题后没有厂家的专业技术支持。
通用硬件 + 通用操作系统
在前一种方案的硬件基础上,直接使用 Ubuntu、CentOS 等通用操作系统作为 NAS 操作系统。
开篇提到过,NAS 是业务分离的产物。这里却又提到了 all in one 的需求,其实并不矛盾。
- 业务分离只是软件上的分离,松耦。资金不富裕的情况下,硬件上 all in one 对家用来说性价比很高。
- 通过 docker 等软件技术解决 all in one 的部分劣势[5]。
小结
- 有自建 NAS 需求,且资金充裕不愿意折腾的用户,建议购买软硬件一体化的 NAS 解决方案。随着更多资本进入 NAS 市场,NAS 价格也会更亲民。
- 不满足 NAS 厂家提供的功能,想发挥闲置硬件余热,不想花太多时间维护软件功能的用户,可以选择通用硬件 + NAS 操作系统的方案。
- 具备软硬件专业知识,或想通过自建 NAS 学习软硬件知识,喜欢折腾,想实现 all in one 的用户,可以选择通用硬件 + 通用操作系统的方案。
我的 NAS 软硬件方案
我的硬件是一台 5200U 的工控机:
- CPU:Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz,TDP 15W 。
- 内存:8GB DDR3L 1600。
- 存储接口:1 x msata,1 x SATA3.0,2 x USB3.0。
- 网口:4 个 I211AT 千兆网卡。
工控机是两年前买来折腾软路由的,一直闲置吃灰[6],拿来当 NAS 主机绰绰有余,但毫无性价比可言。
软件方案上,为了最大发挥硬件性能和定制化 all in one 需求,选择的是 Ubuntu + docker 方案。
- seafile:开源私有企业网盘,云存储解决方案。
- chevereto:开源图床解决方案。
- aria2:开源下载器,支持 HTTP/HTTPS、FTP、SFTP、BitTorrent、Metalink 协议。
- nginx-proxy:著名的反向代理软件,支持 80/443 端口复用,分发二级域名请求给不同 docker 容器。
为什么不用 ESXi 等虚拟机方案
- 5200U 只有 2 个核心(4线程),顶配支持 8G 内存,多开虚拟机比较吃力,降低用户体验。
- 使用 docker 也能实现各业务运行环境隔离目的。
为什么使用 Ubuntu 而不是 CentOS,FreeNAS
- 宿主机选择 Ubuntu 纯粹是个人喜好,完全可以换成 CentOS,Debian,Archlinux 等其他 Linux 发行版。
- 不选择 FreeNAS 等专用 NAS 操作系统则是为了最大程度的软件*度,实现 all in one 。
为什么选择 seafile 而不是 nextcloud
- seafile 技术栈是 c + python;nextcloud 是 php 。作为嵌入式开发者,自然更倾向于 seafile 。
- 文件同步性能和稳定性:seafile 支持差分同步,虽然牺牲了传统的文件系统目录结构,但有 SeaDriver,Fuse 等补救措施。nextcloud 使用标准文件系统保存数据,但网友反馈小文件多了后 performance 极差,推测是 PHP 的锅。
- 扩展需求:个人网盘的核心诉求是文件同步稳定性,数据保存安全性,而不是多人协作等边角功能,nextcloud 插件系统对我来说有点鸡肋。
顺带吐槽下:nextcloud 插件中心加载速度极慢,用户体验很差,主要原因是插件中心服务器位于国外。
为什么使用 nginx-proxy
- 不必记忆容器端口号:docker 容器基于 web 管理,部署 nginx-proxy 反代,可以复用 NAS 主机 80/443 端口,通过二级域名访问不同 docker 容器。
为什么要使用 chevereto
- 问题等价于:什么是图床 + 自建图床(chevereto)有什么好处?
- 个人当前的笔记方案是 seafile + typora + chevereto 。
chevereto 用于解决图片存储问题:即使调整笔记目录结构,也不会导致笔记中的图片引用失效[7]。
为什么不用 imgurl
- 首次尝试的图床软件是 imgurl,但其 docker 版本无法使用,才切换成 chevereto 。
总结
自建 NAS 有几个目的:
- 让闲置硬件发挥余热。
- DIY 过程中学习完善前后端软件知识体系。
本文是 NAS 系列文章的开篇,后面将陆续补充:
- seafile 个人网盘自建过程及注意事项。
- chevereto 个人图床自建过程及注意事项。
- aria2 下载机部署方案。
- nginx-proxy 反向代理及 HTTPS 证书申请方法。
- 数据备份方案分析和 UPS 必要性分析。