您的位置:首页 > 运维架构 > Linux

2.9 内核模块

2014-08-22 16:55 85 查看
2.9 内核模块
Linux采用的是模块化技术,这样的设计使得系统内核可以保持最小化,同时确保了内核的可扩展性与可维护性,模块化设计允许我们在需要时才将模块加载至内核,实现动态内核的调整。

2.9.1 内核模块存放位置
Linux内核模块文件的命名方式通常为<模块名称.ko>,Centos 6.3系统的内核模块被集中存放在/lib/modules/`uname -r`/(/lib/modules/2.6.32-279.el6.x86_64)目录下。

2.9.2 查看已加载内核模块
lsmod命令用来显示当前Linux内核模块状态,不使用任何参数会显示当前已经加载的所有的内核模块。输出的三列信息分别为模块名称、占用内存大小、是否在被使用,如果第三列为0,则该模块可以随时卸载,非0则无法执行modprobe删除模块。
[root@instructor ~]# lsmod
Module                  Size  Used by
lp                      9338  0
nfsd                  305863  13
lockd                  74270  1   nfsd
nfs_acl                  2647  1   nfsd
auth_rpcgss             44895  1   nfsd
sunrpc                263516  17  nfsd,lockd,nfs_acl,auth_rpcgss

2.9.3 加载与卸载内核模块
modprobe命令可以动态加载与卸载内核模块:
[root@instructor ~]# modprobe ip_vs	    	   动态加载ip_vs模块
[root@instructor ~]# lsmod |grep ip_vs	    	查看模块是否加载成功
ip_vs             115490  0
libcrc32c            1246  1 ip_vs
ipv6              322541  123 ip_vs,cnic,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
[root@instructor ~]# modprobe -r ip_vs	    	动态卸载ip_vs模块
modinfo命令可以查看内核模块信息:
[root@instructor ~]# modinfo ip_vs
filename:       /lib/modules/2.6.32-279.el6.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko
license:        GPL
srcversion:     01386EABC060B63920E181B
depends:        ipv6,libcrc32c
vermagic:       2.6.32-279.el6.x86_64 SMP mod_unload modversions
通过上述modprobe方式加载的内核模块仅在当前有效,计算机重启后并不会再次加载该模块,如果希望系统开机自动挂载内核模块,则需要将modprobe命令写入/etc/rc.sysinit文件中,或者通过修改/etc/modprobe.d/目录下的相关配置文件实现:
[root@instructor ~]# echo "modprobe ip_vs" >> /etc/rc.sysinit
当内核模块不再需要时,可以通过将/etc/rc.sysinit文件中的对应的modprobe命令删除,但需要重启计算机才生效。此时,可以通过modprobe -r命令立即删除内核模块。

2.9.4 修改内核参数
1. 临时调整内核参数
Linux内核参数随着系统的启动会被写入到内存中,可以直接修改/proc目录下的大量文件来调整内核参数,并且这种调整是立刻生效的。
开启内核路由转发功能(通过0或1设置开关):
[root@instructor proc]# echo "1" > /proc/sys/net/ipv4/ip_forward
禁止所有的icmp回包(禁止其它主机ping本机)功能:
[root@instructor proc]# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
调整所有的进程可以打开文件总数量(当大量的用户访问网站资源时,可能会因该数字过小 而导致错误):
[root@instructor proc]# echo "108248" > /proc/sys/fs/file-max

2. 永久调整内核参数
通过man proc可以获得大量关于内核参数的描述信息。设置参数永久生效,可以修改/etc/sysctl.conf文件,文件格式为“选项=值”。
[root@instructor ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.icmp_echo_ignore_all = 1
fs.file-max = 108248
注意,通过sysctl.conf文件修改的内核参数不会立刻生效,修改完成后,使用sysctl -p命令可以使这些设置立刻生效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息