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

我的服务器有RAID-1设置,前几天有一个驱动器出现故障。 我replace它,并将其添加回数组。 问题是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为/tmpfs为7.8GB, boot为477MB。

所以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 [~]# 

所以md0和md1都在同一个驱动器上。 失败的驱动器然后重新添加了mdadm –manage / dev / md1 –add / dev / sdc2

现在你可以看到的问题是,md1被同步了,但md0被忽略了:

这是因为您仅将缺less的驱动器读取到/dev/md1 ,您需要对/dev/md0执行相同的操作,如mdadm --manage /dev/md0 --add /dev/sdcX

sdcX – 你现在需要使用什么分区,我们无法知道这一点。

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

你可以使用parted ,并找出什么地方,什么分区没有使用。 Mdadm是相当安全的,它不会允许你添加当前正在使用的设备。

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

确保你正确alignment分区,分区也将帮助你,在新磁盘上创build第一个分区后,你应该注意到它从2048扇区,第一个MiB开始。 一般来说,错位对磁盘的性能不利。

在分区之前,您还需要:

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

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

相应地对磁盘进行分区(破坏某个点)并再次读取(非破坏性的,当然不适用于添加磁盘/分区)。