לרוב, הערכים של 'גודל' ו'גודל בדיסק 'יהיו קרובים מאוד להתאמה בבדיקת תיקיה או גודל קובץ, אך מה אם יש פער עצום בין השניים? פוסט השאלות והתשובות של SuperUser של היום בוחן את התשובה לבעיה המבלבלת הזו.
מושב השאלות והתשובות של היום מגיע אלינו באדיבות SuperUser - חלוקה של Stack Exchange, קיבוץ מונחה קהילה של אתרי שאלות ותשובות.
השאלה
קורא SuperUser thelastblack רוצה לדעת מדוע יש הבדל עצום כל כך בין 'גודל' ל'גודל בדיסק 'עבור תיקייה בכרטיס ה- SD של הטלפון שלו:
כפי שניתן לראות למטה, יש הבדל כה רב בין השדות 'גודל' ו'גודל בדיסק 'עבור תיקייה זו. למה?
![]()
אני יודע ש'גודל בדיסק 'צריך להיות קצת יותר מ'גודל' בגלל יחידות הקצאה ב- Windows, אבל למה יש כל כך הרבה הבדל? האם זה יכול להיות בגלל מספר הקבצים הרב?
BTW, תיקיה זו נמצאת בכרטיס ה- SD של טלפון האנדרואיד שלי. בתוך זה, אפליקציית המפות שלי שומרת את מפות המטמון שלה, והאפליקציה מקבלת את מפותיה ממפות גוגל.
כשמסתכלים על צילום המסך, בהחלט יש פער ענק בין 'גודל' ל'גודל על דיסק ', אז מה קרה כאן כדי לגרום לכך?
התשובה
לתורם SuperUser בוב יש את התשובה עבורנו:
אני אניח שאתה משתמש במערכת הקבצים FAT / FAT32 כאן, מכיוון שאתה מזכיר שזה כרטיס SD. NTFS ו- exFAT מתנהגים באופן דומה ביחס ליחידות הקצאה. מערכות קבצים אחרות עשויות להיות שונות, אך בכל מקרה הן אינן נתמכות ב- Windows.
אם יש לך הרבה קבצים קטנים, זה בהחלט אפשרי. שקול זאת:
- 50,000 קבצים
- גודל אשכול 32 יחידות (יחידות הקצאה), שהוא המקסימום עבור FAT32
בסדר, עכשיו מִינִימוּם השטח שנלקח הוא 50,000 * 32,000 = 1.6 GB (באמצעות קידומות SI, לא בינאריות, כדי לפשט את המתמטיקה). השטח שכל קובץ לוקח על הדיסק הוא תמיד מכפיל מגודל יחידת ההקצאה - וכאן אנו מניחים שכל קובץ הוא למעשה קטן מספיק בכדי להתאים ליחידה אחת, כשנותר מעט מקום (מבוזבז).
אם כל קובץ היה בממוצע 2 קילו-בייט, הייתם מקבלים כ -100 מגה-בייט בסך הכל - אך אתם מבזבזים גם פי 15 (30 קילו-בייט לקובץ) בממוצע בגלל גודל יחידת ההקצאה.
הסבר מעמיק
למה זה קרה? ובכן, מערכת הקבצים FAT32 צריכה לעקוב אחר היכן כל קובץ מאוחסן. אם היה שומר רשימה של כל בייט בודד, הטבלה (כמו פנקס כתובות) הייתה צומחת באותה מהירות כמו הנתונים - ומבזבזת הרבה מקום. אז מה שהם עושים זה להשתמש ב"יחידות הקצאה ", המכונות גם" גודל האשכול ". הנפח מחולק ליחידות הקצאה אלה, ומבחינת מערכת הקבצים, לא ניתן לחלק אותן - אלה הבלוקים הקטנים ביותר שהיא יכולה לטפל בהם. ממש כמו שיש לך מספר בית, אבל לדוור שלך לא אכפת כמה חדרי שינה יש לך או מי גר בהם.
אז מה קורה אם יש לך קובץ קטן מאוד? ובכן, למערכת הקבצים לא אכפת אם הקובץ הוא 0 KB, 2 KB או אפילו 15 KB, זה ייתן לו את המינימום שהוא יכול - בדוגמה לעיל, זה 32 KB. הקובץ שלך משתמש רק בכמות קטנה של שטח זה, והשאר בעצם מבוזבז, אך עדיין שייך לקובץ - בדומה לחדר שינה שאתה משאיר לא פנוי.
מדוע ישנם גדלי יחידות הקצאה שונים? ובכן, זה הופך להיות פשרה בין שולחן גדול יותר (פנקס כתובות, למשל אומר שג'ון הוא הבעלים של רחוב מזויף 123, רחוב מזויף 124, 666 סטן ליין וכו '), או שטח מבוזבז יותר בכל יחידה (בית). . אם יש לך קבצים גדולים יותר, הגיוני יותר להשתמש ביחידות הקצאה גדולות יותר - מכיוון שקובץ לא מקבל יחידה (בית) חדשה עד שכל האחרים מתמלאים. אם יש לך המון קבצים קטנים, ובכן, יהיה לך שולחן גדול (פנקס כתובות) בכל מקרה, כך גם יכול לתת להם יחידות קטנות (בתים).
יחידות הקצאה גדולות, ככלל, יבזבזו הרבה מקום אם יש לכם המון קבצים קטנים. בדרך כלל אין סיבה טובה לעבור מעל 4 KB לשימוש כללי.
הִתנַפְּצוּת?
באשר לפיצול, פיצול לא אמור לבזבז מקום בצורה זו. קבצים גדולים עשויים להיות מקוטעים, כלומר להתפצל, ליחידות הקצאה מרובות, אך יש למלא כל יחידה לפני שמתחילה את היחידה הבאה. איחוי יכול לחסוך מקום קטן בטבלאות ההקצאה, אך זו אינה הבעיה הספציפית שלך.
פתרונות אפשריים
כפי ש הציע גלדיאטור 2345 , האפשרויות האמיתיות היחידות שלך בשלב זה הן לחיות איתו או לעצב מחדש עם יחידות הקצאה קטנות יותר.
הכרטיס שלך עשוי להיות מעוצב ב- FAT16, שיש לו מגבלה קטנה יותר על גודל הטבלה ולכן הוא דורש יחידות הקצאה גדולות בהרבה על מנת לטפל בנפח גדול יותר (עם מגבלה עליונה של 2 GB עם יחידות הקצאה של 32 KB). מָקוֹר באדיבות ברייעם . אם זה המקרה, אתה אמור להיות מסוגל לפרמט בבטחה כ- FAT32 בכל מקרה.
יש לך מה להוסיף להסבר? נשמע בתגובות. רוצה לקרוא תשובות נוספות ממשתמשי Stack Exchange אחרים המתמצאים בטכנולוגיה? עיין כאן בשרשור הדיון המלא .