למה יש הבדל גדול בין 'גודל' ו 'גודל על דיסק'?
רוב הזמן, הערכים של 'גודל' ו 'גודל על דיסק' יהיה קרוב מאוד להתאמת בעת בדיקת תיקיה או גודל הקובץ, אבל מה אם יש פער עצום בין השניים? היום SuperUser Q & A פוסט מסתכל על התשובה לבעיה זו מבלבל.
מפגש השאלות והתשובות של היום מגיע אלינו באדיבות SuperUser - חלוקה מחודשת של Stack Exchange, קיבוץ מונחה על ידי הקהילה של אתרי אינטרנט של Q & A.
השאלה
SuperUser הקורא thelastblack רוצה לדעת למה יש כזה הבדל עצום בין 'גודל' ו 'גודל על דיסק' עבור תיקייה בכרטיס ה- SD של הטלפון שלו:
כפי שניתן לראות למטה, יש כל כך הרבה הבדל בין שדות 'גודל' ו 'גודל על דיסק' עבור תיקייה זו. למה?
אני יודע כי 'גודל על דיסק' צריך להיות קצת יותר מאשר 'גודל' בגלל הקצאת יחידות ב- Windows, אבל למה יש הרבה הבדל? זה יכול להיות בגלל מספר גדול של קבצים?
BTW, התיקייה הזו נמצאת בכרטיס SD של הטלפון של Android. בתוך זה, האפליקציה מפות שלי מאחסן מפות המטמון שלו, ואת היישום מקבל מפות שלה ממפות Google.
אם מסתכלים על צילום המסך, יש בהחלט פער עצום בין 'גודל' ו 'גודל על דיסק', אז מה קרה כאן כדי לגרום לזה?
התשובה
תורם SuperUser בוב יש את התשובה עבורנו:
אני יהיה בהנחה שאתה משתמש במערכת הקבצים FAT / FAT32 כאן, שכן אתה מזכיר את זה הוא כרטיס SD. NTFS ו- exFAT מתנהגים באופן דומה ביחס ליחידות ההקצאה. מערכות קבצים אחרות עשויות להיות שונות, אך הן אינן נתמכות ב- Windows בכל מקרה.
אם יש לך הרבה קבצים קטנים, זה בהחלט אפשרי. חשוב על כך:
- 50,000 קבצים
- 32 KB מקבץ גודל (הקצאת יחידות), המהווה את המקסימום עבור FAT32
בסדר, עכשיו מינימום שטח נלקח הוא 50,000 * 32,000 = 1.6 GB (באמצעות קידומות SI, לא בינארי, כדי לפשט את המתמטיקה). החלל שכל קובץ לוקח על הדיסק הוא תמיד מספר רב של גודל יחידת ההקצאה - וכאן אנו מניחים שכל קובץ הוא קטן מספיק כדי שיתאים ליחידה אחת, עם שטח (מבוזבז) שנותר.
אם כל קובץ היה בממוצע 2 KB, היית מקבל בערך 100 MB סה"כ - אבל אתה גם מבזבז 15x כי (30 KB לקובץ) בממוצע בשל גודל יחידת ההקצאה.
הסבר עומק
למה זה קרה? ובכן, מערכת הקבצים FAT32 צריכה לעקוב אחר המקום שבו כל קובץ מאוחסן. אם זה היה לשמור רשימה של כל בית, השולחן (כמו פנקס הכתובות) יגדל באותה מהירות כמו הנתונים - ובזבז הרבה מקום. אז מה שהם עושים הוא להשתמש "הקצאת יחידות", הידוע גם בשם "גודל אשכול". הכרך מחולק ליחידות ההקצאה הללו, ומבחינת מערכת הקבצים, לא ניתן לחלק אותן - הן הקטנות שבהן ניתן לטפל. בדיוק כמו שיש לך מספר בית, אבל הדוור שלך לא אכפת כמה חדרי שינה יש לך או מי גר בהם.
אז מה קורה אם יש לך קובץ קטן מאוד? ובכן, מערכת הקבצים לא אכפת אם הקובץ הוא 0 KB, 2 KB, או אפילו 15 KB, זה ייתן את זה לפחות שטח זה יכול - בדוגמה לעיל, זה 32 KB. הקובץ שלך הוא רק באמצעות כמות קטנה של שטח זה, והשאר הוא מבוזבז בעצם, אבל עדיין שייך לקובץ - כמו חדר שינה אתה משאיר פנוי.
מדוע יש הקצאת יחידות שונות? ובכן, זה הופך להיות מסחר בין שולחן גדול יותר (פנקס כתובות, למשל אומר ג 'ון הבעלים של בית ברחוב 123 מזויפים, 124 רחוב מזויף, 666 השטן נתיב, וכו'), או יותר מבוזבז שטח בכל יחידה (בית) . אם יש לכם קבצים גדולים יותר, הגיוני יותר להשתמש ביחידות הקצאה גדולות יותר - מכיוון שקובץ לא מקבל יחידה חדשה (בית) עד שכל שאר הפריטים מלאים. אם יש לך הרבה קבצים קטנים, טוב, אתה הולך להיות שולחן גדול (פנקס כתובות) בכל מקרה, אז אולי גם לתת להם יחידות קטנות (בתים).
יחידות הקצאה גדולות, ככלל, יבזבז הרבה מקום אם יש לך הרבה קבצים קטנים. בדרך כלל אין סיבה טובה ללכת מעל 4 KB לשימוש כללי.
פיצול?
באשר פיצול, פיצול לא צריך לבזבז את החלל בצורה זו. קבצים גדולים עשויים להיות מקוטעים, כלומר לפצל, ליחידות הקצאה מרובות, אך יש למלא כל יחידה לפני תחילת העבודה הבאה. Defragging עשוי לחסוך מקום קטן בטבלאות הקצאה, אבל זה לא הנושא הספציפי שלך.
פתרונות אפשריים
כפי הציע gladiator2345, האפשרויות האמיתיות שלך רק בשלב זה הם לחיות עם זה או לאתחל מחדש עם יחידות הקצאה קטן.
ייתכן שהפורמט שלך מעוצב ב- FAT16, שבו יש מגבלה קטנה יותר על גודל הטבלה ולכן דורש יחידות הקצאה גדולות בהרבה כדי לטפל בנפח גדול יותר (עם גבול עליון של 2 GB עם 32 יח"ד ליחידות הקצאה). מקור באדיבות בריאם. אם זה המקרה, אתה אמור להיות מסוגל בבטחה פורמט כמו FAT32 בכל מקרה.
יש לך משהו להוסיף להסבר? נשמע את ההערות. רוצה לקרוא תשובות נוספות ממשתמשים אחרים בעלי ידע טכנולוגי מתמצא? בדוק את נושא הדיון המלא כאן.