ゼロとランダムな値で満たされた最大10Gの大きなファイルを作成します。私は使用してみました:
dd if=/dev/urandom of=10Gfile bs=5G count=10
約2Gbのファイルを作成し、終了ステータス「0」で終了します。理由を理解できませんか?
私も使用してファイルを作成しようとしました:
head -c 10G </dev/urandom >myfile
作成には約28〜30分かかります。しかし、私はそれがより速く作成されることを望みます。誰にも解決策がありますか?
また、比較のために同じ(擬似)ランダムパターンで複数のファイルを作成したいと思います。誰でもそれを行う方法を知っていますか?
Fallocateの使用方法については、このツールを使用して、ファイル用のスペースを事前に割り当てることができます(ファイルシステムがこの機能をサポートしている場合)。たとえば、5GBのデータを「example」というファイルに割り当てると、次のことができます。
fallocate -l 5G example
これはddよりもはるかに高速で、スペースを非常に迅速に割り当てます。
dd
を使用して、ゼロのみで構成されるファイルを作成できます。例:
dd if=/dev/zero of=zeros.img count=1 bs=1 seek=$((10 * 1024 * 1024 * 1024 - 1))
実際に物理ディスクに書き込まれるのは1バイトだけなので、これは非常に高速です。ただし、一部のファイルシステムはこれをサポートしていません。
擬似ランダムコンテンツを含むファイルを作成する場合は、次を実行します。
dd if=/dev/urandom of=random.img count=1024 bs=10M
バッファサイズとして10Mを使用することをお勧めします(bs
)。これは、10Mが大きすぎないためですが、それでも十分なバッファーサイズが得られるためです。それはかなり速いはずですが、常にディスクの速度と処理能力に依存します。
Ddを使用すると、ランダムデータで満たされた10 GBのファイルが作成されます。
dd if=/dev/urandom of=test1 bs=1M count=10240
count
はメガバイト単位です。
質問の最初の部分に答える:
カーネルが一度に5GBのバッファーを書き込もうとすることは、おそらくお勧めできません。いずれの場合でも、パフォーマンス上の利点はありません。一度に1Mを書き込むことは適切な最大値です。
この質問は5年前に開かれました。私はこれに偶然出会ったばかりで、私の調査結果を追加したかったのです。
単に使用する場合
dd if=/dev/urandom of=random.img count=1024 bs=10M
xiaodongjieが説明したように、かなり高速に動作します。ただし、eatmydata
のように使用すると、さらに高速化できます
eatmydata dd if=/dev/urandom of=random.img count=1024 bs=10M
eatmydata
は、fsyncを無効にしてディスクの書き込みを高速化します。
詳しくは https://flamingspork.com/projects/libeatmydata/ をご覧ください。