31Jul

Voivatko tiedot kiintolevyistä rappeutua ilman varoitusta vahingosta?

Olemme kaikki huolissamme siitä, että tietojemme ja tiedostojen säilyttäminen on turvallista ja ehjää, mutta onko tietoja mahdollista vahingoittaa ja käyttää niitä ilman minkäänlaista ilmoitusta tai varoitusta ongelmasta? Tämän päivän SuperUser Q & A -postilla on vastaus huolestuneeseen lukijan kysymykseen.

Päivän kysymys &Vastausistunto tulee meille kohteliaasti SuperUser-osastoon Stack Exchange, yhteisöllinen ryhmittely Q & A verkkosivuilla.

Yleiskuvaus( Flickr).

Kysymys

SuperUser-lukija topo morto haluaa tietää, voivatko kiintolevyillä olevat tiedot heikentyä ja päästä käsiksi ilman varoitusta vaurioista:

Onko mahdollista, että kiintolevyn fyysinen hajoaminen voi aiheuttaa bittien "kääntymisen" tiedoston sisällössäilman että käyttöjärjestelmä havaitsee muutoksen ja ilmoittaa käyttäjälle tiedoston käsittelyssä?Esimerkiksi ASCII-tekstitiedostossa oleva "p"( binaarinen 01110000) voi muuttua "q": ksi( binäärinen 01110001), silloin kun käyttäjä avaa tiedoston, he näkevät "q" tietämättä, että vika on ilmennyt?

Olen kiinnostunut FAT: n, NTFS: n tai ReFS: n vastauksista( jos se tekee eron).Haluan tietää, käyttävätkö käyttöjärjestelmät käyttäjiä tältä vai pitäisikö meidän tarkistaa tietoja kopioiden välisistä eroista ajan mittaan.

Voivatko kiintolevyillä olevat tiedot huonontua ja käyttää niitä ilman varoitusta vaurioista?

Vastaus

SuperUser-avustaja Guntram Blohmilla on vastaus meille:

Kyllä, on juttu nimeltään bit rot. Mutta ei, se ei vaikuta käyttäjän huomaamatta.

Kun kiintolevy kirjoittaa sektoria platoille, se ei vain kirjoita bittejä samalla tavalla kuin ne on tallennettu RAM: iin, se käyttää koodausta varmistaakseen, että ei ole saman bittisiä sekvenssejä, jotka ovat liian pitkiä.Se lisää myös ECC-koodit, joiden avulla se voi korjata virheet, jotka vaikuttavat muutamiin bitteihin ja havaitsevat virheitä, jotka vaikuttavat enemmän kuin muutama bitti.

Kun kiintolevy lukee sektoria, se tarkistaa nämä ECC-koodit ja korjaa tiedot tarvittaessa( ja jos mahdollista).Mitä seuraavaksi tapahtuu, riippuu kiintolevyn olosuhteista ja laiteohjelmistosta, johon vaikuttaa taajuusmuuttajan nimitys.

  • Jos sektori voidaan lukea ja sillä ei ole ECC-koodin ongelmia, se siirretään käyttöjärjestelmään.
  • Jos sektori voidaan korjata helposti, korjattu versio voidaan kirjoittaa levylle, lukea, tarkistaa sitten, onko virhe ollut satunnaista( eli kosmisia säteitä jne.) Vai onko järjestelmällinen virhe median kanssa.
  • Jos kiintolevy määrittää, että media on virhe, se kohdistaa alan uudelleen.
  • Jos sektoria ei voi lukea eikä korjata muutamien lukemisyritysten jälkeen( kiintolevylle, joka on nimetty RAID-kiintolevyksi), kiintolevy luopuu, kohdistaa alan uudelleen ja kertoo ohjaimelle, ettäongelma. Se tukeutuu RAID-ohjaimeen rekonstruoimaan sektoria muista RAID-jäsenistä ja kirjoittamaan sen takaisin epäonnistuneeseen kiintolevyasemaan, joka sitten tallentaa sen uudelleenkohdennetulle sektorille( joka toivottavasti ei ole ongelma).
  • Jos sektoria ei voida lukea tai korjata työpöydän kiintolevyllä, kiintolevy käynnistyy yhä useammin lukemalla sitä.Kiintolevyn laadusta riippuen tämä saattaa edellyttää pään sijoittamista uudelleen tarkistamalla, onko bittejä, jotka lukevat toistuvasti, tarkistaa, mitkä bitit ovat heikoin ja muutamia muita asioita. Jos jokin näistä yrityksistä onnistuu, kiintolevy siirtää alan uudelleen ja palauttaa korjatut tiedot.

Tämä on yksi tärkeimmistä eroista kovalevyjen, joita myydään "työpöydälle", "NAS / RAID" tai "videovalvonnan" kovalevyinä.RAID-kiintolevy voi vain luopua nopeasti ja tehdä ohjaimen korjata sektoria, jotta vältettäisiin käyttäjän viivästyminen. Työpöydän kovalevy jatkaa yrittämistä uudestaan ​​ja uudestaan, koska käyttäjän odottaminen muutamasta sekunnista on todennäköisesti parempi kuin kertoa heille, että tiedot menetetään. Ja videon kiintolevy arvostaa vakiintuneita datanopeuksia enemmän kuin virheiden palauttaminen vaurioituneeksi kehykseksi, sitä ei edes huomaa.

Joka tapauksessa kiintolevy tietää, onko bitin murtama, yleensä palauttaa siitä, ja jos se ei onnistu, se kertoo ohjaimelle, joka puolestaan ​​kertoo kuljettajalle, joka sitten kertoo käyttöjärjestelmälle. Tällöin käyttöjärjestelmän on esitettävä virhe käyttäjälle ja tehtävä sitä.Siksi cybernard sanoo:

  • En ole koskaan nähnyt yhtään bittivirheä itseäni, mutta olen nähnyt paljon kiintolevyjä, joissa kaikki sektorit ovat epäonnistuneet.

Kiintolevy tietää, onko alalla jotain vikaa, mutta se ei tiedä, mikä bitti on epäonnistunut. ECC sulkee aina yhden epäonnistuneen bitin.

Huomaa, että chkdsk- ja tiedostojärjestelmät, jotka korjaavat itsensä automaattisesti, eivät korjaa tiedostojen tietojen korjaamista. Nämä kohdistuvat korruptoitumiin itse tiedostorakenteen rakenteessa, kuten ero tiedoston kokoon hakemistomerkinnän ja allokoidun lohkojen määrän välillä.NTFS: n itsensä parantava ominaisuus havaitsee rakenteelliset vauriot ja estää sen vaikutusta tietojasi entisestään, mutta se ei korjaa jo vaurioituneita tietoja.

Tietenkin muista syistä, miksi tiedot voivat vahingoittua. Esimerkiksi ohjaimen huonot RAM-muistit voivat muuttaa tietoja ennen kuin ne lähetetään jopa kiintolevylle. Tällöin kiintolevyllä ei ole mitään mekanismia, joka tunnistaa tai korjaa tiedot, ja tämä voi olla yksi syy, miksi tiedostojärjestelmän rakenne on vioittunut. Muita syitä ovat ohjelmistovirheet, sähkökatkokset kirjoitettaessa kiintolevylle( vaikkakin tämä on osoitettu tiedostojärjestelmän päivittämisellä) tai huono tiedostojärjestelmäohjaimet( NTFS-ajuri Linuxissa oletuksena vain luku-lukemiseksi pitkään, koska NTFS:ei dokumentoitu, ja kehittäjät eivät luottaneet omaa koodiaan).

  • Minulla oli tämä skenaario, kun sovellus tallensisi kaikki tiedostot kahdelle eri palvelimelle kahdessa eri datakeskuksessa, jotta tiedot olisivat käytettävissä kaikissa olosuhteissa. Muutaman kuukauden kuluttua havaitsimme, että noin 0,1 prosenttia kaikista kopioiduista tiedostoista ei vastannut MD5-tarkistussummaa, jonka sovellus tallensi tietokantaan. Se osoittautui vialliseksi kuitukaapeliksi palvelimen ja SAN: n välillä.

Nämä muutkin syyt johtuvat siitä, että tietyt tiedostojärjestelmät, kuten ZFS, pitävät ylimääräisiä tarkistussummatietoja virheiden havaitsemiseen. Ne on suunniteltu suojelemaan sinua paljon enemmän asioita, jotka voivat mennä pieleen kuin vain roskaa.

Onko jotain lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä?Katso koko keskusteluketju täältä.