ddコマンドの謎

UNIX系の検証で何かと使う(と思われる)ddコマンド。
普段こんな感じで実行しますが…

dd if=/dev/zero of=ddtest bs=100M count=1

検証で色々いじって、初めて知ったこと。
bs×countの値をメモリサイズ以内に納めないとダメ、みたいな情報を見たが、例えばbs100Gにcount1を指定するとエラーになるけど、bs1Gにcount100を指定すると行ける。
bsにクソデカい数字を指定すると、「大きさxxxxバイトの入力バッファによりメモリを使い果たしました」ってメッセージが返ってきて、ファイルの作成が全くできない。一応メモリサイズに収まる程度で指定しても、メモリサイズのうちfreeの値分のサイズのファイルしか作成してくれない。後者の処理は、topで見たデータからの状況証拠でしかないので、仕様なのかわかりませんが…


bsは1回に書き込むブロックサイズ、countはブロックの個数を指しているらしい。
クソデカいブロックを1個ドーン!と作るより、小さいブロックを小刻みに作る方がイケる、ってことなんだろうか。最終的な完成系は同じだとしても。
こちらの記事によると、bsを大きく指定するほうがメモリを大量消費するとのこと。道理でcountが小さいほうがイケるわけだ。
ameblo.jp


以上、1TB近いダミーファイルを作らなければいけなくなって、苦悶した結果得た知識でした。