12Aug
För det mesta kommer värdena för "Storlek" och "Storlek på disk" att vara mycket nära matchning när du kontrollerar en mapp eller filens storlek, men vad händer om det finns stor skillnad mellan de två?Dagens SuperUser Q & A-inlägg tittar på svaret på det här förvirrande problemet.
Dagens fråga &Svarssession kommer till oss med tillstånd av SuperUser-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.
Frågan
SuperUser-läsaren thelastblack vill veta varför det finns en så stor skillnad mellan "Size" och "Size on disk" för en mapp på telefonens SD-kort:
Som du kan se nedan är det så mycket skillnad mellanFältet "Storlek" och "Storlek på disk" för den här mappen. Varför är det så?
Jag vet att "Storlek på disken" borde vara lite mer än "Storlek" på grund av fördelningsenheter i Windows, men varför är det så stor skillnad? Kan det vara på grund av det stora antalet filer?
BTW, den här mappen finns på min Android-telefonens SD-kort. Innehållet här lagrar min kartapp appen sina cachade kartor, och appen får sina kartor från Google Maps.
Titta på skärmdumpen, det finns definitivt en stor skillnad mellan "Size" och "Size on 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 filsystemet FAT / FAT32 här, eftersom du nämner att det här är ett SD-kort. NTFS och exFAT beter sig på samma sätt med avseende på fördelningsenheter. Andra filsystem kan vara olika, men de stöds inte i alla fall i Windows.
Om du har många små filer är det säkert möjligt. Tänk på följande:
- 50 000 filer
- 32 KB klusterstorlek( tilldelningsenheter), vilket är max för FAT32
Ok, nu är -miniminivån rymd 50 000 * 32 000 = 1,6 GB( med SI-prefix, inte binära, för att förenklamatte).Utrymmet som varje fil tar på disken är alltid en multipel av fördelningsenhetsstorleken - 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 i genomsnitt uppgår till 2 KB, skulle du få cirka 100 MB totalt - men du slösar också 15x( 30 KB per fil) i genomsnitt på grund av storleken på fördelningsenheten.
Fördjupning Förklaring
Varför händer detta? Tja, FAT32-filsystemet behöver hålla reda på var varje fil är lagrad. Om det skulle vara en lista över varje byte skulle tabellen( som en adressbok) växa i samma takt som data - och slösa mycket utrymme. Så vad de gör är att använda "fördelningsenheter", även känd som "klusterstorlek".Volymen är uppdelad i dessa fördelningsenheter, och vad gäller filsystemet kan de inte delas upp - det är de minsta blocken det kan adressera. Mycket som om du har ett husnummer, men din brevbärare bryr dig inte hur många sovrum du har eller 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 princip bortkastad, men hör fortfarande till filen - ungefär som ett sovrum du lämnar ledigt.
Varför finns det olika fördelningsenhetstorlekar? Tja, det blir en avvägning mellan att ha ett större bord( adressbok, t ex säger att John äger ett hus på 123 Falsk Street, 124 Falsk Street, 666 Satan Lane, etc.) eller mer bortkastat utrymme i varje enhet. Om du har större filer är det mer meningsfullt att använda större tilldelningsenheter - eftersom en fil inte får en ny enhet( hus) tills alla andra är fyllda. Om du har många små filer, ja, du kommer ändå att ha ett stort bord( adressbok), så det kan också ge dem små enheter( hus).
Stora allokeringsenheter kommer som regel att slösa bort mycket utrymme om du har många små filer. Det är vanligtvis inte en bra anledning att gå över 4 KB för allmän användning.
-fragmentering?
För fragmentering bör fragmentering inte slösa bort utrymme på detta sätt. Stora filer kan vara fragmenterade, dvs uppdelade i flera fördelningsenheter, men varje enhet ska fyllas innan nästa startas. Defragging kan spara lite utrymme i allokeringstabellerna, men det här är inte ditt specifika problem.
Möjliga lösningar
Som gladiator2345 föreslogs, är dina enda verkliga alternativ vid den här tiden att leva med det eller formatera med mindre fördelningsenheter.
Ditt kort kan formateras i FAT16, som har en mindre gräns för tabellstorlek och kräver därför mycket större allokeringsenheter för att kunna hantera en större volym( med en övre gräns på 2 GB med 32 KB fördelningsenheter).Källa med tillstånd av Braiam. Om så är fallet borde du säkert kunna formatera som FAT32 ändå.
Har något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.