指定linux内核命令 linux指定内核启动( 十 )


和NAT相关的系统变量
/proc/slabinfo:内核缓存使用情况统计信息(Kernel slab allocator statistics)
/proc/sys/net/ipv4/ip_conntrack_max:系统支持的最大ipv4连接数,默认65536(事实上这也是理论最大值)
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established 已建立的tcp连接的超时时间,默认432000,也就是5天
和NAT相关的状态值
/proc/net/ip_conntrack:当前的前被跟踪的连接状况,nat翻译表就在这里体现(对于一个网关为主要功能的Linux主机,里面大部分信息是NAT翻译表)
/proc/sys/net/ipv4/ip_local_port_range:本地开放端口范围,这个范围同样会间接限制NAT表规模
# 1. 查看当前系统支持的最大连接数
cat /proc/sys/net/ipv4/ip_conntrack_max
# 值:默认65536,同时这个值和你的内存大小有关,如果内存128M,这个值最大8192,1G以上内存这个值都是默认65536
# 影响:这个值决定了你作为NAT网关的工作能力上限,所有局域网内通过这台网关对外的连接都将占用一个连接 , 如果这个值太低,将会影响吞吐量
# 2. 查看tcp连接超时时间
cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
# 值:默认432000(秒),也就是5天
# 影响:这个值过大将导致一些可能已经不用的连接常驻于内存中,占用大量链接资源 , 从而可能导致NAT ip_conntrack: table full的问题
# 建议:对于NAT负载相对本机的 NAT表大小很紧张的时候 , 可能需要考虑缩小这个值,以尽早清除连接,保证有可用的连接资源;如果不紧张,不必修改
# 3. 查看NAT表使用情况(判断NAT表资源是否紧张)
# 执行下面的命令可以查看你的网关中NAT表情况
cat /proc/net/ip_conntrack
# 4. 查看本地开放端口的范围
cat /proc/sys/net/ipv4/ip_local_port_range
# 返回两个值 , 最小值和最大值
# 下面的命令帮你明确一下NAT表的规模
wc -l /proc/net/ip_conntrack
#或者
grep ip_conntrack /proc/slabinfo | grep -v expect | awk '{print $1 ',' $2;}'
# 下面的命令帮你明确可用的NAT表项,如果这个值比较大,那就说明NAT表资源不紧张
grep ip_conntrack /proc/slabinfo | grep -v expect | awk '{print $1 ',' $3;}'
# 下面的命令帮你统计NAT表中占用端口最多的几个ip,很有可能这些家伙再做一些bt的事情,嗯bt的事情:-)
cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10
# 上面这个命令有点瑕疵cut -d' ' -f10会因为命令输出有些行缺项而造成统计偏差 , 下面给出一个正确的写法:
cat /proc/net/ip_conntrack | perl -pe s/^\(.*?\)src/src/g | cut -d ' ' -f1 | cut -d '=' -f2 | sort | uniq -c | sort -nr | head -n 10
linux操作系统中 , 加载和删除内核模块的命令是什么?modprobe命令\x0d\x0aLinux命令:modprobe。\x0d\x0a功能说明:自动处理可载入模块 。\x0d\x0a语法:modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值] 。\x0d\x0a补充说明:modprobe可载入指定的个别模块指定linux内核命令,或是载入一组相依的模块 。modprobe会根据depmod所产生的相依关系指定linux内核命令,决定要载入哪些模块 。若在载入过程中发生错误指定linux内核命令,在modprobe会卸载整组的模块 。\x0d\x0a\x0d\x0a内容\x0d\x0a1、modprobe 命令是根据depmod -a的输出/lib/modules/version/modules.dep来加载全部的所需要模块 。\x0d\x0a2、删除模块的命令是:modprobe -r filename 。\x0d\x0a3、系统启动后指定linux内核命令,正常工作的模块都在/proc/modules文件中列出 。使用lsmod命令也可显示相同内容 。\x0d\x0a4、在内核中有一个“Automatic kernel module loading"功能被编译到了内核中 。当用户尝试打开某类型的文件时指定linux内核命令,内核会根据需要尝试加载相应的模块 。/etc/modules.conf或 /etc/modprobe.conf文件是一个自动处理内核模块的控制文件 。\x0d\x0amodprobe命令主要用于在Linux 2.6内核中加载和删除Linux内核模块 。通过此命令用户可以轻松地加载和删除Linux内核模块,同时使用此命令加载Linux内核模块时,Linux内核会自动解决内核模块之间的依赖关系,将相互依赖的模块自动加载,如下所示:\x0d\x0a1) 加载RAID1阵列级别模块:\x0d\x0a[root@rhel5 boot]# modprobe raid1 \x0d\x0a\x0d\x0a2) 显示已加载的RAID1阵列级别模块:\x0d\x0a[root@rhel5 boot]# lsmod |grep raid1raid1251530 \x0d\x0a\x0d\x0a3) 删除RAID1阵列级别模块:\x0d\x0a[root@rhel5 boot]# modprobe -r raid1 \x0d\x0a\x0d\x0a4) 显示RAID1阵列级别模块:\x0d\x0a[root@rhel5 boot]# lsmod |grep raid1 \x0d\x0a\x0d\x0amodprobe命令在加载模块时会自动解决依赖的模块 。当加载的模块需依赖另一个模块时,系统会自动将此模块加载 。而当用户使用insmod命令加载模块时,则不会自动解决相对应的依赖模块 。\x0d\x0amodprobe命令中的"-r"参数表示删除指定模块,"-c"参数表示显示/etc/modprobe.conf配置文件的参数,"-C"参数表示指定内核配置文件,"-f"表示覆盖,"-l"表示显示模块的绝对路径 。\x0d\x0a[root@rhel5 boot]# modprobe -l|grep raid/lib/modules/2.6.18-8.el5/kernel/drivers/md/raid0.ko/lib/modules/2.6.18-8.el5/kernel/drivers/md/raid456.ko/lib/modules/2.6.18-8.el5/kernel/drivers/md/raid1.ko/lib/modules/2.6.18-8.el5/kernel/drivers/md/raid10.ko/lib/modules/2.6.18-8.el5/kernel/drivers/scsi/megaraid.ko/lib/modules/2.6.18-8.el5/kernel/drivers/scsi/aacraid/aacraid.ko/lib/modules/2.6.18-8.el5/kernel/drivers/scsi/megaraid/megaraid_mbox.ko/lib/modules/2.6.18-8.el5/kernel/drivers/scsi/megaraid/megaraid_mm.ko/lib/modules/2.6.18-8.el5/kernel/drivers/scsi/megaraid/megaraid_sas.ko/lib/modules/2.6.18-8.el5/kernel/drivers/scsi/raid_class.ko \x0d\x0a\x0d\x0a以上命令表示显示系统中所有的编译模块,并过滤包含有raid字符串的模块 。

推荐阅读