概述
序言
RAID是“Redundant Array of Independent Disks“的缩写,称为"独立磁盘冗余阵列",通常简称为”磁盘阵列(DiskArray)“。通常简单来说,RAID技术就是将多个硬盘按照一定方式有机的组合在一起,形成一个大的硬盘阵列,从而提高硬盘数据的存储性能和数据备份技术。对于用户而言,操作磁盘阵列就像操作一般的单个硬盘一样,而且这样比操作单个硬盘的数据存储速度更快,并具有数据自动备份的机制。
RAID 的初衷主要是为了大型服务器提供高端的存储功能和冗余的数据安全。在系统中,RAID 被看作是一个逻辑分区,但是它是由多个硬盘组成的(最少两块)。它通过在多个硬盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量,而且在很多RAID 模式中都有较为完备的相互校验/恢复的措施,甚至是直接相互的镜像备份,从而大大提高了RAID 系统的容错度,提高了系统的稳定冗余性。
根据组成硬盘的不同方式成为RAID级别(RAID Levels),目前主要的RAID级别有六种(RAID0,RAID1,RAID2,RAID3,RAID4,RAID5),而且还有其中的各种组合,如:RAID10(RAID0和RIAD1的组合),RAID50(RIAD0和RAID5的组合)等等。
为何有RAID技术的存在呢?在数据化快速发展的时代,数据的存储速度,数据的安全性是至关重要的,因此,RAID技术显著的特点是:速度、安全。采用RAID技术,最吸引人的地方还是其数据的备份能力,数据备份能力是指数据一旦发生丢失或者损坏后,利用备份数据能够快速地进行数据的恢复,从而保障数据的安全性。
目前RAID技术大致分为两种:基于硬件的RAID技术和基于软件的RAID技术。在Linux环境下,就可以通过系统自带的软件实现RAID功能,这样就可以替代了购买昂贵的RAID硬件控制器。(PS:通常可以采用虚拟机在Linux环境下来体验RAID技术)。由于是用软件去实现的RAID功能,所以它配置灵活、管理方便。同时使用软件RAID,还可以实现将几个物理磁盘合并成一个更大的虚拟设备,从而达到性能改进和数据冗余的目的。当然基于硬件的RAID解决方案比基于软件RAID技术在使用性能和服务性能上稍胜一筹,具体表现在检测和修复多位错误的能力、错误磁盘自动检测和阵列重建等方面。
一、RAID级别
按照硬盘的不同方式组合及数据存放顺序,RAID级别也就不同,因此其优缺点也不尽相同。
项目 | RAID0 | RAID1 | RAID10 | RAID5 | RAID6 |
最小配置 | 1 | 2 | 4 | 3 | 4 |
性能 | Highest | Lowest | RAID5<RAID10<RAID0 | RAID1<RAID5< RAID10 | RAID6<RAID5< RAID10 |
特点 | 无容错 | 最佳的容错 | 最佳容错兼顾性能 | 提供容错 | 提供容错 |
磁盘利用率 | 100% | 50% | 50% | (N-1)/N | (N-2)/N |
描述 | 不带奇偶效验的条带集 | 磁盘镜像 | RAID0与RAID1的结合 | 带奇偶效验的条带集 | 双校验位 |
1、RAID 0 简称磁盘条带化,它可以提供最好的读写性能,如果你把两块磁盘做成了RAID0,那么在写入数据的时候,就可以同时对A磁盘和B磁盘执行写入操作。这里我必须说明的是:“可以同时...写入操作”,并不是意味着将文件的相同内容“在同一时间内完全写入”A磁盘和B磁盘中。打个比方:有一个100M的文件需要写入磁盘中,假设单个磁盘的写入速度是10M/S,那么需要10秒钟才能完成写入工作。但如果在具有A、B两块磁盘的RAID 0阵列环境中,(以秒/S为最小单位的)单时间内,可以将10M内容写入A磁盘中,并同时将紧随的10M内容写入B磁盘中,这样算起来,写入速度变成了20M/S,只需要5秒钟就能搞定了,而且每块磁盘中只需存储50M的文件内容,不会造成硬盘存储压力。当然,上诉例子也许不恰当,也只是指的理论环境下,实际环境中会有很多其他因素,效率肯定不能达到。
毋庸置疑的是,这样肯定是能提高读写性能的,但是这样也带来了一个问题就是,如果其中的一部分数据丢失了,你的全部数据都不会找回来的,因为RAID0没有提供冗余恢复数据的策略。所以RAID0可以用在只读的数据库数据表,或者是经过复制过来的数据库上,如果你对数据丢失不敏感的话,也可以使用RAID 0,总之这个level下是高性能、无冗余。
2、RAID 1 磁盘镜像 它对读没有什么影响,如果有两块磁盘它只对写有影响,因为它采用了一块磁盘做冗余备份的方法,这样如果你有两块50G的磁盘,那么加起来就是100G,但是在RAID 1下,那么你只能使用50G ,这种方法会影响磁盘的空间使用,降低了I/O 写的性能。通俗点来讲:你将一个100M的文件写入RAID 1时,讲内容写入A磁盘的同时,也会将相同的内容写入B磁盘中。这样一来,两块磁盘的内容是完全一致的(这就传说中的”冗余“,并不是什么高深的东西)。本来只需要写入1块硬盘的,可是现在要写入到两块硬盘去,效率肯定会变低。至于“读”操作,RAID 1环境下,读取时候只使用到了一块硬盘,所以和普通的环境下没啥区别(如果两块硬盘都能够同时工作,那么还可以分摊压力的)。只是当第一个硬盘数据损坏或者挂掉了,就启动第二块硬盘。当然,两块硬盘都挂了,那就真的崩溃了。哈哈。值得一提的是,有些书或者文章上讲,RAID 1是在将第一块硬盘写入完成后,才将数据完整复制到第二块磁盘中做为镜像备份的这种说法有待考证,按我的理解,是同时复制写入的。
3、RAID 5 与RAID1 不同之处就是多了奇偶校验,所有的奇偶校验的信息会遍布各个磁盘,性能上要比RAID1高些,但是一旦发生磁盘I/O失败,就会造成性能急剧下降,同时这种方法也在RAID0 与RAID1间折了中,是比较通用的做法。 用简单的语言来表示,至少使用3块硬盘(也可以更多)组建RAID5阵列,当有数据写入硬盘的时候,按照1块硬盘的方式就是直接写入这块硬盘的,如果是RAID5的话这次数据写入会分根据算法分成3部分,然后写入这3块硬盘,写入的同时还会在这3块硬盘上写入校验信息,当读取写入的数据的时候会分别从3块硬盘上读取数据内容,再通过检验信息进行校验。当其中有1块硬盘出现损坏的时候,就从另外2块硬盘上存储的数据可以计算出第3块硬盘的数据内容。也就是说RAID5这种存储方式只允许有一块硬盘出现故障,出现故障时需要尽快更换。当更换故障硬盘后,在故障期间写入的数据会进行重新校验。 如果在未解决故障又坏1块,那就是灾难性的了。
4、RAID6全称为Independent Data Disks with two Independent Distributed Darity Schemes(带有两个独立分布式校验方案的独立数据磁盘)
RAID 6技术是在RAID 5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID 5等级。与RAID 5的不同之处于除了每个硬盘上都有同级数据XOR校验区外,还有一个针对每个数据块的XOR校验区,RAID 6 是在RAID-5基础上把校验信息由一位增加到两位的RAID级别。
RAID6的优点是快速的读取性能,更高的容错能力;而它的缺点是很慢的写入速度,RAID控制器在设计上更加复杂,成本更高。
5、RAID 10 (也叫RAID 0+1 )就是RAID0 与 RAID1的组合,它提供了高性能,高可用性,性能上要比RAID5好,特别适合大量写入的应用程序,但是就是成本比较高无论是多少块磁盘你都是将损失一半的磁盘存储。按照我的理解,至少需要4块硬盘才能完成,A和B做数据分割,分别存储一半的数据,C和D分别对应做A和B的镜像备份。这样一来,可真是完美了,也是我理想中的最佳状态。也不需要RAID 5的奇偶校验。很显然,这样子成本也会高一些。
当然,这就和我们讲架构时候经常说的“负载均衡、高可用集群,横向扩展,纵向扩展”的目的其实很类似。通俗点来讲,都是为了实现不间断的工作,保证数据完整性和高可用性,而且最重要的,还要能分摊压力。
参考作者:
---------------------
作者:Listen-Liu
来源:CSDN
原文:https://blog.csdn.net/weixin_38808609/article/details/81663621
版权声明:本文为博主原创文章,转载请附上博文链接!
---------------------
作者:丁码农
来源:CSDN
原文:https://blog.csdn.net/dinglang_2009/article/details/7960598
版权声明:本文为博主原创文章,转载请附上博文链接!
---------------------
作者:xcbeyond
来源:CSDN
原文:https://blog.csdn.net/xcbeyond/article/details/41911571
版权声明:本文为博主原创文章,转载请附上博文链接!
最后
以上就是震动黑猫为你收集整理的RAID入门级——RAID级别、原理的全部内容,希望文章能够帮你解决RAID入门级——RAID级别、原理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复