株式会社レップワン運営サイト
株式会社レップワン
ネットワークインフラに特化したIT技術者の常駐サービスを提供しています。企業情報システムのノンストップ運用を支えています。
Replog!株式会社レップワン代表 福田兼児のブログです
株式会社レップワン代表 福田兼児のブログです。
Replog!株式会社株式会社レップワン マネージャーによるブログです
株式会社レップワン マネージャーによる公式ブログです。
Oneway Good Communication from Osaka Japan.
大阪近郊のおすすめ情報を英語で発信しています。
カテゴリー/Replog!byStaff

最新エントリー/Replog!byStaff

バックナンバー/Replog!byStaff

Jan
23
2009

"du" ディスクの使用量を調べる @LCD -Linux Command Dictionary- 【山澤】

どうも、山澤です。

LCDシリーズ第三弾、っていうか第二弾の続き。

前回 df コマンドでファイルシステムごとのディスクの使用率とかを調べたわけですが、その結果 /var が 83% だったので、今回は障害対応をしてみたいと思います。

とはいえ、たかだか 83% で障害ってのも大げさな気がするので、

# df | grep /var
/dev/sda6             14877060  13920248    188908  99% /var

こんな感じにしてみました。グッと障害対応っぽくなりましたね。

というわけで、ディスク容量を圧迫している原因が、どのディレクトリの、どのファイルなのか、du というコマンドを使って調べていきます。


**************************************************

■1.コマンドの使い方

du [options] [file...]

主なオプション
-k   キロバイト(1,024バイト)単位でサイズを表示
-m   メガバイト(1,048,576バイト)単位でサイズを表示
-h   サイズに合わせてキロ/メガ/ギガ単位と人が読みやすい単位で表示
-s   引き数で指定した対象の総計のみを表示し、そのサブディレクトリの使用量は表示しない

du コマンドは引数で指定したファイルとがディレクトリの容量を表示してくれるコマンドです。何も指定しなければカレントディレクトリが対象になります。


■2.とりあえず実験

実験する環境をこんな感じで作ってみました。

# pwd
/root/Desktop

# tree

.
|-- aaa
|   |-- abc.txt
|   `-- bbb
|       `-- def.txt
|-- ghi.txt
`-- jkl.txt

du コマンド単体で使うとカレントディレクトリ(ここでは /root/Desktop)と、そのサブディレクトリの使用量を表示してくれます。

# du
32      ./aaa/bbb
60      ./aaa
100     .

ファイルの容量も表示したい場合は、*(アスタリスク)を使って対象を指定します。

# du ./*
32      ./aaa/bbb
60      ./aaa
12      ./ghi.txt
24      ./jkl.txt


■3.「-s」オプションについて

du コマンドをそのまま使うと指定したディレクトリ以下のサブディレクトリを何階層でも調べて要領を表示するので、オプションを付けずに /(ルート)ディレクトリとかを調べようとすると、、、

# du /* | wc -l
21692

というように2万行以上も出力されるので、-s オプションを使って指定したディレクトリの総計のみを表示するようにします。下記は -s オプションを使って /(ルート)ディレクトリ内の全てのディレクトリとファイルを指定しているので、たとえば /bin なら /bin の総量だけを表示し以下のサブディレクトリについては表示しないというワケです。

# du -sh /*
7.0M    /bin
16M     /boot
88K     /dev
125M    /etc
316M    /home
148M    /lib
16K     /lost+found
8.0K    /media
0       /misc
12K     /mnt
0       /net
27M     /opt
0       /proc
2.8M    /root
31M     /sbin
8.0K    /selinux
8.0K    /srv
0       /sys
666K    /tmp
3.2G    /usr
14G     /var

「-s」については分かりましたか?基本を押さえたら /var の中を調べていきましょう。


■4.例えば /var の容量が 99% になった時の障害対応

じゃあ実際に /var の中で容量の大きいディレクトリやファイルを探っていきます。

# du -s /var/*
12      /var/account
28148   /var/cache
8       /var/crash
8       /var/cvs
24      /var/db
32      /var/empty
 :
 :

とはいえこれだと、/var の中だけでも20行以上あって面倒なので、容量の大きいものベスト5くらいに絞って調べる方が効率的ですね。sorthead をパイプで繋いでひと工夫します。

# du -s /var/* | sort -nr | head -5
12877184        /var/log
743400  /var/lib
103148  /var/www
28148   /var/cache
780     /var/spool

メッチャ分かりやすくなりました。ちなみに -h オプションを使っちゃうと正しく並んでくれないので注意して下さい。

で、次は /var/log を調べます。さらにその次は /var/log の中の一番大きなディレクトリ、という風に調べていきます。

# du -s /var/log/* | sort -nr | head -5
12864128        /var/log/httpd
2524    /var/log/maillog.4
2524    /var/log/maillog.3
1720    /var/log/maillog.2
1080    /var/log/maillog

# du -s /var/log/httpd/* | sort -nr | head -5
12863264        /var/log/httpd/fake.log
392     /var/log/httpd/a.txt
92      /var/log/httpd/ssl_request_log
84      /var/log/httpd/ssl_access_log
64      /var/log/httpd/ssl_request_log.4

こんな感じで調べていくと、容量が大きなファイルとかを簡単に特定できます。

今回 /var のディスク容量を圧迫していたのは fake.log というファイルでした。実験用に作っただけのファイルなので当然不要、削除します。

# rm /var/log/httpd/fake.log
rm: remove 通常ファイル `/var/log/httpd/fake.log'? y

# df | grep /var
/dev/sda6             14877060   1057012  13052144   8% /var


**************************************************


というワケで /var のディスク使用率も 8% まで回復(8% てcoldsweats01)し無事、障害復旧となりました。

まぁ、実際の障害対応はこう単純に解決とはいかないでしょうが、容量の大きいディレクトリやファイルの調査・特定に有効な手法です。

とりあえずはメデタシ、メデタシってコトでnote
2009年1月23日 コメント(2)トラックバック(0)
このエントリーのトラックバックURL

▼この記事に対するコメント

This page seems to get a large ammount of visitors. How do you advertise it? It offers a nice unique twist on things. I guess having something authentic or substantial to post about is the most important thing.

|投稿者:Brook Pierre|2010年12月13日 17:34|

I really enjoyed your site. It is always nice when you read something that is not only informative but entertaining. Awesome.

|投稿者:Crystal Gustafson|2011年1月19日 09:22|


コメント投稿
は必須項目です。(メールアドレスは公開されません)
名前
メールアドレス
URL
本文
レップワンスタッフブログ RSS登録