RAID 降级,分区丢失

RAID 降级,分区丢失

我们在工作中遇到了一个非常奇怪的问题。我们的 Ubuntu 服务器有 6 个驱动器,设置了 RAID1,如下所示:

/dev/md0, consisting of:
/dev/sda1
/dev/sdb1

/dev/md1, consisting of:
/dev/sda2
/dev/sdb2

/dev/md2, consisting of:
/dev/sda3
/dev/sdb3

/dev/md3, consisting of:
/dev/sdc1
/dev/sdd1

/dev/md4, consisting of:
/dev/sde1
/dev/sdf1

如您所见,md0、md1 和 md2 都使用相同的 2 个驱动器(分为 3 个分区)。我还必须注意,这是通过 Ubuntu 软件 raid 而不是硬件 raid 完成的。

今天,/md0RAID1 阵列显示为已降级 - 缺少/dev/sdb1驱动器。但由于/dev/sdb1只是一个分区(并且/dev/sdb2/dev/sdb3工作正常),显然不是驱动器消失了,似乎是分区本身丢失了。

这怎么可能呢?我们该如何解决这个问题呢?

我的 cat 输出/proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md1 : active raid1 sda2[0] sdb2[1]
      24006528 blocks super 1.2 [2/2] [UU]


md2 : active raid1 sda3[0] sdb3[1]
      1441268544 blocks super 1.2 [2/2] [UU]


md0 : active raid1 sda1[0]
      1464710976 blocks super 1.2 [2/1] [U_]


md3 : active raid1 sdd1[1] sdc1[0]
      2930133824 blocks super 1.2 [2/2] [UU]


md4 : active raid1 sdf2[1] sde2[0]
      2929939264 blocks super 1.2 [2/2] [UU]


unused devices: <none>

仅供参考:我尝试了以下操作:

mdadm /dev/md0 --add /dev/sdb1

但出现此错误:

mdadm: add new device failed for /dev/sdb1 as 2: Invalid argument

答案1

首先查看/var/log/messages(即 dmesg)以了解 /dev/sdb1 为何被踢出 RAID。很有可能,读取或写入 /dev/sdb1 时出现错误。

如果您运行smartctl -a /dev/sdb,我怀疑您会发现磁盘的reallocated sectors或值不为零current pending sectors。如果它有一个重新分配的扇区,则磁盘开始降级,如果这是生产服务器,则应立即更换。虽然您可以执行 ,然后mdadm /dev/md0 -r /dev/sdb1删除mdadm /dev/md0 -a /dev/sdb1并重新添加分区,但最好备份数据并立即替换 /dev/sdb。

要更换磁盘,请执行以下操作:

  1. 备份数据并关闭机器。
  2. 记录每个驱动器的序列号(这样您就知道哪一个需要更换)。
  3. 安装新硬盘,启动机器,并验证设备名称是否未更改。如果设备名称已更改,请拿一张纸并记下哪个新设备名称与每个旧名称和序列号相对应。您可能已经知道这一点,但您可以使用它cat /proc/mdstat来查看 RAID 正在使用哪些设备名称,fdisk -lsmartctl -a <device>检查序列号。
  4. 对新磁盘进行适当分区(使用与其他磁盘相同的分区大小)。
  5. 对于每个 RAID,从新驱动器添加相应的分区mdadm <md device> -a <new disk partition> (哦,如果你想问...是的,软件 RAID太棒了。您可以向 Linux 软件 RAID1 添加任意数量的镜像。)
  6. 使用 定期检查重建状态cat /proc/mdstat
  7. 重建完成后,mdadm -f <md device> -f <bad disk's partition>对使用坏磁盘的每个 RAID1 运行“mdadm -f -f”。这会将坏磁盘的分区标记为故障,然后将其从 RAID 中删除。
  8. 关闭机器电源并移除坏磁盘。
  9. 如果您希望以后有多个镜像,请对一个或多个其他磁盘重复步骤 3-6。否则,您必须使用 mdadm 将 RAID 的大小重新调整为 2 个设备(否则每次重新启动时,md 都会警告您阵列已降级)。

注意:如果 SMART 诊断未报告 /dev/sdb 的任何严重错误,则可能只是因为 /dev/sdb1 超出了超时阈值而被踢出 /dev/md0。在这种情况下,/dev/sdb 可能没有问题,但无论如何备份数据并添加一个或多个额外的镜像也无妨。

答案2

首先,备份该分区!

然后,首先从阵列中删除该驱动器,然后重新添加它 - 但是,首先检查 dmesg 以了解其被删除的实际原因......

相关内容