Linux 如何以持久和非持久的方式更改内核运行参数
内核运行参数是控制系统上Linux内核行为的设置。这些参数可以影响系统功能的各个方面,例如内存分配、网络性能和CPU调度。
理解如何改变这些参数对于优化系统性能和解决可能出现的问题至关重要。有两种主要的改变内核运行参数的方式:非持久性改变和持久性改变。
非持久性改变临时修改内核行为,只在系统重启之前有效。相反,持久性改变永久修改内核行为,并在重启后保持生效。
以非持久性方式更改内核运行参数
非持久性的定义和工作原理
非持久性改变内核运行参数是指临时的改变,意味着它们在系统重启后不会被保留。可以使用命令行工具如sysctl或echo进行这些改变。一旦系统重启,对内核运行参数的修改将丢失,系统将恢复为默认设置。
非持久性改变的一个主要优点是它们允许快速测试不同的配置,而不对系统进行任何永久性改变。这种灵活性的缺点是,需要管理员持续关注,以确保在每次重启或服务重新启动后重新应用任何所需的非持久性改变。
使用命令行工具进行非持久性改变的逐步指南
以下步骤详细说明如何使用命令行工具以非持久性方式更改内核运行参数 –
- 确定要修改哪个内核参数。
-
打开终端,输入”sysctl -a”或”cat /proc/sys/[parameter_name]”(不包括引号)来查看所有sysctl变量的当前值或单个参数的值。
sysctl –a
或者
cat /proc/sys/[parameter_name]
- 确定要更改的值,并使用 “echo [value] > /proc/sys/[parameter_name]”(不含引号)或者 “sysctl -w [parameter_name]=[value]”(不含引号),然后使用 “sysctl -p”(应用所有待定设置)。
echo [value] > /proc/sys/[parameter_name]
或者
sysctl -w [parameter_name]=[value]
sysctl -p
- 验证您的新值是否生效:再次使用”cat /proc/sys/[参数名]”命令,或尝试使用新设置运行应用程序。
可以以非持久方式更改的常见内核运行时参数示例
下面是一些可以使用上述过程以非持久方式更改的内核运行时参数的示例:
- net.ipv4.tcp_syncookies – 将其设置为0以禁用SYN cookies,用于防范某些拒绝服务攻击。
-
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需求的系统有帮助。
总体而言,使用配置文件以持久方式更改内核运行时参数是系统管理员在长期修改系统行为时重要的技能。遵循这些步骤,您可以确保您的配置在每次系统启动时自动加载,减少手动干预并节省时间。
更改内核运行时参数的最佳实践
更改内核运行时参数可能会对系统性能和稳定性产生重大影响。为了避免问题并确保更改有效,重要的是在进行更改之前遵循最佳实践。本节将介绍一些关键的最佳实践。
在实施更改之前进行测试的重要性
在实施任何更改之前,重要的是在非生产环境中测试这些更改。这可以在将更改应用于生产系统之前识别任何问题或冲突。测试应包括在进行更改后验证系统的正常运行。
关于使用非持久性和持久性更改的讨论
选择是进行非持久性还是持久性内核运行时参数更改取决于更改的预期范围及其潜在影响。非持久性更改适用于不需要在系统重新启动之间保持的临时修改,而持久性更改更适合于应该在重新启动后持久存在的长期修改。
结论
更改内核运行时参数可以是优化系统性能和功能的强大工具。通过了解非持久性和持久性更改之间的区别,用户可以根据自己特定的需求做出明智的决策。重要的是要记住,在将这些参数进行更改之前,应对其进行彻底测试,并在生产系统上实施之前。
在本文中,我们详细介绍了使用命令行工具和配置文件进行非持久性和持久性更改的逐步过程。我们还讨论了更改内核运行时参数的最佳实践,并提供了解决潜在问题的提示。