Tính năng 'xác minh đĩa' rất tuyệt để đảm bảo đĩa mới ghi của bạn hoạt động tốt, nhưng chính xác thì nó hoạt động như thế nào? Bài đăng Hỏi và Đáp của SuperUser hôm nay có câu trả lời cho câu hỏi tò mò của một độc giả.
Phiên Hỏi & Đáp hôm nay đến với chúng tôi với sự hỗ trợ của SuperUser — một phần của Stack Exchange, một nhóm các trang web Hỏi & Đáp do cộng đồng điều hành.
Ảnh lịch sự của coban123 (Flickr) .
Câu hỏi
Người dùng SuperUser reader1301428 muốn biết cách các đĩa được xác minh sau khi chúng được ghi:
Xác minh đĩa sau khi ghi thực sự làm gì để xác minh dữ liệu? Tôi tưởng tượng đó là một kiểu so sánh nào đó giữa các tệp gốc và các tệp đã được ghi trên đĩa, nhưng có ai biết nó thực sự được thực hiện như thế nào ở mức thấp không?
Ý tôi là, nó có tạo ra một hàm băm của nội dung nguồn và đích, sau đó so sánh chúng? Nếu vậy, nó có lưu trữ hàm băm của nội dung đã ghi trong RAM không? Hay nó lưu nó trong một tệp tạm thời trên ổ cứng? Có tệp nhật ký về những gì đang xảy ra không?
Chỉ tò mò muốn biết chính xác cách thức hoạt động của tính năng này. Và tôi đang đề cập đến Windows Image Burner.
Quá trình xác minh đĩa hoạt động như thế nào?
Câu trả lời
Những người đóng góp cho SuperUser Frank Thomas và Synetech có câu trả lời cho chúng tôi. Đầu tiên, Frank Thomas:
Kiểm tra các trang MSDN này trên API windows để biết IBurnVerification giao diện và IMAPI_BURN_VERIFICATION_LEVEL enum.
Đối với đĩa dữ liệu, có vẻ như ở chế độ nhanh, nó không kiểm tra toàn bộ đĩa mà chỉ là một lựa chọn các cung. Sau đó, nó đảm bảo rằng API gọi READ_DISC_INFO và READ_TRACK_INFO thành công đối với đĩa mới.
Để xác minh đầy đủ, nó thực hiện các kiểm tra ở trên, sau đó thực hiện tổng kiểm tra đầy đủ vào phiên cuối cùng trên đĩa mới dựa trên tổng kiểm tra được tính trên luồng bộ nhớ đang được ghi. Tổng kiểm tra phải được lưu trữ trong ram, nhưng chúng có thể là giá trị tồn tại trong thời gian ngắn. Lưu ý rằng việc so sánh là dựa trên hình ảnh đĩa trong RAM, không phải chính phương tiện nguồn, vì vậy nếu dữ liệu nguồn không được đọc chính xác, nó sẽ được ghi sai. Xác minh sẽ không phát hiện ra điều này.
Đối với đĩa nhạc, nó tập trung vào việc kiểm tra READ_TRACK_INFO và mục lục đĩa, nhưng không thực hiện phép tính tổng. Không có chế độ xác minh đầy đủ cho âm nhạc.
Tiếp theo là câu trả lời từ Synetech:
Frank giải thích một cách độc đáo về xác minh dành riêng cho Windows. Tôi sẽ đưa ra một câu trả lời tổng quát hơn.
- Đĩa Verify sau khi ghi thực sự làm gì để xác minh dữ liệu?
- Ý tôi là, nó có tạo ra một hàm băm của nội dung nguồn và đích, sau đó so sánh chúng? Nếu vậy, nó có lưu trữ hàm băm của nội dung đã ghi trong RAM không? Hay nó lưu nó trong một tệp tạm thời trên ổ cứng? Có tệp nhật ký về những gì đang xảy ra không?
Đó chắc chắn là một cách để so sánh có thể được thực hiện: băm một tệp (hy vọng là đủ lớn — đọc thuật toán va chạm thấp), lặp lại cho tệp kia và so sánh các hàm băm. Nếu đó là cách xác minh được thực hiện, thì bạn sẽ có thể thấy ổ đĩa-LED nhấp nháy một lúc, sau đó nhấp nháy CD / DVD-LED một lúc.
Một cách khác để thực hiện xác minh là đọc một khối của một tệp, sau đó đọc khối tương tự từ tệp kia, so sánh chúng, sau đó lặp lại cho đến khi đạt đến cuối tệp. Trong trường hợp này, bạn sẽ thấy đèn LED của hai ổ đĩa xen kẽ qua lại.
Tất nhiên, nếu ổ cứng và ổ quang không có đèn LED thì sẽ không rõ ràng bằng. Nhưng bạn vẫn có thể thấy nó với một cái gì đó như ProcessMonitor vì nó sẽ ghi lại một loạt các lần đọc từ một, sau đó ghi lại trong một loạt các loạt lớn hoặc xen kẽ, nhỏ.
- Tôi tưởng tượng đó là một kiểu so sánh nào đó giữa các tệp gốc và các tệp đã được ghi trên đĩa, nhưng có ai biết nó thực sự được thực hiện như thế nào ở mức thấp không?
Trên thực tế, tất cả những gì nó thực sự làm là xóa bộ nhớ cache của ổ đĩa để chức năng so sánh đang đọc dữ liệu từ đĩa thực thay vì từ bộ nhớ đệm. Rõ ràng đây là một bước quan trọng bởi vì nếu xác minh được thực hiện từ bộ nhớ cache, thì nó không thể hiện những gì thực sự có trên đĩa, do đó tham nhũng có thể dễ dàng lọt qua.
Bạn có thể xem liệu so sánh được thực hiện từ ổ đĩa hay từ bộ nhớ đệm trong RAM bằng tốc độ nó xảy ra. Nếu bạn thực hiện một phép so sánh đơn giản theo cách thủ công (tức là với WinDiff, WinMerge hoặc bằng cách băm chúng bằng công cụ băm), bạn sẽ nhận thấy rằng việc so sánh diễn ra nhanh hơn nhiều so với mong đợi vì nó đang đọc các tệp từ bộ nhớ đệm. Bạn phải xóa bộ nhớ cache để buộc nó đọc từ đĩa thực. Đối với ổ đĩa quang (và các phương tiện di động khác như ổ đĩa flash và thẻ nhớ), chỉ cần đẩy ổ đĩa ra là đủ để xóa bộ nhớ cache, nhưng đối với ổ đĩa cứng, điều đó gần như không đơn giản (mặc dù điều đó thường không quan trọng vì bản sao mới là bản bạn muốn kiểm tra).
Có điều gì đó để thêm vào lời giải thích? Tắt âm thanh trong các ý kiến. Bạn muốn đọc thêm câu trả lời từ những người dùng Stack Exchange am hiểu công nghệ khác? Kiểm tra toàn bộ chuỗi thảo luận tại đây .