Есть класс аварий, который выглядит абсурдно: массив собран из новых исправных дисков, один из них внезапно объявляется выпавшим, начинается перестроение, а сам диск после проверки не показывает ни одной ошибки. Через неделю история повторяется с другим накопителем. Причина здесь не в качестве дисков, а в несогласованности двух таймаутов — того, что заложен в прошивку накопителя, и того, что заложен в контроллер.
Что происходит внутри диска при сбойном чтении
Плотность записи такова, что сигнал с головки изначально слаб и восстанавливается кодами коррекции. Когда сектор не читается с первого раза, накопитель не сдаётся — он запускает процедуру восстановления: повторное чтение, смещение головки на доли микрона в обе стороны от центра дорожки, изменение параметров усиления, перекалибровка, иногда пауза для стабилизации температуры. Каждая попытка занимает как минимум оборот шпинделя, а попыток бывает много.
Для одиночного диска в настольной машине такая настойчивость правильна: единственная копия данных находится здесь, и лучше потратить время, чем отдать ошибку. Поэтому у накопителей потребительского класса процедура восстановления может тянуться десятки секунд, а в тяжёлом случае — заметно дольше. Всё это время диск занят и на новые команды не отвечает.
Почему контроллер считает его мёртвым
Контроллер массива рассуждает иначе. У него есть избыточность, и он в состоянии собрать нужный блок из данных остальных дисков за миллисекунды. Ждать от одного накопителя ответа полминуты для него бессмысленно и опасно: очередь встанет, вышестоящая система решит, что дисковая подсистема зависла, приложения начнут отваливаться по своим таймаутам.
Поэтому у контроллера собственный лимит ожидания, обычно порядка нескольких секунд. Диск, не ответивший за это время, помечается как неисправный и выводится из массива. Накопитель тем временем спокойно завершает восстановление, читает сектор, отчитывается об успехе — и обнаруживает, что его уже никто не спрашивает. Формально исправное устройство исключено из тома, и запускается многочасовое перестроение, которое само по себе создаёт нагрузку и риск.
Ограничение времени восстановления
Решение состоит в том, чтобы прошивка накопителя знала о существовании контроллера. Диски, рассчитанные на работу в массиве, поддерживают ограничение времени восстановления: попытки чтения прекращаются через несколько секунд, и диск возвращает ошибку, не доведя процедуру до конца. Дальше сценарий разворачивается правильно — контроллер восстанавливает блок по избыточности и записывает его обратно на тот же диск. Запись в проблемный сектор заставляет накопитель либо переписать его нормально, либо переназначить на резервный, и дефект закрывается без потери данных и без исключения устройства из массива.
Обмен получается выгодным: диск отказывается от малой вероятности вытянуть сектор самостоятельно в обмен на гарантию, что массив не развалится. У части моделей это ограничение можно включить командой, у части оно зашито в прошивке и недоступно, у потребительских серий его нередко нет вовсе. Разница между линейками разобрана в разделе про серверные накопители, а общие свойства дисковых интерфейсов — в разделе про накопители.
Что ещё отличает диск для массива
Ограничение времени восстановления — самое заметное, но не единственное отличие. Второе — вибрация. В корзине на десяток шпинделей каждый диск раскачивает соседей, и головка вынуждена постоянно подрабатывать позиционированием. Накопители для массивов несут датчики угловых колебаний и корректируют положение головки по ним; без такой компенсации число повторных попыток чтения растёт вместе с числом дисков в корзине, а с ним растёт и вероятность нарваться на таймаут.
Третье — работа с глубокой очередью команд и предсказуемое поведение под непрерывной нагрузкой. Настольный диск проектируется в расчёте на неполный рабочий день и паузы, серверный — на круглосуточный поток обращений. Четвёртое — политика упреждающего чтения и фонового сканирования поверхности: диск для массива обычно вычитывает дорожки в простое и переназначает подозрительные секторы заранее, до того как они попадутся при перестроении.
Признаки и порядок разбора
Характерная картина проблемы выглядит так: журнал контроллера показывает выпадение диска по таймауту, а не по ошибке носителя; самодиагностика выпавшего накопителя чистая или почти чистая; полная проверка поверхности проходит; после возврата в массив диск работает, пока не встретится очередной трудный сектор. Если такое повторяется на разных дисках одной модели — вопрос не к экземплярам, а к линейке.
Разбор стоит начинать с журналов контроллера, а не с замены оборудования. Дальше проверяют, поддерживается ли ограничение времени восстановления и включено ли оно, и при возможности согласуют таймаут драйвера с реальным поведением дисков. Регулярная фоновая вычитка тома снимает значительную часть риска: трудные секторы находятся в спокойном режиме, когда избыточность на месте, а не в момент перестроения, когда её уже нет.