Linux md raid5 - mdadm创建软RAID5(模拟出错和出错恢复)

本文介绍了如何使用mdadm在Linux上创建RAID5,并模拟磁盘故障进行恢复。通过在Ubuntu虚拟机中添加四块硬盘,创建RAID5阵列,然后模拟磁盘损坏,观察阵列自我修复的过程,最后演示了如何移除损坏磁盘并添加新磁盘以恢复阵列。

         最近按教程创建了RAID5,遇到一点小问题,希望记录下来,能对大家有点帮助。

         实验环境

         Ubuntu 16.04.1 + VMware Workstation 12 Player

        实验目的

        使用mdadm创建软raid5,模拟故障测试,了解raid5是怎样工作的。

         首先配置好基础的环境,在虚拟机中添加四块3G的SCSI硬盘。很简单,虚拟机设置中选add即可。

         接着就是管理工具mdadm的下载安装了,Ubuntu使用apt-get命令即可,很多教程使用yum命令,那是针对Redhat、Centos包管理工具。

       环境搭建好后,正式开始创建RAID5啦。

       1 先用 fdisk -l 查看四块磁盘的设备号,分别是/dev/sdb1, /dev/sdc1, /dev/sdd1, /dev/sde1;

       2 对磁盘进行分区 fdisk /dev/sdb1 ,接下来输入n进行分区 输入p选择创建主分区,输入1创建第一个主分区,直接回车选择分区开始柱面(默认从1开始),直接回车选择分区结束柱面(默认最后一个柱面),输入t修改格式

实验原理回顾 1. RAID 技术通过组合多块物理硬盘,实现提升读写速度(分散读写)数据冗余(多副本 / 奇偶校验)的功能,常见级别包括 RAID 0(无冗余,追求速度)、RAID 1(镜像备份,高安全)、RAID 5(奇偶校验,平衡性能与成本)、RAID 10(RAID 1+RAID 0,兼顾速度与安全)。 2. mdadm 命令是 Linux 中管理RAID 的核心工具,支持创建、监控、修复 RAID 阵列,常用参数包括 -C(创建)、-n(指定设备数)、-l(指定 RAID 级别)、-f(模拟设备损坏)、-r(移除设备)、-D(查看详细信息)。 添加虚拟硬盘 1. 关闭 RHEL 8 虚拟机,在 VMware 中进入 “虚拟机设置”→“硬件”→“添加”,选择 “硬盘”,接口类型选择 SCSI 或 SATA,容量默认 20GB,共添加 4 块硬盘(用于后续 RAID 10 部署)。 2. 启动虚拟机,通过 lsblk 或 fdisk -l 命令确认新硬盘已被识别(通常命名为 /dev/sdb、/dev/sdc、/dev/sdd、/dev/sde)。 部署 RAID 10 阵列 1. 使用 mdadm 命令创建 RAID 10 阵列,名称为 /dev/md0: [root@linuxprobe~]# mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde (参数说明:-C 创建-v 显示过程,-n 4 指定 4 块硬盘,-l 10 指定 RAID 10 级别) 2. 等待初始化完成(约 1 分钟),通过 mdadm -Q /dev/md0 查看阵列摘要信息,确认阵列大小(4 块 20GB 硬盘组成 RAID 10 后可用空间约 39.97GB,因 50% 冗余)。 格式化与挂载 RAID 阵列 1. 将 RAID 阵列格式化为 Ext4 文件系统: [root@linuxprobe~]# mkfs.ext4 /dev/md0 2. 创建挂载点并挂载: [root@linuxprobe~]# mkdir /RAID [root@linuxprobe~]# mount /dev/md0 /RAID 3. 通过 df -h 命令验证挂载状态,确认 /dev/md0 已挂载到 /RAID 目录。 RAID 阵列损坏与修复 1. 模拟硬盘损坏:使用 -f 参数标记 /dev/sdb 为故障盘: [root@linuxprobe~]# mdadm /dev/md0 -f /dev/sdb 2. 查看阵列状态:mdadm -D /dev/md0,此时状态会显示为 “clean, degraded”,Failed Devices 为 1。 3. 移除故障盘:[root@linuxprobe~]# mdadm /dev/md0 -r /dev/sdb 4. 更换新硬盘(虚拟机中可重启后重新识别 /dev/sdb),添加新硬盘到阵列: [root@linuxprobe~]# mdadm /dev/md0 -a /dev/sdb 5. 再次查看阵列状态:mdadm -D /dev/md0,可看到 “Rebuild Status” 进度,完成后阵列恢复 “clean” 状态。 部署 RAID 5 + 备份盘 1. 重置虚拟机(避免与 RAID 10 实验冲突),重新添加 4 块硬盘(3 块用于 RAID 5,1 块作为备份盘)。 2. 创建 RAID 5 阵列并指定备份盘: [root@linuxprobe~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde (参数说明:-x 1 指定 1 块备份盘) 3. 查看阵列信息:mdadm -D /dev/md0,确认 Spare Devices 为 1(备份盘处于闲置状态)。 验证 RAID 5 备份盘功能 1. 模拟硬盘故障:[root@linuxprobe~]# mdadm /dev/md0 -f /dev/sdb 2. 立即查看阵列状态:mdadm -D /dev/md0,可观察到备份盘(/dev/sde)自动顶替故障盘,开始数据同步,Spare Devices 变为 0,Active Devices 保持 3。 删除 RAID 阵列 1. 卸载挂载:[root@linuxprobe~]# umount /RAID 2. 标记所有硬盘为故障并移除: [root@linuxprobe~]# mdadm /dev/md0 -f /dev/sdb /dev/sdc /dev/sdd /dev/sde [root@linuxprobe~]# mdadm /dev/md0 -r /dev/sdb /dev/sdc /dev/sdd /dev/sde 3. 停止 RAID 阵列:[root@linuxprobe~]# mdadm --stop /dev/md0 4. 验证移除结果:ls /dev/md0,应提示 “No such file or directory”。 (1)详细实验步骤,包括 RAID 10、RAID 5 + 备份盘的部署命令、输出结果截图; (2)RAID 阵列损坏与修复的过程记录,包含状态变化截图(如 degraded、rebuilding 状态); (3)实验遇到的问题及解决方案(如硬盘识别失败、阵列挂载异常等);
最新发布
12-11
### Raid Level Selecting 在进行RAID配置前,需要根据实际需求选择合适的RAID级别,常见的RAID级别有RAID 0、RAID 1、RAID 5RAID 10等。 - **RAID 0**:提供了最高的读写性能,但没有数据冗余,一旦一块磁盘损坏,所有数据都会丢失。适用于对性能要求极高且对数据安全性要求较低的场景,如视频编辑、游戏服务器等。 - **RAID 1**:通过数据镜像提供了最高的数据安全性,但磁盘利用率只有50%。适用于对数据安全性要求极高且对性能要求不高的场景,如财务数据存储、重要文件备份等。 - **RAID 5**:提供了较好的读写性能数据冗余,最少需要3块磁盘。一块磁盘发生故障时,数据可以通过校验信息恢复。适用于对性能数据安全都有一定要求的场景,如企业级数据库、文件服务器等。 - **RAID 10**:结合了RAID 0RAID 1的优点,提供了高性能高可靠性,但磁盘利用率只有50%。最少需要4块磁盘。适用于对性能数据安全都有较高要求的场景,如大型数据库服务器、在线交易系统等。 示例命令,使用`mdadm`工具创建RAID 5: ```bash # 显示当前磁盘信息,查看可用磁盘设备 fdisk -l ``` 输出示例: ```plaintext Disk /dev/sda: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk label type: gpt Disk identifier: DFAC6589-6F5C-4664-8C3C-62969C5E6666 Device Start End Sectors Size Type /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 1953523711 1952473088 930.9G Linux filesystem ``` ### Disk Initializing 在创建RAID阵列之前,需要对磁盘进行初始化,清除磁盘上的原有数据分区信息。 ```bash # 清除磁盘分区表 wipefs -a /dev/sdb wipefs -a /dev/sdc wipefs -a /dev/sdd ``` 输出示例: ```plaintext /dev/sdb: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54 /dev/sdc: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54 /dev/sdd: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54 ``` ### Array Creating 使用`mdadm`工具创建RAID阵列。 ```bash # 创建RAID 5阵列 mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd ``` 输出示例: ```plaintext mdadm: layout defaults to left-symmetric mdadm: layout defaults to left-symmetric mdadm: chunk size defaults to 512K mdadm: size set to 1953124608K mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. ``` ### Formatting and Mounting 创建RAID阵列后,需要对其进行格式化并挂载到文件系统上。 ```bash # 格式化RAID阵列 mkfs.ext4 /dev/md0 # 创建挂载点 mkdir /mnt/raid5 # 挂载RAID阵列 mount /dev/md0 /mnt/raid5 ``` 输出示例(`mkfs.ext4`): ```plaintext mke2fs 1.44.6 (5-Mar-2019) Creating filesystem with 244140576 4k blocks and 61035520 inodes Filesystem UUID: 4d8d6c8a-7c3a-4c82-9c84-7d8c8a7c3a4c Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848 Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): done Writing superblocks and filesystem accounting information: done ``` ### Failure Simulation and Repairing 模拟磁盘故障并进行修复。 ```bash # 模拟磁盘 /dev/sdb 故障 mdadm /dev/md0 --fail /dev/sdb # 移除故障磁盘 mdadm /dev/md0 --remove /dev/sdb # 添加新磁盘进行修复 mdadm /dev/md0 --add /dev/sde ``` 输出示例(`mdadm /dev/md0 --fail /dev/sdb`): ```plaintext mdadm: set /dev/sdb faulty in /dev/md0 ``` ### 异常处理方案 - **`mdadm`命令执行出错**:检查命令参数是否正确,磁盘设备是否存在,是否有足够的权限执行命令。 - **格式化失败**:检查磁盘设备是否被其他进程占用,磁盘是否存在硬件故障。 - **挂载失败**:检查挂载点是否存在,文件系统类型是否正确,磁盘设备是否可用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值