Чому пошкоджені жорсткі диски заморожують всю систему?


128

Чому жорсткий диск, який, як відомо, має погані блоки (перевірені в HDTune та HDDScan), заморожує всю мою систему?

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

У мене виникли проблеми з майже кожним пошкодженим жорстким диском та кожним ПК з Windows.

Я сподівався б побачити заморожування лише для програми, яку я використовую для копіювання файлів (Windows Explorer і т.д.), але натомість весь мій ПК стає ривком, і я не можу переглядати Інтернет чи дивитися фільми, копіюючи файли з пошкодженого диска.

Довга історія.

Я живу в сільській місцевості, де є проблеми з електроенергією (відключення тощо). Я сам використовую ДБЖ та мої власні жорсткі диски - це прекрасно. Але мої сусіди часто звертаються за допомогою до своїх проблем з ПК, і я часто виявляю, що їх жорсткі диски пошкоджені, швидше за все, через проблеми з електрикою. Звичайно, після заміни пошкодженого накопичувача я пропоную своїм сусідам придбати ДБЖ.

Мені завжди було цікаво, чому мій ПК повністю застигає під час отримання даних з пошкоджених дисків. Це апаратне питання? Це викликано тим, як ОС читає дані? Це щось, що стосується Windows, і я не відчуваю цього на * nix?

Так чи інакше, замість Провідника Windows я буду використовувати якесь спеціалізоване програмне забезпечення (наприклад, Roadstop's Unstoppable Copier), хоча я не впевнений, чи це буде працювати інакше, не заморожуючи весь ПК.

Це не прохання про допомогу, це скоріше для освітніх цілей, тому я знаю, чому все працює саме так.


11
Використання зовнішнього USB-корпусу повинно допомогти, оскільки ви більше не прив'язуєте несправний диск до системного контролера SATA (також додавання додаткового шару пожертвувального обладнання між вашою материнською платою та несправним диском - це завжди хороша ідея).
Маттео Італія

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 невідповідних накопичувачів, це може означати, що не тільки привід, з якого ви копіюєте, затримується введення-виведення. Це може дуже легко призвести до того, що інше програмне забезпечення також стає повільним або безвідповідальним, оскільки це програмне забезпечення чекає завершення іншого запиту вводу / виводу, навіть якщо операційна система здатна впоратися.

Тут також важливо зазначити, що введення / виведення диска може статися, навіть якщо ви явно не маєте доступу до жодних файлів на диску. Дві основні причини цього - виконуваний код на вимогу та swap. Оскільки підкачка іноді використовується навіть у тому випадку, коли система не знаходиться під тиском пам’яті, а виконуваний код за запитом на вимогу є поширеним у сучасних системах та із сучасними виконуваними форматами файлів, ненавмисна активність читання диска під час звичайного використання - це справді реальна можливість.

Як зазначається в коментарі до запитання Matteo Italia , однією із пом'якшувальних стратегій є використання іншого взаємозв'язку для зберігання даних, що є складним способом сказати "покласти диск у USB-корпус". Абстрагуючи протокол масового зберігання USB , це ізолює проблематичну частину SATA від решти вашої системи, а це означає, що теоретично проблеми вводу / виводу на цьому диску повинні впливати лише на введення / виведення цього конкретного диска.

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


19
Дякуємо, що фактично розмістили розумну відповідь, яка пояснює, що відбувається. Це такий тип запитань, де я зазвичай бачу розпливчасті відповіді на кшталт "тому що система чекає накопичувача" або "тому що вона створена саме так".
Мехрдад

4
@kasperd: Досить. Незважаючи на те, що це є частиною "помилки" Windows, оскільки це може статися так само легко, як і декілька контролерів. IMO ця відповідь дещо навмисно невизначена , оскільки підприємства-контролери SAS також не застраховані від цього питання. Це дійсно просто зводиться до певних блокуючих запитів вводу / виводу. Деякі операції на жорсткому диску вимагають, щоб операція X була гарантована до завершення перед операцією Y, і якщо X ніколи не закінчується, Y ніколи не може починатися - і все, що після Y також застрягає, вкажіть, чи знаходиться привід, контролер, драйвер або ОС вина.
qasdfdsaq

2
@JustAMartin Насправді це вже майже все асинхронізація - будь-яка периферія, яка підтримує DMA в ці дні, повна на асинхронному рівні; ядро тільки планує запити і обробляє переривання, які сигналізують про запит. Проблема полягає в тому, що іноді потрібно дочекатися завершення операції - і в процесі вони можуть заблокувати щось важливе. Як зазначав user20574, віртуальна пам'ять - одна з таких, але є багато речей, які потребують певних гарантій. Деякі частини ядра не асинхронні, і, звичайно, деякі драйвери / пристрої просто висмоктуються.
Луань

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

1
@ MichaelKjörling Ярмарок досить. У відповіді багато корисної інформації, але я думаю, що це не зовсім пояснює конкретний сценарій ОП. Якщо ви звернетесь до нього з іншого кута, чи можете ви навести будь-яку посилання на резервну копію своєї точки №1: "За допомогою SATA, якщо накопичувач перестане реагувати, це може зв’язати всю систему зберігання, а не лише один привід, який має проблеми. . Це, безумовно, має потенціал пов'язати весь контролер ". ? Це здається жахливим дизайном. Чи не є підсистема дискових систем ОС найімовірнішим винуватцем? Тобто контролер асинхронний, але драйвер ОС іноді блокується без потреби.
Йордан Рігер

3

Як було сказано вище, проблема із зависанням системи через поганий жорсткий диск пов'язана насамперед із тривалими спробами накопичувача відновити нечитабельні дані з поганих секторів. Одним із пунктів продажу приводів підприємств є дуже короткий час очікування для невдалих секторів. Використання приводу підприємства може певною мірою пом'якшити ваші проблеми, але не вирішить їх.

Найкраща відповідь, рухаючись вперед, - підтримувати належні резервні копії, щоб відновлення не вимагалося. Зміна програмного забезпечення для відновлення не матиме значень, оскільки це проблема очікування програмного забезпечення.


2

Чому пошкоджені жорсткі диски заморожують всю систему?

Вони не повинні (загалом). Це дійсно залежно від конкретної файлової системи, як вирішується несправність диска.

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


2
Насправді, є збої на диску, з якими ZFS не дуже добре справляється. Наприклад, надзвичайно довге зчитування перед тимчасовим ісковим запитом вводу / виводу в надмірних або не надлишкових налаштуваннях. (Ви можете так само легко налаштувати ZFS таким чином, щоб він не мав надмірності.) Це може легко призвести до того, що диски викидаються з масиву в ZFS, що, якщо це опустить вас нижче порогу надмірності, може призвести до того, що весь масив буде стають недоступними Якщо встановлено параметр failmode = зачекати, це може показати подібні результати. Повна поломка повного диска є простим випадком для будь-якої підсистеми зберігання; це граничні приводи, які створюють проблеми.
CVn

І перш ніж подумати про інше, я фактично керую ZFS (майже виключно) сам. Це чудова файлова система та чудовий менеджер томів, якщо ви обережні і знаєте, що робите. Однак він розроблений для систем корпоративного класу (робочих станцій і серверів високого класу), адміністраторам платно знати, що вони роблять. Він не розроблений для того, щоб добре справлятися з деякими режимами відмов, що спостерігаються в товарному обладнанні, включаючи проблеми з оперативною пам’яттю та накопичувачами, які потребують надто довгого часу, щоб повернутися з запиту вводу / виводу, і він не розроблений для зручності використання для домашніх користувачів або в випадки використання домашніх користувачів.
CVn

За винятком відео, ZFS не продовжує працювати. Він починає працювати знову після відключення накопичувача.
Крістофер Хаммарстрьом

-2

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


6
«Система низького рівня» робить знати пріоритет процесу , який запитує сторінку; така інформація зберігається у табличних сторінках , хоча реалізація залежить від системи від пріоритету. Це не є правильною відповіддю на запитання - це апаратне питання, а не проблема ОС.
Chris Cirefice

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