Hjemmeside » hvordan » Kan data på harddiskene nedbrytes uten advarsel om skadene?

    Kan data på harddiskene nedbrytes uten advarsel om skadene?

    Vi er alle bekymret for å holde våre data og filer trygge og intakte, men er det mulig for data å bli skadet og få tilgang til en bruker uten varsel eller advarsel av noe slag om problemet? Dagens SuperUser Q & A-innlegg har svaret på en bekymret lesers spørsmål.

    Dagens Spørsmål & Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppering av Q & A-nettsteder.

    Foto av generalisering (Flickr).

    Spørsmålet

    SuperUser leser topo morto vil vite om data på harddisker kan nedbrytes og få tilgang uten advarsel om skadene:

    Er det mulig at fysisk nedbryting av en harddisk kan føre til at biter "flip" i filens innhold uten at operativsystemet merker endringen og varsle brukeren om det når du leser filen? For eksempel kan en "p" (binær 01110000) i en ASCII-tekstfil endres til en "q" (binær 01110001), og når en bruker åpner filen, ser de "q" uten å være klar over at det har oppstått en feil?

    Jeg er interessert i svar knyttet til FAT, NTFS eller ReFS (hvis det gjør en forskjell). Jeg vil vite om operativsystemer beskytter brukere mot dette, eller hvis vi skal sjekke våre data for avvik mellom kopier over tid.

    Kan data på harddisker nedbrytes og nås uten advarsel om skadene?

    Svaret

    SuperUser-bidragsyter Guntram Blohm har svaret for oss:

    Ja, det er en ting som heter bit rot. Men nei, det vil ikke påvirke en bruker ubemerket.

    Når en harddisk skriver en sektor til tallerkener, skriver den ikke bare biter på samme måte som de lagres i RAM, den bruker en koding for å sikre at det ikke er noen sekvenser av samme bit som er for lange. Den legger også til ECC-koder som gjør det mulig å reparere feil som påvirker noen få biter og oppdage feil som påvirker mer enn noen få biter.

    Når harddisken leser sektoren, kontrollerer den disse ECC-kodene og reparerer dataene om nødvendig (og om mulig). Det som skjer, avhenger av omstendighetene og fastvaren til harddisken, som påvirkes av betegnelsen på stasjonen.

    • Hvis en sektor kan leses og ikke har noen ECC-kodeproblemer, blir den videreført til operativsystemet.
    • Hvis en sektor kan repareres enkelt, kan den reparerte versjonen skrives til disk, leses tilbake og verifiseres for å avgjøre om feilen var tilfeldig (dvs. kosmiske stråler etc.) eller hvis det er en systematisk feil med media.
    • Hvis harddisken bestemmer at det er en feil med media, omfordeler den sektoren.
    • Hvis en sektor ikke kan leses eller korrigeres etter noen lette forsøk (på en harddisk som er utpekt som en RAID-harddisk), vil harddisken gi opp, omfordele sektoren og fortelle kontrolleren at det var et problem . Det er avhengig av RAID-kontrolleren for å rekonstruere sektoren fra de andre RAID-medlemmene og skrive den tilbake til den mislykkede harddisken, som deretter lagrer den i den omfordelte sektoren (som forhåpentligvis ikke har noe problem).
    • Hvis en sektor ikke kan leses eller korrigeres på en stasjonær harddisk, vil harddisken engasjere seg i flere forsøk på å lese den. Avhengig av kvaliteten på harddisken, kan dette innebære at reposisjonering av hodet skal kontrolleres for å se om det er noen biter som blinker når de leses gjentatte ganger, sjekker hvilke biter som er de svakeste og noen andre ting. Hvis noen av disse forsøkene lykkes, vil harddisken omfordele sektoren og skrive tilbake de reparerte dataene.

    Dette er en av de viktigste forskjellene mellom harddisker som selges som "desktop", "NAS / RAID" eller "videoovervåkning" harddisker. En RAID-harddisk kan bare gi opp raskt og få kontrolleren til å reparere sektoren for å unngå latens på brukerens side. En stasjonær harddisk vil fortsette å prøve igjen og igjen fordi å ha brukeren vente noen sekunder er sannsynligvis bedre enn å fortelle dem at dataene går tapt. Og en video harddisk verdier konstant datahastigheter mer enn feilgjenoppretting som en skadet ramme vil vanligvis ikke engang bli lagt merke til.

    I alle fall vil harddisken vite om det har vært bitrot, vil vanligvis gjenopprette fra det, og hvis det ikke kan, vil det fortelle kontrolleren som igjen vil fortelle driveren som da vil fortelle operativsystemet. Da er det opp til operativsystemet å presentere feilen til brukeren og handle på den. Det er derfor cybernard sier:

    • Jeg har aldri vært vitne til en enkelt bitfeil selv, men jeg har sett mange harddisker der hele sektorer har mislyktes.

    Harddisken vil vite om det er noe galt med en sektor, men det vet ikke hvilke biter som har feilet. En enkelt bit som har feilet vil alltid bli fanget av ECC.

    Vær oppmerksom på at chkdsk og filsystemer som automatisk reparerer seg ikke adresserer reparasjon av data i filer. Disse er rettet mot korrupsjon innenfor selve filsystemets struktur, som en forskjell i filens størrelse mellom katalogoppføringen og antall tildelte blokker. Den selvhelbredende egenskapen til NTFS vil oppdage strukturskade og hindre at den påvirker dataene dine ytterligere, men det vil ikke reparere data som allerede er skadet.

    Det er selvfølgelig andre årsaker til at data kan bli skadet. For eksempel kan dårlig RAM på en kontroller endre data før den til og med sendes til harddisken. I så fall vil ingen mekanisme på harddisken oppdage eller reparere dataene, og dette kan være en grunn til at strukturen i et filsystem er skadet. Andre grunner er programvarebugs, blackouts mens du skriver til harddisken (selv om dette er adressert ved filsystem journaling) eller dårlige filsystemdrivere (NTFS-driveren på Linux misligholdt til skrivebeskyttet lenge siden NTFS var omvendt konstruert, ikke dokumentert, og utviklerne stolte ikke på sin egen kode).

    • Jeg hadde dette scenariet en gang der et program ville lagre alle sine filer til to forskjellige servere i to forskjellige datasentre for å holde en arbeidskopi av dataene tilgjengelige under alle omstendigheter. Etter et par måneder oppdaget vi at ca. 0,1 prosent av alle kopierte filene ikke samsvarer med MD5-sjekksummen som programmet lagret i databasen. Det viste seg å være en feil fiberkabel mellom serveren og SAN.

    Disse andre grunnene er hvorfor noen filsystemer, som ZFS, beholder tilleggsinformasjon for å oppdage feil. De er designet for å beskytte deg mot mye flere ting som kan gå galt enn bare litt rot.


    Har du noe å legge til forklaringen? Lyder av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.