File sparso
In informatica, un file sparso (dall'inglese sparse file) è un tipo di file per cui si cerca di occupare in maniera più efficiente lo spazio del file system nei casi in cui il file sia prevalentemente vuoto.
Ciò si ottiene evitando di scrivere sulla memoria di massa i dati che non sono ancora stati specificati[1], e che di fatto sono aree vuote. Al loro posto sono invece scritte delle informazioni compatte che descrivono tali aree vuote, cosa che occupa molto meno spazio nel file system. Tali aree vengono fisicamente scritte nella memoria di massa nelle loro dimensioni originali solo quando si inizia a riempirle di dati; in fase di lettura, il file system converte in maniera trasparente le aree vuote in blocchi contenenti dei byte a zero.
La maggior parte dei file system moderni ha supporto per i file sparsi, inclusi quelli tipici dei sistemi operativi Unix e Unix-like ed NTFS.
I file sparsi sono comunemente usati in caso di immagini disco, database, file di log e applicazioni scientifiche.
Indice |
Creazione di file sparsi in Unix[modifica]
Si possono creare con il comando dd. Ad esempio il comando
dd if=/dev/zero of=file_sparso bs=1024 count=0 seek=1024
crea un file sparso delle dimensioni di un MiB, ma senza memorizzare dati nella memoria di massa (solo metadati).
Riconoscere file sparsi in Unix[modifica]
I file sparsi hanno dimensioni apparenti ed effettive che sono diverse tra loro. È possibile riconoscerli ad esempio confrontando la dimensione apparente come fornita dal comando ls con la dimensione effettiva come riportata dal comando du, ad esempio:
ls -l file_sparso du -k file_sparso
("ls -l" riporta le dimensioni apparenti in byte, mentre "du -k" riporta le dimensioni effettive in KiB, per cui occorre dividere le prime per 1024).
Oppure, tramite la versione GNU del comando du:
du -s -B1 --apparent-size file_sparso du -s -B1 file_sparso
Vantaggi[modifica]
Il vantaggio dei file sparsi consiste nel fatto che lo spazio fisico nel file system viene allocato solo quando è effettivamente necessario: si risparmia spazio e si possono creare file di grandi dimensioni anche se lo spazio libero nel file system è insufficiente.
Svantaggi[modifica]
Tra gli svantaggi dell'uso di file sparsi:
- Essi possono diventare frammentati, in quanto lo spazio nel file system viene allocato a mano a mano che le aree vuote sono riempite, e quindi non è necessariamente contiguo.
- Le informazioni sullo spazio libero nel file system possono essere fuorvianti se si considera la dimensione apparente dei file sparsi.
- Esaurire lo spazio libero in file system che contengono file sparsi può dare effetti imprevisti.
- Copiare file sparsi tramite programmi che non li supportano esplicitamente risulta in una copia che occupa l'intero spazio del file sparso, incluse le aree vuote, perdendo così i benefici dei file sparsi.
Note[modifica]
- ^ Si hanno situazioni di questo tipo posizionandosi oltre la fine del file ed effettuando scritture: l'area compresa tra la (precedente) fine del file e l'inizio dei nuovi dati contiene dati non specificati.
Bibliografia[modifica]
- Dominic Giampaolo, Practical File System Design with the Be File System (PDF) (in inglese), San Francisco, California, Morgan Kaufmann Publishers, Inc., 1999. ISBN 1-55860-497-9 URL consultato il 2008-06-07.
Voci correlate[modifica]
Collegamenti esterni[modifica]
- (EN) NTFS Sparse Files For Programmers. URL consultato in data 07-06-2008.
- (EN) Fsutil: sparse. URL consultato in data 07-06-2008. (creazione di file sparsi in Windows XP professional tramite fsutil)
- (EN) mkfile(1M) in Solaris 10 Reference Manual Collection. URL consultato in data 07-06-2008.
- (EN) Understanding Sparse File Sizes in Database Snapshots. URL consultato in data 07-06-2008.
|
|