如何修改内核参数及其意义、/proc虚拟文件系统、initrd的作用

一、列举常见的内核参数以及参数的意义
linux内核参数优化/etc/sysctl.conf

sysctl 命令设置内核参数
		-a		显示所有内核参数及值
		-w		修改内核选项,立即生效。
		-p		保存设置到文件,需重读文件生效。

如何修改内核参数及其意义、/proc虚拟文件系统、initrd的作用_第1张图片
#sysctl修改内核参数,自动在路径前面加/proc/sys,所以执行时需省略参数前 /proc/sys路径。
#net/ipv4/icmp_echo_ignore_all
#net.ipv4.icmp_echo_ignore_all 两种表示方法都可以。

配置文件:
Centos6:/etc/sysctl.conf
Centos7:/etc/sysctl.d/*.conf

常用内核参数:

#net.ipv4.icmp_echo_ignore_all=1			禁用ping
#net.ipv4.tcp_syn_retries = 1					内核放弃建立链接之前发送SYN包的数量。
#net.ipv4.tcp_synack_retries = 1				内核放弃建立链接之前发送SYN+ACK包的数量。
#net.ipv4.tcp_keepalive_time = 600				keepalived启用时TCP发送keepalived消息的频度,默认为2小时。
#net.ipv4.tcp_keepalive_probes = 3				TCP发送keepalive探测以确定该连接已经断开的次数。根据情况可以适当缩减此值。
#net.ipv4.tcp_keepalive_intvl =15				探测消息发送的频率,乘以tcp_keepalive_probes就得到从开始探测以来没有响应的的连接丢弃的时间。默认值为75秒。普通用户或web类服务应根据需求改小此值。
#net.ipv4.tcp_retries2 = 5						在通讯过程中(已激活的socket),数据包发送失败后,内核要重试发送多少次后才决定放弃连接。
#net.ipv4.tcp_fin_timeout = 2					保持在FIN-WAIT-2状态的时间,使系统可以处理更多的连接。该值为整数。
#net.ipv4.tcp_max_tw_buckets = 36000			系统同时保持TIME_WAIT套接字的最大数量,超过这个数值将被清楚并警告。默认值为1800000。控制TIME_WAIT套接字最大值,避免squid服务器被卡死。
#net.ipv4.tcp_tw_recycle = 1					开启TCP连接中TIME_WAIT socket的快速回收。默认值为0,表示关闭。
#net.ipv4.tcp_tw_reuse = 1						开启重用,允许将TIME_WAIT socket用于新的TCP连接。默认值为0,表示关闭。
#net.ipv4.tcp_max_orphans = 32768				表示系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过设置的数字,连接就会复位并输出警告信息。这个限制是为了防止简单的DOS攻击。数字不能太小。
#net.ipv4.tcp_syncookies = 1					开启SYN cookie,出现SYN等待列队溢出时启用cookie处理,防范少量SYN攻击。默认为0,表示关闭。
#net.ipv4.tcp_max_syn_backlog = 16384			表示SYN列队的长度,预设为1024,这里设置为16384,以允许更多的等待连接。
#net.ipv4.tcp_wmem = 8192 131072 16777216	TCP协议定义的每个socket链路发送窗口大小,单位字节,有三个值:min,default,max。
#net.ipv4.tcp_rmem = 32768 131072 16777216	TCP协议定义的每个socket链路接收窗口大小,单位字节,有三个值:min,default,max
#net.ipv4.tcp_mem = 786432 1048576 1572864	TCP协议栈所有链路内存占用的限制,单位pagesize(4k),包含3个配置:low,pressure,high一般根据系统内存数计算得到。整个系统TCP链路的内存消耗对用/proc/net/sockstat TCP:mem 值。
#net.ipv4.ip_local_port_range = 1024 65000  	指定外部连接的端口范围。默认值为32768 61000
#net.ipv4.netfilter.ip_conntrack_max=65536		允许的最大跟踪连接条目,指在内核内存中netfilter可以同时处理的连接数
#net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180	表示TCP已建立连接的超时时间。
#net.core.somaxconn = 16384						定义了系统中每一个端口最大的监听列队的长度,对于一个经常处理新连接的高负载web服务器来说,默认值128过小。
#net.core.netdev_max_backlog = 16384 			表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到列队数据包的最大数量。

二、如何通过/proc查看top中展示的进程状态

top命令查看系统状态(top本身也比较消耗资源)
如何修改内核参数及其意义、/proc虚拟文件系统、initrd的作用_第2张图片
由于top命令显示的数据及信息,是内核通过虚拟文件系统proc输出的。所以我们可以通过直接读取/proc/中的相关数据查询到。
如何修改内核参数及其意义、/proc虚拟文件系统、initrd的作用_第3张图片
使用cat命令可以查询相应信息(/proc虚拟文件系统,是内核输出的,当前正在生效的全部信息)

cat /proc/NUM     		NUM为正在运行的进程号
cat /proc/uptime		运行时间
cat /proc/meminfo    	查看内存使用情况
cat /proc/mounts		已挂载设备的情况	
cat /proc/swaps			swap分区信息

三、分别用while、for循环检测10.0.0.1/24网段存活的IP地址
如何修改内核参数及其意义、/proc虚拟文件系统、initrd的作用_第4张图片

四、initrd的作用

系统引导顺序:
post加电-----BIOS按照引导顺序找到可引导设备-----引导设备引导启动BootLoader-----BootLoader找到分区中内核并启动,于此同时也会加载initrd(下面会介绍initrd的用途)-----加载根文件系统-----启动init—识别系统运行级别-----运行系统初始化脚本-----根据系统运行级别启动和关闭各种服务----设置登录终端-----启动login。

kerner与initrd文件路径都在 /boot/下。
根文件系统数据可能在不同的硬件上,不同种类的分区上,采用各种不同的文件系统。所以将识别这些文件系统所需的模块就压缩到initrd文件中。在加载内核时也加载initrd文件,保证内核能正确识别文件系统所在分区并挂载。
不同主机里面的initrd文件并非是必须的,内容也各有差别。视安装系统的硬件环境不同,自动生成的。
如果文件系统所在分区,可以被内核正确识别。那么没有initrd文件。系统也可以顺利完成启动。

你可能感兴趣的:(linux基础知识梳理)