在阅读过 RAID 系列 前面的文章后你已经对 RAID 比较熟悉了。回顾前面几个软件 RAID 的配置,我们对每一个都做了详细的解释,使用哪一个取决与你的具体情况。
在 Linux 下使用 RAID(七):在 RAID 中扩展现有的 RAID 阵列和删除故障的磁盘
恢复并重建故障的软件 RAID - 第8部分
在本文中,我们将讨论当一个磁盘发生故障时如何重建软件 RAID 阵列并且不会丢失数据。为方便起见,我们仅考虑RAID 1 的配置 - 但其方法和概念适用于所有情况。
RAID 测试方案在进一步讨论之前,请确保你已经配置好了 RAID 1 阵列,可以按照本系列第3部分提供的方法:在 Linux 中如何创建 RAID 1(镜像)。
在目前的情况下,仅有的变化是:
使用不同版本 CentOS(v7),而不是前面文章中的(v6.5)。
磁盘容量发生改变, /dev/sdb 和 /dev/sdc(各8GB)。
此外,如果 SELinux 设置为 enforcing 模式,你需要将相应的标签添加到挂载 RAID 设备的目录中。否则,当你试图挂载时,你会碰到这样的警告信息:
启用 SELinux 时 RAID 挂载错误
通过以下命令来解决:
# restorecon -R /mnt/raid1
配置 RAID 监控存储设备损坏的原因很多(尽管固态硬盘大大减少了这种情况发生的可能性),但不管是什么原因,可以肯定问题随时可能发生,你需要准备好替换发生故障的部分,并确保数据的可用性和完整性。
首先建议是。虽然你可以查看 /proc/mdstat 来检查 RAID 的状态,但有一个更好的和节省时间的方法,使用监控 + 扫描模式运行 mdadm,它将警报通过电子邮件发送到一个预定义的收件人。
要这样设置,在 /etc/mdadm.conf 添加以下行:
MAILADDR user@<domain or localhost>
我自己的设置如下:
MAILADDR gacanepa@localhost
监控 RAID 并使用电子邮件进行报警
要让 mdadm 运行在监控 + 扫描模式中,以 root 用户添加以下 crontab 条目:
@reboot/sbin/mdadm--monitor --scan --oneshot
默认情况下,mdadm 每隔60秒会检查 RAID 阵列,如果发现问题将发出警报。你可以通过添加 --delay 选项到crontab 条目上面,后面跟上秒数,来修改默认行为(例如,--delay 1800意味着30分钟)。
最后,确保你已经安装了一个邮件用户代理(MUA),如mutt 或 mailx。否则,你将不会收到任何警报。
在一分钟内,我们就会看到 mdadm 发送的警报。
模拟和更换发生故障的 RAID 存储设备为了给 RAID 阵列中的存储设备模拟一个故障,我们将使用 --manage 和 --set-faulty 选项,如下所示:
#mdadm--manage --set-faulty /dev/md0 /dev/sdc1
这将导致 /dev/sdc1 被标记为 faulty,我们可以在 /proc/mdstat 看到:
在 RAID 存储设备上模拟问题
更重要的是,让我们看看是不是收到了同样的警报邮件:
RAID 设备故障时发送邮件警报
在这种情况下,你需要从软件 RAID 阵列中删除该设备:
#mdadm/dev/md0 --remove /dev/sdc1
然后,你可以直接从机器中取出,并将其使用备用设备来取代(/dev/sdd 中类型为 fd 的分区是以前创建的):