一、RAID

数据一直是个人、团队、公司当代信息世界中最重要的隐私物品。而存放数据的物理介质就是硬盘。但是机械硬盘在进行持续、大量的IO操作的同时,损坏几率也大幅增加,从而导致重要数据丢失的几率也随之增加。为了避免硬盘损坏而导致数据丢失的事件发生,目前不能仅仅靠降低硬盘的损坏几率来避免。于是诞生了RAID技术!

RAID(redundant array of independent disks,独立冗余磁盘阵列),RAID技术通过把多个硬盘设备组合成一个容量更大、安全性更高的磁盘阵列,并将数据切割成多个区段后分别存放在多个不同的物理硬盘设备上,然后利用分散读写技术来提升RAID整体的性能,同时把多个重要数据的备份同步到不同的物理硬盘设备上,从而起到了很好的数据冗余备份效果。防止单个或部分硬盘损坏带来的数据丢失问题。问题是RAID提高了成本的支出,RAID最初设计初衷是减少因为硬盘数量的额外支出,但是硬盘相比较于数据的价值来说,大多数企业是看重的是RAID技术带来的优点:降低硬盘设备损坏后丢失数据的几率、提升硬盘读写速度。

需求决定功能,对RAID来说也是如此,需要不同的功能,则RAID就有不同的组合方案,常用的组合有RAID0、RAID1、RAID5、RAID10 。

同时RAID分为两种:软件RAID硬件RAID。区别只是性能上差异大,技术原理基本相同

在了解RAID组合之前,首先了解两个概念吧!

  • 数据可用性:硬盘出现损坏,数据未备份而丢失
  • 硬盘利用率:使用硬盘空间存储重复或者无用的数据

tips:在下面的描述中,磁盘和硬盘的概念是相同的!RAID和磁盘阵列的概念也是相同的,所以注意文章中的措辞!

RAID 0(提升读写速率)

组合方式:条带卷存储; 将多块硬盘通过硬件/软件串联在一起
读写方式:数据依次读/写入disk0和disk1

L1.png

优点:提升硬盘读写速率,读写速率为单个磁盘的N倍(N为组成RAID0的磁盘个数)
缺点:不具备数据备份和错误恢复能力,数据可用性低

RAID 1(提升数据可用性)

组合方式:镜像卷存储;将两块以上的硬盘进行绑定
读写方式:数据被同时存储在disk0和disk1,一份数据写入两个硬盘

L2.png

优点:数据可用性高
缺点:磁盘利用率低;利用率为1/N(N为组成RAID1的磁盘个数)

RAID 3

组合方式:条带卷存储;将数据保存在不同硬盘上并且进行奇偶校验信息
原理:RAID 3中有一个硬盘专门负责保存校验数据,如果出现一个未保存校验数据的硬盘出现损坏时,可以使用新硬盘替换,然后通过校验数据将数据恢复到新硬盘中,达到数据一致的目的
读写方式:其中三个硬盘以RAID0方式读写,单独一个硬盘保存校验信息

L3.png

优点:在RAID0和RAID1基础上改进

  • RAID0方式读写,提升了读写速率
  • 奇偶校验,保障了数据安全性
  • 磁盘利用率:(N-1)/N*100%

缺点:保存校验数据的硬盘损坏,则出现数据丢失

RAID 5

组合方式:条带卷存储;将数据保存在不同硬盘上并且进行奇偶校验信息
原理:在RAID3上进行改进,将奇偶校验信息分别存储到各个磁盘。RAID5中没有备份硬盘中的真实数据信息,而是当硬盘出现损坏后,通过奇偶校验信息来重建损坏的数据。
读写方式:依次写入

L4.png

优点:很好的兼顾了读写速率和备份,所以该方案应用十分广泛
缺点:最少三块硬盘,且数据完全恢复前的前提是最多一块硬盘损坏

RAID 6

组合方式:在RAID 5基础上,多增加了一个校验信息块
原理:两个校验信息块,并且采用了两种不同的校验算法,使得数据可用性更高

L5.png

优点:支持两块硬盘同时损坏,数据可用性更高,应用广泛

RAID 10

组合方式:RAID 1 + RAID 0组合方案,先实现镜像卷RAID 1,再实现条带卷RAID 0

L6.png

优点

  • 读写性能高于RAID 01
  • 故障率低于RAID 01

RAID 01

组合方式:RAID 0 + RAID 1组合方案,先实现条带卷RAID 0,再实现镜像卷RAID 1

L7.png

Tips:对于服务器而言,尽量使用硬件RAID卡,不推荐使用软件RAID

二、RAID实践

在部署RAID之前,首先虚拟机中得有硬盘,先关闭虚拟机(不关闭虚拟机会因为计算机架构的不同而导致虚拟机系统无法识别添加的硬盘设备),然后增加4块硬盘来制作一个RAID 10磁盘阵列。注意我们使用的是软RAID,因为硬件RAID需要硬件,所以部署硬件RAID不现实!

mdadm命令用于管理linux系统中的软件RAID磁盘阵列。

格式:mdadm [模式] <RAID设备名> [选项] [成员设备名]

R1.png

创建RAID

如果想要使用RAID,首先就得学会创建、格式化文件系统、挂载这些技能。

  1. 创建RAID
    在创建之前,需要先在虚拟机设置中,添加4块硬盘,用于组建RAID 10.

R2.png

mdadm -Cv /dev/md10 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde

参数解析:
-Cv :创建RAID名称为/dev/md10,并显示过程
-a yes :代表自动创建设备文件
-n 4:代表使用4块硬盘来部署该RAID磁盘阵列
-l 10:代表RAID的组合方案,例如RAID 10,这里就是-l 10
/dev/sdb /dev/sdc /dev/sdd /dev/sde:四个硬盘设备名称

R3.png

  1. 格式化文件系统
    RAID已经创建完成,但是仍然不能使用,其实不管是RAID还是正常的硬盘,都需要将其格式化文件系统,在linux中格式化成ext4较为常见。
mkfs.ext4 /dev/md10

R4.png

  1. 挂载文件系统
    RAID已经被格式化成ext4文件系统,和windows不同,不管是U盘、移动硬盘,格式化完文件系统后,直接插入USB接口就可以访问了。但是linux上,需要多一步,插入USB接口后,需要先了解该U盘在linux系统中显示的设备名称,然后将其挂载到一个本地目录中,才能使用!
#创建挂载目录(也称挂载点)
mkdir RAID10
#挂载到挂载点
mount /dev/md10 /RAID10
#查看已挂载的文件系统的情况
df -h

R5.png

  1. 查看RAID详细信息
    在挂载完后,我们可以使用mdadm命令来查看信息,查看详细信息时,需要加上-D参数
#查看/dev/md10磁盘阵列的详细信息
mdadm -D /dev/md10

R6.png

  1. 挂载信息永久生效(可配置)
    该步骤可选,因为当系统工作时,挂载完RAID后,会一直生效,但是一旦系统停止工作,那么下次使用df -h查看已挂载的文件系统时,不会出现RAID磁盘阵列的情况。所以,我们需要将一些命令永久写入到配置文件/etc/fstab中。
echo “/dev/md10 /RAID10 ext4 defaults 0 0” >> /etc/fstab

tips:注意该配置文件(即/etc/fstab)为只读属性, 所以修改前需要执行mount -n -o remount,rw / 命令来更改为读写属性

RAID故障修复

由于我们使用的软件RAID,所以在模拟RAID中的某个磁盘损坏也异常简单。下面模拟RAID 10中的/dev/sdb设备损坏。

  1. 模拟磁盘损坏
    使用mdadm命令来模拟磁盘/dev/sdb损坏
mdadm /dev/md10 -f /dev/sdb
  1. 查看RAID状态信息
mdadm -D /dev/md10

R7.png

  1. 虚拟机中添加新硬盘

R8.png

  1. 新硬盘加入到RAID中
#首先取消挂载文件系统
umount RAID10/
#识别新设备名
mdadm /dev/md10 -a /dev/sdf
#查看RAID状态信息
mdadm -D /dev/md10
#重新挂载文件系统
mount /dev/md10 RAID10/

R9.png

R10.png

备份盘

RAID 10磁盘阵列中最多允许50%的硬盘设备损坏,但是存在一种极端情况,即同一个RAID 1磁盘阵列中的硬盘设备如果全部损坏,也会导致数据丢失。如何防止RAID 1中的两块磁盘同时损坏而导致数据丢失呢?

使用RAID备份盘技术来预防此类事故发生。该技术的核心理念就是准备一块足够大的硬盘,这块硬盘平时处于闲置状态,一旦RAID磁盘阵列中有硬盘出现损坏后,则会立马顶替上去。

R11.png

  1. 创建RAID
#创建RAID 10
mdadm -Cv /dev/md10 -n 4 -l 10 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf 
参数解析:
-x:表示有几块备份盘,后跟数量

Tips:这里的设备名需要加上备份盘的设备名
#查看RAID状态信息
mdadm -D /dev/md10

R12.png

R13.png

  1. 格式化文件系统
#格式化文件系统
mkfs.ext4 /dev/md10
#创建挂载点
mkdir RAID10
#挂载文件系统到挂载点
mount /dev/md10 RAID10/
#永久写入配置文件
echo "/dev/md10 /RAID10 ext4 defaults 0 0" >> /etc/fstab

R14.png

R15.png

  1. 模拟磁盘损坏
    仍然是模拟/dev/sdb磁盘损坏,查看RAID中的备份盘状态信息

R16.png


保持一个积极向上的良好心态,分享网络技术!