För det mesta kommer värdena för "Storlek" och "Storlek på disk" att vara mycket nära att matcha när du kontrollerar en mapp eller filstorlek, men tänk om det finns en stor skillnad mellan de två? Dagens SuperUser Q & A-inlägg tittar på svaret på detta förvirrande problem.
Dagens Fråga & Svar-session kommer till oss med tillstånd av SuperUser - en underavdelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.
Frågan
SuperUser-läsaren thelastblack vill veta varför det är så stor skillnad mellan "Storlek" och "Storlek på disk" för en mapp på telefonens SD-kort:
Som du kan se nedan är det så stor skillnad mellan fälten 'Storlek' och 'Storlek på disk' för den här mappen. Varför är det så?
![]()
Jag vet att 'Storlek på disk' borde vara lite mer än 'Storlek' på grund av tilldelningsenheter i Windows, men varför är det så stor skillnad? Kan det bero på det stora antalet filer?
BTW, den här mappen finns på min Android-telefons SD-kort. Inuti detta lagrar min kartapp sina cachade kartor och appen får sina kartor från Google Maps.
Om man tittar på skärmdumpen finns det definitivt en enorm avvikelse mellan 'Storlek' och 'Storlek på disk', så vad har hänt här för att orsaka detta?
Svaret
SuperUser-bidragsgivaren Bob har svaret för oss:
Jag antar att du använder FAT / FAT32-filsystemet här, eftersom du nämner att detta är ett SD-kort. NTFS och exFAT beter sig på samma sätt när det gäller allokeringsenheter. Andra filsystem kan vara olika, men de stöds inte i Windows i alla fall.
Om du har många små filer är det verkligen möjligt. Tänk på detta:
- 50 000 filer
- 32 KB klusterstorlek (allokeringsenheter), vilket är max för FAT32
Ok, nu är det minimum utrymmet som tas är 50 000 * 32 000 = 1,6 GB (använder SI-prefix, inte binärt, för att förenkla matematiken). Utrymmet som varje fil tar på disken är alltid en multipel av tilldelningsenhetsstorleken - och här antar vi att varje fil faktiskt är tillräckligt liten för att passa in i en enda enhet, med lite (bortkastat) utrymme kvar.
Om varje fil var i genomsnitt 2 kB skulle du få cirka 100 MB totalt - men du slösar också med 15 gånger den (30 kB per fil) i genomsnitt på grund av tilldelningsenhetens storlek.
Fördjupad förklaring
Varför händer detta? Tja, FAT32-filsystemet måste hålla reda på var varje fil lagras. Om det skulle hålla en lista över varje byte skulle tabellen (som en adressbok) växa i samma hastighet som data - och slösa mycket utrymme. Så vad de gör är att använda "allokeringsenheter", även känd som "klusterstorlek". Volymen är uppdelad i dessa tilldelningsenheter, och vad gäller filsystemet kan de inte delas upp - det är de minsta blocken det kan adressera. Precis som om du har ett husnummer, men din brevbärare bryr sig inte hur många sovrum du har eller vem som bor i dem.
Så vad händer om du har en mycket liten fil? Tja, filsystemet bryr sig inte om filen är 0 kB, 2 kB eller till och med 15 kB, det ger det minst utrymme det kan - i exemplet ovan är det 32 kB. Din fil använder bara en liten del av det här utrymmet, och resten är i grunden bortkastad, men tillhör fortfarande filen - ungefär som ett sovrum du lämnar ledigt.
Varför finns det olika tilldelningsenhetsstorlekar? Det blir en avvägning mellan att ha ett större bord (adressbok, till exempel att säga att John äger ett hus på 123 Fake Street, 124 Fake Street, 666 Satan Lane, etc.) eller mer slösat utrymme i varje enhet (hus) . Om du har större filer är det vettigare att använda större tilldelningsenheter - eftersom en fil inte får en ny enhet (hus) förrän alla andra är fyllda. Om du har många små filer, ja, du kommer att ha ett stort bord (adressbok) ändå, så kan lika gärna ge dem små enheter (hus).
Stora tilldelningsenheter slöser som regel med mycket utrymme om du har många små filer. Det finns vanligtvis ingen bra anledning att gå över 4 kB för allmänt bruk.
Splittring?
När det gäller fragmentering bör fragmentering inte slösa ut utrymme på detta sätt. Stora filer kan splittras, dvs delas upp, i flera tilldelningsenheter, men varje enhet bör fyllas innan nästa startas. Defragging kan spara lite utrymme i fördelningstabellerna, men det här är inte ditt specifika problem.
Möjliga lösningar
Som gladiator2345 föreslog , dina enda verkliga alternativ vid denna tidpunkt är att leva med det eller formatera med mindre tilldelningsenheter.
Ditt kort kan formateras i FAT16, som har en mindre gräns för bordsstorlek och därför kräver mycket större tilldelningsenheter för att adressera en större volym (med en övre gräns på 2 GB med 32 KB-tilldelningsenheter). Källa med tillstånd av Braiam . Om så är fallet borde du kunna formatera säkert som FAT32 ändå.
Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa fler svar från andra tekniskt kunniga Stack Exchange-användare? Kolla in hela diskussionstråden här .