Linuxでディスク使用が100%に!どうしましょう?

こんにちは、さるまりんです。

No space left on device

こんなことを言われた時のお話です。

No space left on device

「全てのディスクスペースを使用して使えるところがもう残ってないですよ。」という意味ですね。100%使用ずみです。

ログファイルを掃除してないとか、適当にあげたファイルを置きっ放しにしてたとか、いろんな理由でこんな状況になります。

さて、どうしましょう?

何がそんなにかさばっているかを探す必要がありますね。その方法をメモします。

dfコマンド

まず一番最初に叩くのがdfコマンドです。

$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
devtmpfs         483M   60K  483M    1% /dev
tmpfs            493M     0  493M    0% /dev/shm
/dev/xvda1       7.8G  2.0G  5.7G   26% /

dfコマンドはファイルシステムの利用状況を表示してくれます。サイズや使用済みの容量、残り、使用率などを表示してくれます。上の例では/dev/xvda1、マウント位置/が7.8G中2.0G使用済みなのがわかります。この状況では大丈夫ですが使用%が100%になっていると上のメッセージが表示され、ファイルを作成したり、ディレクトリを作ったりすることができなくなるわけです。-hオプションは表示が読みやすいようにつけています。

同じコマンドを-hなしで実行するとこうなります。

$ df
ファイルシス   1K-ブロック    使用  使用可 使用% マウント位置
devtmpfs            494100      60  494040    1% /dev
tmpfs               504748       0  504748    0% /dev/shm
/dev/xvda1         8123812 2062668 5960896   26% /

数字の羅列で何のことやらですね。-hはhuman readable。人が読みやすいようにということのようです。

duコマンド

次はどのディレクトリがどれくらい利用しているのかを調べるためにduコマンドを利用します。

# du -h --max-depth 1
4.0K	./cgroup
4.0K	./local
147M	./tmp
0	./sys
4.0K	./srv
4.0K	./selinux
21M	./lib64
4.0K	./mnt
60K	./dev
43M	./opt
12M	./etc
8.0K	./run
445M	./var
214M	./lib
4.0K	./media
12M	./sbin
35M	./home
16K	./lost+found
72M	./boot
0	./proc
36K	./root
7.0M	./bin
995M	./usr
2.0G	.

これでどのディレクトリがどれくらいの容量あるかがわかります。duコマンドも-hオプションが使えます。あとはこのコマンドを繰り返し利用してどこでスペースをたくさんとっているのかを探っていくのです。表示されているのは100%になっている状況ではないので、たいした量ではありませんが/varが445Mバイト使っています。みてみましょう。

# cd /var
# du -h --max-depth 1
55M	./www
4.0K	./local
8.0K	./empty
4.0K	./tmp
119M	./cache
4.0K	./preserve
16K	./db
4.0K	./opt
12K	./kerberos
136K	./run
28M	./lib
16K	./lock
4.0K	./games
223M	./log
4.0K	./account
4.0K	./nis
4.0K	./yp
22M	./spool
445M	.

logが223Mバイトです。ログファイルが溜まってるかな?といった具合ですね。

容量をとっているファイルが見つかったら削除するなり何なりしてスペースを空けると、No space left on deviceと言われなくなって、再度ファイルを作成できるはずです。

いきなり上のようなメッセージが出ると焦ります。定期的なお掃除作業、大切ですね。

読んでくださってありがとうございました。

それではまた!