NAS系列 为什么你需要一台NAS

发布于 2023-07-03  1671 次阅读


前言

之前无论是写Linux还是Docker的教程,都是基于VPS的。如果已经学习过我的“Linux系列”和“Docker系列”,使用Linux应该是没有太大问题了。不过,我自己在折腾云服务器以前,主要还是玩NAS的。

在信息时代,存储(Storage)是我们日常学习、工作或娱乐中的一种非常基础的设备,比如U盘、移动硬盘、各种存储卡、电脑主机里面的M2固态/SATA机械硬盘等。网络附加存储(Network-attached storage,NAS)则是一种基于网络的存储。从字面意思上看,我们用的VPS、百度云等云盘均可视为NAS——比如,在VPS/百度云里放一些文件,然后在需要它的时候远程地访问它们。

尽管NAS的定义十分宽泛,但我们平时所提及的NAS其实指的是一种专用主机。根据我的经验,NAS一般有以下特点:

  • 7×24工作
  • 硬件结构和PC差不多(一定有PC三大件——主板、CPU和内存),但硬件性能比日用PC要差很多,因此单位功耗一般不高
  • 主人离它很近(比如放家里、实验室),且对物理硬件具有完整的支配权;这与VPS/百度云等产品具有显著区别。因此,NAS多数时间与我们的常用电脑/手机处于同一局域网段,具有较高的传输带宽(家用一般是1G、2.5G或10G)
  • 有多块专用硬盘,因此天然地拥有非常大的存储空间;并且具有专门的软硬件将多块硬盘整合成一个磁盘阵列,从而可以在少量硬盘损坏的情况下不丢失数据;磁盘阵列也是更高带宽的重要助力

根据上述描述,其实NAS就是一台存储功能很强、数据保护功能很强的主机。它和我们用的PC、工作站、服务器在本质上并没有太大区别。NAS的硬件搭配时要特别考虑机箱大小和盘位,和一般的PC/工作站大不相同。使用NAS的用户一般对本地传输带宽有不同寻常的需求。市场上也有一些专门的NAS软硬件,这也提示与一般的PC/工作站相比,NAS在某些功能上进行了强化。因此,我个人倾向于认为家用NAS是一种专用设备

不过,其实持什么观点不重要。你只要知道NAS是个好玩的东西就行了 (ฅ´ω`ฅ)

外观

有些小伙伴分享过自己的家用服务器组成,玩得挺花的,大家也可以参考下!另外,我在B站视频里还选几个比较典型的NAS外观给大家看看:

外观1300元就能组NAS?司波图手把手教你在蜗牛星际上装黑群晖。这就是NAS玩家里大名鼎鼎的蜗牛星际,也是陪伴我2年多的NAS (ฅ´ω`ฅ)

msedge_maCdFrUK9l

外观2【翼王】DIY一台高性能的MINI ITX文件服务器,还要能使用万兆网络。这个外观和我新近组的NAS差不多。

msedge_9XFpl2at67

外观32020新年究极UP主专用8盘位NAS主机,ECC,万兆网络一个不落

msedge_PO1y7qSPTF

外观4弥补价值一万刀的过错 - 公司存储服务器再再升级#linus谈科技

msedge_RYNknevbhb

根据硬盘位和性能的需求不同,NAS外观的差别是非常大的。当然,价格也相差很大 (ฅ´ω`ฅ)

看了前面关于NAS的介绍,你可能有点心动:要不要整一台NAS玩玩?先别急,我结合自身经验给你看看,当时我是怎么决定入手和升级NAS的,希望可以起抛砖引玉的作用!

初尝NAS

几年前,我买了一个iPad Mini 4作为“生产力”工具。晚上睡觉前如果没什么事做,我比较喜欢在床上用iPad看看视频助眠(经常看着看着就睡着了)。除了B站,我经常会看一些老电影、老电视剧,这些视频网站里都很难找到高清资源,或者需要购买会员。因为iPad的容量比较小,我一般是想办法下载到PC的硬盘里,然后使用一个叫Air Video HD的软件(Windows PC也要装一个客户端),通过它来看PC硬盘上面的视频。那时候,其实并没有媒体库管理视频的意识;虽然自己对Linux也非常熟悉,但其实并没有怎么用过Docker,自然对Jellyfin、Emby或Plex不太了解。

后来,由于家里网络配置的要求,我有一个任务,就是要在家里组一个无缝漫游的Wifi网络。在查资料的过程中,我接触到了软路由、千/万兆网络、AP+AC方案等知识;我还了解到,基于J1900 CPU的工控机在当时是一种比较流行的软路由方案,它可以带得动300M左右的带宽。一个偶然的机会(忘了是自己找到的还是B站推的,可能是和J1900有关吧),我看到了司波图的一个视频——用300块折腾一个叫“蜗牛星际”的4盘位矿渣主机来组建一个搭建黑群晖系统的NAS!总之就是这样接触了NAS。从这开始,我自然也慢慢了解到PT/transimssion/jellyfin之类的家庭影音相关Docker应用。

我专门了解了一下NAS,发现自己需要一台NAS。首先,我对磁盘阵列比较感兴趣。磁盘阵列确实是一个完美的数据保护方案。当时我想到了这些场景可能需要NAS:

  • 日常工作里,我会经常接触到一种叫FASTQ格式的文件(保存生物序列及其测序质量得分信息)。它通常很大,单个文件基本都有几个G;并且可能有很多个。它们对我来说是非常重要的文件,我并不希望它们因为硬盘损坏等意外事件而丢失。基于FASTQ的分析文件,比如BAM或者某些巨大的矩阵,文件体积都很大。但由于它们需要随时被调用,因此不适合放在百度云之类的网盘里。
  • 家人外出游玩、逢年过节拍的照片或视频,似乎从未被系统和规范地处理。从长远来看,这些照片和视频其实也是挺珍贵的,很有纪念意义和价值。
  • 基于Jellyfin/Emby/Plex的媒体库,特别是用于保存各大视频平台均难以找到的冷门资源、老电影/老剧集。
  • 基于Docker的各种服务,比如Nextcloud、Nginx Proxy Manager/DDNS-GO等。

尽管我已经知道了蜗牛星际,但我并没有那么快入手。因为我并不是很喜欢黑群晖这种NAS系统。我希望有一个NAS系统,最好是基于Linux内核,这样我关于Linux的基础可以降低学习成本;一个开源、免费的系统,有活跃的社区,并且支持一种叫ZFS的软Raid技术,这样可以较易获取持续稳定的技术服护。后来,司波图更新了OpenmediavaultOMV)的系列视频,我觉得OMV就是我想要的NAS系统。我喜欢OMV的原因,还在于OMV的官方论坛十分活跃,Youtube教程均很完善,折腾过程中处理bug会比较简单。以下是我曾在OMV官方论坛中所开的threads:

image-20230202120306065

确定使用OMV这一NAS系统后,我很快在闲鱼淘了一个蜗牛星际和4块4T西数红盘(它运行时比较安静,也是NAS专用盘),价格也不贵。之所以选择二手硬盘,是因为我想快点接触到和磁盘阵列维护有关的技术,如果买新盘,不仅价格贵好多,全程太稳也学不到东西;事实证明恢复阵列的时候确实很刺激 (ฅ´ω`ฅ) !

拿到NAS后啥硬件都没换(很多人会换固态、电源或内存),直接装了OMV系统,组了一个RaidZ2,可以坏2块硬盘而不丢失数据。一般情况下,4个盘组Raiz2有点浪费,使用全新硬盘的人多数是组Raidz1。不过现阶段的主要目的是测试和了解OMV/ZFS,自已的文件也不多,因此Raiz2也可以满足日常需求。当时想用ZFS阵列还有另外一个考虑,就是ZFS迁移到新机器的过程似乎是挺简单的,这也为后面平顺迁移ZFS阵列到虚拟机OMV中埋下伏笔。我的初衷是在使用蜗牛星际期间掌握磁盘阵列的组建和维护相关技术,以后有机会再搞更大容量的家用NAS并在严肃场合正式投入使用。

当然,我的蜗牛星际也不负所望——在这个过程中我换过几次硬盘来恢复阵列 (ฅ´ω`ฅ) 我也知道了ZFS阵列里向一块全新硬盘恢复数据的速度是很慢的(一般在24h以上),特别是校验盘很多的情况下。网上一些特别大的ZFS阵列的恢复时间甚至以周计,导致还不如直接冷备份后重建阵列来得快。这也促使我进一步了解在硬盘很多(12+)的情况下应该如何合理地组ZFS阵列,以在较高的阵列性能和较低的阵列恢复成本中取得平衡;比如参考这篇文章的使用技巧。这里暂不展开,以后讲到ZFS阵列时再详细说明。尽管维护ZFS阵列是一个小白容易踩坑的过程,但如果Linxu基础掌握得好,Google好好用,其实也可以hold住。

另外,我还学习到一些意想不到的经验。比如,如果一个磁盘经常掉盘,除了磁盘损坏,也有可能是SATA线材问题。线材老化导致接触不良、供电不稳定也是磁盘掉盘的常见原因,网上这类情况也不少见,我用蜗牛星际的时候也撞上了。因此,玩NAS的人家里最好备一些全新的SATA线,如果硬盘老是掉盘且S.M.A.R.T又看不出什么端倪,可以换一条全新的线看看。当然,更多的排障经验,之后会再系统总结,这里暂不展开。另外,我刚刚开始用ZFS的时候还以为别人用我的电脑来挖矿了,后来才知道ZFS本来就会占用很多内存(并不影响其它应用的性能),这在我最新安装的OMV虚拟机里也证实了这一点。后来,测试帐户使用了弱密码还给人攻破过2次,这也促使我去了解应该如何更加安全地使用Linux系统

总之,蜗牛星际是我的第一台NAS,在折腾的过程中成长了不少。本博客blognas.hwb0307.com中的nas指的就是这台蜗牛星际!

升级NAS

蜗牛星际陪伴了我数年时间。老实说,蜗牛星际作为一个文件服务器是十分称职的。对于大多数家用场景来说,蜗牛星际是一种极具性价比的方案。

不过,我越来越不希望我的NAS仅仅是一台文件服务器。蜗牛星际的局限性对我的影响越来越大,主要原因来自它的CPU和内存。其一,蜗牛星际的内存较小(4G),这在运行Nextcloud等程序时速度还是挺慢的;J1900封顶只支持8G内存,拓展性一般般 ,这个内存大小也只是玩虚拟机的入门配置。其二,J1900性能确实差一些(2.42Mhz×4),大多数应用都对单核性能要求较高。其三,J1900不支持h265 10bit视频的硬解,这导致我在h265 10bit起步的PT站里选择资源时束手束脚;如果不小心播放了一个h265的视频,CPU使用率立马爆满,整个系统卡得不要不要的。J1900的核显(Intel® HD Graphics for Intel Atom® Processor Z3700 Series)只能当个亮机卡,想追求更强的性能(比如视频的解码/转码)只怕是力不从心。其四,也是最重要的原因,就是我想了(zhe)解(teng)虚拟机系统及相关技术,但J1900并不支持Vd-T

msedge_TXs4CyOGtz

我在很早的时候就知道Esxi/ikuai/Unraid/PVE等虚拟机系统。如果升级新NAS,我希望它可以安装一个虚拟机系统。这样,我可以内置Openwrt系统替代现在的WIFI路由器拔号上网,这会大大提升上网性能,并且可以折腾一些奇怪功能(比如去广告),使得整个局域网的设备都可以使用特别网络(这对于jellyfin/emby的自动刮削是至关重要的);也可以尝试将ZFS阵列迁移至OMV虚拟机里,积累跨主机迁移ZFS的经验;还可以搭建win10系统方便日后做一些测试,比如VSCode(后来发现G5400T的虚拟显卡性能不足,估计不好折腾)。这其实就是大家常说的软路由/NAS的All-in-one玩法

经过一番了解,我最终选择PVE作为新NAS的虚拟机系统。其一,PVE基于QEMU/KVM虚拟机和Linux Container(LXC)等虚拟化技术。QEMU/KVM虚拟机的技术是很成熟的,很多VPS本身就是一个KVM。LXC是我后来才了解到的,对于我这个重度Docker使用者来说简直就是神器(对OMV使用者来说其实没这么神,但对FreeNAS的用户来说还是挺不错的)。其二,PVE对Debian类(比如OMV)操作系统的兼容性比较好,你甚至可以在Debian系统里面安装PVE,或者在OMV里安装PVE内核(实际上这是使用ZFS的必备操作),因此无论是学习还是维护成本都很低。其三,PVE的硬件直通功能的兼容性比较好,这样我可以做很多硬件直通的测试,比如在LXC里将CPU核显直通给jellyfin使用,从而实现流畅的4k h265解码/转码;将PCIE扩展设备(比如2.5G网卡)直通给OMV使用。其四,未来我估计会有一台类似这样的强大主机,届时基于PVE和硬件直通,我可以很好地利用它的性能,在工作中和其它同事进行良好协作,推进研究工作。其五,司波图已经在2022年推出了PVE系列视频教程,我大致看了一下,觉得自己可以轻松hold住PVE的。

关于近期新升级的NAS的硬件选择和组装过程,我会陆续更新教程,敬请期待!

储备知识

如果你想自己折腾NAS,特别是复现我的NAS系列教程,应该做到:

  • 对《学习地图》中的“Linux基础”有较好的理解和实践水平。无论是PVE、Openwrt还是OMV,本质上都是基于Linux内核的系统。因此了解Linux的基本操作对于排障等各种折腾是必要的,这样无论遇到什么bug都不用慌。
  • 对“Docker”系列要有一定的了解。尽管很多视频Up主(包括司波图)在安装Docker的时候喜欢用docker run或者直接在软件的选项里面设置,但Docker Compose是一种更加优雅、通用和简洁的方式。Portainer也支持Docker Compose安装。总之,Linux基础学好,我觉得使用Docker是一个非常简单的操作。
  • 对网络有一定了解。如果你以前没有家庭组网的经验,最好仔细地阅读一下我的文章《了解IP地址》,这样至少对IPv4有一定的了解。

如果能够提前掌握上述相关知识点,相信折腾NAS的过程是挺简单的。

最后就是Google/Github的使用喽,这个是老生常谈了(ฅ´ω`ฅ)

学习资源

除了本博客外,我再推荐一些Up主,他们的视频通常包含电脑硬件或者NAS配置的建议。我的大多数知识也是来源于他们,然后自己不断折腾后凝练而来。当然,B站还有一些其它小伙伴也做的不错,但他们关于NAS的视频教程比较零散,就不作特别推荐。

此外,值得买什么这个社区有很多质量不错的NAS折腾文章,在搜索的时候可以限定一下关键词,说不定有惊喜。我的新NAS在考虑硬件时就较多地参考了值得买什么的这篇博文。从行文来看,作者是用心玩用心写的,不是CSDN里面那些垃圾文章可以相比的。另外,在处理bug时,也可以找找博客园和知乎的文章,有时会有意外收获。

小结

看完全文,相信对于自己是否需要一台NAS,已经心中有数。如果你是一个喜欢折腾VPS的人,那我觉得你大概率也可以折腾NAS的过程中获得很多乐趣。如果想获得更多关于NAS的知识和建议,敬请期待我的后续文章 (ฅ´ω`ฅ)

扩展阅读