If-Koubou

Какво всъщност прави "Потвърждаване на диска" след записване, за да потвърдите данните?

Какво всъщност прави "Потвърждаване на диска" след записване, за да потвърдите данните? (Как да)

Функцията "проверете диска" е чудесно, за да сте сигурни, че прясно изгорелият ви диск се е оказал добре, но как точно работи? Днешната публикация "SuperUser Q & A" е отговорът на въпроса на любознателен читател.

Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.

Снимката е предоставена от cobalt123 (Flickr).

Въпроса

Потребител на четец на SuperUser1301428 иска да знае как се проверяват дисковете след изгарянето им:

Какво прави проверката на диска след записването в действителност, за да провери данните? Предполагам, че това е някакво сравнение между оригиналните файлове и файловете, които са изгорени на диска, но някой знае ли как наистина се прави на ниско ниво?

Искам да кажа, създава ли хеш от съдържанието на източника и местоназначението, след което ги сравнява? Ако е така, съхранява ли хеш от изгореното съдържание в RAM? Или го записва в временен файл на твърдия диск? Има ли регистър за това какво се случва?

Просто е любопитен да разберем точно как работи тази функция. Имам предвид и Windows Image Burner.

Как функционира процесът на проверка на диска?

Отговорът

Сътрудниците на SuperUser Frank Thomas и Synetech имат отговор за нас. Първо, Франк Томас:

Вижте тези страници на MSDN в прозореца API за интерфейса IBurnVerification и enap на IMAPI_BURN_VERIFICATION_LEVEL.

За дисковете с данни изглежда, че в бърз режим не се проверява цял диск, а само селекция от сектори. След това се уверява, че API извиква READ_DISC_INFO и READ_TRACK_INFO успешно срещу новия диск.

За пълна проверка проверява горните проверки и след това прави пълна контролна сума на последната сесия на новия диск срещу контролна сума, изчислена на изгорелия поток от памет. Контролните суми трябва да се съхраняват в овен, но те вероятно са с краткоживеещи стойности. Имайте предвид, че сравнението е в противоречие с дисковото изображение в RAM, а не със самия носител, така че ако източника не е чел правилно, той ще бъде написан неправилно. Проверката няма да открие това.

За музикалните дискове се фокусира върху проверката на READ_TRACK_INFO и дисковата таблица със съдържание, но не извършва изчисление на контролната сума. Няма пълен режим за проверка на музиката.

Последвано от отговора на Synetech:

Франк добре обясни специфичната за Windows проверка. Ще дам по-общ отговор.

  • Какво всъщност прави проверката на диска, за да потвърди данните?
  • Искам да кажа, създава ли хеш от съдържанието на източника и местоназначението, след което ги сравнява? Ако е така, съхранява ли хеш от изгореното съдържание в RAM? Или го записва в временен файл на твърдия диск? Има ли регистър за това какво се случва?

Това със сигурност е един от начините, по които може да се осъществи сравнение: да се направи един файл (надявам се с достатъчно голям прочетен нисък шанс за алгоритъм за сблъсък), да се повтаря за другия и да се сравняват хешове. Ако това е начинът, по който се осъществява проверката, тогава ще можете да видите светкавицата с LED диск за известно време, след което CD / DVD-LED светне за известно време.

Друг начин за внедряване на проверката е четенето на блок от един файл, след това същият блок от другия файл, сравнението им, след което се повтаря, докато се достигне до края на файла. В този случай ще видите светодиодите на двата задвижвания, редуващи се назад и напред.

Разбира се, ако твърдият диск и оптичното устройство нямат светодиоди, то няма да е толкова очевидно. Но все пак можете да го видите с нещо като ProcessMonitor, защото ще влезе в серия от четения от едната, а другата в единичен, голям взрив или редуващи се, малки изблици.

  • Предполагам, че това е някакво сравнение между оригиналните файлове и файловете, които са изгорени на диска, но някой знае ли как наистина се прави на ниско ниво?

Всъщност всичко, което наистина прави, е да изчисти кеша на устройството, така че функцията за сравнение да чете данните от действителния диск вместо от кеша на паметта. Очевидно това е критична стъпка, защото ако проверката се извърши от кеш паметта, то не представлява това, което действително е на диска, така че корупцията лесно може да се промъкне.

Можете да видите дали се прави сравнение от диска или от кеша в RAM, колко бързо се случва. Ако ръчно направите просто сравнение (например с WinDiff, WinMerge или като ги заредите с инструмент за хеширане), ще забележите, че сравнението се случва много по-бързо от очакваното, защото чете файлове от кеша на паметта. Трябва да изчистите кеш паметта, за да го накарате да чете от диска. За оптични устройства (и други сменяеми носители като флаш-памети и карти с памет) просто изхвърлянето на устройството е достатъчно, за да изчисти кеша, но за твърдите дискове това не е толкова просто (макар че обикновено това няма значение ново копие е това, което искате да тествате).

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.