Pagina principala » HOWTO » De ce există o mare diferență între Dimensiune și Dimensiune pe disc?

    De ce există o mare diferență între Dimensiune și Dimensiune pe disc?

    De cele mai multe ori, valorile pentru "Dimensiune" și "Dimensiune pe disc" vor fi foarte apropiate de potrivire atunci când se verifică dimensiunea unui dosar sau a unui fișier, dar ce se întâmplă dacă există o discrepanță enormă între cele două? Postul de astăzi SuperUser Q & A se uită la răspunsul la această problemă confuză.

    Sesiunea de întrebări și răspunsuri din ziua de astăzi vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor web Q & A.

    Intrebarea

    Utilizatorul SuperUser thelastblack vrea să știe de ce există o diferență atât de mare între "Size" și "Size on disk" pentru un dosar de pe cardul SD al telefonului său:

    După cum puteți vedea mai jos, există o diferență atât de mare între câmpurile "Dimensiune" și "Dimensiune pe disc" pentru acest dosar. De ce este asta?

    Știu că "Dimensiunea pe disc" ar trebui să fie ceva mai mult decât "Dimensiunea" din cauza unităților de alocare în Windows, dar de ce există o mare diferență? Ar putea fi din cauza numărului mare de fișiere?

    BTW, acest dosar se află pe cardul SD al telefonului meu Android. În interiorul său, aplicația pentru hărțile mele stochează hărțile memorate în cache, iar aplicația își primește hărțile din Hărți Google.

    Privind captura de ecran, există cu siguranță o discrepanță enormă între "Dimensiune" și "Dimensiune pe disc", deci ce sa întâmplat aici pentru a provoca acest lucru?

    Răspunsul

    Comerciantul SuperUser Bob are răspunsul pentru noi:

    Voi presupune că utilizați sistemul de fișiere FAT / FAT32 aici, deoarece menționați că acesta este un card SD. NTFS și exFAT se comportă similar și în ceea ce privește unitățile de alocare. Alte sisteme de fișiere pot fi diferite, dar acestea nu sunt acceptate oricum pe Windows.

    Dacă aveți o mulțime de fișiere mici, acest lucru este cu siguranță posibil. Gandeste-te la asta:

    • 50.000 de fișiere
    • 32 KB dimensiunea clusterului (unități de alocare), care este maximul pentru FAT32

    Ok, acum minim spațiul utilizat este de 50.000 * 32.000 = 1.6 GB (folosind prefixele SI, nu binare, pentru a simplifica matematica). Spațiul pe care fiecare fișier are pe disc este întotdeauna un multiplu al mărimii unității de alocare - și aici presupunem că fiecare fișier este într-adevăr suficient de mic pentru a se încadra într-o singură unitate, cu un spațiu (pierdut).

    Dacă fiecare fișier a avut o valoare medie de 2 KB, ați obține aproximativ 100 MB total - dar pierdeți, de asemenea, de 15 ori (30 KB per fișier), în medie, din cauza dimensiunii unității de alocare.

    Explicație în profunzime

    De ce se întâmplă acest lucru? Ei bine, sistemul de fișiere FAT32 trebuie să țină evidența locului unde sunt stocate fiecare fișier. Dacă ar păstra o listă a fiecărui octet, masa (ca o agendă de adrese) va crește cu aceeași viteză ca datele - și va pierde o mulțime de spațiu. Deci, ceea ce fac ei este utilizarea "unităților de alocare", de asemenea cunoscute ca "dimensiunea clusterului". Volumul este împărțit în aceste unități de alocare, iar în ceea ce privește sistemul de fișiere, acestea nu pot fi subdivizate - acestea sunt cele mai mici blocuri pe care le poate aborda. Ca și cum ai un număr de casă, dar poștașului tău nu-ți pasă cât de multe dormitoare ai sau cine trăiește în ele.

    Deci, ce se întâmplă dacă aveți un dosar foarte mic? Ei bine, sistemul de fișiere nu are grijă dacă fișierul este 0 KB, 2 KB sau chiar 15 KB, îi va oferi cel mai mic spațiu posibil - în exemplul de mai sus, care este de 32 KB. Fișierul dvs. utilizează doar o cantitate mică din acest spațiu, iar restul este practic irosit, dar totuși aparține fișierului - la fel ca un dormitor pe care îl lăsați neocupat.

    De ce există diferite dimensiuni de unități de alocare? Ei bine, devine un compromis între a avea o masă mai mare (carte de adrese, de exemplu, spunând că John deține o casă în fiecare unitate (casă) . Dacă aveți fișiere mai mari, este mai logic să utilizați unități de alocare mai mari - deoarece un fișier nu obține o nouă unitate (casa) până când toate celelalte sunt completate. Dacă aveți o mulțime de fișiere mici, veți avea oricum o masă mare (adresa de adrese), deci ar putea să le dați și unități mici (case).

    Unitățile de alocare mari, ca regulă generală, vor pierde o mulțime de spațiu dacă aveți o mulțime de fișiere mici. De obicei, nu există un motiv bun pentru a depăși 4 KB pentru utilizare generală.

    fragmentarea?

    În ceea ce privește fragmentarea, fragmentarea nu ar trebui să piardă spațiul în acest mod. Fișierele mari pot fi fragmentate, adică împărțite, în mai multe unități de alocare, dar fiecare unitate trebuie umplută înainte ca următoarea să fie lansată. Defragmentarea ar putea salva un spațiu mic în tabelele de alocare, dar aceasta nu este problema dvs. specifică.

    Solutii posibile

    După cum a sugerat gladiator2345, singurele opțiuni reale ale dvs. în acest moment sunt de a trăi sau de a reforma cu unități de alocare mai mici.

    Cardul dvs. poate fi formatat în FAT16, care are o limită mai mică pentru dimensiunea tabelului și, prin urmare, necesită unități de alocare mult mai mari pentru a aborda un volum mai mare (cu o limită superioară de 2 GB, cu unități de alocare de 32 KB). Sursă de amabilitate a lui Braiam. În acest caz, ar trebui să aveți posibilitatea să formatați în siguranță ca FAT32 oricum.


    Aveți ceva de adăugat la explicație? Sunați în comentariile. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.