Prečo je veľký rozdiel medzi veľkosťou a veľkosťou na disku?
Väčšinu času budú hodnoty veľkosti a veľkosti na disku veľmi blízko pri porovnaní pri kontrole veľkosti priečinka alebo súboru, ale aké je to, ak medzi oboma existujú obrovské rozdiely? Dnešný príspevok SuperUser Q & A sa zaoberá odpoveďou na tento problém.
Dnešná relácia otázok a odpovedí sa k nám pridelí zdvorilosťou SuperUser - podskupiny Stack Exchange, zoskupenia webových stránok typu Q & A.
Otázka
Čítačka SuperUser thelastblack chce vedieť, prečo existuje tak veľký rozdiel medzi veľkosťou a veľkosťou na disku pre priečinok na SD karte svojho telefónu:
Ako vidíte nižšie, medzi veľkosťou a veľkosťou disku na tomto priečinku je veľký rozdiel. Prečo to je?
Viem, že veľkosť na disku by mala byť o niečo väčšia ako veľkosť, pretože kvôli alokačným jednotkám v systéme Windows, ale prečo existuje taký veľký rozdiel? Môže to byť kvôli veľkému počtu súborov?
BTW, tento priečinok sa nachádza na karte SD na telefóne Android. V aplikácii moje mapy sa v nej ukladajú uložené mapy a aplikácia dostane svoje mapy z Máp Google.
Pri pohľade na snímku obrazovky je rozhodne veľký rozdiel medzi veľkosťou a veľkosťou na disku, takže čo sa tu stalo, spôsobilo to?
Odpoveď
Príspevok SuperUser Bob má pre nás odpoveď:
Budem predpokladať, že tu používate súborový systém FAT / FAT32, pretože ste spomenuli, že ide o SD kartu. NTFS a exFAT sa správajú podobne aj v súvislosti s alokačnými jednotkami. Ostatné systémy súborov môžu byť iné, ale v systéme Windows nie sú podporované.
Ak máte veľa malých súborov, je to iste možné. Zváž toto:
- 50 000 súborov
- Veľkosť klastra 32 kB (alokačné jednotky), čo je maximálna hodnota pre FAT32
Ok, teraz minimum vyťažený priestor je 50 000 * 32 000 = 1,6 GB (pomocou predpôn SI, nie binárnych, aby sa zjednodušili matematické pomenovania). Priestor každého súboru na disku je vždy násobkom veľkosti alokačnej jednotky - a tu predpokladáme, že každý súbor je skutočne dostatočne malý na to, aby sa zmestil do jednej jednotky, pričom zostalo nejaký (zbytočný) priestor.
Ak by bol každý súbor v priemere 2 KB, mali by ste dostať približne 100 MB celkom - ale tiež stratíte 15x (30 KB za súbor) v priemere kvôli veľkosti alokačnej jednotky.
Vysvetlenie v hĺbke
Prečo sa to deje? No, súborový systém FAT32 musí sledovať, kde je uložený každý súbor. Ak by mal zostať zoznam každého jednotlivého bytu, tabuľka (ako adresár) by rástla rovnakou rýchlosťou ako dáta - a strácať veľa priestoru. Takže to, čo robia, je používať "alokačné jednotky", známe aj ako "veľkosť klastra". Objem je rozdelený na tieto alokačné jednotky a pokiaľ ide o súborový systém, nemožno ich rozdeliť - to sú tie najmenšie bloky, ktoré môžu riešiť. Rovnako ako máte číslo domu, ale váš poštár sa nestará, koľko spální máte alebo kto žije v nich.
Takže čo sa stane, ak máte veľmi malý súbor? No súborový systém nezáleží na tom, či je súbor 0 KB, 2 KB alebo dokonca 15 KB, dá mu to najmenší priestor - v príklade vyššie, to je 32 KB. Váš súbor používa iba malé množstvo tohto priestoru a zvyšok je v podstate zbytočný, ale stále patrí do súboru - podobne ako spálňa, ktorú necháte prázdne.
Prečo existujú rozdielne veľkosti prideľovacích jednotiek? No, stáva sa kompromisom medzi väčším stolom (adresárom, napríklad hovoriac, že John vlastní dom na 123 Fake Street, 124 Fake Street, 666 Satan Lane atď.), Alebo viac zbytočného priestoru v každej jednotke (dome) , Ak máte väčšie súbory, je viac rozumné používať väčšie alokačné jednotky - pretože súbor neobsahuje novú jednotku (dom), kým nebudú vyplnené všetky ostatné jednotky. Ak máte veľa malých súborov, tak aj tak budete mať veľký stôl (adresár), takže im môžete dať aj malé jednotky (domy).
Veľké prideľovacie jednotky spravidla strácajú veľa priestoru, ak máte veľa malých súborov. Tam zvyčajne nie je dobrý dôvod ísť nad 4 KB pre všeobecné použitie.
roztrieštenia?
Pokiaľ ide o roztrieštenosť, roztrieštenosť by nemala spôsobovať priestor týmto spôsobom. Veľké súbory môžu byť fragmentované, t.j. rozdelené do viacerých alokačných jednotiek, ale každá jednotka by mala byť vyplnená pred spustením nasledujúceho. Defragmentácia môže ušetriť malý priestor v alokačných tabuľkách, ale toto nie je váš konkrétny problém.
Možné riešenia
Ako navrhol gladiator2345, vaše jediné skutočné možnosti v tomto bode je žiť s ním alebo preformátovať s menšími alokačnými jednotkami.
Vaša karta môže byť naformátovaná v systéme FAT16, ktorý má menší limit na veľkosť tabuľky, a preto vyžaduje oveľa väčšie alokačné jednotky, aby riešil väčší objem (s hornou hranicou 2 GB s 32 kB priradenými jednotkami). Zdrojom zdvorilosti Braiam. Ak je to tak, mali by ste byť schopní bezpečne formátovať ako FAT32.
Máte niečo doplniť vysvetlenie? Znie to v komentároch. Chcete sa dozvedieť viac odpovedí od iných používateľov technickej úrovne Stack Exchange? Pozrite sa na celý diskusný príspevok tu.