감시 횟수를 더 높은 값으로 설정했음에도 불구하고 "장치에 남은 공간이 없거나 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 설정을 사용하여 파일 감시자에서 대용량 폴더를 제외하는 옵션이 하나만 있습니다.

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

관련 정보