短時間で大きなサイズのファイルを作成する


18

ゼロとランダムな値で満たされた最大10Gの大きなファイルを作成します。私は使用してみました:

dd if=/dev/urandom of=10Gfile bs=5G count=10

約2Gbのファイルを作成し、終了ステータス「0」で終了します。理由を理解できませんか?

私も使用してファイルを作成してみました:

head -c 10G </dev/urandom >myfile

作成には約28〜30分かかります。しかし、より速く作成したいです。誰にも解決策がありますか?

また、比較のために同じ(擬似)ランダムパターンで複数のファイルを作成したいと思います。誰もがそれを行う方法を知っていますか?


AskUbuntuへようこそ!ddブロックサイズが原因でエラーが発生している可能性があります。この投稿をご覧ください。stackoverflow.com / questions / 6161823 / ...最適なブロックサイズの計算方法、ユーザースクリプト/プログラム、およびを使用しddたその他の提案があります。
時間がない14

回答:


12

fallocateの使用方法については、このツールを使用して、ファイルにスペースを事前に割り当てることができます(ファイルシステムがこの機能をサポートしている場合)。たとえば、5GBのデータを「example」というファイルに割り当てると、次のことができます。

fallocate -l 5G example

これはddよりもはるかに高速で、スペースを非常に迅速に割り当てます。


このファイルにはランダムなデータが含まれていますか、それともたまたま割り当てられたディスク領域にあったものが含まれていますか?
cprn

すべてゼロが含まれます。基本的に、スペースは事前に割り当てられており、データを変更しない場合、ゼロであると推定されます。
コリンイアンキング

これは、ダンプするよりも早くでき/dev/zeroますか?
cprn

1
事前割り当てをブロックする1つのシステムコールであるため非常に高速です(たとえば、スペースは予約しますが、最小限のI / Oを実行します)。
コリンイアンキング

私はこれをアップしています。最後の質問ですが...私はtruncate過去に使用していましたが、デバイスにファイルを物理的に割り当てず、利用可能なスペースに関係なく、アクセスするまで任意の大きなファイルを作成することがわかりました。これは当てはまらないのfallocateですか?...私はそれをチェックしますが、私は携帯電話上だ
cprn

9

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が大きすぎないためですが、それでも十分なバッファーサイズが得られるためです。それはかなり速いはずですが、常にディスクの速度と処理能力に依存します。



1

質問の最初の部分に答える:

カーネルがおそらく5GBのバッファーを一度に書き込もうとするのは、おそらくそれをサポートしていないので、良い考えではありません。いずれの場合でも、パフォーマンス上の利点はありません。一度に1Mを書き込むことは適切な最大値です。


0

この質問は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/で詳細を読むことができます


1
私がそれを見る方法ddは、そもそも十分に高速であり、理由からlibEAT-MY-DATAと呼ばれています。
karel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.