Funktionen 'Bekræft disk' er fantastisk til at sikre, at din nybrændte disk blev godt, men hvordan fungerer den nøjagtigt? Dagens SuperUser Q & A-indlæg har svaret på en nysgerrig læsers spørgsmål.
Dagens spørgsmål og svar-session kommer til os med tilladelse fra SuperUser - en underinddeling af Stack Exchange, en community-driven gruppe af Q&A websteder.
Foto med tilladelse til cobalt123 (Flickr) .
Spørgsmålet
SuperUser-læser bruger1301428 vil vide, hvordan diske verificeres, efter at de er brændt:
Hvad gør verificeringsdisk efter brænding faktisk for at verificere dataene? Jeg forestiller mig, at det er en slags sammenligning mellem de originale filer og de filer, der er brændt på disken, men ved nogen, hvordan det virkelig gøres på et lavt niveau?
Jeg mener, skaber det en hash af kilde- og destinationsindholdet og sammenligner dem derefter? I så fald gemmer den hash af det brændte indhold i RAM? Eller gemmer det det i en midlertidig fil på harddisken? Er der en logfil, hvad der foregår?
Bare nysgerrig efter at vide nøjagtigt, hvordan denne funktion fungerer. Og jeg henviser til Windows Image Burner.
Hvordan fungerer diskbekræftelsesprocessen?
Svaret
SuperUser-bidragsydere Frank Thomas og Synetech har svaret til os. Først op, Frank Thomas:
Tjek disse MSDN-sider på Windows API for IBurnVerification interface og IMAPI_BURN_VERIFICATION_LEVEL enum.
For datadiske ser det ud som om det i hurtig tilstand ikke kontrollerer hele disken, kun et udvalg af sektorer. Derefter sørger det for, at API-opkaldene READ_DISC_INFO og READ_TRACK_INFO lykkes mod den nye disk.
For fuld verifikation udfører den ovenstående kontrol og udfører derefter en fuld kontrolsum på den sidste session på den nye disk mod et kontrolsum beregnet på den hukommelsesstrøm, der brændes. Kontrolsummen skal opbevares i ram, men de er sandsynligvis kortvarige værdier. Bemærk, at sammenligningen er mod diskbilledet i RAM, ikke selve kildemediet, så hvis kildedataene ikke læste korrekt, vil de blive skrevet forkert. Bekræftelse registrerer ikke dette.
For musikdiske fokuserer den på at kontrollere READ_TRACK_INFO og diskens indholdsfortegnelse, men udfører ikke en kontrolsumberegning. Der er ingen fuld verifikationstilstand for musik.
Efterfulgt af svaret fra Synetech:
Frank forklarede pænt den Windows-specifikke verifikation. Jeg vil give et mere generelt svar.
- Hvad gør Verificer disk efter brænding faktisk for at verificere dataene?
- Jeg mener, skaber det en hash af kilde- og destinationsindholdet og sammenligner dem derefter? I så fald gemmer den hash af det brændte indhold i RAM? Eller gemmer det det i en midlertidig fil på harddisken? Er der en logfil, hvad der foregår?
Det er bestemt en måde, hvorpå en sammenligning kan implementeres: hash en fil (forhåbentlig med en tilstrækkelig stor - læs lav chance for kollisionsalgoritme), gentag for den anden og sammenlign hash. Hvis det er sådan, en verifikation er implementeret, vil du kunne se drev-LED-flashen i et stykke tid, derefter blinker CD / DVD-LED i et stykke tid.
En anden måde at implementere verifikationen på er at læse en blok af den ene fil, derefter den samme blok fra den anden fil, sammenligne dem og derefter gentage, indtil slutningen af filen er nået. I dette tilfælde vil du se lysdioderne på de to drev skiftevis frem og tilbage.
Selvfølgelig, hvis harddisken og det optiske drev ikke har lysdioder, vil det ikke være så indlysende. Men du kan stadig se det med noget som ProcessMonitor, fordi det logger en række læsninger fra den ene, derefter den anden enten i en enkelt, stor burst eller skiftevis, små burst.
- Jeg forestiller mig, at det er en slags sammenligning mellem de originale filer og de filer, der er brændt på disken, men ved nogen, hvordan det virkelig gøres på et lavt niveau?
Faktisk er alt, hvad det virkelig gør, at skylle drevcachen, så sammenligningsfunktionen læser dataene fra den faktiske disk i stedet for fra hukommelsescachen. Dette er åbenbart et kritisk trin, for hvis verifikationen udføres fra cache, repræsenterer den ikke, hvad der faktisk er på disken, så korruption let kan glide igennem.
Du kan se, om der foretages en sammenligning fra drevet eller fra cachen i RAM, hvor hurtigt det sker. Hvis du manuelt foretager en simpel sammenligning (dvs. med WinDiff, WinMerge eller ved at hashing dem med et hashing-værktøj), vil du bemærke, at sammenligningen sker meget hurtigere end forventet, fordi den læser filerne fra hukommelsescache. Du skal skylle cachen for at tvinge den til at læse fra den aktuelle disk. For optiske drev (og andre flytbare medier som flash-drev og hukommelseskort) er det bare nok at skubbe drevet ud til at skylle cachen, men for harddiske er det ikke nær så simpelt (selvom det normalt ikke betyder noget, fordi ny kopi er den, du vil teste).
Har du noget at tilføje til forklaringen? Lyd fra i kommentarerne. Vil du læse flere svar fra andre teknisk kyndige Stack Exchange-brugere? Tjek den fulde diskussionstråd her .