★简介
独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。
其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘数组组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。
最初的RAID分成不同的等级,每种等级都有其理论上的优缺点,不同的等级在两个目标间取得平衡,分别是增加数据可靠性以及增加存储器(群)读写性能。
这些年来,出现对于RAID观念不同的应用。
★标准RAID
◇RAID 0
优点:使用 n 颗硬盘,即可拥有将近 n 倍的读写效能。
缺点:数据安全性较低,同组数组中任一硬盘发生问题就会造成数据遗失。
硬盘数量:最少 2 个。
RAID 0 讲求效能的极大化,使用者设定数颗实体硬碟在磁碟阵列中,欲写入、读取此硬碟阵列的资料,就会分成数份同时写入、读取。理论上来说,RAID 0 磁碟阵列中有几颗实体硬碟,读取、写入效能就呈现倍数成长。若是磁碟阵列中的硬碟存取效能不一,则以最低效能硬碟的存取能力作为基准估算。
因为将资料拆分写入硬碟的策略,使得 RAID 0 能够使用到所有硬碟加总起来的容量。如果是在各个实体硬碟容量不同的情况,则能够依照最小容量的那颗硬碟为标准建立 RAID 0,其它较大容量硬碟的多馀空间,则依磁碟阵列控制器的不同,而有不同的结果;较低阶的控制器可能无法使用这部分的空间,高阶的控制器则可做另外的规划,例如做为单一的储存空间使用或是组合成其它的 RAID 组态。
此外最近採用 PCIe 为连接介面的消费型 SSD,也经常使用 RAID 0 作为内部储存空间的组合方式,因为 SSD 内部的快闪记忆体控制器原本就拥有较多层、较複杂的纠错演算法,加上快闪记忆体和传统硬碟的每储存单位售价还是存在著一定距离,採用其它 RAID 模式会让售价提升不少,以至于产生这样的结果。
◇RAID 1
优点:安全性依照数组里的实体硬盘数量倍数成长。
缺点:空间利用率是所有 RAID 中最没有效率的。
硬盘数量:最少 2 个。
在 RAID 0 追求效能极端的彼岸,存在着强调数据安全性的RAID 1,RAID 1 的数据储存方式恰好与 RAID 0相反,欲写入硬盘的数据被复制成与硬盘相同数量的份数,分别写入数组中的各颗硬盘。
如此一来每个硬盘内都拥有着同份数据的不同拷贝,只要数组中的其中 1 颗硬盘还可使用,数据就不会遗失,可忍受 n-1 颗硬盘同时损毁(n 为数组中实体硬盘的个数)。
效能部分则分为写入和读取 2 种不同状况,写入时因为须将数据复制多份写入各颗硬盘,写入效能与单颗硬盘差不多;读取时则能够同时从各颗硬盘同时读取数据的不同部分,所以能够和 RAID 0 相提并论,约是单颗硬盘读取效能乘上数组中的硬盘个数,不过也有以单颗硬盘读取的设计。
数组可使用容量是 RAID 1 最大的缺点,由于各实体硬盘中的数据几乎是以镜像的方式储存,因此无论数组中放入了多少颗硬盘,可用容量都是以最小的那颗硬盘为主;同 RAID 0,如果数组中有着硬盘容量不一的情形,大硬盘的剩余容量能否可利用端看控制器的设计,之后的 RAID 模式也是如此,将不再赘述。
◇RAID 5
优点:兼顾空间利用率与安全性。
缺点:需要额外的运算资源,仅能忍受 1 个硬盘损毁。
硬盘数量:至少 3 个。
RAID 5 使用了和 RAID 0、RAID 1 较为不同的策略,相较 RAID 0 将资料拆分以及 RAID 1 的资料複製,RAID 5 则是将资料运算过后的纠错检查码储存起来,使用奇偶校验码、也就是 XOR 运算。详细实作方式为,将资料分成 n-1 份(n 为磁碟阵列中的实体硬碟个数),分开写入至各颗硬碟中。剩馀的那个空间,就会将分成 n-1 份的资料进行 XOR 运算后写入;需注意的是资料与校验码是以交错的方式放在各颗硬碟上,而不是有颗硬碟专门储存校验码。
由于 RAID 5 多了 XOR 运算,所以效能的评估比较複杂,如果运算效能相当充足,存取效能可以接近于採用 n-1 颗硬碟的 RAID 0;如果 XOR 运算效能不足,则存取效能将会无限下探。加强效能的方式,以软体∕韧体、驱动程式方式搭建的磁碟阵列来说,就是加强处理器的运算效能,如果是硬体独立运算方式的 RAID 扩充卡∕扩充晶片,就是依照晶片上的 XOR 运算引擎为主。
此外还可开启「写入快取」的功能,先将资料写入快取记忆体(电脑的系统记忆体、阵列卡上的 DRAM 模组等)中,之后再慢慢运算写入硬碟中,在作业系统端来看就是已经写入硬碟了。但是资料先行写入断电后就会消失的 DRAM,所以开启写入快取有著一层风险,万一资料尚未完整写入硬碟时断电,则资料就会损毁。因此在部分硬体式的 RAID 扩充卡,还会有额外的电池模组可安装,就是为了在意外断电的情况下还能尽量保留 DRAM 内的资料,或者是直接写入 RAID 卡上的非挥发性快闪记忆体之中。
还有个原因能够影响 RAID 5 的存取效能,就是磁碟阵列中的实体硬碟数量,因为硬碟数量越多,每组奇偶校验码所对应的资料量就越多,运算过程就更为複杂。
安全性部分则是能够容许任何 1 颗实体硬碟损毁,无论磁碟阵列中有著多少颗硬碟都是如此。因此 RAID 5 磁碟阵列中要放入多少颗实体硬碟,可以依照偏向安全性、效能、空间利用率来抉择。假设各颗硬碟故障率都相同,越多颗硬碟,安全性越低(阵列中硬碟出错机率升高)、效能越低(需要运算量增大)、空间利用率越高(奇偶校验码所需容量提摊至更多硬碟上);越少颗硬碟,安全性越高、效能越高、空间利用率越低。
▲RAID 5,注意校验资讯是以交错的方式分散在不同实体硬碟中。
◇RAID 6
优点:容错硬盘数量比 RAID 5 多 1 颗。
缺点:运算量比 RAID 5 大、空间利用率比 RAID 5 低。
硬盘数量:至少 4 个。
在 RAID 5 的基础上,额外再加入 1 组奇偶校验码,就形成了 RAID 6 磁碟阵列;也就是说,RAID 6 内部有 2 套并行使用的演算法,用以产生奇偶校验码。这 2 组演算法是不同的,除原先 RAID 5 使用的 XOR 之外,另 1 套演算法就交由厂商自行选择。RAID 6 由于多出 1 组奇偶校验码需要储存的关係,所以磁碟阵列中只有 n-2 颗实体硬碟用以储存真正的资料。
RAID 6 的效能、安全性、空间利用率都可用 RAID 5 的方式来推估,在处理器足以负担 2 套演算法的情况下,存取效能约是单颗硬碟的 n-2 倍;安全性则是可同时容忍 2 颗硬碟损毁,空间利用率则是比 RAID 5 少了 1 颗硬碟(逻辑上须 2 颗实体硬碟的空间摆放奇偶校验码)。
◇RAID 2、3、4 到哪去了?
笔者以跳过 RAID 2、RAID 3、RAID 4 的方式叙述 RAID 0、RAID 1、RAID 5、RAID 6,主要的原因是这几种 RAID 方式并不常用。RAID 2 是 RAID 0 的改良版,将资料经由 1 种称之为「汉明码」的演算法计算后放入硬碟中(以 bit 为单位分割),经过汉明码编码的资料会略微增大,但换来了侦测与校正错误的功能。RAID 3 则是以 byte 为单位分割资料后储存,同时改换奇偶校验码;RAID 4 同 RAID 3,但将资料以 block 为单位进行分割。
缺点在于 RAID 2 以 bit 为单位分割资料,加上汉明码编码后的影响,最少需要 7 颗实体硬碟才能够建立(4 颗存放实体资料,3 颗存放校验资料),架设门槛十分的高,空间利用率也不佳。RAID 3、4 最少需要 3 颗硬碟才可使用,皆可容忍 1 颗硬碟损毁;RAID 3 以 byte 为单位分割、RAID 4 换成以 block 为单位,但是奇偶校验码均固定储存在 1 颗实体硬碟上,而非如 RAID 5 交错的储存在各颗硬碟,这使得无论读取哪个部分的资料,都会存取到储存奇偶校验码的那颗硬碟,导致单颗硬碟负荷过重,容易提早往生。
效能上 RAID 3 的随机存取不佳,RAID 4 则是随机写入不佳,综合以上原因,在现今的磁碟阵列中相当少(几乎可以说是没有)见到 RAID 2、3、4 的建立方式。
★混合RAID
◇JBOD
JBOD 为 ”Just a Bunch Of Disks” 的缩写,意思就是「一堆硬盘」,指的是RAID 磁盘阵列以外的所有组态。
实作上 JBOD 有 2 种方式,第一种与我们直接将硬盘安装在计算机中相同,各颗实体各自管理自己的容量,当然也可进行磁盘区分割。
第二种则是能够将不同实体硬盘的空间串在一起,例如 2 颗 1TB 硬盘串成 1 个 2TB 的空间运用,如此能够放入大于 1TB 的单一档案。
◇RAID 7
RAID 7并非公开的RAID标准,而是Storage Computer Corporation的专利硬件产品名称。
RAID 7的效能超越了许多其他RAID标准的实做产品,但也因为如此,在价格方面非常的高昂。
◇RAID N+N
在厂商支持的情况下,使用者甚至可以将 2 种以上的 RAID 组态放在同 1组磁盘阵列内,也就是有时可以看到的双位数 RAID 01、10、50、60……等。
建立的方式也很好理解,首先利用前位数字的 RAID 方式建立数组,接着再将后方数字所代表的数组建立其上。
譬如 RAID 10 就是先建立 2 组 RAID 1,接着这 2 组 RAID 1 再组合成 RAID 0;RAID50 就是先建立 2 组 RAID 5,接着再组合成 1 组 RAID 0。
当然,这种组合等级的成本一般都非常昂贵,因此只在少数特定场合应用。
★1+1大于2,SSD组RAID 0真的值得吗?
◇引言
在HDD机械硬盘横行的时代,有人为了追求性能而组RAID 0,理论上能获得双倍的读写速度提升,而在SSD固态硬盘时代中,RAID似乎变得更加麻烦了,因为二者的工作原理太不一样了,光是一个RIAD下的TRIM问题就困扰了玩家很久,直到RST 11驱动才解决。
SSD组RAID 0还有一个问题就是性能提升与成本提升不那么明显,因为主流SSD的速度已经够快,组RAID对随机性能提升也不明显,再加上成本方面的影响,SSD组RAID只是少数玩家才会考虑的事。
◇测试
Tom's Hardware就做了一个类似的测试,对比是256GB SSD vs.128GB RAID 0、512GB vs.256GBRAID 0下的SSD性能,包括连续读写、随机及日常应用等各个方面。
组成RIAD 0模式之后,SSD性能提升最明显的就是连续读写速度了,简单来说就是从500MB/s量级提高到了900-1000MB/s量级。
其实从随机性能上的测试来看,IOMeter中的数据库IOPS之类的性能也是有变化的,但是从延迟上来看RAID 0的延迟确实比单SSD要高了一点,PCMark及日常应用测试中其性能并没有随读写速度的提升而改善,有的甚至还下降了。
◇小结:读写速度提升,但总体弊大于利
所以,Tom's Hardware的最终态度就是不赞成SSD组RAID 0,用户还是选择大容量的SSD产品,组RAID 0还要面临成本更高、风险更大等问题,所以还是单块大容量SSD算了,除非用户对连续读写速度有非常强烈的需要。
★选择适合的 RAID 模式
对于玩家们或是强调系统效能的主机来说,通常都是为了要来增加数据传输的速度。
而对于重视数据备援及安全性的用户或是企业用户来说,磁盘阵列就是一个很好的数据保护模式。
像我们这种屌丝,一般只有一块SSD或一块SSD+一块机械硬盘,RAID好像没什么卵用。
但是近几年 NAS 这项产品的需求大开,不论是什么原因而购买了NAS 这项产品,大部分的用户都很难逃过「该选哪种 RAID 模式」这一关。
RAID 0 和 RAID 1 最少都需要 2 颗硬盘,RAID 0 是效能和储存空间的最大化,不注重安全性,因此比较适合放一些消失不见也没关系的档案,例如快取、或是整理档案时的暂存空间,RAID 1 则是安全性最大化,适合放一些重要的数据。
在 4颗硬盘规格的 NAS 产品中,RAID 5、RAID6、RAID 10则是可以放在一起探讨,以安全性来排序由高至低为 RAID 6>RAID 10>RAID5,空间利用率则是 RAID 5>RAID 6=RAID 10。
此外还必须加入处理效能去探讨,如果处理效能不高,那么使用 RAID 10能够获得比 RAID 6、RAID 5 还要高的访问速度(因为不用运算校验码)。