האם עדיין צריך "הסרה בטוחה" של כונן USB? — מבט מ"הסרה מהירה" ומטמון הכתיבה

· עודכן בתאריך: · · Windows, USB, אחסון, פתרון תקלות

העתקתם קבצים לכונן USB. על המסך הופיע שההעתקה הסתיימה. ואף על פי כן, לפני שמוציאים את הכונן, מבקשים מכם לעבור שוב על “הסרה בטוחה של חומרה”.

היא כבר הייתה אמורה להסתיים — אז מה בדיוק נשאר להשלים?

ייתכן שנתונים שאפליקציה העבירה ל-Windows עדיין ממתינים להיכתב בצד ה-PC. בואו נלווה קובץ אחד בדרכו אל כונן ה-USB.1

ההנחה כאן היא אחסון USB שמחובר ל-Windows 11. העברת קבצים מטלפון חכם וכדומה אינה בתחום הדיון.

1. לפני שמשהו מגיע ל-USB, ה-PC מחזיק אותו

לצורך ההסבר נחלק את הקבצים לשלושה חלקים: A, B ו-C. האפליקציה מעבירה אותם ל-Windows לפי הסדר ומבקשת לכתוב אותם לכונן ה-USB.

אילו היה צריך להמתין לכל כתיבה לכונן, גם האפליקציה הייתה ממתינה. לכן Windows יכול להחזיר תשובה ברגע שהנתונים נקלטו לזיכרון ה-PC, ולכתוב אותם לכונן ה-USB אחר כך. המטרה היא לא להשאיר את האפליקציה בהמתנה, ולטפל בכתיבות קטנות ביחד. אזור ההחזקה הזמני הזה הוא מטמון הכתיבה.12

נסתכל על הרגע שבו Windows כבר קיבל את A, B ו-C, אבל לכונן הצליח לכתוב רק את A ו-B. C ממתין לתורו בצד ה-PC.

לאותם קבצים, מה שה-PC קיבל ומה שנרשם ב-USB אינם זהיםמתאר את הרגע שבו Windows קיבל את A, B ו-C, את A ו-B הוא כבר רשם ב-USB, ו-C עדיין ממתין במטמון בצד ה-PC להיכתב.Windows כבר קיבל את A, B ו-Cזיכרון ה-PC: C ממתין לכתיבהנרשם ב-USB: רק A ו-B

איור 1: האפליקציה העבירה את שלושתם. ובכל זאת, ברגע הזה C עדיין לא נמצא ב-USB.

אם מוציאים את הכונן בנקודה הזאת, C שנשאר ב-PC לא יגיע לכונן. חלק מהקבצים שלקחתם איתכם חסר.

האפליקציה העבירה הכול. אבל ב-USB עדיין אין הכול. במנגנון שדוחה כתיבות, שני הדברים האלה יכולים להיות נכונים בו-זמנית.

מתי מופיעה הודעת ההשלמה תלוי באפליקציה ובהגדרות. הדוגמה הזאת אינה אומרת שאחרי הודעת ההשלמה של Explorer תמיד נשארות כתיבות.2

2. לסיים לכתוב את מה שהופקד, לפני שמוציאים

אז איך מוציאים את כונן ה-USB בלי להשאיר את C מאחור?

“הסרה בטוחה של חומרה” היא הפעולה שאומרת ל-Windows: ההתקן הזה יוצא, אז בבקשה סיים את הכתיבות שנשארו. השלמת הפעולות שנשארו במטמון היא אחד התפקידים שלה.3

עבור הקבצים שלמעלה המשמעות היא לכתוב החוצה את C שנשאר ב-PC, ולהמתין עד שגם ב-USB יהיו A, B ו-C.

איך אותו C שממתין לכתיבה מסתיים, בהתאם לאופן ההסרהאם מנתקים את החיבור כשהחלק C נשאר בצד ה-PC, ב-USB יהיו רק A ו-B; אם כותבים את C בזמן שההתקן עדיין מחובר, ב-USB יהיו A, B ו-C.מוציאים לפני ש-C נכתבכותבים את C בזמן שההתקן מחוברC נמצא בצד ה-PC וממתין לכתיבהב-USB יש רק A ו-Bב-USB יש A, B ו-C

איור 2: מה שרוצים להמתין לו בהסרה בטוחה הוא לא חלוף הזמן, אלא השלמת הכתיבות שנשארו.

המתנה קצרה לפני ההוצאה לא אומרת לכם דבר על מה שנשאר. פעולת ההסרה מבקשת מ-Windows להריץ את עבודת הסגירה, ואפשר להמתין להודעה שההתקן ניתן להסרה.4

“ביצועים גבוהים” ב-Windows היא המדיניות שמאפשרת להשתמש במטמון הזה. בתמורה לאיגוד כתיבות לשם יעילות, צריך לבצע הסרה בטוחה של חומרה לפני ההוצאה.3

3. “הסרה מהירה” — המדיניות שלא דוחה כתיבה

אולי אתם חושבים: אם בכל מקרה צריך לכתוב את היתרה לפני ההוצאה, למה מלכתחילה להשאיר משהו בצד ה-PC?

זו בדיוק “הסרה מהירה”. Windows לא שומר במטמון כתיבות לדיסק של ההתקן המדובר, ומכאן שאפשר לוותר על פעולת ההסרה. כלומר, הוא לא נוקט בגישה שמשאירה את C ב-PC וכותבת אותו אחר כך.3

העבודה של כתיבה לכונן ה-USB נשארת. יש פחות מרווח לאגד כתיבות לשם יעילות, והביצועים עשויים לרדת, אבל בתמורה קל יותר להוציא את הכונן.3

מדיניות שדוחה כתיבות ומדיניות שלאבביצועים גבוהים ה-PC יכול להחזיק כתיבות ממתינות, אבל צריך לאמת שהן הושלמו בזמן ההסרה; בהסרה מהירה Windows לא דוחה כתיבות בדרך הזאת.ביצועים גבוהיםה-PC יכול להחזיק כתיבותלכתוב את היתרה לפני ההוצאההסרה מהירההכתיבה אינה נדחיתאפשר לוותר על פעולת ההסרה בסוף העבודה

איור 3: העבודה של כתיבה לכונן ה-USB לא נעלמת; מה שמשתנה הוא אם היא נדחית.

החל מ-Windows 10 גרסה 1809, ברירת המחדל היא הסרה מהירה. זו התשתית לטענה שאפשר פשוט לשלוף את הכונן. עם זאת, אפשר לשנות את ההגדרה לכל התקן בנפרד.3

במילים אחרות: לסיים את מה שנדחה לפני ההוצאה, או לא לדחות אותו מלכתחילה? שתי הטענות — שהסרה בטוחה נדרשת ושהיא מיותרת — נובעות מההבדל הזה בהגדרה.

גם בהסרה מהירה זה לא אומר שמותר לקטוע העתקה או שמירה שנמצאות בתהליך. ממתינים לסיום הפעולה, ושומרים מראש עריכות שלא נשמרו.5

4. מה מוגדר בכונן ה-USB שלכם?

ב-Explorer בודקים את השם ואת אות הכונן של ה-USB המדובר.

לוחצים בימין העכבר על כפתור Start, פותחים את “ניהול דיסקים”, ולוחצים בימין העכבר על התווית של ההתקן המתאים ברשימה התחתונה. ב”מאפיינים” ואז ב”מדיניות” רואים איזו מהשתיים נבחרת.3

אם “מדיניות” לא נראית, יש גם פריסה שבה בוחרים את הכונן בלשונית “חומרה” ופותחים משם את המאפיינים. אם רק בודקים — לא משנים את ההגדרה. אם אי אפשר לבצע את הפעולות ב-PC של העבודה, בודקים מול האחראי.3

אם לא יודעים מה ההגדרה, הדרך הקלה לנהוג לפיה היא להשתמש בהסרה בטוחה. מסיימים לשמור ולהעתיק, וסוגרים את האפליקציות שמשתמשות בכונן ה-USB. בוחרים את ההתקן ב”הסרה בטוחה של חומרה והוצאת מדיה” באזור ההודעות, ומוציאים אותו אחרי שמופיעה הודעה שההתקן ניתן להסרה. אם הסמל מוסתר, פותחים את רשימת הסמלים המוסתרים.4

כשמחוברים כמה התקנים, משווים בין השם שבחרתם לבין כונן ה-USB שאתם באמת מוציאים.

5. למה אחרי שההעתקה הסתיימה מופיע “בשימוש”?

כל החלקים A, B ו-C נכתבו לכונן ה-USB. אבל אם האפליקציה שבה בדקתם את התוכן עדיין מחזיקה את הקבצים פתוחים, הפעולה הבאה עשויה לקרוא אותם שוב או לכתוב עליהם.

תהליך ההסרה בודק גם אם אפשר לסיים שימוש כזה. אם נשאר handle — ההפניה שאפליקציה משתמשת בה כדי לעבוד עם קובץ — ההסרה עשויה להידחות גם כשהקריאה והכתיבה כבר פסקו.67

אפליקציה שנמצאת בשימוש עדיין מחוברת לקבצים שכבר נכתבוגם כשכל A, B ו-C נרשמו ב-USB, אפליקציה שממשיכה להחזיק handle לקבצים יכולה לחסום את הסרת ההתקן.מחזיקה handleאפליקציה שהשאירה קובץ פתוחקבצים ב-USB: A, B ו-Cההפניה נשארת גם כשהקריאה והכתיבה פסקו

איור 4: כאן הסיבה שאי אפשר להסיר את ההתקן אינה נתונים חסרים, אלא העובדה שההתקן עדיין בשימוש.

במקרה כזה לא מסתפקים בהמתנה: שומרים את מה שצריך לשמור וסוגרים את האפליקציה. סוגרים גם חלון Explorer שמציג את כונן ה-USB, ומנסים שוב להסיר.

אם אין לכם מושג מה מחזיק את הקבצים, מחפשים ב-Process Explorer לפי שם קובץ או תיקייה ב-USB, ומאתרים איזה process מחזיק אותם. לא סוגרים בכוח handle שנמצא, כי זה עלול לערער את היציבות של האפליקציה או של המערכת. סוגרים את האפליקציה בדרך הרגילה, ואם מדובר באפליקציה עסקית או בשירות — בודקים מול הגורם האחראי.87

זו דוגמה אחת לסיבה. שיטות חקירה מפורטות נמצאות בשימוש ב-Process Explorer ו-Handle.

6. הערה למפתחי אפליקציות: מה פירוש “השמירה הושלמה”

כדאי להיות מודעים לשאלה אם האפליקציה שלכם מציגה “השמירה הושלמה” ברגע שהנתונים הועברו ל-Windows, או רק אחרי שבדקה את התוצאה של הכתיבות שנדרשו.

ב-Win32, FlushFileBuffers הוא API שכותב החוצה את הנתונים המאוגרים של הקובץ שצוין. קריאה לו על handle רגיל של קובץ אינה שומרת מסמך שלא נשמר של אפליקציה אחרת, ואינה מסיימת את השימוש בכל כונן ה-USB.2

לפני מטמון Windows ואחריו יש גם נתונים שלא נשמרו בתוך האפליקציה, ומטמון בתוך ההתקן עצמו. הסרה מהירה היא לא הגדרה שמוחקת גם את אלה.9

לכל מקום שמחזיק נתונים יש בעלים אחרמתאר נתונים שלא נשמרו בתוך האפליקציה, את מטמון הקבצים בצד Windows, ואת המטמון בצד ההתקן, לפי הסדר שבו הנתונים עוברים בהם.פעולת שמירהכתיבה אל ההתקןבתוך האפליקציה: שינויים שלא נשמרובצד Windows: מטמון קבציםבצד ההתקן: מטמון פנימי ומדיה

איור 5: אם נשארים נתונים בכל שכבה תלוי בהגדרות ובמימוש. לא מתבלבלים בין ההגדרה של שכבה אחת לבין אימות ההשלמה של שכבה אחרת.

אפליקציה שמטפלת בהודעות הסרה צריכה גם פעולות ניקוי, כמו סגירת handles של התקנים.10 ההבדל בין ה-API-ים מכוסה בהסבר על Cache Manager ו-WriteFile.

סיכום

מה שאפשר להוציא על כונן USB הוא הנתונים שכתיבתם אליו הושלמה. אם לא יודעים מה ההגדרה — מסיימים את העבודה ומשתמשים בהסרה בטוחה. נתונים חשובים כדאי לשמור בעותק גם מחוץ לכונן ה-USB.

ב-diagram, solid line מציינת relation שתמיד מתקיים ו-dashed line מציינת relation מותנה (התנאים מופיעים בהסבר של כל relation ב-detail page). הרשימה המלאה של ה-relations (סה”כ 6, כולל evidence ו-certainty) וההגדרות של ה-concepts המרכזיים נמצאות ב-detail page של ה-knowledge map (ביפנית). Data: JSON-LD / Turtle

מאמרים קשורים

מקורות

  1. Microsoft Learn, File Caching. מטמון הקבצים בזיכרון וכתיבה מושהית, ותפקיד ה-flush.  2

  2. Microsoft Learn, FlushFileBuffers function. כתיבה רגילה לעומת כתיבה החוצה של נתונים מאוגרים. חשוב להבדיל בין flush של קובץ לבין הסרת התקן.  2 3

  3. Microsoft Learn, Manage default media removal policy. ההבדל בין הסרה מהירה לביצועים גבוהים, שינוי ברירת המחדל, ובדיקת ההגדרה לכל התקן בנפרד.  2 3 4 5 6 7

  4. Microsoft Support, Safely remove hardware in Windows. פעולת ההסרה מאזור ההודעות, וההודעה שההתקן ניתן להסרה.  2

  5. Microsoft Learn, Handling an IRP_MN_SURPRISE_REMOVAL Request. כשלי I/O ופעולות ניקוי בעקבות ניתוק לא צפוי של ההתקן. 

  6. Microsoft Learn, Handling an IRP_MN_QUERY_REMOVE_DEVICE Request. הבדיקה שלפני ההסרה, handles פתוחים, והתגובה של מערכת הקבצים ושל האפליקציות. 

  7. Microsoft Learn, Handle. חקירת הפניות פתוחות לקבצים, והאזהרה מפני סגירה בכוח של handles.  2

  8. Microsoft Learn, Process Explorer. חיפוש ה-process שמחזיק קובץ או תיקייה מסוימים פתוחים. 

  9. Microsoft Learn, File Buffering. ההבחנה בין buffers של קבצים בצד Windows לבין המטמון בצד החומרה. 

  10. Microsoft Learn, DBT_DEVICEQUERYREMOVE event. איך אפליקציה מתכוננת להסרה וסוגרת את handles ההתקן שלה. 

מאמרים עדכניים עם אותן תגיות, להעמקה בנושאים קרובים.

העמודים האלה ממקמים את הנושא בהקשר רחב יותר של שירותים והחלטות.

המאמר קשור ישירות לשירותים הבאים.

שאלות נפוצות

שאלות נפוצות בפניות בנושא המאמר.

האם גם ב-Windows 11 צריך להסיר כונן USB באופן בטוח?
הכול תלוי במדיניות ההסרה של ההתקן. "הסרה מהירה" תוכננה כך שאפשר לוותר על השלב הזה, אבל ב"ביצועים גבוהים" צריך לבצע הסרה בטוחה של חומרה. אם לא יודעים מה ההגדרה, דרך פשוטה יותר לנהוג לפיה היא לסיים לשמור ולהעתיק, לסגור את האפליקציות שמשתמשות בהתקן, ואז לבצע את פעולת ההסרה.
אם מוגדר "הסרה מהירה", מותר לשלוף את הכונן תוך כדי העתקה?
לא. "הסרה מהירה" היא מדיניות שמונעת מ-Windows לשמור כתיבות לדיסק במטמון ולדחות אותן. זו לא תכונה שמשלימה נתונים שעוד לא נשלחו, והיא לא אומרת שמותר לקטוע העתקה או שמירה שנמצאות בתהליך.
איפה בודקים אם הכונן מוגדר ל"הסרה מהירה"?
בודקים ב-Explorer את אות הכונן והשם של כונן ה-USB, פותחים ב"ניהול דיסקים" את המאפיינים של ההתקן המתאים, ומסתכלים ב"מדיניות". אם הלשונית לא נראית, בוחרים את ההתקן בלשונית "חומרה" ופותחים משם את המאפיינים. הפריסה שונה בין סביבות, ואין צורך לשנות את ההגדרה רק כדי לבדוק אותה.
למה מופיע "בשימוש" כשהכתיבות כבר הסתיימו?
אם אפליקציה עדיין מחזיקה קובץ או תיקייה פתוחים, ייתכן שההתקן עדיין לא סיים לשמש, גם כשהתעבורה פסקה זמנית. קודם שומרים וסוגרים את הקבצים הרלוונטיים, מוודאים שההעתקות והגיבויים הסתיימו, ואז מנסים שוב להסיר. אם צריך, מאתרים ב-Process Explorer את ה-process שמחזיק אותם, אבל נמנעים מסגירה בכוח של handles.
אם אשתמש בהסרה בטוחה, מסמך ששכחתי לשמור יישמר לכונן ה-USB?
לא. הסרה בטוחה אינה תחליף לפקודת השמירה של האפליקציה. שומרים את המסמך קודם, ומוודאים שהאפליקציה הודיעה שהפעולה הסתיימה. נתונים חשובים לא משאירים רק על כונן USB; משאירים עותק גם במקום אחר.

פרופיל הכותב

עמוד היכרות עם כותב המאמר.

Go Komura

מנהל KomuraSoft LLC

מתמחה בפיתוח תוכנה עבור Windows, ייעוץ טכני וחקירת תקלות, בעיקר בפרויקטים עם מערכות קיימות ובאגים שקשה לשחזר.

קישורים ציבוריים

חזרה לבלוג