EC2(Amazon Linux 2)でファイル容量がいっぱいの時に、ファイル容量の大きい順でディレクトリを表示する
株式会社TECH LUCKという会社で代表兼エンジニアをしている齊藤です。
DXプロジェクト、開発プロジェクト、Rails開発などでお困りごとがありましたら弊社HPからご相談をいただけますと幸いです。
以下のような問題に対応することが可能です。
- プロジェクトでRailsエンジニアが足りなくて困っている
- Railsのバージョンアップをしたいがノウハウ・リソースが足りなくて困っている
- オフショア開発をしているが、要件の齟齬やコード品質が悪いので改善したい
また、Railsエンジニアも募集しておりますので、興味がありましたら弊社HPからご連絡いただけますと幸いです。
前提
AWSのEC2(Amazon Linux 2)を使っている際に、正常に稼働していたサーバーから突然レスポンスが返ってこなくなるという自体に陥りました。
原因を調べたところサーバーのディスク容量をすべて使ってしまい、レスポンスが返ってこなくなっていました。
本記事では上記の際の対処法を備忘録として載せておきます。
対処法やコマンド
※パーミッションの問題があると面倒なので、ログインしているユーザーはrootユーザーであるとします。
まずはどのくらいファイル容量を使っているのか確認します。
df -h
# 結果
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 460K 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/xvda1 16G 14G 2.0G 88% /
tmpfs 395M 0 395M 0% /run/user/1001
/dev/xvda1
が16GBのディスク容量があり、88%の14GBを使っている状態であることがわかりました。本記事のサーバーでは100%となっていないため正常稼働していますが、レスポンスを返さなかった時は100%になっていました。
以下のコマンドでどこのディレクトリの容量が大きいのかを調べます。
du -sh /*
# 実行結果
968M /home
460K /run
116K /opt
61M /boot
44K /root
32M /etc
5.0M /tmp
1.9G /var
1.5G /usr
0 /sys
...
これによると/var
と/usr
以下のディレクトリのファイル容量が大きいことがわかりました。
このコマンドで利用して、容量が大きくて不要なログファイルなどを削除していきました。
注意点
ファイルを削除した際に、ファイルを削除しても容量が減らないという場合があります。
この場合には、削除したファイルに関連するサーバーのプロセスをkillするなどをして対処しましょう。
Linux のファイルシステムでは、rm コマンドでファイルを削除したとしても、その削除したファイルをプロセスが使用中であった場合は、実際にはファイルシステム上から削除されず、ls や find のコマンドで表示されなくなるだけだから、ということです。
Discussion