WordPress

WordPress (Lightsail)での「No space left on device」エラーの解決

amazonlightsail_wordpress
o_wani

WordPressサイトの運用中に「Failed to open stream: No space left on device」というエラーに遭遇し、サイトが「このサイトで重大なエラーが発生しました。」という表示になってしまうことがあります。

この記事では、この問題の原因と解決方法について説明します。

前提条件

この記事での解決方法は、以下の環境で確認されています:

  • Amazon Lightsail上のWordPress(Bitnami)
  • キャッシュプラグイン(W3 Total Cache、WP Super Cache等)を使用している環境

※環境やプラグインの構成によって、問題の原因や解決方法が異なる可能性があります。

🔧 エラーの原因

管理画面ではログインできるが例えば、プラグインの更新を行うと「No space left on device」が発生しています。

このエラーは一見するとディスク容量不足のように見えますが、実際にはinodeの枯渇が原因であることが多いです。特に、キャッシュプラグインを使用している環境では、大量の小さなキャッシュファイルが生成され、inodeを消費する可能性があります。

以下のコマンドでディスク使用状況を確認すると:

$ df -h
Filesystem       Size  Used Avail Use% Mounted on
/dev/nvme0n1p1    40G   21G   18G  54% /

ディスク容量自体は十分(54%使用)であるにもかかわらず、inode の使用状況を確認すると:

$ df -i
Filesystem       Inodes   IUsed  IFree IUse% Mounted on
/dev/nvme0n1p1  2613248 2613248      0  100% /

inodeが100%使用されていることがわかります。

問題の箇所を特定するために、以下のコマンドで各ディレクトリのinode使用状況を確認します:

$ for d in /*; do echo -n "$d "; find $d -xdev -printf '%i\n' 2>/dev/null | sort -u | wc -l; done
/bin 1
/bitnami 272537
/boot 629
/dev 287
/etc 1264
/home 13
/lib 1
/lib32 1
/lib64 1
/libx32 1
/lost+found 1
/media 1
/mnt 2
/opt 18068
/proc 38027
/root 1
/run 417
/sbin 1
/srv 1
/sys 10942
/tmp 6
/usr 40702
/var 2657

Bitnami WordPressでキャッシュプラグインを使用している場合、特に/opt/bitnami/wordpress/wp-content/cacheディレクトリに大量のキャッシュファイルが蓄積されていることが多いです。

🩹 解決方法

1. キャッシュディレクトリの削除

以下のコマンドでキャッシュを削除します:(消せないものもあります)

$ sudo rm -r /opt/bitnami/wordpress/wp-content/cache/*
rm: cannot remove '/opt/bitnami/wordpress/wp-content/cache/object/term-queries': Directory not empty
rm: cannot remove '/opt/bitnami/wordpress/wp-content/cache/object/post-queries': Directory not empty
rm: cannot remove '/opt/bitnami/wordpress/wp-content/cache/object/terms': Directory not empty
rm: cannot remove '/opt/bitnami/wordpress/wp-content/cache/object/posts': Directory not empty
rm: cannot remove '/opt/bitnami/wordpress/wp-content/cache/object/post_tag_relationships': Directory not empty

このコマンドを実行することで、inode不足が解消され、サイトが復旧します。

※キャッシュプラグインを使用していない環境では、この方法が適用できない場合があります。その場合は、df -iの結果を基に、どのディレクトリでinodeが多く使用されているかを調査する必要があります。

2. 確認

再度inodeの使用状況を確認:

$ df -i

使用率が下がっていることを確認できます。

まとめ

「No space left on device」エラーは、実際のディスク容量ではなくinodeの枯渇が原因であることが多いです。特にキャッシュプラグインを使用している環境では、キャッシュファイルの適切な管理と定期的なモニタリングが必要になります。

なお、この解決方法は特定の環境とプラグイン構成に基づいています。異なる環境や構成では、問題の原因や最適な解決方法が異なる可能性がありますので、ご注意ください。

STAFF
o_wani
o_wani
スタッフ
大学卒業後、15年間WEB業界で働く。現在はマネジメントに従事していますが、ChatGPTの登場に触発され、このブログを再開。AIをパートナーに、自分で手を動かして実装する楽しさと喜びを再発見中。時代が変わりつつある中でも、陳腐化しない情報発信も目指しています。
記事URLをコピーしました