Cosa sono i file sparsi
I file sparsi sono file a cui è preallocata una grande quantità di spazio, senza occupare l'intera quantità dal filesystem. Sono utili per ridurre la quantità di tempo e spazio su disco coinvolti nella creazione di filesystem di loop o immagini di dischi di grandi dimensioni per guest virtualizzati, tra le altre cose. I file sparsi sono comunemente usati per immagini disco, snapshot di database, file di registro, ecc.
Vantaggio di file sparsi
Il vantaggio dei file sparsi è che lo spazio di archiviazione viene allocato solo quando effettivamente necessario:lo spazio su disco viene salvato e possono essere creati file di grandi dimensioni anche se lo spazio libero sul file system è insufficiente.
Svantaggio dei file sparsi
Gli svantaggi sono che i file sparsi possono essere frammentati. I rapporti sullo spazio libero del file system possono essere fuorvianti e la copia di un file sparso con un programma che non li supporta esplicitamente può copiare l'intera dimensione non compressa del file, comprese le sezioni sparse, per lo più zero, che non sono sul disco, perdendo i vantaggi della proprietà sparse nel file.
Possiamo vedere questo comportamento con il file /var/log/lastlog.
# ls -lh /var/log/lastlog -rw-r--r--. 1 root root 286K Dec 3 04:50 /var/log/lastlog # du -sh /var/log/lastlog 12K /var/log/lastlog
creazione di file sparsi
1. I file sparsi possono essere creati utilizzando 'dd Il comando ' cerca ' opzione.
# dd if=/dev/zero of=sparse_file bs=1 count=0 seek=512M 0+0 records in 0+0 records out 0 bytes (0 B) copied, 0.000213705 s, 0.0 kB/s
# ls -hl sparse_file -rw-r--r--. 1 root root 512M Dec 3 05:51 sparse_file
# du -sh sparse_file 0 sparse_file
2. Per vedere l'utilizzo del disco del file con il comando "ls" possiamo usare "-s opzione ":
# ls -lhs sparse_file 0 -rw-r--r--. 1 root root 512M Dec 3 05:51 sparse_file
3. Per vedere la dimensione apparente del file usando “du” possiamo usare “–apparent-size opzione ":
# du -h --apparent-size sparse_file 512M sparse_file
Come copiare un file sparse
La copia di un file sparse con un programma che non li supporta esplicitamente può copiare l'intera dimensione non compressa del file, incluso lo sparse. Quindi, quando copi un file sparse usando il comando cp, il file di destinazione viene modificato in un file completamente allocato. Per copiare un file sparso mantenendo la copia di destinazione come un file sparso, utilizza uno dei comandi seguenti.
# cp --sparse=always source_file new_file # rsync --sparse source_file new_file # cpio --sparse # tar --sparse