彼女からは、おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

サーバのディスク使用率のアラートが飛んできたときに使ったコマンド

運用している babyshark のサーバのディスク使用率が一定を超えたので New Relic からアラートが飛んできました。

それでディスク使用量やファイル容量を調べて対応したのですが、次回アラートが飛んできたときにはすっかり忘れている自信があるのでメモしておきます。

1. ディスクの総容量、使用量、空き容量を確認する(df コマンド)

まず、何はともあれ、現在のディスクの総容量、使用量、空き容量を確認します。df コマンドを使います。

$ df -ah
Filesystem            Size  Used Avail Use% マウント位置
/dev/sda1             8.9G  8.1G  383M  96% /
proc                     0     0     0   -  /proc
sysfs                    0     0     0   -  /sys
devpts                   0     0     0   -  /dev/pts
tmpfs                 938M     0  938M   0% /dev/shm
none                     0     0     0   -  /proc/sys/fs/binfmt_misc

-a, --all オプション

空のファイル・システムも含めたすべてのファイル・システムの情報を表示する

-h オプション(human readable)

容量を適当な単位で表示する

2. ディレクトリ内のファイル容量を確認する(du コマンド)

次に、不要なディレクトリでかつ容量の多いディレクトリを削除しようと考えました。ディレクトリ内のファイル容量を確認するには du コマンドを使います。

だいたいあたりが付いていれば、-s オプションで、当該ディレクトリの総容量のみを確認。

$ du -hs /home/sites/babyshark
5.1G	/home/sites/babyshark

-h オプション(human readable)

容量を適当な単位で表示する

-s --summarize オプション

引数で指定したディレクトリの総容量のみを表示する

あたりが付いていなければ、-s オプションなしで実行します。このとき --max-depth オプションを付けると、表示されすぎて困るということを回避できます。僕はだいたい --max-depth=1 とか --max-depth=2 とかを使っています。

$ du -h --max-depth=1 /home/sites/babyshark
2.0G	/home/sites/babyshark/releases
3.1G	/home/sites/babyshark/shared
5.1G	/home/sites/babyshark

$ du -h --max-depth=2 /home/sites/babyshark
100M	/home/sites/babyshark/releases/20121211154832
100M	/home/sites/babyshark/releases/20121203143419
103M	/home/sites/babyshark/releases/20130105113605
100M	/home/sites/babyshark/releases/20121208001900
101M	/home/sites/babyshark/releases/20121224143518
100M	/home/sites/babyshark/releases/20121208120002
99M	/home/sites/babyshark/releases/20121202114741
99M	/home/sites/babyshark/releases/20121202040632
101M	/home/sites/babyshark/releases/20121231183439
99M	/home/sites/babyshark/releases/20121202041102
103M	/home/sites/babyshark/releases/20130106112717
101M	/home/sites/babyshark/releases/20130101033940
103M	/home/sites/babyshark/releases/20130106113254
100M	/home/sites/babyshark/releases/20121202122655
103M	/home/sites/babyshark/releases/20130105143032
100M	/home/sites/babyshark/releases/20121215123041
101M	/home/sites/babyshark/releases/20130105100912
106M	/home/sites/babyshark/releases/20121223233949
101M	/home/sites/babyshark/releases/20121229140519
101M	/home/sites/babyshark/releases/20121224085513
2.0G	/home/sites/babyshark/releases
744K	/home/sites/babyshark/shared/thumbnails
12M	/home/sites/babyshark/shared/db
1.5M	/home/sites/babyshark/shared/imports
4.0K	/home/sites/babyshark/shared/pids
2.9G	/home/sites/babyshark/shared/log
2.9M	/home/sites/babyshark/shared/assets
36K	/home/sites/babyshark/shared/config
100M	/home/sites/babyshark/shared/cached-copy
115M	/home/sites/babyshark/shared/system
3.1G	/home/sites/babyshark/shared
5.1G	/home/sites/babyshark

--max-depth オプション

容量を適当な単位で表示する

3. 容量が大きい順に並べる(sort コマンド)

削除したいディレクトリを決めるために、上記 2. の結果を、容量が大きい順に並べ替えてみます。パイプで sort コマンドへ渡します。

なお、sort するときは、du コマンドの -h オプションは使いません(使うと、正しく並ばなくなります)

$ du --max-depth=2 /home/sites/babyshark | sort -rn
5246240	/home/sites/babyshark
3187176	/home/sites/babyshark/shared
2951492	/home/sites/babyshark/shared/log
2059052	/home/sites/babyshark/releases
117280	/home/sites/babyshark/shared/system
107776	/home/sites/babyshark/releases/20121223233949
104832	/home/sites/babyshark/releases/20130106113254
104788	/home/sites/babyshark/releases/20130106112717
104676	/home/sites/babyshark/releases/20130105143032
104648	/home/sites/babyshark/releases/20130105113605
103200	/home/sites/babyshark/releases/20130105100912
103172	/home/sites/babyshark/releases/20130101033940
102700	/home/sites/babyshark/releases/20121231183439
102692	/home/sites/babyshark/releases/20121229140519
102660	/home/sites/babyshark/releases/20121224143518
102612	/home/sites/babyshark/releases/20121224085513
102220	/home/sites/babyshark/releases/20121215123041
102200	/home/sites/babyshark/releases/20121211154832
102176	/home/sites/babyshark/releases/20121208120002
101856	/home/sites/babyshark/releases/20121208001900
101564	/home/sites/babyshark/shared/cached-copy
101452	/home/sites/babyshark/releases/20121203143419
101420	/home/sites/babyshark/releases/20121202122655
101356	/home/sites/babyshark/releases/20121202114741
101320	/home/sites/babyshark/releases/20121202041102
101292	/home/sites/babyshark/releases/20121202040632
11612	/home/sites/babyshark/shared/db
2924	/home/sites/babyshark/shared/assets
1512	/home/sites/babyshark/shared/imports
744	/home/sites/babyshark/shared/thumbnails
36	/home/sites/babyshark/shared/config
4	/home/sites/babyshark/shared/pids

-n オプション

先頭の数字や記号("+" , "-" , "." など)を数値とみなして、ソートする。先頭の空白は無視する

-r オプション

逆順にソートする

4. 容量が多い順に 10件だけ表示させる(head コマンド)

結果を N件だけ表示させたいときは、head コマンドを使います。

$ du --max-depth=2 /home/sites/babyshark | sort -rn | head -n 10
5246404	/home/sites/babyshark
3187340	/home/sites/babyshark/shared
2951656	/home/sites/babyshark/shared/log
2059052	/home/sites/babyshark/releases
117280	/home/sites/babyshark/shared/system
107776	/home/sites/babyshark/releases/20121223233949
104832	/home/sites/babyshark/releases/20130106113254
104788	/home/sites/babyshark/releases/20130106112717
104676	/home/sites/babyshark/releases/20130105143032
104648	/home/sites/babyshark/releases/20130105113605

-n N, --lines N オプション

先頭からN行を表示する

以上です。よろしければ参考にしてください。ではでは。