Hjemmeside » hvordan » Hva gjør 'Verify Disc' faktisk etter brenning for å bekrefte dataene?

    Hva gjør 'Verify Disc' faktisk etter brenning for å bekrefte dataene?

    Funksjonen "verifiser disk" er flott for å sørge for at den nylig brente platen viste seg bra, men hvordan virker det akkurat? Dagens SuperUser Q & A innlegg har svaret på en nysgjerrig leser 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 courtesy of cobalt123 (Flickr).

    Spørsmålet

    SuperUser leser user1301428 vil vite hvordan plater blir verifisert etter at de er brent:

    Hva kontrollerer disken etter brenning faktisk å verifisere dataene? Jeg antar at det er en slags sammenligning mellom de opprinnelige filene og filene som har blitt brent på platen, men vet noen hvordan det egentlig er gjort på lavt nivå?

    Mener jeg, lager den en hash av kilden og destinasjonsinnholdet, og sammenligner dem da? Hvis ja, lagrer den hash av det brente innholdet i RAM? Eller lagrer den den i en midlertidig fil på harddisken? Er det en loggfil av hva som skjer?

    Bare nysgjerrig på å vite nøyaktig hvordan denne funksjonen fungerer. Og jeg refererer til Windows Image Burner.

    Hvordan fungerer diskbekreftelsesprosessen?

    Svaret

    SuperUser bidragsytere Frank Thomas og Synetech har svaret for oss. Først opp, Frank Thomas:

    Sjekk ut disse MSDN-sidene på Windows API for IBurnVerification-grensesnittet og IMAPI_BURN_VERIFICATION_LEVEL enum.

    For datadiske ser det ut som i hurtigmodus, det kontrollerer ikke hele platen, bare et utvalg av sektorer. Det sørger da for at API-en heter READ_DISC_INFO og READ_TRACK_INFO lykkes mot den nye platen.

    For full verifisering utfører den ovennevnte kontrollene, og deretter blir det fullstendig sjekksum på den siste økten på den nye disken mot et sjekksum beregnet på minnestrømmen som brennes. Kontrollsummene må lagres i rammen, men de er sannsynligvis kortvarige verdier. Vær oppmerksom på at sammenligningen er mot diskbildet i RAM, ikke kildemediet selv, så hvis kildedataene ikke ble lest korrekt, vil det bli skrevet feil. Verifikasjonen vil ikke oppdage dette.

    For musikkplater fokuserer den på å sjekke READ_TRACK_INFO og diskens innholdsfortegnelse, men utfører ikke en sjekksumberegning. Det er ingen full verifiseringsmodus for musikk.

    Etterfulgt av svaret fra Synetech:

    Frank forklarte pent den Windows-spesifikke verifikasjonen. Jeg vil gi et mer generelt svar.

    • Hva gjør verifiser plate etter brenning gjør faktisk for å verifisere dataene?
    • Mener jeg, lager den en hash av kilden og destinasjonsinnholdet, og sammenligner dem da? Hvis ja, lagrer den hash av det brente innholdet i RAM? Eller lagrer den den i en midlertidig fil på harddisken? Er det en loggfil av hva som skjer?

    Det er absolutt en måte en sammenligning kan implementeres: hash en fil (forhåpentligvis med en tilstrekkelig stor lesing lav sjanse for kollisionsalgoritme), gjenta for den andre, og sammenligne hashes. Hvis det er slik en bekreftelse er implementert, så vil du kunne se LED-blitsen for en stund, så blinker CD / DVD-LED-en for en stund.

    En annen måte å implementere bekreftelsen på er å lese en blokk med en fil, deretter samme blokk fra den andre filen, sammenligne dem, og gjenta til slutten av filen er nådd. I dette tilfellet vil du se lysdiodene på de to stasjonene veksler frem og tilbake.

    Selvfølgelig, hvis harddisken og optisk stasjonen ikke har lysdioder, så blir det ikke så tydelig. Men du kan fortsatt se det med noe som ProcessMonitor fordi det vil logge en serie av leser fra den ene, den andre, enten i en enkelt, stor burst eller vekslende, små brister.

    • Jeg antar at det er en slags sammenligning mellom de opprinnelige filene og filene som har blitt brent på platen, men vet noen hvordan det egentlig er gjort på lavt nivå?

    Faktisk er alt det egentlig betyr å skylle stasjonskuffen slik at sammenligningsfunksjonen leser dataene fra den aktuelle platen i stedet for fra minnekachen. Tydeligvis er dette et kritisk skritt fordi hvis verifiseringen er ferdig fra cachen, representerer den ikke det som faktisk er på platen, slik at korrupsjon lett kan glide gjennom.

    Du kan se om en sammenligning er gjort fra stasjonen eller fra hurtigbufferen i RAM ved hvor raskt det oppstår. Hvis du manuelt gjør en enkel sammenligning (det vil si med WinDiff, WinMerge, eller ved å hashing dem med et hashing-verktøy), vil du legge merke til at sammenligningen skjer mye raskere enn forventet fordi den leser filene fra minnepuffen. Du må skylle cachen for å tvinge den til å lese fra selve platen. For optiske stasjoner (og andre flyttbare medier som flash-stasjoner og minnekort), er det bare å kaste ut stasjonen, og det er nok for å spyle cachen, men for harddisker er det ikke så enkelt (selv om det vanligvis ikke betyr noe fordi Ny kopi er den du vil teste).


    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.