У меня есть программный 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 зависло. Если я запустил команду синхронизации, это тоже зависнет. Сначала я бы предположил, что это нестандартное поведение для устройства RAID 1. Если один из дисков выйдет из строя, он все равно сможет без проблем записать на виртуальное устройство, что два диска составляют.
Итак, я приступил к принудительному отказу диска и попытался его удалить. Я могу без проблем установить привод в состояние неисправности (однако операции ввода-вывода все еще зависают). Я не могу удалить устройство полностью из рейда, он говорит что занято. Я предполагаю, что если я смогу полностью исключить его из рейда, ввод-вывод продолжится, но это всего лишь предположение, и я действительно думаю, что имею дело с своего рода ошибкой.
Что именно здесь происходит? Я нахожусь в неустранимом месте из-за ошибки?
Система работает под управлением ядра 2.6.18, так что оно не совсем новое, но я думаю, учитывая, что программный рейд существует уже так давно, таких проблем не будет.
Приветствуется любое понимание.
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
Извините, возможно, я не очень хорошо понял, и cat / proc / mdstat может быть полезен, но, насколько я вижу, вы стреляли себе в ногу, уничтожая свои данные на RAID0 и так далее на базовых массивах RAID1. То есть, если вам нужно проверить надежность RAID, вы должны пометить как неисправный диск, диск, чтобы не разрушать логические блоки, которые относятся ко всем базовым дискам RAID1, если я хорошо понял проблему (дайте мне знать).
Может нужно попросить ядро удалить неисправный диск. он освободит зависший RAID.
Вы можете удалить его с помощью скрипта, например http://bash.cyberciti.biz/diskadmin/rescan-linux-scsi-bus/