Funkcja „zweryfikuj dysk” doskonale nadaje się do upewnienia się, że świeżo nagrany dysk działa dobrze, ale jak dokładnie działa? Dzisiejszy post z pytaniami i odpowiedziami dla SuperUser zawiera odpowiedź na pytanie zaciekawionego czytelnika.
Dzisiejsza sesja pytań i odpowiedzi jest dostępna dzięki uprzejmości SuperUser - części Stack Exchange, grupy witryn internetowych z pytaniami i odpowiedziami.
Zdjęcie dzięki uprzejmości cobalt123 (flickr) .
Pytanie
Czytnik SuperUser user1301428 chce wiedzieć, w jaki sposób płyty są weryfikowane po ich nagraniu:
Co faktycznie robi weryfikacja dysku po nagraniu, aby zweryfikować dane? Wyobrażam sobie, że jest to jakieś porównanie między oryginalnymi plikami a plikami, które zostały nagrane na płycie, ale czy ktoś wie, jak to się naprawdę robi na niskim poziomie?
Chodzi mi o to, czy tworzy skrót zawartości źródłowej i docelowej, a następnie porównuje je? Jeśli tak, czy przechowuje hash nagranej zawartości w pamięci RAM? A może zapisuje go w pliku tymczasowym na dysku twardym? Czy istnieje plik dziennika z informacjami o tym, co się dzieje?
Ciekaw jestem, jak dokładnie działa ta funkcja. Mam na myśli Windows Image Burner.
Jak przebiega proces weryfikacji dysku?
Odpowiedź
Współpracownicy SuperUser Frank Thomas i Synetech mają dla nas odpowiedź. Po pierwsze, Frank Thomas:
Sprawdź te strony MSDN w Windows API dla IBurnVerification interfejs i IMAPI_BURN_VERIFICATION_LEVEL enum.
W przypadku dysków z danymi wygląda na to, że w trybie szybkim nie sumuje całego dysku, a jedynie wybrane sektory. Następnie upewnia się, że wywołania API READ_DISC_INFO i READ_TRACK_INFO powiodą się na nowej płycie.
W celu pełnej weryfikacji przeprowadza powyższe sprawdzenia, a następnie przeprowadza pełną sumę kontrolną ostatniej sesji na nowym dysku w porównaniu z sumą kontrolną obliczoną na nagrywanym strumieniu pamięci. Sumy kontrolne muszą być przechowywane w pamięci RAM, ale prawdopodobnie są to wartości krótkotrwałe. Zwróć uwagę, że porównanie dotyczy obrazu dysku w pamięci RAM, a nie samego nośnika źródłowego, więc jeśli dane źródłowe nie zostały poprawnie odczytane, zostaną niepoprawnie zapisane. Weryfikacja tego nie wykryje.
W przypadku dysków muzycznych skupia się na sprawdzeniu READ_TRACK_INFO i spisu treści dysku, ale nie wykonuje obliczenia sumy kontrolnej. Nie ma pełnego trybu weryfikacji muzyki.
Następnie odpowiedź od Synetech:
Frank ładnie wyjaśnił weryfikację specyficzną dla systemu Windows. Dam bardziej ogólną odpowiedź.
- Co faktycznie robi Weryfikacja dysku po nagraniu, aby zweryfikować dane?
- Chodzi mi o to, czy tworzy skrót zawartości źródłowej i docelowej, a następnie porównuje je? Jeśli tak, czy przechowuje hash nagranej zawartości w pamięci RAM? A może zapisuje go w pliku tymczasowym na dysku twardym? Czy istnieje plik dziennika z informacjami o tym, co się dzieje?
Jest to z pewnością jeden ze sposobów, w jakie można zaimplementować porównanie: haszuj jeden plik (miejmy nadzieję, że ma wystarczająco duży - algorytm odczytu z małą szansą na kolizję), powtórz dla drugiego i porównaj hashe. Jeśli w ten sposób zostanie zaimplementowana weryfikacja, przez chwilę będzie można zobaczyć migającą diodę napędu, a następnie migającą diodę CD / DVD.
Innym sposobem realizacji weryfikacji jest odczytanie bloku jednego pliku, następnie tego samego bloku z innego pliku, porównanie ich, a następnie powtórzenie aż do osiągnięcia końca pliku. W takim przypadku diody LED obu napędów będą się zmieniać naprzemiennie.
Oczywiście, jeśli dysk twardy i napęd optyczny nie mają diod LED, to nie będzie to takie oczywiste. Ale nadal możesz go zobaczyć za pomocą czegoś takiego jak ProcessMonitor, ponieważ zarejestruje serię odczytów z jednego, a następnie drugiego w pojedynczym, dużym wybuchu lub naprzemiennych, małych seriach.
- Wyobrażam sobie, że jest to jakieś porównanie między oryginalnymi plikami a plikami, które zostały nagrane na płycie, ale czy ktoś wie, jak to się naprawdę robi na niskim poziomie?
Właściwie wszystko, co tak naprawdę robi, to opróżnianie pamięci podręcznej dysku, aby funkcja porównania odczytywała dane z rzeczywistego dysku zamiast z pamięci podręcznej. Oczywiście jest to krytyczny krok, ponieważ jeśli weryfikacja jest przeprowadzana z pamięci podręcznej, nie odzwierciedla ona tego, co faktycznie znajduje się na dysku, więc uszkodzenie może łatwo się prześlizgnąć.
Możesz sprawdzić, czy porównanie jest wykonywane z dysku, czy z pamięci podręcznej w pamięci RAM, po tym, jak szybko się dzieje. Jeśli ręcznie wykonasz proste porównanie (np. Z WinDiff, WinMerge lub haszując je narzędziem haszującym), zauważysz, że porównanie odbywa się znacznie szybciej niż oczekiwano, ponieważ odczytuje pliki z pamięci podręcznej. Musisz opróżnić pamięć podręczną, aby wymusić na niej odczyt z właściwego dysku. W przypadku napędów optycznych (i innych nośników wymiennych, takich jak dyski flash i karty pamięci), zwykłe wysunięcie dysku wystarczy do opróżnienia pamięci podręcznej, ale w przypadku dysków twardych nie jest to tak proste (choć zwykle nie ma to znaczenia, ponieważ nowa kopia to ta, którą chcesz przetestować).
Masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych zaawansowanych technicznie użytkowników Stack Exchange? Sprawdź cały wątek dyskusji tutaj .