【Linux】ファイルを作成できない。「デバイスに空き容量がありません」

スポンサーリンク

Linuxサーバでファイルを作成しようとすると「デバイスに空き領域がありません」と表示され、ファイルが一切作成できなくなった。一見すると容量不足が原因に見えるが容量は空いている。

原因を探る

「空き領域がありません。」とのことなのでまず疑うべきはディスク使用率だろう。しかし、df コマンドで確認しても容量は問題なさそう。

# df -h
ファイルシス        サイズ  使用  残り 使用% マウント位置
/dev/sda3             100G   60G   40G  60% /
/dev/sda1             960M  346M  615M   37% /boot

システムログにも頻繁に以下の出力がある

No space left on device

どうやらディスクに問題があることは間違いなさそうなのでdf コマンドに i オプションを付けて、inodeの確認をすると100% になっていた。

# df -i
ファイルシス         Iノード I使用    I残り I使用% マウント位置
/                         49805312  449805312   0  100% /
/dev/sda1             524288   372   523916     1% /boot

inode(アイノード)は、主にUNIX系のファイルシステムで使われるデータ構造で、ファイルやディレクトリの以下の属性情報を管理している。

・ファイルの所有者
・アクセス権(パーミッション)
・ファイルサイズ
・作成・更新日時

inode は最大数が決まっているので、最大数に近づくとファイルが作成できなくなってしまう。

解決策

inode を減らすにはファイルを削除するしかない。find コマンドでファイル数が大きい順で検索することができる。/ 直下で実行してしまうとかなり処理時間がかかる上にサーバに負荷がかかってしまうので、ある程度、怪しいディレクトを絞ってcd で移動した上で実行した方がよい。よくあるのが /var 配下や /root 配下に溜まるメールなど。実行すると以下のようにファイル数が多いフォルダ順にファイル数とフォルダ名で表示される。

# cd /var/
# find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -r
  80385 folder9
  78900 folder3
  59245 folder2
    5250 folder7
     311 folder2
     3 folder1

もし、不要なファイルであれば削除してしまう。削除が完了するとファイルが書き込めるようになる。

例えばある期間より前のファイルを削除など条件をつけて削除する場合はこちらの記事を参照

コメント

タイトルとURLをコピーしました