磁盘阵列RAID——独立磁盘冗余阵列。
磁盘阵列是由很多廉价的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
利用同位检查(ParityCheck)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。
相同的数据存储在多个硬盘的不同的地方的方法。通过把数据放在多个硬盘上(冗余),输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。
软 RAID :
所有功能均有操作系统和 CPU 来完成,没有独立的 RAID 控制 / 处理芯片和 I/O 处理芯片,效率最低
硬 RAID :
配备了专门的 RAID 控制 / 处理芯片和 I/O 处理芯片以及阵列缓冲,不占用 CPU 资源,但成本很高。
软硬混合 RAID :
具备 RAID 控制 / 处理芯片,但缺乏 I/O 处理芯片,需要 CPU 和驱动程序来完成,性能和成本 在软 RAID 和硬 RAID 之间。
raid0、raid1、raid5、raid6、raid10、raid01、raid50
特点: 存储性能最优
原理: 把连续的数据分散到多个磁盘上存取,有数据请求时可以多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。
优点:
缺点:
应用场景:
特点:
成本最高的,磁盘利用率最低,但提供了很高的数据安全性和可用性,当一个磁盘失效的时候,系统可以自动切换到镜像磁盘进行读写,不需要重组失效的数据。
性能:
磁盘空间 = 磁盘总量/2 = 50%
需要的磁盘数:至少2块
读性能= 优秀 = I/O性能*n = 200%
写性能=正常=100%
优点:
缺点:
应用场景:
存放重要数据,银行,金融
原理:
数据以块分段条带化存储。校验信息交叉地存储在所有的数据盘上。数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上,其中任意N-1块磁盘上都存储完整的数据
优点:
缺点:
磁盘越多安全性能越差,因为重建时,raid的性能就会受损
应用场景:
安全性高,如金融、数据库、存储等。
性能:
磁盘空间 = n-1
需要的磁盘数 ≥ 3
读写性能 ≈ 优秀 = 磁盘个数(n)I/O速度 = n100%
RAID6 不仅支持数据的恢复,还支持校验数据的恢复,因此实现代价很高,控制器的设计也比其他等级更复杂、更昂贵。
原理:
两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。
但RAID 6需要分配给奇偶校验信息更大的磁盘空间,写性能比RAID5差。
特点:
RAID6 具有快速的读取性能、更高的容错能力。但成本高于 RAID5 许多,写性能较差,设计和实施非常复杂。它一般是替代 RAID10 方案的经济性选择。
性能:
磁盘空间 = n-2
需要的磁盘数 ≥ 4
优点:
缺点:
应用场景:
对数据安全级别要求比较高的企业
先做RAID 0再将RAID 0组合成RAID 1,拥有两种RAID的特性。
磁盘空间= n/2 = 50%
4 ≥ 需要的磁盘数 ≥ 2*n
读写性能 = RAID0
优点:
缺点:
应用场景:
适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。
原理:
先做RAID 1再将RAID 1组合成RAID 0,拥有两种RAID的特性,安全性能高。
优点:
缺点:
成本稍高
特性:
磁盘空间= n/2 = 50%
至少4块硬盘
应用场景:
特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。
原理:
由两组RAID 5磁盘组成(每组最少3个),每一组都使用了分布式奇偶位,而两组硬盘再组建成RAID 0,实现跨磁盘抽取数据。RAID 50提供可靠的数据存储和优秀的整体性能,并支持更大的卷尺寸。即使两个物理磁盘发生故障(每个阵列中一个),数据也可以顺利恢复过来。
优点:
缺点: 随机写性能适中,支持并发写入,但是
选择判断的3个因素:
数据可用性、 I/O 性能和成本
如果可用性和性能是重要的,而成本不是一个主要因素,则根据磁盘数量选择 RAID1 。
如果可用性,成本和性能都同样重要,则根据一般的数据传输和磁盘数量选择 RAID3 或 RAID5 。
安全性:
raid10安全性比较高:
空间利用率:
raid10和raid01都是50%
raid50空间利用率最低百分之75,磁盘越多,利用率越高
读写性能较
主要分析分析如下三个过程:读,连续写,离散写。
在介绍这三个过程之前,先介绍一个特别重要的概念:cache。
cache已经是整个存储的核心所在,就是中低端存储,也有很大的cache存在,包括最简单的raid卡,一般都包含有几十,甚至几百兆的raid cache。
cache的作用?
体现在读与写两个不同的方面,如果作为写,一般存储阵列只要求写到cache就算完成了写操作,所以,阵列的写是非常快速的,在写cache的数据积累到一定程度,阵列才把数据刷到磁盘,可以实现批量的写入,至于cache数据的保护,一般都依赖于镜像与电池(或者是UPS)。
cache的读一样不可忽视,因为如果读能在cache中命中的话,将减少磁盘的寻道,因为磁盘从寻道开始到找到数据,一般都在6ms以上,而这个时间,对于那些密集型io的应用可能不是太理想。但是,如果cache能命中,一般响应时间则可以在1ms以内。两者应该相差3个数量级(1000倍)。
1)读操作方面的性能差异
RAID10可供读取有效数据的磁盘个数为4,RAID5可供读取有效数据的磁盘个数也为4个(校验信息分布在所有的盘上),所以两者的读的性能应该是基本一致的。
2)连续写方面的性能差异
在连续写操作过程,如果有写cache存在,并且算法没有问题的话,RAID5比RAID10甚至会更好一些,虽然也许并没有太大的差别。(这里要假定存储有一定大小足够的写cache,而且计算校验的cpu不会出现瓶颈)。
因为这个时候的RAID校验是在cache中完成,如4块盘的RAID5,可以先在内存中计算好校验,同时写入3个数据+1个校验。而RAID10只能同时写入2个数据+2个镜相。
4块盘的RAID5可以在同时间写入1、2、3到cache,并且在cache计算好校验之后,这里假定是6,同时把三个数据写到磁盘。而4块盘的RAID10不管cache是否存在,写的时候,都是同时写2个数据与2个镜相。
根据前面对缓存原理的介绍,写cache是可以缓存写操作的,等到缓存写数据积累到一定时期再写到磁盘。但是,写到磁盘阵列的过程是迟早也要发生的,所以RAID5与RAID10在连续写的情况下,从缓存到磁盘的写操作速度会有较小的区别。不过,如果不是连续性的强连续写,只要不达到磁盘的写极限,差别并不是太大。
3)离散写方面的性能差异
例如oracle 数据库每次写一个数据块的数据,如8K;由于每次写入的量不是很大,而且写入的次数非常频繁,因此联机日志看起来会像是连续写。但是因为不保证能够添满RAID5的一个条带,比如32K(保证每张盘都能写入),所以很多时候更加偏向于离散写入(写入到已存在数据的条带中)。
离散写的时候,RAID5与RAID10工作方式有什么不同?我们假定要把一个数字2变成数字4,那么对于RAID5,实际发生了4次io:先读出2与校验6,可能发生读命中然后在cache中计算新的校验写入新的数字4与新的校验8。
对于RAID10,同样的单个操作,最终RAID10只需要2个io,而RAID5需要4个io.
这里我忽略了RAID5在那两个读操作的时候,可能会发生读命中操作的情况。也就是说,如果需要读取的数据已经在cache中,可能是不需要4个io的。这也证明了cache对RAID5 的重要性,不仅仅是计算校验需要,而且对性能的提升尤为重要。
当然,并不是说cache对RAID10就不重要了,因为写缓冲,读命中等,都是提高速度的关键所在,只不过RAID10对cache的依赖性没有RAID5那么明显而已。