Legtöbbször a „Méret” és a „Méret a lemezen” értékek nagyon közel állnak az egyezéshez egy mappa vagy fájl méretének ellenőrzésekor, de mi van akkor, ha a kettő között hatalmas eltérés van? A mai SuperUser Q & A bejegyzés megvizsgálja a választ erre a zavaros problémára.
A mai Kérdések és válaszok ülés a SuperUser jóvoltából érkezik hozzánk - a Stack Exchange alosztályához, amely a Q & A webhelyek közösségvezérelt csoportosulása.
A kérdés
A SuperUser olvasó azt akarja tudni, hogy miért van olyan óriási különbség a telefon telefonja SD-kártyáján lévő mappa méretének és méretének között:
Amint az alább látható, annyi különbség van a mappa „Méret” és „Méret a lemezen” mezői között. Miért van az, hogy?
![]()
Tudom, hogy a „lemezen lévő méretnek” valamivel többnek kell lennie, mint a „méretnek” a Windows-os egységek miatt, de miért van ekkora különbség? Lehet, hogy a fájlok nagy száma miatt van?
BTW, ez a mappa az Android telefonom SD-kártyáján található. Ezen belül a térképes alkalmazásom tárolja a gyorsítótárban tárolt térképeket, az alkalmazás pedig a Google Térképről szerzi be térképeit.
A képernyőképet nézve mindenképpen óriási eltérés van a „Méret” és a „Méret a lemezen” között, szóval mi történt itt, hogy ezt okozza?
A válasz
A SuperUser közreműködője, Bob válaszol ránk:
Feltételezem, hogy itt FAT / FAT32 fájlrendszert használ, mivel megemlíti, hogy ez egy SD kártya. Az NTFS és az exFAT hasonlóan viselkedik az allokációs egységekkel kapcsolatban. Lehetséges, hogy más fájlrendszerek eltérnek, de a Windows nem támogatja őket.
Ha sok kicsi fájlja van, ez minden bizonnyal lehetséges. Ezt fontold meg:
- 50 000 fájl
- 32 KB fürtméret (allokációs egységek), ami a FAT32 maximuma
Ok, most a minimális az elfoglalt hely 50 000 * 32 000 = 1,6 GB (a matematika egyszerűsítése érdekében nem bináris, hanem SI előtagokat használunk). Az egyes fájlok által a lemezen elfoglalt hely mindig az allokációs egység méretének a többszöröse - és itt feltételezzük, hogy az egyes fájlok valóban elég kicsiek ahhoz, hogy egyetlen egységbe illeszkedjenek, és marad némi (elpazarolt) hely.
Ha mindegyik fájl átlagosan 2 KB lenne, akkor körülbelül 100 MB összeget kapna - de ennek a felosztási egység mérete miatt átlagosan 15x-et is elpazarol (fájlonként 30 KB).
Mélységi magyarázat
Miért történik ez? Nos, a FAT32 fájlrendszernek nyomon kell követnie az egyes fájlok tárolási helyét. Ha minden egyes bájtról listát vezetne, akkor a táblázat (mint egy címjegyzék) az adatokkal azonos sebességgel növekedne - és sok helyet pazarolna el. Tehát a „kiosztási egységeket” használják, más néven „klaszter méretét”. A kötet ezekre az allokációs egységekre oszlik, és ami a fájlrendszert illeti, nem oszthatók fel - ezek a legkisebb blokkok, amelyekkel foglalkozni tud. Hasonlóan ahhoz, hogy van házszámod, de a postásodnak mindegy, hány hálószobád van, és ki lakik bennük.
Tehát mi történik, ha nagyon kicsi fájlja van? Nos, a fájlrendszert nem érdekli, ha a fájl 0 KB, 2 KB vagy akár 15 KB, akkor a lehető legkevesebb helyet adja meg neki - a fenti példában ez 32 KB. A fájl csak kis mennyiséget használ fel ebből a helyből, a többi alapvetően elpazarolt, de mégis a fájlhoz tartozik - hasonlóan egy hálószobához, amelyet üresen hagy.
Miért vannak különféle allokációs egységméretek? Nos, kompromisszummá válik egy nagyobb asztal (címjegyzék, pl. Mondván, hogy Johnnak háza van a Fake Street 123-on, a Fake Street 124-en, a 666 Satan Lane stb.), Vagy az egyes egységeknél (házaknál) elvesztegetettebb hely között. . Ha nagyobb fájlja van, akkor ésszerűbb nagyobb kiosztási egységeket használni - mert egy fájl nem kap új egységet (házat), amíg az összes többi nincs feltöltve. Ha sok kicsi fájlja van, akkor úgyis nagy táblája (címjegyzéke) lesz, ezért adhat nekik is kis egységeket (házakat).
A nagy kiosztási egységek főszabály szerint sok helyet pazarolnak el, ha sok kicsi fájlja van. Általában nincs jó ok arra, hogy 4 KB-ot meghaladja az általános használat.
Töredezettség?
Ami a töredezettséget illeti, a töredezettségnek nem szabad így pazarolnia a helyet. A nagy fájlok szétaprózódhatnak, vagyis feloszthatók, több allokációs egységre, de mindegyik egységet meg kell tölteni a következő elindítása előtt. A töredezettségmentesítés kevés helyet takaríthat meg az allokációs táblákban, de ez nem a saját problémája.
Lehetséges megoldások
Mint gladiator2345 javasolta , az egyetlen valódi lehetőséged ezen a ponton az, hogy élsz vele, vagy formázd újra kisebb kiosztási egységekkel.
Előfordulhat, hogy kártyája FAT16 formátumban van megadva, amelynek kisebb az asztalméret-korlátja, ezért ennél jóval nagyobb kiosztási egységekre van szükség a nagyobb kötet kezeléséhez (2 GB felső határral, 32 KB-os kiosztási egységekkel). Forrás jóvoltából Braiam . Ebben az esetben mindenképpen képesnek kell lennie a biztonságos FAT32 formátumra történő formázásra.
Van valami hozzáfűzhető a magyarázathoz? Hang a kommentekben. Szeretne további válaszokat olvasni más, hozzáértő Stack Exchange-felhasználóktól? Nézze meg a teljes vitafonalat itt .