如何持久和非持久地更改内核运行时参数?
简介
内核运行时参数是控制系统上Linux内核行为的设置。这些参数可以影响各种系统功能,例如内存分配、网络性能和CPU调度。
了解如何更改这些参数对于优化系统性能和解决可能出现的问题至关重要。更改内核运行时参数主要有两种方法:非持久性更改和持久性更改。
非持久性更改会暂时修改内核的行为,仅持续到您重新启动系统为止。另一方面,持久性更改会永久修改内核的行为,并在重新启动后仍然存在。
以非持久方式更改内核运行时参数
非持久性更改的定义及其工作方式
对内核运行时参数进行非持久性更改是暂时的更改,这意味着它们在系统重新启动后不会保留。可以使用sysctl或echo等命令行工具进行这些更改。系统重新启动后,对内核运行时参数所做的更改将丢失,系统将恢复为其默认设置。
非持久性更改的一个主要优点是,它们允许快速测试不同的配置,而无需对系统进行任何永久性更改。这种灵活性也有其缺点,因为它需要管理员不断关注,以确保在每次重新启动或服务重新启动后都重新应用任何所需的非持久性更改。
使用命令行工具进行非持久性更改的分步指南
以下步骤详细说明了如何使用命令行工具以非持久方式更改内核运行时参数:
确定要修改哪些内核参数。
打开终端并输入“sysctl -a”或“cat /proc/sys/[参数名称]”(不含引号)以查看所有sysctl变量或单个参数的当前值。
sysctl –a
或者
cat /proc/sys/[parameter_name]
确定要更改的值,然后使用“echo [值] > /proc/sys/[参数名称]”(不含引号)或“sysctl -w [参数名称]=[值]”(不含引号),然后使用“sysctl -p”(应用所有挂起的设置)。
echo [value] > /proc/sys/[parameter_name]
或者
sysctl -w [parameter_name]=[value] sysctl -p
验证新值是否生效:再次使用“cat /proc/sys/[参数名称]”或尝试使用新设置运行应用程序。
可以以非持久方式更改的常用内核运行时参数示例
以下是可以使用上述过程以非持久方式更改的内核运行时参数的一些示例:
net.ipv4.tcp_syncookies - 设置为0以禁用SYN Cookie,SYN Cookie用于防止某些类型的拒绝服务攻击。
vm.swappiness - 控制内核更倾向于交换非活动进程还是回收内存中基于文件的页面的程度。
net.ipv4.ip_forward - 设置为1以启用充当路由器的节点上的IP转发。
kernel.sem - 调整System V IPC信号量、消息队列和共享内存段的最大值。
fs.file-max - 设置系统范围内可用的文件句柄的最大数量。
通过以非持久方式更改这些参数,管理员可以在永久提交任何更改之前试验不同的配置并确定最适合其系统的配置。
以持久方式更改内核运行时参数
持久性更改的定义及其与非持久性更改的不同之处
对内核运行时参数进行持久性更改意味着即使在系统重新启动后,更改也会保留。这些更改保存在配置文件中,以便在系统初始化时自动加载。这与非持久性更改不同,非持久性更改只会暂时修改内核设置,并在系统重新启动时恢复为其原始值。
持久性更改有助于对内核设置进行长期修改,这些修改需要在多次重新启动之间保持一致。此外,可以通过配置文件进行持久性更改,这对于在多个系统上自动化配置非常有用。
使用配置文件进行持久性更改的分步指南
要使用配置文件进行持久性更改,您需要修改要更改的参数的相应配置文件。通常,这些配置文件位于/etc/sysctl.d/目录中。以下是操作步骤:
打开终端窗口,通过键入“sudo su”切换到root用户。
通过键入“cd /etc/sysctl.d/”导航到/etc/sysctl.d/目录。
使用您喜欢的文本编辑器(例如nano)在这个目录中创建一个以“.conf”结尾的新文件,键入“nano filename.conf”。
将所需的内核运行时参数及其对应值添加到此文件中(每行一个参数-值对)。
例如:
net.ipv4.tcp_fin_timeout=30 vm.swappiness=10
按CTRL+X,然后按Y,再按ENTER保存并关闭文件。
使用命令“sysctl --system”刷新sysctl设置。执行这些步骤后,您的持久内核运行时参数更改将保存到配置文件中,并在重新启动后仍然存在。
可以以持久方式更改的常用内核运行时参数示例
许多内核运行时参数可以通过配置文件以持久方式更改。以下是一些常见的示例:
net.ipv4.tcp_fin_timeout - 此参数控制连接在关闭后处于TIME_WAIT状态的时间。默认值通常为60秒,但可以将其减少以加快连接关闭速度。
vm.swappiness - 此参数控制内核在RAM和交换空间之间交换内存页面的积极程度。较低的值(例如10)会导致较少的交换和更多地使用物理内存,而较高的值(例如60)会导致更多地交换和更少地使用物理内存。
fs.file-max - 此参数设置系统在任何给定时间可以存在的打开文件的最大数量。对于文件I/O需求高的系统,增加此值可能会有所帮助。
总的来说,使用配置文件以持久方式更改内核运行时参数对于希望对其系统行为进行长期修改的系统管理员来说是一项重要的技能。通过遵循这些步骤,您可以确保您的配置在每次系统启动时自动加载,从而减少手动干预并节省时间。
更改内核运行时参数的最佳实践
更改内核运行时参数可能会对系统性能和稳定性产生重大影响。为了避免出现问题并确保更改有效,在进行更改时务必遵循最佳实践。本节将介绍一些关键的最佳实践。
在实施更改之前测试更改的重要性
在实施任何更改之前,务必在非生产环境中测试这些更改。这样可以识别在生产系统上推出更改之前出现的任何问题或冲突。测试应包括验证更改后系统是否按预期运行。
关于何时使用非持久性更改与持久性更改的讨论
选择是否进行非持久性或持久性内核运行时参数更改很大程度上取决于更改的预期范围及其潜在影响。非持久性更改非常适合不需要在系统重新启动之间维护的临时修改,而持久性更改更适合应在重新启动后仍然存在的长期修改。
结论
更改内核运行时参数可以成为优化系统性能和功能的强大工具。通过了解非持久性更改和持久性更改之间的区别,用户可以根据其特定需求做出明智的决策,选择哪种方法。
在本文中,我们介绍了使用命令行工具和配置文件进行非持久性和持久性更改的分步过程。我们还讨论了更改内核运行时参数的最佳实践,并提供了有关解决可能出现的问题的技巧。