/ / Hvorfor er der en stor forskel mellem 'Størrelse' og 'Størrelse på disk'?

Hvorfor er der en stor forskel mellem 'Størrelse' og 'Størrelse på disk'?

hvorfor-der--en-stor-forskel-mellem-størrelse-og-størrelse-på-disk-00

Det meste af tiden er værdierne for 'Størrelse' og 'Størrelsepå disk 'vil være meget tæt på at matche, når du kontrollerer en mappes eller filstørrelse, men hvad nu hvis der er et stort forskel 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 med tilladelse fra SuperUser - en underafdeling af Stack Exchange, en samfundsdrevet gruppe af spørgsmål og svar på websteder.

Spørgsmålet

SuperUser-læser thelastblack vil vide, hvorfor der er en så enorm 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?

hvorfor-der--en-stor-forskel-mellem-størrelse-og-størrelse-på-disk-01

Jeg ved, at 'Størrelse på 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 findes på min Android-telefons SD-kort. Inde i dette gemmer min kort-app dens cache-cache, og appen får sine kort fra Google Maps.

Ser man på skærmbillede, er der bestemt en enorm forskel 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 brugerFAT / FAT32-filsystem her, da du nævner, at dette er et SD-kort. NTFS og exFAT opfører sig på samme måde med hensyn til tildelingsenheder. Andre filsystemer kan være forskellige, men de understøttes alligevel ikke på Windows.

Hvis du har en masse små filer, er dette bestemt muligt. Overvej dette:

  • 50.000 filer
  • 32 KB klyngestørrelse (allokeringsenheder), som er maksimum for FAT32

Okay, nu minimum plads, der er taget er 50.000 * 32.000 = 1.6 GB (ved hjælp af SI-præfikser, ikke binære, for at forenkle matematik). Den plads, hver fil tager på disken, er altid et multiplum af tildelingsenhedens størrelse - 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 var i gennemsnit 2 KB, ville du få omkring 100 MB i alt - men du spilder også 15 gange den (30 KB pr. Fil) i gennemsnit på grund af fordelingsenhedens størrelse.

Dybdegående forklaring

Hvorfor sker dette? Nå, FAT32-filsystemet skal holde styr på, hvor hver fil er gemt. Hvis det skulle holde en liste over hver enkelt byte, ville tabellen (som en adressebog) vokse med samme hastighed som dataene - og spilder meget plads. Så hvad de gør er at bruge "allokeringsenheder", også kendt som "klyngestørrelse". Lydstyrken er opdelt i disse allokeringsenheder, og hvad filsystemet angår, kan de ikke opdeles - det er de mindste blokke, det kan adressere. Meget 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? Filesystemet 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 denne plads, og resten er dybest set spildt, men hører stadig til filen - meget som et soveværelse, du forlader ubeboet.

Hvorfor er der forskellige tildelingsenhedsstørrelser? Nå, det bliver en afvejning mellem at have et større bord (adressebog, f.eks. At sige, at 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 allokeringsenheder - fordi en fil ikke får en ny enhed (hus), før alle andre er fyldt ud. Hvis du har masser af små filer, ja, vil du alligevel have en stor tabel (adressebog), så kan lige så godt give dem små enheder (huse).

Store allokeringsenheder spilder som regel en masse plads, hvis du har masser af små filer. Der er normalt ikke en god grund til at gå over 4 KB til almindelig brug.

Fragmentering?

Hvad angår fragmentering, burde fragmentering ikke være detspild plads på denne måde. Store filer kan være fragmenteret, dvs. opdelt, i flere allokeringsenheder, men hver enhed skal udfyldes, inden den næste startes. Defragging sparer måske lidt plads i tildelingstabellerne, men dette er ikke dit specifikke problem.

Mulige løsninger

Som gladiator2345 antydede, er dine eneste virkelige muligheder på dette tidspunkt at leve med det eller omformatere med mindre tildelingsenheder.

Dit kort er muligvis formateret i FAT16, som haren mindre grænse for bordstørrelse og kræver derfor meget større allokeringsenheder for at adressere et større volumen (med en øvre grænse på 2 GB med 32 KB allokeringsenheder). Kilde med tilladelse fra Braiam. Hvis dette er tilfældet, skal du alligevel være i stand til 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-erfarne Stack Exchange-brugere? Se den fulde diskussionstråd her.