元RX-7乗りの適当な日々 このページをアンテナに追加 RSSフィード Twitter

RX-7(FD3S)WRX STI関連のキーワードで検索されて来られた方へ。
右サイドのカテゴリ『』をクリックすると関連する項目だけが表示されます。
日々の写真は『Flickr』で公開しています。

2013/07/29

by T a k

Linuxサーバがディスク容量不足になった!何か消さねば!ってなった時にどう対処するか


とりとめもなく書いてみる。主にルーキー向けです。

サーバの運用とかやっていると、不定期ではあるが、たまにタイトルのような話題に直面します。

まぁ、それが起こるのは一旦良いとして、みんなこういう時、どうやって調べているのだろう?

とりあえず、僕がどうやってるか書いてみます。


何はともあれ現状確認

みんな大好き"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以上のものだけを抽出しています。こんな感じで結構あぶりだせました。

あとは内容を確認しながら、要らないものであればザックザクと消していきましょう。


とまぁ、簡単に書くとこんな感じですが、もっとエレガントなやり方があれば教えてくださいませ。

それでは! =͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́


追記

コメントを頂戴いたしました。

matsuuさんからコメントいただきました。

これはまさにその通りですね!アレコレ気にする前にnice/ioniceで優先度下げてしまえは、ごもっとも。

あと、本文でも少し言及していますが、duコマンドもsortした方が楽ですね。僕は結果表示が10〜20前後くらいまでなら、チャチャっと実行して、得意の目grepかましてしまう悪いクセがありまして・・・エヘヘ


Linuxシステム[実践]入門 (Software Design plus)

Linuxシステム[実践]入門 (Software Design plus)

x19290x19290 2013/07/31 17:10 du を使うなら、-s を付けないのも一つの手です。du | sort -n | tail -100

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。


オススメ (一部は、最近読んでいる本とも言う)
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~ [Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ) エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド [24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 Linux-DB システム構築/運用入門 (DB Magazine SELECTION) キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置 スケーラブルWebサイト 実践ハイパフォーマンスMySQL 第3版 ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE) SQLアンチパターン インターネットのカタチ―もろさが織り成す粘り強い世界― ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)