31Jul

Kas kõvaketaste andmed võivad kahjustada ilma hoiatuseta?

Me kõik muretseme oma andmete ja failide turvalisuse ja terviklikkuse pärast, kuid kas on võimalik, et andmed kahjustatakse ja kasutaja saab selle ilma probleemi mingi märguande või hoiatuseta saada? Tänane SuperUseri Q ja postitus vastab muretud lugeja küsimusele.

tänapäeva küsimus &Vastuste seanss tuleb meile viisakalt SuperUseriga - Q & A veebisaitide kogukonnapõhise grupi Stack Exchange jagunemisest.

Foto üldlevinud( Flickr) viisakus.

Küsimus

SuperUser-lugeja topo morto soovib teada, kas kõvakettale salvestatud andmed võivad kahjustada ja sellele juurde pääseda ilma kahju hoiatuseta:

Kas on võimalik, et kõvaketta füüsiline halvenemine võib põhjustada bitti faili sisu ümberlülitamiselilma et operatsioonisüsteem märgiks muutust ja teavitaks seda kasutaja faili lugedes? Näiteks võib ASCII-tekstifailis olev "p"( binaarne 01110000) muuta "q"( binaarne 01110001), siis kui kasutaja avab faili, näevad nad "q", teadmata, et ebaõnnestumine on toimunud?

Mulle on huvi vastused FAT, NTFS või ReFS( kui see muudab midagi).Ma tahan teada, kas opsüsteemid kaitsevad kasutajaid sellest, või kui me peaksime kontrollima oma andmeid koopiate vaheliste erinevuste vahel aja jooksul.

Kas kõvakettale salvestatud andmed halvenevad ja nende juurde pääseb kahju ilma hoiatuseta?

Vastuseks

SuperUseri kaastöötaja Guntram Blohmile on meile vastus:

Jah, on asi nimega natuke murtud. Kuid mitte, see ei mõjuta kasutajat märkamatult.

Kui kõvaketas kirjutab kettaseadmete sektorit, siis ei kirjuta see lihtsalt bitti samamoodi, nagu neid ladustatakse RAMis, siis kasutab see kodeeringut, et veenduda, et sama biti järjestusi pole liiga pikk. Samuti lisab ECC koode, mis võimaldavad parandada mõne bitti mõjutavaid vigu ja tuvastada vigu, mis mõjutavad rohkem kui paari bitti.

Kui kõvaketas loeb sektorit, kontrollib see ECC-koode ja parandab vajaduse korral andmeid( ja võimaluse korral).See, mis edaspidi juhtub, sõltub kõvaketta olukorrast ja püsivarust, mida mõjutab draivi nimetus.

  • Kui sektorit saab lugeda ja tal pole ECC-koodi probleeme, suunatakse see operatsioonisüsteemi.
  • Kui sektorit saab hõlpsasti parandada, võib parandatud versiooni kettaks kirjutada, lugeda ja seejärel kontrollida, et määrata, kas viga oli juhuslik( st kosmilised kiired jne) või kui on tegemist süstemaatilise veaga meediumis.
  • Kui kõvaketas määrab, et meediumil on viga, eraldab see sektori uuesti.
  • Kui sektorit ei saa lugeda ega parandada pärast mõne loe katset( kõvakettale, mis on määratud RAID-kõvakettaks), siis kõvaketas loobub, jagab sektori ümber ja teatab kontrollerile, et seal oliprobleem. Ta tugineb RAID-kontrollerile, et rekonstrueerida sektorit teistest RAID-i liikmetest ja kirjutada see tagasi ebaõnnestunud kõvakettale, mis seejärel salvestab selle ümberjaotatud sektoris( sellel pole loodetavasti probleemi).
  • Kui sektorit pole lauaarvuti kõvakettale võimalik lugeda või parandada, siis hakkab kõvaketas seda rohkem lugema. Sõltuvalt kõvaketta kvaliteedist võib see hõlmata pea ümberpaigutamist, kontrollides, kas on kordumatu lugemise ajal mõnda bitti, kontrollida, millised bittid on kõige nõrgemad, ja mõned muud asjad. Kui mõni nendest katsetest õnnestub, eraldab kõvaketas sektori ümber ja salvestab parandatud andmed.

See on üks peamisi erinevusi kõvakettadena, mida müüakse kui "desktop", "NAS / RAID" või "videovalve" kõvakettad. RAID-kõvaketas võib lihtsalt kiirelt loobuda ja muuta kontroller remontida sektorit, et vältida latentsust kasutaja küljel. Lahtine kõvaketas jätkab uuesti ja uuesti proovimist, sest kasutaja ootamine paar sekundit on ilmselt parem kui öeldes, et andmed on kadunud. Ja video kõvaketta väärtused pakuvad püsivat andmeedastust rohkem kui vea taastamine, sest kahjustatud kaadrina ei märgata tavaliselt isegi märki.

Igal juhul teab kõvaketas, kas see on natuke mädanenud, tavaliselt sellest taastunud, ja kui see ei õnnestu, siis räägib see kontrollerit, mis omakorda annab juhile teada, mis seejärel operatsioonisüsteemile ütleb. Seejärel peab operatsioonisüsteem kuvama kasutajale viga ja tegutsema sellel. Sellepärast ütleb Cybernard:

  • Ma pole kunagi näinud ühe bitise viga ennast, kuid ma olen näinud palju kõvakettasid, kus terved sektorid on ebaõnnestunud.

Kõvaketas teab, kas sektoris on midagi valesti, kuid ei tea, millised bittid on ebaõnnestunud.Ühekordne, mis on ebaõnnestunud, jääb ECC alati kinni.

Pange tähele, et chkdsk ja failisüsteemid, mis ise automaatselt parandavad, ei käsitle failide parandamise andmeid. Need on suunatud failisüsteemi enda struktuuri korruptsioonile, näiteks faili suuruse erinevus kataloogi kirje ja eraldatud plokkide arvu vahel. NTFS-i enesetervendav funktsioon avastab struktuurikahjustuse ja takistab seda teie andmeid veelgi mõjutama, kuid see ei paranda juba kahjustatud andmeid.

On muidugi muud põhjused, miks võivad andmed kahjustuda. Näiteks võib kontrolleril halb RAM-i muuta andmeid enne, kui see isegi kõvakettale saadetakse. Sellisel juhul ei leia kõvakettale ükski mehhanism andmeid ja parandab neid ning see võib olla üks põhjus, miks failisüsteemi struktuur on kahjustatud. Muud põhjused hõlmavad ka tarkvara vigu, kõvakettale kirjutamise ajal tekkinud elektrivälklampi( kuigi seda käsitleb failisüsteemide ajakirjastamine) või halbadesse failisüsteemi draiverid( Linuxi NTFS draiver on vaikimisi lugenud ainult NTFS-i pöördprojekteerimise ajal pikka aega)pole dokumenteeritud ja arendajad ei usaldanud oma koodi).

  • Mul oli see stsenaarium üks kord, kui rakendus salvestab kõik oma failid kahte erinevatesse serveritesse kahes erinevas andmekeskuses, et säilitada kõigis tingimustes kättesaadavate andmete koopia. Mõne kuu pärast märkisime, et umbes 0,1 protsenti kõigist kopeeritud failidest ei vastanud MD5 kontrollsummale, et rakendus on oma andmebaasis salvestatud. See osutus serveri ja SAN vahel vale kiudkaabliga.

Need muud põhjused on põhjuseks, miks mõned failisüsteemid, nagu ZFS, hoiavad täiendavaid kontrollsummasid, et avastada vigu. Need on loodud selleks, et kaitsta teid palju rohkem asju, mis võivad valesti minna kui lihtsalt natuke mädaplekk.

Kas teil on seletamiseks midagi lisada? Helistage kommentaarides. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Tutvu täieliku arutelu teemaga siit.