随着手头的钱愈来愈多,不少人开始蠢蠢欲动想要构建我的或者家庭级别的磁盘阵列用来扩展PC存储,或者说想要在家里安装一个私人的本地NAS,或者有不可名状的文件须要落地家庭IDC环境,又或者单纯是个土豪,须要在大得不得了的地下室作一个随时能够点播的家庭影院。这个时候,海量的存储需求就来了,可是每每我的或者家庭对于如何设置合理的、高可用的存储架构没有概念,致使每每用的是裸盘阵列。结果就是一旦挂了就全挂了,哪怕运气好不挂,随着时间的流逝,最终总有一点会出现磁盘问题,那个时候集体更换迁移又是一个让人想要撞墙的事情。算法
因此笔者在这篇短文里,会用最短的篇幅给读者介绍,来自于企业环境而且已经应用许久的RAID卡磁盘阵列技术!缓存
首先要明确一点,那就是多数的PC主板是不支持RAID阵列的,可是不少高端的主板会有原生支持RAID技术,具体的状况须要查询主板提供商。而不少服务器级别主板,相似于X399这种,每每是支持的,甚至有些不须要额外购置raid卡也能进行raid阵列管理。安全
可是从现实的角度来讲,不管磁盘支持不支持raid卡设置,咱们都应该买一块PCI接口的真正的RAID卡来进行磁盘阵列管理。由于主板即使支持RAID,基本上也都是软件层面的软raid,对于磁盘的寿命和性能有不小的折扣损失。何况随着多显卡并火渐渐退出主流市场,再也不被黄老板等支持,目前主流主板的PCI接口必定是有多的,同时raid卡便宜且自带断电保护电池,可谓是性价比极高的硬件了。服务器
历史上RAID阵列的种类很是多,总计以下:架构
可是因为成本和性能的优劣缘由,目前单种类RAID阵列主要就剩下RAID0,RAID1,RAID5,以及比较有意思的RAID6。笔者也会着重讲解一下这几种阵列的原理和优劣。分布式
在RAID5里面用来校验的磁盘机制,主要使用了异或计算,从而可以容忍任意一块磁盘的损毁状况,而且在换盘后经过rebuild来对新盘进行重构。可是在RAID6中,由于须要容忍两块磁盘损毁,第二块奇偶校验磁盘的算法就有所不一样,比较复杂了。工具
若是出现一块磁盘损坏的状况,就能够和RAID5同样处理,Rebuild完事。 那么关键来了,若是两块磁盘挂了的话,就须要用到全新的技术了。 咱们首先引入一个的伽罗瓦域(有限域),对于一个k次不可约不等式
,
。同时一块数据能够记录成
,其中
是0或者1,对应伽罗瓦域里面的元素
,令
对应的磁盘条带里面的数据,用这个方法编码成域里面的元素。若是
是域的某一个生成元,而且
表示域的加法(能够当作异或运算),并列表示域的乘法,那么
和
能够表示成:
因此,若是两块磁盘失效的时候,就须要经过P和Q来从新把数据算出来,这个过程使用了域论,相对比较复杂。咱们经过例子来讲明,假如在一个
块磁盘组成的磁盘阵列
里面,若是
和
(其中
),经过域算法咱们能够求出两个域A和B,其中
且
。 展开两式可得:
等式
的两端同时乘上
,加到上一个等式可得:
,从而能够求出
,而后再求出
。 这个过程里面对Q的计算很是耗费CPU,因此必定要上硬件RAID,由于RAID带有专用处理器专门干这个。oop
好了,如今咱们都知道各类磁盘RAID阵列的优劣和构建方式了。对于家庭和我的来讲我以为仍是RAID5最性价比高,可是若是你的磁盘阵列里磁盘数量大于8了,其实就能够考虑RAID6了。其余的RAID构成的话考虑到性价比,其实对我的用户不太合适。可是安全性和可用性需求极高的企业,除了hadoop用的分布式裸盘之外,其余最好仍是RAID10或者RAID1,甚至RAID60。性能
下面来讲说遇到故障:大数据
最后,公式部分来自维基,很通俗易懂,思路也很清晰,有空去看一下域论也挺好(不会去看的