Essa é uma pergunta comum - especialmente no ambiente atual de ambientes virtuais. Infelizmente, a resposta não é tão direta quanto se pode imaginar.
O dd é a primeira opção óbvia, mas o dd é essencialmente uma cópia e obriga a escrever todos os blocos de dados (assim, inicializando o conteúdo do arquivo) ... E é essa inicialização que ocupa tanto tempo de E / S. (Deseja demorar ainda mais? Use / dev / random em vez de / dev / zero ! Então você usará a CPU e o tempo de E / S!) No final, porém, dd é uma má escolha (embora essencialmente o padrão usado pela VM "criar" GUIs). Por exemplo:
dd if=/dev/zero of=./gentoo_root.img bs=4k iflag=fullblock,count_bytes count=10G
truncar é outra opção - e provavelmente é a mais rápida ... Mas isso é porque cria um "arquivo esparso". Essencialmente, um arquivo esparso é uma seção do disco que possui muitos dos mesmos dados, e o sistema de arquivos subjacente "trapaceia" ao não armazenar realmente todos os dados, mas apenas "fingindo" que está tudo lá. Portanto, quando você usa truncado para criar uma unidade de 20 GB para sua VM, o sistema de arquivos não aloca 20 GB, mas trapaceia e diz que existem 20 GB de zeros lá, mesmo que apenas uma faixa no disco pode realmente (realmente) estar em uso. Por exemplo:
truncate -s 10G gentoo_root.img
fallocate é o final - e melhor - escolha para uso com alocação de disco VM, porque é essencialmente "reservas" (ou "aloca" todo o espaço que você está procurando, mas ele não se preocupou em escrever qualquer coisa Então,. quando você usa fallocate para criar um espaço de unidade virtual de 20 GB, você realmente obtém um arquivo de 20 GB (não um "arquivo esparso" e não se preocupa em escrever nada nele - o que significa que praticamente qualquer coisa pode estar presente) lá - como um disco totalmente novo!) Por exemplo:
fallocate -l 10G gentoo_root.img