Χρησιμοποιώ τον Amazon SSM Agent για να συνδέομαι σε EC2 instances με ασφάλεια. Ο Amazon SSM Agent μπορεί επίσης να συνδεθεί στην κονσόλα του EC2 instance μέσω του aws.amazon.com web console. Αυτός είναι λοιπόν ο προτιμώμενος τρόπος μου.

Πριν από μερικές ημέρες, όταν προσπάθησα να συνδεθώ σε EC2 μέσω Amazon SSM Agent, δεν ανταποκρίθηκε και μετά από αυτό, αποφάσισα να συνδεθώ με τον συνηθισμένο τρόπο, ναι με SSH.

Φυσικά, πρώτα απ' όλα, θέλω να επανεκκινήσω τον Amazon SSM Agent και βλέπω αυτό:

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

Δεν περίμενα αυτό το μήνυμα σφάλματος σχετικά με την κατάσταση του δίσκου. Και θέλω να ελέγξω τη χρήση του δίσκου. Τώρα, βλέπω αυτό:

[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

Ωχ! Φαίνεται ότι αυτό το μήνυμα σφάλματος δεν αφορά τη χρήση του δίσκου, αλλά πρέπει να βεβαιωθώ. Τώρα, ήρθε η ώρα να ελέγξω τα 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

Τώρα που μπόρεσα να επιβεβαιώσω ότι δεν είναι ούτε τα inodes, έκανα περαιτέρω έρευνα και βρήκα ότι υπάρχουν γνωστές αναφορές σφαλμάτων για αυτό ακριβώς το ζήτημα, όπου οι ενέργειες systemctl "start", "stop" και "reload" εμφανίζουν σφάλμα "No space left on device", αλλά οι ενέργειες "enable", "disable" και "kill" όχι. Στα bugs, αναφέρεται ότι αυτό το σφάλμα προκύπτει ως αποτέλεσμα του ορίου inotify "max_user_watches". Το inotify έχει ένα όριο στον αριθμό των αρχείων και καταλόγων που μπορεί να παρακολουθεί για αλλαγές. Για να εξαφανίσεις το σφάλμα, πρέπει να αυξήσεις την τιμή του "/proc/sys/fs/inotify/max_user_watches" για να επιτρέψεις την προσθήκη και παρακολούθηση περισσότερων αρχείων και καταλόγων για αλλαγές.

Για να αλλάξεις την τιμή σε πραγματικό χρόνο, μπορείς να τρέξεις:

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

Για να φορτώνεται μόνιμα αυτή η αυξημένη τιμή μετά από επανεκκίνηση ή ενέργεια stop/start:

Πρόσθεσε τη γραμμή "fs.inotify.max_user_watches=1048576" στο /etc/sysctl.conf Μπορείς να ελέγξεις τη διαμόρφωση sysctl με την εντολή sysctl -p.

Αναφορές:
https://bugzilla.redhat.com/show_bug.cgi?id=894483
https://bugzilla.redhat.com/show_bug.cgi?id=1452933

Συμπέρασμα