【每周精选】谈谈HP Gen8做NAS的一些技术问题-RAID

谈谈HP Gen8 做NAS的一些技术问题-RAID

【每周精选】谈谈HP Gen8做NAS的一些技术问题-RAID

先上一张一年前的Gen8开箱图

前言
随着现在人们生活水平的不断提高,很多原来不敢想象的事情都成为了现实。记得上世纪90年代到一位初中毕业就去搞网站挣钱不再上学的技术宅大哥家里玩,他跟我感慨现在我这个SCSI接口的2倍速CD刻录机,10年前中科院研究所也想不到能在个人家里随便刻动漫音乐玩。而现在蓝光刻录机也就几百,硬盘单个的都10T容量了,服务器这种东西也开始家用化。像Gen8这种颜值和性价比都相当高的东西更是广受大家欢迎。
但是,服务器毕竟是服务器,其中包含了无数的人类智慧结晶,也就是技术,而技术并不总是非常亲切的,曾经流行一时的所谓傻瓜相机,就是因为当年摄影是一个非常专业的事情,一般人别说想照出好照片,不曝光过度或者曝光不足就是一个不容易的事情。底片又不便宜,哪能随便照一堆去练习呢。就算土豪随便照,照完了还要洗出来才能知道结果。
言归正传,我们现在不管是用手机还是数码相机,还是摄像机,产生的大量数字信息需要存储,看病医院给了一堆光盘什么检查结果之类需要长期保存,电影、音乐、各种数字化信息爆发增长,家里只有一个电脑和几个移动硬盘已经远不能满足我们对于数字化信息的存储需求。那么NAS这种以前主要是办公环境多人共享文件用的设备也就开始民用化。
这里涉及的技术太多,本篇先不一一介绍了,主要就一个往往只有专业人士才真正明白的存储技术---RAID技术做一些普及性的介绍。因为有人说百度百科之类的地方讲的太专业,一堆术语看不懂。专业人士就不用继续看下去了,我从事相关专业有几年了,也考了一些技术方面的专业认证,勉强算是一个数据中心运维、云计算和系统架构方面的专业人士。尽量用大家都能明白的语言比较介绍一下RAID到底是什么,各种RAID有什么优劣,各种家庭使用场景下用哪种RAID解决方案比较好。


第一节 成品NAS和自制NAS(包括用Gen8服务器自制)的区别


成品NAS 张大妈这里的介绍非常多,原创区有大量的介绍。所谓NAS,其实就是一台小服务器,可以拆解成几个独立的逻辑结构,存储部分、控制部分、通信部分等,其中存储部分有硬盘若干、硬盘控制器一枚,控制部分有CPU、内存、操作系统,通信部分有网卡、无线等,这和一台PC其实没啥区别,只是集成度更高,比较的话其实和手机更像。另外这里面的操作系统一般是封闭的,不让我们自己去修改。这样的好处是我们不用关心里面到底用了多少种技术,开启了多少种软件进程,直接按照说明书使用它提供给我们的功能就好了。通过浏览器或者各种客户端图形化操作简单明了。坏处是一旦出了问题,我们除了求助客服之外很难自己去解决。
系统又稳定,功能又多的要数群晖,这也是为什么那么多黑群的主要原因。性能更好的freenas功能不亲民,没有手机客户端;功能更全的unix+nappit要自己配置一大堆东西,在linux下面改过各种配置文件的同志都知道这系统有多反人类。如果不是对把一切都掌控在自己手里有非常强烈的需求,实在是没有必要花太多精力在这上面。
现在我们所使用的各种电子设备,里面都是有一个软件的操作系统的,大体分为三类:

一类是基于Unix架构演变的,例如freeBSD,松下等离子电视用的就是这种系统。这种系统小巧,资源占用少,适合功能比较单一的电子设备。部分NAS也使用这种系统。自制NAS如果要用ZFS实现非硬件RAID的多盘高性能存储,也要用到这种系统,这个在后面会详细讲解。

二是Linux的各种分支,包括Android,因为免费而被大量的厂商选用。很多成品NAS里面使用的是基于Linux的一些定制版系统。

三是完全自主开发的系统,这类系统往往用在功能更简单的产品,例如空调、冰箱、洗衣机、非智能手机等等,现在的嵌入式系统大多指代这些,因为现在什么都要跟智能沾边,这种系统已经越来越少了。

既然成品NAS从结构上来说跟PC没什么区别,那么我们自己装一台PC、或者用一个笔记本电脑、或者旧手机、树莓派、服务器改造一下当NAS用,是完全没有问题的。区别就在于自己改的想要什么功能都只能自己动手配,架构也要自己设计,成本往往也要比成品NAS更高。

虽然理论上是这样,但是实际上因为现在服务器也不是什么稀罕东西了,只要不是机架式那种完全不考虑噪音、耗电和辐射的产品,价格未必比成品NAS贵,二手的就更便宜了。
下面对比一下Gen8和群晖的配置

【每周精选】谈谈HP Gen8做NAS的一些技术问题-RAID

可以看出主要的几个硬件参数Gen8是要高于群晖DS416的。价格却比群晖便宜1000块(京东)。那么我们买个Gen8直接黑群,性价比就要高于群晖了。是这样吗?其实未必。用树莓派不是成本更低?为什么不用呢,因为功能不同,对比价格必须在实现相同功能的前提下才有意义。试想如果Gen8上面要装一个自己研发的系统,那价格还能跟群晖相比具有优势么?用免费的系统,能实现群晖相同的功能么?至于另外一个区别,就是RAID。

这些结构跟PC相差无几,系统和硬件架构又不告诉我们的成品NAS只要不是1盘位的,一般都会宣称支持RAID。虽然RAID不是什么新技术,但是此RAID和彼RAID还是大大不同的。

第二节 RAID各种类型的区别和实现方法

先说一下RAID的类型和区别,细节百度就有,大家都知道的就是RAID分为0、1、5、6、1E几种基本形式,加上两种形式组合而成的10、50、60,这些都有相关的介绍说明,我用简单的语言描述,就是RAID0是硬盘组个团,读、写、存什么事情大家一起干,谁出问题团队就完蛋。RAID1就是两个硬盘干同样的事,一个没弄好还有另外一个。
RAID5比较复杂,组成RAID5根据控制器能够支持的不同,从最少3块硬盘到最多12块硬盘,甚至更多的都有。但是不管组多少个,都只能坏一个。RAID6是在RAID5的基础上把可以坏的数量增加了一个,可以坏2个。我刚知道这种技术时只想到又可以有RAID0的快速读写、又可以有RAID1的备份、可用空间还比RAID1的一半要多,这么好干嘛还要有RAID0和1这些呢,全用RAID5不就好了。结果实际用起来发现根本不是那么回事。
我们已知RAID5的可用容量等于RAID内最小的那个硬盘的容量乘以硬盘数-1,RAID6就是-2。实际存数据时,并不是只用到总数-1个硬盘,以常见的4个盘为例,每个硬盘全部容量都是要使用的,只是其中3/4用于存储数据,1/4用于存储其他三块盘产生的校验码数据。当出现一个盘坏掉的时候,剩下三块盘上面存储的这些校验数据就可以正好还原出坏掉那块上面的数据。如果再坏一个,剩下的2/4数据就全部完蛋了,想要恢复就要用一些直接读硬盘磁道的专门软件和设备才能恢复出一些文件碎片(没有完整的文件,因为每个文件都是切碎了分散在各个盘上)。这就出现了一个问题,校验码可不会自动产生,需要在写入的时候先把数据存在缓存里面,通过CPU或者其他运算芯片去计算,算好了之后再写入到硬盘上。这个过程分好几个步骤,每个步骤又涉及很多技术,比如缓存中的数据,一旦在写入的过程中发生断电怎么办?家里可不像机房有双路电源和UPS,那么就要有一块电池,使发生意外断电时缓存中的数据不丢失,软件RAID通过内存来当缓存用,那么同样面临意外断电的问题。校验码计算量不小,如果靠CPU那么CPU的性能、功耗、发热都是要考虑的。或者直接有个专门的芯片负责干这事,效率就会大大提高,性能也会同样提升。我测试过多种硬盘在没有硬件RAID卡加持的情况下的RAID5性能,大部分的连续写入都只有不到30MB/s,这对于千兆的NAS网络传输是个不小的瓶颈。而且缓存很小或者干脆没有的情况下,校验码的计算和硬盘频繁读写对硬盘的寿命也有不小的压力。不是企业级硬盘的应用场景会使硬盘的寿命很快耗尽。企业级硬盘的噪音和发热都不容忽视。

总之,RAID5是非常好的技术,在很多应用场景下都有很好的效果,但并不适用所有的情况。大部分情况下在NAS中很少追求极致的高性能,所以RAID0的应用场景不多,只有2个盘做RAID0也没什么意思。可以使用JBOD(两个硬盘分成一个区用,数据各存各的)、RAID1(备份)作为大部分情况下的选择。

第三节 各种NAS的RAID功能实现方法和区别

前面说明了各种RAID是怎么实现的,有什么区别,下面谈谈在NAS里面是如何实现类似的功能的。
第一种是本身是做硬盘盒和各种存储相关产品的,用一些廉价的硬件RAID芯片,集成一个NAS操作系统。如果不带NAS操作系统的话就是个支持RAID的硬盘盒了。这类芯片往往都支持RAID0、1、JBOD、单盘等,我们可以自由选用需要的方式,因为RAID0带来的性能提升和可能的风险不成比例(商业应用场景下往往使用10、50、60,而不是单纯用RAID0)所以很少有使用的,需要备份用RAID1,不需要的用单盘或JBOD。这种情况下如果厂家宣称能够支持RAID5,要么很贵要么很慢。
第二种是通过软件实现RAID功能,因为RAID卡不过就是一个带芯片(CPU)、缓存(内存)、固件(操作系统)的硬件设备,它能干的事情我们的PC都能干。所以完全可以通过软件来实现相同的功能。Windows里面叫动态磁盘,Win8和Win10里面更进一步支持了存储池,Linux里面使用的开源的MDADM软件,Unix里面用ZFS文件系统的RAID-Z等等不一而足。但是这些方法都有一个共性就是性能不足。实际性能严重依赖于系统的硬件配置。大部分情况下即使硬件很强(E3 CPU+大内存)RAID5硬盘组的读写参数也很惨(RAIDZ特殊,除外)。不过RAID0、1因为不涉及大量计算和缓存,性能和硬件RAID卡相差不大,是最为广泛使用的方式。几乎全部的2盘位NAS和大部分家用成品4盘位NAS采用这种方案。
第三种是我们自己配置服务器或者PC DIY成NAS,这种情况下的可玩余地很大,也有多种架构方案可选。可以是软RAID、家用主板通过固件支持的半软RAID和购入RAID卡实现的硬件RAID。先不讨论使用硬件RAID卡的情况,专门说一下HP Gen8的特殊情况,Gen8实际上没有硬件RAID卡,有64M缓存但是不能用,没有校验码芯片,所以在硬件的角度完全不支持RAID5,RAID0和1也是通过特殊方法实现的,那就是利用Intel的C204南桥支持的半软件RAID,由HP修改了主板BIOS固件,模拟成了HP smartarray B120i RAID控制器。这样做的好处就是,如果直接使用Intel C204的RAID,是不能支持Linux和ESXi(实际上还是linux)的,配置的各种RAID到系统里面都会还原成单盘。因为Linux系统底层不识别主板层面的模拟RAID,会直接去访问硬盘。而通过HP启动工具光盘安装系统时,是可以识别修改后的B120i RAID控制器的。这个好处很明显,在不用RAID卡的情况下实现了RAID,便宜又好用。如果我们在系统里面做软RAID,那么RAID的状态监控就只能靠自己配置相关软件了,没有iLO方便。
除了Gen8这种特殊的之外,可以自己购买硬件RAID卡实现RAID5,但是一块有缓存、有电池、支持RAID5的卡可不便宜,新的有售后的都要1500-2000,二手的也要好几百,可靠性还不好保证。这种情况一般都是有很高需求的组有大量硬盘的存储设备使用。不推荐只有4块硬盘的情况下选用。当然壕可以略过这段。
为什么不推荐使用Windows或者Linux自带的软RAID功能来实现RAID5呢?主要有几个方面,第一是RAID对硬盘的响应速度有很高要求,在配置了RAID的情况下系统会每隔几秒钟对所有硬盘做一次检测,发现有掉队的就把它踢出RAID组。几块新硬盘组起的时候前期运行很正常,过一段时间就会出现频繁的掉盘,某块盘因为不能及时响应检测请求而被RAID控制部分认为是“坏了”,而踢出RAID组,RAID降级,告警,之后就需要重新同步。如果仅仅是这样还好说,怕的是几块盘都是一起买的,到了要坏的时候,一个坏了其他几个也差不多了。即使没坏,存在一些个别坏道的情况也是很平常的。专业的RAID控制器每隔一段时间就会进行全盘数据完整性检查,及时发现错误并进行修复,修复不了就立刻告警,企业级硬盘上面也有专门应对这种情况的固件设计。这些在家用盘上面都是没有的。例如西数的NAS盘就是在家用盘的基础上增加了一个“不死”功能,每当控制器找他的时候先答应一声,再去找数据,避免被控制器认为是没有应答而踢掉。很难说这种做法是好是坏,需要个人根据自己对数据安全的要求和预算来定。贵的硬盘是有他贵的道理的。第二是硬盘平时用着都好好的,因为只有部分人会对硬盘做定期全盘备份,坏道这种东西就是平时不用时不知道,坏一块盘需要同步的时候就冒出来,这时就是灾难了,已经踢掉一块,同步时又遇到坏道,全部数据完蛋,OVER。而企业级应用有很多专利技术专门应对此类情况,当然也不排除现在的软件越做越优秀,在稳定性方面离硬件越来越近,但即使软件的稳定性不是问题,性能方面也无法和硬件相比。第三就是性能问题,现在的硬盘越来越大,单盘2T已经是标配,4T也不是什么稀罕事,8T 12T也有人在用了。取个中间值就算3T把,4块3T容量的硬盘,做软件RAID5,读取100M(千兆网络)写入50M(RAID5性能所限),坏一块盘需要同步的数据有5-8个T,如果按极端一点的情况来算,仅作一次数据备份就要数个小时,再同步个2-3天,这期间不能发生一点问题,只要有一点问题就是全挂,或者重头再来,一般人应该都受不了。


第四节 Gen8的推荐系统架构方案

Gen8是服务器,所以属于DIY NAS的范畴。可以自己增配一些硬件来实现不同的功能需求,这里从低到高列出几种:
1、标配最低配,2G内存,赛扬G1610T,群晖或者win
这种情况下可选余地不多,最简单的就是仅作NAS使用,直接U盘或TF卡启动装群晖,具体方法张大妈这里有其他朋友写了,我就不再重复了。这样的缺点是不能兼顾HTPC的需求,不过个人认为服务器那蜗牛一样的启动速度,一般都是很少关机的,作为HTPC那硬盘卡卡的噪音和风扇的声音导致只能把这货放在客厅。显卡的性能也很难满足4K或以上高清的播放。加装显卡在下面讨论,装Win系统做HTPC只能说很勉强满足功能需求,实用度还不如NAS加高清盒子或者智能电视。其他装linux之类估计能这么折腾的一般都不会仅满足于最低配吧。
2、扩内存,装ESXi或者Linux
内存可以从2G-16G自由选择,一般最大到16G,因为官方说明文档写了支持最大8G单条,16G是否支持没说,欢迎有试过的来讲讲能不能支持。ESXi是神器,但是不幸的是用起来并不亲切。很多功能都要了解一堆知识和各种限制条件才行,最基本的配置必须通过客户端这点就很麻烦。装vCenter之类家里实在是没有折腾的必要。不过装了ESXi,就可以在群晖的基础上再做点其他的事情,比如软路由、软交换之类。这些说远了。但是这样做的限制也很多,最主要的一点就是CPU不支持VT-d,不能硬件直通导致装了ESXi就无法好好的使用RAID和各种硬件,一层系统之上再套一层系统一旦出了问题非常麻烦。
3、既然都扩了内存,干脆也换了CPU吧
换CPU有多种选择,网上有人做了各种测试,限制条件主要是Gen8的散热器是非标准的,几个稀疏的铝片不带风扇和用于1U服务器的150w小电源让人看着非常捉急,不太敢上性能强劲的志强E3-1230v2,至于E3-1265L价格较贵,最省钱的办法就是上E3-1220L,双核4线程,再把G1610T出掉,几百块可以搞定,虽然性能提升不多,但是支持VT-d就是一个非常重要的变化。支持了VT-d,我们就可以U盘装ESXi,4块仓库盘做两个RAID1,然后在ESXi里面RDM给群晖,另外加一个SSD用来装虚拟机操作系统。这样即使虚机坏掉了,重新装一个就是分分钟的事情,装好虚机把RDM的RAID卷重新配上立刻满血复活。至于RAID安全由HP的RAID控制器来保障。如果有问题Gen8正面下面那个蓝色灯条会变成红色闪烁(别问我是怎么知道的)。还不放心可以吧USB3直通进去,然后插上一个移动硬盘,在群晖里面配置部分重要数据的定期备份策略。目前我使用的就是这样一个方案。开了软路由、常用的Linux虚机、一台Win10(ipad上通过微软远程桌面APP登陆使用)、群晖虚机(NAS和VPN)。还可以群晖通过iSCSI功能在反过来映射硬盘给ESXi用来装虚机使用。这些虚机之间的数据通信都是在虚拟交换机下面进行,速度还是比较满意的。
4、加装RAID控制器或显卡二选一
因为Gen8只有一个PCIe扩展,装了RAID控制器就不能装显卡了,显卡只能用半高的刀卡,可以满足HTPC和部分游戏的需求,RAID控制器如果不用外接12盘阵列的情况下其实个人认为没什么必要。4个盘做了RAID5也不会有什么质变,投入产出完全不成正比。加装显卡之后还是有两个选择,可以把显卡直通给win虚机,继续满足NAS和各种多功能使用,也可以直接装Win当作PC使用。

Gen8比自己攒的NAS有什么好处呢?下面上几张图:

【每周精选】谈谈HP Gen8做NAS的一些技术问题-RAID

【每周精选】谈谈HP Gen8做NAS的一些技术问题-RAID

【每周精选】谈谈HP Gen8做NAS的一些技术问题-RAID

通过手机客户端随时访问的温度和阵列状态信息就是选择Gen8的理由之一。

张大妈这里藏龙卧虎,希望在评论区和大家多交流,互相学习。很多涉及技术细节没有展开了说,强烈欢迎拍砖,也希望比我更专业的大牛们多来指导。
谢谢!

推荐关注:
每周精选
标签:每周精选 +关注
服务器
分类:服务器 +关注

提示

鼠标移到标签上方,

尝试关注标签~

评论182

发表评论请 登录
  • 最新
  • 最热
评论举报

请选择举报理由

1189 182

关注数量超出限制,请先删除部分内容再尝试

关注数量超出限制,
请先删除部分内容再尝试

登录
注册
用户名/邮箱
密码
验证码
看不清?点击更换
看不清?点击更换 忘记密码?

已收藏
去我的收藏夹 >

已取消收藏
去我的收藏夹 >

小提示