У меня есть / boot раздел в массиве RAID 1 с использованием mdadm. Этот массив несколько раз ухудшался в прошлом, и каждый раз, когда я удаляю физический диск, добавляю новый, приводлю массив в нормальное состояние, он использует новую букву диска. Оставить старый все еще в массиве и не удалось. Я не могу удалить все компоненты, которые больше не существуют.
[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
из этого массива.
Ответы:
Это потому, что узлы устройства больше не существуют в вашей системе (вероятно, udev удалил их, когда диск умер). Вы должны быть в состоянии удалить их, используя ключевое слово
failed
илиdetached
вместо:Если ваша версия mdadm слишком старая, чтобы сделать это, вы, возможно, сможете заставить ее работать,
mknod
если устройство снова будет существовать. Или, если честно, просто проигнорируйте это - это на самом деле не проблема и должно исчезнуть при следующей перезагрузке.источник
mknod
. Да, это, вероятно, не проблема, но я ОКР, лол.В итоге я использовал
mknod
@derobert, предложив создать устройства, которыеmdadm
искали. Я попробовал старшие / младшие числа, которые mdadm говорил мне, что не может найти с различными буквами диска, которые я пытался удалить, пока это не сработало.Затем мне пришлось использовать
--force
опцию, чтобы заставить его удалить компонент.Затем я удалил созданное блочное устройство.
источник
mdadm
продолжал говорить: «устройство или ресурс занят», но это заставило меня попытаться накормить его не поддельным блочным устройством, а «истинным» блочным устройством, таким как монтированное в петлю изображение. В этот момент я обнаружил, что у меня был устаревший/dev/loop
файл, который все еще использовал файл в поврежденном массиве. Я отключил его и, наконец,mdadm
позволил мне остановить массив. Horay! Для всех, кто читает это, всегда есть логическое объяснениеmdadm
того, чтобы быть таким рывком, так что ищите устаревший обработчик процесса / файла / точки монтирования / nfs / open bash / loopback device / etc. все еще использую ухудшенный массив. :)Вы также можете исправить это, просто уменьшив количество дисков в массиве:
В моем случае у меня есть массив raid-1
/dev/md0
с/dev/sda1
и "удален". Я просто сжал его, чтобы использовать только один диск:После этого удалено было действительно удалено (больше не было удаленных строк
mdadm --detail
)источник