Как я могу сократить время ожидания ввода-вывода и повторных попыток, чтобы ОС не пыталась непрерывно записывать на неисправный диск?
У меня есть система, которую я использую для создания копий демонстрационного контента, который предоставляется клиентам на обычные жесткие диски SATA для настольных ПК. Мы подключаем множество дисков одновременно через SAS и копируем содержимое на них с помощью скрипта.
Поскольку диски сдаются в аренду, иногда некоторые возвращаются поврежденными, но я не знаю, повреждены ли они, поэтому в следующий раз, когда этот диск будет повторно использован в операции копирования, он замедляет работу других дисков, когда система повторяет ввод-вывод на этот диск. Иногда может потребоваться несколько часов, прежде чем я замечу плохой диск и уберу его После извлечения диска остальные диски начинают запись с нормальной скоростью.
Меня не волнует восстановление плохих дисков. Мне просто нужно отсеять их, чтобы они не замедляли все остальное.
Я также изучаю badblocks и smartmontools и планирую записать на диски предварительную проверку перед тем, как начать писать.
ОС: Ubuntu Linux (12.04 лтс)
udisks
/smartmonctl
? Классическая проблема XY здесь, метинкс.ddrescue
так, чтобы она даже не касалась секторов, о которых сообщает SMART.)Ответы:
Я не использовал эту настройку раньше, но вы, вероятно, хотите настроить eh_timeout (тайм-аут обработки ошибок) для данного диска:
Выше показано,
sda
установите на 10 секунд. Из базы знаний Red Hat:источник
eh_timeout
но я мог изменить,timeout
чтобы выполнить задачу под рукой.Следите
/sys/block/<dev>/stat
за интересующими вас устройствами и сравнивайте 10-й параметр (io_ticks).например,
ticks = io_ticks - prev_ticks / seconds_deltatime / 10
Это процент доступного времени, которое диск провел в ожидании диска io.
Конечно, почти 100% стоило бы проверить, иначе вы станете умнее и сравните его со средним значением по всем вашим дискам и выберите на любом диске (дисках) выше среднего.
Смотрите документацию статистики блочного слоя .
Еще используйте что-то вроде Munin и нарисуйте это. Вы можете попросить Munin предупредить, если он превысит пороговое значение, например, 90% или то, что показывает ваш график, является хорошим показателем оповещения.
например, посмотрите эти два графика Мунина, показывающие, что / dev / sdi нужно посмотреть. В этом примере, если / dev / sdi является частью массива, весь массив будет страдать из-за этого.
Если вы посмотрите на график недели, то увидите, что / dev / sdc также может быть медленным.
Я должен добавить, что / dev / sdi выше не сломан, это просто медленный диск (фактически зеленый диск, который кто-то добавил в массив дисков sata корпоративного уровня), который замедлил массив. Фактически неисправный диск торчал бы как больной большой палец.
Подводя итог, я бы, вероятно, пошел со сценарием, если бы у меня было время, но Мунин, если бы я просто хотел быстрое решение и подключение к серверу, было легко.
источник