Домашня » як » Що таке Перевірка диска насправді після запису для перевірки даних?

    Що таке Перевірка диска насправді після запису для перевірки даних?

    Функція "перевірити диск" відмінно підходить для того, щоб переконатися, що ваш нещодавно записаний диск вийшов добре, але як саме він працює? Сьогоднішня стаття SuperUser Q&A має відповідь на запитання цікавого читача.

    Сьогоднішня сесія запитань та відповідей приходить до нас люб'язно SuperUser - підрозділ Stack Exchange, групування веб-сайтів із запитаннями та відповідями на рівні спільноти..

    Фото надано кобальтом123 (Flickr).

    Питання

    Читач SuperUser user1301428 хоче знати, як перевіряються диски після їх запису:

    Що насправді перевіряє диск після запису, щоб перевірити дані? Я вважаю, що це якесь порівняння між оригінальними файлами та файлами, записаними на диску, але чи хтось знає, як це робиться на низькому рівні?

    Я маю на увазі, чи створює він хеш вихідного і цільового вмісту, а потім порівнює їх? Якщо так, то зберігає хеш записаного вмісту в оперативній пам'яті? Або це збереже його у тимчасовому файлі на жорсткому диску? Чи є файл журналу того, що відбувається?

    Просто цікаво дізнатися, як працює ця функція. І я маю на увазі Windows Image Burner.

    Як працює процес перевірки диска?

    Відповідь

    Співробітники SuperUser Франк Томас і Синетех мають відповідь для нас. Спочатку, Френк Томас:

    Перегляньте ці сторінки 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? Перегляньте повний потік обговорення тут.