とりとめもなく書いてみる。主にルーキー向けです。
サーバの運用とかやっていると、不定期ではあるが、たまにタイトルのようなディスク容量が逼迫する話題に直面します。
まぁ、それが起こるのは一旦良いとして、みんなこういう時、どうやって調べているのだろう?
とりあえず、僕がどうやってるか書いてみます。
何はともあれ現状確認
みんな大好き"df"コマンドです。細かい説明は省きますが、各パーティション・ファイルシステムごとにディスクの使用状況を確認。
# df -h Filesystem サイズ 使用 残り 使用% マウント位置 /dev/sda3 130G 88G 36G 72% / /dev/sda1 494M 23M 447M 5% /boot tmpfs 12G 0 12G 0% /dev/shm
正確とは言いませんが、だいたいどのパーティションにどのくらい容量が空いているかが確認できます。
どのディレクトリ配下の容量が大きいか確認
"du"コマンドは、各ディレクトリ/ファイルの確認ができますが、そのまま実行すると再帰的なディレクトリまですべて表示して追いづらくなるので、"--max-depth=1"(1階層分を表示)とかオプションを付けて、少しずつ絞り込んでいくようにします。
# du -h --max-depth=1 / 0 /proc 8.0K /mnt 95M /etc 8.0K /selinux 8.0K /misc 264K /dev 84G /var 3.6G /usr 2.4M /opt 36M /sbin 8.0K /srv 16K /lost+found 624K /home 219M /lib 2.1M /root 12M /boot 8.0K /media 7.7M /bin 36M /tmp 18M /lib64 0 /sys 88G /
↑の例では、ルートパーティション("/")に対して、"du"コマンドを発行していますが、ファイル/ディレクトリの量によっては時間がかかるかもしれません。また、実行時間中、ディスクI/Oも発生させることになるので、その辺はいい感じで調整して実行しましょう。
↑では、"/var"以下に大きなファイルがありそうなことがわかったので、次は同様のコマンドを"/var"に対して実行する・・・みたいな感じでやっていくと、デカいファイルのありかが突き止められそうですね。
少し絞り込めたら、後は容量を見て確認
"du"コマンドの出力結果をsortしてもいいのですが、今回はサイズの大きなファイルを探すということで、"find"コマンドの"-size"オプションを使ってファイルサイズベースでの絞り込みをします。↓のような感じ。
# find /var -size +100M -exec ls -lh {} \; -rw-r--r-- 1 daemon daemon 155M 7月 29 11:59 /var/log/hoge/activity/activity.log.2013-07-29 -rw-r--r-- 1 daemon daemon 218M 7月 18 02:00 /var/log/httpd/rewrite_log.20130717.gz -rw-r--r-- 1 daemon daemon 123M 7月 17 02:00 /var/log/httpd/rewrite_log.20130716.gz -rw-r--r-- 1 daemon daemon 230M 7月 28 02:00 /var/log/httpd/rewrite_log.20130727.gz -rw-r--r-- 1 daemon daemon 230M 7月 23 02:00 /var/log/httpd/rewrite_log.20130722.gz -rw-r--r-- 1 daemon daemon 230M 7月 26 02:00 /var/log/httpd/rewrite_log.20130725.gz -rw-r--r-- 1 daemon daemon 1.2G 7月 29 11:59 /var/log/httpd/rewrite_log -rw-r--r-- 1 daemon daemon 206M 7月 20 02:00 /var/log/httpd/rewrite_log.20130719.gz -rw-r--r-- 1 daemon daemon 229M 7月 27 02:00 /var/log/httpd/rewrite_log.20130726.gz -rw-r--r-- 1 daemon daemon 208M 7月 24 02:00 /var/log/httpd/rewrite_log.20130723.gz -rw-r--r-- 1 daemon daemon 223M 7月 21 02:00 /var/log/httpd/rewrite_log.20130720.gz -rw-r--r-- 1 daemon daemon 211M 7月 19 02:00 /var/log/httpd/rewrite_log.20130718.gz -rw-r--r-- 1 daemon daemon 239M 7月 29 02:00 /var/log/httpd/rewrite_log.20130728.gz -rw-r--r-- 1 daemon daemon 196M 7月 29 11:59 /var/log/httpd/fuga-access_log -rw-r--r-- 1 daemon daemon 228M 7月 25 02:00 /var/log/httpd/rewrite_log.20130724.gz -rw-r--r-- 1 daemon daemon 237M 7月 22 02:00 /var/log/httpd/rewrite_log.20130721.gz -rw-r--r-- 1 daemon daemon 161M 7月 22 02:00 /var/log/foobar/foobar-access_log.20130721.gz -rw-r--r-- 1 daemon daemon 150M 7月 21 02:00 /var/log/foobar/foobar-access_log.20130720.gz -rw-r--r-- 1 daemon daemon 140M 7月 20 02:00 /var/log/foobar/foobar-access_log.20130719.gz -rw-r--r-- 1 daemon daemon 143M 7月 19 02:00 /var/log/foobar/foobar-access_log.20130718.gz -rw-r--r-- 1 daemon daemon 142M 7月 24 02:00 /var/log/foobar/foobar-access_log.20130723.gz -rw-r--r-- 1 daemon daemon 163M 7月 29 02:00 /var/log/foobar/foobar-access_log.20130728.gz -rw-r--r-- 1 daemon daemon 147M 7月 18 02:00 /var/log/foobar/foobar-access_log.20130717.gz -rw-r--r-- 1 daemon daemon 154M 7月 25 02:00 /var/log/foobar/foobar-access_log.20130724.gz -rw-r--r-- 1 daemon daemon 230M 7月 29 11:59 /var/log/foobar/foobar-access_log -rw-r--r-- 1 daemon daemon 156M 7月 28 02:00 /var/log/foobar/foobar-access_log.20130727.gz -rw-r--r-- 1 daemon daemon 155M 7月 27 02:00 /var/log/foobar/foobar-access_log.20130726.gz -rw-r--r-- 1 daemon daemon 156M 7月 26 02:00 /var/log/foobar/foobar-access_log.20130725.gz -rw-r--r-- 1 daemon daemon 156M 7月 23 02:00 /var/log/foobar/foobar-access_log.20130722.gz
特定のディレクトリ以下に対して、"-size +100M"を付けることで、ファイルサイズが100MB以上のものだけを抽出しています。こんな感じで結構あぶりだせました。
あとは内容を確認しながら、要らないものであればザックザクと消していきましょう。
とまぁ、簡単に書くとこんな感じですが、もっとエレガントなやり方があれば教えてくださいませ。
それでは! =͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́
追記
コメントを頂戴いたしました。
findやdu、削除時のrmなどはI/Oに負荷がかかる場合があるので、niceやioniceをつけるといいですよ。du -hは目視が面倒なので、du -s|sort -nとかでやってる / “Linuxサーバがディスク容量不足にな…” http://t.co/ogt0k9WBf1
— じぇじぇ!じぇんつー東京編 (@matsuu) July 29, 2013
matsuuさんからコメントいただきました。
これはまさにその通りですね!アレコレ気にする前にnice/ioniceで優先度下げてしまえは、ごもっとも。
あと、本文でも少し言及していますが、duコマンドもsortした方が楽ですね。僕は結果表示が10〜20前後くらいまでなら、チャチャっと実行して、得意の目grepかましてしまう悪いクセがありまして・・・エヘヘ
Linuxエンジニア養成読本 [仕事で使うための必須知識&ノウハウ満載!] (Software Design plus)
- 作者: SoftwareDesign編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2011/04/08
- メディア: 大型本
- 購入: 14人 クリック: 190回
- この商品を含むブログ (24件) を見る
Linuxシステム[実践]入門 (Software Design plus)
- 作者: 沓名亮典
- 出版社/メーカー: 技術評論社
- 発売日: 2013/07/03
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (13件) を見る