Početna » kako da » Zašto postoji velika razlika između 'veličine' i 'veličine na disku'?

    Zašto postoji velika razlika između 'veličine' i 'veličine na disku'?

    U većini slučajeva, vrijednosti za "Veličina" i "Veličina na disku" bit će vrlo blizu podudaranja pri provjeri veličine mape ili datoteke, ali što ako postoji veliko odstupanje između njih? Današnja postova za pitanja i odgovore tvrtke SuperUser razmatraju odgovor na ovaj problem.

    Današnja sesija pitanja i odgovora dolazi nam ljubaznošću SuperUser-a, podjele Stack Exchangea, grupiranja web-lokacija za pitanja i odgovore u zajednici.

    Pitanje

    Čitač SuperUser thelastblack želi znati zašto postoji tako velika razlika između "Veličina" i "Veličina na disku" za mapu na SD kartici telefona:

    Kao što možete vidjeti u nastavku, postoji velika razlika između polja 'Veličina' i 'Veličina na disku' za ovu mapu. Zašto je to?

    Znam da bi veličina 'disk na disku' trebala biti nešto veća od 'veličine' zbog alokacija u sustavu Windows, ali zašto postoji tolika razlika? Može li to biti zbog velikog broja datoteka?

    BTW, ova je mapa na SD kartici mog Android telefona. Aplikacija moje karte pohranjuje svoje predmemorirane karte u aplikaciji Google Maps.

    Gledajući snimku zaslona, ​​definitivno postoji ogromna razlika između "veličine" i "veličine na disku", pa što se ovdje dogodilo da bi se to uzrokovalo?

    Odgovor

    Doprinositelj SuperUser Bob ima odgovor za nas:

    Pretpostavljam da ovdje koristite datotečni sustav FAT / FAT32, budući da ste spomenuli SD karticu. NTFS i exFAT ponašaju se slično u odnosu na jedinice raspodjele. Drugi datotečni sustavi mogu biti različiti, ali ipak nisu podržani u sustavu Windows.

    Ako imate puno malih datoteka, to je svakako moguće. Razmotrite ovo:

    • 50.000 datoteka
    • 32 KB veličine klastera (jedinice za dodjelu), što je maksimum za FAT32

    Ok, sada minimum zauzeto mjesto je 50.000 * 32.000 = 1.6 GB (pomoću SI prefiksa, a ne binarno, kako bi se pojednostavile matematike). Prostor koji svaka datoteka zauzima na disku uvijek je višestruka od veličine jedinice za dodjelu - i ovdje pretpostavljamo da je svaka datoteka zapravo dovoljno mala da stane u jednu jedinicu, s nekim (izgubljenim) prostorom..

    Ako je svaka datoteka prosječno 2 KB, dobit ćete ukupno oko 100 MB - ali također trošite 15x prosječno (30 KB po datoteci) zbog veličine jedinice dodjele.

    Dubinsko objašnjenje

    Zašto se to događa? FAT32 sustav datoteka treba pratiti gdje je pohranjena svaka datoteka. Ako bi se zadržao popis svakog pojedinačnog bajta, tablica (kao adresar) bi rasla istom brzinom kao i podaci - i gubila mnogo prostora. Dakle, ono što oni rade je da koriste “jedinice raspodjele”, također poznate kao “veličina klastera”. Volumen je podijeljen na te jedinice raspodjele, a što se tiče datotečnog sustava, oni se ne mogu podijeliti - to su najmanji blokovi koje može adresirati. Slično kao što imate kućni broj, ali vaš poštar ne zanima koliko soba imate ili tko u njima živi.

    Što se događa ako imate vrlo malu datoteku? Pa, datotečni sustav ne brine je li datoteka 0 KB, 2 KB, ili čak 15 KB, to će mu dati najmanji prostor - u gornjem primjeru, to je 32 KB. Vaša datoteka koristi samo malu količinu tog prostora, a ostatak je zapravo izgubljen, ali još uvijek pripada datoteci - slično spavaćoj sobi koju ostavite praznom.

    Zašto postoje različite veličine jedinica za dodjelu? Pa, postaje kompromis između veće tablice (adresar, npr. Kaže da Ivan posjeduje kuću na 123 Fake Street, 124 Fake Street, 666 Satan Lane, itd.), Ili više izgubljenog prostora u svakoj jedinici (kući) , Ako imate veće datoteke, ima više smisla koristiti veće alokacije - jer datoteka ne dobiva novu jedinicu (kuću) dok se ne popune svi ostali. Ako imate mnogo malih datoteka, imat ćete veliki stol (adresar), pa im možete dati i male jedinice (kuće).

    Velike jedinice za raspodjelu, kao opće pravilo, troše puno prostora ako imate puno malih datoteka. Obično ne postoji dobar razlog da pređete preko 4 KB za opću upotrebu.

    Fragmentacija?

    Što se tiče fragmentacije, fragmentacija ne bi trebala trošiti prostor na ovaj način. Velike datoteke mogu biti fragmentirane, tj. Podijeliti u višestruke jedinice dodjele, ali svaka jedinica treba biti popunjena prije nego što se započne sljedeća. Defragging može uštedjeti malo prostora u tablicama za dodjelu, ali to nije vaš specifični problem.

    Moguća rješenja

    Kao što je predložio gladiator2345, jedina prava opcija u ovom trenutku je živjeti s njom ili se preoblikovati s manjim jedinicama raspodjele.

    Vaša kartica može biti formatirana u FAT16, koja ima manje ograničenje na veličinu tablice i stoga zahtijeva mnogo veće alokacije kako bi se riješio veći volumen (s gornjom granicom od 2 GB s 32 KB jedinice za dodjelu). Izvor zahvaljujući Braiamu. Ako je to slučaj, trebali biste sigurno moći formatirati FAT32.


    Imate li što dodati objašnjenju? Zvuk isključen u komentarima. Želite li pročitati više odgovora od drugih tehničkih korisnika Stack Exchangea? Pogledajte cjelokupnu temu za raspravu ovdje.