
У меня есть программная конфигурация RAID 10 Linux, состоящая из 5 RAID 1 (два диска на зеркальную настройку) и RAID 0 на всех 5 парах RAID 1. Чтобы проверить, что ни один из дисков не выйдет из строя быстро под нагрузкой, я использовал плохие блоки на RAID 0 с деструктивным режимом чтения/записи.
Команда Badblocks: badblocks -b 4096 -c 98304 -p 0 -w -s /dev/md13
Одно из устройств вышло из строя, и вместо того, чтобы программа badblocks счастливо продолжила работу, оно зависло. Если я запускаю команду sync, то тоже зависает. Сначала я бы предположил, что это нестандартное поведение для устройства RAID 1. Если один из дисков выйдет из строя, он все равно сможет записывать данные на виртуальное устройство, которое образуют два диска, без проблем.
Поэтому я приступил к принудительному отказу диска и попытался удалить его. Я могу сделать диск неисправным без каких-либо проблем (однако операции ввода-вывода все еще зависают). Я не могу полностью удалить устройство из рейда, оно говорит, что оно занято. Я предполагаю, что если я смогу полностью выкинуть его из рейда, ввод-вывод продолжится, но это всего лишь предположение, и я думаю, что имею дело с своего рода ошибкой.
Что именно здесь происходит? Я в необратимом положении из-за ошибки?
Система работает под управлением ядра 2.6.18, так что оно не совсем новое, но я думаю, что, учитывая, что программный RAID существует уже так долго, подобных проблем возникнуть не должно.
Любая информация будет высоко оценена.
mdadm --detail /dev/md13
/dev/md13:
Version : 00.90.03 Creation Time : Thu Jan 21 14:21:57 2010 Raid Level : raid0 Array Size : 2441919360 (2328.80 GiB 2500.53 GB) Raid Devices : 5
Всего устройств: 5 Предпочтительные второстепенные: 13 Постоянство: Суперблок является постоянным
Update Time : Thu Jan 21 14:21:57 2010 State : clean Active Devices : 5 Working Devices : 5
Неисправные устройства: 0 Запасные устройства: 0
Chunk Size : 64K UUID : cfabfaee:06cf0cb2:22929c7b:7b037984 Events : 0.3 Number Major Minor RaidDevice State 0 9 7 0 active sync /dev/md7 1 9 8 1 active sync /dev/md8 2 9 9 2 active sync /dev/md9 3 9 10 3 active sync /dev/md10 4 9 11 4 active sync /dev/md11
Выходные данные неудачного рейда:
/dev/md8: Версия: 00.90.03 Время создания: Чт Янв 21 14:20:47 2010 Уровень рейда: raid1 Размер массива: 488383936 (465,76 ГиБ 500,11 ГБ) Размер устройства: 488383936 (465,76 ГиБ 500,11 ГБ) Устройства рейда: 2
Всего устройств: 2 Предпочтительный второстепенный: 8 Постоянство: Суперблок является постояннымUpdate Time : Mon Jan 25 04:52:25 2010 State : active, degraded Active Devices : 1 Working Devices : 1
Неисправные устройства: 1 Запасные устройства: 0
UUID : 2865aefa:ab6358d8:8f82caf4:1663e806 Events : 0.11 Number Major Minor RaidDevice State 0 65 17 0 active sync /dev/sdr1 1 8 209 1 faulty /dev/sdn1
решение1
Извините, возможно, я не так понял, и cat /proc/mdstat мог бы быть полезен, но насколько я могу судить, вы выстрелили себе в ногу, уничтожив свои данные на RAID0 и так далее на базовых массивах RAID1. Это так, если вам нужно проверить надежность RAID, вы должны пометить как отказавший диск, диск, а не уничтожать логические блоки, которые относятся ко всем базовым дискам RAID1, если я правильно понял проблему (дайте мне знать).
решение2
Возможно, вам нужно попросить ядро удалить неисправный диск. Это освободит зависший RAID.
Вы можете удалить его с помощью скрипта вродеhttp://bash.cyberciti.biz/diskadmin/rescan-linux-scsi-bus/