For det meste vil værdierne for 'Størrelse' og 'Størrelse på disk' være meget tæt på at matche, når du kontrollerer en mappe eller filstørrelse, men hvad hvis der er en enorm uoverensstemmelse mellem de to? Dagens SuperUser Q & A-indlæg ser på svaret på dette forvirrende problem.
Dagens spørgsmål og svar-session kommer til os med tilladelse fra SuperUser - en underinddeling af Stack Exchange, en community-driven gruppe af Q&A websteder.
Spørgsmålet
SuperUser-læser thelastblack vil vide, hvorfor der er så stor forskel mellem 'Størrelse' og 'Størrelse på disk' for en mappe på hans telefons SD-kort:
Som du kan se nedenfor, er der så stor forskel mellem felterne 'Størrelse' og 'Størrelse på disk' for denne mappe. Hvorfor det?
![]()
Jeg ved, at 'Størrelse på disk' skulle være lidt mere end 'Størrelse' på grund af tildelingsenheder i Windows, men hvorfor er der så meget forskel? Kan det være på grund af det store antal filer?
BTW, denne mappe findes på min Android-telefons SD-kort. Inde i dette gemmer min kortapp sine cachelagrede kort, og appen får sine kort fra Google Maps.
Ser man på skærmbilledet er der bestemt en enorm uoverensstemmelse mellem 'Størrelse' og 'Størrelse på disk', så hvad er der sket her for at forårsage dette?
Svaret
SuperUser-bidragyder Bob har svaret til os:
Jeg antager, at du bruger FAT / FAT32-filsystemet her, da du nævner, at dette er et SD-kort. NTFS og exFAT opfører sig ens med hensyn til tildelingsenheder. Andre filsystemer kan være forskellige, men de understøttes alligevel ikke i Windows.
Hvis du har mange små filer, er dette bestemt muligt. Overvej dette:
- 50.000 filer
- 32 KB klyngestørrelse (tildelingsenheder), som er maksimum for FAT32
Ok, nu er det minimum plads taget er 50.000 * 32.000 = 1,6 GB (ved hjælp af SI-præfikser, ikke binært, for at forenkle matematikken). Den plads, hver fil tager på disken, er altid et multiplum af størrelsen på allokeringsenheden - og her antager vi, at hver fil faktisk er lille nok til at passe inden for en enkelt enhed, med noget (spildt) plads tilbage.
Hvis hver fil i gennemsnit var 2 KB, ville du få ca. 100 MB i alt - men du spilder også 15 gange så (30 KB pr. Fil) i gennemsnit på grund af tildelingsenhedsstørrelsen.
Dybtgående forklaring
Hvorfor sker dette? Nå, FAT32-filsystemet skal holde styr på, hvor hver fil er gemt. Hvis det skulle føre en liste over hver enkelt byte, ville tabellen (som en adressebog) vokse med samme hastighed som dataene - og spilde meget plads. Så hvad de gør er at bruge "allokeringsenheder", også kendt som "klyngestørrelse". Lydstyrken er opdelt i disse tildelingsenheder, og hvad filsystemet angår, kan de ikke opdeles - det er de mindste blokke, det kan adressere. Ligesom du har et husnummer, men din postbud er ligeglad med, hvor mange soveværelser du har, eller hvem der bor i dem.
Så hvad sker der, hvis du har en meget lille fil? Nå, filsystemet er ligeglad med, om filen er 0 KB, 2 KB eller endda 15 KB, det giver den mindst mulig plads - i eksemplet ovenfor er det 32 KB. Din fil bruger kun en lille mængde af dette rum, og resten er dybest set spildt, men hører stadig til filen - ligesom et soveværelse, du efterlader ledig.
Hvorfor er der forskellige tildelingsenhedsstørrelser? Nå, det bliver en afvejning mellem at have et større bord (adressebog, f.eks. Siger John ejer et hus på 123 Fake Street, 124 Fake Street, 666 Satan Lane osv.) Eller mere spildt plads i hver enhed (hus) . Hvis du har større filer, er det mere fornuftigt at bruge større tildelingsenheder - fordi en fil ikke får en ny enhed (hus), før alle andre er fyldt op. Hvis du har mange små filer, skal du alligevel have et stort bord (adressebog), så det kan lige så godt give dem små enheder (huse).
Store tildelingsenheder spilder som hovedregel meget plads, hvis du har mange små filer. Der er normalt ikke en god grund til at gå over 4 KB til generel brug.
Fragmentering?
Hvad angår fragmentering, bør fragmentering ikke spilde plads på denne måde. Store filer kan være fragmenteret, dvs. opdelt i flere tildelingsenheder, men hver enhed skal udfyldes, inden den næste startes. Defragging kan muligvis spare lidt plads i tildelingstabellerne, men dette er ikke dit specifikke problem.
Mulige løsninger
Som gladiator2345 foreslået , dine eneste reelle muligheder på dette tidspunkt er at leve med det eller omformatere med mindre allokeringsenheder.
Dit kort kan være formateret i FAT16, som har en mindre grænse for bordstørrelse og derfor kræver meget større tildelingsenheder for at adressere en større lydstyrke (med en øvre grænse på 2 GB med 32 KB tildelingsenheder). Kilde med tilladelse til Braiam . Hvis det er tilfældet, skal du alligevel være i stand til sikkert at formatere som FAT32.
Har du noget at tilføje til forklaringen? Lyd fra i kommentarerne. Vil du læse flere svar fra andre teknisk kyndige Stack Exchange-brugere? Tjek den fulde diskussionstråd her .