C'est une question courante - en particulier dans l'environnement actuel d'environnements virtuels. Malheureusement, la réponse n'est pas aussi simple qu'on pourrait le penser.
dd est le premier choix évident, mais dd est essentiellement une copie et cela vous oblige à écrire chaque bloc de données (donc, à initialiser le contenu du fichier) ... Et cette initialisation est ce qui prend tellement de temps d'E / S. (Vous voulez que cela prenne encore plus de temps? Utilisez / dev / random au lieu de / dev / zero ! Ensuite, vous utiliserez le CPU ainsi que le temps d'E / S!) En fin de compte, dd est un mauvais choix (bien que essentiellement le utilisé par défaut par les interfaces graphiques "créer" de la machine virtuelle). Par exemple:
dd if=/dev/zero of=./gentoo_root.img bs=4k iflag=fullblock,count_bytes count=10G
tronquer est un autre choix - et est probablement le plus rapide ... Mais c'est parce qu'il crée un "fichier clairsemé". Essentiellement, un fichier clairsemé est une section de disque qui contient beaucoup des mêmes données, et le système de fichiers sous-jacent "triche" en ne stockant pas vraiment toutes les données, mais simplement en "prétendant" qu'elles sont toutes là. Ainsi, lorsque vous utilisez tronquer pour créer un lecteur de 20 Go pour votre machine virtuelle, le système de fichiers n'alloue pas réellement 20 Go, mais il triche et dit qu'il y a 20 Go de zéros, même si une seule piste sur le disque peut en fait (vraiment) être utilisé. Par exemple:
truncate -s 10G gentoo_root.img
fallocate est le dernier - et le meilleur - choix à utiliser avec l'allocation de disque VM, car il "réserve" (ou "alloue" tout l'espace que vous recherchez, mais il ne prend pas la peine d'écrire quoi que ce soit. Donc, lorsque vous utilisez fallocate pour créer un espace de lecteur virtuel de 20 Go, vous obtenez vraiment un fichier de 20 Go (pas un "fichier épars", et vous n'aurez pas pris la peine d'y écrire quoi que ce soit - ce qui signifie pratiquement tout pourrait être dans là - un peu comme un tout nouveau disque!) Par exemple:
fallocate -l 10G gentoo_root.img