NAS打造日志--折腾篇

本来题目是想写实践篇的,但是折腾一圈下来发现这应该叫折腾篇才对,因为实在是太太太。。。折腾了

需求分析

个人的要求比较简单,不需要很多人追捧的HTPC+NAS二合一,也不需要搞个什么E3 CPU,NAS就应当好好地当好它的本职工作,具体需求就是:

  • File Server:基本的文件存取服务器,NAS核心功能,包括局域网访问和远程访问(云端服务器)
  • DLNA Server:让设备端轻松看各种下载视频和音频
  • 远程下载:远程控制下载,回到家就能看视频
  • 硬盘盘位:4-6个
  • 性能与功耗:要求必须低功耗(电费),性能不需要太高
  • 体积:ITX或M-ATX均可,优先ITX

潜在需求:

  • 软路由提供透明代理网络环境

硬件选型

实际开始打造之前对硬件方案进行了一些研究,因为手头上有一些之前DIY剩下的零部件,包括机箱,电源,内存等等,因此本次实际打造只买了一块主板,总花费470元。

硬件配置:

  • 主板+CPU:ASROCK J3160M – 470元
  • 内存:2 x 威刚DDR3 1600 4G
  • 机箱:酷冷至尊毁灭者经典U3升级版
  • 电源:酷冷至尊战斧二代400W电源
  • 硬盘:1x希捷1TB + 1x希捷250GB

曾被AMD坑过的我现在买新CPU都是首选Intel,因此根据Intel最新发布的Roadmap选择了 Intel Celeron J3160,J3160是Intel 16’Q1新发布的一款超低功耗SoC CPU,TDP仅为6W,支持VT-x、AES等,性能一般但已经可以满足基本NAS需求,做软路由也相当不错。考虑到要低功耗的原因没有选G1840, G4400这些型号,虽然总有人说功耗也高不了多少不要迷恋低功耗之类的,但是这两个CPU idle功率要高10W左右,有负载时就更高了。而J3160有负载时功耗也仅在15W-20W之间。更何况品牌NAS也都是有用J3160,J1900,N3150这些低功耗U。

Screenshot 2016-07-13 20.46.55.png

个人认为CPU选择要根据实际出发不要盲目跟风,如果没有虚拟化、HTPC、实时转码、编码、渲染。。。之类的需求高性能的CPU也是浪费。

主板方面选择的是华擎的J3160M,M-ATX规格主板,2xSATA3接口,CPU被动散热无需风扇。选择它主要是因为手头上有多余的台式DDR3内存可以用上,而且也有不错的扩展性(3xPCI-E Slot),不过SATA接口略不足,需要加SATA扩展卡扩展。

J3160M(L2).jpg

J3160M(L5).jpg

而ITX版本华擎J3160-ITX提供4xSATA3,1xPCI-E Slot + 1x Mini-PCIE Slot,使用笔记本DDR3/DDR3L内存,如果对体积有需求直接考虑ITX板。如果想拓展SATA口可以买Mini-PCIE插槽的扩展卡,可额外提供2个SATA接口。

内存8G的确是有点过剩了,如果不上虚拟化的话迟些出掉一条或者装到另一台电脑上。

硬盘都是之前留下来的东西,虽然说希捷坏盘率高什么的,但两块硬盘用了这么多年都还健在,也没看到警告信息,可能是运行时间不长的原因吧(◔౪◔)(两硬盘在线时间均为3000小时左右)。不过迟些会上WD的红盘。

实际测试了一下功耗,总结如下:

测试条件 功率
无硬盘运行(运行PE系统测试) 15W
1T 单硬盘运行 25W
1T 单硬盘休眠 20W
1T+250G 双硬盘硬盘运行 35W

软件方案

比较知名的免费NAS系统有:FreeNAS、NAS4Free、OpenMediaVault(详细介绍可以看这里)其他系统方案还有黑群晖和Windows Server。

FreeNAS、OpenMediaVault、NAS4Free关系:Olivier Cochard-Labbe在2005年创建了FreeNAS项目,后Volker Theile加入该项目作为核心开发人员;2009年12月Olivier Cochard-Labbe发表声明停止为FreeNAS 0.7版本开发新功能后,Volker Theile创建了基于Debian Linux的OpenMediaVault项目,并采用GPLv3授权;iXsystems收购FreeNAS后重写了网页框架和构架在2011年发布了全新的FreeNAS 8版本;2011年其余开发者基于FreeNAS 0.7开发了分支并重新命名为NAS4Free。
引用:http://songming.me/openmediavault-setup.html

FreeNAS、NAS4Free

这两个系统是基于FreeBSD开发,使用ZFS分区,对内存需求比较高,官方强烈推荐使用ECC内存,而且至少需要8GB,虽然这两个系统相当不错,但本次计划没有ECC内存因此只能排除这两个方案。

910gui.png

NewNas4freescreenshot.png

OpenMediaVault

OpenMediaVault是基于Debian的NAS系统,简称OMV。由于是一个Linux-based的系统,可以支持Ext3, Ext4, XFS, JFS等Linux常见分区,除了OMV本身提供的插件也可以自行安装各种基于Linux应用,总的来说是十分强大的,近几年来也渐渐火起来。

黑群晖

黑群晖是通过破解品牌NAS群晖的系统启动引导,制作出引导文件使普通电脑都可以安装群晖系统,实际使用上基本达到与群晖一致的体验,想说一下的是有人声称群晖使用的是加密分区格式,系统一旦损坏数据就拿不出来。实际上群晖使用就是Linux的EXT4分区,不存在加密一说,使用Linux-based系统就可以把里面的内容提取出来,官方也提供了相关教程。不过黑群晖肯定是非官方授权的也是没有售后支援的,所以使用上会有一定的风险,出现问题要自己解决。

Windows Server 2012 R2 / Windows 10

Windows Server系统的话就不用多说了,功能强大而且配置flexible,有需要可以上Hyper-V虚拟化,不过500刀的价钱不是每个人都能承受的起。Windows 10同样支持虚拟化,对于不想折腾的人来说也是个不错的选择。(请支持正版)


折腾篇

OpenMediaVault初体验

OMV总的来说也算是一个不错的系统,对于熟悉Linux的人来说实在是太方便,但是官方给出了这么一个需求:

System Drive
The whole disc will be occupied by the System and swap space, so size doesn’t matter so much. Data storage on the system disc is not supported.
Spinning Harddisk, SSD, Disk-on-Module, CompactFlash or USB thumb drive type drives can be used as System Drive.
If you use a Flash Drive, select one with static wear leveling, without it the drive will have a very short lifetime. It is also recommended to activate the Flash memory Plugin: (see Plug-ins) The entire disk is used as system disk. This disk can not be used to store user data.
http://wiki.openmediavault.org/index.php?title=Prerequisites

大致的意思就是,如果你使用Flash储存设备做系统盘的话,要找那些静态损耗均衡(就是类似SSD Trim技术的意思)的设备,不然的话很快就会完蛋,所以一定要找长擦写寿命的。使用SSD是个比较好的选择,系统安装好后虽然会把整个硬盘占用了,但是可以自行分区腾出空间供作储存。但是手头上没有SSD硬盘空闲,电商逛了一圈现在一线大厂SSD 60G价格跟128/120G的都差不多价格,便宜的SSD又怕出问题。偶然看到有SLC U盘这么一样东西,据说寿命比普通U盘都要长,于是在淘宝找了个59包邮的SLC U盘,本来想着系统盘读写量又不是很大找个便宜点的U盘就算了(据说都是小作坊产品),而且这个是SLC储存理论上寿命也是可以的(Flag)。

T1YWYhXj8eXXc3ZFI2_043031.jpg_430x430q90.jpg

安装完成后看到界面,看起来还是不错的,有一些插件需要安装第三方安装包,根据个人需求,安装DLNA插件和VirtualBox就差不多了。

Screenshot 2016-07-10 16.31.00.png

然而当我重启到Ubuntu Live,打开GParted分区工具打算对1T硬盘重新分下区的时候,有个警告说U盘的分区信息读不出来,当时不怎么在意,分完区重启后。。。
无法引导???

Round1:好吧。。可能是分区的时候损坏了(玄学?),只好重新分区重装OMV,配置好各种服务,Perfect!关机睡觉。
第二天再开机,突然弹了个提示说GRUB引导损坏什么的,强行重启,结果直接黑屏只有左上角一个无限闪烁的光标。。。
。。。
。。。
。。。

Round2:嗯?噢上次弄虚拟机的时候好像动过内核,好吧这次不加那么多插件了,就开默认服务运行,应该可以了吧。
然后过了几天。。
嗯?黑屏?

很好,这次U盘插到手提上直接识别不了了,U盘指示灯持续闪烁,似乎被玩坏了。。我去这还不是U盘问题?然后。。。然后火速退货了。。。

特么真的是便宜没好货啊。。折腾了一个星期结果又回到原点,NAS依然无法上线。无奈下还是要继续考虑其他方案。

Round3:找找手头上有个2G老U盘空闲可以当系统盘,那就安装上去试试吧,然而使用起来发现2M/s写入的速度实在太感人了,安装个插件都要10分钟,遂放弃。

Round4:拿个4G Micro SD卡来试试,用那2G U盘坐安装盘,但U盘似乎不兼容Debian,安装程序找不到CR-ROM安装文件,中间重试了若干次。。。
好吧。。只好在虚拟机安装,这下终于好了,然而当我要安装插件的时候。。

Screenshot 2016-07-09 22.11.03.png

然后就卡!死!了!

心好累。。至此宣布放弃,从此不再用U盘安装。。啊不对,劳资不玩OMV了!(手动再见)


Round5:手头没SSD始终比较麻烦,能安装到U盘的NAS系统还有FreeNAS、NAS4Free,虽然是有8G内存达到要求,但没有ECC始终是一个风险,因为ZFS文件系统极度依赖内存的可靠性(数据无价)。看看手头上剩下的选择,虽然有些无奈,但只有黑群晖可以选择了。

黑群晖折腾篇

群晖的系统都会在每一块硬盘安装一份,而不是安装在U盘,U盘只会在开机做引导作用,至少不会那么容易被玩坏。。

Round6:黑群晖安装教程可以参考这个帖子,不过建议黑群晖版本去官网找个新版本些的,XPEnology黑群晖官网下载

按照教程修改引导镜像,写入U盘,第一次引导时要在启动菜单选择Install/Upgrade一项,进行群晖系统的安装。

使用Synology Assistant很快就可以找到NAS的机器

Untitled.png

写入系统文件
Screenshot 2016-07-10 19.04.52.png

安装完成,相比起OVM安装步骤(标准Linux安装程序)实在是太轻松了。

界面方面看起来比其他NAS系统都要好看得多,毕竟是商业系统。
Screenshot 2016-07-10 19.37.40.jpg

Screenshot 2016-07-10 20.21.05.jpg

安装完毕,接下来按照里面的帮助文档配置好系统就可以正常使用了,难度不会太高。

因为SATA接口的硬盘在群晖系统可以使用前都要先初始化,里面的数据都要被清空,由于1T硬盘已经存有各种资料,只好把群晖系统安装在250G的硬盘上,1T的数据只能等买新硬盘才能导入进去了。不过群晖可以做到插入移动硬盘等外部设备时自动开启共享,这样把硬盘插到USB硬盘座再连接上NAS大概可以临时解决访问问题。

群晖这些商业操作系统的界面相对于OMV这些开源系统都会人性化得多,除了移动硬盘即插即用即共享外还有其他一些亮点,例如在OMV里文件管理器是一个插件,而且显示方式是跟Linux结构是一样的,硬盘分区都藏在很深的目录里。

Screenshot 2016-07-13 20.57.22.png

没有Linux基础的人一眼过去肯定是找不到目录的。。。

群晖就内置了一个文件管理器,目录显示也是简洁明了,操作起来就像用Windows文件管理器一样。

Screenshot 2016-07-10 21.00.45.jpg

当然优点还有很多很多,有兴趣可以虚拟机安装一个试试或者上官网体验一下。

说了那么多群晖的优点也不是说完全没缺点的,例如因为系统主体是放在硬盘里的,休眠的硬盘经常会被唤醒(白群晖也应该会遇到),例如打开群晖的Web控制台,DLNA浏览目录时都会唤醒硬盘。如果Windows中共享文件夹映射驱动器后更是出现无法休眠的情况,在Web控制台中可以看到Windows访问共享目录的会话。

Screenshot 2016-07-12 17.48.33.png

只有手动切断会话才可以使硬盘休眠,这个问题反而比OMV要糟糕了,因为NAS硬盘在映射驱动器后即使在不访问时也会持续运转,只有关机重启才会断开连接,不但功耗高了,长时间运行也会怕影响硬盘寿命。

OpenMediaVault·续

Round7:没错,我反悔了,我又玩OMV了。

考虑到硬盘休眠唤醒这个问题不是很理想,于是打算再好好研究一下之前的问题,因为Web界面卡死,这一次选择在SSH里面安装软件包测试,执行apt-get update的时候弹出了这个错误

Err http://mirrors.163.com wheezy Release.gpg 
Something wicked happened resolving 'mirrors.163.com:http' (-5 - No address associated with hostname)
Err http://security.debian.org wheezy/updates Release.gpg
Something wicked happened resolving 'security.debian.org:http' (-5 - No address associated with hostname)
Err http://packages.openmediavault.org stoneburner Release.gpg
Something wicked happened resolving 'packages.openmediavault.org:http' (-5 - No address associated with hostname)

无法解析域名。。DNS服务器挂了?但网络是正常的啊,其他电脑也能正常上网。Google了一番,终于检查到是/etc/resolv.conf里面的DNS地址是错误的,因为之前在虚拟机安装OMV的网卡是NAT模式,因此被设置成一个错误的DNS IP地址(虚拟网卡的网关IP,跟实际网络IP不同),立马更改回来,一切正常了,终于是明白了之前界面卡死的原因。

不过在Micro SD卡装的系统,安装程序那感人的速度又让我想起用树莓派的日子了。。。还好使用时不会影响反应速度

然后对比了一下两系统硬盘休眠被唤醒的情况:

测试条件:开启SMB/CIFS共享服务和DLNA共享服务,OMV和群晖均开启硬盘休眠功能

使用场景 OpenMediaVault 群晖
DLNA浏览目录,不点开媒体文件 休眠 唤醒
映射驱动器 休眠 唤醒
映射驱动器后,硬盘休眠后后点开”计算机”图标 几秒后自动唤醒 映射驱动器后一直唤醒
添加网络位置后,硬盘休眠后点开”计算机”图标 休眠 几秒后自动唤醒
登陆Web管理界面 休眠 唤醒
登陆Web管理界面,点击硬盘设置相关页面 唤醒 唤醒
打开Windows资源管理器,Quick access一栏中有NAS的文件记录 唤醒 唤醒

到底谁好谁坏呢?这里并没有得出结论,如果硬盘经常性唤醒,频繁开关可能会影响硬盘寿命。硬盘保持唤醒有即时反应的优势,因为休眠的硬盘启动到响应操作需要一定的时间,但这样整体功耗相对又会比较高。所谓熊掌不可兼得大概也就如此吧。

根据测试情况,建议尽量不要映射网络驱动器,这样可以避免出现时常唤醒硬盘的情况,而且使用映射网络驱动器时如果NAS没开机而其他电脑先开机还会有错误框弹出。当然了如果有需求的话除外,说实话这个功能还是挺好用的。

一个比较好的替代方案是使用添加网络位置功能(OMV有效),这样在Windows中只会把NAS共享文件夹看成是文件夹,而不是一个驱动器,虽然损失了一些高级功能(把共享文件夹看作一个真实分区),但硬盘再也不会频繁休眠唤醒了。

至此,NAS算是稳定配置好了,到头来还是用回了OMV,毕竟是Linux-based系统,耐得起折腾,使用黑裙晖还有合法性问题。不过自己DIY NAS,路上都是一个又一个坑啊,不想折腾还是买成品吧(´c_`)。

速度实测

NAS最重要的一点就是要求网络环境达到千兆速度,最好先将网络环境升级到千兆有线网络(包括路由器、网线、网卡)再部署NAS,有线网络环境达标才能有比较好的访问速度。

读取速度:NAS到PC

read.png

写入速度:PC到NAS

write.png

总体感觉还是比较满意的,读写都能达到千兆网络的瓶颈速度,CPU占用率上升到40%左右,当然这还要靠强大的希捷1T硬盘,用了这么多年都仍然保持着读写100M/s的水准,因此一直都没考虑过要加固态硬盘。

WIFI环境下就变成了这个可怜的速度。。。

Screenshot 2016-07-16 13.00.02.png

后记

根据之前的需求列表,本次打造的完成情况:

  • File Server √
  • DLNA Server √
  • 远程下载 ×
  • 软路由透明代理 ×

远程下载Linux下的解决方案有迅雷Linux版xware,在OMV安装配置略麻烦,而且开启迅雷后所有硬盘无法休眠。由于目前没有24小时下载的需求,以后有需要再进一步研究。

软路由本来是打算在Virtualbox安装Openwrt,用一只无线网卡做AP。但配置起来比有线网卡要麻烦得多,初始化配置需要有线网卡,只好待有线网卡部署到位再进行配置。

附录:NAS系统组合方案

关于NAS安装系统的方案,知乎上有一个问题“自己家里搭建NAS服务器有什么好方案”推荐看一看,其中答主MarKAde的总结比较好,简单归纳为以下几种:

  1. NAS单系统
  2. Windows+DSM双系统,DSM作为主要存储、共享系统
  3. FreeNAS系统,通过Jail插件跑Windows虚拟机
  4. Windows+黑群晖双系统,Windows为主,黑群晖作为补充(答主推荐)
  5. Windows单系统
  6. Linux单系统
  7. ESXi或Hyper-V Server

个人建议有ECC内存就直接上FreeNAS。在Windows中虚拟化使用黑群晖的话可以在Hyper-V中直通硬盘,这样即使不想用Windows系统时直接裸跑黑群晖的话只要找一只U盘做启动盘就可以做到无缝切换了。