Failed to add /run/systemd/ask-password to directory watch: No space left on device

Столкнулся с указанной в заголовке ошибкой при эксплуатации большого числа lxc контейнеров на хосте. Ошибка на русском не ищется, я в итоге нашел на немецком решение. Спасибо google translate. Решил поделиться простым решением для тех, кто не шпрехает на инглише 🙂

Описание ошибки и решение есть в багтрекере proxmox — https://bugzilla.proxmox.com/show_bug.cgi?id=1042. Суть ошибки кроется в параметре ядра max_user_watches, которое означает число файлов, которое может отслеживать один пользователь. Когда упретесь в лимит, получите ошибку в контейнере:

Failed to add /run/systemd/ask-password to directory watch: No space left on device

 

У меня она возникала при любой попытке перезапустить службу через systemctl. Проверить значение параметра max_user_watches можно на хосте (не в контейнере).

# cat /proc/sys/fs/inotify/max_user_watches

8192

 

Значение 8192 дефолтное и в некоторых случаях его недостаточно. Увеличиваем его следующей командой:

# echo 1048576 > /proc/sys/fs/inotify/max_user_watches

 

Эффект будет заметен сразу, ошибка в контейнерах исчезнет. После перезагрузки параметр опять в дефолт сбросится. Чтобы эффект сохранился и после перезагрузки, добавьте в /etc/sysctl.conf параметр:

fs.inotify.max_user_watches=1048576

 

Теперь параметр будет установлен на постоянной основе и сохранится после перезагрузки хоста. Если столкнулись с указанным ограничением, скорее всего упретесь и в соседние. Рекомендую их сразу увеличить в 10 раз.

fs.inotify.max_user_instances=1024

fs.inotify.max_queued_events=163840