Назад | Перейти на главную страницу

Как упреждающе отремонтировать / заменить диск в массиве linux md без предварительного ухудшения работы?

У меня был (был, он уже был заменен, просил об этом для использования в будущем) диск, который указывает ожидающий сбой с помощью внутренних тестов SMART и переназначения плохих блоков.

Это просто mdadm --fail диск скоро станет неисправным и восстановите его до горячего резерва, или вытащите диск и вставьте новый, а затем восстановите его на этот диск.

Проблема в том, что это переводит массив в ухудшенное состояние на весь период этой повторной синхронизации, что приводит как к дополнительному риску сбоя, так и к накладным расходам производительности из-за снижения производительности. Это ожидаемо, если у вас действительно есть сбой диска, но это ненужное воздействие, если диск еще не отказал.

Как я могу предварительно заменить / восстановить этот единственный диск в горячий резерв без сначала вывести его из строя?

Я не уверен, насколько устойчива эта техника, но она «должна работать». Я бы хотел провести несколько тестовых прогонов этой процедуры на других дисках, прежде чем делать это по-настоящему.

Если у вас двухдисковый RAID-1, вы можете использовать mdadm --grow преобразовать его в трехдисковый RAID-1. Это тройное зеркало, а не RAID-1E. Затем вы можете отключить диск, который вас беспокоит, и --grow это обратно на два диска. Что-то вроде этого:

mdadm --grow /dev/md0 --level=1 --raid-devices=3 --add /dev/sdgood

# wait for the resync to complete, then fail the drive out that's starting to go bad:

mdadm /dev/md0 --fail /dev/sdbad --remove /dev/sdbad

# then, set the RAID-1 back to two devices.
mdadm --grow /dev/md0 --raid-devices=2

Если вы сделаете это, у вас всегда будет хотя бы одна зеркальная копия ваших данных.

Как сообщается, вы можете --grow массив от RAID-5 до RAID-6, но я никогда не слышал, чтобы кто-нибудь впоследствии вернулся к RAID-5. В любом случае, такой подход гораздо более рискованный, потому что вам придется переписать все данные на всех дисках.