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

Что такое таймауты команд Linux SCSI и подходит ли значение по умолчанию для программного рейда?

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

Следующим моим уровнем будет mdraid, программный RAID для Linux. Из того, что я читал, mdraid сам по себе не имеет тайм-аутов, но полагается на команды нижнего уровня для тайм-аута.

Значение тайм-аута SCSI по умолчанию для ядра 3.2 (Debian) составляет 90 секунд.

Жесткий диск, обнаруживший ошибку чтения, будет стараться исправить ошибку в течение периода времени, определенного микропрограммой. Этот тайм-аут установлен высоким для настольных дисков (обычно автономных, поэтому исправление имеет высокий приоритет) и низким для серверных дисков (обычно RAID, поэтому сообщайте о плохом секторе как можно скорее, пусть ответит другой диск). Иногда это можно настроить через smartctl (SCTERC, TLER и т. Д.).

Итак, я предполагаю, что если для жесткого диска установлен высокий тайм-аут ERC, ядро ​​по умолчанию будет ждать 90 секунд, прежде чем прервать запрос. Только тогда mdraid перенаправит запрос приложения на другой диск.

90 секунд - это очень долгое время для загрузки веб-страницы.

Правильно ли предположить, что тайм-аут SCSI по умолчанию предназначен для настольных ПК или оборудования SCSI без жесткого диска (на ум приходит ленточный накопитель, ленточная библиотека) и безопасно его уменьшить, скажем, до 7 секунд для использования RAID?

Пригодность зависит от ваших потребностей. Для вас 90 секунд не подходят.

В прошлом я видел документацию поставщиков, в которой рекомендовалось Таймауты HBA должны быть установлены более 60 секунд, чтобы лучше справляться с такими вещами, как переключение массивов при отказе, обновление прошивки контроллеров и т. Д. Как вы заметили, обратная сторона заключается в том, что это может привести к очень долгим задержкам возврата хранилища.

И на самом деле это неплохо. Многие операционные системы будут принудительно отключать LUN, если на нем истекают тайм-ауты HBA, что может быть гораздо более разрушительным, чем периодическая длительная задержка для возврата блока. Хитрость заключается в том, чтобы сбалансировать следующее:

  • Вероятность длительного лага вашего стека хранения
  • Ваша терпимость к поздним данным
  • Ваша переносимость демонтированных LUN

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