Creare immagini disco “efficienti” con Linux

truncate

Per creare un file pieno di zeri su Linux, da utilizzare come “foglio bianco” per una nuova immagine disco o per qualsiasi altro uso, il comando che si trova dappertutto è dd if=/dev/zero of=newimage.img bs=1M count=1024 (creerà un file da 1024 MB = 1 GB). Questo comando farà il suo lavoro egregiamente ma, probabilmente, impiegherà molto tempo (fino a qualche minuto, in relazione alla velocità del proprio disco fisso e alla dimensione del file) e occuperà su disco esattamente lo stesso spazio del file di destinazione (1 GB, in questo caso).

Recentemente ho trovato un’alternativa molto più efficiente, sia per il tempo impiegato che per lo spazio occupato:


$ touch newimage.img
$ truncate -s 1024M newimage.img

dove il primo comando crea un file vuoto (lunghezza zero), mentre il secondo comando lo estende fino a 1024 MB (1 GB), aggiungendo degli zeri.

Se il filesystem, come ext2/ext3/ext4, supporta gli sparse file, il comando truncate sarà istantaneo e lo spazio effettivamente occupato su disco sarà pari a 0 byte: essendo il file pieno solo di zeri, al filesystem basterà prendere nota che il file è composto da 1073741824 byte tutti uguali a zero, senza dover scrivere fisicamente 1073741824 zeri sul disco come fa il comando dd. Il nostro file occuperà così uno spazio nullo fintantoché non andremo ad inserire dei byte diversi da zero e, comunque, lo spazio via via occupato non sarà mai superiore alla mole dei dati diversi da zero che avremo inserito: un vero risparmio di spazio!

A questo punto il file creato potrà essere partizionato con fdisk o gparted, vi si potranno creare filesystem, copiare file al suo interno, etc.

Advertisements

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...