直径1.5メートル

ひよっこエンジニアのちょっとしたメモ。主に備忘録。たまに雑記。

【Linux】ディスクフル?と思ったら

以前のエントリでも出てきたのですが、ディスクフルな状態に遭遇することがままあります。 今となっては慣れつつありますが、たまに「ええっと?」となるので、備忘録的に。

ディスクの使用量確認

主に使うのは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)とは

雑感

本当はディスクフルになる前に対応できれば良いんだけどなーと思いつつ、ちゃんと監視しているものはアラートが来ても監視されていないものは気づけない現実。 ちゃんと対応できれば良いんですけどね…。