如何安全地将丢失的分区添加到现有的 RAID-1 设置中?

如何安全地将丢失的分区添加到现有的 RAID-1 设置中?

我的服务器设置了 RAID-1,几天前一个驱动器出现故障。我更换了它并将其重新添加到阵列中。问题是 3TB 驱动器有 2 个分区:

root@s01 [~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_server01-LogVol01
                      2.7T  419G  2.2T  17% /
tmpfs                 7.8G     0  7.8G   0% /dev/shm
/dev/md0              477M  149M  303M  33% /boot
/dev/md2               32G  6.5G   24G  22% /mysql
/usr/tmpDSK           4.0G  223M  3.6G   6% /tmp
root@s01 [~]#

因此基本上是 2.7TB /、7.8GBtmpfs和 477MB boot

因此和md0md1在同一个驱动器上。然后使用以下方法重新添加发生故障的驱动器:mdadm --manage /dev/md1 --add /dev/sdc2

现在您可以看到的问题是md1已同步但md0被遗漏了:

root@s01 [~]# cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sdd1[1]
      511988 blocks super 1.0 [2/1] [_U]

md2 : active raid1 sda1[0] sdb1[1]
      33558657 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sdc1[2] sdd2[1]
      2929751932 blocks super 1.1 [2/2] [UU]
      bitmap: 6/22 pages [24KB], 65536KB chunk

unused devices: <none>
root@s01 [~]#

有什么方法可以安全地重新添加md0而无需重新格式化所有内容?

md0现在看起来像:

root@s01 [~]# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.0
  Creation Time : Sat Jul  7 18:23:23 2012
     Raid Level : raid1
     Array Size : 511988 (499.99 MiB 524.28 MB)
  Used Dev Size : 511988 (499.99 MiB 524.28 MB)
   Raid Devices : 2
  Total Devices : 1
    Persistence : Superblock is persistent

    Update Time : Thu Jul  7 00:59:54 2016
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           Name : server01.domain.com:0
           UUID : 2ca3a4dc:db3ef0ca:b3d37d49:b43e826f
         Events : 726

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       49        1      active sync   /dev/sdd1
root@s01 [~]#

看起来md1像:

root@s01 [~]# mdadm --detail /dev/md1
/dev/md1:
        Version : 1.1
  Creation Time : Sat Jul  7 18:23:24 2012
     Raid Level : raid1
     Array Size : 2929751932 (2794.03 GiB 3000.07 GB)
  Used Dev Size : 2929751932 (2794.03 GiB 3000.07 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Thu Jul  7 20:33:31 2016
          State : active 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : server01.domain.com:1
           UUID : 58600fc5:5348d92c:a7d25465:20d42940
         Events : 2359606

    Number   Major   Minor   RaidDevice State
       2       8       33        0      active sync   /dev/sdc1
       1       8       50        1      active sync   /dev/sdd2
root@s01 [~]#

答案1

因此 md0 和 md1 都位于同一驱动器上。然后使用 mdadm --manage /dev/md1 --add /dev/sdc2 重新添加故障驱动器

现在的问题是,正如您所看到的,md1 已同步,但 md0 却被遗漏了:

这是因为你只将丢失的驱动器重新添加到/dev/md1,你需要对它执行相同的操作/dev/md0,例如 mdadm --manage /dev/md0 --add /dev/sdcX

sdcX- 您现在需要知道使用哪个分区,我们无法知道。

有什么方法可以安全地重新添加 md0 而无需重新格式化所有内容?

您可以使用parted,并找出什么在哪里以及哪个分区未被使用。Mdadm这样做很安全,它不允许您添加当前正在使用的设备。

我敢打赌,你没有在那个新驱动器上创建第二个分区。Mdadm允许你重新添加不同大小的分区(在你的情况下更大)。你应该创建与 相同的分区布局。Parted 也会帮助你做到这一点。你可以像这样/dev/sdd检查布局: ,然后将其与 进行比较。/dev/sddparted /dev/sdd unit MiB print/dev/sdc

确保正确对齐分区,parted这也将帮助你,在新磁盘上创建第一个分区后,你应该注意它从 2048 扇区(第 1 MiB)开始。错位通常会影响磁盘性能。

在进行分区之前,您还需要:

mdadm --manage /dev/mdX --fail /dev/sdX- 将磁盘标记为故障(非破坏性)

mdadm --manage /dev/mdX --remove /dev/sdX- 从阵列中删除磁盘(非破坏性)

相应地对磁盘进行分区(在某种程度上是破坏性的)并再次重新添加它(非破坏性的,当然对于阵列来说不是用于添加的磁盘/分区)。

相关内容