我正在尝试对通过sysfs虚拟文件系统公开的Linux系统运行时参数进行较大的更改。
维护这些参数以使它们在RHEL / CentOS风格的系统上重新启动后仍然有效的最有效方法是什么?
这仅仅是将命令转储到/etc/rc.local中的一种情况吗?是否有一个适合此的初始化脚本?我还从配置管理的角度考虑标准化。是否有一个等效的干净sysfs sysctl
?
我正在尝试对通过sysfs虚拟文件系统公开的Linux系统运行时参数进行较大的更改。
维护这些参数以使它们在RHEL / CentOS风格的系统上重新启动后仍然有效的最有效方法是什么?
这仅仅是将命令转储到/etc/rc.local中的一种情况吗?是否有一个适合此的初始化脚本?我还从配置管理的角度考虑标准化。是否有一个等效的干净sysfs sysctl
?
Answers:
如果是我,我可能会创建一个/etc/sysfs.conf
和一个/etc/init.d/sysfsutils
初始化脚本。然后,我可以将所有与sysfs相关的配置和选项与其他所有内容分开。使用初始化脚本,可以使用标准惯用语来管理和处理该脚本,以通过SysV初始化脚本(包括service sysfsutils [start|stop|reload|restart|status]
RHEL / CentOS(需要一些额外的工作))来管理服务和配置。
即使我不担心/etc/init.d/sysfsutils
脚本,我仍然会将选项放入其中/etc/sysfs.conf
,然后从单独的脚本(/etc/rc.local
作为最后/惰性选项)调用/处理该文件的内容。
注意:Debian和基于Debian的发行版(Ubuntu等)已经做到了这一点,并/etc/sysfs.conf
随其sysfsutils软件包一起提供了一个配置文件和初始化脚本。从Debian / Ubuntu盒(或sysfsutils的Debian源码包)中获取这两个文件可能是开始自己复制它的好方法。
/usr/local
或进行操作/opt
。我可能会为少数机器(所有重要部分都已备份)碰碰机会。对于大量的盒,我重复上述的设置,但下/usr/local
,与来自符号链接/etc/
和/etc/init.d
分别。和/或我可能会构建一个RPM来进行文件安装/分发。
您还可以根据要设置的内容尝试udev规则。例如,在我的系统上,我将SSD设置为deadline
通过/etc/udev/rules.d/60-ssd-scheduler.rules
包含以下内容来使用调度程序:
# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
您应该能够通过ATTR机制匹配任何sysfs属性。
尝试sysfsutils
包装。特别是/etc/sysfs.conf
应该对此有所帮助。
/etc/sysfsutils.conf
并且应用该脚本的脚本也不是上游软件包的一部分(如Christopher的回答所述)。它仅在某些发行版中存在,例如在Arch Linux中不存在。我将systemd配置为寻找,rc.local
并在Arch桌面上使用了它。
对于Fedora / RHEL / CentOS-配置sysfs并使其在重新启动后仍然存在的默认方法是使用tuned。调整的是一般的系统调整基础结构。对于sysfs参数,[sysfs]
在配置文件中创建一个节,并为每个要设置的变量提供一行,并在重新引导后保持不变。
就像Lennart Poettering 指出的那样 -systemd具有本机功能,可以通过在其中删除一个代码段来提供sysfs设置/etc/tmpfiles.d/
tuned
很难谷歌搜索(失去了常见的英语单词的噪音,在谈论sysfs设置时也经常使用),但是快速搜索确实找到了与此相关的页面: docs.fedoraproject.org/en-US/Fedora / 20 / html /…。