If-Koubou

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? (Kako da)

Većinu vremena, vrijednosti za 'veličinu' i 'veličinu na disku' bit će vrlo blizu podudaranja prilikom provjere mape ili veličine datoteke, ali što ako postoji velika odstupanja između njih? Danas SuperUser Q & A post gleda na odgovor na ovaj zbunjujući problem.

Današnja pitanja i odgovori nam se javljaju zahvaljujući SuperUseru - podjele Stack Exchange-a, zajednice-driven grupiranja Q & A web stranica.

Pitanje

SuperUser čitač 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, toliko je razlike između polja "Veličina" i "Veličina na disku" za ovu mapu. Zašto je to?

Znam da veličina na disku bi trebala biti malo više od veličine zbog raspodjele jedinica u sustavu Windows, ali zašto postoji toliko mnogo razlike? Je li to moguće zbog velikog broja datoteka?

BTW, ova je mapa na SD kartici telefona Android. Unutar ovog, aplikacija mojeg karata pohranjuje mape spremljene u memoriju, a aplikacija dobiva svoje karte s Google karata.

Gledajući screenshot, definitivno postoji velika odstupanja između "Veličina" i "Veličina na disku", pa što se ovdje dogodilo da bi to moglo prouzročiti?

Odgovor

Bobov agent za SuperUser ima odgovor za nas:

Pretpostavljam da ovdje koristite FAT / FAT32 datotečni sustav, budući da spomenete ovo je SD kartica. NTFS i exFAT se ponašaju slično u odnosu na jedinice dodjele. Drugi datotečni sustavi mogu biti različiti, ali ionako 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 clustera (jedinice dodjele), što je maksimum za FAT32

Ok, sada minimum zauzet je prostor od 50.000 * 32.000 = 1,6 GB (pomoću SI prefiksa, a ne binarnim, kako bi se pojednostavio matematiku). Prostor svake datoteke na disku uvijek je višekratnik veličine jedinice dodjele - i ovdje pretpostavljamo da je svaka datoteka zapravo dovoljno malena da se uklapa u jednu jedinicu, s nekim (izgubljenim) prostorom koji je preostao.

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

In-Depth Objašnjenje

Zašto se to dogodi? Pa, FAT32 datotečni sustav mora pratiti gdje se svaka datoteka pohranjuje. Ako bi trebao sačuvati popis svih pojedinačnih bajtova, tablica (poput adresara) povećala bi se s istom brzinom kao i podaci - i gubiti puno prostora. Dakle, ono što rade jest korištenje "jedinica dodjele", također poznate kao "veličina klastera". Volumen je podijeljen u ove jedinice dodjele, a što se tiče datotečnog sustava, one se ne mogu podijeliti - to su najmanji blokovi kojima se može adresirati. Slično kao da imate kućni broj, ali vaš poštar ne zanima koliko vam spavaonica ima ili tko živi u njima.

Pa što će se dogoditi ako imate vrlo malu datoteku? Pa, datotečni sustav ne zanima je li datoteka 0 KB, 2 KB ili čak 15 KB, to će mu dati najmanje prostora koji može - u gornjem primjeru, to je 32 KB. Vaša datoteka koristi samo malu količinu tog prostora, a ostatak je u osnovi izgubljen, ali još uvijek pripada datoteci - slično kao spavaćoj sobi koju ostavite bez radnog mjesta.

Zašto postoje različite veličine jedinica dodjele? Pa, to postaje kompromis između toga što ima veći stol (adresar, npr. John kaže da je vlasnik kuće u 123 lažnoj ulici, 124 lažni ulici, 666 Satan Lane itd.) Ili više prostora za svaku jedinicu (kuću) , Ako imate veće datoteke, ima smisla upotrebljavati veće jedinice za dodjelu - jer datoteka ne dobiva novu jedinicu (kuću) dok se svi drugi ne popune. Ako imate puno malih datoteka, dobro, imat ćete veliki stol (adresar) ionako, pa bi im mogli dati i male jedinice (kuće).

Velike jedinice za dodjelu, kao opće pravilo, gube puno prostora ako imate puno malih datoteka. Obično nema dobrog razloga za opću upotrebu iznad 4 KB.

Fragmentacija?

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

Moguća rješenja

Kao što je sugerirao gladiator2345, vaše jedine stvarne opcije u ovom trenutku su živjeti s njom ili se preoblikovati s manjim jedinicama dodjele.

Vaša se kartica može formatirati u FAT16, što ima manju granicu za veličinu tablice i zbog toga zahtijeva puno veće jedinice za dodjelu kako bi se riješio veći volumen (s gornjom granicom od 2 GB s 32 KB alokacijskim jedinicama). Izvorna ljubaznost Braiama. Ako je to slučaj, trebali biste sigurno oblikovati kao FAT32.

Imate li nešto za objašnjenje? Zvuči u komentarima. Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.