问题

在修补后重新启动服务器之后,在引导期间可能会看到以下错误,并且在 /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 出现整个问题。

要解决此问题,请按照以下概述的步骤操作:

  1. 从 /etc/sysctl.conf 和任何可能在 /etc/sysctl.d/ 文件夹中保留新值的文件恢复更改,下面的命令可用于轻松找到在 /etc 中应用更改的所有文件。
# grep -rnw /etc -e "fs.inotify" 2>/dev/null
  1. 要恢复更改,请打开 /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
  1. 保存文件并在重启后重启验证接口是否已启动以及 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
  1. 我们可以通过执行 sysctl 命令来检查 fs.inotify 的当前设置:
# sysctl -a | grep fs.inotify
启动 udev: udevd inotify_init failed: too many open files
日期:2020-09-17 00:14:12 来源:oir作者:oir