RAID磁盘阵列介绍

随着手头的钱越来越多,很多人开始蠢蠢欲动想要构建个人或者家庭级别的磁盘阵列用来扩展PC存储,或者说想要在家里安装一个私人的本地NAS,或者有不可名状的文件需要落地家庭IDC环境,又或者单纯是个土豪,需要在大得不得了的地下室做一个随时可以点播的家庭影院。这个时候,海量的存储需求就来了,但是往往个人或者家庭对于如何设置合理的、高可用的存储架构没有概念,导致往往用的是裸盘阵列。结果就是一旦挂了就全挂了,哪怕运气好不挂,随着时间的流逝,最终总有一点会出现磁盘问题,那个时候集体更换迁移又是一个让人想要撞墙的事情。

所以笔者在这篇短文里,会用最短的篇幅给读者介绍,来自于企业环境并且已经应用许久的RAID卡磁盘阵列技术!

一、概念和支持

首先要明确一点,那就是多数的PC主板是不支持RAID阵列的,但是很多高端的主板会有原生支持RAID技术,具体的情况需要查询主板提供商。而很多服务器级别主板,类似于X399这种,往往是支持的,甚至有些不需要额外购置raid卡也能进行raid阵列管理。

但是从现实的角度来说,无论磁盘支持不支持raid卡设置,我们都应该买一块PCI接口的真正的RAID卡来进行磁盘阵列管理。因为主板即便支持RAID,基本上也都是软件层面的软raid,对于磁盘的寿命和性能有不小的折扣损失。况且随着多显卡并火渐渐退出主流市场,不再被黄老板等支持,目前主流主板的PCI接口一定是有多的,同时raid卡便宜且自带断电保护电池,可谓是性价比极高的硬件了。

二、RAID种类介绍和优劣

历史上RAID阵列的种类非常多,总计如下:

  • 单种类RAID阵列:RAID0, RAID1, RAID2, RAID3, RAID4, RAID5, RAID6
  • 混合型RAID阵列:RAID7, RAID10/01, RAID50, RAID53, RAID60

但是由于成本和性能的优劣原因,目前单种类RAID阵列主要就剩下RAID0,RAID1,RAID5,以及比较有意思的RAID6。笔者也会着重讲解一下这几种阵列的原理和优劣。

1、RAID0
RAID0 示意图
  • RAID0就是【挂裸盘】,非严格意义来说。RAID0就是一串磁盘阵列,没有全量备份,没有增量备份,也没有主从备份,什么都没有。但是确实是一种规范的RAID方式。
  • 性能来说都等通过单块磁盘的读写,坏了就坏了,数据没救。或者必须通过物理数据恢复。软件层面往往无力回天。
  • 主要应用于服务器单固态磁盘,且只有高读写需求,没有数据安全需求。以及在大数据环境下做分布式磁盘。
  • 最小磁盘需求量:
2、RAID1
RAID1 示意图
  • RAID1容易理解的来说,就是【无线备备备备份制】。无论你有多少块磁盘组成了阵列,每个磁盘都在备份同一个磁盘的内容、同步同一块盘的内容。
  • 最少磁盘需求量:
  • 读写速度:磁盘数量为n,单块磁盘读写速度为s,读写速度
  • 阵列容量计算:假如在一格RAID1阵列中,各个磁盘的容量分别为,那么这个阵列的存储大小是。低到你怀疑人生。
3、RAID5
RAID5 示意图
  • RAID5是目前【最为推荐】的一种磁盘阵列选择。主要原因是磁盘容量利用率高+磁盘损毁后可用性较高
  • 具体原理:RAID 5不是对存储的数据进行备份,而是把数据和相对应的[奇偶校验]信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。
  • 最小磁盘需求量:
  • 最大可用磁盘损毁数:
  • 有效磁盘容量:假如各个磁盘的容量分别为,那么这个阵列的存储大小是
  • 读写速度:在没有回写缓存的情况下,写入会比裸盘稍微慢一点。所以推荐上RAID卡。
4、神奇RAID6
  • 一般来说RAID6也是一种使用得比较多的磁盘阵列模式。适合对于数据安全和可用性有更高要求的用户
  • RAID6相比RAID5还增加了一块独立的奇偶校验磁盘。
  • 最小磁盘需求量:
  • 最大可用磁盘损毁数:
  • 有效磁盘容量:假如各个磁盘的容量分别为F1,F2,F3...Fn,那么这个阵列的存储大小是
  • 读写速度:RAID6的写入性能受到磁盘阵列的架构影响,会有非常大的存在区间,设置合理的话会有非常优异的速度。
  • 实现原理解释:

在RAID5里面用来校验的磁盘机制,主要使用了异或计算,从而能够容忍任意一块磁盘的损毁情况,并且在换盘后通过rebuild来对新盘进行重构。但是在RAID6中,因为需要容忍两块磁盘损毁,第二块奇偶校验磁盘的算法就有所不同,比较复杂了。

如果出现一块磁盘损坏的情况,就可以和RAID5一样处理,Rebuild完事。
那么关键来了,如果两块磁盘挂了的话,就需要用到全新的技术了。
我们首先引入一个的伽罗瓦域(有限域),对于一个k次不可约不等式 , 。同时一块数据可以记录成,其中是0或者1,对应伽罗瓦域里面的元素,令对应的磁盘条带里面的数据,用这个方法编码成域里面的元素。如果是域的某一个生成元,并且表示域的加法(可以看成异或运算),并列表示域的乘法,那么和可以表示成:


所以,如果两块磁盘失效的时候,就需要通过P和Q来重新把数据算出来,这个过程使用了域论,相对比较复杂。我们通过例子来说明,假如在一个块磁盘组成的磁盘阵列里面,如果和(其中),通过域算法我们可以求出两个域A和B,其中且。
展开两式可得:

B=\bigoplus_{\xi:\xi\neq i \ and \ \xi\neq j} g^\xi D_\xi =Q\oplus g^0 D_0\oplus g^1 D_1\oplus...g^{i-1} D_{i-1}\oplus g^{i+1}D_{i+1}\oplus...g^{j-1} D_{j-1}\oplus g^{j+1} D_{j+1}\oplus...g^{n-1} D_{n-2}\oplus g^{n-1}D_{n-1}
等式的两端同时乘上,加到上一个等式可得:,从而可以求出,然后再求出。
这个过程里面对Q的计算非常耗费CPU,所以一定要上硬件RAID,因为RAID带有专用处理器专门干这个。

5、融合磁盘阵列RAID10/01
RAID10 示意图

RAID01 示意图
  • RAID10是先镜射再分割数据,再将所有硬盘分为两组。RAID01正好相反。
  • RAID10单盘故障的时候依然可以正常使用,其他盘照旧。RAID01单盘故障的时候,同组所有盘都不工作了,是垃圾RAID策略。
  • 所以正常的厂商不支持RAID01。
6、RAID50/60
  • 顾名思义就是RAID5/RAID6和RAID0的技术组合,RAID50最高故障盘承受数量(任何一边不到2),RAID60最高故障承受数量(任何一边不到3)。
  • 读写性能非常高。

三、故障解决方案

好了,现在我们都知道各种磁盘RAID阵列的优劣和构建方式了。对于家庭和个人来说我觉得还是RAID5最性价比高,但是如果你的磁盘阵列里磁盘数量大于8了,其实就可以考虑RAID6了。其他的RAID构成的话考虑到性价比,其实对个人用户不太合适。但是安全性和可用性需求极高的企业,除了hadoop用的分布式裸盘以外,其他最好还是RAID10或者RAID1,甚至RAID60。

下面来说说遇到故障:

  • 首先是插拔一下,注意断电保护,不要粗暴对待机械磁盘。
  • 插拔解决不了的话直接打电话售后,正常的磁盘至少有三年以上维保,尽情换,想必在看完这篇以后你的家庭存储阵列应该是不怕一块盘的故障的。
  • 我没说怎么配置?好的,接下来又有东西可以写了。如果是服务器有很多厂商提供的工具,如果是个人的话在你安装好阵列卡以后应该也有对应的工具可以使用,有些是进系统的可视化软件,有些是BOIS设置,具体看情况。

最后,公式部分来自维基,很通俗易懂,思路也很清晰,有空去看一下域论也挺好(不会去看的

你可能感兴趣的:(RAID磁盘阵列介绍)