# 美国Linux服务器RAID 故障恢复和重建数据的办法

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/2202.html | 发布：2021-11-24 | 更新：2021-11-24 | 分类：服务器vps推荐

[美国Linux服务器](https://www.mfisp.com/shop/usidc)RAID故障恢复和重建数据的办法就是今天小编将介绍的内容，本文主要讲解当[美国Linux服务器](https://www.mfisp.com/shop/usidc)RAID磁盘阵列发生故障后，该如何重建RAID 阵列并且不会丢失数据。下面介绍的操作办法仅考虑美国Linux服务器RAID 1 的配置， 但其方法和概念适用于所有情况。

 

**1****、RAID 测试方案**

 

第一步需要确保[美国Linux服务器](https://www.mfisp.com/shop/usidc)已经配置好了 RAID 1 阵列。此外如果 SELinux 设置为 enforcing 模式时，需要将相应的标签添加到挂载 RAID 设备的目录中。否则当试图挂载时会碰到警告信息，那么就需要通过以下命令来解决:# restorecon -R /mnt/raid1。

 

**2****、配置 RAID 监控**

 

[美国Linux服务器](https://www.mfisp.com/shop/usidc)存储设备损坏的原因有很多，尽管固态硬盘大大减少了这种情况发生的可能性，但也有一定的概率会发生问题，需要准备好替换发生故障的部分，并确保数据的可用性和完整性。

 

首先建议的是，虽然可以通过查看 /proc/mdstat 来检查[美国Linux服务器](https://www.mfisp.com/shop/usidc) RAID 的状态，但有一个更好和更节省时间的方法，就是使用监控 + 扫描模式运行 mdadm，它可以将警报通过电子邮件发送到预定义的收件人。

 

设置操作，在 /etc/mdadm.conf 添加以下行：

 

MAILADDR user@<domain or localhost>

 

要让 mdadm 运行在监控 + 扫描模式中，以 root 用户添加以下 crontab 条目：

 

@reboot /sbin/mdadm --monitor --scan –oneshot

 

默认情况下，mdadm 每隔60秒会检查 RAID 阵列，如果发现问题将发出警报，可以通过添加 --delay 选项到crontab 条目上面，后面跟上秒数，来修改默认行为，例如添加--delay 1800，则意味着间隔30分钟。

 

最后需要确保已经安装了一个邮件用户代理MUA），如mutt或者mailx，否则将不会收到任何警报。一般[美国Linux服务器](https://www.mfisp.com/shop/usidc)系统设置完毕在一分钟内就会看到 mdadm 发送的警报。

 

**3****、模拟和更换发生故障的 RAID 存储设备**

 

为了给[美国Linux服务器](https://www.mfisp.com/shop/usidc)RAID 阵列中的存储设备模拟一个故障，下面将使用 --manage 和 --set-faulty 选项，如下所示：

 

# mdadm --manage --set-faulty /dev/md0 /dev/sdc1

 

这将导致 /dev/sdc1 被标记为 faulty

 

更重要的是看看是不是收到了同样的警报邮件，在这种情况下，需要从软件 RAID 阵列中删除该设备：

 

# mdadm /dev/md0 --remove /dev/sdc1

 

然后可以直接从机器中取出，并将其使用备用设备来取代，/dev/sdd 中类型为 fd 的分区是以前创建的：

 

# mdadm --manage /dev/md0 --add /dev/sdd1

 

幸运的是该系统会使用刚才添加的磁盘自动重建阵列，可以通过标记 /dev/sdb1 为 faulty 来进行测试，从阵列中取出后，并确认 tecmint.txt 文件仍然在 /mnt/raid1 是可访问的：

 

# mdadm --detail /dev/md0

 

# mount | grep raid1

 

# ls -l /mnt/raid1 | grep tecmint

 

# cat /mnt/raid1/tecmint.txt

 

这样添加 /dev/sdd1 到阵列中来替代 /dev/sdc1，数据的重建是系统自动完成的，不需要干预。

 

还有一个备用设备可以操作，这样更换故障的设备就可以在瞬间完成了。要做到这一点，要先重新添加 /dev/sdb1 和 /dev/sdc1：

 

1）# mdadm --manage /dev/md0 --add /dev/sdb1

 

2）# mdadm --manage /dev/md0 --add /dev/sdc1

 

**4****、从冗余丢失中恢复数据**

 

如前所述，当一[美国Linux服务器](https://www.mfisp.com/shop/usidc)磁盘发生故障时 mdadm 将自动重建数据。如果是阵列中的2个磁盘都故障的情况，通过标记 /dev/sdb1 和 /dev/sdd1 为 faulty：

 

1）# umount /mnt/raid1

 

2）# mdadm --manage --set-faulty /dev/md0 /dev/sdb1

 

3）# mdadm --stop /dev/md0

 

4）# mdadm --manage --set-faulty /dev/md0 /dev/sdd1

 

如果此时尝试以同样的方式重新创建阵列就，或使用 --assume-clean 选项，可能会导致[美国Linux服务器](https://www.mfisp.com/shop/usidc)数据丢失，因此建议不要使用。

 

可以试着从 /dev/sdb1 恢复数据，例如，在一个类似的磁盘分区/dev/sde1上使用 ddrescue，注意这需要执行前在/dev/sde 上创建一个 fd 类型的分区：

 

# ddrescue -r 2 /dev/sdb1 /dev/sde1

 

到现在为止还没有触及的 /dev/sdb 和 /dev/sdd，它们的分区是 RAID 阵列的一部分。现在使用 /dev/sde1 和 /dev/sdf1 来重建阵列：

 

# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[e-f]1

 

注意在真实的情况下，需要使用与原来的阵列中相同的设备名称，即设备失效后替换的[美国Linux服务器](https://www.mfisp.com/shop/usidc)磁盘的名称应该是 /dev/sdb1 和 /dev/sdc1。

 

在本文中小编是选择了使用额外的设备来重新创建全新的磁盘阵列，是为了避免与原来的故障磁盘混淆。当被问及是否继续写入阵列时，键入 Y，然后按 Enter键，阵列被启动，也可以查看它的进展：

 

# watch -n 1 cat /proc/mdstat

 

当这个过程完成后就能够重新访问[美国Linux服务器](https://www.mfisp.com/shop/usidc) RAID 的数据了，最后再进行确认一下RAID数据。还有一点需要记住，该技术是一种存储解决方案，不能取代[美国Linux服务器](https://www.mfisp.com/shop/usidc)数据备份。

   

[梦飞科技](https://www.mfisp.com)已与全球多个国家的顶级数据中心达成战略合作关系，为互联网外贸行业、金融行业、IOT行业、游戏行业、直播行业、电商行业等企业客户等提供一站式安全解决方案。持续关注[梦飞科技官网](https://www.mfisp.com)，获取更多IDC资讯！

  

![美国Linux服务器RAID 故障恢复和重建数据的办法](https://www.mfisp.com/wp-content/uploads/2021/11/1391acb69f19710_1_post.webp)

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
