Linux内核参数
Linux内核参数配置可以帮助管理员更精细地调节系统性能、安全性和行为。以下是一些主要参数的详细配置示例和解释。
引导参数(Boot Parameters)
这些参数在引导时通过引导加载器(如GRUB)传递给内核。
- root=/dev/sha1:
- 指定根文件系统的位置。
- 例如:GRUB_CMDLINE_LINUX=“root=/dev/sda1”
- init=/sbin/init:
- 指定初始进程。
- 例如:GRUB_CMDLINE_LINUX=“init=/sbin/init”
- Quiet:
- 减少引导时的消息输出。
- 例如:GRUB_CMDLINE_LINUX=“quiet”
- ro和rw:
- 指定根文件系统只读(ro)或读写(rw)。
- 例如:GRUB_CMDLINE_LINUX=“ro”
- mem=2G:
- 限制内存使用。
- 例如:GRUB_CMDLINE_LINUX=“mem=2G”
内存管理(Memory Management)
通过/proc文件系统或sysctl命令配置。
- swappiness:
- 控制交换分区的使用频率。值越高,系统越倾向于使用交换分区。
- 例如:echo 10 > /proc/sys/vm/swappiness或sysctl -w vm.swappiness=10
- dirty_ratio:
- 指定系统内存中的脏数据(尚未写入磁盘的数据)的最大百分比。
- 例如:echo 15 > /proc/sys/vm/dirty_ratio或sysctl -w vm.dirty_ratio=15
- overcommit_memory:
- 配置内存过度提交的行为。0:启发式;1:允许;2:严格检查。
- 例如:echo 2 > /proc/sys/vm/overcommit_memory或sysctl -w overcommit_memory=2
网络参数(Networking)
通过sysctl配置,影响网络堆栈的行为。
- ip_forward:
- 启用或禁用IP转发。
- 例如:echo 1 > /proc/sys/net/ipv4/ip_forward或sysctl -w net.ipv4.ip_forward=1
- tcp_fin_timeout:
- 指定TCP连接在收到FIN报文后保持的时间。
- 例如:echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout或sysctl -w net.ipv4.tcp_fin_timeout=30
- tcp_tw_reuse:
- 允许TIME-WAIT套接字的重用。
- 例如:echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse或sysctl -w net.ipv4.tcp_tw_reuse=1
文件系统参数(File System)
影响文件系统的操作和性能。
- file-max:
- 系统可以打开的最大文件数:
- 例如:echo 100000 > /proc/sys/fs/file-max或sysctl -w fs.file-max=100000
- Inotify.max_user_watches:
- 单个用户可以创建的最大inotify监视器数。
- 例如:echo 8192 > /proc/sys/fs/inotify/max_user_watches或sysctl -w fs.inotify.max_user_watches=8192
进程管理(Process Management)
影响进程调度和管理。
- Threads-max:
- 系统中允许的最大线程数。
- 例如:echo 64000 > /proc/sys/kernel/threads-max或sysctl -w kernel.threads-max=64000
- Pid_max:
- 系统中进程ID的最大值。
- 例如 echo 32768 > /proc/sys/kernel/pid_max或sysctl -w kernel.pid_max=32768
- sched_child_runs_first:
- 子进程是否在父进程之前运行。
- 例如:echo 1 > /proc/sys/kernel/sched_child_runs_first或sysctl -w kernel.sched_child_runs_first=1
安全参数(Security)
影响系统的安全性配置
- randomize_va_space:
- 地址空间布局随机化(ASLR)设置。0:关闭;1:部分启用;2:完全启用。
- 例如:echo 2 > /proc/sys/kernel/randomize_va_space 或sysctl -w kernel.randomize_va_space=2
- Sysrq:
- 启用或禁用系统请求(SysRq)健。
- 例如:echo 1 > /proc/sys/kernel/sysrq或sysctl -w kernel.sysrq=1
调优和调试(Tuning and Debugging)
用于系统调优和调试。
- Printk:
- 控制内核消息的日志级别。
- 例如:echo “4 4 1 7” > /proc/sys/kernel/printk或sysctl -w kernel.printk=“4 4 1 7”
- Panic:
- 系统在内核恐慌后重启的延迟时间。
- 例如:echo 10 > /proc/sys/kernel/panic或sysctl -w kernel.panic=10
永久生效配置
要使参数永久生效,可以将它们添加到/etc/sysctl.conf文件中,例如:
# /etc/sysctl.conf
vm.swappiness=10
vm.dirty_ratio=15
vm.overcommit_memory=2
net.ipv4.ip_forward=1
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_tw_reuse=1
fs.file-max=100000
fs.inotify.max_user_watches=8192
kernel.threads-max=64000
kernel.pid_max=32768
kernel.sched_child_runs_first=1
kernel.randomize_va_sapce=2
kernel.sysrq=1
kernel.printk="4 4 1 7"
kernel.panic=10
然后使用sysctl -p命令应用这些更改:
sysctl -p
这会加载/etc/sysctl.conf文件中的所有配置,并应用到当前系统。