監視回数を高い値に設定したにもかかわらず、「デバイスに空き領域がないか、fs.inotify.max_user_watchesを超えました」というメッセージが表示されます。

監視回数を高い値に設定したにもかかわらず、「デバイスに空き領域がないか、fs.inotify.max_user_watchesを超えました」というメッセージが表示されます。

イメージをビルドするコマンドを実行しようとすると、bitbake次のエラーが表示されます。

ERROR: No space left on device or exceeds fs.inotify.max_user_watches?
ERROR: To check max_user_watches: sysctl -n fs.inotify.max_user_watches.
ERROR: To modify max_user_watches: sysctl -n -w fs.inotify.max_user_watches=<value>.
ERROR: Root privilege is required to modify max_user_watches.

どのプロセスにいくつの監視回数があるかを確認するためにスクリプトを実行すると、次のような結果が得られます。

   INOTIFY
   WATCHER
    COUNT     PID     CMD
----------------------------------------
   11978    15732  /snap/sublime-text/97/opt/sublime_text/plugin_host 15717 --auto-shell-env
   11978    15717  /snap/sublime-text/97/opt/sublime_text/sublime_text
      51    10165  /usr/lib/unity-settings-daemon/unity-settings-daemon
      12     1759  /usr/lib/gvfs/gvfsd-trash --spawner :1.6 /org/gtk/gvfs/exec_spaw/0
...

次のコマンドを実行すると、設定された最大監視回数より大きい値が返されますが、11978同じエラーが表示されます。

$ sysctl -n fs.inotify.max_user_watches
12288

私が調査しなければならない他のものがありますか?

答え1

VS Code Remote-SSHを使用している場合、このエラーが発生します。このエラーを回避するには、VS Code を閉じるか、 files.watcherExclude 設定を使用してファイルウォッチャーから大容量フォルダーを除外するオプションが 1 つしかありません。

https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc

答え2

以下のリンクの解決策で問題を解決しました。

https://forum.proxmox.com/threads/error-no-space-left-on-device.27809/post-141252

簡単に言うと:

現在の制限を確認してください。
cat /proc/sys/fs/inotify/max_user_watches

私には64000です。

値を大きくして問題が解決するかどうかを一時的にテストします。 (次の再起動時にデフォルトの8192にリセットされます。)
echo 1048576 > /proc/sys/fs/inotify/max_user_watches

それぞれのサイズは〜1kなので、クロックのRAM消費量は〜8MBから〜1GBに増えます。おそらくこのような大きなものは必要ありません。 RAMを節約するには、小さいものを試してください。

上記の方法で問題が解決したら、再起動して問題を恒久的にすることができます。
/etc/sysctl.confを編集してください。

nano /etc/sysctl.conf

次の行を追加します(またはすでに存在する場合は編集)。
fs.inotify.max_user_watches=128000

上記のように、必要に応じて128000の値を編集します。

再起動するか、次の手順を実行します。
sysctl -p /etc/sysctl.conf

関連情報