前言
上一次我们讲了关于SSD的一些小知识,这一次我们从机械硬盘切入,讲一讲绝大部分的硬件玩家们都听过的一个词:RAID。RAID技术在SSD没有普及的年代曾经是提高硬盘性能的大杀器,即便是老旧的机械硬盘也能通过这种方法获得成倍的性能提升,完全不逊色于目前市面上的大部分固态硬盘产品。
那么这种超级牛B的技术到底是怎么工作的呢?听我慢慢道来。
RAID的全称是Redundant Array of Independent Disks(独立硬盘冗余阵列)。随着SSD的不断普及,在机械硬盘年代大放异彩的RAID也慢慢被普通用户所遗忘,但这并不代表RAID技术已经落后过时。对于很多注重数据安全的组织机构、个人用户、多盘NAS来说,RAID技术依然扮演着相当重要的角色,并且在可预见的将来不会被轻松取代。
RAID通俗来说就是把多个硬盘(通常是机械硬盘)组合成一个硬盘阵列组,以此来获得更高的速度和容量。组成硬盘阵列组的所有硬盘将会作为一个统一的整体进行工作,在操作系统里会被识别为一个硬盘。
当下的标准RAID形式共有七种,分别是RAID 0、RAID 1……直到RAID 6,除此之外还有多种形式的混合RAID,包括RAID 10、RAID 30、RAID 50等等。本文我们只讨论最常见的5种形式:RAID 0、RAID 1、RAID 5、RAID 6、RAID 10。
类别
RAID 0
RAID 0是为了弥补机械硬盘的读写速度瓶颈诞生的,是最早出现的磁盘阵列形式,通常被称为"条带存储阵列"。组建RAID 0只需要2块或以上数量的硬盘就可以做到。下面我们就以2块硬盘(DISK 0和DISK 1)组建的RAID 0为例来对RAID 0进行讲解。
上面的示意图比较直观地解释了RAID 0的工作模式:我们要将一个大文件A写入硬盘里,RAID 0模式就会把这个文件A分解为A1-A8这8个区块。在硬件层面上,写入到硬盘的文件A是同时向2块硬盘传输分块的数据的,因此传输速度是2块硬盘的速度之和。而且在RAID 0模式之下硬盘的存储空间并没有被压缩,依然是他们的容量相加;在系统软件层面上,文件A的存储过程展示跟单硬盘的操作没有什么两样。文件的读取也是一样的道理,系统会同时向2块硬盘发出读取命令,所以文件的读取速度也还是2块硬盘相加。
在理解了RAID 0的工作模式后,相信大部分同学已经能够得出结论:随着组建RAID 0的硬盘数量的增加,硬盘的读写速度和总容量也是在不断相加的,在带宽和硬盘接口数量没有被限制的前提下,RAID 0的性能会不断增加。
说完优点我们再来说缺点。RAID 0的缺点和它的优点一样突出,由于连续的数据是分散分布在多个硬盘里所以一旦某个硬盘坏掉了,整个阵列里的数据就都损坏了, 没有拯救的余地。基于这些特性,RAID 0很适合那些对性能有比较高的要求同时对数据安全没有太高要求的人使用,比如普通的优点玩家。
RAID 1
RAID 1通常被称为镜像存储阵列,也需要至少2块硬盘才能组建。
RAID 1的工作原理是把容量最小的、速度最慢的那块硬盘里的数据完全照搬到别的硬盘里,让所有硬盘里的数据保持高度的一致。跟RAID 0模式那种牺牲数据安全性来获得速度的做法正好相反,RAID 1的安全性是最高的,只要还有一块硬盘没坏,数据就不会丢失。因为工作原理的特殊性,RAID 1这种磁盘阵列在操作系统层面上的容量等于阵列中最小的那块硬盘的容量,写入速度等于最慢的那块硬盘的速度,读取速度等于所有硬盘读取速度之和。
因为这些特性的存在,RAID 1就会出现在那些不计成本需要保存重要数据的场合里,例如一些邮件系统的数据保护。
RAID 5
由于RAID 0和RAID 1都有非常突出的优点和缺点,因此RADI 5(硬盘分区技术)应运而生。RAID 5是一种读写速度、数据安全、存储成本都比较折中的方案,因此也成为了目前最常见到的RAID形式。组建RAID 5至少需要3块硬盘。
我们以上图中4块硬盘组建的RAID 5阵列为例,储存数据的时候,RAID 5会采用与RAID 0相同的条带储存模式,将文件A分割为A1、A2、A3三个区块,与此同时还会自动产生一个校验数据块Ap,校验数据块的作用是记录存储数据的校验码,以便对损坏的数据进行恢复。校验数据本身一定是跟存储数据在不同的硬盘中的,参见上图中的Bp、Cp、Dp与数据B、C、D的相对位置。
上图中,当阵列中的某一块硬盘(假设是DISK 0)损坏时,系统就会自动根据A2和A3的数据结合校验码Ap去修复损坏的数据A1,所以数据的安全性能够得到一定的保障。因为Dp是校验数据,所以DISK 0的损坏不会影响文件D的存储和读取。由于存储数据和校验数据必须在不同的硬盘中,所以RAID 5的数据读取速度和可用容量都是n-1个硬盘之和。
善于思考的同学应该已经发现了RADI 5的局限性了,RAID 5只能够承受一块硬盘的损坏,如果损坏的硬盘数量超过了1块,丢失的数据就完全没有了恢复的可能,整个磁盘阵列中的数据就会跟RAID 0一样全部丢失。
RAID 6
RAID 6的工作模式和RAID 5非常类似,但是引入了双重校验的概念,需要至少4块硬盘才能组建。RAID 6在RAID 5的基础上又增加了一块硬盘来存储另一种完全不同的独立的的校验数据Aq、Bq、Cq等等。这样一来就可以保证在磁盘阵列在2块硬盘产生损坏的前提下保证数据安全,同时,RAID 6不仅支持存储数据的恢复,还支持校验数据的恢复。
RAID 6 拥有快速的读取性能、更高的容错能力。但是由于在进行数据写入的时候硬盘还要进行两种校验码的计算和存储,所以它的成本要比RAID 5高很多(磁盘利用率是n-2),并且设计和实施非常复杂,这也导致它的写入性能也非常一般。
因此,RAID6 很少得到实际应用,主要用于对数据安全等级要求非常高的场合。
RAID 10
RAID 10是RAID 1 0的简称,它是RAID 0和RAID 1的混合体,上图是它的一种典型工作模型。RAID 10是在RAID 1的基础上,再针对底层阵列组建RAID 0阵列,相当于是两层RAID。组建RAID 10需要至少4块硬盘,但是磁盘的空间利用率和读写速度都只有所有硬盘和值的50%。
RAID 10可以在任意一块硬盘损坏的前提下进行无损更换,更换后再把同组硬盘中的数据镜像过去就能正常工作,因此数据安全性又得到了提高。
在此基础上我们还可以根据下图中的RAID 01来对这种磁盘阵列组合进行分析:
数据先在RAID 0阵列中做条带状分布,然后在另一个磁盘阵列中进行镜像组建RAID 0。
后记:
对于手里有多块机械硬盘的同学,首推RAID 0,在机械盘上用出SSD的快感总归是让人非常舒适的体验。对于需要存储家庭照片视频等的需求来讲,组建RAID 1是非常必要的,网盘的隐私问题和复制粘贴的繁琐性都让人头大,RAID 1就可以很好地解决这类问题。
关于如何组建磁盘阵列,我们会在以后的文章中进行详细解答。今天的作业是:请自行脑补RAID 50和RAID 60的工作模型。
下课。