LoginSignup
4
1

More than 3 years have passed since last update.

EC2 Linux上でinodeが枯渇した際の対処法

Last updated at Posted at 2020-07-09

There appears to be insufficient space on your system to finish とエラーがでた!

とある日,会社のサービスが止まっていまい,原因の究明を行ったところ上記のエラーが発生して新規ファイルの作成ができなくなっていた.
そこでディスクのスペースを確認したところ空き容量は問題ないが,inodeが枯渇していることが判明.
ここに,この問題を対処した際の備忘録を残す.

inode空き容量の確認

df -iコマンドでinodeの空き容量を調べる

/dev/xvda1     217227 217227 217227   100% /

確認すると使用率は100%になっている.
これでは新規ファイルの作成ができず,logを書き出したところでサービスが止まってしまう.

ファイルシステムの確認

df -Tコマンドでファイルシステムを確認する

/dev/xvda1     ext4   略

今回はext4であった.
ext4ではinodeテーブルのサイズを動的に変更は(多分)できないので,ファイルシステムを再構築するか,ディスクサイズを拡張し,同時にinodeテーブルサイズを方法をとる.
EC2では手軽にディスクサイズを拡張できるため,今後の事も考えディスクサイズの拡張を行う.

ボリュームサイズの拡張

$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  8G  0 disk 
└─xvda1 202:1    0  8G  0 part /

ボリュームサイズを確認しておく.
次にEC2ダッシュボードで,問題のインスタンスからEBS IDをクリックし,EBSボリュームのページに移動に移動する.
スクリーンショット 2020-07-10 2.26.59.png

対象のボリュームのスナップショットを念のためとっておき,ボリュームの変更を行う.
スクリーンショット 2020-07-10 2.31.20.png

ここで先ほど確認しておいたボリュームサイズ以上の値を指定し,変更リクエストを行う.
この変更は5分ほどかかる事もある.

変更できたら以下のようになるだろう.

$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  20G  0 disk 
└─xvda1 202:1    0  8G  0 part /

ある程度待っても変更されない場合はインスタンスの再起動をすると変更される.
しかし,ルートのパーティションは8Gのままで変更されていないため,以下コマンドで拡張を行う.

$ sudo growpart /dev/xvda 1

mkdir: cannot create directory '/tmp/growpart.1959': No space left on device
FAILED: failed to make temp dir
と出る場合は空きがなくtmpファイルが作成できないので,お掃除をしてから実行する)

再度確認

$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  20G  0 disk 
└─xvda1 202:1    0  20G  0 part /

これでサイズが最大まで拡張されています.

ファイルシステムの拡張

最後にファイルシステムの拡張を行う

$ sudo resize2fs /dev/xvda1
$ df -i
/dev/xvda1     1310720 217227 1093493   17% /

inode使用率が17%まで減りました.
これで完了です.

おまけ

$ dpkg --get-selections | grep linux-
linux-base                  install
linux-headers-4.4.0-121             install
linux-headers-4.4.0-121-generic         install
linux-headers-4.4.0-124             install
linux-headers-4.4.0-124-generic         install
linux-headers-4.4.0-127             install
linux-headers-4.4.0-127-generic         install
linux-headers-4.4.0-128             install
linux-headers-4.4.0-128-generic         install
linux-headers-4.4.0-130             install
linux-headers-4.4.0-130-generic         install
linux-headers-4.4.0-133             install
linux-headers-4.4.0-133-generic         install
linux-headers-4.4.0-134             install
linux-headers-4.4.0-134-generic         install
linux-headers-4.4.0-137             install
linux-headers-4.4.0-137-generic         install
linux-headers-4.4.0-138             install
linux-headers-4.4.0-138-generic         install
linux-headers-4.4.0-139             install
linux-headers-4.4.0-139-generic         install
linux-headers-4.4.0-151             install
linux-headers-4.4.0-151-generic         install
linux-headers-4.4.0-154             install
linux-headers-4.4.0-154-generic         install
linux-headers-4.4.0-157             install
linux-headers-4.4.0-157-generic         install
linux-headers-4.4.0-159-generic         install
linux-headers-generic               install
linux-headers-virtual               install
linux-image-4.4.0-101-generic           deinstall
linux-image-4.4.0-104-generic           deinstall
linux-image-4.4.0-108-generic           deinstall
linux-image-4.4.0-109-generic           deinstall
linux-image-4.4.0-112-generic           deinstall
linux-image-4.4.0-116-generic           deinstall
linux-image-4.4.0-141-generic           deinstall
linux-image-4.4.0-142-generic           deinstall
linux-image-4.4.0-143-generic           deinstall
linux-image-4.4.0-151-generic           install
linux-image-4.4.0-154-generic           install
linux-image-4.4.0-157-generic           install
linux-image-4.4.0-159-generic           install
linux-image-4.4.0-92-generic            deinstall
linux-image-4.4.0-93-generic            deinstall
linux-image-4.4.0-96-generic            deinstall
linux-image-4.4.0-97-generic            deinstall
linux-image-4.4.0-98-generic            deinstall
linux-image-virtual             install
linux-libc-dev:amd64                install
linux-modules-4.4.0-143-generic         deinstall
linux-modules-4.4.0-151-generic         install
linux-modules-4.4.0-154-generic         install
linux-modules-4.4.0-157-generic         install
linux-modules-4.4.0-159-generic         install
linux-virtual                   install

確認してみると古いカーネルがいっぱい残っていた.
これをお掃除すれば空きが増えそうなので,空きがない場合は確認してみると良いかと思う.
一応確実に使わないであろうカーネルを削除

下記オプション--dry-runで削除テストを行い,問題がなければ削除を行う

$ apt-get autoremove --purge linux-*-4.4.0-{121,124,127,128,130,133,134,137,138,139}* --dry-run

以上で処置完了です.おつかれさまでした!

4
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1