linux -- sysctl详解1

一、简介

1、什么是内核参数(kernel parameters at runtime)

内核参数是可在系统运行时调整的可调整参数。不需要重启或重新编译内核就可以使更改生效。可以通过以下方法处理内核参数:

  • sysctl 命令
  • 挂载于 /proc/sys/ 目录的虚拟文件系统
  • /etc/sysctl.d/ 目录中的配置文件
  • /etc/sysctl.conf 文件等
    Tunables 被内核子系统划分为不同的类,Red Hat Enterprise Linux 有以下可调整类:
可调整类(Tunable class)子系统 (Subsystem)
abi执行域和个人
crypto加密接口
debug内核调试接口
fs全局和特定文件系统的 tunables
kernel全局内核 tunables
net网络 tunables
sunrpcSun 远程过程调用 (NFS)
user用户命名空间限制
vm调整和管理内存、缓冲和缓存

1、sysctl涉及的系统配置文件

/run/sysctl.d/*.conf
/etc/sysctl.d/*.conf
/usr/local/lib/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
/lib/sysctl.d/*.conf
/etc/sysctl.conf
/proc/sys

2、sysctl -a 会打印出所有的配置

3、 sysctl --system 会打印出如下配置文件中的配置项

/run/sysctl.d/*.conf
/etc/sysctl.d/*.conf
/usr/local/lib/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
/lib/sysctl.d/*.conf
/etc/sysctl.conf
[root@yyzc-zjjcs04 ~]# sysctl --system
* Applying /usr/lib/sysctl.d/00-system.conf ...
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
* Applying /usr/lib/sysctl.d/50-default.conf ...
kernel.sysrq = 16
kernel.core_uses_pid = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.all.promote_secondaries = 1
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /usr/lib/sysctl.d/60-libvirtd.conf ...
fs.aio-max-nr = 1048576
* Applying /etc/sysctl.d/99-sysctl.conf ...
kernel.sem = 1350 32000 300 1024
* Applying /etc/sysctl.conf ...
kernel.sem = 1350 32000 300 1024
[root@yyzc-zjjcs04 ~]#

二、如何修改内核参数

1、临时修改内核参数1

sysctl <TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>

root@k8s-master:~# sysctl  net.ipv4.tcp_syn_retries=3
net.ipv4.tcp_syn_retries = 3
root@k8s-master:~# sysctl  net.ipv4.tcp_syn_retries
net.ipv4.tcp_syn_retries = 3
root@k8s-master:~# cat /proc/sys/net/ipv4/tcp_syn_retries
3
root@k8s-master:~#

注意: 值与等号之间无空格,否则会失败

root@k8s-master:~# sysctl  net.ipv4.tcp_syn_retries= 3
sysctl: setting key "net.ipv4.tcp_syn_retries": Invalid argument
sysctl: cannot stat /proc/sys/3: No such file or directory
root@k8s-master:~#

上面的示例命令在系统运行时更改了参数值。更改将立即生效,无需重新启动。但是在系统重启后,所在的改变会返回到默认状态。

以下方式也是临时更改,重启后失效

 sysctl -w <TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE> 

上述命令还会更改/proc/sys 目录中对应类的文件中的值,示例如下

root@k8s-master:/proc/sys/net/ipv4# cat tcp_syn_retries
4
root@k8s-master:/proc/sys/net/ipv4# sysctl net.ipv4.tcp_syn_retries
net.ipv4.tcp_syn_retries = 4
root@k8s-master:/proc/sys/net/ipv4# sysctl -w  net.ipv4.tcp_syn_retries=5
net.ipv4.tcp_syn_retries = 5
root@k8s-master:/proc/sys/net/ipv4# sysctl net.ipv4.tcp_syn_retries
net.ipv4.tcp_syn_retries = 5
root@k8s-master:/proc/sys/net/ipv4# cat tcp_syn_retries
5
root@k8s-master:/proc/sys/net/ipv4#

2、临时修改内核参数2

echo <TARGET_VALUE> > /proc/sys/<TUNABLE_CLASS>/<PARAMETER>

为内核参数分配一个目标值,但是这些更改将在系统重启后消失。

root@k8s-master:/proc/sys/net/ipv4# sysctl  net.ipv4.tcp_syn_retries
net.ipv4.tcp_syn_retries = 6
root@k8s-master:/proc/sys/net/ipv4# cat tcp_syn_retries
6
root@k8s-master:/proc/sys/net/ipv4# echo 3 >tcp_syn_retries
root@k8s-master:/proc/sys/net/ipv4# cat tcp_syn_retries
3
root@k8s-master:/proc/sys/net/ipv4# sysctl  net.ipv4.tcp_syn_retries
net.ipv4.tcp_syn_retries = 3
root@k8s-master:/proc/sys/net/ipv4#

3、永久修改内核参数方法1

 sysctl -w <TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE> >> /etc/sysctl.conf

示例命令会更改内核参数,并将其写入 /etc/sysctl.conf 文件,该文件会覆盖内核参数的默认值。更改会立即并永久生效,无需重启。

上述命令还会更改/proc/sys 目录中对应类的文件中的值

4、永久修改内核参数方法2

在 /etc/sysctl.d/ 中创建一个新配置文件或者直接在 /etc/sysctl.conf文件中修改;

vim /etc/sysctl.d/<some_file.conf>

在文件中配置内核参数,一行一个。

<TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>
<TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>

保存配置文件。重启机器以使更改生效。或者,要在不重启的情况下应用更改,请输入:

sysctl -p /etc/sysctl.d/<some_file.conf>
root@k8s-master:/proc/sys/net/ipv4# sysctl  -p /etc/sysctl.conf
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 6
root@k8s-master:/proc/sys/net/ipv4

该命令允许您从之前创建的配置文件中读取值,并将这些值加载到内核中去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值