假设存在多块磁盘,如果不组建阵列,磁盘与磁盘之间是没有任何关系的。磁盘A和B,放在A中的文件与B磁盘没有关系,两块磁盘是完全独立的两个数据仓库,这种传统的没有联系的关系简称JBOD(Just a bunch of disk)结构。这种结构存在很大弊端,当调取磁盘A内数据时,磁盘A在全力工作,磁盘B是空闲的,磁盘B同理,除非同时调用磁盘AB的数据,不然总有一块磁盘是空闲的,无形间就浪费了一部分磁盘性能,为了发挥所有磁盘的性能,磁盘列阵产生了。
RAID:容错式磁盘阵列(Redundant Arrays of Independent Disks,简称:磁盘阵列)是利用利用虚拟化储存技术把多个硬盘组合起来,成为一个或多个硬盘数组组,目的为提升效能或数据容错功能。
在给磁盘组建完RAID后,在电脑内就只会看到一个RAID的阵列盘,子磁盘是看不到的,只需要和使用普通磁盘一样去使用RAID即可。
RAID有不同等级,目前行业的公认的等级为0-7,不同等级之间并没有优劣之分,仅仅是不同功能的阵列,在使用时根据不同的需求和情况组建合适的RAID。
RAID0的工作原理很像内存双通道,至少需要两块磁盘,工作原理是把一个完整的数据拆开以后分散到两块磁盘里去,写入的时候同时往两块磁盘写入,读取的时候同时从两块磁盘读取,做到和内存双通道一样带宽翻倍速度翻倍的效果。比较强大的地方是有多少磁盘就可以翻多少倍性能,由于没有和内存一样的IMC的限制,可以把南桥的带宽跑到上限,但是这里的翻倍速度只是连续读写速度,RAID0是无法提高随机读写性能的。
随机读写主要考验的就是硬盘的寻道和寻址能力,在组建完RAID以后,硬盘随机读写性能低下的问题是没有办法改变的,硬盘还是要花费大量的时间去寻道和寻址,所以组建RAID随机读写性能的提高对于单块磁盘来讲,提升是非常微弱的,也有可能会因为某块磁盘问题出现组RAID0 后随机读写能力弱于单块磁盘的现象。
RAID0是所有阵列里传输速度最快也是最不安全的,因为数据被拆分到了好几块磁盘里,假设组了6块磁盘的RAID0,数据就被拆成6份分散在6个磁盘里,万一有任意一块磁盘出现故障,只有剩下的5块磁盘的数据是无法正常读取的,会导致所有的数据全部报废。
因此RAID0 的优缺点都很极端,加的磁盘越多,速度越快,数据越危险。
内存的IMC限制指的是内存控制器(Integrated Memory Controller)的限制。IMC是现代处理器中的一个组件,它负责管理处理器与内存之间的数据传输。其主要作用是控制内存的访问速度和数据传输,以确保处理器能够高效地读取和写入数据。
IMC限制通常表示内存控制器的最大容量或频率。最大容量限制指的是处理器所支持的最大内存容量,即可以安装在系统中的最大内存大小。最大频率限制指的是内存控制器所支持的最大内存频率,即内存模块的工作频率。
RAID1又被称为镜像,至少也是需要两块磁盘才可以实现,工作原理就是吧一份完整的数据复制到其他磁盘里去,假设有两块磁盘组成RAID1,向RAID1存放数据的时候,两块磁盘内都会存入完全一模一样的数据,所以RAID1就是相当于自动备份。而且组建RAID1以后,系统上只会看见一块磁盘,这是所有阵列里最安全的,但是相应的他的空间利用率和速度是最低的。
假设由两块1T的磁盘组成RAID1,你在系统内只能看到一块磁盘的容量,速度也是一块磁盘的速度,多了一个全自动备份功能。
RAID2是一种利用海明码校验的一种阵列,主要目的是在RAID0的基础上增加数据纠错能力但并不是容灾,数据纠错能力指的是系统能够在数据传输或存储过程中检测并纠正数据错误的能力。容灾能力是指系统在面对灾难性事件(如自然灾害、人为破坏等)时,能够在较短时间内从灾难中恢复运行并保持正常的业务连续性。
RAID2以数据的第2的n次方为校验文件,也就是1、2、4、8、16、32位是用来纠错的校验码,其他的位置才是原始数据,假设有一个4位编码的数据需要存储,那就需要7块磁盘1 2 4存放校验码,3567是存放数据。假设有8位编码的数据,那么1 2 4 8是拿来存放校验码,35679 10 11 是存放数据,所以RAID2的编码数据位数越少磁盘利用率越低。
由于一次写入数据可以往多块磁盘里写入,所以和RAID0有比较相似的并发性能,但是由于还需要计算校验码,读取的时候也需要读取校验码用于纠错,所以性能开销比较大所以使用的人很少。
RAID3的实现至少需要3块磁盘,在RAID0的基础上增强容灾能力。假设用三块磁盘组成RAID0,这时候再增加一块磁盘作为第四块,第四块磁盘存放着前面三块磁盘的恢复码,在前三块磁盘任意一块出现故障的时候,靠着剩下两块磁盘的数据和恢复码就可以恢复丢失的磁盘的数据,而恢复码的磁盘即使损坏了也不会影响前面三个磁盘的使用。
由于前面三块磁盘和RAID0一样,仅仅只是最后多了校验磁盘,和RAID2海明码的一堆纠错码不同,恢复码的性能消耗比较少,所以RAID3的性能非常接近RAID0。
RAID4和RAID3很像,也是在RAID0的基础上增加一块恢复码磁盘,假设RAID3和4都是3数据盘和1恢复盘,要存储一个文件,被分成了3组,三组数据需要分别存储到磁盘内,RAID3是3组数据依次拆分加上那一组的数据恢复码写入磁盘,RAID4则是123组直接准备好,再为123组的数据整体准备一个恢复码,再把三组数据和整体的恢复码写进去。
这俩的区别就是,RAID3是将1个数据块拆分分开存,校验码也是针对拆分的部分去进行计算的,RAID4是直接按区块去进行存储,校验码是一块计算写入,容灾能力都是一块磁盘。问题就在,假设增加到了5块、10块数据盘,恢复盘始终都是一块,数据盘越来越多,只有一个恢复盘会制约整个阵列的性能。恢复盘的数据没有写入完成,下一次写入是没办法进行的。
RAID5将磁盘恢复码不再单独存放在恢复盘,而是直接拆分开,每一块磁盘里都储存一部分恢复码,这样恢复码的写入操作就是由4快磁盘共同完成,假设其中第三块磁盘无法读取,B1 B2 B3都在不需要恢复,A1+A2+Ap可以恢复A3,C1+Cp+C3可以恢复C2,Dp+D1+D3可以恢复D2。
所以RAID5一方面可以做到RAID0相似的性能还增加了一块磁盘的容灾能力,还解决了RAID4恢复码的瓶颈,所以民用层面RAID5是使用最多的一种磁盘。
需要注意的是做raid 5阵列所有磁盘容量必须一样大,当容量不同时,会以最小的容量为准。 最好硬盘转速一样,否则会影响性能,而且可用空间=磁盘数n-1,Raid 5 没有独立的奇偶校验盘,所有校验信息分散放在所有磁盘上, 只占用一个磁盘的容量。
RAID6的恢复码相对于RAID5从一组变成了2组,下图中黄 绿为恢复码部分,即使损坏了两块磁盘,数据依然能找回,这就让RAID6有了两块磁盘的容灾能力。
RAID 7 全称叫“Optimized Asynchrony for High I/O Rates as well as high Data Transfer Rates(最优化的异步高 I/O 速率和高数据传输率)”,它与以前我们见到 RAID 级别具有明显的区别。RAID 7 完全可以理解为一个独立存储计算机,它自身带有操作系统和管理工具,完全可以独立运行。大多数用户用不到。
感兴趣可自行搜索:https://www.leixue.com/ask/what-is-raid7
RAID除了基础单个存在之外,还可以嵌套使用,RAID10就是比较常用的一种。
首先创建2个独立的Raid1,然后将这两个独立的Raid1组成一个Raid0,当往这个逻辑Raid中写数据时,数据被有序的写入两个Raid1中。磁盘1和磁盘2组成一个Raid1,磁盘3和磁盘4又组成另外一个Raid1;这两个Raid1组成了一个新的Raid0。如写在硬盘1上的数据1、3、5、7,写在硬盘2中则为数据1、3、5、7,硬盘中的数据为0、2、4、6,硬盘4中的数据则为0、2、4、6,因此数据在这四个硬盘上组合成Raid10,且具有raid0和raid1两者的特性。
虽然Raid10方案造成了50%的磁盘浪费,但是它提供了200%的速度和单磁盘损坏的数据安全性,并且当同时损坏的磁盘不在同一Raid1中,就能保证数据安全性。假如磁盘中的某一块盘坏了,整个逻辑磁盘仍能正常工作的。
当我们需要恢复RAID10中损坏的磁盘时,只需要更换新的硬盘,按照RAID10的工作原理来进行数据恢复,恢复数据过程中系统仍能正常工作。原先的数据会同步恢复到更换的硬盘中。
[主板]Intel 500系列或之前/AMD主板 BIOS下如何组建RAID可以参考:https://www.asus.com.cn/support/FAQ/1045089/
[主板]Intel 600或700系列BIOS下如何组建RAID可以参考:https://www.asus.com.cn/support/FAQ/1047139