Столкнулся с указанной в заголовке ошибкой при эксплуатации большого числа lxc контейнеров на хосте. Ошибка на русском не ищется, я в итоге нашел на немецком решение. Спасибо google translate. Решил поделиться простым решением для тех, кто не шпрехает на инглише :)
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Описание ошибки и решение есть в багтрекере 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
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Точнее команда выглядит так
sudo -i
echo 1048576 > /proc/sys/fs/inotify/max_user_watches
exit
https://github.com/extremeshok/xshok-proxmox
Не стоит тупо копировать и выполнять, но многое для своих инсталляций PVE взято отттуда
Плюс ВСЕГДА активирую LZ4 (жаль, что ZSTD еще не прикрутили) + Z3FOLD везде, где это возможно:
#!/usr/bin/env bash
#http://redsymbol.net/articles/unofficial-bash-strict-mode/
#set -euxo pipefail
#set -euo pipefail
set -x
IFS=$'\n\t'
# Set the local
export LANG="en_US.UTF-8"
export LC_ALL="C"
for module in lz4 lz4_compress z3fold
do grep -iqw "^$module$" /etc/initramfs-tools/modules || printf '%s\n' "$module" >> /etc/initramfs-tools/modules
done
update-initramfs -u
[ ! -d /etc/default/grub.d ] && mkdir -p /etc/default/grub.d
echo 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT zswap.enabled=1 zswap.compressor=lz4 zswap.zpool=z3fold zswap.max_pool_percent=25"' > /etc/default/grub.d/zswap.cfg
update-grub
Зы. В PVE пока не работает. В последнем Дебиане с последним ядром 4.19 тоже. В Убунте не проверял.
github.com/facebook/zstd
http://www.linuxmint.com.br/discussion/51150/habilitando-zswap-zstd-z3fold