File sparso

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

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

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.

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

Voci correlate

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
  • (EN) NTFS Sparse Files For Programmers, su flexhex.com. URL consultato il 7 giugno 2008 (archiviato dall'url originale il 26 giugno 2016).
  • (EN) Fsutil: sparse, su technet2.microsoft.com. URL consultato il 7 giugno 2008 (archiviato dall'url originale il 22 marzo 2007). (creazione di file sparsi in Windows XP professional tramite fsutil)
  • (EN) mkfile(1M) [collegamento interrotto], su Solaris 10 Reference Manual Collection. URL consultato il 7 giugno 2008.
  • (EN) Understanding Sparse File Sizes in Database Snapshots, su msdn2.microsoft.com. URL consultato il 7 giugno 2008.
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica