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