Estou usando o Amazon SSM Agent para conectar a instancia EC2 de forma segura. O Amazon SSM Agent tambem permite conectar ao console da instancia EC2 via console web aws.amazon.com. Entao, esta e minha forma preferida.

Cerca de alguns dias atras, quando tentei conectar a EC2 via Amazon SSM Agent, ele nao respondeu e depois disso, decidi conectar via forma regular, sim com SSH.

Claro, primeiro de tudo, quero reiniciar o Amazon SSM Agent e vejo isso:

[root@i-0cd9514c60d532e78 ~] systemctl restart amazon-ssm-agent.service
Error: No space left on device

Nao esperava esta mensagem de erro sobre o status do disco. E quero verificar o uso do disco. Agora, vejo isso:

[root@i-0cd9514c60d532e78 ~] df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 960M 0 960M 0% /dev
tmpfs 978M 0 978M 0% /dev/shm
tmpfs 978M 420K 978M 1% /run
tmpfs 978M 0 978M 0% /sys/fs/cgroup
/dev/nvme0n1p1 8.0G 2.6G 5.5G 32% /
tmpfs 196M 0 196M 0% /run/user/1000

Oops! Parece que esta mensagem de erro nao e sobre uso de disco, mas preciso ter certeza. Agora, e hora de verificar os inodes.

[root@i-0cd9514c60d532e78 ~] df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 245750 304 245446 1% /dev
tmpfs 250254 2 250252 1% /dev/shm
tmpfs 250254 388 249866 1% /run
tmpfs 250254 16 250238 1% /sys/fs/cgroup
/dev/nvme0n1p1 4193216 67672 4125544 2% /
tmpfs 250254 1 250253 1% /run/user/1000

Agora que pude confirmar que tambem nao sao os inodes, fiz mais pesquisas e descobri que existem relatos de bugs conhecidos para este mesmo problema, onde a acao systemctl de "start", "stop" e "reload" mostrara um erro "No space left on device", mas acoes de "enable", "disable" e "kill" nao. Nos bugs, e relatado que este erro ocorre como resultado do limite "max_user_watches" do inotify. O inotify tem um limite no numero de arquivos e diretorios que pode monitorar para alteracoes. Para silenciar o erro, voce precisa aumentar o valor de "/proc/sys/fs/inotify/max_user_watches" para permitir que mais arquivos e diretorios sejam adicionados e monitorados para alteracoes.

Para alterar o valor em tempo real, voce pode executar:

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

Para carregar persistentemente este mesmo valor aumentado apos uma reinicializacao ou acao de stop/start:

Adicione a linha "fs.inotify.max_user_watches=1048576" ao arquivo /etc/sysctl.conf. Voce pode verificar sua configuracao sysctl com o comando sysctl -p.

Referencias:
https://bugzilla.redhat.com/show_bug.cgi?id=894483
https://bugzilla.redhat.com/show_bug.cgi?id=1452933

Conclusao