浅谈RAID

  RAID(Redundant Arrays of Independent Disks 独立冗余磁盘阵列),是一种由多块磁盘构成的冗余阵列,在操作系统下整个阵列显示为一块磁盘,RAID具有提升磁盘速度、增大容量、提升容错性等功能,在一块磁盘出故障的情况下不影响磁盘数据,保证数据安全。广泛用于存放各重要数据或对磁盘性能要求较高的设备中。
  RAID常见的级别有RAID0、RAID1、RAID5、RAID10等。这里将各个级别的原理与特点进行粗略的整理。
  

文中许多资料来自比较零散的网络搜集,暂且不贴出处了。侵删~ 这里Alliot将较为书面的概念通俗点讲,用以加深自己的记忆与理解。

实现形式

  RAID有软件与硬件两种实现形式,软件阵列需要一定的CPU资源,一般来说用的比较少,大多数服务器都是搭配专门的硬件磁盘阵列卡来实现的,部分家用电脑主板也带有磁盘阵列的功能(板载RAID),不过这种阵列方式较单独的阵列卡来说不是那么好用,最主要的一个问题就是在装系统时候需要对应主板、对应系统的驱动程序,否则将无法识别磁盘(像我之前将自己的台式机磁盘做阵列装系统的时候,找驱动就花了很久时间,而且还只有win7/vista平台的),另外一个问题就是有时候我们只需要将数据盘做阵列,而系统盘使用单独的SSD,但是由于板载阵列是需要在BIOS中将AHCI切换为RAID模式的,也就是说板载阵列会将主板上SATA接口的磁盘全部当做阵列子盘,这样就无法实现上述的需求(了解到部分企业级的主板带有sSATA接口的可以解决此需求,不过速度会有损失30%左右,这个因为Alliot没有这类主板,无法证实)。而单独的阵列卡是将磁盘与阵列卡从逻辑上整合为一块硬盘(在系统上来看与一块磁盘没有什么不同),接到主板上(接口有IDE、SCSI、SATA几种),在BIOS中可以依然使用AHCI模式,这样就能很好的满足上述的需求。

阵列级别

RAID0

  RAID0是通过将数据分成多份,来对磁盘进行并行读/写,这种模式能够显著提高传输速率,同时容量也是各个阵列子盘容量之和。但是会有一个问题就是数据的可靠性大大降低,阵列子盘中任何一块磁盘出现故障都可能导致所有数据无法读取,事实上这种模式并不符合RAID的初衷,因为它没有数据冗余,只适用于对数据可靠性要求不高的场合。(家用电脑如果有多块同规格的磁盘,可以通过RAID0来提速,省去SSD的钱)
  组成RAID0至少需要2块硬盘,阵列后容量为总硬盘容量之和。
  工作模式如图:raid0

RAID1

  RAID0又称作磁盘镜像,也就是将一块磁盘的数据镜像到其他的磁盘上,在不影响性能的情况下最大限度的保证数据的可靠性与可修复性(只要整个阵列中还有一块磁盘正常运行就能恢复数据),具有极高的数据冗余能力,但是磁盘利用率不高,同时成本也是最高的。由于其数据高可用性,适用于存储重要数据的情形(如服务器、数据库等)
  组成RAID1至少需要2块硬盘,阵列后容量为总硬盘容量的一半(如:2块同规格1T硬盘。组成RAID1后就是1T)
  工作模式如图:raid1

RAID5

  RAID5不对数据进行镜像,而是把数据和与其相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。相比RAID0与RAID1,RAID5算是一种折中的方案,它兼顾了储存性能、数据安全和储存成本,因此是目前运用较多的一种方案。
  组成RAID5至少需要3块硬盘,阵列后容量为2块硬盘的大小。(如:3块同规格1T硬盘。组成RAID5后就是2T),当有N块阵列盘时,用户空间为N-1块盘容量。

RAID10

  RAID10即RAID1+RAID0,先进行镜像(RAID1),再进行条带存放(RAID0)。这种方式导致磁盘利用率和RAID1一样只有50%(即总硬盘容量的一半),成本较高,但是得到的是200%的读写速度以及不错的数据安全性。相比RAID5来说,RAID10拥有更好的数据安全性。
  RAID10需要4+2*N 个硬盘(N >=0),而且只能使用其中一半或更小的磁盘用量, 例如4个 250G的硬盘使用RAID10阵列,实际阵列总容量是500G。
  工作模式如图:raid10

结语

  事实上,在实际应用中,往往要综合考虑成本、性能、安全几个因素,几种级别的RAID并不存在哪个最好哪个最差的概念。如:对于图形工作站、个人电脑等对数据安全要求不高,但是对性能、成本要求较高的情形下,RAID0是最合适的选择;而对于极其重要的数据备份储存,则应使用RAID1等。
  关于故障修复的问题,当阵列卡出现故障(当然,这种情况较少,但不排除可能)磁盘里有保存阵列信息,同型号的卡替换可以重新读取出配置重建,最主要的一点就是切记在拔硬盘的时候将顺序记下来,否则,一旦顺序弄错,数据很有可能无法恢复。
  
2020年3月24日
冗余从好到坏:RAID1 > RAID10 > RAID 5 > RAID0

性能从好到坏:RAID0 > RAID10 > RAID5 > RAID1

成本从高到低:RAID10 > RAID1 > RAID5 > RAID0

单台服务器:很重要盘不多,系统盘,RAID1

数据库服务器:主库:RAID10 从库:RAID5 RAID0(为了维护成本,RAID10)

WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘)

有多台,监控、应用服务器,RAID0 RAID5