Esta es una pregunta común, especialmente en el entorno actual de entornos virtuales. Desafortunadamente, la respuesta no es tan directa como se podría suponer.
dd es la primera opción obvia, pero dd es esencialmente una copia y eso te obliga a escribir cada bloque de datos (por lo tanto, inicializando el contenido del archivo) ... Y esa inicialización es lo que ocupa tanto tiempo de E / S. (¿Quiere que se demore aún más? ¡Use / dev / random en lugar de / dev / zero ! ¡Entonces usará la CPU y el tiempo de E / S!) Sin embargo, al final, dd es una mala elección (aunque esencialmente predeterminado utilizado por la VM "crear" GUI). P.ej:
dd if=/dev/zero of=./gentoo_root.img bs=4k iflag=fullblock,count_bytes count=10G
truncar es otra opción, y es probable que sea la más rápida ... Pero eso se debe a que crea un "archivo disperso". Esencialmente, un archivo disperso es una sección del disco que tiene muchos de los mismos datos, y el sistema de archivos subyacente "engaña" al no almacenar realmente todos los datos, sino simplemente "pretender" que todo está allí. Por lo tanto, cuando usa truncar para crear una unidad de 20 GB para su VM, el sistema de archivos en realidad no asigna 20 GB, pero hace trampa y dice que hay 20 GB de ceros allí, a pesar de que solo hay una pista en el disco en realidad puede (realmente) estar en uso. P.ej:
truncate -s 10G gentoo_root.img
fallocate es el final - y mejor - elección para su uso con asignación de disco VM, porque es esencialmente "reservas" (o "asigna" todo el espacio que usted está buscando, pero no se molestan en escribir nada lo tanto,. cuando usa Falocate para crear un espacio de disco virtual de 20 GB, realmente obtiene un archivo de 20 GB (no un "archivo disperso", y no se habrá molestado en escribirle nada, lo que significa que prácticamente cualquier cosa podría estar en allí, ¡como un disco nuevo!) Por ejemplo:
fallocate -l 10G gentoo_root.img