Η λειτουργία "επαλήθευση δίσκου" είναι ιδανική για να βεβαιωθείτε ότι ο δίσκος που κάνατε πρόσφατα ήταν καλά, αλλά πώς ακριβώς λειτουργεί; Η σημερινή ανάρτηση ερωτηματολογίων SuperUser έχει την απάντηση σε μια ερώτηση περίεργου αναγνώστη.
Η σημερινή συνεδρία Ερωτήσεων & Απαντήσεων μας προσφέρει ευγενική προσφορά του SuperUser - μια υποδιαίρεση του Stack Exchange, μιας ομάδας ιστότοπων Q&A που βασίζεται στην κοινότητα.
Η φωτογραφία προσφέρθηκε από κοβάλτιο123 (Flickr) .
Το ερώτημα
Ο χρήστης του SuperUser reader1301428 θέλει να μάθει πώς επαληθεύονται οι δίσκοι μετά την εγγραφή τους:
Τι κάνει στην πραγματικότητα ο δίσκος επαλήθευσης μετά την εγγραφή για την επαλήθευση των δεδομένων; Φαντάζομαι ότι είναι κάποιο είδος σύγκρισης μεταξύ των αρχικών αρχείων και των αρχείων που έχουν εγγραφεί στον δίσκο, αλλά κάποιος ξέρει πώς γίνεται πραγματικά σε χαμηλό επίπεδο;
Θέλω να πω, δημιουργεί κατακερματισμό της πηγής και του περιεχομένου προορισμού και στη συνέχεια τα συγκρίνει; Εάν ναι, αποθηκεύει τον κατακερματισμό του εγγεγραμμένου περιεχομένου στη μνήμη RAM; Ή το αποθηκεύει σε προσωρινό αρχείο στον σκληρό δίσκο; Υπάρχει αρχείο καταγραφής του τι συμβαίνει;
Απλά περίεργος να μάθετε ακριβώς πώς λειτουργεί αυτή η λειτουργία. Και αναφέρομαι στο Windows Image Burner.
Πώς λειτουργεί η διαδικασία επαλήθευσης δίσκου;
Η απάντηση
Οι συνεργάτες του SuperUser Frank Thomas και Synetech έχουν την απάντηση για εμάς. Πρώτα, Frank Thomas:
Ελέγξτε αυτές τις σελίδες MSDN στο API των Windows για το IBurnVerification διεπαφή και το IMAPI_BURN_VERIFICATION_LEVEL απαρ.
Για δίσκους δεδομένων, φαίνεται ότι σε γρήγορη λειτουργία δεν ελέγχει ολόκληρο το δίσκο, μόνο μια επιλογή τομέων. Στη συνέχεια, διασφαλίζει ότι οι κλήσεις API READ_DISC_INFO και READ_TRACK_INFO επιτυγχάνουν έναντι του νέου δίσκου.
Για πλήρη επαλήθευση, εκτελεί τους παραπάνω ελέγχους και, στη συνέχεια, κάνει ένα πλήρες άθροισμα ελέγχου στην τελευταία συνεδρία του νέου δίσκου έναντι ενός αθροίσματος ελέγχου που υπολογίζεται στη ροή μνήμης που καίγεται. Τα αθροίσματα ελέγχου πρέπει να αποθηκευτούν σε ram, αλλά είναι πιθανώς βραχύβιες τιμές. Σημειώστε ότι η σύγκριση είναι ενάντια στην εικόνα δίσκου στη μνήμη RAM και όχι στο ίδιο το μέσο προέλευσης, οπότε αν τα δεδομένα προέλευσης δεν διαβάζονταν σωστά, θα γραφτούν λανθασμένα. Η επαλήθευση δεν θα το εντοπίσει.
Για μουσικούς δίσκους, εστιάζει στον έλεγχο του READ_TRACK_INFO και του πίνακα περιεχομένων του δίσκου, αλλά δεν εκτελεί υπολογισμό αθροίσματος ελέγχου. Δεν υπάρχει πλήρης λειτουργία επαλήθευσης για μουσική.
Ακολούθησε η απάντηση από το Synetech:
Ο Φρανκ εξήγησε ωραία την επαλήθευση για τα Windows. Θα δώσω μια πιο γενική απάντηση.
- Τι κάνει στην πραγματικότητα η επαλήθευση δίσκου μετά την εγγραφή για την επαλήθευση των δεδομένων;
- Θέλω να πω, δημιουργεί κατακερματισμό της πηγής και του περιεχομένου προορισμού και στη συνέχεια τα συγκρίνει; Εάν ναι, αποθηκεύει τον κατακερματισμό του εγγεγραμμένου περιεχομένου στη μνήμη RAM; Ή το αποθηκεύει σε προσωρινό αρχείο στον σκληρό δίσκο; Υπάρχει αρχείο καταγραφής του τι συμβαίνει;
Αυτός είναι σίγουρα ένας τρόπος με τον οποίο μπορεί να εφαρμοστεί μια σύγκριση: κατακερματισμός ενός αρχείου (ελπίζουμε με αρκετά μεγάλο - διαβάστε χαμηλή πιθανότητα σύγκρουσης αλγόριθμου), επαναλάβετε για τον άλλο και συγκρίνετε κατακερματισμούς. Εάν με αυτόν τον τρόπο πραγματοποιείται μια επαλήθευση, τότε θα μπορείτε να δείτε το φλας LED-δίσκου για λίγο, τότε το φλας LED CD / DVD για λίγο.
Ένας άλλος τρόπος για να εφαρμόσετε την επαλήθευση είναι να διαβάσετε ένα μπλοκ ενός αρχείου, μετά το ίδιο μπλοκ από το άλλο αρχείο, να τα συγκρίνετε και, στη συνέχεια, να το επαναλάβετε μέχρι να φτάσει στο τέλος του αρχείου. Σε αυτήν την περίπτωση, θα δείτε τα LED των δύο μονάδων να εναλλάσσονται μπρος-πίσω
Φυσικά, εάν ο σκληρός δίσκος και ο οπτικός δίσκος δεν διαθέτουν LED, τότε δεν θα είναι τόσο προφανές. Αλλά μπορείτε ακόμα να το δείτε με κάτι σαν το ProcessMonitor, επειδή θα καταγράφει μια σειρά από αναγνώσεις από τη μία, μετά από την άλλη είτε σε μία, μεγάλη ριπή ή εναλλασσόμενες, μικρές ριπές.
- Φαντάζομαι ότι είναι κάποιο είδος σύγκρισης μεταξύ των αρχικών αρχείων και των αρχείων που έχουν εγγραφεί στον δίσκο, αλλά κάποιος ξέρει πώς γίνεται πραγματικά σε χαμηλό επίπεδο;
Στην πραγματικότητα, το μόνο που κάνει είναι να ξεπλύνει την προσωρινή μνήμη της μονάδας έτσι ώστε η λειτουργία σύγκρισης να διαβάζει τα δεδομένα από τον πραγματικό δίσκο αντί από τη μνήμη cache. Προφανώς, αυτό είναι ένα κρίσιμο βήμα, διότι εάν η επαλήθευση γίνεται από την προσωρινή μνήμη, τότε δεν αντιπροσωπεύει αυτό που είναι πραγματικά στο δίσκο, επομένως η καταστροφή μπορεί εύκολα να περάσει.
Μπορείτε να δείτε εάν γίνεται σύγκριση από τη μονάδα δίσκου ή από την προσωρινή μνήμη στη μνήμη RAM με το πόσο γρήγορα εμφανίζεται. Εάν κάνετε μια απλή σύγκριση με μη αυτόματο τρόπο (δηλαδή με WinDiff, WinMerge ή κατακερματισμό με ένα εργαλείο κατακερματισμού), θα παρατηρήσετε ότι η σύγκριση γίνεται πολύ πιο γρήγορα από το αναμενόμενο, επειδή διαβάζει τα αρχεία από την προσωρινή μνήμη. Πρέπει να ξεπλύνετε την προσωρινή μνήμη για να την αναγκάσετε να διαβάσει από τον πραγματικό δίσκο. Για οπτικούς δίσκους (και άλλα αφαιρούμενα μέσα όπως μονάδες flash και κάρτες μνήμης), η απλή εξαγωγή της μονάδας είναι αρκετή για να ξεπλύνει την προσωρινή μνήμη, αλλά για σκληρούς δίσκους, δεν είναι σχεδόν τόσο απλή (αν και συνήθως δεν έχει σημασία επειδή το νέο αντίγραφο είναι αυτό που θέλετε να δοκιμάσετε).
Έχετε κάτι να προσθέσετε στην εξήγηση; Ήχος στα σχόλια. Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους χρήστες τεχνολογίας Stack Exchange; Δείτε ολόκληρο το νήμα συζήτησης εδώ .