質問: linuxシステム上に大きなファイルを素早く作成する どうすれば素早くlinux( red hat linux )システムに大きなファイルを作成できますか? dd が動作しますが、数百gbのファイルが必要な場合は、/dev/zeroからの読み込みとドライブへの書き込みに長い時間がかかることがあります。テストしています...これを繰り返し行う必要がある場合は、実際に時間がかかります。ファイルの内容は気にしないで、すばやく作成したいだけです。どうすればこれができますか?スパースファイルを使用してもこれには効果がありません。ファイルにディスクスペースを割り当てる必要があります。
回答: これはよくある質問です - 特に今日の仮想環境の環境では。残念ながら、答えは想像できるほど簡単ではありません。ddは明らかに最初の選択ですが、ddは本質的にコピーであり、データのすべてのブロックを書き込むように強制します(したがって、ファイルの内容を初期化する)...そして、その初期化はi/o時間を非常にかかります。 (さらに時間をかけたい場合は、 / dev/zero の代わりに / dev/random を使用してください。 i/o時間!)しかし、結局のところ、ddは不適切な選択です(ただし、vm "create" guiで使用されるデフォルトの設定が基本です)。例えば:dd if=/dev/zero of=./gentoo_root.img bs=4k iflag=fullblock,count_bytes count=10g truncate は別の選択です - そしておそらく最速です...しかし、それは "スパースファイル"を作成するためです。基本的に、スパースファイルとは同じデータを多く含むディスクの一部であり、基礎となるファイルシステムは実際にはすべてのデータを格納するのではなく、すべてがそこにあるというふりをすることで「不正」になります。したがって、vm用に20 gbのドライブを作成するためにtruncateを使用すると、ファイルシステムは実際には20 gbを割り当てませんが、ディスク上のトラックが1トラックであっても、そこには20 gbのゼロがあります。実際に(実際に)使用されている可能性があります。例えば。: truncate -s 10g gentoo_root.img fallocateは、最後の - および最良の - の選択で使用します。 vmディスク割り当て。基本的には探しているすべてのスペースを「予約」(または「割り当て」)しますが、何も書く必要はありません。 gbの仮想ドライブスペース、あなたは本当に20gbのファイル(「スパースファイル」ではない)を手に入れます、そしてそれに何かを書くことに煩わされることはありません - それは事実上何でもそこにあることを意味します新しいディスク!)例:fallocate -l 10g gentoo_root.img