これはよくある質問です。特に、今日の仮想環境ではそうです。残念ながら、その答えは想定されるほど簡単ではありません。
ddは明白な最初の選択肢ですが、ddは基本的にコピーであり、データのすべてのブロックを書き込むことを強制します(したがって、ファイルの内容を初期化します)...そして、その初期化は非常に多くのI / O時間を要します。(さらに時間がかかりますか?/ dev / zeroの代わりに/ dev / randomを使用してください!次に、CPUとI / O時間を使用します!)ただし、最終的には、ddは不適切な選択です(ただし、 VMの「作成」GUIで使用されるデフォルト)。例えば:
dd if=/dev/zero of=./gentoo_root.img bs=4k iflag=fullblock,count_bytes count=10G
切り捨ては別の選択肢です-おそらく最速です...しかし、それは「スパースファイル」を作成するためです。基本的に、スパースファイルは、同じデータがたくさんあるディスクのセクションであり、基礎となるファイルシステムは、実際にはすべてのデータを格納するのではなく、すべてが存在することを "偽装"することで「だまされます」。したがって、truncateを使用してVMに20 GBのドライブを作成すると、ファイルシステムは実際には20 GBを割り当てませんが、ディスク上のトラックが1つしかない場合でも、チートしてゼロが20 GBあると表示されます実際に(実際に)使用されている可能性があります。例えば:
truncate -s 10G gentoo_root.img
fallocateは、 VMディスク割り当てで使用するための最後の(そして最良の)選択です。なぜなら、それは本質的に、探しているすべての領域を「予約」(または「割り当て」)ますが、何も書く必要がないからです。 fallocateを使用して20 GBの仮想ドライブスペースを作成すると、実際には20 GBのファイル(「スパースファイル」ではない)が得られ、何も書き込む必要はありません。つまり、実質的に何でもあります-まるで新しいディスクのようなものです!)例:
fallocate -l 10G gentoo_root.img