12Aug
La maggior parte delle volte, i valori di 'Size' e 'Size on disk' saranno molto vicini alla corrispondenza quando si controllano le dimensioni di una cartella o di un file, ma cosa accadrebbe se ci fosse un'enorme discrepanza tra i due? Oggi il post di SuperUser Q & A esamina la risposta a questo problema confuso.
Today's Question &La sessione di risposta ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di Q & A basato su community.
The Question
SuperUser reader thelastblack vuole sapere perché c'è una così grande differenza tra "Size" e "Size on disk" per una cartella sulla scheda SD del suo telefono:
Come puoi vedere qui sotto, c'è tanta differenza traCampi "Size" e "Size on disk" per questa cartella. Perché?
So che 'Size on disk' dovrebbe essere un po 'più di' Size 'a causa delle unità di allocazione in Windows, ma perché c'è così tanta differenza? Potrebbe essere a causa del gran numero di file?
BTW, questa cartella si trova sulla scheda SD del mio telefono Android. Al suo interno, l'app delle mie mappe memorizza le mappe memorizzate nella cache e l'app ottiene le sue mappe da Google Maps.
Guardando lo screenshot, c'è sicuramente un'enorme discrepanza tra "Size" e "Size on disk", quindi cosa è successo qui per causare questo?
La risposta
SuperUser contributore Bob ha la risposta per noi:
Suppongo che tu stia utilizzando il file system FAT / FAT32 qui, dato che hai detto che questa è una scheda SD.NTFS e exFAT si comportano allo stesso modo per quanto riguarda le unità di allocazione. Altri file system potrebbero essere diversi, ma non sono comunque supportati su Windows.
Se hai molti piccoli file, questo è certamente possibile. Considera questo:
- 50.000 file
- 32 KB dimensioni cluster( unità di allocazione), che è il massimo per FAT32
Ok, ora lo spazio minimo preso è 50.000 * 32.000 = 1,6 GB( utilizzando prefissi SI, non binari, per semplificarematematica).Lo spazio su cui ogni file occupa il disco è sempre un multiplo delle dimensioni dell'unità di allocazione - e qui assumiamo che ogni file sia effettivamente abbastanza piccolo da adattarsi all'interno di una singola unità, con un po 'di spazio( sprecato) rimasto.
Se ogni file ha una media di 2 KB, si ottengono circa 100 MB totali, ma si spreca anche 15 volte( in media 30 KB per file) a causa delle dimensioni dell'unità di allocazione.
Spiegazione dettagliata
Perché ciò accade? Bene, il file system FAT32 deve tenere traccia di dove è archiviato ogni file. Se dovesse mantenere un elenco di ogni singolo byte, la tabella( come una rubrica) crescerebbe alla stessa velocità dei dati e sprecerebbe molto spazio. Quindi, quello che fanno è utilizzare "unità di allocazione", noto anche come "dimensione del cluster".Il volume è diviso in queste unità di allocazione e, per quanto riguarda il file system, non possono essere suddivisi - quelli sono i blocchi più piccoli a cui è possibile indirizzare. Molto come hai un numero civico, ma al tuo postino non importa quante camere hai o chi vive in loro.
Quindi cosa succede se hai un file molto piccolo? Bene, il file system non si cura se il file è 0 KB, 2 KB o anche 15 KB, gli darà il minimo spazio possibile - nell'esempio sopra, questo è 32 KB.Il tuo file utilizza solo una piccola quantità di questo spazio, e il resto è fondamentalmente sprecato, ma appartiene ancora al file, proprio come una camera da letto che non ti interessa.
Perché ci sono diverse dimensioni di unità di allocazione? Bene, diventa un compromesso tra avere un tavolo più grande( rubrica, ad esempio dicendo che John possiede una casa in 123 Fake Street, 124 Fake Street, 666 Satan Lane, ecc.), O più spazio sprecato in ogni unità( casa).Se hai file più grandi, ha più senso usare unità di allocazione più grandi - perché un file non ottiene una nuova unità( casa) finché tutti gli altri non sono riempiti. Se hai un sacco di piccoli file, beh, avrai comunque un grande tavolo( rubrica), quindi potresti anche dare loro piccole unità( case).
Le grandi unità di allocazione, come regola generale, sprecheranno molto spazio se si hanno molti piccoli file. Di solito non c'è una buona ragione per andare oltre i 4 KB per uso generale. Frammentazione
?
Per quanto riguarda la frammentazione, la frammentazione non dovrebbe sprecare spazio in questo modo. File di grandi dimensioni possono essere frammentati, cioè suddivisi in più unità di allocazione, ma ogni unità deve essere riempita prima dell'avvio successivo. La deframmentazione potrebbe risparmiare un po 'di spazio nelle tabelle di allocazione, ma questo non è il tuo problema specifico.
Soluzioni possibili
Come suggerito da gladiator2345, le uniche opzioni reali a questo punto sono di conviverci o riformattarle con unità di allocazione più piccole.
La scheda potrebbe essere formattata in FAT16, che ha un limite inferiore per le dimensioni della tabella e pertanto richiede unità di allocazione molto più grandi per indirizzare un volume più grande( con un limite superiore di 2 GB con unità di allocazione di 32 KB).Fonte per gentile concessione di Braiam. Se questo è il caso, dovresti essere in grado di formattare in tutta sicurezza come FAT32 comunque.
Hai qualcosa da aggiungere alla spiegazione? Audio disattivato nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla la discussione completa qui.