Какво прави 'Проверка на диск' всъщност след изгаряне, за да провери данните?
Функцията за "проверка на диска" е чудесна, за да се уверите, че прясно изгорелият ви диск се е оказал добре, но как точно работи? Днешната публикация за въпроси и отговори SuperUser има отговор на въпрос на любопитен читател.
Днешната сесия за въпроси и отговори идва при нас с любезното съдействие на SuperUser - подразделение на Stack Exchange, групирано от общността уеб сайтове за въпроси и отговори.
Снимката е предоставена от cobalt123 (Flickr).
Въпроса
Четецът на суперпотребител user1301428 иска да узнае как дисковете се проверяват след изгаряне:
Какво всъщност прави проверката на диска след записването, за да провери данните? Предполагам, че това е някакво сравнение между оригиналните файлове и файловете, които са изгорени на диска, но знае ли някой как се прави на ниско ниво?
Искам да кажа, създава ли хеш от съдържанието на източника и дестинацията, след което ги сравнява? Ако е така, съхранява ли хеша на записаното съдържание в RAM? Или го записва във временен файл на твърдия диск? Има ли лог файл на това, което се случва?
Любопитно е да знаете точно как работи тази функция. И аз имам предвид Windows Burner изображение.
Как работи процесът на проверка на диска?
Отговорът
Сътрудниците на SuperUser Франк Томас и Синетех имат отговор за нас. Първо, Франк Томас:
Разгледайте тези MSDN страници на Windows API за интерфейса на IBurnVerification и IMAPI_BURN_VERIFICATION_LEVEL enum.
За дискове с данни изглежда, че в бърз режим не се записва целия диск, а само селекция от сектори. След това се уверява, че призивите на API READ_DISC_INFO и READ_TRACK_INFO успяват срещу новия диск.
За пълна проверка той изпълнява горепосочените проверки, след което прави пълна контролна сума на последната сесия на новия диск срещу изчислена контролна сума в потока на паметта, който се изгаря. Контролните суми трябва да се съхраняват в ram, но вероятно са стойности за краткотрайни стойности. Имайте предвид, че сравнението е срещу изображението на диска в RAM, а не на самия източник, така че ако данните от източника не са прочетени правилно, ще бъдат написани неправилно. Проверката няма да открие това.
За музикални дискове се фокусира върху проверка на READ_TRACK_INFO и на съдържанието на диска, но не извършва изчисление на контролната сума. Няма пълен режим на потвърждение за музика.
Следван от отговора от Synetech:
Франк обясни добре специфичната за Windows проверка. Ще дам по-общ отговор.
- Какво прави проверка на диска след изгаряне всъщност направи за проверка на данните?
- Искам да кажа, създава ли хеш от съдържанието на източника и дестинацията, след което ги сравнява? Ако е така, съхранява ли хеша на записаното съдържание в RAM? Или го записва във временен файл на твърдия диск? Има ли лог файл на това, което се случва?
Това със сигурност е един от начините да се осъществи сравнение: хеш един файл (надяваме се с достатъчно голям четен алгоритъм за сблъсък), повторете за другия и сравнете хешовете. Ако това е начинът, по който се осъществява проверка, тогава ще можете да виждате LED светкавицата за известно време, след това CD / DVD-LED светкавицата за известно време.
Друг начин за осъществяване на проверката е да се прочете блок от един файл, след това същият блок от другия файл, да се сравнят, след което да се повторят до края на файла. В този случай ще видите светодиодите на двете устройства, които се редуват напред и назад.
Разбира се, ако на твърдия диск и оптичното устройство няма светодиоди, тогава няма да е толкова очевидно. Но все още можете да го видите с нещо като ProcessMonitor, защото ще регистрира поредица от четения от една, а след това от друга, или в един голям, голям или променлив, малък изблик..
- Предполагам, че това е някакво сравнение между оригиналните файлове и файловете, които са изгорени на диска, но знае ли някой как се прави на ниско ниво?
Всъщност, всичко, което наистина прави, е да изчисти кеш устройството, така че функцията за сравнение да чете данните от самия диск, а не от кеша на паметта. Очевидно е, че това е критична стъпка, защото ако проверката се извърши от кеша, тя не представлява това, което всъщност е на диска, така че корупцията може лесно да се промъкне през.
Можете да видите дали се прави сравнение от устройството или от кеша в RAM с това колко бързо се случва. Ако ръчно направите просто сравнение (т.е. с WinDiff, WinMerge или хеширането им с хеширащ инструмент), ще забележите, че сравнението се случва много по-бързо от очакваното, защото чете файловете от кеш паметта. Трябва да изчистите кеша, за да принудите да чете от самия диск. За оптични дискове (и други сменяеми носители като флаш-дискове и карти с памет), просто изхвърляне на устройството е достатъчно, за да се изчисти кеша, но за твърдите дискове това не е толкова просто (въпреки че обикновено това няма значение, защото новото копие е това, което искате да тествате).
Имате ли какво да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други технологични потребители на Stack Exchange? Вижте пълната тема за дискусия тук.