CentOS 了解失败的软件 RAID 阵列

CentOS 了解失败的软件 RAID 阵列

今天我收到了主服务器发出的两条通知,通知说 RAID 阵列中的磁盘出现故障。这似乎是我加入公司前几年由一位前员工设置的软件 RAID。

我之前从未在 Linux 上设置或管理过 raid,因此在开始进行任何更改或运行命令之前,我希望更好地了解发生了什么以及如何修复它。

我收到的两条通知是:

在 md 设备 /dev/md/1 上检测到失败事件。

它可能与组件设备 /dev/sda1 相关。

您忠实的,等等。

PS /proc/mdstat 文件当前包含以下内容:

个性:[raid1] md0:活动raid1 sdb2 [1] sda20 480192320块超级1.0 [2/1] [_U]位图:4/4页[16KB],65536KB块

md1:活动 raid1 sdb1[1] sda10 8188864 块超级 1.2 [2/1] [_U]

未使用的设备:

和:

在 md 设备 /dev/md/0 上检测到失败事件。

它可能与组件设备 /dev/sda2 相关。

您忠实的,等等。

PS /proc/mdstat 文件当前包含以下内容:

个性:[raid1] md0:活动raid1 sdb2 [1] sda20 480192320块超级1.0 [2/1] [_U]位图:3/4页[12KB],65536KB块

md1:活动 raid1 sdb1[1] sda1[0] 8188864 块超级 1.2 [2/2] [UU]

未使用的设备:

我知道服务器中有两个可用的物理磁盘,分别为 500gb/465gb。对我来说,这些通知表明一个磁盘是 md0,分为两个分区,另一个磁盘是 md1,也分为两个分区。

是这样吗?或者这实际上表明其中一个物理磁盘发生故障,需要更换?

答案1

对我来说,这些通知表明一个磁盘是 md0,分成两个分区,另一个磁盘是 md1,也分成两个分区。

恰恰相反。物理磁盘为“sda”和“sdb” – RAID 阵列为“md0”和“md1”。

每个磁盘确实被分成两个分区(sda1、sda2、sdb1、sdb2),每对分区上都配置了一个 RAID 阵列。如果你运行,lsblk你可能会看到类似这样的内容:

名称 尺寸 类型
星展银行      466G磁盘
─sda1     8G部分
│ └─md1    8G 阵列1
└─sda2   458G部分
  └─md0  458G 阵列1
安全数据库      466G磁盘
═─sdb1     8G部分
│ └─md1    8G 阵列1
└─sdb2   458G部分
  └─md0  458G 阵列1

所以物理磁盘/dev/sda已发生故障,并且它同时充当 md0 和 md1 阵列的成员。(可能一小部分空间用于“/boot”卷,其余部分用于 rootfs。)

要找出它的物理位置,请使用lsblk -Slsblk -do name,tran,model,serial,wwn

更换磁盘很可能可以通过以下方式实时完成mdadm --manage:(我思考确切的命令取决于您是否首先将新磁盘连接为“sdc”,或者是否直接替换旧磁盘并且它仍然是“sda”......)

答案2

解决这个问题的关键是:

  md1 : active raid1 sdb1[1] sda10 8188864 blocks super 1.2 [2/1] [_U]

这告诉您 md1(代表第二个 raid)应该由 2 个分区组成 - sdb1 和 sda10。由于某种原因,sda1 已从阵列中删除,因此它现在处于降级状态。

sda1 表示操作系统识别的第一个磁盘上的第一个分区。下一步是找出失败的原因,并修复或替换它。

我会运行类似“hdparm -I /dev/SDA”的命令,该命令应该会告诉您磁盘的品牌和型号 - 这样您就知道您正在处理哪个磁盘。然后,我会在日志文件中查找与 /dev/SDA 相关的错误。如果找到这些错误,则可能需要更换磁盘。如果没有找到,则可能是磁盘上表示其属于阵列一部分的签名丢失了。在这种情况下,可以使用 mdadm 命令将其重新添加到阵列中。您还应该调查发生这种情况的原因。

如果磁盘出现故障,您需要 (a) 转储分区信息,(b) 降级 md0 - 即删除 /dev/sda2 (c) 替换 /dev/sda (d) 对新 sda 进行分区,分区大小不小于原始 sda (e) 将这些分区标记为 FD 类型 = raid 分区 (f) 使用 mdadm 读取分区。您可以使用“watch cat /proc/mdstat”来观察重建过程

相关内容