12Aug

Proč je velký rozdíl mezi velikostí a velikostí na disku?

Většinou jsou hodnoty pro velikost a velikost na disku velmi blízké při porovnávání při kontrole velikosti složky nebo souboru, ale co když existuje obrovský nesoulad mezi oběma? Dnešní příspěvek SuperUser Q & A se zabývá odpovědí na tento problém.

dnešní otázka &Odpověď na zasedání se k nám dostala s laskavým svolením SuperUser - podřízenou výměnou Stack Exchange, skupině webů Q & A založených na komunitě.

Otázka

SuperUser čtečka thelastblack chce vědět, proč existuje tak velký rozdíl mezi velikostí a velikostí na disku pro složku na SD kartě svého telefonu:

Jak vidíte níže, je zde tak velký rozdíl meziVelikost "a" Velikost na disku "pro tuto složku. Proč je to tak?

Vím, že "velikost na disku" by měla být o něco větší než "velikost" kvůli alokačním jednotkám v systému Windows, ale proč existuje tak velký rozdíl? Může to být kvůli velkému počtu souborů?

BTW, tento adresář se nachází na mé SD kartě telefonu Android. Uvnitř aplikace Moje mapy jsou ukládány mapy uložené v mezipaměti a aplikace získává mapy z Map Google.

Když se díváte na obrazovku obrazovky, rozhodně existuje obrovský rozdíl mezi velikostí a velikostí na disku, takže co se to stalo, způsobilo to?

Odpovědný odpověď

SuperUser Bob má pro nás odpověď:

Předpokládám, že zde používáte souborový systém FAT / FAT32, jelikož se jedná o SD kartu. Systémy NTFS a exFAT se chovají podobně i v případě alokačních jednotek. Ostatní systémy souborů se mohou lišit, ale v systému Windows nejsou podporovány.

Pokud máte spoustu malých souborů, je to jistě možné.Zvažte následující:

  • 50 000 souborů
  • Velikost 32 kB clusteru( alokační jednotky), což je maximální hodnota pro FAT32

Ok, nyní je minimální přijatý prostor 50 000 * 32 000 = 1,6 GB( pomocí SI předpon, nikoliv binární,matematika).Prostor, který každý soubor obsahuje na disku, je vždy násobkem velikosti alokační jednotky - a zde předpokládáme, že každý soubor je skutečně dostatečně malý, aby se vešel do jediné jednotky a zůstalo nějakým( zbytečným) prostorem.

Pokud byl každý soubor v průměru 2 KB, získali byste asi 100 MB celkem - ale také ztrácíte 15x v průměru( 30 KB za soubor) kvůli velikosti alokační jednotky. Vysvětlení

v hloubce

Proč se to děje? Systém souborů FAT32 musí sledovat, kde je uložen každý soubor. Pokud by měl zůstat seznam všech jednotlivých bajtů, tabulka( podobně jako adresář) bude růst stejnou rychlostí jako data - a ztratí spoustu místa. Takže to, co dělají, je použití "alokačních jednotek", také známých jako "velikost clusteru".Hlasitost je rozdělena na tyto přidělovací jednotky a pokud jde o souborový systém, nemohou být rozděleny - to jsou ty nejmenší bloky, které mohou řešit. Stejně jako vy máte číslo domu, ale váš poštou se nestará, kolik ložnic máte nebo kdo v nich žije.

Takže co se stane, pokud máte velmi malý soubor? Systém souborů nezajímá, jestli je soubor 0 kB, 2 KB nebo dokonce 15 kB, dá mu to nejmenší prostor - v příkladu výše, to je 32 KB.Váš soubor používá pouze malé množství tohoto prostoru a zbytek je v podstatě zbytečný, ale přesto patří do souboru - podobně jako ložnice, kterou necháte neobsazený.

Proč existují různé velikosti alokační jednotky? No, to se stává kompromisem mezi tím, že máš větší stůl( adresář, např. Říká, že John vlastní dům na 123 Fake Street, 124 Fake Street, 666 Satan Lane atd.), Nebo více zbytečného prostoru v každé jednotce. Pokud máte větší soubory, je větší smysl používat větší jednotky přidělení - protože soubor neobdrží novou jednotku( dům), dokud nebudou vyplněny všechny ostatní.Máte-li spoustu malých souborů, budete mít i tak velký stůl( adresář), takže jim může dát i malé jednotky( domy).

Velké alokační jednotky zpravidla ztrácejí spoustu místa, pokud máte spoustu malých souborů.Tam obvykle není dobrý důvod jít nad 4 KB pro obecné použití.

Fragmentace?

Pokud jde o fragmentaci, roztříštěnost by neměla tímto způsobem způsobovat ztrátu prostoru. Velké soubory mohou být roztříštěné, tj. Rozděleny do více alokačních jednotek, ale každá jednotka by měla být vyplněna před dalším spuštěním. Defragmentace může ušetřit trochu místa v alokačních tabulkách, není to však váš specifický problém.

Možné řešení

Jak navrhl gladiator2345, vaše jediné skutečné možnosti v tomto okamžiku jsou žít s ním nebo reformovat s menšími přidělovacími jednotkami.

Karta může být naformátována ve formátu FAT16, který má menší limit pro velikost tabulky, a proto vyžaduje mnohem větší alokační jednotky, aby se zabránilo většímu objemu( s horní hranicí 2 GB s 32 kB přiřazovacími jednotkami).Zdrojová zdvořilost Braiamu. Pokud tomu tak je, měli byste mít možnost bezpečně formátovat jako FAT32.

Musíte něco přidat k vysvětlení?Zní to v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.