Problém
Po restartování serveru po opravě – Níže uvedená chyba se může vyskytnout během bootování a stejná chyba je viditelná v /var/log/boot.log :
Starting udev: udevd inotify_init failed: too many open files
Kvůli tomu, že se udev nepodařilo spustit, chybí síťová a spojovací rozhraní (včetně modulů/ovladačů).
Řešení
V /etc/sysctl.conf došlo ke změně , /etc/sysctl.d/99-install-oracle který obsahuje níže stanzu k překonání některých problémů s Veritas Cluster:
fs.inotify.max_queued_events = 0 fs.inotify.max_user_instances = 0 fs.inotify.max_user_watches = 0 fs.dir-notify-enable = 0
fs.inotify je používán různými programy/aplikacemi a také udev ke sledování změn v souborech – v tomto případě jsou watchers nastaveny na 0, takže udev nemůže používat watchery ke sledování všech změn v OS a házet chybu kolem příliš mnoha otevřených souborů. Jak byl systém restartován – OS začal používat nová nastavení pro fs.inotify a způsobil celý problém s udev.
Chcete-li problém vyřešit, postupujte podle kroků uvedených níže:
1. Vraťte změny z /etc/sysctl.conf a jakéhokoli souboru, který by mohl mít stále novou hodnotu ve složce /etc/sysctl.d/, níže uvedený příkaz lze použít ke snadnému vyhledání všech souborů, u kterých byla v /etc použita změna.
# grep -rnw /etc -e "fs.inotify" 2>/dev/null
2. Chcete-li vrátit změny, otevřete vi edit pro /etc/sysctl.conf a okomentujte novou stanzu:
#fs.inotify.max_queued_events = 0 #fs.inotify.max_user_instances = 0 #fs.inotify.max_user_watches = 0 #fs.dir-notify-enable = 0
3. Uložte soubor a restartujte – po restartu ověřte, zda jsou rozhraní aktivní a zda se udev spouští bez problémů. Ve výchozím nastavení na CentOS/RHEL 6 jsou stanzy fs.inotify nastaveny na:
fs.inotify.max_queued_events = 16384 fs.inotify.max_user_instances = 128 fs.inotify.max_user_watches = 8192 fs.dir-notify-enable = 1
4. Aktuální nastavení pro fs.inotify můžete zkontrolovat spuštěním příkazu sysctl:
# sysctl -a | grep fs.inotify