Данните за твърди дискове могат да се разрушат без предупреждение за щети?
Ние всички се тревожим за запазването на нашите данни и файлове в безопасност, но дали е възможно данните да се повредят и да бъдат достъпни от потребител без уведомление или предупреждение от какъвто и да е вид за проблема? Днешната публикация за въпроси и отговори SuperUser има отговор на притеснен въпрос на читателя.
Днешната сесия за въпроси и отговори идва при нас с любезното съдействие на SuperUser - подразделение на Stack Exchange, групирано от общността уеб сайтове за въпроси и отговори.
Снимка е предоставена от обобщаване (Flickr).
Въпроса
SuperUser четецът topo morto иска да знае дали данните на твърдите дискове могат да се разградят и да бъдат достъпни без предупреждение за повредата:
Възможно ли е физическото деградация на твърдия диск да доведе до „преобръщане“ на битовете в съдържанието на файла, без операционната система да забележи промяната и да уведоми потребителя за това, когато чете файла? Например, може ли „p“ (двоичен 01110000) в ASCII текстов файл да се промени на „q“ (двоичен 01110001), след което, когато потребител отвори файла, те виждат „q“, без да са наясно, че е настъпила грешка.?
Интересувам се от отговори, свързани с FAT, NTFS или ReFS (ако има разлика). Искам да знам дали операционните системи защитават потребителите от това или ако трябва да проверяваме данните си за отклонения между копия във времето.
Данните за твърдите дискове могат да се разградят и да бъдат достъпни без предупреждение за щетите?
Отговорът
Сътрудникът на SuperUser Guntram Blohm има отговор за нас:
Да, има нещо, което се нарича малко гниене. Но не, това няма да засегне потребителя незабелязано.
Когато твърдият диск запише сектор в плочите, той не само записва битовете по същия начин, по който се съхраняват в RAM, а използва кодиране, за да се увери, че няма последователности от един и същ бит, които са твърде дълги. Той също така добавя ECC кодове, които му позволяват да поправя грешки, които засягат няколко бита и да открива грешки, които засягат повече от няколко бита..
Когато твърдият диск чете сектора, той проверява тези ECC кодове и ремонтира данните, ако е необходимо (и ако е възможно). Какво се случва след това зависи от обстоятелствата и фърмуера на твърдия диск, който е повлиян от обозначението на устройството.
- Ако секторът може да бъде прочетен и няма проблеми с ECC кода, той се предава на операционната система.
- Ако един сектор може да бъде поправен лесно, поправената версия може да бъде записана на диск, да бъде прочетена обратно, след това да бъде проверена, за да се определи дали грешката е случайна (т.е. космически лъчи и т.н.) или ако има системна грешка с медията.
- Ако твърдият диск определи, че има грешка с носителя, той преразпределя сектора.
- Ако секторът не може да бъде прочетен или коригиран след няколко опита за четене (на твърд диск, който е определен като RAID твърд диск), тогава твърдият диск ще се откаже, ще преразпредели сектора и ще каже на администратора, че има проблем , Той разчита на RAID контролера да реконструира сектора от другите RAID членове и да го запише обратно на неуспешния твърд диск, който след това го съхранява в преразпределения сектор (който, надявам се, няма проблем).
- Ако секторът не може да бъде прочетен или коригиран на твърдия диск на работния плот, тогава твърдият диск ще се опита да го прочете. В зависимост от качеството на твърдия диск, това може да включва препозициониране на главата, проверка дали има някакви битове, които се отварят, когато се четат многократно, като се проверява кои бита са най-слабите и няколко други неща. Ако някой от тези опити е успешен, твърдият диск ще преразпредели сектора и ще запише обратно поправените данни.
Това е една от основните разлики между твърдите дискове, които се продават като “настолни”, “NAS / RAID” или “видео наблюдение” твърди дискове. Един RAID твърд диск може просто да се откаже бързо и да накара контролера да ремонтира сектора, за да се избегне латентност от страна на потребителя. Твърд диск на работния плот ще продължи да се опитва отново и отново, защото ако потребителят изчака няколко секунди, вероятно е по-добре, отколкото да им каже, че данните са загубени. И видео твърд диск стойности постоянна скорост на данните повече от възстановяване на грешка, тъй като повредената рамка обикновено няма дори да бъдат забелязани.
Във всеки случай, на твърдия диск ще знам, ако е имало малко гниене, обикновено ще се възстанови от него, и ако не може, той ще каже на контролера, който от своя страна ще каже на водача, който след това ще каже на операционната система. След това операционната система трябва да представи грешката на потребителя и да действа по него. Ето защо кибернард казва:
- Аз никога не съм виждал само една грешка, но съм виждал много твърди дискове, където цели сектори са се провалили.
Твърдият диск ще знае дали нещо не е наред с даден сектор, но няма да знае кои бита не са успели. Един бит, който е неуспешен, винаги ще бъде заловен от ECC.
Моля, обърнете внимание, че chkdsk и файловите системи, които автоматично се възстановяват, не се отнасят за поправка на данни в файлове. Те са насочени към корупция в структурата на самата файлова система, като разлика в размера на файла между записа на директорията и броя на разпределените блокове. Функцията за самоизлекуване на NTFS ще открие структурни повреди и ще предотврати по-нататъшното й повлияване на данните, но няма да поправи никакви данни, които вече са повредени..
Разбира се, има и други причини, поради които данните могат да бъдат повредени. Например лошото RAM на контролера може да промени данните, преди да бъде изпратено дори на твърдия диск. В този случай нито един механизъм на твърдия диск няма да открие или поправи данните и това може да е една от причините структурата на файловата система да бъде повредена. Други причини включват бъгове в софтуера, затъмнения при писане на твърдия диск (въпреки че това се разглежда от журналирането на файловата система) или лошите драйвери на файловата система (драйверът на NTFS за Linux е дефиниран само за четене от дълго време, тъй като NTFS е реконструиран, не са документирани и разработчиците не са се доверили на собствения си код).
- Имах този сценарий веднъж, когато едно приложение би запазило всичките му файлове на два различни сървъра в два различни центъра за данни, за да поддържа работно копие на наличните данни при всякакви обстоятелства. След няколко месеца забелязахме, че около 0,1% от всички копирани файлове не съвпадат с контролната сума MD5, която приложението съхранява в базата данни. Оказа се, че това е дефектен кабел между сървъра и SAN.
Тези други причини са причината някои файлови системи, като ZFS, да поддържат допълнителна информация за сумата за проверка, за да откриват грешки. Те са предназначени да ви предпазят от много повече неща, които могат да се объркат, отколкото просто гниене.
Имате ли какво да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други технологични потребители на Stack Exchange? Вижте пълната тема за дискусия тук.