Прелюдия
У меня были следующие устройства в моем /dev/md0
RAID 6: /dev/sd[abcdef]
Также присутствовали следующие диски, не относящиеся к RAID: /dev/sd[gh]
Следующие приводы были частью кард-ридера, который был подключен, опять же, не связанным: /dev/sd[ijkl]
Анализ
sdf
кабель SATA вышел из строя (можно сказать, что он был отключен во время использования), и sdf
был впоследствии отклонен из /dev/md0
массив. Я заменил кабель, и привод вернулся, теперь на /dev/sdm
. Пожалуйста, не оспаривайте мой диагноз, с приводом проблем нет.
mdadm --detail /dev/md0
показал sdf(F)
, т.е. что sdf
был неисправен. Так что я использовал mdadm --manage /dev/md0 --remove faulty
удалить неисправные диски.
Сейчас mdadm --detail /dev/md0
показано "удалено" в месте, где sdf
раньше был.
root@galaxy:~# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Jul 30 13:17:25 2014 Raid Level : raid6 Array Size : 15627548672 (14903.59 GiB 16002.61 GB) Used Dev Size : 3906887168 (3725.90 GiB 4000.65 GB) Raid Devices : 6 Total Devices : 5 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Tue Mar 17 21:16:14 2015 State : active, degraded Active Devices : 5 Working Devices : 5 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Name : eclipse:0 UUID : cc7dac66:f6ac1117:ca755769:0e59d5c5 Events : 67205 Number Major Minor RaidDevice State 0 8 0 0 active sync /dev/sda 1 8 32 1 active sync /dev/sdc 4 0 0 4 removed 3 8 48 3 active sync /dev/sdd 4 8 64 4 active sync /dev/sde 5 8 16 5 active sync /dev/sdb
По какой-то причине RaidDevice «удаленного» устройства теперь совпадает с активным. В любом случае, давайте попробуем добавить предыдущее устройство (теперь известное как /dev/sdm
), потому что это было первоначальным намерением:
root@galaxy:~# mdadm --add /dev/md0 /dev/sdm mdadm: added /dev/sdm root@galaxy:~# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Jul 30 13:17:25 2014 Raid Level : raid6 Array Size : 15627548672 (14903.59 GiB 16002.61 GB) Used Dev Size : 3906887168 (3725.90 GiB 4000.65 GB) Raid Devices : 6 Total Devices : 6 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Tue Mar 17 21:19:30 2015 State : active, degraded Active Devices : 5 Working Devices : 6 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Name : eclipse:0 UUID : cc7dac66:f6ac1117:ca755769:0e59d5c5 Events : 67623 Number Major Minor RaidDevice State 0 8 0 0 active sync /dev/sda 1 8 32 1 active sync /dev/sdc 4 0 0 4 removed 3 8 48 3 active sync /dev/sdd 4 8 64 4 active sync /dev/sde 5 8 16 5 active sync /dev/sdb 6 8 192 - spare /dev/sdm
Как видите, устройство отображается как запасное и отказывается синхронизироваться с остальной частью массива:
root@galaxy:~# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid6 sdm[6](S) sdb[5] sda[0] sde[4] sdd[3] sdc[1] 15627548672 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/5] [UU_UUU] bitmap: 17/30 pages [68KB], 65536KB chunk unused devices:
Я также пробовал использовать mdadm --zero-superblock /dev/sdm
перед добавлением, с тем же результатом.
Причина, по которой я использую RAID 6, - обеспечить высокую доступность. Я не приму остановки /dev/md0
и заново собрать его с --assume-clean
или аналогичные способы решения этой проблемы. Это нужно решать онлайн, иначе я не вижу смысла использовать mdadm.
После нескольких часов поиска в Google и некоторой чрезвычайно мудрой помощи от JyZyXEL в канале # linux-raid Freenode у нас есть решение! Во время этого процесса не было ни единого прерывания работы RAID-массива - именно то, что мне нужно и чего я ожидал от mdadm.
По какой-то (пока неизвестной) причине состояние RAID было заморожено. Команда-победитель, чтобы выяснить это, - cat /sys/block/md0/md/sync_action
:
root@galaxy:~# cat /sys/block/md0/md/sync_action frozen
Проще говоря, поэтому не использовались имеющиеся запчасти. Все мои волосы исчезли за счет простой кошачьей команды!
Итак, просто разморозим массив:
root@galaxy:~# echo idle > /sys/block/md0/md/sync_action
И ты далеко!
root@galaxy:~# cat /sys/block/md0/md/sync_action recover root@galaxy:~# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid6 sdm[6] sdb[5] sda[0] sde[4] sdd[3] sdc[1] 15627548672 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/5] [UU_UUU] [>....................] recovery = 0.0% (129664/3906887168) finish=4016.8min speed=16208K/sec bitmap: 17/30 pages [68KB], 65536KB chunk unused devices: root@galaxy:~# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Jul 30 13:17:25 2014 Raid Level : raid6 Array Size : 15627548672 (14903.59 GiB 16002.61 GB) Used Dev Size : 3906887168 (3725.90 GiB 4000.65 GB) Raid Devices : 6 Total Devices : 6 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Tue Mar 17 22:05:30 2015 State : active, degraded, recovering Active Devices : 5 Working Devices : 6 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Rebuild Status : 0% complete Name : eclipse:0 UUID : cc7dac66:f6ac1117:ca755769:0e59d5c5 Events : 73562 Number Major Minor RaidDevice State 0 8 0 0 active sync /dev/sda 1 8 32 1 active sync /dev/sdc 6 8 192 2 spare rebuilding /dev/sdm 3 8 48 3 active sync /dev/sdd 4 8 64 4 active sync /dev/sde 5 8 16 5 active sync /dev/sdb
Блаженство :-)