Wat doet 'Verify Disc' eigenlijk na het branden om de gegevens te verifiëren?
De functie 'schijf verifiëren' is geweldig om ervoor te zorgen dat uw versverbrande schijf goed is verlopen, maar hoe werkt deze precies? De SuperUser Q & A-post van vandaag heeft het antwoord op de vraag van een nieuwsgierige lezer.
De Question & Answer-sessie van vandaag komt tot ons dankzij SuperUser - een onderdeel van Stack Exchange, een gemeenschapsgedreven groep van Q & A-websites.
Foto met dank aan cobalt123 (Flickr).
De vraag
SuperUser-lezer user1301428 wil weten hoe schijven worden geverifieerd nadat ze zijn gebrand:
Wat doet het controleren van schijf na het branden eigenlijk om de gegevens te verifiëren? Ik stel me voor dat het een soort vergelijking is tussen de originele bestanden en de bestanden die op de schijf zijn gebrand, maar weet iemand hoe het echt op een laag niveau wordt gedaan?
Ik bedoel, creëert het een hash van de bron- en bestemmingsinhoud en vergelijkt deze dan? Zo ja, slaat het de hash van de gebrande inhoud op in de RAM? Of slaat het het op in een tijdelijk bestand op de harde schijf? Is er een logbestand van wat er aan de hand is??
Ik ben gewoon benieuwd hoe deze functie werkt. En ik verwijs naar Windows Image Burner.
Hoe werkt het schijfverificatieproces??
Het antwoord
Bijdragers van SuperUser Frank Thomas en Synetech hebben het antwoord voor ons. Ten eerste, Frank Thomas:
Bekijk deze MSDN-pagina's op Windows API voor de IBurnVerification-interface en de IMAPI_BURN_VERIFICATIE_LEVEL-opsomming.
Voor gegevensschijven ziet het er in de snelle modus naar uit dat het niet de gehele schijf controleert, slechts een selectie van sectoren. Vervolgens zorgt het ervoor dat de API-aanroepen READ_DISC_INFO en READ_TRACK_INFO slagen voor de nieuwe schijf.
Voor volledige verificatie voert het de bovenstaande controles uit en voert vervolgens een volledige controlesom uit op de laatste sessie op de nieuwe schijf tegen een controlesom berekend op de geheugenstroom die wordt gebrand. De controlesommen moeten in ram worden opgeslagen, maar het zijn waarschijnlijk kortstondige waarden. Merk op dat de vergelijking tegen de schijfafbeelding in het RAM is, en niet tegen de bronmedia zelf, dus als de brongegevens niet correct hebben gelezen, zal deze verkeerd worden geschreven. Verificatie zal dit niet detecteren.
Voor muziekdiscs richt het zich op het controleren van READ_TRACK_INFO en de inhoudsopgave van de schijf, maar voert het geen controlesomberekening uit. Er is geen volledige verificatiemodus voor muziek.
Gevolgd door het antwoord van Synetech:
Frank heeft de Windows-specifieke verificatie mooi uitgelegd. Ik zal een meer algemeen antwoord geven.
- Wat verifieert de schijf na het branden ook daadwerkelijk om de gegevens te verifiëren?
- Ik bedoel, creëert het een hash van de bron- en bestemmingsinhoud en vergelijkt deze dan? Zo ja, slaat het de hash van de gebrande inhoud op in de RAM? Of slaat het het op in een tijdelijk bestand op de harde schijf? Is er een logbestand van wat er aan de hand is??
Dat is zeker een manier om een vergelijking te implementeren: hash-één bestand (hopelijk met een voldoende grote lees-kans op botsingsalgoritmen), herhaal voor de ander en vergelijk hashes. Als dat is hoe een verificatie wordt geïmplementeerd, kunt u de drive-LED-flitser een tijdje zien knipperen en vervolgens knippert de CD / DVD-LED een tijdje.
Een andere manier om de verificatie uit te voeren, is door een blok van één bestand te lezen en vervolgens hetzelfde blok uit het andere bestand te lezen, te vergelijken en vervolgens te herhalen totdat het einde van het bestand is bereikt. In dit geval ziet u de leds van de twee schijven afwisselend heen en weer.
Natuurlijk, als de harde schijf en het optische station geen LED's hebben, zal het niet zo duidelijk zijn. Maar je kunt het nog steeds zien met iets als ProcessMonitor, omdat het een serie leesbewerkingen van de ene en vervolgens de andere in een enkele, grote burst of afwisselend, kleine bursts zal loggen.
- Ik stel me voor dat het een soort vergelijking is tussen de originele bestanden en de bestanden die op de schijf zijn gebrand, maar weet iemand hoe het echt op een laag niveau wordt gedaan?
Eigenlijk is het enige dat dit doet het spoelen van de schijfcache zodat de vergelijkingsfunctie de gegevens van de werkelijke schijf leest in plaats van uit de geheugencache. Uiteraard is dit een kritieke stap, want als de verificatie wordt gedaan vanuit de cache, dan geeft dit niet weer wat er daadwerkelijk op de schijf staat, dus kan corruptie gemakkelijk doorheen glijden.
U kunt zien of een vergelijking wordt gemaakt van het station of van de cache in het RAM-geheugen door hoe snel het gebeurt. Als u handmatig een eenvoudige vergelijking uitvoert (d.w.z. met WinDiff, WinMerge, of door ze te hashen met een hash-tool), zult u merken dat de vergelijking veel sneller gaat dan verwacht omdat de bestanden uit de geheugencache worden gelezen. U moet de cache leegmaken om deze van de werkelijke schijf te laten lezen. Voor optische stations (en andere verwisselbare media zoals flash-drives en geheugenkaarten) is het eenvoudig om de schijf uit te werpen om de cache te spoelen, maar voor harde schijven is het lang niet zo eenvoudig (hoewel dat meestal niet uitmaakt, omdat de nieuw exemplaar is degene die u wilt testen).
Heb je iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk hier de volledige discussiethread.