Domovská » jak » Proč je velký rozdíl mezi velikostí a velikostí na disku?

    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ž mezi oběma existuje obrovský nesoulad? Dnešní příspěvek SuperUser Q & A se zabývá odpovědí na tento problém.

    Dnešní zasedání Otázky a odpovědi nás přichází s laskavým svolením SuperUser - podřízené rozdělení Stack Exchange, které je založeno na komunitě prostřednictvím skupin webových stránek.

    Otázka

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

    Jak je vidět níže, existuje velký rozdíl mezi políčky Velikost 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ář je 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 podíváme na snímek obrazovky, rozhodně existuje obrovský rozpor mezi velikostí a velikostí na disku, takže to, co se zde stalo, způsobilo to?

    Odpověď

    Příspěvek SuperUser Bob má pro nás odpověď:

    Předpokládám, že zde používáte souborový systém FAT / FAT32, jelikož jste se zmínili o SD kartě. NTFS a exFAT se chovají podobně i v případě alokačních jednotek. Jiné systémy souborů mohou být jiné, ale Windows nejsou podporovány.

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

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

    Ok, teď minimální prostor přijatý je 50 000 * 32 000 = 1,6 GB (pomocí předpony SI, nikoliv binární, aby se zjednodušily matematika). Prostor, který každý soubor bere na disk, 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 je každý soubor v průměru 2 KB, dostanete asi 100 MB celkem - ale také ztrácíte 15x v průměru (30 KB za soubor) kvůli velikosti přiřazovací jednotky.

    Vysvětlení v hloubce

    Proč se to děje? Systém souborů FAT32 musí sledovat, kde je uložen každý soubor. Pokud bude mít seznam jednotlivých bajtů, tabulka (jako adresář) bude růst stejnou rychlostí jako data - a ztratí spoustu místa. Takže to, co dělají, je použít "alokační jednotky", známé také jako "velikost clusteru". Hlasitost je rozdělena na tyto přidělovací jednotky a pokud jde o souborový systém, nelze je rozdělit - 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áváte neobsazený.

    Proč existují různé velikosti alokační jednotky? No, stává se to kompromisem mezi tím, že máš větší tabulku (adresář, např. Říká, že John vlastní dům na adrese 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 roztříštěnost, roztříštěnost by neměla ztrácet prostor tímto způsobem. Velké soubory mohou být fragmentovány, tj. Dě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 je žít s ním nebo reformovat s menšími přidělovacími jednotkami.

    Vaše karta může být naformátována ve formátu FAT16, který má menší velikost pro velikost tabulky, a proto vyžaduje mnohem větší alokační jednotky, aby řešila větší objem (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í? Vyjměte 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.