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

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

    Størstedelen 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 stor uoverensstemmelse mellem de to? Dagens SuperUser Q & A-post ser på svaret på dette forvirrende problem.

    Dagens Spørgsmål & Svar session kommer til os med venlig hilsen af ​​SuperUser-en underafdeling af Stack Exchange, en community-driven gruppe af Q & A-websteder.

    Spørgsmålet

    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å meget forskel mellem felterne "Størrelse" og "Størrelse på disk" for denne mappe. Hvorfor det?

    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 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.

    Ser man på skærmbilledet, er der helt sikkert en stor uoverensstemmelse mellem 'Size' og 'Size on disk', så hvad er der sket her for at få det til?

    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 klyngeformat (tildelingsenheder), hvilket er maksimumet for FAT32

    Ok nu nu minimum plads taget er 50.000 * 32.000 = 1.6 GB (ved hjælp af SI-præfikser, ikke binære, for at forenkle matematikerne). 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 tildelingsenhedsstørrelsen.

    Forklaring i dybden

    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 for så vidt angår filsystemet, 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 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 mindst plads, det kan - i eksemplet ovenfor er det 32 ​​KB. Din fil bruger kun en lille del af dette rum, og resten er i det væsentlige spildt, men tilhører stadig filen - ligesom et soveværelse, du forlader ubesatte.

    Hvorfor er der forskellige tildelingsenhedsstørrelser? Nå bliver det et kompromis 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, vil du alligevel have et stort bord (adressebog), så det kan lige så godt give dem små enheder (huse).

    Store tildelingsenheder vil som hovedregel spilde 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.