Mida teeb Verify Disc tegelikult pärast põletamist andmete kontrollimiseks?
"Kontrollige plaadi" funktsiooni on suurepärane, et veenduda, et värskelt põlenud ketas on hästi välja kujunenud, aga kuidas see täpselt toimib? Tänase SuperUser Q&A postituse vastus on uudishimulik lugeja küsimus.
Tänane küsimuste ja vastuste seanss saabub meiega kohtades, kus on SuperUser-Stack Exchange'i alajaotis, kogukondlikult juhitav Q&A veebisaitide rühmitus.
Foto viisakalt cobalt123-st (Flickr).
Küsimus
SuperUser lugeja user1301428 tahab teada, kuidas plaate pärast nende põletamist kontrollitakse:
Mida kinnitab ketas pärast põletamist tegelikult andmete kontrollimiseks? Ma arvan, et see on mingisugune võrdlus algsete failide ja plaadil põlenud failide vahel, kuid kas keegi teab, kuidas seda tegelikult madalal tasemel teha?
Ma mõtlen, kas see loob lähtekoodi ja sihtkoha sisu räsi, seejärel võrdleb neid? Kui jah, siis kas see salvestab põletatud sisu räsi RAM-is? Või salvestab see selle ajutisesse faili kõvakettal? Kas on olemas logifail sellest, mis toimub?
Lihtsalt uudishimulik täpselt teada, kuidas see funktsioon toimib. Ja ma viitan Windows Image Burnerile.
Kuidas toimib plaadi kontrollimise protsess?
Vastus
SuperUser'i toetajad Frank Thomas ja Synetech on meile vastuseks. Esiteks, Frank Thomas:
Vaadake neid MSDN-lehekülgi Windowsi API-s IBurnVerification-liidese ja IMAPI_BURN_VERIFICATION_LEVEL enum'i jaoks.
Andmeplaatide puhul tundub see kiirrežiimis, et see ei kontrolliks kogu plaati, vaid ainult sektorite valikut. Seejärel tagab see, et API-d kutsuvad READ_DISC_INFO ja READ_TRACK_INFO uue plaadi vastu.
Täielikuks kontrollimiseks teostab see ülaltoodud kontrollid, siis teeb uue plaadi viimasel seansil täielik kontrollsumma põletatava mäluvoo arvutatud kontrollsumma vastu. Kontrollsummad tuleb säilitada ram, kuid need on tõenäoliselt lühikesed. Pange tähele, et võrdlus on RAM-i plaadi kujutisega, mitte lähtekandjaga, seega kui lähteandmed ei lugenud õigesti, kirjutatakse see valesti. Kontrollimine seda ei tuvasta.
Muusikaplaatide puhul keskendub see READ_TRACK_INFO ja plaadi sisukorra kontrollimisele, kuid ei tee kontrollsumma arvutamist. Muusika jaoks puudub täielik kinnitusrežiim.
Järgneb Synetechilt saadud vastus:
Frank selgitas kenasti Windowsi spetsiifilist kontrolli. Ma annan üldisema vastuse.
- Mida kinnitab ketas pärast põletamist tegelikult andmete kontrollimiseks?
- Ma mõtlen, kas see loob lähtekoodi ja sihtkoha sisu räsi, seejärel võrdleb neid? Kui jah, siis kas see salvestab põletatud sisu räsi RAM-is? Või salvestab see selle ajutisesse faili kõvakettal? Kas on olemas logifail sellest, mis toimub?
See on kindlasti üks viis, kuidas saab võrdlust teostada: räsi üks fail (loodetavasti piisavalt suure lugemisega väikese tõenäosusega kokkupõrkealgoritm), korrake teist ja võrdle hashes. Kui see on nii, siis teostatakse kontroll, siis näete ajami LED-välklampi, siis CD / DVD-LED vilgub mõneks ajaks.
Teine viis verifitseerimise teostamiseks on lugeda ühe faili plokki, seejärel sama plokki teisest failist, võrrelda neid, seejärel korrata kuni faili lõppu. Sellisel juhul näete kahe draivi LED-id vaheldumisi edasi-tagasi.
Muidugi, kui kõvakettal ja optilisel kettal ei ole LED-e, siis ei ole see nii ilmne. Aga sa näed seda ikka nagu ProcessMonitoriga, sest see logib ühe lugemisloendi ühest, siis teisest kas ühest suurest purunemisest või vahelduvast, väikestest purskest..
- Ma arvan, et see on mingisugune võrdlus algsete failide ja plaadil põlenud failide vahel, kuid kas keegi teab, kuidas seda tegelikult madalal tasemel teha?
Tegelikult on kõik see, et draivi vahemälu loputatakse nii, et võrdlusfunktsioon on andmete lugemine tegelikust plaadist, mitte mälu vahemälust. Ilmselgelt on see kriitiline samm, sest kui kinnitus tehakse vahemälust, siis see ei kajasta seda, mis on plaadil tegelikult olemas, nii et korruptsioon võib kergesti libiseda.
Näete, kas draivist või RAM-i vahemälust tehakse võrdlus, kui kiiresti see toimub. Kui te teete käsitsi lihtsa võrdluse (s.t. WinDiffi, WinMerge'i või vajutusvahendiga), siis märkate, et võrdlus toimub oodatust palju kiiremini, kuna see loeb faile mälu vahemälust. Vahemälu tuleb loputada, et sundida seda tegelikust plaadist lugema. Optiliste draivide (ja muude teisaldatavate andmekandjate, näiteks flash-draivide ja mälukaartide) puhul piisab vahemälu väljatõrjumiseks lihtsalt kõvaketta väljutamisest, kuid kõvakettadelt ei ole see peaaegu sama lihtne (kuigi tavaliselt ei ole see oluline, sest uus koopia on see, mida soovite testida.
Kas teil on midagi lisada selgitusele? Heli on kommentaarides välja lülitatud. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Vaadake siin täielikku arutelu lõiku.