Un file sparso (dall'inglese sparse file), in informatica, è 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.

Un file sparso: le aree vuote non hanno bisogno di essere salvate, per cui si può risparmiare lo spazio; al loro posto ci sono invece pochi metadati che contengono le informazioni sui byte vuoti

La maggior parte dei file system moderni può gestire i file sparsi, inclusi quelli tipici dei sistemi operativi Unix e Unix-like ed NTFS.

Creazione modifica

I file sparsi sono comunemente usati in caso di immagini disco, database, file di log e applicazioni scientifiche.

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.

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 riconoscono 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

  1. ^ 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

Voci correlate modifica

Collegamenti esterni modifica

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica