VMware 下模拟软 RAID 的创建及故障恢复

Author:rab


目录

    • 前言
    • 一、创建 RAID
      • 1.1 环境
      • 1.2 什么是 RAID?
      • 1.3 软 RAID 和硬 RAID
      • 1.4 如何创建软 RAID?
    • 二、故障模拟与数据恢复
      • 2.1 故障模拟
      • 2.2 故障恢复
    • 思考?


前言

一块物理硬盘要投入生产使用,一般会经历一下这些步骤:

  1. 磁盘做 RAID;
  2. RAID 磁盘分区;
  3. 格式化文件系统;
  4. 创建挂载点并挂载使用。

那是不是必须要做 RAID 呢?我们说 RAID 是可选的,它只是一种技术实现,且有不同的 RAID 级别(0/1/5/6/10)。是否要做 RAID 得根据你的实际应用场景来决定,否则的话单盘也是可以作为存储投入生产使用的,只是相对于 DRAI 盘来说,其安全/读写性能不是很高。比如在 Linux 中就支持多种存储配置,包括单磁盘、RAID、LVM(Logical Volume Manager)等。

那如果需要用到 RAID 的话,我们又该怎么做呢?做了 RAID 后是否真的就提升数据存储的安全性了呢?接下来我们详细地看看。

一、创建 RAID

1.1 环境

虚拟环境 虚拟主机 磁盘 备注
VMware® Workstation 16 Pro CentOS 7.9 /dev/sda - 系统盘
/dev/sdb
/dev/sdc
/dev/sdd
/dev/sde
软 RAID 测试

说明:sda 作为系统盘,sdb、sdc、sdd、sde 用于创建 RAID 盘。

1.2 什么是 RAID?

RAID,即 Redundant Array of Independent Disks,是一种将多个硬盘驱动器组合成一个单一存储单元(逻辑上的存储单元)的技术。它的目标是提高数据的可靠性、性能和/或容量。RAID可以在硬件和软件级别实现,不同级别的RAID提供不同的功能和优点。以下是一些常见的 RAID 级别和它们的详细解释:

  • RAID 0:

    • 别名:条带化

    • 数据分布:数据被均匀分散在多个硬盘上。

    • 冗余性:没有冗余性,一个驱动器失效会导致数据丢失。

    • 性能:提高读写性能,因为数据可以同时从多个驱动器读取/写入。

    • 容量:总容量等于所有驱动器的容量之和。

    • 用途:适合需要高性能但不需要冗余备份的应用。

    • 硬盘数:至少需要 2 块(其实 1 块也行,但你觉得还有必要再做 RAID0 吗?此时毫无意义了)。

      VMware 下模拟软 RAID 的创建及故障恢复_第1张图片

  • RAID 1:

    • 别名:镜像

    • 数据分布:数据在两个硬盘上完全相同,每个硬盘都是另一个的镜像。

    • 冗余性:具有高冗余性,一个驱动器失效不会导致数据丢失。

    • 性能:读性能较高,写性能相对较低。

    • 容量:总容量等于一个硬盘的容量,因为数据完全复制到了另一个硬盘上。

    • 用途:用于需要高度冗余和数据可用性的应用,但不关心存储容量利用率。

    • 硬盘数:至少需要 2 块硬盘(因为另一块要作为其备份盘,且磁盘数需为偶数,如:2、4、6、…)。

      VMware 下模拟软 RAID 的创建及故障恢复_第2张图片

  • RAID 5:

    • 数据分布:数据和奇偶校验信息交错存储在多个硬盘上(数据分布式存储在多个盘上,但要留 1 个盘来存储奇偶校验信息,所以说数据和校验信息是交错存储的)。

    • 冗余性:允许一个驱动器失效时,可以通过计算奇偶校验信息来重建数据(但要注意失效的这块盘不能是奇偶校验盘,而且不能允许 2 块盘同时失效,因为 RAID 5 的奇偶校验信息仅能提供一块硬盘的容错能力)。

    • 性能:提供良好的读性能,适中的写性能。

    • 容量:总容量等于(驱动器数量-1)乘以每个驱动器的容量(减 1 的原因是因为奇偶校验盘并不存储应用数据)。

    • 用途:适用于需要一定程度冗余和合理性能的应用。

    • 硬盘数:至少需要 3 块硬盘(因为要留 1 块来存储奇偶校验数据,因此这块盘除了存储奇偶校验数据外不存其他应用数据)。

      VMware 下模拟软 RAID 的创建及故障恢复_第3张图片

    注意:要搞清楚奇偶校验大体机制,就是每次写入数据到 RAID 盘都会进行一次奇偶校验计算(生成的奇偶校验块通常被标记为 P 和 Q 或者有时称为 P1 和 P2),并将每次的校验数据存储在一个校验盘中。

  • RAID 6:

    • 数据分布:数据和两个奇偶校验信息交错存储在多个硬盘上(数据分布式存储在多个盘上,但要留 2 个盘来存储奇偶校验信息)。

    • 冗余性:允许两个驱动器失效时,仍能恢复数据(根据一块校验盘只能容错一块数据盘的原则,那两块校验盘自然就能允许两块数据盘同时失效)。

    • 性能:与 RAID 5 相似,但写性能较差(相对 5 来说较差,因为在写入数据时,需要进行两次奇偶校验计算,这会增加写操作的计算负担)。

    • 容量:总容量等于(驱动器数量-2)乘以每个驱动器的容量。

    • 用途:适用于需要更高级别冗余和数据可靠性的应用。

    • 硬盘数:至少需要 3 块硬盘(因为要留 2 块来存储奇偶校验数据,因此这 2 块盘除了存储奇偶校验数据外不存其他应用数据)。

      VMware 下模拟软 RAID 的创建及故障恢复_第4张图片

    注意:要搞清楚奇偶校验大体机制,就是每次写入数据到 RAID 盘都会进行两次奇偶校验计算(即每次计算都会产生两个奇偶校验数据),并将每次的两个校验数据存储在两个校验盘中。

  • RAID 10(RAID 1+0):

    • 数据分布:数据被分为多个组,每个组中的数据是镜像的(说白了就是先做 RAID 1,再在 RAID 1 的基础上做 RAID 0)。

    • 冗余性:具有高冗余性,可以容忍多个驱动器的故障,允许 1 块或多块磁盘失效(虽然 RAID 10可以容忍多个硬盘失效,但前提是这些失效不影响同一数据镜像组内的多个硬盘。例如,如果RAID 10有4块硬盘,分为两个数据镜像组(每个组有2块硬盘),那么可以容忍同时失效的两块硬盘,一块在每个数据镜像组中。这是因为在一个数据镜像组中的两块硬盘都存储相同的数据。)。

    • 性能:提供很好的读写性能,尤其适合高性能应用。

    • 容量:总容量等于驱动器数量的一半。

    • 用途:适用于需要高性能和高冗余性的应用。

    • 硬盘数:至少需要 4 块硬盘

      VMware 下模拟软 RAID 的创建及故障恢复_第5张图片

1.3 软 RAID 和硬 RAID

软RAID和硬RAID是两种不同类型的RAID实现方式,它们在硬件和软件层面的工作原理和特点有所不同。

1、软 RAID

  • 工作原理:软RAID是在操作系统级别实现的,依赖于主机的 CPU 和内存来执行 RAID 操作。操作系统通过软件驱动程序来管理 RAID配置,控制数据的读取、写入和冗余计算。本次我们就是在 CentOS 7.9 操作系统上通过软件驱动程序来创建 RAID 并应用 RAID。

  • 硬件要求:不需要专门的硬件 RAID 控制器,只需要支持 RAID 的操作系统和兼容硬盘。适用于普通计算机和服务器,不需要专门的RAID卡。

  • 性能:由于依赖主机的 CPU 和内存资源,软 RAID 可能会占用一部分计算资源,对系统性能有一定影响,特别是在高负载情况下。性能通常比硬 RAID 较低,特别是对于 RAID 5 和 RAID 6。

  • 灵活性:相对较灵活,可以根据需要更改 RAID 配置。可以在不同硬件平台上迁移,只要支持相同的软件 RAID 类型。

  • 成本:通常比硬 RAID 便宜,因为不需要额外的硬件 RAID 控制器。

2、硬 RAID

  • 工作原理:硬 RAID 使用专用的硬件 RAID 控制器卡来管理 RAID 配置。控制器卡处理数据的读取、写入和冗余计算,减轻了主机 CPU 的负担。

  • 硬件要求:需要专门的硬件 RAID 控制器卡,这通常是一块独立的 PCIe 卡或嵌入式在服务器主板上的。控制器卡通常具有缓存、RAID 级别选择和热插拔支持等功能。

  • 性能:性能通常比软 RAID 更高,因为专用控制器卡可以有效地处理 RAID 操作,减少了主机 CPU 的负担。适用于高性能要求的服务器环境。

  • 灵活性:对 RAID 配置的更改通常需要更换控制器卡或重新配置硬件 RAID 设置,因此相对不太灵活。不容易在不同硬件平台上迁移。

  • 成本:硬 RAID 通常更昂贵,因为它需要额外的硬件 RAID 控制器。

1.4 如何创建软 RAID?

1、添加 4 块测试硬盘

VMware 下模拟软 RAID 的创建及故障恢复_第6张图片

2、启动虚拟主机

3、查看是否正常显示磁盘设备

lsblk

VMware 下模拟软 RAID 的创建及故障恢复_第7张图片

4、安装 RAID 阵列的命令行工具

yum install -y mdadm

说明:mdadm 是用于管理 Linux 软件 RAID 阵列的命令行工具。它允许你创建、配置、监控和维护软件RAID阵列。软件RAID通过使用Linux内核中的软件驱动程序来实现磁盘冗余和性能提升,而不需要专用的RAID控制器硬件。

5、开始创建 RAID

mdadm --create --verbose /dev/md6 --level=6 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde

# 参数说明:
# --create:告诉mdadm你要创建一个新的RAID阵列
# --verbose:显示创建的详细过程信息
# /dev/md0:自定义磁盘阵列名
# --level=6:指定RAID级别。在此示例中,我们使用RAID 6
# --raid-devices=4:指定参与RAID阵列的硬盘数量。在此示例中,有4块硬盘,后面跟上具体的磁盘设备。

VMware 下模拟软 RAID 的创建及故障恢复_第8张图片

查看创建的 RAID 信息,及输出的字段解释。

mdadm -D /dev/md6

VMware 下模拟软 RAID 的创建及故障恢复_第9张图片

  • /dev/md6:这是软件 RAID 阵列的设备名称,即你要查看详细信息的 RAID 阵列的设备路径。

  • Version:RAID 阵列的版本号。表示使用的 RAID 元数据格式版本。

  • Creation Time:RAID 阵列创建的时间戳,以年-月-日 小时:分钟:秒的格式显示。

  • Raid Level:RAID 级别,例如 RAID 0、RAID 1、RAID 5 等,本案例为 RAID 6。

  • Raid Devices:参与 RAID 阵列的硬盘数量。

  • Total Devices:总共的设备数量,包括正常工作的设备和故障设备。

  • Active Devices:当前活动的设备数量,即正常工作的设备数量。

  • Working Devices:与 Active Devices 相同,表示当前正常工作的设备数量。

  • Failed Devices:当前失败的设备数量,这些设备可能需要被替换。

  • Spare Devices:备用设备的数量,这些设备可以用来替代故障的设备(我们并没有设置预备盘)。

  • UUID:RAID 阵列的唯一标识符,可用于识别阵列。

  • Array Size:RAID 阵列的总容量(大约 10G)。

  • Used Dev Size:用于 RAID 阵列的每个设备的大小(大约 5G)。

  • Super Offset:超级块偏移量,表示超级块在RAID阵列中的存储位置。

  • State:RAID阵列的当前状态,如"clean"(正常)、“degraded”(降级)等。

  • Active State:活动状态,用于指示RAID阵列的活动情况。

  • Consistency Policy:一致性策略,表示 RAID 阵列的一致性检查策略。

  • Events:事件计数,用于跟踪RAID阵列的事件。

复合我们上面提到的容量计算公式(驱动器数量-2 乘以每个驱动器的容量),至此,软 RAID 创建完成!

6、分区(可选)

我这里为了实验就不分区了。

7、格式化文件系统

mkfs.xfs /dev/md6

VMware 下模拟软 RAID 的创建及故障恢复_第10张图片

8、创建挂载点并挂载使用

查看 UUID

image-20231009232645646

挂载使用

mkdir -p /opt/raidmd6
echo 'UUID=9b964df3-965b-4a5e-bc67-93570e93b1af /opt/raidmd6 xfs defaults 0 0' >> /etc/fstab

VMware 下模拟软 RAID 的创建及故障恢复_第11张图片

使挂载生效

mount -a

验证是否挂载成功

df -Th

VMware 下模拟软 RAID 的创建及故障恢复_第12张图片

二、故障模拟与数据恢复

2.1 故障模拟

1、创建测试数据

touch test{1..15}.txt

VMware 下模拟软 RAID 的创建及故障恢复_第13张图片

2、移除磁盘,模拟磁盘损坏

这里模拟 RAID 6 阵列中的 /dev/sdd 磁盘损坏,数据不丢失的情况。其他 RAID 级别大家可以去尝试,我这里不再演示。

mdadm /dev/md6 -f /dev/sdd   # 通过命令来模拟即可

# -f:这是一个选项,表示 "fail"(失败)。它告诉 mdadm 命令要执行的操作是标记一个磁盘为失败状态,通常因为该磁盘出现了故障。
# /dev/sdd:这是要标记为失败的磁盘的设备名称。在这个例子中,是 /dev/sdd。

image-20231009234248871

然后查看 RAID 6 阵列状态

mdadm -D /dev/md6

VMware 下模拟软 RAID 的创建及故障恢复_第14张图片

3、查看挂载点的数据是还否存在

如下图,没问题。

VMware 下模拟软 RAID 的创建及故障恢复_第15张图片

2.2 故障恢复

所谓的故障恢复就是更换一块新的磁盘,会自动进行恢复

1、取消挂载

umount /opt/raidmd6

2、重新添加磁盘到 RAID 6 阵列

mdadm /dev/md6 -a /dev/sdd

image-20231009235735598

3、查看恢复进度

mdadm -D /dev/md6

VMware 下模拟软 RAID 的创建及故障恢复_第16张图片

4、验证是否修复完成

mdadm -D /dev/md6

VMware 下模拟软 RAID 的创建及故障恢复_第17张图片

5、修复完毕后再次重新挂载

mount -a

6、验证数据完整性

也是没问题的

VMware 下模拟软 RAID 的创建及故障恢复_第18张图片

至此,软 RAID 的创建、故障恢复就实验完成了!希望看完该文章后,你能整体了解现实中是如何组建的软 RAID 磁盘阵列的。

思考?

RAID 5 如果 1 块盘失效了,而失效的恰好是校验盘,那再次存储数据的时候还会进行数据校验计算产生校验数据吗?或者换新盘后会不会重建校验数据?

答案:

如果在 RAID 5 中的一块硬盘失效,而恰好是存储校验信息的那块硬盘失效,数据恢复将会受到限制,因为校验信息不再可用。在这种情况下,RAID 5 可以继续正常运行,但无法自动进行数据恢复或校验。

此时 RAID 5 的状态会变为"Degraded"(降级),这表示阵列处于一种故障状态。系统管理员应该立即采取措施来替换故障的硬盘,以恢复 RAID 5 的完整性和性能。一旦新的硬盘安装并添加到 RAID 5 阵列中,RAID 控制器将重新构建丢失的校验信息,这是一个计算密集型过程,涉及对其他硬盘上的数据块进行异或(XOR)运算。一旦校验信息被重新生成,RAID 5 阵列将再次具有完整的数据冗余和故障容忍性。

需要注意的是,在替换失效硬盘并进行重建期间,RAID 5 性能可能会受到影响,因为重建操作会占用一定的系统资源和时间。因此,在发生硬盘故障后,尽早替换故障硬盘是重要的,以最小化对 RAID 性能的潜在影响。

—END

你可能感兴趣的:(Linux,综合,linux,RAID)