我正在尝试对通过sysfs虚拟文件系统公开的Linux系统运行时参数进行大的更改 。
维护这些参数的最有效方法是什么,以便在RHEL / CentOS风格的系统上重启时保持这些参数?
这只是将命令转储到/etc/rc.local的情况吗? 是否有一个非常适合于此的初始化脚本? 我也从configurationpipe理的angular度考虑标准化。 是否有一个干净的sysfs相当于sysctl ?
如果是我,我可能会创build一个/etc/sysfs.conf和一个/etc/init.d/sysfsutils初始化脚本。 然后,我可以保持我所有的sysfs相关的configuration和选项与其他的东西分开。 使用init脚本,可以使用标准的习惯用法来pipe理和处理它,通过SysV init脚本(包括在RHEL / CentOS上的service sysfsutils [start|stop|reload|restart|status]来pipe理服务和configuration(稍加额外的工作) )。
即使我不打扰/etc/init.d/sysfsutils脚本,我仍然把选项放到/etc/sysfs.conf ,然后从一个单独的脚本( /etc/rc.local调用/处理该文件的内容/etc/rc.local ,作为最后/懒惰选项)。
注意:Debian和基于Debian的发行版(Ubuntu等)已经这样做了,并且发布了一个/etc/sysfs.confconfiguration文件和init脚本以及它们的sysfsutils包。 从Debian / Ubuntu中抓取这两个文件(或Debian源码包中的sysfsutils)可能是一个很好的开始复制它的方法。
你也可以尝试udev规则,取决于你想要设置。 例如,在我的系统上,我通过/etc/udev/rules.d/60-ssd-scheduler.rules将我的SSD设置为使用deadline调度程序, /etc/udev/rules.d/60-ssd-scheduler.rules包含:
# set deadline scheduler for non-rotating disks ACTION=="add|change", KERNEL=="sd[az]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
您应该能够通过ATTR机制匹配任何sysfs属性 。
尝试sysfsutils包。 特别是,/ /etc/sysfs.conf应该有帮助。
对于Fedora / RHEL / CentOS – configurationsysfs的默认方法是在重启之后保持不变。 调谐是一个通用的系统调谐基础设施。 对于sysfs参数,请在您的configuration文件中创build一个[sysfs]节,并为每个想要设置的variables提供一行,并在重新启动后保留。
正如Lennart Poettering所指出的那样 – systemd具有通过在/etc/tmpfiles.d/中/etc/tmpfiles.d/代码片段来提供sysfs设置的本地function