Linux内核模块管理

Linux内核模块管理 vim

目录: centos

内核模块路径 模块化

查看已加载的内核 网站

加载与卸载内核模块 centos7

修改内核参数 spa

Linux内核采用的是模块化技术,这样的设计使得系统内核能够保持最小化,同时确保了内核的可扩展性与可维护性,模块化设计容许咱们在须要时才将模块加载至内核,实现动态内核调整。本文重点关注方法与思路,具体实现能够参考kernel-doc文档。 设计

2.9.1 内核模块存放位置 code

Linux内核模块文件的命名方式一般为<模块名称.ko>,CentOS 6.3系统的内核模块被集中存放在/lib/modules/`uname -r`/[1]目录下(uname -r得到的信息为当前内核的版本号)。下面经过几个实例说明对内核模块的基本操做。 blog

2.9.2 查看已加载内核模块 进程

lsmod命令用来显示当前Linux内核模块状态,不是使用任何参数会显示当前已经加载的全部内核模块。输出的三列信息分别为模块名称、占用内存大小、是否在被使用,若是第三列为0则该模块能够随时卸载,非0则没法执行modprobe删除模块。

 
  1. [root@centos6 ~]# lsmod 
  2. Module                  Size  Used by 
  3. bridge                 79950   0 
  4. stp                     2173   1 bridge 
  5. llc                     5642    2 bridge,stp 
  6. fuse                   66891   2 
  7. autofs4                27212    3 
  8. sunrpc                263516   1 
  9. ipt_REJECT              2351    2 
  10. nf_conntrack_ipv4       9506     2 
  11. nf_defrag_ipv4          1483     1 nf_conntrack_ipv4 
  12. iptable_filter           2793    1 
  13. ip_tables              17831    1 iptable_filter 
  14. (部分输出省略) 

2.9.3 加载与卸载内核模块

modprobe命令能够动态加载与卸载内核模块:

 
  1. [root@centos6 ~]# modprobe ip_vs     #动态加载ip_vs模块 
  2. [root@centos7 ~]# lsmod |grep ip_vs  #查看模块是否加载成功 
  3. [root@centos7 ~]# modprobe -r ip_vs  #动态卸载ip_vs模块 

modinfo命令能够查看内核模块信息:

 
  1. [root@centos7 ~]# modinfo ip_vs 
  2. filename:       /lib/modules/2.6.32-279.el6.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko 
  3. license:        GPL 
  4. srcversion:     01386EABC060B63920E181B 
  5. depends:        ipv6,libcrc32c 
  6. vermagic:       2.6.32-279.el6.x86_64 SMP mod_unload modversions 

经过上述modprobe方式加载的内核模块仅在当前有效,计算机重启后并不会再次加载该模块,若是但愿系统开机自动挂载内核模块则须要将modprobe命令写入/etc/rc.sysinit文件中:

 
  1. [root@centos7 ~]# echo “modprobe ip_vs” >> /etc/rc.sysinit 

当内核模块再也不须要时能够经过将/etc/rc.sysinit文件中的对应modprobe命令删除,但须要重启计算机才生效。此时,能够经过modprobe -r命令来马上删除内核模块:

 
  1. [root@centos6 ~]# modprobe -r ip_vs 

2.9.4 修改内核参数

1.       临时调整内核参数

Linux内核参数随着系统的启动会被写入内存中,咱们能够直接修改/proc目录下的大量文件来调整内核参数,而且这种调整是马上生效的,下面咱们来看几个实例。

开启内核路由转发功能(经过01设置开关)

 
  1. [root@centos6 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward 

开启内核路由转发功能:

 
  1. [root@centos6 ~]# echo "1" > echo "1" >t /proc/sys/net/ipv4/icmp_echo_ignore_all 

调整全部进程总共能够打开的文件数量(当大量的用户访问网站资源时可能会因该数字太小而致使错误):

 
  1. [root@centos6 ~]# echo "108248" >/proc/sys/fs/file-max 

2.       永久调整内核参数

能够经过man proc能够得到大量关于内核参数的描述信息。但以上经过直接修改/proc相关文件的方式在系统重启后将再也不有效,若是但愿设置参数并永久生效能够修改/etc/sysctl.conf文件,文件格式为选项=值,咱们经过vim修改该文件将前面3个案例参数设置为永久有效:

 
  1. [root@centos6 ~]# vim /etc/sysctl.conf 
  2. net.ipv4.ip_forward = 1 
  3. net.ipv4.icmp_echo_ignore_all = 1 
  4. fs.file-max = 108248 

注意,经过sysctl.conf文件修改的内核参数不会马上生效,修改完成后使用sysctl -p命令可使这些设置马上生效。

相关文章
相关标签/搜索