RAID是什么
RAID(Redundant Array of Independent Disks)是冗余独立磁盘阵列的缩写
RAID 是一种将多个硬盘组合成一个逻辑单元的技术,磁盘阵列可以提高数据的可靠性和性能。
RAID 通过将数据分散存储在多个硬盘上,提供冗余和容错能力,从而降低单个硬盘故障导致的数据丢失风险。
RAID 的工作原理是将数据分割成多个块,并将这些块分布在多个硬盘上。
这样,如果一个硬盘发生故障,RAID 系统可以使用其他硬盘上的数据来重建丢失的数据块,从而确保数据的完整性和可用性。
RAID的发展背景
早期的计算机存储系统都是机械硬盘,但是机械硬盘有以下几个缺点:
- 速度慢:机械硬盘的读写速度较慢,无法满足高性能计算的需求。
- 易损坏:机械硬盘内部有活动部件,容易受到震动和冲击的影响,导致数据丢失。
这两个问题就导致了数据存储的可靠性和性能问题。
为了提高数据存储的可靠性和性能,于是人们就开始想办法进行改进。
热备和冷备
早期的方案是使用热备和冷备来提高数据存储的可靠性和性能。
热备是指在系统运行时,使用备用硬盘来存储数据,以提高数据的可靠性和性能。
当有一个硬盘发生故障时,系统会自动切换到备用硬盘,从而确保数据的完整性和可用性。
缺点就是备份时会大大降低性能。
冷备是指在系统关闭时,使用备用硬盘来存储数据,以提高数据的可靠性和性能。
当有一个硬盘发生故障时,系统会手动切换到备用硬盘,从而确保数据的完整性和可用性。
缺点是恢复需要关机。
服务器集群
后来的解决方案是使用服务器集群来提高数据存储的可靠性和性能。
多台服务器存储相同的数据,当有一台服务器发生故障时,可以直接切换到其他服务器,从而确保数据的完整性和可用性。
缺点显而易见就是成本高。
RAID的出现
再后来就出现了 RAID 技术。
RAID 0
RAID0 是一种将数据分散存储在多个硬盘上的 RAID 级别。RAID0 将数据分割成多个块,并将这些块分布在多个硬盘上,从而提高了读写性能。
为什么要开始要强调机械硬盘时期呢?从RAID0的工作原理上就能看到,RAID0只是为了提高读写性能,并没有提供冗余和容错能力。
所以 RAID0 的磁盘容量是所有硬盘容量之和,并且理论上会比没有 RAID 的性能好一倍。
RAID0 的缺点是没有冗余和容错能力,如果一个硬盘发生故障,所有数据都会丢失。
RAID 1
RAID1 是一种将数据镜像存储在多个硬盘上的 RAID 级别。RAID1 将数据复制到多个硬盘上,从而提高了数据的可靠性和性能。
RAID1 的磁盘能损坏的数量是所有硬盘数量的一半,理论上 RAID1 的磁盘容量利用率是最低的。
RAID1 的缺点是需要使用两倍的存储空间来存储数据,并且写入性能和最忙的磁盘相当,因为每次写入都需要将数据复制到多个硬盘上。
RAID1 的优点是提供了冗余和容错能力,如果一个硬盘发生故障,数据仍然可以从其他硬盘上恢复。
RAID1 会给所有磁盘写入相同的数据,比如有两个硬盘,RAID1 利用率是50%,如果有4个硬盘,RAID1
利用率是25%。一般企业设置只会配置两个硬盘。毕竟机房会有机房巡检。
RAID 2
不常用。在RAID0的基础上增加了海明纠错码,保证数据的完整性。比如说有7个硬盘,数据分别存储在前4个硬盘上,后3个硬盘存储校验码。
缺点很明显,读性能不如RAID0,而且校验码占用空间远远小于数据空间,磁盘空间浪费
RAID是磁盘级别的配置,剩余空间不可用
优点就是可以使用多个数据盘带宽并且在数据损坏时可以拯救数据。
RAID 3
RAID3 需要提供一个独立的校验盘,数据存储在多个硬盘上,校验码存储在独立的硬盘上,数据按照字节切分。
缺点明显,写数据时,校验盘会成为瓶颈,读数据时,因此存储的是字节,所以需要同时读取多个硬盘。
优点是可以使用多个数据盘带宽并且在数据损坏时可以拯救数据。
可用的磁盘空间是n-1,n是硬盘数量。可以允许坏掉一个硬盘,数据不会丢失。
RAID 4
RAID4 和 RAID3 类似,但是 RAID4 是按块存储数据的,而不是按字节存储数据的。RAID4 需要提供一个独立的校验盘,数据存储在多个硬盘上,校验码存储在独立的硬盘上。
优缺点和 RAID3 一样。
存储结构化数据时,写入RAID3比较好,存储普通文件数据时,RAID4比较好。
RAID 5
常用,和 RAID4类似,但是 RAID5 的校验码存储在所有硬盘上,而不是单独的校验盘。RAID5 需要至少 3 个硬盘。
两个硬盘可以做RAID5吗?
答案是可以的,但是就会发现和RAID1没有区别了,而且还需要计算校验码,性能会下降,因此一般这种情况都会选择RAID1。
因为校验位不存在具体的某一块硬盘上,所以 RAID5 的读取可以使用所有硬盘的带宽,读性能更好。
RAID5 的写性能比 RAID0 略逊色,因为每次写入都需要计算校验码,并且需要将校验码写入到硬盘上。
RAID5 的可用磁盘空间是 n-1,n 是硬盘数量。可以允许坏掉一个硬盘,数据不会丢失。
RAID 6
比 RAID5 更近一步,使用两个独立的校验盘。
具体的分析略。
RAID 10
RAID 7、8、9 都没有就有10了?
其实不是,RAID10 是 RAID1 和 RAID0 的结合体。
RAID10 先将数据镜像存储在多个硬盘上,然后将这些镜像的硬盘组合成一个 RAID0 阵列。
这样就可以同时享受 RAID1 和 RAID0 的优点。
RAID 50
既然有 RAID10,那就有 RAID50。RAID50 是 RAID5 和 RAID0 的结合体。
RAID50 先将数据存储在多个 RAID5 阵列中,然后将这些 RAID5 阵列组合成一个 RAID0 阵列。
这样就可以同时享受 RAID5 和 RAID0 的优点。
RAID 01
和 RAID10 不同,RAID10 是先做 RAID1,然后做 RAID0,而 RAID01 是先做 RAID0,然后做 RAID1。
RAID01 的性能比 RAID10 差,因为 RAID0 的数据是分散存储的,而 RAID1 的数据是镜像存储的。
比如说有 4 块硬盘。
第一种方式,RAID01 中 Disk1 和 Disk2 是 RAID0 阵列,Disk3 和 Disk4 是 RAID0 阵列,然后将这两个 RAID0 阵列组合成一个 RAID1
阵列。
第二种方式,RAID10 中 Disk1 和 Disk2 是 RAID1 阵列,Disk3 和 Disk4 是 RAID1 阵列,然后将这两个 RAID1 阵列组合成一个 RAID0
阵列。
当 Disk1 损坏时,第一种方式就只能使用 Disk3 和 Disk4 的数据,Disk2 的数据无法再使用。
而第二种方式剩下的三块硬盘都可以使用。
然后我们再来看一下 RAID 的工作原理。
RAID 配置
我们通过华为服务器的手册来看看 RAID 的配置。
RAID 硬盘错误解决方案
RAID5的状态
正常状态
所有磁盘运行正常,RAID5阵列处于稳定状态。任何一块磁盘的损坏都不会导致数据丢失,因为奇偶校验信息可以用于恢复数据。
降级状态(Degraded)
当RAID5阵列中有一块磁盘损坏或离线时,阵列进入降级状态。此时,RAID5仍可以继续运行,但性能会下降,因为需要通过奇偶校验信息重建丢失的数据。
如果再有一块磁盘损坏,数据将无法恢复,因此需要尽快更换损坏的磁盘。
重建状态(Rebuilding)
当降级状态下的RAID5阵列中损坏的磁盘被替换后,系统会启动重建过程。重建过程中,RAID控制器会利用剩余磁盘上的数据和奇偶校验信息,重新生成新磁盘上的数据。
重建完成后,RAID5恢复到正常状态。
故障状态(Failed)
如果RAID5阵列中有两块或以上磁盘同时损坏,或者降级状态下未及时更换损坏的磁盘,阵列将进入故障状态。不允许读写。
在这种情况下,数据恢复难度极大,通常需要专业的数据恢复技术。