Что на самом деле делает «Проверка диска» после записи для проверки данных?
Функция «Проверить диск» отлично подходит для того, чтобы убедиться, что ваш только что сожженный диск получился хорошо, но как именно он работает? Сегодняшний пост SuperUser Q & A содержит ответ на любопытный вопрос читателя.
Сегодняшняя сессия вопросов и ответов пришла к нам благодаря SuperUser - подразделению Stack Exchange, группе веб-сайтов вопросов и ответов, управляемой сообществом..
Фото предоставлено cobalt123 (Flickr).
Вопрос
Читатель SuperUser user1301428 хочет знать, как проверяются диски после их записи:
Что проверка диска после записи на самом деле делает для проверки данных? Я предполагаю, что это какое-то сравнение между оригинальными файлами и файлами, которые были записаны на диск, но кто-нибудь знает, как это действительно делается на низком уровне??
Я имею в виду, создает ли он хэш исходного и конечного контента, а затем сравнивает их? Если да, хранится ли в оперативной памяти хэш сгоревшего содержимого? Или он сохраняет его во временном файле на жестком диске? Есть ли файл журнала о том, что происходит?
Просто любопытно точно узнать, как работает эта функция. И я имею в виду Windows Image Burner.
Как работает процесс проверки диска?
Ответ
У вкладчиков SuperUser Фрэнка Томаса и Synetech есть ответ для нас. Прежде всего, Фрэнк Томас:
Проверьте эти страницы MSDN в Windows API для интерфейса IBurnVerification и перечисления IMAPI_BURN_VERIFICATION_LEVEL.
Для дисков с данными в быстром режиме это выглядит не как контрольная сумма всего диска, а только выборка секторов. Затем он проверяет, что вызовы API READ_DISC_INFO и READ_TRACK_INFO завершаются успешно для нового диска..
Для полной проверки он выполняет вышеуказанные проверки, а затем выполняет полную контрольную сумму последнего сеанса на новом диске с контрольной суммой, вычисленной для записываемого потока памяти. Контрольные суммы должны храниться в оперативной памяти, но они, скорее всего, недолговечные значения. Обратите внимание, что сравнение выполняется с образом диска в ОЗУ, а не с самим носителем-источником, поэтому, если исходные данные не были прочитаны правильно, они будут записаны неправильно. Проверка не обнаружит это.
Для музыкальных дисков он сосредоточен на проверке READ_TRACK_INFO и оглавлении диска, но не выполняет вычисления контрольной суммы. Для музыки нет режима полной проверки.
Далее следует ответ от Synetech:
Фрэнк красиво объяснил проверку Windows. Я дам более общий ответ.
- Что делает Проверка диска после записи на самом деле, чтобы проверить данные?
- Я имею в виду, создает ли он хэш исходного и конечного контента, а затем сравнивает их? Если да, хранится ли в оперативной памяти хэш сгоревшего содержимого? Или он сохраняет его во временном файле на жестком диске? Есть ли файл журнала о том, что происходит?
Это, безусловно, один из способов осуществления сравнения: хэшируйте один файл (возможно, с достаточно большим прочтением алгоритма коллизии с малой вероятностью коллизии), повторяйте для другого и сравнивайте хэши. Если так осуществляется проверка, вы сможете некоторое время видеть светодиодный индикатор привода, затем светодиодный индикатор CD / DVD некоторое время мигает..
Другой способ реализовать проверку состоит в том, чтобы прочитать блок одного файла, затем тот же блок из другого файла, сравнить их, затем повторять до тех пор, пока не будет достигнут конец файла. В этом случае вы увидите светодиоды двух приводов, чередующиеся вперед и назад..
Конечно, если на жестком диске и оптическом приводе нет светодиодов, это будет не так очевидно. Но вы все еще можете увидеть это с чем-то вроде ProcessMonitor, потому что он будет регистрировать серию чтений из одного, а затем другого в виде одного большого пакета или чередующихся небольших пакетов..
- Я предполагаю, что это какое-то сравнение между оригинальными файлами и файлами, которые были записаны на диск, но кто-нибудь знает, как это действительно делается на низком уровне??
На самом деле все, что он делает, - это очищает кэш накопителя, чтобы функция сравнения считывала данные с реального диска, а не из кеша памяти. Очевидно, что это критически важный шаг, потому что если проверка выполняется из кэша, то она не отражает того, что на самом деле находится на диске, поэтому повреждение может легко проскользнуть..
Вы можете видеть, выполняется ли сравнение с накопителя или из кеша в ОЗУ, насколько быстро это происходит. Если вы вручную выполните простое сравнение (например, с помощью WinDiff, WinMerge или путем хеширования их с помощью инструмента хеширования), вы заметите, что сравнение происходит намного быстрее, чем ожидалось, поскольку оно считывает файлы из кэша памяти. Вы должны очистить кэш, чтобы заставить его читать с реального диска. Для оптических приводов (и других съемных носителей, таких как флэш-накопители и карты памяти) достаточно просто извлечь диск, чтобы очистить кэш, но для жестких дисков это не так просто (хотя обычно это не имеет значения, потому что новую копию вы хотите проверить).
Есть что добавить к объяснению? Отключить звук в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полным обсуждением здесь.