NEXT | PAGE-SELECT | PREV

【Linux小技】 色々な方法で「mkfile」コマンド


このエントリーをはてなブックマークに追加


カテゴリ【知ったか考察―Linux小技】

UNIXのときは、テスト用にある大きさのファイルを作りたいときは「mkfile」コマンドをよく使ってましたが、Linuxになってからはmkfileコマンドが実装されていません。よって存在しないmkfileと叩いてしまうこと数知れず。

ddコマンドで代用できますが、コマンドよく忘れるのと、countやbsの値を間違えて思い通りのファイルサイズにならないことが多々あり、そのときはなんで間違えるんだと劣等感にさいなまれること数多。

そのため、わざわざddコマンドとbashスクリプトを組み合わせて、自分用のmkfile.shを作って使ってましたが、世の中にはそれを解決してくださる人がいるようなので、それらをまとめてみました。





perl版 mkfile.pl

こちらのサイトでわざわざperl版のmkfile.plを公開している方がいます。

perl5.6以上対応のようです。

-----------------------------------------------------
【1GB のファイル作成】
-----------------------------------------------------
[root@server01 ~]# /usr/bin/time -p ./mkfile.pl 1g 1gfilePL
real 11.09
user 6.47
sys 4.50




C版 mkfile

http://www.ibiblio.org/pub/linux/utils/scripts/mkfile-1.1.tar.gz こちらのファイルを解凍して中のmkfile.cをコンパイルします。そのままでも一応Linuxでコンパイルできるようです。
 
[root@server01 ~]# gcc -o mkifle.x64 mkfile.c 

[root@server01 ~]# ./mkfile.x64 
Usage: mkfile [-nv] [e|p|t|g|m|k|b]  ...
 

テラバイトは勿論、なぜかペタバイトやエクサバイトまで対応している無駄に優れものです。
また32ビットLinuxでは制限があるので、どちらにしろペタバイトなど作れませんが。
-----------------------------------------------------
【1GB のファイル作成】
-----------------------------------------------------
[root@server01 ~]# /usr/bin/time -p ./mkfile.x64 1g 1gfilex64
real 3.41
user 0.00
sys 3.40



OpenSoralis版

OpenSolarisのサイトからソースをダウンロードできます。

ただし、Linuxのgccでそのままコンパイルしてもエラーになります。修正が必要です。



ddコマンド

自分が作ったshスクリプトなど載せるのは恥ずかしいので、RedHat EL4やCentOS4や5でmkifle的な利用をするときのddコマンドの使い方を、ちょとだけまとめる

●基本
-----------------------------------------------------
【1GB のファイル作成】
-----------------------------------------------------
[root@server01 ~]# /usr/bin/time -p dd if=/dev/zero \
of=1G_K.out bs=1K count=1048576
1048576+0 records in
1048576+0 records out
real 9.19
user 0.34
sys 7.76

[root@server01 ~]# /usr/bin/time -p dd if=/dev/zero \
of=1G_M.out bs=1M count=1024
1024+0 records in
1024+0 records out
real 3.52
user 0.00
sys 3.51

[root@server01 ~]# /usr/bin/time -p dd if=/dev/zero \
of=1G_G.out bs=1G count=1
1+0 records in
1+0 records out
real 3.35
user 0.00
sys 3.35

[root@server01 ~]# ls -l | grep 1G
-rw-r--r-- 1 root root 1073741824 Jul  2 0:58 1G_G.out
-rw-r--r-- 1 root root 1073741824 Jul  2 0:58 1G_K.out
-rw-r--r-- 1 root root 1073741824 Jul  2 0:58 1G_M.out

当たり前ですが、Blockサイズをによって実行時間が変わります ----------------------------------------------------- 【2GB以上のフィル作成】 ----------------------------------------------------- [root@server01 ~]# dd if=/dev/zero of=4G_G.out bs=1G count=4  (bsは2G以上にしても32bit制限のため対応できないため、  count数で調整します。 (これはx86_64OSでも一緒))



● ifのデバイスは/dev/zeroか/dev/urandomを使う。
利用用途に応じて、お好きなほうをどうぞ。
[root@server01 ~]# /usr/bin/time -p dd if=/dev/urandom \
of=1g-urandom bs=1M count=1024
1024+0 records in
1024+0 records out
real 192.53
user 0.00
sys 189.95

[root@server01 ~]# /usr/bin/time -p dd if=/dev/zero \
of=1g-zero bs=1M count=1024
1024+0 records in
1024+0 records out
real 3.39
user 0.00
sys 3.38

明らかに、/dev/urandomの方が時間がかかります。

カテゴリ【知ったか考察―Linux小技】



●はてなの中の人が書いてる、経験に基づいたWebシステム運用の本だから、実用的でマジでオススメ。 システム管理者の人に
4774135666[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ) (WEB+DB PRESSプラスシリーズ)
安井 真伸
技術評論社 2008-08-07

by G-Tools




このエントリーをはてなブックマークに追加





このカテゴリの最新記事一覧


| ―Linux | 07時00分 | comments:0 | trackbacks:0 | TOP↑















非公開コメント

http://kenknown.blog42.fc2.com/tb.php/80-52057b46

≪ NEXT | PAGE-SELECT | PREV ≫