RAID 10 是一种结合了 RAID 1(镜像)和 RAID 0(条带化)的阵列模式,适用于高性能和高可靠性的场景。它提供了数据冗余,但允许的磁盘故障数量取决于哪些磁盘发生故障(是否同一镜像组内的磁盘同时故障)。


1. RAID 10 允许的最大磁盘故障数

  1. RAID 10 的结构

    • RAID 10 由多个 RAID 1 镜像组组成,然后对这些镜像组进行 RAID 0 的条带化。
    • 每个 RAID 1 镜像组有两块磁盘(一个主盘,一个镜像备盘)。
  2. 磁盘故障的限制

    • 同一镜像组:如果 RAID 1 镜像组的两块磁盘同时故障,整个 RAID 10 会崩溃。
    • 不同镜像组:如果故障发生在不同的镜像组,每组仅损坏一块磁盘,则 RAID 10 可以继续正常工作。
  3. 总结

    • RAID 10 的容错能力 取决于镜像组的数量
      • 每个镜像组允许 1 块磁盘故障。
      • 理论上,最多可以损坏 镜像组数量 - 1 的磁盘(只要每组仅有 1 块磁盘损坏)。

2. RAID 10 阵列修复方法

2.1 准备工作

  1. 确认 RAID 类型和状态

    • 查看当前阵列的状态:

      bash

      复制

      cat /proc/mdstat
      
      示例输出:

      plaintext

      复制

      md0 : active raid10 sda1[0] sdb1[1] sdc1[2] sdd1[3]
            100000 MB (striped) 
      
      • 如果有磁盘故障,会显示 (_)failed
  2. 确认故障磁盘

    • 使用 mdadm 查看详细信息:

      bash

      复制

      sudo mdadm --detail /dev/md0
      
      输出示例:

      plaintext

      复制

      /dev/md0:
          Number   Major   Minor   RaidDevice State
             0       8        1        0      active sync   /dev/sda1
             1       8       17        1      active sync   /dev/sdb1
             2       8       33        2      faulty        /dev/sdc1
             3       8       49        3      active sync   /dev/sdd1
      
      • faulty 表示故障磁盘。
  3. 备份数据

    • 在修复前,务必备份重要数据,以防修复过程中的意外情况。

2.2 移除故障磁盘

  1. 从阵列中移除故障磁盘

    • 假设故障磁盘为 /dev/sdc1

      bash

      复制

      sudo mdadm --remove /dev/md0 /dev/sdc1
      
  2. 确认磁盘已移除

    • 再次查看 RAID 状态:

      bash

      复制

      cat /proc/mdstat
      
      • 故障磁盘应已被移除。

2.3 替换故障磁盘

  1. 更换物理磁盘

    • 将故障磁盘从服务器中物理移除,并插入新的磁盘。
  2. 准备新的磁盘

    • 确保新磁盘未被分区或包含旧数据:

      bash

      复制

      sudo fdisk /dev/sdc
      
      • 删除所有现有分区。
    • 创建与其他磁盘一致的分区:

      bash

      复制

      sudo fdisk /dev/sdc
      
      • 根据需要创建与 /dev/sda1 等其他磁盘相同的分区。
  3. 同步磁盘分区表(可选):

    • 如果原有磁盘分区表一致,可以直接同步分区表到新磁盘:

      bash

      复制

      sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdc
      

2.4 将新磁盘添加到阵列

  1. 添加新磁盘到阵列

    • 将新磁盘(如 /dev/sdc1)添加回 RAID 10:

      bash

      复制

      sudo mdadm --add /dev/md0 /dev/sdc1
      
  2. 查看重建进度

    • 阵列会自动开始重建数据,可以通过以下命令查看进度:

      bash

      复制

      cat /proc/mdstat
      
      示例输出:

      plaintext

      复制

      md0 : active raid10 sda1[0] sdb1[1] sdc1[2] sdd1[3]
            100000 MB (striped) 
            [==>..................]  recovery = 20.0% (20000/100000) finish=10.0min
      
  3. 等待重建完成

    • 根据磁盘大小和阵列性能,重建可能需要数小时。

2.5 验证修复结果

  1. 检查阵列健康状态

    • 再次查看 RAID 状态,确保所有磁盘正常:

      bash

      复制

      sudo mdadm --detail /dev/md0
      
      输出示例:

      plaintext

      复制

      /dev/md0:
          Number   Major   Minor   RaidDevice State
             0       8        1        0      active sync   /dev/sda1
             1       8       17        1      active sync   /dev/sdb1
             2       8       33        2      active sync   /dev/sdc1
             3       8       49        3      active sync   /dev/sdd1
      
  2. 更新阵列配置文件(可选):

    • 更新 /etc/mdadm/mdadm.conf 文件,确保新磁盘配置被保存:

      bash

      复制

      sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf
      

3. 注意事项

  1. 硬盘损坏的预防措施

    • 定期监控硬盘健康状态:

      bash

      复制

      smartctl -a /dev/sda
      
    • 配置 RAID 状态邮件通知:

      bash

      复制

      sudo apt install mdadm -y
      sudo mdadm --monitor --scan --daemonise --mail=<your-email>
      
  2. RAID 不是备份

    • RAID 提供冗余,但不是备份方案。定期将重要数据备份到远程存储或云端。
  3. 更换磁盘时使用相同容量或更大的磁盘

    • 新磁盘的容量必须与其他磁盘一致或更大,否则无法加入阵列。

4. RAID 10 修复流程总结

步骤 操作命令
确认故障磁盘 sudo mdadm --detail /dev/md0
移除故障磁盘 sudo mdadm --remove /dev/md0 /dev/sdc1
更换物理磁盘 插入新磁盘并分区
添加新磁盘到阵列 sudo mdadm --add /dev/md0 /dev/sdc1
查看重建进度 cat /proc/mdstat
验证修复成功 sudo mdadm --detail /dev/md0
更新配置文件(可选) sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf

通过以上方法,可以安全高效地修复 RAID 10 阵列,并确保数据冗余和服务器的正常运行。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐