Pagrindinis » kaip » Kodėl yra didelis skirtumas tarp „Dydis“ ir „Dydis diske“?

    Kodėl yra didelis skirtumas tarp „Dydis“ ir „Dydis diske“?

    Dažniausiai „Dydis“ ir „Dydis diske“ reikšmės bus labai artimos atitikčiai, kai tikrinamas aplanko ar failo dydis, bet kas yra, jei tarp šių dviejų yra didžiulis neatitikimas? Šiandienos „SuperUser“ atsakymų ir atsakymų įrašas yra atsakymas į šią painią problemą.

    Šiandienos „Klausimų ir atsakymų“ sesija mums suteikiama pagal „SuperUser“ - „Stack Exchange“ padalinį, bendruomenės sukurtą „Q&A“ svetainių grupavimą.

    Klausimas

    „SuperUser“ skaitytojas „thelastblack“ nori sužinoti, kodėl yra didelis skirtumas tarp „Size“ ir „Dydis diske“, esantį jo telefono SD kortelės aplanke:

    Kaip matote žemiau, yra daug skirtumų tarp šio aplanko laukų „Dydis“ ir „Dydis diske“. Kodėl taip?

    Žinau, kad „Dydis diske“ turėtų būti šiek tiek daugiau nei „Dydis“, nes „Windows“ paskirstymo vienetai yra, bet kodėl yra toks didelis skirtumas? Ar tai gali būti dėl didelio failų skaičiaus?

    BTW, šis aplankas yra mano „Android“ telefono SD kortelėje. Viduje mano žemėlapių programa saugo talpykloje saugomus žemėlapius, o programa gauna žemėlapius iš „Google“ žemėlapių.

    Žiūrėdami į ekraną, tikrai yra didžiulis neatitikimas tarp „Dydis“ ir „Dydis diske“.?

    Atsakymas

    „SuperUser“ dalyvis Bobas atsako:

    Darau prielaidą, kad čia naudojate FAT / FAT32 failų sistemą, nes paminėjote tai SD kortelė. NTFS ir exFAT elgiasi panašiai kaip paskirstymo vienetai. Kitos failų sistemos gali būti skirtingos, tačiau jos vis tiek nepalaiko „Windows“.

    Jei turite daug mažų failų, tai tikrai įmanoma. Apsvarstykite tai:

    • 50 000 failų
    • 32 KB klasterio dydis (paskirstymo vienetai), kuris yra maksimalus FAT32

    Gerai, dabar minimumas užimama erdvė yra 50 000 * 32 000 = 1,6 GB (naudojant SI prefiksus, o ne dvejetainius matematikos supaprastinimui). Erdvė, kurią kiekvienas failas užima diske, visada yra paskirstymo vieneto dydžio daugialypė dalis - ir čia mes darome prielaidą, kad kiekvienas failas yra pakankamai mažas, kad tilptų viename vienete..

    Jei kiekvienas failas vidutiniškai sudarė 2 KB, iš viso gausite apie 100 MB, bet jūs taip pat vidutiniškai išeikvojate 15 kartų (30 KB failui) dėl paskirstymo vieneto dydžio.

    Išsamus paaiškinimas

    Kodėl taip atsitinka? Na, FAT32 failų sistema turi stebėti, kur kiekvienas failas yra saugomas. Jei būtų išlaikytas kiekvieno baito sąrašas, lentelė (kaip adresų knyga) augtų tokiu pačiu greičiu, kaip ir duomenys - ir daug vietos būtų išeikvota. Taigi, ką jie daro, yra „paskirstymo vienetai“, dar vadinami „klasterio dydžiu“. Kiekis suskirstytas į šiuos paskirstymo vienetus, ir, kiek tai susiję su failų sistema, jie negali būti suskirstyti - tai yra mažiausi blokai, kuriuos jis gali spręsti. Panašiai kaip jūs turite namo numerį, bet tavo paštininkas nežino, kiek miegamųjų turite ar gyvenate juose.

    Taigi, kas atsitiks, jei turite labai mažą failą? Na, failų sistema nerūpi, jei failas yra 0 KB, 2 KB arba net 15 KB, jis suteiks jai mažiausiai vietos, kurią jis gali - pirmiau pateiktame pavyzdyje, tai yra 32 KB. Jūsų failas naudojamas tik nedideliu kiekiu šios vietos, o likusi dalis iš esmės yra švaistoma, bet vis dar priklauso failui - panašiai kaip miegamasis, kurį paliekate laisvai.

    Kodėl yra skirtingi paskirstymo vienetų dydžiai? Na, tai tampa kompromisu tarp didesnio stalo (adresų knygos, pvz., Sakydamas, kad Jonas turi namą 123 „Fake Street“, 124 „Fake Street“, 666 Šėtono juostos ir kt.), Arba visose vietose (namuose) praleistą erdvę . Jei turite didesnius failus, tikslingiau naudoti didesnius paskirstymo vienetus - nes failas nesulaukia naujo vieneto (namų), kol visi kiti nebus užpildyti. Jei turite daug nedidelių failų, gerai, jūs vis tiek turėsite didelį stalą (adresų knygą), todėl taip pat gali suteikti jiems mažus vienetus (namus).

    Dideli paskirstymo vienetai, kaip taisyklė, neteks daug vietos, jei turėsite daug mažų failų. Paprastai nėra tinkamos priežasties plačiau naudoti daugiau nei 4 KB.

    Fragmentacija?

    Dėl susiskaidymo fragmentacija neturėtų švaistyti vietos tokiu būdu. Dideli failai gali būti suskaidyti, t. Y. Suskaidyti, į kelis paskirstymo vienetus, tačiau kiekvienas vienetas turėtų būti užpildytas prieš pradedant kitą. Defragmentavimas gali sutaupyti šiek tiek vietos paskirstymo lentelėse, tačiau tai nėra jūsų konkreti problema.

    Galimi sprendimai

    Kaip siūlė gladiatorius2345, jūsų vienintelės realios galimybės šiuo momentu yra gyventi su juo arba performatuoti su mažesniais paskirstymo vienetais.

    Jūsų kortelė gali būti suformatuota FAT16, kuri turi mažesnę ribą stalo dydžiui ir todėl reikia daug didesnių paskirstymo vienetų, kad būtų galima spręsti didesnį kiekį (viršutinė riba yra 2 GB su 32 KB paskirstymo vienetais). Šaltinis yra „Braiam“ sutikimas. Jei taip yra, turėtumėte saugiai formuoti FAT32.


    Ar ką nors papildyti paaiškinimu? Garsas išjungtas komentaruose. Norite perskaityti daugiau atsakymų iš kitų „tech-savvy Stack Exchange“ vartotojų? Čia rasite visą diskusijų temą.