De cele mai multe ori, valorile pentru „Dimensiune” și „Dimensiune pe disc” vor fi foarte apropiate de potrivire la verificarea dimensiunii unui folder sau a unui fișier, dar ce se întâmplă dacă există o discrepanță uriașă între cele două? Postarea de astăzi a SuperUser Q&A analizează răspunsul la această problemă confuză.
Sesiunea de Întrebări și Răspunsuri de astăzi ne vine prin amabilitatea SuperUser - o subdiviziune a Stack Exchange, un grup de site-uri web de întrebări și răspunsuri bazat pe comunitate.
Intrebarea
Cititorul SuperUser thelastblack vrea să știe de ce există o diferență atât de mare între „Dimensiune” și „Dimensiune pe disc” pentru un dosar de pe cardul SD al telefonului său:
După cum puteți vedea mai jos, există atât de multe diferențe între câmpurile „Dimensiune” și „Dimensiune pe disc” pentru acest folder. De ce este asta?
![]()
Știu că „Dimensiune pe disc” ar trebui să fie puțin mai mult decât „Dimensiune” din cauza unităților de alocare din Windows, dar de ce există atâta 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 acesteia, aplicația mea pentru hărți își stochează hărțile cache, iar aplicația își obține hărțile din Google Maps.
Privind la captura de ecran, există cu siguranță o discrepanță uriașă între „Dimensiune” și „Dimensiune pe disc”, deci ce s-a întâmplat aici pentru a provoca acest lucru?
Răspunsul
Contribuitorul 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 în ceea ce privește unitățile de alocare. Este posibil ca alte sisteme de fișiere să fie diferite, dar oricum nu sunt acceptate 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
- Dimensiunea clusterului de 32 KB (unități de alocare), care este maxima pentru FAT32
Ok, acum minim spațiul luat este de 50.000 * 32.000 = 1,6 GB (folosind prefixe SI, nu binare, pentru a simplifica matematica). Spațiul pe care fiecare fișier îl ocupă pe disc este întotdeauna un multiplu al dimensiunii unității de alocare - și aici presupunem că fiecare fișier este de fapt suficient de mic pentru a se încadra într-o singură unitate, cu un spațiu (irosit) rămas.
Dacă fiecare fișier avea în medie 2 KB, veți obține aproximativ 100 MB în total - dar pierdeți, de asemenea, 15x (30 KB pe fișier) în medie, din cauza dimensiunii unității de alocare.
Explicație în profunzime
De ce se întâmplă asta? Ei bine, sistemul de fișiere FAT32 trebuie să țină evidența locului în care este stocat fiecare fișier. Dacă ar păstra o listă a fiecărui octet, tabelul (ca o agendă) ar crește cu aceeași viteză ca datele - și ar pierde mult spațiu. Deci, ceea ce fac ei este să folosească „unități de alocare”, cunoscută și sub denumirea de „dimensiunea clusterului”. Volumul este împărțit în aceste unități de alocare și, î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. La fel ca și cum ai avea un număr de casă, dar poștașului tău nu îi pasă câte dormitoare ai sau cine locuiește în ele.
Deci, ce se întâmplă dacă aveți un fișier foarte mic? Ei bine, sistemului de fișiere nu îi pasă dacă fișierul are 0 KB, 2 KB sau chiar 15 KB, îi va oferi cel mai mic spațiu pe care îl poate - în exemplul de mai sus, adică 32 KB. Fișierul dvs. folosește doar o mică parte din acest spațiu, iar restul este practic irosit, dar aparține fișierului - la fel ca un dormitor pe care îl lăsați neocupat.
De ce există dimensiuni diferite ale unității de alocare? Ei bine, devine un compromis între a avea o masă mai mare (agendă, de exemplu, spunând că John deține o casă la 123 Fake Street, 124 Fake Street, 666 Satan Lane etc.) sau mai mult spațiu irosit î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 primește o unitate nouă (casă) până când nu se completează toate celelalte. Dacă aveți o mulțime de fișiere mici, ei bine, veți avea oricum o masă mare (agendă), așa că ar putea să le oferiți unități mici (case).
Unitățile mari de alocare, ca regulă generală, vor pierde mult 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 uz general.
Fragmentare?
În ceea ce privește fragmentarea, fragmentarea nu ar trebui să irosească 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 completată înainte de a începe următoarea. Defragmentarea poate economisi puțin spațiu în tabelele de alocare, dar aceasta nu este problema dvs. specifică.
Solutii posibile
La fel de sugerat gladiator2345 , singurele dvs. opțiuni reale în acest moment sunt să trăiți cu el sau să reformatați cu unități de alocare mai mici.
Cardul dvs. ar putea fi formatat în FAT16, care are o limită mai mică pentru dimensiunea mesei ș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ă curtoazie de Braiam . Dacă acesta este cazul, ar trebui să puteți oricum să formatați în siguranță ca FAT32.
Aveți ceva de adăugat la explicație? Sună în comentarii. Doriți să citiți mai multe răspunsuri de la alți utilizatori ai Stack Exchange? Consultați aici firul complet de discuție .