Amazon Linux2上にホストしていたWordPressサイトが、Disk Fullで落ちた時の対処をChat GPTに相談しながらやってみた
この記事では、WordPressがAmazon EC2のAmazon Linux2で動作していることが紹介されています。ある日、管理画面にアクセスできなくなり、サーバーのログに「No space left on device」というエラーメッセージが表示されました。ログの容量不足を解消するために、dfコマンドやduコマンドを使用してディレクトリの容量を確認し、不要なファイルを削除しました。最終的に、容量を90%まで減らすことに成功しましたが、将来的にはEBSのボリュームを増やすか、EFSに切り替えることを検討する予定です。
目次
このサイトのWordPressは、Amazon EC2(Amazon Linux2)で動かしています。基本的にHeadless構成なため、フロントエンド側で落ちることはないのですが、ある日管理画面にアクセスできなくなっていました。
サーバーのログを見ると、こんなメッセージが残っていました。
bash: cannot create temp file for here-document: No space left on device
-bash: cannot create temp file for here-document: No space left on device
Chat GPTに、ログの内容と対応方法を尋ねてみる
インフラ方面に明るくないため、Chat GPTに聞いてみました。
このエラーメッセージ「bash: cannot create temp file for here-document: No space left on device」は、システムの一時的なストレージ領域(通常は
/tmp
ディレクトリにある)がいっぱいであることを示しています。その結果、Bashは一時ファイルを作成できず、ヒアドキュメントなど特定の操作が失敗している状態です。
容量不足が原因の様子ですね、ディレクトリごとの容量を確認するコマンドを思い出せなかったので、これも尋ねてみました。
df -h
で全体を確認してから、du -h
で掘り下げると良さそうです。
% df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 465M 0 465M 0% /dev
tmpfs 473M 0 473M 0% /dev/shm
tmpfs 473M 48M 425M 11% /run
tmpfs 473M 0 473M 0% /sys/fs/cgroup
/dev/nvmxxxxxx 8.0G 8.0G 20K 100% /
tmpfs 95M 0 95M 0% /run/user/9999
見事に容量がありませんね。du
コマンドについてもう少し聞いておきます。
あとはdu
コマンドをいくつかのディレクトリで実行して、消すべきファイルの当りをつけていきました。
最後に画像などのアップロードディレクトリの容量を減らす方法についても聞いてみます。
便利そうなWP CLIコマンドが出てきましたが、これは幻覚(ハルシネーション)です・・・。media regenerateはサムネイルのリサイズなどを実行するコマンドなので、Chat GPTが書くような用途には使えません。ただしMedia Cleanerプラグインについては問題なく動作しましたので、こちらで画像を減らすことに成功しました。
整理した結果
100% -> 90%まで減らすことができました。
% df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 465M 0 465M 0% /dev
tmpfs 473M 0 473M 0% /dev/shm
tmpfs 473M 48M 425M 11% /run
tmpfs 473M 0 473M 0% /sys/fs/cgroup
/dev/nvmxxxxxx 8.0G 7.2G 849K 90% /
tmpfs 95M 0 95M 0% /run/user/9999
とはいえすぐに容量が尽きるのは見えているので、EBSのボリュームを増やすか、EFSに切り替えることを検討していこうと思います。