Questa è una domanda comune, specialmente nell'attuale ambiente di ambienti virtuali. Sfortunatamente, la risposta non è così semplice come si potrebbe presumere.
dd è la prima scelta ovvia, ma dd è essenzialmente una copia e questo ti costringe a scrivere ogni blocco di dati (quindi, inizializzando il contenuto del file) ... E quell'inizializzazione è ciò che richiede così tanto tempo di I / O. (Vuoi farla impiegare ancora più tempo? Usa / dev / random invece di / dev / zero ! Quindi userai CPU e tempo di I / O!) Alla fine però, dd è una scelta sbagliata (anche se essenzialmente il impostazione predefinita utilizzata dalla VM "crea" GUI). Per esempio:
dd if=/dev/zero of=./gentoo_root.img bs=4k iflag=fullblock,count_bytes count=10G
troncare è un'altra scelta - ed è probabilmente il più veloce ... Ma è perché crea un "file sparse". In sostanza, un file sparse è una sezione del disco che contiene molti degli stessi dati e il file system sottostante "imbroglia" non memorizzando realmente tutti i dati, ma semplicemente "fingendo" che sia tutto lì. Pertanto, quando si utilizza truncate per creare un'unità da 20 GB per la propria macchina virtuale, il file system non alloca effettivamente 20 GB, ma inganna e dice che ci sono 20 GB di zeri lì, anche se solo una traccia sul disco potrebbe effettivamente (davvero) essere in uso. Per esempio:
truncate -s 10G gentoo_root.img
fallocate è l' ultima - e migliore - scelta per l'uso con allocazione del disco VM, perché è essenzialmente "riserve" (o "assegna" tutto lo spazio che stai cercando, ma non si preoccupa di nulla scrivere così,. quando usi fallocate per creare uno spazio su disco virtuale da 20 GB, ottieni davvero un file da 20 GB (non un "file sparse", e non ti preoccuperai di scrivere nulla su di esso - il che significa che praticamente tutto potrebbe essere dentro lì - un po 'come un nuovo disco!) Ad esempio:
fallocate -l 10G gentoo_root.img