raid10 允许最多坏几块磁盘,如何修复阵列?
RAID 10 是一种结合了 RAID 1(镜像)和 RAID 0(条带化)的阵列模式,适用于高性能和高可靠性的场景。它提供了数据冗余,但允许的磁盘故障数量取决于哪些磁盘发生故障(是否同一镜像组内的磁盘同时故障)。
1. RAID 10 允许的最大磁盘故障数
RAID 10 的结构:
- RAID 10 由多个 RAID 1 镜像组组成,然后对这些镜像组进行 RAID 0 的条带化。
- 每个 RAID 1 镜像组有两块磁盘(一个主盘,一个镜像备盘)。
磁盘故障的限制:
- 同一镜像组:如果 RAID 1 镜像组的两块磁盘同时故障,整个 RAID 10 会崩溃。
- 不同镜像组:如果故障发生在不同的镜像组,每组仅损坏一块磁盘,则 RAID 10 可以继续正常工作。
总结:
- RAID 10 的容错能力 取决于镜像组的数量:
- 每个镜像组允许 1 块磁盘故障。
- 理论上,最多可以损坏 镜像组数量 - 1 的磁盘(只要每组仅有 1 块磁盘损坏)。
- RAID 10 的容错能力 取决于镜像组的数量:
2. RAID 10 阵列修复方法
2.1 准备工作
确认 RAID 类型和状态:
- 查看当前阵列的状态:
bash
复制
cat /proc/mdstat
plaintext
复制
md0 : active raid10 sda1[0] sdb1[1] sdc1[2] sdd1[3]100000 MB (striped)
- 如果有磁盘故障,会显示
(_)
或failed
。
- 如果有磁盘故障,会显示
- 查看当前阵列的状态:
确认故障磁盘:
- 使用
mdadm
查看详细信息:bash
复制
sudo mdadm --detail /dev/md0
plaintext
复制
/dev/md0:Number Major Minor RaidDevice State0 8 1 0 active sync /dev/sda11 8 17 1 active sync /dev/sdb12 8 33 2 faulty /dev/sdc13 8 49 3 active sync /dev/sdd1
faulty
表示故障磁盘。
- 使用
备份数据:
- 在修复前,务必备份重要数据,以防修复过程中的意外情况。
2.2 移除故障磁盘
从阵列中移除故障磁盘:
- 假设故障磁盘为
/dev/sdc1
:bash
复制
sudo mdadm --remove /dev/md0 /dev/sdc1
- 假设故障磁盘为
确认磁盘已移除:
- 再次查看 RAID 状态:
bash
复制
cat /proc/mdstat
- 故障磁盘应已被移除。
- 再次查看 RAID 状态:
2.3 替换故障磁盘
更换物理磁盘:
- 将故障磁盘从服务器中物理移除,并插入新的磁盘。
准备新的磁盘:
确保新磁盘未被分区或包含旧数据:
bash
复制
sudo fdisk /dev/sdc
- 删除所有现有分区。
创建与其他磁盘一致的分区:
bash
复制
sudo fdisk /dev/sdc
- 根据需要创建与
/dev/sda1
等其他磁盘相同的分区。
- 根据需要创建与
同步磁盘分区表(可选):
- 如果原有磁盘分区表一致,可以直接同步分区表到新磁盘:
bash
复制
sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdc
- 如果原有磁盘分区表一致,可以直接同步分区表到新磁盘:
2.4 将新磁盘添加到阵列
添加新磁盘到阵列:
- 将新磁盘(如
/dev/sdc1
)添加回 RAID 10:bash
复制
sudo mdadm --add /dev/md0 /dev/sdc1
- 将新磁盘(如
查看重建进度:
- 阵列会自动开始重建数据,可以通过以下命令查看进度:
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
- 阵列会自动开始重建数据,可以通过以下命令查看进度:
等待重建完成:
- 根据磁盘大小和阵列性能,重建可能需要数小时。
2.5 验证修复结果
检查阵列健康状态:
- 再次查看 RAID 状态,确保所有磁盘正常:
bash
复制
sudo mdadm --detail /dev/md0
plaintext
复制
/dev/md0:Number Major Minor RaidDevice State0 8 1 0 active sync /dev/sda11 8 17 1 active sync /dev/sdb12 8 33 2 active sync /dev/sdc13 8 49 3 active sync /dev/sdd1
- 再次查看 RAID 状态,确保所有磁盘正常:
更新阵列配置文件(可选):
- 更新
/etc/mdadm/mdadm.conf
文件,确保新磁盘配置被保存:bash
复制
sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf
- 更新
3. 注意事项
硬盘损坏的预防措施:
- 定期监控硬盘健康状态:
bash
复制
smartctl -a /dev/sda
- 配置 RAID 状态邮件通知:
bash
复制
sudo apt install mdadm -y sudo mdadm --monitor --scan --daemonise --mail=<your-email>
- 定期监控硬盘健康状态:
RAID 不是备份:
- RAID 提供冗余,但不是备份方案。定期将重要数据备份到远程存储或云端。
更换磁盘时使用相同容量或更大的磁盘:
- 新磁盘的容量必须与其他磁盘一致或更大,否则无法加入阵列。
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 阵列,并确保数据冗余和服务器的正常运行。