12Aug

Zakaj obstaja velika razlika med velikostjo in velikostjo na disku?

Večino časa bodo vrednosti za "Velikost" in "Velikost na disku" zelo blizu ujemanju pri preverjanju velikosti mape ali datoteke, toda kaj, če obstaja velika razlika med njima? Današnji SuperUser Q & A post obravnava odgovor na to zmedeno težavo.

Današnje vprašanje &S sejo odgovora prihaja uporaba SuperUserja, ki je razdeljena na Stack Exchange, skupinsko spletno stran Q & A.

Vprašalnik

bralnik SuperUser thelastblack želi vedeti, zakaj obstaja velika razlika med »Velikost« in »Velikost na disku« za mapo na SD-kartici telefona:

Kot vidite spodaj, je toliko razlike medPolje »Velikost« in »Velikost na disku« za to mapo. Zakaj?

Vem, da bi morala biti velikost na disku nekaj več kot "velikost" zaradi enot dodelitve v operacijskem sistemu Windows, ampak zakaj obstaja ta razlika? Ali je to zaradi velikega števila datotek?

BTW, ta mapa je na SD kartici za Android telefon. Znotraj tega aplikacija za zemljevide shrani shranjene zemljevide in aplikacija dobi svoje zemljevide iz Google Zemljevidov.

Če pogledamo posnetek zaslona, ​​obstaja velika razlika med velikostjo in velikostjo na disku, kaj se je zgodilo tukaj, da bi to povzročilo?

Odzivnik odgovora

SuperUser Bob ima odgovor za nas:

Predvidevam, da uporabljate datotečni sistem FAT / FAT32 tukaj, ker omenite, da je to SD kartica. NTFS in exFAT se obnašajo podobno glede na enote za dodeljevanje. Drugi datotečni sistemi so lahko različni, vendar v operacijskem sistemu Windows nikakor niso podprti.

Če imate veliko majhnih datotek, je to gotovo mogoče. Razmislite o tem:

  • 50.000 datotek
  • Velikost gruče velikosti 32 KB( dodelitvene enote), ki je največ za FAT32

Ok, zdaj je najmanjši prostor 50.000 * 32.000 = 1,6 GB( s predponami SI, ne binarnimi, da bi poenostavilimatematika).Prostor, ki ga vsaka datoteka vzame na disk, je vedno večkratna velikost enote dodeljevanja - in tukaj smo domnevali, da je vsaka datoteka dejansko dovolj majhna, da se prilega enotni enoti, pri čemer je nekaj( zapravljen) prostor prepuščen.

Če je vsaka datoteka v povprečju znašala 2 KB, bi dobili približno 100 MB skupaj, vendar pa tudi vi trošite 15-kratno( 30 KB na datoteko) v povprečju zaradi velikosti enote dodelitve.

Podrobna razlaga

Zakaj se to zgodi? No, datotečni sistem FAT32 mora spremljati, kje je vsaka datoteka shranjena.Če bi shranjevali seznam vsakega posameznega bajta, bi bila tabela( tako kot imenik) rastejo z enako hitrostjo kot podatki - in bi porabili veliko prostora. Torej, tisto, kar počnejo, je uporaba "dodelitvenih enot", znane tudi kot "velikost gruče".Obseg je razdeljen na te enote dodeljevanja, kar zadeva datotečni sistem, jih ni mogoče razčleniti - to so najmanjši bloki, na katere se lahko obrne. Podobno kot imate hišno številko, vendar vaš poštar ne skrbi, koliko sob ima ali kdo živi v njih.

Torej, kaj se zgodi, če imate zelo majhno datoteko? No, datotečni sistem ne skrbi, če je datoteka 0 KB, 2 KB ali celo 15 KB, bo to dala čim manjši prostor - v zgornjem primeru, to je 32 KB.Vaša datoteka uporablja samo majhno količino tega prostora, preostanek pa je v bistvu zapravljen, vendar še vedno pripada datoteki, podobno kot spalnica, ki jo pustite nenaseljeni.

Zakaj obstajajo različna velikost enote dodeljevanja? No, postane kompromis med večjo tabelo( adresar, npr. Reči, da je John lastnik hiše na 123 Fake Street, 124 Fake Street, 666 Satan Lane, itd.) Ali več prostora za porabo v vsaki enoti( hišo).Če imate večje datoteke, je smiselno uporabiti večje dodelitvene enote - ker datoteka ne dobi nove enote( hiše), dokler se ne napolnijo vsi drugi.Če imate veliko majhnih datotek, dobro, boste imeli veliko tabelo( adresar) vseeno, tako da lahko tudi jim majhne enote( hiše).

Velike enote za dodeljevanje, kot splošno pravilo, bodo izgubile veliko prostora, če imate veliko majhnih datotek. Običajno ni dober razlog, da bi se lahko preselili nad 4 KB za splošno uporabo.

fragmentacija?

Kar zadeva razdrobljenost, razdrobljenost ne sme ovirati prostora na ta način. Velike datoteke so lahko razdrobljene, tj. Razdeljene na več enot dodeljevanja, vendar je treba vsako enoto izpolniti pred začetkom naslednjega. Defragging lahko prihranijo malo prostora v razpredelnicah dodelitev, vendar to ni vaša specifična težava.

Možne rešitve

Kot je predlagal gladiator2345, so vaše edine možnosti na tej točki živeti z njim ali preoblikovati z manjšimi enotami dodeljevanja.

Vaša kartica je lahko formatirana v FAT16, ki ima manjšo omejitev velikosti tabele in zato zahteva veliko večje enote za dodeljevanje večjih količin( z zgornjo mejo 2 GB z 32 KB enotami dodelitve).Izvorna ljubezen Braiam.Če je tako, bi morali biti varno oblikovani kot FAT32.

Ali želite dodati nekaj pojasnila? Zvok v komentarjih.Želite prebrati več odgovorov od drugih uporabniških članov stack Exchange? Oglejte si celotno temo za razpravo tukaj.