הפיצ'ר 'אימות דיסק' מעולה בכדי לוודא שהדיסק שנצרב לאחרונה יצא טוב, אבל איך זה בדיוק עובד? בפוסט שאלות ותשובות של SuperUser של היום יש את התשובה לשאלת קורא סקרנית.
מושב השאלות והתשובות של היום מגיע אלינו באדיבות SuperUser - חלוקה של Stack Exchange, קיבוץ מונחה קהילה של אתרי שאלות ותשובות.
תמונה באדיבות קובלט 123 (פליקר) .
השאלה
משתמש קורא SuperUser1301428 רוצה לדעת כיצד מאמתים דיסקים לאחר צריבתם:
מה בעצם עושה אימות דיסק לאחר הצריבה כדי לאמת את הנתונים? אני מתאר לעצמי שזו השוואה כלשהי בין הקבצים המקוריים לקבצים שנצרבו בדיסק, אבל האם מישהו יודע איך זה באמת נעשה ברמה נמוכה?
כלומר, האם זה יוצר חשיש של תוכן המקור והיעד ואז משווה ביניהם? אם כן, האם הוא שומר את החשיש של התוכן שנצרב ב- RAM? או שהוא שומר אותו בקובץ זמני בכונן הקשיח? האם יש קובץ יומן של מה שקורה?
פשוט סקרן לדעת בדיוק כיצד פועלת תכונה זו. ואני מתייחס ל- Windows Image Burner.
כיצד עובד אימות הדיסקים?
התשובה
לתורמי SuperUser פרנק תומאס וסינתק יש את התשובה עבורנו. ראשית, פרנק תומאס:
בדוק את דפי MSDN אלה ב- Windows API עבור IBurnVerification ממשק ו- IMAPI_BURN_VERIFICATION_LEVEL enum.
עבור דיסקי נתונים זה נראה כאילו במצב מהיר הוא לא בודק את כל הדיסק אלא רק מבחר של מגזרים. לאחר מכן הוא מוודא שה- API קורא READ_DISC_INFO ו- READ_TRACK_INFO יצליחו כנגד הדיסק החדש.
לצורך אימות מלא, היא מבצעת את הבדיקות שלעיל, ואז מבצעת בדיקת מלאה במפגש האחרון בדיסק החדש מול בדיקת בדיקה המחושבת בזרם הזיכרון שנשרף. יש לאחסן את סכומי הבדיקה ב- RAM, אך ככל הנראה מדובר בערכים קצרי טווח. שים לב שההשוואה היא מול תמונת הדיסק ב- RAM, ולא מדית המקור עצמה, כך שאם נתוני המקור לא נקראו כהלכה, הם ייכתבו בצורה שגויה. אימות לא יזהה זאת.
בדיסקי מוסיקה הוא מתמקד בבדיקת READ_TRACK_INFO ובתוכן העניינים, אך אינו מבצע חישוב סכום בדיקה. אין מצב אימות מלא למוזיקה.
ואחריו התשובה של Synetech:
פרנק הסביר יפה את האימות הספציפי ל- Windows. אני אתן תשובה כללית יותר.
- מה בעצם עושה אימות דיסק לאחר הצריבה כדי לאמת את הנתונים?
- כלומר, האם זה יוצר חשיש של תוכן המקור והיעד ואז משווה ביניהם? אם כן, האם הוא שומר את החשיש של התוכן שנצרב ב- RAM? או שהוא שומר אותו בקובץ זמני בכונן הקשיח? האם יש קובץ יומן של מה שקורה?
זו בהחלט אחת הדרכים שניתן ליישם השוואה: חשיש קובץ אחד (אני מקווה שיש מספיק סיכוי - קרא סיכוי נמוך לאלגוריתם התנגשות), חזור על השני והשווה hashes. אם כך מיושם אימות, תוכל לראות את מבזק LED הכונן לזמן מה, ואז תקליטור ה- DVD / LED מהבהב לזמן מה.
דרך נוספת ליישם את האימות היא לקרוא גוש של קובץ אחד, ואז את אותו גוש מהקובץ השני, להשוות ביניהם, ואז לחזור על כך עד לסיום הקובץ. במקרה זה, תראה את נוריות הנוריות של שני הכוננים מתחלפות קדימה ואחורה.
כמובן שאם אין בכונן הקשיח ובכונן האופטי נוריות, אז זה לא יהיה ברור מאליו. אבל אתה עדיין יכול לראות את זה עם משהו כמו ProcessMonitor כי זה יירשם סדרה של קריאות מאחד, ואז השני או פרץ אחד גדול או פרץ קטן לסירוגין.
- אני מתאר לעצמי שזו השוואה כלשהי בין הקבצים המקוריים לקבצים שנצרבו בדיסק, אבל האם מישהו יודע איך זה באמת נעשה ברמה נמוכה?
למעשה, כל מה שהוא באמת עושה הוא לשטוף את מטמון הכונן כך שפונקציית ההשוואה היא קריאת הנתונים מהדיסק בפועל במקום ממטמון הזיכרון. ברור שזה צעד קריטי מכיוון שאם האימות מתבצע מתוך מטמון, אז זה לא מייצג את מה שנמצא בפועל בדיסק, כך שהשחיתות יכולה לעבור בקלות.
אתה יכול לראות אם ההשוואה נעשית מהכונן או מהמטמון ב- RAM לפי המהירות שהיא מתרחשת. אם אתה מבצע השוואה ידנית באופן פשוט (כלומר עם WinDiff, WinMerge או על ידי גיבוב שלהם באמצעות כלי גיבוב), תבחין שההשוואה מתרחשת הרבה יותר מהר מהצפוי מכיוון שהיא קוראת את הקבצים ממטמון הזיכרון. עליך לשטוף את המטמון כדי לאלץ אותו לקרוא מהדיסק בפועל. עבור כוננים אופטיים (וכלי מדיה נשלפים אחרים כמו כונני פלאש וכרטיסי זיכרון), פשוט הוצאת הכונן מספיקה כדי לשטוף את המטמון, אך לכוננים קשיחים זה כמעט לא פשוט (אם כי בדרך כלל זה לא משנה כי עותק חדש הוא זה שתרצו לבדוק).
יש לך מה להוסיף להסבר? נשמע בתגובות. רוצה לקרוא תשובות נוספות ממשתמשי Stack Exchange אחרים המתמצאים בטכנולוגיה? עיין כאן בשרשור הדיון המלא .