问题
在修补后重新启动服务器之后,在引导期间可能会看到以下错误,并且在 /var/log/boot.log 中可以看到相同的错误:
Starting udev: udevd inotify_init failed: too many open files 启动udev:udevd inotify_init失败:打开的文件太多
由于 udev 无法启动,缺少网络和绑定接口(包括模块/驱动程序)。
之路 on it Road.com
解决方案
在 /etc/sysctl.conf 和 /etc/sysctl.d/99-install-oracle 中进行了更改,其中包含以下节以克服 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 被各种程序/应用程序和 udev 用于跟踪文件的变化,在这种情况下,观察者设置为 0,因此 udev 不能使用观察者来跟踪操作系统上的所有变化,并在太多打开的文件周围抛出错误。
随着系统重新启动,操作系统开始使用 fs.inotify 的新设置并导致 udev 出现整个问题。
要解决此问题,请按照以下概述的步骤操作:
- 从 /etc/sysctl.conf 和任何可能在 /etc/sysctl.d/ 文件夹中保留新值的文件恢复更改,下面的命令可用于轻松找到在 /etc 中应用更改的所有文件。
# grep -rnw /etc -e "fs.inotify" 2>/dev/null
- 要恢复更改,请打开 /etc/sysctl.conf 的 vi 编辑并注释新节:
#fs.inotify.max_queued_events = 0 #fs.inotify.max_user_instances = 0 #fs.inotify.max_user_watches = 0 #fs.dir-notify-enable = 0
- 保存文件并在重启后重启验证接口是否已启动以及 udev 是否启动没有任何问题。
默认情况下,在 CentOS/RHEL 6 上,fs.inotify 节设置为:
fs.inotify.max_queued_events = 16384 fs.inotify.max_user_instances = 128 fs.inotify.max_user_watches = 8192 fs.dir-notify-enable = 1
- 我们可以通过执行 sysctl 命令来检查 fs.inotify 的当前设置:
# sysctl -a | grep fs.inotify
日期:2020-09-17 00:14:12 来源:oir作者:oir