存储架构

Linux内核模块管理

微信扫一扫,分享到朋友圈

Linux内核模块管理
0



Linux

内核模块管理

目录:

内核模块路径

查看已加载的内核

加载与卸载内核模块

修改内核参数

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


2.9.1


内核模块存放位置

Linux内核模块文件的命名方式通常为,CentOS 6.3系统的内核模块被集中存放在/lib/modules/`uname -r`/

[1]

目录下(uname -r获得的信息为当前内核的版本号)。下面通过几个实例说明对内核模块的基本操作。


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目录下的大量文件来调整内核参数,并且这种调整是立刻生效的,下面我们来看几个实例。

开启内核路由转发功能
(通过0

1设置开关)


  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
命令

可以使这些设置立刻生效。

阅读原文...


丁丁历险

智能物流骨干网与物流智联网

上一篇

Tips: Node.js 在 Mac 下 npm 安装 express 失败

下一篇

您也可能喜欢

评论已经被关闭。

插入图片
Linux内核模块管理

长按储存图像,分享给朋友