Восстанавливает ли программный raid сбойные блоки?
Хочу сделать программный raid 1. Как он будет себя вести, если на одном из дисков обнаружит сбойный блок? Просто считает информацию с другого диска? А будет ли помечен битый блок, и восстановлен за счёт запасных блоков и информации с другого диска?
Не хотелось бы оказаться в ситуации, если один диск умрёт и при его замене не всё удастся скопировать, т.к. на втором диске тоже окажутся сбойные блоки.
Говоря о linux raid.
Если блок не читается - прочитает с избыточных дисков и попробует записать на сбойный диск. Если запись не удастся - выкинет диск из массива как сбойный. Если блок запишется - продолжит работу. (всё с соответствующей руганью в логи и dmesg)
Сделает ли диск ремап для этого блока или просто успешно перезапишет имеющийся - на усмотрение прошивки этого диска. Linux raid это не волнует. Его волнует, чтобы по заданному LBA были требуемые данные.
Обычно в пакетах дистрибьютива ставится кроновая задача раз в месяц запускать проверку массива - читаются все блоки и сравнивается их содержимое между всеми зеркалами. Что будет (кроме крика в dmesg и логах), если оба диска блоки прочитали, но выдали разные данные - не знаю. Если один из дисков не прочитал блок - то будет попытка восстановления.
Проверка массива в ядре, для её запуска достаточно сделать: echo check > /sys/block/mdX/md/sync_action
За результатом следить в dmesg, за прогрессом работы - в /proc/mdadm
Проверяет, естественно, только блочный уровень. linux raid не знает, что у вас на нём размещено. Вдруг lvm или вообще образ виртуальной машины. А то для каких-нибудь нужд и сразу данные.
Под дебианом есть скрипт /usr/share/mdadm/checkarray , вызов которого при установке пакета mdadm добавляется в крон раз в месяц. Но суть его сводится в конечном итоге к тому самому sync_action