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


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

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

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

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

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

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

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

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

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


125
2017-08-09 12:35


Источник


Использование внешнего USB-устройства должно помочь, поскольку вы больше не привязываете неисправный диск к контроллеру SATA вашей системы (также добавление дополнительного слоя жертвопригодного оборудования между вашей материнской платой и неисправным диском всегда является хорошей идеей). - Matteo Italia
Это не характерно для SATA, диски IDE сделали это тоже. Также только потому, что диск поврежден, это не означает, что контроллер не работает, особенно если электрическая неисправность повредила диск. - Chris H
Принятый ответ является удивительным и содержит то, что я собираюсь сказать, и многое другое. В основном вы впадаете в панику от своего контроллера SATA, который является очень важным системным устройством, которое, в свою очередь, паникует Windows. Я действительно задаюсь вопросом, может ли активировать AHCI / «горячую замену» в BIOS, чтобы улучшить ситуацию. - Arthur Kay


Ответы:


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

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

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

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

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

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

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

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

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

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


162
2017-08-09 13:28



Спасибо за то, что вы отправили разумный ответ, который объясняет, что происходит. Это вопрос, в котором я обычно вижу неопределенные ответы типа «потому что система ждет диск» или «потому что он разработан именно так». - Mehrdad
@kasperd: В значительной степени. Хотя часть этого также является «ошибкой» Windows, так как это может произойти так же легко с несколькими контроллерами. ИМО этот ответ немного сознательно расплывчатый, так как корпоративные контроллеры SAS также не защищены от проблемы. Это действительно просто сводится к определенным блокирующим запросам ввода-вывода. Некоторые операции с жестким диском требуют, чтобы операция X была гарантирована, чтобы быть законченной до операции Y, и если X никогда не закончится, Y никогда не начнется - и что-нибудь после того, как Y застрянет, укажите, будет ли диск, контроллер, драйвер или ОС на неисправность. - qasdfdsaq
@JustAMartin На самом деле, это почти все async уже - любое периферийное устройство, которое поддерживает DMA в эти дни, полно асинхронно; ядро только планирует запросы и обрабатывает прерывания, которые сигнализируют, что запрос выполнен. Проблема в том, что иногда вы должен дождитесь завершения операции - и в процессе они могут заблокировать что-то важное. Как отметил user20574, виртуальная память является одной из них, но есть много вещей, требующих некоторых гарантий. Некоторые части ядра не являются асинхронными, и, конечно же, некоторые драйверы / устройства просто сосут. - Luaan
@ MichaelKjörling «Поскольку операционная система ожидает чтения, это, по крайней мере, замедлит процесс копирования для обхода, и в зависимости от точной архитектуры ОС может привести к тому, что ОС станет рывком или даже заморозится в течение продолжительности». - Почему именно ОС становится рывкой в ​​случае чтения из вторичного (не системного) диска? Проблема не может быть полностью связана с поведением обработки ошибок контроллера SATA. Я думаю, что этот ответ может извлечь выгоду из информации о том, как Windows обрабатывает ошибки в своей дисковой подсистеме. - Jordan Rieger
@ MichaelKjörling достаточно. В ответе есть много хорошей информации, но я думаю, что это не совсем объясняет специфический сценарий OP. Чтобы прийти к нему под другим углом, можете ли вы ссылаться на любую ссылку для резервного копирования своей точки №1: «С SATA, если диск перестает отвечать на запросы, это может связать всю систему хранения, а не только тот диск, который имеет проблемы. У него, безусловно, есть потенциал для привязки всего контроллера».? Это кажется ужасным дизайном. Разве это не дисковая подсистема ОС более вероятная виновница? То есть контроллер является асинхронным, но драйвер ОС иногда блокируется без необходимости. - Jordan Rieger


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

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


3
2017-08-11 15:03





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

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

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


2
2017-08-11 17:46



На самом деле, есть сбои дисков, с которыми ZFS не справляется. Например, чрезвычайно долго читается до истечения времени ожидания ввода-вывода, в резервных или не избыточных настройках. (Вы можете так же легко настроить ZFS таким образом, чтобы у него не было избыточности.) Это может легко привести к выходу дисков из массива в ZFS, который, если это опустится ниже порога избыточности, может привести к тому, что весь массив будет становятся недоступными. Если установлено с failmode = wait, это может показать аналогичные результаты. Всесторонний отказ полного диска - это легко для любой подсистемы хранения; его маргинальный которые создают проблемы. - Michael Kjörling
И прежде чем вы подумаете иначе, я фактически запускаю ZFS (почти исключительно). Это отличная файловая система и замечательный менеджер томов, если вы осторожны и знаете, что делаете. Однако он предназначен для систем корпоративного класса (высокопроизводительные рабочие станции и серверы), при этом администраторы платят за то, что они делают. Он не предназначен для того, чтобы хорошо справляться с некоторыми режимами сбоя, наблюдаемыми в аппаратных средствах на рынке, включая проблемы с памятью и накопители, которые слишком долго возвращаются из запроса ввода-вывода и не предназначены для простоты использования для домашних пользователей или в Домашние пользовательские прецеденты. - Michael Kjörling
За исключением видео, ZFS не работает. Он снова запускается после отсоединения накопителя. - Christoffer Hammarström


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


-2
2017-08-10 13:24



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