Hjemmeside » hvordan » Hvorfor er det en stor forskjell mellom størrelse og størrelse på disk?

    Hvorfor er det en stor forskjell mellom størrelse og størrelse på disk?

    Mesteparten av tiden vil verdiene for 'Size' og 'Size on disk' være svært nær matchende når du kontrollerer en mappe eller filstørrelse, men hva om det er stor forskjell mellom de to? Dagens SuperUser Q & A-innlegg ser på svaret på dette forvirrende problemet.

    Dagens Spørsmål & Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppering av Q & A-nettsteder.

    Spørsmålet

    SuperUser leser thelastblack ønsker å vite hvorfor det er så stor forskjell mellom "Size" og "Size on disk" for en mappe på telefonens SD-kort:

    Som du ser nedenfor, er det så mye forskjell mellom feltene "Størrelse" og "Størrelse på disk" for denne mappen. Hvorfor det?

    Jeg vet at "Størrelse på disk" burde være litt mer enn "Størrelse" på grunn av tildelingsenheter i Windows, men hvorfor er det så mye forskjell? Kan det skyldes det store antall filer?

    BTW, denne mappen er på min Android-telefonens SD-kort. Innenfor dette lagrer kartappappen sine hurtigbufrede kart, og appen får kartene sine fra Google Maps.

    Ser på skjermbildet, det er definitivt en stor uoverensstemmelse mellom "Size" og "Size on disk", så hva har skjedd her for å forårsake dette?

    Svaret

    SuperUser-bidragsyter Bob har svaret for oss:

    Jeg antar at du bruker FAT / FAT32 filsystemet her, siden du nevner at dette er et SD-kort. NTFS og exFAT oppfører seg tilsvarende med hensyn til allokeringsenheter. Andre filsystemer kan være forskjellige, men de støttes ikke på Windows uansett.

    Hvis du har mange små filer, er dette sikkert mulig. Tenk på dette:

    • 50.000 filer
    • 32 KB klyngestørrelse (allokeringsenheter), som er maks for FAT32

    Ok, nå minimum plass tatt er 50 000 * 32 000 = 1,6 GB (bruker SI-prefikser, ikke binære, for å forenkle matematikkene). Plassen hver fil tar på disken er alltid et flertall av tildelingsenhetsstørrelsen - og her antar vi at hver fil faktisk er liten nok til å passe inn i en enkelt enhet, med litt (bortkastet) plass igjen.

    Hvis hver fil i gjennomsnitt er 2 KB, vil du få omtrent 100 MB totalt - men du sliter også 15 ganger den (30 kB per fil) i gjennomsnitt på grunn av størrelsen på tildelingsenheten.

    Forklaring i dybden

    Hvorfor skjer dette? Vel, FAT32-filsystemet trenger å holde oversikt over hvor hver fil er lagret. Hvis det skulle være en liste over hver enkelt byte, ville tabellen (som en adressebok) vokse med samme hastighet som dataene - og kaste bort mye plass. Så hva de gjør er å bruke "allokeringsenheter", også kjent som "klyngestørrelsen". Volumet er delt inn i disse allokeringsenhetene, og så langt som filsystemet angår, kan de ikke deles opp - det er de minste blokkene det kan adressere. Mye som om du har et husnummer, men postboderen bryr deg ikke om hvor mange soverom du har eller som bor i dem.

    Så hva skjer hvis du har en veldig liten fil? Vel, filsystemet bryr seg ikke om filen er 0 KB, 2 KB eller til og med 15 KB, det gir det minst plass det kan - i eksemplet ovenfor er det 32 ​​KB. Filen din bruker bare en liten del av dette rommet, og resten er i utgangspunktet bortkastet, men tilhører fortsatt filen - som et soverom du forlater ubebodd.

    Hvorfor er det forskjellige tildelingsenhetsstørrelser? Vel, det blir en avvei mellom å ha et større bord (adressebok, for eksempel at John eier et hus på 123 Falsk Street, 124 Falsk Street, 666 Satan Lane, etc.) eller mer bortkastet plass i hver enhet (hus) . Hvis du har større filer, er det mer fornuftig å bruke større tildelingsenheter - fordi en fil ikke får en ny enhet (hus) til alle andre er fylt opp. Hvis du har mange små filer, vel, du kommer til å ha et stort bord (adressebok) uansett, så kan også gi dem små enheter (hus).

    Store tildelingsenheter, som en generell regel, vil kaste bort mye plass hvis du har mange små filer. Det er vanligvis ikke en god grunn til å gå over 4 kB for generell bruk.

    Fragmentering?

    Når det gjelder fragmentering, bør fragmentering ikke kaste bort plass på denne måten. Store filer kan være fragmentert, dvs. delt opp i flere tildelingsenheter, men hver enhet skal fylles før den neste er startet. Defragging kan spare litt plass i tildelingstabellene, men dette er ikke ditt spesifikke problem.

    Mulige løsninger

    Som gladiator2345 foreslo, er dine eneste virkelige alternativer på dette punktet å leve med det eller reformat med mindre tildelingsenheter.

    Kortet ditt kan formateres i FAT16, som har en mindre grense på tabellstørrelse, og krever derfor mye større tildelingsenheter for å kunne adressere et større volum (med en øvre grense på 2 GB med 32 KB tildelingsenheter). Kilde høflighet av Braiam. Hvis det er tilfelle, bør du sikkert kunne formatere som FAT32 uansett.


    Har du noe å legge til forklaringen? Lyder av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.