以前のエントリでも出てきたのですが、ディスクフルな状態に遭遇することがままあります。 今となっては慣れつつありますが、たまに「ええっと?」となるので、備忘録的に。
ディスクの使用量確認
主に使うのはdf
コマンドとdu
コマンド。
参考:
Linuxコマンド集 - 【 df 】 ディスク・ドライブの使用量を表示する:ITpro
Linuxコマンド集 - 【 du 】 ディレクトリ内のファイル容量を表示する:ITpro
df
コマンドで本当にディスクフルなのか、どこが容量を食っているのかを確認します。
h
オプションを付けると、人間が見やすいように1Mや1Gなどの単位付きで容量が表示されます。
$ df -h ファイルシステム サイズ 使用 残り 使用% マウント位置 /dev/disk1 465Gi 29Gi 436Gi 7% / devfs 178Ki 178Ki 0Bi 100% /dev
コマンドを実行すると↑のように表示されます。
見たまま、使用%が100%であればディスクフルです。アウト。
ファイル/ディレクトリの容量確認
上の例はめちゃくちゃ余裕ありますが、「やれ、/が残り少ないぞ」とわかったら、次にdu
コマンドを使って、容量を使いまくっている場所を調べていきます。
s
オプションで指定したファイル/ディレクトリの総計、h
オプションで、単位付きで容量が表示されます。
/*
のようにディレクトリを指定すると、/
以下のディレクトリも確認することができます。
$ du -sh /* 2.6G /private 1.0M /sbin 4.0K /tmp 509M /usr
※ ルート権限でないと見れず「Permission denied」のエラーが出ることもあるので、その場合はsudo
をつけて実行
パイプ(|
)でsort
コマンドを繋げることで、容量の大きい順/小さい順にソートすることもできます。
参考:
Linuxコマンド集 - 【 sort 】 行を並び替える:ITpro
sort
も使う際は、du
コマンドにh
オプションをつけているとうまくソートされないことがあるので、その場合はh
オプション抜きで実行。
n
オプションで先頭の数値や記号を数値と見なし、r
オプションで逆順にソートします。
# hオプションあり $ du -sh /* | sort -nr 509M /usr 4.0K /tmp 2.6G /private 1.0M /sbin # hオプション無し $ du -s /* | sort -nr 5433696 /private 1042688 /usr 2072 /sbin 8 /tmp
何が容量を使っているのかが判明したら、後は不要ファイルを削除していくだけです。
iノード枯渇説
「ディスク使用率はまだ余裕あるんだけどなぁ…」という時は、iノード数が原因だったということもあるようです。
過去一度だけ遭遇したことがあります。
qiita.com
ノード数の確認はdf
コマンドのi
オプションで調べられます。
iノードについてはこちらがわかりやすかったです。
参考:iノード(inode)とは
雑感
本当はディスクフルになる前に対応できれば良いんだけどなーと思いつつ、ちゃんと監視しているものはアラートが来ても監視されていないものは気づけない現実。 ちゃんと対応できれば良いんですけどね…。