我使用 mdadm 将 /boot 分区放在 RAID 1 阵列中。该阵列过去已经降级了几次,每次我删除物理驱动器,添加一个新驱动器,使阵列恢复正常时,它都会使用一个新的驱动器号。将旧的留在阵列中并失败。我似乎无法删除那些不再存在的所有组件。
[root@xxx ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdg1[10] sde1[8](F) sdb1[7](F) sdd1[6](F) sda1[4] sdc1[5]
358336 blocks super 1.0 [4/3] [UUU_]
这是我尝试删除不存在的驱动器和分区的方法。例如,/dev/sdb1
。
[root@xxx ~]# mdadm /dev/md0 -r /dev/sdb1
mdadm: Cannot find /dev/sdb1: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r faulty
mdadm: Cannot find 8:49: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r detached
mdadm: Cannot find 8:49: No such file or directory
我相信这8:49
是指 中显示的主要和次要数字--detail
,但我不太确定从这里开始。我试图避免重新启动或重新启动 mdadm。
[root@xxx ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.0
Creation Time : Thu Aug 8 18:07:35 2013
Raid Level : raid1
Array Size : 358336 (350.00 MiB 366.94 MB)
Used Dev Size : 358336 (350.00 MiB 366.94 MB)
Raid Devices : 4
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Sat Apr 18 16:44:20 2015
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 3
Spare Devices : 0
Name : xxx.xxxxx.xxx:0 (local to host xxx.xxxxx.xxx)
UUID : 991eecd2:5662b800:34ba96a4:2039d40a
Events : 694
Number Major Minor RaidDevice State
4 8 1 0 active sync /dev/sda1
10 8 97 1 active sync /dev/sdg1
5 8 33 2 active sync /dev/sdc1
6 0 0 6 removed
6 8 49 - faulty
7 8 17 - faulty
8 8 65 - faulty
笔记:该阵列现在已经合法降级,就在我们说话的时候,我正在那里安装一个新驱动器。然而,正如您在上面所看到的,这并不重要。我应该仍然能够/dev/sdb1
从这个数组中删除。
答案1
这是因为设备节点不再存在于您的系统上(可能是 udev 在驱动器损坏时删除了它们)。您应该能够使用关键字删除它们failed
,或者detached
改为:
mdadm -r /dev/md0 failed # all failed devices
mdadm -r /dev/md0 detached # failed ones that aren't in /dev anymore
如果您的 mdadm 版本太旧而无法执行此操作,您可以通过mknod
“使设备再次存在”来使其工作。或者,老实说,忽略它 - 这并不是一个真正的问题,并且应该在下次重新启动时消失。
答案2
我最终做的是使用@derobert 建议的方式来创建正在寻找的mknod
设备。mdadm
我尝试了 mdadm 告诉我的主要/次要数字,它无法找到我试图删除的不同驱动器号,直到它起作用为止。
mknod /dev/sde1 b 8 17
然后我不得不使用该--force
选项来让它删除该组件。
mdadm /dev/md0 --remove --force /dev/sde1
然后,我删除了创建的块设备。
rm /dev/sde1
答案3
您还可以通过对阵列中的磁盘数量进行脱脂来修复:
就我而言,我有 raid-1 阵列/dev/md0
并/dev/sda1
“删除”。我只是简单地将其缩小为仅使用一个驱动器:
mdadm -G /dev/md0 --raid-devices=1 --force
删除之后确实被删除了(不再删除行mdadm --detail
)