Zakaj obstaja velika razlika med velikostjo in velikostjo diska?
Večino časa bodo vrednosti za 'Velikost' in 'Velikost na disku' zelo blizu ujemanja pri preverjanju velikosti mape ali datoteke, toda kaj, če obstaja velika razlika med obema? Današnja pošta SuperUser Q&A obravnava odgovor na ta problem.
Današnja seja vprašanj in odgovorov prihaja z namenom SuperUser-a, ki je del skupine Stack Exchange, ki temelji na skupnostih spletnih mest za vprašanja in odgovore.
Vprašanje
Bralnik SuperUser thelastblack želi vedeti, zakaj obstaja tako velika razlika med »Velikostjo« in »Velikostjo na disku« za mapo na SD kartici telefona:
Kot lahko vidite spodaj, je v poljih »Velikost« in »Velikost na disku« za to mapo veliko razlike. Zakaj je to?
Vem, da bi morala biti velikost na disku nekoliko večja kot »Velikost« zaradi dodelitvenih enot v sistemu Windows, toda zakaj je tako veliko razlike? Ali je mogoče zaradi velikega števila datotek?
BTW, ta mapa je na SD kartici telefona Android. V tej aplikaciji moje zemljevidi shranijo svoje predpomnjene zemljevide, aplikacija pa svoje zemljevide dobi iz Google Zemljevidov.
Če pogledamo posnetek zaslona, je vsekakor velika razlika med »Velikostjo« in »Velikostjo na disku«, torej kaj se je tukaj zgodilo, da bi to povzročilo to?
Odgovor
Sodelavka SuperUser Bob ima odgovor za nas:
Predvidevam, da uporabljate datotečni sistem FAT / FAT32, ker ste omenili, da je to SD kartica. NTFS in exFAT se obnašata podobno glede na dodelitvene enote. Drugi datotečni sistemi so morda različni, vendar jih Windows vseeno ne podpira.
Če imate veliko majhnih datotek, je to zagotovo mogoče. Razmislite o tem:
- 50.000 datotek
- 32 KB velikost gruče (dodelitvene enote), kar je maksimum za FAT32
Ok, zdaj minimalno porabljen prostor je 50.000 * 32.000 = 1.6 GB (s predponami SI, ne binarno, za poenostavitev matematike). Prostor, ki ga ima vsaka datoteka na disku, je vedno večkratnik velikosti dodelitvene enote - in tukaj predvidevamo, da je vsaka datoteka dejansko dovolj majhna, da se prilega v eno samo enoto, pri čemer je nekaj (izgubljenega) prostora ostalo nad.
Če je vsaka datoteka povprečno 2 KB, boste dobili skupno 100 MB - vendar prav tako zapravljate 15x, da (30 KB na datoteko) povprečno zaradi velikosti enote za dodelitev.
Poglobljeno pojasnilo
Zakaj se to zgodi? No, datotečni sistem FAT32 mora spremljati, kje je shranjena vsaka datoteka. Če bi hranili seznam vsakega posameznega bajta, bi tabela (kot adresar) rasla z enako hitrostjo kot podatki - in izgubila veliko prostora. Torej, tisto, kar delajo, je uporaba »dodelitvenih enot«, znanih tudi kot »velikost grozda«. Volumen je razdeljen na te dodelitvene enote in kar zadeva datotečni sistem, jih ni mogoče razdeliti - to so najmanjši bloki, ki jih lahko obravnava. Podobno kot imate hišno številko, vendar vaš poštar ne skrbi, koliko sob imate ali kdo živi v njih.
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, to mu bo dalo najmanj prostora, ki ga lahko - v zgornjem primeru je to 32 KB. Vaša datoteka uporablja le majhen del tega prostora, ostalo pa je v bistvu zapravljeno, vendar še vedno pripada datoteki - podobno kot spalnica, ki jo pustite prazna.
Zakaj so različne velikosti enot za dodeljevanje? No, to postane kompromis med večjo mizo (adresar, npr. Rekel je, da ima John hišo na 123 Fake Street, 124 Fake Street, 666 Satan Lane itd.) Ali več zapravljenega prostora v vsaki enoti (hiši). . Če imate večje datoteke, je bolj smiselno uporabljati večje dodelitvene enote - ker datoteka ne dobi nove enote (hiše), dokler se ne zapolnijo vsi drugi. Če imate veliko majhnih datotek, boste imeli veliko mizo (adresar), zato jim lahko daste tudi majhne enote (hiše)..
Velike dodelitvene enote, kot splošno pravilo, bodo zapravile veliko prostora, če imate veliko majhnih datotek. Običajno ni dober razlog, da gredo nad 4 KB za splošno uporabo.
Razdrobljenost?
Kar zadeva razdrobljenost, fragmentacija ne bi smela zapravljati prostora na ta način. Velike datoteke so lahko razdrobljene, tj. Razdeljene v več dodelitvenih enot, vendar je treba vsako enoto zapolniti, preden se začne naslednja. Defragging lahko prihranite malo prostora v tabelah dodeljevanja, vendar to ni vaše specifično vprašanje.
Možne rešitve
Kot je predlagal gladiator2345, so vaše edine resnične možnosti na tem mestu živeti z njo ali se ponovno oblikovati z manjšimi dodelitvenimi enotami.
Vaša kartica je lahko formatirana v FAT16, ki ima manjšo omejitev velikosti tabele in zato zahteva veliko večje dodelitvene enote za obravnavo večjega obsega (z zgornjo mejo 2 GB z 32 KB dodelitvenimi enotami). Vir z dovoljenjem Braiama. Če je temu tako, bi morali biti sposobni varno formatirati FAT32.
Imate kaj dodati pojasnilu? Zvok v komentarjih. Želite prebrati več odgovorov drugih uporabnikov tehnologije Stack Exchange? Oglejte si celotno nit razprave tukaj.