Suurimman osan ajasta Koko- ja Levykoko-arvot ovat hyvin lähellä vastaavuutta tarkistettaessa kansion tai tiedoston kokoa, mutta entä jos näiden kahden välillä on valtava ero? Tämän päivän SuperUser Q & A -viestissä tarkastellaan vastausta tähän hämmentävään ongelmaan.
Tämän päivän Kysymys- ja vastausistunto tulee meille SuperUser-yhteisöstään, joka on Stack Exchangen osasto.
Kysymys
SuperUser-lukija thelastblack haluaa tietää, miksi puhelimen SD-kortilla olevan kansion koko ja koko levyllä on niin suuri ero:
Kuten alla voit nähdä, tämän kansion Koko- ja Koko levyllä -kenttien välillä on niin paljon eroja. Miksi niin?
![]()
Tiedän, että levyn koon pitäisi olla hieman enemmän kuin koko, johtuen Windows-jakoyksiköistä, mutta miksi siinä on niin paljon eroa? Voisiko se johtua suuresta tiedostomäärästä?
BTW, tämä kansio on Android-puhelimeni SD-kortilla. Tämän sisällä karttasovellukseni tallentavat välimuistikartat ja sovellus saa karttansa Google Mapsista.
Kuvakaappausta tarkasteltaessa on todellakin valtava ero "Koko" - ja "Levylle-koko" välillä, joten mitä täällä on tapahtunut tämän aiheuttamiseksi?
Vastaus
SuperUser-avustaja Bobilla on vastaus meille:
Oletan, että käytät täällä FAT / FAT32-tiedostojärjestelmää, koska mainitset tämän olevan SD-kortti. NTFS ja exFAT käyttäytyvät samalla tavalla kohdennusyksikköjen suhteen. Muut tiedostojärjestelmät voivat olla erilaisia, mutta Windows ei kuitenkaan tue niitä.
Jos sinulla on paljon pieniä tiedostoja, se on varmasti mahdollista. Harkitse tätä:
- 50000 tiedostoa
- 32 kt: n klusterikoko (allokointiyksiköt), joka on FAT32: n enimmäismäärä
Ok, nyt vähintään käytetty tila on 50 000 * 32 000 = 1,6 Gt (käytetään SI-etuliitteitä, ei binaarisia, matematiikan yksinkertaistamiseksi). Levytila, jonka kukin tiedosto vie levyltä, on aina moninkertainen allokointiyksikön koosta - ja tässä oletetaan, että kukin tiedosto on todella tarpeeksi pieni, jotta se mahtuu yhteen yksikköön, ja jonkin verran (hukkaan jätettyä) tilaa on jäljellä.
Jos jokaisen tiedoston keskiarvo on 2 kt, saat kokonaisuudessaan noin 100 Mt - mutta tuhlaat myös keskimäärin 15 kertaa (30 kt tiedostoa kohden) allokaatioyksikön koon vuoksi.
Perusteellinen selitys
Miksi näin tapahtuu? No, FAT32-tiedostojärjestelmän on seurattava, mihin kukin tiedosto on tallennettu. Jos se pitäisi luetteloa jokaisesta tavusta, taulukko (kuten osoitekirja) kasvaisi samalla nopeudella kuin data - ja tuhlaisi paljon tilaa. Joten he tekevät "allokaatioyksiköitä", jotka tunnetaan myös nimellä "klusterin koko". Tilavuus on jaettu näihin jakoyksiköihin, ja tiedostojärjestelmän osalta niitä ei voida jakaa alempiin osiin - nämä ovat pienimmät lohkot, joihin se voi puuttua. Aivan kuten sinulla olisi talonumero, mutta postimiehesi ei välitä kuinka monta makuuhuonetta sinulla on tai kuka asuu niissä.
Joten mitä tapahtuu, jos sinulla on hyvin pieni tiedosto? Tiedostojärjestelmä ei välitä, onko tiedosto 0 kt, 2 kt tai jopa 15 kt, se antaa sille vähiten tilaa - yllä olevassa esimerkissä se on 32 kt. Tiedostosi käyttää vain vähän tätä tilaa, ja loppu on periaatteessa hukkaan, mutta kuuluu kuitenkin tiedostoon - aivan kuten makuuhuone, jonka jätät tyhjäksi.
Miksi allokointiyksiköiden koot ovat erilaiset? No, siitä tulee kompromissi suuremman pöydän (osoitekirjan, esim. Sanomalla, että John omistaa talon osoitteessa 123 Fake Street, 124 Fake Street, 666 Satan Lane jne.) Tai tuhlaamattoman tilan välillä jokaisessa yksikössä (talossa). . Jos sinulla on suurempia tiedostoja, on järkevämpää käyttää suurempia allokointiyksiköitä - koska tiedosto ei saa uutta yksikköä (talo), ennen kuin kaikki muut on täytetty. Jos sinulla on paljon pieniä tiedostoja, sinulla on joka tapauksessa iso pöytä (osoitekirja), joten voit myös antaa heille pieniä yksiköitä (taloja).
Suuret allokointiyksiköt tuhlaavat pääsääntöisesti paljon tilaa, jos sinulla on paljon pieniä tiedostoja. Tavallisesti ei ole hyvää syytä ylittää 4 kt: n yleiseen käyttöön.
Hajanaisuus?
Hajanaisuuden osalta pirstoutumisen ei pitäisi tuhlata tilaa tällä tavalla. Suuret tiedostot voivat olla pirstoutuneita, ts. Jaettu, useisiin allokointiyksiköihin, mutta jokainen yksikkö tulisi täyttää ennen seuraavan aloittamista. Eheytys saattaa säästää vähän tilaa jakelutaulukoissa, mutta tämä ei ole sinun ongelmasi.
Mahdolliset ratkaisut
Kuten gladiator2345 ehdotti , ainoat todelliset vaihtoehtosi tässä vaiheessa ovat elää sen kanssa tai alustaa uudelleen pienemmillä allokaatioyksiköillä.
Korttisi voi olla muotoiltu muodossa FAT16, jolla on pienempi taulukon koon rajoitus ja joka vaatii sen vuoksi paljon suurempia allokointiyksikköjä suuremman äänenvoimakkuuden käsittelemiseksi (2 Gt: n yläraja 32 kt: n allokointiyksiköillä). Lähde kohteliaisuus Braiam . Jos näin on, sinun pitäisi pystyä muokkaamaan turvallisesti FAT32: ksi.
Onko sinulla jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta teknisesti taitavilta Stack Exchangen käyttäjiltä? Katso koko keskusteluketju täältä .