回答:
ゼロフィル法(ここでは避けるように修正潜在的なメモリのボトルネックは)SSDの10ギガバイトのファイルを作成するために17秒かかったとUbuntuのグラフィカルインターフェイスが応答しなくなった原因。
$ time sh -c 'dd if=/dev/zero iflag=count_bytes count=10G bs=1M of=large; sync'
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 17.2003 s, 624 MB/s
real 0m17.642s
user 0m0.008s
sys 0m9.404s
$ du -B 1 --apparent-size large
10737418240 large
$ du -B 1 large
10737422336 large
fallocateは、ファイルに割り当てられたディスクスペースを直接操作することで、すぐに大きなファイルを作成します。
$ time sh -c 'fallocate -l 10G large; sync'
real 0m0.038s
user 0m0.000s
sys 0m0.016s
$ du -B 1 --apparent-size large
10737418240 large
$ du -B 1 large
10737422336 large
truncateも即座に機能し、後でデータが書き込まれるまで実際のディスク容量を使い果たしないスパースファイルを作成します。
$ time sh -c 'truncate -s 10G large; sync'
real 0m0.014s
user 0m0.000s
sys 0m0.004s
$ du -B 1 --apparent-size large
10737418240 large
$ du -B 1 large
0 large
簡単な方法は、dd
コマンドを使用してゼロでいっぱいのファイルを書き込むことです。
dd if=/dev/zero of=outputFile bs=2G count=1
コンピューター(1024 * 1024 * 1024)ギガバイトが必要な場合はサイズ引数でGを使用し、人間(1000 * 1000 * 1000)ギガバイトが必要な場合はGBを使用します。
/dev/urandom
その場合に使用します(非ブロッキングですが、同じレベルのランダム性を持つことは保証されません)。いずれかから2 GBを引き出すと、ほぼ確実にシステムのエントロピーが完全に使い果たされるため、しばらくの間暗号化を行わないでください。
ftp://ftp.fsf.hu/testfiles/maketestfiles.sh
またはSeekは、必要なファイルのサイズ(バイト単位)-1です。
dd if=/dev/zero of=filename.big bs=1 count=1 seek=1048575 # 1 MByte
dd if=/dev/zero of=filename.big bs=1 count=1 seek=10485759 # 10 MByte
dd if=/dev/zero of=filename.big bs=1 count=1 seek=104857599 # 100 MByte
dd if=/dev/zero of=filename.big bs=1 count=1 seek=1073741823 # 1024 MByte
dd if=/dev/zero of=filename.big bs=1 count=1 seek=42949672959 # 40960 MByte
dd ... bs=2G count=1
2 GBをメモリに読み込みます(1回のread(2)
呼び出しで)。あなたがメモリのプレッシャーを持っているならば、それはおそらく行く方法ではありません。より多くの小さなブロックは、ページングが少ないことを意味する場合は高速になる可能性があります。