12Aug

Hvorfor er der en stor forskel mellem 'Size' og 'Size on Disk'?

click fraud protection

Det meste af tiden vil værdierne for 'Størrelse' og 'Størrelse på disk' være meget tæt på matchning, når man 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 &Svar session kommer til os høflighed af SuperUser-en underafdeling af Stack Exchange, en community-drevet gruppe af Q & A-websteder.

Spørgsmål

SuperUser læser thelastblack ønsker at vide, hvorfor der er så stor forskel mellem 'Size' og 'Size on disk' for en mappe på telefonens SD-kort:

Som du kan se nedenfor er der så stor forskel påFelt 'Størrelse' og 'Størrelse på disk' for denne mappe. Hvorfor det?

Jeg ved, at 'Size on disk' burde være lidt mere end 'Størrelse' på grund af tildelingsenheder i Windows, men hvorfor er der så meget forskel? Kunne det være på grund af det store antal filer?

BTW, denne mappe er på min Android-telefonens SD-kort. Indenfor dette gemmer min kort app sine cachelagrede kort, og appen får sine kort fra Google Maps.

instagram viewer

Ser man på skærmbilledet, er der absolut en stor uoverensstemmelse mellem 'Size' og 'Size on disk', så hvad er der sket her for at forårsage dette?

Svaret

SuperUser-bidragyder Bob har svaret for os:

Jeg antager, at du bruger filsystemet FAT / FAT32 her, da du nævner dette er et SD-kort. NTFS og exFAT opfører sig ligeledes med hensyn til fordelingsenheder. Andre filsystemer kan være forskellige, men de understøttes ikke i Windows.

Hvis du har mange små filer, er det helt sikkert muligt. Overvej dette:

  • 50.000 filer
  • 32 KB klyngestørrelse( tildelingsenheder), hvilket er max for FAT32

Ok, nu er minimum plads taget 50.000 * 32.000 = 1.6 GB( ved hjælp af SI-præfikser, ikke binære, for at forenklematematik).Rummet hver fil tager på disken er altid et flertal af tildelingsenhedsstørrelsen - og her antages det, at hver fil faktisk er lille nok til at passe i en enkelt enhed, med noget( spildt) plads tilbage.

Hvis hver fil i gennemsnit er 2 KB, vil du få ca. 100 MB i alt - men du spilder også 15 gange den( 30 KB pr. Fil) i gennemsnit på grund af størrelsen af ​​tildelingsenheden.

Fordybelse Forklaring

Hvorfor sker dette? Nå, FAT32-filsystemet behøver at holde styr på, hvor hver fil er gemt. Hvis det skulle være en liste over hver enkelt byte, ville bordet( som en adressebog) vokse med samme hastighed som dataene - og spilde meget plads. Så hvad de gør er at bruge "fordelingsenheder", også kendt som "klyngestørrelse".Volumenet er opdelt i disse tildelingsenheder, og hvad angår filsystemet kan de ikke opdeles - det er de mindste blokke, det kan adressere. Meget som om du har et husnummer, men din postbud er ligeglad med hvor mange soveværelser du har, eller hvem bor i dem.

Så hvad sker der, hvis du har en meget lille fil? Nå er filsystemet ikke ligeglad, hvis filen er 0 KB, 2 KB eller endda 15 KB, det giver det det mindste plads, det kan - i eksemplet ovenfor er det 32 ​​KB.Din fil bruger kun en lille del af dette rum, og resten er stort set spildt, men hører stadig til filen - ligesom et soveværelse, du forlader ubebuddet.

Hvorfor er der forskellige tildelingsenhedsstørrelser? Nå bliver det en afvejning mellem at have et større bord( adressebog, f.eks. At John ejer et hus på 123 Falsk Street, 124 Falsk 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), indtil 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 vil som regel spildt 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?

For fragmentering bør fragmentering ikke spildte 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 er startet. Defragging kan spare lidt plads i tildelingstabellerne, men dette er ikke dit specifikke problem.

Mulige løsninger

Som gladiator2345 foreslog, er dine eneste rigtige muligheder på dette tidspunkt at leve med det eller reformat med mindre tildelingsenheder.

Dit kort kan formateres i FAT16, som har en mindre grænse for bordstørrelse og kræver derfor meget større tildelingsenheder for at kunne adressere et større volumen( med en øvre grænse på 2 GB med 32 KB tildelingsenheder).Kilde høflighed af Braiam. Hvis det er tilfældet, skal du sikkert kunne formatere som FAT32 alligevel.

Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Tjek den fulde diskussionstråd her.