File sparso

Da Wikipedia, l'enciclopedia libera.
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

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.

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 | modifica wikitesto]

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 | modifica wikitesto]

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 | modifica wikitesto]

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 | modifica wikitesto]

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 | modifica wikitesto]

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 | modifica wikitesto]

  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 | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

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