Olemme kaikki huolissamme siitä, että tietomme ja tiedostot säilytetään turvallisina ja ehjinä, mutta onko mahdollista, että käyttäjä voi vahingoittaa tietoja ja käyttää niitä ilman minkäänlaista ilmoitusta tai varoitusta ongelmasta? Tänään SuperUser Q & A -postilla on vastaus huolestuneeseen lukijan kysymykseen.
Tämän päivän kysymys- ja vastausistunto tulee meihin SuperUserin hyväksi - Stack Exchangein alaosasto, joka on yhteisöllinen Q & A-sivustojen ryhmittely.
Photo courtesy of generalising (Flickr).
SuperUser-lukijan topo morto haluaa tietää, voivatko kiintolevyillä olevat tiedot huonontua ja käyttää niitä ilman varoitusta vaurioista:
Onko mahdollista, että kiintolevyn fyysinen hajoaminen voi aiheuttaa bittien "käännä" tiedoston sisällön ilman, että käyttöjärjestelmä huomaa muutoksen ja ilmoittaa käyttäjälle tiedosta luettaessa? 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 on erilainen). 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 tiedot kiintolevyistä huonontua ja käyttää niitä ilman varoitusta vaurioista?
SuperUser-avustaja Guntram Blohm on meille vastaus:
Kyllä, on jotain nimeltään brutaalia. Mutta ei, se ei vaikuta käyttäjän huomaamatta.
Kun kiintolevy kirjoittaa sektoria platoille, se ei vain kirjoita bittejä samalla tavoin 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 satunnainen (eli kosmiset säteet 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, jakaa alan uudelleen ja kertoo ohjaimelle, että ongelma oli . 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 vakioita datanopeuksia enemmän kuin virheiden palauttaminen vaurioituneeksi kehykseksi, sitä ei edes huomaa.
Joka tapauksessa kiintolevy tietää, onko bitroottinen, palaa yleensä 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.
On tietenkin muita syitä, 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 jokin asia lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä? Katso koko keskusteluketju täältä.