由于众所周知的原因,我决定无限期暂停在知乎发文,知乎的旧文也不再更新,新来的同学可以关注我的Blogger和微信公众号,详情请看:
目录
4.聊聊磁盘阵列功能(本文)
聊聊磁盘阵列功能
★简介
独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。
其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘数组组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。
最初的RAID分成不同的等级,每种等级都有其理论上的优缺点,不同的等级在两个目标间取得平衡,分别是增加数据可靠性以及增加存储器(群)读写性能。这些年来,出现对于RAID观念不同的应用。
★标准RAID
◇RAID 0优点:使用 n 颗硬盘,即可拥有将近 n 倍的读写效能。
缺点:数据安全性较低,同组数组中任一硬盘发生问题就会造成数据遗失。
硬盘数量:最少 2 个。
◇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 6优点:容错硬盘数量比 RAID 5 多 1 颗。
缺点:运算量比 RAID 5 大、空间利用率比 RAID 5 低。
硬盘数量:至少 4 个。
◇RAID 2、3、4 呢?
RAID2、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真的值得吗?[3] [4]
◇引言
在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.256GB
RAID 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 还要高的访问速度(因为不用运算校验码)。
★参考文献