中国领先的IT技术网站
|
|

RAID磁盘阵列还有什么玩法?

硬件RAID可以在高速缓存中合并非连续写和校验操作,成为连续的写操作一次写入硬盘;而软件RAID则要确认每一次数据和校验写是否都写入到磁盘上去了,还要额外附加一些读操作。

作者:佚名来源:搜狐|2017-09-06 08:43

沙龙活动 | 去哪儿、陌陌、ThoughtWorks在自动化运维中的实践!10.28不见不散!


那么今天呢,我们就谈一谈什么是RAID,而RAID又该怎么用。

本篇小科普分为以下内容:

1、什么是RAID

2、RAID都有哪些类型(上)

a) RAID0

b)RAID1

c)RAID01/10

3、热备份与冷备份(Hot Spare / Cold Spare)

------以下是今天推送内容------

4、RAID都有哪些类型(下)

a)RAID5

b)RAID50

c) RAID6

5、软件RAID与硬件RAID

6、我该怎么用RAID

RAID都有哪些类型(下)

昨天给大家介绍的都是简单的RAID,即除了条带化存储(RAID0),就是镜像存储(RAID1),要么就是这两个搞搞在一起……今天呢,我们就来一些进阶的内容,也就是有着冗余容错算法支撑的RAID类型。下面就一起来看看吧!

RAID5(奇偶校验存储)

在谈RAID5之前,我们要先来讲一下什么是奇偶校验。而在讲奇偶校验之前呢,我们又要讲一下什么是“异或”操作

希望这个逻辑链条没有把大家弄糊涂哈……

在计算机中,用晶体管能实现的操作并不是人类世界中我们所认知的“加”“减”“乘”“除”,而是二进制的0和1的“交响”。那么“异或“操作呢,就是二进制世界中的一种操作。它的法则只有八个字:”相同为0,相异为1“。如下表:

这里的A与B值就代表了两个位,从中可以发现,A与B一样时,异或结果为0,A与B不一样时,异或结果就是1,而且知道异或结果和A与B中的任何一个数值,就可以反推出另一个数值。比如A为1,异或结果为1,那么B肯定为0,如果异或结果为0,那么B肯定为1。这就是异或编码与校验的基本原理。

知道了异或操作,我们就可以拿它来做点事情了。想一个问题,如果我想知道一个01串中有奇数还是偶数个1,可以怎么做?对的,就是用异或。将这个01串每一位异或,如果最终答案是1,那么这个01串中就有奇数个1;如果最终是0,则意味着有偶数个1。那么这个最终结果呢,就是奇偶校验的值。大家可以自己手动计算一下试试,碍于篇幅这里就不再做正确性证明了。

于是RAID5的算法描述如下:P = D1 xor D2 xor D3 xor … xor Dn(D1-Dn为数据,P为奇偶校验值,xor为异或运算)。因此,RAID5阵列需要n块硬盘存储数据(D1-Dn),再多一块盘来存储校验数据P,总计需要n+1块硬盘。

同样,当RAID5中任何一块硬盘坏掉,可以通过对剩余硬盘的数据做XOR异或操作来得知损坏硬盘中的数据。因此,RAID5具有坏掉一块硬盘的冗余容错能力。

总结一下呢,就是RAID5的空间利用率为(n-1)/n,容错率为1/n。由于XOR异或操作最少需要两个操作数,因此RAID5至少需要3个硬盘。在浪费一半存储容量来提供数据保护的RAID10方案面前,RAID5可谓是性价比大大增加。因为不管你有多少块盘,只需要拿出1块来存放冗余数据即可,剩下的都可以利用起来。当然,坏处就是你只能坏一块盘,一旦在降级状态下的重建过程中坏掉第二块盘,你的所有数据就驾鹤西去了。

值得注意的是,RAID5的读取性能非常优秀,接近于RAID0,理论上可以达到单块硬盘的n-1倍;但是在降级状态下,因为读取每一位数据都要进行异或运算,速度将会大大降低。而由于每次写入数据都要进行异或运算,写入性能可谓是惨不忍睹。

RAID50

相信看完了昨天的RAID10之后,大家也能对RAID50猜个八九不离十了吧~对的,RAID10是用2块硬盘组RAID1,之后再组RAID0;而RAID50就是用3块硬盘组成RAID5阵列,之后再用多个RAID5阵列组成RAID0。如图所示:

看完图,想必大家已经能看出来,RAID50的限制是最少6块硬盘,同时硬盘的数量要是3的倍数。而它的空间利用率达到了2/3,容错率也达到了1/3,可谓是比较平衡的一种大量硬盘存储的解决方案了。毕竟如果硬盘数量多,你做RAID5要求只能坏一块硬盘,还是太苛刻了不是嘛。

RAID6

最后一种RAID方案呢,我们介绍一下RAID6。首先来看RAID6的各种参数:需要至少4块硬盘,其中有2块存储冗余数据(比RAID5多了一块);同时允许最多2块硬盘坏掉。也就是说,RAID6的空间利用率为(n-2)/n,容错率为2/n。那么它是如何实现的呢?

首先,我们将这两块盘设为P与Q;P的校验值与RAID5的算法是一样的,就是存储XOR异或数据;但是Q采用的就不是这个算法了,毕竟如果一样的话就没有意义了。基本原理是二元一次方程组的求解,也就是aX+bY=c,dX+eY=f,而c和f就分别对应着P与Q存储的校验值。但是普通的乘法会导致校验容量的累加,所以它采用了基于伽罗华域的乘除法,具体理论需参考群、环、域、有限域等数学理论,这里我们就不再细说了。

而RAID6的具体性能呢,首先读取性能与RAID5相似,理论上依然是不降级的情况下是单块硬盘的n-2倍,较为优秀;而写入性能由于加入了基于伽罗华域的乘除法,计算相比XOR异或计算更为复杂,因此比起RAID5来说更是慢上加慢。

RAID类型的科普到这里就结束了,希望这众多的RAID类型没有将大家绕晕……需要注意的是,不管是哪种类型的RAID,阵列内的所有磁盘都需要相同的容量。如果你用不同容量的磁盘做RAID,那么会以容量小的那个为基准,这样可是很浪费的哦!不过,群晖为我们提供了一种不同容量硬盘组RAID的方案,我们之后会在讲解NAS的视频中为大家进行科普,还请大家耐心等待我们的视频呦!

同时,群晖还提供了一个非常实用的小工具,专门用来计算RAID的容量。只需两步就可以计算出你想要的RAID类型的最终可用空间啦,大家可以戳文章底下的原文链接,去试试呦!

软件RAID与硬件RAID

读到这里大家可能发现了一个问题:既然RAID5、RAID6的写性能如此不堪,那么怎么还会成为各大公司大数据存放的最常用解决方案之一呢?别急,这时硬件RAID就派上用场了。接下来我们就一起了解一下吧。

含义

首先,我们先来了解一下相对简单的软件RAID。软件RAID,顾名思义就是用软件实现的RAID,阵列信息等除了在硬盘上保存一份外,剩余的是存储在操作系统里的。以Win10为例,在Win10的专业版中(家庭版不提供此功能),Win+X调出菜单中的磁盘管理就提供了软RAID的功能。

其中,带区卷就是我们所说的RAID0,镜像卷就是我们所说的RAID1,而RAID-5卷……不用我多说了吧。不过需要注意的是,RAID-5卷只有在Server版的Windows中才提供,也就是Win2003,Win2008 / Win2008R2以及Win2012中才可以使用,普通的Win7、Win8.1以及Win10是不能用RAID-5卷的。

知道了软RAID,那什么是硬件RAID呢?相比较而言,硬件RAID就是有专门的RAID扩展卡插在主板上,然后向外提供SATA / SAS接口。它可以替代主板南桥提供的SATA接口,通过安装专门的驱动来支持挂载在卡上的硬盘。同样,磁盘的阵列信息除了在硬盘上保存一份外,另一份就保存在硬件RAID卡里,而不是操作系统里了。

差别

那么知道了什么是软硬RAID,它们俩差别在哪呢?别急,我们慢慢分析。在RAID0、RAID1以及RAID10中,软硬RAID差别不大,甚至硬RAID控制器的吞吐量不如X86的系统,从而性能甚至略输软RAID。而在需要大量计算的RAID5、RAID6上,硬件RAID将完胜软件RAID。这是为什么呢?

首先,硬件RAID卡拥有自己的处理器,而这块小处理器是专门进行XOR异或操作的(或是RAID6的校验,这要看硬件RAID卡支持的RAID种类),因此比起我们的X86 CPU来说甚至还要快,同时不占用你的系统资源。也就是硬件RAID卡将需要大量计算的XOR操作或是RAID6的校验操作移至自己的小处理器内,解放了我们的CPU性能。

其次呢,是最重要的一点,就是硬件RAID控制器拥有自己的缓存,而且有电池或者SLC的SSD来对缓存进行保护。这相当于给你的台式机内存加装电池,或者类似Win7的关机休眠功能,关机后,内存仍可以得到供电。重新开机后,打开的程序都还在。

因此硬件RAID控制器可以把上述RAID5频繁读写操作往缓存里面塞,主要针对不连续磁盘块的写操作和以及校验操作,如果够大的话,会预读一部分校验数据到缓存里面。顺序读写磁盘速度是可以接受的(因为磁盘额外寻道时间少),所以,我写10次校验数据不连续的写操作,可能都是写到带电池的高速缓存中。

而软RAID呢,控制调度是操作系统,但是高速缓存可不是内存哦,因为你的服务器内存木有电池。所以软RAID针对每次写操作都会要求驱动给一个数据写入的确认,软RAID驱动会把这个请求扔给硬盘,问它刚才写入1,2,3,4号盘的数据是不是都写入了?如果写入了给一个确认。它会等到最后才执行完的那块硬盘给出确认后,再回复操作系统说,数据写完了。结果就是相当于没有内存,因为每次都要等磁盘确认响应。

总结来说就是,硬件RAID可以在高速缓存中合并非连续写和校验操作,成为连续的写操作一次写入硬盘;而软件RAID则要确认每一次数据和校验写是否都写入到磁盘上去了,还要额外附加一些读操作。这样一看,是不是高下立判了?

我该怎么用RAID

终于到了大家心心念念想看的部分了,就是RAID具体的设置步骤。软件RAID就不再细说了,网上有很多教程,上一节中也给大家简单提及了一下;我们这里就着重讲解一下硬件RAID的设置方式。

注意!Intel、AMD的主板所支持的RAID并不是传统意义上的硬件RAID。虽然它的阵列信息保存在主板BIOS里而非操作系统里,但由于它没有专门的运算处理器、内存缓存以及电池,实际上校验信息的计算还是交给了我们的CPU。因此,极度不建议大家使用主板上自带的RAID5,写入性能将会让你分分钟怀疑人生的……当然,RAID0 / RAID1 / RAID10还是可以尝试的~

首先我们要在BIOS中,将磁盘模式由IDE或者AHCI改为RAID。

保存重启之后,就可以看到具体的RAID信息,在这一屏上就可以看到当前的RAID状态:

此时按下Ctrl+I(注意是GHI的I不是LMN的L也不是123的1),将进入RAID配置环节:

接下来选择Create就可以创建我们的RAID卷啦。可以使用方向键+回车,也可以使用1234来选择呦。

上图为组建RAID的基本信息,其中第一选项为RAID磁盘取名,一般选择默认即可。回车后进入下一个选项,在第二个选项中按左右键可以选择RAID0 / RAID1 / RAID10;第三个选项按回车进入后,需要通过空格键选择需要组建RAID的磁盘。最后在选项Create Volume回车,并且按“Y”键保存。至此,你的硬盘已经成功组建RAID啦,退出重启即可。需要注意的是,创建RAID阵列所需的磁盘中的所有数据将被清空,所以大家在尝试之前一定要备份好自己的数据哦!

以上就是RAID科普的全部内容了,相信有不少朋友已经被绕晕了吧?别担心,这期推送的内容其实并不难,实战一下你就明白了。不过我们必须要先提醒大家注意数据安全哦!万一在折腾的过程中把数据弄丢了那就得不偿失了。

【编辑推荐】

  1. 磁盘及文件系统管理应用实例
  2. 忘记全闪存阵列 瞄准闪存优化存储
  3. NVMe架构将彻底颠覆整个传统阵列行业
  4. Infortrend入门级RAID存储采用12Gb/s SAS硬盘接口 给中小型业务带来强劲性能
  5. 更多存储:Facebook公司革新设计提高磁盘密度
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

热门职位+更多

读 书 +更多

大师品软件——软件之痛与应对之道

这并不是一本传统的技术专著,因为它并没有包含一行代码,而更像是一部技术评论。作者通过幽默诙谐而又不失辛辣的语言,从程序员、用户等多...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× Python最火的编程语言