Снижение скорости восстановления RAID в программном обеспечении Linux?

7

Это может звучать глупо, но есть ли способ преднамеренно снизить скорость перестройки в программном RAID-массиве Linux? (В основном, снижается пропускная способность всех дисков, чтобы она не была максимальной).

Сам RAID - это просто набор дисков, подключенных через внешний SATA к блоку Slackware 13.37 с программным RAID (все, что контролируется mdadm). Диски не самого высокого качества (это бюджетная домашняя система), и я просто хотел бы получить спокойствие, что я не слишком их подталкиваю.

Может быть, есть способ приостановить и отменить приостановку восстановления, что я могу сценарий делать время от времени?

Дэвид
источник
Можете ли вы сложить причины, по которым вам нужно такое поведение, потому что, насколько я понимаю, RAID собирается один раз при настройке и восстанавливает при добавлении / замене диска.
Брайам
@Braiam: Как уже упоминалось в вопросе, это в основном о душевном спокойствии. Эти накопители представляют собой потребительские накопители Western Digital с исправлениями микропрограммы для устранения проблемы TLER с программным RAID. Есть случайные ложные неудачи. Иногда устройства имеют одинаковое количество событий RAID и могут быть просто собраны, иногда нет, и ложный сбой необходимо восстановить. Я просто хотел бы перестраивать медленно, чтобы избежать еще одного ложного сбоя, пока он идет.
Дэвид
Не беспокойтесь, я просто пытался определить, насколько глупой была ваша причина;)
Брайам
Я сталкиваюсь с подобной проблемой, так как мой Synology NAS время от времени выключается из-за интенсивного использования диска. Плохо то, что повторная синхронизация RAID создает большую нагрузку на диск, поэтому NAS перезагружается, затем выполняет повторную синхронизацию, а затем перезагружается ... Это никогда не заканчивается. Так что большое спасибо за вопрос и ответ!
Иван
Одним из примеров является то, что мне пришлось немного поработать, но мой RAID-массив решил перепроверить сам. Очевидно, что это привело к максимальному увеличению числа приводов и сделало работу невозможной. Я понимаю, что это могла быть ошибка чтения, но в данный момент работа была важнее проверки.
Шики

Ответы:

15

Вы можете приостановить восстановление с помощью этого:

echo "idle" > /sys/block/md0/md/sync_action

Предположим, md0это ваше устройство MD. Тем не менее, mdadm начнет восстановление на «событие», которое не ясно, что это будет. Я подозреваю, что чтение или запись в массив снова вызовет перестроение - так часто эта команда не делает ничего очевидного, так как перестроение останавливается, а затем немедленно перезапускается. Если у вас есть несколько md-устройств, это заставит mdadm перестроить следующее, которое нуждается в нем.

Чтобы ограничить восстановление, вы можете использовать:

echo 5000 > /proc/sys/dev/raid/speed_limit_max

Это ограничит максимальную пропускную способность восстановления до 5 Мбит / с. Вы можете увидеть текущую скорость повторной синхронизации, выполнив

cat /proc/mdstat
Павел
источник
Мне очень нравится этот speed_limit_maxвариант. (То, что я сейчас вижу, подтверждается на моей локальной manстранице md, что удивительно.) Первый вариант, вероятно, будет работать для меня, поскольку файловая система в массиве не смонтирована, пока выполняется восстановление. Но speed_limit_maxвариант кажется более простым.
Дэвид
Как вы сохраняете эти изменения постоянными?
Джон Тейт
Чтобы сделать изменения постоянными, при каждой загрузке должно быть обновлено значение ядра. Создать файл /etc/sysctl.d/maxresync.confодной строкой dev.raid.speed_limit_max = 10000. Тогда беги sysctl -p. После этого и после следующей загрузки проверьтеcat /proc/sys/dev/raid/speed_limit_max
Милан Керслагер