В дополнение к сказанному хочу добавить свою копейку, но это важное соображение.
Какие вождение делает, когда сектор медленно читается?
Предположительно приводы, предназначенные для работы в одиночку, т.е. г. типичные «настольные» диски, предполагают, что нет другого способа получить данные, хранящиеся в этом поврежденном секторе. Они будут пытаться получить данные любой ценой, повторяя снова и снова в течение длительного периода времени. Конечно, они также пометят этот сектор как неисправный, поэтому они переназначат его в следующий раз, когда вы будете писать в него, но вы должны написать для этого. Пока не перепишешь, они будут задыхаться каждый раз, когда ты будешь читать оттуда. В настройках RAID это означает, что для RAID диск все еще работает, и нет причин его отключать, но для приложений массив будет замедляться до минимума.
С другой стороны, «корпоративные» диски, особенно «фирменные», часто предполагают, что они всегда используются в настройках RAID. «Фирменный» контроллер, увидев «фирменный» диск, может даже уведомлять их прошивки о наличии RAID. Таким образом, накопитель остановится раньше и сообщит об ошибке ввода-вывода, даже если можно было сделать еще несколько попыток и прочитать сектор. Тогда у контроллера есть возможность ответить быстрее, зеркально отразив инструкцию чтения на родственный диск (и выкинув плохой из массива). Когда вы вытащите и тщательно изучите/протестируете этот выбитый диск, вы не обнаружите явных проблем — он просто замедлился на мгновение, и этого было достаточно, чтобы прекратить его использование, согласно логике контроллера.
Я предполагаю, что это может быть единственный разница между «настольными» дисками и «фирменными»/«корпоративными» дисками NL-SAS и SATA. Вероятно, поэтому вы платите в три раза больше, когда покупаете диск «HPE», который на самом деле был произведен Toshiba, по сравнению с покупкой диска под маркой «Toshiba».
Однако некоторые приводы поддерживают некоторые общие элементы управления этим. Он называется SCT ERC, что означает SMART Command Transport Error Recovery Control Control. Вот как это выглядит в смартктл
:
неподдерживаемый
# smartctl --all /dev/sda
=== НАЧАЛО ЧТЕНИЯ РАЗДЕЛА SMART DATA ===
Возможности SCT: (0x3037) Поддерживается состояние SCT.
Поддерживается управление функциями SCT.
Поддерживается таблица данных SCT.
поддерживается
=== НАЧАЛО ЧТЕНИЯ РАЗДЕЛА SMART DATA ===
...
Возможности SCT: (0x003d) поддерживается статус SCT.
Поддерживается контроль восстановления после ошибок SCT.
Поддерживается управление функциями SCT.
Поддерживается таблица данных SCT.
Если вам повезет, вы можете управлять этой функцией с помощью смартктл
. Вы можете получить или установить два тайм-аута, как долго пытаться перечитать и как долго пытаться перезаписывать:
# smartctl -l scterc /dev/sda
Контроль восстановления после ошибок SCT:
Чтение: 70 (7,0 секунд)
Запись: 70 (7,0 секунд)
# smartctl -l scterc /dev/sde
Контроль восстановления после ошибок SCT:
Чтение: отключено
Пишите: отключен
# smartctl -l scterc /dev/sdd
Предупреждение: устройство не поддерживает команду SCT Error Recovery Control.
smartctl -l scterc,120,60 /dev/sde
Что означает: 120 десятых секунды на повторную попытку чтения; 60 десятых секунды на повторную попытку записи. Ноль означает «повторяй, пока не умрешь». Различные диски имеют разные настройки по умолчанию для этого.
Итак, если вы используете только диск «RAID edition», лучше установить тайм-ауты ERC на ноль, иначе вы можете потерять данные. С другой стороны, если вы используете диски в RAID, лучше установить какое-нибудь разумное низкое ненулевое значение.
Источник amarao @ Habrahabr, на русском языке.
P.S. И заметка о SAS. Использовать сдпарм
, он поддерживает больше элементов управления этим.