web-dev-qa-db-ja.com

大量のディスク容量を即座にいっぱいにする/使用する方法は?

Linuxの場合VM VMをオフにするか、仮想NICを切断するだけではなく、NAGIOSモニタリングをより詳細にテストしたい。テストしたい、または短時間、空き領域の数%を占めることにより、「ディスク領域アラームを強制する」。

私は私が使うことができることを知っています

dd if=/dev/zero of=/tmp/hd-fillup.zeros bs=1G count=50

またはそのようなもの...しかしこれは時間がかかり、システムをロードし、rmでテストファイルを削除するときに再び時間が必要です。

システムに負荷をかけず、時間がかかるパーティションをすばやく(ほぼ瞬時に)埋める方法はありますか?スペースを割り当てるが、それを「満たす」ことはないものについて考えています。

51
Axel Werner

Linuxシステムでファイルを作成する最も速い方法は、fallocateを使用することです。

fallocate -l 50G file 

男から:

fallocateは、ファイルに割り当てられたディスク領域を操作して、割り当てを解除するか、事前に割り当てるために使用されます。
fallocateシステムコールをサポートするファイルシステムの場合、ブロックを割り当て、初期化されていないものとしてマークすることにより、事前割り当てが迅速に行われ、IOをデータブロックに要求しません。ゼロで埋めることによってファイル。
XFS(Linux 2.6.38以降)、ext4(Linux 3.0以降)、Btrfs(Linux 3.7以降)およびtmpfs(Linux 3.5以降)でサポートされます。

69
Rui F Ribeiro

他の選択肢は次のとおりです。

  1. アラームのしきい値を現在の使用量の近くまたはそれ以下に変更する、または
  2. iノード、サイズ、またはその他の属性が制限された非常に小さなテストパーティションを作成します。

ルートの予約済みのパーセンテージがある場合、そのパーセンテージへの実行などをテストできることも便利です。

13
thrig
  1. fallocate -l 50G big_file

  2. truncate -s 50G big_file

  3. dd of=bigfile bs=1 seek=50G count=0

これら3つの方法はすべて、パーティションをすぐにいっぱいにする可能性があるためです。

ddを使用したい場合は、通常、seekで試すことができます。 seek=file_size_what_you_needおよびセットcount=0。これにより、システムにファイルがあり、そのsizeが設定したものですが、実際には作成されません。このように使用すると、パーティションサイズよりも大きなファイルを作成できます。


例:3G未満のext4パーティションでの使用。 ddを使用して、メタデータとして存在する5Tファイルを作成します。ブロックスペースはほとんど必要ありません。

df -h . ; dd of=biggerfile bs=1 seek=5000G count=0 ; ls -log biggerfile ; df -h .

出力:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda9        42G   37G  2.8G  94% /home
0+0 records in
0+0 records out
0 bytes copied, 4.9296e-05 s, 0.0 kB/s
-rw-rw-r-- 1 5368709120000 Jun 29 13:13 biggerfile
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda9        42G   37G  2.8G  94% /home
10
Se ven

Linuxベースのさまざまなシステムでサポートされているストレスngツールを利用することもできます。

stress-ng --fallocate 4 --fallocate-bytes 70% --timeout 1m --metrics --verify --times
0
theosophe74