#原创新人# 自制NAS经验分享

2016-08-31 09:14:35     作者:值友3739455858      来源:什么值得买

标签: 使用评测 笔记本内存

前段时间看到一个好友的移动硬盘挂了,多年数据毁于一旦。因此萌生搞一台nas想法,做好数据备份工作。基本设计需...

前段时间看到一个好友的移动硬盘挂了,多年数据毁于一旦。因此萌生搞一台nas想法,做好数据备份工作。基本设计需求是要支持3-4台硬盘,并且支持做raid。原文发在了非著名五毛论坛上(需账号登陆可见,反正你们也不会去看 ):

经过一段时间运行和系统调整后,nas运行比较正常,继续总结经验教训,发张大妈

一、平台选择

现如今从平台选择上来说,群晖方案无疑是最为方便省心的,毕竟是专业设计nas平台。但是群晖一是性价比不行,比如双盘位的ds215也要1400左右,但硬件无疑是很垃圾,cpu还是marvel的arm处理器。第二是群晖的系统定制化不行,毕竟为了方便使用也是有所牺牲。所以第一时间把群晖出局了。

第二种方案是hp micro server,这也是比较优秀的方案。最低端赛扬处理器的配置在2000左右,可支持四盘位,比起群晖可以说是物美价廉。整机做工作为大厂出品,也是有保障的。但是由于当时过于片面追求低功耗静音,还有省钱,最后还是没选此方案。

第三是自己组装了。相对来说比较折腾,可能系统会有兼容性问题,稳定性不佳等。好处是可以有符合自己需要的产品,以及价格上的优势。张大妈上以前也有过一篇自己折腾组装nas的文章,在其中也获得了不少姿势,一并对作者感谢。正好intel此时推出了新一代braswell低功耗处理器,可以在无扇下运行。最后价格和无扇静音起了决定因素,就选择自己配了。


二、硬件搭配

首先是cpu。如果单纯存储和下载的话,对cpu性能不会有太大的需求,这种情况下就可以去追求低功耗静音了。但如果需要兼视频播放,还是需要好点的性能。

cpu最后是j3160,作为braswell平台仅次于奔腾j3700的产品,价格大概能便宜100,tdp少0.5w,牺牲了点睿频和图形性能,不过无关紧要。最后这个14nm制程的处理器tdp才6w,甚至和高端手机处理器在一个水平。高通的810要哭晕在厕所。一般手机处理器标称的功耗是类似intel的sdp——场景功耗概念,其实满载运行的话远比标称大,而TDP是所谓的热设计功耗,相当于处理器能产生的最大热量。所以j3160平时状况下运行,cpu占用不高,功耗就更低了。

选braswell平台做nas其实并不算完美,个人看来最大有两个缺点:braswell平台自身只支持两个sata口,不支持ECC校验。而组NAS的话sata口多才好,ECC内存对文件系统稳定也有意义。另外比上一代J1900平台贵了一两百。但是买新不买旧,性能和功耗的提升实实在在。

这种处理器都是嵌入在主板上,买主板送cpu。主板选的是华擎的一款j3160-itx,在马云家买时需500大洋

这款最大好处是板载芯片又扩充了两个sata口,总共有4个sata口,缓解了j3160本身只支持2个sata的尴尬。散热器尺寸也大一些。从下图看到,由于平台功耗低的特点,被动散热就可以满足需求,省掉了cpu风扇,也为机箱空出点空间。这个主板还有一个不好的地方是没有板载的像msata这类接固态硬盘接口,导致想接固态硬盘要占掉一个sata口。但不管怎样,目前j3160应该也没有更好的主板选了。

说完cpu说内存,狗东上一条低压DDR3金士顿8G。因为后面会提到用zfs组软raid,zfs最小需要内存4G,保险起见用8G好了,代价就是预算又多了1百多。另外注意虽然大部分这种低功耗主板号称同时支持标压和低压内存,但低压内存的兼容性好像好一些。

 

 

然后是系统盘。可能有人说nas不是要配硬盘吗,直接装在存储的硬盘上好了。确实系统的话是可以装在存储硬盘上,但那样管理起来很麻烦。如果存储做成raid,然后raid阵列挂了的话,重建起来可能就比系统在单独硬盘上麻烦。而且机械硬盘随机读写差,放系统性能也捉急。所以最好最好单独弄个固态硬盘装系统。想省钱的话也可以用u盘,但是U盘即使读性能过的去,写性能也不行,连续读写性能还不如机械硬盘。U盘可擦写次数可能也比固态硬盘低
最后我选了一个32G金士顿垃圾ssd,最重要省钱,其他够用就好。因为nas的系统打算用ubuntu,原因后面解释,32G是太足够做系统盘了,甚至16G都够了。

(去马云家盗图)

买回来跑个分,接在usb3.0的移动硬盘盒子上跑。可以看到跑分确实垃圾,某宝上的85块钱一个,反正这种价钱也不要期望有多好性能了。但好歹比机械硬盘强,特别是随机读写能力,真是数量级的差距。另外可能有人担心这种低价盘坏了怎么办。说到底是拿来装系统,不是存数据,坏了就坏了,只是买个新的重装系统就好,不用太在意稳定性。


机箱的选择其实很纠结,一方面希望体积小好放,另一方面希望内部空间足够大,特别是能塞很多的硬盘进去。后来发现一个神器,立人的L04硬盘支架。可以把 多个硬盘这样叠起来。支架不单可以给立人的机箱用,只要机箱里面空间够,其实可以塞硬盘很多进去。就是堆太高可能对强度有影响。这样就可以选用普通itx 机箱而不必买专门的nas机箱,价格能便宜很多。但专门nas机箱一般内部空间还是设计的更紧凑,能在更小体积下塞更多移动硬盘。

 机箱屌丝伯c2,空间比v2大,但散热设计并不好。

 
当时打的如意算盘是把电源位置的atx标准电源换成小电源,空出空间就可以让底部开始安装的硬盘一直往上生长了。这样下来,用c2机箱装4,5个3.5寸硬盘都不成问题呀。

但后来实际电源选择上还是犯了错误。因为太追求无扇了,上淘宝买了一个小型的atx迷你电源。需199大洋

(AC-ATX-120迷你无扇电源)
这电源老实说做工还挺扎实的,里面那些电容啥的也够堆料的。问题是总长度有16厘米,比标准itx14厘米长了。而c2恰好电源那有个挡板,所以无法安装 在原来的位置了。没办法,只好在机箱顶部打孔,将其挂在机箱顶板了,好在这电源也不重。屌丝伯用的铝合金也很软,打孔也不算太难。原来机箱电源的位置上某宝买个atx电源挡板盖上,又花了40大洋 。



这电源还有个问题是功率偏小,峰值总功率才120w,12v输出才60w。硬盘多的话负载可能就不行了。甚至现在就接三个硬盘的情况,硬盘开机瞬时功率就有可能超了。毕竟是没有风扇的小电源。如果各位壕想追求无扇这么配的话,建议还是选个功率大点的DC-ITX电源,外面接个笔记本变压器。DC-ITX电源体积也更小了,在机箱里面更好布置。缺点就钱花的多,DC- ITX电源+笔记本变压器都好几百了,而且都是寨牌。

最后就是硬盘了。我的套路就是哪个单位容量价格最便宜选哪个。最后是希捷的5t 5900转仓库盘,一个900不到,买了两个。另外自己原来有个希捷7200转3T也一起拆过来装上。性能和可靠性不足靠raid补了。查序列号发现倒是联强货,但保修才到17年,说好两年保修呢。我顶你个肺,这奸商 。


安装好主板及挂上电源的情况。中间的横背板上挂上2.5的32G固态和原来3.5寸3T硬盘。原来的电源只有一个sata电源接口,买了几根大D口一拖二的电源线,扩出来了四个sata电源口,好在这些10来块钱搞定。组装好之后顺利开机成功。


可以看到机箱里面放两层支架是没问题的,只要你线走的好。通过这样两组支架,最多可以放到4-5块硬盘,加上背板上一块,这款机箱里面塞5个硬盘是可能的。。但是走线可能比较麻烦,也需要扩展卡在mini-pcie插槽再扩出两个口,PCI-E口的话是被挡住了,不用去想了。这种小机箱,本人手又残,走线真是噩梦啊。
这套下来单硬盘就花了1800,其他才1300左右,总共3100这样。单说机器价格和群晖双盘位DS215差不多,性能好很多。硬盘的价格还是真tm贵,打倒万恶的传统硬盘奸商! 


三、系统篇

可能对于使用方便入门简单来说,群晖或者配的黑群晖对很多群众是很好的选择。
但是对于有一定linux基础的用户来说,我觉得装个linux发行版无疑是个更好的选择。nas需求的功能如远程下载,网络共享等都可以通过对应如 transmission,samba等软件实现。实际上群晖也可看作一个定制的linux。而且自己折腾linux扩展性,可玩性都好不少。

所以以下内容适合有一定linux基础的朋友,我自己其实技术也一般,不会的就直接google搜了
首先是为什么选择ubuntu这个发行版。其实个人并太喜欢ubuntu,以前经历是常常遇见一些莫名的小问题,社区也不太好,过去折腾gentoo多一些。
但是这次ubuntu 16.04服务器版,首次官方将zfs包括在内核了,这样就不用自己折腾配置zfs这个文件系统的支持了。而且刚好碰见三年一度的长期支持版。可能其他发 行版要支持zfs起来也比较方便,只是年纪大了懒得折腾。再说j3160这种鶸性能也不适合gentoo这类要编译源码的发行版。

什么是zfs文件系统,简单一句话就是这个文件系统可能是目前最先进的,具体比如说可以看这个链接

zfs可以很方便实现各种软raid配置,甚至支持raid阵列在线重建等功能。

这里我利用zfs简单实现了将两块硬盘做成raid1,其实就一条命令:zpool create mypool mirror /dev/sdb /dev/sdc
性能实测也还过的去,用dd命令看能有150M+以上的写速度,考虑到我用的是两个弱鸡存储盘其实也不错了。这种软raid不用单独raid卡,也不用主板的支持,可以说相当的方便。
对于比较担心一块硬盘挂掉丢数据,可以用raid1,但这样可用容量就只有一半了。对人品很有自信可以用raid0,但这种只要两块当中一块挂了那数据就全挂了。或者尝试raid5,介意中间状态。
不管怎样,这些不同raid的配置用zfs都是很容易实现的。而且zfs本身带数据校验,出问题的几率反而比硬raid可能还更小。zfs组出来的raid5也可避免write hole问题
但是最好内存还是要ecc,zfs也严重依赖内存做缓存,所以内存也要大点。最小需求是4G,经验规则是1T的硬盘容量对应1G的内存。。。但实际上缓存也可以按5秒读写设置,比如整个阵列500M/s的最大读或写,缓存最低可设定为500*5=2500 M。
所以真是吃内存的大户,不愧是为服务器设计的文件系统。

组好后没多久实际体验了一次zfs的raid阵列在线重建。因为后来折腾时把一块5t硬盘接在主板上口和3t硬盘混了,导致系统上对应的设备文件名变化。原来是/dev/sdc变成了/dev/sdd,而当时建阵列时是按照设备文件名建的。所以另外一块硬盘就掉线了。这种情况下阵列还是在工作的,只是成为单硬盘degrade状态。我在转移数据时没有发现。等到后来发现时数据都拷过去几百G,两块硬盘上的数据都不一致了。随即重新配置阵列,把设备号改过来,此时阵列就在自动重建了。而同时也能对阵列继续进行数据操作,继续拷贝数据,并不影响重建,就如同还在正常工作一样。

折腾完后跑个分,用的是UnixBench,毕竟装的是linux,windows下普遍的那些跑分软件是木有滴。反正我知道结果大概也多少人能看懂 。

------------------------------------------------------------------------
Benchmark Run: Mon Aug 08 2016 22:30:38 - 22:58:35
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       12134254.9 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1964.3 MWIPS (10.1 s, 7 samples)
Execl Throughput                                924.6 lps   (29.5 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        390102.5 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          112852.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        819176.8 KBps  (30.0 s, 2 samples)
Pipe Throughput                              900138.5 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  53472.1 lps   (10.0 s, 7 samples)
Process Creation                               1831.5 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   3505.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   1289.1 lpm   (60.0 s, 2 samples)
System Call Overhead                        1603508.8 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   12134254.9   1039.8
Double-Precision Whetstone                       55.0       1964.3    357.2
Execl Throughput                                 43.0        924.6    215.0
File Copy 1024 bufsize 2000 maxblocks          3960.0     390102.5    985.1
File Copy 256 bufsize 500 maxblocks            1655.0     112852.9    681.9
File Copy 4096 bufsize 8000 maxblocks          5800.0     819176.8   1412.4
Pipe Throughput                               12440.0     900138.5    723.6
Pipe-based Context Switching                   4000.0      53472.1    133.7
Process Creation                                126.0       1831.5    145.4
Shell Scripts (1 concurrent)                     42.4       3505.5    826.8
Shell Scripts (8 concurrent)                      6.0       1289.1   2148.5
System Call Overhead                          15000.0    1603508.8   1069.0
                                                                   ========
System Benchmarks Index Score                                         596.3

------------------------------------------------------------------------
Benchmark Run: Mon Aug 08 2016 22:58:35 - 23:26:34
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       48517034.7 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     7853.5 MWIPS (10.1 s, 7 samples)
Execl Throughput                               5003.0 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        418688.0 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          125715.4 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       1015028.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                             3602730.8 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 419679.0 lps   (10.0 s, 7 samples)
Process Creation                              17943.8 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  11184.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   1455.2 lpm   (60.1 s, 2 samples)
System Call Overhead                        4594957.5 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   48517034.7   4157.4
Double-Precision Whetstone                       55.0       7853.5   1427.9
Execl Throughput                                 43.0       5003.0   1163.5
File Copy 1024 bufsize 2000 maxblocks          3960.0     418688.0   1057.3
File Copy 256 bufsize 500 maxblocks            1655.0     125715.4    759.6
File Copy 4096 bufsize 8000 maxblocks          5800.0    1015028.9   1750.0
Pipe Throughput                               12440.0    3602730.8   2896.1
Pipe-based Context Switching                   4000.0     419679.0   1049.2
Process Creation                                126.0      17943.8   1424.1
Shell Scripts (1 concurrent)                     42.4      11184.5   2637.8
Shell Scripts (8 concurrent)                      6.0       1455.2   2425.4
System Call Overhead                          15000.0    4594957.5   3063.3
                                                                   ========
System Benchmarks Index Score                                        1749.7

单核总分 596.3,4核 1749.7。单核跑分大概处于网上低价虚拟主机水平。毕竟低功耗平台不能要求太多了。对比双核赛扬1037u,单核只有它的一半多,依靠核心多数四核成绩总算超过双核。好处相比赛扬1037u不用风扇了。跑分过程中单核时温度最高在50多,4核全开也不到70度,睿频可以到2.2G大概。依靠被动散热能有这水平实在难能可贵。


四、最后一点散热温度的问题

前面说得c2这个机箱散热设计很成问题,原来底部可以装12cm风扇也放了硬盘,整机直接是无扇系统。

当初的一大追求是做到无扇静音。但实际运行起来发现3.5寸硬盘转动声音就比较感人了,可能是因为没有风扇噪音,显得尤为突出。而温度更是超过cpu,摸起来分外烫手。电源处发热也不容小视,甚至比硬盘还高。最后cpu反倒可能是温度最低的地方了 

难道就此失败了吗,当然我是绝不甘心于此的。在抛弃了水冷方案后,仔细分析nas运行时情况,其实大部分时间都是不需要硬盘在运转的,挂的bt因为是校园网ipv6也能很快下完。那么就设定硬盘休眠好了

linux下硬盘休眠通过hdparm的-B参数设定硬盘的advanced power managemant值。0-127之间是允许休眠,128-254之间是不休眠,值越大相对功耗就越大,但性能高。原来的相当于设定在254,所以硬盘一直在全速转,导致温度长期居高不下。有鉴于此,将此值设定为127,为了重启后有效,还需修改/etc/hdparm.conf配置文件。

最后结果是硬盘大部分时间都是处于休眠状态,偶尔用时会起来运转。温度也在40度左右,电源处也不烫了。唯一要说的话就是增加了磁头重启次数,所谓的Load_Cycle_Count。大概两-三天会增加100次,考虑到磁头重启次数寿命一般在60W次,大概在硬盘坏之前也不会碰到这个用完了。

返回沙发首页  
沙发管家微信
扫描关注沙发管家微信 QQ群: 沙发网官方群 微博:

资讯评论

亲,你需要登录后才能进行评论喔!

还没有评论,快来抢沙发吧!

提示

相关文章推荐

热门设备安装方法 查看更多>>

最新设备

智能电视 / 盒子评测

安装指南

应用

热门专题