Почему поврежденные жесткие диски замораживают всю систему?


128

Почему жесткий диск, который, как известно, имеет плохие блоки (проверено в HDTune и HDDScan), зависает всю мою систему?

Это не диск ОС; он подключен к другому порту SATA, и я пытаюсь скопировать файлы с него на другой исправный диск.

Я сталкивался с этой проблемой почти на каждом поврежденном жестком диске и на каждом ПК с Windows.

Я ожидал бы зависания только для программы, которую я использую для копирования файлов (Проводник Windows и т. Д.), Но вместо этого весь мой компьютер становится дряблым, и я не могу просматривать веб-страницы или смотреть фильмы во время копирования файлов с поврежденного диска.

Длинная история.

Я живу в сельской местности, где есть проблемы с электричеством (отключение и т. Д.). Я сам использую ИБП, и мои собственные жесткие диски в порядке. Но мои соседи часто обращаются за помощью в решении проблем с ПК, и я часто обнаруживаю, что их жесткие диски повреждены, скорее всего, из-за проблем с электричеством. Конечно, после замены поврежденного диска я предлагаю соседям купить ИБП.

Я всегда задавался вопросом, почему мой компьютер полностью зависает при получении данных с поврежденных дисков. Это аппаратная проблема? Это вызвано тем, как ОС читает данные? Это что-то специфичное для Windows, и я не буду испытывать это на * nix?

В любом случае, теперь я буду использовать некое специальное программное обеспечение (например, Unstoppable Copier от Roadkil) вместо проводника Windows, хотя я не уверен, будет ли это работать по-другому, без замораживания всего ПК.

Это не просьба о помощи, а скорее в образовательных целях, поэтому я знаю, почему все так работает.


11
Использование внешнего USB-корпуса должно помочь, так как вы больше не привязываете неисправный диск к системному контроллеру SATA (кроме того, всегда полезно добавить дополнительный слой жертвенного оборудования между материнской платой и неисправным диском).
Matteo Italia

3
Это не специфично для SATA, IDE-накопители сделали это также. Кроме того, только потому, что диск поврежден, не означает, что контроллер не, особенно если электрическая неисправность повредила диск.
Крис Х

Принятый ответ потрясающий и содержит то, что я собирался сказать, и многое другое. По сути, вы паникуете свой контроллер SATA, который является очень важным системным устройством, которое, в свою очередь, паникует Windows. Я действительно задаюсь вопросом, улучшит ли положение AHCI / «горячая замена» в BIOS.
Артур Кей

Ответы:


170

Это одна из тех областей, где SATA неоптимален. Проблема заключается в уровне протокола межсоединений устройств хранения данных, и, следовательно, не связана с тем, какое программное обеспечение вы используете. Использование другого копировщика файлов или другой операционной системы не может волшебным образом улучшить ситуацию, за исключением того, что он может попытаться установить разные значения времени ожидания, чтобы уменьшить влияние проблемы (что может или не может быть возможным в зависимости от аппаратного и микропрограммного обеспечения; см. Ниже). ).

Здесь есть несколько важных моментов:

  1. С SATA, если диск перестает отвечать на запросы, это может связать всю систему хранения, а не только один диск, который имеет проблемы. Он, безусловно, может связать весь контроллер, и, поскольку большинство потребительских систем имеют только один контроллер диска (тот, который встроен в материнскую плату), это означает, что все хранилища. Еще хуже, если диск выйдет из строя нестандартным и / или непредвиденным образом, что, безусловно, может произойти, если диск будет маргинальным. Вы можете быть заинтересованы в том, как один диск в аппаратном массиве SATA RAID-10 может привести к полной остановке всего массива? Ошибка сервера.
  2. Большинство потребительских дисков SATA имеют длительные периоды времени ожидания по умолчанию (порядка минут), и многие потребительские диски SATA не имеют настраиваемого контроля исправления ошибок . Так называемые накопители NAS часто имеют настраиваемую ERC, а высокопроизводительные накопители практически всегда имеют; такие накопители также могут иметь более короткие тайм-ауты по умолчанию (7 секунд является общим значением). Длительные периоды ожидания выгодны, если на диске хранится единственная копия данных, что, к сожалению, является обычным явлением в потребительских системах; они являются недостатком в конфигурации с резервированием или в тех случаях, когда вы просто хотите извлечь как можно больше из накопителя, прежде чем он еще больше испортится.
  3. Диск будет пытаться прочитать поврежденный сектор, пока не достигнет порогового значения тайм-аута или пока хост не сообщит об отмене. Так как шина SATA может быть связана ожиданием окончания чтения, ОС может не дать сигнал об отмене команды уровня хранилища, а в крайних случаях диски могут даже не очень хорошо реагировать на сброс шины SATA в такой ситуации.

Пункт № 1 является одним из основных пунктов продажи SAS на серверах; SAS имеет значительно лучшую обработку ошибок, чем SATA. Пункт № 2 является ограничением встроенного программного обеспечения накопителя, а № 3 действительно становится проблемой только из-за № 2.

Так что получается, что ОС выдает команду «чтение секторов» на диск, и отдельные сектора каким-то образом повреждены. Таким образом, диск переходит в режим повторных попыток, чтобы попытаться извлечь данные с пластин, снова и снова пытаясь считывать данные, пока не получит достаточно хороших данных, чтобы собственная коррекция ошибок диска ( FEC ) могла исправить оставшиеся ошибки. Если вам не повезло, этого может никогда не быть, но накопитель будет пытаться работать довольно долго, прежде чем решит, что это чтение не будет успешным.

Поскольку операционная система ожидает чтения, это как минимум замедлит процесс копирования до обхода, и в зависимости от конкретной архитектуры ОС может вызвать прерывистость ОС или даже зависание на время. Диск на данный момент занят исходным чтением и не будет отвечать на дальнейшие команды чтения, пока не завершится та, которая выполняется в данный момент (успешно или неудачно), и другое программное обеспечение, как правило, не будет работать лучше, чем его операционная система. работает на.

Следовательно, все, что вызывает чтение в другом месте (в идеале , только на поврежденном диске), будет вынуждено ждать в очереди, пока поврежденный диск либо не успешно прочитает рассматриваемый сектор, либо решит, что его нельзя прочитать. Из-за неоптимальной обработки SATA дисками, не отвечающими на запросы, это может означать, что не только диск, с которого вы копируете, будет задерживать ввод / вывод. Это может очень легко заставить другое программное обеспечение работать медленно или не отвечать, так как это программное обеспечение ожидает завершения другого запроса ввода-вывода, даже если операционная система способна справиться.

Также важно отметить, что дисковый ввод-вывод может происходить, даже если вы явно не обращаетесь к каким-либо файлам на диске. Двумя основными причинами этого могут быть исполняемый код загрузки по требованию и своп. Поскольку подкачка иногда используется, даже когда система не находится под давлением памяти, а исполняемый код загрузки по требованию распространен в современных системах и в современных форматах исполняемых файлов, непреднамеренная активность чтения с диска во время обычного использования является вполне реальной возможностью.

Как указано в комментарии к вопросу Matteo Italia , одной из смягчающих стратегий является использование другого межсоединения хранилища, что является сложным способом сказать «поместите диск в USB-корпус». Абстрагируясь от протокола USB запоминающего устройства , это изолирует проблемную часть SATA от остальной части вашей системы, что означает, что теоретически только проблемы ввода-вывода на этом диске должны затрагивать только операции ввода-вывода на этом конкретном диске.

В некотором смысле, именно поэтому SATA (в частности, SATA без ERC на уровне диска) часто не рекомендуется использовать для RAID (особенно для уровней RAID с избыточностью, которые среди стандартных - все, кроме RAID 0 ); длительные периоды ожидания и плохая обработка ошибок могут легко привести к выбрасыванию целого устройства из массива для одного поврежденного сектора, который RAID-контроллер мог бы обработать очень хорошо, если существует избыточность, и контроллер хранилища просто знает, что это проблема. SAS был разработан для больших массивов хранения, и, таким образом, ожидалось, что время от времени будут возникать проблемы на различных дисках, что привело к тому, что он был спроектирован так, чтобы изящно обрабатывать случай одного проблемного диска или запроса ввода-вывода.даже если диск не Проблемные диски не очень распространены в потребительских системах просто потому, что на них, как правило, установлено не так много дисков, а на тех, которые установлены практически, никогда нет избыточности; Поскольку SATA нацелена на замену PATA / IDE, а не SCSI (последняя является нишей, на которую ориентирована SAS), вполне вероятно, что ее функции и требования по обработке ошибок (или гарантии) были сочтены адекватными для предполагаемого варианта использования.


19
Спасибо за публикацию разумного ответа, объясняющего, что происходит. Это тот тип вопросов, где я обычно вижу расплывчатые ответы типа «потому что система ждет накопителя» или «потому что она спроектирована таким образом».
Мердад

4
@kasperd: довольно много. Хотя отчасти это и является «виной» Windows, поскольку это может случиться так же легко с несколькими контроллерами. ИМО, этот ответ немного заведомо расплывчатый , поскольку корпоративные контроллеры SAS также не защищены от этой проблемы. Это действительно сводится к определенным блокирующим запросам ввода / вывода. Некоторые операции с жестким диском требуют, чтобы операция X гарантированно завершилась до операции Y, и если X никогда не завершится, Y никогда не сможет начаться - и что-либо после того, как Y также зависнет, независимо от того, находится ли диск, контроллер, драйвер или ОС в неисправность.
qasdfdsaq

2
@JustAMartin На самом деле, это почти все уже асинхронно - любое периферийное устройство, которое поддерживает DMA в наши дни, полно асинхронно; ядро только планирует запросы и обрабатывает прерывания, которые сигнализируют, что запрос выполнен. Проблема в том, что иногда вы должны ждать завершения операции - и в процессе они могут заблокировать что-то важное. Как отметил пользователь 20574, виртуальная память - одна из них, но есть множество вещей, которые требуют определенных гарантий. Некоторые части ядра не являются асинхронными, и, конечно, некоторые драйверы / устройства просто отстой.
Луаан

2
@ MichaelKjörling "Поскольку операционная система ожидает чтения, это как минимум замедлит процесс копирования до сканирования, и в зависимости от конкретной архитектуры ОС может привести к прерывистому функционированию ОС или даже к ее зависанию". - Почему именно ОС становится дряблой в случае чтения с дополнительного (не системного) диска? Проблема не может быть полностью из-за поведения обработки ошибок контроллера SATA. Я думаю, что этот ответ мог бы выиграть от информации о том, как Windows обрабатывает ошибки в своей дисковой подсистеме.
Джордан Ригер,

1
@ MichaelKjörling Достаточно справедливо. Ответ содержит много полезной информации, но я думаю, что он не совсем объясняет конкретный сценарий ОП. Чтобы взглянуть на это с другой стороны, можете ли вы сослаться на любую ссылку, чтобы подтвердить свою точку зрения № 1: «С SATA, если диск перестает отвечать на запросы, это может связать всю систему хранения, а не только один диск, который имеет проблемы Это, безусловно, имеет потенциал, чтобы связать весь контроллер ". ? Это похоже на ужасный дизайн. Разве дисковая подсистема ОС не является более вероятным виновником? Т.е. контроллер асинхронный, но драйвер ОС иногда блокируется без необходимости.
Джордан Ригер

3

Как было сказано выше, проблема с зависанием системы из-за плохого жесткого диска в основном связана с длительными попытками диска восстановить нечитаемые данные из поврежденных секторов. Одним из преимуществ корпоративных дисков является очень короткий тайм-аут чтения для неисправных секторов. Использование корпоративного диска может в некоторой степени смягчить ваши проблемы, но не решит их.

Наилучший ответ в будущем - обеспечить правильное резервное копирование, чтобы восстановление не требовалось. Изменение программного обеспечения для восстановления не будет иметь значения, так как это проблема с тайм-аутом прошивки.


2

Почему поврежденные жесткие диски замораживают всю систему?

Они не должны (в общем). Это действительно зависит от конкретной файловой системы, как происходит сбой диска.

Рассмотрим ZFS, которая разработана с нуля, чтобы иметь дело с некоторой отказоустойчивостью. Вот демонстрационное видео (и еще одно с более подробным объяснением ), где они размещают ходовые диски на наковальне, качаются с помощью кувалды и просверливают другой диск. Все время ZFS продолжает работать.


2
На самом деле, существуют сбои диска, с которыми ZFS не справляется. Например, чрезвычайно длительное чтение до истечения времени ожидания запроса ввода-вывода в избыточных или не избыточных установках. (Вы можете также легко настроить ZFS таким образом, чтобы он не имел избыточности.) Это может легко привести к выбрасыванию дисков из массива в ZFS, что, если это опустит вас ниже порога избыточности, может привести к тому, что весь массив будет стать недоступным. Если установлено значение failmode = wait, это может показать аналогичные результаты. Полный сбой полного диска - простой случай для любой подсистемы хранения; проблемы возникают из- за крайних побуждений.
CVN

И прежде чем вы думаете иначе, я фактически запускаю ZFS (почти исключительно) сам. Это отличная файловая система и замечательный менеджер томов, если вы осторожны и знаете, что делаете. Однако он предназначен для систем корпоративного класса (высокопроизводительные рабочие станции и серверы), а администраторам платят за то, что они делают. Он не предназначен для того, чтобы хорошо справляться с некоторыми режимами сбоев, наблюдаемыми в обычном оборудовании, включая проблемы с ОЗУ и дисками, которые слишком долго возвращаются из запроса ввода-вывода, и не предназначен для простоты использования для домашних пользователей или в сценарии использования домашнего пользователя.
CVN

За исключением видео, ZFS не продолжает работать. Он снова начинает работать после отключения привода.
Кристофер Хаммарстрем

-2

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


6
«Система низкого уровня» делает знать приоритет процесса , который запрашивает страницу; такая информация хранится в таблицах страниц , хотя реализация зависит от того, как обрабатывается приоритет. Это не правильный ответ на этот вопрос - это проблема аппаратного обеспечения, а не ОС.
Крис Cirefice

1
Я думаю, что правильный ответ на вопрос состоит в том, чтобы отказаться от использования неисправного диска. Однако это не удовлетворит пользователей, которые по понятным причинам хотят восстановить как можно больше данных.
jrrk
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.